Built motion from commit eb914a60.|2.6.14
authorsupport <support@xcally.com>
Wed, 3 Aug 2022 13:24:09 +0000 (13:24 +0000)
committersupport <support@xcally.com>
Wed, 3 Aug 2022 13:24:09 +0000 (13:24 +0000)
1273 files changed:
apidoc/api_project.js
apidoc/api_project.json
npm-shrinkwrap.json
package.json
public/app/forgot/i18n/pt-BR.json
public/app/login/i18n/is.json
public/app/login/i18n/pt-BR.json
public/app/main/apps/analytics/i18n/pt-BR.json
public/app/main/apps/callysquare/i18n/pt-BR.json
public/app/main/apps/chat/i18n/pt-BR.json
public/app/main/apps/contactmanager/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/pt-BR.json
public/app/main/apps/fax/i18n/pt-BR.json
public/app/main/apps/help/i18n/pt-BR.json
public/app/main/apps/integrations/i18n/is.json
public/app/main/apps/integrations/i18n/pt-BR.json
public/app/main/apps/jscripty/i18n/is.json
public/app/main/apps/jscripty/i18n/pt-BR.json
public/app/main/apps/mail/i18n/is.json
public/app/main/apps/mail/i18n/pt-BR.json
public/app/main/apps/motiondialer/i18n/is.json
public/app/main/apps/motiondialer/i18n/pt-BR.json
public/app/main/apps/openchannel/i18n/is.json
public/app/main/apps/openchannel/i18n/pt-BR.json
public/app/main/apps/settings/i18n/is.json
public/app/main/apps/settings/i18n/pt-BR.json
public/app/main/apps/sms/i18n/is.json
public/app/main/apps/sms/i18n/pt-BR.json
public/app/main/apps/staff/i18n/bs.json
public/app/main/apps/staff/i18n/is.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/tools/i18n/is.json
public/app/main/apps/tools/i18n/pt-BR.json
public/app/main/apps/voice/i18n/is.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/quick-panel/i18n/pt-BR.json
public/app/reset/i18n/pt-BR.json
public/app/toolbar/i18n/ar.json
public/app/toolbar/i18n/bs.json
public/app/toolbar/i18n/cs.json
public/app/toolbar/i18n/da.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/es.json
public/app/toolbar/i18n/et.json
public/app/toolbar/i18n/fa.json
public/app/toolbar/i18n/fi.json
public/app/toolbar/i18n/fr.json
public/app/toolbar/i18n/he.json
public/app/toolbar/i18n/hi.json
public/app/toolbar/i18n/hu.json
public/app/toolbar/i18n/id.json
public/app/toolbar/i18n/is.json
public/app/toolbar/i18n/ja.json
public/app/toolbar/i18n/ko.json
public/app/toolbar/i18n/lt.json
public/app/toolbar/i18n/lv.json
public/app/toolbar/i18n/nl.json
public/app/toolbar/i18n/no.json
public/app/toolbar/i18n/pl.json
public/app/toolbar/i18n/pt-BR.json
public/app/toolbar/i18n/pt-PT.json
public/app/toolbar/i18n/ru.json
public/app/toolbar/i18n/sv.json
public/app/toolbar/i18n/tr.json
public/app/toolbar/i18n/zh-CN.json
public/app/toolbar/i18n/zh-TW.json
public/index.html
public/scripts/app.41cc58a1.js [moved from public/scripts/app.ed3116c7.js with 52% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js
server/errors/index.js
server/migrations/2.6.12.js
server/migrations/2.6.13.js [new file with mode: 0644]
server/migrations/2.6.14.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/index.js
server/services/ami/dialer/models/action.js
server/services/ami/dialer/models/agentComplete.js
server/services/ami/dialer/models/final.js
server/services/ami/dialer/models/hangup.js
server/services/ami/dialer/models/history.js
server/services/ami/dialer/models/queueCallerAbandon.js
server/services/ami/dialer/utils/hopper.js
server/services/ami/dialer/utils/index.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/voiceQueueSummary.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/realtime/utils.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperAdditionalPhone.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/interval.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/iftime.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js
server/utils/update-app-config.js

index b2ff39b..169016b 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.12",
+  "version": "2.6.14",
   "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-07-29T07:38:26.653Z",
+    "time": "2022-08-03T13:15:39.448Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 009b5f1..ee10b4c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.12",
+  "version": "2.6.14",
   "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-07-29T07:38:26.653Z",
+    "time": "2022-08-03T13:15:39.448Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 224f778..65f6f96 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.11",
+  "version": "2.6.14",
   "dependencies": {
     "@swc/helpers": {
       "version": "0.3.17",
index 14ecdfd..e0b9613 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.12",
+  "version": "2.6.14",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -37,7 +37,7 @@
   "license": "EULA",
   "scripts": {
     "start": "NODE_PATH=./legacy-libs nodemon server/app.js",
-    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**'] }).join('\\n')\"`",
+    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**', './legacy-libs/**'] }).join('\\n')\"`",
     "eslint:check": "eslint .",
     "eslint:fix": "eslint --fix .",
     "prettier:check": "prettier --check './**/*'",
index f024ec7..036ec11 100644 (file)
@@ -2,10 +2,10 @@
   "FORGOTPASSWORD": {
     "TITLE": "Recupere sua senha",
     "EMAIL_ADRESS": "Endereço de e-mail",
-    "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!",
+    "SEND_RESET_LINK": "ENVIAR LINK PARA RESET",
+    "GO_BACK": "Voltar ao login",
+    "LINK_SENT": "Link Enviado",
+    "LINNK_SENT_MESSAGE": "Um e-mail contendo um link para reset de sua senha foi enviado para o seu endereço!",
     "PASSWORD_RESET_ERROR": "Erro ao resetar a senha",
     "ERRORS": {
       "EMAIL_REQUIRED": "Campo obrigatório",
index 261b193..83c91ce 100644 (file)
@@ -1,6 +1,6 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Símanúmr",
+    "TELEPHONES": "Símanúmer",
     "SELECT": "Velja",
     "CANCEL": "Hætta við",
     "TITLE": "Skráðu þig inn",
index d9f974d..59c6c41 100644 (file)
@@ -21,6 +21,6 @@
       "PASSWORD_REQUIRED": "Campo obrigatório",
       "USERNAME_REQUIRED": "Campo obrigatório"
     },
-    "WITH_AD": "Faça login com o Active Directory"
+    "WITH_AD": "Login com o Active Directory"
   }
 }
index 90c2dff..c7f2215 100644 (file)
     "STATUS": "Status",
     "OUTPUT": "Saída",
     "REPORTS": "Relatórios",
-    "SEARCH_FOR_FOLDER": "Procurar por Pasta",
+    "SEARCH_FOR_FOLDER": "Procurar por pasta",
     "CREATED_AT": "Criado em",
     "NEW_REPORT": "Novo Relatório",
     "ADD_REPORT": "Adicionar Relatório",
     "COPY_REPORT": "Copiar Relatório",
     "PREVIEW_REPORT": "Pré-visualizar Relatório",
     "RUN_REPORT": "Executar Relatório",
-    "DOWNLOAD_JSON_REPORT": "Exportar Relatório JSON",
+    "DOWNLOAD_JSON_REPORT": "Exportar Relatório em JSON",
     "EDIT_REPORT": "Editar Relatório",
     "DELETE_REPORT": "Excluir Relatório",
     "CREATE": "Criar Pasta",
@@ -53,9 +53,9 @@
     "ERROR": "Erro",
     "QUERY_ERROR": "Erro de Consulta",
     "MESSAGE": "Mensagem",
-    "CLOSE": "Fechar",
+    "CLOSE": "Encerrar",
     "FORMAT": "Formato",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "FIELDS": "Campos",
     "CONDITION": "Condição",
@@ -65,7 +65,7 @@
     "VALUE": "Valor",
     "PREVIEW": "Pré-visualizar",
     "LIMITED_RESULT": "*Resultados limitados",
-    "NO_DATA": "Nenhum resultado de dados",
+    "NO_DATA": "Nenhum resultado",
     "CONDITIONS": "Condições",
     "ALIAS": "Alias",
     "FUNCTION": "Função",
     "ADD_REPORTFIELD": "Adicionar Campo",
     "EDIT_REPORTFIELD": "Editar Campo",
     "DELETE_REPORTFIELD": "Excluir Campo",
-    "METRIC_NAME": "Nome Métrica",
-    "NO_METRIC_FOUND": "Nenhuma Métrica Encontrada",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "METRIC_NAME": "Nome da Métrica",
+    "NO_METRIC_FOUND": "Nenhuma métrica encontrada",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "CUSTOM_METRIC": "Métrica Personalizada",
     "DELETE_EXTRACTEDREPORT": "Excluir Relatório Extraído",
     "EDIT_EXTRACTEDREPORT": "Editar Relatório Extraído",
     "DOWNLOAD_EXTRACTEDREPORT": "Download do Relatório Extraído",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "WEB_REPORT": "Relatório Web"
   }
index 1cb4fc1..04b4890 100644 (file)
@@ -8,7 +8,7 @@
     "AGENTS": "Agentes",
     "AGI": "AGI",
     "ALL_USERS": "Todos Usuários",
-    "ANSWER": "Responda",
+    "ANSWER": "Atender",
     "APIKEY": "Chave API",
     "APPID": "ID do Aplicativo",
     "APPLICATION": "Aplicação",
     "ATTACHMENT_PATH": "Caminho do Anexo",
     "ATTACHMENT_TYPE": "Tipo de Anexo",
     "AUDIO": "Áudio",
-    "AUDIOENCODING": "Codificação de Áudio",
+    "AUDIOENCODING": "Codificação do Áudio",
     "AWSLEX": "Amazon Lex",
     "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "ID Chave de Acesso",
-    "AWS_BOT_NAME": "Nome Bot",
+    "AWS_ACCESS_KEY_ID": "ID da Chave de Acesso",
+    "AWS_BOT_NAME": "Nome do Bot",
     "AWS_LEX_REGION": "Região",
     "AWS_POLLY_REGION": "Região",
     "AWS_POLLY_VOICE": "Voz",
     "AWS_SECRET_ACCESS_KEY": "Senha da Chave de Acesso",
     "AWS_TEXT_TYPE": "Tipo de texto",
     "BACK": "Voltar",
-    "BCC": "BCC",
+    "BCC": "CCO",
     "BEEP": "Beep",
-    "BODY": "Body",
+    "BODY": "Corpo",
     "CALLBACK": "Callback",
     "CALLBACK_PRIORITY": "Prioridade",
     "CALLYSQUARE": "Cally Square",
     "CC": "CC",
     "CHOOSE_ATTACHMENT": "Escolha o Anexo",
-    "CLOSE": "Fechar",
+    "CLOSE": "Encerrar",
     "COMMAND": "Comando",
-    "COMPUTEDVARIABLES": "Caminho do script de variáveis computadas",
+    "COMPUTEDVARIABLES": "Caminho do Script de Variáveis Computadas",
     "CONDITION": "Condição",
     "CONTEXT": "Contexto",
     "COPY": "Copiar",
     "DATABASE": "Database",
     "DELAY": "delay [min]",
     "DELETE": "Excluir",
-    "DELETE_ODBC": "Deletar ODBC",
-    "DELETE_PROJECT": "Deletar Projeto",
-    "DELETE_SQUARERECORDING": "Excluir Gravação Cally Square",
+    "DELETE_ODBC": "Excluir ODBC",
+    "DELETE_PROJECT": "Excluir Projeto",
+    "DELETE_SQUARERECORDING": "Excluir Gravação do Cally Square",
     "DESCRIPTION": "Descrição",
     "DIAL": "Discar",
-    "DIALOGFLOW": "Fluxo de diálogo",
+    "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Idioma",
     "DIGIT": "Max Dígitos",
     "DIGITS": "Dígitos",
-    "DOWNLOAD_SQUARERECORDING": "Download Gravação Cally Square",
-    "DROP_TO_UPLOAD": "SOLTAR AQUI PARA CARREGAR",
+    "DOWNLOAD_SQUARERECORDING": "Download de Gravação do Cally Square",
+    "DROP_TO_UPLOAD": "SOLTE AQUI 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_SQUARERECORDING": "Editar Gravação Cally Square",
+    "EDIT_SQUARERECORDING": "Editar Gravação do Cally Square",
     "EDIT_XML": "Editar XML",
     "END": "Fim",
     "ERRORS": {
     "EXTEN": "Exten",
     "EXTENSION": "Extensão",
     "EXT_DIAL": "Discagem Externa",
-    "FILE": "Nome do arquivo",
+    "FILE": "Nome do Arquivo",
     "FILENAME": "Nome do Arquivo",
     "FILE_ID": "Áudio",
     "FINALLY": "Finalmente",
     "FINDBY": "Encontrar por",
-    "GETDIGITS": "Obter dígitos",
+    "GETDIGITS": "Obter Dígitos",
     "GETSECRETDIGITS": "Obter Dígitos Secretos",
-    "GOAL": "Objetivo",
-    "GOALNAME": "Nome do Objetivo",
+    "GOAL": "Qualificar",
+    "GOALNAME": "Nome da Qualificação",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Idioma",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GO_TO_PROJECTS": "Ir para projetos",
     "GRAMMAR": "Gramática",
     "HANGUP": "Desligar",
-    "HEADERS": "Cabeçalhos",
+    "HEADERS": "Headers",
     "HELP": {
       "BCC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "CC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "MAX_TEXT_TTS": "O número máximo de caracteres suportados é 200",
       "TO": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Número de Dígitos Ocultos",
-    "HIDDENDIGITSPOS": "Posição dos Dígitos Ocultos",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
     "ID": "Id",
     "IMPORT": "Importar",
     "IMPORT_XML": "Importar XML",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
-    "MAILBOX": "Caixa de Correio",
+    "MAILBOX": "Caixa de Entrada",
     "MATH": "Math",
     "MAXDIGIT": "Dígitos Máximos",
     "MENU": "Menu",
     "NEW_PROJECT": "Novo Projeto",
     "NEW_VARIABLE": "Nova Variável",
     "NOOP": "NoOp",
-    "NOTES": "Anotações",
+    "NOTES": "Observações",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NUMBER": "Número",
     "ODBC": "ODBC",
     "QUEUE": "Fila",
     "QUEUE_ID": "ID da Fila",
     "RAWBODY": "Corpo",
-    "RAWHEADERS": "Cabeçalhos",
+    "RAWHEADERS": "Headers",
     "RECORD": "Gravação",
     "RECORDINGFORMAT": "Formato de Gravação",
-    "RESPONSE": "Tempo Limite de Resposta",
+    "RESPONSE": "Timeout de Resposta",
     "RESTAPI": "API Rest",
     "RETRY": "Repetições",
     "ROWSPERPAGE": "Linhas por página",
     "SAVE": "Salvar",
     "SAYDIGITS": "Falar Dígitos",
-    "SAYNUMBER": "Falar Numero",
-    "SAYPHONETIC": "Say Phonetics",
+    "SAYNUMBER": "Falar número",
+    "SAYPHONETIC": "Falar Phonetics",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SELECTED": "Selecionado",
     "SELECTED_USERS": "Usuários Selecionados",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
     "SET": "Set",
-    "SIP_ID": "ID SIP",
-    "SMS_ACCOUNT_ID": "ID da CONTA SMS",
+    "SIP_ID": "SIP",
+    "SMS_ACCOUNT_ID": "Conta",
     "SMS_TEXT": "Texto",
     "SPEED": "Velocidade",
     "SQUARERECORDINGS": "Gravações",
     "SYSTEM": "Sistema",
     "TELEPHONES": "Telefones",
     "TEMPLATE_ID": "Modelo",
-    "TEST_ODBC": "Teste ODBC",
+    "TEST_ODBC": "Teste de ODBC",
     "TEXT": "Texto",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
     "TO": "Para",
     "TRUNK_NAME": "Nome do Tronco",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
+    "UNIQUEID": "ID Único",
     "UNPAUSE": "Fim da Pausa",
     "UPDATE_DESCRIPTION": "Atualizar Descrição",
-    "UPDATE_INFO": "Update Info",
+    "UPDATE_INFO": "Atualizar Info",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Nome de Usuário",
     "VOICEMAIL": "Correio de Voz",
     "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "Email do Cliente",
-    "DIALOGFLOWV2": "Fluxo de diálogo V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
     "DIALOGFLOWV2_LANGUAGE": "Idioma",
     "DIALOGFLOWV2_PROJECT_ID": "ID do Projeto",
     "PRIVATE_KEY": "Chave Privada",
index b3e621c..8058385 100644 (file)
@@ -2,31 +2,31 @@
   "CHAT": {
     "EDIT_AMAZONLEX": "Editar Amazon Lex",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
+    "ACCESSKEYID": "ID da Chave de Acesso",
+    "SECRETACCESSKEY": "Senha de Chave de Acesso",
     "LEXREGION": "Região",
     "BOTNAME": "Nome do Bot",
     "LOGIN_TIME": "Tempo de login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Ativar notificações entregues / lidas pelo cliente",
+    "ENABLECUSTOMERCHECKMARKS": "Habilitar notificações de entregue/lida para o cliente",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência de Fila",
     "AGENTTRANSFER": "Trasferir de Agente",
-    "AGENTTRANSFERTIMEOUT": "Timeout de transferência do agente",
-    "SYSTEMAVATAR": "Avatar do sistema",
-    "SYSTEMALIAS": "Apelido do sistema",
-    "WELCOMEMESSAGE": "Mensagem de boas-vindas",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência do Agente",
+    "SYSTEMAVATAR": "Avatar do Sistema",
+    "SYSTEMALIAS": "Apelido do Sistema",
+    "WELCOMEMESSAGE": "Mensagem de Boas-Vindas",
     "LANGUAGE": "Idioma",
     "EDIT_DIALOGFLOW": "Editar Dialogflow",
     "DIALOGFLOW": "Dialogflow",
     "BACKGROUNDCOLOR": "Cor de Fundo",
-    "MESSAGEFONTSIZE": "Tamanho da fonte da mensagem",
+    "MESSAGEFONTSIZE": "Tamanho da Fonte da Mensagem",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
     "CUSTOMERALIAS": "Apelido \200b\200bdo Cliente",
-    "SNIPPETSWIPEOUT": "Snippet deslize para fora",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
     "CUSTOMERAVATAR": "Avatar do Cliente",
     "SHOWCUSTOMERAVATAR": "Mostrar avatar do cliente",
     "DEFAULTTITLE": "Título Padrão",
     "ALIGNMENT": "Alinhamento",
     "VERTICALALIGNMENT": "Alinhamento vertical",
     "BOTTOM_RIGHT": "Canto inferior direito",
-    "RIGHT": "Direta",
+    "RIGHT": "Direito",
     "LEFT": "Esquerda",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "AGENTIDENTIFIER": "Identificador",
-    "WEBSITEALIAS": "Nome do site",
+    "WEBSITEALIAS": "Nome do WebSite",
     "AGENTALIAS": "Nome do Agente",
     "AGENTFULLNAME": "Nome Completo do Agente",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
-    "TEXTCOLOR": "Cor do texto",
+    "TEXTCOLOR": "Cor do Texto",
     "FONTSIZE": "Tamanho da Fonte",
     "WEBSCRIPT": "Web Script",
     "CANNEDANSWERS": "Respostas Pré-definidas",
     "CHATCANNEDANSWERS": "Respostas Pré-definidas",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_CHATCANNEDANSWER": "Novo modelo de resposta",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Não há Respostas Pré-definidas disponíveis",
+    "NEW_CHATCANNEDANSWER": "Nova Resposta Pré-definida",
     "ADD_CHATCANNEDANSWER": "Adicionar Resposta Pré-definida",
     "EDIT_CHATCANNEDANSWER": "Editar",
     "DELETE_CHATCANNEDANSWER": "Excluir",
     "OFFLINEMESSAGEBODY": "Corpo da mensagem",
     "FORMSUBMITSUCCESSMESSAGE": "Mensagem de sucesso no envio de formulário",
     "FORMSUBMITFAILUREMESSAGE": "Mensagem de falha no envio de formulário",
-    "PLACEHOLDERMESSAGE": "Espaço reservado da mensagem",
-    "NOTETITLE": "Título da nota",
-    "CLOSINGQUESTION": "Pergunta de encerramento",
+    "PLACEHOLDERMESSAGE": "Mensagem de marcação de posição",
+    "NOTETITLE": "Título da Observação",
+    "CLOSINGQUESTION": "Pergunta de Encerramento",
     "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Mostrar avatar do agente pessoal",
+    "SHOWAGENTAVATAR": "Mostrar avatar pessoal do agente",
     "AGENTAVATAR": "Avatar do Agente",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_CHATQUEUE": "Ir para a Fila de Webchat em Tempo Real",
+    "SPYINTERACTION": "Espiar",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_CHATQUEUE": "Visualizar Fila do Chat em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Cronômetro",
+    "TIMER": "Timer",
     "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "AGENTSADD_QUEUE": "Adicionar Agente à Fila do Webchat",
+    "AGENTSADD_QUEUE": "Adicionar Agente à Fila do Chat",
     "QUEUES": "Filas",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
-    "READY": "Pronto",
+    "READY": "Disponível",
     "WAITING": "Esperando",
-    "WRITING": "Escrita",
-    "CHAT": "WebChat",
+    "WRITING": "Escrevendo",
+    "CHAT": "Chat",
     "MAIL": "Email",
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pausa",
-    "REALTIME": "Tempo real",
+    "REALTIME": "Tempo Real",
     "AGENTS": "Agentes",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
-    "PHONE_STATE": "Estado do telefone",
-    "PHONE_STATUS": "Status do telefone",
+    "PHONE_STATE": "Estado do Telefone",
+    "PHONE_STATUS": "Status do Telefone",
     "LOGOUT": "Sair",
-    "UNPAUSE": "Pausa final",
-    "AGENTADD_QUEUE": "Adicionar Agente à Fila Webchat",
+    "UNPAUSE": "Finalizar Pausa",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do Chat",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
     "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "AUTOREPLY": "Auto Resposta",
-    "NEW_CHATDISPOSITION": "Nova Qualificação Webchat",
-    "ENABLECUSTOMERATTACHMENT": "Ativar Anexos do Cliente",
-    "OFFLINE_CHAT_BUTTON": "Botão Chat off-line",
+    "NEW_CHATDISPOSITION": "Nova Qualificação do Chat",
+    "ENABLECUSTOMERATTACHMENT": "Habilitar Anexos do Cliente",
+    "OFFLINE_CHAT_BUTTON": "Botão de 'Chat Offline'",
     "OFFLINESTATUS": "Status Offline",
     "NAME": "Nome",
-    "CHATQUEUES": "Filas Webchat",
+    "CHATQUEUES": "Filas do Chat",
     "SEARCH_FOR_ANYONE": "Procurar",
     "STRATEGY": "Estratégia",
     "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "KEY": "Key",
+    "KEY": "Chave",
     "ALIAS": "Alias",
     "VARIABLE": "Variável",
     "INTERVAL": "Intervalo",
     "EDIT_CLOSE": "Editar Encerramento",
     "TIMEZONE": "Fuso horário",
-    "MESSAGE": "Messagem",
+    "MESSAGE": "Mensagem",
     "ADVANCED": "Avançado",
     "FORWARDTRANSCRIPT": "Encaminhar Transcrição",
     "FORWARDTRANSCRIPTMESSAGE": "Mensagem de Encaminhar Transcrição",
-    "SKIPMESSAGEBUTTON": "Ignorar botão de mensagem",
+    "SKIPMESSAGEBUTTON": "Botão de Ignorar Mensagem",
     "EDIT_MESSAGE": "Editar Mensagem",
-    "CONDITION_AGREEMENT": "Condition Agreement",
+    "CONDITION_AGREEMENT": "Condições do Acordo",
     "NONE": "Nenhum",
     "PRIORITY": "Prioridade",
-    "ONLINESTATUS": "Status online",
-    "UNMANAGEDSTATUS": "Status não gerenciado",
+    "ONLINESTATUS": "Status Online",
+    "UNMANAGEDSTATUS": "Status Não Gerenciado",
     "AUTOCLOSE": "Ativar Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Ativar Mensagem não Gerenciada",
+    "ENABLEUNMANAGEDNOTE": "Habilitar Mensagem não Gerenciada",
     "UNMANAGEDMESSAGE": "Messagem",
-    "SKIPUNMANAGED": "Pular Mensagem",
-    "SENDUNMANAGED": "Enviar mensagem",
-    "WEBSITESCRIPT": "Website Script",
+    "SKIPUNMANAGED": "Ignorar Mensagem",
+    "SENDUNMANAGED": "Enviar Mensagem",
+    "WEBSITESCRIPT": "Script do WebSite",
     "DELETE_OFFLINEMESSAGE": "Excluir",
     "OFFLINEMESSAGES": "Mensagens Offline",
     "FORWARD_OFFLINE": "Encaminhar Offline",
     "SHOW_OFFLINEMESSAGE": "Mostrar",
     "FORWARD_OFFLINE_ADDRESS": "Endereço para Encaminhar Offline",
     "CLOSINGFORM": "Formulário de Encerramento",
-    "ENABLERATING": "Ativar Classificação",
+    "ENABLERATING": "Habilitar Classificação",
     "ENABLECUSTOMERWRITING": "Permitir que o cliente escreva antes que seja atribuído ao agente",
-    "ENABLEFEEDBACK": "Ativar Feedback",
+    "ENABLEFEEDBACK": "Habilitar Feedback",
     "RATINGTYPE": "Tipo de Avaliação",
     "CLOSINGMESSAGE": "Mensagem de Encerramento",
     "CLOSINGMESSAGEBUTTON": "Mensagem do Botão de Encerramento",
-    "RATINGSTARSNUMBER": "Número de estrelas de avaliação",
+    "RATINGSTARSNUMBER": "Número de Estrelas de Avaliação",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID da Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "VALUE": "Valor",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Campo Obrigatório",
-      "SECRETACCESSKEY_REQUIRED": "Campo Obrigatório",
-      "ACCESSKEYID_REQUIRED": "Campo Obrigatório",
+      "BOTNAME_REQUIRED": "Campo obrigatório",
+      "SECRETACCESSKEY_REQUIRED": "Campo obrigatório",
+      "ACCESSKEYID_REQUIRED": "Campo obrigatório",
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "CUSTOMERALIAS_REQUIRED": "Campo Obrigatório",
-      "AGENTALIAS_REQUIRED": "Campo Obrigatório",
-      "SYSTEMALIAS_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "CUSTOMERALIAS_REQUIRED": "Campo obrigatório",
+      "AGENTALIAS_REQUIRED": "Campo obrigatório",
+      "SYSTEMALIAS_REQUIRED": "Campo obrigatório",
       "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "MESSAGEFONTSIZE_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
-      "VERTICALPOSITION_REQUIRED": "Campo Obrigatório",
+      "MESSAGEFONTSIZE_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "VERTICALPOSITION_REQUIRED": "Campo obrigatório",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
       "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "FONTSIZE_REQUIRED": "Campo Obrigatório",
+      "FONTSIZE_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "VALUE_REQUIRED": "Campo Obrigatório",
       "CUSTOMERALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "CLOSINGQUESTION_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "HEADER_OFFLINE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "SENDUNMANAGED_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "SENDUNMANAGED_REQUIRED": "Campo obrigatório",
       "SENDUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SKIPUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "UNMANAGEDMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WEBSITEALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "EMAIL_MUST_BE_VALID": "Formato incorreto",
-      "ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ADDRESS_REQUIRED": "Campo obrigatório",
       "ADDRESS_MUST_VALID_URL": "Formato incorreto",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo obrigatório",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITINGMESSAGE_REQUIRED": "Campo Obrigatório",
-      "WAITINGTITLE_REQUIRED": "Campo Obrigatório",
+      "WAITINGMESSAGE_REQUIRED": "Campo obrigatório",
+      "WAITINGTITLE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
       "WAITINGMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WAITINGTITLE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "VIDAOOAPIKEY_REQUIRED": "Campo Obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório",
+      "VIDAOOAPIKEY_REQUIRED": "Campo obrigatório",
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "VIDAOOTOPIC_REQUIRED": "Campo obrigatório",
       "EMAIL_ACCOUNT_REQUIRED": "Campo obrigatório"
     },
-    "CM_FIELD": "Contact Manager Field",
+    "CM_FIELD": "Campo do Gestor de Contato",
     "CHATPROACTIVEACTIONS": "Ações Proativas",
-    "NEW_CHATPROACTIVEACTION": "Nova ação proativa",
+    "NEW_CHATPROACTIVEACTION": "Nova Ação Proativa",
     "EDIT_CHATPROACTIVEACTION": "Editar Ação Proativa",
     "DELETE_CHATPROACTIVEACTION": "Excluir Ação Proativa",
     "ADD_CHATPROACTIVEACTION": "Adicionar Ação Proativa",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Nenhuma ação proativa disponível",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Nenhuma Ação Proativa disponível",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Nenhuma mensagem off-line disponível",
     "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "TYPE": "Tipo",
     "SELECTOR": "Seletor",
     "AGENT": "Agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_GOTOIf": "Editar GotoIf",
     "EDIT_NOOP": "Editar Noop",
-    "ADD_CHATQUEUE": "Adicionar Fila WebChat",
-    "EDIT_CHATQUEUE": "Editar Fila WebChat",
-    "DELETE_CHATQUEUE": "Excluir Fila de WebChat",
+    "ADD_CHATQUEUE": "Adicionar à Fila de Chat",
+    "EDIT_CHATQUEUE": "Editar Fila do Chat",
+    "DELETE_CHATQUEUE": "Excluir Fila do Chat",
     "SETTINGS": "Configurações",
     "SAVE": "Salvar",
-    "SCRIPT": "Roteiro",
+    "SCRIPT": "Script",
     "TOKEN": "Token",
     "CREATED_AT": "Criado em",
-    "CHATWEBSITES": "Websites do Webchat",
-    "MOTIONADDRESS": "Domínio do site",
-    "MOTIONPROXY": "Domínio de Proxy ou Motion",
-    "ADD_CHATWEBSITE": "Adicionar Website do WebChat",
-    "EDIT_CHATWEBSITE": "Editar Website do Webchat",
-    "DELETE_CHATWEBSITE": "Excluir Website do Webchat",
+    "CHATWEBSITES": "Websites do Chat",
+    "MOTIONADDRESS": "Domínio do Website",
+    "MOTIONPROXY": "Proxy ou Domínio do Motion",
+    "ADD_CHATWEBSITE": "Adicionar Website do Chat",
+    "EDIT_CHATWEBSITE": "Editar Website do Chat",
+    "DELETE_CHATWEBSITE": "Excluir Website do Chat",
     "LIST": "Lista",
-    "SNIPPET": "Fragmento",
+    "SNIPPET": "Snippet",
     "FORMS": "Formulários",
     "UP": "Acima",
     "DOWN": "Baixo",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Ações proativas",
+    "COLLAPSE": "Recolher",
+    "PROACTIVEACTIONS": "Ações Proativas",
     "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "ANIMATION": "Animação",
     "DEFAULT": "Padrão",
     "WHITELABEL": "White Label",
-    "LOGO": "Logo",
+    "LOGO": "Logomarca",
     "DOWNLOADTRANSCRIPT": "Download Transcrição",
     "ENQUIRY_ENABLE": "Habilitar Consulta",
     "ENQUIRY_FORWARDING": "Encaminhamento de Consulta",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Cabeçalho Online",
     "ONLINE_MESSAGE": "Mensagem Online",
-    "NAME_TITLE": "Nome da etiqueta de entrada",
-    "USERNAME_PLACEHOLDER": "Local de entrada de nome de usuário",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Espaço reservado para entrada de e-mail",
-    "START_CHAT_BUTTON": "Botão 'Iniciar chat'",
+    "NAME_TITLE": "Nome do Campo de Entrada",
+    "USERNAME_PLACEHOLDER": "Marcação de posição do Nome do Usuário",
+    "EMAIL_TITLE": "Campo para inserir Email",
+    "EMAIL_PLACEHOLDER": "Marcação de posição do Email",
+    "START_CHAT_BUTTON": "Botão 'Iniciar Chat'",
     "AGENTS_BUSY": "Mensagem quando Agentes estão Ocupados",
     "HEADER_OFFLINE": "Cabeçalho Offline",
     "OFFLINE_MESSAGE": "Mensagem Offline",
-    "MESSAGE_TITLE": "Rótulo de Mensagem",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Espaço reservado para entrada de Mensagem de Consulta",
+    "MESSAGE_TITLE": "Título da Mensagem",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Marcação de posição na Consulta",
     "ENQUIRY_BUTTON": "Texto do Botão de Consulta",
     "RATING_MESSAGE": "Mensagem de Avaliação",
-    "RATING_SEND": "Texto do botão de envio de classificação",
-    "RATING_SKIP": "Texto do botão Ignorar classificação",
+    "RATING_SEND": "Texto do botão de Envio de Avaliação",
+    "RATING_SKIP": "Texto do botão de Ignorar Avaliação",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proativo",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Metodo",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Metodo",
-    "REJECTURL": "Rejeitar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
     "CLOSE": "Encerrar",
     "CLOSEMETHOD": "Método de Encerramento",
     "CLOSEURL": "URL de Encerramento",
     "EMBEDDING": "Incorporação",
     "GENERAL": "Geral",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "BACK": "Voltar",
     "HELP": {
       "VERTICALPOSITION": "Representa a distância em porcentagem do topo",
-      "AGENTIDENTIFIER": "Representa o identificador do agente dentro da sessão de Webchat",
+      "AGENTIDENTIFIER": "Representa o identificador do agente dentro da sessão de Chat",
       "HIDEWHENOFFLINE": "Ocultar a janela quando está Offline",
-      "KEY": "Nome abreviado do website (5 caracteres) exibido na guia Agente",
+      "KEY": "Nome abreviado do website (5 caracteres) exibido na aba de atendimento do Agente",
       "TOKEN": "Token gerado automaticamente usado no script",
       "INTEVAL": "A ser selecionado na lista de intervalos disponíveis",
       "TIMEZONE": "Selecione um da lista (padrão = fuso horário local)",
-      "ENABLERATING": "Ative se quiser que o ciente possa avaliar a interação ao encerrar",
+      "ENABLERATING": "Habilite se quiser que o ciente possa avaliar a interação ao encerrar",
       "ENABLEFEEDBACK": "Habilite se você quiser que o cliente possa enviar um feedback (até 150 caracteres) ao encerrar",
-      "FORWARDTRANSCRIPT": "Habilite se deseja que o cliente receba uma transcrição do webchat por e-mail",
-      "AUTOCLOSE": "Ative se quiser que as sessões de chat sejam encerradas como Não Gerenciadas, se nenhum agente estiver disponível.",
-      "ENABLEUNMANAGEDNOTE": "Ative se quiser que o cliente receba uma mensagem quando todos os agentes estiverem ocupados e o quando o webchat for Não Gerenciado",
-      "WEBSITEALIAS": "Um prefixo usado para compor o nome do agente (prefixo + ID do agente) mostrado ao visitante da web durante a sessão de bate-papo",
-      "ENABLECUSTOMERWRITING": "Habilite se você deseja que o Webchat inicie sem esperar atribuir a um agente disponível (atenção: se você ativar, seus webchats nunca serão Não Gerenciados).",
-      "MAPKEY": "O seguinte campo do Motion Contact Manager:",
-      "FROMKEY": "Será mapeado na sua janela do Webchat como:",
+      "FORWARDTRANSCRIPT": "Habilite se deseja que o cliente receba uma transcrição do chat por e-mail",
+      "AUTOCLOSE": "Habilite se quiser que as sessões de Chat sejam encerradas como Não Gerenciadas, se nenhum agente estiver disponível.",
+      "ENABLEUNMANAGEDNOTE": "Habilite se quiser que o cliente receba uma mensagem quando todos os agentes estiverem ocupados e o quando o Chat for Não Gerenciado",
+      "WEBSITEALIAS": "Um prefixo usado para compor o nome do agente (prefixo + ID do agente) mostrado ao cliente durante a sessão de chat",
+      "ENABLECUSTOMERWRITING": "Habilite se você deseja que o Chat inicie sem esperar atribuir a um agente disponível (atenção: se você ativar, seus chats nunca serão Não Gerenciados).",
+      "MAPKEY": "O seguinte campo da Gestão de Contatos:",
+      "FROMKEY": "Será mapeado na sua janela do Chat como:",
       "COPYSCRIPTTOCLIPBOARD": "Copie e cole este script no seu website",
       "FORWARD_OFFLINE": "Você pode adicionar vários endereços separados por vírgulas (por exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "MANDATORYDISPOSITIONPAUSEID": "Pausa para Qualificação obrigatória"
     },
     "ADDRESS": "Endereço",
-    "ONLINESTATE": "Status online",
+    "ONLINESTATE": "Status Online",
     "OFFLINESTATE": "Status Offline",
     "RATINGSTATE": "Status de Avaliação",
     "ENQUIRY": "Consulta",
     "OFFLINETEMPLATE": "Modelo Offline",
-    "CHATDISPOSITIONS": "Qualificações de Webchat",
-    "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma disposição de chat disponível",
-    "ADD_CHATDISPOSITION": "Adicionar Qualificação Webchat",
+    "CHATDISPOSITIONS": "Qualificações do Chat",
+    "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma Qualificação do Chat disponível",
+    "ADD_CHATDISPOSITION": "Adicionar Qualificação de Chat",
     "DELETE": "Excluir",
-    "EDIT_CHATDISPOSITION": "Editar Qualificação Webchat",
-    "DELETE_CHATDISPOSITION": "Excluir Qualificação Webchat",
+    "EDIT_CHATDISPOSITION": "Editar Qualificação do Chat",
+    "DELETE_CHATDISPOSITION": "Excluir Qualificação Chat",
     "ID": "Id",
-    "NEW_CHATQUEUE": "Nova fila de chat",
-    "NEW_CHATWEBSITE": "Novo site de chat",
-    "ROUNDED": "Rounded",
+    "NEW_CHATQUEUE": "Nova Fila do Chat",
+    "NEW_CHATWEBSITE": "Novo WebSite do Chat",
+    "ROUNDED": "Arredondado",
     "SQUARED": "Squared",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
-    "PAGE": "Pagina",
+    "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "of",
     "CONTACT": "Contato",
     "ACCOUNT": "Conta",
     "INTERACTION": "Interação",
     "INTERACTIONS": "Interações",
-    "WEBSITE": "Website",
+    "WEBSITE": "WebSite",
     "ALL": "Todos",
-    "SELECT_STATUS": "Selecione um status",
+    "SELECT_STATUS": "Selecione um Status",
     "FILTER": "Filtro",
     "FILTERS": "Filtros",
-    "TEAMADD_CHATQUEUE": "Adicionar equipe à fila de chat",
-    "AGENTADD_CHATQUEUE": "Adicionar Agente à Fila do Webchat",
+    "TEAMADD_CHATQUEUE": "Adicionar Equipe à Fila do Chat",
+    "AGENTADD_CHATQUEUE": "Adicionar Agente à Fila do Chat",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "CLOSEDAT": "Encerrado em",
     "DISPOSITION": "Qualificação",
     "CREATEDAT": "Criado em",
-    "NOTES": "Notas",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
-    "SELECTED_WEBSITE": "Selecione um site",
+    "SELECTED_WEBSITE": "Selecione um WebSite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "SELECT_WEBSITE": "Selecione um site",
+    "SELECT_WEBSITE": "Selecione um WebSite",
     "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Ir para mensagens off-line",
-    "WAITINGTITLE": "Esperando Título",
-    "WAITINGMESSAGE": "Mensagem de espera",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Ir para Mensagens Offline",
+    "WAITINGTITLE": "Título de Espera",
+    "WAITINGMESSAGE": "Mensagem de Espera",
     "RATING": "Avaliação",
-    "NO_RATINGVALUE": "Sem avaliação",
+    "NO_RATINGVALUE": "Sem Avaliação",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "VOICE": "Voz",
     "INTERACTIONS_CHATWEBSITE": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
     "DELETE_INTERACTION": "Excluir Interação",
-    "AGENTADD_CHATWEBSITE": "Adicionar Agente ao Website do Webchat",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "AGENTADD_CHATWEBSITE": "Adicionar Agente ao Website do Chat",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "MANDATORYDISPOSITION": "Qualificação obrigatória",
     "MANDATORYDISPOSITIONPAUSEID": "Pausa para Qualificação obrigatória",
-    "ENABLESENDBUTTON": "Ativar Botão Enviar",
+    "ENABLESENDBUTTON": "Habilitar Botão Enviar",
     "FEEDBACKTITLE": "Título do Feedback",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem",
     "VIDAOO": "Vidaoo",
-    "VIDAOOAPIKEY": "Vidaoo Api Key",
-    "VIDAOOESCALATION": "Iniciar videochamada",
-    "VIDAOOSESSION": "Iniciar videochamada",
+    "VIDAOOAPIKEY": "Chave API do Vidaoo",
+    "VIDAOOESCALATION": "Iniciar Vídeo Chamada",
+    "VIDAOOSESSION": "Iniciar Vídeo Chamada",
     "VIDEO": "Vídeo",
     "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "EMAIL_ACCOUNT": "Conta de e-mail",
-    "OPEN_NEW_INTERACTION": "Abra uma nova interação",
-    "SUBJECT": "Sujeito",
-    "ADD_NOTE": "Adicionar Nota",
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "EMAIL_ACCOUNT": "Conta de Email",
+    "OPEN_NEW_INTERACTION": "Abrir nova interação",
+    "SUBJECT": "Assunto",
+    "ADD_NOTE": "Adicionar Oberservação",
     "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definida foi encontrada",
     "NOTE": "Observação",
-    "VIDAOOMETADATA": "Vidaoo Metadata",
-    "VIDAOONOTE": "Vidaoo Note",
-    "VIDAOOTOPIC": "Tema Vidaoo",
+    "VIDAOOMETADATA": "Metadata do Vidaoo",
+    "VIDAOONOTE": "Observação do Vidaoo",
+    "VIDAOOTOPIC": "Tema do Vidaoo",
     "CHANNELID": "ID do Canal",
     "EDIT_TVOX": "Editar TVox",
-    "MOTIONTITLE": "Título de Movimento",
-    "MOTIONURL": "URL de movimento",
-    "MOTIONURLONANSWER": "URL de movimento na resposta",
-    "MOTIONURLONRING": "URL de movimento no anel",
-    "SERVICEID": "ID de serviço",
+    "MOTIONTITLE": "Título do Motion",
+    "MOTIONURL": "URL do Motion",
+    "MOTIONURLONANSWER": "URL do Motion no Atendimento",
+    "MOTIONURLONRING": "URL do Motion no Toque",
+    "SERVICEID": "ID de Serviço",
     "SERVICENAME": "Nome do Serviço",
     "TVOX": "TVox",
     "TVOXIP": "Endereço IP da TVox",
-    "TVOXLOGINURL": "URL REST de login da TVox",
+    "TVOXLOGINURL": "URL REST de Login da TVox",
     "TVOXPASSWD": "Senha TVox",
-    "TVOXSESSIONURL": "Url REST da sessão TVox",
-    "TVOXURL": "URL de TVox IP",
-    "TVOXUSERNAME": "Nome de usuário da TVox",
+    "TVOXSESSIONURL": "URL REST de Sessão da TVox",
+    "TVOXURL": "URL da TVox IP",
+    "TVOXUSERNAME": "Nome de Usuário da TVox",
     "LABELTEXT": "Texto da etiqueta",
-    "TEXT_BUTTON_COLOR": "Cor do botão de texto"
+    "TEXT_BUTTON_COLOR": "Cor do Botão de Texto"
   }
 }
index f16f522..87ce427 100644 (file)
@@ -2,12 +2,12 @@
   "CONTACTMANAGER": {
     "SELECT_TAG": "Selecione Tags",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "USERID": "Agent ID Agendamento",
+    "USERID": "ID do Agente no Agendamento",
     "PRIORITY": "Prioridade",
     "MOTIONDIALER": "Motion Bull",
     "IMPORT_CONTACTS": "Importar Contatos",
     "PREFIX": "Prefixo de Discagem",
-    "VOICEQUEUEID": "ID Fila de Voz",
+    "VOICEQUEUEID": "ID da Fila de Voz",
     "CAMPAIGNID": "ID Campanha",
     "STATE": "Estado",
     "NAME": "Nome",
@@ -15,7 +15,7 @@
     "UNIQUEID": "ID Único",
     "STATUS": "Status",
     "STARTTIME": "Início",
-    "ENDTIME": "Fim",
+    "ENDTIME": "Hora do Término",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Funil",
     "FINAL": "Finalização",
@@ -26,7 +26,7 @@
     "EDIT_HOPPER": "Editar Funil",
     "DELETE_LIST": "Excluir Lista",
     "DELETE_HOPPER": "Excluir Funil",
-    "RELOAD": "Reload",
+    "RELOAD": "Recarregar",
     "NO_COMPANIES": "Nenhuma Empresa",
     "NO_AVAILABLE_ITEMS": "Nenhum Item Disponível",
     "ADD": "Adicionar",
@@ -51,7 +51,7 @@
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Todos",
-    "SELECT_NONE": "Desselecionar",
+    "SELECT_NONE": "Selecione Nenhum",
     "COMPANIES": "Empresas",
     "EDIT_COMPANY": "Editar Empresa",
     "DELETE_COMPANY": "Excluir Empresa",
@@ -89,9 +89,9 @@
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "CUSTOMFIELDS": "Campos Personalizados",
-    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado Disponível",
+    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado disponível",
     "ADD_TAG": "Adicionar Tag",
-    "NO_TAG": "Sem Tags",
+    "NO_TAG": "Nenhuma Tags",
     "ALIAS": "Alias",
     "TYPE": "Tipo",
     "VALUE": "Valor",
     "NEW_COMPANY": "Nova Empresa",
     "NEW_CONTACT": "Novo Contato",
     "NEW_TAG": "Nova Tag",
-    "UPLOAD_CONTACTS": "Upload Contatos",
+    "UPLOAD_CONTACTS": "Upload de Contatos",
     "FINISH": "Terminar",
     "SUCCESS": "Sucesso",
     "FAILURE": "Falha",
     "ALL_CONTACTS": "Todos os Contatos",
     "NEW_CUSTOMFIELD": "Novo Campo Personalizado",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Voz Disponível",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Voz disponível",
     "ADD_VOICEDISPOSITION": "Adicionar Qualificação de Voz",
     "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
     "DELETE_VOICEDISPOSITION": "Excluir Qualificação de Voz",
     "EMAIL_DOMAIN": "Domínio de Email",
     "ADDRESS": "Endereço",
     "POSTAL_CODE": "CEP",
-    "SHIPMENTADDRESS": "Endereço de Envio",
+    "SHIPMENTADDRESS": "Endereço de Entrega",
     "COPY_CONTACT": "Copiar Contato",
     "GOTOCONTACTS_LIST": "Ir para Listas",
     "GOTOCONTACTS_COMPANY": "Ir para Empresas",
     "ADD_AGENT_TO_LIST": "Adicionar Agente à Lista",
     "AGENTADD_LIST": "Adicionar Agentes à Lista",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NONE": "Nenhum",
     "FULLNAME": "Nome Completo",
     "CHECK_DUPLICATES": "Verificar Duplicados",
     "DUPLICATES": "Duplicados",
     "UPLOAD_CSV": "Upload CSV",
     "TAG": "Tag",
-    "UPLOAD": "Envio",
+    "UPLOAD": "Upload",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "DATE_OF_BIRTH": "Data de Nascimento",
       "PHONEBAR_API": "Para habilitar click-to-call, insira o número do telefone e verifique se o controle remoto esta ativo."
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por ágina",
     "OF": "do",
     "SOCIAL": "Social",
     "ROW": "Linha",
     "FLATDISCOUNT": "Desconto da Empresa",
     "INVOICEARTICLE": "Law Articles",
     "ISOCODE": "Código ISO",
-    "PAYMENTMETHOD": "Forma de pagamento",
+    "PAYMENTMETHOD": "Forma de Pagamento",
     "PIVA": "Número de IVA",
     "RELATIONSHIP": "Relacionamento ...",
     "RELATIONSHIPCOMPANY": " ... com",
index 174650f..0661352 100644 (file)
@@ -1,59 +1,59 @@
 {
   "DASHBOARDS": {
     "DOWNLOAD": "Download",
-    "UNMANAGED_RATE": "Taxa não gerenciada",
-    "UNMANAGED_RATE_TEXT": "Taxa não gerenciada de interações",
-    "VOICE_WAITING": "ESPERANDO",
+    "UNMANAGED_RATE": "Taxa de Não Gerenciado",
+    "UNMANAGED_RATE_TEXT": "Taxa de Interações Não Gerenciadas",
+    "VOICE_WAITING": "AGUARDANDO",
     "VOICE_WAITING_TEXT": "CHAMADAS AGUARDANDO EM FILA",
     "VOICE_TALKING": "FALANDO",
-    "VOICE_TALKING_TEXT": "CHAMADAS DE FILA ATIVAS",
-    "VOICE_ANSWERED": "RESPONDIDAS",
-    "VOICE_ANSWERED_TEXT": "CHAMADAS DE FILA RESPONDIDAS",
+    "VOICE_TALKING_TEXT": "CHAMADAS EM CURSO",
+    "VOICE_ANSWERED": "ATENDIDAS",
+    "VOICE_ANSWERED_TEXT": "CHAMADAS ATENDIDAS",
     "VOICE_ABANDONED": "ABANDONADO",
-    "VOICE_ABANDONED_TEXT": "CHAMADAS DE FILA ABANDONADAS",
+    "VOICE_ABANDONED_TEXT": "CHAMADAS ABANDONADAS",
     "VOICE_TOTAL_OFFERED": "TOTAL OFERECIDO",
     "VOICE_TOTAL_OFFERED_TEXT": "TOTAL DE CHAMADAS NA FILA",
-    "TODAY_INTERACTIONS_STATS": "Interações Estatísticas Diárias",
+    "TODAY_INTERACTIONS_STATS": "Estatísticas Diárias de Interações",
     "VOICE_AVG_HOLD_TIME": "TEMPO MÉDIO DE ESPERA",
-    "VOICE_AVG_HOLD_TIME_TEXT": "TEMPO MÉDIO DE ESPERA EM FILA",
-    "VOICE_AVG_TALK_TIME": "TEMPO DE CONVERSA MÉDIA",
-    "VOICE_AVG_TALK_TIME_TEXT": "TEMPO DE CONVERSA MÉDIA NA FILA",
-    "VOICE_ANSWER_RATE": "TAXA DE RESPOSTA",
-    "VOICE_ANSWER_RATE_TEXT": "TAXA DE RESPOSTA DA FILA",
+    "VOICE_AVG_HOLD_TIME_TEXT": "TEMPO MÉDIO DE ESPERA",
+    "VOICE_AVG_TALK_TIME": "TEMPO MÉDIO ATENDIMENTO",
+    "VOICE_AVG_TALK_TIME_TEXT": "TEMPO MÉDIO ATENDIMENTO",
+    "VOICE_ANSWER_RATE": "TAXA DE ATENDIMENTO",
+    "VOICE_ANSWER_RATE_TEXT": "TAXA DE ATENDIMENTO",
     "VOICE_ABANDON_RATE": "TAXA DE ABANDONO",
-    "VOICE_ABANDON_RATE_TEXT": "TAXA DE ABANDONO DA FILA",
-    "VOICE_UNMANAGED": "NÃO GERIDO",
-    "VOICE_UNMANAGED_TEXT": "NÃO GERIDOS DA FILA",
-    "OPENED_TEXT": "Interações abertas",
-    "MANAGED": "Gerenciou",
-    "MANAGED_TEXT": "Interações gerenciadas",
+    "VOICE_ABANDON_RATE_TEXT": "TAXA DE ABANDONO",
+    "VOICE_UNMANAGED": "NÃO GERENCIADO",
+    "VOICE_UNMANAGED_TEXT": "CHAMADAS NÃO GERENCIADAS",
+    "OPENED_TEXT": "Interações Abertas",
+    "MANAGED": "Atendido",
+    "MANAGED_TEXT": "Interações Atendidas",
     "ABANDONED": "Abandonado",
     "ABANDONED_TEXT": "Interações Abandonadas",
-    "ABANDONED_RATE": "Taxa Abandono",
+    "ABANDONED_RATE": "Taxa de Abandono",
     "ABANDONED_RATE_TEXT": "Taxa de Abandono de Interações",
-    "TOTAL_OFFERED": "Total oferecido",
+    "TOTAL_OFFERED": "Total Oferecido",
     "TOTAL_OFFERED_TEXT": "Interações Oferecidas",
-    "AVG_HOLD_TIME_TEXT": "Tempo médio de Espera das Interações",
-    "MANAGED_RATE": "Taxa gerenciada",
-    "MANAGED_RATE_TEXT": "Taxa gerenciada de interações",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "Nenhum conjunto de disposição",
+    "AVG_HOLD_TIME_TEXT": "Tempo Médio de Espera das Interações",
+    "MANAGED_RATE": "Taxa de Atendimento",
+    "MANAGED_RATE_TEXT": "Taxa de Atendimento de Interações",
+    "AVG_MANAGED_TIME": "Tempo Médio de Atendimento",
+    "AVG_MANAGED_TIME_TEXT": "Tempo Médio de Atendimento das Interações",
+    "NO_DISPOSITION_SET": "Nenhum conjunto de qualificação",
     "AGENTS": "Agentes",
     "TRANSFER": "Transferir",
     "NO_DATA_AVAILABLE": "Não há dados disponíveis",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "ME": "Me",
+    "ME": "Eu",
     "CURRENTLY_IN_USE_BY": "Atualmente em uso por",
     "NOTAVAILABLE": "Não disponível",
     "CLICKRELOAD": "Novas chamadas abandonadas! Por favor faça reload",
     "ASSIGNTO": "Atribuir a",
-    "SELECT_CAMPAIGN": "Selecione uma fila",
+    "SELECT_CAMPAIGN": "Selecionar Fila",
     "FREE": "Livre",
     "RESERVED": "Reservado",
     "QUEUECALLEREXITREASON": "Motivo",
-    "QUEUECALLEREXITAT": "Derrubado",
-    "LASTASSIGNEDTO": "Último Atribuído Para",
+    "QUEUECALLEREXITAT": "Perdido",
+    "LASTASSIGNEDTO": "Atribuído por último para",
     "ABANDONEDQUEUECALLS": "Chamadas Abandonadas na Fila",
     "ABANDONAT": "Abandonado",
     "QUEUE": "Fila",
     "READ": "Lido",
     "UNREAD": "Não lido",
     "SELECT_READ_UNREAD": "Selecione Lido/Não Lido",
-    "SELECT_AGENT": "Selecione o agente",
+    "SELECT_AGENT": "Selecione Agente",
     "MARK_AS_UNREAD": "Marcar como não lido",
-    "FILTER_VOICE_QUEUES": "Filtrar Filas de voz",
-    "CHANNEL_WAITING_TEXT": "Interações aguardando em fila",
+    "FILTER_VOICE_QUEUES": "Filtrar Filas de Voz",
+    "CHANNEL_WAITING_TEXT": "Interações Aguardando em Fila",
     "CHANNEL_QUEUE": "Fila",
     "CHANNEL_FROM": "De",
     "LOADING_INTERACTION": "Estamos carregando a interação...",
@@ -85,7 +85,7 @@
     "WED": "Qua",
     "THU": "Qui",
     "FRI": "Sexta",
-    "SAT": "Sab",
+    "SAT": "Sat",
     "SUN": "Dom",
     "DELETE": "Excluir",
     "LAST_3_DAYS": "Últimos 3 dias",
@@ -97,7 +97,7 @@
     "THIS_WEEK": "Esta Semana",
     "YESTERDAY": "Ontem",
     "TODAY": "Hoje",
-    "SELECT_DATE": "Selecione a data de início",
+    "SELECT_DATE": "Selecione a Data de Início",
     "HOME": "Inicio",
     "SET_AS": "Definir como",
     "PENDING": "Pendente",
     "DURATION": "Duração",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "NOT_ASSIGNED": "Não atribuído",
+    "NOT_ASSIGNED": "Não Atribuído",
     "UNKNOWN": "Desconhecido",
-    "SELECT_USER": "Selecione o usuário",
+    "SELECT_USER": "Selecione Usuário",
     "LAST_MESSAGE": "Última mensagem",
     "USER": "Usuário",
     "RATING": "Avaliação",
     "FEEDBACK": "Feedback",
     "SUBJECT": "Assunto",
-    "REFERER": "Referenciador",
+    "REFERER": "Indicador",
     "ACCOUNT": "Conta",
     "WEBSITE": "Website",
     "AGENT": "Agente",
     "DISPOSITION": "Qualificar",
     "CONTACT": "Contato",
     "INTERACTION": "Interação",
-    "BROWSER_NAME": "Nome do Browser",
-    "BROWSER_VERSION": "Versão Browser",
-    "OS_NAME": "Nome do sistema operacional",
-    "OS_VERSION": "Versão do sistema operacional",
+    "BROWSER_NAME": "Nome do Navegador",
+    "BROWSER_VERSION": "Versão do Navegador",
+    "OS_NAME": "Nome do Sistema Operacional",
+    "OS_VERSION": "Versão do Sistema Operacional",
     "DEVICE_MODEL": "Modelo do Dispositivo",
-    "DEVICE_VENDOR": "Fabricante do Dispositivos",
+    "DEVICE_VENDOR": "Fabricante do Dispositivo",
     "DEVICE_TYPE": "Tipo do Dispositivo",
-    "RECALLME": "Lembre-me",
+    "RECALLME": "Agendar",
     "DROP_RATE": "Taxa de Perda",
     "DROPPED": "Perdidas",
     "DROPPED_TEXT": "Chamadas Perdidas em Fila",
     "DETAIL": "Detalhe",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitado",
-    "LIMITED_TEXT": "Campanhas de Ligações URA Originais/Limite",
+    "LIMITED_TEXT": "Campanhas de URA Originado/Limitado",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Gravações",
-    "TODAY_MOTION_BULL_STATS": "Estatísticas diárias das campanhas de filas",
+    "TODAY_MOTION_BULL_STATS": "Estatísticas Diárias das Campanhas de Fila",
     "ORIGINATED": "Originado",
-    "ORIGINATED_TEXT": "Chamadas de Fila Originadas",
+    "ORIGINATED_TEXT": "Chamadas Originadas",
     "UPDATE": "Atualizar",
     "MORE": "Adicionar",
     "MOTIONDIALER": "Motion Bull",
     "DISPOSE": "Encerrar",
     "QUEUES": "Filas",
-    "DIALER_CALL": "Numéro discado",
+    "DIALER_CALL": "Numéro Discado",
     "ELAPSED_TIME": "Tempo de Atendimento",
     "EDIT": "Editar",
     "MERGE": "Mesclar",
     "DUPLICATE": "Duplicado",
-    "UNIQUEID": "Uniqueid",
+    "UNIQUEID": "ID único",
     "CAMPAIGN": "Campanha",
     "NONE": "Nenhum",
     "NAME": "Nome",
     "ANSWER_MACHINE": "Answer Machine",
     "INTERESTED": "Interessado",
-    "NOT_INTERESTED": "Não interessado",
-    "PERSONAL_INFO": "Informação pessoal",
+    "NOT_INTERESTED": "Não Interessado",
+    "PERSONAL_INFO": "Informação Pessoal",
     "SOLD": "Vendido",
     "SPECIAL": "Especial",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reprogramar",
+    "RESCHEDULE": "Reagendar",
     "FIRSTNAME": "Primeiro Nome",
-    "LASTNAME": "Último nome",
-    "MOBILE": "Mobile",
+    "LASTNAME": "Sobrenome",
+    "MOBILE": "Celular",
     "DATE_OF_BIRTH": "Data de Aniversário",
     "COMPANY": "Empresa",
     "TAG": "Tag",
     "CUSTOM_FIELDS": "Campos Personalizados",
     "GENERAL": "Geral",
     "VOICE": "Voz",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Estatísticas de Campanhas Gerais",
-    "TODAY_INBOUND_STATS": "Estatísticas diárias da fila de entrada",
-    "TODAY_OUTBOUND_STATS": "Estatísticas diárias de saída",
-    "WAITING": "Esperando",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Estatísticas Diárias de Campanhas de URA",
+    "TODAY_INBOUND_STATS": "Estatísticas Diárias da Fila de Entrada",
+    "TODAY_OUTBOUND_STATS": "Estatísticas Diárias de Chamadas de Saída",
+    "WAITING": "Aguardando",
     "TALKING": "Falando",
-    "INBOUND_ANSWERED": "Respondidas",
-    "OUTBOUND_ANSWERED": "Respondidas",
+    "INBOUND_ANSWERED": "Atendidas",
+    "OUTBOUND_ANSWERED": "Atendidas",
     "AVG_HOLD_TIME": "Tempo Médio de Espera",
-    "INBOUND_ANSWER_RATE": "Taxa de resposta",
-    "OUTBOUND_ANSWER_RATE": "Taxa de resposta",
+    "INBOUND_ANSWER_RATE": "Taxa de Atendimento",
+    "OUTBOUND_ANSWER_RATE": "Taxa de Atendimento",
     "ABANDON_RATE": "Taxa de Abandono",
-    "UNMANAGED": "Não gerenciado",
+    "UNMANAGED": "Não Gerenciado",
     "TOTAL": "Total",
     "TOT_DURATION": "Duração Total",
     "AVG_DURATION": "Duração Média",
     "HELP": {
-      "UNMANAGED_RATE": "A taxa não gerenciada de todas as interações",
-      "WAITING": "O número total de interações de espera",
-      "OPENED": "O número total de interações ativas",
-      "MANAGED": "O número total de interações concluídas",
-      "ABANDONED": "O número total de interações abandonadas",
-      "TOTAL_OFFERED": "O número total de interações (concluído + abandonado)",
-      "AVG_HOLD_TIME": "O tempo médio de retenção de interação, ou seja, o tempo médio gasto aguardando a resposta de um agente, para todas as interações existentes",
+      "UNMANAGED_RATE": "Taxa de Não Gerenciada de todas as interações",
+      "WAITING": "Número total de interações em espera",
+      "OPENED": "Número total de Interações Abertas",
+      "MANAGED": "Número total de interações atendidas",
+      "ABANDONED": "Número total de interações abandonadas",
+      "TOTAL_OFFERED": "Número total de interações (concluído + abandonado)",
+      "AVG_HOLD_TIME": "Tempo médio de retenção de interação, ou seja, o tempo médio gasto aguardando a resposta de um agente, para todas as interações existentes",
       "AVG_MANAGED_TIME": "O tempo médio de interação gerenciada, ou seja, o tempo médio gasto durante a conversa",
-      "MANAGED_RATE": "A taxa gerenciada de todas as interações",
-      "ABANDONED_RATE": "A taxa de abandono de todas as interações",
-      "UNMANAGED": "O número total de interações não gerenciadas",
-      "VOICE_WAITING": "O número total de chamadas da fila de espera, para todas as filas existentes",
-      "VOICE_TALKING": "O número total de chamadas da fila ativa, para todas as filas existentes",
-      "VOICE_ANSWERED": "O número total de chamadas de fila concluídas, para todas as filas existentes",
-      "VOICE_ABANDONED": "O número total de Chamadas de Filas Abandonadas, considerando todas as Filas existentes. Observe que as chamadas que são abandonadas para timeout e joinempty não serão consideradas",
-      "VOICE_TOTAL_OFFERED": "O número total de chamadas de fila (concluído + abandonado). Observe que as chamadas que entram em um IVR e não em uma fila, não serão consideradas",
-      "VOICE_AVG_TALK_TIME": "O tempo médio de conversa da fila, ou seja, o tempo médio gasto durante a conversa, para todas as filas existentes",
-      "VOICE_AVG_HOLD_TIME": "Tempo médio de espera da fila, ou seja, o tempo médio gasto aguardando a resposta de um agente para todas as filas existentes",
-      "VOICE_ANSWER_RATE": "A taxa de resposta de todas as chamadas de fila",
-      "VOICE_UNMANAGED": "O número total de chamadas de fila não gerenciadas, para todas as filas existentes. Inclui as chamadas que são abandonadas para timeout, joinempty, leavewhenempty e exitwithkey (cfr. Asterisk doc para mais informações)",
-      "ORIGINATED": "Número total de chamadas discadas nas campanhas da fila",
-      "ORIGINATEDLIMITED": "Campanhas de Chamadas Originais / Limite",
-      "DROPPED": "O número total de chamadas de fila ignoradas, para todas as filas existentes",
-      "DROP_RATE": "A taxa de queda de todas as chamadas da fila",
-      "OUTBOUND_ANSWERED": "O número total de chamadas de saída concluídas",
-      "OUTBOUND_ANSWER_RATE": "A taxa de resposta de todas as chamadas de saída",
-      "ABANDON_RATE": "A taxa de abandono de todas as chamadas da fila",
-      "TOTAL": "O número total de chamadas de saída",
-      "TOT_DURATION": "A duração total de todas as chamadas de saída",
-      "AVG_DURATION": "A duração média de todas as chamadas de saída concluídas",
-      "MANDATORY_DISPOSITION_ENABLED": "Disposição obrigatória ativada para esta conta",
+      "MANAGED_RATE": "Taxa de atendimento de todas as interações",
+      "ABANDONED_RATE": "Taxa de abandono de todas as interações",
+      "UNMANAGED": "Número total de interações Não Gerenciadas",
+      "VOICE_WAITING": "Número total de chamadas em espera, para todas as filas existentes",
+      "VOICE_TALKING": "Número total de chamadas de saída, para todas as filas existentes",
+      "VOICE_ANSWERED": "Número total de chamadas atendidas, para todas as filas existentes",
+      "VOICE_ABANDONED": "O número total de Chamadas Abandonadas, considerando todas as Filas existentes. Observe que as chamadas que são abandonadas por timeout e joinempty não serão consideradas",
+      "VOICE_TOTAL_OFFERED": "Número total de chamadas de fila (concluído + abandonado). Observe que as chamadas que entram em uma URA e não em uma fila, não serão consideradas",
+      "VOICE_AVG_TALK_TIME": "Tempo médio de conversação, ou seja, o tempo médio gasto durante o atendimento considerando todas as filas existentes",
+      "VOICE_AVG_HOLD_TIME": "Tempo médio de espera em fila, ou seja, o tempo médio gasto aguardando o atendimento de um agente para todas as filas existentes",
+      "VOICE_ANSWER_RATE": "Taxa de atendimento de todas as filas",
+      "VOICE_UNMANAGED": "Número total de chamadas Não Gerenciadas, para todas as filas existentes. Inclui as chamadas que são abandonadas por timeout, joinempty, leavewhenempty e exitwithkey",
+      "ORIGINATED": "Número total de chamadas feitas pelas Campanhas de Discagem",
+      "ORIGINATEDLIMITED": "Chamadas da Capanha de URA Originadas/Limitada",
+      "DROPPED": "O número total de chamadas perdidas na fila, para todas as filas existentes",
+      "DROP_RATE": "Taxa de perda de todas as chamadas da fila",
+      "OUTBOUND_ANSWERED": "Número total de chamadas de saída concluídas",
+      "OUTBOUND_ANSWER_RATE": "Taxa de atendimento de todas as chamadas de saída",
+      "ABANDON_RATE": "Taxa de abandono de todas as chamadas da fila",
+      "TOTAL": "Número total de chamadas de saída",
+      "TOT_DURATION": "Duração total de todas as chamadas de saída",
+      "AVG_DURATION": "Duração média de todas as chamadas de saída concluídas",
+      "MANDATORY_DISPOSITION_ENABLED": "Qualificação obrigatória habilitada para esta conta",
       "EXACT_MATCH_FILTER": "Procure uma correspondência exata",
       "LIKE_FILTER": "Procure o padrão especificado"
     },
     },
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "WELCOME_TO_MOTION": "Bem vindo ao Motion",
-    "WELCOME_MESSAGE": "Use a barra lateral esquerda para navegar pelas seções disponíveis",
+    "WELCOME_MESSAGE": "Use a barra lateral à esquerda para navegar pelas seções disponíveis",
     "ADD": "Adicionar",
     "CONTACTMANAGER": "Gestão de Contatos",
     "DASHBOARD": "Dashboard",
     "NEW_CONTACT": "Novo Contato",
     "PHONE": "Telefone",
     "SAVE": "Salvar",
-    "INBOUND_WAITING_CALLS": "Chamadas de entrada aguardando",
+    "INBOUND_WAITING_CALLS": "Chamadas em Espera",
     "CONTACTS": "Contatos",
     "MYCONTACTS": "Meus Contatos",
     "ADD_CONTACT": "Adicionar Contato",
     "RELOAD": "Recarregar",
-    "WAITING_TEXT": "Esperando Interações",
+    "WAITING_TEXT": "Interações Aguardando",
     "TALKING_TEXT": "Chamadas de Filas Ativas",
-    "INBOUND_ANSWERED_TEXT": "Chamadas de Filas Respondidas",
+    "INBOUND_ANSWERED_TEXT": "Chamadas Atendidas",
     "DROP_RATE_TEXT": "Taxa de Perda de Chamadas em Fila",
-    "AVG_TALK_TIME_TEXT": "Tempo Total de Conversa de Chamadas em Fila",
-    "INBOUND_ANSWER_RATE_TEXT": "Taxa de resposta de chamadas da fila",
-    "UNMANAGED_TEXT": "Interações não gerenciadas",
-    "TOTAL_TEXT": "Total de chamadas de saída",
+    "AVG_TALK_TIME_TEXT": "Tempo de Conversação de Chamadas em Fila",
+    "INBOUND_ANSWER_RATE_TEXT": "Taxa de Atendimento de Chamadas",
+    "UNMANAGED_TEXT": "Interações Não Gerenciadas",
+    "TOTAL_TEXT": "Total de Chamadas de Saída",
     "OUTBOUND_ANSWERED_TEXT": "Chamadas de Saída Atendidas",
-    "TOT_DURATION_TEXT": "Duração total das chamadas de saída",
-    "AVG_DURATION_TEXT": "Duração média das chamadas ativas",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Chamada de saída",
-    "PAGE": "Pagina",
-    "ROWSPERPAGE": "Linhas por Página",
+    "TOT_DURATION_TEXT": "Duração Total das Chamadas de Saída",
+    "AVG_DURATION_TEXT": "Duração Média das Chamadas Ativas",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Taxa de Atendimento em Chamadas de Saída",
+    "PAGE": "Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "REPLY_PLACEHOLDER": "Digite e aperte enter para enviar uma mensagem",
+    "REPLY_PLACEHOLDER": "Digite e pressione enter para enviar uma mensagem",
     "CONTACT_INFO": "Informações de Contato",
     "CLOSE_AND_DISPOSE": "Encerrar e Qualificar",
     "DISPOSITIONS": "Qualificações",
     "REJECT": "Rejeitar",
     "CLOSED": "Encerrar",
     "INFO": "Informações",
-    "NOTE": "Nota",
+    "NOTE": "Observação",
     "ACCEPT_ELSEWHERE": "Aceito em outro lugar",
     "ATTENTION": "Atenção",
     "SOCIAL": "Social",
     "SHOW_DETAILS": "Mostrar Detalhes",
     "HIDE_DETAILS": "Esconder Detalhes",
     "EXTERNAL_URL": "Link Externo",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "Nenhuma conta de e-mail disponível",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "Nenhuma conta de fax disponível",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "Não há contas SMS disponíveis",
-    "SELECT_DATE_RANGE": "Selecione o período",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Email disponível",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Fax disponível",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "Nenhuma Conta de SMS disponível",
+    "SELECT_DATE_RANGE": "Selecione o Período",
     "CLEAR": "Limpar",
     "CALL_NUMBER": "Ligar",
     "TRANSFER_NUMBER": "Transferir",
     "CALL_SAVED": "Chamada devidamente salva",
     "CALL_DISPOSED": "Chamada devidamente qualificada",
-    "SCHEDULED_CALLS": "Chamadas agendadas",
+    "SCHEDULED_CALLS": "Chamadas Agendadas",
     "PRIVATE": "Privado",
     "PUBLIC": "Público",
     "PUBLIC_INTERACTION": "A interação é pública",
     "VISIBILITY": "Visibilidade",
-    "INTERACTION_CLOSED": "Interação devidamente fechada",
-    "INTERACTION_CLOSED_DISPOSED": "Interação devidamente fechada e qualificada",
+    "INTERACTION_CLOSED": "Interação devidamente encerradas",
+    "INTERACTION_CLOSED_DISPOSED": "Interação devidamente encerradas e qualificadas",
     "INTERACTION_DISPOSED": "Interação devidamente qualificada",
-    "ASSIGNED_TO_OTHERS": "Atribuído a outros",
-    "SELECT_ALL": "Selecionar tudo",
-    "CHAT_INTERACTIONS": "Interações de Webchat",
+    "ASSIGNED_TO_OTHERS": "Atribuído a outro",
+    "SELECT_ALL": "Selecionar Tudo",
+    "CHAT_INTERACTIONS": "Interações de Chat",
     "FAX_INTERACTIONS": "Interações de Fax",
     "ID": "Id",
-    "MAIL_INTERACTIONS": "Interações por email",
-    "OPENCHANNEL_INTERACTIONS": "Interações de canal aberto",
-    "SMS_INTERACTIONS": "Interações por SMS",
+    "MAIL_INTERACTIONS": "Interações de Email",
+    "OPENCHANNEL_INTERACTIONS": "Interações do Open Channel",
+    "SMS_INTERACTIONS": "Interações de SMS",
     "CANCEL": "Cancelar",
     "DRAFT": "Rascunho",
     "DRAFT_SAVE_WARNING_MESSAGE": "Existe um rascunho salvo para esta interação. Tem certeza de que deseja substituí-lo?",
     "ALL_PRODUCTS": "Todos",
     "ALL_STATUS": "Todos",
     "ALL_STEP": "Todos",
-    "ALL_WORKFLOW": "Todo Fluxo de Trabalho",
+    "ALL_WORKFLOW": "Todo o Fluxo de Trabalho",
     "ATTENDACELASTINVOICE": "Última fatura",
     "ATTENDACENEXTINVOICE": "Próxima fatura",
     "AUTHORIZED": "AUTORIZADO",
     "AUTOPROFORMA": "AUTO-PROFORMA",
     "BALANCE": "SALDO",
     "BY": "Por",
-    "CLONEPROFORMA": "Clone",
+    "CLONEPROFORMA": "Clonar",
     "COMPANIES": "Empresas",
     "COMPANYCITY": "Cidade",
     "COMPANYCOUNTRY": "País",
     "COMPANYDESC": "Descrição",
-    "COMPANYEMAIL": "O email",
+    "COMPANYEMAIL": "Email",
     "COMPANYFAX": "Fax",
     "COMPANYNAME": "Companhia",
     "COMPANYNATION": "Nação",
     "CREATIONDATE": "Criado em",
     "CREDITINOTENAME": "Nome",
     "CREDITNOTE": "NOTA DE CRÉDITO",
-    "CREDITNOTEDETAILS": "Detalhe da nota de crédito",
-    "CREDITNOTE_INFO": "Nota de crédito",
+    "CREDITNOTEDETAILS": "Detalhe da Nota de Crédito",
+    "CREDITNOTE_INFO": "Nota de Crédito",
     "DELETE_PRODUCT": "Excluir Produto",
     "DEPOSIT": "DEPÓSITO",
     "DETAILS": "Detalhes",
     "DOSSIER": "Dossiê",
     "DOSSIERID": "ID do Dossiê",
     "DOSSIERNAME": "Nome do Dossiê",
-    "DOSSIERNOTES": "Nota",
+    "DOSSIERNOTES": "Observação",
     "DOSSIERS": "Dossiês",
     "DOSSIER_INFO": "Informação",
     "ENDDATE": "Data de Encerramento",
     "FROM": "From",
     "GRAPHINVOICES": "Tabela de emissão de faturas",
-    "INASSET": "De ativos",
+    "INASSET": "Ativos",
     "INVOICE": "FATURA",
     "INVOICEDETAILS": "DETALHES DA FATURA",
     "INVOICEDISCOUNT": "Desconto",
     "INVOICEEMITED": "Emitido",
     "INVOICEID": "Fatura",
-    "INVOICENAME": "Nome da fatura",
+    "INVOICENAME": "Nome da Fatura",
     "INVOICENOPRODUCTAMOUNT": "Montante",
     "INVOICENOPRODUCTDESCRIPTION": "Descrição na fatura",
-    "INVOICENOPRODUCTSAVE": "Salve \e051",
+    "INVOICENOPRODUCTSAVE": "Salvar",
     "INVOICENOPRODUCTUPDATE": "Atualizar",
     "INVOICENOTAXAMOUNT": "IMPOSTO",
-    "INVOICENOTES": "Nota",
+    "INVOICENOTES": "Observação",
     "INVOICEPAYED": "Pago",
     "INVOICES": "FATURAS",
     "INVOICESTATUS": "Estado",
     "INVOICETOTAL": "Total",
     "INVOICE_INFO": "Fatura",
     "MANAGESALES": "Assinaturas",
-    "MOVEASSET": "DE ATIVOS",
-    "MOVECREDITNOTE": "NOTA DE CRÉDITO AUTOMÁTICO",
+    "MOVEASSET": "ATIVOS",
+    "MOVECREDITNOTE": "SELF-CREDIT NOTE",
     "NETPRICE": "Preço",
     "NEW_COMPANY": "Novo",
     "NEW_DOSSIER": "Novo Dossiê",
-    "NEXTINVOICE": "Próxima fatura",
-    "NOTES": "Nota",
+    "NEXTINVOICE": "Próxima Fatura",
+    "NOTES": "Observações",
     "NO_PRODUCTINVOICE_AVAILABLE": "Nenhum produto",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Não há dados disponíveis",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Não há dados disponíveis",
     "NUMBER": "Número",
-    "OPENDATE": "Data aberta",
+    "OPENDATE": "Data de Abertura",
     "ORDER": "Ordem",
     "ORDERCLIENTCODE": "Código do Consumidor",
     "ORDERID": "Ordem",
-    "ORDERNOTES": "Nota",
+    "ORDERNOTES": "Observação",
     "ORDERSTATUS": "Estado",
     "ORDER_INFO": "Ordem",
-    "PAIDANDEXPIRED": "Forma de pagamento",
+    "PAIDANDEXPIRED": "Forma de Pagamento",
     "PAYED_AY": "Pago em",
-    "PAYMENT": "Forma de pagamento",
+    "PAYMENT": "Forma de Pagamento",
     "PAYMENTMETHOD": "Métodos de Pagamento",
     "PAYMENTS": "PAGAMENTOS",
-    "PAYMENT_INFO": "Informação de pagamento",
+    "PAYMENT_INFO": "Informação de Pagamento",
     "PDFCREDITNOTE": "PDF",
     "PDFINVOICE": "PDF",
     "PDFPROFORMA": "PDF",
-    "PRICELIST": "Lista de preços",
+    "PRICELIST": "Lista de Preços",
     "PRICELISTDISCOUNT": "Desconto na lista de preços",
-    "PRICELISTNAME": "Lista de preços",
-    "PRICELISTNETPRICE": "Preço líquido",
+    "PRICELISTNAME": "Lista de Preços",
+    "PRICELISTNETPRICE": "Preço Líquido",
     "PRICESALELISTNETPRICE": "Prezzo listino",
     "PRODUCTATUNIT": "Unidade",
-    "PRODUCTCODE": "Código do produto",
+    "PRODUCTCODE": "Código do Produto",
     "PRODUCTDESCRIPTION": "Descrição",
-    "PRODUCTFILTERNAME": "Nome do filtro",
+    "PRODUCTFILTERNAME": "Nome do Filtro",
     "PRODUCTININVOICE": "Produtos na fatura",
     "PRODUCTINPROFORMA": "Produtos em pró-forma",
     "PRODUCTINQUOTATION": "DETALHES DO PRODUTO",
-    "PRODUCTNAME": "produtos",
-    "PRODUCTNOTE": "Nota",
+    "PRODUCTNAME": "Produtos",
+    "PRODUCTNOTE": "Observação",
     "PRODUCTPRICE": "Preço",
     "PRODUCTQTY": "Quantidade",
     "PRODUCTS": "PRODUTOS",
     "PROFORMAAUTHORIZED": "Proforma autorizado",
     "PROFORMADETAILS": "Detalhes",
     "PROFORMAID": "ID Proforma",
-    "PROFORMANAME": "Nome pró-forma",
-    "PROFORMANOTES": "Nota",
+    "PROFORMANAME": "Nome da Pró-forma",
+    "PROFORMANOTES": "Observação",
     "PROFORMAS": "PROFORMA",
     "PROFORMASTATUS": "Estado",
     "PROFORMA_INFO": "Proforma",
     "QUANTITY": "Quantidade",
     "QUOTATION": "COTAÇÃO",
-    "QUOTATIONDISCOUNT": "Desconto de cotação",
+    "QUOTATIONDISCOUNT": "Desconto de Cotação",
     "QUOTATIONID": "Oferta",
-    "QUOTATIONINVOICEID": "ID da fatura",
-    "QUOTATIONNAME": "Nome da cotação",
-    "QUOTATIONNOTES": "Notas de cotação",
-    "QUOTATIONPRODUCTNOTE": "Nota do produto",
+    "QUOTATIONINVOICEID": "ID da Fatura",
+    "QUOTATIONNAME": "Nome da Cotação",
+    "QUOTATIONNOTES": "Observações da Cotação",
+    "QUOTATIONPRODUCTNOTE": "Observação do Produto",
     "QUOTATIONPRODUCTTYPE": "Tipo",
-    "QUOTATIONPROFORMAID": "ID pró-forma",
+    "QUOTATIONPROFORMAID": "ID da Pró-forma",
     "QUOTATIONQTY": "Quantidade",
     "QUOTATIONSTATUS": "Estado",
     "QUOTATIONSUBSCRIPTION": "Duração",
     "QUOTATIONTOTAL": "TOTAL",
     "QUOTATIONTOTALPRICE": "Total líquido",
     "QUOTATIONTOTALS": "Total",
-    "QUOTATIONTOTALTAX": "Taxa total",
+    "QUOTATIONTOTALTAX": "Imposto total",
     "QUOTATIONUNIT": "Unidade",
-    "QUOTATIONVAT": "CUBA",
-    "QUOTATION_INFO": "cotação",
+    "QUOTATIONVAT": "VAT",
+    "QUOTATION_INFO": "Cotação",
     "REQUEST": "SOLICITAÇÃO",
     "REQUESTID": "Solicitação",
-    "REQUESTNAME": "Nome da solicitação",
-    "REQUESTNOTES": "Solicitar notas",
+    "REQUESTNAME": "Nome da Solicitação",
+    "REQUESTNOTES": "Observações da Solicitação",
     "REQUEST_INFO": "Solicitação",
-    "SELECT_COMPANY": "Selecionar empresa",
-    "SELECT_PERIOD": "Selecionar intervalo",
-    "SELECT_PERIOD_CREATION": "Selecionar data de criação",
-    "SELECT_PERIOD_EXPIRE": "Selecionar data de validade",
+    "SELECT_COMPANY": "Selecionar Empresa",
+    "SELECT_PERIOD": "Selecione período",
+    "SELECT_PERIOD_CREATION": "Selecione Data de Criação",
+    "SELECT_PERIOD_EXPIRE": "Selecione Data de Validade",
     "SELECT_PERIOD_START": "Selecione a data",
     "SELECT_PRODUCT": "Selecionar produto",
-    "SELECT_PRODUCTTYPE": "Selecione o tipo",
-    "SELECT_WORKFLOW": "Selecionar fluxo de trabalho",
-    "SELECT_WORKFLOWSTEPS": "Selecione o estado do fluxo de trabalho",
-    "STARTDATE": "Data da fatura",
+    "SELECT_PRODUCTTYPE": "Selecione tipo",
+    "SELECT_WORKFLOW": "Selecione Fluxo de Trabalho",
+    "SELECT_WORKFLOWSTEPS": "Selecione Estado do Fluxo de Trabalho",
+    "STARTDATE": "Data da Fatura",
     "STATE": "Estado",
-    "STEP": "Degrau",
+    "STEP": "Passo",
     "SUBSCRIPTIONDETAIL": "Detalhe",
-    "SUBSCRIPTIONNAME": "Inscrição",
-    "SUBSCRIPTIONS": "CRONOGRAMA DO CLIENTE",
+    "SUBSCRIPTIONNAME": "Subscrição",
+    "SUBSCRIPTIONS": "CALENDÁRIO DO CLIENTE",
     "TAX": "Imposto",
     "TO": "Para",
     "TOTALPAYMENTS": "Total de pagamentos",
     "UPDATED_AT": "Modificado em",
-    "UPDATE_PRODUCT": "Atualizar produto",
-    "WORKFLOW": "Selecionar fluxo de trabalho",
+    "UPDATE_PRODUCT": "Atualizar Produto",
+    "WORKFLOW": "Selecione Fluxo de Trabalho",
     "YEARS": "Anos",
-    "CUSTOMER_IP": "Endereço IP de origem",
-    "CUSTOMER_PORT": "Porta TCP de origem",
+    "CUSTOMER_IP": "Endereço IP de Origem",
+    "CUSTOMER_PORT": "Porta TCP de Origem",
     "ADVANCED_SEARCH": "Busca Avançada",
     "AND": "E",
     "APPLY": "Aplicar",
     "CONTAINS": "Contém",
     "DISABLED": "Desativado",
-    "ENABLED": "Ativado",
+    "ENABLED": "Habilitado",
     "ENDING_DATE": "Data de Encerramento",
     "ENDING_VALUE": "Valor de Encerramento",
     "ENDS_WITH": "Encerrado com",
     "IS_LESS_THAN_OR_EQUAL_TO": "É menor ou igual a",
     "IS_NOT_AMONG": "Não está entre",
     "IS_NOT_EQUAL": "Não é igual",
-    "MEET_ALL_CONDITIONS": "Conheça todas as condições",
+    "MEET_ALL_CONDITIONS": "Atenda todas as condições",
     "MEET_ANY_CONDITIONS": "Atenda a pelo menos uma condição",
     "NEW_CONDITION": "Nova Condição",
     "SELECT_FIELD": "Selecionar campo",
     "CHOOSE": "Escolher",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
-    "SELECT_QUEUE": "Selecione uma fila",
-    "VIDAOOSESSION": "Iniciar videochamada",
-    "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPP_INTERACTIONS": "Interações do conector do WhatsApp",
+    "SELECT_QUEUE": "Selecione Fila",
+    "VIDAOOSESSION": "Iniciar Video Chamada",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPP_INTERACTIONS": "Interações do WhatsApp Connector",
     "LAST_UPDATED": "Ultima atualização",
-    "MATCHING_FIELD": "Campo correspondente",
-    "MULTIPLE_CONTACTS_FOUND": "Vários contatos encontrados para número",
+    "MATCHING_FIELD": "Campo de correspondência",
+    "MULTIPLE_CONTACTS_FOUND": "Vários contatos encontrados para o número",
     "SELECT": "Selecione",
-    "SELECT_CONTACT": "Selecione o contato",
+    "SELECT_CONTACT": "Selecione contato",
     "WHICH_ONE_TO_USE": "Qual você deseja usar?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma conta Whatsapp disponível",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Whatsapp disponível",
+    "SECOND_LEVEL_DISPOSITION": "Qualificações de Segundo Nível",
+    "THIRD_LEVEL_DISPOSITION": "Qualificação de Terceiro Nível",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Sua licença está prestes a expirar! Entre em contato com o seu administrador",
     "CREATEDAT": "Criado em",
     "ELAPSED_ANSWERED": "Tempo decorrido desde o início da chamada",
     "ELAPSED_DISPOSED": "Tempo decorrido desde encerramento da chamada",
     "LOST_CONNECTION": "Enfrentando problemas de conectividade de rede. Por favor, verifique sua conexão à internet.",
     "NO_RESULTS_AVAILABLE": "Nenhum resultado disponível",
-    "AUTOCLOSE": "Encerrar automaticamente a guia de contato após qualificação",
-    "AGENT_PRESENCE": "Agent Presence",
-    "SELECT_TEAM": "Selecionar time",
+    "AUTOCLOSE": "Fechar automaticamente a aba de contato após qualificação",
+    "AGENT_PRESENCE": "Presença do Agente",
+    "SELECT_TEAM": "Selecione Equipe",
     "AVAILABLE": "Disponível",
     "CONFIRM": "Confirme",
     "FILTERS": "Filtros",
-    "FILTER_CHAT_WEBSITES": "Filtrar Websites do Webchat",
+    "FILTER_CHAT_WEBSITES": "Filtrar Websites do Chat",
     "FILTER_FAX_ACCOUNTS": "Filtrar Contas de Fax",
     "FILTER_MAIL_ACCOUNTS": "Filtrar Contas de Email",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar Contas de Open Channel",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar Contas do OpenChannel",
     "FILTER_SMS_ACCOUNTS": "Filtrar Contas de SMS",
     "FILTER_WHATSAPP_ACCOUNTS": "Filtrar Contas de Whatsapp",
     "SETFILTERS": "Definir Filtros",
-    "DIAL_TIMEZONE": "Fuso Horário de Discagem",
-    "LIMIT_TABS_REACHED": "Número máximo de guias abertas atingido",
-    "LIST_NAME": "Lista de nomes",
-    "PREVIEW_CALL": "Pré-visualizar chamada",
-    "SYSTEM_TIME": "Hora do sistema",
-    "CONTACT_NAME": "Nome de contato",
+    "DIAL_TIMEZONE": "Fuso horário de Discagem",
+    "LIMIT_TABS_REACHED": "Limite máximo de abas abertas foi atingido",
+    "LIST_NAME": "Nome da lista",
+    "PREVIEW_CALL": "Chamada Preview",
+    "SYSTEM_TIME": "Horário do sistema",
+    "CONTACT_NAME": "Nome de Contato",
     "CONTACT_PHONE": "Telefone de Contato",
-    "RECALLME_CALL_REMINDER": "Lembrete de chamada de Recall Me",
-    "SCHEDULED_TIME": "Hora marcada",
-    "UPCOMING_RECALLME_CALL": "Próxima chamada de Recall Me",
-    "WAITING_CALLS": "Chamadas em espera",
-    "WAITING_INTERACTIONS": "Interações em espera"
+    "RECALLME_CALL_REMINDER": "Lembrete de Agendamento",
+    "SCHEDULED_TIME": "Horário agendado",
+    "UPCOMING_RECALLME_CALL": "Próxima chamada Agendada",
+    "WAITING_CALLS": "Chamadas Aguardando",
+    "WAITING_INTERACTIONS": "Interações Aguardando"
   }
 }
index 0b91115..ed9bd53 100644 (file)
@@ -4,93 +4,93 @@
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "QUEUETRANSFER": "Transferir de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da Fila",
+    "AGENTTRANSFER": "Transferir de Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
-    "CANNEDANSWERS": "Respostas Prontas",
-    "FAXCANNEDANSWERS": "Respostas Prontas",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_FAXCANNEDANSWER": "Nova resposta pronta",
-    "ADD_FAXCANNEDANSWER": "Adicionar resposta pronta",
-    "EDIT_CHATCANNEDANSWER": "Editar resposta pronta",
-    "DELETE_CHATCANNEDANSWER": "Excluir resposta pronta",
-    "SPYINTERACTION": "Espião",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "FAXCANNEDANSWERS": "Respostas Pré-definidas",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Não há Respostas Pré-definidas disponíveis",
+    "NEW_FAXCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_FAXCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "EDIT_CHATCANNEDANSWER": "Editar Resposta Pré-definida",
+    "DELETE_CHATCANNEDANSWER": "Excluir Resposta Pré-definida",
+    "SPYINTERACTION": "Espiar",
     "TAGS": "Tags",
     "REPLY": "Responder",
     "SEND": "Enviar",
     "TO": "Para",
     "FROM": "De",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_FAXQUEUE": "Ir para a fila de fax em tempo real",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_FAXQUEUE": "Visualizar Fila de Fax em Tempo Real",
     "EDIT_TRUNK": "Editar Tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não registrado",
-    "EDIT_ACCOUNT": "Editar conta de fax",
+    "EDIT_ACCOUNT": "Editar Conta de Fax",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Tempo",
+    "TIMER": "Timer",
     "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "GOTO_FAXACCOUNT": "Ir para fax em tempo real",
+    "GOTO_FAXACCOUNT": "Visualizar Conta de Fax em Tempo Real",
     "ACCOUNTS": "Contas",
-    "GOTOREALTIME_FAXACCOUNT": "Ir para fax em tempo real",
+    "GOTOREALTIME_FAXACCOUNT": "Visualizar Conta de Fax em Tempo Real",
     "TRUNK_STATUS": "Status do Tronco",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Não Registrado",
     "PAUSE": "Pausa",
-    "INFO": "Informarção",
+    "INFO": "Info",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do Telefone",
     "PHONE_STATUS": "Status do Telefone",
     "LOGOUT": "Sair",
     "DEFAULT_PAUSE": "Pausa Padrão",
-    "AGENTADD_QUEUE": "Adicionar Agente na fila de Fax",
-    "AGENTSADD_QUEUE": "Adicionar Agentes na fila de Fax",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de Fax",
+    "AGENTSADD_QUEUE": "Adicionar Agentes na Fila de Fax",
     "UNPAUSE": "Finalizar Pausa",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "READY": "Pronto",
-    "WAITING": "Esperando",
+    "WAITING": "Aguardando",
     "PRIORITY": "Prioridade",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira Prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID da Prioridade caso Falso",
     "VALUE": "Valor",
-    "EDIT_FAXQUEUE": "Editar fila de Fax",
+    "EDIT_FAXQUEUE": "Editar Fila de Fax",
     "EDIT_AGENT": "Editar Agente",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_NOOP": "Editar Noop",
     "EDIT_GOTOP": "Editar GotoP",
     "EDIT_GOTOIF": "Editar GotoIf",
-    "EDIT_QUEUE": "Editar fila de Fax",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_QUEUE": "Editar Fila de Fax",
+    "EDIT_CLOSE": "Editar Encerramento",
     "QUEUE": "Fila",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agente",
-    "NOTES": "Notas",
-    "CLOSEDAT": "Fechado em",
-    "DISPOSITION": "Disposição",
-    "REALTIME": "Tempo real",
-    "TEAMADD_FAXQUEUE": "Adicionar equipe à fila de fax",
-    "AGENTADD_FAXQUEUE": "Adicionar agente à fila de fax",
+    "NOTES": "Observações",
+    "CLOSEDAT": "Encerrado em",
+    "DISPOSITION": "Qualificação",
+    "REALTIME": "Tempo Real",
+    "TEAMADD_FAXQUEUE": "Adicionar Equipe à Fila de Fax",
+    "AGENTADD_FAXQUEUE": "Adicionar Agente à Fila de Fax",
     "NAME": "Nome",
     "FAXQUEUES": "Filas de Fax",
     "SEARCH_FOR_ANYONE": "Procurar",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Você deve especificar um status de pausa quando na disposição obrigatória"
     },
     "STRATEGY": "Estratégia",
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_FAXQUEUE": "Adicionar fila de Fax",
-    "DELETE_FAXQUEUE": "Excluir fila de Fax",
+    "ADD_FAXQUEUE": "Adicionar Fila de Fax",
+    "DELETE_FAXQUEUE": "Excluir Fila de Fax",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "FAXACCOUNTS": "Contas de Fax",
     "MOTIONADDRESS": "Endereço do Motion",
-    "ADD_FAXACCOUNT": "Adicionar conta de Fax",
-    "EDIT_FAXACCOUNT": "Editar conta de Fax",
-    "DELETE_FAXACCOUNT": "Excluir conta de Fax",
-    "DISPOSITIONS": "Disposições",
+    "ADD_FAXACCOUNT": "Adicionar Conta de Fax",
+    "EDIT_FAXACCOUNT": "Editar Conta de Fax",
+    "DELETE_FAXACCOUNT": "Excluir Conta de Fax",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "TRUNK": "Tronco",
-    "LOCALSTATIONID": "Identificador de Estação Local",
+    "LOCALSTATIONID": "Identificador da Estação Local",
     "HELP": {
-      "LOCALSTATIONID": "Identificador de estação local (número de telefone)",
-      "HEADERINFO": "Informações de cabeçalho de fax de saída",
-      "MODEM": "Tipo de modem (v17 / v27 / v29)",
-      "GATEWAY": "T.38 Fax Gateway, com tempo limite de atividade de fax opcional em segundos (sim / não / [tempo limite])",
-      "FAXDETECT": "Ativar a detecção de fax com tempo limite opcional em segundos (sim / t38 / cng / [tempo limite] / não)",
-      "T38TIMEOUT": "O tempo limite usado para negociação T.38 (valor mínimo = 1000)",
+      "LOCALSTATIONID": "Identificador da estação local (número de telefone)",
+      "HEADERINFO": "Informações de Header do fax de saída",
+      "MODEM": "Tipo de modem (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, com timeout de atividade opcional em segundos (yes/no/[timeout])",
+      "FAXDETECT": "Ativar a Detecção de Fax com timeout opcional em segundos (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "O timeout usado para negociação do protocolo T.38 (valor mínimo=1000)",
       "ECM": "Error Connection Mode (ECM)",
       "MINRATE": "Taxa de transferência mínima definida antes da transmissão",
-      "MAXRATE": "Taxa de transferência mínima definida antes da transmissão",
+      "MAXRATE": "Taxa de transferência máxima definida antes da transmissão",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para disposição obrigatória"
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para Qualificação obrigatória"
     },
     "ADVANCED": "Avançado",
     "ECM": "ECM",
     "MAXRATE": "Max Rate",
     "MODEM": "Modem",
     "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
+    "FAXDETECT": "Detecção de Fax",
     "T38TIMEOUT": "T.38 Timeout",
     "SIP": "Tecnologia",
-    "HEADERINFO": "Informações do cabeçalho",
+    "HEADERINFO": "Header Info",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecionar nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "FAX": "Fax",
     "ID": "Id",
-    "TIMEOUT": "Tempo esgotado",
-    "FAXDISPOSITIONS": "Disposições do Fax",
-    "NO_FAXDISPOSITION_AVAILABLE": "Nenhuma disposição de fax disponível",
-    "NEW_FAXDISPOSITION": "Nova disposição de fax",
-    "ADD_FAXDISPOSITION": "Adicionar disposição de fax",
-    "EDIT_FAXDISPOSITION": "Editar disposição de fax",
-    "DELETE_FAXDISPOSITION": "Excluir disposição de fax",
-    "NEW_FAXQUEUE": "Nova fila de Fax",
-    "NEW_FAXACCOUNT": "Nova conta de Fax",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Qualificações de Fax",
+    "NO_FAXDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Fax disponível",
+    "NEW_FAXDISPOSITION": "Nova Qualificação de Fax",
+    "ADD_FAXDISPOSITION": "Adicionar Qualificação de Fax",
+    "EDIT_FAXDISPOSITION": "Editar Qualificação de Fax",
+    "DELETE_FAXDISPOSITION": "Excluir Qualificação de Fax",
+    "NEW_FAXQUEUE": "Nova Fila de Fax",
+    "NEW_FAXACCOUNT": "Nova Conta de Fax",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "DELETE": "Excluir",
-    "KEY": "Key",
+    "KEY": "Chave",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "FILTER": "Filtro",
-    "SELECT_STATUS": "Selecione o status",
+    "SELECT_STATUS": "Selecionar o Status",
     "ALL": "Todos",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "OPENED": "Aberto",
-    "SELECT_ACCOUNT": "Selecionar conta",
+    "SELECT_ACCOUNT": "Selecionar Conta",
     "INTERACTIONS": "Interações",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "ACCOUNT": "Conta",
     "UNKNOWN": "Desconhecido",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
     "IN_USE": "Em uso",
     "VOICE": "Voz",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "TOTAL": "Total",
-    "IN": "In",
+    "IN": "Em",
     "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
+    "NO_INTERACTION_AVAILABLE": "Não há Interações disponíveis",
     "INTERACTIONS_FAXACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_FAXACCOUNT": "Adicionar agente à conta de fax",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa quando em disposição obrigatória",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_FAXACCOUNT": "Adicionar Agente à Conta de Fax",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa quando estiver em Qualificação obrigatória",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem"
index 3f58330..0871a9c 100644 (file)
@@ -1,7 +1,7 @@
 {
   "HELP": {
     "ABOUT": "Sobre",
-    "CONTACT_US": "Contate-Nos",
+    "CONTACT_US": "Fale Conosco",
     "HELP": "Ajuda",
     "USEFUL_LINKS": "Links Úteis"
   }
index 09c9339..a21210f 100644 (file)
@@ -1,30 +1,30 @@
 {
   "INTEGRATIONS": {
-    "ZONE": "Svæði",
+    "ZONE": "Zone",
     "ADVANCED": "Sértækt",
-    "MODULE_SEARCH": "Leita að módúl",
-    "MODULE_CREATE": "Stofna módúl",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
     "LEADS": "Lead",
     "CONTACTS": "CTengiliður",
-    "INTEGRATIONS": "Samþáttanir",
-    "ZENDESKACCOUNTS": "Zendesk reikningur",
-    "ID": "Auðkenni",
-    "NAME": "Nafn",
-    "USERNAME": "Notendanafn",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
     "URI": "URL",
     "BACK": "Til baka",
-    "SELECTED": "Valið",
-    "SELECT_ALL": "Veljið allt",
-    "SELECT_NONE": "Veljið nafn",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
     "EDIT_ZENDESKACCOUNT": "Breyttu Zendesk reikningi",
     "DELETE_ZENDESKACCOUNT": "Eyddu Zendesk reikningi",
-    "NEW_ZENDESKACCOUNT": "Nýr Zendesk reikningur",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
     "AUTHTYPE": "Sannvottunar aðferð",
-    "PASSWORD": "Lykilorð",
+    "PASSWORD": "Password",
     "CONFIRM_PASSWORD": "Staðfesta lykilorð",
     "EMAIL": "Netfang",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "IP tala fyrir Motion eða Proxy",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
     "DESCRIPTION": "Lysing",
     "ADD_ZENDESKACCOUNT": "Bættu við Zendesk reikningi",
     "ERRORS": {
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "TICKETTYPE": "Tiket tegund",
-      "ZONE": "Veldu landsvæði (US, AU, EU, IN, CN) til að virkja rétt lén fyrir Zoho reikninginn þinn",
-      "CLIENTID": "Sérstakt notenda auðkenni fyrir lausnina þína",
-      "CLIENTSECRET": "Sérstakt notenda lyniorð fyrir lausnina þína",
-      "CODE": "Sérstakur kóði frá forritinu",
+      "TICKETTYPE": "Ticket Type",
+      "ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
+      "CLIENTID": "The specific CLient Id of your application",
+      "CLIENTSECRET": "The specific CLientSecret of your application",
+      "CODE": "The specific code generated through Developer Console",
       "REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched.",
-      "LEADID": "Svæðis reitur til að tengja saman verkefni og Lead verkefni",
+      "LEADID": "Field name used to link Case and Lead objects",
       "ADDITIONALSEARCHACCOUNT": "Viðbótar nafna reitur, notaður til að leita að viðskiptavina símanúmeri í fyrirtækjum/reikningi",
       "ADDITIONALSEARCHCONTACT": "Viðbótar nafna reitur, notaður til að leita að viðskiptavina símanúmeri í tengiliðum",
       "ADDITIONALSEARCHLEAD": "Viðbótar reitur, notaður til að leita að viðskiptavina símanúmeri í Leads",
-      "MODERN_AUTHENTICATION": "Skiptið yfir til að virkja nútýma auðkenningu"
+      "MODERN_AUTHENTICATION": "Switch to enable Modern Authentication"
     },
-    "MODULECREATE": "Stofna modúl",
+    "MODULECREATE": "Module create",
     "CODE": "Forritunar Console lykill",
-    "REFRESHTOKEN": "Endurnýjaðu Token (sem var búið til)",
+    "REFRESHTOKEN": "Refresh Token (generated)",
     "ACCOUNT": "Reikningur",
-    "ZENDESKCONFIGURATIONS": "Zendesk stillingar",
-    "SALESFORCECONFIGURATIONS": "Salesforce Stillingar",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM stillingar",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
     "FRESHDESKCONFIGURATIONS": "Freshdesk stillingar",
     "GENERAL": "almennt",
     "CREATED_AT": "Stofnað kl.",
-    "SAVE": "Geyma",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Engin Zendesk stilling fáanleg",
-    "NEW_ZENDESKCONFIGURATION": "Ný Zendesk stilling",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
     "ADD_ZENDESKCONFIGURATION": "Bættu við Zendesk stillingum",
     "EDIT_ZENDESKCONFIGURATION": "Breyttu Zendesk stillingum",
     "DELETE_ZENDESKCONFIGURATION": "Eyddu Zendesk stillingum",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Engin Salesforce stilling fáanleg",
-    "NEW_SALESFORCECONFIGURATION": "Ný Salesforce stilling",
-    "ADD_SALESFORCECONFIGURATION": "Bættu við Salesforce Stillingum",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Bættu við Salesforce stillingum",
     "EDIT_SALESFORCECONFIGURATION": "breyttu Salesforce stillingum",
     "DELETE_SALESFORCECONFIGURATION": "Eyddu Salesforce stillingum",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Engin SugarCRM stilling fáanleg",
-    "NEW_SUGARCRMCONFIGURATION": "Ný SugarCRM stilling",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
     "ADD_SUGARCRMCONFIGURATION": "Bættu við SugarCRM stillingum",
     "EDIT_SUGARCRMCONFIGURATION": "Breyttu SugarCRM stillingum",
     "DELETE_SUGARCRMCONFIGURATION": "Eyddu SugarCRM stillingum",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Engin Freshdesk stilling fáanleg",
-    "NEW_FRESHDESKCONFIGURATION": "Ný Freshdesk stilling",
-    "ADD_FRESHDESKCONFIGURATION": "Bættu við Freshdesk Stillingum",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Bættu við Freshdesk stillingum",
     "EDIT_FRESHDESKCONFIGURATION": "Breyttu Freshdesk stillingum",
     "DELETE_FRESHDESKCONFIGURATION": "Eyddu Freshdesk stillingum",
-    "SALESFORCEACCOUNTS": "Salesforce reikningur",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
     "EDIT_SALESFORCEACCOUNT": "Breyttu Salesforce reikningi",
     "DELETE_SALESFORCEACCOUNT": "Eyddum Salesforce reikningi",
-    "NEW_SALESFORCEACCOUNT": "Nýr Salesforce reikningur",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
     "ADD_SALESFORCEACCOUNT": "Bættu við Salesforce reikningi",
     "CLIENTID": "Auðkenni notanda",
     "CLIENTSECRET": "Leyniorð notanda",
-    "SECURITYTOKEN": "Öryggis Token",
-    "SEARCH_FOR_ANYONE": "Leita",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
     "APIKEY": "Api lykill",
     "FRESHDESKACCOUNTS": "Freshdesk reikningur",
     "EDIT_FRESHDESKACCOUNT": "Breyttu Freshdesk reikningi",
     "DELETE_FRESHDESKACCOUNT": "Eyddu Freshdesk reikningi",
-    "NEW_FRESHDESKACCOUNT": "Nér Freshdesk reikningur",
-    "ADD_FRESHDESKACCOUNT": "Bættu við Freshdesk Reikningi",
-    "SUGARCRMACCOUNTS": "SugarCRM reikningur",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Bættu við Freshdesk reikningi",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
     "EDIT_SUGARCRMACCOUNT": "Breyttu SugarCRM reikningi",
     "DELETE_SUGARCRMACCOUNT": "Eyddu SugarCRM reikningi",
-    "NEW_SUGARCRMACCOUNT": "Nýr SugarCRM reikningur",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
     "ADD_SUGARCRMACCOUNT": "Bættu við SugarCRM reikningi",
     "CONFIGURATIONS": "Stillingar",
-    "NO_CONFIGURATION_AVAILABLE": "Engin stilling fáanleg",
-    "NEW_CONFIGURATION": "Nýar stillingar",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
     "ADD_CONFIGURATION": "Bættu við stillingum",
     "EDIT_CONFIGURATION": "Breyttu stillingum",
     "DELETE_CONFIGURATION": "Eyddu stillingum",
-    "SUBJECTS": "Efni",
+    "SUBJECTS": "Subjects",
     "DESCRIPTIONS": "Lysing",
     "FIELDS": "Reitir",
-    "TAGS": "Tögg",
-    "TYPE": "Tegund",
+    "TAGS": "Tags",
+    "TYPE": "Type",
     "CONTENT": "Innihald",
     "EDIT_SUBJECT": "Breyttu viðfangsefni",
     "DELETE_SUBJECT": "Eyddu viðfangsefni",
-    "NEW_SUBJECT": "Nýt viðfang",
+    "NEW_SUBJECT": "New Subject",
     "ADD_SUBJECT": "Bættu við viðfangsefni",
     "EDIT_DESCRIPTION": "Breyttu lýsingu",
     "DELETE_DESCRIPTION": "Eyddu lýsingu",
-    "NEW_DESCRIPTION": "Ný lýsing",
+    "NEW_DESCRIPTION": "New Description",
     "ADD_DESCRIPTION": "Bættu við lýsingu",
     "EDIT_FIELD": "Breyttu reit",
     "DELETE_FIELD": "Eyddu reit",
-    "NEW_FIELD": "Nýr reitur",
+    "NEW_FIELD": "New Field",
     "ADD_FIELD": "Bættu við reiti",
     "ADD": "Bæta við",
-    "VOICE": "Tal",
-    "MAIL": "Netfang",
+    "VOICE": "Voice",
+    "MAIL": "Email",
     "CHAT": "Spjall",
     "SMS": "SMS",
-    "OPENCHANNEL": "Opin rás",
-    "INBOUND_IN_QUEUE": "Innkomandi í biðr0ð",
-    "OUTBOUND_CALL": "Útfarandi símtall",
-    "VALUE": "Gildi",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
     "FIELD": "Reitur",
-    "KEY": "Lykill",
+    "KEY": "Key",
     "CHANNEL": "Rás",
     "DELETE": "Eyða",
-    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
-    "TEST_ZENDESKACCOUNT": "Prufu Zendesk reikningur",
-    "TEST_FRESHDESKACCOUNT": "Prufu Freshdesk reikningur",
-    "TEST_SUGARCRMACCOUNT": "Prufu SugerCRM reikningur",
-    "TEST_SALESFORCEACCOUNT": "Prufu Salesforce reikningur",
-    "INTEGRATION_TAB": "Samþáttunar flipi",
-    "NEW_TAB": "Nýr flipi",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
+    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
+    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
+    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
+    "INTEGRATION_TAB": "Integration Tab",
+    "NEW_TAB": "New Tab",
     "DESKACCOUNTS": "Desk reikningur",
     "EDIT_DESKACCOUNT": "Breyttu Desk reikningi",
-    "TEST_DESKACCOUNT": "Prufu Desk reikningur",
+    "TEST_DESKACCOUNT": "Test Desk Account",
     "DELETE_DESKACCOUNT": "Eyddu Desk reikningi",
     "CONSUMERKEY": "Lykill fyrir notanda",
     "CONSUMERSECRET": "Leyniorð notanda",
     "TOKENSECRET": "Token Secret",
     "ADD_DESKACCOUNT": "Bættu við reikningi fyrir Desk",
-    "NEW_DESKACCOUNT": "Nýr Desk reikningur",
+    "NEW_DESKACCOUNT": "New Desk Account",
     "ADD_DESKCONFIGURATION": "Bættu við Desk Stillingum",
-    "NEW_DESKCONFIGURATION": "Ný Desk stilling",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
     "DELETE_DESKCONFIGURATION": "Eyddu Desk stillingum",
-    "ZOHOACCOUNTS": "Zoho reikningur",
+    "ZOHOACCOUNTS": "Zoho Accounts",
     "EDIT_ZOHOACCOUNT": "Breyttu Zoho reikningi",
-    "TEST_ZOHOACCOUNT": "Prufu Zoho reikningur",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
     "DELETE_ZOHOACCOUNT": "Eyddu Zoho reikningi",
     "ADD_ZOHOACCOUNT": "Bættu við Zoho reikningi",
-    "NEW_ZOHOACCOUNT": "Nýr Zoho reikningur",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
     "ADD_ZOHOCONFIGURATION": "ABættu við Zoho stillingum",
-    "NEW_ZOHOCONFIGURATION": "Nýjar Zoho stillingar",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
     "AUTHTOKEN": "Auðkennis lykill, Token",
-    "HOST": "Hýsill",
+    "HOST": "Host",
     "DELETE_ZOHOCONFIGURATION": "Eyddu Zoho stillingum",
-    "PAGE": "Bls.",
-    "ROWSPERPAGE": "Línur á bls.",
-    "OF": "Slökt",
-    "VTIGERACCOUNTS": "vTiger reikningur",
-    "VTIGER_USER_NAME": "vTiger notenda nafn",
-    "MODULE_NAME": "vTiger módúl nafn",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
     "ACCESS_KEY": "vTiger Aðgangs lykill",
     "ADD_VTIGERACCOUNT": "Bættu við nýjum vTiger reikningi",
     "EDIT_VTIGERACCOUNT": "Breyttu vTiger reikningi",
-    "TEST_VTIGERACCOUNT": "Prufu vTiger reikningur",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
     "DELETE_VTIGERACCOUNT": "Eyddu vTiger reikningi",
-    "NEW_VTIGERACCOUNT": "Nýr vTiger reikningur",
-    "NEW_VTIGERCONFIGURATION": "Búðu til vTiger stillingar",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
     "DELETE_VTIGERCONFIGURATION": "Eyddu vTiger stillingum",
     "ADD_VTIGERCONFIGURATION": "Bættu við vTiger stillingum",
     "FRESHSALESACCOUNTS": "Freshsales reikningur",
     "EDIT_FRESHSALESACCOUNT": "Breyttu Freshsales reikningi",
     "DELETE_FRESHSALESACCOUNT": "Eyddu Freshsales reikningi",
-    "NEW_FRESHSALESACCOUNT": "Nýr Freshsales reikningur",
+    "NEW_FRESHSALESACCOUNT": "New Freshsales Account",
     "ADD_FRESHSALESACCOUNT": "Bættu við Freshsales reikningi",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Engin Freshsales stilling fáanleg",
-    "NEW_FRESHSALESCONFIGURATION": "Ný Freshsales stilling",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
+    "NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
     "ADD_FRESHSALESCONFIGURATION": "Bættu við Freshsales stillingum",
     "EDIT_FRESHSALESCONFIGURATION": "Breyttu Freshsales stillingum",
     "DELETE_FRESHSALESCONFIGURATION": "Eyddu Freshsales stillingum",
-    "TEST_FRESHSALESACCOUNT": "Prufu Freshsales reikningur",
-    "SERVICENOWACCOUNTS": "ServiceNow reikningur",
+    "TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
+    "SERVICENOWACCOUNTS": "ServiceNow Accounts",
     "ADD_SERVICENOWACCOUNT": "Bættu við nýjum ServiceNow reikningi",
     "EDIT_SERVICENOWACCOUNT": "Breyttu ServiceNow reikningi",
-    "TEST_SERVICENOWACCOUNT": "Prufu ServiceNow reikningur",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
     "DELETE_SERVICENOWACCOUNT": "Eyddu ServiceNow reikningi",
-    "NEW_SERVICENOWACCOUNT": "Nýr ServiceNow reikningur",
-    "NEW_SERVICENOWCONFIGURATION": "Búðu til Create ServiceNow stillingu",
+    "NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
+    "NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
     "DELETE_SERVICENOWCONFIGURATION": "Eyddu ServiceNow stillingum",
     "ADD_SERVICENOWCONFIGURATION": "Bættu við ServiceNow stillingum",
     "DYNAMICS365ACCOUNTS": "Dynamics365 reikningur",
-    "TENANTID": "Auðkenni notanda",
-    "ADD_DYNAMICS365ACCOUNT": "Bættu við nýjum Dynamics365 Reikningi",
+    "TENANTID": "Tenant Id",
+    "ADD_DYNAMICS365ACCOUNT": "Bættu við nýjum Dynamics365 reikningi",
     "EDIT_DYNAMICS365ACCOUNT": "Breyttu Dynamics365 reikningi",
-    "TEST_DYNAMICS365ACCOUNT": "Prufu Dynamics365 reikningur",
+    "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
     "DELETE_DYNAMICS365ACCOUNT": "Eyddu Dynamics365 reikningi",
-    "NEW_DYNAMICS365ACCOUNT": "Nýr Dynamics365 reikningur",
-    "NEW_DYNAMICS365CONFIGURATION": "Búðu til Dynamics365 stillingar",
+    "NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
+    "NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
     "DELETE_DYNAMICS365CONFIGURATION": "Eyddu Dynamics365 stillingum",
-    "ADD_DYNAMICS365CONFIGURATION": "Bættu við Dynamics365 Stillingum",
-    "TICKETTYPE": "Tiket tegund",
+    "ADD_DYNAMICS365CONFIGURATION": "Bættu við Dynamics365 stillingum",
+    "TICKETTYPE": "Ticket Type",
     "CASE": "Mál",
-    "LEADID": "Lead Auðkenni",
+    "LEADID": "Lead Id",
     "ADDITIONALSEARCHACCOUNT": "Viðbótar leitar reikningur",
     "ADDITIONALSEARCHCONTACT": "Viðbótar leitar tengiliður",
     "ADDITIONALSEARCHLEAD": "Viðbótar leitar Lead",
-    "PHONECALL": "Símtal",
-    "TASK": "Verkefni",
+    "PHONECALL": "Phonecall",
+    "TASK": "Task",
     "DYNAMIC365CONTACT": "Tengiliður",
     "DYNAMIC365NOTHING": "Ekkert",
-    "MODERN_AUTHENTICATION": "Nútíma auðkenning",
-    "OPENNEWTAB": "Opnaðu nýjan flipa"
+    "MODERN_AUTHENTICATION": "Modern Authentication",
+    "OPENNEWTAB": "Open new tab"
   }
 }
index 156770a..8179941 100644 (file)
@@ -1,10 +1,10 @@
 {
   "INTEGRATIONS": {
     "ADVANCED": "Avançado",
-    "MODULE_SEARCH": "Pesquisar Módulo",
+    "MODULE_SEARCH": "Módulo de Pesquisa",
     "MODULE_CREATE": "Módulo Criado",
     "INTEGRATIONS": "Integrações",
-    "ZENDESKACCOUNTS": "Contas Zendesk",
+    "ZENDESKACCOUNTS": "Contas do Zendesk",
     "ID": "Id",
     "NAME": "Nome",
     "USERNAME": "Usuário",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Tudo",
     "SELECT_NONE": "Selecionar Nenhum",
-    "EDIT_ZENDESKACCOUNT": "Editar Conta Zendesk",
-    "DELETE_ZENDESKACCOUNT": "Excluir Conta Zendesk",
-    "NEW_ZENDESKACCOUNT": "Nova Conta Zendesk",
+    "EDIT_ZENDESKACCOUNT": "Editar Conta do Zendesk",
+    "DELETE_ZENDESKACCOUNT": "Excluir Conta do Zendesk",
+    "NEW_ZENDESKACCOUNT": "Nova Conta do Zendesk",
     "AUTHTYPE": "Tipo de Autenticação",
     "PASSWORD": "Senha",
-    "CONFIRM_PASSWORD": "Confirme Senha",
+    "CONFIRM_PASSWORD": "Confirmação de Senha",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Endereço IP Motion ou Proxy",
+    "MOTIONPROXYADDRESS": "Endereço IP do Motion ou Proxy",
     "DESCRIPTION": "Descrição",
-    "ADD_ZENDESKACCOUNT": "Adicionar Conta Zendesk",
+    "ADD_ZENDESKACCOUNT": "Adicionar Conta do Zendesk",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
       "USERNAME_REQUIRED": "Campo obrigatório",
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: é necessario se quiser utilizar o ticket body com Recording URL. Entre com o endereço no seguinte formato: <protocol> : //<ipaddress>[:<port>]. Exemplo: https://X.Y.Z.W",
-      "TICKETTYPE": "Tipo Ticket",
-      "CLIENTID": "O ID do cliente específico do seu aplicativo",
-      "CLIENTSECRET": "O CLientSecret específico do seu aplicativo",
-      "CODE": "O código específico gerado pelo Developer Console",
-      "REFRESHTOKEN": "O token de atualização gerado automaticamente e usado para atualizar os tokens de acesso expirados. Além disso, o token de acesso é gerado automaticamente toda vez que uma API é iniciada.",
+      "TICKETTYPE": "Tipo do Ticket",
+      "CLIENTID": "O ID do Cliente de sua aplicação",
+      "CLIENTSECRET": "O ClientSecret específico de sua aplicação",
+      "CODE": "O código gerado pelo Developer Console",
+      "REFRESHTOKEN": "O token de acesso gerado automaticamente para atualizar os tokens de acessos expirados. Além disso, este token de acesso é atualizado automaticamente toda vez que uma API é iniciada.",
       "ZONE": "Escolha sua zona geográfica (EUA, AU, UE, IN, CN) para ativar o domain-specific da conta Zoho",
-      "ADDITIONALSEARCHACCOUNT": "Nome de campo adicional usado para pesquisar o número de telefone do cliente em contas",
-      "ADDITIONALSEARCHCONTACT": "Nome de campo adicional usado para pesquisar o número de telefone do cliente em Contatos",
-      "ADDITIONALSEARCHLEAD": "Nome de campo adicional usado para pesquisar o número de telefone do cliente no Leads",
-      "LEADID": "Nome do campo usado para vincular objetos Caso e Lead",
+      "ADDITIONALSEARCHACCOUNT": "Nome de campo adicional usado para pesquisar o telefone do cliente em Contas",
+      "ADDITIONALSEARCHCONTACT": "Nome de campo adicional usado para pesquisar o telefone do cliente em Contatos",
+      "ADDITIONALSEARCHLEAD": "Nome de campo adicional usado para pesquisar o telefone do cliente no Leads",
+      "LEADID": "Nome do campo usado para vincular objetos Case e Lead",
       "MODERN_AUTHENTICATION": "Alterne para habilitar a autenticação moderna"
     },
     "ACCOUNT": "Conta",
-    "ZENDESKCONFIGURATIONS": "Configurações Zendesk",
-    "SALESFORCECONFIGURATIONS": "Configurações Salesforce",
-    "SUGARCRMCONFIGURATIONS": "Configurações SugarCRM",
-    "FRESHDESKCONFIGURATIONS": "Configurações Freshdesk",
+    "ZENDESKCONFIGURATIONS": "Configurações do Zendesk",
+    "SALESFORCECONFIGURATIONS": "Configurações do Salesforce",
+    "SUGARCRMCONFIGURATIONS": "Configurações do SugarCRM",
+    "FRESHDESKCONFIGURATIONS": "Configurações do Freshdesk",
     "GENERAL": "Geral",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "NO_ZENDESKCONFIGURATION_AVAILABLE": "Nenhuma configuração do Zendesk disponível",
-    "NEW_ZENDESKCONFIGURATION": "Nova Configuração Zendesk",
-    "ADD_ZENDESKCONFIGURATION": "Adicionar Configuração Zendesk",
-    "EDIT_ZENDESKCONFIGURATION": "Editar Configuração Zendesk",
-    "DELETE_ZENDESKCONFIGURATION": "Excluir Configuração Zendesk",
+    "NEW_ZENDESKCONFIGURATION": "Nova Configuração do Zendesk",
+    "ADD_ZENDESKCONFIGURATION": "Adicionar Configuração do Zendesk",
+    "EDIT_ZENDESKCONFIGURATION": "Editar Configuração do Zendesk",
+    "DELETE_ZENDESKCONFIGURATION": "Excluir Configuração do Zendesk",
     "NO_SALESFORCECONFIGURATION_AVAILABLE": "Nenhuma configuração do Salesforce disponível",
-    "NEW_SALESFORCECONFIGURATION": "Nova Configuração Salesforce",
-    "ADD_SALESFORCECONFIGURATION": "Adicionar Configuração Salesforce",
-    "EDIT_SALESFORCECONFIGURATION": "Editar Configuração Salesforce",
-    "DELETE_SALESFORCECONFIGURATION": "Excluir Configuração Salesforce",
+    "NEW_SALESFORCECONFIGURATION": "Nova Configuração do Salesforce",
+    "ADD_SALESFORCECONFIGURATION": "Adicionar Configuração do Salesforce",
+    "EDIT_SALESFORCECONFIGURATION": "Editar Configuração do Salesforce",
+    "DELETE_SALESFORCECONFIGURATION": "Excluir Configuração do Salesforce",
     "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nenhuma configuração do SugarCRM disponível",
-    "NEW_SUGARCRMCONFIGURATION": "Nova Configuração SugarCRM",
-    "ADD_SUGARCRMCONFIGURATION": "Adicionar Configuração SugarCRM",
-    "EDIT_SUGARCRMCONFIGURATION": "Editar Configuração SugarCRM",
-    "DELETE_SUGARCRMCONFIGURATION": "Excluir Configuração SugarCRM",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Não há configurações Freshdesk disponíveis",
-    "NEW_FRESHDESKCONFIGURATION": "Nova Configuração Freshdesk",
-    "ADD_FRESHDESKCONFIGURATION": "Adicionar Configuração Freshdesk",
-    "EDIT_FRESHDESKCONFIGURATION": "Editar Configuração Freshdesk",
-    "DELETE_FRESHDESKCONFIGURATION": "Excluir Configuração Freshdesk",
-    "SALESFORCEACCOUNTS": "Contas Salesforce",
-    "EDIT_SALESFORCEACCOUNT": "Editar Conta Salesforce",
-    "DELETE_SALESFORCEACCOUNT": "Excluir Conta Salesforce",
-    "NEW_SALESFORCEACCOUNT": "Nova Conta Salesforce",
-    "ADD_SALESFORCEACCOUNT": "Adicionar Conta Salesforce",
+    "NEW_SUGARCRMCONFIGURATION": "Nova Configuração do SugarCRM",
+    "ADD_SUGARCRMCONFIGURATION": "Adicionar Configuração do SugarCRM",
+    "EDIT_SUGARCRMCONFIGURATION": "Editar Configuração do SugarCRM",
+    "DELETE_SUGARCRMCONFIGURATION": "Excluir Configuração do SugarCRM",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Não há configurações do Freshdesk disponíveis",
+    "NEW_FRESHDESKCONFIGURATION": "Nova Configuração do Freshdesk",
+    "ADD_FRESHDESKCONFIGURATION": "Adicionar Configuração do Freshdesk",
+    "EDIT_FRESHDESKCONFIGURATION": "Editar Configuração do Freshdesk",
+    "DELETE_FRESHDESKCONFIGURATION": "Excluir Configuração do Freshdesk",
+    "SALESFORCEACCOUNTS": "Contas do Salesforce",
+    "EDIT_SALESFORCEACCOUNT": "Editar Conta do Salesforce",
+    "DELETE_SALESFORCEACCOUNT": "Excluir Conta do Salesforce",
+    "NEW_SALESFORCEACCOUNT": "Nova Conta do Salesforce",
+    "ADD_SALESFORCEACCOUNT": "Adicionar Conta do Salesforce",
     "CLIENTID": "ID do Cliente",
     "CLIENTSECRET": "Senha do Cliente",
     "SECURITYTOKEN": "Token Segurança",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Contas Freshdesk",
-    "EDIT_FRESHDESKACCOUNT": "Editar Conta Freshdesk",
-    "DELETE_FRESHDESKACCOUNT": "Excluir Conta Freshdesk",
-    "NEW_FRESHDESKACCOUNT": "Nova Conta Freshdesk",
-    "ADD_FRESHDESKACCOUNT": "Adicionar Conta Freshdesk",
-    "SUGARCRMACCOUNTS": "Contas SugarCRM",
-    "EDIT_SUGARCRMACCOUNT": "Editar Conta SugarCRM",
-    "DELETE_SUGARCRMACCOUNT": "Excluir Conta Freshdesk",
-    "NEW_SUGARCRMACCOUNT": "Nova Conta SugarCRM",
-    "ADD_SUGARCRMACCOUNT": "Adicionar Conta SugarCRM",
+    "APIKEY": "Chave API",
+    "FRESHDESKACCOUNTS": "Contas do Freshdesk",
+    "EDIT_FRESHDESKACCOUNT": "Editar Conta do Freshdesk",
+    "DELETE_FRESHDESKACCOUNT": "Excluir Conta do Freshdesk",
+    "NEW_FRESHDESKACCOUNT": "Nova Conta do Freshdesk",
+    "ADD_FRESHDESKACCOUNT": "Adicionar Conta do Freshdesk",
+    "SUGARCRMACCOUNTS": "Contas do SugarCRM",
+    "EDIT_SUGARCRMACCOUNT": "Editar Conta do SugarCRM",
+    "DELETE_SUGARCRMACCOUNT": "Excluir Conta do Freshdesk",
+    "NEW_SUGARCRMACCOUNT": "Nova Conta do SugarCRM",
+    "ADD_SUGARCRMACCOUNT": "Adicionar Conta do SugarCRM",
     "CONFIGURATIONS": "Configurações",
-    "NO_CONFIGURATION_AVAILABLE": "Nenhuma Configuração Disponível",
+    "NO_CONFIGURATION_AVAILABLE": "Nenhuma Configuração disponível",
     "NEW_CONFIGURATION": "Nova Configuração",
     "ADD_CONFIGURATION": "Adicionar Configuração",
     "EDIT_CONFIGURATION": "Editar Configuração",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "INBOUND_IN_QUEUE": "Entrada na Fila",
-    "OUTBOUND_CALL": "Outbound Call",
+    "OUTBOUND_CALL": "Chamada de Saída",
     "VALUE": "Valor",
     "FIELD": "Campo",
     "KEY": "Key",
     "CHANNEL": "Canal",
     "DELETE": "Excluir",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
-    "TEST_ZENDESKACCOUNT": "Testar Conta Zendesk",
-    "TEST_FRESHDESKACCOUNT": "Testar Conta Freshdesk",
-    "TEST_SUGARCRMACCOUNT": "Testar Conta SugerCRM",
-    "TEST_SALESFORCEACCOUNT": "Testar Conta Salesforce",
-    "INTEGRATION_TAB": "Guia Integração",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "TEST_ZENDESKACCOUNT": "Testar Conta do Zendesk",
+    "TEST_FRESHDESKACCOUNT": "Testar Conta do Freshdesk",
+    "TEST_SUGARCRMACCOUNT": "Testar Conta do SugerCRM",
+    "TEST_SALESFORCEACCOUNT": "Testar Conta do Salesforce",
+    "INTEGRATION_TAB": "Aba da Integração",
     "NEW_TAB": "Nova Aba",
-    "DESKACCOUNTS": "Contas Desk",
-    "EDIT_DESKACCOUNT": "Editar Conta Desk",
-    "TEST_DESKACCOUNT": "Contas Desk",
-    "DELETE_DESKACCOUNT": "Excluir conta Desk",
+    "DESKACCOUNTS": "Contas do Desk",
+    "EDIT_DESKACCOUNT": "Editar Conta do Desk",
+    "TEST_DESKACCOUNT": "Testar Conta do Desk",
+    "DELETE_DESKACCOUNT": "Excluir Conta do Desk",
     "CONSUMERKEY": "Chave do Consumidor",
     "CONSUMERSECRET": "Senha do Consumidor",
     "TOKENSECRET": "Senha do Token",
-    "ADD_DESKACCOUNT": "Adicionar Conta Desk",
-    "NEW_DESKACCOUNT": "Nova Conta Desk",
-    "ADD_DESKCONFIGURATION": "Adicionar Configuração Desk",
-    "NEW_DESKCONFIGURATION": "Nova Configuração Desk",
-    "DELETE_DESKCONFIGURATION": "Excluir configuração Desk",
-    "ZOHOACCOUNTS": "Contas Zoho",
-    "EDIT_ZOHOACCOUNT": "Editar Conta Zoho",
-    "TEST_ZOHOACCOUNT": "Testar Conta Zoho",
-    "DELETE_ZOHOACCOUNT": "Excluir Conta Zoho",
-    "ADD_ZOHOACCOUNT": "Adicionar Conta Zoho",
-    "NEW_ZOHOACCOUNT": "Nova Conta Zoho",
-    "ADD_ZOHOCONFIGURATION": "Adicionar Configuração Zoho",
-    "NEW_ZOHOCONFIGURATION": "Nova Configuração Zoho",
+    "ADD_DESKACCOUNT": "Adicionar Conta do Desk",
+    "NEW_DESKACCOUNT": "Nova Conta do Desk",
+    "ADD_DESKCONFIGURATION": "Adicionar Configuração do Desk",
+    "NEW_DESKCONFIGURATION": "Nova Configuração do Desk",
+    "DELETE_DESKCONFIGURATION": "Excluir Configuração do Desk",
+    "ZOHOACCOUNTS": "Contas do Zoho",
+    "EDIT_ZOHOACCOUNT": "Editar Conta do Zoho",
+    "TEST_ZOHOACCOUNT": "Testar Conta do Zoho",
+    "DELETE_ZOHOACCOUNT": "Excluir Conta do Zoho",
+    "ADD_ZOHOACCOUNT": "Adicionar Conta do Zoho",
+    "NEW_ZOHOACCOUNT": "Nova Conta do Zoho",
+    "ADD_ZOHOCONFIGURATION": "Adicionar Configuração do Zoho",
+    "NEW_ZOHOCONFIGURATION": "Nova Configuração do Zoho",
     "AUTHTOKEN": "Token de Autorização",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Excluir Configuração Zoho",
+    "DELETE_ZOHOCONFIGURATION": "Excluir Configuração do Zoho",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por Página",
     "OF": "do",
-    "VTIGERACCOUNTS": "Contas vTiger",
-    "VTIGER_USER_NAME": "Nome do Usuário vTiger",
+    "VTIGERACCOUNTS": "Contas do vTiger",
+    "VTIGER_USER_NAME": "Nome do Usuário do vTiger",
     "MODULE_NAME": "Nome do Módulo vTiger",
-    "ACCESS_KEY": "Chave de Acesso vTiger",
-    "ADD_VTIGERACCOUNT": "Adicionar Conta vTiger",
-    "EDIT_VTIGERACCOUNT": "Editar Conta vTiger",
-    "TEST_VTIGERACCOUNT": "Testar Conta vTiger",
-    "DELETE_VTIGERACCOUNT": "Excluir Conta vTiger",
-    "NEW_VTIGERACCOUNT": "Nova Conta vTiger",
-    "NEW_VTIGERCONFIGURATION": "Criar Configuração vTiger",
-    "DELETE_VTIGERCONFIGURATION": "Excluir Configuração vTiger",
-    "ADD_VTIGERCONFIGURATION": "Adicionar Configuração vTiger",
-    "ADD_DYNAMICS365ACCOUNT": "Adicionar Conta Dynamics365",
-    "ADD_DYNAMICS365CONFIGURATION": "Adicionar Configuração Dynamics365",
+    "ACCESS_KEY": "Chave de Acesso do vTiger",
+    "ADD_VTIGERACCOUNT": "Adicionar Conta do vTiger",
+    "EDIT_VTIGERACCOUNT": "Editar Conta do vTiger",
+    "TEST_VTIGERACCOUNT": "Testar Conta do vTiger",
+    "DELETE_VTIGERACCOUNT": "Excluir Conta do vTiger",
+    "NEW_VTIGERACCOUNT": "Nova Conta do vTiger",
+    "NEW_VTIGERCONFIGURATION": "Criar Configuração do vTiger",
+    "DELETE_VTIGERCONFIGURATION": "Excluir Configuração do vTiger",
+    "ADD_VTIGERCONFIGURATION": "Adicionar Configuração do vTiger",
+    "ADD_DYNAMICS365ACCOUNT": "Adicionar Conta do Dynamics365",
+    "ADD_DYNAMICS365CONFIGURATION": "Adicionar Configuração do Dynamics365",
     "CASE": "Case",
-    "DELETE_DYNAMICS365ACCOUNT": "Excluir Conta Dynamics365",
-    "DELETE_DYNAMICS365CONFIGURATION": "Excluir Configuração Dynamics365",
-    "DYNAMICS365ACCOUNTS": "Contas Dynamics365",
-    "EDIT_DYNAMICS365ACCOUNT": "Editar Conta Dynamics365",
-    "NEW_DYNAMICS365ACCOUNT": "Nova Conta Dynamics365",
-    "NEW_DYNAMICS365CONFIGURATION": "Criar Configuração Dynamics365",
-    "PHONECALL": "Chamada telefônica",
+    "DELETE_DYNAMICS365ACCOUNT": "Excluir Conta do Dynamics365",
+    "DELETE_DYNAMICS365CONFIGURATION": "Excluir Configuração do Dynamics365",
+    "DYNAMICS365ACCOUNTS": "Contas do Dynamics365",
+    "EDIT_DYNAMICS365ACCOUNT": "Editar Conta do Dynamics365",
+    "NEW_DYNAMICS365ACCOUNT": "Nova Conta do Dynamics365",
+    "NEW_DYNAMICS365CONFIGURATION": "Criar Configuração do Dynamics365",
+    "PHONECALL": "Phonecall",
     "TENANTID": "Tenant ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testar Conta Dynamics365",
+    "TEST_DYNAMICS365ACCOUNT": "Testar Conta do Dynamics365",
     "TICKETTYPE": "Tipo de Ticket",
-    "ADD_SERVICENOWACCOUNT": "Adicionar Conta ServiceNow",
-    "ADD_SERVICENOWCONFIGURATION": "Adicionar Configuração ServiceNow",
-    "DELETE_SERVICENOWACCOUNT": "Excluir Conta ServiceNow",
-    "DELETE_SERVICENOWCONFIGURATION": "Excluir Configuração ServiceNow",
-    "EDIT_SERVICENOWACCOUNT": "Editar Conta ServiceNow",
+    "ADD_SERVICENOWACCOUNT": "Adicionar Conta do ServiceNow",
+    "ADD_SERVICENOWCONFIGURATION": "Adicionar Configuração do ServiceNow",
+    "DELETE_SERVICENOWACCOUNT": "Excluir Conta do ServiceNow",
+    "DELETE_SERVICENOWCONFIGURATION": "Excluir Configuração do ServiceNow",
+    "EDIT_SERVICENOWACCOUNT": "Editar Conta do ServiceNow",
     "EMAIL": "Email",
-    "NEW_SERVICENOWACCOUNT": "Nova Conta ServiceNow",
-    "NEW_SERVICENOWCONFIGURATION": "Nova Configuração ServiceNow",
-    "SERVICENOWACCOUNTS": "Contas ServiceNow",
-    "TEST_SERVICENOWACCOUNT": "Testar Conta ServiceNow",
+    "NEW_SERVICENOWACCOUNT": "Nova Conta do ServiceNow",
+    "NEW_SERVICENOWCONFIGURATION": "Nova Configuração do ServiceNow",
+    "SERVICENOWACCOUNTS": "Contas do ServiceNow",
+    "TEST_SERVICENOWACCOUNT": "Testar Conta do ServiceNow",
     "TASK": "Tarefa",
     "CODE": "Developer Console Code",
     "REFRESHTOKEN": "Atualizar Token (gerado)",
     "ZONE": "Zona",
     "CONTACTS": "Contato",
     "LEADS": "Lead",
-    "MODULECREATE": "Criar Módulo",
-    "ADD_FRESHSALESACCOUNT": "Adicionar Conta Freshsales",
-    "ADD_FRESHSALESCONFIGURATION": "Adicionar Configuração Freshsales",
-    "DELETE_FRESHSALESACCOUNT": "Excluir Conta Freshsales",
-    "DELETE_FRESHSALESCONFIGURATION": "Excluir configuração Freshsales",
-    "EDIT_FRESHSALESACCOUNT": "Editar Conta Freshsales",
-    "EDIT_FRESHSALESCONFIGURATION": "Editar Configuração Freshsales",
-    "FRESHSALESACCOUNTS": "Contas Freshsales",
-    "NEW_FRESHSALESACCOUNT": "Nova Conta Freshsales",
-    "NEW_FRESHSALESCONFIGURATION": "Nova Configuração Freshsales",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração de Freshsales disponível",
-    "TEST_FRESHSALESACCOUNT": "Testar Conta Freshsales",
-    "ADDITIONALSEARCHACCOUNT": "Conta de Pesquisa Adicional",
-    "ADDITIONALSEARCHCONTACT": "Contato de Pesquisa Adicional",
-    "ADDITIONALSEARCHLEAD": "Lead de Pesquisa Adicional",
+    "MODULECREATE": "Módulo criado",
+    "ADD_FRESHSALESACCOUNT": "Adicionar Conta do Freshsales",
+    "ADD_FRESHSALESCONFIGURATION": "Adicionar Configuração do Freshsales",
+    "DELETE_FRESHSALESACCOUNT": "Excluir Conta do Freshsales",
+    "DELETE_FRESHSALESCONFIGURATION": "Excluir Configuração do Freshsales",
+    "EDIT_FRESHSALESACCOUNT": "Editar Conta do Freshsales",
+    "EDIT_FRESHSALESCONFIGURATION": "Editar Configuração do Freshsales",
+    "FRESHSALESACCOUNTS": "Contas do Freshsales",
+    "NEW_FRESHSALESACCOUNT": "Nova Conta do Freshsales",
+    "NEW_FRESHSALESCONFIGURATION": "Nova Configuração do Freshsales",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração do Freshsales disponível",
+    "TEST_FRESHSALESACCOUNT": "Testar Conta do Freshsales",
+    "ADDITIONALSEARCHACCOUNT": "Conta Adicional de Pesquisa",
+    "ADDITIONALSEARCHCONTACT": "Contato Adicional de Pesquisa ",
+    "ADDITIONALSEARCHLEAD": "Lead Adicional de Pesquisa",
     "LEADID": "Lead ID",
     "DYNAMIC365CONTACT": "Contato",
     "DYNAMIC365NOTHING": "Nothing",
     "MODERN_AUTHENTICATION": "Autenticação Moderna",
-    "OPENNEWTAB": "Abrir Nova Aba"
+    "OPENNEWTAB": "Abrir nova Aba"
   }
 }
index 6221f63..9ffbf6b 100644 (file)
@@ -2,11 +2,11 @@
   "JSCRIPTY": {
     "CLONE_PROJECT": "Afrita verkefni",
     "NAME": "Nafn",
-    "SEARCH_FOR_ANYONE": "Search",
+    "SEARCH_FOR_ANYONE": "Leita",
     "BACK": "Til baka",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja alla",
+    "SELECT_NONE": "Veldu ekkert",
     "DESCRIPTION": "Lýsing",
     "ERRORS": {
       "NAME_REQUIRED": "Skilyrtur reitur",
@@ -25,7 +25,7 @@
     "CREATED_AT": "Búið til kl.",
     "NEW_PROJECT": "Nýtt verkefni",
     "EDIT": "Breyta",
-    "SETTINGS": "Settings",
+    "SETTINGS": "Stillingar",
     "GENERAL": "almennt",
     "BUILDER": "Byggja",
     "PREVIEW": "Forskoðun",
       "SENDUNPAUSEONSUBMIT": "Við lok könnunarinnar, taka af sjálfvirkt af hlé fulltrúans"
     },
     "PAGE": "Bls.",
-    "ROWSPERPAGE": "Rows per page",
+    "ROWSPERPAGE": "Raðir á síðu",
     "OF": "af",
     "JSCRIPTYSESSIONS": "Verkefna hluti",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Lotur",
     "STARTTIME": "Upphafs tími",
     "ENDTIME": "Loka tími",
     "MEMBERNAME": "Nafn á meðlimi",
     "CALLERIDNUM": "Uppkallsnúmer",
     "NO_SESSION_AVAILABLE": "Engin verkhluti tiltækur",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "SESSION_RESULTS": "Niðurstöður lotu",
+    "SHOW_QUESTIONS_SESSION": "Sýna niðurstöður lotu",
     "ANSWERS": "Svarað",
     "NO_RESULTS_AVAILABLE": "Engin niðurstaða tiltæk",
     "TOTAL": "Samtals",
     "EXPORT_TO_CSV": "Flytja út sem CSV skrá",
     "NO_ANSWERS_AVAILABLE": "Ekkert svar tiltækt",
     "DELETE_SESSION": "Eyða verki",
-    "RESET_SESSION": "Reset Session",
+    "RESET_SESSION": "Endurstilla lotu",
     "YES": "Já",
     "NO": "Nei",
     "DO_YOU_WANT_TO_RESET_SESSION": "Viltu endurstilla verkið?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Öll svör í könnuninni munu tapast!",
     "ENABLEUNCOMPLETESAVE": "Leyfa ekki kláraða vistun",
     "SUBMIT": "Sendið",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "PROJECT_NOT_AVAILABLE": "Verkefni er ekki tiltækt. Hafið samband við stjórnanda. ",
     "COMPLETE": "Klárað",
-    "SESSIONS_PROJECT": "Go to Sessions"
+    "SESSIONS_PROJECT": "Fara í lotur"
   },
   "mwForm": {
     "form": {
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Síða {{síða}} of {{allarsíður}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tóm síða"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "Nefnd (named)",
+      "name": "Nafn síðu"
     },
     "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": "Eftir síðu {{síða}}:",
+      "afterQuestionAnswer": "Fara á síðu byggt á svari",
+      "goToPage": "Fara á síðu {{síða.númer}}",
+      "goToNextPage": "Halda áfram á næstu síðu ",
+      "submitForm": "Senda inn eyðublað (Submit form)"
     },
     "elements": {
       "question": "Spurning",
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Stuttur texti"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Langur texti"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Útvarp"
         },
         "select": {
-          "name": "Select"
+          "name": "Velja"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Gáttakassi - Checkboxes"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Hnitanet"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Forgangsröðun"
         },
         "division": {
-          "name": "Division"
+          "name": "Deild"
         },
         "number": {
-          "name": "Number"
+          "name": "Númer"
         },
         "date": {
-          "name": "Date"
+          "name": "Dagsetning"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Tími dagsetningu"
         },
         "time": {
-          "name": "Time"
+          "name": "Tími"
         },
         "email": {
-          "name": "Email"
+          "name": "Tölvupóstfang"
         },
         "range": {
-          "name": "Range"
+          "name": "Svið"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Spurningartexti",
+      "type": "Tegund spurningar",
+      "required": "Nauðsynlegt",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Stuttur svartexti ",
+        "textarea": "Langur svartexti",
+        "otherAnswer": "Annað"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Magn",
+        "unit": "Merki einingar - Unit label",
+        "assignedSumLabel": "Úthlutað ",
+        "fromRequiredLabel": "Frá nauðsynlegum - from required"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Flokkað",
+        "available": "Aðgengilegt",
+        "clickToAddItem": "Smelltu til að bæta við hlut"
       },
       "grid": {
         "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "radio": "Útvarp",
+          "checkbox": "Gáttakassi - Checkbox",
+          "text": "Texti",
+          "number": "Númer",
+          "date": "Dagsetning",
+          "time": "Tími"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Röð {{röð}}",
+        "clickToAddRow": "Smelltu til að bæta við röð ",
+        "columnLabel": "Dálkur {{dal}}",
+        "clickToAddColumn": "Smelltu til að bæta við dálk"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Svið frá - Range from",
+        "to": "til"
       },
       "number": {
-        "min": "Min",
-        "max": "Max"
+        "min": "Lágmark",
+        "max": "Hámark"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "Eða",
+      "otherLabel": "Annað: ",
+      "userAnswer": "Svar notenda",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Smelltu til að bæta við valkosti",
+        "addOther": "Bæta við 'Annað'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Velja mynd",
+      "caption": "Myndatexti"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Færa inn málsgreinartexta (Enter paragraph text)"
     },
     "confirmationPage": {
-      "title": "Samþyktar síða",
+      "title": "Samþykktar síða",
       "customMessage": "Sérsniðin samþykktar skilaboð",
       "defaultMessage": "Viðbrögð þín hafa verið vistuð",
       "errorMessage": "Villa! Viðbrögð þín hafa ekki verið vistuð",
index a39d9fd..94109b1 100644 (file)
@@ -1,12 +1,12 @@
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Projeto Clone",
+    "CLONE_PROJECT": "Clonar Projeto",
     "NAME": "Nome",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "DESCRIPTION": "Descrição",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
     "NEW_PROJECT": "Novo Projeto",
     "EDIT": "Editar",
     "SETTINGS": "Configurações",
-    "GENERAL": "Feral",
+    "GENERAL": "Geral",
     "BUILDER": "Builder",
     "PREVIEW": "Visualizar",
-    "OPEN_CONTACT": "Contato aberto",
+    "OPEN_CONTACT": "Contato Aberto",
     "HELP": {
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "ENABLEUNCOMPLETESAVE": "Permitir salvar a sessão do agente, mesmo que a pesquisa não esteja completa",
+      "ENABLEUNCOMPLETESAVE": "Permite salvar a sessão do agente, mesmo que a pesquisa não esteja completa",
       "SENDUNPAUSEONSUBMIT": "No final da pesquisa, interrompa automaticamente a pausa do agente"
     },
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "JSCRIPTYSESSIONS": "Sessões de Projetos",
+    "JSCRIPTYSESSIONS": "Sessões do Projeto",
     "SESSIONS": "Sessões",
-    "STARTTIME": "Hora de início",
-    "ENDTIME": "Hora final",
-    "MEMBERNAME": "Nome do membro",
-    "CALLERIDNUM": "Número do chamador",
+    "STARTTIME": "Hora de Início",
+    "ENDTIME": "Hora do Término",
+    "MEMBERNAME": "Nome do Agente",
+    "CALLERIDNUM": "Caller Number",
     "NO_SESSION_AVAILABLE": "Nenhuma sessão disponível",
-    "SESSION_RESULTS": "Resultados da Sessão",
-    "SHOW_QUESTIONS_SESSION": "Mostrar resultados da sessão",
-    "ANSWERS": "Respostas",
+    "SESSION_RESULTS": "Resultados das Sessões",
+    "SHOW_QUESTIONS_SESSION": "Mostrar Resultados da Sessão",
+    "ANSWERS": "Atendidas",
     "NO_RESULTS_AVAILABLE": "Nenhum resultado disponível",
     "TOTAL": "Total",
-    "ANSWER": "Responda",
+    "ANSWER": "Atendida",
     "EXPORT_TO_CSV": "Exportar para CSV",
     "NO_ANSWERS_AVAILABLE": "Nenhuma resposta disponível",
-    "DELETE_SESSION": "Excluir sessão",
-    "RESET_SESSION": "Redefinir Sessão",
+    "DELETE_SESSION": "Excluir Sessão",
+    "RESET_SESSION": "Reset da Sessão",
     "YES": "Sim",
     "NO": "Não",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Você deseja redefinir a sessão?",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Deseja reiniciar a sessão?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Todas as respostas da pesquisa serão perdidas!",
-    "ENABLEUNCOMPLETESAVE": "Ativar gravação incompleta",
+    "ENABLEUNCOMPLETESAVE": "Habilitar salvar incompleto",
     "SUBMIT": "Enviar",
     "PROJECT_NOT_AVAILABLE": "Projeto não está disponível. Por favor entre em contato com o administrador",
     "COMPLETE": "Completo",
@@ -73,9 +73,9 @@
       "description": "Descrição"
     },
     "buttons": {
-      "addPage": "Adicionar Página",
+      "addPage": "Adicionar página",
       "moveDown": "Mover para baixo",
-      "moveUp": "Subir",
+      "moveUp": "Mover para cima",
       "removePage": "Remover página",
       "remove": "Remover",
       "addElement": "Adicionar elemento",
       "back": "Voltar",
       "submit": "Enviar",
       "begin": "Começar",
-      "fold": "Dobro",
+      "fold": "Dobrar",
       "unfold": "Desdobrar",
       "edit": "Editar",
-      "clone": "Clone",
-      "view": "Visão"
+      "clone": "Clonar",
+      "view": "Visualizar"
     },
     "page": {
       "tab": {
     "question": {
       "types": {
         "text": {
-          "name": "Pequeno texto"
+          "name": "Texto curto"
         },
         "textarea": {
           "name": "Texto longo"
           "name": "Selecione"
         },
         "checkbox": {
-          "name": "Caixas de seleção"
+          "name": "Checkboxes"
         },
         "grid": {
           "name": "Grade"
           "name": "Data"
         },
         "datetime": {
-          "name": "Data hora"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Tempo"
+          "name": "Time"
         },
         "email": {
           "name": "Email"
         },
         "range": {
-          "name": "Alcance"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         "fromRequiredLabel": "de exigido"
       },
       "priority": {
-        "sorted": "Classificado",
+        "sorted": "Ordenado",
         "available": "Acessível",
         "clickToAddItem": "Clique para adicionar item"
       },
         "cellInputType": "Tipo de entrada de célula",
         "cellInputTypes": {
           "radio": "Radio",
-          "checkbox": "Caixa de seleção",
+          "checkbox": "Checkbox",
           "text": "Texto",
-          "number": "Numero",
+          "number": "Número",
           "date": "Data",
-          "time": "Tempo"
+          "time": "Time"
         },
         "rowLabel": "Linha {{row}}",
         "clickToAddRow": "Clique para adicionar linha",
       "userAnswer": "Resposta do usuário",
       "buttons": {
         "addOption": "Clique para adicionar opção",
-        "addOther": "Adicionar 'outro'"
+        "addOther": "Adicionar 'Outro'"
       }
     },
     "image": {
index 1f72f92..a99796a 100644 (file)
 {
   "MAIL": {
-    "ADVANCED": "Ítarlegt",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
+    "ADVANCED": "Ítarlegri",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Hala niður með viðhengi",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Hala niður án viðhengja ",
+    "DOWNLOAD": "Hala niður",
+    "LOGIN_TIME": "Innskráningartími",
+    "PAUSE_TIME": "Tími á hlé",
+    "DOWNLOAD_INTERACTION": "Hala niður",
+    "YOU_ARE_REGISTERED_AS_A": "Þú ert skráður sem",
+    "TRANSFER": "Flutningur",
+    "QUEUETRANSFER": "Flutningur raða",
+    "QUEUETRANSFERTIMEOUT": "Tími á flutningi raða runninn út ",
+    "AGENTTRANSFER": "Flutningur þjónustufulltrúa - Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Tími runninn út á flutningi þjónustufulltrúa - Agent Transfer Timeout",
+    "TAG": "Merkja",
+    "EDIT_TAG": "Breyta merki",
+    "WAITFORTHEASSIGNEDAGENT": "Bíddu eftir úthlutuðum þjónustufulltrúa ",
+    "NOTIFICATION": "Tilkynning",
+    "NOTIFICATIONSOUND": "Hljóð",
+    "NOTIFICATIONSHAKE": "Hrista",
+    "NOTIFICATIONTEMPLATE": "Sniðmát",
+    "SYSTEM": "Kerfi",
+    "EDIT_SYSTEM": "Breyta kerfi",
+    "COMMAND": "Skipun - Command",
+    "VARIABLE": "Breyta",
+    "SEND_AS": "Senda sem",
+    "NEW_MAILSUBSTATUS": "Ný undirstaða - New Sub Status",
+    "ADD_MAILSUBSTATUS": "Bæta við undirstöðu - Add Sub Status",
+    "MAILSUBSTATUSES": "Undirstöður tölvupósts - Email Sub Statuses",
+    "EDIT_MAILSUBSTATUS": "Breyta",
+    "DELETE_MAILSUBSTATUS": "Eyða",
+    "FONT_FAMILY": "Leturfjölskylda",
+    "FONT_SIZE": "Leturstærð",
+    "MARK_AS_UNREAD": "Merkja sem ólesið ",
     "ACCEPTED": "Samþykkt",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Bæta við fyrirfram ákveðin svör ",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
+    "CANNEDANSWERS": "Fyrirfram ákveðin svör ",
+    "MAILCANNEDANSWERS": "Fyrirfram ákveðin svör",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Engin fyrirfram ákveðin svör í boði ",
+    "NEW_MAILCANNEDANSWER": "Nýtt fyrirfram ákveðið svar ",
+    "ADD_MAILCANNEDANSWER": "Bæta við fyrirfram ákveðnu svari ",
+    "EDIT_MAILCANNEDANSWER": "Breyta fyrirfram ákveðnu svari ",
+    "DELETE_MAILCANNEDANSWER": "Eyða fyrirfram ákveðnu svari - Delete Canned Answer",
+    "SHOW_ORIGINAL_MESSAGE": "Sýna upprunaleg skilaboðin",
+    "PENDING": "Í bið",
+    "SEND_AS_PENDING": "Senda sem í bið",
+    "SEND_AND_CLOSE": "Senda og loka",
+    "CANNED_ANSWER_NOT_FOUND": "Engin fyrirfram ákveðin svör fundust - No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Sláðu inn texta til að leita að fyrirfram ákveðnu svari - Enter a text to search a Canned Answer",
+    "SPYINTERACTION": "Njósna",
     "ADD_NOTE": "Bæta við athugasemd",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
+    "NOTE": "Athugasemd",
+    "TAGS": "Merki",
+    "NO_AGENT_ONLINE": "Enginn þjónustufulltrúi á netinu",
+    "GOTOREALTIME_MAILQUEUE": "Farðu í rauntíma tölvupóströð ",
+    "PARTIALPAUSE": "Hlé að hluta",
+    "BUSY": "Upptekinn",
+    "TIMER": "Tímamælir",
     "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við biðröð fyrir tölvupóst - Add agent to Email queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
+    "CAPACITY": "Afkastageta",
+    "UNPAUSE": "Enda hlé ",
+    "DEFAULT_PAUSE": "Sjálfgefið hlé",
+    "LOGOUT": "Útskrá",
+    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við tölvupóströð - Add agent to Email queue",
+    "VOICE": "Rödd",
+    "CHAT": "Spjall",
+    "SMS": "Smáskilaboð ",
+    "OPENCHANNEL": "Opna rás",
     "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Þjónustufulltrúar ",
-    "QUEUES": "Queues",
+    "REALTIME": "Rauntími",
+    "AGENTS": "Þjónustufulltrúar",
+    "QUEUES": "Raðir",
     "ACCOUNTS": "Reikningar",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
+    "FULLNAME": "Fullt nafn",
+    "INTERNAL": "Innri",
     "PHONE_STATE": "Phone State",
     "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
+    "PAUSE": "Hlé",
+    "LOGGED_IN": "Innskráður",
+    "PAUSED": "Gert hlé",
+    "READY": "Tilbúinn",
+    "WAITING": "Bíða",
+    "TOTAL": "Samtals",
     "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
+    "OUT": "Úti",
+    "IMAP_STATUS": "IMAP staða",
     "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "REPLY_TYPE": "Reply Type",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
+    "DISABLED": "Óvirkt",
+    "CONNECTED": "Tengdur - Connected",
+    "NEVER_VERIFIED": "Aldrei sannreynt",
+    "ERROR": "Villa",
+    "EDIT_ACCOUNT": "Breyta reikningi",
+    "VERIFY_SMTP": "Sannprófa SMTP",
+    "VERIFIED": "Sannprófað",
+    "VERIFYSMTP_MAILACCOUNT": "Sannprófa SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Farðu í rauntíma tölvupóstreiknings ",
+    "GOTO_MAILACCOUNT": "Farðu í rauntíma tölvupóstreiknings",
+    "TEXT": "Texti",
+    "TIMES": "Fjöldi skipta á hver samskipti - Number of times per interaction",
+    "REPLY_TYPE": "Tegund svars",
+    "EDIT_AUTOREPLY": "Breyta sjálfvirku svari ",
+    "AUTOREPLY": "Sjálfvirkt svar",
+    "SHOW_AUTOREPLY": "Sýna sjálfvirkt svar",
+    "SHOW_DETAILS": "Sýna smáatriði",
+    "HIDE_DETAILS": "Fela smáatriði -  Hide details",
+    "TO": "Til",
+    "FROM": "Frá",
+    "DATE": "Dagsetning",
     "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
+    "REPLY": "Svara",
+    "REPLY_ALL": "Svara öllu",
+    "FORWARD": "Áfram",
+    "SUBJECT": "Efni",
     "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+    "SEND": "Senda",
+    "ATTACHMENT": "Viðhengi",
+    "ATTACHMENTS": "Viðhengi ",
+    "NAME": "Nafn ",
+    "MAILQUEUES": "Tölvupóstraðir ",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "STRATEGY": "Kænska",
+    "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota ef skyldubundin ráðstöfun er virkjuð - Pause to use if mandatory disposition is enabled",
     "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",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Áskildur reitur",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Áskildur reitur",
+      "TAG_REQUIRED": "Áskildur reitur",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Áskildur reitur",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
       "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "REPLY_TYPE_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field"
+      "COMMAND_REQUIRED": "Áskildur reitur",
+      "FONT_SIZE_REQUIRED": "Áskildur reitur",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TEXT_MAX_LENGTH": "Gildið verður að hafa hámarkslengd jafnt og {{hámark}}",
+      "VALUE_REQUIRED": "Áskildur reitur",
+      "TEXT_REQUIRED": "Áskildur reitur",
+      "REPLY_TYPE_REQUIRED": "Áskildur reitur",
+      "NAME_REQUIRED": "Áskildur reitur",
+      "AGENT_TIMEOUT_REQUIRED": "Áskildur reitur",
+      "EMAIL_ADDRESS_REQUIRED": "Áskildur reitur",
+      "EMAIL_ADDRESS_MUST_VALID": "Rangt snið",
+      "HOST_REQUIRED": "Áskildur reitur",
+      "USERNAME_REQUIRED": "Áskildur reitur",
+      "PORT_REQUIRED": "Áskildur reitur",
+      "CONNTIMEOUT_REQUIRED": "Áskildur reitur",
+      "AUTHTIMEOUT_REQUIRED": "Áskildur reitur",
+      "ACCEPTURL_MUST_VALID_URL": "Rangt snið",
+      "TIMEOUT_REQUIRED": "Áskildur reitur",
+      "REJECTURL_MUST_VALID_URL": "Rangt snið",
+      "CLOSEURL_MUST_VALID_URL": "Rangt snið",
+      "AGENT_REQUIRED": "Áskildur reitur",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "DISPOSITION_REQUIRED": "Áskildur reitur",
+      "CONDITION_REQUIRED": "Áskildur reitur",
+      "TRUEPRIORITY_REQUIRED": "Áskildur reitur",
+      "FALSEPRIORITY_REQUIRED": "Áskildur reitur",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PRIORITY_REQUIRED": "Áskildur reitur",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUE_REQUIRED": "Áskildur reitur",
+      "LIST_REQUIRED": "Áskildur reitur",
+      "PASSWORD_REQUIRED": "Áskildur reitur",
+      "SERVICE_REQUIRED": "Áskildur reitur",
+      "IMAP_HOST_REQUIRED": "Áskildur reitur",
+      "IMAP_PORT_REQUIRED": "Áskildur reitur",
+      "SMTP_HOST_REQUIRED": "Áskildur reitur",
+      "SMTP_PORT_REQUIRED": "Áskildur reitur",
+      "CONFIRM_NOT_MATCH": "Innslegin lykilorð passa ekki saman - The passwords inserted don't match",
+      "KEY_MAX_LENGTH": "Lykill verður að hafa hámarkslengd sem er jöfn Key must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Áskildur reitur",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Áskildur reitur",
+      "FIELD_REQUIRED": "Áskildur reitur"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Bæta við röð tölvupósts ",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Bæta við tölvupóstsreikning",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Account",
-    "DISPOSITIONS": "Dispositions",
+    "AGENT_TIMEOUT": "Tími þjónustufulltrúa runninn út - Agent Timeout",
+    "DESCRIPTION": "Lýsing",
+    "ADD_MAILQUEUE": "Bæta við tölvupóstsröð",
+    "EDIT_MAILQUEUE": "Breyta tölvupóströð ",
+    "DELETE_MAILQUEUE": "Eyða tölvupóströð",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
+    "SAVE": "Vista",
+    "MAILACCOUNTS": "Tölvupóstreikningur",
+    "EMAIL_ADDRESS": "Breyta netfangi ",
+    "ADD_MAILACCOUNT": "Bæta við tölvupóstreikningi",
+    "EDIT_MAILACCOUNT": "Breyta tölvupóstreikningi",
+    "DELETE_MAILACCOUNT": "Eyða tölvupóstreikningi - Delete Email Account",
+    "DISPOSITIONS": "Fyrirkomulag",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aðgerðir",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
+    "OTHERS": "Aðrir",
+    "LIST": "Listi",
+    "TEMPLATE": "Sniðmát",
+    "FIDELITY": "Trúnaður",
+    "SERVICE": "Þjónusta",
+    "CREATED_AT": "Stofnað kl.",
     "ACCEPT": "Samþykkja",
     "ACCEPTMETHOD": "Samþykkja aðferð",
     "ACCEPTURL": "Samþykkja URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
+    "REJECT": "Hafna",
+    "REJECTMETHOD": "Hafna aðferð",
+    "REJECTURL": "Hafna URL",
+    "CLOSE": "Loka",
+    "CLOSEMETHOD": "Aðferð við lokun - Close Method",
+    "CLOSEURL": "Loka url - Close URL",
+    "WHITELABEL": "Hvítt merki",
+    "SIGNATURE": "Undirskrift",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
-    "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "USERNAME": "Notendanafn",
+    "PORT": "Aðgangstengi",
+    "MAILBOX": "Pósthólf",
+    "FILTER": "Sía",
+    "CONNTIMEOUT": "Tímamörk tengingar [sek] - Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Tímamörk auðkenningar  [sek] -  Authentication Timeout [sec]",
+    "DELETE": "Eyða tölvupósti frá netþjóni - Delete Email From Server",
     "SSL": "SSL",
-    "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "KEEPALIVE": "Halda lifandi",
+    "POLLING": "Fyrirspurnarkerfi",
     "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
+    "SELECTED": "Valdnir",
+    "SELECT_ALL": "Veldu alla",
+    "SELECT_NONE": "Veldu engan",
+    "BACK": "Til baka",
+    "MAIL": "Tölvupóstur",
     "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Bæta við fyrirkomulag tölvupósts ",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "TIMEOUT": "Hlé",
+    "PASSWORD": "Lykilorð",
+    "NO_MAILDISPOSITION_AVAILABLE": "Engin tölvupóstráðstöfun í boði",
+    "ADD_MAILDISPOSITION": "Bæta við fyrirkomulagi tölvupósts ",
+    "NEW_MAILDISPOSITION": "Nýtt fyrirkomulag tölvupósts ",
+    "EDIT_MAILDISPOSITION": "Breyta fyrirkomlagi tölvupósts ",
+    "DELETE_MAILDISPOSITION": "Eyða fyrirkomulagi tölvupósts - Delete Email Disposition",
+    "MAILDISPOSITIONS": "Fyrirkomulag tölvupósts ",
+    "NEW_MAILQUEUE": "Ný tölvupóströð - New Email Queue",
+    "NEW_MAILACCOUNT": "Nýr tölvupóstreikningur ",
+    "NO_AVAILABLE_INFO": "Engar tiltækar upplýsingar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valin teymi",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "CLOUD_PROVIDER": "Cloud Provider used for authentication"
+      "FONT_FAMILY": "Sjálfgefin leturfjölskylda",
+      "FONT_SIZE": "Sjálfgefin leturstærð",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir - Only numbers, letters and specific characters (._) are supported",
+      "USERNAME": "Notendarnafn notað til auðkenningar - Username used for authentication",
+      "PASSWORD": "Lykilorð notað til auðkenningar",
+      "SECURE": "Ef satt, mun tengingin nota TLS við tengingu við netþjón - If true, the connection will use TLS when connecting to server",
+      "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé ef skyldubundin ráðstöfun er virk - Pause to use when mandatory disposition is enabled",
+      "MARK_AS_UNREAD": "Virkja/Óvirkja þjónustufulltrúa til að merkja við síðustu skilaboð í samskiptum sem ólesin - Unable/Disable  agent to mark as unread the last message of an interaction",
+      "CLOUD_PROVIDER": "Skýjaveita notuð til auðkenningar - Cloud Provider used for authentication"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Bæta þjónustufulltrúa við biðröð fyrir tölvupóst -  Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "PAGE": "Blaðsíða",
+    "ROWSPERPAGE": "Raðir á síðu\n",
+    "OF": "af",
+    "TEAMADD_MAILQUEUE": "Bættu teymi við tölvupóstsröð",
+    "AGENTADD_MAILQUEUE": "Bæta þjónustufulltrúa við tölvupóströð - Add Agent to Email Queue",
+    "ALL_AGENTS": "Allir þjónustufulltrúar",
+    "SELECTED_AGENTS": "Valdnir þjónustufulltrúar",
     "AGENT": "Þjónustufulltrúi",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Breyta þjónustufulltrúa",
+    "EDIT_CLOSE": "Breyta loka ",
+    "DISPOSITION": "Fyrirkomulag",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Breyta GotoIf",
+    "CONDITION": "Skilyrði",
+    "TRUEPRIORITY": "Sannur forgangur",
+    "FALSEPRIORITY": "Röng forgangsröðun",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Breyta GotoP",
+    "PRIORITY": "Forgangsröðun",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "EDIT_NOOP": "Breyta Noop",
+    "VALUE": "Gildi",
+    "QUEUE": "Röð",
+    "EDIT_QUEUE": "Breyta röð ",
+    "INTERACTIONS": "Samskipti",
+    "STARTEDAT": "Byrja kl.",
+    "LASTMESSAGE": "Síðustu skilaboð",
+    "CONTACT": "Hafðu samband",
+    "CLOSEDAT": "Lokar kl. - Closed At",
+    "NOTES": "Athugasemdir",
+    "NO_INTERACTION_AVAILABLE": "Engin samskipi í boði",
     "ACTIVE": "Virkur",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
+    "SECURE": "Öruggt",
+    "AUTHENTICATION": "Auðkenning",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð - Confirm Password",
+    "SELECT_STATUS": "Veldur staða",
+    "OPENED": "Opna",
+    "CLOSED": "Lokað",
+    "ALL": "Allir",
+    "SELECT_ACCOUNT": "Veldu reikning",
+    "STATUS": "Staða",
     "ACCOUNT": "Reikningur",
-    "OPEN": "Open",
-    "KEY": "Key",
+    "OPEN": "Opna",
+    "KEY": "Lykill",
     "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Bæta þjónustufulltrúa við tölvupóstsreikning",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment",
-    "MODERN_AUTHENTICATION": "Modern Authentication",
-    "CLOUD_PROVIDER": "Cloud Provider",
-    "CUSTOM": "Custom",
-    "CREDENTIALS": "Credentials",
+    "UNKNOWN": "Óþekkt",
+    "UNREGISTERED": "Óskráður",
+    "UNAVAILABLE": "Ekki í boði",
+    "NOT_INUSE": "Ekki í notkun ",
+    "REACHABLE": "Hægt að nálgast",
+    "IN_USE": "Í notkun",
+    "AGENTSADD_QUEUE": "Bæta þjónustufulltrúum við tölvupóströð - Add agents to Email Queue",
+    "INFO": "Upplýsingar",
+    "INTERACTIONS_MAILACCOUNT": "Fara í samskipti",
+    "REFRESH_INTERACTIONS": "Endurnýja samskipti",
+    "DELETE_INTERACTION": "Eyða samskiptum ",
+    "AGENTADD_MAILACCOUNT": "Bæta þjónustufulltrúa við tölvupóstreikning ",
+    "TEAMS_ASSOCIATION": "Félag teymis",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í vinnslu ",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjáupptaka í boði",
+    "DOWNLOAD_WITH_ATTACHMENT": "Hala niður viðhengi ",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Hala niður án viðhengi ",
+    "MODERN_AUTHENTICATION": "Nútíma auðkenning ",
+    "CLOUD_PROVIDER": "Skýjaveita - Cloud Provider",
+    "CUSTOM": "Sérsniðin",
+    "CREDENTIALS": "Skilríki",
     "NOTIFICATIONS": {
-      "ACCOUNT_CREATED_SUCCESS_TITLE": "Account successfully created",
-      "ACCOUNT_SAVED_SUCCESS_TITLE": "Account successfully saved",
-      "ACCOUNT_DELETE_TITLE": "Are you sure want to delete the account?",
-      "ACCOUNT_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ACCOUNT_DELETED_SUCCESS_TITLE": "Account successfully deleted",
-      "ACCOUNT_SERVICE_DELETE": "You cannot delete a service account",
-      "ACCOUNTS_DELETE_TITLE": "Are you sure want to delete the selected accounts?",
-      "ACCOUNTS_DELETE_MESSAGE": "{{ total }} accounts will be deleted",
-      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Accounts successfully deleted",
-      "SMTP_CONNECTION_SUCCESS_TITLE": "Successfully connected to the SMTP server",
-      "SMTP_CONNECTION_FAIL_TITLE": "Unable to connect to the SMTP server",
-      "UNKNOWN_SMTP_SERVER": "Unknown STMP server"
+      "ACCOUNT_CREATED_SUCCESS_TITLE": "Reikningur búinn til",
+      "ACCOUNT_SAVED_SUCCESS_TITLE": "Reikningurinn var vistaður\n",
+      "ACCOUNT_DELETE_TITLE": "Ertu viss um að þú viljir eyða reikningnum?\n",
+      "ACCOUNT_DELETE_MESSAGE": "{{ nafni }} verður eytt\n",
+      "ACCOUNT_DELETED_SUCCESS_TITLE": "Reikningi eytt\n",
+      "ACCOUNT_SERVICE_DELETE": "Þú getur ekki eytt þjónustureikningi\n",
+      "ACCOUNTS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum reikningum?",
+      "ACCOUNTS_DELETE_MESSAGE": "{{ samtals }} reikningum verður eytt ",
+      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Reikningar hafa verið eyddir - Accounts successfully deleted",
+      "SMTP_CONNECTION_SUCCESS_TITLE": "Tenging komin á við SMTP þjóninn - Successfully connected to the SMTP server",
+      "SMTP_CONNECTION_FAIL_TITLE": "Ekki tókst að tengjast SMTP þjóninum\n",
+      "UNKNOWN_SMTP_SERVER": "Óþekktur STMP þjónn"
     }
   }
 }
index 62b01dd..e9754e6 100644 (file)
@@ -8,63 +8,63 @@
     "DOWNLOAD_INTERACTION": "Download",
     "YOU_ARE_REGISTERED_AS_A": "Você está registrado como",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da Fila",
+    "AGENTTRANSFER": "Transferir de Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
-    "EDIT_SYSTEM": "Editar sistema",
+    "EDIT_SYSTEM": "Editar Sistema",
     "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 Sub-status",
+    "ADD_MAILSUBSTATUS": "Adicionar Sub-status de Email",
+    "MAILSUBSTATUSES": "Sub-status do Email",
     "EDIT_MAILSUBSTATUS": "Editar",
     "DELETE_MAILSUBSTATUS": "Excluir",
-    "FONT_FAMILY": "Família de fontes",
-    "FONT_SIZE": "Tamanho da fonte",
+    "FONT_FAMILY": "Fonte do Texto",
+    "FONT_SIZE": "Tamanho da Fonte",
     "MARK_AS_UNREAD": "Marcar como não lido",
     "ACCEPTED": "Aceito",
-    "CANNEDANSWERS": "Respostas prontas",
-    "MAILCANNEDANSWERS": "Respostas prontas",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_MAILCANNEDANSWER": "Nova resposta pronta",
-    "ADD_MAILCANNEDANSWER": "Adicionar resposta pronta",
-    "EDIT_MAILCANNEDANSWER": "Editar resposta pronta",
-    "DELETE_MAILCANNEDANSWER": "Excluir resposta pronta",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "MAILCANNEDANSWERS": "Respostas Pré-definidas",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Nenhuma Respostas Pré-definidas disponíveis",
+    "NEW_MAILCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_MAILCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "EDIT_MAILCANNEDANSWER": "Editar Resposta Pré-definida",
+    "DELETE_MAILCANNEDANSWER": "Excluir Resposta Pré-definida",
     "SHOW_ORIGINAL_MESSAGE": "Mostrar mensagem original",
     "PENDING": "Pendente",
-    "SEND_AS_PENDING": "Enviar como pendente",
-    "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",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Nota",
+    "SEND_AS_PENDING": "Enviar como Pendente",
+    "SEND_AND_CLOSE": "Enviar e Encerrar",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma Resposta Pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pré-definida",
+    "SPYINTERACTION": "Espiar",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação",
     "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_MAILQUEUE": "Ir para a fila de email em tempo real",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_MAILQUEUE": "Visualizar Fila de Email em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Cronômetro",
-    "IDLE": "Ocioso",
+    "TIMER": "Timer",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "UNPAUSE": "Fim da Pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de email",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de Email",
     "VOICE": "Voz",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "REALTIME": "Tempo Real",
     "AGENTS": "Agentes",
     "ACCOUNTS": "Contas",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
-    "PHONE_STATE": "Estado do telefone",
-    "PHONE_STATUS": "Status do telefone",
+    "PHONE_STATE": "Estado do Telefone",
+    "PHONE_STATUS": "Status do Telefone",
     "PAUSE": "Pausa",
-    "LOGGED_IN": "Logado",
+    "LOGGED_IN": "Logado Em",
     "PAUSED": "Pausado",
     "READY": "Pronto",
     "WAITING": "Esperando",
     "TOTAL": "Total",
     "IN": "In",
-    "OUT": "Out",
+    "OUT": "Saída",
     "IMAP_STATUS": "IMAP Status",
     "SMTP_STATUS": "SMTP Status",
     "DISABLED": "Desativado",
     "CONNECTED": "Conectado",
     "NEVER_VERIFIED": "Nunca Verificado",
     "ERROR": "Erro",
-    "EDIT_ACCOUNT": "Editar conta",
-    "VERIFY_SMTP": "Verificar o SMTP",
+    "EDIT_ACCOUNT": "Editar Conta",
+    "VERIFY_SMTP": "Verificar SMTP",
     "VERIFIED": "Verificado",
-    "VERIFYSMTP_MAILACCOUNT": "Verificar o 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",
+    "VERIFYSMTP_MAILACCOUNT": "Verificar SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Visualizar Conta de Email em Tempo Real",
+    "GOTO_MAILACCOUNT": "Visualizar Conta de Email em Tempo Real",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
-    "EDIT_AUTOREPLY": "Editar resposta automática",
-    "AUTOREPLY": "Resposta automatica",
-    "SHOW_AUTOREPLY": "Mostrar resposta automática",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
+    "AUTOREPLY": "Auto Resposta",
+    "SHOW_AUTOREPLY": "Mostrar Auto Resposta",
     "SHOW_DETAILS": "Mostrar detalhes",
-    "HIDE_DETAILS": "Detalhes ocultos",
+    "HIDE_DETAILS": "Ocultar detalhes",
     "TO": "Para",
     "FROM": "De",
     "DATE": "Data",
     "CC": "Cc",
-    "REPLY": "Resposta",
-    "REPLY_ALL": "Responder todos",
-    "FORWARD": "Frente",
-    "SUBJECT": "Sujeito",
-    "BCC": "Bcc",
+    "REPLY": "Responder",
+    "REPLY_ALL": "Responder à Todos",
+    "FORWARD": "Encaminhar",
+    "SUBJECT": "Assunto",
+    "BCC": "Cco",
     "SEND": "Enviar",
     "ATTACHMENT": "Anexo",
     "ATTACHMENTS": "Anexos",
     "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",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "REPLY_TYPE_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "NAME_MUST_VALID_PATTERN": "Formato errado",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "FONT_SIZE_REQUIRED": "Campo obrigatório",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "TEXT_MAX_LENGTH": "O valor precisa ter tamanho máximo de até {{max}}",
+      "VALUE_REQUIRED": "Campo obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "EMAIL_ADDRESS_REQUIRED": "Campo obrigatório",
+      "EMAIL_ADDRESS_MUST_VALID": "Formato incorreto",
+      "HOST_REQUIRED": "Campo obrigatório",
+      "USERNAME_REQUIRED": "Campo obrigatório",
+      "PORT_REQUIRED": "Campo obrigatório",
+      "CONNTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AUTHTIMEOUT_REQUIRED": "Campo obrigatório",
+      "ACCEPTURL_MUST_VALID_URL": "Formato errrado",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
+      "REJECTURL_MUST_VALID_URL": "Formato errado",
+      "CLOSEURL_MUST_VALID_URL": "Formato errado",
+      "AGENT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "PASSWORD_REQUIRED": "Campo obrigatório",
+      "SERVICE_REQUIRED": "Campo obrigatório",
+      "IMAP_HOST_REQUIRED": "Campo obrigatório",
+      "IMAP_PORT_REQUIRED": "Campo obrigatório",
+      "SMTP_HOST_REQUIRED": "Campo obrigatório",
+      "SMTP_PORT_REQUIRED": "Campo obrigatório",
+      "CONFIRM_NOT_MATCH": "A senha inserida não confere",
+      "KEY_MAX_LENGTH": "A chave precisa ter tamanho máximo de até {{max}}",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo Oobrigatório",
+      "REPLY_TYPE_REQUIRED": "Campo obrigatório",
       "FIELD_REQUIRED": "Campo obrigatório"
     },
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_MAILQUEUE": "Adicionar fila de email",
-    "EDIT_MAILQUEUE": "Editar fila de email",
-    "DELETE_MAILQUEUE": "Excluir fila de email",
+    "ADD_MAILQUEUE": "Adicionar Fila de Email",
+    "EDIT_MAILQUEUE": "Editar Fila de Email",
+    "DELETE_MAILQUEUE": "Excluir Fila de Email",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "SAVE": "Salvar",
     "MAILACCOUNTS": "Contas de Email",
     "EMAIL_ADDRESS": "Endereço de Email",
-    "ADD_MAILACCOUNT": "Adicionar conta de Email",
-    "EDIT_MAILACCOUNT": "Editar conta de Email",
-    "DELETE_MAILACCOUNT": "Excluir conta de Email",
-    "DISPOSITIONS": "Disposições",
+    "ADD_MAILACCOUNT": "Adicionar Conta de Email",
+    "EDIT_MAILACCOUNT": "Editar Conta de Email",
+    "DELETE_MAILACCOUNT": "Excluir Conta de Email",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "OTHERS": "Outros",
     "SERVICE": "Serviço",
     "CREATED_AT": "Criado em",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Metodo",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "WHITELABEL": "White Label",
     "SIGNATURE": "Assinatura",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Usuário",
     "PORT": "Porta",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Entrada",
     "FILTER": "Filtro",
-    "CONNTIMEOUT": "Tempo limite de conexão [seg]",
-    "AUTHTIMEOUT": "Tempo limite de autenticação [seg]",
-    "DELETE": "Excluir email do servidor",
+    "CONNTIMEOUT": "Timeout de Conexão [seg]",
+    "AUTHTIMEOUT": "Timeout de Autenticação [seg]",
+    "DELETE": "Excluir Email do Servidor",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Sondagem",
     "SMTP": "SMTP",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecionar nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "MAIL": "Email",
     "ID": "Id",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "PASSWORD": "Senha",
-    "NO_MAILDISPOSITION_AVAILABLE": "Nenhuma disposição de email disponível",
-    "ADD_MAILDISPOSITION": "Adicionar disposição de email",
-    "NEW_MAILDISPOSITION": "Nova disposição de email",
-    "EDIT_MAILDISPOSITION": "Editar disposição de email",
-    "DELETE_MAILDISPOSITION": "Excluir disposição de email",
-    "MAILDISPOSITIONS": "Disposições de email",
-    "NEW_MAILQUEUE": "Nova fila de email",
-    "NEW_MAILACCOUNT": "Nova conta de email",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "NO_MAILDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Email disponível",
+    "ADD_MAILDISPOSITION": "Adicionar Qualificação de Email",
+    "NEW_MAILDISPOSITION": "Nova Qualificação de Email",
+    "EDIT_MAILDISPOSITION": "Editar Qualificação de Email",
+    "DELETE_MAILDISPOSITION": "Excluir Qualificação de Email",
+    "MAILDISPOSITIONS": "Qualificações de Email",
+    "NEW_MAILQUEUE": "Nova Fila de Email",
+    "NEW_MAILACCOUNT": "Nova Conta de Email",
+    "NO_AVAILABLE_INFO": "Nenhuma Info Disponível",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-      "CLOUD_PROVIDER": "Provedor de nuvem usado para autenticação"
+      "FONT_FAMILY": "Fonte do Texto Padrão",
+      "FONT_SIZE": "Tamanho da Fonte Padrão",
+      "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
+      "USERNAME": "Username usado para autenticação",
+      "PASSWORD": "Password usado para autenticação",
+      "SECURE": "Se habilitado, a conexão utilizará TLS quando conectar ao servidor",
+      "MARK_AS_UNREAD": "Habilitar/Desabilitar agente a marcar como não lida uma interação",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a Qualificação obrigatória estiver habilitada",
+      "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",
+    "TEAMADD_MAILQUEUE": "Adicionar Equipe à Fila de Email",
+    "AGENTADD_MAILQUEUE": "Adicionar Agente à Fila de Email",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "AGENT": "Agente",
-    "EDIT_AGENT": "Editar agente",
-    "EDIT_CLOSE": "Editar Fechar",
-    "DISPOSITION": "Disposição",
+    "EDIT_AGENT": "Editar Agente",
+    "EDIT_CLOSE": "Editar Encerramento",
+    "DISPOSITION": "Qualificação",
     "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "Id da Prioridade caso Falso",
     "GOTOP": "GotoP",
     "EDIT_GOTOP": "Editar GotoP",
     "PRIORITY": "Prioridade",
     "INTERACTIONS": "Interações",
     "STARTEDAT": "Começou às",
     "CONTACT": "Contato",
-    "CLOSEDAT": "Fechado em",
-    "NOTES": "Notas",
+    "CLOSEDAT": "Encerrado em",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "ACTIVE": "Ativo",
     "SECURE": "Seguro",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
     "CONFIRM_PASSWORD": "Confirme a Senha",
-    "SELECT_STATUS": "Selecione o status",
+    "SELECT_STATUS": "Selecionar Status",
     "OPENED": "Abrir",
-    "CLOSED": "Fechadas",
+    "CLOSED": "Encerradas",
     "ALL": "Todos",
-    "SELECT_ACCOUNT": "Selecione uma conta",
+    "SELECT_ACCOUNT": "Selecionar Conta",
     "STATUS": "Status",
     "ACCOUNT": "Conta",
     "OPEN": "Abrir",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de email",
+    "IN_USE": "Ocupado",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de Email",
     "INFO": "Info",
     "INTERACTIONS_MAILACCOUNT": "Ir para 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",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_MAILACCOUNT": "Adicionar Agente à Conta de Email",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada se Qualificação obrigatória estiver habilitada",
     "ADVANCED": "Avançado",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "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",
-    "CLOUD_PROVIDER": "Provedor de nuvem",
+    "CLOUD_PROVIDER": "Provedor de Nuvem",
     "CREDENTIALS": "Credenciais",
     "CUSTOM": "Personalizado",
-    "MODERN_AUTHENTICATION": "Autenticação moderna"
+    "MODERN_AUTHENTICATION": "Autenticação Moderna"
   }
 }
index 6b63309..546b431 100644 (file)
 {
   "MOTIONDIALER": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "ONE_CALL_EVERY": "One call every",
-    "CURRENT_INTERVAL": "Current Interval",
-    "PREVIOUS_INTERVAL": "Previous Interval",
-    "PREDICTIVE_IS_RUNNING": "Predictive is running",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
-    "AVG_TALK_TIME": "Avg Talk Time",
-    "ANSWERED_CALLS": "Answered Calls",
-    "TOTAL_CALLS": "Total Calls",
-    "THRESHOLDS": "Thresholds",
-    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
-    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
-    "RECALLINQUEUE": "Recall in queue",
-    "SELECT_DATE": "Select Date",
-    "SELECT_TYPE": "Select Type",
-    "SELECT_CAMPAIGN": "Select Campaign",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "ANSWERING_MACHINE": "Answering machine",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs ráðstöfun",
+    "THIRD_LEVEL_DISPOSITION": "Þriðja stigs ráðstöfun",
+    "ONE_CALL_EVERY": "Eitt símtal alltaf",
+    "CURRENT_INTERVAL": "Núverandi bil",
+    "PREVIOUS_INTERVAL": "Fyrra tímabil",
+    "PREDICTIVE_IS_RUNNING": "Forsjá er virk, í gangi",
+    "PREDICTIVE_IS_NOT_RUNNING": "Forsjá er ekki virk, í gangi",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Gagnasöfnun í áföngum - Data collection in Progressive",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Sýna forsjárgildis upplýsingar",
+    "AVG_TALK_TIME": "Meðal taltími",
+    "ANSWERED_CALLS": "Símtölum svarað",
+    "TOTAL_CALLS": "Heildar fjöldi hringinga",
+    "THRESHOLDS": "Þrösköldar",
+    "PREDICTIVEMAXTHRESHOLD": "Forsjár hámarks þröskuldur [%]",
+    "PREDICTIVEMINTHRESHOLD": "Forsjár lámarks þröskuldur [%]",
+    "REFRESH_SCHEDULED_CALLS": "Endurnýjaðu skipulögð köll",
+    "RECALLINQUEUE": "Endurhringin er í röðinni",
+    "SELECT_DATE": "Veldu dag",
+    "SELECT_TYPE": "Veldu tegun",
+    "SELECT_CAMPAIGN": "Velja herferð",
+    "SCHEDULED_CALLS": "Skipulögð símtöl",
+    "LOGIN_TIME": "Innskráður tími",
+    "PAUSE_TIME": "Tími á hléinu",
+    "PREVIEW_RECALL_ME_REMINDER": "Minna mig á mín skilaboð",
+    "CUTDIGIT": "Klipptu tölustafi",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Handahófs úthringi auðkenni",
+    "CLONE_IVRCAMPAIGN": "Klóna herferð ",
+    "CLONE_QUEUECAMPAIGN": "Klóna herferð raðar",
+    "ABANDONEDCALLS": "Hringingar í biðröð sem var hætt við",
+    "HOPPERWIDGET": "Samantekt",
+    "RESETLIST_IVRCAMPAIGN": "Endursetja lista",
+    "RESETLIST_QUEUECAMPAIGN": "endursetja lista",
+    "RESET": "Endursetja",
+    "RESETLIST": "endursetja lista",
+    "SELECTALL": "Velja allt",
+    "UNSELECTALL": "Hætta við að velja allt",
+    "NO_AVAILABLE_INFO": "Engar aupplýsingar fáanlegar",
+    "TIMEOUT": "Tími rann út",
+    "CALLYSQUAREPROJECTPREVIEW": "Forskoðun Cally Square verkefnisins",
+    "CALLYSQUAREPROJECTPREVIEW2": "Verkefni Cally Square eftir forskoðun ",
+    "RUNIFHANGUPAGENT": "Keyrðu Cally Square verkefnið aftur þótt fulltrúinn skelli á",
+    "CALLYSQUAREPROJECT2": "Verkefni Cally Square eftir röð ",
+    "NO_AGENT_ONLINE": "Engin fulltrúi tengdur",
+    "PARTIALPAUSE": "Stutt hlé",
+    "ALL": "Allir",
+    "IDLE": "Laust",
+    "TIMER": "Teljari",
+    "MOVE_HOPPERFINAL": "Endurheimta tengilið",
+    "RESTORECONTACTS": "Endursetja tengilið",
+    "NO_SUCH_NUMBER": "ekkert slíkt númer",
+    "ANSWERING_MACHINE": "Símsvari",
+    "DIALORDERBYSCHEDULEDAT": "Panta hringingu ",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "RECALLAGENT": "Hringdu aftur í fulltrúann",
+    "DIALRECALLINQUEUE": "Muna eftir hringingu í biðröð",
+    "DIALRECALLMETIMEOUT": "Tímamörk áminningu [mín]",
+    "RECALLME": "Hringdu í mig",
+    "RECALLFAILEDTIMEOUT": "Hringing mistókst",
+    "PREVIEW_CAMPAIGN": "Forskoða herferð",
+    "PREVIEW_CAMPAIGNS": "forskoða herferð",
+    "AMD": "Asterisk símsvörun skynjuð (AMD)",
+    "AMDTOTALANALYSISTIME": "Heildar greiningartími",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "AMDINITIALSILENCE": "Upphafsþögn",
+    "AMDGREETING": "Kveðja",
+    "AMDAFTERGREETINGSILENCE": "Þögn eftir kveðju\n",
+    "AMDSILENCETHRESHOLD": "Viðmiðunarmörk þagnar",
+    "AMDMINWORDLENGTH": "Lágmarks lengd orða ",
+    "AMDBETWEENWORDSSILENCE": "Þögn á milli orða\n",
+    "AMDMAXIMUMWORDLENGTH": "Hámarkslengd orða",
+    "AMDMAXIMUMNUMBEROFWORDS": "Hámarksfjöldi orða",
+    "GOTO_QUEUECAMPAIGN": "Fara í rauntíma biðraða herferða",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Fara í rauntíma röð herferðar ",
+    "GOTO_IVRCAMPAIGN": "Fara í rauntíma IVR herferða",
+    "GOTOREALTIME_IVRCAMPAIGN": "Fara í rauntíma IVR herferðar",
+    "LOGOUT": "Útskráning",
+    "EDIT_CAMPAIGN": "Breyta herferð",
+    "LIMITED": "Takmarkað",
+    "IVR_CAMPAIGNS": "IVR herferð",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
+    "QUEUECAMPAIGNS": "Biðraðarherferð",
+    "IVRCAMPAIGNS": "IVR herferð",
+    "MANAGED": "Stjórnað",
+    "AVAILABLE_CONTACTS_FINISHED": "Tiltækum tengiliðum lokið",
+    "HISTORY": "Sagan",
+    "SCHEDULEDAT": "Stillt kl.",
+    "HOPPERBLACKS": "Hopper Svarti listinn",
     "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
+    "HOPPERFINALS": "Hopper Loka",
     "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
+    "HOPPERHISTORIES": "Símtala skrá",
     "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
+    "DELETE_HOPPERHISTORY": "Eyða",
+    "DELETE_HOPPERFINAL": "Eyða",
+    "CONTACTID": "Auðkenni tengiliðs",
+    "STARTTIME": "Upphafstími",
+    "RESPONSETIME": "Svörunar tími",
+    "ENDTIME": "Lokatími",
+    "STATUS": "Staða",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
+    "NO_HOPPER_AVAILABLE": "Engir hlutir í boði",
+    "EDIT_HOPPER": "Breyta Hopper",
+    "DELETE_HOPPER": "Eyða Hopper",
+    "FINAL": "Loka",
+    "BLACKLIST": "Svarti listinn",
+    "NAME": "Nafn",
+    "VOICEQUEUES": "Tal biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "DELETE_VOICEDISPOSITION": "Eyða ráðstöfun raddar",
+    "EDIT_VOICEDISPOSITION": "Breyta raddráðstöfun",
+    "EDIT_VOICEQUEUE": "Breyta raddbiðröð",
+    "DELETE_VOICEQUEUE": "Eyða raddröð\n",
+    "MOHSOUNDS": "Moh Hljómur",
+    "STRATEGY": "Stefna",
+    "DESCRIPTION": "Lýsing",
+    "INTERVAL": "Tímabil",
+    "ADD_VOICEQUEUE": "Bæta við raddröð",
+    "NEW_QUEUECAMPAIGN": "Ný biðraða herferð",
+    "ACTIVE": "Virkur",
+    "METHOD": "Aðferð",
+    "POWERLEVEL": "Orku staða",
     "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "NOSUCHNUMBER": "No such number",
-    "NOSUCHNUMBERMAXRETRY": "Max Retries",
-    "NOSUCHNUMBERRETRYTIME": "Retry Time [min]",
+    "AGENTBUSYFACTOR": "Þjónustufulltrúi upptekinn",
+    "PREDICTIVEOPTIMIZATION": "Bestun forsjár",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "% forsjár bestunar",
+    "PREDICTIVEINTERVAL": "Forsjár tímabil",
+    "ADD_QUEUECAMPAIGN": "Bæta við herferð í biðröð",
+    "CAMPAIGN": "Herferð",
+    "MAXCONCURRENTCALLS": "Hámarks fjöldi samtíma samtala",
+    "CONCURRENTCALLS": "Hámarksfjöldi samhliða símtala",
+    "ORIGINATE": "Upphafsaðili",
+    "ORIGINATECALLERIDNAME": "Nafn á úthringingu",
+    "ORIGINATECALLERIDNUMBER": "Númer á úthringingu",
+    "ORIGINATETIMEOUT": "Útruninn tími á upphafsaðila",
+    "QUEUEOPTIONS": "Biðraðar möguleikar",
+    "QUEUETIMEOUT": "Útrunninn tími á biðröð",
+    "CALLYSQUAREPROJECT": "Verkefni Cally Square ",
+    "RETRYANDFREQUENCY": "Stillingar á endurstillingum",
+    "GLOBAL": "Alþjóðlegt",
+    "GLOBALMAXRETRY": "Hámark endurtekninga",
+    "CONGESTION": "Þrengsli",
+    "CONGESTIONMAXRETRY": "Hámark endurtekninga",
+    "CONGESTIONRETRYTIME": "Tími endurtekninga [mín]",
+    "BUSYMAXRETRY": "Hámark endurtekninga",
+    "BUSYRETRYTIME": "Tími endurtekninga [mín]",
+    "NOANSWER": "Ekki svarað",
+    "NOANSWERMAXRETRY": "Hámarks fjöldi tilrauna",
+    "NOANSWERRETRYTIME": "Endurtekningar tími [mín]",
+    "NOSUCHNUMBER": "Ekkert slík númer",
+    "NOSUCHNUMBERMAXRETRY": "Hámarks fjöldi tilrauna",
+    "NOSUCHNUMBERRETRYTIME": "Endurtekningar tími [mín]",
     "DROP": "Drop",
-    "DROPMAXRETRY": "Max Retries",
-    "DROPRETRYTIME": "Retry Time [min]",
-    "ABANDONEDMAXRETRY": "Max Retries",
-    "ABANDONEDRETRYTIME": "Retry Time [min]",
-    "MACHINE": "Machine",
-    "MACHINEMAXRETRY": "Max Retries",
-    "MACHINERETRYTIME": "Retry Time [min]",
-    "AGENTREJECT": "Agent Reject",
-    "AGENTREJECTMAXRETRY": "Max Retries",
-    "AGENTREJECTRETRYTIME": "Retry Time [min]",
-    "CALLADDITIONALPHONEAFTERMIN": "Call additional phone after [min]",
-    "ADDITIONALPHONES": "Additional phones",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
+    "DROPMAXRETRY": "Hámark endurtekninga",
+    "DROPRETRYTIME": "Endurtekningartími [mín] ",
+    "ABANDONEDMAXRETRY": "Hámark endurtekna",
+    "ABANDONEDRETRYTIME": "Tími endurtekningar [mín]",
+    "MACHINE": "Tölvan",
+    "MACHINEMAXRETRY": "Hámarks fjöldi endurtekninga",
+    "MACHINERETRYTIME": "Endurtekna tími [min]",
+    "AGENTREJECT": "Höfnun þjónustufulltrúa",
+    "AGENTREJECTMAXRETRY": "Hámark endurtekningar",
+    "AGENTREJECTRETRYTIME": "Tími endurtekningar [mín]",
+    "CALLADDITIONALPHONEAFTERMIN": "Hringja í viðbótarsíma eftir [min] ",
+    "ADDITIONALPHONES": "Auka símar",
+    "QUEUE_PARAMS": "Breytur fyrir biðröð",
+    "ORIGINATED": "Upphafsaðili",
+    "MESSAGE": "Skilaboð",
     "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
+    "CREATED_AT": "Stofnað kl.",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Sér forrit"
     },
     "ERRORS": {
-      "AGENT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Áskilinn reitur",
+      "CUTDIGIT_REQUIRED": "Áskilinn reitur",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Áskilinn reitur",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTIMEOUT_REQUIRED": "Áskilinn reitur",
+      "INTERVAL_REQUIRED": "Áskilinn reitur",
+      "EMAIL_REQUIRED": "Áskilinn reitur",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "PREFIX_MUST_VALID_PATTERN": "Rangt snið",
+      "NAME_REQUIRED": "Áskilinn reitur",
+      "TIMEOUT_REQUIRED": "Áskilinn reitur",
+      "PHONENUMBER_REQUIRED": "Áskilinn reitur",
+      "CONTEXT_REQUIRED": "Áskilinn reitur",
+      "DESTINATIONPATTERN_REQUIRED": "Áskilinn reitur",
+      "FULLNAME_REQUIRED": "Áskilinn reitur",
+      "EMAIL_REQUUIRED": "Áskilinn reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "MAILBOX_REQUIRED": "Áskilinn reitur",
+      "PASSWORD_REQUIRED": "Áskilinn reitur",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Mandatory field",
-      "DROPMAXRETRY_REQUIRED": "Mandatory field",
-      "DROPRETRYTIME_REQUIRED": "Mandatory field",
-      "ABANDONEDMAXRETRY_REQUIRED": "Mandatory field",
-      "ABANDONEDRETRYTIME_REQUIRED": "Mandatory field",
-      "MACHINEMAXRETRY_REQUIRED": "Mandatory field",
-      "MACHINERETRYTIME_REQUIRED": "Mandatory field",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Mandatory field",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Mandatory field",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Call add.phone after min. should be greater than or equal to"
+      "TIMEZONE_REQUIRED": "Áskilinn reitur",
+      "PREFIX_REQUIRED": "Áskilinn reitur",
+      "OPTIONS_REQUIRED": "Áskilinn reitur",
+      "AFTERCALLWORKDURATION_REQUIRED": "Áskilinn reitur",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Áskilinn reitur",
+      "PHONE_REQUIRED": "Áskilinn reitur",
+      "VALUE_REQUIRED": "Áskilinn reitur",
+      "EXTENSION_REQUIRED": "Áskilinn reitur",
+      "PRIORITY_REQUIRED": "Áskilinn reitur",
+      "GLOBALMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "CONGESTIONMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "CONGESTIONRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "BUSYMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "BUSYRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "NOANSWERMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "NOANSWERRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "QUEUETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "ORIGINATETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "GLOBALINTERVAL_REQUIRED": "Áskilinn reitur",
+      "MAXCONCURRENTCALLS_REQUIRED": "Áskilinn reitur",
+      "CONCURRENTCALLS_REQUIRED": "Áskilinn reitur",
+      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "DROPMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "DROPRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "ABANDONEDMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "ABANDONEDRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "MACHINEMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "MACHINERETRYTIME_REQUIRED": "Áskilinn reitur",
+      "AGENTREJECTMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "AGENTREJECTRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt ",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Áskilinn reitur",
+      "CALLYSQUAREPROJECT_REQUIRED": "Áskilinn reitur",
+      "TRUNK_REQUIRED": "Áskilinn reitur",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Áskilinn reitur",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Almennt",
+    "AGENTTIMEOUT": "Tími þjónustufulltrúa runninn út ",
+    "MAXLENGTH": "Hámarks lengd",
+    "RETRY": "Reyna aftur",
+    "WRAPUPTIME": "Tími eftir samtal",
+    "WEIGHT": "Þyngd",
+    "JOINWHENEMPTY": "Vertu með ef tómt",
+    "LEAVEWHENEMPTY": "Skildu eftir ef tómt",
     "HELP": {
-      "PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
-      "PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "TIMEZONE": "Specify timezone",
-      "PREVIEW_RECALL_ME_REMINDER": "If enabled, the system will send a notification to the agent n minutes (according to time interval set in general settings) before generating the recall me",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
-      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
-      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
-      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
-      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
-      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
-      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
-      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
-      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
-      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
-      "CALLADDITIONALPHONEAFTERMIN": "",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
+      "PREDICTIVEMAXTHRESHOLD": "Ef hlutfall fulltrúa sem eru tiltækir í tímaglugganum, samanborið við fjölda fulltrúa sem eru tiltækir þegar spáin var gerð, fer yfir stillt hámarksmörk, endurreikur spáin spána ",
+      "PREDICTIVEMINTHRESHOLD": "\nEf hlutfall fulltrúa sem eru tiltækir í tímaglugganum, samanborið við fulltrúa sem eru tiltækir á þeim tíma sem spáin er gerð, fer yfir stillt lágmarksmörk, endurreikur spáin spána.",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Ef það er stærra en 0 myndar það af handahófi samsvarandi síðustu tölustaöfum í Caller ID númeri",
+      "TIMEOUT": "Fjöldi sekúndna til að hringja í fulltrúa í biðröð",
+      "CALLYSQUAREPROJECTPREVIEW": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR þegar fulltrúi svarar (IVR verður beint til fulltrúans)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR þegar viðskiptavinurinn leggur á eða ekki er hægt að ná í hann (IVR verður beint til fulltrúans)",
+      "RUNIFHANGUPAGENT": "Keyra Cally Square verkefnið aftur jafnvel þótt fulltrúi leggi á",
+      "CALLYSQUAREPROJECT2": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR eftir biðröðina (ef biðröðinni lýkur með tímamörkum)",
+      "DIALORDERBYSCHEDULEDAT": "Fáðu tengilið frá hopper (lækkandi eða hækkandi).",
+      "DIALRECALLINQUEUE": "Endurskipuleggja símtal á fulltrúa í röðinni",
+      "DIALRECALLMETIMEOUT": "Tímabil (í mínutum) áður en valið er að hringja aftur",
+      "PRIORITY": "Forgangur á listanum",
+      "TIMEZONE": "Tilgreindu tímabelti",
+      "PREVIEW_RECALL_ME_REMINDER": "Ef þetta er virkjað mun kerfið senda tilkynningu til fulltrúa n mínútum (samkvæmt tímabili sem er stillt í almennum stillingum) áður en búið er til endurkall",
+      "AMDMAXIMUMWORDLENGTH": "Leyfileg hámarkslengd stakra tilsvara",
+      "AMDMINWORDLENGTH": "Lágmarkstími raddar sem á að telja sem orð",
+      "AMDSILENCETHRESHOLD": "Ef meðaltalshávaði í sýni nær ekki þessu gildi, frá kvarðanum 0 til 32767, þá munum við líta á það sem hljóðlátt.",
+      "AMDTOTALANALYSISTIME": "Hámarkstími sem reikniritið má nota til að ákveða hvort hljóðið táknar MANN eða VÉL",
+      "AMDAFTERGREETINGSILENCE": "Þögn eftir að hafa greint kveðju. Ef farið er yfir mörkin er niðurstaðan greind sem sem MAÐUR",
+      "AMDGREETING": "Hámarkslengd á kveðju. Ef farið er yfir mörkin, þá er niðurstaðan greind sem VÉL",
+      "AMDINITIALSILENCE": "Hámarkslengd þagnar á undan kveðju. Ef farið er yfir mörkin, þá er niðurstaðan greind sem VÉL",
+      "AMDACTIVE": "Virkjaðu eða slökktu á skynjunartilraunum ef um símsvara er að ræða",
+      "AMDBETWEENWORDSSILENCE": "Lágmarkstími þagnar á eftir orði til að greina hljóð sem kemur á eftir sem nýtt orð",
+      "AMDMAXIMUMNUMBEROFWORDS": "Hámarksfjöldi orða í kveðjunni. Ef því er NÁÐ, er niðustaðan greind sem VÉL",
+      "CALLYSQUAREPROJECT": "Með því að velja IVR verkefni mun forritið áframsenda símtalið til IVR fyrir biðröðina",
+      "PREFIX": "Forskeyti númers",
+      "ACTIVE": "Virkur",
+      "AGENTTIMEOUT": "Hversu lengi (í sekúndum) á að hringja í fulltrúa",
+      "MAXLENGTH": "Hámarksfjöldi þeirra sem hringja út og meiga vera í biðröð (0=ótakmarkað)",
+      "RETRY": "Hversu lengi (í sekúndum) á að bíða áður en hringt er í næsta lausa fulltrúa í biðröðinni þegar tíminn er útrunninn",
+      "WRAPUPTIME": "Notað til að ákvarða forgang ef umboðsmenn eru tengdir við fleiri en eina biðröð",
+      "WEIGHT": "Notað til að ákvarða forgang ef fulltrúar eru tengdir við fleiri en eina biðröð",
+      "JOINWHENEMPTY": "Ef hringt er í biðröðina, og engir fulltrúar eru tiltækir",
+      "LEAVEWHENEMPTY": "Ef sá sem hringir er vísað úr biðröðinni vegna þess að einginn fulltrúi er til að svara",
+      "ANNOUNCEFREQUENCY": "Hversu oft á að tilkynna staðsetningu þess sem hringir og/eða áætlaðan biðtíma í biðröðinni (0=slökkva)",
+      "MINANNOUNCEFREQUENCY": "Lágmarks tíðni tilkynninga (gagnlegt þegar staða þess sem hringir breytist oft)",
+      "PERIODICANNOUNCEFREQUENCY": "Tíðni reglubundinna tilkynninga til þess sem hringir",
+      "ANNOUNCEPOSITIONLIMIT": "Notað ef þú hefur skilgreint tilkynningarstöðu sem annað hvort 'takmark' eða 'meira'",
+      "AFTERCALLWORKDURATION": " Lengd biðtíma sem virkjast af valkostunum eftir símtal",
+      "MEMBERDELAY": "Settu inn töf áður en sá sem hringir og fulltrúi í biðröð tengjast",
+      "MUSICONHOLD": "Stillir tónlistar tegund til að nota fyrir tiltekna biðröð",
+      "ANNOUNCETOAGENT": "Spilar tilkynningu til þjónustufulltrúa sem svarar símtalinu (t.d. til að láta hann vita úr hvaða röð sá sem hringir kemur)",
+      "RANDOMPERIODICANNOUNCE": "Ef já, spilar það reglubundnar tilkynningar í handahófskenndri röð",
+      "ANNOUNCEHOLDTIME": "Spilar áætlaðan biðtíma ásamt reglubundnum tilkynningum (Já/Nei/Einu sinni)",
+      "ANNOUNCECALLERPOSITION": "Notað til að skilgreina hvort tilkynna eigi um stöðu þess sem hringir í biðröðinni: Nei=aldrei; Já=alltaf; Limit=aðeins ef það er innan þeirra marka sem skilgreint er af tilkynna-stöðu-mörk; Meira= aðeins ef það er umfram gildið sem skilgreint er af tilkynna-stöðu-mörk ",
+      "REPORTHOLDTIMEAGENT": "Gerir kleift að skrá biðtíma þjónustufulltrúa fyir tengingu",
+      "PERIODICANNOUNCE": "Textar af reglubundnum tilkynningum sem á að spila (í röð)",
+      "HOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"Biðtími\". Óskilgreint=engin tilkynning",
+      "YOUARENEXTANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þú ert nú fyrstur í röðinni”. Óskilgreint=engin tilkynning",
+      "THEREAREANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"Það eru til\". Óskilgreint=engin tilkynning",
+      "WAITINGCALLSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"símtöl í bið\". Óskilgreint=engin tilkynning",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið=“Núverandi áætlaður biðtími er”. Óskilgreint=engin tilkynning",
+      "MINUTESANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "MINUTEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "SECONDSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"sekúndur\". Óskilgreint=engin tilkynning",
+      "THANKYOUANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þakka þér fyrir þolinmæðina”. Óskilgreint=engin tilkynning",
+      "AFTERCALLWORK": "Ef það er virkt verður þjónustufulltrúinn stilltur á hlé eftir að símtali er lokið",
+      "AUTOPAUSE": "Virkjar/Óvirkjar á sjálfvirkt hlé á þjónustufulltrúum sem svara ekki símtali. Ef það er virkt veldur það því að þjónustufulltrúinn er í biðröð í öllum biðröðum sem hann tilheyrir",
+      "RINGINUSE": "Til að forðast/leyfa símtöl til meðlima biðraðar sem eru uppteknir",
+      "TIMEOUTRESTART": "Ef já, þá endurstillir þetta tímamörk fyrir fulltrúa til að svara þegar annaðhvort ANNAРeða Congestion staða er móttekin frá samtalinu",
+      "MONITORFORMAT": "Tilgreinir skráarsniðið sem á að nota við upptöku. Ef skrárnið er óskilgreint verða símtöl ekki tekin upp",
+      "CONTEXT": "Leyfir hringjara að fara úr biðröðinni með því að ýta á einn DTMF tón/tölustaf. Ef samhengi er tilgreint og sá sem hringir slær inn númer mun sá tölustafur reyna að passa saman í því samhengi sem tilgreint er og keyrsla hringingaráætlunar heldur áfram þar ",
+      "SETINTERFACEVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð fulltrúa verða nokkrar breytur stilltar (fyrir frekari upplýsingar sjá wiki skjöl:<a target=\"_blank\"href=\"https://wiki.xcallymotion. com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)",
+      "SETQUEUEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröð og yfirgefur biðröðina, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl:<a target=\"_blank\"href=\"https: //wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)ue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl:<a target=\"_blank\"href=\"https://wiki.xcallymotion .com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)",
+      "RECORDING": "Virkja upptöku samtala",
+      "VOICEMAIL_CONTEXT": "Samhengi hlutfallslegrar framlengingar ",
+      "METHOD": "Aðferð úthringivers",
+      "POWERLEVEL": "Fjöldi tengiliða til að hringja í fyrir alla tiltæka fulltrúa",
+      "PREDICTIVEOPTIMIZATION": "Stuðull til að fínstilla í forspáralgrímið",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Hlutfall byggt á völdum forspárhagræðingarstuðli ",
+      "PREDICTIVEINTERVAL": "Tímabil (í mínútum) talið fyrir forspáralgrími til að reikna út fjölda símtala sem á að búa til til að hámarka niðurstöðuna",
+      "MAXCONCURRENTCALLS": "Hámarksfjöldi samtíma símtala sem forritið leyfir við þessa herferðð (0=ótakmarkað)",
+      "CONCURRENTCALLS": "Hámarksfjöldi samtíma símtala sem hringir út fyrir þessa herferð mun koma frá",
+      "ORIGINATECALLERIDNAME": "Auðkenni út hringingar \"Caller Id Nafn\"",
+      "ORIGINATECALLERIDNUMBER": "Auðkenni út hringinar \"Outgoing Caller Id númer\"",
+      "ORIGINATETIMEOUT": "Tími (í sekúndum) fyrir úthringinguna til að tengjast, annars er staðan stillt á ekki svarað ",
+      "QUEUETIMEOUT": "Tími (í sekúndum) sem símtal bíður í biðröð áður en því er sleppt (Min 1 og Max 999)",
+      "GLOBALMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaðan",
+      "CONGESTIONMAXRETRY": "Hámarksfjöldi sem hringt er í tengilið áður en forrið telur hann lokaðan, eða þegar símtalið mistókst vegna þess að ekki tókst að ná sambandi",
+      "CONGESTIONRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki náðist í",
+      "BUSYMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en samskiptum við hann sé álitið lokið, þegar símtalið mistókst vegna anna",
+      "BUSYRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur, tengiliður var upptekin",
+      "NOANSWERMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaður, þegar ekki tókst að ná sambandi",
+      "NOANSWERRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki svaraði",
+      "NOSUCHNUMBERMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaður, þegar ekki er svarað",
+      "NOSUCHNUMBERRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið, því númerið svarar ekki",
+      "DROPMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en talið er að hann sé lokaður, þegar símtalið mistókst",
+      "DROPRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið ef símtalið mistókst",
+      "ABANDONEDMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann telur hann lokaðan, þegar það mistekst að hætta við símtal.",
+      "ABANDONEDRETRYTIME": "Tími í mínútum áður en reynt er að hringja afur vegna þess að ekki var svarað áður",
+      "MACHINEMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talin lokaður ef samtalið mistekst",
+      "MACHINERETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki svaraði",
+      "AGENTREJECTMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en samskiptum er álitið lokið, þegar símtal mistókst vegna höfnunar þjónustufulltrúa",
+      "AGENTREJECTRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið þar sem samskipti rofnuðu vegna höfnun þjónustufulltrúa",
+      "CALLADDITIONALPHONEAFTERMIN": "Settu inn biðtíma",
+      "GLOBALINTERVAL": "Tímabil kl. frá til, þar sem forritið hefur leyfi til að hringja í tengiliði. Við tökum ekki ábyrgð á því: vinsamlega veittu því athygli þegar þú breytir þessum reit, vegna þess að þú gætir farið út fyrir leyfilegan tíma samkvæmt landslögum og reglugerðum um sjálfvirka hringingu.",
+      "NAME": "Aðeins tölur, stafir og sérták (._) eru studdir",
+      "MANDATORYDISPOSITIONPAUSEID": "Tími á nauðsynlegu hléi á milli úthringinga",
+      "PREVIEW_AUTO_RECALL_ME": "Ef þetta er virkjað mun kerfið sjálfkrafa búa sjálfvirkt uppkall; annars verður fulltrúinn að gera það handvirkt"
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Tónlist á bið",
+    "ANNOUNCETOAGENT": "Tilkynna til þjónustufulltrúa",
+    "ANNOUNCEMENTS": "Tilkynningar",
+    "ADVANCEDPREVIEW": "Ítarlegt",
+    "ADVANCED": "Ítarlegt",
+    "ADVANCE": "Ítarlegt",
+    "ANNOUNCEFREQUENCY": "Tilkynna tíðni",
+    "MINANNOUNCEFREQUENCY": "Lámarkstíðni skilaboða",
+    "PERIODICANNOUNCEFREQUENCY": "Tíðni endurtekningar á tilkynningum",
+    "RANDOMPERIODICANNOUNCE": "Handahófs reglubundin tilkynning",
+    "ANNOUNCEHOLDTIME": "Tilkynna biðtíma",
+    "ANNOUNCECALLERPOSITION": "Tilkynna um stöðu þess sem hringir",
+    "ANNOUNCEPOSITIONLIMIT": "Tilkynna afmarkaða stöðu",
+    "REPORTHOLDTIMEAGENT": "Skýrsla um hlé tíma fulltrúa",
+    "PERIODICANNOUNCE": "Endurteknar tilkynningar",
+    "HOLDTIMEANNOUNCE": "Biðtíma tilkynning",
+    "YOUARENEXTANNOUNCE": "'Þú ert næstur' skilaboð",
+    "THEREAREANNOUNCE": "'Það eru' Tilkynning",
+    "WAITINGCALLSANNOUNCE": "Bið skilaboð",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Áætlaður biðtími tilkynntur",
+    "MINUTESANNOUNCE": "Tími tilkynningar",
+    "MINUTEANNOUNCE": "Tími tilkynningar",
+    "SECONDSANNOUNCE": "Tilkynningar sekúndur",
+    "THANKYOUANNOUNCE": "'TTakk fyrir' Tilkynning",
+    "AUTOPAUSE": "Sjálfvirk pása",
+    "AFTERCALLWORK": "Seinna símtal - After Call Work",
+    "AFTERCALLWORKDURATION": "Lengd eftir vinnu símtal",
+    "RINGINUSE": "Hringingar í notkun",
+    "MEMBERDELAY": "Notanda seinkun",
+    "TIMEOUTRESTART": "Endursetning á útrunnum tíma",
+    "MONITORFORMAT": "Snið á upptöku",
+    "SETINTERFACEVARIABLES": "Stillingar á viðmótsbreytum",
+    "SETQUEUEVARIABLES": "Stilla biðraða breytum",
+    "SETQUEUEENTRYVARIABLES": "Stillingar á biðraðar grunn breytum",
+    "CONTEXT": "Samhengi",
+    "SAVE": "Geyma",
+    "SETTINGS": "Stillingar",
+    "INBOUNDROUTES": "Innkomandi reglur",
+    "PHONENUMBER": "Síma númer",
+    "ADD_INBOUNDROUTE": "Bæta við innhringi reglu",
+    "EDIT_INBOUNDROUTE": "Breyta innleið ",
+    "DELETE_INBOUNDROUTE": "Eyða innleið",
+    "ACTIONS": "Aðgerðir ",
+    "OUTBOUNDROUTES": "Úthringi reglur",
+    "DESTINATIONPATTERN": "Mynstur áfangastaðar ",
+    "ADD_OUTBOUNDROUTE": "Bæta við útleið",
+    "EDIT_OUTBOUNDROUTE": "Breyta útleið",
+    "DELETE_OUTBOUNDROUTE": "Eyða útleið",
+    "CUTDIGITS": "Klipptu tölustafi\n",
+    "RECORDING": "Upptaka",
+    "RECORDINGFORMAT": "Snið á upptöku",
+    "INTERNALROUTES": "Innanhúss routing",
+    "ADD_INTERNALROUTE": "Bæta við innanahús reglu",
+    "EDIT_INTERNALROUTE": "Breyta innri leið",
+    "DELETE_INTERNALROUTE": "Eyða innri leið",
+    "CONTEXTS": "Samhengi",
+    "ADD_CONTEXT": "Bæta við texta",
+    "EDIT_CONTEXT": "Breyta samhengi",
+    "DELETE_CONTEXT": "Eyða samhengi\n",
+    "VOICEMAILS": "Talskilaboð",
+    "ADD_VOICEMAIL": "Bæta við talhólf",
+    "EDIT_VOICEMAIL": "Breyta talhólfsskilaboðum",
+    "DELETE_VOICEMAIL": "Eyða talhólfsskilaboðum\n",
+    "FULLNAME": "Fullt nafn",
+    "EMAIL": "Tölvupóstur",
+    "MAILBOX": "Pósthólf",
+    "PASSWORD": "Lykilorð",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "TIMEZONE": "Tímabelti",
+    "ATTACH": "Hengdu við",
+    "ENVELOPE": "Umslag",
+    "DELETE": "Eyða",
+    "EMAILBODY": "Meginmál tölvupósts",
+    "EMAILSUBJECT": "Efni tölvupósts\n",
+    "MAXSECONDS": "Hámark í sekúndum",
+    "MAXMESSAGES": "Hámarks fjöldi skilaboða",
+    "MESSAGES": "Skilaboð",
+    "SORT": "Raða",
+    "ADD_MUSICONHOLD": "Bæta við tónlist á bið",
+    "MUSICONHOLDS": "Tónlist á bið",
+    "EDIT_MUSICONHOLD": "Breyta tónlist í bið",
+    "DELETE_MUSICONHOLD": "Eyða tónlist á bið ",
+    "DIRECTORY": "Skrá",
+    "AUDIOFILES": "Hljóðskrár",
+    "RECORDINGS": "Upptökur",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Forskeyti",
+    "OPTIONS": "Valmöguleikar",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Bæta við ChanSpy",
+    "EDIT_CHANSPY": "Breyta ChanSpy",
+    "DELETE_CHANSPY": "Eyða ChanSpy",
+    "AGENTS": "Þjónustufulltrúar",
+    "TELEPHONES": "Símar",
+    "QUEUES": "Biðraðir",
+    "QUEUE_CALLS": "Biðraðar hringing",
+    "QUEUE_PARAMETERS": "Stillingar á biðröð",
+    "ABANDONED_CALLS": "Hringingar sem hætt var við ",
+    "OUTBOUND_CALLS": "Úthringi samtal",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Hringdu",
+    "INTERNALDIAL": "Hringja innanhúss",
+    "EXTERNALDIAL": "Utanaðkomandi hringing",
+    "RINGGROUP": "Hringi hópur",
+    "PLAYBACK": "Endurspilun",
+    "QUEUE": "Biðröð",
+    "SET": "Sett",
+    "VOICEMAIL": "Talskilaboð",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Skella á ",
+    "CUSTOM": "Sérsniðin",
+    "PROJECT": "Cally-Square verkefni",
+    "TECHNOLOGY/RESOURCE": "Tæknigrunnur",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
+    "EDIT_APP": "Breyta umsókn",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_APP": "Eyða umsókn\n",
+    "INTERVALS": "Iímabilum",
+    "USER": "Notandi",
     "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "PHONE": "Sími",
+    "AUDIO_FILES": "Hljóðskrár",
+    "ANNOUNCE_OVERRIDES": "Tilkynna yfirskrift",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
+    "RULE": "Regla",
+    "POSITION": "Staða",
+    "ANSWER": "Svara",
+    "VALUE": "Gildi",
     "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "EXTENSION": "Framlenging",
+    "PRIORITY": "forgangur",
+    "HANGUP_CAUSE": "Orsök þess að það var skellt á ",
+    "OUTBOUNDDIAL": "Úthringing",
+    "CALLER_ID": "Auðkenni þess sem hringir",
+    "NO_MESSAGE_AVAILABLE": "Engin skilaboð ",
+    "NO_SOUND_AVAILABLE": "Ekkert hljóð til staðar",
+    "VOICERECORDINGS": "Tal upptökur",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
+    "VOICE": "Tal",
+    "REALTIME": "Rauntími",
     "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
+    "VOICEMAIL_CONTEXT": "Innihald",
+    "NO_MOHSOUND_AVAILABLE": "Engin tónlist á bið til staðar",
+    "FILE": "Skrá",
+    "ADD_MOHSOUND": "Bæta við tónlist á bið",
+    "DOWNLOAD_MOHSOUND": "Hlaða niður tónlist á bið",
+    "DELETE_MOHSOUND": "Eyða tónlist á bið ",
+    "UNIQUEID": "Einkvætt auðkenni",
+    "AGENT": "Þjónustufulltrúi",
+    "TYPE": "Tegund",
+    "RATING": "RatingEinkunn",
+    "AUDIO": "Hljóð",
+    "DATE": "Dagsetning",
+    "NEW_VOICEQUEUE": "Ný tal biðröð",
+    "NEW_INBOUNDROUTE": "Ný innhringi regla",
+    "NEW_OUTBOUNDROUTE": "Ný úthringi regla",
+    "NEW_INTERNALROUTE": "Ný innanhús regla",
+    "NEW_CONTEXT": "Nýtt innihald",
+    "NEW_VOICEMAIL": "Ný talhólfa skilaboð",
+    "NEW_MUSICONHOLD": "Ný tónlist á bið",
+    "NEW_CHANSPY": "Nýtt ChanSpy",
+    "PENALTY": "Refsing",
+    "ADD_TEAM_TO_VOICEQUEUE": "Bæta við teymi við Raddröð",
+    "ADD_AGENT_TO_VOICEQUEUE": "Bæta þjónustufulltrúa við raddbiðröð",
+    "EDIT_DIAL": "Breyta hringja",
+    "EDIT_AGI": "Breyta AGI",
+    "EDIT_INTERNALDIAL": "Breyta innri hringingu",
+    "EDIT_EXTERNALDIAL": "Breyta úthringingum",
+    "EDIT_RINGGROUP": "Breyta Ring Group",
+    "EDIT_PLAYBACK": "Breyta bili\n",
+    "EDIT_QUEUE": "Breyta röð ",
+    "EDIT_SET": "Breyta Set",
+    "EDIT_GOTO": "Breyta GoTo",
+    "EDIT_HANGUP": "Breyta skella á ",
+    "EDIT_CUSTOM": "Breyta sérsniði",
+    "DURATION": "Lengd",
+    "RECEIVED_AT": "Móttekið kl.",
+    "YES": "Já",
+    "NO": "Nei",
+    "HANGUPCAUSE_1": "1 = Óúthlutað númer",
+    "HANGUPCAUSE_16": "16 = Venjuleg símtalshreinsun",
+    "HANGUPCAUSE_17": "17 = Notandi upptekinn",
+    "HANGUPCAUSE_18": "18 = Enginn notandi svarar (símatæki ekki tengt)",
+    "HANGUPCAUSE_21": "21 = Símtali hafnað",
+    "HANGUPCAUSE_22": "22 = Númeri breytt",
+    "HANGUPCAUSE_27": "27 = Áfangastaður í ólagi",
+    "HANGUPCAUSE_38": "38 = Netkerfi ekki í lagi\n",
+    "HANGUPCAUSE_41": "41 = Tímabundin bilun",
+    "RANDOM": "Handahófs",
+    "ALPHABETICAL": "Stafrófsröð",
+    "NO_APPS_AVAILABLE": "Engin forrit í boði",
+    "DOWNLOAD_VOICERECORDING": "Hlaða niður raddupptöku",
+    "DELETE_VOICERECORDING": "Eyða raddupptöku\n",
+    "INTERNAL": "innanhúss",
+    "PHONE_STATE": "Staða á símanum",
+    "PHONE_STATUS": "Staða á símanum",
+    "REGISTERED": "Skráð",
+    "UNREGISTERED": "Óskráð",
+    "LAGGED": "Seinkun",
+    "REACHABLE": "Hægt að ná í",
+    "UNREACHABLE": "Ekki hægt að ná í",
+    "UNKNOWN": "Óþekktur",
+    "NOT_INUSE": "Ekki í notkun",
+    "INUSE": "Í notkun",
+    "BUSY": "Upptekinn",
+    "INVALID": "Ekki gilt",
+    "UNAVAILABLE": "Ekki hægt að ná í",
+    "RINGING": "Hringir",
+    "ONHOLD": "Á bið",
+    "RING": "Hringja",
+    "UP": "UPP",
+    "INFO": "Uppl.",
     "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "REGISTRY": "Skráning",
+    "NO_REGISTRY": "Engin skráning",
+    "LOGGED_IN": "Innskráning (SIP connected)",
+    "PAUSED": "Hlé",
+    "DISPOSITION": "Fyrirkomulag",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "CALLER": "Hringjandi",
+    "TOTAL": "Samtals",
+    "ANSWERED": "Svarað",
+    "ABANDONED": "Hætt við ",
+    "UNMANAGED": "Óstjórnað",
+    "REDIRECT_TO_NUMBER": "Færðu á númer",
+    "REDIRECT_TO_AGENT": "Færðu til fulltrúa",
+    "CLOSING": "Lokun",
+    "AVG_HOLD_TIME": "Meðal biðtími",
+    "AVG_DURATION": "Meðal engd",
+    "AVG_BILLABLE": "Meðal reikningshæft",
+    "SOURCE": "Uppruni",
+    "DESTINATION": "Áfangastaður",
+    "REJECTED": "Hafnað",
+    "FAILED": "Mistókst",
+    "CALLED": "Hringt",
+    "CONNECTED": "Tengdur",
+    "NO_RATING": "Engin einkunn",
+    "EDIT_VOICERECORDING": "Breyta raddupptöku",
+    "APPLICATION_NAME": "Nafn umsóknar",
+    "ARGUMENTS": "Rök",
+    "EDIT_QUEUECAMPAIGN": "Breyta herferð\n",
+    "LISTADD_QUEUECAMPAIGN": "Bættu við lista",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Bæta við svarta listann",
+    "TEAMADD_QUEUECAMPAIGN": "Bættu við hópi",
+    "AGENTADD_QUEUECAMPAIGN": "Bæta við þjónustufulltrúa",
+    "DELETE_QUEUECAMPAIGN": "Eyða herferð",
+    "DELETE_IVRCAMPAIGN": "Eyða herferð",
+    "EDIT_IVRCAMPAIGN": "Breyta herferð",
+    "NEW_IVRCAMPAIGN": "Ný IVR herferð",
+    "ADD_IVRCAMPAIGN": "Bæta við IVR herferð",
+    "LISTADD_IVRCAMPAIGN": "Bættu við lista",
+    "BLACKLISTADD_IVRCAMPAIGN": "Bæta við svarta listann ",
+    "ENABLED": "Virkt",
+    "READY": "Tilbúinn",
+    "PAUSE": "Hlé",
+    "UNPAUSE": "Enda hlé",
+    "DEFAULT_PAUSE": "Sjálfgefið hlé\n",
+    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við röð herferðar",
+    "AGENTSADD_QUEUE": "Bæta þjónustufulltrúa við röð herferðar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "ALL_LISTS": "Allir listar",
+    "SELECTED_LISTS": "Valdir listar",
+    "ALL_AGENTS": "Allir þjónustufulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "WAITING_FOR_AGENT": "Beðið eftir fulltrúa",
+    "TOTAL_OFFERED": "Samtals í boði",
+    "RUNNING": "Keyrir",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk er ekki hægt að tengja",
+    "AGENTS_NOT_LOGGED": "Þjónustufulltrúi ekki skráður inn",
+    "NOT_ACTIVE": "Ekki virkur",
+    "IS_DISACTIVED": "Afvirkjað",
+    "BACKUPTRUNK": "Bakgrunnsfylling",
+    "GLOBALINTERVAL": "Alþjóðlegt bil",
+    "RESCHEDULED_CONTACTS": "endurraða tengiliðum",
+    "INTERVAL_IS_OVERTIME": "Ötan marka",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Utan bils (Alþjóðlegt) - Out of Interval (Global)",
+    "INTERVAL_IS_NULL": "Tímabil er ekkert",
+    "TIMEZONE_UNKNOW": "Tímabelti óþekkt",
+    "INTERVAL_IS_EMPTY": "Tímabil er autt",
+    "TOTAL_MANAGED": "Samtals stjórnað",
+    "OPEN": "Opið",
+    "FRESH": "Ferskt",
+    "CLOSED": "Lokað",
+    "ALWAYS": "Alltaf",
+    "NEVER": "Aldrey",
+    "ONLY_IF_OPEN": "Aðeins ef opið",
+    "CHECKDUPLICATE": "Athuga tvíendurtekningar",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á bls.",
+    "OF": "af",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
+    "OPENCHANNEL": "Opnar rásir",
     "FAX": "Fax",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
+    "TEAMS_ASSOCIATION": "Liðsfélagar",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Skilyrt pása staða",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í gangi",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjáupptaka í boði",
+    "PREVIEW_AUTO_RECALL_ME": "Sjálfvirknivæað endurtekningu á mínum símtölum"
   }
 }
index ee8630a..58a50e1 100644 (file)
@@ -1,12 +1,12 @@
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Tempo de Login",
-    "PAUSE_TIME": "Tempo de Pausa",
+    "LOGIN_TIME": "Tempo de login",
+    "PAUSE_TIME": "Tempo de pausa",
     "CUTDIGIT": "Cortar Dígitos",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Número de Chamada de Saída Aleatória",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Caller ID Number Aleatório para Chamadas de Saída",
     "CLONE_IVRCAMPAIGN": "Clonar Campanha",
-    "CLONE_QUEUECAMPAIGN": "Clonar Fila de Campanha",
-    "ABANDONEDCALLS": "Chamadas Abandonadas em Filas",
+    "CLONE_QUEUECAMPAIGN": "Clonar Campanha de Discagem",
+    "ABANDONEDCALLS": "Chamadas Abandonadas",
     "HOPPERWIDGET": "Sumário",
     "RESETLIST_IVRCAMPAIGN": "Redefinir Listas",
     "RESETLIST_QUEUECAMPAIGN": "Redefinir Listas",
     "RESETLIST": "Redefinir Listas",
     "SELECTALL": "Selecionar Tudo",
     "UNSELECTALL": "Desmarcar Todos",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
-    "TIMEOUT": "Tempo Esgotado",
-    "CALLYSQUAREPROJECTPREVIEW": "Visualização do Projeto Cally Square",
-    "CALLYSQUAREPROJECTPREVIEW2": "Pós Visualização do Projeto Cally Square",
-    "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
-    "CALLYSQUAREPROJECT2": "Projeto Cally Square após a fila",
+    "NO_AVAILABLE_INFO": "Nenhuma Informação disponível",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Projeto Cally Square para Método Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Projeto Cally Square após Método Preview",
+    "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois, mesmo que o agente desligue a chamada",
+    "CALLYSQUAREPROJECT2": "Projeto Cally Square após a Fila",
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "PARTIALPAUSE": "Pausa Parcial",
     "ALL": "Todos",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "TIMER": "Tempo",
     "MOVE_HOPPERFINAL": "Restaurar contato",
     "RESTORECONTACTS": "Restaurar Contatos",
-    "NO_SUCH_NUMBER": "Sem número semelhante",
-    "DIALORDERBYSCHEDULEDAT": "Encomendar por agendamento",
+    "NO_SUCH_NUMBER": "Número Inválido",
+    "DIALORDERBYSCHEDULEDAT": "Ordenar por hora do Agendamento",
     "ASC": "ASC",
     "DESC": "DESC",
     "RECALLAGENT": "Rechamar Agente",
-    "DIALRECALLINQUEUE": "Rechamar na fila",
-    "DIALRECALLMETIMEOUT": "Lembre-me de tempo limite [min]",
-    "RECALLME": "Lembre-me",
-    "RECALLFAILEDTIMEOUT": "Rechamada falhou",
-    "PREVIEW_CAMPAIGN": "Pré-visualização de Campanhas",
-    "PREVIEW_CAMPAIGNS": "Pré-visualização de Campanhas",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
+    "DIALRECALLINQUEUE": "Agendamento Global",
+    "DIALRECALLMETIMEOUT": "Timeout de Agendamento [min]",
+    "RECALLME": "Agendamento",
+    "RECALLFAILEDTIMEOUT": "Rechamada Falhou",
+    "PREVIEW_CAMPAIGN": "Campanhas Preview",
+    "PREVIEW_CAMPAIGNS": "Campanhas Preview",
+    "AMD": "Answering Machine Detection (AMD)",
     "AMDTOTALANALYSISTIME": "Tempo Total de Análise",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Silêncio inicial",
-    "AMDGREETING": "Cumprimento",
-    "AMDAFTERGREETINGSILENCE": "Silêncio após saudação",
-    "AMDSILENCETHRESHOLD": "Limiar de silêncio",
-    "AMDMINWORDLENGTH": "Comprimento mínimo da palavra",
-    "AMDBETWEENWORDSSILENCE": "Silêncio entre palavras",
-    "AMDMAXIMUMWORDLENGTH": "Comprimento máximo da palavra",
+    "AMDINITIALSILENCE": "Silêncio no Início",
+    "AMDGREETING": "Saudação",
+    "AMDAFTERGREETINGSILENCE": "Silêncio após Saudação",
+    "AMDSILENCETHRESHOLD": "Limite de Silêncio",
+    "AMDMINWORDLENGTH": "Tamanho Mínimo de Palavras",
+    "AMDBETWEENWORDSSILENCE": "Silêncio entre Palavras",
+    "AMDMAXIMUMWORDLENGTH": "Tamanho Máximo de Palavras",
     "AMDMAXIMUMNUMBEROFWORDS": "Número Máximo de Palavras",
-    "GOTO_QUEUECAMPAIGN": "Ir para campanhas de fila em tempo real",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Ir para campanhas de fila em tempo real",
-    "GOTO_IVRCAMPAIGN": "Ir para campanhas de IVR em tempo real",
-    "GOTOREALTIME_IVRCAMPAIGN": "Ir para campanhas de IVR em tempo real",
+    "GOTO_QUEUECAMPAIGN": "Visualizar Campanha de Discagem em Tempo Real",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Visualizar Campanha de Discagem em Tempo Real",
+    "GOTO_IVRCAMPAIGN": "Visualizar Campanhas de URA em Tempo Real",
+    "GOTOREALTIME_IVRCAMPAIGN": "Visualizar Campanha de URA em Tempo Real",
     "LOGOUT": "Sair",
-    "EDIT_CAMPAIGN": "Editar campanha",
+    "EDIT_CAMPAIGN": "Editar Campanha",
     "LIMITED": "Limitado",
     "IVR_CAMPAIGNS": "Campanhas de URA",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Campanhas de fila",
+    "QUEUECAMPAIGNS": "Campanhas de Discagem",
     "IVRCAMPAIGNS": "Campanhas de URA",
-    "MANAGED": "Gerenciou",
-    "AVAILABLE_CONTACTS_FINISHED": "Contatos disponíveis terminados",
-    "HISTORY": "História",
+    "MANAGED": "Gerenciado",
+    "AVAILABLE_CONTACTS_FINISHED": "Término de contatos disponivéis",
+    "HISTORY": "Histórico",
     "SCHEDULEDAT": "Agendado em",
-    "HOPPERBLACKS": "Lista negra do funil",
+    "HOPPERBLACKS": "Blacklist Funil",
     "NO_HOPPERBLACK_AVAILABLE": "Nenhum item disponível",
-    "HOPPERFINALS": "Final do funil",
+    "HOPPERFINALS": "Funil Final",
     "NO_HOPPERFINAL_AVAILABLE": "Nenhum item disponível",
-    "HOPPERHISTORIES": "Histórico de chamadas",
+    "HOPPERHISTORIES": "Histórico de Chamadas",
     "NO_HOPPERHISTORY_AVAILABLE": "Nenhum item disponível",
     "DELETE_HOPPERHISTORY": "Excluir",
     "DELETE_HOPPERFINAL": "Excluir",
-    "CONTACTID": "ID do contato",
-    "STARTTIME": "Hora de início",
-    "RESPONSETIME": "Tempo de resposta",
-    "ENDTIME": "Fim do tempo",
+    "CONTACTID": "ID do Contato",
+    "STARTTIME": "Hora de Início",
+    "RESPONSETIME": "Tempo de Resposta",
+    "ENDTIME": "Hora do Término",
     "STATUS": "Status",
     "HOPPERS": "Funil",
     "NO_HOPPER_AVAILABLE": "Nenhum item disponível",
     "EDIT_HOPPER": "Editar Funil",
     "DELETE_HOPPER": "Excluir Funil",
     "FINAL": "Final",
-    "BLACKLIST": "Lista negra",
+    "BLACKLIST": "Blacklist",
     "NAME": "Nome",
     "VOICEQUEUES": "Filas de Voz",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecione tudo",
-    "SELECT_NONE": "Selecione nenhum",
-    "DELETE_VOICEDISPOSITION": "Excluir disposição de voz",
-    "EDIT_VOICEDISPOSITION": "Editar disposição de voz",
-    "EDIT_VOICEQUEUE": "Editar fila de voz",
-    "DELETE_VOICEQUEUE": "Excluir fila de voz",
-    "MOHSOUNDS": "Moh Sounds",
+    "SELECT_ALL": "Selecione Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
+    "DELETE_VOICEDISPOSITION": "Excluir Qualificação de Voz",
+    "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
+    "EDIT_VOICEQUEUE": "Editar Fila de Voz",
+    "DELETE_VOICEQUEUE": "Excluir Fila de Voz",
+    "MOHSOUNDS": "Áudios de Música de Espera",
     "STRATEGY": "Estratégia",
     "DESCRIPTION": "Descrição",
-    "INTERVAL": "Intervalo de tempo",
-    "ADD_VOICEQUEUE": "Adicionar fila de voz",
-    "NEW_QUEUECAMPAIGN": "Campanha Nova Fila",
+    "INTERVAL": "Intervalo de Tempo",
+    "ADD_VOICEQUEUE": "Adicionar Fila de Voz",
+    "NEW_QUEUECAMPAIGN": "Nova Campanha de Discagem",
     "ACTIVE": "Ativo",
     "METHOD": "Método",
-    "POWERLEVEL": "Nível de poder",
-    "DROPRATE": "Taxa de queda",
-    "AGENTBUSYFACTOR": "Fator Ocupado do Agente",
+    "POWERLEVEL": "Power Level",
+    "DROPRATE": "Taxa de Perda",
+    "AGENTBUSYFACTOR": "Fator de Ocupação do Agente",
     "PREDICTIVEOPTIMIZATION": "Otimização Preditiva",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem de otimização preditiva",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem de Otimização Preditiva",
     "PREDICTIVEINTERVAL": "Intervalo Preditivo",
-    "ADD_QUEUECAMPAIGN": "Adicionar campanha de fila",
+    "ADD_QUEUECAMPAIGN": "Adicionar Campanha de Discagem",
     "CAMPAIGN": "Campanha",
     "MAXCONCURRENTCALLS": "Máximo de chamadas simultâneas",
-    "CONCURRENTCALLS": "Máximo de chamadas simultâneas",
+    "CONCURRENTCALLS": "Máximo de Chamadas Simultâneas",
     "ORIGINATE": "Originar",
-    "ORIGINATECALLERIDNAME": "Nome do identificador de chamadas",
-    "ORIGINATECALLERIDNUMBER": "Número de Identificação de Chamadas",
-    "ORIGINATETIMEOUT": "Originar o tempo limite",
-    "QUEUEOPTIONS": "Opções de fila",
-    "QUEUETIMEOUT": "Tempo limite da fila",
+    "ORIGINATECALLERIDNAME": "Caller ID Name",
+    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
+    "ORIGINATETIMEOUT": "Tempo de Toque",
+    "QUEUEOPTIONS": "Opções de Fila",
+    "QUEUETIMEOUT": "Timeout da Fila",
     "CALLYSQUAREPROJECT": "Projeto Cally Square",
-    "RETRYANDFREQUENCY": "Repetir configurações",
+    "RETRYANDFREQUENCY": "Configurações de Nova Tentativa",
     "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Máximo de tentativas",
+    "GLOBALMAXRETRY": "Máximo de Tentativas",
     "CONGESTION": "Congestionamento",
-    "CONGESTIONMAXRETRY": "Máximo de tentativas",
-    "CONGESTIONRETRYTIME": "Repetir tempo [min]",
-    "BUSYMAXRETRY": "Máximo de tentativas",
-    "BUSYRETRYTIME": "Repetir tempo [min]",
-    "NOANSWER": "Sem resposta",
-    "NOANSWERMAXRETRY": "Máximo de tentativas",
-    "NOANSWERRETRYTIME": "Repetir tempo [min]",
-    "QUEUE_PARAMS": "Parâmetros da fila",
+    "CONGESTIONMAXRETRY": "Máximo de Tentativas",
+    "CONGESTIONRETRYTIME": "Tempo para nova Tentativa [min]",
+    "BUSYMAXRETRY": "Máximo de Tentativas",
+    "BUSYRETRYTIME": "Tempo para nova Tentativa [min]",
+    "NOANSWER": "Sem Atendimento",
+    "NOANSWERMAXRETRY": "Máximo de Tentativas",
+    "NOANSWERRETRYTIME": "Tempo para nova Tentativa [min]",
+    "QUEUE_PARAMS": "Parâmetros da Fila",
     "ORIGINATED": "Originado",
     "MESSAGE": "Mensagem",
-    "DROPPED": "Desistiu",
+    "DROPPED": "Perdida",
     "CREATED_AT": "Criado em",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Aplicativo personalizado."
+      "CUSTOM_APPLICATION": "(*) - Custom application."
     },
     "ERRORS": {
       "CUTDIGIT_REQUIRED": "Campo obrigatório",
       "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chamar add.phone após min. deve ser maior ou igual a",
       "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório"
     },
     "GENERAL": "Geral",
-    "AGENTTIMEOUT": "Tempo limite do agente",
-    "MAXLENGTH": "Comprimento máximo",
-    "RETRY": "Tente novamente",
-    "WRAPUPTIME": "Tempo de finalização",
+    "AGENTTIMEOUT": "Timeout do Agente",
+    "MAXLENGTH": "Tamanho máximo",
+    "RETRY": "Nova Tentativa",
+    "WRAPUPTIME": "Tempo de Pós-atendimento",
     "WEIGHT": "Peso",
-    "JOINWHENEMPTY": "Entrar quando estiver vazio",
-    "LEAVEWHENEMPTY": "Deixar quando vazio",
+    "JOINWHENEMPTY": "Permitir que o cliente fique em espera quando não tiver nenhum agente logado",
+    "LEAVEWHENEMPTY": "Desconectar clientes em espera quando todos os agentes deslogarem",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Se for maior que 0, gera aleatoriamente os últimos dígitos correspondentes do Número de Identificação de Chamadas de Saída",
-      "TIMEOUT": "Número de segundos para tocar o agente na fila",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR quando um agente atender (o IVR será direcionado para o agente)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR quando um cliente desligar ou não puder ser acessado (o IVR será direcionado para o agente)",
-      "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
-      "CALLYSQUAREPROJECT2": "iSelecionando um projeto IVR, o discador encaminhará a chamada para o IVR após a fila (se a fila terminar por tempo limite)",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Se for maior que 0, gera aleatoriamente os últimos dígitos do Caller ID Number para Ligações Saíntes",
+      "TIMEOUT": "Número de segundos para o agente atender (tempo de ring)",
+      "CALLYSQUAREPROJECTPREVIEW": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA quando um agente atender (a URA será direcionada para o agente)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA quando um cliente desligar ou não puder ser alcançado (a URA será direcionada para o agente)",
+      "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square depois que o agente desligue a chamada",
+      "CALLYSQUAREPROJECT2": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA após a fila (se a fila tiver alcançado o timeout de espera)",
       "DIALORDERBYSCHEDULEDAT": "Obter contatos do funil (descendente ou ascendente).",
-      "DIALRECALLINQUEUE": "Reprogramar chamada para agentes na fila",
-      "DIALRECALLMETIMEOUT": "Intervalo de tempo (em minutos) para o período de validade lembrar me",
+      "DIALRECALLINQUEUE": "Reagendar chamada para agentes na Fila",
+      "DIALRECALLMETIMEOUT": "Intervalo de tempo (em minutos) para o período de validade do Agendamento",
       "PRIORITY": "Prioridade na lista",
-      "AMDMAXIMUMWORDLENGTH": "Duração máxima permitida de um único enunciado de voz",
-      "AMDMINWORDLENGTH": "Duração mínima de uma voz para ser considerada uma palavra",
-      "AMDSILENCETHRESHOLD": "Se o nível médio de ruído em uma amostra não atingir esse valor, de uma escala de 0 a 32767, consideraremos como silêncio",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Tempo máximo permitido para o algoritmo decidir se o áudio representa um HUMANO ou uma MÁQUINA",
-      "AMDGREETING": "Comprimento máximo de uma saudação. Se excedido, o resultado é a detecção como MÁQUINA",
-      "AMDINITIALSILENCE": "Duração máxima do silêncio antes da saudação. Se excedido, o resultado é a detecção como MÁQUINA",
-      "AMDACTIVE": "Ativar ou desativar tentativas de detecção de secretária eletrônica",
-      "AMDBETWEENWORDSSILENCE": "Duração mínima de silêncio após uma palavra para considerar o áudio que segue como uma nova palavra",
-      "AMDMAXIMUMNUMBEROFWORDS": "Número máximo de palavras na saudação. Se REACHED, então o resultado é a detecção como uma MÁQUINA",
-      "CALLYSQUAREPROJECT": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR antes da fila",
+      "AMDMAXIMUMWORDLENGTH": "Duração máxima permitida de uma único expressão de Voz",
+      "AMDMINWORDLENGTH": "Duração mínima de uma Voz para ser considerada uma palavra",
+      "AMDSILENCETHRESHOLD": "Se o nível médio de ruído em uma amostra não atingir esse valor, de uma escala de 0 a 32767, então consideraremos como silêncio",
+      "AMDTOTALANALYSISTIME": "Tempo máximo permitido para o algoritmo decidir se o áudio representa um HUMANO ou uma MÁQUINA",
+      "AMDAFTERGREETINGSILENCE": "Silêncio detectado depois da saudação. Se excedido, é classificado como HUMANO ",
+      "AMDGREETING": "Tamanho máximo de uma saudação. Se excedido, é classificado como MÁQUINA",
+      "AMDINITIALSILENCE": "Duração máxima do silêncio antes da saudação. Se excedido, é classificado como MÁQUINA",
+      "AMDACTIVE": "Habilita ou desabilita identificação de Mensagem da Operadora",
+      "AMDBETWEENWORDSSILENCE": "Duração mínima de silêncio após uma palavra para considerar que trata-se de uma nova palavra",
+      "AMDMAXIMUMNUMBEROFWORDS": "Número máximo de palavras na saudação. Se excedido, é classificado como uma MÁQUINA",
+      "CALLYSQUAREPROJECT": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA antes da fila",
       "PREFIX": "Prefixo telefônico",
       "ACTIVE": "Ativo",
-      "AGENTTIMEOUT": "Quanto tempo (em segundos) para ligar ao dispositivo de um agente",
-      "MAXLENGTH": "Número máximo de chamadores que podem estar aguardando em uma fila (0 = ilimitado)",
-      "RETRY": "Quanto tempo (em segundos) aguardar antes de chamar o próximo agente na fila quando o tempo limite do agente expirar",
-      "WRAPUPTIME": "Por quanto tempo (em segundos) manter um agente indisponível em uma fila após concluir uma chamada",
+      "AGENTTIMEOUT": "Quanto tempo (em segundos) de toque no agente",
+      "MAXLENGTH": "Número máximo de clientes que podem aguardar em uma fila (0 = ilimitado)",
+      "RETRY": "Quanto tempo (em segundos) aguardar antes de chamar o próximo agente quando atingir o timeout do agente",
+      "WRAPUPTIME": "Por quanto tempo (em segundos) manter um agente indisponível após concluir uma chamada",
       "WEIGHT": "Usado para determinar a prioridade se os agentes estiverem associados a mais de uma fila",
-      "JOINWHENEMPTY": "Se um chamador for adicionado à fila, quando nenhum agente estiver disponível",
-      "LEAVEWHENEMPTY": "Se um chamador for expulso da fila quando nenhum agente estiver disponível",
-      "ANNOUNCEFREQUENCY": "Com que frequência anunciar a posição do chamador e / ou o tempo estimado de espera na fila (0 = desabilitar)",
-      "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do chamador muda com frequência)",
-      "PERIODICANNOUNCEFREQUENCY": "Freqüência de anúncios periódicos para o chamador",
-      "ANNOUNCEPOSITIONLIMIT": "Usado se você definiu a posição de anúncio como \"limite\" ou \"mais\"",
-      "AFTERCALLWORKDURATION": "Comprimento de pausa acionado pela opção After Call Work",
-      "MEMBERDELAY": "Insere um atraso antes de o chamador e o agente na fila se conectarem",
-      "MUSICONHOLD": "Define a classe de música a ser usada para uma fila específica",
-      "ANNOUNCETOAGENT": "Reproduz um anúncio para o agente que atende a chamada (por exemplo, para que ele saiba de qual fila o chamador está vindo)",
+      "JOINWHENEMPTY": "Permite adicionar um cliente à fila, quando nenhum agente estiver logado",
+      "LEAVEWHENEMPTY": "Descarta todos os clientes da fila, quando nenhum agente estiver logado",
+      "ANNOUNCEFREQUENCY": "Com qual frequência anunciar a posição do cliente e/ou o tempo estimado de espera na fila (0 = desabilitar)",
+      "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do cliente muda com frequência)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o cliente",
+      "ANNOUNCEPOSITIONLIMIT": "Usado caso tenha definido o anúncio da posição do cliente como \"limit\" ou \"more\"",
+      "AFTERCALLWORKDURATION": "Duração da Pausa de Pós-Atendimento (ACW)",
+      "MEMBERDELAY": "Insere um atraso antes de conectar o cliente e o agente",
+      "MUSICONHOLD": "Define a música de espera a ser usado para uma fila específica",
+      "ANNOUNCETOAGENT": "Reproduz um anúncio para o agente ao atender a chamada (por exemplo, para que o agente saiba de qual fila a ligaçao pertence)",
       "RANDOMPERIODICANNOUNCE": "Se sim, reproduz os anúncios periódicos em ordem aleatória",
-      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Sim / Não / Uma vez)",
-      "ANNOUNCECALLERPOSITION": "Usado para definir se a posição do chamador na fila deve ser anunciada: No = never; Sim = sempre; Limite = somente se estiver dentro do limite definido pelo limite de posição de anúncio; Mais = apenas se estiver além do valor definido pelo limite de posição de anúncio",
-      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do chamador seja informado ao agente na fila antes da conexão",
+      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Usado para definir se a posição do cliente na fila deve ser anunciada: No=nunca; Yes=sempre; Limit=somente se estiver dentro do limite definido; More=apenas se estiver além do limite definido",
+      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do cliente em fila seja informado ao agente antes da conexão",
       "PERIODICANNOUNCE": "Conjunto de anúncios periódicos a serem reproduzidos (na ordem)",
-      "HOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Tempo de espera”. Indefinido = sem anúncio",
-      "YOUARENEXTANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
-      "THEREAREANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
-      "WAITINGCALLSANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = \"O tempo de espera estimado atual é\". Indefinido = sem anúncio",
-      "MINUTESANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
-      "MINUTEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
-      "SECONDSANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
-      "THANKYOUANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
-      "AFTERCALLWORK": "Se ativado, o agente será definido em Pausar após concluir uma chamada",
-      "AUTOPAUSE": "Ativa/desativa a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado em todas as filas às quais ele pertence",
-      "RINGINUSE": "Para evitar / permitir o envio de chamadas para membros cujo status é Em uso",
-      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status BUSY ou CONGESTION é recebido do canal",
-      "MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver inativo, as chamadas não serão gravadas",
-      "CONTEXT": "Permite que um chamador saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o chamador inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução da planta de discagem continuará lá.",
-      "SETINTERFACEVARIABLES": "Se configurado como yes, antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a documentação do wiki: <a target = \"_blank \" href = \"https: //wiki.xcallymotion\"). com / display / XMV / Queue + Campanhas # QueueCampaigns-Advanced \"> clique aqui </a>)",
-      "SETQUEUEVARIABLES": "Se configurado como yes, antes de o chamador se conectar com um agente de fila e sair da fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">clique aqui </a>)",
-      "SETQUEUEENTRYVARIABLES": "Se definido como yes, logo antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\"> clique aqui </a>)",
-      "RECORDING": "Ativar gravação de chamadas",
-      "VOICEMAIL_CONTEXT": "O contexto da extensão relativa",
-      "METHOD": "Método discador de saída",
-      "POWERLEVEL": "Número de contatos para ligar para qualquer agente disponível",
-      "PREDICTIVEOPTIMIZATION": "Um fator para otimizar no algoritmo de previsão",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem com base no fator de otimização preditiva selecionado",
+      "HOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “O tempo de esperá é”. Indefinido = sem anúncio",
+      "YOUARENEXTANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
+      "THEREAREANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
+      "WAITINGCALLSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = \"O tempo estimado de espera atual é\". Indefinido = sem anúncio",
+      "MINUTESANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
+      "MINUTEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
+      "SECONDSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
+      "THANKYOUANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
+      "AFTERCALLWORK": "Se habilitado, o agente será colocado em Pausa após concluir uma chamada",
+      "AUTOPAUSE": "Habilita/Desabilita a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado automaticamente em todas as filas às quais ele pertence",
+      "RINGINUSE": "Para blouqer/permitir o envio de chamadas para agentes cujo status é Ocupado",
+      "TIMEOUTRESTART": "Se sim, isso redefine o timeout para um agente atender quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
+      "MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver desativado, as chamadas não serão gravadas",
+      "CONTEXT": "Permite que o cliente saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o cliente inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução do plano de discagem continuará lá.",
+      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a documentação do wiki: <a target = \"_blank \" href = \"https: //wiki.xcallymotion\"). com / display / XMV / Queue + Campanhas # QueueCampaigns-Advanced \"> clique aqui </a>)",
+      "SETQUEUEVARIABLES": "Se configurado como sim, antes de o cliente se conectar com um agente e deixar a fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">clique aqui </a>)",
+      "SETQUEUEENTRYVARIABLES": "Se definido como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\"> clique aqui </a>)",
+      "RECORDING": "Habilitar gravação de chamadas",
+      "VOICEMAIL_CONTEXT": "O contexto da extensão",
+      "METHOD": "Método de discagem automática",
+      "POWERLEVEL": "Número de contatos simultâneos a discar por agente disponível",
+      "PREDICTIVEOPTIMIZATION": "Fator para otimizar no algoritmo de previsão",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem baseado no fator selecionado de otimização preditiva",
       "PREDICTIVEINTERVAL": "Intervalo de tempo (em minutos) considerado pelo algoritmo de previsão para calcular a quantidade de chamadas a serem geradas para otimizar o resultado",
-      "MAXCONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador de saída para esta campanha (0 = ilimitado)",
-      "CONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador de saída desta campanha",
-      "ORIGINATECALLERIDNAME": "Nome do ID do chamador de saída",
-      "ORIGINATECALLERIDNUMBER": "Número de identificação do chamador de saída",
-      "ORIGINATETIMEOUT": "Tempo (em segundos) para a chamada de saída estabelecer uma conexão, caso contrário, o status será definido como Sem resposta",
+      "MAXCONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador para esta campanha (0 = ilimitado)",
+      "CONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador nesta campanha",
+      "ORIGINATECALLERIDNAME": "Caller ID Name para Ligações Saíntes",
+      "ORIGINATECALLERIDNUMBER": "Caller ID Number para Ligações Saíntes",
+      "ORIGINATETIMEOUT": "Tempo (em segundos) para a discador estabelecer uma conexão, caso contrário, o status será definido como não atendido [Tempo de Ring]",
       "QUEUETIMEOUT": "Tempo (em segundos) que uma chamada aguardará na fila antes de ser descartada (Min 1 e Max 999)",
-      "GLOBALMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado",
-      "CONGESTIONMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para congestionamento",
+      "GLOBALMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado",
+      "CONGESTIONMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completar por congestionamento)",
       "CONGESTIONRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a congestionamento",
-      "BUSYMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para ocupado",
-      "BUSYRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à ocupação",
-      "NOANSWERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado, quando a chamada falha por falta de resposta",
-      "NOANSWERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à falta de resposta",
-      "GLOBALINTERVAL": "Intervalo de tempo global durante o qual o discador pode chamar contatos. Nós recusamos a responsabilidade: prestar atenção quando você modificar este campo, porque você pode deixar de cumprir as Leis e Regulamentos nacionais do Autodialer.",
+      "BUSYMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por ocupado)",
+      "BUSYRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à ocupado",
+      "NOANSWERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por não atendimento)",
+      "NOANSWERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido ao não atendimento",
+      "GLOBALINTERVAL": "Intervalo de tempo global permitido para discagem. ATENÇÃO: cuidado quando você modificar este campo, porque você pode descumprir Leis e Regulamentações nacionais.",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
-      "PREDICTIVEMAXTHRESHOLD": "Se a porcentagem de agentes disponíveis na janela de tempo, comparada com os agentes disponíveis no momento da previsão, exceder o limite máximo configurado, a previsão recalcula a previsão.",
-      "PREDICTIVEMINTHRESHOLD": "Se a porcentagem de agentes disponíveis na janela de tempo, comparada com os agentes disponíveis no momento da previsão, exceder o limite mínimo configurado, a previsão recalcula a previsão.",
-      "ABANDONEDMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por abandono",
-      "ABANDONEDRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido ao abandono",
-      "AGENTREJECTMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por rejeição do agente",
-      "AGENTREJECTRETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à rejeição do agente",
-      "DROPMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por queda",
-      "DROPRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à queda",
-      "MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha na máquina",
-      "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
-      "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
-      "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
-      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número",
-      "PREVIEW_AUTO_RECALL_ME": "Se ativado, o sistema irá gerar automaticamente as chamadas Recall Me; caso contrário, o agente deve fazer isso manualmente",
-      "PREVIEW_RECALL_ME_REMINDER": "Se habilitado, o sistema enviará uma notificação ao agente n minutos (de acordo com o intervalo de tempo definido nas configurações gerais) antes de gerar o recall me",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa durante a qualificação obrigatória",
+      "PREDICTIVEMAXTHRESHOLD": "Se a porcentagem de agentes disponíveis em uma janela de tempo, comparada com agentes disponíveis no intervalo de previsão, exceder o limite máximo configurado, a algoritmo recalculará a previsão.",
+      "PREDICTIVEMINTHRESHOLD": "Se a porcentagem de agentes disponíveis em uma janela de tempo, comparada com agentes disponíveis no intervalo de previsão, exceder o limite mínimo configurado, a algoritmo recalculará a previsão.",
+      "ABANDONEDMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por abandono)",
+      "ABANDONEDRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a abandono",
+      "AGENTREJECTMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por rejeição do agente)",
+      "AGENTREJECTRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à rejeição do agente",
+      "DROPMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por descarte)",
+      "DROPRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à descarte",
+      "MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por mensagem da operadora)",
+      "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à mensagem da operadora",
+      "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a número inválido",
+      "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por número inválido)",
+      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à número inválido",
+      "PREVIEW_AUTO_RECALL_ME": "Se habilitado, o sistema ligará automaticamente para os Agendamentos; caso contrário, o agente deverá fazer isso manualmente",
+      "PREVIEW_RECALL_ME_REMINDER": "Se habilitado, o sistema enviará uma notificação ao agente n minutos (de acordo com o intervalo de tempo definido nas configurações gerais) antes de ligar para os Agendamentos",
       "TIMEZONE": "Especifique o fuso horário"
     },
-    "MUSICONHOLD": "Música em espera",
-    "ANNOUNCETOAGENT": "Anunciar ao agente",
+    "MUSICONHOLD": "Música de Espera",
+    "ANNOUNCETOAGENT": "Anunciar para Agente",
     "ANNOUNCEMENTS": "Anúncios",
     "ADVANCEDPREVIEW": "Avançado",
     "ADVANCED": "Avançado",
     "ADVANCE": "Avançado",
-    "ANNOUNCEFREQUENCY": "Anunciar Freqüência",
+    "ANNOUNCEFREQUENCY": "Frequência do Anúncio",
     "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio",
-    "PERIODICANNOUNCEFREQUENCY": "Periodicidade periódica de anúncio",
-    "RANDOMPERIODICANNOUNCE": "Anúncio periódico aleatório",
-    "ANNOUNCEHOLDTIME": "Anunciar tempo de espera",
-    "ANNOUNCECALLERPOSITION": "Anunciar a posição do chamador",
-    "ANNOUNCEPOSITIONLIMIT": "Anunciar limite de posição",
-    "REPORTHOLDTIMEAGENT": "Tempo de espera do agente de relatório",
-    "PERIODICANNOUNCE": "Anúncio periódico",
-    "HOLDTIMEANNOUNCE": "Anúncio no tempo de espera",
-    "YOUARENEXTANNOUNCE": "'Você é o próximo' Anunciar",
-    "THEREAREANNOUNCE": "'Existem' Anuncio",
-    "WAITINGCALLSANNOUNCE": "Chamadas em Espera Anuncio",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Anuncio estimado em tempo de espera",
-    "MINUTESANNOUNCE": "Anuncio Minutos",
-    "MINUTEANNOUNCE": "Anuncio Minuto",
-    "SECONDSANNOUNCE": "Anuncio Segundos",
-    "THANKYOUANNOUNCE": "Anuncio 'Obrigado'",
+    "PERIODICANNOUNCEFREQUENCY": "Periodicidade do Anúncio Periódico",
+    "RANDOMPERIODICANNOUNCE": "Anúncio Periódico Aleatório",
+    "ANNOUNCEHOLDTIME": "Anunciar Tempo de Espera",
+    "ANNOUNCECALLERPOSITION": "Anunciar a Posição do Cliente",
+    "ANNOUNCEPOSITIONLIMIT": "Anunciar atingimento Limite de Posição",
+    "REPORTHOLDTIMEAGENT": "Relatório de Tempo de Espera do Agente",
+    "PERIODICANNOUNCE": "Anúncio Periódico",
+    "HOLDTIMEANNOUNCE": "Anúncio de Tempo de Espera",
+    "YOUARENEXTANNOUNCE": "Anúncio 'Você é o próximo'",
+    "THEREAREANNOUNCE": "Anúncio 'Existem'",
+    "WAITINGCALLSANNOUNCE": "Anúncio de Chamadas em Espera",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Anúncio estimado em tempo de espera",
+    "MINUTESANNOUNCE": "Anúncio Minutos",
+    "MINUTEANNOUNCE": "Anúncio Minuto",
+    "SECONDSANNOUNCE": "Anúncio Segundos",
+    "THANKYOUANNOUNCE": "Anúncio 'Obrigado'",
     "AUTOPAUSE": "Pausa Automática",
-    "AFTERCALLWORK": "Tempo após chamada",
-    "AFTERCALLWORKDURATION": "Duração do Tempo após chamada",
-    "RINGINUSE": "Toque em uso",
-    "MEMBERDELAY": "Atraso de Membro",
-    "TIMEOUTRESTART": "Tempo esgotado Reiniciar",
-    "MONITORFORMAT": "Formato de gravação",
-    "SETINTERFACEVARIABLES": "Definir variáveis \200b\200bde interface",
-    "SETQUEUEVARIABLES": "Definir as variáveis \200b\200bda fila",
-    "SETQUEUEENTRYVARIABLES": "Definir as Variáveis \200b\200bde Entrada da Fila",
+    "AFTERCALLWORK": "Pós-Atendimento (ACW)",
+    "AFTERCALLWORKDURATION": "Duração do Pós-Atendimento",
+    "RINGINUSE": "Toque quando Ocupado",
+    "MEMBERDELAY": "Delay ao Conectar",
+    "TIMEOUTRESTART": "Restart Timeout",
+    "MONITORFORMAT": "Formato de Gravação",
+    "SETINTERFACEVARIABLES": "Definir Variáveis \200b\200bde Interface",
+    "SETQUEUEVARIABLES": "Definir as Variáveis \200b\200bde Fila",
+    "SETQUEUEENTRYVARIABLES": "Definir as Variáveis \200b\200bde Fila",
     "CONTEXT": "Contexto",
     "SAVE": "Salvar",
-    "SETTINGS": "Definições",
-    "INBOUNDROUTES": "Rotas de entrada",
-    "PHONENUMBER": "Número de telefone",
-    "ADD_INBOUNDROUTE": "Adicionar rota de entrada",
-    "EDIT_INBOUNDROUTE": "Editar rota de entrada",
-    "DELETE_INBOUNDROUTE": "Excluir rota de entrada",
+    "SETTINGS": "Configurações",
+    "INBOUNDROUTES": "Rotas de Entrada",
+    "PHONENUMBER": "Número do Telefone",
+    "ADD_INBOUNDROUTE": "Adicionar Rota de Entrada",
+    "EDIT_INBOUNDROUTE": "Editar Rota de Entrada",
+    "DELETE_INBOUNDROUTE": "Excluir Rota de Entrada",
     "ACTIONS": "Ações",
-    "OUTBOUNDROUTES": "Rotas de saída",
-    "DESTINATIONPATTERN": "Padrão de destino",
-    "ADD_OUTBOUNDROUTE": "Adicionar rota de saída",
-    "EDIT_OUTBOUNDROUTE": "Editar rota de saída",
-    "DELETE_OUTBOUNDROUTE": "Excluir rota de saída",
-    "CUTDIGITS": "Cut Digits",
+    "OUTBOUNDROUTES": "Rotas de Saída",
+    "DESTINATIONPATTERN": "Padrão de Destino",
+    "ADD_OUTBOUNDROUTE": "Adicionar Rota de Saída",
+    "EDIT_OUTBOUNDROUTE": "Editar Rota de Saída",
+    "DELETE_OUTBOUNDROUTE": "Excluir Rota de Saída",
+    "CUTDIGITS": "Cortar Dígitos",
     "RECORDING": "Gravação",
     "RECORDINGFORMAT": "Formato de gravação",
     "INTERNALROUTES": "Rotas Internas",
-    "ADD_INTERNALROUTE": "Adicionar rota interna",
-    "EDIT_INTERNALROUTE": "Editar rota interna",
-    "DELETE_INTERNALROUTE": "Excluir rota interna",
+    "ADD_INTERNALROUTE": "Adicionar Rota Interna",
+    "EDIT_INTERNALROUTE": "Editar Rota Interna",
+    "DELETE_INTERNALROUTE": "Excluir Rota Interna",
     "CONTEXTS": "Contextos",
     "ADD_CONTEXT": "Adicionar Contexto",
     "EDIT_CONTEXT": "Editar Contexto",
     "DELETE_CONTEXT": "Excluir Contexto",
-    "VOICEMAILS": "Correios de voz",
-    "ADD_VOICEMAIL": "Adicionar Correios de voz",
-    "EDIT_VOICEMAIL": "Editar Correios de voz",
-    "DELETE_VOICEMAIL": "Excluir Correios de voz",
+    "VOICEMAILS": "Correios de Voz",
+    "ADD_VOICEMAIL": "Adicionar Correio de Voz",
+    "EDIT_VOICEMAIL": "Editar Correio de Voz",
+    "DELETE_VOICEMAIL": "Excluir Correio de Voz",
     "FULLNAME": "Nome Completo",
     "EMAIL": "Email",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Entrada",
     "PASSWORD": "Senha",
     "CONFIRM_PASSWORD": "Confirmar Senha",
-    "TIMEZONE": "Fuso horário",
+    "TIMEZONE": "Fuso Horário",
     "ATTACH": "Anexo",
     "ENVELOPE": "Envelope",
     "DELETE": "Excluir",
     "EMAILBODY": "Corpo do Email",
-    "EMAILSUBJECT": "Assunto do email",
-    "MAXSECONDS": "Max Segundos",
-    "MAXMESSAGES": "Max Mensagens",
+    "EMAILSUBJECT": "Assunto do Email",
+    "MAXSECONDS": "Segundos máximos",
+    "MAXMESSAGES": "Mensagens máximas",
     "MESSAGES": "Mensagens",
     "SORT": "Ordenar",
-    "ADD_MUSICONHOLD": "Adicionar música em espera",
-    "MUSICONHOLDS": "Música em espera",
-    "EDIT_MUSICONHOLD": "Editar música em espera",
-    "DELETE_MUSICONHOLD": "Excluir música em espera",
+    "ADD_MUSICONHOLD": "Adicionar Música de Espera",
+    "MUSICONHOLDS": "Música de Espera",
+    "EDIT_MUSICONHOLD": "Editar Música de Espera",
+    "DELETE_MUSICONHOLD": "Excluir Música de Espera",
     "DIRECTORY": "Diretório",
-    "AUDIOFILES": "Arquivos de áudio",
+    "AUDIOFILES": "Arquivos de Áudio",
     "RECORDINGS": "Gravações",
-    "CHANSPY": "Espião",
+    "CHANSPY": "Intercalação",
     "PREFIX": "Prefixo",
     "OPTIONS": "Opções",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Adicionar Espião",
-    "EDIT_CHANSPY": "Editar Espião",
-    "DELETE_CHANSPY": "Excluir Espião",
+    "ADD_CHANSPY": "Adicionar Intercalação",
+    "EDIT_CHANSPY": "Editar Intercalação",
+    "DELETE_CHANSPY": "Excluir Intercalação",
     "AGENTS": "Agentes",
     "TELEPHONES": "Telefones",
     "QUEUES": "Filas",
     "QUEUE_CALLS": "Filas de Chamada",
-    "QUEUE_PARAMETERS": "Parametros da Fila",
+    "QUEUE_PARAMETERS": "Parâmetros da Fila",
     "ABANDONED_CALLS": "Chamadas Abandonadas",
     "OUTBOUND_CALLS": "Chamadas de Saída",
     "AGI": "AGI",
     "DIAL": "Discar",
-    "INTERNALDIAL": "Discar Interno",
-    "EXTERNALDIAL": "Discar Externo",
-    "RINGGROUP": "Toque de Grupo",
+    "INTERNALDIAL": "Discagem Interna",
+    "EXTERNALDIAL": "Discagem Externa",
+    "RINGGROUP": "Grupo de Toque",
     "PLAYBACK": "Reprodução",
     "QUEUE": "Fila",
-    "SET": "Set",
-    "VOICEMAIL": "Correio de voz",
+    "SET": "Definir",
+    "VOICEMAIL": "Correio de Voz",
     "GOTO": "GoTo",
     "HANGUP": "Desligar",
-    "CUSTOM": "Personalizadas",
+    "CUSTOM": "Custom",
     "PROJECT": "Projeto Cally-Square",
     "TECHNOLOGY/RESOURCE": "Tecnologia/Recurso",
     "URL": "URL",
-    "EDIT_APP": "Editar aplicativo",
-    "EDIT_INTERVAL": "Editar intervalo",
-    "DELETE_APP": "Excluir aplicativo",
+    "EDIT_APP": "Editar Aplicativo",
+    "EDIT_INTERVAL": "Editar Intervalo",
+    "DELETE_APP": "Excluir Aplicativo",
     "INTERVALS": "Intervalos",
     "USER": "Usuário",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
-    "AUDIO_FILES": "Arquivos de áudio",
-    "ANNOUNCE_OVERRIDES": "Substituir Anuncio",
+    "AUDIO_FILES": "Arquivos de Áudio",
+    "ANNOUNCE_OVERRIDES": "Substituir Anúncio",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "POSITION": "Posição",
-    "ANSWER": "Responda",
+    "ANSWER": "Atendida",
     "VALUE": "Valor",
     "MAILBOX@CONTEXT": "Mailbox@Context",
     "EXTENSION": "Extensão",
     "PRIORITY": "Prioridade",
-    "HANGUP_CAUSE": "Questão Hangup",
-    "OUTBOUNDDIAL": "Discagem de saída",
-    "CALLER_ID": "Identificador de chamadas",
+    "HANGUP_CAUSE": "Causas de Desligamento",
+    "OUTBOUNDDIAL": "Discagem de Saída",
+    "CALLER_ID": "Caller ID",
     "NO_MESSAGE_AVAILABLE": "Nenhuma mensagem disponível",
-    "NO_SOUND_AVAILABLE": "Nenhum som disponível",
-    "VOICERECORDINGS": "Gravações de voz",
-    "CHANSPIES": "Espião",
+    "NO_SOUND_AVAILABLE": "Nenhum áudio disponível",
+    "VOICERECORDINGS": "Gravações de Voz",
+    "CHANSPIES": "Intercalaçã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",
+    "NO_MOHSOUND_AVAILABLE": "Não há música de espera disponível",
     "FILE": "Arquivo",
-    "ADD_MOHSOUND": "Adicionar som de música em espera",
-    "DOWNLOAD_MOHSOUND": "Download musica de tempo de espera",
-    "DELETE_MOHSOUND": "Excluir som de música em espera",
+    "ADD_MOHSOUND": "Adicionar arquivo de Música de Espera",
+    "DOWNLOAD_MOHSOUND": "Download arquivo de Música em Espera",
+    "DELETE_MOHSOUND": "Excluir arquivo de Música de Espera",
     "UNIQUEID": "Unique ID",
     "AGENT": "Agente",
     "TYPE": "Tipo",
     "RATING": "Avaliação",
-    "AUDIO": "Audio",
+    "AUDIO": "Áudio",
     "DATE": "Data",
-    "NEW_VOICEQUEUE": "Nova fila de voz",
-    "NEW_INBOUNDROUTE": "Nova rota de saída",
-    "NEW_OUTBOUNDROUTE": "Nova rota de saída",
-    "NEW_INTERNALROUTE": "Nova rota interna",
-    "NEW_CONTEXT": "Novo contexto",
-    "NEW_VOICEMAIL": "Nova mensagem de voz",
-    "NEW_MUSICONHOLD": "Nova música em espera",
-    "NEW_CHANSPY": "Novo Espião",
+    "NEW_VOICEQUEUE": "Nova Fila de Voz",
+    "NEW_INBOUNDROUTE": "Nova Rota de Entrada",
+    "NEW_OUTBOUNDROUTE": "Nova Rota de Saída",
+    "NEW_INTERNALROUTE": "Nova Rota Interna",
+    "NEW_CONTEXT": "Novo Contexto",
+    "NEW_VOICEMAIL": "Novo Correio de Voz",
+    "NEW_MUSICONHOLD": "Nova Música de Espera",
+    "NEW_CHANSPY": "Nova Intercalação",
     "PENALTY": "Penalidade",
-    "ADD_TEAM_TO_VOICEQUEUE": "Adicionar equipe à fila de voz",
-    "ADD_AGENT_TO_VOICEQUEUE": "Adicionar agente à fila de voz",
-    "EDIT_DIAL": "Editar discagem",
+    "ADD_TEAM_TO_VOICEQUEUE": "Adicionar Equipe à Fila de Voz",
+    "ADD_AGENT_TO_VOICEQUEUE": "Adicionar Agente à Fila de Voz",
+    "EDIT_DIAL": "Editar Discagem",
     "EDIT_AGI": "Editar AGI",
-    "EDIT_INTERNALDIAL": "Editar discagem interna",
-    "EDIT_EXTERNALDIAL": "Editar discagem externa",
-    "EDIT_RINGGROUP": "Editar grupo de toques",
-    "EDIT_PLAYBACK": "Editar reprodução",
-    "EDIT_QUEUE": "Editar fila",
-    "EDIT_SET": "Editar conjunto",
+    "EDIT_INTERNALDIAL": "Editar Discagem Interna",
+    "EDIT_EXTERNALDIAL": "Editar Discagem Externa",
+    "EDIT_RINGGROUP": "Editar Grupo de Toque",
+    "EDIT_PLAYBACK": "Editar Reprodução",
+    "EDIT_QUEUE": "Editar Fila",
+    "EDIT_SET": "Editar Conjunto",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_HANGUP": "Editar Desligar",
-    "EDIT_CUSTOM": "Editar Personalizar",
+    "EDIT_CUSTOM": "Editar Custom",
     "DURATION": "Duração",
     "RECEIVED_AT": "Recebido em",
     "YES": "Sim",
     "NO": "Não",
-    "HANGUPCAUSE_1": "1 = Número não alocado",
-    "HANGUPCAUSE_16": "16 = Limpeza de chamada normal",
-    "HANGUPCAUSE_17": "17 = Ocupado pelo usuário",
-    "HANGUPCAUSE_18": "18 = Nenhuma resposta do usuário (dispositivo teleônico não conectado)",
-    "HANGUPCAUSE_21": "21 = Chamada rejeitada",
-    "HANGUPCAUSE_22": "22 = Número alterado",
-    "HANGUPCAUSE_27": "27 = Destino fora de ordem",
-    "HANGUPCAUSE_38": "38 = Rede fora de ordem",
-    "HANGUPCAUSE_41": "41 = Falha temporária",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
     "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Baixar Gravação de Voz",
-    "DELETE_VOICERECORDING": "Excluir gravação de voz",
+    "DOWNLOAD_VOICERECORDING": "Downlaod de Gravação de Voz",
+    "DELETE_VOICERECORDING": "Excluir Gravação de Voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do Telefone",
     "PHONE_STATUS": "Status do Telefone",
     "REACHABLE": "Alcançável",
     "UNREACHABLE": "Inacessível",
     "UNKNOWN": "Desconhecido",
-    "NOT_INUSE": "Fora de uso",
-    "INUSE": "Em uso",
+    "NOT_INUSE": "Disponível ",
+    "INUSE": "Ocupado",
     "BUSY": "Ocupado",
-    "INVALID": "Invalido",
+    "INVALID": "Inválido",
     "UNAVAILABLE": "Indisponível",
     "RINGING": "Tocando",
-    "ONHOLD": "Em espera",
+    "ONHOLD": "Em Espera",
     "RING": "Toque",
     "UP": "Up",
-    "INFO": "Informação",
+    "INFO": "Info",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Sem registro",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "PAUSED": "Pausado",
-    "DISPOSITION": "Disposição",
+    "DISPOSITION": "Qualificação",
     "WAITING": "Esperando",
     "TALKING": "Falando",
     "DID": "DID",
-    "CALLER": "Chamador",
+    "CALLER": "Origem",
     "TOTAL": "Total",
-    "ANSWERED": "Respondidas",
-    "ABANDONED": "Abandonados",
-    "UNMANAGED": "Não gerenciado",
+    "ANSWERED": "Atendidas",
+    "ABANDONED": "Abandonadas",
+    "UNMANAGED": "Não Gerenciado",
     "REDIRECT_TO_NUMBER": "Redirecionar para um número",
     "REDIRECT_TO_AGENT": "Redirecionar para um agente",
-    "CLOSING": "Fechamento",
-    "AVG_HOLD_TIME": "Tempo médio de espera",
-    "AVG_DURATION": "Duração média",
+    "CLOSING": "Encerramento",
+    "AVG_HOLD_TIME": "Tempo Médio de Espera",
+    "AVG_DURATION": "Duração Média",
     "AVG_BILLABLE": "Média faturável",
     "SOURCE": "Fonte",
     "DESTINATION": "Destino",
     "REJECTED": "Rejeitado",
     "FAILED": "Falhou",
-    "CALLED": "Chamado",
+    "CALLED": "Destino",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem avaliação",
-    "EDIT_VOICERECORDING": "Editar gravação de voz",
+    "EDIT_VOICERECORDING": "Editar Gravação de Voz",
     "APPLICATION_NAME": "Nome da Aplicação",
     "ARGUMENTS": "Argumentos",
-    "EDIT_QUEUECAMPAIGN": "Editar campanha",
-    "LISTADD_QUEUECAMPAIGN": "Adicionar lista",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Adicionar lista negra",
-    "TEAMADD_QUEUECAMPAIGN": "Adicionar equipe",
-    "AGENTADD_QUEUECAMPAIGN": "Adicionar agente",
-    "DELETE_QUEUECAMPAIGN": "Excluir campanha",
-    "DELETE_IVRCAMPAIGN": "Excluir campanha",
-    "EDIT_IVRCAMPAIGN": "Editar campanha",
-    "NEW_IVRCAMPAIGN": "Nova campanha de URA",
-    "ADD_IVRCAMPAIGN": "Adicionar Campanha URA",
+    "EDIT_QUEUECAMPAIGN": "Editar Campanha de Discagem",
+    "LISTADD_QUEUECAMPAIGN": "Adicionar Lista",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Adicionar Blacklist",
+    "TEAMADD_QUEUECAMPAIGN": "Adicionar Equipe",
+    "AGENTADD_QUEUECAMPAIGN": "Adicionar Agente",
+    "DELETE_QUEUECAMPAIGN": "Excluir Campanha de Discagem",
+    "DELETE_IVRCAMPAIGN": "Excluir Campanha",
+    "EDIT_IVRCAMPAIGN": "Editar Campanha",
+    "NEW_IVRCAMPAIGN": "Nova Campanha de URA",
+    "ADD_IVRCAMPAIGN": "Adicionar Campanha de URA",
     "LISTADD_IVRCAMPAIGN": "Adicionar Lista",
-    "BLACKLISTADD_IVRCAMPAIGN": "Adicionar lista negra",
+    "BLACKLISTADD_IVRCAMPAIGN": "Adicionar Blacklist",
     "ENABLED": "Ativado",
     "READY": "Pronto",
     "PAUSE": "Pausa",
     "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de campanha",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de campanha",
-    "ALL_TEAMS": "Todas as equipes",
+    "AGENTADD_QUEUE": "Adicionar Agente à Campanha de Fila",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de Campanha",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
-    "ALL_LISTS": "Todas as listas",
+    "ALL_LISTS": "Todas as Listas",
     "SELECTED_LISTS": "Listas Selecionadas",
-    "ALL_AGENTS": "Todos os agentes",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "WAITING_FOR_AGENT": "Esperando por agente",
-    "TOTAL_OFFERED": "Total oferecido",
-    "RUNNING": "Funcionamento",
-    "TRUNK_IS_NOT_REACHABLE": "Tronco não é acessível",
-    "AGENTS_NOT_LOGGED": "Agente não registrado",
-    "NOT_ACTIVE": "Não ativo",
+    "WAITING_FOR_AGENT": "Esperando por Agente",
+    "TOTAL_OFFERED": "Total Oferecido",
+    "RUNNING": "Executando",
+    "TRUNK_IS_NOT_REACHABLE": "Tronco está indisponível",
+    "AGENTS_NOT_LOGGED": "Nenhum agente logado",
+    "NOT_ACTIVE": "Inativo",
     "IS_DISACTIVED": "Desativado",
     "BACKUPTRUNK": "Tronco de Backup",
-    "GLOBALINTERVAL": "Intervalo global",
-    "RESCHEDULED_CONTACTS": "Contatos reprogramados",
-    "INTERVAL_IS_OVERTIME": "Fora do intervalo",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do intervalo (global)",
-    "INTERVAL_IS_NULL": "O intervalo é nulo",
-    "TIMEZONE_UNKNOW": "Fuso Horário Desconhecido",
-    "INTERVAL_IS_EMPTY": "O intervalo está vazio",
-    "TOTAL_MANAGED": "Total gerenciado",
+    "GLOBALINTERVAL": "Intervalo Global",
+    "RESCHEDULED_CONTACTS": "Contatos reagdendados",
+    "INTERVAL_IS_OVERTIME": "Fora do Intervalo",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do Intervalo (Global)",
+    "INTERVAL_IS_NULL": "Intervalo é Nulo",
+    "TIMEZONE_UNKNOW": "Fuso horário Desconhecido",
+    "INTERVAL_IS_EMPTY": "Intervalo está Vazio",
+    "TOTAL_MANAGED": "Total Gerenciado",
     "OPEN": "Abrir",
     "FRESH": "Recente",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "ALWAYS": "Sempre",
     "NEVER": "Nunca",
-    "ONLY_IF_OPEN": "Apenas se aberto",
-    "CHECKDUPLICATE": "Verificar duplicidade",
+    "ONLY_IF_OPEN": "Apenas se Aberto",
+    "CHECKDUPLICATE": "Verificar Duplicado",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do ",
     "CHAT": "Chat",
     "MAIL": "Email",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "RECALLINQUEUE": "Lembre-se na fila",
-    "REFRESH_SCHEDULED_CALLS": "Atualizar chamadas agendadas",
-    "SCHEDULED_CALLS": "Chamadas agendadas",
+    "RECALLINQUEUE": "Agendamento global",
+    "REFRESH_SCHEDULED_CALLS": "Atualizar Chamadas Agendadas",
+    "SCHEDULED_CALLS": "Chamadas Agendadas",
     "SELECT_CAMPAIGN": "Selecione Campanha",
-    "SELECT_DATE": "Selecione a data",
-    "SELECT_TYPE": "Selecione o tipo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "ANSWERING_MACHINE": "Secretária eletrônica",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa de disposição obrigatória",
-    "ANSWERED_CALLS": "Chamadas atendidas",
+    "SELECT_DATE": "Selecione a Data",
+    "SELECT_TYPE": "Selecione o Tipo",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "ANSWERING_MACHINE": "Mensagem da Operadora",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para qualificação obrigatória",
+    "ANSWERED_CALLS": "Chamadas Atendidas",
     "AVG_TALK_TIME": "Tempo Médio de Conversação",
-    "CURRENT_INTERVAL": "Intervalo atual",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Coleta de dados em Progressive",
+    "CURRENT_INTERVAL": "Intervalo Atual",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Coleta de dados em Método Progressive",
     "ONE_CALL_EVERY": "Uma chamada a cada",
     "PREDICTIVEMAXTHRESHOLD": "Limite máximo preditivo [%]",
     "PREDICTIVEMINTHRESHOLD": "Limite mínimo preditivo [%]",
     "PREDICTIVE_IS_NOT_RUNNING": "Preditivo não está sendo executado",
-    "PREDICTIVE_IS_RUNNING": "O Predictive está em execução",
-    "PREVIOUS_INTERVAL": "Intervalo anterior",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Mostrar informações preditivas",
-    "THRESHOLDS": "Limiares",
-    "TOTAL_CALLS": "Total de chamadas",
-    "ABANDONEDMAXRETRY": "Tentativas máximas",
-    "ABANDONEDRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "AGENTREJECT": "Rejeição de agente",
-    "AGENTREJECTMAXRETRY": "Tentativas máximas",
-    "AGENTREJECTRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "DROP": "Solta",
-    "DROPMAXRETRY": "Tentativas máximas",
-    "DROPRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "MACHINE": "Máquina",
-    "MACHINEMAXRETRY": "Tentativas máximas",
-    "MACHINERETRYTIME": "Tempo de Nova Tentativa [min]",
-    "NOSUCHNUMBER": "Esse número não existe",
-    "NOSUCHNUMBERMAXRETRY": "Tentativas máximas",
-    "NOSUCHNUMBERRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "PREDICTIVE_IS_RUNNING": "Preditivo está em execução",
+    "PREVIOUS_INTERVAL": "Intervalo Anterior",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Mostrar Informações Preditivas",
+    "THRESHOLDS": "Limites",
+    "TOTAL_CALLS": "Total de Chamadas",
+    "ABANDONEDMAXRETRY": "Máximo de Tentativas",
+    "ABANDONEDRETRYTIME": "Tempo para nova Tentativa [min]",
+    "AGENTREJECT": "Rejeição de Agente",
+    "AGENTREJECTMAXRETRY": "Máximo de Tentativas",
+    "AGENTREJECTRETRYTIME": "Tempo para nova Tentativa [min]",
+    "DROP": "Perdida",
+    "DROPMAXRETRY": "Máximo de Tentativas",
+    "DROPRETRYTIME": "Tempo para nova Tentativa [min]",
+    "MACHINE": "Mensagem da Operadora",
+    "MACHINEMAXRETRY": "Máximo de Tentativas",
+    "MACHINERETRYTIME": "Tempo de nova Tentativa [min]",
+    "NOSUCHNUMBER": "Número Inválido",
+    "NOSUCHNUMBERMAXRETRY": "Máximo de Tentativas",
+    "NOSUCHNUMBERRETRYTIME": "Tempo de nova Tentativa [min]",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
+    "SECOND_LEVEL_DISPOSITION": "Qualificação de Segundo Nível",
+    "THIRD_LEVEL_DISPOSITION": "Qualificação de Terceiro Nível",
     "ADDITIONALPHONES": "Telefones adicionais",
-    "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me",
-    "PREVIEW_RECALL_ME_REMINDER": "Lembrete para me lembrar"
+    "CALLADDITIONALPHONEAFTERMIN": "Ligue para próximo telefone após [min]",
+    "PREVIEW_AUTO_RECALL_ME": "Automatizar chamadas Agendadas",
+    "PREVIEW_RECALL_ME_REMINDER": "Lembrete de Agendamento"
   }
 }
index 2bbd864..7375d03 100644 (file)
     "REPLYURI": "Svara URLi",
     "RECEIVEURI": "Taka á móti URL",
     "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions.",
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled"
+      "WELCOMEMESSAGE": "Þetta eru fyrstu svarskilaboðin sem send eru til nýrra samskipta. - This is the first response message sent to new interactions.",
+      "TOKEN": "Bættu þessari eign við sem fyrirspurnarstreng í vefslóð vefþjónustunnar þinnar. Fyrir frekari upplýsingar sjá skjalið <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">hér</ a> \n- Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Sjálfvirk myndaður API strengur til að nota til að taka á móti skilaboðum inni á opinni rás þinni frá ytri forritinu (með POST aðferð). Smelltu á klemmuspjaldhnappinn til að afrita hann - Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
+      "REPLYURI": "Slóðin sem opna rásin kallar á þegar skilaboð eru send eða svarað. Fyrir frekari upplýsingar sjá skjalið <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">hér</ a> - The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Aðeins tölur, stafir og sérstakir stafir (._) eru studdir - Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Tengiliðalisti notaður til að tengja tengiliði - Contact Manager List used to associate contacts",
+      "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota ef skyldubundin ráðstöfun er virkjuð - Pause to use if mandatory disposition is enabled"
     },
     "PAGE": "Blaðsíða",
     "ROWSPERPAGE": "Línur á síðu",
index e0aeed6..24f8e9c 100644 (file)
@@ -1,11 +1,11 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Tempo de login",
+    "LOGIN_TIME": "Tempo de Login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
     "QUEUETRANSFER": "Transferência de Fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência de Fila",
     "AGENTTRANSFER": "Transferência de Agente",
     "AGENTTRANSFERTIMEOUT": "Timeout Transferência Agente",
     "TAG": "Tag",
@@ -33,9 +33,9 @@
     "DELETE_OPENCHANNELCANNEDANSWER": "Excluir",
     "DELIVERYREPORTURL": "Delivery Report URL",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Visualizar",
+    "SPYINTERACTION": "Espiar",
     "NO_AGENT_ONLINE": "Sem Agente Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Ir para Fila Open Channel em Tempo Real",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Visualizar Fila do Open Channel em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Timer",
     "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "AUTOREPLY": "Auto Resposta",
     "NAME": "Nome",
-    "OPENCHANNELQUEUES": "Filas Open Channel",
+    "OPENCHANNELQUEUES": "Filas do Open Channel",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "TEXT_REQUIRED": "O texto do campo é obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
-      "REPLYURI_REQUIRED": "Campo Obrigatório",
+      "REPLYURI_REQUIRED": "Campo obrigatório",
       "REPLYURI_MUST_VALID_URL": "Formato incorreto",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "AGENT_REQUIRED": "Campo Obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "AGENT_REQUIRED": "Campo Oobrigatório",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo Obrigatório",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
       "ACCESSKEYID_REQUIRED": "Access key ID é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
       "SECRETACCESSKEY_REQUIRED": "Access key secret é obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório"
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório"
     },
     "STRATEGY": "Estratégia",
     "AGENT": "Agente",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira Prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "VALUE": "Valor",
     "PRIORITY": "Prioridade",
     "AGENT_TIMEOUT": "Timeout Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_OPENCHANNELQUEUE": "Adicionar Fila Open Channel",
-    "EDIT_OPENCHANNELQUEUE": "Editar Fila Open Channel",
-    "DELETE_OPENCHANNELQUEUE": "Excluir Fila Open Channel",
+    "ADD_OPENCHANNELQUEUE": "Adicionar Fila do Open Channel",
+    "EDIT_OPENCHANNELQUEUE": "Editar Fila do Open Channel",
+    "DELETE_OPENCHANNELQUEUE": "Excluir Fila do Open Channel",
     "PENALTY": "Prioridade",
-    "TEAMADD_OPENCHANNELQUEUE": "Adicionar Equipe a Fila Open Channel",
-    "AGENTADD_OPENCHANNELQUEUE": "Adicionar Agente para Fila Open Channel",
+    "TEAMADD_OPENCHANNELQUEUE": "Adicionar Equipe a Fila do Open Channel",
+    "AGENTADD_OPENCHANNELQUEUE": "Adicionar Agente à Fila do Open Channel",
     "ALL_AGENTS": "Todos Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "OPENCHANNELACCOUNTS": "Contas Open Channel",
+    "OPENCHANNELACCOUNTS": "Contas do Open Channel",
     "MOTIONADDRESS": "Endereço do XCally Motion",
     "ADD_OPENCHANNELACCOUNT": "Adicionar Conta Open Channel",
-    "EDIT_OPENCHANNELACCOUNT": "Editar Conta Open Channel",
-    "DELETE_OPENCHANNELACCOUNT": "Excluir conta Open Channel",
+    "EDIT_OPENCHANNELACCOUNT": "Editar Conta do Open Channel",
+    "DELETE_OPENCHANNELACCOUNT": "Excluir Conta do Open Channel",
     "API": "API",
     "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
     "CLOSE": "Encerrar",
-    "CLOSEMETHOD": "Método Encerramento",
-    "CLOSEURL": "Encerrar URL",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Desselecionar Todos",
     "OPENCHANNEL": "Open Channel",
     "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualificações Open Channel",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nenhuma Qualificação Open Channel disponível",
-    "NEW_OPENCHANNELDISPOSITION": "Nova Qualificação Open Channel",
-    "ADD_OPENCHANNELDISPOSITION": "Adicionar qualificação Open Channel",
-    "EDIT_OPENCHANNELDISPOSITION": "Editar Qualificação Open Channel",
-    "DELETE_OPENCHANNELDISPOSITION": "Excluir Qualificação Open Channel",
-    "NEW_OPENCHANNELQUEUE": "Nova Fila Open channel",
-    "NEW_OPENCHANNELACCOUNT": "Nova Conta Open channel",
+    "OPENCHANNELDISPOSITIONS": "Qualificações do Open Channel",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nenhuma Qualificação do Open Channel disponível",
+    "NEW_OPENCHANNELDISPOSITION": "Nova Qualificação do Open Channel",
+    "ADD_OPENCHANNELDISPOSITION": "Adicionar Qualificação do Open Channel",
+    "EDIT_OPENCHANNELDISPOSITION": "Editar Qualificação do Open Channel",
+    "DELETE_OPENCHANNELDISPOSITION": "Excluir Qualificação do Open Channel",
+    "NEW_OPENCHANNELQUEUE": "Nova Fila do Open channel",
+    "NEW_OPENCHANNELACCOUNT": "Nova Conta do Open channel",
     "NO_AVAILABLE_INFO": "Nenhuma info disponível",
     "ALL_TEAMS": "Todas Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "REPLYURI": "URL de Resposta",
-    "RECEIVEURI": "Receive URL",
+    "RECEIVEURI": "URL de Recebimento",
     "HELP": {
       "TOKEN": "Token para consumir API do XCally.",
       "RECEIVEURI": "Auto-generated API string para receber mensagens dentro do Open Channel 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 Open Channel chamará ao enviar ou responder a uma mensagem.",
+      "REPLYURI": "A URL que o Open Channel chamará ao enviar ou responder a uma mensagem.",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
       "LIST": "Lista usada para associar contatos",
       "MANDATORYDISPOSITION": "Qualificação obrigatória",
     "FILTERS": "Filtros",
     "CLOSEDAT": "Encerrado em",
     "DISPOSITION": "Qualificação",
-    "NOTES": "Anotações",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "SELECT_ACCOUNT": "Selecione uma conta",
     "GOTOP": "Gotop",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não Registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "FULLNAME": "Nome Completo",
     "PHONE_STATUS": "Status do telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar Agente à Fila Open Channel",
-    "UNPAUSE": "Despausar",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do Open Channel",
+    "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa padrão",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "MAIL": "Email",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar Agentes à fila Open Channel",
+    "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 Openchannel",
-    "CANNED_ANSWER_SEARCH": "Não econtrado Resposta Pré-definida",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_OPENCHANNELACCOUNT": "Adicionar Agente à Conta do Openchannel",
+    "CANNED_ANSWER_SEARCH": "Digite para procurar por Resposta Pré-definida",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma Resposta Pré-definida foi encontrada",
     "SEND": "Enviar",
     "TO": "Para",
     "MAPKEY": "Map Key",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Editar Dialogflow ",
     "LANGUAGE": "Idioma",
-    "WELCOMEMESSAGE": "Mensagem de Boas-Vindas",
-    "ACCESSKEYID": "ID Chave Acesso",
+    "WELCOMEMESSAGE": "Mensagem de Boas-vindas",
+    "ACCESSKEYID": "ID da Chave Acesso",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Nome Bot",
-    "EDIT_AMAZONLEX": "Editar configuração Lex",
+    "BOTNAME": "Nome do Bot",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
     "LEXREGION": "Região",
-    "SECRETACCESSKEY": "Access key secret",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem",
-    "CLIENTEMAIL": "Email Cliente",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "PROJECTID": "ID Projeto",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Anotação"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação"
   }
 }
index 6a12726..3e3a115 100644 (file)
 {
   "SETTINGS": {
-    "RTLSUPPORT": "RTL Support",
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
+    "RTLSUPPORT": "RTL Stuðningur",
+    "PREFERRED": "Æskilegt lógó",
+    "DEFAULT_PREFERRED": "Sjálfgefið valið Merki",
     "FAVICON": "Favicon",
-    "DEFAULT_FAVICON": "Default Favicon",
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
+    "DEFAULT_FAVICON": "Sjálfgefið Favicon",
+    "MOTIONBARREMEMBERME": "Mundu mig",
+    "CHATTIMEOUT": "Spjall tími útruninn án samskipta",
+    "VIRTUAL": "Spjall",
+    "VOICE": "tal",
     "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
-    "COPY_LICENSE": "Copy token to clipboard",
-    "DOWNLOAD_LICENSE_LOG_FILE": "Download license log file",
-    "LICENSE_LOG_FILE": "License log file",
-    "LICENSE_LOG_FILE_DOWNLOADED": "License log file downloaded!",
-    "CLIPBOARD": "Clipboard",
-    "COPIED_TO_CLIPBOARD": "Token copied to clipboard",
+    "ADDONS": "Viðbætur",
+    "REPORT": "Skýrsla",
+    "SPLIT": "Skipt skýrsla",
+    "SPLITSIZECSV": "Stærð á skýrslu [CSV records]",
+    "SPLITSIZEPDF": "Stærð á skýrslu [PDF records]",
+    "SPLITSIZEXLSX": "Stærð á skýrslu [XLSX records]",
+    "ENABLEEMAILPREVIEW": "Leyfa forskoðun á tölvupósti",
+    "COPY_LICENSE": "Afritaðu auðkenni á klippiborð",
+    "DOWNLOAD_LICENSE_LOG_FILE": "Sæktu leyfisskrána",
+    "LICENSE_LOG_FILE": "Leyfisskrárskrá",
+    "LICENSE_LOG_FILE_DOWNLOADED": "Leyfisskrárskrá hlaðið niður!",
+    "CLIPBOARD": "Klippiborð",
+    "COPIED_TO_CLIPBOARD": "Auðkenni afritað á klippiborð",
     "JAWS": "Jaws",
     "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBARAUTOUPDATER": "Sjálfvirk uppfærsla",
+    "MOTIONBARAUTOUPDATERURL": "Sjálfvirk uppfærsla á URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
+    "CALL_RECORDING_ENCRYPTION": "Dulkóðun upptöku á tali",
+    "TURNADDR": "TURN Heimilisfang",
+    "TURN_USERNAME": "TURN notandanafn",
+    "TURN_PASSWORD": "TURN Lykilorð",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Preview Recallme Reminder Interval",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Forskoða Recallme Reminder Interval",
+    "ENABLED": "Leyfa",
+    "DISABLED": "Afvirkjað",
+    "UNLIMITED_CHANNELS": "Ótakmarkaðar rásir",
+    "RELOAD": "Endurhlaða",
+    "VERIFY": "Staðfestu",
+    "INTERFACE": "Viðmót",
+    "UPDATING": "Uppfærir",
+    "REMOTE_VERSION": "Remote útgáfa",
+    "NO_NEW_VERSION_AVAILABLE": "Engin ný útgáfa til",
+    "TOP_N_PROCESSES": "Top {{value}} ferlar",
+    "SYSTEM": "Kerfi",
+    "FILE_SYSTEM": "Skrárkerfi",
+    "PROCESSES": "Ferlar",
     "MOUNT_POINT": "Mount",
-    "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
+    "AVG_LOAD": "Meðal álag",
+    "TOTAL": "Heildar",
+    "USED": "Notað",
+    "FREE": "Laust",
+    "NAME": "Nafn",
+    "STATE": "Fylki",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
+    "MESSAGING": "SMS",
+    "WHATSAPP": "WhatsApp Tengill",
     "FAX": "Fax",
     "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
+    "AGENTS": "Notandi",
+    "USERS": "Notendur",
+    "TELEPHONES": "Símar",
+    "STAFF": "Starfsmenn",
+    "CHANNELS": "Rásir",
+    "MODULES": "Einingar",
+    "CM": "Stjórnandi tengiliða",
+    "DIALER": "Hringjari",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
+    "CUSTOM": "Snérsníða",
     "VIDEO": "Video",
-    "SCREENRECORDING": "Screen Recording",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "SCREENRECORDING": "Skjá upptaka",
+    "UPDATE": "Uppfæra",
+    "OTHERS": "Aðrir",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
     "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
+    "NETWORKS": "Netkerfi",
+    "UPDATES": "Uppfærsla",
+    "LICENSE": "Leyfi",
     "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
-    "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "MIN_INTERNAL": "Lámark innan",
+    "MIN_MAILBOX": "Lámarks pósthólf",
+    "INSTALLED_AT": "Uppsett kl.",
+    "SEARCH_FOR_ANYONE": "Leyta",
+    "EDIT_GENERAL": "Breyta almennt",
+    "SECURE_PASSWORD": "Öruggt lykilorð",
+    "LOGO": "Merki",
+    "DEFAULT_LOGO": "Sjálfgefið Merki",
+    "DEFAULT_LOGIN_LOGO": "Sjálfgefið Login merki",
     "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
+    "DEFAULT_HEADER_WHITELABEL": "Sjálfgefin haus hvítt merki",
+    "HEADER_WHITELABEL": "Haus á hvítri merkingu",
+    "CREATED_AT": "Stofnað kl.",
+    "SAVE": "Geyma",
+    "SMTP_SERVICE": "Þjónusta",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Notandanafn",
+    "DESCRIPTION": "Lýsing",
+    "SMTP_PASSWORD": "Lykilorð",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "USERNAME": "Username",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Öruggt",
+    "TYPE": "Tegund",
+    "ADDRESS": "Heimilisfang",
+    "USERNAME": "Notandanafn",
+    "NEW_NETWORK": "Nýtt net",
+    "ADD_NETWORK": "Bættu við neti",
     "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
-    "DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
+    "LOGINMAILFREQUENCY": "Tíðni innskráningarpósts (sek.)",
+    "DEFAULTSCREENRECORDINGPATH": "Skjá upptöku slóð",
     "APPZONE": "App Zone",
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
+    "EDIT_NETWORK": "Breyta neti",
+    "DELETE_NETWORK": "Eyða neti",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Velja nafn",
+    "EXPIRATION_DATE": "Gildir til",
+    "REQUEST_LICENSE": "Biddu um leyfi",
+    "EMAIL": "Netfang",
+    "SEND": "Senda",
     "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
+    "MONTH_TO_MONTH": "Mánuð fyrir mánuð",
+    "MOTION_PROCESS_MANAGEMENT": "Hreyfis ferla stjórnun",
+    "USEFUL_COMMANDS": "Gagnlegar skipanir",
+    "COMMAND": "Skipun",
+    "PM2_LIST": "Listaðu alla ferla",
+    "PM2_START": "Endurræstu ferla með auðkenni eða nafni",
+    "PM2_STOP": "Stöðvaðu ferla með auðkenni eða nafni eða settu inn 'allt' til að stöðva alla virku ferla",
+    "PM2_RESTART": "Endurræstu ferla með auðkenni eða nafni",
+    "PM2_LOGS": "Streymaðu allar ferla skrár, nema sérstakt auðkenni eða nafn sé gefið upp",
+    "PASSWORD": "Lykilorð",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
     "STUNADDR": "STUN Address",
-    "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
+    "CHANGELOG": "Breyta skrá",
+    "CURRENT_VERSION": "Núverandi útgáfa",
+    "CUSTOMIZATIONS": "Séraðlaganir",
     "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
+    "NEW_VERSION": "Ný útgáfa",
+    "TRIAL_VERSION": "Prufu útgáfa",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
-    "SECURITY": "Security",
-    "ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
-    "BLOCKDURATION": "Minutes to wait before automatic unlock",
-    "AI": "A.I. Tools",
-    "AITOOLS": "A.I. Tools",
-    "SERVICE": "Service",
-    "NEW_CLOUDPROVIDER": "New Account",
-    "ADD_CLOUDPROVIDER": "Add Account",
-    "DELETE": "Delete",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "ACCESSKEY": "Access Key ID",
-    "EDIT_CLOUDPROVIDER": "Edit Account",
-    "DELETE_CLOUDPROVIDER": "Delete Account",
-    "LANGUAGE": "Language",
+    "NEW_TOKEN_DETECTED": "Nýtt Token skynjað",
+    "EXPIRATION_GRAY_PERIOD": "Prufutímabil er lokið",
+    "NEW_TOKEN": "Nýtt Token",
+    "PRICES": "Verð",
+    "UPDATE_LICENSE": "Uppfæra leyfi",
+    "LOGOLOGIN": "Innskráningar merki",
+    "EXPIRATION_REASON": "Ástæða þess að vera útrunnið",
+    "GLOBAL": "Alþjóðlegt",
+    "SMTP_AUTHENTICATION": "Auðkenning",
+    "LICENSE_REQUEST_SENT": "Takk fyrir! Við hjá Svar munum athuga reikninginn þinn eins fljótt og auðið er til að samþykkja beiðni þína: þú munt fá tölvupóst þegar breytingarnar taka gildi.",
+    "ACCOUNTNAME": "Nafnið á reikningi",
+    "EMAILADDRESS": "Netfang",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Leyfið þitt hefur vrið afvirkjað.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Auðkenni tölvunar þinnar hefur verið breyst venga nýrrar tölvu.",
+    "EXPIRATION_CHANGED_ADVISE": "Hafðu samband við Svar, sendu okkur bæði gamla og nýja notenda auðkennið þitt.",
+    "OLD_TOKEN": "Gamla Token",
+    "SEND_EMAIL_TO": "Senda tölvupóst til",
+    "JIRA_ERROR_MESSAGE": "Villa við leyfisbeiðni. Vinsamlegast hafðu samband við hjalp@svar.is",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á síðu, línur á bls.",
+    "OF": "af",
+    "PAGE_TITLE": "Bls. titill",
+    "DEFAULT_PAGE_TITLE": "Sjálfgefin titill á bls.",
+    "PERPETUAL": "Endalaust",
+    "SECURITY_SUITE": "Öriggis svíta",
+    "ANNUALLY": "Árlega",
+    "AGENTOMNIDESKTOPINTERFACE": "Skjá viðmót Notanda í Omni channel",
+    "MESSAGESALIGNMENT": "Jöfnun skilaboða",
+    "ENTER_LICENSE": "Settu inn leyfislykilinn þinn",
+    "UPDATE_LICENSE_MANUALLY": "Viltu uppfæra leyfin handvirkt?",
+    "SECURITY": "Öryggi",
+    "ALLOWEDLOGINATTEMPTS": "Hámarks fjöldi tilrauna áður en aðgangi er lokað á notanda",
+    "BLOCKDURATION": "Mínútur fyrir sjálfvirka opnun",
+    "AI": "A.I. Verkfæri",
+    "AITOOLS": "A.I. Verkfæri",
+    "SERVICE": "Þjónusta",
+    "NEW_CLOUDPROVIDER": "Nýr reikningur",
+    "ADD_CLOUDPROVIDER": "Bættu við reikningi",
+    "DELETE": "Eyða",
+    "SECRETACCESSKEY": "Lykilorð",
+    "ACCESSKEY": "Auðkenni aðgangslykils",
+    "EDIT_CLOUDPROVIDER": "Breyttu reikningi",
+    "DELETE_CLOUDPROVIDER": "Eyða reikningi",
+    "LANGUAGE": "Tungumál",
     "BUCKET": "Bucket",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIBEREGION": "Transcribe Region",
-    "TRANSCRIBEACCOUNT": "Transcribe Account",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
+    "TRANSCRIBE": "Afrita",
+    "TRANSCRIBEREGION": "Afrita svæði",
+    "TRANSCRIBEACCOUNT": "Afrita reikning",
+    "SENTIMENTANALYSIS": "Viðhorfsgreining",
+    "SENTIMENTREGION": "Viðhorfsgreiningar svæði",
+    "SENTIMENTACCOUNT": "Viðhorfsgreiningarsvæði",
     "SSO": "SSO",
-    "GOOGLE_SSO_ENABLED": "Google SSO Enabled",
-    "ENFORCE_PASSWORD_HISTORY": "Enforce Password History",
-    "PASSWORD_HISTORY_LIMIT": "Password History Limit",
-    "PRIVACY_POLICY_EMAIL": "Privacy Policy for Email Addresses",
-    "PRIVACY_POLICY_NAME": "Privacy Policy for Names",
-    "PRIVACY_POLICY_NUMBER": "Privacy Policy for Numbers",
-    "SEARCH_ON_ENTER_KEY": "Search on Enter key",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Chat interactions reload timeout",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Email interactions reload timeout",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel interactions reload timeout",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS interactions reload timeout",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector interactions reload timeout",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Stop recording on voice call transfer",
-    "DISABLED_COOKIE": "Cookies banner",
-    "AD_SSO_ENABLED": "Active Directory SSO Enabled",
-    "CLOUD_PROVIDERS": "Cloud Providers",
-    "APPLICATION_ID": "Application Id",
-    "TENANT_ID": "Tenant Id",
-    "CLIENT_SECRET": "Client Secret",
-    "NEW_CLIENT_SECRET": "New Client Secret",
+    "GOOGLE_SSO_ENABLED": "Google SSO Virkt",
+    "ENFORCE_PASSWORD_HISTORY": "Framfylgja lykilorða sögu",
+    "PASSWORD_HISTORY_LIMIT": "Hámark lykilorðasögu",
+    "PRIVACY_POLICY_EMAIL": "Persónuverndarstefna fyrir netföng ",
+    "PRIVACY_POLICY_NAME": "Persónuverndarstefna fyrir nöfn",
+    "PRIVACY_POLICY_NUMBER": "Persónuverndarstefna fyrir tölur",
+    "SEARCH_ON_ENTER_KEY": "Leitaðu með Enter lyklinum",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Samskipti runnu út á tíma",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk endurhleðslu tölvupóstsamskipta ",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel tíminn rann út",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk endurhleðslu SMS-samskipta",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk fyrir endurhleðslu WhatsApp tengisamskipta",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Hættu að taka upp við símtalsflutning",
+    "DISABLED_COOKIE": "Vefköku borði",
+    "AD_SSO_ENABLED": "Active Directory SSO er virkjað",
+    "CLOUD_PROVIDERS": "Skýja þjónustu aðili",
+    "APPLICATION_ID": "Auðkenni forrits",
+    "TENANT_ID": "Notanda auðkenni",
+    "CLIENT_SECRET": "Leiniorð notanda",
+    "NEW_CLIENT_SECRET": "Nýtt leyniorð notanda",
     "REDIRECT_URI": "Redirect URI",
     "REMOTE_URI": "Remote URI",
-    "AUTHENTICATE": "Authenticate",
-    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Authenticate to Microsoft Identity Platform",
-    "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
-    "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
-    "UPDATE_CLIENT_SECRET": "Update Client Secret",
+    "AUTHENTICATE": "Auðkenna",
+    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Auðkenni fyrir Microsoft grunn",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Auðkenningu á Microsoft aðgengi þínum tókst",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Eitthvað fór úrskeiðis við auðkenningu á Microsoft aðgangi",
+    "UPDATE_CLIENT_SECRET": "Uppfæra leyniorð notanda",
     "HELP": {
-      "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
-      "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
+      "DEFAULTSCREENRECORDINGPATH": "Settu inn slóðina til að geyma skjá upptökuna á tölvu notandans (skildu eftir autt ef þú vilt nota sjálfgefna möppu)",
+      "RTLSUPPORT": "Virkjar RTL stuðning fyrir arabísku, persnesku og hebresku",
       "ADDRESS": "External (public) ip address",
       "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
-      "USERNAME": "Username",
-      "PASSWORD": "Password",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Time interval in minutes before which notification will be sent to agent informing him about preview recall to be made",
-      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
-      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
-      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
-      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)",
-      "CLIENT_SECRET": "The secret will no longer be visible once the configuration is saved. Store it safely if you want to use it elsewhere.",
-      "LIMIT_TABS": "Maximum number of possible interaction tabs open"
+      "SMTP_SECURE": "Ef rétt, mun tengingin við netþjóninn nota TLS",
+      "SMTP_USERNAME": "Notendanafn notað til auðkenningar",
+      "SMTP_PASSWORD": "Lykilorð notað til auðkenningar",
+      "EMAILADDRESS": "Uppruni skilaboða fra netfangi (frá)",
+      "SECURITY_SUITE": "Virkjar öruggt lykilorðssnið, lögboðna endurstillingu lykilorðsins eftir fyrstu innskráningu og lykilorðið rennur út eftir 90 daga ",
+      "MOTIONBARREMEMBERME": "Virkja/afvirkja muna mig virknina í Motion slánni",
+      "LOGINMAILFREQUENCY": "Vinsamlega mundu að endursetja póst þjónustuna eftir hvert skipti sem þetta gildi hefur verið breytt",
+      "USERNAME": "Notandanafn",
+      "PASSWORD": "Lykilorð",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Tímabil í mínútum áður en tilkynning verður send til fulltrúa sem upplýsir hann um innköllun",
+      "ENFORCE_PASSWORD_HISTORY": "Virkjar staðfestingu frá áður notuðu lykilorði",
+      "PASSWORD_HISTORY_LIMIT": "Fjöldi notaðra lykilorða áður en má nota aftur",
+      "PRIVACY_POLICY": "Fjöldi stafa sem verður skipt út fyrir stjörnu (*) (0 = allir stafir)",
+      "SEARCH_ON_ENTER_KEY": "Byrjaðu aðeins að leita eftir að fulltrúi ýtir á Enter takkann",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Tímabil í sekúndum þangað til skilaboðum eru sett aftur (0 = real-time update)",
+      "CLIENT_SECRET": "Leyniorðið verður ekki sjáanlegt eftir að stillingar hafa verið geymdar. Geymdu það á öruggum stað ef þú vilt endurnota það.",
+      "LIMIT_TABS": "Hámarsfjöldi samtíma samskipta sem geta verið opnir"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
-      "BLOCKDURATION_REQUIRED": "Mandatory field",
-      "SERVICE_REQUIRED": "Mandatory field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
-      "ACCESSKEY_REQUIRED": "Mandatory field",
-      "LANGUAGE_REQUIRED": "Mandatory field",
-      "BUCKET_REQUIRED": "Mandatory field",
-      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
-      "SENTIMENTREGION_REQUIRED": "Mandatory field",
-      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Rangt snið",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Skilyrtur reitur",
+      "ADDRESS_REQUIRED": "Skilyrtur reitur",
+      "MIN_INTERNAL_REQUIRED": "Skilyrtur reitur",
+      "MIN_MAILBOX_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HEADER_WHITELABEL_REQUIRED": "Skilyrtur reitur",
+      "LOCALNETADDRESS_REQUIRED": "Skilyrtur reitur",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Rangt snið",
+      "ADDRESS_MUST_VALID_PATTERN": "Rangt snið",
+      "ACCOUNTNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "SMTP_USERNAME_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "SMTP_HOST_REQUIRED": "Skilyrtur reitur",
+      "SMTP_PORT_REQUIRED": "Skilyrtur reitur",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Skilyrtur reitur",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "PAGE_TITLE_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "PLAN_REQUIRED": "Skilyrtur reitur",
+      "LICENSE_REQUIRED": "Skilyrtur reitur",
+      "LOGINMAILFREQUENCY_REQUIRED": "Skilyrtur reitur",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Skilyrtur reitur",
+      "BLOCKDURATION_REQUIRED": "Skilyrtur reitur",
+      "SERVICE_REQUIRED": "Skilyrtur reitur",
+      "SECRETACCESSKEY_REQUIRED": "Skilyrtur reitur",
+      "ACCESSKEY_REQUIRED": "Framfylgja lykilorða sögu",
+      "LANGUAGE_REQUIRED": "Skilyrtur reitur",
+      "BUCKET_REQUIRED": "Skilyrtur reitur",
+      "TRANSCRIBEREGION_REQUIRED": "Skilyrtur reitur",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "SENTIMENTREGION_REQUIRED": "Skilyrtur reitur",
+      "SENTIMENTACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_REQUIRED": "Skilyrtur reitur",
+      "FIELD_REQUIRED": "Skilyrtur reitur",
       "WRONG_FORMAT": "Wrong format",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og"
     },
     "NOTIFICATIONS": {
-      "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
-      "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
-      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Cloud Provider successfully created",
-      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Cloud Provider successfully saved",
-      "CLOUD_PROVIDER_DELETE_TITLE": "Are you sure want to delete the cloud provider?",
-      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Cloud Provider successfully deleted",
-      "CLOUD_PROVIDERS_DELETE_TITLE": "Are you sure want to delete the selected cloud providers?",
-      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} cloud providers will be deleted",
-      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Cloud Providers successfully deleted",
-      "SMTP_SAVED_SUCCESS_TITLE": "SMTP configuration successfully saved",
-      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Client Secret successfully updated"
+      "MICROSOFT_AUTHENTICATION_SUCCESS": "Auðkenning á Microsoft auðkenninu þínu tóskt",
+      "MICROSOFT_AUTHENTICATION_FAIL": "Eitthvað fór úrskeiðis við auðkenningu á Microsoft auðkenni þínu",
+      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Skýjaþjónustu aðili hefur verið stofnaður",
+      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Skýja þjónustuaðili geymdur",
+      "CLOUD_PROVIDER_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum skýjaþjónustuaðila?",
+      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Skýjaþjónustu aðila hefur verið eytt",
+      "CLOUD_PROVIDERS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum skýjaveitum?",
+      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} Skýja þjónustu aðilum hefur verið eytt",
+      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Skýja þjónustu aðila hefur verið eytt",
+      "SMTP_SAVED_SUCCESS_TITLE": "SMTP Stillingar geymdar",
+      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Lykilorð notanda uppfært"
     },
-    "LIMIT_TABS": "Limit of interaction tab"
+    "LIMIT_TABS": "Takmörkun á samskiptaflipum"
   }
 }
index 5ccbf9c..1e6729b 100644 (file)
@@ -1,28 +1,28 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Logotipo Preferido",
-    "DEFAULT_PREFERRED": "Logotipo preferido padrão",
+    "PREFERRED": "Logomarca Favorita",
+    "DEFAULT_PREFERRED": "Logomarca Favorita Padrão",
     "MOTIONBARREMEMBERME": "Lembre de mim",
-    "CHATTIMEOUT": "Tempo limite de interação de fechamento de chat",
+    "CHATTIMEOUT": "Timout para encerrar interação de chat",
     "VIRTUAL": "Chat",
     "VOICE": "Voz",
     "SESSIONS": "Sessão",
     "ADDONS": "Complementos",
     "REPORT": "Relatório",
-    "SPLIT": "Relatório dividido",
-    "SPLITSIZECSV": "Tamanho do relatório dividido [registros CSV]",
-    "SPLITSIZEPDF": "Tamanho do relatório dividido [registros PDF]",
-    "SPLITSIZEXLSX": "Tamanho do relatório dividido [registros XLSX]",
-    "ENABLEEMAILPREVIEW": "Ativar visualização de e-mail",
+    "SPLIT": "Dividir relatório",
+    "SPLITSIZECSV": "Tamanho para dividir relatório [registros CSV]",
+    "SPLITSIZEPDF": "Tamanho para dividir relatório [registros PDF]",
+    "SPLITSIZEXLSX": "Tamanho para dividir relatório [registros XLSX]",
+    "ENABLEEMAILPREVIEW": "Ativar Preview de Email",
     "JAWS": "Jaws",
     "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBARAUTOUPDATER": "Atualização Automática",
+    "MOTIONBARAUTOUPDATERURL": "URL de Atualização Automática",
     "SMTP_SSL": "SMTP SSL",
     "CALL_RECORDING_ENCRYPTION": "Criptografia de Gravação de Voz",
     "TURNADDR": "Endereço TURN",
-    "TURN_USERNAME": "Nome de usuário do TURN",
-    "TURN_PASSWORD": "Senha da TURN",
+    "TURN_USERNAME": "Nome de Usuário TURN",
+    "TURN_PASSWORD": "Senha TURN",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
     "ENABLED": "Ativado",
     "INTERFACE": "Interface",
     "UPDATING": "Atualizando",
     "REMOTE_VERSION": "Versão Remota",
-    "NO_NEW_VERSION_AVAILABLE": "Nenhuma nova versão disponível",
-    "TOP_N_PROCESSES": "Principais processos {{value}}",
+    "NO_NEW_VERSION_AVAILABLE": "Nenhuma Nova Versão disponível",
+    "TOP_N_PROCESSES": "Top {{value}} processos",
     "SYSTEM": "Sistema",
-    "FILE_SYSTEM": "Sistema de arquivo",
+    "FILE_SYSTEM": "Sistema de Arquivo",
     "PROCESSES": "Processos",
-    "MOUNT_POINT": "Mount",
+    "MOUNT_POINT": "Montar",
     "AVG_LOAD": "AVG Load",
     "TOTAL": "Total",
     "USED": "Usado",
     "STATE": "Estado",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "MESSAGING": "Sms",
+    "MESSAGING": "SMS",
     "FAX": "Fax",
     "OPENCHANNEL": "Open Channel",
     "AGENTS": "Agentes",
     "USERS": "Usuários",
     "TELEPHONES": "Telefones",
-    "STAFF": "Funcionários",
-    "CHANNELS": "Channels",
-    "MODULES": "Modulos",
-    "CM": "Gerente de contatos",
+    "STAFF": "Colaboradores",
+    "CHANNELS": "Canais",
+    "MODULES": "Módulos",
+    "CM": "Gestão de Contatos",
     "DIALER": "Discador",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Costumização",
+    "CUSTOM": "Customização",
     "UPDATE": "Atualizar",
     "OTHERS": "Outros",
     "SETTINGS": "Configurações",
     "LICENSE": "Licença",
     "ID": "Id",
     "MIN_INTERNAL": "Min Interno",
-    "MIN_MAILBOX": "Min Caixa de correio",
+    "MIN_MAILBOX": "Min Caixa de Entrada",
     "INSTALLED_AT": "Instalado em",
     "SEARCH_FOR_ANYONE": "Procurar",
     "EDIT_GENERAL": "Editar Geral",
     "SECURE_PASSWORD": "Senha Segura",
-    "LOGO": "Logotipo",
-    "DEFAULT_LOGO": "Logotipo padrão",
-    "DEFAULT_LOGIN_LOGO": "Logon de login padrão",
+    "LOGO": "Logomarca",
+    "DEFAULT_LOGO": "Logomarca Padrão",
+    "DEFAULT_LOGIN_LOGO": "Logomarca de Login Padrão",
     "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Cabeçalho padrão White Label",
-    "HEADER_WHITELABEL": "Cabeçalho White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Cabeçalho Padrão White Label",
+    "HEADER_WHITELABEL": "Cabeçalho do White Label",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SMTP_SERVICE": "Serviço",
     "SMTP_SECURE": "Segurança",
     "TYPE": "Tipo",
     "ADDRESS": "Endereço",
-    "NEW_NETWORK": "Nova rede",
+    "NEW_NETWORK": "Nova Rede",
     "ADD_NETWORK": "Adicionar Rede",
     "HELP": {
-      "ADDRESS": "Endereço IP externo (público)",
-      "LOCALNETADDRESS": "Endereço IP / sub-rede local",
-      "SMTP_SECURE": "Se for verdade, a conexão com o servidor usará o TLS",
+      "ADDRESS": "Endereço de IP externo (público)",
+      "LOCALNETADDRESS": "Endereço IP / Sub-Rede da LAN",
+      "SMTP_SECURE": "Se habilitado, a conexão com o servidor usará o TLS",
       "SMTP_USERNAME": "Usuário usado para autenticação",
       "SMTP_PASSWORD": "Senha usada para autenticação",
-      "EMAILADDRESS": "A origem da mensagem Endereço de email (de)",
-      "SECURITY_SUITE": "Habilita o formato de senha segura, a redefinição obrigatória da senha após o primeiro login e a expiração da senha após 90 dias",
-      "MOTIONBARREMEMBERME": "Ativar / desativar o recurso Lembrar-me no Motion Phonebar",
-      "RTLSUPPORT": "Ativa o suporte RTL para os idiomas árabe, persa e hebraico",
-      "DEFAULTSCREENRECORDINGPATH": "Digite o caminho para armazenar os arquivos de gravação de tela no computador do agente (deixe em branco para o caminho padrão da pasta de vídeo)",
+      "EMAILADDRESS": "O Endereço de email da origem (from)",
+      "SECURITY_SUITE": "Habilita política de senha com redefinição obrigatória da\napós o primeiro login e a expiração após 90 dias",
+      "MOTIONBARREMEMBERME": "Ativar / desativar o recurso de Agendamento no Motion Phonebar",
+      "RTLSUPPORT": "Ativa o suporte RTL para os idiomas Árabe, Persa e Hebraico",
+      "DEFAULTSCREENRECORDINGPATH": "Digite o caminho para armazenar os arquivos de Gravação de Tela no computador do agente (deixe em branco para o caminho padrão)",
       "LOGINMAILFREQUENCY": "Lembre-se de reiniciar o serviço EMAIL sempre que esse parâmetro for alterado",
       "PASSWORD": "Senha",
-      "USERNAME": "Nome do usuário",
-      "ENFORCE_PASSWORD_HISTORY": "Habilita a validação contra senhas usadas anteriormente",
-      "PASSWORD_HISTORY_LIMIT": "Número das últimas senhas exclusivas usadas para verificar",
-      "SEARCH_ON_ENTER_KEY": "Comece a pesquisar somente depois que o agente pressionar a tecla Enter",
+      "USERNAME": "Nome do Usuário",
+      "ENFORCE_PASSWORD_HISTORY": "Habilita validação de senhas usadas anteriormente",
+      "PASSWORD_HISTORY_LIMIT": "Número de senhas usadas a serem lembradas para verificação",
+      "SEARCH_ON_ENTER_KEY": "Inicia a pesquisa somente depois que o agente pressionar a tecla Enter",
       "INTERACTIONS_RELOAD_TIMEOUT": "Intervalo de tempo em segundos após o qual as interações são recarregadas (0 = atualização em tempo real)",
       "PRIVACY_POLICY": "Número de caracteres que serão substituídos por um asterisco (*) (0 = todos os caracteres)",
-      "CLIENT_SECRET": "O segredo não estará mais visível depois que a configuração for salva. Guarde-o com segurança se quiser usá-lo em outro lugar.",
-      "LIMIT_TABS": "Número máximo de abas de interação possíveis abertas",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de tempo em minutos antes do qual a notificação será enviada ao agente informando-o sobre a recuperação da visualização a ser feita"
+      "CLIENT_SECRET": "A senha não estará mais visível depois que a configuração for salva. Guarde-o com segurança se quiser usá-lo em outro lugar.",
+      "LIMIT_TABS": "Número máximo permitido de abas de interação abertas",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de tempo em minutos antes de enviar notificação ao agente informando-o sobre rechamada a ser feita"
     },
     "ERRORS": {
       "CHATTIMEOUT_REQUIRED": "Campo obrigatório",
       "WRONG_FORMAT": "Formato incorreto",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a"
     },
-    "EDIT_NETWORK": "Editar rede",
-    "DELETE_NETWORK": "Excluir rede",
+    "EDIT_NETWORK": "Editar Rede",
+    "DELETE_NETWORK": "Excluir Rede",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
-    "EXPIRATION_DATE": "Data de validade",
-    "REQUEST_LICENSE": "Solicitar licença",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
+    "EXPIRATION_DATE": "Data de Validade",
+    "REQUEST_LICENSE": "Solicitar Licença",
     "EMAIL": "Email",
     "SEND": "Enviar",
     "PLAN": "Plano",
     "MONTH_TO_MONTH": "Mês a mês",
-    "MOTION_PROCESS_MANAGEMENT": "Gerenciamento de Processos de Movimento",
+    "MOTION_PROCESS_MANAGEMENT": "Gerenciamento de Processos do Motion",
     "USEFUL_COMMANDS": "Comandos Úteis",
     "COMMAND": "Comando",
     "PM2_LIST": "Listar todos os processos",
     "PM2_START": "Iniciar um processo por id ou nome",
-    "PM2_STOP": "Pare um processo por id ou nome ou insira 'todos' para parar todos os processos ativos",
-    "PM2_RESTART": "Reinicie um processo por id ou nome",
-    "PM2_LOGS": "Transmitir todos os arquivos de log de processos, a menos que um ID ou nome de processo específico seja fornecido",
+    "PM2_STOP": "Parar um processo por id ou nome, insira 'all' para parar todos os processos ativos",
+    "PM2_RESTART": "Reiniciar um processo por id ou nome",
+    "PM2_LOGS": "Enviar todos os arquivos de log de todos os processos, a menos que um ID ou nome de processo seja especificado",
     "PASSWORD": "Senha",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "STUNADDR": "Endereço do STUN",
+    "STUNADDR": "Endereço STUN",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Versão Atual",
-    "CUSTOMIZATIONS": "Personalizações",
-    "LOCALNETADDRESS": "Endereço de Localnet",
-    "NEW_VERSION": "Nova versão",
-    "TRIAL_VERSION": "Versão de teste",
+    "CURRENT_VERSION": "Versão atual",
+    "CUSTOMIZATIONS": "Customizações",
+    "LOCALNETADDRESS": "Endereço de LAN",
+    "NEW_VERSION": "Nova Versão",
+    "TRIAL_VERSION": "Versão de Teste",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "Novo Token detectado",
-    "EXPIRATION_GRAY_PERIOD": "Expiração do período cinza",
+    "NEW_TOKEN_DETECTED": "Novo Token Detectado",
+    "EXPIRATION_GRAY_PERIOD": "Período Próximo da Expiração (Gray Period)",
     "NEW_TOKEN": "Novo Token",
     "PRICES": "Preços",
     "UPDATE_LICENSE": "Atualização de Licença",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Razão de Expiração",
+    "LOGOLOGIN": "Logomarca de Login",
+    "EXPIRATION_REASON": "Motivo de Expiração",
     "GLOBAL": "Global",
     "SMTP_AUTHENTICATION": "Autenticação",
-    "LICENSE_REQUEST_SENT": "Obrigado! A Equipe de Licenciamento verificará sua conta o mais rápido possível para aprovar sua solicitação: você receberá um e-mail quando as alterações entrarem em vigor. Por favor, consulte license@xcally.com para mais informações.",
-    "ACCOUNTNAME": "Nome da conta",
+    "LICENSE_REQUEST_SENT": "Obrigado! A Equipe de Licenciamento verificará sua solicitação.",
+    "ACCOUNTNAME": "Nome da Conta",
     "EMAILADDRESS": "Endereço de e-mail",
     "EXPIRATION_REASON_MESSAGE_DISABLED": "Sua licença foi desativada.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "O ID exclusivo da sua máquina foi atualizado devido a uma alteração no seu sistema.",
-    "EXPIRATION_CHANGED_ADVISE": "Entre em contato com xCALLY Motion License Team enviando tanto o seu antigo como o novo uuid.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "O ID único do seu servidor foi atualizado devido a uma alteração no seu sistema.",
+    "EXPIRATION_CHANGED_ADVISE": "Entre em contato com a equipe do XCALLY Motion enviando uuid antigo e o novo.",
     "OLD_TOKEN": "Token Antigo",
-    "SEND_EMAIL_TO": "Enviar email para",
-    "JIRA_ERROR_MESSAGE": "Erro durante o pedido de licença. Por favor, entre em contato com nossa equipe de licenças em license@xcally.com com sua solicitação",
+    "SEND_EMAIL_TO": "Enviar Email para",
+    "JIRA_ERROR_MESSAGE": "Erro durante a requisição de licença. Por favor, entre em contato com nossa equipe de suporte",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "PERPETUAL": "Perpétuo",
     "SECURITY_SUITE": "Suíte de Segurança",
     "ANNUALLY": "Anualmente",
-    "AGENTOMNIDESKTOPINTERFACE": "Interface do Omni Desktop do agente",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
     "MESSAGESALIGNMENT": "Alinhamento de Mensagens",
     "ENTER_LICENSE": "Digite sua licença",
     "UPDATE_LICENSE_MANUALLY": "Você quer atualizar sua licença manualmente?",
-    "RTLSUPPORT": "Suporte RTL",
-    "DEFAULTSCREENRECORDINGPATH": "Caminho de gravação de tela",
-    "SCREENRECORDING": "Gravação de tela",
+    "RTLSUPPORT": "Suporte a RTL",
+    "DEFAULTSCREENRECORDINGPATH": "Caminho de Gravação de Tela",
+    "SCREENRECORDING": "Gravação de Tela",
     "VIDEO": "Vídeo",
     "BLOCKDURATION": "Minutos para esperar antes do desbloqueio automático",
     "SECURITY": "Segurança",
     "ALLOWEDLOGINATTEMPTS": "Tentativas de login permitidas antes de bloquear o usuário / agente",
-    "DEFAULT_FAVICON": "Favicon padrão",
+    "DEFAULT_FAVICON": "Favicon Padrão",
     "FAVICON": "Favicon",
     "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Frequência de email de login (s)",
-    "USERNAME": "Nome do usuário",
-    "GOOGLE_SSO_ENABLED": "SSO do Google ativado",
+    "LOGINMAILFREQUENCY": "Frequência de login de email (seg)",
+    "USERNAME": "Nome do Usuário",
+    "GOOGLE_SSO_ENABLED": "Google SSO Ativado",
     "SSO": "SSO",
-    "ACCESSKEY": "ID da chave de acesso",
+    "ACCESSKEY": "ID da Chave de Acesso",
     "ADD_CLOUDPROVIDER": "Adicionar Conta",
-    "AI": "A.I. Ferramentas",
-    "AITOOLS": "A.I. Ferramentas",
+    "AI": "Ferramentas de I.A.",
+    "AITOOLS": "Ferramentas de I.A.",
     "APPZONE": "App Zone",
-    "BUCKET": "Balde",
+    "BUCKET": "Bucket",
     "DELETE": "Excluir",
-    "DELETE_CLOUDPROVIDER": "Deletar conta",
-    "EDIT_CLOUDPROVIDER": "Editar conta",
-    "LANGUAGE": "Língua",
-    "NEW_CLOUDPROVIDER": "Nova conta",
-    "SECRETACCESSKEY": "Chave de acesso secreta",
-    "SENTIMENTACCOUNT": "Conta de análise de sentimento",
-    "SENTIMENTANALYSIS": "Análise de sentimentos",
-    "SENTIMENTREGION": "Região de análise de sentimento",
+    "DELETE_CLOUDPROVIDER": "Excluir Conta",
+    "EDIT_CLOUDPROVIDER": "Editar Conta",
+    "LANGUAGE": "Idioma",
+    "NEW_CLOUDPROVIDER": "Nova Conta",
+    "SECRETACCESSKEY": "Chave de Acesso Secreta",
+    "SENTIMENTACCOUNT": "Conta de Análise de Sentimento",
+    "SENTIMENTANALYSIS": "Análise de Sentimentos",
+    "SENTIMENTREGION": "Região de Análise de Sentimento",
     "SERVICE": "Serviço",
-    "TRANSCRIBE": "Transcrever",
-    "TRANSCRIBEACCOUNT": "Transcrever conta",
-    "TRANSCRIBEREGION": "Transcrever região",
-    "WHATSAPP": "Conector WhatsApp",
-    "ENFORCE_PASSWORD_HISTORY": "Aplicar histórico de senha",
-    "PASSWORD_HISTORY_LIMIT": "Limite de histórico de senha",
-    "SEARCH_ON_ENTER_KEY": "Pesquisa na tecla Enter",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de bate-papo",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações por email",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de canal aberto",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de SMS",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga das interações do Conector WhatsApp",
-    "PRIVACY_POLICY_EMAIL": "Política de privacidade para endereços de e-mail",
-    "PRIVACY_POLICY_NAME": "Política de privacidade para nomes",
-    "PRIVACY_POLICY_NUMBER": "Política de privacidade para números",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Pare de gravar na transferência de chamada de voz",
+    "TRANSCRIBE": "Transcrição",
+    "TRANSCRIBEACCOUNT": "Conta de Transcrição",
+    "TRANSCRIBEREGION": "Região de Transcrição",
+    "WHATSAPP": "WhatsApp Connector",
+    "ENFORCE_PASSWORD_HISTORY": "Aplicar Histórico de Senha",
+    "PASSWORD_HISTORY_LIMIT": "Limite de Histórico de Senha",
+    "SEARCH_ON_ENTER_KEY": "Procurar ao pressionar Enter",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de chat",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de Email",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações do Open Channel",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de SMS",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações do WhatsApp Connector",
+    "PRIVACY_POLICY_EMAIL": "Política de Privacidade para endereços de Email",
+    "PRIVACY_POLICY_NAME": "Política de Privacidade para Nomes",
+    "PRIVACY_POLICY_NUMBER": "Política de Privacidade para Números",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Pare de gravar quando transferir chamada",
     "AD_SSO_ENABLED": "Active Directory SSO habilitado",
-    "APPLICATION_ID": "ID do aplicativo",
+    "APPLICATION_ID": "ID do Aplicativo",
     "AUTHENTICATE": "Autenticar",
     "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Autenticar no Microsoft Identity Platform",
-    "CLIENT_SECRET": "Segredo do cliente",
-    "CLIPBOARD": "Prancheta",
-    "CLOUD_PROVIDERS": "Provedores de nuvem",
+    "CLIENT_SECRET": "Senha do Cliente",
+    "CLIPBOARD": "Área de transferência",
+    "CLOUD_PROVIDERS": "Provedores de Nuvem",
     "COPIED_TO_CLIPBOARD": "Token copiado para a área de transferência",
     "COPY_LICENSE": "Copiar token para a área de transferência",
     "DISABLED_COOKIE": "Banner de cookies",
-    "DOWNLOAD_LICENSE_LOG_FILE": "Baixar arquivo de registro de licença",
-    "LICENSE_LOG_FILE": "Arquivo de registro de licença",
-    "LICENSE_LOG_FILE_DOWNLOADED": "Arquivo de registro de licença baixado!",
-    "LIMIT_TABS": "Limite da guia de interação",
-    "MICROSOFT_AUTHENTICATION_FAIL": "Algo deu errado durante a autenticação na Microsoft Identity Platform",
-    "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticação para a Microsoft Identity Platform concluída com sucesso",
-    "NEW_CLIENT_SECRET": "Novo segredo do cliente",
-    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de lembrete de rechamada de visualização",
-    "REDIRECT_URI": "URI de redirecionamento",
-    "REMOTE_URI": "URI remoto",
-    "TENANT_ID": "Id do inquilino",
-    "UPDATE_CLIENT_SECRET": "Atualizar segredo do cliente"
+    "DOWNLOAD_LICENSE_LOG_FILE": "Download de arquivo de log de licença",
+    "LICENSE_LOG_FILE": "Arquivo de log de licença",
+    "LICENSE_LOG_FILE_DOWNLOADED": "Download concluído do arquivo de log de licença!",
+    "LIMIT_TABS": "Limite da abas de interação",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Erro durante a autenticação no Microsoft Identity Platform",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticação no Microsoft Identity Platform concluída com sucesso",
+    "NEW_CLIENT_SECRET": "Nova Senha do Cliente",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de Lembrete de Agendamento",
+    "REDIRECT_URI": "URI de Redirecionamento",
+    "REMOTE_URI": "URI Remoto",
+    "TENANT_ID": "ID da Instância",
+    "UPDATE_CLIENT_SECRET": "Atualizar Senha do Cliente"
   }
 }
index 9f9a57b..9c84ccf 100644 (file)
 {
   "SMS": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "EDIT_DIALOGFLOWV2": "Breyta Dialogflow V2",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
+    "PRIVATEKEY": "Leyniorð",
+    "CLIENTEMAIL": "Netfang viðskiptavinar",
+    "PROJECTID": "Auðkenni verkefnis",
     "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "EDIT_AMAZONLEX": "Breyta Lex stillingum",
+    "ACCESSKEYID": "Auðkennislykill",
+    "SECRETACCESSKEY": "Leyniorð",
+    "LEXREGION": "Svæði",
+    "BOTNAME": "Bot nafn",
+    "WELCOMEMESSAGE": "Velkominn skilaboð",
+    "LOGIN_TIME": "Innskráningar tími",
+    "PAUSE_TIME": "Tími á hlé",
+    "DOWNLOAD_INTERACTION": "Niðurhal",
+    "TRANSFER": "Flytja",
+    "QUEUETRANSFER": "Röð flutt",
+    "QUEUETRANSFERTIMEOUT": "Tíminn rann út á flutningi biðraðar",
+    "AGENTTRANSFER": "Flyt fulltrúa",
+    "AGENTTRANSFERTIMEOUT": "Tíminn rann út á flutningi á fullrúa",
     "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
+    "EDIT_TAG": "Breyta Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Bíddu eftir skráðum fulltrúa",
+    "NOTIFICATION": "Tilkynning",
+    "NOTIFICATIONSOUND": "Hljóð",
+    "NOTIFICATIONSHAKE": "Hrista",
+    "NOTIFICATIONTEMPLATE": "Sniðmát",
+    "SYSTEM": "Kerfi",
+    "EDIT_SYSTEM": "Breyta kerfinu",
+    "COMMAND": "Skipun",
+    "VARIABLE": "Breyta",
+    "AUTHID": "Auðkeni",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Engin SMS ráðstöfun til",
+    "CANNEDANSWERS": "Tengd svör",
+    "SMSCANNEDANSWERS": "Tengd svör",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Ekkert tengt svar til",
+    "NEW_SMSCANNEDANSWER": "Nýtt tengt svar",
+    "ADD_SMSCANNEDANSWER": "Bættu við tengdu svari",
+    "EDIT_SMSCANNEDANSWER": "Breyta",
+    "DELETE_SMSCANNEDANSWER": "Eyða",
+    "DELIVERYREPORTURL": "URL fyrir afhendingarskýrslu",
+    "DELETE": "Eyða",
+    "SENDERSTRING": "Strengur sendanda",
+    "DELIVERYREPORT": "Afhendingar skýrslu",
+    "METHOD": "Aðferð",
+    "ADD_NOTE": "Bættu við skilaboðum",
+    "NOTE": "Skilaboð",
     "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
+    "AUTOREPLY": "Sjálfvirkt svar",
+    "EDIT_AUTOREPLY": "Breyta sjálfvirku svari",
+    "TIMES": "Fjöldi skipta á hver samskipti",
+    "TEXT": "Texti",
+    "INSERT_MESSAGE_HERE": "Settu inn texta skilaboðin þín hér",
+    "CANNED_ANSWER_NOT_FOUND": "Engin tengd svör fundust",
+    "CANNED_ANSWER_SEARCH": "Settu inn texta til að leita að tengdum svörum",
+    "SEND": "Senda",
+    "TO": "Til",
+    "MESSAGE": "Skilaboð",
+    "TAGS": "Tögg",
+    "NO_AGENT_ONLINE": "Engin fulltrúi tengdur",
+    "GOTOREALTIME_SMSQUEUE": "Farðu í rauntíma SMS biðröð",
+    "PARTIALPAUSE": "Hluta hlé",
+    "BUSY": "Upptekin",
+    "TIMER": "Teljari",
     "IDLE": "Idle",
-    "CAPACITY": "Capacity",
+    "CAPACITY": "Geta",
     "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Ítarlegt",
     "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "BASEURL": "Base URL",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+    "REALTIME": "Rauntími",
+    "KEY": "Lykill",
+    "NAME": "Nafn",
+    "SMSQUEUES": "SMS Biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "STRATEGY": "Stefna",
+    "BASEURL": "Grunn URL",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota þegar skilyrt ráðstöfun er virkjuð",
     "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
+      "PROJECTID_REQUIRED": "Skilyrtur reytur",
+      "CLIENTEMAIL_REQUIRED": "Skilyrtur reytur",
+      "PRIVATEKEY_REQUIRED": "Skilyrtur reytur",
+      "ACCESSKEYID_REQUIRED": "Aðgangsauðkenni er nauðsynlegt",
       "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BOTNAME_REQUIRED": "Botta nafnið er skilyrt",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og ",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "TAG_REQUIRED": "Skilyrtur reytur",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Skilyrtur reytur",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "COMMAND_REQUIRED": "Skilyrtur reytur",
+      "AUTHID_REQUIRED": "Skilyrtur reytur",
       "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Skilyrtur reytur",
+      "VALUE_REQUIRED": "Skilyrtur reytur",
       "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "APIKEY_REQUIRED": "Mandatory Field",
-      "APPLICATIONID_REQUIRED": "Mandatory Field",
-      "ACCOUNTID_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+      "SENDERSTRING_MUST_VALID_PATTERN": "Rangt snið",
+      "METHOD_REQUIRED": "Skilyrtur reytur",
+      "MOTIONPROXY_REQUIRED": "Skilyrtur reytur",
+      "MOTIONPROXY_MUST_VALID_URL": "Rangt snið",
+      "KEY_MAX_LENGTH": "Gildið má að hámarki vera að lengd jafnt og {{max}}",
+      "KEY_REQUIRED": "Skilyrtur reytur",
+      "NAME_REQUIRED": "Skilyrtur reytur",
+      "AGENT_TIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "PHONE_REQUIRED": "Skilyrtur reytur",
+      "SID_REQUIRED": "Skilyrtur reytur",
+      "TOKEN_REQUIRED": "Skilyrtur reytur",
+      "USERNAME_REQUIRED": "Skilyrtur reytur",
+      "PASSWORD_REQUIRED": "Skilyrtur reytur",
+      "MOTIONADDRESS_REQUIRED": "Skilyrtur reytur",
+      "MOTIONADDRESS_MUST_VALID_URL": "Rangt snið",
+      "ACCEPTURL_MUST_VALID_URL": "Rangt snið",
+      "TIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "REJECTURL_MUST_VALID_URL": "Rangt snið",
+      "CLOSEURL_MUST_VALID_URL": "Rangt snið",
+      "TYPE_REQUIRED": "Skilyrtur reytur",
+      "LIST_REQUIRED": "Skilyrtur reytur",
+      "PRIORITY_REQUIRED": "Skilyrtur reytur",
+      "CONDITION_REQUIRED": "Skilyrtur reytur",
+      "TRUEPRIORITY_REQUIRED": "Skilyrtur reytur",
+      "FALSEPRIORITY_REQUIRED": "Skilyrtur reytur",
+      "AGENT_REQUIRED": "Skilyrtur reytur",
+      "QUEUE_REQUIRED": "Skilyrtur reytur",
+      "DISPOSITION_REQUIRED": "Skilyrtur reytur",
+      "ACCOUNTSID_REQUIRED": "Skilyrtur reytur",
+      "AUTHTOKEN_REQUIRED": "Skilyrtur reytur",
+      "BASEURL_REQUIRED": "Skilyrtur reyturd",
+      "APIKEY_REQUIRED": "Skilyrtur reytur",
+      "APPLICATIONID_REQUIRED": "Skilyrtur reytur",
+      "ACCOUNTID_REQUIRED": "Skilyrtur reytur",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Skilyrtur reytur"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
+    "AGENT_TIMEOUT": "Tíminn rann út á fulltrúa",
+    "DESCRIPTION": "Lýsing",
+    "ADD_SMSQUEUE": "Bættu við SMS biðröð",
+    "EDIT_SMSQUEUE": "Breyta SMS biðröð",
+    "DELETE_SMSQUEUE": "Eyða SMS biðröð",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
+    "CREATED_AT": "Stofnað kl.",
+    "SAVE": "Geyma",
+    "SMSACCOUNTS": "SMS Reikningur",
+    "TYPE": "Tegund",
+    "PHONE": "Sími",
     "SID": "SID",
     "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
+    "SMSTYPE": "SMS Tegund",
+    "USERNAME": "Notandanafn",
+    "PASSWORD": "Lykilorð",
+    "MOTIONADDRESS": "Motion adressa",
+    "ADD_SMSACCOUNT": "Bættu við SMS reikningi",
+    "EDIT_SMSACCOUNT": "Breyta SMS reikningi",
+    "DELETE_SMSACCOUNT": "Eyða SMS reikningi",
+    "LIST": "Listi",
     "FIDELITY": "Fidelity",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DISPOSITIONS": "Ráðstafanir",
+    "WEBHOOKS": "Vefkrókar",
+    "ACTIONS": "Aðgerðir",
+    "ACCEPT": "Samþykja",
+    "ACCEPTMETHOD": "Samþykja aðferð",
+    "ACCEPTURL": "Samþykja URL",
+    "REJECT": "Hafna",
+    "REJECTMETHOD": "Höfnunaraðferð",
+    "REJECTURL": "Höfnunar URL",
+    "CLOSE": "Loka",
+    "CLOSEMETHOD": "Lokunar aðferð",
+    "CLOSEURL": "Loka URL",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Veldu allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "BACK": "Til baka",
     "SMS": "SMS",
-    "ID": "Id",
+    "ID": "Auðkenni",
     "APIKEY": "ApiKey",
-    "APPLICATIONID": "Application ID",
-    "ACCOUNTID": "Account ID",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "APPLICATIONID": "Auðkenni forrits",
+    "ACCOUNTID": "Auðkenni reiknings",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð",
+    "SMSDISPOSITIONS": "SMS ráðstöfun",
+    "NO_SMSDISPOSITION_AVAILABLE": "Engin SMS ráðstöfun til",
+    "NEW_SMSDISPOSITION": "Ný SMS ráðstöfun",
+    "ADD_SMSDISPOSITION": "Bættu við SMS ráðstöfun",
+    "EDIT_SMSDISPOSITION": "Breyta SMS ráðstöfunum",
+    "DELETE_SMSDISPOSITION": "Eyða SMS ráðstöfun",
+    "NEW_SMSQUEUE": "Ný SMS röð",
+    "NEW_SMSACCOUNT": "Nýr SMS reikningur",
+    "NO_AVAILABLE_INFO": "Engar uppkýsingar fáanlegar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valdir hópar",
     "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Breyta DialogFlow stillingum",
+    "LANGUAGE": "Tungumál",
     "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled"
+      "WELCOMEMESSAGE": "Þetta eru fyrstu svarskilaboðin sem send eru vegna nýrra samskipta",
+      "MOTIONPROXY": "Reiturinn verður að hafa eftirfarandi snið: <samskiptareglur>://<ipadress>[:<gátt>]. Dæmi: https://X.Y.Z.W",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir",
+      "LIST": "Tengiliðalisti notaður til að tengja tengiliði",
+      "RECEIVEURL": "Þetta er sjálfvirkt myndaður API strengur sem þú þarft að nota til að fá skilaboðin inni á reikninginn þinn frá SMS þjónustuveitunni þinni (nota verður POST aðferð): smelltu á klemmuspjaldhnappinn til að afrita hann",
+      "DELIVERYREPORTURL": "Þetta er sjálfvirki API-strengurinn sem þú þarft að nota til að fá sendingarskýrslu sendra skilaboða frá SMS-veitunni þinni (nota verður POST-aðferð): smelltu á klemmuspjald hnappinn til að afrita hann",
+      "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota þegar skilyrt ráðstöfun er virkjuð"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Línur á síðu",
+    "OF": "Af",
+    "TEAMADD_SMSQUEUE": "Bæta við hópi í SMS röð",
+    "AGENTADD_SMSQUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "ALL_AGENTS": "allir fulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "RECEIVEURL": "Móttöku URL",
+    "INTERACTION": "Samskipti",
+    "INTERACTIONS": "Samskipti",
+    "NO_INTERACTION_AVAILABLE": "Engin samskipti til staðar",
+    "CONTACT": "Tengiliður",
+    "STARTEDAT": "Byrjað kl.",
+    "LASTMESSAGE": "Síðustu skilaboð",
+    "AGENT": "Fulltrúi",
+    "CLOSEDAT": "Lokað kl.",
+    "DISPOSITION": "Til ráðstöfunar",
+    "NOTES": "Skilaboð",
+    "GOTO": "Farðu á",
+    "GOTOIF": "Farðu á ef",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
+    "QUEUE": "Röð",
+    "TIMEOUT": "Tíminn rann út",
+    "VALUE": "Gildi",
+    "EDIT_AGENT": "Breyta fulltrúa",
+    "EDIT_GOTO": "Breyta Goto",
+    "EDIT_NOOP": "Breyta Noop",
+    "EDIT_GOTOIF": "Breyta Gotoif",
+    "EDIT_QUEUE": "Breyta biðröð",
+    "CONDITION": "Skilyrði",
+    "TRUEPRIORITY": "Rétt forgangsröðun",
+    "FALSEPRIORITY": "Falskur forgangur",
+    "PRIORITY": "Forgangur",
+    "GOTOP": "Farðu efst",
+    "EDIT_GOTOP": "Breyta Gotop",
+    "EDIT_CLOSE": "Breyta lokun",
+    "FILTER": "Sía",
+    "SELECT_STATUS": "Veldu stöðu",
+    "ALL": "Allir",
+    "SELECT_ACCOUNT": "Veldu reikning",
+    "OPENED": "Opin",
+    "CLOSED": "Lokað",
+    "STATUS": "Staða",
+    "ACCOUNT": "Reikningur",
+    "OPEN": "Opin",
+    "INFO": "Upplýsingar",
+    "ACCOUNTSID": "Reiknings SID",
+    "AUTHTOKEN": "Auðkennis Token",
+    "UNKNOWN": "Óþekkt",
+    "UNREGISTERED": "Óskráð",
+    "UNAVAILABLE": "Ekki tiltækt",
+    "NOT_INUSE": "Ekki í notkun",
+    "REACHABLE": "Hægt að ná í",
+    "IN_USE": "Í notkun",
+    "AGENTS": "Fulltrúar",
+    "QUEUES": "Raðir",
+    "FULLNAME": "Fullt nafn",
+    "INTERNAL": "Innanhúss",
+    "PHONE_STATE": "Staða á síma",
+    "PHONE_STATUS": "Síma staða",
+    "PAUSE": "Hlé",
+    "LOGOUT": "Útskrá",
+    "AGENTADD_QUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "UNPAUSE": "Enda hlé",
+    "DEFAULT_PAUSE": "Staðlað hlé",
+    "LOGGED_IN": "Innskráður",
+    "PAUSED": "Hlé",
+    "READY": "Tilbúið",
+    "WAITING": "Bíður",
+    "VOICE": "Tal",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
+    "OPENCHANNEL": "Opin ráð",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
+    "AGENTSADD_QUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "INTERACTIONS_SMSACCOUNT": "Farðu í samskipti",
+    "REFRESH_INTERACTIONS": "Endurnýjið samskipti",
+    "DELETE_INTERACTION": "\nEyða samskiptum",
+    "AGENTADD_SMSACCOUNT": "Bættu við fulltrúa í SMS reikning",
+    "TEAMS_ASSOCIATION": "Meðlimir hópa",
+    "DOWNLOAD_WITH_ATTACHMENT": "Niðurhal með viðhengi",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Niðurhal án viðhengis"
   }
 }
index 6d60e30..8ae7525 100644 (file)
@@ -4,61 +4,61 @@
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da fila",
     "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguarde atribuição ao agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "Nenhuma disposição de SMS disponível",
-    "CANNEDANSWERS": "Resposta Pronta",
-    "SMSCANNEDANSWERS": "Resposta Pronta",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_SMSCANNEDANSWER": "Nova Resposta Pronta",
-    "ADD_SMSCANNEDANSWER": "Adicionar Resposta Pronta",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Nenhuma qualificação de SMS disponível",
+    "CANNEDANSWERS": "Resposta Pré-definida",
+    "SMSCANNEDANSWERS": "Resposta Pré-definida",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Não há respostas pré-definida disponíveis",
+    "NEW_SMSCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_SMSCANNEDANSWER": "Adicionar Resposta Pré-definida",
     "EDIT_SMSCANNEDANSWER": "Editar",
     "DELETE_SMSCANNEDANSWER": "Excluir",
-    "DELIVERYREPORTURL": "URL do relatório de entrega",
+    "DELIVERYREPORTURL": "URL do Relatório de Entrega",
     "DELETE": "Ecluir",
-    "SENDERSTRING": "Cadeia de Remetente",
-    "DELIVERYREPORT": "Relatório de entrega",
+    "SENDERSTRING": "String do Emissor",
+    "DELIVERYREPORT": "Relatório de Entrega",
     "METHOD": "Método",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Nota",
-    "SPYINTERACTION": "Espião",
-    "AUTOREPLY": "Resposta automatica",
-    "EDIT_AUTOREPLY": "Editar Resposta automatica",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação",
+    "SPYINTERACTION": "Espiar",
+    "AUTOREPLY": "Auto Resposta",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "TIMES": "Número de vezes por interação",
     "TEXT": "Texto",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta predefinida foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta Pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pré-definida",
     "SEND": "Enviar",
     "TO": "Para",
     "MESSAGE": "Mensagem",
     "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_SMSQUEUE": "Ir para a fila de SMS em tempo real",
-    "PARTIALPAUSE": "Pausa parcial",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_SMSQUEUE": "Visualizar Fila de SMS em Tempo Real",
+    "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "PROXY": "Proxy",
     "ADVANCED": "Avançado",
     "MOTIONPROXY": "Proxy ou Dominio do Motion",
     "REALTIME": "Tempo Real",
-    "KEY": "Key",
+    "KEY": "Chave",
     "NAME": "Nome",
     "SMSQUEUES": "Filas de SMS",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
-      "AUTHID_REQUIRED": "Campo Obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "AUTHID_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "SENDERSTRING_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SENDERSTRING_MUST_VALID_PATTERN": "Formato incorreto",
-      "METHOD_REQUIRED": "Campo Obrigatório",
-      "MOTIONPROXY_REQUIRED": "Campo Obrigatório",
+      "METHOD_REQUIRED": "Campo obrigatório",
+      "MOTIONPROXY_REQUIRED": "Campo obrigatório",
       "MOTIONPROXY_MUST_VALID_URL": "Formato incorreto",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "PHONE_REQUIRED": "Campo Obrigatório",
-      "SID_REQUIRED": "Campo Obrigatório",
-      "TOKEN_REQUIRED": "Campo Obrigatório",
-      "USERNAME_REQUIRED": "Campo Obrigatório",
-      "PASSWORD_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "PHONE_REQUIRED": "Campo obrigatório",
+      "SID_REQUIRED": "Campo obrigatório",
+      "TOKEN_REQUIRED": "Campo obrigatório",
+      "USERNAME_REQUIRED": "Campo obrigatório",
+      "PASSWORD_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
-      "TYPE_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTSID_REQUIRED": "Campo Obrigatório",
-      "AUTHTOKEN_REQUIRED": "Campo Obrigatório",
-      "APIKEY_REQUIRED": "Campo Obrigatório",
-      "BASEURL_REQUIRED": "Campo Obrigatório",
+      "TYPE_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "ACCOUNTSID_REQUIRED": "Campo obrigatório",
+      "AUTHTOKEN_REQUIRED": "Campo obrigatório",
+      "APIKEY_REQUIRED": "Campo obrigatório",
+      "BASEURL_REQUIRED": "Campo obrigatório",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "ACCESSKEYID_REQUIRED": "O código da chave de acesso é obrigatório",
+      "ACCESSKEYID_REQUIRED": "ID da Chave de Acesso é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
       "SECRETACCESSKEY_REQUIRED": "É necessário segredo da chave de acesso",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTID_REQUIRED": "Campo Obrigatório",
-      "APPLICATIONID_REQUIRED": "Campo Obrigatório"
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "ACCOUNTID_REQUIRED": "Campo obrigatório",
+      "APPLICATIONID_REQUIRED": "Campo obrigatório"
     },
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_SMSQUEUE": "Adicionar fila de SMS",
-    "EDIT_SMSQUEUE": "Editar fila do SMS",
-    "DELETE_SMSQUEUE": "Excluir fila do SMS",
+    "ADD_SMSQUEUE": "Adicionar Fila de SMS",
+    "EDIT_SMSQUEUE": "Editar Fila de SMS",
+    "DELETE_SMSQUEUE": "Excluir Fila de SMS",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "CREATED_AT": "Criado em",
     "SMSTYPE": "Tipo de SMS",
     "USERNAME": "Usuário",
     "PASSWORD": "Senha",
-    "MOTIONADDRESS": "Endereço Motion",
-    "ADD_SMSACCOUNT": "Adicionar conta SMS",
-    "EDIT_SMSACCOUNT": "Editar conta SMS",
-    "DELETE_SMSACCOUNT": "Excluir conta SMS",
+    "MOTIONADDRESS": "Endereço do Motion",
+    "ADD_SMSACCOUNT": "Adicionar Conta de SMS",
+    "EDIT_SMSACCOUNT": "Editar Conta do SMS",
+    "DELETE_SMSACCOUNT": "Excluir Conta de SMS",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "API": "API",
-    "DISPOSITIONS": "Disposições",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar todos",
+    "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "SMS": "SMS",
     "ID": "Id",
     "CONFIRM_PASSWORD": "Confirmar Senha",
-    "SMSDISPOSITIONS": "Disposições do SMS",
-    "NO_SMSDISPOSITION_AVAILABLE": "Nenhuma disposição de SMS disponível",
-    "NEW_SMSDISPOSITION": "Nova disposição de SMS",
-    "ADD_SMSDISPOSITION": "Adicionar disposição de SMS",
-    "EDIT_SMSDISPOSITION": "Editar disposição de SMS",
-    "DELETE_SMSDISPOSITION": "Excluir disposição de SMS",
-    "NEW_SMSQUEUE": "Nova fila de SMS",
-    "NEW_SMSACCOUNT": "Nova conta SMS",
+    "SMSDISPOSITIONS": "Qualificação de SMS",
+    "NO_SMSDISPOSITION_AVAILABLE": "Nenhuma qualificação de SMS disponível",
+    "NEW_SMSDISPOSITION": "Nova Qualificação de SMS",
+    "ADD_SMSDISPOSITION": "Adicionar Qualificação de SMS",
+    "EDIT_SMSDISPOSITION": "Editar Qualificação de SMS",
+    "DELETE_SMSDISPOSITION": "Excluir Qualificação de SMS",
+    "NEW_SMSQUEUE": "Nova Fila de SMS",
+    "NEW_SMSACCOUNT": "Nova Conta de SMS",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "HELP": {
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "LIST": "Lista do Gerenciador de contatos usada para associar contatos",
+      "LIST": "Lista da Gestão de Contatos usada para associar os contatos",
       "RECEIVEURL": "Esta é a string da API gerada automaticamente que você precisa usar para receber as mensagens dentro da sua conta do seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
-      "DELIVERYREPORTURL": "Essa é a string da API gerada automaticamente que você precisa usar para receber o relatório de entrega das mensagens enviadas do seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-      "WELCOMEMESSAGE": "Esta é a primeira mensagem de resposta enviada para novas interações"
+      "DELIVERYREPORTURL": "Essa é a string da API gerada automaticamente que você precisa usar para receber o relatório de entrega das mensagens enviadas pelo seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa para quando a Qualificação obrigatória estiver habilitado",
+      "WELCOMEMESSAGE": "Esta é a primeira mensagem enviada para novas interações"
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "TEAMADD_SMSQUEUE": "Adicionar equipe à fila do SMS",
-    "AGENTADD_SMSQUEUE": "Adicionar agente à fila do SMS",
-    "ALL_AGENTS": "Todos os agentes",
+    "TEAMADD_SMSQUEUE": "Adicionar Equipe à Fila de SMS",
+    "AGENTADD_SMSQUEUE": "Adicionar Agente à Fila de SMS",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "RECEIVEURL": "Receber URL",
+    "RECEIVEURL": "URL para Recebimento",
     "INTERACTION": "Interação",
     "INTERACTIONS": "Interações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "AGENT": "Agente",
-    "CLOSEDAT": "Fechado em",
-    "DISPOSITION": "Disposição",
-    "NOTES": "Notas",
+    "CLOSEDAT": "Encerrado em",
+    "DISPOSITION": "Qualificação",
+    "NOTES": "Observações",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Fila",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "VALUE": "Valor",
     "EDIT_AGENT": "Editar Agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "PRIORITY": "Prioridade",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_CLOSE": "Editar Encerramento",
     "FILTER": "Filtro",
-    "SELECT_STATUS": "Selecionar um status",
+    "SELECT_STATUS": "Selecionar Status",
     "ALL": "Tudo",
     "SELECT_ACCOUNT": "Selecionar uma Conta",
     "OPENED": "Aberto",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "STATUS": "Status",
     "ACCOUNT": "Conta",
     "OPEN": "Abrir",
-    "INFO": "Informação",
+    "INFO": "Info",
     "ACCOUNTSID": "Conta SID",
     "AUTHTOKEN": "Auth Token",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "FULLNAME": "Nome Completo",
     "PHONE_STATUS": "Status do Telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar agente à fila do SMS",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de SMS",
     "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "LOGGED_IN": "Logado",
     "VOICE": "Voz",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila do SMS",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de SMS",
     "INTERACTIONS_SMSACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_SMSACCOUNT": "Adicionar agente à conta do SMS",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_SMSACCOUNT": "Adicionar Agente à Conta do SMS",
     "APIKEY": "Chave API",
-    "BASEURL": "URL base",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-    "ACCESSKEYID": "ID da chave de acesso",
+    "BASEURL": "URL Base",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a Qualificação obrigatória estiver habilitada",
+    "ACCESSKEYID": "ID da Chave de Acesso",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Nome do bot",
     "DIALOGFLOW": "DialogFlow",
-    "EDIT_AMAZONLEX": "Editar configuração de Lex",
+    "EDIT_AMAZONLEX": "Editar configuração da AmazonLex",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
-    "LANGUAGE": "Língua",
+    "LANGUAGE": "Idioma",
     "LEXREGION": "Região",
-    "SECRETACCESSKEY": "Segredo da chave de acesso",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "WELCOMEMESSAGE": "Mensagem de boas-vindas",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
-    "CLIENTEMAIL": "Email do cliente",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "ACCOUNTID": "ID da conta",
-    "APPLICATIONID": "ID do aplicativo"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "ACCOUNTID": "ID da Conta",
+    "APPLICATIONID": "ID do Aplicativo"
   }
 }
index 2683fcd..6b28606 100644 (file)
     "ENABLEVIDEOECORDING": "Omogući Video Snimanje",
     "ENABLESCREENRECORDINGBYAGENT": "Omogući Snimanje Ekrana od Specijaliste",
     "ENABLEAUTOMATICSCREENRECORDING": "Omogući Automatski Snimanje Ekrana",
-    "OLD_PASSWORD": "Stara Lozinka",
-    "ENABLEJAWSINTEGRATION": "Omogući Jaws Intergraciju",
-    "ALIAS": "Pseudonim",
-    "NO_PASSWORD_CHANGE": "Nema Promjene Lozinke",
-    "SECURITY_SUITE": "Sigurnosni Suite",
-    "AUTO_ANSWER": "Automatski odgovor",
-    "CHAT_AUTOANSWER": "Chat automatski odgovor",
     "CHAT_AUTOANSWERDELAY": "Chat automatski dogovor odgoda [s]",
     "EMAIL_AUTOANSWER": "E-Mail automatski odgovor",
     "EMAIL_AUTOANSWERDELAY": "E-Mail automatski odgovor odgoda [s]",
     "ALL_QUEUES_OPENCHANNEL_INBOUND": "Svi Otvoreni Kanal Queues",
     "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Odabrani Otvoreni Kanal Queues",
     "ALL_QUEUES_FAX_INBOUND": "Svi Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Odabrani Fax Queues"
+    "SELECTED_QUEUES_FAX_INBOUND": "Odabrani Fax Queues",
+    "ALIAS": "Pseudonim",
+    "AUTO_ANSWER": "Automatski odgovor",
+    "CHAT_AUTOANSWER": "Chat automatski odgovor",
+    "ENABLEJAWSINTEGRATION": "Omogući Jaws Intergraciju",
+    "NO_PASSWORD_CHANGE": "Nema Promjene Lozinke",
+    "OLD_PASSWORD": "Stara Lozinka",
+    "SECURITY_SUITE": "Sigurnosni Suite"
   }
 }
index 16c4dd6..6c4a62c 100644 (file)
 {
   "STAFF": {
-    "MANAGE_API_KEY": "API Key Manager",
-    "GENERATE": "Generate",
-    "REGENERATE": "Regenerate",
-    "REMOVE": "Remove",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "APIKEY": "API Key",
-    "VIDEOSUPPORT": "Video support",
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEOECORDING": "Enable Video Recording",
-    "ENABLESCREENRECORDINGBYAGENT": "Enable Screen Recording by Agent",
-    "ENABLEAUTOMATICSCREENRECORDING": "Enable Automatic Screen Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "MANAGE_API_KEY": "API lykil stjórnandi",
+    "GENERATE": "\nStofna",
+    "REGENERATE": "Endurgera",
+    "REMOVE": "Fjarlægja",
+    "APIKEYMANAGER_USER": "API lykil stjórnandi",
+    "APIKEY": "API lykill",
+    "VIDEOSUPPORT": "Video stuðningur",
+    "HOTDESK": "Hjálpar borð",
+    "ENABLEVIDEOECORDING": "Virkja Video upptökur",
+    "ENABLESCREENRECORDINGBYAGENT": "Virkja skjá upptöku eftir fulltrúum",
+    "ENABLEAUTOMATICSCREENRECORDING": "Heimila sjálfvirka skjá upptöku",
+    "OLD_PASSWORD": "Gamla lykilorðið",
+    "ENABLEJAWSINTEGRATION": "Heimila Jaws samþáttun",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "AUTO_ANSWER": "Auto answer",
-    "CHAT_AUTOANSWER": "Chat auto answer",
-    "CHAT_AUTOANSWERDELAY": "Chat auto answer delay [s]",
-    "EMAIL_AUTOANSWER": "Email auto answer",
-    "EMAIL_AUTOANSWERDELAY": "Email auto answer delay [s]",
-    "SMS_AUTOANSWER": "Sms auto answer",
-    "SMS_AUTOANSWERDELAY": "Sms auto answer delay [s]",
-    "OPENCHANNEL_AUTOANSWER": "Openchannel auto answer",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Openchannel auto answer delay [s]",
-    "FAX_AUTOANSWER": "Fax auto answer",
-    "FAX_AUTOANSWERDELAY": "Fax auto answer delay [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp connector auto answer",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapp connector auto answer delay [s]",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Engin lykilorðsbreyting",
+    "SECURITY_SUITE": "Öryggissvíta",
+    "AUTO_ANSWER": "sjálf virkt svar",
+    "CHAT_AUTOANSWER": "Spjall sjálfvirkt svar",
+    "CHAT_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari í spjalli [s]",
+    "EMAIL_AUTOANSWER": "Sjálfvirkt svar á tölvupósti",
+    "EMAIL_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari tölvupósts [s]",
+    "SMS_AUTOANSWER": "SMS sjálfvirkt svar",
+    "SMS_AUTOANSWERDELAY": "Seinkun á sjálfvirku SMS svari [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchannel sjálfvirkt svarr",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Seiknkun á Openchannel sjálfvirku svari [s]",
+    "FAX_AUTOANSWER": "Fax sjálfvirkt svar",
+    "FAX_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari á Faxi [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp connector Sjálfvirkt svar",
+    "WHATSAPP_AUTOANSWERDELAY": "Seinkun á Whatsapp sjálfvirku svari [s]",
+    "LAST_PASSWORD_RESET_AT": "Síðasta lykilorð endurstillt kl.",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Stillingar",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
+    "DTLSCERTFILE": "TLS Vottun",
+    "DTLSPRIVATEKEY": "TLS persónulykill vottunar",
+    "CONTEXT": "Innihald",
+    "RINGINUSE": "Hringitónn í notkun",
+    "USERS": "Notendur",
+    "AGENTS": "Fulltrúi",
     "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Leyta",
+    "BACK": "til baka",
     "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Velja ekkert",
+    "SELECTED": "Valið",
+    "DELETE_SELECTED": "Eyða völdu",
+    "EXPORT_SELECTED": "Flytja út valið",
+    "ALL_USERS": "Allir notendur",
+    "ALL_AGENTS": "Allir fulltrúar",
+    "SORT": "Tegund",
+    "NAME": "Nafn",
+    "FULLNAME": "Fullt nafn",
     "A_TO_Z": "(A to Z)",
     "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "Delete",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
+    "MORE": "Meira",
+    "DELETE_USER": "Eyða notanda",
+    "EDIT_USER": "Breyta notanda",
+    "DELETE_AGENT": "Eyða fulltrúa",
+    "EDIT_AGENT": "Breyta fulltrúa",
+    "DELETE": "Eyða",
+    "SAVE": "Geyma",
+    "ADD_USER": "bæta við notanda",
+    "ADD_AGENT": "Bæta við Fulltrúa",
+    "NO_RESULTS": "Engin niðurstaða..",
+    "CLOSE_DIALOG": "Lokaðu glugganum",
+    "NAME_REQUIRED": "Nafn (skilyrt)",
+    "USERNAME": "Notandanafn",
+    "SHOW_ALL_FIELDS": "Sýna alla reiti",
+    "PHONE_NUMBER": "Síma númer",
+    "EMAIL": "Tölvupóstur",
+    "PASSWORD": "Lykilorð",
     "ERRORS": {
-      "CONFIRM_REQUIRED": "Mandatory field",
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!@#$%^&-_=+[{]}.",
-      "CRUDPERMISSIONS_REQUIRED": "Mandatory field",
-      "USERPROFILE_REQUIRED": "Mandatory field",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+      "CONFIRM_REQUIRED": "Skilyrtur reitur",
+      "ALLOWCODECS_REQUIRED": "Skilyrtur reitur",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) dulkóðun",
+      "DTLSCERTFILE_REQUIRED": "Skilyrtur reitur",
+      "DTLSPRIVATEKEY_REQUIRED": "Skilyrtur reitur",
+      "FULLNAME_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "ACCOUNTNAME_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HOST_REQUIRED": "Skilyrtur reitur",
+      "CHATCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "MAILCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "FAXCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "SMSCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "WHATSAPPCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "OPENCHANNELCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "SIPEXPIRES_REQUIRED": "Skilyrtur reitur",
+      "SIPPORT_REQUIRED": "Skilyrtur reitur",
+      "UNCONDITIONALNUMBER_REQUIRED": "Skilyrtur reitur",
+      "NOREPLYNUMBER_REQUIRED": "Skilyrtur reitur",
+      "BUSYNUMBER_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_MUST_VALID_PATTERN": "Rangt snið {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Skilyrtur reitur",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "AUTOANSWERDELAY_REQUIRED": "Skilyrtur reitur",
+      "MONITOREXTENSION_REQUIRED": "Skilyrtur reitur",
+      "SECURE_PASSWORD_PATTERN": "Lykilorðið verður að vera að minnsta kosti 8 stafir að lengd og hafa 1 lágstaf, 1 hástaf, 1 tölu og 1 sérstaf ~!@#$%^&-_=+[{]}.",
+      "CRUDPERMISSIONS_REQUIRED": "Skilyrtur reitur",
+      "USERPROFILE_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_OLDPASSWORD_MATCH": "Nýtt lykilorð það vera annað en það eldra"
     },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
-    "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
-    "DISABLED": "Deactivated",
-    "BLOCKED": "Locked",
+    "ACCOUNT": "Reikningur",
+    "VOICE": "Tal",
+    "CREATED_AT": "Stofnað kl.",
+    "ROLE": "Hlutverk",
+    "PERSONAL_INFO": "Persónu upplýsingar",
+    "DESCRIPTION": "Lýsing",
+    "CHANGE_AVATAR": "Breyta Avatar",
+    "GENERAL": "Almennt",
+    "INTERNAL": "Innanhúss",
+    "TRANSPORT": "Flytja",
+    "ALLOWCODECS": "Leyfiðir kódekar",
+    "DISABLED": "Óvirkt",
+    "BLOCKED": "Læst/lokað",
     "AD_SSO_ENABLED": "Active Directory SSO",
-    "AUTHENTICATION": "Authentication",
+    "AUTHENTICATION": "Auðkenning",
     "HELP": {
-      "DISABLED": "select to deactivate / unselect to reactivate",
-      "BLOCKED": "Lock / Unlock access",
-      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
-      "SIPPORT": "Default: 5160",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
-      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
-      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
-      "WSS_PORT": "Default: 8089",
-      "AD_SSO_ENABLED": "Login in with your Active Directory credentials"
+      "DISABLED": "veldu til að slökkva á / afvelja til að virkja aftur",
+      "BLOCKED": "Læsa / opna aðgang",
+      "APIKEY": "Vinsamlegast notaðu 'API lyklastjórnunar' hnappinn á tækjastikunni til að stjórna þessum lykli",
+      "LAST_PASSWORD_RESET_AT": "Síðasta dagsetning og tími sem lykilorðinu var breytt. Ef Almennarstillingar Secure Suite er virkjaðar mun lykilorðið renna út eftir 90 daga.",
+      "DTLSCERTFILE": "Tengill á gilt TLS vottorð (.crt skrá). Sjálfgefið gildi: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Tengill á persónulykil vottorðsins (.key skrá). Sjálfgefið gildi: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Leyfðir kódekar í forgangsröð",
+      "TRANSPORT": "Stilltu sjálfgefna flutninga í forgangsröð",
+      "HOST": "Hvernig á að finna viðskiptavininn - IP eða hýsingarheiti. Ef þú vilt að síminn skrái sig sjálfvirkt, notaðu lykilorðið dynamic í stað Host IP",
+      "NAT": "Breytir hegðun Asterisk fyrir viðskiptavini á bak við eldvegg. Ef einhver af kommu aðskildu valkostunum er „nei“ mun Asterisk hunsa aðrar stillingar og setja nat=nei",
+      "SIPEXPIRES": "Sjálfgefið: 160",
+      "SIPPORT": "Sjálfgefið: 5160",
+      "TYPE": "\nÁkveður SIP hlutverk innan Asterisk. Notandi: notaður til að sannvotta móttekinn - Jafningi: fyrir úthringingar - Vinur: nær yfir bæði eiginleika ofangreindra",
+      "CHATCAPACITY": "Hámarksfjöldi samtíma rásasamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "MAILCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "FAXCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "SMSCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "WHATSAPPCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "OPENCHANNELCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "CALLGROUP": "Símtalshópur fulltrúans",
+      "PICKUPGROUP": "Hóparnir þar sem fulltrúinn getur svarað símtölum í",
+      "USERNAME": "\nAðeins tölur, stafir og sérstök tákn (._) eru studdir",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) dulkóðun",
+      "SAVE_PERMISSIONS": "Sérhver eining sem inniheldur breytingar í bið verður vistaður",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Sérsniðnum mælaborðum er stjórnað Tools einingunni",
+      "ENABLEAUTOMATICSCREENRECORDING": "Aðgerðin er aðeins í boði fyrir talrásir",
+      "MASK_SENSITIVE_DATA": "Feldu öll viðkvæm gögn í gegnum forritið (t.d. símanúmer og netföng)",
+      "WSS_PORT": "Sjálfgefið: 8089",
+      "AD_SSO_ENABLED": "Skráðu þig inn með Active Directory skilríkjunum þínum"
     },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
+    "NEW_PASSWORD": "Nýtt lykilorð",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð",
+    "CHANGE_PASSWORD": "Breyta lykilorði",
+    "CHANGEPASSWORD_AGENT": "Breyta lykilorði",
+    "CHANGEPASSWORD_USER": "Breyta lykilorði",
+    "CHANGEPASSWORD_TELEPHONE": "Breyta lykilorði",
+    "LOGININPAUSE": "Innskránig á hlé",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
+    "OTHER_CHANNELS": "Aðrar rásir",
+    "CHATCAPACITY": "Spjall fjöldi",
+    "MAILCAPACITY": "Fjöldi tölvupósta leyfilegur",
+    "FAXCAPACITY": "Fax geta",
+    "SMSCAPACITY": "SMS geta",
     "WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel magn",
     "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
+    "SETTINGS": "Stillingar",
+    "AUTOANSWER": "Sjálfvirkt svar",
+    "ENABLESETTINGS": "Leyfa stillingar",
+    "CALL_FORWARDING": "Áframsending",
+    "UNCONDITIONAL": "Skilyrðislaust",
+    "UNCONDITIONALNUMBER": "\nSkilyrðislaust númer",
+    "NOREPLY": "Ekkert svar",
+    "NOREPLYNUMBER": "Ekkert svar",
+    "BUSY": "Upptekið",
+    "BUSYNUMBER": "Á tali",
+    "REMOTE_CONTROL": "Fjarstýra",
+    "REMOTECONTROL": "Fjarstýra",
+    "REMOTECONTROLPORT": "Port fyrir Remote Control",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP rennur út [sec]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
-    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
+    "PENALTY": "Refsing",
+    "ACCOUNTNAME": "Reikningsnafn",
+    "ADD_TELEPHONE": "Bæta við síma",
+    "EDIT_TELEPHONE": "Breyta síma",
+    "DELETE_TELEPHONE": "Eyða númeri",
+    "TEAMS": "Hópar",
+    "DELETE_TEAM": "Eyða hóp",
+    "AGENTADD_TEAM": "Bæta fulltrúa við hóp",
+    "EDIT_TEAM": "Breyta hópi",
+    "TYPE": "Tegund",
+    "TELEPHONES": "símar",
+    "CALLERID": "Auðkenni úthringjara",
+    "ENABLERECORDING": "Virkja upptöku",
+    "STAFF": "Starfsfólk",
+    "ID": "Auðkenni",
+    "NEW_USER": "Nýr notandi",
+    "NEW_AGENT": "Nýr fulltrúi",
+    "NEW_TELEPHONE": "Nýr sími",
+    "NEW_TEAM": "Nýr hópur",
+    "ADD_TEAM": "Bæta við hóp",
+    "JOIN_QUEUE": "Skráðu þig í biðröina",
+    "CAPACITY": "Geta",
+    "AUTOINTERNAL": "Búðu til innanhússnúmer sjálfvirkt",
+    "ADD_AGENT_TO_TEAM": "Bæta við fulltrúa í hóp",
+    "TEAMADD_AGENT": "Bættu fulltrúa við hóp",
+    "NO_AVAILABLE_INFO": "\nEngar tiltækar upplýsingar",
+    "PERMISSIONS": "Heimildir",
+    "ADD_AGENT_TO_QUEUE": "Bæta fulltrúa við í biðröð",
+    "ALL_MODULES_AVAILABLE": "Allar einingar aðgengilegar",
+    "CALLGROUP": "Hringi hópur",
+    "PICKUPGROUP": "Pickup hópur",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Bæta við fulltrúa í herferðar biðröð",
+    "ADD_AGENT_TO_VOICE_QUEUES": "bæta við fulltrúa í síma biðröð",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Bæta við fulltrúa í spjall rás",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Bæta við fulltrua í póstbiðröð",
+    "ADD_AGENT_TO_SMS_QUEUES": "Bæta við fulltrúa í SMS biðröð",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "bæta við fulltrúa í WhatsApp biðröð",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Bæta við fulltrúa í Open Channel biðraðir",
+    "ADD_AGENT_TO_FAX_QUEUES": "Bæta við fulltrúa í Fax rás",
+    "QUEUEADD_USER_VOICE_INBOUND": "Bættu notanda við tal biðraðir",
+    "QUEUEADD_USER_CHAT_INBOUND": "Bættu notanda við spjall biðraðir",
+    "QUEUEADD_USER_MAIL_INBOUND": "Bættu notanda við tölvupóst biðraðir",
+    "QUEUEADD_USER_SMS_INBOUND": "Bættu notanda við SMS biðraðir",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Bættu notanda við WhatsApp biðraðir",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Bættu notanda við Open Channel biðraðir",
+    "QUEUEADD_USER_FAX_INBOUND": "bættu notanda við Fax biðraðir",
+    "ALL_TEAMS": "Allir hópar",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "ALL_QUEUE_CAMPAIGNS": "Allar herferða biðraðir",
+    "SELECTED_QUEUE_CAMPAIGNS": "Valdar herferða biðraðir",
+    "ALL_VOICE_QUEUES": "Allar tal biðraðir",
+    "SELECTED_VOICE_QUEUES": "Valdar tal biðraðir",
+    "ALL_CHAT_QUEUES": "Allar spjall biðraðir",
+    "SELECTED_CHAT_QUEUES": "Valdar spjall biðraðir",
+    "ALL_MAIL_QUEUES": "Allar tölvupóst biðraðir",
+    "SELECTED_MAIL_QUEUES": "Valdar tölvupóst raðir",
+    "ALL_SMS_QUEUES": "AAllar SMS biðraðir",
+    "SELECTED_SMS_QUEUES": "Valdar SMS biðraðir",
+    "ALL_WHATSAPP_QUEUES": "Allar WhatsApp biðraðir",
+    "SELECTED_WHATSAPP_QUEUES": "Valdar WhatsApp biðraðir",
+    "ALL_OPENCHANNEL_QUEUES": "Allar Open Channel biðraðir",
+    "SELECTED_OPENCHANNEL_QUEUES": "SValdar Open Channel biðraðir",
+    "ALL_FAX_QUEUES": "Allar Fax biðraðir",
+    "SELECTED_FAX_QUEUES": "Valdar Fax biðraðir",
+    "VOICEMAIL": "Talskilaboð",
     "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á bls.",
+    "OF": "af",
+    "CALLFORWARDING": "Áframsending",
+    "DND": "Ónáðið ekki á meðan hlé er",
+    "UNANSWEREDCALLBADGE": "Sýna merkingu á ósvörðum símtölum",
+    "ENABLEDTMFTONE": "Heimila Dtmf tóna",
+    "AUTOANSWERDELAY": "Seinkun á sjálfvirku svari [s]",
+    "ENCRYPTION": "Dulkóðun",
+    "CHANNELS": "Rásir",
+    "CHAT": "Spjall",
+    "SMS": "SMS",
     "WHATSAPP": "WhatsApp Connector",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READ_PERMISSION": "Read",
-    "EDIT_PERMISSION": "Edit",
-    "DELETE_PERMISSION": "Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Bættu notanda við herferða biðraðir",
+    "MONITOREXTENSION": "Upptaka er á notanda aðgangi",
+    "EDITPERMISSIONS": "Breyta heimildum",
+    "READ_PERMISSION": "Lesa",
+    "EDIT_PERMISSION": "Breyta",
+    "DELETE_PERMISSION": "Eyða",
+    "GENERAL_PERMISSIONS": "almennt",
+    "ENABLEMESSENGER": "Heimila innanhúss Messenger",
     "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
+    "PHONE": "Sími",
     "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
-    "ALL_WHATSAPPQUEUES": "All Whataspp Queues",
-    "SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
-    "ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
-    "SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "USERPROFILES": "User Profiles",
-    "USERPROFILE": "User Profile",
-    "NEW_USERPROFILE": "New User Profile",
-    "ADD_USERPROFILE": "Add User Profile",
-    "EDIT_USERPROFILE": "Edit User Profile",
-    "CLONE_USERPROFILE": "Clone User Profile",
-    "DELETE_USERPROFILE": "Delete User Profile",
-    "CRUDPERMISSIONS": "Permission Type",
-    "SECTIONS": "Sections",
-    "MODULES": "Modules",
-    "SUMMARY": "Summary",
-    "REPORT_TYPE": "Report Type",
-    "PERMISSIONS_MANAGE": "Manage",
-    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Permissions",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Automatically associate every current and future resource of this section to the User Profile",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Search...",
-    "PERMISSIONS_SELECT_SECTION": "Select a section",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Select report type",
-    "PERMISSIONS_ALL_RESOURCES": "All resources",
-    "PERMISSIONS_SELECTED_RESOURCES": "Selected resources",
-    "PERMISSIONS_SECTION_HIDE": "Hide section to the User",
-    "PERMISSIONS_SECTION_SHOW": "Show section to the User",
-    "PERMISSIONS_WARNING_ENABLE_ALL": "All {{sectionName}} subsections and their resources will be enabled. Are you sure you want to continue?",
-    "PERMISSIONS_WARNING_CLOSE": "You have unsaved changes. Are you sure you want to exit without saving?",
+    "PREFIXREQUIRED": "Forskeyti skilyrt",
+    "MANAGE_PERMISSIONS": "Stjórna aðgangsheimildum",
+    "USERADD_VOICEQUEUES": "Bæta við tal biðröð á notanda",
+    "ALL_VOICEQUEUES": "Allar tal biðraðir",
+    "SELECTED_VOICEQUEUES": "Valdar tal biðraðir",
+    "USERADD_CHATQUEUES": "Bæta við spjall rás á notanda",
+    "ALL_CHATQUEUES": "allar spjall rásir",
+    "SELECTED_CHATQUEUES": "Valdar tölvupósts biðraðir",
+    "USERADD_MAILQUEUES": "Bæta við tölvupósts biðröð á notanda",
+    "ALL_MAILQUEUES": "Allar tölvupósts biðraðir",
+    "SELECTED_MAILQUEUES": "Valdar spjall biðraðir",
+    "USERADD_SMSQUEUES": "Bæta við SMS biðröð á notanda",
+    "ALL_SMSQUEUES": "Allar SMS biðraðir",
+    "SELECTED_SMSQUEUES": "Valdar SMS biðraðir",
+    "USERADD_WHATSAPPQUEUES": "Bæta við Whataspp biðröð á notanda",
+    "ALL_WHATSAPPQUEUES": "Allar Whataspp biðraðir",
+    "SELECTED_WHATSAPPQUEUES": "Valdar WhatsApp biðraðir",
+    "USERADD_FAXQUEUES": "Bæta við Fax biðröð á notanda",
+    "ALL_FAXQUEUES": "Allar FAX biðraðir",
+    "SELECTED_FAXQUEUES": "Valdar Fax biðraðir",
+    "USERADD_OPENCHANNELQUEUES": "Bæta við Open Channel biðröð á notanda",
+    "ALL_OPENCHANNELQUEUES": "Allar Open Channel biðraðir",
+    "SELECTED_OPENCHANNELQUEUES": "Valdar Open Channel biðraðir",
+    "USERADD_PROJECTS": "Bæta við Cally Square verkefni á notanda",
+    "ALL_PROJECTS": "Öll Cally Square verkefni",
+    "SELECTED_PROJECTS": "Selected Cally Square verkefni",
+    "USERADD_CHATWEBSITES": "Bæta við spjall vefsíðu á notanda",
+    "ALL_CHATWEBSITES": "Allar spjall vefsíður",
+    "SELECTED_CHATWEBSITES": "Valdar spjall vefsíður",
+    "USERADD_QUEUECAMPAIGNS": "Bæta við biðraða herferð á notanda",
+    "ALL_QUEUECAMPAIGNS": "Allar herferða biðraðir",
+    "SELECTED_QUEUECAMPAIGNS": "Valdar biðraða herferðir",
+    "USERADD_MAILACCOUNTS": "Bæta við tölvpóst reikningi á notanda",
+    "ALL_MAILACCOUNTS": "Allir tölvupósts reikningar",
+    "SELECTED_MAILACCOUNTS": "Valdir tölvupósts reikningar",
+    "USERADD_FAXACCOUNTS": "Bæta við Fax reikningi á notanda",
+    "ALL_FAXACCOUNTS": "Allir FAX reikningar",
+    "SELECTED_FAXACCOUNTS": "Valdir Fax reikningar",
+    "USERADD_SMSACCOUNTS": "Bæta við SMS reikningi á notanda",
+    "ALL_SMSACCOUNTS": "Allir SMS reikningar",
+    "SELECTED_SMSACCOUNTS": "Valdir SMS reikningar",
+    "USERADD_WHATSAPPACCOUNTS": "Bæta við WhatsApp reikningi á notanda",
+    "ALL_WHATSAPPACCOUNTS": "Allir WhatsApp reikningar",
+    "SELECTED_WHATSAPPACCOUNTS": "Valdir WhatsApp reikningar",
+    "USERADD_OPENCHANNELACCOUNTS": "Bæta við Open Channel reikningi á notanda",
+    "ALL_OPENCHANNELACCOUNTS": "Allir Open Channel reikningar",
+    "SELECTED_OPENCHANNELACCOUNTS": "Valdir Open Channel reikningar",
+    "USERPROFILES": "Stillingar notanda",
+    "USERPROFILE": "Stillingar notanda",
+    "NEW_USERPROFILE": "Ný notanda skilgreining",
+    "ADD_USERPROFILE": "Bæta við notanda sniði",
+    "EDIT_USERPROFILE": "Breyta notanda stillingum",
+    "CLONE_USERPROFILE": "Afritaðu notanda stillingar",
+    "DELETE_USERPROFILE": "Eyða stillingum notanda",
+    "CRUDPERMISSIONS": "Heimildar tegund",
+    "SECTIONS": "Svæði",
+    "MODULES": "Einingar",
+    "SUMMARY": "Samtala",
+    "REPORT_TYPE": "Skýrslu tegund",
+    "PERMISSIONS_MANAGE": "Stjórna",
+    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Heimildir",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Tengja sjálfkrafa hvert núverandi og framtíðar úrræði við notendaprófílinn",
+    "PERMISSIONS_PLACEHOLDER_SEARCH": "Leita...",
+    "PERMISSIONS_SELECT_SECTION": "Veldu svæði",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Velja skýrslu tegund",
+    "PERMISSIONS_ALL_RESOURCES": "Öll úrræði",
+    "PERMISSIONS_SELECTED_RESOURCES": "Valdir möguleikar",
+    "PERMISSIONS_SECTION_HIDE": "Fela þennan hluta fyrir notandanum",
+    "PERMISSIONS_SECTION_SHOW": "Sýna þennann hluta notandanum",
+    "PERMISSIONS_WARNING_ENABLE_ALL": "Allir {{sectionName}} undirkaflar og aðgerðir þeirra verða virkjuð. Ertu viss um að þú viljir halda áfram?",
+    "PERMISSIONS_WARNING_CLOSE": "Þú ert með óvistaðar breytingar. Ertu viss um að þú viljir hætta án þess að vista?",
     "NOTIFICATIONS": {
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section enabled",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section disabled",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} section saved",
-      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Permissions successfully updated!"
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} hluti virkjaður",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "Öllum {{sectionName}} aðgengi hefur verið bætt við {{userProfileName}} notandaprófílinn",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} hefur verið bætt við {{userProfileName}} notandaprófílinn",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} hluti óvirkjað",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "Öll {{sectionName}} aðgengi hafa verið fjarlægð af {{userProfileName}} notandaprófílnum",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "\n{{sectionName}} hefur verið fjarlægt af {{userProfileName}} notandaprófílnum",
+      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} hluti vistaður",
+      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Heimildir uppfærðar!"
     },
-    "CONFIRM": "Confirm",
-    "CANCEL": "Cancel",
-    "CLOSE": "Close",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unauthorized action",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
-    "MASK_SENSITIVE_DATA": "Mask Sensitive Data",
+    "CONFIRM": "Staðfesta",
+    "CANCEL": "Hætta við",
+    "CLOSE": "Loka",
+    "QUEUES_ASSOCIATION": "{{channel}} Biðraðir",
+    "TEAMS_ASSOCIATION": "Meðlimir í hóp",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Óleyfileg aðgerð",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Þú hefur ekki leyfi til nota valið svæði",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Þú hefur ekki heimild til að stofna þennan möguleika",
+    "MASK_SENSITIVE_DATA": "Hylja viðkvæm gögn",
     "WSS_PORT": "WSS Port",
-    "DOWNLOADS": "Downloads",
-    "DOWNLOAD_PERMISSIONS": "Download Permissions",
-    "VOICE_RECORDINGS": "Voice Recordings",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
-    "ATTACHMENTS": "Attachments",
-    "SCREEN_RECORDINGS": "Screen Recordings",
+    "DOWNLOADS": "Niðurhal",
+    "DOWNLOAD_PERMISSIONS": "Leyfi til niðurhals",
+    "VOICE_RECORDINGS": "Upptaka á tali",
+    "OMNICHANNEL_INTERACTIONS": "Omnichannel samskipti",
+    "ATTACHMENTS": "Viðhengi",
+    "SCREEN_RECORDINGS": "Skjáupptaka",
     "JSCRIPTY_SESSIONS": "Jscripty Sessions",
-    "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
-    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
-    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign",
-    "CLIENT_LOGS": "Client Logs",
-    "CLIENT_LOGS_DISABLED": "Client logs are disabled",
-    "CLIENT_LOGS_ENABLED": "Client logs are enabled",
-    "CLIENT_LOGS_LOGLEVEL_SELECT": "Select min logging level (severity)",
-    "CLIENT_LOGS_LOGLEVEL": "Log level: {{logLevel}}",
-    "CLIENT_LOGS_ENABLED_SINCE": "Enabled since: {{enabledSince}}",
-    "CLIENT_LOGS_ENABLED_MSG": "Client logs have been enabled for your user",
-    "CLIENT_LOGS_DISABLED_MSG": "Client logs have been disabled for your user",
-    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Warning: this could severely affect server performances if many agents are logged in at the same time!",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues"
+    "CONTACT_MANAGER_LISTS": "Hafðu samband við stjórnanda listans",
+    "CALLYSQUARE_RECORDINGS": "Cally Square upptökur",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Hunsa stöðu fulltrúa ef um pantað símtal er að ræða",
+    "SELECT_RECALLME_CAMPAIGN": "Veldu Recall Me herferð",
+    "CLIENT_LOGS": "Skráningar notanda",
+    "CLIENT_LOGS_DISABLED": "Skráningar notanda eru afvirkjaðir",
+    "CLIENT_LOGS_ENABLED": "Færsluskráningar notanda eru virkjaðr",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Veldu lámarks skráningar stig (severity)",
+    "CLIENT_LOGS_LOGLEVEL": "Stig skránginar: {{logLevel}}",
+    "CLIENT_LOGS_ENABLED_SINCE": "Virkjað síðan: {{enabledSince}}",
+    "CLIENT_LOGS_ENABLED_MSG": "Færslu skráningar á þínum notanda hafa verið virkjaðar",
+    "CLIENT_LOGS_DISABLED_MSG": "Færslu skráningar á þínum notanda hefur verið afvirkjuð",
+    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Viðvörun: þetta gæti haft alvarleg áhrif á hraða ef margir fulltrúar eru innskráðir á sama tíma!",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Bættu fulltrúa við biðraða herferðir",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Bættu fullrúa við tal raðir",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Bættu fulltrúa við spjallraðir",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Bættu fulltrúa við tölvupóst raðir",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Bættu fulltrúa við SMS raðir",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Bættu fulltrúa við WhatsApp biðraðir",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Bættu fulltrúa við Open Channel raðir",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Bættu fulltrúa við Fax raðir",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Allar herferða biðraðir",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valdar herferða biðraðir",
+    "ALL_QUEUES_VOICE_INBOUND": "Allar tal biðraðir",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Valdar tal biðraðir",
+    "ALL_QUEUES_CHAT_INBOUND": "Allar spjall biðraðir",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Valdar spjall biðraðir",
+    "ALL_QUEUES_MAIL_INBOUND": "Allar tölvupóst biðraðir",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Valdar tölvupóst biðraðir",
+    "ALL_QUEUES_SMS_INBOUND": "Allar SMS biðraðir",
+    "SELECTED_QUEUES_SMS_INBOUND": "Valdar SMS biðraðir",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Allar WhatsApp biðraðirueues",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valdar WhatsApp biðraðir",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Allar Open Channel biðraðir",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valdar Open Channel biðraðir",
+    "ALL_QUEUES_FAX_INBOUND": "Allar Fax biðraðir",
+    "SELECTED_QUEUES_FAX_INBOUND": "Valdar Fax biðrair"
   }
 }
index 3c87ee1..e91cfcd 100644 (file)
@@ -1,32 +1,32 @@
 {
   "STAFF": {
     "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Ativar gravação de vídeo",
+    "ENABLEVIDEORECORDING": "Ativar Gravação de Vídeo",
     "OLD_PASSWORD": "Senha Antiga",
     "ENABLEJAWSINTEGRATION": "Ativar Integração de Jaws",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "Nenhuma mudança de senha",
+    "NO_PASSWORD_CHANGE": "Nenhuma Alteração de Senha",
     "SECURITY_SUITE": "Suíte de Segurança",
-    "LAST_PASSWORD_RESET_AT": "Última redefinição de senha em",
+    "LAST_PASSWORD_RESET_AT": "Última alteração de senha foi em",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Definições",
+    "SETTINGS_WEBRTC": "Configurações",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "Certificado TLS",
     "DTLSPRIVATEKEY": "Chave privada do certificado TLS",
     "CONTEXT": "Contexto",
-    "RINGINUSE": "Toque em uso",
+    "RINGINUSE": "Toque em Uso",
     "USERS": "Usuários",
     "AGENTS": "Agentes",
     "TOGGLE_SIDENAV": "Toggle sidenav",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SELECTED": "Selecionado",
     "DELETE_SELECTED": "Excluir selecionado",
     "EXPORT_SELECTED": "Exportar selecionado",
-    "ALL_USERS": "Todos os usuários",
+    "ALL_USERS": "Todos os Usuários",
     "ALL_AGENTS": "Todos os agentes",
     "SORT": "ordenar",
     "NAME": "Nome",
     "ADD_USER": "Adicionar Usuário",
     "ADD_AGENT": "Adicionar Agente",
     "NO_RESULTS": "Nenhum resultado ..",
-    "CLOSE_DIALOG": "Fechar a caixa de diálogo",
+    "CLOSE_DIALOG": "Encerrar Conversa",
     "NAME_REQUIRED": "Nome (obrigatório)",
     "USERNAME": "Usuário",
-    "SHOW_ALL_FIELDS": "Mostrar todos os campos",
-    "PHONE_NUMBER": "Número de telefone",
+    "SHOW_ALL_FIELDS": "Mostrar Todos os Campos",
+    "PHONE_NUMBER": "Número de Telefone",
     "EMAIL": "Email",
     "PASSWORD": "Senha",
     "ERRORS": {
     "VOICE": "Voz",
     "CREATED_AT": "Criado em",
     "ROLE": "Função",
-    "PERSONAL_INFO": "Informação pessoal",
+    "PERSONAL_INFO": "Informação Pessoal",
     "DESCRIPTION": "Descrição",
-    "CHANGE_AVATAR": "Mudar Avatar",
+    "CHANGE_AVATAR": "Alterar Avatar",
     "GENERAL": "Geral",
     "INTERNAL": "Interno",
     "TRANSPORT": "Transporte",
-    "ALLOWCODECS": "Codecs permitidos",
+    "ALLOWCODECS": "Codecs Permitidos",
     "HELP": {
       "LAST_PASSWORD_RESET_AT": "Última data e hora em que a senha foi alterada. Se a configuração geral do Secure Suite estiver ativada, a senha expirará após 90 dias.",
       "DTLSCERTFILE": "Link para o certificado TLS válido (arquivo .crt). Valor padrão: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Link para a chave privada do certificado (arquivo .key). Valor padrão: '/etc/pki/tls/private/motion.key'.",
       "ALLOWCODECS": "Codecs permitidos em ordem de preferência",
-      "TRANSPORT": "Definir os transportes padrão em ordem de preferência",
-      "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre, use a palavra-chave dynamic em vez de Host IP",
-      "NAT": "Altera o comportamento do Asterisk para clientes por trás de um firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir nat = no",
+      "TRANSPORT": "Define o transporte padrão em ordem de preferência",
+      "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre sem restrição, use a palavra-chave dynamic em vez de Host IP",
+      "NAT": "Altera o comportamento do Asterisk para clientes que estejam atrás de firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir 'nat = no'",
       "SIPEXPIRES": "Padrão: 160",
       "SIPPORT": "Padrão: 5160",
-      "TYPE": "Determina o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange ambas as características do acima",
-      "CHATCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "MAILCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "FAXCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "SMSCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "OPENCHANNELCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
+      "TYPE": "Determina o papel do SIP no Asterisk. User: usado para autenticar entrada - Peer: para chamadas de saída - Friend: abrange ambas as características",
+      "CHATCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "MAILCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "FAXCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "SMSCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "OPENCHANNELCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
       "CALLGROUP": "O grupo de chamadas do agente",
       "PICKUPGROUP": "Os grupos nos quais o agente pode atender chamadas",
       "USERNAME": "Somente números, letras e caracteres específicos (._) são suportados",
       "ENCRYPTION": "Criptografia SRTP (Secure Realtime Protocol)",
       "SAVE_PERMISSIONS": "Todas as seções que contêm alterações pendentes serão salvas",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "As permissões de painéis personalizados são gerenciadas no módulo Ferramentas",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "As permissões de Dashboards\nPersonalizados são gerenciadas no módulo Ferramentas",
       "APIKEY": "Use o botão 'API key manager' na barra de ferramentas para gerenciar essa chave",
       "ENABLEAUTOMATICSCREENRECORDING": "A funcionalidade está disponível apenas para canal de voz",
-      "BLOCKED": "Bloquear / desbloquear acesso",
+      "BLOCKED": "Bloquear / Desbloquear acesso",
       "DISABLED": "selecione para desativar / desmarcar para reativar",
-      "WHATSAPPCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "MASK_SENSITIVE_DATA": "Mascare quaisquer dados confidenciais em todo o aplicativo (por exemplo, números de telefone e endereços de e-mail)",
+      "WHATSAPPCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "MASK_SENSITIVE_DATA": "Mascare quaisquer dados confidenciais em toda aplicação (por exemplo, números de telefone e endereços de e-mail)",
       "WSS_PORT": "Padrão: 8089",
       "AD_SSO_ENABLED": "Faça login com suas credenciais do Active Directory"
     },
     "NEW_PASSWORD": "Nova Senha",
-    "CONFIRM_PASSWORD": "Confirmar a Senha",
-    "CHANGE_PASSWORD": "Mudar senha",
-    "CHANGEPASSWORD_AGENT": "Mudar senha",
-    "CHANGEPASSWORD_USER": "Mudar senha",
-    "CHANGEPASSWORD_TELEPHONE": "Mudar senha",
-    "LOGININPAUSE": "Login em pausa",
+    "CONFIRM_PASSWORD": "Confirmar Senha",
+    "CHANGE_PASSWORD": "Alterar Senha",
+    "CHANGEPASSWORD_AGENT": "Alterar Senha",
+    "CHANGEPASSWORD_USER": "Alterar Senha",
+    "CHANGEPASSWORD_TELEPHONE": "Alterar Senha",
+    "LOGININPAUSE": "Login em Pausa",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Espião",
-    "OTHER_CHANNELS": "Outros canais",
-    "CHATCAPACITY": "Capacidade do Chat",
+    "CHANSPY": "Intercalação Remota",
+    "OTHER_CHANNELS": "Outros Canais",
+    "CHATCAPACITY": "Capacidade do WebChat",
     "MAILCAPACITY": "Capacidade de Email",
     "FAXCAPACITY": "Capacidade do Fax",
-    "SMSCAPACITY": "Capacidade do Sms",
+    "SMSCAPACITY": "Capacidade do SMS",
     "OPENCHANNELCAPACITY": "Capacidade do Open Channel",
     "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Definições",
-    "AUTOANSWER": "Resposta automática",
-    "ENABLESETTINGS": "Habilitar Definições",
+    "SETTINGS": "Configurações",
+    "AUTOANSWER": "Atendimento Automático",
+    "ENABLESETTINGS": "Ativar Configurações",
     "CALL_FORWARDING": "Encaminhamento de Chamadas",
     "UNCONDITIONAL": "Incondicional",
     "UNCONDITIONALNUMBER": "Número Incondicional",
-    "NOREPLY": "Sem resposta",
-    "NOREPLYNUMBER": "Nenhum número de resposta",
+    "NOREPLY": "Sem Resposta",
+    "NOREPLYNUMBER": "Nenhum Número de Resposta",
     "BUSY": "Ocupado",
     "BUSYNUMBER": "Número Ocupado",
-    "REMOTE_CONTROL": "Controle remoto",
-    "REMOTECONTROL": "Controle remoto",
-    "REMOTECONTROLPORT": "Porta de Controle remoto",
+    "REMOTE_CONTROL": "Controle Remoto",
+    "REMOTECONTROL": "Controle Remoto",
+    "REMOTECONTROLPORT": "Porta de Controle Remoto",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expira [seg]",
+    "SIPEXPIRES": "Expiração SIP [seg]",
     "SIPPORT": "Porta SIP",
     "PENALTY": "Prioridade",
-    "ACCOUNTNAME": "Nome da conta",
+    "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",
+    "AGENTADD_TEAM": "Adicionar Agentes na Equipe",
     "EDIT_TEAM": "Editar Equipe",
     "TYPE": "Tipo",
     "TELEPHONES": "Telefones",
-    "CALLERID": "Identificador de chamadas",
-    "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Pessoal",
+    "CALLERID": "Caller ID",
+    "ENABLERECORDING": "Ativar Gravação",
+    "STAFF": "Colaboradores",
     "ID": "Id",
     "NEW_USER": "Novo Usuário",
     "NEW_AGENT": "Novo Agente",
     "NEW_TELEPHONE": "Novo Telefone",
     "NEW_TEAM": "Nova Equipe",
     "ADD_TEAM": "Adicionar Equipe",
-    "JOIN_QUEUE": "Junte-se à fila",
+    "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",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "AUTOINTERNAL": "Gerar automaticamente número interno",
+    "ADD_AGENT_TO_TEAM": "Adicionar Agente na Equipe",
+    "TEAMADD_AGENT": "Adicionar Agente na Equipe",
+    "NO_AVAILABLE_INFO": "Nenhuma info disponível",
     "PERMISSIONS": "Permissões",
-    "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
+    "ADD_AGENT_TO_QUEUE": "Adicionar Agente à Fila",
     "ALL_MODULES_AVAILABLE": "Todos os módulos disponíveis",
     "CALLGROUP": "Grupo de Chamadas",
-    "PICKUPGROUP": "Grupo de retirada",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar agente a campanhas de fila",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar agente às filas de voz",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar agente às filas de Chat",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar agente às filas de emails",
-    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar agente às filas do SMS",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar agente às filas do Open Channel",
-    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar agente às filas de fax",
-    "QUEUEADD_USER_VOICE_INBOUND": "Adicionar usuário às filas de voz",
-    "QUEUEADD_USER_CHAT_INBOUND": "Adicionar usuário a filas de Chat",
-    "QUEUEADD_USER_MAIL_INBOUND": "Adicionar usuário a filas de e-mail",
-    "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",
+    "PICKUPGROUP": "Grupo de Captura",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar Agente a Campanhas de Fila",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar Agente à Fila de Voz",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar Agente à Fila de WebChat",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar Agente à Fila de Emails",
+    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar Agente à Filas do SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar Agente à Fila do OpenChannel",
+    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar Agente à Fila de Fax",
+    "QUEUEADD_USER_VOICE_INBOUND": "Adicionar Usuário à Filas de Voz",
+    "QUEUEADD_USER_CHAT_INBOUND": "Adicionar Usuário à Filas de WebChat",
+    "QUEUEADD_USER_MAIL_INBOUND": "Adicionar Usuário a Filas de Email",
+    "QUEUEADD_USER_SMS_INBOUND": "Adicionar Usuário à Fila de SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar Usuário à Filas do Open Channel",
+    "QUEUEADD_USER_FAX_INBOUND": "Adicionar Usuário à Filas de Fax",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
+    "ALL_QUEUE_CAMPAIGNS": "Todas as Campanhas de Filas",
     "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
-    "ALL_VOICE_QUEUES": "Todas as filas de voz",
-    "SELECTED_VOICE_QUEUES": "Filas de voz selecionadas",
-    "ALL_CHAT_QUEUES": "Todas as filas de Chat",
-    "SELECTED_CHAT_QUEUES": "Filas de Chat Selecionadas",
-    "ALL_MAIL_QUEUES": "Todas as filas de email",
-    "SELECTED_MAIL_QUEUES": "Filas de E-mail Selecionadas",
-    "ALL_SMS_QUEUES": "Todas as filas do SMS",
-    "SELECTED_SMS_QUEUES": "Filas SMS Selecionadas",
-    "ALL_OPENCHANNEL_QUEUES": "Todas as filas do Open Channel",
-    "SELECTED_OPENCHANNEL_QUEUES": "Filas de Open Channel Selecionadas",
-    "ALL_FAX_QUEUES": "Todas as filas de fax",
-    "SELECTED_FAX_QUEUES": "Filas de fax selecionadas",
-    "VOICEMAIL": "Correio de voz",
+    "ALL_VOICE_QUEUES": "Todas as Filas de Voz",
+    "SELECTED_VOICE_QUEUES": "Filas de Voz Selecionadas",
+    "ALL_CHAT_QUEUES": "Todas as Filas de WebChat",
+    "SELECTED_CHAT_QUEUES": "Filas de WebChat Selecionadas",
+    "ALL_MAIL_QUEUES": "Todas as Filas de Email",
+    "SELECTED_MAIL_QUEUES": "Filas de Email Selecionadas",
+    "ALL_SMS_QUEUES": "Todas as Filas de SMS",
+    "SELECTED_SMS_QUEUES": "Filas de SMS Selecionadas",
+    "ALL_OPENCHANNEL_QUEUES": "Todas as Filas do OpenChannel",
+    "SELECTED_OPENCHANNEL_QUEUES": "Filas de OpenChannel Selecionadas",
+    "ALL_FAX_QUEUES": "Todas as Filas de Fax",
+    "SELECTED_FAX_QUEUES": "Filas de Fax Selecionadas",
+    "VOICEMAIL": "Correio de Voz",
     "SHOWWEBCONTROL": "Tipologia",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por Página",
     "CALLFORWARDING": "Encaminhamento de Chamadas",
     "DND": "Não perturbe durante a pausa",
     "UNANSWEREDCALLBADGE": "Mostrar info de chamada não atendida",
-    "ENABLEDTMFTONE": "Ativar tons Dtmf",
-    "AUTOANSWERDELAY": "Atraso de Resposta Automática [s]",
+    "ENABLEDTMFTONE": "Ativar tons DTMF",
+    "AUTOANSWERDELAY": "Atraso de Atendimento Automático [seg]",
     "ENCRYPTION": "Encriptação",
     "CHANNELS": "Canais",
-    "CHAT": "Chat",
-    "SMS": "Sms",
+    "CHAT": "WebChat",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar usuário a campanhas de fila",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar Usuário a Campanhas de Fila",
     "MONITOREXTENSION": "Gravar chamadas para a extensão do usuário",
     "EDITPERMISSIONS": "Editando Permissões",
-    "READANDEDIT": "Leia, Edite",
+    "READANDEDIT": "Ler, Editar",
     "READANDEDITANDDELETE": "Ler, Editar, Excluir",
     "GENERAL_PERMISSIONS": "Geral",
-    "ENABLEMESSENGER": "Ativar mensageiro interno",
+    "ENABLEMESSENGER": "Ativar Chat Interno",
     "OUTBOUNDPROXY": "Proxy de saída",
     "PHONE": "Telefone",
     "MOBILE": "Celular",
     "PREFIXREQUIRED": "Prefixo Obrigatório",
     "MANAGE_PERMISSIONS": "Gerenciar Permissões",
-    "USERADD_VOICEQUEUES": "Adicionar fila de voz ao usuário",
-    "ALL_VOICEQUEUES": "Todas as filas de voz",
-    "SELECTED_VOICEQUEUES": "Filas de voz selecionadas",
-    "USERADD_CHATQUEUES": "Adicionar fila de Chat ao usuário",
-    "ALL_CHATQUEUES": "Todas as filas de Chat",
-    "SELECTED_CHATQUEUES": "Filas de E-mail Selecionadas",
-    "USERADD_MAILQUEUES": "Adicionar fila de email ao usuário",
-    "ALL_MAILQUEUES": "Todas as filas de email",
-    "SELECTED_MAILQUEUES": "Filas de Chat Selecionadas",
-    "USERADD_SMSQUEUES": "Adicionar fila do SMS ao usuário",
-    "ALL_SMSQUEUES": "Todas as filas do SMS",
-    "SELECTED_SMSQUEUES": "Filas SMS Selecionadas",
-    "USERADD_FAXQUEUES": "Adicionar fila de fax ao usuário",
-    "ALL_FAXQUEUES": "Todas as filas de fax",
-    "SELECTED_FAXQUEUES": "Filas de fax selecionadas",
-    "USERADD_OPENCHANNELQUEUES": "Adicionar fila de Open Channel ao usuário",
-    "ALL_OPENCHANNELQUEUES": "Todas as filas do Open Channel",
-    "SELECTED_OPENCHANNELQUEUES": "Filas de Open Channel Selecionadas",
-    "USERADD_PROJECTS": "Adicionar Projeto Cally Square ao Usuário",
-    "ALL_PROJECTS": "Todos os projetos da Cally Square",
-    "SELECTED_PROJECTS": "Projetos selecionados da Cally Square",
-    "USERADD_CHATWEBSITES": "Adicionar site de chat ao usuário",
-    "ALL_CHATWEBSITES": "Todos os sites de Chat",
-    "SELECTED_CHATWEBSITES": "Sites de Chat selecionados",
-    "USERADD_QUEUECAMPAIGNS": "Adicionar campanha de fila ao usuário",
-    "ALL_QUEUECAMPAIGNS": "Todas as campanhas de filas",
+    "USERADD_VOICEQUEUES": "Adicionar Fila de Voz ao Usuário",
+    "ALL_VOICEQUEUES": "Todas as Filas de Voz",
+    "SELECTED_VOICEQUEUES": "Filas de Voz Selecionadas",
+    "USERADD_CHATQUEUES": "Adicionar Fila de WebChat ao Usuário",
+    "ALL_CHATQUEUES": "Todas as Filas de WebChat",
+    "SELECTED_CHATQUEUES": "Filas de Email Selecionadas",
+    "USERADD_MAILQUEUES": "Adicionar Fila de Email ao Usuário",
+    "ALL_MAILQUEUES": "Todas as Filas de Email",
+    "SELECTED_MAILQUEUES": "Filas de Email Selecionadas",
+    "USERADD_SMSQUEUES": "Adicionar Fila de SMS ao Usuário",
+    "ALL_SMSQUEUES": "Todas as Filas de SMS",
+    "SELECTED_SMSQUEUES": "Filas de SMS Selecionadas",
+    "USERADD_FAXQUEUES": "Adicionar Fila de Fax ao Usuário",
+    "ALL_FAXQUEUES": "Todas as Filas de Fax",
+    "SELECTED_FAXQUEUES": "Filas de Fax Selecionadas",
+    "USERADD_OPENCHANNELQUEUES": "Adicionar Fila do OpenChannel ao Usuário",
+    "ALL_OPENCHANNELQUEUES": "Todas as Filas do OpenChannel",
+    "SELECTED_OPENCHANNELQUEUES": "Filas de OpenChannel Selecionadas",
+    "USERADD_PROJECTS": "Adicionar Projeto do CallySquare ao Usuário",
+    "ALL_PROJECTS": "Todos os Projetos do CallySquare",
+    "SELECTED_PROJECTS": "Projetos do Cally Square Selecionados",
+    "USERADD_CHATWEBSITES": "Adicionar Site de Webchat ao Usuário",
+    "ALL_CHATWEBSITES": "Todos os Sites de WebChat",
+    "SELECTED_CHATWEBSITES": "Sites de WebChat Selecionados",
+    "USERADD_QUEUECAMPAIGNS": "Adicionar Campanha de Fila ao Usuário",
+    "ALL_QUEUECAMPAIGNS": "Todas as Campanhas de Filas",
     "SELECTED_QUEUECAMPAIGNS": "Campanhas de Filas Selecionadas",
-    "USERADD_MAILACCOUNTS": "Adicionar conta de email ao usuário",
-    "ALL_MAILACCOUNTS": "Todas as contas de email",
-    "SELECTED_MAILACCOUNTS": "Contas de email selecionadas",
-    "USERADD_FAXACCOUNTS": "Adicionar conta de fax ao usuário",
-    "ALL_FAXACCOUNTS": "Todas as contas de fax",
-    "SELECTED_FAXACCOUNTS": "Contas de fax selecionadas",
-    "USERADD_SMSACCOUNTS": "Adicionar conta SMS ao usuário",
-    "ALL_SMSACCOUNTS": "Todas as contas SMS",
-    "SELECTED_SMSACCOUNTS": "Contas SMS Selecionadas",
-    "USERADD_OPENCHANNELACCOUNTS": "Adicionar conta de Open Channel ao usuário",
-    "ALL_OPENCHANNELACCOUNTS": "Todas as contas de Open Channel",
-    "SELECTED_OPENCHANNELACCOUNTS": "Contas de Open Channel selecionadas",
-    "ADD_USERPROFILE": "Adicionar perfil de usuário",
+    "USERADD_MAILACCOUNTS": "Adicionar Conta de Email ao Usuário",
+    "ALL_MAILACCOUNTS": "Todas as Contas de Email",
+    "SELECTED_MAILACCOUNTS": "Contas de Email Selecionadas",
+    "USERADD_FAXACCOUNTS": "Adicionar Conta de Fax ao Usuário",
+    "ALL_FAXACCOUNTS": "Todas as Contas de Fax",
+    "SELECTED_FAXACCOUNTS": "Contas de Fax Selecionadas",
+    "USERADD_SMSACCOUNTS": "Adicionar Conta de SMS ao Usuário",
+    "ALL_SMSACCOUNTS": "Todas as Contas de SMS",
+    "SELECTED_SMSACCOUNTS": "Contas de SMS Selecionadas",
+    "USERADD_OPENCHANNELACCOUNTS": "Adicionar Conta do OpenChannel ao Usuário",
+    "ALL_OPENCHANNELACCOUNTS": "Todas as Contas de OpenChannel",
+    "SELECTED_OPENCHANNELACCOUNTS": "Contas de OpenChannel Selecionadas",
+    "ADD_USERPROFILE": "Adicionar Perfil de Usuário",
     "CANCEL": "Cancelar",
-    "CLONE_USERPROFILE": "Perfil do usuário de clone",
-    "CLOSE": "Perto",
-    "CONFIRM": "confirme",
-    "CRUDPERMISSIONS": "Tipo de permissão",
+    "CLONE_USERPROFILE": "Clonar Perfil do Usuário",
+    "CLOSE": "Encerrar",
+    "CONFIRM": "Confirme",
+    "CRUDPERMISSIONS": "Tipo de Permissão",
     "DELETE_PERMISSION": "Excluir",
-    "DELETE_USERPROFILE": "Excluir perfil do usuário",
+    "DELETE_USERPROFILE": "Excluir Perfil do Usuário",
     "EDIT_PERMISSION": "Editar",
-    "EDIT_USERPROFILE": "Editar perfil do usuário",
+    "EDIT_USERPROFILE": "Editar Perfil do Usuário",
     "MODULES": "Módulos",
-    "NEW_USERPROFILE": "Novo perfil de usuário",
+    "NEW_USERPROFILE": "Novo Perfil de Usuário",
     "PERMISSIONS_ALL_RESOURCES": "Todos os recursos",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Associe automaticamente todos os recursos atuais e futuros desta seção ao Perfil do usuário",
-    "PERMISSIONS_MANAGE": "Gerir",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Associe automaticamente todos os recursos atuais e futuros desta seção ao Perfil do Usuário",
+    "PERMISSIONS_MANAGE": "Gerenciar",
     "PERMISSIONS_PLACEHOLDER_SEARCH": "Procurar...",
-    "PERMISSIONS_SECTION_HIDE": "Ocultar seção para o usuário",
-    "PERMISSIONS_SECTION_SHOW": "Mostrar seção ao usuário",
+    "PERMISSIONS_SECTION_HIDE": "Ocultar seção para o Usuário",
+    "PERMISSIONS_SECTION_SHOW": "Mostrar seção ao Usuário",
     "PERMISSIONS_SECTION_TITLE": "Permissões do {{sectionName}}",
     "PERMISSIONS_SELECTED_RESOURCES": "Recursos Selecionados",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Selecione o tipo de relatório",
     "PERMISSIONS_SELECT_SECTION": "Selecione uma seção",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Você não tem permissão para acessar a seção selecionada",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Ação não autorizada",
-    "PERMISSIONS_WARNING_CLOSE": "Você tem alterações não salvas. Tem certeza de que deseja sair sem salvar?",
+    "PERMISSIONS_WARNING_CLOSE": "Você tem alterações não salvas. Tem certeza de que deseja encerrar sem salvar?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Todas as subseções {{sectionName}} e seus recursos serão ativadas. Você tem certeza que quer continuar?",
     "QUEUES_ASSOCIATION": "Associação de filas do {{channel}}",
     "READ_PERMISSION": "Ler",
-    "REPORT_TYPE": "Tipo de relatório",
+    "REPORT_TYPE": "Tipo de Relatório",
     "SECTIONS": "Seções",
     "SUMMARY": "Resumo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "USERPROFILE": "Perfil de usuário",
-    "USERPROFILES": "Perfis de usuário",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "USERPROFILE": "Perfil de Usuário",
+    "USERPROFILES": "Perfis de Usuário",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Você não tem permissão para criar o recurso",
-    "VIDEOSUPPORT": "Suporte de vídeo",
+    "VIDEOSUPPORT": "Suporte à vídeo",
     "APIKEY": "Chave API",
-    "APIKEYMANAGER_USER": "Gerenciador de chaves da API",
-    "GENERATE": "(Regenerado",
-    "MANAGE_API_KEY": "Gerenciador de chaves da API",
+    "APIKEYMANAGER_USER": "Gerenciador de Chaves da API",
+    "GENERATE": "Gerar",
+    "MANAGE_API_KEY": "Gerenciador de Chave da API",
     "REMOVE": "Remover",
-    "ENABLEAUTOMATICSCREENRECORDING": "Ativar gravação automática de tela",
-    "ENABLESCREENRECORDINGBYAGENT": "Ativar gravação de tela por agente",
-    "ENABLEVIDEOECORDING": "Ativar gravação de vídeo",
+    "ENABLEAUTOMATICSCREENRECORDING": "Ativar Gravação Automática de Tela",
+    "ENABLESCREENRECORDINGBYAGENT": "Ativar Gravação de Tela pelo Agente",
+    "ENABLEVIDEOECORDING": "Ativar Gravação de Vídeo",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Desativado",
-    "REGENERATE": "Regenerado",
-    "ALL_WHATSAPP_QUEUES": "Todas as filas de WhatsApp",
-    "ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
-    "ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar agente às filas do WhatsApp",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
-    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp selecionadas",
-    "SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
-    "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
-    "USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
-    "USERADD_WHATSAPPQUEUES": "Adicionar fila Whataspp ao usuário",
+    "REGENERATE": "Renovar",
+    "ALL_WHATSAPP_QUEUES": "Todas as Filas de WhatsApp",
+    "ALL_WHATSAPPACCOUNTS": "Todas as Contas WhatsApp",
+    "ALL_WHATSAPPQUEUES": "Todas as Filas Whataspp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar Agente à Filas do WhatsApp",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar Usuário às Filas do WhatsApp",
+    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp Selecionadas",
+    "SELECTED_WHATSAPPACCOUNTS": "Contas de WhatsApp Selecionadas",
+    "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp Selecionadas",
+    "USERADD_WHATSAPPACCOUNTS": "Adicionar Conta WhatsApp ao Usuário",
+    "USERADD_WHATSAPPQUEUES": "Adicionar Fila Whataspp ao Usuário",
     "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPPCAPACITY": "Capacidade do conector WhatsApp",
-    "MASK_SENSITIVE_DATA": "Máscara de dados sensíveis",
+    "WHATSAPPCAPACITY": "Capacidade do Conector WhatsApp",
+    "MASK_SENSITIVE_DATA": "Máscara de Dados Sensíveis",
     "WSS_PORT": "Porta WSS",
     "ATTACHMENTS": "Anexos",
-    "CALLYSQUARE_RECORDINGS": "Gravações da Cally Square",
-    "CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
-    "DOWNLOADS": "Transferências",
-    "DOWNLOAD_PERMISSIONS": "Permissões de download",
+    "CALLYSQUARE_RECORDINGS": "Gravações do CallySquare",
+    "CONTACT_MANAGER_LISTS": "Listas da Gestão de Contatos",
+    "DOWNLOADS": "Downloads",
+    "DOWNLOAD_PERMISSIONS": "Permissões de Download",
     "JSCRIPTY_SESSIONS": "Sessões Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
-    "SCREEN_RECORDINGS": "Gravações de tela",
+    "SCREEN_RECORDINGS": "Gravações de Tela",
     "VOICE_RECORDINGS": "Gravações de Voz",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar o status de interrupção do agente para chamadas de visualização",
-    "SELECT_RECALLME_CAMPAIGN": "Selecione a campanha Recall Me",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente a campanhas de fila",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente às filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente às filas de Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente às filas de emails",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente às filas do SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente às filas do Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente às filas de fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de filas",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar pausa do agente para discagem preview",
+    "SELECT_RECALLME_CAMPAIGN": "Selecione a Campanha Recall Me",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar Agente a Campanhas de Fila",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar Agente à Filas de Voz",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar Agente à Filas de WebChat",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar Agente às Filas de Emails",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar Agente às Filas de SMS",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar Agente à Filas do Open Channel",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar Agente à Filas de Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as Campanhas de Filas",
     "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de Filas Selecionadas",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionadas",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de Chat Selecionadas",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de E-mail Selecionadas",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas do SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas SMS Selecionadas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas do Open Channel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de Open Channel Selecionadas",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionadas",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+    "ALL_QUEUES_VOICE_INBOUND": "Todas as Filas de Voz",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de Voz Selecionadas",
+    "ALL_QUEUES_CHAT_INBOUND": "Todas as Filas de WebChat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de WebChat Selecionadas",
+    "ALL_QUEUES_MAIL_INBOUND": "Todas as Filas de Email",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de Email Selecionadas",
+    "ALL_QUEUES_SMS_INBOUND": "Todas as Filas de SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Filas de SMS Selecionadas",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as Filas do OpenChannel",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de OpenChannel Selecionadas",
+    "ALL_QUEUES_FAX_INBOUND": "Todas as Filas de Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Filas de Fax Selecionadas",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as Filas de WhatsApp",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar Agente à fila do WhatsApp",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
-    "AD_SSO_ENABLED": "SSO do Active Directory",
+    "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autenticação",
-    "CLIENT_LOGS": "Logs de clientes",
+    "CLIENT_LOGS": "Logs do Cliente",
     "CLIENT_LOGS_ALL_ENABLED_WARNING": "Aviso: isso pode afetar gravemente o desempenho do servidor se muitos agentes estiverem conectados ao mesmo tempo!",
-    "CLIENT_LOGS_DISABLED": "Os registros do cliente estão desabilitados",
-    "CLIENT_LOGS_ENABLED": "Os registros do cliente estão habilitados",
+    "CLIENT_LOGS_DISABLED": "Os Logs do Cliente estão desabilitados",
+    "CLIENT_LOGS_ENABLED": "Os Logs do Cliente estão habilitados",
     "CLIENT_LOGS_ENABLED_SINCE": "Ativado desde: {{enabledSince}}",
-    "CLIENT_LOGS_LOGLEVEL": "Nível de registro: {{logLevel}}",
-    "CLIENT_LOGS_LOGLEVEL_SELECT": "Selecione o nível mínimo de registro (gravidade)",
-    "CLIENT_LOGS_DISABLED_MSG": "Os logs do cliente foram desativados para seu usuário",
-    "CLIENT_LOGS_ENABLED_MSG": "Os logs do cliente foram ativados para seu usuário",
-    "AUTO_ANSWER": "Resposta automática",
-    "CHAT_AUTOANSWER": "Resposta automática do bate-papo",
-    "CHAT_AUTOANSWERDELAY": "Atraso de resposta automática do bate-papo [s]",
-    "EMAIL_AUTOANSWER": "Resposta automática de e-mail",
-    "EMAIL_AUTOANSWERDELAY": "Atraso de resposta automática de e-mail [s]",
-    "FAX_AUTOANSWER": "Resposta automática de fax",
-    "FAX_AUTOANSWERDELAY": "Atraso de resposta automática de fax [s]",
-    "OPENCHANNEL_AUTOANSWER": "Resposta automática de canal aberto",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Atraso de resposta automática de canal aberto [s]",
-    "SMS_AUTOANSWER": "Resposta automática de SMS",
-    "SMS_AUTOANSWERDELAY": "Atraso de resposta automática de SMS [s]",
-    "WHATSAPP_AUTOANSWER": "Resposta automática do Whatsapp",
-    "WHATSAPP_AUTOANSWERDELAY": "Atraso de resposta automática do Whatsapp [s]"
+    "CLIENT_LOGS_LOGLEVEL": "Nível de Logs: {{logLevel}}",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Selecione o nível mínimo de Logs (gravidade)",
+    "CLIENT_LOGS_DISABLED_MSG": "Os Logs do Cliente foram desativados para seu usuário",
+    "CLIENT_LOGS_ENABLED_MSG": "Os Logs do Cliente foram ativados para seu usuário",
+    "AUTO_ANSWER": "Atendimento Automático",
+    "CHAT_AUTOANSWER": "Atendimento Automático do Webchat",
+    "CHAT_AUTOANSWERDELAY": "Atraso de Atendimento Automático do Webchat [seg]",
+    "EMAIL_AUTOANSWER": "Atendimento Automática de Email",
+    "EMAIL_AUTOANSWERDELAY": "Atraso de Atendimento Automática de Email [seg]",
+    "FAX_AUTOANSWER": "Atendimento Automático de Fax",
+    "FAX_AUTOANSWERDELAY": "Atraso no Atendimento Automática de Fax [seg]",
+    "OPENCHANNEL_AUTOANSWER": "Atendimento Automático do Open Channel",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Atraso no Atendimento Automático do Open Channel[seg]",
+    "SMS_AUTOANSWER": "Atendimento Automático de SMS",
+    "SMS_AUTOANSWERDELAY": "Atraso no Atendimento Automática de SMS [seg]",
+    "WHATSAPP_AUTOANSWER": "Atendimento Automático do Whatsapp",
+    "WHATSAPP_AUTOANSWERDELAY": "Atraso no Atendimento Automático do Whatsapp [seg]"
   }
 }
index 306ec24..340f54f 100644 (file)
 {
   "TOOLS": {
-    "VIDEOSUPPORT": "Video support",
-    "PREVIOUSCONTACT": "Previous",
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "TITLEFONTSIZE": "Font Title Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
-    "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "CONTACTITEMTYPE": "Contact item types",
-    "ORDER_BY": "Order by",
-    "RGBBACKGROUNDCOLOR": "RGB Background color",
-    "NEW_CONTACTITEMTYPE": "New contact item type",
-    "EDIT_CONTACTITEMTYPE": "Edit contact item type",
-    "DELETE_CONTACTITEMTYPE": "Delete contact item type",
-    "ORDER_BY_NUMERIC": "Order by field should be numeric value!",
-    "ADD_CONTACTITEMTYPE": "Add",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
+    "VIDEOSUPPORT": "Vídeó stuðningur",
+    "PREVIOUSCONTACT": "Fyrri",
+    "BOT": "Spjallmenni",
+    "CLONE_TRUNK": "Afrita Trunk",
+    "DISPOSITIONS": "Ráðstafanir",
+    "NEW_DISPOSITION": "Ný ráðstöfun",
+    "ADD_DISPOSITION": "Bættu við ráðstöfun",
+    "EDIT_DISPOSITION": "Breyta ráðstöfun",
+    "DELETE_DISPOSITION": "Eyða ráðstöfun",
+    "RUN_SCHEDULE": "Keyrslu áætlun",
+    "SENDIFEMPTY": "Sendu ef tómt",
+    "NEXTCONTACT": "Næst",
+    "OUTBOUND_ROUTE": "Útfarandi flæði",
+    "EDIT_DASHBOARDITEM": "Breyttu snérsniðunum upplýsingaborða Widget",
+    "FONTSIZE": "Stærð leturs",
+    "TITLEFONTSIZE": "Stærð leturgerðar á titli",
+    "CLONE_CUSTOMDASHBOARD": "Afrita sérhannað upplýsingaborð",
+    "LINK": "Hlekkur [https://]",
+    "BACKGROUND": "Bakgrunnu",
+    "FOREGROUND": "Forgrunnur",
+    "IGNOREDIALERCONTACTID": "Hunsa auðkenni hringjara",
+    "NONE": "Engin",
+    "TOTAL": "Samtala",
+    "ABANDONED": "Hætt við",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
+    "ANSWERED": "Svarað",
+    "CONTACTITEMTYPE": "Tegund tengiliðar",
+    "ORDER_BY": "Pantað af",
+    "RGBBACKGROUNDCOLOR": "RGB Bakgrunns litur",
+    "NEW_CONTACTITEMTYPE": "Ný tegund af tengiliði",
+    "EDIT_CONTACTITEMTYPE": "Breyttu tengiliða tegund",
+    "DELETE_CONTACTITEMTYPE": "Eyða tegund tengiliðs",
+    "ORDER_BY_NUMERIC": "Röðun eftir reit ætti að vera tölugildi!",
+    "ADD_CONTACTITEMTYPE": "Bæta við",
+    "UNMANAGED": "Óstjórnað",
+    "CUSTOMTYPE": "Sérsniðið",
+    "WEBREPORT": "Wef skýrsla",
+    "PIECHART": "Kökurit",
+    "MULTIBARCHART": "Multibar mynd",
+    "MOVE_WIDGET": "Færðu Widget",
+    "USERADD_CUSTOMDASHBOARD": "Bæta við notenda heimildir",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Farðu í að forskoða upplýsingaborð",
+    "GOTO_CUSTOMDASHBOARD": "Farðu í að forskoða upplýsingaborð",
+    "METRIC": "Mæling",
+    "FILTERVOICEQUEUES": "sía aá tal biðraðir",
+    "SERIE1": "Sería 1",
+    "SERIE2": "Sería 2",
+    "SERIE3": "Sería 3",
+    "REFRESH": "Endurnýja [s]",
+    "FORMAT": "Formatsnið",
     "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
+    "ALL_USERS": "allir notendur",
+    "SELECTED_USERS": "Valdir notendur",
+    "ADD_WIDGET": "Bættu við",
+    "COLOR": "Litur",
     "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
+    "INTERACTION": "Samskipti",
+    "MESSAGE": "Silaboð",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SCRIPT": "Script",
-    "SCRIPT_INFO": "Info",
-    "SCRIPT_TYPE": "Type",
-    "EMAIL": "Email",
-    "FILTERFAXACCOUNTS": "Filter Fax Accounts",
-    "FILTERSMSACCOUNTS": "Filter Sms Accounts",
-    "FILTERCHATWEBSITES": "Filter Chat Websites",
-    "FILTERWHATSAPPACCOUNTS": "Filter Whatsapp Accounts",
-    "FILTEREMAILACCOUNTS": "Filter Email Accounts",
-    "FILTEROPENCHANNELACCOUNTS": "Filter OpenChannel Accounts",
-    "OPENED": "Opened",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
+    "CALL": "Símtal",
+    "NAME": "Nafn",
+    "TRUNKS": "Trunkar",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "SCRIPT": "Handrit",
+    "SCRIPT_INFO": "Uppls.",
+    "SCRIPT_TYPE": "Tegund",
+    "EMAIL": "Tölvupóstur",
+    "FILTERFAXACCOUNTS": "Sía aá Fax reikninga",
+    "FILTERSMSACCOUNTS": "Sía á SMS Reikninga",
+    "FILTERCHATWEBSITES": "Sía á spjall síðum",
+    "FILTERWHATSAPPACCOUNTS": "sía á Whatsapp reikninga",
+    "FILTEREMAILACCOUNTS": "Sía á tölvupóst reikninga",
+    "FILTEROPENCHANNELACCOUNTS": "sía á OpenChannel reikninga",
+    "OPENED": "Opnað",
+    "OPENED_TEXT": "Opinn samskipti",
+    "MANAGED": "Stjórnað",
+    "MANAGED_TEXT": "Stýrð samskipti",
     "ERRORS": {
-      "INFO_REQUIRED": "Mandatory field",
-      "SCRIPT_REQUIRED": "Mandatory field",
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "ACCOUNT_REQUIRED": "Mandatory field",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CHANNEL_REQUIRED": "Mandatory field"
+      "INFO_REQUIRED": "Skilyrtur reitur",
+      "SCRIPT_REQUIRED": "Skilyrtur reitur",
+      "NAME_MAX_LENGTH": "Gildið má vera að hámarki að lengd eða jafnt og {{max}}",
+      "TITLE_MAX_LENGTH": "Gildið má vera að hámarki að lengd eða jafnt og {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og ",
+      "REFRESH_REQUIRED": "Skilyrtur reitur",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FONTSIZE_REQUIRED": "Skilyrtur reitur",
+      "PATH_REQUIRED": "Skilyrtur reitur",
+      "FORMAT_REQUIRED": "Skilyrtur reitur",
+      "REPORT_REQUIRED": "Skilyrtur reitur",
+      "TYPE_REQUIRED": "Skilyrtur reitur",
+      "VALUE_REQUIRED": "Skilyrtur reitur",
+      "ACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Krafist er að hunsa númer tengiliðs",
+      "FIELD_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HOST_REQUIRED": "Skilyrtur reitur",
+      "DEFAULTUSER_REQUIRED": "Skilyrtur reitur",
+      "CALLERID_REQUIRED": "Skilyrtur reitur",
+      "KEY_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "VALIDITYSTART_REQUIRED": "Skilyrtur reitur",
+      "VALIDITYEND_REQUIRED": "Skilyrtur reitur",
+      "MONTHDAY_REQUIRED": "Skilyrtur reitur",
+      "HOUR_REQUIRED": "Skilyrtur reitur",
+      "CONTENT_REQUIRED": "Skilyrtur reitur",
+      "URL_REQUIRED": "Skilyrtur reitur",
+      "URL_MUST_VALID_URL": "Rangt snið",
+      "APPLICATION_REQUIRED": "Skilyrtur reitur",
+      "ARGUMENTS_REQUIRED": "Skilyrtur reitur",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "POLLING_INTERVAL_REQUIRED": "Skilyrtur reitur",
+      "TITLE_REQUIRED": "Skilyrtur reitur",
+      "EMAILADDRESS_REQUIRED": "Skilyrtur reitur",
+      "EVENTVARIABLES_REQUIRED": "Skilyrtur reitur",
+      "INTEGRATION_REQUIRED": "Skilyrtur reitur",
+      "LIST_REQUIRED": "Skilyrtur reitur",
+      "TEMPLATE_REQUIRED": "Skilyrtur reitur",
+      "AUTOCREATECONTACT_REQUIRED": "Skilyrtur reitur",
+      "AUTOCREATE_FIELD_REQUIRED": "Skilyrtur reitur",
+      "OUTBOUNDROUTE_REQUIRED": "Skilyrtur reitur",
+      "QUEUE_REQUIRED": "Skilyrtur reitur",
+      "TIME_RANGE_TO_REQUIRED": "Skilyrtur reitur",
+      "WEEK_DAYS_TO_REQUIRED": "Skilyrtur reitur",
+      "MONTH_DAYS_TO_REQUIRED": "Skilyrtur reitur",
+      "MONTH_TO_REQUIRED": "Skilyrtur reitur",
+      "TIME_RANGE_FROM_INVALID": "Rangt snið",
+      "TIME_RANGE_TO_INVALID": "Rangt snið",
+      "ACTION_REQUIRED": "Skilyrtur reitur",
+      "CONFIGURATION_REQUIRED": "Skilyrtur reitur",
+      "PROJECT_REQUIRED": "Skilyrtur reitur",
+      "LOCATION_REQUIRED": "Skilyrtur reitur",
+      "OUTPUT_REQUIRED": "Skilyrtur reitur",
+      "REPORTTYPE_REQUIRED": "Skilyrtur reitur",
+      "REPORTFOLDER_REQUIRED": "Skilyrtur reitur",
+      "REPORTSUBFOLDER_REQUIRED": "Skilyrtur reitur",
+      "AGENT_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CHANNEL_REQUIRED": "Skilyrtur reitur"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Leyni",
+    "DEFAULTUSER": "Sjálfgefin notandi",
+    "DESCRIPTION": "Lýsing",
+    "ADD_TRUNK": "Bættu við Trunk",
     "HELP": {
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "SCRIPT_INFO": "Insert a description for the script",
-      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
-      "INFO": "Insert title",
-      "SCRIPT": "Insert script",
+      "OPENED": "Heildarfjöldi virkra samskipta",
+      "MANAGED": "Heildarfjöldi lokinna samskipta",
+      "SCRIPT_INFO": "Settu inn lýsingu fyrir scriptuna",
+      "SCRIPT_TYPE": "Settu inn leturgerð fyrir handritið (td krulla, bash...)",
+      "INFO": "Settu inn titil",
+      "SCRIPT": "Settu inn scriptu",
       "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "HEADERS": "Note: Headers section must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "TIMEOUT": "Request timeout in seconds. The value must be between 1 and 10 and the default value is 5."
+      "SECRET": "Auðkenningarlykilorð",
+      "HOST": "Lénið eða hýsingar heitið",
+      "DEFAULTUSER": "Auðkenning á notandanafni",
+      "CALLERID": "Auðkenni þess sem hringir, á sniðinu \"nafn\" <númer>",
+      "REGISTRY": "Skrásetningarstrengurinn, ef þess er krafist af þjónustuveitanda, venjulega defaultuser:secret@host",
+      "FROMDOMAIN": "Stilltu sjálfgefið Frá:lén í SIP skilaboðum þegar þú starfar sem SIP ua (viðskiptavinur). Sumir áfangastaðir gætu krafist lögboðins auðkennisnafns í stað aðeins IP tölunnar",
+      "FROMUSER": "Hvernig þjónustu veitandinn þinn þekkir þig. Þetta er hvaða notanda á að setja í stað númeranúmers þegar hringt er í jafningja (annar SIP umboð). Gildir aðeins fyrir type=peer.",
+      "OUTBOUNDPROXY": "\nIP_address eða DNS SRV nafn (að undanskildum _sip._udp forskeytinu): SRV nafn, hýsingarheiti eða IP vistfang SIP proxy á útleið. Sendu boð á útleið til þessa proxy, ekki beint til tækjanna. Gildir aðeins fyrir type=peer",
+      "PORT": "Númerið á SIP portinu",
+      "CONTEXT": "Samhengið fyrir trunkinn",
+      "TYPE": "\nÁkvarða SIP hlutverk innan Asterisk. Notandi: notað til að sannvotta móttekinn - Peer: fyrir úthringingar - Vinur: nær yfir bæði eiginleika ofangreindra.",
+      "DTMFMODE": "Hvernig DTMF (Dual-Tone Multi-Frequency) er sent. RFC2833: sjálfgefin hamur, DTMF eru send með RTP en utan hljóðstraumsins. INBAND: DTMF er sendur í hljóðstraumi núverandi samtals og verður heyranlegt úr hátölurunum. Krefst mikils CPU álags. UPPLÝSINGAR: Þó að þessi aðferð sé mjög áreiðanleg er hún ekki studd af öllum PBX tækjum og mörgum SIP trunks.",
+      "NAT": "Breyttu hegðun Asterisk fyrir viðskiptavini á bak við eldvegginn. Ef einhver af valkostunum sem eru aðskilin með kommum er „nei“ mun Asterisk hunsa allar aðrar stillingar og setja nat=nei",
+      "QUALIFY": "Ákveður hvenæar SIP er aðgengilegt",
+      "ALLOWCODECS": "Leyfilegair kódekar í æskilegriröð",
+      "INSECURE": "\nTilgreindu hvernig á að meðhöndla tengingar við jafningja  ( peer), leyfa óöruggar stillingar",
+      "CALL_LIMIT": "Hámarksfjöldi samtíma á inn- og út samtölum",
+      "DIRECTMEDIA": "Asterisk reynir sjálfgefið að beina RTP-miðlunarstraumnum til að fara beint frá þeim sem hringir til viðtakandans. Sum tæki styðja þetta ekki (sérstaklega ef eitt þeirra er á bak við NAT). Sjálfgefin stilling er YES. Ef þú ert með alla viðskiptavini á bak við NAT, eða vilt af einhverjum öðrum ástæðum að Asterisk haldist í hljóðleiðinni, gætirðu viljað slökkva á þessu.",
+      "CALLCOUNTER": "Virkja símtalateljara í tækjum",
+      "ADD_PHONE_TO_URI": "Skilgreindu hvort framleiðandinn krefst ';user=phone' á vefslóðinni",
+      "TRUST_REMOTE_PARTY_ID": "Skilgreindu hvort Remote-Party-ID ætti að vera treystandi",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Skilgreindu hvort Remote-Party-ID ætti að senda (sjálfgefið er nei)",
+      "ENCRYPTION": "Hvort bjóða eigi SRTP dulkóðaða miðla (og aðeins SRTP dulkóðaða miðla) í úthringingum til jafningja. Símtöl munu mistakast með HANGUPCAUSE=58 ef jafningi styður ekki SRTP. Sjálfgefið gildi er nr",
+      "TRANSPORT": "Stilltu sjálfgefna flutninga, í forgangsröð",
+      "OTHERFIELDS": "Aðrir reitir til að bæta við í trunks conf skránum. Fylgdu sjálfgefnu Asterisk sniði (lykill=gildi), hvern reit í einni röð",
+      "EMAILADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir",
+      "EVENTVARIABLES": "Ef það er virkt bætir það öllum atburðabreytum við vefslóðina (ráðlagt gildi=Nei. Stillt á Já aðeins í matsskyni) ",
+      "HEADERS": "Athugið: Hluti hausa verður að vera á RAW JSON sniði {\"key\":\"gildi\"} \nAthugið: Ef það er ekki fyllt út verður sjálfgefið gildi sent",
+      "BODY": "Athugið: meginmálið verður að vera á RAW JSON sniði {\"key\":\"value\"} \nAthugið: Ef það er ekki fyllt út verður sjálfgefið gildi sent",
+      "TIMEOUT": "Biddu um tímamörk í sekúndum. Gildið verður að vera á milli 1 og 10 og sjálfgefið gildi er 5."
     },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
+    "EDIT_TRUNK": "Breyttu trunk",
+    "DELETE_TRUNK": "eyða trunk",
+    "CREATED_AT": "Stofnað kl.",
+    "SETTINGS": "Stillingar",
+    "ADVANCED": "Ítarlegt",
+    "OTHER": "Aðrir",
+    "ACTIVE": "Virkur",
+    "CONTEXT": "Samhengi",
+    "CALLERID": "Auðkenni hringjara",
+    "TYPE": "Tegund",
     "DTMFMODE": "DTMF Mode",
     "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
+    "QUALIFY": "Hæfi",
+    "ALLOWCODECS": "Leyfðir kódekar",
+    "INSECURE": "Óöruggt",
     "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
+    "DIRECTMEDIA": "Bein miðlun",
+    "CALLCOUNTER": "Símtala teljari",
+    "FROMDOMAIN": "Frá Domain",
+    "FROMUSER": "Frá notanda",
+    "OUTBOUNDPROXY": "Útfarandi proxy",
+    "ADD_PHONE_TO_URI": "Bættu við síma á URL",
+    "TRUST_REMOTE_PARTY_ID": "TÖruggt auðkenni fjaraðila",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senda auðkennishaus fyrir fjaraðila",
+    "ENCRYPTION": "Dulkóðun",
     "PORT": "Port",
-    "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
-    "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
+    "TRANSPORT": "Flutningur",
+    "SAVE": "Geyma",
+    "VARIABLES": "Breytur",
+    "ADD_VARIABLE": "Bættu við breytu",
+    "EDIT_VARIABLE": "Breyttu breytu",
+    "DELETE_VARIABLE": "Eyða breytu",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "TAGS": "Tögg",
+    "ADD_TAG": "Bættu við taggi",
+    "EDIT_TAG": "Breyttu taggi",
+    "DELETE_TAG": "Eyða taggi",
+    "PAUSES": "Hlé",
+    "ADD_PAUSE": "Bættu við hlér",
+    "EDIT_PAUSE": "Breyttu hléi",
+    "DELETE_PAUSE": "Eyða hléi",
+    "CANNEDANSWERS": "Tengd svör",
+    "ADD_CANNEDANSWER": "Bættu við tengdu svari",
+    "EDIT_CANNEDANSWER": "Breyttu tengdu svari",
+    "DELETE_CANNEDANSWER": "Eyða tengdu svari",
+    "KEY": "Lykill",
+    "VALUE": "Gildi",
+    "SOUNDS": "Hljóð",
+    "EDIT_SOUND": "Breyttu hljóði",
+    "DELETE_SOUND": "Eyða hljóði",
+    "CANCEL": "Hætta við",
+    "FINISH": "Lokið",
+    "DROP_TO_UPLOAD": "Slepptu til að sækja",
+    "UPLOADING": "Hleður upp",
+    "TRIGGERS": "Triggerar",
+    "EDIT_TRIGGER": "Breyttu triggeri",
+    "DELETE_TRIGGER": "Eyða triggeri",
+    "ADD_TRIGGER": "Bættu við trigger",
+    "DELETE": "Eyða",
+    "AUTOMATIONS": "Sjálfvirkni",
+    "EDIT_AUTOMATION": "Breyttu sjálfvirkni",
+    "DELETE_AUTOMATION": "Eyða sjálfvirkni",
+    "ADD_AUTOMATION": "Bæta við sjálfvirkni",
+    "INTERVALS": "bil",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_INTERVAL": "Eyða bili",
+    "ADD_INTERVAL": "Bættu við millibili",
+    "TOOLS": "Verkfæri",
+    "ID": "Auðkenni",
+    "AUDIO": "Hljóð",
+    "DOWNLOAD_SOUND": "Niðurhal á hlóði",
+    "UPLOAD_SOUND": "Verkfæri",
+    "CHANNEL": "Rás",
+    "NEW_TRIGGER": "Nýr trigger",
+    "GENERAL": "Almennt",
+    "STATUS": "Staða",
+    "CONDITIONS&ACTIONS": "Skilyrði og aðgerðir",
+    "ALLCONDITIONS": "Uppfylltu öll þessi skilyrði",
+    "ANYCONDITIONS": "Uppfylltu einhverjum af þessum skilyrðum",
+    "ACTIONS": "Aðgerðir:",
+    "NEW_AUTOMATION": "Ný sjálfvirkni",
+    "TIMEOUT": "Tíminn rann út",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
-    "AUG": "August",
+    "CALL_LIMIT": "Hámark á símtölum",
+    "OTHERFIELDS": "Aðrir reitir",
+    "NEW_VARIABLE": "Ný breyta",
+    "NEW_TAG": "Nýtt tag",
+    "NEW_PAUSE": "Nýtt hlé",
+    "NEW_CANNEDANSWER": "Nýtt tengt svar",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "NEW_TRUNK": "Nýr trunkur",
+    "FROM": "Frá",
+    "TO": "Til",
+    "WEEKDAY": "Vikudagur",
+    "MONTHDAY": "Mánaðardagur",
+    "MONTH": "Mánuður",
+    "ALWAYS": "Alltaf",
+    "MON": "Mánudagur",
+    "TUE": "Þriðjudagur",
+    "WED": "Miðvikudagur",
+    "THU": "Fimmtudagur",
+    "FRI": "Föstudagur",
+    "SAT": "Laugardagur",
+    "SUN": "sunnudagur",
+    "JAN": "Janúar",
+    "FEB": "Febrúar",
+    "MAR": "Mars",
+    "APR": "Apríl",
+    "MAY": "Maí",
+    "JUN": "Júní",
+    "JUL": "Júlí",
+    "AUG": "Ágúst",
     "SEP": "September",
-    "OCT": "October",
-    "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
+    "OCT": "Október",
+    "NOV": "Nóvember",
+    "DEC": "Desember",
+    "PASSWORD": "Lykilorð",
+    "CUSTOMDASHBOARDS": "Sérhannað upplýsingaborð",
+    "NEW_CUSTOMDASHBOARD": "Nýtt sérhannað upplýsingaborð",
+    "ADD_CUSTOMDASHBOARD": "Bæta við sérsniðnum upplýsingaborði",
+    "EDIT_CUSTOMDASHBOARD": "Breyttu snérsniðnum upplýsingaborðum",
+    "DELETE_CUSTOMDASHBOARD": "Eyða sérsniðnu upplýsinga borði",
+    "SCHEDULER": "Skipuleggjari",
+    "NEW_SCHEDULE": "Ný áætlun",
+    "ADD_SCHEDULE": "Bættu við áætlun",
+    "EDIT_SCHEDULE": "Breyttu áætlun",
+    "DELETE_SCHEDULE": "Eyða áætlun",
+    "SENDMAIL": "Sendu tölvupóst",
+    "CONFIGURATION": "Stillingar",
+    "MAIL": "Tölvupóstur",
+    "REPORTTYPE": "Skýrslu tegund",
+    "REPORT": "Skýrsla",
+    "OUTPUT": "Útkoma",
+    "EXECUTEON": "Framkvæma á",
+    "REPORTRANGE": "Tímabil skýrslu",
+    "VALIDITYSTART": "Upphafstími",
+    "VALIDITYEND": "Loka tími",
+    "EXECUTEEVERY": "Hver framkvæmd",
+    "ACCOUNT": "Reikningur",
+    "EMAILADDRESS": "Netfang",
     "EMAILCCADDRESS": "Cc",
     "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
+    "CURRENTDAY": "Núverandi dagur",
+    "DAILY": "Daglega",
+    "WEEKLY": "Wvikulega",
+    "MONTHLY": "Mánaðarlega",
+    "PREVIOUS_DAY": "Fyrri dagur",
+    "LAST_SEVEN_DAYS": "Síðustu sjö dagar",
+    "LAST_THIRTY_DAYS": "Síðustu þrjátíu dagar",
+    "LAST_MONTH": "Síðasti mánuður",
+    "WEEKDAYS": "Viku dagar",
+    "HOUR": "Klst.",
+    "DEFAULT": "Sjálfgefið",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 mín",
+    "30MIN": "30 mínútur",
+    "1H": "1 klst",
+    "VOICE": "Tal",
+    "CHAT": "Spjall",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "MAIL_SUBSTATUS": "Email Substatus",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
+    "TEMPLATES": "Sniðmát",
+    "EDIT_TEMPLATE": "Breyttu sniðmáti",
+    "DELETE_TEMPLATE": "Eyða sniðmáti",
+    "NEW_TEMPLATE": "Nýtt sniðmát",
+    "ADD_TEMPLATE": "Bættu við sniðmáti",
+    "CONTENT": "Innihald",
+    "FIELD": "Svæði",
+    "NO_ANYCONDITION_AVAILABLE": "Engin skilyrði til staðar",
+    "NO_ALLCONDITION_AVAILABLE": "Engin skilyrði til staðar",
+    "NO_ACTION_AVAILABLE": "Engin aðgerð til staðar",
+    "ACTION": "Aðgerð",
+    "EDIT_ANYCONDITION": "Breyttu skilyrðum",
+    "DELETE_ANYCONDITION": "Eyða skilyrði",
+    "NEW_ANYCONDITION": "Ný skilyrði",
+    "ADD_ANYCONDITION": "bæta við skilyrðum",
+    "EDIT_ALLCONDITION": "Breyttu skilyrðum",
+    "DELETE_ALLCONDITION": "Eyða skilyrðum",
+    "NEW_ALLCONDITION": "Ný skilyrði",
+    "ADD_ALLCONDITION": "Bæta við skilyrðum",
+    "EDIT_ACTION": "Greyttu aðgerð",
+    "DELETE_ACTION": "Eyða aðgerð",
+    "NEW_ACTION": "Ný aðgerð",
+    "ADD_ACTION": "Bæta við aðgerð",
+    "QUEUE": "Biðröð",
+    "CALL_STATUS": "Staða á símtölum",
+    "OUTBOUNDROUTE": "Útfarandi flæði",
+    "MAIL_SUBSTATUS": "Grunnur tölvupósts",
+    "OFFLINE_MESSAGE": "Skilaboð án nettengingar",
+    "EQUALS": "Jafnt og",
+    "NOT_EQUALS": "Ekki jafnt og",
+    "CONTACT_MANAGER": "Tengiliða stjórnandi",
+    "INTEGRATIONS": "Samþáttanir",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL áframsent",
+    "WEB_POPUP": "Wef Popup",
+    "LIST": "Listi",
+    "INTEGRATION": "Samþáttun",
+    "TEMPLATE": "Sniðmát",
     "URL": "URL",
-    "APPLICATION": "Application",
-    "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
-    "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
+    "APPLICATION": "Forrit",
+    "ARGUMENTS": "Rök",
+    "NO_APPS_AVAILABLE": "Engin forrit til staðar",
+    "NEW_INTERVAL": "Nýtt bil",
+    "OPERATOR": "Kerfisstjóri",
+    "NO_INTERVALS_AVAILABLE": "Engin bil til staðar",
+    "YES": "Já",
+    "NO": "Nei",
+    "SUBJECT": "Efni",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
+    "BROWSER": "Vafri",
+    "INTERVAL": "Bil",
+    "INFO": "Upplýsingar",
+    "TIME_RANGE": "Tímabil",
+    "WEEK_DAYS": "Vikudagar",
+    "MONTH_DAYS": "Mánaðardagar",
+    "MONTHS": "Mánuðir",
+    "DROP_TO_UPLOAD_MESSAGE": "Slepptu hljóð skrám hér til að sækja nýja. Aðeins MP3, WAV, GSM - Max. 15MB",
+    "POLLING_INTERVAL": "Könnunarbil (seconds)",
+    "DASHBOARD": "Upplýsingaborð",
+    "NEW_DASHBOARDITEM": "Nýtt upplýsingaborðs Widget",
+    "COUNTER": "Teljari",
     "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
+    "CLOCK": "Klukka",
+    "ADD_DASHBOARDITEM": "Bæta við upplýsingaborðs Widget",
+    "EDIT_WIDGET": "Breyttu Widget",
+    "DELETE_WIDGET": "Eyða Widget",
+    "FLIP_WIDGET": "skipta Widget",
+    "TITLE": "Titill",
+    "UPDATE": "Uppfæra",
+    "LAYOUT": "Útlit",
+    "BACKGROUND_COLOR": "Litur á bakgrunni",
+    "FOREGROUND_COLOR": "Litur á forgrunni",
+    "FOREGROUND_TITLE_COLOR": "Litur á forgrunns titli",
+    "THEME": "Thema",
+    "LIGHT": "Létt",
+    "DARK": "Dökkt",
+    "TIMEZONE": "Tímabelti",
+    "DIGITAL_FORMAT": "Eyða sniði á dagsetningu",
+    "TOOLS_QUERY": "Fyrirspurn",
+    "SELECT": "Velja",
+    "WHERE": "Hvar",
+    "BACK": "Til baka",
+    "PROJECT": "Verkefni",
+    "GOTOREALTIME_TRUNK": "Farðu í rauntíma trunk",
+    "GOTO_TRUNK": "Farði í trunk",
     "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
-    "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
-    "ON_THE": "On the",
-    "OF_EVERY": "Of every",
-    "MONTH_AT": "Month at",
-    "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
-    "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
-    "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "MOTION_TAB": "New Agent Dashboard Tab",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
-    "AGENT": "Agent",
-    "HEADERS": "Headers",
-    "WHATSAPP": "WhatsApp Connector",
-    "LEVEL": "Level",
+    "MINUTES": "Mínútur",
+    "HOURLY": "Á klukkustundar fresti",
+    "YEARLY": "Árlega",
+    "EVERY": "Hvert",
+    "MINUTE": "Mínúta",
+    "ON_SECOND": "Á sekúndunni",
+    "HOUR_ON_MINUTE": "Mínúta á hverri klukkstund",
+    "AND_SECOND": "Bættu við sekúndum",
+    "DAY_AT": "Dagur kl.",
+    "START_TIME": "Upphafstími",
+    "ON_THE": "Á",
+    "OF_EVERY": "Af hverjum",
+    "MONTH_AT": "Mánuður kl.",
+    "AT": "Kl.",
+    "LAST": "Síðast",
+    "LASTUNIT": "Eining",
+    "MAILACCOUNT": "Netfang",
+    "OF": "Af",
+    "PAST_THE_HOUR": "Eftir klukkutímann",
+    "DAY": "Dagur",
+    "WEEK": "Vika",
+    "YEAR": "Ár",
+    "ON": "Á",
+    "PAI": "P-innsett auðkenni",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Línur á bls.",
+    "EVENTVARIABLES": "Viðburðar breytur",
+    "AUTOCREATECONTACT": "Stofnaðu tengilið sjálfkrafa",
+    "LOCATION": "Staðsetning",
+    "NEW_TAB": "Nýr flipi",
+    "NEW_WINDOW": "Nýr gluggi",
+    "MOTION_TAB": "Nýr flipi í stjórnborði fulltrúans",
+    "WINDOWWIDTH": "breidd á glugga(px)",
+    "WINDOWHEIGHT": "Hæðar stærð á glugga(px)",
+    "BODY": "Innihald",
+    "REPORTFOLDER": "Skýrslu mappa",
+    "REPORTSUBFOLDER": "Skýrslu undirmappa",
+    "AGENT": "Fulltrúi",
+    "HEADERS": "Hedderar",
+    "WHATSAPP": "WhatsApp tengill",
+    "LEVEL": "Stig",
     "NOTIFICATIONS": {
-      "DISPOSITION_CREATED_SUCCESS_TITLE": "Disposition successfully created",
-      "DISPOSITION_SAVED_SUCCESS_TITLE": "Disposition successfully saved",
-      "DISPOSITION_DELETE_TITLE": "Are you sure want to delete the disposition?",
-      "DISPOSITION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} will be deleted with all its sub dispositions",
-      "DISPOSITION_DELETED_SUCCESS_TITLE": "Disposition successfully deleted",
-      "DISPOSITIONS_DELETE_TITLE": "Are you sure want to delete the selected dispositions?",
+      "DISPOSITION_CREATED_SUCCESS_TITLE": "Það tókst að stofna ráðstöfunina",
+      "DISPOSITION_SAVED_SUCCESS_TITLE": "Það tókst að geyma ráðstöfuninni",
+      "DISPOSITION_DELETE_TITLE": "Ertu viss um að þú viljir eyða ráðstöfuninni?",
+      "DISPOSITION_DELETE_MESSAGE": "{{ name }} Verður eytt",
+      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} verður eytt með öllum undirráðstöfunum",
+      "DISPOSITION_DELETED_SUCCESS_TITLE": "Það tókst að eyða ráðstöfuninni",
+      "DISPOSITIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdu skilyrði?",
       "DISPOSITIONS_DELETE_MESSAGE": "{{ total }} dispositions will be deleted",
-      "TRIGGER_CREATED_SUCCESS_TITLE": "Trigger successfully created",
-      "TRIGGER_SAVED_SUCCESS_TITLE": "Trigger successfully saved",
-      "TRIGGER_DELETE_TITLE": "Are you sure want to delete the trigger?",
-      "TRIGGER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "TRIGGER_DELETED_SUCCESS_TITLE": "Trigger successfully deleted",
-      "TRIGGERS_DELETE_TITLE": "Are you sure want to delete the selected triggers?",
-      "TRIGGERS_DELETE_MESSAGE": "{{ total }} triggers will be deleted",
-      "TRIGGERS_DELETED_SUCCESS_TITLE": "Triggers successfully deleted",
-      "ACTION_CREATED_SUCCESS_TITLE": "Action successfully created",
-      "ACTION_SAVED_SUCCESS_TITLE": "Action successfully saved",
-      "ACTION_DELETE_TITLE": "Are you sure want to delete the action?",
-      "ACTION_DELETED_SUCCESS_TITLE": "Action successfully deleted",
-      "ACTIONS_DELETE_TITLE": "Are you sure want to delete the selected actions?",
-      "ACTIONS_DELETE_MESSAGE": "{{ total }} actions will be deleted",
-      "ACTIONS_DELETED_SUCCESS_TITLE": "Actions successfully deleted",
-      "CONDITION_CREATED_SUCCESS_TITLE": "Condition successfully created",
+      "TRIGGER_CREATED_SUCCESS_TITLE": "Það tókst að stofna triggerinn",
+      "TRIGGER_SAVED_SUCCESS_TITLE": "Það tókst að geyma triggerinn",
+      "TRIGGER_DELETE_TITLE": "Ertu viss um að þú viljir eyða triggernum?",
+      "TRIGGER_DELETE_MESSAGE": "{{ name }} Verður eytt",
+      "TRIGGER_DELETED_SUCCESS_TITLE": "Það tókst að eyða triggernum",
+      "TRIGGERS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum triggerum?",
+      "TRIGGERS_DELETE_MESSAGE": "{{ total }} Triggerum verður eytt",
+      "TRIGGERS_DELETED_SUCCESS_TITLE": "Það tókst að eyða triggerum",
+      "ACTION_CREATED_SUCCESS_TITLE": "Það tókst að stofna aðgerðina",
+      "ACTION_SAVED_SUCCESS_TITLE": "Það tókst að geyma þessa aðgerð",
+      "ACTION_DELETE_TITLE": "Ertu viss um að þú viljir eyða þessari aðgerð?",
+      "ACTION_DELETED_SUCCESS_TITLE": "Það tókst að eyða aðgerðinni",
+      "ACTIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum aðgerðum?",
+      "ACTIONS_DELETE_MESSAGE": "{{ total }} aðgerðum verður eytt",
+      "ACTIONS_DELETED_SUCCESS_TITLE": "Það tókst að eyða aðgerð",
+      "CONDITION_CREATED_SUCCESS_TITLE": "Það tókst að stofna aðgerðina",
       "CONDITION_SAVED_SUCCESS_TITLE": "Condition successfully saved",
       "CONDITION_DELETE_TITLE": "Are you sure want to delete the condition?",
-      "CONDITION_DELETED_SUCCESS_TITLE": "Condition successfully deleted",
-      "CONDITIONS_DELETE_TITLE": "Are you sure want to delete the selected conditions?",
-      "CONDITIONS_DELETE_MESSAGE": "{{ total }} conditions will be deleted",
-      "CONDITIONS_DELETED_SUCCESS_TITLE": "Conditions successfully deleted"
+      "CONDITION_DELETED_SUCCESS_TITLE": "Það tókst að eyða skilyrðum",
+      "CONDITIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum aðgerðum?",
+      "CONDITIONS_DELETE_MESSAGE": "{{ total }} skilyrðum verður eytt",
+      "CONDITIONS_DELETED_SUCCESS_TITLE": "Það tókst að eyða þessum skilyrðum"
     },
-    "ALL_DISPOSITIONS": "All dispositions",
-    "SELECT_LEVEL": "Select a level",
-    "ALL": "All",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "SEARCH_FIELDS": "Search fields",
-    "AUTOCREATE_FIELD": "Autocreate field",
-    "STANDARD": "Standard",
+    "ALL_DISPOSITIONS": "Allar ráðstafanir",
+    "SELECT_LEVEL": "Veldu þrep",
+    "ALL": "Allir",
+    "FIRST_LEVEL_DISPOSITION": "Fyrsta stigs ráðstöfun",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs þjónusta",
+    "SEARCH_FIELDS": "Leitar reitir",
+    "AUTOCREATE_FIELD": "Stofnaðu reit sjálfkraf",
+    "STANDARD": "Staðalað",
     "GLOBALS": "Globals",
     "MOTION_BAR": "Motion Bar"
   }
index ba506de..d27fc1e 100644 (file)
@@ -7,7 +7,7 @@
     "ADD_DISPOSITION": "Adicionar Qualificação",
     "EDIT_DISPOSITION": "Editar Qualificação",
     "DELETE_DISPOSITION": "Excluir Qualificação",
-    "RUN_SCHEDULE": "Horário de execução",
+    "RUN_SCHEDULE": "Executar agendamento",
     "SENDIFEMPTY": "Enviar se vazio",
     "NEXTCONTACT": "Próximo",
     "OUTBOUND_ROUTE": "Rota de Saída",
     "ABANDONED": "Abandonado",
     "WAITING": "Esperando",
     "TALKING": "Falando",
-    "ANSWERED": "Respondido",
-    "UNMANAGED": "Não Tratado",
+    "ANSWERED": "Atendido",
+    "UNMANAGED": "Não Gerenciado",
     "CUSTOMTYPE": "Personalizado [path]",
-    "WEBREPORT": "Relatório da Web",
-    "PIECHART": "Gráfico de pizza",
+    "WEBREPORT": "Relatório Web",
+    "PIECHART": "Gráfico de Pizza",
     "MULTIBARCHART": "Gráfico de Multibar",
     "MOVE_WIDGET": "Mover Widget",
-    "USERADD_CUSTOMDASHBOARD": "Adicionar permissões do usuário",
+    "USERADD_CUSTOMDASHBOARD": "Adicionar Permissões do Usuário",
     "GOTODASHBOARD_CUSTOMDASHBOARD": "Pré-visualizar Dashboard",
     "GOTO_CUSTOMDASHBOARD": "Pré-visualizar Dashboard",
     "METRIC": "Métrica",
@@ -50,7 +50,7 @@
     "T38PT_UDPTL": "T38pt Udptl",
     "CALL": "Chamada",
     "NAME": "Nome",
-    "TRUNKS": "Tronco",
+    "TRUNKS": "Troncos",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "NAME_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "IGNOREDIALERCONTACTID_REQUIRED": "O campo Ignore Dialer Contact ID é obrigatório"
     },
     "HOST": "Host",
-    "SECRET": "Segredo",
+    "SECRET": "Senha",
     "DEFAULTUSER": "Usuário Padrão",
     "DESCRIPTION": "Descrição",
     "ADD_TRUNK": "Adicionar Tronco",
     "HELP": {
-      "T38PT_UDPTL": "Ex: sim, redundância, maxdatagram = 400",
+      "T38PT_UDPTL": "Ex: yes,redundancy,maxdatagram=400",
       "SECRET": "Senha de autenticação",
       "HOST": "O domínio ou nome do host",
       "DEFAULTUSER": "Nome de usuário de autenticação",
       "CALLERID": "O Caller ID, no formato \"name\" <number>",
-      "REGISTRY": "A cadeia de registro, se exigida pelo provedor, geralmente defaultuser: secret @ host",
-      "FROMDOMAIN": "Defina o padrão de: domínio em mensagens SIP ao atuar como um SIP ua (cliente). Alguns destinos podem exigir um nome de identidade obrigatório, em vez de apenas o endereço IP",
-      "FROMUSER": "Como seu provedor conhece você. Este é qual usuário colocar em vez de callerid ao fazer chamadas para peer (outro proxy SIP). Válido apenas para type = peer.",
-      "OUTBOUNDPROXY": "IP_address ou DNS SRV name (excluindo o prefixo _sip._udp): nome do SRV, nome do host ou endereço IP do SIP Proxy de saída. Envie a sinalização de saída para este proxy, não diretamente para os dispositivos. Válido apenas para type = peer.",
+      "REGISTRY": "A string de registro, se exigida pelo provedor, por padrão 'defaultuser:secret@host'",
+      "FROMDOMAIN": "Define o padrão From:domain em mensagens SIP ao atuar como um SIP user agent (cliente). Para alguns destinos é obrigatório o envio do identity name em vez de apenas o endereço IP",
+      "FROMUSER": "Como seu provedor conhece você. Este é o usuário ou callerid enviado ao fazer chamadas para peer (outro SIP proxy). Válido apenas para type=peer.",
+      "OUTBOUNDPROXY": "IP_address ou DNS SRV name (excluindo o prefixo _sip._udp): SRV name, hostname ou endereço IP do SIP Proxy de saída. Envia a sinalização de saída para este proxy, não diretamente para os dispositivos. Válido apenas para type=peer.",
       "PORT": "O número da porta SIP",
-      "CONTEXT": "Contexto para o Tronco",
-      "TYPE": "Determine o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange as duas características dos itens acima.",
+      "CONTEXT": "O contexto para o tronco",
+      "TYPE": "Determina o SIP role no gateway. User: usado para chamadas de entrada - Peer: usado para chamadas de saída - Friend: usado para chamadas de entrada e saída",
       "DTMFMODE": "Como DTMF (Dual-Tone Multi-Frequency) é enviado. RFC2833: modo padrão, os DTMF são enviados com RTP, mas fora do fluxo de áudio. INBAND: O DTMF é enviado em fluxo de áudio da conversa atual, tornando-se audível pelos alto-falantes. Aumenta uso de CPU. INFO: Embora esse método seja muito confiável, ele não é suportado por todos os PBX e muitos troncos SIP.",
-      "NAT": "Altere o comportamento do Asterisk para clientes atrás de um firewall. Se qualquer uma das opções separadas por vírgula for 'no', o Asterisk irá ignorar quaisquer outras configurações e definir nat = no.",
-      "QUALIFY": "Determinar quando o SIP é realizável",
+      "NAT": "Altere o comportamento do Gateway para clientes atrás de um\nfirewall. Se qualquer uma das opções for 'no', o Gateway irá ignorar as outras\nconfigurações e definirá nat=no.",
+      "QUALIFY": "Determinar quando o SIP é alcançável",
       "ALLOWCODECS": "Codecs Permitidos em Ordem de Preferência",
-      "INSECURE": "Especifique como lidar com conexões com peer, permitindo configurações inseguras",
-      "CALL_LIMIT": "Limite das Chamadas Simultâneas",
-      "DIRECTMEDIA": "Por padrão, o Asterisk tenta redirecionar o fluxo de mídia RTP para ir diretamente do chamador para o chamado. Alguns dispositivos não suportam isso (especialmente se um deles estiver por trás de um NAT). A configuração padrão é YES.",
-      "CALLCOUNTER": "Ativar Contagem de Chamadas no Dispositivos",
+      "INSECURE": "Especifica como realizar a conexão com o peer, permitindo configurações inseguras",
+      "CALL_LIMIT": "O limite das chamadas simultâneas para ligações de entrada e saída",
+      "DIRECTMEDIA": "Por padrão, o gateway tenta redirecionar o fluxo de mídia RTP para ir diretamente do chamador para o chamado. Alguns dispositivos não suportam isso (especialmente se um deles estiver por trás de NAT). A configuração padrão é YES.",
+      "CALLCOUNTER": "Ativar contagem de chamadas no dispositivos",
       "ADD_PHONE_TO_URI": "Definir se o provedor requer '; user = phone' no URL",
-      "TRUST_REMOTE_PARTY_ID": "Definir se o ID do participante remoto deve ser confiável",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Definir se o Remote-Party-ID deve ser enviado (o padrão é não)",
-      "ENCRYPTION": "Se oferece SRTP encrypted media (e somente SRTP encrypted media) em chamadas outgoing para um peer. Causará falha HANGUPCAUSE=58 se peer não suportar SRTP. Padrão = Não",
-      "TRANSPORT": "Definir os transportes padrão, em ordem de preferência",
-      "OTHERFIELDS": "Outros campos para adicionar nos arquivos conf de troncos. Siga o formato de asterisco padrão (chave = valor), cada campo em uma única linha",
+      "TRUST_REMOTE_PARTY_ID": "Define se o Remote-Party-ID é confiável",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Definir se o Remote-Party-ID deve ser enviado (o padrão é no)",
+      "ENCRYPTION": "Se oferece SRTP encrypted media (e somente SRTP encrypted media) em chamadas de saída para um peer. Causará falha HANGUPCAUSE=58 se peer não suportar SRTP. Padrão = No",
+      "TRANSPORT": "Define o transporte padrão, em ordem de preferência",
+      "OTHERFIELDS": "Outros campos para adicionar no arquivo de configuração do tronco. Siga o formato padrão (chave=valor), cada campo em uma única linha",
       "EMAILADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "EMAILCCADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "EMAILBCCADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "EVENTVARIABLES": "Se ativado, ele adiciona todas as variáveis \200b\200bdo evento ao URL (valor recomendado = Não. Defina como Sim somente para fins de avaliação)",
+      "EVENTVARIABLES": "Se ativado, ele adiciona todas as variáveis \200b\200bdo evento a URL (valor recomendado = No. Defina como Yes somente para fins de avaliação)",
       "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, o valor padrão será enviado",
       "INFO": "Inserir título",
       "SCRIPT": "Inserir script",
       "SCRIPT_INFO": "Inserir uma descrição para o script",
-      "SCRIPT_TYPE": "Insira uma tipologia para o script (por exemplo, curl, bash ...)",
+      "SCRIPT_TYPE": "Insira um tipo para o script (exemplo: curl, bash ...)",
       "HEADERS": "Nota: a seção Cabeçalhos deve estar no formato JSON RAW {\"key\": \"value\"}\nNota: Se não for preenchido, o valor padrão será enviado",
-      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
-      "MANAGED": "O número total de interações concluídas",
+      "TIMEOUT": "Timeout da requisição em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
+      "MANAGED": "O número total de interações completadas",
       "OPENED": "O número total de interações ativas"
     },
     "EDIT_TRUNK": "Editar Tronco",
     "DELETE_TRUNK": "Excluir Tronco",
     "CREATED_AT": "Criado em",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "ADVANCED": "Avançado",
     "OTHER": "Outros",
     "ACTIVE": "Ativo",
     "CONTEXT": "Contexto",
-    "CALLERID": "Identificador de Chamadas",
+    "CALLERID": "Caller ID",
     "TYPE": "Tipo",
     "DTMFMODE": "Modo DTMF",
     "NAT": "NAT",
     "REGISTRY": "Registro",
     "DIRECTMEDIA": "Mídia Direta",
     "CALLCOUNTER": "Contador de Chamadas",
-    "FROMDOMAIN": "Do domínio",
-    "FROMUSER": "Do usuário",
-    "OUTBOUNDPROXY": "Proxy de saída",
-    "ADD_PHONE_TO_URI": "Adicionar Telefone ao URL",
+    "FROMDOMAIN": "Do Domínio",
+    "FROMUSER": "Do Usuário",
+    "OUTBOUNDPROXY": "Proxy de Saída",
+    "ADD_PHONE_TO_URI": "Adicionar Telefone a URL",
     "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Enviar Remote Party ID Header",
     "ENCRYPTION": "Encriptação",
     "PORT": "Porta",
     "TRANSPORT": "Transporte",
     "EDIT_VARIABLE": "Editar Variáveis",
     "DELETE_VARIABLE": "Excluir Variáveis",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecione todos",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecione Todos",
+    "SELECT_NONE": "Selecione Nenhum",
     "TAGS": "Tags",
     "ADD_TAG": "Adicionar Tag",
     "EDIT_TAG": "Editar Tag",
     "DELETE_CANNEDANSWER": "Excluir Resposta Pré-definida",
     "KEY": "Key",
     "VALUE": "Valor",
-    "SOUNDS": "Sons",
+    "SOUNDS": "Áudios",
     "EDIT_SOUND": "Editar Som",
-    "DELETE_SOUND": " Ecluir Áudio",
+    "DELETE_SOUND": " Excluir Áudio",
     "CANCEL": "Cancelar",
     "FINISH": "Finalizar",
-    "DROP_TO_UPLOAD": "Soltar para Fazer Upload",
+    "DROP_TO_UPLOAD": "Soltar para fazer Upload",
     "UPLOADING": "Uploading",
     "TRIGGERS": "Gatilhos",
     "EDIT_TRIGGER": "Editar Gatilhos",
     "ANYCONDITIONS": "Atenda alguma destas condições:",
     "ACTIONS": "Ações:",
     "NEW_AUTOMATION": "Nova Automação",
-    "TIMEOUT": "Tempo esgotado",
-    "PEERSTATUS": "Status de par Status",
+    "TIMEOUT": "Timeout",
+    "PEERSTATUS": "Status do Peer",
     "CALL_LIMIT": "Limite de Chamadas",
-    "OTHERFIELDS": "Outros campos",
+    "OTHERFIELDS": "Outros Campos",
     "NEW_VARIABLE": "Nova Variável",
     "NEW_TAG": "Nova Tag",
     "NEW_PAUSE": "Nova Pausa",
     "NEW_TRUNK": "Novo Tronco",
     "FROM": "De ",
     "TO": "Para",
-    "WEEKDAY": "Dia da semana",
+    "WEEKDAY": "Dia da Semana",
     "MONTHDAY": "Dia do mês",
     "MONTH": "Mês",
     "ALWAYS": "Sempre",
     "ADD_CUSTOMDASHBOARD": "Adicionar Dashboard Personalizado",
     "EDIT_CUSTOMDASHBOARD": "Editar Dashboard Personalizado",
     "DELETE_CUSTOMDASHBOARD": "Excluir Dashboard Personalizado",
-    "SCHEDULER": "Agendador",
-    "NEW_SCHEDULE": "Novo Agendador",
-    "ADD_SCHEDULE": "Adicionar Agendador",
-    "EDIT_SCHEDULE": "Editar Agendador",
-    "DELETE_SCHEDULE": "Excluir Agendador",
+    "SCHEDULER": "Agendamento",
+    "NEW_SCHEDULE": "Novo Agendamento",
+    "ADD_SCHEDULE": "Adicionar Agendamento",
+    "EDIT_SCHEDULE": "Editar Agendamento",
+    "DELETE_SCHEDULE": "Excluir Agendamento",
     "SENDMAIL": "Enviar Email",
     "CONFIGURATION": "Configuração",
     "MAIL": "Email",
-    "REPORTTYPE": "Tipo de relatório",
+    "REPORTTYPE": "Tipo do Relatório",
     "REPORT": "Relatório",
     "OUTPUT": "Saída",
     "EXECUTEON": "Executar em",
-    "REPORTRANGE": "Intervalo de relatório",
-    "VALIDITYSTART": "Hora de início",
-    "VALIDITYEND": "Hora finalizado",
+    "REPORTRANGE": "Intervalo do Relatório",
+    "VALIDITYSTART": "Hora de Início",
+    "VALIDITYEND": "Hora de Término",
     "EXECUTEEVERY": "Execute cada",
     "ACCOUNT": "Conta",
     "EMAILADDRESS": "Endereço de Email",
     "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
+    "EMAILBCCADDRESS": "Cco",
     "CURRENTDAY": "Dia Atual",
     "DAILY": "Diariamente",
     "WEEKLY": "Semanal",
     "MONTHLY": "Mensal",
-    "PREVIOUS_DAY": "Dia anterior",
+    "PREVIOUS_DAY": "Dia Anterior",
     "LAST_SEVEN_DAYS": "Últimos Sete Dias",
-    "LAST_THIRTY_DAYS": "Últimos trinta dias",
+    "LAST_THIRTY_DAYS": "Últimos Trinta Dias",
     "LAST_MONTH": "Último Mês",
-    "WEEKDAYS": "Dias úteis",
+    "WEEKDAYS": "Dias da Semana",
     "HOUR": "Hora",
     "DEFAULT": "Padrão",
     "CSV": "CSV",
     "OUTBOUNDROUTE": "Rota de Saída",
     "EQUALS": "Igual a",
     "NOT_EQUALS": "Não é igual a",
-    "CONTACT_MANAGER": "Gestor de Contatos",
+    "CONTACT_MANAGER": "Gestão de Contatos",
     "INTEGRATIONS": "Integrações",
     "MOTIONBAR": "MotionBar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL de Encaminhamento",
+    "WEB_POPUP": "Popup Web",
     "LIST": "Lista",
     "INTEGRATION": "Integração",
     "TEMPLATE": "Modelo",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "BROWSER": "Navegador",
     "INTERVAL": "Intervalo",
-    "INFO": "Informarção",
-    "TIME_RANGE": "Intervalo de tempo",
-    "WEEK_DAYS": "Dias úteis",
+    "INFO": "Info",
+    "TIME_RANGE": "Intervalo de Tempo",
+    "WEEK_DAYS": "Dias da Semana",
     "MONTH_DAYS": "Mês Dias",
     "MONTHS": "Meses",
     "DROP_TO_UPLOAD_MESSAGE": "Solte arquivos de áudio aqui para fazer o upload. Apenas MP3, WAV, GSM - máx. 15MB",
-    "POLLING_INTERVAL": "Intervalo de pesquisa (segundos)",
+    "POLLING_INTERVAL": "Intervalo de Pesquisa (segundos)",
     "DASHBOARD": "Dashboard",
     "NEW_DASHBOARDITEM": "Novo Widget do Dashboard",
     "COUNTER": "Contador",
     "EDIT_WIDGET": "Editar Widget",
     "DELETE_WIDGET": "Excluir Widget",
     "FLIP_WIDGET": "Girar Widget",
-    "TITLE": "Titulo",
+    "TITLE": "Título",
     "UPDATE": "Atualizar",
     "LAYOUT": "Layout",
     "BACKGROUND_COLOR": "Cor de fundo",
     "FOREGROUND_COLOR": "Cor do Primeiro Plano",
     "FOREGROUND_TITLE_COLOR": "Cor do Título do Primeiro Plano",
     "THEME": "Tema",
-    "LIGHT": "Claro",
+    "LIGHT": "Light",
     "DARK": "Dark",
     "TIMEZONE": "Fuso horário",
     "DIGITAL_FORMAT": "Formato Data Digital",
     "TOOLS_QUERY": "Query",
     "SELECT": "Selecione",
-    "WHERE": "Where",
+    "WHERE": "Onde",
     "BACK": "Voltar",
     "PROJECT": "Projeto",
-    "GOTOREALTIME_TRUNK": "Ir para o Tronco em Tempo Real",
+    "GOTOREALTIME_TRUNK": "Visualizar Tronco em Tempo Real",
     "GOTO_TRUNK": "Ir para Tronco",
     "CRON": "Cron",
     "MINUTES": "Minutos",
-    "HOURLY": "De Hora em Hora",
+    "HOURLY": "Horário",
     "YEARLY": "Anual",
     "EVERY": "Cada",
     "MINUTE": "Minuto",
-    "ON_SECOND": "No segundo",
-    "HOUR_ON_MINUTE": "Hora no Minuto",
-    "AND_SECOND": "Em segundo lugar",
+    "ON_SECOND": "En segundo",
+    "HOUR_ON_MINUTE": "Hora e minuto",
+    "AND_SECOND": "Em segundo",
     "DAY_AT": "Dia em",
-    "START_TIME": "Hora de início",
+    "START_TIME": "Hora de Início",
     "ON_THE": "No",
     "OF_EVERY": "De todos",
     "MONTH_AT": "Mês em",
     "ON": "Em",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "EVENTVARIABLES": "Variáveis \200b\200bde Eventos",
-    "AUTOCREATECONTACT": "Criar Contato Automaticamente",
+    "AUTOCREATECONTACT": "Criar contato automaticamente",
     "LOCATION": "Localização",
-    "NEW_TAB": "Nova aba",
-    "NEW_WINDOW": "Nova janela",
-    "WINDOWWIDTH": "Largura da janela (px)",
-    "WINDOWHEIGHT": "Altura da janela (px)",
+    "NEW_TAB": "Nova Aba",
+    "NEW_WINDOW": "Nova Janela",
+    "WINDOWWIDTH": "Largura da Janela (px)",
+    "WINDOWHEIGHT": "Altura da Janela (px)",
     "BODY": "Corpo",
-    "REPORTFOLDER": "Pasta de relatórios",
-    "REPORTSUBFOLDER": "Subpasta de relatório",
+    "REPORTFOLDER": "Pasta do Relatório",
+    "REPORTSUBFOLDER": "Subpasta do Relatório",
     "PREVIOUSCONTACT": "Anterior",
-    "VIDEOSUPPORT": "Suporte de vídeo",
+    "VIDEOSUPPORT": "Suporte a vídeo",
     "AGENT": "Agente",
     "HEADERS": "Cabeçalhos",
-    "SCRIPT": "Roteiro",
-    "SCRIPT_INFO": "Informações",
+    "SCRIPT": "Script",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tipo",
     "MOTION_TAB": "Nova Aba",
-    "WHATSAPP": "Conector WhatsApp",
-    "AUTOCREATE_FIELD": "Criar Campo Automaticamente",
+    "WHATSAPP": "WhatsApp Connector",
+    "AUTOCREATE_FIELD": "Criar campo automaticamente",
     "GLOBALS": "Globais",
     "SEARCH_FIELDS": "Campos de busca",
     "STANDARD": "Padrão",
     "MOTION_BAR": "MotionBar",
     "ALL": "Tudo",
-    "ALL_DISPOSITIONS": "Todas Qualificações",
+    "ALL_DISPOSITIONS": "Todas qualificações",
     "FIRST_LEVEL_DISPOSITION": "Qualificação de Primeiro Nível",
-    "LEVEL": "Nível",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte",
+    "LEVEL": "Level",
+    "SECOND_LEVEL_DISPOSITION": "Qualificação de Segundo Nível",
+    "SELECT_LEVEL": "Selecione um level",
+    "TITLEFONTSIZE": "Tamanho da Fonte do Título",
     "ADD_CONTACTITEMTYPE": "Adicionar",
-    "CONTACTITEMTYPE": "Tipos de Item de Contato",
+    "CONTACTITEMTYPE": "Tipos de item de contato",
     "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato",
     "ORDER_BY": "Ordenar por",
     "RGBBACKGROUNDCOLOR": "Cor de fundo RGB",
-    "EMAIL": "E-mail",
-    "FILTERCHATWEBSITES": "Filtrar Sites Chat",
-    "FILTEREMAILACCOUNTS": "Filtrar Contas Email",
-    "FILTERFAXACCOUNTS": "Filtrar Contas Fax",
-    "FILTEROPENCHANNELACCOUNTS": "Filtrar Contas OpenChannel",
-    "FILTERSMSACCOUNTS": "Filtrar Contas SMS",
-    "FILTERWHATSAPPACCOUNTS": "Filtrar Contas Whatsapp",
-    "MANAGED": "Gerenciou",
-    "MANAGED_TEXT": "Interações gerenciadas",
+    "EMAIL": "Email",
+    "FILTERCHATWEBSITES": "Filtrar Sites de WebChat",
+    "FILTEREMAILACCOUNTS": "Filtrar Contas de Email",
+    "FILTERFAXACCOUNTS": "Filtrar Contas de Fax",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrar Contas de OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrar Contas de SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrar Contas de Whatsapp",
+    "MANAGED": "Gerenciado",
+    "MANAGED_TEXT": "Interações Gerenciadas",
     "OPENED": "Aberto",
-    "OPENED_TEXT": "Interações abertas",
+    "OPENED_TEXT": "Interações Abertas",
     "IGNOREDIALERCONTACTID": "Ignorar o ID de Contato do Discador",
     "MAIL_SUBSTATUS": "Substatus do Email",
-    "OFFLINE_MESSAGE": "Mensagem offline",
+    "OFFLINE_MESSAGE": "Mensagem Offline",
     "DELETE_CONTACTITEMTYPE": "Excluir Tipo de Item de Contato",
     "EDIT_CONTACTITEMTYPE": "Editar Tipo de Item de Contato",
-    "ORDER_BY_NUMERIC": "A ordem por campo deve ser um valor numérico!"
+    "ORDER_BY_NUMERIC": "o campo 'Ordenar por' deve ser um valor numérico!"
   }
 }
index cb5e0a9..49ed57e 100644 (file)
 {
   "VOICE": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "FAILUREREASON": "Failure reason",
-    "TEXT": "Text",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
-    "INBOUND": "Inbound",
-    "OUTBOUND": "Outbound",
-    "DIALER": "Dialer",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs ráðstöfun",
+    "THIRD_LEVEL_DISPOSITION": "Þriðjastigs aðstoð",
+    "FAILUREREASON": "Ástæða mistaka",
+    "TEXT": "Texti",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Sækja afrit",
+    "INBOUND": "Innkomandi",
+    "OUTBOUND": "Útfarandi",
+    "DIALER": "Hringjari",
+    "LOGIN_TIME": "Innskráningar tími",
+    "PAUSE_TIME": "Tími á hléi",
+    "ABANDONEDCALLS": "Símtöl í biðröð sem hætta við",
+    "WAITING_FOR_AGENTS": "Beðið eftir fulltrúum",
+    "ACTIVE": "Virkur",
+    "NO_AGENT_ONLINE": "Enginn fulltrúi er innskráður",
+    "PARTIALPAUSE": "Hluta hlé",
+    "STATUS": "Staða",
+    "TIMER": "Tímamælir",
     "ALIAS": "Alias",
-    "ALL": "All",
+    "ALL": "Allir",
     "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "EDIT_TRUNK": "Breyta Trunk",
+    "GOTO_VOICEQUEUE": "Farðu í rauntíma tal biðraðir",
+    "GOTOREALTIME_VOICEQUEUE": "Farðu í rauntíma tal biðröð",
+    "NAME": "Nafn",
+    "LOGOUT": "Útskráning",
+    "VOICEQUEUES": "Tal biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu engan",
+    "DELETE_VOICEDISPOSITION": "Eyða tal ráðstöfun",
+    "EDIT_VOICEDISPOSITION": "Breyta tal ráðstöfun",
+    "EDIT_VOICEQUEUE": "Breyta Tal biðröð",
+    "DELETE_VOICEQUEUE": "Eyða tal biðröð",
+    "MOHSOUNDS": "Moh hljómur",
+    "STRATEGY": "Stefna",
+    "DESCRIPTION": "Lýsing",
+    "ADD_VOICEQUEUE": "Bættu við tal biðröð",
+    "CREATED_AT": "Stofnað kl.",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Get ekki spilað GSM eða wav49 hljóðskrár",
+    "APPLICATIONS_LIST": "Umsóknarlisti",
+    "GENERAL": "Almennt",
+    "TIMEOUT": "Tíminn rann út",
+    "MAXLENGTH": "Hámarks lengd",
+    "RETRY": "Reyna aftur",
+    "WRAPUPTIME": "Wrapup Tími",
+    "WEIGHT": "Vægi",
+    "JOINWHENEMPTY": "Skráðu þig þegar það er tómt",
+    "LEAVEWHENEMPTY": "Skildu eftir þegar það er tómt",
+    "MUSICONHOLD": "Tónlist á bið",
+    "ANNOUNCETOAGENT": "Tilkynning til fulltrúa",
+    "ANNOUNCEMENTS": "Tilkynningar",
+    "ADVANCED": "Ítarlegt",
+    "ANNOUNCEFREQUENCY": "Tíðni tilkynninga",
+    "MINANNOUNCEFREQUENCY": "Lámarkstíðni tilkynninga",
+    "PERIODICANNOUNCEFREQUENCY": "Tíðni á reglulegum tilkynningum",
+    "RANDOMPERIODICANNOUNCE": "Handahós reglulegar tilkynningar",
+    "ANNOUNCEHOLDTIME": "Tilkynna biðtíma",
+    "ANNOUNCECALLERPOSITION": "Tilkynna röð innhringjanda",
+    "ANNOUNCEPOSITIONLIMIT": "Tilkynna hámark á bið í röð",
+    "REPORTHOLDTIMEAGENT": "Skrá hlé tíma á fulltrúa",
+    "PERIODICANNOUNCE": "reglulegar tilkynningar",
+    "HOLDTIMEANNOUNCE": "Biðtíma tilkynning",
+    "YOUARENEXTANNOUNCE": "'Þú ert næstur' tilkynning",
+    "THEREAREANNOUNCE": "'Það eru' Tilkynning",
+    "WAITINGCALLSANNOUNCE": "Tilkynningar fyrir á bið",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Tilkynning á áætluðum biðtíma",
+    "MINUTESANNOUNCE": "Tilkynningar mínútur",
+    "MINUTEANNOUNCE": "Tilkynningarmínúta",
+    "SECONDSANNOUNCE": "Tilkynna sekúndur",
+    "THANKYOUANNOUNCE": "'Takk fyrir'  tilkynning",
+    "AUTOPAUSE": "Sjálfvirkt hlé",
+    "AFTERCALLWORK": "Vinna eftir samtal",
+    "AFTERCALLWORKDURATION": "Vinnutími eftir samtal",
+    "RINGINUSE": "Hringing í notkun",
+    "MEMBERDELAY": "Hóp seinkun",
+    "TIMEOUTRESTART": "Tími rann út endursett",
+    "MONITORFORMAT": "Upptöku format",
+    "SETINTERFACEVARIABLES": "Stilltu viðmótsbreytur",
+    "SETQUEUEVARIABLES": "Stilltu biðraða breytur",
+    "SETQUEUEENTRYVARIABLES": "Stilltu biðraða færslu breytur",
+    "VARIABLE": "Breyta",
+    "CONTEXT": "Samhengi",
+    "SAVE": "Geyma",
+    "SETTINGS": "Stillingar",
+    "INBOUNDROUTES": "Innkomandi flæði",
+    "PHONENUMBER": "Síma númer",
+    "ADD_INBOUNDROUTE": "Bættu við innhringi flæði",
+    "EDIT_INBOUNDROUTE": "Breyta innhringi reglu",
+    "DELETE_INBOUNDROUTE": "Eyða innhringi reglu",
+    "ACTIONS": "Aðgerð",
+    "OUTBOUNDROUTES": "Úthringi flæði",
+    "DESTINATIONPATTERN": "Áfangastaða mynstur",
+    "ADD_OUTBOUNDROUTE": "Bættu við úthringi reglu",
+    "EDIT_OUTBOUNDROUTE": "Breyta úthringi flæði",
+    "DELETE_OUTBOUNDROUTE": "Eyða úthringi reglu",
+    "CUTDIGITS": "Taktu út tölustafi",
+    "RECORDING": "Tekur upp",
+    "RECORDINGFORMAT": "Snið á upptöku",
+    "INTERNALROUTES": "Innanhúss flæði",
+    "ADD_INTERNALROUTE": "Bættu við innanhúss flæði",
+    "EDIT_INTERNALROUTE": "Breyta innanhúss flæði",
+    "DELETE_INTERNALROUTE": "Eyða innanhúss reglu",
+    "CONTEXTS": "Samhengi",
+    "ADD_CONTEXT": "Bættu við texta",
+    "EDIT_CONTEXT": "Breyta samhengi",
+    "DELETE_CONTEXT": "Eyða samhengi",
+    "VOICEMAILS": "Talskilaboð",
+    "ADD_VOICEMAIL": "Bættu við talskilaboðum",
+    "EDIT_VOICEMAIL": "Breyta tal skilaboðum",
+    "DELETE_VOICEMAIL": "Eyða talskilaboðum",
+    "FULLNAME": "Fullt nafn",
+    "EMAIL": "Tölvupóstur",
+    "MAILBOX": "Pósthólf",
+    "PASSWORD": "Lykilorð",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "TIMEZONE": "Tímabelti",
+    "ATTACH": "Viðhengi",
+    "ENVELOPE": "Umslag",
+    "DELETE": "Eyða",
+    "EMAILBODY": "Innihald tölvupósts",
+    "EMAILSUBJECT": "Efni tölvupóstst",
+    "MAXSECONDS": "Hámarksfjöldi sekúnda",
+    "MAXMESSAGES": "Hámarks fjöldi skilaboða",
+    "MESSAGES": "Skilaboð",
+    "SORT": "Tegund",
+    "ADD_MUSICONHOLD": "Bættu við tónlist á bið",
+    "MUSICONHOLDS": "tónlist á bið",
+    "EDIT_MUSICONHOLD": "Breyta bið tónlist",
+    "DELETE_MUSICONHOLD": "Eyða tónlist á bið",
+    "DIRECTORY": "Skrá",
+    "AUDIOFILES": "Hljóð skrár",
+    "RECORDINGS": "Upptökur",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Forskeyti",
+    "OPTIONS": "Valmöguleikar",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Bættu við ChanSpy",
+    "EDIT_CHANSPY": "Breyta ChanSpy",
+    "DELETE_CHANSPY": "Eyða ChanSpy",
+    "AGENTS": "Fulltrúar",
+    "TELEPHONES": "Símar",
+    "QUEUES": "Raðir",
+    "QUEUE_CALLS": "Símtöl í röðinni",
+    "QUEUE_PARAMETERS": "Sillingar á röð",
+    "ABANDONED_CALLS": "Símtöl sem hætta við",
+    "OUTBOUND_CALLS": "Úthringingar",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Hringja",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
+    "INTERNALDIAL": "Innanhús hringing",
+    "EXTERNALDIAL": "Úthringing",
+    "RINGGROUP": "Hringi hópur",
+    "PLAYBACK": "Endurspilun",
+    "QUEUE": "Röð",
+    "SET": "Settu",
+    "VOICEMAIL": "Talskilaboð",
+    "GOTO": "Fara á",
+    "HANGUP": "Leggja á",
+    "CUSTOM": "Sérsniðin",
+    "PROJECT": "Cally-Square verkefni",
     "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
+    "EDIT_APP": "Breyta forriti",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_APP": "Eyða umsókn",
+    "INTERVALS": "Bil",
+    "USER": "Notandi",
     "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "PHONE": "Sími",
+    "AUDIO_FILES": "Hljóð skrár",
+    "ANNOUNCE_OVERRIDES": "Tilkynna yfirskrifað",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
+    "RULE": "Regla",
+    "POSITION": "Staða",
+    "ANSWER": "Svarað",
+    "VALUE": "Gildi",
     "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "EXTENSION": "Innanhúss nr.",
+    "PRIORITY": "Forgangur",
+    "HANGUP_CAUSE": "Ástæaða fyrir því að lagt var á",
+    "OUTBOUNDDIAL": "Úthringing",
+    "CALLER_ID": "Auðkenni hringjara",
+    "NO_MESSAGE_AVAILABLE": "Engin skilaboð fáanleg",
+    "NO_SOUND_AVAILABLE": "Engin tónlist tiltæk",
+    "VOICERECORDINGS": "Tal upptökur",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "VOICE": "Tal",
+    "REALTIME": "Rauntími",
+    "ID": "Auðkenni",
+    "VOICEMAIL_CONTEXT": "Samhengi",
+    "NO_MOHSOUND_AVAILABLE": "Engin tónlist á bið til staðar",
+    "FILE": "Skrá",
+    "ADD_MOHSOUND": "Bættu við tónlistar tegund á bið",
+    "DOWNLOAD_MOHSOUND": "Hlaða niður tónlist fyrir á bið",
+    "DELETE_MOHSOUND": "Eyða tegund tónlistar á bið",
+    "UNIQUEID": "Sértækt auðkenni",
+    "AGENT": "Fulltrúi",
+    "TYPE": "Tegund",
+    "RATING": "Einkunn",
+    "AUDIO": "Hljóð",
+    "DATE": "Dags.",
+    "NEW_VOICEQUEUE": "Ný tal biðröð",
+    "NEW_INBOUNDROUTE": "Nýtt innhringi flæði",
+    "NEW_OUTBOUNDROUTE": "Ný úthringi regla",
+    "NEW_INTERNALROUTE": "Nýtt innanhús flæði",
+    "NEW_CONTEXT": "Nýtt samhengi",
+    "NEW_VOICEMAIL": "Ný talskilaboð",
+    "NEW_MUSICONHOLD": "Ný tónlist á bið",
+    "NEW_CHANSPY": "Nýtt ChanSpy",
+    "PENALTY": "Refsing",
+    "ADD_TEAM_TO_VOICEQUEUE": "Bættu við hóp á tal biðröð",
+    "ADD_AGENT_TO_VOICEQUEUE": "Bættu fulltrúa við tal biðröð",
+    "EDIT_DIAL": "Breyta hringjara",
+    "EDIT_AGI": "Breyta AGI",
+    "EDIT_INTERNALDIAL": "Breyta innri hringingu",
+    "EDIT_EXTERNALDIAL": "Breyta utanaðkomandi hringjara",
+    "EDIT_RINGGROUP": "Breyta hringi hóp",
+    "EDIT_PLAYBACK": "Breyta endurspilun",
+    "EDIT_QUEUE": "Breyta biðröð",
+    "EDIT_SET": "Breyta stillingu",
+    "EDIT_GOTO": "Breyta fara á",
+    "EDIT_HANGUP": "Breyta leggja á",
+    "EDIT_CUSTOM": "Breyta sérsniði",
+    "DURATION": "Lengd",
+    "RECEIVED_AT": "Móttekið kl.",
+    "YES": "Já",
+    "NO": "Nei",
+    "HANGUPCAUSE_1": "1 = Óúthlutað númer",
+    "HANGUPCAUSE_16": "16 = Venjuleg símtals hreinsun",
+    "HANGUPCAUSE_17": "17 = Notandi er upptekinn",
+    "HANGUPCAUSE_18": "18 = Enginn notandi svarar (símatæki ekki tengt)",
+    "HANGUPCAUSE_21": "21 = Símtali hafnað",
+    "HANGUPCAUSE_22": "22 = Núeri hefur verið breytt",
+    "HANGUPCAUSE_27": "27 = Áfangastaður er í ólagi",
+    "HANGUPCAUSE_38": "38 = Netið virkar ekki",
+    "HANGUPCAUSE_41": "41 = Tímabundin bilun",
+    "RANDOM": "Handahófi",
+    "ALPHABETICAL": "Stafrófsröð",
+    "NO_APPS_AVAILABLE": "Engin forrit í boði",
+    "DOWNLOAD_VOICERECORDING": "Hlaða niður tal upptöku",
     "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
+    "INTERNAL": "Innanhúss",
+    "PHONE_STATE": "Staða á síma",
+    "PHONE_STATUS": "Staða á símum",
+    "TRUNK_STATUS": "Trunk Staða",
+    "REGISTERED": "Skráð",
+    "UNREGISTERED": "Óskráð",
+    "LAGGED": "Seinkun",
+    "REACHABLE": "Hægt að ná í",
+    "UNREACHABLE": "Ekki hægt að ná í",
+    "UNKNOWN": "Óþekkt",
+    "NOT_INUSE": "Ekki í notkun",
+    "INUSE": "Í notkun",
+    "BUSY": "Upptekin",
+    "INVALID": "Ógilt",
+    "UNAVAILABLE": "Aðgengilegt",
+    "RINGING": "Hringir",
+    "ONHOLD": "Á bið",
+    "RING": "Hringja",
+    "UP": "Upp",
+    "INFO": "Uppls.",
     "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "REGISTRY": "Þjóðskrá",
+    "NO_REGISTRY": "Engin skráning",
+    "LOGGED_IN": "Innskráður (SIP Connected)",
+    "PAUSED": "Hlé",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "CALLER": "Hringjari",
+    "TOTAL": "Heildar",
+    "ANSWERED": "Svöruð",
+    "ABANDONED": "Hætt við",
+    "UNMANAGED": "Óstýrt",
+    "AVG_HOLD_TIME": "Meðaltals tími á bið",
+    "AVG_DURATION": "Meðal lengd",
+    "AVG_BILLABLE": "Meðal reikningshæft",
+    "SOURCE": "Uppruni",
+    "DESTINATION": "Áfangastaður",
+    "REJECTED": "Hafnað",
+    "FAILED": "Mistókst",
+    "CALLED": "Hringt",
+    "CONNECTED": "Tengdur",
+    "NO_RATING": "Engin einkunn",
+    "EDIT_VOICERECORDING": "Breyta tal upptökum",
+    "APPLICATION_NAME": "Nafn umsóknar",
+    "ARGUMENTS": "Rök",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
+    "ADD_AGENT_TO_QUEUE": "Bættu fulltrúa við biðröð",
+    "DEFAULT_PAUSE": "Staðlað hlé",
+    "PAUSE": "Hlé",
+    "UNPAUSE": "Enda hlé",
+    "REDIRECT_TO_NUMBER": "Beina á númer",
+    "REDIRECT_TO_AGENT": "Beina á fulltrúa",
+    "AGENTADD_VOICEQUEUE": "Bættu við fulltrúa í tal biðröð",
+    "APPLICATION": "Umsókn",
+    "FILES": "Skrár",
+    "FORMAT": "Snið",
+    "MODE": "Hamur",
+    "RECORD": "Upptaka",
+    "TEAMADD_VOICEQUEUE": "Bættu við hópi í tal biðröð",
+    "NEW_MOHSOUND": "Ný tónlist á bið",
+    "DOWNLOAD_MESSAGE": "Niðurhal",
+    "DELETE_MESSAGE": "Eyða",
+    "QUEUE_PARAMS": "Stillingar á röð",
+    "TOTAL_OFFERED": "Samtals boðið",
+    "READY": "Tilbúið",
+    "AGENTADD_QUEUE": "Bættu við fulltrúa í tal biðröð",
+    "AGENTSADD_QUEUE": "Bættu við fulltrúm í tal biðröð",
+    "ALL_TEAMS": "Allir hóper",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "ALL_AGENTS": "Allir fulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "CLOSING": "Lokar",
+    "TAGS": "Tögg",
+    "WAITING_FOR_AGENT": "Beðið eftir fulltrúa",
+    "EDIT_OUTBOUNDDIAL": "Breyta úthringingu",
+    "ACCOUNTNAME": "Nafn á reikningi",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á síðu",
+    "OF": "af",
+    "DISPOSITION": "Ráðstöfun",
+    "CHAT": "Spjall",
+    "MAIL": "Tölvupóstur",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIPT": "Transcript",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "TRANSCRIBESTATUS_COMPLETED": "Completed",
-    "TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
-    "TRANSCRIBESTATUS_FAILED": "Failed",
-    "TRANSCRIBESTATUS_NEW": "New",
-    "TRANSCRIPTANALYSIS": "Transcript & Analysis",
-    "SENTIMENT_POSITIVE": "Positive",
-    "SENTIMENT_NEGATIVE": "Negative",
-    "SENTIMENT_NEUTRAL": "Neutral",
-    "SENTIMENT_MIXED": "Mixed",
+    "CLEAR": "Hreinsa",
+    "CALLS": "Símtöl",
+    "STARTEDAT": "Byrjað kl.",
+    "ENDEDAT": "Hætt kl.",
+    "TAG": "Tögg",
+    "DETAILS": "Upplýsingar",
+    "BILLABLESECONDS": "Ræikningshæfar sekúndur",
+    "ANSWEREDAT": "Svarað kl.",
+    "NOTE": "Ath",
+    "CLOSE": "Loka",
+    "SELECT_DATE": "Veldu upphafsdagsetningu",
+    "SELECT_TYPE": "Veldu tegun",
+    "VOICEPREFIXES": "Forskeyti fyrir út",
+    "NEW_VOICEPREFIX": "Nýtt forskeyti",
+    "ADD_VOICEPREFIX": "Bættu við forskeyti",
+    "EDIT_VOICEPREFIX": "Breyta forskeyti",
+    "AGENTADD_VOICEPREFIX": "Bættu fulltrúa við forskeyti",
+    "TEAMADD_VOICEPREFIX": "Bættu við hópa forskeyti",
+    "DELETE_VOICEPREFIX": "Eyða forskeyti",
+    "OUTBOUNDROUTE": "Úthringi flæði",
+    "CALLERIDALL": "Auðkenni hringjara",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Staða á skilyrtum hléum",
+    "SCREENRECORDING": "Stjórna skjá upptökum",
+    "START_SCREENRECORDING": "Byrja skjá upptöku",
+    "STOP_SCREENRECORDING": "Stoppa skjá upptöku",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í gangi",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjá upptaka möguleg",
+    "CANT_DOWNLOAD_THIS_FILE": "Getur ekki hlaðið niður þessari skrá",
+    "WRONG_EXTENSION": "Skráin sýnir ranga endingu",
+    "FILE_NOT_FOUND": "Fann ekki skrána",
+    "TEAMS_ASSOCIATION": "Fulltrúar í hópum",
+    "TRANSCRIBE": "Afrita",
+    "TRANSCRIPT": "Afrita",
+    "SENTIMENTANALYSIS": "Greining á tilfinningu",
+    "TRANSCRIBESTATUS_COMPLETED": "Lokið",
+    "TRANSCRIBESTATUS_IN_PROGRESS": "Í gangi",
+    "TRANSCRIBESTATUS_FAILED": "Mistókst",
+    "TRANSCRIBESTATUS_NEW": "Nýtt",
+    "TRANSCRIPTANALYSIS": "Afrita og greina",
+    "SENTIMENT_POSITIVE": "Jákvætt",
+    "SENTIMENT_NEGATIVE": "Neikvætt",
+    "SENTIMENT_NEUTRAL": "Hlutlaust",
+    "SENTIMENT_MIXED": "Blandað",
     "RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "SENTIMENT": "Sentiment",
-    "SERVICELEVEL": "Service level",
-    "MAXCAPACITY": "Max capacity",
-    "WORKING": "Working",
-    "NO_AGENT_AVAILABLE": "No agent available",
-    "CALL_NUMBER_REDIRECT": "Which number do you want to redirect the call to?",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Keyra umritun&viðhorf",
+    "RUNSENTIMENT_VOICERECORDING": "Keyra viðhorg",
+    "SENTIMENT": "Tilfinning",
+    "SERVICELEVEL": "Þjónustustig",
+    "MAXCAPACITY": "Hámarksgeta",
+    "WORKING": "Í vinnslu",
+    "NO_AGENT_AVAILABLE": "Engin fulltrúi laus",
+    "CALL_NUMBER_REDIRECT": "Í hvaða númer viltu beina símtalinu?",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Sérsniðin forrit"
     },
     "ERRORS": {
-      "PROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
-      "PENALTY_REQUIRED": "You must specify a value for penalty"
+      "PROJECT_REQUIRED": "Skilyrtur reitur",
+      "TRUNK_REQUIRED": "Skilyrtur reitur",
+      "VARIABLE_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "APPLICATION_NAME_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "PHONENUMBER_REQUIRED": "Skilyrtur reitur",
+      "CONTEXT_REQUIRED": "Skilyrtur reitur",
+      "DESTINATIONPATTERN_REQUIRED": "Skilyrtur reitur",
+      "FULLNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "MAILBOX_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "TIMEZONE_REQUIRED": "Skilyrtur reitur",
+      "PREFIX_REQUIRED": "Skilyrtur reitur",
+      "OPTIONS_REQUIRED": "Skilyrtur reitur",
+      "AFTERCALLWORKDURATION_REQUIRED": "Skilyrtur reitur",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Skilyrtur reitur",
+      "PHONE_REQUIRED": "Skilyrtur reitur",
+      "VALUE_REQUIRED": "Skilyrtur reitur",
+      "EXTENSION_REQUIRED": "Skilyrtur reitur",
+      "PRIORITY_REQUIRED": "Skilyrtur reitur",
+      "APPLICATION_REQUIRED": "Skilyrtur reitur",
+      "OUTBOUNDROUTE_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Rangt snið",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Skilyrtur reitur",
+      "CALLER_ID_MUST_VALID_PATTERN": "Rangt snið",
+      "PENALTY_REQUIRED": "Þú verður að tilgreina gildi fyrir refsingu"
     },
     "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the format of the recording file. If it set to 'inactive', calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
-      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
+      "TIMEOUT": "Í hversu margar sekúndur á að hringja í tækið",
+      "MAXLENGTH": "Hámarksfjöldi þeirra sem hringja inn mega bíða í biðröð: núll þýðir ótakmarkað",
+      "RETRY": "Tími í sekúndum til að bíða áður en hringt er í næsta fulltrúa í biðröð þegar tíminn er runninn út",
+      "WRAPUPTIME": "Tími í sekúndum til að halda meðlimi í biðröð ótiltækum eftir að símtali er lokið \"Wrapup\"",
+      "WEIGHT": "Vægi biðraðar til að skilgreina forgang ef meðlimir eru tengdir við margar biðraðir",
+      "JOINWHENEMPTY": "Notað til að stjórna því hvort hringjandi sé áframsendur í biðröð þegar engir meðlimir (fulltrúar) eru tiltækir",
+      "LEAVEWHENEMPTY": "Notað til að stjórna því hvort hringjendur fari úr biðröðinni þegar engir meðlimir eru tiltækir til að svara símtölum",
+      "ANNOUNCEFREQUENCY": "Hversu oft á að tilkynna staðsetningu þess sem hringir og/eða áætlaðan biðtíma í biðröðinni (núll til að slökkva á)",
+      "MINANNOUNCEFREQUENCY": "Lágmarks tíðni tilkynninga (gagnlegt þegar staða þess sem hringir breytist oft)",
+      "PERIODICANNOUNCEFREQUENCY": "Tíðni reglubundinna tilkynninga til þess sem hringir",
+      "ANNOUNCEPOSITIONLIMIT": "Til að tilkynna hámark á fjölda í biðröðinni",
+      "AFTERCALLWORKDURATION": "Lengd hlés sem ræst af valkostinum eftir samtali Wrapup tíma valmöguleikanum",
+      "MEMBERDELAY": "Setur inn töf áður en hringir og fulltrúi í biðröð tengjast",
+      "MUSICONHOLD": "Stillir tónlistarflokkinn til að nota fyrir tiltekna biðröð",
+      "ANNOUNCETOAGENT": "Spilaðu tilkynningu til fulltrúans sem svarar símtalinu (venjulega til að láta hann vita úr hvaða röð sá sem hringir kemur úr)",
+      "RANDOMPERIODICANNOUNCE": "Ef já, þá verða skilgreindar reglubundnar tilkynningar spilaðar af handahófi",
+      "ANNOUNCEHOLDTIME": "Spilar áætlaðan biðtíma ásamt reglubundnum tilkynningum (Já/Nei/Einu sinni)",
+      "ANNOUNCECALLERPOSITION": "Notað til að skilgreina hvort tilkynna eigi um stöðu þess sem hringir í biðröðinni: Nei=aldrei; Já=alltaf; Limit=aðeins ef það er innan þeirra marka sem skilgreint er af tilkynna-stöðu-mörk; Meira= aðeins ef það er umfram gildið sem skilgreint er af tilkynna-stöðu-mörk",
+      "REPORTHOLDTIMEAGENT": "Gerir kleift að tilkynna biðtíma þess sem hringir inn til fulltrúa sem svarar áður en tengingin hefst",
+      "PERIODICANNOUNCE": "Sett af reglubundnum tilkynningum sem á að spila (í röð)",
+      "HOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"Biðtími\". Óskilgreint=engin tilkynning",
+      "YOUARENEXTANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þú ert nú fyrstur í röðinni”. Óskilgreint=engin tilkynning",
+      "THEREAREANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"Það eru til\". Óskilgreint=engin tilkynning",
+      "WAITINGCALLSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"símtöl í bið\". Óskilgreint=engar tilkynningar",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Núverandi áætlaður biðtími er”. Óskilgreint=engin tilkynningChoose a Sound defined in Tools. ",
+      "MINUTESANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínútur\". Óskilgreint=engin tilkynning",
+      "MINUTEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "SECONDSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"sekúndur\". Óskilgreint=engin tilkynning",
+      "THANKYOUANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þakka þér fyrir þolinmæðina”. Óskilgreint=engin tilkynning",
+      "AFTERCALLWORK": "Ef virkt verður fulltrúinn settur á hlé eftir að símtali er lokið",
+      "AUTOPAUSE": "\nVirkjar/afvirkjar á sjálfvirkru hléi fulltrúans sem svara ekki símtali. Ef það er virkt veldur það að fulltrúinn er í biðröð í öllum biðröðum sem hann tilheyrir",
+      "RINGINUSE": "Til að forðast/leyfa símtöl til meðlima (fulltrúa) sem eru uppteknir",
+      "TIMEOUTRESTART": "Ef já, þá endurstillir þetta tímamörk fyrir fulltrúa til að svara þegar annaðhvort ANNAРeða Congestion staða er móttekin frá rásinni",
+      "MONITORFORMAT": "Tilgreinir snið upptökuskrárinnar. Ef það er stillt á „óvirkt“ verða símtöl ekki tekin upp",
+      "CONTEXT": "Leyfir viðmælanda að fara úr biðröðinni með því að ýta á einn DTMF tölustaf. Ef samhengi er tilgreint og sá sem hringir slær inn númer mun sá tölustafur reyna að passa saman í því samhengi sem tilgreint er og keyrsla hringingaráætlunar heldur áfram þar",
+      "SETINTERFACEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröðina eru nokkrar breytur stilltar (fyrir frekari upplýsingar sjá wiki skjöl)",
+      "SETQUEUEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröð og yfirgefur biðröðina, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl)",
+      "SETQUEUEENTRYVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð fulltrúans verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl",
+      "RECORDING": "Virkja upptöku símtala",
+      "VOICEMAIL_CONTEXT": "Samhengi hlutfallslegs innanhúsnúmers",
+      "NAME": "Aðeins tölur, stafir og sérstakir stafir (._) eru studdir",
+      "CALLERIDALL": "Stutt snið: \"CallerId\" <númer>",
+      "CALLER_ID": "Stutt snið: \"CallerId\" <númer>",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé á stöðu til að stilla meðan á skilyrtu hléi stendur",
+      "SERVICELEVEL": "Önnur stilling fyrir þjónustustig (sjálfgefið=0, engin SL). Notað fyrir tölfræði þjónustustigs (símtölum svarað innan þjónustustigs tímaramma)",
+      "SAVE_ROUTES": "Flæðinu hefur verið breytt. Mundu að vista ef þú vilt ekki missa breytingarnar."
     },
     "NOTIFICATIONS": {
-      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
-      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
-      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
-      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
-      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
-      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
-      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
-      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
-      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
-      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
-      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
-      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
-      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
-      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
-      "USERS_GET_ERROR": "Unable to retrieve any user",
-      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
-      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
-      "TAGS_GET_ERROR": "Unable to retrieve any tag",
-      "INTERVALS_GET_ERROR": "Unable to retrieve any interval",
-      "CALL_HANGUP_SUCCESS": "Call hung up successfully",
-      "CALL_REDIRECT_SUCCESS": "Call redirected successfully"
+      "EXTENSION_CREATED_SUCCESS_TITLE": "Tókst að stofna flæði",
+      "EXTENSION_SAVED_SUCCESS_TITLE": "Tókst að geyma flæði",
+      "EXTENSION_DELETE_TITLE": "Ertu viss um að þú vilir eyða völdum flæðum?",
+      "EXTENSION_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "EXTENSION_DELETED_SUCCESS_TITLE": "Tókst að eyða flæði",
+      "EXTENSIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum flæðum?",
+      "EXTENSIONS_DELETE_MESSAGE": "{{ samtals }} flæðum verður eytt",
+      "ROUTING_APPLICATION_DELETE_TITLE": "ertu viss um að þú viljir eyða forritinu?",
+      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "ROUTING_APPLICATIONS_DELETE_TITLE": "Ertu viss um að þú viljir eða völdum forritum?",
+      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} forritum verður eytt",
+      "CALLYSQUARE_PROJECTS_GET_ERROR": "Ekki er hægt að sækja neitt CallySquare verkefni",
+      "TRUNKS_GET_ERROR": "Ekki tókst að endurheimta trunk",
+      "VOICE_CONTEXTS_GET_ERROR": "Ekki tókst að endurheimta tal samhengi",
+      "QUEUES_GET_ERROR": "Ekki tókst að sækja biðraðir",
+      "SOUNDS_GET_ERROR": "Ekki tókst að endurheimta hljóð",
+      "USERS_GET_ERROR": "Ekki tókst að endurheimta notendur",
+      "VARIABLES_GET_ERROR": "Ekki tókst að endurheimta breytur",
+      "VOICEMAILS_GET_ERROR": "Ekki tókst að endurheimta talskilaboð",
+      "TAGS_GET_ERROR": "Ekki tókst að endurheimta tögg",
+      "INTERVALS_GET_ERROR": "Ekki er hægt að sækja neitt bil",
+      "CALL_HANGUP_SUCCESS": "Tókst að leggja á",
+      "CALL_REDIRECT_SUCCESS": "Tókst að áframsenda símtal"
     }
   }
 }
index 7e2c6e6..4f927e3 100644 (file)
@@ -3,17 +3,17 @@
     "LOGIN_TIME": "Tempo de Login",
     "PAUSE_TIME": "Tempo de Pausa",
     "ABANDONEDCALLS": "Chamadas Abandonadas",
-    "WAITING_FOR_AGENTS": "Esperando por agentes",
+    "WAITING_FOR_AGENTS": "Aguardando por agentes",
     "ACTIVE": "Ativo",
-    "NO_AGENT_ONLINE": "Nenhum aAente Online",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
     "PARTIALPAUSE": "Pausa Parcial",
     "STATUS": "Status",
-    "TIMER": "Cronômetro",
+    "TIMER": "Timer",
     "ALL": "Todos",
     "IDLE": "Disponível",
     "EDIT_TRUNK": "Editar Tronco",
-    "GOTO_VOICEQUEUE": "Ir para Filas de Voz em Tempo Real",
-    "GOTOREALTIME_VOICEQUEUE": "Ir para Filas de Voz em Tempo Real",
+    "GOTO_VOICEQUEUE": "Visualizar Fila de Voz em Tempo Real",
+    "GOTOREALTIME_VOICEQUEUE": "Visualizar Fila de Voz em Tempo Real",
     "NAME": "Nome",
     "LOGOUT": "Logout",
     "VOICEQUEUES": "Filas de Voz",
     "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
     "EDIT_VOICEQUEUE": "Editar Fila de Voz",
     "DELETE_VOICEQUEUE": "Excluir Fila de Voz",
-    "MOHSOUNDS": "Moh Sounds",
+    "MOHSOUNDS": "Áudios de Música de Espera",
     "STRATEGY": "Estratégia",
     "DESCRIPTION": "Descrição",
     "ADD_VOICEQUEUE": "Adicionar Fila de Voz",
     "CREATED_AT": "Criado em",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Não é possível reproduzir arquivos de áudio gsm ou wav49",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Não é possível reproduzir arquivos de áudio no formato gsm ou wav49",
     "APPLICATIONS_LIST": "Lista de Aplicações",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Aplicativo Personalizado"
       "PENALTY_REQUIRED": "Você deve especificar um valor para a penalidade"
     },
     "GENERAL": "Geral",
-    "TIMEOUT": "Tempo eEgotado",
+    "TIMEOUT": "Timeout",
     "MAXLENGTH": "Tamanho Máximo",
     "RETRY": "Tente Novamente",
-    "WRAPUPTIME": "Tempo de Qualificação",
+    "WRAPUPTIME": "Tempo de Pós-atendimento",
     "WEIGHT": "Peso",
-    "JOINWHENEMPTY": "Juntar quando Vazio",
-    "LEAVEWHENEMPTY": "Sair quando Vazio",
+    "JOINWHENEMPTY": "Juntar quando vazio",
+    "LEAVEWHENEMPTY": "Desligar quando vazio",
     "HELP": {
-      "TIMEOUT": "Tempo em segundos ficar chamando (toques) um dispositivo",
-      "MAXLENGTH": "Número máximo de chamadores que podem esperar em uma fila: zero significa ilimitado",
-      "RETRY": "Tempo em segundos para aguardar antes de chamar o próximo agente quando o tempo limite expirar",
+      "TIMEOUT": "Quantos segundos ficará tocando um device (tempo de toque)",
+      "MAXLENGTH": "Número máximo de clientes que podem esperar em uma fila: zero significa ilimitado",
+      "RETRY": "Tempo em segundos para aguardar antes de chamar o próximo agente quando o timeout expirar",
       "WRAPUPTIME": "Tempo em segundos para manter um agente indisponível depois de concluir uma chamada",
       "WEIGHT": "Peso para definir a prioridade se os agentes estiverem associados a várias filas",
-      "JOINWHENEMPTY": "Usado para controlar se um chamador é passado para fila quando nenhum agente está disponível",
-      "LEAVEWHENEMPTY": "Usado para controlar se os chamadores serão passados para fila quando nenhum agente está disponível",
-      "ANNOUNCEFREQUENCY": "Com que frequência anunciará a posição do chamador e / ou o tempo estimado de espera na fila (zero para desativar)",
+      "JOINWHENEMPTY": "Usado para controlar se um cliente é passado para fila quando nenhum agente está logado",
+      "LEAVEWHENEMPTY": "Usado para controlar se desligará todos os clientes que estão esperando na fila caso todos os agentes desloguem ",
+      "ANNOUNCEFREQUENCY": "Com que frequência anunciará a posição do cliente e / ou o tempo estimado de espera na fila (zero para desativar)",
       "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do chamador muda com frequência)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o chamador",
-      "ANNOUNCEPOSITIONLIMIT": "Usado se a posição de anúncio for definida como \"limite\" ou \"mais\"",
-      "AFTERCALLWORKDURATION": "Duração da Pausa configurado pela opção Após Chamada",
-      "MEMBERDELAY": "Insere um atraso antes de o chamador e o agente na fila se conectarem",
+      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o cliente",
+      "ANNOUNCEPOSITIONLIMIT": "Usado se o anúncio de posiçao do for definida como \"limit\" ou \"more\"",
+      "AFTERCALLWORKDURATION": "Duração da Pausa configurado na de Pós-atendimento (ACW)",
+      "MEMBERDELAY": "Insere um atraso antes de o cliente e o agente se conectarem",
       "MUSICONHOLD": "Define a Música de Espera",
-      "ANNOUNCETOAGENT": "Reproduzir um anúncio para o agente que atende a chamada (geralmente para que ele saiba de qual fila o chamador está vindo)",
+      "ANNOUNCETOAGENT": "Reproduzir um anúncio para o agente (geralmente para que ele saiba de qual fila o cliente está vindo)",
       "RANDOMPERIODICANNOUNCE": "Se sim, os anúncios periódicos definidos serão reproduzidos aleatoriamente",
-      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Sim / Não / Uma vez)",
-      "ANNOUNCECALLERPOSITION": "Usado para ativar anúncio de posição do chamador na fila: No = nunca; Yes = sempre; Limite = somente se estiver dentro do valor definido pelo limite de posição de anúncio; Mais = apenas se estiver além do valor definido pelo limite de posição de anúncio.",
-      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do chamador seja informado ao agente antes da conexão",
+      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Usado para ativar anúncio de posição do cliente na fila: No = nunca; Yes = sempre; Limite = somente se estiver dentro do valor definido; More = apenas se estiver além do valor definido.",
+      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do cliente seja informado ao agente antes da conexão",
       "PERIODICANNOUNCE": "Conjunto de anúncios periódicos a serem reproduzidos (na ordem)",
-      "HOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Tempo de Espera”. Indefinido = sem anúncio",
-      "YOUARENEXTANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
-      "THEREAREANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
-      "WAITINGCALLSANNOUNCE": "Escolha um aúdio definido em ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “O tempo de espera estimado atual é“. Indefinido = sem anúncio",
-      "MINUTESANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
-      "MINUTEANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
-      "SECONDSANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
-      "THANKYOUANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
-      "AFTERCALLWORK": "Se ativado, o agente entrará em Pausa após desligar",
-      "AUTOPAUSE": "Ativar / desativar a pausa automática para agentes que não atendem chamada. Se ativado, faz com que o agente entre em pausa em todas as filas às quais ele pertence.",
+      "HOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Tempo de Espera”. Indefinido = sem anúncio",
+      "YOUARENEXTANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
+      "THEREAREANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
+      "WAITINGCALLSANNOUNCE": "Escolha um aúdio definido no módulo de Ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “O tempo de espera estimado atual é“. Indefinido = sem anúncio",
+      "MINUTESANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
+      "MINUTEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
+      "SECONDSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
+      "THANKYOUANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
+      "AFTERCALLWORK": "Se habilitado, o agente entrará em Pausa após desligar",
+      "AUTOPAUSE": "Habilita/Desabilita a pausa automática para agentes que não atendem chamada. Se habilitado, faz com que o agente entre em pausa em todas as filas que ele pertence.",
       "RINGINUSE": "Para permitir ou não o envio de chamadas para agentes cujo status é Ocupado",
-      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
-      "CONTEXT": "Permite que o chamador saia da fila pressionando um dígito DTMF. Se um contexto for configurado e o chamador digitar um número, esse dígito tentará localizar no contexto configurado e continuará o dialplan.",
-      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o chamador ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte os documentos do wiki)",
-      "SETQUEUEVARIABLES": "Se definido como sim, pouco antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
-      "SETQUEUEENTRYVARIABLES": "Se definido como sim, pouco antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
-      "RECORDING": "Ativar Gravação de Chamadas",
-      "VOICEMAIL_CONTEXT": "Define contexto da extensão",
+      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente atender quando o status OCUPADO ou CONGESTIONADO é recebido do canal",
+      "CONTEXT": "Permite que o cliente saia da fila pressionando um dígito DTMF. Se um contexto for configurado e o cliente digitar um número, o sistema tentará localizar no contexto configurado e continuará o dialplan.",
+      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a wiki)",
+      "SETQUEUEVARIABLES": "Se definido como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
+      "SETQUEUEENTRYVARIABLES": "Se definido como sim, antes de o ciente ser conectado a um agente, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
+      "RECORDING": "Habilitar gravação de chamadas",
+      "VOICEMAIL_CONTEXT": "Define o contexto da extensão",
       "NAME": "Somente é suportado números, letras e caracteres específicos (._)",
       "CALLERIDALL": "Supported format: \"CallerId\" <number>",
       "CALLER_ID": "Supported format: \"CallerId\" <number>",
-      "MANDATORYDISPOSITIONPAUSEID": "Tipo de Pausa para qualificação obrigatória",
-      "SERVICELEVEL": "Ajuste de Segundos para o nível de serviço (padrão = 0, sem Nível de Serviço). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período cumprem o nível de serviço)",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para qualificação obrigatória",
+      "SERVICELEVEL": "Ajuste em segundos para o nível de serviço (Padrão = 0, sem Nível de Serviço). Usado na estatísticas do nível de serviço (chamadas atendidas dentro do período cumprem o nível de serviço)",
       "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas",
       "SAVE_ROUTES": "O roteamento foi modificado. Lembre-se de salvar se não quiser perder suas alterações."
     },
-    "MUSICONHOLD": "Música em Espera",
+    "MUSICONHOLD": "Música de Espera",
     "ANNOUNCETOAGENT": "Anunciar ao Agente",
     "ANNOUNCEMENTS": "Anúncios",
     "ADVANCED": "Avançado",
-    "ANNOUNCEFREQUENCY": "Frequência Anúncio",
+    "ANNOUNCEFREQUENCY": "Frequência de Anúncio",
     "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio",
-    "PERIODICANNOUNCEFREQUENCY": "Frequencia Anúncio Periódico",
+    "PERIODICANNOUNCEFREQUENCY": "Frequencia do Anúncio Periódico",
     "RANDOMPERIODICANNOUNCE": "Anúncio Periódico Aleatório",
-    "ANNOUNCEHOLDTIME": "Anunciar Tempo de Espera",
+    "ANNOUNCEHOLDTIME": "Anunciar o Tempo de Espera",
     "ANNOUNCECALLERPOSITION": "Anunciar a Posição na Fila",
-    "ANNOUNCEPOSITIONLIMIT": "Anunciar Limite de Posição",
+    "ANNOUNCEPOSITIONLIMIT": "Anunciar o Limite de Posição",
     "REPORTHOLDTIMEAGENT": "Relatório de Tempo de Espera do Agente",
     "PERIODICANNOUNCE": "Anúncio Periódico",
-    "HOLDTIMEANNOUNCE": "Anúncio em Tempo de Espera",
+    "HOLDTIMEANNOUNCE": "Anúncio de Tempo de Espera",
     "YOUARENEXTANNOUNCE": "Anúncio 'Você é o próximo'",
     "THEREAREANNOUNCE": "Anúncio 'Existem'",
-    "WAITINGCALLSANNOUNCE": "Anúncio Chamadas em Espera",
+    "WAITINGCALLSANNOUNCE": "Anúncio de Chamadas em Espera",
     "ESTIMATEDHOLDTIMEANNOUNCE": "Anunciar Tempo de Espera Estimado",
     "MINUTESANNOUNCE": "Anuncio Minutos",
     "MINUTEANNOUNCE": "Anúncio Minuto",
-    "SECONDSANNOUNCE": "Anúncio Segundos",
+    "SECONDSANNOUNCE": "Anúncio de Segundos",
     "THANKYOUANNOUNCE": "Anúncio 'Obrigado'",
     "AUTOPAUSE": "Pausa Automática",
-    "AFTERCALLWORK": "Pausa Após Ligação",
-    "AFTERCALLWORKDURATION": "Duração Pausa Após Ligação",
-    "RINGINUSE": "Toque em Uso",
+    "AFTERCALLWORK": "Pós-atendimento (ACW)",
+    "AFTERCALLWORKDURATION": "Duração Pós-atendimento",
+    "RINGINUSE": "Toque quando Ocupado",
     "MEMBERDELAY": "Member Delay",
     "TIMEOUTRESTART": "Timeout Restart",
     "MONITORFORMAT": "Formato de Gravação",
     "ADD_OUTBOUNDROUTE": "Adicionar Rota de Saída",
     "EDIT_OUTBOUNDROUTE": "Editar Rota de Saída",
     "DELETE_OUTBOUNDROUTE": "Excluir Rota de Saída",
-    "CUTDIGITS": "Cut Digits",
+    "CUTDIGITS": "Cortar Dígitos",
     "RECORDING": "Gravação",
     "RECORDINGFORMAT": "Formato de Gravação",
     "INTERNALROUTES": "Rotas Internas",
     "DELETE_VOICEMAIL": "Excluir Correio de Voz",
     "FULLNAME": "Nome Completo",
     "EMAIL": "Email",
-    "MAILBOX": "Caixa Postal",
+    "MAILBOX": "Caixa de Entrada",
     "PASSWORD": "Senha",
     "CONFIRM_PASSWORD": "Confirmar Senha",
     "TIMEZONE": "Fuso Horário",
     "ATTACH": "Anexar",
     "ENVELOPE": "Envelope",
     "DELETE": "Excluir",
-    "EMAILBODY": "Corpo do e-mail",
-    "EMAILSUBJECT": "Assunto do email",
+    "EMAILBODY": "Corpo do Email",
+    "EMAILSUBJECT": "Assunto do Email",
     "MAXSECONDS": "Segundos Máximos",
     "MAXMESSAGES": "Mensagens Máximas",
     "MESSAGES": "Mensagens",
     "SORT": "Ordenar",
     "ADD_MUSICONHOLD": "Adicionar Música em Espera",
-    "MUSICONHOLDS": "Música em Espera",
+    "MUSICONHOLDS": "Música de Espera",
     "EDIT_MUSICONHOLD": "Editar Música em Espera",
     "DELETE_MUSICONHOLD": "Excluir Música em Espera",
     "DIRECTORY": "Diretório",
-    "AUDIOFILES": "Arquivos de áudio",
+    "AUDIOFILES": "Arquivos de Áudio",
     "RECORDINGS": "Gravações",
     "CHANSPY": "Intercalação",
     "PREFIX": "Prefixo",
     "AGENTS": "Agentes",
     "TELEPHONES": "Telefones",
     "QUEUES": "Filas",
-    "QUEUE_CALLS": "Filas de Ligação",
-    "QUEUE_PARAMETERS": "Parametros da Fila",
+    "QUEUE_CALLS": "Ligações em Fila",
+    "QUEUE_PARAMETERS": "Parâmetros da Fila",
     "ABANDONED_CALLS": "Chamadas Abandonadas",
     "OUTBOUND_CALLS": "Chamadas Externas",
     "AGI": "Agi",
     "VOICEMAIL": "Correio de Voz",
     "GOTO": "GoTo",
     "HANGUP": "Desligar",
-    "CUSTOM": "Personalizadas",
+    "CUSTOM": "Custom",
     "PROJECT": "Projeto CallySquare",
     "TECHNOLOGY/RESOURCE": "Tecnologia / Recurso",
     "URL": "URL",
     "USER": "Usuários",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
-    "AUDIO_FILES": "Arquivos de áudio",
+    "AUDIO_FILES": "Arquivos de Áudio",
     "ANNOUNCE_OVERRIDES": "Anúncio Substituto",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "POSITION": "Posição",
-    "ANSWER": "Responda",
+    "ANSWER": "Atender",
     "VALUE": "Valor",
     "MAILBOX@CONTEXT": "Mailbox@Context",
     "EXTENSION": "Extensão",
     "PRIORITY": "Prioridade",
     "HANGUP_CAUSE": "Causa do Desligamento",
     "OUTBOUNDDIAL": "Discagem de Saída",
-    "CALLER_ID": "Identificador de Chamadas",
-    "NO_MESSAGE_AVAILABLE": "Nenhuma Mensagem Disponível",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "Nenhuma mensagem disponível",
     "NO_SOUND_AVAILABLE": "Nenhum Áudio Disponível",
     "VOICERECORDINGS": "Gravações de Voz",
     "CHANSPIES": "Intercalação",
     "REALTIME": "Tempo Real",
     "ID": "Id",
     "VOICEMAIL_CONTEXT": "Contexto",
-    "NO_MOHSOUND_AVAILABLE": "Não há Música na Espera Disponível",
+    "NO_MOHSOUND_AVAILABLE": "Não há música de espera disponível",
     "FILE": "Arquivo",
     "ADD_MOHSOUND": "Adicionar Música em Espera",
-    "DOWNLOAD_MOHSOUND": "Download Música de Espera",
+    "DOWNLOAD_MOHSOUND": "Download do áudio de Música em Espera",
     "DELETE_MOHSOUND": "Excluir Música em Espera",
-    "UNIQUEID": "ID único",
+    "UNIQUEID": "ID Único",
     "AGENT": "Agente",
     "TYPE": "Tipo",
     "RATING": "Avaliação",
     "NEW_INTERNALROUTE": "Nova Rota Interna",
     "NEW_CONTEXT": "Novo Contexto",
     "NEW_VOICEMAIL": "Nova Mensagem de Voz",
-    "NEW_MUSICONHOLD": "Nova Música em Espera",
+    "NEW_MUSICONHOLD": "Nova Música de Espera",
     "NEW_CHANSPY": "Nova Intercalação",
     "PENALTY": "Peso",
     "ADD_TEAM_TO_VOICEQUEUE": "Adicionar Equipe à Fila de Voz",
     "EDIT_AGI": "Editar AGI",
     "EDIT_INTERNALDIAL": "Editar Discagem Interna",
     "EDIT_EXTERNALDIAL": "Editar Discagem Externa",
-    "EDIT_RINGGROUP": "Editar Grupo de Toques",
+    "EDIT_RINGGROUP": "Editar Grupo de Toque",
     "EDIT_PLAYBACK": "Editar Reprodução",
     "EDIT_QUEUE": "Editar Fila",
     "EDIT_SET": "Editar Conjunto",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_HANGUP": "Editar Hangup",
-    "EDIT_CUSTOM": "Editar Customizado",
+    "EDIT_CUSTOM": "Editar Custom",
     "DURATION": "Duração",
     "RECEIVED_AT": "Recebido em",
     "YES": "Sim",
     "NO": "Não",
-    "HANGUPCAUSE_1": "1 = Número não alocado",
-    "HANGUPCAUSE_16": "16 = Chamada normal",
-    "HANGUPCAUSE_17": "17 = Usuário ocupado",
-    "HANGUPCAUSE_18": "18 = Nenhuma resposta do usuário (Não atendeu)",
-    "HANGUPCAUSE_21": "21 = Chamada rejeitada",
-    "HANGUPCAUSE_22": "22 = Número alterado",
-    "HANGUPCAUSE_27": "27 = Destino fora de ordem",
-    "HANGUPCAUSE_38": "38 = Rede fora de ordem",
-    "HANGUPCAUSE_41": "41 = Falha temporária",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
-    "NO_APPS_AVAILABLE": "Não há Aplicativos Disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Download Gravação de Voz",
+    "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
+    "DOWNLOAD_VOICERECORDING": "Download da Gravação de Voz",
     "DELETE_VOICERECORDING": "Excluir Gravação de Voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Status do Telefone",
     "PHONE_STATUS": "Status do Telefone",
-    "TRUNK_STATUS": "Status Tronco",
+    "TRUNK_STATUS": "Status do Tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não Registrado",
     "LAGGED": "Atrasado",
     "REACHABLE": "Alcançável",
     "UNREACHABLE": "Inacessível",
     "UNKNOWN": "Desconhecido",
-    "NOT_INUSE": "Fora de Uso",
-    "INUSE": "Em uso",
+    "NOT_INUSE": "Disponível",
+    "INUSE": "Ocupado",
     "BUSY": "Ocupado",
     "INVALID": "Inválido",
     "UNAVAILABLE": "Indisponível",
     "ONHOLD": "Em Espera",
     "RING": "Tocar",
     "UP": "Cima",
-    "INFO": "Informação",
+    "INFO": "Info",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Nenhum Registro",
     "WAITING": "Esperando",
     "TALKING": "Falando",
     "DID": "DID",
-    "CALLER": "Chamador",
+    "CALLER": "Origem",
     "TOTAL": "Total",
-    "ANSWERED": "Respondidas",
+    "ANSWERED": "Atendidas",
     "ABANDONED": "Abandonadas",
     "UNMANAGED": "Não Gerenciado",
     "AVG_HOLD_TIME": "Tempo Médio de Epera",
     "DESTINATION": "Destino",
     "REJECTED": "Rejeitado",
     "FAILED": "Falhou",
-    "CALLED": "Chamado",
+    "CALLED": "Destino",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem Avaliação",
     "EDIT_VOICERECORDING": "Editar Gravação de Voz",
     "APPLICATION_NAME": "Nome da Aplicação",
     "ARGUMENTS": "Argumentos",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ADD_AGENT_TO_QUEUE": "Adicionar Agente à Fila",
     "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "PAUSE": "Pausa",
-    "UNPAUSE": "Fim Pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "REDIRECT_TO_NUMBER": "Redirecionar para Número",
     "REDIRECT_TO_AGENT": "Redirecionar para Agente",
-    "AGENTADD_VOICEQUEUE": "Adicionar Agente à Fila de Coz",
+    "AGENTADD_VOICEQUEUE": "Adicionar Agente à Fila de Voz",
     "APPLICATION": "Aplicação",
     "FILES": "Arquivos",
     "FORMAT": "Formato",
     "NEW_MOHSOUND": "Novo aúdio de Música em Espera",
     "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Excluir",
-    "QUEUE_PARAMS": "Parâmetros da fila",
+    "QUEUE_PARAMS": "Parâmetros da Fila",
     "TOTAL_OFFERED": "Total Oferecido",
     "READY": "Pronto",
     "AGENTADD_QUEUE": "Adicionar Agente à Fila de Voz",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "ALL_AGENTS": "Todos Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "CLOSING": "Fechamento",
+    "CLOSING": "Encerramento",
     "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Aguardando Por Agentes",
+    "WAITING_FOR_AGENT": "Aguardando por Agentes",
     "EDIT_OUTBOUNDDIAL": "Editar Discagem de Saída",
     "ACCOUNTNAME": "Nome da Conta",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "DISPOSITION": "Qualificação",
     "CHAT": "Chat",
     "TAG": "Tag",
     "DETAILS": "Detalhes",
     "BILLABLESECONDS": "Segundos Faturáveis",
-    "ANSWEREDAT": "Respondido em",
-    "NOTE": "Nota",
-    "CLOSE": "Fechar",
+    "ANSWEREDAT": "Atendidas em",
+    "NOTE": "Observação",
+    "CLOSE": "Encerrar",
     "SELECT_DATE": "Selecione Data de Início",
     "SELECT_TYPE": "Selecione Tipo",
     "VOICEPREFIXES": "Prefixos de Saída",
     "ADD_VOICEPREFIX": "Adicionar Prefixo",
     "EDIT_VOICEPREFIX": "Editar Prefixo",
     "AGENTADD_VOICEPREFIX": "Adicionar Agente ao Prefixo",
-    "DELETE_VOICEPREFIX": "Excluir Rrefixo",
+    "DELETE_VOICEPREFIX": "Excluir Prefixo",
     "OUTBOUNDROUTE": "Rota de Saída",
-    "CALLERIDALL": "ID do Chamador",
+    "CALLERIDALL": "Caller ID",
     "DIALER": "Discador",
     "INBOUND": "Entrada",
     "OUTBOUND": "Outbound",
-    "MANDATORYDISPOSITION": "Qualificação Obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de Pausa para Qualificação Obrigatória",
-    "TEAMS_ASSOCIATION": "Associação de Equipas",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de Pausa para Qualificação obrigatória",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "CANT_DOWNLOAD_THIS_FILE": "Não é possível baixar este arquivo",
-    "FILE_NOT_FOUND": "Arquivo Não Encontrado",
+    "FILE_NOT_FOUND": "Arquivo não encontrado",
     "SCREENRECORDING": "Gerenciar Gravação de Tela",
     "START_SCREENRECORDING": "Iniciar Gravação de Tela",
     "STOP_SCREENRECORDING": "Parar Gravação de Tela",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela Disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em Andamento",
-    "WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
+    "WRONG_EXTENSION": "O arquivo possuí extensão incorreta",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Baixar Transcrição",
-    "FAILUREREASON": "Razão da Falha",
-    "RUNSENTIMENT_VOICERECORDING": "Executar Sentimento",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar Transcrição e Sentimento",
+    "FAILUREREASON": "Motivo da Falha",
+    "RUNSENTIMENT_VOICERECORDING": "Executar Análise de Sentimento",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar Transcrição e Análise de Sentimento",
     "RUNTRANSCRIBE_VOICERECORDING": "Executar Transcrição",
-    "SENTIMENT": "Sentimento",
+    "SENTIMENT": "Análise de Sentimento",
     "SENTIMENTANALYSIS": "Análise de Sentimentos",
     "SENTIMENT_MIXED": "Misturado",
     "SENTIMENT_NEGATIVE": "Negativo",
index 97549f4..f39c304 100644 (file)
       "BASEURL_REQUIRED": "Campo Obrigatório"
     },
     "HELP": {
-      "LIST": "Lista do gerenciador de contatos usada para associar contatos",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
+      "LIST": "Lista da Gestão de Contatos usada para associar os contatos",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a qualificação obrigatória estiver habilitada",
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Apenas números, letras e caracteres específicos (._) são suportados",
       "RECEIVEURL": "Esta é a string de API gerada automaticamente que você precisa usar para receber as mensagens dentro de sua conta do provedor WhatsApp Connector (o método POST deve ser usado): clique no botão da área de transferência para copiá-la",
       "WELCOMEMESSAGE": "Esta é a primeira mensagem de resposta enviada para novas interações"
     },
-    "ACCESSKEYID": "ID da chave de acesso",
-    "ACCOUNTSID": "SID da conta",
+    "ACCESSKEYID": "ID de Chave de Acesso",
+    "ACCOUNTSID": "SID da Conta",
     "ACTIONS": "Ações",
-    "ADD_NOTE": "Adicionar nota",
+    "ADD_NOTE": "Adicionar Observação",
     "ADD_WHATSAPPACCOUNT": "Adicionar",
-    "ADD_WHATSAPPCANNEDANSWER": "Adicionar resposta automática",
-    "ADD_WHATSAPPDISPOSITION": "Adicionar disposição do WhatsApp",
-    "ADD_WHATSAPPQUEUE": "Adicionar fila WhatsApp",
+    "ADD_WHATSAPPCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "ADD_WHATSAPPDISPOSITION": "Adicionar Qualificação do WhatsApp",
+    "ADD_WHATSAPPQUEUE": "Adicionar Fila do WhatsApp",
     "ADVANCED": "Avançado",
     "AGENT": "Agente",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de WhatsApp",
-    "AGENTADD_WHATSAPPACCOUNT": "Adicionar agente à conta do WhatsApp",
-    "AGENTADD_WHATSAPPQUEUE": "Adicionar agente à fila de WhatsApp",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do WhatsApp",
+    "AGENTADD_WHATSAPPACCOUNT": "Adicionar Agente à Conta do WhatsApp",
+    "AGENTADD_WHATSAPPQUEUE": "Adicionar Agente à Fila do WhatsApp",
     "AGENTS": "Agentes",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila do WhatsApp",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila do WhatsApp",
     "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
-    "AGENT_TIMEOUT": "Tempo Limite do Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de transferência do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "ALL": "Tudo",
-    "ALL_AGENTS": "Todos os Agentes",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_AGENTS": "Todos Agentes",
+    "ALL_TEAMS": "Todas Equipes",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Token de autenticação",
-    "AUTOREPLY": "Resposta automatica",
-    "BACK": "Costas",
-    "BOTNAME": "Nome do bot",
+    "AUTHTOKEN": "Token de Autenticação",
+    "AUTOREPLY": "Auto Resposta",
+    "BACK": "Voltar",
+    "BOTNAME": "Nome do Bot",
     "BUSY": "Ocupado",
-    "CANNEDANSWERS": "Respostas enlatadas",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Insira um texto para pesquisar uma resposta automática",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite para procurar por Resposta Pré-definida",
     "CAPACITY": "Capacidade",
-    "CLOSE": "Perto",
-    "CLOSED": "Fechadas",
-    "CLOSEMETHOD": "Método Fechar",
-    "CLOSEURL": "Fechar URL",
+    "CLOSE": "Encerrar",
+    "CLOSED": "Encerrado",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "COMMAND": "Comando",
-    "CONDITION": "Doença",
+    "CONDITION": "Condição",
     "CONTACT": "Contato",
     "CREATED_AT": "Criado em",
     "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "DELETE": "Excluir",
-    "DELETE_INTERACTION": "Excluir interação",
-    "DELETE_SELECTED": "Excluir selecionado",
-    "DELETE_WHATSAPPACCOUNT": "Excluir conta WhatsApp",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "DELETE_SELECTED": "Excluir Selecionado",
+    "DELETE_WHATSAPPACCOUNT": "Excluir Conta do WhatsApp",
     "DELETE_WHATSAPPCANNEDANSWER": "Excluído",
-    "DELETE_WHATSAPPDISPOSITION": "Excluir disposição do WhatsApp",
-    "DELETE_WHATSAPPQUEUE": "Excluir fila do WhatsApp",
+    "DELETE_WHATSAPPDISPOSITION": "Excluir Qualificação do WhatsApp",
+    "DELETE_WHATSAPPQUEUE": "Excluir Fila do WhatsApp",
     "DESCRIPTION": "Descrição",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Disposição",
-    "DISPOSITIONS": "Disposições",
-    "DOWNLOAD_INTERACTION": "Baixar",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Baixar sem anexos",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Baixar com anexos",
+    "DISPOSITION": "Qualificação",
+    "DISPOSITIONS": "Qualificações",
+    "DOWNLOAD_INTERACTION": "Download",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "EDIT_AGENT": "Editar Agente",
-    "EDIT_AMAZONLEX": "Editar configuração Lex",
-    "EDIT_AUTOREPLY": "Editar resposta automática",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
+    "EDIT_CLOSE": "Editar Encerramento",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_GOTOP": "Editar Gotop",
     "EDIT_NOOP": "Editar Noop",
-    "EDIT_QUEUE": "Editar fila",
+    "EDIT_QUEUE": "Editar Fila",
     "EDIT_SYSTEM": "Editar Sistema",
-    "EDIT_TAG": "Editar etiqueta",
-    "EDIT_WHATSAPPACCOUNT": "Editar conta WhatsApp",
+    "EDIT_TAG": "Editar Tag",
+    "EDIT_WHATSAPPACCOUNT": "Editar Conta do WhatsApp",
     "EDIT_WHATSAPPCANNEDANSWER": "Editar",
-    "EDIT_WHATSAPPDISPOSITION": "Editar disposição do WhatsApp",
-    "EDIT_WHATSAPPQUEUE": "Editar fila de WhatsApp",
+    "EDIT_WHATSAPPDISPOSITION": "Editar Qualificaçao do WhatsApp",
+    "EDIT_WHATSAPPQUEUE": "Editar Fila de WhatsApp",
     "FALSEPRIORITY": "Falsa Prioridade",
     "GENERAL": "Geral",
     "GOTOIF": "Gotoif",
-    "GOTOP": "Seja o melhor",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Vá para a fila de WhatsApp em tempo real",
-    "GO_TO_WHATSAPPACCOUNTS": "Ir para a conta",
-    "ID": "Eu iria",
-    "IDLE": "Ocioso",
+    "GOTOP": "Gotop",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Visualizar Fila do WhatsApp em Tempo Real",
+    "GO_TO_WHATSAPPACCOUNTS": "Ir para a Conta",
+    "ID": "Id",
+    "IDLE": "Disponível",
     "INSERT_MESSAGE_HERE": "Insira a mensagem aqui",
     "INTERACTIONS": "Interações",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Vá para Interações",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Ir para Interações",
     "KEY": "Chave",
-    "LANGUAGE": "Língua",
-    "LASTMESSAGE": "Última mensagem",
+    "LANGUAGE": "Idioma",
+    "LASTMESSAGE": "Última Mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
-    "MANDATORYDISPOSITION": "Disposição Obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
+    "MANDATORYDISPOSITION": "Qualificação Obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a qualificação obrigatória estiver habilitada",
     "MORE": "Mais",
-    "MOTIONPROXY": "Domínio de proxy ou movimento",
-    "MULTI_SELECT_TOGGLE": "Alternância de seleção múltipla",
+    "MOTIONPROXY": "Domínio do Proxy ou do Motion",
+    "MULTI_SELECT_TOGGLE": "Multi select toggle",
     "NAME": "Nome",
-    "NEW_WHATSAPPACCOUNT": "Nova conta WhatsApp",
-    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta predeterminada do WhatsApp",
-    "NEW_WHATSAPPDISPOSITION": "Nova disposição do WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Nova fila de WhatsApp",
+    "NEW_WHATSAPPACCOUNT": "Nova Conta de WhatsApp",
+    "NEW_WHATSAPPCANNEDANSWER": "Nova Resposta Pré-definida do WhatsApp",
+    "NEW_WHATSAPPDISPOSITION": "Nova Qualificação do WhatsApp",
+    "NEW_WHATSAPPQUEUE": "Nova Fila do WhatsApp",
     "NOOP": "Noop",
-    "NOTE": "Nota",
+    "NOTE": "Observação",
     "NOTIFICATION": "Notificação",
-    "NOTIFICATIONSHAKE": "Mexe",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONSOUND": "Som",
     "NOTIFICATIONTEMPLATE": "Modelo",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "NO_AVAILABLE_INFO": "Sem informações disponíveis",
-    "NO_INTERACTION_AVAILABLE": "Nenhuma interação disponível",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Nenhuma resposta automática do WhatsApp disponível",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Nenhum dispositivo WhatsApp disponível",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma conta WhatsApp disponível",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "NO_AVAILABLE_INFO": "Nenhuma Informações Disponível",
+    "NO_INTERACTION_AVAILABLE": "Nenhuma Interação Disponível",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Nenhuma resposta pré-definda disponível",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Nenhum qualificação disponível",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma Conta do WhatsApp disponível",
     "OF": "do",
     "OPENED": "Aberto",
     "PAGE": "Página",
     "PARTIALPAUSE": "Pausa Parcial",
     "PAUSE": "Pausa",
     "PAUSED": "Em pausa",
-    "PAUSE_TIME": "Tempo de pausa",
-    "PHONE": "telefone",
+    "PAUSE_TIME": "Tempo de Pausa",
+    "PHONE": "Telefone",
     "PRIORITY": "Prioridade",
     "PROXY": "Proxy",
     "QUEUE": "Fila",
     "QUEUES": "Filas",
     "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "READY": "pronto",
-    "REALTIME": "Tempo real",
-    "RECEIVEURL": "Receber URL",
-    "REFRESH_INTERACTIONS": "Atualizar interações",
-    "REMOTE": "Controlo remoto",
+    "QUEUETRANSFERTIMEOUT": "Timeout de transferência da fila",
+    "READY": "Disponível",
+    "REALTIME": "Tempo Real",
+    "RECEIVEURL": "URL de Recebimento",
+    "REFRESH_INTERACTIONS": "Atualizar Interações",
+    "REMOTE": "Controlo Remoto",
     "ROWSPERPAGE": "Linhas por página",
-    "SAVE": "Salve \e051",
-    "SCREENRECORDING": "Gerenciar gravação de tela",
+    "SAVE": "Salvar",
+    "SCREENRECORDING": "Gerenciar Gravação de Tela",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "SECRETACCESSKEY": "Chave secreta de acesso",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "SELECTED": "Selecionado",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "SELECTED_TEAMS": "Times Selecionados",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SEND": "Enviar",
     "SETTINGS": "Configurações",
-    "SPYINTERACTION": "Interação de espião",
+    "SPYINTERACTION": "Espiar",
     "STARTEDAT": "Começou às",
-    "START_SCREENRECORDING": "Iniciar gravação de tela",
+    "START_SCREENRECORDING": "Iniciar Gravação de Tela",
     "STATUS": "Status",
-    "STOP_SCREENRECORDING": "Parar a gravação da tela",
+    "STOP_SCREENRECORDING": "Parar Gravação da Tela",
     "STRATEGY": "Estratégia",
     "SYSTEM": "Sistema",
     "TAG": "Tag",
     "TAGS": "Tag",
-    "TEAMADD_WHATSAPPQUEUE": "Adicionar equipe à fila do WhatsApp",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "TEAMADD_WHATSAPPQUEUE": "Adicionar equipe à Fila do WhatsApp",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "TEXT": "Texto",
-    "TIMEOUT": "Tempo esgotado",
-    "TIMER": "Cronômetro",
+    "TIMEOUT": "Timeout",
+    "TIMER": "Timer",
     "TIMES": "Vezes",
     "TO": "Para",
-    "TOKEN": "Símbolo",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "TRANSFER": "Transferir",
-    "TRUEPRIORITY": "Verdadeira prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
     "TYPE": "Tipo",
-    "UNPAUSE": "Fim da pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "VALUE": "Valor",
     "VARIABLE": "Variável",
-    "WAITFORTHEASSIGNEDAGENT": "Espere pelo agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguarde atribuir a um agente",
     "WAITING": "Esperando",
-    "WELCOMEMESSAGE": "Mensagem de boas-vindas",
-    "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPPACCOUNTS": "Contas WhatsApp",
-    "WHATSAPPCANNEDANSWERS": "Respostas predeterminadas do WhatsApp",
-    "WHATSAPPDISPOSITIONS": "Dispositivos do WhatsApp",
-    "WHATSAPPQUEUES": "WhatsApp Queues",
-    "CLIENTEMAIL": "Email do cliente",
+    "WELCOMEMESSAGE": "Mensagem de Boas-vindas",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPPACCOUNTS": "Contas do WhatsApp",
+    "WHATSAPPCANNEDANSWERS": "Respostas Pré-definidas do WhatsApp",
+    "WHATSAPPDISPOSITIONS": "Qualificações do WhatsApp",
+    "WHATSAPPQUEUES": "Filas do WhatsApp",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "BASEURL": "URL base",
-    "DELIVERYREPORTURL": "URL do relatório de entrega"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "BASEURL": "URL Base",
+    "DELIVERYREPORTURL": "URL do Relatório de Entrega"
   }
 }
index a599e14..8b5a270 100644 (file)
@@ -1,6 +1,6 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Período Pré Expiração (Gray Period)",
+    "EXPIRATION_GRAY_PERIOD": "Período Próximo da Expiração (Gray Period)",
     "NO_AVAILABLE_GROUPS": "Não há Grupos Disponíveis",
     "SAVE": "Salvar",
     "INFO": "Info",
@@ -9,7 +9,7 @@
     "MEMBERS": "Membros",
     "ENABLE_WRITING": "Ativar Escrita",
     "GROUPS": "Grupos",
-    "YOU": "Você + {{participantes}}",
+    "YOU": "Você + {{participants}}",
     "NEW_INTERNAL_MESSAGE": "Nova mensagem interna",
     "DELETE": "Excluir",
     "SEARCH": "Procurar",
@@ -40,7 +40,7 @@
     "APP_SERVERS": "Servidores de Aplicativos",
     "USER_STATS": "Estatísticas do Usuário",
     "EVENTS": "Eventos",
-    "NOTES": "Notas",
+    "NOTES": "Observações",
     "QUICK_SETTINGS": "Configurações Rápidas",
     "NOTIFICATIONS": "Notificações",
     "CLOUD_SYNC": "Cloud Sync",
     "REPLY_PLACEHOLDER": "Digite e pressione enter para enviar mensagem",
     "CONTACT_XCALLY_MOTION_SUPPORT": "Entre em contato com o suporte xCALLY Motion",
     "EXPIRATION_DATE": "Data de Validade",
-    "EXPIRATION_REASON": "Razão de Expiração",
+    "EXPIRATION_REASON": "Motivo de Expiração",
     "LICENSE": "Licença",
-    "NEW_TOKEN": "Novo Token",
+    "NEW_TOKEN": "Token Novo",
     "OLD_TOKEN": "Token Antigo",
     "SEND_EMAIL_TO": "Enviar Email para",
     "TOKEN": "Token",
     "EXPIRATION_REASON_MESSAGE": "Sua licença expirou ou seu Token foi alterado devido a mudença em seu sistema. Contate o suporte xCALLY Motion enviando o Token antigo e o novo",
-    "GRAY_PERIOD_EXPIRATION": "Período Pré Expiração (Gray Period)",
+    "GRAY_PERIOD_EXPIRATION": "Período Próximo da Expiração (Gray Period)",
     "EXPIRATION_REASON_MESSAGE_GRAY": "Sua licença expirou ou foi desativada. Entre em contato com o suporte do xCALLY Motion",
     "EXPIRATION_REASON_MESSAGE_CHANGED": "Seu Token foi alterado devido a uma alteração no seu sistema. Contate o suporte xCALLY Motion enviando o Token antigo e o novo",
     "MESSENGER_DISABLED": "A mensagem interna está desativada para este agente!",
index 56609ea..4eeeed9 100644 (file)
@@ -4,17 +4,17 @@
     "EMAIL_ADRESS": "Endereço de e-mail",
     "PASSWORD": "Senha",
     "PASSWORD_CONFIRM": "Confirmação de senha",
-    "UPDATE_PASSWORD": "RESETAR MINHA SENHA",
+    "UPDATE_PASSWORD": "REDEFINIR MINHA SENHA",
     "GO_BACK": "Volte para o login",
-    "PASSWORD_RESET": "Resetar a senha",
+    "PASSWORD_RESET": "Redefinir a senha",
     "PASSWORD_RESET_MESSAGE": "Sua senha foi redefinida corretamente, agora você pode fazer o login!",
-    "PASSWORD_RESET_ERROR": "Erro de redefinição de senha",
+    "PASSWORD_RESET_ERROR": "Erro ao redefinir senha",
     "ERRORS": {
-      "EMAIL_REQUIRED": "O campo de email é obrigatório",
-      "EMAIL_MUST_VALID": "E-mail deve ser um endereço de e-mail válido",
+      "EMAIL_REQUIRED": "O campo de e-mail é obrigatório",
+      "EMAIL_MUST_VALID": "Endereço de e-mail inválido.",
       "PASSWORD_REQUIRED": "O campo de senha é obrigatório",
       "CONFIRM_NOT_MATCH": "As senhas não combinam",
-      "SECURE_PASSWORD_PATTERN": "Deve conter pelo menos 8 caracteres, com um mínimo de 1 letra minúscula, 1 letra maiúscula, 1 caractere numérico e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}."
+      "SECURE_PASSWORD_PATTERN": "Deve conter pelo menos 8 caracteres, com mo mínimo de 1 letra minúscula, 1 letra maiúscula, 1 caractere numérico e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}."
     }
   }
 }
index f7d1abd..9b1db71 100644 (file)
     "WHATSAPP": "ال WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات",
     "BOSNIAN": "البوسنية",
-    "ICELANDIC": "جزيرة"
+    "ICELANDIC": "جزيرة",
+    "WAITINGQUEUECALLS": "انتظار مكالمات قائمة الانتظار"
   }
 }
index dbe8cbb..298c51e 100644 (file)
       "PREVIEW_RECALLME": "Ovo je Recall Me poziv zakazan za {{date}}"
     },
     "BOSNIAN": "Bosanski jezik",
-    "ICELANDIC": "Islandski"
+    "ICELANDIC": "Islandski",
+    "WAITINGQUEUECALLS": "Čekanje u redu poziva"
   }
 }
index 6a0408a..763050c 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď",
     "BOSNIAN": "bosenský",
-    "ICELANDIC": "Islandský"
+    "ICELANDIC": "Islandský",
+    "WAITINGQUEUECALLS": "Čekání na volání ve frontě"
   }
 }
index 60ae458..59f9761 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler",
     "BOSNIAN": "bosnisk",
-    "ICELANDIC": "Islandsk"
+    "ICELANDIC": "Islandsk",
+    "WAITINGQUEUECALLS": "Ventende køopkald"
   }
 }
index 7fe5d1f..29d0477 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort konfiguriert",
     "BOSNIAN": "bosnisch",
-    "ICELANDIC": "Isländisch"
+    "ICELANDIC": "Isländisch",
+    "WAITINGQUEUECALLS": "Warteschlangenanrufe"
   }
 }
index 2a5f385..f18fb94 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales",
     "BOSNIAN": "bosnio",
-    "ICELANDIC": "isleño"
+    "ICELANDIC": "isleño",
+    "WAITINGQUEUECALLS": "Llamadas en cola de espera"
   }
 }
index 5092009..5296cdf 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud",
     "BOSNIAN": "bosnia keel",
-    "ICELANDIC": "saarlane"
+    "ICELANDIC": "saarlane",
+    "WAITINGQUEUECALLS": "Kõnede ootel"
   }
 }
index 100dc92..ca9bee9 100644 (file)
     "WHATSAPP": "واتساپ",
     "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است",
     "BOSNIAN": "بوسنیایی",
-    "ICELANDIC": "جزیره ای"
+    "ICELANDIC": "جزیره ای",
+    "WAITINGQUEUECALLS": "تماس های صف انتظار"
   }
 }
index 248942a..ba46232 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta",
     "BOSNIAN": "bosnialainen",
-    "ICELANDIC": "Islannin kieli"
+    "ICELANDIC": "Islannin kieli",
+    "WAITINGQUEUECALLS": "Odottaa puheluita"
   }
 }
index 2a35a78..50e9ac0 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux",
     "BOSNIAN": "bosniaque",
-    "ICELANDIC": "Islandais"
+    "ICELANDIC": "Islandais",
+    "WAITINGQUEUECALLS": "Appels en file d'attente"
   }
 }
index 52611b6..109a522 100644 (file)
     "WHATSAPP": "וואטסאפ",
     "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים",
     "BOSNIAN": "בוסנית",
-    "ICELANDIC": "אילנדית"
+    "ICELANDIC": "אילנדית",
+    "WAITINGQUEUECALLS": "ממתינים לשיחות בתור"
   }
 }
index 61c0fbf..239448e 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया",
     "BOSNIAN": "बोस्नियाई",
-    "ICELANDIC": "आइलैंडिक"
+    "ICELANDIC": "आइलैंडिक",
+    "WAITINGQUEUECALLS": "प्रतीक्षा कतार कॉल"
   }
 }
index b91b9d5..0ea09bd 100644 (file)
     "PHONE2CALL": "Telefon a híváshoz",
     "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz",
     "BOSNIAN": "bosnyák",
-    "ICELANDIC": "szigeti"
+    "ICELANDIC": "szigeti",
+    "WAITINGQUEUECALLS": "Várakozó hívások"
   }
 }
index da184b6..cbfdf39 100644 (file)
     "WHATSAPP": "ada apa",
     "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran",
     "BOSNIAN": "Bosnia",
-    "ICELANDIC": "pulau"
+    "ICELANDIC": "pulau",
+    "WAITINGQUEUECALLS": "Menunggu panggilan antrian"
   }
 }
index 161e45c..7d58b11 100644 (file)
 {
   "TOOLBAR": {
-    "CHANGE_LANGUAGE_TITLE": "Change language",
-    "CHANGE_LANGUAGE_MESSAGE": "Remember to refresh the page to apply RTL Support (if enabled)",
+    "CHANGE_LANGUAGE_TITLE": "Breyta tungumál",
+    "CHANGE_LANGUAGE_MESSAGE": "Mundu að endurnýja síðuna til að nota RTL Support (ef það er virkjað)",
     "HEBREW": "Hebrew",
-    "PREFIXES": "Prefixes",
-    "CALL": "Call",
+    "PREFIXES": "Forskeyti",
+    "CALL": "Hringdu",
     "ARABIC": "Arabic",
     "INDONESIAN": "Indonesian",
-    "RESETPASSWORD": "Reset Password",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Remaining days before your password expires",
-    "BROWSER_COMPATIBILITY": "Browser Compatibility [Chrome, Opera, Safari]",
-    "RECORDING": "Recording",
-    "INVALID_LICENSE": "Invalid License",
-    "BROWSER": "Browser",
-    "OS": "Operating System",
-    "REQUIREMENTS": "Requirements",
-    "LICENSE": "License",
+    "RESETPASSWORD": "Endurstilltu lykilorð",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dagar sem eftir eru áður en lykilorðið þitt rennur út",
+    "BROWSER_COMPATIBILITY": "Vafrasamhæfni [Chrome, Opera, Safari]",
+    "RECORDING": "Upptaka",
+    "INVALID_LICENSE": "Ógilt leyfi",
+    "BROWSER": "Vafri",
+    "OS": "Stýrikerfi",
+    "REQUIREMENTS": "Skilyrði",
+    "LICENSE": "Leyfi",
     "HTTPS": "HTTPS",
-    "PHONE2CALL": "Phone to call",
-    "CHANNELS": "Channels",
-    "CHANNEL": "Channel",
-    "NUM_NOTIFICATIONS": "Notifications",
-    "NOTIFICATIONS": "Autoanswer enabled",
-    "DELAY": "Autoanswer delay [secs]",
-    "AUTOANSWER_NOTIFICATIONS": "Autoanswer notifications",
-    "CHAT": "Chat",
-    "EMAIL": "Email",
+    "PHONE2CALL": "Númer til að hringja í ",
+    "CHANNELS": "Rásir",
+    "CHANNEL": "Rásir",
+    "NUM_NOTIFICATIONS": "tilkyninningar",
+    "NOTIFICATIONS": "Sjálfvirk svörun virk",
+    "DELAY": "Seinkun á sjálfvirkri svörun [sek.]",
+    "AUTOANSWER_NOTIFICATIONS": "Tilkynningar á sjálfvirkri svörun",
+    "CHAT": "Spjall",
+    "EMAIL": "Netfang",
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
-    "WHATSAPP": "Whatsapp connector",
-    "WEBRTCSUPPORT": "WebRTC Support",
-    "REGISTERED": "Registered",
-    "NOT_REGISTERED": "Not registered",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
-    "ATTENDED_TRANSFER": "Attended Tranfer",
-    "TRANSFER": "Transfer",
-    "TARGET": "Target",
-    "CANCEL": "Cancel",
-    "FILENAME": "File name",
-    "STATUS": "Status",
-    "NO_AUTOANSWER_CONFIGURED": "No autoanswer configured for channels",
-    "ACTIONS": "Actions",
-    "SPEAKER": "Speaker",
-    "RINGING": "Ringing tone",
-    "MICROPHONE": "Microphone",
-    "CONFERENCE": "Conference with 2 active sessions",
-    "PROFILE": "Profile",
-    "SERVICES": "Services",
-    "AUDIO": "Audio",
-    "FULLNAME": "Fullname",
-    "NAME": "Name",
-    "INTERNAL": "Internal",
-    "RINGINGDEVICE": "Ringing Device",
-    "SPEAKERDEVICE": "Speaker Device",
-    "MICROPHONEDEVICE": "Microphone Device",
-    "CHANGEPASSWORD": "Change password",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto answer",
-    "TOGGLE_NAVIGATION": "Toggle navigation",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
-    "SEARCH": "Search",
-    "USER_SETTINGS": "User settings",
-    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
-    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
-    "STAY_LOGGED": "Stay logged",
-    "WARNING": "Warning",
-    "ENGLISH": "English",
-    "ITALIAN": "Italian",
-    "FRENCH": "French",
-    "KOREAN": "Korean",
-    "SPANISH": "Spanish",
-    "SWEDISH": "Swedish",
-    "RUSSIAN": "Russian",
-    "GERMAN": "German",
-    "JAPANESE": "Japanese",
-    "CHINESESIMPLIFIED": "Chinese Simplified",
-    "CHINESETRADITIONAL": "Chinese Traditional",
-    "DUTCH": "Dutch",
-    "FINNISH": "Finnish",
-    "DANISH": "Danish",
-    "PORTUGUESE": "Portuguese",
-    "NORWEGIAN": "Norwegian",
+    "WHATSAPP": "Whatsapp tengill",
+    "WEBRTCSUPPORT": "WebRTC hjálp",
+    "REGISTERED": "Skráð",
+    "NOT_REGISTERED": "Ekki skráð",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC leyfi er ekki virkjað",
+    "ATTENDED_TRANSFER": "Flutningur tókst",
+    "TRANSFER": "Flutt",
+    "TARGET": "Markmið",
+    "CANCEL": "Hætta við",
+    "FILENAME": "Skráarnafn",
+    "STATUS": "Staða",
+    "NO_AUTOANSWER_CONFIGURED": "Ekkert sjálfvirkt svar stillt fyrir rásirnar",
+    "ACTIONS": "Aðgerð",
+    "SPEAKER": "Hátalari",
+    "RINGING": "Hringi tónn",
+    "MICROPHONE": "Hljóðnemi",
+    "CONFERENCE": "Hópsamtal með tveir samtíma samtölum",
+    "PROFILE": "Snið",
+    "SERVICES": "Þjónusta",
+    "AUDIO": "Hljóð",
+    "FULLNAME": "fullt nafn",
+    "NAME": "Nafn",
+    "INTERNAL": "Innanhúss",
+    "RINGINGDEVICE": "Hringi tæki",
+    "SPEAKERDEVICE": "Hátalari",
+    "MICROPHONEDEVICE": "Hljóðnemi",
+    "CHANGEPASSWORD": "CBreyttu lykilorði",
+    "SETTINGS": "Stillingar",
+    "AUTOANSWER": "Sjálfvirkt svar",
+    "TOGGLE_NAVIGATION": "Skiptu um leiðsögn",
+    "TOGGLE_NAVIGATION_FOLD": "Skiptu um leiðsögu að hluta",
+    "TOGGLE_NAVIGATION_MODE": "Skiptu um leiðsögu hátt",
+    "SEARCH": "Leita",
+    "USER_SETTINGS": "Notenda stillingar",
+    "TOGGLE_QUICK_PANEL": "Skiptu um hraðborð",
+    "SOMEONE_LOGGED_YOU_OUT": "Einhver skráði sig út, viltu vera innskráður?",
+    "STAY_LOGGED": "Vertu innskráður",
+    "WARNING": "aðvörun",
+    "ENGLISH": "Enska",
+    "ITALIAN": "Ítalskur",
+    "FRENCH": "Franskur",
+    "KOREAN": "Kórenanskur",
+    "SPANISH": "Spánskur",
+    "SWEDISH": "Sænskur",
+    "RUSSIAN": "Rússneskur",
+    "GERMAN": "Þýskur",
+    "JAPANESE": "Japanskur",
+    "CHINESESIMPLIFIED": "Einföld kínverska",
+    "CHINESETRADITIONAL": "Hefðbundin kínverska",
+    "DUTCH": "Hollenska",
+    "FINNISH": "Finnska",
+    "DANISH": "Danska",
+    "PORTUGUESE": "Portugíska",
+    "NORWEGIAN": "Norska",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Hungarian",
-    "TURKISH": "Turkish",
-    "PERSIAN": "Persian",
-    "LATVIAN": "Latvian",
-    "POLISH": "Polish",
-    "LOGIN_TIME": "Login Time",
-    "PAUSE_TIME": "Pause Time",
-    "PREVIEW": "Preview",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_PASSWORD": "New Password",
-    "OLD_PASSWORD": "Old Password",
-    "SAVE": "Save",
-    "TRIAL_VERSION": "Trial Version",
-    "PAUSE": "Pause",
-    "RESUME": "End Pause",
-    "NO_PAUSES_AVAILABLE": "No pauses available",
-    "CZECH": "Czech",
+    "HUNGARIAN": "Ungverska",
+    "TURKISH": "Tyrkneska",
+    "PERSIAN": "Persneska",
+    "LATVIAN": "Lettneska",
+    "POLISH": "Pólska",
+    "LOGIN_TIME": "Innskráning kl.",
+    "PAUSE_TIME": "Hlé kl.",
+    "PREVIEW": "Forskoða",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "NEW_PASSWORD": "Nýtt lykilorð",
+    "OLD_PASSWORD": "Eldra lykilorð",
+    "SAVE": "Geyma",
+    "TRIAL_VERSION": "Prufu útgáfa",
+    "PAUSE": "Hlé",
+    "RESUME": "Enda hlé",
+    "NO_PAUSES_AVAILABLE": "Engin hlé aðgengileg",
+    "CZECH": "Tekkneska",
     "ERRORS": {
-      "FIELD_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+      "FIELD_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "SECURE_PASSWORD_PATTERN": "Lykilorðið verður að vera að minnsta kosti 8 stafir að lengd og hafa 1 lágstaf, 1 hástaf, 1 tölu og 1 sérstaf ~!?*@#$%^&-_=+[{]}.",
+      "PASSWORD_OLDPASSWORD_MATCH": "Lykilorðið má ekki vera það sama og síðasta"
     },
-    "BRAZILIAN": "Brazilian",
-    "ESTONIAN": "Estonian",
-    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
-    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
-    "NO_AVAILABLE_INFO": "No available info",
-    "LITHUANIAN": "Lithuanian",
-    "NOTIFICATION_TITLE": "New notification from {{sender}}",
-    "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
-    "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
-    "LOGOUT": "Logout",
-    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
+    "BRAZILIAN": "Brasilískt",
+    "ESTONIAN": "Eistneskur",
+    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Engin hljóðnemi aðgengilegur",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Enginn hátalari aðgengilegur",
+    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Ekkert hljóðtæki aðgengilegt",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar til staðar",
+    "LITHUANIAN": "Litháískur",
+    "NOTIFICATION_TITLE": "Ný tilkynning frá {{sender}}",
+    "NOTIFICATION_TITLE_RECIPIENT": "Til {{recipient}}",
+    "USER_FORCE_LOGOUT": "{{ip}} hefur þegar skráð sig inn með skilríkjunum. \n Margar innskráningar eru ekki leyfðar",
+    "LOGOUT": "Útskráning",
+    "SESSION_TIMEOUT": "Aðgerðinni verður sjálfkrafa lokað eftir 60 sekúndur",
     "HELP": {
-      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
+      "PREVIEW_RECALLME": "Þetta er „Call Me“ símtal áætluð {{date}}"
     },
-    "BOSNIAN": "Bosnian",
-    "ICELANDIC": "íslenskt"
+    "BOSNIAN": "Bosníu",
+    "ICELANDIC": "Íslenskt",
+    "WAITINGQUEUECALLS": "Símtöl í biðröð"
   }
 }
index d58a8eb..2b83342 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません",
     "BOSNIAN": "ボスニア語",
-    "ICELANDIC": "島の"
+    "ICELANDIC": "島の",
+    "WAITINGQUEUECALLS": "キューの呼び出しを待機しています"
   }
 }
index b39b7a4..abbf500 100644 (file)
     "WHATSAPP": "왓츠앱",
     "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다.",
     "BOSNIAN": "보스니아어",
-    "ICELANDIC": "아일랜드어"
+    "ICELANDIC": "아일랜드어",
+    "WAITINGQUEUECALLS": "대기열 호출 대기 중"
   }
 }
index b4f3558..9033022 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas",
     "BOSNIAN": "bosnių",
-    "ICELANDIC": "Islandiškas"
+    "ICELANDIC": "Islandiškas",
+    "WAITINGQUEUECALLS": "Laukia skambučių eilėje"
   }
 }
index 1d28d64..4a1a15e 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde",
     "BOSNIAN": "bosniešu",
-    "ICELANDIC": "Islandisks"
+    "ICELANDIC": "Islandisks",
+    "WAITINGQUEUECALLS": "Zvanu gaidīšana rindā"
   }
 }
index da368a8..62bbcda 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen",
     "BOSNIAN": "Bosnisch",
-    "ICELANDIC": "eilandachtig"
+    "ICELANDIC": "eilandachtig",
+    "WAITINGQUEUECALLS": "Wachtrij-oproepen"
   }
 }
index 1829459..3e931a5 100644 (file)
     "WHATSAPP": "Hva skjer",
     "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler",
     "BOSNIAN": "bosnisk",
-    "ICELANDIC": "Islandsk"
+    "ICELANDIC": "Islandsk",
+    "WAITINGQUEUECALLS": "Ventende køanrop"
   }
 }
index 0239f1b..a5f7d68 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów",
     "BOSNIAN": "bośniacki",
-    "ICELANDIC": "Islandzki"
+    "ICELANDIC": "Islandzki",
+    "WAITINGQUEUECALLS": "Połączenia oczekujące w kolejce"
   }
 }
index 2ebfc33..f534357 100644 (file)
@@ -2,15 +2,15 @@
   "TOOLBAR": {
     "PREFIXES": "Prefixos",
     "CALL": "Chamada",
-    "ARABIC": "Arabic",
+    "ARABIC": "Árabico",
     "INDONESIAN": "Indonésio",
-    "RESETPASSWORD": "Redefinir senha",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes antes de sua senha expirar",
-    "BROWSER_COMPATIBILITY": "Compatibilidade do navegador [Chrome, Opera, Safari]",
+    "RESETPASSWORD": "Redefinir Senha",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes para sua senha expirar",
+    "BROWSER_COMPATIBILITY": "Compatibilidade do Navegador [Chrome, Opera, Safari]",
     "RECORDING": "Gravação",
-    "INVALID_LICENSE": "Licença inválida",
+    "INVALID_LICENSE": "Licença Inválida",
     "BROWSER": "Navegador",
-    "OS": "Sistema operacional",
+    "OS": "Sistema Operacional",
     "REQUIREMENTS": "Requisitos",
     "LICENSE": "Licença",
     "HTTPS": "HTTPS",
     "REGISTERED": "Registrado",
     "NOT_REGISTERED": "Não registrado",
     "WEBRTC_LICENSE_NOT_ENABELD": "A licença WebRTC não está ativada",
-    "ATTENDED_TRANSFER": "Transferência assistida",
+    "ATTENDED_TRANSFER": "Transferência Assistida",
     "TRANSFER": "Transferir",
     "TARGET": "Objetivo",
     "CANCEL": "Cancelar",
     "FILENAME": "Nome do arquivo",
     "STATUS": "Status",
     "ACTIONS": "Ações",
-    "SPEAKER": "Alto-falante",
-    "RINGING": "Toque de celular",
+    "SPEAKER": "Saída de Som",
+    "RINGING": "Tom de Toque",
     "MICROPHONE": "Microfone",
     "PROFILE": "Perfil",
     "SERVICES": "Serviços",
     "AUDIO": "Áudio",
-    "FULLNAME": "Nome completo",
+    "FULLNAME": "Nome Completo",
     "NAME": "Nome",
     "INTERNAL": "Interno",
-    "RINGINGDEVICE": "Dispositivo de toque",
-    "SPEAKERDEVICE": "Dispositivo de alto-falante",
-    "MICROPHONEDEVICE": "Dispositivo de microfone",
-    "CHANGEPASSWORD": "Mudar senha",
+    "RINGINGDEVICE": "Saída de Toque",
+    "SPEAKERDEVICE": "Saída de Som",
+    "MICROPHONEDEVICE": "Microfone",
+    "CHANGEPASSWORD": "Alterar Senha",
     "SETTINGS": "Configurações",
-    "AUTOANSWER": "Resposta automática",
-    "TOGGLE_NAVIGATION": "Alternar de navegação",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Alternar modo de navegação",
+    "AUTOANSWER": "Atendimento Automático",
+    "TOGGLE_NAVIGATION": "Alternar de Navegação",
+    "TOGGLE_NAVIGATION_FOLD": "Separador de Altenar de Navegação",
+    "TOGGLE_NAVIGATION_MODE": "Modo de Alternar de Navegação",
     "SEARCH": "Procurar",
     "USER_SETTINGS": "Configurações do usuário",
     "TOGGLE_QUICK_PANEL": "Alternar painel rápido",
     "RUSSIAN": "Russo",
     "GERMAN": "Alemão",
     "JAPANESE": "Japonês",
-    "CHINESESIMPLIFIED": "Chinês simplificado",
-    "CHINESETRADITIONAL": "Chinês tradicional",
-    "DUTCH": "Dutch",
+    "CHINESESIMPLIFIED": "Chinês Simplificado",
+    "CHINESETRADITIONAL": "Chinês Tradicional",
+    "DUTCH": "Holandês",
     "FINNISH": "Finlandês",
-    "DANISH": "Danish",
+    "DANISH": "Dinamarquês",
     "PORTUGUESE": "Português(PT)",
     "NORWEGIAN": "Norueguês",
     "HINDI": "Hindi",
     "PERSIAN": "Persa",
     "LATVIAN": "Latvian",
     "POLISH": "Polonês",
-    "LOGIN_TIME": "Hora do login",
-    "PAUSE_TIME": "Tempo de pausa",
+    "LOGIN_TIME": "Hora do Login",
+    "PAUSE_TIME": "Tempo de Pausa",
     "PREVIEW": "Visualizar",
-    "CONFIRM_PASSWORD": "Confirme a senha",
-    "NEW_PASSWORD": "Nova senha",
-    "OLD_PASSWORD": "Senha antiga",
+    "CONFIRM_PASSWORD": "Confirme a Senha",
+    "NEW_PASSWORD": "Nova Senha",
+    "OLD_PASSWORD": "Senha Antiga",
     "SAVE": "Salvar",
-    "TRIAL_VERSION": "Versão de teste",
+    "TRIAL_VERSION": "Versão de Teste",
     "PAUSE": "Pausa",
-    "RESUME": "Fim de pausa",
+    "RESUME": "Fim de Pausa",
     "NO_PAUSES_AVAILABLE": "Não há pausas disponíveis",
     "ERRORS": {
       "FIELD_REQUIRED": "Campo obrigatório",
     "CZECH": "Tcheco",
     "ESTONIAN": "Estonian",
     "CONFERENCE": "Conferência com 2 sessões ativas",
-    "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se ativado)",
-    "CHANGE_LANGUAGE_TITLE": "Mudar idioma",
+    "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se habilitado)",
+    "CHANGE_LANGUAGE_TITLE": "Alterar idioma",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Nenhum dispositivo de áudio disponível",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nenhum microfone disponível",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhum alto-falante disponível",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhuma saída de som disponível",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "LITHUANIAN": "Lituano",
     "NOTIFICATION_TITLE": "Nova notificação de {{sender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
-    "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos",
+    "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nLogins simultâneos não são permitidos",
     "LOGOUT": "Sair",
-    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos",
+    "SESSION_TIMEOUT": "A sessão será encerrada automaticamente após 60 segundos",
     "PHONE2CALL": "Telefone para ligar",
-    "HUNGARIAN": "húngaro",
-    "AUTOANSWER_NOTIFICATIONS": "Notificações de resposta automática",
+    "HUNGARIAN": "Húngaro",
+    "AUTOANSWER_NOTIFICATIONS": "Atendimento Automático de Notificações",
     "CHANNEL": "Canal",
     "CHANNELS": "Canais",
-    "CHAT": "Bate-papo",
-    "DELAY": "Atraso de resposta automática [s]",
-    "EMAIL": "E-mail",
+    "CHAT": "Chat",
+    "DELAY": "Delay no atendimento automático [sef]",
+    "EMAIL": "Email",
     "FAX": "Fax",
     "NOTIFICATIONS": "Atendimento automático ativado",
     "NUM_NOTIFICATIONS": "Notificações",
-    "OPENCHANNEL": "Canal aberto",
+    "OPENCHANNEL": "Open Channel",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
-    "BOSNIAN": "bósnio",
-    "ICELANDIC": "ilhéu"
+    "NO_AUTOANSWER_CONFIGURED": "Nenhum atendimento automático foi configurada para os canais",
+    "BOSNIAN": "Bósnio",
+    "ICELANDIC": "Islandês",
+    "WAITINGQUEUECALLS": "Esperando chamadas em fila"
   }
 }
index 7a5cb84..bf64d9b 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
     "BOSNIAN": "bósnio",
-    "ICELANDIC": "ilhéu"
+    "ICELANDIC": "ilhéu",
+    "WAITINGQUEUECALLS": "Esperando chamadas em fila"
   }
 }
index ea13d42..5670c7b 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик",
     "BOSNIAN": "боснийский",
-    "ICELANDIC": "островной"
+    "ICELANDIC": "островной",
+    "WAITINGQUEUECALLS": "Ожидание вызовов в очереди"
   }
 }
index dffab42..7f5be8b 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler",
     "BOSNIAN": "bosniska",
-    "ICELANDIC": "Islandic"
+    "ICELANDIC": "Islandic",
+    "WAITINGQUEUECALLS": "Väntande kösamtal"
   }
 }
index d0e603c..a8faad3 100644 (file)
     "WHATSAPP": "Naber",
     "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok",
     "BOSNIAN": "Boşnakça",
-    "ICELANDIC": "adalı"
+    "ICELANDIC": "adalı",
+    "WAITINGQUEUECALLS": "Bekleyen aramalar"
   }
 }
index 34075b2..8effc23 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答",
     "BOSNIAN": "波斯尼亚语",
-    "ICELANDIC": "岛国"
+    "ICELANDIC": "岛国",
+    "WAITINGQUEUECALLS": "等待队列呼叫"
   }
 }
index d301196..d598830 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答",
     "BOSNIAN": "波斯尼亞語",
-    "ICELANDIC": "島國"
+    "ICELANDIC": "島國",
+    "WAITINGQUEUECALLS": "等待隊列呼叫"
   }
 }
index 6ccd225..78073b3 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.ed3116c7.js"></script>
+  <script src="scripts/app.41cc58a1.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.ed3116c7.js
rename to public/scripts/app.41cc58a1.js
index a43b326..06288dd 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,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",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId: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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,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,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",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-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,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",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-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,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",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",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,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",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,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,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",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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,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",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",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,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",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,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(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,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(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(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 i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),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})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},STATUS_STYLES:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"}}}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"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,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.export.name=l.export.name.replace(/\//g,"_"),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,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"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(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,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,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,note",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,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,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_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,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,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,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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=t(function(){},999),b=n.params.direction||"inbound",A=m&&1==m.count?m.rows[0].crudPermissions:null;function E(){d.on("user:save",T),d.on("user:update",I),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("userVoiceQueue:save",w),d.on("userVoiceQueue:remove",R),d.on("userChatQueue:save",w),d.on("userChatQueue:remove",R),d.on("userSmsQueue:save",w),d.on("userSmsQueue:remove",R),d.on("userMailQueue:save",w),d.on("userMailQueue:remove",R),d.on("userFaxQueue:save",w),d.on("userFaxQueue:remove",R),d.on("userOpenchannelQueue:save",w),d.on("userOpenchannelQueue:remove",R),d.on("userWhatsappQueue:save",w),d.on("userWhatsappQueue:remove",R),h.agents.rows.forEach(function(e){e.globalStatusDisplayValue=g.getAgentStatusDisplayValue(e)})}function y(){return h.query.offset=(h.query.page-1)*h.query.limit,l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,E()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function S(e,n){if(n)return h.agents.count>h.agents.rows.length?y():(a=n,i=_.remove(h.agents.rows,["id",a]),void(h.agents.count-=i.length));if(h.query.sort.includes("globalStatus")&&(!h.query.globalStatusFilter||"busy"===h.query.globalStatusFilter)){var t="-"===h.query.sort[0]?"DESC":"ASC";if(!1===e)return y();if(!0===e)h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t);else{if(h.agents.count>h.agents.rows.length)return y();h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t)}}var a,i}function T(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=g.getAgentStatusDisplayValue(n))}function I(e){var n,t,a=g.getUserUpdateEventOrigin(e);try{switch(a){case"login":!function(e){var n=!1;if(h.query.globalStatusFilter?e.loginInPause&&"pause"===h.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==h.query.globalStatusFilter||(n=!0):n=!0,n)y()}(e);break;case"logout":!function(e){if(0!==h.agents.count){var n=_.find(h.agents.rows,["id",e.id]);if(!n)return y();S(!1,n.id)}}(e);break;case"pause":n=e,(t=_.find(h.agents.rows,["id",n.id]))?(_.merge(t,n),t.globalStatus=g.getAgentStatus(t),g.checkEveryChannelPauseStatus(t),h.query.globalStatusFilter&&t.globalStatus!==h.query.globalStatusFilter?S(!1,t.id):t.globalStatusDisplayValue=g.getAgentStatusDisplayValue(t)):y()}}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function O(e){try{var n=_.find(h.agents.rows,["id",e.id]);S(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),S()):S(!1):"busy"!==h.query.globalStatusFilter||n||y()}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function C(e){if("ATTENDED"!==e.transfer){var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===h.query.globalStatusFilter?S(!1,e.id):S())}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&y()}}function R(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&S(!1,e.UserId)}}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.crudPermissions=u.parseCrudPermissions(A),h.utcOffset=v,h.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:h.channel},h.$onInit=E,h.getAgents=y,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:b,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=function(){if(!(h.queues&&0<h.queues.count)){var e={type:b,fields:"id,name",sort:"name",nolimit:"true"},n=h.channel+"Queue";return l.getResourcesByRole(h.currentUser,n,e,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}},h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},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"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!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,note",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,note:e.note||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.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.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,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_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.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","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function Q(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):M(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-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/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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\',false)" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-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/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      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <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/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_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/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/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/realtime/views/queue-calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th ng-if="vm.voiceQueueType === \'inbound\'" md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                      <td md-cell>Dropped Calls Timeout</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                    </tr>\n                    <tr md-row>\n                      <td md-cell>Dropped Calls Caller Exit</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                      </td>\n                    </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<md-menu>\n  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n  </md-button>\n  <md-menu-content width="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n        Edit Queue\n      </md-button>\n    </md-menu-item>\n    <md-menu-item ng-if="queue.dialMethod === \'predictive\'">\n      <md-button ng-click="vm.showPredictiveInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n        Show Predictive Info\n      </md-button>\n    </md-menu-item>\n    <md-menu-item>\n      <md-button ng-click="vm.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'VOICE.NAME' | translate }}</th>\n  <th md-column>{{ 'VOICE.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'VOICE.PAUSED' | translate }}</th>\n  <th md-column>{{ 'VOICE.TALKING' | translate }}</th>\n  <th md-column>{{ 'VOICE.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'MOTIONDIALER.NAME' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.PAUSED' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TALKING' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.ORIGINATED_TEXT' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.MESSAGE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.METHOD' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TRUNK' | translate }}</th>\n  <th md-column md-order-by=\"dialActive\">{{ 'MOTIONDIALER.ACTIVE' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\n    <div layout="row" layout-align="center center">\n      <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\n    <div layout="row" layout-align="center center">\n      <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking + queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking - queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\' + queue.message | translate) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | translate) : \'--\')}}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n  </td>\n  <td md-cell>\n'+"    <md-icon md-colors=\"{color: {{queue.dialActive ? '\\'green\\'' : '\\'red\\''}}}\" md-font-icon=\"{{queue.dialActive ? 'icon-check' : 'icon-close'}}\"></md-icon>\n  </td>\n\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="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_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/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/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 && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count badge-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n    \n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    <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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,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",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,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(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,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(!0)},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l(!0);break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(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 i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),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})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},STATUS_STYLES:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"}}}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"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,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.export.name=l.export.name.replace(/\//g,"_"),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,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,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,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=A,g.getFinals=E,g.getHistories=y,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,b("hoppers")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,b("finals")).$promise)}function y(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=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]):_.findLast(h.interaction.Messages,["secret",!1]),E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];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.interaction.UserId!==h.user.id&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};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||o.from))if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",i.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",i.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"name",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:u.campaigns.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.campaigns=e||{count:0,rows:[]},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.queues=e||{count:0,rows:[]},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=t(function(){},999),b=n.params.direction||"inbound",A=m&&1==m.count?m.rows[0].crudPermissions:null;function E(){d.on("user:save",T),d.on("user:update",I),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("userVoiceQueue:save",w),d.on("userVoiceQueue:remove",R),d.on("userChatQueue:save",w),d.on("userChatQueue:remove",R),d.on("userSmsQueue:save",w),d.on("userSmsQueue:remove",R),d.on("userMailQueue:save",w),d.on("userMailQueue:remove",R),d.on("userFaxQueue:save",w),d.on("userFaxQueue:remove",R),d.on("userOpenchannelQueue:save",w),d.on("userOpenchannelQueue:remove",R),d.on("userWhatsappQueue:save",w),d.on("userWhatsappQueue:remove",R),h.agents.rows.forEach(function(e){e.globalStatusDisplayValue=g.getAgentStatusDisplayValue(e)})}function y(){return h.query.offset=(h.query.page-1)*h.query.limit,l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,E()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function S(e,n){if(n)return h.agents.count>h.agents.rows.length?y():(a=n,i=_.remove(h.agents.rows,["id",a]),void(h.agents.count-=i.length));if(h.query.sort.includes("globalStatus")&&(!h.query.globalStatusFilter||"busy"===h.query.globalStatusFilter)){var t="-"===h.query.sort[0]?"DESC":"ASC";if(!1===e)return y();if(!0===e)h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t);else{if(h.agents.count>h.agents.rows.length)return y();h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t)}}var a,i}function T(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=g.getAgentStatusDisplayValue(n))}function I(e){var n,t,a=g.getUserUpdateEventOrigin(e);try{switch(a){case"login":!function(e){var n=!1;if(h.query.globalStatusFilter?e.loginInPause&&"pause"===h.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==h.query.globalStatusFilter||(n=!0):n=!0,n)y()}(e);break;case"logout":!function(e){if(0!==h.agents.count){var n=_.find(h.agents.rows,["id",e.id]);if(!n)return y();S(!1,n.id)}}(e);break;case"pause":n=e,(t=_.find(h.agents.rows,["id",n.id]))?(_.merge(t,n),t.globalStatus=g.getAgentStatus(t),g.checkEveryChannelPauseStatus(t),h.query.globalStatusFilter&&t.globalStatus!==h.query.globalStatusFilter?S(!1,t.id):t.globalStatusDisplayValue=g.getAgentStatusDisplayValue(t)):y()}}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function O(e){try{var n=_.find(h.agents.rows,["id",e.id]);S(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),S()):S(!1):"busy"!==h.query.globalStatusFilter||n||y()}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function C(e){if("ATTENDED"!==e.transfer){var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===h.query.globalStatusFilter?S(!1,e.id):S())}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&y()}}function R(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&S(!1,e.UserId)}}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.crudPermissions=u.parseCrudPermissions(A),h.utcOffset=v,h.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:h.channel},h.$onInit=E,h.getAgents=y,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:b,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=function(){if(!(h.queues&&0<h.queues.count)){var e={type:b,fields:"id,name",sort:"name",nolimit:"true"},n=h.channel+"Queue";return l.getResourcesByRole(h.currentUser,n,e,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}},h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},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"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(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,note:e.note||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.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.queues=e||{count:0,rows:[]},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?e.rows:{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function Q(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):M(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i=""!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar(true)" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-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 && !vm.config.crudPermissions.readOnly" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item ng-if="vm.config.crudPermissions.canEdit === true">\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.config.crudPermissions.canDelete === true">\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, $index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.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/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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\',false)" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-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\' && agent.status !== \'unavailable\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\' && agent.status !== \'unavailable\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts.count > 0">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, account)" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n        <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts.count > 0">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, account)" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, account)" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column md-order-by="name" class="bl">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="campaign in vm.campaigns.rows">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.campaigns.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="queue in vm.queues.rows">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.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/realtime/views/queue-calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th ng-if="vm.voiceQueueType === \'inbound\'" md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                      <td md-cell>Dropped Calls Timeout</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                    </tr>\n                    <tr md-row>\n                      <td md-cell>Dropped Calls Caller Exit</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                      </td>\n                    </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<md-menu>\n  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n  </md-button>\n  <md-menu-content width="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n        Edit Queue\n      </md-button>\n    </md-menu-item>\n    <md-menu-item ng-if="queue.dialMethod === \'predictive\'">\n      <md-button ng-click="vm.showPredictiveInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n        Show Predictive Info\n      </md-button>\n    </md-menu-item>\n    <md-menu-item>\n      <md-button ng-click="vm.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'VOICE.NAME' | translate }}</th>\n  <th md-column>{{ 'VOICE.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'VOICE.PAUSED' | translate }}</th>\n  <th md-column>{{ 'VOICE.TALKING' | translate }}</th>\n  <th md-column>{{ 'VOICE.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'MOTIONDIALER.NAME' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.PAUSED' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TALKING' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.ORIGINATED_TEXT' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.MESSAGE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.METHOD' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TRUNK' | translate }}</th>\n  <th md-column md-order-by=\"dialActive\">{{ 'MOTIONDIALER.ACTIVE' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\n    <div layout="row" layout-align="center center">\n      <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\n    <div layout="row" layout-align="center center">\n      <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking + queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking - queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\' + queue.message | translate) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | translate) : \'--\')}}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n  </td>\n  <td md-cell>\n'+"    <md-icon md-colors=\"{color: {{queue.dialActive ? '\\'green\\'' : '\\'red\\''}}}\" md-font-icon=\"{{queue.dialActive ? 'icon-check' : 'icon-close'}}\"></md-icon>\n  </td>\n\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="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_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="queue in vm.queues.rows">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count badge-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n    \n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index 6db8b59..e3e98ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ccc=['STRING','integration','motionbar','jscripty','urlForward','browser','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]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize'];(function(_0x20860a,_0x1d31ac){var _0x33dcf5=function(_0x49dbde){while(--_0x49dbde){_0x20860a['push'](_0x20860a['shift']());}};_0x33dcf5(++_0x1d31ac);}(_0x8ccc,0x16f));var _0xc8cc=function(_0x4c13ff,_0x475dc1){_0x4c13ff=_0x4c13ff-0x0;var _0x6538d1=_0x8ccc[_0x4c13ff];return _0x6538d1;};'use strict';var Sequelize=require(_0xc8cc('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x3bf38c){return this['getDataValue']('action');}},'action':{'type':Sequelize[_0xc8cc('0x1')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xc8cc('0x2'),_0xc8cc('0x3'),_0xc8cc('0x4'),_0xc8cc('0x5'),_0xc8cc('0x6'),'bot','script']],'msg':_0xc8cc('0x7')}},'comment':_0xc8cc('0x7')},'data1':{'type':Sequelize[_0xc8cc('0x1')](0x1000),'comment':_0xc8cc('0x8')},'data2':{'type':Sequelize[_0xc8cc('0x1')](0x1000),'comment':_0xc8cc('0x9')},'data3':{'type':Sequelize[_0xc8cc('0x1')](0x1000),'comment':_0xc8cc('0xa')},'data4':{'type':Sequelize[_0xc8cc('0x1')](0x1000),'comments':_0xc8cc('0xb')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0xc8cc('0xc')},'data6':{'type':Sequelize['STRING'],'comments':_0xc8cc('0xd')},'data7':{'type':Sequelize[_0xc8cc('0xe')],'comments':_0xc8cc('0xf')}};
\ No newline at end of file
+var _0xfafd=['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]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'];(function(_0x207329,_0x3acacf){var _0x1d4eb6=function(_0x4b12ca){while(--_0x4b12ca){_0x207329['push'](_0x207329['shift']());}};_0x1d4eb6(++_0x3acacf);}(_0xfafd,0xcc));var _0xdfaf=function(_0x2940f4,_0x3f3945){_0x2940f4=_0x2940f4-0x0;var _0x497e2f=_0xfafd[_0x2940f4];return _0x497e2f;};'use strict';var Sequelize=require('sequelize');module[_0xdfaf('0x0')]={'name':{'type':Sequelize[_0xdfaf('0x1')],'get':function(_0x199444){return this[_0xdfaf('0x2')](_0xdfaf('0x3'));}},'action':{'type':Sequelize[_0xdfaf('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0xdfaf('0x5'),_0xdfaf('0x6'),_0xdfaf('0x7'),_0xdfaf('0x8'),_0xdfaf('0x9'),_0xdfaf('0xa'),_0xdfaf('0xb'),_0xdfaf('0xc')]],'msg':_0xdfaf('0xd')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0xdfaf('0x4')](0x1000),'comment':_0xdfaf('0xe')},'data2':{'type':Sequelize[_0xdfaf('0x4')](0x1000),'comment':_0xdfaf('0xf')},'data3':{'type':Sequelize[_0xdfaf('0x4')](0x1000),'comment':_0xdfaf('0x10')},'data4':{'type':Sequelize[_0xdfaf('0x4')](0x1000),'comments':_0xdfaf('0x11')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0xdfaf('0x12')},'data6':{'type':Sequelize[_0xdfaf('0x4')],'comments':_0xdfaf('0x13')},'data7':{'type':Sequelize[_0xdfaf('0x14')],'comments':_0xdfaf('0x15')}};
\ No newline at end of file
index 4ab9412..ec3c1d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6ef=['save','then','destroy','error','stack','send','update','body','find','params','catch','Action','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xd6ef,0x16c));var _0xfd6e=function(_0x16ccac,_0x58e14c){_0x16ccac=_0x16ccac-0x0;var _0x5323aa=_0xd6ef[_0x16ccac];return _0x5323aa;};'use strict';var emlformat=require(_0xfd6e('0x0'));var rimraf=require(_0xfd6e('0x1'));var zipdir=require(_0xfd6e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xfd6e('0x3'));var BPromise=require(_0xfd6e('0x4'));var Mustache=require('mustache');var util=require(_0xfd6e('0x5'));var path=require(_0xfd6e('0x6'));var sox=require('sox');var csv=require(_0xfd6e('0x7'));var ejs=require(_0xfd6e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd6e('0x9'));var squel=require(_0xfd6e('0xa'));var crypto=require(_0xfd6e('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xfd6e('0xc'));var toCsv=require(_0xfd6e('0x7'));var querystring=require(_0xfd6e('0xd'));var Papa=require('papaparse');var Redis=require(_0xfd6e('0xe'));var authService=require(_0xfd6e('0xf'));var qs=require(_0xfd6e('0x10'));var as=require(_0xfd6e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfd6e('0x12'))('api');var utils=require(_0xfd6e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfd6e('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x148ebd,_0x501f3c){_0x501f3c=_0x501f3c||0xcc;return function(_0x228ea7){if(_0x228ea7){return _0x148ebd['sendStatus'](_0x501f3c);}return _0x148ebd['status'](_0x501f3c)[_0xfd6e('0x15')]();};}function respondWithResult(_0x5a7ba0,_0x278f93){_0x278f93=_0x278f93||0xc8;return function(_0x3cd9de){if(_0x3cd9de){return _0x5a7ba0[_0xfd6e('0x16')](_0x278f93)[_0xfd6e('0x17')](_0x3cd9de);}};}function respondWithFilteredResult(_0xa4f054,_0x231a00){return function(_0x4f1f83){if(_0x4f1f83){var _0x263ea3=typeof _0x231a00['offset']===_0xfd6e('0x18')&&typeof _0x231a00[_0xfd6e('0x19')]==='undefined';var _0x40a974=_0x4f1f83[_0xfd6e('0x1a')];var _0x56ccf5=_0x263ea3?0x0:_0x231a00['offset'];var _0x4784f8=_0x263ea3?_0x4f1f83['count']:_0x231a00[_0xfd6e('0x1b')]+_0x231a00[_0xfd6e('0x19')];var _0x11da08;if(_0x4784f8>=_0x40a974){_0x4784f8=_0x40a974;_0x11da08=0xc8;}else{_0x11da08=0xce;}_0xa4f054[_0xfd6e('0x16')](_0x11da08);return _0xa4f054[_0xfd6e('0x1c')](_0xfd6e('0x1d'),_0x56ccf5+'-'+_0x4784f8+'/'+_0x40a974)[_0xfd6e('0x17')](_0x4f1f83);}return null;};}function patchUpdates(_0x3a83ee){return function(_0x4914f5){try{jsonpatch[_0xfd6e('0x1e')](_0x4914f5,_0x3a83ee,!![]);}catch(_0x1d290a){return BPromise[_0xfd6e('0x1f')](_0x1d290a);}return _0x4914f5[_0xfd6e('0x20')]();};}function saveUpdates(_0x145ab6,_0xf1aa9b){return function(_0x342140){if(_0x342140){return _0x342140['update'](_0x145ab6)[_0xfd6e('0x21')](function(_0x34898a){return _0x34898a;});}return null;};}function removeEntity(_0x70a325,_0x45d812){return function(_0x3809f7){if(_0x3809f7){return _0x3809f7[_0xfd6e('0x22')]()[_0xfd6e('0x21')](function(){_0x70a325[_0xfd6e('0x16')](0xcc)[_0xfd6e('0x15')]();});}};}function handleEntityNotFound(_0x511a26,_0x4f3dba){return function(_0x1d3da2){if(!_0x1d3da2){_0x511a26['sendStatus'](0x194);}return _0x1d3da2;};}function handleError(_0x2d3141,_0x338b2a){_0x338b2a=_0x338b2a||0x1f4;return function(_0x26cdf4){logger[_0xfd6e('0x23')](_0x26cdf4[_0xfd6e('0x24')]);if(_0x26cdf4['name']){delete _0x26cdf4['name'];}_0x2d3141['status'](_0x338b2a)[_0xfd6e('0x25')](_0x26cdf4);};}exports[_0xfd6e('0x26')]=function(_0xd4f89,_0x21a445){if(_0xd4f89[_0xfd6e('0x27')]['id']){delete _0xd4f89[_0xfd6e('0x27')]['id'];}return db['Action'][_0xfd6e('0x28')]({'where':{'id':_0xd4f89[_0xfd6e('0x29')]['id']}})[_0xfd6e('0x21')](handleEntityNotFound(_0x21a445,null))[_0xfd6e('0x21')](saveUpdates(_0xd4f89['body'],null))[_0xfd6e('0x21')](respondWithResult(_0x21a445,null))[_0xfd6e('0x2a')](handleError(_0x21a445,null));};exports[_0xfd6e('0x22')]=function(_0x2a6f9d,_0x4f6a4a){return db[_0xfd6e('0x2b')][_0xfd6e('0x28')]({'where':{'id':_0x2a6f9d[_0xfd6e('0x29')]['id']}})[_0xfd6e('0x21')](handleEntityNotFound(_0x4f6a4a,null))[_0xfd6e('0x21')](removeEntity(_0x4f6a4a,null))[_0xfd6e('0x2a')](handleError(_0x4f6a4a,null));};
\ No newline at end of file
+var _0x4fb2=['update','then','destroy','end','error','stack','name','send','body','Action','params','catch','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x409122,_0x1045f0){var _0x272667=function(_0x38f21f){while(--_0x38f21f){_0x409122['push'](_0x409122['shift']());}};_0x272667(++_0x1045f0);}(_0x4fb2,0xdd));var _0x24fb=function(_0x362f1e,_0x36f5bf){_0x362f1e=_0x362f1e-0x0;var _0x26b5d8=_0x4fb2[_0x362f1e];return _0x26b5d8;};'use strict';var emlformat=require(_0x24fb('0x0'));var rimraf=require(_0x24fb('0x1'));var zipdir=require(_0x24fb('0x2'));var jsonpatch=require(_0x24fb('0x3'));var rp=require(_0x24fb('0x4'));var moment=require(_0x24fb('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x24fb('0x6'));var util=require(_0x24fb('0x7'));var path=require(_0x24fb('0x8'));var sox=require(_0x24fb('0x9'));var csv=require('to-csv');var ejs=require(_0x24fb('0xa'));var fs=require('fs');var fs_extra=require(_0x24fb('0xb'));var _=require(_0x24fb('0xc'));var squel=require(_0x24fb('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x24fb('0xe'));var toCsv=require(_0x24fb('0xf'));var querystring=require(_0x24fb('0x10'));var Papa=require(_0x24fb('0x11'));var Redis=require(_0x24fb('0x12'));var authService=require(_0x24fb('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x24fb('0x14'));var hardwareService=require(_0x24fb('0x15'));var logger=require(_0x24fb('0x16'))('api');var utils=require(_0x24fb('0x17'));var config=require(_0x24fb('0x18'));var licenseUtil=require(_0x24fb('0x19'));var db=require(_0x24fb('0x1a'))['db'];function respondWithStatusCode(_0x11d56b,_0x1eef54){_0x1eef54=_0x1eef54||0xcc;return function(_0x359da9){if(_0x359da9){return _0x11d56b[_0x24fb('0x1b')](_0x1eef54);}return _0x11d56b[_0x24fb('0x1c')](_0x1eef54)['end']();};}function respondWithResult(_0x454745,_0xf5485){_0xf5485=_0xf5485||0xc8;return function(_0x17f625){if(_0x17f625){return _0x454745[_0x24fb('0x1c')](_0xf5485)[_0x24fb('0x1d')](_0x17f625);}};}function respondWithFilteredResult(_0x463c24,_0x29412d){return function(_0x3f088e){if(_0x3f088e){var _0x5039e0=typeof _0x29412d[_0x24fb('0x1e')]===_0x24fb('0x1f')&&typeof _0x29412d[_0x24fb('0x20')]===_0x24fb('0x1f');var _0x34ab9a=_0x3f088e[_0x24fb('0x21')];var _0x543fce=_0x5039e0?0x0:_0x29412d[_0x24fb('0x1e')];var _0xad32df=_0x5039e0?_0x3f088e['count']:_0x29412d[_0x24fb('0x1e')]+_0x29412d['limit'];var _0x45bad3;if(_0xad32df>=_0x34ab9a){_0xad32df=_0x34ab9a;_0x45bad3=0xc8;}else{_0x45bad3=0xce;}_0x463c24[_0x24fb('0x1c')](_0x45bad3);return _0x463c24[_0x24fb('0x22')](_0x24fb('0x23'),_0x543fce+'-'+_0xad32df+'/'+_0x34ab9a)[_0x24fb('0x1d')](_0x3f088e);}return null;};}function patchUpdates(_0x2f89f8){return function(_0x268e40){try{jsonpatch[_0x24fb('0x24')](_0x268e40,_0x2f89f8,!![]);}catch(_0x5a5601){return BPromise[_0x24fb('0x25')](_0x5a5601);}return _0x268e40[_0x24fb('0x26')]();};}function saveUpdates(_0x839404,_0x5867f5){return function(_0xf2ee33){if(_0xf2ee33){return _0xf2ee33[_0x24fb('0x27')](_0x839404)[_0x24fb('0x28')](function(_0x1727e5){return _0x1727e5;});}return null;};}function removeEntity(_0x40076f,_0x5b9290){return function(_0x35f448){if(_0x35f448){return _0x35f448[_0x24fb('0x29')]()[_0x24fb('0x28')](function(){_0x40076f['status'](0xcc)[_0x24fb('0x2a')]();});}};}function handleEntityNotFound(_0x2160de,_0xc27cd1){return function(_0x966368){if(!_0x966368){_0x2160de[_0x24fb('0x1b')](0x194);}return _0x966368;};}function handleError(_0x488033,_0x461d42){_0x461d42=_0x461d42||0x1f4;return function(_0x1034f1){logger[_0x24fb('0x2b')](_0x1034f1[_0x24fb('0x2c')]);if(_0x1034f1[_0x24fb('0x2d')]){delete _0x1034f1[_0x24fb('0x2d')];}_0x488033[_0x24fb('0x1c')](_0x461d42)[_0x24fb('0x2e')](_0x1034f1);};}exports[_0x24fb('0x27')]=function(_0xa264e7,_0x124031){if(_0xa264e7[_0x24fb('0x2f')]['id']){delete _0xa264e7[_0x24fb('0x2f')]['id'];}return db[_0x24fb('0x30')]['find']({'where':{'id':_0xa264e7[_0x24fb('0x31')]['id']}})[_0x24fb('0x28')](handleEntityNotFound(_0x124031,null))[_0x24fb('0x28')](saveUpdates(_0xa264e7[_0x24fb('0x2f')],null))[_0x24fb('0x28')](respondWithResult(_0x124031,null))[_0x24fb('0x32')](handleError(_0x124031,null));};exports['destroy']=function(_0x5eab45,_0x599452){return db[_0x24fb('0x30')][_0x24fb('0x33')]({'where':{'id':_0x5eab45[_0x24fb('0x31')]['id']}})[_0x24fb('0x28')](handleEntityNotFound(_0x599452,null))['then'](removeEntity(_0x599452,null))[_0x24fb('0x32')](handleError(_0x599452,null));};
\ No newline at end of file
index ee2acce..be0af55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe39a=['define','Action','tools_actions','util','api','moment','bluebird','path','rimraf','../../config/environment','exports'];(function(_0x3fe916,_0x33e829){var _0x450ca7=function(_0x3248a5){while(--_0x3248a5){_0x3fe916['push'](_0x3fe916['shift']());}};_0x450ca7(++_0x33e829);}(_0xe39a,0xb3));var _0xae39=function(_0x4af177,_0x1dd882){_0x4af177=_0x4af177-0x0;var _0x6a65bc=_0xe39a[_0x4af177];return _0x6a65bc;};'use strict';var _=require('lodash');var util=require(_0xae39('0x0'));var logger=require('../../config/logger')(_0xae39('0x1'));var moment=require(_0xae39('0x2'));var BPromise=require(_0xae39('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xae39('0x4'));var rimraf=require(_0xae39('0x5'));var config=require(_0xae39('0x6'));var attributes=require('./action.attributes');module[_0xae39('0x7')]=function(_0x9e6c75,_0x1401d9){return _0x9e6c75[_0xae39('0x8')](_0xae39('0x9'),attributes,{'tableName':_0xae39('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf544=['moment','request-promise','path','rimraf','../../config/environment','./action.attributes','define','Action','tools_actions','lodash','../../config/logger','api'];(function(_0xa5a10,_0x12d56c){var _0x162259=function(_0x344028){while(--_0x344028){_0xa5a10['push'](_0xa5a10['shift']());}};_0x162259(++_0x12d56c);}(_0xf544,0x99));var _0x4f54=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf544[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x4f54('0x0'));var util=require('util');var logger=require(_0x4f54('0x1'))(_0x4f54('0x2'));var moment=require(_0x4f54('0x3'));var BPromise=require('bluebird');var rp=require(_0x4f54('0x4'));var fs=require('fs');var path=require(_0x4f54('0x5'));var rimraf=require(_0x4f54('0x6'));var config=require(_0x4f54('0x7'));var attributes=require(_0x4f54('0x8'));module['exports']=function(_0x4c1fc7,_0x441975){return _0x4c1fc7[_0x4f54('0x9')](_0x4f54('0xa'),attributes,{'tableName':_0x4f54('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2b04a8..d86e570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x48b0d7,_0x4603e1){var _0x37df63=function(_0x322f0f){while(--_0x322f0f){_0x48b0d7['push'](_0x48b0d7['shift']());}};_0x37df63(++_0x4603e1);}(_0x5fc3,0xa8));var _0x35fc=function(_0x265003,_0xf0f023){_0x265003=_0x265003-0x0;var _0x33c743=_0x5fc3[_0x265003];return _0x33c743;};'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
+var _0x8ef6=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x287742,_0x4bb317){var _0x149fab=function(_0x5bf716){while(--_0x5bf716){_0x287742['push'](_0x287742['shift']());}};_0x149fab(++_0x4bb317);}(_0x8ef6,0xf2));var _0x68ef=function(_0x30aa86,_0x34c230){_0x30aa86=_0x30aa86-0x0;var _0x220527=_0x8ef6[_0x30aa86];return _0x220527;};'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')]('Action,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('Action,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}
\ No newline at end of file
index 5b2c8a0..1da1c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35da=['/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./action.controller'];(function(_0xdbb2db,_0x403988){var _0x1e61aa=function(_0x46dc1a){while(--_0x46dc1a){_0xdbb2db['push'](_0xdbb2db['shift']());}};_0x1e61aa(++_0x403988);}(_0x35da,0xe2));var _0xa35d=function(_0x219026,_0x31051b){_0x219026=_0x219026-0x0;var _0x19a9a1=_0x35da[_0x219026];return _0x19a9a1;};'use strict';var multer=require('multer');var util=require(_0xa35d('0x0'));var path=require(_0xa35d('0x1'));var timeout=require(_0xa35d('0x2'));var express=require(_0xa35d('0x3'));var router=express[_0xa35d('0x4')]();var fs_extra=require(_0xa35d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa35d('0x6'));var config=require('../../config/environment');var controller=require(_0xa35d('0x7'));router['put'](_0xa35d('0x8'),auth['isAuthenticated'](),controller[_0xa35d('0x9')]);router[_0xa35d('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xa35d('0xb')]);module[_0xa35d('0xc')]=router;
\ No newline at end of file
+var _0x9ebc=['update','isAuthenticated','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./action.controller','put','/:id'];(function(_0x369a98,_0x32250c){var _0x29565c=function(_0x1a6973){while(--_0x1a6973){_0x369a98['push'](_0x369a98['shift']());}};_0x29565c(++_0x32250c);}(_0x9ebc,0x155));var _0xc9eb=function(_0x5122cd,_0x111d88){_0x5122cd=_0x5122cd-0x0;var _0x25412e=_0x9ebc[_0x5122cd];return _0x25412e;};'use strict';var multer=require(_0xc9eb('0x0'));var util=require(_0xc9eb('0x1'));var path=require(_0xc9eb('0x2'));var timeout=require(_0xc9eb('0x3'));var express=require(_0xc9eb('0x4'));var router=express[_0xc9eb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc9eb('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc9eb('0x7'));router[_0xc9eb('0x8')](_0xc9eb('0x9'),auth['isAuthenticated'](),controller[_0xc9eb('0xa')]);router['delete']('/:id',auth[_0xc9eb('0xb')](),controller[_0xc9eb('0xc')]);module['exports']=router;
\ No newline at end of file
index 0a7b4ab..82dc8d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['STRING','sequelize','exports'];(function(_0xdf9938,_0x87ba38){var _0x45a124=function(_0x1654af){while(--_0x1654af){_0xdf9938['push'](_0xdf9938['shift']());}};_0x45a124(++_0x87ba38);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc4aa[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xac4a('0x0'));module[_0xac4a('0x1')]={'name':{'type':Sequelize[_0xac4a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xac4a('0x2')]},'parent':{'type':Sequelize[_0xac4a('0x2')]},'table':{'type':Sequelize[_0xac4a('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x46ed=['sequelize','exports','STRING','TEXT'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0x46ed,0x168));var _0xd46e=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x46ed[_0x11005e];return _0x29338f;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd46e('0x2')]},'parent':{'type':Sequelize[_0xd46e('0x2')]},'table':{'type':Sequelize[_0xd46e('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xd46e('0x3')]}};
\ No newline at end of file
index aaf8ab9..c30b07d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x370e=['savename','select','countTable','COUNT(*)','QueryTypes','runReport','GROUP_CONCAT(%s)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','end','sendStatus','error','stack','name','send','index','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','userProfileId','create','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','replace','function','format','orderBy','DESC','joins','parse','foreignTable','foreignKey','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','MIN(%s)','DATE(%s)','IS\x20NULL','IS\x20NOT\x20EMPTY','getFields','AnalyticMetric','groupBy','alias','%s.%s\x20=\x20%s.%s','output','%s-%s.%s','randomstring','generate','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/'];(function(_0x322752,_0x1ab149){var _0x2a6840=function(_0xf31750){while(--_0xf31750){_0x322752['push'](_0x322752['shift']());}};_0x2a6840(++_0x1ab149);}(_0x370e,0xab));var _0xe370=function(_0x17140d,_0x71a00b){_0x17140d=_0x17140d-0x0;var _0x3e0755=_0x370e[_0x17140d];return _0x3e0755;};'use strict';var emlformat=require(_0xe370('0x0'));var rimraf=require(_0xe370('0x1'));var zipdir=require(_0xe370('0x2'));var jsonpatch=require(_0xe370('0x3'));var rp=require(_0xe370('0x4'));var moment=require(_0xe370('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe370('0x6'));var util=require(_0xe370('0x7'));var path=require(_0xe370('0x8'));var sox=require(_0xe370('0x9'));var csv=require(_0xe370('0xa'));var ejs=require(_0xe370('0xb'));var fs=require('fs');var fs_extra=require(_0xe370('0xc'));var _=require(_0xe370('0xd'));var squel=require(_0xe370('0xe'));var crypto=require('crypto');var jsforce=require(_0xe370('0xf'));var deskjs=require(_0xe370('0x10'));var toCsv=require(_0xe370('0xa'));var querystring=require('querystring');var Papa=require(_0xe370('0x11'));var Redis=require(_0xe370('0x12'));var authService=require(_0xe370('0x13'));var qs=require(_0xe370('0x14'));var as=require(_0xe370('0x15'));var hardwareService=require(_0xe370('0x16'));var logger=require(_0xe370('0x17'))(_0xe370('0x18'));var utils=require(_0xe370('0x19'));var config=require(_0xe370('0x1a'));var licenseUtil=require(_0xe370('0x1b'));var db=require(_0xe370('0x1c'))['db'];var dbH=require('../../mysqldb')[_0xe370('0x1d')];function respondWithStatusCode(_0x6cdf8f,_0x1310d4){_0x1310d4=_0x1310d4||0xcc;return function(_0x35f9fb){if(_0x35f9fb){return _0x6cdf8f['sendStatus'](_0x1310d4);}return _0x6cdf8f['status'](_0x1310d4)['end']();};}function respondWithResult(_0x4a22dc,_0x29beeb){_0x29beeb=_0x29beeb||0xc8;return function(_0x45d54c){if(_0x45d54c){return _0x4a22dc[_0xe370('0x1e')](_0x29beeb)[_0xe370('0x1f')](_0x45d54c);}};}function respondWithFilteredResult(_0x7f4a62,_0x31b60f){return function(_0x25745b){if(_0x25745b){var _0x20d25c=typeof _0x31b60f[_0xe370('0x20')]===_0xe370('0x21')&&typeof _0x31b60f[_0xe370('0x22')]===_0xe370('0x21');var _0x18357e=_0x25745b[_0xe370('0x23')];var _0x43384a=_0x20d25c?0x0:_0x31b60f[_0xe370('0x20')];var _0x3ef82c=_0x20d25c?_0x25745b[_0xe370('0x23')]:_0x31b60f['offset']+_0x31b60f['limit'];var _0x790548;if(_0x3ef82c>=_0x18357e){_0x3ef82c=_0x18357e;_0x790548=0xc8;}else{_0x790548=0xce;}_0x7f4a62[_0xe370('0x1e')](_0x790548);return _0x7f4a62[_0xe370('0x24')](_0xe370('0x25'),_0x43384a+'-'+_0x3ef82c+'/'+_0x18357e)[_0xe370('0x1f')](_0x25745b);}return null;};}function patchUpdates(_0x183263){return function(_0x30aa05){try{jsonpatch[_0xe370('0x26')](_0x30aa05,_0x183263,!![]);}catch(_0x2b3421){return BPromise[_0xe370('0x27')](_0x2b3421);}return _0x30aa05[_0xe370('0x28')]();};}function saveUpdates(_0x5546f5,_0x973b84){return function(_0x22ef43){if(_0x22ef43){return _0x22ef43['update'](_0x5546f5)[_0xe370('0x29')](function(_0x550d7f){return _0x550d7f;});}return null;};}function removeEntity(_0x4b5dc7,_0x6e2a4a){return function(_0x2b436e){if(_0x2b436e){return _0x2b436e['destroy']()[_0xe370('0x29')](function(){var _0x41a961=_0x2b436e[_0xe370('0x2a')]({'plain':!![]});var _0x1aedc8='CustomReports';return db[_0xe370('0x2b')][_0xe370('0x2c')]({'where':{'type':_0x1aedc8,'resourceId':_0x41a961['id']}})[_0xe370('0x29')](function(){return _0x2b436e;});})['then'](function(){_0x4b5dc7[_0xe370('0x1e')](0xcc)[_0xe370('0x2d')]();});}};}function handleEntityNotFound(_0x1ff0ac,_0x19e59e){return function(_0x1c49c7){if(!_0x1c49c7){_0x1ff0ac[_0xe370('0x2e')](0x194);}return _0x1c49c7;};}function handleError(_0x4acb39,_0x42b438){_0x42b438=_0x42b438||0x1f4;return function(_0x23e826){logger[_0xe370('0x2f')](_0x23e826[_0xe370('0x30')]);if(_0x23e826[_0xe370('0x31')]){delete _0x23e826[_0xe370('0x31')];}_0x4acb39['status'](_0x42b438)[_0xe370('0x32')](_0x23e826);};}exports[_0xe370('0x33')]=function(_0x5c21c0,_0x211955){var _0x4e3078={},_0x1e3afc={},_0x6300c5={'count':0x0,'rows':[]};var _0x1957ed=_['map'](db[_0xe370('0x34')][_0xe370('0x35')],function(_0x2ae7dc){return{'name':_0x2ae7dc[_0xe370('0x36')],'type':_0x2ae7dc[_0xe370('0x37')][_0xe370('0x38')]};});_0x1e3afc[_0xe370('0x39')]=_[_0xe370('0x3a')](_0x1957ed,_0xe370('0x31'));_0x1e3afc['query']=_['keys'](_0x5c21c0[_0xe370('0x3b')]);_0x1e3afc[_0xe370('0x3c')]=_[_0xe370('0x3d')](_0x1e3afc[_0xe370('0x39')],_0x1e3afc[_0xe370('0x3b')]);_0x4e3078[_0xe370('0x3e')]=_[_0xe370('0x3d')](_0x1e3afc[_0xe370('0x39')],qs[_0xe370('0x3f')](_0x5c21c0['query'][_0xe370('0x3f')]));_0x4e3078[_0xe370('0x3e')]=_0x4e3078[_0xe370('0x3e')][_0xe370('0x40')]?_0x4e3078[_0xe370('0x3e')]:_0x1e3afc[_0xe370('0x39')];if(!_0x5c21c0['query'][_0xe370('0x41')](_0xe370('0x42'))){_0x4e3078[_0xe370('0x22')]=qs[_0xe370('0x22')](_0x5c21c0['query'][_0xe370('0x22')]);_0x4e3078['offset']=qs[_0xe370('0x20')](_0x5c21c0[_0xe370('0x3b')]['offset']);}_0x4e3078[_0xe370('0x43')]=qs[_0xe370('0x44')](_0x5c21c0[_0xe370('0x3b')][_0xe370('0x44')]);_0x4e3078[_0xe370('0x45')]=qs[_0xe370('0x3c')](_['pick'](_0x5c21c0['query'],_0x1e3afc['filters']),_0x1957ed);if(_0x5c21c0[_0xe370('0x3b')]['filter']){_0x4e3078[_0xe370('0x45')]=_[_0xe370('0x46')](_0x4e3078[_0xe370('0x45')],{'$or':_['map'](_0x1957ed,function(_0x23ecf7){if(_0x23ecf7[_0xe370('0x37')]!=='VIRTUAL'){var _0x3e46db={};_0x3e46db[_0x23ecf7[_0xe370('0x31')]]={'$like':'%'+_0x5c21c0[_0xe370('0x3b')]['filter']+'%'};return _0x3e46db;}})});}_0x4e3078=_[_0xe370('0x46')]({},_0x4e3078,_0x5c21c0[_0xe370('0x47')]);var _0x3a5823={'where':_0x4e3078['where']};return db[_0xe370('0x34')][_0xe370('0x23')](_0x3a5823)[_0xe370('0x29')](function(_0x1c3f51){_0x6300c5['count']=_0x1c3f51;if(_0x5c21c0[_0xe370('0x3b')][_0xe370('0x48')]){_0x4e3078[_0xe370('0x49')]=[{'all':!![]}];}return db[_0xe370('0x34')][_0xe370('0x4a')](_0x4e3078);})['then'](function(_0x210325){_0x6300c5[_0xe370('0x4b')]=_0x210325;return _0x6300c5;})[_0xe370('0x29')](respondWithFilteredResult(_0x211955,_0x4e3078))[_0xe370('0x4c')](handleError(_0x211955,null));};exports['show']=function(_0x17c602,_0x58c8fa){var _0x152349={'raw':![],'where':{'id':_0x17c602[_0xe370('0x4d')]['id']}},_0x15b8df={};_0x15b8df['model']=_[_0xe370('0x4e')](db[_0xe370('0x34')][_0xe370('0x35')]);_0x15b8df[_0xe370('0x3b')]=_['keys'](_0x17c602[_0xe370('0x3b')]);_0x15b8df[_0xe370('0x3c')]=_[_0xe370('0x3d')](_0x15b8df[_0xe370('0x39')],_0x15b8df[_0xe370('0x3b')]);_0x152349[_0xe370('0x3e')]=_[_0xe370('0x3d')](_0x15b8df[_0xe370('0x39')],qs[_0xe370('0x3f')](_0x17c602[_0xe370('0x3b')][_0xe370('0x3f')]));_0x152349['attributes']=_0x152349[_0xe370('0x3e')][_0xe370('0x40')]?_0x152349[_0xe370('0x3e')]:_0x15b8df[_0xe370('0x39')];if(_0x17c602['query']['includeAll']){_0x152349[_0xe370('0x49')]=[{'all':!![]}];}_0x152349=_[_0xe370('0x46')]({},_0x152349,_0x17c602[_0xe370('0x47')]);return db[_0xe370('0x34')]['find'](_0x152349)[_0xe370('0x29')](handleEntityNotFound(_0x58c8fa,null))[_0xe370('0x29')](respondWithResult(_0x58c8fa,null))['catch'](handleError(_0x58c8fa,null));};exports['create']=function(_0x1e10e3,_0xf42443){return db['AnalyticCustomReport']['create'](_0x1e10e3['body'],{})[_0xe370('0x29')](function(_0x393405){var _0x3d0896=_0x1e10e3['user'][_0xe370('0x2a')]({'plain':!![]});if(!_0x3d0896)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3d0896['role']==='user'){var _0x56df93=_0x393405['get']({'plain':!![]});var _0x31292b='Reports';return db['UserProfileSection'][_0xe370('0x4f')]({'where':{'name':_0x31292b,'userProfileId':_0x3d0896[_0xe370('0x50')]},'raw':!![]})['then'](function(_0x42f7c2){if(_0x42f7c2&&_0x42f7c2['autoAssociation']===0x0){return db[_0xe370('0x2b')][_0xe370('0x51')]({'name':_0x56df93[_0xe370('0x31')],'resourceId':_0x56df93['id'],'type':_0xe370('0x52'),'sectionId':_0x42f7c2['id']},{})[_0xe370('0x29')](function(){return _0x393405;});}else{return _0x393405;}})[_0xe370('0x4c')](function(_0x26582c){logger[_0xe370('0x2f')](_0xe370('0x53'),_0x26582c);throw _0x26582c;});}return _0x393405;})[_0xe370('0x29')](respondWithResult(_0xf42443,0xc9))[_0xe370('0x4c')](handleError(_0xf42443,null));};exports[_0xe370('0x54')]=function(_0x4ef5b3,_0xf17386){if(_0x4ef5b3[_0xe370('0x55')]['id']){delete _0x4ef5b3[_0xe370('0x55')]['id'];}return db[_0xe370('0x34')][_0xe370('0x4f')]({'where':{'id':_0x4ef5b3[_0xe370('0x4d')]['id']}})[_0xe370('0x29')](handleEntityNotFound(_0xf17386,null))['then'](saveUpdates(_0x4ef5b3[_0xe370('0x55')],null))['then'](respondWithResult(_0xf17386,null))[_0xe370('0x4c')](handleError(_0xf17386,null));};exports['destroy']=function(_0x36cd44,_0x229969){return db[_0xe370('0x34')][_0xe370('0x4f')]({'where':{'id':_0x36cd44['params']['id']}})[_0xe370('0x29')](handleEntityNotFound(_0x229969,null))[_0xe370('0x29')](removeEntity(_0x229969,null))['catch'](handleError(_0x229969,null));};exports['preview']=function(_0x2763b1,_0x2985b7){var _0x3fc941=0xa;var _0x2aec18=[_0xe370('0x56'),_0xe370('0x57'),_0xe370('0x58'),_0xe370('0x59')];var _0x252c5a={'SUM':_0xe370('0x5a'),'COUNT':_0xe370('0x5b'),'COUNT DISTINCT':_0xe370('0x5c'),'MAX':_0xe370('0x5d'),'MIN':'MIN(%s)','AVG':_0xe370('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xe370('0x5f'),'GROUP_CONCAT DESC':_0xe370('0x60')};var _0x45d8e9={'SEC_TO_TIME':_0xe370('0x61'),'DATE':'DATE(%s)','HOUR':_0xe370('0x62'),'ROUND':_0xe370('0x63'),'UNIX_TIMESTAMP':_0xe370('0x64')};var _0x481a5c=function(_0x3197cc){return!_[_0xe370('0x65')](['IS\x20NULL',_0xe370('0x66'),_0xe370('0x67'),'IS\x20NOT\x20EMPTY'],_0x3197cc);};var _0x4e798f=function(_0x3dbe61){if(!_0x3dbe61||!_0x3dbe61[_0xe370('0x68')][_0xe370('0x40')]){return'';}for(var _0x54691c='(',_0x331235=0x0;_0x331235<_0x3dbe61[_0xe370('0x68')][_0xe370('0x40')];_0x331235+=0x1){_0x331235>0x0&&(_0x54691c+='\x20'+_0x3dbe61[_0xe370('0x69')]+'\x20');_0x54691c+=_0x3dbe61[_0xe370('0x68')][_0x331235]['group']?_0x4e798f(_0x3dbe61[_0xe370('0x68')][_0x331235][_0xe370('0x6a')]):_0x3dbe61['rules'][_0x331235][_0xe370('0x6b')]+'\x20'+_0x3dbe61[_0xe370('0x68')][_0x331235][_0xe370('0x6c')]+(_0x481a5c(_0x3dbe61[_0xe370('0x68')][_0x331235]['condition'])?'\x20'+_0x3dbe61[_0xe370('0x68')][_0x331235][_0xe370('0x6d')]:'');}return _0x54691c+')';};var _0x30ffe2={'where':{'id':_0x2763b1['params']['id']}},_0x4316dc,_0x452025,_0x46efd7,_0x3762db,_0x45f846;_0x30ffe2=_['merge']({},_0x30ffe2,_0x2763b1[_0xe370('0x47')]);return db[_0xe370('0x34')][_0xe370('0x4f')](_0x30ffe2)[_0xe370('0x29')](function(_0x58441b){if(_0x58441b){_0x4316dc=_0x58441b;return _0x58441b['getFields']();}return null;})[_0xe370('0x29')](function(_0x317fb8){if(_0x317fb8){if(!_0x317fb8[_0xe370('0x40')]){throw new db[(_0xe370('0x6e'))][(_0xe370('0x6f'))](_0xe370('0x70'),0x193);}_0x452025=_0x317fb8;return db['AnalyticMetric'][_0xe370('0x4a')]({'raw':!![]});}return null;})['then'](function(_0x907442){if(_0x907442){_0x46efd7=_[_0xe370('0x71')](_0x907442,'id');var _0x45d739;var _0x3db936=squel['select']();_0x3db936[_0xe370('0x72')](_0x4316dc[_0xe370('0x73')]);for(var _0x49fbad=0x0;_0x49fbad<_0x452025[_0xe370('0x40')];_0x49fbad+=0x1){_0x45d739=_0x452025[_0x49fbad][_0xe370('0x74')]?_0x46efd7[_0x452025[_0x49fbad][_0xe370('0x74')]][_0xe370('0x75')]:_0x452025[_0x49fbad]['field'];_0x45d739=_0x452025[_0x49fbad]['function']?_[_0xe370('0x76')](_0x252c5a[_0x452025[_0x49fbad][_0xe370('0x77')]],'%s',_0x45d739):_0x45d739;_0x45d739=_0x452025[_0x49fbad][_0xe370('0x78')]?_[_0xe370('0x76')](_0x45d8e9[_0x452025[_0x49fbad][_0xe370('0x78')]],'%s',_0x45d739):_0x45d739;if(_0x452025[_0x49fbad]['groupBy']){_0x3db936['group'](_0x45d739);}_0x452025[_0x49fbad][_0xe370('0x79')]&&_0x3db936[_0xe370('0x43')](_0x45d739,_0x452025[_0x49fbad][_0xe370('0x79')]===_0xe370('0x7a')?![]:!![]);_0x3db936[_0xe370('0x6b')](_0x45d739,_0x452025[_0x49fbad]['alias']||_0x45d739);}if(_0x4316dc[_0xe370('0x7b')]){_0x4316dc[_0xe370('0x7b')]=JSON[_0xe370('0x7c')](_0x4316dc[_0xe370('0x7b')]);for(var _0x584936=0x0;_0x584936<_0x4316dc[_0xe370('0x7b')][_0xe370('0x40')];_0x584936+=0x1){if(_0x4316dc[_0xe370('0x7b')][_0x584936][_0xe370('0x37')]&&_[_0xe370('0x65')](_0x2aec18,_0x4316dc[_0xe370('0x7b')][_0x584936][_0xe370('0x37')])&&_0x4316dc[_0xe370('0x7b')][_0x584936]['parentKey']&&_0x4316dc[_0xe370('0x7b')][_0x584936][_0xe370('0x7d')]&&_0x4316dc[_0xe370('0x7b')][_0x584936][_0xe370('0x7e')]){_0x3db936[_0x4316dc['joins'][_0x584936][_0xe370('0x37')]](_0x4316dc[_0xe370('0x7b')][_0x584936]['foreignTable'],null,util[_0xe370('0x78')]('%s.%s\x20=\x20%s.%s',_0x4316dc[_0xe370('0x73')],_0x4316dc[_0xe370('0x7b')][_0x584936][_0xe370('0x7f')],_0x4316dc[_0xe370('0x7b')][_0x584936]['foreignTable'],_0x4316dc[_0xe370('0x7b')][_0x584936][_0xe370('0x7e')]));}}}if(_0x4316dc[_0xe370('0x80')]){_0x4316dc[_0xe370('0x80')]=JSON[_0xe370('0x7c')](_0x4316dc[_0xe370('0x80')]);_0x3db936[_0xe370('0x45')](_0x4e798f(_0x4316dc[_0xe370('0x80')]['group']));}_0x45f846=_0x3db936[_0xe370('0x81')]();_0x3db936[_0xe370('0x22')](_0x3fc941);_0x3db936['offset'](0x0);logger[_0xe370('0x82')](_0xe370('0x83'),_0x3db936[_0xe370('0x84')]());return dbH['sequelize']['query'](_0x3db936[_0xe370('0x84')](),{'type':dbH[_0xe370('0x85')]['QueryTypes'][_0xe370('0x86')]});}})[_0xe370('0x29')](respondWithResult(_0x2985b7,null))[_0xe370('0x4c')](handleError(_0x2985b7,null));};function runReport(_0x20ba7a,_0x386176,_0x583322){var _0x58ac79=_0x386176[_0xe370('0x31')];var _0xdc4768=0xa;var _0x2eb6b1=[_0xe370('0x56'),'left_join',_0xe370('0x58'),_0xe370('0x59')];var _0x2313ea={'SUM':_0xe370('0x5a'),'COUNT':_0xe370('0x5b'),'COUNT DISTINCT':_0xe370('0x5c'),'MAX':_0xe370('0x5d'),'MIN':_0xe370('0x87'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xe370('0x5f'),'GROUP_CONCAT DESC':_0xe370('0x60')};var _0x1ed5c0={'SEC_TO_TIME':_0xe370('0x61'),'DATE':_0xe370('0x88'),'HOUR':_0xe370('0x62'),'ROUND':_0xe370('0x63'),'UNIX_TIMESTAMP':_0xe370('0x64')};var _0x573553=function(_0x26ce1e){return!_[_0xe370('0x65')]([_0xe370('0x89'),_0xe370('0x66'),_0xe370('0x67'),_0xe370('0x8a')],_0x26ce1e);};var _0x836293=function(_0xdb9bec){if(!_0xdb9bec||!_0xdb9bec['rules'][_0xe370('0x40')]){return'';}for(var _0x16fc5f='(',_0x3b797e=0x0;_0x3b797e<_0xdb9bec[_0xe370('0x68')][_0xe370('0x40')];_0x3b797e+=0x1){_0x3b797e>0x0&&(_0x16fc5f+='\x20'+_0xdb9bec['operator']+'\x20');_0x16fc5f+=_0xdb9bec[_0xe370('0x68')][_0x3b797e][_0xe370('0x6a')]?_0x836293(_0xdb9bec['rules'][_0x3b797e][_0xe370('0x6a')]):_0xdb9bec[_0xe370('0x68')][_0x3b797e]['field']+'\x20'+_0xdb9bec[_0xe370('0x68')][_0x3b797e][_0xe370('0x6c')]+(_0x573553(_0xdb9bec[_0xe370('0x68')][_0x3b797e][_0xe370('0x6c')])?'\x20'+_0xdb9bec[_0xe370('0x68')][_0x3b797e][_0xe370('0x6d')]:'');}return _0x16fc5f+')';};var _0x3436fb={'where':{'id':_0x20ba7a['id']}},_0xb226e,_0x1622a9,_0x72f298,_0x16975c,_0x21f043;_0x3436fb=_[_0xe370('0x46')]({},_0x3436fb,_0x583322);return db[_0xe370('0x34')][_0xe370('0x4f')](_0x3436fb)[_0xe370('0x29')](function(_0x12f476){if(_0x12f476){_0xb226e=_0x12f476;return _0x12f476[_0xe370('0x8b')]();}return null;})['then'](function(_0x2e4233){if(_0x2e4233){if(!_0x2e4233[_0xe370('0x40')]){throw new db['Sequelize'][(_0xe370('0x6f'))](_0xe370('0x70'),0x193);}_0x1622a9=_0x2e4233;return db[_0xe370('0x8c')][_0xe370('0x4a')]({'raw':!![]});}return null;})[_0xe370('0x29')](function(_0x237cc4){if(_0x237cc4){_0x72f298=_[_0xe370('0x71')](_0x237cc4,'id');var _0xcd497;var _0x4d9aa2=squel['select']();_0x4d9aa2['from'](_0xb226e['table']);for(var _0x48d7cc=0x0;_0x48d7cc<_0x1622a9['length'];_0x48d7cc+=0x1){_0xcd497=_0x1622a9[_0x48d7cc][_0xe370('0x74')]?_0x72f298[_0x1622a9[_0x48d7cc][_0xe370('0x74')]]['metric']:_0x1622a9[_0x48d7cc]['field'];_0xcd497=_0x1622a9[_0x48d7cc][_0xe370('0x77')]?_[_0xe370('0x76')](_0x2313ea[_0x1622a9[_0x48d7cc][_0xe370('0x77')]],'%s',_0xcd497):_0xcd497;_0xcd497=_0x1622a9[_0x48d7cc][_0xe370('0x78')]?_[_0xe370('0x76')](_0x1ed5c0[_0x1622a9[_0x48d7cc][_0xe370('0x78')]],'%s',_0xcd497):_0xcd497;if(_0x1622a9[_0x48d7cc][_0xe370('0x8d')]){_0x4d9aa2['group'](_0xcd497);}_0x1622a9[_0x48d7cc]['orderBy']&&_0x4d9aa2[_0xe370('0x43')](_0xcd497,_0x1622a9[_0x48d7cc]['orderBy']==='DESC'?![]:!![]);_0x4d9aa2[_0xe370('0x6b')](_0xcd497,_0x1622a9[_0x48d7cc][_0xe370('0x8e')]||_0xcd497);}if(_0xb226e[_0xe370('0x7b')]){_0xb226e[_0xe370('0x7b')]=JSON[_0xe370('0x7c')](_0xb226e[_0xe370('0x7b')]);for(var _0x37717a=0x0;_0x37717a<_0xb226e['joins'][_0xe370('0x40')];_0x37717a+=0x1){if(_0xb226e[_0xe370('0x7b')][_0x37717a][_0xe370('0x37')]&&_[_0xe370('0x65')](_0x2eb6b1,_0xb226e['joins'][_0x37717a][_0xe370('0x37')])&&_0xb226e['joins'][_0x37717a][_0xe370('0x7f')]&&_0xb226e[_0xe370('0x7b')][_0x37717a][_0xe370('0x7d')]&&_0xb226e[_0xe370('0x7b')][_0x37717a][_0xe370('0x7e')]){_0x4d9aa2[_0xb226e[_0xe370('0x7b')][_0x37717a][_0xe370('0x37')]](_0xb226e[_0xe370('0x7b')][_0x37717a][_0xe370('0x7d')],null,util['format'](_0xe370('0x8f'),_0xb226e['table'],_0xb226e[_0xe370('0x7b')][_0x37717a][_0xe370('0x7f')],_0xb226e['joins'][_0x37717a][_0xe370('0x7d')],_0xb226e['joins'][_0x37717a][_0xe370('0x7e')]));}}}if(_0xb226e[_0xe370('0x80')]){_0xb226e[_0xe370('0x80')]=JSON[_0xe370('0x7c')](_0xb226e[_0xe370('0x80')]);_0x4d9aa2['where'](_0x836293(_0xb226e[_0xe370('0x80')]['group']));}_0x21f043=_0x4d9aa2[_0xe370('0x81')]();_0x4d9aa2['limit'](_0xdc4768);_0x4d9aa2[_0xe370('0x20')](0x0);return;}})[_0xe370('0x29')](function(){if(_0x386176[_0xe370('0x90')]==='web'){return null;}var _0x4390b2=_[_0xe370('0x46')](_0x386176,{'name':_0x386176['fullPath']||_0x386176[_0xe370('0x31')]||_0xb226e['name'],'basename':_0x58ac79,'savename':util['format'](_0xe370('0x91'),_0x386176[_0xe370('0x31')]||_0xb226e[_0xe370('0x31')],require(_0xe370('0x92'))[_0xe370('0x93')](0x4),_0x386176[_0xe370('0x90')]||'csv'),'reportId':_0xb226e['id'],'reportType':'custom'});return db['AnalyticExtractedReport'][_0xe370('0x51')](_0x4390b2,{'raw':!![]});})['then'](function(_0x2481f3){if(_0xb226e['table']===_0xe370('0x94')){_0x21f043[_0xe370('0x45')](_0xb226e[_0xe370('0x73')]+_0xe370('0x95'),_0x386176[_0xe370('0x96')],_0x386176[_0xe370('0x97')]);}else{_0x21f043[_0xe370('0x45')](_0xb226e['table']+_0xe370('0x98'),_0x386176[_0xe370('0x96')],_0x386176['endDate']);}if(_0x2481f3){logger['info'](_0xe370('0x99'),_0x21f043[_0xe370('0x84')]());require(_0xe370('0x9a'))[_0xe370('0x9b')](path[_0xe370('0x56')](__dirname,_0xe370('0x9c'),_0x2481f3[_0xe370('0x90')]),[_0x2481f3['id'],_0x21f043[_0xe370('0x84')](),path[_0xe370('0x56')](__dirname,'../../files/reports',_0x2481f3[_0xe370('0x9d')]),_0x58ac79]);return _0x2481f3;}else{var _0x332b54=squel[_0xe370('0x9e')]();_0x332b54[_0xe370('0x72')]('('+_0x21f043[_0xe370('0x84')]()+')',_0xe370('0x9f'));_0x332b54[_0xe370('0x6b')](_0xe370('0xa0'),_0xe370('0x23'));_0x21f043['limit'](_0x386176[_0xe370('0x22')]||_0xdc4768);_0x21f043[_0xe370('0x20')](_0x386176[_0xe370('0x20')]||0x0);return dbH[_0xe370('0x85')][_0xe370('0x3b')](_0x332b54[_0xe370('0x84')](),{'type':dbH['sequelize'][_0xe370('0xa1')][_0xe370('0x86')]})[_0xe370('0x29')](function(_0x347305){if(!_0x347305[_0xe370('0x40')]){_0x16975c=0x0;}else{_0x16975c=_0x347305[0x0][_0xe370('0x23')]||0x0;}return dbH['sequelize'][_0xe370('0x3b')](_0x21f043[_0xe370('0x84')](),{'type':dbH[_0xe370('0x85')]['QueryTypes']['SELECT']});})[_0xe370('0x29')](function(_0x10a14c){return{'rows':_0x10a14c||[],'count':_0x16975c};});}});}exports['run']=function(_0x3b7ebe,_0x39e68){return runReport(_0x3b7ebe[_0xe370('0x4d')],_0x3b7ebe[_0xe370('0x3b')],_0x3b7ebe['options'])[_0xe370('0x29')](respondWithResult(_0x39e68,null))['catch'](handleError(_0x39e68,null));};exports[_0xe370('0xa2')]=runReport;exports[_0xe370('0x3b')]=function(_0xa90ba4,_0x557807){var _0x35695e=0xa;var _0x1d0d7c=[_0xe370('0x56'),'left_join',_0xe370('0x58'),'cross_join'];var _0x3e843d={'SUM':_0xe370('0x5a'),'COUNT':_0xe370('0x5b'),'COUNT DISTINCT':_0xe370('0x5c'),'MAX':'MAX(%s)','MIN':_0xe370('0x87'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xe370('0xa3'),'GROUP_CONCAT ASC':_0xe370('0x5f'),'GROUP_CONCAT DESC':_0xe370('0x60')};var _0x48c64b={'SEC_TO_TIME':_0xe370('0x61'),'DATE':'DATE(%s)','HOUR':_0xe370('0x62'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xe370('0x64')};var _0x382097=function(_0x3e893b){return!_['includes']([_0xe370('0x89'),_0xe370('0x66'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x3e893b);};var _0x314b4f=function(_0x158f51){if(!_0x158f51||!_0x158f51['rules'][_0xe370('0x40')]){return'';}for(var _0x311fe3='(',_0x2e9e47=0x0;_0x2e9e47<_0x158f51[_0xe370('0x68')]['length'];_0x2e9e47+=0x1){_0x2e9e47>0x0&&(_0x311fe3+='\x20'+_0x158f51['operator']+'\x20');_0x311fe3+=_0x158f51[_0xe370('0x68')][_0x2e9e47][_0xe370('0x6a')]?_0x314b4f(_0x158f51[_0xe370('0x68')][_0x2e9e47][_0xe370('0x6a')]):_0x158f51['rules'][_0x2e9e47][_0xe370('0x6b')]+'\x20'+_0x158f51[_0xe370('0x68')][_0x2e9e47][_0xe370('0x6c')]+(_0x382097(_0x158f51['rules'][_0x2e9e47][_0xe370('0x6c')])?'\x20'+_0x158f51[_0xe370('0x68')][_0x2e9e47]['value']:'');}return _0x311fe3+')';};var _0x379919={'where':{'id':_0xa90ba4[_0xe370('0x4d')]['id']}},_0x5b72bf,_0x447850,_0x500c3b,_0x56c7d5,_0x346ebc;_0x379919=_['merge']({},_0x379919,_0xa90ba4[_0xe370('0x47')]);return db[_0xe370('0x34')][_0xe370('0x4f')](_0x379919)[_0xe370('0x29')](function(_0x233536){if(_0x233536){_0x5b72bf=_0x233536;return _0x233536['getFields']();}return null;})[_0xe370('0x29')](function(_0x56017d){if(_0x56017d){if(!_0x56017d[_0xe370('0x40')]){throw new db[(_0xe370('0x6e'))]['ValidationErrorItem'](_0xe370('0x70'),0x193);}_0x447850=_0x56017d;return db['AnalyticMetric'][_0xe370('0x4a')]({'raw':!![]});}return null;})[_0xe370('0x29')](function(_0x5b9f3f){if(_0x5b9f3f){_0x500c3b=_[_0xe370('0x71')](_0x5b9f3f,'id');var _0x2576cb;var _0x26f2a4=squel[_0xe370('0x9e')]();_0x26f2a4['from'](_0x5b72bf[_0xe370('0x73')]);for(var _0x11fdd7=0x0;_0x11fdd7<_0x447850['length'];_0x11fdd7+=0x1){_0x2576cb=_0x447850[_0x11fdd7][_0xe370('0x74')]?_0x500c3b[_0x447850[_0x11fdd7][_0xe370('0x74')]][_0xe370('0x75')]:_0x447850[_0x11fdd7][_0xe370('0x6b')];_0x2576cb=_0x447850[_0x11fdd7][_0xe370('0x77')]?_[_0xe370('0x76')](_0x3e843d[_0x447850[_0x11fdd7][_0xe370('0x77')]],'%s',_0x2576cb):_0x2576cb;_0x2576cb=_0x447850[_0x11fdd7][_0xe370('0x78')]?_['replace'](_0x48c64b[_0x447850[_0x11fdd7][_0xe370('0x78')]],'%s',_0x2576cb):_0x2576cb;if(_0x447850[_0x11fdd7]['groupBy']){_0x26f2a4[_0xe370('0x6a')](_0x2576cb);}_0x447850[_0x11fdd7][_0xe370('0x79')]&&_0x26f2a4['order'](_0x2576cb,_0x447850[_0x11fdd7][_0xe370('0x79')]===_0xe370('0x7a')?![]:!![]);_0x26f2a4[_0xe370('0x6b')](_0x2576cb,_0x447850[_0x11fdd7][_0xe370('0x8e')]||_0x2576cb);}if(_0x5b72bf[_0xe370('0x7b')]){_0x5b72bf[_0xe370('0x7b')]=JSON[_0xe370('0x7c')](_0x5b72bf[_0xe370('0x7b')]);for(var _0x40813a=0x0;_0x40813a<_0x5b72bf['joins'][_0xe370('0x40')];_0x40813a+=0x1){if(_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x37')]&&_[_0xe370('0x65')](_0x1d0d7c,_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x37')])&&_0x5b72bf[_0xe370('0x7b')][_0x40813a]['parentKey']&&_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x7d')]&&_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x7e')]){_0x26f2a4[_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x37')]](_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x7d')],null,util[_0xe370('0x78')](_0xe370('0x8f'),_0x5b72bf[_0xe370('0x73')],_0x5b72bf['joins'][_0x40813a][_0xe370('0x7f')],_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x7d')],_0x5b72bf[_0xe370('0x7b')][_0x40813a][_0xe370('0x7e')]));}}}if(_0x5b72bf[_0xe370('0x80')]){_0x5b72bf[_0xe370('0x80')]=JSON[_0xe370('0x7c')](_0x5b72bf[_0xe370('0x80')]);_0x26f2a4[_0xe370('0x45')](_0x314b4f(_0x5b72bf['conditions']['group']));}_0x346ebc=_0x26f2a4[_0xe370('0x81')]();_0x26f2a4[_0xe370('0x22')](_0x35695e);_0x26f2a4[_0xe370('0x20')](0x0);logger[_0xe370('0x82')](_0xe370('0x83'),_0x26f2a4[_0xe370('0x84')]());return dbH['sequelize'][_0xe370('0x3b')](_0x26f2a4['toString'](),{'type':dbH[_0xe370('0x85')][_0xe370('0xa1')][_0xe370('0x86')]});}})[_0xe370('0x29')](function(){return{'sql':_0x346ebc[_0xe370('0x84')]()};})[_0xe370('0x29')](respondWithResult(_0x557807,null))['catch'](handleError(_0x557807,null));};
\ No newline at end of file
+var _0xe74b=['map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','keys','filters','query','attributes','intersection','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','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)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','conditions','parse','toString','sequelize','QueryTypes','COUNT(%s)','AVG(%s)','DATE(%s)','HOUR(%s)','IS\x20NOT\x20NULL','AnalyticMetric','select','groupBy','%s.%s\x20=\x20%s.%s','clone','output','fullPath','%s-%s.%s','generate','csv','AnalyticExtractedReport','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','debug','Limited\x20Query:','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','end','status','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','sendStatus','error','stack','name','index'];(function(_0x404c93,_0x2c62b9){var _0x523c1e=function(_0x32f117){while(--_0x32f117){_0x404c93['push'](_0x404c93['shift']());}};_0x523c1e(++_0x2c62b9);}(_0xe74b,0x112));var _0xbe74=function(_0x2a9f62,_0x43f797){_0x2a9f62=_0x2a9f62-0x0;var _0x17bd11=_0xe74b[_0x2a9f62];return _0x17bd11;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbe74('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbe74('0x1'));var rp=require('request-promise');var moment=require(_0xbe74('0x2'));var BPromise=require(_0xbe74('0x3'));var Mustache=require(_0xbe74('0x4'));var util=require(_0xbe74('0x5'));var path=require(_0xbe74('0x6'));var sox=require('sox');var csv=require(_0xbe74('0x7'));var ejs=require(_0xbe74('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbe74('0x9'));var squel=require(_0xbe74('0xa'));var crypto=require(_0xbe74('0xb'));var jsforce=require(_0xbe74('0xc'));var deskjs=require(_0xbe74('0xd'));var toCsv=require(_0xbe74('0x7'));var querystring=require(_0xbe74('0xe'));var Papa=require(_0xbe74('0xf'));var Redis=require('ioredis');var authService=require(_0xbe74('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe74('0x11'));var logger=require(_0xbe74('0x12'))('api');var utils=require(_0xbe74('0x13'));var config=require(_0xbe74('0x14'));var licenseUtil=require(_0xbe74('0x15'));var db=require(_0xbe74('0x16'))['db'];var dbH=require(_0xbe74('0x16'))[_0xbe74('0x17')];function respondWithStatusCode(_0x148367,_0x3c30e9){_0x3c30e9=_0x3c30e9||0xcc;return function(_0x46998e){if(_0x46998e){return _0x148367['sendStatus'](_0x3c30e9);}return _0x148367['status'](_0x3c30e9)[_0xbe74('0x18')]();};}function respondWithResult(_0xaa6288,_0x1cdf66){_0x1cdf66=_0x1cdf66||0xc8;return function(_0x2683a9){if(_0x2683a9){return _0xaa6288[_0xbe74('0x19')](_0x1cdf66)[_0xbe74('0x1a')](_0x2683a9);}};}function respondWithFilteredResult(_0x5584c7,_0x21d4fe){return function(_0xae8d3e){if(_0xae8d3e){var _0x533d80=typeof _0x21d4fe['offset']==='undefined'&&typeof _0x21d4fe[_0xbe74('0x1b')]===_0xbe74('0x1c');var _0x2de7e5=_0xae8d3e[_0xbe74('0x1d')];var _0x48ecf5=_0x533d80?0x0:_0x21d4fe[_0xbe74('0x1e')];var _0x2464aa=_0x533d80?_0xae8d3e['count']:_0x21d4fe[_0xbe74('0x1e')]+_0x21d4fe['limit'];var _0x4f8a44;if(_0x2464aa>=_0x2de7e5){_0x2464aa=_0x2de7e5;_0x4f8a44=0xc8;}else{_0x4f8a44=0xce;}_0x5584c7[_0xbe74('0x19')](_0x4f8a44);return _0x5584c7[_0xbe74('0x1f')]('Content-Range',_0x48ecf5+'-'+_0x2464aa+'/'+_0x2de7e5)[_0xbe74('0x1a')](_0xae8d3e);}return null;};}function patchUpdates(_0x17879a){return function(_0x5c45fb){try{jsonpatch[_0xbe74('0x20')](_0x5c45fb,_0x17879a,!![]);}catch(_0x14c139){return BPromise[_0xbe74('0x21')](_0x14c139);}return _0x5c45fb[_0xbe74('0x22')]();};}function saveUpdates(_0x4b02c6,_0xf70456){return function(_0x2a2b52){if(_0x2a2b52){return _0x2a2b52[_0xbe74('0x23')](_0x4b02c6)[_0xbe74('0x24')](function(_0x21cedc){return _0x21cedc;});}return null;};}function removeEntity(_0x215f56,_0x53b36e){return function(_0x1179a3){if(_0x1179a3){return _0x1179a3[_0xbe74('0x25')]()[_0xbe74('0x24')](function(){var _0x4a7450=_0x1179a3[_0xbe74('0x26')]({'plain':!![]});var _0xd7fe72=_0xbe74('0x27');return db[_0xbe74('0x28')]['destroy']({'where':{'type':_0xd7fe72,'resourceId':_0x4a7450['id']}})[_0xbe74('0x24')](function(){return _0x1179a3;});})[_0xbe74('0x24')](function(){_0x215f56[_0xbe74('0x19')](0xcc)[_0xbe74('0x18')]();});}};}function handleEntityNotFound(_0x3b810c,_0x39660b){return function(_0x50fff5){if(!_0x50fff5){_0x3b810c[_0xbe74('0x29')](0x194);}return _0x50fff5;};}function handleError(_0x19cc9a,_0x55b7cc){_0x55b7cc=_0x55b7cc||0x1f4;return function(_0x3df6be){logger[_0xbe74('0x2a')](_0x3df6be[_0xbe74('0x2b')]);if(_0x3df6be[_0xbe74('0x2c')]){delete _0x3df6be[_0xbe74('0x2c')];}_0x19cc9a['status'](_0x55b7cc)['send'](_0x3df6be);};}exports[_0xbe74('0x2d')]=function(_0x35f067,_0x31c294){var _0x4ffeab={},_0x1114f8={},_0x24d4ed={'count':0x0,'rows':[]};var _0x561c6c=_[_0xbe74('0x2e')](db[_0xbe74('0x2f')][_0xbe74('0x30')],function(_0x5939d6){return{'name':_0x5939d6[_0xbe74('0x31')],'type':_0x5939d6[_0xbe74('0x32')][_0xbe74('0x33')]};});_0x1114f8[_0xbe74('0x34')]=_[_0xbe74('0x2e')](_0x561c6c,_0xbe74('0x2c'));_0x1114f8['query']=_[_0xbe74('0x35')](_0x35f067['query']);_0x1114f8[_0xbe74('0x36')]=_['intersection'](_0x1114f8[_0xbe74('0x34')],_0x1114f8[_0xbe74('0x37')]);_0x4ffeab[_0xbe74('0x38')]=_[_0xbe74('0x39')](_0x1114f8[_0xbe74('0x34')],qs['fields'](_0x35f067[_0xbe74('0x37')][_0xbe74('0x3a')]));_0x4ffeab[_0xbe74('0x38')]=_0x4ffeab[_0xbe74('0x38')]['length']?_0x4ffeab[_0xbe74('0x38')]:_0x1114f8[_0xbe74('0x34')];if(!_0x35f067['query']['hasOwnProperty'](_0xbe74('0x3b'))){_0x4ffeab[_0xbe74('0x1b')]=qs[_0xbe74('0x1b')](_0x35f067[_0xbe74('0x37')][_0xbe74('0x1b')]);_0x4ffeab[_0xbe74('0x1e')]=qs[_0xbe74('0x1e')](_0x35f067['query'][_0xbe74('0x1e')]);}_0x4ffeab[_0xbe74('0x3c')]=qs[_0xbe74('0x3d')](_0x35f067[_0xbe74('0x37')][_0xbe74('0x3d')]);_0x4ffeab[_0xbe74('0x3e')]=qs['filters'](_[_0xbe74('0x3f')](_0x35f067[_0xbe74('0x37')],_0x1114f8['filters']),_0x561c6c);if(_0x35f067[_0xbe74('0x37')]['filter']){_0x4ffeab[_0xbe74('0x3e')]=_[_0xbe74('0x40')](_0x4ffeab[_0xbe74('0x3e')],{'$or':_[_0xbe74('0x2e')](_0x561c6c,function(_0x1d54b7){if(_0x1d54b7['type']!==_0xbe74('0x41')){var _0x434901={};_0x434901[_0x1d54b7[_0xbe74('0x2c')]]={'$like':'%'+_0x35f067[_0xbe74('0x37')][_0xbe74('0x42')]+'%'};return _0x434901;}})});}_0x4ffeab=_[_0xbe74('0x40')]({},_0x4ffeab,_0x35f067[_0xbe74('0x43')]);var _0x292942={'where':_0x4ffeab[_0xbe74('0x3e')]};return db[_0xbe74('0x2f')][_0xbe74('0x1d')](_0x292942)['then'](function(_0x41121b){_0x24d4ed[_0xbe74('0x1d')]=_0x41121b;if(_0x35f067[_0xbe74('0x37')][_0xbe74('0x44')]){_0x4ffeab[_0xbe74('0x45')]=[{'all':!![]}];}return db[_0xbe74('0x2f')][_0xbe74('0x46')](_0x4ffeab);})[_0xbe74('0x24')](function(_0x315152){_0x24d4ed[_0xbe74('0x47')]=_0x315152;return _0x24d4ed;})[_0xbe74('0x24')](respondWithFilteredResult(_0x31c294,_0x4ffeab))[_0xbe74('0x48')](handleError(_0x31c294,null));};exports['show']=function(_0x2ff61b,_0x1a7df8){var _0x4ece2d={'raw':![],'where':{'id':_0x2ff61b['params']['id']}},_0x384eb1={};_0x384eb1[_0xbe74('0x34')]=_['keys'](db[_0xbe74('0x2f')][_0xbe74('0x30')]);_0x384eb1[_0xbe74('0x37')]=_[_0xbe74('0x35')](_0x2ff61b[_0xbe74('0x37')]);_0x384eb1['filters']=_[_0xbe74('0x39')](_0x384eb1[_0xbe74('0x34')],_0x384eb1['query']);_0x4ece2d[_0xbe74('0x38')]=_[_0xbe74('0x39')](_0x384eb1['model'],qs[_0xbe74('0x3a')](_0x2ff61b[_0xbe74('0x37')][_0xbe74('0x3a')]));_0x4ece2d[_0xbe74('0x38')]=_0x4ece2d['attributes'][_0xbe74('0x49')]?_0x4ece2d['attributes']:_0x384eb1['model'];if(_0x2ff61b['query'][_0xbe74('0x44')]){_0x4ece2d[_0xbe74('0x45')]=[{'all':!![]}];}_0x4ece2d=_[_0xbe74('0x40')]({},_0x4ece2d,_0x2ff61b['options']);return db[_0xbe74('0x2f')]['find'](_0x4ece2d)[_0xbe74('0x24')](handleEntityNotFound(_0x1a7df8,null))['then'](respondWithResult(_0x1a7df8,null))[_0xbe74('0x48')](handleError(_0x1a7df8,null));};exports[_0xbe74('0x4a')]=function(_0x863fc8,_0x1ec9a4){return db['AnalyticCustomReport']['create'](_0x863fc8[_0xbe74('0x4b')],{})['then'](function(_0x1d96e0){var _0x19e1c4=_0x863fc8[_0xbe74('0x4c')][_0xbe74('0x26')]({'plain':!![]});if(!_0x19e1c4)throw new Error(_0xbe74('0x4d'));if(_0x19e1c4[_0xbe74('0x4e')]==='user'){var _0x559a38=_0x1d96e0[_0xbe74('0x26')]({'plain':!![]});var _0x4b3e05='Reports';return db[_0xbe74('0x4f')][_0xbe74('0x50')]({'where':{'name':_0x4b3e05,'userProfileId':_0x19e1c4['userProfileId']},'raw':!![]})[_0xbe74('0x24')](function(_0x526b5a){if(_0x526b5a&&_0x526b5a['autoAssociation']===0x0){return db[_0xbe74('0x28')]['create']({'name':_0x559a38[_0xbe74('0x2c')],'resourceId':_0x559a38['id'],'type':_0xbe74('0x27'),'sectionId':_0x526b5a['id']},{})[_0xbe74('0x24')](function(){return _0x1d96e0;});}else{return _0x1d96e0;}})[_0xbe74('0x48')](function(_0x7b6e49){logger['error'](_0xbe74('0x51'),_0x7b6e49);throw _0x7b6e49;});}return _0x1d96e0;})[_0xbe74('0x24')](respondWithResult(_0x1ec9a4,0xc9))[_0xbe74('0x48')](handleError(_0x1ec9a4,null));};exports['update']=function(_0x51184b,_0x355484){if(_0x51184b[_0xbe74('0x4b')]['id']){delete _0x51184b[_0xbe74('0x4b')]['id'];}return db[_0xbe74('0x2f')][_0xbe74('0x50')]({'where':{'id':_0x51184b[_0xbe74('0x52')]['id']}})[_0xbe74('0x24')](handleEntityNotFound(_0x355484,null))['then'](saveUpdates(_0x51184b[_0xbe74('0x4b')],null))['then'](respondWithResult(_0x355484,null))[_0xbe74('0x48')](handleError(_0x355484,null));};exports[_0xbe74('0x25')]=function(_0x2cecf7,_0x5c3f68){return db['AnalyticCustomReport'][_0xbe74('0x50')]({'where':{'id':_0x2cecf7[_0xbe74('0x52')]['id']}})['then'](handleEntityNotFound(_0x5c3f68,null))['then'](removeEntity(_0x5c3f68,null))[_0xbe74('0x48')](handleError(_0x5c3f68,null));};exports[_0xbe74('0x53')]=function(_0x47a263,_0x5239b5){var _0x56c23=0xa;var _0x4b9c39=[_0xbe74('0x54'),_0xbe74('0x55'),_0xbe74('0x56'),_0xbe74('0x57')];var _0x2d3f32={'SUM':_0xbe74('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xbe74('0x59'),'MAX':_0xbe74('0x5a'),'MIN':_0xbe74('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xbe74('0x5c'),'GROUP_CONCAT ASC':_0xbe74('0x5d'),'GROUP_CONCAT DESC':_0xbe74('0x5e')};var _0x33652a={'SEC_TO_TIME':_0xbe74('0x5f'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xbe74('0x60'),'UNIX_TIMESTAMP':_0xbe74('0x61')};var _0x5924a7=function(_0x1ccef2){return!_[_0xbe74('0x62')]([_0xbe74('0x63'),'IS\x20NOT\x20NULL',_0xbe74('0x64'),_0xbe74('0x65')],_0x1ccef2);};var _0x432b83=function(_0x5d0fe9){if(!_0x5d0fe9||!_0x5d0fe9[_0xbe74('0x66')][_0xbe74('0x49')]){return'';}for(var _0x39c1e1='(',_0x5ce1f0=0x0;_0x5ce1f0<_0x5d0fe9[_0xbe74('0x66')]['length'];_0x5ce1f0+=0x1){_0x5ce1f0>0x0&&(_0x39c1e1+='\x20'+_0x5d0fe9[_0xbe74('0x67')]+'\x20');_0x39c1e1+=_0x5d0fe9['rules'][_0x5ce1f0][_0xbe74('0x68')]?_0x432b83(_0x5d0fe9[_0xbe74('0x66')][_0x5ce1f0][_0xbe74('0x68')]):_0x5d0fe9[_0xbe74('0x66')][_0x5ce1f0][_0xbe74('0x69')]+'\x20'+_0x5d0fe9[_0xbe74('0x66')][_0x5ce1f0][_0xbe74('0x6a')]+(_0x5924a7(_0x5d0fe9[_0xbe74('0x66')][_0x5ce1f0]['condition'])?'\x20'+_0x5d0fe9[_0xbe74('0x66')][_0x5ce1f0][_0xbe74('0x6b')]:'');}return _0x39c1e1+')';};var _0x233442={'where':{'id':_0x47a263[_0xbe74('0x52')]['id']}},_0x9cc809,_0x1af464,_0x2a3b53,_0x369dd5,_0x4b8ea2;_0x233442=_[_0xbe74('0x40')]({},_0x233442,_0x47a263[_0xbe74('0x43')]);return db[_0xbe74('0x2f')][_0xbe74('0x50')](_0x233442)[_0xbe74('0x24')](function(_0x56ad83){if(_0x56ad83){_0x9cc809=_0x56ad83;return _0x56ad83[_0xbe74('0x6c')]();}return null;})[_0xbe74('0x24')](function(_0x5619f0){if(_0x5619f0){if(!_0x5619f0[_0xbe74('0x49')]){throw new db[(_0xbe74('0x6d'))][(_0xbe74('0x6e'))](_0xbe74('0x6f'),0x193);}_0x1af464=_0x5619f0;return db['AnalyticMetric'][_0xbe74('0x46')]({'raw':!![]});}return null;})[_0xbe74('0x24')](function(_0x4cbe5f){if(_0x4cbe5f){_0x2a3b53=_[_0xbe74('0x70')](_0x4cbe5f,'id');var _0x166611;var _0x34a2f5=squel['select']();_0x34a2f5[_0xbe74('0x71')](_0x9cc809[_0xbe74('0x72')]);for(var _0x2e85c7=0x0;_0x2e85c7<_0x1af464[_0xbe74('0x49')];_0x2e85c7+=0x1){_0x166611=_0x1af464[_0x2e85c7][_0xbe74('0x73')]?_0x2a3b53[_0x1af464[_0x2e85c7][_0xbe74('0x73')]][_0xbe74('0x74')]:_0x1af464[_0x2e85c7]['field'];_0x166611=_0x1af464[_0x2e85c7][_0xbe74('0x75')]?_['replace'](_0x2d3f32[_0x1af464[_0x2e85c7][_0xbe74('0x75')]],'%s',_0x166611):_0x166611;_0x166611=_0x1af464[_0x2e85c7][_0xbe74('0x76')]?_[_0xbe74('0x77')](_0x33652a[_0x1af464[_0x2e85c7][_0xbe74('0x76')]],'%s',_0x166611):_0x166611;if(_0x1af464[_0x2e85c7]['groupBy']){_0x34a2f5['group'](_0x166611);}_0x1af464[_0x2e85c7]['orderBy']&&_0x34a2f5[_0xbe74('0x3c')](_0x166611,_0x1af464[_0x2e85c7][_0xbe74('0x78')]===_0xbe74('0x79')?![]:!![]);_0x34a2f5[_0xbe74('0x69')](_0x166611,_0x1af464[_0x2e85c7][_0xbe74('0x7a')]||_0x166611);}if(_0x9cc809['joins']){_0x9cc809[_0xbe74('0x7b')]=JSON['parse'](_0x9cc809['joins']);for(var _0x13ea57=0x0;_0x13ea57<_0x9cc809[_0xbe74('0x7b')][_0xbe74('0x49')];_0x13ea57+=0x1){if(_0x9cc809[_0xbe74('0x7b')][_0x13ea57][_0xbe74('0x32')]&&_[_0xbe74('0x62')](_0x4b9c39,_0x9cc809[_0xbe74('0x7b')][_0x13ea57][_0xbe74('0x32')])&&_0x9cc809[_0xbe74('0x7b')][_0x13ea57][_0xbe74('0x7c')]&&_0x9cc809['joins'][_0x13ea57][_0xbe74('0x7d')]&&_0x9cc809['joins'][_0x13ea57][_0xbe74('0x7e')]){_0x34a2f5[_0x9cc809[_0xbe74('0x7b')][_0x13ea57]['type']](_0x9cc809[_0xbe74('0x7b')][_0x13ea57]['foreignTable'],null,util[_0xbe74('0x76')]('%s.%s\x20=\x20%s.%s',_0x9cc809[_0xbe74('0x72')],_0x9cc809['joins'][_0x13ea57][_0xbe74('0x7c')],_0x9cc809[_0xbe74('0x7b')][_0x13ea57][_0xbe74('0x7d')],_0x9cc809['joins'][_0x13ea57][_0xbe74('0x7e')]));}}}if(_0x9cc809[_0xbe74('0x7f')]){_0x9cc809[_0xbe74('0x7f')]=JSON[_0xbe74('0x80')](_0x9cc809[_0xbe74('0x7f')]);_0x34a2f5[_0xbe74('0x3e')](_0x432b83(_0x9cc809[_0xbe74('0x7f')][_0xbe74('0x68')]));}_0x4b8ea2=_0x34a2f5['clone']();_0x34a2f5[_0xbe74('0x1b')](_0x56c23);_0x34a2f5['offset'](0x0);logger['debug']('Limited\x20Query:',_0x34a2f5[_0xbe74('0x81')]());return dbH[_0xbe74('0x82')][_0xbe74('0x37')](_0x34a2f5['toString'](),{'type':dbH[_0xbe74('0x82')][_0xbe74('0x83')]['SELECT']});}})[_0xbe74('0x24')](respondWithResult(_0x5239b5,null))[_0xbe74('0x48')](handleError(_0x5239b5,null));};function runReport(_0x52c7ef,_0x5f204f,_0x176a91){var _0x3e7973=_0x5f204f[_0xbe74('0x2c')];var _0x4e2b69=0xa;var _0x6f0ce1=[_0xbe74('0x54'),'left_join',_0xbe74('0x56'),'cross_join'];var _0x4aed3a={'SUM':_0xbe74('0x58'),'COUNT':_0xbe74('0x84'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xbe74('0x85'),'GROUP_CONCAT':_0xbe74('0x5c'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x161de4={'SEC_TO_TIME':_0xbe74('0x5f'),'DATE':_0xbe74('0x86'),'HOUR':_0xbe74('0x87'),'ROUND':_0xbe74('0x60'),'UNIX_TIMESTAMP':_0xbe74('0x61')};var _0x50c45f=function(_0x1155f7){return!_[_0xbe74('0x62')](['IS\x20NULL',_0xbe74('0x88'),_0xbe74('0x64'),'IS\x20NOT\x20EMPTY'],_0x1155f7);};var _0x34fe89=function(_0x42a63d){if(!_0x42a63d||!_0x42a63d[_0xbe74('0x66')][_0xbe74('0x49')]){return'';}for(var _0x235c48='(',_0x4c3436=0x0;_0x4c3436<_0x42a63d[_0xbe74('0x66')][_0xbe74('0x49')];_0x4c3436+=0x1){_0x4c3436>0x0&&(_0x235c48+='\x20'+_0x42a63d[_0xbe74('0x67')]+'\x20');_0x235c48+=_0x42a63d[_0xbe74('0x66')][_0x4c3436][_0xbe74('0x68')]?_0x34fe89(_0x42a63d[_0xbe74('0x66')][_0x4c3436][_0xbe74('0x68')]):_0x42a63d[_0xbe74('0x66')][_0x4c3436][_0xbe74('0x69')]+'\x20'+_0x42a63d[_0xbe74('0x66')][_0x4c3436][_0xbe74('0x6a')]+(_0x50c45f(_0x42a63d[_0xbe74('0x66')][_0x4c3436][_0xbe74('0x6a')])?'\x20'+_0x42a63d[_0xbe74('0x66')][_0x4c3436]['value']:'');}return _0x235c48+')';};var _0x2de1d5={'where':{'id':_0x52c7ef['id']}},_0xcfe068,_0x343e6f,_0x32e3f5,_0x1eec35,_0x2642c9;_0x2de1d5=_[_0xbe74('0x40')]({},_0x2de1d5,_0x176a91);return db[_0xbe74('0x2f')][_0xbe74('0x50')](_0x2de1d5)[_0xbe74('0x24')](function(_0xf449e2){if(_0xf449e2){_0xcfe068=_0xf449e2;return _0xf449e2[_0xbe74('0x6c')]();}return null;})['then'](function(_0x282451){if(_0x282451){if(!_0x282451[_0xbe74('0x49')]){throw new db[(_0xbe74('0x6d'))][(_0xbe74('0x6e'))](_0xbe74('0x6f'),0x193);}_0x343e6f=_0x282451;return db[_0xbe74('0x89')]['findAll']({'raw':!![]});}return null;})[_0xbe74('0x24')](function(_0x50475d){if(_0x50475d){_0x32e3f5=_[_0xbe74('0x70')](_0x50475d,'id');var _0x272d01;var _0xc370bb=squel[_0xbe74('0x8a')]();_0xc370bb[_0xbe74('0x71')](_0xcfe068[_0xbe74('0x72')]);for(var _0x1f0c5c=0x0;_0x1f0c5c<_0x343e6f[_0xbe74('0x49')];_0x1f0c5c+=0x1){_0x272d01=_0x343e6f[_0x1f0c5c][_0xbe74('0x73')]?_0x32e3f5[_0x343e6f[_0x1f0c5c][_0xbe74('0x73')]]['metric']:_0x343e6f[_0x1f0c5c][_0xbe74('0x69')];_0x272d01=_0x343e6f[_0x1f0c5c][_0xbe74('0x75')]?_['replace'](_0x4aed3a[_0x343e6f[_0x1f0c5c][_0xbe74('0x75')]],'%s',_0x272d01):_0x272d01;_0x272d01=_0x343e6f[_0x1f0c5c][_0xbe74('0x76')]?_[_0xbe74('0x77')](_0x161de4[_0x343e6f[_0x1f0c5c][_0xbe74('0x76')]],'%s',_0x272d01):_0x272d01;if(_0x343e6f[_0x1f0c5c][_0xbe74('0x8b')]){_0xc370bb['group'](_0x272d01);}_0x343e6f[_0x1f0c5c][_0xbe74('0x78')]&&_0xc370bb[_0xbe74('0x3c')](_0x272d01,_0x343e6f[_0x1f0c5c][_0xbe74('0x78')]===_0xbe74('0x79')?![]:!![]);_0xc370bb[_0xbe74('0x69')](_0x272d01,_0x343e6f[_0x1f0c5c][_0xbe74('0x7a')]||_0x272d01);}if(_0xcfe068[_0xbe74('0x7b')]){_0xcfe068['joins']=JSON['parse'](_0xcfe068['joins']);for(var _0x26bf00=0x0;_0x26bf00<_0xcfe068['joins'][_0xbe74('0x49')];_0x26bf00+=0x1){if(_0xcfe068['joins'][_0x26bf00]['type']&&_[_0xbe74('0x62')](_0x6f0ce1,_0xcfe068[_0xbe74('0x7b')][_0x26bf00][_0xbe74('0x32')])&&_0xcfe068['joins'][_0x26bf00][_0xbe74('0x7c')]&&_0xcfe068[_0xbe74('0x7b')][_0x26bf00]['foreignTable']&&_0xcfe068[_0xbe74('0x7b')][_0x26bf00][_0xbe74('0x7e')]){_0xc370bb[_0xcfe068[_0xbe74('0x7b')][_0x26bf00][_0xbe74('0x32')]](_0xcfe068[_0xbe74('0x7b')][_0x26bf00][_0xbe74('0x7d')],null,util[_0xbe74('0x76')](_0xbe74('0x8c'),_0xcfe068['table'],_0xcfe068[_0xbe74('0x7b')][_0x26bf00][_0xbe74('0x7c')],_0xcfe068[_0xbe74('0x7b')][_0x26bf00]['foreignTable'],_0xcfe068['joins'][_0x26bf00]['foreignKey']));}}}if(_0xcfe068[_0xbe74('0x7f')]){_0xcfe068[_0xbe74('0x7f')]=JSON[_0xbe74('0x80')](_0xcfe068[_0xbe74('0x7f')]);_0xc370bb['where'](_0x34fe89(_0xcfe068[_0xbe74('0x7f')][_0xbe74('0x68')]));}_0x2642c9=_0xc370bb[_0xbe74('0x8d')]();_0xc370bb[_0xbe74('0x1b')](_0x4e2b69);_0xc370bb[_0xbe74('0x1e')](0x0);return;}})['then'](function(){if(_0x5f204f[_0xbe74('0x8e')]==='web'){return null;}var _0x427ed8=_[_0xbe74('0x40')](_0x5f204f,{'name':_0x5f204f[_0xbe74('0x8f')]||_0x5f204f[_0xbe74('0x2c')]||_0xcfe068[_0xbe74('0x2c')],'basename':_0x3e7973,'savename':util[_0xbe74('0x76')](_0xbe74('0x90'),_0x5f204f[_0xbe74('0x2c')]||_0xcfe068[_0xbe74('0x2c')],require('randomstring')[_0xbe74('0x91')](0x4),_0x5f204f[_0xbe74('0x8e')]||_0xbe74('0x92')),'reportId':_0xcfe068['id'],'reportType':'custom'});return db[_0xbe74('0x93')]['create'](_0x427ed8,{'raw':!![]});})[_0xbe74('0x24')](function(_0x25a994){if(_0xcfe068[_0xbe74('0x72')]==='cdr'){_0x2642c9[_0xbe74('0x3e')](_0xcfe068['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x5f204f['startDate'],_0x5f204f['endDate']);}else{_0x2642c9[_0xbe74('0x3e')](_0xcfe068['table']+_0xbe74('0x94'),_0x5f204f['startDate'],_0x5f204f['endDate']);}if(_0x25a994){logger[_0xbe74('0x95')](_0xbe74('0x96'),_0x2642c9[_0xbe74('0x81')]());require(_0xbe74('0x97'))['fork'](path[_0xbe74('0x54')](__dirname,_0xbe74('0x98'),_0x25a994[_0xbe74('0x8e')]),[_0x25a994['id'],_0x2642c9[_0xbe74('0x81')](),path[_0xbe74('0x54')](__dirname,_0xbe74('0x99'),_0x25a994[_0xbe74('0x9a')]),_0x3e7973]);return _0x25a994;}else{var _0x58c270=squel['select']();_0x58c270[_0xbe74('0x71')]('('+_0x2642c9['toString']()+')',_0xbe74('0x9b'));_0x58c270[_0xbe74('0x69')](_0xbe74('0x9c'),'count');_0x2642c9[_0xbe74('0x1b')](_0x5f204f['limit']||_0x4e2b69);_0x2642c9[_0xbe74('0x1e')](_0x5f204f['offset']||0x0);return dbH['sequelize']['query'](_0x58c270[_0xbe74('0x81')](),{'type':dbH[_0xbe74('0x82')][_0xbe74('0x83')][_0xbe74('0x9d')]})[_0xbe74('0x24')](function(_0x23374c){if(!_0x23374c[_0xbe74('0x49')]){_0x1eec35=0x0;}else{_0x1eec35=_0x23374c[0x0][_0xbe74('0x1d')]||0x0;}return dbH[_0xbe74('0x82')][_0xbe74('0x37')](_0x2642c9[_0xbe74('0x81')](),{'type':dbH['sequelize'][_0xbe74('0x83')][_0xbe74('0x9d')]});})[_0xbe74('0x24')](function(_0x263470){return{'rows':_0x263470||[],'count':_0x1eec35};});}});}exports['run']=function(_0x5ae130,_0x4182aa){return runReport(_0x5ae130[_0xbe74('0x52')],_0x5ae130['query'],_0x5ae130[_0xbe74('0x43')])[_0xbe74('0x24')](respondWithResult(_0x4182aa,null))['catch'](handleError(_0x4182aa,null));};exports['runReport']=runReport;exports['query']=function(_0x554b71,_0x58f798){var _0x2fea55=0xa;var _0x4b8715=[_0xbe74('0x54'),'left_join',_0xbe74('0x56'),_0xbe74('0x57')];var _0x150610={'SUM':_0xbe74('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xbe74('0x59'),'MAX':_0xbe74('0x5a'),'MIN':_0xbe74('0x5b'),'AVG':_0xbe74('0x85'),'GROUP_CONCAT':_0xbe74('0x5c'),'GROUP_CONCAT ASC':_0xbe74('0x5d'),'GROUP_CONCAT DESC':_0xbe74('0x5e')};var _0x2c11b5={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0xbe74('0x87'),'ROUND':_0xbe74('0x60'),'UNIX_TIMESTAMP':_0xbe74('0x61')};var _0x3c02f6=function(_0x218fc7){return!_[_0xbe74('0x62')](['IS\x20NULL',_0xbe74('0x88'),_0xbe74('0x64'),_0xbe74('0x65')],_0x218fc7);};var _0xb0e02e=function(_0x38f3c9){if(!_0x38f3c9||!_0x38f3c9[_0xbe74('0x66')][_0xbe74('0x49')]){return'';}for(var _0x4d315f='(',_0xb153ae=0x0;_0xb153ae<_0x38f3c9[_0xbe74('0x66')]['length'];_0xb153ae+=0x1){_0xb153ae>0x0&&(_0x4d315f+='\x20'+_0x38f3c9[_0xbe74('0x67')]+'\x20');_0x4d315f+=_0x38f3c9[_0xbe74('0x66')][_0xb153ae][_0xbe74('0x68')]?_0xb0e02e(_0x38f3c9[_0xbe74('0x66')][_0xb153ae][_0xbe74('0x68')]):_0x38f3c9[_0xbe74('0x66')][_0xb153ae][_0xbe74('0x69')]+'\x20'+_0x38f3c9[_0xbe74('0x66')][_0xb153ae]['condition']+(_0x3c02f6(_0x38f3c9[_0xbe74('0x66')][_0xb153ae]['condition'])?'\x20'+_0x38f3c9['rules'][_0xb153ae][_0xbe74('0x6b')]:'');}return _0x4d315f+')';};var _0x2cd1cc={'where':{'id':_0x554b71['params']['id']}},_0x477ce6,_0x179ce7,_0x3f5234,_0x1d8a8f,_0x2423e0;_0x2cd1cc=_[_0xbe74('0x40')]({},_0x2cd1cc,_0x554b71['options']);return db[_0xbe74('0x2f')]['find'](_0x2cd1cc)[_0xbe74('0x24')](function(_0x3ac678){if(_0x3ac678){_0x477ce6=_0x3ac678;return _0x3ac678['getFields']();}return null;})[_0xbe74('0x24')](function(_0x193164){if(_0x193164){if(!_0x193164[_0xbe74('0x49')]){throw new db[(_0xbe74('0x6d'))][(_0xbe74('0x6e'))](_0xbe74('0x6f'),0x193);}_0x179ce7=_0x193164;return db[_0xbe74('0x89')]['findAll']({'raw':!![]});}return null;})[_0xbe74('0x24')](function(_0x2168b0){if(_0x2168b0){_0x3f5234=_[_0xbe74('0x70')](_0x2168b0,'id');var _0x5962c6;var _0x2bcb7b=squel['select']();_0x2bcb7b[_0xbe74('0x71')](_0x477ce6[_0xbe74('0x72')]);for(var _0x36ee25=0x0;_0x36ee25<_0x179ce7[_0xbe74('0x49')];_0x36ee25+=0x1){_0x5962c6=_0x179ce7[_0x36ee25]['MetricId']?_0x3f5234[_0x179ce7[_0x36ee25]['MetricId']][_0xbe74('0x74')]:_0x179ce7[_0x36ee25]['field'];_0x5962c6=_0x179ce7[_0x36ee25][_0xbe74('0x75')]?_[_0xbe74('0x77')](_0x150610[_0x179ce7[_0x36ee25][_0xbe74('0x75')]],'%s',_0x5962c6):_0x5962c6;_0x5962c6=_0x179ce7[_0x36ee25][_0xbe74('0x76')]?_[_0xbe74('0x77')](_0x2c11b5[_0x179ce7[_0x36ee25][_0xbe74('0x76')]],'%s',_0x5962c6):_0x5962c6;if(_0x179ce7[_0x36ee25]['groupBy']){_0x2bcb7b[_0xbe74('0x68')](_0x5962c6);}_0x179ce7[_0x36ee25][_0xbe74('0x78')]&&_0x2bcb7b[_0xbe74('0x3c')](_0x5962c6,_0x179ce7[_0x36ee25][_0xbe74('0x78')]==='DESC'?![]:!![]);_0x2bcb7b['field'](_0x5962c6,_0x179ce7[_0x36ee25][_0xbe74('0x7a')]||_0x5962c6);}if(_0x477ce6[_0xbe74('0x7b')]){_0x477ce6['joins']=JSON[_0xbe74('0x80')](_0x477ce6[_0xbe74('0x7b')]);for(var _0x204d93=0x0;_0x204d93<_0x477ce6[_0xbe74('0x7b')][_0xbe74('0x49')];_0x204d93+=0x1){if(_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x32')]&&_[_0xbe74('0x62')](_0x4b8715,_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x32')])&&_0x477ce6['joins'][_0x204d93][_0xbe74('0x7c')]&&_0x477ce6['joins'][_0x204d93][_0xbe74('0x7d')]&&_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x7e')]){_0x2bcb7b[_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x32')]](_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x7d')],null,util[_0xbe74('0x76')](_0xbe74('0x8c'),_0x477ce6['table'],_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x7c')],_0x477ce6[_0xbe74('0x7b')][_0x204d93][_0xbe74('0x7d')],_0x477ce6[_0xbe74('0x7b')][_0x204d93]['foreignKey']));}}}if(_0x477ce6[_0xbe74('0x7f')]){_0x477ce6[_0xbe74('0x7f')]=JSON[_0xbe74('0x80')](_0x477ce6[_0xbe74('0x7f')]);_0x2bcb7b[_0xbe74('0x3e')](_0xb0e02e(_0x477ce6[_0xbe74('0x7f')][_0xbe74('0x68')]));}_0x2423e0=_0x2bcb7b[_0xbe74('0x8d')]();_0x2bcb7b[_0xbe74('0x1b')](_0x2fea55);_0x2bcb7b[_0xbe74('0x1e')](0x0);logger[_0xbe74('0x9e')](_0xbe74('0x9f'),_0x2bcb7b[_0xbe74('0x81')]());return dbH[_0xbe74('0x82')]['query'](_0x2bcb7b['toString'](),{'type':dbH['sequelize'][_0xbe74('0x83')]['SELECT']});}})['then'](function(){return{'sql':_0x2423e0['toString']()};})[_0xbe74('0x24')](respondWithResult(_0x58f798,null))[_0xbe74('0x48')](handleError(_0x58f798,null));};
\ No newline at end of file
index 0c5cee2..d360820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f54=['request-promise','path','rimraf','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment'];(function(_0x21090b,_0x39dd3b){var _0x3c68d7=function(_0x28ecd4){while(--_0x28ecd4){_0x21090b['push'](_0x21090b['shift']());}};_0x3c68d7(++_0x39dd3b);}(_0x7f54,0x15a));var _0x47f5=function(_0x5a6f0d,_0x28bfa5){_0x5a6f0d=_0x5a6f0d-0x0;var _0x13d5f0=_0x7f54[_0x5a6f0d];return _0x13d5f0;};'use strict';var _=require(_0x47f5('0x0'));var util=require(_0x47f5('0x1'));var logger=require(_0x47f5('0x2'))(_0x47f5('0x3'));var moment=require(_0x47f5('0x4'));var BPromise=require('bluebird');var rp=require(_0x47f5('0x5'));var fs=require('fs');var path=require(_0x47f5('0x6'));var rimraf=require(_0x47f5('0x7'));var config=require('../../config/environment');var attributes=require(_0x47f5('0x8'));module[_0x47f5('0x9')]=function(_0x50cb8a,_0xa6c0cc){return _0x50cb8a[_0x47f5('0xa')](_0x47f5('0xb'),attributes,{'tableName':_0x47f5('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6125=['api','moment','bluebird','request-promise','../../config/environment','./analyticCustomReport.attributes','define','analytics_custom_reports','lodash','../../config/logger'];(function(_0x416afb,_0x17bd86){var _0x152cf6=function(_0x34fb4b){while(--_0x34fb4b){_0x416afb['push'](_0x416afb['shift']());}};_0x152cf6(++_0x17bd86);}(_0x6125,0xd0));var _0x5612=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6125[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5612('0x0'));var util=require('util');var logger=require(_0x5612('0x1'))(_0x5612('0x2'));var moment=require(_0x5612('0x3'));var BPromise=require(_0x5612('0x4'));var rp=require(_0x5612('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5612('0x6'));var attributes=require(_0x5612('0x7'));module['exports']=function(_0x2a952d,_0x5531c4){return _0x2a952d[_0x5612('0x8')]('AnalyticCustomReport',attributes,{'tableName':_0x5612('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39073ab..1c82a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c92=['debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s'];(function(_0x432044,_0x35d99b){var _0x108d8d=function(_0x21b73a){while(--_0x21b73a){_0x432044['push'](_0x432044['shift']());}};_0x108d8d(++_0x35d99b);}(_0x0c92,0x195));var _0x20c9=function(_0x1591d4,_0x4ea3bd){_0x1591d4=_0x1591d4-0x0;var _0x4c46bb=_0x0c92[_0x1591d4];return _0x4c46bb;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x20c9('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x20c9('0x1'));var db=require(_0x20c9('0x2'))['db'];var utils=require(_0x20c9('0x3'));var logger=require(_0x20c9('0x4'))(_0x20c9('0x5'));var config=require(_0x20c9('0x6'));var jayson=require(_0x20c9('0x7'));var client=jayson['client'][_0x20c9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2aad6b,_0x1095c7,_0x36450e){return new BPromise(function(_0x38cdae,_0x54ab39){return client[_0x20c9('0x9')](_0x2aad6b,_0x36450e)[_0x20c9('0xa')](function(_0x3ade88){logger[_0x20c9('0xb')](_0x20c9('0xc'),_0x1095c7,'request\x20sent');logger[_0x20c9('0xd')](_0x20c9('0xe'),_0x1095c7,_0x20c9('0xf'),JSON[_0x20c9('0x10')](_0x3ade88));if(_0x3ade88[_0x20c9('0x11')]){if(_0x3ade88[_0x20c9('0x11')][_0x20c9('0x12')]===0x1f4){logger[_0x20c9('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x1095c7,_0x3ade88[_0x20c9('0x11')][_0x20c9('0x13')]);return _0x54ab39(_0x3ade88[_0x20c9('0x11')]['message']);}logger['error'](_0x20c9('0xc'),_0x1095c7,_0x3ade88[_0x20c9('0x11')][_0x20c9('0x13')]);return _0x38cdae(_0x3ade88['error'][_0x20c9('0x13')]);}else{logger[_0x20c9('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x1095c7,_0x20c9('0xf'));_0x38cdae(_0x3ade88[_0x20c9('0x14')]['message']);}})[_0x20c9('0x15')](function(_0x34b376){logger['error'](_0x20c9('0xc'),_0x1095c7,_0x34b376);_0x54ab39(_0x34b376);});});}
\ No newline at end of file
+var _0x1aec=['../../config/environment','client','http','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x18193f,_0x389519){var _0x16f8ec=function(_0x4321e4){while(--_0x4321e4){_0x18193f['push'](_0x18193f['shift']());}};_0x16f8ec(++_0x389519);}(_0x1aec,0x100));var _0xc1ae=function(_0x53efe4,_0x58b196){_0x53efe4=_0x53efe4-0x0;var _0xf94431=_0x1aec[_0x53efe4];return _0xf94431;};'use strict';var _=require(_0xc1ae('0x0'));var util=require(_0xc1ae('0x1'));var moment=require(_0xc1ae('0x2'));var BPromise=require(_0xc1ae('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc1ae('0x4'));var db=require(_0xc1ae('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc1ae('0x6'))(_0xc1ae('0x7'));var config=require(_0xc1ae('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc1ae('0x9')][_0xc1ae('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35af20,_0x427ad0,_0x3875e1){return new BPromise(function(_0x17d13d,_0x2c68aa){return client['request'](_0x35af20,_0x3875e1)[_0xc1ae('0xb')](function(_0x1240ab){logger[_0xc1ae('0xc')](_0xc1ae('0xd'),_0x427ad0,_0xc1ae('0xe'));logger['debug'](_0xc1ae('0xf'),_0x427ad0,_0xc1ae('0xe'),JSON[_0xc1ae('0x10')](_0x1240ab));if(_0x1240ab[_0xc1ae('0x11')]){if(_0x1240ab[_0xc1ae('0x11')][_0xc1ae('0x12')]===0x1f4){logger[_0xc1ae('0x11')](_0xc1ae('0xd'),_0x427ad0,_0x1240ab[_0xc1ae('0x11')][_0xc1ae('0x13')]);return _0x2c68aa(_0x1240ab['error']['message']);}logger[_0xc1ae('0x11')](_0xc1ae('0xd'),_0x427ad0,_0x1240ab[_0xc1ae('0x11')][_0xc1ae('0x13')]);return _0x17d13d(_0x1240ab[_0xc1ae('0x11')][_0xc1ae('0x13')]);}else{logger[_0xc1ae('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x427ad0,_0xc1ae('0xe'));_0x17d13d(_0x1240ab[_0xc1ae('0x14')][_0xc1ae('0x13')]);}})[_0xc1ae('0x15')](function(_0xd1fe1b){logger[_0xc1ae('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x427ad0,_0xd1fe1b);_0x2c68aa(_0xd1fe1b);});});}
\ No newline at end of file
index d48b90e..14d7b05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecbb=['/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','post','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index'];(function(_0x16066e,_0x31e151){var _0x52a12e=function(_0x3e6bed){while(--_0x3e6bed){_0x16066e['push'](_0x16066e['shift']());}};_0x52a12e(++_0x31e151);}(_0xecbb,0x114));var _0xbecb=function(_0x3dfa42,_0x3f34a0){_0x3dfa42=_0x3dfa42-0x0;var _0x553718=_0xecbb[_0x3dfa42];return _0x553718;};'use strict';var multer=require(_0xbecb('0x0'));var util=require(_0xbecb('0x1'));var path=require(_0xbecb('0x2'));var timeout=require(_0xbecb('0x3'));var express=require(_0xbecb('0x4'));var router=express[_0xbecb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xbecb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbecb('0x7'));var controller=require(_0xbecb('0x8'));router[_0xbecb('0x9')]('/',auth[_0xbecb('0xa')](),controller[_0xbecb('0xb')]);router[_0xbecb('0x9')](_0xbecb('0xc'),auth['isAuthenticated'](),controller[_0xbecb('0xd')]);router['get'](_0xbecb('0xe'),auth[_0xbecb('0xa')](),controller[_0xbecb('0xf')]);router[_0xbecb('0x9')](_0xbecb('0x10'),auth[_0xbecb('0xa')](),controller['run']);router['get'](_0xbecb('0x11'),auth['isAuthenticated'](),controller[_0xbecb('0x12')]);router[_0xbecb('0x13')]('/',auth[_0xbecb('0xa')](),controller['create']);router[_0xbecb('0x14')](_0xbecb('0xc'),auth[_0xbecb('0xa')](),controller[_0xbecb('0x15')]);router[_0xbecb('0x16')]('/:id',auth[_0xbecb('0xa')](),controller['destroy']);module[_0xbecb('0x17')]=router;
\ No newline at end of file
+var _0xddf3=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','/:id','show','/:id/preview','/:id/run','run','/:id/query','query','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router'];(function(_0x49fc26,_0x56e2a9){var _0x9423a7=function(_0x34904d){while(--_0x34904d){_0x49fc26['push'](_0x49fc26['shift']());}};_0x9423a7(++_0x56e2a9);}(_0xddf3,0x1dc));var _0x3ddf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xddf3[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3ddf('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3ddf('0x1'));var express=require(_0x3ddf('0x2'));var router=express[_0x3ddf('0x3')]();var fs_extra=require(_0x3ddf('0x4'));var auth=require(_0x3ddf('0x5'));var interaction=require(_0x3ddf('0x6'));var config=require(_0x3ddf('0x7'));var controller=require(_0x3ddf('0x8'));router[_0x3ddf('0x9')]('/',auth[_0x3ddf('0xa')](),controller['index']);router[_0x3ddf('0x9')](_0x3ddf('0xb'),auth[_0x3ddf('0xa')](),controller[_0x3ddf('0xc')]);router['get'](_0x3ddf('0xd'),auth[_0x3ddf('0xa')](),controller['preview']);router[_0x3ddf('0x9')](_0x3ddf('0xe'),auth[_0x3ddf('0xa')](),controller[_0x3ddf('0xf')]);router['get'](_0x3ddf('0x10'),auth[_0x3ddf('0xa')](),controller[_0x3ddf('0x11')]);router['post']('/',auth[_0x3ddf('0xa')](),controller[_0x3ddf('0x12')]);router[_0x3ddf('0x13')](_0x3ddf('0xb'),auth[_0x3ddf('0xa')](),controller[_0x3ddf('0x14')]);router[_0x3ddf('0x15')](_0x3ddf('0xb'),auth[_0x3ddf('0xa')](),controller[_0x3ddf('0x16')]);module[_0x3ddf('0x17')]=router;
\ No newline at end of file
index 501586b..0a16329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['STRING','TEXT','sequelize'];(function(_0x9d14e3,_0x5a6072){var _0x19bf32=function(_0x19da07){while(--_0x19da07){_0x9d14e3['push'](_0x9d14e3['shift']());}};_0x19bf32(++_0x5a6072);}(_0x5fd1,0x155));var _0x15fd=function(_0x14e79f,_0x57fee7){_0x14e79f=_0x14e79f-0x0;var _0x1e00a8=_0x5fd1[_0x14e79f];return _0x1e00a8;};'use strict';var Sequelize=require(_0x15fd('0x0'));module['exports']={'name':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x15fd('0x1')]},'parent':{'type':Sequelize[_0x15fd('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x15fd('0x2')]}};
\ No newline at end of file
+var _0x8958=['TEXT','exports'];(function(_0x53f37f,_0xfb0b18){var _0x2fe5f8=function(_0x76ef2d){while(--_0x76ef2d){_0x53f37f['push'](_0x53f37f['shift']());}};_0x2fe5f8(++_0xfb0b18);}(_0x8958,0x93));var _0x8895=function(_0x2835ae,_0x112c51){_0x2835ae=_0x2835ae-0x0;var _0x47d350=_0x8958[_0x2835ae];return _0x47d350;};'use strict';var Sequelize=require('sequelize');module[_0x8895('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x8895('0x1')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 2b64900..38fb2a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['getFields','ValidationErrorItem','metric','format','DESC','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','sequelize','SELECT','run','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','set','save','destroy','then','get','end','error','stack','name','send','index','map','AnalyticDefaultReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20EMPTY','rules','group','condition','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','field','replace','function','groupBy','orderBy','alias','parse','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','QueryTypes','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','operator','value'];(function(_0x372d37,_0x44d406){var _0x581f50=function(_0x3d2361){while(--_0x3d2361){_0x372d37['push'](_0x372d37['shift']());}};_0x581f50(++_0x44d406);}(_0x2542,0x169));var _0x2254=function(_0x1331a2,_0x388dbb){_0x1331a2=_0x1331a2-0x0;var _0x49050f=_0x2542[_0x1331a2];return _0x49050f;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];var dbH=require(_0x2254('0x19'))[_0x2254('0x1a')];function respondWithStatusCode(_0x3c326b,_0x381efe){_0x381efe=_0x381efe||0xcc;return function(_0x592a4f){if(_0x592a4f){return _0x3c326b[_0x2254('0x1b')](_0x381efe);}return _0x3c326b[_0x2254('0x1c')](_0x381efe)['end']();};}function respondWithResult(_0x2f4de,_0x1e582d){_0x1e582d=_0x1e582d||0xc8;return function(_0xfb23cb){if(_0xfb23cb){return _0x2f4de[_0x2254('0x1c')](_0x1e582d)[_0x2254('0x1d')](_0xfb23cb);}};}function respondWithFilteredResult(_0xbc5548,_0x50f137){return function(_0x18baf4){if(_0x18baf4){var _0x57247a=typeof _0x50f137[_0x2254('0x1e')]===_0x2254('0x1f')&&typeof _0x50f137[_0x2254('0x20')]===_0x2254('0x1f');var _0x1ae11e=_0x18baf4[_0x2254('0x21')];var _0x497724=_0x57247a?0x0:_0x50f137['offset'];var _0x5ec98d=_0x57247a?_0x18baf4[_0x2254('0x21')]:_0x50f137[_0x2254('0x1e')]+_0x50f137[_0x2254('0x20')];var _0x1f1163;if(_0x5ec98d>=_0x1ae11e){_0x5ec98d=_0x1ae11e;_0x1f1163=0xc8;}else{_0x1f1163=0xce;}_0xbc5548[_0x2254('0x1c')](_0x1f1163);return _0xbc5548[_0x2254('0x22')]('Content-Range',_0x497724+'-'+_0x5ec98d+'/'+_0x1ae11e)[_0x2254('0x1d')](_0x18baf4);}return null;};}function patchUpdates(_0x16148d){return function(_0x906cde){try{jsonpatch['apply'](_0x906cde,_0x16148d,!![]);}catch(_0x52fedc){return BPromise['reject'](_0x52fedc);}return _0x906cde[_0x2254('0x23')]();};}function saveUpdates(_0x559af4,_0xf88b56){return function(_0x56b91e){if(_0x56b91e){return _0x56b91e['update'](_0x559af4)['then'](function(_0x540020){return _0x540020;});}return null;};}function removeEntity(_0x5e5edb,_0x4f797d){return function(_0x1aa71f){if(_0x1aa71f){return _0x1aa71f[_0x2254('0x24')]()[_0x2254('0x25')](function(){var _0x265467=_0x1aa71f[_0x2254('0x26')]({'plain':!![]});var _0x1349c9='DefaultReports';return db['UserProfileResource'][_0x2254('0x24')]({'where':{'type':_0x1349c9,'resourceId':_0x265467['id']}})['then'](function(){return _0x1aa71f;});})[_0x2254('0x25')](function(){_0x5e5edb[_0x2254('0x1c')](0xcc)[_0x2254('0x27')]();});}};}function handleEntityNotFound(_0x3aa0bd,_0x19043b){return function(_0x482688){if(!_0x482688){_0x3aa0bd[_0x2254('0x1b')](0x194);}return _0x482688;};}function handleError(_0x2a789b,_0x21285d){_0x21285d=_0x21285d||0x1f4;return function(_0x37af8b){logger[_0x2254('0x28')](_0x37af8b[_0x2254('0x29')]);if(_0x37af8b[_0x2254('0x2a')]){delete _0x37af8b[_0x2254('0x2a')];}_0x2a789b[_0x2254('0x1c')](_0x21285d)[_0x2254('0x2b')](_0x37af8b);};}exports[_0x2254('0x2c')]=function(_0xad7774,_0x220f2a){var _0x27d30a={},_0x4577f4={},_0x1b16c8={'count':0x0,'rows':[]};var _0x2c929f=_[_0x2254('0x2d')](db[_0x2254('0x2e')]['rawAttributes'],function(_0xe29526){return{'name':_0xe29526[_0x2254('0x2f')],'type':_0xe29526[_0x2254('0x30')][_0x2254('0x31')]};});_0x4577f4[_0x2254('0x32')]=_[_0x2254('0x2d')](_0x2c929f,_0x2254('0x2a'));_0x4577f4[_0x2254('0x33')]=_[_0x2254('0x34')](_0xad7774['query']);_0x4577f4[_0x2254('0x35')]=_[_0x2254('0x36')](_0x4577f4['model'],_0x4577f4[_0x2254('0x33')]);_0x27d30a[_0x2254('0x37')]=_[_0x2254('0x36')](_0x4577f4[_0x2254('0x32')],qs['fields'](_0xad7774['query'][_0x2254('0x38')]));_0x27d30a['attributes']=_0x27d30a[_0x2254('0x37')][_0x2254('0x39')]?_0x27d30a[_0x2254('0x37')]:_0x4577f4[_0x2254('0x32')];if(!_0xad7774[_0x2254('0x33')][_0x2254('0x3a')](_0x2254('0x3b'))){_0x27d30a['limit']=qs[_0x2254('0x20')](_0xad7774[_0x2254('0x33')][_0x2254('0x20')]);_0x27d30a[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0xad7774[_0x2254('0x33')][_0x2254('0x1e')]);}_0x27d30a[_0x2254('0x3c')]=qs[_0x2254('0x3d')](_0xad7774[_0x2254('0x33')]['sort']);_0x27d30a[_0x2254('0x3e')]=qs[_0x2254('0x35')](_[_0x2254('0x3f')](_0xad7774[_0x2254('0x33')],_0x4577f4['filters']),_0x2c929f);if(_0xad7774[_0x2254('0x33')][_0x2254('0x40')]){_0x27d30a[_0x2254('0x3e')]=_[_0x2254('0x41')](_0x27d30a[_0x2254('0x3e')],{'$or':_[_0x2254('0x2d')](_0x2c929f,function(_0x423377){if(_0x423377[_0x2254('0x30')]!=='VIRTUAL'){var _0x362ad1={};_0x362ad1[_0x423377['name']]={'$like':'%'+_0xad7774[_0x2254('0x33')][_0x2254('0x40')]+'%'};return _0x362ad1;}})});}_0x27d30a=_[_0x2254('0x41')]({},_0x27d30a,_0xad7774[_0x2254('0x42')]);var _0x460bb3={'where':_0x27d30a[_0x2254('0x3e')]};return db[_0x2254('0x2e')]['count'](_0x460bb3)[_0x2254('0x25')](function(_0x2f1ff9){_0x1b16c8[_0x2254('0x21')]=_0x2f1ff9;if(_0xad7774[_0x2254('0x33')][_0x2254('0x43')]){_0x27d30a['include']=[{'all':!![]}];}return db[_0x2254('0x2e')][_0x2254('0x44')](_0x27d30a);})[_0x2254('0x25')](function(_0x135ed8){_0x1b16c8[_0x2254('0x45')]=_0x135ed8;return _0x1b16c8;})['then'](respondWithFilteredResult(_0x220f2a,_0x27d30a))[_0x2254('0x46')](handleError(_0x220f2a,null));};exports['show']=function(_0x91e091,_0x1ded9a){var _0xb4d042={'raw':!![],'where':{'id':_0x91e091[_0x2254('0x47')]['id']}},_0x31c31e={};_0x31c31e[_0x2254('0x32')]=_[_0x2254('0x34')](db[_0x2254('0x2e')][_0x2254('0x48')]);_0x31c31e[_0x2254('0x33')]=_[_0x2254('0x34')](_0x91e091[_0x2254('0x33')]);_0x31c31e[_0x2254('0x35')]=_['intersection'](_0x31c31e[_0x2254('0x32')],_0x31c31e[_0x2254('0x33')]);_0xb4d042[_0x2254('0x37')]=_['intersection'](_0x31c31e[_0x2254('0x32')],qs[_0x2254('0x38')](_0x91e091[_0x2254('0x33')][_0x2254('0x38')]));_0xb4d042[_0x2254('0x37')]=_0xb4d042[_0x2254('0x37')][_0x2254('0x39')]?_0xb4d042[_0x2254('0x37')]:_0x31c31e[_0x2254('0x32')];if(_0x91e091['query'][_0x2254('0x43')]){_0xb4d042[_0x2254('0x49')]=[{'all':!![]}];}_0xb4d042=_[_0x2254('0x41')]({},_0xb4d042,_0x91e091[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0xb4d042)[_0x2254('0x25')](handleEntityNotFound(_0x1ded9a,null))[_0x2254('0x25')](respondWithResult(_0x1ded9a,null))[_0x2254('0x46')](handleError(_0x1ded9a,null));};exports[_0x2254('0x4b')]=function(_0x5b14c5,_0x36b977){return db[_0x2254('0x2e')]['create'](_0x5b14c5[_0x2254('0x4c')],{})[_0x2254('0x25')](function(_0x12e2ff){var _0x4331a9=_0x5b14c5['user'][_0x2254('0x26')]({'plain':!![]});if(!_0x4331a9)throw new Error(_0x2254('0x4d'));if(_0x4331a9['role']===_0x2254('0x4e')){var _0x3f0670=_0x12e2ff[_0x2254('0x26')]({'plain':!![]});var _0x43bb88='Reports';return db[_0x2254('0x4f')][_0x2254('0x4a')]({'where':{'name':_0x43bb88,'userProfileId':_0x4331a9[_0x2254('0x50')]},'raw':!![]})['then'](function(_0x4cc18a){if(_0x4cc18a&&_0x4cc18a[_0x2254('0x51')]===0x0){return db[_0x2254('0x52')]['create']({'name':_0x3f0670[_0x2254('0x2a')],'resourceId':_0x3f0670['id'],'type':'DefaultReports','sectionId':_0x4cc18a['id']},{})['then'](function(){return _0x12e2ff;});}else{return _0x12e2ff;}})[_0x2254('0x46')](function(_0x135962){logger[_0x2254('0x28')](_0x2254('0x53'),_0x135962);throw _0x135962;});}return _0x12e2ff;})[_0x2254('0x25')](respondWithResult(_0x36b977,0xc9))['catch'](handleError(_0x36b977,null));};exports['update']=function(_0x1bd988,_0x5e3fbc){if(_0x1bd988[_0x2254('0x4c')]['id']){delete _0x1bd988[_0x2254('0x4c')]['id'];}return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x1bd988['params']['id']}})[_0x2254('0x25')](handleEntityNotFound(_0x5e3fbc,null))[_0x2254('0x25')](saveUpdates(_0x1bd988['body'],null))['then'](respondWithResult(_0x5e3fbc,null))[_0x2254('0x46')](handleError(_0x5e3fbc,null));};exports['destroy']=function(_0x2cc59c,_0x305ace){return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x2cc59c[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x305ace,null))['then'](removeEntity(_0x305ace,null))[_0x2254('0x46')](handleError(_0x305ace,null));};exports['preview']=function(_0x335c66,_0x510fe0){var _0x4da493=0xa;var _0x5999c8=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x13606e={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':_0x2254('0x5b'),'MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f391d={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x329378=function(_0xae171c){return!_[_0x2254('0x65')]([_0x2254('0x66'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x2254('0x67')],_0xae171c);};var _0x423c17=function(_0x1d73a3){if(!_0x1d73a3||!_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x53b55b='(',_0x45b7bd=0x0;_0x45b7bd<_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')];_0x45b7bd+=0x1){_0x45b7bd>0x0&&(_0x53b55b+='\x20'+_0x1d73a3['operator']+'\x20');_0x53b55b+=_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]?_0x423c17(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]):_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['field']+'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd][_0x2254('0x6a')]+(_0x329378(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x6a')])?'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['value']:'');}return _0x53b55b+')';};var _0x5cc6bd={'where':{'id':_0x335c66['params']['id']}},_0xde4e7,_0xa159a4,_0x486b82,_0x506d95,_0x48406e;_0x5cc6bd=_[_0x2254('0x41')]({},_0x5cc6bd,_0x335c66['options']);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x5cc6bd)[_0x2254('0x25')](function(_0x1ed6b9){if(_0x1ed6b9){_0xde4e7=_0x1ed6b9;return _0x1ed6b9['getFields']();}return null;})[_0x2254('0x25')](function(_0x5ecf82){if(_0x5ecf82){if(!_0x5ecf82[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xa159a4=_0x5ecf82;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x3b3b20){if(_0x3b3b20){_0x486b82=_[_0x2254('0x6e')](_0x3b3b20,'id');var _0x3cefbe;var _0x4f77e5=squel[_0x2254('0x6f')]();_0x4f77e5[_0x2254('0x70')](_0xde4e7['table']);for(var _0x1ac8ff=0x0;_0x1ac8ff<_0xa159a4[_0x2254('0x39')];_0x1ac8ff+=0x1){_0x3cefbe=_0xa159a4[_0x1ac8ff]['MetricId']?_0x486b82[_0xa159a4[_0x1ac8ff][_0x2254('0x71')]]['metric']:_0xa159a4[_0x1ac8ff][_0x2254('0x72')];_0x3cefbe=_0xa159a4[_0x1ac8ff]['function']?_[_0x2254('0x73')](_0x13606e[_0xa159a4[_0x1ac8ff][_0x2254('0x74')]],'%s',_0x3cefbe):_0x3cefbe;_0x3cefbe=_0xa159a4[_0x1ac8ff]['format']?_[_0x2254('0x73')](_0x2f391d[_0xa159a4[_0x1ac8ff]['format']],'%s',_0x3cefbe):_0x3cefbe;if(_0xa159a4[_0x1ac8ff][_0x2254('0x75')]){_0x4f77e5[_0x2254('0x69')](_0x3cefbe);}_0xa159a4[_0x1ac8ff][_0x2254('0x76')]&&_0x4f77e5['order'](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x76')]==='DESC'?![]:!![]);_0x4f77e5[_0x2254('0x72')](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x77')]||_0x3cefbe);}if(_0xde4e7['joins']){_0xde4e7['joins']=JSON[_0x2254('0x78')](_0xde4e7[_0x2254('0x79')]);for(var _0x451520=0x0;_0x451520<_0xde4e7[_0x2254('0x79')]['length'];_0x451520+=0x1){if(_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x5999c8,_0xde4e7[_0x2254('0x79')][_0x451520]['type'])&&_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7a')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7b')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7c')]){_0x4f77e5[_0xde4e7['joins'][_0x451520]['type']](_0xde4e7['joins'][_0x451520][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0xde4e7[_0x2254('0x7e')],_0xde4e7['joins'][_0x451520][_0x2254('0x7a')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7b')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7c')]));}}}if(_0xde4e7[_0x2254('0x7f')]){_0xde4e7['conditions']=JSON['parse'](_0xde4e7[_0x2254('0x7f')]);_0x4f77e5[_0x2254('0x3e')](_0x423c17(_0xde4e7[_0x2254('0x7f')][_0x2254('0x69')]));}_0x48406e=_0x4f77e5[_0x2254('0x80')]();_0x4f77e5[_0x2254('0x20')](_0x4da493);_0x4f77e5[_0x2254('0x1e')](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4f77e5[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4f77e5[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')]['SELECT']});}})[_0x2254('0x25')](respondWithResult(_0x510fe0,null))[_0x2254('0x46')](handleError(_0x510fe0,null));};function runReport(_0x4dfcb4,_0x1c317b,_0x4e699c){var _0x2ad519=_0x1c317b[_0x2254('0x2a')];var _0x30f2c9=0xa;var _0x1f7a48=['join',_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x3a8d4f={'SUM':'SUM(%s)','COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f3650={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x251d70=function(_0x2c7705){return!_['includes']([_0x2254('0x66'),'IS\x20NOT\x20NULL',_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x2c7705);};var _0x36d121=function(_0x207a09){if(!_0x207a09||!_0x207a09[_0x2254('0x68')]['length']){return'';}for(var _0x8a3656='(',_0x1554f1=0x0;_0x1554f1<_0x207a09[_0x2254('0x68')][_0x2254('0x39')];_0x1554f1+=0x1){_0x1554f1>0x0&&(_0x8a3656+='\x20'+_0x207a09[_0x2254('0x87')]+'\x20');_0x8a3656+=_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]?_0x36d121(_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]):_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x72')]+'\x20'+_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x6a')]+(_0x251d70(_0x207a09['rules'][_0x1554f1][_0x2254('0x6a')])?'\x20'+_0x207a09['rules'][_0x1554f1][_0x2254('0x88')]:'');}return _0x8a3656+')';};var _0xb98b40={'where':{'id':_0x4dfcb4['id']}},_0x3b1d5c,_0x2c907a,_0x23b78c,_0x2b5dba,_0x30307a;_0xb98b40=_['merge']({},_0xb98b40,_0x4e699c);return db[_0x2254('0x2e')]['find'](_0xb98b40)[_0x2254('0x25')](function(_0x52712d){if(_0x52712d){_0x3b1d5c=_0x52712d;return _0x52712d[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x1d0c8f){if(_0x1d0c8f){if(!_0x1d0c8f['length']){throw new db[(_0x2254('0x6b'))][(_0x2254('0x8a'))](_0x2254('0x6c'),0x193);}_0x2c907a=_0x1d0c8f;return db[_0x2254('0x6d')][_0x2254('0x44')]({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x34185c){if(_0x34185c){_0x23b78c=_[_0x2254('0x6e')](_0x34185c,'id');var _0x5e94b6;var _0x56239e=squel[_0x2254('0x6f')]();_0x56239e['from'](_0x3b1d5c[_0x2254('0x7e')]);for(var _0x3a1365=0x0;_0x3a1365<_0x2c907a[_0x2254('0x39')];_0x3a1365+=0x1){_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x71')]?_0x23b78c[_0x2c907a[_0x3a1365][_0x2254('0x71')]][_0x2254('0x8b')]:_0x2c907a[_0x3a1365][_0x2254('0x72')];_0x5e94b6=_0x2c907a[_0x3a1365]['function']?_[_0x2254('0x73')](_0x3a8d4f[_0x2c907a[_0x3a1365][_0x2254('0x74')]],'%s',_0x5e94b6):_0x5e94b6;_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x8c')]?_['replace'](_0x2f3650[_0x2c907a[_0x3a1365][_0x2254('0x8c')]],'%s',_0x5e94b6):_0x5e94b6;if(_0x2c907a[_0x3a1365][_0x2254('0x75')]){_0x56239e[_0x2254('0x69')](_0x5e94b6);}_0x2c907a[_0x3a1365][_0x2254('0x76')]&&_0x56239e[_0x2254('0x3c')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x56239e[_0x2254('0x72')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x77')]||_0x5e94b6);}if(_0x3b1d5c['joins']){_0x3b1d5c[_0x2254('0x79')]=JSON[_0x2254('0x78')](_0x3b1d5c['joins']);for(var _0x4cec5b=0x0;_0x4cec5b<_0x3b1d5c[_0x2254('0x79')]['length'];_0x4cec5b+=0x1){if(_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x1f7a48,_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')])&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7a')]&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b]['foreignTable']&&_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7c')]){_0x56239e[_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]](_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3b1d5c[_0x2254('0x7e')],_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7a')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7c')]));}}}if(_0x3b1d5c[_0x2254('0x7f')]){_0x3b1d5c[_0x2254('0x7f')]=JSON['parse'](_0x3b1d5c[_0x2254('0x7f')]);_0x56239e[_0x2254('0x3e')](_0x36d121(_0x3b1d5c['conditions'][_0x2254('0x69')]));}_0x30307a=_0x56239e[_0x2254('0x80')]();_0x56239e[_0x2254('0x20')](_0x30f2c9);_0x56239e[_0x2254('0x1e')](0x0);return;}})[_0x2254('0x25')](function(){if(_0x1c317b[_0x2254('0x8e')]===_0x2254('0x8f')){return null;}var _0x38e2df=_[_0x2254('0x41')](_0x1c317b,{'name':_0x1c317b[_0x2254('0x90')]||_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c['name'],'basename':_0x2ad519,'savename':util[_0x2254('0x8c')](_0x2254('0x91'),_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c[_0x2254('0x2a')],require(_0x2254('0x92'))[_0x2254('0x93')](0x4),_0x1c317b[_0x2254('0x8e')]||'csv'),'reportId':_0x3b1d5c['id'],'reportType':_0x2254('0x94')});return db[_0x2254('0x95')][_0x2254('0x4b')](_0x38e2df,{'raw':!![]});})['then'](function(_0x60f5ac){if(_0x3b1d5c[_0x2254('0x7e')]===_0x2254('0x96')){_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x97'),_0x1c317b['startDate'],_0x1c317b[_0x2254('0x98')]);}else{_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x99'),_0x1c317b[_0x2254('0x9a')],_0x1c317b['endDate']);}if(_0x60f5ac){logger['info'](_0x2254('0x9b'),_0x30307a['toString']());require(_0x2254('0x9c'))[_0x2254('0x9d')](path[_0x2254('0x54')](__dirname,_0x2254('0x9e'),_0x60f5ac[_0x2254('0x8e')]),[_0x60f5ac['id'],_0x30307a[_0x2254('0x83')](),path['join'](__dirname,'../../files/reports',_0x60f5ac[_0x2254('0x9f')]),_0x2ad519]);return _0x60f5ac;}else{var _0x3317d4=squel[_0x2254('0x6f')]();_0x3317d4[_0x2254('0x70')]('('+_0x30307a['toString']()+')',_0x2254('0xa0'));_0x3317d4[_0x2254('0x72')](_0x2254('0xa1'),_0x2254('0x21'));_0x30307a[_0x2254('0x20')](_0x1c317b[_0x2254('0x20')]||_0x30f2c9);_0x30307a[_0x2254('0x1e')](_0x1c317b[_0x2254('0x1e')]||0x0);return dbH[_0x2254('0xa2')]['query'](_0x3317d4[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')]['SELECT']})[_0x2254('0x25')](function(_0xe38a28){if(!_0xe38a28[_0x2254('0x39')]){_0x2b5dba=0x0;}else{_0x2b5dba=_0xe38a28[0x0]['count']||0x0;}return dbH['sequelize'][_0x2254('0x33')](_0x30307a[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')][_0x2254('0xa3')]});})[_0x2254('0x25')](function(_0x4011de){return{'rows':_0x4011de||[],'count':_0x2b5dba};});}});}exports[_0x2254('0xa4')]=function(_0x5cb3d1,_0x1d8238){return runReport(_0x5cb3d1[_0x2254('0x47')],_0x5cb3d1[_0x2254('0x33')],_0x5cb3d1[_0x2254('0x42')])[_0x2254('0x25')](respondWithResult(_0x1d8238,null))[_0x2254('0x46')](handleError(_0x1d8238,null));};exports['runReport']=runReport;exports['query']=function(_0x40339d,_0x4b3b96){var _0x59b8af=0xa;var _0x408695=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),'cross_join'];var _0x596eae={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x739a29={'SEC_TO_TIME':_0x2254('0x61'),'DATE':'DATE(%s)','HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x243466=function(_0x1b8587){return!_[_0x2254('0x65')]([_0x2254('0x66'),_0x2254('0xa5'),_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x1b8587);};var _0xbec5d0=function(_0x18f841){if(!_0x18f841||!_0x18f841[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x275b56='(',_0x315add=0x0;_0x315add<_0x18f841['rules']['length'];_0x315add+=0x1){_0x315add>0x0&&(_0x275b56+='\x20'+_0x18f841[_0x2254('0x87')]+'\x20');_0x275b56+=_0x18f841['rules'][_0x315add][_0x2254('0x69')]?_0xbec5d0(_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x69')]):_0x18f841[_0x2254('0x68')][_0x315add]['field']+'\x20'+_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x6a')]+(_0x243466(_0x18f841[_0x2254('0x68')][_0x315add]['condition'])?'\x20'+_0x18f841['rules'][_0x315add][_0x2254('0x88')]:'');}return _0x275b56+')';};var _0x51b02a={'where':{'id':_0x40339d[_0x2254('0x47')]['id']}},_0x3e7642,_0xe1abb6,_0x1a44d0,_0x4af6a7,_0x539aba;_0x51b02a=_[_0x2254('0x41')]({},_0x51b02a,_0x40339d[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x51b02a)['then'](function(_0x34e28b){if(_0x34e28b){_0x3e7642=_0x34e28b;return _0x34e28b[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x5d373){if(_0x5d373){if(!_0x5d373[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xe1abb6=_0x5d373;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x56a7ce){if(_0x56a7ce){_0x1a44d0=_[_0x2254('0x6e')](_0x56a7ce,'id');var _0x34bf19;var _0x4965c7=squel[_0x2254('0x6f')]();_0x4965c7[_0x2254('0x70')](_0x3e7642[_0x2254('0x7e')]);for(var _0x45541b=0x0;_0x45541b<_0xe1abb6[_0x2254('0x39')];_0x45541b+=0x1){_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x71')]?_0x1a44d0[_0xe1abb6[_0x45541b][_0x2254('0x71')]][_0x2254('0x8b')]:_0xe1abb6[_0x45541b][_0x2254('0x72')];_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x74')]?_[_0x2254('0x73')](_0x596eae[_0xe1abb6[_0x45541b][_0x2254('0x74')]],'%s',_0x34bf19):_0x34bf19;_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x8c')]?_[_0x2254('0x73')](_0x739a29[_0xe1abb6[_0x45541b]['format']],'%s',_0x34bf19):_0x34bf19;if(_0xe1abb6[_0x45541b][_0x2254('0x75')]){_0x4965c7[_0x2254('0x69')](_0x34bf19);}_0xe1abb6[_0x45541b]['orderBy']&&_0x4965c7['order'](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x4965c7[_0x2254('0x72')](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x77')]||_0x34bf19);}if(_0x3e7642['joins']){_0x3e7642[_0x2254('0x79')]=JSON['parse'](_0x3e7642['joins']);for(var _0x40fec0=0x0;_0x40fec0<_0x3e7642[_0x2254('0x79')][_0x2254('0x39')];_0x40fec0+=0x1){if(_0x3e7642[_0x2254('0x79')][_0x40fec0]['type']&&_[_0x2254('0x65')](_0x408695,_0x3e7642['joins'][_0x40fec0][_0x2254('0x30')])&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]){_0x4965c7[_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x30')]](_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0x3e7642[_0x2254('0x7e')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]));}}}if(_0x3e7642['conditions']){_0x3e7642[_0x2254('0x7f')]=JSON[_0x2254('0x78')](_0x3e7642[_0x2254('0x7f')]);_0x4965c7[_0x2254('0x3e')](_0xbec5d0(_0x3e7642[_0x2254('0x7f')]['group']));}_0x539aba=_0x4965c7[_0x2254('0x80')]();_0x4965c7[_0x2254('0x20')](_0x59b8af);_0x4965c7['offset'](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4965c7[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4965c7[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')][_0x2254('0xa3')]});}})[_0x2254('0x25')](function(){return{'sql':_0x539aba[_0x2254('0x83')]()};})['then'](respondWithResult(_0x4b3b96,null))[_0x2254('0x46')](handleError(_0x4b3b96,null));};
\ No newline at end of file
+var _0xc6ac=['keyBy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','dbH','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','DefaultReports','UserProfileResource','stack','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','name','query','keys','filters','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','intersection','length','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','preview','left_join','right_join','cross_join','SUM(%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)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','field','condition','value','Sequelize','AnalyticMetric','select','from','table','MetricId','replace','format','group','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','join','COUNT(%s)','COUNT(DISTINCT\x20%s)','IS\x20NOT\x20EMPTY','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','metric','function','groupBy','orderBy','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','getFields'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x38171b,_0x43fb14){_0x38171b=_0x38171b-0x0;var _0x10b035=_0xc6ac[_0x38171b];return _0x10b035;};'use strict';var emlformat=require(_0xcc6a('0x0'));var rimraf=require(_0xcc6a('0x1'));var zipdir=require(_0xcc6a('0x2'));var jsonpatch=require(_0xcc6a('0x3'));var rp=require(_0xcc6a('0x4'));var moment=require(_0xcc6a('0x5'));var BPromise=require(_0xcc6a('0x6'));var Mustache=require(_0xcc6a('0x7'));var util=require(_0xcc6a('0x8'));var path=require(_0xcc6a('0x9'));var sox=require(_0xcc6a('0xa'));var csv=require(_0xcc6a('0xb'));var ejs=require(_0xcc6a('0xc'));var fs=require('fs');var fs_extra=require(_0xcc6a('0xd'));var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xb'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xcc6a('0x1b')];function respondWithStatusCode(_0x211444,_0x4300c0){_0x4300c0=_0x4300c0||0xcc;return function(_0x559a0a){if(_0x559a0a){return _0x211444['sendStatus'](_0x4300c0);}return _0x211444[_0xcc6a('0x1c')](_0x4300c0)[_0xcc6a('0x1d')]();};}function respondWithResult(_0x43710d,_0x348af7){_0x348af7=_0x348af7||0xc8;return function(_0x96f9de){if(_0x96f9de){return _0x43710d[_0xcc6a('0x1c')](_0x348af7)[_0xcc6a('0x1e')](_0x96f9de);}};}function respondWithFilteredResult(_0x403b18,_0x56ffb0){return function(_0x4e628f){if(_0x4e628f){var _0x4d021a=typeof _0x56ffb0[_0xcc6a('0x1f')]===_0xcc6a('0x20')&&typeof _0x56ffb0[_0xcc6a('0x21')]===_0xcc6a('0x20');var _0x33079c=_0x4e628f[_0xcc6a('0x22')];var _0x2d9585=_0x4d021a?0x0:_0x56ffb0[_0xcc6a('0x1f')];var _0x374e51=_0x4d021a?_0x4e628f[_0xcc6a('0x22')]:_0x56ffb0[_0xcc6a('0x1f')]+_0x56ffb0['limit'];var _0xfec60f;if(_0x374e51>=_0x33079c){_0x374e51=_0x33079c;_0xfec60f=0xc8;}else{_0xfec60f=0xce;}_0x403b18[_0xcc6a('0x1c')](_0xfec60f);return _0x403b18[_0xcc6a('0x23')](_0xcc6a('0x24'),_0x2d9585+'-'+_0x374e51+'/'+_0x33079c)[_0xcc6a('0x1e')](_0x4e628f);}return null;};}function patchUpdates(_0x30b8ed){return function(_0x36c80f){try{jsonpatch[_0xcc6a('0x25')](_0x36c80f,_0x30b8ed,!![]);}catch(_0x2254a8){return BPromise[_0xcc6a('0x26')](_0x2254a8);}return _0x36c80f[_0xcc6a('0x27')]();};}function saveUpdates(_0x845088,_0x51be9a){return function(_0x41c4c8){if(_0x41c4c8){return _0x41c4c8[_0xcc6a('0x28')](_0x845088)[_0xcc6a('0x29')](function(_0x581aae){return _0x581aae;});}return null;};}function removeEntity(_0x10016a,_0x294486){return function(_0x3a00e5){if(_0x3a00e5){return _0x3a00e5[_0xcc6a('0x2a')]()[_0xcc6a('0x29')](function(){var _0x5fc697=_0x3a00e5['get']({'plain':!![]});var _0x26def8=_0xcc6a('0x2b');return db[_0xcc6a('0x2c')]['destroy']({'where':{'type':_0x26def8,'resourceId':_0x5fc697['id']}})[_0xcc6a('0x29')](function(){return _0x3a00e5;});})[_0xcc6a('0x29')](function(){_0x10016a['status'](0xcc)[_0xcc6a('0x1d')]();});}};}function handleEntityNotFound(_0x8b1b2b,_0x3233d1){return function(_0x473f88){if(!_0x473f88){_0x8b1b2b['sendStatus'](0x194);}return _0x473f88;};}function handleError(_0x194aab,_0x3cf14c){_0x3cf14c=_0x3cf14c||0x1f4;return function(_0x2c6d88){logger['error'](_0x2c6d88[_0xcc6a('0x2d')]);if(_0x2c6d88['name']){delete _0x2c6d88['name'];}_0x194aab[_0xcc6a('0x1c')](_0x3cf14c)[_0xcc6a('0x2e')](_0x2c6d88);};}exports[_0xcc6a('0x2f')]=function(_0x11b481,_0x2b575d){var _0x131138={},_0x4e2de4={},_0x7b2b54={'count':0x0,'rows':[]};var _0x28e3c3=_[_0xcc6a('0x30')](db[_0xcc6a('0x31')][_0xcc6a('0x32')],function(_0x152ebd){return{'name':_0x152ebd[_0xcc6a('0x33')],'type':_0x152ebd[_0xcc6a('0x34')]['key']};});_0x4e2de4[_0xcc6a('0x35')]=_[_0xcc6a('0x30')](_0x28e3c3,_0xcc6a('0x36'));_0x4e2de4[_0xcc6a('0x37')]=_[_0xcc6a('0x38')](_0x11b481[_0xcc6a('0x37')]);_0x4e2de4[_0xcc6a('0x39')]=_['intersection'](_0x4e2de4[_0xcc6a('0x35')],_0x4e2de4['query']);_0x131138['attributes']=_['intersection'](_0x4e2de4[_0xcc6a('0x35')],qs[_0xcc6a('0x3a')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x3a')]));_0x131138[_0xcc6a('0x3b')]=_0x131138['attributes']['length']?_0x131138[_0xcc6a('0x3b')]:_0x4e2de4[_0xcc6a('0x35')];if(!_0x11b481[_0xcc6a('0x37')]['hasOwnProperty'](_0xcc6a('0x3c'))){_0x131138[_0xcc6a('0x21')]=qs[_0xcc6a('0x21')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x21')]);_0x131138[_0xcc6a('0x1f')]=qs[_0xcc6a('0x1f')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x1f')]);}_0x131138[_0xcc6a('0x3d')]=qs[_0xcc6a('0x3e')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x3e')]);_0x131138[_0xcc6a('0x3f')]=qs[_0xcc6a('0x39')](_[_0xcc6a('0x40')](_0x11b481[_0xcc6a('0x37')],_0x4e2de4[_0xcc6a('0x39')]),_0x28e3c3);if(_0x11b481['query']['filter']){_0x131138[_0xcc6a('0x3f')]=_[_0xcc6a('0x41')](_0x131138[_0xcc6a('0x3f')],{'$or':_[_0xcc6a('0x30')](_0x28e3c3,function(_0x1e628b){if(_0x1e628b[_0xcc6a('0x34')]!==_0xcc6a('0x42')){var _0x1199f1={};_0x1199f1[_0x1e628b['name']]={'$like':'%'+_0x11b481['query'][_0xcc6a('0x43')]+'%'};return _0x1199f1;}})});}_0x131138=_['merge']({},_0x131138,_0x11b481['options']);var _0x5cf1ba={'where':_0x131138[_0xcc6a('0x3f')]};return db[_0xcc6a('0x31')][_0xcc6a('0x22')](_0x5cf1ba)[_0xcc6a('0x29')](function(_0xe8056f){_0x7b2b54['count']=_0xe8056f;if(_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x44')]){_0x131138[_0xcc6a('0x45')]=[{'all':!![]}];}return db[_0xcc6a('0x31')][_0xcc6a('0x46')](_0x131138);})[_0xcc6a('0x29')](function(_0x54f862){_0x7b2b54[_0xcc6a('0x47')]=_0x54f862;return _0x7b2b54;})[_0xcc6a('0x29')](respondWithFilteredResult(_0x2b575d,_0x131138))[_0xcc6a('0x48')](handleError(_0x2b575d,null));};exports[_0xcc6a('0x49')]=function(_0x494904,_0x1fe723){var _0x4a9cea={'raw':!![],'where':{'id':_0x494904[_0xcc6a('0x4a')]['id']}},_0x351529={};_0x351529[_0xcc6a('0x35')]=_['keys'](db[_0xcc6a('0x31')][_0xcc6a('0x32')]);_0x351529[_0xcc6a('0x37')]=_['keys'](_0x494904['query']);_0x351529[_0xcc6a('0x39')]=_[_0xcc6a('0x4b')](_0x351529[_0xcc6a('0x35')],_0x351529[_0xcc6a('0x37')]);_0x4a9cea[_0xcc6a('0x3b')]=_['intersection'](_0x351529[_0xcc6a('0x35')],qs[_0xcc6a('0x3a')](_0x494904['query'][_0xcc6a('0x3a')]));_0x4a9cea[_0xcc6a('0x3b')]=_0x4a9cea[_0xcc6a('0x3b')][_0xcc6a('0x4c')]?_0x4a9cea[_0xcc6a('0x3b')]:_0x351529[_0xcc6a('0x35')];if(_0x494904['query']['includeAll']){_0x4a9cea['include']=[{'all':!![]}];}_0x4a9cea=_[_0xcc6a('0x41')]({},_0x4a9cea,_0x494904[_0xcc6a('0x4d')]);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x4a9cea)['then'](handleEntityNotFound(_0x1fe723,null))[_0xcc6a('0x29')](respondWithResult(_0x1fe723,null))['catch'](handleError(_0x1fe723,null));};exports[_0xcc6a('0x4f')]=function(_0x4299ca,_0xcfc540){return db[_0xcc6a('0x31')][_0xcc6a('0x4f')](_0x4299ca[_0xcc6a('0x50')],{})['then'](function(_0x1a3b82){var _0x7288b2=_0x4299ca[_0xcc6a('0x51')][_0xcc6a('0x52')]({'plain':!![]});if(!_0x7288b2)throw new Error(_0xcc6a('0x53'));if(_0x7288b2[_0xcc6a('0x54')]===_0xcc6a('0x51')){var _0x392805=_0x1a3b82[_0xcc6a('0x52')]({'plain':!![]});var _0x30d0ef='Reports';return db[_0xcc6a('0x55')][_0xcc6a('0x4e')]({'where':{'name':_0x30d0ef,'userProfileId':_0x7288b2[_0xcc6a('0x56')]},'raw':!![]})[_0xcc6a('0x29')](function(_0x14f5e5){if(_0x14f5e5&&_0x14f5e5[_0xcc6a('0x57')]===0x0){return db['UserProfileResource']['create']({'name':_0x392805[_0xcc6a('0x36')],'resourceId':_0x392805['id'],'type':'DefaultReports','sectionId':_0x14f5e5['id']},{})[_0xcc6a('0x29')](function(){return _0x1a3b82;});}else{return _0x1a3b82;}})[_0xcc6a('0x48')](function(_0x2b5782){logger[_0xcc6a('0x58')](_0xcc6a('0x59'),_0x2b5782);throw _0x2b5782;});}return _0x1a3b82;})[_0xcc6a('0x29')](respondWithResult(_0xcfc540,0xc9))[_0xcc6a('0x48')](handleError(_0xcfc540,null));};exports[_0xcc6a('0x28')]=function(_0x68b823,_0x27b074){if(_0x68b823[_0xcc6a('0x50')]['id']){delete _0x68b823['body']['id'];}return db[_0xcc6a('0x31')]['find']({'where':{'id':_0x68b823[_0xcc6a('0x4a')]['id']}})[_0xcc6a('0x29')](handleEntityNotFound(_0x27b074,null))[_0xcc6a('0x29')](saveUpdates(_0x68b823['body'],null))[_0xcc6a('0x29')](respondWithResult(_0x27b074,null))['catch'](handleError(_0x27b074,null));};exports[_0xcc6a('0x2a')]=function(_0x5db3b5,_0x3c0b1c){return db[_0xcc6a('0x31')][_0xcc6a('0x4e')]({'where':{'id':_0x5db3b5[_0xcc6a('0x4a')]['id']}})[_0xcc6a('0x29')](handleEntityNotFound(_0x3c0b1c,null))[_0xcc6a('0x29')](removeEntity(_0x3c0b1c,null))[_0xcc6a('0x48')](handleError(_0x3c0b1c,null));};exports[_0xcc6a('0x5a')]=function(_0x506311,_0x14d3ff){var _0x56d512=0xa;var _0x3a6b7e=['join',_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x586789={'SUM':_0xcc6a('0x5e'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xcc6a('0x5f'),'MIN':_0xcc6a('0x60'),'AVG':_0xcc6a('0x61'),'GROUP_CONCAT':_0xcc6a('0x62'),'GROUP_CONCAT ASC':_0xcc6a('0x63'),'GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x389e5f={'SEC_TO_TIME':_0xcc6a('0x65'),'DATE':_0xcc6a('0x66'),'HOUR':_0xcc6a('0x67'),'ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x2cc561=function(_0x483aa4){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),_0xcc6a('0x6c'),_0xcc6a('0x6d'),'IS\x20NOT\x20EMPTY'],_0x483aa4);};var _0x46d93b=function(_0x4ed702){if(!_0x4ed702||!_0x4ed702[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x20a16b='(',_0x19a578=0x0;_0x19a578<_0x4ed702[_0xcc6a('0x6e')][_0xcc6a('0x4c')];_0x19a578+=0x1){_0x19a578>0x0&&(_0x20a16b+='\x20'+_0x4ed702[_0xcc6a('0x6f')]+'\x20');_0x20a16b+=_0x4ed702[_0xcc6a('0x6e')][_0x19a578]['group']?_0x46d93b(_0x4ed702['rules'][_0x19a578]['group']):_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x70')]+'\x20'+_0x4ed702[_0xcc6a('0x6e')][_0x19a578]['condition']+(_0x2cc561(_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x71')])?'\x20'+_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x72')]:'');}return _0x20a16b+')';};var _0x5e1c69={'where':{'id':_0x506311['params']['id']}},_0x481d25,_0xaec5e8,_0x41527b,_0x4403d3,_0x386a74;_0x5e1c69=_[_0xcc6a('0x41')]({},_0x5e1c69,_0x506311[_0xcc6a('0x4d')]);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x5e1c69)[_0xcc6a('0x29')](function(_0x55d129){if(_0x55d129){_0x481d25=_0x55d129;return _0x55d129['getFields']();}return null;})[_0xcc6a('0x29')](function(_0xd1a27b){if(_0xd1a27b){if(!_0xd1a27b[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xaec5e8=_0xd1a27b;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x421d0b){if(_0x421d0b){_0x41527b=_['keyBy'](_0x421d0b,'id');var _0x4a8863;var _0x58e6b4=squel[_0xcc6a('0x75')]();_0x58e6b4[_0xcc6a('0x76')](_0x481d25[_0xcc6a('0x77')]);for(var _0x729b2=0x0;_0x729b2<_0xaec5e8['length'];_0x729b2+=0x1){_0x4a8863=_0xaec5e8[_0x729b2][_0xcc6a('0x78')]?_0x41527b[_0xaec5e8[_0x729b2][_0xcc6a('0x78')]]['metric']:_0xaec5e8[_0x729b2][_0xcc6a('0x70')];_0x4a8863=_0xaec5e8[_0x729b2]['function']?_[_0xcc6a('0x79')](_0x586789[_0xaec5e8[_0x729b2]['function']],'%s',_0x4a8863):_0x4a8863;_0x4a8863=_0xaec5e8[_0x729b2][_0xcc6a('0x7a')]?_[_0xcc6a('0x79')](_0x389e5f[_0xaec5e8[_0x729b2][_0xcc6a('0x7a')]],'%s',_0x4a8863):_0x4a8863;if(_0xaec5e8[_0x729b2]['groupBy']){_0x58e6b4[_0xcc6a('0x7b')](_0x4a8863);}_0xaec5e8[_0x729b2]['orderBy']&&_0x58e6b4[_0xcc6a('0x3d')](_0x4a8863,_0xaec5e8[_0x729b2]['orderBy']===_0xcc6a('0x7c')?![]:!![]);_0x58e6b4[_0xcc6a('0x70')](_0x4a8863,_0xaec5e8[_0x729b2][_0xcc6a('0x7d')]||_0x4a8863);}if(_0x481d25[_0xcc6a('0x7e')]){_0x481d25[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x481d25['joins']);for(var _0x18f5dc=0x0;_0x18f5dc<_0x481d25[_0xcc6a('0x7e')][_0xcc6a('0x4c')];_0x18f5dc+=0x1){if(_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')]&&_['includes'](_0x3a6b7e,_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')])&&_0x481d25['joins'][_0x18f5dc]['parentKey']&&_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x80')]&&_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x81')]){_0x58e6b4[_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')]](_0x481d25['joins'][_0x18f5dc][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x481d25[_0xcc6a('0x77')],_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x83')],_0x481d25['joins'][_0x18f5dc]['foreignTable'],_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x81')]));}}}if(_0x481d25[_0xcc6a('0x84')]){_0x481d25[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x481d25[_0xcc6a('0x84')]);_0x58e6b4[_0xcc6a('0x3f')](_0x46d93b(_0x481d25['conditions'][_0xcc6a('0x7b')]));}_0x386a74=_0x58e6b4[_0xcc6a('0x85')]();_0x58e6b4[_0xcc6a('0x21')](_0x56d512);_0x58e6b4[_0xcc6a('0x1f')](0x0);logger[_0xcc6a('0x86')](_0xcc6a('0x87'),_0x58e6b4['toString']());return dbH[_0xcc6a('0x88')][_0xcc6a('0x37')](_0x58e6b4[_0xcc6a('0x89')](),{'type':dbH['sequelize'][_0xcc6a('0x8a')][_0xcc6a('0x8b')]});}})[_0xcc6a('0x29')](respondWithResult(_0x14d3ff,null))[_0xcc6a('0x48')](handleError(_0x14d3ff,null));};function runReport(_0x2a25df,_0x1f1ff7,_0x565bcd){var _0x45c45f=_0x1f1ff7[_0xcc6a('0x36')];var _0x58cd56=0xa;var _0x1848dd=[_0xcc6a('0x8c'),_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x5abd5c={'SUM':_0xcc6a('0x5e'),'COUNT':_0xcc6a('0x8d'),'COUNT DISTINCT':_0xcc6a('0x8e'),'MAX':_0xcc6a('0x5f'),'MIN':_0xcc6a('0x60'),'AVG':_0xcc6a('0x61'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x5be65b={'SEC_TO_TIME':_0xcc6a('0x65'),'DATE':_0xcc6a('0x66'),'HOUR':_0xcc6a('0x67'),'ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x2b5c15=function(_0x3207b2){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),_0xcc6a('0x6c'),_0xcc6a('0x6d'),_0xcc6a('0x8f')],_0x3207b2);};var _0x58fdb3=function(_0xb4b2b4){if(!_0xb4b2b4||!_0xb4b2b4[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x275e15='(',_0x53b419=0x0;_0x53b419<_0xb4b2b4[_0xcc6a('0x6e')]['length'];_0x53b419+=0x1){_0x53b419>0x0&&(_0x275e15+='\x20'+_0xb4b2b4[_0xcc6a('0x6f')]+'\x20');_0x275e15+=_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x7b')]?_0x58fdb3(_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x7b')]):_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x70')]+'\x20'+_0xb4b2b4['rules'][_0x53b419][_0xcc6a('0x71')]+(_0x2b5c15(_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x71')])?'\x20'+_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x72')]:'');}return _0x275e15+')';};var _0x4473ab={'where':{'id':_0x2a25df['id']}},_0x558e2f,_0x14a957,_0x350766,_0x589bff,_0x5661b5;_0x4473ab=_[_0xcc6a('0x41')]({},_0x4473ab,_0x565bcd);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x4473ab)[_0xcc6a('0x29')](function(_0x2f0b79){if(_0x2f0b79){_0x558e2f=_0x2f0b79;return _0x2f0b79['getFields']();}return null;})[_0xcc6a('0x29')](function(_0x4a268b){if(_0x4a268b){if(!_0x4a268b[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))][(_0xcc6a('0x90'))](_0xcc6a('0x91'),0x193);}_0x14a957=_0x4a268b;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x1f4c4e){if(_0x1f4c4e){_0x350766=_['keyBy'](_0x1f4c4e,'id');var _0x312431;var _0x2a850c=squel[_0xcc6a('0x75')]();_0x2a850c['from'](_0x558e2f[_0xcc6a('0x77')]);for(var _0xd5b9f3=0x0;_0xd5b9f3<_0x14a957[_0xcc6a('0x4c')];_0xd5b9f3+=0x1){_0x312431=_0x14a957[_0xd5b9f3][_0xcc6a('0x78')]?_0x350766[_0x14a957[_0xd5b9f3][_0xcc6a('0x78')]][_0xcc6a('0x92')]:_0x14a957[_0xd5b9f3][_0xcc6a('0x70')];_0x312431=_0x14a957[_0xd5b9f3]['function']?_[_0xcc6a('0x79')](_0x5abd5c[_0x14a957[_0xd5b9f3][_0xcc6a('0x93')]],'%s',_0x312431):_0x312431;_0x312431=_0x14a957[_0xd5b9f3][_0xcc6a('0x7a')]?_[_0xcc6a('0x79')](_0x5be65b[_0x14a957[_0xd5b9f3][_0xcc6a('0x7a')]],'%s',_0x312431):_0x312431;if(_0x14a957[_0xd5b9f3][_0xcc6a('0x94')]){_0x2a850c[_0xcc6a('0x7b')](_0x312431);}_0x14a957[_0xd5b9f3][_0xcc6a('0x95')]&&_0x2a850c['order'](_0x312431,_0x14a957[_0xd5b9f3]['orderBy']===_0xcc6a('0x7c')?![]:!![]);_0x2a850c['field'](_0x312431,_0x14a957[_0xd5b9f3][_0xcc6a('0x7d')]||_0x312431);}if(_0x558e2f[_0xcc6a('0x7e')]){_0x558e2f[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x558e2f[_0xcc6a('0x7e')]);for(var _0x1f7ee5=0x0;_0x1f7ee5<_0x558e2f[_0xcc6a('0x7e')]['length'];_0x1f7ee5+=0x1){if(_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['type']&&_['includes'](_0x1848dd,_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['type'])&&_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x83')]&&_0x558e2f['joins'][_0x1f7ee5]['foreignTable']&&_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['foreignKey']){_0x2a850c[_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x34')]](_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x558e2f['table'],_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x83')],_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x80')],_0x558e2f['joins'][_0x1f7ee5][_0xcc6a('0x81')]));}}}if(_0x558e2f[_0xcc6a('0x84')]){_0x558e2f[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x558e2f[_0xcc6a('0x84')]);_0x2a850c[_0xcc6a('0x3f')](_0x58fdb3(_0x558e2f[_0xcc6a('0x84')]['group']));}_0x5661b5=_0x2a850c[_0xcc6a('0x85')]();_0x2a850c[_0xcc6a('0x21')](_0x58cd56);_0x2a850c['offset'](0x0);return;}})[_0xcc6a('0x29')](function(){if(_0x1f1ff7[_0xcc6a('0x96')]===_0xcc6a('0x97')){return null;}var _0x2297ea=_[_0xcc6a('0x41')](_0x1f1ff7,{'name':_0x1f1ff7[_0xcc6a('0x98')]||_0x1f1ff7[_0xcc6a('0x36')]||_0x558e2f[_0xcc6a('0x36')],'basename':_0x45c45f,'savename':util[_0xcc6a('0x7a')](_0xcc6a('0x99'),_0x1f1ff7[_0xcc6a('0x36')]||_0x558e2f[_0xcc6a('0x36')],require(_0xcc6a('0x9a'))[_0xcc6a('0x9b')](0x4),_0x1f1ff7['output']||'csv'),'reportId':_0x558e2f['id'],'reportType':_0xcc6a('0x9c')});return db[_0xcc6a('0x9d')]['create'](_0x2297ea,{'raw':!![]});})[_0xcc6a('0x29')](function(_0x1e74a4){if(_0x558e2f[_0xcc6a('0x77')]==='cdr'){_0x5661b5[_0xcc6a('0x3f')](_0x558e2f['table']+_0xcc6a('0x9e'),_0x1f1ff7[_0xcc6a('0x9f')],_0x1f1ff7['endDate']);}else{_0x5661b5[_0xcc6a('0x3f')](_0x558e2f['table']+_0xcc6a('0xa0'),_0x1f1ff7[_0xcc6a('0x9f')],_0x1f1ff7[_0xcc6a('0xa1')]);}if(_0x1e74a4){logger[_0xcc6a('0xa2')](_0xcc6a('0xa3'),_0x5661b5[_0xcc6a('0x89')]());require('child_process')['fork'](path[_0xcc6a('0x8c')](__dirname,_0xcc6a('0xa4'),_0x1e74a4[_0xcc6a('0x96')]),[_0x1e74a4['id'],_0x5661b5['toString'](),path[_0xcc6a('0x8c')](__dirname,_0xcc6a('0xa5'),_0x1e74a4[_0xcc6a('0xa6')]),_0x45c45f]);return _0x1e74a4;}else{var _0x3b7b43=squel['select']();_0x3b7b43[_0xcc6a('0x76')]('('+_0x5661b5[_0xcc6a('0x89')]()+')',_0xcc6a('0xa7'));_0x3b7b43['field'](_0xcc6a('0xa8'),'count');_0x5661b5[_0xcc6a('0x21')](_0x1f1ff7[_0xcc6a('0x21')]||_0x58cd56);_0x5661b5['offset'](_0x1f1ff7[_0xcc6a('0x1f')]||0x0);return dbH[_0xcc6a('0x88')][_0xcc6a('0x37')](_0x3b7b43[_0xcc6a('0x89')](),{'type':dbH[_0xcc6a('0x88')][_0xcc6a('0x8a')][_0xcc6a('0x8b')]})[_0xcc6a('0x29')](function(_0x25ba57){if(!_0x25ba57[_0xcc6a('0x4c')]){_0x589bff=0x0;}else{_0x589bff=_0x25ba57[0x0][_0xcc6a('0x22')]||0x0;}return dbH['sequelize']['query'](_0x5661b5[_0xcc6a('0x89')](),{'type':dbH['sequelize'][_0xcc6a('0x8a')]['SELECT']});})['then'](function(_0x32ced0){return{'rows':_0x32ced0||[],'count':_0x589bff};});}});}exports[_0xcc6a('0xa9')]=function(_0xc638ae,_0x3367e8){return runReport(_0xc638ae['params'],_0xc638ae[_0xcc6a('0x37')],_0xc638ae['options'])['then'](respondWithResult(_0x3367e8,null))[_0xcc6a('0x48')](handleError(_0x3367e8,null));};exports[_0xcc6a('0xaa')]=runReport;exports[_0xcc6a('0x37')]=function(_0x38d805,_0x3f5f97){var _0x399eb6=0xa;var _0x2ae391=['join',_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x50b948={'SUM':_0xcc6a('0x5e'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xcc6a('0x8e'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xcc6a('0x61'),'GROUP_CONCAT':_0xcc6a('0x62'),'GROUP_CONCAT ASC':_0xcc6a('0x63'),'GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x1d2ae0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x41d17b=function(_0x1827e6){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),'IS\x20NOT\x20NULL',_0xcc6a('0x6d'),'IS\x20NOT\x20EMPTY'],_0x1827e6);};var _0xa70fa=function(_0x33ec76){if(!_0x33ec76||!_0x33ec76[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x30162c='(',_0x48746a=0x0;_0x48746a<_0x33ec76['rules'][_0xcc6a('0x4c')];_0x48746a+=0x1){_0x48746a>0x0&&(_0x30162c+='\x20'+_0x33ec76[_0xcc6a('0x6f')]+'\x20');_0x30162c+=_0x33ec76['rules'][_0x48746a][_0xcc6a('0x7b')]?_0xa70fa(_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x7b')]):_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x70')]+'\x20'+_0x33ec76[_0xcc6a('0x6e')][_0x48746a]['condition']+(_0x41d17b(_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x71')])?'\x20'+_0x33ec76[_0xcc6a('0x6e')][_0x48746a]['value']:'');}return _0x30162c+')';};var _0x54f0e4={'where':{'id':_0x38d805[_0xcc6a('0x4a')]['id']}},_0x559f4f,_0x545b15,_0x17a4e1,_0x5a7da7,_0x434c8b;_0x54f0e4=_['merge']({},_0x54f0e4,_0x38d805[_0xcc6a('0x4d')]);return db['AnalyticDefaultReport'][_0xcc6a('0x4e')](_0x54f0e4)[_0xcc6a('0x29')](function(_0xe9231f){if(_0xe9231f){_0x559f4f=_0xe9231f;return _0xe9231f[_0xcc6a('0xab')]();}return null;})[_0xcc6a('0x29')](function(_0x197961){if(_0x197961){if(!_0x197961[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))][(_0xcc6a('0x90'))](_0xcc6a('0x91'),0x193);}_0x545b15=_0x197961;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x171a2a){if(_0x171a2a){_0x17a4e1=_[_0xcc6a('0xac')](_0x171a2a,'id');var _0x13860b;var _0x3b52f7=squel[_0xcc6a('0x75')]();_0x3b52f7[_0xcc6a('0x76')](_0x559f4f[_0xcc6a('0x77')]);for(var _0x319f4a=0x0;_0x319f4a<_0x545b15[_0xcc6a('0x4c')];_0x319f4a+=0x1){_0x13860b=_0x545b15[_0x319f4a]['MetricId']?_0x17a4e1[_0x545b15[_0x319f4a][_0xcc6a('0x78')]][_0xcc6a('0x92')]:_0x545b15[_0x319f4a][_0xcc6a('0x70')];_0x13860b=_0x545b15[_0x319f4a]['function']?_[_0xcc6a('0x79')](_0x50b948[_0x545b15[_0x319f4a][_0xcc6a('0x93')]],'%s',_0x13860b):_0x13860b;_0x13860b=_0x545b15[_0x319f4a]['format']?_[_0xcc6a('0x79')](_0x1d2ae0[_0x545b15[_0x319f4a][_0xcc6a('0x7a')]],'%s',_0x13860b):_0x13860b;if(_0x545b15[_0x319f4a]['groupBy']){_0x3b52f7[_0xcc6a('0x7b')](_0x13860b);}_0x545b15[_0x319f4a][_0xcc6a('0x95')]&&_0x3b52f7[_0xcc6a('0x3d')](_0x13860b,_0x545b15[_0x319f4a][_0xcc6a('0x95')]===_0xcc6a('0x7c')?![]:!![]);_0x3b52f7[_0xcc6a('0x70')](_0x13860b,_0x545b15[_0x319f4a]['alias']||_0x13860b);}if(_0x559f4f['joins']){_0x559f4f[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x559f4f['joins']);for(var _0x154885=0x0;_0x154885<_0x559f4f['joins'][_0xcc6a('0x4c')];_0x154885+=0x1){if(_0x559f4f['joins'][_0x154885][_0xcc6a('0x34')]&&_[_0xcc6a('0x6a')](_0x2ae391,_0x559f4f[_0xcc6a('0x7e')][_0x154885]['type'])&&_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x83')]&&_0x559f4f[_0xcc6a('0x7e')][_0x154885]['foreignTable']&&_0x559f4f['joins'][_0x154885]['foreignKey']){_0x3b52f7[_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x34')]](_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x559f4f[_0xcc6a('0x77')],_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x83')],_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x80')],_0x559f4f[_0xcc6a('0x7e')][_0x154885]['foreignKey']));}}}if(_0x559f4f[_0xcc6a('0x84')]){_0x559f4f[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x559f4f['conditions']);_0x3b52f7[_0xcc6a('0x3f')](_0xa70fa(_0x559f4f[_0xcc6a('0x84')][_0xcc6a('0x7b')]));}_0x434c8b=_0x3b52f7['clone']();_0x3b52f7[_0xcc6a('0x21')](_0x399eb6);_0x3b52f7[_0xcc6a('0x1f')](0x0);logger[_0xcc6a('0x86')](_0xcc6a('0x87'),_0x3b52f7['toString']());return dbH[_0xcc6a('0x88')]['query'](_0x3b52f7['toString'](),{'type':dbH['sequelize'][_0xcc6a('0x8a')]['SELECT']});}})['then'](function(){return{'sql':_0x434c8b[_0xcc6a('0x89')]()};})[_0xcc6a('0x29')](respondWithResult(_0x3f5f97,null))[_0xcc6a('0x48')](handleError(_0x3f5f97,null));};
\ No newline at end of file
index e3a53b3..17930a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff86=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','analytics_default_reports','lodash'];(function(_0x4a75f8,_0xdae26c){var _0x124916=function(_0x3144bf){while(--_0x3144bf){_0x4a75f8['push'](_0x4a75f8['shift']());}};_0x124916(++_0xdae26c);}(_0xff86,0x6b));var _0x6ff8=function(_0xc9478b,_0x2dd683){_0xc9478b=_0xc9478b-0x0;var _0x316b04=_0xff86[_0xc9478b];return _0x316b04;};'use strict';var _=require(_0x6ff8('0x0'));var util=require(_0x6ff8('0x1'));var logger=require(_0x6ff8('0x2'))(_0x6ff8('0x3'));var moment=require(_0x6ff8('0x4'));var BPromise=require(_0x6ff8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6ff8('0x6'));var config=require(_0x6ff8('0x7'));var attributes=require(_0x6ff8('0x8'));module[_0x6ff8('0x9')]=function(_0x1a9a45,_0x1ae8f3){return _0x1a9a45[_0x6ff8('0xa')]('AnalyticDefaultReport',attributes,{'tableName':_0x6ff8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd510=['path','rimraf','./analyticDefaultReport.attributes','exports','define','util','../../config/logger','moment'];(function(_0x5bcf43,_0x357065){var _0x1a6454=function(_0x2be9f7){while(--_0x2be9f7){_0x5bcf43['push'](_0x5bcf43['shift']());}};_0x1a6454(++_0x357065);}(_0xd510,0x1bd));var _0x0d51=function(_0x267692,_0x229aaa){_0x267692=_0x267692-0x0;var _0x209905=_0xd510[_0x267692];return _0x209905;};'use strict';var _=require('lodash');var util=require(_0x0d51('0x0'));var logger=require(_0x0d51('0x1'))('api');var moment=require(_0x0d51('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d51('0x3'));var rimraf=require(_0x0d51('0x4'));var config=require('../../config/environment');var attributes=require(_0x0d51('0x5'));module[_0x0d51('0x6')]=function(_0x21a2cd,_0x4ce6dd){return _0x21a2cd[_0x0d51('0x7')]('AnalyticDefaultReport',attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b09af06..176f32e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16c2=['AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5ba8a2,_0x2353f2){var _0x343652=function(_0x2457ba){while(--_0x2457ba){_0x5ba8a2['push'](_0x5ba8a2['shift']());}};_0x343652(++_0x2353f2);}(_0x16c2,0x66));var _0x216c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x16c2[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x216c('0x0'));var util=require(_0x216c('0x1'));var moment=require(_0x216c('0x2'));var BPromise=require(_0x216c('0x3'));var rs=require(_0x216c('0x4'));var fs=require('fs');var Redis=require(_0x216c('0x5'));var db=require(_0x216c('0x6'))['db'];var utils=require(_0x216c('0x7'));var logger=require(_0x216c('0x8'))(_0x216c('0x9'));var config=require('../../config/environment');var jayson=require(_0x216c('0xa'));var client=jayson[_0x216c('0xb')][_0x216c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1bcec4,_0x2120fb,_0xfe2258){return new BPromise(function(_0x342554,_0x58b8e4){return client[_0x216c('0xd')](_0x1bcec4,_0xfe2258)['then'](function(_0x2860e7){logger[_0x216c('0xe')](_0x216c('0xf'),_0x2120fb,_0x216c('0x10'));logger[_0x216c('0x11')](_0x216c('0x12'),_0x2120fb,_0x216c('0x10'),JSON[_0x216c('0x13')](_0x2860e7));if(_0x2860e7[_0x216c('0x14')]){if(_0x2860e7[_0x216c('0x14')][_0x216c('0x15')]===0x1f4){logger[_0x216c('0x14')](_0x216c('0xf'),_0x2120fb,_0x2860e7['error'][_0x216c('0x16')]);return _0x58b8e4(_0x2860e7['error'][_0x216c('0x16')]);}logger[_0x216c('0x14')](_0x216c('0xf'),_0x2120fb,_0x2860e7[_0x216c('0x14')][_0x216c('0x16')]);return _0x342554(_0x2860e7[_0x216c('0x14')][_0x216c('0x16')]);}else{logger[_0x216c('0xe')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2120fb,'request\x20sent');_0x342554(_0x2860e7[_0x216c('0x17')][_0x216c('0x16')]);}})['catch'](function(_0x11d774){logger[_0x216c('0x14')](_0x216c('0xf'),_0x2120fb,_0x11d774);_0x58b8e4(_0x11d774);});});}
\ No newline at end of file
+var _0x3197=['jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x355601,_0x344d4e){var _0x56bab8=function(_0x4dab46){while(--_0x4dab46){_0x355601['push'](_0x355601['shift']());}};_0x56bab8(++_0x344d4e);}(_0x3197,0x15f));var _0x7319=function(_0x5322a3,_0x3e4bb0){_0x5322a3=_0x5322a3-0x0;var _0x35b5c0=_0x3197[_0x5322a3];return _0x35b5c0;};'use strict';var _=require(_0x7319('0x0'));var util=require('util');var moment=require(_0x7319('0x1'));var BPromise=require('bluebird');var rs=require(_0x7319('0x2'));var fs=require('fs');var Redis=require(_0x7319('0x3'));var db=require(_0x7319('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7319('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7319('0x6'));var client=jayson[_0x7319('0x7')][_0x7319('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5036f7,_0x32955d,_0x54db50){return new BPromise(function(_0x4afed1,_0x55347d){return client[_0x7319('0x9')](_0x5036f7,_0x54db50)[_0x7319('0xa')](function(_0x5d3ea5){logger[_0x7319('0xb')](_0x7319('0xc'),_0x32955d,_0x7319('0xd'));logger[_0x7319('0xe')](_0x7319('0xf'),_0x32955d,_0x7319('0xd'),JSON[_0x7319('0x10')](_0x5d3ea5));if(_0x5d3ea5['error']){if(_0x5d3ea5['error']['code']===0x1f4){logger[_0x7319('0x11')](_0x7319('0xc'),_0x32955d,_0x5d3ea5['error'][_0x7319('0x12')]);return _0x55347d(_0x5d3ea5[_0x7319('0x11')][_0x7319('0x12')]);}logger['error'](_0x7319('0xc'),_0x32955d,_0x5d3ea5['error'][_0x7319('0x12')]);return _0x4afed1(_0x5d3ea5['error']['message']);}else{logger[_0x7319('0xb')](_0x7319('0xc'),_0x32955d,_0x7319('0xd'));_0x4afed1(_0x5d3ea5[_0x7319('0x13')][_0x7319('0x12')]);}})[_0x7319('0x14')](function(_0x59a433){logger[_0x7319('0x11')](_0x7319('0xc'),_0x32955d,_0x59a433);_0x55347d(_0x59a433);});});}
\ No newline at end of file
index 6764d38..59eb291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38ce=['delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','show','/:id/preview','preview','/:id/run','run','query','put','update'];(function(_0x2a66df,_0x4e9b7b){var _0x3186b2=function(_0x17896b){while(--_0x17896b){_0x2a66df['push'](_0x2a66df['shift']());}};_0x3186b2(++_0x4e9b7b);}(_0x38ce,0x137));var _0xe38c=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x38ce[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0xe38c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe38c('0x1'));var express=require(_0xe38c('0x2'));var router=express[_0xe38c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe38c('0x4'));var interaction=require(_0xe38c('0x5'));var config=require(_0xe38c('0x6'));var controller=require('./analyticDefaultReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xe38c('0x7')]);router[_0xe38c('0x8')](_0xe38c('0x9'),auth[_0xe38c('0xa')](),controller[_0xe38c('0xb')]);router[_0xe38c('0x8')](_0xe38c('0xc'),auth[_0xe38c('0xa')](),controller[_0xe38c('0xd')]);router[_0xe38c('0x8')](_0xe38c('0xe'),auth[_0xe38c('0xa')](),controller[_0xe38c('0xf')]);router[_0xe38c('0x8')]('/:id/query',auth[_0xe38c('0xa')](),controller[_0xe38c('0x10')]);router['post']('/',auth[_0xe38c('0xa')](),controller['create']);router[_0xe38c('0x11')](_0xe38c('0x9'),auth[_0xe38c('0xa')](),controller[_0xe38c('0x12')]);router[_0xe38c('0x13')](_0xe38c('0x9'),auth[_0xe38c('0xa')](),controller[_0xe38c('0x14')]);module[_0xe38c('0x15')]=router;
\ No newline at end of file
+var _0x5da0=['destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','run','/:id/query','query','put','delete'];(function(_0x46c81a,_0x531ab2){var _0xa18da2=function(_0x168305){while(--_0x168305){_0x46c81a['push'](_0x46c81a['shift']());}};_0xa18da2(++_0x531ab2);}(_0x5da0,0x9c));var _0x05da=function(_0x3f7242,_0xf6b69a){_0x3f7242=_0x3f7242-0x0;var _0x1cfd88=_0x5da0[_0x3f7242];return _0x1cfd88;};'use strict';var multer=require(_0x05da('0x0'));var util=require(_0x05da('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x05da('0x2'));var router=express[_0x05da('0x3')]();var fs_extra=require(_0x05da('0x4'));var auth=require(_0x05da('0x5'));var interaction=require(_0x05da('0x6'));var config=require('../../config/environment');var controller=require(_0x05da('0x7'));router[_0x05da('0x8')]('/',auth[_0x05da('0x9')](),controller[_0x05da('0xa')]);router[_0x05da('0x8')](_0x05da('0xb'),auth[_0x05da('0x9')](),controller[_0x05da('0xc')]);router[_0x05da('0x8')](_0x05da('0xd'),auth[_0x05da('0x9')](),controller[_0x05da('0xe')]);router[_0x05da('0x8')]('/:id/run',auth['isAuthenticated'](),controller[_0x05da('0xf')]);router[_0x05da('0x8')](_0x05da('0x10'),auth[_0x05da('0x9')](),controller[_0x05da('0x11')]);router['post']('/',auth[_0x05da('0x9')](),controller['create']);router[_0x05da('0x12')](_0x05da('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x05da('0x13')](_0x05da('0xb'),auth[_0x05da('0x9')](),controller[_0x05da('0x14')]);module[_0x05da('0x15')]=router;
\ No newline at end of file
index 281a4ae..2eac08e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1136=['ENUM','csv','pdf','DATE','Loading','scheduled','manual','UNSIGNED','sequelize','STRING'];(function(_0x4b186d,_0x3f4cb8){var _0x209049=function(_0x208c8b){while(--_0x208c8b){_0x4b186d['push'](_0x4b186d['shift']());}};_0x209049(++_0x3f4cb8);}(_0x1136,0x76));var _0x6113=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1136[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x6113('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0x6113('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0x6113('0x1')],'allowNull':![]},'output':{'type':Sequelize[_0x6113('0x2')](_0x6113('0x3'),_0x6113('0x4'),'xlsx'),'allowNull':![],'defaultValue':_0x6113('0x3')},'savename':{'type':Sequelize[_0x6113('0x1')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x6113('0x5')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x6113('0x6')},'type':{'type':Sequelize[_0x6113('0x2')]('manual',_0x6113('0x7')),'allowNull':![],'defaultValue':_0x6113('0x8')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x6113('0x9')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5a49=['csv','DATE','Loading','scheduled','manual','INTEGER','UNSIGNED','moment','exports','STRING','ENUM'];(function(_0x52e549,_0x2c0641){var _0x282a91=function(_0x294ce7){while(--_0x294ce7){_0x52e549['push'](_0x52e549['shift']());}};_0x282a91(++_0x2c0641);}(_0x5a49,0x1a9));var _0x95a4=function(_0x2d2b5f,_0x303ec6){_0x2d2b5f=_0x2d2b5f-0x0;var _0x312bec=_0x5a49[_0x2d2b5f];return _0x312bec;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x95a4('0x0'));module[_0x95a4('0x1')]={'name':{'type':Sequelize[_0x95a4('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x95a4('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x95a4('0x3')](_0x95a4('0x4'),'pdf','xlsx'),'allowNull':![],'defaultValue':_0x95a4('0x4')},'savename':{'type':Sequelize[_0x95a4('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x95a4('0x5')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize['STRING'],'defaultValue':_0x95a4('0x6')},'type':{'type':Sequelize['ENUM']('manual',_0x95a4('0x7')),'allowNull':![],'defaultValue':_0x95a4('0x8')},'reportId':{'type':Sequelize[_0x95a4('0x9')](0xb)[_0x95a4('0xa')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 03d37bf..fbce08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdec=['filter','merge','includeAll','include','findAll','catch','params','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','body','download','basename','output','existsSync','join','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','root','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','error','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','VIRTUAL'];(function(_0x2ada4d,_0x543a13){var _0xa4a3e1=function(_0xfba2e0){while(--_0xfba2e0){_0x2ada4d['push'](_0x2ada4d['shift']());}};_0xa4a3e1(++_0x543a13);}(_0xbdec,0x13d));var _0xcbde=function(_0x339707,_0x38ee09){_0x339707=_0x339707-0x0;var _0x2d5e1d=_0xbdec[_0x339707];return _0x2d5e1d;};'use strict';var emlformat=require(_0xcbde('0x0'));var rimraf=require(_0xcbde('0x1'));var zipdir=require(_0xcbde('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcbde('0x3'));var moment=require('moment');var BPromise=require(_0xcbde('0x4'));var Mustache=require(_0xcbde('0x5'));var util=require('util');var path=require('path');var sox=require(_0xcbde('0x6'));var csv=require(_0xcbde('0x7'));var ejs=require(_0xcbde('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcbde('0x9'));var squel=require('squel');var crypto=require(_0xcbde('0xa'));var jsforce=require(_0xcbde('0xb'));var deskjs=require(_0xcbde('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcbde('0xd'));var Redis=require('ioredis');var authService=require(_0xcbde('0xe'));var qs=require(_0xcbde('0xf'));var as=require(_0xcbde('0x10'));var hardwareService=require(_0xcbde('0x11'));var logger=require(_0xcbde('0x12'))(_0xcbde('0x13'));var utils=require(_0xcbde('0x14'));var config=require(_0xcbde('0x15'));var licenseUtil=require(_0xcbde('0x16'));var db=require(_0xcbde('0x17'))['db'];function respondWithStatusCode(_0x249e5a,_0x38c182){_0x38c182=_0x38c182||0xcc;return function(_0x25db36){if(_0x25db36){return _0x249e5a[_0xcbde('0x18')](_0x38c182);}return _0x249e5a['status'](_0x38c182)[_0xcbde('0x19')]();};}function respondWithResult(_0x19808b,_0x383fd0){_0x383fd0=_0x383fd0||0xc8;return function(_0x4c35e5){if(_0x4c35e5){return _0x19808b[_0xcbde('0x1a')](_0x383fd0)[_0xcbde('0x1b')](_0x4c35e5);}};}function respondWithFilteredResult(_0x1d5fb4,_0x28c4e1){return function(_0x43d507){if(_0x43d507){var _0x1fb5fb=typeof _0x28c4e1[_0xcbde('0x1c')]===_0xcbde('0x1d')&&typeof _0x28c4e1[_0xcbde('0x1e')]==='undefined';var _0x5128f7=_0x43d507[_0xcbde('0x1f')];var _0x33ac33=_0x1fb5fb?0x0:_0x28c4e1['offset'];var _0x5b6fd9=_0x1fb5fb?_0x43d507['count']:_0x28c4e1[_0xcbde('0x1c')]+_0x28c4e1[_0xcbde('0x1e')];var _0x30884d;if(_0x5b6fd9>=_0x5128f7){_0x5b6fd9=_0x5128f7;_0x30884d=0xc8;}else{_0x30884d=0xce;}_0x1d5fb4['status'](_0x30884d);return _0x1d5fb4[_0xcbde('0x20')](_0xcbde('0x21'),_0x33ac33+'-'+_0x5b6fd9+'/'+_0x5128f7)[_0xcbde('0x1b')](_0x43d507);}return null;};}function patchUpdates(_0x5dfe5a){return function(_0x1c0088){try{jsonpatch[_0xcbde('0x22')](_0x1c0088,_0x5dfe5a,!![]);}catch(_0x473ae4){return BPromise[_0xcbde('0x23')](_0x473ae4);}return _0x1c0088[_0xcbde('0x24')]();};}function saveUpdates(_0x3944e6,_0xbd741){return function(_0x1177d7){if(_0x1177d7){return _0x1177d7['update'](_0x3944e6)[_0xcbde('0x25')](function(_0x17c5ba){return _0x17c5ba;});}return null;};}function removeEntity(_0x20ce3d,_0x535cd9){return function(_0x3b435c){if(_0x3b435c){return _0x3b435c[_0xcbde('0x26')]()[_0xcbde('0x25')](function(){var _0x1c0c22=_0x3b435c[_0xcbde('0x27')]({'plain':!![]});var _0x4be397='ExtractedReports';return db['UserProfileResource']['destroy']({'where':{'type':_0x4be397,'resourceId':_0x1c0c22['id']}})[_0xcbde('0x25')](function(){return _0x3b435c;});})[_0xcbde('0x25')](function(){_0x20ce3d[_0xcbde('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x103506,_0x1633d0){return function(_0x54221b){if(!_0x54221b){_0x103506[_0xcbde('0x18')](0x194);}return _0x54221b;};}function handleError(_0x9416c7,_0xee116){_0xee116=_0xee116||0x1f4;return function(_0x467541){logger[_0xcbde('0x28')](_0x467541['stack']);if(_0x467541[_0xcbde('0x29')]){delete _0x467541[_0xcbde('0x29')];}_0x9416c7[_0xcbde('0x1a')](_0xee116)[_0xcbde('0x2a')](_0x467541);};}exports[_0xcbde('0x2b')]=function(_0x510557,_0x5cd287){var _0x5937b3={},_0x427b7b={},_0x1e3fd5={'count':0x0,'rows':[]};var _0x7a089f=_[_0xcbde('0x2c')](db[_0xcbde('0x2d')][_0xcbde('0x2e')],function(_0x580597){return{'name':_0x580597[_0xcbde('0x2f')],'type':_0x580597[_0xcbde('0x30')][_0xcbde('0x31')]};});_0x427b7b['model']=_[_0xcbde('0x2c')](_0x7a089f,_0xcbde('0x29'));_0x427b7b[_0xcbde('0x32')]=_[_0xcbde('0x33')](_0x510557[_0xcbde('0x32')]);_0x427b7b[_0xcbde('0x34')]=_[_0xcbde('0x35')](_0x427b7b[_0xcbde('0x36')],_0x427b7b['query']);_0x5937b3[_0xcbde('0x37')]=_[_0xcbde('0x35')](_0x427b7b['model'],qs['fields'](_0x510557[_0xcbde('0x32')][_0xcbde('0x38')]));_0x5937b3['attributes']=_0x5937b3[_0xcbde('0x37')][_0xcbde('0x39')]?_0x5937b3[_0xcbde('0x37')]:_0x427b7b[_0xcbde('0x36')];if(!_0x510557[_0xcbde('0x32')]['hasOwnProperty'](_0xcbde('0x3a'))){_0x5937b3['limit']=qs[_0xcbde('0x1e')](_0x510557[_0xcbde('0x32')][_0xcbde('0x1e')]);_0x5937b3[_0xcbde('0x1c')]=qs[_0xcbde('0x1c')](_0x510557['query'][_0xcbde('0x1c')]);}_0x5937b3[_0xcbde('0x3b')]=qs[_0xcbde('0x3c')](_0x510557[_0xcbde('0x32')]['sort']);_0x5937b3[_0xcbde('0x3d')]=qs[_0xcbde('0x34')](_['pick'](_0x510557[_0xcbde('0x32')],_0x427b7b['filters']),_0x7a089f);if(_0x510557[_0xcbde('0x32')]['filter']){_0x5937b3[_0xcbde('0x3d')]=_['merge'](_0x5937b3[_0xcbde('0x3d')],{'$or':_[_0xcbde('0x2c')](_0x7a089f,function(_0x425428){if(_0x425428[_0xcbde('0x30')]!==_0xcbde('0x3e')){var _0x3b5973={};_0x3b5973[_0x425428[_0xcbde('0x29')]]={'$like':'%'+_0x510557[_0xcbde('0x32')][_0xcbde('0x3f')]+'%'};return _0x3b5973;}})});}_0x5937b3=_[_0xcbde('0x40')]({},_0x5937b3,_0x510557['options']);var _0x3aa371={'where':_0x5937b3['where']};return db['AnalyticExtractedReport'][_0xcbde('0x1f')](_0x3aa371)['then'](function(_0x108ec3){_0x1e3fd5[_0xcbde('0x1f')]=_0x108ec3;if(_0x510557[_0xcbde('0x32')][_0xcbde('0x41')]){_0x5937b3[_0xcbde('0x42')]=[{'all':!![]}];}return db[_0xcbde('0x2d')][_0xcbde('0x43')](_0x5937b3);})[_0xcbde('0x25')](function(_0x5d07d9){_0x1e3fd5['rows']=_0x5d07d9;return _0x1e3fd5;})[_0xcbde('0x25')](respondWithFilteredResult(_0x5cd287,_0x5937b3))[_0xcbde('0x44')](handleError(_0x5cd287,null));};exports['show']=function(_0x314c8d,_0x978383){var _0x1d3612={'raw':!![],'where':{'id':_0x314c8d[_0xcbde('0x45')]['id']}},_0x53d3a4={};_0x53d3a4[_0xcbde('0x36')]=_['keys'](db[_0xcbde('0x2d')]['rawAttributes']);_0x53d3a4[_0xcbde('0x32')]=_[_0xcbde('0x33')](_0x314c8d[_0xcbde('0x32')]);_0x53d3a4[_0xcbde('0x34')]=_[_0xcbde('0x35')](_0x53d3a4[_0xcbde('0x36')],_0x53d3a4[_0xcbde('0x32')]);_0x1d3612[_0xcbde('0x37')]=_[_0xcbde('0x35')](_0x53d3a4[_0xcbde('0x36')],qs[_0xcbde('0x38')](_0x314c8d['query'][_0xcbde('0x38')]));_0x1d3612[_0xcbde('0x37')]=_0x1d3612[_0xcbde('0x37')][_0xcbde('0x39')]?_0x1d3612[_0xcbde('0x37')]:_0x53d3a4[_0xcbde('0x36')];if(_0x314c8d['query'][_0xcbde('0x41')]){_0x1d3612[_0xcbde('0x42')]=[{'all':!![]}];}_0x1d3612=_[_0xcbde('0x40')]({},_0x1d3612,_0x314c8d[_0xcbde('0x46')]);return db[_0xcbde('0x2d')]['find'](_0x1d3612)['then'](handleEntityNotFound(_0x978383,null))[_0xcbde('0x25')](respondWithResult(_0x978383,null))[_0xcbde('0x44')](handleError(_0x978383,null));};exports['create']=function(_0x392fef,_0x5c2906){return db['AnalyticExtractedReport'][_0xcbde('0x47')](_0x392fef['body'],{})[_0xcbde('0x25')](function(_0x5d6347){var _0xb64cdf=_0x392fef[_0xcbde('0x48')][_0xcbde('0x27')]({'plain':!![]});if(!_0xb64cdf)throw new Error(_0xcbde('0x49'));if(_0xb64cdf[_0xcbde('0x4a')]==='user'){var _0x325ac0=_0x5d6347[_0xcbde('0x27')]({'plain':!![]});var _0xa435ef='ExtractedReports';return db[_0xcbde('0x4b')][_0xcbde('0x4c')]({'where':{'name':_0xa435ef,'userProfileId':_0xb64cdf[_0xcbde('0x4d')]},'raw':!![]})[_0xcbde('0x25')](function(_0x2215d0){if(_0x2215d0&&_0x2215d0[_0xcbde('0x4e')]===0x0){return db[_0xcbde('0x4f')][_0xcbde('0x47')]({'name':_0x325ac0[_0xcbde('0x29')],'resourceId':_0x325ac0['id'],'type':_0x2215d0[_0xcbde('0x29')],'sectionId':_0x2215d0['id']},{})[_0xcbde('0x25')](function(){return _0x5d6347;});}else{return _0x5d6347;}})[_0xcbde('0x44')](function(_0xd9c6e3){logger[_0xcbde('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xd9c6e3);throw _0xd9c6e3;});}return _0x5d6347;})[_0xcbde('0x25')](respondWithResult(_0x5c2906,0xc9))['catch'](handleError(_0x5c2906,null));};exports['update']=function(_0x53b93f,_0x17a4a4){if(_0x53b93f[_0xcbde('0x50')]['id']){delete _0x53b93f[_0xcbde('0x50')]['id'];}return db[_0xcbde('0x2d')][_0xcbde('0x4c')]({'where':{'id':_0x53b93f[_0xcbde('0x45')]['id']}})['then'](handleEntityNotFound(_0x17a4a4,null))[_0xcbde('0x25')](saveUpdates(_0x53b93f[_0xcbde('0x50')],null))[_0xcbde('0x25')](respondWithResult(_0x17a4a4,null))[_0xcbde('0x44')](handleError(_0x17a4a4,null));};exports['destroy']=function(_0x46d8fd,_0x251b53){return db[_0xcbde('0x2d')][_0xcbde('0x4c')]({'where':{'id':_0x46d8fd[_0xcbde('0x45')]['id']}})[_0xcbde('0x25')](handleEntityNotFound(_0x251b53,null))[_0xcbde('0x25')](removeEntity(_0x251b53,null))[_0xcbde('0x44')](handleError(_0x251b53,null));};exports[_0xcbde('0x51')]=function(_0x5cd40d,_0x56760d,_0x3ac29c){return db[_0xcbde('0x2d')][_0xcbde('0x4c')]({'where':{'id':_0x5cd40d[_0xcbde('0x45')]['id']},'attributes':[_0xcbde('0x29'),_0xcbde('0x52'),'savename',_0xcbde('0x53')],'raw':!![]})[_0xcbde('0x25')](handleEntityNotFound(_0x56760d,null))[_0xcbde('0x25')](function(_0x57422b){if(_0x57422b){if(!fs[_0xcbde('0x54')](path[_0xcbde('0x55')](config['root'],_0xcbde('0x56'),_0x57422b[_0xcbde('0x57')]))){throw new db[(_0xcbde('0x58'))][(_0xcbde('0x59'))](_0xcbde('0x5a'));}if(_0x5cd40d[_0xcbde('0x32')]['exists']){return _0x56760d[_0xcbde('0x18')](0xc8);}return _0x56760d[_0xcbde('0x51')](path[_0xcbde('0x55')](config[_0xcbde('0x5b')],_0xcbde('0x56'),_0x57422b[_0xcbde('0x57')]),util[_0xcbde('0x5c')](_0xcbde('0x5d'),_0x57422b[_0xcbde('0x52')]||_0x57422b['name'],_0x57422b[_0xcbde('0x53')][_0xcbde('0x5e')]()));}})['catch'](handleError(_0x56760d,null));};
\ No newline at end of file
+var _0xb241=['crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','ExtractedReports','UserProfileResource','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','pick','where','filter','options','includeAll','include','findAll','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','download','output','existsSync','join','server/files/reports','savename','Sequelize','Report\x20not\x20found\x20or\x20empty','root','format','%s.%s','basename','toLowerCase','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel'];(function(_0x25b03c,_0x2720bd){var _0x4aef4b=function(_0x5c8033){while(--_0x5c8033){_0x25b03c['push'](_0x25b03c['shift']());}};_0x4aef4b(++_0x2720bd);}(_0xb241,0x1c6));var _0x1b24=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xb241[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0x1b24('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1b24('0x1'));var rp=require('request-promise');var moment=require(_0x1b24('0x2'));var BPromise=require(_0x1b24('0x3'));var Mustache=require(_0x1b24('0x4'));var util=require('util');var path=require(_0x1b24('0x5'));var sox=require(_0x1b24('0x6'));var csv=require(_0x1b24('0x7'));var ejs=require(_0x1b24('0x8'));var fs=require('fs');var fs_extra=require(_0x1b24('0x9'));var _=require('lodash');var squel=require(_0x1b24('0xa'));var crypto=require(_0x1b24('0xb'));var jsforce=require(_0x1b24('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1b24('0x7'));var querystring=require(_0x1b24('0xd'));var Papa=require(_0x1b24('0xe'));var Redis=require('ioredis');var authService=require(_0x1b24('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x1b24('0x10'));var hardwareService=require(_0x1b24('0x11'));var logger=require(_0x1b24('0x12'))(_0x1b24('0x13'));var utils=require(_0x1b24('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1b24('0x15'))['db'];function respondWithStatusCode(_0x2d84e7,_0xe77288){_0xe77288=_0xe77288||0xcc;return function(_0x2a5a4f){if(_0x2a5a4f){return _0x2d84e7[_0x1b24('0x16')](_0xe77288);}return _0x2d84e7[_0x1b24('0x17')](_0xe77288)[_0x1b24('0x18')]();};}function respondWithResult(_0x24be8d,_0x50c3eb){_0x50c3eb=_0x50c3eb||0xc8;return function(_0x29ce65){if(_0x29ce65){return _0x24be8d[_0x1b24('0x17')](_0x50c3eb)[_0x1b24('0x19')](_0x29ce65);}};}function respondWithFilteredResult(_0x4ce410,_0x8b47){return function(_0x1b9c4){if(_0x1b9c4){var _0x4ecfdb=typeof _0x8b47[_0x1b24('0x1a')]===_0x1b24('0x1b')&&typeof _0x8b47[_0x1b24('0x1c')]==='undefined';var _0x3c8a9f=_0x1b9c4[_0x1b24('0x1d')];var _0x31557a=_0x4ecfdb?0x0:_0x8b47['offset'];var _0x4a48cf=_0x4ecfdb?_0x1b9c4[_0x1b24('0x1d')]:_0x8b47[_0x1b24('0x1a')]+_0x8b47[_0x1b24('0x1c')];var _0x57d6cf;if(_0x4a48cf>=_0x3c8a9f){_0x4a48cf=_0x3c8a9f;_0x57d6cf=0xc8;}else{_0x57d6cf=0xce;}_0x4ce410[_0x1b24('0x17')](_0x57d6cf);return _0x4ce410[_0x1b24('0x1e')]('Content-Range',_0x31557a+'-'+_0x4a48cf+'/'+_0x3c8a9f)[_0x1b24('0x19')](_0x1b9c4);}return null;};}function patchUpdates(_0x5f1aae){return function(_0xc65a26){try{jsonpatch[_0x1b24('0x1f')](_0xc65a26,_0x5f1aae,!![]);}catch(_0x173033){return BPromise[_0x1b24('0x20')](_0x173033);}return _0xc65a26[_0x1b24('0x21')]();};}function saveUpdates(_0x529f0c,_0x55f0fc){return function(_0x4db5d4){if(_0x4db5d4){return _0x4db5d4[_0x1b24('0x22')](_0x529f0c)[_0x1b24('0x23')](function(_0x3506bd){return _0x3506bd;});}return null;};}function removeEntity(_0x5c8b86,_0x323f21){return function(_0x4c3945){if(_0x4c3945){return _0x4c3945[_0x1b24('0x24')]()[_0x1b24('0x23')](function(){var _0x23bdf4=_0x4c3945['get']({'plain':!![]});var _0x1627ab=_0x1b24('0x25');return db[_0x1b24('0x26')][_0x1b24('0x24')]({'where':{'type':_0x1627ab,'resourceId':_0x23bdf4['id']}})[_0x1b24('0x23')](function(){return _0x4c3945;});})['then'](function(){_0x5c8b86[_0x1b24('0x17')](0xcc)[_0x1b24('0x18')]();});}};}function handleEntityNotFound(_0x22e107,_0x41e4dc){return function(_0x56a97c){if(!_0x56a97c){_0x22e107['sendStatus'](0x194);}return _0x56a97c;};}function handleError(_0x116d0c,_0x5845cf){_0x5845cf=_0x5845cf||0x1f4;return function(_0x2e9280){logger[_0x1b24('0x27')](_0x2e9280[_0x1b24('0x28')]);if(_0x2e9280['name']){delete _0x2e9280[_0x1b24('0x29')];}_0x116d0c[_0x1b24('0x17')](_0x5845cf)[_0x1b24('0x2a')](_0x2e9280);};}exports[_0x1b24('0x2b')]=function(_0x344b7e,_0x8ee6db){var _0x167a26={},_0x1daaa5={},_0x1f62f1={'count':0x0,'rows':[]};var _0xfef456=_[_0x1b24('0x2c')](db[_0x1b24('0x2d')][_0x1b24('0x2e')],function(_0x71a910){return{'name':_0x71a910['fieldName'],'type':_0x71a910[_0x1b24('0x2f')][_0x1b24('0x30')]};});_0x1daaa5['model']=_[_0x1b24('0x2c')](_0xfef456,_0x1b24('0x29'));_0x1daaa5['query']=_[_0x1b24('0x31')](_0x344b7e[_0x1b24('0x32')]);_0x1daaa5[_0x1b24('0x33')]=_[_0x1b24('0x34')](_0x1daaa5[_0x1b24('0x35')],_0x1daaa5[_0x1b24('0x32')]);_0x167a26['attributes']=_[_0x1b24('0x34')](_0x1daaa5['model'],qs[_0x1b24('0x36')](_0x344b7e[_0x1b24('0x32')][_0x1b24('0x36')]));_0x167a26[_0x1b24('0x37')]=_0x167a26[_0x1b24('0x37')][_0x1b24('0x38')]?_0x167a26[_0x1b24('0x37')]:_0x1daaa5[_0x1b24('0x35')];if(!_0x344b7e[_0x1b24('0x32')][_0x1b24('0x39')]('nolimit')){_0x167a26['limit']=qs[_0x1b24('0x1c')](_0x344b7e[_0x1b24('0x32')][_0x1b24('0x1c')]);_0x167a26['offset']=qs[_0x1b24('0x1a')](_0x344b7e[_0x1b24('0x32')][_0x1b24('0x1a')]);}_0x167a26[_0x1b24('0x3a')]=qs['sort'](_0x344b7e[_0x1b24('0x32')]['sort']);_0x167a26['where']=qs[_0x1b24('0x33')](_[_0x1b24('0x3b')](_0x344b7e[_0x1b24('0x32')],_0x1daaa5[_0x1b24('0x33')]),_0xfef456);if(_0x344b7e['query']['filter']){_0x167a26[_0x1b24('0x3c')]=_['merge'](_0x167a26[_0x1b24('0x3c')],{'$or':_[_0x1b24('0x2c')](_0xfef456,function(_0x37406d){if(_0x37406d[_0x1b24('0x2f')]!=='VIRTUAL'){var _0x6199c={};_0x6199c[_0x37406d[_0x1b24('0x29')]]={'$like':'%'+_0x344b7e['query'][_0x1b24('0x3d')]+'%'};return _0x6199c;}})});}_0x167a26=_['merge']({},_0x167a26,_0x344b7e[_0x1b24('0x3e')]);var _0x182c26={'where':_0x167a26[_0x1b24('0x3c')]};return db[_0x1b24('0x2d')][_0x1b24('0x1d')](_0x182c26)[_0x1b24('0x23')](function(_0x381fce){_0x1f62f1['count']=_0x381fce;if(_0x344b7e[_0x1b24('0x32')][_0x1b24('0x3f')]){_0x167a26[_0x1b24('0x40')]=[{'all':!![]}];}return db[_0x1b24('0x2d')][_0x1b24('0x41')](_0x167a26);})[_0x1b24('0x23')](function(_0x2211d4){_0x1f62f1[_0x1b24('0x42')]=_0x2211d4;return _0x1f62f1;})[_0x1b24('0x23')](respondWithFilteredResult(_0x8ee6db,_0x167a26))[_0x1b24('0x43')](handleError(_0x8ee6db,null));};exports[_0x1b24('0x44')]=function(_0x2486ca,_0x38589c){var _0x2e0149={'raw':!![],'where':{'id':_0x2486ca[_0x1b24('0x45')]['id']}},_0x43a162={};_0x43a162['model']=_[_0x1b24('0x31')](db['AnalyticExtractedReport'][_0x1b24('0x2e')]);_0x43a162[_0x1b24('0x32')]=_[_0x1b24('0x31')](_0x2486ca['query']);_0x43a162[_0x1b24('0x33')]=_[_0x1b24('0x34')](_0x43a162['model'],_0x43a162['query']);_0x2e0149[_0x1b24('0x37')]=_['intersection'](_0x43a162[_0x1b24('0x35')],qs[_0x1b24('0x36')](_0x2486ca['query'][_0x1b24('0x36')]));_0x2e0149['attributes']=_0x2e0149[_0x1b24('0x37')][_0x1b24('0x38')]?_0x2e0149[_0x1b24('0x37')]:_0x43a162[_0x1b24('0x35')];if(_0x2486ca['query']['includeAll']){_0x2e0149[_0x1b24('0x40')]=[{'all':!![]}];}_0x2e0149=_['merge']({},_0x2e0149,_0x2486ca[_0x1b24('0x3e')]);return db[_0x1b24('0x2d')][_0x1b24('0x46')](_0x2e0149)[_0x1b24('0x23')](handleEntityNotFound(_0x38589c,null))[_0x1b24('0x23')](respondWithResult(_0x38589c,null))[_0x1b24('0x43')](handleError(_0x38589c,null));};exports['create']=function(_0x1b0ba4,_0x130e98){return db[_0x1b24('0x2d')][_0x1b24('0x47')](_0x1b0ba4[_0x1b24('0x48')],{})[_0x1b24('0x23')](function(_0x284651){var _0x2780fa=_0x1b0ba4[_0x1b24('0x49')][_0x1b24('0x4a')]({'plain':!![]});if(!_0x2780fa)throw new Error(_0x1b24('0x4b'));if(_0x2780fa[_0x1b24('0x4c')]===_0x1b24('0x49')){var _0x390b6d=_0x284651[_0x1b24('0x4a')]({'plain':!![]});var _0x2f6ce1=_0x1b24('0x25');return db['UserProfileSection'][_0x1b24('0x46')]({'where':{'name':_0x2f6ce1,'userProfileId':_0x2780fa[_0x1b24('0x4d')]},'raw':!![]})[_0x1b24('0x23')](function(_0x2d82af){if(_0x2d82af&&_0x2d82af[_0x1b24('0x4e')]===0x0){return db['UserProfileResource'][_0x1b24('0x47')]({'name':_0x390b6d[_0x1b24('0x29')],'resourceId':_0x390b6d['id'],'type':_0x2d82af[_0x1b24('0x29')],'sectionId':_0x2d82af['id']},{})[_0x1b24('0x23')](function(){return _0x284651;});}else{return _0x284651;}})[_0x1b24('0x43')](function(_0x5c631f){logger['error'](_0x1b24('0x4f'),_0x5c631f);throw _0x5c631f;});}return _0x284651;})['then'](respondWithResult(_0x130e98,0xc9))['catch'](handleError(_0x130e98,null));};exports['update']=function(_0x56944c,_0x28d5f7){if(_0x56944c[_0x1b24('0x48')]['id']){delete _0x56944c[_0x1b24('0x48')]['id'];}return db['AnalyticExtractedReport']['find']({'where':{'id':_0x56944c[_0x1b24('0x45')]['id']}})['then'](handleEntityNotFound(_0x28d5f7,null))[_0x1b24('0x23')](saveUpdates(_0x56944c['body'],null))[_0x1b24('0x23')](respondWithResult(_0x28d5f7,null))[_0x1b24('0x43')](handleError(_0x28d5f7,null));};exports['destroy']=function(_0xfc0375,_0x57922f){return db[_0x1b24('0x2d')][_0x1b24('0x46')]({'where':{'id':_0xfc0375['params']['id']}})['then'](handleEntityNotFound(_0x57922f,null))[_0x1b24('0x23')](removeEntity(_0x57922f,null))[_0x1b24('0x43')](handleError(_0x57922f,null));};exports[_0x1b24('0x50')]=function(_0x11c3c5,_0x3409af,_0x3a3ebf){return db[_0x1b24('0x2d')][_0x1b24('0x46')]({'where':{'id':_0x11c3c5[_0x1b24('0x45')]['id']},'attributes':['name','basename','savename',_0x1b24('0x51')],'raw':!![]})['then'](handleEntityNotFound(_0x3409af,null))['then'](function(_0x1615b){if(_0x1615b){if(!fs[_0x1b24('0x52')](path[_0x1b24('0x53')](config['root'],_0x1b24('0x54'),_0x1615b[_0x1b24('0x55')]))){throw new db[(_0x1b24('0x56'))]['ValidationError'](_0x1b24('0x57'));}if(_0x11c3c5[_0x1b24('0x32')]['exists']){return _0x3409af[_0x1b24('0x16')](0xc8);}return _0x3409af[_0x1b24('0x50')](path[_0x1b24('0x53')](config[_0x1b24('0x58')],'server/files/reports',_0x1615b['savename']),util[_0x1b24('0x59')](_0x1b24('0x5a'),_0x1615b[_0x1b24('0x5b')]||_0x1615b[_0x1b24('0x29')],_0x1615b[_0x1b24('0x51')][_0x1b24('0x5c')]()));}})[_0x1b24('0x43')](handleError(_0x3409af,null));};
\ No newline at end of file
index 1c05a7d..938565d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe200=['define','AnalyticExtractedReport','lodash','util','../../config/logger','api','bluebird','request-promise','path','./analyticExtractedReport.attributes','exports'];(function(_0x212a37,_0xf35b2e){var _0x5d0bf9=function(_0x51850f){while(--_0x51850f){_0x212a37['push'](_0x212a37['shift']());}};_0x5d0bf9(++_0xf35b2e);}(_0xe200,0xd3));var _0x0e20=function(_0x405a83,_0x572a93){_0x405a83=_0x405a83-0x0;var _0x2e7b0f=_0xe200[_0x405a83];return _0x2e7b0f;};'use strict';var _=require(_0x0e20('0x0'));var util=require(_0x0e20('0x1'));var logger=require(_0x0e20('0x2'))(_0x0e20('0x3'));var moment=require('moment');var BPromise=require(_0x0e20('0x4'));var rp=require(_0x0e20('0x5'));var fs=require('fs');var path=require(_0x0e20('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0e20('0x7'));module[_0x0e20('0x8')]=function(_0x2400e9,_0x348aaf){return _0x2400e9[_0x0e20('0x9')](_0x0e20('0xa'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e82=['rimraf','../../config/environment','define','analytics_extracted_reports','util','../../config/logger','api','moment','path'];(function(_0x28f965,_0x20fbec){var _0x41b598=function(_0x53351f){while(--_0x53351f){_0x28f965['push'](_0x28f965['shift']());}};_0x41b598(++_0x20fbec);}(_0x3e82,0x1b4));var _0x23e8=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x3e82[_0x40a045];return _0x1a687c;};'use strict';var _=require('lodash');var util=require(_0x23e8('0x0'));var logger=require(_0x23e8('0x1'))(_0x23e8('0x2'));var moment=require(_0x23e8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x23e8('0x4'));var rimraf=require(_0x23e8('0x5'));var config=require(_0x23e8('0x6'));var attributes=require('./analyticExtractedReport.attributes');module['exports']=function(_0x4be4ad,_0x3c406d){return _0x4be4ad[_0x23e8('0x7')]('AnalyticExtractedReport',attributes,{'tableName':_0x23e8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 360d905..fca5206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fe7=['AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x7fe7,0x104));var _0x77fe=function(_0x229e80,_0x414425){_0x229e80=_0x229e80-0x0;var _0x30c4a4=_0x7fe7[_0x229e80];return _0x30c4a4;};'use strict';var _=require(_0x77fe('0x0'));var util=require(_0x77fe('0x1'));var moment=require('moment');var BPromise=require(_0x77fe('0x2'));var rs=require(_0x77fe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77fe('0x4'))['db'];var utils=require(_0x77fe('0x5'));var logger=require(_0x77fe('0x6'))(_0x77fe('0x7'));var config=require('../../config/environment');var jayson=require(_0x77fe('0x8'));var client=jayson[_0x77fe('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21f2ab,_0x427074,_0x5168a1){return new BPromise(function(_0x20a34a,_0x2acdc4){return client[_0x77fe('0xa')](_0x21f2ab,_0x5168a1)[_0x77fe('0xb')](function(_0x5842d6){logger[_0x77fe('0xc')](_0x77fe('0xd'),_0x427074,_0x77fe('0xe'));logger[_0x77fe('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x427074,'request\x20sent',JSON[_0x77fe('0x10')](_0x5842d6));if(_0x5842d6['error']){if(_0x5842d6[_0x77fe('0x11')][_0x77fe('0x12')]===0x1f4){logger[_0x77fe('0x11')](_0x77fe('0xd'),_0x427074,_0x5842d6[_0x77fe('0x11')][_0x77fe('0x13')]);return _0x2acdc4(_0x5842d6[_0x77fe('0x11')][_0x77fe('0x13')]);}logger['error'](_0x77fe('0xd'),_0x427074,_0x5842d6[_0x77fe('0x11')]['message']);return _0x20a34a(_0x5842d6[_0x77fe('0x11')][_0x77fe('0x13')]);}else{logger[_0x77fe('0xc')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x427074,'request\x20sent');_0x20a34a(_0x5842d6[_0x77fe('0x14')][_0x77fe('0x13')]);}})['catch'](function(_0x53e614){logger[_0x77fe('0x11')](_0x77fe('0xd'),_0x427074,_0x53e614);_0x2acdc4(_0x53e614);});});}
\ No newline at end of file
+var _0x0655=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x0655,0x176));var _0x5065=function(_0x2095ed,_0x156cfb){_0x2095ed=_0x2095ed-0x0;var _0x22dbb0=_0x0655[_0x2095ed];return _0x22dbb0;};'use strict';var _=require(_0x5065('0x0'));var util=require(_0x5065('0x1'));var moment=require(_0x5065('0x2'));var BPromise=require(_0x5065('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5065('0x4'));var db=require(_0x5065('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5065('0x6'))(_0x5065('0x7'));var config=require(_0x5065('0x8'));var jayson=require(_0x5065('0x9'));var client=jayson[_0x5065('0xa')][_0x5065('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4cfa03,_0x432ea1,_0x2ec3a3){return new BPromise(function(_0x49f1d0,_0x2bc916){return client[_0x5065('0xc')](_0x4cfa03,_0x2ec3a3)['then'](function(_0x2c25f8){logger[_0x5065('0xd')](_0x5065('0xe'),_0x432ea1,_0x5065('0xf'));logger['debug'](_0x5065('0x10'),_0x432ea1,_0x5065('0xf'),JSON[_0x5065('0x11')](_0x2c25f8));if(_0x2c25f8[_0x5065('0x12')]){if(_0x2c25f8[_0x5065('0x12')]['code']===0x1f4){logger[_0x5065('0x12')](_0x5065('0xe'),_0x432ea1,_0x2c25f8['error'][_0x5065('0x13')]);return _0x2bc916(_0x2c25f8[_0x5065('0x12')]['message']);}logger[_0x5065('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x432ea1,_0x2c25f8['error'][_0x5065('0x13')]);return _0x49f1d0(_0x2c25f8[_0x5065('0x12')]['message']);}else{logger[_0x5065('0xd')](_0x5065('0xe'),_0x432ea1,_0x5065('0xf'));_0x49f1d0(_0x2c25f8[_0x5065('0x14')][_0x5065('0x13')]);}})[_0x5065('0x15')](function(_0x35ab3c){logger[_0x5065('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x432ea1,_0x35ab3c);_0x2bc916(_0x35ab3c);});});}
\ No newline at end of file
index 3077750..d8af40d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9997=['get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller'];(function(_0x4038fb,_0x5d4a66){var _0x206adb=function(_0x369a2a){while(--_0x369a2a){_0x4038fb['push'](_0x4038fb['shift']());}};_0x206adb(++_0x5d4a66);}(_0x9997,0x1c2));var _0x7999=function(_0x5c38cd,_0x5a6b4e){_0x5c38cd=_0x5c38cd-0x0;var _0xc985ef=_0x9997[_0x5c38cd];return _0xc985ef;};'use strict';var multer=require(_0x7999('0x0'));var util=require(_0x7999('0x1'));var path=require(_0x7999('0x2'));var timeout=require(_0x7999('0x3'));var express=require(_0x7999('0x4'));var router=express[_0x7999('0x5')]();var fs_extra=require(_0x7999('0x6'));var auth=require(_0x7999('0x7'));var interaction=require(_0x7999('0x8'));var config=require('../../config/environment');var controller=require(_0x7999('0x9'));router[_0x7999('0xa')]('/',auth[_0x7999('0xb')](),controller[_0x7999('0xc')]);router[_0x7999('0xa')](_0x7999('0xd'),auth[_0x7999('0xb')](),controller[_0x7999('0xe')]);router['get'](_0x7999('0xf'),auth[_0x7999('0xb')](),controller[_0x7999('0x10')]);router[_0x7999('0x11')]('/',auth[_0x7999('0xb')](),controller[_0x7999('0x12')]);router['put'](_0x7999('0xd'),auth[_0x7999('0xb')](),controller[_0x7999('0x13')]);router[_0x7999('0x14')]('/:id',auth[_0x7999('0xb')](),controller[_0x7999('0x15')]);module[_0x7999('0x16')]=router;
\ No newline at end of file
+var _0x59f3=['../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','exports','multer','path','connect-timeout','express','Router'];(function(_0x55ff30,_0x4991e5){var _0x4288f6=function(_0x737649){while(--_0x737649){_0x55ff30['push'](_0x55ff30['shift']());}};_0x4288f6(++_0x4991e5);}(_0x59f3,0x6d));var _0x359f=function(_0x1fdb40,_0x51351c){_0x1fdb40=_0x1fdb40-0x0;var _0x281f93=_0x59f3[_0x1fdb40];return _0x281f93;};'use strict';var multer=require(_0x359f('0x0'));var util=require('util');var path=require(_0x359f('0x1'));var timeout=require(_0x359f('0x2'));var express=require(_0x359f('0x3'));var router=express[_0x359f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x359f('0x5'));var config=require(_0x359f('0x6'));var controller=require(_0x359f('0x7'));router[_0x359f('0x8')]('/',auth[_0x359f('0x9')](),controller[_0x359f('0xa')]);router[_0x359f('0x8')](_0x359f('0xb'),auth[_0x359f('0x9')](),controller[_0x359f('0xc')]);router[_0x359f('0x8')](_0x359f('0xd'),auth[_0x359f('0x9')](),controller[_0x359f('0xe')]);router[_0x359f('0xf')]('/',auth[_0x359f('0x9')](),controller[_0x359f('0x10')]);router[_0x359f('0x11')](_0x359f('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x359f('0xb'),auth[_0x359f('0x9')](),controller['destroy']);module[_0x359f('0x12')]=router;
\ No newline at end of file
index 5049feb..2501ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6361=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6361,0x9f));var _0x1636=function(_0x3cc60b,_0xf2b9d8){_0x3cc60b=_0x3cc60b-0x0;var _0x549723=_0x6361[_0x3cc60b];return _0x549723;};'use strict';var Sequelize=require(_0x1636('0x0'));module[_0x1636('0x1')]={'field':{'type':Sequelize[_0x1636('0x2')]},'alias':{'type':Sequelize[_0x1636('0x3')]},'function':{'type':Sequelize[_0x1636('0x3')]},'format':{'type':Sequelize[_0x1636('0x3')]},'groupBy':{'type':Sequelize[_0x1636('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x6b64=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x37b3b2,_0x21f90c){var _0x3c2172=function(_0x386c5d){while(--_0x386c5d){_0x37b3b2['push'](_0x37b3b2['shift']());}};_0x3c2172(++_0x21f90c);}(_0x6b64,0x8b));var _0x46b6=function(_0x46e523,_0xe6fccb){_0x46e523=_0x46e523-0x0;var _0x5da0ee=_0x6b64[_0x46e523];return _0x5da0ee;};'use strict';var Sequelize=require(_0x46b6('0x0'));module[_0x46b6('0x1')]={'field':{'type':Sequelize[_0x46b6('0x2')]},'alias':{'type':Sequelize[_0x46b6('0x3')]},'function':{'type':Sequelize[_0x46b6('0x3')]},'format':{'type':Sequelize[_0x46b6('0x3')]},'groupBy':{'type':Sequelize[_0x46b6('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x46b6('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b8cf4d2..8fa6f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b6b=['limit','count','offset','set','Content-Range','reject','save','then','end','error','stack','name','send','index','map','AnalyticFieldReport','fieldName','type','key','query','keys','filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','create','body','update','destroy','bulkDestroy','ids','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4b6b,0x86));var _0xb4b6=function(_0x67b864,_0x52283d){_0x67b864=_0x67b864-0x0;var _0x337273=_0x4b6b[_0x67b864];return _0x337273;};'use strict';var emlformat=require(_0xb4b6('0x0'));var rimraf=require(_0xb4b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb4b6('0x2'));var rp=require(_0xb4b6('0x3'));var moment=require(_0xb4b6('0x4'));var BPromise=require(_0xb4b6('0x5'));var Mustache=require('mustache');var util=require(_0xb4b6('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xb4b6('0x7'));var ejs=require(_0xb4b6('0x8'));var fs=require('fs');var fs_extra=require(_0xb4b6('0x9'));var _=require(_0xb4b6('0xa'));var squel=require(_0xb4b6('0xb'));var crypto=require('crypto');var jsforce=require(_0xb4b6('0xc'));var deskjs=require(_0xb4b6('0xd'));var toCsv=require(_0xb4b6('0x7'));var querystring=require('querystring');var Papa=require(_0xb4b6('0xe'));var Redis=require(_0xb4b6('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb4b6('0x10'));var as=require(_0xb4b6('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb4b6('0x12'))(_0xb4b6('0x13'));var utils=require('../../config/utils');var config=require(_0xb4b6('0x14'));var licenseUtil=require(_0xb4b6('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2880f7,_0x862d5e){_0x862d5e=_0x862d5e||0xcc;return function(_0x2bf121){if(_0x2bf121){return _0x2880f7[_0xb4b6('0x16')](_0x862d5e);}return _0x2880f7['status'](_0x862d5e)['end']();};}function respondWithResult(_0x40f884,_0x40d31f){_0x40d31f=_0x40d31f||0xc8;return function(_0x4ae427){if(_0x4ae427){return _0x40f884[_0xb4b6('0x17')](_0x40d31f)[_0xb4b6('0x18')](_0x4ae427);}};}function respondWithFilteredResult(_0x9bb1c6,_0x24b95){return function(_0x55d5c4){if(_0x55d5c4){var _0x29d270=typeof _0x24b95['offset']===_0xb4b6('0x19')&&typeof _0x24b95[_0xb4b6('0x1a')]==='undefined';var _0x512441=_0x55d5c4[_0xb4b6('0x1b')];var _0x440820=_0x29d270?0x0:_0x24b95[_0xb4b6('0x1c')];var _0x5545ae=_0x29d270?_0x55d5c4[_0xb4b6('0x1b')]:_0x24b95[_0xb4b6('0x1c')]+_0x24b95[_0xb4b6('0x1a')];var _0x5e4eed;if(_0x5545ae>=_0x512441){_0x5545ae=_0x512441;_0x5e4eed=0xc8;}else{_0x5e4eed=0xce;}_0x9bb1c6[_0xb4b6('0x17')](_0x5e4eed);return _0x9bb1c6[_0xb4b6('0x1d')](_0xb4b6('0x1e'),_0x440820+'-'+_0x5545ae+'/'+_0x512441)['json'](_0x55d5c4);}return null;};}function patchUpdates(_0x12e51b){return function(_0x2d1425){try{jsonpatch['apply'](_0x2d1425,_0x12e51b,!![]);}catch(_0x3c387d){return BPromise[_0xb4b6('0x1f')](_0x3c387d);}return _0x2d1425[_0xb4b6('0x20')]();};}function saveUpdates(_0x10e94e,_0x3b4f99){return function(_0x1bbcd8){if(_0x1bbcd8){return _0x1bbcd8['update'](_0x10e94e)['then'](function(_0x926e54){return _0x926e54;});}return null;};}function removeEntity(_0x1252c2,_0xa54c28){return function(_0x53406c){if(_0x53406c){return _0x53406c['destroy']()[_0xb4b6('0x21')](function(){_0x1252c2[_0xb4b6('0x17')](0xcc)[_0xb4b6('0x22')]();});}};}function handleEntityNotFound(_0x1e7e97,_0x5252f8){return function(_0x436697){if(!_0x436697){_0x1e7e97[_0xb4b6('0x16')](0x194);}return _0x436697;};}function handleError(_0x7126c8,_0x1062ef){_0x1062ef=_0x1062ef||0x1f4;return function(_0x384790){logger[_0xb4b6('0x23')](_0x384790[_0xb4b6('0x24')]);if(_0x384790[_0xb4b6('0x25')]){delete _0x384790[_0xb4b6('0x25')];}_0x7126c8[_0xb4b6('0x17')](_0x1062ef)[_0xb4b6('0x26')](_0x384790);};}exports[_0xb4b6('0x27')]=function(_0x209ae3,_0x5f397e){var _0x1d631c={},_0x20121a={},_0x39e094={'count':0x0,'rows':[]};var _0x4f6545=_[_0xb4b6('0x28')](db[_0xb4b6('0x29')]['rawAttributes'],function(_0x4665b8){return{'name':_0x4665b8[_0xb4b6('0x2a')],'type':_0x4665b8[_0xb4b6('0x2b')][_0xb4b6('0x2c')]};});_0x20121a['model']=_[_0xb4b6('0x28')](_0x4f6545,_0xb4b6('0x25'));_0x20121a[_0xb4b6('0x2d')]=_[_0xb4b6('0x2e')](_0x209ae3['query']);_0x20121a[_0xb4b6('0x2f')]=_[_0xb4b6('0x30')](_0x20121a['model'],_0x20121a['query']);_0x1d631c['attributes']=_[_0xb4b6('0x30')](_0x20121a['model'],qs[_0xb4b6('0x31')](_0x209ae3[_0xb4b6('0x2d')][_0xb4b6('0x31')]));_0x1d631c[_0xb4b6('0x32')]=_0x1d631c[_0xb4b6('0x32')][_0xb4b6('0x33')]?_0x1d631c[_0xb4b6('0x32')]:_0x20121a[_0xb4b6('0x34')];if(!_0x209ae3['query'][_0xb4b6('0x35')](_0xb4b6('0x36'))){_0x1d631c['limit']=qs['limit'](_0x209ae3[_0xb4b6('0x2d')][_0xb4b6('0x1a')]);_0x1d631c[_0xb4b6('0x1c')]=qs[_0xb4b6('0x1c')](_0x209ae3[_0xb4b6('0x2d')]['offset']);}_0x1d631c[_0xb4b6('0x37')]=qs['sort'](_0x209ae3[_0xb4b6('0x2d')]['sort']);_0x1d631c[_0xb4b6('0x38')]=qs[_0xb4b6('0x2f')](_[_0xb4b6('0x39')](_0x209ae3[_0xb4b6('0x2d')],_0x20121a['filters']),_0x4f6545);if(_0x209ae3[_0xb4b6('0x2d')][_0xb4b6('0x3a')]){_0x1d631c[_0xb4b6('0x38')]=_[_0xb4b6('0x3b')](_0x1d631c['where'],{'$or':_[_0xb4b6('0x28')](_0x4f6545,function(_0x4df819){if(_0x4df819['type']!==_0xb4b6('0x3c')){var _0x19f74f={};_0x19f74f[_0x4df819['name']]={'$like':'%'+_0x209ae3[_0xb4b6('0x2d')][_0xb4b6('0x3a')]+'%'};return _0x19f74f;}})});}_0x1d631c=_[_0xb4b6('0x3b')]({},_0x1d631c,_0x209ae3[_0xb4b6('0x3d')]);var _0x333b29={'where':_0x1d631c[_0xb4b6('0x38')]};return db['AnalyticFieldReport'][_0xb4b6('0x1b')](_0x333b29)[_0xb4b6('0x21')](function(_0x4300d2){_0x39e094['count']=_0x4300d2;if(_0x209ae3[_0xb4b6('0x2d')][_0xb4b6('0x3e')]){_0x1d631c[_0xb4b6('0x3f')]=[{'all':!![]}];}return db[_0xb4b6('0x29')]['findAll'](_0x1d631c);})[_0xb4b6('0x21')](function(_0x1f84a7){_0x39e094[_0xb4b6('0x40')]=_0x1f84a7;return _0x39e094;})[_0xb4b6('0x21')](respondWithFilteredResult(_0x5f397e,_0x1d631c))[_0xb4b6('0x41')](handleError(_0x5f397e,null));};exports['show']=function(_0x19bc6b,_0x165086){var _0x43bdd0={'raw':![],'where':{'id':_0x19bc6b[_0xb4b6('0x42')]['id']}},_0x393925={};_0x393925[_0xb4b6('0x34')]=_[_0xb4b6('0x2e')](db[_0xb4b6('0x29')][_0xb4b6('0x43')]);_0x393925[_0xb4b6('0x2d')]=_['keys'](_0x19bc6b[_0xb4b6('0x2d')]);_0x393925[_0xb4b6('0x2f')]=_[_0xb4b6('0x30')](_0x393925[_0xb4b6('0x34')],_0x393925['query']);_0x43bdd0[_0xb4b6('0x32')]=_[_0xb4b6('0x30')](_0x393925[_0xb4b6('0x34')],qs[_0xb4b6('0x31')](_0x19bc6b['query'][_0xb4b6('0x31')]));_0x43bdd0[_0xb4b6('0x32')]=_0x43bdd0[_0xb4b6('0x32')][_0xb4b6('0x33')]?_0x43bdd0['attributes']:_0x393925[_0xb4b6('0x34')];if(_0x19bc6b[_0xb4b6('0x2d')]['includeAll']){_0x43bdd0[_0xb4b6('0x3f')]=[{'all':!![]}];}_0x43bdd0=_[_0xb4b6('0x3b')]({},_0x43bdd0,_0x19bc6b[_0xb4b6('0x3d')]);return db['AnalyticFieldReport']['find'](_0x43bdd0)[_0xb4b6('0x21')](handleEntityNotFound(_0x165086,null))['then'](respondWithResult(_0x165086,null))[_0xb4b6('0x41')](handleError(_0x165086,null));};exports[_0xb4b6('0x44')]=function(_0x22a4f9,_0x50a59d){return db[_0xb4b6('0x29')][_0xb4b6('0x44')](_0x22a4f9[_0xb4b6('0x45')],{})[_0xb4b6('0x21')](respondWithResult(_0x50a59d,0xc9))[_0xb4b6('0x41')](handleError(_0x50a59d,null));};exports['bulkCreate']=function(_0x4b1c77,_0x24dce9){return db[_0xb4b6('0x29')]['bulkCreate'](_0x4b1c77[_0xb4b6('0x45')],{'raw':![],'individualHooks':!![]})[_0xb4b6('0x21')](respondWithResult(_0x24dce9,0xc9))[_0xb4b6('0x41')](handleError(_0x24dce9,null));};exports[_0xb4b6('0x46')]=function(_0xe5d7c1,_0x47b32a){if(_0xe5d7c1[_0xb4b6('0x45')]['id']){delete _0xe5d7c1[_0xb4b6('0x45')]['id'];}return db[_0xb4b6('0x29')]['find']({'where':{'id':_0xe5d7c1[_0xb4b6('0x42')]['id']}})[_0xb4b6('0x21')](handleEntityNotFound(_0x47b32a,null))['then'](saveUpdates(_0xe5d7c1[_0xb4b6('0x45')],null))[_0xb4b6('0x21')](respondWithResult(_0x47b32a,null))[_0xb4b6('0x41')](handleError(_0x47b32a,null));};exports[_0xb4b6('0x47')]=function(_0x3762f1,_0x1a32ce){return db[_0xb4b6('0x29')]['find']({'where':{'id':_0x3762f1[_0xb4b6('0x42')]['id']}})[_0xb4b6('0x21')](handleEntityNotFound(_0x1a32ce,null))['then'](removeEntity(_0x1a32ce,null))['catch'](handleError(_0x1a32ce,null));};exports[_0xb4b6('0x48')]=function(_0x4de91e,_0xaee0a4){return db['AnalyticFieldReport'][_0xb4b6('0x47')]({'where':{'id':_0x4de91e[_0xb4b6('0x2d')][_0xb4b6('0x49')]||[]},'raw':![],'individualHooks':!![]})[_0xb4b6('0x21')](respondWithResult(_0xaee0a4,0xcc))[_0xb4b6('0x41')](handleError(_0xaee0a4,null));};exports['addFields']=function(_0x115d08,_0x2d4b85,_0x23b4e7){return db[_0xb4b6('0x4a')][_0xb4b6('0x4b')]({'where':{'id':_0x115d08[_0xb4b6('0x42')]['id']}})['then'](handleEntityNotFound(_0x2d4b85,null))[_0xb4b6('0x21')](function(_0x26e71c){if(_0x26e71c){return db[_0xb4b6('0x4c')][_0xb4b6('0x4d')](function(_0x1507e1){return db[_0xb4b6('0x29')][_0xb4b6('0x47')]({'where':{'CustomReportId':_0x115d08['params']['id']},'transaction':_0x1507e1})[_0xb4b6('0x21')](function(_0xdb509b){var _0x1d27a6=_[_0xb4b6('0x28')](_0x115d08[_0xb4b6('0x45')],function(_0x92348b){delete _0x92348b['id'];_0x92348b[_0xb4b6('0x4e')]=_0x115d08[_0xb4b6('0x42')]['id'];return _0x92348b;});return db[_0xb4b6('0x29')]['bulkCreate'](_0x1d27a6,{'transaction':_0x1507e1});});})['then'](function(){return db[_0xb4b6('0x29')][_0xb4b6('0x4f')]({'where':{'CustomReportId':_0x115d08[_0xb4b6('0x42')]['id']}});});}})[_0xb4b6('0x21')](respondWithResult(_0x2d4b85,null))[_0xb4b6('0x41')](handleError(_0x2d4b85,null));};
\ No newline at end of file
+var _0xf96e=['bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','AnalyticFieldReport','findAll','rows','catch','show','params','find','create','body','bulkCreate'];(function(_0x418435,_0x57744f){var _0x157e90=function(_0x5f134f){while(--_0x5f134f){_0x418435['push'](_0x418435['shift']());}};_0x157e90(++_0x57744f);}(_0xf96e,0x196));var _0xef96=function(_0x3d862f,_0x512b24){_0x3d862f=_0x3d862f-0x0;var _0x774bd5=_0xf96e[_0x3d862f];return _0x774bd5;};'use strict';var emlformat=require(_0xef96('0x0'));var rimraf=require(_0xef96('0x1'));var zipdir=require(_0xef96('0x2'));var jsonpatch=require(_0xef96('0x3'));var rp=require(_0xef96('0x4'));var moment=require(_0xef96('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xef96('0x6'));var util=require('util');var path=require(_0xef96('0x7'));var sox=require(_0xef96('0x8'));var csv=require(_0xef96('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef96('0xa'));var _=require(_0xef96('0xb'));var squel=require('squel');var crypto=require(_0xef96('0xc'));var jsforce=require(_0xef96('0xd'));var deskjs=require(_0xef96('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef96('0xf'));var Redis=require(_0xef96('0x10'));var authService=require(_0xef96('0x11'));var qs=require(_0xef96('0x12'));var as=require(_0xef96('0x13'));var hardwareService=require(_0xef96('0x14'));var logger=require(_0xef96('0x15'))(_0xef96('0x16'));var utils=require('../../config/utils');var config=require(_0xef96('0x17'));var licenseUtil=require(_0xef96('0x18'));var db=require(_0xef96('0x19'))['db'];function respondWithStatusCode(_0x2e7020,_0x2e5ea7){_0x2e5ea7=_0x2e5ea7||0xcc;return function(_0x593743){if(_0x593743){return _0x2e7020[_0xef96('0x1a')](_0x2e5ea7);}return _0x2e7020[_0xef96('0x1b')](_0x2e5ea7)['end']();};}function respondWithResult(_0x2a0c53,_0x1ffb72){_0x1ffb72=_0x1ffb72||0xc8;return function(_0x1097d6){if(_0x1097d6){return _0x2a0c53[_0xef96('0x1b')](_0x1ffb72)['json'](_0x1097d6);}};}function respondWithFilteredResult(_0x19e34b,_0x39bfb3){return function(_0x5a0b67){if(_0x5a0b67){var _0x50dd52=typeof _0x39bfb3[_0xef96('0x1c')]===_0xef96('0x1d')&&typeof _0x39bfb3[_0xef96('0x1e')]===_0xef96('0x1d');var _0x3db33f=_0x5a0b67[_0xef96('0x1f')];var _0x161f7f=_0x50dd52?0x0:_0x39bfb3['offset'];var _0x12b222=_0x50dd52?_0x5a0b67[_0xef96('0x1f')]:_0x39bfb3[_0xef96('0x1c')]+_0x39bfb3[_0xef96('0x1e')];var _0x4b5149;if(_0x12b222>=_0x3db33f){_0x12b222=_0x3db33f;_0x4b5149=0xc8;}else{_0x4b5149=0xce;}_0x19e34b[_0xef96('0x1b')](_0x4b5149);return _0x19e34b[_0xef96('0x20')](_0xef96('0x21'),_0x161f7f+'-'+_0x12b222+'/'+_0x3db33f)['json'](_0x5a0b67);}return null;};}function patchUpdates(_0x39a4ac){return function(_0x26d4b5){try{jsonpatch[_0xef96('0x22')](_0x26d4b5,_0x39a4ac,!![]);}catch(_0x4cdf31){return BPromise['reject'](_0x4cdf31);}return _0x26d4b5[_0xef96('0x23')]();};}function saveUpdates(_0xcece21,_0x67c853){return function(_0x5cf738){if(_0x5cf738){return _0x5cf738[_0xef96('0x24')](_0xcece21)['then'](function(_0x391607){return _0x391607;});}return null;};}function removeEntity(_0x23270c,_0x432a6f){return function(_0x110fb5){if(_0x110fb5){return _0x110fb5[_0xef96('0x25')]()[_0xef96('0x26')](function(){_0x23270c[_0xef96('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fda2d,_0x35a2e7){return function(_0x543abc){if(!_0x543abc){_0x1fda2d[_0xef96('0x1a')](0x194);}return _0x543abc;};}function handleError(_0x568db0,_0x5a94a0){_0x5a94a0=_0x5a94a0||0x1f4;return function(_0x4fe30c){logger[_0xef96('0x27')](_0x4fe30c[_0xef96('0x28')]);if(_0x4fe30c[_0xef96('0x29')]){delete _0x4fe30c[_0xef96('0x29')];}_0x568db0[_0xef96('0x1b')](_0x5a94a0)[_0xef96('0x2a')](_0x4fe30c);};}exports['index']=function(_0x31f820,_0x15e83c){var _0x528c12={},_0x4e884b={},_0x1e43b5={'count':0x0,'rows':[]};var _0x212a8d=_[_0xef96('0x2b')](db['AnalyticFieldReport'][_0xef96('0x2c')],function(_0x342199){return{'name':_0x342199['fieldName'],'type':_0x342199[_0xef96('0x2d')][_0xef96('0x2e')]};});_0x4e884b[_0xef96('0x2f')]=_['map'](_0x212a8d,_0xef96('0x29'));_0x4e884b[_0xef96('0x30')]=_[_0xef96('0x31')](_0x31f820['query']);_0x4e884b[_0xef96('0x32')]=_[_0xef96('0x33')](_0x4e884b['model'],_0x4e884b[_0xef96('0x30')]);_0x528c12['attributes']=_['intersection'](_0x4e884b[_0xef96('0x2f')],qs[_0xef96('0x34')](_0x31f820[_0xef96('0x30')][_0xef96('0x34')]));_0x528c12[_0xef96('0x35')]=_0x528c12[_0xef96('0x35')][_0xef96('0x36')]?_0x528c12['attributes']:_0x4e884b[_0xef96('0x2f')];if(!_0x31f820['query']['hasOwnProperty'](_0xef96('0x37'))){_0x528c12[_0xef96('0x1e')]=qs[_0xef96('0x1e')](_0x31f820[_0xef96('0x30')][_0xef96('0x1e')]);_0x528c12['offset']=qs['offset'](_0x31f820['query'][_0xef96('0x1c')]);}_0x528c12['order']=qs['sort'](_0x31f820[_0xef96('0x30')][_0xef96('0x38')]);_0x528c12[_0xef96('0x39')]=qs['filters'](_[_0xef96('0x3a')](_0x31f820[_0xef96('0x30')],_0x4e884b[_0xef96('0x32')]),_0x212a8d);if(_0x31f820[_0xef96('0x30')]['filter']){_0x528c12[_0xef96('0x39')]=_[_0xef96('0x3b')](_0x528c12[_0xef96('0x39')],{'$or':_[_0xef96('0x2b')](_0x212a8d,function(_0x1a4994){if(_0x1a4994[_0xef96('0x2d')]!==_0xef96('0x3c')){var _0x3c267e={};_0x3c267e[_0x1a4994[_0xef96('0x29')]]={'$like':'%'+_0x31f820[_0xef96('0x30')]['filter']+'%'};return _0x3c267e;}})});}_0x528c12=_['merge']({},_0x528c12,_0x31f820[_0xef96('0x3d')]);var _0x210aa4={'where':_0x528c12[_0xef96('0x39')]};return db['AnalyticFieldReport'][_0xef96('0x1f')](_0x210aa4)[_0xef96('0x26')](function(_0x8165af){_0x1e43b5[_0xef96('0x1f')]=_0x8165af;if(_0x31f820[_0xef96('0x30')][_0xef96('0x3e')]){_0x528c12[_0xef96('0x3f')]=[{'all':!![]}];}return db[_0xef96('0x40')][_0xef96('0x41')](_0x528c12);})['then'](function(_0x3e6a7f){_0x1e43b5[_0xef96('0x42')]=_0x3e6a7f;return _0x1e43b5;})['then'](respondWithFilteredResult(_0x15e83c,_0x528c12))[_0xef96('0x43')](handleError(_0x15e83c,null));};exports[_0xef96('0x44')]=function(_0x54b929,_0x45529a){var _0x1c5365={'raw':![],'where':{'id':_0x54b929[_0xef96('0x45')]['id']}},_0x51227a={};_0x51227a[_0xef96('0x2f')]=_[_0xef96('0x31')](db[_0xef96('0x40')]['rawAttributes']);_0x51227a[_0xef96('0x30')]=_[_0xef96('0x31')](_0x54b929[_0xef96('0x30')]);_0x51227a[_0xef96('0x32')]=_[_0xef96('0x33')](_0x51227a[_0xef96('0x2f')],_0x51227a[_0xef96('0x30')]);_0x1c5365[_0xef96('0x35')]=_[_0xef96('0x33')](_0x51227a[_0xef96('0x2f')],qs['fields'](_0x54b929['query'][_0xef96('0x34')]));_0x1c5365[_0xef96('0x35')]=_0x1c5365['attributes'][_0xef96('0x36')]?_0x1c5365[_0xef96('0x35')]:_0x51227a[_0xef96('0x2f')];if(_0x54b929[_0xef96('0x30')][_0xef96('0x3e')]){_0x1c5365[_0xef96('0x3f')]=[{'all':!![]}];}_0x1c5365=_['merge']({},_0x1c5365,_0x54b929['options']);return db['AnalyticFieldReport'][_0xef96('0x46')](_0x1c5365)[_0xef96('0x26')](handleEntityNotFound(_0x45529a,null))[_0xef96('0x26')](respondWithResult(_0x45529a,null))[_0xef96('0x43')](handleError(_0x45529a,null));};exports[_0xef96('0x47')]=function(_0xc686d0,_0x5d0069){return db[_0xef96('0x40')][_0xef96('0x47')](_0xc686d0[_0xef96('0x48')],{})[_0xef96('0x26')](respondWithResult(_0x5d0069,0xc9))['catch'](handleError(_0x5d0069,null));};exports['bulkCreate']=function(_0x3d8f43,_0x140023){return db['AnalyticFieldReport'][_0xef96('0x49')](_0x3d8f43[_0xef96('0x48')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x140023,0xc9))[_0xef96('0x43')](handleError(_0x140023,null));};exports[_0xef96('0x24')]=function(_0x3efa57,_0x3e4bd0){if(_0x3efa57[_0xef96('0x48')]['id']){delete _0x3efa57[_0xef96('0x48')]['id'];}return db[_0xef96('0x40')][_0xef96('0x46')]({'where':{'id':_0x3efa57[_0xef96('0x45')]['id']}})[_0xef96('0x26')](handleEntityNotFound(_0x3e4bd0,null))[_0xef96('0x26')](saveUpdates(_0x3efa57['body'],null))[_0xef96('0x26')](respondWithResult(_0x3e4bd0,null))[_0xef96('0x43')](handleError(_0x3e4bd0,null));};exports[_0xef96('0x25')]=function(_0x3a065b,_0x47b604){return db['AnalyticFieldReport']['find']({'where':{'id':_0x3a065b[_0xef96('0x45')]['id']}})['then'](handleEntityNotFound(_0x47b604,null))[_0xef96('0x26')](removeEntity(_0x47b604,null))[_0xef96('0x43')](handleError(_0x47b604,null));};exports[_0xef96('0x4a')]=function(_0x4e5436,_0x4d584a){return db[_0xef96('0x40')][_0xef96('0x25')]({'where':{'id':_0x4e5436[_0xef96('0x30')][_0xef96('0x4b')]||[]},'raw':![],'individualHooks':!![]})[_0xef96('0x26')](respondWithResult(_0x4d584a,0xcc))[_0xef96('0x43')](handleError(_0x4d584a,null));};exports[_0xef96('0x4c')]=function(_0xee0fe6,_0x269b69,_0x3b22a9){return db[_0xef96('0x4d')][_0xef96('0x4e')]({'where':{'id':_0xee0fe6[_0xef96('0x45')]['id']}})['then'](handleEntityNotFound(_0x269b69,null))[_0xef96('0x26')](function(_0x2524e2){if(_0x2524e2){return db['sequelize']['transaction'](function(_0x11eaf1){return db[_0xef96('0x40')][_0xef96('0x25')]({'where':{'CustomReportId':_0xee0fe6[_0xef96('0x45')]['id']},'transaction':_0x11eaf1})[_0xef96('0x26')](function(_0x4589f2){var _0x108a8f=_[_0xef96('0x2b')](_0xee0fe6['body'],function(_0x5b173a){delete _0x5b173a['id'];_0x5b173a[_0xef96('0x4f')]=_0xee0fe6['params']['id'];return _0x5b173a;});return db[_0xef96('0x40')][_0xef96('0x49')](_0x108a8f,{'transaction':_0x11eaf1});});})[_0xef96('0x26')](function(){return db['AnalyticFieldReport']['findAll']({'where':{'CustomReportId':_0xee0fe6[_0xef96('0x45')]['id']}});});}})[_0xef96('0x26')](respondWithResult(_0x269b69,null))[_0xef96('0x43')](handleError(_0x269b69,null));};
\ No newline at end of file
index 1de6a2e..bc949d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b2=['exports','analytics_report_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticFieldReport.attributes'];(function(_0x27341e,_0x43db00){var _0x1b93a5=function(_0x314fa3){while(--_0x314fa3){_0x27341e['push'](_0x27341e['shift']());}};_0x1b93a5(++_0x43db00);}(_0xd3b2,0xc8));var _0x2d3b=function(_0x50de2e,_0x476857){_0x50de2e=_0x50de2e-0x0;var _0x3c4ab2=_0xd3b2[_0x50de2e];return _0x3c4ab2;};'use strict';var _=require(_0x2d3b('0x0'));var util=require(_0x2d3b('0x1'));var logger=require(_0x2d3b('0x2'))('api');var moment=require(_0x2d3b('0x3'));var BPromise=require(_0x2d3b('0x4'));var rp=require(_0x2d3b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2d3b('0x6'));var config=require(_0x2d3b('0x7'));var attributes=require(_0x2d3b('0x8'));module[_0x2d3b('0x9')]=function(_0x1c2e62,_0x1d37db){return _0x1c2e62['define']('AnalyticFieldReport',attributes,{'tableName':_0x2d3b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5955=['define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./analyticFieldReport.attributes'];(function(_0x5f185f,_0x3cf12b){var _0x48fd3b=function(_0x610359){while(--_0x610359){_0x5f185f['push'](_0x5f185f['shift']());}};_0x48fd3b(++_0x3cf12b);}(_0x5955,0x87));var _0x5595=function(_0x34b1b8,_0x54c9bf){_0x34b1b8=_0x34b1b8-0x0;var _0x542dd8=_0x5955[_0x34b1b8];return _0x542dd8;};'use strict';var _=require(_0x5595('0x0'));var util=require(_0x5595('0x1'));var logger=require(_0x5595('0x2'))(_0x5595('0x3'));var moment=require(_0x5595('0x4'));var BPromise=require('bluebird');var rp=require(_0x5595('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5595('0x6'));var attributes=require(_0x5595('0x7'));module['exports']=function(_0x1c775a,_0x12a42d){return _0x1c775a[_0x5595('0x8')](_0x5595('0x9'),attributes,{'tableName':_0x5595('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9697879..e229d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2f6=['info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xe2f6,0x76));var _0x6e2f=function(_0x3130dc,_0x1e68b5){_0x3130dc=_0x3130dc-0x0;var _0x4e0ceb=_0xe2f6[_0x3130dc];return _0x4e0ceb;};'use strict';var _=require(_0x6e2f('0x0'));var util=require('util');var moment=require(_0x6e2f('0x1'));var BPromise=require(_0x6e2f('0x2'));var rs=require(_0x6e2f('0x3'));var fs=require('fs');var Redis=require(_0x6e2f('0x4'));var db=require(_0x6e2f('0x5'))['db'];var utils=require(_0x6e2f('0x6'));var logger=require(_0x6e2f('0x7'))(_0x6e2f('0x8'));var config=require(_0x6e2f('0x9'));var jayson=require(_0x6e2f('0xa'));var client=jayson[_0x6e2f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ce172,_0x305bc4,_0x1019ad){return new BPromise(function(_0x5cdb6d,_0x4f9c6b){return client[_0x6e2f('0xc')](_0x2ce172,_0x1019ad)[_0x6e2f('0xd')](function(_0x26aee8){logger[_0x6e2f('0xe')](_0x6e2f('0xf'),_0x305bc4,_0x6e2f('0x10'));logger['debug'](_0x6e2f('0x11'),_0x305bc4,_0x6e2f('0x10'),JSON['stringify'](_0x26aee8));if(_0x26aee8[_0x6e2f('0x12')]){if(_0x26aee8[_0x6e2f('0x12')][_0x6e2f('0x13')]===0x1f4){logger['error'](_0x6e2f('0xf'),_0x305bc4,_0x26aee8[_0x6e2f('0x12')][_0x6e2f('0x14')]);return _0x4f9c6b(_0x26aee8[_0x6e2f('0x12')]['message']);}logger['error'](_0x6e2f('0xf'),_0x305bc4,_0x26aee8[_0x6e2f('0x12')][_0x6e2f('0x14')]);return _0x5cdb6d(_0x26aee8[_0x6e2f('0x12')][_0x6e2f('0x14')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x305bc4,'request\x20sent');_0x5cdb6d(_0x26aee8['result']['message']);}})[_0x6e2f('0x15')](function(_0x78e465){logger[_0x6e2f('0x12')](_0x6e2f('0xf'),_0x305bc4,_0x78e465);_0x4f9c6b(_0x78e465);});});}
\ No newline at end of file
+var _0x090c=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','ioredis','../../config/utils'];(function(_0x507b39,_0x1e548c){var _0x355e4c=function(_0x3e74bb){while(--_0x3e74bb){_0x507b39['push'](_0x507b39['shift']());}};_0x355e4c(++_0x1e548c);}(_0x090c,0x1b5));var _0xc090=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x090c[_0x3070dc];return _0x431489;};'use strict';var _=require(_0xc090('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc090('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc090('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xc090('0x3'));var logger=require(_0xc090('0x4'))(_0xc090('0x5'));var config=require('../../config/environment');var jayson=require(_0xc090('0x6'));var client=jayson[_0xc090('0x7')][_0xc090('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3a9269,_0x35878f,_0x75c5bd){return new BPromise(function(_0xcc60ae,_0x2d51f8){return client[_0xc090('0x9')](_0x3a9269,_0x75c5bd)[_0xc090('0xa')](function(_0xcd3cbf){logger[_0xc090('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x35878f,_0xc090('0xc'));logger[_0xc090('0xd')](_0xc090('0xe'),_0x35878f,_0xc090('0xc'),JSON['stringify'](_0xcd3cbf));if(_0xcd3cbf[_0xc090('0xf')]){if(_0xcd3cbf['error'][_0xc090('0x10')]===0x1f4){logger[_0xc090('0xf')](_0xc090('0x11'),_0x35878f,_0xcd3cbf['error'][_0xc090('0x12')]);return _0x2d51f8(_0xcd3cbf[_0xc090('0xf')][_0xc090('0x12')]);}logger['error'](_0xc090('0x11'),_0x35878f,_0xcd3cbf[_0xc090('0xf')][_0xc090('0x12')]);return _0xcc60ae(_0xcd3cbf['error'][_0xc090('0x12')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x35878f,_0xc090('0xc'));_0xcc60ae(_0xcd3cbf[_0xc090('0x13')][_0xc090('0x12')]);}})[_0xc090('0x14')](function(_0x295839){logger[_0xc090('0xf')](_0xc090('0x11'),_0x35878f,_0x295839);_0x2d51f8(_0x295839);});});}
\ No newline at end of file
index 8915cd5..fb85d40 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(_0x1d1523,_0x462d67){var _0x2ce19a=function(_0x58aac4){while(--_0x58aac4){_0x1d1523['push'](_0x1d1523['shift']());}};_0x2ce19a(++_0x462d67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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(_0x87b975,_0x37918c){var _0x5d97a2=function(_0x254942){while(--_0x254942){_0x87b975['push'](_0x87b975['shift']());}};_0x5d97a2(++_0x37918c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 b40bf46..65fcb2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902b=['name','TEXT','sequelize','STRING'];(function(_0x2ca114,_0xe8f173){var _0x4c8452=function(_0x4368ff){while(--_0x4368ff){_0x2ca114['push'](_0x2ca114['shift']());}};_0x4c8452(++_0xe8f173);}(_0x902b,0x6a));var _0xb902=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0x902b[_0x500419];return _0x241c1a;};'use strict';var Sequelize=require(_0xb902('0x0'));module['exports']={'name':{'type':Sequelize[_0xb902('0x1')],'allowNull':![],'unique':_0xb902('0x2')},'table':{'type':Sequelize[_0xb902('0x1')]},'metric':{'type':Sequelize[_0xb902('0x3')]},'description':{'type':Sequelize[_0xb902('0x1')]}};
\ No newline at end of file
+var _0x1c8a=['sequelize','exports','STRING','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c8a,0x140));var _0xa1c8=function(_0x41b722,_0x2df752){_0x41b722=_0x41b722-0x0;var _0x5687f5=_0x1c8a[_0x41b722];return _0x5687f5;};'use strict';var Sequelize=require(_0xa1c8('0x0'));module[_0xa1c8('0x1')]={'name':{'type':Sequelize[_0xa1c8('0x2')],'allowNull':![],'unique':_0xa1c8('0x3')},'table':{'type':Sequelize[_0xa1c8('0x2')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0xa1c8('0x2')]}};
\ No newline at end of file
index 17257b9..dc47dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','get','Metrics','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','AnalyticMetric','findAll','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0xce4ebb,_0x28a3f6){var _0x385fb0=function(_0x2a248e){while(--_0x2a248e){_0xce4ebb['push'](_0xce4ebb['shift']());}};_0x385fb0(++_0x28a3f6);}(_0x55ca,0x126));var _0xa55c=function(_0x11de83,_0x49e1c1){_0x11de83=_0x11de83-0x0;var _0x45bdb0=_0x55ca[_0x11de83];return _0x45bdb0;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){var _0x54b038=_0x5ba836[_0xa55c('0x21')]({'plain':!![]});var _0x190757=_0xa55c('0x22');return db[_0xa55c('0x23')][_0xa55c('0x24')]({'where':{'type':_0x190757,'resourceId':_0x54b038['id']}})[_0xa55c('0x20')](function(){return _0x5ba836;});})[_0xa55c('0x20')](function(){_0x1fc828[_0xa55c('0x18')](0xcc)[_0xa55c('0x25')]();});}};}function handleEntityNotFound(_0x3cd152,_0x1273d7){return function(_0x57f271){if(!_0x57f271){_0x3cd152[_0xa55c('0x26')](0x194);}return _0x57f271;};}function handleError(_0x28814f,_0x1c9f6b){_0x1c9f6b=_0x1c9f6b||0x1f4;return function(_0x906caa){logger['error'](_0x906caa[_0xa55c('0x27')]);if(_0x906caa[_0xa55c('0x28')]){delete _0x906caa[_0xa55c('0x28')];}_0x28814f[_0xa55c('0x18')](_0x1c9f6b)[_0xa55c('0x29')](_0x906caa);};}exports[_0xa55c('0x2a')]=function(_0x52d37f,_0x23e698){var _0x490b7d={},_0x35c9c2={},_0x1d730b={'count':0x0,'rows':[]};var _0x1cc53e=_[_0xa55c('0x2b')](db['AnalyticMetric'][_0xa55c('0x2c')],function(_0x2096ae){return{'name':_0x2096ae[_0xa55c('0x2d')],'type':_0x2096ae[_0xa55c('0x2e')][_0xa55c('0x2f')]};});_0x35c9c2[_0xa55c('0x30')]=_[_0xa55c('0x2b')](_0x1cc53e,_0xa55c('0x28'));_0x35c9c2[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x52d37f[_0xa55c('0x31')]);_0x35c9c2['filters']=_['intersection'](_0x35c9c2[_0xa55c('0x30')],_0x35c9c2[_0xa55c('0x31')]);_0x490b7d['attributes']=_[_0xa55c('0x33')](_0x35c9c2[_0xa55c('0x30')],qs[_0xa55c('0x34')](_0x52d37f[_0xa55c('0x31')][_0xa55c('0x34')]));_0x490b7d[_0xa55c('0x35')]=_0x490b7d[_0xa55c('0x35')][_0xa55c('0x36')]?_0x490b7d[_0xa55c('0x35')]:_0x35c9c2['model'];if(!_0x52d37f['query']['hasOwnProperty'](_0xa55c('0x37'))){_0x490b7d[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x52d37f['query'][_0xa55c('0x1c')]);_0x490b7d['offset']=qs[_0xa55c('0x1a')](_0x52d37f['query'][_0xa55c('0x1a')]);}_0x490b7d[_0xa55c('0x38')]=qs[_0xa55c('0x39')](_0x52d37f['query'][_0xa55c('0x39')]);_0x490b7d[_0xa55c('0x3a')]=qs['filters'](_[_0xa55c('0x3b')](_0x52d37f[_0xa55c('0x31')],_0x35c9c2['filters']),_0x1cc53e);if(_0x52d37f['query'][_0xa55c('0x3c')]){_0x490b7d['where']=_[_0xa55c('0x3d')](_0x490b7d[_0xa55c('0x3a')],{'$or':_['map'](_0x1cc53e,function(_0x542d76){if(_0x542d76['type']!=='VIRTUAL'){var _0x3b3308={};_0x3b3308[_0x542d76[_0xa55c('0x28')]]={'$like':'%'+_0x52d37f[_0xa55c('0x31')][_0xa55c('0x3c')]+'%'};return _0x3b3308;}})});}_0x490b7d=_[_0xa55c('0x3d')]({},_0x490b7d,_0x52d37f['options']);var _0x3d52d8={'where':_0x490b7d[_0xa55c('0x3a')]};return db[_0xa55c('0x3e')][_0xa55c('0x1d')](_0x3d52d8)[_0xa55c('0x20')](function(_0x23cef5){_0x1d730b['count']=_0x23cef5;if(_0x52d37f[_0xa55c('0x31')]['includeAll']){_0x490b7d['include']=[{'all':!![]}];}return db[_0xa55c('0x3e')][_0xa55c('0x3f')](_0x490b7d);})['then'](function(_0x2bd98b){_0x1d730b['rows']=_0x2bd98b;return _0x1d730b;})['then'](respondWithFilteredResult(_0x23e698,_0x490b7d))[_0xa55c('0x40')](handleError(_0x23e698,null));};exports[_0xa55c('0x41')]=function(_0x1630ac,_0x540337){var _0x1b2708={'raw':!![],'where':{'id':_0x1630ac['params']['id']}},_0xd5a006={};_0xd5a006[_0xa55c('0x30')]=_['keys'](db[_0xa55c('0x3e')][_0xa55c('0x2c')]);_0xd5a006['query']=_[_0xa55c('0x32')](_0x1630ac[_0xa55c('0x31')]);_0xd5a006['filters']=_[_0xa55c('0x33')](_0xd5a006[_0xa55c('0x30')],_0xd5a006[_0xa55c('0x31')]);_0x1b2708['attributes']=_[_0xa55c('0x33')](_0xd5a006['model'],qs[_0xa55c('0x34')](_0x1630ac[_0xa55c('0x31')][_0xa55c('0x34')]));_0x1b2708['attributes']=_0x1b2708[_0xa55c('0x35')][_0xa55c('0x36')]?_0x1b2708['attributes']:_0xd5a006[_0xa55c('0x30')];if(_0x1630ac[_0xa55c('0x31')]['includeAll']){_0x1b2708[_0xa55c('0x42')]=[{'all':!![]}];}_0x1b2708=_[_0xa55c('0x3d')]({},_0x1b2708,_0x1630ac['options']);return db[_0xa55c('0x3e')][_0xa55c('0x43')](_0x1b2708)[_0xa55c('0x20')](handleEntityNotFound(_0x540337,null))[_0xa55c('0x20')](respondWithResult(_0x540337,null))['catch'](handleError(_0x540337,null));};exports[_0xa55c('0x44')]=function(_0x58a7ea,_0x2157d6){return db[_0xa55c('0x3e')][_0xa55c('0x44')](_0x58a7ea['body'],{})[_0xa55c('0x20')](function(_0x250b00){var _0x574fe9=_0x58a7ea[_0xa55c('0x45')][_0xa55c('0x21')]({'plain':!![]});if(!_0x574fe9)throw new Error(_0xa55c('0x46'));if(_0x574fe9[_0xa55c('0x47')]===_0xa55c('0x45')){var _0x1c84d9=_0x250b00[_0xa55c('0x21')]({'plain':!![]});var _0x129626=_0xa55c('0x22');return db[_0xa55c('0x48')]['find']({'where':{'name':_0x129626,'userProfileId':_0x574fe9[_0xa55c('0x49')]},'raw':!![]})[_0xa55c('0x20')](function(_0x216de8){if(_0x216de8&&_0x216de8['autoAssociation']===0x0){return db[_0xa55c('0x23')][_0xa55c('0x44')]({'name':_0x1c84d9['name'],'resourceId':_0x1c84d9['id'],'type':_0x216de8[_0xa55c('0x28')],'sectionId':_0x216de8['id']},{})['then'](function(){return _0x250b00;});}else{return _0x250b00;}})[_0xa55c('0x40')](function(_0x228df4){logger[_0xa55c('0x4a')](_0xa55c('0x4b'),_0x228df4);throw _0x228df4;});}return _0x250b00;})[_0xa55c('0x20')](respondWithResult(_0x2157d6,0xc9))['catch'](handleError(_0x2157d6,null));};exports[_0xa55c('0x1f')]=function(_0x4607ca,_0x4b85cc){if(_0x4607ca[_0xa55c('0x4c')]['id']){delete _0x4607ca[_0xa55c('0x4c')]['id'];}return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x4607ca['params']['id']}})['then'](handleEntityNotFound(_0x4b85cc,null))[_0xa55c('0x20')](saveUpdates(_0x4607ca[_0xa55c('0x4c')],null))[_0xa55c('0x20')](respondWithResult(_0x4b85cc,null))[_0xa55c('0x40')](handleError(_0x4b85cc,null));};exports['destroy']=function(_0x30c0c9,_0x5ce463){return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x30c0c9[_0xa55c('0x4d')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x5ce463,null))[_0xa55c('0x20')](removeEntity(_0x5ce463,null))['catch'](handleError(_0x5ce463,null));};
\ No newline at end of file
+var _0xdc97=['mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','get','destroy','sendStatus','error','stack','name','send','AnalyticMetric','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','length','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','rows','catch','params','keys','fields','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Metrics','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','request-promise','bluebird'];(function(_0x7676aa,_0x5bab69){var _0x30ace6=function(_0x23f6df){while(--_0x23f6df){_0x7676aa['push'](_0x7676aa['shift']());}};_0x30ace6(++_0x5bab69);}(_0xdc97,0x13b));var _0x7dc9=function(_0xb7fa4b,_0x2631e7){_0xb7fa4b=_0xb7fa4b-0x0;var _0x2fc9da=_0xdc97[_0xb7fa4b];return _0x2fc9da;};'use strict';var emlformat=require(_0x7dc9('0x0'));var rimraf=require(_0x7dc9('0x1'));var zipdir=require(_0x7dc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7dc9('0x3'));var moment=require('moment');var BPromise=require(_0x7dc9('0x4'));var Mustache=require(_0x7dc9('0x5'));var util=require('util');var path=require(_0x7dc9('0x6'));var sox=require(_0x7dc9('0x7'));var csv=require(_0x7dc9('0x8'));var ejs=require(_0x7dc9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7dc9('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7dc9('0xb'));var deskjs=require(_0x7dc9('0xc'));var toCsv=require(_0x7dc9('0x8'));var querystring=require(_0x7dc9('0xd'));var Papa=require(_0x7dc9('0xe'));var Redis=require('ioredis');var authService=require(_0x7dc9('0xf'));var qs=require(_0x7dc9('0x10'));var as=require(_0x7dc9('0x11'));var hardwareService=require(_0x7dc9('0x12'));var logger=require(_0x7dc9('0x13'))(_0x7dc9('0x14'));var utils=require(_0x7dc9('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x599ef1,_0x94c75a){_0x94c75a=_0x94c75a||0xcc;return function(_0x14e5db){if(_0x14e5db){return _0x599ef1['sendStatus'](_0x94c75a);}return _0x599ef1[_0x7dc9('0x16')](_0x94c75a)[_0x7dc9('0x17')]();};}function respondWithResult(_0xaadf2,_0xf37bc7){_0xf37bc7=_0xf37bc7||0xc8;return function(_0x31d43d){if(_0x31d43d){return _0xaadf2[_0x7dc9('0x16')](_0xf37bc7)['json'](_0x31d43d);}};}function respondWithFilteredResult(_0x3a54f2,_0x278191){return function(_0x1b0aa1){if(_0x1b0aa1){var _0x442819=typeof _0x278191[_0x7dc9('0x18')]===_0x7dc9('0x19')&&typeof _0x278191[_0x7dc9('0x1a')]===_0x7dc9('0x19');var _0x4778d5=_0x1b0aa1['count'];var _0x22577e=_0x442819?0x0:_0x278191['offset'];var _0x1f5906=_0x442819?_0x1b0aa1[_0x7dc9('0x1b')]:_0x278191['offset']+_0x278191[_0x7dc9('0x1a')];var _0x3b738a;if(_0x1f5906>=_0x4778d5){_0x1f5906=_0x4778d5;_0x3b738a=0xc8;}else{_0x3b738a=0xce;}_0x3a54f2[_0x7dc9('0x16')](_0x3b738a);return _0x3a54f2[_0x7dc9('0x1c')](_0x7dc9('0x1d'),_0x22577e+'-'+_0x1f5906+'/'+_0x4778d5)[_0x7dc9('0x1e')](_0x1b0aa1);}return null;};}function patchUpdates(_0x2dad65){return function(_0x2895f5){try{jsonpatch[_0x7dc9('0x1f')](_0x2895f5,_0x2dad65,!![]);}catch(_0x2b38d6){return BPromise['reject'](_0x2b38d6);}return _0x2895f5['save']();};}function saveUpdates(_0x12954f,_0x5981e2){return function(_0x596e0f){if(_0x596e0f){return _0x596e0f[_0x7dc9('0x20')](_0x12954f)[_0x7dc9('0x21')](function(_0x5e9525){return _0x5e9525;});}return null;};}function removeEntity(_0xffc080,_0x43d31f){return function(_0x41110a){if(_0x41110a){return _0x41110a['destroy']()[_0x7dc9('0x21')](function(){var _0x1e3a8d=_0x41110a[_0x7dc9('0x22')]({'plain':!![]});var _0x55a482='Metrics';return db['UserProfileResource'][_0x7dc9('0x23')]({'where':{'type':_0x55a482,'resourceId':_0x1e3a8d['id']}})[_0x7dc9('0x21')](function(){return _0x41110a;});})['then'](function(){_0xffc080['status'](0xcc)[_0x7dc9('0x17')]();});}};}function handleEntityNotFound(_0x5afb7d,_0x2d22eb){return function(_0x1c690b){if(!_0x1c690b){_0x5afb7d[_0x7dc9('0x24')](0x194);}return _0x1c690b;};}function handleError(_0x3e4102,_0xa2aaa9){_0xa2aaa9=_0xa2aaa9||0x1f4;return function(_0x450124){logger[_0x7dc9('0x25')](_0x450124[_0x7dc9('0x26')]);if(_0x450124[_0x7dc9('0x27')]){delete _0x450124[_0x7dc9('0x27')];}_0x3e4102[_0x7dc9('0x16')](_0xa2aaa9)[_0x7dc9('0x28')](_0x450124);};}exports['index']=function(_0x4e929c,_0x513dd6){var _0x49a4a5={},_0x4a68f0={},_0x553a03={'count':0x0,'rows':[]};var _0x58c4e8=_['map'](db[_0x7dc9('0x29')][_0x7dc9('0x2a')],function(_0x29dcef){return{'name':_0x29dcef[_0x7dc9('0x2b')],'type':_0x29dcef[_0x7dc9('0x2c')][_0x7dc9('0x2d')]};});_0x4a68f0['model']=_['map'](_0x58c4e8,'name');_0x4a68f0[_0x7dc9('0x2e')]=_['keys'](_0x4e929c[_0x7dc9('0x2e')]);_0x4a68f0[_0x7dc9('0x2f')]=_[_0x7dc9('0x30')](_0x4a68f0[_0x7dc9('0x31')],_0x4a68f0[_0x7dc9('0x2e')]);_0x49a4a5[_0x7dc9('0x32')]=_[_0x7dc9('0x30')](_0x4a68f0[_0x7dc9('0x31')],qs['fields'](_0x4e929c[_0x7dc9('0x2e')]['fields']));_0x49a4a5[_0x7dc9('0x32')]=_0x49a4a5[_0x7dc9('0x32')][_0x7dc9('0x33')]?_0x49a4a5[_0x7dc9('0x32')]:_0x4a68f0['model'];if(!_0x4e929c[_0x7dc9('0x2e')]['hasOwnProperty'](_0x7dc9('0x34'))){_0x49a4a5['limit']=qs['limit'](_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x1a')]);_0x49a4a5[_0x7dc9('0x18')]=qs[_0x7dc9('0x18')](_0x4e929c['query'][_0x7dc9('0x18')]);}_0x49a4a5[_0x7dc9('0x35')]=qs[_0x7dc9('0x36')](_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x36')]);_0x49a4a5[_0x7dc9('0x37')]=qs[_0x7dc9('0x2f')](_[_0x7dc9('0x38')](_0x4e929c[_0x7dc9('0x2e')],_0x4a68f0[_0x7dc9('0x2f')]),_0x58c4e8);if(_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x39')]){_0x49a4a5['where']=_[_0x7dc9('0x3a')](_0x49a4a5[_0x7dc9('0x37')],{'$or':_[_0x7dc9('0x3b')](_0x58c4e8,function(_0xfd2612){if(_0xfd2612['type']!==_0x7dc9('0x3c')){var _0x89db0e={};_0x89db0e[_0xfd2612[_0x7dc9('0x27')]]={'$like':'%'+_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x39')]+'%'};return _0x89db0e;}})});}_0x49a4a5=_[_0x7dc9('0x3a')]({},_0x49a4a5,_0x4e929c['options']);var _0x553230={'where':_0x49a4a5[_0x7dc9('0x37')]};return db[_0x7dc9('0x29')]['count'](_0x553230)[_0x7dc9('0x21')](function(_0x4a37ec){_0x553a03[_0x7dc9('0x1b')]=_0x4a37ec;if(_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x3d')]){_0x49a4a5['include']=[{'all':!![]}];}return db[_0x7dc9('0x29')][_0x7dc9('0x3e')](_0x49a4a5);})[_0x7dc9('0x21')](function(_0x95513c){_0x553a03[_0x7dc9('0x3f')]=_0x95513c;return _0x553a03;})[_0x7dc9('0x21')](respondWithFilteredResult(_0x513dd6,_0x49a4a5))[_0x7dc9('0x40')](handleError(_0x513dd6,null));};exports['show']=function(_0x187aa6,_0x4f29b2){var _0x52d883={'raw':!![],'where':{'id':_0x187aa6[_0x7dc9('0x41')]['id']}},_0xcced6c={};_0xcced6c[_0x7dc9('0x31')]=_[_0x7dc9('0x42')](db[_0x7dc9('0x29')][_0x7dc9('0x2a')]);_0xcced6c[_0x7dc9('0x2e')]=_[_0x7dc9('0x42')](_0x187aa6[_0x7dc9('0x2e')]);_0xcced6c['filters']=_[_0x7dc9('0x30')](_0xcced6c[_0x7dc9('0x31')],_0xcced6c[_0x7dc9('0x2e')]);_0x52d883[_0x7dc9('0x32')]=_[_0x7dc9('0x30')](_0xcced6c[_0x7dc9('0x31')],qs['fields'](_0x187aa6[_0x7dc9('0x2e')][_0x7dc9('0x43')]));_0x52d883['attributes']=_0x52d883[_0x7dc9('0x32')][_0x7dc9('0x33')]?_0x52d883[_0x7dc9('0x32')]:_0xcced6c['model'];if(_0x187aa6[_0x7dc9('0x2e')]['includeAll']){_0x52d883['include']=[{'all':!![]}];}_0x52d883=_[_0x7dc9('0x3a')]({},_0x52d883,_0x187aa6[_0x7dc9('0x44')]);return db[_0x7dc9('0x29')]['find'](_0x52d883)['then'](handleEntityNotFound(_0x4f29b2,null))[_0x7dc9('0x21')](respondWithResult(_0x4f29b2,null))['catch'](handleError(_0x4f29b2,null));};exports[_0x7dc9('0x45')]=function(_0x4ab558,_0x5e2d59){return db[_0x7dc9('0x29')][_0x7dc9('0x45')](_0x4ab558[_0x7dc9('0x46')],{})[_0x7dc9('0x21')](function(_0x414bf4){var _0x113087=_0x4ab558[_0x7dc9('0x47')][_0x7dc9('0x22')]({'plain':!![]});if(!_0x113087)throw new Error(_0x7dc9('0x48'));if(_0x113087[_0x7dc9('0x49')]===_0x7dc9('0x47')){var _0x13580b=_0x414bf4[_0x7dc9('0x22')]({'plain':!![]});var _0x59be9b=_0x7dc9('0x4a');return db['UserProfileSection']['find']({'where':{'name':_0x59be9b,'userProfileId':_0x113087[_0x7dc9('0x4b')]},'raw':!![]})[_0x7dc9('0x21')](function(_0x40e382){if(_0x40e382&&_0x40e382[_0x7dc9('0x4c')]===0x0){return db[_0x7dc9('0x4d')]['create']({'name':_0x13580b[_0x7dc9('0x27')],'resourceId':_0x13580b['id'],'type':_0x40e382[_0x7dc9('0x27')],'sectionId':_0x40e382['id']},{})[_0x7dc9('0x21')](function(){return _0x414bf4;});}else{return _0x414bf4;}})['catch'](function(_0x341909){logger[_0x7dc9('0x25')](_0x7dc9('0x4e'),_0x341909);throw _0x341909;});}return _0x414bf4;})[_0x7dc9('0x21')](respondWithResult(_0x5e2d59,0xc9))[_0x7dc9('0x40')](handleError(_0x5e2d59,null));};exports[_0x7dc9('0x20')]=function(_0x593132,_0x366b8b){if(_0x593132[_0x7dc9('0x46')]['id']){delete _0x593132[_0x7dc9('0x46')]['id'];}return db[_0x7dc9('0x29')][_0x7dc9('0x4f')]({'where':{'id':_0x593132[_0x7dc9('0x41')]['id']}})[_0x7dc9('0x21')](handleEntityNotFound(_0x366b8b,null))[_0x7dc9('0x21')](saveUpdates(_0x593132[_0x7dc9('0x46')],null))[_0x7dc9('0x21')](respondWithResult(_0x366b8b,null))[_0x7dc9('0x40')](handleError(_0x366b8b,null));};exports[_0x7dc9('0x23')]=function(_0x4fec6e,_0x1767b6){return db[_0x7dc9('0x29')][_0x7dc9('0x4f')]({'where':{'id':_0x4fec6e[_0x7dc9('0x41')]['id']}})[_0x7dc9('0x21')](handleEntityNotFound(_0x1767b6,null))['then'](removeEntity(_0x1767b6,null))[_0x7dc9('0x40')](handleError(_0x1767b6,null));};
\ No newline at end of file
index 7ea48da..8a30ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa49e=['AnalyticMetric','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./analyticMetric.attributes','exports','define'];(function(_0x44971d,_0x362101){var _0x5e0a00=function(_0x235454){while(--_0x235454){_0x44971d['push'](_0x44971d['shift']());}};_0x5e0a00(++_0x362101);}(_0xa49e,0x1de));var _0xea49=function(_0x29771f,_0x1189ae){_0x29771f=_0x29771f-0x0;var _0x279baf=_0xa49e[_0x29771f];return _0x279baf;};'use strict';var _=require(_0xea49('0x0'));var util=require(_0xea49('0x1'));var logger=require(_0xea49('0x2'))(_0xea49('0x3'));var moment=require(_0xea49('0x4'));var BPromise=require(_0xea49('0x5'));var rp=require(_0xea49('0x6'));var fs=require('fs');var path=require(_0xea49('0x7'));var rimraf=require('rimraf');var config=require(_0xea49('0x8'));var attributes=require(_0xea49('0x9'));module[_0xea49('0xa')]=function(_0x56a45a,_0x1b831c){return _0x56a45a[_0xea49('0xb')](_0xea49('0xc'),attributes,{'tableName':_0xea49('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x744c=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x1b18e7,_0x404d66){var _0x511211=function(_0x5b8c92){while(--_0x5b8c92){_0x1b18e7['push'](_0x1b18e7['shift']());}};_0x511211(++_0x404d66);}(_0x744c,0xa0));var _0xc744=function(_0x4436f7,_0x5784fc){_0x4436f7=_0x4436f7-0x0;var _0x268052=_0x744c[_0x4436f7];return _0x268052;};'use strict';var _=require(_0xc744('0x0'));var util=require(_0xc744('0x1'));var logger=require(_0xc744('0x2'))(_0xc744('0x3'));var moment=require('moment');var BPromise=require(_0xc744('0x4'));var rp=require(_0xc744('0x5'));var fs=require('fs');var path=require(_0xc744('0x6'));var rimraf=require(_0xc744('0x7'));var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module[_0xc744('0x8')]=function(_0x1cc521,_0x471094){return _0x1cc521[_0xc744('0x9')]('AnalyticMetric',attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c379298..55a027d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0455=['../../config/utils','rpc','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','moment','ioredis'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x0455,0xcd));var _0x5045=function(_0x400486,_0xa46d4f){_0x400486=_0x400486-0x0;var _0x4181ed=_0x0455[_0x400486];return _0x4181ed;};'use strict';var _=require(_0x5045('0x0'));var util=require('util');var moment=require(_0x5045('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5045('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x5045('0x3'));var logger=require('../../config/logger')(_0x5045('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1f3dab,_0x1a0a1a,_0x291fa3){return new BPromise(function(_0x1c4d6f,_0x257a13){return client['request'](_0x1f3dab,_0x291fa3)[_0x5045('0x5')](function(_0x5b5a21){logger['info'](_0x5045('0x6'),_0x1a0a1a,_0x5045('0x7'));logger[_0x5045('0x8')](_0x5045('0x9'),_0x1a0a1a,_0x5045('0x7'),JSON['stringify'](_0x5b5a21));if(_0x5b5a21[_0x5045('0xa')]){if(_0x5b5a21[_0x5045('0xa')][_0x5045('0xb')]===0x1f4){logger[_0x5045('0xa')](_0x5045('0x6'),_0x1a0a1a,_0x5b5a21[_0x5045('0xa')][_0x5045('0xc')]);return _0x257a13(_0x5b5a21['error']['message']);}logger[_0x5045('0xa')](_0x5045('0x6'),_0x1a0a1a,_0x5b5a21[_0x5045('0xa')][_0x5045('0xc')]);return _0x1c4d6f(_0x5b5a21[_0x5045('0xa')]['message']);}else{logger[_0x5045('0xd')](_0x5045('0x6'),_0x1a0a1a,_0x5045('0x7'));_0x1c4d6f(_0x5b5a21[_0x5045('0xe')][_0x5045('0xc')]);}})[_0x5045('0xf')](function(_0x409ce2){logger[_0x5045('0xa')](_0x5045('0x6'),_0x1a0a1a,_0x409ce2);_0x257a13(_0x409ce2);});});}
\ No newline at end of file
+var _0x455a=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','stringify','error','code','message','catch','lodash','util'];(function(_0x229d22,_0x117dda){var _0x4c74a4=function(_0x5500cb){while(--_0x5500cb){_0x229d22['push'](_0x229d22['shift']());}};_0x4c74a4(++_0x117dda);}(_0x455a,0xe8));var _0xa455=function(_0x3d4407,_0x2735be){_0x3d4407=_0x3d4407-0x0;var _0x5ea719=_0x455a[_0x3d4407];return _0x5ea719;};'use strict';var _=require(_0xa455('0x0'));var util=require(_0xa455('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa455('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa455('0x3'))['db'];var utils=require(_0xa455('0x4'));var logger=require('../../config/logger')(_0xa455('0x5'));var config=require(_0xa455('0x6'));var jayson=require(_0xa455('0x7'));var client=jayson[_0xa455('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x244ec7,_0x2dc811,_0x407927){return new BPromise(function(_0x1b5812,_0x17f729){return client[_0xa455('0x9')](_0x244ec7,_0x407927)[_0xa455('0xa')](function(_0x2a9264){logger[_0xa455('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x2dc811,_0xa455('0xc'));logger['debug']('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x2dc811,_0xa455('0xc'),JSON[_0xa455('0xd')](_0x2a9264));if(_0x2a9264[_0xa455('0xe')]){if(_0x2a9264[_0xa455('0xe')][_0xa455('0xf')]===0x1f4){logger[_0xa455('0xe')]('AnalyticMetric,\x20%s,\x20%s',_0x2dc811,_0x2a9264[_0xa455('0xe')][_0xa455('0x10')]);return _0x17f729(_0x2a9264[_0xa455('0xe')][_0xa455('0x10')]);}logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x2dc811,_0x2a9264[_0xa455('0xe')]['message']);return _0x1b5812(_0x2a9264[_0xa455('0xe')]['message']);}else{logger[_0xa455('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x2dc811,'request\x20sent');_0x1b5812(_0x2a9264['result'][_0xa455('0x10')]);}})[_0xa455('0x11')](function(_0x23a31b){logger[_0xa455('0xe')]('AnalyticMetric,\x20%s,\x20%s',_0x2dc811,_0x23a31b);_0x17f729(_0x23a31b);});});}
\ No newline at end of file
index 4992e0b..104ac5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['get','/:id','show','post','put','update','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','isAuthenticated'];(function(_0x104914,_0x49debf){var _0x2fb6f1=function(_0x464298){while(--_0x464298){_0x104914['push'](_0x104914['shift']());}};_0x2fb6f1(++_0x49debf);}(_0xee14,0x13a));var _0x4ee1=function(_0x3f3c68,_0x217071){_0x3f3c68=_0x3f3c68-0x0;var _0x15278c=_0xee14[_0x3f3c68];return _0x15278c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4ee1('0x0'));var timeout=require(_0x4ee1('0x1'));var express=require(_0x4ee1('0x2'));var router=express[_0x4ee1('0x3')]();var fs_extra=require(_0x4ee1('0x4'));var auth=require(_0x4ee1('0x5'));var interaction=require(_0x4ee1('0x6'));var config=require(_0x4ee1('0x7'));var controller=require(_0x4ee1('0x8'));router['get']('/',auth[_0x4ee1('0x9')](),controller['index']);router[_0x4ee1('0xa')](_0x4ee1('0xb'),auth[_0x4ee1('0x9')](),controller[_0x4ee1('0xc')]);router[_0x4ee1('0xd')]('/',auth[_0x4ee1('0x9')](),controller['create']);router[_0x4ee1('0xe')](_0x4ee1('0xb'),auth['isAuthenticated'](),controller[_0x4ee1('0xf')]);router[_0x4ee1('0x10')](_0x4ee1('0xb'),auth[_0x4ee1('0x9')](),controller['destroy']);module[_0x4ee1('0x11')]=router;
\ No newline at end of file
+var _0x8255=['multer','util','path','connect-timeout','express','Router','fs-extra','./analyticMetric.controller','get','isAuthenticated','index','/:id','create','put','update','delete','destroy'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x8255,0x176));var _0x5825=function(_0x4ce28b,_0x83539a){_0x4ce28b=_0x4ce28b-0x0;var _0x2f6bb6=_0x8255[_0x4ce28b];return _0x2f6bb6;};'use strict';var multer=require(_0x5825('0x0'));var util=require(_0x5825('0x1'));var path=require(_0x5825('0x2'));var timeout=require(_0x5825('0x3'));var express=require(_0x5825('0x4'));var router=express[_0x5825('0x5')]();var fs_extra=require(_0x5825('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5825('0x7'));router[_0x5825('0x8')]('/',auth[_0x5825('0x9')](),controller[_0x5825('0xa')]);router[_0x5825('0x8')](_0x5825('0xb'),auth[_0x5825('0x9')](),controller['show']);router['post']('/',auth[_0x5825('0x9')](),controller[_0x5825('0xc')]);router[_0x5825('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x5825('0xe')]);router[_0x5825('0xf')]('/:id',auth[_0x5825('0x9')](),controller[_0x5825('0x10')]);module['exports']=router;
\ No newline at end of file
index 532ff65..a1fa3f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2795=['sequelize'];(function(_0x4403e5,_0x32ddae){var _0x512114=function(_0x1f21cb){while(--_0x1f21cb){_0x4403e5['push'](_0x4403e5['shift']());}};_0x512114(++_0x32ddae);}(_0x2795,0x108));var _0x5279=function(_0x59bec3,_0x52ef76){_0x59bec3=_0x59bec3-0x0;var _0x366f07=_0x2795[_0x59bec3];return _0x366f07;};'use strict';var Sequelize=require(_0x5279('0x0'));module['exports']={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x12c2=['TEXT','sequelize'];(function(_0x4c6671,_0x355d55){var _0x2153ed=function(_0xef3c56){while(--_0xef3c56){_0x4c6671['push'](_0x4c6671['shift']());}};_0x2153ed(++_0x355d55);}(_0x12c2,0x147));var _0x212c=function(_0x40c3b2,_0x4576c2){_0x40c3b2=_0x40c3b2-0x0;var _0x3af22b=_0x12c2[_0x40c3b2];return _0x3af22b;};'use strict';var Sequelize=require(_0x212c('0x0'));module['exports']={'tree':{'type':Sequelize[_0x212c('0x1')],'allowNull':![]}};
\ No newline at end of file
index fc01fa5..21b072d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe553=['include','findAll','rows','show','params','length','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','AnalyticTreeReport','includeAll'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xe553,0x152));var _0x3e55=function(_0x4f44e9,_0x5cf679){_0x4f44e9=_0x4f44e9-0x0;var _0x4a7f48=_0xe553[_0x4f44e9];return _0x4a7f48;};'use strict';var emlformat=require(_0x3e55('0x0'));var rimraf=require(_0x3e55('0x1'));var zipdir=require(_0x3e55('0x2'));var jsonpatch=require(_0x3e55('0x3'));var rp=require(_0x3e55('0x4'));var moment=require(_0x3e55('0x5'));var BPromise=require(_0x3e55('0x6'));var Mustache=require('mustache');var util=require(_0x3e55('0x7'));var path=require(_0x3e55('0x8'));var sox=require(_0x3e55('0x9'));var csv=require('to-csv');var ejs=require(_0x3e55('0xa'));var fs=require('fs');var fs_extra=require(_0x3e55('0xb'));var _=require(_0x3e55('0xc'));var squel=require(_0x3e55('0xd'));var crypto=require('crypto');var jsforce=require(_0x3e55('0xe'));var deskjs=require(_0x3e55('0xf'));var toCsv=require(_0x3e55('0x10'));var querystring=require(_0x3e55('0x11'));var Papa=require(_0x3e55('0x12'));var Redis=require(_0x3e55('0x13'));var authService=require(_0x3e55('0x14'));var qs=require(_0x3e55('0x15'));var as=require(_0x3e55('0x16'));var hardwareService=require(_0x3e55('0x17'));var logger=require(_0x3e55('0x18'))(_0x3e55('0x19'));var utils=require(_0x3e55('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x3e55('0x1b'));var db=require(_0x3e55('0x1c'))['db'];function respondWithStatusCode(_0x3c0c70,_0xf05c34){_0xf05c34=_0xf05c34||0xcc;return function(_0x9cfec0){if(_0x9cfec0){return _0x3c0c70['sendStatus'](_0xf05c34);}return _0x3c0c70[_0x3e55('0x1d')](_0xf05c34)['end']();};}function respondWithResult(_0x32cf1a,_0x2cba1e){_0x2cba1e=_0x2cba1e||0xc8;return function(_0x5b0b26){if(_0x5b0b26){return _0x32cf1a['status'](_0x2cba1e)[_0x3e55('0x1e')](_0x5b0b26);}};}function respondWithFilteredResult(_0x242f77,_0x50dc60){return function(_0x920129){if(_0x920129){var _0x1a816d=typeof _0x50dc60[_0x3e55('0x1f')]===_0x3e55('0x20')&&typeof _0x50dc60[_0x3e55('0x21')]===_0x3e55('0x20');var _0x36d8ac=_0x920129[_0x3e55('0x22')];var _0x432974=_0x1a816d?0x0:_0x50dc60[_0x3e55('0x1f')];var _0x488ffc=_0x1a816d?_0x920129['count']:_0x50dc60[_0x3e55('0x1f')]+_0x50dc60['limit'];var _0x4c7596;if(_0x488ffc>=_0x36d8ac){_0x488ffc=_0x36d8ac;_0x4c7596=0xc8;}else{_0x4c7596=0xce;}_0x242f77[_0x3e55('0x1d')](_0x4c7596);return _0x242f77[_0x3e55('0x23')](_0x3e55('0x24'),_0x432974+'-'+_0x488ffc+'/'+_0x36d8ac)[_0x3e55('0x1e')](_0x920129);}return null;};}function patchUpdates(_0x3d0b41){return function(_0x2ba9fa){try{jsonpatch[_0x3e55('0x25')](_0x2ba9fa,_0x3d0b41,!![]);}catch(_0x260058){return BPromise[_0x3e55('0x26')](_0x260058);}return _0x2ba9fa[_0x3e55('0x27')]();};}function saveUpdates(_0x169ef5,_0xc2ad4a){return function(_0x395a75){if(_0x395a75){return _0x395a75[_0x3e55('0x28')](_0x169ef5)[_0x3e55('0x29')](function(_0x11086c){return _0x11086c;});}return null;};}function removeEntity(_0x2262ca,_0x436fff){return function(_0x5ea1a3){if(_0x5ea1a3){return _0x5ea1a3[_0x3e55('0x2a')]()[_0x3e55('0x29')](function(){_0x2262ca['status'](0xcc)[_0x3e55('0x2b')]();});}};}function handleEntityNotFound(_0x3ed5f9,_0x37b0d5){return function(_0x3b4761){if(!_0x3b4761){_0x3ed5f9['sendStatus'](0x194);}return _0x3b4761;};}function handleError(_0x517c79,_0x1924ac){_0x1924ac=_0x1924ac||0x1f4;return function(_0x3e6240){logger[_0x3e55('0x2c')](_0x3e6240[_0x3e55('0x2d')]);if(_0x3e6240[_0x3e55('0x2e')]){delete _0x3e6240['name'];}_0x517c79[_0x3e55('0x1d')](_0x1924ac)[_0x3e55('0x2f')](_0x3e6240);};}exports[_0x3e55('0x30')]=function(_0x27dc70,_0x1b8132){var _0x3658aa={},_0x3774b9={},_0x385610={'count':0x0,'rows':[]};var _0x31db79=_['map'](db['AnalyticTreeReport'][_0x3e55('0x31')],function(_0x264484){return{'name':_0x264484[_0x3e55('0x32')],'type':_0x264484[_0x3e55('0x33')][_0x3e55('0x34')]};});_0x3774b9[_0x3e55('0x35')]=_[_0x3e55('0x36')](_0x31db79,'name');_0x3774b9[_0x3e55('0x37')]=_[_0x3e55('0x38')](_0x27dc70[_0x3e55('0x37')]);_0x3774b9['filters']=_['intersection'](_0x3774b9[_0x3e55('0x35')],_0x3774b9[_0x3e55('0x37')]);_0x3658aa[_0x3e55('0x39')]=_[_0x3e55('0x3a')](_0x3774b9[_0x3e55('0x35')],qs[_0x3e55('0x3b')](_0x27dc70[_0x3e55('0x37')]['fields']));_0x3658aa[_0x3e55('0x39')]=_0x3658aa[_0x3e55('0x39')]['length']?_0x3658aa[_0x3e55('0x39')]:_0x3774b9[_0x3e55('0x35')];if(!_0x27dc70[_0x3e55('0x37')][_0x3e55('0x3c')](_0x3e55('0x3d'))){_0x3658aa[_0x3e55('0x21')]=qs[_0x3e55('0x21')](_0x27dc70['query'][_0x3e55('0x21')]);_0x3658aa[_0x3e55('0x1f')]=qs[_0x3e55('0x1f')](_0x27dc70['query'][_0x3e55('0x1f')]);}_0x3658aa[_0x3e55('0x3e')]=qs[_0x3e55('0x3f')](_0x27dc70[_0x3e55('0x37')]['sort']);_0x3658aa[_0x3e55('0x40')]=qs[_0x3e55('0x41')](_[_0x3e55('0x42')](_0x27dc70[_0x3e55('0x37')],_0x3774b9[_0x3e55('0x41')]),_0x31db79);if(_0x27dc70['query'][_0x3e55('0x43')]){_0x3658aa[_0x3e55('0x40')]=_['merge'](_0x3658aa['where'],{'$or':_[_0x3e55('0x36')](_0x31db79,function(_0x592e6b){if(_0x592e6b[_0x3e55('0x33')]!=='VIRTUAL'){var _0xe07f56={};_0xe07f56[_0x592e6b[_0x3e55('0x2e')]]={'$like':'%'+_0x27dc70['query'][_0x3e55('0x43')]+'%'};return _0xe07f56;}})});}_0x3658aa=_[_0x3e55('0x44')]({},_0x3658aa,_0x27dc70[_0x3e55('0x45')]);var _0x156523={'where':_0x3658aa[_0x3e55('0x40')]};return db[_0x3e55('0x46')]['count'](_0x156523)['then'](function(_0x27f857){_0x385610[_0x3e55('0x22')]=_0x27f857;if(_0x27dc70[_0x3e55('0x37')][_0x3e55('0x47')]){_0x3658aa[_0x3e55('0x48')]=[{'all':!![]}];}return db[_0x3e55('0x46')][_0x3e55('0x49')](_0x3658aa);})[_0x3e55('0x29')](function(_0x2d5e8f){_0x385610[_0x3e55('0x4a')]=_0x2d5e8f;return _0x385610;})[_0x3e55('0x29')](respondWithFilteredResult(_0x1b8132,_0x3658aa))['catch'](handleError(_0x1b8132,null));};exports[_0x3e55('0x4b')]=function(_0x1f0b44,_0x5eb265){var _0x238ca4={'raw':!![],'where':{'id':_0x1f0b44[_0x3e55('0x4c')]['id']}},_0x2dc876={};_0x2dc876[_0x3e55('0x35')]=_['keys'](db[_0x3e55('0x46')][_0x3e55('0x31')]);_0x2dc876[_0x3e55('0x37')]=_[_0x3e55('0x38')](_0x1f0b44[_0x3e55('0x37')]);_0x2dc876[_0x3e55('0x41')]=_[_0x3e55('0x3a')](_0x2dc876[_0x3e55('0x35')],_0x2dc876[_0x3e55('0x37')]);_0x238ca4[_0x3e55('0x39')]=_['intersection'](_0x2dc876[_0x3e55('0x35')],qs[_0x3e55('0x3b')](_0x1f0b44[_0x3e55('0x37')]['fields']));_0x238ca4[_0x3e55('0x39')]=_0x238ca4[_0x3e55('0x39')][_0x3e55('0x4d')]?_0x238ca4['attributes']:_0x2dc876[_0x3e55('0x35')];if(_0x1f0b44[_0x3e55('0x37')]['includeAll']){_0x238ca4[_0x3e55('0x48')]=[{'all':!![]}];}_0x238ca4=_[_0x3e55('0x44')]({},_0x238ca4,_0x1f0b44[_0x3e55('0x45')]);return db[_0x3e55('0x46')][_0x3e55('0x4e')](_0x238ca4)[_0x3e55('0x29')](handleEntityNotFound(_0x5eb265,null))[_0x3e55('0x29')](respondWithResult(_0x5eb265,null))[_0x3e55('0x4f')](handleError(_0x5eb265,null));};exports['create']=function(_0x174666,_0x3a33b1){return db['AnalyticTreeReport'][_0x3e55('0x50')](_0x174666[_0x3e55('0x51')],{})[_0x3e55('0x29')](respondWithResult(_0x3a33b1,0xc9))[_0x3e55('0x4f')](handleError(_0x3a33b1,null));};exports[_0x3e55('0x28')]=function(_0x317b83,_0x3d85b1){if(_0x317b83[_0x3e55('0x51')]['id']){delete _0x317b83[_0x3e55('0x51')]['id'];}return db[_0x3e55('0x46')][_0x3e55('0x4e')]({'where':{'id':_0x317b83[_0x3e55('0x4c')]['id']}})[_0x3e55('0x29')](handleEntityNotFound(_0x3d85b1,null))[_0x3e55('0x29')](saveUpdates(_0x317b83[_0x3e55('0x51')],null))['then'](respondWithResult(_0x3d85b1,null))[_0x3e55('0x4f')](handleError(_0x3d85b1,null));};exports[_0x3e55('0x2a')]=function(_0x396ecc,_0x2b36c8){return db[_0x3e55('0x46')][_0x3e55('0x4e')]({'where':{'id':_0x396ecc[_0x3e55('0x4c')]['id']}})[_0x3e55('0x29')](handleEntityNotFound(_0x2b36c8,null))[_0x3e55('0x29')](removeEntity(_0x2b36c8,null))[_0x3e55('0x4f')](handleError(_0x2b36c8,null));};
\ No newline at end of file
+var _0x7efc=['AnalyticTreeReport','includeAll','findAll','catch','show','params','keys','include','options','create','body','update','find','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','destroy','then','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x291fc5,_0x892bce){var _0x10a4be=function(_0x49c73d){while(--_0x49c73d){_0x291fc5['push'](_0x291fc5['shift']());}};_0x10a4be(++_0x892bce);}(_0x7efc,0x131));var _0xc7ef=function(_0x52ab62,_0x203d25){_0x52ab62=_0x52ab62-0x0;var _0x42f499=_0x7efc[_0x52ab62];return _0x42f499;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc7ef('0x0'));var zipdir=require(_0xc7ef('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc7ef('0x2'));var moment=require(_0xc7ef('0x3'));var BPromise=require(_0xc7ef('0x4'));var Mustache=require(_0xc7ef('0x5'));var util=require(_0xc7ef('0x6'));var path=require(_0xc7ef('0x7'));var sox=require(_0xc7ef('0x8'));var csv=require(_0xc7ef('0x9'));var ejs=require(_0xc7ef('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc7ef('0xb'));var squel=require('squel');var crypto=require(_0xc7ef('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc7ef('0x9'));var querystring=require(_0xc7ef('0xd'));var Papa=require(_0xc7ef('0xe'));var Redis=require('ioredis');var authService=require(_0xc7ef('0xf'));var qs=require(_0xc7ef('0x10'));var as=require(_0xc7ef('0x11'));var hardwareService=require(_0xc7ef('0x12'));var logger=require(_0xc7ef('0x13'))('api');var utils=require(_0xc7ef('0x14'));var config=require(_0xc7ef('0x15'));var licenseUtil=require(_0xc7ef('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15cdda,_0xe47872){_0xe47872=_0xe47872||0xcc;return function(_0x362d54){if(_0x362d54){return _0x15cdda[_0xc7ef('0x17')](_0xe47872);}return _0x15cdda[_0xc7ef('0x18')](_0xe47872)[_0xc7ef('0x19')]();};}function respondWithResult(_0x3725fd,_0x44c1f7){_0x44c1f7=_0x44c1f7||0xc8;return function(_0x560c71){if(_0x560c71){return _0x3725fd[_0xc7ef('0x18')](_0x44c1f7)[_0xc7ef('0x1a')](_0x560c71);}};}function respondWithFilteredResult(_0x15972e,_0x25a036){return function(_0x635d0d){if(_0x635d0d){var _0x35ab7c=typeof _0x25a036[_0xc7ef('0x1b')]===_0xc7ef('0x1c')&&typeof _0x25a036[_0xc7ef('0x1d')]===_0xc7ef('0x1c');var _0x5d6885=_0x635d0d[_0xc7ef('0x1e')];var _0x9ce583=_0x35ab7c?0x0:_0x25a036[_0xc7ef('0x1b')];var _0x21336f=_0x35ab7c?_0x635d0d['count']:_0x25a036[_0xc7ef('0x1b')]+_0x25a036[_0xc7ef('0x1d')];var _0x569dad;if(_0x21336f>=_0x5d6885){_0x21336f=_0x5d6885;_0x569dad=0xc8;}else{_0x569dad=0xce;}_0x15972e['status'](_0x569dad);return _0x15972e[_0xc7ef('0x1f')]('Content-Range',_0x9ce583+'-'+_0x21336f+'/'+_0x5d6885)[_0xc7ef('0x1a')](_0x635d0d);}return null;};}function patchUpdates(_0xde4731){return function(_0x5cdffa){try{jsonpatch[_0xc7ef('0x20')](_0x5cdffa,_0xde4731,!![]);}catch(_0x4e72f8){return BPromise[_0xc7ef('0x21')](_0x4e72f8);}return _0x5cdffa['save']();};}function saveUpdates(_0x1ca9bf,_0xbaacee){return function(_0x1f0cb1){if(_0x1f0cb1){return _0x1f0cb1['update'](_0x1ca9bf)['then'](function(_0x2e5ed4){return _0x2e5ed4;});}return null;};}function removeEntity(_0x51c55a,_0x101a47){return function(_0xefb8c){if(_0xefb8c){return _0xefb8c[_0xc7ef('0x22')]()[_0xc7ef('0x23')](function(){_0x51c55a[_0xc7ef('0x18')](0xcc)[_0xc7ef('0x19')]();});}};}function handleEntityNotFound(_0x1b61b8,_0xd5d392){return function(_0x3ee606){if(!_0x3ee606){_0x1b61b8[_0xc7ef('0x17')](0x194);}return _0x3ee606;};}function handleError(_0x52918d,_0x256b0b){_0x256b0b=_0x256b0b||0x1f4;return function(_0x210ecc){logger['error'](_0x210ecc[_0xc7ef('0x24')]);if(_0x210ecc['name']){delete _0x210ecc[_0xc7ef('0x25')];}_0x52918d[_0xc7ef('0x18')](_0x256b0b)[_0xc7ef('0x26')](_0x210ecc);};}exports['index']=function(_0x1b627a,_0x3618bb){var _0x4873c={},_0x2fc6bd={},_0x147d3e={'count':0x0,'rows':[]};var _0x525332=_[_0xc7ef('0x27')](db['AnalyticTreeReport'][_0xc7ef('0x28')],function(_0x3d3f53){return{'name':_0x3d3f53[_0xc7ef('0x29')],'type':_0x3d3f53[_0xc7ef('0x2a')][_0xc7ef('0x2b')]};});_0x2fc6bd[_0xc7ef('0x2c')]=_[_0xc7ef('0x27')](_0x525332,_0xc7ef('0x25'));_0x2fc6bd[_0xc7ef('0x2d')]=_['keys'](_0x1b627a[_0xc7ef('0x2d')]);_0x2fc6bd[_0xc7ef('0x2e')]=_['intersection'](_0x2fc6bd[_0xc7ef('0x2c')],_0x2fc6bd[_0xc7ef('0x2d')]);_0x4873c[_0xc7ef('0x2f')]=_[_0xc7ef('0x30')](_0x2fc6bd[_0xc7ef('0x2c')],qs[_0xc7ef('0x31')](_0x1b627a[_0xc7ef('0x2d')]['fields']));_0x4873c[_0xc7ef('0x2f')]=_0x4873c[_0xc7ef('0x2f')][_0xc7ef('0x32')]?_0x4873c[_0xc7ef('0x2f')]:_0x2fc6bd['model'];if(!_0x1b627a[_0xc7ef('0x2d')][_0xc7ef('0x33')](_0xc7ef('0x34'))){_0x4873c['limit']=qs[_0xc7ef('0x1d')](_0x1b627a[_0xc7ef('0x2d')][_0xc7ef('0x1d')]);_0x4873c['offset']=qs[_0xc7ef('0x1b')](_0x1b627a['query']['offset']);}_0x4873c[_0xc7ef('0x35')]=qs[_0xc7ef('0x36')](_0x1b627a[_0xc7ef('0x2d')][_0xc7ef('0x36')]);_0x4873c[_0xc7ef('0x37')]=qs['filters'](_[_0xc7ef('0x38')](_0x1b627a[_0xc7ef('0x2d')],_0x2fc6bd[_0xc7ef('0x2e')]),_0x525332);if(_0x1b627a[_0xc7ef('0x2d')][_0xc7ef('0x39')]){_0x4873c[_0xc7ef('0x37')]=_[_0xc7ef('0x3a')](_0x4873c[_0xc7ef('0x37')],{'$or':_[_0xc7ef('0x27')](_0x525332,function(_0x471b97){if(_0x471b97[_0xc7ef('0x2a')]!==_0xc7ef('0x3b')){var _0x304e16={};_0x304e16[_0x471b97[_0xc7ef('0x25')]]={'$like':'%'+_0x1b627a[_0xc7ef('0x2d')][_0xc7ef('0x39')]+'%'};return _0x304e16;}})});}_0x4873c=_[_0xc7ef('0x3a')]({},_0x4873c,_0x1b627a['options']);var _0x1d64ab={'where':_0x4873c[_0xc7ef('0x37')]};return db[_0xc7ef('0x3c')][_0xc7ef('0x1e')](_0x1d64ab)[_0xc7ef('0x23')](function(_0x27d605){_0x147d3e[_0xc7ef('0x1e')]=_0x27d605;if(_0x1b627a[_0xc7ef('0x2d')][_0xc7ef('0x3d')]){_0x4873c['include']=[{'all':!![]}];}return db[_0xc7ef('0x3c')][_0xc7ef('0x3e')](_0x4873c);})[_0xc7ef('0x23')](function(_0x25b1a0){_0x147d3e['rows']=_0x25b1a0;return _0x147d3e;})[_0xc7ef('0x23')](respondWithFilteredResult(_0x3618bb,_0x4873c))[_0xc7ef('0x3f')](handleError(_0x3618bb,null));};exports[_0xc7ef('0x40')]=function(_0x5905f,_0x525d36){var _0x181cc3={'raw':!![],'where':{'id':_0x5905f[_0xc7ef('0x41')]['id']}},_0x50bbe1={};_0x50bbe1['model']=_['keys'](db['AnalyticTreeReport']['rawAttributes']);_0x50bbe1[_0xc7ef('0x2d')]=_[_0xc7ef('0x42')](_0x5905f[_0xc7ef('0x2d')]);_0x50bbe1[_0xc7ef('0x2e')]=_[_0xc7ef('0x30')](_0x50bbe1[_0xc7ef('0x2c')],_0x50bbe1[_0xc7ef('0x2d')]);_0x181cc3[_0xc7ef('0x2f')]=_[_0xc7ef('0x30')](_0x50bbe1[_0xc7ef('0x2c')],qs[_0xc7ef('0x31')](_0x5905f['query']['fields']));_0x181cc3[_0xc7ef('0x2f')]=_0x181cc3['attributes'][_0xc7ef('0x32')]?_0x181cc3['attributes']:_0x50bbe1['model'];if(_0x5905f[_0xc7ef('0x2d')][_0xc7ef('0x3d')]){_0x181cc3[_0xc7ef('0x43')]=[{'all':!![]}];}_0x181cc3=_[_0xc7ef('0x3a')]({},_0x181cc3,_0x5905f[_0xc7ef('0x44')]);return db[_0xc7ef('0x3c')]['find'](_0x181cc3)[_0xc7ef('0x23')](handleEntityNotFound(_0x525d36,null))[_0xc7ef('0x23')](respondWithResult(_0x525d36,null))[_0xc7ef('0x3f')](handleError(_0x525d36,null));};exports[_0xc7ef('0x45')]=function(_0xc9446c,_0x3bb1cf){return db[_0xc7ef('0x3c')]['create'](_0xc9446c[_0xc7ef('0x46')],{})[_0xc7ef('0x23')](respondWithResult(_0x3bb1cf,0xc9))[_0xc7ef('0x3f')](handleError(_0x3bb1cf,null));};exports[_0xc7ef('0x47')]=function(_0x134ec4,_0x1cd698){if(_0x134ec4[_0xc7ef('0x46')]['id']){delete _0x134ec4['body']['id'];}return db[_0xc7ef('0x3c')][_0xc7ef('0x48')]({'where':{'id':_0x134ec4[_0xc7ef('0x41')]['id']}})['then'](handleEntityNotFound(_0x1cd698,null))[_0xc7ef('0x23')](saveUpdates(_0x134ec4['body'],null))[_0xc7ef('0x23')](respondWithResult(_0x1cd698,null))[_0xc7ef('0x3f')](handleError(_0x1cd698,null));};exports[_0xc7ef('0x22')]=function(_0x35150d,_0x5a47d8){return db['AnalyticTreeReport'][_0xc7ef('0x48')]({'where':{'id':_0x35150d[_0xc7ef('0x41')]['id']}})[_0xc7ef('0x23')](handleEntityNotFound(_0x5a47d8,null))['then'](removeEntity(_0x5a47d8,null))['catch'](handleError(_0x5a47d8,null));};
\ No newline at end of file
index 5ecbe8d..16e8e22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9683=['rimraf','../../config/environment','define','analytics_report_trees','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x37b957,_0x6121ab){var _0x4379a0=function(_0x2612d0){while(--_0x2612d0){_0x37b957['push'](_0x37b957['shift']());}};_0x4379a0(++_0x6121ab);}(_0x9683,0xa9));var _0x3968=function(_0x290da8,_0x3bf855){_0x290da8=_0x290da8-0x0;var _0x464f0f=_0x9683[_0x290da8];return _0x464f0f;};'use strict';var _=require(_0x3968('0x0'));var util=require(_0x3968('0x1'));var logger=require(_0x3968('0x2'))(_0x3968('0x3'));var moment=require('moment');var BPromise=require(_0x3968('0x4'));var rp=require(_0x3968('0x5'));var fs=require('fs');var path=require(_0x3968('0x6'));var rimraf=require(_0x3968('0x7'));var config=require(_0x3968('0x8'));var attributes=require('./analyticTreeReport.attributes');module['exports']=function(_0x101c91,_0x38f25b){return _0x101c91[_0x3968('0x9')]('AnalyticTreeReport',attributes,{'tableName':_0x3968('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0627=['api','moment','request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','lodash','util'];(function(_0x4c0144,_0x108a49){var _0x373b33=function(_0x25f36b){while(--_0x25f36b){_0x4c0144['push'](_0x4c0144['shift']());}};_0x373b33(++_0x108a49);}(_0x0627,0x127));var _0x7062=function(_0x5c2c7c,_0xa7d3b1){_0x5c2c7c=_0x5c2c7c-0x0;var _0xea7ffe=_0x0627[_0x5c2c7c];return _0xea7ffe;};'use strict';var _=require(_0x7062('0x0'));var util=require(_0x7062('0x1'));var logger=require('../../config/logger')(_0x7062('0x2'));var moment=require(_0x7062('0x3'));var BPromise=require('bluebird');var rp=require(_0x7062('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7062('0x5'));var config=require(_0x7062('0x6'));var attributes=require(_0x7062('0x7'));module[_0x7062('0x8')]=function(_0x4fe71a,_0x4cd7bd){return _0x4fe71a[_0x7062('0x9')](_0x7062('0xa'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b51c327..4783d32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x3f68de,_0x12791f){var _0x3b9e57=function(_0x25914d){while(--_0x25914d){_0x3f68de['push'](_0x3f68de['shift']());}};_0x3b9e57(++_0x12791f);}(_0xdb28,0x106));var _0x8db2=function(_0x44a673,_0x3e2f87){_0x44a673=_0x44a673-0x0;var _0x244ee9=_0xdb28[_0x44a673];return _0x244ee9;};'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')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0x7a54=['info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x310546,_0x11cdc0){_0x310546=_0x310546-0x0;var _0x4e1a53=_0x7a54[_0x310546];return _0x4e1a53;};'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')]('AnalyticTreeReport,\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 a9c6881..158c198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83fa=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','get','/:id','show','create','put'];(function(_0x54de64,_0x44310d){var _0x27f69d=function(_0x4ca29a){while(--_0x4ca29a){_0x54de64['push'](_0x54de64['shift']());}};_0x27f69d(++_0x44310d);}(_0x83fa,0x1bc));var _0xa83f=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0x83fa[_0x2cf2e9];return _0xd3670d;};'use strict';var multer=require(_0xa83f('0x0'));var util=require(_0xa83f('0x1'));var path=require(_0xa83f('0x2'));var timeout=require(_0xa83f('0x3'));var express=require(_0xa83f('0x4'));var router=express[_0xa83f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa83f('0x6'));var interaction=require(_0xa83f('0x7'));var config=require(_0xa83f('0x8'));var controller=require(_0xa83f('0x9'));router['get']('/',auth[_0xa83f('0xa')](),controller['index']);router[_0xa83f('0xb')](_0xa83f('0xc'),auth[_0xa83f('0xa')](),controller[_0xa83f('0xd')]);router['post']('/',auth[_0xa83f('0xa')](),controller[_0xa83f('0xe')]);router[_0xa83f('0xf')]('/:id',auth[_0xa83f('0xa')](),controller[_0xa83f('0x10')]);router[_0xa83f('0x11')](_0xa83f('0xc'),auth[_0xa83f('0xa')](),controller[_0xa83f('0x12')]);module[_0xa83f('0x13')]=router;
\ No newline at end of file
+var _0x3ab7=['Router','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','put','update','delete','destroy','exports','path','connect-timeout','express'];(function(_0x4a2b80,_0x55d2f0){var _0x61a4c3=function(_0x23a68c){while(--_0x23a68c){_0x4a2b80['push'](_0x4a2b80['shift']());}};_0x61a4c3(++_0x55d2f0);}(_0x3ab7,0x1bd));var _0x73ab=function(_0x146a85,_0x529b52){_0x146a85=_0x146a85-0x0;var _0x1b59bf=_0x3ab7[_0x146a85];return _0x1b59bf;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x73ab('0x0'));var timeout=require(_0x73ab('0x1'));var express=require(_0x73ab('0x2'));var router=express[_0x73ab('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x73ab('0x4'));var config=require(_0x73ab('0x5'));var controller=require(_0x73ab('0x6'));router[_0x73ab('0x7')]('/',auth[_0x73ab('0x8')](),controller[_0x73ab('0x9')]);router[_0x73ab('0x7')](_0x73ab('0xa'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x73ab('0x8')](),controller['create']);router[_0x73ab('0xb')](_0x73ab('0xa'),auth['isAuthenticated'](),controller[_0x73ab('0xc')]);router[_0x73ab('0xd')](_0x73ab('0xa'),auth[_0x73ab('0x8')](),controller[_0x73ab('0xe')]);module[_0x73ab('0xf')]=router;
\ No newline at end of file
index 7b8524c..5ee97cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x777f=['sequelize','exports','STRING'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x777f,0x9f));var _0xf777=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x777f[_0x4c7fb5];return _0x2e10ac;};'use strict';var Sequelize=require(_0xf777('0x0'));module[_0xf777('0x1')]={'name':{'type':Sequelize[_0xf777('0x2')]},'basename':{'type':Sequelize[_0xf777('0x2')]},'type':{'type':Sequelize[_0xf777('0x2')]}};
\ No newline at end of file
+var _0xe3c5=['sequelize','exports','STRING'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0xe3c5,0x17d));var _0x5e3c=function(_0x5ef7b8,_0x15cc07){_0x5ef7b8=_0x5ef7b8-0x0;var _0x2c7148=_0xe3c5[_0x5ef7b8];return _0x2c7148;};'use strict';var Sequelize=require(_0x5e3c('0x0'));module[_0x5e3c('0x1')]={'name':{'type':Sequelize[_0x5e3c('0x2')]},'basename':{'type':Sequelize[_0x5e3c('0x2')]},'type':{'type':Sequelize[_0x5e3c('0x2')]}};
\ No newline at end of file
index 3644172..59463a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x847e=['key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','clone','get','omit','createdAt','updatedAt','body','catch','create','file','originalname','basename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','Attachment','rawAttributes','fieldName'];(function(_0x3a21c0,_0x348451){var _0x411e84=function(_0xdd7b02){while(--_0xdd7b02){_0x3a21c0['push'](_0x3a21c0['shift']());}};_0x411e84(++_0x348451);}(_0x847e,0xec));var _0xe847=function(_0x428d3c,_0x341367){_0x428d3c=_0x428d3c-0x0;var _0x5b8c2d=_0x847e[_0x428d3c];return _0x5b8c2d;};'use strict';var emlformat=require(_0xe847('0x0'));var rimraf=require(_0xe847('0x1'));var zipdir=require(_0xe847('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe847('0x3'));var moment=require(_0xe847('0x4'));var BPromise=require(_0xe847('0x5'));var Mustache=require(_0xe847('0x6'));var util=require(_0xe847('0x7'));var path=require(_0xe847('0x8'));var sox=require(_0xe847('0x9'));var csv=require(_0xe847('0xa'));var ejs=require(_0xe847('0xb'));var fs=require('fs');var fs_extra=require(_0xe847('0xc'));var _=require(_0xe847('0xd'));var squel=require(_0xe847('0xe'));var crypto=require(_0xe847('0xf'));var jsforce=require(_0xe847('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe847('0x11'));var Papa=require(_0xe847('0x12'));var Redis=require(_0xe847('0x13'));var authService=require(_0xe847('0x14'));var qs=require(_0xe847('0x15'));var as=require(_0xe847('0x16'));var hardwareService=require(_0xe847('0x17'));var logger=require(_0xe847('0x18'))(_0xe847('0x19'));var utils=require(_0xe847('0x1a'));var config=require(_0xe847('0x1b'));var licenseUtil=require(_0xe847('0x1c'));var db=require(_0xe847('0x1d'))['db'];function respondWithStatusCode(_0x898f8b,_0x4d1d63){_0x4d1d63=_0x4d1d63||0xcc;return function(_0x5362b7){if(_0x5362b7){return _0x898f8b['sendStatus'](_0x4d1d63);}return _0x898f8b['status'](_0x4d1d63)[_0xe847('0x1e')]();};}function respondWithResult(_0x4488e4,_0x31a75d){_0x31a75d=_0x31a75d||0xc8;return function(_0x1cff3b){if(_0x1cff3b){return _0x4488e4[_0xe847('0x1f')](_0x31a75d)['json'](_0x1cff3b);}};}function respondWithFilteredResult(_0x3f23e4,_0x1b78a2){return function(_0x48143f){if(_0x48143f){var _0x177abf=typeof _0x1b78a2[_0xe847('0x20')]===_0xe847('0x21')&&typeof _0x1b78a2[_0xe847('0x22')]===_0xe847('0x21');var _0x22a313=_0x48143f[_0xe847('0x23')];var _0x177d73=_0x177abf?0x0:_0x1b78a2['offset'];var _0x38cc4f=_0x177abf?_0x48143f[_0xe847('0x23')]:_0x1b78a2[_0xe847('0x20')]+_0x1b78a2['limit'];var _0x25fca7;if(_0x38cc4f>=_0x22a313){_0x38cc4f=_0x22a313;_0x25fca7=0xc8;}else{_0x25fca7=0xce;}_0x3f23e4[_0xe847('0x1f')](_0x25fca7);return _0x3f23e4[_0xe847('0x24')]('Content-Range',_0x177d73+'-'+_0x38cc4f+'/'+_0x22a313)[_0xe847('0x25')](_0x48143f);}return null;};}function patchUpdates(_0x44fcde){return function(_0x340655){try{jsonpatch[_0xe847('0x26')](_0x340655,_0x44fcde,!![]);}catch(_0x27c47b){return BPromise[_0xe847('0x27')](_0x27c47b);}return _0x340655[_0xe847('0x28')]();};}function saveUpdates(_0x325f31,_0x5b6bf4){return function(_0x203e0f){if(_0x203e0f){return _0x203e0f[_0xe847('0x29')](_0x325f31)[_0xe847('0x2a')](function(_0x3381fd){return _0x3381fd;});}return null;};}function removeEntity(_0x42a919,_0x4e9c17){return function(_0x139985){if(_0x139985){return _0x139985[_0xe847('0x2b')]()[_0xe847('0x2a')](function(){_0x42a919[_0xe847('0x1f')](0xcc)[_0xe847('0x1e')]();});}};}function handleEntityNotFound(_0x222dc8,_0x443f95){return function(_0x3e37a8){if(!_0x3e37a8){_0x222dc8['sendStatus'](0x194);}return _0x3e37a8;};}function handleError(_0x4bc4a7,_0x513731){_0x513731=_0x513731||0x1f4;return function(_0x48f693){logger[_0xe847('0x2c')](_0x48f693[_0xe847('0x2d')]);if(_0x48f693[_0xe847('0x2e')]){delete _0x48f693[_0xe847('0x2e')];}_0x4bc4a7[_0xe847('0x1f')](_0x513731)[_0xe847('0x2f')](_0x48f693);};}exports['index']=function(_0x1870d7,_0x389cde){var _0x183242={},_0x5b3587={},_0x528b51={'count':0x0,'rows':[]};var _0x11de8f=_[_0xe847('0x30')](db[_0xe847('0x31')][_0xe847('0x32')],function(_0x1cfdf3){return{'name':_0x1cfdf3[_0xe847('0x33')],'type':_0x1cfdf3['type'][_0xe847('0x34')]};});_0x5b3587[_0xe847('0x35')]=_[_0xe847('0x30')](_0x11de8f,'name');_0x5b3587['query']=_[_0xe847('0x36')](_0x1870d7[_0xe847('0x37')]);_0x5b3587['filters']=_['intersection'](_0x5b3587['model'],_0x5b3587[_0xe847('0x37')]);_0x183242[_0xe847('0x38')]=_[_0xe847('0x39')](_0x5b3587[_0xe847('0x35')],qs[_0xe847('0x3a')](_0x1870d7[_0xe847('0x37')][_0xe847('0x3a')]));_0x183242[_0xe847('0x38')]=_0x183242[_0xe847('0x38')][_0xe847('0x3b')]?_0x183242[_0xe847('0x38')]:_0x5b3587[_0xe847('0x35')];if(!_0x1870d7[_0xe847('0x37')][_0xe847('0x3c')](_0xe847('0x3d'))){_0x183242['limit']=qs['limit'](_0x1870d7[_0xe847('0x37')][_0xe847('0x22')]);_0x183242['offset']=qs[_0xe847('0x20')](_0x1870d7[_0xe847('0x37')][_0xe847('0x20')]);}_0x183242[_0xe847('0x3e')]=qs['sort'](_0x1870d7[_0xe847('0x37')][_0xe847('0x3f')]);_0x183242[_0xe847('0x40')]=qs['filters'](_['pick'](_0x1870d7[_0xe847('0x37')],_0x5b3587['filters']),_0x11de8f);if(_0x1870d7[_0xe847('0x37')][_0xe847('0x41')]){_0x183242[_0xe847('0x40')]=_[_0xe847('0x42')](_0x183242['where'],{'$or':_[_0xe847('0x30')](_0x11de8f,function(_0x257155){if(_0x257155[_0xe847('0x43')]!==_0xe847('0x44')){var _0x5bab42={};_0x5bab42[_0x257155[_0xe847('0x2e')]]={'$like':'%'+_0x1870d7['query']['filter']+'%'};return _0x5bab42;}})});}_0x183242=_['merge']({},_0x183242,_0x1870d7[_0xe847('0x45')]);var _0x356b1a={'where':_0x183242[_0xe847('0x40')]};return db['Attachment'][_0xe847('0x23')](_0x356b1a)[_0xe847('0x2a')](function(_0x53a923){_0x528b51[_0xe847('0x23')]=_0x53a923;if(_0x1870d7['query'][_0xe847('0x46')]){_0x183242[_0xe847('0x47')]=[{'all':!![]}];}return db[_0xe847('0x31')][_0xe847('0x48')](_0x183242);})[_0xe847('0x2a')](function(_0x4159a0){_0x528b51[_0xe847('0x49')]=_0x4159a0;return _0x528b51;})['then'](respondWithFilteredResult(_0x389cde,_0x183242))['catch'](handleError(_0x389cde,null));};exports[_0xe847('0x4a')]=function(_0x3c4bd6,_0x4f8b24){var _0x3fed5d={'raw':!![],'where':{'id':_0x3c4bd6[_0xe847('0x4b')]['id']}},_0x11587a={};_0x11587a[_0xe847('0x35')]=_[_0xe847('0x36')](db[_0xe847('0x31')][_0xe847('0x32')]);_0x11587a[_0xe847('0x37')]=_[_0xe847('0x36')](_0x3c4bd6[_0xe847('0x37')]);_0x11587a['filters']=_[_0xe847('0x39')](_0x11587a[_0xe847('0x35')],_0x11587a['query']);_0x3fed5d[_0xe847('0x38')]=_[_0xe847('0x39')](_0x11587a[_0xe847('0x35')],qs['fields'](_0x3c4bd6[_0xe847('0x37')][_0xe847('0x3a')]));_0x3fed5d['attributes']=_0x3fed5d[_0xe847('0x38')][_0xe847('0x3b')]?_0x3fed5d['attributes']:_0x11587a[_0xe847('0x35')];if(_0x3c4bd6['query'][_0xe847('0x46')]){_0x3fed5d['include']=[{'all':!![]}];}_0x3fed5d=_[_0xe847('0x42')]({},_0x3fed5d,_0x3c4bd6['options']);return db[_0xe847('0x31')][_0xe847('0x4c')](_0x3fed5d)[_0xe847('0x2a')](handleEntityNotFound(_0x4f8b24,null))[_0xe847('0x2a')](respondWithResult(_0x4f8b24,null))['catch'](handleError(_0x4f8b24,null));};exports[_0xe847('0x4d')]=function(_0x31e577,_0x13fd58){var _0x438141={'where':{'id':_0x31e577[_0xe847('0x4b')]['id']}},_0x1ac610={};_0x1ac610[_0xe847('0x35')]=_['keys'](db[_0xe847('0x31')][_0xe847('0x32')]);_0x438141[_0xe847('0x38')]=_['intersection'](_0x1ac610['model'],qs[_0xe847('0x3a')](_0x31e577[_0xe847('0x37')][_0xe847('0x3a')]));_0x438141[_0xe847('0x38')]=_0x438141[_0xe847('0x38')][_0xe847('0x3b')]?_0x438141[_0xe847('0x38')]:_0x1ac610['model'];if(_0x31e577[_0xe847('0x37')][_0xe847('0x46')]){_0x438141[_0xe847('0x47')]=[{'all':!![]}];}_0x438141=_[_0xe847('0x42')]({},_0x438141,_0x31e577[_0xe847('0x45')]);return db[_0xe847('0x31')][_0xe847('0x4c')](_0x438141)[_0xe847('0x2a')](handleEntityNotFound(_0x13fd58,null))[_0xe847('0x2a')](function(_0x2d37ad){if(_0x2d37ad){var _0x4f3b51=_0x2d37ad[_0xe847('0x4e')]({'plain':!![]});_0x4f3b51=qs[_0xe847('0x4f')](_0x4f3b51,['id',_0xe847('0x50'),_0xe847('0x51')]);_0x31e577[_0xe847('0x52')]=_[_0xe847('0x4f')](_0x31e577['body'],['id','createdAt',_0xe847('0x51')]);return db[_0xe847('0x31')]['create'](_[_0xe847('0x42')](_0x4f3b51,_0x31e577[_0xe847('0x52')]),{'include':_0x31e577['query'][_0xe847('0x46')]?[{'all':!![]}]:undefined});}})[_0xe847('0x2a')](respondWithResult(_0x13fd58,0xc9))['catch'](handleError(_0x13fd58,null));};exports[_0xe847('0x29')]=function(_0x20493e,_0x25fa7c){if(_0x20493e[_0xe847('0x52')]['id']){delete _0x20493e[_0xe847('0x52')]['id'];}return db['Attachment']['find']({'where':{'id':_0x20493e[_0xe847('0x4b')]['id']}})[_0xe847('0x2a')](handleEntityNotFound(_0x25fa7c,null))[_0xe847('0x2a')](saveUpdates(_0x20493e[_0xe847('0x52')],null))[_0xe847('0x2a')](respondWithResult(_0x25fa7c,null))[_0xe847('0x53')](handleError(_0x25fa7c,null));};exports['destroy']=function(_0x5d4684,_0x535316){return db[_0xe847('0x31')][_0xe847('0x4c')]({'where':{'id':_0x5d4684['params']['id']}})['then'](handleEntityNotFound(_0x535316,null))[_0xe847('0x2a')](removeEntity(_0x535316,null))[_0xe847('0x53')](handleError(_0x535316,null));};exports[_0xe847('0x54')]=function(_0x1e3fb1,_0x1d7ef9,_0x1b7270){_0x1e3fb1[_0xe847('0x52')][_0xe847('0x2e')]=_0x1e3fb1[_0xe847('0x55')][_0xe847('0x56')];_0x1e3fb1['body'][_0xe847('0x57')]=_0x1e3fb1[_0xe847('0x55')]['filename'];_0x1e3fb1['body']['type']=_0x1e3fb1[_0xe847('0x55')][_0xe847('0x58')];return db[_0xe847('0x31')][_0xe847('0x54')](_0x1e3fb1['body'])['then'](respondWithResult(_0x1d7ef9,0xc9))['catch'](handleError(_0x1d7ef9,null));};exports[_0xe847('0x59')]=function(_0x4547fd,_0x652c54,_0x16aa31){return db[_0xe847('0x31')][_0xe847('0x5a')]({'where':{'id':_0x4547fd[_0xe847('0x4b')]['id']},'raw':!![]})[_0xe847('0x2a')](handleEntityNotFound(_0x652c54,null))[_0xe847('0x2a')](function(_0x1bf5b1){if(_0x1bf5b1){var _0x4f47c9=_0x1bf5b1[_0xe847('0x5b')]!==null;var _0x50ea66=path[_0xe847('0x5c')](config[_0xe847('0x5d')],_0xe847('0x5e'));if(_0x4f47c9){_0x50ea66=path['join'](_0x50ea66,_0xe847('0x5f'));}var _0x571b4a=path[_0xe847('0x5c')](_0x50ea66,_0x1bf5b1['basename']);return _0x652c54['download'](_0x571b4a);}})[_0xe847('0x53')](handleError(_0x652c54,null));};
\ No newline at end of file
+var _0x12e5=['offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','stack','name','send','index','map','Attachment','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','clone','get','createdAt','updatedAt','omit','body','create','find','file','basename','filename','mimetype','download','ChatOfflineMessageId','join','root','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','querystring','papaparse','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(_0x100d02,_0x9094ff){var _0x48e5d2=function(_0x414476){while(--_0x414476){_0x100d02['push'](_0x100d02['shift']());}};_0x48e5d2(++_0x9094ff);}(_0x12e5,0x141));var _0x512e=function(_0x2eac6a,_0x3ea53d){_0x2eac6a=_0x2eac6a-0x0;var _0x171832=_0x12e5[_0x2eac6a];return _0x171832;};'use strict';var emlformat=require(_0x512e('0x0'));var rimraf=require(_0x512e('0x1'));var zipdir=require(_0x512e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x512e('0x3'));var moment=require(_0x512e('0x4'));var BPromise=require(_0x512e('0x5'));var Mustache=require(_0x512e('0x6'));var util=require(_0x512e('0x7'));var path=require(_0x512e('0x8'));var sox=require('sox');var csv=require(_0x512e('0x9'));var ejs=require(_0x512e('0xa'));var fs=require('fs');var fs_extra=require(_0x512e('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x512e('0x9'));var querystring=require(_0x512e('0xc'));var Papa=require(_0x512e('0xd'));var Redis=require(_0x512e('0xe'));var authService=require(_0x512e('0xf'));var qs=require(_0x512e('0x10'));var as=require(_0x512e('0x11'));var hardwareService=require(_0x512e('0x12'));var logger=require('../../config/logger')(_0x512e('0x13'));var utils=require('../../config/utils');var config=require(_0x512e('0x14'));var licenseUtil=require(_0x512e('0x15'));var db=require(_0x512e('0x16'))['db'];function respondWithStatusCode(_0x97afb2,_0x37f0ab){_0x37f0ab=_0x37f0ab||0xcc;return function(_0xbad79f){if(_0xbad79f){return _0x97afb2[_0x512e('0x17')](_0x37f0ab);}return _0x97afb2['status'](_0x37f0ab)[_0x512e('0x18')]();};}function respondWithResult(_0x4bc9df,_0x4e1b04){_0x4e1b04=_0x4e1b04||0xc8;return function(_0x4613ea){if(_0x4613ea){return _0x4bc9df[_0x512e('0x19')](_0x4e1b04)[_0x512e('0x1a')](_0x4613ea);}};}function respondWithFilteredResult(_0x48ff34,_0x110ef1){return function(_0x563064){if(_0x563064){var _0x5810b2=typeof _0x110ef1[_0x512e('0x1b')]===_0x512e('0x1c')&&typeof _0x110ef1[_0x512e('0x1d')]==='undefined';var _0x259856=_0x563064['count'];var _0x1634f8=_0x5810b2?0x0:_0x110ef1[_0x512e('0x1b')];var _0x475a5c=_0x5810b2?_0x563064[_0x512e('0x1e')]:_0x110ef1[_0x512e('0x1b')]+_0x110ef1[_0x512e('0x1d')];var _0xadb819;if(_0x475a5c>=_0x259856){_0x475a5c=_0x259856;_0xadb819=0xc8;}else{_0xadb819=0xce;}_0x48ff34[_0x512e('0x19')](_0xadb819);return _0x48ff34[_0x512e('0x1f')](_0x512e('0x20'),_0x1634f8+'-'+_0x475a5c+'/'+_0x259856)['json'](_0x563064);}return null;};}function patchUpdates(_0x5ebe57){return function(_0xdc8e75){try{jsonpatch[_0x512e('0x21')](_0xdc8e75,_0x5ebe57,!![]);}catch(_0x38de6f){return BPromise[_0x512e('0x22')](_0x38de6f);}return _0xdc8e75['save']();};}function saveUpdates(_0x4397c9,_0x42a48e){return function(_0x176240){if(_0x176240){return _0x176240[_0x512e('0x23')](_0x4397c9)['then'](function(_0x1a554a){return _0x1a554a;});}return null;};}function removeEntity(_0x334db0,_0x1ef48d){return function(_0x1c6fc6){if(_0x1c6fc6){return _0x1c6fc6[_0x512e('0x24')]()[_0x512e('0x25')](function(){_0x334db0[_0x512e('0x19')](0xcc)[_0x512e('0x18')]();});}};}function handleEntityNotFound(_0x60e2b,_0x5e5c2a){return function(_0x37ae2d){if(!_0x37ae2d){_0x60e2b[_0x512e('0x17')](0x194);}return _0x37ae2d;};}function handleError(_0x506527,_0x2bcd63){_0x2bcd63=_0x2bcd63||0x1f4;return function(_0x578489){logger['error'](_0x578489[_0x512e('0x26')]);if(_0x578489[_0x512e('0x27')]){delete _0x578489[_0x512e('0x27')];}_0x506527[_0x512e('0x19')](_0x2bcd63)[_0x512e('0x28')](_0x578489);};}exports[_0x512e('0x29')]=function(_0xbc151a,_0x234fb6){var _0x13557c={},_0xf13042={},_0x31b57b={'count':0x0,'rows':[]};var _0x4ea450=_[_0x512e('0x2a')](db[_0x512e('0x2b')][_0x512e('0x2c')],function(_0x455782){return{'name':_0x455782['fieldName'],'type':_0x455782[_0x512e('0x2d')][_0x512e('0x2e')]};});_0xf13042[_0x512e('0x2f')]=_[_0x512e('0x2a')](_0x4ea450,_0x512e('0x27'));_0xf13042[_0x512e('0x30')]=_['keys'](_0xbc151a[_0x512e('0x30')]);_0xf13042[_0x512e('0x31')]=_[_0x512e('0x32')](_0xf13042['model'],_0xf13042[_0x512e('0x30')]);_0x13557c[_0x512e('0x33')]=_['intersection'](_0xf13042[_0x512e('0x2f')],qs[_0x512e('0x34')](_0xbc151a[_0x512e('0x30')]['fields']));_0x13557c[_0x512e('0x33')]=_0x13557c[_0x512e('0x33')][_0x512e('0x35')]?_0x13557c[_0x512e('0x33')]:_0xf13042[_0x512e('0x2f')];if(!_0xbc151a[_0x512e('0x30')][_0x512e('0x36')](_0x512e('0x37'))){_0x13557c[_0x512e('0x1d')]=qs[_0x512e('0x1d')](_0xbc151a[_0x512e('0x30')][_0x512e('0x1d')]);_0x13557c['offset']=qs['offset'](_0xbc151a[_0x512e('0x30')]['offset']);}_0x13557c[_0x512e('0x38')]=qs[_0x512e('0x39')](_0xbc151a['query'][_0x512e('0x39')]);_0x13557c[_0x512e('0x3a')]=qs[_0x512e('0x31')](_['pick'](_0xbc151a['query'],_0xf13042[_0x512e('0x31')]),_0x4ea450);if(_0xbc151a[_0x512e('0x30')][_0x512e('0x3b')]){_0x13557c[_0x512e('0x3a')]=_['merge'](_0x13557c[_0x512e('0x3a')],{'$or':_[_0x512e('0x2a')](_0x4ea450,function(_0x3c9f05){if(_0x3c9f05[_0x512e('0x2d')]!==_0x512e('0x3c')){var _0x14f554={};_0x14f554[_0x3c9f05[_0x512e('0x27')]]={'$like':'%'+_0xbc151a[_0x512e('0x30')][_0x512e('0x3b')]+'%'};return _0x14f554;}})});}_0x13557c=_[_0x512e('0x3d')]({},_0x13557c,_0xbc151a[_0x512e('0x3e')]);var _0x419ef2={'where':_0x13557c[_0x512e('0x3a')]};return db[_0x512e('0x2b')][_0x512e('0x1e')](_0x419ef2)[_0x512e('0x25')](function(_0x296e5c){_0x31b57b[_0x512e('0x1e')]=_0x296e5c;if(_0xbc151a[_0x512e('0x30')][_0x512e('0x3f')]){_0x13557c[_0x512e('0x40')]=[{'all':!![]}];}return db[_0x512e('0x2b')][_0x512e('0x41')](_0x13557c);})[_0x512e('0x25')](function(_0x2df938){_0x31b57b[_0x512e('0x42')]=_0x2df938;return _0x31b57b;})['then'](respondWithFilteredResult(_0x234fb6,_0x13557c))[_0x512e('0x43')](handleError(_0x234fb6,null));};exports[_0x512e('0x44')]=function(_0x2164a0,_0x56d9bd){var _0x249d3b={'raw':!![],'where':{'id':_0x2164a0[_0x512e('0x45')]['id']}},_0x1ee858={};_0x1ee858[_0x512e('0x2f')]=_[_0x512e('0x46')](db[_0x512e('0x2b')][_0x512e('0x2c')]);_0x1ee858[_0x512e('0x30')]=_[_0x512e('0x46')](_0x2164a0['query']);_0x1ee858['filters']=_['intersection'](_0x1ee858[_0x512e('0x2f')],_0x1ee858['query']);_0x249d3b[_0x512e('0x33')]=_[_0x512e('0x32')](_0x1ee858['model'],qs[_0x512e('0x34')](_0x2164a0['query'][_0x512e('0x34')]));_0x249d3b[_0x512e('0x33')]=_0x249d3b[_0x512e('0x33')]['length']?_0x249d3b[_0x512e('0x33')]:_0x1ee858[_0x512e('0x2f')];if(_0x2164a0[_0x512e('0x30')][_0x512e('0x3f')]){_0x249d3b[_0x512e('0x40')]=[{'all':!![]}];}_0x249d3b=_[_0x512e('0x3d')]({},_0x249d3b,_0x2164a0['options']);return db[_0x512e('0x2b')]['find'](_0x249d3b)[_0x512e('0x25')](handleEntityNotFound(_0x56d9bd,null))[_0x512e('0x25')](respondWithResult(_0x56d9bd,null))[_0x512e('0x43')](handleError(_0x56d9bd,null));};exports[_0x512e('0x47')]=function(_0x5f13fb,_0x3a9f79){var _0x4b9540={'where':{'id':_0x5f13fb[_0x512e('0x45')]['id']}},_0x2f15d2={};_0x2f15d2[_0x512e('0x2f')]=_[_0x512e('0x46')](db[_0x512e('0x2b')][_0x512e('0x2c')]);_0x4b9540['attributes']=_['intersection'](_0x2f15d2[_0x512e('0x2f')],qs[_0x512e('0x34')](_0x5f13fb[_0x512e('0x30')][_0x512e('0x34')]));_0x4b9540[_0x512e('0x33')]=_0x4b9540[_0x512e('0x33')][_0x512e('0x35')]?_0x4b9540[_0x512e('0x33')]:_0x2f15d2[_0x512e('0x2f')];if(_0x5f13fb['query'][_0x512e('0x3f')]){_0x4b9540['include']=[{'all':!![]}];}_0x4b9540=_[_0x512e('0x3d')]({},_0x4b9540,_0x5f13fb['options']);return db[_0x512e('0x2b')]['find'](_0x4b9540)[_0x512e('0x25')](handleEntityNotFound(_0x3a9f79,null))[_0x512e('0x25')](function(_0xd5f548){if(_0xd5f548){var _0x28b64c=_0xd5f548[_0x512e('0x48')]({'plain':!![]});_0x28b64c=qs['omit'](_0x28b64c,['id',_0x512e('0x49'),_0x512e('0x4a')]);_0x5f13fb['body']=_[_0x512e('0x4b')](_0x5f13fb[_0x512e('0x4c')],['id','createdAt','updatedAt']);return db['Attachment'][_0x512e('0x4d')](_[_0x512e('0x3d')](_0x28b64c,_0x5f13fb['body']),{'include':_0x5f13fb[_0x512e('0x30')][_0x512e('0x3f')]?[{'all':!![]}]:undefined});}})[_0x512e('0x25')](respondWithResult(_0x3a9f79,0xc9))['catch'](handleError(_0x3a9f79,null));};exports[_0x512e('0x23')]=function(_0x4b4fe4,_0x2fb49e){if(_0x4b4fe4[_0x512e('0x4c')]['id']){delete _0x4b4fe4['body']['id'];}return db[_0x512e('0x2b')][_0x512e('0x4e')]({'where':{'id':_0x4b4fe4[_0x512e('0x45')]['id']}})['then'](handleEntityNotFound(_0x2fb49e,null))[_0x512e('0x25')](saveUpdates(_0x4b4fe4[_0x512e('0x4c')],null))['then'](respondWithResult(_0x2fb49e,null))[_0x512e('0x43')](handleError(_0x2fb49e,null));};exports[_0x512e('0x24')]=function(_0x276205,_0x47bcfc){return db['Attachment'][_0x512e('0x4e')]({'where':{'id':_0x276205[_0x512e('0x45')]['id']}})[_0x512e('0x25')](handleEntityNotFound(_0x47bcfc,null))['then'](removeEntity(_0x47bcfc,null))['catch'](handleError(_0x47bcfc,null));};exports['create']=function(_0x3cb603,_0x4bdda5,_0x340a23){_0x3cb603[_0x512e('0x4c')][_0x512e('0x27')]=_0x3cb603[_0x512e('0x4f')]['originalname'];_0x3cb603[_0x512e('0x4c')][_0x512e('0x50')]=_0x3cb603[_0x512e('0x4f')][_0x512e('0x51')];_0x3cb603['body']['type']=_0x3cb603[_0x512e('0x4f')][_0x512e('0x52')];return db[_0x512e('0x2b')]['create'](_0x3cb603[_0x512e('0x4c')])[_0x512e('0x25')](respondWithResult(_0x4bdda5,0xc9))[_0x512e('0x43')](handleError(_0x4bdda5,null));};exports[_0x512e('0x53')]=function(_0x414a45,_0x59c397,_0x1fef7a){return db[_0x512e('0x2b')]['findOne']({'where':{'id':_0x414a45[_0x512e('0x45')]['id']},'raw':!![]})[_0x512e('0x25')](handleEntityNotFound(_0x59c397,null))['then'](function(_0x224879){if(_0x224879){var _0x26a4ec=_0x224879[_0x512e('0x54')]!==null;var _0x27ed2a=path[_0x512e('0x55')](config[_0x512e('0x56')],'server/files/attachments/');if(_0x26a4ec){_0x27ed2a=path[_0x512e('0x55')](_0x27ed2a,'offline-chat/');}var _0x1827fa=path['join'](_0x27ed2a,_0x224879[_0x512e('0x50')]);return _0x59c397['download'](_0x1827fa);}})[_0x512e('0x43')](handleError(_0x59c397,null));};
\ No newline at end of file
index 1c29829..3fbb30d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4f=['../../config/environment','./attachment.attributes','exports','attachments','lodash','util','moment','bluebird','request-promise','path','rimraf'];(function(_0x214266,_0x1f6f52){var _0x568f75=function(_0x541904){while(--_0x541904){_0x214266['push'](_0x214266['shift']());}};_0x568f75(++_0x1f6f52);}(_0x8f4f,0xd5));var _0xf8f4=function(_0x16b07f,_0xadcf18){_0x16b07f=_0x16b07f-0x0;var _0x4c6c5a=_0x8f4f[_0x16b07f];return _0x4c6c5a;};'use strict';var _=require(_0xf8f4('0x0'));var util=require(_0xf8f4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf8f4('0x2'));var BPromise=require(_0xf8f4('0x3'));var rp=require(_0xf8f4('0x4'));var fs=require('fs');var path=require(_0xf8f4('0x5'));var rimraf=require(_0xf8f4('0x6'));var config=require(_0xf8f4('0x7'));var attributes=require(_0xf8f4('0x8'));module[_0xf8f4('0x9')]=function(_0x4402a7,_0x218810){return _0x4402a7['define']('Attachment',attributes,{'tableName':_0xf8f4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2287=['moment','bluebird','request-promise','path','rimraf','exports','Attachment','attachments','util','api'];(function(_0x219d87,_0x1cb6f7){var _0x22823d=function(_0x5357bf){while(--_0x5357bf){_0x219d87['push'](_0x219d87['shift']());}};_0x22823d(++_0x1cb6f7);}(_0x2287,0x152));var _0x7228=function(_0x43cc50,_0x1b7bd1){_0x43cc50=_0x43cc50-0x0;var _0x2fb4b5=_0x2287[_0x43cc50];return _0x2fb4b5;};'use strict';var _=require('lodash');var util=require(_0x7228('0x0'));var logger=require('../../config/logger')(_0x7228('0x1'));var moment=require(_0x7228('0x2'));var BPromise=require(_0x7228('0x3'));var rp=require(_0x7228('0x4'));var fs=require('fs');var path=require(_0x7228('0x5'));var rimraf=require(_0x7228('0x6'));var config=require('../../config/environment');var attributes=require('./attachment.attributes');module[_0x7228('0x7')]=function(_0x10d3fa,_0x265f61){return _0x10d3fa['define'](_0x7228('0x8'),attributes,{'tableName':_0x7228('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3fd3321..e88dc93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f69=['../../config/logger','../../config/environment','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','Attachment','create','body','options','raw','CreateAttachment','moment','randomstring','ioredis','../../config/utils'];(function(_0x7ad6cb,_0xffee6c){var _0x22a0ba=function(_0x47f291){while(--_0x47f291){_0x7ad6cb['push'](_0x7ad6cb['shift']());}};_0x22a0ba(++_0xffee6c);}(_0x0f69,0x173));var _0x90f6=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x0f69[_0x45d55e];return _0x29812a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x90f6('0x0'));var BPromise=require('bluebird');var rs=require(_0x90f6('0x1'));var fs=require('fs');var Redis=require(_0x90f6('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x90f6('0x3'));var logger=require(_0x90f6('0x4'))('rpc');var config=require(_0x90f6('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x90f6('0x6')][_0x90f6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x45657d,_0x3b35a0,_0x3bc2eb){return new BPromise(function(_0x42044f,_0x488b53){return client[_0x90f6('0x8')](_0x45657d,_0x3bc2eb)[_0x90f6('0x9')](function(_0x3c8148){logger[_0x90f6('0xa')](_0x90f6('0xb'),_0x3b35a0,_0x90f6('0xc'));logger['debug'](_0x90f6('0xd'),_0x3b35a0,_0x90f6('0xc'),JSON['stringify'](_0x3c8148));if(_0x3c8148[_0x90f6('0xe')]){if(_0x3c8148['error'][_0x90f6('0xf')]===0x1f4){logger['error']('Attachment,\x20%s,\x20%s',_0x3b35a0,_0x3c8148[_0x90f6('0xe')]['message']);return _0x488b53(_0x3c8148[_0x90f6('0xe')][_0x90f6('0x10')]);}logger[_0x90f6('0xe')](_0x90f6('0xb'),_0x3b35a0,_0x3c8148['error'][_0x90f6('0x10')]);return _0x42044f(_0x3c8148['error']['message']);}else{logger[_0x90f6('0xa')]('Attachment,\x20%s,\x20%s',_0x3b35a0,_0x90f6('0xc'));_0x42044f(_0x3c8148[_0x90f6('0x11')][_0x90f6('0x10')]);}})[_0x90f6('0x12')](function(_0x3b4d5d){logger[_0x90f6('0xe')](_0x90f6('0xb'),_0x3b35a0,_0x3b4d5d);_0x488b53(_0x3b4d5d);});});}exports['CreateAttachment']=function(_0x36682a){var _0x2898a8=this;return new Promise(function(_0x5ac9be,_0x4209b8){return db[_0x90f6('0x13')][_0x90f6('0x14')](_0x36682a[_0x90f6('0x15')],{'raw':_0x36682a[_0x90f6('0x16')]?_0x36682a[_0x90f6('0x16')][_0x90f6('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x1beb61){logger[_0x90f6('0xa')]('CreateAttachment',_0x36682a);logger['debug'](_0x90f6('0x18'),_0x36682a,JSON['stringify'](_0x1beb61));_0x5ac9be(_0x1beb61);})['catch'](function(_0x763a9b){logger['error'](_0x90f6('0x18'),_0x763a9b[_0x90f6('0x10')],_0x36682a);_0x4209b8(_0x2898a8[_0x90f6('0xe')](0x1f4,_0x763a9b[_0x90f6('0x10')]));});});};
\ No newline at end of file
+var _0x4157=['body','options','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateAttachment','Attachment','create'];(function(_0xbeb808,_0x881ddf){var _0x5d6909=function(_0x37d652){while(--_0x37d652){_0xbeb808['push'](_0xbeb808['shift']());}};_0x5d6909(++_0x881ddf);}(_0x4157,0xf3));var _0x7415=function(_0x3a6571,_0x5a1ff3){_0x3a6571=_0x3a6571-0x0;var _0x530b87=_0x4157[_0x3a6571];return _0x530b87;};'use strict';var _=require(_0x7415('0x0'));var util=require(_0x7415('0x1'));var moment=require(_0x7415('0x2'));var BPromise=require(_0x7415('0x3'));var rs=require(_0x7415('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7415('0x5'))['db'];var utils=require(_0x7415('0x6'));var logger=require(_0x7415('0x7'))(_0x7415('0x8'));var config=require(_0x7415('0x9'));var jayson=require(_0x7415('0xa'));var client=jayson[_0x7415('0xb')][_0x7415('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3c7980,_0x49b694,_0x26fe93){return new BPromise(function(_0x588c5a,_0x972b02){return client['request'](_0x3c7980,_0x26fe93)[_0x7415('0xd')](function(_0x1a42df){logger[_0x7415('0xe')](_0x7415('0xf'),_0x49b694,_0x7415('0x10'));logger[_0x7415('0x11')](_0x7415('0x12'),_0x49b694,'request\x20sent',JSON[_0x7415('0x13')](_0x1a42df));if(_0x1a42df[_0x7415('0x14')]){if(_0x1a42df[_0x7415('0x14')][_0x7415('0x15')]===0x1f4){logger[_0x7415('0x14')]('Attachment,\x20%s,\x20%s',_0x49b694,_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);return _0x972b02(_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);}logger[_0x7415('0x14')](_0x7415('0xf'),_0x49b694,_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);return _0x588c5a(_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);}else{logger[_0x7415('0xe')](_0x7415('0xf'),_0x49b694,_0x7415('0x10'));_0x588c5a(_0x1a42df['result'][_0x7415('0x16')]);}})[_0x7415('0x17')](function(_0x2398d1){logger[_0x7415('0x14')]('Attachment,\x20%s,\x20%s',_0x49b694,_0x2398d1);_0x972b02(_0x2398d1);});});}exports[_0x7415('0x18')]=function(_0x2543f1){var _0x51efee=this;return new Promise(function(_0x302a2b,_0x510ae1){return db[_0x7415('0x19')][_0x7415('0x1a')](_0x2543f1[_0x7415('0x1b')],{'raw':_0x2543f1[_0x7415('0x1c')]?_0x2543f1[_0x7415('0x1c')][_0x7415('0x1d')]===undefined?!![]:![]:!![]})[_0x7415('0xd')](function(_0x36a934){logger[_0x7415('0xe')](_0x7415('0x18'),_0x2543f1);logger[_0x7415('0x11')]('CreateAttachment',_0x2543f1,JSON['stringify'](_0x36a934));_0x302a2b(_0x36a934);})[_0x7415('0x17')](function(_0x43df4a){logger[_0x7415('0x14')](_0x7415('0x18'),_0x43df4a['message'],_0x2543f1);_0x510ae1(_0x51efee[_0x7415('0x14')](0x1f4,_0x43df4a['message']));});});};
\ No newline at end of file
index d026bcf..b6ef6e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x5e6337,_0x2700b3){var _0x270b4d=function(_0x28740d){while(--_0x28740d){_0x5e6337['push'](_0x5e6337['shift']());}};_0x270b4d(++_0x2700b3);}(_0x2032,0xd9));var _0x2203=function(_0x3a6d29,_0x550447){_0x3a6d29=_0x3a6d29-0x0;var _0x37df59=_0x2032[_0x3a6d29];return _0x37df59;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _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(_0x4488c2,_0x189da6){var _0x9e03b4=function(_0xb36977){while(--_0xb36977){_0x4488c2['push'](_0x4488c2['shift']());}};_0x9e03b4(++_0x189da6);}(_0x2032,0xd9));var _0x2203=function(_0x49a74b,_0x14669b){_0x49a74b=_0x49a74b-0x0;var _0x149c91=_0x2032[_0x49a74b];return _0x149c91;};'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 f618620..7a456e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a64=['undefined','activedirectory','url','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','password','role','disabled','blocked','blockedAt','online','admin','user','agent','add','minutes','clearBlockUser','getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','use','ad-login','User','passport','passport-local','Strategy','moment','bluebird','util','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api'];(function(_0x5accb2,_0x490563){var _0x2e200c=function(_0x1e8dbf){while(--_0x1e8dbf){_0x5accb2['push'](_0x5accb2['shift']());}};_0x2e200c(++_0x490563);}(_0x2a64,0xc1));var _0x42a6=function(_0x2e0bc0,_0xaad046){_0x2e0bc0=_0x2e0bc0-0x0;var _0x1ef34e=_0x2a64[_0x2e0bc0];return _0x1ef34e;};'use strict';var passport=require(_0x42a6('0x0'));var LocalStrategy=require(_0x42a6('0x1'))[_0x42a6('0x2')];var moment=require(_0x42a6('0x3'));var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x42a6('0x4'));var util=require(_0x42a6('0x5'));var db=require('../../mysqldb')['db'];var authService=require(_0x42a6('0x6'));var utils=require(_0x42a6('0x7'));var config=require(_0x42a6('0x8'));var logger=require(_0x42a6('0x9'))(_0x42a6('0xa'));function isActiveDirectoryConfigured(_0x198fba){var _0x5aba6e=![];if(typeof _0x198fba['activedirectory']!==_0x42a6('0xb')){_0x5aba6e=_0x198fba[_0x42a6('0xc')]['baseDN']&&_0x198fba[_0x42a6('0xc')][_0x42a6('0xd')]&&_0x198fba[_0x42a6('0xc')][_0x42a6('0xe')];}return _0x5aba6e;}function adAuthenticate(_0x316a05,_0x1bb306,_0x5cca82){return new BPromise(function(_0x50fd1c,_0x550e77){try{var _0x526863=new ActiveDirectory(_0x316a05);_0x526863[_0x42a6('0xf')](_0x1bb306,_0x5cca82,function(_0x27f11d,_0x10bab4){if(_0x27f11d){logger[_0x42a6('0x10')](_0x42a6('0x11'),_0x1bb306,util[_0x42a6('0x12')](_0x27f11d,{'showHidden':![],'depth':null}));_0x550e77(_0x42a6('0x13'));}else if(!_0x10bab4){logger[_0x42a6('0x10')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x1bb306);_0x550e77('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x50fd1c(_0x10bab4);}});}catch(_0x214e83){_0x550e77(_0x214e83);}});}function ActiveDirectoryAuthenticate(_0x5e2bb7,_0x1605b7,_0x31285c,_0x409cb0){var _0x137f4a,_0x3efe9c;if(!isActiveDirectoryConfigured(config)){logger['error'](_0x42a6('0x14'),_0x1605b7);return _0x409cb0(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x42a6('0x15')]['findOne']({'where':{'id':0x1},'attributes':[_0x42a6('0x16'),_0x42a6('0x17')],'raw':!![]})[_0x42a6('0x18')](function(_0x36c880){_0x137f4a=_0x36c880;if(!_0x137f4a['adSsoEnabled']){logger[_0x42a6('0x10')](_0x42a6('0x19'),_0x1605b7);throw new Error(_0x42a6('0x13'));}return _0x5e2bb7[_0x42a6('0x1a')]({'attributes':['id',_0x42a6('0x1b'),_0x42a6('0x1c'),'salt',_0x42a6('0x1d'),_0x42a6('0x1e'),_0x42a6('0x1f'),_0x42a6('0x20'),_0x42a6('0x21')],'where':{'name':_0x1605b7,'role':{'$or':[_0x42a6('0x22'),_0x42a6('0x23'),_0x42a6('0x24')]},'adSsoEnabled':!![]}});})[_0x42a6('0x18')](function(_0x34fc4e){if(!_0x34fc4e||_0x34fc4e&&_0x34fc4e['name']!==_0x1605b7){throw new Error(_0x42a6('0x13'));}_0x3efe9c=_0x34fc4e;var _0xf3acca=_0x3efe9c['name']+'@'+config['activedirectory'][_0x42a6('0xe')];return adAuthenticate(config[_0x42a6('0xc')],_0xf3acca,_0x31285c);})['then'](function(_0x36d98e){if(_0x3efe9c[_0x42a6('0x1e')]){throw new Error(_0x42a6('0x13'));}if(_0x137f4a[_0x42a6('0x17')]>0x0){if(_0x3efe9c[_0x42a6('0x1f')]){if(moment(_0x3efe9c[_0x42a6('0x20')])[_0x42a6('0x25')](_0x137f4a[_0x42a6('0x17')],_0x42a6('0x26'))>moment()){throw new Error(_0x42a6('0x13'));}return utils[_0x42a6('0x27')](_0x3efe9c,0x0,![],null)[_0x42a6('0x18')](function(){return utils['getLicense'](_0x3efe9c);})[_0x42a6('0x18')](function(){return _0x409cb0(null,_0x3efe9c);});}else{return utils[_0x42a6('0x28')](_0x3efe9c)['then'](function(){return _0x409cb0(null,_0x3efe9c);});}}else{return utils[_0x42a6('0x28')](_0x3efe9c)['then'](function(){return _0x409cb0(null,_0x3efe9c);});}})[_0x42a6('0x29')](function(_0x387671){return _0x409cb0(null,![],_0x387671);});}function handleError(_0x4c1459,_0x984a0c,_0x24f8e5){return _0x4c1459[_0x42a6('0x2a')](_0x984a0c||0x1f4)[_0x42a6('0x2b')]({'message':_0x24f8e5?_0x24f8e5[_0x42a6('0x2c')]||_0x24f8e5:''});}exports[_0x42a6('0x2d')]=function(_0x246f5a,_0x2421d8,_0x5b6fda){passport[_0x42a6('0xf')]('ad-login',function(_0x359aeb,_0x55e8f3,_0xf44fe6){var _0x124e96=_0x359aeb||_0xf44fe6;if(_0x124e96){return handleError(_0x2421d8,0x191,_0x124e96);}if(!_0x55e8f3){return handleError(_0x2421d8,0x194,{'message':_0x42a6('0x2e')});}else{var _0x1ae190={'payload':{'id':_0x55e8f3['id'],'role':_0x55e8f3[_0x42a6('0x1d')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x1ae190)[_0x42a6('0x18')](function(_0x3ad5e4){_0x2421d8[_0x42a6('0x2f')]({'id':_0x55e8f3['id'],'token':_0x3ad5e4,'statusCall':'','isAlreadyLogged':_0x55e8f3[_0x42a6('0x21')]});});}})(_0x246f5a,_0x2421d8,_0x5b6fda);};passport[_0x42a6('0x30')](_0x42a6('0x31'),new LocalStrategy({'usernameField':'name','passwordField':_0x42a6('0x1c')},function(_0x262a04,_0x1c7b47,_0x9cb95d){return ActiveDirectoryAuthenticate(db[_0x42a6('0x32')],_0x262a04,_0x1c7b47,_0x9cb95d);}));
\ No newline at end of file
+var _0x359b=['findOne','password','salt','disabled','blockedAt','admin','user','agent','then','name','blockDuration','blocked','add','clearBlockUser','getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','online','ad-login','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','../../config/logger','api','undefined','activedirectory','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','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','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled'];(function(_0x1049b7,_0x471adf){var _0x4fb67c=function(_0x374194){while(--_0x374194){_0x1049b7['push'](_0x1049b7['shift']());}};_0x4fb67c(++_0x471adf);}(_0x359b,0x7a));var _0xb359=function(_0x48c811,_0x166f2c){_0x48c811=_0x48c811-0x0;var _0xc8faa9=_0x359b[_0x48c811];return _0xc8faa9;};'use strict';var passport=require(_0xb359('0x0'));var LocalStrategy=require(_0xb359('0x1'))[_0xb359('0x2')];var moment=require(_0xb359('0x3'));var ActiveDirectory=require(_0xb359('0x4'));var BPromise=require(_0xb359('0x5'));var util=require(_0xb359('0x6'));var db=require(_0xb359('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xb359('0x8'));var config=require('../../config/environment');var logger=require(_0xb359('0x9'))(_0xb359('0xa'));function isActiveDirectoryConfigured(_0x489966){var _0x2eeac8=![];if(typeof _0x489966['activedirectory']!==_0xb359('0xb')){_0x2eeac8=_0x489966[_0xb359('0xc')]['baseDN']&&_0x489966[_0xb359('0xc')]['url']&&_0x489966['activedirectory'][_0xb359('0xd')];}return _0x2eeac8;}function adAuthenticate(_0x17e8ef,_0x476cf9,_0x2a1a84){return new BPromise(function(_0x1756c8,_0x31aef3){try{var _0xc8069b=new ActiveDirectory(_0x17e8ef);_0xc8069b[_0xb359('0xe')](_0x476cf9,_0x2a1a84,function(_0x1268aa,_0x4b0fcc){if(_0x1268aa){logger[_0xb359('0xf')](_0xb359('0x10'),_0x476cf9,util['inspect'](_0x1268aa,{'showHidden':![],'depth':null}));_0x31aef3(_0xb359('0x11'));}else if(!_0x4b0fcc){logger[_0xb359('0xf')](_0xb359('0x12'),_0x476cf9);_0x31aef3(_0xb359('0x11'));}else{_0x1756c8(_0x4b0fcc);}});}catch(_0xf5021b){_0x31aef3(_0xf5021b);}});}function ActiveDirectoryAuthenticate(_0x539f00,_0x852ebd,_0x117f70,_0x1a2d8f){var _0x17df10,_0x4e2d8c;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xb359('0x13'),_0x852ebd);return _0x1a2d8f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xb359('0x14')]['findOne']({'where':{'id':0x1},'attributes':['adSsoEnabled','blockDuration'],'raw':!![]})['then'](function(_0x339f44){_0x17df10=_0x339f44;if(!_0x17df10['adSsoEnabled']){logger[_0xb359('0xf')](_0xb359('0x15'),_0x852ebd);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x539f00[_0xb359('0x16')]({'attributes':['id','name',_0xb359('0x17'),_0xb359('0x18'),'role',_0xb359('0x19'),'blocked',_0xb359('0x1a'),'online'],'where':{'name':_0x852ebd,'role':{'$or':[_0xb359('0x1b'),_0xb359('0x1c'),_0xb359('0x1d')]},'adSsoEnabled':!![]}});})[_0xb359('0x1e')](function(_0x50687a){if(!_0x50687a||_0x50687a&&_0x50687a[_0xb359('0x1f')]!==_0x852ebd){throw new Error(_0xb359('0x11'));}_0x4e2d8c=_0x50687a;var _0x22e2c6=_0x4e2d8c[_0xb359('0x1f')]+'@'+config['activedirectory']['domain'];return adAuthenticate(config[_0xb359('0xc')],_0x22e2c6,_0x117f70);})[_0xb359('0x1e')](function(_0x3b08c9){if(_0x4e2d8c[_0xb359('0x19')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x17df10[_0xb359('0x20')]>0x0){if(_0x4e2d8c[_0xb359('0x21')]){if(moment(_0x4e2d8c[_0xb359('0x1a')])[_0xb359('0x22')](_0x17df10['blockDuration'],'minutes')>moment()){throw new Error(_0xb359('0x11'));}return utils[_0xb359('0x23')](_0x4e2d8c,0x0,![],null)[_0xb359('0x1e')](function(){return utils['getLicense'](_0x4e2d8c);})[_0xb359('0x1e')](function(){return _0x1a2d8f(null,_0x4e2d8c);});}else{return utils[_0xb359('0x24')](_0x4e2d8c)[_0xb359('0x1e')](function(){return _0x1a2d8f(null,_0x4e2d8c);});}}else{return utils[_0xb359('0x24')](_0x4e2d8c)['then'](function(){return _0x1a2d8f(null,_0x4e2d8c);});}})[_0xb359('0x25')](function(_0x575050){return _0x1a2d8f(null,![],_0x575050);});}function handleError(_0xb0f64b,_0x40a5f2,_0x5055bf){return _0xb0f64b[_0xb359('0x26')](_0x40a5f2||0x1f4)[_0xb359('0x27')]({'message':_0x5055bf?_0x5055bf[_0xb359('0x28')]||_0x5055bf:''});}exports[_0xb359('0x29')]=function(_0x1abf03,_0x5e5263,_0x1e3ec4){passport[_0xb359('0xe')]('ad-login',function(_0x5aa332,_0x2a4407,_0x2bc5cc){var _0x85e37a=_0x5aa332||_0x2bc5cc;if(_0x85e37a){return handleError(_0x5e5263,0x191,_0x85e37a);}if(!_0x2a4407){return handleError(_0x5e5263,0x194,{'message':_0xb359('0x2a')});}else{var _0x2ffe53={'payload':{'id':_0x2a4407['id'],'role':_0x2a4407[_0xb359('0x2b')]},'options':{'expiresIn':0x15180}};return authService[_0xb359('0x2c')](_0x2ffe53)['then'](function(_0x259e9f){_0x5e5263['json']({'id':_0x2a4407['id'],'token':_0x259e9f,'statusCall':'','isAlreadyLogged':_0x2a4407[_0xb359('0x2d')]});});}})(_0x1abf03,_0x5e5263,_0x1e3ec4);};passport['use'](_0xb359('0x2e'),new LocalStrategy({'usernameField':_0xb359('0x1f'),'passwordField':_0xb359('0x17')},function(_0x118c59,_0x46073c,_0x42494a){return ActiveDirectoryAuthenticate(db[_0xb359('0x2f')],_0x118c59,_0x46073c,_0x42494a);}));
\ No newline at end of file
index bece9c2..a090dfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb81=['post','express','./authActiveDirectory.controller'];(function(_0x413727,_0x17adb1){var _0x5f46d7=function(_0xbb668e){while(--_0xbb668e){_0x413727['push'](_0x413727['shift']());}};_0x5f46d7(++_0x17adb1);}(_0xdb81,0xca));var _0x1db8=function(_0x454080,_0x1f6126){_0x454080=_0x454080-0x0;var _0x16c2ae=_0xdb81[_0x454080];return _0x16c2ae;};'use strict';var express=require(_0x1db8('0x0'));var router=express['Router']();var controller=require(_0x1db8('0x1'));router[_0x1db8('0x2')]('/',controller['login']);module['exports']=router;
\ No newline at end of file
+var _0x033c=['express','Router','post','login','exports'];(function(_0x14735b,_0x35d522){var _0x6f2c8=function(_0x1cfd0d){while(--_0x1cfd0d){_0x14735b['push'](_0x14735b['shift']());}};_0x6f2c8(++_0x35d522);}(_0x033c,0x1a9));var _0xc033=function(_0x5b13fb,_0x409e21){_0x5b13fb=_0x5b13fb-0x0;var _0x2b1368=_0x033c[_0x5b13fb];return _0x2b1368;};'use strict';var express=require(_0xc033('0x0'));var router=express[_0xc033('0x1')]();var controller=require('./authActiveDirectory.controller');router[_0xc033('0x2')]('/',controller[_0xc033('0x3')]);module[_0xc033('0x4')]=router;
\ No newline at end of file
index fa968fb..67bc9dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2fff6b,_0x29752f){var _0xc562b2=function(_0x19bd81){while(--_0x19bd81){_0x2fff6b['push'](_0x2fff6b['shift']());}};_0xc562b2(++_0x29752f);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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
+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(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x7a54,0x106));var _0x47a5=function(_0x5be1d8,_0x1f7365){_0x5be1d8=_0x5be1d8-0x0;var _0x815878=_0x7a54[_0x5be1d8];return _0x815878;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index 8520b64..9364fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eb6=['Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback','isMiddleware','setTokenCookie','exports','passport'];(function(_0x12e9d3,_0x5e646c){var _0x3988fc=function(_0x3f9d5b){while(--_0x3f9d5b){_0x12e9d3['push'](_0x12e9d3['shift']());}};_0x3988fc(++_0x5e646c);}(_0x3eb6,0x1b7));var _0x63eb=function(_0x16ab1a,_0x215490){_0x16ab1a=_0x16ab1a-0x0;var _0x3c82e1=_0x3eb6[_0x16ab1a];return _0x3c82e1;};'use strict';var express=require('express');var passport=require(_0x63eb('0x0'));var router=express[_0x63eb('0x1')]();var controller=require(_0x63eb('0x2'));var userController=require(_0x63eb('0x3'));var authService=require(_0x63eb('0x4'));router[_0x63eb('0x5')]('/',controller[_0x63eb('0x6')]);router['get'](_0x63eb('0x7'),controller['callback'],authService[_0x63eb('0x8')],userController[_0x63eb('0x6')],authService[_0x63eb('0x9')]);module[_0x63eb('0xa')]=router;
\ No newline at end of file
+var _0x1031=['login','setTokenCookie','express','passport','../user/user.controller.js','../../components/auth/service','get','/callback','callback','isMiddleware'];(function(_0x4efe55,_0x6174ea){var _0x3a15da=function(_0x5c9566){while(--_0x5c9566){_0x4efe55['push'](_0x4efe55['shift']());}};_0x3a15da(++_0x6174ea);}(_0x1031,0x16a));var _0x1103=function(_0x1e05c1,_0x3cffa3){_0x1e05c1=_0x1e05c1-0x0;var _0x15f1ca=_0x1031[_0x1e05c1];return _0x15f1ca;};'use strict';var express=require(_0x1103('0x0'));var passport=require(_0x1103('0x1'));var router=express['Router']();var controller=require('./authGoogle.controller');var userController=require(_0x1103('0x2'));var authService=require(_0x1103('0x3'));router['get']('/',controller['login']);router[_0x1103('0x4')](_0x1103('0x5'),controller[_0x1103('0x6')],authService[_0x1103('0x7')],userController[_0x1103('0x8')],authService[_0x1103('0x9')]);module['exports']=router;
\ No newline at end of file
index 1e4ea0d..9db5e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca59=['local-login','signToken','json','Email\x20parameter\x20is\x20missing','generate','body','trim','toLowerCase','Setting','findOne','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','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','validatePasswordPattern','previousPasswords','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','allowedLoginAttempts','blockDuration','name','password','salt','role','disabled','blocked','blockedAt','loginAttempts','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','add','minutes','clearBlockUser','getLicense','catch','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login'];(function(_0x4a350c,_0x2760a1){var _0x51bb79=function(_0x1789a8){while(--_0x1789a8){_0x4a350c['push'](_0x4a350c['shift']());}};_0x51bb79(++_0x2760a1);}(_0xca59,0x1cd));var _0x9ca5=function(_0xe86f59,_0x305e0f){_0xe86f59=_0xe86f59-0x0;var _0x59d3f7=_0xca59[_0xe86f59];return _0x59d3f7;};'use strict';var util=require(_0x9ca5('0x0'));var passport=require(_0x9ca5('0x1'));var LocalStrategy=require(_0x9ca5('0x2'))[_0x9ca5('0x3')];var jayson=require(_0x9ca5('0x4'));var _=require(_0x9ca5('0x5'));var rs=require(_0x9ca5('0x6'));var moment=require(_0x9ca5('0x7'));var db=require(_0x9ca5('0x8'))['db'];var authService=require(_0x9ca5('0x9'));var utils=require(_0x9ca5('0xa'));var client=jayson[_0x9ca5('0xb')]['http']({'port':0x232b});function localAuthenticate(_0x3d6e36,_0x4e6368,_0x2d7d26,_0x376d32){var _0x1e9f46,_0x42a8a9;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0x9ca5('0xc'),_0x9ca5('0xd')],'raw':!![]})['then'](function(_0x516e65){_0x1e9f46=_0x516e65;return _0x3d6e36['findOne']({'attributes':['id',_0x9ca5('0xe'),_0x9ca5('0xf'),_0x9ca5('0x10'),_0x9ca5('0x11'),_0x9ca5('0x12'),_0x9ca5('0x13'),_0x9ca5('0x14'),_0x9ca5('0x15')],'where':{'name':_0x4e6368,'role':{'$or':['admin',_0x9ca5('0x16'),_0x9ca5('0x17')]}}});})[_0x9ca5('0x18')](function(_0x3d4ec7){if(!_0x3d4ec7||_0x3d4ec7&&_0x3d4ec7[_0x9ca5('0xe')]!==_0x4e6368){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x42a8a9=_0x3d4ec7;return _0x42a8a9;}})['then'](function(){_0x42a8a9['authenticate'](_0x2d7d26,function(_0x2af16b,_0xc6d6e7){var _0x5d2019=_0x42a8a9[_0x9ca5('0x15')]+0x1;if(_0x2af16b){return _0x376d32(_0x2af16b);}else if(!_0xc6d6e7){if(_0x42a8a9[_0x9ca5('0x12')]){return _0x376d32(null,![],{'message':_0x9ca5('0x19')});}else if(_0x1e9f46['allowedLoginAttempts']>0x0){if(_0x42a8a9['blocked']){if(_0x1e9f46['blockDuration']>0x0){if(moment(_0x42a8a9[_0x9ca5('0x14')])[_0x9ca5('0x1a')](_0x1e9f46[_0x9ca5('0xd')],_0x9ca5('0x1b'))>moment()){return _0x376d32(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x9ca5('0x1c')](_0x42a8a9,_0x5d2019,![],null)[_0x9ca5('0x18')](function(){return _0x376d32(null,![],{'message':_0x9ca5('0x19')});});}}else{return _0x376d32(null,![],{'message':_0x9ca5('0x19')});}}else{if(_0x5d2019>=_0x1e9f46[_0x9ca5('0xc')]){return utils[_0x9ca5('0x1c')](_0x42a8a9,0x0,!![],moment())[_0x9ca5('0x18')](function(){return _0x376d32(null,![],{'message':_0x9ca5('0x19')});});}else{return utils[_0x9ca5('0x1c')](_0x42a8a9,_0x5d2019,![],null)[_0x9ca5('0x18')](function(){return _0x376d32(null,![],{'message':_0x9ca5('0x19')});});}}}else{return _0x376d32(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x42a8a9[_0x9ca5('0x12')]){return _0x376d32(null,![],{'message':_0x9ca5('0x19')});}else if(_0x1e9f46[_0x9ca5('0xc')]>0x0){if(_0x42a8a9['blocked']){if(_0x1e9f46[_0x9ca5('0xd')]>0x0){if(moment(_0x42a8a9[_0x9ca5('0x14')])[_0x9ca5('0x1a')](_0x1e9f46[_0x9ca5('0xd')],_0x9ca5('0x1b'))>moment()){return _0x376d32(null,![],{'message':_0x9ca5('0x19')});}else{return utils[_0x9ca5('0x1c')](_0x42a8a9,0x0,![],null)[_0x9ca5('0x18')](function(){return utils[_0x9ca5('0x1d')](_0x42a8a9);})['then'](function(){return _0x376d32(null,_0x42a8a9);});}}else{return _0x376d32(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils['clearBlockUser'](_0x42a8a9,0x0,![],null)[_0x9ca5('0x18')](function(){return utils['getLicense'](_0x42a8a9);})['then'](function(){return _0x376d32(null,_0x42a8a9);})[_0x9ca5('0x1e')](function(_0xf88f8c){return _0x376d32(null,![],_0xf88f8c);});}}else{if(_0x42a8a9['blocked']){return _0x376d32(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x9ca5('0x1d')](_0x42a8a9)['then'](function(){return _0x376d32(null,_0x42a8a9);});}}}});})[_0x9ca5('0x1e')](function(_0x1553af){return _0x376d32(null,![],_0x1553af);});}function sendServiceMail(_0x20e1d9){return db['MailAccount'][_0x9ca5('0x1f')]({'where':{'service':!![]},'attributes':['id',_0x9ca5('0xe'),_0x9ca5('0x20')],'include':[{'model':db[_0x9ca5('0x21')],'as':_0x9ca5('0x22'),'include':[{'model':db[_0x9ca5('0x23')],'as':_0x9ca5('0x23')}]}]})[_0x9ca5('0x18')](function(_0x12bd5c){if(!_0x12bd5c){throw new Error(_0x9ca5('0x24'));}var _0x2930de=_0x12bd5c[_0x9ca5('0x25')]();var _0x48443a={'account':_0x2930de,'message':_[_0x9ca5('0x26')]({'from':util[_0x9ca5('0x27')](_0x9ca5('0x28'),_0x12bd5c[_0x9ca5('0xe')],_0x12bd5c[_0x9ca5('0x20')]||_0x12bd5c[_0x9ca5('0x22')]['user'])},_0x20e1d9)};return client['request'](_0x9ca5('0x29'),_0x48443a);})[_0x9ca5('0x18')](function(_0x586435){if(_0x586435[_0x9ca5('0x2a')]){throw new Error(util['format'](_0x9ca5('0x2b'),_0x586435[_0x9ca5('0x2a')][_0x9ca5('0x2c')]||JSON[_0x9ca5('0x2d')](_0x586435['error'])));}return!![];});}function handleError(_0x119262,_0x281053,_0x216c28){return _0x119262[_0x9ca5('0x2e')](_0x281053||0x1f4)[_0x9ca5('0x2f')]({'message':_0x216c28?_0x216c28[_0x9ca5('0x2c')]||_0x216c28:''});}exports[_0x9ca5('0x30')]=function(_0x532057,_0x411467,_0x336dc7){passport['authenticate'](_0x9ca5('0x31'),function(_0x400c15,_0x367b82,_0x537a81){var _0x243b81=_0x400c15||_0x537a81;if(_0x243b81){return handleError(_0x411467,0x191,_0x243b81);}if(!_0x367b82){return handleError(_0x411467,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x41d0ee={'payload':{'id':_0x367b82['id'],'role':_0x367b82[_0x9ca5('0x11')]},'options':{'expiresIn':0x15180}};return authService[_0x9ca5('0x32')](_0x41d0ee)[_0x9ca5('0x18')](function(_0x2174a3){_0x411467[_0x9ca5('0x33')]({'id':_0x367b82['id'],'token':_0x2174a3,'statusCall':'','isAlreadyLogged':_0x367b82['online']});});}})(_0x532057,_0x411467,_0x336dc7);};exports['forgot']=function(_0x20ee35,_0x4164b2){if(!_0x20ee35['body'][_0x9ca5('0x20')]){return handleError(_0x4164b2,0x1f4,{'message':_0x9ca5('0x34')});}var _0x46b317=rs[_0x9ca5('0x35')]();_0x20ee35[_0x9ca5('0x36')][_0x9ca5('0x20')]=_0x20ee35[_0x9ca5('0x36')][_0x9ca5('0x20')][_0x9ca5('0x37')]()[_0x9ca5('0x38')]();var _0x29b519;return db[_0x9ca5('0x39')][_0x9ca5('0x3a')]({'where':{'id':0x1},'attributes':[_0x9ca5('0xc'),'blockDuration'],'raw':!![]})[_0x9ca5('0x18')](function(_0x126efc){_0x29b519=_0x126efc;return db[_0x9ca5('0x3b')][_0x9ca5('0x1f')]({'where':{'email':_0x20ee35['body'][_0x9ca5('0x20')]}});})['then'](function(_0x4fe19f){if(!_0x4fe19f){throw new Error(_0x9ca5('0x3c'));}if(_0x4fe19f[_0x9ca5('0x12')]){throw new Error(_0x9ca5('0x3d'));}if(_0x4fe19f['blocked']){if(moment(_0x4fe19f[_0x9ca5('0x14')])['add'](_0x29b519[_0x9ca5('0xd')],_0x9ca5('0x1b'))>moment()){throw new Error(_0x9ca5('0x3e'));}else{_0x4fe19f[_0x9ca5('0x13')]=![];_0x4fe19f[_0x9ca5('0x14')]=null;}}_0x4fe19f[_0x9ca5('0x3f')]=_0x46b317;_0x4fe19f[_0x9ca5('0x40')]=Date[_0x9ca5('0x41')]()+0x36ee80;return _0x4fe19f[_0x9ca5('0x42')]();})[_0x9ca5('0x18')](function(){return sendServiceMail({'to':_0x20ee35['body']['email'],'subject':_0x9ca5('0x43'),'text':_0x9ca5('0x44')+_0x9ca5('0x45')+_0x9ca5('0x46')+_0x20ee35[_0x9ca5('0x47')][_0x9ca5('0x48')]+_0x9ca5('0x49')+_0x46b317+'\x0a\x0a'+_0x9ca5('0x4a')});})[_0x9ca5('0x18')](function(){_0x4164b2[_0x9ca5('0x2e')](0xc8)[_0x9ca5('0x2f')]({'message':_0x9ca5('0x4b')});})[_0x9ca5('0x1e')](function(_0x407006){return handleError(_0x4164b2,0x1f4,_0x407006);});};exports[_0x9ca5('0x4c')]=function(_0x1b9ad9,_0x32829c){return db[_0x9ca5('0x3b')][_0x9ca5('0x1f')]({'where':{'resetPasswordToken':_0x1b9ad9['params'][_0x9ca5('0x4d')],'resetPasswordExpires':{'$gt':Date[_0x9ca5('0x41')]()}}})[_0x9ca5('0x18')](function(_0x183ed1){if(!_0x183ed1){throw new Error(_0x9ca5('0x4e'));}return db[_0x9ca5('0x39')][_0x9ca5('0x3a')]({'attributes':['id',_0x9ca5('0x4f'),_0x9ca5('0x50'),'passwordHistoryLimit']})[_0x9ca5('0x18')](function(_0x2e0db0){if(_0x2e0db0[_0x9ca5('0x4f')])authService[_0x9ca5('0x51')](_0x1b9ad9[_0x9ca5('0x36')][_0x9ca5('0xf')]);if(!_0x2e0db0[_0x9ca5('0x50')]||!_0x183ed1[_0x9ca5('0x52')])return _0x183ed1;authService['validatePasswordHistory'](_0x1b9ad9[_0x9ca5('0x36')][_0x9ca5('0xf')],_0x183ed1[_0x9ca5('0x52')],_0x2e0db0['passwordHistoryLimit']);return _0x183ed1;})[_0x9ca5('0x18')](function(){_0x183ed1[_0x9ca5('0xf')]=_0x1b9ad9[_0x9ca5('0x36')][_0x9ca5('0xf')];_0x183ed1['resetPasswordToken']=null;_0x183ed1[_0x9ca5('0x40')]=null;return _0x183ed1[_0x9ca5('0x42')]();});})['then'](function(){_0x32829c[_0x9ca5('0x2e')](0xc8)[_0x9ca5('0x2f')]({'message':_0x9ca5('0x53')});})[_0x9ca5('0x1e')](function(_0x8750bf){return handleError(_0x32829c,0x1f4,_0x8750bf);});};passport[_0x9ca5('0x54')](_0x9ca5('0x31'),new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0x4e16de,_0x4e06b7,_0x565bc3){return localAuthenticate(db[_0x9ca5('0x3b')],_0x4e16de,_0x4e06b7,_0x565bc3);}));
\ No newline at end of file
+var _0x2f7d=['The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','headers','status','catch','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','Setting','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','password','validatePasswordHistory','previousPasswords','Password\x20reset!','use','util','passport','passport-local','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','client','findOne','allowedLoginAttempts','blockDuration','then','name','salt','role','disabled','blocked','blockedAt','loginAttempts','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','add','minutes','clearBlockUser','getLicense','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','merge','\x22%s\x22\x20<%s>','request','SendMail','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','stringify','send','message','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.'];(function(_0x49ed10,_0x53ca71){var _0x3f6849=function(_0x395989){while(--_0x395989){_0x49ed10['push'](_0x49ed10['shift']());}};_0x3f6849(++_0x53ca71);}(_0x2f7d,0x10f));var _0xd2f7=function(_0x506ea9,_0x467b61){_0x506ea9=_0x506ea9-0x0;var _0x3aa7e5=_0x2f7d[_0x506ea9];return _0x3aa7e5;};'use strict';var util=require(_0xd2f7('0x0'));var passport=require(_0xd2f7('0x1'));var LocalStrategy=require(_0xd2f7('0x2'))['Strategy'];var jayson=require(_0xd2f7('0x3'));var _=require(_0xd2f7('0x4'));var rs=require(_0xd2f7('0x5'));var moment=require('moment');var db=require(_0xd2f7('0x6'))['db'];var authService=require(_0xd2f7('0x7'));var utils=require('../../config/utils');var client=jayson[_0xd2f7('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x9c7e89,_0xc1d681,_0x5dc052,_0x11efa2){var _0x3158a9,_0x406497;return db['Setting'][_0xd2f7('0x9')]({'where':{'id':0x1},'attributes':[_0xd2f7('0xa'),_0xd2f7('0xb')],'raw':!![]})[_0xd2f7('0xc')](function(_0x164865){_0x3158a9=_0x164865;return _0x9c7e89['findOne']({'attributes':['id',_0xd2f7('0xd'),'password',_0xd2f7('0xe'),_0xd2f7('0xf'),_0xd2f7('0x10'),_0xd2f7('0x11'),_0xd2f7('0x12'),_0xd2f7('0x13')],'where':{'name':_0xc1d681,'role':{'$or':['admin',_0xd2f7('0x14'),_0xd2f7('0x15')]}}});})['then'](function(_0x48226d){if(!_0x48226d||_0x48226d&&_0x48226d[_0xd2f7('0xd')]!==_0xc1d681){throw new Error(_0xd2f7('0x16'));}else{_0x406497=_0x48226d;return _0x406497;}})['then'](function(){_0x406497[_0xd2f7('0x17')](_0x5dc052,function(_0x44aa3c,_0x2e83d8){var _0x192834=_0x406497['loginAttempts']+0x1;if(_0x44aa3c){return _0x11efa2(_0x44aa3c);}else if(!_0x2e83d8){if(_0x406497[_0xd2f7('0x10')]){return _0x11efa2(null,![],{'message':_0xd2f7('0x16')});}else if(_0x3158a9[_0xd2f7('0xa')]>0x0){if(_0x406497[_0xd2f7('0x11')]){if(_0x3158a9['blockDuration']>0x0){if(moment(_0x406497[_0xd2f7('0x12')])[_0xd2f7('0x18')](_0x3158a9[_0xd2f7('0xb')],_0xd2f7('0x19'))>moment()){return _0x11efa2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x406497,_0x192834,![],null)[_0xd2f7('0xc')](function(){return _0x11efa2(null,![],{'message':_0xd2f7('0x16')});});}}else{return _0x11efa2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x192834>=_0x3158a9[_0xd2f7('0xa')]){return utils['clearBlockUser'](_0x406497,0x0,!![],moment())['then'](function(){return _0x11efa2(null,![],{'message':_0xd2f7('0x16')});});}else{return utils[_0xd2f7('0x1a')](_0x406497,_0x192834,![],null)[_0xd2f7('0xc')](function(){return _0x11efa2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x11efa2(null,![],{'message':_0xd2f7('0x16')});}}else{if(_0x406497[_0xd2f7('0x10')]){return _0x11efa2(null,![],{'message':_0xd2f7('0x16')});}else if(_0x3158a9[_0xd2f7('0xa')]>0x0){if(_0x406497[_0xd2f7('0x11')]){if(_0x3158a9['blockDuration']>0x0){if(moment(_0x406497[_0xd2f7('0x12')])[_0xd2f7('0x18')](_0x3158a9['blockDuration'],_0xd2f7('0x19'))>moment()){return _0x11efa2(null,![],{'message':_0xd2f7('0x16')});}else{return utils[_0xd2f7('0x1a')](_0x406497,0x0,![],null)[_0xd2f7('0xc')](function(){return utils['getLicense'](_0x406497);})[_0xd2f7('0xc')](function(){return _0x11efa2(null,_0x406497);});}}else{return _0x11efa2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xd2f7('0x1a')](_0x406497,0x0,![],null)[_0xd2f7('0xc')](function(){return utils[_0xd2f7('0x1b')](_0x406497);})['then'](function(){return _0x11efa2(null,_0x406497);})['catch'](function(_0x5dfa55){return _0x11efa2(null,![],_0x5dfa55);});}}else{if(_0x406497[_0xd2f7('0x11')]){return _0x11efa2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xd2f7('0x1b')](_0x406497)[_0xd2f7('0xc')](function(){return _0x11efa2(null,_0x406497);});}}}});})['catch'](function(_0x253f70){return _0x11efa2(null,![],_0x253f70);});}function sendServiceMail(_0x3dbebe){return db[_0xd2f7('0x1c')][_0xd2f7('0x1d')]({'where':{'service':!![]},'attributes':['id',_0xd2f7('0xd'),_0xd2f7('0x1e')],'include':[{'model':db[_0xd2f7('0x1f')],'as':_0xd2f7('0x20'),'include':[{'model':db[_0xd2f7('0x21')],'as':'CloudProvider'}]}]})[_0xd2f7('0xc')](function(_0x440934){if(!_0x440934){throw new Error(_0xd2f7('0x22'));}var _0x3c678b=_0x440934['getSmtpOptions']();var _0x26b0a2={'account':_0x3c678b,'message':_[_0xd2f7('0x23')]({'from':util['format'](_0xd2f7('0x24'),_0x440934[_0xd2f7('0xd')],_0x440934['email']||_0x440934['Smtp'][_0xd2f7('0x14')])},_0x3dbebe)};return client[_0xd2f7('0x25')](_0xd2f7('0x26'),_0x26b0a2);})[_0xd2f7('0xc')](function(_0x4adb2c){if(_0x4adb2c['error']){throw new Error(util[_0xd2f7('0x27')](_0xd2f7('0x28'),_0x4adb2c[_0xd2f7('0x29')]['message']||JSON[_0xd2f7('0x2a')](_0x4adb2c[_0xd2f7('0x29')])));}return!![];});}function handleError(_0x37aaed,_0x334915,_0x22d47e){return _0x37aaed['status'](_0x334915||0x1f4)[_0xd2f7('0x2b')]({'message':_0x22d47e?_0x22d47e[_0xd2f7('0x2c')]||_0x22d47e:''});}exports['login']=function(_0x4adf0b,_0x3d3d48,_0x24e7b0){passport[_0xd2f7('0x17')](_0xd2f7('0x2d'),function(_0x2365b9,_0x52c4f9,_0x522a22){var _0x3f5928=_0x2365b9||_0x522a22;if(_0x3f5928){return handleError(_0x3d3d48,0x191,_0x3f5928);}if(!_0x52c4f9){return handleError(_0x3d3d48,0x194,{'message':_0xd2f7('0x2e')});}else{var _0x311e7a={'payload':{'id':_0x52c4f9['id'],'role':_0x52c4f9['role']},'options':{'expiresIn':0x15180}};return authService[_0xd2f7('0x2f')](_0x311e7a)[_0xd2f7('0xc')](function(_0x32935a){_0x3d3d48[_0xd2f7('0x30')]({'id':_0x52c4f9['id'],'token':_0x32935a,'statusCall':'','isAlreadyLogged':_0x52c4f9[_0xd2f7('0x31')]});});}})(_0x4adf0b,_0x3d3d48,_0x24e7b0);};exports['forgot']=function(_0x98b85b,_0x16b14c){if(!_0x98b85b[_0xd2f7('0x32')][_0xd2f7('0x1e')]){return handleError(_0x16b14c,0x1f4,{'message':_0xd2f7('0x33')});}var _0x104b98=rs[_0xd2f7('0x34')]();_0x98b85b[_0xd2f7('0x32')][_0xd2f7('0x1e')]=_0x98b85b['body']['email'][_0xd2f7('0x35')]()[_0xd2f7('0x36')]();var _0x4036dc;return db['Setting'][_0xd2f7('0x9')]({'where':{'id':0x1},'attributes':[_0xd2f7('0xa'),_0xd2f7('0xb')],'raw':!![]})[_0xd2f7('0xc')](function(_0x4053a1){_0x4036dc=_0x4053a1;return db[_0xd2f7('0x37')]['find']({'where':{'email':_0x98b85b['body']['email']}});})[_0xd2f7('0xc')](function(_0x17d222){if(!_0x17d222){throw new Error(_0xd2f7('0x38'));}if(_0x17d222[_0xd2f7('0x10')]){throw new Error(_0xd2f7('0x39'));}if(_0x17d222['blocked']){if(moment(_0x17d222['blockedAt'])['add'](_0x4036dc['blockDuration'],'minutes')>moment()){throw new Error(_0xd2f7('0x3a'));}else{_0x17d222[_0xd2f7('0x11')]=![];_0x17d222[_0xd2f7('0x12')]=null;}}_0x17d222[_0xd2f7('0x3b')]=_0x104b98;_0x17d222[_0xd2f7('0x3c')]=Date[_0xd2f7('0x3d')]()+0x36ee80;return _0x17d222[_0xd2f7('0x3e')]();})['then'](function(){return sendServiceMail({'to':_0x98b85b[_0xd2f7('0x32')][_0xd2f7('0x1e')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0xd2f7('0x3f')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xd2f7('0x40')+_0x98b85b[_0xd2f7('0x41')]['host']+'/reset/'+_0x104b98+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xd2f7('0xc')](function(){_0x16b14c[_0xd2f7('0x42')](0xc8)['send']({'message':'Reset\x20Email\x20sent!'});})[_0xd2f7('0x43')](function(_0x3a370f){return handleError(_0x16b14c,0x1f4,_0x3a370f);});};exports[_0xd2f7('0x44')]=function(_0x3dc884,_0x176ab5){return db[_0xd2f7('0x37')][_0xd2f7('0x1d')]({'where':{'resetPasswordToken':_0x3dc884[_0xd2f7('0x45')][_0xd2f7('0x46')],'resetPasswordExpires':{'$gt':Date[_0xd2f7('0x3d')]()}}})[_0xd2f7('0xc')](function(_0x58bffd){if(!_0x58bffd){throw new Error(_0xd2f7('0x47'));}return db[_0xd2f7('0x48')][_0xd2f7('0x9')]({'attributes':['id',_0xd2f7('0x49'),_0xd2f7('0x4a'),_0xd2f7('0x4b')]})[_0xd2f7('0xc')](function(_0xed1f14){if(_0xed1f14[_0xd2f7('0x49')])authService[_0xd2f7('0x4c')](_0x3dc884[_0xd2f7('0x32')][_0xd2f7('0x4d')]);if(!_0xed1f14[_0xd2f7('0x4a')]||!_0x58bffd['previousPasswords'])return _0x58bffd;authService[_0xd2f7('0x4e')](_0x3dc884['body']['password'],_0x58bffd[_0xd2f7('0x4f')],_0xed1f14['passwordHistoryLimit']);return _0x58bffd;})[_0xd2f7('0xc')](function(){_0x58bffd[_0xd2f7('0x4d')]=_0x3dc884['body'][_0xd2f7('0x4d')];_0x58bffd[_0xd2f7('0x3b')]=null;_0x58bffd[_0xd2f7('0x3c')]=null;return _0x58bffd[_0xd2f7('0x3e')]();});})['then'](function(){_0x176ab5[_0xd2f7('0x42')](0xc8)[_0xd2f7('0x2b')]({'message':_0xd2f7('0x50')});})['catch'](function(_0x1dfe22){return handleError(_0x176ab5,0x1f4,_0x1dfe22);});};passport[_0xd2f7('0x51')](_0xd2f7('0x2d'),new LocalStrategy({'usernameField':_0xd2f7('0xd'),'passwordField':_0xd2f7('0x4d')},function(_0xc0ac0b,_0xb2f4d5,_0x3eccd5){return localAuthenticate(db[_0xd2f7('0x37')],_0xc0ac0b,_0xb2f4d5,_0x3eccd5);}));
\ No newline at end of file
index 8f912c8..24a4215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacbe=['/reset/:token','reset','express','Router','./authLocal.controller','post','/forgot','forgot'];(function(_0x295c9c,_0x1a8ff3){var _0x3e6fe3=function(_0x308e30){while(--_0x308e30){_0x295c9c['push'](_0x295c9c['shift']());}};_0x3e6fe3(++_0x1a8ff3);}(_0xacbe,0x72));var _0xeacb=function(_0x508767,_0x369e53){_0x508767=_0x508767-0x0;var _0x2480fe=_0xacbe[_0x508767];return _0x2480fe;};'use strict';var express=require(_0xeacb('0x0'));var router=express[_0xeacb('0x1')]();var controller=require(_0xeacb('0x2'));router[_0xeacb('0x3')]('/',controller['login']);router[_0xeacb('0x3')](_0xeacb('0x4'),controller[_0xeacb('0x5')]);router[_0xeacb('0x3')](_0xeacb('0x6'),controller[_0xeacb('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x9bdc=['Router','post','login','forgot','/reset/:token','reset','exports'];(function(_0x10f8dc,_0x46aecd){var _0x2c8f9b=function(_0x1a53bf){while(--_0x1a53bf){_0x10f8dc['push'](_0x10f8dc['shift']());}};_0x2c8f9b(++_0x46aecd);}(_0x9bdc,0x181));var _0xc9bd=function(_0x4cac62,_0x3c6a33){_0x4cac62=_0x4cac62-0x0;var _0x32a10a=_0x9bdc[_0x4cac62];return _0x32a10a;};'use strict';var express=require('express');var router=express[_0xc9bd('0x0')]();var controller=require('./authLocal.controller');router[_0xc9bd('0x1')]('/',controller[_0xc9bd('0x2')]);router[_0xc9bd('0x1')]('/forgot',controller[_0xc9bd('0x3')]);router[_0xc9bd('0x1')](_0xc9bd('0x4'),controller[_0xc9bd('0x5')]);module[_0xc9bd('0x6')]=router;
\ No newline at end of file
index 3533707..b0226a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2841=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x1f0bcf,_0x2da56c){var _0x231a7a=function(_0x8fc8e0){while(--_0x8fc8e0){_0x1f0bcf['push'](_0x1f0bcf['shift']());}};_0x231a7a(++_0x2da56c);}(_0x2841,0xa6));var _0x1284=function(_0x30cc1a,_0x162bbc){_0x30cc1a=_0x30cc1a-0x0;var _0xb3f18f=_0x2841[_0x30cc1a];return _0xb3f18f;};'use strict';var Sequelize=require(_0x1284('0x0'));module[_0x1284('0x1')]={'name':{'type':Sequelize[_0x1284('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x1284('0x2')]},'description':{'type':Sequelize[_0x1284('0x2')]},'status':{'type':Sequelize[_0x1284('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1284('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x7a9b=['exports','STRING','INTEGER','sequelize'];(function(_0x56b138,_0x2396d6){var _0x3df878=function(_0x4b3ccc){while(--_0x4b3ccc){_0x56b138['push'](_0x56b138['shift']());}};_0x3df878(++_0x2396d6);}(_0x7a9b,0x13f));var _0xb7a9=function(_0x1e1747,_0x1e2bd5){_0x1e1747=_0x1e1747-0x0;var _0x253d29=_0x7a9b[_0x1e1747];return _0x253d29;};'use strict';var Sequelize=require(_0xb7a9('0x0'));module[_0xb7a9('0x1')]={'name':{'type':Sequelize[_0xb7a9('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xb7a9('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0xb7a9('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 190bd76..aa624df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bab=['ids','omit','getConditions','findOne','options','nolimit','addActions','getActions','Action','eml-format','rimraf','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','index','map','Automation','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','then','include','findAll','rows','show','params','rawAttributes','create','body','catch','find','addConditions'];(function(_0x3e8122,_0x24888a){var _0x57e9ce=function(_0x3a2e9e){while(--_0x3a2e9e){_0x3e8122['push'](_0x3e8122['shift']());}};_0x57e9ce(++_0x24888a);}(_0x7bab,0x169));var _0xb7ba=function(_0x4da7de,_0x2d9eb8){_0x4da7de=_0x4da7de-0x0;var _0x4d9fec=_0x7bab[_0x4da7de];return _0x4d9fec;};'use strict';var emlformat=require(_0xb7ba('0x0'));var rimraf=require(_0xb7ba('0x1'));var zipdir=require(_0xb7ba('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb7ba('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb7ba('0x4'));var util=require(_0xb7ba('0x5'));var path=require(_0xb7ba('0x6'));var sox=require('sox');var csv=require(_0xb7ba('0x7'));var ejs=require(_0xb7ba('0x8'));var fs=require('fs');var fs_extra=require(_0xb7ba('0x9'));var _=require(_0xb7ba('0xa'));var squel=require(_0xb7ba('0xb'));var crypto=require(_0xb7ba('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb7ba('0xd'));var toCsv=require(_0xb7ba('0x7'));var querystring=require(_0xb7ba('0xe'));var Papa=require(_0xb7ba('0xf'));var Redis=require(_0xb7ba('0x10'));var authService=require(_0xb7ba('0x11'));var qs=require(_0xb7ba('0x12'));var as=require(_0xb7ba('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb7ba('0x14'))(_0xb7ba('0x15'));var utils=require(_0xb7ba('0x16'));var config=require(_0xb7ba('0x17'));var licenseUtil=require(_0xb7ba('0x18'));var db=require(_0xb7ba('0x19'))['db'];function respondWithStatusCode(_0x4a26ca,_0x2e98c8){_0x2e98c8=_0x2e98c8||0xcc;return function(_0x136236){if(_0x136236){return _0x4a26ca[_0xb7ba('0x1a')](_0x2e98c8);}return _0x4a26ca[_0xb7ba('0x1b')](_0x2e98c8)[_0xb7ba('0x1c')]();};}function respondWithResult(_0x2a28e0,_0x562728){_0x562728=_0x562728||0xc8;return function(_0x56426f){if(_0x56426f){return _0x2a28e0[_0xb7ba('0x1b')](_0x562728)['json'](_0x56426f);}};}function respondWithFilteredResult(_0x2f5f1d,_0x408806){return function(_0xc89c1b){if(_0xc89c1b){var _0x266753=typeof _0x408806[_0xb7ba('0x1d')]===_0xb7ba('0x1e')&&typeof _0x408806[_0xb7ba('0x1f')]===_0xb7ba('0x1e');var _0x4c2168=_0xc89c1b[_0xb7ba('0x20')];var _0x29acb4=_0x266753?0x0:_0x408806[_0xb7ba('0x1d')];var _0x3d427d=_0x266753?_0xc89c1b['count']:_0x408806[_0xb7ba('0x1d')]+_0x408806[_0xb7ba('0x1f')];var _0x26dbd7;if(_0x3d427d>=_0x4c2168){_0x3d427d=_0x4c2168;_0x26dbd7=0xc8;}else{_0x26dbd7=0xce;}_0x2f5f1d[_0xb7ba('0x1b')](_0x26dbd7);return _0x2f5f1d[_0xb7ba('0x21')](_0xb7ba('0x22'),_0x29acb4+'-'+_0x3d427d+'/'+_0x4c2168)[_0xb7ba('0x23')](_0xc89c1b);}return null;};}function patchUpdates(_0x2a0211){return function(_0x476cba){try{jsonpatch[_0xb7ba('0x24')](_0x476cba,_0x2a0211,!![]);}catch(_0x595ec7){return BPromise[_0xb7ba('0x25')](_0x595ec7);}return _0x476cba[_0xb7ba('0x26')]();};}function saveUpdates(_0x4ec123,_0x1074fe){return function(_0x43858a){if(_0x43858a){return _0x43858a[_0xb7ba('0x27')](_0x4ec123)['then'](function(_0xa75249){return _0xa75249;});}return null;};}function removeEntity(_0x5edd9e,_0x27ae15){return function(_0x246dc7){if(_0x246dc7){return _0x246dc7[_0xb7ba('0x28')]()['then'](function(){_0x5edd9e[_0xb7ba('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c38fb,_0x5ef43b){return function(_0x16ffc9){if(!_0x16ffc9){_0x4c38fb[_0xb7ba('0x1a')](0x194);}return _0x16ffc9;};}function handleError(_0x5d86b3,_0x21b84b){_0x21b84b=_0x21b84b||0x1f4;return function(_0x3e8fdb){logger[_0xb7ba('0x29')](_0x3e8fdb[_0xb7ba('0x2a')]);if(_0x3e8fdb['name']){delete _0x3e8fdb[_0xb7ba('0x2b')];}_0x5d86b3[_0xb7ba('0x1b')](_0x21b84b)[_0xb7ba('0x2c')](_0x3e8fdb);};}exports[_0xb7ba('0x2d')]=function(_0x593ff4,_0x2590e1){var _0x22bd1d={},_0x22f1aa={},_0x19ff8c={'count':0x0,'rows':[]};var _0x139ac0=_[_0xb7ba('0x2e')](db[_0xb7ba('0x2f')]['rawAttributes'],function(_0xa10617){return{'name':_0xa10617[_0xb7ba('0x30')],'type':_0xa10617[_0xb7ba('0x31')][_0xb7ba('0x32')]};});_0x22f1aa[_0xb7ba('0x33')]=_[_0xb7ba('0x2e')](_0x139ac0,_0xb7ba('0x2b'));_0x22f1aa[_0xb7ba('0x34')]=_[_0xb7ba('0x35')](_0x593ff4[_0xb7ba('0x34')]);_0x22f1aa[_0xb7ba('0x36')]=_['intersection'](_0x22f1aa[_0xb7ba('0x33')],_0x22f1aa[_0xb7ba('0x34')]);_0x22bd1d[_0xb7ba('0x37')]=_[_0xb7ba('0x38')](_0x22f1aa[_0xb7ba('0x33')],qs[_0xb7ba('0x39')](_0x593ff4[_0xb7ba('0x34')]['fields']));_0x22bd1d[_0xb7ba('0x37')]=_0x22bd1d[_0xb7ba('0x37')][_0xb7ba('0x3a')]?_0x22bd1d[_0xb7ba('0x37')]:_0x22f1aa[_0xb7ba('0x33')];if(!_0x593ff4['query'][_0xb7ba('0x3b')]('nolimit')){_0x22bd1d['limit']=qs[_0xb7ba('0x1f')](_0x593ff4[_0xb7ba('0x34')][_0xb7ba('0x1f')]);_0x22bd1d[_0xb7ba('0x1d')]=qs[_0xb7ba('0x1d')](_0x593ff4['query'][_0xb7ba('0x1d')]);}_0x22bd1d[_0xb7ba('0x3c')]=qs[_0xb7ba('0x3d')](_0x593ff4[_0xb7ba('0x34')]['sort']);_0x22bd1d[_0xb7ba('0x3e')]=qs[_0xb7ba('0x36')](_[_0xb7ba('0x3f')](_0x593ff4[_0xb7ba('0x34')],_0x22f1aa[_0xb7ba('0x36')]),_0x139ac0);if(_0x593ff4[_0xb7ba('0x34')][_0xb7ba('0x40')]){_0x22bd1d['where']=_[_0xb7ba('0x41')](_0x22bd1d['where'],{'$or':_[_0xb7ba('0x2e')](_0x139ac0,function(_0x24e793){if(_0x24e793[_0xb7ba('0x31')]!==_0xb7ba('0x42')){var _0x3b5c16={};_0x3b5c16[_0x24e793[_0xb7ba('0x2b')]]={'$like':'%'+_0x593ff4['query'][_0xb7ba('0x40')]+'%'};return _0x3b5c16;}})});}_0x22bd1d=_[_0xb7ba('0x41')]({},_0x22bd1d,_0x593ff4['options']);var _0x2f8932={'where':_0x22bd1d[_0xb7ba('0x3e')]};return db['Automation'][_0xb7ba('0x20')](_0x2f8932)[_0xb7ba('0x43')](function(_0x1d6a61){_0x19ff8c['count']=_0x1d6a61;if(_0x593ff4[_0xb7ba('0x34')]['includeAll']){_0x22bd1d[_0xb7ba('0x44')]=[{'all':!![]}];}return db[_0xb7ba('0x2f')][_0xb7ba('0x45')](_0x22bd1d);})[_0xb7ba('0x43')](function(_0x44c35b){_0x19ff8c[_0xb7ba('0x46')]=_0x44c35b;return _0x19ff8c;})[_0xb7ba('0x43')](respondWithFilteredResult(_0x2590e1,_0x22bd1d))['catch'](handleError(_0x2590e1,null));};exports[_0xb7ba('0x47')]=function(_0x55d2fb,_0x28e7b8){var _0x57de22={'raw':![],'where':{'id':_0x55d2fb[_0xb7ba('0x48')]['id']}},_0x222e4f={};_0x222e4f[_0xb7ba('0x33')]=_[_0xb7ba('0x35')](db['Automation'][_0xb7ba('0x49')]);_0x222e4f[_0xb7ba('0x34')]=_['keys'](_0x55d2fb['query']);_0x222e4f[_0xb7ba('0x36')]=_['intersection'](_0x222e4f[_0xb7ba('0x33')],_0x222e4f[_0xb7ba('0x34')]);_0x57de22[_0xb7ba('0x37')]=_['intersection'](_0x222e4f[_0xb7ba('0x33')],qs[_0xb7ba('0x39')](_0x55d2fb[_0xb7ba('0x34')]['fields']));_0x57de22['attributes']=_0x57de22['attributes'][_0xb7ba('0x3a')]?_0x57de22[_0xb7ba('0x37')]:_0x222e4f[_0xb7ba('0x33')];if(_0x55d2fb[_0xb7ba('0x34')]['includeAll']){_0x57de22['include']=[{'all':!![]}];}_0x57de22=_['merge']({},_0x57de22,_0x55d2fb['options']);return db[_0xb7ba('0x2f')]['find'](_0x57de22)[_0xb7ba('0x43')](handleEntityNotFound(_0x28e7b8,null))['then'](respondWithResult(_0x28e7b8,null))['catch'](handleError(_0x28e7b8,null));};exports['create']=function(_0x966e70,_0x1014be){return db['Automation'][_0xb7ba('0x4a')](_0x966e70[_0xb7ba('0x4b')],{})[_0xb7ba('0x43')](respondWithResult(_0x1014be,0xc9))[_0xb7ba('0x4c')](handleError(_0x1014be,null));};exports[_0xb7ba('0x27')]=function(_0x5f2caa,_0x5593c9){if(_0x5f2caa[_0xb7ba('0x4b')]['id']){delete _0x5f2caa['body']['id'];}return db[_0xb7ba('0x2f')][_0xb7ba('0x4d')]({'where':{'id':_0x5f2caa[_0xb7ba('0x48')]['id']}})['then'](handleEntityNotFound(_0x5593c9,null))[_0xb7ba('0x43')](saveUpdates(_0x5f2caa[_0xb7ba('0x4b')],null))[_0xb7ba('0x43')](respondWithResult(_0x5593c9,null))['catch'](handleError(_0x5593c9,null));};exports[_0xb7ba('0x28')]=function(_0x969392,_0x4cd7ae){return db[_0xb7ba('0x2f')][_0xb7ba('0x4d')]({'where':{'id':_0x969392['params']['id']}})[_0xb7ba('0x43')](handleEntityNotFound(_0x4cd7ae,null))[_0xb7ba('0x43')](removeEntity(_0x4cd7ae,null))['catch'](handleError(_0x4cd7ae,null));};exports[_0xb7ba('0x4e')]=function(_0x1c7075,_0x162fb3,_0x486e72){return db['Condition'][_0xb7ba('0x4d')]({'where':{'id':_0x1c7075[_0xb7ba('0x48')]['id']}})['then'](handleEntityNotFound(_0x162fb3,null))[_0xb7ba('0x43')](function(_0xaec962){if(_0xaec962){return _0xaec962[_0xb7ba('0x4e')](_0x1c7075[_0xb7ba('0x4b')][_0xb7ba('0x4f')],_[_0xb7ba('0x50')](_0x1c7075[_0xb7ba('0x4b')],[_0xb7ba('0x4f'),'id'])||{});}})[_0xb7ba('0x43')](respondWithResult(_0x162fb3,null))[_0xb7ba('0x4c')](handleError(_0x162fb3,null));};exports[_0xb7ba('0x51')]=function(_0x5f47f5,_0x1676ea,_0x5d7eed){var _0x48ebba={};var _0x1722db={};var _0x5325cd;var _0x1793b0;return db['Automation'][_0xb7ba('0x52')]({'where':{'id':_0x5f47f5['params']['id']}})[_0xb7ba('0x43')](handleEntityNotFound(_0x1676ea,null))[_0xb7ba('0x43')](function(_0x4738f5){if(_0x4738f5){_0x5325cd=_0x4738f5;_0x1722db[_0xb7ba('0x33')]=_[_0xb7ba('0x35')](db['Condition'][_0xb7ba('0x49')]);_0x1722db[_0xb7ba('0x34')]=_[_0xb7ba('0x35')](_0x5f47f5[_0xb7ba('0x34')]);_0x1722db[_0xb7ba('0x36')]=_[_0xb7ba('0x38')](_0x1722db['model'],_0x1722db['query']);_0x48ebba[_0xb7ba('0x37')]=_[_0xb7ba('0x38')](_0x1722db[_0xb7ba('0x33')],qs[_0xb7ba('0x39')](_0x5f47f5[_0xb7ba('0x34')][_0xb7ba('0x39')]));_0x48ebba['attributes']=_0x48ebba[_0xb7ba('0x37')][_0xb7ba('0x3a')]?_0x48ebba['attributes']:_0x1722db[_0xb7ba('0x33')];_0x48ebba[_0xb7ba('0x3c')]=qs['sort'](_0x5f47f5[_0xb7ba('0x34')]['sort']);_0x48ebba[_0xb7ba('0x3e')]=qs[_0xb7ba('0x36')](_[_0xb7ba('0x3f')](_0x5f47f5[_0xb7ba('0x34')],_0x1722db['filters']));if(_0x5f47f5[_0xb7ba('0x34')][_0xb7ba('0x40')]){_0x48ebba[_0xb7ba('0x3e')]=_[_0xb7ba('0x41')](_0x48ebba[_0xb7ba('0x3e')],{'$or':_[_0xb7ba('0x2e')](_0x48ebba[_0xb7ba('0x37')],function(_0x260401){var _0x512f8e={};_0x512f8e[_0x260401]={'$like':'%'+_0x5f47f5[_0xb7ba('0x34')][_0xb7ba('0x40')]+'%'};return _0x512f8e;})});}_0x48ebba=_['merge']({},_0x48ebba,_0x5f47f5[_0xb7ba('0x53')]);return _0x5325cd[_0xb7ba('0x51')](_0x48ebba);}})[_0xb7ba('0x43')](function(_0x2de4cf){if(_0x2de4cf){_0x1793b0=_0x2de4cf[_0xb7ba('0x3a')];if(!_0x5f47f5[_0xb7ba('0x34')]['hasOwnProperty'](_0xb7ba('0x54'))){_0x48ebba[_0xb7ba('0x1f')]=qs[_0xb7ba('0x1f')](_0x5f47f5[_0xb7ba('0x34')]['limit']);_0x48ebba[_0xb7ba('0x1d')]=qs[_0xb7ba('0x1d')](_0x5f47f5[_0xb7ba('0x34')][_0xb7ba('0x1d')]);}return _0x5325cd[_0xb7ba('0x51')](_0x48ebba);}})[_0xb7ba('0x43')](function(_0x17653f){if(_0x17653f){return _0x17653f?{'count':_0x1793b0,'rows':_0x17653f}:null;}})[_0xb7ba('0x43')](respondWithResult(_0x1676ea,null))[_0xb7ba('0x4c')](handleError(_0x1676ea,null));};exports[_0xb7ba('0x55')]=function(_0x3ce6f6,_0x5e2fc6,_0x5119a9){return db['Action'][_0xb7ba('0x4d')]({'where':{'id':_0x3ce6f6['params']['id']}})[_0xb7ba('0x43')](handleEntityNotFound(_0x5e2fc6,null))[_0xb7ba('0x43')](function(_0x285084){if(_0x285084){return _0x285084['addActions'](_0x3ce6f6['body']['ids'],_[_0xb7ba('0x50')](_0x3ce6f6[_0xb7ba('0x4b')],[_0xb7ba('0x4f'),'id'])||{});}})[_0xb7ba('0x43')](respondWithResult(_0x5e2fc6,null))[_0xb7ba('0x4c')](handleError(_0x5e2fc6,null));};exports[_0xb7ba('0x56')]=function(_0x204b45,_0x182b70,_0x577899){var _0x121e9b={};var _0x123a66={};var _0xf45e4c;var _0x4578d9;return db[_0xb7ba('0x2f')]['findOne']({'where':{'id':_0x204b45[_0xb7ba('0x48')]['id']}})[_0xb7ba('0x43')](handleEntityNotFound(_0x182b70,null))[_0xb7ba('0x43')](function(_0x203e2c){if(_0x203e2c){_0xf45e4c=_0x203e2c;_0x123a66['model']=_['keys'](db[_0xb7ba('0x57')][_0xb7ba('0x49')]);_0x123a66[_0xb7ba('0x34')]=_['keys'](_0x204b45[_0xb7ba('0x34')]);_0x123a66[_0xb7ba('0x36')]=_['intersection'](_0x123a66[_0xb7ba('0x33')],_0x123a66[_0xb7ba('0x34')]);_0x121e9b[_0xb7ba('0x37')]=_['intersection'](_0x123a66[_0xb7ba('0x33')],qs[_0xb7ba('0x39')](_0x204b45[_0xb7ba('0x34')][_0xb7ba('0x39')]));_0x121e9b[_0xb7ba('0x37')]=_0x121e9b[_0xb7ba('0x37')][_0xb7ba('0x3a')]?_0x121e9b['attributes']:_0x123a66['model'];_0x121e9b[_0xb7ba('0x3c')]=qs[_0xb7ba('0x3d')](_0x204b45['query']['sort']);_0x121e9b[_0xb7ba('0x3e')]=qs[_0xb7ba('0x36')](_[_0xb7ba('0x3f')](_0x204b45[_0xb7ba('0x34')],_0x123a66[_0xb7ba('0x36')]));if(_0x204b45[_0xb7ba('0x34')][_0xb7ba('0x40')]){_0x121e9b[_0xb7ba('0x3e')]=_[_0xb7ba('0x41')](_0x121e9b[_0xb7ba('0x3e')],{'$or':_[_0xb7ba('0x2e')](_0x121e9b['attributes'],function(_0x5090ab){var _0x2a863a={};_0x2a863a[_0x5090ab]={'$like':'%'+_0x204b45[_0xb7ba('0x34')][_0xb7ba('0x40')]+'%'};return _0x2a863a;})});}_0x121e9b=_[_0xb7ba('0x41')]({},_0x121e9b,_0x204b45['options']);return _0xf45e4c['getActions'](_0x121e9b);}})['then'](function(_0x258007){if(_0x258007){_0x4578d9=_0x258007[_0xb7ba('0x3a')];if(!_0x204b45[_0xb7ba('0x34')][_0xb7ba('0x3b')](_0xb7ba('0x54'))){_0x121e9b[_0xb7ba('0x1f')]=qs['limit'](_0x204b45[_0xb7ba('0x34')]['limit']);_0x121e9b[_0xb7ba('0x1d')]=qs['offset'](_0x204b45[_0xb7ba('0x34')][_0xb7ba('0x1d')]);}return _0xf45e4c['getActions'](_0x121e9b);}})[_0xb7ba('0x43')](function(_0x3eb049){if(_0x3eb049){return _0x3eb049?{'count':_0x4578d9,'rows':_0x3eb049}:null;}})[_0xb7ba('0x43')](respondWithResult(_0x182b70,null))[_0xb7ba('0x4c')](handleError(_0x182b70,null));};
\ No newline at end of file
+var _0x8fcd=['catch','show','params','keys','rawAttributes','includeAll','options','find','body','Condition','omit','getConditions','findOne','where','hasOwnProperty','addActions','Action','ids','getActions','nolimit','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','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','apply','reject','save','update','then','destroy','error','name','send','index','map','fieldName','model','query','intersection','fields','length','attributes','order','sort','filters','pick','filter','merge','type','VIRTUAL','include','Automation','findAll','rows'];(function(_0x10295a,_0x3199ab){var _0x548fc4=function(_0x1cdede){while(--_0x1cdede){_0x10295a['push'](_0x10295a['shift']());}};_0x548fc4(++_0x3199ab);}(_0x8fcd,0x1bd));var _0xd8fc=function(_0x3e8842,_0x32b3fb){_0x3e8842=_0x3e8842-0x0;var _0x4ad0a2=_0x8fcd[_0x3e8842];return _0x4ad0a2;};'use strict';var emlformat=require(_0xd8fc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd8fc('0x1'));var jsonpatch=require(_0xd8fc('0x2'));var rp=require('request-promise');var moment=require(_0xd8fc('0x3'));var BPromise=require(_0xd8fc('0x4'));var Mustache=require(_0xd8fc('0x5'));var util=require(_0xd8fc('0x6'));var path=require(_0xd8fc('0x7'));var sox=require(_0xd8fc('0x8'));var csv=require(_0xd8fc('0x9'));var ejs=require(_0xd8fc('0xa'));var fs=require('fs');var fs_extra=require(_0xd8fc('0xb'));var _=require(_0xd8fc('0xc'));var squel=require('squel');var crypto=require(_0xd8fc('0xd'));var jsforce=require(_0xd8fc('0xe'));var deskjs=require(_0xd8fc('0xf'));var toCsv=require(_0xd8fc('0x9'));var querystring=require('querystring');var Papa=require(_0xd8fc('0x10'));var Redis=require(_0xd8fc('0x11'));var authService=require(_0xd8fc('0x12'));var qs=require(_0xd8fc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd8fc('0x14'));var logger=require(_0xd8fc('0x15'))('api');var utils=require(_0xd8fc('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xd8fc('0x17'));var db=require(_0xd8fc('0x18'))['db'];function respondWithStatusCode(_0xa8375b,_0x27afe5){_0x27afe5=_0x27afe5||0xcc;return function(_0x3b728a){if(_0x3b728a){return _0xa8375b[_0xd8fc('0x19')](_0x27afe5);}return _0xa8375b[_0xd8fc('0x1a')](_0x27afe5)[_0xd8fc('0x1b')]();};}function respondWithResult(_0x5a7102,_0x4f1d30){_0x4f1d30=_0x4f1d30||0xc8;return function(_0x30f2af){if(_0x30f2af){return _0x5a7102['status'](_0x4f1d30)[_0xd8fc('0x1c')](_0x30f2af);}};}function respondWithFilteredResult(_0x23554c,_0x22ad17){return function(_0xaf4f5c){if(_0xaf4f5c){var _0x204ff7=typeof _0x22ad17[_0xd8fc('0x1d')]===_0xd8fc('0x1e')&&typeof _0x22ad17[_0xd8fc('0x1f')]==='undefined';var _0xf6d02=_0xaf4f5c[_0xd8fc('0x20')];var _0x296141=_0x204ff7?0x0:_0x22ad17[_0xd8fc('0x1d')];var _0x3efe63=_0x204ff7?_0xaf4f5c[_0xd8fc('0x20')]:_0x22ad17[_0xd8fc('0x1d')]+_0x22ad17['limit'];var _0x3af059;if(_0x3efe63>=_0xf6d02){_0x3efe63=_0xf6d02;_0x3af059=0xc8;}else{_0x3af059=0xce;}_0x23554c[_0xd8fc('0x1a')](_0x3af059);return _0x23554c[_0xd8fc('0x21')](_0xd8fc('0x22'),_0x296141+'-'+_0x3efe63+'/'+_0xf6d02)[_0xd8fc('0x1c')](_0xaf4f5c);}return null;};}function patchUpdates(_0x5ee354){return function(_0xf19255){try{jsonpatch[_0xd8fc('0x23')](_0xf19255,_0x5ee354,!![]);}catch(_0x1bbffc){return BPromise[_0xd8fc('0x24')](_0x1bbffc);}return _0xf19255[_0xd8fc('0x25')]();};}function saveUpdates(_0x366b4c,_0x32f146){return function(_0x35357c){if(_0x35357c){return _0x35357c[_0xd8fc('0x26')](_0x366b4c)[_0xd8fc('0x27')](function(_0x62536a){return _0x62536a;});}return null;};}function removeEntity(_0x17a0fb,_0x300cb2){return function(_0x229673){if(_0x229673){return _0x229673[_0xd8fc('0x28')]()[_0xd8fc('0x27')](function(){_0x17a0fb[_0xd8fc('0x1a')](0xcc)[_0xd8fc('0x1b')]();});}};}function handleEntityNotFound(_0x1dc3df,_0x89d60a){return function(_0x27030c){if(!_0x27030c){_0x1dc3df[_0xd8fc('0x19')](0x194);}return _0x27030c;};}function handleError(_0x325c27,_0x575005){_0x575005=_0x575005||0x1f4;return function(_0x134509){logger[_0xd8fc('0x29')](_0x134509['stack']);if(_0x134509['name']){delete _0x134509[_0xd8fc('0x2a')];}_0x325c27['status'](_0x575005)[_0xd8fc('0x2b')](_0x134509);};}exports[_0xd8fc('0x2c')]=function(_0x3f79fa,_0x47f6f6){var _0x2061fc={},_0x287591={},_0x4d8f7={'count':0x0,'rows':[]};var _0x15791a=_[_0xd8fc('0x2d')](db['Automation']['rawAttributes'],function(_0x2c41e4){return{'name':_0x2c41e4[_0xd8fc('0x2e')],'type':_0x2c41e4['type']['key']};});_0x287591[_0xd8fc('0x2f')]=_[_0xd8fc('0x2d')](_0x15791a,_0xd8fc('0x2a'));_0x287591[_0xd8fc('0x30')]=_['keys'](_0x3f79fa['query']);_0x287591['filters']=_['intersection'](_0x287591['model'],_0x287591['query']);_0x2061fc['attributes']=_[_0xd8fc('0x31')](_0x287591[_0xd8fc('0x2f')],qs[_0xd8fc('0x32')](_0x3f79fa[_0xd8fc('0x30')]['fields']));_0x2061fc['attributes']=_0x2061fc['attributes'][_0xd8fc('0x33')]?_0x2061fc[_0xd8fc('0x34')]:_0x287591[_0xd8fc('0x2f')];if(!_0x3f79fa[_0xd8fc('0x30')]['hasOwnProperty']('nolimit')){_0x2061fc[_0xd8fc('0x1f')]=qs['limit'](_0x3f79fa['query'][_0xd8fc('0x1f')]);_0x2061fc[_0xd8fc('0x1d')]=qs[_0xd8fc('0x1d')](_0x3f79fa['query']['offset']);}_0x2061fc[_0xd8fc('0x35')]=qs[_0xd8fc('0x36')](_0x3f79fa[_0xd8fc('0x30')][_0xd8fc('0x36')]);_0x2061fc['where']=qs[_0xd8fc('0x37')](_[_0xd8fc('0x38')](_0x3f79fa[_0xd8fc('0x30')],_0x287591['filters']),_0x15791a);if(_0x3f79fa[_0xd8fc('0x30')][_0xd8fc('0x39')]){_0x2061fc['where']=_[_0xd8fc('0x3a')](_0x2061fc['where'],{'$or':_['map'](_0x15791a,function(_0x2b2ac2){if(_0x2b2ac2[_0xd8fc('0x3b')]!==_0xd8fc('0x3c')){var _0x5aecb6={};_0x5aecb6[_0x2b2ac2[_0xd8fc('0x2a')]]={'$like':'%'+_0x3f79fa[_0xd8fc('0x30')][_0xd8fc('0x39')]+'%'};return _0x5aecb6;}})});}_0x2061fc=_[_0xd8fc('0x3a')]({},_0x2061fc,_0x3f79fa['options']);var _0x3a9d4e={'where':_0x2061fc['where']};return db['Automation'][_0xd8fc('0x20')](_0x3a9d4e)[_0xd8fc('0x27')](function(_0x493e77){_0x4d8f7[_0xd8fc('0x20')]=_0x493e77;if(_0x3f79fa['query']['includeAll']){_0x2061fc[_0xd8fc('0x3d')]=[{'all':!![]}];}return db[_0xd8fc('0x3e')][_0xd8fc('0x3f')](_0x2061fc);})[_0xd8fc('0x27')](function(_0x2434dd){_0x4d8f7[_0xd8fc('0x40')]=_0x2434dd;return _0x4d8f7;})[_0xd8fc('0x27')](respondWithFilteredResult(_0x47f6f6,_0x2061fc))[_0xd8fc('0x41')](handleError(_0x47f6f6,null));};exports[_0xd8fc('0x42')]=function(_0x276ed4,_0x422a40){var _0x1cf06a={'raw':![],'where':{'id':_0x276ed4[_0xd8fc('0x43')]['id']}},_0x46ff14={};_0x46ff14[_0xd8fc('0x2f')]=_[_0xd8fc('0x44')](db[_0xd8fc('0x3e')][_0xd8fc('0x45')]);_0x46ff14[_0xd8fc('0x30')]=_[_0xd8fc('0x44')](_0x276ed4[_0xd8fc('0x30')]);_0x46ff14[_0xd8fc('0x37')]=_[_0xd8fc('0x31')](_0x46ff14[_0xd8fc('0x2f')],_0x46ff14[_0xd8fc('0x30')]);_0x1cf06a[_0xd8fc('0x34')]=_['intersection'](_0x46ff14[_0xd8fc('0x2f')],qs[_0xd8fc('0x32')](_0x276ed4[_0xd8fc('0x30')][_0xd8fc('0x32')]));_0x1cf06a[_0xd8fc('0x34')]=_0x1cf06a[_0xd8fc('0x34')][_0xd8fc('0x33')]?_0x1cf06a['attributes']:_0x46ff14[_0xd8fc('0x2f')];if(_0x276ed4[_0xd8fc('0x30')][_0xd8fc('0x46')]){_0x1cf06a[_0xd8fc('0x3d')]=[{'all':!![]}];}_0x1cf06a=_[_0xd8fc('0x3a')]({},_0x1cf06a,_0x276ed4[_0xd8fc('0x47')]);return db['Automation'][_0xd8fc('0x48')](_0x1cf06a)[_0xd8fc('0x27')](handleEntityNotFound(_0x422a40,null))['then'](respondWithResult(_0x422a40,null))['catch'](handleError(_0x422a40,null));};exports['create']=function(_0x22d54b,_0x360892){return db['Automation']['create'](_0x22d54b[_0xd8fc('0x49')],{})['then'](respondWithResult(_0x360892,0xc9))[_0xd8fc('0x41')](handleError(_0x360892,null));};exports[_0xd8fc('0x26')]=function(_0x39f551,_0x1d7920){if(_0x39f551[_0xd8fc('0x49')]['id']){delete _0x39f551[_0xd8fc('0x49')]['id'];}return db[_0xd8fc('0x3e')]['find']({'where':{'id':_0x39f551['params']['id']}})[_0xd8fc('0x27')](handleEntityNotFound(_0x1d7920,null))[_0xd8fc('0x27')](saveUpdates(_0x39f551[_0xd8fc('0x49')],null))['then'](respondWithResult(_0x1d7920,null))['catch'](handleError(_0x1d7920,null));};exports[_0xd8fc('0x28')]=function(_0x584275,_0x440ee7){return db[_0xd8fc('0x3e')][_0xd8fc('0x48')]({'where':{'id':_0x584275['params']['id']}})[_0xd8fc('0x27')](handleEntityNotFound(_0x440ee7,null))[_0xd8fc('0x27')](removeEntity(_0x440ee7,null))[_0xd8fc('0x41')](handleError(_0x440ee7,null));};exports['addConditions']=function(_0x498e8f,_0x5a277b,_0x17585f){return db[_0xd8fc('0x4a')][_0xd8fc('0x48')]({'where':{'id':_0x498e8f[_0xd8fc('0x43')]['id']}})[_0xd8fc('0x27')](handleEntityNotFound(_0x5a277b,null))[_0xd8fc('0x27')](function(_0x46f0df){if(_0x46f0df){return _0x46f0df['addConditions'](_0x498e8f[_0xd8fc('0x49')]['ids'],_[_0xd8fc('0x4b')](_0x498e8f[_0xd8fc('0x49')],['ids','id'])||{});}})['then'](respondWithResult(_0x5a277b,null))[_0xd8fc('0x41')](handleError(_0x5a277b,null));};exports[_0xd8fc('0x4c')]=function(_0x1fadcd,_0x11b533,_0x3add40){var _0x429b81={};var _0x68d262={};var _0x111077;var _0x1128c2;return db[_0xd8fc('0x3e')][_0xd8fc('0x4d')]({'where':{'id':_0x1fadcd[_0xd8fc('0x43')]['id']}})[_0xd8fc('0x27')](handleEntityNotFound(_0x11b533,null))[_0xd8fc('0x27')](function(_0x12186c){if(_0x12186c){_0x111077=_0x12186c;_0x68d262[_0xd8fc('0x2f')]=_[_0xd8fc('0x44')](db['Condition'][_0xd8fc('0x45')]);_0x68d262[_0xd8fc('0x30')]=_[_0xd8fc('0x44')](_0x1fadcd[_0xd8fc('0x30')]);_0x68d262[_0xd8fc('0x37')]=_['intersection'](_0x68d262[_0xd8fc('0x2f')],_0x68d262[_0xd8fc('0x30')]);_0x429b81[_0xd8fc('0x34')]=_[_0xd8fc('0x31')](_0x68d262[_0xd8fc('0x2f')],qs[_0xd8fc('0x32')](_0x1fadcd[_0xd8fc('0x30')][_0xd8fc('0x32')]));_0x429b81[_0xd8fc('0x34')]=_0x429b81[_0xd8fc('0x34')][_0xd8fc('0x33')]?_0x429b81['attributes']:_0x68d262['model'];_0x429b81['order']=qs['sort'](_0x1fadcd[_0xd8fc('0x30')][_0xd8fc('0x36')]);_0x429b81[_0xd8fc('0x4e')]=qs[_0xd8fc('0x37')](_[_0xd8fc('0x38')](_0x1fadcd[_0xd8fc('0x30')],_0x68d262[_0xd8fc('0x37')]));if(_0x1fadcd['query'][_0xd8fc('0x39')]){_0x429b81[_0xd8fc('0x4e')]=_[_0xd8fc('0x3a')](_0x429b81['where'],{'$or':_['map'](_0x429b81['attributes'],function(_0x6ba5f3){var _0x1da578={};_0x1da578[_0x6ba5f3]={'$like':'%'+_0x1fadcd['query'][_0xd8fc('0x39')]+'%'};return _0x1da578;})});}_0x429b81=_[_0xd8fc('0x3a')]({},_0x429b81,_0x1fadcd['options']);return _0x111077[_0xd8fc('0x4c')](_0x429b81);}})['then'](function(_0x1939bb){if(_0x1939bb){_0x1128c2=_0x1939bb[_0xd8fc('0x33')];if(!_0x1fadcd[_0xd8fc('0x30')][_0xd8fc('0x4f')]('nolimit')){_0x429b81[_0xd8fc('0x1f')]=qs['limit'](_0x1fadcd['query'][_0xd8fc('0x1f')]);_0x429b81['offset']=qs[_0xd8fc('0x1d')](_0x1fadcd[_0xd8fc('0x30')][_0xd8fc('0x1d')]);}return _0x111077['getConditions'](_0x429b81);}})[_0xd8fc('0x27')](function(_0x238255){if(_0x238255){return _0x238255?{'count':_0x1128c2,'rows':_0x238255}:null;}})['then'](respondWithResult(_0x11b533,null))[_0xd8fc('0x41')](handleError(_0x11b533,null));};exports[_0xd8fc('0x50')]=function(_0x2b0e6c,_0x175c2a,_0x4aca69){return db[_0xd8fc('0x51')][_0xd8fc('0x48')]({'where':{'id':_0x2b0e6c[_0xd8fc('0x43')]['id']}})[_0xd8fc('0x27')](handleEntityNotFound(_0x175c2a,null))['then'](function(_0x653be9){if(_0x653be9){return _0x653be9[_0xd8fc('0x50')](_0x2b0e6c[_0xd8fc('0x49')][_0xd8fc('0x52')],_[_0xd8fc('0x4b')](_0x2b0e6c[_0xd8fc('0x49')],['ids','id'])||{});}})[_0xd8fc('0x27')](respondWithResult(_0x175c2a,null))['catch'](handleError(_0x175c2a,null));};exports[_0xd8fc('0x53')]=function(_0x3f7b12,_0x2e3db4,_0x344972){var _0x55ae11={};var _0x11df6a={};var _0x432c62;var _0x4bfa42;return db[_0xd8fc('0x3e')][_0xd8fc('0x4d')]({'where':{'id':_0x3f7b12[_0xd8fc('0x43')]['id']}})['then'](handleEntityNotFound(_0x2e3db4,null))[_0xd8fc('0x27')](function(_0x473824){if(_0x473824){_0x432c62=_0x473824;_0x11df6a[_0xd8fc('0x2f')]=_[_0xd8fc('0x44')](db[_0xd8fc('0x51')]['rawAttributes']);_0x11df6a[_0xd8fc('0x30')]=_[_0xd8fc('0x44')](_0x3f7b12[_0xd8fc('0x30')]);_0x11df6a[_0xd8fc('0x37')]=_[_0xd8fc('0x31')](_0x11df6a[_0xd8fc('0x2f')],_0x11df6a[_0xd8fc('0x30')]);_0x55ae11['attributes']=_[_0xd8fc('0x31')](_0x11df6a[_0xd8fc('0x2f')],qs['fields'](_0x3f7b12['query'][_0xd8fc('0x32')]));_0x55ae11[_0xd8fc('0x34')]=_0x55ae11[_0xd8fc('0x34')][_0xd8fc('0x33')]?_0x55ae11['attributes']:_0x11df6a[_0xd8fc('0x2f')];_0x55ae11[_0xd8fc('0x35')]=qs[_0xd8fc('0x36')](_0x3f7b12[_0xd8fc('0x30')][_0xd8fc('0x36')]);_0x55ae11[_0xd8fc('0x4e')]=qs[_0xd8fc('0x37')](_[_0xd8fc('0x38')](_0x3f7b12['query'],_0x11df6a[_0xd8fc('0x37')]));if(_0x3f7b12[_0xd8fc('0x30')][_0xd8fc('0x39')]){_0x55ae11['where']=_[_0xd8fc('0x3a')](_0x55ae11[_0xd8fc('0x4e')],{'$or':_[_0xd8fc('0x2d')](_0x55ae11['attributes'],function(_0xd22e4b){var _0x5f0bf5={};_0x5f0bf5[_0xd22e4b]={'$like':'%'+_0x3f7b12['query'][_0xd8fc('0x39')]+'%'};return _0x5f0bf5;})});}_0x55ae11=_[_0xd8fc('0x3a')]({},_0x55ae11,_0x3f7b12[_0xd8fc('0x47')]);return _0x432c62[_0xd8fc('0x53')](_0x55ae11);}})[_0xd8fc('0x27')](function(_0x15875b){if(_0x15875b){_0x4bfa42=_0x15875b[_0xd8fc('0x33')];if(!_0x3f7b12[_0xd8fc('0x30')][_0xd8fc('0x4f')](_0xd8fc('0x54'))){_0x55ae11['limit']=qs[_0xd8fc('0x1f')](_0x3f7b12[_0xd8fc('0x30')]['limit']);_0x55ae11[_0xd8fc('0x1d')]=qs[_0xd8fc('0x1d')](_0x3f7b12[_0xd8fc('0x30')][_0xd8fc('0x1d')]);}return _0x432c62[_0xd8fc('0x53')](_0x55ae11);}})[_0xd8fc('0x27')](function(_0x2a6033){if(_0x2a6033){return _0x2a6033?{'count':_0x4bfa42,'rows':_0x2a6033}:null;}})[_0xd8fc('0x27')](respondWithResult(_0x2e3db4,null))[_0xd8fc('0x41')](handleError(_0x2e3db4,null));};
\ No newline at end of file
index 5e631c6..2b0c838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd202=['util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./automation.attributes','Automation','lodash'];(function(_0x3e3740,_0x32dc80){var _0x30fc79=function(_0x7da4b9){while(--_0x7da4b9){_0x3e3740['push'](_0x3e3740['shift']());}};_0x30fc79(++_0x32dc80);}(_0xd202,0x1ee));var _0x2d20=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xd202[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x2d20('0x0'));var util=require(_0x2d20('0x1'));var logger=require(_0x2d20('0x2'))('api');var moment=require(_0x2d20('0x3'));var BPromise=require(_0x2d20('0x4'));var rp=require(_0x2d20('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2d20('0x6'));var attributes=require(_0x2d20('0x7'));module['exports']=function(_0x17f760,_0x30ae72){return _0x17f760['define'](_0x2d20('0x8'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e8c=['rimraf','../../config/environment','./automation.attributes','exports','define','tools_automations','lodash','util','api','bluebird','request-promise','path'];(function(_0x5d07a8,_0x383775){var _0x37401c=function(_0x5a2e33){while(--_0x5a2e33){_0x5d07a8['push'](_0x5d07a8['shift']());}};_0x37401c(++_0x383775);}(_0x6e8c,0xba));var _0xc6e8=function(_0x4b8abf,_0x39cc9d){_0x4b8abf=_0x4b8abf-0x0;var _0x1473b0=_0x6e8c[_0x4b8abf];return _0x1473b0;};'use strict';var _=require(_0xc6e8('0x0'));var util=require(_0xc6e8('0x1'));var logger=require('../../config/logger')(_0xc6e8('0x2'));var moment=require('moment');var BPromise=require(_0xc6e8('0x3'));var rp=require(_0xc6e8('0x4'));var fs=require('fs');var path=require(_0xc6e8('0x5'));var rimraf=require(_0xc6e8('0x6'));var config=require(_0xc6e8('0x7'));var attributes=require(_0xc6e8('0x8'));module[_0xc6e8('0x9')]=function(_0x42c2e5,_0x4703c5){return _0x42c2e5[_0xc6e8('0xa')]('Automation',attributes,{'tableName':_0xc6e8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e6fddb..94689e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b2=['jayson/promise','client','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x769941,_0x50e759){var _0x19e649=function(_0xa52ea5){while(--_0xa52ea5){_0x769941['push'](_0x769941['shift']());}};_0x19e649(++_0x50e759);}(_0x26b2,0xc5));var _0x226b=function(_0x4acff1,_0x40bb73){_0x4acff1=_0x4acff1-0x0;var _0x7d1875=_0x26b2[_0x4acff1];return _0x7d1875;};'use strict';var _=require(_0x226b('0x0'));var util=require(_0x226b('0x1'));var moment=require(_0x226b('0x2'));var BPromise=require('bluebird');var rs=require(_0x226b('0x3'));var fs=require('fs');var Redis=require(_0x226b('0x4'));var db=require(_0x226b('0x5'))['db'];var utils=require(_0x226b('0x6'));var logger=require(_0x226b('0x7'))(_0x226b('0x8'));var config=require(_0x226b('0x9'));var jayson=require(_0x226b('0xa'));var client=jayson[_0x226b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7997dc,_0x4eb496,_0x15b465){return new BPromise(function(_0x28d0f8,_0x2cd2db){return client['request'](_0x7997dc,_0x15b465)['then'](function(_0x1fea7e){logger[_0x226b('0xc')](_0x226b('0xd'),_0x4eb496,_0x226b('0xe'));logger[_0x226b('0xf')](_0x226b('0x10'),_0x4eb496,'request\x20sent',JSON[_0x226b('0x11')](_0x1fea7e));if(_0x1fea7e['error']){if(_0x1fea7e[_0x226b('0x12')][_0x226b('0x13')]===0x1f4){logger[_0x226b('0x12')](_0x226b('0xd'),_0x4eb496,_0x1fea7e[_0x226b('0x12')][_0x226b('0x14')]);return _0x2cd2db(_0x1fea7e['error'][_0x226b('0x14')]);}logger[_0x226b('0x12')](_0x226b('0xd'),_0x4eb496,_0x1fea7e[_0x226b('0x12')]['message']);return _0x28d0f8(_0x1fea7e[_0x226b('0x12')][_0x226b('0x14')]);}else{logger[_0x226b('0xc')](_0x226b('0xd'),_0x4eb496,_0x226b('0xe'));_0x28d0f8(_0x1fea7e[_0x226b('0x15')]['message']);}})[_0x226b('0x16')](function(_0xadda16){logger[_0x226b('0x12')](_0x226b('0xd'),_0x4eb496,_0xadda16);_0x2cd2db(_0xadda16);});});}
\ No newline at end of file
+var _0x0570=['request','then','Automation,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','info','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x1ebc6c,_0x58a00b){var _0x3a826d=function(_0x27d7eb){while(--_0x27d7eb){_0x1ebc6c['push'](_0x1ebc6c['shift']());}};_0x3a826d(++_0x58a00b);}(_0x0570,0x172));var _0x0057=function(_0x27c3ab,_0x54f851){_0x27c3ab=_0x27c3ab-0x0;var _0x464e6b=_0x0570[_0x27c3ab];return _0x464e6b;};'use strict';var _=require('lodash');var util=require(_0x0057('0x0'));var moment=require(_0x0057('0x1'));var BPromise=require(_0x0057('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0057('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0057('0x4'));var logger=require('../../config/logger')(_0x0057('0x5'));var config=require(_0x0057('0x6'));var jayson=require(_0x0057('0x7'));var client=jayson[_0x0057('0x8')][_0x0057('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5096e2,_0xc86734,_0x529f55){return new BPromise(function(_0x15d424,_0x2f9d7f){return client[_0x0057('0xa')](_0x5096e2,_0x529f55)[_0x0057('0xb')](function(_0x29b7c6){logger['info'](_0x0057('0xc'),_0xc86734,_0x0057('0xd'));logger[_0x0057('0xe')]('Automation,\x20%s,\x20%s,\x20%s',_0xc86734,_0x0057('0xd'),JSON[_0x0057('0xf')](_0x29b7c6));if(_0x29b7c6['error']){if(_0x29b7c6['error'][_0x0057('0x10')]===0x1f4){logger[_0x0057('0x11')](_0x0057('0xc'),_0xc86734,_0x29b7c6['error'][_0x0057('0x12')]);return _0x2f9d7f(_0x29b7c6[_0x0057('0x11')][_0x0057('0x12')]);}logger[_0x0057('0x11')]('Automation,\x20%s,\x20%s',_0xc86734,_0x29b7c6[_0x0057('0x11')][_0x0057('0x12')]);return _0x15d424(_0x29b7c6['error'][_0x0057('0x12')]);}else{logger[_0x0057('0x13')]('Automation,\x20%s,\x20%s',_0xc86734,_0x0057('0xd'));_0x15d424(_0x29b7c6['result'][_0x0057('0x12')]);}})['catch'](function(_0x4be851){logger[_0x0057('0x11')]('Automation,\x20%s,\x20%s',_0xc86734,_0x4be851);_0x2f9d7f(_0x4be851);});});}
\ No newline at end of file
index edccbc6..1861f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e1e=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./automation.controller','get','index','/:id','isAuthenticated','show','/:id/conditions','getConditions','/:id/actions','post','create','addConditions','addActions','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5b3f65,_0x237228){var _0x40de63=function(_0x1f9bc2){while(--_0x1f9bc2){_0x5b3f65['push'](_0x5b3f65['shift']());}};_0x40de63(++_0x237228);}(_0x7e1e,0x183));var _0xe7e1=function(_0x316f7a,_0x131ed1){_0x316f7a=_0x316f7a-0x0;var _0x3d69a4=_0x7e1e[_0x316f7a];return _0x3d69a4;};'use strict';var multer=require(_0xe7e1('0x0'));var util=require(_0xe7e1('0x1'));var path=require(_0xe7e1('0x2'));var timeout=require(_0xe7e1('0x3'));var express=require('express');var router=express[_0xe7e1('0x4')]();var fs_extra=require(_0xe7e1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe7e1('0x6'));var config=require(_0xe7e1('0x7'));var controller=require(_0xe7e1('0x8'));router[_0xe7e1('0x9')]('/',auth['isAuthenticated'](),controller[_0xe7e1('0xa')]);router[_0xe7e1('0x9')](_0xe7e1('0xb'),auth[_0xe7e1('0xc')](),controller[_0xe7e1('0xd')]);router[_0xe7e1('0x9')](_0xe7e1('0xe'),auth[_0xe7e1('0xc')](),controller[_0xe7e1('0xf')]);router[_0xe7e1('0x9')](_0xe7e1('0x10'),auth[_0xe7e1('0xc')](),controller['getActions']);router[_0xe7e1('0x11')]('/',auth[_0xe7e1('0xc')](),controller[_0xe7e1('0x12')]);router[_0xe7e1('0x11')]('/:id/conditions',auth[_0xe7e1('0xc')](),controller[_0xe7e1('0x13')]);router[_0xe7e1('0x11')](_0xe7e1('0x10'),auth[_0xe7e1('0xc')](),controller[_0xe7e1('0x14')]);router[_0xe7e1('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xe7e1('0x16')]);router[_0xe7e1('0x17')](_0xe7e1('0xb'),auth['isAuthenticated'](),controller[_0xe7e1('0x18')]);module[_0xe7e1('0x19')]=router;
\ No newline at end of file
+var _0xd246=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/conditions','post','create','/:id/actions','update'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd246,0xf5));var _0x6d24=function(_0x2ca9f1,_0xff9bd3){_0x2ca9f1=_0x2ca9f1-0x0;var _0x73f4a7=_0xd246[_0x2ca9f1];return _0x73f4a7;};'use strict';var multer=require(_0x6d24('0x0'));var util=require(_0x6d24('0x1'));var path=require(_0x6d24('0x2'));var timeout=require(_0x6d24('0x3'));var express=require(_0x6d24('0x4'));var router=express[_0x6d24('0x5')]();var fs_extra=require(_0x6d24('0x6'));var auth=require(_0x6d24('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6d24('0x8'));var controller=require('./automation.controller');router[_0x6d24('0x9')]('/',auth['isAuthenticated'](),controller[_0x6d24('0xa')]);router[_0x6d24('0x9')](_0x6d24('0xb'),auth[_0x6d24('0xc')](),controller[_0x6d24('0xd')]);router[_0x6d24('0x9')](_0x6d24('0xe'),auth['isAuthenticated'](),controller['getConditions']);router[_0x6d24('0x9')]('/:id/actions',auth[_0x6d24('0xc')](),controller['getActions']);router[_0x6d24('0xf')]('/',auth['isAuthenticated'](),controller[_0x6d24('0x10')]);router[_0x6d24('0xf')]('/:id/conditions',auth[_0x6d24('0xc')](),controller['addConditions']);router[_0x6d24('0xf')](_0x6d24('0x11'),auth['isAuthenticated'](),controller['addActions']);router['put'](_0x6d24('0xb'),auth[_0x6d24('0xc')](),controller[_0x6d24('0x12')]);router[_0x6d24('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x6d24('0x14')]);module[_0x6d24('0x15')]=router;
\ No newline at end of file
index 8d4fc43..287915c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a5c=['Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','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)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','INTEGER','UNSIGNED','#Congestion\x20Retry\x20(min:1,\x20max:999)'];(function(_0x240959,_0x5b2b57){var _0x1278c2=function(_0x565635){while(--_0x565635){_0x240959['push'](_0x240959['shift']());}};_0x1278c2(++_0x5b2b57);}(_0x8a5c,0x136));var _0xc8a5=function(_0x2598a2,_0x5d19a7){_0x2598a2=_0x2598a2-0x0;var _0x3d0394=_0x8a5c[_0x2598a2];return _0x3d0394;};'use strict';var Sequelize=require(_0xc8a5('0x0'));module[_0xc8a5('0x1')]={'name':{'type':Sequelize[_0xc8a5('0x2')],'unique':_0xc8a5('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xc8a5('0x4')](_0xc8a5('0x5')),'allowNull':![],'defaultValue':_0xc8a5('0x5')},'description':{'type':Sequelize[_0xc8a5('0x2')]},'active':{'type':Sequelize[_0xc8a5('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0xc8a5('0x7')](0x4)[_0xc8a5('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0xc8a5('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc8a5('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc8a5('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc8a5('0x7')](0x5)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc8a5('0xb')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc8a5('0x8')],'defaultValue':0x3,'comment':_0xc8a5('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc8a5('0x7')](0x5)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0xe')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc8a5('0xf')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc8a5('0x2')],'defaultValue':_0xc8a5('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0xc8a5('0x4')](_0xc8a5('0x11'),_0xc8a5('0x12'),_0xc8a5('0x13')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xc8a5('0x6')],'defaultValue':0x0,'comment':_0xc8a5('0x14')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc8a5('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc8a5('0x15')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xc8a5('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc8a5('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc8a5('0x7')](0x9)[_0xc8a5('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc8a5('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xc8a5('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xc8a5('0x7')](0x9)[_0xc8a5('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc8a5('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc8a5('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc8a5('0x7')](0x9)[_0xc8a5('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc8a5('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc8a5('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc8a5('0x7')](0x9)[_0xc8a5('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc8a5('0x1b')},'dialOrderByScheduledAt':{'type':Sequelize[_0xc8a5('0x4')](_0xc8a5('0x1c'),'ASC'),'defaultValue':_0xc8a5('0x1c')},'dialPrefix':{'type':Sequelize[_0xc8a5('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc8a5('0x1d')},'dialCutDigit':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc8a5('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc8a5('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc8a5('0x1f')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc8a5('0x7')](0x5)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0x20')},'dialDropMaxRetry':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc8a5('0x21')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc8a5('0x23')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc8a5('0x7')](0x5)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xc8a5('0x7')](0x5)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0x25')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc8a5('0x7')](0x3)[_0xc8a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc8a5('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc8a5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc8a5('0x27')}};
\ No newline at end of file
+var _0x93f1=['#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','ivr','BOOLEAN','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','always','never','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x3e18bf,_0x387f5e){var _0x1022e5=function(_0x242ec4){while(--_0x242ec4){_0x3e18bf['push'](_0x3e18bf['shift']());}};_0x1022e5(++_0x387f5e);}(_0x93f1,0x71));var _0x193f=function(_0x3d855b,_0x42d932){_0x3d855b=_0x3d855b-0x0;var _0x3927d1=_0x93f1[_0x3d855b];return _0x3927d1;};'use strict';var Sequelize=require(_0x193f('0x0'));module[_0x193f('0x1')]={'name':{'type':Sequelize[_0x193f('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x193f('0x3')),'allowNull':![],'defaultValue':_0x193f('0x3')},'description':{'type':Sequelize[_0x193f('0x2')]},'active':{'type':Sequelize[_0x193f('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x193f('0x5')](0x4)[_0x193f('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x193f('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0x193f('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x193f('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x193f('0x5')](0x3)[_0x193f('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0x8')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x193f('0x5')](0x3)[_0x193f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)[_0x193f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x193f('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x193f('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)[_0x193f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x193f('0x5')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x193f('0xf')},'dialTimezone':{'type':Sequelize[_0x193f('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x193f('0x2')],'defaultValue':_0x193f('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x193f('0x11')](_0x193f('0x12'),_0x193f('0x13'),'onlyIfOpen'),'defaultValue':_0x193f('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x193f('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x193f('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x193f('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x193f('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x193f('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x193f('0x5')](0x5)[_0x193f('0x6')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x193f('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x193f('0x5')](0x9)[_0x193f('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x193f('0x11')](_0x193f('0x19'),'ASC'),'defaultValue':_0x193f('0x19')},'dialPrefix':{'type':Sequelize[_0x193f('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x193f('0x5')](0x3)[_0x193f('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x193f('0x1a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x193f('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x193f('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0x1b')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0x1c')},'dialDropMaxRetry':{'type':Sequelize[_0x193f('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0x1d')},'dialDropRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)[_0x193f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0x1e')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x193f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0x1f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)[_0x193f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0x20')},'dialMachineMaxRetry':{'type':Sequelize[_0x193f('0x5')](0x3)[_0x193f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x193f('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)[_0x193f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x193f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x193f('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x193f('0x23')}};
\ No newline at end of file
index b382764..594178e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['field','toString','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','select','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','phone','NOW()','cm_hopper_additional_phones','cmHopperId','h.id','ci.item','OrderBy','h.ContactId\x20=\x20ci.CmContactId','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','spread','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','error','stack','name','map','Campaign','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','model','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','IvrCampaigns','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','autoAssociation','UserProfileResource','findOne','CmHopper','CampaignId','filter','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','dialCheckDuplicateType','insert','into','cm_hopper','scheduledAt','ContactId'];(function(_0x5daa9f,_0x5296d2){var _0x112c5b=function(_0x43f2af){while(--_0x43f2af){_0x5daa9f['push'](_0x5daa9f['shift']());}};_0x112c5b(++_0x5296d2);}(_0x10dc,0x13f));var _0xc10d=function(_0x5d5979,_0x3b4921){_0x5d5979=_0x5d5979-0x0;var _0x237182=_0x10dc[_0x5d5979];return _0x237182;};'use strict';var emlformat=require(_0xc10d('0x0'));var rimraf=require(_0xc10d('0x1'));var zipdir=require(_0xc10d('0x2'));var jsonpatch=require(_0xc10d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc10d('0x4'));var path=require(_0xc10d('0x5'));var sox=require(_0xc10d('0x6'));var csv=require(_0xc10d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc10d('0x8'));var _=require(_0xc10d('0x9'));var squel=require(_0xc10d('0xa'));var crypto=require(_0xc10d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xc10d('0xc'));var toCsv=require('to-csv');var querystring=require(_0xc10d('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc10d('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc10d('0xf'));var hardwareService=require(_0xc10d('0x10'));var logger=require(_0xc10d('0x11'))('api');var utils=require(_0xc10d('0x12'));var config=require(_0xc10d('0x13'));var licenseUtil=require(_0xc10d('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33623c,_0x9c38d7){_0x9c38d7=_0x9c38d7||0xcc;return function(_0x33820e){if(_0x33820e){return _0x33623c['sendStatus'](_0x9c38d7);}return _0x33623c[_0xc10d('0x15')](_0x9c38d7)[_0xc10d('0x16')]();};}function respondWithResult(_0xb48092,_0x42f241){_0x42f241=_0x42f241||0xc8;return function(_0x5370f6){if(_0x5370f6){return _0xb48092['status'](_0x42f241)[_0xc10d('0x17')](_0x5370f6);}};}function respondWithFilteredResult(_0x53d1f8,_0x3b68f5){return function(_0x814e86){if(_0x814e86){var _0x3ebfe4=typeof _0x3b68f5[_0xc10d('0x18')]===_0xc10d('0x19')&&typeof _0x3b68f5[_0xc10d('0x1a')]===_0xc10d('0x19');var _0x11e34e=_0x814e86['count'];var _0x3f90f5=_0x3ebfe4?0x0:_0x3b68f5[_0xc10d('0x18')];var _0x117558=_0x3ebfe4?_0x814e86[_0xc10d('0x1b')]:_0x3b68f5['offset']+_0x3b68f5[_0xc10d('0x1a')];var _0x5a6995;if(_0x117558>=_0x11e34e){_0x117558=_0x11e34e;_0x5a6995=0xc8;}else{_0x5a6995=0xce;}_0x53d1f8[_0xc10d('0x15')](_0x5a6995);return _0x53d1f8[_0xc10d('0x1c')]('Content-Range',_0x3f90f5+'-'+_0x117558+'/'+_0x11e34e)[_0xc10d('0x17')](_0x814e86);}return null;};}function patchUpdates(_0x9072bb){return function(_0x157c8b){try{jsonpatch[_0xc10d('0x1d')](_0x157c8b,_0x9072bb,!![]);}catch(_0x166bc1){return BPromise[_0xc10d('0x1e')](_0x166bc1);}return _0x157c8b[_0xc10d('0x1f')]();};}function saveUpdates(_0x13b0f8,_0x4952f6){return function(_0x4616b2){if(_0x4616b2){return _0x4616b2[_0xc10d('0x20')](_0x13b0f8)[_0xc10d('0x21')](function(_0x31a3ff){return _0x31a3ff;});}return null;};}function removeEntity(_0x2762f8,_0x5dbbe4){return function(_0x47b264){if(_0x47b264){return _0x47b264[_0xc10d('0x22')]()[_0xc10d('0x21')](function(){var _0x2d39cc=_0x47b264[_0xc10d('0x23')]({'plain':!![]});var _0x1a7d9a='IvrCampaigns';return db['UserProfileResource'][_0xc10d('0x22')]({'where':{'type':_0x1a7d9a,'resourceId':_0x2d39cc['id']}})['then'](function(){return _0x47b264;});})[_0xc10d('0x21')](function(){_0x2762f8['status'](0xcc)[_0xc10d('0x16')]();});}};}function handleEntityNotFound(_0xa7b67f,_0x239c5a){return function(_0x23d005){if(!_0x23d005){_0xa7b67f['sendStatus'](0x194);}return _0x23d005;};}function handleError(_0x5978fa,_0x55c0ee){_0x55c0ee=_0x55c0ee||0x1f4;return function(_0x3d9d65){logger[_0xc10d('0x24')](_0x3d9d65[_0xc10d('0x25')]);if(_0x3d9d65[_0xc10d('0x26')]){delete _0x3d9d65[_0xc10d('0x26')];}_0x5978fa[_0xc10d('0x15')](_0x55c0ee)['send'](_0x3d9d65);};}exports['index']=function(_0xb73c03,_0x292460){var _0x4fd05c={},_0x2b71e8={},_0x1cadc0={'count':0x0,'rows':[]};var _0x1b1245=_[_0xc10d('0x27')](db[_0xc10d('0x28')][_0xc10d('0x29')],function(_0x3eda66){return{'name':_0x3eda66[_0xc10d('0x2a')],'type':_0x3eda66[_0xc10d('0x2b')][_0xc10d('0x2c')]};});_0x2b71e8['model']=_[_0xc10d('0x27')](_0x1b1245,_0xc10d('0x26'));_0x2b71e8['query']=_[_0xc10d('0x2d')](_0xb73c03[_0xc10d('0x2e')]);_0x2b71e8[_0xc10d('0x2f')]=_[_0xc10d('0x30')](_0x2b71e8['model'],_0x2b71e8[_0xc10d('0x2e')]);_0x4fd05c[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x2b71e8['model'],qs[_0xc10d('0x32')](_0xb73c03[_0xc10d('0x2e')]['fields']));_0x4fd05c[_0xc10d('0x31')]=_0x4fd05c[_0xc10d('0x31')][_0xc10d('0x33')]?_0x4fd05c[_0xc10d('0x31')]:_0x2b71e8['model'];if(!_0xb73c03[_0xc10d('0x2e')][_0xc10d('0x34')](_0xc10d('0x35'))){_0x4fd05c[_0xc10d('0x1a')]=qs[_0xc10d('0x1a')](_0xb73c03[_0xc10d('0x2e')][_0xc10d('0x1a')]);_0x4fd05c[_0xc10d('0x18')]=qs[_0xc10d('0x18')](_0xb73c03[_0xc10d('0x2e')][_0xc10d('0x18')]);}_0x4fd05c[_0xc10d('0x36')]=qs['sort'](_0xb73c03[_0xc10d('0x2e')][_0xc10d('0x37')]);_0x4fd05c[_0xc10d('0x38')]=qs[_0xc10d('0x2f')](_[_0xc10d('0x39')](_0xb73c03[_0xc10d('0x2e')],_0x2b71e8[_0xc10d('0x2f')]),_0x1b1245);if(_0xb73c03[_0xc10d('0x2e')]['filter']){_0x4fd05c[_0xc10d('0x38')]=_[_0xc10d('0x3a')](_0x4fd05c[_0xc10d('0x38')],{'$or':_[_0xc10d('0x27')](_0x1b1245,function(_0x501f59){if(_0x501f59[_0xc10d('0x2b')]!==_0xc10d('0x3b')){var _0x19de5a={};_0x19de5a[_0x501f59[_0xc10d('0x26')]]={'$like':'%'+_0xb73c03[_0xc10d('0x2e')]['filter']+'%'};return _0x19de5a;}})});}_0x4fd05c=_[_0xc10d('0x3a')]({},_0x4fd05c,_0xb73c03['options']);var _0x114f87={'where':_0x4fd05c[_0xc10d('0x38')]};return db[_0xc10d('0x28')]['count'](_0x114f87)[_0xc10d('0x21')](function(_0x1ddb8c){_0x1cadc0[_0xc10d('0x1b')]=_0x1ddb8c;if(_0xb73c03['query'][_0xc10d('0x3c')]){_0x4fd05c[_0xc10d('0x3d')]=[{'all':!![]}];}return db[_0xc10d('0x28')][_0xc10d('0x3e')](_0x4fd05c);})[_0xc10d('0x21')](function(_0x23fad2){_0x1cadc0[_0xc10d('0x3f')]=_0x23fad2;return _0x1cadc0;})[_0xc10d('0x21')](respondWithFilteredResult(_0x292460,_0x4fd05c))['catch'](handleError(_0x292460,null));};exports[_0xc10d('0x40')]=function(_0x32142e,_0x2d38c5){var _0x94cc1f={'raw':![],'where':{'id':_0x32142e[_0xc10d('0x41')]['id']}},_0x7c98de={};_0x7c98de['model']=_['keys'](db[_0xc10d('0x28')][_0xc10d('0x29')]);_0x7c98de['query']=_[_0xc10d('0x2d')](_0x32142e[_0xc10d('0x2e')]);_0x7c98de[_0xc10d('0x2f')]=_[_0xc10d('0x30')](_0x7c98de[_0xc10d('0x42')],_0x7c98de[_0xc10d('0x2e')]);_0x94cc1f[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x7c98de['model'],qs[_0xc10d('0x32')](_0x32142e['query'][_0xc10d('0x32')]));_0x94cc1f[_0xc10d('0x31')]=_0x94cc1f[_0xc10d('0x31')]['length']?_0x94cc1f[_0xc10d('0x31')]:_0x7c98de['model'];if(_0x32142e[_0xc10d('0x2e')]['includeAll']){_0x94cc1f[_0xc10d('0x3d')]=[{'all':!![]}];}_0x94cc1f=_['merge']({},_0x94cc1f,_0x32142e[_0xc10d('0x43')]);return db[_0xc10d('0x28')][_0xc10d('0x44')](_0x94cc1f)[_0xc10d('0x21')](handleEntityNotFound(_0x2d38c5,null))[_0xc10d('0x21')](respondWithResult(_0x2d38c5,null))[_0xc10d('0x45')](handleError(_0x2d38c5,null));};exports['create']=function(_0x29aa5c,_0x399005){return db[_0xc10d('0x28')][_0xc10d('0x46')](_0x29aa5c[_0xc10d('0x47')],{})['then'](function(_0xdd2e75){var _0x57f066=_0x29aa5c[_0xc10d('0x48')]['get']({'plain':!![]});if(!_0x57f066)throw new Error(_0xc10d('0x49'));if(_0x57f066[_0xc10d('0x4a')]==='user'){var _0xfa39f4=_0xdd2e75['get']({'plain':!![]});var _0x3cfe9e=_0xc10d('0x4b');return db[_0xc10d('0x4c')][_0xc10d('0x44')]({'where':{'name':_0x3cfe9e,'userProfileId':_0x57f066[_0xc10d('0x4d')]},'raw':!![]})[_0xc10d('0x21')](function(_0x36b774){if(_0x36b774&&_0x36b774['autoAssociation']===0x0){return db['UserProfileResource'][_0xc10d('0x46')]({'name':_0xfa39f4[_0xc10d('0x26')],'resourceId':_0xfa39f4['id'],'type':_0x36b774['name'],'sectionId':_0x36b774['id']},{})[_0xc10d('0x21')](function(){return _0xdd2e75;});}else{return _0xdd2e75;}})['catch'](function(_0x5aab09){logger[_0xc10d('0x24')](_0xc10d('0x4e'),_0x5aab09);throw _0x5aab09;});}return _0xdd2e75;})['then'](respondWithResult(_0x399005,0xc9))[_0xc10d('0x45')](handleError(_0x399005,null));};exports[_0xc10d('0x4f')]=function(_0x314d8e,_0xefbca){var _0x3870ff={'where':{'id':_0x314d8e[_0xc10d('0x41')]['id']}},_0x1d6647={};_0x1d6647['model']=_[_0xc10d('0x2d')](db[_0xc10d('0x28')][_0xc10d('0x29')]);_0x3870ff[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x1d6647['model'],qs[_0xc10d('0x32')](_0x314d8e[_0xc10d('0x2e')][_0xc10d('0x32')]));_0x3870ff[_0xc10d('0x31')]=_0x3870ff[_0xc10d('0x31')][_0xc10d('0x33')]?_0x3870ff[_0xc10d('0x31')]:_0x1d6647[_0xc10d('0x42')];if(_0x314d8e[_0xc10d('0x2e')][_0xc10d('0x3c')]){_0x3870ff[_0xc10d('0x3d')]=[{'all':!![]}];}_0x3870ff=_[_0xc10d('0x3a')]({},_0x3870ff,_0x314d8e['options']);return db[_0xc10d('0x28')][_0xc10d('0x44')](_0x3870ff)[_0xc10d('0x21')](handleEntityNotFound(_0xefbca,null))['then'](function(_0x33e0bb){if(_0x33e0bb){var _0x4f52be=_0x33e0bb[_0xc10d('0x23')]({'plain':!![]});_0x4f52be=qs[_0xc10d('0x50')](_0x4f52be,['id','createdAt','updatedAt']);_0x314d8e[_0xc10d('0x47')]=_['omit'](_0x314d8e[_0xc10d('0x47')],['id',_0xc10d('0x51'),_0xc10d('0x52')]);return db['Campaign']['create'](_[_0xc10d('0x3a')](_0x4f52be,_0x314d8e[_0xc10d('0x47')]),{'include':_0x314d8e[_0xc10d('0x2e')]['includeAll']?[{'all':!![]}]:undefined})[_0xc10d('0x21')](function(_0x5093ef){var _0x306345=_0x314d8e[_0xc10d('0x48')][_0xc10d('0x23')]({'plain':!![]});if(!_0x306345)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x306345[_0xc10d('0x4a')]===_0xc10d('0x48')){var _0x4c1929=_0x5093ef['get']({'plain':!![]});var _0x106283=_0xc10d('0x4b');return db[_0xc10d('0x4c')]['find']({'where':{'name':_0x106283,'userProfileId':_0x306345['userProfileId']},'raw':!![]})[_0xc10d('0x21')](function(_0x2a218e){if(_0x2a218e&&_0x2a218e[_0xc10d('0x53')]===0x0){return db[_0xc10d('0x54')]['create']({'name':_0x4c1929['name'],'resourceId':_0x4c1929['id'],'type':_0x2a218e[_0xc10d('0x26')],'sectionId':_0x2a218e['id']},{})[_0xc10d('0x21')](function(){return _0x5093ef;});}else{return _0x5093ef;}})[_0xc10d('0x45')](function(_0x49c37d){logger[_0xc10d('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x49c37d);throw _0x49c37d;});}return _0x5093ef;});}})[_0xc10d('0x21')](respondWithResult(_0xefbca,0xc9))[_0xc10d('0x45')](handleError(_0xefbca,null));};exports[_0xc10d('0x20')]=function(_0x1a02dd,_0x28f426){if(_0x1a02dd['body']['id']){delete _0x1a02dd['body']['id'];}return db['Campaign'][_0xc10d('0x44')]({'where':{'id':_0x1a02dd[_0xc10d('0x41')]['id']}})['then'](handleEntityNotFound(_0x28f426,null))['then'](saveUpdates(_0x1a02dd[_0xc10d('0x47')],null))['then'](respondWithResult(_0x28f426,null))['catch'](handleError(_0x28f426,null));};exports[_0xc10d('0x22')]=function(_0x306281,_0x3b9344){return db[_0xc10d('0x28')][_0xc10d('0x44')]({'where':{'id':_0x306281[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x3b9344,null))[_0xc10d('0x21')](removeEntity(_0x3b9344,null))[_0xc10d('0x45')](handleError(_0x3b9344,null));};exports['getHoppers']=function(_0x29828a,_0x28e00e,_0x3d5996){var _0x26adce={'raw':!![],'where':{}};var _0x5f4082={};var _0x1b3136={'count':0x0,'rows':[]};return db[_0xc10d('0x28')][_0xc10d('0x55')]({'where':{'id':_0x29828a[_0xc10d('0x41')]['id']}})['then'](handleEntityNotFound(_0x28e00e,null))[_0xc10d('0x21')](function(_0x41f2a2){if(_0x41f2a2){_0x5f4082['model']=_[_0xc10d('0x2d')](db[_0xc10d('0x56')][_0xc10d('0x29')]);_0x5f4082[_0xc10d('0x2e')]=_[_0xc10d('0x2d')](_0x29828a[_0xc10d('0x2e')]);_0x5f4082['filters']=_['intersection'](_0x5f4082[_0xc10d('0x42')],_0x5f4082[_0xc10d('0x2e')]);_0x26adce[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x5f4082[_0xc10d('0x42')],qs[_0xc10d('0x32')](_0x29828a['query'][_0xc10d('0x32')]));_0x26adce[_0xc10d('0x31')]=_0x26adce[_0xc10d('0x31')][_0xc10d('0x33')]?_0x26adce[_0xc10d('0x31')]:_0x5f4082['model'];if(!_0x29828a[_0xc10d('0x2e')][_0xc10d('0x34')](_0xc10d('0x35'))){_0x26adce[_0xc10d('0x1a')]=qs[_0xc10d('0x1a')](_0x29828a[_0xc10d('0x2e')]['limit']);_0x26adce[_0xc10d('0x18')]=qs[_0xc10d('0x18')](_0x29828a[_0xc10d('0x2e')][_0xc10d('0x18')]);}_0x26adce[_0xc10d('0x36')]=qs['sort'](_0x29828a[_0xc10d('0x2e')][_0xc10d('0x37')]);_0x26adce[_0xc10d('0x38')]=qs[_0xc10d('0x2f')](_[_0xc10d('0x39')](_0x29828a[_0xc10d('0x2e')],_0x5f4082[_0xc10d('0x2f')]));_0x26adce['where'][_0xc10d('0x57')]=_0x41f2a2['id'];if(_0x29828a[_0xc10d('0x2e')][_0xc10d('0x58')]){_0x26adce[_0xc10d('0x38')]=_[_0xc10d('0x3a')](_0x26adce[_0xc10d('0x38')],{'$or':_[_0xc10d('0x27')](_0x26adce[_0xc10d('0x31')],function(_0x5ea672){var _0x54de19={};_0x54de19[_0x5ea672]={'$like':'%'+_0x29828a['query']['filter']+'%'};return _0x54de19;})});}_0x26adce=_[_0xc10d('0x3a')]({},_0x26adce,_0x29828a[_0xc10d('0x43')]);return db[_0xc10d('0x56')][_0xc10d('0x1b')]({'where':_0x26adce[_0xc10d('0x38')]})[_0xc10d('0x21')](function(_0xe5989d){_0x1b3136[_0xc10d('0x1b')]=_0xe5989d;if(_0x29828a[_0xc10d('0x2e')][_0xc10d('0x3c')]){_0x26adce['include']=[{'all':!![]}];}return db[_0xc10d('0x56')]['findAll'](_0x26adce);})[_0xc10d('0x21')](function(_0xe8c9e1){_0x1b3136[_0xc10d('0x3f')]=_0xe8c9e1;return _0x1b3136;});}})[_0xc10d('0x21')](respondWithFilteredResult(_0x28e00e,_0x26adce))[_0xc10d('0x45')](handleError(_0x28e00e,null));};exports[_0xc10d('0x59')]=function(_0xfa9009,_0x726208,_0xe272c8){var _0x111dac={'raw':!![],'where':{}};var _0x39dd76={};var _0x53f198={'count':0x0,'rows':[]};return db[_0xc10d('0x28')][_0xc10d('0x55')]({'where':{'id':_0xfa9009['params']['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x726208,null))[_0xc10d('0x21')](function(_0x2b24a5){if(_0x2b24a5){_0x39dd76[_0xc10d('0x42')]=_[_0xc10d('0x2d')](db['CmHopperHistory'][_0xc10d('0x29')]);_0x39dd76[_0xc10d('0x2e')]=_[_0xc10d('0x2d')](_0xfa9009['query']);_0x39dd76[_0xc10d('0x2f')]=_[_0xc10d('0x30')](_0x39dd76[_0xc10d('0x42')],_0x39dd76['query']);_0x111dac[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x39dd76['model'],qs[_0xc10d('0x32')](_0xfa9009['query'][_0xc10d('0x32')]));_0x111dac[_0xc10d('0x31')]=_0x111dac[_0xc10d('0x31')][_0xc10d('0x33')]?_0x111dac['attributes']:_0x39dd76[_0xc10d('0x42')];if(!_0xfa9009[_0xc10d('0x2e')][_0xc10d('0x34')](_0xc10d('0x35'))){_0x111dac['limit']=qs[_0xc10d('0x1a')](_0xfa9009[_0xc10d('0x2e')]['limit']);_0x111dac[_0xc10d('0x18')]=qs['offset'](_0xfa9009[_0xc10d('0x2e')][_0xc10d('0x18')]);}_0x111dac[_0xc10d('0x36')]=qs[_0xc10d('0x37')](_0xfa9009[_0xc10d('0x2e')]['sort']);_0x111dac[_0xc10d('0x38')]=qs[_0xc10d('0x2f')](_[_0xc10d('0x39')](_0xfa9009['query'],_0x39dd76['filters']));_0x111dac[_0xc10d('0x38')][_0xc10d('0x57')]=_0x2b24a5['id'];if(_0xfa9009[_0xc10d('0x2e')][_0xc10d('0x58')]){_0x111dac[_0xc10d('0x38')]=_[_0xc10d('0x3a')](_0x111dac[_0xc10d('0x38')],{'$or':_[_0xc10d('0x27')](_0x111dac[_0xc10d('0x31')],function(_0x1e87d8){var _0x3fa726={};_0x3fa726[_0x1e87d8]={'$like':'%'+_0xfa9009[_0xc10d('0x2e')]['filter']+'%'};return _0x3fa726;})});}_0x111dac=_['merge']({},_0x111dac,_0xfa9009[_0xc10d('0x43')]);return db[_0xc10d('0x5a')][_0xc10d('0x1b')]({'where':_0x111dac[_0xc10d('0x38')]})[_0xc10d('0x21')](function(_0x606f42){_0x53f198[_0xc10d('0x1b')]=_0x606f42;if(_0xfa9009['query'][_0xc10d('0x3c')]){_0x111dac[_0xc10d('0x3d')]=[{'all':!![]}];}return db[_0xc10d('0x5a')][_0xc10d('0x3e')](_0x111dac);})[_0xc10d('0x21')](function(_0x34dfa5){_0x53f198[_0xc10d('0x3f')]=_0x34dfa5;return _0x53f198;});}})['then'](respondWithFilteredResult(_0x726208,_0x111dac))[_0xc10d('0x45')](handleError(_0x726208,null));};exports[_0xc10d('0x5b')]=function(_0x814458,_0x30472b,_0x3dfc67){var _0x2150e0={'raw':!![],'where':{}};var _0xa4e2be={};var _0x228f51={'count':0x0,'rows':[]};return db[_0xc10d('0x28')]['findOne']({'where':{'id':_0x814458[_0xc10d('0x41')]['id']}})['then'](handleEntityNotFound(_0x30472b,null))[_0xc10d('0x21')](function(_0x404253){if(_0x404253){_0xa4e2be[_0xc10d('0x42')]=_[_0xc10d('0x2d')](db[_0xc10d('0x5c')][_0xc10d('0x29')]);_0xa4e2be['query']=_[_0xc10d('0x2d')](_0x814458[_0xc10d('0x2e')]);_0xa4e2be[_0xc10d('0x2f')]=_[_0xc10d('0x30')](_0xa4e2be['model'],_0xa4e2be[_0xc10d('0x2e')]);_0x2150e0[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0xa4e2be[_0xc10d('0x42')],qs[_0xc10d('0x32')](_0x814458[_0xc10d('0x2e')][_0xc10d('0x32')]));_0x2150e0[_0xc10d('0x31')]=_0x2150e0['attributes'][_0xc10d('0x33')]?_0x2150e0['attributes']:_0xa4e2be[_0xc10d('0x42')];if(!_0x814458[_0xc10d('0x2e')][_0xc10d('0x34')]('nolimit')){_0x2150e0[_0xc10d('0x1a')]=qs[_0xc10d('0x1a')](_0x814458[_0xc10d('0x2e')]['limit']);_0x2150e0[_0xc10d('0x18')]=qs[_0xc10d('0x18')](_0x814458[_0xc10d('0x2e')][_0xc10d('0x18')]);}_0x2150e0[_0xc10d('0x36')]=qs[_0xc10d('0x37')](_0x814458[_0xc10d('0x2e')][_0xc10d('0x37')]);_0x2150e0[_0xc10d('0x38')]=qs[_0xc10d('0x2f')](_['pick'](_0x814458[_0xc10d('0x2e')],_0xa4e2be['filters']));_0x2150e0[_0xc10d('0x38')][_0xc10d('0x57')]=_0x404253['id'];if(_0x814458[_0xc10d('0x2e')][_0xc10d('0x58')]){_0x2150e0[_0xc10d('0x38')]=_['merge'](_0x2150e0[_0xc10d('0x38')],{'$or':_[_0xc10d('0x27')](_0x2150e0[_0xc10d('0x31')],function(_0x4fcb1c){var _0x1e3ca8={};_0x1e3ca8[_0x4fcb1c]={'$like':'%'+_0x814458[_0xc10d('0x2e')][_0xc10d('0x58')]+'%'};return _0x1e3ca8;})});}_0x2150e0=_[_0xc10d('0x3a')]({},_0x2150e0,_0x814458[_0xc10d('0x43')]);return db[_0xc10d('0x5c')]['count']({'where':_0x2150e0['where']})[_0xc10d('0x21')](function(_0x5d3829){_0x228f51[_0xc10d('0x1b')]=_0x5d3829;if(_0x814458['query'][_0xc10d('0x3c')]){_0x2150e0[_0xc10d('0x3d')]=[{'all':!![]}];}return db[_0xc10d('0x5c')][_0xc10d('0x3e')](_0x2150e0);})['then'](function(_0x2e860a){_0x228f51[_0xc10d('0x3f')]=_0x2e860a;return _0x228f51;});}})[_0xc10d('0x21')](respondWithFilteredResult(_0x30472b,_0x2150e0))[_0xc10d('0x45')](handleError(_0x30472b,null));};exports[_0xc10d('0x5d')]=function(_0x3c1716,_0x4173b8,_0x22aa2d){var _0x31fd57={'raw':!![],'where':{}};var _0x53d1d7={};var _0x4fb897={'count':0x0,'rows':[]};return db[_0xc10d('0x28')][_0xc10d('0x55')]({'where':{'id':_0x3c1716['params']['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x4173b8,null))[_0xc10d('0x21')](function(_0x46a5d6){if(_0x46a5d6){_0x53d1d7[_0xc10d('0x42')]=_[_0xc10d('0x2d')](db[_0xc10d('0x5e')][_0xc10d('0x29')]);_0x53d1d7['query']=_[_0xc10d('0x2d')](_0x3c1716[_0xc10d('0x2e')]);_0x53d1d7['filters']=_[_0xc10d('0x30')](_0x53d1d7[_0xc10d('0x42')],_0x53d1d7[_0xc10d('0x2e')]);_0x31fd57['attributes']=_['intersection'](_0x53d1d7[_0xc10d('0x42')],qs['fields'](_0x3c1716[_0xc10d('0x2e')]['fields']));_0x31fd57[_0xc10d('0x31')]=_0x31fd57[_0xc10d('0x31')]['length']?_0x31fd57[_0xc10d('0x31')]:_0x53d1d7[_0xc10d('0x42')];if(!_0x3c1716['query'][_0xc10d('0x34')](_0xc10d('0x35'))){_0x31fd57['limit']=qs['limit'](_0x3c1716[_0xc10d('0x2e')][_0xc10d('0x1a')]);_0x31fd57['offset']=qs[_0xc10d('0x18')](_0x3c1716[_0xc10d('0x2e')][_0xc10d('0x18')]);}_0x31fd57[_0xc10d('0x36')]=qs[_0xc10d('0x37')](_0x3c1716[_0xc10d('0x2e')][_0xc10d('0x37')]);_0x31fd57[_0xc10d('0x38')]=qs[_0xc10d('0x2f')](_['pick'](_0x3c1716[_0xc10d('0x2e')],_0x53d1d7[_0xc10d('0x2f')]));_0x31fd57['where']['CampaignId']=_0x46a5d6['id'];if(_0x3c1716['query']['filter']){_0x31fd57[_0xc10d('0x38')]=_['merge'](_0x31fd57[_0xc10d('0x38')],{'$or':_[_0xc10d('0x27')](_0x31fd57['attributes'],function(_0x3426d5){var _0x5f14a5={};_0x5f14a5[_0x3426d5]={'$like':'%'+_0x3c1716[_0xc10d('0x2e')][_0xc10d('0x58')]+'%'};return _0x5f14a5;})});}_0x31fd57=_[_0xc10d('0x3a')]({},_0x31fd57,_0x3c1716[_0xc10d('0x43')]);return db[_0xc10d('0x5e')]['count']({'where':_0x31fd57[_0xc10d('0x38')]})['then'](function(_0x291a12){_0x4fb897[_0xc10d('0x1b')]=_0x291a12;if(_0x3c1716[_0xc10d('0x2e')][_0xc10d('0x3c')]){_0x31fd57[_0xc10d('0x3d')]=[{'all':!![]}];}return db[_0xc10d('0x5e')][_0xc10d('0x3e')](_0x31fd57);})[_0xc10d('0x21')](function(_0x1b12a0){_0x4fb897['rows']=_0x1b12a0;return _0x4fb897;});}})[_0xc10d('0x21')](respondWithFilteredResult(_0x4173b8,_0x31fd57))[_0xc10d('0x45')](handleError(_0x4173b8,null));};exports[_0xc10d('0x5f')]=function(_0x4649d5,_0x5cb10c,_0x1a28e9){var _0x291f89={};var _0x312917={};var _0x1a56a5;var _0x3398db;return db[_0xc10d('0x28')][_0xc10d('0x55')]({'where':{'id':_0x4649d5[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x5cb10c,null))[_0xc10d('0x21')](function(_0x235c71){if(_0x235c71){_0x1a56a5=_0x235c71;_0x312917['model']=_['keys'](db[_0xc10d('0x60')][_0xc10d('0x29')]);_0x312917[_0xc10d('0x2e')]=_[_0xc10d('0x2d')](_0x4649d5[_0xc10d('0x2e')]);_0x312917['filters']=_[_0xc10d('0x30')](_0x312917[_0xc10d('0x42')],_0x312917['query']);_0x291f89[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x312917[_0xc10d('0x42')],qs[_0xc10d('0x32')](_0x4649d5[_0xc10d('0x2e')]['fields']));_0x291f89[_0xc10d('0x31')]=_0x291f89[_0xc10d('0x31')][_0xc10d('0x33')]?_0x291f89[_0xc10d('0x31')]:_0x312917['model'];_0x291f89[_0xc10d('0x36')]=qs['sort'](_0x4649d5[_0xc10d('0x2e')]['sort']);_0x291f89[_0xc10d('0x38')]=qs[_0xc10d('0x2f')](_['pick'](_0x4649d5[_0xc10d('0x2e')],_0x312917[_0xc10d('0x2f')]));if(_0x4649d5[_0xc10d('0x2e')][_0xc10d('0x58')]){_0x291f89[_0xc10d('0x38')]=_[_0xc10d('0x3a')](_0x291f89[_0xc10d('0x38')],{'$or':_['map'](_0x291f89['attributes'],function(_0x45424e){var _0x584136={};_0x584136[_0x45424e]={'$like':'%'+_0x4649d5[_0xc10d('0x2e')][_0xc10d('0x58')]+'%'};return _0x584136;})});}_0x291f89=_[_0xc10d('0x3a')]({},_0x291f89,_0x4649d5[_0xc10d('0x43')]);return _0x1a56a5[_0xc10d('0x5f')](_0x291f89);}})[_0xc10d('0x21')](function(_0x53a074){if(_0x53a074){_0x3398db=_0x53a074[_0xc10d('0x33')];if(!_0x4649d5[_0xc10d('0x2e')][_0xc10d('0x34')](_0xc10d('0x35'))){_0x291f89[_0xc10d('0x1a')]=qs[_0xc10d('0x1a')](_0x4649d5[_0xc10d('0x2e')]['limit']);_0x291f89['offset']=qs[_0xc10d('0x18')](_0x4649d5[_0xc10d('0x2e')][_0xc10d('0x18')]);}return _0x1a56a5[_0xc10d('0x5f')](_0x291f89);}})[_0xc10d('0x21')](function(_0x2578d8){if(_0x2578d8){return _0x2578d8?{'count':_0x3398db,'rows':_0x2578d8}:null;}})[_0xc10d('0x21')](respondWithResult(_0x5cb10c,null))[_0xc10d('0x45')](handleError(_0x5cb10c,null));};exports[_0xc10d('0x61')]=function(_0xc6990,_0x3f12d6,_0x19e586){var _0x51208d,_0x37671c;var _0x535a26=[];var _0x593fe6=moment()[_0xc10d('0x62')](_0xc10d('0x63'));return db[_0xc10d('0x28')]['find']({'where':{'id':_0xc6990['params']['id']}})['then'](handleEntityNotFound(_0x3f12d6,null))[_0xc10d('0x21')](function(_0x2f2991){if(_0x2f2991){_0x37671c=_0x2f2991;return _0x2f2991['addLists'](_0xc6990[_0xc10d('0x47')][_0xc10d('0x64')],_[_0xc10d('0x50')](_0xc6990[_0xc10d('0x47')],[_0xc10d('0x64'),'id'])||{});}return null;})['spread'](function(_0x1a8af9){var _0x298d80;var _0x3547a1;_0x51208d=_0x1a8af9||[];var _0x1f52d3=[];if(_0x1a8af9){for(var _0x4aa2e2=0x0;_0x4aa2e2<_0x1a8af9[_0xc10d('0x33')];_0x4aa2e2+=0x1){var _0x408c32=_0x1a8af9[_0x4aa2e2][_0xc10d('0x23')]({'plain':!![]});_0x37671c['dialCheckDuplicateType']=_0xc6990[_0xc10d('0x47')][_0xc10d('0x65')]?_0xc6990[_0xc10d('0x47')][_0xc10d('0x65')]:_0x37671c[_0xc10d('0x65')];switch(_0x37671c[_0xc10d('0x65')]){case'always':_0x298d80=squel[_0xc10d('0x66')]()[_0xc10d('0x67')](_0xc10d('0x68'))['fromQuery'](['phone',_0xc10d('0x69'),_0xc10d('0x6a'),'ListId','CampaignId',_0xc10d('0x51'),'updatedAt'],squel['select']()[_0xc10d('0x6b')]('phone','phone')[_0xc10d('0x6b')]('NOW()',_0xc10d('0x69'))[_0xc10d('0x6b')]('id',_0xc10d('0x6a'))[_0xc10d('0x6b')](_0x408c32['CmListId'][_0xc10d('0x6c')](),_0xc10d('0x6d'))['field'](_0xc6990[_0xc10d('0x41')]['id'][_0xc10d('0x6c')](),_0xc10d('0x57'))[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27','createdAt')[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27',_0xc10d('0x52'))[_0xc10d('0x6e')](_0xc10d('0x6f'))[_0xc10d('0x38')](_0xc10d('0x70'))[_0xc10d('0x38')](_0xc10d('0x71'),_0x408c32[_0xc10d('0x72')][_0xc10d('0x6c')]())[_0xc10d('0x38')](_0xc10d('0x73'))['where'](_0xc10d('0x74'),squel['select']()[_0xc10d('0x6b')](_0xc10d('0x75'))[_0xc10d('0x6e')](_0xc10d('0x76'))['where'](_0xc10d('0x77'),_0xc6990[_0xc10d('0x41')]['id'][_0xc10d('0x6c')]()))['where'](_0xc10d('0x74'),squel[_0xc10d('0x78')]()[_0xc10d('0x6b')](_0xc10d('0x79'))[_0xc10d('0x6e')]('cm_hopper')[_0xc10d('0x38')]('CampaignId\x20=\x20?',_0xc6990[_0xc10d('0x41')]['id'][_0xc10d('0x6c')]())))[_0xc10d('0x6c')]();break;case _0xc10d('0x7a'):_0x298d80=squel[_0xc10d('0x66')]()['into'](_0xc10d('0x68'))[_0xc10d('0x7b')](['phone',_0xc10d('0x69'),'ContactId','ListId',_0xc10d('0x57'),_0xc10d('0x51'),_0xc10d('0x52')],squel[_0xc10d('0x78')]()[_0xc10d('0x6b')](_0xc10d('0x7c'),'phone')[_0xc10d('0x6b')](_0xc10d('0x7d'),_0xc10d('0x69'))[_0xc10d('0x6b')]('id','ContactId')['field'](_0x408c32[_0xc10d('0x72')]['toString'](),_0xc10d('0x6d'))[_0xc10d('0x6b')](_0xc6990['params']['id'][_0xc10d('0x6c')](),'CampaignId')[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27',_0xc10d('0x51'))[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27',_0xc10d('0x52'))['from'](_0xc10d('0x6f'))[_0xc10d('0x38')](_0xc10d('0x70'))['where']('ListId\x20=\x20?',_0x408c32[_0xc10d('0x72')]['toString']())[_0xc10d('0x38')](_0xc10d('0x73'))[_0xc10d('0x38')](_0xc10d('0x74'),squel[_0xc10d('0x78')]()['field']('COALESCE(phone,\x27\x27)')[_0xc10d('0x6e')](_0xc10d('0x68'))[_0xc10d('0x38')](_0xc10d('0x77'),_0xc6990[_0xc10d('0x41')]['id']['toString']())))[_0xc10d('0x6c')]();break;default:_0x298d80=squel['insert']()[_0xc10d('0x67')](_0xc10d('0x68'))['fromQuery']([_0xc10d('0x7c'),_0xc10d('0x69'),_0xc10d('0x6a'),'ListId',_0xc10d('0x57'),_0xc10d('0x51'),_0xc10d('0x52')],squel[_0xc10d('0x78')]()[_0xc10d('0x6b')](_0xc10d('0x7c'),_0xc10d('0x7c'))['field'](_0xc10d('0x7d'),_0xc10d('0x69'))['field']('id','ContactId')[_0xc10d('0x6b')](_0x408c32[_0xc10d('0x72')][_0xc10d('0x6c')](),_0xc10d('0x6d'))[_0xc10d('0x6b')](_0xc6990[_0xc10d('0x41')]['id'][_0xc10d('0x6c')](),'CampaignId')['field']('\x27'+_0x593fe6+'\x27',_0xc10d('0x51'))[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27',_0xc10d('0x52'))[_0xc10d('0x6e')]('cm_contacts')[_0xc10d('0x38')](_0xc10d('0x70'))[_0xc10d('0x38')](_0xc10d('0x71'),_0x408c32['CmListId'][_0xc10d('0x6c')]())['where'](_0xc10d('0x73')))['toString']();}_0x3547a1=squel[_0xc10d('0x66')]()[_0xc10d('0x67')](_0xc10d('0x7e'))[_0xc10d('0x7b')]([_0xc10d('0x7f'),'scheduledAt','phone','OrderBy',_0xc10d('0x51'),_0xc10d('0x52')],squel[_0xc10d('0x78')]()[_0xc10d('0x6b')](_0xc10d('0x80'),'id')[_0xc10d('0x6b')](_0xc10d('0x7d'),_0xc10d('0x69'))[_0xc10d('0x6b')](_0xc10d('0x81'),_0xc10d('0x7c'))[_0xc10d('0x6b')]('ci.OrderBY',_0xc10d('0x82'))[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27',_0xc10d('0x51'))[_0xc10d('0x6b')]('\x27'+_0x593fe6+'\x27',_0xc10d('0x52'))[_0xc10d('0x6e')]('cm_contact_has_items','ci')['join']('cm_hopper','h',_0xc10d('0x83'))['where']('h.ListId\x20=\x20?',_0x408c32['CmListId'][_0xc10d('0x6c')]())['where']('h.CampaignId=?',_0xc6990[_0xc10d('0x41')]['id'][_0xc10d('0x6c')]())['where'](_0xc10d('0x84'),_0x593fe6))[_0xc10d('0x6c')]();_0x1f52d3[_0xc10d('0x85')](db[_0xc10d('0x86')][_0xc10d('0x2e')](_0x298d80));_0x535a26[_0xc10d('0x85')](db[_0xc10d('0x86')][_0xc10d('0x2e')](_0x3547a1));}return BPromise['all'](_0x1f52d3);}})[_0xc10d('0x21')](function(){return BPromise[_0xc10d('0x87')](_0x535a26);})[_0xc10d('0x21')](function(){return _0x51208d;})[_0xc10d('0x21')](respondWithResult(_0x3f12d6,null))[_0xc10d('0x45')](handleError(_0x3f12d6,null));};exports[_0xc10d('0x88')]=function(_0x23e6f6,_0x5c6ffa,_0x16708a){return db[_0xc10d('0x28')][_0xc10d('0x44')]({'where':{'id':_0x23e6f6['params']['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x5c6ffa,null))[_0xc10d('0x21')](function(_0x265023){if(_0x265023){return _0x265023['removeLists'](_0x23e6f6[_0xc10d('0x2e')][_0xc10d('0x64')]);}})[_0xc10d('0x21')](function(_0x5adb5f){if(_0x5adb5f){return db[_0xc10d('0x56')][_0xc10d('0x22')]({'where':{'ListId':_0x23e6f6[_0xc10d('0x2e')]['ids'],'CampaignId':_0x23e6f6[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](function(){return _0x5adb5f;});}})[_0xc10d('0x21')](respondWithStatusCode(_0x5c6ffa,null))[_0xc10d('0x45')](handleError(_0x5c6ffa,null));};exports['getBlackLists']=function(_0x262c03,_0x44aa11,_0x34b41f){var _0x4bda89={};var _0x182a80={};var _0xad211;var _0x3de386;return db[_0xc10d('0x28')][_0xc10d('0x55')]({'where':{'id':_0x262c03[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x44aa11,null))[_0xc10d('0x21')](function(_0x3eb514){if(_0x3eb514){_0xad211=_0x3eb514;_0x182a80[_0xc10d('0x42')]=_[_0xc10d('0x2d')](db[_0xc10d('0x60')][_0xc10d('0x29')]);_0x182a80[_0xc10d('0x2e')]=_['keys'](_0x262c03[_0xc10d('0x2e')]);_0x182a80[_0xc10d('0x2f')]=_[_0xc10d('0x30')](_0x182a80[_0xc10d('0x42')],_0x182a80[_0xc10d('0x2e')]);_0x4bda89[_0xc10d('0x31')]=_[_0xc10d('0x30')](_0x182a80['model'],qs[_0xc10d('0x32')](_0x262c03[_0xc10d('0x2e')][_0xc10d('0x32')]));_0x4bda89[_0xc10d('0x31')]=_0x4bda89[_0xc10d('0x31')][_0xc10d('0x33')]?_0x4bda89[_0xc10d('0x31')]:_0x182a80['model'];_0x4bda89[_0xc10d('0x36')]=qs[_0xc10d('0x37')](_0x262c03[_0xc10d('0x2e')][_0xc10d('0x37')]);_0x4bda89['where']=qs[_0xc10d('0x2f')](_['pick'](_0x262c03[_0xc10d('0x2e')],_0x182a80['filters']));if(_0x262c03['query'][_0xc10d('0x58')]){_0x4bda89['where']=_[_0xc10d('0x3a')](_0x4bda89[_0xc10d('0x38')],{'$or':_[_0xc10d('0x27')](_0x4bda89['attributes'],function(_0x45eee0){var _0x2d4a30={};_0x2d4a30[_0x45eee0]={'$like':'%'+_0x262c03['query'][_0xc10d('0x58')]+'%'};return _0x2d4a30;})});}_0x4bda89=_[_0xc10d('0x3a')]({},_0x4bda89,_0x262c03[_0xc10d('0x43')]);return _0xad211[_0xc10d('0x89')](_0x4bda89);}})[_0xc10d('0x21')](function(_0x504cba){if(_0x504cba){_0x3de386=_0x504cba[_0xc10d('0x33')];if(!_0x262c03[_0xc10d('0x2e')][_0xc10d('0x34')](_0xc10d('0x35'))){_0x4bda89['limit']=qs[_0xc10d('0x1a')](_0x262c03['query'][_0xc10d('0x1a')]);_0x4bda89['offset']=qs[_0xc10d('0x18')](_0x262c03[_0xc10d('0x2e')]['offset']);}return _0xad211[_0xc10d('0x89')](_0x4bda89);}})['then'](function(_0x3ec639){if(_0x3ec639){return _0x3ec639?{'count':_0x3de386,'rows':_0x3ec639}:null;}})[_0xc10d('0x21')](respondWithResult(_0x44aa11,null))[_0xc10d('0x45')](handleError(_0x44aa11,null));};exports[_0xc10d('0x8a')]=function(_0x220173,_0x4c7bc4,_0x37f062){var _0x3f0a35,_0x869354;var _0x354cec=[];var _0x1d88fc=moment()[_0xc10d('0x62')](_0xc10d('0x63'));return db[_0xc10d('0x28')]['find']({'where':{'id':_0x220173[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0x4c7bc4,null))[_0xc10d('0x21')](function(_0x3be65b){if(_0x3be65b){_0x869354=_0x3be65b;return _0x3be65b['addBlackLists'](_0x220173['body'][_0xc10d('0x64')],_[_0xc10d('0x50')](_0x220173[_0xc10d('0x47')],[_0xc10d('0x64'),'id'])||{});}return null;})[_0xc10d('0x8b')](function(_0x38f7b2){var _0x43d561;var _0x32b19a;_0x3f0a35=_0x38f7b2||[];var _0x25ee7f=[];if(_0x38f7b2){for(var _0x2af0a5=0x0;_0x2af0a5<_0x38f7b2['length'];_0x2af0a5+=0x1){var _0x5b37b5=_0x38f7b2[_0x2af0a5]['get']({'plain':!![]});_0x43d561=squel['insert']()[_0xc10d('0x67')](_0xc10d('0x8c'))[_0xc10d('0x7b')]([_0xc10d('0x7c'),'ContactId','ListId',_0xc10d('0x57'),_0xc10d('0x51'),'updatedAt'],squel[_0xc10d('0x78')]()[_0xc10d('0x6b')](_0xc10d('0x7c'),'phone')[_0xc10d('0x6b')]('id',_0xc10d('0x6a'))[_0xc10d('0x6b')](_0x5b37b5['CmListId'][_0xc10d('0x6c')](),_0xc10d('0x6d'))[_0xc10d('0x6b')](_0x220173['params']['id']['toString'](),_0xc10d('0x57'))['field'](_0xc10d('0x7d'),_0xc10d('0x51'))[_0xc10d('0x6b')](_0xc10d('0x7d'),_0xc10d('0x52'))[_0xc10d('0x6e')](_0xc10d('0x6f'))[_0xc10d('0x38')](_0xc10d('0x70'))[_0xc10d('0x38')](_0xc10d('0x71'),_0x5b37b5[_0xc10d('0x72')][_0xc10d('0x6c')]())[_0xc10d('0x38')]('phone\x20IS\x20NOT\x20NULL'))[_0xc10d('0x6c')]();_0x25ee7f[_0xc10d('0x85')](db[_0xc10d('0x86')][_0xc10d('0x2e')](_0x43d561));}return BPromise['all'](_0x25ee7f);}})[_0xc10d('0x21')](function(){return _0x3f0a35;})['then'](respondWithResult(_0x4c7bc4,null))[_0xc10d('0x45')](handleError(_0x4c7bc4,null));};exports[_0xc10d('0x8d')]=function(_0x1051fc,_0xde363e,_0x5e9c0e){return db[_0xc10d('0x28')][_0xc10d('0x44')]({'where':{'id':_0x1051fc[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](handleEntityNotFound(_0xde363e,null))[_0xc10d('0x21')](function(_0x49fc21){if(_0x49fc21){return _0x49fc21[_0xc10d('0x8d')](_0x1051fc[_0xc10d('0x2e')][_0xc10d('0x64')]);}})[_0xc10d('0x21')](function(_0x3f1c2d){if(_0x3f1c2d){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x1051fc[_0xc10d('0x2e')]['ids'],'CampaignId':_0x1051fc[_0xc10d('0x41')]['id']}})[_0xc10d('0x21')](function(){return _0x3f1c2d;});}})[_0xc10d('0x21')](respondWithStatusCode(_0xde363e,null))[_0xc10d('0x45')](handleError(_0xde363e,null));};
\ No newline at end of file
+var _0xe1bf=['error','stack','name','index','map','Campaign','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','options','includeAll','findAll','rows','show','params','include','catch','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','find','omit','createdAt','updatedAt','body','role','IvrCampaigns','findOne','CmHopper','getHopperHistories','CmHopperHistory','order','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','fromQuery','scheduledAt','ContactId','ListId','field','phone','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','select','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','cm_hopper','onlyIfOpen','insert','phone\x20IS\x20NOT\x20NULL','COALESCE(phone,\x27\x27)','into','NOW()','cm_hopper_additional_phones','cmHopperId','OrderBy','ci.item','ci.OrderBY','join','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','all','removeLists','getBlackLists','CmList','addBlackLists','removeBlackLists','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get'];(function(_0x40e5e7,_0x5de9fb){var _0x305d7b=function(_0x1f10cd){while(--_0x1f10cd){_0x40e5e7['push'](_0x40e5e7['shift']());}};_0x305d7b(++_0x5de9fb);}(_0xe1bf,0x67));var _0xfe1b=function(_0x529418,_0x4d772c){_0x529418=_0x529418-0x0;var _0x476c3a=_0xe1bf[_0x529418];return _0x476c3a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe1b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfe1b('0x1'));var rp=require(_0xfe1b('0x2'));var moment=require(_0xfe1b('0x3'));var BPromise=require(_0xfe1b('0x4'));var Mustache=require('mustache');var util=require(_0xfe1b('0x5'));var path=require(_0xfe1b('0x6'));var sox=require(_0xfe1b('0x7'));var csv=require(_0xfe1b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfe1b('0x9'));var _=require(_0xfe1b('0xa'));var squel=require(_0xfe1b('0xb'));var crypto=require('crypto');var jsforce=require(_0xfe1b('0xc'));var deskjs=require(_0xfe1b('0xd'));var toCsv=require(_0xfe1b('0x8'));var querystring=require(_0xfe1b('0xe'));var Papa=require(_0xfe1b('0xf'));var Redis=require('ioredis');var authService=require(_0xfe1b('0x10'));var qs=require(_0xfe1b('0x11'));var as=require(_0xfe1b('0x12'));var hardwareService=require(_0xfe1b('0x13'));var logger=require(_0xfe1b('0x14'))(_0xfe1b('0x15'));var utils=require(_0xfe1b('0x16'));var config=require(_0xfe1b('0x17'));var licenseUtil=require(_0xfe1b('0x18'));var db=require(_0xfe1b('0x19'))['db'];function respondWithStatusCode(_0x3fcc68,_0x1d5683){_0x1d5683=_0x1d5683||0xcc;return function(_0x5270ea){if(_0x5270ea){return _0x3fcc68[_0xfe1b('0x1a')](_0x1d5683);}return _0x3fcc68['status'](_0x1d5683)[_0xfe1b('0x1b')]();};}function respondWithResult(_0x217ed5,_0x1b4ad0){_0x1b4ad0=_0x1b4ad0||0xc8;return function(_0x1008d7){if(_0x1008d7){return _0x217ed5[_0xfe1b('0x1c')](_0x1b4ad0)[_0xfe1b('0x1d')](_0x1008d7);}};}function respondWithFilteredResult(_0x41c9a0,_0x5b70df){return function(_0x4d7393){if(_0x4d7393){var _0x1f652d=typeof _0x5b70df[_0xfe1b('0x1e')]==='undefined'&&typeof _0x5b70df[_0xfe1b('0x1f')]===_0xfe1b('0x20');var _0x7aa592=_0x4d7393[_0xfe1b('0x21')];var _0x249f0e=_0x1f652d?0x0:_0x5b70df[_0xfe1b('0x1e')];var _0x5c14b2=_0x1f652d?_0x4d7393['count']:_0x5b70df[_0xfe1b('0x1e')]+_0x5b70df['limit'];var _0x192b4b;if(_0x5c14b2>=_0x7aa592){_0x5c14b2=_0x7aa592;_0x192b4b=0xc8;}else{_0x192b4b=0xce;}_0x41c9a0[_0xfe1b('0x1c')](_0x192b4b);return _0x41c9a0[_0xfe1b('0x22')](_0xfe1b('0x23'),_0x249f0e+'-'+_0x5c14b2+'/'+_0x7aa592)[_0xfe1b('0x1d')](_0x4d7393);}return null;};}function patchUpdates(_0x2ecef2){return function(_0x3d9a47){try{jsonpatch[_0xfe1b('0x24')](_0x3d9a47,_0x2ecef2,!![]);}catch(_0x59dc9e){return BPromise[_0xfe1b('0x25')](_0x59dc9e);}return _0x3d9a47[_0xfe1b('0x26')]();};}function saveUpdates(_0x15d836,_0x28b3a0){return function(_0x483fb3){if(_0x483fb3){return _0x483fb3[_0xfe1b('0x27')](_0x15d836)[_0xfe1b('0x28')](function(_0x58935d){return _0x58935d;});}return null;};}function removeEntity(_0x67118,_0x595be3){return function(_0x5765e8){if(_0x5765e8){return _0x5765e8[_0xfe1b('0x29')]()['then'](function(){var _0x418052=_0x5765e8[_0xfe1b('0x2a')]({'plain':!![]});var _0x5a8efd='IvrCampaigns';return db['UserProfileResource']['destroy']({'where':{'type':_0x5a8efd,'resourceId':_0x418052['id']}})[_0xfe1b('0x28')](function(){return _0x5765e8;});})['then'](function(){_0x67118[_0xfe1b('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x56c045,_0x130509){return function(_0x54e951){if(!_0x54e951){_0x56c045[_0xfe1b('0x1a')](0x194);}return _0x54e951;};}function handleError(_0x1f0370,_0x2477a3){_0x2477a3=_0x2477a3||0x1f4;return function(_0x49b3dc){logger[_0xfe1b('0x2b')](_0x49b3dc[_0xfe1b('0x2c')]);if(_0x49b3dc[_0xfe1b('0x2d')]){delete _0x49b3dc[_0xfe1b('0x2d')];}_0x1f0370[_0xfe1b('0x1c')](_0x2477a3)['send'](_0x49b3dc);};}exports[_0xfe1b('0x2e')]=function(_0x1f7470,_0x21e59a){var _0x139403={},_0x28bdff={},_0x379f2d={'count':0x0,'rows':[]};var _0x1188a8=_[_0xfe1b('0x2f')](db[_0xfe1b('0x30')][_0xfe1b('0x31')],function(_0x1ab189){return{'name':_0x1ab189[_0xfe1b('0x32')],'type':_0x1ab189[_0xfe1b('0x33')][_0xfe1b('0x34')]};});_0x28bdff['model']=_[_0xfe1b('0x2f')](_0x1188a8,_0xfe1b('0x2d'));_0x28bdff[_0xfe1b('0x35')]=_[_0xfe1b('0x36')](_0x1f7470['query']);_0x28bdff['filters']=_[_0xfe1b('0x37')](_0x28bdff[_0xfe1b('0x38')],_0x28bdff['query']);_0x139403[_0xfe1b('0x39')]=_[_0xfe1b('0x37')](_0x28bdff[_0xfe1b('0x38')],qs[_0xfe1b('0x3a')](_0x1f7470[_0xfe1b('0x35')][_0xfe1b('0x3a')]));_0x139403[_0xfe1b('0x39')]=_0x139403[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x139403['attributes']:_0x28bdff[_0xfe1b('0x38')];if(!_0x1f7470['query'][_0xfe1b('0x3c')](_0xfe1b('0x3d'))){_0x139403[_0xfe1b('0x1f')]=qs[_0xfe1b('0x1f')](_0x1f7470['query']['limit']);_0x139403[_0xfe1b('0x1e')]=qs[_0xfe1b('0x1e')](_0x1f7470['query'][_0xfe1b('0x1e')]);}_0x139403['order']=qs[_0xfe1b('0x3e')](_0x1f7470['query'][_0xfe1b('0x3e')]);_0x139403['where']=qs[_0xfe1b('0x3f')](_[_0xfe1b('0x40')](_0x1f7470[_0xfe1b('0x35')],_0x28bdff[_0xfe1b('0x3f')]),_0x1188a8);if(_0x1f7470['query'][_0xfe1b('0x41')]){_0x139403[_0xfe1b('0x42')]=_[_0xfe1b('0x43')](_0x139403['where'],{'$or':_[_0xfe1b('0x2f')](_0x1188a8,function(_0x37050c){if(_0x37050c[_0xfe1b('0x33')]!=='VIRTUAL'){var _0x5224c4={};_0x5224c4[_0x37050c[_0xfe1b('0x2d')]]={'$like':'%'+_0x1f7470[_0xfe1b('0x35')][_0xfe1b('0x41')]+'%'};return _0x5224c4;}})});}_0x139403=_['merge']({},_0x139403,_0x1f7470[_0xfe1b('0x44')]);var _0x34265d={'where':_0x139403[_0xfe1b('0x42')]};return db[_0xfe1b('0x30')][_0xfe1b('0x21')](_0x34265d)['then'](function(_0x1b689c){_0x379f2d[_0xfe1b('0x21')]=_0x1b689c;if(_0x1f7470[_0xfe1b('0x35')][_0xfe1b('0x45')]){_0x139403['include']=[{'all':!![]}];}return db[_0xfe1b('0x30')][_0xfe1b('0x46')](_0x139403);})[_0xfe1b('0x28')](function(_0x2a914d){_0x379f2d[_0xfe1b('0x47')]=_0x2a914d;return _0x379f2d;})[_0xfe1b('0x28')](respondWithFilteredResult(_0x21e59a,_0x139403))['catch'](handleError(_0x21e59a,null));};exports[_0xfe1b('0x48')]=function(_0xa2157b,_0x270e1a){var _0x1d23c5={'raw':![],'where':{'id':_0xa2157b[_0xfe1b('0x49')]['id']}},_0x986ca9={};_0x986ca9[_0xfe1b('0x38')]=_['keys'](db['Campaign'][_0xfe1b('0x31')]);_0x986ca9['query']=_[_0xfe1b('0x36')](_0xa2157b['query']);_0x986ca9[_0xfe1b('0x3f')]=_[_0xfe1b('0x37')](_0x986ca9[_0xfe1b('0x38')],_0x986ca9[_0xfe1b('0x35')]);_0x1d23c5['attributes']=_['intersection'](_0x986ca9[_0xfe1b('0x38')],qs[_0xfe1b('0x3a')](_0xa2157b[_0xfe1b('0x35')]['fields']));_0x1d23c5[_0xfe1b('0x39')]=_0x1d23c5['attributes'][_0xfe1b('0x3b')]?_0x1d23c5['attributes']:_0x986ca9['model'];if(_0xa2157b[_0xfe1b('0x35')]['includeAll']){_0x1d23c5[_0xfe1b('0x4a')]=[{'all':!![]}];}_0x1d23c5=_['merge']({},_0x1d23c5,_0xa2157b[_0xfe1b('0x44')]);return db[_0xfe1b('0x30')]['find'](_0x1d23c5)[_0xfe1b('0x28')](handleEntityNotFound(_0x270e1a,null))['then'](respondWithResult(_0x270e1a,null))[_0xfe1b('0x4b')](handleError(_0x270e1a,null));};exports['create']=function(_0x3f4f6a,_0x3e3149){return db['Campaign']['create'](_0x3f4f6a['body'],{})['then'](function(_0x4a8c30){var _0x60b454=_0x3f4f6a[_0xfe1b('0x4c')]['get']({'plain':!![]});if(!_0x60b454)throw new Error(_0xfe1b('0x4d'));if(_0x60b454['role']===_0xfe1b('0x4c')){var _0x194405=_0x4a8c30['get']({'plain':!![]});var _0x5cf546='IvrCampaigns';return db['UserProfileSection']['find']({'where':{'name':_0x5cf546,'userProfileId':_0x60b454[_0xfe1b('0x4e')]},'raw':!![]})[_0xfe1b('0x28')](function(_0x43cb4b){if(_0x43cb4b&&_0x43cb4b[_0xfe1b('0x4f')]===0x0){return db['UserProfileResource'][_0xfe1b('0x50')]({'name':_0x194405[_0xfe1b('0x2d')],'resourceId':_0x194405['id'],'type':_0x43cb4b[_0xfe1b('0x2d')],'sectionId':_0x43cb4b['id']},{})['then'](function(){return _0x4a8c30;});}else{return _0x4a8c30;}})[_0xfe1b('0x4b')](function(_0x2d4ee0){logger[_0xfe1b('0x2b')](_0xfe1b('0x51'),_0x2d4ee0);throw _0x2d4ee0;});}return _0x4a8c30;})['then'](respondWithResult(_0x3e3149,0xc9))[_0xfe1b('0x4b')](handleError(_0x3e3149,null));};exports[_0xfe1b('0x52')]=function(_0x540e4c,_0x2cdad0){var _0x524a43={'where':{'id':_0x540e4c['params']['id']}},_0x342160={};_0x342160['model']=_['keys'](db[_0xfe1b('0x30')]['rawAttributes']);_0x524a43['attributes']=_['intersection'](_0x342160[_0xfe1b('0x38')],qs[_0xfe1b('0x3a')](_0x540e4c['query'][_0xfe1b('0x3a')]));_0x524a43[_0xfe1b('0x39')]=_0x524a43['attributes'][_0xfe1b('0x3b')]?_0x524a43[_0xfe1b('0x39')]:_0x342160[_0xfe1b('0x38')];if(_0x540e4c[_0xfe1b('0x35')][_0xfe1b('0x45')]){_0x524a43[_0xfe1b('0x4a')]=[{'all':!![]}];}_0x524a43=_['merge']({},_0x524a43,_0x540e4c[_0xfe1b('0x44')]);return db[_0xfe1b('0x30')][_0xfe1b('0x53')](_0x524a43)[_0xfe1b('0x28')](handleEntityNotFound(_0x2cdad0,null))[_0xfe1b('0x28')](function(_0x29a17d){if(_0x29a17d){var _0x4fc27d=_0x29a17d[_0xfe1b('0x2a')]({'plain':!![]});_0x4fc27d=qs[_0xfe1b('0x54')](_0x4fc27d,['id',_0xfe1b('0x55'),_0xfe1b('0x56')]);_0x540e4c[_0xfe1b('0x57')]=_['omit'](_0x540e4c[_0xfe1b('0x57')],['id',_0xfe1b('0x55'),_0xfe1b('0x56')]);return db[_0xfe1b('0x30')][_0xfe1b('0x50')](_['merge'](_0x4fc27d,_0x540e4c[_0xfe1b('0x57')]),{'include':_0x540e4c['query'][_0xfe1b('0x45')]?[{'all':!![]}]:undefined})['then'](function(_0x40e2ff){var _0x2294cb=_0x540e4c[_0xfe1b('0x4c')][_0xfe1b('0x2a')]({'plain':!![]});if(!_0x2294cb)throw new Error(_0xfe1b('0x4d'));if(_0x2294cb[_0xfe1b('0x58')]===_0xfe1b('0x4c')){var _0x92421c=_0x40e2ff[_0xfe1b('0x2a')]({'plain':!![]});var _0xa99c7e=_0xfe1b('0x59');return db['UserProfileSection'][_0xfe1b('0x53')]({'where':{'name':_0xa99c7e,'userProfileId':_0x2294cb[_0xfe1b('0x4e')]},'raw':!![]})[_0xfe1b('0x28')](function(_0x511f71){if(_0x511f71&&_0x511f71[_0xfe1b('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x92421c[_0xfe1b('0x2d')],'resourceId':_0x92421c['id'],'type':_0x511f71[_0xfe1b('0x2d')],'sectionId':_0x511f71['id']},{})[_0xfe1b('0x28')](function(){return _0x40e2ff;});}else{return _0x40e2ff;}})['catch'](function(_0x542c2e){logger[_0xfe1b('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x542c2e);throw _0x542c2e;});}return _0x40e2ff;});}})[_0xfe1b('0x28')](respondWithResult(_0x2cdad0,0xc9))[_0xfe1b('0x4b')](handleError(_0x2cdad0,null));};exports['update']=function(_0x37db78,_0x44058f){if(_0x37db78[_0xfe1b('0x57')]['id']){delete _0x37db78[_0xfe1b('0x57')]['id'];}return db[_0xfe1b('0x30')][_0xfe1b('0x53')]({'where':{'id':_0x37db78[_0xfe1b('0x49')]['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0x44058f,null))[_0xfe1b('0x28')](saveUpdates(_0x37db78[_0xfe1b('0x57')],null))['then'](respondWithResult(_0x44058f,null))[_0xfe1b('0x4b')](handleError(_0x44058f,null));};exports[_0xfe1b('0x29')]=function(_0x2be355,_0x45cd69){return db[_0xfe1b('0x30')][_0xfe1b('0x53')]({'where':{'id':_0x2be355[_0xfe1b('0x49')]['id']}})['then'](handleEntityNotFound(_0x45cd69,null))[_0xfe1b('0x28')](removeEntity(_0x45cd69,null))[_0xfe1b('0x4b')](handleError(_0x45cd69,null));};exports['getHoppers']=function(_0x32b9d8,_0xacad57,_0xcf6240){var _0x767022={'raw':!![],'where':{}};var _0xed5514={};var _0x4849d0={'count':0x0,'rows':[]};return db[_0xfe1b('0x30')][_0xfe1b('0x5a')]({'where':{'id':_0x32b9d8['params']['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0xacad57,null))[_0xfe1b('0x28')](function(_0x212a48){if(_0x212a48){_0xed5514[_0xfe1b('0x38')]=_[_0xfe1b('0x36')](db['CmHopper'][_0xfe1b('0x31')]);_0xed5514['query']=_[_0xfe1b('0x36')](_0x32b9d8[_0xfe1b('0x35')]);_0xed5514[_0xfe1b('0x3f')]=_[_0xfe1b('0x37')](_0xed5514[_0xfe1b('0x38')],_0xed5514[_0xfe1b('0x35')]);_0x767022['attributes']=_[_0xfe1b('0x37')](_0xed5514[_0xfe1b('0x38')],qs[_0xfe1b('0x3a')](_0x32b9d8['query'][_0xfe1b('0x3a')]));_0x767022[_0xfe1b('0x39')]=_0x767022[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x767022[_0xfe1b('0x39')]:_0xed5514[_0xfe1b('0x38')];if(!_0x32b9d8[_0xfe1b('0x35')][_0xfe1b('0x3c')](_0xfe1b('0x3d'))){_0x767022[_0xfe1b('0x1f')]=qs['limit'](_0x32b9d8[_0xfe1b('0x35')]['limit']);_0x767022[_0xfe1b('0x1e')]=qs[_0xfe1b('0x1e')](_0x32b9d8[_0xfe1b('0x35')]['offset']);}_0x767022['order']=qs[_0xfe1b('0x3e')](_0x32b9d8[_0xfe1b('0x35')][_0xfe1b('0x3e')]);_0x767022[_0xfe1b('0x42')]=qs[_0xfe1b('0x3f')](_['pick'](_0x32b9d8[_0xfe1b('0x35')],_0xed5514[_0xfe1b('0x3f')]));_0x767022[_0xfe1b('0x42')]['CampaignId']=_0x212a48['id'];if(_0x32b9d8[_0xfe1b('0x35')]['filter']){_0x767022[_0xfe1b('0x42')]=_['merge'](_0x767022[_0xfe1b('0x42')],{'$or':_[_0xfe1b('0x2f')](_0x767022[_0xfe1b('0x39')],function(_0x1b3d27){var _0x1dc0a0={};_0x1dc0a0[_0x1b3d27]={'$like':'%'+_0x32b9d8[_0xfe1b('0x35')]['filter']+'%'};return _0x1dc0a0;})});}_0x767022=_[_0xfe1b('0x43')]({},_0x767022,_0x32b9d8['options']);return db[_0xfe1b('0x5b')][_0xfe1b('0x21')]({'where':_0x767022[_0xfe1b('0x42')]})['then'](function(_0x372aac){_0x4849d0[_0xfe1b('0x21')]=_0x372aac;if(_0x32b9d8[_0xfe1b('0x35')][_0xfe1b('0x45')]){_0x767022[_0xfe1b('0x4a')]=[{'all':!![]}];}return db['CmHopper'][_0xfe1b('0x46')](_0x767022);})[_0xfe1b('0x28')](function(_0x2352ee){_0x4849d0['rows']=_0x2352ee;return _0x4849d0;});}})[_0xfe1b('0x28')](respondWithFilteredResult(_0xacad57,_0x767022))[_0xfe1b('0x4b')](handleError(_0xacad57,null));};exports[_0xfe1b('0x5c')]=function(_0x5e79d0,_0x31d164,_0x19662c){var _0x912a8d={'raw':!![],'where':{}};var _0x42615f={};var _0x3c32ee={'count':0x0,'rows':[]};return db[_0xfe1b('0x30')][_0xfe1b('0x5a')]({'where':{'id':_0x5e79d0['params']['id']}})['then'](handleEntityNotFound(_0x31d164,null))[_0xfe1b('0x28')](function(_0x2a5361){if(_0x2a5361){_0x42615f['model']=_['keys'](db[_0xfe1b('0x5d')]['rawAttributes']);_0x42615f[_0xfe1b('0x35')]=_[_0xfe1b('0x36')](_0x5e79d0[_0xfe1b('0x35')]);_0x42615f[_0xfe1b('0x3f')]=_[_0xfe1b('0x37')](_0x42615f[_0xfe1b('0x38')],_0x42615f[_0xfe1b('0x35')]);_0x912a8d[_0xfe1b('0x39')]=_['intersection'](_0x42615f[_0xfe1b('0x38')],qs['fields'](_0x5e79d0[_0xfe1b('0x35')][_0xfe1b('0x3a')]));_0x912a8d[_0xfe1b('0x39')]=_0x912a8d[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x912a8d['attributes']:_0x42615f[_0xfe1b('0x38')];if(!_0x5e79d0['query'][_0xfe1b('0x3c')](_0xfe1b('0x3d'))){_0x912a8d[_0xfe1b('0x1f')]=qs['limit'](_0x5e79d0['query'][_0xfe1b('0x1f')]);_0x912a8d[_0xfe1b('0x1e')]=qs[_0xfe1b('0x1e')](_0x5e79d0['query']['offset']);}_0x912a8d[_0xfe1b('0x5e')]=qs[_0xfe1b('0x3e')](_0x5e79d0[_0xfe1b('0x35')][_0xfe1b('0x3e')]);_0x912a8d['where']=qs[_0xfe1b('0x3f')](_[_0xfe1b('0x40')](_0x5e79d0['query'],_0x42615f['filters']));_0x912a8d[_0xfe1b('0x42')][_0xfe1b('0x5f')]=_0x2a5361['id'];if(_0x5e79d0[_0xfe1b('0x35')][_0xfe1b('0x41')]){_0x912a8d[_0xfe1b('0x42')]=_['merge'](_0x912a8d[_0xfe1b('0x42')],{'$or':_[_0xfe1b('0x2f')](_0x912a8d[_0xfe1b('0x39')],function(_0x3b3ccc){var _0x517179={};_0x517179[_0x3b3ccc]={'$like':'%'+_0x5e79d0[_0xfe1b('0x35')][_0xfe1b('0x41')]+'%'};return _0x517179;})});}_0x912a8d=_[_0xfe1b('0x43')]({},_0x912a8d,_0x5e79d0[_0xfe1b('0x44')]);return db[_0xfe1b('0x5d')]['count']({'where':_0x912a8d['where']})[_0xfe1b('0x28')](function(_0x66a6b2){_0x3c32ee[_0xfe1b('0x21')]=_0x66a6b2;if(_0x5e79d0[_0xfe1b('0x35')]['includeAll']){_0x912a8d[_0xfe1b('0x4a')]=[{'all':!![]}];}return db[_0xfe1b('0x5d')]['findAll'](_0x912a8d);})['then'](function(_0x1f8141){_0x3c32ee[_0xfe1b('0x47')]=_0x1f8141;return _0x3c32ee;});}})[_0xfe1b('0x28')](respondWithFilteredResult(_0x31d164,_0x912a8d))[_0xfe1b('0x4b')](handleError(_0x31d164,null));};exports[_0xfe1b('0x60')]=function(_0x58bf90,_0x2c80f9,_0x4a15ce){var _0x176cde={'raw':!![],'where':{}};var _0x107cca={};var _0x1824b9={'count':0x0,'rows':[]};return db[_0xfe1b('0x30')][_0xfe1b('0x5a')]({'where':{'id':_0x58bf90['params']['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0x2c80f9,null))[_0xfe1b('0x28')](function(_0x5b80ae){if(_0x5b80ae){_0x107cca['model']=_[_0xfe1b('0x36')](db['CmHopperFinal'][_0xfe1b('0x31')]);_0x107cca['query']=_[_0xfe1b('0x36')](_0x58bf90['query']);_0x107cca[_0xfe1b('0x3f')]=_[_0xfe1b('0x37')](_0x107cca['model'],_0x107cca[_0xfe1b('0x35')]);_0x176cde[_0xfe1b('0x39')]=_[_0xfe1b('0x37')](_0x107cca['model'],qs[_0xfe1b('0x3a')](_0x58bf90[_0xfe1b('0x35')][_0xfe1b('0x3a')]));_0x176cde[_0xfe1b('0x39')]=_0x176cde[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x176cde[_0xfe1b('0x39')]:_0x107cca[_0xfe1b('0x38')];if(!_0x58bf90[_0xfe1b('0x35')][_0xfe1b('0x3c')](_0xfe1b('0x3d'))){_0x176cde[_0xfe1b('0x1f')]=qs['limit'](_0x58bf90[_0xfe1b('0x35')][_0xfe1b('0x1f')]);_0x176cde['offset']=qs[_0xfe1b('0x1e')](_0x58bf90[_0xfe1b('0x35')][_0xfe1b('0x1e')]);}_0x176cde['order']=qs[_0xfe1b('0x3e')](_0x58bf90[_0xfe1b('0x35')]['sort']);_0x176cde[_0xfe1b('0x42')]=qs[_0xfe1b('0x3f')](_['pick'](_0x58bf90[_0xfe1b('0x35')],_0x107cca[_0xfe1b('0x3f')]));_0x176cde[_0xfe1b('0x42')]['CampaignId']=_0x5b80ae['id'];if(_0x58bf90[_0xfe1b('0x35')][_0xfe1b('0x41')]){_0x176cde[_0xfe1b('0x42')]=_[_0xfe1b('0x43')](_0x176cde['where'],{'$or':_['map'](_0x176cde['attributes'],function(_0x5e4823){var _0x56e04f={};_0x56e04f[_0x5e4823]={'$like':'%'+_0x58bf90['query'][_0xfe1b('0x41')]+'%'};return _0x56e04f;})});}_0x176cde=_[_0xfe1b('0x43')]({},_0x176cde,_0x58bf90['options']);return db[_0xfe1b('0x61')][_0xfe1b('0x21')]({'where':_0x176cde[_0xfe1b('0x42')]})[_0xfe1b('0x28')](function(_0x50e897){_0x1824b9[_0xfe1b('0x21')]=_0x50e897;if(_0x58bf90['query'][_0xfe1b('0x45')]){_0x176cde[_0xfe1b('0x4a')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xfe1b('0x46')](_0x176cde);})[_0xfe1b('0x28')](function(_0x5e53e8){_0x1824b9['rows']=_0x5e53e8;return _0x1824b9;});}})[_0xfe1b('0x28')](respondWithFilteredResult(_0x2c80f9,_0x176cde))[_0xfe1b('0x4b')](handleError(_0x2c80f9,null));};exports[_0xfe1b('0x62')]=function(_0x125d18,_0x443ea9,_0x5a42be){var _0x365ac7={'raw':!![],'where':{}};var _0x267d63={};var _0x4fe73e={'count':0x0,'rows':[]};return db[_0xfe1b('0x30')]['findOne']({'where':{'id':_0x125d18[_0xfe1b('0x49')]['id']}})['then'](handleEntityNotFound(_0x443ea9,null))['then'](function(_0x14b315){if(_0x14b315){_0x267d63[_0xfe1b('0x38')]=_['keys'](db[_0xfe1b('0x63')][_0xfe1b('0x31')]);_0x267d63[_0xfe1b('0x35')]=_[_0xfe1b('0x36')](_0x125d18[_0xfe1b('0x35')]);_0x267d63[_0xfe1b('0x3f')]=_['intersection'](_0x267d63[_0xfe1b('0x38')],_0x267d63[_0xfe1b('0x35')]);_0x365ac7[_0xfe1b('0x39')]=_['intersection'](_0x267d63['model'],qs['fields'](_0x125d18[_0xfe1b('0x35')][_0xfe1b('0x3a')]));_0x365ac7[_0xfe1b('0x39')]=_0x365ac7[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x365ac7[_0xfe1b('0x39')]:_0x267d63[_0xfe1b('0x38')];if(!_0x125d18['query'][_0xfe1b('0x3c')](_0xfe1b('0x3d'))){_0x365ac7[_0xfe1b('0x1f')]=qs[_0xfe1b('0x1f')](_0x125d18['query']['limit']);_0x365ac7[_0xfe1b('0x1e')]=qs['offset'](_0x125d18[_0xfe1b('0x35')][_0xfe1b('0x1e')]);}_0x365ac7[_0xfe1b('0x5e')]=qs[_0xfe1b('0x3e')](_0x125d18['query']['sort']);_0x365ac7[_0xfe1b('0x42')]=qs[_0xfe1b('0x3f')](_[_0xfe1b('0x40')](_0x125d18[_0xfe1b('0x35')],_0x267d63[_0xfe1b('0x3f')]));_0x365ac7[_0xfe1b('0x42')][_0xfe1b('0x5f')]=_0x14b315['id'];if(_0x125d18[_0xfe1b('0x35')]['filter']){_0x365ac7['where']=_['merge'](_0x365ac7[_0xfe1b('0x42')],{'$or':_[_0xfe1b('0x2f')](_0x365ac7[_0xfe1b('0x39')],function(_0xd1551){var _0x670eee={};_0x670eee[_0xd1551]={'$like':'%'+_0x125d18[_0xfe1b('0x35')][_0xfe1b('0x41')]+'%'};return _0x670eee;})});}_0x365ac7=_[_0xfe1b('0x43')]({},_0x365ac7,_0x125d18[_0xfe1b('0x44')]);return db['CmHopperBlack'][_0xfe1b('0x21')]({'where':_0x365ac7[_0xfe1b('0x42')]})[_0xfe1b('0x28')](function(_0x23e5b1){_0x4fe73e[_0xfe1b('0x21')]=_0x23e5b1;if(_0x125d18[_0xfe1b('0x35')][_0xfe1b('0x45')]){_0x365ac7['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0xfe1b('0x46')](_0x365ac7);})[_0xfe1b('0x28')](function(_0x5aeea0){_0x4fe73e['rows']=_0x5aeea0;return _0x4fe73e;});}})['then'](respondWithFilteredResult(_0x443ea9,_0x365ac7))[_0xfe1b('0x4b')](handleError(_0x443ea9,null));};exports[_0xfe1b('0x64')]=function(_0xfead39,_0x447fa7,_0x6c92c2){var _0x2e70f6={};var _0x72ed9f={};var _0x3b72d0;var _0x430bc9;return db[_0xfe1b('0x30')][_0xfe1b('0x5a')]({'where':{'id':_0xfead39[_0xfe1b('0x49')]['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0x447fa7,null))['then'](function(_0x2df745){if(_0x2df745){_0x3b72d0=_0x2df745;_0x72ed9f[_0xfe1b('0x38')]=_['keys'](db['CmList'][_0xfe1b('0x31')]);_0x72ed9f['query']=_[_0xfe1b('0x36')](_0xfead39[_0xfe1b('0x35')]);_0x72ed9f['filters']=_['intersection'](_0x72ed9f[_0xfe1b('0x38')],_0x72ed9f[_0xfe1b('0x35')]);_0x2e70f6[_0xfe1b('0x39')]=_[_0xfe1b('0x37')](_0x72ed9f['model'],qs[_0xfe1b('0x3a')](_0xfead39[_0xfe1b('0x35')]['fields']));_0x2e70f6[_0xfe1b('0x39')]=_0x2e70f6[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x2e70f6[_0xfe1b('0x39')]:_0x72ed9f[_0xfe1b('0x38')];_0x2e70f6[_0xfe1b('0x5e')]=qs['sort'](_0xfead39[_0xfe1b('0x35')][_0xfe1b('0x3e')]);_0x2e70f6['where']=qs[_0xfe1b('0x3f')](_[_0xfe1b('0x40')](_0xfead39['query'],_0x72ed9f[_0xfe1b('0x3f')]));if(_0xfead39[_0xfe1b('0x35')][_0xfe1b('0x41')]){_0x2e70f6[_0xfe1b('0x42')]=_[_0xfe1b('0x43')](_0x2e70f6[_0xfe1b('0x42')],{'$or':_[_0xfe1b('0x2f')](_0x2e70f6['attributes'],function(_0x43b452){var _0x3c57b4={};_0x3c57b4[_0x43b452]={'$like':'%'+_0xfead39[_0xfe1b('0x35')][_0xfe1b('0x41')]+'%'};return _0x3c57b4;})});}_0x2e70f6=_[_0xfe1b('0x43')]({},_0x2e70f6,_0xfead39['options']);return _0x3b72d0[_0xfe1b('0x64')](_0x2e70f6);}})['then'](function(_0x4eec7c){if(_0x4eec7c){_0x430bc9=_0x4eec7c[_0xfe1b('0x3b')];if(!_0xfead39[_0xfe1b('0x35')][_0xfe1b('0x3c')](_0xfe1b('0x3d'))){_0x2e70f6[_0xfe1b('0x1f')]=qs['limit'](_0xfead39[_0xfe1b('0x35')][_0xfe1b('0x1f')]);_0x2e70f6['offset']=qs[_0xfe1b('0x1e')](_0xfead39[_0xfe1b('0x35')][_0xfe1b('0x1e')]);}return _0x3b72d0[_0xfe1b('0x64')](_0x2e70f6);}})['then'](function(_0x286222){if(_0x286222){return _0x286222?{'count':_0x430bc9,'rows':_0x286222}:null;}})[_0xfe1b('0x28')](respondWithResult(_0x447fa7,null))[_0xfe1b('0x4b')](handleError(_0x447fa7,null));};exports['addLists']=function(_0x3f196d,_0x2e69c4,_0x77a74e){var _0x2c7369,_0x263b08;var _0x7c0358=[];var _0x5d8204=moment()[_0xfe1b('0x65')](_0xfe1b('0x66'));return db['Campaign'][_0xfe1b('0x53')]({'where':{'id':_0x3f196d['params']['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0x2e69c4,null))['then'](function(_0x30d2e3){if(_0x30d2e3){_0x263b08=_0x30d2e3;return _0x30d2e3['addLists'](_0x3f196d['body'][_0xfe1b('0x67')],_['omit'](_0x3f196d[_0xfe1b('0x57')],[_0xfe1b('0x67'),'id'])||{});}return null;})[_0xfe1b('0x68')](function(_0x3d33ab){var _0x26c627;var _0x1a0728;_0x2c7369=_0x3d33ab||[];var _0x22b04c=[];if(_0x3d33ab){for(var _0x2d81e6=0x0;_0x2d81e6<_0x3d33ab[_0xfe1b('0x3b')];_0x2d81e6+=0x1){var _0x3b81cd=_0x3d33ab[_0x2d81e6][_0xfe1b('0x2a')]({'plain':!![]});_0x263b08[_0xfe1b('0x69')]=_0x3f196d[_0xfe1b('0x57')][_0xfe1b('0x69')]?_0x3f196d[_0xfe1b('0x57')]['dialCheckDuplicateType']:_0x263b08[_0xfe1b('0x69')];switch(_0x263b08[_0xfe1b('0x69')]){case'always':_0x26c627=squel['insert']()['into']('cm_hopper')[_0xfe1b('0x6a')](['phone',_0xfe1b('0x6b'),_0xfe1b('0x6c'),_0xfe1b('0x6d'),'CampaignId',_0xfe1b('0x55'),'updatedAt'],squel['select']()[_0xfe1b('0x6e')](_0xfe1b('0x6f'),'phone')[_0xfe1b('0x6e')]('NOW()',_0xfe1b('0x6b'))[_0xfe1b('0x6e')]('id','ContactId')['field'](_0x3b81cd[_0xfe1b('0x70')]['toString'](),_0xfe1b('0x6d'))['field'](_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')](),'CampaignId')[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27','createdAt')[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27',_0xfe1b('0x56'))['from'](_0xfe1b('0x72'))[_0xfe1b('0x42')](_0xfe1b('0x73'))['where'](_0xfe1b('0x74'),_0x3b81cd['CmListId'][_0xfe1b('0x71')]())[_0xfe1b('0x42')]('phone\x20IS\x20NOT\x20NULL')[_0xfe1b('0x42')]('phone\x20NOT\x20IN\x20(?)',squel[_0xfe1b('0x75')]()[_0xfe1b('0x6e')](_0xfe1b('0x76'))[_0xfe1b('0x77')](_0xfe1b('0x78'))[_0xfe1b('0x42')](_0xfe1b('0x79'),_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')]()))[_0xfe1b('0x42')](_0xfe1b('0x7a'),squel[_0xfe1b('0x75')]()[_0xfe1b('0x6e')]('COALESCE(phone,\x27\x27)')[_0xfe1b('0x77')](_0xfe1b('0x7b'))[_0xfe1b('0x42')](_0xfe1b('0x79'),_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')]())))[_0xfe1b('0x71')]();break;case _0xfe1b('0x7c'):_0x26c627=squel[_0xfe1b('0x7d')]()['into'](_0xfe1b('0x7b'))['fromQuery'](['phone',_0xfe1b('0x6b'),_0xfe1b('0x6c'),_0xfe1b('0x6d'),_0xfe1b('0x5f'),'createdAt',_0xfe1b('0x56')],squel[_0xfe1b('0x75')]()[_0xfe1b('0x6e')](_0xfe1b('0x6f'),_0xfe1b('0x6f'))[_0xfe1b('0x6e')]('NOW()',_0xfe1b('0x6b'))[_0xfe1b('0x6e')]('id','ContactId')[_0xfe1b('0x6e')](_0x3b81cd[_0xfe1b('0x70')][_0xfe1b('0x71')](),_0xfe1b('0x6d'))[_0xfe1b('0x6e')](_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')](),_0xfe1b('0x5f'))[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27',_0xfe1b('0x55'))[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27',_0xfe1b('0x56'))[_0xfe1b('0x77')](_0xfe1b('0x72'))['where']('deletedAt\x20IS\x20NULL')[_0xfe1b('0x42')](_0xfe1b('0x74'),_0x3b81cd[_0xfe1b('0x70')][_0xfe1b('0x71')]())[_0xfe1b('0x42')](_0xfe1b('0x7e'))[_0xfe1b('0x42')](_0xfe1b('0x7a'),squel[_0xfe1b('0x75')]()['field'](_0xfe1b('0x7f'))[_0xfe1b('0x77')]('cm_hopper')[_0xfe1b('0x42')](_0xfe1b('0x79'),_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')]())))[_0xfe1b('0x71')]();break;default:_0x26c627=squel[_0xfe1b('0x7d')]()[_0xfe1b('0x80')](_0xfe1b('0x7b'))[_0xfe1b('0x6a')]([_0xfe1b('0x6f'),_0xfe1b('0x6b'),_0xfe1b('0x6c'),'ListId',_0xfe1b('0x5f'),_0xfe1b('0x55'),_0xfe1b('0x56')],squel['select']()[_0xfe1b('0x6e')](_0xfe1b('0x6f'),'phone')[_0xfe1b('0x6e')](_0xfe1b('0x81'),'scheduledAt')['field']('id','ContactId')[_0xfe1b('0x6e')](_0x3b81cd[_0xfe1b('0x70')][_0xfe1b('0x71')](),_0xfe1b('0x6d'))[_0xfe1b('0x6e')](_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')](),_0xfe1b('0x5f'))[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27','createdAt')[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27',_0xfe1b('0x56'))['from'](_0xfe1b('0x72'))[_0xfe1b('0x42')](_0xfe1b('0x73'))[_0xfe1b('0x42')](_0xfe1b('0x74'),_0x3b81cd[_0xfe1b('0x70')][_0xfe1b('0x71')]())[_0xfe1b('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0xfe1b('0x71')]();}_0x1a0728=squel[_0xfe1b('0x7d')]()[_0xfe1b('0x80')](_0xfe1b('0x82'))[_0xfe1b('0x6a')]([_0xfe1b('0x83'),_0xfe1b('0x6b'),_0xfe1b('0x6f'),_0xfe1b('0x84'),_0xfe1b('0x55'),_0xfe1b('0x56')],squel[_0xfe1b('0x75')]()[_0xfe1b('0x6e')]('h.id','id')[_0xfe1b('0x6e')](_0xfe1b('0x81'),_0xfe1b('0x6b'))[_0xfe1b('0x6e')](_0xfe1b('0x85'),'phone')[_0xfe1b('0x6e')](_0xfe1b('0x86'),_0xfe1b('0x84'))[_0xfe1b('0x6e')]('\x27'+_0x5d8204+'\x27',_0xfe1b('0x55'))['field']('\x27'+_0x5d8204+'\x27','updatedAt')[_0xfe1b('0x77')]('cm_contact_has_items','ci')[_0xfe1b('0x87')](_0xfe1b('0x7b'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0xfe1b('0x42')](_0xfe1b('0x88'),_0x3b81cd[_0xfe1b('0x70')]['toString']())[_0xfe1b('0x42')](_0xfe1b('0x89'),_0x3f196d[_0xfe1b('0x49')]['id'][_0xfe1b('0x71')]())[_0xfe1b('0x42')](_0xfe1b('0x8a'),_0x5d8204))[_0xfe1b('0x71')]();_0x22b04c[_0xfe1b('0x8b')](db['sequelize'][_0xfe1b('0x35')](_0x26c627));_0x7c0358[_0xfe1b('0x8b')](db['sequelize']['query'](_0x1a0728));}return BPromise['all'](_0x22b04c);}})[_0xfe1b('0x28')](function(){return BPromise[_0xfe1b('0x8c')](_0x7c0358);})[_0xfe1b('0x28')](function(){return _0x2c7369;})['then'](respondWithResult(_0x2e69c4,null))[_0xfe1b('0x4b')](handleError(_0x2e69c4,null));};exports['removeLists']=function(_0x3adfbb,_0x107398,_0x17222b){return db['Campaign'][_0xfe1b('0x53')]({'where':{'id':_0x3adfbb[_0xfe1b('0x49')]['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0x107398,null))[_0xfe1b('0x28')](function(_0x8d25aa){if(_0x8d25aa){return _0x8d25aa[_0xfe1b('0x8d')](_0x3adfbb[_0xfe1b('0x35')]['ids']);}})[_0xfe1b('0x28')](function(_0x37e746){if(_0x37e746){return db['CmHopper'][_0xfe1b('0x29')]({'where':{'ListId':_0x3adfbb[_0xfe1b('0x35')][_0xfe1b('0x67')],'CampaignId':_0x3adfbb[_0xfe1b('0x49')]['id']}})[_0xfe1b('0x28')](function(){return _0x37e746;});}})[_0xfe1b('0x28')](respondWithStatusCode(_0x107398,null))[_0xfe1b('0x4b')](handleError(_0x107398,null));};exports[_0xfe1b('0x8e')]=function(_0x4f0d13,_0x48939c,_0x3ec336){var _0x491253={};var _0x13c796={};var _0x168e01;var _0x4bdf19;return db[_0xfe1b('0x30')][_0xfe1b('0x5a')]({'where':{'id':_0x4f0d13['params']['id']}})[_0xfe1b('0x28')](handleEntityNotFound(_0x48939c,null))[_0xfe1b('0x28')](function(_0x1641f4){if(_0x1641f4){_0x168e01=_0x1641f4;_0x13c796[_0xfe1b('0x38')]=_[_0xfe1b('0x36')](db[_0xfe1b('0x8f')][_0xfe1b('0x31')]);_0x13c796[_0xfe1b('0x35')]=_[_0xfe1b('0x36')](_0x4f0d13['query']);_0x13c796[_0xfe1b('0x3f')]=_[_0xfe1b('0x37')](_0x13c796['model'],_0x13c796['query']);_0x491253[_0xfe1b('0x39')]=_['intersection'](_0x13c796[_0xfe1b('0x38')],qs[_0xfe1b('0x3a')](_0x4f0d13[_0xfe1b('0x35')]['fields']));_0x491253['attributes']=_0x491253[_0xfe1b('0x39')][_0xfe1b('0x3b')]?_0x491253[_0xfe1b('0x39')]:_0x13c796[_0xfe1b('0x38')];_0x491253[_0xfe1b('0x5e')]=qs[_0xfe1b('0x3e')](_0x4f0d13[_0xfe1b('0x35')][_0xfe1b('0x3e')]);_0x491253[_0xfe1b('0x42')]=qs['filters'](_[_0xfe1b('0x40')](_0x4f0d13[_0xfe1b('0x35')],_0x13c796[_0xfe1b('0x3f')]));if(_0x4f0d13['query']['filter']){_0x491253[_0xfe1b('0x42')]=_['merge'](_0x491253['where'],{'$or':_[_0xfe1b('0x2f')](_0x491253[_0xfe1b('0x39')],function(_0x55c316){var _0x3baa2c={};_0x3baa2c[_0x55c316]={'$like':'%'+_0x4f0d13[_0xfe1b('0x35')][_0xfe1b('0x41')]+'%'};return _0x3baa2c;})});}_0x491253=_['merge']({},_0x491253,_0x4f0d13[_0xfe1b('0x44')]);return _0x168e01[_0xfe1b('0x8e')](_0x491253);}})['then'](function(_0x37f093){if(_0x37f093){_0x4bdf19=_0x37f093[_0xfe1b('0x3b')];if(!_0x4f0d13[_0xfe1b('0x35')]['hasOwnProperty'](_0xfe1b('0x3d'))){_0x491253[_0xfe1b('0x1f')]=qs[_0xfe1b('0x1f')](_0x4f0d13['query']['limit']);_0x491253[_0xfe1b('0x1e')]=qs[_0xfe1b('0x1e')](_0x4f0d13[_0xfe1b('0x35')]['offset']);}return _0x168e01[_0xfe1b('0x8e')](_0x491253);}})[_0xfe1b('0x28')](function(_0x26e678){if(_0x26e678){return _0x26e678?{'count':_0x4bdf19,'rows':_0x26e678}:null;}})[_0xfe1b('0x28')](respondWithResult(_0x48939c,null))[_0xfe1b('0x4b')](handleError(_0x48939c,null));};exports[_0xfe1b('0x90')]=function(_0x37c318,_0x578b6c,_0x4bc9cd){var _0x2e4041,_0x134853;var _0x51e923=[];var _0x578192=moment()['format'](_0xfe1b('0x66'));return db[_0xfe1b('0x30')][_0xfe1b('0x53')]({'where':{'id':_0x37c318[_0xfe1b('0x49')]['id']}})['then'](handleEntityNotFound(_0x578b6c,null))['then'](function(_0x49245c){if(_0x49245c){_0x134853=_0x49245c;return _0x49245c[_0xfe1b('0x90')](_0x37c318['body'][_0xfe1b('0x67')],_[_0xfe1b('0x54')](_0x37c318[_0xfe1b('0x57')],[_0xfe1b('0x67'),'id'])||{});}return null;})[_0xfe1b('0x68')](function(_0xc62fb3){var _0x1984d6;var _0x32ed1b;_0x2e4041=_0xc62fb3||[];var _0x3a5ca4=[];if(_0xc62fb3){for(var _0x4d6dc2=0x0;_0x4d6dc2<_0xc62fb3[_0xfe1b('0x3b')];_0x4d6dc2+=0x1){var _0x393fcc=_0xc62fb3[_0x4d6dc2][_0xfe1b('0x2a')]({'plain':!![]});_0x1984d6=squel[_0xfe1b('0x7d')]()[_0xfe1b('0x80')]('cm_hopper_black')['fromQuery']([_0xfe1b('0x6f'),_0xfe1b('0x6c'),_0xfe1b('0x6d'),_0xfe1b('0x5f'),'createdAt',_0xfe1b('0x56')],squel[_0xfe1b('0x75')]()[_0xfe1b('0x6e')](_0xfe1b('0x6f'),_0xfe1b('0x6f'))[_0xfe1b('0x6e')]('id',_0xfe1b('0x6c'))[_0xfe1b('0x6e')](_0x393fcc[_0xfe1b('0x70')][_0xfe1b('0x71')](),_0xfe1b('0x6d'))[_0xfe1b('0x6e')](_0x37c318[_0xfe1b('0x49')]['id']['toString'](),_0xfe1b('0x5f'))['field'](_0xfe1b('0x81'),_0xfe1b('0x55'))[_0xfe1b('0x6e')]('NOW()','updatedAt')['from'](_0xfe1b('0x72'))[_0xfe1b('0x42')](_0xfe1b('0x73'))[_0xfe1b('0x42')](_0xfe1b('0x74'),_0x393fcc['CmListId'][_0xfe1b('0x71')]())['where'](_0xfe1b('0x7e')))[_0xfe1b('0x71')]();_0x3a5ca4['push'](db['sequelize'][_0xfe1b('0x35')](_0x1984d6));}return BPromise['all'](_0x3a5ca4);}})[_0xfe1b('0x28')](function(){return _0x2e4041;})['then'](respondWithResult(_0x578b6c,null))['catch'](handleError(_0x578b6c,null));};exports['removeBlackLists']=function(_0x3e9152,_0x57fa56,_0x169e82){return db[_0xfe1b('0x30')][_0xfe1b('0x53')]({'where':{'id':_0x3e9152['params']['id']}})['then'](handleEntityNotFound(_0x57fa56,null))[_0xfe1b('0x28')](function(_0x38bd34){if(_0x38bd34){return _0x38bd34[_0xfe1b('0x91')](_0x3e9152[_0xfe1b('0x35')][_0xfe1b('0x67')]);}})[_0xfe1b('0x28')](function(_0x37bd0b){if(_0x37bd0b){return db[_0xfe1b('0x63')][_0xfe1b('0x29')]({'where':{'ListId':_0x3e9152[_0xfe1b('0x35')][_0xfe1b('0x67')],'CampaignId':_0x3e9152['params']['id']}})[_0xfe1b('0x28')](function(){return _0x37bd0b;});}})['then'](respondWithStatusCode(_0x57fa56,null))[_0xfe1b('0x4b')](handleError(_0x57fa56,null));};
\ No newline at end of file
index 33d76ec..9f6d524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x1730ad,_0x83ac98){var _0x18378a=function(_0x4c5b29){while(--_0x4c5b29){_0x1730ad['push'](_0x1730ad['shift']());}};_0x18378a(++_0x83ac98);}(_0x7a54,0x106));var _0x47a5=function(_0x57f9b3,_0x16abbb){_0x57f9b3=_0x57f9b3-0x0;var _0x1c3381=_0x7a54[_0x57f9b3];return _0x1c3381;};'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 435ec5a..3192ff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['Campaign,\x20%s,\x20%s','message','catch','Campaign','findAll','where','options','attributes','limit','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','code'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0xa8a8,0xec));var _0x8a8a=function(_0x30151e,_0x325ef3){_0x30151e=_0x30151e-0x0;var _0x189196=_0xa8a8[_0x30151e];return _0x189196;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var moment=require(_0x8a8a('0x2'));var BPromise=require(_0x8a8a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a8a('0x4'));var db=require(_0x8a8a('0x5'))['db'];var utils=require(_0x8a8a('0x6'));var logger=require(_0x8a8a('0x7'))(_0x8a8a('0x8'));var config=require(_0x8a8a('0x9'));var jayson=require(_0x8a8a('0xa'));var client=jayson[_0x8a8a('0xb')][_0x8a8a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x315fe9,_0x1d7121,_0x8e7aa0){return new BPromise(function(_0x4225b9,_0xecaa6f){return client[_0x8a8a('0xd')](_0x315fe9,_0x8e7aa0)['then'](function(_0x576ef9){logger[_0x8a8a('0xe')]('Campaign,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'));logger[_0x8a8a('0x10')]('Campaign,\x20%s,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'),JSON[_0x8a8a('0x11')](_0x576ef9));if(_0x576ef9[_0x8a8a('0x12')]){if(_0x576ef9['error'][_0x8a8a('0x13')]===0x1f4){logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x576ef9[_0x8a8a('0x12')]['message']);return _0xecaa6f(_0x576ef9[_0x8a8a('0x12')]['message']);}logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x576ef9[_0x8a8a('0x12')][_0x8a8a('0x15')]);return _0x4225b9(_0x576ef9[_0x8a8a('0x12')][_0x8a8a('0x15')]);}else{logger[_0x8a8a('0xe')]('Campaign,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'));_0x4225b9(_0x576ef9['result'][_0x8a8a('0x15')]);}})[_0x8a8a('0x16')](function(_0x46a4f4){logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x46a4f4);_0xecaa6f(_0x46a4f4);});});}exports['GetCampaign']=function(_0x9d55f9){var _0x3d165c=this;return new Promise(function(_0x262ca9,_0x2bce13){return db[_0x8a8a('0x17')][_0x8a8a('0x18')]({'raw':_0x9d55f9['options']?_0x9d55f9['options']['raw']===undefined?!![]:![]:!![],'where':_0x9d55f9['options']?_0x9d55f9['options'][_0x8a8a('0x19')]||null:null,'attributes':_0x9d55f9[_0x8a8a('0x1a')]?_0x9d55f9[_0x8a8a('0x1a')][_0x8a8a('0x1b')]||null:null,'limit':_0x9d55f9[_0x8a8a('0x1a')]?_0x9d55f9[_0x8a8a('0x1a')][_0x8a8a('0x1c')]||null:null,'include':_0x9d55f9[_0x8a8a('0x1a')]?_0x9d55f9[_0x8a8a('0x1a')][_0x8a8a('0x1d')]?_[_0x8a8a('0x1e')](_0x9d55f9[_0x8a8a('0x1a')][_0x8a8a('0x1d')],function(_0x625c1b){return{'model':db[_0x625c1b[_0x8a8a('0x1f')]],'as':_0x625c1b['as'],'attributes':_0x625c1b['attributes'],'include':_0x625c1b[_0x8a8a('0x1d')]?_[_0x8a8a('0x1e')](_0x625c1b[_0x8a8a('0x1d')],function(_0x7662e){return{'model':db[_0x7662e[_0x8a8a('0x1f')]],'as':_0x7662e['as'],'attributes':_0x7662e[_0x8a8a('0x1b')],'include':_0x7662e[_0x8a8a('0x1d')]?_['map'](_0x7662e[_0x8a8a('0x1d')],function(_0x38c1e0){return{'model':db[_0x38c1e0[_0x8a8a('0x1f')]],'as':_0x38c1e0['as'],'attributes':_0x38c1e0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2dafcd){logger[_0x8a8a('0xe')]('GetCampaign',_0x9d55f9);logger['debug']('GetCampaign',_0x9d55f9,JSON[_0x8a8a('0x11')](_0x2dafcd));_0x262ca9(_0x2dafcd);})['catch'](function(_0x10b916){logger[_0x8a8a('0x12')]('GetCampaign',_0x10b916[_0x8a8a('0x15')],_0x9d55f9);_0x2bce13(_0x3d165c[_0x8a8a('0x12')](0x1f4,_0x10b916[_0x8a8a('0x15')]));});});};
\ No newline at end of file
+var _0x1120=['model','lodash','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetCampaign','Campaign','options','raw','attributes','include','map'];(function(_0x1faffa,_0xb0f1fe){var _0x24b72b=function(_0x14011e){while(--_0x14011e){_0x1faffa['push'](_0x1faffa['shift']());}};_0x24b72b(++_0xb0f1fe);}(_0x1120,0x140));var _0x0112=function(_0x25248b,_0x3c8491){_0x25248b=_0x25248b-0x0;var _0x509939=_0x1120[_0x25248b];return _0x509939;};'use strict';var _=require(_0x0112('0x0'));var util=require(_0x0112('0x1'));var moment=require(_0x0112('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(_0x0112('0x3'));var logger=require(_0x0112('0x4'))(_0x0112('0x5'));var config=require(_0x0112('0x6'));var jayson=require(_0x0112('0x7'));var client=jayson[_0x0112('0x8')][_0x0112('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40ad0d,_0x31d67a,_0x444422){return new BPromise(function(_0x2fd18c,_0x1e87af){return client['request'](_0x40ad0d,_0x444422)[_0x0112('0xa')](function(_0x26fd2e){logger[_0x0112('0xb')](_0x0112('0xc'),_0x31d67a,_0x0112('0xd'));logger[_0x0112('0xe')](_0x0112('0xf'),_0x31d67a,'request\x20sent',JSON[_0x0112('0x10')](_0x26fd2e));if(_0x26fd2e[_0x0112('0x11')]){if(_0x26fd2e[_0x0112('0x11')][_0x0112('0x12')]===0x1f4){logger['error'](_0x0112('0xc'),_0x31d67a,_0x26fd2e[_0x0112('0x11')][_0x0112('0x13')]);return _0x1e87af(_0x26fd2e[_0x0112('0x11')]['message']);}logger['error'](_0x0112('0xc'),_0x31d67a,_0x26fd2e['error'][_0x0112('0x13')]);return _0x2fd18c(_0x26fd2e['error'][_0x0112('0x13')]);}else{logger[_0x0112('0xb')](_0x0112('0xc'),_0x31d67a,_0x0112('0xd'));_0x2fd18c(_0x26fd2e['result'][_0x0112('0x13')]);}})[_0x0112('0x14')](function(_0x5ef9fe){logger['error']('Campaign,\x20%s,\x20%s',_0x31d67a,_0x5ef9fe);_0x1e87af(_0x5ef9fe);});});}exports[_0x0112('0x15')]=function(_0x58f0ed){var _0x5c2236=this;return new Promise(function(_0x4e34c1,_0x19f10e){return db[_0x0112('0x16')]['findAll']({'raw':_0x58f0ed['options']?_0x58f0ed[_0x0112('0x17')][_0x0112('0x18')]===undefined?!![]:![]:!![],'where':_0x58f0ed['options']?_0x58f0ed[_0x0112('0x17')]['where']||null:null,'attributes':_0x58f0ed['options']?_0x58f0ed['options'][_0x0112('0x19')]||null:null,'limit':_0x58f0ed[_0x0112('0x17')]?_0x58f0ed[_0x0112('0x17')]['limit']||null:null,'include':_0x58f0ed[_0x0112('0x17')]?_0x58f0ed[_0x0112('0x17')][_0x0112('0x1a')]?_[_0x0112('0x1b')](_0x58f0ed['options'][_0x0112('0x1a')],function(_0x408bb8){return{'model':db[_0x408bb8[_0x0112('0x1c')]],'as':_0x408bb8['as'],'attributes':_0x408bb8[_0x0112('0x19')],'include':_0x408bb8['include']?_[_0x0112('0x1b')](_0x408bb8['include'],function(_0x58ea13){return{'model':db[_0x58ea13[_0x0112('0x1c')]],'as':_0x58ea13['as'],'attributes':_0x58ea13['attributes'],'include':_0x58ea13[_0x0112('0x1a')]?_['map'](_0x58ea13[_0x0112('0x1a')],function(_0x58e5){return{'model':db[_0x58e5[_0x0112('0x1c')]],'as':_0x58e5['as'],'attributes':_0x58e5[_0x0112('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0112('0xa')](function(_0x11bd7f){logger[_0x0112('0xb')](_0x0112('0x15'),_0x58f0ed);logger[_0x0112('0xe')](_0x0112('0x15'),_0x58f0ed,JSON[_0x0112('0x10')](_0x11bd7f));_0x4e34c1(_0x11bd7f);})['catch'](function(_0x6d44bb){logger['error'](_0x0112('0x15'),_0x6d44bb[_0x0112('0x13')],_0x58f0ed);_0x19f10e(_0x5c2236[_0x0112('0x11')](0x1f4,_0x6d44bb['message']));});});};
\ No newline at end of file
index 14b1aff..d9c5135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d62=['isAuthenticated','index','/:id','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','getLists','/:id/blacklists','getBlackLists','post','create','clone','/:id/lists','addLists','addBlackLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','get'];(function(_0xc77819,_0x139fdc){var _0x1c9434=function(_0x11d15d){while(--_0x11d15d){_0xc77819['push'](_0xc77819['shift']());}};_0x1c9434(++_0x139fdc);}(_0x0d62,0x10f));var _0x20d6=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0x0d62[_0x38a7ac];return _0x53061a;};'use strict';var multer=require('multer');var util=require(_0x20d6('0x0'));var path=require(_0x20d6('0x1'));var timeout=require('connect-timeout');var express=require(_0x20d6('0x2'));var router=express[_0x20d6('0x3')]();var fs_extra=require(_0x20d6('0x4'));var auth=require(_0x20d6('0x5'));var interaction=require(_0x20d6('0x6'));var config=require('../../config/environment');var controller=require(_0x20d6('0x7'));router[_0x20d6('0x8')]('/',auth[_0x20d6('0x9')](),controller[_0x20d6('0xa')]);router['get'](_0x20d6('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0x20d6('0xc'),auth['isAuthenticated'](),controller[_0x20d6('0xd')]);router['get']('/:id/hopper_histories',auth['isAuthenticated'](),controller[_0x20d6('0xe')]);router[_0x20d6('0x8')](_0x20d6('0xf'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x10')]);router['get'](_0x20d6('0x11'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x12')]);router[_0x20d6('0x8')]('/:id/lists',auth['isAuthenticated'](),controller[_0x20d6('0x13')]);router[_0x20d6('0x8')](_0x20d6('0x14'),auth['isAuthenticated'](),controller[_0x20d6('0x15')]);router[_0x20d6('0x16')]('/',auth[_0x20d6('0x9')](),controller[_0x20d6('0x17')]);router[_0x20d6('0x16')]('/:id/clone',auth['isAuthenticated'](),controller[_0x20d6('0x18')]);router[_0x20d6('0x16')](_0x20d6('0x19'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x1a')]);router[_0x20d6('0x16')](_0x20d6('0x14'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x1b')]);router[_0x20d6('0x1c')](_0x20d6('0xb'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x1d')]);router['delete'](_0x20d6('0xb'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x1e')]);router[_0x20d6('0x1f')](_0x20d6('0x19'),auth['isAuthenticated'](),controller[_0x20d6('0x20')]);router['delete'](_0x20d6('0x14'),auth[_0x20d6('0x9')](),controller[_0x20d6('0x21')]);module[_0x20d6('0x22')]=router;
\ No newline at end of file
+var _0x64fa=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','/:id/lists','addBlackLists','put','update','delete','destroy','removeLists','removeBlackLists','exports','connect-timeout'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x64fa,0xbf));var _0xa64f=function(_0x1c9a9c,_0x35d3f8){_0x1c9a9c=_0x1c9a9c-0x0;var _0x58c334=_0x64fa[_0x1c9a9c];return _0x58c334;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa64f('0x0'));var express=require(_0xa64f('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa64f('0x2'));var interaction=require(_0xa64f('0x3'));var config=require(_0xa64f('0x4'));var controller=require(_0xa64f('0x5'));router[_0xa64f('0x6')]('/',auth[_0xa64f('0x7')](),controller[_0xa64f('0x8')]);router[_0xa64f('0x6')](_0xa64f('0x9'),auth[_0xa64f('0x7')](),controller[_0xa64f('0xa')]);router[_0xa64f('0x6')](_0xa64f('0xb'),auth[_0xa64f('0x7')](),controller[_0xa64f('0xc')]);router[_0xa64f('0x6')](_0xa64f('0xd'),auth[_0xa64f('0x7')](),controller['getHopperHistories']);router[_0xa64f('0x6')](_0xa64f('0xe'),auth[_0xa64f('0x7')](),controller['getHopperFinals']);router['get']('/:id/hopper_black',auth['isAuthenticated'](),controller[_0xa64f('0xf')]);router[_0xa64f('0x6')]('/:id/lists',auth[_0xa64f('0x7')](),controller[_0xa64f('0x10')]);router[_0xa64f('0x6')](_0xa64f('0x11'),auth[_0xa64f('0x7')](),controller[_0xa64f('0x12')]);router[_0xa64f('0x13')]('/',auth[_0xa64f('0x7')](),controller[_0xa64f('0x14')]);router[_0xa64f('0x13')](_0xa64f('0x15'),auth[_0xa64f('0x7')](),controller[_0xa64f('0x16')]);router[_0xa64f('0x13')](_0xa64f('0x17'),auth[_0xa64f('0x7')](),controller['addLists']);router[_0xa64f('0x13')](_0xa64f('0x11'),auth[_0xa64f('0x7')](),controller[_0xa64f('0x18')]);router[_0xa64f('0x19')](_0xa64f('0x9'),auth['isAuthenticated'](),controller[_0xa64f('0x1a')]);router[_0xa64f('0x1b')](_0xa64f('0x9'),auth[_0xa64f('0x7')](),controller[_0xa64f('0x1c')]);router[_0xa64f('0x1b')](_0xa64f('0x17'),auth[_0xa64f('0x7')](),controller[_0xa64f('0x1d')]);router[_0xa64f('0x1b')](_0xa64f('0x11'),auth[_0xa64f('0x7')](),controller[_0xa64f('0x1e')]);module[_0xa64f('0x1f')]=router;
\ No newline at end of file
index 200e43f..6fba699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc457=['sequelize','exports','STRING','getDataValue','key'];(function(_0x295815,_0x4adb43){var _0x209b00=function(_0x17770f){while(--_0x17770f){_0x295815['push'](_0x295815['shift']());}};_0x209b00(++_0x4adb43);}(_0xc457,0x154));var _0x7c45=function(_0x667f,_0x14560d){_0x667f=_0x667f-0x0;var _0x51215c=_0xc457[_0x667f];return _0x51215c;};'use strict';var Sequelize=require(_0x7c45('0x0'));module[_0x7c45('0x1')]={'key':{'type':Sequelize[_0x7c45('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x7c45('0x3')](_0x7c45('0x4'));}}};
\ No newline at end of file
+var _0xbba5=['sequelize','exports','STRING','TEXT','VIRTUAL','getDataValue','key'];(function(_0x55e17e,_0x400559){var _0x4df1b1=function(_0x7f1250){while(--_0x7f1250){_0x55e17e['push'](_0x55e17e['shift']());}};_0x4df1b1(++_0x400559);}(_0xbba5,0x1ce));var _0x5bba=function(_0x1684df,_0x4bd1bf){_0x1684df=_0x1684df-0x0;var _0x461893=_0xbba5[_0x1684df];return _0x461893;};'use strict';var Sequelize=require(_0x5bba('0x0'));module[_0x5bba('0x1')]={'key':{'type':Sequelize[_0x5bba('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x5bba('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x5bba('0x2')]},'name':{'type':Sequelize[_0x5bba('0x4')],'get':function(){return this[_0x5bba('0x5')](_0x5bba('0x6'));}}};
\ No newline at end of file
index 4920494..f51ecfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x480e=['json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','CannedAnswers','UserProfileResource','sendStatus','error','stack','name','send','index','map','CannedAnswer','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','limit','order','sort','where','merge','options','includeAll','findAll','rows','catch','show','rawAttributes','include','body','find','params','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end'];(function(_0x2daef6,_0xcac228){var _0x62d030=function(_0x26a7d6){while(--_0x26a7d6){_0x2daef6['push'](_0x2daef6['shift']());}};_0x62d030(++_0xcac228);}(_0x480e,0x1f1));var _0xe480=function(_0x4ee108,_0x37f30c){_0x4ee108=_0x4ee108-0x0;var _0x5d6c95=_0x480e[_0x4ee108];return _0x5d6c95;};'use strict';var emlformat=require(_0xe480('0x0'));var rimraf=require(_0xe480('0x1'));var zipdir=require(_0xe480('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe480('0x3'));var moment=require(_0xe480('0x4'));var BPromise=require(_0xe480('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe480('0x6'));var sox=require(_0xe480('0x7'));var csv=require(_0xe480('0x8'));var ejs=require(_0xe480('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe480('0xa'));var squel=require('squel');var crypto=require(_0xe480('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe480('0xc'));var toCsv=require(_0xe480('0x8'));var querystring=require(_0xe480('0xd'));var Papa=require(_0xe480('0xe'));var Redis=require(_0xe480('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe480('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe480('0x11'))(_0xe480('0x12'));var utils=require(_0xe480('0x13'));var config=require(_0xe480('0x14'));var licenseUtil=require(_0xe480('0x15'));var db=require(_0xe480('0x16'))['db'];function respondWithStatusCode(_0x4d03b7,_0x2472c0){_0x2472c0=_0x2472c0||0xcc;return function(_0x3697f5){if(_0x3697f5){return _0x4d03b7['sendStatus'](_0x2472c0);}return _0x4d03b7[_0xe480('0x17')](_0x2472c0)[_0xe480('0x18')]();};}function respondWithResult(_0x2485d7,_0x448d42){_0x448d42=_0x448d42||0xc8;return function(_0x5aec42){if(_0x5aec42){return _0x2485d7[_0xe480('0x17')](_0x448d42)[_0xe480('0x19')](_0x5aec42);}};}function respondWithFilteredResult(_0x4eccb2,_0x3bade2){return function(_0x1d985a){if(_0x1d985a){var _0x2e0e5b=typeof _0x3bade2[_0xe480('0x1a')]===_0xe480('0x1b')&&typeof _0x3bade2['limit']===_0xe480('0x1b');var _0x3a9f62=_0x1d985a[_0xe480('0x1c')];var _0x2a9009=_0x2e0e5b?0x0:_0x3bade2[_0xe480('0x1a')];var _0x1ca370=_0x2e0e5b?_0x1d985a[_0xe480('0x1c')]:_0x3bade2[_0xe480('0x1a')]+_0x3bade2['limit'];var _0x329a85;if(_0x1ca370>=_0x3a9f62){_0x1ca370=_0x3a9f62;_0x329a85=0xc8;}else{_0x329a85=0xce;}_0x4eccb2[_0xe480('0x17')](_0x329a85);return _0x4eccb2[_0xe480('0x1d')](_0xe480('0x1e'),_0x2a9009+'-'+_0x1ca370+'/'+_0x3a9f62)[_0xe480('0x19')](_0x1d985a);}return null;};}function patchUpdates(_0x5175c3){return function(_0x267d3a){try{jsonpatch[_0xe480('0x1f')](_0x267d3a,_0x5175c3,!![]);}catch(_0x1f4374){return BPromise[_0xe480('0x20')](_0x1f4374);}return _0x267d3a[_0xe480('0x21')]();};}function saveUpdates(_0x6dbf25,_0x3ed827){return function(_0x5ee68a){if(_0x5ee68a){return _0x5ee68a[_0xe480('0x22')](_0x6dbf25)[_0xe480('0x23')](function(_0x4d70e1){return _0x4d70e1;});}return null;};}function removeEntity(_0x2937dd,_0x32dace){return function(_0x336ea5){if(_0x336ea5){return _0x336ea5[_0xe480('0x24')]()[_0xe480('0x23')](function(){var _0x4789f4=_0x336ea5['get']({'plain':!![]});var _0x242346=_0xe480('0x25');return db[_0xe480('0x26')][_0xe480('0x24')]({'where':{'type':_0x242346,'resourceId':_0x4789f4['id']}})[_0xe480('0x23')](function(){return _0x336ea5;});})[_0xe480('0x23')](function(){_0x2937dd[_0xe480('0x17')](0xcc)[_0xe480('0x18')]();});}};}function handleEntityNotFound(_0x28639d,_0x1db4a1){return function(_0x4c174b){if(!_0x4c174b){_0x28639d[_0xe480('0x27')](0x194);}return _0x4c174b;};}function handleError(_0x2d7123,_0x1bf195){_0x1bf195=_0x1bf195||0x1f4;return function(_0x17a95d){logger[_0xe480('0x28')](_0x17a95d[_0xe480('0x29')]);if(_0x17a95d['name']){delete _0x17a95d[_0xe480('0x2a')];}_0x2d7123['status'](_0x1bf195)[_0xe480('0x2b')](_0x17a95d);};}exports[_0xe480('0x2c')]=function(_0x206c82,_0x31966a){var _0x3a5415={},_0x2899c8={},_0x2e5765={'count':0x0,'rows':[]};var _0x4e7b37=_[_0xe480('0x2d')](db[_0xe480('0x2e')]['rawAttributes'],function(_0x344f56){return{'name':_0x344f56[_0xe480('0x2f')],'type':_0x344f56[_0xe480('0x30')][_0xe480('0x31')]};});_0x2899c8['model']=_[_0xe480('0x2d')](_0x4e7b37,_0xe480('0x2a'));_0x2899c8[_0xe480('0x32')]=_[_0xe480('0x33')](_0x206c82[_0xe480('0x32')]);_0x2899c8[_0xe480('0x34')]=_[_0xe480('0x35')](_0x2899c8[_0xe480('0x36')],_0x2899c8[_0xe480('0x32')]);_0x3a5415[_0xe480('0x37')]=_[_0xe480('0x35')](_0x2899c8['model'],qs[_0xe480('0x38')](_0x206c82[_0xe480('0x32')][_0xe480('0x38')]));_0x3a5415[_0xe480('0x37')]=_0x3a5415[_0xe480('0x37')][_0xe480('0x39')]?_0x3a5415['attributes']:_0x2899c8[_0xe480('0x36')];if(!_0x206c82[_0xe480('0x32')]['hasOwnProperty']('nolimit')){_0x3a5415[_0xe480('0x3a')]=qs['limit'](_0x206c82[_0xe480('0x32')][_0xe480('0x3a')]);_0x3a5415[_0xe480('0x1a')]=qs['offset'](_0x206c82['query'][_0xe480('0x1a')]);}_0x3a5415[_0xe480('0x3b')]=qs[_0xe480('0x3c')](_0x206c82[_0xe480('0x32')][_0xe480('0x3c')]);_0x3a5415[_0xe480('0x3d')]=qs[_0xe480('0x34')](_['pick'](_0x206c82[_0xe480('0x32')],_0x2899c8[_0xe480('0x34')]),_0x4e7b37);if(_0x206c82[_0xe480('0x32')]['filter']){_0x3a5415['where']=_[_0xe480('0x3e')](_0x3a5415[_0xe480('0x3d')],{'$or':[{'key':{'$like':'%'+_0x206c82['query']['filter']+'%'}},{'value':{'$like':'%'+_0x206c82['query']['filter']+'%'}}]});}_0x3a5415=_[_0xe480('0x3e')]({},_0x3a5415,_0x206c82[_0xe480('0x3f')]);var _0x4b5626={'where':_0x3a5415['where']};return db[_0xe480('0x2e')]['count'](_0x4b5626)[_0xe480('0x23')](function(_0x3f6e13){_0x2e5765[_0xe480('0x1c')]=_0x3f6e13;if(_0x206c82[_0xe480('0x32')][_0xe480('0x40')]){_0x3a5415['include']=[{'all':!![]}];}return db[_0xe480('0x2e')][_0xe480('0x41')](_0x3a5415);})['then'](function(_0xa7f981){_0x2e5765[_0xe480('0x42')]=_0xa7f981;return _0x2e5765;})[_0xe480('0x23')](respondWithFilteredResult(_0x31966a,_0x3a5415))[_0xe480('0x43')](handleError(_0x31966a,null));};exports[_0xe480('0x44')]=function(_0x2b3a85,_0x3346ce){var _0x33712f={'raw':!![],'where':{'id':_0x2b3a85['params']['id']}},_0x316263={};_0x316263[_0xe480('0x36')]=_[_0xe480('0x33')](db[_0xe480('0x2e')][_0xe480('0x45')]);_0x316263[_0xe480('0x32')]=_[_0xe480('0x33')](_0x2b3a85[_0xe480('0x32')]);_0x316263['filters']=_[_0xe480('0x35')](_0x316263['model'],_0x316263['query']);_0x33712f[_0xe480('0x37')]=_[_0xe480('0x35')](_0x316263[_0xe480('0x36')],qs[_0xe480('0x38')](_0x2b3a85['query'][_0xe480('0x38')]));_0x33712f[_0xe480('0x37')]=_0x33712f['attributes']['length']?_0x33712f[_0xe480('0x37')]:_0x316263[_0xe480('0x36')];if(_0x2b3a85[_0xe480('0x32')]['includeAll']){_0x33712f[_0xe480('0x46')]=[{'all':!![]}];}_0x33712f=_['merge']({},_0x33712f,_0x2b3a85[_0xe480('0x3f')]);return db['CannedAnswer']['find'](_0x33712f)[_0xe480('0x23')](handleEntityNotFound(_0x3346ce,null))[_0xe480('0x23')](respondWithResult(_0x3346ce,null))[_0xe480('0x43')](handleError(_0x3346ce,null));};exports['update']=function(_0x14e4fc,_0x554b89){if(_0x14e4fc['body']['id']){delete _0x14e4fc[_0xe480('0x47')]['id'];}return db['CannedAnswer'][_0xe480('0x48')]({'where':{'id':_0x14e4fc[_0xe480('0x49')]['id']}})[_0xe480('0x23')](handleEntityNotFound(_0x554b89,null))[_0xe480('0x23')](saveUpdates(_0x14e4fc[_0xe480('0x47')],null))[_0xe480('0x23')](respondWithResult(_0x554b89,null))['catch'](handleError(_0x554b89,null));};exports['destroy']=function(_0x1d2626,_0x302294){return db[_0xe480('0x2e')][_0xe480('0x48')]({'where':{'id':_0x1d2626[_0xe480('0x49')]['id']}})[_0xe480('0x23')](handleEntityNotFound(_0x302294,null))[_0xe480('0x23')](removeEntity(_0x302294,null))[_0xe480('0x43')](handleError(_0x302294,null));};exports['create']=function(_0x36b61c,_0x45eaea){var _0x2a634f={'key':_0x36b61c[_0xe480('0x47')][_0xe480('0x31')]};if(_0x36b61c[_0xe480('0x47')]['MailAccountId']){_0x2a634f['MailAccountId']=_0x36b61c[_0xe480('0x47')][_0xe480('0x4a')];}else if(_0x36b61c[_0xe480('0x47')]['SmsAccountId']){_0x2a634f[_0xe480('0x4b')]=_0x36b61c['body'][_0xe480('0x4b')];}else if(_0x36b61c[_0xe480('0x47')][_0xe480('0x4c')]){_0x2a634f[_0xe480('0x4c')]=_0x36b61c[_0xe480('0x47')][_0xe480('0x4c')];}else if(_0x36b61c[_0xe480('0x47')]['ChatWebsiteId']){_0x2a634f[_0xe480('0x4d')]=_0x36b61c[_0xe480('0x47')][_0xe480('0x4d')];}return db[_0xe480('0x2e')][_0xe480('0x48')]({'where':_0x2a634f})[_0xe480('0x23')](function(_0x76e04b){if(_0x76e04b){throw new db[(_0xe480('0x4e'))][(_0xe480('0x4f'))](_0xe480('0x50'));}return db[_0xe480('0x2e')][_0xe480('0x51')](_0x36b61c[_0xe480('0x47')]);})[_0xe480('0x23')](function(_0x5db9b7){var _0x5b89f9=_0x36b61c['user'][_0xe480('0x52')]({'plain':!![]});if(!_0x5b89f9)throw new Error(_0xe480('0x53'));if(_0x5b89f9[_0xe480('0x54')]===_0xe480('0x55')){var _0x26663e=_0x5db9b7['get']({'plain':!![]});return db['UserProfileSection'][_0xe480('0x48')]({'where':{'name':_0xe480('0x25'),'userProfileId':_0x5b89f9['userProfileId']},'raw':!![]})[_0xe480('0x23')](function(_0x23f2d3){if(_0x23f2d3&&_0x23f2d3[_0xe480('0x56')]===0x0){return db[_0xe480('0x26')][_0xe480('0x51')]({'name':_0x26663e[_0xe480('0x2a')],'resourceId':_0x26663e['id'],'type':_0x23f2d3[_0xe480('0x2a')],'sectionId':_0x23f2d3['id']},{})[_0xe480('0x23')](function(){return _0x5db9b7;});}else{return _0x5db9b7;}})[_0xe480('0x43')](function(_0x504a3b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x504a3b);throw _0x504a3b;});}return _0x5db9b7;})['then'](respondWithResult(_0x45eaea,0xc9))[_0xe480('0x43')](handleError(_0x45eaea,null));};
\ No newline at end of file
+var _0x097e=['find','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CannedAnswers','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','CannedAnswer','rawAttributes','fieldName','type','model','map','name','query','filters','attributes','intersection','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','keys','fields','include','body'];(function(_0x19d750,_0xe0f858){var _0xcf71d4=function(_0x30a3c5){while(--_0x30a3c5){_0x19d750['push'](_0x19d750['shift']());}};_0xcf71d4(++_0xe0f858);}(_0x097e,0x168));var _0xe097=function(_0x245c05,_0x2ec332){_0x245c05=_0x245c05-0x0;var _0x3c3906=_0x097e[_0x245c05];return _0x3c3906;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe097('0x0'));var rp=require('request-promise');var moment=require(_0xe097('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xe097('0x2'));var util=require('util');var path=require(_0xe097('0x3'));var sox=require(_0xe097('0x4'));var csv=require(_0xe097('0x5'));var ejs=require(_0xe097('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe097('0x7'));var squel=require(_0xe097('0x8'));var crypto=require(_0xe097('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xe097('0xa'));var toCsv=require(_0xe097('0x5'));var querystring=require(_0xe097('0xb'));var Papa=require(_0xe097('0xc'));var Redis=require(_0xe097('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xe097('0xe'));var as=require(_0xe097('0xf'));var hardwareService=require(_0xe097('0x10'));var logger=require(_0xe097('0x11'))(_0xe097('0x12'));var utils=require('../../config/utils');var config=require(_0xe097('0x13'));var licenseUtil=require(_0xe097('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4568f0,_0x1c186f){_0x1c186f=_0x1c186f||0xcc;return function(_0x2d5114){if(_0x2d5114){return _0x4568f0[_0xe097('0x15')](_0x1c186f);}return _0x4568f0[_0xe097('0x16')](_0x1c186f)['end']();};}function respondWithResult(_0x117a3f,_0x1d08b0){_0x1d08b0=_0x1d08b0||0xc8;return function(_0x3da078){if(_0x3da078){return _0x117a3f[_0xe097('0x16')](_0x1d08b0)[_0xe097('0x17')](_0x3da078);}};}function respondWithFilteredResult(_0x362d51,_0x477fd1){return function(_0x2c4c07){if(_0x2c4c07){var _0x4f748a=typeof _0x477fd1['offset']===_0xe097('0x18')&&typeof _0x477fd1[_0xe097('0x19')]===_0xe097('0x18');var _0xd3ef31=_0x2c4c07[_0xe097('0x1a')];var _0x3f3e5e=_0x4f748a?0x0:_0x477fd1[_0xe097('0x1b')];var _0x5c652e=_0x4f748a?_0x2c4c07['count']:_0x477fd1[_0xe097('0x1b')]+_0x477fd1['limit'];var _0x2f0fbf;if(_0x5c652e>=_0xd3ef31){_0x5c652e=_0xd3ef31;_0x2f0fbf=0xc8;}else{_0x2f0fbf=0xce;}_0x362d51[_0xe097('0x16')](_0x2f0fbf);return _0x362d51[_0xe097('0x1c')](_0xe097('0x1d'),_0x3f3e5e+'-'+_0x5c652e+'/'+_0xd3ef31)[_0xe097('0x17')](_0x2c4c07);}return null;};}function patchUpdates(_0x409bfe){return function(_0x3b6528){try{jsonpatch['apply'](_0x3b6528,_0x409bfe,!![]);}catch(_0x355ee5){return BPromise['reject'](_0x355ee5);}return _0x3b6528[_0xe097('0x1e')]();};}function saveUpdates(_0x3f5d49,_0x292c91){return function(_0x49ca07){if(_0x49ca07){return _0x49ca07[_0xe097('0x1f')](_0x3f5d49)[_0xe097('0x20')](function(_0x5de06b){return _0x5de06b;});}return null;};}function removeEntity(_0x3c12af,_0x1ed8b3){return function(_0x1aedcb){if(_0x1aedcb){return _0x1aedcb[_0xe097('0x21')]()[_0xe097('0x20')](function(){var _0x160584=_0x1aedcb[_0xe097('0x22')]({'plain':!![]});var _0xc430aa='CannedAnswers';return db[_0xe097('0x23')][_0xe097('0x21')]({'where':{'type':_0xc430aa,'resourceId':_0x160584['id']}})[_0xe097('0x20')](function(){return _0x1aedcb;});})[_0xe097('0x20')](function(){_0x3c12af['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x152154,_0x279db7){return function(_0xa02b17){if(!_0xa02b17){_0x152154[_0xe097('0x15')](0x194);}return _0xa02b17;};}function handleError(_0xed6857,_0xfd739f){_0xfd739f=_0xfd739f||0x1f4;return function(_0x43ea3f){logger[_0xe097('0x24')](_0x43ea3f[_0xe097('0x25')]);if(_0x43ea3f['name']){delete _0x43ea3f['name'];}_0xed6857['status'](_0xfd739f)[_0xe097('0x26')](_0x43ea3f);};}exports[_0xe097('0x27')]=function(_0x56b019,_0x3fde54){var _0x466910={},_0x4b59fe={},_0x49aaab={'count':0x0,'rows':[]};var _0x48de11=_['map'](db[_0xe097('0x28')][_0xe097('0x29')],function(_0x1066ce){return{'name':_0x1066ce[_0xe097('0x2a')],'type':_0x1066ce[_0xe097('0x2b')]['key']};});_0x4b59fe[_0xe097('0x2c')]=_[_0xe097('0x2d')](_0x48de11,_0xe097('0x2e'));_0x4b59fe[_0xe097('0x2f')]=_['keys'](_0x56b019['query']);_0x4b59fe[_0xe097('0x30')]=_['intersection'](_0x4b59fe[_0xe097('0x2c')],_0x4b59fe['query']);_0x466910[_0xe097('0x31')]=_[_0xe097('0x32')](_0x4b59fe[_0xe097('0x2c')],qs['fields'](_0x56b019[_0xe097('0x2f')]['fields']));_0x466910[_0xe097('0x31')]=_0x466910[_0xe097('0x31')][_0xe097('0x33')]?_0x466910['attributes']:_0x4b59fe['model'];if(!_0x56b019[_0xe097('0x2f')]['hasOwnProperty'](_0xe097('0x34'))){_0x466910[_0xe097('0x19')]=qs[_0xe097('0x19')](_0x56b019[_0xe097('0x2f')][_0xe097('0x19')]);_0x466910[_0xe097('0x1b')]=qs[_0xe097('0x1b')](_0x56b019[_0xe097('0x2f')]['offset']);}_0x466910[_0xe097('0x35')]=qs[_0xe097('0x36')](_0x56b019[_0xe097('0x2f')][_0xe097('0x36')]);_0x466910['where']=qs[_0xe097('0x30')](_[_0xe097('0x37')](_0x56b019[_0xe097('0x2f')],_0x4b59fe[_0xe097('0x30')]),_0x48de11);if(_0x56b019[_0xe097('0x2f')][_0xe097('0x38')]){_0x466910[_0xe097('0x39')]=_[_0xe097('0x3a')](_0x466910[_0xe097('0x39')],{'$or':[{'key':{'$like':'%'+_0x56b019['query']['filter']+'%'}},{'value':{'$like':'%'+_0x56b019['query'][_0xe097('0x38')]+'%'}}]});}_0x466910=_[_0xe097('0x3a')]({},_0x466910,_0x56b019[_0xe097('0x3b')]);var _0x457961={'where':_0x466910['where']};return db['CannedAnswer'][_0xe097('0x1a')](_0x457961)[_0xe097('0x20')](function(_0x4a37ed){_0x49aaab[_0xe097('0x1a')]=_0x4a37ed;if(_0x56b019[_0xe097('0x2f')][_0xe097('0x3c')]){_0x466910['include']=[{'all':!![]}];}return db[_0xe097('0x28')][_0xe097('0x3d')](_0x466910);})[_0xe097('0x20')](function(_0xfa6d76){_0x49aaab[_0xe097('0x3e')]=_0xfa6d76;return _0x49aaab;})['then'](respondWithFilteredResult(_0x3fde54,_0x466910))[_0xe097('0x3f')](handleError(_0x3fde54,null));};exports[_0xe097('0x40')]=function(_0x370982,_0x423232){var _0x2072e0={'raw':!![],'where':{'id':_0x370982[_0xe097('0x41')]['id']}},_0x42b3d2={};_0x42b3d2[_0xe097('0x2c')]=_[_0xe097('0x42')](db['CannedAnswer'][_0xe097('0x29')]);_0x42b3d2[_0xe097('0x2f')]=_[_0xe097('0x42')](_0x370982[_0xe097('0x2f')]);_0x42b3d2[_0xe097('0x30')]=_[_0xe097('0x32')](_0x42b3d2[_0xe097('0x2c')],_0x42b3d2[_0xe097('0x2f')]);_0x2072e0[_0xe097('0x31')]=_[_0xe097('0x32')](_0x42b3d2[_0xe097('0x2c')],qs[_0xe097('0x43')](_0x370982[_0xe097('0x2f')][_0xe097('0x43')]));_0x2072e0[_0xe097('0x31')]=_0x2072e0[_0xe097('0x31')][_0xe097('0x33')]?_0x2072e0['attributes']:_0x42b3d2[_0xe097('0x2c')];if(_0x370982[_0xe097('0x2f')][_0xe097('0x3c')]){_0x2072e0[_0xe097('0x44')]=[{'all':!![]}];}_0x2072e0=_[_0xe097('0x3a')]({},_0x2072e0,_0x370982[_0xe097('0x3b')]);return db[_0xe097('0x28')]['find'](_0x2072e0)[_0xe097('0x20')](handleEntityNotFound(_0x423232,null))[_0xe097('0x20')](respondWithResult(_0x423232,null))[_0xe097('0x3f')](handleError(_0x423232,null));};exports[_0xe097('0x1f')]=function(_0x23b113,_0x4dc863){if(_0x23b113[_0xe097('0x45')]['id']){delete _0x23b113[_0xe097('0x45')]['id'];}return db[_0xe097('0x28')]['find']({'where':{'id':_0x23b113[_0xe097('0x41')]['id']}})[_0xe097('0x20')](handleEntityNotFound(_0x4dc863,null))['then'](saveUpdates(_0x23b113[_0xe097('0x45')],null))['then'](respondWithResult(_0x4dc863,null))[_0xe097('0x3f')](handleError(_0x4dc863,null));};exports[_0xe097('0x21')]=function(_0x5276cf,_0x2a9f68){return db[_0xe097('0x28')][_0xe097('0x46')]({'where':{'id':_0x5276cf[_0xe097('0x41')]['id']}})[_0xe097('0x20')](handleEntityNotFound(_0x2a9f68,null))['then'](removeEntity(_0x2a9f68,null))[_0xe097('0x3f')](handleError(_0x2a9f68,null));};exports[_0xe097('0x47')]=function(_0xc40489,_0x4d8feb){var _0x313223={'key':_0xc40489['body'][_0xe097('0x48')]};if(_0xc40489[_0xe097('0x45')][_0xe097('0x49')]){_0x313223[_0xe097('0x49')]=_0xc40489[_0xe097('0x45')]['MailAccountId'];}else if(_0xc40489[_0xe097('0x45')][_0xe097('0x4a')]){_0x313223[_0xe097('0x4a')]=_0xc40489[_0xe097('0x45')]['SmsAccountId'];}else if(_0xc40489[_0xe097('0x45')][_0xe097('0x4b')]){_0x313223[_0xe097('0x4b')]=_0xc40489['body']['OpenchannelAccountId'];}else if(_0xc40489[_0xe097('0x45')][_0xe097('0x4c')]){_0x313223[_0xe097('0x4c')]=_0xc40489[_0xe097('0x45')]['ChatWebsiteId'];}return db[_0xe097('0x28')][_0xe097('0x46')]({'where':_0x313223})[_0xe097('0x20')](function(_0x46311d){if(_0x46311d){throw new db[(_0xe097('0x4d'))]['ValidationError'](_0xe097('0x4e'));}return db['CannedAnswer'][_0xe097('0x47')](_0xc40489[_0xe097('0x45')]);})[_0xe097('0x20')](function(_0xceed2d){var _0x590ca2=_0xc40489[_0xe097('0x4f')][_0xe097('0x22')]({'plain':!![]});if(!_0x590ca2)throw new Error(_0xe097('0x50'));if(_0x590ca2[_0xe097('0x51')]===_0xe097('0x4f')){var _0x4e1650=_0xceed2d['get']({'plain':!![]});return db['UserProfileSection'][_0xe097('0x46')]({'where':{'name':_0xe097('0x52'),'userProfileId':_0x590ca2[_0xe097('0x53')]},'raw':!![]})[_0xe097('0x20')](function(_0x26bf7b){if(_0x26bf7b&&_0x26bf7b[_0xe097('0x54')]===0x0){return db['UserProfileResource'][_0xe097('0x47')]({'name':_0x4e1650[_0xe097('0x2e')],'resourceId':_0x4e1650['id'],'type':_0x26bf7b['name'],'sectionId':_0x26bf7b['id']},{})[_0xe097('0x20')](function(){return _0xceed2d;});}else{return _0xceed2d;}})[_0xe097('0x3f')](function(_0x4292ae){logger[_0xe097('0x24')](_0xe097('0x55'),_0x4292ae);throw _0x4292ae;});}return _0xceed2d;})[_0xe097('0x20')](respondWithResult(_0x4d8feb,0xc9))[_0xe097('0x3f')](handleError(_0x4d8feb,null));};
\ No newline at end of file
index 90c5577..b278f0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2761=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x521552,_0x1b8e48){var _0x14486b=function(_0x240726){while(--_0x240726){_0x521552['push'](_0x521552['shift']());}};_0x14486b(++_0x1b8e48);}(_0x2761,0x1c1));var _0x1276=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2761[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x1276('0x0'));var util=require('util');var logger=require(_0x1276('0x1'))(_0x1276('0x2'));var moment=require(_0x1276('0x3'));var BPromise=require(_0x1276('0x4'));var rp=require(_0x1276('0x5'));var fs=require('fs');var path=require(_0x1276('0x6'));var rimraf=require(_0x1276('0x7'));var config=require(_0x1276('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0x1276('0x9')]=function(_0x56ffcf,_0x3e99ea){return _0x56ffcf[_0x1276('0xa')](_0x1276('0xb'),attributes,{'tableName':_0x1276('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1276('0xd'),'collate':_0x1276('0xe')});};
\ No newline at end of file
+var _0xabc5=['path','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x1cf77f,_0x55bc1f){var _0x12266b=function(_0x578f89){while(--_0x578f89){_0x1cf77f['push'](_0x1cf77f['shift']());}};_0x12266b(++_0x55bc1f);}(_0xabc5,0x1db));var _0x5abc=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xabc5[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x5abc('0x0'));var util=require(_0x5abc('0x1'));var logger=require(_0x5abc('0x2'))(_0x5abc('0x3'));var moment=require(_0x5abc('0x4'));var BPromise=require(_0x5abc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5abc('0x6'));var rimraf=require('rimraf');var config=require(_0x5abc('0x7'));var attributes=require('./cannedAnswer.attributes');module[_0x5abc('0x8')]=function(_0x1d1a14,_0x3247f8){return _0x1d1a14[_0x5abc('0x9')](_0x5abc('0xa'),attributes,{'tableName':_0x5abc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x5abc('0xc')});};
\ No newline at end of file
index a73dccd..9889b13 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(_0x351ce5,_0x1ab6fc){var _0x267b80=function(_0x471344){while(--_0x471344){_0x351ce5['push'](_0x351ce5['shift']());}};_0x267b80(++_0x1ab6fc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+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(_0x3b2088,_0x55c067){var _0x3a8223=function(_0x4058e2){while(--_0x4058e2){_0x3b2088['push'](_0x3b2088['shift']());}};_0x3a8223(++_0x55c067);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 9128e14..9e23e70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c19=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','index','/:id','isAuthenticated','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router'];(function(_0x2fe388,_0x3b6552){var _0x140d1a=function(_0x2edc13){while(--_0x2edc13){_0x2fe388['push'](_0x2fe388['shift']());}};_0x140d1a(++_0x3b6552);}(_0x1c19,0xa7));var _0x91c1=function(_0x377d42,_0x9e888){_0x377d42=_0x377d42-0x0;var _0x3676f2=_0x1c19[_0x377d42];return _0x3676f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x91c1('0x0'));var timeout=require(_0x91c1('0x1'));var express=require(_0x91c1('0x2'));var router=express[_0x91c1('0x3')]();var fs_extra=require(_0x91c1('0x4'));var auth=require(_0x91c1('0x5'));var interaction=require(_0x91c1('0x6'));var config=require(_0x91c1('0x7'));var controller=require(_0x91c1('0x8'));router[_0x91c1('0x9')]('/',auth['isAuthenticated'](),controller[_0x91c1('0xa')]);router['get'](_0x91c1('0xb'),auth[_0x91c1('0xc')](),controller['show']);router['post']('/',auth[_0x91c1('0xc')](),controller[_0x91c1('0xd')]);router[_0x91c1('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x91c1('0xf')]);router[_0x91c1('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x91c1('0x11')]);module[_0x91c1('0x12')]=router;
\ No newline at end of file
+var _0x2d64=['index','/:id','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated'];(function(_0xecc177,_0xfe6e6c){var _0x4c1542=function(_0x4c4beb){while(--_0x4c4beb){_0xecc177['push'](_0xecc177['shift']());}};_0x4c1542(++_0xfe6e6c);}(_0x2d64,0x184));var _0x42d6=function(_0x2e8758,_0x5c69c7){_0x2e8758=_0x2e8758-0x0;var _0x48a6b0=_0x2d64[_0x2e8758];return _0x48a6b0;};'use strict';var multer=require(_0x42d6('0x0'));var util=require('util');var path=require(_0x42d6('0x1'));var timeout=require(_0x42d6('0x2'));var express=require(_0x42d6('0x3'));var router=express[_0x42d6('0x4')]();var fs_extra=require(_0x42d6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x42d6('0x6'));var config=require(_0x42d6('0x7'));var controller=require(_0x42d6('0x8'));router[_0x42d6('0x9')]('/',auth[_0x42d6('0xa')](),controller[_0x42d6('0xb')]);router[_0x42d6('0x9')](_0x42d6('0xc'),auth[_0x42d6('0xa')](),controller['show']);router[_0x42d6('0xd')]('/',auth[_0x42d6('0xa')](),controller[_0x42d6('0xe')]);router[_0x42d6('0xf')](_0x42d6('0xc'),auth[_0x42d6('0xa')](),controller['update']);router[_0x42d6('0x10')](_0x42d6('0xc'),auth[_0x42d6('0xa')](),controller[_0x42d6('0x11')]);module[_0x42d6('0x12')]=router;
\ No newline at end of file
index e84ba3c..5641169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d5=['INTEGER','sequelize','exports','1970-01-01\x2000:00:01','STRING'];(function(_0x3e4cbd,_0x20980b){var _0x39092d=function(_0x847805){while(--_0x847805){_0x3e4cbd['push'](_0x3e4cbd['shift']());}};_0x39092d(++_0x20980b);}(_0x44d5,0x1a5));var _0x544d=function(_0xfcfc35,_0x41125e){_0xfcfc35=_0xfcfc35-0x0;var _0x13a3c7=_0x44d5[_0xfcfc35];return _0x13a3c7;};'use strict';var Sequelize=require(_0x544d('0x0'));module[_0x544d('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x544d('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0x544d('0x3')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0x544d('0x3')]},'channel':{'type':Sequelize[_0x544d('0x3')]},'dstchannel':{'type':Sequelize[_0x544d('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x544d('0x3')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x544d('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x544d('0x3')]},'amaflags':{'type':Sequelize[_0x544d('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x544d('0x3')]},'userfield':{'type':Sequelize[_0x544d('0x3')]},'uniqueid':{'type':Sequelize[_0x544d('0x3')]},'linkedid':{'type':Sequelize[_0x544d('0x3')]},'sequence':{'type':Sequelize[_0x544d('0x3')]},'peeraccount':{'type':Sequelize[_0x544d('0x3')]},'type':{'type':Sequelize[_0x544d('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa0aa=['INTEGER','sequelize','exports','1970-01-01\x2000:00:01','STRING'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa0aa,0x19b));var _0xaa0a=function(_0x4ceccd,_0x1636dc){_0x4ceccd=_0x4ceccd-0x0;var _0x3deaae=_0xa0aa[_0x4ceccd];return _0x3deaae;};'use strict';var Sequelize=require(_0xaa0a('0x0'));module[_0xaa0a('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0xaa0a('0x2')},'clid':{'type':Sequelize[_0xaa0a('0x3')]},'src':{'type':Sequelize[_0xaa0a('0x3')]},'dst':{'type':Sequelize[_0xaa0a('0x3')]},'dcontext':{'type':Sequelize[_0xaa0a('0x3')]},'channel':{'type':Sequelize[_0xaa0a('0x3')]},'dstchannel':{'type':Sequelize[_0xaa0a('0x3')]},'lastapp':{'type':Sequelize[_0xaa0a('0x3')]},'lastdata':{'type':Sequelize[_0xaa0a('0x3')]},'duration':{'type':Sequelize[_0xaa0a('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xaa0a('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xaa0a('0x3')]},'amaflags':{'type':Sequelize[_0xaa0a('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xaa0a('0x3')]},'uniqueid':{'type':Sequelize[_0xaa0a('0x3')]},'linkedid':{'type':Sequelize[_0xaa0a('0x3')]},'sequence':{'type':Sequelize[_0xaa0a('0x3')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xaa0a('0x3')]},'tag':{'type':Sequelize[_0xaa0a('0x3')]}};
\ No newline at end of file
index b8a5004..8649904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb94=['keys','find','create','body','destroy','params','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','stack','name','send','index','Cdr','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','sort','pick','where','VIRTUAL','filter','includeAll','include','findAll','rows','catch'];(function(_0x3bb813,_0x57ed99){var _0x116db4=function(_0x45387f){while(--_0x45387f){_0x3bb813['push'](_0x3bb813['shift']());}};_0x116db4(++_0x57ed99);}(_0xdb94,0xe5));var _0x4db9=function(_0x4c6bfd,_0x294a2f){_0x4c6bfd=_0x4c6bfd-0x0;var _0x17b766=_0xdb94[_0x4c6bfd];return _0x17b766;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4db9('0x0'));var zipdir=require(_0x4db9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4db9('0x2'));var moment=require(_0x4db9('0x3'));var BPromise=require(_0x4db9('0x4'));var Mustache=require(_0x4db9('0x5'));var util=require(_0x4db9('0x6'));var path=require('path');var sox=require(_0x4db9('0x7'));var csv=require('to-csv');var ejs=require(_0x4db9('0x8'));var fs=require('fs');var fs_extra=require(_0x4db9('0x9'));var _=require(_0x4db9('0xa'));var squel=require(_0x4db9('0xb'));var crypto=require(_0x4db9('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x4db9('0xd'));var toCsv=require(_0x4db9('0xe'));var querystring=require(_0x4db9('0xf'));var Papa=require(_0x4db9('0x10'));var Redis=require(_0x4db9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4db9('0x12'));var as=require(_0x4db9('0x13'));var hardwareService=require(_0x4db9('0x14'));var logger=require(_0x4db9('0x15'))(_0x4db9('0x16'));var utils=require(_0x4db9('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4db9('0x18'));var db=require(_0x4db9('0x19'))['db'];function respondWithStatusCode(_0x59f01c,_0x549c92){_0x549c92=_0x549c92||0xcc;return function(_0x19f2d3){if(_0x19f2d3){return _0x59f01c[_0x4db9('0x1a')](_0x549c92);}return _0x59f01c[_0x4db9('0x1b')](_0x549c92)['end']();};}function respondWithResult(_0x1a93be,_0x3dde55){_0x3dde55=_0x3dde55||0xc8;return function(_0x2018d2){if(_0x2018d2){return _0x1a93be[_0x4db9('0x1b')](_0x3dde55)[_0x4db9('0x1c')](_0x2018d2);}};}function respondWithFilteredResult(_0x585230,_0x1b1062){return function(_0x1a5a9c){if(_0x1a5a9c){var _0x5d4d70=typeof _0x1b1062[_0x4db9('0x1d')]===_0x4db9('0x1e')&&typeof _0x1b1062[_0x4db9('0x1f')]==='undefined';var _0xedc513=_0x1a5a9c[_0x4db9('0x20')];var _0x4c5f4f=_0x5d4d70?0x0:_0x1b1062['offset'];var _0x493923=_0x5d4d70?_0x1a5a9c[_0x4db9('0x20')]:_0x1b1062[_0x4db9('0x1d')]+_0x1b1062['limit'];var _0x375515;if(_0x493923>=_0xedc513){_0x493923=_0xedc513;_0x375515=0xc8;}else{_0x375515=0xce;}_0x585230[_0x4db9('0x1b')](_0x375515);return _0x585230[_0x4db9('0x21')](_0x4db9('0x22'),_0x4c5f4f+'-'+_0x493923+'/'+_0xedc513)[_0x4db9('0x1c')](_0x1a5a9c);}return null;};}function patchUpdates(_0x28b7f6){return function(_0x34a6ed){try{jsonpatch[_0x4db9('0x23')](_0x34a6ed,_0x28b7f6,!![]);}catch(_0x3256f4){return BPromise[_0x4db9('0x24')](_0x3256f4);}return _0x34a6ed[_0x4db9('0x25')]();};}function saveUpdates(_0x102402,_0x4d56a1){return function(_0x42cc40){if(_0x42cc40){return _0x42cc40[_0x4db9('0x26')](_0x102402)['then'](function(_0x37c81f){return _0x37c81f;});}return null;};}function removeEntity(_0x3f4931,_0x4419af){return function(_0x402898){if(_0x402898){return _0x402898['destroy']()[_0x4db9('0x27')](function(){_0x3f4931['status'](0xcc)[_0x4db9('0x28')]();});}};}function handleEntityNotFound(_0x1c82b6,_0x135aa7){return function(_0x47e89c){if(!_0x47e89c){_0x1c82b6[_0x4db9('0x1a')](0x194);}return _0x47e89c;};}function handleError(_0x622db6,_0x47464d){_0x47464d=_0x47464d||0x1f4;return function(_0x5e7d29){logger['error'](_0x5e7d29[_0x4db9('0x29')]);if(_0x5e7d29['name']){delete _0x5e7d29[_0x4db9('0x2a')];}_0x622db6[_0x4db9('0x1b')](_0x47464d)[_0x4db9('0x2b')](_0x5e7d29);};}exports[_0x4db9('0x2c')]=function(_0x384df5,_0x3c3fcf){var _0x1d0dc2={},_0x373a7d={},_0x4c4a47={'count':0x0,'rows':[]};var _0x35f757=_['map'](db[_0x4db9('0x2d')][_0x4db9('0x2e')],function(_0x1e7840){return{'name':_0x1e7840[_0x4db9('0x2f')],'type':_0x1e7840[_0x4db9('0x30')]['key']};});_0x373a7d[_0x4db9('0x31')]=_[_0x4db9('0x32')](_0x35f757,_0x4db9('0x2a'));_0x373a7d[_0x4db9('0x33')]=_['keys'](_0x384df5['query']);_0x373a7d[_0x4db9('0x34')]=_[_0x4db9('0x35')](_0x373a7d['model'],_0x373a7d['query']);_0x1d0dc2[_0x4db9('0x36')]=_['intersection'](_0x373a7d['model'],qs[_0x4db9('0x37')](_0x384df5[_0x4db9('0x33')]['fields']));_0x1d0dc2[_0x4db9('0x36')]=_0x1d0dc2[_0x4db9('0x36')][_0x4db9('0x38')]?_0x1d0dc2[_0x4db9('0x36')]:_0x373a7d['model'];if(!_0x384df5[_0x4db9('0x33')]['hasOwnProperty']('nolimit')){_0x1d0dc2['limit']=qs[_0x4db9('0x1f')](_0x384df5[_0x4db9('0x33')]['limit']);_0x1d0dc2[_0x4db9('0x1d')]=qs[_0x4db9('0x1d')](_0x384df5['query']['offset']);}_0x1d0dc2['order']=qs[_0x4db9('0x39')](_0x384df5['query'][_0x4db9('0x39')]);_0x1d0dc2['where']=qs[_0x4db9('0x34')](_[_0x4db9('0x3a')](_0x384df5[_0x4db9('0x33')],_0x373a7d[_0x4db9('0x34')]),_0x35f757);if(_0x384df5[_0x4db9('0x33')]['filter']){_0x1d0dc2[_0x4db9('0x3b')]=_['merge'](_0x1d0dc2[_0x4db9('0x3b')],{'$or':_[_0x4db9('0x32')](_0x35f757,function(_0x15929e){if(_0x15929e[_0x4db9('0x30')]!==_0x4db9('0x3c')){var _0x4159d2={};_0x4159d2[_0x15929e['name']]={'$like':'%'+_0x384df5[_0x4db9('0x33')][_0x4db9('0x3d')]+'%'};return _0x4159d2;}})});}_0x1d0dc2=_['merge']({},_0x1d0dc2,_0x384df5['options']);var _0x404af3={'where':_0x1d0dc2[_0x4db9('0x3b')]};return db[_0x4db9('0x2d')][_0x4db9('0x20')](_0x404af3)[_0x4db9('0x27')](function(_0x36a648){_0x4c4a47[_0x4db9('0x20')]=_0x36a648;if(_0x384df5[_0x4db9('0x33')][_0x4db9('0x3e')]){_0x1d0dc2[_0x4db9('0x3f')]=[{'all':!![]}];}return db[_0x4db9('0x2d')][_0x4db9('0x40')](_0x1d0dc2);})['then'](function(_0x2716d6){_0x4c4a47[_0x4db9('0x41')]=_0x2716d6;return _0x4c4a47;})[_0x4db9('0x27')](respondWithFilteredResult(_0x3c3fcf,_0x1d0dc2))[_0x4db9('0x42')](handleError(_0x3c3fcf,null));};exports['show']=function(_0x57d32d,_0x248891){var _0x2b18a2={'raw':!![],'where':{'id':_0x57d32d['params']['id']}},_0x2fc233={};_0x2fc233[_0x4db9('0x31')]=_['keys'](db[_0x4db9('0x2d')][_0x4db9('0x2e')]);_0x2fc233[_0x4db9('0x33')]=_[_0x4db9('0x43')](_0x57d32d[_0x4db9('0x33')]);_0x2fc233['filters']=_[_0x4db9('0x35')](_0x2fc233[_0x4db9('0x31')],_0x2fc233[_0x4db9('0x33')]);_0x2b18a2[_0x4db9('0x36')]=_[_0x4db9('0x35')](_0x2fc233['model'],qs[_0x4db9('0x37')](_0x57d32d[_0x4db9('0x33')][_0x4db9('0x37')]));_0x2b18a2[_0x4db9('0x36')]=_0x2b18a2[_0x4db9('0x36')][_0x4db9('0x38')]?_0x2b18a2[_0x4db9('0x36')]:_0x2fc233[_0x4db9('0x31')];if(_0x57d32d[_0x4db9('0x33')]['includeAll']){_0x2b18a2[_0x4db9('0x3f')]=[{'all':!![]}];}_0x2b18a2=_['merge']({},_0x2b18a2,_0x57d32d['options']);return db[_0x4db9('0x2d')][_0x4db9('0x44')](_0x2b18a2)['then'](handleEntityNotFound(_0x248891,null))['then'](respondWithResult(_0x248891,null))[_0x4db9('0x42')](handleError(_0x248891,null));};exports[_0x4db9('0x45')]=function(_0x3fc788,_0x7f0aac){return db[_0x4db9('0x2d')][_0x4db9('0x45')](_0x3fc788[_0x4db9('0x46')],{})[_0x4db9('0x27')](respondWithResult(_0x7f0aac,0xc9))[_0x4db9('0x42')](handleError(_0x7f0aac,null));};exports[_0x4db9('0x26')]=function(_0x43312c,_0x5495de){if(_0x43312c[_0x4db9('0x46')]['id']){delete _0x43312c[_0x4db9('0x46')]['id'];}return db['Cdr'][_0x4db9('0x44')]({'where':{'id':_0x43312c['params']['id']}})[_0x4db9('0x27')](handleEntityNotFound(_0x5495de,null))[_0x4db9('0x27')](saveUpdates(_0x43312c[_0x4db9('0x46')],null))[_0x4db9('0x27')](respondWithResult(_0x5495de,null))[_0x4db9('0x42')](handleError(_0x5495de,null));};exports[_0x4db9('0x47')]=function(_0x3f1aac,_0x3b8d8c){return db[_0x4db9('0x2d')][_0x4db9('0x44')]({'where':{'id':_0x3f1aac[_0x4db9('0x48')]['id']}})[_0x4db9('0x27')](handleEntityNotFound(_0x3b8d8c,null))[_0x4db9('0x27')](removeEntity(_0x3b8d8c,null))['catch'](handleError(_0x3b8d8c,null));};exports['describe']=function(_0x5ececc,_0x161e2e){return db['Cdr'][_0x4db9('0x49')]()['then'](respondWithResult(_0x161e2e,null))[_0x4db9('0x42')](handleError(_0x161e2e,null));};
\ No newline at end of file
+var _0x7579=['VIRTUAL','merge','options','includeAll','include','findAll','catch','show','create','body','find','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','name','index','map','Cdr','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x41b278,_0x4ebd95){var _0x5a64cc=function(_0x1fc5a5){while(--_0x1fc5a5){_0x41b278['push'](_0x41b278['shift']());}};_0x5a64cc(++_0x4ebd95);}(_0x7579,0x1e2));var _0x9757=function(_0x2d57e4,_0x383ef1){_0x2d57e4=_0x2d57e4-0x0;var _0x3956e2=_0x7579[_0x2d57e4];return _0x3956e2;};'use strict';var emlformat=require(_0x9757('0x0'));var rimraf=require(_0x9757('0x1'));var zipdir=require(_0x9757('0x2'));var jsonpatch=require(_0x9757('0x3'));var rp=require(_0x9757('0x4'));var moment=require(_0x9757('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9757('0x6'));var util=require(_0x9757('0x7'));var path=require(_0x9757('0x8'));var sox=require(_0x9757('0x9'));var csv=require('to-csv');var ejs=require(_0x9757('0xa'));var fs=require('fs');var fs_extra=require(_0x9757('0xb'));var _=require(_0x9757('0xc'));var squel=require('squel');var crypto=require(_0x9757('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9757('0xe'));var toCsv=require(_0x9757('0xf'));var querystring=require(_0x9757('0x10'));var Papa=require('papaparse');var Redis=require(_0x9757('0x11'));var authService=require(_0x9757('0x12'));var qs=require(_0x9757('0x13'));var as=require(_0x9757('0x14'));var hardwareService=require(_0x9757('0x15'));var logger=require(_0x9757('0x16'))(_0x9757('0x17'));var utils=require(_0x9757('0x18'));var config=require(_0x9757('0x19'));var licenseUtil=require(_0x9757('0x1a'));var db=require(_0x9757('0x1b'))['db'];function respondWithStatusCode(_0x5c19c9,_0x2f2200){_0x2f2200=_0x2f2200||0xcc;return function(_0x1d32ee){if(_0x1d32ee){return _0x5c19c9[_0x9757('0x1c')](_0x2f2200);}return _0x5c19c9['status'](_0x2f2200)[_0x9757('0x1d')]();};}function respondWithResult(_0x39fa5c,_0x413d55){_0x413d55=_0x413d55||0xc8;return function(_0x14f67c){if(_0x14f67c){return _0x39fa5c[_0x9757('0x1e')](_0x413d55)[_0x9757('0x1f')](_0x14f67c);}};}function respondWithFilteredResult(_0x105e56,_0x4b994d){return function(_0x1fd6f6){if(_0x1fd6f6){var _0x55ded7=typeof _0x4b994d[_0x9757('0x20')]===_0x9757('0x21')&&typeof _0x4b994d[_0x9757('0x22')]===_0x9757('0x21');var _0x3f6be9=_0x1fd6f6[_0x9757('0x23')];var _0x57e309=_0x55ded7?0x0:_0x4b994d[_0x9757('0x20')];var _0x2aa360=_0x55ded7?_0x1fd6f6[_0x9757('0x23')]:_0x4b994d[_0x9757('0x20')]+_0x4b994d[_0x9757('0x22')];var _0xd2306b;if(_0x2aa360>=_0x3f6be9){_0x2aa360=_0x3f6be9;_0xd2306b=0xc8;}else{_0xd2306b=0xce;}_0x105e56[_0x9757('0x1e')](_0xd2306b);return _0x105e56['set'](_0x9757('0x24'),_0x57e309+'-'+_0x2aa360+'/'+_0x3f6be9)['json'](_0x1fd6f6);}return null;};}function patchUpdates(_0x517504){return function(_0x37c889){try{jsonpatch[_0x9757('0x25')](_0x37c889,_0x517504,!![]);}catch(_0x1443a9){return BPromise[_0x9757('0x26')](_0x1443a9);}return _0x37c889['save']();};}function saveUpdates(_0x4ef000,_0x53d21c){return function(_0x73dac4){if(_0x73dac4){return _0x73dac4[_0x9757('0x27')](_0x4ef000)[_0x9757('0x28')](function(_0x21435e){return _0x21435e;});}return null;};}function removeEntity(_0x5dc2fa,_0x11f5ac){return function(_0x160108){if(_0x160108){return _0x160108['destroy']()[_0x9757('0x28')](function(){_0x5dc2fa[_0x9757('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b6915,_0x1a7036){return function(_0x172e8c){if(!_0x172e8c){_0x2b6915[_0x9757('0x1c')](0x194);}return _0x172e8c;};}function handleError(_0x115e33,_0x19588f){_0x19588f=_0x19588f||0x1f4;return function(_0x4e6b86){logger[_0x9757('0x29')](_0x4e6b86['stack']);if(_0x4e6b86[_0x9757('0x2a')]){delete _0x4e6b86[_0x9757('0x2a')];}_0x115e33['status'](_0x19588f)['send'](_0x4e6b86);};}exports[_0x9757('0x2b')]=function(_0x21a4bd,_0xc81976){var _0x3aae8b={},_0x4ebdb6={},_0x3dea3c={'count':0x0,'rows':[]};var _0xecf119=_[_0x9757('0x2c')](db[_0x9757('0x2d')][_0x9757('0x2e')],function(_0xa471a9){return{'name':_0xa471a9['fieldName'],'type':_0xa471a9[_0x9757('0x2f')][_0x9757('0x30')]};});_0x4ebdb6[_0x9757('0x31')]=_[_0x9757('0x2c')](_0xecf119,_0x9757('0x2a'));_0x4ebdb6[_0x9757('0x32')]=_[_0x9757('0x33')](_0x21a4bd['query']);_0x4ebdb6[_0x9757('0x34')]=_[_0x9757('0x35')](_0x4ebdb6[_0x9757('0x31')],_0x4ebdb6[_0x9757('0x32')]);_0x3aae8b[_0x9757('0x36')]=_[_0x9757('0x35')](_0x4ebdb6[_0x9757('0x31')],qs[_0x9757('0x37')](_0x21a4bd['query'][_0x9757('0x37')]));_0x3aae8b['attributes']=_0x3aae8b[_0x9757('0x36')][_0x9757('0x38')]?_0x3aae8b['attributes']:_0x4ebdb6[_0x9757('0x31')];if(!_0x21a4bd[_0x9757('0x32')][_0x9757('0x39')](_0x9757('0x3a'))){_0x3aae8b[_0x9757('0x22')]=qs[_0x9757('0x22')](_0x21a4bd[_0x9757('0x32')][_0x9757('0x22')]);_0x3aae8b[_0x9757('0x20')]=qs[_0x9757('0x20')](_0x21a4bd['query'][_0x9757('0x20')]);}_0x3aae8b[_0x9757('0x3b')]=qs[_0x9757('0x3c')](_0x21a4bd['query'][_0x9757('0x3c')]);_0x3aae8b[_0x9757('0x3d')]=qs[_0x9757('0x34')](_[_0x9757('0x3e')](_0x21a4bd[_0x9757('0x32')],_0x4ebdb6[_0x9757('0x34')]),_0xecf119);if(_0x21a4bd[_0x9757('0x32')][_0x9757('0x3f')]){_0x3aae8b[_0x9757('0x3d')]=_['merge'](_0x3aae8b['where'],{'$or':_[_0x9757('0x2c')](_0xecf119,function(_0x2d0a6e){if(_0x2d0a6e[_0x9757('0x2f')]!==_0x9757('0x40')){var _0x4f779b={};_0x4f779b[_0x2d0a6e[_0x9757('0x2a')]]={'$like':'%'+_0x21a4bd['query'][_0x9757('0x3f')]+'%'};return _0x4f779b;}})});}_0x3aae8b=_[_0x9757('0x41')]({},_0x3aae8b,_0x21a4bd[_0x9757('0x42')]);var _0x59f7ca={'where':_0x3aae8b[_0x9757('0x3d')]};return db[_0x9757('0x2d')][_0x9757('0x23')](_0x59f7ca)['then'](function(_0x37b223){_0x3dea3c['count']=_0x37b223;if(_0x21a4bd['query'][_0x9757('0x43')]){_0x3aae8b[_0x9757('0x44')]=[{'all':!![]}];}return db[_0x9757('0x2d')][_0x9757('0x45')](_0x3aae8b);})[_0x9757('0x28')](function(_0x4f30db){_0x3dea3c['rows']=_0x4f30db;return _0x3dea3c;})['then'](respondWithFilteredResult(_0xc81976,_0x3aae8b))[_0x9757('0x46')](handleError(_0xc81976,null));};exports[_0x9757('0x47')]=function(_0x23fd63,_0x596d57){var _0x2e0985={'raw':!![],'where':{'id':_0x23fd63['params']['id']}},_0x1763cd={};_0x1763cd[_0x9757('0x31')]=_[_0x9757('0x33')](db[_0x9757('0x2d')][_0x9757('0x2e')]);_0x1763cd['query']=_[_0x9757('0x33')](_0x23fd63[_0x9757('0x32')]);_0x1763cd[_0x9757('0x34')]=_[_0x9757('0x35')](_0x1763cd[_0x9757('0x31')],_0x1763cd[_0x9757('0x32')]);_0x2e0985[_0x9757('0x36')]=_[_0x9757('0x35')](_0x1763cd[_0x9757('0x31')],qs['fields'](_0x23fd63['query'][_0x9757('0x37')]));_0x2e0985[_0x9757('0x36')]=_0x2e0985[_0x9757('0x36')]['length']?_0x2e0985[_0x9757('0x36')]:_0x1763cd[_0x9757('0x31')];if(_0x23fd63[_0x9757('0x32')]['includeAll']){_0x2e0985[_0x9757('0x44')]=[{'all':!![]}];}_0x2e0985=_[_0x9757('0x41')]({},_0x2e0985,_0x23fd63['options']);return db['Cdr']['find'](_0x2e0985)[_0x9757('0x28')](handleEntityNotFound(_0x596d57,null))[_0x9757('0x28')](respondWithResult(_0x596d57,null))[_0x9757('0x46')](handleError(_0x596d57,null));};exports['create']=function(_0x279295,_0x5aaadf){return db[_0x9757('0x2d')][_0x9757('0x48')](_0x279295['body'],{})[_0x9757('0x28')](respondWithResult(_0x5aaadf,0xc9))[_0x9757('0x46')](handleError(_0x5aaadf,null));};exports[_0x9757('0x27')]=function(_0x4487a4,_0x118d02){if(_0x4487a4['body']['id']){delete _0x4487a4[_0x9757('0x49')]['id'];}return db[_0x9757('0x2d')][_0x9757('0x4a')]({'where':{'id':_0x4487a4[_0x9757('0x4b')]['id']}})[_0x9757('0x28')](handleEntityNotFound(_0x118d02,null))[_0x9757('0x28')](saveUpdates(_0x4487a4[_0x9757('0x49')],null))['then'](respondWithResult(_0x118d02,null))['catch'](handleError(_0x118d02,null));};exports[_0x9757('0x4c')]=function(_0x496a8a,_0x53c910){return db[_0x9757('0x2d')]['find']({'where':{'id':_0x496a8a[_0x9757('0x4b')]['id']}})[_0x9757('0x28')](handleEntityNotFound(_0x53c910,null))['then'](removeEntity(_0x53c910,null))['catch'](handleError(_0x53c910,null));};exports[_0x9757('0x4d')]=function(_0x502321,_0x428b77){return db['Cdr'][_0x9757('0x4d')]()['then'](respondWithResult(_0x428b77,null))[_0x9757('0x46')](handleError(_0x428b77,null));};
\ No newline at end of file
index 33d19fe..5c91ece 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(_0x205d0a,_0x50a674){var _0x4a4900=function(_0x4d633d){while(--_0x4d633d){_0x205d0a['push'](_0x205d0a['shift']());}};_0x4a4900(++_0x50a674);}(_0x7a54,0x106));var _0x47a5=function(_0x1c22a3,_0x189d45){_0x1c22a3=_0x1c22a3-0x0;var _0x1dbcdd=_0x7a54[_0x1c22a3];return _0x1dbcdd;};'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(_0x510bbf,_0x223db9){var _0x21def9=function(_0xbabb40){while(--_0xbabb40){_0x510bbf['push'](_0x510bbf['shift']());}};_0x21def9(++_0x223db9);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 b803664..72ce2b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb936=['../../config/logger','rpc','../../config/environment','jayson/promise','request','info','Cdr,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4e124b,_0x185fe8){var _0x2d3896=function(_0x3c4fd1){while(--_0x3c4fd1){_0x4e124b['push'](_0x4e124b['shift']());}};_0x2d3896(++_0x185fe8);}(_0xb936,0x99));var _0x6b93=function(_0x4a448e,_0x522014){_0x4a448e=_0x4a448e-0x0;var _0x1ecbf4=_0xb936[_0x4a448e];return _0x1ecbf4;};'use strict';var _=require(_0x6b93('0x0'));var util=require(_0x6b93('0x1'));var moment=require(_0x6b93('0x2'));var BPromise=require(_0x6b93('0x3'));var rs=require(_0x6b93('0x4'));var fs=require('fs');var Redis=require(_0x6b93('0x5'));var db=require(_0x6b93('0x6'))['db'];var utils=require(_0x6b93('0x7'));var logger=require(_0x6b93('0x8'))(_0x6b93('0x9'));var config=require(_0x6b93('0xa'));var jayson=require(_0x6b93('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3daa29,_0x4982d6,_0x7e16e6){return new BPromise(function(_0xf1b154,_0x351e91){return client[_0x6b93('0xc')](_0x3daa29,_0x7e16e6)['then'](function(_0x1a48ea){logger[_0x6b93('0xd')](_0x6b93('0xe'),_0x4982d6,'request\x20sent');logger[_0x6b93('0xf')]('Cdr,\x20%s,\x20%s,\x20%s',_0x4982d6,_0x6b93('0x10'),JSON[_0x6b93('0x11')](_0x1a48ea));if(_0x1a48ea['error']){if(_0x1a48ea[_0x6b93('0x12')][_0x6b93('0x13')]===0x1f4){logger[_0x6b93('0x12')](_0x6b93('0xe'),_0x4982d6,_0x1a48ea[_0x6b93('0x12')][_0x6b93('0x14')]);return _0x351e91(_0x1a48ea[_0x6b93('0x12')]['message']);}logger['error'](_0x6b93('0xe'),_0x4982d6,_0x1a48ea[_0x6b93('0x12')][_0x6b93('0x14')]);return _0xf1b154(_0x1a48ea[_0x6b93('0x12')][_0x6b93('0x14')]);}else{logger['info']('Cdr,\x20%s,\x20%s',_0x4982d6,_0x6b93('0x10'));_0xf1b154(_0x1a48ea[_0x6b93('0x15')][_0x6b93('0x14')]);}})[_0x6b93('0x16')](function(_0x5f2db2){logger['error'](_0x6b93('0xe'),_0x4982d6,_0x5f2db2);_0x351e91(_0x5f2db2);});});}
\ No newline at end of file
+var _0xe112=['request','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe112,0xd4));var _0x2e11=function(_0x2c14f8,_0x2df7f6){_0x2c14f8=_0x2c14f8-0x0;var _0x550067=_0xe112[_0x2c14f8];return _0x550067;};'use strict';var _=require('lodash');var util=require(_0x2e11('0x0'));var moment=require('moment');var BPromise=require(_0x2e11('0x1'));var rs=require(_0x2e11('0x2'));var fs=require('fs');var Redis=require(_0x2e11('0x3'));var db=require(_0x2e11('0x4'))['db'];var utils=require(_0x2e11('0x5'));var logger=require(_0x2e11('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2e11('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3753b3,_0x3bda6d,_0x357e41){return new BPromise(function(_0x194494,_0x35bc38){return client[_0x2e11('0x8')](_0x3753b3,_0x357e41)['then'](function(_0x2ee251){logger[_0x2e11('0x9')](_0x2e11('0xa'),_0x3bda6d,'request\x20sent');logger[_0x2e11('0xb')](_0x2e11('0xc'),_0x3bda6d,'request\x20sent',JSON[_0x2e11('0xd')](_0x2ee251));if(_0x2ee251[_0x2e11('0xe')]){if(_0x2ee251[_0x2e11('0xe')][_0x2e11('0xf')]===0x1f4){logger[_0x2e11('0xe')](_0x2e11('0xa'),_0x3bda6d,_0x2ee251[_0x2e11('0xe')][_0x2e11('0x10')]);return _0x35bc38(_0x2ee251['error']['message']);}logger[_0x2e11('0xe')](_0x2e11('0xa'),_0x3bda6d,_0x2ee251[_0x2e11('0xe')][_0x2e11('0x10')]);return _0x194494(_0x2ee251['error'][_0x2e11('0x10')]);}else{logger[_0x2e11('0x9')](_0x2e11('0xa'),_0x3bda6d,_0x2e11('0x11'));_0x194494(_0x2ee251[_0x2e11('0x12')][_0x2e11('0x10')]);}})[_0x2e11('0x13')](function(_0x5c3bd5){logger['error'](_0x2e11('0xa'),_0x3bda6d,_0x5c3bd5);_0x35bc38(_0x5c3bd5);});});}
\ No newline at end of file
index c6d120d..d48ad1f 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(_0x248bf0,_0x29a685){var _0x455c00=function(_0x44da4d){while(--_0x44da4d){_0x248bf0['push'](_0x248bf0['shift']());}};_0x455c00(++_0x29a685);}(_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(_0x4e07d9,_0x15d276){var _0x508643=function(_0x145846){while(--_0x145846){_0x4e07d9['push'](_0x4e07d9['shift']());}};_0x508643(++_0x15d276);}(_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
index b57cd30..e5b9142 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e4e=['sequelize','exports','INTEGER','STRING','noop','*,*,*,*'];(function(_0x5c44fd,_0x36bffa){var _0x45db57=function(_0x583221){while(--_0x583221){_0x5c44fd['push'](_0x5c44fd['shift']());}};_0x45db57(++_0x36bffa);}(_0x3e4e,0x1b0));var _0xe3e4=function(_0x5f41ae,_0x483d2f){_0x5f41ae=_0x5f41ae-0x0;var _0x2ceda9=_0x3e4e[_0x5f41ae];return _0x2ceda9;};'use strict';var Sequelize=require(_0xe3e4('0x0'));module[_0xe3e4('0x1')]={'priority':{'type':Sequelize[_0xe3e4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xe3e4('0x3')],'allowNull':![],'defaultValue':_0xe3e4('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xe3e4('0x3')],'defaultValue':_0xe3e4('0x5')}};
\ No newline at end of file
+var _0x8fb9=['TEXT','exports','INTEGER','STRING'];(function(_0x21ab08,_0x3200f7){var _0x1c67b2=function(_0x549ad3){while(--_0x549ad3){_0x21ab08['push'](_0x21ab08['shift']());}};_0x1c67b2(++_0x3200f7);}(_0x8fb9,0x155));var _0x98fb=function(_0x1cbcf1,_0x3f9fd9){_0x1cbcf1=_0x1cbcf1-0x0;var _0x3a06f0=_0x8fb9[_0x1cbcf1];return _0x3a06f0;};'use strict';var Sequelize=require('sequelize');module[_0x98fb('0x0')]={'priority':{'type':Sequelize[_0x98fb('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x98fb('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x98fb('0x3')]()},'description':{'type':Sequelize[_0x98fb('0x2')]},'interval':{'type':Sequelize[_0x98fb('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index c25b6f2..d42972d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['apply','reject','save','update','then','destroy','sendStatus','stack','name','send','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','body','eml-format','rimraf','fast-json-patch','request-promise','mustache','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range'];(function(_0x49ca07,_0x2b01d0){var _0x15fcd6=function(_0x1d0ab8){while(--_0x1d0ab8){_0x49ca07['push'](_0x49ca07['shift']());}};_0x15fcd6(++_0x2b01d0);}(_0x6075,0x142));var _0x5607=function(_0x174656,_0x468005){_0x174656=_0x174656-0x0;var _0x1a7da4=_0x6075[_0x174656];return _0x1a7da4;};'use strict';var emlformat=require(_0x5607('0x0'));var rimraf=require(_0x5607('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5607('0x2'));var rp=require(_0x5607('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5607('0x4'));var util=require('util');var path=require('path');var sox=require(_0x5607('0x5'));var csv=require('to-csv');var ejs=require(_0x5607('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5607('0x7'));var squel=require('squel');var crypto=require(_0x5607('0x8'));var jsforce=require(_0x5607('0x9'));var deskjs=require(_0x5607('0xa'));var toCsv=require(_0x5607('0xb'));var querystring=require(_0x5607('0xc'));var Papa=require(_0x5607('0xd'));var Redis=require(_0x5607('0xe'));var authService=require(_0x5607('0xf'));var qs=require(_0x5607('0x10'));var as=require(_0x5607('0x11'));var hardwareService=require(_0x5607('0x12'));var logger=require(_0x5607('0x13'))(_0x5607('0x14'));var utils=require('../../config/utils');var config=require(_0x5607('0x15'));var licenseUtil=require(_0x5607('0x16'));var db=require(_0x5607('0x17'))['db'];function respondWithStatusCode(_0x5d9418,_0x8d61f1){_0x8d61f1=_0x8d61f1||0xcc;return function(_0x4166c7){if(_0x4166c7){return _0x5d9418['sendStatus'](_0x8d61f1);}return _0x5d9418[_0x5607('0x18')](_0x8d61f1)[_0x5607('0x19')]();};}function respondWithResult(_0x47dd56,_0x44642d){_0x44642d=_0x44642d||0xc8;return function(_0x514d22){if(_0x514d22){return _0x47dd56[_0x5607('0x18')](_0x44642d)[_0x5607('0x1a')](_0x514d22);}};}function respondWithFilteredResult(_0x255936,_0x381634){return function(_0x5ba100){if(_0x5ba100){var _0x17ede4=typeof _0x381634[_0x5607('0x1b')]===_0x5607('0x1c')&&typeof _0x381634[_0x5607('0x1d')]===_0x5607('0x1c');var _0xb3bf29=_0x5ba100[_0x5607('0x1e')];var _0xe089=_0x17ede4?0x0:_0x381634[_0x5607('0x1b')];var _0x4295b5=_0x17ede4?_0x5ba100[_0x5607('0x1e')]:_0x381634[_0x5607('0x1b')]+_0x381634['limit'];var _0x58b8de;if(_0x4295b5>=_0xb3bf29){_0x4295b5=_0xb3bf29;_0x58b8de=0xc8;}else{_0x58b8de=0xce;}_0x255936['status'](_0x58b8de);return _0x255936['set'](_0x5607('0x1f'),_0xe089+'-'+_0x4295b5+'/'+_0xb3bf29)[_0x5607('0x1a')](_0x5ba100);}return null;};}function patchUpdates(_0x450dd3){return function(_0x28cd0e){try{jsonpatch[_0x5607('0x20')](_0x28cd0e,_0x450dd3,!![]);}catch(_0x274cfa){return BPromise[_0x5607('0x21')](_0x274cfa);}return _0x28cd0e[_0x5607('0x22')]();};}function saveUpdates(_0x5ecb83,_0x5bb8c7){return function(_0x3e0cbb){if(_0x3e0cbb){return _0x3e0cbb[_0x5607('0x23')](_0x5ecb83)[_0x5607('0x24')](function(_0x479615){return _0x479615;});}return null;};}function removeEntity(_0x2bfa58,_0x82265b){return function(_0x158211){if(_0x158211){return _0x158211[_0x5607('0x25')]()[_0x5607('0x24')](function(){_0x2bfa58[_0x5607('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c215a,_0x294ed1){return function(_0x2234c4){if(!_0x2234c4){_0x4c215a[_0x5607('0x26')](0x194);}return _0x2234c4;};}function handleError(_0x47fe80,_0x4a0f55){_0x4a0f55=_0x4a0f55||0x1f4;return function(_0x1b4e3f){logger['error'](_0x1b4e3f[_0x5607('0x27')]);if(_0x1b4e3f[_0x5607('0x28')]){delete _0x1b4e3f[_0x5607('0x28')];}_0x47fe80[_0x5607('0x18')](_0x4a0f55)[_0x5607('0x29')](_0x1b4e3f);};}exports['show']=function(_0x5bb86c,_0x3cbaa1){var _0x261b36={'raw':!![],'where':{'id':_0x5bb86c[_0x5607('0x2a')]['id']}},_0x207b11={};_0x207b11[_0x5607('0x2b')]=_[_0x5607('0x2c')](db[_0x5607('0x2d')][_0x5607('0x2e')]);_0x207b11['query']=_[_0x5607('0x2c')](_0x5bb86c[_0x5607('0x2f')]);_0x207b11[_0x5607('0x30')]=_[_0x5607('0x31')](_0x207b11[_0x5607('0x2b')],_0x207b11[_0x5607('0x2f')]);_0x261b36[_0x5607('0x32')]=_[_0x5607('0x31')](_0x207b11[_0x5607('0x2b')],qs[_0x5607('0x33')](_0x5bb86c['query'][_0x5607('0x33')]));_0x261b36['attributes']=_0x261b36[_0x5607('0x32')][_0x5607('0x34')]?_0x261b36[_0x5607('0x32')]:_0x207b11[_0x5607('0x2b')];if(_0x5bb86c[_0x5607('0x2f')]['includeAll']){_0x261b36[_0x5607('0x35')]=[{'all':!![]}];}_0x261b36=_[_0x5607('0x36')]({},_0x261b36,_0x5bb86c[_0x5607('0x37')]);return db[_0x5607('0x2d')][_0x5607('0x38')](_0x261b36)[_0x5607('0x24')](handleEntityNotFound(_0x3cbaa1,null))[_0x5607('0x24')](respondWithResult(_0x3cbaa1,null))[_0x5607('0x39')](handleError(_0x3cbaa1,null));};exports[_0x5607('0x23')]=function(_0x52ac21,_0x674370){if(_0x52ac21[_0x5607('0x3a')]['id']){delete _0x52ac21[_0x5607('0x3a')]['id'];}return db[_0x5607('0x2d')]['find']({'where':{'id':_0x52ac21['params']['id']}})[_0x5607('0x24')](handleEntityNotFound(_0x674370,null))[_0x5607('0x24')](saveUpdates(_0x52ac21[_0x5607('0x3a')],null))[_0x5607('0x24')](respondWithResult(_0x674370,null))['catch'](handleError(_0x674370,null));};exports[_0x5607('0x25')]=function(_0x23d6af,_0x16ae2d){return db['ChatApplication'][_0x5607('0x38')]({'where':{'id':_0x23d6af['params']['id']}})[_0x5607('0x24')](handleEntityNotFound(_0x16ae2d,null))[_0x5607('0x24')](removeEntity(_0x16ae2d,null))[_0x5607('0x39')](handleError(_0x16ae2d,null));};
\ No newline at end of file
+var _0x0565=['update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','sendStatus','error','stack','name','send','show','params','rawAttributes','query','filters','intersection','model','attributes','fields','length','includeAll','merge','options','ChatApplication','find','catch'];(function(_0x5274dc,_0x5dada9){var _0x32501f=function(_0x29698d){while(--_0x29698d){_0x5274dc['push'](_0x5274dc['shift']());}};_0x32501f(++_0x5dada9);}(_0x0565,0xf2));var _0x5056=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x0565[_0x413feb];return _0x40ee88;};'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(_0x5056('0x5'));var BPromise=require(_0x5056('0x6'));var Mustache=require(_0x5056('0x7'));var util=require(_0x5056('0x8'));var path=require(_0x5056('0x9'));var sox=require('sox');var csv=require(_0x5056('0xa'));var ejs=require(_0x5056('0xb'));var fs=require('fs');var fs_extra=require(_0x5056('0xc'));var _=require(_0x5056('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5056('0xe'));var deskjs=require(_0x5056('0xf'));var toCsv=require(_0x5056('0xa'));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('../../components/parsers/advancedSearch');var hardwareService=require(_0x5056('0x15'));var logger=require(_0x5056('0x16'))(_0x5056('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5056('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x548bcf,_0x53e98a){_0x53e98a=_0x53e98a||0xcc;return function(_0x2d44fb){if(_0x2d44fb){return _0x548bcf['sendStatus'](_0x53e98a);}return _0x548bcf[_0x5056('0x19')](_0x53e98a)[_0x5056('0x1a')]();};}function respondWithResult(_0x7af76b,_0x543cee){_0x543cee=_0x543cee||0xc8;return function(_0x1e8b64){if(_0x1e8b64){return _0x7af76b[_0x5056('0x19')](_0x543cee)[_0x5056('0x1b')](_0x1e8b64);}};}function respondWithFilteredResult(_0x56c3ef,_0x21561d){return function(_0x6a044a){if(_0x6a044a){var _0x4ac332=typeof _0x21561d[_0x5056('0x1c')]==='undefined'&&typeof _0x21561d[_0x5056('0x1d')]===_0x5056('0x1e');var _0x1c0ee9=_0x6a044a[_0x5056('0x1f')];var _0x4056ce=_0x4ac332?0x0:_0x21561d['offset'];var _0x9ea88=_0x4ac332?_0x6a044a[_0x5056('0x1f')]:_0x21561d['offset']+_0x21561d['limit'];var _0x20776c;if(_0x9ea88>=_0x1c0ee9){_0x9ea88=_0x1c0ee9;_0x20776c=0xc8;}else{_0x20776c=0xce;}_0x56c3ef[_0x5056('0x19')](_0x20776c);return _0x56c3ef[_0x5056('0x20')](_0x5056('0x21'),_0x4056ce+'-'+_0x9ea88+'/'+_0x1c0ee9)[_0x5056('0x1b')](_0x6a044a);}return null;};}function patchUpdates(_0xf04e08){return function(_0x33035c){try{jsonpatch['apply'](_0x33035c,_0xf04e08,!![]);}catch(_0x13b363){return BPromise[_0x5056('0x22')](_0x13b363);}return _0x33035c['save']();};}function saveUpdates(_0x271efc,_0x1bccef){return function(_0x2564d0){if(_0x2564d0){return _0x2564d0['update'](_0x271efc)[_0x5056('0x23')](function(_0x26a3c2){return _0x26a3c2;});}return null;};}function removeEntity(_0x5afbfe,_0x4a64be){return function(_0x29e166){if(_0x29e166){return _0x29e166[_0x5056('0x24')]()[_0x5056('0x23')](function(){_0x5afbfe[_0x5056('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x267048,_0x25409f){return function(_0x5d1656){if(!_0x5d1656){_0x267048[_0x5056('0x25')](0x194);}return _0x5d1656;};}function handleError(_0x505ccf,_0x15f03f){_0x15f03f=_0x15f03f||0x1f4;return function(_0x39d539){logger[_0x5056('0x26')](_0x39d539[_0x5056('0x27')]);if(_0x39d539[_0x5056('0x28')]){delete _0x39d539['name'];}_0x505ccf[_0x5056('0x19')](_0x15f03f)[_0x5056('0x29')](_0x39d539);};}exports[_0x5056('0x2a')]=function(_0x2ac79a,_0x53e6db){var _0x24d33e={'raw':!![],'where':{'id':_0x2ac79a[_0x5056('0x2b')]['id']}},_0x5b0270={};_0x5b0270['model']=_['keys'](db['ChatApplication'][_0x5056('0x2c')]);_0x5b0270[_0x5056('0x2d')]=_['keys'](_0x2ac79a[_0x5056('0x2d')]);_0x5b0270[_0x5056('0x2e')]=_[_0x5056('0x2f')](_0x5b0270[_0x5056('0x30')],_0x5b0270[_0x5056('0x2d')]);_0x24d33e[_0x5056('0x31')]=_[_0x5056('0x2f')](_0x5b0270[_0x5056('0x30')],qs[_0x5056('0x32')](_0x2ac79a[_0x5056('0x2d')][_0x5056('0x32')]));_0x24d33e['attributes']=_0x24d33e['attributes'][_0x5056('0x33')]?_0x24d33e[_0x5056('0x31')]:_0x5b0270['model'];if(_0x2ac79a[_0x5056('0x2d')][_0x5056('0x34')]){_0x24d33e['include']=[{'all':!![]}];}_0x24d33e=_[_0x5056('0x35')]({},_0x24d33e,_0x2ac79a[_0x5056('0x36')]);return db[_0x5056('0x37')][_0x5056('0x38')](_0x24d33e)[_0x5056('0x23')](handleEntityNotFound(_0x53e6db,null))[_0x5056('0x23')](respondWithResult(_0x53e6db,null))[_0x5056('0x39')](handleError(_0x53e6db,null));};exports[_0x5056('0x3a')]=function(_0x17d09e,_0x2fee6e){if(_0x17d09e[_0x5056('0x3b')]['id']){delete _0x17d09e[_0x5056('0x3b')]['id'];}return db[_0x5056('0x37')][_0x5056('0x38')]({'where':{'id':_0x17d09e[_0x5056('0x2b')]['id']}})['then'](handleEntityNotFound(_0x2fee6e,null))[_0x5056('0x23')](saveUpdates(_0x17d09e['body'],null))[_0x5056('0x23')](respondWithResult(_0x2fee6e,null))[_0x5056('0x39')](handleError(_0x2fee6e,null));};exports[_0x5056('0x24')]=function(_0x286d64,_0x5b6441){return db[_0x5056('0x37')][_0x5056('0x38')]({'where':{'id':_0x286d64['params']['id']}})[_0x5056('0x23')](handleEntityNotFound(_0x5b6441,null))['then'](removeEntity(_0x5b6441,null))[_0x5056('0x39')](handleError(_0x5b6441,null));};
\ No newline at end of file
index a12c79c..5c83121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x427f=['utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications'];(function(_0x2a29fb,_0x592628){var _0x8e4853=function(_0x87ba58){while(--_0x87ba58){_0x2a29fb['push'](_0x2a29fb['shift']());}};_0x8e4853(++_0x592628);}(_0x427f,0xc4));var _0xf427=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x427f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xf427('0x0'));var util=require(_0xf427('0x1'));var logger=require(_0xf427('0x2'))(_0xf427('0x3'));var moment=require(_0xf427('0x4'));var BPromise=require(_0xf427('0x5'));var rp=require(_0xf427('0x6'));var fs=require('fs');var path=require(_0xf427('0x7'));var rimraf=require('rimraf');var config=require(_0xf427('0x8'));var attributes=require(_0xf427('0x9'));module[_0xf427('0xa')]=function(_0x4bc020,_0x55b7bd){return _0x4bc020[_0xf427('0xb')](_0xf427('0xc'),attributes,{'tableName':_0xf427('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf427('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb698=['ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./chatApplication.attributes','exports','define'];(function(_0x586035,_0x3e4738){var _0x28a67c=function(_0x909a7f){while(--_0x909a7f){_0x586035['push'](_0x586035['shift']());}};_0x28a67c(++_0x3e4738);}(_0xb698,0xe4));var _0x8b69=function(_0x21b3ee,_0x431b2){_0x21b3ee=_0x21b3ee-0x0;var _0x46519a=_0xb698[_0x21b3ee];return _0x46519a;};'use strict';var _=require(_0x8b69('0x0'));var util=require(_0x8b69('0x1'));var logger=require(_0x8b69('0x2'))(_0x8b69('0x3'));var moment=require('moment');var BPromise=require(_0x8b69('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8b69('0x5'));var config=require(_0x8b69('0x6'));var attributes=require(_0x8b69('0x7'));module[_0x8b69('0x8')]=function(_0x47dc62,_0x16204d){return _0x47dc62[_0x8b69('0x9')](_0x8b69('0xa'),attributes,{'tableName':_0x8b69('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8b69('0xc'),'collate':_0x8b69('0xd')});};
\ No newline at end of file
index 7156850..ecbf3e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea1=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','debug','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','util','moment','bluebird'];(function(_0x20fe6e,_0xdbd334){var _0x43a60c=function(_0x338cb0){while(--_0x338cb0){_0x20fe6e['push'](_0x20fe6e['shift']());}};_0x43a60c(++_0xdbd334);}(_0x9ea1,0x177));var _0x19ea=function(_0x56e6b0,_0x3cb95b){_0x56e6b0=_0x56e6b0-0x0;var _0x34ee84=_0x9ea1[_0x56e6b0];return _0x34ee84;};'use strict';var _=require('lodash');var util=require(_0x19ea('0x0'));var moment=require(_0x19ea('0x1'));var BPromise=require(_0x19ea('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x19ea('0x3'))['db'];var utils=require(_0x19ea('0x4'));var logger=require('../../config/logger')(_0x19ea('0x5'));var config=require(_0x19ea('0x6'));var jayson=require(_0x19ea('0x7'));var client=jayson[_0x19ea('0x8')][_0x19ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x33544b,_0x54f8d2,_0x314c7f){return new BPromise(function(_0x5ba09d,_0x1281a6){return client[_0x19ea('0xa')](_0x33544b,_0x314c7f)[_0x19ea('0xb')](function(_0x35adac){logger[_0x19ea('0xc')](_0x19ea('0xd'),_0x54f8d2,'request\x20sent');logger[_0x19ea('0xe')](_0x19ea('0xf'),_0x54f8d2,_0x19ea('0x10'),JSON[_0x19ea('0x11')](_0x35adac));if(_0x35adac[_0x19ea('0x12')]){if(_0x35adac[_0x19ea('0x12')][_0x19ea('0x13')]===0x1f4){logger[_0x19ea('0x12')](_0x19ea('0xd'),_0x54f8d2,_0x35adac[_0x19ea('0x12')][_0x19ea('0x14')]);return _0x1281a6(_0x35adac['error'][_0x19ea('0x14')]);}logger[_0x19ea('0x12')](_0x19ea('0xd'),_0x54f8d2,_0x35adac['error'][_0x19ea('0x14')]);return _0x5ba09d(_0x35adac[_0x19ea('0x12')][_0x19ea('0x14')]);}else{logger['info'](_0x19ea('0xd'),_0x54f8d2,_0x19ea('0x10'));_0x5ba09d(_0x35adac['result'][_0x19ea('0x14')]);}})['catch'](function(_0x51c336){logger['error']('ChatApplication,\x20%s,\x20%s',_0x54f8d2,_0x51c336);_0x1281a6(_0x51c336);});});}
\ No newline at end of file
+var _0x8f17=['../../mysqldb','../../config/logger','jayson/promise','http','then','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','code','error','message','info','result','catch','lodash','bluebird','ioredis'];(function(_0x50ce0c,_0x541b68){var _0x3c988c=function(_0x1684ee){while(--_0x1684ee){_0x50ce0c['push'](_0x50ce0c['shift']());}};_0x3c988c(++_0x541b68);}(_0x8f17,0x96));var _0x78f1=function(_0xd05d0e,_0x222ec6){_0xd05d0e=_0xd05d0e-0x0;var _0xa812c=_0x8f17[_0xd05d0e];return _0xa812c;};'use strict';var _=require(_0x78f1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x78f1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x78f1('0x2'));var db=require(_0x78f1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x78f1('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x78f1('0x5'));var client=jayson['client'][_0x78f1('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3f965a,_0x4b56c0,_0x4d6577){return new BPromise(function(_0x3d436c,_0xec98c5){return client['request'](_0x3f965a,_0x4d6577)[_0x78f1('0x7')](function(_0x3ffdd9){logger['info'](_0x78f1('0x8'),_0x4b56c0,_0x78f1('0x9'));logger['debug'](_0x78f1('0xa'),_0x4b56c0,_0x78f1('0x9'),JSON['stringify'](_0x3ffdd9));if(_0x3ffdd9['error']){if(_0x3ffdd9['error'][_0x78f1('0xb')]===0x1f4){logger[_0x78f1('0xc')](_0x78f1('0x8'),_0x4b56c0,_0x3ffdd9[_0x78f1('0xc')][_0x78f1('0xd')]);return _0xec98c5(_0x3ffdd9[_0x78f1('0xc')]['message']);}logger['error'](_0x78f1('0x8'),_0x4b56c0,_0x3ffdd9['error'][_0x78f1('0xd')]);return _0x3d436c(_0x3ffdd9['error']['message']);}else{logger[_0x78f1('0xe')]('ChatApplication,\x20%s,\x20%s',_0x4b56c0,'request\x20sent');_0x3d436c(_0x3ffdd9[_0x78f1('0xf')][_0x78f1('0xd')]);}})[_0x78f1('0x10')](function(_0x5b2684){logger[_0x78f1('0xc')](_0x78f1('0x8'),_0x4b56c0,_0x5b2684);_0xec98c5(_0x5b2684);});});}
\ No newline at end of file
index e64b7fa..d5352be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe750=['fs-extra','../../components/interaction/service','../../config/environment','get','/:id','update','delete','isAuthenticated','destroy','util','connect-timeout','Router'];(function(_0x2838aa,_0x293f5b){var _0x246700=function(_0x2fd285){while(--_0x2fd285){_0x2838aa['push'](_0x2838aa['shift']());}};_0x246700(++_0x293f5b);}(_0xe750,0x11d));var _0x0e75=function(_0xe3eaae,_0x433b0d){_0xe3eaae=_0xe3eaae-0x0;var _0x1cb9fd=_0xe750[_0xe3eaae];return _0x1cb9fd;};'use strict';var multer=require('multer');var util=require(_0x0e75('0x0'));var path=require('path');var timeout=require(_0x0e75('0x1'));var express=require('express');var router=express[_0x0e75('0x2')]();var fs_extra=require(_0x0e75('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x0e75('0x4'));var config=require(_0x0e75('0x5'));var controller=require('./chatApplication.controller');router[_0x0e75('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router['put'](_0x0e75('0x7'),auth['isAuthenticated'](),controller[_0x0e75('0x8')]);router[_0x0e75('0x9')](_0x0e75('0x7'),auth[_0x0e75('0xa')](),controller[_0x0e75('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0x3430=['get','/:id','isAuthenticated','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatApplication.controller'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x3430,0xa1));var _0x0343=function(_0xa3463d,_0x32f8da){_0xa3463d=_0xa3463d-0x0;var _0x50fd67=_0x3430[_0xa3463d];return _0x50fd67;};'use strict';var multer=require('multer');var util=require(_0x0343('0x0'));var path=require(_0x0343('0x1'));var timeout=require(_0x0343('0x2'));var express=require(_0x0343('0x3'));var router=express[_0x0343('0x4')]();var fs_extra=require(_0x0343('0x5'));var auth=require(_0x0343('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0343('0x7'));var controller=require(_0x0343('0x8'));router[_0x0343('0x9')](_0x0343('0xa'),auth[_0x0343('0xb')](),controller['show']);router[_0x0343('0xc')](_0x0343('0xa'),auth[_0x0343('0xb')](),controller[_0x0343('0xd')]);router[_0x0343('0xe')]('/:id',auth[_0x0343('0xb')](),controller[_0x0343('0xf')]);module[_0x0343('0x10')]=router;
\ No newline at end of file
index 08148d1..7e49cb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc7=['STRING'];(function(_0x239271,_0x19943f){var _0x3b8e3a=function(_0x524c96){while(--_0x524c96){_0x239271['push'](_0x239271['shift']());}};_0x3b8e3a(++_0x19943f);}(_0x4bc7,0x188));var _0x74bc=function(_0x21ed71,_0x3fca8e){_0x21ed71=_0x21ed71-0x0;var _0x515130=_0x4bc7[_0x21ed71];return _0x515130;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x74bc('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x74bc('0x0')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5fa1=['sequelize','exports','STRING'];(function(_0xb7a459,_0xc13228){var _0x104ab5=function(_0x186a0e){while(--_0x186a0e){_0xb7a459['push'](_0xb7a459['shift']());}};_0x104ab5(++_0xc13228);}(_0x5fa1,0xd2));var _0x15fa=function(_0x104fde,_0x3e2aa7){_0x104fde=_0x104fde-0x0;var _0x51d71b=_0x5fa1[_0x104fde];return _0x51d71b;};'use strict';var Sequelize=require(_0x15fa('0x0'));module[_0x15fa('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x15fa('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 285ec8d..2e08cf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ce=['fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','json','offset','undefined','count','status','set','apply','save','then','end','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','include','find','create','body','destroy','describe','getUnread','ChatInternalMessage','toInteger','addMembers','omit','ids','User','order','getMembers','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rimraf'];(function(_0x27dd68,_0x1291fa){var _0x2ef53e=function(_0x50423a){while(--_0x50423a){_0x27dd68['push'](_0x27dd68['shift']());}};_0x2ef53e(++_0x1291fa);}(_0xb3ce,0x119));var _0xeb3c=function(_0x45ab94,_0x1927ea){_0x45ab94=_0x45ab94-0x0;var _0x3985ad=_0xb3ce[_0x45ab94];return _0x3985ad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeb3c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeb3c('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeb3c('0x2'));var util=require(_0xeb3c('0x3'));var path=require(_0xeb3c('0x4'));var sox=require(_0xeb3c('0x5'));var csv=require(_0xeb3c('0x6'));var ejs=require(_0xeb3c('0x7'));var fs=require('fs');var fs_extra=require(_0xeb3c('0x8'));var _=require('lodash');var squel=require(_0xeb3c('0x9'));var crypto=require(_0xeb3c('0xa'));var jsforce=require(_0xeb3c('0xb'));var deskjs=require(_0xeb3c('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeb3c('0xd'));var Papa=require('papaparse');var Redis=require(_0xeb3c('0xe'));var authService=require(_0xeb3c('0xf'));var qs=require(_0xeb3c('0x10'));var as=require(_0xeb3c('0x11'));var hardwareService=require(_0xeb3c('0x12'));var logger=require('../../config/logger')(_0xeb3c('0x13'));var utils=require(_0xeb3c('0x14'));var config=require(_0xeb3c('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xeb3c('0x16')]=_[_0xeb3c('0x17')](config[_0xeb3c('0x16')],{'host':_0xeb3c('0x18'),'port':0x18eb});var socket=require(_0xeb3c('0x19'))(new Redis(config[_0xeb3c('0x16')]));require(_0xeb3c('0x1a'))[_0xeb3c('0x1b')](socket);function respondWithStatusCode(_0x357679,_0x5a9701){_0x5a9701=_0x5a9701||0xcc;return function(_0x2141fc){if(_0x2141fc){return _0x357679[_0xeb3c('0x1c')](_0x5a9701);}return _0x357679['status'](_0x5a9701)['end']();};}function respondWithResult(_0x300e69,_0x1f3315){_0x1f3315=_0x1f3315||0xc8;return function(_0x36d764){if(_0x36d764){return _0x300e69['status'](_0x1f3315)[_0xeb3c('0x1d')](_0x36d764);}};}function respondWithFilteredResult(_0x1649dd,_0x17742d){return function(_0x28860d){if(_0x28860d){var _0x3f8423=typeof _0x17742d[_0xeb3c('0x1e')]===_0xeb3c('0x1f')&&typeof _0x17742d['limit']==='undefined';var _0x1f28fd=_0x28860d[_0xeb3c('0x20')];var _0x1b6714=_0x3f8423?0x0:_0x17742d[_0xeb3c('0x1e')];var _0x1105d1=_0x3f8423?_0x28860d['count']:_0x17742d[_0xeb3c('0x1e')]+_0x17742d['limit'];var _0x46d0df;if(_0x1105d1>=_0x1f28fd){_0x1105d1=_0x1f28fd;_0x46d0df=0xc8;}else{_0x46d0df=0xce;}_0x1649dd[_0xeb3c('0x21')](_0x46d0df);return _0x1649dd[_0xeb3c('0x22')]('Content-Range',_0x1b6714+'-'+_0x1105d1+'/'+_0x1f28fd)[_0xeb3c('0x1d')](_0x28860d);}return null;};}function patchUpdates(_0x4a0efa){return function(_0x4f7965){try{jsonpatch[_0xeb3c('0x23')](_0x4f7965,_0x4a0efa,!![]);}catch(_0x3ca383){return BPromise['reject'](_0x3ca383);}return _0x4f7965[_0xeb3c('0x24')]();};}function saveUpdates(_0x741a5c,_0x45b71b){return function(_0x2416d2){if(_0x2416d2){return _0x2416d2['update'](_0x741a5c)['then'](function(_0x2c1aca){return _0x2c1aca;});}return null;};}function removeEntity(_0x248847,_0x177580){return function(_0x176328){if(_0x176328){return _0x176328['destroy']()[_0xeb3c('0x25')](function(){_0x248847[_0xeb3c('0x21')](0xcc)[_0xeb3c('0x26')]();});}};}function handleEntityNotFound(_0x2cd1d4,_0xe7a74d){return function(_0xf0c470){if(!_0xf0c470){_0x2cd1d4[_0xeb3c('0x1c')](0x194);}return _0xf0c470;};}function handleError(_0x255e33,_0x197420){_0x197420=_0x197420||0x1f4;return function(_0x1dcffb){logger['error'](_0x1dcffb[_0xeb3c('0x27')]);if(_0x1dcffb[_0xeb3c('0x28')]){delete _0x1dcffb[_0xeb3c('0x28')];}_0x255e33[_0xeb3c('0x21')](_0x197420)[_0xeb3c('0x29')](_0x1dcffb);};}exports[_0xeb3c('0x2a')]=function(_0x38a718,_0x2ee240){var _0x26fa41={},_0x175689={},_0x3e84cc={'count':0x0,'rows':[]};var _0x2bcdac=_[_0xeb3c('0x2b')](db[_0xeb3c('0x2c')][_0xeb3c('0x2d')],function(_0xc72555){return{'name':_0xc72555[_0xeb3c('0x2e')],'type':_0xc72555[_0xeb3c('0x2f')]['key']};});_0x175689[_0xeb3c('0x30')]=_[_0xeb3c('0x2b')](_0x2bcdac,_0xeb3c('0x28'));_0x175689[_0xeb3c('0x31')]=_[_0xeb3c('0x32')](_0x38a718['query']);_0x175689['filters']=_[_0xeb3c('0x33')](_0x175689[_0xeb3c('0x30')],_0x175689[_0xeb3c('0x31')]);_0x26fa41[_0xeb3c('0x34')]=_[_0xeb3c('0x33')](_0x175689['model'],qs[_0xeb3c('0x35')](_0x38a718['query'][_0xeb3c('0x35')]));_0x26fa41[_0xeb3c('0x34')]=_0x26fa41[_0xeb3c('0x34')][_0xeb3c('0x36')]?_0x26fa41['attributes']:_0x175689[_0xeb3c('0x30')];if(!_0x38a718[_0xeb3c('0x31')][_0xeb3c('0x37')](_0xeb3c('0x38'))){_0x26fa41[_0xeb3c('0x39')]=qs[_0xeb3c('0x39')](_0x38a718[_0xeb3c('0x31')][_0xeb3c('0x39')]);_0x26fa41[_0xeb3c('0x1e')]=qs[_0xeb3c('0x1e')](_0x38a718[_0xeb3c('0x31')][_0xeb3c('0x1e')]);}_0x26fa41['order']=qs[_0xeb3c('0x3a')](_0x38a718[_0xeb3c('0x31')][_0xeb3c('0x3a')]);_0x26fa41[_0xeb3c('0x3b')]=qs[_0xeb3c('0x3c')](_[_0xeb3c('0x3d')](_0x38a718['query'],_0x175689['filters']),_0x2bcdac);if(_0x38a718[_0xeb3c('0x31')][_0xeb3c('0x3e')]){_0x26fa41['where']=_[_0xeb3c('0x3f')](_0x26fa41[_0xeb3c('0x3b')],{'$or':_[_0xeb3c('0x2b')](_0x2bcdac,function(_0x2416aa){if(_0x2416aa[_0xeb3c('0x2f')]!==_0xeb3c('0x40')){var _0x3c44f9={};_0x3c44f9[_0x2416aa[_0xeb3c('0x28')]]={'$like':'%'+_0x38a718['query'][_0xeb3c('0x3e')]+'%'};return _0x3c44f9;}})});}_0x26fa41=_[_0xeb3c('0x3f')]({},_0x26fa41,_0x38a718[_0xeb3c('0x41')]);var _0x5209b5={'where':_0x26fa41[_0xeb3c('0x3b')]};return db['ChatGroup'][_0xeb3c('0x20')](_0x5209b5)[_0xeb3c('0x25')](function(_0x3c703f){_0x3e84cc[_0xeb3c('0x20')]=_0x3c703f;if(_0x38a718[_0xeb3c('0x31')][_0xeb3c('0x42')]){_0x26fa41['include']=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0x26fa41);})['then'](function(_0x40d6a4){_0x3e84cc[_0xeb3c('0x43')]=_0x40d6a4;return _0x3e84cc;})[_0xeb3c('0x25')](respondWithFilteredResult(_0x2ee240,_0x26fa41))[_0xeb3c('0x44')](handleError(_0x2ee240,null));};exports[_0xeb3c('0x45')]=function(_0x4a9892,_0x2b5a15){var _0x22a5bc={'raw':!![],'where':{'id':_0x4a9892[_0xeb3c('0x46')]['id']}},_0x140462={};_0x140462[_0xeb3c('0x30')]=_[_0xeb3c('0x32')](db['ChatGroup'][_0xeb3c('0x2d')]);_0x140462['query']=_[_0xeb3c('0x32')](_0x4a9892[_0xeb3c('0x31')]);_0x140462[_0xeb3c('0x3c')]=_[_0xeb3c('0x33')](_0x140462[_0xeb3c('0x30')],_0x140462['query']);_0x22a5bc[_0xeb3c('0x34')]=_[_0xeb3c('0x33')](_0x140462[_0xeb3c('0x30')],qs[_0xeb3c('0x35')](_0x4a9892[_0xeb3c('0x31')][_0xeb3c('0x35')]));_0x22a5bc[_0xeb3c('0x34')]=_0x22a5bc[_0xeb3c('0x34')]['length']?_0x22a5bc[_0xeb3c('0x34')]:_0x140462[_0xeb3c('0x30')];if(_0x4a9892['query']['includeAll']){_0x22a5bc[_0xeb3c('0x47')]=[{'all':!![]}];}_0x22a5bc=_[_0xeb3c('0x3f')]({},_0x22a5bc,_0x4a9892[_0xeb3c('0x41')]);return db[_0xeb3c('0x2c')][_0xeb3c('0x48')](_0x22a5bc)[_0xeb3c('0x25')](handleEntityNotFound(_0x2b5a15,null))[_0xeb3c('0x25')](respondWithResult(_0x2b5a15,null))[_0xeb3c('0x44')](handleError(_0x2b5a15,null));};exports[_0xeb3c('0x49')]=function(_0x50d506,_0x218fd9){return db[_0xeb3c('0x2c')][_0xeb3c('0x49')](_0x50d506[_0xeb3c('0x4a')],{})[_0xeb3c('0x25')](respondWithResult(_0x218fd9,0xc9))['catch'](handleError(_0x218fd9,null));};exports['update']=function(_0xdba285,_0x5bcf6d){if(_0xdba285[_0xeb3c('0x4a')]['id']){delete _0xdba285[_0xeb3c('0x4a')]['id'];}return db[_0xeb3c('0x2c')][_0xeb3c('0x48')]({'where':{'id':_0xdba285['params']['id']}})[_0xeb3c('0x25')](handleEntityNotFound(_0x5bcf6d,null))[_0xeb3c('0x25')](saveUpdates(_0xdba285[_0xeb3c('0x4a')],null))['then'](respondWithResult(_0x5bcf6d,null))[_0xeb3c('0x44')](handleError(_0x5bcf6d,null));};exports[_0xeb3c('0x4b')]=function(_0xec7940,_0x595874){return db['ChatGroup'][_0xeb3c('0x48')]({'where':{'id':_0xec7940['params']['id']}})[_0xeb3c('0x25')](handleEntityNotFound(_0x595874,null))[_0xeb3c('0x25')](removeEntity(_0x595874,null))[_0xeb3c('0x44')](handleError(_0x595874,null));};exports[_0xeb3c('0x4c')]=function(_0x5dc74d,_0x383e00){return db[_0xeb3c('0x2c')][_0xeb3c('0x4c')]()[_0xeb3c('0x25')](respondWithResult(_0x383e00,null))['catch'](handleError(_0x383e00,null));};exports[_0xeb3c('0x4d')]=function(_0x3e8d19,_0x263138,_0x5d88ca){return db[_0xeb3c('0x4e')]['count']({'where':{'ChatGroupId':_0x3e8d19['params']['id'],'ToId':_0x3e8d19['user']['id'],'read':![]}})[_0xeb3c('0x25')](function(_0x5d15ae){return{'id':_[_0xeb3c('0x4f')](_0x3e8d19[_0xeb3c('0x46')]['id']),'count':_0x5d15ae};})['then'](respondWithResult(_0x263138,null))['catch'](handleError(_0x263138,null));};exports[_0xeb3c('0x50')]=function(_0x784728,_0x3309d0,_0x506877){return db['ChatGroup'][_0xeb3c('0x48')]({'where':{'id':_0x784728[_0xeb3c('0x46')]['id']}})['then'](handleEntityNotFound(_0x3309d0,null))[_0xeb3c('0x25')](function(_0x35652c){if(_0x35652c){return _0x35652c[_0xeb3c('0x50')](_0x784728[_0xeb3c('0x4a')]['ids'],_[_0xeb3c('0x51')](_0x784728[_0xeb3c('0x4a')],[_0xeb3c('0x52'),'id'])||{});}})[_0xeb3c('0x25')](respondWithResult(_0x3309d0,null))[_0xeb3c('0x44')](handleError(_0x3309d0,null));};exports['getMembers']=function(_0x27041e,_0x2dc848,_0x5ab65e){var _0x31c281={};var _0x592208={};var _0x3ad564;var _0xf147b8;return db['ChatGroup']['findOne']({'where':{'id':_0x27041e[_0xeb3c('0x46')]['id']}})[_0xeb3c('0x25')](handleEntityNotFound(_0x2dc848,null))['then'](function(_0x56b3ee){if(_0x56b3ee){_0x3ad564=_0x56b3ee;_0x592208[_0xeb3c('0x30')]=_['keys'](db[_0xeb3c('0x53')][_0xeb3c('0x2d')]);_0x592208[_0xeb3c('0x31')]=_[_0xeb3c('0x32')](_0x27041e[_0xeb3c('0x31')]);_0x592208['filters']=_[_0xeb3c('0x33')](_0x592208[_0xeb3c('0x30')],_0x592208['query']);_0x31c281[_0xeb3c('0x34')]=_[_0xeb3c('0x33')](_0x592208[_0xeb3c('0x30')],qs[_0xeb3c('0x35')](_0x27041e[_0xeb3c('0x31')][_0xeb3c('0x35')]));_0x31c281['attributes']=_0x31c281[_0xeb3c('0x34')]['length']?_0x31c281['attributes']:_0x592208[_0xeb3c('0x30')];_0x31c281[_0xeb3c('0x54')]=qs['sort'](_0x27041e[_0xeb3c('0x31')]['sort']);_0x31c281[_0xeb3c('0x3b')]=qs[_0xeb3c('0x3c')](_[_0xeb3c('0x3d')](_0x27041e[_0xeb3c('0x31')],_0x592208[_0xeb3c('0x3c')]));if(_0x27041e[_0xeb3c('0x31')][_0xeb3c('0x3e')]){_0x31c281['where']=_['merge'](_0x31c281['where'],{'$or':_[_0xeb3c('0x2b')](_0x31c281[_0xeb3c('0x34')],function(_0x328ea4){var _0x4ac228={};_0x4ac228[_0x328ea4]={'$like':'%'+_0x27041e['query'][_0xeb3c('0x3e')]+'%'};return _0x4ac228;})});}_0x31c281=_[_0xeb3c('0x3f')]({},_0x31c281,_0x27041e[_0xeb3c('0x41')]);return _0x3ad564[_0xeb3c('0x55')](_0x31c281);}})[_0xeb3c('0x25')](function(_0x5d5b71){if(_0x5d5b71){_0xf147b8=_0x5d5b71['length'];if(!_0x27041e[_0xeb3c('0x31')][_0xeb3c('0x37')](_0xeb3c('0x38'))){_0x31c281[_0xeb3c('0x39')]=qs[_0xeb3c('0x39')](_0x27041e['query']['limit']);_0x31c281[_0xeb3c('0x1e')]=qs[_0xeb3c('0x1e')](_0x27041e[_0xeb3c('0x31')]['offset']);}return _0x3ad564['getMembers'](_0x31c281);}})['then'](function(_0x269793){if(_0x269793){return _0x269793?{'count':_0xf147b8,'rows':_0x269793}:null;}})[_0xeb3c('0x25')](respondWithResult(_0x2dc848,null))[_0xeb3c('0x44')](handleError(_0x2dc848,null));};exports[_0xeb3c('0x56')]=function(_0x30e2c9,_0x1321dd,_0x4f8601){return db[_0xeb3c('0x2c')][_0xeb3c('0x48')]({'where':{'id':_0x30e2c9[_0xeb3c('0x46')]['id']}})[_0xeb3c('0x25')](handleEntityNotFound(_0x1321dd,null))[_0xeb3c('0x25')](function(_0x42c37b){if(_0x42c37b){return _0x42c37b[_0xeb3c('0x56')](_0x30e2c9[_0xeb3c('0x31')]['ids']);}})['then'](respondWithStatusCode(_0x1321dd,null))['catch'](handleError(_0x1321dd,null));};exports[_0xeb3c('0x57')]=function(_0x34668b,_0x47f396,_0x558ead){if(_0x34668b['body']['id']){delete _0x34668b[_0xeb3c('0x4a')]['id'];}return db[_0xeb3c('0x2c')][_0xeb3c('0x48')]({'where':{'id':_0x34668b[_0xeb3c('0x46')]['id']}})[_0xeb3c('0x25')](handleEntityNotFound(_0x47f396,null))[_0xeb3c('0x25')](function(_0x18c9ff){if(_0x18c9ff){_0x34668b[_0xeb3c('0x4a')][_0xeb3c('0x58')]=_0x18c9ff['id'];return db[_0xeb3c('0x4e')][_0xeb3c('0x49')](_0x34668b[_0xeb3c('0x4a')]);}})[_0xeb3c('0x25')](respondWithResult(_0x47f396,null))[_0xeb3c('0x44')](handleError(_0x47f396,null));};exports[_0xeb3c('0x59')]=function(_0x4f4df8,_0x4ebae5,_0x2ea92d){var _0x116466={};var _0x5d2b56={};var _0x6e6df7;var _0x2ed4c8;return db['ChatGroup']['findOne']({'where':{'id':_0x4f4df8[_0xeb3c('0x46')]['id']}})['then'](handleEntityNotFound(_0x4ebae5,null))[_0xeb3c('0x25')](function(_0x5bd5a4){if(_0x5bd5a4){_0x6e6df7=_0x5bd5a4;_0x5d2b56[_0xeb3c('0x30')]=_[_0xeb3c('0x32')](db[_0xeb3c('0x4e')]['rawAttributes']);_0x5d2b56['query']=_[_0xeb3c('0x32')](_0x4f4df8[_0xeb3c('0x31')]);_0x5d2b56[_0xeb3c('0x3c')]=_[_0xeb3c('0x33')](_0x5d2b56['model'],_0x5d2b56[_0xeb3c('0x31')]);_0x116466['attributes']=_[_0xeb3c('0x33')](_0x5d2b56[_0xeb3c('0x30')],qs['fields'](_0x4f4df8[_0xeb3c('0x31')][_0xeb3c('0x35')]));_0x116466[_0xeb3c('0x34')]=_0x116466[_0xeb3c('0x34')]['length']?_0x116466[_0xeb3c('0x34')]:_0x5d2b56[_0xeb3c('0x30')];_0x116466['order']=qs[_0xeb3c('0x3a')](_0x4f4df8[_0xeb3c('0x31')][_0xeb3c('0x3a')]);_0x116466[_0xeb3c('0x3b')]=qs['filters'](_[_0xeb3c('0x3d')](_0x4f4df8[_0xeb3c('0x31')],_0x5d2b56[_0xeb3c('0x3c')]));if(_0x4f4df8[_0xeb3c('0x31')]['filter']){_0x116466[_0xeb3c('0x3b')]=_[_0xeb3c('0x3f')](_0x116466[_0xeb3c('0x3b')],{'$or':_[_0xeb3c('0x2b')](_0x116466[_0xeb3c('0x34')],function(_0x3a756b){var _0x22dce1={};_0x22dce1[_0x3a756b]={'$like':'%'+_0x4f4df8[_0xeb3c('0x31')]['filter']+'%'};return _0x22dce1;})});}if(_0x4f4df8['query']['$gte']){var _0xdb9d13=_0x4f4df8[_0xeb3c('0x31')][_0xeb3c('0x5a')][_0xeb3c('0x5b')](',');var _0x2b8715={};_0x2b8715[_0xdb9d13[0x0]]={'$gte':moment(_0xdb9d13[0x1])[_0xeb3c('0x5c')](_0xeb3c('0x5d'))};_0x116466['where']=_[_0xeb3c('0x3f')](_0x116466[_0xeb3c('0x3b')],_0x2b8715);}_0x116466=_['merge']({},_0x116466,_0x4f4df8[_0xeb3c('0x41')]);return _0x6e6df7[_0xeb3c('0x59')](_0x116466);}})[_0xeb3c('0x25')](function(_0x117814){if(_0x117814){_0x2ed4c8=_0x117814[_0xeb3c('0x36')];if(!_0x4f4df8[_0xeb3c('0x31')][_0xeb3c('0x37')](_0xeb3c('0x38'))){_0x116466[_0xeb3c('0x39')]=qs[_0xeb3c('0x39')](_0x4f4df8['query'][_0xeb3c('0x39')]);_0x116466[_0xeb3c('0x1e')]=qs['offset'](_0x4f4df8[_0xeb3c('0x31')][_0xeb3c('0x1e')]);}return _0x6e6df7[_0xeb3c('0x59')](_0x116466);}})[_0xeb3c('0x25')](function(_0xfefc89){if(_0xfefc89){return _0xfefc89?{'count':_0x2ed4c8,'rows':_0xfefc89}:null;}})['then'](respondWithResult(_0x4ebae5,null))[_0xeb3c('0x44')](handleError(_0x4ebae5,null));};
\ No newline at end of file
+var _0xe339=['fields','attributes','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','create','body','describe','getUnread','ChatInternalMessage','ids','omit','getMembers','findOne','User','hasOwnProperty','nolimit','removeMembers','addMessage','ChatGroupId','order','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','ChatGroup','rawAttributes','type','model','query','keys','filters','intersection'];(function(_0x364700,_0x41afa7){var _0xa03885=function(_0x2e35da){while(--_0x2e35da){_0x364700['push'](_0x364700['shift']());}};_0xa03885(++_0x41afa7);}(_0xe339,0xe8));var _0x9e33=function(_0x49b72e,_0x4db0de){_0x49b72e=_0x49b72e-0x0;var _0x30a4d8=_0xe339[_0x49b72e];return _0x30a4d8;};'use strict';var emlformat=require(_0x9e33('0x0'));var rimraf=require(_0x9e33('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9e33('0x2'));var BPromise=require(_0x9e33('0x3'));var Mustache=require(_0x9e33('0x4'));var util=require(_0x9e33('0x5'));var path=require(_0x9e33('0x6'));var sox=require(_0x9e33('0x7'));var csv=require(_0x9e33('0x8'));var ejs=require(_0x9e33('0x9'));var fs=require('fs');var fs_extra=require(_0x9e33('0xa'));var _=require(_0x9e33('0xb'));var squel=require(_0x9e33('0xc'));var crypto=require('crypto');var jsforce=require(_0x9e33('0xd'));var deskjs=require(_0x9e33('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9e33('0xf'));var Papa=require(_0x9e33('0x10'));var Redis=require(_0x9e33('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e33('0x12'));var hardwareService=require(_0x9e33('0x13'));var logger=require(_0x9e33('0x14'))('api');var utils=require(_0x9e33('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9e33('0x16'));var db=require(_0x9e33('0x17'))['db'];config[_0x9e33('0x18')]=_[_0x9e33('0x19')](config[_0x9e33('0x18')],{'host':_0x9e33('0x1a'),'port':0x18eb});var socket=require(_0x9e33('0x1b'))(new Redis(config[_0x9e33('0x18')]));require(_0x9e33('0x1c'))[_0x9e33('0x1d')](socket);function respondWithStatusCode(_0x19de23,_0x540fdb){_0x540fdb=_0x540fdb||0xcc;return function(_0xc1bf58){if(_0xc1bf58){return _0x19de23[_0x9e33('0x1e')](_0x540fdb);}return _0x19de23['status'](_0x540fdb)[_0x9e33('0x1f')]();};}function respondWithResult(_0x2bfa54,_0x3d8c41){_0x3d8c41=_0x3d8c41||0xc8;return function(_0x17dc82){if(_0x17dc82){return _0x2bfa54['status'](_0x3d8c41)['json'](_0x17dc82);}};}function respondWithFilteredResult(_0x1d5e48,_0x777daa){return function(_0x55fb74){if(_0x55fb74){var _0x4c6460=typeof _0x777daa[_0x9e33('0x20')]===_0x9e33('0x21')&&typeof _0x777daa[_0x9e33('0x22')]===_0x9e33('0x21');var _0x570b04=_0x55fb74[_0x9e33('0x23')];var _0x155d5c=_0x4c6460?0x0:_0x777daa[_0x9e33('0x20')];var _0x3dbee9=_0x4c6460?_0x55fb74[_0x9e33('0x23')]:_0x777daa[_0x9e33('0x20')]+_0x777daa[_0x9e33('0x22')];var _0x4de01f;if(_0x3dbee9>=_0x570b04){_0x3dbee9=_0x570b04;_0x4de01f=0xc8;}else{_0x4de01f=0xce;}_0x1d5e48[_0x9e33('0x24')](_0x4de01f);return _0x1d5e48[_0x9e33('0x25')](_0x9e33('0x26'),_0x155d5c+'-'+_0x3dbee9+'/'+_0x570b04)[_0x9e33('0x27')](_0x55fb74);}return null;};}function patchUpdates(_0x3853bc){return function(_0x2d1f6){try{jsonpatch[_0x9e33('0x28')](_0x2d1f6,_0x3853bc,!![]);}catch(_0x1eb532){return BPromise[_0x9e33('0x29')](_0x1eb532);}return _0x2d1f6[_0x9e33('0x2a')]();};}function saveUpdates(_0x26e6c1,_0x101e21){return function(_0x482b3c){if(_0x482b3c){return _0x482b3c[_0x9e33('0x2b')](_0x26e6c1)[_0x9e33('0x2c')](function(_0x23ae6d){return _0x23ae6d;});}return null;};}function removeEntity(_0x947053,_0x3415c9){return function(_0x326575){if(_0x326575){return _0x326575[_0x9e33('0x2d')]()[_0x9e33('0x2c')](function(){_0x947053[_0x9e33('0x24')](0xcc)[_0x9e33('0x1f')]();});}};}function handleEntityNotFound(_0x2c4b12,_0x14a5e9){return function(_0x245b39){if(!_0x245b39){_0x2c4b12[_0x9e33('0x1e')](0x194);}return _0x245b39;};}function handleError(_0x198854,_0x9efea4){_0x9efea4=_0x9efea4||0x1f4;return function(_0x39d0fd){logger[_0x9e33('0x2e')](_0x39d0fd[_0x9e33('0x2f')]);if(_0x39d0fd[_0x9e33('0x30')]){delete _0x39d0fd['name'];}_0x198854['status'](_0x9efea4)['send'](_0x39d0fd);};}exports[_0x9e33('0x31')]=function(_0x11826d,_0x1d6ca3){var _0x153959={},_0xe9e4c4={},_0x4dcd49={'count':0x0,'rows':[]};var _0x1e888c=_[_0x9e33('0x32')](db[_0x9e33('0x33')][_0x9e33('0x34')],function(_0x4d0f10){return{'name':_0x4d0f10['fieldName'],'type':_0x4d0f10[_0x9e33('0x35')]['key']};});_0xe9e4c4[_0x9e33('0x36')]=_[_0x9e33('0x32')](_0x1e888c,_0x9e33('0x30'));_0xe9e4c4[_0x9e33('0x37')]=_[_0x9e33('0x38')](_0x11826d[_0x9e33('0x37')]);_0xe9e4c4[_0x9e33('0x39')]=_[_0x9e33('0x3a')](_0xe9e4c4['model'],_0xe9e4c4[_0x9e33('0x37')]);_0x153959['attributes']=_[_0x9e33('0x3a')](_0xe9e4c4[_0x9e33('0x36')],qs['fields'](_0x11826d[_0x9e33('0x37')][_0x9e33('0x3b')]));_0x153959[_0x9e33('0x3c')]=_0x153959[_0x9e33('0x3c')]['length']?_0x153959[_0x9e33('0x3c')]:_0xe9e4c4[_0x9e33('0x36')];if(!_0x11826d[_0x9e33('0x37')]['hasOwnProperty']('nolimit')){_0x153959[_0x9e33('0x22')]=qs[_0x9e33('0x22')](_0x11826d[_0x9e33('0x37')]['limit']);_0x153959[_0x9e33('0x20')]=qs['offset'](_0x11826d[_0x9e33('0x37')][_0x9e33('0x20')]);}_0x153959['order']=qs[_0x9e33('0x3d')](_0x11826d[_0x9e33('0x37')][_0x9e33('0x3d')]);_0x153959[_0x9e33('0x3e')]=qs[_0x9e33('0x39')](_[_0x9e33('0x3f')](_0x11826d['query'],_0xe9e4c4[_0x9e33('0x39')]),_0x1e888c);if(_0x11826d[_0x9e33('0x37')][_0x9e33('0x40')]){_0x153959[_0x9e33('0x3e')]=_[_0x9e33('0x41')](_0x153959['where'],{'$or':_[_0x9e33('0x32')](_0x1e888c,function(_0x123780){if(_0x123780[_0x9e33('0x35')]!==_0x9e33('0x42')){var _0x32391a={};_0x32391a[_0x123780[_0x9e33('0x30')]]={'$like':'%'+_0x11826d['query'][_0x9e33('0x40')]+'%'};return _0x32391a;}})});}_0x153959=_[_0x9e33('0x41')]({},_0x153959,_0x11826d[_0x9e33('0x43')]);var _0x4d93f8={'where':_0x153959['where']};return db[_0x9e33('0x33')][_0x9e33('0x23')](_0x4d93f8)[_0x9e33('0x2c')](function(_0xdbee0c){_0x4dcd49[_0x9e33('0x23')]=_0xdbee0c;if(_0x11826d[_0x9e33('0x37')][_0x9e33('0x44')]){_0x153959[_0x9e33('0x45')]=[{'all':!![]}];}return db[_0x9e33('0x33')][_0x9e33('0x46')](_0x153959);})['then'](function(_0x33dc7c){_0x4dcd49['rows']=_0x33dc7c;return _0x4dcd49;})['then'](respondWithFilteredResult(_0x1d6ca3,_0x153959))[_0x9e33('0x47')](handleError(_0x1d6ca3,null));};exports[_0x9e33('0x48')]=function(_0x58f074,_0x2c24cd){var _0x1a6d6f={'raw':!![],'where':{'id':_0x58f074[_0x9e33('0x49')]['id']}},_0x316a8f={};_0x316a8f[_0x9e33('0x36')]=_['keys'](db[_0x9e33('0x33')]['rawAttributes']);_0x316a8f[_0x9e33('0x37')]=_[_0x9e33('0x38')](_0x58f074[_0x9e33('0x37')]);_0x316a8f['filters']=_[_0x9e33('0x3a')](_0x316a8f[_0x9e33('0x36')],_0x316a8f[_0x9e33('0x37')]);_0x1a6d6f[_0x9e33('0x3c')]=_['intersection'](_0x316a8f[_0x9e33('0x36')],qs[_0x9e33('0x3b')](_0x58f074[_0x9e33('0x37')][_0x9e33('0x3b')]));_0x1a6d6f['attributes']=_0x1a6d6f[_0x9e33('0x3c')][_0x9e33('0x4a')]?_0x1a6d6f[_0x9e33('0x3c')]:_0x316a8f[_0x9e33('0x36')];if(_0x58f074[_0x9e33('0x37')][_0x9e33('0x44')]){_0x1a6d6f[_0x9e33('0x45')]=[{'all':!![]}];}_0x1a6d6f=_[_0x9e33('0x41')]({},_0x1a6d6f,_0x58f074['options']);return db[_0x9e33('0x33')][_0x9e33('0x4b')](_0x1a6d6f)[_0x9e33('0x2c')](handleEntityNotFound(_0x2c24cd,null))['then'](respondWithResult(_0x2c24cd,null))['catch'](handleError(_0x2c24cd,null));};exports[_0x9e33('0x4c')]=function(_0x2337b2,_0x57a2a3){return db[_0x9e33('0x33')]['create'](_0x2337b2['body'],{})[_0x9e33('0x2c')](respondWithResult(_0x57a2a3,0xc9))['catch'](handleError(_0x57a2a3,null));};exports[_0x9e33('0x2b')]=function(_0x23886f,_0x2e7922){if(_0x23886f['body']['id']){delete _0x23886f[_0x9e33('0x4d')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0x23886f[_0x9e33('0x49')]['id']}})['then'](handleEntityNotFound(_0x2e7922,null))[_0x9e33('0x2c')](saveUpdates(_0x23886f['body'],null))[_0x9e33('0x2c')](respondWithResult(_0x2e7922,null))[_0x9e33('0x47')](handleError(_0x2e7922,null));};exports['destroy']=function(_0xee22d0,_0x1bdf2c){return db[_0x9e33('0x33')][_0x9e33('0x4b')]({'where':{'id':_0xee22d0[_0x9e33('0x49')]['id']}})['then'](handleEntityNotFound(_0x1bdf2c,null))[_0x9e33('0x2c')](removeEntity(_0x1bdf2c,null))[_0x9e33('0x47')](handleError(_0x1bdf2c,null));};exports['describe']=function(_0x5b9a4d,_0x3c241b){return db[_0x9e33('0x33')][_0x9e33('0x4e')]()['then'](respondWithResult(_0x3c241b,null))['catch'](handleError(_0x3c241b,null));};exports[_0x9e33('0x4f')]=function(_0x3d9ca5,_0x368703,_0x28a6d2){return db[_0x9e33('0x50')]['count']({'where':{'ChatGroupId':_0x3d9ca5['params']['id'],'ToId':_0x3d9ca5['user']['id'],'read':![]}})[_0x9e33('0x2c')](function(_0x8b745d){return{'id':_['toInteger'](_0x3d9ca5[_0x9e33('0x49')]['id']),'count':_0x8b745d};})[_0x9e33('0x2c')](respondWithResult(_0x368703,null))['catch'](handleError(_0x368703,null));};exports['addMembers']=function(_0x3a034f,_0x588857,_0x3aedb8){return db[_0x9e33('0x33')][_0x9e33('0x4b')]({'where':{'id':_0x3a034f['params']['id']}})[_0x9e33('0x2c')](handleEntityNotFound(_0x588857,null))['then'](function(_0x29f964){if(_0x29f964){return _0x29f964['addMembers'](_0x3a034f[_0x9e33('0x4d')][_0x9e33('0x51')],_[_0x9e33('0x52')](_0x3a034f[_0x9e33('0x4d')],[_0x9e33('0x51'),'id'])||{});}})[_0x9e33('0x2c')](respondWithResult(_0x588857,null))[_0x9e33('0x47')](handleError(_0x588857,null));};exports[_0x9e33('0x53')]=function(_0x109048,_0x591318,_0x41c4b9){var _0x335753={};var _0x4d808e={};var _0x1d7baa;var _0x21002a;return db[_0x9e33('0x33')][_0x9e33('0x54')]({'where':{'id':_0x109048['params']['id']}})[_0x9e33('0x2c')](handleEntityNotFound(_0x591318,null))[_0x9e33('0x2c')](function(_0x57cabb){if(_0x57cabb){_0x1d7baa=_0x57cabb;_0x4d808e['model']=_[_0x9e33('0x38')](db[_0x9e33('0x55')][_0x9e33('0x34')]);_0x4d808e[_0x9e33('0x37')]=_[_0x9e33('0x38')](_0x109048[_0x9e33('0x37')]);_0x4d808e[_0x9e33('0x39')]=_[_0x9e33('0x3a')](_0x4d808e[_0x9e33('0x36')],_0x4d808e[_0x9e33('0x37')]);_0x335753[_0x9e33('0x3c')]=_[_0x9e33('0x3a')](_0x4d808e[_0x9e33('0x36')],qs[_0x9e33('0x3b')](_0x109048[_0x9e33('0x37')]['fields']));_0x335753['attributes']=_0x335753[_0x9e33('0x3c')][_0x9e33('0x4a')]?_0x335753[_0x9e33('0x3c')]:_0x4d808e[_0x9e33('0x36')];_0x335753['order']=qs[_0x9e33('0x3d')](_0x109048[_0x9e33('0x37')]['sort']);_0x335753['where']=qs[_0x9e33('0x39')](_[_0x9e33('0x3f')](_0x109048[_0x9e33('0x37')],_0x4d808e[_0x9e33('0x39')]));if(_0x109048['query'][_0x9e33('0x40')]){_0x335753['where']=_[_0x9e33('0x41')](_0x335753[_0x9e33('0x3e')],{'$or':_[_0x9e33('0x32')](_0x335753[_0x9e33('0x3c')],function(_0x4860fb){var _0x108dba={};_0x108dba[_0x4860fb]={'$like':'%'+_0x109048[_0x9e33('0x37')][_0x9e33('0x40')]+'%'};return _0x108dba;})});}_0x335753=_['merge']({},_0x335753,_0x109048[_0x9e33('0x43')]);return _0x1d7baa['getMembers'](_0x335753);}})[_0x9e33('0x2c')](function(_0x31f969){if(_0x31f969){_0x21002a=_0x31f969[_0x9e33('0x4a')];if(!_0x109048[_0x9e33('0x37')][_0x9e33('0x56')](_0x9e33('0x57'))){_0x335753[_0x9e33('0x22')]=qs['limit'](_0x109048[_0x9e33('0x37')]['limit']);_0x335753[_0x9e33('0x20')]=qs[_0x9e33('0x20')](_0x109048[_0x9e33('0x37')][_0x9e33('0x20')]);}return _0x1d7baa[_0x9e33('0x53')](_0x335753);}})[_0x9e33('0x2c')](function(_0x4063f5){if(_0x4063f5){return _0x4063f5?{'count':_0x21002a,'rows':_0x4063f5}:null;}})[_0x9e33('0x2c')](respondWithResult(_0x591318,null))[_0x9e33('0x47')](handleError(_0x591318,null));};exports[_0x9e33('0x58')]=function(_0x280737,_0x37f8f9,_0x1aa1f5){return db[_0x9e33('0x33')][_0x9e33('0x4b')]({'where':{'id':_0x280737['params']['id']}})[_0x9e33('0x2c')](handleEntityNotFound(_0x37f8f9,null))[_0x9e33('0x2c')](function(_0xf4b21a){if(_0xf4b21a){return _0xf4b21a[_0x9e33('0x58')](_0x280737[_0x9e33('0x37')]['ids']);}})['then'](respondWithStatusCode(_0x37f8f9,null))['catch'](handleError(_0x37f8f9,null));};exports[_0x9e33('0x59')]=function(_0x1c3d3b,_0x59b2d7,_0x4f9b98){if(_0x1c3d3b[_0x9e33('0x4d')]['id']){delete _0x1c3d3b['body']['id'];}return db['ChatGroup'][_0x9e33('0x4b')]({'where':{'id':_0x1c3d3b[_0x9e33('0x49')]['id']}})[_0x9e33('0x2c')](handleEntityNotFound(_0x59b2d7,null))[_0x9e33('0x2c')](function(_0x4e1ab8){if(_0x4e1ab8){_0x1c3d3b[_0x9e33('0x4d')][_0x9e33('0x5a')]=_0x4e1ab8['id'];return db[_0x9e33('0x50')]['create'](_0x1c3d3b[_0x9e33('0x4d')]);}})[_0x9e33('0x2c')](respondWithResult(_0x59b2d7,null))[_0x9e33('0x47')](handleError(_0x59b2d7,null));};exports['getMessages']=function(_0x1b98cb,_0x2c7b43,_0x33f4b7){var _0x23909b={};var _0x27ed97={};var _0x5a7c44;var _0x4169c5;return db[_0x9e33('0x33')][_0x9e33('0x54')]({'where':{'id':_0x1b98cb[_0x9e33('0x49')]['id']}})[_0x9e33('0x2c')](handleEntityNotFound(_0x2c7b43,null))[_0x9e33('0x2c')](function(_0x427502){if(_0x427502){_0x5a7c44=_0x427502;_0x27ed97[_0x9e33('0x36')]=_[_0x9e33('0x38')](db[_0x9e33('0x50')][_0x9e33('0x34')]);_0x27ed97[_0x9e33('0x37')]=_[_0x9e33('0x38')](_0x1b98cb[_0x9e33('0x37')]);_0x27ed97[_0x9e33('0x39')]=_[_0x9e33('0x3a')](_0x27ed97[_0x9e33('0x36')],_0x27ed97[_0x9e33('0x37')]);_0x23909b['attributes']=_[_0x9e33('0x3a')](_0x27ed97[_0x9e33('0x36')],qs[_0x9e33('0x3b')](_0x1b98cb['query'][_0x9e33('0x3b')]));_0x23909b[_0x9e33('0x3c')]=_0x23909b['attributes'][_0x9e33('0x4a')]?_0x23909b[_0x9e33('0x3c')]:_0x27ed97[_0x9e33('0x36')];_0x23909b[_0x9e33('0x5b')]=qs[_0x9e33('0x3d')](_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x3d')]);_0x23909b[_0x9e33('0x3e')]=qs[_0x9e33('0x39')](_[_0x9e33('0x3f')](_0x1b98cb[_0x9e33('0x37')],_0x27ed97[_0x9e33('0x39')]));if(_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x40')]){_0x23909b[_0x9e33('0x3e')]=_['merge'](_0x23909b['where'],{'$or':_[_0x9e33('0x32')](_0x23909b['attributes'],function(_0x566e9e){var _0x501f13={};_0x501f13[_0x566e9e]={'$like':'%'+_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x40')]+'%'};return _0x501f13;})});}if(_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x5c')]){var _0x57fd54=_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x5c')][_0x9e33('0x5d')](',');var _0x155316={};_0x155316[_0x57fd54[0x0]]={'$gte':moment(_0x57fd54[0x1])[_0x9e33('0x5e')](_0x9e33('0x5f'))};_0x23909b[_0x9e33('0x3e')]=_[_0x9e33('0x41')](_0x23909b[_0x9e33('0x3e')],_0x155316);}_0x23909b=_[_0x9e33('0x41')]({},_0x23909b,_0x1b98cb['options']);return _0x5a7c44['getMessages'](_0x23909b);}})[_0x9e33('0x2c')](function(_0x121bc1){if(_0x121bc1){_0x4169c5=_0x121bc1[_0x9e33('0x4a')];if(!_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x56')](_0x9e33('0x57'))){_0x23909b[_0x9e33('0x22')]=qs[_0x9e33('0x22')](_0x1b98cb[_0x9e33('0x37')][_0x9e33('0x22')]);_0x23909b[_0x9e33('0x20')]=qs['offset'](_0x1b98cb[_0x9e33('0x37')]['offset']);}return _0x5a7c44[_0x9e33('0x60')](_0x23909b);}})['then'](function(_0x145681){if(_0x145681){return _0x145681?{'count':_0x4169c5,'rows':_0x145681}:null;}})[_0x9e33('0x2c')](respondWithResult(_0x2c7b43,null))[_0x9e33('0x47')](handleError(_0x2c7b43,null));};
\ No newline at end of file
index 7bc7263..1f10461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5226=['exports','events','../../mysqldb','ChatGroup','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x3c5aab,_0x3bf8b4){var _0x24415e=function(_0x134346){while(--_0x134346){_0x3c5aab['push'](_0x3c5aab['shift']());}};_0x24415e(++_0x3bf8b4);}(_0x5226,0x137));var _0x6522=function(_0x5548dc,_0x105829){_0x5548dc=_0x5548dc-0x0;var _0x4d8341=_0x5226[_0x5548dc];return _0x4d8341;};'use strict';var EventEmitter=require(_0x6522('0x0'));var ChatGroup=require(_0x6522('0x1'))['db'][_0x6522('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x6522('0x3')](0x0);var events={'afterCreate':_0x6522('0x4'),'afterUpdate':'update','afterDestroy':_0x6522('0x5')};function emitEvent(_0x43f913){return function(_0x12dffe,_0x48d4db,_0x228009){ChatGroupEvents['emit'](_0x43f913+':'+_0x12dffe['id'],_0x12dffe);ChatGroupEvents[_0x6522('0x6')](_0x43f913,_0x12dffe);_0x228009(null);};}for(var e in events){if(events[_0x6522('0x7')](e)){var event=events[e];ChatGroup[_0x6522('0x8')](e,emitEvent(event));}}module[_0x6522('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0x110e=['update','remove','emit','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x110e,0x68));var _0xe110=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x110e[_0x59ee6f];return _0x4c0979;};'use strict';var EventEmitter=require(_0xe110('0x0'));var ChatGroup=require(_0xe110('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xe110('0x2')](0x0);var events={'afterCreate':_0xe110('0x3'),'afterUpdate':_0xe110('0x4'),'afterDestroy':_0xe110('0x5')};function emitEvent(_0x3f8825){return function(_0x4d182f,_0x563977,_0x5032de){ChatGroupEvents['emit'](_0x3f8825+':'+_0x4d182f['id'],_0x4d182f);ChatGroupEvents[_0xe110('0x6')](_0x3f8825,_0x4d182f);_0x5032de(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0xe110('0x7')](e,emitEvent(event));}}module[_0xe110('0x8')]=ChatGroupEvents;
\ No newline at end of file
index dcaab5d..f2ffe8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca80=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatGroup','chat_groups','lodash','util'];(function(_0xa90718,_0x2fd952){var _0x56ed79=function(_0x41cff1){while(--_0x41cff1){_0xa90718['push'](_0xa90718['shift']());}};_0x56ed79(++_0x2fd952);}(_0xca80,0x10f));var _0x0ca8=function(_0x16b5b0,_0x33367f){_0x16b5b0=_0x16b5b0-0x0;var _0x4b769d=_0xca80[_0x16b5b0];return _0x4b769d;};'use strict';var _=require(_0x0ca8('0x0'));var util=require(_0x0ca8('0x1'));var logger=require(_0x0ca8('0x2'))(_0x0ca8('0x3'));var moment=require('moment');var BPromise=require(_0x0ca8('0x4'));var rp=require(_0x0ca8('0x5'));var fs=require('fs');var path=require(_0x0ca8('0x6'));var rimraf=require(_0x0ca8('0x7'));var config=require(_0x0ca8('0x8'));var attributes=require('./chatGroup.attributes');module[_0x0ca8('0x9')]=function(_0xf1030e,_0x25e248){return _0xf1030e[_0x0ca8('0xa')](_0x0ca8('0xb'),attributes,{'tableName':_0x0ca8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdc8=['ChatGroup','chat_groups','../../config/logger','api','moment','request-promise','path','../../config/environment','./chatGroup.attributes','exports','define'];(function(_0x48f0f4,_0x55830f){var _0xc66141=function(_0xfdabd4){while(--_0xfdabd4){_0x48f0f4['push'](_0x48f0f4['shift']());}};_0xc66141(++_0x55830f);}(_0xcdc8,0x178));var _0x8cdc=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xcdc8[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8cdc('0x0'))(_0x8cdc('0x1'));var moment=require(_0x8cdc('0x2'));var BPromise=require('bluebird');var rp=require(_0x8cdc('0x3'));var fs=require('fs');var path=require(_0x8cdc('0x4'));var rimraf=require('rimraf');var config=require(_0x8cdc('0x5'));var attributes=require(_0x8cdc('0x6'));module[_0x8cdc('0x7')]=function(_0x4e3fab,_0x149880){return _0x4e3fab[_0x8cdc('0x8')](_0x8cdc('0x9'),attributes,{'tableName':_0x8cdc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e98b0e..263be35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50e=['defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0xe50e,0xf9));var _0xee50=function(_0xeec9d0,_0x3018e3){_0xeec9d0=_0xeec9d0-0x0;var _0x95ce38=_0xe50e[_0xeec9d0];return _0x95ce38;};'use strict';var _=require(_0xee50('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xee50('0x1'));var fs=require('fs');var Redis=require(_0xee50('0x2'));var db=require(_0xee50('0x3'))['db'];var utils=require(_0xee50('0x4'));var logger=require(_0xee50('0x5'))(_0xee50('0x6'));var config=require(_0xee50('0x7'));var jayson=require(_0xee50('0x8'));var client=jayson[_0xee50('0x9')][_0xee50('0xa')]({'port':0x232a});config[_0xee50('0xb')]=_[_0xee50('0xc')](config[_0xee50('0xb')],{'host':_0xee50('0xd'),'port':0x18eb});var socket=require(_0xee50('0xe'))(new Redis(config[_0xee50('0xb')]));require(_0xee50('0xf'))[_0xee50('0x10')](socket);function respondWithRpcPromise(_0x2cd326,_0x385e89,_0x5c7734){return new BPromise(function(_0x527d89,_0xff8ad7){return client[_0xee50('0x11')](_0x2cd326,_0x5c7734)[_0xee50('0x12')](function(_0x32c855){logger[_0xee50('0x13')]('ChatGroup,\x20%s,\x20%s',_0x385e89,_0xee50('0x14'));logger[_0xee50('0x15')](_0xee50('0x16'),_0x385e89,_0xee50('0x14'),JSON[_0xee50('0x17')](_0x32c855));if(_0x32c855[_0xee50('0x18')]){if(_0x32c855[_0xee50('0x18')][_0xee50('0x19')]===0x1f4){logger['error'](_0xee50('0x1a'),_0x385e89,_0x32c855[_0xee50('0x18')][_0xee50('0x1b')]);return _0xff8ad7(_0x32c855[_0xee50('0x18')]['message']);}logger[_0xee50('0x18')](_0xee50('0x1a'),_0x385e89,_0x32c855[_0xee50('0x18')][_0xee50('0x1b')]);return _0x527d89(_0x32c855['error'][_0xee50('0x1b')]);}else{logger[_0xee50('0x13')](_0xee50('0x1a'),_0x385e89,_0xee50('0x14'));_0x527d89(_0x32c855[_0xee50('0x1c')][_0xee50('0x1b')]);}})['catch'](function(_0x4080ba){logger[_0xee50('0x18')](_0xee50('0x1a'),_0x385e89,_0x4080ba);_0xff8ad7(_0x4080ba);});});}
\ No newline at end of file
+var _0x495e=['client','http','redis','socket.io-emitter','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0x495e,0xfb));var _0xe495=function(_0x53b594,_0x559767){_0x53b594=_0x53b594-0x0;var _0x1e616f=_0x495e[_0x53b594];return _0x1e616f;};'use strict';var _=require(_0xe495('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe495('0x1'));var rs=require(_0xe495('0x2'));var fs=require('fs');var Redis=require(_0xe495('0x3'));var db=require(_0xe495('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe495('0x5'))(_0xe495('0x6'));var config=require(_0xe495('0x7'));var jayson=require(_0xe495('0x8'));var client=jayson[_0xe495('0x9')][_0xe495('0xa')]({'port':0x232a});config[_0xe495('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe495('0xc'))(new Redis(config['redis']));require(_0xe495('0xd'))[_0xe495('0xe')](socket);function respondWithRpcPromise(_0x15ff5c,_0x41983d,_0x2a38c7){return new BPromise(function(_0x595837,_0xebcb50){return client[_0xe495('0xf')](_0x15ff5c,_0x2a38c7)[_0xe495('0x10')](function(_0x5ad3db){logger[_0xe495('0x11')](_0xe495('0x12'),_0x41983d,'request\x20sent');logger['debug'](_0xe495('0x13'),_0x41983d,_0xe495('0x14'),JSON['stringify'](_0x5ad3db));if(_0x5ad3db[_0xe495('0x15')]){if(_0x5ad3db[_0xe495('0x15')][_0xe495('0x16')]===0x1f4){logger[_0xe495('0x15')](_0xe495('0x12'),_0x41983d,_0x5ad3db['error'][_0xe495('0x17')]);return _0xebcb50(_0x5ad3db[_0xe495('0x15')][_0xe495('0x17')]);}logger[_0xe495('0x15')](_0xe495('0x12'),_0x41983d,_0x5ad3db['error']['message']);return _0x595837(_0x5ad3db['error'][_0xe495('0x17')]);}else{logger[_0xe495('0x11')](_0xe495('0x12'),_0x41983d,'request\x20sent');_0x595837(_0x5ad3db[_0xe495('0x18')][_0xe495('0x17')]);}})[_0xe495('0x19')](function(_0x1ba7b2){logger[_0xe495('0x15')]('ChatGroup,\x20%s,\x20%s',_0x41983d,_0x1ba7b2);_0xebcb50(_0x1ba7b2);});});}
\ No newline at end of file
index b81d90c..3afede4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d1=['save','remove','update','emit','removeListener','register','chatGroup:'];(function(_0x38ca6f,_0x54cedd){var _0x304d79=function(_0xc0110){while(--_0xc0110){_0x38ca6f['push'](_0x38ca6f['shift']());}};_0x304d79(++_0x54cedd);}(_0xb5d1,0x69));var _0x1b5d=function(_0x25bf94,_0x420e7e){_0x25bf94=_0x25bf94-0x0;var _0x24065b=_0xb5d1[_0x25bf94];return _0x24065b;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x1b5d('0x0'),_0x1b5d('0x1'),_0x1b5d('0x2')];function createListener(_0x51716a,_0x3fbbe9){return function(_0x27afdb){_0x3fbbe9[_0x1b5d('0x3')](_0x51716a,_0x27afdb);};}function removeListener(_0x40b901,_0x34fff9){return function(){ChatGroupEvents[_0x1b5d('0x4')](_0x40b901,_0x34fff9);};}exports[_0x1b5d('0x5')]=function(_0x162af6){for(var _0x121504=0x0,_0x1e0139=events['length'];_0x121504<_0x1e0139;_0x121504++){var _0x64f12f=events[_0x121504];var _0x1ef5ec=createListener(_0x1b5d('0x6')+_0x64f12f,_0x162af6);ChatGroupEvents['on'](_0x64f12f,_0x1ef5ec);}};
\ No newline at end of file
+var _0xec23=['update','removeListener','register','length','chatGroup:','./chatGroup.events','save'];(function(_0x2e6ef2,_0x5dd3a3){var _0x58eed8=function(_0x9acda3){while(--_0x9acda3){_0x2e6ef2['push'](_0x2e6ef2['shift']());}};_0x58eed8(++_0x5dd3a3);}(_0xec23,0x171));var _0x3ec2=function(_0x202d24,_0x5e8641){_0x202d24=_0x202d24-0x0;var _0x2b3a8e=_0xec23[_0x202d24];return _0x2b3a8e;};'use strict';var ChatGroupEvents=require(_0x3ec2('0x0'));var events=[_0x3ec2('0x1'),'remove',_0x3ec2('0x2')];function createListener(_0x1a633f,_0x344c08){return function(_0x1bc5f7){_0x344c08['emit'](_0x1a633f,_0x1bc5f7);};}function removeListener(_0x4c19e7,_0xe28905){return function(){ChatGroupEvents[_0x3ec2('0x3')](_0x4c19e7,_0xe28905);};}exports[_0x3ec2('0x4')]=function(_0x2355c4){for(var _0xf8647d=0x0,_0x1b5c53=events[_0x3ec2('0x5')];_0xf8647d<_0x1b5c53;_0xf8647d++){var _0x1d2738=events[_0xf8647d];var _0x37c48d=createListener(_0x3ec2('0x6')+_0x1d2738,_0x2355c4);ChatGroupEvents['on'](_0x1d2738,_0x37c48d);}};
\ No newline at end of file
index 63b0662..ad2e42d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x725f=['index','/describe','describe','/:id','/:id/unread','getUnread','isAuthenticated','getMembers','getMessages','create','post','addMessage','delete','/:id/members','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatGroup.controller','get'];(function(_0x464d44,_0x401aab){var _0x1e1dee=function(_0x42a299){while(--_0x42a299){_0x464d44['push'](_0x464d44['shift']());}};_0x1e1dee(++_0x401aab);}(_0x725f,0x122));var _0xf725=function(_0x23ab90,_0x1f2d5f){_0x23ab90=_0x23ab90-0x0;var _0xe7f234=_0x725f[_0x23ab90];return _0xe7f234;};'use strict';var multer=require(_0xf725('0x0'));var util=require('util');var path=require(_0xf725('0x1'));var timeout=require('connect-timeout');var express=require(_0xf725('0x2'));var router=express[_0xf725('0x3')]();var fs_extra=require(_0xf725('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf725('0x5'));var config=require(_0xf725('0x6'));var controller=require(_0xf725('0x7'));router[_0xf725('0x8')]('/',auth['isAuthenticated'](),controller[_0xf725('0x9')]);router[_0xf725('0x8')](_0xf725('0xa'),auth['isAuthenticated'](),controller[_0xf725('0xb')]);router[_0xf725('0x8')](_0xf725('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xf725('0x8')](_0xf725('0xd'),auth['isAuthenticated'](),controller[_0xf725('0xe')]);router[_0xf725('0x8')]('/:id/members',auth[_0xf725('0xf')](),controller[_0xf725('0x10')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller[_0xf725('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf725('0x12')]);router[_0xf725('0x13')]('/:id/members',auth[_0xf725('0xf')](),controller['addMembers']);router[_0xf725('0x13')]('/:id/messages',auth[_0xf725('0xf')](),controller[_0xf725('0x14')]);router['put'](_0xf725('0xc'),auth[_0xf725('0xf')](),controller['update']);router['delete'](_0xf725('0xc'),auth[_0xf725('0xf')](),controller['destroy']);router[_0xf725('0x15')](_0xf725('0x16'),auth[_0xf725('0xf')](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
+var _0xebd1=['/:id/messages','getMessages','create','addMembers','post','addMessage','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/unread','getUnread','/:id/members','getMembers'];(function(_0x161cb1,_0x7930a){var _0x36dd92=function(_0x5efe8a){while(--_0x5efe8a){_0x161cb1['push'](_0x161cb1['shift']());}};_0x36dd92(++_0x7930a);}(_0xebd1,0x149));var _0x1ebd=function(_0xb1cf84,_0x813740){_0xb1cf84=_0xb1cf84-0x0;var _0x4bad2e=_0xebd1[_0xb1cf84];return _0x4bad2e;};'use strict';var multer=require(_0x1ebd('0x0'));var util=require(_0x1ebd('0x1'));var path=require(_0x1ebd('0x2'));var timeout=require(_0x1ebd('0x3'));var express=require('express');var router=express[_0x1ebd('0x4')]();var fs_extra=require(_0x1ebd('0x5'));var auth=require(_0x1ebd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1ebd('0x7'));var controller=require(_0x1ebd('0x8'));router[_0x1ebd('0x9')]('/',auth[_0x1ebd('0xa')](),controller[_0x1ebd('0xb')]);router[_0x1ebd('0x9')](_0x1ebd('0xc'),auth[_0x1ebd('0xa')](),controller[_0x1ebd('0xd')]);router['get'](_0x1ebd('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x1ebd('0x9')](_0x1ebd('0xf'),auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x10')]);router[_0x1ebd('0x9')](_0x1ebd('0x11'),auth['isAuthenticated'](),controller[_0x1ebd('0x12')]);router[_0x1ebd('0x9')](_0x1ebd('0x13'),auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x14')]);router['post']('/',auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x15')]);router['post'](_0x1ebd('0x11'),auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x16')]);router[_0x1ebd('0x17')](_0x1ebd('0x13'),auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x18')]);router[_0x1ebd('0x19')]('/:id',auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x1a')]);router['delete'](_0x1ebd('0xe'),auth[_0x1ebd('0xa')](),controller[_0x1ebd('0x1b')]);router['delete'](_0x1ebd('0x11'),auth[_0x1ebd('0xa')](),controller['removeMembers']);module[_0x1ebd('0x1c')]=router;
\ No newline at end of file
index 62f2749..bf38708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c32=['exports','BOOLEAN','ENUM','star','TEXT','STRING','long','DATE','out','sequelize'];(function(_0x356077,_0x5349c4){var _0x56f8da=function(_0x21428d){while(--_0x21428d){_0x356077['push'](_0x356077['shift']());}};_0x56f8da(++_0x5349c4);}(_0x9c32,0x15d));var _0x29c3=function(_0x5e0c98,_0x51bcc8){_0x5e0c98=_0x5e0c98-0x0;var _0x761501=_0x9c32[_0x5e0c98];return _0x761501;};'use strict';var Sequelize=require(_0x29c3('0x0'));module[_0x29c3('0x1')]={'closed':{'type':Sequelize[_0x29c3('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x29c3('0x3')]('star','thumb'),'defaultValue':_0x29c3('0x4')},'ratingMessage':{'type':Sequelize[_0x29c3('0x5')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x29c3('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x29c3('0x6')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x29c3('0x6')]},'browserName':{'type':Sequelize[_0x29c3('0x6')]},'browserVersion':{'type':Sequelize[_0x29c3('0x6')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0x29c3('0x6')]},'deviceType':{'type':Sequelize[_0x29c3('0x6')]},'referer':{'type':Sequelize[_0x29c3('0x5')]},'customerIp':{'type':Sequelize[_0x29c3('0x6')]},'formData':{'type':Sequelize[_0x29c3('0x5')](_0x29c3('0x7'))},'read1stAt':{'type':Sequelize[_0x29c3('0x8')]},'lastMsgAt':{'type':Sequelize[_0x29c3('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x29c3('0x3')]('in',_0x29c3('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x29c3('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x29c3('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x29c3('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbaf0=['out','exports','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING','DATE','long'];(function(_0x3de579,_0x3760f6){var _0x49c37c=function(_0x4a0abb){while(--_0x4a0abb){_0x3de579['push'](_0x3de579['shift']());}};_0x49c37c(++_0x3760f6);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'closed':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x0baf('0x2')]},'ratingType':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x4'),_0x0baf('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x0baf('0x6')]},'pathTranscript':{'type':Sequelize[_0x0baf('0x6')]},'mailTranscript':{'type':Sequelize[_0x0baf('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x0baf('0x8')]},'disposition':{'type':Sequelize[_0x0baf('0x7')]},'secondDisposition':{'type':Sequelize[_0x0baf('0x7')]},'thirdDisposition':{'type':Sequelize[_0x0baf('0x7')]},'note':{'type':Sequelize[_0x0baf('0x7')]},'browserName':{'type':Sequelize[_0x0baf('0x7')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x0baf('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x0baf('0x7')]},'deviceVendor':{'type':Sequelize[_0x0baf('0x7')]},'deviceType':{'type':Sequelize[_0x0baf('0x7')]},'referer':{'type':Sequelize[_0x0baf('0x6')]},'customerIp':{'type':Sequelize[_0x0baf('0x7')]},'formData':{'type':Sequelize[_0x0baf('0x6')](_0x0baf('0x9'))},'read1stAt':{'type':Sequelize[_0x0baf('0x8')]},'lastMsgAt':{'type':Sequelize[_0x0baf('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x0baf('0x3')]('in',_0x0baf('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0x0baf('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':![]}};
\ No newline at end of file
index ed56821..095aaf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa231=['disposition','AbandonInteraction','attachmentUpload','file','filename','mimetype','attachmentDownload','Unauthorized','Attachment','attachId','join','root','server/files/attachments/','offline-chat/','basename','download','mailTranscript','server/files/chat/upload/','transcript-%s.txt','now','pathTranscript','Messages','User','ContactId','format','%s%d','agentAlias','UserId','Visitor','agentIdentifier','website_alias','System','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailAccount','CloudProvider','Smtp','SendMail','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','count','rows','getMyMessages','includeAgent','push','addTags','setTags','omit','spread','Tag','findAll','color','emit','removeTags','unix','toString','server','files','attachments','Contact','secret','read','Account','Owner','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','tail','createReadStream','createWriteStream','firstName','lastName','value','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','unlinkSync','zip-dir','request-promise','mustache','util','path','ioredis','../../components/parsers/qs','../../components/export/pdf','api','../../mysqldb','defaults','redis','localhost','./chatInteraction.socket','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','set','Content-Range','update','destroy','stack','name','send','render','merge','contact','agent','index','map','rawAttributes','fieldName','type','key','getOptions','chat','query','user','show','params','ChatInteraction','keys','filters','intersection','model','attributes','fields','length','includeAll','include','options','find','create','body','describe','createVidaooSession','ChatWebsite','findOne','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooMetadata','fullname','https://api-vidaoo.xcally.com/api/v1/meetings','email','vidaooNote','isNull','parse','metadata','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','ValidationError','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','closed'];(function(_0x1fd4b5,_0x37d696){var _0x2e38fb=function(_0x4de96d){while(--_0x4de96d){_0x1fd4b5['push'](_0x1fd4b5['shift']());}};_0x2e38fb(++_0x37d696);}(_0xa231,0x69));var _0x1a23=function(_0x17ff72,_0x5a05c9){_0x17ff72=_0x17ff72-0x0;var _0x4b987c=_0xa231[_0x17ff72];return _0x4b987c;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x1a23('0x0'));var rp=require(_0x1a23('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1a23('0x2'));var util=require(_0x1a23('0x3'));var path=require(_0x1a23('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0x1a23('0x5'));var interaction=require('../../components/interaction/service');var qs=require(_0x1a23('0x6'));var pdf=require(_0x1a23('0x7'));var logger=require('../../config/logger')(_0x1a23('0x8'));var config=require('../../config/environment');var db=require(_0x1a23('0x9'))['db'];config['redis']=_[_0x1a23('0xa')](config[_0x1a23('0xb')],{'host':_0x1a23('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1a23('0xb')]));require(_0x1a23('0xd'))['register'](socket);var jayson=require(_0x1a23('0xe'));var client=jayson[_0x1a23('0xf')][_0x1a23('0x10')]({'port':0x232b});var client9004=jayson[_0x1a23('0xf')][_0x1a23('0x10')]({'port':0x232c});function respondWithRpcPromise(_0x14b349,_0x305d17,_0xb978d8,_0x1d4bb8){return new BPromise(function(_0x126891,_0x4b1659){var _0x2bb845=_0x1d4bb8||client;return _0x2bb845[_0x1a23('0x11')](_0x14b349,_0xb978d8)[_0x1a23('0x12')](function(_0x2eb96d){logger[_0x1a23('0x13')](_0x1a23('0x14'),_0x305d17,'request\x20sent');logger['debug'](_0x1a23('0x15'),_0x305d17,'request\x20sent',JSON[_0x1a23('0x16')](_0x2eb96d));if(_0x2eb96d[_0x1a23('0x17')]){if(_0x2eb96d[_0x1a23('0x17')][_0x1a23('0x18')]===0x1f4){logger[_0x1a23('0x17')](_0x1a23('0x14'),_0x305d17,_0x2eb96d[_0x1a23('0x17')]['message']);return _0x4b1659(_0x2eb96d['error']['message']);}logger[_0x1a23('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x305d17,_0x2eb96d['error'][_0x1a23('0x19')]);return _0x126891(_0x2eb96d[_0x1a23('0x17')][_0x1a23('0x19')]);}else{logger['info']('ChatInteraction,\x20%s,\x20%s',_0x305d17,'request\x20sent');_0x126891(_0x2eb96d[_0x1a23('0x1a')]['message']);}})[_0x1a23('0x1b')](function(_0x5cb1d7){logger['error'](_0x1a23('0x14'),_0x305d17,_0x5cb1d7);_0x4b1659(_0x5cb1d7);});});}function respondWithStatusCode(_0x574cc7,_0x22df50){_0x22df50=_0x22df50||0xcc;return function(_0x3ecd39){if(_0x3ecd39){return _0x574cc7[_0x1a23('0x1c')](_0x22df50);}return _0x574cc7[_0x1a23('0x1d')](_0x22df50)[_0x1a23('0x1e')]();};}function respondWithResult(_0xaac78e,_0x5789b5){_0x5789b5=_0x5789b5||0xc8;return function(_0x3ccf94){if(_0x3ccf94){return _0xaac78e['status'](_0x5789b5)[_0x1a23('0x1f')](_0x3ccf94);}};}function respondWithFilteredResult(_0x396c68,_0x21843b){return function(_0xc1ae7d){if(_0xc1ae7d){var _0x3a1c76=typeof _0x21843b[_0x1a23('0x20')]==='undefined'&&typeof _0x21843b[_0x1a23('0x21')]==='undefined';var _0x29627d=_0xc1ae7d['count'];var _0x386c39=_0x3a1c76?0x0:_0x21843b[_0x1a23('0x20')];var _0xf10e93=_0x3a1c76?_0xc1ae7d['count']:_0x21843b[_0x1a23('0x20')]+_0x21843b['limit'];var _0xe7ca10;if(_0xf10e93>=_0x29627d){_0xf10e93=_0x29627d;_0xe7ca10=0xc8;}else{_0xe7ca10=0xce;}_0x396c68['status'](_0xe7ca10);return _0x396c68[_0x1a23('0x22')](_0x1a23('0x23'),_0x386c39+'-'+_0xf10e93+'/'+_0x29627d)[_0x1a23('0x1f')](_0xc1ae7d);}return null;};}function saveUpdates(_0x79cb84){return function(_0x2ad3eb){if(_0x2ad3eb){return _0x2ad3eb[_0x1a23('0x24')](_0x79cb84)[_0x1a23('0x12')](function(_0x52052b){return _0x52052b;});}return null;};}function removeEntity(_0x40ecc0){return function(_0x34ce19){if(_0x34ce19){return _0x34ce19[_0x1a23('0x25')]()[_0x1a23('0x12')](function(){_0x40ecc0[_0x1a23('0x1d')](0xcc)[_0x1a23('0x1e')]();});}};}function handleEntityNotFound(_0x2418d2){return function(_0x10e39b){if(!_0x10e39b){_0x2418d2['sendStatus'](0x194);}return _0x10e39b;};}function handleError(_0x2ba8cc,_0x383180){_0x383180=_0x383180||0x1f4;return function(_0x200bbd){logger[_0x1a23('0x17')](_0x200bbd[_0x1a23('0x26')]);if(_0x200bbd[_0x1a23('0x27')]){delete _0x200bbd[_0x1a23('0x27')];}_0x2ba8cc[_0x1a23('0x1d')](_0x383180)[_0x1a23('0x28')](_0x200bbd);};}function getMustacheRender(_0x16efd7,_0x526dbf){return Mustache[_0x1a23('0x29')](_0x16efd7,_[_0x1a23('0x2a')](_0x526dbf['body'],{'contact':_0x526dbf[_0x1a23('0x2b')],'message':_0x526dbf[_0x1a23('0x19')],'agent':_0x526dbf[_0x1a23('0x2c')],'interaction':_0x526dbf['interaction'],'account':_0x526dbf['account']}))||'';}exports[_0x1a23('0x2d')]=function(_0xe1e891,_0xfcb1cf){var _0x3b6e59={};var _0x274cd4=_[_0x1a23('0x2e')](db['ChatInteraction'][_0x1a23('0x2f')],function(_0x2068e8){return{'name':_0x2068e8[_0x1a23('0x30')],'type':_0x2068e8[_0x1a23('0x31')][_0x1a23('0x32')]};});_0x3b6e59=qs[_0x1a23('0x33')](_0x274cd4,_0xe1e891);return interaction['findAll'](_0x1a23('0x34'),_0xe1e891[_0x1a23('0x35')],_0xe1e891[_0x1a23('0x36')],_0x3b6e59,_0x274cd4)['then'](respondWithFilteredResult(_0xfcb1cf,_0x3b6e59))[_0x1a23('0x1b')](handleError(_0xfcb1cf,null));};exports[_0x1a23('0x37')]=function(_0x47ef03,_0x51f755){var _0x58e4aa={'raw':![],'where':{'id':_0x47ef03[_0x1a23('0x38')]['id']}},_0x19468e={};_0x19468e['model']=_['keys'](db[_0x1a23('0x39')][_0x1a23('0x2f')]);_0x19468e['query']=_[_0x1a23('0x3a')](_0x47ef03[_0x1a23('0x35')]);_0x19468e[_0x1a23('0x3b')]=_[_0x1a23('0x3c')](_0x19468e[_0x1a23('0x3d')],_0x19468e[_0x1a23('0x35')]);_0x58e4aa[_0x1a23('0x3e')]=_[_0x1a23('0x3c')](_0x19468e[_0x1a23('0x3d')],qs[_0x1a23('0x3f')](_0x47ef03[_0x1a23('0x35')][_0x1a23('0x3f')]));_0x58e4aa[_0x1a23('0x3e')]=_0x58e4aa['attributes'][_0x1a23('0x40')]?_0x58e4aa[_0x1a23('0x3e')]:_0x19468e[_0x1a23('0x3d')];if(_0x47ef03['query'][_0x1a23('0x41')]){_0x58e4aa[_0x1a23('0x42')]=[{'all':!![]}];}_0x58e4aa=_[_0x1a23('0x2a')]({},_0x58e4aa,_0x47ef03[_0x1a23('0x43')]);return db[_0x1a23('0x39')][_0x1a23('0x44')](_0x58e4aa)[_0x1a23('0x12')](handleEntityNotFound(_0x51f755,null))['then'](respondWithResult(_0x51f755,null))['catch'](handleError(_0x51f755,null));};exports[_0x1a23('0x45')]=function(_0x3b4edd,_0x2e89c0){return db[_0x1a23('0x39')]['create'](_0x3b4edd[_0x1a23('0x46')],{})[_0x1a23('0x12')](respondWithResult(_0x2e89c0,0xc9))['catch'](handleError(_0x2e89c0,null));};exports['update']=function(_0x4ee8a7,_0x5c007c){if(_0x4ee8a7[_0x1a23('0x46')]['id']){delete _0x4ee8a7['body']['id'];}return db[_0x1a23('0x39')][_0x1a23('0x44')]({'where':{'id':_0x4ee8a7[_0x1a23('0x38')]['id']}})['then'](handleEntityNotFound(_0x5c007c,null))[_0x1a23('0x12')](saveUpdates(_0x4ee8a7[_0x1a23('0x46')],null))[_0x1a23('0x12')](respondWithResult(_0x5c007c,null))[_0x1a23('0x1b')](handleError(_0x5c007c,null));};exports[_0x1a23('0x25')]=function(_0x5e41f6,_0x31f8ab){return db[_0x1a23('0x39')]['find']({'where':{'id':_0x5e41f6[_0x1a23('0x38')]['id']}})[_0x1a23('0x12')](handleEntityNotFound(_0x31f8ab,null))['then'](removeEntity(_0x31f8ab,null))[_0x1a23('0x1b')](handleError(_0x31f8ab,null));};exports[_0x1a23('0x47')]=function(_0x1376a3,_0x2f641e){return db['ChatInteraction']['describe']()['then'](respondWithResult(_0x2f641e,null))[_0x1a23('0x1b')](handleError(_0x2f641e,null));};exports[_0x1a23('0x48')]=function(_0x698774,_0x4a15dd){var _0x2c832a=_0x698774[_0x1a23('0x38')]['id'];var _0x265fe3;var _0x532a1e;var _0x51f06e;return db[_0x1a23('0x39')]['findOne']({'where':{'id':_0x2c832a}})[_0x1a23('0x12')](function(_0x2a7b40){_0x265fe3=_0x2a7b40;return db[_0x1a23('0x49')][_0x1a23('0x4a')]({'where':{'id':_0x2a7b40[_0x1a23('0x4b')]},'attributes':['id',_0x1a23('0x4c'),_0x1a23('0x4d'),_0x1a23('0x4e'),'vidaooNote',_0x1a23('0x4f')],'raw':!![]});})[_0x1a23('0x12')](function(_0x3b5eb0){if(_0x3b5eb0&&_0x3b5eb0[_0x1a23('0x4c')]&&_0x3b5eb0[_0x1a23('0x4d')]){_0x532a1e=_0x3b5eb0;var _0x16e622={'interaction':{'id':_0x2c832a},'agent':{'id':_0x698774[_0x1a23('0x36')]['id'],'name':_0x698774[_0x1a23('0x36')][_0x1a23('0x27')],'fullname':_0x698774['user'][_0x1a23('0x50')],'email':_0x698774['user']['email']},'contact':_0x698774[_0x1a23('0x46')][_0x1a23('0x2b')],'account':_0x698774['body']['account']};var _0x12efda={'rejectUnauthorized':![],'method':'POST','url':_0x1a23('0x51'),'headers':{'X-APIKEY':_0x3b5eb0[_0x1a23('0x4c')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x698774[_0x1a23('0x36')][_0x1a23('0x52')]],'buttons':null,'topic':_0x532a1e[_0x1a23('0x4e')],'note':_['isNull'](_0x532a1e[_0x1a23('0x53')])?null:getMustacheRender(_0x532a1e[_0x1a23('0x53')],_0x16e622),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x1a23('0x54')](_0x532a1e['vidaooMetadata'])){var _0x3d4b00=getMustacheRender(_0x532a1e[_0x1a23('0x4f')],_0x16e622);var _0x458cc6=JSON[_0x1a23('0x55')](_0x3d4b00);_0x12efda[_0x1a23('0x46')][_0x1a23('0x56')]=_0x458cc6;}}catch(_0x49b6da){throw new db['Sequelize']['ValidationError'](_0x1a23('0x57'));}return rp(_0x12efda);}else{throw new db[(_0x1a23('0x58'))][(_0x1a23('0x59'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0x1a23('0x12')](function(_0x2ca628){_0x51f06e=_0x2ca628;if(_0x51f06e['id']){var _0xa16c95={'body':_0x51f06e[_0x1a23('0x5a')],'ChatWebsiteId':_0x532a1e['id'],'ChatInteractionId':_0x265fe3['id'],'direction':_0x1a23('0x5b'),'UserId':_0x698774[_0x1a23('0x36')]['id']};return db[_0x1a23('0x5c')]['create'](_0xa16c95,{});}else{throw new db[(_0x1a23('0x58'))][(_0x1a23('0x59'))](_0x1a23('0x5d'));}})[_0x1a23('0x12')](function(){return _0x265fe3[_0x1a23('0x5e')]({'vidaooSessionId':_0x51f06e['id']});})[_0x1a23('0x12')](respondWithResult(_0x4a15dd,null))[_0x1a23('0x1b')](handleError(_0x4a15dd,null));};exports[_0x1a23('0x5f')]=function(_0x568d78,_0x4a0157){if(_0x568d78[_0x1a23('0x46')]['id']){delete _0x568d78[_0x1a23('0x46')]['id'];}return db[_0x1a23('0x39')][_0x1a23('0x44')]({'where':{'id':_0x568d78[_0x1a23('0x38')]['id']},'include':[{'model':db[_0x1a23('0x60')],'as':'Contact'}]})[_0x1a23('0x12')](handleEntityNotFound(_0x4a0157,null))[_0x1a23('0x12')](saveUpdates(_0x568d78[_0x1a23('0x46')],null))[_0x1a23('0x12')](respondWithResult(_0x4a0157,null))['catch'](handleError(_0x4a0157,null));};exports['abandon']=function(_0x13f0db,_0x3f14d0){if(_0x13f0db[_0x1a23('0x46')]['id']){delete _0x13f0db['body']['id'];}return db[_0x1a23('0x39')]['find']({'where':{'id':_0x13f0db[_0x1a23('0x38')]['id']}})[_0x1a23('0x12')](function(_0x3d9f9b){if(!_0x3d9f9b){logger[_0x1a23('0x17')](_0x1a23('0x61'),_0x1a23('0x62'),0x194,'entity\x20not\x20found');_0x3f14d0[_0x1a23('0x1c')](0x194);}else{if(_0x3d9f9b['UserId']){throw new db['Sequelize']['ValidationError']('Interaction\x20already\x20assigned');}}return _0x3d9f9b;})[_0x1a23('0x12')](function(_0x5c2249){if(_0x5c2249){return _0x5c2249[_0x1a23('0x24')]({'closed':_0x13f0db[_0x1a23('0x46')][_0x1a23('0x63')],'disposition':_0x13f0db[_0x1a23('0x46')][_0x1a23('0x64')]})[_0x1a23('0x12')](function(_0x3c4be1){return _0x3c4be1;});}})[_0x1a23('0x12')](function(){return respondWithRpcPromise(_0x1a23('0x65'),'abandon',_0x13f0db['body'],client9004);})[_0x1a23('0x12')](respondWithResult(_0x3f14d0,null))[_0x1a23('0x1b')](handleError(_0x3f14d0,null));};exports[_0x1a23('0x66')]=function(_0x24d601,_0x4fdd38){_0x24d601[_0x1a23('0x46')]['name']=_0x24d601[_0x1a23('0x67')]['originalname'];_0x24d601[_0x1a23('0x46')]['basename']=_0x24d601[_0x1a23('0x67')][_0x1a23('0x68')];_0x24d601[_0x1a23('0x46')][_0x1a23('0x31')]=_0x24d601[_0x1a23('0x67')][_0x1a23('0x69')];return db['Attachment'][_0x1a23('0x45')](_0x24d601[_0x1a23('0x46')])['then'](respondWithResult(_0x4fdd38,0xc9))[_0x1a23('0x1b')](handleError(_0x4fdd38,null));};exports[_0x1a23('0x6a')]=function(_0x3fbf62,_0x43db25){return db['ChatInteraction'][_0x1a23('0x4a')]({'where':{'id':_0x3fbf62[_0x1a23('0x38')]['id']},'raw':!![]})[_0x1a23('0x12')](handleEntityNotFound(_0x43db25,null))[_0x1a23('0x12')](function(_0x24ac95){if(_0x24ac95){if(_0x24ac95[_0x1a23('0x63')]){return _0x43db25[_0x1a23('0x1d')](0x193)[_0x1a23('0x1f')]({'status':0x193,'message':_0x1a23('0x6b')});}return db[_0x1a23('0x6c')]['findOne']({'where':{'id':_0x3fbf62[_0x1a23('0x35')][_0x1a23('0x6d')]},'raw':!![]})[_0x1a23('0x12')](handleEntityNotFound(_0x43db25,null));}})['then'](function(_0x1442dc){if(_0x1442dc){var _0x93b860=_0x1442dc['ChatOfflineMessageId']!==null;var _0x2ab209=path[_0x1a23('0x6e')](config[_0x1a23('0x6f')],_0x1a23('0x70'));if(_0x93b860){_0x2ab209=path[_0x1a23('0x6e')](_0x2ab209,_0x1a23('0x71'));}var _0x22baa7=path['join'](_0x2ab209,_0x1442dc[_0x1a23('0x72')]);return _0x43db25[_0x1a23('0x73')](_0x22baa7);}})['catch'](handleError(_0x43db25,null));};exports['close']=function(_0x2a00fe,_0x4bcf2b){var _0x1badfb=null;var _0x2277e3=null;var _0x145abe=null;if(_0x2a00fe['body']['id']){delete _0x2a00fe[_0x1a23('0x46')]['id'];}if(_0x2a00fe[_0x1a23('0x46')][_0x1a23('0x74')]){_0x145abe=path[_0x1a23('0x6e')](config[_0x1a23('0x6f')],_0x1a23('0x75'),util['format'](_0x1a23('0x76'),Date[_0x1a23('0x77')]()));_0x2a00fe['body'][_0x1a23('0x78')]=_0x145abe;}return db[_0x1a23('0x39')]['find']({'where':{'id':_0x2a00fe[_0x1a23('0x38')]['id']},'include':[{'model':db['ChatMessage'],'as':_0x1a23('0x79'),'include':[{'model':db['User'],'as':_0x1a23('0x7a')}]}]})['then'](handleEntityNotFound(_0x4bcf2b,null))[_0x1a23('0x12')](saveUpdates(_0x2a00fe[_0x1a23('0x46')],null))[_0x1a23('0x12')](function(_0x591d90){if(_0x591d90){_0x1badfb=_0x591d90;return db[_0x1a23('0x49')][_0x1a23('0x44')]({'where':{'id':_0x1badfb[_0x1a23('0x4b')]}});}})[_0x1a23('0x12')](function(_0x57d14b){if(_0x57d14b){_0x2277e3=_0x57d14b;return db['CmContact'][_0x1a23('0x44')]({'where':{'id':_0x1badfb[_0x1a23('0x7b')]}});}})[_0x1a23('0x12')](function(_0x3351b9){if(_0x3351b9){if(_0x145abe){var _0x532c11=null;for(var _0x1a267e=0x1;_0x1a267e<_0x1badfb[_0x1a23('0x79')]['length'];++_0x1a267e){_0x532c11=_0x1badfb['Messages'][_0x1a267e];var _0x34464d=_0x532c11['UserId']?util[_0x1a23('0x7c')](_0x1a23('0x7d'),_0x2277e3[_0x1a23('0x7e')],_0x532c11[_0x1a23('0x7f')]):'System';var _0x49d89f=_0x2a00fe['body']['customer']||util[_0x1a23('0x7c')](_0x1a23('0x7d'),_0x1a23('0x80'),_0x532c11['ContactId']);switch(_0x2277e3[_0x1a23('0x81')]){case _0x1a23('0x82'):_0x34464d=_0x532c11[_0x1a23('0x7f')]?util['format'](_0x1a23('0x7d'),_0x2277e3[_0x1a23('0x7e')],_0x532c11['UserId']):_0x1a23('0x83');break;case _0x1a23('0x84'):_0x34464d=_0x532c11[_0x1a23('0x7f')]?_0x532c11[_0x1a23('0x7a')][_0x1a23('0x85')]||_0x532c11['User']['fullname']:_0x1a23('0x83');break;case _0x1a23('0x86'):_0x34464d=_0x532c11[_0x1a23('0x7f')]?_0x532c11[_0x1a23('0x7a')][_0x1a23('0x50')]:_0x1a23('0x83');break;default:_0x34464d=_0x532c11[_0x1a23('0x7f')]?util[_0x1a23('0x7c')](_0x1a23('0x7d'),_0x2277e3[_0x1a23('0x7e')],_0x532c11[_0x1a23('0x7f')]):_0x1a23('0x83');}var _0x5746fa=util[_0x1a23('0x7c')](_0x1a23('0x87'),moment(_0x532c11[_0x1a23('0x88')])[_0x1a23('0x7c')](_0x1a23('0x89')),_0x532c11[_0x1a23('0x8a')]==='in'?_0x49d89f:_0x34464d,_0x532c11[_0x1a23('0x46')]);if(!_0x532c11['secret']){fs[_0x1a23('0x8b')](_0x145abe,_0x5746fa);}}return db[_0x1a23('0x8c')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0x1a23('0x8d')],'as':_0x1a23('0x8d'),'raw':!![]}]}]});}}})['then'](function(_0x55921c){if(!_0x55921c||!_0x55921c[_0x1a23('0x8e')]||!_0x2a00fe['body'])return _0x1badfb;var _0x53c0fe=_0x55921c['getSmtpOptions']();return respondWithRpcPromise(_0x1a23('0x8f'),_0x1a23('0x90'),{'account':_0x53c0fe,'message':{'from':util[_0x1a23('0x7c')](_0x1a23('0x91'),_0x55921c[_0x1a23('0x27')],_0x55921c[_0x1a23('0x52')]||_0x55921c['Smtp']['user']),'to':_0x2a00fe[_0x1a23('0x46')][_0x1a23('0x74')],'subject':'Mail\x20Transcript','text':util[_0x1a23('0x7c')](_0x1a23('0x92'),_0x2a00fe[_0x1a23('0x46')]['mailTranscript']),'attachments':[{'path':_0x145abe}]}})['then'](function(){return _0x1badfb;})[_0x1a23('0x1b')](function(_0xbebca4){logger['error'](_0xbebca4);});})[_0x1a23('0x12')](respondWithStatusCode(_0x4bcf2b,0xc8))['catch'](handleError(_0x4bcf2b,null));};exports['addMessage']=function(_0x5acb97,_0x5d492b){return db[_0x1a23('0x5c')][_0x1a23('0x44')]({'where':{'id':_0x5acb97[_0x1a23('0x38')]['id']}})[_0x1a23('0x12')](handleEntityNotFound(_0x5d492b,null))[_0x1a23('0x12')](function(_0x4f9a8d){if(_0x4f9a8d){return _0x4f9a8d[_0x1a23('0x93')](_0x5acb97['body'][_0x1a23('0x94')],_['omit'](_0x5acb97['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x5d492b,null))[_0x1a23('0x1b')](handleError(_0x5d492b,null));};exports['getMessages']=function(_0x41083d,_0x301aa7){var _0x566590={'raw':![],'where':{}};var _0x308b6e={};var _0x45ee93={'count':0x0,'rows':[]};return db[_0x1a23('0x39')][_0x1a23('0x4a')]({'where':{'id':_0x41083d[_0x1a23('0x38')]['id']}})['then'](handleEntityNotFound(_0x301aa7,null))[_0x1a23('0x12')](function(_0x25d8ef){if(_0x25d8ef){_0x308b6e[_0x1a23('0x3d')]=_['keys'](db['ChatMessage'][_0x1a23('0x2f')]);_0x308b6e[_0x1a23('0x35')]=_['keys'](_0x41083d[_0x1a23('0x35')]);_0x308b6e[_0x1a23('0x3b')]=_[_0x1a23('0x3c')](_0x308b6e[_0x1a23('0x3d')],_0x308b6e[_0x1a23('0x35')]);_0x566590['attributes']=_[_0x1a23('0x3c')](_0x308b6e[_0x1a23('0x3d')],qs[_0x1a23('0x3f')](_0x41083d['query'][_0x1a23('0x3f')]));_0x566590['attributes']=_0x566590['attributes'][_0x1a23('0x40')]?_0x566590['attributes']:_0x308b6e[_0x1a23('0x3d')];if(!_0x41083d['query'][_0x1a23('0x95')](_0x1a23('0x96'))){_0x566590[_0x1a23('0x21')]=qs[_0x1a23('0x21')](_0x41083d[_0x1a23('0x35')][_0x1a23('0x21')]);_0x566590[_0x1a23('0x20')]=qs['offset'](_0x41083d['query']['offset']);}_0x566590[_0x1a23('0x97')]=qs['sort'](_0x41083d[_0x1a23('0x35')][_0x1a23('0x98')]);_0x566590[_0x1a23('0x99')]=qs['filters'](_[_0x1a23('0x9a')](_0x41083d[_0x1a23('0x35')],_0x308b6e[_0x1a23('0x3b')]));_0x566590['where'][_0x1a23('0x9b')]=_0x25d8ef['id'];if(_0x41083d[_0x1a23('0x35')][_0x1a23('0x9c')]){_0x566590[_0x1a23('0x99')]=_[_0x1a23('0x2a')](_0x566590[_0x1a23('0x99')],{'$or':_['map'](_0x566590[_0x1a23('0x3e')],function(_0x1648cb){var _0x40f95a={};_0x40f95a[_0x1648cb]={'$like':'%'+_0x41083d[_0x1a23('0x35')][_0x1a23('0x9c')]+'%'};return _0x40f95a;})});}if(_0x41083d[_0x1a23('0x35')][_0x1a23('0x9d')]){var _0xa7b12b=_0x41083d[_0x1a23('0x35')][_0x1a23('0x9d')][_0x1a23('0x9e')](',');var _0x5b4573={};_0x5b4573[_0xa7b12b[0x0]]={'$gte':moment(_0xa7b12b[0x1])[_0x1a23('0x7c')](_0x1a23('0x9f'))};_0x566590[_0x1a23('0x99')]=_[_0x1a23('0x2a')](_0x566590[_0x1a23('0x99')],_0x5b4573);}_0x566590=_['merge']({},_0x566590,_0x41083d[_0x1a23('0x43')]);return db[_0x1a23('0x5c')][_0x1a23('0xa0')]({'where':_0x566590[_0x1a23('0x99')]})[_0x1a23('0x12')](function(_0x12df1a){_0x45ee93[_0x1a23('0xa0')]=_0x12df1a;if(_0x41083d['query'][_0x1a23('0x41')]){_0x566590[_0x1a23('0x42')]=[{'all':!![]}];}return db[_0x1a23('0x5c')]['findAll'](_0x566590);})['then'](function(_0x3b9d5a){_0x45ee93[_0x1a23('0xa1')]=_0x3b9d5a;return _0x45ee93;});}})['then'](respondWithFilteredResult(_0x301aa7,_0x566590))[_0x1a23('0x1b')](handleError(_0x301aa7,null));};exports[_0x1a23('0xa2')]=function(_0x3028f7,_0x52a65f){var _0x35ac06={'where':{}},_0x45ecd8={},_0x151957={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x1a23('0x4a')]({'where':{'id':_0x3028f7[_0x1a23('0x38')]['id']}})[_0x1a23('0x12')](handleEntityNotFound(_0x52a65f,null))[_0x1a23('0x12')](function(_0x31afec){if(_0x31afec){_0x45ecd8[_0x1a23('0x3d')]=_['keys'](db[_0x1a23('0x5c')]['rawAttributes']);_0x45ecd8['query']=_['keys'](_0x3028f7[_0x1a23('0x35')]);_0x45ecd8[_0x1a23('0x3b')]=_[_0x1a23('0x3c')](_0x45ecd8[_0x1a23('0x3d')],_0x45ecd8['query']);_0x35ac06[_0x1a23('0x3e')]=_[_0x1a23('0x3c')](_0x45ecd8['model'],qs['fields'](_0x3028f7['query']['fields']));_0x35ac06['attributes']=_0x35ac06['attributes'][_0x1a23('0x40')]?_0x35ac06[_0x1a23('0x3e')]:_0x45ecd8[_0x1a23('0x3d')];if(!_0x3028f7['query'][_0x1a23('0x95')](_0x1a23('0x96'))){_0x35ac06[_0x1a23('0x21')]=qs['limit'](_0x3028f7[_0x1a23('0x35')][_0x1a23('0x21')]);_0x35ac06[_0x1a23('0x20')]=qs[_0x1a23('0x20')](_0x3028f7[_0x1a23('0x35')][_0x1a23('0x20')]);}_0x35ac06[_0x1a23('0x97')]=qs['sort'](_0x3028f7[_0x1a23('0x35')][_0x1a23('0x98')]);_0x35ac06[_0x1a23('0x99')]=qs[_0x1a23('0x3b')](_['pick'](_0x3028f7[_0x1a23('0x35')],_0x45ecd8[_0x1a23('0x3b')]));_0x35ac06[_0x1a23('0x99')]['ChatInteractionId']=_0x31afec['id'];if(_0x3028f7[_0x1a23('0x35')]['filter']){_0x35ac06['where']=_[_0x1a23('0x2a')](_0x35ac06[_0x1a23('0x99')],{'$or':_[_0x1a23('0x2e')](_0x35ac06['attributes'],function(_0x531a2d){var _0x27c23b={};_0x27c23b[_0x531a2d]={'$like':'%'+_0x3028f7['query'][_0x1a23('0x9c')]+'%'};return _0x27c23b;})});}_0x35ac06[_0x1a23('0x99')]['secret']=![];if(_0x3028f7[_0x1a23('0x35')]['id']){_0x35ac06[_0x1a23('0x99')]['id']={'$gt':_0x3028f7['query']['id']};}_0x35ac06=_['merge']({},_0x35ac06,_0x3028f7['options']);return db[_0x1a23('0x5c')][_0x1a23('0xa0')]({'where':_0x35ac06[_0x1a23('0x99')]})['then'](function(_0x586fed){_0x151957[_0x1a23('0xa0')]=_0x586fed;_0x35ac06[_0x1a23('0x42')]=[];if(_0x3028f7[_0x1a23('0x35')][_0x1a23('0xa3')]){_0x35ac06[_0x1a23('0x42')][_0x1a23('0xa4')]({'model':db[_0x1a23('0x7a')],'as':_0x1a23('0x7a'),'attributes':['id',_0x1a23('0x50'),'alias']});}if(_0x3028f7[_0x1a23('0x35')][_0x1a23('0x41')]){_0x35ac06[_0x1a23('0x42')]=[{'all':!![]}];}return db[_0x1a23('0x5c')]['findAll'](_0x35ac06);})[_0x1a23('0x12')](function(_0x35eb9f){_0x151957['rows']=_0x35eb9f;return _0x151957;});}})[_0x1a23('0x12')](respondWithFilteredResult(_0x52a65f,_0x35ac06))[_0x1a23('0x1b')](handleError(_0x52a65f,null));};exports[_0x1a23('0xa5')]=function(_0x36f48a,_0x35c786){return db[_0x1a23('0x39')]['find']({'where':{'id':_0x36f48a[_0x1a23('0x38')]['id']}})[_0x1a23('0x12')](handleEntityNotFound(_0x35c786,null))['then'](function(_0x4b5cda){if(_0x4b5cda){return _0x4b5cda[_0x1a23('0xa6')](_0x36f48a[_0x1a23('0x46')][_0x1a23('0x94')],_[_0x1a23('0xa7')](_0x36f48a[_0x1a23('0x46')],[_0x1a23('0x94'),'id'])||{})[_0x1a23('0xa8')](function(){return db[_0x1a23('0xa9')][_0x1a23('0xaa')]({'attributes':['id',_0x1a23('0x27'),_0x1a23('0xab')],'where':{'id':_0x36f48a[_0x1a23('0x46')][_0x1a23('0x94')]}});})[_0x1a23('0x12')](function(_0x32da25){socket[_0x1a23('0xac')]('chatInteractionTags:save',{'id':Number(_0x36f48a['params']['id']),'tags':_0x32da25||[]});return{'id':Number(_0x36f48a[_0x1a23('0x38')]['id']),'tags':_0x32da25||[]};});}})[_0x1a23('0x12')](respondWithResult(_0x35c786,null))[_0x1a23('0x1b')](handleError(_0x35c786,null));};exports['removeTags']=function(_0x15a7da,_0x4850d7){return db[_0x1a23('0x39')]['find']({'where':{'id':_0x15a7da[_0x1a23('0x38')]['id']}})['then'](handleEntityNotFound(_0x4850d7,null))[_0x1a23('0x12')](function(_0x1abf4b){if(_0x1abf4b){return _0x1abf4b[_0x1a23('0xad')](_0x15a7da['query'][_0x1a23('0x94')]);}})['then'](respondWithStatusCode(_0x4850d7,null))[_0x1a23('0x1b')](handleError(_0x4850d7,null));};exports[_0x1a23('0x73')]=function(_0x11b068,_0x1c8742){var _0x32cf70=moment()[_0x1a23('0xae')]()[_0x1a23('0xaf')]();var _0x24a354=path['join'](config['root'],'server','files','tmp');var _0x24a281=path[_0x1a23('0x6e')](config['root'],_0x1a23('0xb0'),_0x1a23('0xb1'),_0x1a23('0xb2'));var _0x3b4ced=path['join'](_0x24a354,_0x32cf70);var _0x55509c=util['format']('transcript-%d-%s.zip',_0x11b068[_0x1a23('0x38')]['id'],_0x32cf70);var _0x9ded51=path[_0x1a23('0x6e')](_0x24a354,_0x55509c);var _0xedd84d=[];_0xedd84d[_0x1a23('0xa4')]({'model':db[_0x1a23('0x7a')],'as':_0x1a23('0x7a'),'attributes':['id',_0x1a23('0x50')],'raw':!![]});_0xedd84d[_0x1a23('0xa4')]({'model':db[_0x1a23('0x60')],'as':_0x1a23('0xb3'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x11b068[_0x1a23('0x35')]['attachments']){_0xedd84d[_0x1a23('0xa4')]({'model':db['Attachment'],'as':_0x1a23('0x6c'),'raw':!![]});}var _0x37fc5f=[{'model':db['ChatMessage'],'as':'Messages','attributes':['id',_0x1a23('0x46'),'createdAt',_0x1a23('0x8a'),_0x1a23('0xb4'),_0x1a23('0xb5')],'include':_0xedd84d}];_0x37fc5f['push']({'model':db[_0x1a23('0x49')],'as':_0x1a23('0xb6'),'attributes':['id',_0x1a23('0x27')]});_0x37fc5f[_0x1a23('0xa4')]({'model':db['User'],'as':_0x1a23('0xb7'),'attributes':['id',_0x1a23('0x50')]});return db['ChatInteraction'][_0x1a23('0x44')]({'where':{'id':_0x11b068[_0x1a23('0x38')]['id']},'include':_0x37fc5f})[_0x1a23('0x12')](handleEntityNotFound(_0x1c8742,null))['then'](function(_0x521083){if(_0x521083){var _0xf7887a=_0x521083['get']({'plain':!![]});fs[_0x1a23('0xb8')](_0x3b4ced);var _0x277e52={'channel':_0x1a23('0xb9'),'account':_0xf7887a[_0x1a23('0xb6')][_0x1a23('0x27')],'agent':_0xf7887a[_0x1a23('0xb7')]?_0xf7887a[_0x1a23('0xb7')][_0x1a23('0x50')]:_0x1a23('0xba'),'createdAt':moment(_0xf7887a[_0x1a23('0x88')])[_0x1a23('0x7c')](_0x1a23('0x9f'))[_0x1a23('0xaf')](),'closedAt':_0xf7887a[_0x1a23('0x63')]?moment(_0xf7887a[_0x1a23('0xbb')])[_0x1a23('0x7c')](_0x1a23('0x9f'))[_0x1a23('0xaf')]():'','disposition':_0xf7887a[_0x1a23('0x64')],'chatInfo':{'browser':_0xf7887a[_0x1a23('0xbc')],'os':_0xf7887a[_0x1a23('0xbd')],'referer':_0xf7887a[_0x1a23('0xbe')],'customerIp':_0xf7887a[_0x1a23('0xbf')],'customerPort':_0xf7887a[_0x1a23('0xc0')]?_0xf7887a['customerPort']:_0x1a23('0xba')},'messages':_(_0xf7887a['Messages'])[_0x1a23('0xc1')]()[_0x1a23('0x9c')]({'secret':![]})[_0x1a23('0x2e')](function(_0x2bd6bd){if(_0x2bd6bd[_0x1a23('0x6c')]){var _0x297dee=path[_0x1a23('0x6e')](_0x24a281,_0x2bd6bd['Attachment'][_0x1a23('0x72')]);if(fs['existsSync'](_0x297dee)){fs[_0x1a23('0xc2')](_0x297dee)['pipe'](fs[_0x1a23('0xc3')](path['join'](_0x3b4ced,_0x2bd6bd[_0x1a23('0x6c')][_0x1a23('0x72')])));}}return{'date':moment(_0x2bd6bd[_0x1a23('0x88')])[_0x1a23('0x7c')](_0x1a23('0x9f'))[_0x1a23('0xaf')](),'sender':_0x2bd6bd[_0x1a23('0x8a')]==='out'?_0x2bd6bd[_0x1a23('0x7a')]?_0x2bd6bd[_0x1a23('0x7a')][_0x1a23('0x50')]:_0x1a23('0x83'):_0x2bd6bd[_0x1a23('0xb3')][_0x1a23('0xc4')]+(_0x2bd6bd[_0x1a23('0xb3')][_0x1a23('0xc5')]?'\x20'+_0x2bd6bd[_0x1a23('0xb3')]['lastName']:''),'body':_0x2bd6bd[_0x1a23('0x6c')]?_0x2bd6bd[_0x1a23('0x6c')][_0x1a23('0x72')]:_0x2bd6bd[_0x1a23('0x46')],'direction':_0x2bd6bd[_0x1a23('0x8a')]===_0x1a23('0x5b')?'A':'C','secret':_0x2bd6bd['secret'],'read':_0x2bd6bd[_0x1a23('0xb5')],'attachment':_0x2bd6bd[_0x1a23('0x6c')]};})[_0x1a23('0xc6')]()};return ejs['renderFile'](path[_0x1a23('0x6e')](config[_0x1a23('0x6f')],_0x1a23('0xb0'),_0x1a23('0xc7'),_0x1a23('0xc8')),{'interaction':_0x277e52})[_0x1a23('0x12')](function(_0x176736){var _0x4da075=path[_0x1a23('0x6e')](_0x3b4ced,_0x1a23('0xc9')+_0xf7887a['id']+'-'+_0x32cf70+_0x1a23('0xca'));var _0x2b5d43={'path':_0x4da075,'channel':_0x1a23('0xb9'),'interactionId':_0xf7887a['id']};return pdf[_0x1a23('0xcb')](_0x176736,_0x2b5d43);})[_0x1a23('0x12')](function(){return new Promise(function(_0x6d6da5,_0x5bdeb7){zipdir(_0x3b4ced,{'saveTo':_0x9ded51},function(_0x2e1af3,_0x120ac3){if(_0x2e1af3)return _0x5bdeb7(_0x2e1af3);return _0x6d6da5(_0x120ac3);});})[_0x1a23('0x12')](function(){return new BPromise(function(_0x570e5c,_0x62843a){rimraf(_0x3b4ced,function(_0x2aebb7){if(_0x2aebb7)_0x62843a(_0x2aebb7);return _0x570e5c();});});})['then'](function(){return _0x1c8742[_0x1a23('0x73')](_0x9ded51,_0x55509c,function(_0x240bed){if(_0x240bed){logger[_0x1a23('0x17')]('err',_0x240bed);}else{fs[_0x1a23('0xcc')](_0x9ded51);}});});});}else{return _0x1c8742['sendStatus'](0xc8);}})[_0x1a23('0x1b')](handleError(_0x1c8742,null));};
\ No newline at end of file
+var _0xdb57=['lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','update','destroy','stack','name','render','merge','contact','agent','account','index','map','ChatInteraction','rawAttributes','fieldName','type','key','chat','query','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','options','find','create','body','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','user','fullname','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','parse','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','mimetype','Attachment','Unauthorized','attachId','ChatOfflineMessageId','join','offline-chat/','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','User','CmContact','ContactId','%s%d','agentAlias','System','customer','Visitor','website_alias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','MailAccount','MailServerOut','CloudProvider','Smtp','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ids','omit','hasOwnProperty','nolimit','order','sort','pick','where','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','getMyMessages','ChatInteractionId','filter','includeAgent','push','addTags','setTags','spread','Tag','color','chatInteractionTags:save','removeTags','unix','toString','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','Account','Owner','get','mkdirSync','Chat','closedAt','osName','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','pipe','createWriteStream','read','value','root','server','views','transcript-','.pdf','createPdfFromHTML','download','err','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path'];(function(_0x1723f2,_0x17485c){var _0x5928b2=function(_0x2a42cb){while(--_0x2a42cb){_0x1723f2['push'](_0x1723f2['shift']());}};_0x5928b2(++_0x17485c);}(_0xdb57,0x1a5));var _0x7db5=function(_0x162780,_0x47f2e2){_0x162780=_0x162780-0x0;var _0x1ea2dc=_0xdb57[_0x162780];return _0x1ea2dc;};'use strict';var rimraf=require(_0x7db5('0x0'));var zipdir=require('zip-dir');var rp=require(_0x7db5('0x1'));var moment=require(_0x7db5('0x2'));var BPromise=require(_0x7db5('0x3'));var Mustache=require(_0x7db5('0x4'));var util=require(_0x7db5('0x5'));var path=require(_0x7db5('0x6'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x7db5('0x7'));var Redis=require('ioredis');var interaction=require(_0x7db5('0x8'));var qs=require(_0x7db5('0x9'));var pdf=require(_0x7db5('0xa'));var logger=require(_0x7db5('0xb'))(_0x7db5('0xc'));var config=require(_0x7db5('0xd'));var db=require(_0x7db5('0xe'))['db'];config[_0x7db5('0xf')]=_['defaults'](config[_0x7db5('0xf')],{'host':_0x7db5('0x10'),'port':0x18eb});var socket=require(_0x7db5('0x11'))(new Redis(config[_0x7db5('0xf')]));require(_0x7db5('0x12'))[_0x7db5('0x13')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7db5('0x14')][_0x7db5('0x15')]({'port':0x232b});var client9004=jayson[_0x7db5('0x14')][_0x7db5('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x2c8a33,_0x513a26,_0x231e09,_0x55a08d){return new BPromise(function(_0x34b567,_0x33655d){var _0xa28b2a=_0x55a08d||client;return _0xa28b2a['request'](_0x2c8a33,_0x231e09)[_0x7db5('0x16')](function(_0x3b7b1d){logger[_0x7db5('0x17')](_0x7db5('0x18'),_0x513a26,_0x7db5('0x19'));logger[_0x7db5('0x1a')](_0x7db5('0x1b'),_0x513a26,_0x7db5('0x19'),JSON['stringify'](_0x3b7b1d));if(_0x3b7b1d[_0x7db5('0x1c')]){if(_0x3b7b1d[_0x7db5('0x1c')][_0x7db5('0x1d')]===0x1f4){logger[_0x7db5('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x513a26,_0x3b7b1d['error'][_0x7db5('0x1e')]);return _0x33655d(_0x3b7b1d[_0x7db5('0x1c')][_0x7db5('0x1e')]);}logger[_0x7db5('0x1c')](_0x7db5('0x18'),_0x513a26,_0x3b7b1d[_0x7db5('0x1c')][_0x7db5('0x1e')]);return _0x34b567(_0x3b7b1d[_0x7db5('0x1c')][_0x7db5('0x1e')]);}else{logger[_0x7db5('0x17')](_0x7db5('0x18'),_0x513a26,_0x7db5('0x19'));_0x34b567(_0x3b7b1d[_0x7db5('0x1f')][_0x7db5('0x1e')]);}})[_0x7db5('0x20')](function(_0x4041eb){logger['error'](_0x7db5('0x18'),_0x513a26,_0x4041eb);_0x33655d(_0x4041eb);});});}function respondWithStatusCode(_0xf84422,_0x26833d){_0x26833d=_0x26833d||0xcc;return function(_0x12ab7a){if(_0x12ab7a){return _0xf84422[_0x7db5('0x21')](_0x26833d);}return _0xf84422['status'](_0x26833d)[_0x7db5('0x22')]();};}function respondWithResult(_0xf9f077,_0x49e780){_0x49e780=_0x49e780||0xc8;return function(_0x2710d7){if(_0x2710d7){return _0xf9f077[_0x7db5('0x23')](_0x49e780)[_0x7db5('0x24')](_0x2710d7);}};}function respondWithFilteredResult(_0xe7118,_0x4c0cf0){return function(_0x526f32){if(_0x526f32){var _0x34e776=typeof _0x4c0cf0[_0x7db5('0x25')]===_0x7db5('0x26')&&typeof _0x4c0cf0[_0x7db5('0x27')]==='undefined';var _0x4a146e=_0x526f32[_0x7db5('0x28')];var _0x5e179a=_0x34e776?0x0:_0x4c0cf0[_0x7db5('0x25')];var _0x210eaa=_0x34e776?_0x526f32[_0x7db5('0x28')]:_0x4c0cf0[_0x7db5('0x25')]+_0x4c0cf0['limit'];var _0xc8bda0;if(_0x210eaa>=_0x4a146e){_0x210eaa=_0x4a146e;_0xc8bda0=0xc8;}else{_0xc8bda0=0xce;}_0xe7118[_0x7db5('0x23')](_0xc8bda0);return _0xe7118['set'](_0x7db5('0x29'),_0x5e179a+'-'+_0x210eaa+'/'+_0x4a146e)[_0x7db5('0x24')](_0x526f32);}return null;};}function saveUpdates(_0x450a08){return function(_0xf35d30){if(_0xf35d30){return _0xf35d30[_0x7db5('0x2a')](_0x450a08)['then'](function(_0x1fc28d){return _0x1fc28d;});}return null;};}function removeEntity(_0x38811b){return function(_0x1f16ed){if(_0x1f16ed){return _0x1f16ed[_0x7db5('0x2b')]()[_0x7db5('0x16')](function(){_0x38811b[_0x7db5('0x23')](0xcc)[_0x7db5('0x22')]();});}};}function handleEntityNotFound(_0x370711){return function(_0x2ab422){if(!_0x2ab422){_0x370711[_0x7db5('0x21')](0x194);}return _0x2ab422;};}function handleError(_0x35e887,_0x2a6051){_0x2a6051=_0x2a6051||0x1f4;return function(_0x2de42c){logger[_0x7db5('0x1c')](_0x2de42c[_0x7db5('0x2c')]);if(_0x2de42c[_0x7db5('0x2d')]){delete _0x2de42c['name'];}_0x35e887[_0x7db5('0x23')](_0x2a6051)['send'](_0x2de42c);};}function getMustacheRender(_0x3017e6,_0x935f18){return Mustache[_0x7db5('0x2e')](_0x3017e6,_[_0x7db5('0x2f')](_0x935f18['body'],{'contact':_0x935f18[_0x7db5('0x30')],'message':_0x935f18[_0x7db5('0x1e')],'agent':_0x935f18[_0x7db5('0x31')],'interaction':_0x935f18['interaction'],'account':_0x935f18[_0x7db5('0x32')]}))||'';}exports[_0x7db5('0x33')]=function(_0x5598c0,_0x53abed){var _0x3556d2={};var _0x2760e3=_[_0x7db5('0x34')](db[_0x7db5('0x35')][_0x7db5('0x36')],function(_0x1dd224){return{'name':_0x1dd224[_0x7db5('0x37')],'type':_0x1dd224[_0x7db5('0x38')][_0x7db5('0x39')]};});_0x3556d2=qs['getOptions'](_0x2760e3,_0x5598c0);return interaction['findAll'](_0x7db5('0x3a'),_0x5598c0[_0x7db5('0x3b')],_0x5598c0['user'],_0x3556d2,_0x2760e3)['then'](respondWithFilteredResult(_0x53abed,_0x3556d2))[_0x7db5('0x20')](handleError(_0x53abed,null));};exports[_0x7db5('0x3c')]=function(_0x5dda91,_0x5c229a){var _0x446904={'raw':![],'where':{'id':_0x5dda91[_0x7db5('0x3d')]['id']}},_0x58bf5f={};_0x58bf5f[_0x7db5('0x3e')]=_['keys'](db[_0x7db5('0x35')][_0x7db5('0x36')]);_0x58bf5f['query']=_[_0x7db5('0x3f')](_0x5dda91[_0x7db5('0x3b')]);_0x58bf5f[_0x7db5('0x40')]=_[_0x7db5('0x41')](_0x58bf5f[_0x7db5('0x3e')],_0x58bf5f['query']);_0x446904[_0x7db5('0x42')]=_['intersection'](_0x58bf5f[_0x7db5('0x3e')],qs[_0x7db5('0x43')](_0x5dda91[_0x7db5('0x3b')]['fields']));_0x446904[_0x7db5('0x42')]=_0x446904['attributes'][_0x7db5('0x44')]?_0x446904[_0x7db5('0x42')]:_0x58bf5f[_0x7db5('0x3e')];if(_0x5dda91[_0x7db5('0x3b')][_0x7db5('0x45')]){_0x446904[_0x7db5('0x46')]=[{'all':!![]}];}_0x446904=_[_0x7db5('0x2f')]({},_0x446904,_0x5dda91[_0x7db5('0x47')]);return db[_0x7db5('0x35')][_0x7db5('0x48')](_0x446904)[_0x7db5('0x16')](handleEntityNotFound(_0x5c229a,null))['then'](respondWithResult(_0x5c229a,null))['catch'](handleError(_0x5c229a,null));};exports[_0x7db5('0x49')]=function(_0x64e2e4,_0x369ccb){return db['ChatInteraction'][_0x7db5('0x49')](_0x64e2e4[_0x7db5('0x4a')],{})[_0x7db5('0x16')](respondWithResult(_0x369ccb,0xc9))[_0x7db5('0x20')](handleError(_0x369ccb,null));};exports['update']=function(_0x50be5c,_0x5187f7){if(_0x50be5c[_0x7db5('0x4a')]['id']){delete _0x50be5c[_0x7db5('0x4a')]['id'];}return db[_0x7db5('0x35')]['find']({'where':{'id':_0x50be5c[_0x7db5('0x3d')]['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0x5187f7,null))[_0x7db5('0x16')](saveUpdates(_0x50be5c[_0x7db5('0x4a')],null))[_0x7db5('0x16')](respondWithResult(_0x5187f7,null))[_0x7db5('0x20')](handleError(_0x5187f7,null));};exports[_0x7db5('0x2b')]=function(_0x4c8c69,_0x39547c){return db[_0x7db5('0x35')][_0x7db5('0x48')]({'where':{'id':_0x4c8c69[_0x7db5('0x3d')]['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0x39547c,null))['then'](removeEntity(_0x39547c,null))[_0x7db5('0x20')](handleError(_0x39547c,null));};exports[_0x7db5('0x4b')]=function(_0x2a736f,_0x544263){return db[_0x7db5('0x35')]['describe']()[_0x7db5('0x16')](respondWithResult(_0x544263,null))[_0x7db5('0x20')](handleError(_0x544263,null));};exports[_0x7db5('0x4c')]=function(_0x26df84,_0x37b671){var _0x56445c=_0x26df84[_0x7db5('0x3d')]['id'];var _0xf0e45d;var _0x2a89e2;var _0x1953e2;return db['ChatInteraction'][_0x7db5('0x4d')]({'where':{'id':_0x56445c}})[_0x7db5('0x16')](function(_0x16e5d2){_0xf0e45d=_0x16e5d2;return db[_0x7db5('0x4e')][_0x7db5('0x4d')]({'where':{'id':_0x16e5d2[_0x7db5('0x4f')]},'attributes':['id',_0x7db5('0x50'),_0x7db5('0x51'),_0x7db5('0x52'),_0x7db5('0x53'),_0x7db5('0x54')],'raw':!![]});})[_0x7db5('0x16')](function(_0x1fd725){if(_0x1fd725&&_0x1fd725[_0x7db5('0x50')]&&_0x1fd725[_0x7db5('0x51')]){_0x2a89e2=_0x1fd725;var _0xe92ca8={'interaction':{'id':_0x56445c},'agent':{'id':_0x26df84[_0x7db5('0x55')]['id'],'name':_0x26df84['user']['name'],'fullname':_0x26df84['user'][_0x7db5('0x56')],'email':_0x26df84['user']['email']},'contact':_0x26df84[_0x7db5('0x4a')][_0x7db5('0x30')],'account':_0x26df84[_0x7db5('0x4a')][_0x7db5('0x32')]};var _0x762c47={'rejectUnauthorized':![],'method':_0x7db5('0x57'),'url':_0x7db5('0x58'),'headers':{'X-APIKEY':_0x1fd725[_0x7db5('0x50')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x26df84['user'][_0x7db5('0x59')]],'buttons':null,'topic':_0x2a89e2[_0x7db5('0x52')],'note':_[_0x7db5('0x5a')](_0x2a89e2[_0x7db5('0x53')])?null:getMustacheRender(_0x2a89e2[_0x7db5('0x53')],_0xe92ca8),'metadata':null},'redirect':'follow','json':!![]};try{if(!_['isNull'](_0x2a89e2[_0x7db5('0x54')])){var _0x2e2dc5=getMustacheRender(_0x2a89e2[_0x7db5('0x54')],_0xe92ca8);var _0x41b66e=JSON[_0x7db5('0x5b')](_0x2e2dc5);_0x762c47[_0x7db5('0x4a')][_0x7db5('0x5c')]=_0x41b66e;}}catch(_0x38e97e){throw new db['Sequelize'][(_0x7db5('0x5d'))](_0x7db5('0x5e'));}return rp(_0x762c47);}else{throw new db[(_0x7db5('0x5f'))][(_0x7db5('0x5d'))](_0x7db5('0x60'));}})['then'](function(_0x493f1e){_0x1953e2=_0x493f1e;if(_0x1953e2['id']){var _0x25ef46={'body':_0x1953e2[_0x7db5('0x61')],'ChatWebsiteId':_0x2a89e2['id'],'ChatInteractionId':_0xf0e45d['id'],'direction':_0x7db5('0x62'),'UserId':_0x26df84[_0x7db5('0x55')]['id']};return db[_0x7db5('0x63')][_0x7db5('0x49')](_0x25ef46,{});}else{throw new db['Sequelize'][(_0x7db5('0x5d'))](_0x7db5('0x64'));}})[_0x7db5('0x16')](function(){return _0xf0e45d[_0x7db5('0x65')]({'vidaooSessionId':_0x1953e2['id']});})[_0x7db5('0x16')](respondWithResult(_0x37b671,null))['catch'](handleError(_0x37b671,null));};exports[_0x7db5('0x66')]=function(_0x5797df,_0x5959ac){if(_0x5797df[_0x7db5('0x4a')]['id']){delete _0x5797df[_0x7db5('0x4a')]['id'];}return db[_0x7db5('0x35')]['find']({'where':{'id':_0x5797df[_0x7db5('0x3d')]['id']},'include':[{'model':db['CmContact'],'as':_0x7db5('0x67')}]})[_0x7db5('0x16')](handleEntityNotFound(_0x5959ac,null))[_0x7db5('0x16')](saveUpdates(_0x5797df[_0x7db5('0x4a')],null))[_0x7db5('0x16')](respondWithResult(_0x5959ac,null))[_0x7db5('0x20')](handleError(_0x5959ac,null));};exports[_0x7db5('0x68')]=function(_0x13969d,_0x5554a5){if(_0x13969d['body']['id']){delete _0x13969d[_0x7db5('0x4a')]['id'];}return db[_0x7db5('0x35')][_0x7db5('0x48')]({'where':{'id':_0x13969d[_0x7db5('0x3d')]['id']}})[_0x7db5('0x16')](function(_0x5edd39){if(!_0x5edd39){logger['error'](_0x7db5('0x69'),_0x7db5('0x68'),0x194,_0x7db5('0x6a'));_0x5554a5[_0x7db5('0x21')](0x194);}else{if(_0x5edd39[_0x7db5('0x6b')]){throw new db[(_0x7db5('0x5f'))][(_0x7db5('0x5d'))](_0x7db5('0x6c'));}}return _0x5edd39;})[_0x7db5('0x16')](function(_0x3370cb){if(_0x3370cb){return _0x3370cb['update']({'closed':_0x13969d[_0x7db5('0x4a')][_0x7db5('0x6d')],'disposition':_0x13969d['body'][_0x7db5('0x6e')]})[_0x7db5('0x16')](function(_0x12c641){return _0x12c641;});}})[_0x7db5('0x16')](function(){return respondWithRpcPromise(_0x7db5('0x6f'),_0x7db5('0x68'),_0x13969d['body'],client9004);})[_0x7db5('0x16')](respondWithResult(_0x5554a5,null))[_0x7db5('0x20')](handleError(_0x5554a5,null));};exports[_0x7db5('0x70')]=function(_0x2cc072,_0x4c3352){_0x2cc072[_0x7db5('0x4a')][_0x7db5('0x2d')]=_0x2cc072[_0x7db5('0x71')][_0x7db5('0x72')];_0x2cc072[_0x7db5('0x4a')][_0x7db5('0x73')]=_0x2cc072['file']['filename'];_0x2cc072[_0x7db5('0x4a')]['type']=_0x2cc072[_0x7db5('0x71')][_0x7db5('0x74')];return db[_0x7db5('0x75')][_0x7db5('0x49')](_0x2cc072[_0x7db5('0x4a')])['then'](respondWithResult(_0x4c3352,0xc9))[_0x7db5('0x20')](handleError(_0x4c3352,null));};exports['attachmentDownload']=function(_0x5c1656,_0x1bcadb){return db[_0x7db5('0x35')][_0x7db5('0x4d')]({'where':{'id':_0x5c1656[_0x7db5('0x3d')]['id']},'raw':!![]})[_0x7db5('0x16')](handleEntityNotFound(_0x1bcadb,null))[_0x7db5('0x16')](function(_0x97a443){if(_0x97a443){if(_0x97a443[_0x7db5('0x6d')]){return _0x1bcadb[_0x7db5('0x23')](0x193)['json']({'status':0x193,'message':_0x7db5('0x76')});}return db[_0x7db5('0x75')]['findOne']({'where':{'id':_0x5c1656['query'][_0x7db5('0x77')]},'raw':!![]})[_0x7db5('0x16')](handleEntityNotFound(_0x1bcadb,null));}})[_0x7db5('0x16')](function(_0x52cb5b){if(_0x52cb5b){var _0x263579=_0x52cb5b[_0x7db5('0x78')]!==null;var _0x73fbe4=path['join'](config['root'],'server/files/attachments/');if(_0x263579){_0x73fbe4=path[_0x7db5('0x79')](_0x73fbe4,_0x7db5('0x7a'));}var _0x221963=path[_0x7db5('0x79')](_0x73fbe4,_0x52cb5b[_0x7db5('0x73')]);return _0x1bcadb['download'](_0x221963);}})['catch'](handleError(_0x1bcadb,null));};exports[_0x7db5('0x7b')]=function(_0x1a3312,_0xf48660){var _0x44599a=null;var _0x6e3460=null;var _0x411014=null;if(_0x1a3312[_0x7db5('0x4a')]['id']){delete _0x1a3312[_0x7db5('0x4a')]['id'];}if(_0x1a3312[_0x7db5('0x4a')][_0x7db5('0x7c')]){_0x411014=path[_0x7db5('0x79')](config['root'],_0x7db5('0x7d'),util[_0x7db5('0x7e')](_0x7db5('0x7f'),Date['now']()));_0x1a3312[_0x7db5('0x4a')][_0x7db5('0x80')]=_0x411014;}return db['ChatInteraction'][_0x7db5('0x48')]({'where':{'id':_0x1a3312[_0x7db5('0x3d')]['id']},'include':[{'model':db[_0x7db5('0x63')],'as':_0x7db5('0x81'),'include':[{'model':db[_0x7db5('0x82')],'as':_0x7db5('0x82')}]}]})[_0x7db5('0x16')](handleEntityNotFound(_0xf48660,null))[_0x7db5('0x16')](saveUpdates(_0x1a3312[_0x7db5('0x4a')],null))[_0x7db5('0x16')](function(_0x564b3e){if(_0x564b3e){_0x44599a=_0x564b3e;return db['ChatWebsite'][_0x7db5('0x48')]({'where':{'id':_0x44599a[_0x7db5('0x4f')]}});}})[_0x7db5('0x16')](function(_0x503f4a){if(_0x503f4a){_0x6e3460=_0x503f4a;return db[_0x7db5('0x83')]['find']({'where':{'id':_0x44599a[_0x7db5('0x84')]}});}})[_0x7db5('0x16')](function(_0x387aae){if(_0x387aae){if(_0x411014){var _0x298b68=null;for(var _0x2cb9cc=0x1;_0x2cb9cc<_0x44599a['Messages'][_0x7db5('0x44')];++_0x2cb9cc){_0x298b68=_0x44599a[_0x7db5('0x81')][_0x2cb9cc];var _0x14d134=_0x298b68[_0x7db5('0x6b')]?util['format'](_0x7db5('0x85'),_0x6e3460[_0x7db5('0x86')],_0x298b68[_0x7db5('0x6b')]):_0x7db5('0x87');var _0x588f09=_0x1a3312['body'][_0x7db5('0x88')]||util[_0x7db5('0x7e')]('%s%d',_0x7db5('0x89'),_0x298b68[_0x7db5('0x84')]);switch(_0x6e3460['agentIdentifier']){case _0x7db5('0x8a'):_0x14d134=_0x298b68[_0x7db5('0x6b')]?util[_0x7db5('0x7e')](_0x7db5('0x85'),_0x6e3460[_0x7db5('0x86')],_0x298b68[_0x7db5('0x6b')]):_0x7db5('0x87');break;case _0x7db5('0x8b'):_0x14d134=_0x298b68[_0x7db5('0x6b')]?_0x298b68[_0x7db5('0x82')][_0x7db5('0x8c')]||_0x298b68[_0x7db5('0x82')][_0x7db5('0x56')]:_0x7db5('0x87');break;case _0x7db5('0x8d'):_0x14d134=_0x298b68[_0x7db5('0x6b')]?_0x298b68[_0x7db5('0x82')]['fullname']:_0x7db5('0x87');break;default:_0x14d134=_0x298b68[_0x7db5('0x6b')]?util[_0x7db5('0x7e')](_0x7db5('0x85'),_0x6e3460['agentAlias'],_0x298b68[_0x7db5('0x6b')]):_0x7db5('0x87');}var _0x28c856=util[_0x7db5('0x7e')]('[%s]\x20%s:\x20%s\x0a',moment(_0x298b68[_0x7db5('0x8e')])[_0x7db5('0x7e')](_0x7db5('0x8f')),_0x298b68[_0x7db5('0x90')]==='in'?_0x588f09:_0x14d134,_0x298b68[_0x7db5('0x4a')]);if(!_0x298b68[_0x7db5('0x91')]){fs['appendFileSync'](_0x411014,_0x28c856);}}return db[_0x7db5('0x92')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x7db5('0x93')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x7db5('0x94'),'raw':!![]}]}]});}}})[_0x7db5('0x16')](function(_0x49704a){if(!_0x49704a||!_0x49704a[_0x7db5('0x95')]||!_0x1a3312[_0x7db5('0x4a')])return _0x44599a;var _0x1ba3f7=_0x49704a['getSmtpOptions']();return respondWithRpcPromise(_0x7db5('0x96'),_0x7db5('0x97'),{'account':_0x1ba3f7,'message':{'from':util[_0x7db5('0x7e')](_0x7db5('0x98'),_0x49704a[_0x7db5('0x2d')],_0x49704a[_0x7db5('0x59')]||_0x49704a[_0x7db5('0x95')][_0x7db5('0x55')]),'to':_0x1a3312[_0x7db5('0x4a')]['mailTranscript'],'subject':_0x7db5('0x99'),'text':util[_0x7db5('0x7e')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x1a3312[_0x7db5('0x4a')][_0x7db5('0x7c')]),'attachments':[{'path':_0x411014}]}})[_0x7db5('0x16')](function(){return _0x44599a;})[_0x7db5('0x20')](function(_0x1b3758){logger[_0x7db5('0x1c')](_0x1b3758);});})[_0x7db5('0x16')](respondWithStatusCode(_0xf48660,0xc8))[_0x7db5('0x20')](handleError(_0xf48660,null));};exports['addMessage']=function(_0x379fd3,_0x3cafa8){return db[_0x7db5('0x63')][_0x7db5('0x48')]({'where':{'id':_0x379fd3['params']['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0x3cafa8,null))[_0x7db5('0x16')](function(_0x2fa113){if(_0x2fa113){return _0x2fa113[_0x7db5('0x9a')](_0x379fd3[_0x7db5('0x4a')][_0x7db5('0x9b')],_[_0x7db5('0x9c')](_0x379fd3['body'],[_0x7db5('0x9b'),'id'])||{});}})[_0x7db5('0x16')](respondWithResult(_0x3cafa8,null))['catch'](handleError(_0x3cafa8,null));};exports['getMessages']=function(_0x3a4a29,_0xd24021){var _0x51cdbe={'raw':![],'where':{}};var _0x144c80={};var _0x49e7d9={'count':0x0,'rows':[]};return db[_0x7db5('0x35')][_0x7db5('0x4d')]({'where':{'id':_0x3a4a29['params']['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0xd24021,null))[_0x7db5('0x16')](function(_0x23f108){if(_0x23f108){_0x144c80[_0x7db5('0x3e')]=_[_0x7db5('0x3f')](db[_0x7db5('0x63')][_0x7db5('0x36')]);_0x144c80[_0x7db5('0x3b')]=_[_0x7db5('0x3f')](_0x3a4a29[_0x7db5('0x3b')]);_0x144c80[_0x7db5('0x40')]=_[_0x7db5('0x41')](_0x144c80[_0x7db5('0x3e')],_0x144c80[_0x7db5('0x3b')]);_0x51cdbe[_0x7db5('0x42')]=_[_0x7db5('0x41')](_0x144c80[_0x7db5('0x3e')],qs[_0x7db5('0x43')](_0x3a4a29[_0x7db5('0x3b')]['fields']));_0x51cdbe[_0x7db5('0x42')]=_0x51cdbe[_0x7db5('0x42')][_0x7db5('0x44')]?_0x51cdbe['attributes']:_0x144c80[_0x7db5('0x3e')];if(!_0x3a4a29[_0x7db5('0x3b')][_0x7db5('0x9d')](_0x7db5('0x9e'))){_0x51cdbe[_0x7db5('0x27')]=qs['limit'](_0x3a4a29[_0x7db5('0x3b')]['limit']);_0x51cdbe[_0x7db5('0x25')]=qs[_0x7db5('0x25')](_0x3a4a29[_0x7db5('0x3b')]['offset']);}_0x51cdbe[_0x7db5('0x9f')]=qs[_0x7db5('0xa0')](_0x3a4a29[_0x7db5('0x3b')][_0x7db5('0xa0')]);_0x51cdbe['where']=qs['filters'](_[_0x7db5('0xa1')](_0x3a4a29[_0x7db5('0x3b')],_0x144c80['filters']));_0x51cdbe[_0x7db5('0xa2')]['ChatInteractionId']=_0x23f108['id'];if(_0x3a4a29['query']['filter']){_0x51cdbe[_0x7db5('0xa2')]=_[_0x7db5('0x2f')](_0x51cdbe[_0x7db5('0xa2')],{'$or':_[_0x7db5('0x34')](_0x51cdbe[_0x7db5('0x42')],function(_0xd05228){var _0x57037e={};_0x57037e[_0xd05228]={'$like':'%'+_0x3a4a29[_0x7db5('0x3b')]['filter']+'%'};return _0x57037e;})});}if(_0x3a4a29[_0x7db5('0x3b')][_0x7db5('0xa3')]){var _0x3fa291=_0x3a4a29[_0x7db5('0x3b')][_0x7db5('0xa3')][_0x7db5('0xa4')](',');var _0x423962={};_0x423962[_0x3fa291[0x0]]={'$gte':moment(_0x3fa291[0x1])[_0x7db5('0x7e')](_0x7db5('0xa5'))};_0x51cdbe['where']=_[_0x7db5('0x2f')](_0x51cdbe['where'],_0x423962);}_0x51cdbe=_['merge']({},_0x51cdbe,_0x3a4a29[_0x7db5('0x47')]);return db[_0x7db5('0x63')][_0x7db5('0x28')]({'where':_0x51cdbe['where']})['then'](function(_0xb0960e){_0x49e7d9[_0x7db5('0x28')]=_0xb0960e;if(_0x3a4a29['query'][_0x7db5('0x45')]){_0x51cdbe[_0x7db5('0x46')]=[{'all':!![]}];}return db[_0x7db5('0x63')][_0x7db5('0xa6')](_0x51cdbe);})[_0x7db5('0x16')](function(_0x3e9103){_0x49e7d9[_0x7db5('0xa7')]=_0x3e9103;return _0x49e7d9;});}})[_0x7db5('0x16')](respondWithFilteredResult(_0xd24021,_0x51cdbe))[_0x7db5('0x20')](handleError(_0xd24021,null));};exports[_0x7db5('0xa8')]=function(_0x3f0265,_0x3a603c){var _0x99b63d={'where':{}},_0x24ada8={},_0x146d48={'count':0x0,'rows':[]};return db[_0x7db5('0x35')][_0x7db5('0x4d')]({'where':{'id':_0x3f0265['params']['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0x3a603c,null))[_0x7db5('0x16')](function(_0x74f09d){if(_0x74f09d){_0x24ada8[_0x7db5('0x3e')]=_[_0x7db5('0x3f')](db['ChatMessage']['rawAttributes']);_0x24ada8[_0x7db5('0x3b')]=_['keys'](_0x3f0265['query']);_0x24ada8[_0x7db5('0x40')]=_[_0x7db5('0x41')](_0x24ada8['model'],_0x24ada8['query']);_0x99b63d[_0x7db5('0x42')]=_['intersection'](_0x24ada8['model'],qs['fields'](_0x3f0265[_0x7db5('0x3b')][_0x7db5('0x43')]));_0x99b63d[_0x7db5('0x42')]=_0x99b63d['attributes']['length']?_0x99b63d[_0x7db5('0x42')]:_0x24ada8['model'];if(!_0x3f0265['query'][_0x7db5('0x9d')](_0x7db5('0x9e'))){_0x99b63d[_0x7db5('0x27')]=qs['limit'](_0x3f0265[_0x7db5('0x3b')][_0x7db5('0x27')]);_0x99b63d[_0x7db5('0x25')]=qs[_0x7db5('0x25')](_0x3f0265['query'][_0x7db5('0x25')]);}_0x99b63d['order']=qs[_0x7db5('0xa0')](_0x3f0265['query'][_0x7db5('0xa0')]);_0x99b63d[_0x7db5('0xa2')]=qs[_0x7db5('0x40')](_[_0x7db5('0xa1')](_0x3f0265[_0x7db5('0x3b')],_0x24ada8[_0x7db5('0x40')]));_0x99b63d[_0x7db5('0xa2')][_0x7db5('0xa9')]=_0x74f09d['id'];if(_0x3f0265['query'][_0x7db5('0xaa')]){_0x99b63d['where']=_[_0x7db5('0x2f')](_0x99b63d[_0x7db5('0xa2')],{'$or':_[_0x7db5('0x34')](_0x99b63d[_0x7db5('0x42')],function(_0x21562a){var _0x237c91={};_0x237c91[_0x21562a]={'$like':'%'+_0x3f0265[_0x7db5('0x3b')]['filter']+'%'};return _0x237c91;})});}_0x99b63d[_0x7db5('0xa2')][_0x7db5('0x91')]=![];if(_0x3f0265[_0x7db5('0x3b')]['id']){_0x99b63d[_0x7db5('0xa2')]['id']={'$gt':_0x3f0265[_0x7db5('0x3b')]['id']};}_0x99b63d=_[_0x7db5('0x2f')]({},_0x99b63d,_0x3f0265['options']);return db[_0x7db5('0x63')]['count']({'where':_0x99b63d[_0x7db5('0xa2')]})[_0x7db5('0x16')](function(_0x1edc0d){_0x146d48[_0x7db5('0x28')]=_0x1edc0d;_0x99b63d['include']=[];if(_0x3f0265['query'][_0x7db5('0xab')]){_0x99b63d[_0x7db5('0x46')][_0x7db5('0xac')]({'model':db[_0x7db5('0x82')],'as':_0x7db5('0x82'),'attributes':['id',_0x7db5('0x56'),_0x7db5('0x8c')]});}if(_0x3f0265[_0x7db5('0x3b')][_0x7db5('0x45')]){_0x99b63d[_0x7db5('0x46')]=[{'all':!![]}];}return db[_0x7db5('0x63')][_0x7db5('0xa6')](_0x99b63d);})[_0x7db5('0x16')](function(_0x487c96){_0x146d48[_0x7db5('0xa7')]=_0x487c96;return _0x146d48;});}})[_0x7db5('0x16')](respondWithFilteredResult(_0x3a603c,_0x99b63d))[_0x7db5('0x20')](handleError(_0x3a603c,null));};exports[_0x7db5('0xad')]=function(_0x38832f,_0x3fa660){return db['ChatInteraction']['find']({'where':{'id':_0x38832f[_0x7db5('0x3d')]['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0x3fa660,null))['then'](function(_0x5bf09b){if(_0x5bf09b){return _0x5bf09b[_0x7db5('0xae')](_0x38832f['body'][_0x7db5('0x9b')],_[_0x7db5('0x9c')](_0x38832f[_0x7db5('0x4a')],['ids','id'])||{})[_0x7db5('0xaf')](function(){return db[_0x7db5('0xb0')]['findAll']({'attributes':['id','name',_0x7db5('0xb1')],'where':{'id':_0x38832f[_0x7db5('0x4a')][_0x7db5('0x9b')]}});})['then'](function(_0x486762){socket['emit'](_0x7db5('0xb2'),{'id':Number(_0x38832f[_0x7db5('0x3d')]['id']),'tags':_0x486762||[]});return{'id':Number(_0x38832f[_0x7db5('0x3d')]['id']),'tags':_0x486762||[]};});}})[_0x7db5('0x16')](respondWithResult(_0x3fa660,null))[_0x7db5('0x20')](handleError(_0x3fa660,null));};exports[_0x7db5('0xb3')]=function(_0x46221a,_0x35e2e4){return db[_0x7db5('0x35')][_0x7db5('0x48')]({'where':{'id':_0x46221a[_0x7db5('0x3d')]['id']}})[_0x7db5('0x16')](handleEntityNotFound(_0x35e2e4,null))['then'](function(_0x19add9){if(_0x19add9){return _0x19add9[_0x7db5('0xb3')](_0x46221a[_0x7db5('0x3b')]['ids']);}})[_0x7db5('0x16')](respondWithStatusCode(_0x35e2e4,null))[_0x7db5('0x20')](handleError(_0x35e2e4,null));};exports['download']=function(_0xe1dd4e,_0x1eac1a){var _0x1c416f=moment()[_0x7db5('0xb4')]()[_0x7db5('0xb5')]();var _0x3bbc93=path[_0x7db5('0x79')](config['root'],'server',_0x7db5('0xb6'),_0x7db5('0xb7'));var _0x384e3b=path[_0x7db5('0x79')](config['root'],'server',_0x7db5('0xb6'),_0x7db5('0xb8'));var _0x437842=path[_0x7db5('0x79')](_0x3bbc93,_0x1c416f);var _0x13d8bf=util['format'](_0x7db5('0xb9'),_0xe1dd4e['params']['id'],_0x1c416f);var _0x5401d1=path['join'](_0x3bbc93,_0x13d8bf);var _0xc4a283=[];_0xc4a283[_0x7db5('0xac')]({'model':db[_0x7db5('0x82')],'as':_0x7db5('0x82'),'attributes':['id',_0x7db5('0x56')],'raw':!![]});_0xc4a283[_0x7db5('0xac')]({'model':db[_0x7db5('0x83')],'as':_0x7db5('0x67'),'attributes':['id',_0x7db5('0xba'),_0x7db5('0xbb')],'raw':!![]});if(_0xe1dd4e['query'][_0x7db5('0xb8')]){_0xc4a283[_0x7db5('0xac')]({'model':db[_0x7db5('0x75')],'as':'Attachment','raw':!![]});}var _0x138eef=[{'model':db['ChatMessage'],'as':_0x7db5('0x81'),'attributes':['id',_0x7db5('0x4a'),_0x7db5('0x8e'),_0x7db5('0x90'),'secret','read'],'include':_0xc4a283}];_0x138eef['push']({'model':db[_0x7db5('0x4e')],'as':_0x7db5('0xbc'),'attributes':['id',_0x7db5('0x2d')]});_0x138eef['push']({'model':db['User'],'as':_0x7db5('0xbd'),'attributes':['id',_0x7db5('0x56')]});return db['ChatInteraction'][_0x7db5('0x48')]({'where':{'id':_0xe1dd4e[_0x7db5('0x3d')]['id']},'include':_0x138eef})[_0x7db5('0x16')](handleEntityNotFound(_0x1eac1a,null))[_0x7db5('0x16')](function(_0x49d0c6){if(_0x49d0c6){var _0x5553d2=_0x49d0c6[_0x7db5('0xbe')]({'plain':!![]});fs[_0x7db5('0xbf')](_0x437842);var _0x5a6ac5={'channel':_0x7db5('0xc0'),'account':_0x5553d2[_0x7db5('0xbc')][_0x7db5('0x2d')],'agent':_0x5553d2['Owner']?_0x5553d2[_0x7db5('0xbd')][_0x7db5('0x56')]:'N.A.','createdAt':moment(_0x5553d2[_0x7db5('0x8e')])['format'](_0x7db5('0xa5'))[_0x7db5('0xb5')](),'closedAt':_0x5553d2[_0x7db5('0x6d')]?moment(_0x5553d2[_0x7db5('0xc1')])[_0x7db5('0x7e')](_0x7db5('0xa5'))[_0x7db5('0xb5')]():'','disposition':_0x5553d2[_0x7db5('0x6e')],'chatInfo':{'browser':_0x5553d2['browserName'],'os':_0x5553d2[_0x7db5('0xc2')],'referer':_0x5553d2['referer'],'customerIp':_0x5553d2[_0x7db5('0xc3')],'customerPort':_0x5553d2[_0x7db5('0xc4')]?_0x5553d2[_0x7db5('0xc4')]:_0x7db5('0xc5')},'messages':_(_0x5553d2[_0x7db5('0x81')])[_0x7db5('0xc6')]()[_0x7db5('0xaa')]({'secret':![]})[_0x7db5('0x34')](function(_0x50c8ba){if(_0x50c8ba[_0x7db5('0x75')]){var _0x5c88a8=path[_0x7db5('0x79')](_0x384e3b,_0x50c8ba[_0x7db5('0x75')]['basename']);if(fs[_0x7db5('0xc7')](_0x5c88a8)){fs[_0x7db5('0xc8')](_0x5c88a8)[_0x7db5('0xc9')](fs[_0x7db5('0xca')](path[_0x7db5('0x79')](_0x437842,_0x50c8ba[_0x7db5('0x75')][_0x7db5('0x73')])));}}return{'date':moment(_0x50c8ba[_0x7db5('0x8e')])[_0x7db5('0x7e')](_0x7db5('0xa5'))[_0x7db5('0xb5')](),'sender':_0x50c8ba[_0x7db5('0x90')]===_0x7db5('0x62')?_0x50c8ba['User']?_0x50c8ba[_0x7db5('0x82')][_0x7db5('0x56')]:_0x7db5('0x87'):_0x50c8ba[_0x7db5('0x67')][_0x7db5('0xba')]+(_0x50c8ba[_0x7db5('0x67')][_0x7db5('0xbb')]?'\x20'+_0x50c8ba['Contact'][_0x7db5('0xbb')]:''),'body':_0x50c8ba[_0x7db5('0x75')]?_0x50c8ba[_0x7db5('0x75')][_0x7db5('0x73')]:_0x50c8ba[_0x7db5('0x4a')],'direction':_0x50c8ba[_0x7db5('0x90')]===_0x7db5('0x62')?'A':'C','secret':_0x50c8ba['secret'],'read':_0x50c8ba[_0x7db5('0xcb')],'attachment':_0x50c8ba[_0x7db5('0x75')]};})[_0x7db5('0xcc')]()};return ejs['renderFile'](path['join'](config[_0x7db5('0xcd')],_0x7db5('0xce'),_0x7db5('0xcf'),'downloadInteraction.ejs'),{'interaction':_0x5a6ac5})[_0x7db5('0x16')](function(_0x34ea7a){var _0x397f0b=path[_0x7db5('0x79')](_0x437842,_0x7db5('0xd0')+_0x5553d2['id']+'-'+_0x1c416f+_0x7db5('0xd1'));var _0x509fa9={'path':_0x397f0b,'channel':_0x7db5('0xc0'),'interactionId':_0x5553d2['id']};return pdf[_0x7db5('0xd2')](_0x34ea7a,_0x509fa9);})[_0x7db5('0x16')](function(){return new Promise(function(_0x2c50a2,_0x4bba61){zipdir(_0x437842,{'saveTo':_0x5401d1},function(_0x23b9ea,_0x5e9215){if(_0x23b9ea)return _0x4bba61(_0x23b9ea);return _0x2c50a2(_0x5e9215);});})['then'](function(){return new BPromise(function(_0x393632,_0x227be3){rimraf(_0x437842,function(_0x404a7a){if(_0x404a7a)_0x227be3(_0x404a7a);return _0x393632();});});})[_0x7db5('0x16')](function(){return _0x1eac1a[_0x7db5('0xd3')](_0x5401d1,_0x13d8bf,function(_0x259a6c){if(_0x259a6c){logger[_0x7db5('0x1c')](_0x7db5('0xd4'),_0x259a6c);}else{fs[_0x7db5('0xd5')](_0x5401d1);}});});});}else{return _0x1eac1a['sendStatus'](0xc8);}})[_0x7db5('0x20')](handleError(_0x1eac1a,null));};
\ No newline at end of file
index 2a849c3..30dd221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45dc=['then','map','findAll','setDataValue','length','emit','hook','events','../../mysqldb','ChatInteraction','ChatMessage','update','remove','getUsers'];(function(_0x1d14de,_0x1025fa){var _0x275f5b=function(_0x1ed993){while(--_0x1ed993){_0x1d14de['push'](_0x1d14de['shift']());}};_0x275f5b(++_0x1025fa);}(_0x45dc,0xd9));var _0xc45d=function(_0x4093cd,_0x253b9c){_0x4093cd=_0x4093cd-0x0;var _0x2aa9af=_0x45dc[_0x4093cd];return _0x2aa9af;};'use strict';var EventEmitter=require(_0xc45d('0x0'));var ChatInteraction=require(_0xc45d('0x1'))['db'][_0xc45d('0x2')];var ChatMessage=require(_0xc45d('0x1'))['db'][_0xc45d('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc45d('0x4'),'afterDestroy':_0xc45d('0x5')};function emitEvent(_0xa41ae8){return function(_0x466b2b,_0x322f64,_0x581fdd){_0x466b2b[_0xc45d('0x6')]({'attributes':['id'],'raw':!![]})[_0xc45d('0x7')](function(_0x443659){_0x466b2b['setDataValue']('Users',_0x443659[_0xc45d('0x8')](function(_0x3a62d9){return{'id':_0x3a62d9['id']};}));return ChatMessage[_0xc45d('0x9')]({'where':{'ChatInteractionId':_0x466b2b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc45d('0x7')](function(_0x4f009d){_0x466b2b[_0xc45d('0xa')]('unreadMessages',_0x4f009d[_0xc45d('0xb')]);ChatInteractionEvents[_0xc45d('0xc')](_0xa41ae8+':'+_0x466b2b['id'],_0x466b2b);ChatInteractionEvents[_0xc45d('0xc')](_0xa41ae8,_0x466b2b);_0x581fdd(null);})['catch'](_0x581fdd(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0xc45d('0xd')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x622e=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage'];(function(_0x2d0585,_0x375acc){var _0x17fc98=function(_0x879b49){while(--_0x879b49){_0x2d0585['push'](_0x2d0585['shift']());}};_0x17fc98(++_0x375acc);}(_0x622e,0x12e));var _0xe622=function(_0x261038,_0x2fab28){_0x261038=_0x261038-0x0;var _0x2fd230=_0x622e[_0x261038];return _0x2fd230;};'use strict';var EventEmitter=require(_0xe622('0x0'));var ChatInteraction=require(_0xe622('0x1'))['db'][_0xe622('0x2')];var ChatMessage=require('../../mysqldb')['db'][_0xe622('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xe622('0x4')](0x0);var events={'afterCreate':_0xe622('0x5'),'afterUpdate':_0xe622('0x6'),'afterDestroy':_0xe622('0x7')};function emitEvent(_0x33f20e){return function(_0x1e1c2d,_0x3bfe6f,_0x425a15){_0x1e1c2d[_0xe622('0x8')]({'attributes':['id'],'raw':!![]})[_0xe622('0x9')](function(_0x2b5d14){_0x1e1c2d[_0xe622('0xa')](_0xe622('0xb'),_0x2b5d14[_0xe622('0xc')](function(_0x1472c6){return{'id':_0x1472c6['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x1e1c2d['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe622('0x9')](function(_0xebf433){_0x1e1c2d[_0xe622('0xa')]('unreadMessages',_0xebf433[_0xe622('0xd')]);ChatInteractionEvents['emit'](_0x33f20e+':'+_0x1e1c2d['id'],_0x1e1c2d);ChatInteractionEvents[_0xe622('0xe')](_0x33f20e,_0x1e1c2d);_0x425a15(null);})['catch'](_0x425a15(null));};}for(var e in events){if(events[_0xe622('0xf')](e)){var event=events[e];ChatInteraction[_0xe622('0x10')](e,emitEvent(event));}}module[_0xe622('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index 05d7656..09a3cc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987d=['api','moment','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','ChatInteraction','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x574724,_0x3547cd){var _0x55a74a=function(_0x355494){while(--_0x355494){_0x574724['push'](_0x574724['shift']());}};_0x55a74a(++_0x3547cd);}(_0x987d,0xb2));var _0xd987=function(_0xa5a3c0,_0x1113e8){_0xa5a3c0=_0xa5a3c0-0x0;var _0x5816d5=_0x987d[_0xa5a3c0];return _0x5816d5;};'use strict';var _=require('lodash');var util=require(_0xd987('0x0'));var logger=require(_0xd987('0x1'))(_0xd987('0x2'));var moment=require(_0xd987('0x3'));var BPromise=require('bluebird');var rp=require(_0xd987('0x4'));var fs=require('fs');var path=require(_0xd987('0x5'));var rimraf=require(_0xd987('0x6'));var config=require(_0xd987('0x7'));var attributes=require(_0xd987('0x8'));module[_0xd987('0x9')]=function(_0x3dcf40,_0x3b102f){return _0x3dcf40['define'](_0xd987('0xa'),attributes,{'tableName':_0xd987('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x512a2d,_0x4f8236,_0x6d417e){if(_0x512a2d[_0xd987('0xc')]('closed')){_0x512a2d[_0xd987('0xd')]=moment()[_0xd987('0xe')](_0xd987('0xf'));}_0x6d417e(null,_0x512a2d);}},'charset':_0xd987('0x10'),'collate':_0xd987('0x11')});};
\ No newline at end of file
+var _0xe884=['define','ChatInteraction','chat_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','request-promise','rimraf','../../config/environment','./chatInteraction.attributes','exports'];(function(_0x5679da,_0x1e2706){var _0x45d510=function(_0x10cce7){while(--_0x10cce7){_0x5679da['push'](_0x5679da['shift']());}};_0x45d510(++_0x1e2706);}(_0xe884,0x80));var _0x4e88=function(_0x1e37eb,_0x2f66c9){_0x1e37eb=_0x1e37eb-0x0;var _0x4fc4a0=_0xe884[_0x1e37eb];return _0x4fc4a0;};'use strict';var _=require('lodash');var util=require(_0x4e88('0x0'));var logger=require(_0x4e88('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4e88('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4e88('0x3'));var config=require(_0x4e88('0x4'));var attributes=require(_0x4e88('0x5'));module[_0x4e88('0x6')]=function(_0x51ae5a,_0x19e523){return _0x51ae5a[_0x4e88('0x7')](_0x4e88('0x8'),attributes,{'tableName':_0x4e88('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x30aed4,_0x5e2579,_0x327bd4){if(_0x30aed4['changed']('closed')){_0x30aed4[_0x4e88('0xa')]=moment()[_0x4e88('0xb')](_0x4e88('0xc'));}_0x327bd4(null,_0x30aed4);}},'charset':_0x4e88('0xd'),'collate':_0x4e88('0xe')});};
\ No newline at end of file
index c324c73..2bf1ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e78=['stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','info','result','catch','UpdateChatInteraction','ChatInteraction','body','options','raw','attributes','then','addTags','ids','omit','spread','AddTags','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x3d7fa1,_0x340c0e){var _0x4f5e46=function(_0x587608){while(--_0x587608){_0x3d7fa1['push'](_0x3d7fa1['shift']());}};_0x4f5e46(++_0x340c0e);}(_0x2e78,0xa4));var _0x82e7=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2e78[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x82e7('0x0'));var BPromise=require(_0x82e7('0x1'));var rs=require(_0x82e7('0x2'));var fs=require('fs');var Redis=require(_0x82e7('0x3'));var db=require(_0x82e7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x82e7('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x82e7('0x6'));var client=jayson['client'][_0x82e7('0x7')]({'port':0x232a});config[_0x82e7('0x8')]=_['defaults'](config[_0x82e7('0x8')],{'host':_0x82e7('0x9'),'port':0x18eb});var socket=require(_0x82e7('0xa'))(new Redis(config[_0x82e7('0x8')]));require(_0x82e7('0xb'))[_0x82e7('0xc')](socket);function respondWithRpcPromise(_0x5dec8c,_0x8e5b3d,_0x36ee09){return new BPromise(function(_0xe57e3f,_0x121075){return client['request'](_0x5dec8c,_0x36ee09)['then'](function(_0x43121f){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x8e5b3d,_0x82e7('0xd'));logger[_0x82e7('0xe')](_0x82e7('0xf'),_0x8e5b3d,_0x82e7('0xd'),JSON[_0x82e7('0x10')](_0x43121f));if(_0x43121f[_0x82e7('0x11')]){if(_0x43121f['error'][_0x82e7('0x12')]===0x1f4){logger[_0x82e7('0x11')](_0x82e7('0x13'),_0x8e5b3d,_0x43121f[_0x82e7('0x11')][_0x82e7('0x14')]);return _0x121075(_0x43121f[_0x82e7('0x11')]['message']);}logger['error'](_0x82e7('0x13'),_0x8e5b3d,_0x43121f[_0x82e7('0x11')][_0x82e7('0x14')]);return _0xe57e3f(_0x43121f[_0x82e7('0x11')]['message']);}else{logger[_0x82e7('0x15')](_0x82e7('0x13'),_0x8e5b3d,'request\x20sent');_0xe57e3f(_0x43121f[_0x82e7('0x16')][_0x82e7('0x14')]);}})[_0x82e7('0x17')](function(_0x211103){logger['error'](_0x82e7('0x13'),_0x8e5b3d,_0x211103);_0x121075(_0x211103);});});}exports[_0x82e7('0x18')]=function(_0x929757){var _0x543683=this;return new Promise(function(_0x3991ba,_0x2a6aa5){return db[_0x82e7('0x19')]['update'](_0x929757[_0x82e7('0x1a')],{'raw':_0x929757[_0x82e7('0x1b')]?_0x929757[_0x82e7('0x1b')][_0x82e7('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x929757[_0x82e7('0x1b')]?_0x929757[_0x82e7('0x1b')]['where']||null:null,'attributes':_0x929757[_0x82e7('0x1b')]?_0x929757[_0x82e7('0x1b')][_0x82e7('0x1d')]||null:null,'limit':_0x929757[_0x82e7('0x1b')]?_0x929757[_0x82e7('0x1b')]['limit']||null:null})[_0x82e7('0x1e')](function(_0x2749b5){logger[_0x82e7('0x15')](_0x82e7('0x18'),_0x929757);logger[_0x82e7('0xe')](_0x82e7('0x18'),_0x929757,JSON['stringify'](_0x2749b5));_0x3991ba(_0x2749b5);})[_0x82e7('0x17')](function(_0x33c2fb){logger['error'](_0x82e7('0x18'),_0x33c2fb[_0x82e7('0x14')],_0x929757);_0x2a6aa5(_0x543683[_0x82e7('0x11')](0x1f4,_0x33c2fb['message']));});});};exports['AddTagsToChatInteraction']=function(_0x57f793){return new Promise(function(_0x435294,_0x1387de){return db[_0x82e7('0x19')]['find']({'where':_0x57f793[_0x82e7('0x1b')]?_0x57f793[_0x82e7('0x1b')]['where']||null:null})['then'](function(_0x1e0d51){if(_0x1e0d51){return _0x1e0d51[_0x82e7('0x1f')](_0x57f793[_0x82e7('0x1a')][_0x82e7('0x20')],_[_0x82e7('0x21')](_0x57f793['body'],['ids','id'])||{});}})[_0x82e7('0x22')](function(_0x12de90){logger['info']('AddTags',_0x57f793);logger[_0x82e7('0xe')](_0x82e7('0x23'),_0x57f793,JSON[_0x82e7('0x10')](_0x12de90));_0x435294(_0x12de90);})['catch'](function(_0x1a9b9e){logger[_0x82e7('0x11')](_0x82e7('0x23'),_0x1a9b9e['message'],_0x57f793);_0x1387de(_this[_0x82e7('0x11')](0x1f4,_0x1a9b9e[_0x82e7('0x14')]));});});};
\ No newline at end of file
+var _0x04f0=['ChatInteraction','update','body','options','raw','where','attributes','UpdateChatInteraction','addTags','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch'];(function(_0x55448c,_0x174be9){var _0x3b6b3a=function(_0x1ac9e0){while(--_0x1ac9e0){_0x55448c['push'](_0x55448c['shift']());}};_0x3b6b3a(++_0x174be9);}(_0x04f0,0x175));var _0x004f=function(_0x255692,_0x582d28){_0x255692=_0x255692-0x0;var _0x4e6796=_0x04f0[_0x255692];return _0x4e6796;};'use strict';var _=require(_0x004f('0x0'));var util=require(_0x004f('0x1'));var moment=require(_0x004f('0x2'));var BPromise=require('bluebird');var rs=require(_0x004f('0x3'));var fs=require('fs');var Redis=require(_0x004f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x004f('0x5'))(_0x004f('0x6'));var config=require('../../config/environment');var jayson=require(_0x004f('0x7'));var client=jayson[_0x004f('0x8')][_0x004f('0x9')]({'port':0x232a});config[_0x004f('0xa')]=_[_0x004f('0xb')](config[_0x004f('0xa')],{'host':_0x004f('0xc'),'port':0x18eb});var socket=require(_0x004f('0xd'))(new Redis(config[_0x004f('0xa')]));require('./chatInteraction.socket')[_0x004f('0xe')](socket);function respondWithRpcPromise(_0xb60ac4,_0x477c3a,_0x4542e7){return new BPromise(function(_0x2dca60,_0x524e68){return client[_0x004f('0xf')](_0xb60ac4,_0x4542e7)[_0x004f('0x10')](function(_0x2648f2){logger['info'](_0x004f('0x11'),_0x477c3a,_0x004f('0x12'));logger[_0x004f('0x13')](_0x004f('0x14'),_0x477c3a,_0x004f('0x12'),JSON[_0x004f('0x15')](_0x2648f2));if(_0x2648f2[_0x004f('0x16')]){if(_0x2648f2[_0x004f('0x16')]['code']===0x1f4){logger['error'](_0x004f('0x11'),_0x477c3a,_0x2648f2[_0x004f('0x16')][_0x004f('0x17')]);return _0x524e68(_0x2648f2[_0x004f('0x16')][_0x004f('0x17')]);}logger[_0x004f('0x16')](_0x004f('0x11'),_0x477c3a,_0x2648f2['error'][_0x004f('0x17')]);return _0x2dca60(_0x2648f2[_0x004f('0x16')][_0x004f('0x17')]);}else{logger[_0x004f('0x18')](_0x004f('0x11'),_0x477c3a,_0x004f('0x12'));_0x2dca60(_0x2648f2[_0x004f('0x19')][_0x004f('0x17')]);}})[_0x004f('0x1a')](function(_0x307bb5){logger[_0x004f('0x16')](_0x004f('0x11'),_0x477c3a,_0x307bb5);_0x524e68(_0x307bb5);});});}exports['UpdateChatInteraction']=function(_0x23320b){var _0x5cf750=this;return new Promise(function(_0x5661eb,_0x572a71){return db[_0x004f('0x1b')][_0x004f('0x1c')](_0x23320b[_0x004f('0x1d')],{'raw':_0x23320b['options']?_0x23320b[_0x004f('0x1e')][_0x004f('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23320b['options']?_0x23320b[_0x004f('0x1e')][_0x004f('0x20')]||null:null,'attributes':_0x23320b[_0x004f('0x1e')]?_0x23320b['options'][_0x004f('0x21')]||null:null,'limit':_0x23320b[_0x004f('0x1e')]?_0x23320b[_0x004f('0x1e')]['limit']||null:null})[_0x004f('0x10')](function(_0x59ae5d){logger['info'](_0x004f('0x22'),_0x23320b);logger[_0x004f('0x13')](_0x004f('0x22'),_0x23320b,JSON[_0x004f('0x15')](_0x59ae5d));_0x5661eb(_0x59ae5d);})[_0x004f('0x1a')](function(_0x10d5e6){logger['error'](_0x004f('0x22'),_0x10d5e6[_0x004f('0x17')],_0x23320b);_0x572a71(_0x5cf750[_0x004f('0x16')](0x1f4,_0x10d5e6[_0x004f('0x17')]));});});};exports['AddTagsToChatInteraction']=function(_0x1631b7){return new Promise(function(_0x3d5a6e,_0x11cc81){return db[_0x004f('0x1b')]['find']({'where':_0x1631b7[_0x004f('0x1e')]?_0x1631b7[_0x004f('0x1e')][_0x004f('0x20')]||null:null})['then'](function(_0x214641){if(_0x214641){return _0x214641[_0x004f('0x23')](_0x1631b7[_0x004f('0x1d')][_0x004f('0x24')],_[_0x004f('0x25')](_0x1631b7[_0x004f('0x1d')],[_0x004f('0x24'),'id'])||{});}})[_0x004f('0x26')](function(_0x399e8d){logger[_0x004f('0x18')](_0x004f('0x27'),_0x1631b7);logger['debug'](_0x004f('0x27'),_0x1631b7,JSON[_0x004f('0x15')](_0x399e8d));_0x3d5a6e(_0x399e8d);})['catch'](function(_0xace376){logger['error'](_0x004f('0x27'),_0xace376[_0x004f('0x17')],_0x1631b7);_0x11cc81(_this[_0x004f('0x16')](0x1f4,_0xace376['message']));});});};
\ No newline at end of file
index b8fa5de..b5f9a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x155e=['removeListener','register','length','chatInteraction:','./chatInteraction.events','save','remove','emit'];(function(_0x53c292,_0x9f70ae){var _0x39859f=function(_0x1e7960){while(--_0x1e7960){_0x53c292['push'](_0x53c292['shift']());}};_0x39859f(++_0x9f70ae);}(_0x155e,0x9c));var _0xe155=function(_0x5d784f,_0x2d352c){_0x5d784f=_0x5d784f-0x0;var _0x2e0f32=_0x155e[_0x5d784f];return _0x2e0f32;};'use strict';var ChatInteractionEvents=require(_0xe155('0x0'));var events=[_0xe155('0x1'),_0xe155('0x2'),'update'];function createListener(_0x3431dc,_0x172efe){return function(_0x4d5f99){_0x172efe[_0xe155('0x3')](_0x3431dc,_0x4d5f99);};}function removeListener(_0x1206fb,_0x5ab64b){return function(){ChatInteractionEvents[_0xe155('0x4')](_0x1206fb,_0x5ab64b);};}exports[_0xe155('0x5')]=function(_0x4a34ea){for(var _0x1b3deb=0x0,_0xdf58be=events[_0xe155('0x6')];_0x1b3deb<_0xdf58be;_0x1b3deb++){var _0x23fa5d=events[_0x1b3deb];var _0x4f1e3a=createListener(_0xe155('0x7')+_0x23fa5d,_0x4a34ea);ChatInteractionEvents['on'](_0x23fa5d,_0x4f1e3a);}};
\ No newline at end of file
+var _0xdd19=['length','chatInteraction:','./chatInteraction.events','remove','removeListener'];(function(_0x1d5eb6,_0xdfc155){var _0x23c1d8=function(_0xc13aa2){while(--_0xc13aa2){_0x1d5eb6['push'](_0x1d5eb6['shift']());}};_0x23c1d8(++_0xdfc155);}(_0xdd19,0xc5));var _0x9dd1=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xdd19[_0x618414];return _0x21c19a;};'use strict';var ChatInteractionEvents=require(_0x9dd1('0x0'));var events=['save',_0x9dd1('0x1'),'update'];function createListener(_0x15b914,_0x25fa76){return function(_0x344db5){_0x25fa76['emit'](_0x15b914,_0x344db5);};}function removeListener(_0x2cbcfb,_0x14061b){return function(){ChatInteractionEvents[_0x9dd1('0x2')](_0x2cbcfb,_0x14061b);};}exports['register']=function(_0x4729e9){for(var _0x48a8a9=0x0,_0x5eb634=events[_0x9dd1('0x3')];_0x48a8a9<_0x5eb634;_0x48a8a9++){var _0x5d72b8=events[_0x48a8a9];var _0x1209cc=createListener(_0x9dd1('0x4')+_0x5d72b8,_0x4729e9);ChatInteractionEvents['on'](_0x5d72b8,_0x1209cc);}};
\ No newline at end of file
index 26f8863..3b75193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd34=['isAuthenticated','index','/describe','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','join','root','%s-%s','now','originalname','replace','/:id/attachment_upload','attachmentUpload','/:id/messages','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','chatinteraction:update','update','customUpdate','put','/:id/abandon','/:id/close','delete','/:id','chatinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get'];(function(_0x4fe9c8,_0x5c3123){var _0x23c3cf=function(_0x521c76){while(--_0x521c76){_0x4fe9c8['push'](_0x4fe9c8['shift']());}};_0x23c3cf(++_0x5c3123);}(_0xdd34,0xf1));var _0x4dd3=function(_0x48599c,_0x154cca){_0x48599c=_0x48599c-0x0;var _0x2626b6=_0xdd34[_0x48599c];return _0x2626b6;};'use strict';var multer=require(_0x4dd3('0x0'));var util=require('util');var path=require(_0x4dd3('0x1'));var timeout=require(_0x4dd3('0x2'));var express=require(_0x4dd3('0x3'));var router=express[_0x4dd3('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4dd3('0x5'));var config=require(_0x4dd3('0x6'));var controller=require(_0x4dd3('0x7'));router[_0x4dd3('0x8')]('/',auth[_0x4dd3('0x9')](),controller[_0x4dd3('0xa')]);router[_0x4dd3('0x8')](_0x4dd3('0xb'),auth[_0x4dd3('0x9')](),controller['describe']);router[_0x4dd3('0x8')]('/:id',auth[_0x4dd3('0xc')](),controller['show']);router[_0x4dd3('0x8')](_0x4dd3('0xd'),auth['isChatInteractionAuthorized'](),controller[_0x4dd3('0xe')]);router['get']('/:id/messages',auth[_0x4dd3('0x9')](),controller[_0x4dd3('0xf')]);router[_0x4dd3('0x8')](_0x4dd3('0x10'),auth[_0x4dd3('0xc')](),controller[_0x4dd3('0x11')]);router[_0x4dd3('0x8')](_0x4dd3('0x12'),auth['isAuthenticated'](),controller[_0x4dd3('0x13')]);router[_0x4dd3('0x14')]('/',auth['isAuthenticated'](),controller[_0x4dd3('0x15')]);router[_0x4dd3('0x14')](_0x4dd3('0x16'),auth[_0x4dd3('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xcb4f5c,_0x5b1993,_0xbd02c){_0xbd02c(null,path[_0x4dd3('0x17')](config[_0x4dd3('0x18')],'server/files/attachments/'));},'filename':function(_0x3efc89,_0x3115fd,_0x4efb11){_0x4efb11(null,util['format'](_0x4dd3('0x19'),Date[_0x4dd3('0x1a')](),_0x3115fd[_0x4dd3('0x1b')][_0x4dd3('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x4dd3('0x14')](_0x4dd3('0x1d'),upload['single']('file'),controller[_0x4dd3('0x1e')]);router[_0x4dd3('0x14')](_0x4dd3('0x1f'),auth[_0x4dd3('0xc')](),controller[_0x4dd3('0x20')]);router[_0x4dd3('0x14')](_0x4dd3('0x21'),auth[_0x4dd3('0x9')](),interaction[_0x4dd3('0x22')](_0x4dd3('0x23'),_0x4dd3('0x24')),controller[_0x4dd3('0x25')]);router['put']('/:id',auth[_0x4dd3('0x9')](),interaction['tracked'](_0x4dd3('0x23'),_0x4dd3('0x26')),controller[_0x4dd3('0x27')]);router['put']('/:id/custom_update',controller[_0x4dd3('0x28')]);router[_0x4dd3('0x29')](_0x4dd3('0x2a'),auth[_0x4dd3('0xc')](),controller['abandon']);router[_0x4dd3('0x29')](_0x4dd3('0x2b'),controller['close']);router[_0x4dd3('0x2c')](_0x4dd3('0x2d'),auth[_0x4dd3('0x9')](),interaction['tracked'](_0x4dd3('0x23'),_0x4dd3('0x2e')),controller[_0x4dd3('0x2f')]);router[_0x4dd3('0x2c')](_0x4dd3('0x21'),auth[_0x4dd3('0x9')](),controller[_0x4dd3('0x30')]);module[_0x4dd3('0x31')]=router;
\ No newline at end of file
+var _0x8bd4=['addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','create','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','originalname','replace','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags'];(function(_0x4869d8,_0x45c2c7){var _0x2d8f5a=function(_0x41f9da){while(--_0x41f9da){_0x4869d8['push'](_0x4869d8['shift']());}};_0x2d8f5a(++_0x45c2c7);}(_0x8bd4,0x118));var _0x48bd=function(_0x343b8b,_0x47ee40){_0x343b8b=_0x343b8b-0x0;var _0x2a127c=_0x8bd4[_0x343b8b];return _0x2a127c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x48bd('0x0'));var timeout=require('connect-timeout');var express=require(_0x48bd('0x1'));var router=express['Router']();var fs_extra=require(_0x48bd('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x48bd('0x3'));var config=require(_0x48bd('0x4'));var controller=require('./chatInteraction.controller');router[_0x48bd('0x5')]('/',auth[_0x48bd('0x6')](),controller[_0x48bd('0x7')]);router[_0x48bd('0x5')]('/describe',auth['isAuthenticated'](),controller[_0x48bd('0x8')]);router[_0x48bd('0x5')](_0x48bd('0x9'),auth['isChatInteractionAuthorized'](),controller[_0x48bd('0xa')]);router[_0x48bd('0x5')](_0x48bd('0xb'),auth[_0x48bd('0xc')](),controller[_0x48bd('0xd')]);router[_0x48bd('0x5')]('/:id/messages',auth[_0x48bd('0x6')](),controller[_0x48bd('0xe')]);router[_0x48bd('0x5')](_0x48bd('0xf'),auth[_0x48bd('0xc')](),controller[_0x48bd('0x10')]);router[_0x48bd('0x5')](_0x48bd('0x11'),auth[_0x48bd('0x6')](),controller[_0x48bd('0x12')]);router[_0x48bd('0x13')]('/',auth[_0x48bd('0x6')](),controller[_0x48bd('0x14')]);router[_0x48bd('0x13')]('/:id/vidaoo',auth[_0x48bd('0x6')](),controller[_0x48bd('0x15')]);var upload=multer({'storage':multer[_0x48bd('0x16')]({'destination':function(_0x4b3f16,_0x2cd4b3,_0x194448){_0x194448(null,path[_0x48bd('0x17')](config[_0x48bd('0x18')],_0x48bd('0x19')));},'filename':function(_0x3dbc34,_0x343d66,_0x270eff){_0x270eff(null,util[_0x48bd('0x1a')](_0x48bd('0x1b'),Date['now'](),_0x343d66[_0x48bd('0x1c')][_0x48bd('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x48bd('0x13')]('/:id/attachment_upload',upload[_0x48bd('0x1e')](_0x48bd('0x1f')),controller[_0x48bd('0x20')]);router[_0x48bd('0x13')]('/:id/messages',auth[_0x48bd('0xc')](),controller[_0x48bd('0x21')]);router[_0x48bd('0x13')](_0x48bd('0x22'),auth['isAuthenticated'](),interaction[_0x48bd('0x23')](_0x48bd('0x24'),_0x48bd('0x25')),controller[_0x48bd('0x26')]);router[_0x48bd('0x27')](_0x48bd('0x9'),auth[_0x48bd('0x6')](),interaction['tracked'](_0x48bd('0x24'),_0x48bd('0x28')),controller[_0x48bd('0x29')]);router[_0x48bd('0x27')](_0x48bd('0x2a'),controller[_0x48bd('0x2b')]);router[_0x48bd('0x27')](_0x48bd('0x2c'),auth[_0x48bd('0xc')](),controller[_0x48bd('0x2d')]);router[_0x48bd('0x27')](_0x48bd('0x2e'),controller[_0x48bd('0x2f')]);router[_0x48bd('0x30')](_0x48bd('0x9'),auth[_0x48bd('0x6')](),interaction[_0x48bd('0x23')](_0x48bd('0x24'),_0x48bd('0x31')),controller[_0x48bd('0x32')]);router[_0x48bd('0x30')](_0x48bd('0x22'),auth[_0x48bd('0x6')](),controller[_0x48bd('0x33')]);module[_0x48bd('0x34')]=router;
\ No newline at end of file
index cb32322..ab7f170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x489e=['medium','BOOLEAN','sequelize','TEXT'];(function(_0x18f4e7,_0x4369b4){var _0x1d7890=function(_0x49953f){while(--_0x49953f){_0x18f4e7['push'](_0x18f4e7['shift']());}};_0x1d7890(++_0x4369b4);}(_0x489e,0xe6));var _0xe489=function(_0x48904e,_0x1b46b5){_0x48904e=_0x48904e-0x0;var _0x4e3e21=_0x489e[_0x48904e];return _0x4e3e21;};'use strict';var Sequelize=require(_0xe489('0x0'));module['exports']={'body':{'type':Sequelize[_0xe489('0x1')](_0xe489('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xe489('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xad30=['exports','TEXT','medium','BOOLEAN','INTEGER'];(function(_0x5f02eb,_0x2bd9f1){var _0x50667d=function(_0x442f4b){while(--_0x442f4b){_0x5f02eb['push'](_0x5f02eb['shift']());}};_0x50667d(++_0x2bd9f1);}(_0xad30,0x87));var _0x0ad3=function(_0x1beec7,_0x5926ff){_0x1beec7=_0x1beec7-0x0;var _0x4d2092=_0xad30[_0x1beec7];return _0x4d2092;};'use strict';var Sequelize=require('sequelize');module[_0x0ad3('0x0')]={'body':{'type':Sequelize[_0x0ad3('0x1')](_0x0ad3('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x0ad3('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x0ad3('0x4')]}};
\ No newline at end of file
index 1216675..859d742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1a5=['sort','where','pick','filter','merge','options','findAll','then','catch','params','length','includeAll','include','find','create','body','describe','get','messages','lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','User','agent','admin','user','role','userpic','online','lastLoginAt','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','isEmpty','resourceId','push','FromId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x35cfc7,_0x4452c4){var _0x163381=function(_0x4da7aa){while(--_0x4da7aa){_0x35cfc7['push'](_0x35cfc7['shift']());}};_0x163381(++_0x4452c4);}(_0xc1a5,0x9f));var _0x5c1a=function(_0x21dbb0,_0x3e123a){_0x21dbb0=_0x21dbb0-0x0;var _0x29c531=_0xc1a5[_0x21dbb0];return _0x29c531;};'use strict';var emlformat=require(_0x5c1a('0x0'));var rimraf=require(_0x5c1a('0x1'));var zipdir=require(_0x5c1a('0x2'));var jsonpatch=require(_0x5c1a('0x3'));var rp=require('request-promise');var moment=require(_0x5c1a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5c1a('0x5'));var util=require(_0x5c1a('0x6'));var path=require(_0x5c1a('0x7'));var sox=require(_0x5c1a('0x8'));var csv=require(_0x5c1a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5c1a('0xa'));var _=require(_0x5c1a('0xb'));var squel=require(_0x5c1a('0xc'));var crypto=require(_0x5c1a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5c1a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5c1a('0xf'));var Papa=require(_0x5c1a('0x10'));var Redis=require(_0x5c1a('0x11'));var authService=require(_0x5c1a('0x12'));var qs=require(_0x5c1a('0x13'));var as=require(_0x5c1a('0x14'));var hardwareService=require(_0x5c1a('0x15'));var logger=require(_0x5c1a('0x16'))(_0x5c1a('0x17'));var utils=require(_0x5c1a('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x5c1a('0x19'));var db=require(_0x5c1a('0x1a'))['db'];config['redis']=_[_0x5c1a('0x1b')](config[_0x5c1a('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x5c1a('0x1d'))(new Redis(config[_0x5c1a('0x1c')]));require(_0x5c1a('0x1e'))[_0x5c1a('0x1f')](socket);function respondWithStatusCode(_0x579d04,_0x5296dc){_0x5296dc=_0x5296dc||0xcc;return function(_0x4aef92){if(_0x4aef92){return _0x579d04[_0x5c1a('0x20')](_0x5296dc);}return _0x579d04[_0x5c1a('0x21')](_0x5296dc)['end']();};}function respondWithResult(_0x4f3d86,_0xd350c0){_0xd350c0=_0xd350c0||0xc8;return function(_0x250019){if(_0x250019){return _0x4f3d86[_0x5c1a('0x21')](_0xd350c0)[_0x5c1a('0x22')](_0x250019);}};}function respondWithFilteredResult(_0x780c36,_0x4395e6){return function(_0x521129){if(_0x521129){var _0x2fc965=typeof _0x4395e6[_0x5c1a('0x23')]===_0x5c1a('0x24')&&typeof _0x4395e6[_0x5c1a('0x25')]==='undefined';var _0x28fa6c=_0x521129[_0x5c1a('0x26')];var _0x43d091=_0x2fc965?0x0:_0x4395e6['offset'];var _0x15a867=_0x2fc965?_0x521129[_0x5c1a('0x26')]:_0x4395e6['offset']+_0x4395e6[_0x5c1a('0x25')];var _0x4648c4;if(_0x15a867>=_0x28fa6c){_0x15a867=_0x28fa6c;_0x4648c4=0xc8;}else{_0x4648c4=0xce;}_0x780c36['status'](_0x4648c4);return _0x780c36['set']('Content-Range',_0x43d091+'-'+_0x15a867+'/'+_0x28fa6c)[_0x5c1a('0x22')](_0x521129);}return null;};}function patchUpdates(_0xd17fd4){return function(_0x409956){try{jsonpatch[_0x5c1a('0x27')](_0x409956,_0xd17fd4,!![]);}catch(_0x5365ed){return BPromise[_0x5c1a('0x28')](_0x5365ed);}return _0x409956[_0x5c1a('0x29')]();};}function saveUpdates(_0xb378f1,_0x128e6b){return function(_0x218bb6){if(_0x218bb6){return _0x218bb6[_0x5c1a('0x2a')](_0xb378f1)['then'](function(_0x40ad8e){return _0x40ad8e;});}return null;};}function removeEntity(_0xef4aa6,_0x580651){return function(_0x1a62f0){if(_0x1a62f0){return _0x1a62f0[_0x5c1a('0x2b')]()['then'](function(){_0xef4aa6[_0x5c1a('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf886ad,_0x346517){return function(_0x32fa5a){if(!_0x32fa5a){_0xf886ad[_0x5c1a('0x20')](0x194);}return _0x32fa5a;};}function handleError(_0x1f2fd4,_0x3dc5d8){_0x3dc5d8=_0x3dc5d8||0x1f4;return function(_0x5a8a59){logger[_0x5c1a('0x2c')](_0x5a8a59[_0x5c1a('0x2d')]);if(_0x5a8a59[_0x5c1a('0x2e')]){delete _0x5a8a59[_0x5c1a('0x2e')];}_0x1f2fd4['status'](_0x3dc5d8)[_0x5c1a('0x2f')](_0x5a8a59);};}exports[_0x5c1a('0x30')]=function(_0x3dd0d0,_0x5c2dc4){var _0x1137b1={},_0x184137={},_0xa93738={'count':0x0,'rows':[]};var _0x1137d8=_[_0x5c1a('0x31')](db[_0x5c1a('0x32')][_0x5c1a('0x33')],function(_0x14bba6){return{'name':_0x14bba6[_0x5c1a('0x34')],'type':_0x14bba6[_0x5c1a('0x35')][_0x5c1a('0x36')]};});_0x184137[_0x5c1a('0x37')]=_[_0x5c1a('0x31')](_0x1137d8,_0x5c1a('0x2e'));_0x184137[_0x5c1a('0x38')]=_[_0x5c1a('0x39')](_0x3dd0d0[_0x5c1a('0x38')]);_0x184137[_0x5c1a('0x3a')]=_[_0x5c1a('0x3b')](_0x184137[_0x5c1a('0x37')],_0x184137[_0x5c1a('0x38')]);_0x1137b1[_0x5c1a('0x3c')]=_[_0x5c1a('0x3b')](_0x184137[_0x5c1a('0x37')],qs[_0x5c1a('0x3d')](_0x3dd0d0[_0x5c1a('0x38')][_0x5c1a('0x3d')]));_0x1137b1[_0x5c1a('0x3c')]=_0x1137b1['attributes']['length']?_0x1137b1['attributes']:_0x184137[_0x5c1a('0x37')];if(!_0x3dd0d0[_0x5c1a('0x38')][_0x5c1a('0x3e')](_0x5c1a('0x3f'))){_0x1137b1['limit']=qs[_0x5c1a('0x25')](_0x3dd0d0[_0x5c1a('0x38')]['limit']);_0x1137b1[_0x5c1a('0x23')]=qs[_0x5c1a('0x23')](_0x3dd0d0['query'][_0x5c1a('0x23')]);}_0x1137b1[_0x5c1a('0x40')]=qs['sort'](_0x3dd0d0[_0x5c1a('0x38')][_0x5c1a('0x41')]);_0x1137b1[_0x5c1a('0x42')]=qs[_0x5c1a('0x3a')](_[_0x5c1a('0x43')](_0x3dd0d0[_0x5c1a('0x38')],_0x184137['filters']),_0x1137d8);if(_0x3dd0d0[_0x5c1a('0x38')][_0x5c1a('0x44')]){_0x1137b1['where']=_[_0x5c1a('0x45')](_0x1137b1[_0x5c1a('0x42')],{'$or':_[_0x5c1a('0x31')](_0x1137d8,function(_0x4c457a){if(_0x4c457a[_0x5c1a('0x35')]!=='VIRTUAL'){var _0x5c47d5={};_0x5c47d5[_0x4c457a[_0x5c1a('0x2e')]]={'$like':'%'+_0x3dd0d0[_0x5c1a('0x38')][_0x5c1a('0x44')]+'%'};return _0x5c47d5;}})});}_0x1137b1=_['merge']({},_0x1137b1,_0x3dd0d0[_0x5c1a('0x46')]);var _0x56e6d3={'where':_0x1137b1['where']};return db[_0x5c1a('0x32')][_0x5c1a('0x26')](_0x56e6d3)['then'](function(_0x243d2f){_0xa93738[_0x5c1a('0x26')]=_0x243d2f;if(_0x3dd0d0[_0x5c1a('0x38')]['includeAll']){_0x1137b1['include']=[{'all':!![]}];}return db['ChatInternalMessage'][_0x5c1a('0x47')](_0x1137b1);})['then'](function(_0x15d04){_0xa93738['rows']=_0x15d04;return _0xa93738;})[_0x5c1a('0x48')](respondWithFilteredResult(_0x5c2dc4,_0x1137b1))[_0x5c1a('0x49')](handleError(_0x5c2dc4,null));};exports['show']=function(_0x2a753c,_0x3c6553){var _0x4919fa={'raw':!![],'where':{'id':_0x2a753c[_0x5c1a('0x4a')]['id']}},_0x134715={};_0x134715[_0x5c1a('0x37')]=_[_0x5c1a('0x39')](db['ChatInternalMessage'][_0x5c1a('0x33')]);_0x134715[_0x5c1a('0x38')]=_[_0x5c1a('0x39')](_0x2a753c['query']);_0x134715['filters']=_[_0x5c1a('0x3b')](_0x134715[_0x5c1a('0x37')],_0x134715['query']);_0x4919fa[_0x5c1a('0x3c')]=_['intersection'](_0x134715[_0x5c1a('0x37')],qs[_0x5c1a('0x3d')](_0x2a753c[_0x5c1a('0x38')][_0x5c1a('0x3d')]));_0x4919fa[_0x5c1a('0x3c')]=_0x4919fa[_0x5c1a('0x3c')][_0x5c1a('0x4b')]?_0x4919fa[_0x5c1a('0x3c')]:_0x134715[_0x5c1a('0x37')];if(_0x2a753c['query'][_0x5c1a('0x4c')]){_0x4919fa[_0x5c1a('0x4d')]=[{'all':!![]}];}_0x4919fa=_[_0x5c1a('0x45')]({},_0x4919fa,_0x2a753c[_0x5c1a('0x46')]);return db['ChatInternalMessage'][_0x5c1a('0x4e')](_0x4919fa)[_0x5c1a('0x48')](handleEntityNotFound(_0x3c6553,null))['then'](respondWithResult(_0x3c6553,null))[_0x5c1a('0x49')](handleError(_0x3c6553,null));};exports[_0x5c1a('0x4f')]=function(_0x36ad5e,_0x33d418){return db[_0x5c1a('0x32')]['create'](_0x36ad5e[_0x5c1a('0x50')],{})[_0x5c1a('0x48')](respondWithResult(_0x33d418,0xc9))[_0x5c1a('0x49')](handleError(_0x33d418,null));};exports['update']=function(_0x1daaa8,_0x51e122){if(_0x1daaa8['body']['id']){delete _0x1daaa8['body']['id'];}return db[_0x5c1a('0x32')][_0x5c1a('0x4e')]({'where':{'id':_0x1daaa8[_0x5c1a('0x4a')]['id']}})[_0x5c1a('0x48')](handleEntityNotFound(_0x51e122,null))[_0x5c1a('0x48')](saveUpdates(_0x1daaa8['body'],null))['then'](respondWithResult(_0x51e122,null))[_0x5c1a('0x49')](handleError(_0x51e122,null));};exports[_0x5c1a('0x2b')]=function(_0x3027a3,_0x2770df){return db[_0x5c1a('0x32')][_0x5c1a('0x4e')]({'where':{'id':_0x3027a3[_0x5c1a('0x4a')]['id']}})[_0x5c1a('0x48')](handleEntityNotFound(_0x2770df,null))[_0x5c1a('0x48')](removeEntity(_0x2770df,null))[_0x5c1a('0x49')](handleError(_0x2770df,null));};exports['describe']=function(_0x367c6f,_0x1011fd){return db['ChatInternalMessage'][_0x5c1a('0x51')]()['then'](respondWithResult(_0x1011fd,null))[_0x5c1a('0x49')](handleError(_0x1011fd,null));};function wrapUser(_0x232cca){return function(_0x11178a){var _0x6f5735=_0x232cca[_0x5c1a('0x52')]({'plain':!![]});_0x6f5735[_0x5c1a('0x53')]=[];if(_0x11178a){_0x6f5735[_0x5c1a('0x54')]=_0x11178a[_0x5c1a('0x55')];_0x6f5735['lastMessage']=_0x11178a;}else{_0x6f5735[_0x5c1a('0x54')]=moment(0x0)[_0x5c1a('0x56')](_0x5c1a('0x57'));_0x6f5735[_0x5c1a('0x58')]={};}return _0x6f5735;};}exports[_0x5c1a('0x59')]=function(_0x559e20,_0x4c0bdc,_0x2c469b){var _0x33fd16=[];return db[_0x5c1a('0x5a')][_0x5c1a('0x47')]({'where':{'role':[_0x5c1a('0x5b'),_0x5c1a('0x5c'),_0x5c1a('0x5d')]},'attributes':['id','fullname',_0x5c1a('0x2e'),_0x5c1a('0x5e'),_0x5c1a('0x5f'),'internal',_0x5c1a('0x60'),_0x5c1a('0x61'),'allowmessenger',_0x5c1a('0x62')],'order':qs[_0x5c1a('0x41')](_0x5c1a('0x63')),'include':[{'model':db[_0x5c1a('0x64')],'as':_0x5c1a('0x65'),'attributes':['id','name',_0x5c1a('0x35')],'through':{'attributes':[]}}]})[_0x5c1a('0x48')](function(_0x4571d6){if(_0x4571d6){var _0x605822=_0x559e20['user'][_0x5c1a('0x52')]({'plain':!![]});if(!_0x605822)throw new Error(_0x5c1a('0x66'));if(_0x605822[_0x5c1a('0x5e')]===_0x5c1a('0x5d')){return db[_0x5c1a('0x67')][_0x5c1a('0x4e')]({'where':{'name':'Agents','userProfileId':_0x605822[_0x5c1a('0x68')]},'raw':!![]})[_0x5c1a('0x48')](function(_0x5bad35){if(_0x5bad35){if(_0x5bad35['autoAssociation']===0x0){return db['UserProfileResource'][_0x5c1a('0x47')]({'where':{'sectionId':_0x5bad35['id']},'raw':!![]})[_0x5c1a('0x48')](function(_0x776e57){var _0x1d1b30=[];if(_[_0x5c1a('0x69')](_0x776e57)){_0x1d1b30=_[_0x5c1a('0x44')](_0x4571d6,function(_0x318c96){if(_0x318c96[_0x5c1a('0x5e')]!==_0x5c1a('0x5b')){return _0x318c96;}});return _0x1d1b30;}else{for(var _0x8d116=0x0;_0x8d116<_0x4571d6[_0x5c1a('0x4b')];_0x8d116++){var _0x36724b=_0x4571d6[_0x8d116];if(_0x36724b[_0x5c1a('0x5e')]==='agent'){var _0x346a9c=_[_0x5c1a('0x4e')](_0x776e57,function(_0x35fc35){return _0x35fc35[_0x5c1a('0x6a')]===_0x36724b['id'];});if(_0x346a9c)_0x1d1b30[_0x5c1a('0x6b')](_0x36724b);}else{_0x1d1b30[_0x5c1a('0x6b')](_0x36724b);}}return _0x1d1b30;}});}else{return _0x4571d6;}}else{var _0x1ac6b3=_['filter'](_0x4571d6,function(_0x33443a){if(_0x33443a[_0x5c1a('0x5e')]!==_0x5c1a('0x5b')){return _0x33443a;}});return _0x1ac6b3;}});}else{return _0x4571d6;}}})[_0x5c1a('0x48')](function(_0x386e11){var _0x5d5d65=[];if(_0x386e11){_0x33fd16=_0x386e11;for(var _0x3e3a33=0x0;_0x3e3a33<_0x386e11[_0x5c1a('0x4b')];_0x3e3a33+=0x1){_0x33fd16[_0x3e3a33]['messages']=[];_0x5d5d65['push'](db['ChatInternalMessage']['find']({'where':{'FromId':[_0x559e20['user']['id'],_0x386e11[_0x3e3a33]['id']],'ToId':[_0x559e20['user']['id'],_0x386e11[_0x3e3a33]['id']],'ChatGroupId':null},'attributes':['id',_0x5c1a('0x55'),_0x5c1a('0x6c'),'ToId',_0x5c1a('0x6d'),_0x5c1a('0x50')],'order':qs[_0x5c1a('0x41')](_0x5c1a('0x6e')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x5c1a('0x48')](wrapUser(_0x386e11[_0x3e3a33])));}return BPromise[_0x5c1a('0x6f')](_0x5d5d65);}return[];})['then'](function(_0x5af6b7){return{'rows':_0x5af6b7,'count':_0x5af6b7[_0x5c1a('0x4b')]};})[_0x5c1a('0x48')](respondWithResult(_0x4c0bdc,null))['catch'](handleError(_0x4c0bdc,null));};
\ No newline at end of file
+var _0x976e=['fullname','role','lastLoginAt','showWebBar','-online','VoiceQueue','type','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','userProfileId','autoAssociation','UserProfileResource','push','length','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','index','ChatInternalMessage','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','options','include','findAll','rows','catch','show','includeAll','find','create','params','body','get','messages','lastMessageAt','YYYY-MM-DD\x20HH:mm:ss','lastMessage','agent','admin','user'];(function(_0x3d1187,_0x2a8e79){var _0x3ceb4d=function(_0x54aa9b){while(--_0x54aa9b){_0x3d1187['push'](_0x3d1187['shift']());}};_0x3ceb4d(++_0x2a8e79);}(_0x976e,0xdf));var _0xe976=function(_0x338a2b,_0x371df4){_0x338a2b=_0x338a2b-0x0;var _0x2f04c4=_0x976e[_0x338a2b];return _0x2f04c4;};'use strict';var emlformat=require(_0xe976('0x0'));var rimraf=require(_0xe976('0x1'));var zipdir=require(_0xe976('0x2'));var jsonpatch=require(_0xe976('0x3'));var rp=require(_0xe976('0x4'));var moment=require(_0xe976('0x5'));var BPromise=require(_0xe976('0x6'));var Mustache=require(_0xe976('0x7'));var util=require(_0xe976('0x8'));var path=require(_0xe976('0x9'));var sox=require(_0xe976('0xa'));var csv=require(_0xe976('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe976('0xc'));var _=require('lodash');var squel=require(_0xe976('0xd'));var crypto=require(_0xe976('0xe'));var jsforce=require(_0xe976('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe976('0x10'));var Redis=require(_0xe976('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe976('0x12'));var logger=require('../../config/logger')(_0xe976('0x13'));var utils=require(_0xe976('0x14'));var config=require(_0xe976('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xe976('0x16')]=_[_0xe976('0x17')](config['redis'],{'host':_0xe976('0x18'),'port':0x18eb});var socket=require(_0xe976('0x19'))(new Redis(config['redis']));require(_0xe976('0x1a'))[_0xe976('0x1b')](socket);function respondWithStatusCode(_0x4acbfd,_0x550a0c){_0x550a0c=_0x550a0c||0xcc;return function(_0x49150a){if(_0x49150a){return _0x4acbfd[_0xe976('0x1c')](_0x550a0c);}return _0x4acbfd[_0xe976('0x1d')](_0x550a0c)[_0xe976('0x1e')]();};}function respondWithResult(_0x35142e,_0x249967){_0x249967=_0x249967||0xc8;return function(_0x3ce2cb){if(_0x3ce2cb){return _0x35142e[_0xe976('0x1d')](_0x249967)[_0xe976('0x1f')](_0x3ce2cb);}};}function respondWithFilteredResult(_0x1f39b2,_0x42593a){return function(_0x5ac4d3){if(_0x5ac4d3){var _0x1fc024=typeof _0x42593a['offset']==='undefined'&&typeof _0x42593a[_0xe976('0x20')]===_0xe976('0x21');var _0x10c827=_0x5ac4d3[_0xe976('0x22')];var _0x1eab9f=_0x1fc024?0x0:_0x42593a[_0xe976('0x23')];var _0x107f53=_0x1fc024?_0x5ac4d3[_0xe976('0x22')]:_0x42593a['offset']+_0x42593a['limit'];var _0x4e5e1e;if(_0x107f53>=_0x10c827){_0x107f53=_0x10c827;_0x4e5e1e=0xc8;}else{_0x4e5e1e=0xce;}_0x1f39b2[_0xe976('0x1d')](_0x4e5e1e);return _0x1f39b2['set'](_0xe976('0x24'),_0x1eab9f+'-'+_0x107f53+'/'+_0x10c827)[_0xe976('0x1f')](_0x5ac4d3);}return null;};}function patchUpdates(_0x4cf6c7){return function(_0x307ce2){try{jsonpatch[_0xe976('0x25')](_0x307ce2,_0x4cf6c7,!![]);}catch(_0x2738c2){return BPromise[_0xe976('0x26')](_0x2738c2);}return _0x307ce2[_0xe976('0x27')]();};}function saveUpdates(_0x40029a,_0x2e10a2){return function(_0x65fc6d){if(_0x65fc6d){return _0x65fc6d[_0xe976('0x28')](_0x40029a)[_0xe976('0x29')](function(_0x2f46a9){return _0x2f46a9;});}return null;};}function removeEntity(_0x436575,_0x4fd76f){return function(_0x4c699a){if(_0x4c699a){return _0x4c699a[_0xe976('0x2a')]()['then'](function(){_0x436575[_0xe976('0x1d')](0xcc)[_0xe976('0x1e')]();});}};}function handleEntityNotFound(_0x54f929,_0x2fdfc9){return function(_0x2bf99a){if(!_0x2bf99a){_0x54f929[_0xe976('0x1c')](0x194);}return _0x2bf99a;};}function handleError(_0x3337c3,_0x4a03f4){_0x4a03f4=_0x4a03f4||0x1f4;return function(_0x7feb1b){logger[_0xe976('0x2b')](_0x7feb1b['stack']);if(_0x7feb1b[_0xe976('0x2c')]){delete _0x7feb1b[_0xe976('0x2c')];}_0x3337c3[_0xe976('0x1d')](_0x4a03f4)['send'](_0x7feb1b);};}exports[_0xe976('0x2d')]=function(_0x1032b8,_0x565786){var _0xc9de44={},_0x535b23={},_0x45fb1f={'count':0x0,'rows':[]};var _0x29846e=_['map'](db[_0xe976('0x2e')][_0xe976('0x2f')],function(_0x41efef){return{'name':_0x41efef['fieldName'],'type':_0x41efef['type'][_0xe976('0x30')]};});_0x535b23[_0xe976('0x31')]=_['map'](_0x29846e,_0xe976('0x2c'));_0x535b23[_0xe976('0x32')]=_[_0xe976('0x33')](_0x1032b8['query']);_0x535b23[_0xe976('0x34')]=_[_0xe976('0x35')](_0x535b23['model'],_0x535b23[_0xe976('0x32')]);_0xc9de44[_0xe976('0x36')]=_[_0xe976('0x35')](_0x535b23[_0xe976('0x31')],qs['fields'](_0x1032b8[_0xe976('0x32')][_0xe976('0x37')]));_0xc9de44[_0xe976('0x36')]=_0xc9de44[_0xe976('0x36')]['length']?_0xc9de44[_0xe976('0x36')]:_0x535b23[_0xe976('0x31')];if(!_0x1032b8[_0xe976('0x32')][_0xe976('0x38')](_0xe976('0x39'))){_0xc9de44[_0xe976('0x20')]=qs[_0xe976('0x20')](_0x1032b8[_0xe976('0x32')]['limit']);_0xc9de44[_0xe976('0x23')]=qs['offset'](_0x1032b8['query'][_0xe976('0x23')]);}_0xc9de44['order']=qs[_0xe976('0x3a')](_0x1032b8[_0xe976('0x32')][_0xe976('0x3a')]);_0xc9de44[_0xe976('0x3b')]=qs[_0xe976('0x34')](_[_0xe976('0x3c')](_0x1032b8['query'],_0x535b23[_0xe976('0x34')]),_0x29846e);if(_0x1032b8[_0xe976('0x32')][_0xe976('0x3d')]){_0xc9de44[_0xe976('0x3b')]=_[_0xe976('0x3e')](_0xc9de44[_0xe976('0x3b')],{'$or':_[_0xe976('0x3f')](_0x29846e,function(_0x3f4cd5){if(_0x3f4cd5['type']!=='VIRTUAL'){var _0x2af510={};_0x2af510[_0x3f4cd5[_0xe976('0x2c')]]={'$like':'%'+_0x1032b8[_0xe976('0x32')][_0xe976('0x3d')]+'%'};return _0x2af510;}})});}_0xc9de44=_[_0xe976('0x3e')]({},_0xc9de44,_0x1032b8[_0xe976('0x40')]);var _0x5336e6={'where':_0xc9de44[_0xe976('0x3b')]};return db[_0xe976('0x2e')][_0xe976('0x22')](_0x5336e6)[_0xe976('0x29')](function(_0x1ee709){_0x45fb1f['count']=_0x1ee709;if(_0x1032b8[_0xe976('0x32')]['includeAll']){_0xc9de44[_0xe976('0x41')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0xe976('0x42')](_0xc9de44);})[_0xe976('0x29')](function(_0x159b6b){_0x45fb1f[_0xe976('0x43')]=_0x159b6b;return _0x45fb1f;})[_0xe976('0x29')](respondWithFilteredResult(_0x565786,_0xc9de44))[_0xe976('0x44')](handleError(_0x565786,null));};exports[_0xe976('0x45')]=function(_0x2f7dcb,_0x5a21e4){var _0x1cdbbd={'raw':!![],'where':{'id':_0x2f7dcb['params']['id']}},_0x33bdf0={};_0x33bdf0[_0xe976('0x31')]=_[_0xe976('0x33')](db[_0xe976('0x2e')][_0xe976('0x2f')]);_0x33bdf0[_0xe976('0x32')]=_['keys'](_0x2f7dcb[_0xe976('0x32')]);_0x33bdf0[_0xe976('0x34')]=_['intersection'](_0x33bdf0[_0xe976('0x31')],_0x33bdf0['query']);_0x1cdbbd[_0xe976('0x36')]=_['intersection'](_0x33bdf0['model'],qs[_0xe976('0x37')](_0x2f7dcb['query'][_0xe976('0x37')]));_0x1cdbbd['attributes']=_0x1cdbbd[_0xe976('0x36')]['length']?_0x1cdbbd['attributes']:_0x33bdf0[_0xe976('0x31')];if(_0x2f7dcb[_0xe976('0x32')][_0xe976('0x46')]){_0x1cdbbd[_0xe976('0x41')]=[{'all':!![]}];}_0x1cdbbd=_[_0xe976('0x3e')]({},_0x1cdbbd,_0x2f7dcb[_0xe976('0x40')]);return db[_0xe976('0x2e')][_0xe976('0x47')](_0x1cdbbd)['then'](handleEntityNotFound(_0x5a21e4,null))[_0xe976('0x29')](respondWithResult(_0x5a21e4,null))[_0xe976('0x44')](handleError(_0x5a21e4,null));};exports[_0xe976('0x48')]=function(_0x11b520,_0x38138f){return db['ChatInternalMessage'][_0xe976('0x48')](_0x11b520['body'],{})[_0xe976('0x29')](respondWithResult(_0x38138f,0xc9))[_0xe976('0x44')](handleError(_0x38138f,null));};exports[_0xe976('0x28')]=function(_0x9eab6c,_0x523d15){if(_0x9eab6c['body']['id']){delete _0x9eab6c['body']['id'];}return db[_0xe976('0x2e')][_0xe976('0x47')]({'where':{'id':_0x9eab6c[_0xe976('0x49')]['id']}})['then'](handleEntityNotFound(_0x523d15,null))[_0xe976('0x29')](saveUpdates(_0x9eab6c[_0xe976('0x4a')],null))[_0xe976('0x29')](respondWithResult(_0x523d15,null))[_0xe976('0x44')](handleError(_0x523d15,null));};exports[_0xe976('0x2a')]=function(_0x4376a5,_0x5edda4){return db['ChatInternalMessage'][_0xe976('0x47')]({'where':{'id':_0x4376a5['params']['id']}})[_0xe976('0x29')](handleEntityNotFound(_0x5edda4,null))[_0xe976('0x29')](removeEntity(_0x5edda4,null))[_0xe976('0x44')](handleError(_0x5edda4,null));};exports['describe']=function(_0x2af13c,_0x4eb3bc){return db[_0xe976('0x2e')]['describe']()['then'](respondWithResult(_0x4eb3bc,null))[_0xe976('0x44')](handleError(_0x4eb3bc,null));};function wrapUser(_0x2c4c97){return function(_0x32e335){var _0x5d2fe4=_0x2c4c97[_0xe976('0x4b')]({'plain':!![]});_0x5d2fe4[_0xe976('0x4c')]=[];if(_0x32e335){_0x5d2fe4[_0xe976('0x4d')]=_0x32e335['createdAt'];_0x5d2fe4['lastMessage']=_0x32e335;}else{_0x5d2fe4[_0xe976('0x4d')]=moment(0x0)['format'](_0xe976('0x4e'));_0x5d2fe4[_0xe976('0x4f')]={};}return _0x5d2fe4;};}exports['getUsers']=function(_0x210f0c,_0x43e6a4,_0x3dbab5){var _0x3671aa=[];return db['User'][_0xe976('0x42')]({'where':{'role':[_0xe976('0x50'),_0xe976('0x51'),_0xe976('0x52')]},'attributes':['id',_0xe976('0x53'),_0xe976('0x2c'),_0xe976('0x54'),'userpic','internal','online',_0xe976('0x55'),'allowmessenger',_0xe976('0x56')],'order':qs[_0xe976('0x3a')](_0xe976('0x57')),'include':[{'model':db[_0xe976('0x58')],'as':'VoiceQueues','attributes':['id',_0xe976('0x2c'),_0xe976('0x59')],'through':{'attributes':[]}}]})[_0xe976('0x29')](function(_0x39af10){if(_0x39af10){var _0x107249=_0x210f0c[_0xe976('0x52')][_0xe976('0x4b')]({'plain':!![]});if(!_0x107249)throw new Error(_0xe976('0x5a'));if(_0x107249[_0xe976('0x54')]===_0xe976('0x52')){return db['UserProfileSection'][_0xe976('0x47')]({'where':{'name':_0xe976('0x5b'),'userProfileId':_0x107249[_0xe976('0x5c')]},'raw':!![]})[_0xe976('0x29')](function(_0x4b3aea){if(_0x4b3aea){if(_0x4b3aea[_0xe976('0x5d')]===0x0){return db[_0xe976('0x5e')][_0xe976('0x42')]({'where':{'sectionId':_0x4b3aea['id']},'raw':!![]})[_0xe976('0x29')](function(_0x322d81){var _0x1044d6=[];if(_['isEmpty'](_0x322d81)){_0x1044d6=_[_0xe976('0x3d')](_0x39af10,function(_0x5caac4){if(_0x5caac4[_0xe976('0x54')]!==_0xe976('0x50')){return _0x5caac4;}});return _0x1044d6;}else{for(var _0x1fda32=0x0;_0x1fda32<_0x39af10['length'];_0x1fda32++){var _0x598f10=_0x39af10[_0x1fda32];if(_0x598f10[_0xe976('0x54')]==='agent'){var _0x581564=_[_0xe976('0x47')](_0x322d81,function(_0x13fe53){return _0x13fe53['resourceId']===_0x598f10['id'];});if(_0x581564)_0x1044d6[_0xe976('0x5f')](_0x598f10);}else{_0x1044d6['push'](_0x598f10);}}return _0x1044d6;}});}else{return _0x39af10;}}else{var _0x4c3528=_[_0xe976('0x3d')](_0x39af10,function(_0x46abae){if(_0x46abae[_0xe976('0x54')]!==_0xe976('0x50')){return _0x46abae;}});return _0x4c3528;}});}else{return _0x39af10;}}})[_0xe976('0x29')](function(_0x21e7ea){var _0x4ebad5=[];if(_0x21e7ea){_0x3671aa=_0x21e7ea;for(var _0x14616e=0x0;_0x14616e<_0x21e7ea[_0xe976('0x60')];_0x14616e+=0x1){_0x3671aa[_0x14616e]['messages']=[];_0x4ebad5['push'](db[_0xe976('0x2e')]['find']({'where':{'FromId':[_0x210f0c[_0xe976('0x52')]['id'],_0x21e7ea[_0x14616e]['id']],'ToId':[_0x210f0c[_0xe976('0x52')]['id'],_0x21e7ea[_0x14616e]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xe976('0x61'),_0xe976('0x62'),_0xe976('0x63'),'body'],'order':qs[_0xe976('0x3a')](_0xe976('0x64')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x21e7ea[_0x14616e])));}return BPromise[_0xe976('0x65')](_0x4ebad5);}return[];})[_0xe976('0x29')](function(_0x25bcec){return{'rows':_0x25bcec,'count':_0x25bcec['length']};})[_0xe976('0x29')](respondWithResult(_0x43e6a4,null))[_0xe976('0x44')](handleError(_0x43e6a4,null));};
\ No newline at end of file
index a56a1c2..2b65169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8032=['exports','events','../../mysqldb','ChatInternalMessage','update','remove','emit','hook'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8032,0xd9));var _0x2803=function(_0x45081a,_0x3ae384){_0x45081a=_0x45081a-0x0;var _0x55bfe2=_0x8032[_0x45081a];return _0x55bfe2;};'use strict';var EventEmitter=require(_0x2803('0x0'));var ChatInternalMessage=require(_0x2803('0x1'))['db'][_0x2803('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2803('0x3'),'afterDestroy':_0x2803('0x4')};function emitEvent(_0x3332c3){return function(_0x4511f0,_0x59d7b0,_0x1b15f0){ChatInternalMessageEvents[_0x2803('0x5')](_0x3332c3+':'+_0x4511f0['id'],_0x4511f0);ChatInternalMessageEvents[_0x2803('0x5')](_0x3332c3,_0x4511f0);_0x1b15f0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x2803('0x6')](e,emitEvent(event));}}module[_0x2803('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xd9d7=['ChatInternalMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x6144b4,_0x3d34ad){var _0x59b7eb=function(_0x324f2d){while(--_0x324f2d){_0x6144b4['push'](_0x6144b4['shift']());}};_0x59b7eb(++_0x3d34ad);}(_0xd9d7,0x1dc));var _0x7d9d=function(_0x5ca72f,_0xccbe4e){_0x5ca72f=_0x5ca72f-0x0;var _0x406089=_0xd9d7[_0x5ca72f];return _0x406089;};'use strict';var EventEmitter=require(_0x7d9d('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x7d9d('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x7d9d('0x2')](0x0);var events={'afterCreate':_0x7d9d('0x3'),'afterUpdate':_0x7d9d('0x4'),'afterDestroy':_0x7d9d('0x5')};function emitEvent(_0x2b5f37){return function(_0x3b22d7,_0x4cc9d1,_0x28392d){ChatInternalMessageEvents['emit'](_0x2b5f37+':'+_0x3b22d7['id'],_0x3b22d7);ChatInternalMessageEvents[_0x7d9d('0x6')](_0x2b5f37,_0x3b22d7);_0x28392d(null);};}for(var e in events){if(events[_0x7d9d('0x7')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x7d9d('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index 9bb9a22..5876c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54aa=['path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise'];(function(_0x328c24,_0x95c124){var _0x1a96ee=function(_0x40dba4){while(--_0x40dba4){_0x328c24['push'](_0x328c24['shift']());}};_0x1a96ee(++_0x95c124);}(_0x54aa,0x14a));var _0xa54a=function(_0x593382,_0x193c1a){_0x593382=_0x593382-0x0;var _0x25bf09=_0x54aa[_0x593382];return _0x25bf09;};'use strict';var _=require(_0xa54a('0x0'));var util=require(_0xa54a('0x1'));var logger=require('../../config/logger')(_0xa54a('0x2'));var moment=require(_0xa54a('0x3'));var BPromise=require(_0xa54a('0x4'));var rp=require(_0xa54a('0x5'));var fs=require('fs');var path=require(_0xa54a('0x6'));var rimraf=require(_0xa54a('0x7'));var config=require(_0xa54a('0x8'));var attributes=require(_0xa54a('0x9'));module[_0xa54a('0xa')]=function(_0x114cd2,_0x48185e){return _0x114cd2['define']('ChatInternalMessage',attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xa54a('0xb')});};
\ No newline at end of file
+var _0x3415=['path','rimraf','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','util','../../config/logger','bluebird','request-promise'];(function(_0x59d20e,_0x8f5c1){var _0x20d1b1=function(_0x29a0db){while(--_0x29a0db){_0x59d20e['push'](_0x59d20e['shift']());}};_0x20d1b1(++_0x8f5c1);}(_0x3415,0xa4));var _0x5341=function(_0x5752ef,_0x5e54b8){_0x5752ef=_0x5752ef-0x0;var _0x1fe14a=_0x3415[_0x5752ef];return _0x1fe14a;};'use strict';var _=require('lodash');var util=require(_0x5341('0x0'));var logger=require(_0x5341('0x1'))('api');var moment=require('moment');var BPromise=require(_0x5341('0x2'));var rp=require(_0x5341('0x3'));var fs=require('fs');var path=require(_0x5341('0x4'));var rimraf=require(_0x5341('0x5'));var config=require('../../config/environment');var attributes=require(_0x5341('0x6'));module[_0x5341('0x7')]=function(_0xb0fb0d,_0x293097){return _0xb0fb0d[_0x5341('0x8')](_0x5341('0x9'),attributes,{'tableName':_0x5341('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5341('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index fae3f82..a3cfe41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94b6=['register','request','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x94b6,0x143));var _0x694b=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0x94b6[_0x373dee];return _0x46798f;};'use strict';var _=require(_0x694b('0x0'));var util=require(_0x694b('0x1'));var moment=require('moment');var BPromise=require(_0x694b('0x2'));var rs=require(_0x694b('0x3'));var fs=require('fs');var Redis=require(_0x694b('0x4'));var db=require(_0x694b('0x5'))['db'];var utils=require(_0x694b('0x6'));var logger=require(_0x694b('0x7'))(_0x694b('0x8'));var config=require('../../config/environment');var jayson=require(_0x694b('0x9'));var client=jayson[_0x694b('0xa')][_0x694b('0xb')]({'port':0x232a});config[_0x694b('0xc')]=_[_0x694b('0xd')](config[_0x694b('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x694b('0xe'))(new Redis(config['redis']));require('./chatInternalMessage.socket')[_0x694b('0xf')](socket);function respondWithRpcPromise(_0x34120d,_0x1f64f4,_0x3b519a){return new BPromise(function(_0x2517d0,_0x4586e8){return client[_0x694b('0x10')](_0x34120d,_0x3b519a)['then'](function(_0x2b86d2){logger[_0x694b('0x11')](_0x694b('0x12'),_0x1f64f4,_0x694b('0x13'));logger[_0x694b('0x14')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x1f64f4,_0x694b('0x13'),JSON[_0x694b('0x15')](_0x2b86d2));if(_0x2b86d2[_0x694b('0x16')]){if(_0x2b86d2[_0x694b('0x16')][_0x694b('0x17')]===0x1f4){logger[_0x694b('0x16')](_0x694b('0x12'),_0x1f64f4,_0x2b86d2[_0x694b('0x16')][_0x694b('0x18')]);return _0x4586e8(_0x2b86d2[_0x694b('0x16')][_0x694b('0x18')]);}logger[_0x694b('0x16')](_0x694b('0x12'),_0x1f64f4,_0x2b86d2['error']['message']);return _0x2517d0(_0x2b86d2[_0x694b('0x16')][_0x694b('0x18')]);}else{logger[_0x694b('0x11')](_0x694b('0x12'),_0x1f64f4,_0x694b('0x13'));_0x2517d0(_0x2b86d2[_0x694b('0x19')][_0x694b('0x18')]);}})['catch'](function(_0x32dd43){logger['error'](_0x694b('0x12'),_0x1f64f4,_0x32dd43);_0x4586e8(_0x32dd43);});});}
\ No newline at end of file
+var _0x9055=['request\x20sent','debug','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','catch','lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','then','info'];(function(_0x386e5f,_0x1cb205){var _0x2b538b=function(_0x39c089){while(--_0x39c089){_0x386e5f['push'](_0x386e5f['shift']());}};_0x2b538b(++_0x1cb205);}(_0x9055,0x1eb));var _0x5905=function(_0x4c84c9,_0x4d200e){_0x4c84c9=_0x4c84c9-0x0;var _0x3707fd=_0x9055[_0x4c84c9];return _0x3707fd;};'use strict';var _=require(_0x5905('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5905('0x1'));var db=require(_0x5905('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x5905('0x3'))(_0x5905('0x4'));var config=require(_0x5905('0x5'));var jayson=require(_0x5905('0x6'));var client=jayson[_0x5905('0x7')][_0x5905('0x8')]({'port':0x232a});config[_0x5905('0x9')]=_[_0x5905('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5905('0xb'))(new Redis(config['redis']));require(_0x5905('0xc'))['register'](socket);function respondWithRpcPromise(_0xc69655,_0x55e2bb,_0x3a7273){return new BPromise(function(_0xa78c4e,_0x5367b4){return client['request'](_0xc69655,_0x3a7273)[_0x5905('0xd')](function(_0x4047da){logger[_0x5905('0xe')]('ChatInternalMessage,\x20%s,\x20%s',_0x55e2bb,_0x5905('0xf'));logger[_0x5905('0x10')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x55e2bb,_0x5905('0xf'),JSON[_0x5905('0x11')](_0x4047da));if(_0x4047da['error']){if(_0x4047da[_0x5905('0x12')][_0x5905('0x13')]===0x1f4){logger[_0x5905('0x12')](_0x5905('0x14'),_0x55e2bb,_0x4047da[_0x5905('0x12')][_0x5905('0x15')]);return _0x5367b4(_0x4047da[_0x5905('0x12')][_0x5905('0x15')]);}logger[_0x5905('0x12')](_0x5905('0x14'),_0x55e2bb,_0x4047da[_0x5905('0x12')][_0x5905('0x15')]);return _0xa78c4e(_0x4047da[_0x5905('0x12')]['message']);}else{logger[_0x5905('0xe')]('ChatInternalMessage,\x20%s,\x20%s',_0x55e2bb,_0x5905('0xf'));_0xa78c4e(_0x4047da['result'][_0x5905('0x15')]);}})[_0x5905('0x16')](function(_0xf503cb){logger[_0x5905('0x12')](_0x5905('0x14'),_0x55e2bb,_0xf503cb);_0x5367b4(_0xf503cb);});});}
\ No newline at end of file
index 12c881c..ff7e03a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9529=['emit','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events','remove','update'];(function(_0x3f8e20,_0x1daf92){var _0x54b65e=function(_0x4cf6b8){while(--_0x4cf6b8){_0x3f8e20['push'](_0x3f8e20['shift']());}};_0x54b65e(++_0x1daf92);}(_0x9529,0x145));var _0x9952=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9529[_0x321bb2];return _0x9c12ed;};'use strict';var ChatInternalMessageEvents=require(_0x9952('0x0'));var events=['save',_0x9952('0x1'),_0x9952('0x2')];function createListener(_0x43bc96,_0x54fca0){return function(_0x1faaf2){_0x54fca0[_0x9952('0x3')](_0x43bc96,_0x1faaf2);};}function removeListener(_0x421f3b,_0x5b9f53){return function(){ChatInternalMessageEvents[_0x9952('0x4')](_0x421f3b,_0x5b9f53);};}exports[_0x9952('0x5')]=function(_0x448495){for(var _0x16204a=0x0,_0x59dc87=events[_0x9952('0x6')];_0x16204a<_0x59dc87;_0x16204a++){var _0x33237a=events[_0x16204a];var _0x53bbd0=createListener(_0x9952('0x7')+_0x33237a,_0x448495);ChatInternalMessageEvents['on'](_0x33237a,_0x53bbd0);}};
\ No newline at end of file
+var _0xc988=['removeListener','chatInternalMessage:','./chatInternalMessage.events','save','remove','update','emit'];(function(_0x5c1637,_0x4e1b5){var _0x301a27=function(_0x4a5246){while(--_0x4a5246){_0x5c1637['push'](_0x5c1637['shift']());}};_0x301a27(++_0x4e1b5);}(_0xc988,0x16e));var _0x8c98=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xc988[_0x1d24eb];return _0x1dc576;};'use strict';var ChatInternalMessageEvents=require(_0x8c98('0x0'));var events=[_0x8c98('0x1'),_0x8c98('0x2'),_0x8c98('0x3')];function createListener(_0x2bd86f,_0xbb06e5){return function(_0x59c95e){_0xbb06e5[_0x8c98('0x4')](_0x2bd86f,_0x59c95e);};}function removeListener(_0xaaf42c,_0x9d69a){return function(){ChatInternalMessageEvents[_0x8c98('0x5')](_0xaaf42c,_0x9d69a);};}exports['register']=function(_0x3286d9){for(var _0x31b6ca=0x0,_0x3694b8=events['length'];_0x31b6ca<_0x3694b8;_0x31b6ca++){var _0x594382=events[_0x31b6ca];var _0x45d6f1=createListener(_0x8c98('0x6')+_0x594382,_0x3286d9);ChatInternalMessageEvents['on'](_0x594382,_0x45d6f1);}};
\ No newline at end of file
index 7fe3d7e..4362860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ca=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatInternalMessage.controller','get','isAuthenticated','index','describe','/users','getUsers','/:id','post','create','update','delete'];(function(_0x28fc42,_0x184808){var _0x121024=function(_0x24a350){while(--_0x24a350){_0x28fc42['push'](_0x28fc42['shift']());}};_0x121024(++_0x184808);}(_0x10ca,0x86));var _0xa10c=function(_0x450721,_0x5485e4){_0x450721=_0x450721-0x0;var _0x84be39=_0x10ca[_0x450721];return _0x84be39;};'use strict';var multer=require(_0xa10c('0x0'));var util=require(_0xa10c('0x1'));var path=require(_0xa10c('0x2'));var timeout=require(_0xa10c('0x3'));var express=require(_0xa10c('0x4'));var router=express[_0xa10c('0x5')]();var fs_extra=require(_0xa10c('0x6'));var auth=require(_0xa10c('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa10c('0x8'));router[_0xa10c('0x9')]('/',auth[_0xa10c('0xa')](),controller[_0xa10c('0xb')]);router[_0xa10c('0x9')]('/describe',auth[_0xa10c('0xa')](),controller[_0xa10c('0xc')]);router[_0xa10c('0x9')](_0xa10c('0xd'),auth[_0xa10c('0xa')](),controller[_0xa10c('0xe')]);router[_0xa10c('0x9')](_0xa10c('0xf'),auth['isAuthenticated'](),controller['show']);router[_0xa10c('0x10')]('/',auth[_0xa10c('0xa')](),controller[_0xa10c('0x11')]);router['put'](_0xa10c('0xf'),controller[_0xa10c('0x12')]);router[_0xa10c('0x13')](_0xa10c('0xf'),auth[_0xa10c('0xa')](),controller[_0xa10c('0x14')]);module[_0xa10c('0x15')]=router;
\ No newline at end of file
+var _0x095b=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','getUsers','show','post','create','put','/:id','update','delete','multer','connect-timeout','express','Router'];(function(_0x4897b5,_0x3d2e27){var _0x3adafe=function(_0x242665){while(--_0x242665){_0x4897b5['push'](_0x4897b5['shift']());}};_0x3adafe(++_0x3d2e27);}(_0x095b,0x15c));var _0xb095=function(_0x596a2e,_0x23cdbf){_0x596a2e=_0x596a2e-0x0;var _0x598392=_0x095b[_0x596a2e];return _0x598392;};'use strict';var multer=require(_0xb095('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xb095('0x1'));var express=require(_0xb095('0x2'));var router=express[_0xb095('0x3')]();var fs_extra=require(_0xb095('0x4'));var auth=require(_0xb095('0x5'));var interaction=require(_0xb095('0x6'));var config=require(_0xb095('0x7'));var controller=require(_0xb095('0x8'));router[_0xb095('0x9')]('/',auth[_0xb095('0xa')](),controller[_0xb095('0xb')]);router[_0xb095('0x9')](_0xb095('0xc'),auth[_0xb095('0xa')](),controller[_0xb095('0xd')]);router[_0xb095('0x9')]('/users',auth[_0xb095('0xa')](),controller[_0xb095('0xe')]);router[_0xb095('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xb095('0xf')]);router[_0xb095('0x10')]('/',auth[_0xb095('0xa')](),controller[_0xb095('0x11')]);router[_0xb095('0x12')](_0xb095('0x13'),controller[_0xb095('0x14')]);router[_0xb095('0x15')](_0xb095('0x13'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2966e82..0ae2374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['exports','TEXT','medium','BOOLEAN','ENUM','out','DATE','STRING','sequelize'];(function(_0x2baccb,_0x28c0e9){var _0x269cd3=function(_0x5a9b6f){while(--_0x5a9b6f){_0x2baccb['push'](_0x2baccb['shift']());}};_0x269cd3(++_0x28c0e9);}(_0x9348,0x10d));var _0x8934=function(_0x3d2f68,_0x48f637){_0x3d2f68=_0x3d2f68-0x0;var _0x1e6690=_0x9348[_0x3d2f68];return _0x1e6690;};'use strict';var Sequelize=require(_0x8934('0x0'));module[_0x8934('0x1')]={'body':{'type':Sequelize[_0x8934('0x2')](_0x8934('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x8934('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x8934('0x5')]('in',_0x8934('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x8934('0x7')]},'providerName':{'type':Sequelize[_0x8934('0x8')]},'providerResponse':{'type':Sequelize[_0x8934('0x2')]}};
\ No newline at end of file
+var _0xadcc=['TEXT','medium','BOOLEAN','ENUM','DATE','STRING','sequelize'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0xadcc,0x76));var _0xcadc=function(_0x51519b,_0x33e2a1){_0x51519b=_0x51519b-0x0;var _0x29e6d8=_0xadcc[_0x51519b];return _0x29e6d8;};'use strict';var Sequelize=require(_0xcadc('0x0'));module['exports']={'body':{'type':Sequelize[_0xcadc('0x1')](_0xcadc('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xcadc('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xcadc('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcadc('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0xcadc('0x5')]},'providerName':{'type':Sequelize[_0xcadc('0x6')]},'providerResponse':{'type':Sequelize[_0xcadc('0x1')]}};
\ No newline at end of file
index 2b118f4..6b215fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc3=['manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','reject','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','sequelize','QueryTypes','motionChannel','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','http','client','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','message','result','status','end','json','offset','undefined','count','limit','apply','update','destroy','sendStatus','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','includeAll','findAll','rows','catch','show','params','length','merge','options','find','body','describe','chat-interactions','accept','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','isNil','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','SELECT','contact','User','fullname','email','internal'];(function(_0x21083d,_0x4df9cf){var _0x29dda1=function(_0x1c3a43){while(--_0x1c3a43){_0x21083d['push'](_0x21083d['shift']());}};_0x29dda1(++_0x4df9cf);}(_0x2cc3,0x19e));var _0x32cc=function(_0x1ae14d,_0x41bab5){_0x1ae14d=_0x1ae14d-0x0;var _0x5bfc99=_0x2cc3[_0x1ae14d];return _0x5bfc99;};'use strict';var emlformat=require(_0x32cc('0x0'));var rimraf=require(_0x32cc('0x1'));var zipdir=require(_0x32cc('0x2'));var jsonpatch=require(_0x32cc('0x3'));var rp=require(_0x32cc('0x4'));var moment=require(_0x32cc('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32cc('0x6'));var util=require(_0x32cc('0x7'));var path=require(_0x32cc('0x8'));var sox=require(_0x32cc('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x32cc('0xa'));var _=require(_0x32cc('0xb'));var squel=require(_0x32cc('0xc'));var crypto=require('crypto');var jsforce=require(_0x32cc('0xd'));var deskjs=require(_0x32cc('0xe'));var toCsv=require(_0x32cc('0xf'));var querystring=require(_0x32cc('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x32cc('0x11'));var qs=require(_0x32cc('0x12'));var as=require(_0x32cc('0x13'));var hardwareService=require(_0x32cc('0x14'));var logger=require(_0x32cc('0x15'))(_0x32cc('0x16'));var utils=require(_0x32cc('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x32cc('0x18'));var db=require('../../mysqldb')['db'];config[_0x32cc('0x19')]=_[_0x32cc('0x1a')](config[_0x32cc('0x19')],{'host':_0x32cc('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x32cc('0x19')]));require(_0x32cc('0x1c'))[_0x32cc('0x1d')](socket);var jayson=require(_0x32cc('0x1e'));var client=jayson['client'][_0x32cc('0x1f')]({'port':0x232c});var client9002=jayson[_0x32cc('0x20')][_0x32cc('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2c7865,_0x1c9d47,_0x378061,_0x9b37e9){return new BPromise(function(_0x430efe,_0x552d04){var _0x1f2352=_0x9b37e9||client;return _0x1f2352['request'](_0x2c7865,_0x378061)[_0x32cc('0x21')](function(_0x146df8){logger[_0x32cc('0x22')](_0x32cc('0x23'),_0x1c9d47,_0x32cc('0x24'));logger[_0x32cc('0x25')](_0x32cc('0x26'),_0x1c9d47,_0x32cc('0x24'),JSON['stringify'](_0x146df8));if(_0x146df8[_0x32cc('0x27')]){if(_0x146df8[_0x32cc('0x27')]['code']===0x1f4){logger[_0x32cc('0x27')](_0x32cc('0x23'),_0x1c9d47,_0x146df8[_0x32cc('0x27')][_0x32cc('0x28')]);return _0x552d04(_0x146df8['error'][_0x32cc('0x28')]);}logger[_0x32cc('0x27')]('ChatMessage,\x20%s,\x20%s',_0x1c9d47,_0x146df8[_0x32cc('0x27')][_0x32cc('0x28')]);return _0x430efe(_0x146df8[_0x32cc('0x27')][_0x32cc('0x28')]);}else{logger[_0x32cc('0x22')]('ChatMessage,\x20%s,\x20%s',_0x1c9d47,_0x32cc('0x24'));_0x430efe(_0x146df8[_0x32cc('0x29')][_0x32cc('0x28')]);}})['catch'](function(_0xaad94a){logger[_0x32cc('0x27')](_0x32cc('0x23'),_0x1c9d47,_0xaad94a);_0x552d04(_0xaad94a);});});}function respondWithStatusCode(_0x2568c0,_0x45ea06){_0x45ea06=_0x45ea06||0xcc;return function(_0x4a4473){if(_0x4a4473){return _0x2568c0['sendStatus'](_0x45ea06);}return _0x2568c0[_0x32cc('0x2a')](_0x45ea06)[_0x32cc('0x2b')]();};}function respondWithResult(_0x98134c,_0x14a2a5){_0x14a2a5=_0x14a2a5||0xc8;return function(_0x5e1347){if(_0x5e1347){return _0x98134c['status'](_0x14a2a5)[_0x32cc('0x2c')](_0x5e1347);}};}function respondWithFilteredResult(_0x40f8b8,_0x28319d){return function(_0x146285){if(_0x146285){var _0x260b6=typeof _0x28319d[_0x32cc('0x2d')]===_0x32cc('0x2e')&&typeof _0x28319d['limit']===_0x32cc('0x2e');var _0x58664e=_0x146285[_0x32cc('0x2f')];var _0x43cd97=_0x260b6?0x0:_0x28319d[_0x32cc('0x2d')];var _0xcddedb=_0x260b6?_0x146285[_0x32cc('0x2f')]:_0x28319d['offset']+_0x28319d[_0x32cc('0x30')];var _0x53180a;if(_0xcddedb>=_0x58664e){_0xcddedb=_0x58664e;_0x53180a=0xc8;}else{_0x53180a=0xce;}_0x40f8b8[_0x32cc('0x2a')](_0x53180a);return _0x40f8b8['set']('Content-Range',_0x43cd97+'-'+_0xcddedb+'/'+_0x58664e)['json'](_0x146285);}return null;};}function patchUpdates(_0x2e343f){return function(_0x1c5440){try{jsonpatch[_0x32cc('0x31')](_0x1c5440,_0x2e343f,!![]);}catch(_0xdf28ef){return BPromise['reject'](_0xdf28ef);}return _0x1c5440['save']();};}function saveUpdates(_0x3cadaa,_0x32f55e){return function(_0x5ebae8){if(_0x5ebae8){return _0x5ebae8[_0x32cc('0x32')](_0x3cadaa)[_0x32cc('0x21')](function(_0x2f2ab8){return _0x2f2ab8;});}return null;};}function removeEntity(_0x51bc42,_0x565d56){return function(_0x419cb8){if(_0x419cb8){return _0x419cb8[_0x32cc('0x33')]()[_0x32cc('0x21')](function(){_0x51bc42[_0x32cc('0x2a')](0xcc)[_0x32cc('0x2b')]();});}};}function handleEntityNotFound(_0x1ec814,_0xbea1de){return function(_0x4e65bc){if(!_0x4e65bc){_0x1ec814[_0x32cc('0x34')](0x194);}return _0x4e65bc;};}function handleError(_0x4ecded,_0xf2c152){_0xf2c152=_0xf2c152||0x1f4;return function(_0x571f60){logger['error'](_0x571f60[_0x32cc('0x35')]);if(_0x571f60[_0x32cc('0x36')]){delete _0x571f60[_0x32cc('0x36')];}_0x4ecded[_0x32cc('0x2a')](_0xf2c152)[_0x32cc('0x37')](_0x571f60);};}exports[_0x32cc('0x38')]=function(_0xc379c9,_0x500bee){var _0x2b528d={},_0x21f4b1={},_0x435120={'count':0x0,'rows':[]};var _0x4f5476=_[_0x32cc('0x39')](db[_0x32cc('0x3a')][_0x32cc('0x3b')],function(_0x275ca2){return{'name':_0x275ca2[_0x32cc('0x3c')],'type':_0x275ca2[_0x32cc('0x3d')]['key']};});_0x21f4b1[_0x32cc('0x3e')]=_['map'](_0x4f5476,_0x32cc('0x36'));_0x21f4b1[_0x32cc('0x3f')]=_[_0x32cc('0x40')](_0xc379c9[_0x32cc('0x3f')]);_0x21f4b1[_0x32cc('0x41')]=_['intersection'](_0x21f4b1[_0x32cc('0x3e')],_0x21f4b1['query']);_0x2b528d[_0x32cc('0x42')]=_[_0x32cc('0x43')](_0x21f4b1[_0x32cc('0x3e')],qs[_0x32cc('0x44')](_0xc379c9[_0x32cc('0x3f')][_0x32cc('0x44')]));_0x2b528d[_0x32cc('0x42')]=_0x2b528d[_0x32cc('0x42')]['length']?_0x2b528d['attributes']:_0x21f4b1['model'];if(!_0xc379c9['query']['hasOwnProperty'](_0x32cc('0x45'))){_0x2b528d[_0x32cc('0x30')]=qs[_0x32cc('0x30')](_0xc379c9['query'][_0x32cc('0x30')]);_0x2b528d[_0x32cc('0x2d')]=qs[_0x32cc('0x2d')](_0xc379c9[_0x32cc('0x3f')]['offset']);}_0x2b528d[_0x32cc('0x46')]=qs[_0x32cc('0x47')](_0xc379c9[_0x32cc('0x3f')][_0x32cc('0x47')]);_0x2b528d[_0x32cc('0x48')]=qs[_0x32cc('0x41')](_[_0x32cc('0x49')](_0xc379c9[_0x32cc('0x3f')],_0x21f4b1[_0x32cc('0x41')]),_0x4f5476);if(_0xc379c9[_0x32cc('0x3f')][_0x32cc('0x4a')]){_0x2b528d[_0x32cc('0x48')]=_['merge'](_0x2b528d[_0x32cc('0x48')],{'$or':_[_0x32cc('0x39')](_0x4f5476,function(_0x5c9289){if(_0x5c9289['type']!=='VIRTUAL'){var _0x42e7ee={};_0x42e7ee[_0x5c9289[_0x32cc('0x36')]]={'$like':'%'+_0xc379c9[_0x32cc('0x3f')][_0x32cc('0x4a')]+'%'};return _0x42e7ee;}})});}_0x2b528d=_['merge']({},_0x2b528d,_0xc379c9['options']);var _0xc7a618={'where':_0x2b528d[_0x32cc('0x48')]};return db[_0x32cc('0x3a')][_0x32cc('0x2f')](_0xc7a618)[_0x32cc('0x21')](function(_0x12776f){_0x435120[_0x32cc('0x2f')]=_0x12776f;if(_0xc379c9[_0x32cc('0x3f')][_0x32cc('0x4b')]){_0x2b528d['include']=[{'all':!![]}];}return db[_0x32cc('0x3a')][_0x32cc('0x4c')](_0x2b528d);})[_0x32cc('0x21')](function(_0x49bd96){_0x435120[_0x32cc('0x4d')]=_0x49bd96;return _0x435120;})[_0x32cc('0x21')](respondWithFilteredResult(_0x500bee,_0x2b528d))[_0x32cc('0x4e')](handleError(_0x500bee,null));};exports[_0x32cc('0x4f')]=function(_0x541a04,_0x107d33){var _0x2be50f={'raw':!![],'where':{'id':_0x541a04[_0x32cc('0x50')]['id']}},_0x30bfbe={};_0x30bfbe[_0x32cc('0x3e')]=_[_0x32cc('0x40')](db[_0x32cc('0x3a')][_0x32cc('0x3b')]);_0x30bfbe[_0x32cc('0x3f')]=_[_0x32cc('0x40')](_0x541a04[_0x32cc('0x3f')]);_0x30bfbe[_0x32cc('0x41')]=_[_0x32cc('0x43')](_0x30bfbe[_0x32cc('0x3e')],_0x30bfbe[_0x32cc('0x3f')]);_0x2be50f[_0x32cc('0x42')]=_[_0x32cc('0x43')](_0x30bfbe[_0x32cc('0x3e')],qs[_0x32cc('0x44')](_0x541a04[_0x32cc('0x3f')]['fields']));_0x2be50f[_0x32cc('0x42')]=_0x2be50f[_0x32cc('0x42')][_0x32cc('0x51')]?_0x2be50f[_0x32cc('0x42')]:_0x30bfbe[_0x32cc('0x3e')];if(_0x541a04[_0x32cc('0x3f')]['includeAll']){_0x2be50f['include']=[{'all':!![]}];}_0x2be50f=_[_0x32cc('0x52')]({},_0x2be50f,_0x541a04[_0x32cc('0x53')]);return db[_0x32cc('0x3a')][_0x32cc('0x54')](_0x2be50f)['then'](handleEntityNotFound(_0x107d33,null))['then'](respondWithResult(_0x107d33,null))[_0x32cc('0x4e')](handleError(_0x107d33,null));};exports['create']=function(_0x302ddd,_0x10aa9){return db[_0x32cc('0x3a')]['create'](_0x302ddd['body'],{})['then'](respondWithResult(_0x10aa9,0xc9))[_0x32cc('0x4e')](handleError(_0x10aa9,null));};exports[_0x32cc('0x32')]=function(_0x1e88bd,_0x337b2){if(_0x1e88bd[_0x32cc('0x55')]['id']){delete _0x1e88bd[_0x32cc('0x55')]['id'];}return db[_0x32cc('0x3a')][_0x32cc('0x54')]({'where':{'id':_0x1e88bd[_0x32cc('0x50')]['id']}})[_0x32cc('0x21')](handleEntityNotFound(_0x337b2,null))[_0x32cc('0x21')](saveUpdates(_0x1e88bd[_0x32cc('0x55')],null))['then'](respondWithResult(_0x337b2,null))[_0x32cc('0x4e')](handleError(_0x337b2,null));};exports[_0x32cc('0x33')]=function(_0x8584d8,_0x270591){return db['ChatMessage']['find']({'where':{'id':_0x8584d8[_0x32cc('0x50')]['id']}})[_0x32cc('0x21')](handleEntityNotFound(_0x270591,null))['then'](removeEntity(_0x270591,null))[_0x32cc('0x4e')](handleError(_0x270591,null));};exports[_0x32cc('0x56')]=function(_0x39d6,_0x35fa0c){return db[_0x32cc('0x3a')][_0x32cc('0x56')]()[_0x32cc('0x21')](respondWithResult(_0x35fa0c,null))['catch'](handleError(_0x35fa0c,null));};var interaction_log=require(_0x32cc('0x15'))(_0x32cc('0x57'));exports[_0x32cc('0x58')]=function(_0x6a2dfc,_0x1d26b5,_0x5d81fc){var _0x379df7={'agent':{},'channel':'chat'};if(_0x6a2dfc[_0x32cc('0x55')]['id']){delete _0x6a2dfc[_0x32cc('0x55')]['id'];}_0x6a2dfc[_0x32cc('0x55')]['read']=!![];_0x6a2dfc[_0x32cc('0x55')][_0x32cc('0x59')]=moment()[_0x32cc('0x5a')](_0x32cc('0x5b'));_0x6a2dfc['body'][_0x32cc('0x5c')]=_0x6a2dfc[_0x32cc('0x55')][_0x32cc('0x5c')]||_0x6a2dfc['user']['id'];_0x379df7[_0x32cc('0x5d')]['id']=_0x6a2dfc['body'][_0x32cc('0x5c')];return db['ChatMessage'][_0x32cc('0x54')]({'where':{'id':_0x6a2dfc[_0x32cc('0x50')]['id'],'UserId':null}})[_0x32cc('0x21')](handleEntityNotFound(_0x1d26b5,null))[_0x32cc('0x21')](saveUpdates(_0x6a2dfc['body'],null))[_0x32cc('0x21')](function(_0x14aa2a){if(_0x14aa2a){_0x379df7[_0x32cc('0x28')]=_0x14aa2a[_0x32cc('0x5e')]({'plain':!![]});return db[_0x32cc('0x5f')][_0x32cc('0x54')]({'where':{'id':_0x14aa2a[_0x32cc('0x60')]}});}return null;})[_0x32cc('0x21')](handleEntityNotFound(_0x1d26b5,null))['then'](function(_0x441341){if(_0x441341){return _0x441341['update']({'UserId':_0x6a2dfc[_0x32cc('0x55')][_0x32cc('0x5c')],'read1stAt':_[_0x32cc('0x61')](_0x441341['read1stAt'])?moment()[_0x32cc('0x5a')](_0x32cc('0x5b')):undefined});}return null;})[_0x32cc('0x21')](function(_0x4afffb){if(_0x4afffb){_0x379df7[_0x32cc('0x62')]=_0x4afffb[_0x32cc('0x5e')]({'plain':!![]});interaction_log[_0x32cc('0x22')](_0x32cc('0x63'),_0x6a2dfc[_0x32cc('0x64')]['id'],_0x6a2dfc[_0x32cc('0x64')][_0x32cc('0x36')],_0x6a2dfc[_0x32cc('0x64')][_0x32cc('0x65')],_0x379df7[_0x32cc('0x62')]['id'],_0x6a2dfc[_0x32cc('0x55')]?JSON[_0x32cc('0x66')](_0x6a2dfc[_0x32cc('0x55')]):_0x32cc('0x67'));return respondWithRpcPromise(_0x32cc('0x68'),_0x32cc('0x69'),_0x379df7);}return null;})['then'](function(_0x19f445){var _0x5bb3a3=_0x32cc('0x6a')+_0x19f445[_0x32cc('0x28')]['ContactId'];return db['sequelize'][_0x32cc('0x3f')](_0x5bb3a3,{'type':db[_0x32cc('0x6b')]['QueryTypes'][_0x32cc('0x6c')],'raw':!![]})[_0x32cc('0x21')](function(_0x166f5e){return _0x166f5e;});})[_0x32cc('0x21')](function(_0x26dadd){if(_0x26dadd){_0x379df7['message'][_0x32cc('0x6d')]=_0x26dadd[0x0];if(!_0x6a2dfc[_0x32cc('0x55')][_0x32cc('0x5c')])return;return db[_0x32cc('0x6e')][_0x32cc('0x54')]({'where':{'id':_0x6a2dfc[_0x32cc('0x55')]['UserId'],'role':_0x32cc('0x5d')},'attributes':['id',_0x32cc('0x36'),_0x32cc('0x6f'),_0x32cc('0x70'),_0x32cc('0x71')],'raw':!![]});}return null;})[_0x32cc('0x21')](function(_0x568d12){if(!_0x568d12)return null;_0x379df7[_0x32cc('0x28')][_0x32cc('0x5d')]=_0x568d12;return _0x379df7;})['then'](function(_0x1011c6){if(_0x1011c6){if(_0x6a2dfc[_0x32cc('0x55')][_0x32cc('0x72')]){_0x379df7[_0x32cc('0x28')][_0x32cc('0x73')]=util[_0x32cc('0x5a')](_0x32cc('0x74'),_0x6a2dfc[_0x32cc('0x64')][_0x32cc('0x36')]);_0x379df7['message'][_0x32cc('0x75')]=_0x379df7['channel'];_0x379df7[_0x32cc('0x28')]['motionChannel']=_0x379df7[_0x32cc('0x75')];_0x379df7['message'][_0x32cc('0x76')]=_0x32cc('0x58');return respondWithRpcPromise(_0x32cc('0x77'),'EventManager',{'event':_0x32cc('0x78'),'message':_[_0x32cc('0x52')](_0x379df7[_0x32cc('0x28')],JSON[_0x32cc('0x79')](_0x379df7[_0x32cc('0x62')][_0x32cc('0x7a')]))},client9002)[_0x32cc('0x21')](function(){return _0x379df7;});}return _0x379df7;}return null;})[_0x32cc('0x21')](respondWithResult(_0x1d26b5,null))[_0x32cc('0x4e')](handleError(_0x1d26b5,null));};var interaction_log=require(_0x32cc('0x15'))(_0x32cc('0x57'));exports[_0x32cc('0x7b')]=function(_0x225d45,_0x592dc0,_0x21ae34){var _0x204bee={'agent':{},'channel':'chat'};if(_0x225d45[_0x32cc('0x55')]['id']){delete _0x225d45['body']['id'];}_0x225d45[_0x32cc('0x55')][_0x32cc('0x5c')]=_0x225d45['body']['UserId']||_0x225d45[_0x32cc('0x64')]['id'];_0x204bee[_0x32cc('0x5d')]['id']=_0x225d45[_0x32cc('0x55')][_0x32cc('0x5c')];return db[_0x32cc('0x3a')]['find']({'where':{'id':_0x225d45[_0x32cc('0x50')]['id'],'UserId':null}})[_0x32cc('0x21')](handleEntityNotFound(_0x592dc0,null))[_0x32cc('0x21')](function(_0x53145f){if(_0x53145f){_0x204bee['message']=_0x53145f[_0x32cc('0x5e')]({'plain':!![]});return db[_0x32cc('0x5f')][_0x32cc('0x54')]({'where':{'id':_0x53145f['ChatInteractionId']}});}return null;})[_0x32cc('0x21')](handleEntityNotFound(_0x592dc0,null))[_0x32cc('0x21')](function(_0xc6c966){if(_0xc6c966){_0x204bee[_0x32cc('0x62')]=_0xc6c966[_0x32cc('0x5e')]({'plain':!![]});interaction_log[_0x32cc('0x22')](_0x32cc('0x7c'),_0x225d45[_0x32cc('0x64')]['id'],_0x225d45[_0x32cc('0x64')][_0x32cc('0x36')],_0x225d45[_0x32cc('0x64')]['role'],_0x204bee[_0x32cc('0x62')]['id'],_0x225d45[_0x32cc('0x55')]?JSON[_0x32cc('0x66')](_0x225d45[_0x32cc('0x55')]):_0x32cc('0x67'));return respondWithRpcPromise(_0x32cc('0x7d'),_0x32cc('0x7e'),_0x204bee);}return null;})['then'](function(_0x4f3260){var _0x1118f9=_0x32cc('0x6a')+_0x4f3260[_0x32cc('0x28')][_0x32cc('0x7f')];return db[_0x32cc('0x80')][_0x32cc('0x3f')](_0x1118f9,{'type':db[_0x32cc('0x6b')][_0x32cc('0x81')][_0x32cc('0x6c')],'raw':!![]})[_0x32cc('0x21')](function(_0x4b2968){return _0x4b2968;});})[_0x32cc('0x21')](function(_0x283672){if(_0x283672){_0x204bee['message']['contact']=_0x283672[0x0];if(!_0x225d45[_0x32cc('0x55')][_0x32cc('0x5c')])return;return db[_0x32cc('0x6e')][_0x32cc('0x54')]({'where':{'id':_0x225d45[_0x32cc('0x55')][_0x32cc('0x5c')],'role':'agent'},'attributes':['id','name',_0x32cc('0x6f'),_0x32cc('0x70'),_0x32cc('0x71')],'raw':!![]});}return null;})[_0x32cc('0x21')](function(_0x4084cf){if(!_0x4084cf)return null;_0x204bee[_0x32cc('0x28')]['agent']=_0x4084cf;return _0x204bee;})[_0x32cc('0x21')](function(_0x5d0e53){if(_0x5d0e53){_0x5d0e53[_0x32cc('0x28')][_0x32cc('0x73')]=util[_0x32cc('0x5a')]('SIP/%s',_0x225d45['user'][_0x32cc('0x36')]);_0x5d0e53[_0x32cc('0x28')]['channel']=_0x204bee[_0x32cc('0x75')];_0x5d0e53['message'][_0x32cc('0x82')]=_0x204bee[_0x32cc('0x75')];_0x5d0e53[_0x32cc('0x28')]['event']='reject';respondWithRpcPromise('EventManager',_0x32cc('0x77'),{'event':_0x32cc('0x83'),'message':_[_0x32cc('0x52')](_0x204bee[_0x32cc('0x28')],JSON[_0x32cc('0x79')](_0x204bee[_0x32cc('0x62')][_0x32cc('0x7a')]))},client9002);return _0x204bee;}return null;})[_0x32cc('0x21')](respondWithResult(_0x592dc0,null))['catch'](handleError(_0x592dc0,null));};
\ No newline at end of file
+var _0x814b=['pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','find','create','body','params','catch','describe','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteractionId','isNil','read1stAt','get','[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','QueryTypes','fullname','internal','manual','interface','channel','motionChannel','event','accept','EventManager','acceptmessage','parse','chat-interactions','ChatInteraction','RejectMessage','rejectMessage','sequelize','User','email','SIP/%s','rejectmessage','formData','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','redis','localhost','./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','sendStatus','status','end','json','offset','undefined','set','Content-Range','apply','reject','update','destroy','name','send','index','ChatMessage','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','nolimit','limit','order','sort','where'];(function(_0x3f9aa0,_0x478ec3){var _0x4a82c0=function(_0x279091){while(--_0x279091){_0x3f9aa0['push'](_0x3f9aa0['shift']());}};_0x4a82c0(++_0x478ec3);}(_0x814b,0x1bd));var _0xb814=function(_0x424329,_0x1a3e61){_0x424329=_0x424329-0x0;var _0x324625=_0x814b[_0x424329];return _0x324625;};'use strict';var emlformat=require(_0xb814('0x0'));var rimraf=require(_0xb814('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb814('0x2'));var rp=require(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var Mustache=require(_0xb814('0x6'));var util=require('util');var path=require('path');var sox=require(_0xb814('0x7'));var csv=require(_0xb814('0x8'));var ejs=require(_0xb814('0x9'));var fs=require('fs');var fs_extra=require(_0xb814('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb814('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb814('0x8'));var querystring=require('querystring');var Papa=require(_0xb814('0xc'));var Redis=require(_0xb814('0xd'));var authService=require(_0xb814('0xe'));var qs=require(_0xb814('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb814('0x10'))(_0xb814('0x11'));var utils=require(_0xb814('0x12'));var config=require(_0xb814('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xb814('0x14')]=_['defaults'](config[_0xb814('0x14')],{'host':_0xb814('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb814('0x14')]));require(_0xb814('0x16'))[_0xb814('0x17')](socket);var jayson=require(_0xb814('0x18'));var client=jayson[_0xb814('0x19')][_0xb814('0x1a')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1b0a81,_0x1defb3,_0x515323,_0x98e099){return new BPromise(function(_0x4dd395,_0xb09e07){var _0xb1cc6d=_0x98e099||client;return _0xb1cc6d[_0xb814('0x1b')](_0x1b0a81,_0x515323)[_0xb814('0x1c')](function(_0x530121){logger['info'](_0xb814('0x1d'),_0x1defb3,_0xb814('0x1e'));logger['debug'](_0xb814('0x1f'),_0x1defb3,_0xb814('0x1e'),JSON[_0xb814('0x20')](_0x530121));if(_0x530121[_0xb814('0x21')]){if(_0x530121[_0xb814('0x21')][_0xb814('0x22')]===0x1f4){logger[_0xb814('0x21')](_0xb814('0x1d'),_0x1defb3,_0x530121[_0xb814('0x21')][_0xb814('0x23')]);return _0xb09e07(_0x530121[_0xb814('0x21')][_0xb814('0x23')]);}logger['error'](_0xb814('0x1d'),_0x1defb3,_0x530121['error'][_0xb814('0x23')]);return _0x4dd395(_0x530121[_0xb814('0x21')][_0xb814('0x23')]);}else{logger[_0xb814('0x24')](_0xb814('0x1d'),_0x1defb3,'request\x20sent');_0x4dd395(_0x530121[_0xb814('0x25')][_0xb814('0x23')]);}})['catch'](function(_0x499660){logger[_0xb814('0x21')](_0xb814('0x1d'),_0x1defb3,_0x499660);_0xb09e07(_0x499660);});});}function respondWithStatusCode(_0x859493,_0x303308){_0x303308=_0x303308||0xcc;return function(_0x56e3ba){if(_0x56e3ba){return _0x859493[_0xb814('0x26')](_0x303308);}return _0x859493[_0xb814('0x27')](_0x303308)[_0xb814('0x28')]();};}function respondWithResult(_0x11a58d,_0x3ecec1){_0x3ecec1=_0x3ecec1||0xc8;return function(_0x399047){if(_0x399047){return _0x11a58d['status'](_0x3ecec1)[_0xb814('0x29')](_0x399047);}};}function respondWithFilteredResult(_0x5cf6eb,_0x11583d){return function(_0x1b9440){if(_0x1b9440){var _0x3a9f3f=typeof _0x11583d[_0xb814('0x2a')]===_0xb814('0x2b')&&typeof _0x11583d['limit']==='undefined';var _0x3d9ecc=_0x1b9440['count'];var _0x478d7a=_0x3a9f3f?0x0:_0x11583d[_0xb814('0x2a')];var _0x458386=_0x3a9f3f?_0x1b9440['count']:_0x11583d[_0xb814('0x2a')]+_0x11583d['limit'];var _0x5d6015;if(_0x458386>=_0x3d9ecc){_0x458386=_0x3d9ecc;_0x5d6015=0xc8;}else{_0x5d6015=0xce;}_0x5cf6eb[_0xb814('0x27')](_0x5d6015);return _0x5cf6eb[_0xb814('0x2c')](_0xb814('0x2d'),_0x478d7a+'-'+_0x458386+'/'+_0x3d9ecc)['json'](_0x1b9440);}return null;};}function patchUpdates(_0x303223){return function(_0x5bedb0){try{jsonpatch[_0xb814('0x2e')](_0x5bedb0,_0x303223,!![]);}catch(_0x27ebf9){return BPromise[_0xb814('0x2f')](_0x27ebf9);}return _0x5bedb0['save']();};}function saveUpdates(_0x2b6f0f,_0x443fe6){return function(_0x5691b9){if(_0x5691b9){return _0x5691b9[_0xb814('0x30')](_0x2b6f0f)['then'](function(_0x597245){return _0x597245;});}return null;};}function removeEntity(_0x527bb1,_0x374e9d){return function(_0x392927){if(_0x392927){return _0x392927[_0xb814('0x31')]()[_0xb814('0x1c')](function(){_0x527bb1[_0xb814('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5584e5,_0x35949b){return function(_0x2046bf){if(!_0x2046bf){_0x5584e5[_0xb814('0x26')](0x194);}return _0x2046bf;};}function handleError(_0x50cfa6,_0x565244){_0x565244=_0x565244||0x1f4;return function(_0x545ead){logger['error'](_0x545ead['stack']);if(_0x545ead[_0xb814('0x32')]){delete _0x545ead[_0xb814('0x32')];}_0x50cfa6[_0xb814('0x27')](_0x565244)[_0xb814('0x33')](_0x545ead);};}exports[_0xb814('0x34')]=function(_0x1f5caf,_0x33f25f){var _0x1b48fa={},_0x38c57f={},_0x48d379={'count':0x0,'rows':[]};var _0x78089d=_['map'](db[_0xb814('0x35')][_0xb814('0x36')],function(_0x124e8a){return{'name':_0x124e8a[_0xb814('0x37')],'type':_0x124e8a[_0xb814('0x38')]['key']};});_0x38c57f[_0xb814('0x39')]=_[_0xb814('0x3a')](_0x78089d,'name');_0x38c57f['query']=_[_0xb814('0x3b')](_0x1f5caf[_0xb814('0x3c')]);_0x38c57f[_0xb814('0x3d')]=_['intersection'](_0x38c57f[_0xb814('0x39')],_0x38c57f[_0xb814('0x3c')]);_0x1b48fa[_0xb814('0x3e')]=_[_0xb814('0x3f')](_0x38c57f['model'],qs[_0xb814('0x40')](_0x1f5caf['query'][_0xb814('0x40')]));_0x1b48fa[_0xb814('0x3e')]=_0x1b48fa['attributes'][_0xb814('0x41')]?_0x1b48fa['attributes']:_0x38c57f[_0xb814('0x39')];if(!_0x1f5caf[_0xb814('0x3c')]['hasOwnProperty'](_0xb814('0x42'))){_0x1b48fa[_0xb814('0x43')]=qs[_0xb814('0x43')](_0x1f5caf[_0xb814('0x3c')][_0xb814('0x43')]);_0x1b48fa[_0xb814('0x2a')]=qs['offset'](_0x1f5caf['query'][_0xb814('0x2a')]);}_0x1b48fa[_0xb814('0x44')]=qs[_0xb814('0x45')](_0x1f5caf[_0xb814('0x3c')][_0xb814('0x45')]);_0x1b48fa[_0xb814('0x46')]=qs[_0xb814('0x3d')](_[_0xb814('0x47')](_0x1f5caf[_0xb814('0x3c')],_0x38c57f['filters']),_0x78089d);if(_0x1f5caf[_0xb814('0x3c')][_0xb814('0x48')]){_0x1b48fa[_0xb814('0x46')]=_[_0xb814('0x49')](_0x1b48fa[_0xb814('0x46')],{'$or':_[_0xb814('0x3a')](_0x78089d,function(_0x429248){if(_0x429248[_0xb814('0x38')]!==_0xb814('0x4a')){var _0x3c2e54={};_0x3c2e54[_0x429248[_0xb814('0x32')]]={'$like':'%'+_0x1f5caf[_0xb814('0x3c')][_0xb814('0x48')]+'%'};return _0x3c2e54;}})});}_0x1b48fa=_[_0xb814('0x49')]({},_0x1b48fa,_0x1f5caf[_0xb814('0x4b')]);var _0x48cac8={'where':_0x1b48fa['where']};return db['ChatMessage']['count'](_0x48cac8)[_0xb814('0x1c')](function(_0xf09e46){_0x48d379['count']=_0xf09e46;if(_0x1f5caf['query']['includeAll']){_0x1b48fa[_0xb814('0x4c')]=[{'all':!![]}];}return db[_0xb814('0x35')][_0xb814('0x4d')](_0x1b48fa);})[_0xb814('0x1c')](function(_0x20e8e1){_0x48d379[_0xb814('0x4e')]=_0x20e8e1;return _0x48d379;})[_0xb814('0x1c')](respondWithFilteredResult(_0x33f25f,_0x1b48fa))['catch'](handleError(_0x33f25f,null));};exports[_0xb814('0x4f')]=function(_0x3f76ae,_0x262655){var _0x42e070={'raw':!![],'where':{'id':_0x3f76ae['params']['id']}},_0x298bfd={};_0x298bfd[_0xb814('0x39')]=_[_0xb814('0x3b')](db[_0xb814('0x35')][_0xb814('0x36')]);_0x298bfd[_0xb814('0x3c')]=_[_0xb814('0x3b')](_0x3f76ae['query']);_0x298bfd[_0xb814('0x3d')]=_[_0xb814('0x3f')](_0x298bfd['model'],_0x298bfd['query']);_0x42e070[_0xb814('0x3e')]=_[_0xb814('0x3f')](_0x298bfd[_0xb814('0x39')],qs['fields'](_0x3f76ae['query'][_0xb814('0x40')]));_0x42e070[_0xb814('0x3e')]=_0x42e070[_0xb814('0x3e')][_0xb814('0x41')]?_0x42e070['attributes']:_0x298bfd[_0xb814('0x39')];if(_0x3f76ae[_0xb814('0x3c')]['includeAll']){_0x42e070['include']=[{'all':!![]}];}_0x42e070=_[_0xb814('0x49')]({},_0x42e070,_0x3f76ae[_0xb814('0x4b')]);return db[_0xb814('0x35')][_0xb814('0x50')](_0x42e070)[_0xb814('0x1c')](handleEntityNotFound(_0x262655,null))['then'](respondWithResult(_0x262655,null))['catch'](handleError(_0x262655,null));};exports[_0xb814('0x51')]=function(_0x51382b,_0x14fcb0){return db[_0xb814('0x35')]['create'](_0x51382b[_0xb814('0x52')],{})['then'](respondWithResult(_0x14fcb0,0xc9))['catch'](handleError(_0x14fcb0,null));};exports[_0xb814('0x30')]=function(_0x1ea7f5,_0x214b38){if(_0x1ea7f5[_0xb814('0x52')]['id']){delete _0x1ea7f5[_0xb814('0x52')]['id'];}return db[_0xb814('0x35')][_0xb814('0x50')]({'where':{'id':_0x1ea7f5[_0xb814('0x53')]['id']}})['then'](handleEntityNotFound(_0x214b38,null))[_0xb814('0x1c')](saveUpdates(_0x1ea7f5[_0xb814('0x52')],null))[_0xb814('0x1c')](respondWithResult(_0x214b38,null))[_0xb814('0x54')](handleError(_0x214b38,null));};exports[_0xb814('0x31')]=function(_0x12be96,_0x7cc489){return db['ChatMessage'][_0xb814('0x50')]({'where':{'id':_0x12be96[_0xb814('0x53')]['id']}})[_0xb814('0x1c')](handleEntityNotFound(_0x7cc489,null))[_0xb814('0x1c')](removeEntity(_0x7cc489,null))['catch'](handleError(_0x7cc489,null));};exports[_0xb814('0x55')]=function(_0x439566,_0x3dc48f){return db['ChatMessage']['describe']()[_0xb814('0x1c')](respondWithResult(_0x3dc48f,null))[_0xb814('0x54')](handleError(_0x3dc48f,null));};var interaction_log=require(_0xb814('0x10'))('chat-interactions');exports['accept']=function(_0xc6ddd7,_0x315f97,_0x38398a){var _0x4e7844={'agent':{},'channel':_0xb814('0x56')};if(_0xc6ddd7['body']['id']){delete _0xc6ddd7['body']['id'];}_0xc6ddd7[_0xb814('0x52')][_0xb814('0x57')]=!![];_0xc6ddd7[_0xb814('0x52')][_0xb814('0x58')]=moment()[_0xb814('0x59')](_0xb814('0x5a'));_0xc6ddd7[_0xb814('0x52')][_0xb814('0x5b')]=_0xc6ddd7[_0xb814('0x52')][_0xb814('0x5b')]||_0xc6ddd7[_0xb814('0x5c')]['id'];_0x4e7844[_0xb814('0x5d')]['id']=_0xc6ddd7[_0xb814('0x52')][_0xb814('0x5b')];return db['ChatMessage'][_0xb814('0x50')]({'where':{'id':_0xc6ddd7['params']['id'],'UserId':null}})[_0xb814('0x1c')](handleEntityNotFound(_0x315f97,null))[_0xb814('0x1c')](saveUpdates(_0xc6ddd7[_0xb814('0x52')],null))[_0xb814('0x1c')](function(_0x491edb){if(_0x491edb){_0x4e7844[_0xb814('0x23')]=_0x491edb['get']({'plain':!![]});return db['ChatInteraction'][_0xb814('0x50')]({'where':{'id':_0x491edb[_0xb814('0x5e')]}});}return null;})[_0xb814('0x1c')](handleEntityNotFound(_0x315f97,null))[_0xb814('0x1c')](function(_0x5b9673){if(_0x5b9673){return _0x5b9673[_0xb814('0x30')]({'UserId':_0xc6ddd7['body'][_0xb814('0x5b')],'read1stAt':_[_0xb814('0x5f')](_0x5b9673[_0xb814('0x60')])?moment()[_0xb814('0x59')](_0xb814('0x5a')):undefined});}return null;})[_0xb814('0x1c')](function(_0x8c385d){if(_0x8c385d){_0x4e7844['interaction']=_0x8c385d[_0xb814('0x61')]({'plain':!![]});interaction_log[_0xb814('0x24')](_0xb814('0x62'),_0xc6ddd7[_0xb814('0x5c')]['id'],_0xc6ddd7[_0xb814('0x5c')][_0xb814('0x32')],_0xc6ddd7['user'][_0xb814('0x63')],_0x4e7844[_0xb814('0x64')]['id'],_0xc6ddd7[_0xb814('0x52')]?JSON['stringify'](_0xc6ddd7[_0xb814('0x52')]):_0xb814('0x65'));return respondWithRpcPromise(_0xb814('0x66'),_0xb814('0x67'),_0x4e7844);}return null;})[_0xb814('0x1c')](function(_0x5261e2){var _0x206c0f=_0xb814('0x68')+_0x5261e2[_0xb814('0x23')][_0xb814('0x69')];return db['sequelize'][_0xb814('0x3c')](_0x206c0f,{'type':db[_0xb814('0x6a')][_0xb814('0x6b')]['SELECT'],'raw':!![]})[_0xb814('0x1c')](function(_0x5c72ff){return _0x5c72ff;});})[_0xb814('0x1c')](function(_0x613fbf){if(_0x613fbf){_0x4e7844[_0xb814('0x23')]['contact']=_0x613fbf[0x0];if(!_0xc6ddd7[_0xb814('0x52')][_0xb814('0x5b')])return;return db['User']['find']({'where':{'id':_0xc6ddd7['body'][_0xb814('0x5b')],'role':_0xb814('0x5d')},'attributes':['id','name',_0xb814('0x6c'),'email',_0xb814('0x6d')],'raw':!![]});}return null;})['then'](function(_0x42d826){if(!_0x42d826)return null;_0x4e7844['message'][_0xb814('0x5d')]=_0x42d826;return _0x4e7844;})['then'](function(_0x83f22a){if(_0x83f22a){if(_0xc6ddd7[_0xb814('0x52')][_0xb814('0x6e')]){_0x4e7844[_0xb814('0x23')][_0xb814('0x6f')]=util[_0xb814('0x59')]('SIP/%s',_0xc6ddd7[_0xb814('0x5c')][_0xb814('0x32')]);_0x4e7844['message'][_0xb814('0x70')]=_0x4e7844[_0xb814('0x70')];_0x4e7844[_0xb814('0x23')][_0xb814('0x71')]=_0x4e7844[_0xb814('0x70')];_0x4e7844['message'][_0xb814('0x72')]=_0xb814('0x73');return respondWithRpcPromise(_0xb814('0x74'),_0xb814('0x74'),{'event':_0xb814('0x75'),'message':_[_0xb814('0x49')](_0x4e7844['message'],JSON[_0xb814('0x76')](_0x4e7844[_0xb814('0x64')]['formData']))},client9002)[_0xb814('0x1c')](function(){return _0x4e7844;});}return _0x4e7844;}return null;})[_0xb814('0x1c')](respondWithResult(_0x315f97,null))[_0xb814('0x54')](handleError(_0x315f97,null));};var interaction_log=require(_0xb814('0x10'))(_0xb814('0x77'));exports[_0xb814('0x2f')]=function(_0x517fab,_0x2afc7c,_0x37c68a){var _0x42c8cc={'agent':{},'channel':_0xb814('0x56')};if(_0x517fab[_0xb814('0x52')]['id']){delete _0x517fab[_0xb814('0x52')]['id'];}_0x517fab[_0xb814('0x52')]['UserId']=_0x517fab[_0xb814('0x52')]['UserId']||_0x517fab[_0xb814('0x5c')]['id'];_0x42c8cc[_0xb814('0x5d')]['id']=_0x517fab[_0xb814('0x52')]['UserId'];return db[_0xb814('0x35')]['find']({'where':{'id':_0x517fab[_0xb814('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2afc7c,null))[_0xb814('0x1c')](function(_0xd98080){if(_0xd98080){_0x42c8cc[_0xb814('0x23')]=_0xd98080[_0xb814('0x61')]({'plain':!![]});return db[_0xb814('0x78')][_0xb814('0x50')]({'where':{'id':_0xd98080['ChatInteractionId']}});}return null;})[_0xb814('0x1c')](handleEntityNotFound(_0x2afc7c,null))[_0xb814('0x1c')](function(_0x2d08b4){if(_0x2d08b4){_0x42c8cc[_0xb814('0x64')]=_0x2d08b4['get']({'plain':!![]});interaction_log[_0xb814('0x24')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x517fab[_0xb814('0x5c')]['id'],_0x517fab[_0xb814('0x5c')][_0xb814('0x32')],_0x517fab[_0xb814('0x5c')][_0xb814('0x63')],_0x42c8cc[_0xb814('0x64')]['id'],_0x517fab[_0xb814('0x52')]?JSON[_0xb814('0x20')](_0x517fab[_0xb814('0x52')]):_0xb814('0x65'));return respondWithRpcPromise(_0xb814('0x79'),_0xb814('0x7a'),_0x42c8cc);}return null;})[_0xb814('0x1c')](function(_0x251030){var _0x59a53f=_0xb814('0x68')+_0x251030[_0xb814('0x23')][_0xb814('0x69')];return db[_0xb814('0x7b')][_0xb814('0x3c')](_0x59a53f,{'type':db[_0xb814('0x6a')][_0xb814('0x6b')]['SELECT'],'raw':!![]})['then'](function(_0x35c99f){return _0x35c99f;});})[_0xb814('0x1c')](function(_0x1aa315){if(_0x1aa315){_0x42c8cc[_0xb814('0x23')]['contact']=_0x1aa315[0x0];if(!_0x517fab[_0xb814('0x52')][_0xb814('0x5b')])return;return db[_0xb814('0x7c')][_0xb814('0x50')]({'where':{'id':_0x517fab['body'][_0xb814('0x5b')],'role':_0xb814('0x5d')},'attributes':['id',_0xb814('0x32'),'fullname',_0xb814('0x7d'),_0xb814('0x6d')],'raw':!![]});}return null;})[_0xb814('0x1c')](function(_0x5b0e47){if(!_0x5b0e47)return null;_0x42c8cc[_0xb814('0x23')][_0xb814('0x5d')]=_0x5b0e47;return _0x42c8cc;})[_0xb814('0x1c')](function(_0x514f78){if(_0x514f78){_0x514f78[_0xb814('0x23')][_0xb814('0x6f')]=util[_0xb814('0x59')](_0xb814('0x7e'),_0x517fab['user'][_0xb814('0x32')]);_0x514f78[_0xb814('0x23')][_0xb814('0x70')]=_0x42c8cc[_0xb814('0x70')];_0x514f78[_0xb814('0x23')][_0xb814('0x71')]=_0x42c8cc['channel'];_0x514f78['message']['event']=_0xb814('0x2f');respondWithRpcPromise('EventManager','EventManager',{'event':_0xb814('0x7f'),'message':_[_0xb814('0x49')](_0x42c8cc[_0xb814('0x23')],JSON[_0xb814('0x76')](_0x42c8cc[_0xb814('0x64')][_0xb814('0x80')]))},client9002);return _0x42c8cc;}return null;})[_0xb814('0x1c')](respondWithResult(_0x2afc7c,null))[_0xb814('0x54')](handleError(_0x2afc7c,null));};
\ No newline at end of file
index f4d75c2..5ec36ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b81=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save'];(function(_0xa193de,_0x276446){var _0xd9e427=function(_0x1aedbc){while(--_0x1aedbc){_0xa193de['push'](_0xa193de['shift']());}};_0xd9e427(++_0x276446);}(_0x4b81,0x124));var _0x14b8=function(_0x17e5b6,_0x5a36b4){_0x17e5b6=_0x17e5b6-0x0;var _0x139635=_0x4b81[_0x17e5b6];return _0x139635;};'use strict';var EventEmitter=require(_0x14b8('0x0'));var ChatMessage=require(_0x14b8('0x1'))['db'][_0x14b8('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x14b8('0x3')](0x0);var events={'afterCreate':_0x14b8('0x4'),'afterUpdate':_0x14b8('0x5'),'afterDestroy':_0x14b8('0x6')};function emitEvent(_0x1324fd){return function(_0xe90212,_0x161186,_0x2f9389){ChatMessageEvents[_0x14b8('0x7')](_0x1324fd+':'+_0xe90212['id'],_0xe90212);ChatMessageEvents[_0x14b8('0x7')](_0x1324fd,_0xe90212);_0x2f9389(null);};}for(var e in events){if(events[_0x14b8('0x8')](e)){var event=events[e];ChatMessage[_0x14b8('0x9')](e,emitEvent(event));}}module[_0x14b8('0xa')]=ChatMessageEvents;
\ No newline at end of file
+var _0x861e=['hasOwnProperty','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','emit'];(function(_0x2d82ad,_0x21ca52){var _0x171c7d=function(_0x3d507e){while(--_0x3d507e){_0x2d82ad['push'](_0x2d82ad['shift']());}};_0x171c7d(++_0x21ca52);}(_0x861e,0xd9));var _0xe861=function(_0x3a98a2,_0x9bb9e7){_0x3a98a2=_0x3a98a2-0x0;var _0x2102a2=_0x861e[_0x3a98a2];return _0x2102a2;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0xe861('0x0'))['db'][_0xe861('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xe861('0x2')](0x0);var events={'afterCreate':_0xe861('0x3'),'afterUpdate':_0xe861('0x4'),'afterDestroy':_0xe861('0x5')};function emitEvent(_0x4b0dad){return function(_0xac9194,_0x2ff095,_0x28fafa){ChatMessageEvents['emit'](_0x4b0dad+':'+_0xac9194['id'],_0xac9194);ChatMessageEvents[_0xe861('0x6')](_0x4b0dad,_0xac9194);_0x28fafa(null);};}for(var e in events){if(events[_0xe861('0x7')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index f73903c..150347f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6cb=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','body','FULLTEXT','get','direction','toLowerCase','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','error'];(function(_0x5a19fc,_0x58f9f4){var _0x34b413=function(_0x344feb){while(--_0x344feb){_0x5a19fc['push'](_0x5a19fc['shift']());}};_0x34b413(++_0x58f9f4);}(_0xb6cb,0x189));var _0xbb6c=function(_0x4067ac,_0x363603){_0x4067ac=_0x4067ac-0x0;var _0x53d74d=_0xb6cb[_0x4067ac];return _0x53d74d;};'use strict';var _=require(_0xbb6c('0x0'));var util=require(_0xbb6c('0x1'));var logger=require(_0xbb6c('0x2'))(_0xbb6c('0x3'));var moment=require(_0xbb6c('0x4'));var BPromise=require(_0xbb6c('0x5'));var rp=require(_0xbb6c('0x6'));var fs=require('fs');var path=require(_0xbb6c('0x7'));var rimraf=require(_0xbb6c('0x8'));var config=require(_0xbb6c('0x9'));var attributes=require(_0xbb6c('0xa'));module[_0xbb6c('0xb')]=function(_0x4a84b4,_0x5a87f8){return _0x4a84b4[_0xbb6c('0xc')](_0xbb6c('0xd'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0xbb6c('0xe')],'type':_0xbb6c('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x564ed5,_0x23301d,_0x5c00e9){var _0x33e4c3=_0x4a84b4['models'];var _0x5223b0=_0x564ed5[_0xbb6c('0x10')]({'plain':!![]});if(_0x5223b0[_0xbb6c('0x11')]['toLowerCase']()==='in'||_0x5223b0[_0xbb6c('0x11')][_0xbb6c('0x12')]()==='out'&&!_0x5223b0['secret']&&!_[_0xbb6c('0x13')](_0x5223b0[_0xbb6c('0x14')])){_0x33e4c3[_0xbb6c('0x15')][_0xbb6c('0x16')]({'where':{'id':_0x5223b0[_0xbb6c('0x17')]}})[_0xbb6c('0x18')](function(_0x556210){if(_0x556210){_0x556210[_0xbb6c('0x19')]({'lastMsgAt':_0x5223b0['createdAt'],'lastMsgDirection':_0x5223b0[_0xbb6c('0x11')]['toLowerCase']()});}})['catch'](function(_0x5824ca){console[_0xbb6c('0x1a')](_0x5824ca);});}_0x5c00e9();}},'charset':'utf8mb4','collate':_0xbb6c('0x1b')});};
\ No newline at end of file
+var _0xa5ad=['isNil','UserId','ChatInteraction','findOne','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','models','get','direction','toLowerCase','out','secret'];(function(_0x5bf420,_0x2d068d){var _0x1c5255=function(_0x4964a2){while(--_0x4964a2){_0x5bf420['push'](_0x5bf420['shift']());}};_0x1c5255(++_0x2d068d);}(_0xa5ad,0xa3));var _0xda5a=function(_0x43b11a,_0x324c2c){_0x43b11a=_0x43b11a-0x0;var _0x10bdef=_0xa5ad[_0x43b11a];return _0x10bdef;};'use strict';var _=require(_0xda5a('0x0'));var util=require(_0xda5a('0x1'));var logger=require(_0xda5a('0x2'))(_0xda5a('0x3'));var moment=require(_0xda5a('0x4'));var BPromise=require(_0xda5a('0x5'));var rp=require(_0xda5a('0x6'));var fs=require('fs');var path=require(_0xda5a('0x7'));var rimraf=require(_0xda5a('0x8'));var config=require(_0xda5a('0x9'));var attributes=require(_0xda5a('0xa'));module[_0xda5a('0xb')]=function(_0x3ce8b5,_0x5714a0){return _0x3ce8b5[_0xda5a('0xc')](_0xda5a('0xd'),attributes,{'tableName':_0xda5a('0xe'),'paranoid':![],'indexes':[{'name':_0xda5a('0xf'),'fields':[_0xda5a('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1c34e9,_0x3cf731,_0x3810a2){var _0x1750df=_0x3ce8b5[_0xda5a('0x11')];var _0xb0f037=_0x1c34e9[_0xda5a('0x12')]({'plain':!![]});if(_0xb0f037[_0xda5a('0x13')][_0xda5a('0x14')]()==='in'||_0xb0f037[_0xda5a('0x13')][_0xda5a('0x14')]()===_0xda5a('0x15')&&!_0xb0f037[_0xda5a('0x16')]&&!_[_0xda5a('0x17')](_0xb0f037[_0xda5a('0x18')])){_0x1750df[_0xda5a('0x19')][_0xda5a('0x1a')]({'where':{'id':_0xb0f037['ChatInteractionId']}})['then'](function(_0x244d00){if(_0x244d00){_0x244d00[_0xda5a('0x1b')]({'lastMsgAt':_0xb0f037['createdAt'],'lastMsgDirection':_0xb0f037['direction'][_0xda5a('0x14')]()});}})[_0xda5a('0x1c')](function(_0x6b9805){console['error'](_0x6b9805);});}_0x3810a2();}},'charset':_0xda5a('0x1d'),'collate':_0xda5a('0x1e')});};
\ No newline at end of file
index 030ece1..2689cf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe767=['ioredis','../../mysqldb','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','ChatMessage','create','body','options','raw','CreateChatMessage','util','moment','bluebird','randomstring'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xe767,0x11e));var _0x7e76=function(_0x38c415,_0x3ed5da){_0x38c415=_0x38c415-0x0;var _0x2d585c=_0xe767[_0x38c415];return _0x2d585c;};'use strict';var _=require('lodash');var util=require(_0x7e76('0x0'));var moment=require(_0x7e76('0x1'));var BPromise=require(_0x7e76('0x2'));var rs=require(_0x7e76('0x3'));var fs=require('fs');var Redis=require(_0x7e76('0x4'));var db=require(_0x7e76('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7e76('0x6'));var config=require('../../config/environment');var jayson=require(_0x7e76('0x7'));var client=jayson['client'][_0x7e76('0x8')]({'port':0x232a});config[_0x7e76('0x9')]=_[_0x7e76('0xa')](config[_0x7e76('0x9')],{'host':_0x7e76('0xb'),'port':0x18eb});var socket=require(_0x7e76('0xc'))(new Redis(config[_0x7e76('0x9')]));require('./chatMessage.socket')['register'](socket);function respondWithRpcPromise(_0x4e2c41,_0x572469,_0x41e9b8){return new BPromise(function(_0x2dec6b,_0x7b60e){return client['request'](_0x4e2c41,_0x41e9b8)['then'](function(_0x447e89){logger['info'](_0x7e76('0xd'),_0x572469,_0x7e76('0xe'));logger[_0x7e76('0xf')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x572469,_0x7e76('0xe'),JSON[_0x7e76('0x10')](_0x447e89));if(_0x447e89[_0x7e76('0x11')]){if(_0x447e89[_0x7e76('0x11')][_0x7e76('0x12')]===0x1f4){logger[_0x7e76('0x11')](_0x7e76('0xd'),_0x572469,_0x447e89[_0x7e76('0x11')][_0x7e76('0x13')]);return _0x7b60e(_0x447e89[_0x7e76('0x11')]['message']);}logger[_0x7e76('0x11')](_0x7e76('0xd'),_0x572469,_0x447e89[_0x7e76('0x11')][_0x7e76('0x13')]);return _0x2dec6b(_0x447e89['error'][_0x7e76('0x13')]);}else{logger[_0x7e76('0x14')](_0x7e76('0xd'),_0x572469,'request\x20sent');_0x2dec6b(_0x447e89[_0x7e76('0x15')][_0x7e76('0x13')]);}})[_0x7e76('0x16')](function(_0x53b4f5){logger[_0x7e76('0x11')](_0x7e76('0xd'),_0x572469,_0x53b4f5);_0x7b60e(_0x53b4f5);});});}exports['CreateChatMessage']=function(_0x3ea240){var _0x5d2625=this;return new Promise(function(_0x17fff1,_0x1f9f44){return db[_0x7e76('0x17')][_0x7e76('0x18')](_0x3ea240[_0x7e76('0x19')],{'raw':_0x3ea240[_0x7e76('0x1a')]?_0x3ea240['options'][_0x7e76('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x1b5ca1){logger[_0x7e76('0x14')](_0x7e76('0x1c'),_0x3ea240);logger['debug'](_0x7e76('0x1c'),_0x3ea240,JSON[_0x7e76('0x10')](_0x1b5ca1));_0x17fff1(_0x1b5ca1);})['catch'](function(_0x5b09f2){logger['error'](_0x7e76('0x1c'),_0x5b09f2[_0x7e76('0x13')],_0x3ea240);_0x1f9f44(_0x5d2625[_0x7e76('0x11')](0x1f4,_0x5b09f2[_0x7e76('0x13')]));});});};
\ No newline at end of file
+var _0xcbff=['catch','CreateChatMessage','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x144b4f,_0x34069c){var _0x5f5978=function(_0x3ecd67){while(--_0x3ecd67){_0x144b4f['push'](_0x144b4f['shift']());}};_0x5f5978(++_0x34069c);}(_0xcbff,0x1c6));var _0xfcbf=function(_0x4fafac,_0x3a1c4d){_0x4fafac=_0x4fafac-0x0;var _0x3d2b43=_0xcbff[_0x4fafac];return _0x3d2b43;};'use strict';var _=require(_0xfcbf('0x0'));var util=require(_0xfcbf('0x1'));var moment=require('moment');var BPromise=require(_0xfcbf('0x2'));var rs=require(_0xfcbf('0x3'));var fs=require('fs');var Redis=require(_0xfcbf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcbf('0x5'));var logger=require(_0xfcbf('0x6'))(_0xfcbf('0x7'));var config=require(_0xfcbf('0x8'));var jayson=require(_0xfcbf('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xfcbf('0xa')](config[_0xfcbf('0xb')],{'host':_0xfcbf('0xc'),'port':0x18eb});var socket=require(_0xfcbf('0xd'))(new Redis(config['redis']));require(_0xfcbf('0xe'))[_0xfcbf('0xf')](socket);function respondWithRpcPromise(_0x83d9a9,_0x4c7264,_0x3f3f51){return new BPromise(function(_0x1e7a7c,_0x3d2c7b){return client[_0xfcbf('0x10')](_0x83d9a9,_0x3f3f51)[_0xfcbf('0x11')](function(_0x310cd6){logger[_0xfcbf('0x12')](_0xfcbf('0x13'),_0x4c7264,_0xfcbf('0x14'));logger[_0xfcbf('0x15')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x4c7264,_0xfcbf('0x14'),JSON[_0xfcbf('0x16')](_0x310cd6));if(_0x310cd6[_0xfcbf('0x17')]){if(_0x310cd6[_0xfcbf('0x17')]['code']===0x1f4){logger[_0xfcbf('0x17')](_0xfcbf('0x13'),_0x4c7264,_0x310cd6['error'][_0xfcbf('0x18')]);return _0x3d2c7b(_0x310cd6[_0xfcbf('0x17')][_0xfcbf('0x18')]);}logger[_0xfcbf('0x17')](_0xfcbf('0x13'),_0x4c7264,_0x310cd6['error']['message']);return _0x1e7a7c(_0x310cd6['error'][_0xfcbf('0x18')]);}else{logger[_0xfcbf('0x12')](_0xfcbf('0x13'),_0x4c7264,_0xfcbf('0x14'));_0x1e7a7c(_0x310cd6[_0xfcbf('0x19')][_0xfcbf('0x18')]);}})[_0xfcbf('0x1a')](function(_0xf2bfed){logger[_0xfcbf('0x17')](_0xfcbf('0x13'),_0x4c7264,_0xf2bfed);_0x3d2c7b(_0xf2bfed);});});}exports[_0xfcbf('0x1b')]=function(_0xd66467){var _0x2f4f72=this;return new Promise(function(_0x169e32,_0x198b55){return db['ChatMessage'][_0xfcbf('0x1c')](_0xd66467[_0xfcbf('0x1d')],{'raw':_0xd66467[_0xfcbf('0x1e')]?_0xd66467['options'][_0xfcbf('0x1f')]===undefined?!![]:![]:!![]})[_0xfcbf('0x11')](function(_0x3ad4e5){logger['info']('CreateChatMessage',_0xd66467);logger[_0xfcbf('0x15')]('CreateChatMessage',_0xd66467,JSON['stringify'](_0x3ad4e5));_0x169e32(_0x3ad4e5);})[_0xfcbf('0x1a')](function(_0x16bb1f){logger[_0xfcbf('0x17')](_0xfcbf('0x1b'),_0x16bb1f['message'],_0xd66467);_0x198b55(_0x2f4f72[_0xfcbf('0x17')](0x1f4,_0x16bb1f['message']));});});};
\ No newline at end of file
index def43d0..dab7303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x029b=['emit','removeListener','register','chatMessage:','./chatMessage.events','save','update'];(function(_0x551d10,_0x4e4a33){var _0x2cdde1=function(_0x1abfec){while(--_0x1abfec){_0x551d10['push'](_0x551d10['shift']());}};_0x2cdde1(++_0x4e4a33);}(_0x029b,0x66));var _0xb029=function(_0x30dc99,_0x234661){_0x30dc99=_0x30dc99-0x0;var _0x4598b7=_0x029b[_0x30dc99];return _0x4598b7;};'use strict';var ChatMessageEvents=require(_0xb029('0x0'));var events=[_0xb029('0x1'),'remove',_0xb029('0x2')];function createListener(_0x2e71f6,_0x4e6bbd){return function(_0x41cdc7){_0x4e6bbd[_0xb029('0x3')](_0x2e71f6,_0x41cdc7);};}function removeListener(_0x5933af,_0x58cdef){return function(){ChatMessageEvents[_0xb029('0x4')](_0x5933af,_0x58cdef);};}exports[_0xb029('0x5')]=function(_0x7836f0){for(var _0x448fc5=0x0,_0x15871f=events['length'];_0x448fc5<_0x15871f;_0x448fc5++){var _0x38e856=events[_0x448fc5];var _0x48b3d0=createListener(_0xb029('0x6')+_0x38e856,_0x7836f0);ChatMessageEvents['on'](_0x38e856,_0x48b3d0);}};
\ No newline at end of file
+var _0x3c94=['remove','update','emit','removeListener','register','length','chatMessage:','./chatMessage.events','save'];(function(_0x3c7b24,_0x260fea){var _0x43f29a=function(_0x3fca31){while(--_0x3fca31){_0x3c7b24['push'](_0x3c7b24['shift']());}};_0x43f29a(++_0x260fea);}(_0x3c94,0xcd));var _0x43c9=function(_0x3a4e77,_0x3349ba){_0x3a4e77=_0x3a4e77-0x0;var _0x35a151=_0x3c94[_0x3a4e77];return _0x35a151;};'use strict';var ChatMessageEvents=require(_0x43c9('0x0'));var events=[_0x43c9('0x1'),_0x43c9('0x2'),_0x43c9('0x3')];function createListener(_0x188507,_0x2da73f){return function(_0xe05adb){_0x2da73f[_0x43c9('0x4')](_0x188507,_0xe05adb);};}function removeListener(_0x170a0d,_0x44fc3){return function(){ChatMessageEvents[_0x43c9('0x5')](_0x170a0d,_0x44fc3);};}exports[_0x43c9('0x6')]=function(_0x4fdfc2){for(var _0x39c220=0x0,_0xf03007=events[_0x43c9('0x7')];_0x39c220<_0xf03007;_0x39c220++){var _0x37c029=events[_0x39c220];var _0x383adb=createListener(_0x43c9('0x8')+_0x37c029,_0x4fdfc2);ChatMessageEvents['on'](_0x37c029,_0x383adb);}};
\ No newline at end of file
index 8c66a9d..9b2c072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d0=['isAuthenticated','index','/describe','describe','/:id','post','tracked','chat','chatmessage:create','update','/:id/accept','delete','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./chatMessage.controller','get'];(function(_0x16de86,_0x1b4c26){var _0x1be54a=function(_0x492fb0){while(--_0x492fb0){_0x16de86['push'](_0x16de86['shift']());}};_0x1be54a(++_0x1b4c26);}(_0x53d0,0xdf));var _0x053d=function(_0x5c25dc,_0x4ee666){_0x5c25dc=_0x5c25dc-0x0;var _0xc095b6=_0x53d0[_0x5c25dc];return _0xc095b6;};'use strict';var multer=require('multer');var util=require(_0x053d('0x0'));var path=require('path');var timeout=require(_0x053d('0x1'));var express=require(_0x053d('0x2'));var router=express['Router']();var fs_extra=require(_0x053d('0x3'));var auth=require(_0x053d('0x4'));var interaction=require(_0x053d('0x5'));var config=require('../../config/environment');var controller=require(_0x053d('0x6'));router[_0x053d('0x7')]('/',auth[_0x053d('0x8')](),controller[_0x053d('0x9')]);router[_0x053d('0x7')](_0x053d('0xa'),auth[_0x053d('0x8')](),controller[_0x053d('0xb')]);router[_0x053d('0x7')](_0x053d('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x053d('0xd')]('/',auth[_0x053d('0x8')](),interaction[_0x053d('0xe')](_0x053d('0xf'),_0x053d('0x10')),controller['create']);router['put']('/:id',controller[_0x053d('0x11')]);router['put'](_0x053d('0x12'),auth['isAuthenticated'](),controller['accept']);router['put']('/:id/reject',auth[_0x053d('0x8')](),controller['reject']);router[_0x053d('0x13')](_0x053d('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x053d('0x14')]=router;
\ No newline at end of file
+var _0xb159=['util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','index','/describe','describe','isAuthenticated','show','post','tracked','chat','chatmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer'];(function(_0x11ce46,_0x177a85){var _0x368a1e=function(_0x425454){while(--_0x425454){_0x11ce46['push'](_0x11ce46['shift']());}};_0x368a1e(++_0x177a85);}(_0xb159,0xe7));var _0x9b15=function(_0x1459e0,_0x5b6183){_0x1459e0=_0x1459e0-0x0;var _0x5b8d34=_0xb159[_0x1459e0];return _0x5b8d34;};'use strict';var multer=require(_0x9b15('0x0'));var util=require(_0x9b15('0x1'));var path=require(_0x9b15('0x2'));var timeout=require('connect-timeout');var express=require(_0x9b15('0x3'));var router=express[_0x9b15('0x4')]();var fs_extra=require(_0x9b15('0x5'));var auth=require(_0x9b15('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9b15('0x7'));var controller=require(_0x9b15('0x8'));router[_0x9b15('0x9')]('/',auth['isAuthenticated'](),controller[_0x9b15('0xa')]);router[_0x9b15('0x9')](_0x9b15('0xb'),auth['isAuthenticated'](),controller[_0x9b15('0xc')]);router['get']('/:id',auth[_0x9b15('0xd')](),controller[_0x9b15('0xe')]);router[_0x9b15('0xf')]('/',auth[_0x9b15('0xd')](),interaction[_0x9b15('0x10')](_0x9b15('0x11'),_0x9b15('0x12')),controller[_0x9b15('0x13')]);router[_0x9b15('0x14')](_0x9b15('0x15'),controller[_0x9b15('0x16')]);router[_0x9b15('0x14')](_0x9b15('0x17'),auth[_0x9b15('0xd')](),controller['accept']);router['put'](_0x9b15('0x18'),auth['isAuthenticated'](),controller[_0x9b15('0x19')]);router[_0x9b15('0x1a')](_0x9b15('0x15'),auth[_0x9b15('0xd')](),controller[_0x9b15('0x1b')]);module[_0x9b15('0x1c')]=router;
\ No newline at end of file
index 610b6c6..a0a8fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x2c12d3,_0x374ed8){var _0x17e0b=function(_0x44acb4){while(--_0x44acb4){_0x2c12d3['push'](_0x2c12d3['shift']());}};_0x17e0b(++_0x374ed8);}(_0xdb28,0x106));var _0x8db2=function(_0x47b4ca,_0x5a235b){_0x47b4ca=_0x47b4ca-0x0;var _0x508464=_0xdb28[_0x47b4ca];return _0x508464;};'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
+var _0xadb5=['medium','TEXT','exports'];(function(_0x5ca4e9,_0x3e38cf){var _0x3194ca=function(_0x388022){while(--_0x388022){_0x5ca4e9['push'](_0x5ca4e9['shift']());}};_0x3194ca(++_0x3e38cf);}(_0xadb5,0xad));var _0x5adb=function(_0xcee9df,_0x28ceb0){_0xcee9df=_0xcee9df-0x0;var _0x4c63ba=_0xadb5[_0xcee9df];return _0x4c63ba;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'body':{'type':Sequelize['TEXT'](_0x5adb('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5adb('0x2')](_0x5adb('0x1')),'allowNull':![]}};
\ No newline at end of file
index 3bd104e..324c14b 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(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x7a54,0x106));var _0x47a5=function(_0xd9bdc1,_0xdaf349){_0xd9bdc1=_0xd9bdc1-0x0;var _0x2cb51f=_0x7a54[_0xd9bdc1];return _0x2cb51f;};'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(_0x225dce,_0x6f8c19){var _0x457e32=function(_0x446c4b){while(--_0x446c4b){_0x225dce['push'](_0x225dce['shift']());}};_0x457e32(++_0x6f8c19);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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 33ce504..3ba979f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d03=['../../mysqldb','ChatOfflineMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x5c1345,_0x40116e){var _0x1c070d=function(_0x1e862f){while(--_0x1e862f){_0x5c1345['push'](_0x5c1345['shift']());}};_0x1c070d(++_0x40116e);}(_0x6d03,0x1df));var _0x36d0=function(_0x120eef,_0x49e80b){_0x120eef=_0x120eef-0x0;var _0x3d9e2d=_0x6d03[_0x120eef];return _0x3d9e2d;};'use strict';var EventEmitter=require(_0x36d0('0x0'));var ChatOfflineMessage=require(_0x36d0('0x1'))['db'][_0x36d0('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x36d0('0x3')](0x0);var events={'afterCreate':_0x36d0('0x4'),'afterUpdate':_0x36d0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1d4914){return function(_0x116cbf,_0x11d314,_0xe12db7){ChatOfflineMessageEvents[_0x36d0('0x6')](_0x1d4914+':'+_0x116cbf['id'],_0x116cbf);ChatOfflineMessageEvents[_0x36d0('0x6')](_0x1d4914,_0x116cbf);_0xe12db7(null);};}for(var e in events){if(events[_0x36d0('0x7')](e)){var event=events[e];ChatOfflineMessage[_0x36d0('0x8')](e,emitEvent(event));}}module[_0x36d0('0x9')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x0212=['ChatOfflineMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0xca1abb,_0x21f8d0){var _0x43c9b4=function(_0x208591){while(--_0x208591){_0xca1abb['push'](_0xca1abb['shift']());}};_0x43c9b4(++_0x21f8d0);}(_0x0212,0x170));var _0x2021=function(_0x4c4e86,_0x4c34f2){_0x4c4e86=_0x4c4e86-0x0;var _0x273f72=_0x0212[_0x4c4e86];return _0x273f72;};'use strict';var EventEmitter=require(_0x2021('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db'][_0x2021('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x2021('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2021('0x3'),'afterDestroy':_0x2021('0x4')};function emitEvent(_0x17f04e){return function(_0x7e4aab,_0x5ba8ce,_0x41d3bc){ChatOfflineMessageEvents[_0x2021('0x5')](_0x17f04e+':'+_0x7e4aab['id'],_0x7e4aab);ChatOfflineMessageEvents[_0x2021('0x5')](_0x17f04e,_0x7e4aab);_0x41d3bc(null);};}for(var e in events){if(events[_0x2021('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x2021('0x7')](e,emitEvent(event));}}module[_0x2021('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 7d38225..6862deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a1c=['define','utf8mb4','utf8mb4_unicode_ci','exports'];(function(_0x189d2b,_0x2ca52d){var _0x2864a9=function(_0x237013){while(--_0x237013){_0x189d2b['push'](_0x189d2b['shift']());}};_0x2864a9(++_0x2ca52d);}(_0x3a1c,0x1db));var _0xc3a1=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x3a1c[_0xdea41a];return _0x15d0d8;};'use strict';var attributes=require('./chatOfflineMessage.attributes');module[_0xc3a1('0x0')]=function(_0x2bd2f6){return _0x2bd2f6[_0xc3a1('0x1')]('ChatOfflineMessage',attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc3a1('0x2'),'collate':_0xc3a1('0x3')});};
\ No newline at end of file
+var _0x4be8=['exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x4be8,0x13a));var _0x84be=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0x4be8[_0x49d41c];return _0xb64c5f;};'use strict';var attributes=require(_0x84be('0x0'));module[_0x84be('0x1')]=function(_0x30c98c){return _0x30c98c[_0x84be('0x2')](_0x84be('0x3'),attributes,{'tableName':_0x84be('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x84be('0x5'),'collate':_0x84be('0x6')});};
\ No newline at end of file
index 3686e4d..ccee790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1290=['then','request\x20sent','debug','stringify','error','code','message','info','ChatOfflineMessage,\x20%s,\x20%s','result','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x8ed2fe,_0x19ca78){var _0x23a751=function(_0x412f75){while(--_0x412f75){_0x8ed2fe['push'](_0x8ed2fe['shift']());}};_0x23a751(++_0x19ca78);}(_0x1290,0x136));var _0x0129=function(_0x450e4d,_0x30fedd){_0x450e4d=_0x450e4d-0x0;var _0x473b34=_0x1290[_0x450e4d];return _0x473b34;};'use strict';var _=require(_0x0129('0x0'));var util=require(_0x0129('0x1'));var moment=require('moment');var BPromise=require(_0x0129('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0129('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0129('0x4'));var logger=require(_0x0129('0x5'))(_0x0129('0x6'));var config=require(_0x0129('0x7'));var jayson=require(_0x0129('0x8'));var client=jayson[_0x0129('0x9')][_0x0129('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25ea5c,_0x3f0756,_0x1fc5d4){return new BPromise(function(_0x558119,_0x47c69f){return client[_0x0129('0xb')](_0x25ea5c,_0x1fc5d4)[_0x0129('0xc')](function(_0x4f13bf){logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x3f0756,_0x0129('0xd'));logger[_0x0129('0xe')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x3f0756,'request\x20sent',JSON[_0x0129('0xf')](_0x4f13bf));if(_0x4f13bf[_0x0129('0x10')]){if(_0x4f13bf[_0x0129('0x10')][_0x0129('0x11')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x3f0756,_0x4f13bf['error'][_0x0129('0x12')]);return _0x47c69f(_0x4f13bf[_0x0129('0x10')][_0x0129('0x12')]);}logger[_0x0129('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x3f0756,_0x4f13bf[_0x0129('0x10')][_0x0129('0x12')]);return _0x558119(_0x4f13bf[_0x0129('0x10')]['message']);}else{logger[_0x0129('0x13')](_0x0129('0x14'),_0x3f0756,'request\x20sent');_0x558119(_0x4f13bf[_0x0129('0x15')][_0x0129('0x12')]);}})[_0x0129('0x16')](function(_0x1f0547){logger[_0x0129('0x10')](_0x0129('0x14'),_0x3f0756,_0x1f0547);_0x47c69f(_0x1f0547);});});}
\ No newline at end of file
+var _0x424f=['request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','request','then','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x2f54b6,_0x3cc6cb){var _0x169f21=function(_0x4dac27){while(--_0x4dac27){_0x2f54b6['push'](_0x2f54b6['shift']());}};_0x169f21(++_0x3cc6cb);}(_0x424f,0x94));var _0xf424=function(_0x9778a3,_0x19b0b7){_0x9778a3=_0x9778a3-0x0;var _0x1a3be4=_0x424f[_0x9778a3];return _0x1a3be4;};'use strict';var _=require(_0xf424('0x0'));var util=require(_0xf424('0x1'));var moment=require(_0xf424('0x2'));var BPromise=require(_0xf424('0x3'));var rs=require(_0xf424('0x4'));var fs=require('fs');var Redis=require(_0xf424('0x5'));var db=require(_0xf424('0x6'))['db'];var utils=require(_0xf424('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf424('0x8'));var client=jayson[_0xf424('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53e21c,_0x52561c,_0x405840){return new BPromise(function(_0x1c5192,_0x2586e2){return client[_0xf424('0xa')](_0x53e21c,_0x405840)[_0xf424('0xb')](function(_0x584171){logger['info'](_0xf424('0xc'),_0x52561c,_0xf424('0xd'));logger[_0xf424('0xe')](_0xf424('0xf'),_0x52561c,_0xf424('0xd'),JSON[_0xf424('0x10')](_0x584171));if(_0x584171[_0xf424('0x11')]){if(_0x584171[_0xf424('0x11')][_0xf424('0x12')]===0x1f4){logger[_0xf424('0x11')](_0xf424('0xc'),_0x52561c,_0x584171[_0xf424('0x11')][_0xf424('0x13')]);return _0x2586e2(_0x584171[_0xf424('0x11')][_0xf424('0x13')]);}logger[_0xf424('0x11')](_0xf424('0xc'),_0x52561c,_0x584171[_0xf424('0x11')]['message']);return _0x1c5192(_0x584171[_0xf424('0x11')][_0xf424('0x13')]);}else{logger[_0xf424('0x14')](_0xf424('0xc'),_0x52561c,_0xf424('0xd'));_0x1c5192(_0x584171[_0xf424('0x15')][_0xf424('0x13')]);}})[_0xf424('0x16')](function(_0x290283){logger[_0xf424('0x11')](_0xf424('0xc'),_0x52561c,_0x290283);_0x2586e2(_0x290283);});});}
\ No newline at end of file
index d8a8f42..43abd3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec8=['util','path','fs-extra','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','describe','/:id','show','put','delete','exports','multer'];(function(_0x2ae8f,_0x347504){var _0x1ca825=function(_0x488702){while(--_0x488702){_0x2ae8f['push'](_0x2ae8f['shift']());}};_0x1ca825(++_0x347504);}(_0x3ec8,0xa4));var _0x83ec=function(_0x1af1d7,_0x121554){_0x1af1d7=_0x1af1d7-0x0;var _0x1d3111=_0x3ec8[_0x1af1d7];return _0x1d3111;};'use strict';var multer=require(_0x83ec('0x0'));var util=require(_0x83ec('0x1'));var path=require(_0x83ec('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x83ec('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x83ec('0x4'));var config=require(_0x83ec('0x5'));var controller=require(_0x83ec('0x6'));router[_0x83ec('0x7')]('/',auth[_0x83ec('0x8')](),controller['index']);router['get']('/describe',auth[_0x83ec('0x8')](),controller[_0x83ec('0x9')]);router[_0x83ec('0x7')](_0x83ec('0xa'),auth[_0x83ec('0x8')](),controller[_0x83ec('0xb')]);router['post']('/',auth[_0x83ec('0x8')](),controller['create']);router[_0x83ec('0xc')](_0x83ec('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x83ec('0xd')](_0x83ec('0xa'),auth[_0x83ec('0x8')](),controller['destroy']);module[_0x83ec('0xe')]=router;
\ No newline at end of file
+var _0x0755=['/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatOfflineMessage.controller','isAuthenticated','index','get','/describe','describe'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x0755,0x111));var _0x5075=function(_0x42226f,_0x32798d){_0x42226f=_0x42226f-0x0;var _0x2df8d7=_0x0755[_0x42226f];return _0x2df8d7;};'use strict';var multer=require(_0x5075('0x0'));var util=require('util');var path=require(_0x5075('0x1'));var timeout=require(_0x5075('0x2'));var express=require(_0x5075('0x3'));var router=express[_0x5075('0x4')]();var fs_extra=require(_0x5075('0x5'));var auth=require(_0x5075('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5075('0x7'));router['get']('/',auth[_0x5075('0x8')](),controller[_0x5075('0x9')]);router[_0x5075('0xa')](_0x5075('0xb'),auth['isAuthenticated'](),controller[_0x5075('0xc')]);router[_0x5075('0xa')](_0x5075('0xd'),auth[_0x5075('0x8')](),controller[_0x5075('0xe')]);router[_0x5075('0xf')]('/',auth['isAuthenticated'](),controller[_0x5075('0x10')]);router[_0x5075('0x11')](_0x5075('0xd'),auth[_0x5075('0x8')](),controller[_0x5075('0x12')]);router[_0x5075('0x13')]('/:id',auth[_0x5075('0x8')](),controller[_0x5075('0x14')]);module[_0x5075('0x15')]=router;
\ No newline at end of file
index 8f60706..e9987e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f72=['sequelize','exports','ENUM','mouseOver','timeout','STRING','INTEGER'];(function(_0x39e02f,_0x2f4a3c){var _0x9cf183=function(_0x5bdd82){while(--_0x5bdd82){_0x39e02f['push'](_0x39e02f['shift']());}};_0x9cf183(++_0x2f4a3c);}(_0x9f72,0x126));var _0x29f7=function(_0xffe379,_0x1a170c){_0xffe379=_0xffe379-0x0;var _0x566a60=_0x9f72[_0xffe379];return _0x566a60;};'use strict';var Sequelize=require(_0x29f7('0x0'));module[_0x29f7('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x29f7('0x2')](_0x29f7('0x3'),_0x29f7('0x4')),'defaultValue':_0x29f7('0x3')},'selector':{'type':Sequelize[_0x29f7('0x5')]},'timeout':{'type':Sequelize[_0x29f7('0x6')]}};
\ No newline at end of file
+var _0xd5c0=['INTEGER','sequelize','exports','STRING','ENUM','mouseOver','timeout'];(function(_0xd0a847,_0x72562b){var _0x2536ec=function(_0x20e4db){while(--_0x20e4db){_0xd0a847['push'](_0xd0a847['shift']());}};_0x2536ec(++_0x72562b);}(_0xd5c0,0x189));var _0x0d5c=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xd5c0[_0x87b0ff];return _0x3bc0b2;};'use strict';var Sequelize=require(_0x0d5c('0x0'));module[_0x0d5c('0x1')]={'name':{'type':Sequelize[_0x0d5c('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0d5c('0x3')](_0x0d5c('0x4'),_0x0d5c('0x5')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x0d5c('0x2')]},'timeout':{'type':Sequelize[_0x0d5c('0x6')]}};
\ No newline at end of file
index c265378..c2e006d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f7=['then','name','show','params','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xe8f7,0x137));var _0x7e8f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe8f7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7e8f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7e8f('0x1'));var jsonpatch=require(_0x7e8f('0x2'));var rp=require(_0x7e8f('0x3'));var moment=require(_0x7e8f('0x4'));var BPromise=require(_0x7e8f('0x5'));var Mustache=require(_0x7e8f('0x6'));var util=require(_0x7e8f('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7e8f('0x8'));var ejs=require(_0x7e8f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e8f('0xa'));var squel=require(_0x7e8f('0xb'));var crypto=require(_0x7e8f('0xc'));var jsforce=require(_0x7e8f('0xd'));var deskjs=require(_0x7e8f('0xe'));var toCsv=require(_0x7e8f('0x8'));var querystring=require(_0x7e8f('0xf'));var Papa=require('papaparse');var Redis=require(_0x7e8f('0x10'));var authService=require(_0x7e8f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7e8f('0x12'));var hardwareService=require(_0x7e8f('0x13'));var logger=require(_0x7e8f('0x14'))(_0x7e8f('0x15'));var utils=require('../../config/utils');var config=require(_0x7e8f('0x16'));var licenseUtil=require(_0x7e8f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd953ca,_0x15daab){_0x15daab=_0x15daab||0xcc;return function(_0x5ad765){if(_0x5ad765){return _0xd953ca['sendStatus'](_0x15daab);}return _0xd953ca[_0x7e8f('0x18')](_0x15daab)[_0x7e8f('0x19')]();};}function respondWithResult(_0x34ff25,_0x1225f8){_0x1225f8=_0x1225f8||0xc8;return function(_0x336a9d){if(_0x336a9d){return _0x34ff25[_0x7e8f('0x18')](_0x1225f8)[_0x7e8f('0x1a')](_0x336a9d);}};}function respondWithFilteredResult(_0x303aaa,_0x40f43d){return function(_0x3d05f1){if(_0x3d05f1){var _0x38066f=typeof _0x40f43d[_0x7e8f('0x1b')]===_0x7e8f('0x1c')&&typeof _0x40f43d[_0x7e8f('0x1d')]===_0x7e8f('0x1c');var _0xbbb0e=_0x3d05f1['count'];var _0x46a777=_0x38066f?0x0:_0x40f43d[_0x7e8f('0x1b')];var _0x3718d8=_0x38066f?_0x3d05f1['count']:_0x40f43d[_0x7e8f('0x1b')]+_0x40f43d[_0x7e8f('0x1d')];var _0x38ca75;if(_0x3718d8>=_0xbbb0e){_0x3718d8=_0xbbb0e;_0x38ca75=0xc8;}else{_0x38ca75=0xce;}_0x303aaa[_0x7e8f('0x18')](_0x38ca75);return _0x303aaa[_0x7e8f('0x1e')](_0x7e8f('0x1f'),_0x46a777+'-'+_0x3718d8+'/'+_0xbbb0e)[_0x7e8f('0x1a')](_0x3d05f1);}return null;};}function patchUpdates(_0x33ebf6){return function(_0x4ad298){try{jsonpatch[_0x7e8f('0x20')](_0x4ad298,_0x33ebf6,!![]);}catch(_0x5528e5){return BPromise[_0x7e8f('0x21')](_0x5528e5);}return _0x4ad298[_0x7e8f('0x22')]();};}function saveUpdates(_0x16bc1c,_0x49b893){return function(_0x3854f8){if(_0x3854f8){return _0x3854f8[_0x7e8f('0x23')](_0x16bc1c)['then'](function(_0x37f99f){return _0x37f99f;});}return null;};}function removeEntity(_0x2ba552,_0x54f661){return function(_0x248f2c){if(_0x248f2c){return _0x248f2c[_0x7e8f('0x24')]()[_0x7e8f('0x25')](function(){_0x2ba552['status'](0xcc)[_0x7e8f('0x19')]();});}};}function handleEntityNotFound(_0x4d9211,_0x28a96e){return function(_0x2b7cd4){if(!_0x2b7cd4){_0x4d9211['sendStatus'](0x194);}return _0x2b7cd4;};}function handleError(_0xa82475,_0x307eb3){_0x307eb3=_0x307eb3||0x1f4;return function(_0x1ef016){logger['error'](_0x1ef016['stack']);if(_0x1ef016[_0x7e8f('0x26')]){delete _0x1ef016['name'];}_0xa82475[_0x7e8f('0x18')](_0x307eb3)['send'](_0x1ef016);};}exports[_0x7e8f('0x27')]=function(_0x82b6f8,_0x56f82c){var _0x15dba0={'raw':!![],'where':{'id':_0x82b6f8[_0x7e8f('0x28')]['id']}},_0x33bb50={};_0x33bb50[_0x7e8f('0x29')]=_[_0x7e8f('0x2a')](db[_0x7e8f('0x2b')][_0x7e8f('0x2c')]);_0x33bb50[_0x7e8f('0x2d')]=_[_0x7e8f('0x2a')](_0x82b6f8[_0x7e8f('0x2d')]);_0x33bb50['filters']=_[_0x7e8f('0x2e')](_0x33bb50[_0x7e8f('0x29')],_0x33bb50['query']);_0x15dba0[_0x7e8f('0x2f')]=_[_0x7e8f('0x2e')](_0x33bb50[_0x7e8f('0x29')],qs['fields'](_0x82b6f8[_0x7e8f('0x2d')][_0x7e8f('0x30')]));_0x15dba0[_0x7e8f('0x2f')]=_0x15dba0['attributes'][_0x7e8f('0x31')]?_0x15dba0[_0x7e8f('0x2f')]:_0x33bb50[_0x7e8f('0x29')];if(_0x82b6f8[_0x7e8f('0x2d')][_0x7e8f('0x32')]){_0x15dba0[_0x7e8f('0x33')]=[{'all':!![]}];}_0x15dba0=_[_0x7e8f('0x34')]({},_0x15dba0,_0x82b6f8[_0x7e8f('0x35')]);return db['ChatProactiveAction'][_0x7e8f('0x36')](_0x15dba0)[_0x7e8f('0x25')](handleEntityNotFound(_0x56f82c,null))[_0x7e8f('0x25')](respondWithResult(_0x56f82c,null))[_0x7e8f('0x37')](handleError(_0x56f82c,null));};exports[_0x7e8f('0x38')]=function(_0x314de1,_0x2a5501){return db[_0x7e8f('0x2b')]['create'](_0x314de1[_0x7e8f('0x39')],{})[_0x7e8f('0x25')](respondWithResult(_0x2a5501,0xc9))[_0x7e8f('0x37')](handleError(_0x2a5501,null));};exports[_0x7e8f('0x23')]=function(_0x54af48,_0x16cbf0){if(_0x54af48[_0x7e8f('0x39')]['id']){delete _0x54af48[_0x7e8f('0x39')]['id'];}return db[_0x7e8f('0x2b')]['find']({'where':{'id':_0x54af48['params']['id']}})[_0x7e8f('0x25')](handleEntityNotFound(_0x16cbf0,null))[_0x7e8f('0x25')](saveUpdates(_0x54af48['body'],null))[_0x7e8f('0x25')](respondWithResult(_0x16cbf0,null))[_0x7e8f('0x37')](handleError(_0x16cbf0,null));};exports[_0x7e8f('0x24')]=function(_0x5b050f,_0x5712d3){return db[_0x7e8f('0x2b')][_0x7e8f('0x36')]({'where':{'id':_0x5b050f['params']['id']}})[_0x7e8f('0x25')](handleEntityNotFound(_0x5712d3,null))[_0x7e8f('0x25')](removeEntity(_0x5712d3,null))[_0x7e8f('0x37')](handleError(_0x5712d3,null));};
\ No newline at end of file
+var _0xe14f=['../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','show','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x7e3bb8,_0x27c048){var _0x44c887=function(_0x55d7c6){while(--_0x55d7c6){_0x7e3bb8['push'](_0x7e3bb8['shift']());}};_0x44c887(++_0x27c048);}(_0xe14f,0xea));var _0xfe14=function(_0x524060,_0x600a3e){_0x524060=_0x524060-0x0;var _0x2ee3de=_0xe14f[_0x524060];return _0x2ee3de;};'use strict';var emlformat=require(_0xfe14('0x0'));var rimraf=require(_0xfe14('0x1'));var zipdir=require(_0xfe14('0x2'));var jsonpatch=require(_0xfe14('0x3'));var rp=require(_0xfe14('0x4'));var moment=require(_0xfe14('0x5'));var BPromise=require(_0xfe14('0x6'));var Mustache=require(_0xfe14('0x7'));var util=require(_0xfe14('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xfe14('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfe14('0xa'));var _=require(_0xfe14('0xb'));var squel=require(_0xfe14('0xc'));var crypto=require(_0xfe14('0xd'));var jsforce=require(_0xfe14('0xe'));var deskjs=require(_0xfe14('0xf'));var toCsv=require(_0xfe14('0x9'));var querystring=require(_0xfe14('0x10'));var Papa=require(_0xfe14('0x11'));var Redis=require('ioredis');var authService=require(_0xfe14('0x12'));var qs=require(_0xfe14('0x13'));var as=require(_0xfe14('0x14'));var hardwareService=require(_0xfe14('0x15'));var logger=require(_0xfe14('0x16'))(_0xfe14('0x17'));var utils=require('../../config/utils');var config=require(_0xfe14('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe14('0x19'))['db'];function respondWithStatusCode(_0xd3aad8,_0x276de0){_0x276de0=_0x276de0||0xcc;return function(_0x31c0d8){if(_0x31c0d8){return _0xd3aad8[_0xfe14('0x1a')](_0x276de0);}return _0xd3aad8[_0xfe14('0x1b')](_0x276de0)['end']();};}function respondWithResult(_0x4aabda,_0x39799a){_0x39799a=_0x39799a||0xc8;return function(_0x43db84){if(_0x43db84){return _0x4aabda[_0xfe14('0x1b')](_0x39799a)['json'](_0x43db84);}};}function respondWithFilteredResult(_0x3c2d52,_0x546d82){return function(_0x3f3114){if(_0x3f3114){var _0x1cdd4b=typeof _0x546d82[_0xfe14('0x1c')]===_0xfe14('0x1d')&&typeof _0x546d82[_0xfe14('0x1e')]===_0xfe14('0x1d');var _0x2ac71b=_0x3f3114[_0xfe14('0x1f')];var _0x131408=_0x1cdd4b?0x0:_0x546d82['offset'];var _0x56522f=_0x1cdd4b?_0x3f3114[_0xfe14('0x1f')]:_0x546d82[_0xfe14('0x1c')]+_0x546d82[_0xfe14('0x1e')];var _0x23c86d;if(_0x56522f>=_0x2ac71b){_0x56522f=_0x2ac71b;_0x23c86d=0xc8;}else{_0x23c86d=0xce;}_0x3c2d52[_0xfe14('0x1b')](_0x23c86d);return _0x3c2d52[_0xfe14('0x20')](_0xfe14('0x21'),_0x131408+'-'+_0x56522f+'/'+_0x2ac71b)[_0xfe14('0x22')](_0x3f3114);}return null;};}function patchUpdates(_0x5d3332){return function(_0x451a15){try{jsonpatch[_0xfe14('0x23')](_0x451a15,_0x5d3332,!![]);}catch(_0x285c68){return BPromise[_0xfe14('0x24')](_0x285c68);}return _0x451a15[_0xfe14('0x25')]();};}function saveUpdates(_0x5a268c,_0x2fa357){return function(_0x16e935){if(_0x16e935){return _0x16e935[_0xfe14('0x26')](_0x5a268c)[_0xfe14('0x27')](function(_0x326a92){return _0x326a92;});}return null;};}function removeEntity(_0x48299e,_0x1a8620){return function(_0x400f5d){if(_0x400f5d){return _0x400f5d[_0xfe14('0x28')]()[_0xfe14('0x27')](function(){_0x48299e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12ab29,_0x185569){return function(_0x22ab45){if(!_0x22ab45){_0x12ab29[_0xfe14('0x1a')](0x194);}return _0x22ab45;};}function handleError(_0xbd2789,_0x422e9e){_0x422e9e=_0x422e9e||0x1f4;return function(_0x28aa60){logger[_0xfe14('0x29')](_0x28aa60['stack']);if(_0x28aa60[_0xfe14('0x2a')]){delete _0x28aa60[_0xfe14('0x2a')];}_0xbd2789[_0xfe14('0x1b')](_0x422e9e)[_0xfe14('0x2b')](_0x28aa60);};}exports[_0xfe14('0x2c')]=function(_0xce2ec6,_0x6da72a){var _0xfa695a={'raw':!![],'where':{'id':_0xce2ec6['params']['id']}},_0x1340a3={};_0x1340a3[_0xfe14('0x2d')]=_[_0xfe14('0x2e')](db['ChatProactiveAction'][_0xfe14('0x2f')]);_0x1340a3[_0xfe14('0x30')]=_[_0xfe14('0x2e')](_0xce2ec6[_0xfe14('0x30')]);_0x1340a3[_0xfe14('0x31')]=_[_0xfe14('0x32')](_0x1340a3[_0xfe14('0x2d')],_0x1340a3['query']);_0xfa695a[_0xfe14('0x33')]=_[_0xfe14('0x32')](_0x1340a3[_0xfe14('0x2d')],qs[_0xfe14('0x34')](_0xce2ec6[_0xfe14('0x30')][_0xfe14('0x34')]));_0xfa695a['attributes']=_0xfa695a['attributes'][_0xfe14('0x35')]?_0xfa695a['attributes']:_0x1340a3['model'];if(_0xce2ec6[_0xfe14('0x30')][_0xfe14('0x36')]){_0xfa695a[_0xfe14('0x37')]=[{'all':!![]}];}_0xfa695a=_[_0xfe14('0x38')]({},_0xfa695a,_0xce2ec6[_0xfe14('0x39')]);return db[_0xfe14('0x3a')][_0xfe14('0x3b')](_0xfa695a)['then'](handleEntityNotFound(_0x6da72a,null))['then'](respondWithResult(_0x6da72a,null))[_0xfe14('0x3c')](handleError(_0x6da72a,null));};exports[_0xfe14('0x3d')]=function(_0x110c45,_0x3ed766){return db[_0xfe14('0x3a')][_0xfe14('0x3d')](_0x110c45['body'],{})['then'](respondWithResult(_0x3ed766,0xc9))[_0xfe14('0x3c')](handleError(_0x3ed766,null));};exports['update']=function(_0x557bf5,_0x188959){if(_0x557bf5[_0xfe14('0x3e')]['id']){delete _0x557bf5[_0xfe14('0x3e')]['id'];}return db[_0xfe14('0x3a')][_0xfe14('0x3b')]({'where':{'id':_0x557bf5['params']['id']}})[_0xfe14('0x27')](handleEntityNotFound(_0x188959,null))[_0xfe14('0x27')](saveUpdates(_0x557bf5['body'],null))[_0xfe14('0x27')](respondWithResult(_0x188959,null))[_0xfe14('0x3c')](handleError(_0x188959,null));};exports[_0xfe14('0x28')]=function(_0x50d2cf,_0x4a2e83){return db[_0xfe14('0x3a')][_0xfe14('0x3b')]({'where':{'id':_0x50d2cf[_0xfe14('0x3f')]['id']}})[_0xfe14('0x27')](handleEntityNotFound(_0x4a2e83,null))[_0xfe14('0x27')](removeEntity(_0x4a2e83,null))[_0xfe14('0x3c')](handleError(_0x4a2e83,null));};
\ No newline at end of file
index 8a7db28..cb7b110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1140=['moment','bluebird','request-promise','path','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','util','../../config/logger','api'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1140,0x19d));var _0x0114=function(_0x8963b8,_0x35bdaf){_0x8963b8=_0x8963b8-0x0;var _0x31de7b=_0x1140[_0x8963b8];return _0x31de7b;};'use strict';var _=require('lodash');var util=require(_0x0114('0x0'));var logger=require(_0x0114('0x1'))(_0x0114('0x2'));var moment=require(_0x0114('0x3'));var BPromise=require(_0x0114('0x4'));var rp=require(_0x0114('0x5'));var fs=require('fs');var path=require(_0x0114('0x6'));var rimraf=require('rimraf');var config=require(_0x0114('0x7'));var attributes=require(_0x0114('0x8'));module[_0x0114('0x9')]=function(_0x5ae8d6,_0x3459cd){return _0x5ae8d6[_0x0114('0xa')](_0x0114('0xb'),attributes,{'tableName':_0x0114('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a13=['ChatProactiveAction','util','../../config/logger','request-promise','path','../../config/environment','define'];(function(_0x4a6e34,_0x1db0fd){var _0x30b12f=function(_0x3371a9){while(--_0x3371a9){_0x4a6e34['push'](_0x4a6e34['shift']());}};_0x30b12f(++_0x1db0fd);}(_0x0a13,0xef));var _0x30a1=function(_0x4fa4fd,_0x4c656b){_0x4fa4fd=_0x4fa4fd-0x0;var _0x3c50d0=_0x0a13[_0x4fa4fd];return _0x3c50d0;};'use strict';var _=require('lodash');var util=require(_0x30a1('0x0'));var logger=require(_0x30a1('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x30a1('0x2'));var fs=require('fs');var path=require(_0x30a1('0x3'));var rimraf=require('rimraf');var config=require(_0x30a1('0x4'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x2da0e0,_0xcc1419){return _0x2da0e0[_0x30a1('0x5')](_0x30a1('0x6'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b859bee..69ee921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d88=['util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','ChatProactiveAction,\x20%s,\x20%s','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash'];(function(_0x1de164,_0x49fed7){var _0x4b3681=function(_0x5aafba){while(--_0x5aafba){_0x1de164['push'](_0x1de164['shift']());}};_0x4b3681(++_0x49fed7);}(_0x7d88,0x7d));var _0x87d8=function(_0x500021,_0x430c48){_0x500021=_0x500021-0x0;var _0x5e9527=_0x7d88[_0x500021];return _0x5e9527;};'use strict';var _=require(_0x87d8('0x0'));var util=require(_0x87d8('0x1'));var moment=require(_0x87d8('0x2'));var BPromise=require(_0x87d8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x87d8('0x4'));var db=require(_0x87d8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x87d8('0x6'))(_0x87d8('0x7'));var config=require(_0x87d8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x87d8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34e5fe,_0x1eb736,_0x5ccdaa){return new BPromise(function(_0x5650bf,_0x567471){return client[_0x87d8('0xa')](_0x34e5fe,_0x5ccdaa)[_0x87d8('0xb')](function(_0x2d095f){logger['info'](_0x87d8('0xc'),_0x1eb736,'request\x20sent');logger['debug'](_0x87d8('0xd'),_0x1eb736,_0x87d8('0xe'),JSON[_0x87d8('0xf')](_0x2d095f));if(_0x2d095f[_0x87d8('0x10')]){if(_0x2d095f['error'][_0x87d8('0x11')]===0x1f4){logger[_0x87d8('0x10')](_0x87d8('0xc'),_0x1eb736,_0x2d095f[_0x87d8('0x10')]['message']);return _0x567471(_0x2d095f[_0x87d8('0x10')][_0x87d8('0x12')]);}logger[_0x87d8('0x10')](_0x87d8('0xc'),_0x1eb736,_0x2d095f['error']['message']);return _0x5650bf(_0x2d095f[_0x87d8('0x10')][_0x87d8('0x12')]);}else{logger['info'](_0x87d8('0xc'),_0x1eb736,_0x87d8('0xe'));_0x5650bf(_0x2d095f[_0x87d8('0x13')]['message']);}})[_0x87d8('0x14')](function(_0x8bed82){logger[_0x87d8('0x10')]('ChatProactiveAction,\x20%s,\x20%s',_0x1eb736,_0x8bed82);_0x567471(_0x8bed82);});});}
\ No newline at end of file
+var _0x65f6=['client','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x25caa8,_0x14a97d){var _0x43180d=function(_0x32cb40){while(--_0x32cb40){_0x25caa8['push'](_0x25caa8['shift']());}};_0x43180d(++_0x14a97d);}(_0x65f6,0x1df));var _0x665f=function(_0x33d7fd,_0x2a1c3e){_0x33d7fd=_0x33d7fd-0x0;var _0x37488d=_0x65f6[_0x33d7fd];return _0x37488d;};'use strict';var _=require(_0x665f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x665f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x665f('0x2'));var db=require(_0x665f('0x3'))['db'];var utils=require(_0x665f('0x4'));var logger=require(_0x665f('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x665f('0x6'));var client=jayson[_0x665f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2779ca,_0x3ae332,_0x4fffb6){return new BPromise(function(_0x3c99fa,_0x3ca9e9){return client[_0x665f('0x8')](_0x2779ca,_0x4fffb6)[_0x665f('0x9')](function(_0x4f9b9a){logger[_0x665f('0xa')](_0x665f('0xb'),_0x3ae332,_0x665f('0xc'));logger[_0x665f('0xd')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x3ae332,_0x665f('0xc'),JSON[_0x665f('0xe')](_0x4f9b9a));if(_0x4f9b9a[_0x665f('0xf')]){if(_0x4f9b9a[_0x665f('0xf')]['code']===0x1f4){logger[_0x665f('0xf')](_0x665f('0xb'),_0x3ae332,_0x4f9b9a[_0x665f('0xf')][_0x665f('0x10')]);return _0x3ca9e9(_0x4f9b9a[_0x665f('0xf')]['message']);}logger[_0x665f('0xf')](_0x665f('0xb'),_0x3ae332,_0x4f9b9a[_0x665f('0xf')][_0x665f('0x10')]);return _0x3c99fa(_0x4f9b9a[_0x665f('0xf')][_0x665f('0x10')]);}else{logger['info'](_0x665f('0xb'),_0x3ae332,_0x665f('0xc'));_0x3c99fa(_0x4f9b9a['result']['message']);}})[_0x665f('0x11')](function(_0x170dce){logger[_0x665f('0xf')](_0x665f('0xb'),_0x3ae332,_0x170dce);_0x3ca9e9(_0x170dce);});});}
\ No newline at end of file
index d482450..01065b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','show','post','isAuthenticated','create','exports'];(function(_0x3afe18,_0x26922c){var _0x19ed1f=function(_0x1c0660){while(--_0x1c0660){_0x3afe18['push'](_0x3afe18['shift']());}};_0x19ed1f(++_0x26922c);}(_0x2bd8,0x130));var _0x82bd=function(_0x41d9c8,_0x1eafce){_0x41d9c8=_0x41d9c8-0x0;var _0x5b861e=_0x2bd8[_0x41d9c8];return _0x5b861e;};'use strict';var multer=require(_0x82bd('0x0'));var util=require('util');var path=require(_0x82bd('0x1'));var timeout=require(_0x82bd('0x2'));var express=require(_0x82bd('0x3'));var router=express[_0x82bd('0x4')]();var fs_extra=require(_0x82bd('0x5'));var auth=require(_0x82bd('0x6'));var interaction=require(_0x82bd('0x7'));var config=require('../../config/environment');var controller=require(_0x82bd('0x8'));router[_0x82bd('0x9')](_0x82bd('0xa'),auth['isAuthenticated'](),controller[_0x82bd('0xb')]);router[_0x82bd('0xc')]('/',auth[_0x82bd('0xd')](),controller[_0x82bd('0xe')]);router['put'](_0x82bd('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x82bd('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x82bd('0xf')]=router;
\ No newline at end of file
+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(_0x43e5f8,_0x533ec3){var _0x16a570=function(_0x5a595c){while(--_0x5a595c){_0x43e5f8['push'](_0x43e5f8['shift']());}};_0x16a570(++_0x533ec3);}(_0x5fc3,0xa8));var _0x35fc=function(_0x282a1f,_0x49a6ef){_0x282a1f=_0x282a1f-0x0;var _0x296ea7=_0x5fc3[_0x282a1f];return _0x296ea7;};'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
index 0ccf662..7aa14f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b8=['STRING','name','INTEGER','rrmemory','roundrobin','sequelize','exports'];(function(_0x3e630a,_0x507613){var _0xca5993=function(_0x167f79){while(--_0x167f79){_0x3e630a['push'](_0x3e630a['shift']());}};_0xca5993(++_0x507613);}(_0x07b8,0x6e));var _0x807b=function(_0x241633,_0x38b2a0){_0x241633=_0x241633-0x0;var _0x384081=_0x07b8[_0x241633];return _0x384081;};'use strict';var Sequelize=require(_0x807b('0x0'));module[_0x807b('0x1')]={'name':{'type':Sequelize[_0x807b('0x2')],'unique':_0x807b('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x807b('0x2')]},'timeout':{'type':Sequelize[_0x807b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x807b('0x5'),'beepall',_0x807b('0x6'))}};
\ No newline at end of file
+var _0x30f7=['sequelize','exports','STRING','rrmemory','beepall','roundrobin'];(function(_0x5de147,_0x3fd061){var _0x2e7197=function(_0x112b62){while(--_0x112b62){_0x5de147['push'](_0x5de147['shift']());}};_0x2e7197(++_0x3fd061);}(_0x30f7,0x17a));var _0x730f=function(_0x131c4c,_0x15e9a7){_0x131c4c=_0x131c4c-0x0;var _0x53d693=_0x30f7[_0x131c4c];return _0x53d693;};'use strict';var Sequelize=require(_0x730f('0x0'));module[_0x730f('0x1')]={'name':{'type':Sequelize[_0x730f('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x730f('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x730f('0x3'),_0x730f('0x4'),_0x730f('0x5'))}};
\ No newline at end of file
index c633ef3..c74bc70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d2=['TeamId','includes','union','isEmpty','userChatQueue:remove','addAgents','spread','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','get','UserProfileResource','destroy','sendStatus','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','includeAll','include','rows','catch','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','pick','ChatQueueId','merge','options','User','findAndCountAll','UserId','agent','chatPause','updatedAt','format','SIP','createdAt','getTeams','Team','nolimit','addTeams','ids','findAll','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','field','tq.TeamId','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','SELECT'];(function(_0x5163b4,_0xb2ad99){var _0x2cb865=function(_0x1ea5af){while(--_0x1ea5af){_0x5163b4['push'](_0x5163b4['shift']());}};_0x2cb865(++_0xb2ad99);}(_0x11d2,0x13d));var _0x211d=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x11d2[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0x211d('0x0'));var rimraf=require(_0x211d('0x1'));var zipdir=require(_0x211d('0x2'));var jsonpatch=require(_0x211d('0x3'));var rp=require(_0x211d('0x4'));var moment=require(_0x211d('0x5'));var BPromise=require(_0x211d('0x6'));var Mustache=require(_0x211d('0x7'));var util=require(_0x211d('0x8'));var path=require(_0x211d('0x9'));var sox=require(_0x211d('0xa'));var csv=require(_0x211d('0xb'));var ejs=require(_0x211d('0xc'));var fs=require('fs');var fs_extra=require(_0x211d('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x211d('0xe'));var jsforce=require(_0x211d('0xf'));var deskjs=require(_0x211d('0x10'));var toCsv=require(_0x211d('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x211d('0x11'));var authService=require(_0x211d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x211d('0x13'));var hardwareService=require(_0x211d('0x14'));var logger=require(_0x211d('0x15'))(_0x211d('0x16'));var utils=require('../../config/utils');var config=require(_0x211d('0x17'));var licenseUtil=require(_0x211d('0x18'));var db=require(_0x211d('0x19'))['db'];config[_0x211d('0x1a')]=_[_0x211d('0x1b')](config['redis'],{'host':_0x211d('0x1c'),'port':0x18eb});var socket=require(_0x211d('0x1d'))(new Redis(config[_0x211d('0x1a')]));require(_0x211d('0x1e'))[_0x211d('0x1f')](socket);var jayson=require(_0x211d('0x20'));var client=jayson[_0x211d('0x21')][_0x211d('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x21e26d,_0x33d173,_0x6f5a0a,_0x3c9641){return new BPromise(function(_0x5d704c,_0x52c3dd){var _0x5baa24=_0x3c9641||client;return _0x5baa24[_0x211d('0x23')](_0x21e26d,_0x6f5a0a)[_0x211d('0x24')](function(_0x3080ff){logger['info'](_0x211d('0x25'),_0x33d173,'request\x20sent');logger['debug'](_0x211d('0x26'),_0x33d173,_0x211d('0x27'),JSON[_0x211d('0x28')](_0x3080ff));if(_0x3080ff[_0x211d('0x29')]){if(_0x3080ff[_0x211d('0x29')]['code']===0x1f4){logger[_0x211d('0x29')](_0x211d('0x25'),_0x33d173,_0x3080ff[_0x211d('0x29')][_0x211d('0x2a')]);return _0x52c3dd(_0x3080ff[_0x211d('0x29')][_0x211d('0x2a')]);}logger['error']('ChatQueue,\x20%s,\x20%s',_0x33d173,_0x3080ff['error'][_0x211d('0x2a')]);return _0x5d704c(_0x3080ff[_0x211d('0x29')]['message']);}else{logger[_0x211d('0x2b')]('ChatQueue,\x20%s,\x20%s',_0x33d173,_0x211d('0x27'));_0x5d704c(_0x3080ff[_0x211d('0x2c')][_0x211d('0x2a')]);}})['catch'](function(_0x4dc387){logger['error'](_0x211d('0x25'),_0x33d173,_0x4dc387);_0x52c3dd(_0x4dc387);});});}function respondWithStatusCode(_0x34ad82,_0x37355c){_0x37355c=_0x37355c||0xcc;return function(_0xd9922c){if(_0xd9922c){return _0x34ad82['sendStatus'](_0x37355c);}return _0x34ad82[_0x211d('0x2d')](_0x37355c)[_0x211d('0x2e')]();};}function respondWithResult(_0x320c12,_0x2c1cc1){_0x2c1cc1=_0x2c1cc1||0xc8;return function(_0x346617){if(_0x346617){return _0x320c12[_0x211d('0x2d')](_0x2c1cc1)[_0x211d('0x2f')](_0x346617);}};}function respondWithFilteredResult(_0x2dbb32,_0x42cc1d){return function(_0x49ead3){if(_0x49ead3){var _0x4aa8a2=typeof _0x42cc1d['offset']===_0x211d('0x30')&&typeof _0x42cc1d[_0x211d('0x31')]===_0x211d('0x30');var _0x5131e6=_0x49ead3[_0x211d('0x32')];var _0x4ad011=_0x4aa8a2?0x0:_0x42cc1d[_0x211d('0x33')];var _0x9d2776=_0x4aa8a2?_0x49ead3[_0x211d('0x32')]:_0x42cc1d[_0x211d('0x33')]+_0x42cc1d[_0x211d('0x31')];var _0x22cef0;if(_0x9d2776>=_0x5131e6){_0x9d2776=_0x5131e6;_0x22cef0=0xc8;}else{_0x22cef0=0xce;}_0x2dbb32['status'](_0x22cef0);return _0x2dbb32[_0x211d('0x34')](_0x211d('0x35'),_0x4ad011+'-'+_0x9d2776+'/'+_0x5131e6)['json'](_0x49ead3);}return null;};}function patchUpdates(_0x112941){return function(_0x26975a){try{jsonpatch['apply'](_0x26975a,_0x112941,!![]);}catch(_0x6e43c5){return BPromise[_0x211d('0x36')](_0x6e43c5);}return _0x26975a[_0x211d('0x37')]();};}function saveUpdates(_0x5c2121,_0x1bb781){return function(_0x2e9eb5){if(_0x2e9eb5){return _0x2e9eb5[_0x211d('0x38')](_0x5c2121)[_0x211d('0x24')](function(_0x57b797){return _0x57b797;});}return null;};}function removeEntity(_0x34f438,_0x3cab80){return function(_0x4a4a51){if(_0x4a4a51){return _0x4a4a51['destroy']()[_0x211d('0x24')](function(){var _0x1c8592=_0x4a4a51[_0x211d('0x39')]({'plain':!![]});var _0x1132fa='ChatQueues';return db[_0x211d('0x3a')][_0x211d('0x3b')]({'where':{'type':_0x1132fa,'resourceId':_0x1c8592['id']}})[_0x211d('0x24')](function(){return _0x4a4a51;});})['then'](function(){_0x34f438[_0x211d('0x2d')](0xcc)[_0x211d('0x2e')]();});}};}function handleEntityNotFound(_0x26d0d9,_0x323305){return function(_0x353fad){if(!_0x353fad){_0x26d0d9[_0x211d('0x3c')](0x194);}return _0x353fad;};}function handleError(_0xe406d8,_0x4c6e40){_0x4c6e40=_0x4c6e40||0x1f4;return function(_0x27719d){logger[_0x211d('0x29')](_0x27719d[_0x211d('0x3d')]);if(_0x27719d[_0x211d('0x3e')]){delete _0x27719d[_0x211d('0x3e')];}_0xe406d8[_0x211d('0x2d')](_0x4c6e40)[_0x211d('0x3f')](_0x27719d);};}exports[_0x211d('0x40')]=function(_0x27ad06,_0x451b3c){var _0x1b6dea={},_0x83b9a2={},_0x472e02={'count':0x0,'rows':[]};var _0x1c680c=_[_0x211d('0x41')](db[_0x211d('0x42')][_0x211d('0x43')],function(_0x42208a){return{'name':_0x42208a[_0x211d('0x44')],'type':_0x42208a[_0x211d('0x45')][_0x211d('0x46')]};});_0x83b9a2[_0x211d('0x47')]=_[_0x211d('0x41')](_0x1c680c,_0x211d('0x3e'));_0x83b9a2['query']=_[_0x211d('0x48')](_0x27ad06[_0x211d('0x49')]);_0x83b9a2[_0x211d('0x4a')]=_['intersection'](_0x83b9a2[_0x211d('0x47')],_0x83b9a2['query']);_0x1b6dea[_0x211d('0x4b')]=_[_0x211d('0x4c')](_0x83b9a2[_0x211d('0x47')],qs['fields'](_0x27ad06['query'][_0x211d('0x4d')]));_0x1b6dea['attributes']=_0x1b6dea['attributes'][_0x211d('0x4e')]?_0x1b6dea[_0x211d('0x4b')]:_0x83b9a2[_0x211d('0x47')];if(!_0x27ad06[_0x211d('0x49')][_0x211d('0x4f')]('nolimit')){_0x1b6dea[_0x211d('0x31')]=qs['limit'](_0x27ad06[_0x211d('0x49')][_0x211d('0x31')]);_0x1b6dea[_0x211d('0x33')]=qs[_0x211d('0x33')](_0x27ad06[_0x211d('0x49')][_0x211d('0x33')]);}_0x1b6dea[_0x211d('0x50')]=qs[_0x211d('0x51')](_0x27ad06[_0x211d('0x49')][_0x211d('0x51')]);_0x1b6dea[_0x211d('0x52')]=qs[_0x211d('0x4a')](_['pick'](_0x27ad06['query'],_0x83b9a2[_0x211d('0x4a')]),_0x1c680c);if(_0x27ad06['query'][_0x211d('0x53')]){_0x1b6dea['where']=_['merge'](_0x1b6dea[_0x211d('0x52')],{'$or':_[_0x211d('0x41')](_0x1c680c,function(_0x2cf32e){if(_0x2cf32e[_0x211d('0x45')]!==_0x211d('0x54')){var _0x4018aa={};_0x4018aa[_0x2cf32e[_0x211d('0x3e')]]={'$like':'%'+_0x27ad06[_0x211d('0x49')]['filter']+'%'};return _0x4018aa;}})});}_0x1b6dea=_['merge']({},_0x1b6dea,_0x27ad06['options']);var _0xf3d0b0={'where':_0x1b6dea['where']};return db[_0x211d('0x42')][_0x211d('0x32')](_0xf3d0b0)['then'](function(_0x454dab){_0x472e02['count']=_0x454dab;if(_0x27ad06[_0x211d('0x49')][_0x211d('0x55')]){_0x1b6dea[_0x211d('0x56')]=[{'all':!![]}];}return db[_0x211d('0x42')]['findAll'](_0x1b6dea);})[_0x211d('0x24')](function(_0x14f7c5){_0x472e02[_0x211d('0x57')]=_0x14f7c5;return _0x472e02;})[_0x211d('0x24')](respondWithFilteredResult(_0x451b3c,_0x1b6dea))[_0x211d('0x58')](handleError(_0x451b3c,null));};exports['show']=function(_0x444eec,_0x82c9d3){var _0x171668={'raw':!![],'where':{'id':_0x444eec[_0x211d('0x59')]['id']}},_0x134249={};_0x134249[_0x211d('0x47')]=_['keys'](db[_0x211d('0x42')][_0x211d('0x43')]);_0x134249[_0x211d('0x49')]=_['keys'](_0x444eec['query']);_0x134249['filters']=_[_0x211d('0x4c')](_0x134249[_0x211d('0x47')],_0x134249[_0x211d('0x49')]);_0x171668['attributes']=_[_0x211d('0x4c')](_0x134249['model'],qs[_0x211d('0x4d')](_0x444eec[_0x211d('0x49')]['fields']));_0x171668[_0x211d('0x4b')]=_0x171668[_0x211d('0x4b')][_0x211d('0x4e')]?_0x171668[_0x211d('0x4b')]:_0x134249[_0x211d('0x47')];if(_0x444eec[_0x211d('0x49')][_0x211d('0x55')]){_0x171668[_0x211d('0x56')]=[{'all':!![]}];}_0x171668=_['merge']({},_0x171668,_0x444eec['options']);return db[_0x211d('0x42')]['find'](_0x171668)[_0x211d('0x24')](handleEntityNotFound(_0x82c9d3,null))[_0x211d('0x24')](respondWithResult(_0x82c9d3,null))[_0x211d('0x58')](handleError(_0x82c9d3,null));};exports[_0x211d('0x5a')]=function(_0x59430d,_0x331885){return db[_0x211d('0x42')][_0x211d('0x5a')](_0x59430d['body'],{})[_0x211d('0x24')](function(_0x3573b6){var _0x54461b=_0x59430d[_0x211d('0x5b')][_0x211d('0x39')]({'plain':!![]});if(!_0x54461b)throw new Error(_0x211d('0x5c'));if(_0x54461b[_0x211d('0x5d')]===_0x211d('0x5b')){var _0x130f0f=_0x3573b6['get']({'plain':!![]});var _0x28a376=_0x211d('0x5e');return db[_0x211d('0x5f')][_0x211d('0x60')]({'where':{'name':_0x28a376,'userProfileId':_0x54461b[_0x211d('0x61')]},'raw':!![]})[_0x211d('0x24')](function(_0x22b5cf){if(_0x22b5cf&&_0x22b5cf['autoAssociation']===0x0){return db[_0x211d('0x3a')][_0x211d('0x5a')]({'name':_0x130f0f[_0x211d('0x3e')],'resourceId':_0x130f0f['id'],'type':_0x22b5cf[_0x211d('0x3e')],'sectionId':_0x22b5cf['id']},{})[_0x211d('0x24')](function(){return _0x3573b6;});}else{return _0x3573b6;}})[_0x211d('0x58')](function(_0x56fb78){logger[_0x211d('0x29')](_0x211d('0x62'),_0x56fb78);throw _0x56fb78;});}return _0x3573b6;})[_0x211d('0x24')](respondWithResult(_0x331885,0xc9))[_0x211d('0x58')](handleError(_0x331885,null));};exports[_0x211d('0x38')]=function(_0x365a59,_0x2897ec){if(_0x365a59[_0x211d('0x63')]['id']){delete _0x365a59['body']['id'];}return db['ChatQueue']['find']({'where':{'id':_0x365a59['params']['id']}})[_0x211d('0x24')](handleEntityNotFound(_0x2897ec,null))[_0x211d('0x24')](saveUpdates(_0x365a59[_0x211d('0x63')],null))[_0x211d('0x24')](respondWithResult(_0x2897ec,null))['catch'](handleError(_0x2897ec,null));};exports[_0x211d('0x3b')]=function(_0x2169b0,_0x1181ea){return db[_0x211d('0x42')][_0x211d('0x60')]({'where':{'id':_0x2169b0['params']['id']}})[_0x211d('0x24')](handleEntityNotFound(_0x1181ea,null))[_0x211d('0x24')](removeEntity(_0x1181ea,null))[_0x211d('0x58')](handleError(_0x1181ea,null));};exports[_0x211d('0x64')]=function(_0x55590a,_0x313094){return db[_0x211d('0x42')]['describe']()[_0x211d('0x24')](respondWithResult(_0x313094,null))[_0x211d('0x58')](handleError(_0x313094,null));};exports[_0x211d('0x65')]=function(_0x637f1f,_0xa0954a,_0x18f10a){var _0x145b5d={'raw':!![],'where':{}},_0x53932a={},_0x48e481;return db[_0x211d('0x42')][_0x211d('0x66')]({'where':{'id':_0x637f1f[_0x211d('0x59')]['id']}})[_0x211d('0x24')](handleEntityNotFound(_0xa0954a,null))[_0x211d('0x24')](function(_0x2f1f12){if(_0x2f1f12){_0x48e481=_0x2f1f12['get']({'plain':!![]});_0x53932a[_0x211d('0x47')]=_[_0x211d('0x48')](db[_0x211d('0x67')][_0x211d('0x43')]);_0x53932a[_0x211d('0x49')]=_['keys'](_0x637f1f['query']);_0x53932a[_0x211d('0x4a')]=_[_0x211d('0x4c')](_0x53932a[_0x211d('0x47')],_0x53932a[_0x211d('0x49')]);_0x145b5d[_0x211d('0x4b')]=_['intersection'](_0x53932a[_0x211d('0x47')],qs['fields'](_0x637f1f[_0x211d('0x49')][_0x211d('0x4d')]));_0x145b5d['attributes']=_0x145b5d[_0x211d('0x4b')][_0x211d('0x4e')]?_0x145b5d[_0x211d('0x4b')]:_0x53932a[_0x211d('0x47')];if(!_0x637f1f[_0x211d('0x49')][_0x211d('0x4f')]('nolimit')){_0x145b5d[_0x211d('0x31')]=qs[_0x211d('0x31')](_0x637f1f['query'][_0x211d('0x31')]);_0x145b5d[_0x211d('0x33')]=qs[_0x211d('0x33')](_0x637f1f[_0x211d('0x49')][_0x211d('0x33')]);}_0x145b5d[_0x211d('0x50')]=qs[_0x211d('0x51')](_0x637f1f[_0x211d('0x49')]['sort']);_0x145b5d[_0x211d('0x52')]=qs[_0x211d('0x4a')](_[_0x211d('0x68')](_0x637f1f['query'],_0x53932a['filters']));_0x145b5d[_0x211d('0x52')][_0x211d('0x69')]=_0x2f1f12['id'];if(_0x637f1f[_0x211d('0x49')][_0x211d('0x53')]){_0x145b5d['where']=_['merge'](_0x145b5d[_0x211d('0x52')],{'$or':_[_0x211d('0x41')](_0x145b5d['attributes'],function(_0x5042e3){var _0x2135a4={};_0x2135a4[_0x5042e3]={'$like':'%'+_0x637f1f[_0x211d('0x49')][_0x211d('0x53')]+'%'};return _0x2135a4;})});}_0x145b5d=_[_0x211d('0x6a')]({},_0x145b5d,_0x637f1f[_0x211d('0x6b')]);return db[_0x211d('0x67')]['findAll'](_0x145b5d);}})[_0x211d('0x24')](function(_0x59c13d){if(_0x59c13d){return db[_0x211d('0x6c')][_0x211d('0x6d')]({'where':{'id':_['map'](_0x59c13d,_0x211d('0x6e')),'role':_0x211d('0x6f')},'attributes':['id',_0x211d('0x3e'),_0x211d('0x70'),_0x211d('0x71'),'createdAt']});}})[_0x211d('0x24')](function(_0xf1c586){if(_0xf1c586){return{'count':_0xf1c586[_0x211d('0x32')],'rows':_['map'](_0xf1c586['rows'],function(_0x33e67c){return{'membername':_0x33e67c[_0x211d('0x3e')],'UserId':_0x33e67c['id'],'queue_name':_0x48e481['name'],'ChatQueueId':_0x48e481['id'],'interface':util[_0x211d('0x72')]('%s/%s',_0x211d('0x73'),_0x33e67c['name']),'penalty':0x0,'paused':_0x33e67c[_0x211d('0x70')],'createdAt':_0x33e67c[_0x211d('0x74')],'updatedAt':_0x33e67c[_0x211d('0x71')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x211d('0x24')](respondWithFilteredResult(_0xa0954a,_0x145b5d))[_0x211d('0x58')](handleError(_0xa0954a,null));};exports[_0x211d('0x75')]=function(_0x5352e0,_0x3aa935,_0x5b366a){var _0x4e84a6={};var _0x324d18={};var _0x47c3c2;var _0x19eae5;return db[_0x211d('0x42')][_0x211d('0x66')]({'where':{'id':_0x5352e0[_0x211d('0x59')]['id']}})[_0x211d('0x24')](handleEntityNotFound(_0x3aa935,null))['then'](function(_0x4c0097){if(_0x4c0097){_0x47c3c2=_0x4c0097;_0x324d18[_0x211d('0x47')]=_['keys'](db[_0x211d('0x76')]['rawAttributes']);_0x324d18[_0x211d('0x49')]=_['keys'](_0x5352e0[_0x211d('0x49')]);_0x324d18[_0x211d('0x4a')]=_[_0x211d('0x4c')](_0x324d18[_0x211d('0x47')],_0x324d18['query']);_0x4e84a6[_0x211d('0x4b')]=_['intersection'](_0x324d18[_0x211d('0x47')],qs[_0x211d('0x4d')](_0x5352e0['query'][_0x211d('0x4d')]));_0x4e84a6['attributes']=_0x4e84a6['attributes']['length']?_0x4e84a6['attributes']:_0x324d18[_0x211d('0x47')];_0x4e84a6['order']=qs[_0x211d('0x51')](_0x5352e0[_0x211d('0x49')][_0x211d('0x51')]);_0x4e84a6[_0x211d('0x52')]=qs['filters'](_[_0x211d('0x68')](_0x5352e0[_0x211d('0x49')],_0x324d18[_0x211d('0x4a')]));if(_0x5352e0[_0x211d('0x49')][_0x211d('0x53')]){_0x4e84a6[_0x211d('0x52')]=_[_0x211d('0x6a')](_0x4e84a6['where'],{'$or':_[_0x211d('0x41')](_0x4e84a6[_0x211d('0x4b')],function(_0x2937fb){var _0x4e1d96={};_0x4e1d96[_0x2937fb]={'$like':'%'+_0x5352e0[_0x211d('0x49')][_0x211d('0x53')]+'%'};return _0x4e1d96;})});}_0x4e84a6=_[_0x211d('0x6a')]({},_0x4e84a6,_0x5352e0[_0x211d('0x6b')]);return _0x47c3c2['getTeams'](_0x4e84a6);}})[_0x211d('0x24')](function(_0x42e390){if(_0x42e390){_0x19eae5=_0x42e390[_0x211d('0x4e')];if(!_0x5352e0['query'][_0x211d('0x4f')](_0x211d('0x77'))){_0x4e84a6[_0x211d('0x31')]=qs[_0x211d('0x31')](_0x5352e0[_0x211d('0x49')]['limit']);_0x4e84a6[_0x211d('0x33')]=qs[_0x211d('0x33')](_0x5352e0[_0x211d('0x49')][_0x211d('0x33')]);}return _0x47c3c2[_0x211d('0x75')](_0x4e84a6);}})[_0x211d('0x24')](function(_0x5d2446){if(_0x5d2446){return _0x5d2446?{'count':_0x19eae5,'rows':_0x5d2446}:null;}})[_0x211d('0x24')](respondWithResult(_0x3aa935,null))['catch'](handleError(_0x3aa935,null));};exports[_0x211d('0x78')]=function(_0x36cae5,_0x52fbad,_0x53a879){var _0x1af5eb=_0x36cae5['body'][_0x211d('0x79')];return db['Team'][_0x211d('0x7a')]({'where':{'id':_0x1af5eb},'attributes':['id'],'include':[{'model':db['User'],'as':_0x211d('0x7b'),'attributes':['id',_0x211d('0x3e'),_0x211d('0x7c'),_0x211d('0x7d'),_0x211d('0x7e')],'raw':!![]}]})[_0x211d('0x24')](function(_0x5b53fd){if(_0x5b53fd){var _0x3753a1=_[_0x211d('0x7f')](_0x5b53fd,function(_0x69b1cc){var _0x1d5c0a=_0x69b1cc['get']({'plain':!![]});return _0x1d5c0a[_0x211d('0x7b')];});return db['ChatQueue'][_0x211d('0x60')]({'where':{'id':_0x36cae5[_0x211d('0x59')]['id']}})[_0x211d('0x24')](function(_0x4d4ccc){return db['sequelize'][_0x211d('0x80')](function(_0x4eb03e){return _0x4d4ccc[_0x211d('0x78')](_0x1af5eb,{'transaction':_0x4eb03e})[_0x211d('0x24')](function(){return BPromise[_0x211d('0x81')](_0x3753a1,function(_0x179fe5){return db['UserChatQueue'][_0x211d('0x82')]({'where':{'UserId':_0x179fe5['id'],'ChatQueueId':_0x36cae5[_0x211d('0x59')]['id']},'transaction':_0x4eb03e});});})[_0x211d('0x24')](function(){_0x3753a1[_0x211d('0x83')](function(_0x5f2fbc){socket[_0x211d('0x84')](_0x211d('0x85'),{'UserId':_0x5f2fbc['id'],'ChatQueueId':_0x4d4ccc['id']});});});});});}})['then'](respondWithStatusCode(_0x52fbad,null))[_0x211d('0x58')](handleError(_0x52fbad,null));};exports[_0x211d('0x86')]=function(_0x45afc3,_0x2a77e5,_0x4e7cc4){return db['Team']['findAll']({'where':{'id':_0x45afc3[_0x211d('0x49')][_0x211d('0x79')]},'attributes':['id'],'include':[{'model':db[_0x211d('0x6c')],'as':_0x211d('0x7b'),'attributes':['id'],'raw':!![]}]})[_0x211d('0x24')](handleEntityNotFound(_0x2a77e5,null))[_0x211d('0x24')](function(_0x2fac32){var _0x4de77d=_[_0x211d('0x41')](_0x2fac32,'id');var _0x4d1bd9=[];var _0x3062dd=[];var _0x2faeec=squel['select']();_0x2faeec[_0x211d('0x87')](_0x211d('0x88'))['from'](_0x211d('0x89'),'tq')[_0x211d('0x8a')](_0x211d('0x8b'),'ut',_0x211d('0x8c'))['where'](_0x211d('0x8d'),_0x45afc3[_0x211d('0x59')]['id']);for(var _0x1f778b=0x0;_0x1f778b<_0x2fac32[_0x211d('0x4e')];_0x1f778b+=0x1){let _0x4d1e1b=_0x2fac32[_0x1f778b];for(var _0x4dccc3=0x0;_0x4dccc3<_0x4d1e1b[_0x211d('0x7b')][_0x211d('0x4e')];_0x4dccc3+=0x1){let _0x584600=_0x4d1e1b[_0x211d('0x7b')][_0x4dccc3];var _0x341a51=_0x2faeec['clone']();_0x341a51['where'](_0x211d('0x8e'),_0x584600['id']);_0x3062dd['push'](db['sequelize'][_0x211d('0x49')](_0x341a51[_0x211d('0x8f')](),{'type':db['sequelize']['QueryTypes'][_0x211d('0x90')]})['then'](function(_0x194a7a){if(_0x194a7a['length']===0x1){return _0x584600['id'];}else{var _0x275471=_['every'](_[_0x211d('0x41')](_0x194a7a,_0x211d('0x91')),function(_0x9c3384){return _[_0x211d('0x92')](_0x4de77d,_0x9c3384);});if(_0x275471){return _0x584600['id'];}}}));}}return BPromise['all'](_0x3062dd)[_0x211d('0x24')](function(_0x40598e){_0x4d1bd9=_(_0x4d1bd9)[_0x211d('0x93')](_0x40598e)['compact']()['value']();return db[_0x211d('0x42')][_0x211d('0x60')]({'where':{'id':_0x45afc3[_0x211d('0x59')]['id']}})[_0x211d('0x24')](function(_0x3228f6){return db['sequelize'][_0x211d('0x80')](function(_0x3824ea){return _0x3228f6[_0x211d('0x86')](_0x45afc3[_0x211d('0x49')]['ids'],{'transaction':_0x3824ea})[_0x211d('0x24')](function(){if(!_[_0x211d('0x94')](_0x4d1bd9)){return _0x3228f6['removeAgents'](_0x4d1bd9,{'transaction':_0x3824ea});}})[_0x211d('0x24')](function(){_0x4d1bd9['forEach'](function(_0x5b12c7){socket['emit'](_0x211d('0x95'),{'UserId':_0x5b12c7,'ChatQueueId':_0x3228f6['id']});});});});});});})[_0x211d('0x24')](respondWithStatusCode(_0x2a77e5,null))['catch'](handleError(_0x2a77e5,null));};exports[_0x211d('0x96')]=function(_0x17aaaf,_0x1e6465,_0x17a6fd){return db['ChatQueue'][_0x211d('0x60')]({'where':{'id':_0x17aaaf['params']['id']}})[_0x211d('0x24')](handleEntityNotFound(_0x1e6465,null))[_0x211d('0x24')](function(_0x573215){if(_0x573215){return _0x573215[_0x211d('0x96')](_0x17aaaf[_0x211d('0x63')]['ids'],_['omit'](_0x17aaaf[_0x211d('0x63')],[_0x211d('0x79'),'id'])||{})[_0x211d('0x97')](function(_0x42b183){for(var _0x21014b=0x0;_0x21014b<_0x17aaaf['body'][_0x211d('0x79')]['length'];_0x21014b+=0x1){socket['emit'](_0x211d('0x85'),{'UserId':Number(_0x17aaaf[_0x211d('0x63')][_0x211d('0x79')][_0x21014b]),'ChatQueueId':Number(_0x17aaaf['params']['id'])});}return _0x42b183;});}})[_0x211d('0x24')](respondWithResult(_0x1e6465,null))[_0x211d('0x58')](handleError(_0x1e6465,null));};exports[_0x211d('0x98')]=function(_0x10f50f,_0x3819e2,_0x587cea){return db['ChatQueue'][_0x211d('0x60')]({'where':{'id':_0x10f50f[_0x211d('0x59')]['id']}})[_0x211d('0x24')](handleEntityNotFound(_0x3819e2,null))['then'](function(_0x14f174){if(_0x14f174){return _0x14f174[_0x211d('0x98')](_0x10f50f['query'][_0x211d('0x79')])[_0x211d('0x24')](function(){if(_['isArray'](_0x10f50f[_0x211d('0x49')][_0x211d('0x79')])){for(var _0xf71207=0x0;_0xf71207<_0x10f50f[_0x211d('0x49')][_0x211d('0x79')]['length'];_0xf71207+=0x1){socket[_0x211d('0x84')]('userChatQueue:remove',{'UserId':Number(_0x10f50f['query']['ids'][_0xf71207]),'ChatQueueId':Number(_0x10f50f[_0x211d('0x59')]['id'])});}}else{socket[_0x211d('0x84')](_0x211d('0x95'),{'UserId':Number(_0x10f50f[_0x211d('0x49')][_0x211d('0x79')]),'ChatQueueId':Number(_0x10f50f[_0x211d('0x59')]['id'])});}});}})[_0x211d('0x24')](respondWithStatusCode(_0x3819e2,null))[_0x211d('0x58')](handleError(_0x3819e2,null));};exports['getAgents']=function(_0x1ded46,_0x3e9b55,_0x4e4904){var _0x4757b9={};var _0x16f5ae={};var _0x2db6b5;var _0x26396f;return db[_0x211d('0x42')][_0x211d('0x66')]({'where':{'id':_0x1ded46['params']['id']}})['then'](handleEntityNotFound(_0x3e9b55,null))[_0x211d('0x24')](function(_0x414a2f){if(_0x414a2f){_0x2db6b5=_0x414a2f;_0x16f5ae[_0x211d('0x47')]=_[_0x211d('0x48')](db[_0x211d('0x6c')][_0x211d('0x43')]);_0x16f5ae[_0x211d('0x49')]=_[_0x211d('0x48')](_0x1ded46['query']);_0x16f5ae[_0x211d('0x4a')]=_[_0x211d('0x4c')](_0x16f5ae[_0x211d('0x47')],_0x16f5ae[_0x211d('0x49')]);_0x4757b9[_0x211d('0x4b')]=_[_0x211d('0x4c')](_0x16f5ae[_0x211d('0x47')],qs[_0x211d('0x4d')](_0x1ded46[_0x211d('0x49')][_0x211d('0x4d')]));_0x4757b9[_0x211d('0x4b')]=_0x4757b9['attributes'][_0x211d('0x4e')]?_0x4757b9[_0x211d('0x4b')]:_0x16f5ae['model'];_0x4757b9[_0x211d('0x50')]=qs['sort'](_0x1ded46['query'][_0x211d('0x51')]);_0x4757b9[_0x211d('0x52')]=qs['filters'](_['pick'](_0x1ded46[_0x211d('0x49')],_0x16f5ae[_0x211d('0x4a')]));if(_0x1ded46[_0x211d('0x49')][_0x211d('0x53')]){_0x4757b9[_0x211d('0x52')]=_['merge'](_0x4757b9[_0x211d('0x52')],{'$or':_[_0x211d('0x41')](_0x4757b9[_0x211d('0x4b')],function(_0x55c110){var _0x417d24={};_0x417d24[_0x55c110]={'$like':'%'+_0x1ded46[_0x211d('0x49')]['filter']+'%'};return _0x417d24;})});}_0x4757b9=_[_0x211d('0x6a')]({},_0x4757b9,_0x1ded46['options']);return _0x2db6b5[_0x211d('0x99')](_0x4757b9);}})[_0x211d('0x24')](function(_0x2113ee){if(_0x2113ee){_0x26396f=_0x2113ee[_0x211d('0x4e')];if(!_0x1ded46['query'][_0x211d('0x4f')](_0x211d('0x77'))){_0x4757b9[_0x211d('0x31')]=qs[_0x211d('0x31')](_0x1ded46[_0x211d('0x49')][_0x211d('0x31')]);_0x4757b9[_0x211d('0x33')]=qs[_0x211d('0x33')](_0x1ded46['query'][_0x211d('0x33')]);}return _0x2db6b5[_0x211d('0x99')](_0x4757b9);}})[_0x211d('0x24')](function(_0x2b55e1){if(_0x2b55e1){return _0x2b55e1?{'count':_0x26396f,'rows':_0x2b55e1}:null;}})[_0x211d('0x24')](respondWithResult(_0x3e9b55,null))[_0x211d('0x58')](handleError(_0x3e9b55,null));};
\ No newline at end of file
+var _0x732c=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./chatQueue.socket','register','jayson/promise','http','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','sendStatus','status','limit','offset','set','Content-Range','json','reject','save','then','destroy','get','UserProfileResource','end','stack','name','send','index','map','ChatQueue','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','include','findAll','rows','show','includeAll','create','body','user','ChatQueues','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','getMembers','findOne','User','findAndCountAll','UserId','agent','%s/%s','SIP','chatPause','updatedAt','getTeams','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','UserChatQueue','findOrCreate','emit','userChatQueue:save','removeTeams','Team','select','field','tq.TeamId','from','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','QueryTypes','SELECT','every','includes','all','union','compact','value','isEmpty','removeAgents','forEach','addAgents','omit','spread','isArray','userChatQueue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x732c,0x1b6));var _0xc732=function(_0xf7e703,_0x219f72){_0xf7e703=_0xf7e703-0x0;var _0x13ba98=_0x732c[_0xf7e703];return _0x13ba98;};'use strict';var emlformat=require(_0xc732('0x0'));var rimraf=require(_0xc732('0x1'));var zipdir=require(_0xc732('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc732('0x3'));var moment=require('moment');var BPromise=require(_0xc732('0x4'));var Mustache=require(_0xc732('0x5'));var util=require(_0xc732('0x6'));var path=require(_0xc732('0x7'));var sox=require('sox');var csv=require(_0xc732('0x8'));var ejs=require(_0xc732('0x9'));var fs=require('fs');var fs_extra=require(_0xc732('0xa'));var _=require(_0xc732('0xb'));var squel=require(_0xc732('0xc'));var crypto=require(_0xc732('0xd'));var jsforce=require(_0xc732('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc732('0x8'));var querystring=require(_0xc732('0xf'));var Papa=require(_0xc732('0x10'));var Redis=require(_0xc732('0x11'));var authService=require(_0xc732('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc732('0x13'));var hardwareService=require(_0xc732('0x14'));var logger=require(_0xc732('0x15'))('api');var utils=require(_0xc732('0x16'));var config=require(_0xc732('0x17'));var licenseUtil=require(_0xc732('0x18'));var db=require(_0xc732('0x19'))['db'];config[_0xc732('0x1a')]=_['defaults'](config['redis'],{'host':_0xc732('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc732('0x1a')]));require(_0xc732('0x1c'))[_0xc732('0x1d')](socket);var jayson=require(_0xc732('0x1e'));var client=jayson['client'][_0xc732('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x35a24d,_0x1de23c,_0x2227fe,_0x13cb4a){return new BPromise(function(_0x4b79e5,_0x4ef807){var _0x531cd0=_0x13cb4a||client;return _0x531cd0['request'](_0x35a24d,_0x2227fe)['then'](function(_0xbf0175){logger['info'](_0xc732('0x20'),_0x1de23c,'request\x20sent');logger[_0xc732('0x21')](_0xc732('0x22'),_0x1de23c,_0xc732('0x23'),JSON[_0xc732('0x24')](_0xbf0175));if(_0xbf0175[_0xc732('0x25')]){if(_0xbf0175[_0xc732('0x25')]['code']===0x1f4){logger['error'](_0xc732('0x20'),_0x1de23c,_0xbf0175['error']['message']);return _0x4ef807(_0xbf0175[_0xc732('0x25')][_0xc732('0x26')]);}logger[_0xc732('0x25')](_0xc732('0x20'),_0x1de23c,_0xbf0175[_0xc732('0x25')][_0xc732('0x26')]);return _0x4b79e5(_0xbf0175[_0xc732('0x25')][_0xc732('0x26')]);}else{logger[_0xc732('0x27')](_0xc732('0x20'),_0x1de23c,_0xc732('0x23'));_0x4b79e5(_0xbf0175[_0xc732('0x28')][_0xc732('0x26')]);}})[_0xc732('0x29')](function(_0x40973a){logger['error'](_0xc732('0x20'),_0x1de23c,_0x40973a);_0x4ef807(_0x40973a);});});}function respondWithStatusCode(_0x56db14,_0x2842ef){_0x2842ef=_0x2842ef||0xcc;return function(_0x433e36){if(_0x433e36){return _0x56db14[_0xc732('0x2a')](_0x2842ef);}return _0x56db14[_0xc732('0x2b')](_0x2842ef)['end']();};}function respondWithResult(_0x1c1b66,_0x1d1116){_0x1d1116=_0x1d1116||0xc8;return function(_0x2eeba3){if(_0x2eeba3){return _0x1c1b66['status'](_0x1d1116)['json'](_0x2eeba3);}};}function respondWithFilteredResult(_0x5808d9,_0x52a03a){return function(_0x24ad26){if(_0x24ad26){var _0x3ffb29=typeof _0x52a03a['offset']==='undefined'&&typeof _0x52a03a[_0xc732('0x2c')]==='undefined';var _0x5b3eb0=_0x24ad26['count'];var _0x2126eb=_0x3ffb29?0x0:_0x52a03a[_0xc732('0x2d')];var _0x31adaf=_0x3ffb29?_0x24ad26['count']:_0x52a03a[_0xc732('0x2d')]+_0x52a03a[_0xc732('0x2c')];var _0x58af08;if(_0x31adaf>=_0x5b3eb0){_0x31adaf=_0x5b3eb0;_0x58af08=0xc8;}else{_0x58af08=0xce;}_0x5808d9[_0xc732('0x2b')](_0x58af08);return _0x5808d9[_0xc732('0x2e')](_0xc732('0x2f'),_0x2126eb+'-'+_0x31adaf+'/'+_0x5b3eb0)[_0xc732('0x30')](_0x24ad26);}return null;};}function patchUpdates(_0x38fd8f){return function(_0x18c8fb){try{jsonpatch['apply'](_0x18c8fb,_0x38fd8f,!![]);}catch(_0x233e07){return BPromise[_0xc732('0x31')](_0x233e07);}return _0x18c8fb[_0xc732('0x32')]();};}function saveUpdates(_0x4aebb4,_0x29f2a6){return function(_0x60c577){if(_0x60c577){return _0x60c577['update'](_0x4aebb4)[_0xc732('0x33')](function(_0x1d92a7){return _0x1d92a7;});}return null;};}function removeEntity(_0x6e0871,_0x5c2d01){return function(_0x302a93){if(_0x302a93){return _0x302a93[_0xc732('0x34')]()[_0xc732('0x33')](function(){var _0x1ebc12=_0x302a93[_0xc732('0x35')]({'plain':!![]});var _0x4b61f9='ChatQueues';return db[_0xc732('0x36')][_0xc732('0x34')]({'where':{'type':_0x4b61f9,'resourceId':_0x1ebc12['id']}})['then'](function(){return _0x302a93;});})[_0xc732('0x33')](function(){_0x6e0871['status'](0xcc)[_0xc732('0x37')]();});}};}function handleEntityNotFound(_0x5e78de,_0x35aa7d){return function(_0x5331d3){if(!_0x5331d3){_0x5e78de[_0xc732('0x2a')](0x194);}return _0x5331d3;};}function handleError(_0x237599,_0x5d6957){_0x5d6957=_0x5d6957||0x1f4;return function(_0x2e56ec){logger['error'](_0x2e56ec[_0xc732('0x38')]);if(_0x2e56ec[_0xc732('0x39')]){delete _0x2e56ec['name'];}_0x237599[_0xc732('0x2b')](_0x5d6957)[_0xc732('0x3a')](_0x2e56ec);};}exports[_0xc732('0x3b')]=function(_0xc614f2,_0x280982){var _0x4cc8f8={},_0x9bbcdf={},_0x199335={'count':0x0,'rows':[]};var _0x23670d=_[_0xc732('0x3c')](db[_0xc732('0x3d')][_0xc732('0x3e')],function(_0x254db5){return{'name':_0x254db5['fieldName'],'type':_0x254db5[_0xc732('0x3f')][_0xc732('0x40')]};});_0x9bbcdf[_0xc732('0x41')]=_[_0xc732('0x3c')](_0x23670d,'name');_0x9bbcdf[_0xc732('0x42')]=_[_0xc732('0x43')](_0xc614f2['query']);_0x9bbcdf[_0xc732('0x44')]=_[_0xc732('0x45')](_0x9bbcdf[_0xc732('0x41')],_0x9bbcdf[_0xc732('0x42')]);_0x4cc8f8[_0xc732('0x46')]=_[_0xc732('0x45')](_0x9bbcdf[_0xc732('0x41')],qs[_0xc732('0x47')](_0xc614f2[_0xc732('0x42')][_0xc732('0x47')]));_0x4cc8f8[_0xc732('0x46')]=_0x4cc8f8[_0xc732('0x46')][_0xc732('0x48')]?_0x4cc8f8[_0xc732('0x46')]:_0x9bbcdf[_0xc732('0x41')];if(!_0xc614f2['query'][_0xc732('0x49')](_0xc732('0x4a'))){_0x4cc8f8[_0xc732('0x2c')]=qs[_0xc732('0x2c')](_0xc614f2[_0xc732('0x42')][_0xc732('0x2c')]);_0x4cc8f8['offset']=qs[_0xc732('0x2d')](_0xc614f2[_0xc732('0x42')][_0xc732('0x2d')]);}_0x4cc8f8[_0xc732('0x4b')]=qs['sort'](_0xc614f2[_0xc732('0x42')][_0xc732('0x4c')]);_0x4cc8f8[_0xc732('0x4d')]=qs[_0xc732('0x44')](_[_0xc732('0x4e')](_0xc614f2[_0xc732('0x42')],_0x9bbcdf['filters']),_0x23670d);if(_0xc614f2[_0xc732('0x42')][_0xc732('0x4f')]){_0x4cc8f8[_0xc732('0x4d')]=_['merge'](_0x4cc8f8[_0xc732('0x4d')],{'$or':_[_0xc732('0x3c')](_0x23670d,function(_0x2dbda2){if(_0x2dbda2['type']!=='VIRTUAL'){var _0x1969ce={};_0x1969ce[_0x2dbda2[_0xc732('0x39')]]={'$like':'%'+_0xc614f2[_0xc732('0x42')][_0xc732('0x4f')]+'%'};return _0x1969ce;}})});}_0x4cc8f8=_[_0xc732('0x50')]({},_0x4cc8f8,_0xc614f2[_0xc732('0x51')]);var _0x5114d1={'where':_0x4cc8f8['where']};return db[_0xc732('0x3d')][_0xc732('0x52')](_0x5114d1)[_0xc732('0x33')](function(_0x2d4568){_0x199335[_0xc732('0x52')]=_0x2d4568;if(_0xc614f2[_0xc732('0x42')]['includeAll']){_0x4cc8f8[_0xc732('0x53')]=[{'all':!![]}];}return db[_0xc732('0x3d')][_0xc732('0x54')](_0x4cc8f8);})[_0xc732('0x33')](function(_0x2df4ad){_0x199335[_0xc732('0x55')]=_0x2df4ad;return _0x199335;})[_0xc732('0x33')](respondWithFilteredResult(_0x280982,_0x4cc8f8))['catch'](handleError(_0x280982,null));};exports[_0xc732('0x56')]=function(_0x247f8d,_0x2e4a15){var _0x2675cf={'raw':!![],'where':{'id':_0x247f8d['params']['id']}},_0x1e5b59={};_0x1e5b59[_0xc732('0x41')]=_[_0xc732('0x43')](db[_0xc732('0x3d')]['rawAttributes']);_0x1e5b59[_0xc732('0x42')]=_[_0xc732('0x43')](_0x247f8d['query']);_0x1e5b59[_0xc732('0x44')]=_['intersection'](_0x1e5b59[_0xc732('0x41')],_0x1e5b59[_0xc732('0x42')]);_0x2675cf[_0xc732('0x46')]=_[_0xc732('0x45')](_0x1e5b59[_0xc732('0x41')],qs[_0xc732('0x47')](_0x247f8d[_0xc732('0x42')][_0xc732('0x47')]));_0x2675cf[_0xc732('0x46')]=_0x2675cf[_0xc732('0x46')]['length']?_0x2675cf[_0xc732('0x46')]:_0x1e5b59[_0xc732('0x41')];if(_0x247f8d[_0xc732('0x42')][_0xc732('0x57')]){_0x2675cf[_0xc732('0x53')]=[{'all':!![]}];}_0x2675cf=_['merge']({},_0x2675cf,_0x247f8d['options']);return db[_0xc732('0x3d')]['find'](_0x2675cf)[_0xc732('0x33')](handleEntityNotFound(_0x2e4a15,null))['then'](respondWithResult(_0x2e4a15,null))[_0xc732('0x29')](handleError(_0x2e4a15,null));};exports[_0xc732('0x58')]=function(_0x5ab48f,_0x4fb734){return db['ChatQueue']['create'](_0x5ab48f[_0xc732('0x59')],{})[_0xc732('0x33')](function(_0xb39dc6){var _0x2363aa=_0x5ab48f[_0xc732('0x5a')][_0xc732('0x35')]({'plain':!![]});if(!_0x2363aa)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2363aa['role']==='user'){var _0x132035=_0xb39dc6['get']({'plain':!![]});var _0x17408e=_0xc732('0x5b');return db['UserProfileSection'][_0xc732('0x5c')]({'where':{'name':_0x17408e,'userProfileId':_0x2363aa[_0xc732('0x5d')]},'raw':!![]})[_0xc732('0x33')](function(_0x2b5713){if(_0x2b5713&&_0x2b5713[_0xc732('0x5e')]===0x0){return db[_0xc732('0x36')][_0xc732('0x58')]({'name':_0x132035['name'],'resourceId':_0x132035['id'],'type':_0x2b5713['name'],'sectionId':_0x2b5713['id']},{})['then'](function(){return _0xb39dc6;});}else{return _0xb39dc6;}})[_0xc732('0x29')](function(_0x49ac17){logger[_0xc732('0x25')](_0xc732('0x5f'),_0x49ac17);throw _0x49ac17;});}return _0xb39dc6;})[_0xc732('0x33')](respondWithResult(_0x4fb734,0xc9))[_0xc732('0x29')](handleError(_0x4fb734,null));};exports[_0xc732('0x60')]=function(_0x1dd662,_0x56a95a){if(_0x1dd662['body']['id']){delete _0x1dd662['body']['id'];}return db[_0xc732('0x3d')][_0xc732('0x5c')]({'where':{'id':_0x1dd662[_0xc732('0x61')]['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x56a95a,null))['then'](saveUpdates(_0x1dd662[_0xc732('0x59')],null))[_0xc732('0x33')](respondWithResult(_0x56a95a,null))['catch'](handleError(_0x56a95a,null));};exports[_0xc732('0x34')]=function(_0xea93e1,_0x584120){return db[_0xc732('0x3d')][_0xc732('0x5c')]({'where':{'id':_0xea93e1['params']['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x584120,null))[_0xc732('0x33')](removeEntity(_0x584120,null))['catch'](handleError(_0x584120,null));};exports[_0xc732('0x62')]=function(_0x224985,_0x52231c){return db[_0xc732('0x3d')][_0xc732('0x62')]()[_0xc732('0x33')](respondWithResult(_0x52231c,null))['catch'](handleError(_0x52231c,null));};exports[_0xc732('0x63')]=function(_0x48c94c,_0x4005e0,_0xaa2785){var _0x3c90bb={'raw':!![],'where':{}},_0x24f589={},_0x5b8a5b;return db[_0xc732('0x3d')][_0xc732('0x64')]({'where':{'id':_0x48c94c[_0xc732('0x61')]['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x4005e0,null))[_0xc732('0x33')](function(_0x8b5fbc){if(_0x8b5fbc){_0x5b8a5b=_0x8b5fbc[_0xc732('0x35')]({'plain':!![]});_0x24f589[_0xc732('0x41')]=_[_0xc732('0x43')](db['UserChatQueue'][_0xc732('0x3e')]);_0x24f589[_0xc732('0x42')]=_['keys'](_0x48c94c[_0xc732('0x42')]);_0x24f589[_0xc732('0x44')]=_[_0xc732('0x45')](_0x24f589[_0xc732('0x41')],_0x24f589[_0xc732('0x42')]);_0x3c90bb['attributes']=_['intersection'](_0x24f589[_0xc732('0x41')],qs['fields'](_0x48c94c[_0xc732('0x42')][_0xc732('0x47')]));_0x3c90bb[_0xc732('0x46')]=_0x3c90bb[_0xc732('0x46')][_0xc732('0x48')]?_0x3c90bb[_0xc732('0x46')]:_0x24f589[_0xc732('0x41')];if(!_0x48c94c[_0xc732('0x42')]['hasOwnProperty'](_0xc732('0x4a'))){_0x3c90bb[_0xc732('0x2c')]=qs[_0xc732('0x2c')](_0x48c94c['query']['limit']);_0x3c90bb[_0xc732('0x2d')]=qs['offset'](_0x48c94c[_0xc732('0x42')]['offset']);}_0x3c90bb[_0xc732('0x4b')]=qs[_0xc732('0x4c')](_0x48c94c['query'][_0xc732('0x4c')]);_0x3c90bb[_0xc732('0x4d')]=qs[_0xc732('0x44')](_[_0xc732('0x4e')](_0x48c94c[_0xc732('0x42')],_0x24f589['filters']));_0x3c90bb[_0xc732('0x4d')]['ChatQueueId']=_0x8b5fbc['id'];if(_0x48c94c[_0xc732('0x42')][_0xc732('0x4f')]){_0x3c90bb['where']=_[_0xc732('0x50')](_0x3c90bb[_0xc732('0x4d')],{'$or':_[_0xc732('0x3c')](_0x3c90bb['attributes'],function(_0x1a9c03){var _0x16d679={};_0x16d679[_0x1a9c03]={'$like':'%'+_0x48c94c[_0xc732('0x42')][_0xc732('0x4f')]+'%'};return _0x16d679;})});}_0x3c90bb=_[_0xc732('0x50')]({},_0x3c90bb,_0x48c94c[_0xc732('0x51')]);return db['UserChatQueue'][_0xc732('0x54')](_0x3c90bb);}})[_0xc732('0x33')](function(_0x32cfe3){if(_0x32cfe3){return db[_0xc732('0x65')][_0xc732('0x66')]({'where':{'id':_[_0xc732('0x3c')](_0x32cfe3,_0xc732('0x67')),'role':_0xc732('0x68')},'attributes':['id',_0xc732('0x39'),'chatPause','updatedAt','createdAt']});}})[_0xc732('0x33')](function(_0x5a17ad){if(_0x5a17ad){return{'count':_0x5a17ad[_0xc732('0x52')],'rows':_[_0xc732('0x3c')](_0x5a17ad[_0xc732('0x55')],function(_0x23c0d1){return{'membername':_0x23c0d1[_0xc732('0x39')],'UserId':_0x23c0d1['id'],'queue_name':_0x5b8a5b['name'],'ChatQueueId':_0x5b8a5b['id'],'interface':util['format'](_0xc732('0x69'),_0xc732('0x6a'),_0x23c0d1['name']),'penalty':0x0,'paused':_0x23c0d1[_0xc732('0x6b')],'createdAt':_0x23c0d1['createdAt'],'updatedAt':_0x23c0d1[_0xc732('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xc732('0x33')](respondWithFilteredResult(_0x4005e0,_0x3c90bb))[_0xc732('0x29')](handleError(_0x4005e0,null));};exports['getTeams']=function(_0x1d78e2,_0x24e3e1,_0x23e85c){var _0x51ca45={};var _0x569f45={};var _0x2d7af8;var _0x342386;return db['ChatQueue'][_0xc732('0x64')]({'where':{'id':_0x1d78e2[_0xc732('0x61')]['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x24e3e1,null))['then'](function(_0x1fb90c){if(_0x1fb90c){_0x2d7af8=_0x1fb90c;_0x569f45[_0xc732('0x41')]=_[_0xc732('0x43')](db['Team'][_0xc732('0x3e')]);_0x569f45['query']=_['keys'](_0x1d78e2[_0xc732('0x42')]);_0x569f45['filters']=_[_0xc732('0x45')](_0x569f45[_0xc732('0x41')],_0x569f45[_0xc732('0x42')]);_0x51ca45[_0xc732('0x46')]=_[_0xc732('0x45')](_0x569f45[_0xc732('0x41')],qs[_0xc732('0x47')](_0x1d78e2[_0xc732('0x42')][_0xc732('0x47')]));_0x51ca45[_0xc732('0x46')]=_0x51ca45[_0xc732('0x46')][_0xc732('0x48')]?_0x51ca45['attributes']:_0x569f45[_0xc732('0x41')];_0x51ca45[_0xc732('0x4b')]=qs['sort'](_0x1d78e2[_0xc732('0x42')][_0xc732('0x4c')]);_0x51ca45[_0xc732('0x4d')]=qs[_0xc732('0x44')](_[_0xc732('0x4e')](_0x1d78e2['query'],_0x569f45[_0xc732('0x44')]));if(_0x1d78e2['query'][_0xc732('0x4f')]){_0x51ca45['where']=_[_0xc732('0x50')](_0x51ca45['where'],{'$or':_[_0xc732('0x3c')](_0x51ca45[_0xc732('0x46')],function(_0x212989){var _0x5332a9={};_0x5332a9[_0x212989]={'$like':'%'+_0x1d78e2[_0xc732('0x42')][_0xc732('0x4f')]+'%'};return _0x5332a9;})});}_0x51ca45=_[_0xc732('0x50')]({},_0x51ca45,_0x1d78e2[_0xc732('0x51')]);return _0x2d7af8[_0xc732('0x6d')](_0x51ca45);}})[_0xc732('0x33')](function(_0x46f539){if(_0x46f539){_0x342386=_0x46f539[_0xc732('0x48')];if(!_0x1d78e2['query'][_0xc732('0x49')]('nolimit')){_0x51ca45[_0xc732('0x2c')]=qs[_0xc732('0x2c')](_0x1d78e2[_0xc732('0x42')][_0xc732('0x2c')]);_0x51ca45[_0xc732('0x2d')]=qs[_0xc732('0x2d')](_0x1d78e2[_0xc732('0x42')][_0xc732('0x2d')]);}return _0x2d7af8['getTeams'](_0x51ca45);}})[_0xc732('0x33')](function(_0x538548){if(_0x538548){return _0x538548?{'count':_0x342386,'rows':_0x538548}:null;}})['then'](respondWithResult(_0x24e3e1,null))['catch'](handleError(_0x24e3e1,null));};exports[_0xc732('0x6e')]=function(_0x18fa29,_0x509b13,_0x2010b1){var _0xcec334=_0x18fa29[_0xc732('0x59')][_0xc732('0x6f')];return db['Team'][_0xc732('0x54')]({'where':{'id':_0xcec334},'attributes':['id'],'include':[{'model':db[_0xc732('0x65')],'as':_0xc732('0x70'),'attributes':['id','name','online',_0xc732('0x71'),_0xc732('0x72')],'raw':!![]}]})[_0xc732('0x33')](function(_0x39dd2a){if(_0x39dd2a){var _0x3edf98=_[_0xc732('0x73')](_0x39dd2a,function(_0x12858d){var _0x34793b=_0x12858d[_0xc732('0x35')]({'plain':!![]});return _0x34793b[_0xc732('0x70')];});return db['ChatQueue'][_0xc732('0x5c')]({'where':{'id':_0x18fa29['params']['id']}})['then'](function(_0xdd99bb){return db[_0xc732('0x74')][_0xc732('0x75')](function(_0x3a0cca){return _0xdd99bb[_0xc732('0x6e')](_0xcec334,{'transaction':_0x3a0cca})[_0xc732('0x33')](function(){return BPromise[_0xc732('0x76')](_0x3edf98,function(_0x2b013f){return db[_0xc732('0x77')][_0xc732('0x78')]({'where':{'UserId':_0x2b013f['id'],'ChatQueueId':_0x18fa29[_0xc732('0x61')]['id']},'transaction':_0x3a0cca});});})['then'](function(){_0x3edf98['forEach'](function(_0x5c79e6){socket[_0xc732('0x79')](_0xc732('0x7a'),{'UserId':_0x5c79e6['id'],'ChatQueueId':_0xdd99bb['id']});});});});});}})[_0xc732('0x33')](respondWithStatusCode(_0x509b13,null))[_0xc732('0x29')](handleError(_0x509b13,null));};exports[_0xc732('0x7b')]=function(_0x223671,_0x39e607,_0x478503){return db[_0xc732('0x7c')][_0xc732('0x54')]({'where':{'id':_0x223671[_0xc732('0x42')][_0xc732('0x6f')]},'attributes':['id'],'include':[{'model':db[_0xc732('0x65')],'as':_0xc732('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x39e607,null))[_0xc732('0x33')](function(_0x50bcba){var _0x3193d3=_['map'](_0x50bcba,'id');var _0x17cbf4=[];var _0x175343=[];var _0x3c8157=squel[_0xc732('0x7d')]();_0x3c8157[_0xc732('0x7e')](_0xc732('0x7f'))[_0xc732('0x80')](_0xc732('0x81'),'tq')[_0xc732('0x82')]('user_has_teams','ut',_0xc732('0x83'))[_0xc732('0x4d')](_0xc732('0x84'),_0x223671[_0xc732('0x61')]['id']);for(var _0xfe2375=0x0;_0xfe2375<_0x50bcba['length'];_0xfe2375+=0x1){let _0x16feb6=_0x50bcba[_0xfe2375];for(var _0x5bfddd=0x0;_0x5bfddd<_0x16feb6['Agents'][_0xc732('0x48')];_0x5bfddd+=0x1){let _0x57fae3=_0x16feb6[_0xc732('0x70')][_0x5bfddd];var _0x449145=_0x3c8157['clone']();_0x449145[_0xc732('0x4d')](_0xc732('0x85'),_0x57fae3['id']);_0x175343['push'](db['sequelize'][_0xc732('0x42')](_0x449145['toString'](),{'type':db[_0xc732('0x74')][_0xc732('0x86')][_0xc732('0x87')]})[_0xc732('0x33')](function(_0x5df3ef){if(_0x5df3ef[_0xc732('0x48')]===0x1){return _0x57fae3['id'];}else{var _0x159056=_[_0xc732('0x88')](_[_0xc732('0x3c')](_0x5df3ef,'TeamId'),function(_0x170b8c){return _[_0xc732('0x89')](_0x3193d3,_0x170b8c);});if(_0x159056){return _0x57fae3['id'];}}}));}}return BPromise[_0xc732('0x8a')](_0x175343)['then'](function(_0x4bd5e5){_0x17cbf4=_(_0x17cbf4)[_0xc732('0x8b')](_0x4bd5e5)[_0xc732('0x8c')]()[_0xc732('0x8d')]();return db[_0xc732('0x3d')][_0xc732('0x5c')]({'where':{'id':_0x223671[_0xc732('0x61')]['id']}})[_0xc732('0x33')](function(_0x431463){return db[_0xc732('0x74')][_0xc732('0x75')](function(_0x2b2ea5){return _0x431463[_0xc732('0x7b')](_0x223671[_0xc732('0x42')]['ids'],{'transaction':_0x2b2ea5})[_0xc732('0x33')](function(){if(!_[_0xc732('0x8e')](_0x17cbf4)){return _0x431463[_0xc732('0x8f')](_0x17cbf4,{'transaction':_0x2b2ea5});}})[_0xc732('0x33')](function(){_0x17cbf4[_0xc732('0x90')](function(_0x37a3aa){socket[_0xc732('0x79')]('userChatQueue:remove',{'UserId':_0x37a3aa,'ChatQueueId':_0x431463['id']});});});});});});})[_0xc732('0x33')](respondWithStatusCode(_0x39e607,null))[_0xc732('0x29')](handleError(_0x39e607,null));};exports['addAgents']=function(_0x5c2b2c,_0x50250f,_0x504075){return db[_0xc732('0x3d')][_0xc732('0x5c')]({'where':{'id':_0x5c2b2c[_0xc732('0x61')]['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x50250f,null))[_0xc732('0x33')](function(_0x2efc8a){if(_0x2efc8a){return _0x2efc8a[_0xc732('0x91')](_0x5c2b2c['body'][_0xc732('0x6f')],_[_0xc732('0x92')](_0x5c2b2c[_0xc732('0x59')],[_0xc732('0x6f'),'id'])||{})[_0xc732('0x93')](function(_0x4a23d9){for(var _0x36ac62=0x0;_0x36ac62<_0x5c2b2c[_0xc732('0x59')][_0xc732('0x6f')][_0xc732('0x48')];_0x36ac62+=0x1){socket[_0xc732('0x79')](_0xc732('0x7a'),{'UserId':Number(_0x5c2b2c[_0xc732('0x59')]['ids'][_0x36ac62]),'ChatQueueId':Number(_0x5c2b2c[_0xc732('0x61')]['id'])});}return _0x4a23d9;});}})[_0xc732('0x33')](respondWithResult(_0x50250f,null))['catch'](handleError(_0x50250f,null));};exports[_0xc732('0x8f')]=function(_0x1badc0,_0x5a3a54,_0x452d27){return db['ChatQueue'][_0xc732('0x5c')]({'where':{'id':_0x1badc0['params']['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x5a3a54,null))['then'](function(_0x564026){if(_0x564026){return _0x564026['removeAgents'](_0x1badc0[_0xc732('0x42')]['ids'])[_0xc732('0x33')](function(){if(_[_0xc732('0x94')](_0x1badc0['query'][_0xc732('0x6f')])){for(var _0x50ec21=0x0;_0x50ec21<_0x1badc0['query']['ids'][_0xc732('0x48')];_0x50ec21+=0x1){socket[_0xc732('0x79')](_0xc732('0x95'),{'UserId':Number(_0x1badc0[_0xc732('0x42')][_0xc732('0x6f')][_0x50ec21]),'ChatQueueId':Number(_0x1badc0['params']['id'])});}}else{socket['emit'](_0xc732('0x95'),{'UserId':Number(_0x1badc0['query']['ids']),'ChatQueueId':Number(_0x1badc0['params']['id'])});}});}})['then'](respondWithStatusCode(_0x5a3a54,null))[_0xc732('0x29')](handleError(_0x5a3a54,null));};exports[_0xc732('0x96')]=function(_0x5000db,_0x3ec068,_0x35db00){var _0xe03269={};var _0x490b99={};var _0x4e01f8;var _0x391db8;return db['ChatQueue'][_0xc732('0x64')]({'where':{'id':_0x5000db['params']['id']}})[_0xc732('0x33')](handleEntityNotFound(_0x3ec068,null))[_0xc732('0x33')](function(_0x42fb9b){if(_0x42fb9b){_0x4e01f8=_0x42fb9b;_0x490b99['model']=_['keys'](db[_0xc732('0x65')][_0xc732('0x3e')]);_0x490b99[_0xc732('0x42')]=_['keys'](_0x5000db['query']);_0x490b99['filters']=_['intersection'](_0x490b99[_0xc732('0x41')],_0x490b99['query']);_0xe03269[_0xc732('0x46')]=_[_0xc732('0x45')](_0x490b99[_0xc732('0x41')],qs['fields'](_0x5000db['query'][_0xc732('0x47')]));_0xe03269[_0xc732('0x46')]=_0xe03269[_0xc732('0x46')][_0xc732('0x48')]?_0xe03269[_0xc732('0x46')]:_0x490b99['model'];_0xe03269[_0xc732('0x4b')]=qs[_0xc732('0x4c')](_0x5000db[_0xc732('0x42')][_0xc732('0x4c')]);_0xe03269[_0xc732('0x4d')]=qs[_0xc732('0x44')](_[_0xc732('0x4e')](_0x5000db[_0xc732('0x42')],_0x490b99[_0xc732('0x44')]));if(_0x5000db[_0xc732('0x42')]['filter']){_0xe03269['where']=_['merge'](_0xe03269['where'],{'$or':_['map'](_0xe03269[_0xc732('0x46')],function(_0x2d8c1f){var _0x5276a0={};_0x5276a0[_0x2d8c1f]={'$like':'%'+_0x5000db[_0xc732('0x42')][_0xc732('0x4f')]+'%'};return _0x5276a0;})});}_0xe03269=_[_0xc732('0x50')]({},_0xe03269,_0x5000db['options']);return _0x4e01f8[_0xc732('0x96')](_0xe03269);}})[_0xc732('0x33')](function(_0x5045a7){if(_0x5045a7){_0x391db8=_0x5045a7['length'];if(!_0x5000db[_0xc732('0x42')][_0xc732('0x49')](_0xc732('0x4a'))){_0xe03269['limit']=qs['limit'](_0x5000db[_0xc732('0x42')][_0xc732('0x2c')]);_0xe03269['offset']=qs[_0xc732('0x2d')](_0x5000db['query']['offset']);}return _0x4e01f8[_0xc732('0x96')](_0xe03269);}})[_0xc732('0x33')](function(_0x54b515){if(_0x54b515){return _0x54b515?{'count':_0x391db8,'rows':_0x54b515}:null;}})['then'](respondWithResult(_0x3ec068,null))[_0xc732('0x29')](handleError(_0x3ec068,null));};
\ No newline at end of file
index f6ccfa8..8845c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f30=['hook','exports','events','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0x585133,_0x2412a1){var _0x18254a=function(_0x4c8aaf){while(--_0x4c8aaf){_0x585133['push'](_0x585133['shift']());}};_0x18254a(++_0x2412a1);}(_0x5f30,0xe9));var _0x05f3=function(_0x1867a4,_0x4561a5){_0x1867a4=_0x1867a4-0x0;var _0x42a1d9=_0x5f30[_0x1867a4];return _0x42a1d9;};'use strict';var EventEmitter=require(_0x05f3('0x0'));var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x05f3('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x05f3('0x2')};function emitEvent(_0x1c6000){return function(_0x4039ae,_0x48a6b9,_0x18c3d3){ChatQueueEvents[_0x05f3('0x3')](_0x1c6000+':'+_0x4039ae['id'],_0x4039ae);ChatQueueEvents[_0x05f3('0x3')](_0x1c6000,_0x4039ae);_0x18c3d3(null);};}for(var e in events){if(events[_0x05f3('0x4')](e)){var event=events[e];ChatQueue[_0x05f3('0x5')](e,emitEvent(event));}}module[_0x05f3('0x6')]=ChatQueueEvents;
\ No newline at end of file
+var _0xfcbd=['events','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0x2674ba,_0x47bb7d){var _0x1e5da0=function(_0x4f6e0c){while(--_0x4f6e0c){_0x2674ba['push'](_0x2674ba['shift']());}};_0x1e5da0(++_0x47bb7d);}(_0xfcbd,0x160));var _0xdfcb=function(_0x9e6237,_0x21fefa){_0x9e6237=_0x9e6237-0x0;var _0x5e1124=_0xfcbd[_0x9e6237];return _0x5e1124;};'use strict';var EventEmitter=require(_0xdfcb('0x0'));var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xdfcb('0x1')](0x0);var events={'afterCreate':_0xdfcb('0x2'),'afterUpdate':_0xdfcb('0x3'),'afterDestroy':_0xdfcb('0x4')};function emitEvent(_0x219e54){return function(_0xde9380,_0x545391,_0x14fb44){ChatQueueEvents[_0xdfcb('0x5')](_0x219e54+':'+_0xde9380['id'],_0xde9380);ChatQueueEvents['emit'](_0x219e54,_0xde9380);_0x14fb44(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xdfcb('0x6')](e,emitEvent(event));}}module[_0xdfcb('0x7')]=ChatQueueEvents;
\ No newline at end of file
index 78b84a4..0d02d88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f37=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','ChatQueue','chat_queues','util','../../config/logger','api','moment'];(function(_0xd89074,_0x41d960){var _0x515631=function(_0x542239){while(--_0x542239){_0xd89074['push'](_0xd89074['shift']());}};_0x515631(++_0x41d960);}(_0x4f37,0x134));var _0x74f3=function(_0x3f38f3,_0x22cad7){_0x3f38f3=_0x3f38f3-0x0;var _0x2e88c1=_0x4f37[_0x3f38f3];return _0x2e88c1;};'use strict';var _=require('lodash');var util=require(_0x74f3('0x0'));var logger=require(_0x74f3('0x1'))(_0x74f3('0x2'));var moment=require(_0x74f3('0x3'));var BPromise=require(_0x74f3('0x4'));var rp=require(_0x74f3('0x5'));var fs=require('fs');var path=require(_0x74f3('0x6'));var rimraf=require(_0x74f3('0x7'));var config=require(_0x74f3('0x8'));var attributes=require(_0x74f3('0x9'));module[_0x74f3('0xa')]=function(_0x562cc5,_0x20afaf){return _0x562cc5['define'](_0x74f3('0xb'),attributes,{'tableName':_0x74f3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x612e=['ChatQueue','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','exports'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x612e,0xa1));var _0xe612=function(_0x32ae24,_0x332968){_0x32ae24=_0x32ae24-0x0;var _0x310488=_0x612e[_0x32ae24];return _0x310488;};'use strict';var _=require(_0xe612('0x0'));var util=require(_0xe612('0x1'));var logger=require(_0xe612('0x2'))(_0xe612('0x3'));var moment=require(_0xe612('0x4'));var BPromise=require(_0xe612('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe612('0x6'));var rimraf=require('rimraf');var config=require(_0xe612('0x7'));var attributes=require('./chatQueue.attributes');module[_0xe612('0x8')]=function(_0x433b60,_0x1dc71c){return _0x433b60['define'](_0xe612('0x9'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 875efc7..a5cfe52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fea=['include','map','model','then','info','GetChatQueue','debug','ShowChatQueue','find','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','ChatQueue,\x20%s,\x20%s','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ChatQueue','findAll','options','raw','where','attributes','limit'];(function(_0x51350b,_0x5a8ed3){var _0x57dd61=function(_0x3654ea){while(--_0x3654ea){_0x51350b['push'](_0x51350b['shift']());}};_0x57dd61(++_0x5a8ed3);}(_0x7fea,0x149));var _0xa7fe=function(_0x47cbb0,_0x5891b3){_0x47cbb0=_0x47cbb0-0x0;var _0x34a251=_0x7fea[_0x47cbb0];return _0x34a251;};'use strict';var _=require('lodash');var util=require(_0xa7fe('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa7fe('0x1'));var fs=require('fs');var Redis=require(_0xa7fe('0x2'));var db=require(_0xa7fe('0x3'))['db'];var utils=require(_0xa7fe('0x4'));var logger=require(_0xa7fe('0x5'))(_0xa7fe('0x6'));var config=require('../../config/environment');var jayson=require(_0xa7fe('0x7'));var client=jayson[_0xa7fe('0x8')][_0xa7fe('0x9')]({'port':0x232a});config[_0xa7fe('0xa')]=_[_0xa7fe('0xb')](config[_0xa7fe('0xa')],{'host':_0xa7fe('0xc'),'port':0x18eb});var socket=require(_0xa7fe('0xd'))(new Redis(config['redis']));require('./chatQueue.socket')[_0xa7fe('0xe')](socket);function respondWithRpcPromise(_0x2d1bea,_0x39e1f9,_0x5ce18c){return new BPromise(function(_0x565c34,_0x2c5502){return client[_0xa7fe('0xf')](_0x2d1bea,_0x5ce18c)['then'](function(_0x39898e){logger['info'](_0xa7fe('0x10'),_0x39e1f9,'request\x20sent');logger['debug'](_0xa7fe('0x11'),_0x39e1f9,_0xa7fe('0x12'),JSON[_0xa7fe('0x13')](_0x39898e));if(_0x39898e[_0xa7fe('0x14')]){if(_0x39898e[_0xa7fe('0x14')]['code']===0x1f4){logger['error'](_0xa7fe('0x10'),_0x39e1f9,_0x39898e[_0xa7fe('0x14')][_0xa7fe('0x15')]);return _0x2c5502(_0x39898e[_0xa7fe('0x14')][_0xa7fe('0x15')]);}logger['error'](_0xa7fe('0x10'),_0x39e1f9,_0x39898e[_0xa7fe('0x14')][_0xa7fe('0x15')]);return _0x565c34(_0x39898e[_0xa7fe('0x14')][_0xa7fe('0x15')]);}else{logger['info'](_0xa7fe('0x10'),_0x39e1f9,_0xa7fe('0x12'));_0x565c34(_0x39898e[_0xa7fe('0x16')][_0xa7fe('0x15')]);}})[_0xa7fe('0x17')](function(_0x18261c){logger[_0xa7fe('0x14')]('ChatQueue,\x20%s,\x20%s',_0x39e1f9,_0x18261c);_0x2c5502(_0x18261c);});});}exports['GetChatQueue']=function(_0x1a4ddb){var _0x3719b1=this;return new Promise(function(_0x473612,_0x529990){return db[_0xa7fe('0x18')][_0xa7fe('0x19')]({'raw':_0x1a4ddb[_0xa7fe('0x1a')]?_0x1a4ddb['options'][_0xa7fe('0x1b')]===undefined?!![]:![]:!![],'where':_0x1a4ddb[_0xa7fe('0x1a')]?_0x1a4ddb[_0xa7fe('0x1a')][_0xa7fe('0x1c')]||null:null,'attributes':_0x1a4ddb[_0xa7fe('0x1a')]?_0x1a4ddb[_0xa7fe('0x1a')][_0xa7fe('0x1d')]||null:null,'limit':_0x1a4ddb[_0xa7fe('0x1a')]?_0x1a4ddb['options'][_0xa7fe('0x1e')]||null:null,'include':_0x1a4ddb['options']?_0x1a4ddb['options'][_0xa7fe('0x1f')]?_[_0xa7fe('0x20')](_0x1a4ddb[_0xa7fe('0x1a')][_0xa7fe('0x1f')],function(_0x46c807){return{'model':db[_0x46c807['model']],'as':_0x46c807['as'],'attributes':_0x46c807[_0xa7fe('0x1d')],'include':_0x46c807[_0xa7fe('0x1f')]?_[_0xa7fe('0x20')](_0x46c807[_0xa7fe('0x1f')],function(_0x26e5a4){return{'model':db[_0x26e5a4[_0xa7fe('0x21')]],'as':_0x26e5a4['as'],'attributes':_0x26e5a4[_0xa7fe('0x1d')],'include':_0x26e5a4[_0xa7fe('0x1f')]?_[_0xa7fe('0x20')](_0x26e5a4[_0xa7fe('0x1f')],function(_0x44ba8a){return{'model':db[_0x44ba8a[_0xa7fe('0x21')]],'as':_0x44ba8a['as'],'attributes':_0x44ba8a[_0xa7fe('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa7fe('0x22')](function(_0x1842cb){logger[_0xa7fe('0x23')](_0xa7fe('0x24'),_0x1a4ddb);logger[_0xa7fe('0x25')](_0xa7fe('0x24'),_0x1a4ddb,JSON[_0xa7fe('0x13')](_0x1842cb));_0x473612(_0x1842cb);})['catch'](function(_0x3f900a){logger[_0xa7fe('0x14')]('GetChatQueue',_0x3f900a['message'],_0x1a4ddb);_0x529990(_0x3719b1['error'](0x1f4,_0x3f900a[_0xa7fe('0x15')]));});});};exports[_0xa7fe('0x26')]=function(_0x493ba4){var _0x27fd30=this;return new Promise(function(_0x38a779,_0x8d2694){return db[_0xa7fe('0x18')][_0xa7fe('0x27')]({'raw':_0x493ba4[_0xa7fe('0x1a')]?_0x493ba4[_0xa7fe('0x1a')][_0xa7fe('0x1b')]===undefined?!![]:![]:!![],'where':_0x493ba4[_0xa7fe('0x1a')]?_0x493ba4['options'][_0xa7fe('0x1c')]||null:null,'attributes':_0x493ba4['options']?_0x493ba4[_0xa7fe('0x1a')][_0xa7fe('0x1d')]||null:null,'include':_0x493ba4[_0xa7fe('0x1a')]?_0x493ba4['options'][_0xa7fe('0x1f')]?_[_0xa7fe('0x20')](_0x493ba4[_0xa7fe('0x1a')][_0xa7fe('0x1f')],function(_0x4ad116){return{'model':db[_0x4ad116[_0xa7fe('0x21')]],'as':_0x4ad116['as'],'attributes':_0x4ad116[_0xa7fe('0x1d')],'include':_0x4ad116['include']?_[_0xa7fe('0x20')](_0x4ad116[_0xa7fe('0x1f')],function(_0x1809f4){return{'model':db[_0x1809f4[_0xa7fe('0x21')]],'as':_0x1809f4['as'],'attributes':_0x1809f4[_0xa7fe('0x1d')],'include':_0x1809f4[_0xa7fe('0x1f')]?_[_0xa7fe('0x20')](_0x1809f4[_0xa7fe('0x1f')],function(_0x3a7160){return{'model':db[_0x3a7160[_0xa7fe('0x21')]],'as':_0x3a7160['as'],'attributes':_0x3a7160[_0xa7fe('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa7fe('0x22')](function(_0x228ec1){logger[_0xa7fe('0x23')](_0xa7fe('0x26'),_0x493ba4);logger[_0xa7fe('0x25')]('ShowChatQueue',_0x493ba4,JSON['stringify'](_0x228ec1));_0x38a779(_0x228ec1);})[_0xa7fe('0x17')](function(_0x4e5116){logger['error'](_0xa7fe('0x26'),_0x4e5116[_0xa7fe('0x15')],_0x493ba4);_0x8d2694(_0x27fd30['error'](0x1f4,_0x4e5116[_0xa7fe('0x15')]));});});};
\ No newline at end of file
+var _0x5867=['jayson/promise','client','http','defaults','redis','localhost','request','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowChatQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x40495d,_0xcc4cda){var _0x55c0d5=function(_0x5b6705){while(--_0x5b6705){_0x40495d['push'](_0x40495d['shift']());}};_0x55c0d5(++_0xcc4cda);}(_0x5867,0x1e2));var _0x7586=function(_0xffc740,_0x29a441){_0xffc740=_0xffc740-0x0;var _0x536fb2=_0x5867[_0xffc740];return _0x536fb2;};'use strict';var _=require(_0x7586('0x0'));var util=require(_0x7586('0x1'));var moment=require(_0x7586('0x2'));var BPromise=require(_0x7586('0x3'));var rs=require(_0x7586('0x4'));var fs=require('fs');var Redis=require(_0x7586('0x5'));var db=require(_0x7586('0x6'))['db'];var utils=require(_0x7586('0x7'));var logger=require(_0x7586('0x8'))('rpc');var config=require(_0x7586('0x9'));var jayson=require(_0x7586('0xa'));var client=jayson[_0x7586('0xb')][_0x7586('0xc')]({'port':0x232a});config['redis']=_[_0x7586('0xd')](config[_0x7586('0xe')],{'host':_0x7586('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7586('0xe')]));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x490973,_0x186fee,_0x12ecad){return new BPromise(function(_0x8387b3,_0x41ff1c){return client[_0x7586('0x10')](_0x490973,_0x12ecad)['then'](function(_0x435fa4){logger['info'](_0x7586('0x11'),_0x186fee,_0x7586('0x12'));logger[_0x7586('0x13')](_0x7586('0x14'),_0x186fee,_0x7586('0x12'),JSON[_0x7586('0x15')](_0x435fa4));if(_0x435fa4[_0x7586('0x16')]){if(_0x435fa4[_0x7586('0x16')][_0x7586('0x17')]===0x1f4){logger[_0x7586('0x16')](_0x7586('0x11'),_0x186fee,_0x435fa4['error'][_0x7586('0x18')]);return _0x41ff1c(_0x435fa4[_0x7586('0x16')][_0x7586('0x18')]);}logger[_0x7586('0x16')](_0x7586('0x11'),_0x186fee,_0x435fa4[_0x7586('0x16')][_0x7586('0x18')]);return _0x8387b3(_0x435fa4['error'][_0x7586('0x18')]);}else{logger[_0x7586('0x19')]('ChatQueue,\x20%s,\x20%s',_0x186fee,_0x7586('0x12'));_0x8387b3(_0x435fa4['result'][_0x7586('0x18')]);}})[_0x7586('0x1a')](function(_0x3137b1){logger[_0x7586('0x16')](_0x7586('0x11'),_0x186fee,_0x3137b1);_0x41ff1c(_0x3137b1);});});}exports[_0x7586('0x1b')]=function(_0x1cea96){var _0x30fa77=this;return new Promise(function(_0x26b7be,_0x169589){return db[_0x7586('0x1c')][_0x7586('0x1d')]({'raw':_0x1cea96[_0x7586('0x1e')]?_0x1cea96['options'][_0x7586('0x1f')]===undefined?!![]:![]:!![],'where':_0x1cea96[_0x7586('0x1e')]?_0x1cea96[_0x7586('0x1e')][_0x7586('0x20')]||null:null,'attributes':_0x1cea96['options']?_0x1cea96[_0x7586('0x1e')][_0x7586('0x21')]||null:null,'limit':_0x1cea96['options']?_0x1cea96[_0x7586('0x1e')][_0x7586('0x22')]||null:null,'include':_0x1cea96[_0x7586('0x1e')]?_0x1cea96['options'][_0x7586('0x23')]?_[_0x7586('0x24')](_0x1cea96[_0x7586('0x1e')][_0x7586('0x23')],function(_0x428178){return{'model':db[_0x428178[_0x7586('0x25')]],'as':_0x428178['as'],'attributes':_0x428178['attributes'],'include':_0x428178['include']?_[_0x7586('0x24')](_0x428178['include'],function(_0x42e982){return{'model':db[_0x42e982[_0x7586('0x25')]],'as':_0x42e982['as'],'attributes':_0x42e982[_0x7586('0x21')],'include':_0x42e982[_0x7586('0x23')]?_[_0x7586('0x24')](_0x42e982[_0x7586('0x23')],function(_0x3b3a59){return{'model':db[_0x3b3a59['model']],'as':_0x3b3a59['as'],'attributes':_0x3b3a59['attributes']};}):[]};}):[]};}):[]:[]})[_0x7586('0x26')](function(_0x2605a1){logger[_0x7586('0x19')](_0x7586('0x1b'),_0x1cea96);logger[_0x7586('0x13')](_0x7586('0x1b'),_0x1cea96,JSON[_0x7586('0x15')](_0x2605a1));_0x26b7be(_0x2605a1);})['catch'](function(_0x236bbf){logger[_0x7586('0x16')]('GetChatQueue',_0x236bbf[_0x7586('0x18')],_0x1cea96);_0x169589(_0x30fa77[_0x7586('0x16')](0x1f4,_0x236bbf['message']));});});};exports[_0x7586('0x27')]=function(_0x23663d){var _0x3990fe=this;return new Promise(function(_0x321267,_0x4494a4){return db[_0x7586('0x1c')][_0x7586('0x28')]({'raw':_0x23663d[_0x7586('0x1e')]?_0x23663d[_0x7586('0x1e')][_0x7586('0x1f')]===undefined?!![]:![]:!![],'where':_0x23663d['options']?_0x23663d[_0x7586('0x1e')]['where']||null:null,'attributes':_0x23663d[_0x7586('0x1e')]?_0x23663d[_0x7586('0x1e')][_0x7586('0x21')]||null:null,'include':_0x23663d[_0x7586('0x1e')]?_0x23663d[_0x7586('0x1e')][_0x7586('0x23')]?_['map'](_0x23663d[_0x7586('0x1e')][_0x7586('0x23')],function(_0x51e67d){return{'model':db[_0x51e67d[_0x7586('0x25')]],'as':_0x51e67d['as'],'attributes':_0x51e67d['attributes'],'include':_0x51e67d[_0x7586('0x23')]?_[_0x7586('0x24')](_0x51e67d['include'],function(_0x4fea6e){return{'model':db[_0x4fea6e[_0x7586('0x25')]],'as':_0x4fea6e['as'],'attributes':_0x4fea6e[_0x7586('0x21')],'include':_0x4fea6e['include']?_[_0x7586('0x24')](_0x4fea6e[_0x7586('0x23')],function(_0x1320e0){return{'model':db[_0x1320e0[_0x7586('0x25')]],'as':_0x1320e0['as'],'attributes':_0x1320e0[_0x7586('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7586('0x26')](function(_0x1053e4){logger[_0x7586('0x19')]('ShowChatQueue',_0x23663d);logger['debug'](_0x7586('0x27'),_0x23663d,JSON[_0x7586('0x15')](_0x1053e4));_0x321267(_0x1053e4);})[_0x7586('0x1a')](function(_0x4a7c2f){logger[_0x7586('0x16')](_0x7586('0x27'),_0x4a7c2f[_0x7586('0x18')],_0x23663d);_0x4494a4(_0x3990fe[_0x7586('0x16')](0x1f4,_0x4a7c2f[_0x7586('0x18')]));});});};
\ No newline at end of file
index cd45ec6..21a9cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['register','length','./chatQueue.events','save','remove','update','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xed1f,0x6a));var _0xfed1=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0xed1f[_0x32b542];return _0x554d54;};'use strict';var ChatQueueEvents=require(_0xfed1('0x0'));var events=[_0xfed1('0x1'),_0xfed1('0x2'),_0xfed1('0x3')];function createListener(_0xa45937,_0x25f345){return function(_0x1dd614){_0x25f345[_0xfed1('0x4')](_0xa45937,_0x1dd614);};}function removeListener(_0x2209b3,_0x45c3c1){return function(){ChatQueueEvents[_0xfed1('0x5')](_0x2209b3,_0x45c3c1);};}exports[_0xfed1('0x6')]=function(_0x3d6706){for(var _0x42751d=0x0,_0x380e18=events[_0xfed1('0x7')];_0x42751d<_0x380e18;_0x42751d++){var _0x2a6082=events[_0x42751d];var _0x2967ef=createListener('chatQueue:'+_0x2a6082,_0x3d6706);ChatQueueEvents['on'](_0x2a6082,_0x2967ef);}};
\ No newline at end of file
+var _0xb332=['emit','register','./chatQueue.events','remove','update'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0xb332,0xd9));var _0x2b33=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0xb332[_0x545b71];return _0x26e587;};'use strict';var ChatQueueEvents=require(_0x2b33('0x0'));var events=['save',_0x2b33('0x1'),_0x2b33('0x2')];function createListener(_0x5ee720,_0xf8c6a7){return function(_0x548a70){_0xf8c6a7[_0x2b33('0x3')](_0x5ee720,_0x548a70);};}function removeListener(_0x4c6634,_0x34b111){return function(){ChatQueueEvents['removeListener'](_0x4c6634,_0x34b111);};}exports[_0x2b33('0x4')]=function(_0x22d66){for(var _0x478214=0x0,_0x461d44=events['length'];_0x478214<_0x461d44;_0x478214++){var _0x5ccf2d=events[_0x478214];var _0x4302b7=createListener('chatQueue:'+_0x5ccf2d,_0x22d66);ChatQueueEvents['on'](_0x5ccf2d,_0x4302b7);}};
\ No newline at end of file
index 942574e..174414b 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','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x36bd76,_0x27640c){var _0x30bf15=function(_0x1cccb7){while(--_0x1cccb7){_0x36bd76['push'](_0x36bd76['shift']());}};_0x30bf15(++_0x27640c);}(_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',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x814b=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x40012b,_0x11a4ae){var _0x5abd8f=function(_0x5b8d1a){while(--_0x5b8d1a){_0x40012b['push'](_0x40012b['shift']());}};_0x5abd8f(++_0x11a4ae);}(_0x814b,0x1a2));var _0xb814=function(_0x484cac,_0x30ad3a){_0x484cac=_0x484cac-0x0;var _0x1d6e77=_0x814b[_0x484cac];return _0x1d6e77;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0x16')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0x16')](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x18')]);router[_0xb814('0x16')](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x19')]);router[_0xb814('0x1a')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller['destroy']);router[_0xb814('0x1c')]('/:id/teams',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb814('0x1e')]);module['exports']=router;
\ No newline at end of file
index 30ed67a..6fd66f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea21=['exports','STRING','DATE','moment','sequelize'];(function(_0x46b7ed,_0x211e80){var _0x25ffb4=function(_0x95e398){while(--_0x95e398){_0x46b7ed['push'](_0x46b7ed['shift']());}};_0x25ffb4(++_0x211e80);}(_0xea21,0xc1));var _0x1ea2=function(_0x2ee5eb,_0x21ff16){_0x2ee5eb=_0x2ee5eb-0x0;var _0x4155c8=_0xea21[_0x2ee5eb];return _0x4155c8;};'use strict';var moment=require(_0x1ea2('0x0'));var Sequelize=require(_0x1ea2('0x1'));module[_0x1ea2('0x2')]={'uniqueid':{'type':Sequelize[_0x1ea2('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x1ea2('0x3')]},'joinAt':{'type':Sequelize[_0x1ea2('0x4')]},'leaveAt':{'type':Sequelize[_0x1ea2('0x4')]},'acceptAt':{'type':Sequelize[_0x1ea2('0x4')]},'exitAt':{'type':Sequelize[_0x1ea2('0x4')]},'reason':{'type':Sequelize[_0x1ea2('0x3')]}};
\ No newline at end of file
+var _0xe6ae=['exports','STRING','DATE','moment','sequelize'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xe6ae,0x1e3));var _0xee6a=function(_0x2cb2fc,_0x4443fb){_0x2cb2fc=_0x2cb2fc-0x0;var _0x116b71=_0xe6ae[_0x2cb2fc];return _0x116b71;};'use strict';var moment=require(_0xee6a('0x0'));var Sequelize=require(_0xee6a('0x1'));module[_0xee6a('0x2')]={'uniqueid':{'type':Sequelize[_0xee6a('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xee6a('0x3')]},'joinAt':{'type':Sequelize[_0xee6a('0x4')]},'leaveAt':{'type':Sequelize[_0xee6a('0x4')]},'acceptAt':{'type':Sequelize[_0xee6a('0x4')]},'exitAt':{'type':Sequelize[_0xee6a('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index be248b7..69e6e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3eb=['send','map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','show','params','catch','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name'];(function(_0x4716a7,_0x74d5da){var _0x5c1f7c=function(_0x42a557){while(--_0x42a557){_0x4716a7['push'](_0x4716a7['shift']());}};_0x5c1f7c(++_0x74d5da);}(_0xa3eb,0x1ed));var _0xba3e=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xa3eb[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0xba3e('0x0'));var rimraf=require(_0xba3e('0x1'));var zipdir=require(_0xba3e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xba3e('0x3'));var moment=require(_0xba3e('0x4'));var BPromise=require(_0xba3e('0x5'));var Mustache=require(_0xba3e('0x6'));var util=require(_0xba3e('0x7'));var path=require(_0xba3e('0x8'));var sox=require(_0xba3e('0x9'));var csv=require(_0xba3e('0xa'));var ejs=require(_0xba3e('0xb'));var fs=require('fs');var fs_extra=require(_0xba3e('0xc'));var _=require(_0xba3e('0xd'));var squel=require(_0xba3e('0xe'));var crypto=require(_0xba3e('0xf'));var jsforce=require(_0xba3e('0x10'));var deskjs=require(_0xba3e('0x11'));var toCsv=require(_0xba3e('0xa'));var querystring=require(_0xba3e('0x12'));var Papa=require(_0xba3e('0x13'));var Redis=require(_0xba3e('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xba3e('0x15'));var as=require(_0xba3e('0x16'));var hardwareService=require(_0xba3e('0x17'));var logger=require('../../config/logger')(_0xba3e('0x18'));var utils=require(_0xba3e('0x19'));var config=require(_0xba3e('0x1a'));var licenseUtil=require(_0xba3e('0x1b'));var db=require(_0xba3e('0x1c'))['db'];function respondWithStatusCode(_0x4bf734,_0x730291){_0x730291=_0x730291||0xcc;return function(_0x159739){if(_0x159739){return _0x4bf734['sendStatus'](_0x730291);}return _0x4bf734['status'](_0x730291)[_0xba3e('0x1d')]();};}function respondWithResult(_0x16399c,_0x1a9cd2){_0x1a9cd2=_0x1a9cd2||0xc8;return function(_0x4ac37d){if(_0x4ac37d){return _0x16399c[_0xba3e('0x1e')](_0x1a9cd2)[_0xba3e('0x1f')](_0x4ac37d);}};}function respondWithFilteredResult(_0x578d23,_0x20ccd2){return function(_0x395965){if(_0x395965){var _0x1cb29c=typeof _0x20ccd2['offset']==='undefined'&&typeof _0x20ccd2[_0xba3e('0x20')]==='undefined';var _0x1cb884=_0x395965[_0xba3e('0x21')];var _0x37c8c9=_0x1cb29c?0x0:_0x20ccd2[_0xba3e('0x22')];var _0x241606=_0x1cb29c?_0x395965[_0xba3e('0x21')]:_0x20ccd2[_0xba3e('0x22')]+_0x20ccd2[_0xba3e('0x20')];var _0x498735;if(_0x241606>=_0x1cb884){_0x241606=_0x1cb884;_0x498735=0xc8;}else{_0x498735=0xce;}_0x578d23[_0xba3e('0x1e')](_0x498735);return _0x578d23[_0xba3e('0x23')](_0xba3e('0x24'),_0x37c8c9+'-'+_0x241606+'/'+_0x1cb884)[_0xba3e('0x1f')](_0x395965);}return null;};}function patchUpdates(_0x342c25){return function(_0x3e7e8c){try{jsonpatch[_0xba3e('0x25')](_0x3e7e8c,_0x342c25,!![]);}catch(_0x4f6d50){return BPromise[_0xba3e('0x26')](_0x4f6d50);}return _0x3e7e8c[_0xba3e('0x27')]();};}function saveUpdates(_0x51607e,_0x5ed12e){return function(_0x519c3e){if(_0x519c3e){return _0x519c3e[_0xba3e('0x28')](_0x51607e)[_0xba3e('0x29')](function(_0x4a1368){return _0x4a1368;});}return null;};}function removeEntity(_0xa774f9,_0x570fc9){return function(_0x1c261f){if(_0x1c261f){return _0x1c261f[_0xba3e('0x2a')]()[_0xba3e('0x29')](function(){_0xa774f9[_0xba3e('0x1e')](0xcc)[_0xba3e('0x1d')]();});}};}function handleEntityNotFound(_0x4190ab,_0x347118){return function(_0x42c30a){if(!_0x42c30a){_0x4190ab[_0xba3e('0x2b')](0x194);}return _0x42c30a;};}function handleError(_0x328aaf,_0x2df8e0){_0x2df8e0=_0x2df8e0||0x1f4;return function(_0xbb2a3c){logger['error'](_0xbb2a3c[_0xba3e('0x2c')]);if(_0xbb2a3c[_0xba3e('0x2d')]){delete _0xbb2a3c[_0xba3e('0x2d')];}_0x328aaf['status'](_0x2df8e0)[_0xba3e('0x2e')](_0xbb2a3c);};}exports['index']=function(_0x4fb8a0,_0x11318e){var _0x4cd364={},_0x26a025={},_0x544ca9={'count':0x0,'rows':[]};var _0x25bad7=_[_0xba3e('0x2f')](db[_0xba3e('0x30')][_0xba3e('0x31')],function(_0x10e076){return{'name':_0x10e076[_0xba3e('0x32')],'type':_0x10e076[_0xba3e('0x33')][_0xba3e('0x34')]};});_0x26a025[_0xba3e('0x35')]=_[_0xba3e('0x2f')](_0x25bad7,_0xba3e('0x2d'));_0x26a025[_0xba3e('0x36')]=_[_0xba3e('0x37')](_0x4fb8a0['query']);_0x26a025[_0xba3e('0x38')]=_[_0xba3e('0x39')](_0x26a025[_0xba3e('0x35')],_0x26a025['query']);_0x4cd364[_0xba3e('0x3a')]=_['intersection'](_0x26a025[_0xba3e('0x35')],qs[_0xba3e('0x3b')](_0x4fb8a0['query'][_0xba3e('0x3b')]));_0x4cd364[_0xba3e('0x3a')]=_0x4cd364[_0xba3e('0x3a')][_0xba3e('0x3c')]?_0x4cd364['attributes']:_0x26a025[_0xba3e('0x35')];if(!_0x4fb8a0['query']['hasOwnProperty']('nolimit')){_0x4cd364[_0xba3e('0x20')]=qs['limit'](_0x4fb8a0[_0xba3e('0x36')]['limit']);_0x4cd364['offset']=qs['offset'](_0x4fb8a0[_0xba3e('0x36')]['offset']);}_0x4cd364['order']=qs[_0xba3e('0x3d')](_0x4fb8a0[_0xba3e('0x36')][_0xba3e('0x3d')]);_0x4cd364['where']=qs[_0xba3e('0x38')](_[_0xba3e('0x3e')](_0x4fb8a0['query'],_0x26a025[_0xba3e('0x38')]),_0x25bad7);if(_0x4fb8a0[_0xba3e('0x36')][_0xba3e('0x3f')]){_0x4cd364[_0xba3e('0x40')]=_[_0xba3e('0x41')](_0x4cd364[_0xba3e('0x40')],{'$or':_[_0xba3e('0x2f')](_0x25bad7,function(_0x48f3c3){if(_0x48f3c3[_0xba3e('0x33')]!==_0xba3e('0x42')){var _0x517176={};_0x517176[_0x48f3c3['name']]={'$like':'%'+_0x4fb8a0[_0xba3e('0x36')][_0xba3e('0x3f')]+'%'};return _0x517176;}})});}_0x4cd364=_[_0xba3e('0x41')]({},_0x4cd364,_0x4fb8a0[_0xba3e('0x43')]);var _0x1e22c3={'where':_0x4cd364['where']};return db['ChatQueueReport'][_0xba3e('0x21')](_0x1e22c3)[_0xba3e('0x29')](function(_0x5dfb1e){_0x544ca9['count']=_0x5dfb1e;if(_0x4fb8a0[_0xba3e('0x36')][_0xba3e('0x44')]){_0x4cd364[_0xba3e('0x45')]=[{'all':!![]}];}return db['ChatQueueReport'][_0xba3e('0x46')](_0x4cd364);})[_0xba3e('0x29')](function(_0x396376){_0x544ca9['rows']=_0x396376;return _0x544ca9;})[_0xba3e('0x29')](respondWithFilteredResult(_0x11318e,_0x4cd364))['catch'](handleError(_0x11318e,null));};exports[_0xba3e('0x47')]=function(_0x2280d0,_0x59a34d){var _0x2ef22f={'raw':!![],'where':{'id':_0x2280d0[_0xba3e('0x48')]['id']}},_0x286031={};_0x286031[_0xba3e('0x35')]=_['keys'](db[_0xba3e('0x30')]['rawAttributes']);_0x286031['query']=_[_0xba3e('0x37')](_0x2280d0[_0xba3e('0x36')]);_0x286031['filters']=_[_0xba3e('0x39')](_0x286031['model'],_0x286031[_0xba3e('0x36')]);_0x2ef22f[_0xba3e('0x3a')]=_['intersection'](_0x286031[_0xba3e('0x35')],qs[_0xba3e('0x3b')](_0x2280d0[_0xba3e('0x36')][_0xba3e('0x3b')]));_0x2ef22f['attributes']=_0x2ef22f[_0xba3e('0x3a')][_0xba3e('0x3c')]?_0x2ef22f[_0xba3e('0x3a')]:_0x286031[_0xba3e('0x35')];if(_0x2280d0[_0xba3e('0x36')][_0xba3e('0x44')]){_0x2ef22f[_0xba3e('0x45')]=[{'all':!![]}];}_0x2ef22f=_[_0xba3e('0x41')]({},_0x2ef22f,_0x2280d0[_0xba3e('0x43')]);return db[_0xba3e('0x30')]['find'](_0x2ef22f)[_0xba3e('0x29')](handleEntityNotFound(_0x59a34d,null))[_0xba3e('0x29')](respondWithResult(_0x59a34d,null))[_0xba3e('0x49')](handleError(_0x59a34d,null));};exports['create']=function(_0x57498e,_0x25f43b){return db['ChatQueueReport']['create'](_0x57498e[_0xba3e('0x4a')],{})[_0xba3e('0x29')](respondWithResult(_0x25f43b,0xc9))[_0xba3e('0x49')](handleError(_0x25f43b,null));};exports[_0xba3e('0x28')]=function(_0x1b79fd,_0x50772d){if(_0x1b79fd[_0xba3e('0x4a')]['id']){delete _0x1b79fd['body']['id'];}return db['ChatQueueReport'][_0xba3e('0x4b')]({'where':{'id':_0x1b79fd[_0xba3e('0x48')]['id']}})[_0xba3e('0x29')](handleEntityNotFound(_0x50772d,null))[_0xba3e('0x29')](saveUpdates(_0x1b79fd[_0xba3e('0x4a')],null))['then'](respondWithResult(_0x50772d,null))[_0xba3e('0x49')](handleError(_0x50772d,null));};exports[_0xba3e('0x2a')]=function(_0x22aa22,_0x45d289){return db[_0xba3e('0x30')][_0xba3e('0x4b')]({'where':{'id':_0x22aa22['params']['id']}})[_0xba3e('0x29')](handleEntityNotFound(_0x45d289,null))[_0xba3e('0x29')](removeEntity(_0x45d289,null))[_0xba3e('0x49')](handleError(_0x45d289,null));};exports['describe']=function(_0x51ae75,_0x53c0e9){return db[_0xba3e('0x30')][_0xba3e('0x4c')]()[_0xba3e('0x29')](respondWithResult(_0x53c0e9,null))[_0xba3e('0x49')](handleError(_0x53c0e9,null));};
\ No newline at end of file
+var _0xc7b3=['sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0xabe224,_0x4fc7f9){var _0x206479=function(_0x349e7d){while(--_0x349e7d){_0xabe224['push'](_0xabe224['shift']());}};_0x206479(++_0x4fc7f9);}(_0xc7b3,0x1c6));var _0x3c7b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xc7b3[_0x4b055c];return _0x4b62bb;};'use strict';var emlformat=require(_0x3c7b('0x0'));var rimraf=require(_0x3c7b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3c7b('0x2'));var rp=require(_0x3c7b('0x3'));var moment=require(_0x3c7b('0x4'));var BPromise=require(_0x3c7b('0x5'));var Mustache=require(_0x3c7b('0x6'));var util=require(_0x3c7b('0x7'));var path=require('path');var sox=require(_0x3c7b('0x8'));var csv=require(_0x3c7b('0x9'));var ejs=require(_0x3c7b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c7b('0xb'));var squel=require(_0x3c7b('0xc'));var crypto=require('crypto');var jsforce=require(_0x3c7b('0xd'));var deskjs=require(_0x3c7b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x3c7b('0xf'));var Papa=require(_0x3c7b('0x10'));var Redis=require(_0x3c7b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3c7b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3c7b('0x13'));var logger=require(_0x3c7b('0x14'))('api');var utils=require(_0x3c7b('0x15'));var config=require(_0x3c7b('0x16'));var licenseUtil=require(_0x3c7b('0x17'));var db=require(_0x3c7b('0x18'))['db'];function respondWithStatusCode(_0x31b453,_0x4450c6){_0x4450c6=_0x4450c6||0xcc;return function(_0x5d1ba2){if(_0x5d1ba2){return _0x31b453[_0x3c7b('0x19')](_0x4450c6);}return _0x31b453['status'](_0x4450c6)[_0x3c7b('0x1a')]();};}function respondWithResult(_0x2136b8,_0x187049){_0x187049=_0x187049||0xc8;return function(_0x31630d){if(_0x31630d){return _0x2136b8[_0x3c7b('0x1b')](_0x187049)[_0x3c7b('0x1c')](_0x31630d);}};}function respondWithFilteredResult(_0x2b4ee8,_0x18054e){return function(_0x326541){if(_0x326541){var _0x38a02c=typeof _0x18054e[_0x3c7b('0x1d')]===_0x3c7b('0x1e')&&typeof _0x18054e['limit']===_0x3c7b('0x1e');var _0x287d05=_0x326541[_0x3c7b('0x1f')];var _0x457c09=_0x38a02c?0x0:_0x18054e[_0x3c7b('0x1d')];var _0x38a9f6=_0x38a02c?_0x326541[_0x3c7b('0x1f')]:_0x18054e[_0x3c7b('0x1d')]+_0x18054e[_0x3c7b('0x20')];var _0x23d01c;if(_0x38a9f6>=_0x287d05){_0x38a9f6=_0x287d05;_0x23d01c=0xc8;}else{_0x23d01c=0xce;}_0x2b4ee8[_0x3c7b('0x1b')](_0x23d01c);return _0x2b4ee8[_0x3c7b('0x21')](_0x3c7b('0x22'),_0x457c09+'-'+_0x38a9f6+'/'+_0x287d05)[_0x3c7b('0x1c')](_0x326541);}return null;};}function patchUpdates(_0x2f1966){return function(_0x1c4878){try{jsonpatch[_0x3c7b('0x23')](_0x1c4878,_0x2f1966,!![]);}catch(_0xd05d3){return BPromise['reject'](_0xd05d3);}return _0x1c4878[_0x3c7b('0x24')]();};}function saveUpdates(_0x2d93eb,_0x29372e){return function(_0x2a390e){if(_0x2a390e){return _0x2a390e[_0x3c7b('0x25')](_0x2d93eb)[_0x3c7b('0x26')](function(_0x2bcd73){return _0x2bcd73;});}return null;};}function removeEntity(_0x45c647,_0x39575b){return function(_0x29acf5){if(_0x29acf5){return _0x29acf5[_0x3c7b('0x27')]()[_0x3c7b('0x26')](function(){_0x45c647[_0x3c7b('0x1b')](0xcc)[_0x3c7b('0x1a')]();});}};}function handleEntityNotFound(_0x47f23c,_0x5866d2){return function(_0x416f8d){if(!_0x416f8d){_0x47f23c[_0x3c7b('0x19')](0x194);}return _0x416f8d;};}function handleError(_0x4d4193,_0x35b449){_0x35b449=_0x35b449||0x1f4;return function(_0x181097){logger[_0x3c7b('0x28')](_0x181097[_0x3c7b('0x29')]);if(_0x181097[_0x3c7b('0x2a')]){delete _0x181097[_0x3c7b('0x2a')];}_0x4d4193[_0x3c7b('0x1b')](_0x35b449)[_0x3c7b('0x2b')](_0x181097);};}exports[_0x3c7b('0x2c')]=function(_0x528556,_0x4f8d48){var _0x44e5ba={},_0x1162e1={},_0x288fe4={'count':0x0,'rows':[]};var _0x2e5974=_[_0x3c7b('0x2d')](db[_0x3c7b('0x2e')][_0x3c7b('0x2f')],function(_0x3793e6){return{'name':_0x3793e6['fieldName'],'type':_0x3793e6[_0x3c7b('0x30')][_0x3c7b('0x31')]};});_0x1162e1[_0x3c7b('0x32')]=_['map'](_0x2e5974,_0x3c7b('0x2a'));_0x1162e1[_0x3c7b('0x33')]=_[_0x3c7b('0x34')](_0x528556['query']);_0x1162e1[_0x3c7b('0x35')]=_[_0x3c7b('0x36')](_0x1162e1[_0x3c7b('0x32')],_0x1162e1['query']);_0x44e5ba[_0x3c7b('0x37')]=_[_0x3c7b('0x36')](_0x1162e1['model'],qs[_0x3c7b('0x38')](_0x528556[_0x3c7b('0x33')][_0x3c7b('0x38')]));_0x44e5ba['attributes']=_0x44e5ba[_0x3c7b('0x37')][_0x3c7b('0x39')]?_0x44e5ba['attributes']:_0x1162e1['model'];if(!_0x528556[_0x3c7b('0x33')][_0x3c7b('0x3a')]('nolimit')){_0x44e5ba[_0x3c7b('0x20')]=qs[_0x3c7b('0x20')](_0x528556[_0x3c7b('0x33')]['limit']);_0x44e5ba[_0x3c7b('0x1d')]=qs[_0x3c7b('0x1d')](_0x528556[_0x3c7b('0x33')][_0x3c7b('0x1d')]);}_0x44e5ba[_0x3c7b('0x3b')]=qs[_0x3c7b('0x3c')](_0x528556[_0x3c7b('0x33')][_0x3c7b('0x3c')]);_0x44e5ba[_0x3c7b('0x3d')]=qs[_0x3c7b('0x35')](_[_0x3c7b('0x3e')](_0x528556['query'],_0x1162e1[_0x3c7b('0x35')]),_0x2e5974);if(_0x528556[_0x3c7b('0x33')][_0x3c7b('0x3f')]){_0x44e5ba[_0x3c7b('0x3d')]=_['merge'](_0x44e5ba['where'],{'$or':_[_0x3c7b('0x2d')](_0x2e5974,function(_0x215987){if(_0x215987[_0x3c7b('0x30')]!==_0x3c7b('0x40')){var _0x2091a6={};_0x2091a6[_0x215987[_0x3c7b('0x2a')]]={'$like':'%'+_0x528556[_0x3c7b('0x33')][_0x3c7b('0x3f')]+'%'};return _0x2091a6;}})});}_0x44e5ba=_[_0x3c7b('0x41')]({},_0x44e5ba,_0x528556[_0x3c7b('0x42')]);var _0x324898={'where':_0x44e5ba['where']};return db[_0x3c7b('0x2e')][_0x3c7b('0x1f')](_0x324898)[_0x3c7b('0x26')](function(_0x57025a){_0x288fe4[_0x3c7b('0x1f')]=_0x57025a;if(_0x528556[_0x3c7b('0x33')][_0x3c7b('0x43')]){_0x44e5ba[_0x3c7b('0x44')]=[{'all':!![]}];}return db['ChatQueueReport'][_0x3c7b('0x45')](_0x44e5ba);})[_0x3c7b('0x26')](function(_0x3abc48){_0x288fe4[_0x3c7b('0x46')]=_0x3abc48;return _0x288fe4;})[_0x3c7b('0x26')](respondWithFilteredResult(_0x4f8d48,_0x44e5ba))[_0x3c7b('0x47')](handleError(_0x4f8d48,null));};exports['show']=function(_0x2afd92,_0x38f8ab){var _0xd58cbf={'raw':!![],'where':{'id':_0x2afd92['params']['id']}},_0x44828e={};_0x44828e['model']=_[_0x3c7b('0x34')](db[_0x3c7b('0x2e')][_0x3c7b('0x2f')]);_0x44828e[_0x3c7b('0x33')]=_[_0x3c7b('0x34')](_0x2afd92['query']);_0x44828e[_0x3c7b('0x35')]=_[_0x3c7b('0x36')](_0x44828e['model'],_0x44828e['query']);_0xd58cbf[_0x3c7b('0x37')]=_[_0x3c7b('0x36')](_0x44828e[_0x3c7b('0x32')],qs[_0x3c7b('0x38')](_0x2afd92[_0x3c7b('0x33')]['fields']));_0xd58cbf[_0x3c7b('0x37')]=_0xd58cbf['attributes'][_0x3c7b('0x39')]?_0xd58cbf[_0x3c7b('0x37')]:_0x44828e[_0x3c7b('0x32')];if(_0x2afd92['query'][_0x3c7b('0x43')]){_0xd58cbf['include']=[{'all':!![]}];}_0xd58cbf=_['merge']({},_0xd58cbf,_0x2afd92[_0x3c7b('0x42')]);return db[_0x3c7b('0x2e')][_0x3c7b('0x48')](_0xd58cbf)[_0x3c7b('0x26')](handleEntityNotFound(_0x38f8ab,null))['then'](respondWithResult(_0x38f8ab,null))[_0x3c7b('0x47')](handleError(_0x38f8ab,null));};exports[_0x3c7b('0x49')]=function(_0x568ab8,_0x4d28eb){return db[_0x3c7b('0x2e')]['create'](_0x568ab8['body'],{})[_0x3c7b('0x26')](respondWithResult(_0x4d28eb,0xc9))[_0x3c7b('0x47')](handleError(_0x4d28eb,null));};exports['update']=function(_0x332f6d,_0x5412d1){if(_0x332f6d[_0x3c7b('0x4a')]['id']){delete _0x332f6d[_0x3c7b('0x4a')]['id'];}return db[_0x3c7b('0x2e')][_0x3c7b('0x48')]({'where':{'id':_0x332f6d[_0x3c7b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5412d1,null))[_0x3c7b('0x26')](saveUpdates(_0x332f6d[_0x3c7b('0x4a')],null))[_0x3c7b('0x26')](respondWithResult(_0x5412d1,null))[_0x3c7b('0x47')](handleError(_0x5412d1,null));};exports['destroy']=function(_0xbf374d,_0xccab2d){return db['ChatQueueReport'][_0x3c7b('0x48')]({'where':{'id':_0xbf374d[_0x3c7b('0x4b')]['id']}})[_0x3c7b('0x26')](handleEntityNotFound(_0xccab2d,null))[_0x3c7b('0x26')](removeEntity(_0xccab2d,null))['catch'](handleError(_0xccab2d,null));};exports[_0x3c7b('0x4c')]=function(_0x5d1dd6,_0xd0634a){return db[_0x3c7b('0x2e')][_0x3c7b('0x4c')]()['then'](respondWithResult(_0xd0634a,null))[_0x3c7b('0x47')](handleError(_0xd0634a,null));};
\ No newline at end of file
index ca6de70..d0c8f31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x1c67a2,_0x599648){var _0x4fbd8e=function(_0x2e465b){while(--_0x2e465b){_0x1c67a2['push'](_0x1c67a2['shift']());}};_0x4fbd8e(++_0x599648);}(_0xe706,0xa3));var _0x6e70=function(_0x1a3984,_0x492a1d){_0x1a3984=_0x1a3984-0x0;var _0x386311=_0xe706[_0x1a3984];return _0x386311;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x46adc9,_0x137cde){var _0xd7e09f=function(_0x49bb66){while(--_0x49bb66){_0x46adc9['push'](_0x46adc9['shift']());}};_0xd7e09f(++_0x137cde);}(_0x757a,0xde));var _0xa757=function(_0x3e39cb,_0x393074){_0x3e39cb=_0x3e39cb-0x0;var _0x4b071b=_0x757a[_0x3e39cb];return _0x4b071b;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 03ff183..c019f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa855=['code','message','ChatQueueReport,\x20%s,\x20%s','result','catch','CreateChatQueueReport','create','body','options','raw','ChatQueueReport','update','attributes','limit','UpdateChatQueueReport','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3012b8,_0x20f8d5){var _0x31628a=function(_0x8c2f63){while(--_0x8c2f63){_0x3012b8['push'](_0x3012b8['shift']());}};_0x31628a(++_0x20f8d5);}(_0xa855,0xc9));var _0x5a85=function(_0x598b5d,_0x3f4d1e){_0x598b5d=_0x598b5d-0x0;var _0x54ab06=_0xa855[_0x598b5d];return _0x54ab06;};'use strict';var _=require(_0x5a85('0x0'));var util=require(_0x5a85('0x1'));var moment=require('moment');var BPromise=require(_0x5a85('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5a85('0x3'))['db'];var utils=require(_0x5a85('0x4'));var logger=require(_0x5a85('0x5'))(_0x5a85('0x6'));var config=require(_0x5a85('0x7'));var jayson=require(_0x5a85('0x8'));var client=jayson['client'][_0x5a85('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xdc1ff5,_0x32f822,_0x299676){return new BPromise(function(_0x1f0041,_0xfcfaf1){return client['request'](_0xdc1ff5,_0x299676)[_0x5a85('0xa')](function(_0x56e598){logger[_0x5a85('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0x32f822,'request\x20sent');logger[_0x5a85('0xc')](_0x5a85('0xd'),_0x32f822,'request\x20sent',JSON[_0x5a85('0xe')](_0x56e598));if(_0x56e598[_0x5a85('0xf')]){if(_0x56e598['error'][_0x5a85('0x10')]===0x1f4){logger[_0x5a85('0xf')]('ChatQueueReport,\x20%s,\x20%s',_0x32f822,_0x56e598[_0x5a85('0xf')][_0x5a85('0x11')]);return _0xfcfaf1(_0x56e598[_0x5a85('0xf')][_0x5a85('0x11')]);}logger[_0x5a85('0xf')](_0x5a85('0x12'),_0x32f822,_0x56e598[_0x5a85('0xf')]['message']);return _0x1f0041(_0x56e598[_0x5a85('0xf')]['message']);}else{logger[_0x5a85('0xb')](_0x5a85('0x12'),_0x32f822,'request\x20sent');_0x1f0041(_0x56e598[_0x5a85('0x13')]['message']);}})[_0x5a85('0x14')](function(_0x14ee58){logger[_0x5a85('0xf')](_0x5a85('0x12'),_0x32f822,_0x14ee58);_0xfcfaf1(_0x14ee58);});});}exports[_0x5a85('0x15')]=function(_0x163433){var _0x2b3879=this;return new Promise(function(_0xf024d8,_0x37622e){return db['ChatQueueReport'][_0x5a85('0x16')](_0x163433[_0x5a85('0x17')],{'raw':_0x163433[_0x5a85('0x18')]?_0x163433[_0x5a85('0x18')][_0x5a85('0x19')]===undefined?!![]:![]:!![]})[_0x5a85('0xa')](function(_0xfebddd){logger[_0x5a85('0xb')](_0x5a85('0x15'),_0x163433);logger[_0x5a85('0xc')](_0x5a85('0x15'),_0x163433,JSON['stringify'](_0xfebddd));_0xf024d8(_0xfebddd);})[_0x5a85('0x14')](function(_0x272336){logger['error']('CreateChatQueueReport',_0x272336[_0x5a85('0x11')],_0x163433);_0x37622e(_0x2b3879[_0x5a85('0xf')](0x1f4,_0x272336['message']));});});};exports['UpdateChatQueueReport']=function(_0x1b897a){var _0x145867=this;return new Promise(function(_0x3b5a2f,_0x5634be){return db[_0x5a85('0x1a')][_0x5a85('0x1b')](_0x1b897a[_0x5a85('0x17')],{'raw':_0x1b897a['options']?_0x1b897a[_0x5a85('0x18')][_0x5a85('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b897a[_0x5a85('0x18')]?_0x1b897a[_0x5a85('0x18')]['where']||null:null,'attributes':_0x1b897a['options']?_0x1b897a[_0x5a85('0x18')][_0x5a85('0x1c')]||null:null,'limit':_0x1b897a[_0x5a85('0x18')]?_0x1b897a[_0x5a85('0x18')][_0x5a85('0x1d')]||null:null})['then'](function(_0x34f9ce){logger[_0x5a85('0xb')](_0x5a85('0x1e'),_0x1b897a);logger[_0x5a85('0xc')](_0x5a85('0x1e'),_0x1b897a,JSON[_0x5a85('0xe')](_0x34f9ce));_0x3b5a2f(_0x34f9ce);})['catch'](function(_0x354ce5){logger[_0x5a85('0xf')]('UpdateChatQueueReport',_0x354ce5[_0x5a85('0x11')],_0x1b897a);_0x5634be(_0x145867[_0x5a85('0xf')](0x1f4,_0x354ce5[_0x5a85('0x11')]));});});};
\ No newline at end of file
+var _0x2472=['util','moment','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','CreateChatQueueReport','create','body','options','raw','ChatQueueReport','update','where','attributes','limit','UpdateChatQueueReport','catch','lodash'];(function(_0x21b1f7,_0x3801e3){var _0x415f8d=function(_0x178986){while(--_0x178986){_0x21b1f7['push'](_0x21b1f7['shift']());}};_0x415f8d(++_0x3801e3);}(_0x2472,0xd8));var _0x2247=function(_0x50aeda,_0x346bc3){_0x50aeda=_0x50aeda-0x0;var _0x2223de=_0x2472[_0x50aeda];return _0x2223de;};'use strict';var _=require(_0x2247('0x0'));var util=require(_0x2247('0x1'));var moment=require(_0x2247('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2247('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2247('0x4'))(_0x2247('0x5'));var config=require(_0x2247('0x6'));var jayson=require(_0x2247('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x984435,_0x2325d9,_0x2881c9){return new BPromise(function(_0x1c83ae,_0x58f607){return client['request'](_0x984435,_0x2881c9)[_0x2247('0x8')](function(_0x4db2bb){logger[_0x2247('0x9')](_0x2247('0xa'),_0x2325d9,_0x2247('0xb'));logger[_0x2247('0xc')](_0x2247('0xd'),_0x2325d9,'request\x20sent',JSON[_0x2247('0xe')](_0x4db2bb));if(_0x4db2bb['error']){if(_0x4db2bb['error'][_0x2247('0xf')]===0x1f4){logger[_0x2247('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x2325d9,_0x4db2bb['error'][_0x2247('0x11')]);return _0x58f607(_0x4db2bb['error'][_0x2247('0x11')]);}logger['error'](_0x2247('0xa'),_0x2325d9,_0x4db2bb[_0x2247('0x10')][_0x2247('0x11')]);return _0x1c83ae(_0x4db2bb['error'][_0x2247('0x11')]);}else{logger[_0x2247('0x9')](_0x2247('0xa'),_0x2325d9,_0x2247('0xb'));_0x1c83ae(_0x4db2bb[_0x2247('0x12')][_0x2247('0x11')]);}})['catch'](function(_0x3a646a){logger['error'](_0x2247('0xa'),_0x2325d9,_0x3a646a);_0x58f607(_0x3a646a);});});}exports[_0x2247('0x13')]=function(_0x107bed){var _0x22701f=this;return new Promise(function(_0x173f59,_0x54359d){return db['ChatQueueReport'][_0x2247('0x14')](_0x107bed[_0x2247('0x15')],{'raw':_0x107bed[_0x2247('0x16')]?_0x107bed[_0x2247('0x16')][_0x2247('0x17')]===undefined?!![]:![]:!![]})[_0x2247('0x8')](function(_0x2e6536){logger['info'](_0x2247('0x13'),_0x107bed);logger['debug'](_0x2247('0x13'),_0x107bed,JSON[_0x2247('0xe')](_0x2e6536));_0x173f59(_0x2e6536);})['catch'](function(_0x58de26){logger['error'](_0x2247('0x13'),_0x58de26['message'],_0x107bed);_0x54359d(_0x22701f['error'](0x1f4,_0x58de26['message']));});});};exports['UpdateChatQueueReport']=function(_0x40c1a9){var _0x3b727b=this;return new Promise(function(_0x222952,_0x51d4e2){return db[_0x2247('0x18')][_0x2247('0x19')](_0x40c1a9[_0x2247('0x15')],{'raw':_0x40c1a9[_0x2247('0x16')]?_0x40c1a9[_0x2247('0x16')][_0x2247('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40c1a9[_0x2247('0x16')]?_0x40c1a9[_0x2247('0x16')][_0x2247('0x1a')]||null:null,'attributes':_0x40c1a9['options']?_0x40c1a9['options'][_0x2247('0x1b')]||null:null,'limit':_0x40c1a9[_0x2247('0x16')]?_0x40c1a9[_0x2247('0x16')][_0x2247('0x1c')]||null:null})[_0x2247('0x8')](function(_0x550b35){logger['info'](_0x2247('0x1d'),_0x40c1a9);logger[_0x2247('0xc')]('UpdateChatQueueReport',_0x40c1a9,JSON[_0x2247('0xe')](_0x550b35));_0x222952(_0x550b35);})[_0x2247('0x1e')](function(_0x3ceb27){logger['error'](_0x2247('0x1d'),_0x3ceb27[_0x2247('0x11')],_0x40c1a9);_0x51d4e2(_0x3b727b[_0x2247('0x10')](0x1f4,_0x3ceb27['message']));});});};
\ No newline at end of file
index fa6df48..4f7a482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8734=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','exports','multer','util','connect-timeout','express','Router'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8734,0xe2));var _0x4873=function(_0x2220d7,_0x804d20){_0x2220d7=_0x2220d7-0x0;var _0xe4a29f=_0x8734[_0x2220d7];return _0xe4a29f;};'use strict';var multer=require(_0x4873('0x0'));var util=require(_0x4873('0x1'));var path=require('path');var timeout=require(_0x4873('0x2'));var express=require(_0x4873('0x3'));var router=express[_0x4873('0x4')]();var fs_extra=require(_0x4873('0x5'));var auth=require(_0x4873('0x6'));var interaction=require(_0x4873('0x7'));var config=require(_0x4873('0x8'));var controller=require(_0x4873('0x9'));router[_0x4873('0xa')]('/',auth[_0x4873('0xb')](),controller[_0x4873('0xc')]);router[_0x4873('0xa')](_0x4873('0xd'),auth['isAuthenticated'](),controller[_0x4873('0xe')]);router[_0x4873('0xa')](_0x4873('0xf'),auth[_0x4873('0xb')](),controller['show']);router[_0x4873('0x10')]('/',auth[_0x4873('0xb')](),controller[_0x4873('0x11')]);router['put'](_0x4873('0xf'),auth[_0x4873('0xb')](),controller[_0x4873('0x12')]);router[_0x4873('0x13')](_0x4873('0xf'),auth[_0x4873('0xb')](),controller['destroy']);module[_0x4873('0x14')]=router;
\ No newline at end of file
+var _0x88ca=['put','update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create'];(function(_0x4ae459,_0x3bf329){var _0x51d0c9=function(_0x1ce66b){while(--_0x1ce66b){_0x4ae459['push'](_0x4ae459['shift']());}};_0x51d0c9(++_0x3bf329);}(_0x88ca,0x194));var _0xa88c=function(_0x3f7598,_0x212e37){_0x3f7598=_0x3f7598-0x0;var _0x51fb16=_0x88ca[_0x3f7598];return _0x51fb16;};'use strict';var multer=require(_0xa88c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa88c('0x1'));var express=require(_0xa88c('0x2'));var router=express[_0xa88c('0x3')]();var fs_extra=require(_0xa88c('0x4'));var auth=require(_0xa88c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa88c('0x6'));var controller=require(_0xa88c('0x7'));router[_0xa88c('0x8')]('/',auth[_0xa88c('0x9')](),controller[_0xa88c('0xa')]);router[_0xa88c('0x8')]('/describe',auth[_0xa88c('0x9')](),controller[_0xa88c('0xb')]);router[_0xa88c('0x8')](_0xa88c('0xc'),auth['isAuthenticated'](),controller[_0xa88c('0xd')]);router[_0xa88c('0xe')]('/',auth[_0xa88c('0x9')](),controller[_0xa88c('0xf')]);router[_0xa88c('0x10')]('/:id',auth[_0xa88c('0x9')](),controller[_0xa88c('0x11')]);router['delete'](_0xa88c('0xc'),auth['isAuthenticated'](),controller[_0xa88c('0x12')]);module[_0xa88c('0x13')]=router;
\ No newline at end of file
index d3e90ae..5bf2a23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x2d9da3,_0x63174d){var _0x2a8d6a=function(_0x92c576){while(--_0x92c576){_0x2d9da3['push'](_0x2d9da3['shift']());}};_0x2a8d6a(++_0x63174d);}(_0x54ef,0x112));var _0xf54e=function(_0x5391da,_0x1e907a){_0x5391da=_0x5391da-0x0;var _0x5107bd=_0x54ef[_0x5391da];return _0x5107bd;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x2d5b0e,_0x2d7b49){var _0x2359ed=function(_0x364089){while(--_0x364089){_0x2d5b0e['push'](_0x2d5b0e['shift']());}};_0x2359ed(++_0x2d7b49);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c3ffe,_0x457374){_0x4c3ffe=_0x4c3ffe-0x0;var _0x28d3eb=_0xcb91[_0x4c3ffe];return _0x28d3eb;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 9acc84f..c7af5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f81=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','error','stack','name','send','map','ChatTransferReport','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','merge','type','filter','options','include','show','params','keys','find','create','body','catch','update','destroy','describe'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x9f81,0x1a4));var _0x19f8=function(_0x47a490,_0x8906db){_0x47a490=_0x47a490-0x0;var _0x482635=_0x9f81[_0x47a490];return _0x482635;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x19f8('0x0'));var zipdir=require(_0x19f8('0x1'));var jsonpatch=require(_0x19f8('0x2'));var rp=require(_0x19f8('0x3'));var moment=require(_0x19f8('0x4'));var BPromise=require(_0x19f8('0x5'));var Mustache=require(_0x19f8('0x6'));var util=require('util');var path=require(_0x19f8('0x7'));var sox=require(_0x19f8('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x19f8('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x19f8('0xa'));var jsforce=require(_0x19f8('0xb'));var deskjs=require(_0x19f8('0xc'));var toCsv=require('to-csv');var querystring=require(_0x19f8('0xd'));var Papa=require(_0x19f8('0xe'));var Redis=require(_0x19f8('0xf'));var authService=require(_0x19f8('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x19f8('0x11'));var hardwareService=require(_0x19f8('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x19f8('0x13'));var config=require(_0x19f8('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x19f8('0x15'))['db'];function respondWithStatusCode(_0x256e19,_0x445a5d){_0x445a5d=_0x445a5d||0xcc;return function(_0x4e6983){if(_0x4e6983){return _0x256e19[_0x19f8('0x16')](_0x445a5d);}return _0x256e19[_0x19f8('0x17')](_0x445a5d)[_0x19f8('0x18')]();};}function respondWithResult(_0x15baeb,_0x37360e){_0x37360e=_0x37360e||0xc8;return function(_0xaa1df3){if(_0xaa1df3){return _0x15baeb[_0x19f8('0x17')](_0x37360e)[_0x19f8('0x19')](_0xaa1df3);}};}function respondWithFilteredResult(_0xae97c7,_0x58ccc7){return function(_0x3003c5){if(_0x3003c5){var _0x2de427=typeof _0x58ccc7['offset']===_0x19f8('0x1a')&&typeof _0x58ccc7[_0x19f8('0x1b')]==='undefined';var _0x3d402b=_0x3003c5[_0x19f8('0x1c')];var _0x2b3384=_0x2de427?0x0:_0x58ccc7['offset'];var _0x4495a7=_0x2de427?_0x3003c5[_0x19f8('0x1c')]:_0x58ccc7[_0x19f8('0x1d')]+_0x58ccc7[_0x19f8('0x1b')];var _0x4f34f3;if(_0x4495a7>=_0x3d402b){_0x4495a7=_0x3d402b;_0x4f34f3=0xc8;}else{_0x4f34f3=0xce;}_0xae97c7[_0x19f8('0x17')](_0x4f34f3);return _0xae97c7[_0x19f8('0x1e')](_0x19f8('0x1f'),_0x2b3384+'-'+_0x4495a7+'/'+_0x3d402b)['json'](_0x3003c5);}return null;};}function patchUpdates(_0x3e81b6){return function(_0x4c5048){try{jsonpatch[_0x19f8('0x20')](_0x4c5048,_0x3e81b6,!![]);}catch(_0x1aa178){return BPromise[_0x19f8('0x21')](_0x1aa178);}return _0x4c5048[_0x19f8('0x22')]();};}function saveUpdates(_0x2b7f8b,_0x100361){return function(_0x27215d){if(_0x27215d){return _0x27215d['update'](_0x2b7f8b)['then'](function(_0x3b4ae6){return _0x3b4ae6;});}return null;};}function removeEntity(_0x42f9a1,_0x560b4d){return function(_0x13cdd1){if(_0x13cdd1){return _0x13cdd1['destroy']()[_0x19f8('0x23')](function(){_0x42f9a1[_0x19f8('0x17')](0xcc)[_0x19f8('0x18')]();});}};}function handleEntityNotFound(_0x29db40,_0xe18dc){return function(_0x206eaa){if(!_0x206eaa){_0x29db40[_0x19f8('0x16')](0x194);}return _0x206eaa;};}function handleError(_0x29fb05,_0xa90618){_0xa90618=_0xa90618||0x1f4;return function(_0x1beb1e){logger[_0x19f8('0x24')](_0x1beb1e[_0x19f8('0x25')]);if(_0x1beb1e[_0x19f8('0x26')]){delete _0x1beb1e['name'];}_0x29fb05['status'](_0xa90618)[_0x19f8('0x27')](_0x1beb1e);};}exports['index']=function(_0x1f0b04,_0x9fa086){var _0x54dec2={},_0x3148a1={},_0x56a41a={'count':0x0,'rows':[]};var _0x2d8d1d=_[_0x19f8('0x28')](db[_0x19f8('0x29')][_0x19f8('0x2a')],function(_0x18670e){return{'name':_0x18670e[_0x19f8('0x2b')],'type':_0x18670e['type']['key']};});_0x3148a1[_0x19f8('0x2c')]=_[_0x19f8('0x28')](_0x2d8d1d,_0x19f8('0x26'));_0x3148a1[_0x19f8('0x2d')]=_['keys'](_0x1f0b04[_0x19f8('0x2d')]);_0x3148a1[_0x19f8('0x2e')]=_[_0x19f8('0x2f')](_0x3148a1[_0x19f8('0x2c')],_0x3148a1[_0x19f8('0x2d')]);_0x54dec2[_0x19f8('0x30')]=_[_0x19f8('0x2f')](_0x3148a1[_0x19f8('0x2c')],qs[_0x19f8('0x31')](_0x1f0b04['query'][_0x19f8('0x31')]));_0x54dec2[_0x19f8('0x30')]=_0x54dec2[_0x19f8('0x30')][_0x19f8('0x32')]?_0x54dec2[_0x19f8('0x30')]:_0x3148a1[_0x19f8('0x2c')];if(!_0x1f0b04[_0x19f8('0x2d')]['hasOwnProperty'](_0x19f8('0x33'))){_0x54dec2[_0x19f8('0x1b')]=qs[_0x19f8('0x1b')](_0x1f0b04['query'][_0x19f8('0x1b')]);_0x54dec2[_0x19f8('0x1d')]=qs[_0x19f8('0x1d')](_0x1f0b04[_0x19f8('0x2d')][_0x19f8('0x1d')]);}_0x54dec2[_0x19f8('0x34')]=qs[_0x19f8('0x35')](_0x1f0b04[_0x19f8('0x2d')]['sort']);_0x54dec2[_0x19f8('0x36')]=qs[_0x19f8('0x2e')](_['pick'](_0x1f0b04[_0x19f8('0x2d')],_0x3148a1['filters']),_0x2d8d1d);if(_0x1f0b04[_0x19f8('0x2d')]['filter']){_0x54dec2[_0x19f8('0x36')]=_[_0x19f8('0x37')](_0x54dec2['where'],{'$or':_['map'](_0x2d8d1d,function(_0x573e34){if(_0x573e34[_0x19f8('0x38')]!=='VIRTUAL'){var _0x13bbfc={};_0x13bbfc[_0x573e34['name']]={'$like':'%'+_0x1f0b04[_0x19f8('0x2d')][_0x19f8('0x39')]+'%'};return _0x13bbfc;}})});}_0x54dec2=_['merge']({},_0x54dec2,_0x1f0b04[_0x19f8('0x3a')]);var _0x2bfbae={'where':_0x54dec2[_0x19f8('0x36')]};return db[_0x19f8('0x29')][_0x19f8('0x1c')](_0x2bfbae)['then'](function(_0x316cb4){_0x56a41a[_0x19f8('0x1c')]=_0x316cb4;if(_0x1f0b04[_0x19f8('0x2d')]['includeAll']){_0x54dec2[_0x19f8('0x3b')]=[{'all':!![]}];}return db[_0x19f8('0x29')]['findAll'](_0x54dec2);})[_0x19f8('0x23')](function(_0x5271cf){_0x56a41a['rows']=_0x5271cf;return _0x56a41a;})[_0x19f8('0x23')](respondWithFilteredResult(_0x9fa086,_0x54dec2))['catch'](handleError(_0x9fa086,null));};exports[_0x19f8('0x3c')]=function(_0x1fdf9a,_0x159975){var _0x13cd73={'raw':!![],'where':{'id':_0x1fdf9a[_0x19f8('0x3d')]['id']}},_0x29ceff={};_0x29ceff['model']=_[_0x19f8('0x3e')](db[_0x19f8('0x29')][_0x19f8('0x2a')]);_0x29ceff[_0x19f8('0x2d')]=_[_0x19f8('0x3e')](_0x1fdf9a[_0x19f8('0x2d')]);_0x29ceff[_0x19f8('0x2e')]=_['intersection'](_0x29ceff[_0x19f8('0x2c')],_0x29ceff[_0x19f8('0x2d')]);_0x13cd73[_0x19f8('0x30')]=_['intersection'](_0x29ceff[_0x19f8('0x2c')],qs[_0x19f8('0x31')](_0x1fdf9a[_0x19f8('0x2d')][_0x19f8('0x31')]));_0x13cd73[_0x19f8('0x30')]=_0x13cd73[_0x19f8('0x30')][_0x19f8('0x32')]?_0x13cd73[_0x19f8('0x30')]:_0x29ceff[_0x19f8('0x2c')];if(_0x1fdf9a[_0x19f8('0x2d')]['includeAll']){_0x13cd73[_0x19f8('0x3b')]=[{'all':!![]}];}_0x13cd73=_['merge']({},_0x13cd73,_0x1fdf9a[_0x19f8('0x3a')]);return db[_0x19f8('0x29')][_0x19f8('0x3f')](_0x13cd73)[_0x19f8('0x23')](handleEntityNotFound(_0x159975,null))[_0x19f8('0x23')](respondWithResult(_0x159975,null))['catch'](handleError(_0x159975,null));};exports['create']=function(_0x11c149,_0x171b91){return db[_0x19f8('0x29')][_0x19f8('0x40')](_0x11c149[_0x19f8('0x41')],{})[_0x19f8('0x23')](respondWithResult(_0x171b91,0xc9))[_0x19f8('0x42')](handleError(_0x171b91,null));};exports[_0x19f8('0x43')]=function(_0x193888,_0x2a57f5){if(_0x193888[_0x19f8('0x41')]['id']){delete _0x193888['body']['id'];}return db['ChatTransferReport'][_0x19f8('0x3f')]({'where':{'id':_0x193888[_0x19f8('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2a57f5,null))[_0x19f8('0x23')](saveUpdates(_0x193888['body'],null))['then'](respondWithResult(_0x2a57f5,null))[_0x19f8('0x42')](handleError(_0x2a57f5,null));};exports[_0x19f8('0x44')]=function(_0x43059d,_0x565c6b){return db[_0x19f8('0x29')]['find']({'where':{'id':_0x43059d[_0x19f8('0x3d')]['id']}})['then'](handleEntityNotFound(_0x565c6b,null))['then'](removeEntity(_0x565c6b,null))[_0x19f8('0x42')](handleError(_0x565c6b,null));};exports[_0x19f8('0x45')]=function(_0x2939ce,_0x2b033e){return db[_0x19f8('0x29')][_0x19f8('0x45')]()[_0x19f8('0x23')](respondWithResult(_0x2b033e,null))[_0x19f8('0x42')](handleError(_0x2b033e,null));};
\ No newline at end of file
+var _0x4b7c=['catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','ChatTransferReport','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include'];(function(_0x2bedc3,_0x2b4c54){var _0x1e8ad0=function(_0x312433){while(--_0x312433){_0x2bedc3['push'](_0x2bedc3['shift']());}};_0x1e8ad0(++_0x2b4c54);}(_0x4b7c,0xa4));var _0xc4b7=function(_0x1cbe65,_0x45b323){_0x1cbe65=_0x1cbe65-0x0;var _0x4a1a8a=_0x4b7c[_0x1cbe65];return _0x4a1a8a;};'use strict';var emlformat=require(_0xc4b7('0x0'));var rimraf=require(_0xc4b7('0x1'));var zipdir=require(_0xc4b7('0x2'));var jsonpatch=require(_0xc4b7('0x3'));var rp=require(_0xc4b7('0x4'));var moment=require(_0xc4b7('0x5'));var BPromise=require(_0xc4b7('0x6'));var Mustache=require(_0xc4b7('0x7'));var util=require('util');var path=require(_0xc4b7('0x8'));var sox=require(_0xc4b7('0x9'));var csv=require(_0xc4b7('0xa'));var ejs=require(_0xc4b7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc4b7('0xc'));var squel=require('squel');var crypto=require(_0xc4b7('0xd'));var jsforce=require(_0xc4b7('0xe'));var deskjs=require(_0xc4b7('0xf'));var toCsv=require(_0xc4b7('0xa'));var querystring=require(_0xc4b7('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc4b7('0x11'));var as=require(_0xc4b7('0x12'));var hardwareService=require(_0xc4b7('0x13'));var logger=require(_0xc4b7('0x14'))(_0xc4b7('0x15'));var utils=require(_0xc4b7('0x16'));var config=require(_0xc4b7('0x17'));var licenseUtil=require(_0xc4b7('0x18'));var db=require(_0xc4b7('0x19'))['db'];function respondWithStatusCode(_0x3d93af,_0x1bf399){_0x1bf399=_0x1bf399||0xcc;return function(_0x3717d3){if(_0x3717d3){return _0x3d93af[_0xc4b7('0x1a')](_0x1bf399);}return _0x3d93af[_0xc4b7('0x1b')](_0x1bf399)[_0xc4b7('0x1c')]();};}function respondWithResult(_0x296f42,_0x4db87e){_0x4db87e=_0x4db87e||0xc8;return function(_0x4abf1f){if(_0x4abf1f){return _0x296f42[_0xc4b7('0x1b')](_0x4db87e)['json'](_0x4abf1f);}};}function respondWithFilteredResult(_0x474043,_0x2962fa){return function(_0xa76de1){if(_0xa76de1){var _0x184b6e=typeof _0x2962fa['offset']===_0xc4b7('0x1d')&&typeof _0x2962fa[_0xc4b7('0x1e')]===_0xc4b7('0x1d');var _0x4ce648=_0xa76de1[_0xc4b7('0x1f')];var _0x477166=_0x184b6e?0x0:_0x2962fa[_0xc4b7('0x20')];var _0x186b44=_0x184b6e?_0xa76de1['count']:_0x2962fa['offset']+_0x2962fa[_0xc4b7('0x1e')];var _0x3874dc;if(_0x186b44>=_0x4ce648){_0x186b44=_0x4ce648;_0x3874dc=0xc8;}else{_0x3874dc=0xce;}_0x474043[_0xc4b7('0x1b')](_0x3874dc);return _0x474043[_0xc4b7('0x21')](_0xc4b7('0x22'),_0x477166+'-'+_0x186b44+'/'+_0x4ce648)[_0xc4b7('0x23')](_0xa76de1);}return null;};}function patchUpdates(_0x5baee3){return function(_0x34a812){try{jsonpatch[_0xc4b7('0x24')](_0x34a812,_0x5baee3,!![]);}catch(_0x41135e){return BPromise[_0xc4b7('0x25')](_0x41135e);}return _0x34a812[_0xc4b7('0x26')]();};}function saveUpdates(_0x97a716,_0xa0fbc2){return function(_0x32d954){if(_0x32d954){return _0x32d954[_0xc4b7('0x27')](_0x97a716)[_0xc4b7('0x28')](function(_0x45869e){return _0x45869e;});}return null;};}function removeEntity(_0x1164b7,_0x35c89c){return function(_0x3c11ca){if(_0x3c11ca){return _0x3c11ca['destroy']()[_0xc4b7('0x28')](function(){_0x1164b7['status'](0xcc)[_0xc4b7('0x1c')]();});}};}function handleEntityNotFound(_0x29f087,_0x102d35){return function(_0x2a5ce8){if(!_0x2a5ce8){_0x29f087[_0xc4b7('0x1a')](0x194);}return _0x2a5ce8;};}function handleError(_0xb45165,_0x495439){_0x495439=_0x495439||0x1f4;return function(_0x2b6cd0){logger[_0xc4b7('0x29')](_0x2b6cd0[_0xc4b7('0x2a')]);if(_0x2b6cd0[_0xc4b7('0x2b')]){delete _0x2b6cd0['name'];}_0xb45165['status'](_0x495439)[_0xc4b7('0x2c')](_0x2b6cd0);};}exports[_0xc4b7('0x2d')]=function(_0x554411,_0x8270b2){var _0x476bee={},_0x373931={},_0xb95ede={'count':0x0,'rows':[]};var _0x2ee802=_['map'](db[_0xc4b7('0x2e')][_0xc4b7('0x2f')],function(_0xd6722){return{'name':_0xd6722[_0xc4b7('0x30')],'type':_0xd6722[_0xc4b7('0x31')]['key']};});_0x373931[_0xc4b7('0x32')]=_[_0xc4b7('0x33')](_0x2ee802,_0xc4b7('0x2b'));_0x373931[_0xc4b7('0x34')]=_[_0xc4b7('0x35')](_0x554411[_0xc4b7('0x34')]);_0x373931[_0xc4b7('0x36')]=_[_0xc4b7('0x37')](_0x373931['model'],_0x373931[_0xc4b7('0x34')]);_0x476bee[_0xc4b7('0x38')]=_['intersection'](_0x373931[_0xc4b7('0x32')],qs[_0xc4b7('0x39')](_0x554411[_0xc4b7('0x34')]['fields']));_0x476bee['attributes']=_0x476bee[_0xc4b7('0x38')]['length']?_0x476bee['attributes']:_0x373931[_0xc4b7('0x32')];if(!_0x554411[_0xc4b7('0x34')][_0xc4b7('0x3a')](_0xc4b7('0x3b'))){_0x476bee[_0xc4b7('0x1e')]=qs[_0xc4b7('0x1e')](_0x554411[_0xc4b7('0x34')]['limit']);_0x476bee[_0xc4b7('0x20')]=qs[_0xc4b7('0x20')](_0x554411['query'][_0xc4b7('0x20')]);}_0x476bee[_0xc4b7('0x3c')]=qs['sort'](_0x554411['query'][_0xc4b7('0x3d')]);_0x476bee[_0xc4b7('0x3e')]=qs['filters'](_[_0xc4b7('0x3f')](_0x554411['query'],_0x373931[_0xc4b7('0x36')]),_0x2ee802);if(_0x554411[_0xc4b7('0x34')][_0xc4b7('0x40')]){_0x476bee['where']=_[_0xc4b7('0x41')](_0x476bee[_0xc4b7('0x3e')],{'$or':_['map'](_0x2ee802,function(_0x375231){if(_0x375231[_0xc4b7('0x31')]!==_0xc4b7('0x42')){var _0x508fde={};_0x508fde[_0x375231[_0xc4b7('0x2b')]]={'$like':'%'+_0x554411['query'][_0xc4b7('0x40')]+'%'};return _0x508fde;}})});}_0x476bee=_['merge']({},_0x476bee,_0x554411[_0xc4b7('0x43')]);var _0x35cda6={'where':_0x476bee[_0xc4b7('0x3e')]};return db['ChatTransferReport'][_0xc4b7('0x1f')](_0x35cda6)['then'](function(_0x358bb9){_0xb95ede[_0xc4b7('0x1f')]=_0x358bb9;if(_0x554411['query'][_0xc4b7('0x44')]){_0x476bee[_0xc4b7('0x45')]=[{'all':!![]}];}return db[_0xc4b7('0x2e')]['findAll'](_0x476bee);})[_0xc4b7('0x28')](function(_0x24c38a){_0xb95ede['rows']=_0x24c38a;return _0xb95ede;})['then'](respondWithFilteredResult(_0x8270b2,_0x476bee))[_0xc4b7('0x46')](handleError(_0x8270b2,null));};exports[_0xc4b7('0x47')]=function(_0x4d4659,_0x2465b4){var _0x2d2d12={'raw':!![],'where':{'id':_0x4d4659[_0xc4b7('0x48')]['id']}},_0x3c69d7={};_0x3c69d7[_0xc4b7('0x32')]=_['keys'](db['ChatTransferReport']['rawAttributes']);_0x3c69d7['query']=_['keys'](_0x4d4659[_0xc4b7('0x34')]);_0x3c69d7['filters']=_['intersection'](_0x3c69d7[_0xc4b7('0x32')],_0x3c69d7[_0xc4b7('0x34')]);_0x2d2d12[_0xc4b7('0x38')]=_[_0xc4b7('0x37')](_0x3c69d7[_0xc4b7('0x32')],qs['fields'](_0x4d4659[_0xc4b7('0x34')][_0xc4b7('0x39')]));_0x2d2d12[_0xc4b7('0x38')]=_0x2d2d12[_0xc4b7('0x38')]['length']?_0x2d2d12[_0xc4b7('0x38')]:_0x3c69d7[_0xc4b7('0x32')];if(_0x4d4659['query']['includeAll']){_0x2d2d12[_0xc4b7('0x45')]=[{'all':!![]}];}_0x2d2d12=_[_0xc4b7('0x41')]({},_0x2d2d12,_0x4d4659[_0xc4b7('0x43')]);return db[_0xc4b7('0x2e')][_0xc4b7('0x49')](_0x2d2d12)['then'](handleEntityNotFound(_0x2465b4,null))[_0xc4b7('0x28')](respondWithResult(_0x2465b4,null))['catch'](handleError(_0x2465b4,null));};exports['create']=function(_0x7a2d9f,_0x903145){return db[_0xc4b7('0x2e')][_0xc4b7('0x4a')](_0x7a2d9f['body'],{})[_0xc4b7('0x28')](respondWithResult(_0x903145,0xc9))[_0xc4b7('0x46')](handleError(_0x903145,null));};exports[_0xc4b7('0x27')]=function(_0x1b3b79,_0xd15cc1){if(_0x1b3b79[_0xc4b7('0x4b')]['id']){delete _0x1b3b79[_0xc4b7('0x4b')]['id'];}return db[_0xc4b7('0x2e')][_0xc4b7('0x49')]({'where':{'id':_0x1b3b79[_0xc4b7('0x48')]['id']}})[_0xc4b7('0x28')](handleEntityNotFound(_0xd15cc1,null))['then'](saveUpdates(_0x1b3b79[_0xc4b7('0x4b')],null))[_0xc4b7('0x28')](respondWithResult(_0xd15cc1,null))[_0xc4b7('0x46')](handleError(_0xd15cc1,null));};exports[_0xc4b7('0x4c')]=function(_0x5e2fa3,_0x32f081){return db[_0xc4b7('0x2e')][_0xc4b7('0x49')]({'where':{'id':_0x5e2fa3['params']['id']}})[_0xc4b7('0x28')](handleEntityNotFound(_0x32f081,null))[_0xc4b7('0x28')](removeEntity(_0x32f081,null))[_0xc4b7('0x46')](handleError(_0x32f081,null));};exports[_0xc4b7('0x4d')]=function(_0x3d53c0,_0x2a4408){return db[_0xc4b7('0x2e')][_0xc4b7('0x4d')]()[_0xc4b7('0x28')](respondWithResult(_0x2a4408,null))[_0xc4b7('0x46')](handleError(_0x2a4408,null));};
\ No newline at end of file
index 6489438..26236d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e1=['bluebird','request-promise','rimraf','../../config/environment','./chatTransferReport.attributes','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','api','moment'];(function(_0x38c652,_0x1ea1b7){var _0x218a37=function(_0x5dcb2a){while(--_0x5dcb2a){_0x38c652['push'](_0x38c652['shift']());}};_0x218a37(++_0x1ea1b7);}(_0xf2e1,0x141));var _0x1f2e=function(_0x3ff558,_0x4ce930){_0x3ff558=_0x3ff558-0x0;var _0x2f48d7=_0xf2e1[_0x3ff558];return _0x2f48d7;};'use strict';var _=require(_0x1f2e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1f2e('0x1'));var moment=require(_0x1f2e('0x2'));var BPromise=require(_0x1f2e('0x3'));var rp=require(_0x1f2e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1f2e('0x5'));var config=require(_0x1f2e('0x6'));var attributes=require(_0x1f2e('0x7'));module['exports']=function(_0x5e5e85,_0x24228c){return _0x5e5e85[_0x1f2e('0x8')](_0x1f2e('0x9'),attributes,{'tableName':_0x1f2e('0xa'),'paranoid':![],'indexes':[{'name':_0x1f2e('0xb'),'fields':[_0x1f2e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcf4=['report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','./chatTransferReport.attributes','exports'];(function(_0x452a5d,_0x1709c4){var _0x2f96c2=function(_0x2435c3){while(--_0x2435c3){_0x452a5d['push'](_0x452a5d['shift']());}};_0x2f96c2(++_0x1709c4);}(_0xfcf4,0x91));var _0x4fcf=function(_0x38ead1,_0x305199){_0x38ead1=_0x38ead1-0x0;var _0x4cad8a=_0xfcf4[_0x38ead1];return _0x4cad8a;};'use strict';var _=require(_0x4fcf('0x0'));var util=require(_0x4fcf('0x1'));var logger=require(_0x4fcf('0x2'))(_0x4fcf('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4fcf('0x4'));var fs=require('fs');var path=require(_0x4fcf('0x5'));var rimraf=require(_0x4fcf('0x6'));var config=require('../../config/environment');var attributes=require(_0x4fcf('0x7'));module[_0x4fcf('0x8')]=function(_0x132763,_0x7a720f){return _0x132763['define']('ChatTransferReport',attributes,{'tableName':_0x4fcf('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4fcf('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index ebb1db5..7abe9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x480f=['bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','util'];(function(_0x2837a8,_0x2caef6){var _0x579692=function(_0x1886c1){while(--_0x1886c1){_0x2837a8['push'](_0x2837a8['shift']());}};_0x579692(++_0x2caef6);}(_0x480f,0x1b9));var _0xf480=function(_0x2f7be9,_0x173b28){_0x2f7be9=_0x2f7be9-0x0;var _0x22b2ad=_0x480f[_0x2f7be9];return _0x22b2ad;};'use strict';var _=require('lodash');var util=require(_0xf480('0x0'));var moment=require('moment');var BPromise=require(_0xf480('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf480('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xf480('0x3'));var logger=require(_0xf480('0x4'))(_0xf480('0x5'));var config=require(_0xf480('0x6'));var jayson=require(_0xf480('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x20b31b,_0x2bbdab,_0x1cc344){return new BPromise(function(_0x3975d0,_0x57674c){return client[_0xf480('0x8')](_0x20b31b,_0x1cc344)[_0xf480('0x9')](function(_0x67aab4){logger[_0xf480('0xa')](_0xf480('0xb'),_0x2bbdab,_0xf480('0xc'));logger[_0xf480('0xd')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x2bbdab,_0xf480('0xc'),JSON[_0xf480('0xe')](_0x67aab4));if(_0x67aab4['error']){if(_0x67aab4[_0xf480('0xf')]['code']===0x1f4){logger[_0xf480('0xf')](_0xf480('0xb'),_0x2bbdab,_0x67aab4[_0xf480('0xf')]['message']);return _0x57674c(_0x67aab4[_0xf480('0xf')]['message']);}logger[_0xf480('0xf')](_0xf480('0xb'),_0x2bbdab,_0x67aab4['error'][_0xf480('0x10')]);return _0x3975d0(_0x67aab4['error'][_0xf480('0x10')]);}else{logger[_0xf480('0xa')](_0xf480('0xb'),_0x2bbdab,_0xf480('0xc'));_0x3975d0(_0x67aab4['result'][_0xf480('0x10')]);}})['catch'](function(_0x1e03f7){logger[_0xf480('0xf')](_0xf480('0xb'),_0x2bbdab,_0x1e03f7);_0x57674c(_0x1e03f7);});});}
\ No newline at end of file
+var _0x897e=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','error','code','ChatTransferReport,\x20%s,\x20%s','message'];(function(_0x4ba462,_0x5e0e1f){var _0x14334c=function(_0x5058da){while(--_0x5058da){_0x4ba462['push'](_0x4ba462['shift']());}};_0x14334c(++_0x5e0e1f);}(_0x897e,0x12d));var _0xe897=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x897e[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xe897('0x0'));var util=require('util');var moment=require(_0xe897('0x1'));var BPromise=require(_0xe897('0x2'));var rs=require(_0xe897('0x3'));var fs=require('fs');var Redis=require(_0xe897('0x4'));var db=require(_0xe897('0x5'))['db'];var utils=require(_0xe897('0x6'));var logger=require(_0xe897('0x7'))(_0xe897('0x8'));var config=require(_0xe897('0x9'));var jayson=require(_0xe897('0xa'));var client=jayson['client'][_0xe897('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x421de5,_0x1a62db,_0x5cec12){return new BPromise(function(_0x8adfc6,_0x5d7130){return client[_0xe897('0xc')](_0x421de5,_0x5cec12)[_0xe897('0xd')](function(_0x5bb149){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x1a62db,_0xe897('0xe'));logger[_0xe897('0xf')](_0xe897('0x10'),_0x1a62db,_0xe897('0xe'),JSON['stringify'](_0x5bb149));if(_0x5bb149[_0xe897('0x11')]){if(_0x5bb149[_0xe897('0x11')][_0xe897('0x12')]===0x1f4){logger[_0xe897('0x11')](_0xe897('0x13'),_0x1a62db,_0x5bb149[_0xe897('0x11')]['message']);return _0x5d7130(_0x5bb149[_0xe897('0x11')]['message']);}logger[_0xe897('0x11')](_0xe897('0x13'),_0x1a62db,_0x5bb149[_0xe897('0x11')][_0xe897('0x14')]);return _0x8adfc6(_0x5bb149['error']['message']);}else{logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x1a62db,_0xe897('0xe'));_0x8adfc6(_0x5bb149[_0xe897('0x15')][_0xe897('0x14')]);}})[_0xe897('0x16')](function(_0x1b4e48){logger[_0xe897('0x11')](_0xe897('0x13'),_0x1a62db,_0x1b4e48);_0x5d7130(_0x1b4e48);});});}
\ No newline at end of file
index ec65412..b1ad271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f42=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x2250f0,_0x5e49a4){var _0x205b3a=function(_0x3b4f92){while(--_0x3b4f92){_0x2250f0['push'](_0x2250f0['shift']());}};_0x205b3a(++_0x5e49a4);}(_0x6f42,0x97));var _0x26f4=function(_0x569caa,_0x5174ce){_0x569caa=_0x569caa-0x0;var _0x44cb5a=_0x6f42[_0x569caa];return _0x44cb5a;};'use strict';var multer=require(_0x26f4('0x0'));var util=require(_0x26f4('0x1'));var path=require('path');var timeout=require(_0x26f4('0x2'));var express=require(_0x26f4('0x3'));var router=express[_0x26f4('0x4')]();var fs_extra=require(_0x26f4('0x5'));var auth=require(_0x26f4('0x6'));var interaction=require(_0x26f4('0x7'));var config=require('../../config/environment');var controller=require(_0x26f4('0x8'));router['get']('/',auth[_0x26f4('0x9')](),controller[_0x26f4('0xa')]);router['get'](_0x26f4('0xb'),auth[_0x26f4('0x9')](),controller[_0x26f4('0xc')]);router['get'](_0x26f4('0xd'),auth[_0x26f4('0x9')](),controller[_0x26f4('0xe')]);router[_0x26f4('0xf')]('/',auth[_0x26f4('0x9')](),controller[_0x26f4('0x10')]);router[_0x26f4('0x11')](_0x26f4('0xd'),auth['isAuthenticated'](),controller[_0x26f4('0x12')]);router[_0x26f4('0x13')](_0x26f4('0xd'),auth['isAuthenticated'](),controller[_0x26f4('0x14')]);module[_0x26f4('0x15')]=router;
\ No newline at end of file
+var _0xd485=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','isAuthenticated','index','/describe','describe','show','post','create','put','update','/:id','destroy','exports','multer','util'];(function(_0x17cec0,_0x3841fe){var _0x13e5f5=function(_0x37d480){while(--_0x37d480){_0x17cec0['push'](_0x17cec0['shift']());}};_0x13e5f5(++_0x3841fe);}(_0xd485,0x1a2));var _0x5d48=function(_0x3afb26,_0x4cb942){_0x3afb26=_0x3afb26-0x0;var _0x4504d9=_0xd485[_0x3afb26];return _0x4504d9;};'use strict';var multer=require(_0x5d48('0x0'));var util=require(_0x5d48('0x1'));var path=require('path');var timeout=require(_0x5d48('0x2'));var express=require('express');var router=express[_0x5d48('0x3')]();var fs_extra=require(_0x5d48('0x4'));var auth=require(_0x5d48('0x5'));var interaction=require(_0x5d48('0x6'));var config=require('../../config/environment');var controller=require(_0x5d48('0x7'));router['get']('/',auth[_0x5d48('0x8')](),controller[_0x5d48('0x9')]);router['get'](_0x5d48('0xa'),auth['isAuthenticated'](),controller[_0x5d48('0xb')]);router['get']('/:id',auth[_0x5d48('0x8')](),controller[_0x5d48('0xc')]);router[_0x5d48('0xd')]('/',auth[_0x5d48('0x8')](),controller[_0x5d48('0xe')]);router[_0x5d48('0xf')]('/:id',auth[_0x5d48('0x8')](),controller[_0x5d48('0x10')]);router['delete'](_0x5d48('0x11'),auth[_0x5d48('0x8')](),controller[_0x5d48('0x12')]);module[_0x5d48('0x13')]=router;
\ No newline at end of file
index 119dc51..8bd9f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['text','getDataValue','onlineForm','setDataValue','stringify','Comments','Leave\x20your\x20comments','offlineForm','parse','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','STRING','address','email','Agent','#011F6A','#ffffff','BOOLEAN','squared','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','ENUM','star','thumb','input','name'];(function(_0x55811c,_0x137d08){var _0x181d13=function(_0x401e6c){while(--_0x401e6c){_0x55811c['push'](_0x55811c['shift']());}};_0x181d13(++_0x137d08);}(_0x5ff3,0x17d));var _0x35ff=function(_0x332990,_0x1fa40c){_0x332990=_0x332990-0x0;var _0x32eb0c=_0x5ff3[_0x332990];return _0x32eb0c;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x35ff('0x0'));module['exports']={'name':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x35ff('0x2')},'description':{'type':Sequelize[_0x35ff('0x1')]},'mapKey':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0x3')},'key':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x4')},'customerAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':_0x35ff('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x35ff('0x1')]},'animation':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0x35ff('0x8')),'defaultValue':'rounded'},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x9')},'offline_chat_button':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xa')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xb')},'download_transcript':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x35ff('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x35ff('0xe')]},'closingQuestion':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x11')},'noteTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x12')},'placeholderMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x13')},'closingMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xa')},'skipMessageButton':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x15')},'conditionAgreement':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x35ff('0x16')](_0x35ff('0x17'),_0x35ff('0x18')),'defaultValue':_0x35ff('0x17')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x35ff('0x19'),'variable':null,'config':{'placeholder':_0x35ff('0x1a'),'type':_0x35ff('0x1b'),'required':!![]},'props':{'title':_0x35ff('0x1a'),'helpText':''}},{'type':_0x35ff('0x19'),'props':{'title':_0x35ff('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x35ff('0x3'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x35ff('0x1c')](_0x35ff('0x1d'))?JSON['parse'](this[_0x35ff('0x1c')]('onlineForm')):{};},'set':function(_0x4c46b7){return this[_0x35ff('0x1e')](_0x35ff('0x1d'),JSON[_0x35ff('0x1f')](_0x4c46b7));}},'offlineForm':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return JSON[_0x35ff('0x1f')]({'items':[{'type':'input','props':{'title':_0x35ff('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x35ff('0x3'),'type':_0x35ff('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0x35ff('0x20')},'props':{'title':_0x35ff('0x20'),'helpText':_0x35ff('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x35ff('0x1c')](_0x35ff('0x22'))?JSON[_0x35ff('0x23')](this[_0x35ff('0x1c')](_0x35ff('0x22'))):{};},'set':function(_0x105e58){return this['setDataValue'](_0x35ff('0x22'),JSON['stringify'](_0x105e58));}},'token':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':function(){return rs[_0x35ff('0x24')]();}},'autoclose':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x35ff('0x1')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x35ff('0x1')]},'waitingTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x27')},'skipUnmanaged':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x15')},'sendUnmanaged':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xa')},'enableCustomerAttachment':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x35ff('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x35ff('0x1')]},'notificationTemplate':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return _0x35ff('0x28');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2a')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2b')},'messagesAlignment':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2c')},'defaultTitle':{'type':Sequelize[_0x35ff('0x1')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x35ff('0xc')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2d')},'systemAvatar':{'type':Sequelize[_0x35ff('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x35ff('0xc')],'comment':_0x35ff('0x2e')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x550c09){if(!_0x550c09)this[_0x35ff('0x1e')](_0x35ff('0x2f'),null);this[_0x35ff('0x1e')](_0x35ff('0x30'),_0x550c09);}},'vidaooEscalation':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':_0x35ff('0x31')},'vidaooNote':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':function(){return _0x35ff('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xe14d=['thumb','stringify','input','name','text','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','offlineForm','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','star'];(function(_0x59fd89,_0x1429b7){var _0x443037=function(_0x50053e){while(--_0x50053e){_0x59fd89['push'](_0x59fd89['shift']());}};_0x443037(++_0x1429b7);}(_0xe14d,0x1ee));var _0xde14=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xe14d[_0xdea41a];return _0x15d0d8;};'use strict';var Sequelize=require(_0xde14('0x0'));var rs=require(_0xde14('0x1'));module[_0xde14('0x2')]={'name':{'type':Sequelize[_0xde14('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xde14('0x4')},'description':{'type':Sequelize[_0xde14('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x5')},'mapKeyOffline':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x5')},'key':{'type':Sequelize[_0xde14('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xde14('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x8'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xde14('0xb')](_0xde14('0xc'),_0xde14('0xd')),'defaultValue':_0xde14('0xc')},'header_online':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0xe')},'start_chat_button':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0xf')},'offline_chat_button':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x10')},'header_offline':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x11')},'download_transcript':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xde14('0x12')]},'closingQuestion':{'type':Sequelize[_0xde14('0x3')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x14')},'noteTitle':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x15')},'placeholderMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x16')},'closingMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x17')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x10')},'skipMessageButton':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x18')},'conditionAgreement':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xde14('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0xde14('0xb')](_0xde14('0x19'),_0xde14('0x1a')),'defaultValue':_0xde14('0x19')},'ratingStarsNumber':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xde14('0x12')],'defaultValue':function(){return JSON[_0xde14('0x1b')]({'items':[{'type':_0xde14('0x1c'),'variable':null,'config':{'placeholder':_0xde14('0x1d'),'type':_0xde14('0x1e'),'required':!![]},'props':{'title':_0xde14('0x1d'),'helpText':''}},{'type':_0xde14('0x1c'),'props':{'title':_0xde14('0x5'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xde14('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xde14('0x1f')](_0xde14('0x20'))?JSON[_0xde14('0x21')](this[_0xde14('0x1f')](_0xde14('0x20'))):{};},'set':function(_0x310d75){return this[_0xde14('0x22')](_0xde14('0x20'),JSON[_0xde14('0x1b')](_0x310d75));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xde14('0x1b')]({'items':[{'type':_0xde14('0x1c'),'props':{'title':_0xde14('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0xde14('0x5'),'type':'email'},'variable':null},{'type':_0xde14('0x23'),'config':{'placeholder':_0xde14('0x24')},'props':{'title':_0xde14('0x24'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xde14('0x1f')]('offlineForm')?JSON[_0xde14('0x21')](this[_0xde14('0x1f')](_0xde14('0x25'))):{};},'set':function(_0x1e7906){return this[_0xde14('0x22')](_0xde14('0x25'),JSON[_0xde14('0x1b')](_0x1e7906));}},'token':{'type':Sequelize[_0xde14('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xde14('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xde14('0x3')]},'waitingTitle':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x26')},'waitingMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x27')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x28')},'offlineMessageBody':{'type':Sequelize[_0xde14('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x29')},'skipUnmanaged':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x18')},'sendUnmanaged':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x10')},'enableCustomerAttachment':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xde14('0x3')]},'notificationTemplate':{'type':Sequelize[_0xde14('0x12')],'defaultValue':function(){return _0xde14('0x2a');}},'notificationSound':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0xde14('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x2c')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x2d')},'defaultTitle':{'type':Sequelize[_0xde14('0x3')]},'customerAvatar':{'type':Sequelize[_0xde14('0x12')]},'showCustomerAvatar':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xde14('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xde14('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x2f')},'systemAvatar':{'type':Sequelize[_0xde14('0x12')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xde14('0x9')],'comment':_0xde14('0x30')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xde14('0x31'),'set':function(_0xb6b2ee){if(!_0xb6b2ee)this[_0xde14('0x22')](_0xde14('0x32'),null);this['setDataValue']('mandatoryDisposition',_0xb6b2ee);}},'vidaooEscalation':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xde14('0x3')]},'vidaooTopic':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x33')},'vidaooNote':{'type':Sequelize[_0xde14('0x3')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xde14('0x12')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xde14('0x12')]}};
\ No newline at end of file
index f07244b..15aa0fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc775=['notify','user-agent-parser','setUA','user-agent','getResult','chat','Sequelize','ValidationError','difference','updatedAt','createdAt','ListId','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','CmContact','Contacts','DESC','ChatApplication','Applications','account','applications','list','priority','asc','contact','headers','cf-connecting-ip','x-forwarded-for','first','split','lastName','x-real-port','referer','browser','format','%s\x20%s','version','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','files','no\x20available\x20attributes','CompanyId','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','originalname','mimetype','toPairsIn','mapValues','subjectOffline','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s','interval','indexOf','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','Interval','Intervals','virtual','increment','chatLicenseExceeded','all','some','utf8','address','origin','3.1.0','remote','connection','remoteAddress','replace','alignment','labelText','textColor','textButtonColor','color_button','IntervalId','addApplications','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','finally','getApplications','chatProactiveAction','addProactiveActions','getProactiveActions','ChatProactiveAction','online','false','offlineForm','items','fromKey','getOfflineMessages','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','mustache','util','path','lodash','querystring','../../components/parsers/qs','../../config/logger','api','../../config/environment','url','redis','defaults','localhost','./chatWebsite.socket','register','jayson/promise','client','http','request','then','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','info','result','catch','status','end','json','undefined','limit','offset','set','Content-Range','update','destroy','get','ChatWebsites','UserProfileResource','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show','rawAttributes','fields','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','ChatWebsiteId','Disposition','getDispositions','filter','removeDispositions','ids','CannedAnswer','findOne','removeAnswers','file','filename','addAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','sitepic','../../config/license/util','getLicense','custom','server/files/images/logos/','agentAvatar','isNil','existsSync','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png'];(function(_0x555140,_0x3e169f){var _0x5afbe9=function(_0x4f61ce){while(--_0x4f61ce){_0x555140['push'](_0x555140['shift']());}};_0x5afbe9(++_0x3e169f);}(_0xc775,0xb8));var _0x5c77=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xc775[_0x21a9d9];return _0x46adce;};'use strict';var BPromise=require('bluebird');var Mustache=require(_0x5c77('0x0'));var util=require(_0x5c77('0x1'));var path=require(_0x5c77('0x2'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5c77('0x3'));var querystring=require(_0x5c77('0x4'));var Redis=require('ioredis');var qs=require(_0x5c77('0x5'));var logger=require(_0x5c77('0x6'))(_0x5c77('0x7'));var config=require(_0x5c77('0x8'));var url=require(_0x5c77('0x9'));var db=require('../../mysqldb')['db'];config[_0x5c77('0xa')]=_[_0x5c77('0xb')](config[_0x5c77('0xa')],{'host':_0x5c77('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5c77('0xa')]));require(_0x5c77('0xd'))[_0x5c77('0xe')](socket);var htmlToText=require('html-to-text');var jayson=require(_0x5c77('0xf'));var client=jayson[_0x5c77('0x10')][_0x5c77('0x11')]({'port':0x232c});var client9002=jayson['client'][_0x5c77('0x11')]({'port':0x232a});var client9003=jayson['client'][_0x5c77('0x11')]({'port':0x232b});var client9001=jayson['client']['http']({'port':0x2329});function respondWithRpcPromise(_0x328288,_0x3460d0,_0x2a9fb4,_0x50195b){return new BPromise(function(_0x382928,_0x516e42){var _0x2f05ab=_0x50195b||client;return _0x2f05ab[_0x5c77('0x12')](_0x328288,_0x2a9fb4)[_0x5c77('0x13')](function(_0x33282d){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x3460d0,_0x5c77('0x14'));logger['debug'](_0x5c77('0x15'),_0x3460d0,_0x5c77('0x14'),JSON[_0x5c77('0x16')](_0x33282d));if(_0x33282d[_0x5c77('0x17')]){if(_0x33282d[_0x5c77('0x17')][_0x5c77('0x18')]===0x1f4){logger[_0x5c77('0x17')](_0x5c77('0x19'),_0x3460d0,_0x33282d[_0x5c77('0x17')][_0x5c77('0x1a')]);return _0x516e42(_0x33282d[_0x5c77('0x17')][_0x5c77('0x1a')]);}logger[_0x5c77('0x17')](_0x5c77('0x19'),_0x3460d0,_0x33282d[_0x5c77('0x17')][_0x5c77('0x1a')]);return _0x382928(_0x33282d['error'][_0x5c77('0x1a')]);}else{logger[_0x5c77('0x1b')]('ChatWebsite,\x20%s,\x20%s',_0x3460d0,'request\x20sent');_0x382928(_0x33282d[_0x5c77('0x1c')][_0x5c77('0x1a')]);}})[_0x5c77('0x1d')](function(_0x17196d){logger['error'](_0x5c77('0x19'),_0x3460d0,_0x17196d);_0x516e42(_0x17196d);});});}function respondWithStatusCode(_0x3ce216,_0xddeac4){_0xddeac4=_0xddeac4||0xcc;return function(_0x5365b2){if(_0x5365b2){return _0x3ce216['sendStatus'](_0xddeac4);}return _0x3ce216[_0x5c77('0x1e')](_0xddeac4)[_0x5c77('0x1f')]();};}function respondWithResult(_0xee25fd,_0x26c9e6){_0x26c9e6=_0x26c9e6||0xc8;return function(_0x4ad643){if(_0x4ad643){return _0xee25fd[_0x5c77('0x1e')](_0x26c9e6)[_0x5c77('0x20')](_0x4ad643);}};}function respondWithFilteredResult(_0x5babdf,_0x37a649){return function(_0x468b06){if(_0x468b06){var _0x59e493=typeof _0x37a649['offset']===_0x5c77('0x21')&&typeof _0x37a649[_0x5c77('0x22')]===_0x5c77('0x21');var _0x3b3ac6=_0x468b06['count'];var _0x566c49=_0x59e493?0x0:_0x37a649[_0x5c77('0x23')];var _0xa0cff8=_0x59e493?_0x468b06['count']:_0x37a649[_0x5c77('0x23')]+_0x37a649[_0x5c77('0x22')];var _0x5b7983;if(_0xa0cff8>=_0x3b3ac6){_0xa0cff8=_0x3b3ac6;_0x5b7983=0xc8;}else{_0x5b7983=0xce;}_0x5babdf[_0x5c77('0x1e')](_0x5b7983);return _0x5babdf[_0x5c77('0x24')](_0x5c77('0x25'),_0x566c49+'-'+_0xa0cff8+'/'+_0x3b3ac6)['json'](_0x468b06);}return null;};}function saveUpdates(_0xf7798f){return function(_0xb3440e){if(_0xb3440e){return _0xb3440e[_0x5c77('0x26')](_0xf7798f)[_0x5c77('0x13')](function(_0x3cb934){return _0x3cb934;});}return null;};}function removeEntity(_0x5d7230){return function(_0x7f36ed){if(_0x7f36ed){return _0x7f36ed[_0x5c77('0x27')]()[_0x5c77('0x13')](function(){var _0x5795bb=_0x7f36ed[_0x5c77('0x28')]({'plain':!![]});var _0x27a3d1=_0x5c77('0x29');return db[_0x5c77('0x2a')][_0x5c77('0x27')]({'where':{'type':_0x27a3d1,'resourceId':_0x5795bb['id']}})[_0x5c77('0x13')](function(){return _0x7f36ed;});})['then'](function(){_0x5d7230[_0x5c77('0x1e')](0xcc)[_0x5c77('0x1f')]();});}};}function handleEntityNotFound(_0x4cb970){return function(_0x2a21bc){if(!_0x2a21bc){_0x4cb970[_0x5c77('0x2b')](0x194);}return _0x2a21bc;};}function handleError(_0x2da692,_0x515326){_0x515326=_0x515326||0x1f4;return function(_0x3ca0d3){logger[_0x5c77('0x17')](_0x3ca0d3[_0x5c77('0x2c')]);if(_0x3ca0d3[_0x5c77('0x2d')]){delete _0x3ca0d3[_0x5c77('0x2d')];}_0x2da692[_0x5c77('0x1e')](_0x515326)[_0x5c77('0x2e')](_0x3ca0d3);};}exports[_0x5c77('0x2f')]=function(_0x36b1cb,_0x59b8de){var _0x230c69={'include':[{'model':db[_0x5c77('0x30')],'as':_0x5c77('0x31')}]},_0x1415b1={},_0x477346={'count':0x0,'rows':[]};var _0x8b9216=_[_0x5c77('0x32')](db[_0x5c77('0x33')]['rawAttributes'],function(_0x15e62e){return{'name':_0x15e62e[_0x5c77('0x34')],'type':_0x15e62e[_0x5c77('0x35')][_0x5c77('0x36')]};});_0x1415b1[_0x5c77('0x37')]=_[_0x5c77('0x32')](_0x8b9216,_0x5c77('0x2d'));_0x1415b1[_0x5c77('0x38')]=_[_0x5c77('0x39')](_0x36b1cb['query']);_0x1415b1[_0x5c77('0x3a')]=_['intersection'](_0x1415b1['model'],_0x1415b1[_0x5c77('0x38')]);_0x230c69[_0x5c77('0x3b')]=_[_0x5c77('0x3c')](_0x1415b1['model'],qs['fields'](_0x36b1cb[_0x5c77('0x38')]['fields']));_0x230c69['attributes']=_0x230c69[_0x5c77('0x3b')][_0x5c77('0x3d')]?_0x230c69[_0x5c77('0x3b')]:_0x1415b1['model'];if(!_0x36b1cb['query'][_0x5c77('0x3e')](_0x5c77('0x3f'))){_0x230c69[_0x5c77('0x22')]=qs['limit'](_0x36b1cb['query'][_0x5c77('0x22')]);_0x230c69[_0x5c77('0x23')]=qs['offset'](_0x36b1cb[_0x5c77('0x38')][_0x5c77('0x23')]);}_0x230c69[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x36b1cb[_0x5c77('0x38')][_0x5c77('0x41')]);_0x230c69[_0x5c77('0x42')]=qs[_0x5c77('0x3a')](_[_0x5c77('0x43')](_0x36b1cb['query'],_0x1415b1[_0x5c77('0x3a')]),_0x8b9216);if(_0x36b1cb[_0x5c77('0x38')]['filter']){_0x230c69[_0x5c77('0x42')]=_[_0x5c77('0x44')](_0x230c69[_0x5c77('0x42')],{'$or':_[_0x5c77('0x32')](_0x8b9216,function(_0xe41068){if(_0xe41068['type']!==_0x5c77('0x45')){var _0x1f7d1e={};_0x1f7d1e[_0xe41068['name']]={'$like':'%'+_0x36b1cb[_0x5c77('0x38')]['filter']+'%'};return _0x1f7d1e;}})});}_0x230c69=_[_0x5c77('0x44')]({},_0x230c69,_0x36b1cb[_0x5c77('0x46')]);var _0x5d8157={'where':_0x230c69[_0x5c77('0x42')]};return db['ChatWebsite'][_0x5c77('0x47')](_0x5d8157)[_0x5c77('0x13')](function(_0x5925b1){_0x477346[_0x5c77('0x47')]=_0x5925b1;if(_0x36b1cb[_0x5c77('0x38')][_0x5c77('0x48')]){_0x230c69[_0x5c77('0x49')]=[{'all':!![]}];}return db['ChatWebsite'][_0x5c77('0x4a')](_0x230c69);})['then'](function(_0x385b2d){_0x477346[_0x5c77('0x4b')]=_0x385b2d;return _0x477346;})[_0x5c77('0x13')](respondWithFilteredResult(_0x59b8de,_0x230c69))[_0x5c77('0x1d')](handleError(_0x59b8de,null));};exports[_0x5c77('0x4c')]=function(_0x28ce15,_0x33260b){var _0x5aabf3={'raw':![],'where':{'id':_0x28ce15['params']['id']},'include':[{'model':db[_0x5c77('0x30')],'as':_0x5c77('0x31')}]},_0x497642={};_0x497642[_0x5c77('0x37')]=_[_0x5c77('0x39')](db[_0x5c77('0x33')][_0x5c77('0x4d')]);_0x497642[_0x5c77('0x38')]=_[_0x5c77('0x39')](_0x28ce15[_0x5c77('0x38')]);_0x497642[_0x5c77('0x3a')]=_[_0x5c77('0x3c')](_0x497642[_0x5c77('0x37')],_0x497642[_0x5c77('0x38')]);_0x5aabf3[_0x5c77('0x3b')]=_[_0x5c77('0x3c')](_0x497642['model'],qs[_0x5c77('0x4e')](_0x28ce15['query']['fields']));_0x5aabf3[_0x5c77('0x3b')]=_0x5aabf3[_0x5c77('0x3b')][_0x5c77('0x3d')]?_0x5aabf3[_0x5c77('0x3b')]:_0x497642[_0x5c77('0x37')];if(_0x28ce15['query'][_0x5c77('0x48')]){_0x5aabf3[_0x5c77('0x49')]=[{'all':!![]}];}_0x5aabf3=_[_0x5c77('0x44')]({},_0x5aabf3,_0x28ce15[_0x5c77('0x46')]);return db[_0x5c77('0x33')][_0x5c77('0x4f')](_0x5aabf3)['then'](handleEntityNotFound(_0x33260b,null))[_0x5c77('0x13')](respondWithResult(_0x33260b,null))[_0x5c77('0x1d')](handleError(_0x33260b,null));};exports[_0x5c77('0x50')]=function(_0x218ac5,_0x55aaf0){return db[_0x5c77('0x33')][_0x5c77('0x50')](_0x218ac5[_0x5c77('0x51')],{})['then'](function(_0x401ee2){var _0x107dfd=_0x218ac5[_0x5c77('0x52')][_0x5c77('0x28')]({'plain':!![]});if(!_0x107dfd)throw new Error(_0x5c77('0x53'));if(_0x107dfd[_0x5c77('0x54')]===_0x5c77('0x52')){var _0x195413=_0x401ee2[_0x5c77('0x28')]({'plain':!![]});var _0x146862=_0x5c77('0x29');return db[_0x5c77('0x55')][_0x5c77('0x4f')]({'where':{'name':_0x146862,'userProfileId':_0x107dfd['userProfileId']},'raw':!![]})[_0x5c77('0x13')](function(_0xf79944){if(_0xf79944&&_0xf79944[_0x5c77('0x56')]===0x0){return db[_0x5c77('0x2a')]['create']({'name':_0x195413['name'],'resourceId':_0x195413['id'],'type':_0xf79944[_0x5c77('0x2d')],'sectionId':_0xf79944['id']},{})[_0x5c77('0x13')](function(){return _0x401ee2;});}else{return _0x401ee2;}})[_0x5c77('0x1d')](function(_0x1ba3dd){logger[_0x5c77('0x17')](_0x5c77('0x57'),_0x1ba3dd);throw _0x1ba3dd;});}return _0x401ee2;})[_0x5c77('0x13')](respondWithResult(_0x55aaf0,0xc9))[_0x5c77('0x1d')](handleError(_0x55aaf0,null));};exports['update']=function(_0x282d26,_0x58ada8){if(_0x282d26['body']['id']){delete _0x282d26[_0x5c77('0x51')]['id'];}return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x282d26[_0x5c77('0x58')]['id']},'include':[{'model':db[_0x5c77('0x30')],'as':_0x5c77('0x31')}]})['then'](handleEntityNotFound(_0x58ada8,null))['then'](saveUpdates(_0x282d26[_0x5c77('0x51')],null))[_0x5c77('0x13')](respondWithResult(_0x58ada8,null))[_0x5c77('0x1d')](handleError(_0x58ada8,null));};exports[_0x5c77('0x27')]=function(_0xc7696b,_0x44cc08){return db[_0x5c77('0x33')]['find']({'where':{'id':_0xc7696b[_0x5c77('0x58')]['id']}})['then'](handleEntityNotFound(_0x44cc08,null))[_0x5c77('0x13')](removeEntity(_0x44cc08,null))[_0x5c77('0x1d')](handleError(_0x44cc08,null));};exports[_0x5c77('0x59')]=function(_0x3a9093,_0x36b3ce){return db[_0x5c77('0x33')][_0x5c77('0x59')]()[_0x5c77('0x13')](respondWithResult(_0x36b3ce,null))[_0x5c77('0x1d')](handleError(_0x36b3ce,null));};exports[_0x5c77('0x5a')]=function(_0x4c7cef,_0x3797fe){if(_0x4c7cef['body']['id']){delete _0x4c7cef[_0x5c77('0x51')]['id'];}return db['ChatWebsite'][_0x5c77('0x4f')]({'where':{'id':_0x4c7cef[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x3797fe,null))[_0x5c77('0x13')](function(_0x1ae776){if(_0x1ae776){_0x4c7cef['body'][_0x5c77('0x5b')]=_0x1ae776['id'];return db[_0x5c77('0x5c')][_0x5c77('0x50')](_0x4c7cef[_0x5c77('0x51')]);}})['then'](respondWithResult(_0x3797fe,null))[_0x5c77('0x1d')](handleError(_0x3797fe,null));};exports[_0x5c77('0x5d')]=function(_0x5d1b8c,_0x2b345c){var _0x327bbc={'raw':![],'where':{}};var _0x43c21b={};var _0x277e1f={'count':0x0,'rows':[]};return db[_0x5c77('0x33')]['findOne']({'where':{'id':_0x5d1b8c[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x2b345c,null))[_0x5c77('0x13')](function(_0x5449f9){if(_0x5449f9){_0x43c21b[_0x5c77('0x37')]=_['keys'](db[_0x5c77('0x5c')][_0x5c77('0x4d')]);_0x43c21b[_0x5c77('0x38')]=_['keys'](_0x5d1b8c['query']);_0x43c21b[_0x5c77('0x3a')]=_[_0x5c77('0x3c')](_0x43c21b[_0x5c77('0x37')],_0x43c21b['query']);_0x327bbc['attributes']=_[_0x5c77('0x3c')](_0x43c21b[_0x5c77('0x37')],qs[_0x5c77('0x4e')](_0x5d1b8c[_0x5c77('0x38')][_0x5c77('0x4e')]));_0x327bbc[_0x5c77('0x3b')]=_0x327bbc[_0x5c77('0x3b')][_0x5c77('0x3d')]?_0x327bbc[_0x5c77('0x3b')]:_0x43c21b[_0x5c77('0x37')];if(!_0x5d1b8c[_0x5c77('0x38')]['hasOwnProperty'](_0x5c77('0x3f'))){_0x327bbc[_0x5c77('0x22')]=qs[_0x5c77('0x22')](_0x5d1b8c[_0x5c77('0x38')][_0x5c77('0x22')]);_0x327bbc['offset']=qs[_0x5c77('0x23')](_0x5d1b8c['query'][_0x5c77('0x23')]);}_0x327bbc[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x5d1b8c['query'][_0x5c77('0x41')]);_0x327bbc['where']=qs[_0x5c77('0x3a')](_[_0x5c77('0x43')](_0x5d1b8c['query'],_0x43c21b[_0x5c77('0x3a')]));_0x327bbc[_0x5c77('0x42')][_0x5c77('0x5b')]=_0x5449f9['id'];if(_0x5d1b8c['query'][_0x5c77('0x5e')]){_0x327bbc['where']=_[_0x5c77('0x44')](_0x327bbc[_0x5c77('0x42')],{'$or':_[_0x5c77('0x32')](_0x327bbc['attributes'],function(_0x1aab0c){var _0x378af9={};_0x378af9[_0x1aab0c]={'$like':'%'+_0x5d1b8c[_0x5c77('0x38')]['filter']+'%'};return _0x378af9;})});}_0x327bbc=_['merge']({},_0x327bbc,_0x5d1b8c[_0x5c77('0x46')]);return db[_0x5c77('0x5c')][_0x5c77('0x47')]({'where':_0x327bbc['where']})[_0x5c77('0x13')](function(_0xcef8bb){_0x277e1f[_0x5c77('0x47')]=_0xcef8bb;if(_0x5d1b8c['query'][_0x5c77('0x48')]){_0x327bbc[_0x5c77('0x49')]=[{'all':!![]}];}return db[_0x5c77('0x5c')][_0x5c77('0x4a')](_0x327bbc);})['then'](function(_0x27272a){_0x277e1f[_0x5c77('0x4b')]=_0x27272a;return _0x277e1f;});}})[_0x5c77('0x13')](respondWithFilteredResult(_0x2b345c,_0x327bbc))[_0x5c77('0x1d')](handleError(_0x2b345c,null));};exports[_0x5c77('0x5f')]=function(_0x52c54e,_0x4a2692){return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x52c54e[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x4a2692,null))[_0x5c77('0x13')](function(_0x15ad60){if(_0x15ad60){return _0x15ad60[_0x5c77('0x5f')](_0x52c54e[_0x5c77('0x38')][_0x5c77('0x60')]);}})[_0x5c77('0x13')](respondWithStatusCode(_0x4a2692,null))[_0x5c77('0x1d')](handleError(_0x4a2692,null));};exports['addAnswer']=function(_0x1dfcf6,_0xbf1a3f){if(_0x1dfcf6['body']['id']){delete _0x1dfcf6[_0x5c77('0x51')]['id'];}return db[_0x5c77('0x33')]['find']({'where':{'id':_0x1dfcf6['params']['id']}})['then'](handleEntityNotFound(_0xbf1a3f,null))['then'](function(_0x3759a8){if(_0x3759a8){_0x1dfcf6['body'][_0x5c77('0x5b')]=_0x3759a8['id'];return db[_0x5c77('0x61')][_0x5c77('0x50')](_0x1dfcf6[_0x5c77('0x51')]);}})[_0x5c77('0x13')](respondWithResult(_0xbf1a3f,null))['catch'](handleError(_0xbf1a3f,null));};exports['getAnswers']=function(_0x447f68,_0x48c384){var _0x176931={'raw':![],'where':{}};var _0x3e76eb={};var _0x92232={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x5c77('0x62')]({'where':{'id':_0x447f68['params']['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x48c384,null))[_0x5c77('0x13')](function(_0x178b68){if(_0x178b68){_0x3e76eb[_0x5c77('0x37')]=_[_0x5c77('0x39')](db[_0x5c77('0x61')][_0x5c77('0x4d')]);_0x3e76eb[_0x5c77('0x38')]=_['keys'](_0x447f68['query']);_0x3e76eb[_0x5c77('0x3a')]=_[_0x5c77('0x3c')](_0x3e76eb['model'],_0x3e76eb[_0x5c77('0x38')]);_0x176931['attributes']=_[_0x5c77('0x3c')](_0x3e76eb[_0x5c77('0x37')],qs['fields'](_0x447f68[_0x5c77('0x38')][_0x5c77('0x4e')]));_0x176931[_0x5c77('0x3b')]=_0x176931[_0x5c77('0x3b')][_0x5c77('0x3d')]?_0x176931[_0x5c77('0x3b')]:_0x3e76eb[_0x5c77('0x37')];if(!_0x447f68[_0x5c77('0x38')]['hasOwnProperty'](_0x5c77('0x3f'))){_0x176931[_0x5c77('0x22')]=qs[_0x5c77('0x22')](_0x447f68[_0x5c77('0x38')][_0x5c77('0x22')]);_0x176931[_0x5c77('0x23')]=qs[_0x5c77('0x23')](_0x447f68[_0x5c77('0x38')]['offset']);}_0x176931['order']=qs[_0x5c77('0x41')](_0x447f68[_0x5c77('0x38')]['sort']);_0x176931[_0x5c77('0x42')]=qs['filters'](_['pick'](_0x447f68[_0x5c77('0x38')],_0x3e76eb[_0x5c77('0x3a')]));_0x176931[_0x5c77('0x42')]['ChatWebsiteId']=_0x178b68['id'];if(_0x447f68['query'][_0x5c77('0x5e')]){_0x176931[_0x5c77('0x42')]=_[_0x5c77('0x44')](_0x176931['where'],{'$or':_[_0x5c77('0x32')](_0x176931['attributes'],function(_0x177bb6){var _0x44c001={};_0x44c001[_0x177bb6]={'$like':'%'+_0x447f68[_0x5c77('0x38')][_0x5c77('0x5e')]+'%'};return _0x44c001;})});}_0x176931=_[_0x5c77('0x44')]({},_0x176931,_0x447f68[_0x5c77('0x46')]);return db['CannedAnswer']['count']({'where':_0x176931[_0x5c77('0x42')]})['then'](function(_0x572def){_0x92232[_0x5c77('0x47')]=_0x572def;if(_0x447f68[_0x5c77('0x38')]['includeAll']){_0x176931[_0x5c77('0x49')]=[{'all':!![]}];}return db[_0x5c77('0x61')]['findAll'](_0x176931);})['then'](function(_0x1bf22b){_0x92232[_0x5c77('0x4b')]=_0x1bf22b;return _0x92232;});}})[_0x5c77('0x13')](respondWithFilteredResult(_0x48c384,_0x176931))[_0x5c77('0x1d')](handleError(_0x48c384,null));};exports[_0x5c77('0x63')]=function(_0x5c78dd,_0x183c28){return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x5c78dd['params']['id']}})['then'](handleEntityNotFound(_0x183c28,null))[_0x5c77('0x13')](function(_0x368a00){if(_0x368a00){return _0x368a00[_0x5c77('0x63')](_0x5c78dd[_0x5c77('0x38')][_0x5c77('0x60')]);}})[_0x5c77('0x13')](respondWithStatusCode(_0x183c28,null))[_0x5c77('0x1d')](handleError(_0x183c28,null));};exports['addLogo']=function(_0x5423e7,_0x2f0e0e){_0x5423e7[_0x5c77('0x51')]['sitepic']=_0x5423e7[_0x5c77('0x64')][_0x5c77('0x65')];return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x5423e7[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x2f0e0e,null))[_0x5c77('0x13')](saveUpdates(_0x5423e7[_0x5c77('0x51')],null))[_0x5c77('0x13')](respondWithResult(_0x2f0e0e,null))[_0x5c77('0x1d')](handleError(_0x2f0e0e,null));};exports[_0x5c77('0x66')]=function(_0x4d0ef8,_0x29f9cd){_0x4d0ef8[_0x5c77('0x51')]['agentAvatar']=_0x4d0ef8[_0x5c77('0x64')][_0x5c77('0x65')];return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x4d0ef8[_0x5c77('0x58')]['id']}})['then'](handleEntityNotFound(_0x29f9cd,null))[_0x5c77('0x13')](saveUpdates(_0x4d0ef8[_0x5c77('0x51')],null))[_0x5c77('0x13')](respondWithResult(_0x29f9cd,null))[_0x5c77('0x1d')](handleError(_0x29f9cd,null));};exports[_0x5c77('0x67')]=function(_0x119d47,_0x40b668){_0x119d47[_0x5c77('0x51')][_0x5c77('0x68')]=_0x119d47[_0x5c77('0x64')][_0x5c77('0x65')];return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x119d47['params']['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x40b668,null))[_0x5c77('0x13')](saveUpdates(_0x119d47[_0x5c77('0x51')],null))[_0x5c77('0x13')](respondWithResult(_0x40b668,null))[_0x5c77('0x1d')](handleError(_0x40b668,null));};exports[_0x5c77('0x69')]=function(_0x520fb5,_0x4326ff){_0x520fb5[_0x5c77('0x51')][_0x5c77('0x6a')]=_0x520fb5['file'][_0x5c77('0x65')];return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x520fb5[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x4326ff,null))[_0x5c77('0x13')](saveUpdates(_0x520fb5['body'],null))[_0x5c77('0x13')](respondWithResult(_0x4326ff,null))['catch'](handleError(_0x4326ff,null));};exports[_0x5c77('0x6b')]=function(_0x43b914,_0x57cc73){var _0x33d2af=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],'server/files/images/logos/default_logo.svg');var _0x4c8514={'where':{'id':_0x43b914[_0x5c77('0x58')]['id']},'attributes':['id',_0x5c77('0x6e')],'raw':!![]};var _0x427c78=![];return require(_0x5c77('0x6f'))[_0x5c77('0x70')]()[_0x5c77('0x13')](function(_0x2fb083){if(_0x2fb083){_0x427c78=_0x2fb083[_0x5c77('0x71')];}})['then'](function(){return db[_0x5c77('0x33')]['find'](_0x4c8514);})[_0x5c77('0x13')](handleEntityNotFound(_0x57cc73,null))[_0x5c77('0x13')](function(_0x11978c){if(_0x11978c){if(!_['isNil'](_0x11978c[_0x5c77('0x6e')])){if(fs['existsSync'](path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],_0x5c77('0x72'),_0x11978c[_0x5c77('0x6e')]))&&_0x427c78){_0x33d2af=path['join'](config['root'],_0x5c77('0x72'),_0x11978c[_0x5c77('0x6e')]);}}return _0x57cc73['download'](_0x33d2af);}})[_0x5c77('0x1d')](handleError(_0x57cc73,null));};exports['getAvatar']=function(_0x53ab7e,_0x26d03b){var _0x3f5eaf=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],'server/files/images/avatars/default_avatar.png');var _0x588b11={'where':{'id':_0x53ab7e[_0x5c77('0x58')]['id']},'attributes':['id',_0x5c77('0x73')],'raw':!![]};return db[_0x5c77('0x33')][_0x5c77('0x4f')](_0x588b11)[_0x5c77('0x13')](handleEntityNotFound(_0x26d03b,null))[_0x5c77('0x13')](function(_0x35980f){if(_0x35980f){if(!_[_0x5c77('0x74')](_0x35980f[_0x5c77('0x73')])){if(fs[_0x5c77('0x75')](path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],_0x5c77('0x76'),_0x35980f[_0x5c77('0x73')]))){_0x3f5eaf=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],_0x5c77('0x76'),_0x35980f[_0x5c77('0x73')]);}}return _0x26d03b[_0x5c77('0x77')](_0x3f5eaf);}})[_0x5c77('0x1d')](handleError(_0x26d03b,null));};exports[_0x5c77('0x78')]=function(_0x37135e,_0x141a5a){var _0x64bd2f=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],_0x5c77('0x79'));var _0x411bac={'where':{'id':_0x37135e['params']['id']},'attributes':['id',_0x5c77('0x68'),_0x5c77('0x7a')],'raw':!![]};return db[_0x5c77('0x33')][_0x5c77('0x4f')](_0x411bac)[_0x5c77('0x13')](handleEntityNotFound(_0x141a5a,null))[_0x5c77('0x13')](function(_0x231da4){if(_0x231da4){if(!_[_0x5c77('0x74')](_0x231da4['customerAvatar'])){if(fs['existsSync'](path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],'server/files/images/avatars/',_0x231da4[_0x5c77('0x68')]))&&_0x231da4[_0x5c77('0x7a')]){_0x64bd2f=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],'server/files/images/avatars/',_0x231da4['customerAvatar']);}}return _0x141a5a[_0x5c77('0x77')](_0x64bd2f);}})[_0x5c77('0x1d')](handleError(_0x141a5a,null));};exports['getSystemAvatar']=function(_0x39c6bf,_0x4a1008){var _0x27810c=path['join'](config[_0x5c77('0x6d')],_0x5c77('0x7b'));var _0xa93de5={'where':{'id':_0x39c6bf['params']['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db['ChatWebsite'][_0x5c77('0x4f')](_0xa93de5)[_0x5c77('0x13')](handleEntityNotFound(_0x4a1008,null))[_0x5c77('0x13')](function(_0x1a56ee){if(_0x1a56ee){if(!_[_0x5c77('0x74')](_0x1a56ee[_0x5c77('0x6a')])){if(fs['existsSync'](path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],_0x5c77('0x76'),_0x1a56ee['systemAvatar']))){_0x27810c=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],'server/files/images/avatars/',_0x1a56ee[_0x5c77('0x6a')]);}}return _0x4a1008[_0x5c77('0x77')](_0x27810c);}})[_0x5c77('0x1d')](handleError(_0x4a1008,null));};exports[_0x5c77('0x7c')]=function(_0x1d004b,_0x45bf60){var _0x212c94=require(_0x5c77('0x7d'));var _0x3b558e=new _0x212c94();var _0x3d5f73=_0x3b558e[_0x5c77('0x7e')](_0x1d004b['headers'][_0x5c77('0x7f')])[_0x5c77('0x80')]();var _0x1301dd={'body':_0x1d004b[_0x5c77('0x51')],'channel':_0x5c77('0x81')};var _0xf80a04=[];var _0x35a7f1=[];var _0x54014d={};var _0x3fcaca=![];return db['CmContact']['describe']()[_0x5c77('0x13')](function(_0x463daf){if(!_0x463daf){throw new db[(_0x5c77('0x82'))][(_0x5c77('0x83'))]('no\x20available\x20attributes');}_0xf80a04=_[_0x5c77('0x84')](_[_0x5c77('0x39')](_0x463daf),['createdAt',_0x5c77('0x85')]);_0x35a7f1=_[_0x5c77('0x84')](_[_0x5c77('0x39')](_0x463daf),[_0x5c77('0x86'),_0x5c77('0x85'),'CompanyId',_0x5c77('0x87')]);if(_0x1d004b[_0x5c77('0x51')]['id']){delete _0x1d004b['body']['id'];}if(_[_0x5c77('0x74')](_0x1d004b[_0x5c77('0x51')]['from'])){throw new db[(_0x5c77('0x82'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x5c77('0x74')](_0x1d004b[_0x5c77('0x51')]['body'])||_0x1d004b['body']['body']===''){throw new db['Sequelize'][(_0x5c77('0x83'))](_0x5c77('0x88'));}if(_[_0x5c77('0x74')](_0x1d004b['body'][_0x5c77('0x89')])){throw new db['Sequelize'][(_0x5c77('0x83'))](_0x5c77('0x8a')+_0x35a7f1);}if(!_['includes'](_0x35a7f1,_0x1d004b['body'][_0x5c77('0x89')])){throw new db[(_0x5c77('0x82'))][(_0x5c77('0x83'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x35a7f1);}_0x54014d[_0x1d004b[_0x5c77('0x51')][_0x5c77('0x89')]]=_0x1d004b[_0x5c77('0x51')][_0x5c77('0x8b')];})[_0x5c77('0x13')](function(){return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x1d004b[_0x5c77('0x58')]['id']},'include':[{'model':db[_0x5c77('0x8c')],'as':_0x5c77('0x8d'),'include':[{'model':db[_0x5c77('0x8e')],'as':_0x5c77('0x8f'),'where':_0x54014d,'limit':0x1,'order':[[_0x5c77('0x85'),_0x5c77('0x90')]]}]},{'model':db[_0x5c77('0x91')],'as':_0x5c77('0x92')}]});})[_0x5c77('0x13')](handleEntityNotFound(_0x45bf60,null))[_0x5c77('0x13')](function(_0x446a5f){if(_0x446a5f&&_0x446a5f[_0x5c77('0x8d')]){_0x1301dd[_0x5c77('0x93')]=_0x446a5f;_0x1301dd[_0x5c77('0x94')]=_0x446a5f[_0x5c77('0x92')];_0x1301dd[_0x5c77('0x95')]=_0x446a5f[_0x5c77('0x8d')];_0x1301dd[_0x5c77('0x94')]=_['orderBy'](_0x1301dd[_0x5c77('0x94')],[_0x5c77('0x96')],[_0x5c77('0x97')]);if(_0x1301dd[_0x5c77('0x93')][_0x5c77('0x92')]){delete _0x1301dd[_0x5c77('0x93')][_0x5c77('0x92')];}if(_0x1301dd[_0x5c77('0x93')][_0x5c77('0x8d')]&&_0x1301dd[_0x5c77('0x93')][_0x5c77('0x8d')]['Contacts'][_0x5c77('0x3d')]){return _0x1301dd[_0x5c77('0x93')]['List']['Contacts'][0x0];}var _0x25d92e=_[_0x5c77('0xb')](_0x1d004b[_0x5c77('0x51')],{'firstName':_0x1d004b['body'][_0x5c77('0x8b')],'ListId':_0x446a5f[_0x5c77('0x87')]});_0x25d92e[_0x1d004b[_0x5c77('0x51')][_0x5c77('0x89')]]=_0x1d004b[_0x5c77('0x51')][_0x5c77('0x8b')];return db[_0x5c77('0x8e')][_0x5c77('0x50')](_0x25d92e,{'fields':_0xf80a04,'raw':!![]});}})[_0x5c77('0x13')](handleEntityNotFound(_0x45bf60,null))[_0x5c77('0x13')](function(_0x77e619){_0x1301dd[_0x5c77('0x98')]=_0x77e619;var _0x366dd4=_0x1d004b['body']['customerIp'];if(_0x1d004b[_0x5c77('0x99')][_0x5c77('0x9a')]){_0x366dd4=_0x1d004b['headers'][_0x5c77('0x9a')];}else if(_0x1d004b[_0x5c77('0x99')][_0x5c77('0x9b')]){_0x366dd4=_[_0x5c77('0x9c')](_0x1d004b['headers'][_0x5c77('0x9b')][_0x5c77('0x9d')](','));}if(_0x77e619){var _0x245daa={'ContactId':_0x77e619['id'],'ChatWebsiteId':_0x1d004b[_0x5c77('0x58')]['id'],'from':(_0x77e619['firstName']||'')+'\x20'+(_0x77e619[_0x5c77('0x9e')]||''),'customerIp':_0x366dd4,'customerPort':_0x1d004b['headers'][_0x5c77('0x9f')]?_0x1d004b[_0x5c77('0x99')]['x-real-port']:null,'referer':_0x1d004b['body'][_0x5c77('0xa0')],'browserName':_0x3d5f73[_0x5c77('0xa1')][_0x5c77('0x2d')]&&_0x3d5f73[_0x5c77('0xa1')]['version']?util[_0x5c77('0xa2')](_0x5c77('0xa3'),_0x3d5f73[_0x5c77('0xa1')][_0x5c77('0x2d')],_0x3d5f73[_0x5c77('0xa1')][_0x5c77('0xa4')]):_0x5c77('0xa5'),'browserVersion':_0x3d5f73[_0x5c77('0xa1')][_0x5c77('0xa4')]||_0x5c77('0xa5'),'osName':util[_0x5c77('0xa2')]('%s\x20%s',_0x3d5f73['os'][_0x5c77('0x2d')],_0x3d5f73['os'][_0x5c77('0xa4')]),'osVersion':_0x3d5f73['os']['version'],'deviceModel':_0x3d5f73['device'][_0x5c77('0x37')]&&_0x3d5f73[_0x5c77('0xa6')][_0x5c77('0xa7')]?util['format'](_0x5c77('0xa8'),_0x3d5f73['device'][_0x5c77('0x37')],_0x3d5f73[_0x5c77('0xa6')][_0x5c77('0xa7')],_0x3d5f73[_0x5c77('0xa6')][_0x5c77('0x35')]):null,'deviceVendor':_0x3d5f73[_0x5c77('0xa6')][_0x5c77('0xa7')],'deviceType':_0x3d5f73['device']['type'],'formData':JSON['stringify'](_0x1d004b[_0x5c77('0x51')])};var _0x1e2a16={'ChatWebsiteId':_0x1d004b['params']['id'],'closed':![]};if(_0x1d004b[_0x5c77('0x51')][_0x5c77('0xa9')]){_0x1e2a16[_0x5c77('0xa9')]=_0x1d004b[_0x5c77('0x51')][_0x5c77('0xa9')];return db[_0x5c77('0xaa')][_0x5c77('0x4f')]({'where':_0x1e2a16})[_0x5c77('0x13')](function(_0x124b83){if(_0x124b83){return[_0x124b83,![]];}_0x245daa[_0x5c77('0xa9')]=_0x1d004b['body'][_0x5c77('0xa9')];_0x245daa['externalUrl']=_0x1d004b[_0x5c77('0x51')][_0x5c77('0xab')];return db[_0x5c77('0xaa')][_0x5c77('0x50')](_0x245daa)[_0x5c77('0x13')](function(_0x193d45){return[_0x193d45,!![]];});});}_0x1e2a16[_0x5c77('0xac')]=_0x77e619['id'];if(_0x1d004b['body'][_0x5c77('0xad')]&&_0x1d004b['body'][_0x5c77('0xad')]['id']){_0x1e2a16['id']=_0x1d004b['body']['interaction']['id'];return db['ChatInteraction'][_0x5c77('0x4f')]({'where':_0x1e2a16})[_0x5c77('0x13')](function(_0x573de0){if(_0x573de0){return[_0x573de0,![]];}return db['ChatInteraction'][_0x5c77('0x50')](_0x245daa)['then'](function(_0x150bd7){return[_0x150bd7,!![]];});});}return db[_0x5c77('0xaa')][_0x5c77('0x50')](_0x245daa)[_0x5c77('0x13')](function(_0x25453d){return[_0x25453d,!![]];});}})[_0x5c77('0xae')](function(_0x4becfb,_0x17dd98){if(_0x4becfb){_0x3fcaca=_0x17dd98;if(!_0x17dd98){var _0x206303={'from':(_0x1301dd['contact'][_0x5c77('0xaf')]||'')+'\x20'+(_0x1301dd[_0x5c77('0x98')][_0x5c77('0x9e')]||'')};if(_0x1d004b['body']['threadId']&&_0x1d004b[_0x5c77('0x51')][_0x5c77('0xb0')]&&_0x1d004b[_0x5c77('0x51')]['threadId']!=_0x1d004b[_0x5c77('0x51')][_0x5c77('0xb0')]){_0x206303['threadId']=_0x1d004b['body'][_0x5c77('0xb0')];}return _0x4becfb[_0x5c77('0x26')](_0x206303);}else{return _0x4becfb;}}})[_0x5c77('0x13')](function(_0x515cc5){_0x1301dd[_0x5c77('0xad')]=_0x515cc5[_0x5c77('0x28')]({'plain':!![]});_0x1301dd['interaction'][_0x5c77('0xb1')]=_0x3fcaca;if(_0x1301dd[_0x5c77('0xad')][_0x5c77('0xb1')]){if(_0x1301dd[_0x5c77('0x93')][_0x5c77('0xb2')]){_0x1301dd[_0x5c77('0x94')][_0x5c77('0xb3')]({'id':0x0,'priority':_0x1301dd[_0x5c77('0x94')][_0x5c77('0x3d')]+0x1,'app':_0x5c77('0xb4'),'appdata':_0x5c77('0xb5'),'interval':_0x5c77('0xb6')});}}return db[_0x5c77('0xb7')][_0x5c77('0x50')]({'body':_0x1d004b['body'][_0x5c77('0x51')],'ChatWebsiteId':_0x1d004b[_0x5c77('0x58')]['id'],'ChatInteractionId':_0x515cc5['id'],'direction':'in','ContactId':_0x1301dd['contact']['id'],'AttachmentId':_0x1d004b[_0x5c77('0x51')][_0x5c77('0xb8')]});})['then'](function(_0x33eef1){_0x1301dd[_0x5c77('0x1a')]=_0x33eef1;if(_0x1301dd[_0x5c77('0xad')][_0x5c77('0xb9')]){return db[_0x5c77('0xba')][_0x5c77('0x4f')]({'attributes':['id',_0x5c77('0x2d')],'where':{'id':_0x1301dd[_0x5c77('0xad')][_0x5c77('0xb9')]}})[_0x5c77('0x13')](function(_0x50e69f){if(_0x50e69f){_0x1301dd['applications'][_0x5c77('0xbb')]({'id':0x0,'priority':0x0,'app':_0x5c77('0xbc'),'appdata':_0x50e69f[_0x5c77('0x2d')]+','+(_0x1301dd[_0x5c77('0x93')][_0x5c77('0xbd')]||0xa),'interval':'*,*,*,*'});_0x1301dd[_0x5c77('0xbe')]=!![];}return respondWithRpcPromise(_0x5c77('0xbf'),_0x5c77('0xc0'),_0x1301dd);});}return respondWithRpcPromise(_0x5c77('0xbf'),'startRouting',_0x1301dd);})[_0x5c77('0x13')](function(_0x231a6e){respondWithRpcPromise(_0x5c77('0xc1'),_0x5c77('0xc1'),{'event':_0x5c77('0x7c'),'message':_0x231a6e},client9002);return _0x231a6e;})[_0x5c77('0x13')](respondWithResult(_0x45bf60,null))[_0x5c77('0x1d')](handleError(_0x45bf60,null));};exports['offline']=function(_0x120649,_0x2cd744){var _0x58c36e,_0x184694,_0x431480;var _0x512fa9=[];var _0x36c55c={};var _0xde190b=_0x120649[_0x5c77('0xc2')]||[];var _0x426318=[];var _0x143a4d;return db[_0x5c77('0x8e')][_0x5c77('0x59')]()[_0x5c77('0x13')](function(_0x462ec1){if(!_0x462ec1){throw new db[(_0x5c77('0x82'))]['ValidationError'](_0x5c77('0xc3'));}_0x512fa9=_['difference'](_['keys'](_0x462ec1),[_0x5c77('0x86'),_0x5c77('0x85'),_0x5c77('0xc4'),_0x5c77('0x87')]);if(_0x120649[_0x5c77('0x51')]['id']){delete _0x120649[_0x5c77('0x51')]['id'];}if(_[_0x5c77('0x74')](_0x120649[_0x5c77('0x51')][_0x5c77('0x8b')])){throw _0x2cd744[_0x5c77('0x1e')](0x1f4)[_0x5c77('0x2e')](new db[(_0x5c77('0x82'))][(_0x5c77('0x83'))](_0x5c77('0xc5')));}if(_[_0x5c77('0x74')](_0x120649[_0x5c77('0x51')]['body'])||_0x120649[_0x5c77('0x51')][_0x5c77('0x51')]===''){throw _0x2cd744[_0x5c77('0x1e')](0x1f4)[_0x5c77('0x2e')](new db['Sequelize'][(_0x5c77('0x83'))](_0x5c77('0x88')));}if(_[_0x5c77('0x74')](_0x120649[_0x5c77('0x51')][_0x5c77('0xc6')])){throw _0x2cd744[_0x5c77('0x1e')](0x1f4)[_0x5c77('0x2e')](new db[(_0x5c77('0x82'))]['ValidationError'](_0x5c77('0xc7')+_0x512fa9));}if(!_[_0x5c77('0xc8')](_0x512fa9,_0x120649[_0x5c77('0x51')][_0x5c77('0xc6')])){throw _0x2cd744['status'](0x1f4)[_0x5c77('0x2e')](new db['Sequelize'][(_0x5c77('0x83'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x512fa9));}_0x36c55c[_0x120649[_0x5c77('0x51')][_0x5c77('0xc6')]]=_0x120649[_0x5c77('0x51')]['from'];})[_0x5c77('0x13')](function(){return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x120649[_0x5c77('0x58')]['id']},'include':[{'model':db[_0x5c77('0x8c')],'as':_0x5c77('0x8d')},{'model':db[_0x5c77('0xc9')],'as':_0x5c77('0xc9')}]});})[_0x5c77('0x13')](handleEntityNotFound(_0x2cd744,null))['then'](function(_0x158df7){if(_0x158df7&&_0x158df7[_0x5c77('0x8d')]){_0x184694=_0x158df7;var _0x6d39f1=_[_0x5c77('0xb')](_0x120649[_0x5c77('0x51')],{'firstName':_0x120649['body'][_0x5c77('0x8b')],'phone':_0x120649[_0x5c77('0x51')]['from'],'ListId':_0x158df7[_0x5c77('0x87')]});_0x6d39f1[_0x120649[_0x5c77('0x51')]['mapKeyOffline']]=_0x120649[_0x5c77('0x51')][_0x5c77('0x8b')];return db['CmContact'][_0x5c77('0xca')]({'where':_0x36c55c,'defaults':_0x6d39f1});}})['spread'](function(_0x3edf32){if(_0x3edf32){_0x431480=_0x3edf32;var _0x43244f=fs[_0x5c77('0xcb')](path[_0x5c77('0x6c')](config['root'],_0x5c77('0xcc')),'utf8');var _0x365c40=ejs[_0x5c77('0xcd')](_0x43244f,{'body':_[_0x5c77('0xce')](_0x120649[_0x5c77('0x51')][_0x5c77('0x51')]),'bodyTitle':_0x184694[_0x5c77('0xcf')]});return db[_0x5c77('0xd0')][_0x5c77('0x50')]({'body':_0x365c40,'plainBody':htmlToText[_0x5c77('0xd1')](_0x365c40),'ContactId':_0x3edf32['id'],'ChatWebsiteId':_0x184694['id']});}})[_0x5c77('0x13')](function(_0x5427ee){_0x143a4d=_0x5427ee;if(_0xde190b[_0x5c77('0x3d')]){var _0x942e07=_0xde190b[_0x5c77('0x32')](function(_0xdb2057){return{'name':_0xdb2057['originalname'],'basename':_0xdb2057[_0x5c77('0x65')],'type':_0xdb2057['mimetype'],'ChatOfflineMessageId':_0x5427ee['id']};});_0x426318=_0x942e07['map'](_0x1385aa=>{var _0x4dd5d7={'filename':_0x1385aa[_0x5c77('0x2d')],'path':path[_0x5c77('0x6c')](config['root'],_0x5c77('0xd2'),_0x5c77('0xc2'),_0x5c77('0xd3'),_0x5c77('0xd4'),_0x1385aa[_0x5c77('0xd5')])};return _0x4dd5d7;});if(!_0x184694[_0x5c77('0xd6')]){return db[_0x5c77('0xd7')][_0x5c77('0xd8')](function(_0x4583f5){return db[_0x5c77('0xd9')][_0x5c77('0xda')](_0x942e07,{'transaction':_0x4583f5});});}}})[_0x5c77('0x13')](function(){if(_0x143a4d){_0x58c36e=_0x143a4d;return db[_0x5c77('0xc9')][_0x5c77('0x62')]({'where':{'service':!![]},'include':[{'model':db[_0x5c77('0xdb')],'as':_0x5c77('0xdc'),'raw':!![],'include':[{'model':db[_0x5c77('0xdd')],'as':_0x5c77('0xdd'),'raw':!![]}]}]});}})[_0x5c77('0x13')](function(_0x4e0805){if(_0x4e0805&&_0x4e0805['Smtp']&&_0x184694[_0x5c77('0xde')]&&_0x184694[_0x5c77('0xdf')]){var _0x46a295=_0x4e0805['getSmtpOptions']();return respondWithRpcPromise(_0x5c77('0xe0'),_0x5c77('0xe1'),{'account':_0x46a295,'message':{'from':util[_0x5c77('0xa2')](_0x5c77('0xe2'),_0x4e0805[_0x5c77('0x2d')],_0x4e0805[_0x5c77('0xe3')]||_0x4e0805[_0x5c77('0xdc')][_0x5c77('0x52')]),'to':_0x184694[_0x5c77('0xdf')],'subject':_0x184694[_0x5c77('0xe4')],'html':_0x58c36e[_0x5c77('0x51')],'attachments':_0x426318}},client9003)[_0x5c77('0x13')](function(){return _0x58c36e;})['catch'](function(_0x1627ca){logger[_0x5c77('0x17')](_0x1627ca);});}})[_0x5c77('0x13')](function(){if(_0x184694&&_0x184694[_0x5c77('0xd6')]&&_0x184694[_0x5c77('0xe5')]){var _0x2aabec=[];if(_0xde190b[_0x5c77('0x3d')]){_0x2aabec=_0xde190b['map'](function(_0x4d6abf){return{'name':_0x4d6abf[_0x5c77('0xe6')],'basename':_0x4d6abf[_0x5c77('0x65')],'type':_0x4d6abf[_0x5c77('0xe7')],'ChatOfflineMessageId':_0x143a4d['id']};});}var _0x144f7e;if(!_[_0x5c77('0x74')](_0x184694['subjectOffline'])){var _0x34e0cf=_['map'](_0x120649['body'],function(_0x42e309){return _0x42e309;});var _0x2ba576=_[_0x5c77('0xe8')](_0x34e0cf)[0x0];var _0x488172=_[_0x5c77('0xe9')](_0x2ba576,function(_0x27ba8a){return _0x27ba8a;});_0x144f7e=_0x488172[0x1][_0x184694[_0x5c77('0xea')]];}var _0x38b668={'from':_0x431480[_0x5c77('0xe3')],'firstName':_0x431480[_0x5c77('0xaf')],'lastName':_0x431480['lastName'],'mapKey':_0x5c77('0xe3'),'message':{'from':_0x431480['email'],'to':_0x184694[_0x5c77('0xc9')][_0x5c77('0xe3')],'cc':'','subject':_['isNil'](_0x144f7e)?_0x184694[_0x5c77('0xe4')]:_0x144f7e,'messageId':'','sentAt':new Date(),'attach':_0x2aabec[_0x5c77('0x3d')],'attachments':_0x2aabec,'originChannel':_0x5c77('0xeb'),'ChatWebsiteId':_0x184694['id'],'ChatOfflineMessageId':_0x58c36e['id'],'originTo':_0x184694['MailAccount'][_0x5c77('0xe3')]},'body':_0x58c36e['body']};var _0x16995d={'account':{'id':_0x184694[_0x5c77('0xe5')]},'body':_0x38b668,'log':_0x5c77('0xec')};return respondWithRpcPromise('NotifyMailAccount',_0x5c77('0xed'),_0x16995d,client9001)['then'](function(){return _0x58c36e;})[_0x5c77('0x1d')](function(_0x115b30){logger['error'](_0x115b30);});}return;})[_0x5c77('0x13')](function(){if(_0x58c36e){return _0x58c36e;}})[_0x5c77('0x13')](respondWithResult(_0x2cd744,null))['catch'](function(_0x328c47){logger[_0x5c77('0x17')](_0x5c77('0x1d'),_0x328c47);for(var _0x242155 of _0xde190b){var _0x105f76=path[_0x5c77('0x6c')](config[_0x5c77('0x6d')],_0x5c77('0xd2'),_0x5c77('0xc2'),'attachments',_0x5c77('0xd4'),_0x242155[_0x5c77('0x65')]);fs_extra[_0x5c77('0xee')](_0x105f76)['catch'](function(_0x502cef){logger[_0x5c77('0x17')](_0x5c77('0xef'),_0x105f76,_0x502cef);});}});};exports['addInteraction']=function(_0x50b3a0,_0x49cd7e){return db[_0x5c77('0xaa')][_0x5c77('0x4f')]({'where':{'id':_0x50b3a0[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x49cd7e,null))['then'](function(_0x4b0875){if(_0x4b0875){return _0x4b0875[_0x5c77('0xf0')](_0x50b3a0[_0x5c77('0x51')][_0x5c77('0x60')],_[_0x5c77('0xf1')](_0x50b3a0[_0x5c77('0x51')],[_0x5c77('0x60'),'id'])||{});}})[_0x5c77('0x13')](respondWithResult(_0x49cd7e,null))['catch'](handleError(_0x49cd7e,null));};exports[_0x5c77('0xf2')]=function(_0x231e46,_0x57c1a7){var _0xa58e2d={'raw':![],'where':{}};var _0x1e8f1c={};var _0xa67e14={'count':0x0,'rows':[]};return db[_0x5c77('0x33')][_0x5c77('0x62')]({'where':{'id':_0x231e46['params']['id']}})['then'](handleEntityNotFound(_0x57c1a7,null))[_0x5c77('0x13')](function(_0x5e7967){if(_0x5e7967){_0x1e8f1c['model']=_[_0x5c77('0x39')](db['ChatInteraction']['rawAttributes']);_0x1e8f1c[_0x5c77('0x38')]=_[_0x5c77('0x39')](_0x231e46['query']);_0x1e8f1c[_0x5c77('0x3a')]=_[_0x5c77('0x3c')](_0x1e8f1c[_0x5c77('0x37')],_0x1e8f1c[_0x5c77('0x38')]);_0xa58e2d[_0x5c77('0x3b')]=_[_0x5c77('0x3c')](_0x1e8f1c[_0x5c77('0x37')],qs[_0x5c77('0x4e')](_0x231e46[_0x5c77('0x38')][_0x5c77('0x4e')]));_0xa58e2d[_0x5c77('0x3b')]=_0xa58e2d[_0x5c77('0x3b')][_0x5c77('0x3d')]?_0xa58e2d['attributes']:_0x1e8f1c[_0x5c77('0x37')];if(!_0x231e46[_0x5c77('0x38')][_0x5c77('0x3e')](_0x5c77('0x3f'))){_0xa58e2d[_0x5c77('0x22')]=qs['limit'](_0x231e46[_0x5c77('0x38')][_0x5c77('0x22')]);_0xa58e2d['offset']=qs[_0x5c77('0x23')](_0x231e46[_0x5c77('0x38')][_0x5c77('0x23')]);}_0xa58e2d[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x231e46[_0x5c77('0x38')][_0x5c77('0x41')]);_0xa58e2d['where']=qs['filters'](_['pick'](_0x231e46['query'],_0x1e8f1c[_0x5c77('0x3a')]));_0xa58e2d[_0x5c77('0x42')][_0x5c77('0x5b')]=_0x5e7967['id'];if(_0x231e46[_0x5c77('0x38')][_0x5c77('0x5e')]){_0xa58e2d['where']=_['merge'](_0xa58e2d[_0x5c77('0x42')],{'$or':_[_0x5c77('0x32')](_0xa58e2d['attributes'],function(_0x8cca0b){var _0x5dbb50={};_0x5dbb50[_0x8cca0b]={'$like':'%'+_0x231e46['query'][_0x5c77('0x5e')]+'%'};return _0x5dbb50;})});}_0xa58e2d=_[_0x5c77('0x44')]({},_0xa58e2d,_0x231e46['options']);return db['ChatInteraction']['count']({'where':_0xa58e2d[_0x5c77('0x42')]})[_0x5c77('0x13')](function(_0x47a2b1){_0xa67e14['count']=_0x47a2b1;if(_0x231e46[_0x5c77('0x38')][_0x5c77('0x48')]){_0xa58e2d[_0x5c77('0x49')]=[{'model':db[_0x5c77('0x8e')],'as':'Contact','required':![]},{'model':db[_0x5c77('0xba')],'as':_0x5c77('0xf3'),'attributes':[_0x5c77('0x2d'),_0x5c77('0xf4'),_0x5c77('0xf5')],'required':![]},{'model':db[_0x5c77('0xf6')],'as':_0x5c77('0xf7'),'attributes':['id','name',_0x5c77('0xf8')],'where':_0x231e46[_0x5c77('0x38')][_0x5c77('0xf9')]?{'id':_0x231e46[_0x5c77('0x38')][_0x5c77('0xf9')]}:undefined,'required':_0x231e46[_0x5c77('0x38')][_0x5c77('0xf9')]?!![]:![]}];}return db[_0x5c77('0xaa')][_0x5c77('0x4a')](_0xa58e2d);})['then'](function(_0x56ba32){_0xa67e14[_0x5c77('0x4b')]=_0x56ba32;return _0xa67e14;});}})[_0x5c77('0x13')](respondWithFilteredResult(_0x57c1a7,_0xa58e2d))[_0x5c77('0x1d')](handleError(_0x57c1a7,null));};function iftimePromise(_0x3c07df,_0x42d33a){return respondWithRpcPromise(_0x5c77('0xfa'),_0x5c77('0xfb'),{'command':_0x42d33a[_0x5c77('0xfc')]?util[_0x5c77('0xa2')]('iftime\x20%s,%s',_0x3c07df['interval'],_0x42d33a['timezone']):util[_0x5c77('0xa2')](_0x5c77('0xfd'),_0x3c07df[_0x5c77('0xfe')])},client9002)['then'](function(_0x5bbdb9){var _0x33fdc7=_0x5bbdb9&&_0x5bbdb9[_0x5c77('0xff')]('true')>=0x0?!![]:![];logger['info']('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x42d33a['id'],_0x3c07df['id'],_0x3c07df[_0x5c77('0xfe')],_0x33fdc7?_0x5c77('0x100'):_0x5c77('0x101'),_0x42d33a['timezone']?_0x42d33a[_0x5c77('0xfc')]:_0x5c77('0x102'));return _0x33fdc7;})[_0x5c77('0x1d')](function(_0x28b099){logger['error'](_0x5c77('0x103'),_0x42d33a['id'],_0x3c07df['id'],_0x3c07df['interval'],util[_0x5c77('0x104')](_0x28b099,{'showHidden':![],'depth':null}),_0x42d33a[_0x5c77('0xfc')]?_0x42d33a['timezone']:_0x5c77('0x102'));return![];});}exports[_0x5c77('0xfb')]=function(_0x40a362,_0x15d52d){var _0x3e7c78=0x0;var _0x5147a9=0x0;var _0x5d4568=![];var _0x6c1b9;var _0x17715c;return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x40a362['params']['id']},'include':[{'model':db[_0x5c77('0x105')],'as':_0x5c77('0x105'),'include':[{'model':db['Interval'],'as':_0x5c77('0x106'),'attributes':['id',_0x5c77('0xfe')],'raw':!![]}]}]})[_0x5c77('0x13')](handleEntityNotFound(_0x15d52d,null))['then'](function(_0x1211ca){if(_0x1211ca){_0x6c1b9=_0x1211ca;return _0x1211ca['getProactiveActions']({'raw':!![]});}})[_0x5c77('0x13')](function(_0x32551b){if(_0x6c1b9){if(_0x32551b){_0x17715c=_0x32551b;}}return require(_0x5c77('0x6f'))[_0x5c77('0x70')]();})[_0x5c77('0x13')](function(_0x3ff7f2){if(_0x3ff7f2){_0x5147a9=_0x3ff7f2[_0x5c77('0x107')];_0x5d4568=_0x3ff7f2['custom'];}})[_0x5c77('0x13')](function(){return db['ChatInteraction'][_0x5c77('0x47')]({'where':{'closed':![]}});})[_0x5c77('0x13')](function(_0x221069){_0x3e7c78=_0x221069;if(_0x5147a9&&_0x221069>_0x5147a9){return db['License'][_0x5c77('0x62')]({'where':{'id':0x1}})[_0x5c77('0x13')](function(_0x2d043b){if(_0x2d043b){_0x2d043b[_0x5c77('0x108')](_0x5c77('0x109'));}});}})[_0x5c77('0x13')](function(){if(_0x6c1b9['Interval']&&_0x6c1b9[_0x5c77('0x105')][_0x5c77('0x106')]){var _0x938cbc=[];for(var _0x139eb3=0x0;_0x139eb3<_0x6c1b9['Interval'][_0x5c77('0x106')][_0x5c77('0x3d')];_0x139eb3++){var _0x3626ed=_0x6c1b9['Interval'][_0x5c77('0x106')][_0x139eb3][_0x5c77('0x28')]({'plain':!![]});_0x938cbc['push'](iftimePromise(_0x3626ed,_0x6c1b9));}return BPromise[_0x5c77('0x10a')](_0x938cbc)[_0x5c77('0x13')](function(_0x548289){return _[_0x5c77('0x10b')](_0x548289);});}else{return!![];}})[_0x5c77('0x13')](function(_0x427eb0){var _0x1f2ac3=fs[_0x5c77('0xcb')](path['join'](config['root'],'server/files/chat/iframe.ejs'),_0x5c77('0x10c'));var _0x44305d=new url['URL'](_0x6c1b9[_0x5c77('0x10d')])[_0x5c77('0x10e')];var _0xf5c109=_0x5c77('0x10f');var _0x5ef70b=![];var _0x55f084={'chatVersion':_0xf5c109,'chatWebsiteAddressOrigin':_0x44305d,'remote':_0x6c1b9[_0x5c77('0x110')],'query':querystring[_0x5c77('0x16')](_[_0x5c77('0x44')](_0x6c1b9[_0x5c77('0x28')]({'plain':!![]}),{'customerIp':_0x40a362['headers'][_0x5c77('0x9b')]||_0x40a362[_0x5c77('0x99')]['x-real-ip']||_0x40a362[_0x5c77('0x111')][_0x5c77('0x112')]||_0x40a362['ip'],'referer':_0x40a362[_0x5c77('0x99')]['referer'],'openedInteractions':_0x3e7c78,'maxInteractions':_0x5147a9,'virtual':_0x5d4568[_0x5c77('0x107')],'online':_0x427eb0,'custom':_0x5d4568}))[_0x5c77('0x113')](/'/g,'\x5c\x27')};_0x15d52d[_0x5c77('0x2e')](ejs['render'](Mustache[_0x5c77('0xcd')](_0x1f2ac3,_0x55f084),{'proactiveActions':_0x17715c,'alignment':_0x6c1b9[_0x5c77('0x114')],'verticalAlignment':_0x6c1b9['verticalAlignment'],'div_color':_0x6c1b9[_0x5c77('0xf8')],'labelText':_0x6c1b9[_0x5c77('0x115')],'text_color':_0x6c1b9[_0x5c77('0x116')],'text_button_color':_0x6c1b9[_0x5c77('0x117')],'button_color':_0x6c1b9[_0x5c77('0x118')],'background_color':_0x6c1b9['backgroundColor'],'hideWhenOffline':_0x6c1b9['hideWhenOffline'],'intervalId':_0x6c1b9[_0x5c77('0x119')],'isDevelopment':_0x5ef70b,'chatVersion':_0xf5c109}));})[_0x5c77('0x1d')](handleError(_0x15d52d,null));};exports[_0x5c77('0x11a')]=function(_0x9eb403,_0x8d8138){var _0x1adf15=_0x9eb403[_0x5c77('0x58')]['id'];var _0x2e42d3=_0x9eb403[_0x5c77('0x51')];var _0x553e56=0xc8;var _0x2762a3=null;return db[_0x5c77('0xd7')][_0x5c77('0xd8')]({'isolationLevel':db[_0x5c77('0xd7')][_0x5c77('0x11b')][_0x5c77('0x11c')][_0x5c77('0x11d')]},function(_0x53dbe4){return db['ChatWebsite']['findOne']({'where':{'id':_0x1adf15},'transaction':_0x53dbe4})[_0x5c77('0x13')](function(_0x46f2ae){if(_0x46f2ae){return db['ChatApplication']['destroy']({'where':{'ChatWebsiteId':_0x1adf15},'transaction':_0x53dbe4})[_0x5c77('0x13')](function(){var _0x30e7a7=_[_0x5c77('0x32')](_0x2e42d3,function(_0x2e5f28){_0x2e5f28[_0x5c77('0x5b')]=_0x1adf15;return _0x2e5f28;});return db[_0x5c77('0x91')][_0x5c77('0xda')](_0x30e7a7,{'transaction':_0x53dbe4});});}else{_0x553e56=0x194;_0x2762a3=[];}});})['then'](function(){if(_0x553e56!==0x194){return db[_0x5c77('0x91')][_0x5c77('0x11e')]({'where':{'ChatWebsiteId':_0x1adf15},'order':_0x5c77('0x96')})[_0x5c77('0x13')](function(_0x38e72c){_0x2762a3=_0x38e72c;});}})[_0x5c77('0x1d')](function(_0x55443b){_0x553e56=0x1f4;logger[_0x5c77('0x17')](_0x55443b[_0x5c77('0x2c')]);if(_0x55443b[_0x5c77('0x2d')]){delete _0x55443b[_0x5c77('0x2d')];}_0x2762a3=_0x55443b;})[_0x5c77('0x11f')](function(){if(_0x2762a3===null){_0x8d8138[_0x5c77('0x2b')](_0x553e56);}else{if(_0x553e56===0x1f4){_0x8d8138['status'](_0x553e56)[_0x5c77('0x2e')](_0x2762a3);}else{_0x8d8138[_0x5c77('0x1e')](_0x553e56)[_0x5c77('0x20')](_0x2762a3);}}});};exports[_0x5c77('0x120')]=function(_0x4c0773,_0x4ad5fb){var _0x186159={};var _0xe77296={};var _0x32cec6;var _0x3101ec;return db[_0x5c77('0x33')][_0x5c77('0x62')]({'where':{'id':_0x4c0773[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x4ad5fb,null))['then'](function(_0x5ed01d){if(_0x5ed01d){_0x32cec6=_0x5ed01d;_0xe77296[_0x5c77('0x37')]=_[_0x5c77('0x39')](db[_0x5c77('0x91')][_0x5c77('0x4d')]);_0xe77296[_0x5c77('0x38')]=_['keys'](_0x4c0773['query']);_0xe77296[_0x5c77('0x3a')]=_['intersection'](_0xe77296['model'],_0xe77296[_0x5c77('0x38')]);_0x186159[_0x5c77('0x3b')]=_[_0x5c77('0x3c')](_0xe77296[_0x5c77('0x37')],qs[_0x5c77('0x4e')](_0x4c0773[_0x5c77('0x38')][_0x5c77('0x4e')]));_0x186159[_0x5c77('0x3b')]=_0x186159[_0x5c77('0x3b')]['length']?_0x186159['attributes']:_0xe77296['model'];_0x186159[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x4c0773[_0x5c77('0x38')][_0x5c77('0x41')]);_0x186159[_0x5c77('0x42')]=qs[_0x5c77('0x3a')](_[_0x5c77('0x43')](_0x4c0773[_0x5c77('0x38')],_0xe77296[_0x5c77('0x3a')]));if(_0x4c0773['query'][_0x5c77('0x5e')]){_0x186159[_0x5c77('0x42')]=_[_0x5c77('0x44')](_0x186159[_0x5c77('0x42')],{'$or':_[_0x5c77('0x32')](_0x186159[_0x5c77('0x3b')],function(_0x4c16a2){var _0x1515c3={};_0x1515c3[_0x4c16a2]={'$like':'%'+_0x4c0773['query'][_0x5c77('0x5e')]+'%'};return _0x1515c3;})});}_0x186159=_[_0x5c77('0x44')]({},_0x186159,_0x4c0773[_0x5c77('0x46')]);return _0x32cec6[_0x5c77('0x120')](_0x186159);}})[_0x5c77('0x13')](function(_0x35ee73){if(_0x35ee73){_0x3101ec=_0x35ee73[_0x5c77('0x3d')];if(!_0x4c0773[_0x5c77('0x38')][_0x5c77('0x3e')](_0x5c77('0x3f'))){_0x186159['limit']=qs[_0x5c77('0x22')](_0x4c0773[_0x5c77('0x38')]['limit']);_0x186159[_0x5c77('0x23')]=qs['offset'](_0x4c0773[_0x5c77('0x38')][_0x5c77('0x23')]);}return _0x32cec6[_0x5c77('0x120')](_0x186159);}})['then'](function(_0x56202d){if(_0x56202d){return _0x56202d?{'count':_0x3101ec,'rows':_0x56202d}:null;}})[_0x5c77('0x13')](respondWithResult(_0x4ad5fb,null))[_0x5c77('0x1d')](handleError(_0x4ad5fb,null));};exports['addProactiveActions']=function(_0x4e84b6,_0x483ed1){return db[_0x5c77('0x121')][_0x5c77('0x4f')]({'where':{'id':_0x4e84b6[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x483ed1,null))[_0x5c77('0x13')](function(_0x5d42ab){if(_0x5d42ab){return _0x5d42ab[_0x5c77('0x122')](_0x4e84b6[_0x5c77('0x51')][_0x5c77('0x60')],_[_0x5c77('0xf1')](_0x4e84b6[_0x5c77('0x51')],['ids','id'])||{});}})['then'](respondWithResult(_0x483ed1,null))['catch'](handleError(_0x483ed1,null));};exports[_0x5c77('0x123')]=function(_0x151b2b,_0x4e6808){var _0x1b1568={};var _0xae4827={};var _0x577681;var _0x228d3f;return db[_0x5c77('0x33')][_0x5c77('0x62')]({'where':{'id':_0x151b2b[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x4e6808,null))[_0x5c77('0x13')](function(_0x1b0e51){if(_0x1b0e51){_0x577681=_0x1b0e51;_0xae4827[_0x5c77('0x37')]=_[_0x5c77('0x39')](db[_0x5c77('0x124')][_0x5c77('0x4d')]);_0xae4827[_0x5c77('0x38')]=_['keys'](_0x151b2b['query']);_0xae4827['filters']=_[_0x5c77('0x3c')](_0xae4827[_0x5c77('0x37')],_0xae4827['query']);_0x1b1568[_0x5c77('0x3b')]=_['intersection'](_0xae4827[_0x5c77('0x37')],qs[_0x5c77('0x4e')](_0x151b2b[_0x5c77('0x38')][_0x5c77('0x4e')]));_0x1b1568[_0x5c77('0x3b')]=_0x1b1568[_0x5c77('0x3b')]['length']?_0x1b1568[_0x5c77('0x3b')]:_0xae4827[_0x5c77('0x37')];_0x1b1568[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x151b2b[_0x5c77('0x38')][_0x5c77('0x41')]);_0x1b1568[_0x5c77('0x42')]=qs[_0x5c77('0x3a')](_['pick'](_0x151b2b[_0x5c77('0x38')],_0xae4827['filters']));if(_0x151b2b[_0x5c77('0x38')][_0x5c77('0x5e')]){_0x1b1568['where']=_[_0x5c77('0x44')](_0x1b1568[_0x5c77('0x42')],{'$or':_[_0x5c77('0x32')](_0x1b1568[_0x5c77('0x3b')],function(_0x4bdd85){var _0x161600={};_0x161600[_0x4bdd85]={'$like':'%'+_0x151b2b[_0x5c77('0x38')]['filter']+'%'};return _0x161600;})});}_0x1b1568=_[_0x5c77('0x44')]({},_0x1b1568,_0x151b2b[_0x5c77('0x46')]);return _0x577681['getProactiveActions'](_0x1b1568);}})[_0x5c77('0x13')](function(_0x454fb5){if(_0x454fb5){_0x228d3f=_0x454fb5[_0x5c77('0x3d')];if(!_0x151b2b[_0x5c77('0x38')][_0x5c77('0x3e')](_0x5c77('0x3f'))){_0x1b1568[_0x5c77('0x22')]=qs[_0x5c77('0x22')](_0x151b2b['query'][_0x5c77('0x22')]);_0x1b1568[_0x5c77('0x23')]=qs['offset'](_0x151b2b[_0x5c77('0x38')][_0x5c77('0x23')]);}return _0x577681['getProactiveActions'](_0x1b1568);}})[_0x5c77('0x13')](function(_0x143136){if(_0x143136){return _0x143136?{'count':_0x228d3f,'rows':_0x143136}:null;}})[_0x5c77('0x13')](respondWithResult(_0x4e6808,null))['catch'](handleError(_0x4e6808,null));};exports['getFields']=function(_0x6e4ec6,_0x5670bb){var _0x3654eb=_0x6e4ec6[_0x5c77('0x38')][_0x5c77('0x125')]===_0x5c77('0x126')?_0x5c77('0x127'):'onlineForm';return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'attributes':['id',_0x3654eb],'where':{'id':_0x6e4ec6[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x5670bb,null))['then'](function(_0x3448fc){if(_0x3448fc){var _0x9c1463=_0x3448fc[_0x3654eb];var _0x1282e8=_0x9c1463&&_0x9c1463['items']?_0x9c1463[_0x5c77('0x128')]:[];_0x5670bb[_0x5c77('0x2e')]({'fromKey':_[_0x5c77('0x74')](_0x9c1463['fromKey'])?undefined:_0x9c1463[_0x5c77('0x129')],'count':_0x1282e8[_0x5c77('0x3d')],'rows':_0x1282e8});}})[_0x5c77('0x1d')](handleError(_0x5670bb,null));};exports[_0x5c77('0x12a')]=function(_0x4762f8,_0x32080f){var _0x51a390={'raw':![],'where':{}};var _0x2633e3={};var _0x3122e9={'count':0x0,'rows':[]};return db[_0x5c77('0x33')][_0x5c77('0x62')]({'where':{'id':_0x4762f8['params']['id']}})['then'](handleEntityNotFound(_0x32080f,null))['then'](function(_0x2afc9f){if(_0x2afc9f){_0x2633e3[_0x5c77('0x37')]=_[_0x5c77('0x39')](db[_0x5c77('0xd0')]['rawAttributes']);_0x2633e3['query']=_[_0x5c77('0x39')](_0x4762f8[_0x5c77('0x38')]);_0x2633e3['filters']=_[_0x5c77('0x3c')](_0x2633e3[_0x5c77('0x37')],_0x2633e3['query']);_0x51a390[_0x5c77('0x3b')]=_[_0x5c77('0x3c')](_0x2633e3['model'],qs['fields'](_0x4762f8[_0x5c77('0x38')][_0x5c77('0x4e')]));_0x51a390[_0x5c77('0x3b')]=_0x51a390[_0x5c77('0x3b')][_0x5c77('0x3d')]?_0x51a390[_0x5c77('0x3b')]:_0x2633e3[_0x5c77('0x37')];if(!_0x4762f8[_0x5c77('0x38')][_0x5c77('0x3e')]('nolimit')){_0x51a390['limit']=qs[_0x5c77('0x22')](_0x4762f8[_0x5c77('0x38')][_0x5c77('0x22')]);_0x51a390[_0x5c77('0x23')]=qs[_0x5c77('0x23')](_0x4762f8['query'][_0x5c77('0x23')]);}_0x51a390[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x4762f8[_0x5c77('0x38')][_0x5c77('0x41')]);_0x51a390[_0x5c77('0x42')]=qs[_0x5c77('0x3a')](_[_0x5c77('0x43')](_0x4762f8[_0x5c77('0x38')],_0x2633e3['filters']));_0x51a390[_0x5c77('0x42')][_0x5c77('0x5b')]=_0x2afc9f['id'];if(_0x4762f8[_0x5c77('0x38')][_0x5c77('0x5e')]){_0x51a390[_0x5c77('0x42')]=_[_0x5c77('0x44')](_0x51a390[_0x5c77('0x42')],{'$or':_['map'](_0x51a390[_0x5c77('0x3b')],function(_0x4f756e){var _0x241286={};_0x241286[_0x4f756e]={'$like':'%'+_0x4762f8[_0x5c77('0x38')][_0x5c77('0x5e')]+'%'};return _0x241286;})});}_0x51a390=_[_0x5c77('0x44')]({},_0x51a390,_0x4762f8['options']);return db[_0x5c77('0xd0')][_0x5c77('0x47')]({'where':_0x51a390[_0x5c77('0x42')]})[_0x5c77('0x13')](function(_0x7e56ad){_0x3122e9[_0x5c77('0x47')]=_0x7e56ad;if(_0x4762f8[_0x5c77('0x38')][_0x5c77('0x48')]){_0x51a390[_0x5c77('0x49')]=[{'all':!![]}];}else{_0x51a390[_0x5c77('0x49')]=[{'model':db['CmContact'],'as':_0x5c77('0x12b'),'required':![]},{'model':db[_0x5c77('0xd9')],'as':_0x5c77('0x12c'),'required':![]}];}return db['ChatOfflineMessage'][_0x5c77('0x4a')](_0x51a390);})[_0x5c77('0x13')](function(_0x3fb169){_0x3122e9[_0x5c77('0x4b')]=_0x3fb169;return _0x3122e9;});}})[_0x5c77('0x13')](respondWithFilteredResult(_0x32080f,_0x51a390))[_0x5c77('0x1d')](handleError(_0x32080f,null));};exports[_0x5c77('0x12d')]=function(_0x1c1464,_0x4058c5){return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x1c1464[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x4058c5,null))[_0x5c77('0x13')](function(_0x5264b6){if(_0x5264b6){return _0x5264b6['addAgents'](_0x1c1464[_0x5c77('0x51')][_0x5c77('0x60')],_[_0x5c77('0xf1')](_0x1c1464[_0x5c77('0x51')],[_0x5c77('0x60'),'id'])||{})[_0x5c77('0xae')](function(_0x17fe60){for(var _0x3d9b40=0x0;_0x3d9b40<_0x1c1464[_0x5c77('0x51')][_0x5c77('0x60')][_0x5c77('0x3d')];_0x3d9b40+=0x1){socket[_0x5c77('0x12e')](_0x5c77('0x12f'),{'UserId':Number(_0x1c1464[_0x5c77('0x51')][_0x5c77('0x60')][_0x3d9b40]),'ChatWebsiteId':Number(_0x1c1464[_0x5c77('0x58')]['id'])});}return _0x17fe60;});}})[_0x5c77('0x13')](respondWithResult(_0x4058c5,null))[_0x5c77('0x1d')](handleError(_0x4058c5,null));};exports[_0x5c77('0x130')]=function(_0x26ca91,_0x17c521){return db[_0x5c77('0x33')][_0x5c77('0x4f')]({'where':{'id':_0x26ca91[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x17c521,null))[_0x5c77('0x13')](function(_0x40f229){if(_0x40f229){return _0x40f229[_0x5c77('0x130')](_0x26ca91['query']['ids'])[_0x5c77('0x13')](function(){if(_[_0x5c77('0x131')](_0x26ca91[_0x5c77('0x38')][_0x5c77('0x60')])){for(var _0x333b1d=0x0;_0x333b1d<_0x26ca91[_0x5c77('0x38')][_0x5c77('0x60')][_0x5c77('0x3d')];_0x333b1d+=0x1){socket[_0x5c77('0x12e')](_0x5c77('0x132'),{'UserId':Number(_0x26ca91[_0x5c77('0x38')][_0x5c77('0x60')][_0x333b1d]),'ChatWebsiteId':Number(_0x26ca91[_0x5c77('0x58')]['id'])});}}else{socket[_0x5c77('0x12e')]('userChatWebsite:remove',{'UserId':Number(_0x26ca91['query'][_0x5c77('0x60')]),'ChatWebsiteId':Number(_0x26ca91['params']['id'])});}});}})[_0x5c77('0x13')](respondWithStatusCode(_0x17c521,null))[_0x5c77('0x1d')](handleError(_0x17c521,null));};exports[_0x5c77('0x133')]=function(_0x1d18b8,_0x2095ae){var _0x358721={};var _0x288e08={};var _0x591ef5;var _0x4fb02d;return db[_0x5c77('0x33')]['findOne']({'where':{'id':_0x1d18b8[_0x5c77('0x58')]['id']}})[_0x5c77('0x13')](handleEntityNotFound(_0x2095ae,null))[_0x5c77('0x13')](function(_0xe8722f){if(_0xe8722f){_0x591ef5=_0xe8722f;_0x288e08[_0x5c77('0x37')]=_[_0x5c77('0x39')](db[_0x5c77('0xba')][_0x5c77('0x4d')]);_0x288e08[_0x5c77('0x38')]=_[_0x5c77('0x39')](_0x1d18b8[_0x5c77('0x38')]);_0x288e08['filters']=_[_0x5c77('0x3c')](_0x288e08[_0x5c77('0x37')],_0x288e08[_0x5c77('0x38')]);_0x358721[_0x5c77('0x3b')]=_[_0x5c77('0x3c')](_0x288e08[_0x5c77('0x37')],qs[_0x5c77('0x4e')](_0x1d18b8[_0x5c77('0x38')][_0x5c77('0x4e')]));_0x358721['attributes']=_0x358721[_0x5c77('0x3b')]['length']?_0x358721[_0x5c77('0x3b')]:_0x288e08[_0x5c77('0x37')];_0x358721[_0x5c77('0x40')]=qs[_0x5c77('0x41')](_0x1d18b8[_0x5c77('0x38')][_0x5c77('0x41')]);_0x358721[_0x5c77('0x42')]=qs[_0x5c77('0x3a')](_[_0x5c77('0x43')](_0x1d18b8[_0x5c77('0x38')],_0x288e08['filters']));if(_0x1d18b8[_0x5c77('0x38')][_0x5c77('0x5e')]){_0x358721['where']=_[_0x5c77('0x44')](_0x358721[_0x5c77('0x42')],{'$or':_[_0x5c77('0x32')](_0x358721[_0x5c77('0x3b')],function(_0x31d377){var _0x7901c3={};_0x7901c3[_0x31d377]={'$like':'%'+_0x1d18b8[_0x5c77('0x38')][_0x5c77('0x5e')]+'%'};return _0x7901c3;})});}_0x358721=_[_0x5c77('0x44')]({},_0x358721,_0x1d18b8[_0x5c77('0x46')]);return _0x591ef5[_0x5c77('0x133')](_0x358721);}})[_0x5c77('0x13')](function(_0x28fe46){if(_0x28fe46){_0x4fb02d=_0x28fe46[_0x5c77('0x3d')];if(!_0x1d18b8[_0x5c77('0x38')][_0x5c77('0x3e')](_0x5c77('0x3f'))){_0x358721['limit']=qs[_0x5c77('0x22')](_0x1d18b8['query']['limit']);_0x358721[_0x5c77('0x23')]=qs['offset'](_0x1d18b8[_0x5c77('0x38')]['offset']);}return _0x591ef5[_0x5c77('0x133')](_0x358721);}})[_0x5c77('0x13')](function(_0x54ec47){if(_0x54ec47){return _0x54ec47?{'count':_0x4fb02d,'rows':_0x54ec47}:null;}})[_0x5c77('0x13')](respondWithResult(_0x2095ae,null))[_0x5c77('0x1d')](handleError(_0x2095ae,null));};
\ No newline at end of file
+var _0x1d91=['virtual','replace','alignment','labelText','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','transaction','Transaction','READ_COMMITTED','findAndCountAll','stack','finally','json','getApplications','addProactiveActions','omit','getProactiveActions','ChatProactiveAction','false','offlineForm','onlineForm','items','fromKey','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','mustache','util','path','fs-extra','lodash','querystring','html-to-text','jayson/promise','url','../../components/parsers/qs','../../errors/api','APIOutOfIntervalError','APINotFoundError','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./chatWebsite.socket','register','http','client','request','request\x20sent','debug','stringify','error','ChatWebsite,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','update','destroy','ChatWebsites','UserProfileResource','then','name','send','Command','timezone','interval','format','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','No\x20timezone','map','Intervals','some','user-agent-parser','setUA','user-agent','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','%s\x20%s','unknown','device','model','vendor','%s\x20%s\x20%s','type','Pause','ChatWebsite','rawAttributes','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','mandatoryDispositionPause','includeAll','find','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','findOne','nolimit','pick','removeDispositions','getAnswers','CannedAnswer','removeAnswers','ids','addLogo','sitepic','filename','addAvatar','agentAvatar','file','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','root','../../config/license/util','getLicense','existsSync','join','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','isNil','notify','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','updatedAt','difference','createdAt','CompanyId','from','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','List','Contacts','DESC','ChatApplication','Applications','Interval','applications','orderBy','priority','asc','account','ListId','headers','threadId','ChatInteraction','externalUrl','interaction','contact','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','from\x20is\x20mandatory','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','spread','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','files','attachments','basename','openNewInteraction','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','MailAccountId','subjectOffline','toPairsIn','mapValues','email','Chat','NotifyMailAccount','notifyMail','offline-chat','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','custom','License','chatLicenseExceeded','readFileSync','server/files/chat/iframe.ejs','URL','address','remote','x-real-ip','connection'];(function(_0x22e983,_0x6298b0){var _0x68878f=function(_0x467dff){while(--_0x467dff){_0x22e983['push'](_0x22e983['shift']());}};_0x68878f(++_0x6298b0);}(_0x1d91,0x150));var _0x11d9=function(_0x2e6710,_0x135db3){_0x2e6710=_0x2e6710-0x0;var _0x3e6db4=_0x1d91[_0x2e6710];return _0x3e6db4;};'use strict';var Mustache=require(_0x11d9('0x0'));var util=require(_0x11d9('0x1'));var path=require(_0x11d9('0x2'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x11d9('0x3'));var _=require(_0x11d9('0x4'));var querystring=require(_0x11d9('0x5'));var htmlToText=require(_0x11d9('0x6'));var Redis=require('ioredis');var jayson=require(_0x11d9('0x7'));var url=require(_0x11d9('0x8'));var qs=require(_0x11d9('0x9'));var logger=require('../../config/logger')('api');var config=require('../../config/environment');var APIOutOfIntervalError=require(_0x11d9('0xa'))[_0x11d9('0xb')];var APINotFoundError=require(_0x11d9('0xa'))[_0x11d9('0xc')];var APIHandleError=require(_0x11d9('0xa'))['handleError'];var db=require(_0x11d9('0xd'))['db'];config['redis']=_[_0x11d9('0xe')](config['redis'],{'host':_0x11d9('0xf'),'port':0x18eb});var socket=require(_0x11d9('0x10'))(new Redis(config[_0x11d9('0x11')]));require(_0x11d9('0x12'))[_0x11d9('0x13')](socket);var client=jayson['client'][_0x11d9('0x14')]({'port':0x232c});var client9002=jayson['client'][_0x11d9('0x14')]({'port':0x232a});var client9003=jayson[_0x11d9('0x15')]['http']({'port':0x232b});var client9001=jayson[_0x11d9('0x15')][_0x11d9('0x14')]({'port':0x2329});function respondWithRpcPromise(_0x3c4ee3,_0x2686ab,_0x5e7e9b,_0x4d5281){return new Promise(function(_0x2da081,_0x37b9b2){var _0x3f5a02=_0x4d5281||client;return _0x3f5a02[_0x11d9('0x16')](_0x3c4ee3,_0x5e7e9b)['then'](function(_0x5bd26a){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x2686ab,_0x11d9('0x17'));logger[_0x11d9('0x18')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x2686ab,'request\x20sent',JSON[_0x11d9('0x19')](_0x5bd26a));if(_0x5bd26a['error']){if(_0x5bd26a[_0x11d9('0x1a')]['code']===0x1f4){logger['error'](_0x11d9('0x1b'),_0x2686ab,_0x5bd26a[_0x11d9('0x1a')][_0x11d9('0x1c')]);return _0x37b9b2(_0x5bd26a[_0x11d9('0x1a')]['message']);}logger[_0x11d9('0x1a')](_0x11d9('0x1b'),_0x2686ab,_0x5bd26a['error']['message']);return _0x2da081(_0x5bd26a[_0x11d9('0x1a')][_0x11d9('0x1c')]);}else{logger[_0x11d9('0x1d')]('ChatWebsite,\x20%s,\x20%s',_0x2686ab,_0x11d9('0x17'));_0x2da081(_0x5bd26a[_0x11d9('0x1e')][_0x11d9('0x1c')]);}})[_0x11d9('0x1f')](function(_0x2d6956){logger[_0x11d9('0x1a')](_0x11d9('0x1b'),_0x2686ab,_0x2d6956);_0x37b9b2(_0x2d6956);});});}function respondWithStatusCode(_0x1acd78,_0x55fe84){_0x55fe84=_0x55fe84||0xcc;return function(_0x1e9bdd){if(_0x1e9bdd){return _0x1acd78[_0x11d9('0x20')](_0x55fe84);}return _0x1acd78['status'](_0x55fe84)[_0x11d9('0x21')]();};}function respondWithResult(_0xd743c7,_0x3236e4){_0x3236e4=_0x3236e4||0xc8;return function(_0x15ee10){if(_0x15ee10){return _0xd743c7[_0x11d9('0x22')](_0x3236e4)['json'](_0x15ee10);}};}function respondWithFilteredResult(_0x282c41,_0x3c171b){return function(_0x2b6c36){if(_0x2b6c36){var _0x47aca9=typeof _0x3c171b[_0x11d9('0x23')]===_0x11d9('0x24')&&typeof _0x3c171b[_0x11d9('0x25')]==='undefined';var _0x4f3240=_0x2b6c36[_0x11d9('0x26')];var _0x4a8e66=_0x47aca9?0x0:_0x3c171b[_0x11d9('0x23')];var _0x14af39=_0x47aca9?_0x2b6c36['count']:_0x3c171b[_0x11d9('0x23')]+_0x3c171b[_0x11d9('0x25')];var _0x1b4ba9;if(_0x14af39>=_0x4f3240){_0x14af39=_0x4f3240;_0x1b4ba9=0xc8;}else{_0x1b4ba9=0xce;}_0x282c41['status'](_0x1b4ba9);return _0x282c41[_0x11d9('0x27')]('Content-Range',_0x4a8e66+'-'+_0x14af39+'/'+_0x4f3240)['json'](_0x2b6c36);}return null;};}function saveUpdates(_0x18bb9e){return function(_0x5c4fe6){if(_0x5c4fe6){return _0x5c4fe6[_0x11d9('0x28')](_0x18bb9e)['then'](function(_0x3c75cf){return _0x3c75cf;});}return null;};}function removeEntity(_0x1acd41){return function(_0x534b7c){if(_0x534b7c){return _0x534b7c[_0x11d9('0x29')]()['then'](function(){var _0x402498=_0x534b7c['get']({'plain':!![]});var _0x366676=_0x11d9('0x2a');return db[_0x11d9('0x2b')][_0x11d9('0x29')]({'where':{'type':_0x366676,'resourceId':_0x402498['id']}})[_0x11d9('0x2c')](function(){return _0x534b7c;});})[_0x11d9('0x2c')](function(){_0x1acd41[_0x11d9('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a4b42){return function(_0xfb33a){if(!_0xfb33a){_0x4a4b42[_0x11d9('0x20')](0x194);}return _0xfb33a;};}function handleError(_0x15d288,_0x2cb9a9){_0x2cb9a9=_0x2cb9a9||0x1f4;return function(_0x3adfc5){logger[_0x11d9('0x1a')](_0x3adfc5['stack']);if(_0x3adfc5[_0x11d9('0x2d')]){delete _0x3adfc5[_0x11d9('0x2d')];}_0x15d288['status'](_0x2cb9a9)[_0x11d9('0x2e')](_0x3adfc5);};}function iftimePromise(_0x46e40a,_0xd50183){return respondWithRpcPromise(_0x11d9('0x2f'),'getSnippet',{'command':_0xd50183[_0x11d9('0x30')]?util['format']('iftime\x20%s,%s',_0x46e40a[_0x11d9('0x31')],_0xd50183[_0x11d9('0x30')]):util[_0x11d9('0x32')]('iftime\x20%s',_0x46e40a['interval'])},client9002)[_0x11d9('0x2c')](function(_0x131f67){var _0x99b8f8=_0x131f67&&_0x131f67['indexOf'](_0x11d9('0x33'))>=0x0?!![]:![];logger[_0x11d9('0x1d')](_0x11d9('0x34'),_0xd50183['id'],_0x46e40a['id'],_0x46e40a[_0x11d9('0x31')],_0x99b8f8?_0x11d9('0x35'):_0x11d9('0x36'),_0xd50183[_0x11d9('0x30')]?_0xd50183[_0x11d9('0x30')]:'No\x20timezone');return _0x99b8f8;})['catch'](function(_0x2f6b9f){logger[_0x11d9('0x1a')](_0x11d9('0x34'),_0xd50183['id'],_0x46e40a['id'],_0x46e40a['interval'],util[_0x11d9('0x37')](_0x2f6b9f,{'showHidden':![],'depth':null}),_0xd50183[_0x11d9('0x30')]?_0xd50183[_0x11d9('0x30')]:_0x11d9('0x38'));return![];});}function checkWebsiteIntervals(_0x4117cc){var _0x4d9e98=_[_0x11d9('0x39')](_0x4117cc['Interval'][_0x11d9('0x3a')],function(_0x4f0c72){var _0x5a9da0=_0x4f0c72['get']({'plain':!![]});return iftimePromise(_0x5a9da0,_0x4117cc);});return Promise['all'](_0x4d9e98)[_0x11d9('0x2c')](function(_0x328b55){return _[_0x11d9('0x3b')](_0x328b55);});}function createInteractionObject(_0x39228e,_0x4ffb0a,_0x35a602,_0x17bf3d){var _0xc5541=require(_0x11d9('0x3c'));var _0x494138=new _0xc5541();var _0x2119db=_0x494138[_0x11d9('0x3d')](_0x35a602[_0x11d9('0x3e')])['getResult']();var _0x67fb7f=_0x4ffb0a[_0x11d9('0x3f')];if(_0x35a602[_0x11d9('0x40')]){_0x67fb7f=_0x35a602[_0x11d9('0x40')];}else if(_0x35a602[_0x11d9('0x41')]){_0x67fb7f=_[_0x11d9('0x42')](_0x35a602[_0x11d9('0x41')][_0x11d9('0x43')](','));}return{'ContactId':_0x17bf3d['id'],'ChatWebsiteId':_0x39228e,'from':(_0x17bf3d[_0x11d9('0x44')]||'')+'\x20'+(_0x17bf3d[_0x11d9('0x45')]||''),'customerIp':_0x67fb7f,'customerPort':_0x35a602[_0x11d9('0x46')]?_0x35a602['x-real-port']:null,'referer':_0x4ffb0a[_0x11d9('0x47')],'browserName':_0x2119db[_0x11d9('0x48')][_0x11d9('0x2d')]&&_0x2119db[_0x11d9('0x48')][_0x11d9('0x49')]?util[_0x11d9('0x32')](_0x11d9('0x4a'),_0x2119db['browser'][_0x11d9('0x2d')],_0x2119db['browser'][_0x11d9('0x49')]):_0x11d9('0x4b'),'browserVersion':_0x2119db[_0x11d9('0x48')][_0x11d9('0x49')]||_0x11d9('0x4b'),'osName':util[_0x11d9('0x32')](_0x11d9('0x4a'),_0x2119db['os']['name'],_0x2119db['os'][_0x11d9('0x49')]),'osVersion':_0x2119db['os']['version'],'deviceModel':_0x2119db[_0x11d9('0x4c')][_0x11d9('0x4d')]&&_0x2119db[_0x11d9('0x4c')][_0x11d9('0x4e')]?util[_0x11d9('0x32')](_0x11d9('0x4f'),_0x2119db[_0x11d9('0x4c')][_0x11d9('0x4d')],_0x2119db[_0x11d9('0x4c')]['vendor'],_0x2119db[_0x11d9('0x4c')]['type']):null,'deviceVendor':_0x2119db['device']['vendor'],'deviceType':_0x2119db[_0x11d9('0x4c')][_0x11d9('0x50')],'formData':JSON[_0x11d9('0x19')](_0x4ffb0a)};}exports['index']=function(_0xbda02d,_0x147aba){var _0x4e9b9c={'include':[{'model':db[_0x11d9('0x51')],'as':'mandatoryDispositionPause'}]},_0xe4610={},_0x1454d2={'count':0x0,'rows':[]};var _0x4716a0=_[_0x11d9('0x39')](db[_0x11d9('0x52')][_0x11d9('0x53')],function(_0x13cda2){return{'name':_0x13cda2['fieldName'],'type':_0x13cda2[_0x11d9('0x50')]['key']};});_0xe4610[_0x11d9('0x4d')]=_[_0x11d9('0x39')](_0x4716a0,_0x11d9('0x2d'));_0xe4610['query']=_[_0x11d9('0x54')](_0xbda02d[_0x11d9('0x55')]);_0xe4610[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0xe4610[_0x11d9('0x4d')],_0xe4610['query']);_0x4e9b9c[_0x11d9('0x58')]=_['intersection'](_0xe4610[_0x11d9('0x4d')],qs[_0x11d9('0x59')](_0xbda02d[_0x11d9('0x55')][_0x11d9('0x59')]));_0x4e9b9c[_0x11d9('0x58')]=_0x4e9b9c[_0x11d9('0x58')][_0x11d9('0x5a')]?_0x4e9b9c[_0x11d9('0x58')]:_0xe4610[_0x11d9('0x4d')];if(!_0xbda02d['query'][_0x11d9('0x5b')]('nolimit')){_0x4e9b9c[_0x11d9('0x25')]=qs[_0x11d9('0x25')](_0xbda02d['query']['limit']);_0x4e9b9c[_0x11d9('0x23')]=qs[_0x11d9('0x23')](_0xbda02d[_0x11d9('0x55')][_0x11d9('0x23')]);}_0x4e9b9c[_0x11d9('0x5c')]=qs[_0x11d9('0x5d')](_0xbda02d[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x4e9b9c[_0x11d9('0x5e')]=qs[_0x11d9('0x56')](_['pick'](_0xbda02d[_0x11d9('0x55')],_0xe4610[_0x11d9('0x56')]),_0x4716a0);if(_0xbda02d[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x4e9b9c[_0x11d9('0x5e')]=_[_0x11d9('0x60')](_0x4e9b9c[_0x11d9('0x5e')],{'$or':_[_0x11d9('0x39')](_0x4716a0,function(_0x25043e){if(_0x25043e[_0x11d9('0x50')]!==_0x11d9('0x61')){var _0x3b04f0={};_0x3b04f0[_0x25043e[_0x11d9('0x2d')]]={'$like':'%'+_0xbda02d[_0x11d9('0x55')][_0x11d9('0x5f')]+'%'};return _0x3b04f0;}})});}_0x4e9b9c=_[_0x11d9('0x60')]({},_0x4e9b9c,_0xbda02d[_0x11d9('0x62')]);var _0x4484fa={'where':_0x4e9b9c[_0x11d9('0x5e')]};return db[_0x11d9('0x52')][_0x11d9('0x26')](_0x4484fa)[_0x11d9('0x2c')](function(_0x1c6f92){_0x1454d2['count']=_0x1c6f92;if(_0xbda02d['query']['includeAll']){_0x4e9b9c[_0x11d9('0x63')]=[{'all':!![]}];}return db[_0x11d9('0x52')][_0x11d9('0x64')](_0x4e9b9c);})[_0x11d9('0x2c')](function(_0x8f87a2){_0x1454d2[_0x11d9('0x65')]=_0x8f87a2;return _0x1454d2;})[_0x11d9('0x2c')](respondWithFilteredResult(_0x147aba,_0x4e9b9c))[_0x11d9('0x1f')](handleError(_0x147aba,null));};exports[_0x11d9('0x66')]=function(_0xbe9f2e,_0x2d5f74){var _0x581b6b={'raw':![],'where':{'id':_0xbe9f2e[_0x11d9('0x67')]['id']},'include':[{'model':db[_0x11d9('0x51')],'as':_0x11d9('0x68')}]},_0x1d5e2a={};_0x1d5e2a[_0x11d9('0x4d')]=_['keys'](db['ChatWebsite']['rawAttributes']);_0x1d5e2a['query']=_[_0x11d9('0x54')](_0xbe9f2e[_0x11d9('0x55')]);_0x1d5e2a[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0x1d5e2a[_0x11d9('0x4d')],_0x1d5e2a[_0x11d9('0x55')]);_0x581b6b[_0x11d9('0x58')]=_[_0x11d9('0x57')](_0x1d5e2a[_0x11d9('0x4d')],qs[_0x11d9('0x59')](_0xbe9f2e[_0x11d9('0x55')][_0x11d9('0x59')]));_0x581b6b['attributes']=_0x581b6b[_0x11d9('0x58')]['length']?_0x581b6b[_0x11d9('0x58')]:_0x1d5e2a['model'];if(_0xbe9f2e[_0x11d9('0x55')][_0x11d9('0x69')]){_0x581b6b['include']=[{'all':!![]}];}_0x581b6b=_[_0x11d9('0x60')]({},_0x581b6b,_0xbe9f2e[_0x11d9('0x62')]);return db[_0x11d9('0x52')][_0x11d9('0x6a')](_0x581b6b)[_0x11d9('0x2c')](handleEntityNotFound(_0x2d5f74,null))['then'](respondWithResult(_0x2d5f74,null))[_0x11d9('0x1f')](handleError(_0x2d5f74,null));};exports[_0x11d9('0x6b')]=function(_0x240dc8,_0xab6a9a){return db['ChatWebsite']['create'](_0x240dc8[_0x11d9('0x6c')],{})[_0x11d9('0x2c')](function(_0x269e38){var _0x4e8c55=_0x240dc8[_0x11d9('0x6d')][_0x11d9('0x6e')]({'plain':!![]});if(!_0x4e8c55)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e8c55[_0x11d9('0x6f')]==='user'){var _0x5e1fee=_0x269e38[_0x11d9('0x6e')]({'plain':!![]});var _0x519c24='ChatWebsites';return db[_0x11d9('0x70')][_0x11d9('0x6a')]({'where':{'name':_0x519c24,'userProfileId':_0x4e8c55[_0x11d9('0x71')]},'raw':!![]})['then'](function(_0x2d5031){if(_0x2d5031&&_0x2d5031[_0x11d9('0x72')]===0x0){return db[_0x11d9('0x2b')][_0x11d9('0x6b')]({'name':_0x5e1fee[_0x11d9('0x2d')],'resourceId':_0x5e1fee['id'],'type':_0x2d5031[_0x11d9('0x2d')],'sectionId':_0x2d5031['id']},{})['then'](function(){return _0x269e38;});}else{return _0x269e38;}})[_0x11d9('0x1f')](function(_0x57ec17){logger['error'](_0x11d9('0x73'),_0x57ec17);throw _0x57ec17;});}return _0x269e38;})[_0x11d9('0x2c')](respondWithResult(_0xab6a9a,0xc9))['catch'](handleError(_0xab6a9a,null));};exports['update']=function(_0x23a321,_0x5b80a0){if(_0x23a321[_0x11d9('0x6c')]['id']){delete _0x23a321[_0x11d9('0x6c')]['id'];}return db[_0x11d9('0x52')]['find']({'where':{'id':_0x23a321['params']['id']},'include':[{'model':db[_0x11d9('0x51')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x5b80a0,null))[_0x11d9('0x2c')](saveUpdates(_0x23a321['body'],null))['then'](respondWithResult(_0x5b80a0,null))[_0x11d9('0x1f')](handleError(_0x5b80a0,null));};exports['destroy']=function(_0xd72d12,_0x56a356){return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0xd72d12[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x56a356,null))[_0x11d9('0x2c')](removeEntity(_0x56a356,null))['catch'](handleError(_0x56a356,null));};exports[_0x11d9('0x74')]=function(_0x1a1f04,_0x52788c){return db[_0x11d9('0x52')][_0x11d9('0x74')]()['then'](respondWithResult(_0x52788c,null))[_0x11d9('0x1f')](handleError(_0x52788c,null));};exports[_0x11d9('0x75')]=function(_0x5f3d13,_0x38557d){if(_0x5f3d13[_0x11d9('0x6c')]['id']){delete _0x5f3d13[_0x11d9('0x6c')]['id'];}return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x5f3d13[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x38557d,null))[_0x11d9('0x2c')](function(_0x14e62b){if(_0x14e62b){_0x5f3d13[_0x11d9('0x6c')][_0x11d9('0x76')]=_0x14e62b['id'];return db[_0x11d9('0x77')][_0x11d9('0x6b')](_0x5f3d13['body']);}})['then'](respondWithResult(_0x38557d,null))[_0x11d9('0x1f')](handleError(_0x38557d,null));};exports['getDispositions']=function(_0x3896ce,_0x1b1fd6){var _0x505358={'raw':![],'where':{}};var _0x192c1d={};var _0x37bc25={'count':0x0,'rows':[]};return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0x3896ce[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x1b1fd6,null))[_0x11d9('0x2c')](function(_0x1ebd59){if(_0x1ebd59){_0x192c1d['model']=_[_0x11d9('0x54')](db[_0x11d9('0x77')]['rawAttributes']);_0x192c1d['query']=_[_0x11d9('0x54')](_0x3896ce[_0x11d9('0x55')]);_0x192c1d[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0x192c1d[_0x11d9('0x4d')],_0x192c1d[_0x11d9('0x55')]);_0x505358[_0x11d9('0x58')]=_[_0x11d9('0x57')](_0x192c1d[_0x11d9('0x4d')],qs[_0x11d9('0x59')](_0x3896ce[_0x11d9('0x55')][_0x11d9('0x59')]));_0x505358[_0x11d9('0x58')]=_0x505358[_0x11d9('0x58')][_0x11d9('0x5a')]?_0x505358[_0x11d9('0x58')]:_0x192c1d[_0x11d9('0x4d')];if(!_0x3896ce['query'][_0x11d9('0x5b')](_0x11d9('0x79'))){_0x505358[_0x11d9('0x25')]=qs[_0x11d9('0x25')](_0x3896ce[_0x11d9('0x55')][_0x11d9('0x25')]);_0x505358['offset']=qs['offset'](_0x3896ce[_0x11d9('0x55')][_0x11d9('0x23')]);}_0x505358['order']=qs[_0x11d9('0x5d')](_0x3896ce[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x505358['where']=qs[_0x11d9('0x56')](_[_0x11d9('0x7a')](_0x3896ce[_0x11d9('0x55')],_0x192c1d['filters']));_0x505358[_0x11d9('0x5e')][_0x11d9('0x76')]=_0x1ebd59['id'];if(_0x3896ce[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x505358[_0x11d9('0x5e')]=_[_0x11d9('0x60')](_0x505358['where'],{'$or':_[_0x11d9('0x39')](_0x505358[_0x11d9('0x58')],function(_0x247cfb){var _0x4e0907={};_0x4e0907[_0x247cfb]={'$like':'%'+_0x3896ce[_0x11d9('0x55')]['filter']+'%'};return _0x4e0907;})});}_0x505358=_['merge']({},_0x505358,_0x3896ce[_0x11d9('0x62')]);return db[_0x11d9('0x77')]['count']({'where':_0x505358[_0x11d9('0x5e')]})[_0x11d9('0x2c')](function(_0x352ed3){_0x37bc25[_0x11d9('0x26')]=_0x352ed3;if(_0x3896ce[_0x11d9('0x55')][_0x11d9('0x69')]){_0x505358[_0x11d9('0x63')]=[{'all':!![]}];}return db[_0x11d9('0x77')][_0x11d9('0x64')](_0x505358);})[_0x11d9('0x2c')](function(_0x3d44f8){_0x37bc25[_0x11d9('0x65')]=_0x3d44f8;return _0x37bc25;});}})[_0x11d9('0x2c')](respondWithFilteredResult(_0x1b1fd6,_0x505358))[_0x11d9('0x1f')](handleError(_0x1b1fd6,null));};exports[_0x11d9('0x7b')]=function(_0x5da6f8,_0x3b3ffd){return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x5da6f8[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x3b3ffd,null))[_0x11d9('0x2c')](function(_0x34f01b){if(_0x34f01b){return _0x34f01b[_0x11d9('0x7b')](_0x5da6f8[_0x11d9('0x55')]['ids']);}})['then'](respondWithStatusCode(_0x3b3ffd,null))['catch'](handleError(_0x3b3ffd,null));};exports['addAnswer']=function(_0x3d8112,_0x127a54){if(_0x3d8112['body']['id']){delete _0x3d8112['body']['id'];}return db[_0x11d9('0x52')]['find']({'where':{'id':_0x3d8112['params']['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x127a54,null))['then'](function(_0x3c6c59){if(_0x3c6c59){_0x3d8112[_0x11d9('0x6c')]['ChatWebsiteId']=_0x3c6c59['id'];return db['CannedAnswer'][_0x11d9('0x6b')](_0x3d8112[_0x11d9('0x6c')]);}})[_0x11d9('0x2c')](respondWithResult(_0x127a54,null))[_0x11d9('0x1f')](handleError(_0x127a54,null));};exports[_0x11d9('0x7c')]=function(_0xd9484b,_0x50eef1){var _0x318672={'raw':![],'where':{}};var _0x424c4e={};var _0xa24c05={'count':0x0,'rows':[]};return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0xd9484b[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x50eef1,null))[_0x11d9('0x2c')](function(_0x5b8a21){if(_0x5b8a21){_0x424c4e[_0x11d9('0x4d')]=_[_0x11d9('0x54')](db[_0x11d9('0x7d')]['rawAttributes']);_0x424c4e[_0x11d9('0x55')]=_[_0x11d9('0x54')](_0xd9484b['query']);_0x424c4e[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0x424c4e[_0x11d9('0x4d')],_0x424c4e[_0x11d9('0x55')]);_0x318672[_0x11d9('0x58')]=_[_0x11d9('0x57')](_0x424c4e[_0x11d9('0x4d')],qs['fields'](_0xd9484b[_0x11d9('0x55')]['fields']));_0x318672[_0x11d9('0x58')]=_0x318672['attributes']['length']?_0x318672[_0x11d9('0x58')]:_0x424c4e['model'];if(!_0xd9484b['query'][_0x11d9('0x5b')]('nolimit')){_0x318672[_0x11d9('0x25')]=qs[_0x11d9('0x25')](_0xd9484b[_0x11d9('0x55')]['limit']);_0x318672['offset']=qs[_0x11d9('0x23')](_0xd9484b['query']['offset']);}_0x318672[_0x11d9('0x5c')]=qs['sort'](_0xd9484b[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x318672['where']=qs[_0x11d9('0x56')](_[_0x11d9('0x7a')](_0xd9484b[_0x11d9('0x55')],_0x424c4e['filters']));_0x318672['where']['ChatWebsiteId']=_0x5b8a21['id'];if(_0xd9484b[_0x11d9('0x55')]['filter']){_0x318672['where']=_[_0x11d9('0x60')](_0x318672[_0x11d9('0x5e')],{'$or':_[_0x11d9('0x39')](_0x318672['attributes'],function(_0x31a120){var _0xcf68c6={};_0xcf68c6[_0x31a120]={'$like':'%'+_0xd9484b[_0x11d9('0x55')][_0x11d9('0x5f')]+'%'};return _0xcf68c6;})});}_0x318672=_['merge']({},_0x318672,_0xd9484b[_0x11d9('0x62')]);return db[_0x11d9('0x7d')][_0x11d9('0x26')]({'where':_0x318672['where']})['then'](function(_0x2b897c){_0xa24c05['count']=_0x2b897c;if(_0xd9484b[_0x11d9('0x55')]['includeAll']){_0x318672[_0x11d9('0x63')]=[{'all':!![]}];}return db[_0x11d9('0x7d')][_0x11d9('0x64')](_0x318672);})['then'](function(_0x5e55d8){_0xa24c05[_0x11d9('0x65')]=_0x5e55d8;return _0xa24c05;});}})[_0x11d9('0x2c')](respondWithFilteredResult(_0x50eef1,_0x318672))[_0x11d9('0x1f')](handleError(_0x50eef1,null));};exports[_0x11d9('0x7e')]=function(_0x125222,_0x15c848){return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x125222['params']['id']}})['then'](handleEntityNotFound(_0x15c848,null))['then'](function(_0x2fca0e){if(_0x2fca0e){return _0x2fca0e[_0x11d9('0x7e')](_0x125222[_0x11d9('0x55')][_0x11d9('0x7f')]);}})[_0x11d9('0x2c')](respondWithStatusCode(_0x15c848,null))[_0x11d9('0x1f')](handleError(_0x15c848,null));};exports[_0x11d9('0x80')]=function(_0x47d838,_0x40bfd3){_0x47d838[_0x11d9('0x6c')][_0x11d9('0x81')]=_0x47d838['file'][_0x11d9('0x82')];return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x47d838['params']['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x40bfd3,null))['then'](saveUpdates(_0x47d838['body'],null))['then'](respondWithResult(_0x40bfd3,null))[_0x11d9('0x1f')](handleError(_0x40bfd3,null));};exports[_0x11d9('0x83')]=function(_0x3b0d00,_0x14e86b){_0x3b0d00[_0x11d9('0x6c')][_0x11d9('0x84')]=_0x3b0d00[_0x11d9('0x85')][_0x11d9('0x82')];return db['ChatWebsite'][_0x11d9('0x6a')]({'where':{'id':_0x3b0d00[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x14e86b,null))[_0x11d9('0x2c')](saveUpdates(_0x3b0d00[_0x11d9('0x6c')],null))[_0x11d9('0x2c')](respondWithResult(_0x14e86b,null))[_0x11d9('0x1f')](handleError(_0x14e86b,null));};exports[_0x11d9('0x86')]=function(_0x153010,_0x361255){_0x153010[_0x11d9('0x6c')][_0x11d9('0x87')]=_0x153010[_0x11d9('0x85')][_0x11d9('0x82')];return db[_0x11d9('0x52')]['find']({'where':{'id':_0x153010[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x361255,null))[_0x11d9('0x2c')](saveUpdates(_0x153010[_0x11d9('0x6c')],null))[_0x11d9('0x2c')](respondWithResult(_0x361255,null))['catch'](handleError(_0x361255,null));};exports['addSystemAvatar']=function(_0x1804c8,_0x2afac6){_0x1804c8['body'][_0x11d9('0x88')]=_0x1804c8[_0x11d9('0x85')]['filename'];return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x1804c8['params']['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x2afac6,null))[_0x11d9('0x2c')](saveUpdates(_0x1804c8['body'],null))[_0x11d9('0x2c')](respondWithResult(_0x2afac6,null))[_0x11d9('0x1f')](handleError(_0x2afac6,null));};exports[_0x11d9('0x89')]=function(_0x2c519d,_0x284a91){var _0x43b196=path['join'](config[_0x11d9('0x8a')],'server/files/images/logos/default_logo.svg');var _0x1b0324={'where':{'id':_0x2c519d[_0x11d9('0x67')]['id']},'attributes':['id',_0x11d9('0x81')],'raw':!![]};var _0x2b5a74=![];return require(_0x11d9('0x8b'))[_0x11d9('0x8c')]()[_0x11d9('0x2c')](function(_0xcdc94){if(_0xcdc94){_0x2b5a74=_0xcdc94['custom'];}})[_0x11d9('0x2c')](function(){return db[_0x11d9('0x52')][_0x11d9('0x6a')](_0x1b0324);})['then'](handleEntityNotFound(_0x284a91,null))[_0x11d9('0x2c')](function(_0x15410b){if(_0x15410b){if(!_['isNil'](_0x15410b[_0x11d9('0x81')])){if(fs[_0x11d9('0x8d')](path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0x8f'),_0x15410b[_0x11d9('0x81')]))&&_0x2b5a74){_0x43b196=path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0x8f'),_0x15410b[_0x11d9('0x81')]);}}return _0x284a91[_0x11d9('0x90')](_0x43b196);}})[_0x11d9('0x1f')](handleError(_0x284a91,null));};exports[_0x11d9('0x91')]=function(_0x334df0,_0x380d82){var _0xeb1b9b=path['join'](config[_0x11d9('0x8a')],_0x11d9('0x92'));var _0x517380={'where':{'id':_0x334df0['params']['id']},'attributes':['id',_0x11d9('0x84')],'raw':!![]};return db['ChatWebsite'][_0x11d9('0x6a')](_0x517380)[_0x11d9('0x2c')](handleEntityNotFound(_0x380d82,null))['then'](function(_0x460ae2){if(_0x460ae2){if(!_['isNil'](_0x460ae2[_0x11d9('0x84')])){if(fs[_0x11d9('0x8d')](path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0x93'),_0x460ae2[_0x11d9('0x84')]))){_0xeb1b9b=path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0x93'),_0x460ae2[_0x11d9('0x84')]);}}return _0x380d82[_0x11d9('0x90')](_0xeb1b9b);}})[_0x11d9('0x1f')](handleError(_0x380d82,null));};exports['getCustomerAvatar']=function(_0x4661f7,_0x33ff98){var _0x5a79a0=path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0x94'));var _0x141317={'where':{'id':_0x4661f7[_0x11d9('0x67')]['id']},'attributes':['id','customerAvatar',_0x11d9('0x95')],'raw':!![]};return db[_0x11d9('0x52')][_0x11d9('0x6a')](_0x141317)[_0x11d9('0x2c')](handleEntityNotFound(_0x33ff98,null))['then'](function(_0x1a5429){if(_0x1a5429){if(!_['isNil'](_0x1a5429['customerAvatar'])){if(fs[_0x11d9('0x8d')](path[_0x11d9('0x8e')](config['root'],_0x11d9('0x93'),_0x1a5429[_0x11d9('0x87')]))&&_0x1a5429[_0x11d9('0x95')]){_0x5a79a0=path[_0x11d9('0x8e')](config['root'],_0x11d9('0x93'),_0x1a5429[_0x11d9('0x87')]);}}return _0x33ff98[_0x11d9('0x90')](_0x5a79a0);}})[_0x11d9('0x1f')](handleError(_0x33ff98,null));};exports[_0x11d9('0x96')]=function(_0x479b9e,_0x53b468){var _0x5ac012=path['join'](config['root'],_0x11d9('0x97'));var _0x481a3b={'where':{'id':_0x479b9e[_0x11d9('0x67')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x11d9('0x52')]['find'](_0x481a3b)[_0x11d9('0x2c')](handleEntityNotFound(_0x53b468,null))[_0x11d9('0x2c')](function(_0x568212){if(_0x568212){if(!_[_0x11d9('0x98')](_0x568212[_0x11d9('0x88')])){if(fs[_0x11d9('0x8d')](path[_0x11d9('0x8e')](config['root'],'server/files/images/avatars/',_0x568212[_0x11d9('0x88')]))){_0x5ac012=path['join'](config[_0x11d9('0x8a')],_0x11d9('0x93'),_0x568212[_0x11d9('0x88')]);}}return _0x53b468[_0x11d9('0x90')](_0x5ac012);}})[_0x11d9('0x1f')](handleError(_0x53b468,null));};exports[_0x11d9('0x99')]=function(_0x5246de,_0x46c635){var _0xa921fc={'body':_0x5246de[_0x11d9('0x6c')],'channel':_0x11d9('0x9a')};var _0x230dd3=[];var _0x551a8a=[];var _0x821f8b={};var _0x71bdbb=![];return db[_0x11d9('0x9b')][_0x11d9('0x74')]()[_0x11d9('0x2c')](function(_0x1a8bfe){if(!_0x1a8bfe){throw new db[(_0x11d9('0x9c'))][(_0x11d9('0x9d'))](_0x11d9('0x9e'));}_0x230dd3=_['difference'](_[_0x11d9('0x54')](_0x1a8bfe),['createdAt',_0x11d9('0x9f')]);_0x551a8a=_[_0x11d9('0xa0')](_[_0x11d9('0x54')](_0x1a8bfe),[_0x11d9('0xa1'),_0x11d9('0x9f'),_0x11d9('0xa2'),'ListId']);if(_0x5246de['body']['id']){delete _0x5246de[_0x11d9('0x6c')]['id'];}if(_[_0x11d9('0x98')](_0x5246de[_0x11d9('0x6c')][_0x11d9('0xa3')])){throw new db[(_0x11d9('0x9c'))][(_0x11d9('0x9d'))]('from\x20is\x20mandatory');}if(_[_0x11d9('0x98')](_0x5246de[_0x11d9('0x6c')]['body'])||_0x5246de[_0x11d9('0x6c')][_0x11d9('0x6c')]===''){throw new db['Sequelize'][(_0x11d9('0x9d'))](_0x11d9('0xa4'));}if(_[_0x11d9('0x98')](_0x5246de['body']['mapKey'])){throw new db[(_0x11d9('0x9c'))][(_0x11d9('0x9d'))](_0x11d9('0xa5')+_0x551a8a);}if(!_[_0x11d9('0xa6')](_0x551a8a,_0x5246de[_0x11d9('0x6c')][_0x11d9('0xa7')])){throw new db[(_0x11d9('0x9c'))][(_0x11d9('0x9d'))](_0x11d9('0xa8')+_0x551a8a);}_0x821f8b[_0x5246de[_0x11d9('0x6c')][_0x11d9('0xa7')]]=_0x5246de[_0x11d9('0x6c')]['from'];})[_0x11d9('0x2c')](function(){return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x5246de[_0x11d9('0x67')]['id']},'include':[{'model':db['CmList'],'as':_0x11d9('0xa9'),'include':[{'model':db['CmContact'],'as':_0x11d9('0xaa'),'where':_0x821f8b,'limit':0x1,'order':[['updatedAt',_0x11d9('0xab')]]}]},{'model':db[_0x11d9('0xac')],'as':_0x11d9('0xad')},{'model':db[_0x11d9('0xae')],'as':_0x11d9('0xae'),'include':[{'model':db[_0x11d9('0xae')],'as':'Intervals','attributes':['id',_0x11d9('0x31')],'raw':!![]}]}]});})[_0x11d9('0x2c')](function(_0x796454){if(!_0x796454)throw new APINotFoundError(util[_0x11d9('0x32')]('Chat\x20Website\x20with\x20id\x20%s\x20not\x20found',_0x5246de['params']['id']));if(!_0x796454['Interval']||!_0x796454[_0x11d9('0xae')]['Intervals'])return[_0x796454,!![]];return[_0x796454,checkWebsiteIntervals(_0x796454)];})['spread'](function(_0x5504e5,_0x29c47d){if(!_0x29c47d)throw new APIOutOfIntervalError();if(!_0x5504e5[_0x11d9('0xa9')])return;_0xa921fc['account']=_0x5504e5;_0xa921fc['list']=_0x5504e5[_0x11d9('0xa9')];_0xa921fc[_0x11d9('0xaf')]=_[_0x11d9('0xb0')](_0x5504e5[_0x11d9('0xad')],[_0x11d9('0xb1')],[_0x11d9('0xb2')]);if(_0xa921fc['account'][_0x11d9('0xad')]){delete _0xa921fc['account'][_0x11d9('0xad')];}if(_0xa921fc[_0x11d9('0xb3')][_0x11d9('0xa9')]&&_0xa921fc[_0x11d9('0xb3')][_0x11d9('0xa9')]['Contacts'][_0x11d9('0x5a')]){return _0xa921fc['account'][_0x11d9('0xa9')][_0x11d9('0xaa')][0x0];}var _0x152421=_[_0x11d9('0xe')](_0x5246de[_0x11d9('0x6c')],{'firstName':_0x5246de['body']['from'],'ListId':_0x5504e5[_0x11d9('0xb4')]});_0x152421[_0x5246de['body'][_0x11d9('0xa7')]]=_0x5246de[_0x11d9('0x6c')][_0x11d9('0xa3')];return db[_0x11d9('0x9b')][_0x11d9('0x6b')](_0x152421,{'fields':_0x230dd3,'raw':!![]});})[_0x11d9('0x2c')](function(_0x24650f){_0xa921fc['contact']=_0x24650f;var _0x3d3446=createInteractionObject(_0x5246de[_0x11d9('0x67')]['id'],_0x5246de[_0x11d9('0x6c')],_0x5246de[_0x11d9('0xb5')],_0x24650f);var _0x42d188={'ChatWebsiteId':_0x5246de['params']['id'],'closed':![]};if(_0x5246de[_0x11d9('0x6c')][_0x11d9('0xb6')]){_0x42d188[_0x11d9('0xb6')]=_0x5246de[_0x11d9('0x6c')][_0x11d9('0xb6')];return db[_0x11d9('0xb7')][_0x11d9('0x6a')]({'where':_0x42d188})[_0x11d9('0x2c')](function(_0x334dda){if(_0x334dda){_0x71bdbb=!![];return _0x334dda;}_0x3d3446['threadId']=_0x5246de[_0x11d9('0x6c')][_0x11d9('0xb6')];_0x3d3446[_0x11d9('0xb8')]=_0x5246de[_0x11d9('0x6c')][_0x11d9('0xb8')];return db[_0x11d9('0xb7')][_0x11d9('0x6b')](_0x3d3446);});}_0x42d188['ContactId']=_0x24650f['id'];if(_0x5246de['body']['interaction']&&_0x5246de[_0x11d9('0x6c')][_0x11d9('0xb9')]['id']){_0x42d188['id']=_0x5246de[_0x11d9('0x6c')]['interaction']['id'];return db['ChatInteraction'][_0x11d9('0x6a')]({'where':_0x42d188})[_0x11d9('0x2c')](function(_0x45e673){if(_0x45e673){_0x71bdbb=!![];return _0x45e673;}return db[_0x11d9('0xb7')][_0x11d9('0x6b')](_0x3d3446);});}return db['ChatInteraction'][_0x11d9('0x6b')](_0x3d3446);})['then'](function(_0x3c7338){if(!_0x71bdbb)return _0x3c7338;var _0x1d143a={'from':(_0xa921fc[_0x11d9('0xba')][_0x11d9('0x44')]||'')+'\x20'+(_0xa921fc[_0x11d9('0xba')]['lastName']||'')};if(_0x5246de[_0x11d9('0x6c')][_0x11d9('0xb6')]&&_0x5246de[_0x11d9('0x6c')][_0x11d9('0xbb')]&&_0x5246de['body'][_0x11d9('0xb6')]!=_0x5246de[_0x11d9('0x6c')][_0x11d9('0xbb')]){_0x1d143a[_0x11d9('0xb6')]=_0x5246de[_0x11d9('0x6c')][_0x11d9('0xbb')];}return _0x3c7338['update'](_0x1d143a);})['then'](function(_0x23daf9){_0xa921fc[_0x11d9('0xb9')]=_0x23daf9[_0x11d9('0x6e')]({'plain':!![]});_0xa921fc['interaction'][_0x11d9('0xbc')]=!_0x71bdbb;if(_0xa921fc[_0x11d9('0xb9')][_0x11d9('0xbc')]){if(_0xa921fc[_0x11d9('0xb3')][_0x11d9('0xbd')]){_0xa921fc[_0x11d9('0xaf')][_0x11d9('0xbe')]({'id':0x0,'priority':_0xa921fc['applications'][_0x11d9('0x5a')]+0x1,'app':_0x11d9('0xbf'),'appdata':_0x11d9('0xc0'),'interval':_0x11d9('0xc1')});}}return db[_0x11d9('0xc2')][_0x11d9('0x6b')]({'body':_0x5246de['body']['body'],'ChatWebsiteId':_0x5246de[_0x11d9('0x67')]['id'],'ChatInteractionId':_0x23daf9['id'],'direction':'in','ContactId':_0xa921fc[_0x11d9('0xba')]['id'],'AttachmentId':_0x5246de['body'][_0x11d9('0xc3')]});})[_0x11d9('0x2c')](function(_0x768d62){_0xa921fc['message']=_0x768d62;if(_0xa921fc[_0x11d9('0xb9')][_0x11d9('0xc4')]){return db[_0x11d9('0xc5')][_0x11d9('0x6a')]({'attributes':['id','name'],'where':{'id':_0xa921fc[_0x11d9('0xb9')]['UserId']}})[_0x11d9('0x2c')](function(_0x3ab27c){if(_0x3ab27c){_0xa921fc[_0x11d9('0xaf')]['unshift']({'id':0x0,'priority':0x0,'app':_0x11d9('0xc6'),'appdata':_0x3ab27c[_0x11d9('0x2d')]+','+(_0xa921fc[_0x11d9('0xb3')][_0x11d9('0xc7')]||0xa),'interval':_0x11d9('0xc1')});_0xa921fc[_0x11d9('0xc8')]=!![];}return respondWithRpcPromise(_0x11d9('0xc9'),_0x11d9('0xca'),_0xa921fc);});}return respondWithRpcPromise(_0x11d9('0xc9'),'startRouting',_0xa921fc);})[_0x11d9('0x2c')](function(_0x360081){respondWithRpcPromise(_0x11d9('0xcb'),'EventManager',{'event':'notify','message':_0x360081},client9002);return _0x360081;})[_0x11d9('0x2c')](respondWithResult(_0x46c635,null))[_0x11d9('0x1f')](APIHandleError(_0x46c635));};exports[_0x11d9('0xcc')]=function(_0x31a7bc,_0x49d159){var _0x1d5415,_0x590b08,_0xcdfbf8;var _0x1f2afb=[];var _0x392236={};var _0x346335=_0x31a7bc['files']||[];var _0x59ef2a=[];var _0x2bfb90;return db[_0x11d9('0x9b')][_0x11d9('0x74')]()[_0x11d9('0x2c')](function(_0x14cbd4){if(!_0x14cbd4){throw new db[(_0x11d9('0x9c'))][(_0x11d9('0x9d'))](_0x11d9('0x9e'));}_0x1f2afb=_['difference'](_['keys'](_0x14cbd4),['createdAt','updatedAt','CompanyId',_0x11d9('0xb4')]);if(_0x31a7bc['body']['id']){delete _0x31a7bc[_0x11d9('0x6c')]['id'];}if(_[_0x11d9('0x98')](_0x31a7bc[_0x11d9('0x6c')]['from'])){throw _0x49d159[_0x11d9('0x22')](0x1f4)[_0x11d9('0x2e')](new db['Sequelize'][(_0x11d9('0x9d'))](_0x11d9('0xcd')));}if(_[_0x11d9('0x98')](_0x31a7bc[_0x11d9('0x6c')][_0x11d9('0x6c')])||_0x31a7bc[_0x11d9('0x6c')][_0x11d9('0x6c')]===''){throw _0x49d159[_0x11d9('0x22')](0x1f4)[_0x11d9('0x2e')](new db[(_0x11d9('0x9c'))]['ValidationError'](_0x11d9('0xa4')));}if(_[_0x11d9('0x98')](_0x31a7bc[_0x11d9('0x6c')]['mapKeyOffline'])){throw _0x49d159[_0x11d9('0x22')](0x1f4)['send'](new db[(_0x11d9('0x9c'))][(_0x11d9('0x9d'))](_0x11d9('0xce')+_0x1f2afb));}if(!_['includes'](_0x1f2afb,_0x31a7bc['body'][_0x11d9('0xcf')])){throw _0x49d159[_0x11d9('0x22')](0x1f4)['send'](new db['Sequelize'][(_0x11d9('0x9d'))](_0x11d9('0xd0')+_0x1f2afb));}_0x392236[_0x31a7bc[_0x11d9('0x6c')][_0x11d9('0xcf')]]=_0x31a7bc[_0x11d9('0x6c')][_0x11d9('0xa3')];})[_0x11d9('0x2c')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x31a7bc[_0x11d9('0x67')]['id']},'include':[{'model':db[_0x11d9('0xd1')],'as':_0x11d9('0xa9')},{'model':db['MailAccount'],'as':_0x11d9('0xd2')}]});})['then'](handleEntityNotFound(_0x49d159,null))[_0x11d9('0x2c')](function(_0x425359){if(_0x425359&&_0x425359[_0x11d9('0xa9')]){_0x590b08=_0x425359;var _0x30b2f3=_[_0x11d9('0xe')](_0x31a7bc[_0x11d9('0x6c')],{'firstName':_0x31a7bc[_0x11d9('0x6c')][_0x11d9('0xa3')],'phone':_0x31a7bc[_0x11d9('0x6c')]['from'],'ListId':_0x425359[_0x11d9('0xb4')]});_0x30b2f3[_0x31a7bc[_0x11d9('0x6c')]['mapKeyOffline']]=_0x31a7bc['body'][_0x11d9('0xa3')];return db[_0x11d9('0x9b')][_0x11d9('0xd3')]({'where':_0x392236,'defaults':_0x30b2f3});}})[_0x11d9('0xd4')](function(_0x41ca26){if(_0x41ca26){_0xcdfbf8=_0x41ca26;var _0x26daed=fs['readFileSync'](path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x25473e=ejs[_0x11d9('0xd5')](_0x26daed,{'body':_[_0x11d9('0xd6')](_0x31a7bc[_0x11d9('0x6c')]['body']),'bodyTitle':_0x590b08[_0x11d9('0xd7')]});return db[_0x11d9('0xd8')][_0x11d9('0x6b')]({'body':_0x25473e,'plainBody':htmlToText[_0x11d9('0xd9')](_0x25473e),'ContactId':_0x41ca26['id'],'ChatWebsiteId':_0x590b08['id']});}})[_0x11d9('0x2c')](function(_0x4dbe89){_0x2bfb90=_0x4dbe89;if(_0x346335['length']){var _0x1598a9=_0x346335[_0x11d9('0x39')](function(_0x270021){return{'name':_0x270021[_0x11d9('0xda')],'basename':_0x270021[_0x11d9('0x82')],'type':_0x270021[_0x11d9('0xdb')],'ChatOfflineMessageId':_0x4dbe89['id']};});_0x59ef2a=_0x1598a9[_0x11d9('0x39')](_0x2cf4ff=>{var _0x2fd3ff={'filename':_0x2cf4ff[_0x11d9('0x2d')],'path':path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0xdc'),_0x11d9('0xdd'),_0x11d9('0xde'),'offline-chat',_0x2cf4ff[_0x11d9('0xdf')])};return _0x2fd3ff;});if(!_0x590b08[_0x11d9('0xe0')]){return db[_0x11d9('0xe1')]['transaction'](function(_0x4fb193){return db[_0x11d9('0xe2')][_0x11d9('0xe3')](_0x1598a9,{'transaction':_0x4fb193});});}}})[_0x11d9('0x2c')](function(){if(_0x2bfb90){_0x1d5415=_0x2bfb90;return db[_0x11d9('0xd2')][_0x11d9('0x78')]({'where':{'service':!![]},'include':[{'model':db[_0x11d9('0xe4')],'as':_0x11d9('0xe5'),'raw':!![],'include':[{'model':db[_0x11d9('0xe6')],'as':'CloudProvider','raw':!![]}]}]});}})[_0x11d9('0x2c')](function(_0x22964e){if(_0x22964e&&_0x22964e[_0x11d9('0xe5')]&&_0x590b08[_0x11d9('0xe7')]&&_0x590b08[_0x11d9('0xe8')]){var _0x348e70=_0x22964e[_0x11d9('0xe9')]();return respondWithRpcPromise(_0x11d9('0xea'),_0x11d9('0xeb'),{'account':_0x348e70,'message':{'from':util[_0x11d9('0x32')](_0x11d9('0xec'),_0x22964e[_0x11d9('0x2d')],_0x22964e['email']||_0x22964e[_0x11d9('0xe5')][_0x11d9('0x6d')]),'to':_0x590b08['forwardOfflineAddress'],'subject':_0x590b08['offlineMessageSubject'],'html':_0x1d5415[_0x11d9('0x6c')],'attachments':_0x59ef2a}},client9003)[_0x11d9('0x2c')](function(){return _0x1d5415;})[_0x11d9('0x1f')](function(_0x7399fb){logger[_0x11d9('0x1a')](_0x7399fb);});}})[_0x11d9('0x2c')](function(){if(_0x590b08&&_0x590b08[_0x11d9('0xe0')]&&_0x590b08[_0x11d9('0xed')]){var _0x421347=[];if(_0x346335[_0x11d9('0x5a')]){_0x421347=_0x346335[_0x11d9('0x39')](function(_0x6a2c0a){return{'name':_0x6a2c0a['originalname'],'basename':_0x6a2c0a[_0x11d9('0x82')],'type':_0x6a2c0a[_0x11d9('0xdb')],'ChatOfflineMessageId':_0x2bfb90['id']};});}var _0x5618be;if(!_[_0x11d9('0x98')](_0x590b08[_0x11d9('0xee')])){var _0x5067d3=_[_0x11d9('0x39')](_0x31a7bc[_0x11d9('0x6c')],function(_0x7100f0){return _0x7100f0;});var _0x1b965e=_[_0x11d9('0xef')](_0x5067d3)[0x0];var _0x180ec2=_[_0x11d9('0xf0')](_0x1b965e,function(_0x56d555){return _0x56d555;});_0x5618be=_0x180ec2[0x1][_0x590b08['subjectOffline']];}var _0x3be959={'from':_0xcdfbf8[_0x11d9('0xf1')],'firstName':_0xcdfbf8['firstName'],'lastName':_0xcdfbf8['lastName'],'mapKey':_0x11d9('0xf1'),'message':{'from':_0xcdfbf8[_0x11d9('0xf1')],'to':_0x590b08['MailAccount']['email'],'cc':'','subject':_['isNil'](_0x5618be)?_0x590b08['offlineMessageSubject']:_0x5618be,'messageId':'','sentAt':new Date(),'attach':_0x421347[_0x11d9('0x5a')],'attachments':_0x421347,'originChannel':_0x11d9('0xf2'),'ChatWebsiteId':_0x590b08['id'],'ChatOfflineMessageId':_0x1d5415['id'],'originTo':_0x590b08['MailAccount'][_0x11d9('0xf1')]},'body':_0x1d5415[_0x11d9('0x6c')]};var _0x4bc07b={'account':{'id':_0x590b08[_0x11d9('0xed')]},'body':_0x3be959,'log':_0x11d9('0xf3')};return respondWithRpcPromise('NotifyMailAccount',_0x11d9('0xf4'),_0x4bc07b,client9001)[_0x11d9('0x2c')](function(){return _0x1d5415;})['catch'](function(_0x55a2fe){logger[_0x11d9('0x1a')](_0x55a2fe);});}return;})['then'](function(){if(_0x1d5415){return _0x1d5415;}})[_0x11d9('0x2c')](respondWithResult(_0x49d159,null))[_0x11d9('0x1f')](function(){for(var _0x38acf0 of _0x346335){var _0xac4c60=path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0xdc'),_0x11d9('0xdd'),_0x11d9('0xde'),_0x11d9('0xf5'),_0x38acf0[_0x11d9('0x82')]);fs_extra['remove'](_0xac4c60)[_0x11d9('0x1f')](function(_0x3cc43b){logger[_0x11d9('0x1a')](_0x11d9('0xf6'),_0xac4c60,_0x3cc43b);});}});};exports[_0x11d9('0xf7')]=function(_0x580d7c,_0x39ea32){return db[_0x11d9('0xb7')][_0x11d9('0x6a')]({'where':{'id':_0x580d7c['params']['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x39ea32,null))[_0x11d9('0x2c')](function(_0x40c840){if(_0x40c840){return _0x40c840[_0x11d9('0xf7')](_0x580d7c[_0x11d9('0x6c')][_0x11d9('0x7f')],_['omit'](_0x580d7c[_0x11d9('0x6c')],['ids','id'])||{});}})[_0x11d9('0x2c')](respondWithResult(_0x39ea32,null))[_0x11d9('0x1f')](handleError(_0x39ea32,null));};exports[_0x11d9('0xf8')]=function(_0x5b1e8b,_0x364b09){var _0x53cf49={'raw':![],'where':{}};var _0x409670={};var _0x1b4eae={'count':0x0,'rows':[]};return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0x5b1e8b[_0x11d9('0x67')]['id']}})['then'](handleEntityNotFound(_0x364b09,null))[_0x11d9('0x2c')](function(_0x242b29){if(_0x242b29){_0x409670[_0x11d9('0x4d')]=_[_0x11d9('0x54')](db[_0x11d9('0xb7')]['rawAttributes']);_0x409670[_0x11d9('0x55')]=_[_0x11d9('0x54')](_0x5b1e8b[_0x11d9('0x55')]);_0x409670[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0x409670[_0x11d9('0x4d')],_0x409670[_0x11d9('0x55')]);_0x53cf49[_0x11d9('0x58')]=_[_0x11d9('0x57')](_0x409670[_0x11d9('0x4d')],qs[_0x11d9('0x59')](_0x5b1e8b[_0x11d9('0x55')]['fields']));_0x53cf49[_0x11d9('0x58')]=_0x53cf49['attributes'][_0x11d9('0x5a')]?_0x53cf49['attributes']:_0x409670[_0x11d9('0x4d')];if(!_0x5b1e8b[_0x11d9('0x55')]['hasOwnProperty']('nolimit')){_0x53cf49[_0x11d9('0x25')]=qs[_0x11d9('0x25')](_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0x25')]);_0x53cf49[_0x11d9('0x23')]=qs[_0x11d9('0x23')](_0x5b1e8b['query']['offset']);}_0x53cf49[_0x11d9('0x5c')]=qs[_0x11d9('0x5d')](_0x5b1e8b['query'][_0x11d9('0x5d')]);_0x53cf49['where']=qs[_0x11d9('0x56')](_['pick'](_0x5b1e8b[_0x11d9('0x55')],_0x409670[_0x11d9('0x56')]));_0x53cf49[_0x11d9('0x5e')]['ChatWebsiteId']=_0x242b29['id'];if(_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x53cf49['where']=_[_0x11d9('0x60')](_0x53cf49[_0x11d9('0x5e')],{'$or':_[_0x11d9('0x39')](_0x53cf49[_0x11d9('0x58')],function(_0x1b489f){var _0xe634={};_0xe634[_0x1b489f]={'$like':'%'+_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0x5f')]+'%'};return _0xe634;})});}_0x53cf49=_[_0x11d9('0x60')]({},_0x53cf49,_0x5b1e8b[_0x11d9('0x62')]);return db[_0x11d9('0xb7')]['count']({'where':_0x53cf49[_0x11d9('0x5e')]})[_0x11d9('0x2c')](function(_0x2890e3){_0x1b4eae['count']=_0x2890e3;if(_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0x69')]){_0x53cf49[_0x11d9('0x63')]=[{'model':db[_0x11d9('0x9b')],'as':_0x11d9('0xf9'),'required':![]},{'model':db['User'],'as':'Owner','attributes':['name',_0x11d9('0xfa'),_0x11d9('0xfb')],'required':![]},{'model':db[_0x11d9('0xfc')],'as':_0x11d9('0xfd'),'attributes':['id',_0x11d9('0x2d'),_0x11d9('0xfe')],'where':_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0xff')]?{'id':_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0xff')]}:undefined,'required':_0x5b1e8b[_0x11d9('0x55')][_0x11d9('0xff')]?!![]:![]}];}return db[_0x11d9('0xb7')][_0x11d9('0x64')](_0x53cf49);})[_0x11d9('0x2c')](function(_0x56c0c9){_0x1b4eae['rows']=_0x56c0c9;return _0x1b4eae;});}})[_0x11d9('0x2c')](respondWithFilteredResult(_0x364b09,_0x53cf49))[_0x11d9('0x1f')](handleError(_0x364b09,null));};exports['getSnippet']=function(_0x126172,_0x342676){var _0x2e40b0=0x0;var _0x2b00be=0x0;var _0x15c0a3=![];var _0x554c96;var _0x19ea5c;return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x126172[_0x11d9('0x67')]['id']},'include':[{'model':db[_0x11d9('0xae')],'as':_0x11d9('0xae'),'include':[{'model':db[_0x11d9('0xae')],'as':'Intervals','attributes':['id',_0x11d9('0x31')]}]}]})[_0x11d9('0x2c')](handleEntityNotFound(_0x342676,null))[_0x11d9('0x2c')](function(_0x2ef3af){if(_0x2ef3af){_0x554c96=_0x2ef3af;return _0x2ef3af['getProactiveActions']({'raw':!![]});}})[_0x11d9('0x2c')](function(_0x223aae){if(_0x554c96){if(_0x223aae){_0x19ea5c=_0x223aae;}}return require('../../config/license/util')[_0x11d9('0x8c')]();})[_0x11d9('0x2c')](function(_0xd6587e){if(_0xd6587e){_0x2b00be=_0xd6587e['virtual'];_0x15c0a3=_0xd6587e[_0x11d9('0x100')];}})[_0x11d9('0x2c')](function(){return db[_0x11d9('0xb7')][_0x11d9('0x26')]({'where':{'closed':![]}});})[_0x11d9('0x2c')](function(_0x1ec065){_0x2e40b0=_0x1ec065;if(_0x2b00be&&_0x1ec065>_0x2b00be){return db[_0x11d9('0x101')]['findOne']({'where':{'id':0x1}})[_0x11d9('0x2c')](function(_0x707741){if(_0x707741){_0x707741['increment'](_0x11d9('0x102'));}});}})[_0x11d9('0x2c')](function(){if(!_0x554c96[_0x11d9('0xae')]||!_0x554c96[_0x11d9('0xae')][_0x11d9('0x3a')])return!![];return checkWebsiteIntervals(_0x554c96);})['then'](function(_0x47d94e){var _0x56f531=fs[_0x11d9('0x103')](path[_0x11d9('0x8e')](config[_0x11d9('0x8a')],_0x11d9('0x104')),'utf8');var _0x2374db=new url[(_0x11d9('0x105'))](_0x554c96[_0x11d9('0x106')])['origin'];var _0x536129='3.1.0';var _0x278cde=![];var _0x2c5de2={'chatVersion':_0x536129,'chatWebsiteAddressOrigin':_0x2374db,'remote':_0x554c96[_0x11d9('0x107')],'query':querystring['stringify'](_[_0x11d9('0x60')](_0x554c96['get']({'plain':!![]}),{'customerIp':_0x126172[_0x11d9('0xb5')][_0x11d9('0x41')]||_0x126172[_0x11d9('0xb5')][_0x11d9('0x108')]||_0x126172[_0x11d9('0x109')]['remoteAddress']||_0x126172['ip'],'referer':_0x126172[_0x11d9('0xb5')][_0x11d9('0x47')],'openedInteractions':_0x2e40b0,'maxInteractions':_0x2b00be,'virtual':_0x15c0a3[_0x11d9('0x10a')],'online':_0x47d94e,'custom':_0x15c0a3}))[_0x11d9('0x10b')](/'/g,'\x5c\x27')};_0x342676[_0x11d9('0x2e')](ejs['render'](Mustache[_0x11d9('0xd5')](_0x56f531,_0x2c5de2),{'proactiveActions':_0x19ea5c,'alignment':_0x554c96[_0x11d9('0x10c')],'verticalAlignment':_0x554c96['verticalAlignment'],'div_color':_0x554c96[_0x11d9('0xfe')],'labelText':_0x554c96[_0x11d9('0x10d')],'text_color':_0x554c96['textColor'],'text_button_color':_0x554c96[_0x11d9('0x10e')],'button_color':_0x554c96[_0x11d9('0x10f')],'background_color':_0x554c96[_0x11d9('0x110')],'hideWhenOffline':_0x554c96[_0x11d9('0x111')],'intervalId':_0x554c96[_0x11d9('0x112')],'isDevelopment':_0x278cde,'chatVersion':_0x536129}));})[_0x11d9('0x1f')](handleError(_0x342676,null));};exports[_0x11d9('0x113')]=function(_0x2b8b96,_0x397e36){var _0x2291b5=_0x2b8b96[_0x11d9('0x67')]['id'];var _0x1d0ab0=_0x2b8b96[_0x11d9('0x6c')];var _0x42c011=0xc8;var _0x1d5c24=null;return db['sequelize'][_0x11d9('0x114')]({'isolationLevel':db['sequelize'][_0x11d9('0x115')]['ISOLATION_LEVELS'][_0x11d9('0x116')]},function(_0x4aa213){return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0x2291b5},'transaction':_0x4aa213})[_0x11d9('0x2c')](function(_0x201a87){if(_0x201a87){return db[_0x11d9('0xac')]['destroy']({'where':{'ChatWebsiteId':_0x2291b5},'transaction':_0x4aa213})['then'](function(){var _0x4bd09e=_['map'](_0x1d0ab0,function(_0xd59acd){_0xd59acd['ChatWebsiteId']=_0x2291b5;return _0xd59acd;});return db[_0x11d9('0xac')][_0x11d9('0xe3')](_0x4bd09e,{'transaction':_0x4aa213});});}else{_0x42c011=0x194;_0x1d5c24=[];}});})[_0x11d9('0x2c')](function(){if(_0x42c011!==0x194){return db['ChatApplication'][_0x11d9('0x117')]({'where':{'ChatWebsiteId':_0x2291b5},'order':'priority'})['then'](function(_0x1bcb7c){_0x1d5c24=_0x1bcb7c;});}})['catch'](function(_0x4beac8){_0x42c011=0x1f4;logger[_0x11d9('0x1a')](_0x4beac8[_0x11d9('0x118')]);if(_0x4beac8['name']){delete _0x4beac8['name'];}_0x1d5c24=_0x4beac8;})[_0x11d9('0x119')](function(){if(_0x1d5c24===null){_0x397e36['sendStatus'](_0x42c011);}else{if(_0x42c011===0x1f4){_0x397e36['status'](_0x42c011)[_0x11d9('0x2e')](_0x1d5c24);}else{_0x397e36[_0x11d9('0x22')](_0x42c011)[_0x11d9('0x11a')](_0x1d5c24);}}});};exports[_0x11d9('0x11b')]=function(_0x548953,_0x436ea0){var _0x4a1b77={};var _0xd7b4b9={};var _0x318948;var _0x51445f;return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0x548953[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x436ea0,null))[_0x11d9('0x2c')](function(_0x329175){if(_0x329175){_0x318948=_0x329175;_0xd7b4b9[_0x11d9('0x4d')]=_[_0x11d9('0x54')](db['ChatApplication'][_0x11d9('0x53')]);_0xd7b4b9[_0x11d9('0x55')]=_[_0x11d9('0x54')](_0x548953[_0x11d9('0x55')]);_0xd7b4b9[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0xd7b4b9[_0x11d9('0x4d')],_0xd7b4b9['query']);_0x4a1b77[_0x11d9('0x58')]=_[_0x11d9('0x57')](_0xd7b4b9['model'],qs[_0x11d9('0x59')](_0x548953['query'][_0x11d9('0x59')]));_0x4a1b77[_0x11d9('0x58')]=_0x4a1b77[_0x11d9('0x58')][_0x11d9('0x5a')]?_0x4a1b77[_0x11d9('0x58')]:_0xd7b4b9[_0x11d9('0x4d')];_0x4a1b77[_0x11d9('0x5c')]=qs[_0x11d9('0x5d')](_0x548953[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x4a1b77[_0x11d9('0x5e')]=qs['filters'](_['pick'](_0x548953[_0x11d9('0x55')],_0xd7b4b9[_0x11d9('0x56')]));if(_0x548953[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x4a1b77['where']=_[_0x11d9('0x60')](_0x4a1b77['where'],{'$or':_[_0x11d9('0x39')](_0x4a1b77[_0x11d9('0x58')],function(_0x4ab68e){var _0x39be8f={};_0x39be8f[_0x4ab68e]={'$like':'%'+_0x548953[_0x11d9('0x55')][_0x11d9('0x5f')]+'%'};return _0x39be8f;})});}_0x4a1b77=_[_0x11d9('0x60')]({},_0x4a1b77,_0x548953[_0x11d9('0x62')]);return _0x318948[_0x11d9('0x11b')](_0x4a1b77);}})[_0x11d9('0x2c')](function(_0x1694d4){if(_0x1694d4){_0x51445f=_0x1694d4[_0x11d9('0x5a')];if(!_0x548953['query']['hasOwnProperty'](_0x11d9('0x79'))){_0x4a1b77['limit']=qs[_0x11d9('0x25')](_0x548953[_0x11d9('0x55')]['limit']);_0x4a1b77[_0x11d9('0x23')]=qs[_0x11d9('0x23')](_0x548953[_0x11d9('0x55')][_0x11d9('0x23')]);}return _0x318948['getApplications'](_0x4a1b77);}})[_0x11d9('0x2c')](function(_0xe6be5a){if(_0xe6be5a){return _0xe6be5a?{'count':_0x51445f,'rows':_0xe6be5a}:null;}})[_0x11d9('0x2c')](respondWithResult(_0x436ea0,null))[_0x11d9('0x1f')](handleError(_0x436ea0,null));};exports[_0x11d9('0x11c')]=function(_0x3ba18a,_0x51bae8){return db['chatProactiveAction']['find']({'where':{'id':_0x3ba18a['params']['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x51bae8,null))[_0x11d9('0x2c')](function(_0x2bf631){if(_0x2bf631){return _0x2bf631['addProactiveActions'](_0x3ba18a[_0x11d9('0x6c')][_0x11d9('0x7f')],_[_0x11d9('0x11d')](_0x3ba18a[_0x11d9('0x6c')],[_0x11d9('0x7f'),'id'])||{});}})['then'](respondWithResult(_0x51bae8,null))['catch'](handleError(_0x51bae8,null));};exports[_0x11d9('0x11e')]=function(_0x4857be,_0x269784){var _0x55b5e4={};var _0x4c4b73={};var _0x5d127e;var _0x3b8e35;return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0x4857be[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x269784,null))[_0x11d9('0x2c')](function(_0x434339){if(_0x434339){_0x5d127e=_0x434339;_0x4c4b73[_0x11d9('0x4d')]=_['keys'](db[_0x11d9('0x11f')][_0x11d9('0x53')]);_0x4c4b73[_0x11d9('0x55')]=_[_0x11d9('0x54')](_0x4857be['query']);_0x4c4b73['filters']=_[_0x11d9('0x57')](_0x4c4b73[_0x11d9('0x4d')],_0x4c4b73[_0x11d9('0x55')]);_0x55b5e4[_0x11d9('0x58')]=_['intersection'](_0x4c4b73[_0x11d9('0x4d')],qs[_0x11d9('0x59')](_0x4857be[_0x11d9('0x55')][_0x11d9('0x59')]));_0x55b5e4['attributes']=_0x55b5e4[_0x11d9('0x58')][_0x11d9('0x5a')]?_0x55b5e4['attributes']:_0x4c4b73[_0x11d9('0x4d')];_0x55b5e4[_0x11d9('0x5c')]=qs[_0x11d9('0x5d')](_0x4857be[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x55b5e4['where']=qs[_0x11d9('0x56')](_[_0x11d9('0x7a')](_0x4857be[_0x11d9('0x55')],_0x4c4b73[_0x11d9('0x56')]));if(_0x4857be[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x55b5e4['where']=_['merge'](_0x55b5e4[_0x11d9('0x5e')],{'$or':_['map'](_0x55b5e4[_0x11d9('0x58')],function(_0x8c9f63){var _0x137e8b={};_0x137e8b[_0x8c9f63]={'$like':'%'+_0x4857be['query'][_0x11d9('0x5f')]+'%'};return _0x137e8b;})});}_0x55b5e4=_[_0x11d9('0x60')]({},_0x55b5e4,_0x4857be['options']);return _0x5d127e[_0x11d9('0x11e')](_0x55b5e4);}})['then'](function(_0x1758bb){if(_0x1758bb){_0x3b8e35=_0x1758bb[_0x11d9('0x5a')];if(!_0x4857be[_0x11d9('0x55')][_0x11d9('0x5b')](_0x11d9('0x79'))){_0x55b5e4['limit']=qs[_0x11d9('0x25')](_0x4857be[_0x11d9('0x55')][_0x11d9('0x25')]);_0x55b5e4['offset']=qs[_0x11d9('0x23')](_0x4857be[_0x11d9('0x55')]['offset']);}return _0x5d127e[_0x11d9('0x11e')](_0x55b5e4);}})['then'](function(_0xea8738){if(_0xea8738){return _0xea8738?{'count':_0x3b8e35,'rows':_0xea8738}:null;}})['then'](respondWithResult(_0x269784,null))['catch'](handleError(_0x269784,null));};exports['getFields']=function(_0x2fba4b,_0x397e56){var _0x249713=_0x2fba4b['query']['online']===_0x11d9('0x120')?_0x11d9('0x121'):_0x11d9('0x122');return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'attributes':['id',_0x249713],'where':{'id':_0x2fba4b[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x397e56,null))[_0x11d9('0x2c')](function(_0x13f593){if(_0x13f593){var _0x364f03=_0x13f593[_0x249713];var _0x1e53eb=_0x364f03&&_0x364f03[_0x11d9('0x123')]?_0x364f03['items']:[];_0x397e56['send']({'fromKey':_['isNil'](_0x364f03[_0x11d9('0x124')])?undefined:_0x364f03[_0x11d9('0x124')],'count':_0x1e53eb[_0x11d9('0x5a')],'rows':_0x1e53eb});}})[_0x11d9('0x1f')](handleError(_0x397e56,null));};exports['getOfflineMessages']=function(_0x1792ba,_0x2de37d){var _0x549c9d={'raw':![],'where':{}};var _0x4aad2a={};var _0x4c3e1c={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x11d9('0x78')]({'where':{'id':_0x1792ba[_0x11d9('0x67')]['id']}})[_0x11d9('0x2c')](handleEntityNotFound(_0x2de37d,null))[_0x11d9('0x2c')](function(_0x2a32ee){if(_0x2a32ee){_0x4aad2a[_0x11d9('0x4d')]=_['keys'](db[_0x11d9('0xd8')][_0x11d9('0x53')]);_0x4aad2a[_0x11d9('0x55')]=_[_0x11d9('0x54')](_0x1792ba['query']);_0x4aad2a[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0x4aad2a[_0x11d9('0x4d')],_0x4aad2a[_0x11d9('0x55')]);_0x549c9d['attributes']=_['intersection'](_0x4aad2a['model'],qs[_0x11d9('0x59')](_0x1792ba[_0x11d9('0x55')]['fields']));_0x549c9d['attributes']=_0x549c9d[_0x11d9('0x58')][_0x11d9('0x5a')]?_0x549c9d[_0x11d9('0x58')]:_0x4aad2a['model'];if(!_0x1792ba[_0x11d9('0x55')][_0x11d9('0x5b')](_0x11d9('0x79'))){_0x549c9d[_0x11d9('0x25')]=qs[_0x11d9('0x25')](_0x1792ba[_0x11d9('0x55')][_0x11d9('0x25')]);_0x549c9d[_0x11d9('0x23')]=qs['offset'](_0x1792ba[_0x11d9('0x55')][_0x11d9('0x23')]);}_0x549c9d['order']=qs[_0x11d9('0x5d')](_0x1792ba[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x549c9d[_0x11d9('0x5e')]=qs[_0x11d9('0x56')](_[_0x11d9('0x7a')](_0x1792ba['query'],_0x4aad2a[_0x11d9('0x56')]));_0x549c9d[_0x11d9('0x5e')][_0x11d9('0x76')]=_0x2a32ee['id'];if(_0x1792ba[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x549c9d[_0x11d9('0x5e')]=_[_0x11d9('0x60')](_0x549c9d[_0x11d9('0x5e')],{'$or':_['map'](_0x549c9d[_0x11d9('0x58')],function(_0x55c84){var _0x1f4a85={};_0x1f4a85[_0x55c84]={'$like':'%'+_0x1792ba[_0x11d9('0x55')][_0x11d9('0x5f')]+'%'};return _0x1f4a85;})});}_0x549c9d=_[_0x11d9('0x60')]({},_0x549c9d,_0x1792ba[_0x11d9('0x62')]);return db['ChatOfflineMessage'][_0x11d9('0x26')]({'where':_0x549c9d[_0x11d9('0x5e')]})[_0x11d9('0x2c')](function(_0x1a6006){_0x4c3e1c[_0x11d9('0x26')]=_0x1a6006;if(_0x1792ba[_0x11d9('0x55')][_0x11d9('0x69')]){_0x549c9d[_0x11d9('0x63')]=[{'all':!![]}];}else{_0x549c9d['include']=[{'model':db[_0x11d9('0x9b')],'as':'Contact','required':![]},{'model':db[_0x11d9('0xe2')],'as':_0x11d9('0x125'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x549c9d);})[_0x11d9('0x2c')](function(_0x30b5bc){_0x4c3e1c[_0x11d9('0x65')]=_0x30b5bc;return _0x4c3e1c;});}})[_0x11d9('0x2c')](respondWithFilteredResult(_0x2de37d,_0x549c9d))['catch'](handleError(_0x2de37d,null));};exports[_0x11d9('0x126')]=function(_0x116613,_0x36cc9c){return db['ChatWebsite'][_0x11d9('0x6a')]({'where':{'id':_0x116613[_0x11d9('0x67')]['id']}})['then'](handleEntityNotFound(_0x36cc9c,null))[_0x11d9('0x2c')](function(_0x335934){if(_0x335934){return _0x335934[_0x11d9('0x126')](_0x116613[_0x11d9('0x6c')][_0x11d9('0x7f')],_[_0x11d9('0x11d')](_0x116613['body'],['ids','id'])||{})[_0x11d9('0xd4')](function(_0x46016b){for(var _0x1f5481=0x0;_0x1f5481<_0x116613['body'][_0x11d9('0x7f')][_0x11d9('0x5a')];_0x1f5481+=0x1){socket['emit'](_0x11d9('0x127'),{'UserId':Number(_0x116613[_0x11d9('0x6c')][_0x11d9('0x7f')][_0x1f5481]),'ChatWebsiteId':Number(_0x116613['params']['id'])});}return _0x46016b;});}})[_0x11d9('0x2c')](respondWithResult(_0x36cc9c,null))['catch'](handleError(_0x36cc9c,null));};exports[_0x11d9('0x128')]=function(_0x304566,_0x2acc3a){return db[_0x11d9('0x52')][_0x11d9('0x6a')]({'where':{'id':_0x304566['params']['id']}})['then'](handleEntityNotFound(_0x2acc3a,null))[_0x11d9('0x2c')](function(_0x2ba31c){if(_0x2ba31c){return _0x2ba31c[_0x11d9('0x128')](_0x304566[_0x11d9('0x55')][_0x11d9('0x7f')])[_0x11d9('0x2c')](function(){if(_[_0x11d9('0x129')](_0x304566['query'][_0x11d9('0x7f')])){for(var _0x205a04=0x0;_0x205a04<_0x304566[_0x11d9('0x55')][_0x11d9('0x7f')]['length'];_0x205a04+=0x1){socket[_0x11d9('0x12a')](_0x11d9('0x12b'),{'UserId':Number(_0x304566[_0x11d9('0x55')]['ids'][_0x205a04]),'ChatWebsiteId':Number(_0x304566[_0x11d9('0x67')]['id'])});}}else{socket['emit'](_0x11d9('0x12b'),{'UserId':Number(_0x304566[_0x11d9('0x55')][_0x11d9('0x7f')]),'ChatWebsiteId':Number(_0x304566['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2acc3a,null))[_0x11d9('0x1f')](handleError(_0x2acc3a,null));};exports[_0x11d9('0x12c')]=function(_0x14faf4,_0x3d6f20){var _0x55d321={};var _0x5942c1={};var _0x199b0f;var _0x25f5ef;return db[_0x11d9('0x52')][_0x11d9('0x78')]({'where':{'id':_0x14faf4[_0x11d9('0x67')]['id']}})['then'](handleEntityNotFound(_0x3d6f20,null))['then'](function(_0x3f59d9){if(_0x3f59d9){_0x199b0f=_0x3f59d9;_0x5942c1['model']=_['keys'](db[_0x11d9('0xc5')]['rawAttributes']);_0x5942c1[_0x11d9('0x55')]=_[_0x11d9('0x54')](_0x14faf4[_0x11d9('0x55')]);_0x5942c1[_0x11d9('0x56')]=_[_0x11d9('0x57')](_0x5942c1[_0x11d9('0x4d')],_0x5942c1[_0x11d9('0x55')]);_0x55d321[_0x11d9('0x58')]=_[_0x11d9('0x57')](_0x5942c1[_0x11d9('0x4d')],qs[_0x11d9('0x59')](_0x14faf4[_0x11d9('0x55')][_0x11d9('0x59')]));_0x55d321[_0x11d9('0x58')]=_0x55d321[_0x11d9('0x58')][_0x11d9('0x5a')]?_0x55d321['attributes']:_0x5942c1['model'];_0x55d321[_0x11d9('0x5c')]=qs[_0x11d9('0x5d')](_0x14faf4[_0x11d9('0x55')][_0x11d9('0x5d')]);_0x55d321[_0x11d9('0x5e')]=qs[_0x11d9('0x56')](_[_0x11d9('0x7a')](_0x14faf4[_0x11d9('0x55')],_0x5942c1[_0x11d9('0x56')]));if(_0x14faf4[_0x11d9('0x55')][_0x11d9('0x5f')]){_0x55d321[_0x11d9('0x5e')]=_[_0x11d9('0x60')](_0x55d321[_0x11d9('0x5e')],{'$or':_['map'](_0x55d321['attributes'],function(_0x42ed34){var _0xfddc93={};_0xfddc93[_0x42ed34]={'$like':'%'+_0x14faf4['query'][_0x11d9('0x5f')]+'%'};return _0xfddc93;})});}_0x55d321=_[_0x11d9('0x60')]({},_0x55d321,_0x14faf4[_0x11d9('0x62')]);return _0x199b0f[_0x11d9('0x12c')](_0x55d321);}})['then'](function(_0x32a127){if(_0x32a127){_0x25f5ef=_0x32a127[_0x11d9('0x5a')];if(!_0x14faf4[_0x11d9('0x55')]['hasOwnProperty']('nolimit')){_0x55d321[_0x11d9('0x25')]=qs[_0x11d9('0x25')](_0x14faf4[_0x11d9('0x55')][_0x11d9('0x25')]);_0x55d321[_0x11d9('0x23')]=qs[_0x11d9('0x23')](_0x14faf4[_0x11d9('0x55')][_0x11d9('0x23')]);}return _0x199b0f[_0x11d9('0x12c')](_0x55d321);}})['then'](function(_0x2f384b){if(_0x2f384b){return _0x2f384b?{'count':_0x25f5ef,'rows':_0x2f384b}:null;}})[_0x11d9('0x2c')](respondWithResult(_0x3d6f20,null))['catch'](handleError(_0x3d6f20,null));};
\ No newline at end of file
index dc01630..edb38bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a9c=['exports','events','../../mysqldb','ChatWebsite','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x3ce7f0,_0x429e31){var _0x914075=function(_0x13fbee){while(--_0x13fbee){_0x3ce7f0['push'](_0x3ce7f0['shift']());}};_0x914075(++_0x429e31);}(_0x8a9c,0x12d));var _0xc8a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a9c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xc8a9('0x0'));var ChatWebsite=require(_0xc8a9('0x1'))['db'][_0xc8a9('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xc8a9('0x3')](0x0);var events={'afterCreate':_0xc8a9('0x4'),'afterUpdate':'update','afterDestroy':_0xc8a9('0x5')};function emitEvent(_0x457342){return function(_0x54a19a,_0x1e2860,_0x37924b){ChatWebsiteEvents[_0xc8a9('0x6')](_0x457342+':'+_0x54a19a['id'],_0x54a19a);ChatWebsiteEvents['emit'](_0x457342,_0x54a19a);_0x37924b(null);};}for(var e in events){if(events[_0xc8a9('0x7')](e)){var event=events[e];ChatWebsite[_0xc8a9('0x8')](e,emitEvent(event));}}module[_0xc8a9('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x8c52=['setMaxListeners','save','update','remove','emit','hasOwnProperty','events','ChatWebsite'];(function(_0x7eb40c,_0x5357eb){var _0xf35f61=function(_0x29b45d){while(--_0x29b45d){_0x7eb40c['push'](_0x7eb40c['shift']());}};_0xf35f61(++_0x5357eb);}(_0x8c52,0x7e));var _0x28c5=function(_0x38550,_0x1e36a6){_0x38550=_0x38550-0x0;var _0x556e2c=_0x8c52[_0x38550];return _0x556e2c;};'use strict';var EventEmitter=require(_0x28c5('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0x28c5('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x28c5('0x2')](0x0);var events={'afterCreate':_0x28c5('0x3'),'afterUpdate':_0x28c5('0x4'),'afterDestroy':_0x28c5('0x5')};function emitEvent(_0x41668f){return function(_0x412a0a,_0x3b6b48,_0x307283){ChatWebsiteEvents[_0x28c5('0x6')](_0x41668f+':'+_0x412a0a['id'],_0x412a0a);ChatWebsiteEvents[_0x28c5('0x6')](_0x41668f,_0x412a0a);_0x307283(null);};}for(var e in events){if(events[_0x28c5('0x7')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 12870bf..28fe647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1cc=['path','rimraf','../../config/environment','./chatWebsite.attributes','define','ChatWebsite','chat_websites','util','api','moment','bluebird','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe1cc,0x127));var _0xce1c=function(_0x8578a0,_0x5763da){_0x8578a0=_0x8578a0-0x0;var _0x677bb8=_0xe1cc[_0x8578a0];return _0x677bb8;};'use strict';var _=require('lodash');var util=require(_0xce1c('0x0'));var logger=require('../../config/logger')(_0xce1c('0x1'));var moment=require(_0xce1c('0x2'));var BPromise=require(_0xce1c('0x3'));var rp=require(_0xce1c('0x4'));var fs=require('fs');var path=require(_0xce1c('0x5'));var rimraf=require(_0xce1c('0x6'));var config=require(_0xce1c('0x7'));var attributes=require(_0xce1c('0x8'));module['exports']=function(_0x209edd,_0x18746e){return _0x209edd[_0xce1c('0x9')](_0xce1c('0xa'),attributes,{'tableName':_0xce1c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8584=['util','../../config/logger','request-promise','path','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites'];(function(_0x5cbd16,_0x3e0ac7){var _0x33beef=function(_0x4e990c){while(--_0x4e990c){_0x5cbd16['push'](_0x5cbd16['shift']());}};_0x33beef(++_0x3e0ac7);}(_0x8584,0x122));var _0x4858=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x8584[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0x4858('0x0'));var logger=require(_0x4858('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4858('0x2'));var fs=require('fs');var path=require(_0x4858('0x3'));var rimraf=require('rimraf');var config=require(_0x4858('0x4'));var attributes=require(_0x4858('0x5'));module[_0x4858('0x6')]=function(_0x576eae,_0x318fef){return _0x576eae[_0x4858('0x7')](_0x4858('0x8'),attributes,{'tableName':_0x4858('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed23a04..e818375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b34=['../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','message','error','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xfb9cb6,_0x1a43be){var _0x55c283=function(_0x12960c){while(--_0x12960c){_0xfb9cb6['push'](_0xfb9cb6['shift']());}};_0x55c283(++_0x1a43be);}(_0x1b34,0x173));var _0x41b3=function(_0x342ae4,_0x16b598){_0x342ae4=_0x342ae4-0x0;var _0x53872f=_0x1b34[_0x342ae4];return _0x53872f;};'use strict';var _=require(_0x41b3('0x0'));var util=require(_0x41b3('0x1'));var moment=require(_0x41b3('0x2'));var BPromise=require(_0x41b3('0x3'));var rs=require(_0x41b3('0x4'));var fs=require('fs');var Redis=require(_0x41b3('0x5'));var db=require(_0x41b3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x41b3('0x7'))(_0x41b3('0x8'));var config=require(_0x41b3('0x9'));var jayson=require(_0x41b3('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x41b3('0xb')]=_[_0x41b3('0xc')](config[_0x41b3('0xb')],{'host':_0x41b3('0xd'),'port':0x18eb});var socket=require(_0x41b3('0xe'))(new Redis(config['redis']));require(_0x41b3('0xf'))[_0x41b3('0x10')](socket);function respondWithRpcPromise(_0x39fd17,_0x4b087a,_0x54f4b){return new BPromise(function(_0x59663f,_0x247eb0){return client[_0x41b3('0x11')](_0x39fd17,_0x54f4b)['then'](function(_0x16807f){logger[_0x41b3('0x12')](_0x41b3('0x13'),_0x4b087a,_0x41b3('0x14'));logger[_0x41b3('0x15')](_0x41b3('0x16'),_0x4b087a,_0x41b3('0x14'),JSON[_0x41b3('0x17')](_0x16807f));if(_0x16807f['error']){if(_0x16807f['error']['code']===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x4b087a,_0x16807f['error'][_0x41b3('0x18')]);return _0x247eb0(_0x16807f[_0x41b3('0x19')][_0x41b3('0x18')]);}logger[_0x41b3('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x4b087a,_0x16807f[_0x41b3('0x19')]['message']);return _0x59663f(_0x16807f[_0x41b3('0x19')][_0x41b3('0x18')]);}else{logger['info'](_0x41b3('0x13'),_0x4b087a,_0x41b3('0x14'));_0x59663f(_0x16807f[_0x41b3('0x1a')][_0x41b3('0x18')]);}})['catch'](function(_0x5bee1a){logger[_0x41b3('0x19')](_0x41b3('0x13'),_0x4b087a,_0x5bee1a);_0x247eb0(_0x5bee1a);});});}
\ No newline at end of file
+var _0xc496=['defaults','socket.io-emitter','redis','./chatWebsite.socket','register','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x1bb7b7,_0x2a6ce7){var _0x5a47b4=function(_0x5d463b){while(--_0x5d463b){_0x1bb7b7['push'](_0x1bb7b7['shift']());}};_0x5a47b4(++_0x2a6ce7);}(_0xc496,0x16b));var _0x6c49=function(_0xcaf223,_0xd39f07){_0xcaf223=_0xcaf223-0x0;var _0x17e00d=_0xc496[_0xcaf223];return _0x17e00d;};'use strict';var _=require(_0x6c49('0x0'));var util=require(_0x6c49('0x1'));var moment=require(_0x6c49('0x2'));var BPromise=require(_0x6c49('0x3'));var rs=require(_0x6c49('0x4'));var fs=require('fs');var Redis=require(_0x6c49('0x5'));var db=require(_0x6c49('0x6'))['db'];var utils=require(_0x6c49('0x7'));var logger=require(_0x6c49('0x8'))(_0x6c49('0x9'));var config=require(_0x6c49('0xa'));var jayson=require(_0x6c49('0xb'));var client=jayson[_0x6c49('0xc')][_0x6c49('0xd')]({'port':0x232a});config['redis']=_[_0x6c49('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6c49('0xf'))(new Redis(config[_0x6c49('0x10')]));require(_0x6c49('0x11'))[_0x6c49('0x12')](socket);function respondWithRpcPromise(_0x324b29,_0x271175,_0x238b78){return new BPromise(function(_0x2210c1,_0xf611e){return client[_0x6c49('0x13')](_0x324b29,_0x238b78)[_0x6c49('0x14')](function(_0x290c79){logger['info'](_0x6c49('0x15'),_0x271175,_0x6c49('0x16'));logger[_0x6c49('0x17')](_0x6c49('0x18'),_0x271175,_0x6c49('0x16'),JSON[_0x6c49('0x19')](_0x290c79));if(_0x290c79[_0x6c49('0x1a')]){if(_0x290c79[_0x6c49('0x1a')][_0x6c49('0x1b')]===0x1f4){logger[_0x6c49('0x1a')](_0x6c49('0x15'),_0x271175,_0x290c79[_0x6c49('0x1a')][_0x6c49('0x1c')]);return _0xf611e(_0x290c79[_0x6c49('0x1a')][_0x6c49('0x1c')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x271175,_0x290c79[_0x6c49('0x1a')]['message']);return _0x2210c1(_0x290c79['error'][_0x6c49('0x1c')]);}else{logger['info'](_0x6c49('0x15'),_0x271175,_0x6c49('0x16'));_0x2210c1(_0x290c79['result'][_0x6c49('0x1c')]);}})['catch'](function(_0x249a76){logger[_0x6c49('0x1a')](_0x6c49('0x15'),_0x271175,_0x249a76);_0xf611e(_0x249a76);});});}
\ No newline at end of file
index ce241b9..8ebb1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a8=['removeListener','register','./chatWebsite.events','save','remove'];(function(_0x4163fd,_0x1da4ce){var _0xbc0548=function(_0x36d95b){while(--_0x36d95b){_0x4163fd['push'](_0x4163fd['shift']());}};_0xbc0548(++_0x1da4ce);}(_0x61a8,0x93));var _0x861a=function(_0x445b7e,_0x3ea85f){_0x445b7e=_0x445b7e-0x0;var _0x17d997=_0x61a8[_0x445b7e];return _0x17d997;};'use strict';var ChatWebsiteEvents=require(_0x861a('0x0'));var events=[_0x861a('0x1'),_0x861a('0x2'),'update'];function createListener(_0x1d48ec,_0x5eb59f){return function(_0x5b461){_0x5eb59f['emit'](_0x1d48ec,_0x5b461);};}function removeListener(_0x31de98,_0x6915df){return function(){ChatWebsiteEvents[_0x861a('0x3')](_0x31de98,_0x6915df);};}exports[_0x861a('0x4')]=function(_0x51b3a2){for(var _0x62d056=0x0,_0x4e2701=events['length'];_0x62d056<_0x4e2701;_0x62d056++){var _0x4c39a9=events[_0x62d056];var _0x7c2b56=createListener('chatWebsite:'+_0x4c39a9,_0x51b3a2);ChatWebsiteEvents['on'](_0x4c39a9,_0x7c2b56);}};
\ No newline at end of file
+var _0x4308=['./chatWebsite.events','save','removeListener','register'];(function(_0x5a1654,_0x59f665){var _0x9e6dfb=function(_0x1d50cd){while(--_0x1d50cd){_0x5a1654['push'](_0x5a1654['shift']());}};_0x9e6dfb(++_0x59f665);}(_0x4308,0xe0));var _0x8430=function(_0x175713,_0x20ef0f){_0x175713=_0x175713-0x0;var _0x4bf6d0=_0x4308[_0x175713];return _0x4bf6d0;};'use strict';var ChatWebsiteEvents=require(_0x8430('0x0'));var events=[_0x8430('0x1'),'remove','update'];function createListener(_0x5cc684,_0x292836){return function(_0x377230){_0x292836['emit'](_0x5cc684,_0x377230);};}function removeListener(_0x50514f,_0x24182b){return function(){ChatWebsiteEvents[_0x8430('0x2')](_0x50514f,_0x24182b);};}exports[_0x8430('0x3')]=function(_0x27d49d){for(var _0x5e8c40=0x0,_0x4312f4=events['length'];_0x5e8c40<_0x4312f4;_0x5e8c40++){var _0x1aaff2=events[_0x5e8c40];var _0x2bba95=createListener('chatWebsite:'+_0x1aaff2,_0x27d49d);ChatWebsiteEvents['on'](_0x1aaff2,_0x2bba95);}};
\ No newline at end of file
index ccdbb09..1870816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd1f=['attachments','offline-chat','ensureDir','/:id/offline','any','offline','addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','addAgents','put','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','index','/describe','get','/:id','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','getSnippet','/:id/applications','getProactiveActions','/:id/offline_messages','/:id/users','getAgents','post','create','diskStorage','root','format','%s-%s','now','single','addLogo','server/files/images/avatars/','file','join','originalname','addSystemAvatar','notify','server/files'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcd1f,0x16b));var _0xfcd1=function(_0x323e8b,_0x20e8da){_0x323e8b=_0x323e8b-0x0;var _0x1ba597=_0xcd1f[_0x323e8b];return _0x1ba597;};'use strict';var multer=require(_0xfcd1('0x0'));var util=require(_0xfcd1('0x1'));var path=require(_0xfcd1('0x2'));var timeout=require('connect-timeout');var express=require(_0xfcd1('0x3'));var router=express[_0xfcd1('0x4')]();var fs_extra=require(_0xfcd1('0x5'));var auth=require(_0xfcd1('0x6'));var interaction=require(_0xfcd1('0x7'));var config=require(_0xfcd1('0x8'));var controller=require(_0xfcd1('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xfcd1('0xa')]);router['get'](_0xfcd1('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xfcd1('0xc')](_0xfcd1('0xd'),auth[_0xfcd1('0xe')](),controller[_0xfcd1('0xf')]);router[_0xfcd1('0xc')](_0xfcd1('0x10'),auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x11')]);router[_0xfcd1('0xc')](_0xfcd1('0x12'),auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x13')]);router[_0xfcd1('0xc')](_0xfcd1('0x14'),controller[_0xfcd1('0x15')]);router[_0xfcd1('0xc')](_0xfcd1('0x16'),controller[_0xfcd1('0x17')]);router['get'](_0xfcd1('0x18'),controller[_0xfcd1('0x19')]);router['get'](_0xfcd1('0x1a'),controller[_0xfcd1('0x1b')]);router[_0xfcd1('0xc')]('/:id/interactions',auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x1c')]);router['get']('/:id/snippet',controller[_0xfcd1('0x1d')]);router[_0xfcd1('0xc')](_0xfcd1('0x1e'),auth[_0xfcd1('0xe')](),controller['getApplications']);router[_0xfcd1('0xc')]('/:id/proactive_actions',auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x1f')]);router[_0xfcd1('0xc')]('/:id/fields',controller['getFields']);router['get'](_0xfcd1('0x20'),auth[_0xfcd1('0xe')](),controller['getOfflineMessages']);router[_0xfcd1('0xc')](_0xfcd1('0x21'),auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x22')]);router[_0xfcd1('0x23')]('/',auth['isAuthenticated'](),controller[_0xfcd1('0x24')]);router[_0xfcd1('0x23')](_0xfcd1('0x10'),auth[_0xfcd1('0xe')](),controller['addDisposition']);router[_0xfcd1('0x23')]('/:id/canned_answers',auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0xfcd1('0x25')]({'destination':function(_0x4d6e23,_0x20e840,_0x269b66){_0x269b66(null,path['join'](config[_0xfcd1('0x26')],'server/files/images/logos/'));},'filename':function(_0x31889c,_0x504f5a,_0x318bb3){_0x318bb3(null,util[_0xfcd1('0x27')](_0xfcd1('0x28'),Date[_0xfcd1('0x29')](),_0x504f5a['originalname']));}})});router[_0xfcd1('0x23')](_0xfcd1('0x14'),upload[_0xfcd1('0x2a')]('file'),controller[_0xfcd1('0x2b')]);var upload=multer({'storage':multer[_0xfcd1('0x25')]({'destination':function(_0x15c925,_0x5e31e9,_0x46fcfa){_0x46fcfa(null,path['join'](config[_0xfcd1('0x26')],_0xfcd1('0x2c')));},'filename':function(_0x53df96,_0x171fa5,_0x1adc31){_0x1adc31(null,util[_0xfcd1('0x27')]('%s-%s',Date['now'](),_0x171fa5['originalname']));}})});router['post'](_0xfcd1('0x16'),upload[_0xfcd1('0x2a')](_0xfcd1('0x2d')),controller['addAvatar']);var upload=multer({'storage':multer[_0xfcd1('0x25')]({'destination':function(_0x51b9bb,_0x129759,_0x40be10){_0x40be10(null,path[_0xfcd1('0x2e')](config[_0xfcd1('0x26')],'server/files/images/avatars/'));},'filename':function(_0x33fbbb,_0x55f755,_0x284afa){_0x284afa(null,util[_0xfcd1('0x27')](_0xfcd1('0x28'),Date[_0xfcd1('0x29')](),_0x55f755['originalname']));}})});router[_0xfcd1('0x23')](_0xfcd1('0x18'),upload[_0xfcd1('0x2a')](_0xfcd1('0x2d')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xfcd1('0x25')]({'destination':function(_0x437339,_0x114d19,_0x4c7c55){_0x4c7c55(null,path['join'](config[_0xfcd1('0x26')],'server/files/images/avatars/'));},'filename':function(_0x4387ba,_0x58c4e7,_0x197431){_0x197431(null,util[_0xfcd1('0x27')]('%s-%s',Date[_0xfcd1('0x29')](),_0x58c4e7[_0xfcd1('0x2f')]));}})});router[_0xfcd1('0x23')]('/:id/system_avatar',upload[_0xfcd1('0x2a')]('file'),controller[_0xfcd1('0x30')]);router['post']('/:id/notify',controller[_0xfcd1('0x31')]);const offlineUploadMulter=multer({'storage':multer[_0xfcd1('0x25')]({'destination':function(_0x1c2265,_0x5f1e6f,_0x3a788f){const _0x805070=path[_0xfcd1('0x2e')](config[_0xfcd1('0x26')],_0xfcd1('0x32'),_0xfcd1('0x33'),_0xfcd1('0x34'));fs_extra[_0xfcd1('0x35')](_0x805070,function(){_0x3a788f(null,_0x805070);});},'filename':function(_0xddd75c,_0x1a4f9e,_0x10018a){const _0xf057b0=_0x1a4f9e['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x1a88aa=path['extname'](_0xf057b0);const _0x265044=Date['now']()+'-'+_0xf057b0['replace'](_0x1a88aa,'')+_0x1a88aa;_0x10018a(null,_0x265044);}})});router[_0xfcd1('0x23')](_0xfcd1('0x36'),offlineUploadMulter[_0xfcd1('0x37')](),controller[_0xfcd1('0x38')]);router[_0xfcd1('0x23')]('/:id/interactions',auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x39')]);router[_0xfcd1('0x23')](_0xfcd1('0x1e'),auth['isAuthenticated'](),controller[_0xfcd1('0x3a')]);router['post'](_0xfcd1('0x3b'),auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x3c')]);router[_0xfcd1('0x23')](_0xfcd1('0x21'),auth['isAuthenticated'](),controller[_0xfcd1('0x3d')]);router[_0xfcd1('0x3e')](_0xfcd1('0xd'),auth[_0xfcd1('0xe')](),controller['update']);router[_0xfcd1('0x3f')](_0xfcd1('0xd'),auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x40')]);router['delete']('/:id/dispositions',auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x41')]);router[_0xfcd1('0x3f')]('/:id/canned_answers',auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x42')]);router['delete']('/:id/users',auth[_0xfcd1('0xe')](),controller[_0xfcd1('0x43')]);module[_0xfcd1('0x44')]=router;
\ No newline at end of file
+var _0x3ec1=['isAuthenticated','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','/:id/fields','getFields','getOfflineMessages','/:id/users','post','create','addDisposition','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','addAvatar','addSystemAvatar','/:id/notify','server/files','ensureDir','replace','any','offline','/:id/interactions','addInteraction','addApplications','addProactiveActions','addAgents','update','delete','destroy','removeDispositions','removeAnswers','exports','multer','express','Router','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','show','/:id/dispositions'];(function(_0x4a653f,_0xb3a0a1){var _0x2b9db3=function(_0x53ab38){while(--_0x53ab38){_0x4a653f['push'](_0x4a653f['shift']());}};_0x2b9db3(++_0xb3a0a1);}(_0x3ec1,0x7a));var _0x13ec=function(_0xec75dc,_0x9bf2ab){_0xec75dc=_0xec75dc-0x0;var _0x115dce=_0x3ec1[_0xec75dc];return _0x115dce;};'use strict';var multer=require(_0x13ec('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x13ec('0x1'));var router=express[_0x13ec('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x13ec('0x3'));var config=require(_0x13ec('0x4'));var controller=require('./chatWebsite.controller');router[_0x13ec('0x5')]('/',auth['isAuthenticated'](),controller[_0x13ec('0x6')]);router[_0x13ec('0x5')](_0x13ec('0x7'),auth['isAuthenticated'](),controller[_0x13ec('0x8')]);router[_0x13ec('0x5')](_0x13ec('0x9'),auth['isAuthenticated'](),controller[_0x13ec('0xa')]);router['get'](_0x13ec('0xb'),auth[_0x13ec('0xc')](),controller[_0x13ec('0xd')]);router['get'](_0x13ec('0xe'),auth['isAuthenticated'](),controller[_0x13ec('0xf')]);router[_0x13ec('0x5')](_0x13ec('0x10'),controller[_0x13ec('0x11')]);router[_0x13ec('0x5')](_0x13ec('0x12'),controller[_0x13ec('0x13')]);router['get'](_0x13ec('0x14'),controller['getCustomerAvatar']);router[_0x13ec('0x5')](_0x13ec('0x15'),controller[_0x13ec('0x16')]);router[_0x13ec('0x5')]('/:id/interactions',auth[_0x13ec('0xc')](),controller[_0x13ec('0x17')]);router[_0x13ec('0x5')](_0x13ec('0x18'),controller[_0x13ec('0x19')]);router['get'](_0x13ec('0x1a'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x1b')]);router[_0x13ec('0x5')](_0x13ec('0x1c'),auth[_0x13ec('0xc')](),controller['getProactiveActions']);router[_0x13ec('0x5')](_0x13ec('0x1d'),controller[_0x13ec('0x1e')]);router[_0x13ec('0x5')]('/:id/offline_messages',auth[_0x13ec('0xc')](),controller[_0x13ec('0x1f')]);router[_0x13ec('0x5')](_0x13ec('0x20'),auth[_0x13ec('0xc')](),controller['getAgents']);router[_0x13ec('0x21')]('/',auth['isAuthenticated'](),controller[_0x13ec('0x22')]);router['post'](_0x13ec('0xb'),auth['isAuthenticated'](),controller[_0x13ec('0x23')]);router['post'](_0x13ec('0xe'),auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0x13ec('0x24')]({'destination':function(_0xd719a6,_0x1d6aa2,_0x1b21f6){_0x1b21f6(null,path[_0x13ec('0x25')](config[_0x13ec('0x26')],_0x13ec('0x27')));},'filename':function(_0x56f617,_0x5381db,_0x416bdd){_0x416bdd(null,util[_0x13ec('0x28')](_0x13ec('0x29'),Date[_0x13ec('0x2a')](),_0x5381db[_0x13ec('0x2b')]));}})});router[_0x13ec('0x21')](_0x13ec('0x10'),upload[_0x13ec('0x2c')](_0x13ec('0x2d')),controller[_0x13ec('0x2e')]);var upload=multer({'storage':multer[_0x13ec('0x24')]({'destination':function(_0x33da7d,_0x48443f,_0x34426a){_0x34426a(null,path[_0x13ec('0x25')](config[_0x13ec('0x26')],_0x13ec('0x2f')));},'filename':function(_0xdfa0b5,_0x4dad46,_0x3f93e8){_0x3f93e8(null,util['format'](_0x13ec('0x29'),Date['now'](),_0x4dad46['originalname']));}})});router[_0x13ec('0x21')](_0x13ec('0x12'),upload[_0x13ec('0x2c')]('file'),controller[_0x13ec('0x30')]);var upload=multer({'storage':multer[_0x13ec('0x24')]({'destination':function(_0x4a2672,_0x439814,_0x2eb389){_0x2eb389(null,path[_0x13ec('0x25')](config[_0x13ec('0x26')],_0x13ec('0x2f')));},'filename':function(_0xaba134,_0x1f7596,_0x52a8cb){_0x52a8cb(null,util[_0x13ec('0x28')](_0x13ec('0x29'),Date['now'](),_0x1f7596[_0x13ec('0x2b')]));}})});router[_0x13ec('0x21')](_0x13ec('0x14'),upload[_0x13ec('0x2c')](_0x13ec('0x2d')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x13ec('0x24')]({'destination':function(_0x21146b,_0x2f17b0,_0x492595){_0x492595(null,path['join'](config[_0x13ec('0x26')],_0x13ec('0x2f')));},'filename':function(_0x1f573a,_0x66c09d,_0x49e0f2){_0x49e0f2(null,util[_0x13ec('0x28')](_0x13ec('0x29'),Date[_0x13ec('0x2a')](),_0x66c09d[_0x13ec('0x2b')]));}})});router['post'](_0x13ec('0x15'),upload[_0x13ec('0x2c')](_0x13ec('0x2d')),controller[_0x13ec('0x31')]);router[_0x13ec('0x21')](_0x13ec('0x32'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x13ec('0x24')]({'destination':function(_0x5c8f50,_0x38a4d0,_0x4c7f84){const _0x52e9ad=path[_0x13ec('0x25')](config[_0x13ec('0x26')],_0x13ec('0x33'),'attachments','offline-chat');fs_extra[_0x13ec('0x34')](_0x52e9ad,function(){_0x4c7f84(null,_0x52e9ad);});},'filename':function(_0x2029b3,_0x5cbd27,_0x2c2b1c){const _0x33c04b=_0x5cbd27['originalname'][_0x13ec('0x35')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x56caec=path['extname'](_0x33c04b);const _0x51090f=Date[_0x13ec('0x2a')]()+'-'+_0x33c04b[_0x13ec('0x35')](_0x56caec,'')+_0x56caec;_0x2c2b1c(null,_0x51090f);}})});router[_0x13ec('0x21')]('/:id/offline',offlineUploadMulter[_0x13ec('0x36')](),controller[_0x13ec('0x37')]);router[_0x13ec('0x21')](_0x13ec('0x38'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x39')]);router[_0x13ec('0x21')](_0x13ec('0x1a'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x3a')]);router['post'](_0x13ec('0x1c'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x3b')]);router['post'](_0x13ec('0x20'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x3c')]);router['put'](_0x13ec('0x9'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x3d')]);router[_0x13ec('0x3e')](_0x13ec('0x9'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x3f')]);router[_0x13ec('0x3e')](_0x13ec('0xb'),auth[_0x13ec('0xc')](),controller[_0x13ec('0x40')]);router['delete']('/:id/canned_answers',auth[_0x13ec('0xc')](),controller[_0x13ec('0x41')]);router['delete'](_0x13ec('0x20'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x13ec('0x42')]=router;
\ No newline at end of file
index c3d0c5d..44d81f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de4=['get','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service','../config/environment','Router','env','production','app'];(function(_0x593c43,_0x551408){var _0x25a7ee=function(_0x426ea1){while(--_0x426ea1){_0x593c43['push'](_0x593c43['shift']());}};_0x25a7ee(++_0x551408);}(_0x1de4,0x8e));var _0x41de=function(_0x3df00d,_0xe9a05){_0x3df00d=_0x3df00d-0x0;var _0x3d1400=_0x1de4[_0x3df00d];return _0x3d1400;};var beaverLogger=require(_0x41de('0x0'));var express=require(_0x41de('0x1'));var auth=require(_0x41de('0x2'));var config=require(_0x41de('0x3'));var router=express[_0x41de('0x4')]();var isProduction=config[_0x41de('0x5')]===_0x41de('0x6')||![];function clientSideLogs(_0x598558,_0x1f776,_0x2887e3){var _0x479cc5=_0x598558[_0x41de('0x7')][_0x41de('0x8')]('client-side-logger');if(!_0x479cc5){throw new Error(_0x41de('0x9'));}return beaverLogger[_0x41de('0xa')]({'uri':_0x41de('0xb'),'logger':_0x479cc5,'enableCors':!isProduction})(_0x598558,_0x1f776,_0x2887e3);}router[_0x41de('0xc')](auth[_0x41de('0xd')](),clientSideLogs);module[_0x41de('0xe')]=router;
\ No newline at end of file
+var _0x75d3=['client-side-logger','expressEndpoint','/client-logs','use','isAuthenticated','beaver-logger/server','express','../components/auth/service','Router','env','app','get'];(function(_0x1670cf,_0xde0df8){var _0x4c8c89=function(_0x49bf42){while(--_0x49bf42){_0x1670cf['push'](_0x1670cf['shift']());}};_0x4c8c89(++_0xde0df8);}(_0x75d3,0x16d));var _0x375d=function(_0x484f1b,_0x289656){_0x484f1b=_0x484f1b-0x0;var _0x540510=_0x75d3[_0x484f1b];return _0x540510;};var beaverLogger=require(_0x375d('0x0'));var express=require(_0x375d('0x1'));var auth=require(_0x375d('0x2'));var config=require('../config/environment');var router=express[_0x375d('0x3')]();var isProduction=config[_0x375d('0x4')]==='production'||![];function clientSideLogs(_0x3d2c66,_0x588825,_0x1d8461){var _0x506d20=_0x3d2c66[_0x375d('0x5')][_0x375d('0x6')](_0x375d('0x7'));if(!_0x506d20){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0x375d('0x8')]({'uri':_0x375d('0x9'),'logger':_0x506d20,'enableCors':!isProduction})(_0x3d2c66,_0x588825,_0x1d8461);}router[_0x375d('0xa')](auth[_0x375d('0xb')](),clientSideLogs);module['exports']=router;
\ No newline at end of file
index a0f765e..263be98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2312=['Google','ENUM','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','exports','STRING','AmazonAWS'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x2312,0xcf));var _0x2231=function(_0x3183ed,_0x51af07){_0x3183ed=_0x3183ed-0x0;var _0x2e862a=_0x2312[_0x3183ed];return _0x2e862a;};'use strict';var Sequelize=require('sequelize');module[_0x2231('0x0')]={'name':{'type':Sequelize[_0x2231('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0x2231('0x2'),_0x2231('0x3'),'MicrosoftAzure'),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x2231('0x4')](_0x2231('0x5'),_0x2231('0x6'))},'data1':{'type':Sequelize['STRING'],'comment':_0x2231('0x7')},'data2':{'type':Sequelize[_0x2231('0x1')],'comment':_0x2231('0x8')},'data3':{'type':Sequelize['STRING'],'comment':_0x2231('0x9')},'data4':{'type':Sequelize[_0x2231('0x1')],'comment':_0x2231('0xa')},'data5':{'type':Sequelize[_0x2231('0xb')],'comment':_0x2231('0xc')},'data6':{'type':Sequelize['TEXT'],'comment':_0x2231('0xd')},'data7':{'type':Sequelize['TEXT'],'comment':'MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri'}};
\ No newline at end of file
+var _0x17ac=['Outlook365','Dynamics365','STRING','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','exports','MicrosoftAzure','ENUM'];(function(_0x34e62f,_0x41179c){var _0x59cd18=function(_0x5b9b12){while(--_0x5b9b12){_0x34e62f['push'](_0x34e62f['shift']());}};_0x59cd18(++_0x41179c);}(_0x17ac,0x14f));var _0xc17a=function(_0x4842aa,_0x9e77ec){_0x4842aa=_0x4842aa-0x0;var _0x5b7c94=_0x17ac[_0x4842aa];return _0x5b7c94;};'use strict';var Sequelize=require('sequelize');module[_0xc17a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google',_0xc17a('0x1')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xc17a('0x2')](_0xc17a('0x3'),_0xc17a('0x4'))},'data1':{'type':Sequelize[_0xc17a('0x5')],'comment':_0xc17a('0x6')},'data2':{'type':Sequelize['STRING'],'comment':_0xc17a('0x7')},'data3':{'type':Sequelize[_0xc17a('0x5')],'comment':_0xc17a('0x8')},'data4':{'type':Sequelize[_0xc17a('0x5')],'comment':_0xc17a('0x9')},'data5':{'type':Sequelize[_0xc17a('0xa')],'comment':'MicrosoftAzure\x20=>\x20access_token'},'data6':{'type':Sequelize['TEXT'],'comment':_0xc17a('0xb')},'data7':{'type':Sequelize[_0xc17a('0xa')],'comment':_0xc17a('0xc')}};
\ No newline at end of file
index 814426f..8731af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe96=['end','status','json','undefined','limit','count','offset','set','Content-Range','update','destroy','then','error','stack','name','send','slice','index','rawAttributes','fieldName','type','map','keys','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','CloudProvider','include','findAll','service','MicrosoftAzure','decryptString','data3','catch','show','params','length','includeAll','find','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','state','Invalid\x20state\x20parameter','parse','ascii','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','data5','access_token','data6','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','../../components/parsers/qs','../../components/encryptor','../../config/logger','api','../../mysqldb','defaults','localhost','redis','sendStatus'];(function(_0x56a535,_0x5c3b0a){var _0x50d6be=function(_0x5d5d3a){while(--_0x5d5d3a){_0x56a535['push'](_0x56a535['shift']());}};_0x50d6be(++_0x5c3b0a);}(_0xfe96,0x105));var _0x6fe9=function(_0x120d22,_0x25aa55){_0x120d22=_0x120d22-0x0;var _0xb93200=_0xfe96[_0x120d22];return _0xb93200;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0x6fe9('0x0'));var encryptor=require(_0x6fe9('0x1'));var config=require('../../config/environment');var logger=require(_0x6fe9('0x2'))(_0x6fe9('0x3'));var db=require(_0x6fe9('0x4'))['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_[_0x6fe9('0x5')](config['redis'],{'host':_0x6fe9('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var redis=new Redis(config[_0x6fe9('0x7')]);function respondWithStatusCode(_0x7ee9bb,_0x5be47e){_0x5be47e=_0x5be47e||0xcc;return function(_0x2ecd34){if(_0x2ecd34){return _0x7ee9bb[_0x6fe9('0x8')](_0x5be47e);}return _0x7ee9bb['status'](_0x5be47e)[_0x6fe9('0x9')]();};}function respondWithResult(_0x3f8463,_0x45e597){_0x45e597=_0x45e597||0xc8;return function(_0x2ce5c5){if(_0x2ce5c5){return _0x3f8463[_0x6fe9('0xa')](_0x45e597)[_0x6fe9('0xb')](_0x2ce5c5);}};}function respondWithFilteredResult(_0x2f8f69,_0x170fdc){return function(_0x2224f7){if(_0x2224f7){var _0x6915e=typeof _0x170fdc['offset']===_0x6fe9('0xc')&&typeof _0x170fdc[_0x6fe9('0xd')]===_0x6fe9('0xc');var _0x2850b4=_0x2224f7[_0x6fe9('0xe')];var _0x441feb=_0x6915e?0x0:_0x170fdc[_0x6fe9('0xf')];var _0x4ecec4=_0x6915e?_0x2224f7[_0x6fe9('0xe')]:_0x170fdc[_0x6fe9('0xf')]+_0x170fdc[_0x6fe9('0xd')];var _0x3c9501;if(_0x4ecec4>=_0x2850b4){_0x4ecec4=_0x2850b4;_0x3c9501=0xc8;}else{_0x3c9501=0xce;}_0x2f8f69['status'](_0x3c9501);return _0x2f8f69[_0x6fe9('0x10')](_0x6fe9('0x11'),_0x441feb+'-'+_0x4ecec4+'/'+_0x2850b4)[_0x6fe9('0xb')](_0x2224f7);}return null;};}function saveUpdates(_0x96bd4f){return function(_0x4bb1a9){if(_0x4bb1a9){return _0x4bb1a9[_0x6fe9('0x12')](_0x96bd4f)['then'](function(_0x58a9ad){return _0x58a9ad;});}return null;};}function removeEntity(_0x115c7d){return function(_0x52ee4b){if(_0x52ee4b){return _0x52ee4b[_0x6fe9('0x13')]()[_0x6fe9('0x14')](function(){_0x115c7d[_0x6fe9('0xa')](0xcc)[_0x6fe9('0x9')]();});}};}function handleEntityNotFound(_0x338029){return function(_0x1bc947){if(!_0x1bc947){_0x338029[_0x6fe9('0x8')](0x194);}return _0x1bc947;};}function handleError(_0x3fe702,_0x15a3e9){_0x15a3e9=_0x15a3e9||0x1f4;return function(_0x59bb58){logger[_0x6fe9('0x15')](_0x59bb58[_0x6fe9('0x16')]);if(_0x59bb58['name']){delete _0x59bb58[_0x6fe9('0x17')];}_0x3fe702[_0x6fe9('0xa')](_0x15a3e9)[_0x6fe9('0x18')](_0x59bb58);};}function maskClientSecret(_0x52e743){return _['padEnd'](_0x52e743[_0x6fe9('0x19')](0x0,0x3),0x14,'*');}exports[_0x6fe9('0x1a')]=function(_0x494ed1,_0x4a7842){var _0x3606fb={},_0x558641={},_0x296516={'count':0x0,'rows':[]};var _0x31002d=_['map'](db['CloudProvider'][_0x6fe9('0x1b')],function(_0x5c731e){return{'name':_0x5c731e[_0x6fe9('0x1c')],'type':_0x5c731e[_0x6fe9('0x1d')]['key']};});_0x558641['model']=_[_0x6fe9('0x1e')](_0x31002d,'name');_0x558641['query']=_[_0x6fe9('0x1f')](_0x494ed1[_0x6fe9('0x20')]);_0x558641[_0x6fe9('0x21')]=_[_0x6fe9('0x22')](_0x558641['model'],_0x558641[_0x6fe9('0x20')]);_0x3606fb[_0x6fe9('0x23')]=_['intersection'](_0x558641[_0x6fe9('0x24')],qs[_0x6fe9('0x25')](_0x494ed1[_0x6fe9('0x20')]['fields']));_0x3606fb[_0x6fe9('0x23')]=_0x3606fb[_0x6fe9('0x23')]['length']?_0x3606fb['attributes']:_0x558641['model'];if(!_0x494ed1[_0x6fe9('0x20')][_0x6fe9('0x26')](_0x6fe9('0x27'))){_0x3606fb[_0x6fe9('0xd')]=qs[_0x6fe9('0xd')](_0x494ed1[_0x6fe9('0x20')][_0x6fe9('0xd')]);_0x3606fb[_0x6fe9('0xf')]=qs[_0x6fe9('0xf')](_0x494ed1[_0x6fe9('0x20')]['offset']);}_0x3606fb[_0x6fe9('0x28')]=qs[_0x6fe9('0x29')](_0x494ed1['query']['sort']);_0x3606fb[_0x6fe9('0x2a')]=qs[_0x6fe9('0x21')](_[_0x6fe9('0x2b')](_0x494ed1[_0x6fe9('0x20')],_0x558641[_0x6fe9('0x21')]),_0x31002d);if(_0x494ed1[_0x6fe9('0x20')][_0x6fe9('0x2c')]){_0x3606fb[_0x6fe9('0x2a')]=_[_0x6fe9('0x2d')](_0x3606fb[_0x6fe9('0x2a')],{'$or':_['map'](_0x31002d,function(_0x318712){if(_0x318712[_0x6fe9('0x1d')]!==_0x6fe9('0x2e')){var _0x56865a={};_0x56865a[_0x318712['name']]={'$like':'%'+_0x494ed1['query']['filter']+'%'};return _0x56865a;}})});}_0x3606fb=_[_0x6fe9('0x2d')]({},_0x3606fb,_0x494ed1['options']);var _0xb6a295={'where':_0x3606fb['where']};return db[_0x6fe9('0x2f')][_0x6fe9('0xe')](_0xb6a295)[_0x6fe9('0x14')](function(_0x1f42c8){_0x296516[_0x6fe9('0xe')]=_0x1f42c8;if(_0x494ed1[_0x6fe9('0x20')]['includeAll']){_0x3606fb[_0x6fe9('0x30')]=[{'all':!![]}];}return db['CloudProvider'][_0x6fe9('0x31')](_0x3606fb);})['then'](function(_0x38814a){_0x296516['rows']=_[_0x6fe9('0x1e')](_0x38814a,function(_0x4f28cd){if(_0x4f28cd[_0x6fe9('0x32')]===_0x6fe9('0x33')){var _0x1c78b1=encryptor[_0x6fe9('0x34')](_0x4f28cd[_0x6fe9('0x35')]);_0x4f28cd[_0x6fe9('0x35')]=maskClientSecret(_0x1c78b1);}return _0x4f28cd;});return _0x296516;})['then'](respondWithFilteredResult(_0x4a7842,_0x3606fb))[_0x6fe9('0x36')](handleError(_0x4a7842,null));};exports[_0x6fe9('0x37')]=function(_0x27e77c,_0x11caa8){var _0x56d124={'raw':!![],'where':{'id':_0x27e77c[_0x6fe9('0x38')]['id']}},_0x4c4f20={};_0x4c4f20[_0x6fe9('0x24')]=_[_0x6fe9('0x1f')](db[_0x6fe9('0x2f')][_0x6fe9('0x1b')]);_0x4c4f20['query']=_[_0x6fe9('0x1f')](_0x27e77c['query']);_0x4c4f20['filters']=_[_0x6fe9('0x22')](_0x4c4f20['model'],_0x4c4f20[_0x6fe9('0x20')]);_0x56d124['attributes']=_[_0x6fe9('0x22')](_0x4c4f20[_0x6fe9('0x24')],qs[_0x6fe9('0x25')](_0x27e77c[_0x6fe9('0x20')][_0x6fe9('0x25')]));_0x56d124[_0x6fe9('0x23')]=_0x56d124[_0x6fe9('0x23')][_0x6fe9('0x39')]?_0x56d124['attributes']:_0x4c4f20['model'];if(_0x27e77c[_0x6fe9('0x20')][_0x6fe9('0x3a')]){_0x56d124[_0x6fe9('0x30')]=[{'all':!![]}];}_0x56d124=_[_0x6fe9('0x2d')]({},_0x56d124,_0x27e77c['options']);return db[_0x6fe9('0x2f')][_0x6fe9('0x3b')](_0x56d124)[_0x6fe9('0x14')](handleEntityNotFound(_0x11caa8,null))[_0x6fe9('0x14')](function(_0x52088f){if(_0x52088f[_0x6fe9('0x32')]==='MicrosoftAzure'){var _0x383697=encryptor[_0x6fe9('0x34')](_0x52088f[_0x6fe9('0x35')]);_0x52088f[_0x6fe9('0x35')]=maskClientSecret(_0x383697);}return _0x52088f;})[_0x6fe9('0x14')](respondWithResult(_0x11caa8,null))[_0x6fe9('0x36')](handleError(_0x11caa8,null));};exports[_0x6fe9('0x3c')]=function(_0x2235c8,_0x55e3d3){if(!_0x2235c8[_0x6fe9('0x3d')][_0x6fe9('0x17')])throw new Error(_0x6fe9('0x3e'));if(!_0x2235c8[_0x6fe9('0x3d')][_0x6fe9('0x32')])throw new Error(_0x6fe9('0x3f'));var _0x5178e2=db[_0x6fe9('0x2f')][_0x6fe9('0x1b')]['service'][_0x6fe9('0x40')];if(!_0x5178e2[_0x6fe9('0x41')](_0x2235c8[_0x6fe9('0x3d')][_0x6fe9('0x32')]))throw new Error(_0x6fe9('0x42')+_0x5178e2['join'](',\x20'));if(_0x2235c8[_0x6fe9('0x3d')][_0x6fe9('0x32')]===_0x6fe9('0x33')&&_0x2235c8['body'][_0x6fe9('0x35')]){_0x2235c8[_0x6fe9('0x3d')]['data3']=encryptor[_0x6fe9('0x43')](_0x2235c8[_0x6fe9('0x3d')][_0x6fe9('0x35')]);}return db[_0x6fe9('0x2f')][_0x6fe9('0x3c')](_0x2235c8[_0x6fe9('0x3d')],{})[_0x6fe9('0x14')](respondWithResult(_0x55e3d3,0xc9))[_0x6fe9('0x36')](handleError(_0x55e3d3,null));};exports[_0x6fe9('0x12')]=function(_0x33222f,_0x4f3050){if(_0x33222f[_0x6fe9('0x3d')]['id']){delete _0x33222f[_0x6fe9('0x3d')]['id'];}return db[_0x6fe9('0x2f')][_0x6fe9('0x3b')]({'where':{'id':_0x33222f[_0x6fe9('0x38')]['id']}})[_0x6fe9('0x14')](handleEntityNotFound(_0x4f3050,null))[_0x6fe9('0x14')](function(_0x362d51){if(_0x362d51['service']===_0x6fe9('0x33')&&_0x33222f[_0x6fe9('0x3d')]['data3']){_0x33222f[_0x6fe9('0x3d')][_0x6fe9('0x35')]=encryptor[_0x6fe9('0x43')](_0x33222f[_0x6fe9('0x3d')]['data3']);}return _0x362d51;})[_0x6fe9('0x14')](saveUpdates(_0x33222f[_0x6fe9('0x3d')],null))['then'](respondWithResult(_0x4f3050,null))[_0x6fe9('0x36')](handleError(_0x4f3050,null));};exports[_0x6fe9('0x13')]=function(_0x38ae6,_0x6fc761){return db[_0x6fe9('0x2f')]['find']({'where':{'id':_0x38ae6['params']['id']}})[_0x6fe9('0x14')](handleEntityNotFound(_0x6fc761,null))['then'](removeEntity(_0x6fc761,null))['catch'](handleError(_0x6fc761,null));};exports[_0x6fe9('0x44')]=function(_0x4d3ed3,_0x5a2035){return db[_0x6fe9('0x2f')][_0x6fe9('0x45')]({'where':{'id':_0x4d3ed3['params']['id']},'raw':!![]})['then'](function(_0x485ec2){if(!_0x485ec2)return _0x5a2035[_0x6fe9('0x8')](0x194);return{'url':oauth[_0x6fe9('0x46')](_0x485ec2,_0x4d3ed3[_0x6fe9('0x47')]['id'])};})['then'](respondWithResult(_0x5a2035,null))[_0x6fe9('0x36')](handleError(_0x5a2035,null));};exports[_0x6fe9('0x48')]=function(_0x8db4a3,_0x105cd6){var _0x64e6ee=_0x8db4a3['body'];var _0x4886e8;var _0x187d4a;if(_0x64e6ee[_0x6fe9('0x15')])throw _0x64e6ee;redis['get'](_0x64e6ee[_0x6fe9('0x49')])[_0x6fe9('0x14')](function(_0x3b1d6b){if(!_0x3b1d6b)throw new Error(_0x6fe9('0x4a'));_0x4886e8=JSON[_0x6fe9('0x4b')](_0x3b1d6b);var _0x320250=Buffer['from'](_0x64e6ee[_0x6fe9('0x49')],'base64')['toString'](_0x6fe9('0x4c'));_0x187d4a=JSON[_0x6fe9('0x4b')](_0x320250);if(!oauth['isValidIdToken'](_0x64e6ee[_0x6fe9('0x4d')],_0x4886e8[_0x6fe9('0x4e')]))throw new Error(_0x6fe9('0x4f'));redis[_0x6fe9('0x50')](_0x64e6ee[_0x6fe9('0x49')]);return oauth[_0x6fe9('0x51')](_0x64e6ee['code'],_0x4886e8);})[_0x6fe9('0x14')](function(_0x1edf80){_0x4886e8[_0x6fe9('0x52')]=_0x1edf80[_0x6fe9('0x53')];_0x4886e8[_0x6fe9('0x54')]=_0x1edf80['refresh_token'];return db['CloudProvider']['update']({'data5':_0x4886e8[_0x6fe9('0x52')],'data6':_0x4886e8['data6']},{'where':{'id':_0x4886e8['id']}});})[_0x6fe9('0x14')](function(){oauth['startRefreshInterval'](_0x4886e8);socket[_0x6fe9('0x55')](_0x6fe9('0x56'),{'id':_0x187d4a['id']});return;})['then'](respondWithStatusCode(_0x105cd6,null))['catch'](function(_0x50a5ec){if(_0x187d4a){socket[_0x6fe9('0x55')](_0x6fe9('0x57'),{'id':_0x187d4a['id']});}if(!_0x4886e8){logger[_0x6fe9('0x15')](_0x6fe9('0x58'),_0x50a5ec);return _0x105cd6[_0x6fe9('0xa')](0x1f4)[_0x6fe9('0x18')](_0x50a5ec['message']);}logger[_0x6fe9('0x15')](_0x6fe9('0x59'),_0x4886e8['id'],JSON['stringify'](_0x50a5ec));});};
\ No newline at end of file
+var _0x9399=['ioredis','../../config/environment','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','sendStatus','status','json','undefined','limit','count','Content-Range','update','then','destroy','end','error','stack','name','send','padEnd','slice','index','map','CloudProvider','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','type','options','includeAll','service','data3','catch','show','params','keys','rawAttributes','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','body','MicrosoftAzure','encryptString','create','find','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','parse','from','state','base64','toString','ascii','id_token','Unable\x20to\x20validate\x20id_token','del','code','data5','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify'];(function(_0xf79888,_0x5a4cdb){var _0x217195=function(_0x22496f){while(--_0x22496f){_0xf79888['push'](_0xf79888['shift']());}};_0x217195(++_0x5a4cdb);}(_0x9399,0x164));var _0x9939=function(_0x5aafdf,_0x517319){_0x5aafdf=_0x5aafdf-0x0;var _0x1cc832=_0x9399[_0x5aafdf];return _0x1cc832;};'use strict';var _=require('lodash');var Redis=require(_0x9939('0x0'));var qs=require('../../components/parsers/qs');var encryptor=require('../../components/encryptor');var config=require(_0x9939('0x1'));var logger=require(_0x9939('0x2'))(_0x9939('0x3'));var db=require('../../mysqldb')['db'];var oauth=require('./cloudProvider.oauth');config[_0x9939('0x4')]=_[_0x9939('0x5')](config[_0x9939('0x4')],{'host':_0x9939('0x6'),'port':0x18eb});var socket=require(_0x9939('0x7'))(new Redis(config[_0x9939('0x4')]));var redis=new Redis(config[_0x9939('0x4')]);function respondWithStatusCode(_0x444527,_0x1e72d5){_0x1e72d5=_0x1e72d5||0xcc;return function(_0x97ce){if(_0x97ce){return _0x444527[_0x9939('0x8')](_0x1e72d5);}return _0x444527[_0x9939('0x9')](_0x1e72d5)['end']();};}function respondWithResult(_0x22255a,_0xce8a){_0xce8a=_0xce8a||0xc8;return function(_0x368bb1){if(_0x368bb1){return _0x22255a[_0x9939('0x9')](_0xce8a)[_0x9939('0xa')](_0x368bb1);}};}function respondWithFilteredResult(_0x453570,_0x59b8a4){return function(_0x5ab60f){if(_0x5ab60f){var _0x32bf9f=typeof _0x59b8a4['offset']===_0x9939('0xb')&&typeof _0x59b8a4[_0x9939('0xc')]===_0x9939('0xb');var _0x58e522=_0x5ab60f[_0x9939('0xd')];var _0x2ca4f0=_0x32bf9f?0x0:_0x59b8a4['offset'];var _0x5bac1a=_0x32bf9f?_0x5ab60f[_0x9939('0xd')]:_0x59b8a4['offset']+_0x59b8a4[_0x9939('0xc')];var _0x1314f3;if(_0x5bac1a>=_0x58e522){_0x5bac1a=_0x58e522;_0x1314f3=0xc8;}else{_0x1314f3=0xce;}_0x453570['status'](_0x1314f3);return _0x453570['set'](_0x9939('0xe'),_0x2ca4f0+'-'+_0x5bac1a+'/'+_0x58e522)['json'](_0x5ab60f);}return null;};}function saveUpdates(_0x335b00){return function(_0x1983be){if(_0x1983be){return _0x1983be[_0x9939('0xf')](_0x335b00)[_0x9939('0x10')](function(_0x4b31aa){return _0x4b31aa;});}return null;};}function removeEntity(_0x2d6d84){return function(_0x4c41ad){if(_0x4c41ad){return _0x4c41ad[_0x9939('0x11')]()[_0x9939('0x10')](function(){_0x2d6d84['status'](0xcc)[_0x9939('0x12')]();});}};}function handleEntityNotFound(_0xd558e7){return function(_0x521e2a){if(!_0x521e2a){_0xd558e7[_0x9939('0x8')](0x194);}return _0x521e2a;};}function handleError(_0x7f9bdc,_0x455a6b){_0x455a6b=_0x455a6b||0x1f4;return function(_0x29ab2a){logger[_0x9939('0x13')](_0x29ab2a[_0x9939('0x14')]);if(_0x29ab2a[_0x9939('0x15')]){delete _0x29ab2a['name'];}_0x7f9bdc['status'](_0x455a6b)[_0x9939('0x16')](_0x29ab2a);};}function maskClientSecret(_0x6f9aca){return _[_0x9939('0x17')](_0x6f9aca[_0x9939('0x18')](0x0,0x3),0x14,'*');}exports[_0x9939('0x19')]=function(_0x206a37,_0x48a1e9){var _0x4c8610={},_0x24f6c0={},_0x3bd1f8={'count':0x0,'rows':[]};var _0x12f09e=_[_0x9939('0x1a')](db[_0x9939('0x1b')]['rawAttributes'],function(_0x1d0dbe){return{'name':_0x1d0dbe[_0x9939('0x1c')],'type':_0x1d0dbe['type']['key']};});_0x24f6c0[_0x9939('0x1d')]=_[_0x9939('0x1a')](_0x12f09e,_0x9939('0x15'));_0x24f6c0[_0x9939('0x1e')]=_['keys'](_0x206a37[_0x9939('0x1e')]);_0x24f6c0[_0x9939('0x1f')]=_[_0x9939('0x20')](_0x24f6c0[_0x9939('0x1d')],_0x24f6c0[_0x9939('0x1e')]);_0x4c8610[_0x9939('0x21')]=_[_0x9939('0x20')](_0x24f6c0[_0x9939('0x1d')],qs[_0x9939('0x22')](_0x206a37[_0x9939('0x1e')][_0x9939('0x22')]));_0x4c8610[_0x9939('0x21')]=_0x4c8610['attributes'][_0x9939('0x23')]?_0x4c8610[_0x9939('0x21')]:_0x24f6c0[_0x9939('0x1d')];if(!_0x206a37[_0x9939('0x1e')][_0x9939('0x24')](_0x9939('0x25'))){_0x4c8610[_0x9939('0xc')]=qs[_0x9939('0xc')](_0x206a37[_0x9939('0x1e')][_0x9939('0xc')]);_0x4c8610[_0x9939('0x26')]=qs['offset'](_0x206a37[_0x9939('0x1e')][_0x9939('0x26')]);}_0x4c8610[_0x9939('0x27')]=qs[_0x9939('0x28')](_0x206a37[_0x9939('0x1e')][_0x9939('0x28')]);_0x4c8610[_0x9939('0x29')]=qs[_0x9939('0x1f')](_[_0x9939('0x2a')](_0x206a37[_0x9939('0x1e')],_0x24f6c0['filters']),_0x12f09e);if(_0x206a37[_0x9939('0x1e')][_0x9939('0x2b')]){_0x4c8610[_0x9939('0x29')]=_[_0x9939('0x2c')](_0x4c8610[_0x9939('0x29')],{'$or':_[_0x9939('0x1a')](_0x12f09e,function(_0x5d80e5){if(_0x5d80e5[_0x9939('0x2d')]!=='VIRTUAL'){var _0x3b9f4b={};_0x3b9f4b[_0x5d80e5[_0x9939('0x15')]]={'$like':'%'+_0x206a37['query'][_0x9939('0x2b')]+'%'};return _0x3b9f4b;}})});}_0x4c8610=_[_0x9939('0x2c')]({},_0x4c8610,_0x206a37[_0x9939('0x2e')]);var _0x4bf919={'where':_0x4c8610[_0x9939('0x29')]};return db[_0x9939('0x1b')]['count'](_0x4bf919)[_0x9939('0x10')](function(_0x2200a1){_0x3bd1f8[_0x9939('0xd')]=_0x2200a1;if(_0x206a37[_0x9939('0x1e')][_0x9939('0x2f')]){_0x4c8610['include']=[{'all':!![]}];}return db[_0x9939('0x1b')]['findAll'](_0x4c8610);})[_0x9939('0x10')](function(_0x52bd03){_0x3bd1f8['rows']=_[_0x9939('0x1a')](_0x52bd03,function(_0x171dde){if(_0x171dde[_0x9939('0x30')]==='MicrosoftAzure'){var _0xeaee07=encryptor['decryptString'](_0x171dde[_0x9939('0x31')]);_0x171dde[_0x9939('0x31')]=maskClientSecret(_0xeaee07);}return _0x171dde;});return _0x3bd1f8;})[_0x9939('0x10')](respondWithFilteredResult(_0x48a1e9,_0x4c8610))[_0x9939('0x32')](handleError(_0x48a1e9,null));};exports[_0x9939('0x33')]=function(_0x5f5be4,_0x58f9ea){var _0x3b1718={'raw':!![],'where':{'id':_0x5f5be4[_0x9939('0x34')]['id']}},_0x2eacd1={};_0x2eacd1[_0x9939('0x1d')]=_[_0x9939('0x35')](db[_0x9939('0x1b')][_0x9939('0x36')]);_0x2eacd1[_0x9939('0x1e')]=_[_0x9939('0x35')](_0x5f5be4['query']);_0x2eacd1['filters']=_[_0x9939('0x20')](_0x2eacd1[_0x9939('0x1d')],_0x2eacd1[_0x9939('0x1e')]);_0x3b1718[_0x9939('0x21')]=_[_0x9939('0x20')](_0x2eacd1[_0x9939('0x1d')],qs[_0x9939('0x22')](_0x5f5be4[_0x9939('0x1e')][_0x9939('0x22')]));_0x3b1718[_0x9939('0x21')]=_0x3b1718[_0x9939('0x21')]['length']?_0x3b1718[_0x9939('0x21')]:_0x2eacd1['model'];if(_0x5f5be4[_0x9939('0x1e')][_0x9939('0x2f')]){_0x3b1718['include']=[{'all':!![]}];}_0x3b1718=_[_0x9939('0x2c')]({},_0x3b1718,_0x5f5be4[_0x9939('0x2e')]);return db[_0x9939('0x1b')]['find'](_0x3b1718)[_0x9939('0x10')](handleEntityNotFound(_0x58f9ea,null))[_0x9939('0x10')](function(_0x4e44bd){if(_0x4e44bd[_0x9939('0x30')]==='MicrosoftAzure'){var _0x2d53fb=encryptor['decryptString'](_0x4e44bd[_0x9939('0x31')]);_0x4e44bd[_0x9939('0x31')]=maskClientSecret(_0x2d53fb);}return _0x4e44bd;})[_0x9939('0x10')](respondWithResult(_0x58f9ea,null))['catch'](handleError(_0x58f9ea,null));};exports['create']=function(_0x424f54,_0x60f13c){if(!_0x424f54['body']['name'])throw new Error(_0x9939('0x37'));if(!_0x424f54['body'][_0x9939('0x30')])throw new Error(_0x9939('0x38'));var _0x11c414=db[_0x9939('0x1b')][_0x9939('0x36')]['service']['values'];if(!_0x11c414[_0x9939('0x39')](_0x424f54['body'][_0x9939('0x30')]))throw new Error(_0x9939('0x3a')+_0x11c414['join'](',\x20'));if(_0x424f54[_0x9939('0x3b')][_0x9939('0x30')]===_0x9939('0x3c')&&_0x424f54[_0x9939('0x3b')][_0x9939('0x31')]){_0x424f54[_0x9939('0x3b')][_0x9939('0x31')]=encryptor[_0x9939('0x3d')](_0x424f54['body'][_0x9939('0x31')]);}return db[_0x9939('0x1b')][_0x9939('0x3e')](_0x424f54[_0x9939('0x3b')],{})[_0x9939('0x10')](respondWithResult(_0x60f13c,0xc9))[_0x9939('0x32')](handleError(_0x60f13c,null));};exports[_0x9939('0xf')]=function(_0x2e5db2,_0x57193b){if(_0x2e5db2['body']['id']){delete _0x2e5db2['body']['id'];}return db[_0x9939('0x1b')][_0x9939('0x3f')]({'where':{'id':_0x2e5db2[_0x9939('0x34')]['id']}})[_0x9939('0x10')](handleEntityNotFound(_0x57193b,null))[_0x9939('0x10')](function(_0x4237ab){if(_0x4237ab[_0x9939('0x30')]===_0x9939('0x3c')&&_0x2e5db2[_0x9939('0x3b')]['data3']){_0x2e5db2[_0x9939('0x3b')][_0x9939('0x31')]=encryptor['encryptString'](_0x2e5db2[_0x9939('0x3b')][_0x9939('0x31')]);}return _0x4237ab;})[_0x9939('0x10')](saveUpdates(_0x2e5db2[_0x9939('0x3b')],null))['then'](respondWithResult(_0x57193b,null))[_0x9939('0x32')](handleError(_0x57193b,null));};exports[_0x9939('0x11')]=function(_0x2de875,_0x12d51b){return db['CloudProvider'][_0x9939('0x3f')]({'where':{'id':_0x2de875[_0x9939('0x34')]['id']}})[_0x9939('0x10')](handleEntityNotFound(_0x12d51b,null))[_0x9939('0x10')](removeEntity(_0x12d51b,null))['catch'](handleError(_0x12d51b,null));};exports['oauth2MicrosoftAuthorize']=function(_0x240a84,_0x23955a){return db[_0x9939('0x1b')][_0x9939('0x40')]({'where':{'id':_0x240a84[_0x9939('0x34')]['id']},'raw':!![]})['then'](function(_0x40f483){if(!_0x40f483)return _0x23955a[_0x9939('0x8')](0x194);return{'url':oauth[_0x9939('0x41')](_0x40f483,_0x240a84[_0x9939('0x42')]['id'])};})[_0x9939('0x10')](respondWithResult(_0x23955a,null))[_0x9939('0x32')](handleError(_0x23955a,null));};exports[_0x9939('0x43')]=function(_0x8ba176,_0x16f3b4){var _0x300b4c=_0x8ba176[_0x9939('0x3b')];var _0x3b67d;var _0x5788be;if(_0x300b4c[_0x9939('0x13')])throw _0x300b4c;redis[_0x9939('0x44')](_0x300b4c['state'])['then'](function(_0x4205ac){if(!_0x4205ac)throw new Error(_0x9939('0x45'));_0x3b67d=JSON[_0x9939('0x46')](_0x4205ac);var _0x4a515e=Buffer[_0x9939('0x47')](_0x300b4c[_0x9939('0x48')],_0x9939('0x49'))[_0x9939('0x4a')](_0x9939('0x4b'));_0x5788be=JSON[_0x9939('0x46')](_0x4a515e);if(!oauth['isValidIdToken'](_0x300b4c[_0x9939('0x4c')],_0x3b67d['oauth2Claims']))throw new Error(_0x9939('0x4d'));redis[_0x9939('0x4e')](_0x300b4c[_0x9939('0x48')]);return oauth['getOauth2MicrosoftAccessToken'](_0x300b4c[_0x9939('0x4f')],_0x3b67d);})[_0x9939('0x10')](function(_0x2386cd){_0x3b67d[_0x9939('0x50')]=_0x2386cd['access_token'];_0x3b67d[_0x9939('0x51')]=_0x2386cd['refresh_token'];return db['CloudProvider'][_0x9939('0xf')]({'data5':_0x3b67d[_0x9939('0x50')],'data6':_0x3b67d['data6']},{'where':{'id':_0x3b67d['id']}});})[_0x9939('0x10')](function(){oauth[_0x9939('0x52')](_0x3b67d);socket[_0x9939('0x53')](_0x9939('0x54'),{'id':_0x5788be['id']});return;})[_0x9939('0x10')](respondWithStatusCode(_0x16f3b4,null))[_0x9939('0x32')](function(_0x432350){if(_0x5788be){socket[_0x9939('0x53')](_0x9939('0x55'),{'id':_0x5788be['id']});}if(!_0x3b67d){logger[_0x9939('0x13')]('Invalid\x20authentication\x20state\x20parameter',_0x432350);return _0x16f3b4['status'](0x1f4)[_0x9939('0x16')](_0x432350[_0x9939('0x56')]);}logger[_0x9939('0x13')](_0x9939('0x57'),_0x3b67d['id'],JSON[_0x9939('0x58')](_0x432350));});};
\ No newline at end of file
index f7431ce..2261bb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30d=['moment','bluebird','request-promise','path','../../config/environment','exports','define','CloudProvider','cloud_providers','lodash','../../config/logger','api'];(function(_0x387876,_0x1646bf){var _0x446e9e=function(_0x5531b2){while(--_0x5531b2){_0x387876['push'](_0x387876['shift']());}};_0x446e9e(++_0x1646bf);}(_0xa30d,0x75));var _0xda30=function(_0x9d1c24,_0x30a055){_0x9d1c24=_0x9d1c24-0x0;var _0x5ba16a=_0xa30d[_0x9d1c24];return _0x5ba16a;};'use strict';var _=require(_0xda30('0x0'));var util=require('util');var logger=require(_0xda30('0x1'))(_0xda30('0x2'));var moment=require(_0xda30('0x3'));var BPromise=require(_0xda30('0x4'));var rp=require(_0xda30('0x5'));var fs=require('fs');var path=require(_0xda30('0x6'));var rimraf=require('rimraf');var config=require(_0xda30('0x7'));var attributes=require('./cloudProvider.attributes');module[_0xda30('0x8')]=function(_0x275264,_0x2f2f43){return _0x275264[_0xda30('0x9')](_0xda30('0xa'),attributes,{'tableName':_0xda30('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88ad=['CloudProvider','cloud_providers','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','define'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0x88ad,0x1f0));var _0xd88a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x88ad[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xd88a('0x0'));var util=require(_0xd88a('0x1'));var logger=require(_0xd88a('0x2'))('api');var moment=require(_0xd88a('0x3'));var BPromise=require(_0xd88a('0x4'));var rp=require(_0xd88a('0x5'));var fs=require('fs');var path=require(_0xd88a('0x6'));var rimraf=require(_0xd88a('0x7'));var config=require(_0xd88a('0x8'));var attributes=require(_0xd88a('0x9'));module['exports']=function(_0x103f38,_0x52f2ed){return _0x103f38[_0xd88a('0xa')](_0xd88a('0xb'),attributes,{'tableName':_0xd88a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cdca2ed..46c12b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb156=['id_token','from','stringify','toString','randomBytes','hex','client_id','data1','response_type','redirect_uri','data4','response_mode','form_post','nonce','prompt','map','key','value','oauth2Claims','oauth2/','set','decode','payload','iss','issuer','aud','audience','isAfter','unix','CloudProvider','findOne','then','refresh_token','data3','{TENANT_ID}','data2','data5','access_token','data6','update','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','POST','intervals','bind','all','catch','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','moment','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','offline_access','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','type','join','https://outlook.office365.com/IMAP.AccessAsUser.All','Dynamics365','data7','replace','code'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0xb156,0x84));var _0x6b15=function(_0x4495b6,_0x1660d5){_0x4495b6=_0x4495b6-0x0;var _0x2ff893=_0xb156[_0x4495b6];return _0x2ff893;};'use strict';var _=require(_0x6b15('0x0'));var crypto=require(_0x6b15('0x1'));var jwt=require('jsonwebtoken');var moment=require(_0x6b15('0x2'));var Redis=require('ioredis');var rp=require(_0x6b15('0x3'));var util=require(_0x6b15('0x4'));var encryptor=require(_0x6b15('0x5'));var config=require(_0x6b15('0x6'));var logger=require(_0x6b15('0x7'))(_0x6b15('0x8'));var schedule=require(_0x6b15('0x9'));var db=require(_0x6b15('0xa'))['db'];config[_0x6b15('0xb')]=_[_0x6b15('0xc')](config[_0x6b15('0xb')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0x6b15('0xb')]);var MICROSOFT_AUTH_URL=_0x6b15('0xd');var AZURE_AUTH_SCOPES={'Outlook365':[_0x6b15('0xe'),_0x6b15('0xf'),_0x6b15('0x10'),_0x6b15('0x11'),'https://outlook.office365.com/IMAP.AccessAsUser.All',_0x6b15('0x12'),_0x6b15('0x13')],'Dynamics365':['openid','offline_access']};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x6b15('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x4ef549){var _0x5e6335=_['map'](AZURE_AUTH_SCOPES[_0x4ef549[_0x6b15('0x15')]]);if(_0x4ef549[_0x6b15('0x15')]==='Dynamics365')_0x5e6335['push'](_0x4ef549['data7']+'/.default');return _0x5e6335[_0x6b15('0x16')]('\x20');}function getAccessTokenScope(_0x2dfc35){if(_0x2dfc35[_0x6b15('0x15')]==='Outlook365')return _0x6b15('0x17');if(_0x2dfc35[_0x6b15('0x15')]===_0x6b15('0x18'))return _0x2dfc35[_0x6b15('0x19')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x3189b2,_0x34a611){var _0x12972e=MICROSOFT_AUTH_URL[_0x6b15('0x1a')]('{TENANT_ID}',_0x3189b2['data2']);var _0x1da18c=[_0x6b15('0x1b'),_0x6b15('0x1c')];var _0x14b5f0=Buffer[_0x6b15('0x1d')](JSON[_0x6b15('0x1e')]({'id':_0x34a611}))[_0x6b15('0x1f')]('base64');var _0x4d6866=crypto[_0x6b15('0x20')](0x10)[_0x6b15('0x1f')](_0x6b15('0x21'));var _0x173c03=getAuthorizationScopes(_0x3189b2);var _0x2f1505=[{'key':_0x6b15('0x22'),'value':_0x3189b2[_0x6b15('0x23')]},{'key':_0x6b15('0x24'),'value':encodeURIComponent(_0x1da18c[_0x6b15('0x16')]('\x20'))},{'key':_0x6b15('0x25'),'value':_0x3189b2[_0x6b15('0x26')]},{'key':_0x6b15('0x27'),'value':_0x6b15('0x28')},{'key':'scope','value':encodeURIComponent(_0x173c03)},{'key':'state','value':_0x14b5f0},{'key':_0x6b15('0x29'),'value':_0x4d6866},{'key':_0x6b15('0x2a'),'value':'login'}];var _0x2cb47a=_0x12972e+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x6b15('0x2b')](_0x2f1505,function(_0x4b1647){return _0x4b1647[_0x6b15('0x2c')]+'='+_0x4b1647[_0x6b15('0x2d')];})['join']('&');_0x3189b2[_0x6b15('0x2e')]={'issuer':_0x12972e['replace'](_0x6b15('0x2f'),''),'audience':_0x3189b2[_0x6b15('0x23')],'state':_0x14b5f0,'nonce':_0x4d6866};redis[_0x6b15('0x30')](_0x14b5f0,JSON['stringify'](_0x3189b2));return _0x2cb47a;}function isValidIdToken(_0x79e8de,_0x9d4abb){try{var _0x41c9c4=jwt[_0x6b15('0x31')](_0x79e8de,{'complete':!![]});var _0x68867f=_0x41c9c4[_0x6b15('0x32')];if(_0x68867f[_0x6b15('0x33')]!==_0x9d4abb[_0x6b15('0x34')])return![];if(_0x68867f[_0x6b15('0x35')]!==_0x9d4abb[_0x6b15('0x36')])return![];if(_0x68867f[_0x6b15('0x29')]!==_0x9d4abb[_0x6b15('0x29')])return![];if(moment()[_0x6b15('0x37')](moment[_0x6b15('0x38')](_0x68867f['exp'])))return![];return!![];}catch(_0xac5a63){throw _0xac5a63;}}function refreshOauth2MicrosoftAccessToken(_0x5c7c7b){return Promise['resolve']()['then'](function(){if(_0x5c7c7b['data3'])return _0x5c7c7b;return db[_0x6b15('0x39')][_0x6b15('0x3a')]({'where':{'id':_0x5c7c7b['id']},'raw':!![]});})[_0x6b15('0x3b')](function(_0x5ddc01){var _0x462500={'grant_type':_0x6b15('0x3c'),'refresh_token':_0x5ddc01['data6'],'scope':getAccessTokenScope(_0x5ddc01),'redirect_uri':_0x5ddc01[_0x6b15('0x26')],'client_id':_0x5ddc01[_0x6b15('0x23')],'client_secret':encryptor['decryptString'](_0x5ddc01[_0x6b15('0x3d')])};var _0x49282f={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0x6b15('0x3e'),_0x5ddc01[_0x6b15('0x3f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x462500,'json':!![]};return rp(_0x49282f);})['then'](function(_0xd3c8f8){_0x5c7c7b[_0x6b15('0x40')]=_0xd3c8f8[_0x6b15('0x41')];_0x5c7c7b[_0x6b15('0x42')]=_0xd3c8f8['refresh_token'];return db[_0x6b15('0x39')][_0x6b15('0x43')]({'data5':_0x5c7c7b[_0x6b15('0x40')],'data6':_0x5c7c7b[_0x6b15('0x42')]},{'where':{'id':_0x5c7c7b['id']}});})[_0x6b15('0x3b')](function(){return _0x5c7c7b;})['catch'](function(_0x530e20){logger[_0x6b15('0x44')](_0x6b15('0x45'),_0x5c7c7b['id'],_0x530e20);});}function getOauth2MicrosoftAccessToken(_0x27ce03,_0x3b69b3){var _0xf753d3={'grant_type':_0x6b15('0x46'),'code':_0x27ce03,'scope':getAccessTokenScope(_0x3b69b3),'redirect_uri':_0x3b69b3[_0x6b15('0x26')],'client_id':_0x3b69b3['data1'],'client_secret':encryptor[_0x6b15('0x47')](_0x3b69b3['data3'])};var _0x4750e5={'method':_0x6b15('0x48'),'uri':MICROSOFT_AUTH_URL[_0x6b15('0x1a')](_0x6b15('0x3e'),_0x3b69b3['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xf753d3,'json':!![]};return rp(_0x4750e5);}function startRefreshInterval(_0x28c189){var _0x546fa3=schedule[_0x6b15('0x49')];if(_0x546fa3[_0x28c189['id']])clearInterval(_0x546fa3[_0x28c189['id']]);_0x546fa3[_0x28c189['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x6b15('0x4a')](this,{'id':_0x28c189['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x6b15('0x49')]=_0x546fa3;}function startAllRefreshIntervals(){return db[_0x6b15('0x39')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x3f3432){var _0x129976=_0x3f3432[_0x6b15('0x2b')](function(_0x224e2a){return refreshOauth2MicrosoftAccessToken(_0x224e2a)[_0x6b15('0x3b')](function(_0x1eca6c){startRefreshInterval(_0x1eca6c);});});return Promise[_0x6b15('0x4b')](_0x129976);})[_0x6b15('0x4c')](function(_0x2b5d60){var _0x485611=_0x2b5d60?util[_0x6b15('0x4d')](_0x2b5d60,{'showHidden':![],'depth':null}):'';logger['error'](_0x6b15('0x4e'),_0x485611);});}module[_0x6b15('0x4f')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x747d=['state','nonce','login','oauth2Claims','oauth2/','set','decode','payload','iss','issuer','audience','resolve','then','data3','CloudProvider','findOne','data4','decryptString','POST','data5','access_token','refresh_token','update','data6','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','map','all','catch','inspect','exports','lodash','crypto','jsonwebtoken','moment','util','../../config/environment','../../config/logger','api','../../mysqldb','defaults','redis','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','type','Dynamics365','push','data7','/.default','replace','{TENANT_ID}','data2','id_token','stringify','toString','randomBytes','hex','client_id','data1','response_type','join','redirect_uri','response_mode','scope'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x747d,0xb9));var _0xd747=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x747d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd747('0x0'));var crypto=require(_0xd747('0x1'));var jwt=require(_0xd747('0x2'));var moment=require(_0xd747('0x3'));var Redis=require('ioredis');var rp=require('request-promise');var util=require(_0xd747('0x4'));var encryptor=require('../../components/encryptor');var config=require(_0xd747('0x5'));var logger=require(_0xd747('0x6'))(_0xd747('0x7'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0xd747('0x8'))['db'];config['redis']=_[_0xd747('0x9')](config[_0xd747('0xa')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0xd747('0xa')]);var MICROSOFT_AUTH_URL=_0xd747('0xb');var AZURE_AUTH_SCOPES={'Outlook365':[_0xd747('0xc'),_0xd747('0xd'),_0xd747('0xe'),_0xd747('0xf'),_0xd747('0x10'),_0xd747('0x11'),_0xd747('0x12')],'Dynamics365':[_0xd747('0xc'),_0xd747('0xf')]};var MICROSOFT_AUTH_ENDPOINT=_0xd747('0x13');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x5f316b){var _0x464512=_['map'](AZURE_AUTH_SCOPES[_0x5f316b[_0xd747('0x14')]]);if(_0x5f316b['type']===_0xd747('0x15'))_0x464512[_0xd747('0x16')](_0x5f316b['data7']+'/.default');return _0x464512['join']('\x20');}function getAccessTokenScope(_0x3958a8){if(_0x3958a8[_0xd747('0x14')]==='Outlook365')return _0xd747('0x10');if(_0x3958a8[_0xd747('0x14')]===_0xd747('0x15'))return _0x3958a8[_0xd747('0x17')]+_0xd747('0x18');}function generateMicrosoftAuthorizationUrl(_0x5bd82f,_0x415963){var _0x2f88c4=MICROSOFT_AUTH_URL[_0xd747('0x19')](_0xd747('0x1a'),_0x5bd82f[_0xd747('0x1b')]);var _0x1850e7=['code',_0xd747('0x1c')];var _0x299f50=Buffer['from'](JSON[_0xd747('0x1d')]({'id':_0x415963}))[_0xd747('0x1e')]('base64');var _0x60c97e=crypto[_0xd747('0x1f')](0x10)['toString'](_0xd747('0x20'));var _0x4bc20b=getAuthorizationScopes(_0x5bd82f);var _0x559ddc=[{'key':_0xd747('0x21'),'value':_0x5bd82f[_0xd747('0x22')]},{'key':_0xd747('0x23'),'value':encodeURIComponent(_0x1850e7[_0xd747('0x24')]('\x20'))},{'key':_0xd747('0x25'),'value':_0x5bd82f['data4']},{'key':_0xd747('0x26'),'value':'form_post'},{'key':_0xd747('0x27'),'value':encodeURIComponent(_0x4bc20b)},{'key':_0xd747('0x28'),'value':_0x299f50},{'key':_0xd747('0x29'),'value':_0x60c97e},{'key':'prompt','value':_0xd747('0x2a')}];var _0x64cebb=_0x2f88c4+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x559ddc,function(_0x47d17b){return _0x47d17b['key']+'='+_0x47d17b['value'];})[_0xd747('0x24')]('&');_0x5bd82f[_0xd747('0x2b')]={'issuer':_0x2f88c4[_0xd747('0x19')](_0xd747('0x2c'),''),'audience':_0x5bd82f[_0xd747('0x22')],'state':_0x299f50,'nonce':_0x60c97e};redis[_0xd747('0x2d')](_0x299f50,JSON[_0xd747('0x1d')](_0x5bd82f));return _0x64cebb;}function isValidIdToken(_0x3dd3c5,_0x245269){try{var _0x599226=jwt[_0xd747('0x2e')](_0x3dd3c5,{'complete':!![]});var _0x4915d8=_0x599226[_0xd747('0x2f')];if(_0x4915d8[_0xd747('0x30')]!==_0x245269[_0xd747('0x31')])return![];if(_0x4915d8['aud']!==_0x245269[_0xd747('0x32')])return![];if(_0x4915d8[_0xd747('0x29')]!==_0x245269[_0xd747('0x29')])return![];if(moment()['isAfter'](moment['unix'](_0x4915d8['exp'])))return![];return!![];}catch(_0x1d3271){throw _0x1d3271;}}function refreshOauth2MicrosoftAccessToken(_0x4998e9){return Promise[_0xd747('0x33')]()[_0xd747('0x34')](function(){if(_0x4998e9[_0xd747('0x35')])return _0x4998e9;return db[_0xd747('0x36')][_0xd747('0x37')]({'where':{'id':_0x4998e9['id']},'raw':!![]});})[_0xd747('0x34')](function(_0xe679a5){var _0x54e178={'grant_type':'refresh_token','refresh_token':_0xe679a5['data6'],'scope':getAccessTokenScope(_0xe679a5),'redirect_uri':_0xe679a5[_0xd747('0x38')],'client_id':_0xe679a5[_0xd747('0x22')],'client_secret':encryptor[_0xd747('0x39')](_0xe679a5['data3'])};var _0x51a4f7={'method':_0xd747('0x3a'),'uri':MICROSOFT_AUTH_URL['replace'](_0xd747('0x1a'),_0xe679a5[_0xd747('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x54e178,'json':!![]};return rp(_0x51a4f7);})['then'](function(_0x18c350){_0x4998e9[_0xd747('0x3b')]=_0x18c350[_0xd747('0x3c')];_0x4998e9['data6']=_0x18c350[_0xd747('0x3d')];return db[_0xd747('0x36')][_0xd747('0x3e')]({'data5':_0x4998e9[_0xd747('0x3b')],'data6':_0x4998e9[_0xd747('0x3f')]},{'where':{'id':_0x4998e9['id']}});})[_0xd747('0x34')](function(){return _0x4998e9;})['catch'](function(_0x24926b){logger[_0xd747('0x40')](_0xd747('0x41'),_0x4998e9['id'],_0x24926b);});}function getOauth2MicrosoftAccessToken(_0x498e12,_0x293ec3){var _0x35e6f1={'grant_type':_0xd747('0x42'),'code':_0x498e12,'scope':getAccessTokenScope(_0x293ec3),'redirect_uri':_0x293ec3['data4'],'client_id':_0x293ec3['data1'],'client_secret':encryptor[_0xd747('0x39')](_0x293ec3['data3'])};var _0x2b4ae3={'method':_0xd747('0x3a'),'uri':MICROSOFT_AUTH_URL[_0xd747('0x19')](_0xd747('0x1a'),_0x293ec3[_0xd747('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x35e6f1,'json':!![]};return rp(_0x2b4ae3);}function startRefreshInterval(_0x58a355){var _0x550302=schedule[_0xd747('0x43')];if(_0x550302[_0x58a355['id']])clearInterval(_0x550302[_0x58a355['id']]);_0x550302[_0x58a355['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xd747('0x44')](this,{'id':_0x58a355['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xd747('0x43')]=_0x550302;}function startAllRefreshIntervals(){return db[_0xd747('0x36')][_0xd747('0x45')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xd747('0x34')](function(_0x2bc9c1){var _0x3431ce=_0x2bc9c1[_0xd747('0x46')](function(_0xbb55b5){return refreshOauth2MicrosoftAccessToken(_0xbb55b5)[_0xd747('0x34')](function(_0x11a4b7){startRefreshInterval(_0x11a4b7);});});return Promise[_0xd747('0x47')](_0x3431ce);})[_0xd747('0x48')](function(_0xd268cd){var _0x317440=_0xd268cd?util[_0xd747('0x49')](_0xd268cd,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x317440);});}module[_0xd747('0x4a')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 067dffb..1cbf986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info'];(function(_0x235a95,_0x342dbb){var _0x2e5403=function(_0x29d3d1){while(--_0x29d3d1){_0x235a95['push'](_0x235a95['shift']());}};_0x2e5403(++_0x342dbb);}(_0x7916,0x128));var _0x6791=function(_0xbe079e,_0x19008d){_0xbe079e=_0xbe079e-0x0;var _0x5c2ebc=_0x7916[_0xbe079e];return _0x5c2ebc;};'use strict';var _=require(_0x6791('0x0'));var util=require('util');var moment=require(_0x6791('0x1'));var BPromise=require(_0x6791('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6791('0x3'));var db=require(_0x6791('0x4'))['db'];var utils=require(_0x6791('0x5'));var logger=require(_0x6791('0x6'))('rpc');var config=require(_0x6791('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6791('0x8')][_0x6791('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ad8c0,_0x8b85ff,_0x5d2118){return new BPromise(function(_0x2b240c,_0x50c563){return client['request'](_0x5ad8c0,_0x5d2118)[_0x6791('0xa')](function(_0x198a64){logger['info'](_0x6791('0xb'),_0x8b85ff,_0x6791('0xc'));logger[_0x6791('0xd')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x8b85ff,_0x6791('0xc'),JSON[_0x6791('0xe')](_0x198a64));if(_0x198a64[_0x6791('0xf')]){if(_0x198a64[_0x6791('0xf')][_0x6791('0x10')]===0x1f4){logger[_0x6791('0xf')](_0x6791('0xb'),_0x8b85ff,_0x198a64[_0x6791('0xf')][_0x6791('0x11')]);return _0x50c563(_0x198a64[_0x6791('0xf')][_0x6791('0x11')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x8b85ff,_0x198a64[_0x6791('0xf')]['message']);return _0x2b240c(_0x198a64[_0x6791('0xf')]['message']);}else{logger[_0x6791('0x12')](_0x6791('0xb'),_0x8b85ff,'request\x20sent');_0x2b240c(_0x198a64[_0x6791('0x13')]['message']);}})[_0x6791('0x14')](function(_0x150d1f){logger['error'](_0x6791('0xb'),_0x8b85ff,_0x150d1f);_0x50c563(_0x150d1f);});});}
\ No newline at end of file
+var _0x2deb=['CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x2deb,0xdb));var _0xb2de=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2deb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb2de('0x0'));var util=require(_0xb2de('0x1'));var moment=require(_0xb2de('0x2'));var BPromise=require(_0xb2de('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb2de('0x4'))['db'];var utils=require(_0xb2de('0x5'));var logger=require(_0xb2de('0x6'))(_0xb2de('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb2de('0x8')][_0xb2de('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x191004,_0x49307b,_0x253d0b){return new BPromise(function(_0x1a4c44,_0x53ab0e){return client[_0xb2de('0xa')](_0x191004,_0x253d0b)[_0xb2de('0xb')](function(_0x1d40ec){logger['info'](_0xb2de('0xc'),_0x49307b,_0xb2de('0xd'));logger[_0xb2de('0xe')](_0xb2de('0xf'),_0x49307b,'request\x20sent',JSON['stringify'](_0x1d40ec));if(_0x1d40ec[_0xb2de('0x10')]){if(_0x1d40ec[_0xb2de('0x10')][_0xb2de('0x11')]===0x1f4){logger['error'](_0xb2de('0xc'),_0x49307b,_0x1d40ec[_0xb2de('0x10')][_0xb2de('0x12')]);return _0x53ab0e(_0x1d40ec['error'][_0xb2de('0x12')]);}logger['error'](_0xb2de('0xc'),_0x49307b,_0x1d40ec['error'][_0xb2de('0x12')]);return _0x1a4c44(_0x1d40ec[_0xb2de('0x10')][_0xb2de('0x12')]);}else{logger['info'](_0xb2de('0xc'),_0x49307b,_0xb2de('0xd'));_0x1a4c44(_0x1d40ec[_0xb2de('0x13')][_0xb2de('0x12')]);}})[_0xb2de('0x14')](function(_0x2dc15c){logger[_0xb2de('0x10')](_0xb2de('0xc'),_0x49307b,_0x2dc15c);_0x53ab0e(_0x2dc15c);});});}
\ No newline at end of file
index 143a994..042bc9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0x5f2f,0x73));var _0xf5f2=function(_0x498e19,_0x2fd42f){_0x498e19=_0x498e19-0x0;var _0x2f756a=_0x5f2f[_0x498e19];return _0x2f756a;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);router[_0xf5f2('0x4')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x7')]);router[_0xf5f2('0x8')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x9')]);router[_0xf5f2('0xa')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xc')]);router[_0xf5f2('0xd')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xe')]);router[_0xf5f2('0x4')](_0xf5f2('0xf'),auth['isAuthenticated'](),controller[_0xf5f2('0x10')]);router['post']('/oauth2/microsoft/callback',controller[_0xf5f2('0x11')]);module[_0xf5f2('0x12')]=router;
\ No newline at end of file
+var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x7a54,0x106));var _0x47a5=function(_0x5a06a9,_0x1c2efe){_0x5a06a9=_0x5a06a9-0x0;var _0x20ef6b=_0x7a54[_0x5a06a9];return _0x20ef6b;};'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
index 46ad627..72d5c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c7d=['sequelize','STRING'];(function(_0x190b80,_0x554e34){var _0x24c91d=function(_0x302ba4){while(--_0x302ba4){_0x190b80['push'](_0x190b80['shift']());}};_0x24c91d(++_0x554e34);}(_0x3c7d,0x84));var _0xd3c7=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x3c7d[_0x273c39];return _0x46d6b5;};'use strict';var Sequelize=require(_0xd3c7('0x0'));module['exports']={'name':{'type':Sequelize[_0xd3c7('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xd3c7('0x1')]},'companyId':{'type':Sequelize[_0xd3c7('0x1')]},'website':{'type':Sequelize[_0xd3c7('0x1')]},'phone':{'type':Sequelize[_0xd3c7('0x1')]},'fax':{'type':Sequelize[_0xd3c7('0x1')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xd3c7('0x1')]},'postalCode':{'type':Sequelize[_0xd3c7('0x1')]},'city':{'type':Sequelize[_0xd3c7('0x1')]},'country':{'type':Sequelize[_0xd3c7('0x1')]},'email':{'type':Sequelize[_0xd3c7('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xd3c7('0x1')]},'sPostalCode':{'type':Sequelize[_0xd3c7('0x1')]},'sCity':{'type':Sequelize[_0xd3c7('0x1')]},'sCountry':{'type':Sequelize[_0xd3c7('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd6d9=['exports','STRING'];(function(_0x4936fb,_0x10fda9){var _0x4430ab=function(_0xd722c3){while(--_0xd722c3){_0x4936fb['push'](_0x4936fb['shift']());}};_0x4430ab(++_0x10fda9);}(_0xd6d9,0x16a));var _0x9d6d=function(_0x4da522,_0x1672df){_0x4da522=_0x4da522-0x0;var _0x5e57f6=_0xd6d9[_0x4da522];return _0x5e57f6;};'use strict';var Sequelize=require('sequelize');module[_0x9d6d('0x0')]={'name':{'type':Sequelize[_0x9d6d('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x9d6d('0x1')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x9d6d('0x1')]},'phone':{'type':Sequelize[_0x9d6d('0x1')]},'fax':{'type':Sequelize[_0x9d6d('0x1')]},'type':{'type':Sequelize[_0x9d6d('0x1')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x9d6d('0x1')]},'city':{'type':Sequelize[_0x9d6d('0x1')]},'country':{'type':Sequelize[_0x9d6d('0x1')]},'email':{'type':Sequelize[_0x9d6d('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x9d6d('0x1')]},'sCity':{'type':Sequelize[_0x9d6d('0x1')]},'sCountry':{'type':Sequelize[_0x9d6d('0x1')]},'description':{'type':Sequelize[_0x9d6d('0x1')]}};
\ No newline at end of file
index 839dfc0..c7d1c9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d7=['rows','catch','show','params','rawAttributes','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addContacts','CmContact','ids','omit','getContacts','merge','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','status','json','undefined','count','limit','apply','save','update','then','destroy','get','Companies','UserProfileResource','end','error','stack','name','send','index','CmCompany','describe','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','map','options','include','findAll'];(function(_0x1c5683,_0x4ff312){var _0x1713fa=function(_0x2ee552){while(--_0x2ee552){_0x1c5683['push'](_0x1c5683['shift']());}};_0x1713fa(++_0x4ff312);}(_0xd6d7,0xb2));var _0x7d6d=function(_0x404eed,_0x5390c5){_0x404eed=_0x404eed-0x0;var _0xd45887=_0xd6d7[_0x404eed];return _0xd45887;};'use strict';var emlformat=require(_0x7d6d('0x0'));var rimraf=require(_0x7d6d('0x1'));var zipdir=require(_0x7d6d('0x2'));var jsonpatch=require(_0x7d6d('0x3'));var rp=require(_0x7d6d('0x4'));var moment=require('moment');var BPromise=require(_0x7d6d('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7d6d('0x6'));var csv=require(_0x7d6d('0x7'));var ejs=require(_0x7d6d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7d6d('0x9'));var crypto=require('crypto');var jsforce=require(_0x7d6d('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7d6d('0x7'));var querystring=require('querystring');var Papa=require(_0x7d6d('0xb'));var Redis=require('ioredis');var authService=require(_0x7d6d('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x7d6d('0xd'));var hardwareService=require(_0x7d6d('0xe'));var logger=require(_0x7d6d('0xf'))(_0x7d6d('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7d6d('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x461e8d,_0x2361c5){_0x2361c5=_0x2361c5||0xcc;return function(_0x4481af){if(_0x4481af){return _0x461e8d['sendStatus'](_0x2361c5);}return _0x461e8d[_0x7d6d('0x12')](_0x2361c5)['end']();};}function respondWithResult(_0x4f7265,_0x426dad){_0x426dad=_0x426dad||0xc8;return function(_0x3e28fa){if(_0x3e28fa){return _0x4f7265[_0x7d6d('0x12')](_0x426dad)[_0x7d6d('0x13')](_0x3e28fa);}};}function respondWithFilteredResult(_0x268766,_0x141fb6){return function(_0x316d69){if(_0x316d69){var _0x3fa839=typeof _0x141fb6['offset']===_0x7d6d('0x14')&&typeof _0x141fb6['limit']==='undefined';var _0x58572b=_0x316d69['count'];var _0x53a8e5=_0x3fa839?0x0:_0x141fb6['offset'];var _0xb1a67c=_0x3fa839?_0x316d69[_0x7d6d('0x15')]:_0x141fb6['offset']+_0x141fb6[_0x7d6d('0x16')];var _0x1fb78a;if(_0xb1a67c>=_0x58572b){_0xb1a67c=_0x58572b;_0x1fb78a=0xc8;}else{_0x1fb78a=0xce;}_0x268766[_0x7d6d('0x12')](_0x1fb78a);return _0x268766['set']('Content-Range',_0x53a8e5+'-'+_0xb1a67c+'/'+_0x58572b)['json'](_0x316d69);}return null;};}function patchUpdates(_0x5a6813){return function(_0x18e5c5){try{jsonpatch[_0x7d6d('0x17')](_0x18e5c5,_0x5a6813,!![]);}catch(_0x416c89){return BPromise['reject'](_0x416c89);}return _0x18e5c5[_0x7d6d('0x18')]();};}function saveUpdates(_0xfdc601,_0xad23f1){return function(_0x3711f4){if(_0x3711f4){return _0x3711f4[_0x7d6d('0x19')](_0xfdc601)[_0x7d6d('0x1a')](function(_0x17b911){return _0x17b911;});}return null;};}function removeEntity(_0x1f253d,_0x59d71c){return function(_0x9bd6de){if(_0x9bd6de){return _0x9bd6de[_0x7d6d('0x1b')]()[_0x7d6d('0x1a')](function(){var _0x485291=_0x9bd6de[_0x7d6d('0x1c')]({'plain':!![]});var _0x319ee4=_0x7d6d('0x1d');return db[_0x7d6d('0x1e')][_0x7d6d('0x1b')]({'where':{'type':_0x319ee4,'resourceId':_0x485291['id']}})['then'](function(){return _0x9bd6de;});})[_0x7d6d('0x1a')](function(){_0x1f253d['status'](0xcc)[_0x7d6d('0x1f')]();});}};}function handleEntityNotFound(_0x594591,_0x5407d2){return function(_0x293dd6){if(!_0x293dd6){_0x594591['sendStatus'](0x194);}return _0x293dd6;};}function handleError(_0x2d2dea,_0x56c3d0){_0x56c3d0=_0x56c3d0||0x1f4;return function(_0x6c1462){logger[_0x7d6d('0x20')](_0x6c1462[_0x7d6d('0x21')]);if(_0x6c1462[_0x7d6d('0x22')]){delete _0x6c1462['name'];}_0x2d2dea[_0x7d6d('0x12')](_0x56c3d0)[_0x7d6d('0x23')](_0x6c1462);};}exports[_0x7d6d('0x24')]=function(_0x5e30b7,_0x2fe2a8){var _0x59f965={},_0x4d8db9={},_0x5890b9={'count':0x0,'rows':[]};return db[_0x7d6d('0x25')][_0x7d6d('0x26')]()[_0x7d6d('0x1a')](function(_0x3cf979){_0x4d8db9['model']=_[_0x7d6d('0x27')](_0x3cf979);_0x4d8db9['query']=_[_0x7d6d('0x27')](_0x5e30b7[_0x7d6d('0x28')]);_0x4d8db9[_0x7d6d('0x29')]=_[_0x7d6d('0x2a')](_0x4d8db9[_0x7d6d('0x2b')],_0x4d8db9[_0x7d6d('0x28')]);_0x59f965[_0x7d6d('0x2c')]=_[_0x7d6d('0x2a')](_0x4d8db9[_0x7d6d('0x2b')],qs[_0x7d6d('0x2d')](_0x5e30b7[_0x7d6d('0x28')][_0x7d6d('0x2d')]));_0x59f965['attributes']=_0x59f965[_0x7d6d('0x2c')][_0x7d6d('0x2e')]?_0x59f965['attributes']:_0x4d8db9[_0x7d6d('0x2b')];if(!_0x5e30b7['query'][_0x7d6d('0x2f')](_0x7d6d('0x30'))){_0x59f965[_0x7d6d('0x16')]=qs['limit'](_0x5e30b7[_0x7d6d('0x28')][_0x7d6d('0x16')]);_0x59f965['offset']=qs['offset'](_0x5e30b7[_0x7d6d('0x28')][_0x7d6d('0x31')]);}_0x59f965[_0x7d6d('0x32')]=qs['sort'](_0x5e30b7['query'][_0x7d6d('0x33')]);_0x59f965[_0x7d6d('0x34')]=qs[_0x7d6d('0x29')](_[_0x7d6d('0x35')](_0x5e30b7['query'],_0x4d8db9[_0x7d6d('0x29')]),_0x3cf979);if(_0x5e30b7['query'][_0x7d6d('0x36')]){_0x59f965[_0x7d6d('0x34')]=_['merge'](_0x59f965[_0x7d6d('0x34')],{'$or':_[_0x7d6d('0x37')](_0x59f965['attributes'],function(_0x2c1c4c){var _0x50687b={};_0x50687b[_0x2c1c4c]={'$like':'%'+_0x5e30b7[_0x7d6d('0x28')][_0x7d6d('0x36')]+'%'};return _0x50687b;})});}_0x59f965=_['merge']({},_0x59f965,_0x5e30b7[_0x7d6d('0x38')]);var _0x2fc728={'where':_0x59f965[_0x7d6d('0x34')]};return db[_0x7d6d('0x25')]['count'](_0x2fc728)['then'](function(_0x1c4350){_0x5890b9[_0x7d6d('0x15')]=_0x1c4350;if(_0x5e30b7[_0x7d6d('0x28')]['includeAll']){_0x59f965[_0x7d6d('0x39')]=[{'all':!![]}];}return db[_0x7d6d('0x25')][_0x7d6d('0x3a')](_0x59f965);})['then'](function(_0x352daf){_0x5890b9[_0x7d6d('0x3b')]=_0x352daf;return _0x5890b9;})[_0x7d6d('0x1a')](respondWithFilteredResult(_0x2fe2a8,_0x59f965))[_0x7d6d('0x3c')](handleError(_0x2fe2a8,null));})[_0x7d6d('0x3c')](handleError(_0x2fe2a8,null));};exports[_0x7d6d('0x3d')]=function(_0x4a1925,_0x44dda7){var _0x1a17b5={'raw':![],'where':{'id':_0x4a1925[_0x7d6d('0x3e')]['id']}},_0x23335d={};_0x23335d[_0x7d6d('0x2b')]=_[_0x7d6d('0x27')](db[_0x7d6d('0x25')][_0x7d6d('0x3f')]);_0x23335d['query']=_[_0x7d6d('0x27')](_0x4a1925[_0x7d6d('0x28')]);_0x23335d[_0x7d6d('0x29')]=_[_0x7d6d('0x2a')](_0x23335d['model'],_0x23335d[_0x7d6d('0x28')]);_0x1a17b5[_0x7d6d('0x2c')]=_[_0x7d6d('0x2a')](_0x23335d[_0x7d6d('0x2b')],qs[_0x7d6d('0x2d')](_0x4a1925[_0x7d6d('0x28')][_0x7d6d('0x2d')]));_0x1a17b5[_0x7d6d('0x2c')]=_0x1a17b5[_0x7d6d('0x2c')][_0x7d6d('0x2e')]?_0x1a17b5['attributes']:_0x23335d[_0x7d6d('0x2b')];if(_0x4a1925[_0x7d6d('0x28')][_0x7d6d('0x40')]){_0x1a17b5[_0x7d6d('0x39')]=[{'all':!![]}];}_0x1a17b5=_['merge']({},_0x1a17b5,_0x4a1925['options']);return db['CmCompany'][_0x7d6d('0x41')](_0x1a17b5)[_0x7d6d('0x1a')](handleEntityNotFound(_0x44dda7,null))[_0x7d6d('0x1a')](respondWithResult(_0x44dda7,null))[_0x7d6d('0x3c')](handleError(_0x44dda7,null));};exports[_0x7d6d('0x42')]=function(_0x5ebeb8,_0x4b4617){return db['CmCompany'][_0x7d6d('0x42')](_0x5ebeb8['body'],{})[_0x7d6d('0x1a')](function(_0x1bf5c4){var _0x5a1395=_0x5ebeb8[_0x7d6d('0x43')][_0x7d6d('0x1c')]({'plain':!![]});if(!_0x5a1395)throw new Error(_0x7d6d('0x44'));if(_0x5a1395[_0x7d6d('0x45')]===_0x7d6d('0x43')){var _0x4e8988=_0x1bf5c4[_0x7d6d('0x1c')]({'plain':!![]});var _0x3140fc=_0x7d6d('0x1d');return db['UserProfileSection']['find']({'where':{'name':_0x3140fc,'userProfileId':_0x5a1395['userProfileId']},'raw':!![]})[_0x7d6d('0x1a')](function(_0x143638){if(_0x143638&&_0x143638[_0x7d6d('0x46')]===0x0){return db[_0x7d6d('0x1e')][_0x7d6d('0x42')]({'name':_0x4e8988['name'],'resourceId':_0x4e8988['id'],'type':_0x143638[_0x7d6d('0x22')],'sectionId':_0x143638['id']},{})[_0x7d6d('0x1a')](function(){return _0x1bf5c4;});}else{return _0x1bf5c4;}})[_0x7d6d('0x3c')](function(_0x144492){logger[_0x7d6d('0x20')](_0x7d6d('0x47'),_0x144492);throw _0x144492;});}return _0x1bf5c4;})[_0x7d6d('0x1a')](respondWithResult(_0x4b4617,0xc9))['catch'](handleError(_0x4b4617,null));};exports['update']=function(_0x28eb56,_0x158a92){if(_0x28eb56['body']['id']){delete _0x28eb56[_0x7d6d('0x48')]['id'];}return db[_0x7d6d('0x25')][_0x7d6d('0x41')]({'where':{'id':_0x28eb56[_0x7d6d('0x3e')]['id']}})[_0x7d6d('0x1a')](handleEntityNotFound(_0x158a92,null))[_0x7d6d('0x1a')](saveUpdates(_0x28eb56[_0x7d6d('0x48')],null))[_0x7d6d('0x1a')](respondWithResult(_0x158a92,null))[_0x7d6d('0x3c')](handleError(_0x158a92,null));};exports[_0x7d6d('0x1b')]=function(_0x5c4de1,_0xd50104){return db[_0x7d6d('0x25')][_0x7d6d('0x41')]({'where':{'id':_0x5c4de1[_0x7d6d('0x3e')]['id']}})[_0x7d6d('0x1a')](handleEntityNotFound(_0xd50104,null))[_0x7d6d('0x1a')](removeEntity(_0xd50104,null))['catch'](handleError(_0xd50104,null));};exports[_0x7d6d('0x26')]=function(_0x14e0fc,_0x39b33b){return db[_0x7d6d('0x25')][_0x7d6d('0x26')]()['then'](respondWithResult(_0x39b33b,null))[_0x7d6d('0x3c')](handleError(_0x39b33b,null));};exports[_0x7d6d('0x49')]=function(_0x2424e5,_0x3f9f9e,_0x360fea){return db[_0x7d6d('0x4a')]['find']({'where':{'id':_0x2424e5[_0x7d6d('0x3e')]['id']}})[_0x7d6d('0x1a')](handleEntityNotFound(_0x3f9f9e,null))[_0x7d6d('0x1a')](function(_0x459243){if(_0x459243){return _0x459243[_0x7d6d('0x49')](_0x2424e5['body'][_0x7d6d('0x4b')],_[_0x7d6d('0x4c')](_0x2424e5[_0x7d6d('0x48')],[_0x7d6d('0x4b'),'id'])||{});}})[_0x7d6d('0x1a')](respondWithResult(_0x3f9f9e,null))['catch'](handleError(_0x3f9f9e,null));};exports[_0x7d6d('0x4d')]=function(_0x57e729,_0x4c89c2,_0x20f1d4){var _0x56c8f1={};var _0x3b1ce7={};var _0x169fbb;var _0x11f3b3;return db[_0x7d6d('0x25')]['findOne']({'where':{'id':_0x57e729[_0x7d6d('0x3e')]['id']}})[_0x7d6d('0x1a')](handleEntityNotFound(_0x4c89c2,null))[_0x7d6d('0x1a')](function(_0x54d24c){if(_0x54d24c){_0x169fbb=_0x54d24c;_0x3b1ce7[_0x7d6d('0x2b')]=_[_0x7d6d('0x27')](db['CmContact']['rawAttributes']);_0x3b1ce7[_0x7d6d('0x28')]=_[_0x7d6d('0x27')](_0x57e729[_0x7d6d('0x28')]);_0x3b1ce7['filters']=_['intersection'](_0x3b1ce7[_0x7d6d('0x2b')],_0x3b1ce7['query']);_0x56c8f1[_0x7d6d('0x2c')]=_[_0x7d6d('0x2a')](_0x3b1ce7[_0x7d6d('0x2b')],qs['fields'](_0x57e729[_0x7d6d('0x28')][_0x7d6d('0x2d')]));_0x56c8f1['attributes']=_0x56c8f1[_0x7d6d('0x2c')]['length']?_0x56c8f1[_0x7d6d('0x2c')]:_0x3b1ce7['model'];_0x56c8f1[_0x7d6d('0x32')]=qs['sort'](_0x57e729[_0x7d6d('0x28')][_0x7d6d('0x33')]);_0x56c8f1[_0x7d6d('0x34')]=qs['filters'](_[_0x7d6d('0x35')](_0x57e729[_0x7d6d('0x28')],_0x3b1ce7[_0x7d6d('0x29')]));if(_0x57e729[_0x7d6d('0x28')]['filter']){_0x56c8f1['where']=_[_0x7d6d('0x4e')](_0x56c8f1['where'],{'$or':_[_0x7d6d('0x37')](_0x56c8f1[_0x7d6d('0x2c')],function(_0x10343a){var _0x4356c0={};_0x4356c0[_0x10343a]={'$like':'%'+_0x57e729[_0x7d6d('0x28')]['filter']+'%'};return _0x4356c0;})});}_0x56c8f1=_[_0x7d6d('0x4e')]({},_0x56c8f1,_0x57e729[_0x7d6d('0x38')]);return _0x169fbb[_0x7d6d('0x4d')](_0x56c8f1);}})[_0x7d6d('0x1a')](function(_0x1571ed){if(_0x1571ed){_0x11f3b3=_0x1571ed[_0x7d6d('0x2e')];if(!_0x57e729[_0x7d6d('0x28')][_0x7d6d('0x2f')](_0x7d6d('0x30'))){_0x56c8f1[_0x7d6d('0x16')]=qs[_0x7d6d('0x16')](_0x57e729[_0x7d6d('0x28')][_0x7d6d('0x16')]);_0x56c8f1[_0x7d6d('0x31')]=qs[_0x7d6d('0x31')](_0x57e729[_0x7d6d('0x28')][_0x7d6d('0x31')]);}return _0x169fbb[_0x7d6d('0x4d')](_0x56c8f1);}})['then'](function(_0x22576b){if(_0x22576b){return _0x22576b?{'count':_0x11f3b3,'rows':_0x22576b}:null;}})[_0x7d6d('0x1a')](respondWithResult(_0x4c89c2,null))[_0x7d6d('0x3c')](handleError(_0x4c89c2,null));};
\ No newline at end of file
+var _0x8d5f=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','map','options','includeAll','include','findAll','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','addContacts','CmContact','omit','ids','getContacts','findOne','rawAttributes','order','merge','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','then','get','Companies','UserProfileResource','destroy','error','stack','name','send','index','CmCompany','describe','keys','query','filters'];(function(_0x5ecf23,_0x1f0546){var _0x228453=function(_0x297d42){while(--_0x297d42){_0x5ecf23['push'](_0x5ecf23['shift']());}};_0x228453(++_0x1f0546);}(_0x8d5f,0x181));var _0xf8d5=function(_0x2998db,_0x3424f1){_0x2998db=_0x2998db-0x0;var _0x115fea=_0x8d5f[_0x2998db];return _0x115fea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf8d5('0x0'));var zipdir=require(_0xf8d5('0x1'));var jsonpatch=require(_0xf8d5('0x2'));var rp=require('request-promise');var moment=require(_0xf8d5('0x3'));var BPromise=require(_0xf8d5('0x4'));var Mustache=require(_0xf8d5('0x5'));var util=require('util');var path=require(_0xf8d5('0x6'));var sox=require(_0xf8d5('0x7'));var csv=require(_0xf8d5('0x8'));var ejs=require(_0xf8d5('0x9'));var fs=require('fs');var fs_extra=require(_0xf8d5('0xa'));var _=require(_0xf8d5('0xb'));var squel=require(_0xf8d5('0xc'));var crypto=require(_0xf8d5('0xd'));var jsforce=require(_0xf8d5('0xe'));var deskjs=require(_0xf8d5('0xf'));var toCsv=require(_0xf8d5('0x8'));var querystring=require(_0xf8d5('0x10'));var Papa=require(_0xf8d5('0x11'));var Redis=require(_0xf8d5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf8d5('0x13'));var as=require(_0xf8d5('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xf8d5('0x15'));var config=require(_0xf8d5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf8d5('0x17'))['db'];function respondWithStatusCode(_0x4a7fe4,_0x284ebc){_0x284ebc=_0x284ebc||0xcc;return function(_0x2290d4){if(_0x2290d4){return _0x4a7fe4[_0xf8d5('0x18')](_0x284ebc);}return _0x4a7fe4[_0xf8d5('0x19')](_0x284ebc)['end']();};}function respondWithResult(_0x1c4052,_0x4b286f){_0x4b286f=_0x4b286f||0xc8;return function(_0x277665){if(_0x277665){return _0x1c4052['status'](_0x4b286f)['json'](_0x277665);}};}function respondWithFilteredResult(_0x123385,_0xdd0bf4){return function(_0x21134a){if(_0x21134a){var _0x3ef6d0=typeof _0xdd0bf4[_0xf8d5('0x1a')]===_0xf8d5('0x1b')&&typeof _0xdd0bf4['limit']===_0xf8d5('0x1b');var _0x305b3d=_0x21134a['count'];var _0x47db64=_0x3ef6d0?0x0:_0xdd0bf4[_0xf8d5('0x1a')];var _0x4d6bce=_0x3ef6d0?_0x21134a[_0xf8d5('0x1c')]:_0xdd0bf4[_0xf8d5('0x1a')]+_0xdd0bf4[_0xf8d5('0x1d')];var _0x235115;if(_0x4d6bce>=_0x305b3d){_0x4d6bce=_0x305b3d;_0x235115=0xc8;}else{_0x235115=0xce;}_0x123385[_0xf8d5('0x19')](_0x235115);return _0x123385['set'](_0xf8d5('0x1e'),_0x47db64+'-'+_0x4d6bce+'/'+_0x305b3d)[_0xf8d5('0x1f')](_0x21134a);}return null;};}function patchUpdates(_0x42f6ce){return function(_0x4280c1){try{jsonpatch[_0xf8d5('0x20')](_0x4280c1,_0x42f6ce,!![]);}catch(_0x1f2f8c){return BPromise[_0xf8d5('0x21')](_0x1f2f8c);}return _0x4280c1[_0xf8d5('0x22')]();};}function saveUpdates(_0x3470a8,_0x2cecc2){return function(_0x2d854e){if(_0x2d854e){return _0x2d854e['update'](_0x3470a8)[_0xf8d5('0x23')](function(_0x1b462d){return _0x1b462d;});}return null;};}function removeEntity(_0x106617,_0x355b7d){return function(_0x4ca594){if(_0x4ca594){return _0x4ca594['destroy']()[_0xf8d5('0x23')](function(){var _0x2229d1=_0x4ca594[_0xf8d5('0x24')]({'plain':!![]});var _0x320ebc=_0xf8d5('0x25');return db[_0xf8d5('0x26')][_0xf8d5('0x27')]({'where':{'type':_0x320ebc,'resourceId':_0x2229d1['id']}})[_0xf8d5('0x23')](function(){return _0x4ca594;});})[_0xf8d5('0x23')](function(){_0x106617[_0xf8d5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x552eab,_0x55bbb2){return function(_0x572a70){if(!_0x572a70){_0x552eab[_0xf8d5('0x18')](0x194);}return _0x572a70;};}function handleError(_0x255db7,_0xc68b40){_0xc68b40=_0xc68b40||0x1f4;return function(_0x399836){logger[_0xf8d5('0x28')](_0x399836[_0xf8d5('0x29')]);if(_0x399836['name']){delete _0x399836[_0xf8d5('0x2a')];}_0x255db7[_0xf8d5('0x19')](_0xc68b40)[_0xf8d5('0x2b')](_0x399836);};}exports[_0xf8d5('0x2c')]=function(_0x1f075c,_0xb85b1){var _0x3c334c={},_0x5f47e0={},_0x3ed0d8={'count':0x0,'rows':[]};return db[_0xf8d5('0x2d')][_0xf8d5('0x2e')]()[_0xf8d5('0x23')](function(_0x22a875){_0x5f47e0['model']=_[_0xf8d5('0x2f')](_0x22a875);_0x5f47e0[_0xf8d5('0x30')]=_[_0xf8d5('0x2f')](_0x1f075c[_0xf8d5('0x30')]);_0x5f47e0[_0xf8d5('0x31')]=_[_0xf8d5('0x32')](_0x5f47e0[_0xf8d5('0x33')],_0x5f47e0[_0xf8d5('0x30')]);_0x3c334c[_0xf8d5('0x34')]=_['intersection'](_0x5f47e0[_0xf8d5('0x33')],qs[_0xf8d5('0x35')](_0x1f075c['query'][_0xf8d5('0x35')]));_0x3c334c[_0xf8d5('0x34')]=_0x3c334c[_0xf8d5('0x34')][_0xf8d5('0x36')]?_0x3c334c[_0xf8d5('0x34')]:_0x5f47e0[_0xf8d5('0x33')];if(!_0x1f075c[_0xf8d5('0x30')][_0xf8d5('0x37')](_0xf8d5('0x38'))){_0x3c334c['limit']=qs[_0xf8d5('0x1d')](_0x1f075c[_0xf8d5('0x30')][_0xf8d5('0x1d')]);_0x3c334c[_0xf8d5('0x1a')]=qs[_0xf8d5('0x1a')](_0x1f075c[_0xf8d5('0x30')][_0xf8d5('0x1a')]);}_0x3c334c['order']=qs[_0xf8d5('0x39')](_0x1f075c[_0xf8d5('0x30')][_0xf8d5('0x39')]);_0x3c334c['where']=qs[_0xf8d5('0x31')](_[_0xf8d5('0x3a')](_0x1f075c[_0xf8d5('0x30')],_0x5f47e0[_0xf8d5('0x31')]),_0x22a875);if(_0x1f075c[_0xf8d5('0x30')][_0xf8d5('0x3b')]){_0x3c334c[_0xf8d5('0x3c')]=_['merge'](_0x3c334c[_0xf8d5('0x3c')],{'$or':_[_0xf8d5('0x3d')](_0x3c334c[_0xf8d5('0x34')],function(_0xf8e526){var _0x5cca15={};_0x5cca15[_0xf8e526]={'$like':'%'+_0x1f075c[_0xf8d5('0x30')]['filter']+'%'};return _0x5cca15;})});}_0x3c334c=_['merge']({},_0x3c334c,_0x1f075c[_0xf8d5('0x3e')]);var _0x15f19a={'where':_0x3c334c['where']};return db[_0xf8d5('0x2d')][_0xf8d5('0x1c')](_0x15f19a)[_0xf8d5('0x23')](function(_0x4ff331){_0x3ed0d8[_0xf8d5('0x1c')]=_0x4ff331;if(_0x1f075c[_0xf8d5('0x30')][_0xf8d5('0x3f')]){_0x3c334c[_0xf8d5('0x40')]=[{'all':!![]}];}return db[_0xf8d5('0x2d')][_0xf8d5('0x41')](_0x3c334c);})['then'](function(_0x5d01ab){_0x3ed0d8['rows']=_0x5d01ab;return _0x3ed0d8;})[_0xf8d5('0x23')](respondWithFilteredResult(_0xb85b1,_0x3c334c))['catch'](handleError(_0xb85b1,null));})[_0xf8d5('0x42')](handleError(_0xb85b1,null));};exports['show']=function(_0x525531,_0x9ec6d6){var _0x2e77c4={'raw':![],'where':{'id':_0x525531['params']['id']}},_0x1ec197={};_0x1ec197[_0xf8d5('0x33')]=_[_0xf8d5('0x2f')](db[_0xf8d5('0x2d')]['rawAttributes']);_0x1ec197[_0xf8d5('0x30')]=_[_0xf8d5('0x2f')](_0x525531[_0xf8d5('0x30')]);_0x1ec197[_0xf8d5('0x31')]=_[_0xf8d5('0x32')](_0x1ec197[_0xf8d5('0x33')],_0x1ec197[_0xf8d5('0x30')]);_0x2e77c4[_0xf8d5('0x34')]=_[_0xf8d5('0x32')](_0x1ec197[_0xf8d5('0x33')],qs['fields'](_0x525531[_0xf8d5('0x30')]['fields']));_0x2e77c4[_0xf8d5('0x34')]=_0x2e77c4[_0xf8d5('0x34')][_0xf8d5('0x36')]?_0x2e77c4['attributes']:_0x1ec197[_0xf8d5('0x33')];if(_0x525531[_0xf8d5('0x30')][_0xf8d5('0x3f')]){_0x2e77c4[_0xf8d5('0x40')]=[{'all':!![]}];}_0x2e77c4=_['merge']({},_0x2e77c4,_0x525531[_0xf8d5('0x3e')]);return db[_0xf8d5('0x2d')][_0xf8d5('0x43')](_0x2e77c4)[_0xf8d5('0x23')](handleEntityNotFound(_0x9ec6d6,null))['then'](respondWithResult(_0x9ec6d6,null))[_0xf8d5('0x42')](handleError(_0x9ec6d6,null));};exports[_0xf8d5('0x44')]=function(_0x6e35e9,_0x7464ac){return db[_0xf8d5('0x2d')][_0xf8d5('0x44')](_0x6e35e9[_0xf8d5('0x45')],{})[_0xf8d5('0x23')](function(_0x74356d){var _0x2aad3e=_0x6e35e9[_0xf8d5('0x46')][_0xf8d5('0x24')]({'plain':!![]});if(!_0x2aad3e)throw new Error(_0xf8d5('0x47'));if(_0x2aad3e[_0xf8d5('0x48')]===_0xf8d5('0x46')){var _0x474ef2=_0x74356d[_0xf8d5('0x24')]({'plain':!![]});var _0x1a5bed=_0xf8d5('0x25');return db[_0xf8d5('0x49')]['find']({'where':{'name':_0x1a5bed,'userProfileId':_0x2aad3e['userProfileId']},'raw':!![]})['then'](function(_0x40c394){if(_0x40c394&&_0x40c394[_0xf8d5('0x4a')]===0x0){return db[_0xf8d5('0x26')]['create']({'name':_0x474ef2[_0xf8d5('0x2a')],'resourceId':_0x474ef2['id'],'type':_0x40c394['name'],'sectionId':_0x40c394['id']},{})['then'](function(){return _0x74356d;});}else{return _0x74356d;}})[_0xf8d5('0x42')](function(_0x385ba3){logger[_0xf8d5('0x28')](_0xf8d5('0x4b'),_0x385ba3);throw _0x385ba3;});}return _0x74356d;})[_0xf8d5('0x23')](respondWithResult(_0x7464ac,0xc9))[_0xf8d5('0x42')](handleError(_0x7464ac,null));};exports[_0xf8d5('0x4c')]=function(_0x22e629,_0x33c442){if(_0x22e629[_0xf8d5('0x45')]['id']){delete _0x22e629['body']['id'];}return db[_0xf8d5('0x2d')][_0xf8d5('0x43')]({'where':{'id':_0x22e629[_0xf8d5('0x4d')]['id']}})[_0xf8d5('0x23')](handleEntityNotFound(_0x33c442,null))['then'](saveUpdates(_0x22e629[_0xf8d5('0x45')],null))[_0xf8d5('0x23')](respondWithResult(_0x33c442,null))['catch'](handleError(_0x33c442,null));};exports[_0xf8d5('0x27')]=function(_0x9a27db,_0x3a3bf5){return db['CmCompany'][_0xf8d5('0x43')]({'where':{'id':_0x9a27db[_0xf8d5('0x4d')]['id']}})[_0xf8d5('0x23')](handleEntityNotFound(_0x3a3bf5,null))[_0xf8d5('0x23')](removeEntity(_0x3a3bf5,null))[_0xf8d5('0x42')](handleError(_0x3a3bf5,null));};exports[_0xf8d5('0x2e')]=function(_0x1c1251,_0x2738e7){return db[_0xf8d5('0x2d')][_0xf8d5('0x2e')]()['then'](respondWithResult(_0x2738e7,null))['catch'](handleError(_0x2738e7,null));};exports[_0xf8d5('0x4e')]=function(_0x45d0cd,_0x2791e1,_0x12abde){return db[_0xf8d5('0x4f')][_0xf8d5('0x43')]({'where':{'id':_0x45d0cd[_0xf8d5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2791e1,null))['then'](function(_0xd31b36){if(_0xd31b36){return _0xd31b36[_0xf8d5('0x4e')](_0x45d0cd['body']['ids'],_[_0xf8d5('0x50')](_0x45d0cd[_0xf8d5('0x45')],[_0xf8d5('0x51'),'id'])||{});}})[_0xf8d5('0x23')](respondWithResult(_0x2791e1,null))[_0xf8d5('0x42')](handleError(_0x2791e1,null));};exports[_0xf8d5('0x52')]=function(_0x10e970,_0x4cd799,_0xbb6ac2){var _0x3758d5={};var _0x27ea79={};var _0x514d9f;var _0x9b4d00;return db[_0xf8d5('0x2d')][_0xf8d5('0x53')]({'where':{'id':_0x10e970[_0xf8d5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4cd799,null))[_0xf8d5('0x23')](function(_0x328173){if(_0x328173){_0x514d9f=_0x328173;_0x27ea79[_0xf8d5('0x33')]=_[_0xf8d5('0x2f')](db['CmContact'][_0xf8d5('0x54')]);_0x27ea79['query']=_[_0xf8d5('0x2f')](_0x10e970[_0xf8d5('0x30')]);_0x27ea79['filters']=_[_0xf8d5('0x32')](_0x27ea79[_0xf8d5('0x33')],_0x27ea79[_0xf8d5('0x30')]);_0x3758d5[_0xf8d5('0x34')]=_[_0xf8d5('0x32')](_0x27ea79['model'],qs[_0xf8d5('0x35')](_0x10e970['query']['fields']));_0x3758d5[_0xf8d5('0x34')]=_0x3758d5[_0xf8d5('0x34')][_0xf8d5('0x36')]?_0x3758d5[_0xf8d5('0x34')]:_0x27ea79['model'];_0x3758d5[_0xf8d5('0x55')]=qs[_0xf8d5('0x39')](_0x10e970[_0xf8d5('0x30')][_0xf8d5('0x39')]);_0x3758d5[_0xf8d5('0x3c')]=qs[_0xf8d5('0x31')](_[_0xf8d5('0x3a')](_0x10e970['query'],_0x27ea79[_0xf8d5('0x31')]));if(_0x10e970[_0xf8d5('0x30')][_0xf8d5('0x3b')]){_0x3758d5[_0xf8d5('0x3c')]=_['merge'](_0x3758d5[_0xf8d5('0x3c')],{'$or':_[_0xf8d5('0x3d')](_0x3758d5[_0xf8d5('0x34')],function(_0x2e25dc){var _0x12819b={};_0x12819b[_0x2e25dc]={'$like':'%'+_0x10e970[_0xf8d5('0x30')][_0xf8d5('0x3b')]+'%'};return _0x12819b;})});}_0x3758d5=_[_0xf8d5('0x56')]({},_0x3758d5,_0x10e970[_0xf8d5('0x3e')]);return _0x514d9f[_0xf8d5('0x52')](_0x3758d5);}})[_0xf8d5('0x23')](function(_0x1e58cf){if(_0x1e58cf){_0x9b4d00=_0x1e58cf['length'];if(!_0x10e970[_0xf8d5('0x30')][_0xf8d5('0x37')](_0xf8d5('0x38'))){_0x3758d5[_0xf8d5('0x1d')]=qs[_0xf8d5('0x1d')](_0x10e970[_0xf8d5('0x30')][_0xf8d5('0x1d')]);_0x3758d5[_0xf8d5('0x1a')]=qs[_0xf8d5('0x1a')](_0x10e970[_0xf8d5('0x30')][_0xf8d5('0x1a')]);}return _0x514d9f[_0xf8d5('0x52')](_0x3758d5);}})[_0xf8d5('0x23')](function(_0x47a522){if(_0x47a522){return _0x47a522?{'count':_0x9b4d00,'rows':_0x47a522}:null;}})[_0xf8d5('0x23')](respondWithResult(_0x4cd799,null))[_0xf8d5('0x42')](handleError(_0x4cd799,null));};
\ No newline at end of file
index 4ba6b54..f922cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a91=['bluebird','request-promise','rimraf','../../config/environment','./cmCompany.attributes','exports','CmCompany','cm_companies','lodash','util','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6a91,0x97));var _0x16a9=function(_0x1bbe6c,_0x56d18a){_0x1bbe6c=_0x1bbe6c-0x0;var _0x76ab07=_0x6a91[_0x1bbe6c];return _0x76ab07;};'use strict';var _=require(_0x16a9('0x0'));var util=require(_0x16a9('0x1'));var logger=require(_0x16a9('0x2'))(_0x16a9('0x3'));var moment=require(_0x16a9('0x4'));var BPromise=require(_0x16a9('0x5'));var rp=require(_0x16a9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x16a9('0x7'));var config=require(_0x16a9('0x8'));var attributes=require(_0x16a9('0x9'));module[_0x16a9('0xa')]=function(_0x15a0e3,_0x1ffcf2){return _0x15a0e3['define'](_0x16a9('0xb'),attributes,{'tableName':_0x16a9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d1d=['exports','define','cm_companies','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmCompany.attributes'];(function(_0x3e3d0a,_0x4745dd){var _0x3fc765=function(_0x3b64c5){while(--_0x3b64c5){_0x3e3d0a['push'](_0x3e3d0a['shift']());}};_0x3fc765(++_0x4745dd);}(_0x6d1d,0xed));var _0xd6d1=function(_0x53066f,_0x3e26b8){_0x53066f=_0x53066f-0x0;var _0x31861d=_0x6d1d[_0x53066f];return _0x31861d;};'use strict';var _=require(_0xd6d1('0x0'));var util=require(_0xd6d1('0x1'));var logger=require(_0xd6d1('0x2'))(_0xd6d1('0x3'));var moment=require(_0xd6d1('0x4'));var BPromise=require(_0xd6d1('0x5'));var rp=require(_0xd6d1('0x6'));var fs=require('fs');var path=require(_0xd6d1('0x7'));var rimraf=require('rimraf');var config=require(_0xd6d1('0x8'));var attributes=require(_0xd6d1('0x9'));module[_0xd6d1('0xa')]=function(_0x3382a2,_0x2e9385){return _0x3382a2[_0xd6d1('0xb')]('CmCompany',attributes,{'tableName':_0xd6d1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9a5a429..7e48787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95e2=['rpc','../../config/environment','jayson/promise','client','http','request','CmCompany,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x576d8a,_0x2d7bde){var _0x3dc3ef=function(_0xc76758){while(--_0xc76758){_0x576d8a['push'](_0x576d8a['shift']());}};_0x3dc3ef(++_0x2d7bde);}(_0x95e2,0x1d9));var _0x295e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x95e2[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x295e('0x0'));var util=require(_0x295e('0x1'));var moment=require(_0x295e('0x2'));var BPromise=require(_0x295e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x295e('0x4'));var db=require(_0x295e('0x5'))['db'];var utils=require(_0x295e('0x6'));var logger=require('../../config/logger')(_0x295e('0x7'));var config=require(_0x295e('0x8'));var jayson=require(_0x295e('0x9'));var client=jayson[_0x295e('0xa')][_0x295e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x365e7d,_0x438dce,_0x491ada){return new BPromise(function(_0x35ba0c,_0x23417e){return client[_0x295e('0xc')](_0x365e7d,_0x491ada)['then'](function(_0x1cf42f){logger['info'](_0x295e('0xd'),_0x438dce,_0x295e('0xe'));logger[_0x295e('0xf')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x438dce,_0x295e('0xe'),JSON['stringify'](_0x1cf42f));if(_0x1cf42f[_0x295e('0x10')]){if(_0x1cf42f['error'][_0x295e('0x11')]===0x1f4){logger[_0x295e('0x10')](_0x295e('0xd'),_0x438dce,_0x1cf42f[_0x295e('0x10')][_0x295e('0x12')]);return _0x23417e(_0x1cf42f['error'][_0x295e('0x12')]);}logger[_0x295e('0x10')](_0x295e('0xd'),_0x438dce,_0x1cf42f[_0x295e('0x10')][_0x295e('0x12')]);return _0x35ba0c(_0x1cf42f[_0x295e('0x10')][_0x295e('0x12')]);}else{logger['info'](_0x295e('0xd'),_0x438dce,'request\x20sent');_0x35ba0c(_0x1cf42f[_0x295e('0x13')][_0x295e('0x12')]);}})['catch'](function(_0x5918c2){logger[_0x295e('0x10')](_0x295e('0xd'),_0x438dce,_0x5918c2);_0x23417e(_0x5918c2);});});}
\ No newline at end of file
+var _0x50a0=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','moment','bluebird','randomstring','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x50a0,0x152));var _0x050a=function(_0x25b258,_0x53b733){_0x25b258=_0x25b258-0x0;var _0x5ee10c=_0x50a0[_0x25b258];return _0x5ee10c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x050a('0x0'));var BPromise=require(_0x050a('0x1'));var rs=require(_0x050a('0x2'));var fs=require('fs');var Redis=require(_0x050a('0x3'));var db=require(_0x050a('0x4'))['db'];var utils=require(_0x050a('0x5'));var logger=require(_0x050a('0x6'))('rpc');var config=require(_0x050a('0x7'));var jayson=require(_0x050a('0x8'));var client=jayson['client'][_0x050a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4dd8b2,_0x3c932c,_0x2234f9){return new BPromise(function(_0x4244dd,_0x2abc70){return client['request'](_0x4dd8b2,_0x2234f9)['then'](function(_0x3d1ef6){logger[_0x050a('0xa')](_0x050a('0xb'),_0x3c932c,_0x050a('0xc'));logger[_0x050a('0xd')](_0x050a('0xe'),_0x3c932c,_0x050a('0xc'),JSON[_0x050a('0xf')](_0x3d1ef6));if(_0x3d1ef6[_0x050a('0x10')]){if(_0x3d1ef6[_0x050a('0x10')]['code']===0x1f4){logger[_0x050a('0x10')]('CmCompany,\x20%s,\x20%s',_0x3c932c,_0x3d1ef6[_0x050a('0x10')][_0x050a('0x11')]);return _0x2abc70(_0x3d1ef6['error'][_0x050a('0x11')]);}logger[_0x050a('0x10')]('CmCompany,\x20%s,\x20%s',_0x3c932c,_0x3d1ef6['error'][_0x050a('0x11')]);return _0x4244dd(_0x3d1ef6[_0x050a('0x10')][_0x050a('0x11')]);}else{logger[_0x050a('0xa')]('CmCompany,\x20%s,\x20%s',_0x3c932c,_0x050a('0xc'));_0x4244dd(_0x3d1ef6['result']['message']);}})['catch'](function(_0x45cbd9){logger[_0x050a('0x10')](_0x050a('0xb'),_0x3c932c,_0x45cbd9);_0x2abc70(_0x45cbd9);});});}
\ No newline at end of file
index 5316fbc..066d496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3199=['../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/contacts','getContacts','create','post','addContacts','update','exports','multer','util','path','express','fs-extra'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x3199,0xe2));var _0x9319=function(_0xd2f790,_0x3d2fa6){_0xd2f790=_0xd2f790-0x0;var _0x5753b5=_0x3199[_0xd2f790];return _0x5753b5;};'use strict';var multer=require(_0x9319('0x0'));var util=require(_0x9319('0x1'));var path=require(_0x9319('0x2'));var timeout=require('connect-timeout');var express=require(_0x9319('0x3'));var router=express['Router']();var fs_extra=require(_0x9319('0x4'));var auth=require(_0x9319('0x5'));var interaction=require(_0x9319('0x6'));var config=require('../../config/environment');var controller=require(_0x9319('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x9319('0x8')](_0x9319('0x9'),auth[_0x9319('0xa')](),controller[_0x9319('0xb')]);router[_0x9319('0x8')](_0x9319('0xc'),auth[_0x9319('0xa')](),controller[_0x9319('0xd')]);router[_0x9319('0x8')](_0x9319('0xe'),auth[_0x9319('0xa')](),controller[_0x9319('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9319('0x10')]);router[_0x9319('0x11')](_0x9319('0xe'),auth[_0x9319('0xa')](),controller[_0x9319('0x12')]);router['put'](_0x9319('0xc'),auth[_0x9319('0xa')](),controller[_0x9319('0x13')]);router['delete'](_0x9319('0xc'),auth[_0x9319('0xa')](),controller['destroy']);module[_0x9319('0x14')]=router;
\ No newline at end of file
+var _0x7fd9=['/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../config/environment','./cmCompany.controller','isAuthenticated','index','get','/:id/contacts','post','create','addContacts','put'];(function(_0x484c03,_0x13c1d2){var _0x294127=function(_0x45a834){while(--_0x45a834){_0x484c03['push'](_0x484c03['shift']());}};_0x294127(++_0x13c1d2);}(_0x7fd9,0x91));var _0x97fd=function(_0x2331f8,_0x446a3a){_0x2331f8=_0x2331f8-0x0;var _0x244773=_0x7fd9[_0x2331f8];return _0x244773;};'use strict';var multer=require(_0x97fd('0x0'));var util=require(_0x97fd('0x1'));var path=require(_0x97fd('0x2'));var timeout=require('connect-timeout');var express=require(_0x97fd('0x3'));var router=express[_0x97fd('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x97fd('0x5'));var controller=require(_0x97fd('0x6'));router['get']('/',auth[_0x97fd('0x7')](),controller[_0x97fd('0x8')]);router[_0x97fd('0x9')]('/describe',auth[_0x97fd('0x7')](),controller['describe']);router['get']('/:id',auth[_0x97fd('0x7')](),controller['show']);router[_0x97fd('0x9')](_0x97fd('0xa'),auth['isAuthenticated'](),controller['getContacts']);router[_0x97fd('0xb')]('/',auth[_0x97fd('0x7')](),controller[_0x97fd('0xc')]);router[_0x97fd('0xb')](_0x97fd('0xa'),auth[_0x97fd('0x7')](),controller[_0x97fd('0xd')]);router[_0x97fd('0xe')](_0x97fd('0xf'),auth['isAuthenticated'](),controller[_0x97fd('0x10')]);router[_0x97fd('0x11')](_0x97fd('0xf'),auth[_0x97fd('0x7')](),controller[_0x97fd('0x12')]);module[_0x97fd('0x13')]=router;
\ No newline at end of file
index 415e20f..b5be7a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef2e=['lodash','sequelize','STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW'];(function(_0x402993,_0x556145){var _0x38f78a=function(_0x575c2a){while(--_0x575c2a){_0x402993['push'](_0x402993['shift']());}};_0x38f78a(++_0x556145);}(_0xef2e,0xf8));var _0xeef2=function(_0x4e82ff,_0x3cbf4b){_0x4e82ff=_0x4e82ff-0x0;var _0x495205=_0xef2e[_0x4e82ff];return _0x495205;};'use strict';var _=require(_0xeef2('0x0'));var Sequelize=require(_0xeef2('0x1'));module['exports']={'firstName':{'type':Sequelize[_0xeef2('0x2')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xeef2('0x2')]},'postalCode':{'type':Sequelize[_0xeef2('0x2')]},'city':{'type':Sequelize[_0xeef2('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xeef2('0x2')]},'description':{'type':Sequelize[_0xeef2('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xeef2('0x2')]},'fax':{'type':Sequelize[_0xeef2('0x2')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xeef2('0x2')]},'facebook':{'type':Sequelize[_0xeef2('0x2')]},'fb_data':{'type':Sequelize[_0xeef2('0x2')]},'twitter':{'type':Sequelize[_0xeef2('0x2')]},'skype':{'type':Sequelize[_0xeef2('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xeef2('0x2')]},'wechat':{'type':Sequelize[_0xeef2('0x2')]},'telegram':{'type':Sequelize[_0xeef2('0x2')]},'UserId':{'type':Sequelize[_0xeef2('0x4')]},'AdditionalPhones':{'type':Sequelize[_0xeef2('0x2')]},'priority':{'type':Sequelize[_0xeef2('0x4')](0x2)[_0xeef2('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xeef2('0x6')],'defaultValue':Sequelize[_0xeef2('0x7')]},'dialTimezone':{'type':Sequelize[_0xeef2('0x2')]},'utcOffset':{'type':Sequelize[_0xeef2('0x4')]}};
\ No newline at end of file
+var _0xc488=['exports','STRING','INTEGER','UNSIGNED','NOW','lodash','sequelize'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0xc488,0xb4));var _0x8c48=function(_0x53311f,_0x95e6ce){_0x53311f=_0x53311f-0x0;var _0x20b41c=_0xc488[_0x53311f];return _0x20b41c;};'use strict';var _=require(_0x8c48('0x0'));var Sequelize=require(_0x8c48('0x1'));module[_0x8c48('0x2')]={'firstName':{'type':Sequelize[_0x8c48('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x8c48('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x8c48('0x3')]},'city':{'type':Sequelize[_0x8c48('0x3')]},'country':{'type':Sequelize[_0x8c48('0x3')]},'dateOfBirth':{'type':Sequelize[_0x8c48('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x8c48('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x8c48('0x3')]},'email':{'type':Sequelize[_0x8c48('0x3')]},'url':{'type':Sequelize[_0x8c48('0x3')]},'facebook':{'type':Sequelize[_0x8c48('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0x8c48('0x3')]},'skype':{'type':Sequelize[_0x8c48('0x3')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x8c48('0x3')]},'line':{'type':Sequelize[_0x8c48('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x8c48('0x3')]},'UserId':{'type':Sequelize[_0x8c48('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x8c48('0x3')]},'priority':{'type':Sequelize[_0x8c48('0x4')](0x2)[_0x8c48('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x8c48('0x6')]},'dialTimezone':{'type':Sequelize[_0x8c48('0x3')]},'utcOffset':{'type':Sequelize[_0x8c48('0x4')]}};
\ No newline at end of file
index 0c31078..0c140e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x513047,_0x2199c5){var _0x15b779=function(_0x412fd5){while(--_0x412fd5){_0x513047['push'](_0x513047['shift']());}};_0x15b779(++_0x2199c5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];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 respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
+var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x2ef44b,_0x553359){var _0x2405b9=function(_0x278290){while(--_0x278290){_0x2ef44b['push'](_0x2ef44b['shift']());}};_0x2405b9(++_0x553359);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];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 respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
index 9df392b..e92ce00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5be3=['exports','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5e1ed0,_0x415f59){var _0x24478e=function(_0x303bd4){while(--_0x303bd4){_0x5e1ed0['push'](_0x5e1ed0['shift']());}};_0x24478e(++_0x415f59);}(_0x5be3,0x119));var _0x35be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5be3[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x35be('0x0')](0x0);var events={'afterCreate':_0x35be('0x1'),'afterUpdate':_0x35be('0x2'),'afterDestroy':_0x35be('0x3')};function emitEvent(_0x3364ff){return function(_0x373a1c,_0x2e3341,_0xdb4cc0){CmContactEvents[_0x35be('0x4')](_0x3364ff+':'+_0x373a1c['id'],_0x373a1c);CmContactEvents[_0x35be('0x4')](_0x3364ff,_0x373a1c);_0xdb4cc0(null);};}for(var e in events){if(events[_0x35be('0x5')](e)){var event=events[e];CmContact[_0x35be('0x6')](e,emitEvent(event));}}module[_0x35be('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0xf96e=['remove','emit','hasOwnProperty','exports','events','CmContact','save'];(function(_0x59bcb1,_0x5a4b6c){var _0x4a737f=function(_0x546a49){while(--_0x546a49){_0x59bcb1['push'](_0x59bcb1['shift']());}};_0x4a737f(++_0x5a4b6c);}(_0xf96e,0xc1));var _0xef96=function(_0x3e6194,_0xc6fb97){_0x3e6194=_0x3e6194-0x0;var _0x54ba66=_0xf96e[_0x3e6194];return _0x54ba66;};'use strict';var EventEmitter=require(_0xef96('0x0'));var CmContact=require('../../mysqldb')['db'][_0xef96('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xef96('0x2'),'afterUpdate':'update','afterDestroy':_0xef96('0x3')};function emitEvent(_0x15b420){return function(_0x56517c,_0x592d21,_0x2d84fc){CmContactEvents[_0xef96('0x4')](_0x15b420+':'+_0x56517c['id'],_0x56517c);CmContactEvents[_0xef96('0x4')](_0x15b420,_0x56517c);_0x2d84fc(null);};}for(var e in events){if(events[_0xef96('0x5')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xef96('0x6')]=CmContactEvents;
\ No newline at end of file
index 4c3027f..6d773a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a13=['priority','callbackUniqueid','catch','cmContact,\x20afterCreate\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','Lists','length','get','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','always','CmList','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','mobile','email','utf8mb4','utf8mb4_unicode_ci','models','error','cmContact','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','utcOffset','add','minutes','format','ret','CmHopper','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId'];(function(_0x387d91,_0x50172e){var _0x171737=function(_0x2c0efc){while(--_0x2c0efc){_0x387d91['push'](_0x387d91['shift']());}};_0x171737(++_0x50172e);}(_0x1a13,0x6d));var _0x31a1=function(_0x3e9ce0,_0x10fb9e){_0x3e9ce0=_0x3e9ce0-0x0;var _0x48e86c=_0x1a13[_0x3e9ce0];return _0x48e86c;};'use strict';var _=require('lodash');var util=require(_0x31a1('0x0'));var logger=require(_0x31a1('0x1'))('api');var moment=require(_0x31a1('0x2'));var BPromise=require(_0x31a1('0x3'));var rp=require(_0x31a1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31a1('0x5'));var config=require('../../config/environment');var shared=require(_0x31a1('0x6'));var attributes=require(_0x31a1('0x7'));module[_0x31a1('0x8')]=function(_0x2bcacc,_0x5b4b12){return _0x2bcacc[_0x31a1('0x9')](_0x31a1('0xa'),attributes,{'tableName':_0x31a1('0xb'),'paranoid':!![],'indexes':[{'name':_0x31a1('0xc'),'fields':['phone']},{'name':_0x31a1('0xd'),'fields':['firstName','lastName','phone',_0x31a1('0xe'),'fax',_0x31a1('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x31a1('0x10'),'collate':_0x31a1('0x11'),'hooks':{'afterCreate':function(_0x3f941e,_0x234cec,_0xb83a78){var _0x492d71=_0x2bcacc[_0x31a1('0x12')];var _0x28b080=_0x3f941e['get']({'plain':!![]});function _0x4ff7e3(){return function(_0x563b89){logger[_0x31a1('0x13')](_0x31a1('0x14'),'afterCreate',util[_0x31a1('0x15')](_0x563b89,{'showHidden':![],'depth':null}));};}function _0x12544a(_0x16ff5a,_0x4df3e7){var _0x3238fa=_0x4df3e7[_0x31a1('0x16')]?_0x4df3e7[_0x31a1('0x16')]:moment()['format'](_0x31a1('0x17'));return new BPromise(function(_0x221ea5,_0x2a1b63){if(_[_0x31a1('0x18')](_0x4df3e7[_0x31a1('0x19')])){_0x221ea5({'ret':_0x3238fa});}else{_0x492d71[_0x31a1('0x1a')][_0x31a1('0x1b')]({'where':{'id':_0x16ff5a['id']}})[_0x31a1('0x1c')](function(_0x52387d){if(!_['isNil'](_0x52387d)){var _0x5d6da1=_0x52387d[_0x31a1('0x19')];if(!_[_0x31a1('0x18')](_0x5d6da1)){var _0x16127c=shared[_0x31a1('0x1d')];var _0xbad175=_0x16127c[_0x5d6da1];var _0x4527f6=_0x16127c[_0x4df3e7[_0x31a1('0x19')]];if(!_[_0x31a1('0x18')](_0xbad175)&&!_['isNil'](_0x4527f6)){var _0x1f0fa1=_0xbad175[_0x31a1('0x1e')]-_0x4527f6['utcOffset'];_0x3238fa=_0x4df3e7[_0x31a1('0x16')]?_0x4df3e7[_0x31a1('0x16')]:moment();var _0x22839a=moment(_0x3238fa)[_0x31a1('0x1f')](_0x1f0fa1,_0x31a1('0x20'));_0x221ea5({'ret':_0x22839a[_0x31a1('0x21')](_0x31a1('0x17'))});}else _0x221ea5({'ret':_0x3238fa});}else _0x221ea5({'ret':_0x3238fa});}else{_0x221ea5({'ret':_0x3238fa});}});}});return 0xa;}var _0x36a8a8=function(_0x54aae1){return new BPromise(function(_0x427a5b,_0x3d17a0){_0x12544a(_0x54aae1,_0x28b080)['then'](function(_0x2cba87){_0x28b080[_0x31a1('0x16')]=_0x2cba87[_0x31a1('0x22')];_0x492d71[_0x31a1('0x23')]['findOne']({'where':{'phone':_0x28b080[_0x31a1('0xc')],'VoiceQueueId':_0x54aae1['id']}})[_0x31a1('0x1c')](function(_0xb3b2bf){if(!_[_0x31a1('0x18')](_0xb3b2bf)){throw new Error('cmContact,\x20afterCreate\x20'+_0x28b080[_0x31a1('0xc')]+_0x31a1('0x24')+_0x54aae1['id']);}return _0x492d71[_0x31a1('0x23')][_0x31a1('0x25')]({'phone':_0x28b080['phone'],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'priority':_0x28b080['priority']?_0x28b080[_0x31a1('0x27')]:0x2,'scheduledat':_0x28b080['scheduledat']?_0x28b080[_0x31a1('0x16')]:moment()[_0x31a1('0x21')](_0x31a1('0x17')),'callback':_0x28b080[_0x31a1('0x28')]?!![]:![],'callbackuniqueid':_0x28b080[_0x31a1('0x28')]?_0x28b080[_0x31a1('0x28')]:undefined,'callbackat':_0x28b080[_0x31a1('0x28')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x54aae1['id']});})[_0x31a1('0x29')](function(_0xe1865){_0x3d17a0(_0xe1865);});});});};var _0x36f341=function(_0x2d0283){return new BPromise(function(_0x487501,_0x8ce6aa){_0x12544a(_0x2d0283,_0x28b080)[_0x31a1('0x1c')](function(_0x246ce9){_0x28b080[_0x31a1('0x16')]=_0x246ce9[_0x31a1('0x22')];_0x492d71[_0x31a1('0x23')][_0x31a1('0x1b')]({'where':{'phone':_0x28b080[_0x31a1('0xc')],'VoiceQueueId':_0x2d0283['id']}})[_0x31a1('0x1c')](function(_0x5d8cfd){if(!_[_0x31a1('0x18')](_0x5d8cfd)){throw new Error(_0x31a1('0x2a')+_0x28b080[_0x31a1('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x2d0283['id']);}return _0x492d71['CmHopperFinal'][_0x31a1('0x1b')]({'where':{'calleridnum':_0x28b080[_0x31a1('0xc')],'VoiceQueueId':_0x2d0283['id']}});})[_0x31a1('0x1c')](function(_0x1303fe){if(!_['isNil'](_0x1303fe)){throw new Error(_0x31a1('0x2b')+_0x28b080[_0x31a1('0xc')]+_0x31a1('0x2c')+_0x2d0283['id']);}return _0x492d71[_0x31a1('0x23')]['create']({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'priority':_0x28b080[_0x31a1('0x27')]?_0x28b080[_0x31a1('0x27')]:0x2,'scheduledat':_0x28b080[_0x31a1('0x16')]?_0x28b080[_0x31a1('0x16')]:moment()[_0x31a1('0x21')](_0x31a1('0x17')),'callback':_0x28b080[_0x31a1('0x28')]?!![]:![],'callbackuniqueid':_0x28b080['callbackUniqueid']?_0x28b080['callbackUniqueid']:undefined,'callbackat':_0x28b080[_0x31a1('0x28')]?moment()[_0x31a1('0x21')](_0x31a1('0x17')):undefined,'VoiceQueueId':_0x2d0283['id']});})[_0x31a1('0x29')](function(_0x4d98bb){_0x8ce6aa(_0x4d98bb);});});});};function _0x408aaa(){return function(_0x1bd380){logger[_0x31a1('0x13')]('cmContact',_0x31a1('0x2d'),util[_0x31a1('0x15')](_0x1bd380,{'showHidden':![],'depth':null}));};}function _0x3bcd80(_0x4ca3fc,_0x551f97){var _0x7f11f7=_0x551f97['scheduledat']?_0x551f97[_0x31a1('0x16')]:moment()[_0x31a1('0x21')](_0x31a1('0x17'));return new BPromise(function(_0x36d415,_0x3885b6){if(_[_0x31a1('0x18')](_0x551f97['dialTimezone'])){_0x36d415({'ret':_0x7f11f7});}else{_0x492d71['Campaign'][_0x31a1('0x1b')]({'where':{'id':_0x4ca3fc['id']}})[_0x31a1('0x1c')](function(_0x4dd0ce){if(!_[_0x31a1('0x18')](_0x4dd0ce)){var _0x3dafe2=_0x4dd0ce[_0x31a1('0x19')];if(!_[_0x31a1('0x18')](_0x3dafe2)){var _0x5a6126=shared['timezones'];var _0x4cabd6=_0x5a6126[_0x3dafe2];var _0x4ed4de=_0x5a6126[_0x551f97[_0x31a1('0x19')]];if(!_[_0x31a1('0x18')](_0x4cabd6)&&!_['isNil'](_0x4ed4de)){var _0x4d479c=_0x4cabd6[_0x31a1('0x1e')]-_0x4ed4de['utcOffset'];_0x7f11f7=_0x551f97[_0x31a1('0x16')]?_0x551f97[_0x31a1('0x16')]:moment();var _0x5f2d58=moment(_0x7f11f7)[_0x31a1('0x1f')](_0x4d479c,_0x31a1('0x20'));_0x36d415({'ret':_0x5f2d58['format'](_0x31a1('0x17'))});}else _0x36d415({'ret':_0x7f11f7});}else _0x36d415({'ret':_0x7f11f7});}else{_0x36d415({'ret':_0x7f11f7});}});}});return 0xa;}var _0x3c530f=function(_0x140849){return new BPromise(function(_0x5f1288,_0x218903){_0x3bcd80(_0x140849,_0x28b080)[_0x31a1('0x1c')](function(_0x703cee){_0x28b080['scheduledat']=_0x703cee[_0x31a1('0x22')];_0x492d71['CmHopper'][_0x31a1('0x1b')]({'where':{'phone':_0x28b080['phone'],'CampaignId':_0x140849['id']}})[_0x31a1('0x1c')](function(_0x343217){if(!_[_0x31a1('0x18')](_0x343217)){throw new Error(_0x31a1('0x2a')+_0x28b080[_0x31a1('0xc')]+_0x31a1('0x2e')+_0x140849['id']);}return _0x492d71['CmHopper'][_0x31a1('0x25')]({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'priority':_0x28b080[_0x31a1('0x27')]?_0x28b080[_0x31a1('0x27')]:0x2,'scheduledat':_0x28b080[_0x31a1('0x16')]?_0x28b080[_0x31a1('0x16')]:moment()[_0x31a1('0x21')](_0x31a1('0x17')),'callback':_0x28b080[_0x31a1('0x28')]?!![]:![],'callbackuniqueid':_0x28b080['callbackUniqueid']?_0x28b080['callbackUniqueid']:undefined,'callbackat':_0x28b080[_0x31a1('0x28')]?moment()[_0x31a1('0x21')](_0x31a1('0x17')):undefined,'CampaignId':_0x140849['id']});})[_0x31a1('0x29')](function(_0x1beab3){_0x218903(_0x1beab3);});});});};var _0x2ee1c2=function(_0x3a9f97){return new BPromise(function(_0x4fa3c1,_0x56037b){_0x3bcd80(_0x3a9f97,_0x28b080)[_0x31a1('0x1c')](function(_0x5b2987){_0x28b080[_0x31a1('0x16')]=_0x5b2987[_0x31a1('0x22')];_0x492d71[_0x31a1('0x23')]['findOne']({'where':{'phone':_0x28b080['phone'],'CampaignId':_0x3a9f97['id']}})[_0x31a1('0x1c')](function(_0x4a3d5b){if(!_['isNil'](_0x4a3d5b)){throw new Error('cmContact,\x20afterCreate\x20'+_0x28b080[_0x31a1('0xc')]+_0x31a1('0x2f')+_0x3a9f97['id']);}return _0x492d71[_0x31a1('0x30')]['findOne']({'where':{'calleridnum':_0x28b080[_0x31a1('0xc')],'CampaignId':_0x3a9f97['id']}});})[_0x31a1('0x1c')](function(_0x1edb1d){if(!_[_0x31a1('0x18')](_0x1edb1d)){throw new Error(_0x31a1('0x2b')+_0x28b080[_0x31a1('0xc')]+_0x31a1('0x31')+_0x3a9f97['id']);}return _0x492d71['CmHopper'][_0x31a1('0x25')]({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'priority':_0x28b080[_0x31a1('0x27')]?_0x28b080[_0x31a1('0x27')]:0x2,'scheduledat':_0x28b080[_0x31a1('0x16')]?_0x28b080[_0x31a1('0x16')]:moment()['format'](_0x31a1('0x17')),'callback':_0x28b080[_0x31a1('0x28')]?!![]:![],'callbackuniqueid':_0x28b080[_0x31a1('0x28')]?_0x28b080[_0x31a1('0x28')]:undefined,'callbackat':_0x28b080[_0x31a1('0x28')]?moment()['format'](_0x31a1('0x17')):undefined,'CampaignId':_0x3a9f97['id']});})[_0x31a1('0x29')](function(_0x210089){_0x56037b(_0x210089);});});});};if(_0x28b080[_0x31a1('0x26')]){_0x492d71[_0x31a1('0x1a')][_0x31a1('0x32')]({'where':{'type':_0x31a1('0x33')},'attributes':['id',_0x31a1('0x34'),_0x31a1('0x19')],'include':[{'model':_0x492d71['CmList'],'as':_0x31a1('0x35'),'where':{'id':_0x28b080[_0x31a1('0x26')]}}]})[_0x31a1('0x1c')](function(_0x4a61e5){if(_0x4a61e5){var _0x3fc4e9=[];for(var _0x3ec6f6=0x0,_0xb6f588;_0x3ec6f6<_0x4a61e5[_0x31a1('0x36')];_0x3ec6f6+=0x1){_0xb6f588=_0x4a61e5[_0x3ec6f6][_0x31a1('0x37')]({'plain':!![]});switch(_0xb6f588[_0x31a1('0x34')]){case'always':_0x36f341(_0xb6f588)[_0x31a1('0x29')](_0x4ff7e3());break;case _0x31a1('0x38'):_0x36a8a8(_0xb6f588)['catch'](_0x4ff7e3());break;default:_0x3bcd80(_0xb6f588,_0x28b080)[_0x31a1('0x1c')](function(_0x1d4ba6){_0x28b080[_0x31a1('0x16')]=_0x1d4ba6['ret'];_0x492d71[_0x31a1('0x23')][_0x31a1('0x25')]({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'scheduledat':_0x28b080[_0x31a1('0x16')]?_0x28b080[_0x31a1('0x16')]:moment()[_0x31a1('0x21')](_0x31a1('0x17')),'priority':_0x28b080[_0x31a1('0x27')]?_0x28b080[_0x31a1('0x27')]:0x2,'callback':_0x28b080['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x28b080[_0x31a1('0x28')]?_0x28b080[_0x31a1('0x28')]:undefined,'callbackat':_0x28b080[_0x31a1('0x28')]?moment()['format'](_0x31a1('0x17')):undefined,'VoiceQueueId':_0xb6f588['id']})[_0x31a1('0x29')](_0x4ff7e3());});}}}})[_0x31a1('0x1c')](function(){return _0x492d71[_0x31a1('0x1a')][_0x31a1('0x32')]({'where':{'type':_0x31a1('0x33')},'attributes':['id'],'include':[{'model':_0x492d71['CmList'],'as':_0x31a1('0x39'),'where':{'id':_0x28b080['ListId']}}]})['then'](function(_0x5aabfb){if(_0x5aabfb){var _0x2ed55c=[];for(var _0x3168b4=0x0,_0x19a436;_0x3168b4<_0x5aabfb['length'];_0x3168b4+=0x1){_0x19a436=_0x5aabfb[_0x3168b4][_0x31a1('0x37')]({'plain':!![]});_0x492d71[_0x31a1('0x3a')][_0x31a1('0x25')]({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'VoiceQueueId':_0x19a436['id']})[_0x31a1('0x29')](function(_0x10db90){logger[_0x31a1('0x13')](_0x31a1('0x3b'),_0x31a1('0x2d'),_0x10db90[_0x31a1('0x3c')]);});}}});})['then'](function(){return _0x492d71[_0x31a1('0x3d')][_0x31a1('0x32')]({'attributes':['id',_0x31a1('0x34'),_0x31a1('0x19')],'include':[{'model':_0x492d71['CmList'],'as':_0x31a1('0x35'),'where':{'id':_0x28b080[_0x31a1('0x26')]}}]})[_0x31a1('0x1c')](function(_0x7f81e4){if(_0x7f81e4){var _0x2c912b=[];for(var _0x55bb60=0x0,_0x1048a0;_0x55bb60<_0x7f81e4[_0x31a1('0x36')];_0x55bb60+=0x1){_0x1048a0=_0x7f81e4[_0x55bb60][_0x31a1('0x37')]({'plain':!![]});switch(_0x1048a0[_0x31a1('0x34')]){case _0x31a1('0x3e'):_0x2ee1c2(_0x1048a0)['catch'](_0x408aaa());break;case'onlyIfOpen':_0x3c530f(_0x1048a0)[_0x31a1('0x29')](_0x408aaa());break;default:_0x492d71[_0x31a1('0x23')][_0x31a1('0x25')]({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'scheduledat':_0x28b080[_0x31a1('0x16')]?_0x28b080['scheduledat']:moment()[_0x31a1('0x21')](_0x31a1('0x17')),'priority':_0x28b080[_0x31a1('0x27')]?_0x28b080[_0x31a1('0x27')]:0x2,'callback':_0x28b080[_0x31a1('0x28')]?!![]:![],'callbackuniqueid':_0x28b080[_0x31a1('0x28')]?_0x28b080['callbackUniqueid']:undefined,'callbackat':_0x28b080[_0x31a1('0x28')]?moment()[_0x31a1('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x1048a0['id']})['catch'](_0x408aaa());}}}});})[_0x31a1('0x1c')](function(){return _0x492d71[_0x31a1('0x3d')][_0x31a1('0x32')]({'attributes':['id'],'include':[{'model':_0x492d71[_0x31a1('0x3f')],'as':_0x31a1('0x39'),'where':{'id':_0x28b080[_0x31a1('0x26')]}}]})[_0x31a1('0x1c')](function(_0x3ddc4e){if(_0x3ddc4e){var _0x1b42c5=[];for(var _0x1a230b=0x0,_0x877ab2;_0x1a230b<_0x3ddc4e[_0x31a1('0x36')];_0x1a230b+=0x1){_0x877ab2=_0x3ddc4e[_0x1a230b]['get']({'plain':!![]});_0x492d71[_0x31a1('0x3a')]['create']({'phone':_0x28b080[_0x31a1('0xc')],'ContactId':_0x28b080['id'],'ListId':_0x28b080[_0x31a1('0x26')],'CampaignId':_0x877ab2['id']})[_0x31a1('0x29')](function(_0x582e05){logger[_0x31a1('0x13')](_0x31a1('0x3b'),_0x31a1('0x2d'),_0x582e05[_0x31a1('0x3c')]);});}}});})[_0x31a1('0x1c')](function(){_0xb83a78();})[_0x31a1('0x29')](function(_0x551476){logger[_0x31a1('0x13')](_0x31a1('0x3b'),_0x31a1('0x2d'),_0x551476['message']);_0xb83a78(_0x551476);});}else{_0xb83a78(new Error(_0x31a1('0x40')));}},'afterDestroy':function(_0x20498f,_0x1c508f,_0x1fbad8){var _0x5e0130=_0x2bcacc[_0x31a1('0x12')];var _0x46b309=_0x20498f[_0x31a1('0x37')]({'plain':!![]});return _0x5e0130[_0x31a1('0x23')][_0x31a1('0x32')]({'raw':!![],'where':{'ListId':_0x46b309[_0x31a1('0x26')],'ContactId':_0x46b309['id']}})[_0x31a1('0x1c')](function(_0x54f8ea){if(!_[_0x31a1('0x41')](_0x54f8ea)){var _0x26bab0=[];for(var _0x109218=0x0;_0x109218<_0x54f8ea[_0x31a1('0x36')];_0x109218+=0x1){var _0x58f020=_0x5e0130['CmHopper'][_0x31a1('0x42')]({'where':{'ListId':_0x54f8ea[_0x109218][_0x31a1('0x26')],'ContactId':_0x54f8ea[_0x109218][_0x31a1('0x43')],'VoiceQueueId':_0x54f8ea[_0x109218][_0x31a1('0x44')],'CampaignId':_0x54f8ea[_0x109218]['CampaignId']}});_0x26bab0[_0x31a1('0x45')](_0x58f020);}return BPromise[_0x31a1('0x46')](_0x26bab0);}})[_0x31a1('0x1c')](function(_0x538b86){logger[_0x31a1('0x47')](_0x31a1('0x48'),util['inspect'](_0x538b86,{'showHidden':![],'depth':null}));_0x1fbad8();})[_0x31a1('0x29')](function(_0x5e3906){logger[_0x31a1('0x13')](_0x31a1('0x49'),util[_0x31a1('0x15')](_0x5e3906,{'showHidden':![],'depth':null}));_0x1fbad8(_0x5e3906);});}}});};
\ No newline at end of file
+var _0xbc16=['../../config/environment','../../config/environment/shared','./cmContact.attributes','define','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','models','get','error','cmContact','afterCreate','inspect','scheduledat','format','isNil','dialTimezone','VoiceQueue','findOne','then','utcOffset','add','minutes','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','CmHopperFinal','cmContact,\x20afterCreate,\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\x20hopperFinal\x20Campaign\x20','outbound','dialCheckDuplicateType','Lists','length','always','findAll','CmList','BlackLists','message','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','destroy','ContactId','CampaignId','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','api','bluebird','request-promise','path','rimraf'];(function(_0x160cef,_0x283f32){var _0x4acded=function(_0x47a3f){while(--_0x47a3f){_0x160cef['push'](_0x160cef['shift']());}};_0x4acded(++_0x283f32);}(_0xbc16,0xc9));var _0x6bc1=function(_0x189e09,_0x34db31){_0x189e09=_0x189e09-0x0;var _0x6ac9f6=_0xbc16[_0x189e09];return _0x6ac9f6;};'use strict';var _=require(_0x6bc1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6bc1('0x1'));var moment=require('moment');var BPromise=require(_0x6bc1('0x2'));var rp=require(_0x6bc1('0x3'));var fs=require('fs');var path=require(_0x6bc1('0x4'));var rimraf=require(_0x6bc1('0x5'));var config=require(_0x6bc1('0x6'));var shared=require(_0x6bc1('0x7'));var attributes=require(_0x6bc1('0x8'));module['exports']=function(_0x235af6,_0x3d6e7c){return _0x235af6[_0x6bc1('0x9')]('CmContact',attributes,{'tableName':_0x6bc1('0xa'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0x6bc1('0xb')]},{'name':_0x6bc1('0xc'),'fields':[_0x6bc1('0xd'),_0x6bc1('0xe'),_0x6bc1('0xb'),_0x6bc1('0xf'),'fax',_0x6bc1('0x10')],'type':_0x6bc1('0x11')}],'timestamps':!![],'charset':_0x6bc1('0x12'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4b989e,_0x30367d,_0x2b52d2){var _0x4dea7b=_0x235af6[_0x6bc1('0x13')];var _0x439b74=_0x4b989e[_0x6bc1('0x14')]({'plain':!![]});function _0x10ef92(){return function(_0x3478b7){logger[_0x6bc1('0x15')](_0x6bc1('0x16'),_0x6bc1('0x17'),util[_0x6bc1('0x18')](_0x3478b7,{'showHidden':![],'depth':null}));};}function _0xf2d58f(_0xcf46ea,_0x58233b){var _0x2b9a96=_0x58233b[_0x6bc1('0x19')]?_0x58233b['scheduledat']:moment()[_0x6bc1('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x8c2a02,_0x5ac6d3){if(_[_0x6bc1('0x1b')](_0x58233b[_0x6bc1('0x1c')])){_0x8c2a02({'ret':_0x2b9a96});}else{_0x4dea7b[_0x6bc1('0x1d')][_0x6bc1('0x1e')]({'where':{'id':_0xcf46ea['id']}})[_0x6bc1('0x1f')](function(_0x592010){if(!_[_0x6bc1('0x1b')](_0x592010)){var _0x3dd1f7=_0x592010[_0x6bc1('0x1c')];if(!_[_0x6bc1('0x1b')](_0x3dd1f7)){var _0xd1cd9a=shared['timezones'];var _0x3bf8c5=_0xd1cd9a[_0x3dd1f7];var _0x42e684=_0xd1cd9a[_0x58233b[_0x6bc1('0x1c')]];if(!_[_0x6bc1('0x1b')](_0x3bf8c5)&&!_['isNil'](_0x42e684)){var _0x2c17b3=_0x3bf8c5['utcOffset']-_0x42e684[_0x6bc1('0x20')];_0x2b9a96=_0x58233b[_0x6bc1('0x19')]?_0x58233b[_0x6bc1('0x19')]:moment();var _0x5669bd=moment(_0x2b9a96)[_0x6bc1('0x21')](_0x2c17b3,_0x6bc1('0x22'));_0x8c2a02({'ret':_0x5669bd[_0x6bc1('0x1a')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x8c2a02({'ret':_0x2b9a96});}else _0x8c2a02({'ret':_0x2b9a96});}else{_0x8c2a02({'ret':_0x2b9a96});}});}});return 0xa;}var _0x29c560=function(_0x33ff68){return new BPromise(function(_0xb5031f,_0xd1074b){_0xf2d58f(_0x33ff68,_0x439b74)['then'](function(_0x56e608){_0x439b74[_0x6bc1('0x19')]=_0x56e608[_0x6bc1('0x23')];_0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x1e')]({'where':{'phone':_0x439b74['phone'],'VoiceQueueId':_0x33ff68['id']}})[_0x6bc1('0x1f')](function(_0x50a319){if(!_[_0x6bc1('0x1b')](_0x50a319)){throw new Error(_0x6bc1('0x25')+_0x439b74[_0x6bc1('0xb')]+_0x6bc1('0x26')+_0x33ff68['id']);}return _0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x27')]({'phone':_0x439b74['phone'],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'priority':_0x439b74[_0x6bc1('0x29')]?_0x439b74['priority']:0x2,'scheduledat':_0x439b74['scheduledat']?_0x439b74[_0x6bc1('0x19')]:moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')),'callback':_0x439b74['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x439b74[_0x6bc1('0x2b')]?_0x439b74[_0x6bc1('0x2b')]:undefined,'callbackat':_0x439b74[_0x6bc1('0x2b')]?moment()['format'](_0x6bc1('0x2a')):undefined,'VoiceQueueId':_0x33ff68['id']});})[_0x6bc1('0x2c')](function(_0xb51a9b){_0xd1074b(_0xb51a9b);});});});};var _0x282998=function(_0x37a315){return new BPromise(function(_0x23ce0f,_0x4bb899){_0xf2d58f(_0x37a315,_0x439b74)[_0x6bc1('0x1f')](function(_0x5964e5){_0x439b74[_0x6bc1('0x19')]=_0x5964e5[_0x6bc1('0x23')];_0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x1e')]({'where':{'phone':_0x439b74[_0x6bc1('0xb')],'VoiceQueueId':_0x37a315['id']}})[_0x6bc1('0x1f')](function(_0x27d108){if(!_[_0x6bc1('0x1b')](_0x27d108)){throw new Error(_0x6bc1('0x25')+_0x439b74[_0x6bc1('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x37a315['id']);}return _0x4dea7b[_0x6bc1('0x2d')][_0x6bc1('0x1e')]({'where':{'calleridnum':_0x439b74[_0x6bc1('0xb')],'VoiceQueueId':_0x37a315['id']}});})[_0x6bc1('0x1f')](function(_0x28ac3f){if(!_[_0x6bc1('0x1b')](_0x28ac3f)){throw new Error(_0x6bc1('0x2e')+_0x439b74[_0x6bc1('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x37a315['id']);}return _0x4dea7b['CmHopper'][_0x6bc1('0x27')]({'phone':_0x439b74[_0x6bc1('0xb')],'ContactId':_0x439b74['id'],'ListId':_0x439b74['ListId'],'priority':_0x439b74['priority']?_0x439b74['priority']:0x2,'scheduledat':_0x439b74[_0x6bc1('0x19')]?_0x439b74['scheduledat']:moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')),'callback':_0x439b74['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x439b74[_0x6bc1('0x2b')]?_0x439b74[_0x6bc1('0x2b')]:undefined,'callbackat':_0x439b74['callbackUniqueid']?moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')):undefined,'VoiceQueueId':_0x37a315['id']});})[_0x6bc1('0x2c')](function(_0xc21c4a){_0x4bb899(_0xc21c4a);});});});};function _0x32ce30(){return function(_0x298481){logger[_0x6bc1('0x15')](_0x6bc1('0x16'),_0x6bc1('0x17'),util[_0x6bc1('0x18')](_0x298481,{'showHidden':![],'depth':null}));};}function _0x40cbc1(_0x46e2be,_0x369bc1){var _0xe1e412=_0x369bc1[_0x6bc1('0x19')]?_0x369bc1['scheduledat']:moment()[_0x6bc1('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x5a86d3,_0x555ba1){if(_[_0x6bc1('0x1b')](_0x369bc1['dialTimezone'])){_0x5a86d3({'ret':_0xe1e412});}else{_0x4dea7b[_0x6bc1('0x2f')][_0x6bc1('0x1e')]({'where':{'id':_0x46e2be['id']}})[_0x6bc1('0x1f')](function(_0x58e965){if(!_[_0x6bc1('0x1b')](_0x58e965)){var _0x1e70f2=_0x58e965[_0x6bc1('0x1c')];if(!_[_0x6bc1('0x1b')](_0x1e70f2)){var _0x23ac25=shared[_0x6bc1('0x30')];var _0x3e8c35=_0x23ac25[_0x1e70f2];var _0x3f9268=_0x23ac25[_0x369bc1[_0x6bc1('0x1c')]];if(!_['isNil'](_0x3e8c35)&&!_[_0x6bc1('0x1b')](_0x3f9268)){var _0x5b683d=_0x3e8c35[_0x6bc1('0x20')]-_0x3f9268[_0x6bc1('0x20')];_0xe1e412=_0x369bc1['scheduledat']?_0x369bc1['scheduledat']:moment();var _0x43fe2e=moment(_0xe1e412)['add'](_0x5b683d,_0x6bc1('0x22'));_0x5a86d3({'ret':_0x43fe2e['format'](_0x6bc1('0x2a'))});}else _0x5a86d3({'ret':_0xe1e412});}else _0x5a86d3({'ret':_0xe1e412});}else{_0x5a86d3({'ret':_0xe1e412});}});}});return 0xa;}var _0x2904de=function(_0x142f80){return new BPromise(function(_0x32e95e,_0x15dc26){_0x40cbc1(_0x142f80,_0x439b74)['then'](function(_0xbae3d1){_0x439b74[_0x6bc1('0x19')]=_0xbae3d1['ret'];_0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x1e')]({'where':{'phone':_0x439b74['phone'],'CampaignId':_0x142f80['id']}})[_0x6bc1('0x1f')](function(_0x1aa153){if(!_[_0x6bc1('0x1b')](_0x1aa153)){throw new Error('cmContact,\x20afterCreate\x20'+_0x439b74[_0x6bc1('0xb')]+_0x6bc1('0x31')+_0x142f80['id']);}return _0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x27')]({'phone':_0x439b74[_0x6bc1('0xb')],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'priority':_0x439b74[_0x6bc1('0x29')]?_0x439b74[_0x6bc1('0x29')]:0x2,'scheduledat':_0x439b74[_0x6bc1('0x19')]?_0x439b74[_0x6bc1('0x19')]:moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')),'callback':_0x439b74[_0x6bc1('0x2b')]?!![]:![],'callbackuniqueid':_0x439b74[_0x6bc1('0x2b')]?_0x439b74[_0x6bc1('0x2b')]:undefined,'callbackat':_0x439b74[_0x6bc1('0x2b')]?moment()[_0x6bc1('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x142f80['id']});})['catch'](function(_0x4c403a){_0x15dc26(_0x4c403a);});});});};var _0x3da982=function(_0x5b6d0f){return new BPromise(function(_0x457c1e,_0x2e1f97){_0x40cbc1(_0x5b6d0f,_0x439b74)[_0x6bc1('0x1f')](function(_0x596c2e){_0x439b74[_0x6bc1('0x19')]=_0x596c2e[_0x6bc1('0x23')];_0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x1e')]({'where':{'phone':_0x439b74[_0x6bc1('0xb')],'CampaignId':_0x5b6d0f['id']}})['then'](function(_0x4049a6){if(!_[_0x6bc1('0x1b')](_0x4049a6)){throw new Error('cmContact,\x20afterCreate\x20'+_0x439b74[_0x6bc1('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x5b6d0f['id']);}return _0x4dea7b[_0x6bc1('0x2d')][_0x6bc1('0x1e')]({'where':{'calleridnum':_0x439b74['phone'],'CampaignId':_0x5b6d0f['id']}});})['then'](function(_0x5c5d43){if(!_[_0x6bc1('0x1b')](_0x5c5d43)){throw new Error(_0x6bc1('0x2e')+_0x439b74[_0x6bc1('0xb')]+_0x6bc1('0x32')+_0x5b6d0f['id']);}return _0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x27')]({'phone':_0x439b74[_0x6bc1('0xb')],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'priority':_0x439b74['priority']?_0x439b74[_0x6bc1('0x29')]:0x2,'scheduledat':_0x439b74['scheduledat']?_0x439b74['scheduledat']:moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')),'callback':_0x439b74[_0x6bc1('0x2b')]?!![]:![],'callbackuniqueid':_0x439b74['callbackUniqueid']?_0x439b74[_0x6bc1('0x2b')]:undefined,'callbackat':_0x439b74[_0x6bc1('0x2b')]?moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')):undefined,'CampaignId':_0x5b6d0f['id']});})['catch'](function(_0x57d18a){_0x2e1f97(_0x57d18a);});});});};if(_0x439b74['ListId']){_0x4dea7b[_0x6bc1('0x1d')]['findAll']({'where':{'type':_0x6bc1('0x33')},'attributes':['id',_0x6bc1('0x34'),_0x6bc1('0x1c')],'include':[{'model':_0x4dea7b['CmList'],'as':_0x6bc1('0x35'),'where':{'id':_0x439b74[_0x6bc1('0x28')]}}]})[_0x6bc1('0x1f')](function(_0x46593f){if(_0x46593f){var _0x5276c6=[];for(var _0x1063a1=0x0,_0x4e328d;_0x1063a1<_0x46593f[_0x6bc1('0x36')];_0x1063a1+=0x1){_0x4e328d=_0x46593f[_0x1063a1]['get']({'plain':!![]});switch(_0x4e328d[_0x6bc1('0x34')]){case _0x6bc1('0x37'):_0x282998(_0x4e328d)[_0x6bc1('0x2c')](_0x10ef92());break;case'onlyIfOpen':_0x29c560(_0x4e328d)['catch'](_0x10ef92());break;default:_0x40cbc1(_0x4e328d,_0x439b74)['then'](function(_0xe644b3){_0x439b74[_0x6bc1('0x19')]=_0xe644b3[_0x6bc1('0x23')];_0x4dea7b[_0x6bc1('0x24')]['create']({'phone':_0x439b74[_0x6bc1('0xb')],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'scheduledat':_0x439b74[_0x6bc1('0x19')]?_0x439b74[_0x6bc1('0x19')]:moment()[_0x6bc1('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x439b74[_0x6bc1('0x29')]?_0x439b74[_0x6bc1('0x29')]:0x2,'callback':_0x439b74['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x439b74[_0x6bc1('0x2b')]?_0x439b74[_0x6bc1('0x2b')]:undefined,'callbackat':_0x439b74[_0x6bc1('0x2b')]?moment()['format'](_0x6bc1('0x2a')):undefined,'VoiceQueueId':_0x4e328d['id']})[_0x6bc1('0x2c')](_0x10ef92());});}}}})[_0x6bc1('0x1f')](function(){return _0x4dea7b['VoiceQueue'][_0x6bc1('0x38')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x4dea7b[_0x6bc1('0x39')],'as':_0x6bc1('0x3a'),'where':{'id':_0x439b74[_0x6bc1('0x28')]}}]})[_0x6bc1('0x1f')](function(_0x31e56f){if(_0x31e56f){var _0x37c3d=[];for(var _0x2383b2=0x0,_0x1e6696;_0x2383b2<_0x31e56f['length'];_0x2383b2+=0x1){_0x1e6696=_0x31e56f[_0x2383b2]['get']({'plain':!![]});_0x4dea7b['CmHopperBlack'][_0x6bc1('0x27')]({'phone':_0x439b74[_0x6bc1('0xb')],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'VoiceQueueId':_0x1e6696['id']})[_0x6bc1('0x2c')](function(_0x24ec58){logger['error']('cmContact,\x20%s,\x20%s','afterCreate',_0x24ec58[_0x6bc1('0x3b')]);});}}});})['then'](function(){return _0x4dea7b[_0x6bc1('0x2f')]['findAll']({'attributes':['id',_0x6bc1('0x34'),'dialTimezone'],'include':[{'model':_0x4dea7b[_0x6bc1('0x39')],'as':_0x6bc1('0x35'),'where':{'id':_0x439b74[_0x6bc1('0x28')]}}]})[_0x6bc1('0x1f')](function(_0x362807){if(_0x362807){var _0x29e91e=[];for(var _0x1ed10b=0x0,_0x45a082;_0x1ed10b<_0x362807[_0x6bc1('0x36')];_0x1ed10b+=0x1){_0x45a082=_0x362807[_0x1ed10b][_0x6bc1('0x14')]({'plain':!![]});switch(_0x45a082[_0x6bc1('0x34')]){case _0x6bc1('0x37'):_0x3da982(_0x45a082)[_0x6bc1('0x2c')](_0x32ce30());break;case'onlyIfOpen':_0x2904de(_0x45a082)[_0x6bc1('0x2c')](_0x32ce30());break;default:_0x4dea7b[_0x6bc1('0x24')][_0x6bc1('0x27')]({'phone':_0x439b74[_0x6bc1('0xb')],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'scheduledat':_0x439b74[_0x6bc1('0x19')]?_0x439b74[_0x6bc1('0x19')]:moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')),'priority':_0x439b74[_0x6bc1('0x29')]?_0x439b74[_0x6bc1('0x29')]:0x2,'callback':_0x439b74[_0x6bc1('0x2b')]?!![]:![],'callbackuniqueid':_0x439b74[_0x6bc1('0x2b')]?_0x439b74['callbackUniqueid']:undefined,'callbackat':_0x439b74['callbackUniqueid']?moment()[_0x6bc1('0x1a')](_0x6bc1('0x2a')):undefined,'CampaignId':_0x45a082['id']})[_0x6bc1('0x2c')](_0x32ce30());}}}});})['then'](function(){return _0x4dea7b[_0x6bc1('0x2f')]['findAll']({'attributes':['id'],'include':[{'model':_0x4dea7b[_0x6bc1('0x39')],'as':_0x6bc1('0x3a'),'where':{'id':_0x439b74['ListId']}}]})[_0x6bc1('0x1f')](function(_0x4fa413){if(_0x4fa413){var _0x1b1324=[];for(var _0x2dd77b=0x0,_0x15a08e;_0x2dd77b<_0x4fa413['length'];_0x2dd77b+=0x1){_0x15a08e=_0x4fa413[_0x2dd77b]['get']({'plain':!![]});_0x4dea7b['CmHopperBlack'][_0x6bc1('0x27')]({'phone':_0x439b74['phone'],'ContactId':_0x439b74['id'],'ListId':_0x439b74[_0x6bc1('0x28')],'CampaignId':_0x15a08e['id']})[_0x6bc1('0x2c')](function(_0xd24e9b){logger[_0x6bc1('0x15')]('cmContact,\x20%s,\x20%s',_0x6bc1('0x17'),_0xd24e9b[_0x6bc1('0x3b')]);});}}});})[_0x6bc1('0x1f')](function(){_0x2b52d2();})[_0x6bc1('0x2c')](function(_0x119ece){logger[_0x6bc1('0x15')](_0x6bc1('0x3c'),_0x6bc1('0x17'),_0x119ece['message']);_0x2b52d2(_0x119ece);});}else{_0x2b52d2(new Error(_0x6bc1('0x3d')));}},'afterDestroy':function(_0x118837,_0x244f73,_0x55a5f0){var _0x33ac87=_0x235af6[_0x6bc1('0x13')];var _0x49a45d=_0x118837['get']({'plain':!![]});return _0x33ac87[_0x6bc1('0x24')][_0x6bc1('0x38')]({'raw':!![],'where':{'ListId':_0x49a45d[_0x6bc1('0x28')],'ContactId':_0x49a45d['id']}})[_0x6bc1('0x1f')](function(_0x4d735d){if(!_[_0x6bc1('0x3e')](_0x4d735d)){var _0x1ccd7e=[];for(var _0x313730=0x0;_0x313730<_0x4d735d['length'];_0x313730+=0x1){var _0x2cfed6=_0x33ac87[_0x6bc1('0x24')][_0x6bc1('0x3f')]({'where':{'ListId':_0x4d735d[_0x313730][_0x6bc1('0x28')],'ContactId':_0x4d735d[_0x313730][_0x6bc1('0x40')],'VoiceQueueId':_0x4d735d[_0x313730]['VoiceQueueId'],'CampaignId':_0x4d735d[_0x313730][_0x6bc1('0x41')]}});_0x1ccd7e['push'](_0x2cfed6);}return BPromise[_0x6bc1('0x42')](_0x1ccd7e);}})[_0x6bc1('0x1f')](function(_0x20b471){logger['info'](_0x6bc1('0x43'),util[_0x6bc1('0x18')](_0x20b471,{'showHidden':![],'depth':null}));_0x55a5f0();})['catch'](function(_0x1161ad){logger['error'](_0x6bc1('0x44'),util['inspect'](_0x1161ad,{'showHidden':![],'depth':null}));_0x55a5f0(_0x1161ad);});}}});};
\ No newline at end of file
index 1705669..4e78210 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(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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 _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(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
index 92b55e1..9cfab28 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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 e02f35b..c27f6c4 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(_0xcdef61,_0x88ebb4){var _0x3dee40=function(_0x73f29f){while(--_0x73f29f){_0xcdef61['push'](_0xcdef61['shift']());}};_0x3dee40(++_0x88ebb4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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(_0x174db2,_0x256e07){var _0x23fafb=function(_0x4cf280){while(--_0x4cf280){_0x174db2['push'](_0x174db2['shift']());}};_0x23fafb(++_0x256e07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 7856e3e..3c8e911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b9=['INTEGER','STRING','sequelize','exports'];(function(_0x3cf5a3,_0x5a4492){var _0x39ba2d=function(_0x3ed989){while(--_0x3ed989){_0x3cf5a3['push'](_0x3cf5a3['shift']());}};_0x39ba2d(++_0x5a4492);}(_0xa3b9,0x112));var _0x9a3b=function(_0x31eadf,_0x504e95){_0x31eadf=_0x31eadf-0x0;var _0x1ed651=_0xa3b9[_0x31eadf];return _0x1ed651;};'use strict';var Sequelize=require(_0x9a3b('0x0'));module[_0x9a3b('0x1')]={'CmContactId':{'type':Sequelize[_0x9a3b('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0x9a3b('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x9a3b('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x9a3b('0x3')],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0x9a3b('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x9a3b('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0xee53=['INTEGER','STRING','PHONE'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0xee53,0xa8));var _0x3ee5=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xee53[_0x199572];return _0x13cfa3;};'use strict';var Sequelize=require('sequelize');module['exports']={'CmContactId':{'type':Sequelize[_0x3ee5('0x0')],'primaryKey':!![]},'item':{'type':Sequelize[_0x3ee5('0x1')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x3ee5('0x0')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':_0x3ee5('0x2')},'OrderBy':{'type':Sequelize[_0x3ee5('0x0')],'defaultValue':null},'description':{'type':Sequelize[_0x3ee5('0x1')],'defaultValue':null}};
\ No newline at end of file
index 2bfee8e..01b18da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d13=['get','CmContactHasItems','UserProfileResource','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','keys','intersection','catch','body','user','role','find','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','then','destroy'];(function(_0x1ae4a9,_0x4c0ed9){var _0x54d0b0=function(_0x4fff20){while(--_0x4fff20){_0x1ae4a9['push'](_0x1ae4a9['shift']());}};_0x54d0b0(++_0x4c0ed9);}(_0x8d13,0x134));var _0x38d1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8d13[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x38d1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x38d1('0x1'));var jsonpatch=require(_0x38d1('0x2'));var rp=require(_0x38d1('0x3'));var moment=require(_0x38d1('0x4'));var BPromise=require(_0x38d1('0x5'));var Mustache=require(_0x38d1('0x6'));var util=require(_0x38d1('0x7'));var path=require('path');var sox=require(_0x38d1('0x8'));var csv=require(_0x38d1('0x9'));var ejs=require(_0x38d1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38d1('0xb'));var squel=require(_0x38d1('0xc'));var crypto=require(_0x38d1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x38d1('0xe'));var toCsv=require('to-csv');var querystring=require(_0x38d1('0xf'));var Papa=require(_0x38d1('0x10'));var Redis=require(_0x38d1('0x11'));var authService=require(_0x38d1('0x12'));var qs=require(_0x38d1('0x13'));var as=require(_0x38d1('0x14'));var hardwareService=require(_0x38d1('0x15'));var logger=require(_0x38d1('0x16'))('api');var utils=require(_0x38d1('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x38d1('0x18'))['db'];function respondWithStatusCode(_0x2625bd,_0x3e9e91){_0x3e9e91=_0x3e9e91||0xcc;return function(_0x4bc9f0){if(_0x4bc9f0){return _0x2625bd[_0x38d1('0x19')](_0x3e9e91);}return _0x2625bd[_0x38d1('0x1a')](_0x3e9e91)[_0x38d1('0x1b')]();};}function respondWithResult(_0x2f1b84,_0x341152){_0x341152=_0x341152||0xc8;return function(_0x16f802){if(_0x16f802){return _0x2f1b84[_0x38d1('0x1a')](_0x341152)['json'](_0x16f802);}};}function respondWithFilteredResult(_0x599175,_0x547b75){return function(_0x7af266){if(_0x7af266){var _0x7384bd=typeof _0x547b75['offset']===_0x38d1('0x1c')&&typeof _0x547b75['limit']===_0x38d1('0x1c');var _0x408814=_0x7af266[_0x38d1('0x1d')];var _0x35e18c=_0x7384bd?0x0:_0x547b75['offset'];var _0x227d07=_0x7384bd?_0x7af266[_0x38d1('0x1d')]:_0x547b75[_0x38d1('0x1e')]+_0x547b75[_0x38d1('0x1f')];var _0x555020;if(_0x227d07>=_0x408814){_0x227d07=_0x408814;_0x555020=0xc8;}else{_0x555020=0xce;}_0x599175[_0x38d1('0x1a')](_0x555020);return _0x599175[_0x38d1('0x20')](_0x38d1('0x21'),_0x35e18c+'-'+_0x227d07+'/'+_0x408814)[_0x38d1('0x22')](_0x7af266);}return null;};}function patchUpdates(_0x2ecc8b){return function(_0x498671){try{jsonpatch[_0x38d1('0x23')](_0x498671,_0x2ecc8b,!![]);}catch(_0x2ab07c){return BPromise[_0x38d1('0x24')](_0x2ab07c);}return _0x498671[_0x38d1('0x25')]();};}function saveUpdates(_0x1501f6,_0x216770){return function(_0x2d5671){if(_0x2d5671){return _0x2d5671['update'](_0x1501f6)[_0x38d1('0x26')](function(_0x4b4016){return _0x4b4016;});}return null;};}function removeEntity(_0x9d17e2,_0x3e5c85){return function(_0x8b2385){if(_0x8b2385){return _0x8b2385[_0x38d1('0x27')]()['then'](function(){var _0x39ea6a=_0x8b2385[_0x38d1('0x28')]({'plain':!![]});var _0xc078df=_0x38d1('0x29');return db[_0x38d1('0x2a')][_0x38d1('0x27')]({'where':{'type':_0xc078df,'resourceId':_0x39ea6a['id']}})[_0x38d1('0x26')](function(){return _0x8b2385;});})[_0x38d1('0x26')](function(){_0x9d17e2['status'](0xcc)[_0x38d1('0x1b')]();});}};}function handleEntityNotFound(_0x1a9419,_0x1d5c11){return function(_0x5f5bbd){if(!_0x5f5bbd){_0x1a9419[_0x38d1('0x19')](0x194);}return _0x5f5bbd;};}function handleError(_0x4c0f7e,_0x57b391){_0x57b391=_0x57b391||0x1f4;return function(_0x2878d1){logger[_0x38d1('0x2b')](_0x2878d1[_0x38d1('0x2c')]);if(_0x2878d1[_0x38d1('0x2d')]){delete _0x2878d1['name'];}_0x4c0f7e['status'](_0x57b391)[_0x38d1('0x2e')](_0x2878d1);};}exports[_0x38d1('0x2f')]=function(_0x269981,_0x48acf6){var _0x384c8e={},_0x57cfb3={},_0x50f702={'count':0x0,'rows':[]};var _0x7d35fb=_[_0x38d1('0x30')](db[_0x38d1('0x31')][_0x38d1('0x32')],function(_0x3695e1){return{'name':_0x3695e1[_0x38d1('0x33')],'type':_0x3695e1[_0x38d1('0x34')][_0x38d1('0x35')]};});_0x57cfb3[_0x38d1('0x36')]=_['map'](_0x7d35fb,_0x38d1('0x2d'));_0x57cfb3[_0x38d1('0x37')]=_['keys'](_0x269981[_0x38d1('0x37')]);_0x57cfb3[_0x38d1('0x38')]=_['intersection'](_0x57cfb3['model'],_0x57cfb3['query']);_0x384c8e[_0x38d1('0x39')]=_['intersection'](_0x57cfb3[_0x38d1('0x36')],qs['fields'](_0x269981[_0x38d1('0x37')][_0x38d1('0x3a')]));_0x384c8e['attributes']=_0x384c8e['attributes'][_0x38d1('0x3b')]?_0x384c8e[_0x38d1('0x39')]:_0x57cfb3[_0x38d1('0x36')];if(!_0x269981['query'][_0x38d1('0x3c')](_0x38d1('0x3d'))){_0x384c8e['limit']=qs[_0x38d1('0x1f')](_0x269981[_0x38d1('0x37')][_0x38d1('0x1f')]);_0x384c8e['offset']=qs[_0x38d1('0x1e')](_0x269981['query']['offset']);}_0x384c8e[_0x38d1('0x3e')]=qs[_0x38d1('0x3f')](_0x269981[_0x38d1('0x37')]['sort']);_0x384c8e[_0x38d1('0x40')]=qs[_0x38d1('0x38')](_[_0x38d1('0x41')](_0x269981[_0x38d1('0x37')],_0x57cfb3['filters']),_0x7d35fb);if(_0x269981[_0x38d1('0x37')][_0x38d1('0x42')]){_0x384c8e[_0x38d1('0x40')]=_[_0x38d1('0x43')](_0x384c8e[_0x38d1('0x40')],{'$or':_[_0x38d1('0x30')](_0x7d35fb,function(_0x1f119c){if(_0x1f119c[_0x38d1('0x34')]!=='VIRTUAL'){var _0x2dcf96={};_0x2dcf96[_0x1f119c[_0x38d1('0x2d')]]={'$like':'%'+_0x269981['query']['filter']+'%'};return _0x2dcf96;}})});}_0x384c8e=_[_0x38d1('0x43')]({},_0x384c8e,_0x269981[_0x38d1('0x44')]);var _0x5ae084={'where':_0x384c8e[_0x38d1('0x40')]};return db[_0x38d1('0x31')]['count'](_0x5ae084)[_0x38d1('0x26')](function(_0x810710){_0x50f702['count']=_0x810710;if(_0x269981['query'][_0x38d1('0x45')]){_0x384c8e[_0x38d1('0x46')]=[{'all':!![]}];}return db[_0x38d1('0x31')][_0x38d1('0x47')](_0x384c8e);})['then'](function(_0x3162b3){_0x50f702[_0x38d1('0x48')]=_0x3162b3;return _0x50f702;})[_0x38d1('0x26')](respondWithFilteredResult(_0x48acf6,_0x384c8e))['catch'](handleError(_0x48acf6,null));};exports[_0x38d1('0x49')]=function(_0x428cac,_0x1a9884){var _0x195d74={'raw':!![],'where':{'id':_0x428cac['params']['id']}},_0x4acc94={};_0x4acc94[_0x38d1('0x36')]=_[_0x38d1('0x4a')](db[_0x38d1('0x31')]['rawAttributes']);_0x4acc94['query']=_[_0x38d1('0x4a')](_0x428cac[_0x38d1('0x37')]);_0x4acc94[_0x38d1('0x38')]=_[_0x38d1('0x4b')](_0x4acc94[_0x38d1('0x36')],_0x4acc94[_0x38d1('0x37')]);_0x195d74[_0x38d1('0x39')]=_[_0x38d1('0x4b')](_0x4acc94[_0x38d1('0x36')],qs[_0x38d1('0x3a')](_0x428cac[_0x38d1('0x37')][_0x38d1('0x3a')]));_0x195d74[_0x38d1('0x39')]=_0x195d74[_0x38d1('0x39')]['length']?_0x195d74[_0x38d1('0x39')]:_0x4acc94['model'];if(_0x428cac[_0x38d1('0x37')][_0x38d1('0x45')]){_0x195d74['include']=[{'all':!![]}];}_0x195d74=_[_0x38d1('0x43')]({},_0x195d74,_0x428cac[_0x38d1('0x44')]);return db[_0x38d1('0x31')]['find'](_0x195d74)['then'](handleEntityNotFound(_0x1a9884,null))['then'](respondWithResult(_0x1a9884,null))[_0x38d1('0x4c')](handleError(_0x1a9884,null));};exports['create']=function(_0x2b9ebf,_0x30ca2b){return db['CmContactHasItem']['create'](_0x2b9ebf[_0x38d1('0x4d')],{})[_0x38d1('0x26')](function(_0x516f1a){var _0x242034=_0x2b9ebf[_0x38d1('0x4e')][_0x38d1('0x28')]({'plain':!![]});if(!_0x242034)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x242034[_0x38d1('0x4f')]===_0x38d1('0x4e')){var _0x52dbbe=_0x516f1a[_0x38d1('0x28')]({'plain':!![]});var _0x2c69c2=_0x38d1('0x29');return db['UserProfileSection'][_0x38d1('0x50')]({'where':{'name':_0x2c69c2,'userProfileId':_0x242034[_0x38d1('0x51')]},'raw':!![]})[_0x38d1('0x26')](function(_0x44ee0b){if(_0x44ee0b&&_0x44ee0b[_0x38d1('0x52')]===0x0){return db[_0x38d1('0x2a')][_0x38d1('0x53')]({'name':_0x52dbbe[_0x38d1('0x2d')],'resourceId':_0x52dbbe['id'],'type':_0x44ee0b[_0x38d1('0x2d')],'sectionId':_0x44ee0b['id']},{})[_0x38d1('0x26')](function(){return _0x516f1a;});}else{return _0x516f1a;}})[_0x38d1('0x4c')](function(_0x3af06b){logger[_0x38d1('0x2b')](_0x38d1('0x54'),_0x3af06b);throw _0x3af06b;});}return _0x516f1a;})['then'](respondWithResult(_0x30ca2b,0xc9))[_0x38d1('0x4c')](handleError(_0x30ca2b,null));};exports[_0x38d1('0x55')]=function(_0x3b7710,_0x1ded91){if(_0x3b7710['body']['id']){delete _0x3b7710[_0x38d1('0x4d')]['id'];}return db[_0x38d1('0x31')]['find']({'where':{'id':_0x3b7710['params']['id']}})[_0x38d1('0x26')](handleEntityNotFound(_0x1ded91,null))['then'](saveUpdates(_0x3b7710[_0x38d1('0x4d')],null))[_0x38d1('0x26')](respondWithResult(_0x1ded91,null))[_0x38d1('0x4c')](handleError(_0x1ded91,null));};exports[_0x38d1('0x27')]=function(_0x1dd1e2,_0x5c192c){return db[_0x38d1('0x31')][_0x38d1('0x50')]({'where':{'id':_0x1dd1e2[_0x38d1('0x56')]['id']}})[_0x38d1('0x26')](handleEntityNotFound(_0x5c192c,null))[_0x38d1('0x26')](removeEntity(_0x5c192c,null))[_0x38d1('0x4c')](handleError(_0x5c192c,null));};
\ No newline at end of file
+var _0x80cf=['destroy','then','get','CmContactHasItems','UserProfileResource','end','sendStatus','stack','name','index','map','rawAttributes','fieldName','type','key','filters','query','intersection','model','fields','attributes','length','order','sort','where','pick','filter','merge','VIRTUAL','options','CmContactHasItem','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update'];(function(_0x48ce21,_0x7de1f0){var _0x3b3ded=function(_0x2c0a89){while(--_0x2c0a89){_0x48ce21['push'](_0x48ce21['shift']());}};_0x3b3ded(++_0x7de1f0);}(_0x80cf,0xd3));var _0xf80c=function(_0x247b2c,_0x3a0449){_0x247b2c=_0x247b2c-0x0;var _0x1a2641=_0x80cf[_0x247b2c];return _0x1a2641;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf80c('0x0'));var zipdir=require(_0xf80c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf80c('0x2'));var BPromise=require(_0xf80c('0x3'));var Mustache=require(_0xf80c('0x4'));var util=require(_0xf80c('0x5'));var path=require(_0xf80c('0x6'));var sox=require(_0xf80c('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf80c('0x8'));var _=require(_0xf80c('0x9'));var squel=require(_0xf80c('0xa'));var crypto=require(_0xf80c('0xb'));var jsforce=require(_0xf80c('0xc'));var deskjs=require(_0xf80c('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf80c('0xe'));var Papa=require(_0xf80c('0xf'));var Redis=require(_0xf80c('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf80c('0x11'));var logger=require(_0xf80c('0x12'))(_0xf80c('0x13'));var utils=require(_0xf80c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf80c('0x15'));var db=require(_0xf80c('0x16'))['db'];function respondWithStatusCode(_0x2b6785,_0x27d3f7){_0x27d3f7=_0x27d3f7||0xcc;return function(_0x242f61){if(_0x242f61){return _0x2b6785['sendStatus'](_0x27d3f7);}return _0x2b6785[_0xf80c('0x17')](_0x27d3f7)['end']();};}function respondWithResult(_0x201fc3,_0x5f22fb){_0x5f22fb=_0x5f22fb||0xc8;return function(_0x48ca49){if(_0x48ca49){return _0x201fc3[_0xf80c('0x17')](_0x5f22fb)[_0xf80c('0x18')](_0x48ca49);}};}function respondWithFilteredResult(_0x115bea,_0x2ec792){return function(_0x564ac0){if(_0x564ac0){var _0x541ab4=typeof _0x2ec792['offset']==='undefined'&&typeof _0x2ec792[_0xf80c('0x19')]===_0xf80c('0x1a');var _0x5a50f8=_0x564ac0[_0xf80c('0x1b')];var _0x12a890=_0x541ab4?0x0:_0x2ec792[_0xf80c('0x1c')];var _0x1bcc72=_0x541ab4?_0x564ac0[_0xf80c('0x1b')]:_0x2ec792[_0xf80c('0x1c')]+_0x2ec792[_0xf80c('0x19')];var _0x2628ff;if(_0x1bcc72>=_0x5a50f8){_0x1bcc72=_0x5a50f8;_0x2628ff=0xc8;}else{_0x2628ff=0xce;}_0x115bea[_0xf80c('0x17')](_0x2628ff);return _0x115bea[_0xf80c('0x1d')](_0xf80c('0x1e'),_0x12a890+'-'+_0x1bcc72+'/'+_0x5a50f8)[_0xf80c('0x18')](_0x564ac0);}return null;};}function patchUpdates(_0x3eebb3){return function(_0x4633b0){try{jsonpatch[_0xf80c('0x1f')](_0x4633b0,_0x3eebb3,!![]);}catch(_0x253308){return BPromise[_0xf80c('0x20')](_0x253308);}return _0x4633b0[_0xf80c('0x21')]();};}function saveUpdates(_0x19b473,_0x3c107d){return function(_0x238239){if(_0x238239){return _0x238239[_0xf80c('0x22')](_0x19b473)['then'](function(_0x5d2508){return _0x5d2508;});}return null;};}function removeEntity(_0x9621b0,_0x2032ad){return function(_0xda3743){if(_0xda3743){return _0xda3743[_0xf80c('0x23')]()[_0xf80c('0x24')](function(){var _0x3212ab=_0xda3743[_0xf80c('0x25')]({'plain':!![]});var _0x3c9182=_0xf80c('0x26');return db[_0xf80c('0x27')][_0xf80c('0x23')]({'where':{'type':_0x3c9182,'resourceId':_0x3212ab['id']}})[_0xf80c('0x24')](function(){return _0xda3743;});})['then'](function(){_0x9621b0['status'](0xcc)[_0xf80c('0x28')]();});}};}function handleEntityNotFound(_0x5998a5,_0x5446b3){return function(_0x474eb0){if(!_0x474eb0){_0x5998a5[_0xf80c('0x29')](0x194);}return _0x474eb0;};}function handleError(_0x3258e9,_0x1c795f){_0x1c795f=_0x1c795f||0x1f4;return function(_0x1b4cd9){logger['error'](_0x1b4cd9[_0xf80c('0x2a')]);if(_0x1b4cd9[_0xf80c('0x2b')]){delete _0x1b4cd9[_0xf80c('0x2b')];}_0x3258e9[_0xf80c('0x17')](_0x1c795f)['send'](_0x1b4cd9);};}exports[_0xf80c('0x2c')]=function(_0x34339e,_0x5be98c){var _0x2b72a3={},_0x26ca01={},_0x586ca5={'count':0x0,'rows':[]};var _0x2ed594=_[_0xf80c('0x2d')](db['CmContactHasItem'][_0xf80c('0x2e')],function(_0x416d82){return{'name':_0x416d82[_0xf80c('0x2f')],'type':_0x416d82[_0xf80c('0x30')][_0xf80c('0x31')]};});_0x26ca01['model']=_[_0xf80c('0x2d')](_0x2ed594,_0xf80c('0x2b'));_0x26ca01['query']=_['keys'](_0x34339e['query']);_0x26ca01[_0xf80c('0x32')]=_['intersection'](_0x26ca01['model'],_0x26ca01[_0xf80c('0x33')]);_0x2b72a3['attributes']=_[_0xf80c('0x34')](_0x26ca01[_0xf80c('0x35')],qs['fields'](_0x34339e['query'][_0xf80c('0x36')]));_0x2b72a3[_0xf80c('0x37')]=_0x2b72a3[_0xf80c('0x37')][_0xf80c('0x38')]?_0x2b72a3[_0xf80c('0x37')]:_0x26ca01['model'];if(!_0x34339e[_0xf80c('0x33')]['hasOwnProperty']('nolimit')){_0x2b72a3[_0xf80c('0x19')]=qs[_0xf80c('0x19')](_0x34339e['query']['limit']);_0x2b72a3['offset']=qs[_0xf80c('0x1c')](_0x34339e[_0xf80c('0x33')][_0xf80c('0x1c')]);}_0x2b72a3[_0xf80c('0x39')]=qs[_0xf80c('0x3a')](_0x34339e['query']['sort']);_0x2b72a3[_0xf80c('0x3b')]=qs['filters'](_[_0xf80c('0x3c')](_0x34339e[_0xf80c('0x33')],_0x26ca01[_0xf80c('0x32')]),_0x2ed594);if(_0x34339e[_0xf80c('0x33')][_0xf80c('0x3d')]){_0x2b72a3[_0xf80c('0x3b')]=_[_0xf80c('0x3e')](_0x2b72a3[_0xf80c('0x3b')],{'$or':_[_0xf80c('0x2d')](_0x2ed594,function(_0x57de86){if(_0x57de86[_0xf80c('0x30')]!==_0xf80c('0x3f')){var _0x298793={};_0x298793[_0x57de86[_0xf80c('0x2b')]]={'$like':'%'+_0x34339e[_0xf80c('0x33')][_0xf80c('0x3d')]+'%'};return _0x298793;}})});}_0x2b72a3=_[_0xf80c('0x3e')]({},_0x2b72a3,_0x34339e[_0xf80c('0x40')]);var _0x1c5723={'where':_0x2b72a3[_0xf80c('0x3b')]};return db[_0xf80c('0x41')]['count'](_0x1c5723)[_0xf80c('0x24')](function(_0x4bf897){_0x586ca5['count']=_0x4bf897;if(_0x34339e['query'][_0xf80c('0x42')]){_0x2b72a3[_0xf80c('0x43')]=[{'all':!![]}];}return db['CmContactHasItem'][_0xf80c('0x44')](_0x2b72a3);})[_0xf80c('0x24')](function(_0x5bf3f4){_0x586ca5[_0xf80c('0x45')]=_0x5bf3f4;return _0x586ca5;})[_0xf80c('0x24')](respondWithFilteredResult(_0x5be98c,_0x2b72a3))[_0xf80c('0x46')](handleError(_0x5be98c,null));};exports[_0xf80c('0x47')]=function(_0x2fa285,_0x52cd05){var _0x4aa3bf={'raw':!![],'where':{'id':_0x2fa285[_0xf80c('0x48')]['id']}},_0xd7a66a={};_0xd7a66a[_0xf80c('0x35')]=_[_0xf80c('0x49')](db[_0xf80c('0x41')][_0xf80c('0x2e')]);_0xd7a66a[_0xf80c('0x33')]=_[_0xf80c('0x49')](_0x2fa285[_0xf80c('0x33')]);_0xd7a66a[_0xf80c('0x32')]=_[_0xf80c('0x34')](_0xd7a66a['model'],_0xd7a66a[_0xf80c('0x33')]);_0x4aa3bf[_0xf80c('0x37')]=_['intersection'](_0xd7a66a[_0xf80c('0x35')],qs[_0xf80c('0x36')](_0x2fa285[_0xf80c('0x33')][_0xf80c('0x36')]));_0x4aa3bf['attributes']=_0x4aa3bf[_0xf80c('0x37')][_0xf80c('0x38')]?_0x4aa3bf['attributes']:_0xd7a66a[_0xf80c('0x35')];if(_0x2fa285[_0xf80c('0x33')][_0xf80c('0x42')]){_0x4aa3bf[_0xf80c('0x43')]=[{'all':!![]}];}_0x4aa3bf=_['merge']({},_0x4aa3bf,_0x2fa285[_0xf80c('0x40')]);return db['CmContactHasItem'][_0xf80c('0x4a')](_0x4aa3bf)[_0xf80c('0x24')](handleEntityNotFound(_0x52cd05,null))['then'](respondWithResult(_0x52cd05,null))[_0xf80c('0x46')](handleError(_0x52cd05,null));};exports[_0xf80c('0x4b')]=function(_0x98b61a,_0x3d4d94){return db[_0xf80c('0x41')][_0xf80c('0x4b')](_0x98b61a[_0xf80c('0x4c')],{})[_0xf80c('0x24')](function(_0x4e985a){var _0x3a7e0b=_0x98b61a[_0xf80c('0x4d')][_0xf80c('0x25')]({'plain':!![]});if(!_0x3a7e0b)throw new Error(_0xf80c('0x4e'));if(_0x3a7e0b[_0xf80c('0x4f')]==='user'){var _0x4a3d5f=_0x4e985a[_0xf80c('0x25')]({'plain':!![]});var _0x570c97='CmContactHasItems';return db[_0xf80c('0x50')]['find']({'where':{'name':_0x570c97,'userProfileId':_0x3a7e0b[_0xf80c('0x51')]},'raw':!![]})[_0xf80c('0x24')](function(_0x41ad92){if(_0x41ad92&&_0x41ad92['autoAssociation']===0x0){return db['UserProfileResource'][_0xf80c('0x4b')]({'name':_0x4a3d5f[_0xf80c('0x2b')],'resourceId':_0x4a3d5f['id'],'type':_0x41ad92[_0xf80c('0x2b')],'sectionId':_0x41ad92['id']},{})[_0xf80c('0x24')](function(){return _0x4e985a;});}else{return _0x4e985a;}})[_0xf80c('0x46')](function(_0x4951bc){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4951bc);throw _0x4951bc;});}return _0x4e985a;})['then'](respondWithResult(_0x3d4d94,0xc9))[_0xf80c('0x46')](handleError(_0x3d4d94,null));};exports[_0xf80c('0x22')]=function(_0x308349,_0x226616){if(_0x308349[_0xf80c('0x4c')]['id']){delete _0x308349['body']['id'];}return db[_0xf80c('0x41')][_0xf80c('0x4a')]({'where':{'id':_0x308349['params']['id']}})[_0xf80c('0x24')](handleEntityNotFound(_0x226616,null))['then'](saveUpdates(_0x308349[_0xf80c('0x4c')],null))[_0xf80c('0x24')](respondWithResult(_0x226616,null))['catch'](handleError(_0x226616,null));};exports[_0xf80c('0x23')]=function(_0x302b6c,_0x58f80e){return db['CmContactHasItem']['find']({'where':{'id':_0x302b6c['params']['id']}})[_0xf80c('0x24')](handleEntityNotFound(_0x58f80e,null))[_0xf80c('0x24')](removeEntity(_0x58f80e,null))[_0xf80c('0x46')](handleError(_0x58f80e,null));};
\ No newline at end of file
index 4d78613..6f8d371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e8=['request-promise','path','../../config/environment','exports','define','CmContactHasItem','cm_contact_has_items','lodash','bluebird'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x05e8,0xa0));var _0x805e=function(_0x556e31,_0x26ecc6){_0x556e31=_0x556e31-0x0;var _0xfebdb4=_0x05e8[_0x556e31];return _0xfebdb4;};'use strict';var _=require(_0x805e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x805e('0x1'));var rp=require(_0x805e('0x2'));var fs=require('fs');var path=require(_0x805e('0x3'));var rimraf=require('rimraf');var config=require(_0x805e('0x4'));var attributes=require('./cmContactHasItem.attributes');module[_0x805e('0x5')]=function(_0x22546f,_0x3a7702){return _0x22546f[_0x805e('0x6')](_0x805e('0x7'),attributes,{'tableName':_0x805e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa53c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContactHasItem.attributes','exports','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger'];(function(_0x512373,_0x42ca20){var _0x48669f=function(_0x53f878){while(--_0x53f878){_0x512373['push'](_0x512373['shift']());}};_0x48669f(++_0x42ca20);}(_0xa53c,0x1af));var _0xca53=function(_0xd9ad75,_0x25a9fd){_0xd9ad75=_0xd9ad75-0x0;var _0x3b4b76=_0xa53c[_0xd9ad75];return _0x3b4b76;};'use strict';var _=require(_0xca53('0x0'));var util=require(_0xca53('0x1'));var logger=require(_0xca53('0x2'))(_0xca53('0x3'));var moment=require(_0xca53('0x4'));var BPromise=require(_0xca53('0x5'));var rp=require(_0xca53('0x6'));var fs=require('fs');var path=require(_0xca53('0x7'));var rimraf=require(_0xca53('0x8'));var config=require(_0xca53('0x9'));var attributes=require(_0xca53('0xa'));module[_0xca53('0xb')]=function(_0x4055b7,_0x44cf5a){return _0x4055b7['define'](_0xca53('0xc'),attributes,{'tableName':_0xca53('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30cb6bd..f23346c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe4=['lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','CmContactHasItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','CmContactHasItem,\x20%s,\x20%s','message','catch'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xcfe4,0x1ce));var _0x4cfe=function(_0x1bdee6,_0x5bf39f){_0x1bdee6=_0x1bdee6-0x0;var _0xbdca49=_0xcfe4[_0x1bdee6];return _0xbdca49;};'use strict';var _=require(_0x4cfe('0x0'));var util=require(_0x4cfe('0x1'));var moment=require('moment');var BPromise=require(_0x4cfe('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4cfe('0x3'));var db=require(_0x4cfe('0x4'))['db'];var utils=require(_0x4cfe('0x5'));var logger=require('../../config/logger')(_0x4cfe('0x6'));var config=require(_0x4cfe('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4cfe('0x8')][_0x4cfe('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x242247,_0x390adc,_0x32eb71){return new BPromise(function(_0x41a463,_0x3ee569){return client[_0x4cfe('0xa')](_0x242247,_0x32eb71)[_0x4cfe('0xb')](function(_0x8c2418){logger[_0x4cfe('0xc')]('CmContactHasItem,\x20%s,\x20%s',_0x390adc,'request\x20sent');logger['debug'](_0x4cfe('0xd'),_0x390adc,_0x4cfe('0xe'),JSON[_0x4cfe('0xf')](_0x8c2418));if(_0x8c2418[_0x4cfe('0x10')]){if(_0x8c2418[_0x4cfe('0x10')][_0x4cfe('0x11')]===0x1f4){logger[_0x4cfe('0x10')](_0x4cfe('0x12'),_0x390adc,_0x8c2418['error'][_0x4cfe('0x13')]);return _0x3ee569(_0x8c2418['error'][_0x4cfe('0x13')]);}logger[_0x4cfe('0x10')]('CmContactHasItem,\x20%s,\x20%s',_0x390adc,_0x8c2418['error']['message']);return _0x41a463(_0x8c2418[_0x4cfe('0x10')][_0x4cfe('0x13')]);}else{logger['info'](_0x4cfe('0x12'),_0x390adc,'request\x20sent');_0x41a463(_0x8c2418['result'][_0x4cfe('0x13')]);}})[_0x4cfe('0x14')](function(_0x489358){logger[_0x4cfe('0x10')](_0x4cfe('0x12'),_0x390adc,_0x489358);_0x3ee569(_0x489358);});});}
\ No newline at end of file
+var _0x9f1c=['rpc','http','request','CmContactHasItem,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x448f8,_0x2aa1d7){var _0xa73126=function(_0x1fcafa){while(--_0x1fcafa){_0x448f8['push'](_0x448f8['shift']());}};_0xa73126(++_0x2aa1d7);}(_0x9f1c,0x124));var _0xc9f1=function(_0x418269,_0x16e305){_0x418269=_0x418269-0x0;var _0x48cccd=_0x9f1c[_0x418269];return _0x48cccd;};'use strict';var _=require('lodash');var util=require(_0xc9f1('0x0'));var moment=require(_0xc9f1('0x1'));var BPromise=require(_0xc9f1('0x2'));var rs=require(_0xc9f1('0x3'));var fs=require('fs');var Redis=require(_0xc9f1('0x4'));var db=require(_0xc9f1('0x5'))['db'];var utils=require(_0xc9f1('0x6'));var logger=require(_0xc9f1('0x7'))(_0xc9f1('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc9f1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x200f6e,_0x25897d,_0x1aa540){return new BPromise(function(_0x28e940,_0x215d4c){return client[_0xc9f1('0xa')](_0x200f6e,_0x1aa540)['then'](function(_0x516b88){logger['info'](_0xc9f1('0xb'),_0x25897d,_0xc9f1('0xc'));logger['debug']('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x25897d,_0xc9f1('0xc'),JSON[_0xc9f1('0xd')](_0x516b88));if(_0x516b88[_0xc9f1('0xe')]){if(_0x516b88[_0xc9f1('0xe')][_0xc9f1('0xf')]===0x1f4){logger[_0xc9f1('0xe')](_0xc9f1('0xb'),_0x25897d,_0x516b88[_0xc9f1('0xe')][_0xc9f1('0x10')]);return _0x215d4c(_0x516b88[_0xc9f1('0xe')][_0xc9f1('0x10')]);}logger[_0xc9f1('0xe')](_0xc9f1('0xb'),_0x25897d,_0x516b88[_0xc9f1('0xe')][_0xc9f1('0x10')]);return _0x28e940(_0x516b88[_0xc9f1('0xe')][_0xc9f1('0x10')]);}else{logger[_0xc9f1('0x11')](_0xc9f1('0xb'),_0x25897d,_0xc9f1('0xc'));_0x28e940(_0x516b88[_0xc9f1('0x12')][_0xc9f1('0x10')]);}})[_0xc9f1('0x13')](function(_0x4cf4b0){logger[_0xc9f1('0xe')](_0xc9f1('0xb'),_0x25897d,_0x4cf4b0);_0x215d4c(_0x4cf4b0);});});}
\ No newline at end of file
index 4c31802..e58c650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5e3=['destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','show','post','create','update','delete','/:id'];(function(_0x53377b,_0x166f23){var _0x39cba9=function(_0x4be07d){while(--_0x4be07d){_0x53377b['push'](_0x53377b['shift']());}};_0x39cba9(++_0x166f23);}(_0xd5e3,0x10c));var _0x3d5e=function(_0x344f36,_0x582072){_0x344f36=_0x344f36-0x0;var _0x1d0cb3=_0xd5e3[_0x344f36];return _0x1d0cb3;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3d5e('0x0'));var express=require(_0x3d5e('0x1'));var router=express[_0x3d5e('0x2')]();var fs_extra=require(_0x3d5e('0x3'));var auth=require(_0x3d5e('0x4'));var interaction=require(_0x3d5e('0x5'));var config=require(_0x3d5e('0x6'));var controller=require(_0x3d5e('0x7'));router[_0x3d5e('0x8')]('/',auth[_0x3d5e('0x9')](),controller[_0x3d5e('0xa')]);router[_0x3d5e('0x8')]('/:id',auth[_0x3d5e('0x9')](),controller[_0x3d5e('0xb')]);router[_0x3d5e('0xc')]('/',auth[_0x3d5e('0x9')](),controller[_0x3d5e('0xd')]);router['put']('/:id',auth[_0x3d5e('0x9')](),controller[_0x3d5e('0xe')]);router[_0x3d5e('0xf')](_0x3d5e('0x10'),auth[_0x3d5e('0x9')](),controller[_0x3d5e('0x11')]);module[_0x3d5e('0x12')]=router;
\ No newline at end of file
+var _0x2593=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router'];(function(_0x33e982,_0x1d15b1){var _0x2d3668=function(_0x3c16d5){while(--_0x3c16d5){_0x33e982['push'](_0x33e982['shift']());}};_0x2d3668(++_0x1d15b1);}(_0x2593,0x1e1));var _0x3259=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x2593[_0x346737];return _0x1ade2e;};'use strict';var multer=require(_0x3259('0x0'));var util=require(_0x3259('0x1'));var path=require(_0x3259('0x2'));var timeout=require(_0x3259('0x3'));var express=require('express');var router=express[_0x3259('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3259('0x5'));var interaction=require(_0x3259('0x6'));var config=require(_0x3259('0x7'));var controller=require('./cmContactHasItem.controller');router[_0x3259('0x8')]('/',auth[_0x3259('0x9')](),controller['index']);router['get'](_0x3259('0xa'),auth[_0x3259('0x9')](),controller[_0x3259('0xb')]);router[_0x3259('0xc')]('/',auth['isAuthenticated'](),controller[_0x3259('0xd')]);router[_0x3259('0xe')](_0x3259('0xa'),auth[_0x3259('0x9')](),controller[_0x3259('0xf')]);router[_0x3259('0x10')](_0x3259('0xa'),auth[_0x3259('0x9')](),controller[_0x3259('0x11')]);module['exports']=router;
\ No newline at end of file
index 0cad7ad..76510b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcda4=['exports','VIRTUAL','getDataValue','setDataValue','alias','name','TEXT','long','select','parse','values','isArray','stringify','BOOLEAN','ENUM','voice'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xcda4,0x1e0));var _0x4cda=function(_0x4fc14a,_0x294ad1){_0x4fc14a=_0x4fc14a-0x0;var _0x2ec208=_0xcda4[_0x4fc14a];return _0x2ec208;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0x4cda('0x0')]={'name':{'type':Sequelize[_0x4cda('0x1')],'get':function(_0x43640e){return this[_0x4cda('0x2')]('alias');}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x310867){this[_0x4cda('0x3')](_0x4cda('0x4'),_0x310867?_0x310867:this[_0x4cda('0x2')](_0x4cda('0x5')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0x4cda('0x6')](_0x4cda('0x7')),'get':function(){if(this[_0x4cda('0x2')]('type')===_0x4cda('0x8')){return JSON[_0x4cda('0x9')](this[_0x4cda('0x2')]('values'));}else{return this[_0x4cda('0x2')](_0x4cda('0xa'));}},'set':function(_0x456d5a){if(Array[_0x4cda('0xb')](_0x456d5a)){this[_0x4cda('0x3')](_0x4cda('0xa'),JSON[_0x4cda('0xc')](_0x456d5a));}else{this[_0x4cda('0x3')](_0x4cda('0xa'),_0x456d5a);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x4cda('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x4cda('0xe')](_0x4cda('0xf'))}};
\ No newline at end of file
+var _0xeef7=['voice','sequelize','VIRTUAL','getDataValue','alias','STRING','setDataValue','TEXT','long','type','select','parse','values','isArray','BOOLEAN','ENUM'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xeef7,0x151));var _0x7eef=function(_0x1a7e9f,_0x6ef385){_0x1a7e9f=_0x1a7e9f-0x0;var _0x44b3fa=_0xeef7[_0x1a7e9f];return _0x44b3fa;};'use strict';var Sequelize=require(_0x7eef('0x0'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x7eef('0x1')],'get':function(_0x5d257f){return this[_0x7eef('0x2')](_0x7eef('0x3'));}},'alias':{'type':Sequelize[_0x7eef('0x4')],'allowNull':![],'set':function(_0x3cae4b){this[_0x7eef('0x5')](_0x7eef('0x3'),_0x3cae4b?_0x3cae4b:this[_0x7eef('0x2')]('name'));}},'type':{'type':Sequelize[_0x7eef('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x7eef('0x6')](_0x7eef('0x7')),'get':function(){if(this[_0x7eef('0x2')](_0x7eef('0x8'))===_0x7eef('0x9')){return JSON[_0x7eef('0xa')](this[_0x7eef('0x2')](_0x7eef('0xb')));}else{return this[_0x7eef('0x2')](_0x7eef('0xb'));}},'set':function(_0x125149){if(Array[_0x7eef('0xc')](_0x125149)){this[_0x7eef('0x5')](_0x7eef('0xb'),JSON['stringify'](_0x125149));}else{this['setDataValue'](_0x7eef('0xb'),_0x125149);}}},'required':{'type':Sequelize[_0x7eef('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x7eef('0xe')](_0x7eef('0xf'))}};
\ No newline at end of file
index dbbdbfc..0554d1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e7=['key','model','differenceBy','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','body','create','sequelize','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','format','cf_%d','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','send','index','map','CmCustomField','fieldName','type'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x39e7,0x182));var _0x739e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x39e7[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x739e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x739e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x739e('0x2'));var moment=require(_0x739e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x739e('0x4'));var util=require(_0x739e('0x5'));var path=require(_0x739e('0x6'));var sox=require(_0x739e('0x7'));var csv=require(_0x739e('0x8'));var ejs=require(_0x739e('0x9'));var fs=require('fs');var fs_extra=require(_0x739e('0xa'));var _=require('lodash');var squel=require(_0x739e('0xb'));var crypto=require(_0x739e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x739e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x739e('0xe'));var Papa=require('papaparse');var Redis=require(_0x739e('0xf'));var authService=require(_0x739e('0x10'));var qs=require(_0x739e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x739e('0x12'));var logger=require(_0x739e('0x13'))(_0x739e('0x14'));var utils=require(_0x739e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x739e('0x16'));var db=require(_0x739e('0x17'))['db'];function respondWithStatusCode(_0x339bfe,_0x2c659a){_0x2c659a=_0x2c659a||0xcc;return function(_0xe8cd83){if(_0xe8cd83){return _0x339bfe[_0x739e('0x18')](_0x2c659a);}return _0x339bfe[_0x739e('0x19')](_0x2c659a)['end']();};}function respondWithResult(_0x5bc04d,_0x16c0da){_0x16c0da=_0x16c0da||0xc8;return function(_0x49db22){if(_0x49db22){return _0x5bc04d[_0x739e('0x19')](_0x16c0da)[_0x739e('0x1a')](_0x49db22);}};}function respondWithFilteredResult(_0x3ad0f8,_0xdd69ab){return function(_0x104cd8){if(_0x104cd8){var _0x46b9f2=typeof _0xdd69ab[_0x739e('0x1b')]===_0x739e('0x1c')&&typeof _0xdd69ab[_0x739e('0x1d')]===_0x739e('0x1c');var _0x465140=_0x104cd8['count'];var _0x286bff=_0x46b9f2?0x0:_0xdd69ab[_0x739e('0x1b')];var _0x1906b5=_0x46b9f2?_0x104cd8[_0x739e('0x1e')]:_0xdd69ab[_0x739e('0x1b')]+_0xdd69ab[_0x739e('0x1d')];var _0x1c7eca;if(_0x1906b5>=_0x465140){_0x1906b5=_0x465140;_0x1c7eca=0xc8;}else{_0x1c7eca=0xce;}_0x3ad0f8['status'](_0x1c7eca);return _0x3ad0f8['set'](_0x739e('0x1f'),_0x286bff+'-'+_0x1906b5+'/'+_0x465140)[_0x739e('0x1a')](_0x104cd8);}return null;};}function patchUpdates(_0x13dfb3){return function(_0x49fff3){try{jsonpatch['apply'](_0x49fff3,_0x13dfb3,!![]);}catch(_0x4aa43c){return BPromise['reject'](_0x4aa43c);}return _0x49fff3['save']();};}function saveUpdates(_0x4d1a6c,_0x230eab){return function(_0x2edb17){if(_0x2edb17){return _0x2edb17[_0x739e('0x20')](_0x4d1a6c)[_0x739e('0x21')](function(_0x33ed61){return _0x33ed61;});}return null;};}function removeEntity(_0x295026,_0x1f35de){return function(_0x39730b){if(_0x39730b){return _0x39730b[_0x739e('0x22')]()[_0x739e('0x21')](function(){_0x295026[_0x739e('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x589c17,_0x248f88){return function(_0x7f30be){if(!_0x7f30be){_0x589c17[_0x739e('0x18')](0x194);}return _0x7f30be;};}function handleError(_0x574ecd,_0x512863){_0x512863=_0x512863||0x1f4;return function(_0x271a76){logger[_0x739e('0x23')](_0x271a76[_0x739e('0x24')]);if(_0x271a76[_0x739e('0x25')]){delete _0x271a76['name'];}_0x574ecd[_0x739e('0x19')](_0x512863)[_0x739e('0x26')](_0x271a76);};}exports[_0x739e('0x27')]=function(_0xcfa18e,_0x7965d3){var _0x4815f6={},_0x23dfab={},_0x3b5e88={'count':0x0,'rows':[]};var _0x23dcf1=_[_0x739e('0x28')](db[_0x739e('0x29')]['rawAttributes'],function(_0x437b5e){return{'name':_0x437b5e[_0x739e('0x2a')],'type':_0x437b5e[_0x739e('0x2b')][_0x739e('0x2c')]};});_0x23dfab[_0x739e('0x2d')]=_[_0x739e('0x2e')](_[_0x739e('0x28')](_0x23dcf1,_0x739e('0x25')),[_0x739e('0x25')]);_0x23dfab[_0x739e('0x2f')]=_[_0x739e('0x30')](_0xcfa18e[_0x739e('0x2f')]);_0x23dfab['filters']=_['intersection'](_0x23dfab[_0x739e('0x2d')],_0x23dfab[_0x739e('0x2f')]);_0x4815f6['attributes']=_[_0x739e('0x31')](_0x23dfab[_0x739e('0x2d')],qs[_0x739e('0x32')](_0xcfa18e[_0x739e('0x2f')]['fields']));_0x4815f6[_0x739e('0x33')]=_0x4815f6[_0x739e('0x33')][_0x739e('0x34')]?_0x4815f6[_0x739e('0x33')]:_0x23dfab[_0x739e('0x2d')];if(!_0xcfa18e['query'][_0x739e('0x35')]('nolimit')){_0x4815f6[_0x739e('0x1d')]=qs['limit'](_0xcfa18e[_0x739e('0x2f')][_0x739e('0x1d')]);_0x4815f6[_0x739e('0x1b')]=qs[_0x739e('0x1b')](_0xcfa18e[_0x739e('0x2f')][_0x739e('0x1b')]);}_0x4815f6[_0x739e('0x36')]=qs[_0x739e('0x37')](_0xcfa18e[_0x739e('0x2f')]['sort']);_0x4815f6[_0x739e('0x38')]=qs[_0x739e('0x39')](_[_0x739e('0x3a')](_0xcfa18e[_0x739e('0x2f')],_0x23dfab[_0x739e('0x39')]),_0x23dcf1);if(_0xcfa18e['query']['filter']){_0x4815f6[_0x739e('0x38')]=_[_0x739e('0x3b')](_0x4815f6[_0x739e('0x38')],{'$or':_[_0x739e('0x28')](_0x23dcf1,function(_0x305f45){if(_0x305f45[_0x739e('0x2b')]!==_0x739e('0x3c')){var _0x339696={};_0x339696[_0x305f45[_0x739e('0x25')]]={'$like':'%'+_0xcfa18e[_0x739e('0x2f')]['filter']+'%'};return _0x339696;}})});}_0x4815f6=_[_0x739e('0x3b')]({},_0x4815f6,_0xcfa18e[_0x739e('0x3d')]);var _0x14c71e={'where':_0x4815f6[_0x739e('0x38')]};return db[_0x739e('0x29')]['count'](_0x14c71e)[_0x739e('0x21')](function(_0x41ce8c){_0x3b5e88[_0x739e('0x1e')]=_0x41ce8c;if(_0xcfa18e[_0x739e('0x2f')][_0x739e('0x3e')]){_0x4815f6[_0x739e('0x3f')]=[{'all':!![]}];}return db[_0x739e('0x29')][_0x739e('0x40')](_0x4815f6);})[_0x739e('0x21')](function(_0x40219c){_0x3b5e88[_0x739e('0x41')]=_0x40219c;return _0x3b5e88;})[_0x739e('0x21')](respondWithFilteredResult(_0x7965d3,_0x4815f6))['catch'](handleError(_0x7965d3,null));};exports[_0x739e('0x42')]=function(_0x5164af,_0x459381){var _0x3f9341={'raw':!![],'where':{'id':_0x5164af[_0x739e('0x43')]['id']}},_0x45ba97={};_0x45ba97[_0x739e('0x2d')]=_[_0x739e('0x30')](db['CmCustomField'][_0x739e('0x44')]);_0x45ba97['query']=_[_0x739e('0x30')](_0x5164af[_0x739e('0x2f')]);_0x45ba97[_0x739e('0x39')]=_[_0x739e('0x31')](_0x45ba97[_0x739e('0x2d')],_0x45ba97['query']);_0x3f9341[_0x739e('0x33')]=_['intersection'](_0x45ba97['model'],qs[_0x739e('0x32')](_0x5164af[_0x739e('0x2f')]['fields']));_0x3f9341[_0x739e('0x33')]=_0x3f9341[_0x739e('0x33')]['length']?_0x3f9341[_0x739e('0x33')]:_0x45ba97[_0x739e('0x2d')];if(_0x5164af[_0x739e('0x2f')]['includeAll']){_0x3f9341['include']=[{'all':!![]}];}_0x3f9341=_[_0x739e('0x3b')]({},_0x3f9341,_0x5164af['options']);return db['CmCustomField'][_0x739e('0x45')](_0x3f9341)['then'](handleEntityNotFound(_0x459381,null))[_0x739e('0x21')](respondWithResult(_0x459381,null))[_0x739e('0x46')](handleError(_0x459381,null));};exports[_0x739e('0x20')]=function(_0x38267f,_0x2cd8c6){if(_0x38267f[_0x739e('0x47')]['id']){delete _0x38267f[_0x739e('0x47')]['id'];}return db[_0x739e('0x29')][_0x739e('0x45')]({'where':{'id':_0x38267f[_0x739e('0x43')]['id']}})[_0x739e('0x21')](handleEntityNotFound(_0x2cd8c6,null))[_0x739e('0x21')](saveUpdates(_0x38267f[_0x739e('0x47')],null))[_0x739e('0x21')](respondWithResult(_0x2cd8c6,null))[_0x739e('0x46')](handleError(_0x2cd8c6,null));};exports[_0x739e('0x22')]=function(_0x549be3,_0x4e8d88){return db[_0x739e('0x29')]['find']({'where':{'id':_0x549be3[_0x739e('0x43')]['id']}})['then'](handleEntityNotFound(_0x4e8d88,null))[_0x739e('0x21')](removeEntity(_0x4e8d88,null))[_0x739e('0x46')](handleError(_0x4e8d88,null));};exports[_0x739e('0x48')]=function(_0xe1a29,_0x373a2d){var _0x490f5d;return db[_0x739e('0x49')][_0x739e('0x4a')](function(_0xc0a15b){return db[_0x739e('0x29')][_0x739e('0x48')](_0xe1a29['body'],{'transaction':_0xc0a15b})[_0x739e('0x21')](function(_0x2be3bc){_0x490f5d=_0x2be3bc;var _0x501007={'type':db[_0x739e('0x4b')][_0x739e('0x4c')],'transaction':_0xc0a15b};switch(_0xe1a29['body'][_0x739e('0x2b')]){case _0x739e('0x4d'):_0x501007['type']=db[_0x739e('0x4b')][_0x739e('0x4c')];break;case _0x739e('0x4e'):_0x501007[_0x739e('0x2b')]=db[_0x739e('0x4b')][_0x739e('0x4f')];break;case _0x739e('0x50'):_0x501007[_0x739e('0x2b')]=db[_0x739e('0x4b')][_0x739e('0x51')];_0x501007[_0x739e('0x52')]=![];break;default:}return db[_0x739e('0x49')][_0x739e('0x53')]['addColumn']('cm_contacts',util[_0x739e('0x54')](_0x739e('0x55'),_0x490f5d['id']),_0x501007);})[_0x739e('0x21')](function(){return _0x490f5d;});})['then'](respondWithResult(_0x373a2d,0xc9))[_0x739e('0x46')](handleError(_0x373a2d,null));};
\ No newline at end of file
+var _0xae3c=['stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','CmCustomField','includeAll','include','findAll','rows','catch','fields','find','body','params','create','sequelize','transaction','text','type','TEXT','Sequelize','INTEGER','switch','defaultValue','queryInterface','cm_contacts','format','cf_%d','fast-json-patch','moment','bluebird','mustache','path','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','sendStatus','status','limit','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end'];(function(_0x4d0b48,_0x4e0631){var _0x591398=function(_0x44f0f0){while(--_0x44f0f0){_0x4d0b48['push'](_0x4d0b48['shift']());}};_0x591398(++_0x4e0631);}(_0xae3c,0x7e));var _0xcae3=function(_0x261e29,_0x10fffd){_0x261e29=_0x261e29-0x0;var _0x25ef43=_0xae3c[_0x261e29];return _0x25ef43;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcae3('0x0'));var rp=require('request-promise');var moment=require(_0xcae3('0x1'));var BPromise=require(_0xcae3('0x2'));var Mustache=require(_0xcae3('0x3'));var util=require('util');var path=require(_0xcae3('0x4'));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(_0xcae3('0x5'));var squel=require(_0xcae3('0x6'));var crypto=require(_0xcae3('0x7'));var jsforce=require(_0xcae3('0x8'));var deskjs=require(_0xcae3('0x9'));var toCsv=require(_0xcae3('0xa'));var querystring=require(_0xcae3('0xb'));var Papa=require(_0xcae3('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcae3('0xd'));var as=require(_0xcae3('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xcae3('0xf'));var config=require(_0xcae3('0x10'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c6690,_0x3d53ec){_0x3d53ec=_0x3d53ec||0xcc;return function(_0x24ce57){if(_0x24ce57){return _0x4c6690[_0xcae3('0x11')](_0x3d53ec);}return _0x4c6690['status'](_0x3d53ec)['end']();};}function respondWithResult(_0x29e62d,_0x42edf8){_0x42edf8=_0x42edf8||0xc8;return function(_0x32720e){if(_0x32720e){return _0x29e62d[_0xcae3('0x12')](_0x42edf8)['json'](_0x32720e);}};}function respondWithFilteredResult(_0x1b7d11,_0x543b6b){return function(_0x344154){if(_0x344154){var _0x40b4e2=typeof _0x543b6b['offset']==='undefined'&&typeof _0x543b6b[_0xcae3('0x13')]==='undefined';var _0x23fec8=_0x344154['count'];var _0xdc2c40=_0x40b4e2?0x0:_0x543b6b[_0xcae3('0x14')];var _0x301dcb=_0x40b4e2?_0x344154[_0xcae3('0x15')]:_0x543b6b[_0xcae3('0x14')]+_0x543b6b['limit'];var _0x3d5861;if(_0x301dcb>=_0x23fec8){_0x301dcb=_0x23fec8;_0x3d5861=0xc8;}else{_0x3d5861=0xce;}_0x1b7d11[_0xcae3('0x12')](_0x3d5861);return _0x1b7d11[_0xcae3('0x16')](_0xcae3('0x17'),_0xdc2c40+'-'+_0x301dcb+'/'+_0x23fec8)[_0xcae3('0x18')](_0x344154);}return null;};}function patchUpdates(_0x43ee5c){return function(_0x22833c){try{jsonpatch[_0xcae3('0x19')](_0x22833c,_0x43ee5c,!![]);}catch(_0x49c787){return BPromise[_0xcae3('0x1a')](_0x49c787);}return _0x22833c[_0xcae3('0x1b')]();};}function saveUpdates(_0x1364d2,_0x1ecd03){return function(_0x3645b4){if(_0x3645b4){return _0x3645b4[_0xcae3('0x1c')](_0x1364d2)[_0xcae3('0x1d')](function(_0x12a85b){return _0x12a85b;});}return null;};}function removeEntity(_0xe38355,_0xd3c254){return function(_0x72fa65){if(_0x72fa65){return _0x72fa65[_0xcae3('0x1e')]()[_0xcae3('0x1d')](function(){_0xe38355[_0xcae3('0x12')](0xcc)[_0xcae3('0x1f')]();});}};}function handleEntityNotFound(_0x1b17ea,_0x21c907){return function(_0x54f5c7){if(!_0x54f5c7){_0x1b17ea[_0xcae3('0x11')](0x194);}return _0x54f5c7;};}function handleError(_0x2fbb05,_0x261c31){_0x261c31=_0x261c31||0x1f4;return function(_0x34b845){logger['error'](_0x34b845[_0xcae3('0x20')]);if(_0x34b845['name']){delete _0x34b845[_0xcae3('0x21')];}_0x2fbb05[_0xcae3('0x12')](_0x261c31)[_0xcae3('0x22')](_0x34b845);};}exports[_0xcae3('0x23')]=function(_0x28229a,_0x3e7f9d){var _0x23150b={},_0x56ab61={},_0x2f6c87={'count':0x0,'rows':[]};var _0x44d0f1=_[_0xcae3('0x24')](db['CmCustomField'][_0xcae3('0x25')],function(_0xa89e13){return{'name':_0xa89e13['fieldName'],'type':_0xa89e13['type'][_0xcae3('0x26')]};});_0x56ab61[_0xcae3('0x27')]=_['differenceBy'](_[_0xcae3('0x24')](_0x44d0f1,_0xcae3('0x21')),[_0xcae3('0x21')]);_0x56ab61[_0xcae3('0x28')]=_[_0xcae3('0x29')](_0x28229a[_0xcae3('0x28')]);_0x56ab61[_0xcae3('0x2a')]=_[_0xcae3('0x2b')](_0x56ab61[_0xcae3('0x27')],_0x56ab61[_0xcae3('0x28')]);_0x23150b['attributes']=_[_0xcae3('0x2b')](_0x56ab61[_0xcae3('0x27')],qs['fields'](_0x28229a[_0xcae3('0x28')]['fields']));_0x23150b[_0xcae3('0x2c')]=_0x23150b[_0xcae3('0x2c')][_0xcae3('0x2d')]?_0x23150b[_0xcae3('0x2c')]:_0x56ab61['model'];if(!_0x28229a[_0xcae3('0x28')][_0xcae3('0x2e')](_0xcae3('0x2f'))){_0x23150b[_0xcae3('0x13')]=qs['limit'](_0x28229a['query'][_0xcae3('0x13')]);_0x23150b[_0xcae3('0x14')]=qs[_0xcae3('0x14')](_0x28229a[_0xcae3('0x28')]['offset']);}_0x23150b[_0xcae3('0x30')]=qs[_0xcae3('0x31')](_0x28229a[_0xcae3('0x28')][_0xcae3('0x31')]);_0x23150b[_0xcae3('0x32')]=qs[_0xcae3('0x2a')](_[_0xcae3('0x33')](_0x28229a[_0xcae3('0x28')],_0x56ab61[_0xcae3('0x2a')]),_0x44d0f1);if(_0x28229a[_0xcae3('0x28')][_0xcae3('0x34')]){_0x23150b[_0xcae3('0x32')]=_['merge'](_0x23150b['where'],{'$or':_[_0xcae3('0x24')](_0x44d0f1,function(_0x251b90){if(_0x251b90['type']!=='VIRTUAL'){var _0x26e99c={};_0x26e99c[_0x251b90[_0xcae3('0x21')]]={'$like':'%'+_0x28229a[_0xcae3('0x28')][_0xcae3('0x34')]+'%'};return _0x26e99c;}})});}_0x23150b=_[_0xcae3('0x35')]({},_0x23150b,_0x28229a[_0xcae3('0x36')]);var _0x36e9b0={'where':_0x23150b[_0xcae3('0x32')]};return db[_0xcae3('0x37')][_0xcae3('0x15')](_0x36e9b0)['then'](function(_0x3dcffb){_0x2f6c87[_0xcae3('0x15')]=_0x3dcffb;if(_0x28229a['query'][_0xcae3('0x38')]){_0x23150b[_0xcae3('0x39')]=[{'all':!![]}];}return db[_0xcae3('0x37')][_0xcae3('0x3a')](_0x23150b);})['then'](function(_0x3fd8d7){_0x2f6c87[_0xcae3('0x3b')]=_0x3fd8d7;return _0x2f6c87;})[_0xcae3('0x1d')](respondWithFilteredResult(_0x3e7f9d,_0x23150b))[_0xcae3('0x3c')](handleError(_0x3e7f9d,null));};exports['show']=function(_0x4c037b,_0x3e6619){var _0xacee0b={'raw':!![],'where':{'id':_0x4c037b['params']['id']}},_0x31de7d={};_0x31de7d[_0xcae3('0x27')]=_[_0xcae3('0x29')](db[_0xcae3('0x37')][_0xcae3('0x25')]);_0x31de7d[_0xcae3('0x28')]=_[_0xcae3('0x29')](_0x4c037b['query']);_0x31de7d[_0xcae3('0x2a')]=_[_0xcae3('0x2b')](_0x31de7d[_0xcae3('0x27')],_0x31de7d['query']);_0xacee0b['attributes']=_['intersection'](_0x31de7d[_0xcae3('0x27')],qs['fields'](_0x4c037b[_0xcae3('0x28')][_0xcae3('0x3d')]));_0xacee0b['attributes']=_0xacee0b[_0xcae3('0x2c')][_0xcae3('0x2d')]?_0xacee0b[_0xcae3('0x2c')]:_0x31de7d[_0xcae3('0x27')];if(_0x4c037b['query'][_0xcae3('0x38')]){_0xacee0b[_0xcae3('0x39')]=[{'all':!![]}];}_0xacee0b=_['merge']({},_0xacee0b,_0x4c037b[_0xcae3('0x36')]);return db[_0xcae3('0x37')][_0xcae3('0x3e')](_0xacee0b)[_0xcae3('0x1d')](handleEntityNotFound(_0x3e6619,null))[_0xcae3('0x1d')](respondWithResult(_0x3e6619,null))['catch'](handleError(_0x3e6619,null));};exports[_0xcae3('0x1c')]=function(_0x4faab6,_0x244dd1){if(_0x4faab6['body']['id']){delete _0x4faab6[_0xcae3('0x3f')]['id'];}return db[_0xcae3('0x37')][_0xcae3('0x3e')]({'where':{'id':_0x4faab6[_0xcae3('0x40')]['id']}})[_0xcae3('0x1d')](handleEntityNotFound(_0x244dd1,null))[_0xcae3('0x1d')](saveUpdates(_0x4faab6[_0xcae3('0x3f')],null))[_0xcae3('0x1d')](respondWithResult(_0x244dd1,null))[_0xcae3('0x3c')](handleError(_0x244dd1,null));};exports[_0xcae3('0x1e')]=function(_0xdae132,_0x210a95){return db[_0xcae3('0x37')][_0xcae3('0x3e')]({'where':{'id':_0xdae132['params']['id']}})[_0xcae3('0x1d')](handleEntityNotFound(_0x210a95,null))[_0xcae3('0x1d')](removeEntity(_0x210a95,null))[_0xcae3('0x3c')](handleError(_0x210a95,null));};exports[_0xcae3('0x41')]=function(_0x3bfd14,_0xace21b){var _0x40effd;return db[_0xcae3('0x42')][_0xcae3('0x43')](function(_0x5a4348){return db[_0xcae3('0x37')][_0xcae3('0x41')](_0x3bfd14[_0xcae3('0x3f')],{'transaction':_0x5a4348})[_0xcae3('0x1d')](function(_0x418ce5){_0x40effd=_0x418ce5;var _0x4eaa0c={'type':db['Sequelize']['TEXT'],'transaction':_0x5a4348};switch(_0x3bfd14['body']['type']){case _0xcae3('0x44'):_0x4eaa0c[_0xcae3('0x45')]=db['Sequelize'][_0xcae3('0x46')];break;case'number':_0x4eaa0c['type']=db[_0xcae3('0x47')][_0xcae3('0x48')];break;case _0xcae3('0x49'):_0x4eaa0c[_0xcae3('0x45')]=db[_0xcae3('0x47')]['BOOLEAN'];_0x4eaa0c[_0xcae3('0x4a')]=![];break;default:}return db['sequelize'][_0xcae3('0x4b')]['addColumn'](_0xcae3('0x4c'),util[_0xcae3('0x4d')](_0xcae3('0x4e'),_0x40effd['id']),_0x4eaa0c);})[_0xcae3('0x1d')](function(){return _0x40effd;});})['then'](respondWithResult(_0xace21b,0xc9))['catch'](handleError(_0xace21b,null));};
\ No newline at end of file
index 92edf9c..bdd6b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb089=['util','../../config/logger','bluebird','request-promise','path','./cmCustomField.attributes','define','CmCustomField','cm_custom_fields'];(function(_0x53e942,_0x1f4886){var _0x50855d=function(_0x32b02a){while(--_0x32b02a){_0x53e942['push'](_0x53e942['shift']());}};_0x50855d(++_0x1f4886);}(_0xb089,0xfc));var _0x9b08=function(_0x2a4b74,_0x25acac){_0x2a4b74=_0x2a4b74-0x0;var _0x2d51d8=_0xb089[_0x2a4b74];return _0x2d51d8;};'use strict';var _=require('lodash');var util=require(_0x9b08('0x0'));var logger=require(_0x9b08('0x1'))('api');var moment=require('moment');var BPromise=require(_0x9b08('0x2'));var rp=require(_0x9b08('0x3'));var fs=require('fs');var path=require(_0x9b08('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9b08('0x5'));module['exports']=function(_0x3569df,_0x28d6b6){return _0x3569df[_0x9b08('0x6')](_0x9b08('0x7'),attributes,{'tableName':_0x9b08('0x8'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f4f=['CmCustomField','cm_custom_fields','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmCustomField.attributes','define'];(function(_0xb4f0ea,_0x1c17e6){var _0x3fb831=function(_0x13ce3b){while(--_0x13ce3b){_0xb4f0ea['push'](_0xb4f0ea['shift']());}};_0x3fb831(++_0x1c17e6);}(_0x2f4f,0x92));var _0xf2f4=function(_0x27c08f,_0x23e0d7){_0x27c08f=_0x27c08f-0x0;var _0x4b3def=_0x2f4f[_0x27c08f];return _0x4b3def;};'use strict';var _=require(_0xf2f4('0x0'));var util=require('util');var logger=require(_0xf2f4('0x1'))(_0xf2f4('0x2'));var moment=require(_0xf2f4('0x3'));var BPromise=require(_0xf2f4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf2f4('0x5'));var rimraf=require(_0xf2f4('0x6'));var config=require(_0xf2f4('0x7'));var attributes=require(_0xf2f4('0x8'));module['exports']=function(_0x272eb3,_0x2fb9a1){return _0x272eb3[_0xf2f4('0x9')](_0xf2f4('0xa'),attributes,{'tableName':_0xf2f4('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b5d5d5..6292452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed3=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash'];(function(_0x2d0111,_0x51e616){var _0x4a0d37=function(_0x34ce95){while(--_0x34ce95){_0x2d0111['push'](_0x2d0111['shift']());}};_0x4a0d37(++_0x51e616);}(_0x0ed3,0xd1));var _0x30ed=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0ed3[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x30ed('0x0'));var util=require(_0x30ed('0x1'));var moment=require(_0x30ed('0x2'));var BPromise=require(_0x30ed('0x3'));var rs=require(_0x30ed('0x4'));var fs=require('fs');var Redis=require(_0x30ed('0x5'));var db=require(_0x30ed('0x6'))['db'];var utils=require(_0x30ed('0x7'));var logger=require(_0x30ed('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x30ed('0x9'));var client=jayson[_0x30ed('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f9089,_0x2231ac,_0x531cae){return new BPromise(function(_0x86e46b,_0x335d1f){return client[_0x30ed('0xb')](_0x3f9089,_0x531cae)[_0x30ed('0xc')](function(_0x273a62){logger[_0x30ed('0xd')](_0x30ed('0xe'),_0x2231ac,_0x30ed('0xf'));logger['debug'](_0x30ed('0x10'),_0x2231ac,_0x30ed('0xf'),JSON['stringify'](_0x273a62));if(_0x273a62[_0x30ed('0x11')]){if(_0x273a62[_0x30ed('0x11')][_0x30ed('0x12')]===0x1f4){logger[_0x30ed('0x11')](_0x30ed('0xe'),_0x2231ac,_0x273a62[_0x30ed('0x11')][_0x30ed('0x13')]);return _0x335d1f(_0x273a62[_0x30ed('0x11')]['message']);}logger[_0x30ed('0x11')]('CmCustomField,\x20%s,\x20%s',_0x2231ac,_0x273a62['error'][_0x30ed('0x13')]);return _0x86e46b(_0x273a62[_0x30ed('0x11')][_0x30ed('0x13')]);}else{logger[_0x30ed('0xd')](_0x30ed('0xe'),_0x2231ac,'request\x20sent');_0x86e46b(_0x273a62[_0x30ed('0x14')][_0x30ed('0x13')]);}})['catch'](function(_0x1a81fe){logger['error'](_0x30ed('0xe'),_0x2231ac,_0x1a81fe);_0x335d1f(_0x1a81fe);});});}
\ No newline at end of file
+var _0xbaa5=['request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','CmCustomField,\x20%s,\x20%s'];(function(_0x4794cc,_0x5be6a3){var _0x3d628a=function(_0x11146c){while(--_0x11146c){_0x4794cc['push'](_0x4794cc['shift']());}};_0x3d628a(++_0x5be6a3);}(_0xbaa5,0xee));var _0x5baa=function(_0x200d8a,_0x2479be){_0x200d8a=_0x200d8a-0x0;var _0x42e380=_0xbaa5[_0x200d8a];return _0x42e380;};'use strict';var _=require(_0x5baa('0x0'));var util=require(_0x5baa('0x1'));var moment=require(_0x5baa('0x2'));var BPromise=require('bluebird');var rs=require(_0x5baa('0x3'));var fs=require('fs');var Redis=require(_0x5baa('0x4'));var db=require(_0x5baa('0x5'))['db'];var utils=require(_0x5baa('0x6'));var logger=require(_0x5baa('0x7'))('rpc');var config=require(_0x5baa('0x8'));var jayson=require(_0x5baa('0x9'));var client=jayson[_0x5baa('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1df5dd,_0x1c96e7,_0x3117ea){return new BPromise(function(_0x55c04c,_0x1ef392){return client[_0x5baa('0xb')](_0x1df5dd,_0x3117ea)[_0x5baa('0xc')](function(_0x3aabc5){logger[_0x5baa('0xd')](_0x5baa('0xe'),_0x1c96e7,_0x5baa('0xf'));logger[_0x5baa('0x10')](_0x5baa('0x11'),_0x1c96e7,'request\x20sent',JSON[_0x5baa('0x12')](_0x3aabc5));if(_0x3aabc5[_0x5baa('0x13')]){if(_0x3aabc5[_0x5baa('0x13')]['code']===0x1f4){logger[_0x5baa('0x13')](_0x5baa('0xe'),_0x1c96e7,_0x3aabc5[_0x5baa('0x13')]['message']);return _0x1ef392(_0x3aabc5[_0x5baa('0x13')][_0x5baa('0x14')]);}logger['error']('CmCustomField,\x20%s,\x20%s',_0x1c96e7,_0x3aabc5['error'][_0x5baa('0x14')]);return _0x55c04c(_0x3aabc5[_0x5baa('0x13')][_0x5baa('0x14')]);}else{logger[_0x5baa('0xd')](_0x5baa('0xe'),_0x1c96e7,_0x5baa('0xf'));_0x55c04c(_0x3aabc5[_0x5baa('0x15')][_0x5baa('0x14')]);}})[_0x5baa('0x16')](function(_0x414947){logger[_0x5baa('0x13')](_0x5baa('0xe'),_0x1c96e7,_0x414947);_0x1ef392(_0x414947);});});}
\ No newline at end of file
index ce46220..c211baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd765=['put','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./cmCustomField.controller','isAuthenticated','index','get','/:id','show','create'];(function(_0x946156,_0x4902e0){var _0x5a7488=function(_0x4ad37b){while(--_0x4ad37b){_0x946156['push'](_0x946156['shift']());}};_0x5a7488(++_0x4902e0);}(_0xd765,0xdf));var _0x5d76=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xd765[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x5d76('0x0'));var util=require(_0x5d76('0x1'));var path=require(_0x5d76('0x2'));var timeout=require(_0x5d76('0x3'));var express=require(_0x5d76('0x4'));var router=express[_0x5d76('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5d76('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5d76('0x7'));var controller=require(_0x5d76('0x8'));router['get']('/',auth[_0x5d76('0x9')](),controller[_0x5d76('0xa')]);router[_0x5d76('0xb')](_0x5d76('0xc'),auth[_0x5d76('0x9')](),controller[_0x5d76('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5d76('0xe')]);router[_0x5d76('0xf')](_0x5d76('0xc'),auth[_0x5d76('0x9')](),controller['update']);router['delete'](_0x5d76('0xc'),auth[_0x5d76('0x9')](),controller[_0x5d76('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb2cb=['../../components/auth/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x31826c,_0x1995c5){var _0x20bbd7=function(_0x2a98ab){while(--_0x2a98ab){_0x31826c['push'](_0x31826c['shift']());}};_0x20bbd7(++_0x1995c5);}(_0xb2cb,0x8a));var _0xbb2c=function(_0x1098db,_0x39ba6b){_0x1098db=_0x1098db-0x0;var _0x14f090=_0xb2cb[_0x1098db];return _0x14f090;};'use strict';var multer=require(_0xbb2c('0x0'));var util=require(_0xbb2c('0x1'));var path=require(_0xbb2c('0x2'));var timeout=require(_0xbb2c('0x3'));var express=require('express');var router=express[_0xbb2c('0x4')]();var fs_extra=require(_0xbb2c('0x5'));var auth=require(_0xbb2c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbb2c('0x7'));var controller=require(_0xbb2c('0x8'));router[_0xbb2c('0x9')]('/',auth[_0xbb2c('0xa')](),controller['index']);router[_0xbb2c('0x9')](_0xbb2c('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xbb2c('0xc')]('/',auth[_0xbb2c('0xa')](),controller[_0xbb2c('0xd')]);router[_0xbb2c('0xe')](_0xbb2c('0xb'),auth[_0xbb2c('0xa')](),controller[_0xbb2c('0xf')]);router[_0xbb2c('0x10')](_0xbb2c('0xb'),auth[_0xbb2c('0xa')](),controller[_0xbb2c('0x11')]);module['exports']=router;
\ No newline at end of file
index a1f7790..da7138e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3c2=['contactListQueue','moment','sequelize','exports','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','STRING','DATE','UNSIGNED'];(function(_0x5bd5d6,_0x3a5891){var _0x2997f1=function(_0x1484be){while(--_0x1484be){_0x5bd5d6['push'](_0x5bd5d6['shift']());}};_0x2997f1(++_0x3a5891);}(_0xd3c2,0x8d));var _0x2d3c=function(_0x40106c,_0x4c450b){_0x40106c=_0x40106c-0x0;var _0x53d2e0=_0xd3c2[_0x40106c];return _0x53d2e0;};'use strict';var moment=require(_0x2d3c('0x0'));var Sequelize=require(_0x2d3c('0x1'));module[_0x2d3c('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x2d3c('0x3')](_0x2d3c('0x4'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2d3c('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x2d3c('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2d3c('0x6')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2d3c('0x7')]},'priority':{'type':Sequelize[_0x2d3c('0x5')](0x2)[_0x2d3c('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x2d3c('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x2d3c('0x9')},'UserId':{'type':Sequelize[_0x2d3c('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x2d3c('0x5')],'unique':_0x2d3c('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2d3c('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x2d3c('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x2d3c('0x6')]},'recallmeNotifiedDate':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x0296=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','STRING','BOOLEAN','DATE'];(function(_0x3705b5,_0x2fc14a){var _0x5b8d47=function(_0x27c2f3){while(--_0x27c2f3){_0x3705b5['push'](_0x3705b5['shift']());}};_0x5b8d47(++_0x2fc14a);}(_0x0296,0x1ef));var _0x6029=function(_0x1a80db,_0x39be26){_0x1a80db=_0x1a80db-0x0;var _0x143503=_0x0296[_0x1a80db];return _0x143503;};'use strict';var moment=require(_0x6029('0x0'));var Sequelize=require(_0x6029('0x1'));module['exports']={'phone':{'type':Sequelize[_0x6029('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x6029('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x6029('0x4')],'defaultValue':moment()[_0x6029('0x5')](_0x6029('0x6'))},'countbusyretry':{'type':Sequelize[_0x6029('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6029('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6029('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6029('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6029('0x4')]},'priority':{'type':Sequelize[_0x6029('0x7')](0x2)[_0x6029('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x6029('0x9')},'ListId':{'type':Sequelize[_0x6029('0x7')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x6029('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x6029('0x7')],'unique':_0x6029('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6029('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6029('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6029('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x6029('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x6029('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 03f5a6e..ee9d830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd59=['updatedAt','membername','user','UserId','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','value','direction','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','Queue','transaction','recallme','List','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','timezones','push','utcOffset','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','status','json','offset','limit','undefined','count','set','update','then','sendStatus','error','stack','name','send','CmHopper','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','concat','$and','$gt','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$iLike','$overlap','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','omit','dataValues','createdAt'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xcd59,0x14b));var _0x9cd5=function(_0x247ca4,_0x1e7ec5){_0x247ca4=_0x247ca4-0x0;var _0x432c92=_0xcd59[_0x247ca4];return _0x432c92;};'use strict';var moment=require(_0x9cd5('0x0'));var _=require(_0x9cd5('0x1'));var qs=require(_0x9cd5('0x2'));var logger=require(_0x9cd5('0x3'))(_0x9cd5('0x4'));var shared=require(_0x9cd5('0x5'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x2d392c,_0x191236){_0x191236=_0x191236||0xc8;return function(_0xf96efa){if(_0xf96efa){return _0x2d392c[_0x9cd5('0x6')](_0x191236)[_0x9cd5('0x7')](_0xf96efa);}};}function respondWithFilteredResult(_0x2db192,_0x46277c){return function(_0x2cd19a){if(_0x2cd19a){var _0x214256=typeof _0x46277c[_0x9cd5('0x8')]==='undefined'&&typeof _0x46277c[_0x9cd5('0x9')]===_0x9cd5('0xa');var _0x37b97f=_0x2cd19a[_0x9cd5('0xb')];var _0x162cb0=_0x214256?0x0:_0x46277c[_0x9cd5('0x8')];var _0x46bbca=_0x214256?_0x2cd19a[_0x9cd5('0xb')]:_0x46277c['offset']+_0x46277c[_0x9cd5('0x9')];var _0x16563e;if(_0x46bbca>=_0x37b97f){_0x46bbca=_0x37b97f;_0x16563e=0xc8;}else{_0x16563e=0xce;}_0x2db192[_0x9cd5('0x6')](_0x16563e);return _0x2db192[_0x9cd5('0xc')]('Content-Range',_0x162cb0+'-'+_0x46bbca+'/'+_0x37b97f)['json'](_0x2cd19a);}return null;};}function saveUpdates(_0x2c9cf1,_0x172e29){return function(_0x44518d){if(_0x44518d){return _0x44518d[_0x9cd5('0xd')](_0x2c9cf1)[_0x9cd5('0xe')](function(_0x2a1606){return _0x2a1606;});}return null;};}function handleEntityNotFound(_0x52698b,_0x15b639){return function(_0x1445c0){if(!_0x1445c0){_0x52698b[_0x9cd5('0xf')](0x194);}return _0x1445c0;};}function handleError(_0x4b9ac8,_0x541cb8){_0x541cb8=_0x541cb8||0x1f4;return function(_0x5c4f3d){logger[_0x9cd5('0x10')](_0x5c4f3d[_0x9cd5('0x11')]);if(_0x5c4f3d['name']){delete _0x5c4f3d[_0x9cd5('0x12')];}_0x4b9ac8[_0x9cd5('0x6')](_0x541cb8)[_0x9cd5('0x13')](_0x5c4f3d);};}exports['index']=function(_0x1e921c,_0x2d1863){var _0x3a364f={},_0x3a6f01={},_0x21da57={'count':0x0,'rows':[]};var _0x1ff788=_['map'](db[_0x9cd5('0x14')][_0x9cd5('0x15')],function(_0x3661b0){return{'name':_0x3661b0[_0x9cd5('0x16')],'type':_0x3661b0[_0x9cd5('0x17')]['key']};});_0x3a6f01[_0x9cd5('0x18')]=_[_0x9cd5('0x19')](_0x1ff788,_0x9cd5('0x12'));_0x3a6f01[_0x9cd5('0x1a')]=_[_0x9cd5('0x1b')](_0x1e921c[_0x9cd5('0x1a')]);_0x3a6f01[_0x9cd5('0x1c')]=_[_0x9cd5('0x1d')](_0x3a6f01[_0x9cd5('0x18')],_0x3a6f01['query']);_0x3a6f01[_0x9cd5('0x1c')]=_[_0x9cd5('0x1e')](_0x3a6f01[_0x9cd5('0x1c')],[_0x9cd5('0x1f'),'$or',_0x9cd5('0x20'),_0x9cd5('0x21'),_0x9cd5('0x22'),_0x9cd5('0x23'),_0x9cd5('0x24'),_0x9cd5('0x25'),_0x9cd5('0x26'),'$between',_0x9cd5('0x27'),_0x9cd5('0x28'),_0x9cd5('0x29'),'$like','$notLike',_0x9cd5('0x2a'),'$notILike','$like',_0x9cd5('0x2b'),_0x9cd5('0x2c'),_0x9cd5('0x2d'),'$any']);_0x3a364f[_0x9cd5('0x2e')]=_[_0x9cd5('0x1d')](_0x3a6f01[_0x9cd5('0x18')],qs[_0x9cd5('0x2f')](_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x2f')]));_0x3a364f[_0x9cd5('0x2e')]=_0x3a364f[_0x9cd5('0x2e')][_0x9cd5('0x30')]?_0x3a364f[_0x9cd5('0x2e')]:_0x3a6f01[_0x9cd5('0x18')];if(!_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x31')](_0x9cd5('0x32'))){_0x3a364f['limit']=qs[_0x9cd5('0x9')](_0x1e921c[_0x9cd5('0x1a')]['limit']);_0x3a364f['offset']=qs[_0x9cd5('0x8')](_0x1e921c[_0x9cd5('0x1a')]['offset']);}_0x3a364f[_0x9cd5('0x33')]=qs['sort'](_0x1e921c['query'][_0x9cd5('0x34')]);_0x3a364f[_0x9cd5('0x35')]=qs[_0x9cd5('0x1c')](_[_0x9cd5('0x36')](_0x1e921c['query'],_0x3a6f01[_0x9cd5('0x1c')]),_0x1ff788);if(_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x37')]){_0x3a364f['where']=_[_0x9cd5('0x38')](_0x3a364f[_0x9cd5('0x35')],{'$or':_[_0x9cd5('0x19')](_0x1ff788,function(_0x435acb){if(_0x435acb[_0x9cd5('0x17')]!==_0x9cd5('0x39')){var _0x320508={};_0x320508[_0x435acb[_0x9cd5('0x12')]]={'$like':'%'+_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x37')]+'%'};return _0x320508;}})});}_0x3a364f=_[_0x9cd5('0x38')]({},_0x3a364f,_0x1e921c['options']);var _0x32e253={'where':_0x3a364f['where']};return db['CmHopper'][_0x9cd5('0xb')](_0x32e253)[_0x9cd5('0xe')](function(_0x46b974){_0x21da57[_0x9cd5('0xb')]=_0x46b974;if(_0x1e921c['query'][_0x9cd5('0x3a')]){_0x3a364f[_0x9cd5('0x3b')]=[{'all':!![]}];}return db[_0x9cd5('0x14')][_0x9cd5('0x3c')](_0x3a364f);})['then'](function(_0x36e22c){_0x21da57[_0x9cd5('0x3d')]=_0x36e22c;return _0x21da57;})[_0x9cd5('0xe')](respondWithFilteredResult(_0x2d1863,_0x3a364f))[_0x9cd5('0x3e')](handleError(_0x2d1863,null));};exports[_0x9cd5('0x3f')]=function(_0x16e6b3,_0x4a446c){var _0x26cf61={'raw':!![],'where':{'id':_0x16e6b3[_0x9cd5('0x40')]['id']}},_0x2cbc5f={};_0x2cbc5f[_0x9cd5('0x18')]=_[_0x9cd5('0x1b')](db[_0x9cd5('0x14')][_0x9cd5('0x15')]);_0x2cbc5f[_0x9cd5('0x1a')]=_[_0x9cd5('0x1b')](_0x16e6b3[_0x9cd5('0x1a')]);_0x2cbc5f[_0x9cd5('0x1c')]=_[_0x9cd5('0x1d')](_0x2cbc5f[_0x9cd5('0x18')],_0x2cbc5f[_0x9cd5('0x1a')]);_0x26cf61[_0x9cd5('0x2e')]=_[_0x9cd5('0x1d')](_0x2cbc5f[_0x9cd5('0x18')],qs[_0x9cd5('0x2f')](_0x16e6b3['query'][_0x9cd5('0x2f')]));_0x26cf61['attributes']=_0x26cf61[_0x9cd5('0x2e')][_0x9cd5('0x30')]?_0x26cf61[_0x9cd5('0x2e')]:_0x2cbc5f[_0x9cd5('0x18')];if(_0x16e6b3[_0x9cd5('0x1a')]['includeAll']){_0x26cf61[_0x9cd5('0x3b')]=[{'all':!![]}];}_0x26cf61=_[_0x9cd5('0x38')]({},_0x26cf61,_0x16e6b3[_0x9cd5('0x41')]);return db['CmHopper'][_0x9cd5('0x42')](_0x26cf61)[_0x9cd5('0xe')](handleEntityNotFound(_0x4a446c,null))[_0x9cd5('0xe')](respondWithResult(_0x4a446c,null))[_0x9cd5('0x3e')](handleError(_0x4a446c,null));};exports['create']=function(_0x1fd886,_0x44e290){return db[_0x9cd5('0x14')][_0x9cd5('0x43')](_0x1fd886[_0x9cd5('0x44')],{})[_0x9cd5('0xe')](respondWithResult(_0x44e290,0xc9))[_0x9cd5('0x3e')](handleError(_0x44e290,null));};exports[_0x9cd5('0xd')]=function(_0x1e06be,_0x200d64){if(_0x1e06be[_0x9cd5('0x44')]['id']){delete _0x1e06be[_0x9cd5('0x44')]['id'];}return db[_0x9cd5('0x14')][_0x9cd5('0x42')]({'where':{'id':_0x1e06be[_0x9cd5('0x40')]['id']}})[_0x9cd5('0xe')](handleEntityNotFound(_0x200d64,null))[_0x9cd5('0xe')](saveUpdates(_0x1e06be[_0x9cd5('0x44')],null))['then'](respondWithResult(_0x200d64,null))[_0x9cd5('0x3e')](handleError(_0x200d64,null));};exports[_0x9cd5('0x45')]=function(_0x3fead7,_0x2058a6){return db['CmHopper'][_0x9cd5('0x45')]()[_0x9cd5('0xe')](respondWithResult(_0x2058a6,null))['catch'](handleError(_0x2058a6,null));};exports[_0x9cd5('0x46')]=function(_0x155652,_0x152b17){var _0x26b4c8;var _0x16afe8=_0x155652[_0x9cd5('0x40')]['id'];return db[_0x9cd5('0x14')][_0x9cd5('0x42')]({'where':{'id':_0x155652['params']['id']}})['then'](handleEntityNotFound(_0x152b17,null))[_0x9cd5('0xe')](function(_0x96b49a){if(_0x96b49a){return _0x96b49a[_0x9cd5('0x46')]()[_0x9cd5('0xe')](function(_0x5a933a){return _0x5a933a;});}})[_0x9cd5('0xe')](function(_0x55ac13){_0x26b4c8=_0x55ac13;if(_0x55ac13){if(_0x55ac13['VoiceQueueId']||_0x55ac13[_0x9cd5('0x47')]){return db[_0x55ac13[_0x9cd5('0x48')]?_0x9cd5('0x49'):'Campaign'][_0x9cd5('0x42')]({'where':{'id':_0x55ac13[_0x9cd5('0x48')]?_0x55ac13[_0x9cd5('0x48')]:_0x55ac13[_0x9cd5('0x47')]},'attributes':['id',_0x9cd5('0x12')],'raw':!![]});}}})[_0x9cd5('0xe')](function(_0x53e7dd){var _0x5b92d7={};if(_0x53e7dd){_[_0x9cd5('0x38')](_0x5b92d7,_[_0x9cd5('0x4a')](_0x26b4c8[_0x9cd5('0x4b')],[_0x9cd5('0x4c'),_0x9cd5('0x4d'),'id']));_0x5b92d7['state']=0x15;_0x5b92d7['statedesc']='deleted';_0x5b92d7['campaign']=_0x53e7dd[_0x9cd5('0x12')];_0x5b92d7[_0x9cd5('0x4e')]=_0x155652[_0x9cd5('0x4f')][_0x9cd5('0x12')];_0x5b92d7[_0x9cd5('0x50')]=_0x155652[_0x9cd5('0x4f')]['id'];_0x5b92d7[_0x9cd5('0x51')]=!![];_0x5b92d7[_0x9cd5('0x52')]=moment()[_0x9cd5('0x53')](_0x9cd5('0x54'));_0x5b92d7[_0x9cd5('0x55')]=_0x26b4c8[_0x9cd5('0x56')];_0x5b92d7[_0x9cd5('0x57')]=_0x26b4c8[_0x9cd5('0x48')]?'queue':_0x9cd5('0x58');return db[_0x9cd5('0x59')]['find']({'where':{'id':_0x5b92d7[_0x9cd5('0x5a')]},'attributes':[_0x9cd5('0x5b'),_0x9cd5('0x5c')]})[_0x9cd5('0xe')](function(_0x1af451){if(!_[_0x9cd5('0x5d')](_0x152b17)&&!_[_0x9cd5('0x5d')](_0x1af451['firstName'])){_0x5b92d7['calleridname']=_0x1af451[_0x9cd5('0x5b')];if(!_[_0x9cd5('0x5d')](_0x1af451[_0x9cd5('0x5c')])){_0x5b92d7[_0x9cd5('0x5e')]+='\x20'+_0x1af451[_0x9cd5('0x5c')];}}})[_0x9cd5('0x5f')](function(){return db[_0x9cd5('0x60')][_0x9cd5('0x43')](_0x5b92d7);});}})[_0x9cd5('0xe')](function(_0x47974c){return db[_0x9cd5('0x61')][_0x9cd5('0x46')]({'where':{'CmHopperId':_0x16afe8}});})[_0x9cd5('0xe')](function(){return _0x152b17[_0x9cd5('0x6')](0xcc)['end']();})['catch'](handleError(_0x152b17,null));};exports[_0x9cd5('0x62')]=function(_0x94de58,_0x3cb4d2){var _0x5c6d4d=[];return db[_0x9cd5('0x59')]['describe']()[_0x9cd5('0xe')](function(_0x11a271){_0x5c6d4d=_[_0x9cd5('0x1b')](_0x11a271);return _0x94de58['user'][_0x9cd5('0x63')]({'where':{'type':_0x9cd5('0x64'),'dialActive':!![],'dialMethod':_0x9cd5('0x65')},'attributes':['id',_0x9cd5('0x66'),_0x9cd5('0x67')],'raw':!![]});})['then'](function(_0x2efe1b){if(_0x2efe1b&&_0x2efe1b['length']){return db[_0x9cd5('0x68')]['transaction'](function(_0x7cf549){var _0x431cb7={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9cd5('0x53')](_0x9cd5('0x54'))},'VoiceQueueId':{'$in':_['map'](_0x2efe1b,'id')},'$or':[{'UserId':null},{'UserId':_0x94de58[_0x9cd5('0x4f')]['id']}]};var _0x2627ec={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2efe1b)[_0x9cd5('0x37')]([_0x9cd5('0x67'),0x0])['map']('id')[_0x9cd5('0x69')]()},'$or':[{'UserId':null},{'UserId':_0x94de58[_0x9cd5('0x4f')]['id']}]};var _0x59074e={'$or':[_0x431cb7,_0x2627ec]};var _0x2feaf2=[];if(_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6a')]&&_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6a')]==='prev'){if(!_[_0x9cd5('0x6b')](_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6c')])){_0x59074e['id']={'$in':_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6c')]};}_0x2feaf2=[[_0x9cd5('0x6d'),_0x9cd5('0x6e')],[_0x9cd5('0x6f'),_0x2efe1b[0x0][_0x9cd5('0x66')]==='ASC'?_0x9cd5('0x70'):_0x9cd5('0x6e')],db['sequelize']['literal'](_0x9cd5('0x71')),['id',_0x9cd5('0x70')]];}else{if(!_['isEmpty'](_0x94de58['body'][_0x9cd5('0x6c')])){_0x59074e['id']={'$notIn':_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6c')]};}_0x2feaf2=[[_0x9cd5('0x6d'),'DESC'],['scheduledAt',_0x2efe1b[0x0][_0x9cd5('0x66')]],db[_0x9cd5('0x68')][_0x9cd5('0x72')](_0x9cd5('0x73')),['id',_0x9cd5('0x6e')]];}return db[_0x9cd5('0x14')][_0x9cd5('0x74')]({'attributes':['id',_0x9cd5('0x75'),_0x9cd5('0x56'),'recallme'],'where':_0x59074e,'order':_0x2feaf2,'transaction':_0x7cf549,'lock':_0x7cf549[_0x9cd5('0x76')]['UPDATE'],'include':[{'model':db[_0x9cd5('0x59')],'as':_0x9cd5('0x77'),'attributes':_0x5c6d4d,'include':[{'model':db[_0x9cd5('0x78')],'as':_0x9cd5('0x79'),'attributes':['id','name']}]},{'model':db[_0x9cd5('0x7a')],'as':'List','attributes':['id',_0x9cd5('0x12')]},{'model':db[_0x9cd5('0x49')],'as':_0x9cd5('0x7b'),'attributes':['id',_0x9cd5('0x12'),'dialActive']}]})[_0x9cd5('0xe')](function(_0x31f8da){if(_0x31f8da){return _0x31f8da['update']({'UserId':_0x94de58[_0x9cd5('0x4f')]['id']},{'transaction':_0x7cf549});}});});}})['then'](handleEntityNotFound(_0x3cb4d2,null))[_0x9cd5('0xe')](respondWithResult(_0x3cb4d2,null))['catch'](handleError(_0x3cb4d2,null));};exports['getPreviewRecall']=function(_0x3297fa,_0x30830f,_0x41f786){var _0x1a9cf3=[];var _0x2c7758=_0x3297fa[_0x9cd5('0x40')]['id'];var _0x48362b=_0x3297fa[_0x9cd5('0x4f')]['id'];return db[_0x9cd5('0x59')][_0x9cd5('0x45')]()['then'](function(_0x563fa5){_0x1a9cf3=_[_0x9cd5('0x1b')](_0x563fa5);return db[_0x9cd5('0x68')][_0x9cd5('0x7c')](function(_0x323ff3){const _0x806e1c={'id':_0x2c7758};return db[_0x9cd5('0x14')][_0x9cd5('0x74')]({'attributes':['id',_0x9cd5('0x75'),_0x9cd5('0x7d')],'where':_0x806e1c,'transaction':_0x323ff3,'lock':_0x323ff3[_0x9cd5('0x76')]['UPDATE'],'include':[{'model':db[_0x9cd5('0x59')],'as':'Contact','attributes':_0x1a9cf3,'include':[{'model':db[_0x9cd5('0x78')],'as':_0x9cd5('0x79'),'attributes':['id',_0x9cd5('0x12')]}]},{'model':db['CmList'],'as':_0x9cd5('0x7e'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x9cd5('0x7b'),'attributes':['id',_0x9cd5('0x12'),_0x9cd5('0x7f')]}]})[_0x9cd5('0xe')](function(_0x1e922c){if(_0x1e922c){return _0x1e922c[_0x9cd5('0xd')]({'UserId':_0x48362b},{'transaction':_0x323ff3});}});});})['then'](handleEntityNotFound(_0x30830f,null))[_0x9cd5('0xe')](respondWithResult(_0x30830f,null))[_0x9cd5('0x3e')](handleError(_0x30830f,null));};exports[_0x9cd5('0x80')]=function(_0x4540ad,_0x48bfca){return _0x4540ad[_0x9cd5('0x4f')][_0x9cd5('0x63')]({'where':{'type':_0x9cd5('0x64'),'dialActive':!![],'dialMethod':_0x9cd5('0x65')},'attributes':['id'],'raw':!![]})[_0x9cd5('0xe')](function(_0x5a370c){if(_0x5a370c&&_0x5a370c[_0x9cd5('0x30')]){return db[_0x9cd5('0x14')][_0x9cd5('0xb')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9cd5('0x53')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x9cd5('0x19')](_0x5a370c,'id')},'$or':[{'UserId':null},{'UserId':_0x4540ad[_0x9cd5('0x4f')]['id']}]}});}return 0x0;})[_0x9cd5('0xe')](function(_0x316d39){if(!_[_0x9cd5('0x5d')](_0x316d39)&&_[_0x9cd5('0x81')](_0x316d39)){return _0x48bfca['status'](0xc8)[_0x9cd5('0x7')]({'contacts':_0x316d39});}else{logger['error'](_0x9cd5('0x82'),'getOpenContacts',0x194,_0x9cd5('0x83'));_0x48bfca[_0x9cd5('0xf')](0x194);}})[_0x9cd5('0x3e')](handleError(_0x48bfca,null));};exports['getTimezones']=function(_0x2c16f3,_0x582e86){var _0x52b0ae=shared[_0x9cd5('0x84')];var _0x337103=[];_[_0x9cd5('0x19')](_0x52b0ae,function(_0x516805){_0x337103[_0x9cd5('0x85')]({'id':_0x516805[_0x9cd5('0x12')],'name':_0x516805[_0x9cd5('0x12')],'utcOffset':_0x516805[_0x9cd5('0x86')]});});return _0x582e86[_0x9cd5('0x6')](0xc8)['json']({'tz':_0x337103});};exports[_0x9cd5('0x87')]=function(_0x24f895,_0x5f2ed6){var _0x40f0eb=shared['timezones'];var _0x382791={};if(!_[_0x9cd5('0x5d')](_0x40f0eb[_0x24f895[_0x9cd5('0x44')]['id']]))_0x382791=_0x40f0eb[_0x24f895['body']['id']];return _0x5f2ed6[_0x9cd5('0x6')](0xc8)[_0x9cd5('0x7')](_0x382791);};
\ No newline at end of file
+var _0x46ed=['catch','show','params','find','create','body','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','Campaign','createdAt','state','statedesc','deleted','campaign','membername','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','keys','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','transaction','dialPreviewAutoRecallMe','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','sequelize','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Company','CmList','List','Queue','dialActive','getPreviewRecall','LOCK','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','utcOffset','getTimezone','moment','lodash','../../config/logger','api','../../config/environment','status','json','offset','undefined','limit','count','set','update','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','filters','intersection','concat','$and','$gt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x27ed41,_0xb780a1){var _0x507934=function(_0x1f09ab){while(--_0x1f09ab){_0x27ed41['push'](_0x27ed41['shift']());}};_0x507934(++_0xb780a1);}(_0x46ed,0x168));var _0xd46e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x46ed[_0x29d94e];return _0x106237;};'use strict';var moment=require(_0xd46e('0x0'));var _=require(_0xd46e('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xd46e('0x2'))(_0xd46e('0x3'));var shared=require(_0xd46e('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x2e6b84,_0x4518b8){_0x4518b8=_0x4518b8||0xc8;return function(_0x54ef98){if(_0x54ef98){return _0x2e6b84[_0xd46e('0x5')](_0x4518b8)[_0xd46e('0x6')](_0x54ef98);}};}function respondWithFilteredResult(_0x160bcf,_0x25cf78){return function(_0x45e680){if(_0x45e680){var _0x855f24=typeof _0x25cf78[_0xd46e('0x7')]===_0xd46e('0x8')&&typeof _0x25cf78[_0xd46e('0x9')]===_0xd46e('0x8');var _0x3af67d=_0x45e680['count'];var _0x7b2d69=_0x855f24?0x0:_0x25cf78[_0xd46e('0x7')];var _0x50ccd3=_0x855f24?_0x45e680[_0xd46e('0xa')]:_0x25cf78[_0xd46e('0x7')]+_0x25cf78[_0xd46e('0x9')];var _0x443000;if(_0x50ccd3>=_0x3af67d){_0x50ccd3=_0x3af67d;_0x443000=0xc8;}else{_0x443000=0xce;}_0x160bcf[_0xd46e('0x5')](_0x443000);return _0x160bcf[_0xd46e('0xb')]('Content-Range',_0x7b2d69+'-'+_0x50ccd3+'/'+_0x3af67d)[_0xd46e('0x6')](_0x45e680);}return null;};}function saveUpdates(_0x5bc1da,_0x48550b){return function(_0xf3048c){if(_0xf3048c){return _0xf3048c[_0xd46e('0xc')](_0x5bc1da)['then'](function(_0x5a3076){return _0x5a3076;});}return null;};}function handleEntityNotFound(_0xacd799,_0x4688ae){return function(_0x1e9aae){if(!_0x1e9aae){_0xacd799[_0xd46e('0xd')](0x194);}return _0x1e9aae;};}function handleError(_0x50c7c3,_0x3b6d25){_0x3b6d25=_0x3b6d25||0x1f4;return function(_0x44a620){logger[_0xd46e('0xe')](_0x44a620[_0xd46e('0xf')]);if(_0x44a620[_0xd46e('0x10')]){delete _0x44a620['name'];}_0x50c7c3[_0xd46e('0x5')](_0x3b6d25)[_0xd46e('0x11')](_0x44a620);};}exports[_0xd46e('0x12')]=function(_0x551358,_0x5ddd04){var _0x2e8f6d={},_0x1bd574={},_0x488690={'count':0x0,'rows':[]};var _0x4fd1f2=_[_0xd46e('0x13')](db[_0xd46e('0x14')][_0xd46e('0x15')],function(_0x2273c5){return{'name':_0x2273c5[_0xd46e('0x16')],'type':_0x2273c5[_0xd46e('0x17')][_0xd46e('0x18')]};});_0x1bd574[_0xd46e('0x19')]=_[_0xd46e('0x13')](_0x4fd1f2,_0xd46e('0x10'));_0x1bd574[_0xd46e('0x1a')]=_['keys'](_0x551358[_0xd46e('0x1a')]);_0x1bd574[_0xd46e('0x1b')]=_[_0xd46e('0x1c')](_0x1bd574[_0xd46e('0x19')],_0x1bd574[_0xd46e('0x1a')]);_0x1bd574[_0xd46e('0x1b')]=_[_0xd46e('0x1d')](_0x1bd574[_0xd46e('0x1b')],[_0xd46e('0x1e'),'$or',_0xd46e('0x1f'),'$gte','$lt',_0xd46e('0x20'),_0xd46e('0x21'),_0xd46e('0x22'),_0xd46e('0x23'),_0xd46e('0x24'),_0xd46e('0x25'),_0xd46e('0x26'),'$notIn',_0xd46e('0x27'),_0xd46e('0x28'),_0xd46e('0x29'),_0xd46e('0x2a'),_0xd46e('0x27'),_0xd46e('0x2b'),'$contains',_0xd46e('0x2c'),_0xd46e('0x2d')]);_0x2e8f6d[_0xd46e('0x2e')]=_[_0xd46e('0x1c')](_0x1bd574[_0xd46e('0x19')],qs[_0xd46e('0x2f')](_0x551358[_0xd46e('0x1a')][_0xd46e('0x2f')]));_0x2e8f6d[_0xd46e('0x2e')]=_0x2e8f6d[_0xd46e('0x2e')][_0xd46e('0x30')]?_0x2e8f6d[_0xd46e('0x2e')]:_0x1bd574[_0xd46e('0x19')];if(!_0x551358['query'][_0xd46e('0x31')](_0xd46e('0x32'))){_0x2e8f6d[_0xd46e('0x9')]=qs[_0xd46e('0x9')](_0x551358['query'][_0xd46e('0x9')]);_0x2e8f6d[_0xd46e('0x7')]=qs['offset'](_0x551358[_0xd46e('0x1a')][_0xd46e('0x7')]);}_0x2e8f6d['order']=qs[_0xd46e('0x33')](_0x551358[_0xd46e('0x1a')][_0xd46e('0x33')]);_0x2e8f6d['where']=qs['filters'](_[_0xd46e('0x34')](_0x551358[_0xd46e('0x1a')],_0x1bd574[_0xd46e('0x1b')]),_0x4fd1f2);if(_0x551358[_0xd46e('0x1a')][_0xd46e('0x35')]){_0x2e8f6d[_0xd46e('0x36')]=_[_0xd46e('0x37')](_0x2e8f6d[_0xd46e('0x36')],{'$or':_['map'](_0x4fd1f2,function(_0x4fb62e){if(_0x4fb62e[_0xd46e('0x17')]!==_0xd46e('0x38')){var _0x83aec1={};_0x83aec1[_0x4fb62e[_0xd46e('0x10')]]={'$like':'%'+_0x551358[_0xd46e('0x1a')][_0xd46e('0x35')]+'%'};return _0x83aec1;}})});}_0x2e8f6d=_['merge']({},_0x2e8f6d,_0x551358[_0xd46e('0x39')]);var _0x357212={'where':_0x2e8f6d['where']};return db[_0xd46e('0x14')][_0xd46e('0xa')](_0x357212)[_0xd46e('0x3a')](function(_0x3b6e67){_0x488690['count']=_0x3b6e67;if(_0x551358[_0xd46e('0x1a')][_0xd46e('0x3b')]){_0x2e8f6d[_0xd46e('0x3c')]=[{'all':!![]}];}return db[_0xd46e('0x14')][_0xd46e('0x3d')](_0x2e8f6d);})[_0xd46e('0x3a')](function(_0x220c57){_0x488690[_0xd46e('0x3e')]=_0x220c57;return _0x488690;})['then'](respondWithFilteredResult(_0x5ddd04,_0x2e8f6d))[_0xd46e('0x3f')](handleError(_0x5ddd04,null));};exports[_0xd46e('0x40')]=function(_0xc83ea1,_0x25657a){var _0x165ce8={'raw':!![],'where':{'id':_0xc83ea1[_0xd46e('0x41')]['id']}},_0x56f99c={};_0x56f99c['model']=_['keys'](db['CmHopper']['rawAttributes']);_0x56f99c[_0xd46e('0x1a')]=_['keys'](_0xc83ea1[_0xd46e('0x1a')]);_0x56f99c[_0xd46e('0x1b')]=_['intersection'](_0x56f99c[_0xd46e('0x19')],_0x56f99c[_0xd46e('0x1a')]);_0x165ce8[_0xd46e('0x2e')]=_[_0xd46e('0x1c')](_0x56f99c[_0xd46e('0x19')],qs[_0xd46e('0x2f')](_0xc83ea1[_0xd46e('0x1a')][_0xd46e('0x2f')]));_0x165ce8[_0xd46e('0x2e')]=_0x165ce8[_0xd46e('0x2e')][_0xd46e('0x30')]?_0x165ce8['attributes']:_0x56f99c['model'];if(_0xc83ea1['query'][_0xd46e('0x3b')]){_0x165ce8['include']=[{'all':!![]}];}_0x165ce8=_[_0xd46e('0x37')]({},_0x165ce8,_0xc83ea1[_0xd46e('0x39')]);return db[_0xd46e('0x14')][_0xd46e('0x42')](_0x165ce8)[_0xd46e('0x3a')](handleEntityNotFound(_0x25657a,null))[_0xd46e('0x3a')](respondWithResult(_0x25657a,null))[_0xd46e('0x3f')](handleError(_0x25657a,null));};exports[_0xd46e('0x43')]=function(_0x4cd3d0,_0x324bd0){return db['CmHopper'][_0xd46e('0x43')](_0x4cd3d0[_0xd46e('0x44')],{})[_0xd46e('0x3a')](respondWithResult(_0x324bd0,0xc9))[_0xd46e('0x3f')](handleError(_0x324bd0,null));};exports[_0xd46e('0xc')]=function(_0x5d65ca,_0x384b6e){if(_0x5d65ca[_0xd46e('0x44')]['id']){delete _0x5d65ca[_0xd46e('0x44')]['id'];}return db[_0xd46e('0x14')][_0xd46e('0x42')]({'where':{'id':_0x5d65ca['params']['id']}})[_0xd46e('0x3a')](handleEntityNotFound(_0x384b6e,null))[_0xd46e('0x3a')](saveUpdates(_0x5d65ca[_0xd46e('0x44')],null))[_0xd46e('0x3a')](respondWithResult(_0x384b6e,null))[_0xd46e('0x3f')](handleError(_0x384b6e,null));};exports['describe']=function(_0x341d9f,_0x3ea9e6){return db[_0xd46e('0x14')][_0xd46e('0x45')]()[_0xd46e('0x3a')](respondWithResult(_0x3ea9e6,null))[_0xd46e('0x3f')](handleError(_0x3ea9e6,null));};exports[_0xd46e('0x46')]=function(_0x440dcc,_0x5188f6){var _0xf9dab;var _0x71a8dc=_0x440dcc[_0xd46e('0x41')]['id'];return db[_0xd46e('0x14')][_0xd46e('0x42')]({'where':{'id':_0x440dcc['params']['id']}})['then'](handleEntityNotFound(_0x5188f6,null))[_0xd46e('0x3a')](function(_0x38f989){if(_0x38f989){return _0x38f989[_0xd46e('0x46')]()['then'](function(_0x479711){return _0x479711;});}})[_0xd46e('0x3a')](function(_0x9d8638){_0xf9dab=_0x9d8638;if(_0x9d8638){if(_0x9d8638['VoiceQueueId']||_0x9d8638[_0xd46e('0x47')]){return db[_0x9d8638[_0xd46e('0x48')]?_0xd46e('0x49'):_0xd46e('0x4a')][_0xd46e('0x42')]({'where':{'id':_0x9d8638[_0xd46e('0x48')]?_0x9d8638[_0xd46e('0x48')]:_0x9d8638[_0xd46e('0x47')]},'attributes':['id','name'],'raw':!![]});}}})[_0xd46e('0x3a')](function(_0x259a1d){var _0x1c7f92={};if(_0x259a1d){_[_0xd46e('0x37')](_0x1c7f92,_['omit'](_0xf9dab['dataValues'],[_0xd46e('0x4b'),'updatedAt','id']));_0x1c7f92[_0xd46e('0x4c')]=0x15;_0x1c7f92[_0xd46e('0x4d')]=_0xd46e('0x4e');_0x1c7f92[_0xd46e('0x4f')]=_0x259a1d[_0xd46e('0x10')];_0x1c7f92[_0xd46e('0x50')]=_0x440dcc['user'][_0xd46e('0x10')];_0x1c7f92[_0xd46e('0x51')]=_0x440dcc[_0xd46e('0x52')]['id'];_0x1c7f92['deleted']=!![];_0x1c7f92[_0xd46e('0x53')]=moment()[_0xd46e('0x54')](_0xd46e('0x55'));_0x1c7f92[_0xd46e('0x56')]=_0xf9dab[_0xd46e('0x57')];_0x1c7f92[_0xd46e('0x58')]=_0xf9dab[_0xd46e('0x48')]?_0xd46e('0x59'):_0xd46e('0x5a');return db[_0xd46e('0x5b')][_0xd46e('0x42')]({'where':{'id':_0x1c7f92[_0xd46e('0x5c')]},'attributes':[_0xd46e('0x5d'),_0xd46e('0x5e')]})['then'](function(_0x3ec709){if(!_[_0xd46e('0x5f')](_0x5188f6)&&!_[_0xd46e('0x5f')](_0x3ec709[_0xd46e('0x5d')])){_0x1c7f92['calleridname']=_0x3ec709[_0xd46e('0x5d')];if(!_[_0xd46e('0x5f')](_0x3ec709[_0xd46e('0x5e')])){_0x1c7f92[_0xd46e('0x60')]+='\x20'+_0x3ec709['lastName'];}}})[_0xd46e('0x61')](function(){return db[_0xd46e('0x62')]['create'](_0x1c7f92);});}})['then'](function(_0x45e102){return db[_0xd46e('0x63')][_0xd46e('0x46')]({'where':{'CmHopperId':_0x71a8dc}});})['then'](function(){return _0x5188f6['status'](0xcc)[_0xd46e('0x64')]();})[_0xd46e('0x3f')](handleError(_0x5188f6,null));};exports[_0xd46e('0x65')]=function(_0x263425,_0x2dacb4){var _0x2f9fcb=[];return db[_0xd46e('0x5b')][_0xd46e('0x45')]()[_0xd46e('0x3a')](function(_0x2a172c){_0x2f9fcb=_[_0xd46e('0x66')](_0x2a172c);return _0x263425[_0xd46e('0x52')][_0xd46e('0x67')]({'where':{'type':_0xd46e('0x68'),'dialActive':!![],'dialMethod':_0xd46e('0x69')},'attributes':['id',_0xd46e('0x6a'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0xd46e('0x3a')](function(_0x1a3771){if(_0x1a3771&&_0x1a3771[_0xd46e('0x30')]){return db['sequelize'][_0xd46e('0x6b')](function(_0x313c7e){var _0x4dec29={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd46e('0x54')](_0xd46e('0x55'))},'VoiceQueueId':{'$in':_[_0xd46e('0x13')](_0x1a3771,'id')},'$or':[{'UserId':null},{'UserId':_0x263425['user']['id']}]};var _0x41ab84={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1a3771)[_0xd46e('0x35')]([_0xd46e('0x6c'),0x0])['map']('id')[_0xd46e('0x6d')]()},'$or':[{'UserId':null},{'UserId':_0x263425['user']['id']}]};var _0x32eed0={'$or':[_0x4dec29,_0x41ab84]};var _0x148187=[];if(_0x263425[_0xd46e('0x44')]['direction']&&_0x263425[_0xd46e('0x44')][_0xd46e('0x6e')]===_0xd46e('0x6f')){if(!_[_0xd46e('0x70')](_0x263425[_0xd46e('0x44')][_0xd46e('0x71')])){_0x32eed0['id']={'$in':_0x263425[_0xd46e('0x44')][_0xd46e('0x71')]};}_0x148187=[[_0xd46e('0x72'),_0xd46e('0x73')],[_0xd46e('0x74'),_0x1a3771[0x0][_0xd46e('0x6a')]===_0xd46e('0x73')?_0xd46e('0x75'):'ASC'],db['sequelize'][_0xd46e('0x76')](_0xd46e('0x77')),['id',_0xd46e('0x75')]];}else{if(!_[_0xd46e('0x70')](_0x263425[_0xd46e('0x44')]['hopperIds'])){_0x32eed0['id']={'$notIn':_0x263425[_0xd46e('0x44')][_0xd46e('0x71')]};}_0x148187=[[_0xd46e('0x72'),_0xd46e('0x75')],['scheduledAt',_0x1a3771[0x0][_0xd46e('0x6a')]],db[_0xd46e('0x78')]['literal'](_0xd46e('0x79')),['id',_0xd46e('0x73')]];}return db['CmHopper'][_0xd46e('0x7a')]({'attributes':['id',_0xd46e('0x7b'),'phone',_0xd46e('0x7c')],'where':_0x32eed0,'order':_0x148187,'transaction':_0x313c7e,'lock':_0x313c7e['LOCK'][_0xd46e('0x7d')],'include':[{'model':db[_0xd46e('0x5b')],'as':'Contact','attributes':_0x2f9fcb,'include':[{'model':db['CmCompany'],'as':_0xd46e('0x7e'),'attributes':['id',_0xd46e('0x10')]}]},{'model':db[_0xd46e('0x7f')],'as':_0xd46e('0x80'),'attributes':['id','name']},{'model':db[_0xd46e('0x49')],'as':_0xd46e('0x81'),'attributes':['id','name',_0xd46e('0x82')]}]})[_0xd46e('0x3a')](function(_0x2d2af0){if(_0x2d2af0){return _0x2d2af0[_0xd46e('0xc')]({'UserId':_0x263425[_0xd46e('0x52')]['id']},{'transaction':_0x313c7e});}});});}})[_0xd46e('0x3a')](handleEntityNotFound(_0x2dacb4,null))[_0xd46e('0x3a')](respondWithResult(_0x2dacb4,null))[_0xd46e('0x3f')](handleError(_0x2dacb4,null));};exports[_0xd46e('0x83')]=function(_0x556fed,_0x2bfffc,_0x1c1bae){var _0x5ce170=[];var _0x39fe4d=_0x556fed[_0xd46e('0x41')]['id'];var _0x1a28c1=_0x556fed[_0xd46e('0x52')]['id'];return db[_0xd46e('0x5b')][_0xd46e('0x45')]()['then'](function(_0x553496){_0x5ce170=_[_0xd46e('0x66')](_0x553496);return db[_0xd46e('0x78')]['transaction'](function(_0x4cb510){const _0x484805={'id':_0x39fe4d};return db[_0xd46e('0x14')][_0xd46e('0x7a')]({'attributes':['id',_0xd46e('0x7b'),'recallme'],'where':_0x484805,'transaction':_0x4cb510,'lock':_0x4cb510[_0xd46e('0x84')][_0xd46e('0x7d')],'include':[{'model':db[_0xd46e('0x5b')],'as':'Contact','attributes':_0x5ce170,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id','name']}]},{'model':db[_0xd46e('0x7f')],'as':'List','attributes':['id',_0xd46e('0x10')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0xd46e('0x10'),_0xd46e('0x82')]}]})[_0xd46e('0x3a')](function(_0x2754ff){if(_0x2754ff){return _0x2754ff[_0xd46e('0xc')]({'UserId':_0x1a28c1},{'transaction':_0x4cb510});}});});})[_0xd46e('0x3a')](handleEntityNotFound(_0x2bfffc,null))['then'](respondWithResult(_0x2bfffc,null))['catch'](handleError(_0x2bfffc,null));};exports[_0xd46e('0x85')]=function(_0x383919,_0x114f2c){return _0x383919[_0xd46e('0x52')]['getVoiceQueues']({'where':{'type':_0xd46e('0x68'),'dialActive':!![],'dialMethod':_0xd46e('0x69')},'attributes':['id'],'raw':!![]})['then'](function(_0x1309b5){if(_0x1309b5&&_0x1309b5['length']){return db[_0xd46e('0x14')][_0xd46e('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xd46e('0x13')](_0x1309b5,'id')},'$or':[{'UserId':null},{'UserId':_0x383919[_0xd46e('0x52')]['id']}]}});}return 0x0;})[_0xd46e('0x3a')](function(_0x5ef4cc){if(!_[_0xd46e('0x5f')](_0x5ef4cc)&&_[_0xd46e('0x86')](_0x5ef4cc)){return _0x114f2c[_0xd46e('0x5')](0xc8)[_0xd46e('0x6')]({'contacts':_0x5ef4cc});}else{logger[_0xd46e('0xe')](_0xd46e('0x87'),_0xd46e('0x85'),0x194,_0xd46e('0x88'));_0x114f2c[_0xd46e('0xd')](0x194);}})[_0xd46e('0x3f')](handleError(_0x114f2c,null));};exports[_0xd46e('0x89')]=function(_0xb86db,_0x3c476d){var _0x1b2a6d=shared[_0xd46e('0x8a')];var _0x1aa930=[];_[_0xd46e('0x13')](_0x1b2a6d,function(_0x1d2738){_0x1aa930['push']({'id':_0x1d2738[_0xd46e('0x10')],'name':_0x1d2738['name'],'utcOffset':_0x1d2738[_0xd46e('0x8b')]});});return _0x3c476d[_0xd46e('0x5')](0xc8)['json']({'tz':_0x1aa930});};exports[_0xd46e('0x8c')]=function(_0x21b837,_0xf22c0c){var _0x20730a=shared[_0xd46e('0x8a')];var _0x1d07a0={};if(!_[_0xd46e('0x5f')](_0x20730a[_0x21b837[_0xd46e('0x44')]['id']]))_0x1d07a0=_0x20730a[_0x21b837[_0xd46e('0x44')]['id']];return _0xf22c0c[_0xd46e('0x5')](0xc8)[_0xd46e('0x6')](_0x1d07a0);};
\ No newline at end of file
index ff4d7df..d069eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['request-promise','rimraf','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','../../config/logger','api','moment','bluebird'];(function(_0x389ad4,_0x5440b8){var _0x79b135=function(_0x57b4cc){while(--_0x57b4cc){_0x389ad4['push'](_0x389ad4['shift']());}};_0x79b135(++_0x5440b8);}(_0x2eb2,0x19f));var _0x22eb=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x2eb2[_0x2d7f0e];return _0x110b07;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var logger=require(_0x22eb('0x1'))(_0x22eb('0x2'));var moment=require(_0x22eb('0x3'));var BPromise=require(_0x22eb('0x4'));var rp=require(_0x22eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22eb('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module[_0x22eb('0x7')]=function(_0x10e116,_0x35dd5b){return _0x10e116[_0x22eb('0x8')](_0x22eb('0x9'),attributes,{'tableName':_0x22eb('0xa'),'paranoid':![],'indexes':[{'name':_0x22eb('0xb'),'fields':[_0x22eb('0xb')]},{'name':_0x22eb('0xc'),'fields':[_0x22eb('0xc')]},{'name':_0x22eb('0xd'),'fields':[_0x22eb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c09=['scheduledat','phone','priority','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','define','CmHopper','cm_hopper'];(function(_0x24c2db,_0x4fa36){var _0x7c2434=function(_0x52b2a0){while(--_0x52b2a0){_0x24c2db['push'](_0x24c2db['shift']());}};_0x7c2434(++_0x4fa36);}(_0x7c09,0x102));var _0x97c0=function(_0x48062c,_0x44d725){_0x48062c=_0x48062c-0x0;var _0x4d720c=_0x7c09[_0x48062c];return _0x4d720c;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var logger=require(_0x97c0('0x1'))('api');var moment=require(_0x97c0('0x2'));var BPromise=require(_0x97c0('0x3'));var rp=require(_0x97c0('0x4'));var fs=require('fs');var path=require(_0x97c0('0x5'));var rimraf=require(_0x97c0('0x6'));var config=require(_0x97c0('0x7'));var attributes=require(_0x97c0('0x8'));module['exports']=function(_0x4b2f81,_0x590368){return _0x4b2f81[_0x97c0('0x9')](_0x97c0('0xa'),attributes,{'tableName':_0x97c0('0xb'),'paranoid':![],'indexes':[{'name':_0x97c0('0xc'),'fields':[_0x97c0('0xc')]},{'name':'phone','fields':[_0x97c0('0xd')]},{'name':'priority','fields':[_0x97c0('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 222b896..e850c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57df=['\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','LOCK','GetCmHopperPreview','keys','GetContactByPhone','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','voicePause','List','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','GetCmHopper','options','where','attributes','limit','include','map','model','then','stringify','catch','message','error','ShowCmHopper','CmHopper','find','raw','debug','CreateCmHopper','create','body','info','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','findAll','order','UPDATE','Contact','User','Agent','name','length','UserId','push','includes','update','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','COUNT','literal','\x22%s\x22','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x14e8cb,_0x5e8052){var _0x500cf8=function(_0x206afd){while(--_0x206afd){_0x14e8cb['push'](_0x14e8cb['shift']());}};_0x500cf8(++_0x5e8052);}(_0x57df,0x10b));var _0xf57d=function(_0x3130e9,_0x16295c){_0x3130e9=_0x3130e9-0x0;var _0x4ce4b1=_0x57df[_0x3130e9];return _0x4ce4b1;};'use strict';var _=require(_0xf57d('0x0'));var util=require(_0xf57d('0x1'));var moment=require(_0xf57d('0x2'));var BPromise=require(_0xf57d('0x3'));var db=require(_0xf57d('0x4'))['db'];var logger=require(_0xf57d('0x5'))('rpc');exports[_0xf57d('0x6')]=function(_0x4f84b3){var _0xabf85=this;return new Promise(function(_0x17e2a7,_0xfbd515){return db['CmHopper']['findAll']({'raw':_0x4f84b3[_0xf57d('0x7')]?_0x4f84b3[_0xf57d('0x7')]['raw']===undefined?!![]:![]:!![],'where':_0x4f84b3[_0xf57d('0x7')]?_0x4f84b3[_0xf57d('0x7')][_0xf57d('0x8')]||null:null,'attributes':_0x4f84b3[_0xf57d('0x7')]?_0x4f84b3['options'][_0xf57d('0x9')]||null:null,'limit':_0x4f84b3[_0xf57d('0x7')]?_0x4f84b3['options'][_0xf57d('0xa')]||null:null,'include':_0x4f84b3[_0xf57d('0x7')]?_0x4f84b3[_0xf57d('0x7')][_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x4f84b3['options'][_0xf57d('0xb')],function(_0x52de0d){return{'model':db[_0x52de0d[_0xf57d('0xd')]],'as':_0x52de0d['as'],'attributes':_0x52de0d[_0xf57d('0x9')],'include':_0x52de0d[_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x52de0d[_0xf57d('0xb')],function(_0x367972){return{'model':db[_0x367972['model']],'as':_0x367972['as'],'attributes':_0x367972['attributes'],'include':_0x367972[_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x367972[_0xf57d('0xb')],function(_0x3f5a40){return{'model':db[_0x3f5a40[_0xf57d('0xd')]],'as':_0x3f5a40['as'],'attributes':_0x3f5a40['attributes']};}):[]};}):[]};}):[]:[]})[_0xf57d('0xe')](function(_0x24ba68){logger['info'](_0xf57d('0x6'),_0x4f84b3);logger['debug'](_0xf57d('0x6'),_0x4f84b3,JSON[_0xf57d('0xf')](_0x24ba68));_0x17e2a7(_0x24ba68);})[_0xf57d('0x10')](function(_0x11fe28){logger['error']('GetCmHopper',_0x11fe28[_0xf57d('0x11')],_0x4f84b3);_0xfbd515(_0xabf85[_0xf57d('0x12')](0x1f4,_0x11fe28[_0xf57d('0x11')]));});});};exports[_0xf57d('0x13')]=function(_0x1bbfb3){var _0x29af1a=this;return new Promise(function(_0x5540af,_0x503aba){return db[_0xf57d('0x14')][_0xf57d('0x15')]({'raw':_0x1bbfb3[_0xf57d('0x7')]?_0x1bbfb3[_0xf57d('0x7')][_0xf57d('0x16')]===undefined?!![]:![]:!![],'where':_0x1bbfb3[_0xf57d('0x7')]?_0x1bbfb3[_0xf57d('0x7')][_0xf57d('0x8')]||null:null,'attributes':_0x1bbfb3[_0xf57d('0x7')]?_0x1bbfb3[_0xf57d('0x7')][_0xf57d('0x9')]||null:null,'include':_0x1bbfb3[_0xf57d('0x7')]?_0x1bbfb3[_0xf57d('0x7')]['include']?_[_0xf57d('0xc')](_0x1bbfb3[_0xf57d('0x7')]['include'],function(_0x5a9a19){return{'model':db[_0x5a9a19['model']],'as':_0x5a9a19['as'],'attributes':_0x5a9a19[_0xf57d('0x9')],'include':_0x5a9a19['include']?_[_0xf57d('0xc')](_0x5a9a19['include'],function(_0x2350b0){return{'model':db[_0x2350b0[_0xf57d('0xd')]],'as':_0x2350b0['as'],'attributes':_0x2350b0[_0xf57d('0x9')],'include':_0x2350b0[_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x2350b0[_0xf57d('0xb')],function(_0x4acead){return{'model':db[_0x4acead[_0xf57d('0xd')]],'as':_0x4acead['as'],'attributes':_0x4acead[_0xf57d('0x9')]};}):[]};}):[]};}):[]:[]})[_0xf57d('0xe')](function(_0x130d81){logger['info'](_0xf57d('0x13'),_0x1bbfb3);logger[_0xf57d('0x17')]('ShowCmHopper',_0x1bbfb3,JSON[_0xf57d('0xf')](_0x130d81));_0x5540af(_0x130d81);})[_0xf57d('0x10')](function(_0x484c0a){logger['error']('ShowCmHopper',_0x484c0a[_0xf57d('0x11')],_0x1bbfb3);_0x503aba(_0x29af1a[_0xf57d('0x12')](0x1f4,_0x484c0a[_0xf57d('0x11')]));});});};exports[_0xf57d('0x18')]=function(_0x269f2b){var _0x2ea544=this;return new Promise(function(_0x67834c,_0x49f458){return db[_0xf57d('0x14')][_0xf57d('0x19')](_0x269f2b[_0xf57d('0x1a')],{'raw':_0x269f2b[_0xf57d('0x7')]?_0x269f2b['options'][_0xf57d('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x8ccac6){logger[_0xf57d('0x1b')](_0xf57d('0x18'),_0x269f2b);logger[_0xf57d('0x17')](_0xf57d('0x18'),_0x269f2b,JSON['stringify'](_0x8ccac6));_0x67834c(_0x8ccac6);})[_0xf57d('0x10')](function(_0xb31069){logger[_0xf57d('0x12')](_0xf57d('0x18'),_0xb31069[_0xf57d('0x11')],_0x269f2b);_0x49f458(_0x2ea544[_0xf57d('0x12')](0x1f4,_0xb31069['message']));});});};exports[_0xf57d('0x1c')]=function(_0xa77f3d){var _0x1f1912=this;return new Promise(function(_0x2e4121,_0x32bc49){return db[_0xf57d('0x14')]['update'](_0xa77f3d['body'],{'raw':_0xa77f3d['options']?_0xa77f3d[_0xf57d('0x7')][_0xf57d('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xa77f3d['options']?_0xa77f3d[_0xf57d('0x7')]['where']||null:null,'attributes':_0xa77f3d[_0xf57d('0x7')]?_0xa77f3d[_0xf57d('0x7')][_0xf57d('0x9')]||null:null,'limit':_0xa77f3d[_0xf57d('0x7')]?_0xa77f3d[_0xf57d('0x7')][_0xf57d('0xa')]||null:null})['then'](function(_0x1e766b){logger['info'](_0xf57d('0x1c'),_0xa77f3d);logger[_0xf57d('0x1b')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xf57d('0xf')](_0xa77f3d['options'][_0xf57d('0x8')]),_0xa77f3d['body']['active']);logger['debug'](_0xf57d('0x1c'),_0xa77f3d,JSON[_0xf57d('0xf')](_0x1e766b));_0x2e4121(_0x1e766b);})[_0xf57d('0x10')](function(_0x4a40cc){logger[_0xf57d('0x12')](_0xf57d('0x1c'),_0x4a40cc[_0xf57d('0x11')],_0xa77f3d);_0x32bc49(_0x1f1912['error'](0x1f4,_0x4a40cc['message']));});});};exports[_0xf57d('0x1d')]=function(_0x27d025){var _0x5a652e=this;return new Promise(function(_0x5ca594,_0x2f3b01){return db[_0xf57d('0x14')][_0xf57d('0x1e')]({'where':_0x27d025[_0xf57d('0x7')]?_0x27d025[_0xf57d('0x7')][_0xf57d('0x8')]||null:null})[_0xf57d('0xe')](function(_0x1dd3d3){logger[_0xf57d('0x1b')]('DestroyCmHopper',_0x27d025);logger[_0xf57d('0x17')](_0xf57d('0x1d'),_0x27d025,JSON['stringify'](_0x1dd3d3));_0x5ca594(_0x1dd3d3);})[_0xf57d('0x10')](function(_0x3544b8){logger['error']('DestroyCmHopper',_0x3544b8[_0xf57d('0x11')],_0x27d025);_0x2f3b01(_0x5a652e[_0xf57d('0x12')](0x1f4,_0x3544b8[_0xf57d('0x11')]));});});};exports[_0xf57d('0x1f')]=function(_0x1636cf){var _0x2aceb7=this;return new Promise(function(_0x3376b6,_0x467411){return db[_0xf57d('0x20')][_0xf57d('0x21')]()[_0xf57d('0xe')](function(_0x20a261){return db[_0xf57d('0x22')]['transaction'](function(_0x47f44d){return db[_0xf57d('0x14')][_0xf57d('0x23')]({'where':_0x1636cf[_0xf57d('0x7')]?_0x1636cf['options'][_0xf57d('0x8')]||null:null,'attributes':_0x1636cf[_0xf57d('0x7')]?_0x1636cf['options'][_0xf57d('0x9')]||null:null,'limit':_0x1636cf[_0xf57d('0x7')]?_0x1636cf['options'][_0xf57d('0xa')]||null:null,'order':_0x1636cf[_0xf57d('0x7')]?_0x1636cf['options'][_0xf57d('0x24')]||null:null,'transaction':_0x47f44d,'lock':_0x47f44d['LOCK'][_0xf57d('0x25')],'include':[{'model':db['CmContact'],'as':_0xf57d('0x26'),'attributes':_['keys'](_0x20a261)},{'model':db[_0xf57d('0x27')],'as':_0xf57d('0x28'),'attributes':['id',_0xf57d('0x29'),'voicePause']}]})[_0xf57d('0xe')](function(_0x3b4e24){var _0x3c9ff5=[];var _0x563b7e=[];for(var _0x418632=0x0;_0x418632<_0x3b4e24[_0xf57d('0x2a')];_0x418632+=0x1){var _0xe56823=_0x3b4e24[_0x418632][_0xf57d('0x2b')];if(_0xe56823===null){_0x3c9ff5[_0xf57d('0x2c')](_0x3b4e24[_0x418632]['update'](_0x1636cf[_0xf57d('0x1a')],{'transaction':_0x47f44d}));}else if(!_0x563b7e[_0xf57d('0x2d')](_0xe56823)){_0x563b7e[_0xf57d('0x2c')](_0xe56823);_0x3c9ff5[_0xf57d('0x2c')](_0x3b4e24[_0x418632][_0xf57d('0x2e')](_0x1636cf['body'],{'transaction':_0x47f44d}));}}return BPromise[_0xf57d('0x2f')](_0x3c9ff5);});})['then'](function(_0x33791d){logger[_0xf57d('0x1b')](_0xf57d('0x1f'),_0x1636cf);if(_0x33791d[_0xf57d('0x2a')]>0x0){logger[_0xf57d('0x1b')](_0xf57d('0x30'),_0x33791d[0x0][_0xf57d('0x31')]['id'],_0x33791d[0x0][_0xf57d('0x31')][_0xf57d('0x32')],_0x33791d[0x0]['dataValues'][_0xf57d('0x33')]);}logger[_0xf57d('0x17')](_0xf57d('0x1f'),_0x1636cf,JSON['stringify'](_0x33791d));_0x3376b6(_0x33791d);})[_0xf57d('0x10')](function(_0x91a243){logger[_0xf57d('0x12')]('GetContactDialer',_0x91a243['message'],_0x1636cf);_0x467411(_0x2aceb7[_0xf57d('0x12')](0x1f4,_0x91a243[_0xf57d('0x11')]));});});});};exports[_0xf57d('0x34')]=function(_0x1f2ad8){var _0x4810df=this;return new Promise(function(_0x2d1022,_0x4920a9){return db[_0xf57d('0x22')][_0xf57d('0x35')](function(_0x41737c){return db[_0xf57d('0x36')][_0xf57d('0x19')](_0x1f2ad8[_0xf57d('0x1a')],{'raw':_0x1f2ad8[_0xf57d('0x7')]?_0x1f2ad8[_0xf57d('0x7')][_0xf57d('0x16')]===undefined?!![]:![]:!![],'transaction':_0x41737c})['then'](function(){logger[_0xf57d('0x1b')](_0xf57d('0x37'),JSON[_0xf57d('0xf')](_0x1f2ad8['options'][_0xf57d('0x8')]),_0x1f2ad8[_0xf57d('0x7')]['where']['active']);return db[_0xf57d('0x14')][_0xf57d('0x1e')]({'where':_0x1f2ad8[_0xf57d('0x7')]?_0x1f2ad8[_0xf57d('0x7')][_0xf57d('0x8')]||null:null,'transaction':_0x41737c});});})[_0xf57d('0xe')](function(_0x124fe0){logger['info']('MoveContactManagedDialer',_0x1f2ad8);logger[_0xf57d('0x17')]('MoveContactManagedDialer',_0x1f2ad8,JSON[_0xf57d('0xf')](_0x124fe0));_0x2d1022(_0x124fe0);})[_0xf57d('0x10')](function(_0x16a7c8){logger[_0xf57d('0x12')](_0xf57d('0x34'),_0x16a7c8[_0xf57d('0x11')],_0x1f2ad8);_0x4920a9(_0x4810df[_0xf57d('0x12')](0x1f4,_0x16a7c8[_0xf57d('0x11')]));});});};exports['CountReScheduled']=function(_0x5ba9af){var _0x3adadd=this;return new Promise(function(_0x58343a,_0x343e5a){return db['CmHopper']['findAll']({'raw':_0x5ba9af[_0xf57d('0x7')]?_0x5ba9af[_0xf57d('0x7')][_0xf57d('0x16')]===undefined?!![]:![]:!![],'where':_0x5ba9af['options']?_0x5ba9af[_0xf57d('0x7')][_0xf57d('0x8')]||null:null,'attributes':[[db[_0xf57d('0x22')]['fn'](_0xf57d('0x38'),db['sequelize']['fn']('IF',db[_0xf57d('0x22')][_0xf57d('0x39')]('`scheduledat`\x20>=\x20'+util['format'](_0xf57d('0x3a'),moment()[_0xf57d('0x3b')](_0xf57d('0x3c')))+_0xf57d('0x3d')))),_0xf57d('0x3e')]]})[_0xf57d('0xe')](function(_0x3f7ec3){logger[_0xf57d('0x1b')](_0xf57d('0x3f'),_0x5ba9af);logger[_0xf57d('0x17')](_0xf57d('0x3f'),_0x5ba9af,JSON[_0xf57d('0xf')](_0x3f7ec3));_0x58343a(_0x3f7ec3);})[_0xf57d('0x10')](function(_0x3a7cd1){logger['error']('CountReScheduled',_0x3a7cd1[_0xf57d('0x11')],_0x5ba9af);_0x343e5a(_0x3adadd[_0xf57d('0x12')](0x1f4,_0x3a7cd1[_0xf57d('0x11')]));});});};exports[_0xf57d('0x40')]=function(_0x6be52b){var _0x3d11e3=this;return new Promise(function(_0x2ca88b,_0x4aa984){return db[_0xf57d('0x20')][_0xf57d('0x21')]()[_0xf57d('0xe')](function(){return db[_0xf57d('0x22')][_0xf57d('0x35')](function(_0x149aa9){return db[_0xf57d('0x14')][_0xf57d('0x23')]({'where':_0x6be52b[_0xf57d('0x7')]?_0x6be52b[_0xf57d('0x7')][_0xf57d('0x8')]||null:null,'attributes':_0x6be52b[_0xf57d('0x7')]?_0x6be52b['options'][_0xf57d('0x9')]||null:null,'limit':0x1,'order':_0x6be52b[_0xf57d('0x7')]?_0x6be52b[_0xf57d('0x7')][_0xf57d('0x24')]||null:null,'group':db[_0xf57d('0x14')][_0xf57d('0x2b')],'transaction':_0x149aa9,'lock':_0x149aa9[_0xf57d('0x41')][_0xf57d('0x25')],'include':_0x6be52b['options']?_0x6be52b['options'][_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x6be52b[_0xf57d('0x7')][_0xf57d('0xb')],function(_0x497faf){return{'model':db[_0x497faf[_0xf57d('0xd')]],'as':_0x497faf['as'],'attributes':_0x497faf[_0xf57d('0x9')],'include':_0x497faf[_0xf57d('0xb')]?_['map'](_0x497faf[_0xf57d('0xb')],function(_0x4111a8){return{'model':db[_0x4111a8[_0xf57d('0xd')]],'as':_0x4111a8['as'],'attributes':_0x4111a8[_0xf57d('0x9')],'include':_0x4111a8[_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x4111a8[_0xf57d('0xb')],function(_0x46f997){return{'model':db[_0x46f997['model']],'as':_0x46f997['as'],'attributes':_0x46f997[_0xf57d('0x9')]};}):[]};}):[]};}):[]:[]})[_0xf57d('0xe')](function(_0x4ad7e1){var _0x496fdf=[];for(var _0x119670=0x0;_0x119670<_0x4ad7e1[_0xf57d('0x2a')];_0x119670+=0x1){_0x496fdf[_0xf57d('0x2c')](_0x4ad7e1[_0x119670][_0xf57d('0x2e')](_0x6be52b['body'],{'transaction':_0x149aa9}));}return BPromise[_0xf57d('0x2f')](_0x496fdf);});})[_0xf57d('0xe')](function(_0x5b75b4){logger[_0xf57d('0x1b')](_0xf57d('0x40'),_0x6be52b);logger[_0xf57d('0x17')]('GetContactRecallMe',_0x6be52b,JSON[_0xf57d('0xf')](_0x5b75b4));_0x2ca88b(_0x5b75b4);})[_0xf57d('0x10')](function(_0x2e8811){logger[_0xf57d('0x12')]('GetContactRecallMe',_0x2e8811[_0xf57d('0x11')],_0x6be52b);_0x4aa984(_0x3d11e3[_0xf57d('0x12')](0x1f4,_0x2e8811[_0xf57d('0x11')]));});});});};exports[_0xf57d('0x42')]=function(_0x5d0304){var _0x5d6f07=this;return new Promise(function(_0x3e1ef2,_0x1decb5){db[_0xf57d('0x20')][_0xf57d('0x21')]()['then'](function(_0x43929b){return db[_0xf57d('0x14')][_0xf57d('0x23')]({'raw':_0x5d0304['options']?_0x5d0304[_0xf57d('0x7')][_0xf57d('0x16')]===undefined?!![]:![]:!![],'where':_0x5d0304[_0xf57d('0x7')]?_0x5d0304[_0xf57d('0x7')][_0xf57d('0x8')]||null:null,'attributes':_0x5d0304[_0xf57d('0x7')]?_0x5d0304[_0xf57d('0x7')][_0xf57d('0x9')]||null:null,'limit':_0x5d0304[_0xf57d('0x7')]?_0x5d0304['options']['limit']||null:null,'include':_0x5d0304['options']?_0x5d0304[_0xf57d('0x7')][_0xf57d('0xb')]?_[_0xf57d('0xc')](_0x5d0304[_0xf57d('0x7')][_0xf57d('0xb')],function(_0x43a116){return{'model':db[_0x43a116[_0xf57d('0xd')]],'as':_0x43a116['as'],'attributes':_0x43a116['as']===_0xf57d('0x26')?_[_0xf57d('0x43')](_0x43929b):_0x43a116[_0xf57d('0x9')],'include':_0x43a116['include']?_[_0xf57d('0xc')](_0x43a116[_0xf57d('0xb')],function(_0x32cb8c){return{'model':db[_0x32cb8c[_0xf57d('0xd')]],'as':_0x32cb8c['as'],'attributes':_0x32cb8c['attributes'],'include':_0x32cb8c['include']?_['map'](_0x32cb8c[_0xf57d('0xb')],function(_0x112ce8){return{'model':db[_0x112ce8[_0xf57d('0xd')]],'as':_0x112ce8['as'],'attributes':_0x112ce8[_0xf57d('0x9')]};}):[]};}):[]};}):[]:[]})[_0xf57d('0xe')](function(_0x1b174c){logger['info'](_0xf57d('0x6'),_0x5d0304);logger[_0xf57d('0x17')]('GetCmHopper',_0x5d0304,JSON['stringify'](_0x1b174c));_0x3e1ef2(_0x1b174c);})['catch'](function(_0x17fd8f){logger['error'](_0xf57d('0x6'),_0x17fd8f['message'],_0x5d0304);_0x1decb5(_0x5d6f07[_0xf57d('0x12')](0x1f4,_0x17fd8f['message']));});});});};exports[_0xf57d('0x44')]=function(_0x28a540){var _0x3e812c=this;return new Promise(function(_0xae6965,_0x20fde8){return db[_0xf57d('0x20')]['findOne']({'raw':!![],'where':{'phone':_0x28a540[_0xf57d('0x7')][_0xf57d('0x8')][_0xf57d('0x45')]},'attributes':['id',_0xf57d('0x46')],'order':[['id',_0xf57d('0x47')]]})[_0xf57d('0xe')](function(_0x312d9b){logger['info']('getContactByPhone',_0x28a540);logger[_0xf57d('0x17')](_0xf57d('0x48'),_0x28a540,JSON[_0xf57d('0xf')](_0x312d9b));_0xae6965(_0x312d9b);})[_0xf57d('0x10')](function(_0x5e024c){logger[_0xf57d('0x12')](_0xf57d('0x48'),_0x5e024c['message'],_0x28a540);_0x20fde8(_0x3e812c[_0xf57d('0x12')](0x1f4,_0x5e024c[_0xf57d('0x11')]));});});};exports[_0xf57d('0x49')]=function(_0x5de7f2){var _0x17b12c=this;return new Promise(function(_0x5b672f,_0x5a145f){return db[_0xf57d('0x22')][_0xf57d('0x35')](function(_0x4200cd){var _0x5788d8=_0x5de7f2['options']&&_0x5de7f2[_0xf57d('0x7')][_0xf57d('0x8')]?_0x5de7f2[_0xf57d('0x7')][_0xf57d('0x8')]:{};return db[_0xf57d('0x14')][_0xf57d('0x2e')](_0x5de7f2[_0xf57d('0x1a')],{'where':_0x5788d8,'transaction':_0x4200cd})[_0xf57d('0xe')](function(_0x4bf6ca){logger[_0xf57d('0x1b')]('ResetActiveCalls',_0x5de7f2);logger['debug'](_0xf57d('0x49'),_0x5de7f2,JSON['stringify'](_0x4bf6ca));_0x5b672f(_0x4bf6ca);})['catch'](function(_0x2a8c82){logger[_0xf57d('0x12')](_0xf57d('0x49'),_0x2a8c82[_0xf57d('0x11')],_0x5de7f2);_0x5a145f(_0x17b12c['error'](0x1f4,_0x2a8c82['message']));});});});};exports[_0xf57d('0x4a')]=function(_0x3137bd){var _0x523061=this;var _0x2a418e=_0x3137bd['body'][_0xf57d('0x8')]['voiceQueueIds'];var _0x3342a3=_0x3137bd['body'][_0xf57d('0x8')][_0xf57d('0x4b')];var _0x53db49=_0x3137bd['body'][_0xf57d('0x8')][_0xf57d('0x4c')];return new Promise(function(_0x50a5a6,_0x12f1db){return db[_0xf57d('0x14')][_0xf57d('0x23')]({'where':{'voiceQueueId':{'$in':_0x2a418e},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xf57d('0x22')]['literal'](_0xf57d('0x4d')+_0x3342a3+_0xf57d('0x4e')),'$gt':db[_0xf57d('0x22')][_0xf57d('0x39')](_0xf57d('0x4f'))}},'UserId':{'$in':_0x53db49}},'include':[{'model':db[_0xf57d('0x20')],'as':_0xf57d('0x26')},{'model':db[_0xf57d('0x27')],'as':_0xf57d('0x28'),'attributes':['id',_0xf57d('0x29'),_0xf57d('0x50')]},{'model':db['CmList'],'as':_0xf57d('0x51')}]})[_0xf57d('0xe')](function(_0x5ea680){if(_0x5ea680[_0xf57d('0x2a')]>0x0){return db['sequelize'][_0xf57d('0x35')](function(_0x2b7312){return db[_0xf57d('0x14')][_0xf57d('0x2e')]({'recallmeNotifiedDate':db[_0xf57d('0x22')][_0xf57d('0x39')]('NOW()')},{'where':{'id':{'$in':_[_0xf57d('0xc')](_0x5ea680,'id')}},'transaction':_0x2b7312})['then'](function(){_0x50a5a6(_0x5ea680);})['catch'](function(_0x49c079){logger[_0xf57d('0x12')](_0xf57d('0x4a'),_0x49c079['message'],_0x3137bd);_0x12f1db(_0x523061['error'](0x1f4,_0x49c079['message']));});})['catch'](function(_0x5948bb){logger[_0xf57d('0x12')]('CmHopperHandlePreviewRecallNotifications',_0x5948bb[_0xf57d('0x11')],_0x3137bd);_0x12f1db(_0x523061[_0xf57d('0x12')](0x1f4,_0x5948bb['message']));});}else{_0x50a5a6(_0x5ea680);}});});};
\ No newline at end of file
+var _0xe21a=['bluebird','../../mysqldb','../../config/logger','rpc','CmHopper','findAll','options','where','attributes','limit','include','map','model','then','info','GetCmHopper','debug','stringify','catch','error','message','ShowCmHopper','find','raw','CreateCmHopper','create','body','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','DestroyCmHopper','CmContact','describe','sequelize','transaction','LOCK','Contact','keys','User','voicePause','length','UserId','includes','push','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','active','MoveContactManagedDialer','destroy','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','order','UPDATE','GetCmHopperPreview','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','\x20MINUTE','NOW()','Agent','name','List','lodash','util','moment'];(function(_0xb66df,_0x4fb5ce){var _0x42a702=function(_0x252d1d){while(--_0x252d1d){_0xb66df['push'](_0xb66df['shift']());}};_0x42a702(++_0x4fb5ce);}(_0xe21a,0xf6));var _0xae21=function(_0x144662,_0x54de17){_0x144662=_0x144662-0x0;var _0x552c96=_0xe21a[_0x144662];return _0x552c96;};'use strict';var _=require(_0xae21('0x0'));var util=require(_0xae21('0x1'));var moment=require(_0xae21('0x2'));var BPromise=require(_0xae21('0x3'));var db=require(_0xae21('0x4'))['db'];var logger=require(_0xae21('0x5'))(_0xae21('0x6'));exports['GetCmHopper']=function(_0x5c3352){var _0x37c444=this;return new Promise(function(_0x52c336,_0x4a47b8){return db[_0xae21('0x7')][_0xae21('0x8')]({'raw':_0x5c3352[_0xae21('0x9')]?_0x5c3352[_0xae21('0x9')]['raw']===undefined?!![]:![]:!![],'where':_0x5c3352[_0xae21('0x9')]?_0x5c3352[_0xae21('0x9')][_0xae21('0xa')]||null:null,'attributes':_0x5c3352[_0xae21('0x9')]?_0x5c3352[_0xae21('0x9')][_0xae21('0xb')]||null:null,'limit':_0x5c3352[_0xae21('0x9')]?_0x5c3352[_0xae21('0x9')][_0xae21('0xc')]||null:null,'include':_0x5c3352[_0xae21('0x9')]?_0x5c3352[_0xae21('0x9')][_0xae21('0xd')]?_[_0xae21('0xe')](_0x5c3352['options'][_0xae21('0xd')],function(_0xfc2f7a){return{'model':db[_0xfc2f7a['model']],'as':_0xfc2f7a['as'],'attributes':_0xfc2f7a[_0xae21('0xb')],'include':_0xfc2f7a[_0xae21('0xd')]?_[_0xae21('0xe')](_0xfc2f7a['include'],function(_0x25b50d){return{'model':db[_0x25b50d['model']],'as':_0x25b50d['as'],'attributes':_0x25b50d['attributes'],'include':_0x25b50d[_0xae21('0xd')]?_[_0xae21('0xe')](_0x25b50d[_0xae21('0xd')],function(_0x32d4f5){return{'model':db[_0x32d4f5[_0xae21('0xf')]],'as':_0x32d4f5['as'],'attributes':_0x32d4f5[_0xae21('0xb')]};}):[]};}):[]};}):[]:[]})[_0xae21('0x10')](function(_0x2b9913){logger[_0xae21('0x11')](_0xae21('0x12'),_0x5c3352);logger[_0xae21('0x13')](_0xae21('0x12'),_0x5c3352,JSON[_0xae21('0x14')](_0x2b9913));_0x52c336(_0x2b9913);})[_0xae21('0x15')](function(_0x206603){logger[_0xae21('0x16')]('GetCmHopper',_0x206603['message'],_0x5c3352);_0x4a47b8(_0x37c444[_0xae21('0x16')](0x1f4,_0x206603[_0xae21('0x17')]));});});};exports[_0xae21('0x18')]=function(_0x2d2187){var _0x90e34a=this;return new Promise(function(_0x22503d,_0x3cdf7b){return db[_0xae21('0x7')][_0xae21('0x19')]({'raw':_0x2d2187[_0xae21('0x9')]?_0x2d2187[_0xae21('0x9')][_0xae21('0x1a')]===undefined?!![]:![]:!![],'where':_0x2d2187[_0xae21('0x9')]?_0x2d2187['options'][_0xae21('0xa')]||null:null,'attributes':_0x2d2187['options']?_0x2d2187[_0xae21('0x9')][_0xae21('0xb')]||null:null,'include':_0x2d2187[_0xae21('0x9')]?_0x2d2187[_0xae21('0x9')]['include']?_['map'](_0x2d2187[_0xae21('0x9')]['include'],function(_0x3042be){return{'model':db[_0x3042be[_0xae21('0xf')]],'as':_0x3042be['as'],'attributes':_0x3042be[_0xae21('0xb')],'include':_0x3042be['include']?_[_0xae21('0xe')](_0x3042be[_0xae21('0xd')],function(_0x16515f){return{'model':db[_0x16515f[_0xae21('0xf')]],'as':_0x16515f['as'],'attributes':_0x16515f[_0xae21('0xb')],'include':_0x16515f[_0xae21('0xd')]?_[_0xae21('0xe')](_0x16515f[_0xae21('0xd')],function(_0x531f10){return{'model':db[_0x531f10[_0xae21('0xf')]],'as':_0x531f10['as'],'attributes':_0x531f10[_0xae21('0xb')]};}):[]};}):[]};}):[]:[]})[_0xae21('0x10')](function(_0x36e65b){logger[_0xae21('0x11')](_0xae21('0x18'),_0x2d2187);logger[_0xae21('0x13')](_0xae21('0x18'),_0x2d2187,JSON[_0xae21('0x14')](_0x36e65b));_0x22503d(_0x36e65b);})['catch'](function(_0x5894df){logger[_0xae21('0x16')](_0xae21('0x18'),_0x5894df[_0xae21('0x17')],_0x2d2187);_0x3cdf7b(_0x90e34a[_0xae21('0x16')](0x1f4,_0x5894df['message']));});});};exports[_0xae21('0x1b')]=function(_0x3688f4){var _0x3a8287=this;return new Promise(function(_0x35e154,_0x3877c4){return db[_0xae21('0x7')][_0xae21('0x1c')](_0x3688f4[_0xae21('0x1d')],{'raw':_0x3688f4[_0xae21('0x9')]?_0x3688f4[_0xae21('0x9')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3b89bc){logger[_0xae21('0x11')]('CreateCmHopper',_0x3688f4);logger[_0xae21('0x13')](_0xae21('0x1b'),_0x3688f4,JSON[_0xae21('0x14')](_0x3b89bc));_0x35e154(_0x3b89bc);})['catch'](function(_0x466270){logger['error'](_0xae21('0x1b'),_0x466270[_0xae21('0x17')],_0x3688f4);_0x3877c4(_0x3a8287[_0xae21('0x16')](0x1f4,_0x466270[_0xae21('0x17')]));});});};exports[_0xae21('0x1e')]=function(_0x490c81){var _0x440288=this;return new Promise(function(_0x3d81bb,_0x31311c){return db[_0xae21('0x7')][_0xae21('0x1f')](_0x490c81[_0xae21('0x1d')],{'raw':_0x490c81[_0xae21('0x9')]?_0x490c81[_0xae21('0x9')][_0xae21('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x490c81[_0xae21('0x9')]?_0x490c81['options']['where']||null:null,'attributes':_0x490c81[_0xae21('0x9')]?_0x490c81[_0xae21('0x9')][_0xae21('0xb')]||null:null,'limit':_0x490c81[_0xae21('0x9')]?_0x490c81[_0xae21('0x9')]['limit']||null:null})[_0xae21('0x10')](function(_0x1a6e06){logger[_0xae21('0x11')]('UpdateCmHopper',_0x490c81);logger['info'](_0xae21('0x20'),JSON[_0xae21('0x14')](_0x490c81[_0xae21('0x9')]['where']),_0x490c81['body']['active']);logger['debug'](_0xae21('0x1e'),_0x490c81,JSON[_0xae21('0x14')](_0x1a6e06));_0x3d81bb(_0x1a6e06);})[_0xae21('0x15')](function(_0x7cb76c){logger['error'](_0xae21('0x1e'),_0x7cb76c['message'],_0x490c81);_0x31311c(_0x440288['error'](0x1f4,_0x7cb76c['message']));});});};exports['DestroyCmHopper']=function(_0x21903d){var _0x32bb8b=this;return new Promise(function(_0x20bacd,_0x58ae3a){return db['CmHopper']['destroy']({'where':_0x21903d['options']?_0x21903d[_0xae21('0x9')][_0xae21('0xa')]||null:null})['then'](function(_0x2ffd61){logger[_0xae21('0x11')](_0xae21('0x21'),_0x21903d);logger[_0xae21('0x13')]('DestroyCmHopper',_0x21903d,JSON[_0xae21('0x14')](_0x2ffd61));_0x20bacd(_0x2ffd61);})[_0xae21('0x15')](function(_0x4a0b43){logger[_0xae21('0x16')](_0xae21('0x21'),_0x4a0b43[_0xae21('0x17')],_0x21903d);_0x58ae3a(_0x32bb8b['error'](0x1f4,_0x4a0b43[_0xae21('0x17')]));});});};exports['GetContactDialer']=function(_0xe6c941){var _0x5015fd=this;return new Promise(function(_0x3421b4,_0x3520be){return db[_0xae21('0x22')][_0xae21('0x23')]()[_0xae21('0x10')](function(_0x1ecc7d){return db[_0xae21('0x24')][_0xae21('0x25')](function(_0x35e51d){return db['CmHopper'][_0xae21('0x8')]({'where':_0xe6c941[_0xae21('0x9')]?_0xe6c941[_0xae21('0x9')][_0xae21('0xa')]||null:null,'attributes':_0xe6c941[_0xae21('0x9')]?_0xe6c941[_0xae21('0x9')][_0xae21('0xb')]||null:null,'limit':_0xe6c941[_0xae21('0x9')]?_0xe6c941[_0xae21('0x9')][_0xae21('0xc')]||null:null,'order':_0xe6c941[_0xae21('0x9')]?_0xe6c941[_0xae21('0x9')]['order']||null:null,'transaction':_0x35e51d,'lock':_0x35e51d[_0xae21('0x26')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0xae21('0x27'),'attributes':_[_0xae21('0x28')](_0x1ecc7d)},{'model':db[_0xae21('0x29')],'as':'Agent','attributes':['id','name',_0xae21('0x2a')]}]})[_0xae21('0x10')](function(_0xc7c00c){var _0x35240c=[];var _0x1a8220=[];for(var _0x17e8c1=0x0;_0x17e8c1<_0xc7c00c[_0xae21('0x2b')];_0x17e8c1+=0x1){var _0x332b7a=_0xc7c00c[_0x17e8c1][_0xae21('0x2c')];if(_0x332b7a===null){_0x35240c['push'](_0xc7c00c[_0x17e8c1]['update'](_0xe6c941['body'],{'transaction':_0x35e51d}));}else if(!_0x1a8220[_0xae21('0x2d')](_0x332b7a)){_0x1a8220[_0xae21('0x2e')](_0x332b7a);_0x35240c[_0xae21('0x2e')](_0xc7c00c[_0x17e8c1][_0xae21('0x1f')](_0xe6c941[_0xae21('0x1d')],{'transaction':_0x35e51d}));}}return BPromise[_0xae21('0x2f')](_0x35240c);});})[_0xae21('0x10')](function(_0x4350d5){logger[_0xae21('0x11')](_0xae21('0x30'),_0xe6c941);if(_0x4350d5[_0xae21('0x2b')]>0x0){logger['info'](_0xae21('0x31'),_0x4350d5[0x0][_0xae21('0x32')]['id'],_0x4350d5[0x0][_0xae21('0x32')]['ContactId'],_0x4350d5[0x0][_0xae21('0x32')][_0xae21('0x33')]);}logger[_0xae21('0x13')]('GetContactDialer',_0xe6c941,JSON[_0xae21('0x14')](_0x4350d5));_0x3421b4(_0x4350d5);})[_0xae21('0x15')](function(_0x10707b){logger[_0xae21('0x16')](_0xae21('0x30'),_0x10707b[_0xae21('0x17')],_0xe6c941);_0x3520be(_0x5015fd[_0xae21('0x16')](0x1f4,_0x10707b[_0xae21('0x17')]));});});});};exports[_0xae21('0x34')]=function(_0x4110da){var _0xe88a99=this;return new Promise(function(_0xf53205,_0x2cb040){return db[_0xae21('0x24')][_0xae21('0x25')](function(_0x411a25){return db['CmHopperFinal'][_0xae21('0x1c')](_0x4110da[_0xae21('0x1d')],{'raw':_0x4110da[_0xae21('0x9')]?_0x4110da[_0xae21('0x9')]['raw']===undefined?!![]:![]:!![],'transaction':_0x411a25})[_0xae21('0x10')](function(){logger[_0xae21('0x11')]('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xae21('0x14')](_0x4110da[_0xae21('0x9')][_0xae21('0xa')]),_0x4110da[_0xae21('0x9')][_0xae21('0xa')][_0xae21('0x33')]);return db[_0xae21('0x7')][_0xae21('0x35')]({'where':_0x4110da[_0xae21('0x9')]?_0x4110da[_0xae21('0x9')][_0xae21('0xa')]||null:null,'transaction':_0x411a25});});})[_0xae21('0x10')](function(_0x19c4df){logger['info'](_0xae21('0x34'),_0x4110da);logger['debug']('MoveContactManagedDialer',_0x4110da,JSON[_0xae21('0x14')](_0x19c4df));_0xf53205(_0x19c4df);})['catch'](function(_0x28efb4){logger['error']('MoveContactManagedDialer',_0x28efb4[_0xae21('0x17')],_0x4110da);_0x2cb040(_0xe88a99['error'](0x1f4,_0x28efb4[_0xae21('0x17')]));});});};exports[_0xae21('0x36')]=function(_0xc0d1a0){var _0x263fe0=this;return new Promise(function(_0x531372,_0xd65761){return db[_0xae21('0x7')]['findAll']({'raw':_0xc0d1a0[_0xae21('0x9')]?_0xc0d1a0[_0xae21('0x9')]['raw']===undefined?!![]:![]:!![],'where':_0xc0d1a0[_0xae21('0x9')]?_0xc0d1a0[_0xae21('0x9')]['where']||null:null,'attributes':[[db[_0xae21('0x24')]['fn'](_0xae21('0x37'),db[_0xae21('0x24')]['fn']('IF',db['sequelize'][_0xae21('0x38')](_0xae21('0x39')+util[_0xae21('0x3a')](_0xae21('0x3b'),moment()[_0xae21('0x3a')](_0xae21('0x3c')))+_0xae21('0x3d')))),_0xae21('0x3e')]]})['then'](function(_0x2d512a){logger[_0xae21('0x11')](_0xae21('0x36'),_0xc0d1a0);logger[_0xae21('0x13')]('CountReScheduled',_0xc0d1a0,JSON['stringify'](_0x2d512a));_0x531372(_0x2d512a);})[_0xae21('0x15')](function(_0x4bfa2b){logger['error'](_0xae21('0x36'),_0x4bfa2b[_0xae21('0x17')],_0xc0d1a0);_0xd65761(_0x263fe0[_0xae21('0x16')](0x1f4,_0x4bfa2b[_0xae21('0x17')]));});});};exports[_0xae21('0x3f')]=function(_0x5de3a9){var _0x4eadb5=this;return new Promise(function(_0x24b185,_0x231e87){return db[_0xae21('0x22')][_0xae21('0x23')]()[_0xae21('0x10')](function(){return db[_0xae21('0x24')][_0xae21('0x25')](function(_0x4c3af0){return db[_0xae21('0x7')]['findAll']({'where':_0x5de3a9[_0xae21('0x9')]?_0x5de3a9[_0xae21('0x9')][_0xae21('0xa')]||null:null,'attributes':_0x5de3a9['options']?_0x5de3a9[_0xae21('0x9')][_0xae21('0xb')]||null:null,'limit':0x1,'order':_0x5de3a9['options']?_0x5de3a9[_0xae21('0x9')][_0xae21('0x40')]||null:null,'group':db[_0xae21('0x7')][_0xae21('0x2c')],'transaction':_0x4c3af0,'lock':_0x4c3af0[_0xae21('0x26')][_0xae21('0x41')],'include':_0x5de3a9[_0xae21('0x9')]?_0x5de3a9['options'][_0xae21('0xd')]?_[_0xae21('0xe')](_0x5de3a9[_0xae21('0x9')][_0xae21('0xd')],function(_0x4336f8){return{'model':db[_0x4336f8[_0xae21('0xf')]],'as':_0x4336f8['as'],'attributes':_0x4336f8[_0xae21('0xb')],'include':_0x4336f8[_0xae21('0xd')]?_[_0xae21('0xe')](_0x4336f8[_0xae21('0xd')],function(_0x2463db){return{'model':db[_0x2463db[_0xae21('0xf')]],'as':_0x2463db['as'],'attributes':_0x2463db[_0xae21('0xb')],'include':_0x2463db['include']?_['map'](_0x2463db[_0xae21('0xd')],function(_0x1dfdd7){return{'model':db[_0x1dfdd7['model']],'as':_0x1dfdd7['as'],'attributes':_0x1dfdd7[_0xae21('0xb')]};}):[]};}):[]};}):[]:[]})[_0xae21('0x10')](function(_0x4d0307){var _0x3ae1fa=[];for(var _0x2cffe0=0x0;_0x2cffe0<_0x4d0307[_0xae21('0x2b')];_0x2cffe0+=0x1){_0x3ae1fa[_0xae21('0x2e')](_0x4d0307[_0x2cffe0][_0xae21('0x1f')](_0x5de3a9[_0xae21('0x1d')],{'transaction':_0x4c3af0}));}return BPromise['all'](_0x3ae1fa);});})[_0xae21('0x10')](function(_0x2e4f2e){logger[_0xae21('0x11')](_0xae21('0x3f'),_0x5de3a9);logger[_0xae21('0x13')](_0xae21('0x3f'),_0x5de3a9,JSON[_0xae21('0x14')](_0x2e4f2e));_0x24b185(_0x2e4f2e);})[_0xae21('0x15')](function(_0x36be4c){logger['error'](_0xae21('0x3f'),_0x36be4c[_0xae21('0x17')],_0x5de3a9);_0x231e87(_0x4eadb5['error'](0x1f4,_0x36be4c[_0xae21('0x17')]));});});});};exports[_0xae21('0x42')]=function(_0x47726f){var _0x3073fc=this;return new Promise(function(_0x13651f,_0x334920){db[_0xae21('0x22')][_0xae21('0x23')]()['then'](function(_0x446848){return db['CmHopper']['findAll']({'raw':_0x47726f['options']?_0x47726f[_0xae21('0x9')][_0xae21('0x1a')]===undefined?!![]:![]:!![],'where':_0x47726f[_0xae21('0x9')]?_0x47726f['options'][_0xae21('0xa')]||null:null,'attributes':_0x47726f['options']?_0x47726f[_0xae21('0x9')]['attributes']||null:null,'limit':_0x47726f[_0xae21('0x9')]?_0x47726f[_0xae21('0x9')][_0xae21('0xc')]||null:null,'include':_0x47726f['options']?_0x47726f['options'][_0xae21('0xd')]?_[_0xae21('0xe')](_0x47726f[_0xae21('0x9')][_0xae21('0xd')],function(_0x535aa5){return{'model':db[_0x535aa5[_0xae21('0xf')]],'as':_0x535aa5['as'],'attributes':_0x535aa5['as']===_0xae21('0x27')?_[_0xae21('0x28')](_0x446848):_0x535aa5[_0xae21('0xb')],'include':_0x535aa5[_0xae21('0xd')]?_[_0xae21('0xe')](_0x535aa5[_0xae21('0xd')],function(_0x1284ee){return{'model':db[_0x1284ee[_0xae21('0xf')]],'as':_0x1284ee['as'],'attributes':_0x1284ee['attributes'],'include':_0x1284ee['include']?_[_0xae21('0xe')](_0x1284ee['include'],function(_0x1ea106){return{'model':db[_0x1ea106['model']],'as':_0x1ea106['as'],'attributes':_0x1ea106[_0xae21('0xb')]};}):[]};}):[]};}):[]:[]})[_0xae21('0x10')](function(_0x5234f8){logger[_0xae21('0x11')]('GetCmHopper',_0x47726f);logger[_0xae21('0x13')](_0xae21('0x12'),_0x47726f,JSON['stringify'](_0x5234f8));_0x13651f(_0x5234f8);})[_0xae21('0x15')](function(_0x5d45e3){logger[_0xae21('0x16')](_0xae21('0x12'),_0x5d45e3[_0xae21('0x17')],_0x47726f);_0x334920(_0x3073fc['error'](0x1f4,_0x5d45e3[_0xae21('0x17')]));});});});};exports[_0xae21('0x43')]=function(_0x158ae9){var _0x4c2e89=this;return new Promise(function(_0x13fb49,_0x348447){return db[_0xae21('0x22')][_0xae21('0x44')]({'raw':!![],'where':{'phone':_0x158ae9[_0xae21('0x9')]['where'][_0xae21('0x45')]},'attributes':['id',_0xae21('0x46')],'order':[['id',_0xae21('0x47')]]})[_0xae21('0x10')](function(_0x5116ed){logger[_0xae21('0x11')](_0xae21('0x48'),_0x158ae9);logger['debug'](_0xae21('0x48'),_0x158ae9,JSON['stringify'](_0x5116ed));_0x13fb49(_0x5116ed);})[_0xae21('0x15')](function(_0x3e024b){logger[_0xae21('0x16')](_0xae21('0x48'),_0x3e024b[_0xae21('0x17')],_0x158ae9);_0x348447(_0x4c2e89[_0xae21('0x16')](0x1f4,_0x3e024b['message']));});});};exports[_0xae21('0x49')]=function(_0x153784){var _0x29c82f=this;return new Promise(function(_0x1f54c1,_0x266b4b){return db[_0xae21('0x24')][_0xae21('0x25')](function(_0x3a3287){var _0x343bce=_0x153784[_0xae21('0x9')]&&_0x153784[_0xae21('0x9')][_0xae21('0xa')]?_0x153784['options'][_0xae21('0xa')]:{};return db[_0xae21('0x7')][_0xae21('0x1f')](_0x153784['body'],{'where':_0x343bce,'transaction':_0x3a3287})[_0xae21('0x10')](function(_0x970d){logger[_0xae21('0x11')](_0xae21('0x49'),_0x153784);logger[_0xae21('0x13')]('ResetActiveCalls',_0x153784,JSON[_0xae21('0x14')](_0x970d));_0x1f54c1(_0x970d);})[_0xae21('0x15')](function(_0x42a3d9){logger[_0xae21('0x16')](_0xae21('0x49'),_0x42a3d9[_0xae21('0x17')],_0x153784);_0x266b4b(_0x29c82f[_0xae21('0x16')](0x1f4,_0x42a3d9['message']));});});});};exports[_0xae21('0x4a')]=function(_0x2822e2){var _0x23d217=this;var _0x37369b=_0x2822e2['body'][_0xae21('0xa')][_0xae21('0x4b')];var _0x3bfe9d=_0x2822e2[_0xae21('0x1d')]['where'][_0xae21('0x4c')];var _0x2457ee=_0x2822e2[_0xae21('0x1d')][_0xae21('0xa')][_0xae21('0x4d')];return new Promise(function(_0x3d6f1a,_0x41cc91){return db[_0xae21('0x7')][_0xae21('0x8')]({'where':{'voiceQueueId':{'$in':_0x37369b},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0xae21('0x38')]('NOW()\x20+\x20INTERVAL\x20'+_0x3bfe9d+_0xae21('0x4e')),'$gt':db[_0xae21('0x24')][_0xae21('0x38')](_0xae21('0x4f'))}},'UserId':{'$in':_0x2457ee}},'include':[{'model':db[_0xae21('0x22')],'as':'Contact'},{'model':db[_0xae21('0x29')],'as':_0xae21('0x50'),'attributes':['id',_0xae21('0x51'),_0xae21('0x2a')]},{'model':db['CmList'],'as':_0xae21('0x52')}]})[_0xae21('0x10')](function(_0x199350){if(_0x199350[_0xae21('0x2b')]>0x0){return db[_0xae21('0x24')]['transaction'](function(_0x241524){return db[_0xae21('0x7')]['update']({'recallmeNotifiedDate':db['sequelize'][_0xae21('0x38')]('NOW()')},{'where':{'id':{'$in':_[_0xae21('0xe')](_0x199350,'id')}},'transaction':_0x241524})['then'](function(){_0x3d6f1a(_0x199350);})[_0xae21('0x15')](function(_0x1cbb31){logger['error']('CmHopperHandlePreviewRecallNotifications',_0x1cbb31[_0xae21('0x17')],_0x2822e2);_0x41cc91(_0x23d217[_0xae21('0x16')](0x1f4,_0x1cbb31['message']));});})[_0xae21('0x15')](function(_0x4b5c58){logger[_0xae21('0x16')](_0xae21('0x4a'),_0x4b5c58[_0xae21('0x17')],_0x2822e2);_0x41cc91(_0x23d217['error'](0x1f4,_0x4b5c58[_0xae21('0x17')]));});}else{_0x3d6f1a(_0x199350);}});});};
\ No newline at end of file
index 4363b66..94a9b90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f5a=['get','describe','getOpenContacts','/timezones','getTimezones','/:id','show','post','/preview','getPreview','/timezone','getTimezone','put','update','delete','destroy','exports','express','Router','isAuthenticated','index'];(function(_0xd0cd0b,_0x490956){var _0x59cced=function(_0x567251){while(--_0x567251){_0xd0cd0b['push'](_0xd0cd0b['shift']());}};_0x59cced(++_0x490956);}(_0x2f5a,0xf8));var _0xa2f5=function(_0x170d16,_0x443724){_0x170d16=_0x170d16-0x0;var _0x1bf864=_0x2f5a[_0x170d16];return _0x1bf864;};'use strict';var express=require(_0xa2f5('0x0'));var router=express[_0xa2f5('0x1')]();var auth=require('../../components/auth/service');var controller=require('./cmHopper.controller');router['get']('/',auth[_0xa2f5('0x2')](),controller[_0xa2f5('0x3')]);router[_0xa2f5('0x4')]('/describe',auth[_0xa2f5('0x2')](),controller[_0xa2f5('0x5')]);router['get']('/opencontacts',auth['isAuthenticated'](),controller[_0xa2f5('0x6')]);router[_0xa2f5('0x4')](_0xa2f5('0x7'),auth[_0xa2f5('0x2')](),controller[_0xa2f5('0x8')]);router[_0xa2f5('0x4')](_0xa2f5('0x9'),auth[_0xa2f5('0x2')](),controller[_0xa2f5('0xa')]);router[_0xa2f5('0x4')]('/:id/previewrecall',auth['isAuthenticated'](),controller['getPreviewRecall']);router[_0xa2f5('0xb')]('/',auth[_0xa2f5('0x2')](),controller['create']);router[_0xa2f5('0xb')](_0xa2f5('0xc'),auth[_0xa2f5('0x2')](),controller[_0xa2f5('0xd')]);router[_0xa2f5('0xb')](_0xa2f5('0xe'),auth[_0xa2f5('0x2')](),controller[_0xa2f5('0xf')]);router[_0xa2f5('0x10')](_0xa2f5('0x9'),auth[_0xa2f5('0x2')](),controller[_0xa2f5('0x11')]);router[_0xa2f5('0x12')]('/:id',auth[_0xa2f5('0x2')](),controller[_0xa2f5('0x13')]);module[_0xa2f5('0x14')]=router;
\ No newline at end of file
+var _0x827b=['update','delete','destroy','exports','Router','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','getOpenContacts','/timezones','getTimezones','/:id','show','create','post','/preview','getPreview','/timezone','getTimezone','put'];(function(_0x460fd7,_0x2012db){var _0x44d1c2=function(_0x545e11){while(--_0x545e11){_0x460fd7['push'](_0x460fd7['shift']());}};_0x44d1c2(++_0x2012db);}(_0x827b,0x1a2));var _0xb827=function(_0x3ad1a1,_0x28f887){_0x3ad1a1=_0x3ad1a1-0x0;var _0x5bd506=_0x827b[_0x3ad1a1];return _0x5bd506;};'use strict';var express=require('express');var router=express[_0xb827('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xb827('0x1'));router[_0xb827('0x2')]('/',auth[_0xb827('0x3')](),controller[_0xb827('0x4')]);router[_0xb827('0x2')](_0xb827('0x5'),auth[_0xb827('0x3')](),controller[_0xb827('0x6')]);router[_0xb827('0x2')]('/opencontacts',auth['isAuthenticated'](),controller[_0xb827('0x7')]);router[_0xb827('0x2')](_0xb827('0x8'),auth[_0xb827('0x3')](),controller[_0xb827('0x9')]);router[_0xb827('0x2')](_0xb827('0xa'),auth['isAuthenticated'](),controller[_0xb827('0xb')]);router[_0xb827('0x2')]('/:id/previewrecall',auth[_0xb827('0x3')](),controller['getPreviewRecall']);router['post']('/',auth[_0xb827('0x3')](),controller[_0xb827('0xc')]);router[_0xb827('0xd')](_0xb827('0xe'),auth[_0xb827('0x3')](),controller[_0xb827('0xf')]);router[_0xb827('0xd')](_0xb827('0x10'),auth[_0xb827('0x3')](),controller[_0xb827('0x11')]);router[_0xb827('0x12')](_0xb827('0xa'),auth['isAuthenticated'](),controller[_0xb827('0x13')]);router[_0xb827('0x14')](_0xb827('0xa'),auth[_0xb827('0x3')](),controller[_0xb827('0x15')]);module[_0xb827('0x16')]=router;
\ No newline at end of file
index a71f00e..ea25a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df4=['exports','INTEGER','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0xa405ce,_0x332697){var _0x519036=function(_0x541dbb){while(--_0x541dbb){_0xa405ce['push'](_0xa405ce['shift']());}};_0x519036(++_0x332697);}(_0x5df4,0xf6));var _0x45df=function(_0xb53606,_0x38d222){_0xb53606=_0xb53606-0x0;var _0x1eff58=_0x5df4[_0xb53606];return _0x1eff58;};'use strict';var moment=require(_0x45df('0x0'));var Sequelize=require(_0x45df('0x1'));module[_0x45df('0x2')]={'CmHopperId':{'type':Sequelize[_0x45df('0x3')]},'phone':{'type':Sequelize[_0x45df('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x45df('0x5')],'defaultValue':moment()[_0x45df('0x6')](_0x45df('0x7'))},'countbusyretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x45df('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2370=['sequelize','exports','INTEGER','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment'];(function(_0x1340a1,_0x22bceb){var _0x50ce9f=function(_0x577b40){while(--_0x577b40){_0x1340a1['push'](_0x1340a1['shift']());}};_0x50ce9f(++_0x22bceb);}(_0x2370,0xae));var _0x0237=function(_0x32ca7a,_0x4a069d){_0x32ca7a=_0x32ca7a-0x0;var _0xab41b9=_0x2370[_0x32ca7a];return _0xab41b9;};'use strict';var moment=require(_0x0237('0x0'));var Sequelize=require(_0x0237('0x1'));module[_0x0237('0x2')]={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x0237('0x4')],'defaultValue':moment()[_0x0237('0x5')](_0x0237('0x6'))},'countbusyretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x0237('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index e1c2b0c..d24cf80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea9=['UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','CmHopperAdditionalPhone','fieldName','model','query','keys','filters','attributes','fields','length','hasOwnProperty','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','include','rows','catch','show','intersection','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','CmHopperAdditionalPhones'];(function(_0x5f4068,_0x18b82c){var _0x4d45cf=function(_0x5c6c66){while(--_0x5c6c66){_0x5f4068['push'](_0x5f4068['shift']());}};_0x4d45cf(++_0x18b82c);}(_0xbea9,0x1df));var _0x9bea=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xbea9[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9bea('0x0'));var jsonpatch=require(_0x9bea('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9bea('0x2'));var Mustache=require(_0x9bea('0x3'));var util=require(_0x9bea('0x4'));var path=require(_0x9bea('0x5'));var sox=require(_0x9bea('0x6'));var csv=require(_0x9bea('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9bea('0x8'));var _=require('lodash');var squel=require(_0x9bea('0x9'));var crypto=require(_0x9bea('0xa'));var jsforce=require(_0x9bea('0xb'));var deskjs=require(_0x9bea('0xc'));var toCsv=require(_0x9bea('0x7'));var querystring=require(_0x9bea('0xd'));var Papa=require(_0x9bea('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9bea('0xf'));var hardwareService=require(_0x9bea('0x10'));var logger=require(_0x9bea('0x11'))(_0x9bea('0x12'));var utils=require('../../config/utils');var config=require(_0x9bea('0x13'));var licenseUtil=require(_0x9bea('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x220f1d,_0xb1995d){_0xb1995d=_0xb1995d||0xcc;return function(_0x5d2055){if(_0x5d2055){return _0x220f1d[_0x9bea('0x15')](_0xb1995d);}return _0x220f1d[_0x9bea('0x16')](_0xb1995d)[_0x9bea('0x17')]();};}function respondWithResult(_0x592586,_0x34a2e2){_0x34a2e2=_0x34a2e2||0xc8;return function(_0x327dce){if(_0x327dce){return _0x592586[_0x9bea('0x16')](_0x34a2e2)[_0x9bea('0x18')](_0x327dce);}};}function respondWithFilteredResult(_0x386f80,_0x4838d5){return function(_0x4eda6f){if(_0x4eda6f){var _0x55d965=typeof _0x4838d5[_0x9bea('0x19')]===_0x9bea('0x1a')&&typeof _0x4838d5['limit']==='undefined';var _0x1b897f=_0x4eda6f[_0x9bea('0x1b')];var _0x7b0fa5=_0x55d965?0x0:_0x4838d5['offset'];var _0x5887b6=_0x55d965?_0x4eda6f[_0x9bea('0x1b')]:_0x4838d5[_0x9bea('0x19')]+_0x4838d5[_0x9bea('0x1c')];var _0x40eb8e;if(_0x5887b6>=_0x1b897f){_0x5887b6=_0x1b897f;_0x40eb8e=0xc8;}else{_0x40eb8e=0xce;}_0x386f80[_0x9bea('0x16')](_0x40eb8e);return _0x386f80['set'](_0x9bea('0x1d'),_0x7b0fa5+'-'+_0x5887b6+'/'+_0x1b897f)[_0x9bea('0x18')](_0x4eda6f);}return null;};}function patchUpdates(_0x2f699c){return function(_0xae1baa){try{jsonpatch[_0x9bea('0x1e')](_0xae1baa,_0x2f699c,!![]);}catch(_0x43709d){return BPromise[_0x9bea('0x1f')](_0x43709d);}return _0xae1baa[_0x9bea('0x20')]();};}function saveUpdates(_0x485cdd,_0x19a2a6){return function(_0x147b8e){if(_0x147b8e){return _0x147b8e[_0x9bea('0x21')](_0x485cdd)[_0x9bea('0x22')](function(_0x1a12cd){return _0x1a12cd;});}return null;};}function removeEntity(_0x5efd0f,_0x31d381){return function(_0x4e1f73){if(_0x4e1f73){return _0x4e1f73[_0x9bea('0x23')]()[_0x9bea('0x22')](function(){var _0x2e4620=_0x4e1f73[_0x9bea('0x24')]({'plain':!![]});var _0xebfb0='CmHopperAdditionalPhones';return db[_0x9bea('0x25')]['destroy']({'where':{'type':_0xebfb0,'resourceId':_0x2e4620['id']}})[_0x9bea('0x22')](function(){return _0x4e1f73;});})[_0x9bea('0x22')](function(){_0x5efd0f[_0x9bea('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e97e5,_0x2d788b){return function(_0x2f7349){if(!_0x2f7349){_0x4e97e5[_0x9bea('0x15')](0x194);}return _0x2f7349;};}function handleError(_0x512468,_0x508f33){_0x508f33=_0x508f33||0x1f4;return function(_0x21abea){logger[_0x9bea('0x26')](_0x21abea[_0x9bea('0x27')]);if(_0x21abea['name']){delete _0x21abea[_0x9bea('0x28')];}_0x512468[_0x9bea('0x16')](_0x508f33)[_0x9bea('0x29')](_0x21abea);};}exports[_0x9bea('0x2a')]=function(_0x55128e,_0x2b0a09){var _0x3913ff={},_0x4d70e0={},_0x2392d8={'count':0x0,'rows':[]};var _0x4e0c80=_[_0x9bea('0x2b')](db[_0x9bea('0x2c')]['rawAttributes'],function(_0x40b9d6){return{'name':_0x40b9d6[_0x9bea('0x2d')],'type':_0x40b9d6['type']['key']};});_0x4d70e0[_0x9bea('0x2e')]=_[_0x9bea('0x2b')](_0x4e0c80,'name');_0x4d70e0[_0x9bea('0x2f')]=_[_0x9bea('0x30')](_0x55128e['query']);_0x4d70e0[_0x9bea('0x31')]=_['intersection'](_0x4d70e0[_0x9bea('0x2e')],_0x4d70e0['query']);_0x3913ff[_0x9bea('0x32')]=_['intersection'](_0x4d70e0[_0x9bea('0x2e')],qs[_0x9bea('0x33')](_0x55128e[_0x9bea('0x2f')][_0x9bea('0x33')]));_0x3913ff['attributes']=_0x3913ff[_0x9bea('0x32')][_0x9bea('0x34')]?_0x3913ff[_0x9bea('0x32')]:_0x4d70e0[_0x9bea('0x2e')];if(!_0x55128e[_0x9bea('0x2f')][_0x9bea('0x35')]('nolimit')){_0x3913ff[_0x9bea('0x1c')]=qs[_0x9bea('0x1c')](_0x55128e[_0x9bea('0x2f')][_0x9bea('0x1c')]);_0x3913ff[_0x9bea('0x19')]=qs[_0x9bea('0x19')](_0x55128e[_0x9bea('0x2f')][_0x9bea('0x19')]);}_0x3913ff['order']=qs['sort'](_0x55128e[_0x9bea('0x2f')][_0x9bea('0x36')]);_0x3913ff['where']=qs[_0x9bea('0x31')](_[_0x9bea('0x37')](_0x55128e[_0x9bea('0x2f')],_0x4d70e0['filters']),_0x4e0c80);if(_0x55128e[_0x9bea('0x2f')]['filter']){_0x3913ff[_0x9bea('0x38')]=_['merge'](_0x3913ff[_0x9bea('0x38')],{'$or':_['map'](_0x4e0c80,function(_0x108e33){if(_0x108e33['type']!==_0x9bea('0x39')){var _0x544556={};_0x544556[_0x108e33[_0x9bea('0x28')]]={'$like':'%'+_0x55128e[_0x9bea('0x2f')][_0x9bea('0x3a')]+'%'};return _0x544556;}})});}_0x3913ff=_[_0x9bea('0x3b')]({},_0x3913ff,_0x55128e[_0x9bea('0x3c')]);var _0x585ea1={'where':_0x3913ff['where']};return db[_0x9bea('0x2c')][_0x9bea('0x1b')](_0x585ea1)['then'](function(_0x355ead){_0x2392d8['count']=_0x355ead;if(_0x55128e[_0x9bea('0x2f')][_0x9bea('0x3d')]){_0x3913ff[_0x9bea('0x3e')]=[{'all':!![]}];}return db[_0x9bea('0x2c')]['findAll'](_0x3913ff);})['then'](function(_0x4439a5){_0x2392d8[_0x9bea('0x3f')]=_0x4439a5;return _0x2392d8;})[_0x9bea('0x22')](respondWithFilteredResult(_0x2b0a09,_0x3913ff))[_0x9bea('0x40')](handleError(_0x2b0a09,null));};exports[_0x9bea('0x41')]=function(_0x200c72,_0x325266){var _0x55c0e2={'raw':!![],'where':{'id':_0x200c72['params']['id']}},_0x53915c={};_0x53915c[_0x9bea('0x2e')]=_[_0x9bea('0x30')](db[_0x9bea('0x2c')]['rawAttributes']);_0x53915c[_0x9bea('0x2f')]=_[_0x9bea('0x30')](_0x200c72[_0x9bea('0x2f')]);_0x53915c[_0x9bea('0x31')]=_[_0x9bea('0x42')](_0x53915c['model'],_0x53915c[_0x9bea('0x2f')]);_0x55c0e2['attributes']=_['intersection'](_0x53915c[_0x9bea('0x2e')],qs[_0x9bea('0x33')](_0x200c72['query'][_0x9bea('0x33')]));_0x55c0e2[_0x9bea('0x32')]=_0x55c0e2[_0x9bea('0x32')][_0x9bea('0x34')]?_0x55c0e2['attributes']:_0x53915c[_0x9bea('0x2e')];if(_0x200c72[_0x9bea('0x2f')][_0x9bea('0x3d')]){_0x55c0e2[_0x9bea('0x3e')]=[{'all':!![]}];}_0x55c0e2=_[_0x9bea('0x3b')]({},_0x55c0e2,_0x200c72[_0x9bea('0x3c')]);return db[_0x9bea('0x2c')][_0x9bea('0x43')](_0x55c0e2)[_0x9bea('0x22')](handleEntityNotFound(_0x325266,null))[_0x9bea('0x22')](respondWithResult(_0x325266,null))['catch'](handleError(_0x325266,null));};exports['create']=function(_0x530175,_0x5add23){return db[_0x9bea('0x2c')][_0x9bea('0x44')](_0x530175[_0x9bea('0x45')],{})['then'](function(_0x59f31e){var _0x35b738=_0x530175['user'][_0x9bea('0x24')]({'plain':!![]});if(!_0x35b738)throw new Error(_0x9bea('0x46'));if(_0x35b738[_0x9bea('0x47')]===_0x9bea('0x48')){var _0x1fda97=_0x59f31e[_0x9bea('0x24')]({'plain':!![]});var _0x4c9f01=_0x9bea('0x49');return db[_0x9bea('0x4a')][_0x9bea('0x43')]({'where':{'name':_0x4c9f01,'userProfileId':_0x35b738[_0x9bea('0x4b')]},'raw':!![]})['then'](function(_0x4a8103){if(_0x4a8103&&_0x4a8103[_0x9bea('0x4c')]===0x0){return db[_0x9bea('0x25')][_0x9bea('0x44')]({'name':_0x1fda97[_0x9bea('0x28')],'resourceId':_0x1fda97['id'],'type':_0x4a8103['name'],'sectionId':_0x4a8103['id']},{})[_0x9bea('0x22')](function(){return _0x59f31e;});}else{return _0x59f31e;}})['catch'](function(_0x57cb83){logger[_0x9bea('0x26')](_0x9bea('0x4d'),_0x57cb83);throw _0x57cb83;});}return _0x59f31e;})[_0x9bea('0x22')](respondWithResult(_0x5add23,0xc9))[_0x9bea('0x40')](handleError(_0x5add23,null));};exports[_0x9bea('0x21')]=function(_0x415d70,_0x4b2672){if(_0x415d70['body']['id']){delete _0x415d70[_0x9bea('0x45')]['id'];}return db[_0x9bea('0x2c')]['find']({'where':{'id':_0x415d70[_0x9bea('0x4e')]['id']}})[_0x9bea('0x22')](handleEntityNotFound(_0x4b2672,null))[_0x9bea('0x22')](saveUpdates(_0x415d70[_0x9bea('0x45')],null))[_0x9bea('0x22')](respondWithResult(_0x4b2672,null))[_0x9bea('0x40')](handleError(_0x4b2672,null));};exports[_0x9bea('0x23')]=function(_0x3d25c9,_0x1c05cd){return db[_0x9bea('0x2c')][_0x9bea('0x43')]({'where':{'id':_0x3d25c9['params']['id']}})[_0x9bea('0x22')](handleEntityNotFound(_0x1c05cd,null))[_0x9bea('0x22')](removeEntity(_0x1c05cd,null))[_0x9bea('0x40')](handleError(_0x1c05cd,null));};
\ No newline at end of file
+var _0xecd6=['../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','set','json','reject','save','then','get','CmHopperAdditionalPhones','destroy','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','include','rows','catch','show','includeAll','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','lodash','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xecd6,0x1c2));var _0x6ecd=function(_0x6c7cc2,_0x39df39){_0x6c7cc2=_0x6c7cc2-0x0;var _0x5544a7=_0xecd6[_0x6c7cc2];return _0x5544a7;};'use strict';var emlformat=require(_0x6ecd('0x0'));var rimraf=require(_0x6ecd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6ecd('0x2'));var rp=require(_0x6ecd('0x3'));var moment=require(_0x6ecd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6ecd('0x5'));var util=require('util');var path=require(_0x6ecd('0x6'));var sox=require(_0x6ecd('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6ecd('0x8'));var squel=require('squel');var crypto=require(_0x6ecd('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6ecd('0xa'));var querystring=require('querystring');var Papa=require(_0x6ecd('0xb'));var Redis=require(_0x6ecd('0xc'));var authService=require(_0x6ecd('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x6ecd('0xe'));var hardwareService=require(_0x6ecd('0xf'));var logger=require(_0x6ecd('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x6ecd('0x11'));var licenseUtil=require(_0x6ecd('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a70dd,_0xd67ede){_0xd67ede=_0xd67ede||0xcc;return function(_0x21dc8c){if(_0x21dc8c){return _0x4a70dd[_0x6ecd('0x13')](_0xd67ede);}return _0x4a70dd[_0x6ecd('0x14')](_0xd67ede)[_0x6ecd('0x15')]();};}function respondWithResult(_0x30ca2e,_0x5d1b5c){_0x5d1b5c=_0x5d1b5c||0xc8;return function(_0x54bcc6){if(_0x54bcc6){return _0x30ca2e[_0x6ecd('0x14')](_0x5d1b5c)['json'](_0x54bcc6);}};}function respondWithFilteredResult(_0x11737f,_0xefa669){return function(_0x58aaa5){if(_0x58aaa5){var _0x434c07=typeof _0xefa669[_0x6ecd('0x16')]==='undefined'&&typeof _0xefa669[_0x6ecd('0x17')]===_0x6ecd('0x18');var _0x626395=_0x58aaa5[_0x6ecd('0x19')];var _0x3cbeb8=_0x434c07?0x0:_0xefa669[_0x6ecd('0x16')];var _0x22650d=_0x434c07?_0x58aaa5[_0x6ecd('0x19')]:_0xefa669['offset']+_0xefa669[_0x6ecd('0x17')];var _0x4acaec;if(_0x22650d>=_0x626395){_0x22650d=_0x626395;_0x4acaec=0xc8;}else{_0x4acaec=0xce;}_0x11737f[_0x6ecd('0x14')](_0x4acaec);return _0x11737f[_0x6ecd('0x1a')]('Content-Range',_0x3cbeb8+'-'+_0x22650d+'/'+_0x626395)[_0x6ecd('0x1b')](_0x58aaa5);}return null;};}function patchUpdates(_0xb19e88){return function(_0x3fb3d2){try{jsonpatch['apply'](_0x3fb3d2,_0xb19e88,!![]);}catch(_0x15cce0){return BPromise[_0x6ecd('0x1c')](_0x15cce0);}return _0x3fb3d2[_0x6ecd('0x1d')]();};}function saveUpdates(_0x49d084,_0x35d1bd){return function(_0x338250){if(_0x338250){return _0x338250['update'](_0x49d084)[_0x6ecd('0x1e')](function(_0x4c8759){return _0x4c8759;});}return null;};}function removeEntity(_0x354694,_0x2e67b4){return function(_0x480883){if(_0x480883){return _0x480883['destroy']()['then'](function(){var _0x46935b=_0x480883[_0x6ecd('0x1f')]({'plain':!![]});var _0xba7c4c=_0x6ecd('0x20');return db['UserProfileResource'][_0x6ecd('0x21')]({'where':{'type':_0xba7c4c,'resourceId':_0x46935b['id']}})[_0x6ecd('0x1e')](function(){return _0x480883;});})[_0x6ecd('0x1e')](function(){_0x354694[_0x6ecd('0x14')](0xcc)[_0x6ecd('0x15')]();});}};}function handleEntityNotFound(_0x445883,_0x4b9b7b){return function(_0x41e54f){if(!_0x41e54f){_0x445883[_0x6ecd('0x13')](0x194);}return _0x41e54f;};}function handleError(_0xbfd80f,_0xf141aa){_0xf141aa=_0xf141aa||0x1f4;return function(_0x253577){logger[_0x6ecd('0x22')](_0x253577[_0x6ecd('0x23')]);if(_0x253577['name']){delete _0x253577[_0x6ecd('0x24')];}_0xbfd80f[_0x6ecd('0x14')](_0xf141aa)[_0x6ecd('0x25')](_0x253577);};}exports[_0x6ecd('0x26')]=function(_0x4ba4ec,_0x50719c){var _0x1575c0={},_0x1f6b8a={},_0x37e054={'count':0x0,'rows':[]};var _0x230ddc=_[_0x6ecd('0x27')](db[_0x6ecd('0x28')][_0x6ecd('0x29')],function(_0x579bac){return{'name':_0x579bac[_0x6ecd('0x2a')],'type':_0x579bac['type']['key']};});_0x1f6b8a[_0x6ecd('0x2b')]=_[_0x6ecd('0x27')](_0x230ddc,_0x6ecd('0x24'));_0x1f6b8a[_0x6ecd('0x2c')]=_[_0x6ecd('0x2d')](_0x4ba4ec[_0x6ecd('0x2c')]);_0x1f6b8a[_0x6ecd('0x2e')]=_[_0x6ecd('0x2f')](_0x1f6b8a['model'],_0x1f6b8a[_0x6ecd('0x2c')]);_0x1575c0[_0x6ecd('0x30')]=_[_0x6ecd('0x2f')](_0x1f6b8a[_0x6ecd('0x2b')],qs[_0x6ecd('0x31')](_0x4ba4ec[_0x6ecd('0x2c')][_0x6ecd('0x31')]));_0x1575c0[_0x6ecd('0x30')]=_0x1575c0[_0x6ecd('0x30')][_0x6ecd('0x32')]?_0x1575c0['attributes']:_0x1f6b8a[_0x6ecd('0x2b')];if(!_0x4ba4ec[_0x6ecd('0x2c')]['hasOwnProperty'](_0x6ecd('0x33'))){_0x1575c0[_0x6ecd('0x17')]=qs['limit'](_0x4ba4ec[_0x6ecd('0x2c')][_0x6ecd('0x17')]);_0x1575c0[_0x6ecd('0x16')]=qs[_0x6ecd('0x16')](_0x4ba4ec[_0x6ecd('0x2c')][_0x6ecd('0x16')]);}_0x1575c0[_0x6ecd('0x34')]=qs[_0x6ecd('0x35')](_0x4ba4ec[_0x6ecd('0x2c')][_0x6ecd('0x35')]);_0x1575c0['where']=qs[_0x6ecd('0x2e')](_[_0x6ecd('0x36')](_0x4ba4ec[_0x6ecd('0x2c')],_0x1f6b8a[_0x6ecd('0x2e')]),_0x230ddc);if(_0x4ba4ec[_0x6ecd('0x2c')][_0x6ecd('0x37')]){_0x1575c0[_0x6ecd('0x38')]=_['merge'](_0x1575c0[_0x6ecd('0x38')],{'$or':_[_0x6ecd('0x27')](_0x230ddc,function(_0x4fc3b2){if(_0x4fc3b2[_0x6ecd('0x39')]!==_0x6ecd('0x3a')){var _0x42d31e={};_0x42d31e[_0x4fc3b2[_0x6ecd('0x24')]]={'$like':'%'+_0x4ba4ec[_0x6ecd('0x2c')][_0x6ecd('0x37')]+'%'};return _0x42d31e;}})});}_0x1575c0=_[_0x6ecd('0x3b')]({},_0x1575c0,_0x4ba4ec['options']);var _0x349950={'where':_0x1575c0[_0x6ecd('0x38')]};return db[_0x6ecd('0x28')][_0x6ecd('0x19')](_0x349950)[_0x6ecd('0x1e')](function(_0x159ff1){_0x37e054[_0x6ecd('0x19')]=_0x159ff1;if(_0x4ba4ec['query']['includeAll']){_0x1575c0[_0x6ecd('0x3c')]=[{'all':!![]}];}return db['CmHopperAdditionalPhone']['findAll'](_0x1575c0);})[_0x6ecd('0x1e')](function(_0x3973d1){_0x37e054[_0x6ecd('0x3d')]=_0x3973d1;return _0x37e054;})['then'](respondWithFilteredResult(_0x50719c,_0x1575c0))[_0x6ecd('0x3e')](handleError(_0x50719c,null));};exports[_0x6ecd('0x3f')]=function(_0x4ac3ed,_0x5889ae){var _0x2acd4e={'raw':!![],'where':{'id':_0x4ac3ed['params']['id']}},_0x179b8b={};_0x179b8b[_0x6ecd('0x2b')]=_[_0x6ecd('0x2d')](db[_0x6ecd('0x28')][_0x6ecd('0x29')]);_0x179b8b[_0x6ecd('0x2c')]=_[_0x6ecd('0x2d')](_0x4ac3ed[_0x6ecd('0x2c')]);_0x179b8b[_0x6ecd('0x2e')]=_[_0x6ecd('0x2f')](_0x179b8b[_0x6ecd('0x2b')],_0x179b8b[_0x6ecd('0x2c')]);_0x2acd4e['attributes']=_[_0x6ecd('0x2f')](_0x179b8b['model'],qs[_0x6ecd('0x31')](_0x4ac3ed[_0x6ecd('0x2c')][_0x6ecd('0x31')]));_0x2acd4e['attributes']=_0x2acd4e[_0x6ecd('0x30')]['length']?_0x2acd4e[_0x6ecd('0x30')]:_0x179b8b[_0x6ecd('0x2b')];if(_0x4ac3ed[_0x6ecd('0x2c')][_0x6ecd('0x40')]){_0x2acd4e[_0x6ecd('0x3c')]=[{'all':!![]}];}_0x2acd4e=_[_0x6ecd('0x3b')]({},_0x2acd4e,_0x4ac3ed[_0x6ecd('0x41')]);return db['CmHopperAdditionalPhone'][_0x6ecd('0x42')](_0x2acd4e)[_0x6ecd('0x1e')](handleEntityNotFound(_0x5889ae,null))[_0x6ecd('0x1e')](respondWithResult(_0x5889ae,null))['catch'](handleError(_0x5889ae,null));};exports[_0x6ecd('0x43')]=function(_0x25d73,_0x858e7e){return db['CmHopperAdditionalPhone'][_0x6ecd('0x43')](_0x25d73['body'],{})[_0x6ecd('0x1e')](function(_0x5cbe79){var _0x1abb0a=_0x25d73[_0x6ecd('0x44')][_0x6ecd('0x1f')]({'plain':!![]});if(!_0x1abb0a)throw new Error(_0x6ecd('0x45'));if(_0x1abb0a[_0x6ecd('0x46')]===_0x6ecd('0x44')){var _0x565eed=_0x5cbe79[_0x6ecd('0x1f')]({'plain':!![]});var _0xd0ee6f=_0x6ecd('0x20');return db['UserProfileSection'][_0x6ecd('0x42')]({'where':{'name':_0xd0ee6f,'userProfileId':_0x1abb0a[_0x6ecd('0x47')]},'raw':!![]})[_0x6ecd('0x1e')](function(_0x498e2e){if(_0x498e2e&&_0x498e2e[_0x6ecd('0x48')]===0x0){return db[_0x6ecd('0x49')][_0x6ecd('0x43')]({'name':_0x565eed[_0x6ecd('0x24')],'resourceId':_0x565eed['id'],'type':_0x498e2e['name'],'sectionId':_0x498e2e['id']},{})['then'](function(){return _0x5cbe79;});}else{return _0x5cbe79;}})[_0x6ecd('0x3e')](function(_0x4ffb3f){logger[_0x6ecd('0x22')](_0x6ecd('0x4a'),_0x4ffb3f);throw _0x4ffb3f;});}return _0x5cbe79;})[_0x6ecd('0x1e')](respondWithResult(_0x858e7e,0xc9))[_0x6ecd('0x3e')](handleError(_0x858e7e,null));};exports[_0x6ecd('0x4b')]=function(_0x452fbb,_0x36c28c){if(_0x452fbb[_0x6ecd('0x4c')]['id']){delete _0x452fbb['body']['id'];}return db[_0x6ecd('0x28')]['find']({'where':{'id':_0x452fbb[_0x6ecd('0x4d')]['id']}})[_0x6ecd('0x1e')](handleEntityNotFound(_0x36c28c,null))[_0x6ecd('0x1e')](saveUpdates(_0x452fbb['body'],null))[_0x6ecd('0x1e')](respondWithResult(_0x36c28c,null))[_0x6ecd('0x3e')](handleError(_0x36c28c,null));};exports[_0x6ecd('0x21')]=function(_0x13f67c,_0x86c4b){return db[_0x6ecd('0x28')][_0x6ecd('0x42')]({'where':{'id':_0x13f67c[_0x6ecd('0x4d')]['id']}})[_0x6ecd('0x1e')](handleEntityNotFound(_0x86c4b,null))[_0x6ecd('0x1e')](removeEntity(_0x86c4b,null))['catch'](handleError(_0x86c4b,null));};
\ No newline at end of file
index a2e143d..19fee4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6038=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones'];(function(_0x1f49c4,_0x3a6433){var _0x3e8085=function(_0x209c53){while(--_0x209c53){_0x1f49c4['push'](_0x1f49c4['shift']());}};_0x3e8085(++_0x3a6433);}(_0x6038,0x12c));var _0x8603=function(_0x1b247d,_0x4b4219){_0x1b247d=_0x1b247d-0x0;var _0x405047=_0x6038[_0x1b247d];return _0x405047;};'use strict';var _=require(_0x8603('0x0'));var util=require(_0x8603('0x1'));var logger=require(_0x8603('0x2'))('api');var moment=require(_0x8603('0x3'));var BPromise=require(_0x8603('0x4'));var rp=require(_0x8603('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8603('0x6'));var config=require('../../config/environment');var attributes=require(_0x8603('0x7'));module[_0x8603('0x8')]=function(_0x7313a9,_0xe95e5e){return _0x7313a9[_0x8603('0x9')](_0x8603('0xa'),attributes,{'tableName':_0x8603('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb757=['../../config/environment','./cmHopperAdditionalPhone.attributes','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x49b4ec,_0xed5983){var _0x2fa492=function(_0x4cf79d){while(--_0x4cf79d){_0x49b4ec['push'](_0x49b4ec['shift']());}};_0x2fa492(++_0xed5983);}(_0xb757,0x1d9));var _0x7b75=function(_0xfba352,_0x213610){_0xfba352=_0xfba352-0x0;var _0x57e140=_0xb757[_0xfba352];return _0x57e140;};'use strict';var _=require(_0x7b75('0x0'));var util=require(_0x7b75('0x1'));var logger=require(_0x7b75('0x2'))('api');var moment=require(_0x7b75('0x3'));var BPromise=require(_0x7b75('0x4'));var rp=require(_0x7b75('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b75('0x6'));var config=require(_0x7b75('0x7'));var attributes=require(_0x7b75('0x8'));module['exports']=function(_0x49a7cd,_0x26665b){return _0x49a7cd[_0x7b75('0x9')](_0x7b75('0xa'),attributes,{'tableName':_0x7b75('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3fcaac..df79784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb896=['countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countnoanswerretry','VerifyAdditionalPhones','SwapAdditionalPhones','CmHopper','duration','waitTime','isNil','scheduledat','add','minutes','phone','countabandonedretry','createdAt','updatedAt','sequelize','update','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','request','then','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry'];(function(_0xb5c10c,_0x33d4e6){var _0x309636=function(_0x4f87c7){while(--_0x4f87c7){_0xb5c10c['push'](_0xb5c10c['shift']());}};_0x309636(++_0x33d4e6);}(_0xb896,0x89));var _0x6b89=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0xb896[_0x3740fe];return _0x55492b;};'use strict';var _=require(_0x6b89('0x0'));var util=require('util');var moment=require(_0x6b89('0x1'));var BPromise=require(_0x6b89('0x2'));var rs=require(_0x6b89('0x3'));var fs=require('fs');var Redis=require(_0x6b89('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6b89('0x5'))(_0x6b89('0x6'));var config=require(_0x6b89('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6b89('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12514a,_0x5d53b5,_0x46500a){return new BPromise(function(_0x426512,_0x363ae3){return client[_0x6b89('0x9')](_0x12514a,_0x46500a)[_0x6b89('0xa')](function(_0x39776e){logger['info'](_0x6b89('0xb'),_0x5d53b5,_0x6b89('0xc'));logger['debug'](_0x6b89('0xd'),_0x5d53b5,_0x6b89('0xc'),JSON[_0x6b89('0xe')](_0x39776e));if(_0x39776e[_0x6b89('0xf')]){if(_0x39776e['error']['code']===0x1f4){logger[_0x6b89('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x5d53b5,_0x39776e[_0x6b89('0xf')][_0x6b89('0x10')]);return _0x363ae3(_0x39776e[_0x6b89('0xf')][_0x6b89('0x10')]);}logger[_0x6b89('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x5d53b5,_0x39776e[_0x6b89('0xf')][_0x6b89('0x10')]);return _0x426512(_0x39776e[_0x6b89('0xf')][_0x6b89('0x10')]);}else{logger[_0x6b89('0x11')](_0x6b89('0xb'),_0x5d53b5,_0x6b89('0xc'));_0x426512(_0x39776e[_0x6b89('0x12')][_0x6b89('0x10')]);}})[_0x6b89('0x13')](function(_0x46cb3f){logger[_0x6b89('0xf')](_0x6b89('0xb'),_0x5d53b5,_0x46cb3f);_0x363ae3(_0x46cb3f);});});}exports['VerifyAdditionalPhones']=function(_0x1a2542){var _0x3057f1=this;return new Promise(function(_0x1812d9,_0x41d855){return db['CmHopper'][_0x6b89('0x14')]({'raw':!![],'where':{'ContactId':_0x1a2542[_0x6b89('0x15')][_0x6b89('0x16')],'ListId':_0x1a2542['body'][_0x6b89('0x17')],'VoiceQueueId':_0x1a2542[_0x6b89('0x15')][_0x6b89('0x18')]===undefined?null:_0x1a2542[_0x6b89('0x15')][_0x6b89('0x18')],'CampaignId':_0x1a2542[_0x6b89('0x15')][_0x6b89('0x19')]===undefined?null:_0x1a2542[_0x6b89('0x15')][_0x6b89('0x19')]}})[_0x6b89('0xa')](function(_0x291323){if(_0x291323!=null){return db[_0x6b89('0x1a')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x291323['id'],'OrderBy':{'$gt':_0x291323[_0x6b89('0x1b')]}},'order':[['OrderBy',_0x6b89('0x1c')]]})['then'](function(_0x549994){var _0x1a3bc9=0x0;if(_0x549994){if(_0x549994[_0x6b89('0x1d')]+_0x549994[_0x6b89('0x1e')]+_0x549994['countnoanswerretry']+_0x549994[_0x6b89('0x1f')]+_0x549994[_0x6b89('0x20')]+_0x549994['countabandonedretry']+_0x549994[_0x6b89('0x21')]+_0x549994[_0x6b89('0x22')]<_0x1a2542[_0x6b89('0x23')][_0x6b89('0x24')])_0x1a3bc9=0x1;_0x1812d9({'additional':_0x1a3bc9});}else{return db[_0x6b89('0x1a')][_0x6b89('0x14')]({'raw':!![],'where':{'CmHopperId':_0x291323['id']},'order':[[_0x6b89('0x1b'),'ASC']]})['then'](function(_0x4f9aeb){var _0x3e447c=0x0;if(_0x4f9aeb){if(_0x4f9aeb[_0x6b89('0x1d')]+_0x4f9aeb[_0x6b89('0x1e')]+_0x4f9aeb[_0x6b89('0x25')]+_0x4f9aeb['countnosuchnumberretry']+_0x4f9aeb['countdropretry']+_0x4f9aeb['countabandonedretry']+_0x4f9aeb['countmachineretry']+_0x4f9aeb['countagentrejectretry']<_0x1a2542[_0x6b89('0x23')][_0x6b89('0x24')])_0x3e447c=0x1;_0x1812d9({'additional':_0x3e447c});}else{_0x1812d9({'additional':0x0});}})[_0x6b89('0x13')](function(_0x3869f2){logger[_0x6b89('0xf')](_0x6b89('0x26'),_0x3869f2['message']);_0x41d855(_0x3057f1[_0x6b89('0xf')](0x1f4,_0x3869f2[_0x6b89('0x10')]));});}})['catch'](function(_0x113fe2){logger[_0x6b89('0xf')](_0x6b89('0x26'),_0x113fe2[_0x6b89('0x10')]);_0x41d855(_0x3057f1[_0x6b89('0xf')](0x1f4,_0x113fe2['message']));});}else _0x1812d9({'additional':0x0});});});};exports[_0x6b89('0x27')]=function(_0x3ae0f3){var _0x5af831=this;return new Promise(function(_0x1e5f5c,_0x17d31b){return db[_0x6b89('0x28')][_0x6b89('0x14')]({'raw':!![],'where':{'ContactId':_0x3ae0f3[_0x6b89('0x15')][_0x6b89('0x16')],'ListId':_0x3ae0f3[_0x6b89('0x15')]['ListId'],'VoiceQueueId':_0x3ae0f3[_0x6b89('0x15')]['VoiceQueueId']===undefined?null:_0x3ae0f3[_0x6b89('0x15')]['VoiceQueueId'],'CampaignId':_0x3ae0f3[_0x6b89('0x15')][_0x6b89('0x19')]===undefined?null:_0x3ae0f3[_0x6b89('0x15')][_0x6b89('0x19')]}})[_0x6b89('0xa')](function(_0x26343d){if(_0x26343d!=null){return db[_0x6b89('0x1a')][_0x6b89('0x14')]({'raw':!![],'where':{'CmHopperId':_0x26343d['id'],'OrderBy':{'$gte':_0x26343d['OrderBy']}},'order':[[_0x6b89('0x1b'),'ASC']]})[_0x6b89('0xa')](function(_0x46d89d){if(_0x46d89d)return activateAdditionalPhone(_0x26343d,_0x3ae0f3[_0x6b89('0x15')],_0x46d89d,_0x3ae0f3[_0x6b89('0x29')],_0x3ae0f3['waitTime'])[_0x6b89('0xa')](function(_0x238802){_0x1e5f5c(_0x238802);});else{return db[_0x6b89('0x1a')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x26343d['id']},'order':[[_0x6b89('0x1b'),'ASC']]})[_0x6b89('0xa')](function(_0x3c7627){if(_0x3c7627)return activateAdditionalPhone(_0x26343d,_0x3ae0f3['body'],_0x3c7627,_0x3ae0f3[_0x6b89('0x29')],_0x3ae0f3[_0x6b89('0x2a')])[_0x6b89('0xa')](function(_0x3ae2f3){_0x1e5f5c(_0x3ae2f3);});else{_0x1e5f5c({'id':_0x26343d['id'],'phone':''});}})['catch'](function(_0x42f200){logger[_0x6b89('0xf')](_0x6b89('0x26'),_0x42f200[_0x6b89('0x10')]);_0x17d31b(_0x5af831[_0x6b89('0xf')](0x1f4,_0x42f200[_0x6b89('0x10')]));});}})[_0x6b89('0x13')](function(_0x1e6714){logger[_0x6b89('0xf')]('VerifyAdditionalPhones',_0x1e6714[_0x6b89('0x10')]);_0x17d31b(_0x5af831[_0x6b89('0xf')](0x1f4,_0x1e6714[_0x6b89('0x10')]));});}else _0x1e5f5c(0x1);});});};function activateAdditionalPhone(_0x774ff9,_0x4f9470,_0x29dded,_0x41f27b,_0x49ce29){return new Promise(function(_0x3a78c7,_0x18136b){var _0x272242;if(_[_0x6b89('0x2b')](_0x29dded[_0x6b89('0x2c')])){_0x29dded['scheduledat']=moment();}if(moment()>moment(_0x29dded['scheduledat'])){_0x272242=moment()[_0x6b89('0x2d')](_0x49ce29||0x3,_0x6b89('0x2e'));}else{if(_0x29dded[_0x6b89('0x1b')]==0x0){_0x272242=moment(_0x29dded[_0x6b89('0x2c')]);}else{_0x272242=moment()[_0x6b89('0x2d')](_0x49ce29||0x3,'minutes');}}if(_[_0x6b89('0x2b')](_0x272242)){_0x272242=moment()[_0x6b89('0x2d')](_0x49ce29||0x3,_0x6b89('0x2e'));}var _0x26061d={'phone':_0x774ff9[_0x6b89('0x2f')],'active':0x0,'OrderBy':_[_0x6b89('0x2b')](_0x774ff9[_0x6b89('0x1b')])?0x0:_0x774ff9[_0x6b89('0x1b')],'scheduledat':moment()[_0x6b89('0x2d')](_0x41f27b||0x1,_0x6b89('0x2e')),'countbusyretry':_0x4f9470[_0x6b89('0x1d')],'countcongestionretry':_0x4f9470[_0x6b89('0x1e')],'countnoanswerretry':_0x4f9470['countnoanswerretry'],'countnosuchnumberretry':_0x4f9470[_0x6b89('0x1f')],'countdropretry':_0x4f9470[_0x6b89('0x20')],'countabandonedretry':_0x4f9470[_0x6b89('0x30')],'countmachineretry':_0x4f9470[_0x6b89('0x21')],'countagentrejectretry':_0x4f9470[_0x6b89('0x22')],'createdAt':_0x4f9470[_0x6b89('0x31')],'updatedAt':_0x4f9470['updatedAt']};var _0x21adef={'CmHopperId':_0x774ff9['id'],'phone':_0x29dded[_0x6b89('0x2f')],'active':0x0,'OrderBy':_[_0x6b89('0x2b')](_0x29dded[_0x6b89('0x1b')])?0x0:_0x29dded[_0x6b89('0x1b')],'scheduledat':_0x272242,'countbusyretry':_0x29dded[_0x6b89('0x1d')],'countcongestionretry':_0x29dded[_0x6b89('0x1e')],'countnoanswerretry':_0x29dded[_0x6b89('0x25')],'countnosuchnumberretry':_0x29dded[_0x6b89('0x1f')],'countdropretry':_0x29dded['countdropretry'],'countabandonedretry':_0x29dded[_0x6b89('0x30')],'countmachineretry':_0x29dded[_0x6b89('0x21')],'countagentrejectretry':_0x29dded[_0x6b89('0x22')],'createdAt':_0x29dded[_0x6b89('0x31')],'updatedAt':_0x29dded[_0x6b89('0x32')]};return db[_0x6b89('0x33')]['transaction'](function(_0x445110){return db[_0x6b89('0x1a')]['update'](_0x26061d,{'where':{'id':_0x29dded['id']}},{'transaction':_0x445110})[_0x6b89('0xa')](function(){return db[_0x6b89('0x28')][_0x6b89('0x34')](_0x21adef,{'where':{'id':_0x774ff9['id']}},{'transaction':_0x445110});});})[_0x6b89('0xa')](function(_0x54d163){_0x3a78c7({'id':_0x774ff9['id'],'phone':_0x29dded[_0x6b89('0x2f')]});})['catch'](function(_0x1165c2){logger[_0x6b89('0xf')](_0x6b89('0x35'),_0x1165c2[_0x6b89('0x10')]);_0x18136b({'error':_0x1165c2[_0x6b89('0x10')]});});});}exports[_0x6b89('0x36')]=function(_0x5437a0){var _0x469b39=this;return new Promise(function(_0x4dd131,_0x2c33a0){return db[_0x6b89('0x28')]['update'](_0x5437a0[_0x6b89('0x15')][_0x6b89('0x37')],{'where':{'id':_0x5437a0[_0x6b89('0x15')]['id']}})[_0x6b89('0xa')](function(_0x3279a1){_0x4dd131(_0x3279a1);})[_0x6b89('0x13')](function(_0x195e5b){logger[_0x6b89('0xf')](_0x6b89('0x36'),_0x195e5b[_0x6b89('0x10')]);_0x2c33a0(_0x469b39[_0x6b89('0xf')](0x1f4,_0x195e5b[_0x6b89('0x10')]));});});};
\ No newline at end of file
+var _0x6ea0=['dialGlobalMaxRetry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','catch','SwapAdditionalPhones','ContactId','ListId','duration','waitTime','isNil','scheduledat','minutes','add','phone','createdAt','updatedAt','sequelize','transaction','update','IncrementPreviewCounters','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','request','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','VerifyAdditionalPhones','CmHopper','findOne','body','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry'];(function(_0x521708,_0x227054){var _0x4c4866=function(_0x30b14c){while(--_0x30b14c){_0x521708['push'](_0x521708['shift']());}};_0x4c4866(++_0x227054);}(_0x6ea0,0x15a));var _0x06ea=function(_0x2edf15,_0x49d527){_0x2edf15=_0x2edf15-0x0;var _0x3997db=_0x6ea0[_0x2edf15];return _0x3997db;};'use strict';var _=require(_0x06ea('0x0'));var util=require(_0x06ea('0x1'));var moment=require(_0x06ea('0x2'));var BPromise=require(_0x06ea('0x3'));var rs=require(_0x06ea('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x06ea('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x06ea('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x06ea('0x7'));var client=jayson[_0x06ea('0x8')][_0x06ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2d13cb,_0x42c295,_0xaa045a){return new BPromise(function(_0x1ba877,_0x2a2569){return client[_0x06ea('0xa')](_0x2d13cb,_0xaa045a)['then'](function(_0xe1057d){logger[_0x06ea('0xb')](_0x06ea('0xc'),_0x42c295,_0x06ea('0xd'));logger[_0x06ea('0xe')]('CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s',_0x42c295,_0x06ea('0xd'),JSON[_0x06ea('0xf')](_0xe1057d));if(_0xe1057d[_0x06ea('0x10')]){if(_0xe1057d[_0x06ea('0x10')]['code']===0x1f4){logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x42c295,_0xe1057d[_0x06ea('0x10')][_0x06ea('0x11')]);return _0x2a2569(_0xe1057d[_0x06ea('0x10')][_0x06ea('0x11')]);}logger['error'](_0x06ea('0xc'),_0x42c295,_0xe1057d['error'][_0x06ea('0x11')]);return _0x1ba877(_0xe1057d[_0x06ea('0x10')][_0x06ea('0x11')]);}else{logger[_0x06ea('0xb')](_0x06ea('0xc'),_0x42c295,_0x06ea('0xd'));_0x1ba877(_0xe1057d['result']['message']);}})['catch'](function(_0x384529){logger[_0x06ea('0x10')](_0x06ea('0xc'),_0x42c295,_0x384529);_0x2a2569(_0x384529);});});}exports[_0x06ea('0x12')]=function(_0x29f4ac){var _0x3a213f=this;return new Promise(function(_0x1bc322,_0x55dc90){return db[_0x06ea('0x13')][_0x06ea('0x14')]({'raw':!![],'where':{'ContactId':_0x29f4ac[_0x06ea('0x15')]['ContactId'],'ListId':_0x29f4ac[_0x06ea('0x15')]['ListId'],'VoiceQueueId':_0x29f4ac[_0x06ea('0x15')][_0x06ea('0x16')]===undefined?null:_0x29f4ac[_0x06ea('0x15')][_0x06ea('0x16')],'CampaignId':_0x29f4ac['body']['CampaignId']===undefined?null:_0x29f4ac['body'][_0x06ea('0x17')]}})[_0x06ea('0x18')](function(_0x3cf2d9){if(_0x3cf2d9!=null){return db[_0x06ea('0x19')][_0x06ea('0x14')]({'raw':!![],'where':{'CmHopperId':_0x3cf2d9['id'],'OrderBy':{'$gt':_0x3cf2d9[_0x06ea('0x1a')]}},'order':[[_0x06ea('0x1a'),_0x06ea('0x1b')]]})[_0x06ea('0x18')](function(_0x12f5b1){var _0x4ab82e=0x0;if(_0x12f5b1){if(_0x12f5b1[_0x06ea('0x1c')]+_0x12f5b1[_0x06ea('0x1d')]+_0x12f5b1[_0x06ea('0x1e')]+_0x12f5b1['countnosuchnumberretry']+_0x12f5b1['countdropretry']+_0x12f5b1['countabandonedretry']+_0x12f5b1['countmachineretry']+_0x12f5b1[_0x06ea('0x1f')]<_0x29f4ac['entity'][_0x06ea('0x20')])_0x4ab82e=0x1;_0x1bc322({'additional':_0x4ab82e});}else{return db['CmHopperAdditionalPhone'][_0x06ea('0x14')]({'raw':!![],'where':{'CmHopperId':_0x3cf2d9['id']},'order':[[_0x06ea('0x1a'),_0x06ea('0x1b')]]})[_0x06ea('0x18')](function(_0x307d67){var _0x3dee49=0x0;if(_0x307d67){if(_0x307d67[_0x06ea('0x1c')]+_0x307d67[_0x06ea('0x1d')]+_0x307d67[_0x06ea('0x1e')]+_0x307d67[_0x06ea('0x21')]+_0x307d67[_0x06ea('0x22')]+_0x307d67[_0x06ea('0x23')]+_0x307d67[_0x06ea('0x24')]+_0x307d67['countagentrejectretry']<_0x29f4ac['entity']['dialGlobalMaxRetry'])_0x3dee49=0x1;_0x1bc322({'additional':_0x3dee49});}else{_0x1bc322({'additional':0x0});}})[_0x06ea('0x25')](function(_0xffe699){logger['error'](_0x06ea('0x12'),_0xffe699[_0x06ea('0x11')]);_0x55dc90(_0x3a213f['error'](0x1f4,_0xffe699[_0x06ea('0x11')]));});}})[_0x06ea('0x25')](function(_0x30fcd7){logger['error'](_0x06ea('0x12'),_0x30fcd7['message']);_0x55dc90(_0x3a213f[_0x06ea('0x10')](0x1f4,_0x30fcd7[_0x06ea('0x11')]));});}else _0x1bc322({'additional':0x0});});});};exports[_0x06ea('0x26')]=function(_0x58a4d2){var _0x16c027=this;return new Promise(function(_0x4bb285,_0x467464){return db[_0x06ea('0x13')][_0x06ea('0x14')]({'raw':!![],'where':{'ContactId':_0x58a4d2[_0x06ea('0x15')][_0x06ea('0x27')],'ListId':_0x58a4d2['body'][_0x06ea('0x28')],'VoiceQueueId':_0x58a4d2[_0x06ea('0x15')]['VoiceQueueId']===undefined?null:_0x58a4d2[_0x06ea('0x15')][_0x06ea('0x16')],'CampaignId':_0x58a4d2[_0x06ea('0x15')][_0x06ea('0x17')]===undefined?null:_0x58a4d2[_0x06ea('0x15')][_0x06ea('0x17')]}})[_0x06ea('0x18')](function(_0x4aac7b){if(_0x4aac7b!=null){return db[_0x06ea('0x19')][_0x06ea('0x14')]({'raw':!![],'where':{'CmHopperId':_0x4aac7b['id'],'OrderBy':{'$gte':_0x4aac7b[_0x06ea('0x1a')]}},'order':[[_0x06ea('0x1a'),_0x06ea('0x1b')]]})[_0x06ea('0x18')](function(_0x85dfe0){if(_0x85dfe0)return activateAdditionalPhone(_0x4aac7b,_0x58a4d2[_0x06ea('0x15')],_0x85dfe0,_0x58a4d2[_0x06ea('0x29')],_0x58a4d2[_0x06ea('0x2a')])['then'](function(_0x4a67d4){_0x4bb285(_0x4a67d4);});else{return db[_0x06ea('0x19')][_0x06ea('0x14')]({'raw':!![],'where':{'CmHopperId':_0x4aac7b['id']},'order':[['OrderBy',_0x06ea('0x1b')]]})['then'](function(_0x329d3e){if(_0x329d3e)return activateAdditionalPhone(_0x4aac7b,_0x58a4d2[_0x06ea('0x15')],_0x329d3e,_0x58a4d2['duration'],_0x58a4d2['waitTime'])[_0x06ea('0x18')](function(_0x751061){_0x4bb285(_0x751061);});else{_0x4bb285({'id':_0x4aac7b['id'],'phone':''});}})[_0x06ea('0x25')](function(_0x269fe4){logger['error'](_0x06ea('0x12'),_0x269fe4[_0x06ea('0x11')]);_0x467464(_0x16c027[_0x06ea('0x10')](0x1f4,_0x269fe4['message']));});}})[_0x06ea('0x25')](function(_0x36ff60){logger['error']('VerifyAdditionalPhones',_0x36ff60[_0x06ea('0x11')]);_0x467464(_0x16c027[_0x06ea('0x10')](0x1f4,_0x36ff60[_0x06ea('0x11')]));});}else _0x4bb285(0x1);});});};function activateAdditionalPhone(_0x37fcfe,_0x16eb8d,_0x4fd570,_0x15995c,_0x57fc06){return new Promise(function(_0x2c81ec,_0x13238a){var _0x166f15;if(_[_0x06ea('0x2b')](_0x4fd570[_0x06ea('0x2c')])){_0x4fd570['scheduledat']=moment();}if(moment()>moment(_0x4fd570[_0x06ea('0x2c')])){_0x166f15=moment()['add'](_0x57fc06||0x3,_0x06ea('0x2d'));}else{if(_0x4fd570[_0x06ea('0x1a')]==0x0){_0x166f15=moment(_0x4fd570[_0x06ea('0x2c')]);}else{_0x166f15=moment()['add'](_0x57fc06||0x3,_0x06ea('0x2d'));}}if(_[_0x06ea('0x2b')](_0x166f15)){_0x166f15=moment()[_0x06ea('0x2e')](_0x57fc06||0x3,_0x06ea('0x2d'));}var _0xc4852e={'phone':_0x37fcfe[_0x06ea('0x2f')],'active':0x0,'OrderBy':_['isNil'](_0x37fcfe[_0x06ea('0x1a')])?0x0:_0x37fcfe[_0x06ea('0x1a')],'scheduledat':moment()[_0x06ea('0x2e')](_0x15995c||0x1,_0x06ea('0x2d')),'countbusyretry':_0x16eb8d['countbusyretry'],'countcongestionretry':_0x16eb8d[_0x06ea('0x1d')],'countnoanswerretry':_0x16eb8d['countnoanswerretry'],'countnosuchnumberretry':_0x16eb8d[_0x06ea('0x21')],'countdropretry':_0x16eb8d['countdropretry'],'countabandonedretry':_0x16eb8d[_0x06ea('0x23')],'countmachineretry':_0x16eb8d[_0x06ea('0x24')],'countagentrejectretry':_0x16eb8d[_0x06ea('0x1f')],'createdAt':_0x16eb8d[_0x06ea('0x30')],'updatedAt':_0x16eb8d[_0x06ea('0x31')]};var _0x54fe42={'CmHopperId':_0x37fcfe['id'],'phone':_0x4fd570[_0x06ea('0x2f')],'active':0x0,'OrderBy':_['isNil'](_0x4fd570[_0x06ea('0x1a')])?0x0:_0x4fd570[_0x06ea('0x1a')],'scheduledat':_0x166f15,'countbusyretry':_0x4fd570[_0x06ea('0x1c')],'countcongestionretry':_0x4fd570[_0x06ea('0x1d')],'countnoanswerretry':_0x4fd570['countnoanswerretry'],'countnosuchnumberretry':_0x4fd570[_0x06ea('0x21')],'countdropretry':_0x4fd570[_0x06ea('0x22')],'countabandonedretry':_0x4fd570['countabandonedretry'],'countmachineretry':_0x4fd570['countmachineretry'],'countagentrejectretry':_0x4fd570[_0x06ea('0x1f')],'createdAt':_0x4fd570[_0x06ea('0x30')],'updatedAt':_0x4fd570[_0x06ea('0x31')]};return db[_0x06ea('0x32')][_0x06ea('0x33')](function(_0x2f5744){return db[_0x06ea('0x19')]['update'](_0xc4852e,{'where':{'id':_0x4fd570['id']}},{'transaction':_0x2f5744})[_0x06ea('0x18')](function(){return db[_0x06ea('0x13')][_0x06ea('0x34')](_0x54fe42,{'where':{'id':_0x37fcfe['id']}},{'transaction':_0x2f5744});});})[_0x06ea('0x18')](function(_0x39c54f){_0x2c81ec({'id':_0x37fcfe['id'],'phone':_0x4fd570['phone']});})[_0x06ea('0x25')](function(_0x41826c){logger[_0x06ea('0x10')]('activateAdditionalPhone',_0x41826c[_0x06ea('0x11')]);_0x13238a({'error':_0x41826c[_0x06ea('0x11')]});});});}exports[_0x06ea('0x35')]=function(_0x2da87c){var _0x58354e=this;return new Promise(function(_0x242489,_0x361f60){return db[_0x06ea('0x13')]['update'](_0x2da87c[_0x06ea('0x15')]['field'],{'where':{'id':_0x2da87c['body']['id']}})[_0x06ea('0x18')](function(_0x478f87){_0x242489(_0x478f87);})[_0x06ea('0x25')](function(_0x47d31b){logger[_0x06ea('0x10')]('IncrementPreviewCounters',_0x47d31b[_0x06ea('0x11')]);_0x361f60(_0x58354e[_0x06ea('0x10')](0x1f4,_0x47d31b['message']));});});};
\ No newline at end of file
index 54029a0..d8c549b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x552a=['put','update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','/:id','isAuthenticated','show','post','create'];(function(_0x41b6fb,_0x4a2ca9){var _0x5d7d66=function(_0x614c27){while(--_0x614c27){_0x41b6fb['push'](_0x41b6fb['shift']());}};_0x5d7d66(++_0x4a2ca9);}(_0x552a,0xaf));var _0xa552=function(_0x5cab7e,_0x464e20){_0x5cab7e=_0x5cab7e-0x0;var _0x35c71f=_0x552a[_0x5cab7e];return _0x35c71f;};'use strict';var multer=require('multer');var util=require(_0xa552('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa552('0x1'));var router=express[_0xa552('0x2')]();var fs_extra=require(_0xa552('0x3'));var auth=require(_0xa552('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa552('0x5'));var controller=require('./cmHopperAdditionalPhone.controller');router[_0xa552('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa552('0x7'),auth[_0xa552('0x8')](),controller[_0xa552('0x9')]);router[_0xa552('0xa')]('/',auth[_0xa552('0x8')](),controller[_0xa552('0xb')]);router[_0xa552('0xc')]('/:id',auth[_0xa552('0x8')](),controller[_0xa552('0xd')]);router[_0xa552('0xe')](_0xa552('0x7'),auth[_0xa552('0x8')](),controller[_0xa552('0xf')]);module[_0xa552('0x10')]=router;
\ No newline at end of file
+var _0xf846=['../../components/interaction/service','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x479170,_0x461bb2){var _0x3aa620=function(_0x1a5d0c){while(--_0x1a5d0c){_0x479170['push'](_0x479170['shift']());}};_0x3aa620(++_0x461bb2);}(_0xf846,0x85));var _0x6f84=function(_0x4c53b8,_0x452bfb){_0x4c53b8=_0x4c53b8-0x0;var _0x32863e=_0xf846[_0x4c53b8];return _0x32863e;};'use strict';var multer=require(_0x6f84('0x0'));var util=require(_0x6f84('0x1'));var path=require(_0x6f84('0x2'));var timeout=require(_0x6f84('0x3'));var express=require('express');var router=express[_0x6f84('0x4')]();var fs_extra=require(_0x6f84('0x5'));var auth=require(_0x6f84('0x6'));var interaction=require(_0x6f84('0x7'));var config=require('../../config/environment');var controller=require(_0x6f84('0x8'));router[_0x6f84('0x9')]('/',auth[_0x6f84('0xa')](),controller[_0x6f84('0xb')]);router[_0x6f84('0x9')](_0x6f84('0xc'),auth['isAuthenticated'](),controller[_0x6f84('0xd')]);router[_0x6f84('0xe')]('/',auth[_0x6f84('0xa')](),controller['create']);router[_0x6f84('0xf')](_0x6f84('0xc'),auth['isAuthenticated'](),controller[_0x6f84('0x10')]);router[_0x6f84('0x11')](_0x6f84('0xc'),auth[_0x6f84('0xa')](),controller[_0x6f84('0x12')]);module[_0x6f84('0x13')]=router;
\ No newline at end of file
index 730cde1..116bad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29e8=['contactListQueue','INTEGER','moment','sequelize','exports','STRING'];(function(_0x27ed29,_0x4980c7){var _0x1d78fc=function(_0x38f86b){while(--_0x38f86b){_0x27ed29['push'](_0x27ed29['shift']());}};_0x1d78fc(++_0x4980c7);}(_0x29e8,0x116));var _0x829e=function(_0x1c518b,_0xf0ac9c){_0x1c518b=_0x1c518b-0x0;var _0x186aad=_0x29e8[_0x1c518b];return _0x186aad;};'use strict';var moment=require(_0x829e('0x0'));var Sequelize=require(_0x829e('0x1'));module[_0x829e('0x2')]={'phone':{'type':Sequelize[_0x829e('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x829e('0x4')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x829e('0x4')},'VoiceQueueId':{'type':Sequelize[_0x829e('0x5')],'unique':_0x829e('0x4')}};
\ No newline at end of file
+var _0x0619=['moment','sequelize','exports','STRING','contactListQueue','INTEGER'];(function(_0x29095f,_0x25153a){var _0x3bef06=function(_0x3e4042){while(--_0x3e4042){_0x29095f['push'](_0x29095f['shift']());}};_0x3bef06(++_0x25153a);}(_0x0619,0x90));var _0x9061=function(_0x5b5879,_0x54bb8e){_0x5b5879=_0x5b5879-0x0;var _0x25b0b1=_0x0619[_0x5b5879];return _0x25b0b1;};'use strict';var moment=require(_0x9061('0x0'));var Sequelize=require(_0x9061('0x1'));module[_0x9061('0x2')]={'phone':{'type':Sequelize[_0x9061('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x9061('0x4')},'ListId':{'type':Sequelize[_0x9061('0x5')],'unique':_0x9061('0x4')},'VoiceQueueId':{'type':Sequelize[_0x9061('0x5')],'unique':_0x9061('0x4')}};
\ No newline at end of file
index 1c08b72..3bd618e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe49f=['api','../../config/environment','../../mysqldb','sendStatus','end','json','undefined','count','offset','limit','status','set','apply','reject','then','destroy','error','stack','name','send','index','map','CmHopperBlack','type','key','model','query','keys','filters','intersection','fields','attributes','length','sort','pick','where','merge','VIRTUAL','options','includeAll','include','show','find','catch','update','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x1d2df9,_0x548aa2){var _0x569f2d=function(_0x29e60a){while(--_0x29e60a){_0x1d2df9['push'](_0x1d2df9['shift']());}};_0x569f2d(++_0x548aa2);}(_0xe49f,0xbe));var _0xfe49=function(_0x34dfec,_0x430ce4){_0x34dfec=_0x34dfec-0x0;var _0x1f7050=_0xe49f[_0x34dfec];return _0x1f7050;};'use strict';var emlformat=require(_0xfe49('0x0'));var rimraf=require(_0xfe49('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfe49('0x2'));var rp=require(_0xfe49('0x3'));var moment=require(_0xfe49('0x4'));var BPromise=require(_0xfe49('0x5'));var Mustache=require('mustache');var util=require(_0xfe49('0x6'));var path=require(_0xfe49('0x7'));var sox=require(_0xfe49('0x8'));var csv=require(_0xfe49('0x9'));var ejs=require(_0xfe49('0xa'));var fs=require('fs');var fs_extra=require(_0xfe49('0xb'));var _=require(_0xfe49('0xc'));var squel=require(_0xfe49('0xd'));var crypto=require('crypto');var jsforce=require(_0xfe49('0xe'));var deskjs=require(_0xfe49('0xf'));var toCsv=require(_0xfe49('0x9'));var querystring=require(_0xfe49('0x10'));var Papa=require(_0xfe49('0x11'));var Redis=require(_0xfe49('0x12'));var authService=require(_0xfe49('0x13'));var qs=require(_0xfe49('0x14'));var as=require(_0xfe49('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfe49('0x16'))(_0xfe49('0x17'));var utils=require('../../config/utils');var config=require(_0xfe49('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe49('0x19'))['db'];function respondWithStatusCode(_0x39cb26,_0x1cff19){_0x1cff19=_0x1cff19||0xcc;return function(_0xec14f2){if(_0xec14f2){return _0x39cb26[_0xfe49('0x1a')](_0x1cff19);}return _0x39cb26['status'](_0x1cff19)[_0xfe49('0x1b')]();};}function respondWithResult(_0x5d8e86,_0x953a42){_0x953a42=_0x953a42||0xc8;return function(_0x1a1e62){if(_0x1a1e62){return _0x5d8e86['status'](_0x953a42)[_0xfe49('0x1c')](_0x1a1e62);}};}function respondWithFilteredResult(_0x167c2a,_0x5df83b){return function(_0x5d7ed7){if(_0x5d7ed7){var _0x464810=typeof _0x5df83b['offset']==='undefined'&&typeof _0x5df83b['limit']===_0xfe49('0x1d');var _0x45080f=_0x5d7ed7[_0xfe49('0x1e')];var _0x223aa5=_0x464810?0x0:_0x5df83b[_0xfe49('0x1f')];var _0x46aa71=_0x464810?_0x5d7ed7[_0xfe49('0x1e')]:_0x5df83b[_0xfe49('0x1f')]+_0x5df83b[_0xfe49('0x20')];var _0x523fcd;if(_0x46aa71>=_0x45080f){_0x46aa71=_0x45080f;_0x523fcd=0xc8;}else{_0x523fcd=0xce;}_0x167c2a[_0xfe49('0x21')](_0x523fcd);return _0x167c2a[_0xfe49('0x22')]('Content-Range',_0x223aa5+'-'+_0x46aa71+'/'+_0x45080f)['json'](_0x5d7ed7);}return null;};}function patchUpdates(_0x334bda){return function(_0x5057b5){try{jsonpatch[_0xfe49('0x23')](_0x5057b5,_0x334bda,!![]);}catch(_0x1db5ae){return BPromise[_0xfe49('0x24')](_0x1db5ae);}return _0x5057b5['save']();};}function saveUpdates(_0x559b55,_0x38cbff){return function(_0x598f3c){if(_0x598f3c){return _0x598f3c['update'](_0x559b55)[_0xfe49('0x25')](function(_0x34a436){return _0x34a436;});}return null;};}function removeEntity(_0xeddce9,_0x35f3e2){return function(_0x279958){if(_0x279958){return _0x279958[_0xfe49('0x26')]()['then'](function(){_0xeddce9[_0xfe49('0x21')](0xcc)[_0xfe49('0x1b')]();});}};}function handleEntityNotFound(_0x337e35,_0x58b3a8){return function(_0x4ae424){if(!_0x4ae424){_0x337e35[_0xfe49('0x1a')](0x194);}return _0x4ae424;};}function handleError(_0x3198b8,_0x27c82c){_0x27c82c=_0x27c82c||0x1f4;return function(_0xb31d82){logger[_0xfe49('0x27')](_0xb31d82[_0xfe49('0x28')]);if(_0xb31d82[_0xfe49('0x29')]){delete _0xb31d82[_0xfe49('0x29')];}_0x3198b8[_0xfe49('0x21')](_0x27c82c)[_0xfe49('0x2a')](_0xb31d82);};}exports[_0xfe49('0x2b')]=function(_0x1c9b6f,_0x268c39){var _0xa929a7={},_0x1c7543={},_0x4340ef={'count':0x0,'rows':[]};var _0x4da325=_[_0xfe49('0x2c')](db[_0xfe49('0x2d')]['rawAttributes'],function(_0x2ef374){return{'name':_0x2ef374['fieldName'],'type':_0x2ef374[_0xfe49('0x2e')][_0xfe49('0x2f')]};});_0x1c7543[_0xfe49('0x30')]=_[_0xfe49('0x2c')](_0x4da325,_0xfe49('0x29'));_0x1c7543[_0xfe49('0x31')]=_[_0xfe49('0x32')](_0x1c9b6f['query']);_0x1c7543[_0xfe49('0x33')]=_[_0xfe49('0x34')](_0x1c7543[_0xfe49('0x30')],_0x1c7543['query']);_0xa929a7['attributes']=_['intersection'](_0x1c7543['model'],qs[_0xfe49('0x35')](_0x1c9b6f['query'][_0xfe49('0x35')]));_0xa929a7['attributes']=_0xa929a7[_0xfe49('0x36')][_0xfe49('0x37')]?_0xa929a7[_0xfe49('0x36')]:_0x1c7543['model'];if(!_0x1c9b6f[_0xfe49('0x31')]['hasOwnProperty']('nolimit')){_0xa929a7[_0xfe49('0x20')]=qs[_0xfe49('0x20')](_0x1c9b6f[_0xfe49('0x31')][_0xfe49('0x20')]);_0xa929a7[_0xfe49('0x1f')]=qs[_0xfe49('0x1f')](_0x1c9b6f[_0xfe49('0x31')]['offset']);}_0xa929a7['order']=qs[_0xfe49('0x38')](_0x1c9b6f[_0xfe49('0x31')][_0xfe49('0x38')]);_0xa929a7['where']=qs[_0xfe49('0x33')](_[_0xfe49('0x39')](_0x1c9b6f[_0xfe49('0x31')],_0x1c7543[_0xfe49('0x33')]),_0x4da325);if(_0x1c9b6f['query']['filter']){_0xa929a7[_0xfe49('0x3a')]=_[_0xfe49('0x3b')](_0xa929a7[_0xfe49('0x3a')],{'$or':_[_0xfe49('0x2c')](_0x4da325,function(_0x48a81b){if(_0x48a81b[_0xfe49('0x2e')]!==_0xfe49('0x3c')){var _0x335c81={};_0x335c81[_0x48a81b[_0xfe49('0x29')]]={'$like':'%'+_0x1c9b6f[_0xfe49('0x31')]['filter']+'%'};return _0x335c81;}})});}_0xa929a7=_[_0xfe49('0x3b')]({},_0xa929a7,_0x1c9b6f[_0xfe49('0x3d')]);var _0x3f3d6e={'where':_0xa929a7[_0xfe49('0x3a')]};return db[_0xfe49('0x2d')][_0xfe49('0x1e')](_0x3f3d6e)[_0xfe49('0x25')](function(_0x4d1cd7){_0x4340ef[_0xfe49('0x1e')]=_0x4d1cd7;if(_0x1c9b6f[_0xfe49('0x31')][_0xfe49('0x3e')]){_0xa929a7[_0xfe49('0x3f')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0xa929a7);})[_0xfe49('0x25')](function(_0x135d61){_0x4340ef['rows']=_0x135d61;return _0x4340ef;})[_0xfe49('0x25')](respondWithFilteredResult(_0x268c39,_0xa929a7))['catch'](handleError(_0x268c39,null));};exports[_0xfe49('0x40')]=function(_0x58c8b9,_0x321134){var _0x43d77d={'raw':!![],'where':{'id':_0x58c8b9['params']['id']}},_0x55d3c8={};_0x55d3c8[_0xfe49('0x30')]=_[_0xfe49('0x32')](db[_0xfe49('0x2d')]['rawAttributes']);_0x55d3c8[_0xfe49('0x31')]=_[_0xfe49('0x32')](_0x58c8b9[_0xfe49('0x31')]);_0x55d3c8[_0xfe49('0x33')]=_[_0xfe49('0x34')](_0x55d3c8['model'],_0x55d3c8[_0xfe49('0x31')]);_0x43d77d[_0xfe49('0x36')]=_[_0xfe49('0x34')](_0x55d3c8[_0xfe49('0x30')],qs[_0xfe49('0x35')](_0x58c8b9[_0xfe49('0x31')][_0xfe49('0x35')]));_0x43d77d[_0xfe49('0x36')]=_0x43d77d[_0xfe49('0x36')][_0xfe49('0x37')]?_0x43d77d[_0xfe49('0x36')]:_0x55d3c8[_0xfe49('0x30')];if(_0x58c8b9['query']['includeAll']){_0x43d77d[_0xfe49('0x3f')]=[{'all':!![]}];}_0x43d77d=_[_0xfe49('0x3b')]({},_0x43d77d,_0x58c8b9[_0xfe49('0x3d')]);return db['CmHopperBlack'][_0xfe49('0x41')](_0x43d77d)[_0xfe49('0x25')](handleEntityNotFound(_0x321134,null))[_0xfe49('0x25')](respondWithResult(_0x321134,null))[_0xfe49('0x42')](handleError(_0x321134,null));};exports[_0xfe49('0x43')]=function(_0x94ce37,_0x272bd4){if(_0x94ce37[_0xfe49('0x44')]['id']){delete _0x94ce37[_0xfe49('0x44')]['id'];}return db[_0xfe49('0x2d')][_0xfe49('0x41')]({'where':{'id':_0x94ce37[_0xfe49('0x45')]['id']}})['then'](handleEntityNotFound(_0x272bd4,null))[_0xfe49('0x25')](saveUpdates(_0x94ce37[_0xfe49('0x44')],null))[_0xfe49('0x25')](respondWithResult(_0x272bd4,null))['catch'](handleError(_0x272bd4,null));};exports['destroy']=function(_0x1481c5,_0x397ba8){return db[_0xfe49('0x2d')][_0xfe49('0x41')]({'where':{'id':_0x1481c5[_0xfe49('0x45')]['id']}})[_0xfe49('0x25')](handleEntityNotFound(_0x397ba8,null))[_0xfe49('0x25')](removeEntity(_0x397ba8,null))['catch'](handleError(_0x397ba8,null));};exports[_0xfe49('0x46')]=function(_0xedb25b,_0x1e6af0){return db[_0xfe49('0x2d')][_0xfe49('0x46')]()[_0xfe49('0x25')](respondWithResult(_0x1e6af0,null))[_0xfe49('0x42')](handleError(_0x1e6af0,null));};
\ No newline at end of file
+var _0x6315=['type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','rawAttributes','include','find','catch','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','map','CmHopperBlack','fieldName'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x6315,0x66));var _0x5631=function(_0x27a3e4,_0x15dfb6){_0x27a3e4=_0x27a3e4-0x0;var _0x10aec5=_0x6315[_0x27a3e4];return _0x10aec5;};'use strict';var emlformat=require(_0x5631('0x0'));var rimraf=require(_0x5631('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5631('0x2'));var rp=require(_0x5631('0x3'));var moment=require('moment');var BPromise=require(_0x5631('0x4'));var Mustache=require(_0x5631('0x5'));var util=require(_0x5631('0x6'));var path=require(_0x5631('0x7'));var sox=require('sox');var csv=require(_0x5631('0x8'));var ejs=require(_0x5631('0x9'));var fs=require('fs');var fs_extra=require(_0x5631('0xa'));var _=require('lodash');var squel=require(_0x5631('0xb'));var crypto=require(_0x5631('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5631('0xd'));var toCsv=require(_0x5631('0x8'));var querystring=require('querystring');var Papa=require(_0x5631('0xe'));var Redis=require(_0x5631('0xf'));var authService=require(_0x5631('0x10'));var qs=require(_0x5631('0x11'));var as=require(_0x5631('0x12'));var hardwareService=require(_0x5631('0x13'));var logger=require(_0x5631('0x14'))('api');var utils=require(_0x5631('0x15'));var config=require(_0x5631('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x5631('0x17'))['db'];function respondWithStatusCode(_0x3a37f8,_0x55d11e){_0x55d11e=_0x55d11e||0xcc;return function(_0x5d19d8){if(_0x5d19d8){return _0x3a37f8['sendStatus'](_0x55d11e);}return _0x3a37f8[_0x5631('0x18')](_0x55d11e)['end']();};}function respondWithResult(_0x6c0d62,_0x573e6d){_0x573e6d=_0x573e6d||0xc8;return function(_0x1711d3){if(_0x1711d3){return _0x6c0d62[_0x5631('0x18')](_0x573e6d)[_0x5631('0x19')](_0x1711d3);}};}function respondWithFilteredResult(_0x41af0d,_0x2c79f7){return function(_0x13c282){if(_0x13c282){var _0x256225=typeof _0x2c79f7[_0x5631('0x1a')]===_0x5631('0x1b')&&typeof _0x2c79f7[_0x5631('0x1c')]===_0x5631('0x1b');var _0x12d7ba=_0x13c282[_0x5631('0x1d')];var _0x5982e4=_0x256225?0x0:_0x2c79f7[_0x5631('0x1a')];var _0x5aeaf1=_0x256225?_0x13c282[_0x5631('0x1d')]:_0x2c79f7[_0x5631('0x1a')]+_0x2c79f7[_0x5631('0x1c')];var _0x400740;if(_0x5aeaf1>=_0x12d7ba){_0x5aeaf1=_0x12d7ba;_0x400740=0xc8;}else{_0x400740=0xce;}_0x41af0d[_0x5631('0x18')](_0x400740);return _0x41af0d[_0x5631('0x1e')](_0x5631('0x1f'),_0x5982e4+'-'+_0x5aeaf1+'/'+_0x12d7ba)[_0x5631('0x19')](_0x13c282);}return null;};}function patchUpdates(_0x347c0e){return function(_0x330b7a){try{jsonpatch['apply'](_0x330b7a,_0x347c0e,!![]);}catch(_0x29ade){return BPromise[_0x5631('0x20')](_0x29ade);}return _0x330b7a[_0x5631('0x21')]();};}function saveUpdates(_0x54a657,_0x44e156){return function(_0x45a365){if(_0x45a365){return _0x45a365[_0x5631('0x22')](_0x54a657)[_0x5631('0x23')](function(_0x45f86a){return _0x45f86a;});}return null;};}function removeEntity(_0x10989d,_0x4fa82d){return function(_0x1c8d8e){if(_0x1c8d8e){return _0x1c8d8e[_0x5631('0x24')]()[_0x5631('0x23')](function(){_0x10989d[_0x5631('0x18')](0xcc)[_0x5631('0x25')]();});}};}function handleEntityNotFound(_0xf9def1,_0x156032){return function(_0x2c7c14){if(!_0x2c7c14){_0xf9def1[_0x5631('0x26')](0x194);}return _0x2c7c14;};}function handleError(_0x334b00,_0x20fb31){_0x20fb31=_0x20fb31||0x1f4;return function(_0x52a6e6){logger[_0x5631('0x27')](_0x52a6e6[_0x5631('0x28')]);if(_0x52a6e6[_0x5631('0x29')]){delete _0x52a6e6[_0x5631('0x29')];}_0x334b00[_0x5631('0x18')](_0x20fb31)[_0x5631('0x2a')](_0x52a6e6);};}exports['index']=function(_0x1980d5,_0xc215b3){var _0x3ebf3a={},_0x55c65e={},_0x148046={'count':0x0,'rows':[]};var _0x4a17d9=_[_0x5631('0x2b')](db[_0x5631('0x2c')]['rawAttributes'],function(_0x41b97a){return{'name':_0x41b97a[_0x5631('0x2d')],'type':_0x41b97a[_0x5631('0x2e')][_0x5631('0x2f')]};});_0x55c65e[_0x5631('0x30')]=_[_0x5631('0x2b')](_0x4a17d9,_0x5631('0x29'));_0x55c65e[_0x5631('0x31')]=_[_0x5631('0x32')](_0x1980d5[_0x5631('0x31')]);_0x55c65e[_0x5631('0x33')]=_[_0x5631('0x34')](_0x55c65e['model'],_0x55c65e[_0x5631('0x31')]);_0x3ebf3a[_0x5631('0x35')]=_[_0x5631('0x34')](_0x55c65e['model'],qs[_0x5631('0x36')](_0x1980d5[_0x5631('0x31')]['fields']));_0x3ebf3a[_0x5631('0x35')]=_0x3ebf3a[_0x5631('0x35')][_0x5631('0x37')]?_0x3ebf3a[_0x5631('0x35')]:_0x55c65e[_0x5631('0x30')];if(!_0x1980d5[_0x5631('0x31')]['hasOwnProperty']('nolimit')){_0x3ebf3a['limit']=qs[_0x5631('0x1c')](_0x1980d5['query'][_0x5631('0x1c')]);_0x3ebf3a[_0x5631('0x1a')]=qs[_0x5631('0x1a')](_0x1980d5['query'][_0x5631('0x1a')]);}_0x3ebf3a[_0x5631('0x38')]=qs['sort'](_0x1980d5[_0x5631('0x31')][_0x5631('0x39')]);_0x3ebf3a[_0x5631('0x3a')]=qs[_0x5631('0x33')](_['pick'](_0x1980d5['query'],_0x55c65e['filters']),_0x4a17d9);if(_0x1980d5['query'][_0x5631('0x3b')]){_0x3ebf3a[_0x5631('0x3a')]=_[_0x5631('0x3c')](_0x3ebf3a[_0x5631('0x3a')],{'$or':_[_0x5631('0x2b')](_0x4a17d9,function(_0x30abd0){if(_0x30abd0['type']!==_0x5631('0x3d')){var _0x259876={};_0x259876[_0x30abd0[_0x5631('0x29')]]={'$like':'%'+_0x1980d5[_0x5631('0x31')][_0x5631('0x3b')]+'%'};return _0x259876;}})});}_0x3ebf3a=_[_0x5631('0x3c')]({},_0x3ebf3a,_0x1980d5[_0x5631('0x3e')]);var _0x1ec782={'where':_0x3ebf3a[_0x5631('0x3a')]};return db[_0x5631('0x2c')][_0x5631('0x1d')](_0x1ec782)['then'](function(_0x5e2bb2){_0x148046[_0x5631('0x1d')]=_0x5e2bb2;if(_0x1980d5[_0x5631('0x31')][_0x5631('0x3f')]){_0x3ebf3a['include']=[{'all':!![]}];}return db[_0x5631('0x2c')][_0x5631('0x40')](_0x3ebf3a);})[_0x5631('0x23')](function(_0x3d8499){_0x148046[_0x5631('0x41')]=_0x3d8499;return _0x148046;})[_0x5631('0x23')](respondWithFilteredResult(_0xc215b3,_0x3ebf3a))['catch'](handleError(_0xc215b3,null));};exports[_0x5631('0x42')]=function(_0x939353,_0x3d7812){var _0x399e16={'raw':!![],'where':{'id':_0x939353['params']['id']}},_0x1462b8={};_0x1462b8[_0x5631('0x30')]=_['keys'](db[_0x5631('0x2c')][_0x5631('0x43')]);_0x1462b8[_0x5631('0x31')]=_['keys'](_0x939353[_0x5631('0x31')]);_0x1462b8['filters']=_[_0x5631('0x34')](_0x1462b8[_0x5631('0x30')],_0x1462b8[_0x5631('0x31')]);_0x399e16['attributes']=_[_0x5631('0x34')](_0x1462b8['model'],qs[_0x5631('0x36')](_0x939353[_0x5631('0x31')][_0x5631('0x36')]));_0x399e16['attributes']=_0x399e16[_0x5631('0x35')][_0x5631('0x37')]?_0x399e16[_0x5631('0x35')]:_0x1462b8['model'];if(_0x939353['query'][_0x5631('0x3f')]){_0x399e16[_0x5631('0x44')]=[{'all':!![]}];}_0x399e16=_['merge']({},_0x399e16,_0x939353[_0x5631('0x3e')]);return db['CmHopperBlack'][_0x5631('0x45')](_0x399e16)[_0x5631('0x23')](handleEntityNotFound(_0x3d7812,null))[_0x5631('0x23')](respondWithResult(_0x3d7812,null))[_0x5631('0x46')](handleError(_0x3d7812,null));};exports[_0x5631('0x22')]=function(_0x2b79af,_0x15f232){if(_0x2b79af['body']['id']){delete _0x2b79af[_0x5631('0x47')]['id'];}return db[_0x5631('0x2c')][_0x5631('0x45')]({'where':{'id':_0x2b79af[_0x5631('0x48')]['id']}})[_0x5631('0x23')](handleEntityNotFound(_0x15f232,null))[_0x5631('0x23')](saveUpdates(_0x2b79af['body'],null))[_0x5631('0x23')](respondWithResult(_0x15f232,null))[_0x5631('0x46')](handleError(_0x15f232,null));};exports[_0x5631('0x24')]=function(_0x1a541e,_0xa8a03b){return db['CmHopperBlack'][_0x5631('0x45')]({'where':{'id':_0x1a541e[_0x5631('0x48')]['id']}})[_0x5631('0x23')](handleEntityNotFound(_0xa8a03b,null))[_0x5631('0x23')](removeEntity(_0xa8a03b,null))[_0x5631('0x46')](handleError(_0xa8a03b,null));};exports[_0x5631('0x49')]=function(_0x774c90,_0x474918){return db[_0x5631('0x2c')][_0x5631('0x49')]()['then'](respondWithResult(_0x474918,null))[_0x5631('0x46')](handleError(_0x474918,null));};
\ No newline at end of file
index ed88e66..61f1049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde71=['moment','bluebird','rimraf','./cmHopperBlack.attributes','exports','CmHopperBlack','lodash','util','../../config/logger','api'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xde71,0x150));var _0x1de7=function(_0x2bb3f6,_0x25fde0){_0x2bb3f6=_0x2bb3f6-0x0;var _0x62b339=_0xde71[_0x2bb3f6];return _0x62b339;};'use strict';var _=require(_0x1de7('0x0'));var util=require(_0x1de7('0x1'));var logger=require(_0x1de7('0x2'))(_0x1de7('0x3'));var moment=require(_0x1de7('0x4'));var BPromise=require(_0x1de7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1de7('0x6'));var config=require('../../config/environment');var attributes=require(_0x1de7('0x7'));module[_0x1de7('0x8')]=function(_0x51bc34,_0x9c428){return _0x51bc34['define'](_0x1de7('0x9'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6c4=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','CmHopperBlack','cm_hopper_black'];(function(_0x4996a7,_0x41b1c5){var _0x5b0895=function(_0x46e7a6){while(--_0x46e7a6){_0x4996a7['push'](_0x4996a7['shift']());}};_0x5b0895(++_0x41b1c5);}(_0xd6c4,0x16b));var _0x4d6c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd6c4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4d6c('0x0'));var util=require(_0x4d6c('0x1'));var logger=require(_0x4d6c('0x2'))(_0x4d6c('0x3'));var moment=require(_0x4d6c('0x4'));var BPromise=require(_0x4d6c('0x5'));var rp=require(_0x4d6c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4d6c('0x7'));var config=require(_0x4d6c('0x8'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x2161ff,_0x5ab826){return _0x2161ff['define'](_0x4d6c('0x9'),attributes,{'tableName':_0x4d6c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 409913f..6833f74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593d=['options','raw','where','attributes','limit','include','model','map','then','UpdateCmHopperBlack','CmHopperBlack','update','body','catch','DestroyCmHopperBlack','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','GetCmHopperBlack','findAll'];(function(_0x58dd64,_0x36a109){var _0x403b81=function(_0x22e463){while(--_0x22e463){_0x58dd64['push'](_0x58dd64['shift']());}};_0x403b81(++_0x36a109);}(_0x593d,0xcd));var _0xd593=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x593d[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xd593('0x0'));var util=require(_0xd593('0x1'));var moment=require(_0xd593('0x2'));var BPromise=require(_0xd593('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd593('0x4'));var db=require(_0xd593('0x5'))['db'];var utils=require(_0xd593('0x6'));var logger=require(_0xd593('0x7'))('rpc');var config=require(_0xd593('0x8'));var jayson=require(_0xd593('0x9'));var client=jayson[_0xd593('0xa')][_0xd593('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25c848,_0x3f1345,_0x1baf4d){return new BPromise(function(_0x99f3c1,_0x5e751d){return client[_0xd593('0xc')](_0x25c848,_0x1baf4d)['then'](function(_0x36bda9){logger[_0xd593('0xd')](_0xd593('0xe'),_0x3f1345,'request\x20sent');logger[_0xd593('0xf')](_0xd593('0x10'),_0x3f1345,_0xd593('0x11'),JSON[_0xd593('0x12')](_0x36bda9));if(_0x36bda9[_0xd593('0x13')]){if(_0x36bda9[_0xd593('0x13')]['code']===0x1f4){logger[_0xd593('0x13')](_0xd593('0xe'),_0x3f1345,_0x36bda9[_0xd593('0x13')][_0xd593('0x14')]);return _0x5e751d(_0x36bda9[_0xd593('0x13')][_0xd593('0x14')]);}logger[_0xd593('0x13')](_0xd593('0xe'),_0x3f1345,_0x36bda9['error'][_0xd593('0x14')]);return _0x99f3c1(_0x36bda9['error'][_0xd593('0x14')]);}else{logger[_0xd593('0xd')](_0xd593('0xe'),_0x3f1345,'request\x20sent');_0x99f3c1(_0x36bda9['result'][_0xd593('0x14')]);}})['catch'](function(_0x4db8b0){logger[_0xd593('0x13')]('CmHopperBlack,\x20%s,\x20%s',_0x3f1345,_0x4db8b0);_0x5e751d(_0x4db8b0);});});}exports[_0xd593('0x15')]=function(_0x318d75){var _0x27245f=this;return new Promise(function(_0x2836ec,_0x11ae41){return db['CmHopperBlack'][_0xd593('0x16')]({'raw':_0x318d75['options']?_0x318d75[_0xd593('0x17')][_0xd593('0x18')]===undefined?!![]:![]:!![],'where':_0x318d75[_0xd593('0x17')]?_0x318d75['options'][_0xd593('0x19')]||null:null,'attributes':_0x318d75[_0xd593('0x17')]?_0x318d75[_0xd593('0x17')][_0xd593('0x1a')]||null:null,'limit':_0x318d75[_0xd593('0x17')]?_0x318d75[_0xd593('0x17')][_0xd593('0x1b')]||null:null,'include':_0x318d75['options']?_0x318d75[_0xd593('0x17')][_0xd593('0x1c')]?_['map'](_0x318d75['options'][_0xd593('0x1c')],function(_0x24e625){return{'model':db[_0x24e625[_0xd593('0x1d')]],'as':_0x24e625['as'],'attributes':_0x24e625[_0xd593('0x1a')],'include':_0x24e625[_0xd593('0x1c')]?_[_0xd593('0x1e')](_0x24e625['include'],function(_0x5e924c){return{'model':db[_0x5e924c[_0xd593('0x1d')]],'as':_0x5e924c['as'],'attributes':_0x5e924c[_0xd593('0x1a')],'include':_0x5e924c[_0xd593('0x1c')]?_[_0xd593('0x1e')](_0x5e924c[_0xd593('0x1c')],function(_0x403f34){return{'model':db[_0x403f34['model']],'as':_0x403f34['as'],'attributes':_0x403f34[_0xd593('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd593('0x1f')](function(_0x9e5073){logger[_0xd593('0xd')](_0xd593('0x15'),_0x318d75);logger[_0xd593('0xf')]('GetCmHopperBlack',_0x318d75,JSON['stringify'](_0x9e5073));_0x2836ec(_0x9e5073);})['catch'](function(_0x24f884){logger['error'](_0xd593('0x15'),_0x24f884[_0xd593('0x14')],_0x318d75);_0x11ae41(_0x27245f[_0xd593('0x13')](0x1f4,_0x24f884[_0xd593('0x14')]));});});};exports[_0xd593('0x20')]=function(_0x19e7b0){var _0x3988d5=this;return new Promise(function(_0x47a4c3,_0x13da9d){return db[_0xd593('0x21')][_0xd593('0x22')](_0x19e7b0[_0xd593('0x23')],{'raw':_0x19e7b0[_0xd593('0x17')]?_0x19e7b0[_0xd593('0x17')][_0xd593('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19e7b0[_0xd593('0x17')]?_0x19e7b0[_0xd593('0x17')][_0xd593('0x19')]||null:null,'attributes':_0x19e7b0['options']?_0x19e7b0[_0xd593('0x17')][_0xd593('0x1a')]||null:null,'limit':_0x19e7b0[_0xd593('0x17')]?_0x19e7b0[_0xd593('0x17')][_0xd593('0x1b')]||null:null})[_0xd593('0x1f')](function(_0x58948b){logger[_0xd593('0xd')](_0xd593('0x20'),_0x19e7b0);logger[_0xd593('0xf')]('UpdateCmHopperBlack',_0x19e7b0,JSON['stringify'](_0x58948b));_0x47a4c3(_0x58948b);})[_0xd593('0x24')](function(_0x5e58d0){logger[_0xd593('0x13')](_0xd593('0x20'),_0x5e58d0['message'],_0x19e7b0);_0x13da9d(_0x3988d5['error'](0x1f4,_0x5e58d0[_0xd593('0x14')]));});});};exports[_0xd593('0x25')]=function(_0x74c18e){var _0x3f7762=this;return new Promise(function(_0x5ee2d5,_0x58b2d6){return db[_0xd593('0x21')]['destroy']({'where':_0x74c18e[_0xd593('0x17')]?_0x74c18e[_0xd593('0x17')][_0xd593('0x19')]||null:null})[_0xd593('0x1f')](function(_0x218a0c){logger[_0xd593('0xd')](_0xd593('0x25'),_0x74c18e);logger[_0xd593('0xf')](_0xd593('0x25'),_0x74c18e,JSON['stringify'](_0x218a0c));_0x5ee2d5(_0x218a0c);})[_0xd593('0x24')](function(_0x1bcf14){logger[_0xd593('0x13')](_0xd593('0x25'),_0x1bcf14[_0xd593('0x14')],_0x74c18e);_0x58b2d6(_0x3f7762['error'](0x1f4,_0x1bcf14['message']));});});};
\ No newline at end of file
+var _0x8e91=['body','raw','catch','DestroyCmHopperBlack','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','message','CmHopperBlack','findAll','options','where','attributes','limit','include','map','model','GetCmHopperBlack','stringify','UpdateCmHopperBlack','update'];(function(_0x246ebe,_0x5856fa){var _0x3d08e6=function(_0xa1296b){while(--_0xa1296b){_0x246ebe['push'](_0x246ebe['shift']());}};_0x3d08e6(++_0x5856fa);}(_0x8e91,0x1e0));var _0x18e9=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0x8e91[_0x1b4b23];return _0x2a325b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x18e9('0x0'));var BPromise=require('bluebird');var rs=require(_0x18e9('0x1'));var fs=require('fs');var Redis=require(_0x18e9('0x2'));var db=require(_0x18e9('0x3'))['db'];var utils=require(_0x18e9('0x4'));var logger=require(_0x18e9('0x5'))(_0x18e9('0x6'));var config=require(_0x18e9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x18e9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a2854,_0x21d745,_0x236801){return new BPromise(function(_0x432053,_0x52f5bc){return client['request'](_0x4a2854,_0x236801)[_0x18e9('0x9')](function(_0x33dfbc){logger[_0x18e9('0xa')](_0x18e9('0xb'),_0x21d745,_0x18e9('0xc'));logger[_0x18e9('0xd')](_0x18e9('0xe'),_0x21d745,_0x18e9('0xc'),JSON['stringify'](_0x33dfbc));if(_0x33dfbc['error']){if(_0x33dfbc[_0x18e9('0xf')]['code']===0x1f4){logger[_0x18e9('0xf')](_0x18e9('0xb'),_0x21d745,_0x33dfbc[_0x18e9('0xf')][_0x18e9('0x10')]);return _0x52f5bc(_0x33dfbc['error'][_0x18e9('0x10')]);}logger['error'](_0x18e9('0xb'),_0x21d745,_0x33dfbc[_0x18e9('0xf')][_0x18e9('0x10')]);return _0x432053(_0x33dfbc[_0x18e9('0xf')][_0x18e9('0x10')]);}else{logger[_0x18e9('0xa')](_0x18e9('0xb'),_0x21d745,_0x18e9('0xc'));_0x432053(_0x33dfbc['result'][_0x18e9('0x10')]);}})['catch'](function(_0x3c8e0a){logger['error'](_0x18e9('0xb'),_0x21d745,_0x3c8e0a);_0x52f5bc(_0x3c8e0a);});});}exports['GetCmHopperBlack']=function(_0x5d4f9f){var _0x13a420=this;return new Promise(function(_0x1d8bd1,_0x5f3b7f){return db[_0x18e9('0x11')][_0x18e9('0x12')]({'raw':_0x5d4f9f[_0x18e9('0x13')]?_0x5d4f9f[_0x18e9('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x5d4f9f['options']?_0x5d4f9f[_0x18e9('0x13')][_0x18e9('0x14')]||null:null,'attributes':_0x5d4f9f[_0x18e9('0x13')]?_0x5d4f9f['options'][_0x18e9('0x15')]||null:null,'limit':_0x5d4f9f[_0x18e9('0x13')]?_0x5d4f9f[_0x18e9('0x13')][_0x18e9('0x16')]||null:null,'include':_0x5d4f9f['options']?_0x5d4f9f[_0x18e9('0x13')][_0x18e9('0x17')]?_[_0x18e9('0x18')](_0x5d4f9f[_0x18e9('0x13')][_0x18e9('0x17')],function(_0x3628a3){return{'model':db[_0x3628a3[_0x18e9('0x19')]],'as':_0x3628a3['as'],'attributes':_0x3628a3[_0x18e9('0x15')],'include':_0x3628a3[_0x18e9('0x17')]?_[_0x18e9('0x18')](_0x3628a3[_0x18e9('0x17')],function(_0x2705b8){return{'model':db[_0x2705b8[_0x18e9('0x19')]],'as':_0x2705b8['as'],'attributes':_0x2705b8[_0x18e9('0x15')],'include':_0x2705b8[_0x18e9('0x17')]?_[_0x18e9('0x18')](_0x2705b8[_0x18e9('0x17')],function(_0x32151a){return{'model':db[_0x32151a[_0x18e9('0x19')]],'as':_0x32151a['as'],'attributes':_0x32151a[_0x18e9('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd4aad){logger['info']('GetCmHopperBlack',_0x5d4f9f);logger[_0x18e9('0xd')](_0x18e9('0x1a'),_0x5d4f9f,JSON[_0x18e9('0x1b')](_0xd4aad));_0x1d8bd1(_0xd4aad);})['catch'](function(_0x221b47){logger[_0x18e9('0xf')](_0x18e9('0x1a'),_0x221b47[_0x18e9('0x10')],_0x5d4f9f);_0x5f3b7f(_0x13a420[_0x18e9('0xf')](0x1f4,_0x221b47['message']));});});};exports[_0x18e9('0x1c')]=function(_0x4bf264){var _0x117887=this;return new Promise(function(_0x27f892,_0x33d3d0){return db[_0x18e9('0x11')][_0x18e9('0x1d')](_0x4bf264[_0x18e9('0x1e')],{'raw':_0x4bf264['options']?_0x4bf264[_0x18e9('0x13')][_0x18e9('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bf264['options']?_0x4bf264[_0x18e9('0x13')][_0x18e9('0x14')]||null:null,'attributes':_0x4bf264['options']?_0x4bf264[_0x18e9('0x13')][_0x18e9('0x15')]||null:null,'limit':_0x4bf264['options']?_0x4bf264[_0x18e9('0x13')][_0x18e9('0x16')]||null:null})[_0x18e9('0x9')](function(_0x9e0086){logger['info'](_0x18e9('0x1c'),_0x4bf264);logger[_0x18e9('0xd')](_0x18e9('0x1c'),_0x4bf264,JSON[_0x18e9('0x1b')](_0x9e0086));_0x27f892(_0x9e0086);})[_0x18e9('0x20')](function(_0x38a62b){logger[_0x18e9('0xf')](_0x18e9('0x1c'),_0x38a62b[_0x18e9('0x10')],_0x4bf264);_0x33d3d0(_0x117887['error'](0x1f4,_0x38a62b[_0x18e9('0x10')]));});});};exports[_0x18e9('0x21')]=function(_0x47d7b0){var _0x1b6a03=this;return new Promise(function(_0x1cf6ec,_0x112778){return db[_0x18e9('0x11')]['destroy']({'where':_0x47d7b0[_0x18e9('0x13')]?_0x47d7b0['options'][_0x18e9('0x14')]||null:null})[_0x18e9('0x9')](function(_0x10a23d){logger[_0x18e9('0xa')](_0x18e9('0x21'),_0x47d7b0);logger[_0x18e9('0xd')](_0x18e9('0x21'),_0x47d7b0,JSON[_0x18e9('0x1b')](_0x10a23d));_0x1cf6ec(_0x10a23d);})[_0x18e9('0x20')](function(_0x56c421){logger[_0x18e9('0xf')](_0x18e9('0x21'),_0x56c421[_0x18e9('0x10')],_0x47d7b0);_0x112778(_0x1b6a03[_0x18e9('0xf')](0x1f4,_0x56c421[_0x18e9('0x10')]));});});};
\ No newline at end of file
index d136d6b..a534549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0adf=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','isAuthenticated','get','/describe','describe','/:id','put','update','delete','multer','util'];(function(_0x1f69a2,_0x5ebeb8){var _0x899ef4=function(_0x52f625){while(--_0x52f625){_0x1f69a2['push'](_0x1f69a2['shift']());}};_0x899ef4(++_0x5ebeb8);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x59a335,_0x2fe9a9){_0x59a335=_0x59a335-0x0;var _0x24324f=_0x0adf[_0x59a335];return _0x24324f;};'use strict';var multer=require(_0xf0ad('0x0'));var util=require(_0xf0ad('0x1'));var path=require(_0xf0ad('0x2'));var timeout=require('connect-timeout');var express=require(_0xf0ad('0x3'));var router=express[_0xf0ad('0x4')]();var fs_extra=require(_0xf0ad('0x5'));var auth=require(_0xf0ad('0x6'));var interaction=require(_0xf0ad('0x7'));var config=require(_0xf0ad('0x8'));var controller=require(_0xf0ad('0x9'));router['get']('/',auth[_0xf0ad('0xa')](),controller['index']);router[_0xf0ad('0xb')](_0xf0ad('0xc'),auth[_0xf0ad('0xa')](),controller[_0xf0ad('0xd')]);router[_0xf0ad('0xb')](_0xf0ad('0xe'),auth[_0xf0ad('0xa')](),controller['show']);router[_0xf0ad('0xf')]('/:id',auth[_0xf0ad('0xa')](),controller[_0xf0ad('0x10')]);router[_0xf0ad('0x11')](_0xf0ad('0xe'),auth[_0xf0ad('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x8ace=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','/:id','show','put'];(function(_0x62aae3,_0x3a3b40){var _0x1db4f7=function(_0x46674d){while(--_0x46674d){_0x62aae3['push'](_0x62aae3['shift']());}};_0x1db4f7(++_0x3a3b40);}(_0x8ace,0x1bc));var _0xe8ac=function(_0x5ba35a,_0x5e5113){_0x5ba35a=_0x5ba35a-0x0;var _0x5900dc=_0x8ace[_0x5ba35a];return _0x5900dc;};'use strict';var multer=require(_0xe8ac('0x0'));var util=require(_0xe8ac('0x1'));var path=require(_0xe8ac('0x2'));var timeout=require(_0xe8ac('0x3'));var express=require(_0xe8ac('0x4'));var router=express[_0xe8ac('0x5')]();var fs_extra=require(_0xe8ac('0x6'));var auth=require(_0xe8ac('0x7'));var interaction=require(_0xe8ac('0x8'));var config=require(_0xe8ac('0x9'));var controller=require(_0xe8ac('0xa'));router[_0xe8ac('0xb')]('/',auth[_0xe8ac('0xc')](),controller[_0xe8ac('0xd')]);router['get'](_0xe8ac('0xe'),auth[_0xe8ac('0xc')](),controller['describe']);router['get'](_0xe8ac('0xf'),auth['isAuthenticated'](),controller[_0xe8ac('0x10')]);router[_0xe8ac('0x11')](_0xe8ac('0xf'),auth[_0xe8ac('0xc')](),controller[_0xe8ac('0x12')]);router[_0xe8ac('0x13')]('/:id',auth[_0xe8ac('0xc')](),controller[_0xe8ac('0x14')]);module[_0xe8ac('0x15')]=router;
\ No newline at end of file
index daa73b9..d2c6ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfee=['setDataValue','followuptime','diff','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','endtime'];(function(_0x4f431d,_0xd51a3b){var _0x4f31e1=function(_0x1c688d){while(--_0x1c688d){_0x4f431d['push'](_0x4f431d['shift']());}};_0x4f31e1(++_0xd51a3b);}(_0xcfee,0x143));var _0xecfe=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xcfee[_0x25e7cb];return _0x375d92;};'use strict';var Sequelize=require(_0xecfe('0x0'));var moment=require(_0xecfe('0x1'));module[_0xecfe('0x2')]={'state':{'type':Sequelize[_0xecfe('0x3')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xecfe('0x4')]},'calleridname':{'type':Sequelize[_0xecfe('0x4')]},'starttime':{'type':Sequelize[_0xecfe('0x5')]},'responsetime':{'type':Sequelize[_0xecfe('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xecfe('0x5')]},'endtime':{'type':Sequelize[_0xecfe('0x5')]},'ringtime':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0xecfe('0x4')]},'campaigntype':{'type':Sequelize[_0xecfe('0x4')]},'membername':{'type':Sequelize[_0xecfe('0x4')]},'reason':{'type':Sequelize[_0xecfe('0x4')]},'disposition':{'type':Sequelize[_0xecfe('0x4')]},'secondDisposition':{'type':Sequelize[_0xecfe('0x4')]},'thirdDisposition':{'type':Sequelize[_0xecfe('0x4')]},'dispositionat':{'type':Sequelize[_0xecfe('0x5')],'set':function(_0x352da6){var _0x4a4c70=this['getDataValue'](_0xecfe('0x6'));if(_0x4a4c70&&_0x352da6){this[_0xecfe('0x7')](_0xecfe('0x8'),moment(_0x352da6)[_0xecfe('0x9')](moment(_0x4a4c70),'seconds'));}}},'amd':{'type':Sequelize[_0xecfe('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xecfe('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xecfe('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xecfe('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0xecfe('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xecfe('0x5')]},'deleted':{'type':Sequelize[_0xecfe('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xecfe('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xecfe('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xecfe('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x380f=['STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports','INTEGER'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x380f,0xf3));var _0xf380=function(_0x280267,_0x345b58){_0x280267=_0x280267-0x0;var _0x36ec43=_0x380f[_0x280267];return _0x36ec43;};'use strict';var Sequelize=require(_0xf380('0x0'));var moment=require(_0xf380('0x1'));module[_0xf380('0x2')]={'state':{'type':Sequelize[_0xf380('0x3')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xf380('0x4')]},'originatecalleridname':{'type':Sequelize[_0xf380('0x4')]},'calleridnum':{'type':Sequelize[_0xf380('0x4')]},'calleridname':{'type':Sequelize[_0xf380('0x4')]},'starttime':{'type':Sequelize[_0xf380('0x5')]},'responsetime':{'type':Sequelize[_0xf380('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xf380('0x5')]},'ringtime':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xf380('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xf380('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xf380('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xf380('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0xf380('0x5')],'set':function(_0x26c3fa){var _0x2a723c=this[_0xf380('0x6')](_0xf380('0x7'));if(_0x2a723c&&_0x26c3fa){this[_0xf380('0x8')](_0xf380('0x9'),moment(_0x26c3fa)[_0xf380('0xa')](moment(_0x2a723c),_0xf380('0xb')));}}},'amd':{'type':Sequelize[_0xf380('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0xf380('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xf380('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xf380('0x5')]},'callback':{'type':Sequelize[_0xf380('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf380('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xf380('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xf380('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf380('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 0e92970..697acd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['COUNT','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','noSuchContacts','congestionContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','phone','ContactId','select','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ListId','ANY_VALUE(VoiceQueueId)','VoiceQueueId','cm_hopper_final','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','VoiceQueueId\x20=\x20?','from','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','fromQuery','CampaignId','createdAt','updatedAt','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','CmHopperFinal','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','order','sort','where','pick','map','VIRTUAL','filter','merge','options','count','include','findAll','rows','catch','show','params','length','includeAll','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts'];(function(_0x893787,_0x2ecfe4){var _0x4d2cb0=function(_0x486640){while(--_0x486640){_0x893787['push'](_0x893787['shift']());}};_0x4d2cb0(++_0x2ecfe4);}(_0xe3da,0x1cd));var _0xae3d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xe3da[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0xae3d('0x0'));var rimraf=require(_0xae3d('0x1'));var zipdir=require(_0xae3d('0x2'));var jsonpatch=require(_0xae3d('0x3'));var rp=require(_0xae3d('0x4'));var moment=require(_0xae3d('0x5'));var BPromise=require(_0xae3d('0x6'));var Mustache=require(_0xae3d('0x7'));var util=require(_0xae3d('0x8'));var path=require(_0xae3d('0x9'));var sox=require(_0xae3d('0xa'));var csv=require(_0xae3d('0xb'));var ejs=require(_0xae3d('0xc'));var fs=require('fs');var fs_extra=require(_0xae3d('0xd'));var _=require(_0xae3d('0xe'));var squel=require(_0xae3d('0xf'));var crypto=require('crypto');var jsforce=require(_0xae3d('0x10'));var deskjs=require(_0xae3d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae3d('0x12'));var Redis=require(_0xae3d('0x13'));var authService=require(_0xae3d('0x14'));var qs=require(_0xae3d('0x15'));var as=require(_0xae3d('0x16'));var hardwareService=require(_0xae3d('0x17'));var logger=require('../../config/logger')(_0xae3d('0x18'));var utils=require('../../config/utils');var config=require(_0xae3d('0x19'));var licenseUtil=require(_0xae3d('0x1a'));var db=require(_0xae3d('0x1b'))['db'];function respondWithStatusCode(_0x172f7a,_0x48aa74){_0x48aa74=_0x48aa74||0xcc;return function(_0xfb7869){if(_0xfb7869){return _0x172f7a[_0xae3d('0x1c')](_0x48aa74);}return _0x172f7a[_0xae3d('0x1d')](_0x48aa74)[_0xae3d('0x1e')]();};}function respondWithResult(_0x2afdd3,_0x430659){_0x430659=_0x430659||0xc8;return function(_0x31498d){if(_0x31498d){return _0x2afdd3['status'](_0x430659)[_0xae3d('0x1f')](_0x31498d);}};}function respondWithFilteredResult(_0x42f4b4,_0x46295b){return function(_0x230afb){if(_0x230afb){var _0x192c13=typeof _0x46295b[_0xae3d('0x20')]==='undefined'&&typeof _0x46295b[_0xae3d('0x21')]===_0xae3d('0x22');var _0x2e31f1=_0x230afb['count'];var _0x3f8cf9=_0x192c13?0x0:_0x46295b[_0xae3d('0x20')];var _0x558e42=_0x192c13?_0x230afb['count']:_0x46295b[_0xae3d('0x20')]+_0x46295b[_0xae3d('0x21')];var _0x19c44d;if(_0x558e42>=_0x2e31f1){_0x558e42=_0x2e31f1;_0x19c44d=0xc8;}else{_0x19c44d=0xce;}_0x42f4b4[_0xae3d('0x1d')](_0x19c44d);return _0x42f4b4[_0xae3d('0x23')]('Content-Range',_0x3f8cf9+'-'+_0x558e42+'/'+_0x2e31f1)[_0xae3d('0x1f')](_0x230afb);}return null;};}function patchUpdates(_0x48f00e){return function(_0x4a09c2){try{jsonpatch[_0xae3d('0x24')](_0x4a09c2,_0x48f00e,!![]);}catch(_0x1415e8){return BPromise[_0xae3d('0x25')](_0x1415e8);}return _0x4a09c2[_0xae3d('0x26')]();};}function saveUpdates(_0x3e7afc,_0x26c419){return function(_0x155099){if(_0x155099){return _0x155099[_0xae3d('0x27')](_0x3e7afc)[_0xae3d('0x28')](function(_0x300be8){return _0x300be8;});}return null;};}function removeEntity(_0x9bf34a,_0x37f5ff){return function(_0x1b2acb){if(_0x1b2acb){return _0x1b2acb[_0xae3d('0x29')]()[_0xae3d('0x28')](function(){_0x9bf34a[_0xae3d('0x1d')](0xcc)[_0xae3d('0x1e')]();});}};}function handleEntityNotFound(_0x2131e9,_0x1b1217){return function(_0x5d45db){if(!_0x5d45db){_0x2131e9[_0xae3d('0x1c')](0x194);}return _0x5d45db;};}function handleError(_0x185e71,_0xb5940){_0xb5940=_0xb5940||0x1f4;return function(_0x52df0f){logger[_0xae3d('0x2a')](_0x52df0f[_0xae3d('0x2b')]);if(_0x52df0f[_0xae3d('0x2c')]){delete _0x52df0f['name'];}_0x185e71['status'](_0xb5940)[_0xae3d('0x2d')](_0x52df0f);};}exports[_0xae3d('0x2e')]=function(_0x3a5840,_0x3114f9){var _0xb69ec9={},_0x561371={},_0x1d1483={'count':0x0,'rows':[]};var _0x3a2434=_['map'](db[_0xae3d('0x2f')][_0xae3d('0x30')],function(_0x2cf750){return{'name':_0x2cf750[_0xae3d('0x31')],'type':_0x2cf750[_0xae3d('0x32')][_0xae3d('0x33')]};});_0x561371['model']=_['map'](_0x3a2434,'name');_0x561371[_0xae3d('0x34')]=_[_0xae3d('0x35')](_0x3a5840[_0xae3d('0x34')]);_0x561371[_0xae3d('0x36')]=_['intersection'](_0x561371[_0xae3d('0x37')],_0x561371[_0xae3d('0x34')]);_0xb69ec9[_0xae3d('0x38')]=_[_0xae3d('0x39')](_0x561371[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0x3a5840[_0xae3d('0x34')]['fields']));_0xb69ec9[_0xae3d('0x38')]=_0xb69ec9['attributes']['length']?_0xb69ec9[_0xae3d('0x38')]:_0x561371['model'];if(!_0x3a5840[_0xae3d('0x34')]['hasOwnProperty']('nolimit')){_0xb69ec9[_0xae3d('0x21')]=qs[_0xae3d('0x21')](_0x3a5840[_0xae3d('0x34')]['limit']);_0xb69ec9[_0xae3d('0x20')]=qs['offset'](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x20')]);}_0xb69ec9[_0xae3d('0x3b')]=qs[_0xae3d('0x3c')](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x3c')]);_0xb69ec9[_0xae3d('0x3d')]=qs[_0xae3d('0x36')](_[_0xae3d('0x3e')](_0x3a5840[_0xae3d('0x34')],_0x561371[_0xae3d('0x36')]),_0x3a2434);if(_0x3a5840['query']['filter']){_0xb69ec9[_0xae3d('0x3d')]=_['merge'](_0xb69ec9[_0xae3d('0x3d')],{'$or':_[_0xae3d('0x3f')](_0x3a2434,function(_0x1db3c1){if(_0x1db3c1[_0xae3d('0x32')]!==_0xae3d('0x40')){var _0x35db44={};_0x35db44[_0x1db3c1[_0xae3d('0x2c')]]={'$like':'%'+_0x3a5840[_0xae3d('0x34')][_0xae3d('0x41')]+'%'};return _0x35db44;}})});}_0xb69ec9=_[_0xae3d('0x42')]({},_0xb69ec9,_0x3a5840[_0xae3d('0x43')]);var _0x549db8={'where':_0xb69ec9[_0xae3d('0x3d')]};return db[_0xae3d('0x2f')][_0xae3d('0x44')](_0x549db8)['then'](function(_0x4df102){_0x1d1483[_0xae3d('0x44')]=_0x4df102;if(_0x3a5840[_0xae3d('0x34')]['includeAll']){_0xb69ec9[_0xae3d('0x45')]=[{'all':!![]}];}return db[_0xae3d('0x2f')][_0xae3d('0x46')](_0xb69ec9);})[_0xae3d('0x28')](function(_0x436a04){_0x1d1483[_0xae3d('0x47')]=_0x436a04;return _0x1d1483;})['then'](respondWithFilteredResult(_0x3114f9,_0xb69ec9))[_0xae3d('0x48')](handleError(_0x3114f9,null));};exports[_0xae3d('0x49')]=function(_0xce7f34,_0x938811){var _0x1fef90={'raw':!![],'where':{'id':_0xce7f34[_0xae3d('0x4a')]['id']}},_0x515220={};_0x515220['model']=_[_0xae3d('0x35')](db[_0xae3d('0x2f')][_0xae3d('0x30')]);_0x515220[_0xae3d('0x34')]=_['keys'](_0xce7f34['query']);_0x515220['filters']=_[_0xae3d('0x39')](_0x515220[_0xae3d('0x37')],_0x515220['query']);_0x1fef90['attributes']=_['intersection'](_0x515220[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0xce7f34[_0xae3d('0x34')][_0xae3d('0x3a')]));_0x1fef90[_0xae3d('0x38')]=_0x1fef90[_0xae3d('0x38')][_0xae3d('0x4b')]?_0x1fef90['attributes']:_0x515220['model'];if(_0xce7f34['query'][_0xae3d('0x4c')]){_0x1fef90['include']=[{'all':!![]}];}_0x1fef90=_[_0xae3d('0x42')]({},_0x1fef90,_0xce7f34[_0xae3d('0x43')]);return db[_0xae3d('0x2f')][_0xae3d('0x4d')](_0x1fef90)[_0xae3d('0x28')](handleEntityNotFound(_0x938811,null))[_0xae3d('0x28')](respondWithResult(_0x938811,null))[_0xae3d('0x48')](handleError(_0x938811,null));};exports[_0xae3d('0x4e')]=function(_0x38f92d,_0x4ed0f9){return db[_0xae3d('0x2f')]['describe']()['then'](respondWithResult(_0x4ed0f9,null))['catch'](handleError(_0x4ed0f9,null));};exports[_0xae3d('0x27')]=function(_0xc8f551,_0x39f213){if(_0xc8f551[_0xae3d('0x4f')]['uniqueid']){delete _0xc8f551['body'][_0xae3d('0x50')];}return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'uniqueid':_0xc8f551[_0xae3d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x39f213,null))[_0xae3d('0x28')](saveUpdates(_0xc8f551[_0xae3d('0x4f')],null))[_0xae3d('0x28')](respondWithResult(_0x39f213,null))[_0xae3d('0x48')](handleError(_0x39f213,null));};exports[_0xae3d('0x51')]=function(_0x38ccf1,_0x3e30ea,_0x291c7d){return db[_0xae3d('0x2f')][_0xae3d('0x46')]({'raw':![],'where':{'VoiceQueueId':_0x38ccf1[_0xae3d('0x4a')]['id']},'attributes':[[db[_0xae3d('0x52')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x54')))),'noSuchContacts'],[db[_0xae3d('0x52')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x55')))),_0xae3d('0x56')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x58')))),_0xae3d('0x59')],[db[_0xae3d('0x52')]['fn']('COUNT',db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x5a')))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db[_0xae3d('0x52')]['fn']('IF',db['sequelize']['literal'](_0xae3d('0x5b')))),_0xae3d('0x5c')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')]['literal'](_0xae3d('0x5d')))),_0xae3d('0x5e')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')]['literal'](_0xae3d('0x5f')))),_0xae3d('0x60')],[db[_0xae3d('0x52')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x61')))),'answeringMachine']]})[_0xae3d('0x28')](handleEntityNotFound(_0x3e30ea,null))[_0xae3d('0x28')](respondWithResult(_0x3e30ea,null))[_0xae3d('0x48')](handleError(_0x3e30ea,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x3a39ed,_0x31b362,_0x253ee4){return db[_0xae3d('0x2f')][_0xae3d('0x46')]({'raw':![],'where':{'CampaignId':_0x3a39ed[_0xae3d('0x4a')]['id']},'attributes':[[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x54')))),_0xae3d('0x62')],[db['sequelize']['fn']('COUNT',db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x55')))),'noAnswerContacts'],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x58')))),_0xae3d('0x59')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x5a')))),_0xae3d('0x63')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x5b')))),_0xae3d('0x5c')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xae3d('0x5e')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x5f')))),_0xae3d('0x60')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')]['literal'](_0xae3d('0x61')))),_0xae3d('0x64')]]})['then'](handleEntityNotFound(_0x31b362,null))[_0xae3d('0x28')](respondWithResult(_0x31b362,null))['catch'](handleError(_0x31b362,null));};exports[_0xae3d('0x65')]=function(_0x115e99,_0x26c409,_0x4709ea){return db[_0xae3d('0x66')]['find']({'where':{'id':_0x115e99[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x26c409,null))[_0xae3d('0x28')](function(_0x5f1e9c){var _0x546991;if(_0x5f1e9c){_0x546991=squel[_0xae3d('0x67')]()[_0xae3d('0x68')]('cm_hopper')['fromQuery']([_0xae3d('0x69'),'scheduledAt',_0xae3d('0x6a'),'ListId','VoiceQueueId','createdAt','updatedAt'],squel[_0xae3d('0x6b')]()[_0xae3d('0x6c')]('ANY_VALUE(calleridnum)','phone')[_0xae3d('0x6c')](_0xae3d('0x6d'),_0xae3d('0x6e'))[_0xae3d('0x6c')](_0xae3d('0x6f'),_0xae3d('0x6a'))[_0xae3d('0x6c')]('ANY_VALUE(ListId)',_0xae3d('0x70'))[_0xae3d('0x6c')](_0xae3d('0x71'),_0xae3d('0x72'))[_0xae3d('0x6c')](_0xae3d('0x6d'),'createdAt')[_0xae3d('0x6c')](_0xae3d('0x6d'),'updatedAt')['from'](_0xae3d('0x73'))[_0xae3d('0x3d')]('VoiceQueueId\x20=\x20?',_0x115e99[_0xae3d('0x4a')]['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')]('state\x20=\x20?',_0x115e99[_0xae3d('0x4f')][_0xae3d('0x75')]['toString']())['where'](_0xae3d('0x76'))[_0xae3d('0x3d')](_0xae3d('0x77'),squel['select']()[_0xae3d('0x6c')](_0xae3d('0x69'))['from'](_0xae3d('0x78'))[_0xae3d('0x3d')](_0xae3d('0x79'),_0x115e99['params']['id'][_0xae3d('0x74')]()))[_0xae3d('0x3d')](_0xae3d('0x77'),squel['select']()[_0xae3d('0x6c')]('calleridnum')[_0xae3d('0x7a')]('cm_hopper_final')['where'](_0xae3d('0x79'),_0x115e99['params']['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')](_0xae3d('0x7b')))[_0xae3d('0x7c')]('ContactId'))[_0xae3d('0x74')]();return db[_0xae3d('0x52')][_0xae3d('0x34')](_0x546991);}return[];})[_0xae3d('0x28')](respondWithResult(_0x26c409,null))[_0xae3d('0x48')](handleError(_0x26c409,null));};exports[_0xae3d('0x7d')]=function(_0x1c5f67,_0xa083d0,_0x26e422){return db[_0xae3d('0x7e')][_0xae3d('0x4d')]({'where':{'id':_0x1c5f67[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0xa083d0,null))[_0xae3d('0x28')](function(_0xf281f5){var _0x3261e5;if(_0xf281f5){_0x3261e5=squel[_0xae3d('0x67')]()['into'](_0xae3d('0x78'))[_0xae3d('0x7f')]([_0xae3d('0x69'),_0xae3d('0x6e'),_0xae3d('0x6a'),'ListId',_0xae3d('0x80'),_0xae3d('0x81'),_0xae3d('0x82')],squel[_0xae3d('0x6b')]()[_0xae3d('0x6c')](_0xae3d('0x83'),_0xae3d('0x69'))[_0xae3d('0x6c')]('NOW()',_0xae3d('0x6e'))[_0xae3d('0x6c')](_0xae3d('0x6f'),'ContactId')[_0xae3d('0x6c')](_0xae3d('0x84'),_0xae3d('0x70'))['field'](_0xae3d('0x85'),_0xae3d('0x80'))['field'](_0xae3d('0x6d'),'createdAt')[_0xae3d('0x6c')]('NOW()',_0xae3d('0x82'))[_0xae3d('0x7a')](_0xae3d('0x73'))[_0xae3d('0x3d')](_0xae3d('0x86'),_0x1c5f67['params']['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')]('state\x20=\x20?',_0x1c5f67['body'][_0xae3d('0x75')][_0xae3d('0x74')]())[_0xae3d('0x3d')](_0xae3d('0x76'))['where'](_0xae3d('0x77'),squel[_0xae3d('0x6b')]()[_0xae3d('0x6c')]('phone')['from'](_0xae3d('0x78'))['where'](_0xae3d('0x86'),_0x1c5f67['params']['id'][_0xae3d('0x74')]()))[_0xae3d('0x3d')](_0xae3d('0x77'),squel[_0xae3d('0x6b')]()['field'](_0xae3d('0x87'))[_0xae3d('0x7a')](_0xae3d('0x73'))['where'](_0xae3d('0x86'),_0x1c5f67['params']['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')]('state\x20=\x204'))['group'](_0xae3d('0x6a')))['toString']();return db['sequelize'][_0xae3d('0x34')](_0x3261e5);}return[];})['then'](respondWithResult(_0xa083d0,null))[_0xae3d('0x48')](handleError(_0xa083d0,null));};exports['checkContactHopper']=function(_0x31f606,_0x47aa7a,_0x27c0ff){return db['CmHopper'][_0xae3d('0x88')]({'where':{'VoiceQueueId':_0x31f606['body'][_0xae3d('0x72')],'CampaignId':_0x31f606[_0xae3d('0x4f')][_0xae3d('0x80')],'ContactId':_0x31f606[_0xae3d('0x4f')][_0xae3d('0x6a')]}})[_0xae3d('0x28')](handleEntityNotFound(_0x47aa7a,null))[_0xae3d('0x28')](function(_0x95c4ce){if(_0x95c4ce){return _0x95c4ce;}return null;})[_0xae3d('0x28')](respondWithResult(_0x47aa7a,null))['catch'](handleError(_0x47aa7a,null));};
\ No newline at end of file
+var _0xbd51=['ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','from','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','index','CmHopperFinal','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','then','includeAll','include','rows','show','params','keys','length','catch','describe','body','uniqueid','find','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','findAll','`state`\x20=\x208,\x201,\x20null','reCallContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','ContactId','ListId','VoiceQueueId','createdAt','select','field','ANY_VALUE(calleridnum)','NOW()','scheduledAt'];(function(_0x54b917,_0x3d3ac9){var _0x5017c8=function(_0x55fc90){while(--_0x55fc90){_0x54b917['push'](_0x54b917['shift']());}};_0x5017c8(++_0x3d3ac9);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x2e4e05,_0x2342fb){_0x2e4e05=_0x2e4e05-0x0;var _0x281f5e=_0xbd51[_0x2e4e05];return _0x281f5e;};'use strict';var emlformat=require(_0x1bd5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1bd5('0x1'));var jsonpatch=require(_0x1bd5('0x2'));var rp=require(_0x1bd5('0x3'));var moment=require(_0x1bd5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x1bd5('0x5'));var csv=require(_0x1bd5('0x6'));var ejs=require(_0x1bd5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1bd5('0x8'));var squel=require(_0x1bd5('0x9'));var crypto=require(_0x1bd5('0xa'));var jsforce=require(_0x1bd5('0xb'));var deskjs=require(_0x1bd5('0xc'));var toCsv=require('to-csv');var querystring=require(_0x1bd5('0xd'));var Papa=require('papaparse');var Redis=require(_0x1bd5('0xe'));var authService=require(_0x1bd5('0xf'));var qs=require(_0x1bd5('0x10'));var as=require(_0x1bd5('0x11'));var hardwareService=require(_0x1bd5('0x12'));var logger=require(_0x1bd5('0x13'))('api');var utils=require(_0x1bd5('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x1bd5('0x15'));var db=require(_0x1bd5('0x16'))['db'];function respondWithStatusCode(_0x37e8e1,_0x14606b){_0x14606b=_0x14606b||0xcc;return function(_0x177be0){if(_0x177be0){return _0x37e8e1[_0x1bd5('0x17')](_0x14606b);}return _0x37e8e1[_0x1bd5('0x18')](_0x14606b)['end']();};}function respondWithResult(_0x5650b5,_0x8b2390){_0x8b2390=_0x8b2390||0xc8;return function(_0x6d2c40){if(_0x6d2c40){return _0x5650b5[_0x1bd5('0x18')](_0x8b2390)[_0x1bd5('0x19')](_0x6d2c40);}};}function respondWithFilteredResult(_0x48d048,_0x5072c2){return function(_0xa63190){if(_0xa63190){var _0xc7277e=typeof _0x5072c2[_0x1bd5('0x1a')]===_0x1bd5('0x1b')&&typeof _0x5072c2[_0x1bd5('0x1c')]===_0x1bd5('0x1b');var _0x13cf34=_0xa63190[_0x1bd5('0x1d')];var _0x4670b5=_0xc7277e?0x0:_0x5072c2['offset'];var _0x53ad5e=_0xc7277e?_0xa63190[_0x1bd5('0x1d')]:_0x5072c2[_0x1bd5('0x1a')]+_0x5072c2[_0x1bd5('0x1c')];var _0xb95d4e;if(_0x53ad5e>=_0x13cf34){_0x53ad5e=_0x13cf34;_0xb95d4e=0xc8;}else{_0xb95d4e=0xce;}_0x48d048[_0x1bd5('0x18')](_0xb95d4e);return _0x48d048[_0x1bd5('0x1e')](_0x1bd5('0x1f'),_0x4670b5+'-'+_0x53ad5e+'/'+_0x13cf34)[_0x1bd5('0x19')](_0xa63190);}return null;};}function patchUpdates(_0x456051){return function(_0xb1ac1e){try{jsonpatch[_0x1bd5('0x20')](_0xb1ac1e,_0x456051,!![]);}catch(_0x2447c4){return BPromise[_0x1bd5('0x21')](_0x2447c4);}return _0xb1ac1e[_0x1bd5('0x22')]();};}function saveUpdates(_0x253d79,_0x46c580){return function(_0x1f13e7){if(_0x1f13e7){return _0x1f13e7[_0x1bd5('0x23')](_0x253d79)['then'](function(_0x42c43d){return _0x42c43d;});}return null;};}function removeEntity(_0x50c663,_0x18fd18){return function(_0x1e534e){if(_0x1e534e){return _0x1e534e[_0x1bd5('0x24')]()['then'](function(){_0x50c663[_0x1bd5('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ed551,_0x30676d){return function(_0x3dba4f){if(!_0x3dba4f){_0x2ed551[_0x1bd5('0x17')](0x194);}return _0x3dba4f;};}function handleError(_0x47c84b,_0x202ed3){_0x202ed3=_0x202ed3||0x1f4;return function(_0x69bb17){logger[_0x1bd5('0x25')](_0x69bb17[_0x1bd5('0x26')]);if(_0x69bb17['name']){delete _0x69bb17[_0x1bd5('0x27')];}_0x47c84b[_0x1bd5('0x18')](_0x202ed3)[_0x1bd5('0x28')](_0x69bb17);};}exports[_0x1bd5('0x29')]=function(_0xe54b9f,_0xc73670){var _0x4e72b2={},_0x289097={},_0x472b22={'count':0x0,'rows':[]};var _0x8d53ba=_['map'](db[_0x1bd5('0x2a')][_0x1bd5('0x2b')],function(_0x345181){return{'name':_0x345181[_0x1bd5('0x2c')],'type':_0x345181[_0x1bd5('0x2d')][_0x1bd5('0x2e')]};});_0x289097['model']=_['map'](_0x8d53ba,_0x1bd5('0x27'));_0x289097[_0x1bd5('0x2f')]=_['keys'](_0xe54b9f[_0x1bd5('0x2f')]);_0x289097[_0x1bd5('0x30')]=_[_0x1bd5('0x31')](_0x289097[_0x1bd5('0x32')],_0x289097['query']);_0x4e72b2[_0x1bd5('0x33')]=_[_0x1bd5('0x31')](_0x289097[_0x1bd5('0x32')],qs[_0x1bd5('0x34')](_0xe54b9f[_0x1bd5('0x2f')][_0x1bd5('0x34')]));_0x4e72b2[_0x1bd5('0x33')]=_0x4e72b2[_0x1bd5('0x33')]['length']?_0x4e72b2[_0x1bd5('0x33')]:_0x289097[_0x1bd5('0x32')];if(!_0xe54b9f[_0x1bd5('0x2f')][_0x1bd5('0x35')](_0x1bd5('0x36'))){_0x4e72b2[_0x1bd5('0x1c')]=qs[_0x1bd5('0x1c')](_0xe54b9f['query'][_0x1bd5('0x1c')]);_0x4e72b2[_0x1bd5('0x1a')]=qs[_0x1bd5('0x1a')](_0xe54b9f[_0x1bd5('0x2f')][_0x1bd5('0x1a')]);}_0x4e72b2[_0x1bd5('0x37')]=qs[_0x1bd5('0x38')](_0xe54b9f['query']['sort']);_0x4e72b2[_0x1bd5('0x39')]=qs[_0x1bd5('0x30')](_[_0x1bd5('0x3a')](_0xe54b9f['query'],_0x289097[_0x1bd5('0x30')]),_0x8d53ba);if(_0xe54b9f['query'][_0x1bd5('0x3b')]){_0x4e72b2[_0x1bd5('0x39')]=_[_0x1bd5('0x3c')](_0x4e72b2[_0x1bd5('0x39')],{'$or':_[_0x1bd5('0x3d')](_0x8d53ba,function(_0x2470ec){if(_0x2470ec[_0x1bd5('0x2d')]!==_0x1bd5('0x3e')){var _0x4bbefc={};_0x4bbefc[_0x2470ec[_0x1bd5('0x27')]]={'$like':'%'+_0xe54b9f[_0x1bd5('0x2f')]['filter']+'%'};return _0x4bbefc;}})});}_0x4e72b2=_[_0x1bd5('0x3c')]({},_0x4e72b2,_0xe54b9f[_0x1bd5('0x3f')]);var _0x20b25c={'where':_0x4e72b2['where']};return db[_0x1bd5('0x2a')][_0x1bd5('0x1d')](_0x20b25c)[_0x1bd5('0x40')](function(_0x4074f1){_0x472b22['count']=_0x4074f1;if(_0xe54b9f[_0x1bd5('0x2f')][_0x1bd5('0x41')]){_0x4e72b2[_0x1bd5('0x42')]=[{'all':!![]}];}return db[_0x1bd5('0x2a')]['findAll'](_0x4e72b2);})['then'](function(_0x40eeff){_0x472b22[_0x1bd5('0x43')]=_0x40eeff;return _0x472b22;})[_0x1bd5('0x40')](respondWithFilteredResult(_0xc73670,_0x4e72b2))['catch'](handleError(_0xc73670,null));};exports[_0x1bd5('0x44')]=function(_0x3b1092,_0x574d95){var _0x1eacac={'raw':!![],'where':{'id':_0x3b1092[_0x1bd5('0x45')]['id']}},_0x5761b8={};_0x5761b8[_0x1bd5('0x32')]=_['keys'](db[_0x1bd5('0x2a')][_0x1bd5('0x2b')]);_0x5761b8[_0x1bd5('0x2f')]=_[_0x1bd5('0x46')](_0x3b1092[_0x1bd5('0x2f')]);_0x5761b8[_0x1bd5('0x30')]=_[_0x1bd5('0x31')](_0x5761b8[_0x1bd5('0x32')],_0x5761b8[_0x1bd5('0x2f')]);_0x1eacac[_0x1bd5('0x33')]=_[_0x1bd5('0x31')](_0x5761b8[_0x1bd5('0x32')],qs['fields'](_0x3b1092[_0x1bd5('0x2f')][_0x1bd5('0x34')]));_0x1eacac[_0x1bd5('0x33')]=_0x1eacac['attributes'][_0x1bd5('0x47')]?_0x1eacac[_0x1bd5('0x33')]:_0x5761b8['model'];if(_0x3b1092[_0x1bd5('0x2f')]['includeAll']){_0x1eacac[_0x1bd5('0x42')]=[{'all':!![]}];}_0x1eacac=_['merge']({},_0x1eacac,_0x3b1092[_0x1bd5('0x3f')]);return db[_0x1bd5('0x2a')]['find'](_0x1eacac)[_0x1bd5('0x40')](handleEntityNotFound(_0x574d95,null))['then'](respondWithResult(_0x574d95,null))[_0x1bd5('0x48')](handleError(_0x574d95,null));};exports[_0x1bd5('0x49')]=function(_0x1a29f3,_0xe71454){return db[_0x1bd5('0x2a')][_0x1bd5('0x49')]()[_0x1bd5('0x40')](respondWithResult(_0xe71454,null))[_0x1bd5('0x48')](handleError(_0xe71454,null));};exports['update']=function(_0x13985e,_0x227a68){if(_0x13985e[_0x1bd5('0x4a')][_0x1bd5('0x4b')]){delete _0x13985e[_0x1bd5('0x4a')][_0x1bd5('0x4b')];}return db['CmHopperFinal'][_0x1bd5('0x4c')]({'where':{'uniqueid':_0x13985e[_0x1bd5('0x45')]['id']}})[_0x1bd5('0x40')](handleEntityNotFound(_0x227a68,null))[_0x1bd5('0x40')](saveUpdates(_0x13985e[_0x1bd5('0x4a')],null))[_0x1bd5('0x40')](respondWithResult(_0x227a68,null))[_0x1bd5('0x48')](handleError(_0x227a68,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x587c46,_0x126221,_0x2d713b){return db[_0x1bd5('0x2a')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x587c46[_0x1bd5('0x45')]['id']},'attributes':[[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x50')))),'noSuchContacts'],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db[_0x1bd5('0x4d')]['literal'](_0x1bd5('0x51')))),'noAnswerContacts'],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x52')))),_0x1bd5('0x53')],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db['sequelize'][_0x1bd5('0x4f')]('`state`\x20=\x208,\x201,\x20null'))),_0x1bd5('0x54')],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x1bd5('0x4f')](_0x1bd5('0x55')))),_0x1bd5('0x56')],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x57')))),_0x1bd5('0x58')],[db['sequelize']['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x59')))),'reCallContacts'],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db['sequelize'][_0x1bd5('0x4f')](_0x1bd5('0x5a')))),_0x1bd5('0x5b')]]})[_0x1bd5('0x40')](handleEntityNotFound(_0x126221,null))['then'](respondWithResult(_0x126221,null))['catch'](handleError(_0x126221,null));};exports[_0x1bd5('0x5c')]=function(_0xec9fac,_0x1790af,_0x54a8c4){return db['CmHopperFinal'][_0x1bd5('0x5d')]({'raw':![],'where':{'CampaignId':_0xec9fac['params']['id']},'attributes':[[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db[_0x1bd5('0x4d')]['literal'](_0x1bd5('0x50')))),'noSuchContacts'],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db['sequelize']['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')]('`state`\x20=\x205,\x201,\x20null'))),'busyContacts'],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db['sequelize'][_0x1bd5('0x4f')](_0x1bd5('0x5e')))),'congestionContacts'],[db['sequelize']['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x55')))),'dropContacts'],[db[_0x1bd5('0x4d')]['fn']('COUNT',db[_0x1bd5('0x4d')]['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x57')))),'abandonedContacts'],[db['sequelize']['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x59')))),_0x1bd5('0x5f')],[db[_0x1bd5('0x4d')]['fn'](_0x1bd5('0x4e'),db[_0x1bd5('0x4d')]['fn']('IF',db[_0x1bd5('0x4d')][_0x1bd5('0x4f')](_0x1bd5('0x5a')))),_0x1bd5('0x5b')]]})[_0x1bd5('0x40')](handleEntityNotFound(_0x1790af,null))[_0x1bd5('0x40')](respondWithResult(_0x1790af,null))[_0x1bd5('0x48')](handleError(_0x1790af,null));};exports[_0x1bd5('0x60')]=function(_0x195176,_0x393a8f,_0x1ffbab){return db[_0x1bd5('0x61')][_0x1bd5('0x4c')]({'where':{'id':_0x195176[_0x1bd5('0x45')]['id']}})[_0x1bd5('0x40')](handleEntityNotFound(_0x393a8f,null))['then'](function(_0x3bd058){var _0x1d6223;if(_0x3bd058){_0x1d6223=squel[_0x1bd5('0x62')]()[_0x1bd5('0x63')](_0x1bd5('0x64'))[_0x1bd5('0x65')]([_0x1bd5('0x66'),'scheduledAt',_0x1bd5('0x67'),_0x1bd5('0x68'),_0x1bd5('0x69'),_0x1bd5('0x6a'),'updatedAt'],squel[_0x1bd5('0x6b')]()[_0x1bd5('0x6c')](_0x1bd5('0x6d'),_0x1bd5('0x66'))[_0x1bd5('0x6c')](_0x1bd5('0x6e'),_0x1bd5('0x6f'))['field'](_0x1bd5('0x70'),'ContactId')['field'](_0x1bd5('0x71'),'ListId')[_0x1bd5('0x6c')](_0x1bd5('0x72'),'VoiceQueueId')[_0x1bd5('0x6c')](_0x1bd5('0x6e'),_0x1bd5('0x6a'))[_0x1bd5('0x6c')](_0x1bd5('0x6e'),_0x1bd5('0x73'))['from'](_0x1bd5('0x74'))[_0x1bd5('0x39')](_0x1bd5('0x75'),_0x195176[_0x1bd5('0x45')]['id']['toString']())['where'](_0x1bd5('0x76'),_0x195176[_0x1bd5('0x4a')][_0x1bd5('0x77')][_0x1bd5('0x78')]())['where'](_0x1bd5('0x79'))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x1bd5('0x6b')]()['field'](_0x1bd5('0x66'))[_0x1bd5('0x7a')](_0x1bd5('0x64'))[_0x1bd5('0x39')](_0x1bd5('0x75'),_0x195176[_0x1bd5('0x45')]['id'][_0x1bd5('0x78')]()))[_0x1bd5('0x39')](_0x1bd5('0x7b'),squel['select']()[_0x1bd5('0x6c')]('calleridnum')['from']('cm_hopper_final')[_0x1bd5('0x39')]('VoiceQueueId\x20=\x20?',_0x195176[_0x1bd5('0x45')]['id'][_0x1bd5('0x78')]())[_0x1bd5('0x39')](_0x1bd5('0x7c')))[_0x1bd5('0x7d')](_0x1bd5('0x67')))[_0x1bd5('0x78')]();return db['sequelize'][_0x1bd5('0x2f')](_0x1d6223);}return[];})['then'](respondWithResult(_0x393a8f,null))[_0x1bd5('0x48')](handleError(_0x393a8f,null));};exports[_0x1bd5('0x7e')]=function(_0x7d097,_0x50f2ac,_0x5db61c){return db[_0x1bd5('0x7f')]['find']({'where':{'id':_0x7d097[_0x1bd5('0x45')]['id']}})['then'](handleEntityNotFound(_0x50f2ac,null))[_0x1bd5('0x40')](function(_0x16f996){var _0x248d66;if(_0x16f996){_0x248d66=squel[_0x1bd5('0x62')]()[_0x1bd5('0x63')](_0x1bd5('0x64'))[_0x1bd5('0x65')]([_0x1bd5('0x66'),_0x1bd5('0x6f'),_0x1bd5('0x67'),_0x1bd5('0x68'),_0x1bd5('0x80'),_0x1bd5('0x6a'),_0x1bd5('0x73')],squel['select']()[_0x1bd5('0x6c')](_0x1bd5('0x6d'),_0x1bd5('0x66'))['field'](_0x1bd5('0x6e'),_0x1bd5('0x6f'))['field'](_0x1bd5('0x70'),_0x1bd5('0x67'))[_0x1bd5('0x6c')]('ANY_VALUE(ListId)',_0x1bd5('0x68'))[_0x1bd5('0x6c')](_0x1bd5('0x81'),_0x1bd5('0x80'))['field'](_0x1bd5('0x6e'),_0x1bd5('0x6a'))[_0x1bd5('0x6c')]('NOW()',_0x1bd5('0x73'))[_0x1bd5('0x7a')]('cm_hopper_final')['where'](_0x1bd5('0x82'),_0x7d097[_0x1bd5('0x45')]['id']['toString']())['where'](_0x1bd5('0x76'),_0x7d097['body']['state'][_0x1bd5('0x78')]())['where'](_0x1bd5('0x79'))[_0x1bd5('0x39')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x1bd5('0x6b')]()[_0x1bd5('0x6c')](_0x1bd5('0x66'))['from'](_0x1bd5('0x64'))['where'](_0x1bd5('0x82'),_0x7d097[_0x1bd5('0x45')]['id'][_0x1bd5('0x78')]()))[_0x1bd5('0x39')](_0x1bd5('0x7b'),squel['select']()[_0x1bd5('0x6c')]('calleridnum')[_0x1bd5('0x7a')]('cm_hopper_final')['where'](_0x1bd5('0x82'),_0x7d097[_0x1bd5('0x45')]['id'][_0x1bd5('0x78')]())[_0x1bd5('0x39')]('state\x20=\x204'))[_0x1bd5('0x7d')](_0x1bd5('0x67')))[_0x1bd5('0x78')]();return db[_0x1bd5('0x4d')][_0x1bd5('0x2f')](_0x248d66);}return[];})[_0x1bd5('0x40')](respondWithResult(_0x50f2ac,null))[_0x1bd5('0x48')](handleError(_0x50f2ac,null));};exports[_0x1bd5('0x83')]=function(_0x22e1f4,_0x347d06,_0x3cf023){return db[_0x1bd5('0x84')][_0x1bd5('0x85')]({'where':{'VoiceQueueId':_0x22e1f4[_0x1bd5('0x4a')]['VoiceQueueId'],'CampaignId':_0x22e1f4[_0x1bd5('0x4a')][_0x1bd5('0x80')],'ContactId':_0x22e1f4[_0x1bd5('0x4a')][_0x1bd5('0x67')]}})[_0x1bd5('0x40')](handleEntityNotFound(_0x347d06,null))[_0x1bd5('0x40')](function(_0x28f567){if(_0x28f567){return _0x28f567;}return null;})[_0x1bd5('0x40')](respondWithResult(_0x347d06,null))[_0x1bd5('0x48')](handleError(_0x347d06,null));};
\ No newline at end of file
index 85b5ea1..ca26082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6293=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final','calleridnum'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6293,0x88));var _0x3629=function(_0x1dd175,_0x590a7b){_0x1dd175=_0x1dd175-0x0;var _0x53539a=_0x6293[_0x1dd175];return _0x53539a;};'use strict';var _=require(_0x3629('0x0'));var util=require(_0x3629('0x1'));var logger=require(_0x3629('0x2'))(_0x3629('0x3'));var moment=require(_0x3629('0x4'));var BPromise=require(_0x3629('0x5'));var rp=require(_0x3629('0x6'));var fs=require('fs');var path=require(_0x3629('0x7'));var rimraf=require(_0x3629('0x8'));var config=require('../../config/environment');var attributes=require(_0x3629('0x9'));module['exports']=function(_0x3ae944,_0x144dd6){return _0x3ae944[_0x3629('0xa')](_0x3629('0xb'),attributes,{'tableName':_0x3629('0xc'),'paranoid':![],'indexes':[{'name':_0x3629('0xd'),'fields':[_0x3629('0xd')]},{'name':_0x3629('0xe'),'fields':[_0x3629('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdbc1=['define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopperFinal.attributes'];(function(_0x33cd80,_0x5bcc90){var _0x5871a2=function(_0x387978){while(--_0x387978){_0x33cd80['push'](_0x33cd80['shift']());}};_0x5871a2(++_0x5bcc90);}(_0xdbc1,0x19b));var _0x1dbc=function(_0x245f64,_0x4ae342){_0x245f64=_0x245f64-0x0;var _0x3447e0=_0xdbc1[_0x245f64];return _0x3447e0;};'use strict';var _=require(_0x1dbc('0x0'));var util=require('util');var logger=require(_0x1dbc('0x1'))(_0x1dbc('0x2'));var moment=require(_0x1dbc('0x3'));var BPromise=require(_0x1dbc('0x4'));var rp=require(_0x1dbc('0x5'));var fs=require('fs');var path=require(_0x1dbc('0x6'));var rimraf=require(_0x1dbc('0x7'));var config=require('../../config/environment');var attributes=require(_0x1dbc('0x8'));module['exports']=function(_0x1c8ab8,_0x10a8fb){return _0x1c8ab8[_0x1dbc('0x9')](_0x1dbc('0xa'),attributes,{'tableName':_0x1dbc('0xb'),'paranoid':![],'indexes':[{'name':_0x1dbc('0xc'),'fields':[_0x1dbc('0xc')]},{'name':_0x1dbc('0xd'),'fields':[_0x1dbc('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index f32039c..01b126c 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(_0x47f985,_0x3381ca){var _0x4e1f63=function(_0x16ab6b){while(--_0x16ab6b){_0x47f985['push'](_0x47f985['shift']());}};_0x4e1f63(++_0x3381ca);}(_0xb10b,0x12a));var _0xbb10=function(_0x42c7ed,_0x25d73d){_0x42c7ed=_0x42c7ed-0x0;var _0x478d3b=_0xb10b[_0x42c7ed];return _0x478d3b;};'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 _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0xb01926,_0x48cdbb){var _0x1327fe=function(_0x1bbe90){while(--_0x1bbe90){_0xb01926['push'](_0xb01926['shift']());}};_0x1327fe(++_0x48cdbb);}(_0x7a54,0x106));var _0x47a5=function(_0x58ee80,_0x45d4d1){_0x58ee80=_0x58ee80-0x0;var _0x423bc1=_0x7a54[_0x58ee80];return _0x423bc1;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 86f3ec3..8601d47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0b1=['moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id'];(function(_0x2297fe,_0x524066){var _0x7b7f0c=function(_0x4a24ca){while(--_0x4a24ca){_0x2297fe['push'](_0x2297fe['shift']());}};_0x7b7f0c(++_0x524066);}(_0xa0b1,0x156));var _0x1a0b=function(_0x5f265e,_0x5f29c3){_0x5f265e=_0x5f265e-0x0;var _0x197592=_0xa0b1[_0x5f265e];return _0x197592;};'use strict';var multer=require(_0x1a0b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1a0b('0x1'));var express=require(_0x1a0b('0x2'));var router=express[_0x1a0b('0x3')]();var fs_extra=require(_0x1a0b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1a0b('0x5'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router[_0x1a0b('0x6')]('/',auth[_0x1a0b('0x7')](),controller[_0x1a0b('0x8')]);router[_0x1a0b('0x6')](_0x1a0b('0x9'),auth[_0x1a0b('0x7')](),controller[_0x1a0b('0xa')]);router[_0x1a0b('0x6')](_0x1a0b('0xb'),auth[_0x1a0b('0x7')](),controller['show']);router['get']('/voice/queue/countAttributes/:id',auth[_0x1a0b('0x7')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x1a0b('0x6')](_0x1a0b('0xc'),auth[_0x1a0b('0x7')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x1a0b('0xd')](_0x1a0b('0xe'),auth['isAuthenticated'](),controller[_0x1a0b('0xf')]);router[_0x1a0b('0xd')]('/voice/campaign/moveContacts/:id',auth[_0x1a0b('0x7')](),controller[_0x1a0b('0x10')]);router[_0x1a0b('0xd')](_0x1a0b('0x11'),auth[_0x1a0b('0x7')](),controller[_0x1a0b('0x12')]);router[_0x1a0b('0x13')](_0x1a0b('0xb'),auth[_0x1a0b('0x7')](),controller['update']);module[_0x1a0b('0x14')]=router;
\ No newline at end of file
+var _0xaa56=['describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','/:id','exports','util','path','express','Router','../../components/auth/service','./cmHopperFinal.controller','get','isAuthenticated','index'];(function(_0x3ac579,_0xdc79b8){var _0x5b3804=function(_0x3e315c){while(--_0x3e315c){_0x3ac579['push'](_0x3ac579['shift']());}};_0x5b3804(++_0xdc79b8);}(_0xaa56,0x1ac));var _0x6aa5=function(_0x22f495,_0x321ad0){_0x22f495=_0x22f495-0x0;var _0x34b412=_0xaa56[_0x22f495];return _0x34b412;};'use strict';var multer=require('multer');var util=require(_0x6aa5('0x0'));var path=require(_0x6aa5('0x1'));var timeout=require('connect-timeout');var express=require(_0x6aa5('0x2'));var router=express[_0x6aa5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6aa5('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6aa5('0x5'));router[_0x6aa5('0x6')]('/',auth[_0x6aa5('0x7')](),controller[_0x6aa5('0x8')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x6aa5('0x9')]);router[_0x6aa5('0x6')]('/:id',auth[_0x6aa5('0x7')](),controller[_0x6aa5('0xa')]);router[_0x6aa5('0x6')](_0x6aa5('0xb'),auth[_0x6aa5('0x7')](),controller[_0x6aa5('0xc')]);router[_0x6aa5('0x6')](_0x6aa5('0xd'),auth[_0x6aa5('0x7')](),controller[_0x6aa5('0xe')]);router[_0x6aa5('0xf')]('/voice/queue/moveContacts/:id',auth[_0x6aa5('0x7')](),controller[_0x6aa5('0x10')]);router[_0x6aa5('0xf')]('/voice/campaign/moveContacts/:id',auth[_0x6aa5('0x7')](),controller[_0x6aa5('0x11')]);router[_0x6aa5('0xf')](_0x6aa5('0x12'),auth[_0x6aa5('0x7')](),controller[_0x6aa5('0x13')]);router[_0x6aa5('0x14')](_0x6aa5('0x15'),auth[_0x6aa5('0x7')](),controller['update']);module[_0x6aa5('0x16')]=router;
\ No newline at end of file
index c731fb4..5aa4f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac26=['exports','STRING','INTEGER','DATE','BOOLEAN','sequelize'];(function(_0x325501,_0x5242f6){var _0x2c1626=function(_0x4270b2){while(--_0x4270b2){_0x325501['push'](_0x325501['shift']());}};_0x2c1626(++_0x5242f6);}(_0xac26,0xbf));var _0x6ac2=function(_0x4877e2,_0x415968){_0x4877e2=_0x4877e2-0x0;var _0x2d4450=_0xac26[_0x4877e2];return _0x2d4450;};'use strict';var Sequelize=require(_0x6ac2('0x0'));module[_0x6ac2('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x6ac2('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x6ac2('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x6ac2('0x2')]},'calleridname':{'type':Sequelize[_0x6ac2('0x2')]},'starttime':{'type':Sequelize[_0x6ac2('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x6ac2('0x4')]},'endtime':{'type':Sequelize[_0x6ac2('0x4')]},'ringtime':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x6ac2('0x2')]},'campaign':{'type':Sequelize[_0x6ac2('0x2')]},'campaigntype':{'type':Sequelize[_0x6ac2('0x2')]},'membername':{'type':Sequelize[_0x6ac2('0x2')]},'reason':{'type':Sequelize[_0x6ac2('0x2')]},'amd':{'type':Sequelize[_0x6ac2('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x6ac2('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6ac2('0x4')]},'recallme':{'type':Sequelize[_0x6ac2('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x6ac2('0x4')]},'edited':{'type':Sequelize[_0x6ac2('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6ac2('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6ac2('0x2')]}};
\ No newline at end of file
+var _0x2a8b=['STRING','BOOLEAN','sequelize','exports','INTEGER','DATE'];(function(_0x8ffc12,_0x4a4844){var _0x5c91e9=function(_0x43f274){while(--_0x43f274){_0x8ffc12['push'](_0x8ffc12['shift']());}};_0x5c91e9(++_0x4a4844);}(_0x2a8b,0x10a));var _0xb2a8=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x2a8b[_0x2763f2];return _0x3ef471;};'use strict';var Sequelize=require(_0xb2a8('0x0'));module[_0xb2a8('0x1')]={'state':{'type':Sequelize[_0xb2a8('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xb2a8('0x3')]},'countbusyretry':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xb2a8('0x4')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb2a8('0x4')]},'calleridname':{'type':Sequelize[_0xb2a8('0x4')]},'starttime':{'type':Sequelize[_0xb2a8('0x3')]},'responsetime':{'type':Sequelize[_0xb2a8('0x3')]},'answertime':{'type':Sequelize[_0xb2a8('0x3')]},'droptime':{'type':Sequelize[_0xb2a8('0x3')]},'endtime':{'type':Sequelize[_0xb2a8('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xb2a8('0x4')]},'campaign':{'type':Sequelize[_0xb2a8('0x4')]},'campaigntype':{'type':Sequelize[_0xb2a8('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xb2a8('0x4')]},'amd':{'type':Sequelize[_0xb2a8('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0xb2a8('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xb2a8('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xb2a8('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xb2a8('0x3')]},'edited':{'type':Sequelize[_0xb2a8('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb2a8('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xb2a8('0x4')]}};
\ No newline at end of file
index 1a033eb..44b78b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62d=['create','body','describe','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','then','destroy','sendStatus','error','stack','name','index','map','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','merge','CmHopperHistory','findAll','rows','catch','params','rawAttributes','keys','include','options','find'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xb62d,0x166));var _0xdb62=function(_0x4141d7,_0x21dd0d){_0x4141d7=_0x4141d7-0x0;var _0xe5674=_0xb62d[_0x4141d7];return _0xe5674;};'use strict';var emlformat=require(_0xdb62('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdb62('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdb62('0x2'));var BPromise=require(_0xdb62('0x3'));var Mustache=require(_0xdb62('0x4'));var util=require(_0xdb62('0x5'));var path=require(_0xdb62('0x6'));var sox=require(_0xdb62('0x7'));var csv=require(_0xdb62('0x8'));var ejs=require(_0xdb62('0x9'));var fs=require('fs');var fs_extra=require(_0xdb62('0xa'));var _=require(_0xdb62('0xb'));var squel=require(_0xdb62('0xc'));var crypto=require(_0xdb62('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xdb62('0xe'));var toCsv=require(_0xdb62('0x8'));var querystring=require(_0xdb62('0xf'));var Papa=require(_0xdb62('0x10'));var Redis=require(_0xdb62('0x11'));var authService=require(_0xdb62('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb62('0x13'));var logger=require(_0xdb62('0x14'))('api');var utils=require(_0xdb62('0x15'));var config=require(_0xdb62('0x16'));var licenseUtil=require(_0xdb62('0x17'));var db=require(_0xdb62('0x18'))['db'];function respondWithStatusCode(_0x4017d9,_0x44e6f4){_0x44e6f4=_0x44e6f4||0xcc;return function(_0x5ab1d5){if(_0x5ab1d5){return _0x4017d9['sendStatus'](_0x44e6f4);}return _0x4017d9[_0xdb62('0x19')](_0x44e6f4)[_0xdb62('0x1a')]();};}function respondWithResult(_0x54b52d,_0x266980){_0x266980=_0x266980||0xc8;return function(_0x197c1b){if(_0x197c1b){return _0x54b52d[_0xdb62('0x19')](_0x266980)[_0xdb62('0x1b')](_0x197c1b);}};}function respondWithFilteredResult(_0x31e8db,_0x161e33){return function(_0x44fe29){if(_0x44fe29){var _0x330151=typeof _0x161e33[_0xdb62('0x1c')]==='undefined'&&typeof _0x161e33[_0xdb62('0x1d')]===_0xdb62('0x1e');var _0x39d228=_0x44fe29[_0xdb62('0x1f')];var _0x483bea=_0x330151?0x0:_0x161e33['offset'];var _0x1028cd=_0x330151?_0x44fe29[_0xdb62('0x1f')]:_0x161e33[_0xdb62('0x1c')]+_0x161e33[_0xdb62('0x1d')];var _0x45d4a8;if(_0x1028cd>=_0x39d228){_0x1028cd=_0x39d228;_0x45d4a8=0xc8;}else{_0x45d4a8=0xce;}_0x31e8db[_0xdb62('0x19')](_0x45d4a8);return _0x31e8db[_0xdb62('0x20')](_0xdb62('0x21'),_0x483bea+'-'+_0x1028cd+'/'+_0x39d228)[_0xdb62('0x1b')](_0x44fe29);}return null;};}function patchUpdates(_0xdf5605){return function(_0x40affb){try{jsonpatch['apply'](_0x40affb,_0xdf5605,!![]);}catch(_0x4f5237){return BPromise['reject'](_0x4f5237);}return _0x40affb['save']();};}function saveUpdates(_0x502846,_0x5d4f9a){return function(_0x30a16e){if(_0x30a16e){return _0x30a16e['update'](_0x502846)[_0xdb62('0x22')](function(_0x8d5b6){return _0x8d5b6;});}return null;};}function removeEntity(_0x403609,_0x1dfa4b){return function(_0x2d950c){if(_0x2d950c){return _0x2d950c[_0xdb62('0x23')]()[_0xdb62('0x22')](function(){_0x403609[_0xdb62('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fcee6,_0x3896d1){return function(_0x4a542c){if(!_0x4a542c){_0x4fcee6[_0xdb62('0x24')](0x194);}return _0x4a542c;};}function handleError(_0x3cf87b,_0x185523){_0x185523=_0x185523||0x1f4;return function(_0x193dc2){logger[_0xdb62('0x25')](_0x193dc2[_0xdb62('0x26')]);if(_0x193dc2[_0xdb62('0x27')]){delete _0x193dc2[_0xdb62('0x27')];}_0x3cf87b[_0xdb62('0x19')](_0x185523)['send'](_0x193dc2);};}exports[_0xdb62('0x28')]=function(_0x1fd280,_0x315f07){var _0x147e68={},_0xbcc9bd={},_0x9d39e1={'count':0x0,'rows':[]};var _0x403f30=_[_0xdb62('0x29')](db['CmHopperHistory']['rawAttributes'],function(_0x8e6fae){return{'name':_0x8e6fae[_0xdb62('0x2a')],'type':_0x8e6fae['type']['key']};});_0xbcc9bd[_0xdb62('0x2b')]=_['map'](_0x403f30,_0xdb62('0x27'));_0xbcc9bd[_0xdb62('0x2c')]=_['keys'](_0x1fd280[_0xdb62('0x2c')]);_0xbcc9bd[_0xdb62('0x2d')]=_[_0xdb62('0x2e')](_0xbcc9bd['model'],_0xbcc9bd[_0xdb62('0x2c')]);_0x147e68[_0xdb62('0x2f')]=_[_0xdb62('0x2e')](_0xbcc9bd[_0xdb62('0x2b')],qs[_0xdb62('0x30')](_0x1fd280[_0xdb62('0x2c')][_0xdb62('0x30')]));_0x147e68['attributes']=_0x147e68[_0xdb62('0x2f')][_0xdb62('0x31')]?_0x147e68['attributes']:_0xbcc9bd['model'];if(!_0x1fd280['query'][_0xdb62('0x32')](_0xdb62('0x33'))){_0x147e68['limit']=qs['limit'](_0x1fd280[_0xdb62('0x2c')][_0xdb62('0x1d')]);_0x147e68[_0xdb62('0x1c')]=qs[_0xdb62('0x1c')](_0x1fd280[_0xdb62('0x2c')]['offset']);}_0x147e68[_0xdb62('0x34')]=qs['sort'](_0x1fd280[_0xdb62('0x2c')][_0xdb62('0x35')]);_0x147e68[_0xdb62('0x36')]=qs[_0xdb62('0x2d')](_['pick'](_0x1fd280[_0xdb62('0x2c')],_0xbcc9bd[_0xdb62('0x2d')]),_0x403f30);if(_0x1fd280['query'][_0xdb62('0x37')]){_0x147e68['where']=_['merge'](_0x147e68['where'],{'$or':_[_0xdb62('0x29')](_0x403f30,function(_0x11cbe8){if(_0x11cbe8[_0xdb62('0x38')]!=='VIRTUAL'){var _0x3c8ba9={};_0x3c8ba9[_0x11cbe8[_0xdb62('0x27')]]={'$like':'%'+_0x1fd280[_0xdb62('0x2c')][_0xdb62('0x37')]+'%'};return _0x3c8ba9;}})});}_0x147e68=_[_0xdb62('0x39')]({},_0x147e68,_0x1fd280['options']);var _0x2b6225={'where':_0x147e68[_0xdb62('0x36')]};return db[_0xdb62('0x3a')][_0xdb62('0x1f')](_0x2b6225)[_0xdb62('0x22')](function(_0x46bbcf){_0x9d39e1['count']=_0x46bbcf;if(_0x1fd280[_0xdb62('0x2c')]['includeAll']){_0x147e68['include']=[{'all':!![]}];}return db[_0xdb62('0x3a')][_0xdb62('0x3b')](_0x147e68);})[_0xdb62('0x22')](function(_0x549661){_0x9d39e1[_0xdb62('0x3c')]=_0x549661;return _0x9d39e1;})['then'](respondWithFilteredResult(_0x315f07,_0x147e68))[_0xdb62('0x3d')](handleError(_0x315f07,null));};exports['show']=function(_0x219d49,_0x10777d){var _0x2b204a={'raw':!![],'where':{'id':_0x219d49[_0xdb62('0x3e')]['id']}},_0x506230={};_0x506230[_0xdb62('0x2b')]=_['keys'](db[_0xdb62('0x3a')][_0xdb62('0x3f')]);_0x506230[_0xdb62('0x2c')]=_[_0xdb62('0x40')](_0x219d49[_0xdb62('0x2c')]);_0x506230['filters']=_[_0xdb62('0x2e')](_0x506230['model'],_0x506230['query']);_0x2b204a[_0xdb62('0x2f')]=_['intersection'](_0x506230[_0xdb62('0x2b')],qs[_0xdb62('0x30')](_0x219d49[_0xdb62('0x2c')]['fields']));_0x2b204a['attributes']=_0x2b204a[_0xdb62('0x2f')][_0xdb62('0x31')]?_0x2b204a[_0xdb62('0x2f')]:_0x506230[_0xdb62('0x2b')];if(_0x219d49['query']['includeAll']){_0x2b204a[_0xdb62('0x41')]=[{'all':!![]}];}_0x2b204a=_['merge']({},_0x2b204a,_0x219d49[_0xdb62('0x42')]);return db[_0xdb62('0x3a')][_0xdb62('0x43')](_0x2b204a)[_0xdb62('0x22')](handleEntityNotFound(_0x10777d,null))['then'](respondWithResult(_0x10777d,null))[_0xdb62('0x3d')](handleError(_0x10777d,null));};exports[_0xdb62('0x44')]=function(_0x5b3222,_0x50efcb){return db[_0xdb62('0x3a')][_0xdb62('0x44')](_0x5b3222[_0xdb62('0x45')],{})[_0xdb62('0x22')](respondWithResult(_0x50efcb,0xc9))[_0xdb62('0x3d')](handleError(_0x50efcb,null));};exports[_0xdb62('0x46')]=function(_0x10f416,_0x31ad8c){return db[_0xdb62('0x3a')][_0xdb62('0x46')]()[_0xdb62('0x22')](respondWithResult(_0x31ad8c,null))[_0xdb62('0x3d')](handleError(_0x31ad8c,null));};exports['update']=function(_0x16e67f,_0x1a6e9e){if(_0x16e67f['body']['uniqueid']){delete _0x16e67f[_0xdb62('0x45')]['uniqueid'];}return db[_0xdb62('0x3a')]['find']({'where':{'uniqueid':_0x16e67f[_0xdb62('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1a6e9e,null))[_0xdb62('0x22')](saveUpdates(_0x16e67f[_0xdb62('0x45')],null))[_0xdb62('0x22')](respondWithResult(_0x1a6e9e,null))[_0xdb62('0x3d')](handleError(_0x1a6e9e,null));};
\ No newline at end of file
+var _0x371c=['apply','save','then','error','stack','name','map','CmHopperHistory','rawAttributes','fieldName','type','keys','filters','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','create','catch','describe','update','body','uniqueid','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range'];(function(_0x1c241e,_0x136b27){var _0x28f160=function(_0x5b6109){while(--_0x5b6109){_0x1c241e['push'](_0x1c241e['shift']());}};_0x28f160(++_0x136b27);}(_0x371c,0x19e));var _0xc371=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x371c[_0x3e5086];return _0xfeb102;};'use strict';var emlformat=require(_0xc371('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc371('0x1'));var jsonpatch=require(_0xc371('0x2'));var rp=require('request-promise');var moment=require(_0xc371('0x3'));var BPromise=require(_0xc371('0x4'));var Mustache=require(_0xc371('0x5'));var util=require(_0xc371('0x6'));var path=require(_0xc371('0x7'));var sox=require(_0xc371('0x8'));var csv=require(_0xc371('0x9'));var ejs=require(_0xc371('0xa'));var fs=require('fs');var fs_extra=require(_0xc371('0xb'));var _=require(_0xc371('0xc'));var squel=require(_0xc371('0xd'));var crypto=require(_0xc371('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc371('0xf'));var toCsv=require(_0xc371('0x9'));var querystring=require(_0xc371('0x10'));var Papa=require(_0xc371('0x11'));var Redis=require(_0xc371('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xc371('0x13'));var as=require(_0xc371('0x14'));var hardwareService=require(_0xc371('0x15'));var logger=require(_0xc371('0x16'))(_0xc371('0x17'));var utils=require(_0xc371('0x18'));var config=require(_0xc371('0x19'));var licenseUtil=require(_0xc371('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3bbbb8,_0x383096){_0x383096=_0x383096||0xcc;return function(_0x51f0b0){if(_0x51f0b0){return _0x3bbbb8[_0xc371('0x1b')](_0x383096);}return _0x3bbbb8['status'](_0x383096)[_0xc371('0x1c')]();};}function respondWithResult(_0x29ed7d,_0x4e39bc){_0x4e39bc=_0x4e39bc||0xc8;return function(_0x4bd11e){if(_0x4bd11e){return _0x29ed7d[_0xc371('0x1d')](_0x4e39bc)[_0xc371('0x1e')](_0x4bd11e);}};}function respondWithFilteredResult(_0x384794,_0x3a3f07){return function(_0x4706df){if(_0x4706df){var _0x53ab6b=typeof _0x3a3f07[_0xc371('0x1f')]===_0xc371('0x20')&&typeof _0x3a3f07[_0xc371('0x21')]===_0xc371('0x20');var _0x5bdf0c=_0x4706df[_0xc371('0x22')];var _0x2d09bb=_0x53ab6b?0x0:_0x3a3f07['offset'];var _0x236069=_0x53ab6b?_0x4706df[_0xc371('0x22')]:_0x3a3f07[_0xc371('0x1f')]+_0x3a3f07[_0xc371('0x21')];var _0x49e269;if(_0x236069>=_0x5bdf0c){_0x236069=_0x5bdf0c;_0x49e269=0xc8;}else{_0x49e269=0xce;}_0x384794['status'](_0x49e269);return _0x384794['set'](_0xc371('0x23'),_0x2d09bb+'-'+_0x236069+'/'+_0x5bdf0c)[_0xc371('0x1e')](_0x4706df);}return null;};}function patchUpdates(_0x257680){return function(_0x59603a){try{jsonpatch[_0xc371('0x24')](_0x59603a,_0x257680,!![]);}catch(_0x5455ba){return BPromise['reject'](_0x5455ba);}return _0x59603a[_0xc371('0x25')]();};}function saveUpdates(_0x3eef9a,_0x3a0552){return function(_0x4281e9){if(_0x4281e9){return _0x4281e9['update'](_0x3eef9a)[_0xc371('0x26')](function(_0x1669e6){return _0x1669e6;});}return null;};}function removeEntity(_0x52c985,_0x31f6bb){return function(_0x107abd){if(_0x107abd){return _0x107abd['destroy']()[_0xc371('0x26')](function(){_0x52c985['status'](0xcc)[_0xc371('0x1c')]();});}};}function handleEntityNotFound(_0x472c42,_0x3a673e){return function(_0x1a460e){if(!_0x1a460e){_0x472c42[_0xc371('0x1b')](0x194);}return _0x1a460e;};}function handleError(_0x1c1a7a,_0x5dfa5d){_0x5dfa5d=_0x5dfa5d||0x1f4;return function(_0x12a9e0){logger[_0xc371('0x27')](_0x12a9e0[_0xc371('0x28')]);if(_0x12a9e0[_0xc371('0x29')]){delete _0x12a9e0['name'];}_0x1c1a7a['status'](_0x5dfa5d)['send'](_0x12a9e0);};}exports['index']=function(_0x51fdeb,_0x12fe05){var _0x15b6b4={},_0x580c2d={},_0x522e8a={'count':0x0,'rows':[]};var _0x320c05=_[_0xc371('0x2a')](db[_0xc371('0x2b')][_0xc371('0x2c')],function(_0x2b1761){return{'name':_0x2b1761[_0xc371('0x2d')],'type':_0x2b1761[_0xc371('0x2e')]['key']};});_0x580c2d['model']=_[_0xc371('0x2a')](_0x320c05,_0xc371('0x29'));_0x580c2d['query']=_[_0xc371('0x2f')](_0x51fdeb['query']);_0x580c2d[_0xc371('0x30')]=_['intersection'](_0x580c2d[_0xc371('0x31')],_0x580c2d[_0xc371('0x32')]);_0x15b6b4['attributes']=_[_0xc371('0x33')](_0x580c2d[_0xc371('0x31')],qs['fields'](_0x51fdeb[_0xc371('0x32')][_0xc371('0x34')]));_0x15b6b4['attributes']=_0x15b6b4[_0xc371('0x35')][_0xc371('0x36')]?_0x15b6b4[_0xc371('0x35')]:_0x580c2d[_0xc371('0x31')];if(!_0x51fdeb[_0xc371('0x32')][_0xc371('0x37')](_0xc371('0x38'))){_0x15b6b4[_0xc371('0x21')]=qs[_0xc371('0x21')](_0x51fdeb['query'][_0xc371('0x21')]);_0x15b6b4[_0xc371('0x1f')]=qs[_0xc371('0x1f')](_0x51fdeb[_0xc371('0x32')]['offset']);}_0x15b6b4[_0xc371('0x39')]=qs[_0xc371('0x3a')](_0x51fdeb[_0xc371('0x32')][_0xc371('0x3a')]);_0x15b6b4[_0xc371('0x3b')]=qs['filters'](_['pick'](_0x51fdeb[_0xc371('0x32')],_0x580c2d[_0xc371('0x30')]),_0x320c05);if(_0x51fdeb[_0xc371('0x32')]['filter']){_0x15b6b4['where']=_[_0xc371('0x3c')](_0x15b6b4[_0xc371('0x3b')],{'$or':_[_0xc371('0x2a')](_0x320c05,function(_0xc943d9){if(_0xc943d9[_0xc371('0x2e')]!==_0xc371('0x3d')){var _0x242db5={};_0x242db5[_0xc943d9[_0xc371('0x29')]]={'$like':'%'+_0x51fdeb[_0xc371('0x32')]['filter']+'%'};return _0x242db5;}})});}_0x15b6b4=_['merge']({},_0x15b6b4,_0x51fdeb[_0xc371('0x3e')]);var _0x40dde8={'where':_0x15b6b4[_0xc371('0x3b')]};return db['CmHopperHistory']['count'](_0x40dde8)[_0xc371('0x26')](function(_0xf644a4){_0x522e8a[_0xc371('0x22')]=_0xf644a4;if(_0x51fdeb[_0xc371('0x32')][_0xc371('0x3f')]){_0x15b6b4[_0xc371('0x40')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x15b6b4);})[_0xc371('0x26')](function(_0x52dd1b){_0x522e8a[_0xc371('0x41')]=_0x52dd1b;return _0x522e8a;})['then'](respondWithFilteredResult(_0x12fe05,_0x15b6b4))['catch'](handleError(_0x12fe05,null));};exports[_0xc371('0x42')]=function(_0x19ee13,_0x23c53a){var _0x57b1ef={'raw':!![],'where':{'id':_0x19ee13[_0xc371('0x43')]['id']}},_0x44275e={};_0x44275e[_0xc371('0x31')]=_[_0xc371('0x2f')](db[_0xc371('0x2b')][_0xc371('0x2c')]);_0x44275e[_0xc371('0x32')]=_['keys'](_0x19ee13[_0xc371('0x32')]);_0x44275e[_0xc371('0x30')]=_['intersection'](_0x44275e[_0xc371('0x31')],_0x44275e[_0xc371('0x32')]);_0x57b1ef[_0xc371('0x35')]=_[_0xc371('0x33')](_0x44275e[_0xc371('0x31')],qs[_0xc371('0x34')](_0x19ee13[_0xc371('0x32')][_0xc371('0x34')]));_0x57b1ef[_0xc371('0x35')]=_0x57b1ef[_0xc371('0x35')][_0xc371('0x36')]?_0x57b1ef[_0xc371('0x35')]:_0x44275e['model'];if(_0x19ee13[_0xc371('0x32')][_0xc371('0x3f')]){_0x57b1ef[_0xc371('0x40')]=[{'all':!![]}];}_0x57b1ef=_[_0xc371('0x3c')]({},_0x57b1ef,_0x19ee13[_0xc371('0x3e')]);return db[_0xc371('0x2b')][_0xc371('0x44')](_0x57b1ef)[_0xc371('0x26')](handleEntityNotFound(_0x23c53a,null))[_0xc371('0x26')](respondWithResult(_0x23c53a,null))['catch'](handleError(_0x23c53a,null));};exports[_0xc371('0x45')]=function(_0x41ef0e,_0x4d05d1){return db[_0xc371('0x2b')]['create'](_0x41ef0e['body'],{})[_0xc371('0x26')](respondWithResult(_0x4d05d1,0xc9))[_0xc371('0x46')](handleError(_0x4d05d1,null));};exports[_0xc371('0x47')]=function(_0x1248e6,_0x36712d){return db[_0xc371('0x2b')]['describe']()[_0xc371('0x26')](respondWithResult(_0x36712d,null))[_0xc371('0x46')](handleError(_0x36712d,null));};exports[_0xc371('0x48')]=function(_0x1a4367,_0xd484ac){if(_0x1a4367[_0xc371('0x49')][_0xc371('0x4a')]){delete _0x1a4367[_0xc371('0x49')][_0xc371('0x4a')];}return db[_0xc371('0x2b')][_0xc371('0x44')]({'where':{'uniqueid':_0x1a4367[_0xc371('0x43')]['id']}})[_0xc371('0x26')](handleEntityNotFound(_0xd484ac,null))[_0xc371('0x26')](saveUpdates(_0x1a4367[_0xc371('0x49')],null))[_0xc371('0x26')](respondWithResult(_0xd484ac,null))['catch'](handleError(_0xd484ac,null));};
\ No newline at end of file
index dad06db..19939fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b74=['define','CmHopperHistory','endtime','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports'];(function(_0x235acb,_0x1bd583){var _0x42a20a=function(_0x8f662c){while(--_0x8f662c){_0x235acb['push'](_0x235acb['shift']());}};_0x42a20a(++_0x1bd583);}(_0x4b74,0x103));var _0x44b7=function(_0x212288,_0x3ae453){_0x212288=_0x212288-0x0;var _0x4edd0f=_0x4b74[_0x212288];return _0x4edd0f;};'use strict';var _=require(_0x44b7('0x0'));var util=require(_0x44b7('0x1'));var logger=require(_0x44b7('0x2'))('api');var moment=require(_0x44b7('0x3'));var BPromise=require(_0x44b7('0x4'));var rp=require(_0x44b7('0x5'));var fs=require('fs');var path=require(_0x44b7('0x6'));var rimraf=require(_0x44b7('0x7'));var config=require(_0x44b7('0x8'));var attributes=require(_0x44b7('0x9'));module[_0x44b7('0xa')]=function(_0x5ef96c,_0xdfcf5){return _0x5ef96c[_0x44b7('0xb')](_0x44b7('0xc'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x44b7('0xd'),'fields':[_0x44b7('0xd')]},{'name':_0x44b7('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf970=['moment','bluebird','request-promise','path','rimraf','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','lodash','../../config/logger','api'];(function(_0x20008a,_0x362490){var _0x5d0f1c=function(_0x122ecf){while(--_0x122ecf){_0x20008a['push'](_0x20008a['shift']());}};_0x5d0f1c(++_0x362490);}(_0xf970,0x1d9));var _0x0f97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf970[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0f97('0x0'));var util=require('util');var logger=require(_0x0f97('0x1'))(_0x0f97('0x2'));var moment=require(_0x0f97('0x3'));var BPromise=require(_0x0f97('0x4'));var rp=require(_0x0f97('0x5'));var fs=require('fs');var path=require(_0x0f97('0x6'));var rimraf=require(_0x0f97('0x7'));var config=require('../../config/environment');var attributes=require(_0x0f97('0x8'));module[_0x0f97('0x9')]=function(_0x290200,_0xac501){return _0x290200[_0x0f97('0xa')](_0x0f97('0xb'),attributes,{'tableName':_0x0f97('0xc'),'paranoid':![],'indexes':[{'name':_0x0f97('0xd'),'fields':[_0x0f97('0xd')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1b15526..1e471a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c48=['CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','debug','AvgHandleTime','findAll','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','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','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x4c48,0x1e4));var _0x84c4=function(_0x37a7c6,_0x3a84b6){_0x37a7c6=_0x37a7c6-0x0;var _0x539905=_0x4c48[_0x37a7c6];return _0x539905;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x84c4('0x0'));var BPromise=require(_0x84c4('0x1'));var rs=require(_0x84c4('0x2'));var fs=require('fs');var Redis=require(_0x84c4('0x3'));var db=require(_0x84c4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x84c4('0x5'));var config=require(_0x84c4('0x6'));var jayson=require(_0x84c4('0x7'));var client=jayson[_0x84c4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c8233,_0x36d5e1,_0x556671){return new BPromise(function(_0xe000ec,_0x4a0604){return client['request'](_0x2c8233,_0x556671)[_0x84c4('0x9')](function(_0x3882ac){logger[_0x84c4('0xa')](_0x84c4('0xb'),_0x36d5e1,_0x84c4('0xc'));logger['debug'](_0x84c4('0xd'),_0x36d5e1,_0x84c4('0xc'),JSON[_0x84c4('0xe')](_0x3882ac));if(_0x3882ac['error']){if(_0x3882ac[_0x84c4('0xf')][_0x84c4('0x10')]===0x1f4){logger[_0x84c4('0xf')](_0x84c4('0xb'),_0x36d5e1,_0x3882ac['error'][_0x84c4('0x11')]);return _0x4a0604(_0x3882ac['error'][_0x84c4('0x11')]);}logger[_0x84c4('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x36d5e1,_0x3882ac['error'][_0x84c4('0x11')]);return _0xe000ec(_0x3882ac['error'][_0x84c4('0x11')]);}else{logger[_0x84c4('0xa')]('CmHopperHistory,\x20%s,\x20%s',_0x36d5e1,_0x84c4('0xc'));_0xe000ec(_0x3882ac[_0x84c4('0x12')][_0x84c4('0x11')]);}})[_0x84c4('0x13')](function(_0x2e388a){logger[_0x84c4('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x36d5e1,_0x2e388a);_0x4a0604(_0x2e388a);});});}exports[_0x84c4('0x14')]=function(_0x3b70a7){var _0x5f17aa=this;return new Promise(function(_0x5b778f,_0x36120e){return db[_0x84c4('0x15')][_0x84c4('0x16')](_0x3b70a7[_0x84c4('0x17')],{'raw':_0x3b70a7[_0x84c4('0x18')]?_0x3b70a7[_0x84c4('0x18')][_0x84c4('0x19')]===undefined?!![]:![]:!![]})[_0x84c4('0x9')](function(_0x26f76a){logger[_0x84c4('0xa')](_0x84c4('0x14'),_0x3b70a7);logger[_0x84c4('0x1a')](_0x84c4('0x14'),_0x3b70a7,JSON[_0x84c4('0xe')](_0x26f76a));_0x5b778f(_0x26f76a);})['catch'](function(_0x28158d){logger[_0x84c4('0xf')](_0x84c4('0x14'),_0x28158d[_0x84c4('0x11')],_0x3b70a7);_0x36120e(_0x5f17aa['error'](0x1f4,_0x28158d[_0x84c4('0x11')]));});});};exports[_0x84c4('0x1b')]=function(_0x3f18a7){var _0x5a8153=this;return new Promise(function(_0x16cf4b,_0x3cb8c6){return db[_0x84c4('0x15')][_0x84c4('0x1c')]({'raw':_0x3f18a7[_0x84c4('0x18')]?_0x3f18a7[_0x84c4('0x18')][_0x84c4('0x19')]===undefined?!![]:![]:!![],'where':_0x3f18a7[_0x84c4('0x18')]?_0x3f18a7['options'][_0x84c4('0x1d')]||null:null,'attributes':[[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')][_0x84c4('0x20')]('id')),_0x84c4('0x21')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x84c4('0x22')))),_0x84c4('0x23')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x25')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x84c4('0x1e')]['fn']('COUNT',db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x26')))),_0x84c4('0x27')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x28'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x29')))),'predictiveIntervalAvgHoldtime'],[db['sequelize']['fn'](_0x84c4('0x28'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x2a')))),'predictiveIntervalAvgTalktime']]})[_0x84c4('0x9')](function(_0x723625){logger['info'](_0x84c4('0x1b'),_0x3f18a7);logger[_0x84c4('0x1a')]('AvgHandleTime',_0x3f18a7,JSON[_0x84c4('0xe')](_0x723625));_0x16cf4b(_0x723625);})[_0x84c4('0x13')](function(_0x4cd5d2){logger[_0x84c4('0xf')](_0x84c4('0x1b'),_0x4cd5d2[_0x84c4('0x11')],_0x3f18a7);_0x3cb8c6(_0x5a8153[_0x84c4('0xf')](0x1f4,_0x4cd5d2['message']));});});};exports[_0x84c4('0x2b')]=function(_0x17e821){var _0x5140b0=this;return new Promise(function(_0x5cbfef,_0x5d8e3e){return db['CmHopperHistory'][_0x84c4('0x1c')]({'raw':_0x17e821['options']?_0x17e821['options'][_0x84c4('0x19')]===undefined?!![]:![]:!![],'where':_0x17e821[_0x84c4('0x18')]?_0x17e821[_0x84c4('0x18')][_0x84c4('0x1d')]||null:null,'attributes':[[_0x84c4('0x2c'),_0x84c4('0x2d')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db['sequelize']['fn']('IF',db['sequelize'][_0x84c4('0x24')](_0x84c4('0x2e')))),_0x84c4('0x2f')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')]['literal'](_0x84c4('0x30')))),_0x84c4('0x31')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db['sequelize']['fn']('IF',db['sequelize'][_0x84c4('0x24')](_0x84c4('0x22')))),_0x84c4('0x32')],[db['sequelize']['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x33')))),_0x84c4('0x34')],[db['sequelize']['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x35')))),_0x84c4('0x36')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x37')))),_0x84c4('0x38')],[db[_0x84c4('0x1e')]['fn']('COUNT',db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x39')))),_0x84c4('0x3a')],[db['sequelize']['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')](_0x84c4('0x3b')))),_0x84c4('0x3c')],[db['sequelize']['fn']('COUNT',db[_0x84c4('0x1e')]['fn']('IF',db['sequelize'][_0x84c4('0x24')](_0x84c4('0x3d')))),_0x84c4('0x3e')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')]('`state`\x20=\x2014,\x201,\x20null'))),_0x84c4('0x3f')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x84c4('0x40')))),_0x84c4('0x41')],[db[_0x84c4('0x1e')]['fn']('COUNT',db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')][_0x84c4('0x24')]('`state`\x20=\x2016,\x201,\x20null'))),'outboundAnswerAgiCallsDay'],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')]['fn']('IF',db['sequelize'][_0x84c4('0x24')](_0x84c4('0x42')))),_0x84c4('0x41')],[db[_0x84c4('0x1e')]['fn']('COUNT',db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')]['literal'](_0x84c4('0x43')))),_0x84c4('0x44')]],'group':[_0x84c4('0x2c')]})[_0x84c4('0x9')](function(_0xe395c6){logger['info']('GetVoiceQueueHopperHistory',_0x17e821);logger[_0x84c4('0x1a')](_0x84c4('0x2b'),_0x17e821,JSON['stringify'](_0xe395c6));_0x5cbfef(_0xe395c6);})['catch'](function(_0x59061c){logger['error'](_0x84c4('0x2b'),_0x59061c[_0x84c4('0x11')],_0x17e821);_0x5d8e3e(_0x5140b0['error'](0x1f4,_0x59061c[_0x84c4('0x11')]));});});};exports['GetCampaignHopperHistory']=function(_0x1331c4){var _0x2244e4=this;return new Promise(function(_0xba5bc3,_0x3768b3){return db['CmHopperHistory'][_0x84c4('0x1c')]({'raw':_0x1331c4[_0x84c4('0x18')]?_0x1331c4[_0x84c4('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1331c4[_0x84c4('0x18')]?_0x1331c4[_0x84c4('0x18')]['where']||null:null,'attributes':[['campaign',_0x84c4('0x2d')],[db[_0x84c4('0x1e')]['fn'](_0x84c4('0x1f'),db[_0x84c4('0x1e')][_0x84c4('0x20')]('id')),_0x84c4('0x45')],[db['sequelize']['fn']('COUNT',db[_0x84c4('0x1e')]['fn']('IF',db[_0x84c4('0x1e')]['literal'](_0x84c4('0x22')))),_0x84c4('0x46')]],'group':['campaign']})['then'](function(_0x2a974f){logger['info']('GetCampaignHopperHistory',_0x1331c4);logger[_0x84c4('0x1a')](_0x84c4('0x47'),_0x1331c4,JSON[_0x84c4('0xe')](_0x2a974f));_0xba5bc3(_0x2a974f);})[_0x84c4('0x13')](function(_0x14299b){logger['error'](_0x84c4('0x47'),_0x14299b['message'],_0x1331c4);_0x3768b3(_0x2244e4[_0x84c4('0xf')](0x1f4,_0x14299b['message']));});});};
\ No newline at end of file
+var _0x4711=['message','info','result','catch','CmHopperHistory','create','body','options','raw','CreateCmHopperHistory','AvgHandleTime','findAll','where','sequelize','COUNT','col','`state`\x20=\x204,\x201,\x20null','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4dc1fd,_0x110d59){var _0x984a5e=function(_0x47f0ce){while(--_0x47f0ce){_0x4dc1fd['push'](_0x4dc1fd['shift']());}};_0x984a5e(++_0x110d59);}(_0x4711,0x10c));var _0x1471=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4711[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x1471('0x0'));var util=require(_0x1471('0x1'));var moment=require(_0x1471('0x2'));var BPromise=require(_0x1471('0x3'));var rs=require(_0x1471('0x4'));var fs=require('fs');var Redis=require(_0x1471('0x5'));var db=require(_0x1471('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1471('0x7'))('rpc');var config=require(_0x1471('0x8'));var jayson=require(_0x1471('0x9'));var client=jayson[_0x1471('0xa')][_0x1471('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1be347,_0x4d1a90,_0x1cf7db){return new BPromise(function(_0x853506,_0x319c27){return client[_0x1471('0xc')](_0x1be347,_0x1cf7db)[_0x1471('0xd')](function(_0x4ddede){logger['info'](_0x1471('0xe'),_0x4d1a90,_0x1471('0xf'));logger[_0x1471('0x10')](_0x1471('0x11'),_0x4d1a90,_0x1471('0xf'),JSON[_0x1471('0x12')](_0x4ddede));if(_0x4ddede[_0x1471('0x13')]){if(_0x4ddede[_0x1471('0x13')]['code']===0x1f4){logger[_0x1471('0x13')](_0x1471('0xe'),_0x4d1a90,_0x4ddede[_0x1471('0x13')][_0x1471('0x14')]);return _0x319c27(_0x4ddede[_0x1471('0x13')]['message']);}logger[_0x1471('0x13')](_0x1471('0xe'),_0x4d1a90,_0x4ddede[_0x1471('0x13')]['message']);return _0x853506(_0x4ddede[_0x1471('0x13')][_0x1471('0x14')]);}else{logger[_0x1471('0x15')](_0x1471('0xe'),_0x4d1a90,_0x1471('0xf'));_0x853506(_0x4ddede[_0x1471('0x16')][_0x1471('0x14')]);}})[_0x1471('0x17')](function(_0x11ea35){logger[_0x1471('0x13')](_0x1471('0xe'),_0x4d1a90,_0x11ea35);_0x319c27(_0x11ea35);});});}exports['CreateCmHopperHistory']=function(_0x10fdea){var _0x19d1ed=this;return new Promise(function(_0x195048,_0x2c956a){return db[_0x1471('0x18')][_0x1471('0x19')](_0x10fdea[_0x1471('0x1a')],{'raw':_0x10fdea[_0x1471('0x1b')]?_0x10fdea['options'][_0x1471('0x1c')]===undefined?!![]:![]:!![]})[_0x1471('0xd')](function(_0xdebb7c){logger[_0x1471('0x15')](_0x1471('0x1d'),_0x10fdea);logger[_0x1471('0x10')](_0x1471('0x1d'),_0x10fdea,JSON[_0x1471('0x12')](_0xdebb7c));_0x195048(_0xdebb7c);})[_0x1471('0x17')](function(_0x2e7399){logger[_0x1471('0x13')](_0x1471('0x1d'),_0x2e7399[_0x1471('0x14')],_0x10fdea);_0x2c956a(_0x19d1ed[_0x1471('0x13')](0x1f4,_0x2e7399['message']));});});};exports[_0x1471('0x1e')]=function(_0x3a04cf){var _0x53d84f=this;return new Promise(function(_0x287197,_0x1f6acb){return db[_0x1471('0x18')][_0x1471('0x1f')]({'raw':_0x3a04cf['options']?_0x3a04cf['options'][_0x1471('0x1c')]===undefined?!![]:![]:!![],'where':_0x3a04cf[_0x1471('0x1b')]?_0x3a04cf[_0x1471('0x1b')][_0x1471('0x20')]||null:null,'attributes':[[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db['sequelize'][_0x1471('0x23')]('id')),'predictiveIntervalTotalCalls'],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db['sequelize']['literal'](_0x1471('0x24')))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x26')))),_0x1471('0x27')],[db['sequelize']['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x28')))),_0x1471('0x29')],[db['sequelize']['fn'](_0x1471('0x2a'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x2b')))),'predictiveIntervalAvgHoldtime'],[db[_0x1471('0x21')]['fn'](_0x1471('0x2a'),db['sequelize']['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x2c')))),_0x1471('0x2d')]]})[_0x1471('0xd')](function(_0x223413){logger[_0x1471('0x15')]('AvgHandleTime',_0x3a04cf);logger[_0x1471('0x10')](_0x1471('0x1e'),_0x3a04cf,JSON['stringify'](_0x223413));_0x287197(_0x223413);})[_0x1471('0x17')](function(_0x5c32f1){logger[_0x1471('0x13')](_0x1471('0x1e'),_0x5c32f1[_0x1471('0x14')],_0x3a04cf);_0x1f6acb(_0x53d84f[_0x1471('0x13')](0x1f4,_0x5c32f1['message']));});});};exports[_0x1471('0x2e')]=function(_0x53401f){var _0x1e7965=this;return new Promise(function(_0x510b39,_0x186080){return db['CmHopperHistory'][_0x1471('0x1f')]({'raw':_0x53401f[_0x1471('0x1b')]?_0x53401f[_0x1471('0x1b')][_0x1471('0x1c')]===undefined?!![]:![]:!![],'where':_0x53401f['options']?_0x53401f['options'][_0x1471('0x20')]||null:null,'attributes':[[_0x1471('0x2f'),_0x1471('0x30')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db['sequelize']['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x31')))),_0x1471('0x32')],[db['sequelize']['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')]('`state`\x20=\x203,\x201,\x20null'))),'outboundNoAnswerCallsDay'],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db['sequelize'][_0x1471('0x25')](_0x1471('0x24')))),_0x1471('0x33')],[db[_0x1471('0x21')]['fn']('COUNT',db[_0x1471('0x21')]['fn']('IF',db['sequelize'][_0x1471('0x25')](_0x1471('0x34')))),_0x1471('0x35')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')]['literal']('`state`\x20=\x208,\x201,\x20null'))),'outboundCongestionCallsDay'],[db['sequelize']['fn'](_0x1471('0x22'),db['sequelize']['fn']('IF',db[_0x1471('0x21')]['literal'](_0x1471('0x36')))),_0x1471('0x37')],[db['sequelize']['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x38')))),_0x1471('0x39')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db['sequelize']['fn']('IF',db['sequelize'][_0x1471('0x25')](_0x1471('0x3a')))),_0x1471('0x3b')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x3c')))),_0x1471('0x3d')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x3e')))),'outboundOriginateFailureCallsDay'],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')]('`state`\x20=\x2018,\x201,\x20null'))),_0x1471('0x3f')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')]['literal'](_0x1471('0x40')))),_0x1471('0x41')],[db[_0x1471('0x21')]['fn']('COUNT',db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')]['literal'](_0x1471('0x42')))),_0x1471('0x3f')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x1471('0x43')))),_0x1471('0x44')]],'group':[_0x1471('0x2f')]})[_0x1471('0xd')](function(_0x1995ad){logger[_0x1471('0x15')]('GetVoiceQueueHopperHistory',_0x53401f);logger[_0x1471('0x10')]('GetVoiceQueueHopperHistory',_0x53401f,JSON[_0x1471('0x12')](_0x1995ad));_0x510b39(_0x1995ad);})[_0x1471('0x17')](function(_0x1bc571){logger[_0x1471('0x13')](_0x1471('0x2e'),_0x1bc571['message'],_0x53401f);_0x186080(_0x1e7965[_0x1471('0x13')](0x1f4,_0x1bc571[_0x1471('0x14')]));});});};exports['GetCampaignHopperHistory']=function(_0x5e4e80){var _0x2c8be3=this;return new Promise(function(_0x4dfecd,_0x13a5f4){return db[_0x1471('0x18')][_0x1471('0x1f')]({'raw':_0x5e4e80[_0x1471('0x1b')]?_0x5e4e80[_0x1471('0x1b')][_0x1471('0x1c')]===undefined?!![]:![]:!![],'where':_0x5e4e80['options']?_0x5e4e80[_0x1471('0x1b')]['where']||null:null,'attributes':[['campaign',_0x1471('0x30')],[db['sequelize']['fn'](_0x1471('0x22'),db[_0x1471('0x21')][_0x1471('0x23')]('id')),_0x1471('0x45')],[db[_0x1471('0x21')]['fn'](_0x1471('0x22'),db[_0x1471('0x21')]['fn']('IF',db[_0x1471('0x21')][_0x1471('0x25')](_0x1471('0x24')))),_0x1471('0x46')]],'group':['campaign']})[_0x1471('0xd')](function(_0x20bde5){logger[_0x1471('0x15')](_0x1471('0x47'),_0x5e4e80);logger['debug'](_0x1471('0x47'),_0x5e4e80,JSON[_0x1471('0x12')](_0x20bde5));_0x4dfecd(_0x20bde5);})[_0x1471('0x17')](function(_0x325e02){logger['error']('GetCampaignHopperHistory',_0x325e02['message'],_0x5e4e80);_0x13a5f4(_0x2c8be3[_0x1471('0x13')](0x1f4,_0x325e02['message']));});});};
\ No newline at end of file
index fdaf2c2..8d18653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6b=['index','/describe','isAuthenticated','/:id','post','put','update','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get'];(function(_0x580743,_0x3dd428){var _0x582299=function(_0x46c3a8){while(--_0x46c3a8){_0x580743['push'](_0x580743['shift']());}};_0x582299(++_0x3dd428);}(_0x3d6b,0x1b7));var _0xb3d6=function(_0x297eea,_0x5060be){_0x297eea=_0x297eea-0x0;var _0x1c42d2=_0x3d6b[_0x297eea];return _0x1c42d2;};'use strict';var multer=require(_0xb3d6('0x0'));var util=require(_0xb3d6('0x1'));var path=require(_0xb3d6('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb3d6('0x3')]();var fs_extra=require(_0xb3d6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb3d6('0x5'));var config=require(_0xb3d6('0x6'));var controller=require(_0xb3d6('0x7'));router[_0xb3d6('0x8')]('/',auth['isAuthenticated'](),controller[_0xb3d6('0x9')]);router[_0xb3d6('0x8')](_0xb3d6('0xa'),auth[_0xb3d6('0xb')](),controller['describe']);router['get'](_0xb3d6('0xc'),auth[_0xb3d6('0xb')](),controller['show']);router[_0xb3d6('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb3d6('0xe')](_0xb3d6('0xc'),auth[_0xb3d6('0xb')](),controller[_0xb3d6('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xf4dd=['create','put','/:id','update','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','post'];(function(_0x63bd3b,_0x70e9a9){var _0x25daf1=function(_0x5a4643){while(--_0x5a4643){_0x63bd3b['push'](_0x63bd3b['shift']());}};_0x25daf1(++_0x70e9a9);}(_0xf4dd,0x113));var _0xdf4d=function(_0x2b5468,_0x3bbcfd){_0x2b5468=_0x2b5468-0x0;var _0x45f396=_0xf4dd[_0x2b5468];return _0x45f396;};'use strict';var multer=require(_0xdf4d('0x0'));var util=require(_0xdf4d('0x1'));var path=require('path');var timeout=require(_0xdf4d('0x2'));var express=require(_0xdf4d('0x3'));var router=express[_0xdf4d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdf4d('0x5'));var config=require('../../config/environment');var controller=require(_0xdf4d('0x6'));router[_0xdf4d('0x7')]('/',auth[_0xdf4d('0x8')](),controller[_0xdf4d('0x9')]);router[_0xdf4d('0x7')](_0xdf4d('0xa'),auth[_0xdf4d('0x8')](),controller[_0xdf4d('0xb')]);router['get']('/:id',auth[_0xdf4d('0x8')](),controller['show']);router[_0xdf4d('0xc')]('/',auth[_0xdf4d('0x8')](),controller[_0xdf4d('0xd')]);router[_0xdf4d('0xe')](_0xdf4d('0xf'),auth[_0xdf4d('0x8')](),controller[_0xdf4d('0x10')]);module[_0xdf4d('0x11')]=router;
\ No newline at end of file
index b679fa3..af99dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4d=['STRING','name','sequelize','exports'];(function(_0x588a09,_0x3ec6da){var _0x4a7263=function(_0x589f0c){while(--_0x589f0c){_0x588a09['push'](_0x588a09['shift']());}};_0x4a7263(++_0x3ec6da);}(_0x0d4d,0x132));var _0xd0d4=function(_0x3920e0,_0x12040c){_0x3920e0=_0x3920e0-0x0;var _0x436e49=_0x0d4d[_0x3920e0];return _0x436e49;};'use strict';var Sequelize=require(_0xd0d4('0x0'));module[_0xd0d4('0x1')]={'name':{'type':Sequelize[_0xd0d4('0x2')],'unique':_0xd0d4('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd0d4('0x2')]},'dialPrefix':{'type':Sequelize[_0xd0d4('0x2')]}};
\ No newline at end of file
+var _0xcabc=['STRING','name','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcabc,0x16a));var _0xccab=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xcabc[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require('sequelize');module[_0xccab('0x0')]={'name':{'type':Sequelize[_0xccab('0x1')],'unique':_0xccab('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xccab('0x1')]},'dialPrefix':{'type':Sequelize[_0xccab('0x1')]}};
\ No newline at end of file
index be4a7b2..2f61cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x500d=['show','params','length','merge','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','describe','ListId','findOne','nolimit','order','Disposition','removeDispositions','addContacts','CmContact','tags','join','isArray','each','omit','ids','push','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CustomFields','format','cf_%d','raw','getContactsCsv','ContactItemType','OrderBy','CmCustomField','alias','select','from','cm_contacts','c.ListId\x20=\x20?','distinct','field','c.cf_','customField_','item','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','description','description_additionalPhone_','isEmpty','now','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','download','/tmp/list_%d_%s.csv','addCustomField','addCustomFields','TEXT','text','Sequelize','number','INTEGER','switch','defaultValue','sequelize','queryInterface','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','destroy','then','get','Lists','UserProfileResource','sendStatus','error','stack','name','send','map','CmList','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','catch'];(function(_0x451bf7,_0x5472b9){var _0x34c0ab=function(_0xf09636){while(--_0xf09636){_0x451bf7['push'](_0x451bf7['shift']());}};_0x34c0ab(++_0x5472b9);}(_0x500d,0xf7));var _0xd500=function(_0x19dcc8,_0x4bae0e){_0x19dcc8=_0x19dcc8-0x0;var _0x2810f4=_0x500d[_0x19dcc8];return _0x2810f4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd500('0x0'));var zipdir=require(_0xd500('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd500('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd500('0x3'));var util=require(_0xd500('0x4'));var path=require(_0xd500('0x5'));var sox=require(_0xd500('0x6'));var csv=require(_0xd500('0x7'));var ejs=require(_0xd500('0x8'));var fs=require('fs');var fs_extra=require(_0xd500('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd500('0xa'));var jsforce=require(_0xd500('0xb'));var deskjs=require(_0xd500('0xc'));var toCsv=require(_0xd500('0x7'));var querystring=require(_0xd500('0xd'));var Papa=require(_0xd500('0xe'));var Redis=require(_0xd500('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd500('0x10'));var as=require(_0xd500('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd500('0x12'))(_0xd500('0x13'));var utils=require(_0xd500('0x14'));var config=require(_0xd500('0x15'));var licenseUtil=require(_0xd500('0x16'));var db=require(_0xd500('0x17'))['db'];var csv_results;config[_0xd500('0x18')]=_[_0xd500('0x19')](config[_0xd500('0x18')],{'host':_0xd500('0x1a'),'port':0x18eb});var socket=require(_0xd500('0x1b'))(new Redis(config[_0xd500('0x18')]));require(_0xd500('0x1c'))[_0xd500('0x1d')](socket);function respondWithStatusCode(_0x2e7cd9,_0x5b768d){_0x5b768d=_0x5b768d||0xcc;return function(_0x3b2c55){if(_0x3b2c55){return _0x2e7cd9['sendStatus'](_0x5b768d);}return _0x2e7cd9[_0xd500('0x1e')](_0x5b768d)[_0xd500('0x1f')]();};}function respondWithResult(_0x50528d,_0x34564c){_0x34564c=_0x34564c||0xc8;return function(_0x527267){if(_0x527267){return _0x50528d[_0xd500('0x1e')](_0x34564c)[_0xd500('0x20')](_0x527267);}};}function respondWithFilteredResult(_0x10d481,_0x1be33c){return function(_0x14ed05){if(_0x14ed05){var _0x5c61a9=typeof _0x1be33c[_0xd500('0x21')]==='undefined'&&typeof _0x1be33c[_0xd500('0x22')]===_0xd500('0x23');var _0x154e0c=_0x14ed05[_0xd500('0x24')];var _0x48d53f=_0x5c61a9?0x0:_0x1be33c[_0xd500('0x21')];var _0x37cf2c=_0x5c61a9?_0x14ed05['count']:_0x1be33c['offset']+_0x1be33c[_0xd500('0x22')];var _0x1303d0;if(_0x37cf2c>=_0x154e0c){_0x37cf2c=_0x154e0c;_0x1303d0=0xc8;}else{_0x1303d0=0xce;}_0x10d481[_0xd500('0x1e')](_0x1303d0);return _0x10d481[_0xd500('0x25')](_0xd500('0x26'),_0x48d53f+'-'+_0x37cf2c+'/'+_0x154e0c)[_0xd500('0x20')](_0x14ed05);}return null;};}function patchUpdates(_0x16e228){return function(_0x313f53){try{jsonpatch[_0xd500('0x27')](_0x313f53,_0x16e228,!![]);}catch(_0x4a59d3){return BPromise['reject'](_0x4a59d3);}return _0x313f53['save']();};}function saveUpdates(_0x264633,_0xaa4533){return function(_0x3434fe){if(_0x3434fe){return _0x3434fe['update'](_0x264633)['then'](function(_0x3f1f8a){return _0x3f1f8a;});}return null;};}function removeEntity(_0x44c37a,_0x95ea3a){return function(_0x21156a){if(_0x21156a){return _0x21156a[_0xd500('0x28')]()[_0xd500('0x29')](function(){var _0x2191d9=_0x21156a[_0xd500('0x2a')]({'plain':!![]});var _0xe96715=_0xd500('0x2b');return db[_0xd500('0x2c')][_0xd500('0x28')]({'where':{'type':_0xe96715,'resourceId':_0x2191d9['id']}})['then'](function(){return _0x21156a;});})[_0xd500('0x29')](function(){_0x44c37a[_0xd500('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x114b6c,_0x3ac282){return function(_0x178174){if(!_0x178174){_0x114b6c[_0xd500('0x2d')](0x194);}return _0x178174;};}function handleError(_0x489bf9,_0x525c25){_0x525c25=_0x525c25||0x1f4;return function(_0x85cfda){logger[_0xd500('0x2e')](_0x85cfda[_0xd500('0x2f')]);if(_0x85cfda[_0xd500('0x30')]){delete _0x85cfda[_0xd500('0x30')];}_0x489bf9[_0xd500('0x1e')](_0x525c25)[_0xd500('0x31')](_0x85cfda);};}exports['index']=function(_0x5c55bb,_0xc4dd5d){var _0x5e0794={},_0x2a3f4a={},_0x1a390c={'count':0x0,'rows':[]};var _0x57a6c4=_[_0xd500('0x32')](db[_0xd500('0x33')][_0xd500('0x34')],function(_0x4130da){return{'name':_0x4130da[_0xd500('0x35')],'type':_0x4130da[_0xd500('0x36')][_0xd500('0x37')]};});_0x2a3f4a[_0xd500('0x38')]=_[_0xd500('0x32')](_0x57a6c4,'name');_0x2a3f4a[_0xd500('0x39')]=_[_0xd500('0x3a')](_0x5c55bb[_0xd500('0x39')]);_0x2a3f4a[_0xd500('0x3b')]=_['intersection'](_0x2a3f4a[_0xd500('0x38')],_0x2a3f4a[_0xd500('0x39')]);_0x5e0794['attributes']=_[_0xd500('0x3c')](_0x2a3f4a[_0xd500('0x38')],qs['fields'](_0x5c55bb[_0xd500('0x39')][_0xd500('0x3d')]));_0x5e0794[_0xd500('0x3e')]=_0x5e0794[_0xd500('0x3e')]['length']?_0x5e0794['attributes']:_0x2a3f4a[_0xd500('0x38')];if(!_0x5c55bb[_0xd500('0x39')][_0xd500('0x3f')]('nolimit')){_0x5e0794[_0xd500('0x22')]=qs['limit'](_0x5c55bb['query'][_0xd500('0x22')]);_0x5e0794[_0xd500('0x21')]=qs[_0xd500('0x21')](_0x5c55bb[_0xd500('0x39')][_0xd500('0x21')]);}_0x5e0794['order']=qs[_0xd500('0x40')](_0x5c55bb[_0xd500('0x39')]['sort']);_0x5e0794[_0xd500('0x41')]=qs['filters'](_[_0xd500('0x42')](_0x5c55bb[_0xd500('0x39')],_0x2a3f4a[_0xd500('0x3b')]),_0x57a6c4);if(_0x5c55bb[_0xd500('0x39')][_0xd500('0x43')]){_0x5e0794[_0xd500('0x41')]=_['merge'](_0x5e0794[_0xd500('0x41')],{'$or':_[_0xd500('0x32')](_0x57a6c4,function(_0x5b454e){if(_0x5b454e[_0xd500('0x36')]!==_0xd500('0x44')){var _0x18e464={};_0x18e464[_0x5b454e[_0xd500('0x30')]]={'$like':'%'+_0x5c55bb['query'][_0xd500('0x43')]+'%'};return _0x18e464;}})});}_0x5e0794=_['merge']({},_0x5e0794,_0x5c55bb['options']);var _0x504ad2={'where':_0x5e0794['where']};return db['CmList'][_0xd500('0x24')](_0x504ad2)['then'](function(_0x52fb0b){_0x1a390c[_0xd500('0x24')]=_0x52fb0b;if(_0x5c55bb[_0xd500('0x39')][_0xd500('0x45')]){_0x5e0794[_0xd500('0x46')]=[{'all':!![]}];}return db[_0xd500('0x33')][_0xd500('0x47')](_0x5e0794);})['then'](function(_0x414664){_0x1a390c['rows']=_0x414664;return _0x1a390c;})[_0xd500('0x29')](respondWithFilteredResult(_0xc4dd5d,_0x5e0794))[_0xd500('0x48')](handleError(_0xc4dd5d,null));};exports[_0xd500('0x49')]=function(_0x1065cb,_0x24ed01){var _0x1eb585={'raw':![],'where':{'id':_0x1065cb[_0xd500('0x4a')]['id']}},_0x54af61={};_0x54af61[_0xd500('0x38')]=_[_0xd500('0x3a')](db[_0xd500('0x33')]['rawAttributes']);_0x54af61[_0xd500('0x39')]=_[_0xd500('0x3a')](_0x1065cb['query']);_0x54af61['filters']=_[_0xd500('0x3c')](_0x54af61[_0xd500('0x38')],_0x54af61[_0xd500('0x39')]);_0x1eb585[_0xd500('0x3e')]=_[_0xd500('0x3c')](_0x54af61[_0xd500('0x38')],qs['fields'](_0x1065cb[_0xd500('0x39')][_0xd500('0x3d')]));_0x1eb585[_0xd500('0x3e')]=_0x1eb585[_0xd500('0x3e')][_0xd500('0x4b')]?_0x1eb585[_0xd500('0x3e')]:_0x54af61[_0xd500('0x38')];if(_0x1065cb[_0xd500('0x39')][_0xd500('0x45')]){_0x1eb585[_0xd500('0x46')]=[{'all':!![]}];}_0x1eb585=_[_0xd500('0x4c')]({},_0x1eb585,_0x1065cb[_0xd500('0x4d')]);return db[_0xd500('0x33')][_0xd500('0x4e')](_0x1eb585)['then'](handleEntityNotFound(_0x24ed01,null))[_0xd500('0x29')](respondWithResult(_0x24ed01,null))[_0xd500('0x48')](handleError(_0x24ed01,null));};exports[_0xd500('0x4f')]=function(_0x3e6b7c,_0xc02d03){return db[_0xd500('0x33')]['create'](_0x3e6b7c[_0xd500('0x50')],{})[_0xd500('0x29')](function(_0x1703bd){var _0x56042d=_0x3e6b7c[_0xd500('0x51')][_0xd500('0x2a')]({'plain':!![]});if(!_0x56042d)throw new Error(_0xd500('0x52'));if(_0x56042d[_0xd500('0x53')]===_0xd500('0x51')){var _0x1376d8=_0x1703bd[_0xd500('0x2a')]({'plain':!![]});var _0x5d9414=_0xd500('0x2b');return db[_0xd500('0x54')][_0xd500('0x4e')]({'where':{'name':_0x5d9414,'userProfileId':_0x56042d[_0xd500('0x55')]},'raw':!![]})['then'](function(_0x3c510b){if(_0x3c510b&&_0x3c510b['autoAssociation']===0x0){return db[_0xd500('0x2c')]['create']({'name':_0x1376d8[_0xd500('0x30')],'resourceId':_0x1376d8['id'],'type':_0x3c510b['name'],'sectionId':_0x3c510b['id']},{})[_0xd500('0x29')](function(){return _0x1703bd;});}else{return _0x1703bd;}})[_0xd500('0x48')](function(_0x46e7a8){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x46e7a8);throw _0x46e7a8;});}return _0x1703bd;})[_0xd500('0x29')](respondWithResult(_0xc02d03,0xc9))[_0xd500('0x48')](handleError(_0xc02d03,null));};exports['update']=function(_0x3b0dc2,_0x588486){if(_0x3b0dc2[_0xd500('0x50')]['id']){delete _0x3b0dc2['body']['id'];}return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0x3b0dc2[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x588486,null))[_0xd500('0x29')](saveUpdates(_0x3b0dc2[_0xd500('0x50')],null))[_0xd500('0x29')](respondWithResult(_0x588486,null))['catch'](handleError(_0x588486,null));};exports[_0xd500('0x28')]=function(_0x57089a,_0x422eba){return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0x57089a[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x422eba,null))[_0xd500('0x29')](removeEntity(_0x422eba,null))[_0xd500('0x48')](handleError(_0x422eba,null));};exports[_0xd500('0x56')]=function(_0x5c0cbb,_0x1b51fe){return db['CmList']['describe']()['then'](respondWithResult(_0x1b51fe,null))['catch'](handleError(_0x1b51fe,null));};exports['addDisposition']=function(_0x2b49bb,_0x3d4b78,_0x186803){if(_0x2b49bb[_0xd500('0x50')]['id']){delete _0x2b49bb['body']['id'];}return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0x2b49bb[_0xd500('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3d4b78,null))[_0xd500('0x29')](function(_0x30c48e){if(_0x30c48e){_0x2b49bb['body'][_0xd500('0x57')]=_0x30c48e['id'];return db['Disposition']['create'](_0x2b49bb[_0xd500('0x50')]);}})[_0xd500('0x29')](respondWithResult(_0x3d4b78,null))[_0xd500('0x48')](handleError(_0x3d4b78,null));};exports['getDispositions']=function(_0x136ee5,_0x29db64,_0x47017b){var _0x48f7a7={'raw':![],'where':{}};var _0x2cbb66={};var _0x3730dd={'count':0x0,'rows':[]};return db[_0xd500('0x33')][_0xd500('0x58')]({'where':{'id':_0x136ee5[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x29db64,null))[_0xd500('0x29')](function(_0x370b35){if(_0x370b35){_0x2cbb66[_0xd500('0x38')]=_['keys'](db['Disposition'][_0xd500('0x34')]);_0x2cbb66[_0xd500('0x39')]=_[_0xd500('0x3a')](_0x136ee5[_0xd500('0x39')]);_0x2cbb66[_0xd500('0x3b')]=_[_0xd500('0x3c')](_0x2cbb66[_0xd500('0x38')],_0x2cbb66[_0xd500('0x39')]);_0x48f7a7[_0xd500('0x3e')]=_[_0xd500('0x3c')](_0x2cbb66[_0xd500('0x38')],qs[_0xd500('0x3d')](_0x136ee5[_0xd500('0x39')][_0xd500('0x3d')]));_0x48f7a7[_0xd500('0x3e')]=_0x48f7a7[_0xd500('0x3e')][_0xd500('0x4b')]?_0x48f7a7['attributes']:_0x2cbb66['model'];if(!_0x136ee5[_0xd500('0x39')][_0xd500('0x3f')](_0xd500('0x59'))){_0x48f7a7[_0xd500('0x22')]=qs[_0xd500('0x22')](_0x136ee5[_0xd500('0x39')][_0xd500('0x22')]);_0x48f7a7[_0xd500('0x21')]=qs[_0xd500('0x21')](_0x136ee5['query'][_0xd500('0x21')]);}_0x48f7a7[_0xd500('0x5a')]=qs[_0xd500('0x40')](_0x136ee5[_0xd500('0x39')][_0xd500('0x40')]);_0x48f7a7[_0xd500('0x41')]=qs[_0xd500('0x3b')](_[_0xd500('0x42')](_0x136ee5[_0xd500('0x39')],_0x2cbb66['filters']));_0x48f7a7[_0xd500('0x41')]['ListId']=_0x370b35['id'];if(_0x136ee5[_0xd500('0x39')][_0xd500('0x43')]){_0x48f7a7['where']=_[_0xd500('0x4c')](_0x48f7a7['where'],{'$or':_[_0xd500('0x32')](_0x48f7a7['attributes'],function(_0x2b9fee){var _0x32351a={};_0x32351a[_0x2b9fee]={'$like':'%'+_0x136ee5[_0xd500('0x39')][_0xd500('0x43')]+'%'};return _0x32351a;})});}_0x48f7a7=_['merge']({},_0x48f7a7,_0x136ee5[_0xd500('0x4d')]);return db['Disposition']['count']({'where':_0x48f7a7[_0xd500('0x41')]})[_0xd500('0x29')](function(_0xe17fd){_0x3730dd['count']=_0xe17fd;if(_0x136ee5[_0xd500('0x39')][_0xd500('0x45')]){_0x48f7a7[_0xd500('0x46')]=[{'all':!![]}];}return db[_0xd500('0x5b')][_0xd500('0x47')](_0x48f7a7);})['then'](function(_0xa1e396){_0x3730dd['rows']=_0xa1e396;return _0x3730dd;});}})[_0xd500('0x29')](respondWithFilteredResult(_0x29db64,_0x48f7a7))[_0xd500('0x48')](handleError(_0x29db64,null));};exports['removeDispositions']=function(_0x258cdb,_0x2aef8c,_0xfda79b){return db[_0xd500('0x33')]['find']({'where':{'id':_0x258cdb[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x2aef8c,null))[_0xd500('0x29')](function(_0x474af6){if(_0x474af6){return _0x474af6[_0xd500('0x5c')](_0x258cdb[_0xd500('0x39')]['ids']);}})[_0xd500('0x29')](respondWithStatusCode(_0x2aef8c,null))['catch'](handleError(_0x2aef8c,null));};exports[_0xd500('0x5d')]=function(_0x19dc09,_0x29d12d,_0xdeb272){return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0x19dc09[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x29d12d,null))[_0xd500('0x29')](function(_0x498077){if(_0x498077){var _0x5daaab=[];var _0x5ba8f1={'success':[],'errors':[]};return db[_0xd500('0x5e')]['describe']()[_0xd500('0x29')](function(_0x171172){if(_0x19dc09[_0xd500('0x50')][_0xd500('0x5f')]&&_['isArray'](_0x19dc09[_0xd500('0x50')][_0xd500('0x5f')])){if(_0x19dc09['body'][_0xd500('0x5f')][_0xd500('0x4b')]){_0x19dc09['body'][_0xd500('0x5f')]=_0x19dc09[_0xd500('0x50')][_0xd500('0x5f')][_0xd500('0x60')](';')+';';}else{_0x19dc09[_0xd500('0x50')][_0xd500('0x5f')]=null;}}else{_0x19dc09[_0xd500('0x50')][_0xd500('0x5f')]=null;}if(_0x19dc09[_0xd500('0x50')]&&_[_0xd500('0x61')](_0x19dc09[_0xd500('0x50')])){for(var _0x2c0585=0x0;_0x2c0585<_0x19dc09[_0xd500('0x50')][_0xd500('0x4b')];_0x2c0585+=0x1){_0x19dc09['body'][_0x2c0585][_0xd500('0x57')]=_0x19dc09[_0xd500('0x4a')]['id'];_0x5daaab['push'](_0x19dc09[_0xd500('0x50')][_0x2c0585]);}return BPromise[_0xd500('0x62')](_0x5daaab,function(_0x5f859b){return db[_0xd500('0x5e')][_0xd500('0x4f')](_[_0xd500('0x63')](_0x5f859b,[_0xd500('0x64'),'id'])||{},{'fields':_['keys'](_0x171172),'raw':!![]})[_0xd500('0x29')](function(_0x21c62f){_0x5ba8f1['success'][_0xd500('0x65')](_0x21c62f[_0xd500('0x66')]);})['catch'](function(_0x3c0d85){_0x5ba8f1[_0xd500('0x67')][_0xd500('0x65')]({'data':_0x5f859b,'error':_0x3c0d85[_0xd500('0x68')]});});})['then'](function(_0x27d609){return _0x5ba8f1;})[_0xd500('0x48')](function(_0x58d5fa){return _0x58d5fa;});}else{_0x29d12d[_0xd500('0x1e')](0x190)['json']({'message':_0xd500('0x69')});}});}})['then'](respondWithResult(_0x29d12d,null))[_0xd500('0x48')](handleError(_0x29d12d,null));};exports[_0xd500('0x6a')]=function(_0x4f1e69,_0x4c72e1,_0x8a14ce){var _0x559aad;return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0x4f1e69['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0xd500('0x6b')}]})[_0xd500('0x29')](handleEntityNotFound(_0x4c72e1,null))['then'](function(_0x4aa17f){if(_0x4aa17f){_0x559aad=_0x4aa17f;return db[_0xd500('0x5e')][_0xd500('0x34')];}})['then'](function(_0x2db17f){if(_0x2db17f){var _0x9df83a={};var _0x54e9ef={};_0x54e9ef[_0xd500('0x38')]=_['concat'](_['keys'](_0x2db17f),_['map'](_0x559aad['CustomFields'],function(_0x3ba977){return util[_0xd500('0x6c')](_0xd500('0x6d'),_0x3ba977['id']);}));_0x54e9ef['query']=_[_0xd500('0x3a')](_0x4f1e69[_0xd500('0x39')]);_0x54e9ef[_0xd500('0x3b')]=_[_0xd500('0x3c')](_0x54e9ef[_0xd500('0x38')],_0x54e9ef[_0xd500('0x39')]);_0x9df83a[_0xd500('0x3e')]=_[_0xd500('0x3c')](_0x54e9ef[_0xd500('0x38')],qs[_0xd500('0x3d')](_0x4f1e69['query'][_0xd500('0x3d')]));_0x9df83a[_0xd500('0x3e')]=_0x9df83a[_0xd500('0x3e')][_0xd500('0x4b')]?_0x9df83a[_0xd500('0x3e')]:_0x54e9ef['model'];if(!_0x4f1e69['query'][_0xd500('0x3f')](_0xd500('0x59'))){_0x9df83a[_0xd500('0x22')]=qs[_0xd500('0x22')](_0x4f1e69[_0xd500('0x39')][_0xd500('0x22')]);_0x9df83a[_0xd500('0x21')]=qs[_0xd500('0x21')](_0x4f1e69[_0xd500('0x39')][_0xd500('0x21')]);}_0x9df83a[_0xd500('0x5a')]=qs[_0xd500('0x40')](_0x4f1e69['query'][_0xd500('0x40')]);_0x9df83a[_0xd500('0x41')]=qs[_0xd500('0x3b')](_['pick'](_0x4f1e69[_0xd500('0x39')],_0x54e9ef['filters']));_0x9df83a[_0xd500('0x6e')]=!![];if(_0x4f1e69['query'][_0xd500('0x43')]){_0x9df83a[_0xd500('0x41')]=_[_0xd500('0x4c')](_0x9df83a['where'],{'$or':_[_0xd500('0x32')](_0x9df83a[_0xd500('0x3e')],function(_0x16ca76){var _0x23ff92={};_0x23ff92[_0x16ca76]={'$like':'%'+_0x4f1e69['query'][_0xd500('0x43')]+'%'};return _0x23ff92;})});}_0x9df83a=_[_0xd500('0x4c')]({},_0x9df83a,_0x4f1e69[_0xd500('0x4d')]);return _0x559aad[_0xd500('0x6a')](_0x9df83a);}})[_0xd500('0x29')](respondWithResult(_0x4c72e1,null))['catch'](handleError(_0x4c72e1,null));};exports[_0xd500('0x6f')]=function(_0x1e9572,_0xa23bf4,_0x271266){var _0x2a6133;var _0x52ad8f;var _0x2ad96c;var _0x21dc04=_0x1e9572[_0xd500('0x4a')]['id'];csv_results=[];return db[_0xd500('0x70')][_0xd500('0x47')]({'attributes':['id',_0xd500('0x30')],'raw':!![],'order':[_0xd500('0x71')]})[_0xd500('0x29')](function(_0x1007b5){_0x2a6133=_0x1007b5;var _0x573335=_[_0xd500('0x3a')](db[_0xd500('0x5e')]['rawAttributes']);return db[_0xd500('0x72')][_0xd500('0x47')]({'raw':!![],'attributes':['id',_0xd500('0x73')]})[_0xd500('0x29')](function(_0x481341){_0x52ad8f=_0x481341;var _0x151fb9=squel[_0xd500('0x74')]()[_0xd500('0x3d')](_0x573335)[_0xd500('0x75')](_0xd500('0x76'),'c')[_0xd500('0x41')](_0xd500('0x77'),_0x21dc04)[_0xd500('0x41')]('c.deletedAt\x20is\x20null')[_0xd500('0x78')]();for(var _0x3b4de5=0x0;_0x3b4de5<_0x52ad8f[_0xd500('0x4b')];_0x3b4de5++){_0x151fb9[_0xd500('0x79')](_0xd500('0x7a')+_0x52ad8f[_0x3b4de5]['id'],_0xd500('0x7b')+_0x52ad8f[_0x3b4de5]['alias']);}for(var _0x3b4de5=0x0;_0x3b4de5<_0x2a6133[_0xd500('0x4b')];_0x3b4de5++){_0x151fb9['field'](squel['select']()[_0xd500('0x79')](_0xd500('0x7c'))[_0xd500('0x75')](_0xd500('0x7d'))[_0xd500('0x41')](_0xd500('0x7e'),_0x2a6133[_0x3b4de5]['id'])[_0xd500('0x41')](_0xd500('0x7f')),_0xd500('0x80')+_0x2a6133[_0x3b4de5][_0xd500('0x30')]);_0x151fb9[_0xd500('0x79')](squel[_0xd500('0x74')]()[_0xd500('0x79')](_0xd500('0x81'))['from'](_0xd500('0x7d'))[_0xd500('0x41')]('ItemTypeId\x20=\x20?',_0x2a6133[_0x3b4de5]['id'])[_0xd500('0x41')](_0xd500('0x7f')),_0xd500('0x82')+_0x2a6133[_0x3b4de5]['name']);}var _0x33cf48=[];_0x33cf48[_0xd500('0x65')](_0x151fb9['toString']());BPromise[_0xd500('0x62')](_0x33cf48,handleQuery)['then'](function(_0x168deb){handleQuery(_0x151fb9['toString']());var _0x4f213d=csv_results[0x0];if(!_[_0xd500('0x83')](_0x4f213d)){var _0x944a71=toCsv(_0x4f213d);var _0xce5845=Date[_0xd500('0x84')]();fs['writeFileSync'](util[_0xd500('0x6c')]('/tmp/list_%d_%s.csv',_0x21dc04,_0xce5845),_0x944a71);_0xa23bf4['setHeader'](_0xd500('0x85'),_0xd500('0x86')+util[_0xd500('0x6c')](_0xd500('0x87'),_0x21dc04,_0xce5845));_0xa23bf4['setHeader']('Content-type','text/csv');return _0xa23bf4[_0xd500('0x88')](util['format'](_0xd500('0x89'),_0x21dc04,_0xce5845));}else{return _0xa23bf4['sendStatus'](0xcc);}});});});};exports[_0xd500('0x8a')]=function(_0x1da68d,_0x1d5601,_0x25aee8){var _0x5beff4;delete _0x1da68d[_0xd500('0x50')]['id'];return db[_0xd500('0x33')]['findOne']({'where':{'id':_0x1da68d[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x1d5601,null))['then'](function(_0x4cd01a){if(_0x4cd01a){return db['sequelize']['transaction'](function(_0x5b30b4){return db[_0xd500('0x72')]['create'](_0x1da68d[_0xd500('0x50')],{'transaction':_0x5b30b4})[_0xd500('0x29')](function(_0x271290){_0x5beff4=_0x271290;return _0x4cd01a[_0xd500('0x8b')](_0x271290,{'transaction':_0x5b30b4});})[_0xd500('0x29')](function(){var _0x54b9e9={'type':db['Sequelize'][_0xd500('0x8c')],'transaction':_0x5b30b4};switch(_0x1da68d['body'][_0xd500('0x36')]){case _0xd500('0x8d'):_0x54b9e9[_0xd500('0x36')]=db[_0xd500('0x8e')][_0xd500('0x8c')];break;case _0xd500('0x8f'):_0x54b9e9[_0xd500('0x36')]=db[_0xd500('0x8e')][_0xd500('0x90')];break;case _0xd500('0x91'):_0x54b9e9[_0xd500('0x36')]=db['Sequelize']['BOOLEAN'];_0x54b9e9[_0xd500('0x92')]=![];break;default:}return db[_0xd500('0x93')][_0xd500('0x94')]['addColumn'](_0xd500('0x76'),util[_0xd500('0x6c')](_0xd500('0x95'),_0x5beff4['id']),_0x54b9e9);})[_0xd500('0x29')](function(){return _0x5beff4;});});}})[_0xd500('0x29')](respondWithResult(_0x1d5601,null))[_0xd500('0x48')](handleError(_0x1d5601,null));};exports[_0xd500('0x96')]=function(_0x2edec9,_0x4d1e6f,_0x176bb1){var _0x4ec0d5={};var _0x594931={};var _0x527506;var _0xcb2d0d;return db[_0xd500('0x33')][_0xd500('0x58')]({'where':{'id':_0x2edec9[_0xd500('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4d1e6f,null))[_0xd500('0x29')](function(_0x5d3283){if(_0x5d3283){_0x527506=_0x5d3283;_0x594931['model']=_[_0xd500('0x3a')](db[_0xd500('0x72')][_0xd500('0x34')]);_0x594931[_0xd500('0x39')]=_[_0xd500('0x3a')](_0x2edec9[_0xd500('0x39')]);_0x594931['filters']=_[_0xd500('0x3c')](_0x594931['model'],_0x594931[_0xd500('0x39')]);_0x4ec0d5[_0xd500('0x3e')]=_[_0xd500('0x3c')](_0x594931[_0xd500('0x38')],qs[_0xd500('0x3d')](_0x2edec9['query'][_0xd500('0x3d')]));_0x4ec0d5[_0xd500('0x3e')]=_0x4ec0d5[_0xd500('0x3e')][_0xd500('0x4b')]?_0x4ec0d5[_0xd500('0x3e')]:_0x594931['model'];_0x4ec0d5[_0xd500('0x5a')]=qs[_0xd500('0x40')](_0x2edec9[_0xd500('0x39')][_0xd500('0x40')]);_0x4ec0d5['where']=qs[_0xd500('0x3b')](_[_0xd500('0x42')](_0x2edec9[_0xd500('0x39')],_0x594931[_0xd500('0x3b')]));_0x4ec0d5['where']=_['merge'](_0x4ec0d5[_0xd500('0x41')],{'$or':[{'ListId':_0x5d3283['id']},{'ListId':null}]});if(_0x2edec9[_0xd500('0x39')]['filter']){_0x4ec0d5[_0xd500('0x41')]=_[_0xd500('0x4c')](_0x4ec0d5['where'],{'$or':_[_0xd500('0x32')](_0x4ec0d5[_0xd500('0x3e')],function(_0x4e2b45){var _0x2cbe12={};_0x2cbe12[_0x4e2b45]={'$like':'%'+_0x2edec9[_0xd500('0x39')][_0xd500('0x43')]+'%'};return _0x2cbe12;})});}_0x4ec0d5=_['merge']({},_0x4ec0d5,_0x2edec9[_0xd500('0x4d')]);return db[_0xd500('0x72')][_0xd500('0x97')](_0x4ec0d5);}})['then'](respondWithResult(_0x4d1e6f,null))['catch'](handleError(_0x4d1e6f,null));};exports[_0xd500('0x98')]=function(_0x351078,_0x407b6d){return db['CmCustomField'][_0xd500('0x97')]({'where':{'ListId':null}})[_0xd500('0x29')](handleEntityNotFound(_0x407b6d,null))[_0xd500('0x29')](function(_0x17b95c){return _0x17b95c;})[_0xd500('0x29')](respondWithResult(_0x407b6d,null))['catch'](handleError(_0x407b6d,null));};exports[_0xd500('0x99')]=function(_0xe40772,_0x18edbf,_0x314a16){return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0xe40772[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x18edbf,null))[_0xd500('0x29')](function(_0x1db175){if(_0x1db175){return _0x1db175[_0xd500('0x99')](_0xe40772[_0xd500('0x50')][_0xd500('0x64')],_['omit'](_0xe40772[_0xd500('0x50')],[_0xd500('0x64'),'id'])||{})[_0xd500('0x9a')](function(_0x1eb573){for(var _0x464580=0x0;_0x464580<_0xe40772['body'][_0xd500('0x64')]['length'];_0x464580+=0x1){socket[_0xd500('0x9b')](_0xd500('0x9c'),{'UserId':Number(_0xe40772[_0xd500('0x50')]['ids'][_0x464580]),'CmListId':Number(_0xe40772[_0xd500('0x4a')]['id'])});}return _0x1eb573;});}})[_0xd500('0x29')](respondWithResult(_0x18edbf,null))['catch'](handleError(_0x18edbf,null));};exports['removeAgents']=function(_0x4aee4d,_0x44e471,_0x390839){return db[_0xd500('0x33')][_0xd500('0x4e')]({'where':{'id':_0x4aee4d['params']['id']}})['then'](handleEntityNotFound(_0x44e471,null))[_0xd500('0x29')](function(_0xb9421e){if(_0xb9421e){return _0xb9421e[_0xd500('0x9d')](_0x4aee4d['query']['ids'])[_0xd500('0x29')](function(){if(_['isArray'](_0x4aee4d[_0xd500('0x39')]['ids'])){for(var _0x5559fb=0x0;_0x5559fb<_0x4aee4d[_0xd500('0x39')]['ids'][_0xd500('0x4b')];_0x5559fb+=0x1){socket['emit'](_0xd500('0x9e'),{'UserId':Number(_0x4aee4d[_0xd500('0x39')]['ids'][_0x5559fb]),'CmListId':Number(_0x4aee4d[_0xd500('0x4a')]['id'])});}}else{socket[_0xd500('0x9b')](_0xd500('0x9e'),{'UserId':Number(_0x4aee4d[_0xd500('0x39')][_0xd500('0x64')]),'CmListId':Number(_0x4aee4d['params']['id'])});}});}})[_0xd500('0x29')](respondWithStatusCode(_0x44e471,null))[_0xd500('0x48')](handleError(_0x44e471,null));};exports[_0xd500('0x9f')]=function(_0x27a206,_0x346b20,_0xf119cd){var _0x580b2e={};var _0xe4ceb5={};var _0x23e8a3;var _0x2ee290;return db[_0xd500('0x33')][_0xd500('0x58')]({'where':{'id':_0x27a206[_0xd500('0x4a')]['id']}})[_0xd500('0x29')](handleEntityNotFound(_0x346b20,null))[_0xd500('0x29')](function(_0x114a2d){if(_0x114a2d){_0x23e8a3=_0x114a2d;_0xe4ceb5[_0xd500('0x38')]=_[_0xd500('0x3a')](db['User'][_0xd500('0x34')]);_0xe4ceb5[_0xd500('0x39')]=_['keys'](_0x27a206[_0xd500('0x39')]);_0xe4ceb5[_0xd500('0x3b')]=_['intersection'](_0xe4ceb5[_0xd500('0x38')],_0xe4ceb5[_0xd500('0x39')]);_0x580b2e[_0xd500('0x3e')]=_[_0xd500('0x3c')](_0xe4ceb5['model'],qs[_0xd500('0x3d')](_0x27a206[_0xd500('0x39')][_0xd500('0x3d')]));_0x580b2e[_0xd500('0x3e')]=_0x580b2e['attributes'][_0xd500('0x4b')]?_0x580b2e[_0xd500('0x3e')]:_0xe4ceb5[_0xd500('0x38')];_0x580b2e[_0xd500('0x5a')]=qs['sort'](_0x27a206['query'][_0xd500('0x40')]);_0x580b2e[_0xd500('0x41')]=qs[_0xd500('0x3b')](_[_0xd500('0x42')](_0x27a206[_0xd500('0x39')],_0xe4ceb5[_0xd500('0x3b')]));if(_0x27a206[_0xd500('0x39')][_0xd500('0x43')]){_0x580b2e['where']=_[_0xd500('0x4c')](_0x580b2e['where'],{'$or':_[_0xd500('0x32')](_0x580b2e['attributes'],function(_0x34a3ae){var _0xd044f7={};_0xd044f7[_0x34a3ae]={'$like':'%'+_0x27a206['query'][_0xd500('0x43')]+'%'};return _0xd044f7;})});}_0x580b2e=_[_0xd500('0x4c')]({},_0x580b2e,_0x27a206[_0xd500('0x4d')]);return _0x23e8a3[_0xd500('0x9f')](_0x580b2e);}})[_0xd500('0x29')](function(_0x56aa88){if(_0x56aa88){_0x2ee290=_0x56aa88[_0xd500('0x4b')];if(!_0x27a206[_0xd500('0x39')]['hasOwnProperty'](_0xd500('0x59'))){_0x580b2e['limit']=qs[_0xd500('0x22')](_0x27a206[_0xd500('0x39')][_0xd500('0x22')]);_0x580b2e['offset']=qs[_0xd500('0x21')](_0x27a206[_0xd500('0x39')][_0xd500('0x21')]);}return _0x23e8a3[_0xd500('0x9f')](_0x580b2e);}})[_0xd500('0x29')](function(_0x4233ca){if(_0x4233ca){return _0x4233ca?{'count':_0x2ee290,'rows':_0x4233ca}:null;}})[_0xd500('0x29')](respondWithResult(_0x346b20,null))[_0xd500('0x48')](handleError(_0x346b20,null));};function handleQuery(_0x2c779d){logger['info'](_0x2c779d);return db[_0xd500('0x93')][_0xd500('0x39')](_0x2c779d)[_0xd500('0x9a')](function(_0xd3b381){csv_results['push'](_0xd3b381);})[_0xd500('0x48')](function(_0x1f5d89){logger[_0xd500('0x2e')](_0x1f5d89[_0xd500('0x68')]);});}
\ No newline at end of file
+var _0x0915=['to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','localhost','redis','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','get','Lists','error','stack','name','send','map','CmList','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','merge','VIRTUAL','options','include','findAll','catch','params','rawAttributes','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','ListId','getDispositions','findOne','Disposition','hasOwnProperty','order','pick','filter','removeDispositions','ids','addContacts','CmContact','isArray','tags','join','push','omit','success','dataValues','getContacts','CustomFields','concat','ContactItemType','CmCustomField','alias','select','from','cm_contacts','c.deletedAt\x20is\x20null','distinct','c.cf_','customField_','field','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','description','cm_contact_has_items','description_additionalPhone_','toString','isEmpty','writeFileSync','format','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','setHeader','download','/tmp/list_%d_%s.csv','addCustomField','transaction','Sequelize','TEXT','text','number','switch','defaultValue','sequelize','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','spread','message','eml-format','rimraf','request-promise','bluebird','util','sox'];(function(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0x0915,0x90));var _0x5091=function(_0x3cb152,_0x57eb54){_0x3cb152=_0x3cb152-0x0;var _0x4f54c3=_0x0915[_0x3cb152];return _0x4f54c3;};'use strict';var emlformat=require(_0x5091('0x0'));var rimraf=require(_0x5091('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5091('0x2'));var moment=require('moment');var BPromise=require(_0x5091('0x3'));var Mustache=require('mustache');var util=require(_0x5091('0x4'));var path=require('path');var sox=require(_0x5091('0x5'));var csv=require(_0x5091('0x6'));var ejs=require(_0x5091('0x7'));var fs=require('fs');var fs_extra=require(_0x5091('0x8'));var _=require(_0x5091('0x9'));var squel=require(_0x5091('0xa'));var crypto=require('crypto');var jsforce=require(_0x5091('0xb'));var deskjs=require(_0x5091('0xc'));var toCsv=require(_0x5091('0x6'));var querystring=require(_0x5091('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5091('0xe'));var as=require(_0x5091('0xf'));var hardwareService=require(_0x5091('0x10'));var logger=require(_0x5091('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x5091('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x5091('0x13'))['db'];var csv_results;config['redis']=_['defaults'](config['redis'],{'host':_0x5091('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5091('0x15')]));require('./cmList.socket')['register'](socket);function respondWithStatusCode(_0x1c7ed6,_0x4e41a6){_0x4e41a6=_0x4e41a6||0xcc;return function(_0x117540){if(_0x117540){return _0x1c7ed6[_0x5091('0x16')](_0x4e41a6);}return _0x1c7ed6[_0x5091('0x17')](_0x4e41a6)[_0x5091('0x18')]();};}function respondWithResult(_0x12f6de,_0x2ff856){_0x2ff856=_0x2ff856||0xc8;return function(_0x10cccb){if(_0x10cccb){return _0x12f6de[_0x5091('0x17')](_0x2ff856)['json'](_0x10cccb);}};}function respondWithFilteredResult(_0xc7f62f,_0x46f29a){return function(_0x4c572e){if(_0x4c572e){var _0x79206d=typeof _0x46f29a[_0x5091('0x19')]===_0x5091('0x1a')&&typeof _0x46f29a[_0x5091('0x1b')]===_0x5091('0x1a');var _0x5bf1ca=_0x4c572e[_0x5091('0x1c')];var _0x34fc88=_0x79206d?0x0:_0x46f29a[_0x5091('0x19')];var _0x92e0af=_0x79206d?_0x4c572e[_0x5091('0x1c')]:_0x46f29a['offset']+_0x46f29a[_0x5091('0x1b')];var _0x15d5c0;if(_0x92e0af>=_0x5bf1ca){_0x92e0af=_0x5bf1ca;_0x15d5c0=0xc8;}else{_0x15d5c0=0xce;}_0xc7f62f[_0x5091('0x17')](_0x15d5c0);return _0xc7f62f[_0x5091('0x1d')](_0x5091('0x1e'),_0x34fc88+'-'+_0x92e0af+'/'+_0x5bf1ca)[_0x5091('0x1f')](_0x4c572e);}return null;};}function patchUpdates(_0x50288e){return function(_0x5c334c){try{jsonpatch['apply'](_0x5c334c,_0x50288e,!![]);}catch(_0x25a5c7){return BPromise['reject'](_0x25a5c7);}return _0x5c334c[_0x5091('0x20')]();};}function saveUpdates(_0x19c59e,_0x251b7a){return function(_0x1f0fb8){if(_0x1f0fb8){return _0x1f0fb8[_0x5091('0x21')](_0x19c59e)[_0x5091('0x22')](function(_0x32fc2b){return _0x32fc2b;});}return null;};}function removeEntity(_0x15fc2b,_0x466e4b){return function(_0x2780c0){if(_0x2780c0){return _0x2780c0[_0x5091('0x23')]()['then'](function(){var _0x3de454=_0x2780c0[_0x5091('0x24')]({'plain':!![]});var _0x79c9c7=_0x5091('0x25');return db['UserProfileResource'][_0x5091('0x23')]({'where':{'type':_0x79c9c7,'resourceId':_0x3de454['id']}})[_0x5091('0x22')](function(){return _0x2780c0;});})[_0x5091('0x22')](function(){_0x15fc2b['status'](0xcc)[_0x5091('0x18')]();});}};}function handleEntityNotFound(_0x2598ce,_0x2475fc){return function(_0x3241f8){if(!_0x3241f8){_0x2598ce[_0x5091('0x16')](0x194);}return _0x3241f8;};}function handleError(_0x12542d,_0x20007c){_0x20007c=_0x20007c||0x1f4;return function(_0x59566a){logger[_0x5091('0x26')](_0x59566a[_0x5091('0x27')]);if(_0x59566a[_0x5091('0x28')]){delete _0x59566a['name'];}_0x12542d[_0x5091('0x17')](_0x20007c)[_0x5091('0x29')](_0x59566a);};}exports['index']=function(_0x3b4dc3,_0x2a081e){var _0x3a757d={},_0x5153cd={},_0x457433={'count':0x0,'rows':[]};var _0x5a91b8=_[_0x5091('0x2a')](db[_0x5091('0x2b')]['rawAttributes'],function(_0x2e0b6a){return{'name':_0x2e0b6a[_0x5091('0x2c')],'type':_0x2e0b6a[_0x5091('0x2d')][_0x5091('0x2e')]};});_0x5153cd[_0x5091('0x2f')]=_[_0x5091('0x2a')](_0x5a91b8,_0x5091('0x28'));_0x5153cd['query']=_[_0x5091('0x30')](_0x3b4dc3[_0x5091('0x31')]);_0x5153cd[_0x5091('0x32')]=_[_0x5091('0x33')](_0x5153cd[_0x5091('0x2f')],_0x5153cd[_0x5091('0x31')]);_0x3a757d[_0x5091('0x34')]=_['intersection'](_0x5153cd[_0x5091('0x2f')],qs[_0x5091('0x35')](_0x3b4dc3[_0x5091('0x31')][_0x5091('0x35')]));_0x3a757d[_0x5091('0x34')]=_0x3a757d[_0x5091('0x34')][_0x5091('0x36')]?_0x3a757d['attributes']:_0x5153cd['model'];if(!_0x3b4dc3[_0x5091('0x31')]['hasOwnProperty'](_0x5091('0x37'))){_0x3a757d[_0x5091('0x1b')]=qs[_0x5091('0x1b')](_0x3b4dc3[_0x5091('0x31')]['limit']);_0x3a757d['offset']=qs['offset'](_0x3b4dc3[_0x5091('0x31')][_0x5091('0x19')]);}_0x3a757d['order']=qs[_0x5091('0x38')](_0x3b4dc3[_0x5091('0x31')]['sort']);_0x3a757d[_0x5091('0x39')]=qs[_0x5091('0x32')](_['pick'](_0x3b4dc3['query'],_0x5153cd[_0x5091('0x32')]),_0x5a91b8);if(_0x3b4dc3[_0x5091('0x31')]['filter']){_0x3a757d[_0x5091('0x39')]=_[_0x5091('0x3a')](_0x3a757d[_0x5091('0x39')],{'$or':_[_0x5091('0x2a')](_0x5a91b8,function(_0x212eeb){if(_0x212eeb['type']!==_0x5091('0x3b')){var _0x5bddf6={};_0x5bddf6[_0x212eeb[_0x5091('0x28')]]={'$like':'%'+_0x3b4dc3[_0x5091('0x31')]['filter']+'%'};return _0x5bddf6;}})});}_0x3a757d=_[_0x5091('0x3a')]({},_0x3a757d,_0x3b4dc3[_0x5091('0x3c')]);var _0x3c4d39={'where':_0x3a757d['where']};return db[_0x5091('0x2b')][_0x5091('0x1c')](_0x3c4d39)[_0x5091('0x22')](function(_0x559b12){_0x457433[_0x5091('0x1c')]=_0x559b12;if(_0x3b4dc3['query']['includeAll']){_0x3a757d[_0x5091('0x3d')]=[{'all':!![]}];}return db[_0x5091('0x2b')][_0x5091('0x3e')](_0x3a757d);})[_0x5091('0x22')](function(_0x2ca36b){_0x457433['rows']=_0x2ca36b;return _0x457433;})['then'](respondWithFilteredResult(_0x2a081e,_0x3a757d))[_0x5091('0x3f')](handleError(_0x2a081e,null));};exports['show']=function(_0x429707,_0x4ef44b){var _0x55c77d={'raw':![],'where':{'id':_0x429707[_0x5091('0x40')]['id']}},_0x28e229={};_0x28e229[_0x5091('0x2f')]=_[_0x5091('0x30')](db['CmList'][_0x5091('0x41')]);_0x28e229[_0x5091('0x31')]=_[_0x5091('0x30')](_0x429707[_0x5091('0x31')]);_0x28e229[_0x5091('0x32')]=_[_0x5091('0x33')](_0x28e229['model'],_0x28e229['query']);_0x55c77d[_0x5091('0x34')]=_[_0x5091('0x33')](_0x28e229[_0x5091('0x2f')],qs[_0x5091('0x35')](_0x429707[_0x5091('0x31')][_0x5091('0x35')]));_0x55c77d[_0x5091('0x34')]=_0x55c77d[_0x5091('0x34')][_0x5091('0x36')]?_0x55c77d[_0x5091('0x34')]:_0x28e229[_0x5091('0x2f')];if(_0x429707['query'][_0x5091('0x42')]){_0x55c77d[_0x5091('0x3d')]=[{'all':!![]}];}_0x55c77d=_[_0x5091('0x3a')]({},_0x55c77d,_0x429707[_0x5091('0x3c')]);return db[_0x5091('0x2b')][_0x5091('0x43')](_0x55c77d)[_0x5091('0x22')](handleEntityNotFound(_0x4ef44b,null))[_0x5091('0x22')](respondWithResult(_0x4ef44b,null))[_0x5091('0x3f')](handleError(_0x4ef44b,null));};exports['create']=function(_0x42a45d,_0x5c9366){return db[_0x5091('0x2b')][_0x5091('0x44')](_0x42a45d['body'],{})[_0x5091('0x22')](function(_0x4d2268){var _0x5404d1=_0x42a45d['user'][_0x5091('0x24')]({'plain':!![]});if(!_0x5404d1)throw new Error(_0x5091('0x45'));if(_0x5404d1['role']===_0x5091('0x46')){var _0x2a141d=_0x4d2268[_0x5091('0x24')]({'plain':!![]});var _0x276ed7=_0x5091('0x25');return db[_0x5091('0x47')]['find']({'where':{'name':_0x276ed7,'userProfileId':_0x5404d1[_0x5091('0x48')]},'raw':!![]})[_0x5091('0x22')](function(_0x37471a){if(_0x37471a&&_0x37471a[_0x5091('0x49')]===0x0){return db[_0x5091('0x4a')][_0x5091('0x44')]({'name':_0x2a141d[_0x5091('0x28')],'resourceId':_0x2a141d['id'],'type':_0x37471a[_0x5091('0x28')],'sectionId':_0x37471a['id']},{})['then'](function(){return _0x4d2268;});}else{return _0x4d2268;}})[_0x5091('0x3f')](function(_0x3b0967){logger['error'](_0x5091('0x4b'),_0x3b0967);throw _0x3b0967;});}return _0x4d2268;})[_0x5091('0x22')](respondWithResult(_0x5c9366,0xc9))[_0x5091('0x3f')](handleError(_0x5c9366,null));};exports[_0x5091('0x21')]=function(_0x326883,_0x5afcd7){if(_0x326883[_0x5091('0x4c')]['id']){delete _0x326883[_0x5091('0x4c')]['id'];}return db[_0x5091('0x2b')][_0x5091('0x43')]({'where':{'id':_0x326883[_0x5091('0x40')]['id']}})['then'](handleEntityNotFound(_0x5afcd7,null))['then'](saveUpdates(_0x326883[_0x5091('0x4c')],null))['then'](respondWithResult(_0x5afcd7,null))[_0x5091('0x3f')](handleError(_0x5afcd7,null));};exports[_0x5091('0x23')]=function(_0x45ac33,_0xfb84fa){return db[_0x5091('0x2b')][_0x5091('0x43')]({'where':{'id':_0x45ac33[_0x5091('0x40')]['id']}})[_0x5091('0x22')](handleEntityNotFound(_0xfb84fa,null))['then'](removeEntity(_0xfb84fa,null))[_0x5091('0x3f')](handleError(_0xfb84fa,null));};exports['describe']=function(_0x41ec64,_0x42fada){return db['CmList'][_0x5091('0x4d')]()['then'](respondWithResult(_0x42fada,null))['catch'](handleError(_0x42fada,null));};exports['addDisposition']=function(_0x493dd0,_0x52c414,_0x2b10cc){if(_0x493dd0[_0x5091('0x4c')]['id']){delete _0x493dd0['body']['id'];}return db[_0x5091('0x2b')][_0x5091('0x43')]({'where':{'id':_0x493dd0['params']['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x52c414,null))[_0x5091('0x22')](function(_0x14ba7a){if(_0x14ba7a){_0x493dd0[_0x5091('0x4c')][_0x5091('0x4e')]=_0x14ba7a['id'];return db['Disposition']['create'](_0x493dd0[_0x5091('0x4c')]);}})['then'](respondWithResult(_0x52c414,null))['catch'](handleError(_0x52c414,null));};exports[_0x5091('0x4f')]=function(_0x5da62e,_0x4a0a9b,_0x59e13b){var _0x3cca6e={'raw':![],'where':{}};var _0x279c47={};var _0x3d24f9={'count':0x0,'rows':[]};return db[_0x5091('0x2b')][_0x5091('0x50')]({'where':{'id':_0x5da62e['params']['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x4a0a9b,null))['then'](function(_0x20ff5c){if(_0x20ff5c){_0x279c47['model']=_[_0x5091('0x30')](db[_0x5091('0x51')][_0x5091('0x41')]);_0x279c47[_0x5091('0x31')]=_['keys'](_0x5da62e[_0x5091('0x31')]);_0x279c47[_0x5091('0x32')]=_[_0x5091('0x33')](_0x279c47[_0x5091('0x2f')],_0x279c47[_0x5091('0x31')]);_0x3cca6e['attributes']=_['intersection'](_0x279c47[_0x5091('0x2f')],qs[_0x5091('0x35')](_0x5da62e[_0x5091('0x31')][_0x5091('0x35')]));_0x3cca6e[_0x5091('0x34')]=_0x3cca6e['attributes'][_0x5091('0x36')]?_0x3cca6e[_0x5091('0x34')]:_0x279c47['model'];if(!_0x5da62e['query'][_0x5091('0x52')](_0x5091('0x37'))){_0x3cca6e[_0x5091('0x1b')]=qs[_0x5091('0x1b')](_0x5da62e['query']['limit']);_0x3cca6e[_0x5091('0x19')]=qs[_0x5091('0x19')](_0x5da62e[_0x5091('0x31')][_0x5091('0x19')]);}_0x3cca6e[_0x5091('0x53')]=qs[_0x5091('0x38')](_0x5da62e[_0x5091('0x31')]['sort']);_0x3cca6e[_0x5091('0x39')]=qs[_0x5091('0x32')](_[_0x5091('0x54')](_0x5da62e[_0x5091('0x31')],_0x279c47[_0x5091('0x32')]));_0x3cca6e['where']['ListId']=_0x20ff5c['id'];if(_0x5da62e['query'][_0x5091('0x55')]){_0x3cca6e['where']=_[_0x5091('0x3a')](_0x3cca6e[_0x5091('0x39')],{'$or':_[_0x5091('0x2a')](_0x3cca6e[_0x5091('0x34')],function(_0x2b97d0){var _0x3c1a90={};_0x3c1a90[_0x2b97d0]={'$like':'%'+_0x5da62e[_0x5091('0x31')]['filter']+'%'};return _0x3c1a90;})});}_0x3cca6e=_[_0x5091('0x3a')]({},_0x3cca6e,_0x5da62e[_0x5091('0x3c')]);return db[_0x5091('0x51')]['count']({'where':_0x3cca6e[_0x5091('0x39')]})['then'](function(_0x308aab){_0x3d24f9[_0x5091('0x1c')]=_0x308aab;if(_0x5da62e[_0x5091('0x31')][_0x5091('0x42')]){_0x3cca6e['include']=[{'all':!![]}];}return db[_0x5091('0x51')][_0x5091('0x3e')](_0x3cca6e);})['then'](function(_0x220298){_0x3d24f9['rows']=_0x220298;return _0x3d24f9;});}})[_0x5091('0x22')](respondWithFilteredResult(_0x4a0a9b,_0x3cca6e))['catch'](handleError(_0x4a0a9b,null));};exports[_0x5091('0x56')]=function(_0x3d00a3,_0x10757c,_0x4c94e){return db[_0x5091('0x2b')]['find']({'where':{'id':_0x3d00a3['params']['id']}})['then'](handleEntityNotFound(_0x10757c,null))[_0x5091('0x22')](function(_0x3a0a8c){if(_0x3a0a8c){return _0x3a0a8c[_0x5091('0x56')](_0x3d00a3[_0x5091('0x31')][_0x5091('0x57')]);}})[_0x5091('0x22')](respondWithStatusCode(_0x10757c,null))[_0x5091('0x3f')](handleError(_0x10757c,null));};exports[_0x5091('0x58')]=function(_0x490abb,_0x1d08bf,_0x193a45){return db[_0x5091('0x2b')]['find']({'where':{'id':_0x490abb[_0x5091('0x40')]['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x1d08bf,null))[_0x5091('0x22')](function(_0x2bc979){if(_0x2bc979){var _0x1c5b8b=[];var _0x396cc6={'success':[],'errors':[]};return db[_0x5091('0x59')][_0x5091('0x4d')]()[_0x5091('0x22')](function(_0x4fcfb7){if(_0x490abb[_0x5091('0x4c')]['tags']&&_[_0x5091('0x5a')](_0x490abb[_0x5091('0x4c')][_0x5091('0x5b')])){if(_0x490abb[_0x5091('0x4c')]['tags']['length']){_0x490abb[_0x5091('0x4c')][_0x5091('0x5b')]=_0x490abb[_0x5091('0x4c')]['tags'][_0x5091('0x5c')](';')+';';}else{_0x490abb[_0x5091('0x4c')]['tags']=null;}}else{_0x490abb[_0x5091('0x4c')]['tags']=null;}if(_0x490abb[_0x5091('0x4c')]&&_[_0x5091('0x5a')](_0x490abb['body'])){for(var _0x5a50bd=0x0;_0x5a50bd<_0x490abb[_0x5091('0x4c')][_0x5091('0x36')];_0x5a50bd+=0x1){_0x490abb[_0x5091('0x4c')][_0x5a50bd][_0x5091('0x4e')]=_0x490abb[_0x5091('0x40')]['id'];_0x1c5b8b[_0x5091('0x5d')](_0x490abb[_0x5091('0x4c')][_0x5a50bd]);}return BPromise['each'](_0x1c5b8b,function(_0x22a586){return db[_0x5091('0x59')][_0x5091('0x44')](_[_0x5091('0x5e')](_0x22a586,[_0x5091('0x57'),'id'])||{},{'fields':_[_0x5091('0x30')](_0x4fcfb7),'raw':!![]})[_0x5091('0x22')](function(_0x1334ef){_0x396cc6[_0x5091('0x5f')]['push'](_0x1334ef[_0x5091('0x60')]);})[_0x5091('0x3f')](function(_0x44da35){_0x396cc6['errors'][_0x5091('0x5d')]({'data':_0x22a586,'error':_0x44da35['message']});});})['then'](function(_0x366892){return _0x396cc6;})['catch'](function(_0x495dea){return _0x495dea;});}else{_0x1d08bf[_0x5091('0x17')](0x190)[_0x5091('0x1f')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0x5091('0x22')](respondWithResult(_0x1d08bf,null))[_0x5091('0x3f')](handleError(_0x1d08bf,null));};exports[_0x5091('0x61')]=function(_0x26b282,_0x286e7a,_0x5ab78a){var _0x2a615f;return db['CmList']['find']({'where':{'id':_0x26b282[_0x5091('0x40')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x5091('0x62')}]})[_0x5091('0x22')](handleEntityNotFound(_0x286e7a,null))['then'](function(_0x3d8823){if(_0x3d8823){_0x2a615f=_0x3d8823;return db[_0x5091('0x59')][_0x5091('0x41')];}})[_0x5091('0x22')](function(_0x54b934){if(_0x54b934){var _0x3a0f9f={};var _0x3fce12={};_0x3fce12['model']=_[_0x5091('0x63')](_[_0x5091('0x30')](_0x54b934),_[_0x5091('0x2a')](_0x2a615f[_0x5091('0x62')],function(_0x600340){return util['format']('cf_%d',_0x600340['id']);}));_0x3fce12[_0x5091('0x31')]=_['keys'](_0x26b282[_0x5091('0x31')]);_0x3fce12[_0x5091('0x32')]=_[_0x5091('0x33')](_0x3fce12[_0x5091('0x2f')],_0x3fce12[_0x5091('0x31')]);_0x3a0f9f[_0x5091('0x34')]=_[_0x5091('0x33')](_0x3fce12['model'],qs[_0x5091('0x35')](_0x26b282[_0x5091('0x31')][_0x5091('0x35')]));_0x3a0f9f['attributes']=_0x3a0f9f[_0x5091('0x34')][_0x5091('0x36')]?_0x3a0f9f['attributes']:_0x3fce12[_0x5091('0x2f')];if(!_0x26b282[_0x5091('0x31')][_0x5091('0x52')]('nolimit')){_0x3a0f9f['limit']=qs[_0x5091('0x1b')](_0x26b282['query']['limit']);_0x3a0f9f[_0x5091('0x19')]=qs[_0x5091('0x19')](_0x26b282[_0x5091('0x31')][_0x5091('0x19')]);}_0x3a0f9f['order']=qs['sort'](_0x26b282[_0x5091('0x31')]['sort']);_0x3a0f9f[_0x5091('0x39')]=qs[_0x5091('0x32')](_[_0x5091('0x54')](_0x26b282['query'],_0x3fce12[_0x5091('0x32')]));_0x3a0f9f['raw']=!![];if(_0x26b282[_0x5091('0x31')][_0x5091('0x55')]){_0x3a0f9f[_0x5091('0x39')]=_[_0x5091('0x3a')](_0x3a0f9f['where'],{'$or':_[_0x5091('0x2a')](_0x3a0f9f[_0x5091('0x34')],function(_0x267c4b){var _0x1e9335={};_0x1e9335[_0x267c4b]={'$like':'%'+_0x26b282[_0x5091('0x31')][_0x5091('0x55')]+'%'};return _0x1e9335;})});}_0x3a0f9f=_[_0x5091('0x3a')]({},_0x3a0f9f,_0x26b282['options']);return _0x2a615f[_0x5091('0x61')](_0x3a0f9f);}})[_0x5091('0x22')](respondWithResult(_0x286e7a,null))['catch'](handleError(_0x286e7a,null));};exports['getContactsCsv']=function(_0x54c5e0,_0x387f2f,_0xe6853b){var _0x80ee31;var _0x201240;var _0x28a92c;var _0x2dac1a=_0x54c5e0[_0x5091('0x40')]['id'];csv_results=[];return db[_0x5091('0x64')]['findAll']({'attributes':['id',_0x5091('0x28')],'raw':!![],'order':['OrderBy']})[_0x5091('0x22')](function(_0x5d2c44){_0x80ee31=_0x5d2c44;var _0x1f9420=_[_0x5091('0x30')](db['CmContact'][_0x5091('0x41')]);return db[_0x5091('0x65')][_0x5091('0x3e')]({'raw':!![],'attributes':['id',_0x5091('0x66')]})[_0x5091('0x22')](function(_0x306906){_0x201240=_0x306906;var _0x4f760f=squel[_0x5091('0x67')]()[_0x5091('0x35')](_0x1f9420)[_0x5091('0x68')](_0x5091('0x69'),'c')[_0x5091('0x39')]('c.ListId\x20=\x20?',_0x2dac1a)[_0x5091('0x39')](_0x5091('0x6a'))[_0x5091('0x6b')]();for(var _0x2e68f2=0x0;_0x2e68f2<_0x201240[_0x5091('0x36')];_0x2e68f2++){_0x4f760f['field'](_0x5091('0x6c')+_0x201240[_0x2e68f2]['id'],_0x5091('0x6d')+_0x201240[_0x2e68f2][_0x5091('0x66')]);}for(var _0x2e68f2=0x0;_0x2e68f2<_0x80ee31[_0x5091('0x36')];_0x2e68f2++){_0x4f760f[_0x5091('0x6e')](squel[_0x5091('0x67')]()[_0x5091('0x6e')]('item')[_0x5091('0x68')]('cm_contact_has_items')[_0x5091('0x39')](_0x5091('0x6f'),_0x80ee31[_0x2e68f2]['id'])[_0x5091('0x39')](_0x5091('0x70')),_0x5091('0x71')+_0x80ee31[_0x2e68f2][_0x5091('0x28')]);_0x4f760f[_0x5091('0x6e')](squel[_0x5091('0x67')]()['field'](_0x5091('0x72'))[_0x5091('0x68')](_0x5091('0x73'))[_0x5091('0x39')](_0x5091('0x6f'),_0x80ee31[_0x2e68f2]['id'])[_0x5091('0x39')](_0x5091('0x70')),_0x5091('0x74')+_0x80ee31[_0x2e68f2][_0x5091('0x28')]);}var _0x210cb2=[];_0x210cb2['push'](_0x4f760f[_0x5091('0x75')]());BPromise['each'](_0x210cb2,handleQuery)[_0x5091('0x22')](function(_0x4eb435){handleQuery(_0x4f760f[_0x5091('0x75')]());var _0x16d34e=csv_results[0x0];if(!_[_0x5091('0x76')](_0x16d34e)){var _0x5a2bc2=toCsv(_0x16d34e);var _0x1c7d3b=Date['now']();fs[_0x5091('0x77')](util[_0x5091('0x78')]('/tmp/list_%d_%s.csv',_0x2dac1a,_0x1c7d3b),_0x5a2bc2);_0x387f2f['setHeader'](_0x5091('0x79'),_0x5091('0x7a')+util['format'](_0x5091('0x7b'),_0x2dac1a,_0x1c7d3b));_0x387f2f[_0x5091('0x7c')]('Content-type','text/csv');return _0x387f2f[_0x5091('0x7d')](util[_0x5091('0x78')](_0x5091('0x7e'),_0x2dac1a,_0x1c7d3b));}else{return _0x387f2f[_0x5091('0x16')](0xcc);}});});});};exports[_0x5091('0x7f')]=function(_0x33d9e4,_0x38e409,_0x41b10e){var _0x582a09;delete _0x33d9e4[_0x5091('0x4c')]['id'];return db[_0x5091('0x2b')]['findOne']({'where':{'id':_0x33d9e4['params']['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x38e409,null))['then'](function(_0x292de9){if(_0x292de9){return db['sequelize'][_0x5091('0x80')](function(_0x2b4e4f){return db[_0x5091('0x65')][_0x5091('0x44')](_0x33d9e4['body'],{'transaction':_0x2b4e4f})[_0x5091('0x22')](function(_0x508fe5){_0x582a09=_0x508fe5;return _0x292de9['addCustomFields'](_0x508fe5,{'transaction':_0x2b4e4f});})[_0x5091('0x22')](function(){var _0x31ad1b={'type':db[_0x5091('0x81')][_0x5091('0x82')],'transaction':_0x2b4e4f};switch(_0x33d9e4[_0x5091('0x4c')]['type']){case _0x5091('0x83'):_0x31ad1b['type']=db[_0x5091('0x81')]['TEXT'];break;case _0x5091('0x84'):_0x31ad1b[_0x5091('0x2d')]=db[_0x5091('0x81')]['INTEGER'];break;case _0x5091('0x85'):_0x31ad1b[_0x5091('0x2d')]=db['Sequelize']['BOOLEAN'];_0x31ad1b[_0x5091('0x86')]=![];break;default:}return db[_0x5091('0x87')]['queryInterface'][_0x5091('0x88')](_0x5091('0x69'),util[_0x5091('0x78')](_0x5091('0x89'),_0x582a09['id']),_0x31ad1b);})[_0x5091('0x22')](function(){return _0x582a09;});});}})['then'](respondWithResult(_0x38e409,null))['catch'](handleError(_0x38e409,null));};exports[_0x5091('0x8a')]=function(_0x46caf9,_0x20423c,_0x469ff7){var _0x105af6={};var _0x21eef6={};var _0x1cbdb6;var _0x5ef59d;return db[_0x5091('0x2b')][_0x5091('0x50')]({'where':{'id':_0x46caf9[_0x5091('0x40')]['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x20423c,null))[_0x5091('0x22')](function(_0x519393){if(_0x519393){_0x1cbdb6=_0x519393;_0x21eef6[_0x5091('0x2f')]=_[_0x5091('0x30')](db[_0x5091('0x65')][_0x5091('0x41')]);_0x21eef6[_0x5091('0x31')]=_[_0x5091('0x30')](_0x46caf9[_0x5091('0x31')]);_0x21eef6[_0x5091('0x32')]=_[_0x5091('0x33')](_0x21eef6[_0x5091('0x2f')],_0x21eef6['query']);_0x105af6[_0x5091('0x34')]=_[_0x5091('0x33')](_0x21eef6['model'],qs['fields'](_0x46caf9[_0x5091('0x31')]['fields']));_0x105af6[_0x5091('0x34')]=_0x105af6[_0x5091('0x34')][_0x5091('0x36')]?_0x105af6['attributes']:_0x21eef6['model'];_0x105af6[_0x5091('0x53')]=qs[_0x5091('0x38')](_0x46caf9[_0x5091('0x31')][_0x5091('0x38')]);_0x105af6['where']=qs[_0x5091('0x32')](_[_0x5091('0x54')](_0x46caf9[_0x5091('0x31')],_0x21eef6['filters']));_0x105af6['where']=_[_0x5091('0x3a')](_0x105af6[_0x5091('0x39')],{'$or':[{'ListId':_0x519393['id']},{'ListId':null}]});if(_0x46caf9['query'][_0x5091('0x55')]){_0x105af6[_0x5091('0x39')]=_[_0x5091('0x3a')](_0x105af6['where'],{'$or':_['map'](_0x105af6[_0x5091('0x34')],function(_0x53bacc){var _0x1eaa21={};_0x1eaa21[_0x53bacc]={'$like':'%'+_0x46caf9['query']['filter']+'%'};return _0x1eaa21;})});}_0x105af6=_[_0x5091('0x3a')]({},_0x105af6,_0x46caf9[_0x5091('0x3c')]);return db[_0x5091('0x65')][_0x5091('0x8b')](_0x105af6);}})[_0x5091('0x22')](respondWithResult(_0x20423c,null))[_0x5091('0x3f')](handleError(_0x20423c,null));};exports[_0x5091('0x8c')]=function(_0x54c4ab,_0x5893c8){return db[_0x5091('0x65')][_0x5091('0x8b')]({'where':{'ListId':null}})[_0x5091('0x22')](handleEntityNotFound(_0x5893c8,null))['then'](function(_0x116d1f){return _0x116d1f;})[_0x5091('0x22')](respondWithResult(_0x5893c8,null))[_0x5091('0x3f')](handleError(_0x5893c8,null));};exports[_0x5091('0x8d')]=function(_0x242969,_0xd578a1,_0x15c87e){return db['CmList'][_0x5091('0x43')]({'where':{'id':_0x242969[_0x5091('0x40')]['id']}})[_0x5091('0x22')](handleEntityNotFound(_0xd578a1,null))[_0x5091('0x22')](function(_0x172d5b){if(_0x172d5b){return _0x172d5b[_0x5091('0x8d')](_0x242969[_0x5091('0x4c')][_0x5091('0x57')],_[_0x5091('0x5e')](_0x242969[_0x5091('0x4c')],[_0x5091('0x57'),'id'])||{})['spread'](function(_0xc6d4ce){for(var _0xc52639=0x0;_0xc52639<_0x242969['body']['ids'][_0x5091('0x36')];_0xc52639+=0x1){socket[_0x5091('0x8e')](_0x5091('0x8f'),{'UserId':Number(_0x242969[_0x5091('0x4c')][_0x5091('0x57')][_0xc52639]),'CmListId':Number(_0x242969[_0x5091('0x40')]['id'])});}return _0xc6d4ce;});}})['then'](respondWithResult(_0xd578a1,null))[_0x5091('0x3f')](handleError(_0xd578a1,null));};exports[_0x5091('0x90')]=function(_0xe22252,_0x2f215c,_0xaf492a){return db[_0x5091('0x2b')][_0x5091('0x43')]({'where':{'id':_0xe22252[_0x5091('0x40')]['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x2f215c,null))[_0x5091('0x22')](function(_0x1b7ef6){if(_0x1b7ef6){return _0x1b7ef6[_0x5091('0x90')](_0xe22252[_0x5091('0x31')][_0x5091('0x57')])[_0x5091('0x22')](function(){if(_[_0x5091('0x5a')](_0xe22252[_0x5091('0x31')][_0x5091('0x57')])){for(var _0x3942ef=0x0;_0x3942ef<_0xe22252[_0x5091('0x31')][_0x5091('0x57')][_0x5091('0x36')];_0x3942ef+=0x1){socket[_0x5091('0x8e')](_0x5091('0x91'),{'UserId':Number(_0xe22252[_0x5091('0x31')]['ids'][_0x3942ef]),'CmListId':Number(_0xe22252[_0x5091('0x40')]['id'])});}}else{socket[_0x5091('0x8e')](_0x5091('0x91'),{'UserId':Number(_0xe22252[_0x5091('0x31')][_0x5091('0x57')]),'CmListId':Number(_0xe22252[_0x5091('0x40')]['id'])});}});}})[_0x5091('0x22')](respondWithStatusCode(_0x2f215c,null))[_0x5091('0x3f')](handleError(_0x2f215c,null));};exports[_0x5091('0x92')]=function(_0x4566e3,_0x2dc69b,_0x4318a6){var _0x17fff5={};var _0x3311f0={};var _0x5ba5b8;var _0x810ca3;return db[_0x5091('0x2b')][_0x5091('0x50')]({'where':{'id':_0x4566e3['params']['id']}})[_0x5091('0x22')](handleEntityNotFound(_0x2dc69b,null))[_0x5091('0x22')](function(_0x1fd888){if(_0x1fd888){_0x5ba5b8=_0x1fd888;_0x3311f0[_0x5091('0x2f')]=_[_0x5091('0x30')](db[_0x5091('0x93')]['rawAttributes']);_0x3311f0['query']=_[_0x5091('0x30')](_0x4566e3['query']);_0x3311f0[_0x5091('0x32')]=_[_0x5091('0x33')](_0x3311f0[_0x5091('0x2f')],_0x3311f0[_0x5091('0x31')]);_0x17fff5[_0x5091('0x34')]=_[_0x5091('0x33')](_0x3311f0[_0x5091('0x2f')],qs['fields'](_0x4566e3[_0x5091('0x31')][_0x5091('0x35')]));_0x17fff5[_0x5091('0x34')]=_0x17fff5['attributes']['length']?_0x17fff5[_0x5091('0x34')]:_0x3311f0[_0x5091('0x2f')];_0x17fff5[_0x5091('0x53')]=qs['sort'](_0x4566e3[_0x5091('0x31')]['sort']);_0x17fff5['where']=qs[_0x5091('0x32')](_['pick'](_0x4566e3[_0x5091('0x31')],_0x3311f0[_0x5091('0x32')]));if(_0x4566e3['query']['filter']){_0x17fff5[_0x5091('0x39')]=_['merge'](_0x17fff5['where'],{'$or':_[_0x5091('0x2a')](_0x17fff5['attributes'],function(_0x652e88){var _0x51652d={};_0x51652d[_0x652e88]={'$like':'%'+_0x4566e3[_0x5091('0x31')][_0x5091('0x55')]+'%'};return _0x51652d;})});}_0x17fff5=_['merge']({},_0x17fff5,_0x4566e3[_0x5091('0x3c')]);return _0x5ba5b8[_0x5091('0x92')](_0x17fff5);}})[_0x5091('0x22')](function(_0x18fd82){if(_0x18fd82){_0x810ca3=_0x18fd82['length'];if(!_0x4566e3[_0x5091('0x31')]['hasOwnProperty']('nolimit')){_0x17fff5['limit']=qs[_0x5091('0x1b')](_0x4566e3[_0x5091('0x31')][_0x5091('0x1b')]);_0x17fff5['offset']=qs['offset'](_0x4566e3['query']['offset']);}return _0x5ba5b8[_0x5091('0x92')](_0x17fff5);}})[_0x5091('0x22')](function(_0x7197f5){if(_0x7197f5){return _0x7197f5?{'count':_0x810ca3,'rows':_0x7197f5}:null;}})['then'](respondWithResult(_0x2dc69b,null))[_0x5091('0x3f')](handleError(_0x2dc69b,null));};function handleQuery(_0x2ffd0b){logger['info'](_0x2ffd0b);return db[_0x5091('0x87')]['query'](_0x2ffd0b)[_0x5091('0x94')](function(_0xf3d022){csv_results[_0x5091('0x5d')](_0xf3d022);})[_0x5091('0x3f')](function(_0x4645af){logger['error'](_0x4645af[_0x5091('0x95')]);});}
\ No newline at end of file
index 778b00d..ef2f496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x326f,0xd1));var _0xf326=function(_0x1da970,_0x47a42d){_0x1da970=_0x1da970-0x0;var _0x236e3b=_0x326f[_0x1da970];return _0x236e3b;};'use strict';var EventEmitter=require(_0xf326('0x0'));var CmList=require('../../mysqldb')['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xf326('0x1')](0x0);var events={'afterCreate':_0xf326('0x2'),'afterUpdate':_0xf326('0x3'),'afterDestroy':_0xf326('0x4')};function emitEvent(_0x27e8d7){return function(_0x120a26,_0x9445c6,_0xf1c243){CmListEvents[_0xf326('0x5')](_0x27e8d7+':'+_0x120a26['id'],_0x120a26);CmListEvents[_0xf326('0x5')](_0x27e8d7,_0x120a26);_0xf1c243(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xf326('0x6')](e,emitEvent(event));}}module[_0xf326('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x3875b1,_0x47cf1a){var _0x1e9c55=function(_0xc8e89b){while(--_0xc8e89b){_0x3875b1['push'](_0x3875b1['shift']());}};_0x1e9c55(++_0x47cf1a);}(_0x7217,0x19e));var _0x7721=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0x7217[_0x38a7ac];return _0x53061a;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index c99420c..09868be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists'];(function(_0x14f1c0,_0x498ffa){var _0x453aef=function(_0x349c8a){while(--_0x349c8a){_0x14f1c0['push'](_0x14f1c0['shift']());}};_0x453aef(++_0x498ffa);}(_0x2dae,0xc3));var _0xe2da=function(_0x323d87,_0x4ef3f9){_0x323d87=_0x323d87-0x0;var _0x5e8f74=_0x2dae[_0x323d87];return _0x5e8f74;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var logger=require(_0xe2da('0x1'))(_0xe2da('0x2'));var moment=require(_0xe2da('0x3'));var BPromise=require(_0xe2da('0x4'));var rp=require(_0xe2da('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe2da('0x6'));var config=require(_0xe2da('0x7'));var attributes=require(_0xe2da('0x8'));module[_0xe2da('0x9')]=function(_0x523c60,_0x3e3e25){return _0x523c60[_0xe2da('0xa')](_0xe2da('0xb'),attributes,{'tableName':_0xe2da('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','../../config/logger','api'];(function(_0x15da28,_0x2dd3a5){var _0x2ef625=function(_0x1a1fb1){while(--_0x1a1fb1){_0x15da28['push'](_0x15da28['shift']());}};_0x2ef625(++_0x2dd3a5);}(_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':[],'timestamps':!![]});};
\ No newline at end of file
index 070ab04..cb4f0b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e17=['info','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','error','CmList,\x20%s,\x20%s','message','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./cmList.socket','register','request'];(function(_0x181113,_0x5d0712){var _0x4fad6c=function(_0x23d622){while(--_0x23d622){_0x181113['push'](_0x181113['shift']());}};_0x4fad6c(++_0x5d0712);}(_0x1e17,0x1b0));var _0x71e1=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0x1e17[_0x209ec9];return _0x129b1b;};'use strict';var _=require(_0x71e1('0x0'));var util=require(_0x71e1('0x1'));var moment=require('moment');var BPromise=require(_0x71e1('0x2'));var rs=require(_0x71e1('0x3'));var fs=require('fs');var Redis=require(_0x71e1('0x4'));var db=require(_0x71e1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x71e1('0x6'))(_0x71e1('0x7'));var config=require(_0x71e1('0x8'));var jayson=require(_0x71e1('0x9'));var client=jayson[_0x71e1('0xa')]['http']({'port':0x232a});config['redis']=_[_0x71e1('0xb')](config['redis'],{'host':_0x71e1('0xc'),'port':0x18eb});var socket=require(_0x71e1('0xd'))(new Redis(config[_0x71e1('0xe')]));require(_0x71e1('0xf'))[_0x71e1('0x10')](socket);function respondWithRpcPromise(_0x5e28be,_0x38d195,_0x52b14d){return new BPromise(function(_0x270e76,_0x4cd1e2){return client[_0x71e1('0x11')](_0x5e28be,_0x52b14d)['then'](function(_0x398145){logger[_0x71e1('0x12')]('CmList,\x20%s,\x20%s',_0x38d195,'request\x20sent');logger[_0x71e1('0x13')](_0x71e1('0x14'),_0x38d195,_0x71e1('0x15'),JSON['stringify'](_0x398145));if(_0x398145[_0x71e1('0x16')]){if(_0x398145[_0x71e1('0x16')]['code']===0x1f4){logger[_0x71e1('0x16')](_0x71e1('0x17'),_0x38d195,_0x398145[_0x71e1('0x16')][_0x71e1('0x18')]);return _0x4cd1e2(_0x398145['error']['message']);}logger[_0x71e1('0x16')](_0x71e1('0x17'),_0x38d195,_0x398145[_0x71e1('0x16')][_0x71e1('0x18')]);return _0x270e76(_0x398145[_0x71e1('0x16')][_0x71e1('0x18')]);}else{logger[_0x71e1('0x12')](_0x71e1('0x17'),_0x38d195,_0x71e1('0x15'));_0x270e76(_0x398145['result'][_0x71e1('0x18')]);}})['catch'](function(_0x7867b1){logger[_0x71e1('0x16')](_0x71e1('0x17'),_0x38d195,_0x7867b1);_0x4cd1e2(_0x7867b1);});});}
\ No newline at end of file
+var _0xdf52=['rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x45fc6a,_0x166adb){var _0x14bcfd=function(_0x3ba718){while(--_0x3ba718){_0x45fc6a['push'](_0x45fc6a['shift']());}};_0x14bcfd(++_0x166adb);}(_0xdf52,0x18b));var _0x2df5=function(_0x5213f5,_0x5cd3a6){_0x5213f5=_0x5213f5-0x0;var _0x8dfc50=_0xdf52[_0x5213f5];return _0x8dfc50;};'use strict';var _=require('lodash');var util=require(_0x2df5('0x0'));var moment=require(_0x2df5('0x1'));var BPromise=require(_0x2df5('0x2'));var rs=require(_0x2df5('0x3'));var fs=require('fs');var Redis=require(_0x2df5('0x4'));var db=require(_0x2df5('0x5'))['db'];var utils=require(_0x2df5('0x6'));var logger=require(_0x2df5('0x7'))(_0x2df5('0x8'));var config=require(_0x2df5('0x9'));var jayson=require(_0x2df5('0xa'));var client=jayson[_0x2df5('0xb')]['http']({'port':0x232a});config[_0x2df5('0xc')]=_[_0x2df5('0xd')](config['redis'],{'host':_0x2df5('0xe'),'port':0x18eb});var socket=require(_0x2df5('0xf'))(new Redis(config[_0x2df5('0xc')]));require(_0x2df5('0x10'))[_0x2df5('0x11')](socket);function respondWithRpcPromise(_0xd4dc15,_0x1fc407,_0x4d0f32){return new BPromise(function(_0x3de9f0,_0x108d55){return client[_0x2df5('0x12')](_0xd4dc15,_0x4d0f32)[_0x2df5('0x13')](function(_0x9d010f){logger[_0x2df5('0x14')](_0x2df5('0x15'),_0x1fc407,'request\x20sent');logger[_0x2df5('0x16')](_0x2df5('0x17'),_0x1fc407,_0x2df5('0x18'),JSON[_0x2df5('0x19')](_0x9d010f));if(_0x9d010f[_0x2df5('0x1a')]){if(_0x9d010f[_0x2df5('0x1a')][_0x2df5('0x1b')]===0x1f4){logger[_0x2df5('0x1a')]('CmList,\x20%s,\x20%s',_0x1fc407,_0x9d010f['error'][_0x2df5('0x1c')]);return _0x108d55(_0x9d010f[_0x2df5('0x1a')][_0x2df5('0x1c')]);}logger['error'](_0x2df5('0x15'),_0x1fc407,_0x9d010f[_0x2df5('0x1a')][_0x2df5('0x1c')]);return _0x3de9f0(_0x9d010f[_0x2df5('0x1a')][_0x2df5('0x1c')]);}else{logger['info'](_0x2df5('0x15'),_0x1fc407,_0x2df5('0x18'));_0x3de9f0(_0x9d010f[_0x2df5('0x1d')][_0x2df5('0x1c')]);}})[_0x2df5('0x1e')](function(_0x56a077){logger['error'](_0x2df5('0x15'),_0x1fc407,_0x56a077);_0x108d55(_0x56a077);});});}
\ No newline at end of file
index bd59757..5cef8f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3210=['length','cmList:','remove','update','removeListener'];(function(_0x249ca9,_0x28ccba){var _0x555d3b=function(_0x58c31d){while(--_0x58c31d){_0x249ca9['push'](_0x249ca9['shift']());}};_0x555d3b(++_0x28ccba);}(_0x3210,0xfc));var _0x0321=function(_0x2a95e5,_0x2bd3f6){_0x2a95e5=_0x2a95e5-0x0;var _0x58c81f=_0x3210[_0x2a95e5];return _0x58c81f;};'use strict';var CmListEvents=require('./cmList.events');var events=['save',_0x0321('0x0'),_0x0321('0x1')];function createListener(_0x5ba80d,_0x2b4321){return function(_0x27341a){_0x2b4321['emit'](_0x5ba80d,_0x27341a);};}function removeListener(_0x17191f,_0x57255e){return function(){CmListEvents[_0x0321('0x2')](_0x17191f,_0x57255e);};}exports['register']=function(_0x36d92b){for(var _0xa82718=0x0,_0xb933d1=events[_0x0321('0x3')];_0xa82718<_0xb933d1;_0xa82718++){var _0x4490f0=events[_0xa82718];var _0x33cc31=createListener(_0x0321('0x4')+_0x4490f0,_0x36d92b);CmListEvents['on'](_0x4490f0,_0x33cc31);}};
\ No newline at end of file
+var _0xd900=['cmList:','./cmList.events','save','remove','update','removeListener','register'];(function(_0x2dbffc,_0x310bbc){var _0x17c5c6=function(_0x10d886){while(--_0x10d886){_0x2dbffc['push'](_0x2dbffc['shift']());}};_0x17c5c6(++_0x310bbc);}(_0xd900,0x189));var _0x0d90=function(_0x32a254,_0x14e1d0){_0x32a254=_0x32a254-0x0;var _0x799afb=_0xd900[_0x32a254];return _0x799afb;};'use strict';var CmListEvents=require(_0x0d90('0x0'));var events=[_0x0d90('0x1'),_0x0d90('0x2'),_0x0d90('0x3')];function createListener(_0xd34b01,_0x399709){return function(_0x162c34){_0x399709['emit'](_0xd34b01,_0x162c34);};}function removeListener(_0x481f34,_0x338f9c){return function(){CmListEvents[_0x0d90('0x4')](_0x481f34,_0x338f9c);};}exports[_0x0d90('0x5')]=function(_0x212c18){for(var _0x888949=0x0,_0x5cfbc8=events['length'];_0x888949<_0x5cfbc8;_0x888949++){var _0x3e10a6=events[_0x888949];var _0x54a4c5=createListener(_0x0d90('0x6')+_0x3e10a6,_0x212c18);CmListEvents['on'](_0x3e10a6,_0x54a4c5);}};
\ No newline at end of file
index 704bd14..f342bcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x072c=['addAgents','put','delete','destroy','removeDispositions','exports','util','path','Router','fs-extra','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','getDispositions','getContacts','/:id/contacts/csv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','/:id/contacts','addContacts','addCustomField'];(function(_0x5f1617,_0x46277b){var _0x3af5da=function(_0x15b934){while(--_0x15b934){_0x5f1617['push'](_0x5f1617['shift']());}};_0x3af5da(++_0x46277b);}(_0x072c,0x10e));var _0xc072=function(_0x450717,_0x199f3b){_0x450717=_0x450717-0x0;var _0x621ad3=_0x072c[_0x450717];return _0x621ad3;};'use strict';var multer=require('multer');var util=require(_0xc072('0x0'));var path=require(_0xc072('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc072('0x2')]();var fs_extra=require(_0xc072('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc072('0x4'));var controller=require(_0xc072('0x5'));router[_0xc072('0x6')]('/',auth[_0xc072('0x7')](),controller[_0xc072('0x8')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xc072('0x9')]);router[_0xc072('0x6')](_0xc072('0xa'),auth[_0xc072('0x7')](),controller[_0xc072('0xb')]);router[_0xc072('0x6')](_0xc072('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xc072('0x6')](_0xc072('0xd'),auth[_0xc072('0x7')](),controller[_0xc072('0xe')]);router['get']('/:id/contacts',auth[_0xc072('0x7')](),controller[_0xc072('0xf')]);router[_0xc072('0x6')](_0xc072('0x10'),auth['isAuthenticated'](),controller['getContactsCsv']);router[_0xc072('0x6')](_0xc072('0x11'),auth[_0xc072('0x7')](),controller[_0xc072('0x12')]);router[_0xc072('0x6')](_0xc072('0x13'),auth[_0xc072('0x7')](),controller[_0xc072('0x14')]);router[_0xc072('0x15')]('/',auth['isAuthenticated'](),controller[_0xc072('0x16')]);router[_0xc072('0x15')](_0xc072('0xd'),auth['isAuthenticated'](),controller[_0xc072('0x17')]);router['post'](_0xc072('0x18'),auth[_0xc072('0x7')](),controller[_0xc072('0x19')]);router[_0xc072('0x15')](_0xc072('0x11'),auth[_0xc072('0x7')](),controller[_0xc072('0x1a')]);router[_0xc072('0x15')](_0xc072('0x13'),auth[_0xc072('0x7')](),controller[_0xc072('0x1b')]);router[_0xc072('0x1c')](_0xc072('0xc'),auth[_0xc072('0x7')](),controller['update']);router[_0xc072('0x1d')](_0xc072('0xc'),auth[_0xc072('0x7')](),controller[_0xc072('0x1e')]);router[_0xc072('0x1d')](_0xc072('0xd'),auth[_0xc072('0x7')](),controller[_0xc072('0x1f')]);router[_0xc072('0x1d')](_0xc072('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xc072('0x20')]=router;
\ No newline at end of file
+var _0xd71d=['/:id/contacts','/:id/contacts/csv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addAgents','update','delete','destroy','/:id/dispositions','removeDispositions','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/global_fields','getGlobalCustomFields','/:id','show','getDispositions'];(function(_0x571fcb,_0x584df0){var _0x199cc5=function(_0x5f2dd8){while(--_0x5f2dd8){_0x571fcb['push'](_0x571fcb['shift']());}};_0x199cc5(++_0x584df0);}(_0xd71d,0xbf));var _0xdd71=function(_0xe15270,_0x227d06){_0xe15270=_0xe15270-0x0;var _0x1e813b=_0xd71d[_0xe15270];return _0x1e813b;};'use strict';var multer=require(_0xdd71('0x0'));var util=require(_0xdd71('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdd71('0x2'));var router=express[_0xdd71('0x3')]();var fs_extra=require(_0xdd71('0x4'));var auth=require(_0xdd71('0x5'));var interaction=require(_0xdd71('0x6'));var config=require(_0xdd71('0x7'));var controller=require(_0xdd71('0x8'));router[_0xdd71('0x9')]('/',auth[_0xdd71('0xa')](),controller[_0xdd71('0xb')]);router[_0xdd71('0x9')](_0xdd71('0xc'),auth['isAuthenticated'](),controller[_0xdd71('0xd')]);router[_0xdd71('0x9')](_0xdd71('0xe'),auth['isAuthenticated'](),controller[_0xdd71('0xf')]);router[_0xdd71('0x9')](_0xdd71('0x10'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x11')]);router[_0xdd71('0x9')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xdd71('0x12')]);router[_0xdd71('0x9')](_0xdd71('0x13'),auth[_0xdd71('0xa')](),controller['getContacts']);router[_0xdd71('0x9')](_0xdd71('0x14'),auth[_0xdd71('0xa')](),controller['getContactsCsv']);router[_0xdd71('0x9')](_0xdd71('0x15'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x16')]);router[_0xdd71('0x9')](_0xdd71('0x17'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x18')]);router[_0xdd71('0x19')]('/',auth[_0xdd71('0xa')](),controller[_0xdd71('0x1a')]);router[_0xdd71('0x19')]('/:id/dispositions',auth[_0xdd71('0xa')](),controller[_0xdd71('0x1b')]);router[_0xdd71('0x19')](_0xdd71('0x13'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x1c')]);router[_0xdd71('0x19')](_0xdd71('0x15'),auth[_0xdd71('0xa')](),controller['addCustomField']);router[_0xdd71('0x19')](_0xdd71('0x17'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x1d')]);router['put'](_0xdd71('0x10'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x1e')]);router[_0xdd71('0x1f')](_0xdd71('0x10'),auth['isAuthenticated'](),controller[_0xdd71('0x20')]);router[_0xdd71('0x1f')](_0xdd71('0x21'),auth[_0xdd71('0xa')](),controller[_0xdd71('0x22')]);router[_0xdd71('0x1f')]('/:id/users',auth[_0xdd71('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index b466c26..b59b9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe077=['sequelize','VIRTUAL','getDataValue','STRING'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xe077,0x74));var _0x7e07=function(_0x347ffb,_0x156d2b){_0x347ffb=_0x347ffb-0x0;var _0x330474=_0xe077[_0x347ffb];return _0x330474;};'use strict';var Sequelize=require(_0x7e07('0x0'));module['exports']={'name':{'type':Sequelize[_0x7e07('0x1')],'get':function(_0x1d69b8){return this[_0x7e07('0x2')]('field');}},'field':{'type':Sequelize[_0x7e07('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0x7e07('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x4d43=['getDataValue','field','STRING','sequelize','VIRTUAL'];(function(_0x18a6fe,_0x1c021f){var _0x1932e4=function(_0xb7aabb){while(--_0xb7aabb){_0x18a6fe['push'](_0x18a6fe['shift']());}};_0x1932e4(++_0x1c021f);}(_0x4d43,0x11b));var _0x34d4=function(_0x55b4eb,_0x2ee835){_0x55b4eb=_0x55b4eb-0x0;var _0x4cc612=_0x4d43[_0x55b4eb];return _0x4cc612;};'use strict';var Sequelize=require(_0x34d4('0x0'));module['exports']={'name':{'type':Sequelize[_0x34d4('0x1')],'get':function(_0x4836f2){return this[_0x34d4('0x2')](_0x34d4('0x3'));}},'field':{'type':Sequelize[_0x34d4('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x34d4('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x34d4('0x4')],'allowNull':![]}};
\ No newline at end of file
index 4a096c2..7574eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x7e64ac,_0x1bab95){var _0x1411b3=function(_0xd51f54){while(--_0xd51f54){_0x7e64ac['push'](_0x7e64ac['shift']());}};_0x1411b3(++_0x1bab95);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x50977d,_0x2502d9){var _0x56bbd7=function(_0x5e73d8){while(--_0x5e73d8){_0x50977d['push'](_0x50977d['shift']());}};_0x56bbd7(++_0x2502d9);}(_0x7a54,0x106));var _0x47a5=function(_0x363433,_0x3877a5){_0x363433=_0x363433-0x0;var _0x17bedf=_0x7a54[_0x363433];return _0x17bedf;};'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 58bedd0..ff65698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb527=['tools_conditions','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','Condition'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0xb527,0x115));var _0x7b52=function(_0x248516,_0x5e4ec0){_0x248516=_0x248516-0x0;var _0x57d777=_0xb527[_0x248516];return _0x57d777;};'use strict';var _=require(_0x7b52('0x0'));var util=require('util');var logger=require(_0x7b52('0x1'))(_0x7b52('0x2'));var moment=require(_0x7b52('0x3'));var BPromise=require(_0x7b52('0x4'));var rp=require(_0x7b52('0x5'));var fs=require('fs');var path=require(_0x7b52('0x6'));var rimraf=require(_0x7b52('0x7'));var config=require('../../config/environment');var attributes=require('./condition.attributes');module[_0x7b52('0x8')]=function(_0x197a1f,_0x24a041){return _0x197a1f[_0x7b52('0x9')](_0x7b52('0xa'),attributes,{'tableName':_0x7b52('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7ad=['tools_conditions','lodash','../../config/logger','api','moment','request-promise','path','rimraf','exports','define','Condition'];(function(_0xf8b326,_0x3b684a){var _0x57f8f3=function(_0xe246e){while(--_0xe246e){_0xf8b326['push'](_0xf8b326['shift']());}};_0x57f8f3(++_0x3b684a);}(_0xd7ad,0x198));var _0xdd7a=function(_0x409353,_0xe9f04d){_0x409353=_0x409353-0x0;var _0x4f4b59=_0xd7ad[_0x409353];return _0x4f4b59;};'use strict';var _=require(_0xdd7a('0x0'));var util=require('util');var logger=require(_0xdd7a('0x1'))(_0xdd7a('0x2'));var moment=require(_0xdd7a('0x3'));var BPromise=require('bluebird');var rp=require(_0xdd7a('0x4'));var fs=require('fs');var path=require(_0xdd7a('0x5'));var rimraf=require(_0xdd7a('0x6'));var config=require('../../config/environment');var attributes=require('./condition.attributes');module[_0xdd7a('0x7')]=function(_0x4b845c,_0x4155ed){return _0x4b845c[_0xdd7a('0x8')](_0xdd7a('0x9'),attributes,{'tableName':_0xdd7a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b80d69..a998432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc57c=['Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc57c,0xa7));var _0xcc57=function(_0x44f37a,_0x55823c){_0x44f37a=_0x44f37a-0x0;var _0x7351b2=_0xc57c[_0x44f37a];return _0x7351b2;};'use strict';var _=require('lodash');var util=require(_0xcc57('0x0'));var moment=require(_0xcc57('0x1'));var BPromise=require('bluebird');var rs=require(_0xcc57('0x2'));var fs=require('fs');var Redis=require(_0xcc57('0x3'));var db=require(_0xcc57('0x4'))['db'];var utils=require(_0xcc57('0x5'));var logger=require(_0xcc57('0x6'))(_0xcc57('0x7'));var config=require(_0xcc57('0x8'));var jayson=require(_0xcc57('0x9'));var client=jayson[_0xcc57('0xa')][_0xcc57('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x431f71,_0x22921f,_0x3d2381){return new BPromise(function(_0x236b00,_0x1139b2){return client[_0xcc57('0xc')](_0x431f71,_0x3d2381)[_0xcc57('0xd')](function(_0x2d29a2){logger['info'](_0xcc57('0xe'),_0x22921f,_0xcc57('0xf'));logger[_0xcc57('0x10')](_0xcc57('0x11'),_0x22921f,_0xcc57('0xf'),JSON[_0xcc57('0x12')](_0x2d29a2));if(_0x2d29a2[_0xcc57('0x13')]){if(_0x2d29a2['error'][_0xcc57('0x14')]===0x1f4){logger[_0xcc57('0x13')](_0xcc57('0xe'),_0x22921f,_0x2d29a2['error'][_0xcc57('0x15')]);return _0x1139b2(_0x2d29a2[_0xcc57('0x13')][_0xcc57('0x15')]);}logger['error']('Condition,\x20%s,\x20%s',_0x22921f,_0x2d29a2[_0xcc57('0x13')]['message']);return _0x236b00(_0x2d29a2['error']['message']);}else{logger['info']('Condition,\x20%s,\x20%s',_0x22921f,_0xcc57('0xf'));_0x236b00(_0x2d29a2[_0xcc57('0x16')]['message']);}})['catch'](function(_0x5f44f4){logger[_0xcc57('0x13')]('Condition,\x20%s,\x20%s',_0x22921f,_0x5f44f4);_0x1139b2(_0x5f44f4);});});}
\ No newline at end of file
+var _0x56e9=['client','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x595e22,_0x137fb5){var _0x2c5459=function(_0x4a2715){while(--_0x4a2715){_0x595e22['push'](_0x595e22['shift']());}};_0x2c5459(++_0x137fb5);}(_0x56e9,0xd6));var _0x956e=function(_0x42ae69,_0x3bc904){_0x42ae69=_0x42ae69-0x0;var _0x61495a=_0x56e9[_0x42ae69];return _0x61495a;};'use strict';var _=require(_0x956e('0x0'));var util=require(_0x956e('0x1'));var moment=require(_0x956e('0x2'));var BPromise=require('bluebird');var rs=require(_0x956e('0x3'));var fs=require('fs');var Redis=require(_0x956e('0x4'));var db=require(_0x956e('0x5'))['db'];var utils=require(_0x956e('0x6'));var logger=require(_0x956e('0x7'))(_0x956e('0x8'));var config=require(_0x956e('0x9'));var jayson=require(_0x956e('0xa'));var client=jayson[_0x956e('0xb')][_0x956e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1f4792,_0x3fb0f3,_0x22176b){return new BPromise(function(_0x41c5b0,_0x4fd96c){return client[_0x956e('0xd')](_0x1f4792,_0x22176b)[_0x956e('0xe')](function(_0x120a65){logger['info'](_0x956e('0xf'),_0x3fb0f3,_0x956e('0x10'));logger[_0x956e('0x11')](_0x956e('0x12'),_0x3fb0f3,_0x956e('0x10'),JSON[_0x956e('0x13')](_0x120a65));if(_0x120a65[_0x956e('0x14')]){if(_0x120a65[_0x956e('0x14')][_0x956e('0x15')]===0x1f4){logger[_0x956e('0x14')]('Condition,\x20%s,\x20%s',_0x3fb0f3,_0x120a65[_0x956e('0x14')][_0x956e('0x16')]);return _0x4fd96c(_0x120a65[_0x956e('0x14')][_0x956e('0x16')]);}logger[_0x956e('0x14')](_0x956e('0xf'),_0x3fb0f3,_0x120a65[_0x956e('0x14')][_0x956e('0x16')]);return _0x41c5b0(_0x120a65[_0x956e('0x14')]['message']);}else{logger['info'](_0x956e('0xf'),_0x3fb0f3,_0x956e('0x10'));_0x41c5b0(_0x120a65[_0x956e('0x17')]['message']);}})[_0x956e('0x18')](function(_0x1c18bd){logger['error'](_0x956e('0xf'),_0x3fb0f3,_0x1c18bd);_0x4fd96c(_0x1c18bd);});});}
\ No newline at end of file
index 98e68c3..3789b3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0e=['../../components/auth/service','../../components/interaction/service','./condition.controller','put','isAuthenticated','update','delete','/:id','destroy','multer','util','path','connect-timeout','express'];(function(_0x2fa529,_0x28c5bb){var _0x3cdbf8=function(_0x151aaa){while(--_0x151aaa){_0x2fa529['push'](_0x2fa529['shift']());}};_0x3cdbf8(++_0x28c5bb);}(_0x8b0e,0x87));var _0xe8b0=function(_0x121350,_0x361f4d){_0x121350=_0x121350-0x0;var _0x2e21c7=_0x8b0e[_0x121350];return _0x2e21c7;};'use strict';var multer=require(_0xe8b0('0x0'));var util=require(_0xe8b0('0x1'));var path=require(_0xe8b0('0x2'));var timeout=require(_0xe8b0('0x3'));var express=require(_0xe8b0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe8b0('0x5'));var interaction=require(_0xe8b0('0x6'));var config=require('../../config/environment');var controller=require(_0xe8b0('0x7'));router[_0xe8b0('0x8')]('/:id',auth[_0xe8b0('0x9')](),controller[_0xe8b0('0xa')]);router[_0xe8b0('0xb')](_0xe8b0('0xc'),auth[_0xe8b0('0x9')](),controller[_0xe8b0('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x9327=['./condition.controller','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3bd402,_0x56e249){var _0x4f3841=function(_0x47b294){while(--_0x47b294){_0x3bd402['push'](_0x3bd402['shift']());}};_0x4f3841(++_0x56e249);}(_0x9327,0x129));var _0x7932=function(_0x372898,_0x3783a3){_0x372898=_0x372898-0x0;var _0x3d38e7=_0x9327[_0x372898];return _0x3d38e7;};'use strict';var multer=require(_0x7932('0x0'));var util=require(_0x7932('0x1'));var path=require('path');var timeout=require(_0x7932('0x2'));var express=require(_0x7932('0x3'));var router=express[_0x7932('0x4')]();var fs_extra=require(_0x7932('0x5'));var auth=require(_0x7932('0x6'));var interaction=require(_0x7932('0x7'));var config=require(_0x7932('0x8'));var controller=require(_0x7932('0x9'));router[_0x7932('0xa')](_0x7932('0xb'),auth[_0x7932('0xc')](),controller[_0x7932('0xd')]);router[_0x7932('0xe')](_0x7932('0xb'),auth['isAuthenticated'](),controller[_0x7932('0xf')]);module[_0x7932('0x10')]=router;
\ No newline at end of file
index 3c80123..6201c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x658b=['name','sequelize','exports','STRING'];(function(_0x309a51,_0x107576){var _0x1c2580=function(_0x3d14bc){while(--_0x3d14bc){_0x309a51['push'](_0x309a51['shift']());}};_0x1c2580(++_0x107576);}(_0x658b,0x69));var _0xb658=function(_0x5329df,_0x5aa265){_0x5329df=_0x5329df-0x0;var _0x500188=_0x658b[_0x5329df];return _0x500188;};'use strict';var Sequelize=require(_0xb658('0x0'));module[_0xb658('0x1')]={'name':{'type':Sequelize[_0xb658('0x2')],'allowNull':![],'unique':_0xb658('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x6cb6=['name','INTEGER','sequelize','exports','STRING'];(function(_0x2ba07b,_0x967183){var _0x411a2e=function(_0x1ab1ac){while(--_0x1ab1ac){_0x2ba07b['push'](_0x2ba07b['shift']());}};_0x411a2e(++_0x967183);}(_0x6cb6,0x89));var _0x66cb=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x6cb6[_0x4baae2];return _0x1a2285;};'use strict';var Sequelize=require(_0x66cb('0x0'));module[_0x66cb('0x1')]={'name':{'type':Sequelize[_0x66cb('0x2')],'allowNull':![],'unique':_0x66cb('0x3')},'OrderBy':{'type':Sequelize[_0x66cb('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x66cb('0x2')],'allowNull':!![]}};
\ No newline at end of file
index c6d45d7..951c67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9a=['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','then','destroy','get','ContactItemTypes','UserProfileResource','error','name','send','index','map','ContactItemType','rawAttributes','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','findAll','rows','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring'];(function(_0x324012,_0x23f45f){var _0x435cf2=function(_0x378a82){while(--_0x378a82){_0x324012['push'](_0x324012['shift']());}};_0x435cf2(++_0x23f45f);}(_0x1c9a,0x98));var _0xa1c9=function(_0x2b8006,_0x1b5f4e){_0x2b8006=_0x2b8006-0x0;var _0x10815e=_0x1c9a[_0x2b8006];return _0x10815e;};'use strict';var emlformat=require(_0xa1c9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa1c9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa1c9('0x2'));var moment=require(_0xa1c9('0x3'));var BPromise=require(_0xa1c9('0x4'));var Mustache=require('mustache');var util=require(_0xa1c9('0x5'));var path=require(_0xa1c9('0x6'));var sox=require(_0xa1c9('0x7'));var csv=require(_0xa1c9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa1c9('0x9'));var _=require('lodash');var squel=require(_0xa1c9('0xa'));var crypto=require(_0xa1c9('0xb'));var jsforce=require(_0xa1c9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa1c9('0x8'));var querystring=require(_0xa1c9('0xd'));var Papa=require(_0xa1c9('0xe'));var Redis=require(_0xa1c9('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa1c9('0x10'));var as=require(_0xa1c9('0x11'));var hardwareService=require(_0xa1c9('0x12'));var logger=require(_0xa1c9('0x13'))(_0xa1c9('0x14'));var utils=require(_0xa1c9('0x15'));var config=require(_0xa1c9('0x16'));var licenseUtil=require(_0xa1c9('0x17'));var db=require(_0xa1c9('0x18'))['db'];function respondWithStatusCode(_0x17ee28,_0x57e2a8){_0x57e2a8=_0x57e2a8||0xcc;return function(_0x341233){if(_0x341233){return _0x17ee28[_0xa1c9('0x19')](_0x57e2a8);}return _0x17ee28[_0xa1c9('0x1a')](_0x57e2a8)[_0xa1c9('0x1b')]();};}function respondWithResult(_0x13f4e9,_0x4c70dd){_0x4c70dd=_0x4c70dd||0xc8;return function(_0x335dda){if(_0x335dda){return _0x13f4e9[_0xa1c9('0x1a')](_0x4c70dd)[_0xa1c9('0x1c')](_0x335dda);}};}function respondWithFilteredResult(_0xd9bca1,_0x2d825c){return function(_0x1bbc94){if(_0x1bbc94){var _0x44ab5b=typeof _0x2d825c[_0xa1c9('0x1d')]===_0xa1c9('0x1e')&&typeof _0x2d825c[_0xa1c9('0x1f')]==='undefined';var _0x11ca10=_0x1bbc94[_0xa1c9('0x20')];var _0x224ae4=_0x44ab5b?0x0:_0x2d825c['offset'];var _0x2fb81e=_0x44ab5b?_0x1bbc94['count']:_0x2d825c[_0xa1c9('0x1d')]+_0x2d825c[_0xa1c9('0x1f')];var _0x204d54;if(_0x2fb81e>=_0x11ca10){_0x2fb81e=_0x11ca10;_0x204d54=0xc8;}else{_0x204d54=0xce;}_0xd9bca1['status'](_0x204d54);return _0xd9bca1[_0xa1c9('0x21')](_0xa1c9('0x22'),_0x224ae4+'-'+_0x2fb81e+'/'+_0x11ca10)[_0xa1c9('0x1c')](_0x1bbc94);}return null;};}function patchUpdates(_0x4edf37){return function(_0x41e6d2){try{jsonpatch[_0xa1c9('0x23')](_0x41e6d2,_0x4edf37,!![]);}catch(_0x4c6dbb){return BPromise[_0xa1c9('0x24')](_0x4c6dbb);}return _0x41e6d2[_0xa1c9('0x25')]();};}function saveUpdates(_0x9f201f,_0x4d05d0){return function(_0x29f1b1){if(_0x29f1b1){return _0x29f1b1[_0xa1c9('0x26')](_0x9f201f)[_0xa1c9('0x27')](function(_0x23a461){return _0x23a461;});}return null;};}function removeEntity(_0x24a5da,_0x4a0a0c){return function(_0x50b16b){if(_0x50b16b){return _0x50b16b[_0xa1c9('0x28')]()['then'](function(){var _0x380f31=_0x50b16b[_0xa1c9('0x29')]({'plain':!![]});var _0x1c6f37=_0xa1c9('0x2a');return db[_0xa1c9('0x2b')]['destroy']({'where':{'type':_0x1c6f37,'resourceId':_0x380f31['id']}})[_0xa1c9('0x27')](function(){return _0x50b16b;});})[_0xa1c9('0x27')](function(){_0x24a5da[_0xa1c9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x133f80,_0x1e7a97){return function(_0x1ca443){if(!_0x1ca443){_0x133f80['sendStatus'](0x194);}return _0x1ca443;};}function handleError(_0x242a43,_0x2a2e9c){_0x2a2e9c=_0x2a2e9c||0x1f4;return function(_0x594137){logger[_0xa1c9('0x2c')](_0x594137['stack']);if(_0x594137[_0xa1c9('0x2d')]){delete _0x594137[_0xa1c9('0x2d')];}_0x242a43[_0xa1c9('0x1a')](_0x2a2e9c)[_0xa1c9('0x2e')](_0x594137);};}exports[_0xa1c9('0x2f')]=function(_0xe8523b,_0x42fcb2){var _0x58b900={},_0x5648b8={},_0x4d23cd={'count':0x0,'rows':[]};var _0x1c7038=_[_0xa1c9('0x30')](db[_0xa1c9('0x31')][_0xa1c9('0x32')],function(_0x3161b0){return{'name':_0x3161b0['fieldName'],'type':_0x3161b0['type']['key']};});_0x5648b8[_0xa1c9('0x33')]=_[_0xa1c9('0x30')](_0x1c7038,_0xa1c9('0x2d'));_0x5648b8[_0xa1c9('0x34')]=_[_0xa1c9('0x35')](_0xe8523b[_0xa1c9('0x34')]);_0x5648b8[_0xa1c9('0x36')]=_['intersection'](_0x5648b8[_0xa1c9('0x33')],_0x5648b8['query']);_0x58b900[_0xa1c9('0x37')]=_['intersection'](_0x5648b8[_0xa1c9('0x33')],qs[_0xa1c9('0x38')](_0xe8523b[_0xa1c9('0x34')]['fields']));_0x58b900[_0xa1c9('0x37')]=_0x58b900[_0xa1c9('0x37')][_0xa1c9('0x39')]?_0x58b900[_0xa1c9('0x37')]:_0x5648b8['model'];if(!_0xe8523b['query'][_0xa1c9('0x3a')](_0xa1c9('0x3b'))){_0x58b900[_0xa1c9('0x1f')]=qs[_0xa1c9('0x1f')](_0xe8523b[_0xa1c9('0x34')][_0xa1c9('0x1f')]);_0x58b900[_0xa1c9('0x1d')]=qs[_0xa1c9('0x1d')](_0xe8523b[_0xa1c9('0x34')][_0xa1c9('0x1d')]);}_0x58b900['order']=qs[_0xa1c9('0x3c')](_0xe8523b[_0xa1c9('0x34')][_0xa1c9('0x3c')]);_0x58b900[_0xa1c9('0x3d')]=qs[_0xa1c9('0x36')](_[_0xa1c9('0x3e')](_0xe8523b['query'],_0x5648b8[_0xa1c9('0x36')]),_0x1c7038);if(_0xe8523b[_0xa1c9('0x34')][_0xa1c9('0x3f')]){_0x58b900['where']=_[_0xa1c9('0x40')](_0x58b900[_0xa1c9('0x3d')],{'$or':_['map'](_0x1c7038,function(_0x58d877){if(_0x58d877[_0xa1c9('0x41')]!=='VIRTUAL'){var _0x4dc34a={};_0x4dc34a[_0x58d877[_0xa1c9('0x2d')]]={'$like':'%'+_0xe8523b[_0xa1c9('0x34')][_0xa1c9('0x3f')]+'%'};return _0x4dc34a;}})});}_0x58b900=_[_0xa1c9('0x40')]({},_0x58b900,_0xe8523b[_0xa1c9('0x42')]);var _0x1af387={'where':_0x58b900[_0xa1c9('0x3d')]};return db[_0xa1c9('0x31')][_0xa1c9('0x20')](_0x1af387)[_0xa1c9('0x27')](function(_0x5ac71f){_0x4d23cd['count']=_0x5ac71f;if(_0xe8523b[_0xa1c9('0x34')][_0xa1c9('0x43')]){_0x58b900['include']=[{'all':!![]}];}return db[_0xa1c9('0x31')][_0xa1c9('0x44')](_0x58b900);})[_0xa1c9('0x27')](function(_0x36c846){_0x4d23cd[_0xa1c9('0x45')]=_0x36c846;return _0x4d23cd;})[_0xa1c9('0x27')](respondWithFilteredResult(_0x42fcb2,_0x58b900))[_0xa1c9('0x46')](handleError(_0x42fcb2,null));};exports[_0xa1c9('0x47')]=function(_0x1a32ff,_0x2b0599){var _0xece03c={'raw':!![],'where':{'id':_0x1a32ff[_0xa1c9('0x48')]['id']}},_0x50cc27={};_0x50cc27['model']=_[_0xa1c9('0x35')](db['ContactItemType'][_0xa1c9('0x32')]);_0x50cc27['query']=_[_0xa1c9('0x35')](_0x1a32ff[_0xa1c9('0x34')]);_0x50cc27['filters']=_[_0xa1c9('0x49')](_0x50cc27[_0xa1c9('0x33')],_0x50cc27['query']);_0xece03c[_0xa1c9('0x37')]=_[_0xa1c9('0x49')](_0x50cc27[_0xa1c9('0x33')],qs[_0xa1c9('0x38')](_0x1a32ff[_0xa1c9('0x34')][_0xa1c9('0x38')]));_0xece03c['attributes']=_0xece03c[_0xa1c9('0x37')][_0xa1c9('0x39')]?_0xece03c[_0xa1c9('0x37')]:_0x50cc27[_0xa1c9('0x33')];if(_0x1a32ff[_0xa1c9('0x34')]['includeAll']){_0xece03c['include']=[{'all':!![]}];}_0xece03c=_['merge']({},_0xece03c,_0x1a32ff[_0xa1c9('0x42')]);return db[_0xa1c9('0x31')][_0xa1c9('0x4a')](_0xece03c)['then'](handleEntityNotFound(_0x2b0599,null))[_0xa1c9('0x27')](respondWithResult(_0x2b0599,null))[_0xa1c9('0x46')](handleError(_0x2b0599,null));};exports['create']=function(_0x43ee79,_0x4bdf5d){return db['ContactItemType'][_0xa1c9('0x4b')](_0x43ee79[_0xa1c9('0x4c')],{})[_0xa1c9('0x27')](function(_0x3b9a30){var _0x3439fb=_0x43ee79[_0xa1c9('0x4d')][_0xa1c9('0x29')]({'plain':!![]});if(!_0x3439fb)throw new Error(_0xa1c9('0x4e'));if(_0x3439fb[_0xa1c9('0x4f')]===_0xa1c9('0x4d')){var _0x2b2065=_0x3b9a30[_0xa1c9('0x29')]({'plain':!![]});var _0x2cd053=_0xa1c9('0x2a');return db[_0xa1c9('0x50')][_0xa1c9('0x4a')]({'where':{'name':_0x2cd053,'userProfileId':_0x3439fb[_0xa1c9('0x51')]},'raw':!![]})[_0xa1c9('0x27')](function(_0x3803f8){if(_0x3803f8&&_0x3803f8['autoAssociation']===0x0){return db['UserProfileResource'][_0xa1c9('0x4b')]({'name':_0x2b2065[_0xa1c9('0x2d')],'resourceId':_0x2b2065['id'],'type':_0x3803f8[_0xa1c9('0x2d')],'sectionId':_0x3803f8['id']},{})[_0xa1c9('0x27')](function(){return _0x3b9a30;});}else{return _0x3b9a30;}})['catch'](function(_0x449e85){logger[_0xa1c9('0x2c')](_0xa1c9('0x52'),_0x449e85);throw _0x449e85;});}return _0x3b9a30;})['then'](respondWithResult(_0x4bdf5d,0xc9))[_0xa1c9('0x46')](handleError(_0x4bdf5d,null));};exports[_0xa1c9('0x26')]=function(_0x480326,_0x53d4e8){if(_0x480326[_0xa1c9('0x4c')]['id']){delete _0x480326['body']['id'];}return db[_0xa1c9('0x31')][_0xa1c9('0x4a')]({'where':{'id':_0x480326[_0xa1c9('0x48')]['id']}})['then'](handleEntityNotFound(_0x53d4e8,null))['then'](saveUpdates(_0x480326[_0xa1c9('0x4c')],null))['then'](respondWithResult(_0x53d4e8,null))[_0xa1c9('0x46')](handleError(_0x53d4e8,null));};exports['destroy']=function(_0x3334ad,_0x37fcce){return db[_0xa1c9('0x31')][_0xa1c9('0x4a')]({'where':{'id':_0x3334ad[_0xa1c9('0x48')]['id']}})[_0xa1c9('0x27')](handleEntityNotFound(_0x37fcce,null))[_0xa1c9('0x27')](db['CmContactHasItem'][_0xa1c9('0x26')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x3334ad[_0xa1c9('0x48')]['id']}}))['then'](removeEntity(_0x37fcce,null))['catch'](handleError(_0x37fcce,null));};
\ No newline at end of file
+var _0xdd4f=['set','Content-Range','apply','save','update','then','destroy','get','ContactItemTypes','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','ContactItemType','includeAll','include','rows','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContactHasItem','eml-format','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit'];(function(_0x3b4585,_0x16a9c2){var _0x551be9=function(_0x5cea93){while(--_0x5cea93){_0x3b4585['push'](_0x3b4585['shift']());}};_0x551be9(++_0x16a9c2);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x181f80,_0x11c3c7){_0x181f80=_0x181f80-0x0;var _0x3998cc=_0xdd4f[_0x181f80];return _0x3998cc;};'use strict';var emlformat=require(_0xfdd4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfdd4('0x1'));var moment=require(_0xfdd4('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfdd4('0x3'));var util=require(_0xfdd4('0x4'));var path=require(_0xfdd4('0x5'));var sox=require('sox');var csv=require(_0xfdd4('0x6'));var ejs=require(_0xfdd4('0x7'));var fs=require('fs');var fs_extra=require(_0xfdd4('0x8'));var _=require(_0xfdd4('0x9'));var squel=require(_0xfdd4('0xa'));var crypto=require('crypto');var jsforce=require(_0xfdd4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xfdd4('0x6'));var querystring=require(_0xfdd4('0xc'));var Papa=require(_0xfdd4('0xd'));var Redis=require('ioredis');var authService=require(_0xfdd4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfdd4('0xf'));var hardwareService=require(_0xfdd4('0x10'));var logger=require(_0xfdd4('0x11'))(_0xfdd4('0x12'));var utils=require(_0xfdd4('0x13'));var config=require(_0xfdd4('0x14'));var licenseUtil=require(_0xfdd4('0x15'));var db=require(_0xfdd4('0x16'))['db'];function respondWithStatusCode(_0x3f07f1,_0x4565e6){_0x4565e6=_0x4565e6||0xcc;return function(_0x1bf37b){if(_0x1bf37b){return _0x3f07f1['sendStatus'](_0x4565e6);}return _0x3f07f1[_0xfdd4('0x17')](_0x4565e6)[_0xfdd4('0x18')]();};}function respondWithResult(_0x227099,_0x57b21f){_0x57b21f=_0x57b21f||0xc8;return function(_0x1b7da1){if(_0x1b7da1){return _0x227099['status'](_0x57b21f)[_0xfdd4('0x19')](_0x1b7da1);}};}function respondWithFilteredResult(_0x42c3a8,_0x2f34ec){return function(_0x431255){if(_0x431255){var _0x37b05f=typeof _0x2f34ec['offset']==='undefined'&&typeof _0x2f34ec['limit']===_0xfdd4('0x1a');var _0x216c7e=_0x431255[_0xfdd4('0x1b')];var _0x2ccc88=_0x37b05f?0x0:_0x2f34ec[_0xfdd4('0x1c')];var _0x33d752=_0x37b05f?_0x431255[_0xfdd4('0x1b')]:_0x2f34ec[_0xfdd4('0x1c')]+_0x2f34ec[_0xfdd4('0x1d')];var _0x52ce34;if(_0x33d752>=_0x216c7e){_0x33d752=_0x216c7e;_0x52ce34=0xc8;}else{_0x52ce34=0xce;}_0x42c3a8[_0xfdd4('0x17')](_0x52ce34);return _0x42c3a8[_0xfdd4('0x1e')](_0xfdd4('0x1f'),_0x2ccc88+'-'+_0x33d752+'/'+_0x216c7e)[_0xfdd4('0x19')](_0x431255);}return null;};}function patchUpdates(_0x1454f1){return function(_0x29cc8d){try{jsonpatch[_0xfdd4('0x20')](_0x29cc8d,_0x1454f1,!![]);}catch(_0x34dfa8){return BPromise['reject'](_0x34dfa8);}return _0x29cc8d[_0xfdd4('0x21')]();};}function saveUpdates(_0x17302b,_0x2a24e8){return function(_0x16e81b){if(_0x16e81b){return _0x16e81b[_0xfdd4('0x22')](_0x17302b)[_0xfdd4('0x23')](function(_0x451767){return _0x451767;});}return null;};}function removeEntity(_0x277ec1,_0x538b00){return function(_0x1e14da){if(_0x1e14da){return _0x1e14da[_0xfdd4('0x24')]()[_0xfdd4('0x23')](function(){var _0x53d35a=_0x1e14da[_0xfdd4('0x25')]({'plain':!![]});var _0x39b712=_0xfdd4('0x26');return db[_0xfdd4('0x27')][_0xfdd4('0x24')]({'where':{'type':_0x39b712,'resourceId':_0x53d35a['id']}})['then'](function(){return _0x1e14da;});})[_0xfdd4('0x23')](function(){_0x277ec1[_0xfdd4('0x17')](0xcc)[_0xfdd4('0x18')]();});}};}function handleEntityNotFound(_0x31e053,_0x3c6728){return function(_0x192471){if(!_0x192471){_0x31e053[_0xfdd4('0x28')](0x194);}return _0x192471;};}function handleError(_0x37b7a2,_0x5e8898){_0x5e8898=_0x5e8898||0x1f4;return function(_0xcbd1fb){logger[_0xfdd4('0x29')](_0xcbd1fb[_0xfdd4('0x2a')]);if(_0xcbd1fb[_0xfdd4('0x2b')]){delete _0xcbd1fb[_0xfdd4('0x2b')];}_0x37b7a2['status'](_0x5e8898)[_0xfdd4('0x2c')](_0xcbd1fb);};}exports[_0xfdd4('0x2d')]=function(_0xbf38b4,_0x2bb793){var _0x13cc5e={},_0x4d64ce={},_0x374e98={'count':0x0,'rows':[]};var _0x315568=_[_0xfdd4('0x2e')](db['ContactItemType'][_0xfdd4('0x2f')],function(_0x502776){return{'name':_0x502776[_0xfdd4('0x30')],'type':_0x502776[_0xfdd4('0x31')]['key']};});_0x4d64ce['model']=_[_0xfdd4('0x2e')](_0x315568,_0xfdd4('0x2b'));_0x4d64ce['query']=_['keys'](_0xbf38b4[_0xfdd4('0x32')]);_0x4d64ce[_0xfdd4('0x33')]=_[_0xfdd4('0x34')](_0x4d64ce[_0xfdd4('0x35')],_0x4d64ce[_0xfdd4('0x32')]);_0x13cc5e[_0xfdd4('0x36')]=_[_0xfdd4('0x34')](_0x4d64ce[_0xfdd4('0x35')],qs[_0xfdd4('0x37')](_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x37')]));_0x13cc5e[_0xfdd4('0x36')]=_0x13cc5e[_0xfdd4('0x36')][_0xfdd4('0x38')]?_0x13cc5e[_0xfdd4('0x36')]:_0x4d64ce[_0xfdd4('0x35')];if(!_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x39')](_0xfdd4('0x3a'))){_0x13cc5e[_0xfdd4('0x1d')]=qs[_0xfdd4('0x1d')](_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x1d')]);_0x13cc5e[_0xfdd4('0x1c')]=qs[_0xfdd4('0x1c')](_0xbf38b4[_0xfdd4('0x32')]['offset']);}_0x13cc5e[_0xfdd4('0x3b')]=qs[_0xfdd4('0x3c')](_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x3c')]);_0x13cc5e[_0xfdd4('0x3d')]=qs[_0xfdd4('0x33')](_['pick'](_0xbf38b4[_0xfdd4('0x32')],_0x4d64ce['filters']),_0x315568);if(_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x3e')]){_0x13cc5e[_0xfdd4('0x3d')]=_[_0xfdd4('0x3f')](_0x13cc5e['where'],{'$or':_[_0xfdd4('0x2e')](_0x315568,function(_0x3feb36){if(_0x3feb36[_0xfdd4('0x31')]!==_0xfdd4('0x40')){var _0x35b719={};_0x35b719[_0x3feb36[_0xfdd4('0x2b')]]={'$like':'%'+_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x3e')]+'%'};return _0x35b719;}})});}_0x13cc5e=_[_0xfdd4('0x3f')]({},_0x13cc5e,_0xbf38b4[_0xfdd4('0x41')]);var _0x5bcbc8={'where':_0x13cc5e[_0xfdd4('0x3d')]};return db[_0xfdd4('0x42')][_0xfdd4('0x1b')](_0x5bcbc8)[_0xfdd4('0x23')](function(_0x5173db){_0x374e98[_0xfdd4('0x1b')]=_0x5173db;if(_0xbf38b4[_0xfdd4('0x32')][_0xfdd4('0x43')]){_0x13cc5e[_0xfdd4('0x44')]=[{'all':!![]}];}return db[_0xfdd4('0x42')]['findAll'](_0x13cc5e);})[_0xfdd4('0x23')](function(_0x23af2a){_0x374e98[_0xfdd4('0x45')]=_0x23af2a;return _0x374e98;})[_0xfdd4('0x23')](respondWithFilteredResult(_0x2bb793,_0x13cc5e))[_0xfdd4('0x46')](handleError(_0x2bb793,null));};exports[_0xfdd4('0x47')]=function(_0x3d1051,_0x484cb6){var _0x2dd3fa={'raw':!![],'where':{'id':_0x3d1051[_0xfdd4('0x48')]['id']}},_0x586713={};_0x586713[_0xfdd4('0x35')]=_[_0xfdd4('0x49')](db[_0xfdd4('0x42')]['rawAttributes']);_0x586713[_0xfdd4('0x32')]=_[_0xfdd4('0x49')](_0x3d1051['query']);_0x586713[_0xfdd4('0x33')]=_[_0xfdd4('0x34')](_0x586713['model'],_0x586713[_0xfdd4('0x32')]);_0x2dd3fa['attributes']=_['intersection'](_0x586713['model'],qs[_0xfdd4('0x37')](_0x3d1051[_0xfdd4('0x32')][_0xfdd4('0x37')]));_0x2dd3fa['attributes']=_0x2dd3fa[_0xfdd4('0x36')][_0xfdd4('0x38')]?_0x2dd3fa['attributes']:_0x586713[_0xfdd4('0x35')];if(_0x3d1051[_0xfdd4('0x32')][_0xfdd4('0x43')]){_0x2dd3fa[_0xfdd4('0x44')]=[{'all':!![]}];}_0x2dd3fa=_[_0xfdd4('0x3f')]({},_0x2dd3fa,_0x3d1051[_0xfdd4('0x41')]);return db[_0xfdd4('0x42')][_0xfdd4('0x4a')](_0x2dd3fa)[_0xfdd4('0x23')](handleEntityNotFound(_0x484cb6,null))[_0xfdd4('0x23')](respondWithResult(_0x484cb6,null))[_0xfdd4('0x46')](handleError(_0x484cb6,null));};exports[_0xfdd4('0x4b')]=function(_0x300965,_0x3c0ee1){return db['ContactItemType']['create'](_0x300965[_0xfdd4('0x4c')],{})[_0xfdd4('0x23')](function(_0x1296e6){var _0x1932ef=_0x300965['user'][_0xfdd4('0x25')]({'plain':!![]});if(!_0x1932ef)throw new Error(_0xfdd4('0x4d'));if(_0x1932ef['role']==='user'){var _0x53c66d=_0x1296e6['get']({'plain':!![]});var _0x557cb3=_0xfdd4('0x26');return db[_0xfdd4('0x4e')][_0xfdd4('0x4a')]({'where':{'name':_0x557cb3,'userProfileId':_0x1932ef[_0xfdd4('0x4f')]},'raw':!![]})[_0xfdd4('0x23')](function(_0x49bc61){if(_0x49bc61&&_0x49bc61['autoAssociation']===0x0){return db[_0xfdd4('0x27')][_0xfdd4('0x4b')]({'name':_0x53c66d[_0xfdd4('0x2b')],'resourceId':_0x53c66d['id'],'type':_0x49bc61[_0xfdd4('0x2b')],'sectionId':_0x49bc61['id']},{})['then'](function(){return _0x1296e6;});}else{return _0x1296e6;}})[_0xfdd4('0x46')](function(_0x8aa0ea){logger['error'](_0xfdd4('0x50'),_0x8aa0ea);throw _0x8aa0ea;});}return _0x1296e6;})[_0xfdd4('0x23')](respondWithResult(_0x3c0ee1,0xc9))['catch'](handleError(_0x3c0ee1,null));};exports['update']=function(_0x2a6c16,_0x3658f7){if(_0x2a6c16[_0xfdd4('0x4c')]['id']){delete _0x2a6c16[_0xfdd4('0x4c')]['id'];}return db[_0xfdd4('0x42')][_0xfdd4('0x4a')]({'where':{'id':_0x2a6c16[_0xfdd4('0x48')]['id']}})[_0xfdd4('0x23')](handleEntityNotFound(_0x3658f7,null))['then'](saveUpdates(_0x2a6c16[_0xfdd4('0x4c')],null))['then'](respondWithResult(_0x3658f7,null))['catch'](handleError(_0x3658f7,null));};exports[_0xfdd4('0x24')]=function(_0x1d9a8d,_0x57cb65){return db['ContactItemType']['find']({'where':{'id':_0x1d9a8d[_0xfdd4('0x48')]['id']}})[_0xfdd4('0x23')](handleEntityNotFound(_0x57cb65,null))['then'](db[_0xfdd4('0x51')][_0xfdd4('0x22')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x1d9a8d[_0xfdd4('0x48')]['id']}}))[_0xfdd4('0x23')](removeEntity(_0x57cb65,null))[_0xfdd4('0x46')](handleError(_0x57cb65,null));};
\ No newline at end of file
index b8ce47c..8d7bf3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e5f=['moment','request-promise','path','rimraf','../../config/environment','exports','define','ContactItemType','tools_contact_item_types','lodash','util','../../config/logger','api'];(function(_0x4469dd,_0x1cf2c7){var _0x1c4e31=function(_0x9c5940){while(--_0x9c5940){_0x4469dd['push'](_0x4469dd['shift']());}};_0x1c4e31(++_0x1cf2c7);}(_0x8e5f,0x7e));var _0xf8e5=function(_0x1ba92a,_0x1ba750){_0x1ba92a=_0x1ba92a-0x0;var _0x347910=_0x8e5f[_0x1ba92a];return _0x347910;};'use strict';var _=require(_0xf8e5('0x0'));var util=require(_0xf8e5('0x1'));var logger=require(_0xf8e5('0x2'))(_0xf8e5('0x3'));var moment=require(_0xf8e5('0x4'));var BPromise=require('bluebird');var rp=require(_0xf8e5('0x5'));var fs=require('fs');var path=require(_0xf8e5('0x6'));var rimraf=require(_0xf8e5('0x7'));var config=require(_0xf8e5('0x8'));var attributes=require('./contactItemType.attributes');module[_0xf8e5('0x9')]=function(_0x92a7b4,_0x2797d7){return _0x92a7b4[_0xf8e5('0xa')](_0xf8e5('0xb'),attributes,{'tableName':_0xf8e5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd99a=['bluebird','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','define','ContactItemType','tools_contact_item_types','lodash','util','../../config/logger','moment'];(function(_0x427217,_0x4039b1){var _0x5b28fb=function(_0x3eaa08){while(--_0x3eaa08){_0x427217['push'](_0x427217['shift']());}};_0x5b28fb(++_0x4039b1);}(_0xd99a,0x175));var _0xad99=function(_0x466e01,_0x352d44){_0x466e01=_0x466e01-0x0;var _0x2cd605=_0xd99a[_0x466e01];return _0x2cd605;};'use strict';var _=require(_0xad99('0x0'));var util=require(_0xad99('0x1'));var logger=require(_0xad99('0x2'))('api');var moment=require(_0xad99('0x3'));var BPromise=require(_0xad99('0x4'));var rp=require(_0xad99('0x5'));var fs=require('fs');var path=require(_0xad99('0x6'));var rimraf=require(_0xad99('0x7'));var config=require(_0xad99('0x8'));var attributes=require(_0xad99('0x9'));module['exports']=function(_0x39c702,_0x103aac){return _0x39c702[_0xad99('0xa')](_0xad99('0xb'),attributes,{'tableName':_0xad99('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3fdac76..6d0100b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd6=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','info','ContactItemType,\x20%s,\x20%s','debug','ContactItemType,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','util','bluebird','ioredis'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xcbd6,0x7b));var _0x6cbd=function(_0x533b38,_0x2ca7e1){_0x533b38=_0x533b38-0x0;var _0x1d8078=_0xcbd6[_0x533b38];return _0x1d8078;};'use strict';var _=require('lodash');var util=require(_0x6cbd('0x0'));var moment=require('moment');var BPromise=require(_0x6cbd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6cbd('0x2'));var db=require(_0x6cbd('0x3'))['db'];var utils=require(_0x6cbd('0x4'));var logger=require('../../config/logger')(_0x6cbd('0x5'));var config=require(_0x6cbd('0x6'));var jayson=require(_0x6cbd('0x7'));var client=jayson[_0x6cbd('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e2156,_0x308a8e,_0x2964c7){return new BPromise(function(_0x2e76dc,_0x2a024b){return client['request'](_0x4e2156,_0x2964c7)['then'](function(_0x2fda9e){logger[_0x6cbd('0x9')](_0x6cbd('0xa'),_0x308a8e,'request\x20sent');logger[_0x6cbd('0xb')](_0x6cbd('0xc'),_0x308a8e,_0x6cbd('0xd'),JSON['stringify'](_0x2fda9e));if(_0x2fda9e[_0x6cbd('0xe')]){if(_0x2fda9e[_0x6cbd('0xe')]['code']===0x1f4){logger[_0x6cbd('0xe')](_0x6cbd('0xa'),_0x308a8e,_0x2fda9e[_0x6cbd('0xe')]['message']);return _0x2a024b(_0x2fda9e[_0x6cbd('0xe')][_0x6cbd('0xf')]);}logger[_0x6cbd('0xe')](_0x6cbd('0xa'),_0x308a8e,_0x2fda9e[_0x6cbd('0xe')]['message']);return _0x2e76dc(_0x2fda9e['error'][_0x6cbd('0xf')]);}else{logger[_0x6cbd('0x9')](_0x6cbd('0xa'),_0x308a8e,_0x6cbd('0xd'));_0x2e76dc(_0x2fda9e[_0x6cbd('0x10')][_0x6cbd('0xf')]);}})[_0x6cbd('0x11')](function(_0x5358ad){logger['error'](_0x6cbd('0xa'),_0x308a8e,_0x5358ad);_0x2a024b(_0x5358ad);});});}
\ No newline at end of file
+var _0xab23=['stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xab23,0x1bc));var _0x3ab2=function(_0x367c8c,_0x4a48f1){_0x367c8c=_0x367c8c-0x0;var _0x33121e=_0xab23[_0x367c8c];return _0x33121e;};'use strict';var _=require(_0x3ab2('0x0'));var util=require(_0x3ab2('0x1'));var moment=require(_0x3ab2('0x2'));var BPromise=require(_0x3ab2('0x3'));var rs=require(_0x3ab2('0x4'));var fs=require('fs');var Redis=require(_0x3ab2('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3ab2('0x6'));var logger=require(_0x3ab2('0x7'))(_0x3ab2('0x8'));var config=require(_0x3ab2('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3ab2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e8d92,_0x5c861e,_0x36eee5){return new BPromise(function(_0x46d253,_0x20cfe1){return client[_0x3ab2('0xb')](_0x4e8d92,_0x36eee5)[_0x3ab2('0xc')](function(_0x120021){logger[_0x3ab2('0xd')](_0x3ab2('0xe'),_0x5c861e,_0x3ab2('0xf'));logger[_0x3ab2('0x10')](_0x3ab2('0x11'),_0x5c861e,'request\x20sent',JSON[_0x3ab2('0x12')](_0x120021));if(_0x120021[_0x3ab2('0x13')]){if(_0x120021[_0x3ab2('0x13')]['code']===0x1f4){logger['error'](_0x3ab2('0xe'),_0x5c861e,_0x120021[_0x3ab2('0x13')][_0x3ab2('0x14')]);return _0x20cfe1(_0x120021[_0x3ab2('0x13')][_0x3ab2('0x14')]);}logger[_0x3ab2('0x13')](_0x3ab2('0xe'),_0x5c861e,_0x120021[_0x3ab2('0x13')][_0x3ab2('0x14')]);return _0x46d253(_0x120021['error'][_0x3ab2('0x14')]);}else{logger['info'](_0x3ab2('0xe'),_0x5c861e,_0x3ab2('0xf'));_0x46d253(_0x120021['result']['message']);}})[_0x3ab2('0x15')](function(_0x43336e){logger[_0x3ab2('0x13')](_0x3ab2('0xe'),_0x5c861e,_0x43336e);_0x20cfe1(_0x43336e);});});}
\ No newline at end of file
index e724a85..dbe4fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9631=['create','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post'];(function(_0x59aadf,_0x215a89){var _0x5f04cb=function(_0x849a87){while(--_0x849a87){_0x59aadf['push'](_0x59aadf['shift']());}};_0x5f04cb(++_0x215a89);}(_0x9631,0x159));var _0x1963=function(_0x456f79,_0x303e8b){_0x456f79=_0x456f79-0x0;var _0x57c261=_0x9631[_0x456f79];return _0x57c261;};'use strict';var multer=require(_0x1963('0x0'));var util=require('util');var path=require(_0x1963('0x1'));var timeout=require(_0x1963('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1963('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x1963('0x4'));var config=require(_0x1963('0x5'));var controller=require('./contactItemType.controller');router[_0x1963('0x6')]('/',auth[_0x1963('0x7')](),controller[_0x1963('0x8')]);router['get'](_0x1963('0x9'),auth[_0x1963('0x7')](),controller[_0x1963('0xa')]);router[_0x1963('0xb')]('/',auth[_0x1963('0x7')](),controller[_0x1963('0xc')]);router['put']('/:id',auth[_0x1963('0x7')](),controller[_0x1963('0xd')]);router[_0x1963('0xe')]('/:id',auth[_0x1963('0x7')](),controller[_0x1963('0xf')]);module[_0x1963('0x10')]=router;
\ No newline at end of file
+var _0xf975=['Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','post','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x22adb4,_0x5c3680){var _0x15564f=function(_0x58f753){while(--_0x58f753){_0x22adb4['push'](_0x22adb4['shift']());}};_0x15564f(++_0x5c3680);}(_0xf975,0x161));var _0x5f97=function(_0xec814,_0x590ac3){_0xec814=_0xec814-0x0;var _0x3e5c2c=_0xf975[_0xec814];return _0x3e5c2c;};'use strict';var multer=require('multer');var util=require(_0x5f97('0x0'));var path=require(_0x5f97('0x1'));var timeout=require(_0x5f97('0x2'));var express=require(_0x5f97('0x3'));var router=express[_0x5f97('0x4')]();var fs_extra=require(_0x5f97('0x5'));var auth=require(_0x5f97('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./contactItemType.controller');router[_0x5f97('0x7')]('/',auth[_0x5f97('0x8')](),controller[_0x5f97('0x9')]);router['get'](_0x5f97('0xa'),auth[_0x5f97('0x8')](),controller['show']);router[_0x5f97('0xb')]('/',auth[_0x5f97('0x8')](),controller['create']);router[_0x5f97('0xc')](_0x5f97('0xa'),auth[_0x5f97('0x8')](),controller[_0x5f97('0xd')]);router[_0x5f97('0xe')]('/:id',auth[_0x5f97('0x8')](),controller[_0x5f97('0xf')]);module[_0x5f97('0x10')]=router;
\ No newline at end of file
index e9b23f6..0b9dbb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x55e786,_0x49576d){var _0x49ab26=function(_0x2817b4){while(--_0x2817b4){_0x55e786['push'](_0x55e786['shift']());}};_0x49ab26(++_0x49576d);}(_0xb10b,0x12a));var _0xbb10=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xb10b[_0x209941];return _0x1e8729;};'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
+var _0xbaf0=['name','exports','STRING'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index 05a182b..7d9fc34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b54=['attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','getItems','findOne','DashboardItem','order','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','squel','../../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','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','CustomDashboards','UserProfileResource','error','stack','name','index','map','Dashboard','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','options','find','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','role','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','voice','web-report','attrReport','reportType'];(function(_0x548fdd,_0x3ddc25){var _0x51213d=function(_0x3295b7){while(--_0x3295b7){_0x548fdd['push'](_0x548fdd['shift']());}};_0x51213d(++_0x3ddc25);}(_0x3b54,0x8b));var _0x43b5=function(_0x1e93fa,_0x210f48){_0x1e93fa=_0x1e93fa-0x0;var _0xd4e1e6=_0x3b54[_0x1e93fa];return _0xd4e1e6;};'use strict';var emlformat=require(_0x43b5('0x0'));var rimraf=require(_0x43b5('0x1'));var zipdir=require(_0x43b5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x43b5('0x3'));var moment=require(_0x43b5('0x4'));var BPromise=require(_0x43b5('0x5'));var Mustache=require('mustache');var util=require(_0x43b5('0x6'));var path=require(_0x43b5('0x7'));var sox=require(_0x43b5('0x8'));var csv=require(_0x43b5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x43b5('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x43b5('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43b5('0xb'));var as=require(_0x43b5('0xc'));var hardwareService=require(_0x43b5('0xd'));var logger=require(_0x43b5('0xe'))('api');var utils=require(_0x43b5('0xf'));var config=require(_0x43b5('0x10'));var licenseUtil=require(_0x43b5('0x11'));var db=require(_0x43b5('0x12'))['db'];config[_0x43b5('0x13')]=_[_0x43b5('0x14')](config[_0x43b5('0x13')],{'host':_0x43b5('0x15'),'port':0x18eb});var socket=require(_0x43b5('0x16'))(new Redis(config['redis']));require(_0x43b5('0x17'))[_0x43b5('0x18')](socket);function respondWithStatusCode(_0x4d0ffe,_0x12c681){_0x12c681=_0x12c681||0xcc;return function(_0x311053){if(_0x311053){return _0x4d0ffe[_0x43b5('0x19')](_0x12c681);}return _0x4d0ffe[_0x43b5('0x1a')](_0x12c681)[_0x43b5('0x1b')]();};}function respondWithResult(_0x4ce7fc,_0x3341c3){_0x3341c3=_0x3341c3||0xc8;return function(_0x54e8f7){if(_0x54e8f7){return _0x4ce7fc[_0x43b5('0x1a')](_0x3341c3)[_0x43b5('0x1c')](_0x54e8f7);}};}function respondWithFilteredResult(_0x2858a7,_0x224d7c){return function(_0x112c09){if(_0x112c09){var _0x599c03=typeof _0x224d7c[_0x43b5('0x1d')]===_0x43b5('0x1e')&&typeof _0x224d7c[_0x43b5('0x1f')]==='undefined';var _0x45d907=_0x112c09[_0x43b5('0x20')];var _0x20a0ce=_0x599c03?0x0:_0x224d7c[_0x43b5('0x1d')];var _0x30cd11=_0x599c03?_0x112c09[_0x43b5('0x20')]:_0x224d7c[_0x43b5('0x1d')]+_0x224d7c[_0x43b5('0x1f')];var _0x5d7783;if(_0x30cd11>=_0x45d907){_0x30cd11=_0x45d907;_0x5d7783=0xc8;}else{_0x5d7783=0xce;}_0x2858a7[_0x43b5('0x1a')](_0x5d7783);return _0x2858a7[_0x43b5('0x21')](_0x43b5('0x22'),_0x20a0ce+'-'+_0x30cd11+'/'+_0x45d907)[_0x43b5('0x1c')](_0x112c09);}return null;};}function patchUpdates(_0xf3eb07){return function(_0x454248){try{jsonpatch[_0x43b5('0x23')](_0x454248,_0xf3eb07,!![]);}catch(_0x4e9992){return BPromise[_0x43b5('0x24')](_0x4e9992);}return _0x454248[_0x43b5('0x25')]();};}function saveUpdates(_0x5dca72,_0x558d83){return function(_0x5d809f){if(_0x5d809f){return _0x5d809f[_0x43b5('0x26')](_0x5dca72)[_0x43b5('0x27')](function(_0x545902){return _0x545902;});}return null;};}function removeEntity(_0x367807,_0x5c1b7a){return function(_0x559e19){if(_0x559e19){return _0x559e19[_0x43b5('0x28')]()[_0x43b5('0x27')](function(){var _0x41b598=_0x559e19['get']({'plain':!![]});var _0x2ef70b=_0x43b5('0x29');return db[_0x43b5('0x2a')][_0x43b5('0x28')]({'where':{'type':_0x2ef70b,'resourceId':_0x41b598['id']}})[_0x43b5('0x27')](function(){return _0x559e19;});})[_0x43b5('0x27')](function(){_0x367807[_0x43b5('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22140a,_0xedb06d){return function(_0x2fa302){if(!_0x2fa302){_0x22140a[_0x43b5('0x19')](0x194);}return _0x2fa302;};}function handleError(_0xbc7997,_0x237e0d){_0x237e0d=_0x237e0d||0x1f4;return function(_0x10c13c){logger[_0x43b5('0x2b')](_0x10c13c[_0x43b5('0x2c')]);if(_0x10c13c[_0x43b5('0x2d')]){delete _0x10c13c[_0x43b5('0x2d')];}_0xbc7997[_0x43b5('0x1a')](_0x237e0d)['send'](_0x10c13c);};}exports[_0x43b5('0x2e')]=function(_0x39de4e,_0xdf1e7e){var _0x5ed1d4={},_0x4630cd={},_0x3bdd77={'count':0x0,'rows':[]};var _0x474658=_[_0x43b5('0x2f')](db[_0x43b5('0x30')][_0x43b5('0x31')],function(_0x5b9f86){return{'name':_0x5b9f86[_0x43b5('0x32')],'type':_0x5b9f86[_0x43b5('0x33')][_0x43b5('0x34')]};});_0x4630cd[_0x43b5('0x35')]=_[_0x43b5('0x2f')](_0x474658,'name');_0x4630cd[_0x43b5('0x36')]=_[_0x43b5('0x37')](_0x39de4e[_0x43b5('0x36')]);_0x4630cd[_0x43b5('0x38')]=_[_0x43b5('0x39')](_0x4630cd['model'],_0x4630cd[_0x43b5('0x36')]);_0x5ed1d4[_0x43b5('0x3a')]=_[_0x43b5('0x39')](_0x4630cd[_0x43b5('0x35')],qs[_0x43b5('0x3b')](_0x39de4e[_0x43b5('0x36')][_0x43b5('0x3b')]));_0x5ed1d4['attributes']=_0x5ed1d4[_0x43b5('0x3a')][_0x43b5('0x3c')]?_0x5ed1d4[_0x43b5('0x3a')]:_0x4630cd[_0x43b5('0x35')];if(!_0x39de4e[_0x43b5('0x36')]['hasOwnProperty'](_0x43b5('0x3d'))){_0x5ed1d4['limit']=qs[_0x43b5('0x1f')](_0x39de4e[_0x43b5('0x36')]['limit']);_0x5ed1d4['offset']=qs[_0x43b5('0x1d')](_0x39de4e[_0x43b5('0x36')]['offset']);}_0x5ed1d4['order']=qs[_0x43b5('0x3e')](_0x39de4e['query']['sort']);_0x5ed1d4[_0x43b5('0x3f')]=qs[_0x43b5('0x38')](_[_0x43b5('0x40')](_0x39de4e[_0x43b5('0x36')],_0x4630cd[_0x43b5('0x38')]),_0x474658);if(_0x39de4e[_0x43b5('0x36')]['filter']){_0x5ed1d4[_0x43b5('0x3f')]=_[_0x43b5('0x41')](_0x5ed1d4['where'],{'$or':_[_0x43b5('0x2f')](_0x474658,function(_0x315dbc){if(_0x315dbc[_0x43b5('0x33')]!==_0x43b5('0x42')){var _0x138a57={};_0x138a57[_0x315dbc[_0x43b5('0x2d')]]={'$like':'%'+_0x39de4e[_0x43b5('0x36')][_0x43b5('0x43')]+'%'};return _0x138a57;}})});}_0x5ed1d4=_[_0x43b5('0x41')]({},_0x5ed1d4,_0x39de4e['options']);var _0x2d64ac={'where':_0x5ed1d4[_0x43b5('0x3f')]};return db[_0x43b5('0x30')][_0x43b5('0x20')](_0x2d64ac)['then'](function(_0x49cb50){_0x3bdd77['count']=_0x49cb50;if(_0x39de4e[_0x43b5('0x36')][_0x43b5('0x44')]){_0x5ed1d4[_0x43b5('0x45')]=[{'all':!![]}];}return db[_0x43b5('0x30')][_0x43b5('0x46')](_0x5ed1d4);})[_0x43b5('0x27')](function(_0x50c252){_0x3bdd77['rows']=_0x50c252;return _0x3bdd77;})[_0x43b5('0x27')](respondWithFilteredResult(_0xdf1e7e,_0x5ed1d4))[_0x43b5('0x47')](handleError(_0xdf1e7e,null));};exports[_0x43b5('0x48')]=function(_0x221437,_0x425e62){var _0x4b9474={'raw':![],'where':{'id':_0x221437[_0x43b5('0x49')]['id']}},_0x29b4be={};_0x29b4be[_0x43b5('0x35')]=_['keys'](db['Dashboard'][_0x43b5('0x31')]);_0x29b4be['query']=_['keys'](_0x221437[_0x43b5('0x36')]);_0x29b4be[_0x43b5('0x38')]=_[_0x43b5('0x39')](_0x29b4be['model'],_0x29b4be[_0x43b5('0x36')]);_0x4b9474['attributes']=_['intersection'](_0x29b4be[_0x43b5('0x35')],qs[_0x43b5('0x3b')](_0x221437['query'][_0x43b5('0x3b')]));_0x4b9474[_0x43b5('0x3a')]=_0x4b9474[_0x43b5('0x3a')][_0x43b5('0x3c')]?_0x4b9474[_0x43b5('0x3a')]:_0x29b4be[_0x43b5('0x35')];if(_0x221437[_0x43b5('0x36')][_0x43b5('0x44')]){_0x4b9474['include']=[{'all':!![]}];}_0x4b9474=_[_0x43b5('0x41')]({},_0x4b9474,_0x221437[_0x43b5('0x4a')]);return db[_0x43b5('0x30')][_0x43b5('0x4b')](_0x4b9474)[_0x43b5('0x27')](handleEntityNotFound(_0x425e62,null))[_0x43b5('0x27')](respondWithResult(_0x425e62,null))[_0x43b5('0x47')](handleError(_0x425e62,null));};exports['create']=function(_0x436b47,_0x3b364b){return db[_0x43b5('0x30')]['create'](_0x436b47['body'],{})[_0x43b5('0x27')](function(_0x3205cb){var _0x16d79b=_0x436b47['user'][_0x43b5('0x4c')]({'plain':!![]});if(!_0x16d79b)throw new Error(_0x43b5('0x4d'));if(_0x16d79b['role']===_0x43b5('0x4e')){var _0x3f32d0=_0x3205cb[_0x43b5('0x4c')]({'plain':!![]});var _0x240b2e=_0x43b5('0x29');return db[_0x43b5('0x4f')]['find']({'where':{'name':_0x240b2e,'userProfileId':_0x16d79b[_0x43b5('0x50')]},'raw':!![]})[_0x43b5('0x27')](function(_0x599c18){if(_0x599c18&&_0x599c18[_0x43b5('0x51')]===0x0){return db['UserProfileResource'][_0x43b5('0x52')]({'name':_0x3f32d0[_0x43b5('0x2d')],'resourceId':_0x3f32d0['id'],'type':_0x599c18[_0x43b5('0x2d')],'sectionId':_0x599c18['id']},{})[_0x43b5('0x27')](function(){return _0x3205cb;});}else{return _0x3205cb;}})[_0x43b5('0x47')](function(_0x330854){logger[_0x43b5('0x2b')](_0x43b5('0x53'),_0x330854);throw _0x330854;});}return _0x3205cb;})[_0x43b5('0x27')](respondWithResult(_0x3b364b,0xc9))[_0x43b5('0x47')](handleError(_0x3b364b,null));};exports[_0x43b5('0x54')]=function(_0x29d875,_0x5266c9){var _0x2599b1={'where':{'id':_0x29d875[_0x43b5('0x49')]['id']}},_0xc46653={};_0xc46653['model']=_[_0x43b5('0x37')](db[_0x43b5('0x30')][_0x43b5('0x31')]);_0x2599b1[_0x43b5('0x3a')]=_[_0x43b5('0x39')](_0xc46653[_0x43b5('0x35')],qs[_0x43b5('0x3b')](_0x29d875[_0x43b5('0x36')][_0x43b5('0x3b')]));_0x2599b1[_0x43b5('0x3a')]=_0x2599b1[_0x43b5('0x3a')]['length']?_0x2599b1[_0x43b5('0x3a')]:_0xc46653[_0x43b5('0x35')];if(_0x29d875[_0x43b5('0x36')][_0x43b5('0x44')]){_0x2599b1[_0x43b5('0x45')]=[{'all':!![]}];}_0x2599b1=_[_0x43b5('0x41')]({},_0x2599b1,_0x29d875['options']);return db['Dashboard'][_0x43b5('0x4b')](_0x2599b1)[_0x43b5('0x27')](handleEntityNotFound(_0x5266c9,null))[_0x43b5('0x27')](function(_0x38d17c){if(_0x38d17c){var _0x542734=_0x38d17c[_0x43b5('0x4c')]({'plain':!![]});_0x542734=qs[_0x43b5('0x55')](_0x542734,['id',_0x43b5('0x56'),_0x43b5('0x57')]);_0x29d875['body']=_[_0x43b5('0x55')](_0x29d875[_0x43b5('0x58')],['id','createdAt',_0x43b5('0x57')]);return db[_0x43b5('0x30')]['create'](_['merge'](_0x542734,_0x29d875['body']),{'include':_0x29d875[_0x43b5('0x36')][_0x43b5('0x44')]?[{'all':!![]}]:undefined})[_0x43b5('0x27')](function(_0x4ab9a2){var _0x521ee3=_0x29d875['user'][_0x43b5('0x4c')]({'plain':!![]});if(!_0x521ee3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x521ee3[_0x43b5('0x59')]==='user'){var _0x275604=_0x4ab9a2[_0x43b5('0x4c')]({'plain':!![]});var _0x920a1f='CustomDashboards';return db[_0x43b5('0x4f')][_0x43b5('0x4b')]({'where':{'name':_0x920a1f,'userProfileId':_0x521ee3[_0x43b5('0x50')]},'raw':!![]})['then'](function(_0x3acd67){if(_0x3acd67&&_0x3acd67[_0x43b5('0x51')]===0x0){return db[_0x43b5('0x2a')][_0x43b5('0x52')]({'name':_0x275604[_0x43b5('0x2d')],'resourceId':_0x275604['id'],'type':_0x3acd67['name'],'sectionId':_0x3acd67['id']},{})[_0x43b5('0x27')](function(){return _0x4ab9a2;});}else{return _0x4ab9a2;}})['catch'](function(_0x199798){logger['error'](_0x43b5('0x53'),_0x199798);throw _0x199798;});}return _0x4ab9a2;});}})[_0x43b5('0x27')](respondWithResult(_0x5266c9,0xc9))[_0x43b5('0x47')](handleError(_0x5266c9,null));};exports[_0x43b5('0x26')]=function(_0xb48a13,_0x217eb2){if(_0xb48a13[_0x43b5('0x58')]['id']){delete _0xb48a13[_0x43b5('0x58')]['id'];}return db[_0x43b5('0x30')][_0x43b5('0x4b')]({'where':{'id':_0xb48a13[_0x43b5('0x49')]['id']}})[_0x43b5('0x27')](handleEntityNotFound(_0x217eb2,null))[_0x43b5('0x27')](saveUpdates(_0xb48a13[_0x43b5('0x58')],null))[_0x43b5('0x27')](respondWithResult(_0x217eb2,null))[_0x43b5('0x47')](handleError(_0x217eb2,null));};exports['destroy']=function(_0x3c365e,_0x109b9b){return db['Dashboard'][_0x43b5('0x4b')]({'where':{'id':_0x3c365e[_0x43b5('0x49')]['id']}})['then'](handleEntityNotFound(_0x109b9b,null))[_0x43b5('0x27')](removeEntity(_0x109b9b,null))['catch'](handleError(_0x109b9b,null));};function widgetAttributes(_0x11ff4){try{switch(_0x11ff4['type']){case _0x43b5('0x5a'):return[{'name':_0x43b5('0x5b'),'value':_0x11ff4[_0x43b5('0x5b')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x0]?_0x11ff4[_0x43b5('0x5c')][0x0][_0x43b5('0x5d')]:undefined)||_0x43b5('0x5e')}];case _0x43b5('0x5f'):return[{'name':'attrPath','value':_0x11ff4[_0x43b5('0x60')]||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x0]?_0x11ff4[_0x43b5('0x5c')][0x0][_0x43b5('0x5d')]:undefined)||''}];case _0x43b5('0x61'):return[{'name':_0x43b5('0x62'),'value':_0x11ff4[_0x43b5('0x62')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x0]?_0x11ff4[_0x43b5('0x5c')][0x0][_0x43b5('0x5d')]:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x11ff4[_0x43b5('0x63')]||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x1]?_0x11ff4[_0x43b5('0x5c')][0x1][_0x43b5('0x5d')]:undefined)||_0x43b5('0x64')},{'name':_0x43b5('0x65'),'value':_0x11ff4[_0x43b5('0x65')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0x2]?_0x11ff4[_0x43b5('0x5c')][0x2]['value']:undefined)||0xc}];case _0x43b5('0x66'):return[{'name':'attrMetric','value':_0x11ff4['attrMetric']||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x0]?_0x11ff4[_0x43b5('0x5c')][0x0][_0x43b5('0x5d')]:undefined)||_0x43b5('0x67')},{'name':'attrVoiceQueues','value':_0x11ff4[_0x43b5('0x68')]||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x1]?_0x11ff4[_0x43b5('0x5c')][0x1][_0x43b5('0x5d')]:undefined)||[]},{'name':_0x43b5('0x65'),'value':_0x11ff4['attrFontSize']||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x2]?_0x11ff4['attrs'][0x2][_0x43b5('0x5d')]:undefined)||0x14},{'name':_0x43b5('0x69'),'value':_0x11ff4[_0x43b5('0x69')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x3]?_0x11ff4[_0x43b5('0x5c')][0x3][_0x43b5('0x5d')]:undefined)||'voice'},{'name':_0x43b5('0x6a'),'value':_0x11ff4[_0x43b5('0x6a')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x4]?_0x11ff4[_0x43b5('0x5c')][0x4][_0x43b5('0x5d')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x11ff4[_0x43b5('0x6b')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x5]?_0x11ff4['attrs'][0x5][_0x43b5('0x5d')]:undefined)||''},{'name':_0x43b5('0x6c'),'value':_0x11ff4['attrSmsAccounts']||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x6]?_0x11ff4[_0x43b5('0x5c')][0x6][_0x43b5('0x5d')]:undefined)||''},{'name':_0x43b5('0x6d'),'value':_0x11ff4[_0x43b5('0x6d')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0x7]?_0x11ff4['attrs'][0x7]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x11ff4[_0x43b5('0x6e')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x8]?_0x11ff4[_0x43b5('0x5c')][0x8][_0x43b5('0x5d')]:undefined)||''},{'name':_0x43b5('0x6f'),'value':_0x11ff4['attrChatWebsites']||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x9]?_0x11ff4[_0x43b5('0x5c')][0x9][_0x43b5('0x5d')]:undefined)||''}];case _0x43b5('0x70'):case _0x43b5('0x71'):return[{'name':_0x43b5('0x72'),'value':_0x11ff4[_0x43b5('0x72')]||(_0x11ff4['attrs']&&_0x11ff4['attrs'][0x0]?_0x11ff4[_0x43b5('0x5c')][0x0]['value']:undefined)||_0x43b5('0x67')},{'name':'attrSerie2','value':_0x11ff4[_0x43b5('0x73')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0x1]?_0x11ff4[_0x43b5('0x5c')][0x1][_0x43b5('0x5d')]:undefined)||null},{'name':_0x43b5('0x74'),'value':_0x11ff4[_0x43b5('0x74')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x2]?_0x11ff4['attrs'][0x2][_0x43b5('0x5d')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x11ff4[_0x43b5('0x68')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0x3]?_0x11ff4['attrs'][0x3]['value']:undefined)||[]},{'name':_0x43b5('0x69'),'value':_0x11ff4[_0x43b5('0x69')]||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x4]?_0x11ff4[_0x43b5('0x5c')][0x4][_0x43b5('0x5d')]:undefined)||_0x43b5('0x75')},{'name':_0x43b5('0x6a'),'value':_0x11ff4[_0x43b5('0x6a')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x5]?_0x11ff4['attrs'][0x5][_0x43b5('0x5d')]:undefined)||''},{'name':_0x43b5('0x6b'),'value':_0x11ff4[_0x43b5('0x6b')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x6]?_0x11ff4['attrs'][0x6][_0x43b5('0x5d')]:undefined)||''},{'name':_0x43b5('0x6c'),'value':_0x11ff4[_0x43b5('0x6c')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4[_0x43b5('0x5c')][0x7]?_0x11ff4['attrs'][0x7]['value']:undefined)||''},{'name':_0x43b5('0x6d'),'value':_0x11ff4[_0x43b5('0x6d')]||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x8]?_0x11ff4[_0x43b5('0x5c')][0x8][_0x43b5('0x5d')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x11ff4['attrWhatsappAccounts']||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0x9]?_0x11ff4['attrs'][0x9][_0x43b5('0x5d')]:undefined)||''},{'name':_0x43b5('0x6f'),'value':_0x11ff4[_0x43b5('0x6f')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0xa]?_0x11ff4[_0x43b5('0x5c')][0xa][_0x43b5('0x5d')]:undefined)||''}];case _0x43b5('0x76'):return[{'name':_0x43b5('0x77'),'type':_0x11ff4[_0x43b5('0x78')]||(_0x11ff4['attrs']&&_0x11ff4['attrs'][0x0]?_0x11ff4['attrs'][0x0][_0x43b5('0x33')]:undefined)||null,'value':_0x11ff4[_0x43b5('0x77')]||(_0x11ff4[_0x43b5('0x5c')]&&_0x11ff4['attrs'][0x0]?_0x11ff4[_0x43b5('0x5c')][0x0][_0x43b5('0x5d')]:undefined)||null},{'name':_0x43b5('0x79'),'value':_0x11ff4[_0x43b5('0x79')]||(_0x11ff4['attrs']&&_0x11ff4[_0x43b5('0x5c')][0x1]?_0x11ff4[_0x43b5('0x5c')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x5c02d6){logger[_0x43b5('0x2b')](_0x43b5('0x7a'),JSON[_0x43b5('0x7b')](_0x5c02d6));return[];}}exports[_0x43b5('0x7c')]=function(_0x315bf2,_0x3503f2,_0x9fa0f){if(_0x315bf2[_0x43b5('0x58')]['id']){delete _0x315bf2[_0x43b5('0x58')]['id'];}return db[_0x43b5('0x30')][_0x43b5('0x4b')]({'where':{'id':_0x315bf2['params']['id']}})[_0x43b5('0x27')](handleEntityNotFound(_0x3503f2,null))['then'](function(_0x5e8a82){if(_0x5e8a82){_0x315bf2[_0x43b5('0x58')][_0x43b5('0x7d')]=_0x5e8a82['id'];_0x315bf2['body']['attrs']=widgetAttributes(_0x315bf2['body']);return db['DashboardItem']['create'](_0x315bf2['body']);}})['then'](respondWithResult(_0x3503f2,null))[_0x43b5('0x47')](handleError(_0x3503f2,null));};exports[_0x43b5('0x7e')]=function(_0x5ec2b0,_0x55e255,_0x2d2e19){var _0x1804f6={};var _0x3589ee={};var _0x4b6776;var _0x4bef7c;return db[_0x43b5('0x30')][_0x43b5('0x7f')]({'where':{'id':_0x5ec2b0[_0x43b5('0x49')]['id']}})[_0x43b5('0x27')](handleEntityNotFound(_0x55e255,null))[_0x43b5('0x27')](function(_0x1907e0){if(_0x1907e0){_0x4b6776=_0x1907e0;_0x3589ee[_0x43b5('0x35')]=_[_0x43b5('0x37')](db[_0x43b5('0x80')][_0x43b5('0x31')]);_0x3589ee[_0x43b5('0x36')]=_['keys'](_0x5ec2b0[_0x43b5('0x36')]);_0x3589ee['filters']=_['intersection'](_0x3589ee[_0x43b5('0x35')],_0x3589ee[_0x43b5('0x36')]);_0x1804f6['attributes']=_[_0x43b5('0x39')](_0x3589ee['model'],qs['fields'](_0x5ec2b0['query']['fields']));_0x1804f6[_0x43b5('0x3a')]=_0x1804f6[_0x43b5('0x3a')]['length']?_0x1804f6['attributes']:_0x3589ee[_0x43b5('0x35')];_0x1804f6[_0x43b5('0x81')]=qs[_0x43b5('0x3e')](_0x5ec2b0[_0x43b5('0x36')][_0x43b5('0x3e')]);_0x1804f6[_0x43b5('0x3f')]=qs[_0x43b5('0x38')](_['pick'](_0x5ec2b0[_0x43b5('0x36')],_0x3589ee['filters']));if(_0x5ec2b0['query'][_0x43b5('0x43')]){_0x1804f6[_0x43b5('0x3f')]=_[_0x43b5('0x41')](_0x1804f6[_0x43b5('0x3f')],{'$or':_[_0x43b5('0x2f')](_0x1804f6[_0x43b5('0x3a')],function(_0x4cecd7){var _0x30c888={};_0x30c888[_0x4cecd7]={'$like':'%'+_0x5ec2b0[_0x43b5('0x36')][_0x43b5('0x43')]+'%'};return _0x30c888;})});}_0x1804f6=_[_0x43b5('0x41')]({},_0x1804f6,_0x5ec2b0[_0x43b5('0x4a')]);return _0x4b6776['getItems'](_0x1804f6);}})[_0x43b5('0x27')](function(_0x3eaa12){if(_0x3eaa12){_0x4bef7c=_0x3eaa12[_0x43b5('0x3c')];if(!_0x5ec2b0[_0x43b5('0x36')]['hasOwnProperty']('nolimit')){_0x1804f6[_0x43b5('0x1f')]=qs['limit'](_0x5ec2b0[_0x43b5('0x36')][_0x43b5('0x1f')]);_0x1804f6[_0x43b5('0x1d')]=qs['offset'](_0x5ec2b0[_0x43b5('0x36')][_0x43b5('0x1d')]);}return _0x4b6776[_0x43b5('0x7e')](_0x1804f6);}})[_0x43b5('0x27')](function(_0x14dd7d){if(_0x14dd7d){return _0x14dd7d?{'count':_0x4bef7c,'rows':_0x14dd7d}:null;}})[_0x43b5('0x27')](respondWithResult(_0x55e255,null))[_0x43b5('0x47')](handleError(_0x55e255,null));};
\ No newline at end of file
+var _0x0962=['attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','findOne','pick','eml-format','rimraf','zip-dir','moment','bluebird','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/license/util','../../mysqldb','redis','socket.io-emitter','./dashboard.socket','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','map','rawAttributes','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','type','VIRTUAL','merge','options','Dashboard','include','findAll','rows','catch','show','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','autoAssociation','iframe','attrUrl','attrs','https://','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart'];(function(_0x60cfd0,_0xc533c3){var _0x892df9=function(_0x5eb985){while(--_0x5eb985){_0x60cfd0['push'](_0x60cfd0['shift']());}};_0x892df9(++_0xc533c3);}(_0x0962,0x18a));var _0x2096=function(_0xecc200,_0x2a4694){_0xecc200=_0xecc200-0x0;var _0x50ae57=_0x0962[_0xecc200];return _0x50ae57;};'use strict';var emlformat=require(_0x2096('0x0'));var rimraf=require(_0x2096('0x1'));var zipdir=require(_0x2096('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2096('0x3'));var BPromise=require(_0x2096('0x4'));var Mustache=require('mustache');var util=require(_0x2096('0x5'));var path=require(_0x2096('0x6'));var sox=require(_0x2096('0x7'));var csv=require(_0x2096('0x8'));var ejs=require(_0x2096('0x9'));var fs=require('fs');var fs_extra=require(_0x2096('0xa'));var _=require(_0x2096('0xb'));var squel=require(_0x2096('0xc'));var crypto=require(_0x2096('0xd'));var jsforce=require(_0x2096('0xe'));var deskjs=require(_0x2096('0xf'));var toCsv=require(_0x2096('0x8'));var querystring=require(_0x2096('0x10'));var Papa=require(_0x2096('0x11'));var Redis=require(_0x2096('0x12'));var authService=require(_0x2096('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2096('0x14'));var hardwareService=require(_0x2096('0x15'));var logger=require(_0x2096('0x16'))(_0x2096('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2096('0x18'));var db=require(_0x2096('0x19'))['db'];config[_0x2096('0x1a')]=_['defaults'](config[_0x2096('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x2096('0x1b'))(new Redis(config[_0x2096('0x1a')]));require(_0x2096('0x1c'))['register'](socket);function respondWithStatusCode(_0x3a8608,_0xed403a){_0xed403a=_0xed403a||0xcc;return function(_0x417325){if(_0x417325){return _0x3a8608[_0x2096('0x1d')](_0xed403a);}return _0x3a8608[_0x2096('0x1e')](_0xed403a)['end']();};}function respondWithResult(_0x3daddc,_0x2f0f9e){_0x2f0f9e=_0x2f0f9e||0xc8;return function(_0x37b08f){if(_0x37b08f){return _0x3daddc['status'](_0x2f0f9e)[_0x2096('0x1f')](_0x37b08f);}};}function respondWithFilteredResult(_0x379d75,_0x3d58b2){return function(_0x18de9e){if(_0x18de9e){var _0x18b922=typeof _0x3d58b2[_0x2096('0x20')]===_0x2096('0x21')&&typeof _0x3d58b2[_0x2096('0x22')]===_0x2096('0x21');var _0x594f4e=_0x18de9e[_0x2096('0x23')];var _0x5d71c6=_0x18b922?0x0:_0x3d58b2[_0x2096('0x20')];var _0x292d5b=_0x18b922?_0x18de9e[_0x2096('0x23')]:_0x3d58b2[_0x2096('0x20')]+_0x3d58b2[_0x2096('0x22')];var _0x5d520d;if(_0x292d5b>=_0x594f4e){_0x292d5b=_0x594f4e;_0x5d520d=0xc8;}else{_0x5d520d=0xce;}_0x379d75['status'](_0x5d520d);return _0x379d75[_0x2096('0x24')]('Content-Range',_0x5d71c6+'-'+_0x292d5b+'/'+_0x594f4e)[_0x2096('0x1f')](_0x18de9e);}return null;};}function patchUpdates(_0x46d5c1){return function(_0x1ab9e2){try{jsonpatch['apply'](_0x1ab9e2,_0x46d5c1,!![]);}catch(_0x49977a){return BPromise[_0x2096('0x25')](_0x49977a);}return _0x1ab9e2[_0x2096('0x26')]();};}function saveUpdates(_0x477b21,_0x4a55a6){return function(_0x59adde){if(_0x59adde){return _0x59adde[_0x2096('0x27')](_0x477b21)[_0x2096('0x28')](function(_0x39762a){return _0x39762a;});}return null;};}function removeEntity(_0x21de38,_0x2fa60c){return function(_0x187739){if(_0x187739){return _0x187739[_0x2096('0x29')]()[_0x2096('0x28')](function(){var _0x1747e6=_0x187739[_0x2096('0x2a')]({'plain':!![]});var _0xa01c10='CustomDashboards';return db[_0x2096('0x2b')]['destroy']({'where':{'type':_0xa01c10,'resourceId':_0x1747e6['id']}})[_0x2096('0x28')](function(){return _0x187739;});})[_0x2096('0x28')](function(){_0x21de38[_0x2096('0x1e')](0xcc)[_0x2096('0x2c')]();});}};}function handleEntityNotFound(_0xa46bd,_0x2c64f2){return function(_0x149ea4){if(!_0x149ea4){_0xa46bd[_0x2096('0x1d')](0x194);}return _0x149ea4;};}function handleError(_0x5e8cf2,_0x1a0923){_0x1a0923=_0x1a0923||0x1f4;return function(_0x28fb4b){logger[_0x2096('0x2d')](_0x28fb4b[_0x2096('0x2e')]);if(_0x28fb4b['name']){delete _0x28fb4b[_0x2096('0x2f')];}_0x5e8cf2[_0x2096('0x1e')](_0x1a0923)['send'](_0x28fb4b);};}exports['index']=function(_0x3286ce,_0x56929b){var _0x20e7d1={},_0x2558c3={},_0x4f1e4b={'count':0x0,'rows':[]};var _0x4f50aa=_[_0x2096('0x30')](db['Dashboard'][_0x2096('0x31')],function(_0x190f94){return{'name':_0x190f94['fieldName'],'type':_0x190f94['type'][_0x2096('0x32')]};});_0x2558c3[_0x2096('0x33')]=_[_0x2096('0x30')](_0x4f50aa,_0x2096('0x2f'));_0x2558c3['query']=_[_0x2096('0x34')](_0x3286ce[_0x2096('0x35')]);_0x2558c3['filters']=_[_0x2096('0x36')](_0x2558c3[_0x2096('0x33')],_0x2558c3[_0x2096('0x35')]);_0x20e7d1['attributes']=_[_0x2096('0x36')](_0x2558c3[_0x2096('0x33')],qs[_0x2096('0x37')](_0x3286ce[_0x2096('0x35')][_0x2096('0x37')]));_0x20e7d1['attributes']=_0x20e7d1[_0x2096('0x38')][_0x2096('0x39')]?_0x20e7d1[_0x2096('0x38')]:_0x2558c3[_0x2096('0x33')];if(!_0x3286ce['query'][_0x2096('0x3a')](_0x2096('0x3b'))){_0x20e7d1[_0x2096('0x22')]=qs[_0x2096('0x22')](_0x3286ce[_0x2096('0x35')][_0x2096('0x22')]);_0x20e7d1[_0x2096('0x20')]=qs['offset'](_0x3286ce[_0x2096('0x35')][_0x2096('0x20')]);}_0x20e7d1['order']=qs['sort'](_0x3286ce[_0x2096('0x35')][_0x2096('0x3c')]);_0x20e7d1[_0x2096('0x3d')]=qs[_0x2096('0x3e')](_['pick'](_0x3286ce['query'],_0x2558c3['filters']),_0x4f50aa);if(_0x3286ce['query'][_0x2096('0x3f')]){_0x20e7d1['where']=_['merge'](_0x20e7d1[_0x2096('0x3d')],{'$or':_[_0x2096('0x30')](_0x4f50aa,function(_0x5d4143){if(_0x5d4143[_0x2096('0x40')]!==_0x2096('0x41')){var _0x2afc84={};_0x2afc84[_0x5d4143[_0x2096('0x2f')]]={'$like':'%'+_0x3286ce['query'][_0x2096('0x3f')]+'%'};return _0x2afc84;}})});}_0x20e7d1=_[_0x2096('0x42')]({},_0x20e7d1,_0x3286ce[_0x2096('0x43')]);var _0x2f6435={'where':_0x20e7d1['where']};return db[_0x2096('0x44')]['count'](_0x2f6435)['then'](function(_0x5c1127){_0x4f1e4b[_0x2096('0x23')]=_0x5c1127;if(_0x3286ce[_0x2096('0x35')]['includeAll']){_0x20e7d1[_0x2096('0x45')]=[{'all':!![]}];}return db[_0x2096('0x44')][_0x2096('0x46')](_0x20e7d1);})[_0x2096('0x28')](function(_0x5c281f){_0x4f1e4b[_0x2096('0x47')]=_0x5c281f;return _0x4f1e4b;})[_0x2096('0x28')](respondWithFilteredResult(_0x56929b,_0x20e7d1))[_0x2096('0x48')](handleError(_0x56929b,null));};exports[_0x2096('0x49')]=function(_0x452f20,_0x36ee4c){var _0x2495e3={'raw':![],'where':{'id':_0x452f20['params']['id']}},_0x320c53={};_0x320c53[_0x2096('0x33')]=_[_0x2096('0x34')](db[_0x2096('0x44')][_0x2096('0x31')]);_0x320c53[_0x2096('0x35')]=_[_0x2096('0x34')](_0x452f20['query']);_0x320c53[_0x2096('0x3e')]=_[_0x2096('0x36')](_0x320c53[_0x2096('0x33')],_0x320c53['query']);_0x2495e3[_0x2096('0x38')]=_[_0x2096('0x36')](_0x320c53[_0x2096('0x33')],qs[_0x2096('0x37')](_0x452f20[_0x2096('0x35')][_0x2096('0x37')]));_0x2495e3[_0x2096('0x38')]=_0x2495e3['attributes'][_0x2096('0x39')]?_0x2495e3[_0x2096('0x38')]:_0x320c53[_0x2096('0x33')];if(_0x452f20[_0x2096('0x35')][_0x2096('0x4a')]){_0x2495e3[_0x2096('0x45')]=[{'all':!![]}];}_0x2495e3=_['merge']({},_0x2495e3,_0x452f20['options']);return db[_0x2096('0x44')][_0x2096('0x4b')](_0x2495e3)['then'](handleEntityNotFound(_0x36ee4c,null))[_0x2096('0x28')](respondWithResult(_0x36ee4c,null))[_0x2096('0x48')](handleError(_0x36ee4c,null));};exports[_0x2096('0x4c')]=function(_0x21d9ec,_0x4c12dd){return db[_0x2096('0x44')]['create'](_0x21d9ec['body'],{})[_0x2096('0x28')](function(_0x88da04){var _0x2b0d18=_0x21d9ec[_0x2096('0x4d')][_0x2096('0x2a')]({'plain':!![]});if(!_0x2b0d18)throw new Error(_0x2096('0x4e'));if(_0x2b0d18[_0x2096('0x4f')]===_0x2096('0x4d')){var _0x48a815=_0x88da04[_0x2096('0x2a')]({'plain':!![]});var _0x45e527=_0x2096('0x50');return db[_0x2096('0x51')][_0x2096('0x4b')]({'where':{'name':_0x45e527,'userProfileId':_0x2b0d18['userProfileId']},'raw':!![]})['then'](function(_0x4e593e){if(_0x4e593e&&_0x4e593e['autoAssociation']===0x0){return db[_0x2096('0x2b')][_0x2096('0x4c')]({'name':_0x48a815[_0x2096('0x2f')],'resourceId':_0x48a815['id'],'type':_0x4e593e[_0x2096('0x2f')],'sectionId':_0x4e593e['id']},{})['then'](function(){return _0x88da04;});}else{return _0x88da04;}})['catch'](function(_0xc3d2bd){logger[_0x2096('0x2d')](_0x2096('0x52'),_0xc3d2bd);throw _0xc3d2bd;});}return _0x88da04;})[_0x2096('0x28')](respondWithResult(_0x4c12dd,0xc9))[_0x2096('0x48')](handleError(_0x4c12dd,null));};exports[_0x2096('0x53')]=function(_0x5c26d0,_0x2e57d8){var _0x1ec7c3={'where':{'id':_0x5c26d0[_0x2096('0x54')]['id']}},_0x1c8910={};_0x1c8910[_0x2096('0x33')]=_[_0x2096('0x34')](db[_0x2096('0x44')][_0x2096('0x31')]);_0x1ec7c3[_0x2096('0x38')]=_['intersection'](_0x1c8910[_0x2096('0x33')],qs[_0x2096('0x37')](_0x5c26d0[_0x2096('0x35')][_0x2096('0x37')]));_0x1ec7c3['attributes']=_0x1ec7c3[_0x2096('0x38')][_0x2096('0x39')]?_0x1ec7c3['attributes']:_0x1c8910['model'];if(_0x5c26d0[_0x2096('0x35')]['includeAll']){_0x1ec7c3['include']=[{'all':!![]}];}_0x1ec7c3=_[_0x2096('0x42')]({},_0x1ec7c3,_0x5c26d0['options']);return db[_0x2096('0x44')][_0x2096('0x4b')](_0x1ec7c3)[_0x2096('0x28')](handleEntityNotFound(_0x2e57d8,null))['then'](function(_0x4da82b){if(_0x4da82b){var _0x1af8e4=_0x4da82b['get']({'plain':!![]});_0x1af8e4=qs[_0x2096('0x55')](_0x1af8e4,['id',_0x2096('0x56'),_0x2096('0x57')]);_0x5c26d0[_0x2096('0x58')]=_[_0x2096('0x55')](_0x5c26d0[_0x2096('0x58')],['id',_0x2096('0x56'),_0x2096('0x57')]);return db['Dashboard'][_0x2096('0x4c')](_[_0x2096('0x42')](_0x1af8e4,_0x5c26d0[_0x2096('0x58')]),{'include':_0x5c26d0['query'][_0x2096('0x4a')]?[{'all':!![]}]:undefined})[_0x2096('0x28')](function(_0xaef9a0){var _0x35e6f1=_0x5c26d0[_0x2096('0x4d')][_0x2096('0x2a')]({'plain':!![]});if(!_0x35e6f1)throw new Error(_0x2096('0x4e'));if(_0x35e6f1[_0x2096('0x4f')]===_0x2096('0x4d')){var _0x2de6fb=_0xaef9a0[_0x2096('0x2a')]({'plain':!![]});var _0x5e839a=_0x2096('0x50');return db[_0x2096('0x51')][_0x2096('0x4b')]({'where':{'name':_0x5e839a,'userProfileId':_0x35e6f1['userProfileId']},'raw':!![]})['then'](function(_0x2dc82a){if(_0x2dc82a&&_0x2dc82a[_0x2096('0x59')]===0x0){return db['UserProfileResource'][_0x2096('0x4c')]({'name':_0x2de6fb[_0x2096('0x2f')],'resourceId':_0x2de6fb['id'],'type':_0x2dc82a['name'],'sectionId':_0x2dc82a['id']},{})[_0x2096('0x28')](function(){return _0xaef9a0;});}else{return _0xaef9a0;}})[_0x2096('0x48')](function(_0x2f457d){logger[_0x2096('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f457d);throw _0x2f457d;});}return _0xaef9a0;});}})['then'](respondWithResult(_0x2e57d8,0xc9))[_0x2096('0x48')](handleError(_0x2e57d8,null));};exports['update']=function(_0x25ce0c,_0xda73e2){if(_0x25ce0c[_0x2096('0x58')]['id']){delete _0x25ce0c[_0x2096('0x58')]['id'];}return db[_0x2096('0x44')][_0x2096('0x4b')]({'where':{'id':_0x25ce0c[_0x2096('0x54')]['id']}})['then'](handleEntityNotFound(_0xda73e2,null))[_0x2096('0x28')](saveUpdates(_0x25ce0c[_0x2096('0x58')],null))[_0x2096('0x28')](respondWithResult(_0xda73e2,null))[_0x2096('0x48')](handleError(_0xda73e2,null));};exports[_0x2096('0x29')]=function(_0x4ee0be,_0x5011ac){return db[_0x2096('0x44')][_0x2096('0x4b')]({'where':{'id':_0x4ee0be[_0x2096('0x54')]['id']}})['then'](handleEntityNotFound(_0x5011ac,null))[_0x2096('0x28')](removeEntity(_0x5011ac,null))[_0x2096('0x48')](handleError(_0x5011ac,null));};function widgetAttributes(_0x3a2c53){try{switch(_0x3a2c53[_0x2096('0x40')]){case _0x2096('0x5a'):return[{'name':_0x2096('0x5b'),'value':_0x3a2c53[_0x2096('0x5b')]||(_0x3a2c53['attrs']&&_0x3a2c53['attrs'][0x0]?_0x3a2c53[_0x2096('0x5c')][0x0]['value']:undefined)||_0x2096('0x5d')}];case'custom':return[{'name':'attrPath','value':_0x3a2c53['attrPath']||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x0]?_0x3a2c53[_0x2096('0x5c')][0x0][_0x2096('0x5e')]:undefined)||''}];case _0x2096('0x5f'):return[{'name':_0x2096('0x60'),'value':_0x3a2c53['attrHourFormat']||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x0]?_0x3a2c53[_0x2096('0x5c')][0x0][_0x2096('0x5e')]:undefined)||_0x2096('0x61')},{'name':_0x2096('0x62'),'value':_0x3a2c53[_0x2096('0x62')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x1]?_0x3a2c53[_0x2096('0x5c')][0x1][_0x2096('0x5e')]:undefined)||_0x2096('0x63')},{'name':_0x2096('0x64'),'value':_0x3a2c53[_0x2096('0x64')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x2]?_0x3a2c53[_0x2096('0x5c')][0x2][_0x2096('0x5e')]:undefined)||0xc}];case _0x2096('0x65'):return[{'name':_0x2096('0x66'),'value':_0x3a2c53[_0x2096('0x66')]||(_0x3a2c53['attrs']&&_0x3a2c53['attrs'][0x0]?_0x3a2c53[_0x2096('0x5c')][0x0][_0x2096('0x5e')]:undefined)||_0x2096('0x67')},{'name':_0x2096('0x68'),'value':_0x3a2c53[_0x2096('0x68')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53['attrs'][0x1]?_0x3a2c53[_0x2096('0x5c')][0x1][_0x2096('0x5e')]:undefined)||[]},{'name':_0x2096('0x64'),'value':_0x3a2c53['attrFontSize']||(_0x3a2c53['attrs']&&_0x3a2c53[_0x2096('0x5c')][0x2]?_0x3a2c53[_0x2096('0x5c')][0x2][_0x2096('0x5e')]:undefined)||0x14},{'name':'attrChannel','value':_0x3a2c53[_0x2096('0x69')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x3]?_0x3a2c53[_0x2096('0x5c')][0x3]['value']:undefined)||_0x2096('0x6a')},{'name':_0x2096('0x6b'),'value':_0x3a2c53[_0x2096('0x6b')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x4]?_0x3a2c53['attrs'][0x4][_0x2096('0x5e')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x3a2c53[_0x2096('0x6c')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x5]?_0x3a2c53[_0x2096('0x5c')][0x5][_0x2096('0x5e')]:undefined)||''},{'name':_0x2096('0x6d'),'value':_0x3a2c53[_0x2096('0x6d')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x6]?_0x3a2c53[_0x2096('0x5c')][0x6][_0x2096('0x5e')]:undefined)||''},{'name':_0x2096('0x6e'),'value':_0x3a2c53[_0x2096('0x6e')]||(_0x3a2c53['attrs']&&_0x3a2c53[_0x2096('0x5c')][0x7]?_0x3a2c53[_0x2096('0x5c')][0x7][_0x2096('0x5e')]:undefined)||''},{'name':_0x2096('0x6f'),'value':_0x3a2c53['attrWhatsappAccounts']||(_0x3a2c53['attrs']&&_0x3a2c53[_0x2096('0x5c')][0x8]?_0x3a2c53[_0x2096('0x5c')][0x8][_0x2096('0x5e')]:undefined)||''},{'name':_0x2096('0x70'),'value':_0x3a2c53[_0x2096('0x70')]||(_0x3a2c53['attrs']&&_0x3a2c53[_0x2096('0x5c')][0x9]?_0x3a2c53[_0x2096('0x5c')][0x9][_0x2096('0x5e')]:undefined)||''}];case _0x2096('0x71'):case'pie-chart':return[{'name':'attrSerie1','value':_0x3a2c53['attrSerie1']||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x0]?_0x3a2c53[_0x2096('0x5c')][0x0][_0x2096('0x5e')]:undefined)||_0x2096('0x67')},{'name':'attrSerie2','value':_0x3a2c53[_0x2096('0x72')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53['attrs'][0x1]?_0x3a2c53[_0x2096('0x5c')][0x1][_0x2096('0x5e')]:undefined)||null},{'name':'attrSerie3','value':_0x3a2c53[_0x2096('0x73')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53['attrs'][0x2]?_0x3a2c53['attrs'][0x2][_0x2096('0x5e')]:undefined)||null},{'name':_0x2096('0x68'),'value':_0x3a2c53[_0x2096('0x68')]||(_0x3a2c53['attrs']&&_0x3a2c53['attrs'][0x3]?_0x3a2c53['attrs'][0x3][_0x2096('0x5e')]:undefined)||[]},{'name':_0x2096('0x69'),'value':_0x3a2c53['attrChannel']||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x4]?_0x3a2c53[_0x2096('0x5c')][0x4][_0x2096('0x5e')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x3a2c53[_0x2096('0x6b')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53['attrs'][0x5]?_0x3a2c53['attrs'][0x5]['value']:undefined)||''},{'name':_0x2096('0x6c'),'value':_0x3a2c53['attrFaxAccounts']||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x6]?_0x3a2c53[_0x2096('0x5c')][0x6][_0x2096('0x5e')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x3a2c53[_0x2096('0x6d')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x7]?_0x3a2c53[_0x2096('0x5c')][0x7]['value']:undefined)||''},{'name':_0x2096('0x6e'),'value':_0x3a2c53[_0x2096('0x6e')]||(_0x3a2c53['attrs']&&_0x3a2c53[_0x2096('0x5c')][0x8]?_0x3a2c53['attrs'][0x8][_0x2096('0x5e')]:undefined)||''},{'name':_0x2096('0x6f'),'value':_0x3a2c53[_0x2096('0x6f')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53['attrs'][0x9]?_0x3a2c53[_0x2096('0x5c')][0x9][_0x2096('0x5e')]:undefined)||''},{'name':_0x2096('0x70'),'value':_0x3a2c53[_0x2096('0x70')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0xa]?_0x3a2c53[_0x2096('0x5c')][0xa][_0x2096('0x5e')]:undefined)||''}];case _0x2096('0x74'):return[{'name':'attrReport','type':_0x3a2c53[_0x2096('0x75')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x0]?_0x3a2c53['attrs'][0x0][_0x2096('0x40')]:undefined)||null,'value':_0x3a2c53[_0x2096('0x76')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x0]?_0x3a2c53[_0x2096('0x5c')][0x0][_0x2096('0x5e')]:undefined)||null},{'name':'attrRefresh','value':_0x3a2c53[_0x2096('0x77')]||(_0x3a2c53[_0x2096('0x5c')]&&_0x3a2c53[_0x2096('0x5c')][0x1]?_0x3a2c53['attrs'][0x1][_0x2096('0x5e')]:undefined)||0x0}];default:return[];}}catch(_0x4b7373){logger[_0x2096('0x2d')](_0x2096('0x78'),JSON['stringify'](_0x4b7373));return[];}}exports[_0x2096('0x79')]=function(_0x179fd9,_0x778abe,_0x51c5d3){if(_0x179fd9[_0x2096('0x58')]['id']){delete _0x179fd9['body']['id'];}return db[_0x2096('0x44')][_0x2096('0x4b')]({'where':{'id':_0x179fd9[_0x2096('0x54')]['id']}})[_0x2096('0x28')](handleEntityNotFound(_0x778abe,null))[_0x2096('0x28')](function(_0xe09587){if(_0xe09587){_0x179fd9[_0x2096('0x58')][_0x2096('0x7a')]=_0xe09587['id'];_0x179fd9[_0x2096('0x58')]['attrs']=widgetAttributes(_0x179fd9[_0x2096('0x58')]);return db[_0x2096('0x7b')][_0x2096('0x4c')](_0x179fd9['body']);}})[_0x2096('0x28')](respondWithResult(_0x778abe,null))['catch'](handleError(_0x778abe,null));};exports[_0x2096('0x7c')]=function(_0x59de2e,_0xcdb675,_0x5f5b3b){var _0x4b0e95={};var _0x40c529={};var _0x277a2a;var _0x1dca94;return db[_0x2096('0x44')][_0x2096('0x7d')]({'where':{'id':_0x59de2e['params']['id']}})[_0x2096('0x28')](handleEntityNotFound(_0xcdb675,null))[_0x2096('0x28')](function(_0xe1e6ec){if(_0xe1e6ec){_0x277a2a=_0xe1e6ec;_0x40c529[_0x2096('0x33')]=_['keys'](db[_0x2096('0x7b')][_0x2096('0x31')]);_0x40c529[_0x2096('0x35')]=_['keys'](_0x59de2e['query']);_0x40c529['filters']=_[_0x2096('0x36')](_0x40c529[_0x2096('0x33')],_0x40c529[_0x2096('0x35')]);_0x4b0e95[_0x2096('0x38')]=_[_0x2096('0x36')](_0x40c529['model'],qs['fields'](_0x59de2e['query']['fields']));_0x4b0e95[_0x2096('0x38')]=_0x4b0e95[_0x2096('0x38')][_0x2096('0x39')]?_0x4b0e95['attributes']:_0x40c529['model'];_0x4b0e95['order']=qs['sort'](_0x59de2e['query']['sort']);_0x4b0e95[_0x2096('0x3d')]=qs[_0x2096('0x3e')](_[_0x2096('0x7e')](_0x59de2e[_0x2096('0x35')],_0x40c529[_0x2096('0x3e')]));if(_0x59de2e[_0x2096('0x35')][_0x2096('0x3f')]){_0x4b0e95[_0x2096('0x3d')]=_['merge'](_0x4b0e95['where'],{'$or':_[_0x2096('0x30')](_0x4b0e95['attributes'],function(_0x56f786){var _0x2fee94={};_0x2fee94[_0x56f786]={'$like':'%'+_0x59de2e[_0x2096('0x35')][_0x2096('0x3f')]+'%'};return _0x2fee94;})});}_0x4b0e95=_[_0x2096('0x42')]({},_0x4b0e95,_0x59de2e[_0x2096('0x43')]);return _0x277a2a[_0x2096('0x7c')](_0x4b0e95);}})[_0x2096('0x28')](function(_0x1129ab){if(_0x1129ab){_0x1dca94=_0x1129ab[_0x2096('0x39')];if(!_0x59de2e[_0x2096('0x35')][_0x2096('0x3a')](_0x2096('0x3b'))){_0x4b0e95['limit']=qs[_0x2096('0x22')](_0x59de2e['query'][_0x2096('0x22')]);_0x4b0e95[_0x2096('0x20')]=qs[_0x2096('0x20')](_0x59de2e[_0x2096('0x35')][_0x2096('0x20')]);}return _0x277a2a[_0x2096('0x7c')](_0x4b0e95);}})[_0x2096('0x28')](function(_0x5403a5){if(_0x5403a5){return _0x5403a5?{'count':_0x1dca94,'rows':_0x5403a5}:null;}})[_0x2096('0x28')](respondWithResult(_0xcdb675,null))[_0x2096('0x48')](handleError(_0xcdb675,null));};
\ No newline at end of file
index 058f78e..c072eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x458a=['emit','exports','events','setMaxListeners','save','remove'];(function(_0x129071,_0x360dba){var _0x4edaab=function(_0x12c4b8){while(--_0x12c4b8){_0x129071['push'](_0x129071['shift']());}};_0x4edaab(++_0x360dba);}(_0x458a,0x110));var _0xa458=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x458a[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xa458('0x0'));var Dashboard=require('../../mysqldb')['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0xa458('0x1')](0x0);var events={'afterCreate':_0xa458('0x2'),'afterUpdate':'update','afterDestroy':_0xa458('0x3')};function emitEvent(_0x3ae6c1){return function(_0xd8f327,_0x953f51,_0x306a40){DashboardEvents[_0xa458('0x4')](_0x3ae6c1+':'+_0xd8f327['id'],_0xd8f327);DashboardEvents['emit'](_0x3ae6c1,_0xd8f327);_0x306a40(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0xa458('0x5')]=DashboardEvents;
\ No newline at end of file
+var _0x22cd=['events','../../mysqldb','save','update','remove','emit'];(function(_0x49c274,_0x14dd92){var _0x25af63=function(_0x33e5db){while(--_0x33e5db){_0x49c274['push'](_0x49c274['shift']());}};_0x25af63(++_0x14dd92);}(_0x22cd,0x126));var _0xd22c=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x22cd[_0x5f09c5];return _0x426ad9;};'use strict';var EventEmitter=require(_0xd22c('0x0'));var Dashboard=require(_0xd22c('0x1'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd22c('0x2'),'afterUpdate':_0xd22c('0x3'),'afterDestroy':_0xd22c('0x4')};function emitEvent(_0x4137d3){return function(_0x11956e,_0x2661e1,_0x3fc641){DashboardEvents[_0xd22c('0x5')](_0x4137d3+':'+_0x11956e['id'],_0x11956e);DashboardEvents[_0xd22c('0x5')](_0x4137d3,_0x11956e);_0x3fc641(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index 169c0d0..5da0b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ed=['./dashboard.attributes','exports','define','Dashboard','dashboards','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xc9ed,0x12b));var _0xdc9e=function(_0x3c5503,_0x2b568d){_0x3c5503=_0x3c5503-0x0;var _0x5571a6=_0xc9ed[_0x3c5503];return _0x5571a6;};'use strict';var _=require(_0xdc9e('0x0'));var util=require(_0xdc9e('0x1'));var logger=require(_0xdc9e('0x2'))('api');var moment=require(_0xdc9e('0x3'));var BPromise=require(_0xdc9e('0x4'));var rp=require(_0xdc9e('0x5'));var fs=require('fs');var path=require(_0xdc9e('0x6'));var rimraf=require(_0xdc9e('0x7'));var config=require(_0xdc9e('0x8'));var attributes=require(_0xdc9e('0x9'));module[_0xdc9e('0xa')]=function(_0x49e145,_0x3d579c){return _0x49e145[_0xdc9e('0xb')](_0xdc9e('0xc'),attributes,{'tableName':_0xdc9e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe873=['rimraf','../../config/environment','./dashboard.attributes','define','Dashboard','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3564d6,_0x37d1cb){var _0x1f2267=function(_0xbf7dfb){while(--_0xbf7dfb){_0x3564d6['push'](_0x3564d6['shift']());}};_0x1f2267(++_0x37d1cb);}(_0xe873,0xae));var _0x3e87=function(_0x317125,_0x311482){_0x317125=_0x317125-0x0;var _0x25a849=_0xe873[_0x317125];return _0x25a849;};'use strict';var _=require(_0x3e87('0x0'));var util=require(_0x3e87('0x1'));var logger=require(_0x3e87('0x2'))(_0x3e87('0x3'));var moment=require(_0x3e87('0x4'));var BPromise=require(_0x3e87('0x5'));var rp=require(_0x3e87('0x6'));var fs=require('fs');var path=require(_0x3e87('0x7'));var rimraf=require(_0x3e87('0x8'));var config=require(_0x3e87('0x9'));var attributes=require(_0x3e87('0xa'));module['exports']=function(_0x303e89,_0x56e5ea){return _0x303e89[_0x3e87('0xb')](_0x3e87('0xc'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 74e55e0..01e659b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4928=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x4eeca4,_0x5901c9){var _0x430031=function(_0x237ed7){while(--_0x237ed7){_0x4eeca4['push'](_0x4eeca4['shift']());}};_0x430031(++_0x5901c9);}(_0x4928,0x141));var _0x8492=function(_0x2798a8,_0x1ae53b){_0x2798a8=_0x2798a8-0x0;var _0x1b8e76=_0x4928[_0x2798a8];return _0x1b8e76;};'use strict';var _=require(_0x8492('0x0'));var util=require(_0x8492('0x1'));var moment=require('moment');var BPromise=require(_0x8492('0x2'));var rs=require(_0x8492('0x3'));var fs=require('fs');var Redis=require(_0x8492('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8492('0x5'));var logger=require(_0x8492('0x6'))(_0x8492('0x7'));var config=require(_0x8492('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8492('0x9')]({'port':0x232a});config[_0x8492('0xa')]=_[_0x8492('0xb')](config[_0x8492('0xa')],{'host':_0x8492('0xc'),'port':0x18eb});var socket=require(_0x8492('0xd'))(new Redis(config['redis']));require(_0x8492('0xe'))['register'](socket);function respondWithRpcPromise(_0x1917f3,_0x59fb38,_0x17d5d5){return new BPromise(function(_0x30b9d2,_0x56e0c0){return client[_0x8492('0xf')](_0x1917f3,_0x17d5d5)[_0x8492('0x10')](function(_0x249058){logger[_0x8492('0x11')](_0x8492('0x12'),_0x59fb38,_0x8492('0x13'));logger[_0x8492('0x14')](_0x8492('0x15'),_0x59fb38,_0x8492('0x13'),JSON['stringify'](_0x249058));if(_0x249058[_0x8492('0x16')]){if(_0x249058[_0x8492('0x16')][_0x8492('0x17')]===0x1f4){logger[_0x8492('0x16')](_0x8492('0x12'),_0x59fb38,_0x249058[_0x8492('0x16')][_0x8492('0x18')]);return _0x56e0c0(_0x249058[_0x8492('0x16')][_0x8492('0x18')]);}logger[_0x8492('0x16')](_0x8492('0x12'),_0x59fb38,_0x249058[_0x8492('0x16')][_0x8492('0x18')]);return _0x30b9d2(_0x249058[_0x8492('0x16')]['message']);}else{logger[_0x8492('0x11')](_0x8492('0x12'),_0x59fb38,_0x8492('0x13'));_0x30b9d2(_0x249058[_0x8492('0x19')][_0x8492('0x18')]);}})[_0x8492('0x1a')](function(_0x517255){logger[_0x8492('0x16')](_0x8492('0x12'),_0x59fb38,_0x517255);_0x56e0c0(_0x517255);});});}
\ No newline at end of file
+var _0x10c9=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x10c9,0x18d));var _0x910c=function(_0x3eccaa,_0xd2d4fa){_0x3eccaa=_0x3eccaa-0x0;var _0x59ef76=_0x10c9[_0x3eccaa];return _0x59ef76;};'use strict';var _=require(_0x910c('0x0'));var util=require('util');var moment=require(_0x910c('0x1'));var BPromise=require(_0x910c('0x2'));var rs=require(_0x910c('0x3'));var fs=require('fs');var Redis=require(_0x910c('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x910c('0x5'))(_0x910c('0x6'));var config=require(_0x910c('0x7'));var jayson=require(_0x910c('0x8'));var client=jayson[_0x910c('0x9')][_0x910c('0xa')]({'port':0x232a});config[_0x910c('0xb')]=_['defaults'](config[_0x910c('0xb')],{'host':_0x910c('0xc'),'port':0x18eb});var socket=require(_0x910c('0xd'))(new Redis(config['redis']));require(_0x910c('0xe'))[_0x910c('0xf')](socket);function respondWithRpcPromise(_0x1e5ee7,_0x1e0b95,_0x14309e){return new BPromise(function(_0x168fb7,_0x387fa5){return client[_0x910c('0x10')](_0x1e5ee7,_0x14309e)[_0x910c('0x11')](function(_0x3a59e6){logger[_0x910c('0x12')](_0x910c('0x13'),_0x1e0b95,_0x910c('0x14'));logger[_0x910c('0x15')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x1e0b95,_0x910c('0x14'),JSON[_0x910c('0x16')](_0x3a59e6));if(_0x3a59e6[_0x910c('0x17')]){if(_0x3a59e6[_0x910c('0x17')][_0x910c('0x18')]===0x1f4){logger[_0x910c('0x17')](_0x910c('0x13'),_0x1e0b95,_0x3a59e6[_0x910c('0x17')][_0x910c('0x19')]);return _0x387fa5(_0x3a59e6[_0x910c('0x17')][_0x910c('0x19')]);}logger[_0x910c('0x17')](_0x910c('0x13'),_0x1e0b95,_0x3a59e6['error'][_0x910c('0x19')]);return _0x168fb7(_0x3a59e6[_0x910c('0x17')]['message']);}else{logger['info'](_0x910c('0x13'),_0x1e0b95,'request\x20sent');_0x168fb7(_0x3a59e6[_0x910c('0x1a')]['message']);}})['catch'](function(_0xfb2114){logger[_0x910c('0x17')](_0x910c('0x13'),_0x1e0b95,_0xfb2114);_0x387fa5(_0xfb2114);});});}
\ No newline at end of file
index 232e8ad..1cd9a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59a3=['emit','register','dashboard:'];(function(_0x56138f,_0x1e9ebb){var _0x1acaf7=function(_0x48690d){while(--_0x48690d){_0x56138f['push'](_0x56138f['shift']());}};_0x1acaf7(++_0x1e9ebb);}(_0x59a3,0xfc));var _0x359a=function(_0x133658,_0x14e1c9){_0x133658=_0x133658-0x0;var _0x548c5f=_0x59a3[_0x133658];return _0x548c5f;};'use strict';var DashboardEvents=require('./dashboard.events');var events=['save','remove','update'];function createListener(_0xc58bbb,_0x51a39f){return function(_0x460b35){_0x51a39f[_0x359a('0x0')](_0xc58bbb,_0x460b35);};}function removeListener(_0x2944cf,_0x2a40b9){return function(){DashboardEvents['removeListener'](_0x2944cf,_0x2a40b9);};}exports[_0x359a('0x1')]=function(_0x12f492){for(var _0x17e148=0x0,_0x3d985a=events['length'];_0x17e148<_0x3d985a;_0x17e148++){var _0x19ee85=events[_0x17e148];var _0x42b2fb=createListener(_0x359a('0x2')+_0x19ee85,_0x12f492);DashboardEvents['on'](_0x19ee85,_0x42b2fb);}};
\ No newline at end of file
+var _0x023f=['update','emit','removeListener','register','dashboard:','./dashboard.events','save','remove'];(function(_0xf26d40,_0x2f4f46){var _0x50b68c=function(_0x10aa58){while(--_0x10aa58){_0xf26d40['push'](_0xf26d40['shift']());}};_0x50b68c(++_0x2f4f46);}(_0x023f,0x16d));var _0xf023=function(_0x37b4e6,_0x2d63fb){_0x37b4e6=_0x37b4e6-0x0;var _0x199ca7=_0x023f[_0x37b4e6];return _0x199ca7;};'use strict';var DashboardEvents=require(_0xf023('0x0'));var events=[_0xf023('0x1'),_0xf023('0x2'),_0xf023('0x3')];function createListener(_0x3df58d,_0x5a5568){return function(_0x49fb4e){_0x5a5568[_0xf023('0x4')](_0x3df58d,_0x49fb4e);};}function removeListener(_0x4b1a3d,_0xeb2512){return function(){DashboardEvents[_0xf023('0x5')](_0x4b1a3d,_0xeb2512);};}exports[_0xf023('0x6')]=function(_0x273922){for(var _0x397ee4=0x0,_0x4aa5ef=events['length'];_0x397ee4<_0x4aa5ef;_0x397ee4++){var _0x135d43=events[_0x397ee4];var _0x5806e3=createListener(_0xf023('0x7')+_0x135d43,_0x273922);DashboardEvents['on'](_0x135d43,_0x5806e3);}};
\ No newline at end of file
index 0db3e35..4fca47e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7b5=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','isAuthenticated','index','get','/:id','/:id/items','getItems','post','/:id/clone','clone','addItem','put','update','destroy'];(function(_0x1463cb,_0x5ae3db){var _0x3940f7=function(_0x54f8f9){while(--_0x54f8f9){_0x1463cb['push'](_0x1463cb['shift']());}};_0x3940f7(++_0x5ae3db);}(_0xe7b5,0x178));var _0x5e7b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe7b5[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x5e7b('0x0'));var util=require(_0x5e7b('0x1'));var path=require(_0x5e7b('0x2'));var timeout=require(_0x5e7b('0x3'));var express=require(_0x5e7b('0x4'));var router=express[_0x5e7b('0x5')]();var fs_extra=require(_0x5e7b('0x6'));var auth=require(_0x5e7b('0x7'));var interaction=require(_0x5e7b('0x8'));var config=require(_0x5e7b('0x9'));var controller=require(_0x5e7b('0xa'));router['get']('/',auth[_0x5e7b('0xb')](),controller[_0x5e7b('0xc')]);router[_0x5e7b('0xd')](_0x5e7b('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x5e7b('0xd')](_0x5e7b('0xf'),auth['isAuthenticated'](),controller[_0x5e7b('0x10')]);router[_0x5e7b('0x11')]('/',auth[_0x5e7b('0xb')](),controller['create']);router[_0x5e7b('0x11')](_0x5e7b('0x12'),auth[_0x5e7b('0xb')](),controller[_0x5e7b('0x13')]);router[_0x5e7b('0x11')](_0x5e7b('0xf'),auth[_0x5e7b('0xb')](),controller[_0x5e7b('0x14')]);router[_0x5e7b('0x15')](_0x5e7b('0xe'),auth[_0x5e7b('0xb')](),controller[_0x5e7b('0x16')]);router['delete'](_0x5e7b('0xe'),auth[_0x5e7b('0xb')](),controller[_0x5e7b('0x17')]);module[_0x5e7b('0x18')]=router;
\ No newline at end of file
+var _0x50c0=['update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','show','getItems','post','create','/:id/clone','clone','/:id/items','addItem','put'];(function(_0x2dbdf7,_0x483212){var _0xbb73d4=function(_0x1da348){while(--_0x1da348){_0x2dbdf7['push'](_0x2dbdf7['shift']());}};_0xbb73d4(++_0x483212);}(_0x50c0,0x152));var _0x050c=function(_0x54cca3,_0x3b297d){_0x54cca3=_0x54cca3-0x0;var _0x348fde=_0x50c0[_0x54cca3];return _0x348fde;};'use strict';var multer=require(_0x050c('0x0'));var util=require(_0x050c('0x1'));var path=require(_0x050c('0x2'));var timeout=require(_0x050c('0x3'));var express=require(_0x050c('0x4'));var router=express['Router']();var fs_extra=require(_0x050c('0x5'));var auth=require(_0x050c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x050c('0x7'));var controller=require(_0x050c('0x8'));router[_0x050c('0x9')]('/',auth[_0x050c('0xa')](),controller[_0x050c('0xb')]);router[_0x050c('0x9')](_0x050c('0xc'),auth['isAuthenticated'](),controller[_0x050c('0xd')]);router['get']('/:id/items',auth['isAuthenticated'](),controller[_0x050c('0xe')]);router[_0x050c('0xf')]('/',auth[_0x050c('0xa')](),controller[_0x050c('0x10')]);router[_0x050c('0xf')](_0x050c('0x11'),auth[_0x050c('0xa')](),controller[_0x050c('0x12')]);router[_0x050c('0xf')](_0x050c('0x13'),auth[_0x050c('0xa')](),controller[_0x050c('0x14')]);router[_0x050c('0x15')](_0x050c('0xc'),auth['isAuthenticated'](),controller[_0x050c('0x16')]);router['delete'](_0x050c('0xc'),auth[_0x050c('0xa')](),controller[_0x050c('0x17')]);module['exports']=router;
\ No newline at end of file
index 23bc8f9..9964bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['squel','lodash','exports','STRING','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize'];(function(_0x5a273b,_0x3d584b){var _0x61867e=function(_0x15ba7d){while(--_0x15ba7d){_0x5a273b['push'](_0x5a273b['shift']());}};_0x61867e(++_0x3d584b);}(_0x9536,0x179));var _0x6953=function(_0x378b4,_0x5ca7fa){_0x378b4=_0x378b4-0x0;var _0x11d07b=_0x9536[_0x378b4];return _0x11d07b;};'use strict';var Sequelize=require(_0x6953('0x0'));var squel=require(_0x6953('0x1'));var _=require(_0x6953('0x2'));module[_0x6953('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6953('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x6953('0x5')),'get':function(){try{return JSON[_0x6953('0x6')](this[_0x6953('0x7')](_0x6953('0x8')));}catch(_0x2f3cc3){return[];}},'set':function(_0x494ac2){try{this[_0x6953('0x9')](_0x6953('0x8'),JSON[_0x6953('0xa')](_0x494ac2));}catch(_0x3e1aff){this[_0x6953('0x9')]('attrs',JSON[_0x6953('0xa')]([]));}}},'sizeX':{'type':Sequelize[_0x6953('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6953('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x6953('0xb')]},'background':{'type':Sequelize[_0x6953('0x4')],'allowNull':![],'defaultValue':_0x6953('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x6953('0x4')],'allowNull':![],'defaultValue':_0x6953('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6953('0x4')]},'titleFontSize':{'type':Sequelize[_0x6953('0xb')],'defaultValue':0xc}};
\ No newline at end of file
+var _0xacf4=['lodash','exports','STRING','TEXT','long','parse','attrs','setDataValue','stringify','INTEGER','#2196f3'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xacf4,0xe7));var _0x4acf=function(_0x42aeb4,_0x3852c0){_0x42aeb4=_0x42aeb4-0x0;var _0x4aa249=_0xacf4[_0x42aeb4];return _0x4aa249;};'use strict';var Sequelize=require('sequelize');var squel=require('squel');var _=require(_0x4acf('0x0'));module[_0x4acf('0x1')]={'title':{'type':Sequelize[_0x4acf('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x4acf('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x4acf('0x3')](_0x4acf('0x4')),'get':function(){try{return JSON[_0x4acf('0x5')](this['getDataValue'](_0x4acf('0x6')));}catch(_0x2124c8){return[];}},'set':function(_0x4e0c43){try{this[_0x4acf('0x7')](_0x4acf('0x6'),JSON[_0x4acf('0x8')](_0x4e0c43));}catch(_0x45a5a4){this[_0x4acf('0x7')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x4acf('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x4acf('0x9')]},'col':{'type':Sequelize[_0x4acf('0x9')]},'background':{'type':Sequelize[_0x4acf('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x4acf('0x2')],'allowNull':![],'defaultValue':_0x4acf('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 6e8b0ba..edfdb5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103f=['HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrChannel','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','localhost','redis','./dashboardItem.socket','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','name','show','DashboardItem','query','keys','model','intersection','fields','attributes','length','includeAll','include','merge','options','find','catch','params','type','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x103f,0x13e));var _0xf103=function(_0xb9930e,_0x460ae9){_0xb9930e=_0xb9930e-0x0;var _0x7a017a=_0x103f[_0xb9930e];return _0x7a017a;};'use strict';var emlformat=require(_0xf103('0x0'));var rimraf=require(_0xf103('0x1'));var zipdir=require(_0xf103('0x2'));var jsonpatch=require(_0xf103('0x3'));var rp=require(_0xf103('0x4'));var moment=require(_0xf103('0x5'));var BPromise=require(_0xf103('0x6'));var Mustache=require(_0xf103('0x7'));var util=require(_0xf103('0x8'));var path=require(_0xf103('0x9'));var sox=require('sox');var csv=require(_0xf103('0xa'));var ejs=require(_0xf103('0xb'));var fs=require('fs');var fs_extra=require(_0xf103('0xc'));var _=require(_0xf103('0xd'));var squel=require(_0xf103('0xe'));var crypto=require(_0xf103('0xf'));var jsforce=require(_0xf103('0x10'));var deskjs=require(_0xf103('0x11'));var toCsv=require(_0xf103('0xa'));var querystring=require(_0xf103('0x12'));var Papa=require(_0xf103('0x13'));var Redis=require(_0xf103('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xf103('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf103('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xf103('0x17'));var config=require(_0xf103('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf103('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xf103('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf103('0x1b')]));require(_0xf103('0x1c'))['register'](socket);function respondWithStatusCode(_0x189a41,_0x3d77bb){_0x3d77bb=_0x3d77bb||0xcc;return function(_0x587a54){if(_0x587a54){return _0x189a41[_0xf103('0x1d')](_0x3d77bb);}return _0x189a41[_0xf103('0x1e')](_0x3d77bb)['end']();};}function respondWithResult(_0x13be78,_0x49d07f){_0x49d07f=_0x49d07f||0xc8;return function(_0x4a1a87){if(_0x4a1a87){return _0x13be78[_0xf103('0x1e')](_0x49d07f)[_0xf103('0x1f')](_0x4a1a87);}};}function respondWithFilteredResult(_0x31e26e,_0x33d0fc){return function(_0x1659fa){if(_0x1659fa){var _0x2fbf42=typeof _0x33d0fc['offset']===_0xf103('0x20')&&typeof _0x33d0fc[_0xf103('0x21')]==='undefined';var _0x21ea69=_0x1659fa[_0xf103('0x22')];var _0x280aeb=_0x2fbf42?0x0:_0x33d0fc[_0xf103('0x23')];var _0xebb4ae=_0x2fbf42?_0x1659fa['count']:_0x33d0fc[_0xf103('0x23')]+_0x33d0fc[_0xf103('0x21')];var _0x467b15;if(_0xebb4ae>=_0x21ea69){_0xebb4ae=_0x21ea69;_0x467b15=0xc8;}else{_0x467b15=0xce;}_0x31e26e[_0xf103('0x1e')](_0x467b15);return _0x31e26e[_0xf103('0x24')](_0xf103('0x25'),_0x280aeb+'-'+_0xebb4ae+'/'+_0x21ea69)[_0xf103('0x1f')](_0x1659fa);}return null;};}function patchUpdates(_0x111e83){return function(_0x4aefdf){try{jsonpatch[_0xf103('0x26')](_0x4aefdf,_0x111e83,!![]);}catch(_0x4fab08){return BPromise[_0xf103('0x27')](_0x4fab08);}return _0x4aefdf['save']();};}function saveUpdates(_0x3a8d9e,_0x22c8b5){return function(_0x287998){if(_0x287998){return _0x287998[_0xf103('0x28')](_0x3a8d9e)[_0xf103('0x29')](function(_0x297198){return _0x297198;});}return null;};}function removeEntity(_0x23a122,_0x259797){return function(_0x4f24bd){if(_0x4f24bd){return _0x4f24bd[_0xf103('0x2a')]()['then'](function(){_0x23a122[_0xf103('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4423a4,_0x3352e8){return function(_0x3a807f){if(!_0x3a807f){_0x4423a4[_0xf103('0x1d')](0x194);}return _0x3a807f;};}function handleError(_0x54d590,_0x43b9b5){_0x43b9b5=_0x43b9b5||0x1f4;return function(_0x1d3cdd){logger[_0xf103('0x2b')](_0x1d3cdd['stack']);if(_0x1d3cdd['name']){delete _0x1d3cdd[_0xf103('0x2c')];}_0x54d590[_0xf103('0x1e')](_0x43b9b5)['send'](_0x1d3cdd);};}exports[_0xf103('0x2d')]=function(_0x1458ac,_0x2fab93){var _0x65b43d={'raw':![],'where':{'id':_0x1458ac['params']['id']}},_0x5becbe={};_0x5becbe['model']=_['keys'](db[_0xf103('0x2e')]['rawAttributes']);_0x5becbe[_0xf103('0x2f')]=_[_0xf103('0x30')](_0x1458ac[_0xf103('0x2f')]);_0x5becbe['filters']=_['intersection'](_0x5becbe[_0xf103('0x31')],_0x5becbe[_0xf103('0x2f')]);_0x65b43d['attributes']=_[_0xf103('0x32')](_0x5becbe[_0xf103('0x31')],qs[_0xf103('0x33')](_0x1458ac[_0xf103('0x2f')][_0xf103('0x33')]));_0x65b43d[_0xf103('0x34')]=_0x65b43d[_0xf103('0x34')][_0xf103('0x35')]?_0x65b43d[_0xf103('0x34')]:_0x5becbe[_0xf103('0x31')];if(_0x1458ac[_0xf103('0x2f')][_0xf103('0x36')]){_0x65b43d[_0xf103('0x37')]=[{'all':!![]}];}_0x65b43d=_[_0xf103('0x38')]({},_0x65b43d,_0x1458ac[_0xf103('0x39')]);return db[_0xf103('0x2e')][_0xf103('0x3a')](_0x65b43d)['then'](handleEntityNotFound(_0x2fab93,null))[_0xf103('0x29')](respondWithResult(_0x2fab93,null))[_0xf103('0x3b')](handleError(_0x2fab93,null));};exports[_0xf103('0x2a')]=function(_0x4d5755,_0x39101d){return db['DashboardItem']['find']({'where':{'id':_0x4d5755[_0xf103('0x3c')]['id']}})[_0xf103('0x29')](handleEntityNotFound(_0x39101d,null))[_0xf103('0x29')](removeEntity(_0x39101d,null))[_0xf103('0x3b')](handleError(_0x39101d,null));};function widgetAttributes(_0x192a0d){try{switch(_0x192a0d[_0xf103('0x3d')]){case _0xf103('0x3e'):return[{'name':_0xf103('0x3f'),'value':_0x192a0d[_0xf103('0x3f')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x0]?_0x192a0d[_0xf103('0x40')][0x0][_0xf103('0x41')]:undefined)||'https://'}];case _0xf103('0x42'):return[{'name':_0xf103('0x43'),'value':_0x192a0d[_0xf103('0x43')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x0]?_0x192a0d[_0xf103('0x40')][0x0][_0xf103('0x41')]:undefined)||''}];case _0xf103('0x44'):return[{'name':_0xf103('0x45'),'value':_0x192a0d['attrHourFormat']||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x0]?_0x192a0d[_0xf103('0x40')][0x0][_0xf103('0x41')]:undefined)||_0xf103('0x46')},{'name':_0xf103('0x47'),'value':_0x192a0d[_0xf103('0x47')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x1]?_0x192a0d[_0xf103('0x40')][0x1][_0xf103('0x41')]:undefined)||_0xf103('0x48')},{'name':_0xf103('0x49'),'value':_0x192a0d[_0xf103('0x49')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x2]?_0x192a0d[_0xf103('0x40')][0x2][_0xf103('0x41')]:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x192a0d[_0xf103('0x4a')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d['attrs'][0x0]?_0x192a0d[_0xf103('0x40')][0x0][_0xf103('0x41')]:undefined)||_0xf103('0x4b')},{'name':_0xf103('0x4c'),'value':_0x192a0d[_0xf103('0x4c')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x1]?_0x192a0d[_0xf103('0x40')][0x1]['value']:undefined)||[]},{'name':_0xf103('0x49'),'value':_0x192a0d[_0xf103('0x49')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x2]?_0x192a0d[_0xf103('0x40')][0x2]['value']:undefined)||0x14},{'name':'attrChannel','value':_0x192a0d['attrChannel']||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x3]?_0x192a0d[_0xf103('0x40')][0x3][_0xf103('0x41')]:undefined)||_0xf103('0x4d')},{'name':_0xf103('0x4e'),'value':_0x192a0d[_0xf103('0x4e')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x4]?_0x192a0d[_0xf103('0x40')][0x4][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x4f'),'value':_0x192a0d[_0xf103('0x4f')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d['attrs'][0x5]?_0x192a0d[_0xf103('0x40')][0x5][_0xf103('0x41')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x192a0d[_0xf103('0x50')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x6]?_0x192a0d[_0xf103('0x40')][0x6][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x51'),'value':_0x192a0d[_0xf103('0x51')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x7]?_0x192a0d['attrs'][0x7][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x52'),'value':_0x192a0d['attrWhatsappAccounts']||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x8]?_0x192a0d[_0xf103('0x40')][0x8][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x53'),'value':_0x192a0d[_0xf103('0x53')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x9]?_0x192a0d[_0xf103('0x40')][0x9]['value']:undefined)||''}];case _0xf103('0x54'):case _0xf103('0x55'):return[{'name':_0xf103('0x56'),'value':_0x192a0d[_0xf103('0x56')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d['attrs'][0x0]?_0x192a0d[_0xf103('0x40')][0x0][_0xf103('0x41')]:undefined)||_0xf103('0x4b')},{'name':_0xf103('0x57'),'value':_0x192a0d[_0xf103('0x57')]||(_0x192a0d['attrs']&&_0x192a0d['attrs'][0x1]?_0x192a0d[_0xf103('0x40')][0x1][_0xf103('0x41')]:undefined)||null},{'name':_0xf103('0x58'),'value':_0x192a0d[_0xf103('0x58')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x2]?_0x192a0d['attrs'][0x2]['value']:undefined)||null},{'name':_0xf103('0x4c'),'value':_0x192a0d[_0xf103('0x4c')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x3]?_0x192a0d[_0xf103('0x40')][0x3][_0xf103('0x41')]:undefined)||[]},{'name':_0xf103('0x59'),'value':_0x192a0d[_0xf103('0x59')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x4]?_0x192a0d[_0xf103('0x40')][0x4][_0xf103('0x41')]:undefined)||_0xf103('0x4d')},{'name':'attrEmailAccounts','value':_0x192a0d[_0xf103('0x4e')]||(_0x192a0d['attrs']&&_0x192a0d[_0xf103('0x40')][0x5]?_0x192a0d[_0xf103('0x40')][0x5][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x4f'),'value':_0x192a0d[_0xf103('0x4f')]||(_0x192a0d['attrs']&&_0x192a0d['attrs'][0x6]?_0x192a0d[_0xf103('0x40')][0x6][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x50'),'value':_0x192a0d[_0xf103('0x50')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x7]?_0x192a0d['attrs'][0x7][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x51'),'value':_0x192a0d[_0xf103('0x51')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x8]?_0x192a0d[_0xf103('0x40')][0x8][_0xf103('0x41')]:undefined)||''},{'name':_0xf103('0x52'),'value':_0x192a0d[_0xf103('0x52')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x9]?_0x192a0d[_0xf103('0x40')][0x9][_0xf103('0x41')]:undefined)||''},{'name':'attrChatWebsites','value':_0x192a0d['attrChatWebsites']||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0xa]?_0x192a0d['attrs'][0xa][_0xf103('0x41')]:undefined)||''}];case _0xf103('0x5a'):return[{'name':_0xf103('0x5b'),'type':_0x192a0d[_0xf103('0x5c')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x0]?_0x192a0d[_0xf103('0x40')][0x0][_0xf103('0x3d')]:undefined)||null,'value':_0x192a0d[_0xf103('0x5b')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x0]?_0x192a0d['attrs'][0x0]['value']:undefined)||null},{'name':_0xf103('0x5d'),'value':_0x192a0d[_0xf103('0x5d')]||(_0x192a0d[_0xf103('0x40')]&&_0x192a0d[_0xf103('0x40')][0x1]?_0x192a0d[_0xf103('0x40')][0x1][_0xf103('0x41')]:undefined)||0x0}];default:return[];}}catch(_0x4776d8){logger[_0xf103('0x2b')](_0xf103('0x5e'),JSON['stringify'](_0x4776d8));return[];}}exports[_0xf103('0x5f')]=function(_0x3ecd72,_0x5bb322){if(_0x3ecd72['body']){_0x3ecd72['body'][_0xf103('0x40')]=widgetAttributes(_0x3ecd72['body']);}return db[_0xf103('0x2e')][_0xf103('0x5f')](_0x3ecd72[_0xf103('0x60')],{})[_0xf103('0x29')](respondWithResult(_0x5bb322,0xc9))[_0xf103('0x3b')](handleError(_0x5bb322,null));};exports[_0xf103('0x28')]=function(_0x12094e,_0x2d7880){if(_0x12094e[_0xf103('0x60')]['id']){delete _0x12094e[_0xf103('0x60')]['id'];}_0x12094e[_0xf103('0x60')]['attrs']=widgetAttributes(_0x12094e[_0xf103('0x60')]);return db[_0xf103('0x2e')][_0xf103('0x3a')]({'where':{'id':_0x12094e['params']['id']}})[_0xf103('0x29')](handleEntityNotFound(_0x2d7880,null))[_0xf103('0x29')](saveUpdates(_0x12094e[_0xf103('0x60')],null))[_0xf103('0x29')](respondWithResult(_0x2d7880,null))[_0xf103('0x3b')](handleError(_0x2d7880,null));};
\ No newline at end of file
+var _0xa423=['../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','end','offset','limit','undefined','count','status','Content-Range','json','apply','reject','save','update','then','error','name','send','show','params','model','keys','DashboardItem','filters','intersection','query','attributes','fields','length','includeAll','options','find','catch','destroy','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','attrTimezone','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x3b5ad9,_0x223867){var _0x611ae9=function(_0x1c5e28){while(--_0x1c5e28){_0x3b5ad9['push'](_0x3b5ad9['shift']());}};_0x611ae9(++_0x223867);}(_0xa423,0x16c));var _0x3a42=function(_0x4016fc,_0x2e0259){_0x4016fc=_0x4016fc-0x0;var _0x2c7c26=_0xa423[_0x4016fc];return _0x2c7c26;};'use strict';var emlformat=require(_0x3a42('0x0'));var rimraf=require(_0x3a42('0x1'));var zipdir=require(_0x3a42('0x2'));var jsonpatch=require(_0x3a42('0x3'));var rp=require(_0x3a42('0x4'));var moment=require('moment');var BPromise=require(_0x3a42('0x5'));var Mustache=require(_0x3a42('0x6'));var util=require('util');var path=require(_0x3a42('0x7'));var sox=require(_0x3a42('0x8'));var csv=require(_0x3a42('0x9'));var ejs=require(_0x3a42('0xa'));var fs=require('fs');var fs_extra=require(_0x3a42('0xb'));var _=require('lodash');var squel=require(_0x3a42('0xc'));var crypto=require(_0x3a42('0xd'));var jsforce=require(_0x3a42('0xe'));var deskjs=require(_0x3a42('0xf'));var toCsv=require(_0x3a42('0x9'));var querystring=require(_0x3a42('0x10'));var Papa=require(_0x3a42('0x11'));var Redis=require(_0x3a42('0x12'));var authService=require(_0x3a42('0x13'));var qs=require(_0x3a42('0x14'));var as=require(_0x3a42('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3a42('0x16'))(_0x3a42('0x17'));var utils=require(_0x3a42('0x18'));var config=require(_0x3a42('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x3a42('0x1a')]=_['defaults'](config[_0x3a42('0x1a')],{'host':_0x3a42('0x1b'),'port':0x18eb});var socket=require(_0x3a42('0x1c'))(new Redis(config[_0x3a42('0x1a')]));require(_0x3a42('0x1d'))[_0x3a42('0x1e')](socket);function respondWithStatusCode(_0x5f5244,_0xd32889){_0xd32889=_0xd32889||0xcc;return function(_0x4f715c){if(_0x4f715c){return _0x5f5244[_0x3a42('0x1f')](_0xd32889);}return _0x5f5244['status'](_0xd32889)[_0x3a42('0x20')]();};}function respondWithResult(_0x5895a8,_0x46ef1e){_0x46ef1e=_0x46ef1e||0xc8;return function(_0x4edcf5){if(_0x4edcf5){return _0x5895a8['status'](_0x46ef1e)['json'](_0x4edcf5);}};}function respondWithFilteredResult(_0x26c844,_0x3a1dd0){return function(_0x438cf1){if(_0x438cf1){var _0x39e620=typeof _0x3a1dd0[_0x3a42('0x21')]==='undefined'&&typeof _0x3a1dd0[_0x3a42('0x22')]===_0x3a42('0x23');var _0x49f00e=_0x438cf1[_0x3a42('0x24')];var _0xa89087=_0x39e620?0x0:_0x3a1dd0[_0x3a42('0x21')];var _0x59f337=_0x39e620?_0x438cf1[_0x3a42('0x24')]:_0x3a1dd0[_0x3a42('0x21')]+_0x3a1dd0[_0x3a42('0x22')];var _0x477605;if(_0x59f337>=_0x49f00e){_0x59f337=_0x49f00e;_0x477605=0xc8;}else{_0x477605=0xce;}_0x26c844[_0x3a42('0x25')](_0x477605);return _0x26c844['set'](_0x3a42('0x26'),_0xa89087+'-'+_0x59f337+'/'+_0x49f00e)[_0x3a42('0x27')](_0x438cf1);}return null;};}function patchUpdates(_0x379fe6){return function(_0x434283){try{jsonpatch[_0x3a42('0x28')](_0x434283,_0x379fe6,!![]);}catch(_0x5b41d2){return BPromise[_0x3a42('0x29')](_0x5b41d2);}return _0x434283[_0x3a42('0x2a')]();};}function saveUpdates(_0x477cb9,_0x1add9b){return function(_0x1540e5){if(_0x1540e5){return _0x1540e5[_0x3a42('0x2b')](_0x477cb9)[_0x3a42('0x2c')](function(_0x434044){return _0x434044;});}return null;};}function removeEntity(_0x2c4b3a,_0x3a3f87){return function(_0x29a4d0){if(_0x29a4d0){return _0x29a4d0['destroy']()[_0x3a42('0x2c')](function(){_0x2c4b3a[_0x3a42('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3027dd,_0x5b5897){return function(_0x462a56){if(!_0x462a56){_0x3027dd[_0x3a42('0x1f')](0x194);}return _0x462a56;};}function handleError(_0x409910,_0x299282){_0x299282=_0x299282||0x1f4;return function(_0x1559cd){logger[_0x3a42('0x2d')](_0x1559cd['stack']);if(_0x1559cd[_0x3a42('0x2e')]){delete _0x1559cd[_0x3a42('0x2e')];}_0x409910[_0x3a42('0x25')](_0x299282)[_0x3a42('0x2f')](_0x1559cd);};}exports[_0x3a42('0x30')]=function(_0x44ef39,_0x41776f){var _0x56ee5d={'raw':![],'where':{'id':_0x44ef39[_0x3a42('0x31')]['id']}},_0x2d6192={};_0x2d6192[_0x3a42('0x32')]=_[_0x3a42('0x33')](db[_0x3a42('0x34')]['rawAttributes']);_0x2d6192['query']=_[_0x3a42('0x33')](_0x44ef39['query']);_0x2d6192[_0x3a42('0x35')]=_[_0x3a42('0x36')](_0x2d6192[_0x3a42('0x32')],_0x2d6192[_0x3a42('0x37')]);_0x56ee5d[_0x3a42('0x38')]=_[_0x3a42('0x36')](_0x2d6192['model'],qs[_0x3a42('0x39')](_0x44ef39[_0x3a42('0x37')][_0x3a42('0x39')]));_0x56ee5d['attributes']=_0x56ee5d['attributes'][_0x3a42('0x3a')]?_0x56ee5d[_0x3a42('0x38')]:_0x2d6192[_0x3a42('0x32')];if(_0x44ef39[_0x3a42('0x37')][_0x3a42('0x3b')]){_0x56ee5d['include']=[{'all':!![]}];}_0x56ee5d=_['merge']({},_0x56ee5d,_0x44ef39[_0x3a42('0x3c')]);return db[_0x3a42('0x34')][_0x3a42('0x3d')](_0x56ee5d)[_0x3a42('0x2c')](handleEntityNotFound(_0x41776f,null))['then'](respondWithResult(_0x41776f,null))[_0x3a42('0x3e')](handleError(_0x41776f,null));};exports[_0x3a42('0x3f')]=function(_0x4fb43f,_0x479e5e){return db['DashboardItem'][_0x3a42('0x3d')]({'where':{'id':_0x4fb43f['params']['id']}})[_0x3a42('0x2c')](handleEntityNotFound(_0x479e5e,null))[_0x3a42('0x2c')](removeEntity(_0x479e5e,null))[_0x3a42('0x3e')](handleError(_0x479e5e,null));};function widgetAttributes(_0x1fcbcb){try{switch(_0x1fcbcb[_0x3a42('0x40')]){case _0x3a42('0x41'):return[{'name':_0x3a42('0x42'),'value':_0x1fcbcb[_0x3a42('0x42')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb['attrs'][0x0]?_0x1fcbcb[_0x3a42('0x43')][0x0][_0x3a42('0x44')]:undefined)||_0x3a42('0x45')}];case _0x3a42('0x46'):return[{'name':_0x3a42('0x47'),'value':_0x1fcbcb['attrPath']||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb['attrs'][0x0]?_0x1fcbcb['attrs'][0x0]['value']:undefined)||''}];case'clock':return[{'name':_0x3a42('0x48'),'value':_0x1fcbcb['attrHourFormat']||(_0x1fcbcb['attrs']&&_0x1fcbcb['attrs'][0x0]?_0x1fcbcb[_0x3a42('0x43')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0x3a42('0x49'),'value':_0x1fcbcb[_0x3a42('0x49')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x1]?_0x1fcbcb[_0x3a42('0x43')][0x1][_0x3a42('0x44')]:undefined)||'0.00'},{'name':_0x3a42('0x4a'),'value':_0x1fcbcb[_0x3a42('0x4a')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb['attrs'][0x2]?_0x1fcbcb[_0x3a42('0x43')][0x2][_0x3a42('0x44')]:undefined)||0xc}];case'counter':return[{'name':_0x3a42('0x4b'),'value':_0x1fcbcb[_0x3a42('0x4b')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x0]?_0x1fcbcb[_0x3a42('0x43')][0x0][_0x3a42('0x44')]:undefined)||_0x3a42('0x4c')},{'name':'attrVoiceQueues','value':_0x1fcbcb[_0x3a42('0x4d')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x1]?_0x1fcbcb[_0x3a42('0x43')][0x1][_0x3a42('0x44')]:undefined)||[]},{'name':'attrFontSize','value':_0x1fcbcb[_0x3a42('0x4a')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x2]?_0x1fcbcb['attrs'][0x2][_0x3a42('0x44')]:undefined)||0x14},{'name':_0x3a42('0x4e'),'value':_0x1fcbcb[_0x3a42('0x4e')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x3]?_0x1fcbcb['attrs'][0x3][_0x3a42('0x44')]:undefined)||_0x3a42('0x4f')},{'name':_0x3a42('0x50'),'value':_0x1fcbcb[_0x3a42('0x50')]||(_0x1fcbcb['attrs']&&_0x1fcbcb[_0x3a42('0x43')][0x4]?_0x1fcbcb[_0x3a42('0x43')][0x4][_0x3a42('0x44')]:undefined)||''},{'name':_0x3a42('0x51'),'value':_0x1fcbcb[_0x3a42('0x51')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x5]?_0x1fcbcb['attrs'][0x5][_0x3a42('0x44')]:undefined)||''},{'name':_0x3a42('0x52'),'value':_0x1fcbcb[_0x3a42('0x52')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x6]?_0x1fcbcb[_0x3a42('0x43')][0x6]['value']:undefined)||''},{'name':_0x3a42('0x53'),'value':_0x1fcbcb['attrOpenchannelAccounts']||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x7]?_0x1fcbcb[_0x3a42('0x43')][0x7][_0x3a42('0x44')]:undefined)||''},{'name':_0x3a42('0x54'),'value':_0x1fcbcb[_0x3a42('0x54')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x8]?_0x1fcbcb[_0x3a42('0x43')][0x8]['value']:undefined)||''},{'name':_0x3a42('0x55'),'value':_0x1fcbcb[_0x3a42('0x55')]||(_0x1fcbcb['attrs']&&_0x1fcbcb['attrs'][0x9]?_0x1fcbcb[_0x3a42('0x43')][0x9][_0x3a42('0x44')]:undefined)||''}];case'multibar-chart':case _0x3a42('0x56'):return[{'name':_0x3a42('0x57'),'value':_0x1fcbcb[_0x3a42('0x57')]||(_0x1fcbcb['attrs']&&_0x1fcbcb[_0x3a42('0x43')][0x0]?_0x1fcbcb[_0x3a42('0x43')][0x0]['value']:undefined)||_0x3a42('0x4c')},{'name':'attrSerie2','value':_0x1fcbcb[_0x3a42('0x58')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb['attrs'][0x1]?_0x1fcbcb[_0x3a42('0x43')][0x1][_0x3a42('0x44')]:undefined)||null},{'name':_0x3a42('0x59'),'value':_0x1fcbcb[_0x3a42('0x59')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x2]?_0x1fcbcb[_0x3a42('0x43')][0x2][_0x3a42('0x44')]:undefined)||null},{'name':_0x3a42('0x4d'),'value':_0x1fcbcb[_0x3a42('0x4d')]||(_0x1fcbcb['attrs']&&_0x1fcbcb[_0x3a42('0x43')][0x3]?_0x1fcbcb[_0x3a42('0x43')][0x3][_0x3a42('0x44')]:undefined)||[]},{'name':_0x3a42('0x4e'),'value':_0x1fcbcb[_0x3a42('0x4e')]||(_0x1fcbcb['attrs']&&_0x1fcbcb[_0x3a42('0x43')][0x4]?_0x1fcbcb[_0x3a42('0x43')][0x4][_0x3a42('0x44')]:undefined)||'voice'},{'name':_0x3a42('0x50'),'value':_0x1fcbcb[_0x3a42('0x50')]||(_0x1fcbcb['attrs']&&_0x1fcbcb[_0x3a42('0x43')][0x5]?_0x1fcbcb[_0x3a42('0x43')][0x5][_0x3a42('0x44')]:undefined)||''},{'name':_0x3a42('0x51'),'value':_0x1fcbcb[_0x3a42('0x51')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb['attrs'][0x6]?_0x1fcbcb['attrs'][0x6]['value']:undefined)||''},{'name':_0x3a42('0x52'),'value':_0x1fcbcb[_0x3a42('0x52')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x7]?_0x1fcbcb['attrs'][0x7][_0x3a42('0x44')]:undefined)||''},{'name':_0x3a42('0x53'),'value':_0x1fcbcb[_0x3a42('0x53')]||(_0x1fcbcb['attrs']&&_0x1fcbcb[_0x3a42('0x43')][0x8]?_0x1fcbcb[_0x3a42('0x43')][0x8]['value']:undefined)||''},{'name':_0x3a42('0x54'),'value':_0x1fcbcb[_0x3a42('0x54')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x9]?_0x1fcbcb[_0x3a42('0x43')][0x9][_0x3a42('0x44')]:undefined)||''},{'name':_0x3a42('0x55'),'value':_0x1fcbcb[_0x3a42('0x55')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0xa]?_0x1fcbcb[_0x3a42('0x43')][0xa][_0x3a42('0x44')]:undefined)||''}];case _0x3a42('0x5a'):return[{'name':_0x3a42('0x5b'),'type':_0x1fcbcb[_0x3a42('0x5c')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x0]?_0x1fcbcb[_0x3a42('0x43')][0x0]['type']:undefined)||null,'value':_0x1fcbcb[_0x3a42('0x5b')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x0]?_0x1fcbcb['attrs'][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0x1fcbcb[_0x3a42('0x5d')]||(_0x1fcbcb[_0x3a42('0x43')]&&_0x1fcbcb[_0x3a42('0x43')][0x1]?_0x1fcbcb[_0x3a42('0x43')][0x1][_0x3a42('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x3cf363){logger[_0x3a42('0x2d')]('widgetAttributes:\x20%s',JSON[_0x3a42('0x5e')](_0x3cf363));return[];}}exports[_0x3a42('0x5f')]=function(_0x5986fc,_0xbe17c3){if(_0x5986fc[_0x3a42('0x60')]){_0x5986fc['body'][_0x3a42('0x43')]=widgetAttributes(_0x5986fc['body']);}return db[_0x3a42('0x34')]['create'](_0x5986fc[_0x3a42('0x60')],{})[_0x3a42('0x2c')](respondWithResult(_0xbe17c3,0xc9))[_0x3a42('0x3e')](handleError(_0xbe17c3,null));};exports[_0x3a42('0x2b')]=function(_0x3d448e,_0x46a14d){if(_0x3d448e[_0x3a42('0x60')]['id']){delete _0x3d448e['body']['id'];}_0x3d448e[_0x3a42('0x60')][_0x3a42('0x43')]=widgetAttributes(_0x3d448e['body']);return db[_0x3a42('0x34')][_0x3a42('0x3d')]({'where':{'id':_0x3d448e['params']['id']}})[_0x3a42('0x2c')](handleEntityNotFound(_0x46a14d,null))[_0x3a42('0x2c')](saveUpdates(_0x3d448e[_0x3a42('0x60')],null))[_0x3a42('0x2c')](respondWithResult(_0x46a14d,null))[_0x3a42('0x3e')](handleError(_0x46a14d,null));};
\ No newline at end of file
index c64516d..ec90005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x560e=['hasOwnProperty','exports','events','../../mysqldb','remove','emit'];(function(_0x31967d,_0x2e4c6e){var _0x19009a=function(_0x1dd32c){while(--_0x1dd32c){_0x31967d['push'](_0x31967d['shift']());}};_0x19009a(++_0x2e4c6e);}(_0x560e,0x1ee));var _0xe560=function(_0x47f8ca,_0x5f162){_0x47f8ca=_0x47f8ca-0x0;var _0x10dbea=_0x560e[_0x47f8ca];return _0x10dbea;};'use strict';var EventEmitter=require(_0xe560('0x0'));var DashboardItem=require(_0xe560('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xe560('0x2')};function emitEvent(_0x24a48e){return function(_0xbd8589,_0x3c5763,_0x45aa01){DashboardItemEvents[_0xe560('0x3')](_0x24a48e+':'+_0xbd8589['id'],_0xbd8589);DashboardItemEvents['emit'](_0x24a48e,_0xbd8589);_0x45aa01(null);};}for(var e in events){if(events[_0xe560('0x4')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xe560('0x5')]=DashboardItemEvents;
\ No newline at end of file
+var _0x00e3=['../../mysqldb','DashboardItem','setMaxListeners','save','update','remove','emit','exports','events'];(function(_0x14d369,_0x5034f6){var _0x139904=function(_0x377a7f){while(--_0x377a7f){_0x14d369['push'](_0x14d369['shift']());}};_0x139904(++_0x5034f6);}(_0x00e3,0x8f));var _0x300e=function(_0x16ffe2,_0x2f73ed){_0x16ffe2=_0x16ffe2-0x0;var _0x4193e5=_0x00e3[_0x16ffe2];return _0x4193e5;};'use strict';var EventEmitter=require(_0x300e('0x0'));var DashboardItem=require(_0x300e('0x1'))['db'][_0x300e('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x300e('0x3')](0x0);var events={'afterCreate':_0x300e('0x4'),'afterUpdate':_0x300e('0x5'),'afterDestroy':_0x300e('0x6')};function emitEvent(_0x4cd835){return function(_0x488af1,_0x380eb8,_0x2fc85a){DashboardItemEvents[_0x300e('0x7')](_0x4cd835+':'+_0x488af1['id'],_0x488af1);DashboardItemEvents['emit'](_0x4cd835,_0x488af1);_0x2fc85a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x300e('0x8')]=DashboardItemEvents;
\ No newline at end of file
index 27f3102..0262b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bae=['bluebird','request-promise','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','util','../../config/logger','api','moment'];(function(_0x355fa7,_0x270de1){var _0x10cd39=function(_0x127c1b){while(--_0x127c1b){_0x355fa7['push'](_0x355fa7['shift']());}};_0x10cd39(++_0x270de1);}(_0x2bae,0x1a9));var _0xe2ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bae[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xe2ba('0x0'));var logger=require(_0xe2ba('0x1'))(_0xe2ba('0x2'));var moment=require(_0xe2ba('0x3'));var BPromise=require(_0xe2ba('0x4'));var rp=require(_0xe2ba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe2ba('0x6'));var attributes=require(_0xe2ba('0x7'));module[_0xe2ba('0x8')]=function(_0x286f5f,_0x19d578){return _0x286f5f[_0xe2ba('0x9')](_0xe2ba('0xa'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a61=['moment','bluebird','request-promise','path','rimraf','exports','define','DashboardItem','lodash','../../config/logger','api'];(function(_0x263f41,_0x249888){var _0x502318=function(_0x4cbcc9){while(--_0x4cbcc9){_0x263f41['push'](_0x263f41['shift']());}};_0x502318(++_0x249888);}(_0x2a61,0x126));var _0x12a6=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x2a61[_0x432682];return _0x463d05;};'use strict';var _=require(_0x12a6('0x0'));var util=require('util');var logger=require(_0x12a6('0x1'))(_0x12a6('0x2'));var moment=require(_0x12a6('0x3'));var BPromise=require(_0x12a6('0x4'));var rp=require(_0x12a6('0x5'));var fs=require('fs');var path=require(_0x12a6('0x6'));var rimraf=require(_0x12a6('0x7'));var config=require('../../config/environment');var attributes=require('./dashboardItem.attributes');module[_0x12a6('0x8')]=function(_0x32b220,_0xa77ba8){return _0x32b220[_0x12a6('0x9')](_0x12a6('0xa'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea263ba..8d51737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae1=['./dashboardItem.socket','register','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x3fbb8b,_0x287963){var _0x5f3e22=function(_0x26feaa){while(--_0x26feaa){_0x3fbb8b['push'](_0x3fbb8b['shift']());}};_0x5f3e22(++_0x287963);}(_0xeae1,0x1a4));var _0x1eae=function(_0xf3c843,_0x8ff24e){_0xf3c843=_0xf3c843-0x0;var _0x3191c6=_0xeae1[_0xf3c843];return _0x3191c6;};'use strict';var _=require(_0x1eae('0x0'));var util=require(_0x1eae('0x1'));var moment=require(_0x1eae('0x2'));var BPromise=require('bluebird');var rs=require(_0x1eae('0x3'));var fs=require('fs');var Redis=require(_0x1eae('0x4'));var db=require(_0x1eae('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1eae('0x6'))(_0x1eae('0x7'));var config=require(_0x1eae('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1eae('0x9')][_0x1eae('0xa')]({'port':0x232a});config['redis']=_[_0x1eae('0xb')](config[_0x1eae('0xc')],{'host':_0x1eae('0xd'),'port':0x18eb});var socket=require(_0x1eae('0xe'))(new Redis(config[_0x1eae('0xc')]));require(_0x1eae('0xf'))[_0x1eae('0x10')](socket);function respondWithRpcPromise(_0x539964,_0x5cff47,_0x5655d3){return new BPromise(function(_0x2feb13,_0x391b46){return client['request'](_0x539964,_0x5655d3)[_0x1eae('0x11')](function(_0x30498a){logger[_0x1eae('0x12')](_0x1eae('0x13'),_0x5cff47,_0x1eae('0x14'));logger[_0x1eae('0x15')](_0x1eae('0x16'),_0x5cff47,_0x1eae('0x14'),JSON[_0x1eae('0x17')](_0x30498a));if(_0x30498a[_0x1eae('0x18')]){if(_0x30498a[_0x1eae('0x18')][_0x1eae('0x19')]===0x1f4){logger[_0x1eae('0x18')](_0x1eae('0x13'),_0x5cff47,_0x30498a[_0x1eae('0x18')]['message']);return _0x391b46(_0x30498a[_0x1eae('0x18')]['message']);}logger[_0x1eae('0x18')]('DashboardItem,\x20%s,\x20%s',_0x5cff47,_0x30498a[_0x1eae('0x18')][_0x1eae('0x1a')]);return _0x2feb13(_0x30498a[_0x1eae('0x18')][_0x1eae('0x1a')]);}else{logger[_0x1eae('0x12')](_0x1eae('0x13'),_0x5cff47,'request\x20sent');_0x2feb13(_0x30498a[_0x1eae('0x1b')][_0x1eae('0x1a')]);}})[_0x1eae('0x1c')](function(_0x32825b){logger['error'](_0x1eae('0x13'),_0x5cff47,_0x32825b);_0x391b46(_0x32825b);});});}
\ No newline at end of file
+var _0xa11c=['debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xa11c,0xc7));var _0xca11=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xa11c[_0x126558];return _0x1f6d14;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xca11('0x0'));var rs=require(_0xca11('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xca11('0x2'))['db'];var utils=require(_0xca11('0x3'));var logger=require(_0xca11('0x4'))('rpc');var config=require(_0xca11('0x5'));var jayson=require(_0xca11('0x6'));var client=jayson['client'][_0xca11('0x7')]({'port':0x232a});config[_0xca11('0x8')]=_[_0xca11('0x9')](config[_0xca11('0x8')],{'host':_0xca11('0xa'),'port':0x18eb});var socket=require(_0xca11('0xb'))(new Redis(config[_0xca11('0x8')]));require(_0xca11('0xc'))['register'](socket);function respondWithRpcPromise(_0x55ed85,_0x29d0bf,_0x50641a){return new BPromise(function(_0x2406a1,_0x83a3d2){return client[_0xca11('0xd')](_0x55ed85,_0x50641a)[_0xca11('0xe')](function(_0x2a5e16){logger[_0xca11('0xf')](_0xca11('0x10'),_0x29d0bf,'request\x20sent');logger[_0xca11('0x11')](_0xca11('0x12'),_0x29d0bf,_0xca11('0x13'),JSON['stringify'](_0x2a5e16));if(_0x2a5e16['error']){if(_0x2a5e16[_0xca11('0x14')][_0xca11('0x15')]===0x1f4){logger[_0xca11('0x14')](_0xca11('0x10'),_0x29d0bf,_0x2a5e16[_0xca11('0x14')][_0xca11('0x16')]);return _0x83a3d2(_0x2a5e16[_0xca11('0x14')][_0xca11('0x16')]);}logger[_0xca11('0x14')](_0xca11('0x10'),_0x29d0bf,_0x2a5e16[_0xca11('0x14')][_0xca11('0x16')]);return _0x2406a1(_0x2a5e16['error'][_0xca11('0x16')]);}else{logger[_0xca11('0xf')](_0xca11('0x10'),_0x29d0bf,_0xca11('0x13'));_0x2406a1(_0x2a5e16[_0xca11('0x17')][_0xca11('0x16')]);}})['catch'](function(_0x3eb6e4){logger[_0xca11('0x14')](_0xca11('0x10'),_0x29d0bf,_0x3eb6e4);_0x83a3d2(_0x3eb6e4);});});}
\ No newline at end of file
index 333ec00..e169add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe093=['save','remove','update','emit','length','dashboardItem:','./dashboardItem.events'];(function(_0x33daeb,_0x2c5f4b){var _0xaa5215=function(_0x225544){while(--_0x225544){_0x33daeb['push'](_0x33daeb['shift']());}};_0xaa5215(++_0x2c5f4b);}(_0xe093,0x19c));var _0x3e09=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xe093[_0x126558];return _0x1f6d14;};'use strict';var DashboardItemEvents=require(_0x3e09('0x0'));var events=[_0x3e09('0x1'),_0x3e09('0x2'),_0x3e09('0x3')];function createListener(_0x37f549,_0xf62ae0){return function(_0x2b6459){_0xf62ae0[_0x3e09('0x4')](_0x37f549,_0x2b6459);};}function removeListener(_0x17bc9b,_0x5ca752){return function(){DashboardItemEvents['removeListener'](_0x17bc9b,_0x5ca752);};}exports['register']=function(_0x2a02eb){for(var _0x194c1a=0x0,_0x2056b1=events[_0x3e09('0x5')];_0x194c1a<_0x2056b1;_0x194c1a++){var _0x22f49b=events[_0x194c1a];var _0x120717=createListener(_0x3e09('0x6')+_0x22f49b,_0x2a02eb);DashboardItemEvents['on'](_0x22f49b,_0x120717);}};
\ No newline at end of file
+var _0x28af=['removeListener','register','dashboardItem:','./dashboardItem.events','save','update','emit'];(function(_0x28f156,_0x1153b7){var _0x3b12c2=function(_0x263388){while(--_0x263388){_0x28f156['push'](_0x28f156['shift']());}};_0x3b12c2(++_0x1153b7);}(_0x28af,0x153));var _0xf28a=function(_0x4b6507,_0x5518b5){_0x4b6507=_0x4b6507-0x0;var _0x2001ec=_0x28af[_0x4b6507];return _0x2001ec;};'use strict';var DashboardItemEvents=require(_0xf28a('0x0'));var events=[_0xf28a('0x1'),'remove',_0xf28a('0x2')];function createListener(_0x292b8a,_0x345662){return function(_0x1c471e){_0x345662[_0xf28a('0x3')](_0x292b8a,_0x1c471e);};}function removeListener(_0x97609c,_0x46ec0c){return function(){DashboardItemEvents[_0xf28a('0x4')](_0x97609c,_0x46ec0c);};}exports[_0xf28a('0x5')]=function(_0x5a2652){for(var _0x440e91=0x0,_0x308566=events['length'];_0x440e91<_0x308566;_0x440e91++){var _0xb54310=events[_0x440e91];var _0x4e1655=createListener(_0xf28a('0x6')+_0xb54310,_0x5a2652);DashboardItemEvents['on'](_0xb54310,_0x4e1655);}};
\ No newline at end of file
index 857dff6..c48a84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c19=['../../components/auth/service','./dashboardItem.controller','get','/:id','isAuthenticated','show','create','put','update','destroy','exports','multer','util','path','express','Router'];(function(_0x48c615,_0x4cc757){var _0x3d9e22=function(_0x1ee9f2){while(--_0x1ee9f2){_0x48c615['push'](_0x48c615['shift']());}};_0x3d9e22(++_0x4cc757);}(_0x1c19,0x8b));var _0x91c1=function(_0x460666,_0x24bfa0){_0x460666=_0x460666-0x0;var _0x555cbf=_0x1c19[_0x460666];return _0x555cbf;};'use strict';var multer=require(_0x91c1('0x0'));var util=require(_0x91c1('0x1'));var path=require(_0x91c1('0x2'));var timeout=require('connect-timeout');var express=require(_0x91c1('0x3'));var router=express[_0x91c1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91c1('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x91c1('0x6'));router[_0x91c1('0x7')](_0x91c1('0x8'),auth[_0x91c1('0x9')](),controller[_0x91c1('0xa')]);router['post']('/',auth[_0x91c1('0x9')](),controller[_0x91c1('0xb')]);router[_0x91c1('0xc')](_0x91c1('0x8'),auth[_0x91c1('0x9')](),controller[_0x91c1('0xd')]);router['delete'](_0x91c1('0x8'),auth[_0x91c1('0x9')](),controller[_0x91c1('0xe')]);module[_0x91c1('0xf')]=router;
\ No newline at end of file
+var _0xe335=['path','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','post','create','delete','destroy','exports'];(function(_0x3a6bb0,_0x45e9d8){var _0x2307dd=function(_0x2579a6){while(--_0x2579a6){_0x3a6bb0['push'](_0x3a6bb0['shift']());}};_0x2307dd(++_0x45e9d8);}(_0xe335,0x1c0));var _0x5e33=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe335[_0x19950b];return _0x3c6b41;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5e33('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5e33('0x1')]();var fs_extra=require(_0x5e33('0x2'));var auth=require(_0x5e33('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x5e33('0x4'));var controller=require(_0x5e33('0x5'));router[_0x5e33('0x6')](_0x5e33('0x7'),auth[_0x5e33('0x8')](),controller['show']);router[_0x5e33('0x9')]('/',auth['isAuthenticated'](),controller[_0x5e33('0xa')]);router['put'](_0x5e33('0x7'),auth['isAuthenticated'](),controller['update']);router[_0x5e33('0xb')](_0x5e33('0x7'),auth[_0x5e33('0x8')](),controller[_0x5e33('0xc')]);module[_0x5e33('0xd')]=router;
\ No newline at end of file
index 5ed3f0c..80d422a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6146=['third','first','sequelize','exports','STRING','ENUM'];(function(_0xb3c65f,_0x55f173){var _0x1b2151=function(_0x244dae){while(--_0x244dae){_0xb3c65f['push'](_0xb3c65f['shift']());}};_0x1b2151(++_0x55f173);}(_0x6146,0xf8));var _0x6614=function(_0x1845e4,_0x4287db){_0x1845e4=_0x1845e4-0x0;var _0x2d8b4a=_0x6146[_0x1845e4];return _0x2d8b4a;};'use strict';var Sequelize=require(_0x6614('0x0'));module[_0x6614('0x1')]={'name':{'type':Sequelize[_0x6614('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x6614('0x3')]('first','second',_0x6614('0x4')),'allowNull':![],'defaultValue':_0x6614('0x5')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb962=['ENUM','first','third','sequelize','exports','STRING'];(function(_0x27d6c5,_0x4c0e92){var _0x51fba6=function(_0xc58e1a){while(--_0xc58e1a){_0x27d6c5['push'](_0x27d6c5['shift']());}};_0x51fba6(++_0x4c0e92);}(_0xb962,0x1e3));var _0x2b96=function(_0x4235b3,_0x4295b9){_0x4235b3=_0x4235b3-0x0;var _0x5a6cc9=_0xb962[_0x4235b3];return _0x5a6cc9;};'use strict';var Sequelize=require(_0x2b96('0x0'));module[_0x2b96('0x1')]={'name':{'type':Sequelize[_0x2b96('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x2b96('0x3')](_0x2b96('0x4'),'second',_0x2b96('0x5')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e72c8c7..6e13f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a0=['get','Dispositions','error','stack','name','send','index','map','Disposition','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','create','body','user','role','find','autoAssociation','update','eml-format','rimraf','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','apply','reject','save','then','destroy'];(function(_0x379e7a,_0x2c25f6){var _0x48abd8=function(_0x1f5043){while(--_0x1f5043){_0x379e7a['push'](_0x379e7a['shift']());}};_0x48abd8(++_0x2c25f6);}(_0x99a0,0x121));var _0x099a=function(_0x419f0f,_0x594091){_0x419f0f=_0x419f0f-0x0;var _0x1677f3=_0x99a0[_0x419f0f];return _0x1677f3;};'use strict';var emlformat=require(_0x099a('0x0'));var rimraf=require(_0x099a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x099a('0x2'));var Mustache=require(_0x099a('0x3'));var util=require('util');var path=require(_0x099a('0x4'));var sox=require(_0x099a('0x5'));var csv=require(_0x099a('0x6'));var ejs=require(_0x099a('0x7'));var fs=require('fs');var fs_extra=require(_0x099a('0x8'));var _=require(_0x099a('0x9'));var squel=require('squel');var crypto=require(_0x099a('0xa'));var jsforce=require(_0x099a('0xb'));var deskjs=require(_0x099a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x099a('0xd'));var Papa=require(_0x099a('0xe'));var Redis=require(_0x099a('0xf'));var authService=require(_0x099a('0x10'));var qs=require(_0x099a('0x11'));var as=require(_0x099a('0x12'));var hardwareService=require(_0x099a('0x13'));var logger=require(_0x099a('0x14'))(_0x099a('0x15'));var utils=require(_0x099a('0x16'));var config=require(_0x099a('0x17'));var licenseUtil=require(_0x099a('0x18'));var db=require(_0x099a('0x19'))['db'];function respondWithStatusCode(_0x1e9dc1,_0x2e8afc){_0x2e8afc=_0x2e8afc||0xcc;return function(_0x4bd3ee){if(_0x4bd3ee){return _0x1e9dc1[_0x099a('0x1a')](_0x2e8afc);}return _0x1e9dc1['status'](_0x2e8afc)[_0x099a('0x1b')]();};}function respondWithResult(_0x4f2dbe,_0x249392){_0x249392=_0x249392||0xc8;return function(_0x3a134e){if(_0x3a134e){return _0x4f2dbe[_0x099a('0x1c')](_0x249392)[_0x099a('0x1d')](_0x3a134e);}};}function respondWithFilteredResult(_0x23a5fd,_0x3b4bdf){return function(_0x5086d8){if(_0x5086d8){var _0x443eea=typeof _0x3b4bdf[_0x099a('0x1e')]===_0x099a('0x1f')&&typeof _0x3b4bdf[_0x099a('0x20')]==='undefined';var _0x2831a2=_0x5086d8['count'];var _0x1d3924=_0x443eea?0x0:_0x3b4bdf[_0x099a('0x1e')];var _0x295e92=_0x443eea?_0x5086d8['count']:_0x3b4bdf[_0x099a('0x1e')]+_0x3b4bdf[_0x099a('0x20')];var _0x1c5314;if(_0x295e92>=_0x2831a2){_0x295e92=_0x2831a2;_0x1c5314=0xc8;}else{_0x1c5314=0xce;}_0x23a5fd[_0x099a('0x1c')](_0x1c5314);return _0x23a5fd[_0x099a('0x21')]('Content-Range',_0x1d3924+'-'+_0x295e92+'/'+_0x2831a2)['json'](_0x5086d8);}return null;};}function patchUpdates(_0x2ec23b){return function(_0x851d2){try{jsonpatch[_0x099a('0x22')](_0x851d2,_0x2ec23b,!![]);}catch(_0x470df6){return BPromise[_0x099a('0x23')](_0x470df6);}return _0x851d2[_0x099a('0x24')]();};}function saveUpdates(_0x2b2b9b,_0x23558b){return function(_0x545830){if(_0x545830){return _0x545830['update'](_0x2b2b9b)[_0x099a('0x25')](function(_0x38dd6a){return _0x38dd6a;});}return null;};}function removeEntity(_0x2c9033,_0x7cd361){return function(_0x1d1e5f){if(_0x1d1e5f){return _0x1d1e5f[_0x099a('0x26')]()[_0x099a('0x25')](function(){var _0x1593fb=_0x1d1e5f[_0x099a('0x27')]({'plain':!![]});var _0x42ee18=_0x099a('0x28');return db['UserProfileResource'][_0x099a('0x26')]({'where':{'type':_0x42ee18,'resourceId':_0x1593fb['id']}})['then'](function(){return _0x1d1e5f;});})[_0x099a('0x25')](function(){_0x2c9033[_0x099a('0x1c')](0xcc)[_0x099a('0x1b')]();});}};}function handleEntityNotFound(_0x4cbc26,_0x320d29){return function(_0x1101aa){if(!_0x1101aa){_0x4cbc26[_0x099a('0x1a')](0x194);}return _0x1101aa;};}function handleError(_0x485d12,_0x4b2bba){_0x4b2bba=_0x4b2bba||0x1f4;return function(_0x560fdb){logger[_0x099a('0x29')](_0x560fdb[_0x099a('0x2a')]);if(_0x560fdb['name']){delete _0x560fdb[_0x099a('0x2b')];}_0x485d12[_0x099a('0x1c')](_0x4b2bba)[_0x099a('0x2c')](_0x560fdb);};}exports[_0x099a('0x2d')]=function(_0x462c0d,_0x36c1b4){var _0x57d1f3={},_0x49c257={},_0x406232={'count':0x0,'rows':[]};var _0x41b983=_[_0x099a('0x2e')](db[_0x099a('0x2f')][_0x099a('0x30')],function(_0x1a08a5){return{'name':_0x1a08a5[_0x099a('0x31')],'type':_0x1a08a5['type'][_0x099a('0x32')]};});_0x49c257[_0x099a('0x33')]=_[_0x099a('0x2e')](_0x41b983,_0x099a('0x2b'));_0x49c257[_0x099a('0x34')]=_[_0x099a('0x35')](_0x462c0d['query']);_0x49c257[_0x099a('0x36')]=_['intersection'](_0x49c257[_0x099a('0x33')],_0x49c257[_0x099a('0x34')]);_0x57d1f3['attributes']=_[_0x099a('0x37')](_0x49c257[_0x099a('0x33')],qs[_0x099a('0x38')](_0x462c0d[_0x099a('0x34')][_0x099a('0x38')]));_0x57d1f3['attributes']=_0x57d1f3[_0x099a('0x39')][_0x099a('0x3a')]?_0x57d1f3['attributes']:_0x49c257[_0x099a('0x33')];if(!_0x462c0d[_0x099a('0x34')][_0x099a('0x3b')]('nolimit')){_0x57d1f3[_0x099a('0x20')]=qs[_0x099a('0x20')](_0x462c0d[_0x099a('0x34')][_0x099a('0x20')]);_0x57d1f3[_0x099a('0x1e')]=qs[_0x099a('0x1e')](_0x462c0d['query'][_0x099a('0x1e')]);}_0x57d1f3['order']=qs[_0x099a('0x3c')](_0x462c0d[_0x099a('0x34')]['sort']);_0x57d1f3[_0x099a('0x3d')]=qs[_0x099a('0x36')](_[_0x099a('0x3e')](_0x462c0d[_0x099a('0x34')],_0x49c257[_0x099a('0x36')]),_0x41b983);if(_0x462c0d[_0x099a('0x34')][_0x099a('0x3f')]){_0x57d1f3[_0x099a('0x3d')]=_[_0x099a('0x40')](_0x57d1f3['where'],{'$or':_[_0x099a('0x2e')](_0x41b983,function(_0x402a06){if(_0x402a06[_0x099a('0x41')]!==_0x099a('0x42')){var _0x3c2337={};_0x3c2337[_0x402a06[_0x099a('0x2b')]]={'$like':'%'+_0x462c0d['query']['filter']+'%'};return _0x3c2337;}})});}_0x57d1f3=_[_0x099a('0x40')]({},_0x57d1f3,_0x462c0d[_0x099a('0x43')]);var _0x5dea70={'where':_0x57d1f3[_0x099a('0x3d')]};return db['Disposition'][_0x099a('0x44')](_0x5dea70)[_0x099a('0x25')](function(_0x13070f){_0x406232[_0x099a('0x44')]=_0x13070f;if(_0x462c0d[_0x099a('0x34')][_0x099a('0x45')]){_0x57d1f3[_0x099a('0x46')]=[{'all':!![]}];}return db[_0x099a('0x2f')]['findAll'](_0x57d1f3);})[_0x099a('0x25')](function(_0x4a4a76){_0x406232[_0x099a('0x47')]=_0x4a4a76;return _0x406232;})['then'](respondWithFilteredResult(_0x36c1b4,_0x57d1f3))[_0x099a('0x48')](handleError(_0x36c1b4,null));};exports[_0x099a('0x49')]=function(_0xaf5b0c,_0x1f1002){var _0x581c05={'raw':!![],'where':{'id':_0xaf5b0c[_0x099a('0x4a')]['id']}},_0x20c0b6={};_0x20c0b6['model']=_[_0x099a('0x35')](db['Disposition'][_0x099a('0x30')]);_0x20c0b6[_0x099a('0x34')]=_[_0x099a('0x35')](_0xaf5b0c[_0x099a('0x34')]);_0x20c0b6[_0x099a('0x36')]=_[_0x099a('0x37')](_0x20c0b6[_0x099a('0x33')],_0x20c0b6[_0x099a('0x34')]);_0x581c05['attributes']=_[_0x099a('0x37')](_0x20c0b6['model'],qs[_0x099a('0x38')](_0xaf5b0c[_0x099a('0x34')][_0x099a('0x38')]));_0x581c05[_0x099a('0x39')]=_0x581c05[_0x099a('0x39')][_0x099a('0x3a')]?_0x581c05[_0x099a('0x39')]:_0x20c0b6['model'];if(_0xaf5b0c[_0x099a('0x34')][_0x099a('0x45')]){_0x581c05['include']=[{'all':!![]}];}_0x581c05=_[_0x099a('0x40')]({},_0x581c05,_0xaf5b0c[_0x099a('0x43')]);return db[_0x099a('0x2f')]['find'](_0x581c05)[_0x099a('0x25')](handleEntityNotFound(_0x1f1002,null))[_0x099a('0x25')](respondWithResult(_0x1f1002,null))[_0x099a('0x48')](handleError(_0x1f1002,null));};exports[_0x099a('0x4b')]=function(_0x503d44,_0x288ed9){return db['Disposition'][_0x099a('0x4b')](_0x503d44[_0x099a('0x4c')],{})['then'](function(_0x569186){var _0x155a52=_0x503d44[_0x099a('0x4d')][_0x099a('0x27')]({'plain':!![]});if(!_0x155a52)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x155a52[_0x099a('0x4e')]===_0x099a('0x4d')){var _0x2b956d=_0x569186['get']({'plain':!![]});var _0xff8124='Dispositions';return db['UserProfileSection'][_0x099a('0x4f')]({'where':{'name':_0xff8124,'userProfileId':_0x155a52['userProfileId']},'raw':!![]})['then'](function(_0x16ad33){if(_0x16ad33&&_0x16ad33[_0x099a('0x50')]===0x0){return db['UserProfileResource'][_0x099a('0x4b')]({'name':_0x2b956d[_0x099a('0x2b')],'resourceId':_0x2b956d['id'],'type':_0x16ad33[_0x099a('0x2b')],'sectionId':_0x16ad33['id']},{})['then'](function(){return _0x569186;});}else{return _0x569186;}})[_0x099a('0x48')](function(_0x2c004c){logger[_0x099a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c004c);throw _0x2c004c;});}return _0x569186;})[_0x099a('0x25')](respondWithResult(_0x288ed9,0xc9))[_0x099a('0x48')](handleError(_0x288ed9,null));};exports[_0x099a('0x51')]=function(_0x284664,_0x4d9907){if(_0x284664[_0x099a('0x4c')]['id']){delete _0x284664[_0x099a('0x4c')]['id'];}return db[_0x099a('0x2f')][_0x099a('0x4f')]({'where':{'id':_0x284664['params']['id']}})[_0x099a('0x25')](handleEntityNotFound(_0x4d9907,null))[_0x099a('0x25')](saveUpdates(_0x284664[_0x099a('0x4c')],null))['then'](respondWithResult(_0x4d9907,null))[_0x099a('0x48')](handleError(_0x4d9907,null));};exports['destroy']=function(_0xcb5056,_0x5c9e49){return db[_0x099a('0x2f')]['find']({'where':{'id':_0xcb5056[_0x099a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5c9e49,null))[_0x099a('0x25')](removeEntity(_0x5c9e49,null))[_0x099a('0x48')](handleError(_0x5c9e49,null));};
\ No newline at end of file
+var _0xd2df=['get','UserProfileResource','sendStatus','stack','name','send','index','map','Disposition','fieldName','type','model','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','length','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy'];(function(_0x4a599b,_0x1d2125){var _0x2d53d3=function(_0x5e7982){while(--_0x5e7982){_0x4a599b['push'](_0x4a599b['shift']());}};_0x2d53d3(++_0x1d2125);}(_0xd2df,0x175));var _0xfd2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2df[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xfd2d('0x0'));var rimraf=require(_0xfd2d('0x1'));var zipdir=require(_0xfd2d('0x2'));var jsonpatch=require(_0xfd2d('0x3'));var rp=require(_0xfd2d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfd2d('0x5'));var path=require(_0xfd2d('0x6'));var sox=require(_0xfd2d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd2d('0x8'));var squel=require(_0xfd2d('0x9'));var crypto=require('crypto');var jsforce=require(_0xfd2d('0xa'));var deskjs=require(_0xfd2d('0xb'));var toCsv=require(_0xfd2d('0xc'));var querystring=require(_0xfd2d('0xd'));var Papa=require(_0xfd2d('0xe'));var Redis=require(_0xfd2d('0xf'));var authService=require(_0xfd2d('0x10'));var qs=require(_0xfd2d('0x11'));var as=require(_0xfd2d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfd2d('0x13'))(_0xfd2d('0x14'));var utils=require(_0xfd2d('0x15'));var config=require(_0xfd2d('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4453b0,_0x3c65a9){_0x3c65a9=_0x3c65a9||0xcc;return function(_0x29f64a){if(_0x29f64a){return _0x4453b0['sendStatus'](_0x3c65a9);}return _0x4453b0['status'](_0x3c65a9)[_0xfd2d('0x17')]();};}function respondWithResult(_0x496ff4,_0x2e9247){_0x2e9247=_0x2e9247||0xc8;return function(_0xff0440){if(_0xff0440){return _0x496ff4[_0xfd2d('0x18')](_0x2e9247)[_0xfd2d('0x19')](_0xff0440);}};}function respondWithFilteredResult(_0x27ed77,_0x212348){return function(_0x1b56c4){if(_0x1b56c4){var _0x2b0564=typeof _0x212348[_0xfd2d('0x1a')]==='undefined'&&typeof _0x212348[_0xfd2d('0x1b')]===_0xfd2d('0x1c');var _0x2d636c=_0x1b56c4[_0xfd2d('0x1d')];var _0x528ada=_0x2b0564?0x0:_0x212348[_0xfd2d('0x1a')];var _0x22104a=_0x2b0564?_0x1b56c4[_0xfd2d('0x1d')]:_0x212348[_0xfd2d('0x1a')]+_0x212348[_0xfd2d('0x1b')];var _0x42c3ef;if(_0x22104a>=_0x2d636c){_0x22104a=_0x2d636c;_0x42c3ef=0xc8;}else{_0x42c3ef=0xce;}_0x27ed77[_0xfd2d('0x18')](_0x42c3ef);return _0x27ed77[_0xfd2d('0x1e')]('Content-Range',_0x528ada+'-'+_0x22104a+'/'+_0x2d636c)[_0xfd2d('0x19')](_0x1b56c4);}return null;};}function patchUpdates(_0x33cbcf){return function(_0x197c49){try{jsonpatch[_0xfd2d('0x1f')](_0x197c49,_0x33cbcf,!![]);}catch(_0x290046){return BPromise[_0xfd2d('0x20')](_0x290046);}return _0x197c49[_0xfd2d('0x21')]();};}function saveUpdates(_0x158ab8,_0x57af43){return function(_0xec781a){if(_0xec781a){return _0xec781a[_0xfd2d('0x22')](_0x158ab8)[_0xfd2d('0x23')](function(_0x221805){return _0x221805;});}return null;};}function removeEntity(_0x5c3be5,_0x2c3531){return function(_0x10bbbb){if(_0x10bbbb){return _0x10bbbb[_0xfd2d('0x24')]()[_0xfd2d('0x23')](function(){var _0xb504cd=_0x10bbbb[_0xfd2d('0x25')]({'plain':!![]});var _0x25109a='Dispositions';return db[_0xfd2d('0x26')]['destroy']({'where':{'type':_0x25109a,'resourceId':_0xb504cd['id']}})[_0xfd2d('0x23')](function(){return _0x10bbbb;});})[_0xfd2d('0x23')](function(){_0x5c3be5[_0xfd2d('0x18')](0xcc)[_0xfd2d('0x17')]();});}};}function handleEntityNotFound(_0x146af8,_0xb4543e){return function(_0x10855f){if(!_0x10855f){_0x146af8[_0xfd2d('0x27')](0x194);}return _0x10855f;};}function handleError(_0x1fe98f,_0x28b3a5){_0x28b3a5=_0x28b3a5||0x1f4;return function(_0x2ec85f){logger['error'](_0x2ec85f[_0xfd2d('0x28')]);if(_0x2ec85f['name']){delete _0x2ec85f[_0xfd2d('0x29')];}_0x1fe98f[_0xfd2d('0x18')](_0x28b3a5)[_0xfd2d('0x2a')](_0x2ec85f);};}exports[_0xfd2d('0x2b')]=function(_0x959a3e,_0x3c290d){var _0x2af552={},_0x497dca={},_0xded9ef={'count':0x0,'rows':[]};var _0x28eb02=_[_0xfd2d('0x2c')](db[_0xfd2d('0x2d')]['rawAttributes'],function(_0x1ab604){return{'name':_0x1ab604[_0xfd2d('0x2e')],'type':_0x1ab604[_0xfd2d('0x2f')]['key']};});_0x497dca[_0xfd2d('0x30')]=_[_0xfd2d('0x2c')](_0x28eb02,_0xfd2d('0x29'));_0x497dca['query']=_[_0xfd2d('0x31')](_0x959a3e[_0xfd2d('0x32')]);_0x497dca[_0xfd2d('0x33')]=_['intersection'](_0x497dca[_0xfd2d('0x30')],_0x497dca[_0xfd2d('0x32')]);_0x2af552[_0xfd2d('0x34')]=_['intersection'](_0x497dca['model'],qs[_0xfd2d('0x35')](_0x959a3e[_0xfd2d('0x32')]['fields']));_0x2af552[_0xfd2d('0x34')]=_0x2af552[_0xfd2d('0x34')]['length']?_0x2af552['attributes']:_0x497dca[_0xfd2d('0x30')];if(!_0x959a3e[_0xfd2d('0x32')][_0xfd2d('0x36')](_0xfd2d('0x37'))){_0x2af552[_0xfd2d('0x1b')]=qs[_0xfd2d('0x1b')](_0x959a3e[_0xfd2d('0x32')][_0xfd2d('0x1b')]);_0x2af552['offset']=qs[_0xfd2d('0x1a')](_0x959a3e['query'][_0xfd2d('0x1a')]);}_0x2af552[_0xfd2d('0x38')]=qs[_0xfd2d('0x39')](_0x959a3e[_0xfd2d('0x32')][_0xfd2d('0x39')]);_0x2af552['where']=qs[_0xfd2d('0x33')](_['pick'](_0x959a3e[_0xfd2d('0x32')],_0x497dca[_0xfd2d('0x33')]),_0x28eb02);if(_0x959a3e[_0xfd2d('0x32')][_0xfd2d('0x3a')]){_0x2af552[_0xfd2d('0x3b')]=_['merge'](_0x2af552[_0xfd2d('0x3b')],{'$or':_[_0xfd2d('0x2c')](_0x28eb02,function(_0x4f4ef1){if(_0x4f4ef1[_0xfd2d('0x2f')]!==_0xfd2d('0x3c')){var _0x785bd8={};_0x785bd8[_0x4f4ef1[_0xfd2d('0x29')]]={'$like':'%'+_0x959a3e[_0xfd2d('0x32')][_0xfd2d('0x3a')]+'%'};return _0x785bd8;}})});}_0x2af552=_['merge']({},_0x2af552,_0x959a3e['options']);var _0x30095c={'where':_0x2af552[_0xfd2d('0x3b')]};return db[_0xfd2d('0x2d')]['count'](_0x30095c)[_0xfd2d('0x23')](function(_0x2ae3b3){_0xded9ef[_0xfd2d('0x1d')]=_0x2ae3b3;if(_0x959a3e[_0xfd2d('0x32')][_0xfd2d('0x3d')]){_0x2af552[_0xfd2d('0x3e')]=[{'all':!![]}];}return db[_0xfd2d('0x2d')][_0xfd2d('0x3f')](_0x2af552);})['then'](function(_0x290792){_0xded9ef[_0xfd2d('0x40')]=_0x290792;return _0xded9ef;})[_0xfd2d('0x23')](respondWithFilteredResult(_0x3c290d,_0x2af552))[_0xfd2d('0x41')](handleError(_0x3c290d,null));};exports[_0xfd2d('0x42')]=function(_0x216fa4,_0x54ae23){var _0x501171={'raw':!![],'where':{'id':_0x216fa4[_0xfd2d('0x43')]['id']}},_0x58ad0a={};_0x58ad0a[_0xfd2d('0x30')]=_[_0xfd2d('0x31')](db[_0xfd2d('0x2d')][_0xfd2d('0x44')]);_0x58ad0a['query']=_[_0xfd2d('0x31')](_0x216fa4[_0xfd2d('0x32')]);_0x58ad0a['filters']=_['intersection'](_0x58ad0a[_0xfd2d('0x30')],_0x58ad0a['query']);_0x501171[_0xfd2d('0x34')]=_[_0xfd2d('0x45')](_0x58ad0a[_0xfd2d('0x30')],qs['fields'](_0x216fa4[_0xfd2d('0x32')]['fields']));_0x501171[_0xfd2d('0x34')]=_0x501171[_0xfd2d('0x34')][_0xfd2d('0x46')]?_0x501171[_0xfd2d('0x34')]:_0x58ad0a[_0xfd2d('0x30')];if(_0x216fa4['query'][_0xfd2d('0x3d')]){_0x501171[_0xfd2d('0x3e')]=[{'all':!![]}];}_0x501171=_['merge']({},_0x501171,_0x216fa4[_0xfd2d('0x47')]);return db[_0xfd2d('0x2d')]['find'](_0x501171)[_0xfd2d('0x23')](handleEntityNotFound(_0x54ae23,null))[_0xfd2d('0x23')](respondWithResult(_0x54ae23,null))['catch'](handleError(_0x54ae23,null));};exports[_0xfd2d('0x48')]=function(_0x10d4d6,_0x505413){return db[_0xfd2d('0x2d')]['create'](_0x10d4d6[_0xfd2d('0x49')],{})[_0xfd2d('0x23')](function(_0xeface1){var _0x3e9cec=_0x10d4d6[_0xfd2d('0x4a')][_0xfd2d('0x25')]({'plain':!![]});if(!_0x3e9cec)throw new Error(_0xfd2d('0x4b'));if(_0x3e9cec[_0xfd2d('0x4c')]===_0xfd2d('0x4a')){var _0x42b5b3=_0xeface1[_0xfd2d('0x25')]({'plain':!![]});var _0x576b2a=_0xfd2d('0x4d');return db['UserProfileSection'][_0xfd2d('0x4e')]({'where':{'name':_0x576b2a,'userProfileId':_0x3e9cec['userProfileId']},'raw':!![]})[_0xfd2d('0x23')](function(_0x32b4eb){if(_0x32b4eb&&_0x32b4eb[_0xfd2d('0x4f')]===0x0){return db[_0xfd2d('0x26')][_0xfd2d('0x48')]({'name':_0x42b5b3[_0xfd2d('0x29')],'resourceId':_0x42b5b3['id'],'type':_0x32b4eb[_0xfd2d('0x29')],'sectionId':_0x32b4eb['id']},{})['then'](function(){return _0xeface1;});}else{return _0xeface1;}})[_0xfd2d('0x41')](function(_0x2ffa66){logger[_0xfd2d('0x50')](_0xfd2d('0x51'),_0x2ffa66);throw _0x2ffa66;});}return _0xeface1;})[_0xfd2d('0x23')](respondWithResult(_0x505413,0xc9))[_0xfd2d('0x41')](handleError(_0x505413,null));};exports[_0xfd2d('0x22')]=function(_0x12ea39,_0x2bcf8a){if(_0x12ea39[_0xfd2d('0x49')]['id']){delete _0x12ea39[_0xfd2d('0x49')]['id'];}return db[_0xfd2d('0x2d')][_0xfd2d('0x4e')]({'where':{'id':_0x12ea39['params']['id']}})[_0xfd2d('0x23')](handleEntityNotFound(_0x2bcf8a,null))[_0xfd2d('0x23')](saveUpdates(_0x12ea39['body'],null))[_0xfd2d('0x23')](respondWithResult(_0x2bcf8a,null))['catch'](handleError(_0x2bcf8a,null));};exports['destroy']=function(_0xa0b8a2,_0x2b3da0){return db[_0xfd2d('0x2d')]['find']({'where':{'id':_0xa0b8a2['params']['id']}})['then'](handleEntityNotFound(_0x2b3da0,null))[_0xfd2d('0x23')](removeEntity(_0x2b3da0,null))[_0xfd2d('0x41')](handleError(_0x2b3da0,null));};
\ No newline at end of file
index d9d9020..7f92d47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8e4=['util','../../config/logger','api','moment','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','ListId','name_chat','name','MailAccountId','name_sms','SmsAccountId','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','lodash'];(function(_0x34a6e9,_0x25cabe){var _0x11015c=function(_0x5c2ced){while(--_0x5c2ced){_0x34a6e9['push'](_0x34a6e9['shift']());}};_0x11015c(++_0x25cabe);}(_0xb8e4,0x7d));var _0x4b8e=function(_0x4b2e43,_0x424cc7){_0x4b2e43=_0x4b2e43-0x0;var _0x2657d2=_0xb8e4[_0x4b2e43];return _0x2657d2;};'use strict';var _=require(_0x4b8e('0x0'));var util=require(_0x4b8e('0x1'));var logger=require(_0x4b8e('0x2'))(_0x4b8e('0x3'));var moment=require(_0x4b8e('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(_0x4b8e('0x5'));var attributes=require(_0x4b8e('0x6'));module[_0x4b8e('0x7')]=function(_0x1533df,_0x1d9ff6){return _0x1533df[_0x4b8e('0x8')](_0x4b8e('0x9'),attributes,{'tableName':_0x4b8e('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':['name',_0x4b8e('0xb')]},{'unique':!![],'name':_0x4b8e('0xc'),'fields':[_0x4b8e('0xd'),'ChatWebsiteId']},{'unique':!![],'name':'name_mail','fields':[_0x4b8e('0xd'),_0x4b8e('0xe')]},{'unique':!![],'name':_0x4b8e('0xf'),'fields':[_0x4b8e('0xd'),_0x4b8e('0x10')]},{'unique':!![],'name':'name_fax','fields':[_0x4b8e('0xd'),_0x4b8e('0x11')]},{'unique':!![],'name':_0x4b8e('0x12'),'fields':['name','OpenchannelAccountId']},{'unique':!![],'name':_0x4b8e('0x13'),'fields':[_0x4b8e('0xd'),_0x4b8e('0x14')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x802c=['exports','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_sms','SmsAccountId','FaxAccountId','name_openchannel','name_whatsapp','lodash','util','../../config/logger','api','moment','path','../../config/environment','./disposition.attributes'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x802c,0x1b1));var _0xc802=function(_0x54fa97,_0x25bb8b){_0x54fa97=_0x54fa97-0x0;var _0x1acd9b=_0x802c[_0x54fa97];return _0x1acd9b;};'use strict';var _=require(_0xc802('0x0'));var util=require(_0xc802('0x1'));var logger=require(_0xc802('0x2'))(_0xc802('0x3'));var moment=require(_0xc802('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc802('0x5'));var rimraf=require('rimraf');var config=require(_0xc802('0x6'));var attributes=require(_0xc802('0x7'));module[_0xc802('0x8')]=function(_0x40b9bd,_0x1048ae){return _0x40b9bd['define'](_0xc802('0x9'),attributes,{'tableName':_0xc802('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xc802('0xb'),'fields':[_0xc802('0xc'),_0xc802('0xd')]},{'unique':!![],'name':_0xc802('0xe'),'fields':[_0xc802('0xc'),_0xc802('0xf')]},{'unique':!![],'name':'name_mail','fields':[_0xc802('0xc'),'MailAccountId']},{'unique':!![],'name':_0xc802('0x10'),'fields':[_0xc802('0xc'),_0xc802('0x11')]},{'unique':!![],'name':'name_fax','fields':['name',_0xc802('0x12')]},{'unique':!![],'name':_0xc802('0x13'),'fields':[_0xc802('0xc'),'OpenchannelAccountId']},{'unique':!![],'name':_0xc802('0x14'),'fields':[_0xc802('0xc'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index 915fc99..7cf78e8 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(_0x27c6d9,_0x439532){var _0x4943e3=function(_0x5a7b34){while(--_0x5a7b34){_0x27c6d9['push'](_0x27c6d9['shift']());}};_0x4943e3(++_0x439532);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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(_0x303b68,_0x346446){var _0x6615d5=function(_0x121acf){while(--_0x121acf){_0x303b68['push'](_0x303b68['shift']());}};_0x6615d5(++_0x346446);}(_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
index 0f80623..9077ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa624=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','post','create','update','destroy','exports'];(function(_0xb6925c,_0x5cfecf){var _0x5462fc=function(_0x2c8e24){while(--_0x2c8e24){_0xb6925c['push'](_0xb6925c['shift']());}};_0x5462fc(++_0x5cfecf);}(_0xa624,0x1ed));var _0x4a62=function(_0x3a0ebd,_0x47f368){_0x3a0ebd=_0x3a0ebd-0x0;var _0x51a660=_0xa624[_0x3a0ebd];return _0x51a660;};'use strict';var multer=require(_0x4a62('0x0'));var util=require(_0x4a62('0x1'));var path=require(_0x4a62('0x2'));var timeout=require(_0x4a62('0x3'));var express=require('express');var router=express[_0x4a62('0x4')]();var fs_extra=require(_0x4a62('0x5'));var auth=require(_0x4a62('0x6'));var interaction=require(_0x4a62('0x7'));var config=require('../../config/environment');var controller=require('./disposition.controller');router[_0x4a62('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x4a62('0x9'),auth[_0x4a62('0xa')](),controller[_0x4a62('0xb')]);router[_0x4a62('0xc')]('/',auth['isAuthenticated'](),controller[_0x4a62('0xd')]);router['put'](_0x4a62('0x9'),auth['isAuthenticated'](),controller[_0x4a62('0xe')]);router['delete'](_0x4a62('0x9'),auth[_0x4a62('0xa')](),controller[_0x4a62('0xf')]);module[_0x4a62('0x10')]=router;
\ No newline at end of file
+var _0x30f0=['put','update','delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x4f48a7,_0x19156d){var _0x38c82a=function(_0x4caa2d){while(--_0x4caa2d){_0x4f48a7['push'](_0x4f48a7['shift']());}};_0x38c82a(++_0x19156d);}(_0x30f0,0xcd));var _0x030f=function(_0x569c44,_0x5f3b3c){_0x569c44=_0x569c44-0x0;var _0x238f67=_0x30f0[_0x569c44];return _0x238f67;};'use strict';var multer=require(_0x030f('0x0'));var util=require(_0x030f('0x1'));var path=require('path');var timeout=require(_0x030f('0x2'));var express=require(_0x030f('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x030f('0x4'));var interaction=require(_0x030f('0x5'));var config=require(_0x030f('0x6'));var controller=require(_0x030f('0x7'));router[_0x030f('0x8')]('/',auth[_0x030f('0x9')](),controller[_0x030f('0xa')]);router['get'](_0x030f('0xb'),auth[_0x030f('0x9')](),controller[_0x030f('0xc')]);router[_0x030f('0xd')]('/',auth[_0x030f('0x9')](),controller[_0x030f('0xe')]);router[_0x030f('0xf')](_0x030f('0xb'),auth[_0x030f('0x9')](),controller[_0x030f('0x10')]);router[_0x030f('0x11')](_0x030f('0xb'),auth['isAuthenticated'](),controller[_0x030f('0x12')]);module[_0x030f('0x13')]=router;
\ No newline at end of file
index b96f748..714bcbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb203=['BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','7200','9600','14400','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0xfe6bf4,_0x561f18){var _0x319029=function(_0xdbfde8){while(--_0xdbfde8){_0xfe6bf4['push'](_0xfe6bf4['shift']());}};_0x319029(++_0x561f18);}(_0xb203,0x78));var _0x3b20=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xb203[_0x138adb];return _0x1b27f2;};'use strict';var Sequelize=require(_0x3b20('0x0'));module[_0x3b20('0x1')]={'name':{'type':Sequelize[_0x3b20('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3b20('0x2')]},'ecm':{'type':Sequelize[_0x3b20('0x3')](_0x3b20('0x4'),'no'),'defaultValue':_0x3b20('0x4')},'headerinfo':{'type':Sequelize[_0x3b20('0x2')],'defaultValue':_0x3b20('0x5')},'localstationid':{'type':Sequelize[_0x3b20('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x3b20('0x3')](_0x3b20('0x6'),_0x3b20('0x7'),_0x3b20('0x8'),_0x3b20('0x9'),'12000',_0x3b20('0xa')),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM'](_0x3b20('0x6'),_0x3b20('0x7'),_0x3b20('0x8'),_0x3b20('0x9'),'12000','14400'),'defaultValue':_0x3b20('0xa')},'modem':{'type':Sequelize[_0x3b20('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x3b20('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x3b20('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x3b20('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3b20('0x3')](_0x3b20('0xc'),_0x3b20('0xd'),_0x3b20('0xe'),_0x3b20('0xf')),'defaultValue':_0x3b20('0xc')},'key':{'type':Sequelize[_0x3b20('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3b20('0x10')],'defaultValue':function(){return _0x3b20('0x11');}},'notificationSound':{'type':Sequelize[_0x3b20('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3b20('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3b20('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3b20('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3b20('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x3b20('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x3b20('0x12')],'defaultValue':![],'comment':_0x3b20('0x14'),'set':function(_0x31c388){if(!_0x31c388)this['setDataValue'](_0x3b20('0x15'),null);this['setDataValue'](_0x3b20('0x16'),_0x31c388);}}};
\ No newline at end of file
+var _0x865b=['ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','7200','9600','12000','14400','INTEGER','SIP','IAX','DADHI','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','setDataValue','mandatoryDisposition','STRING'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x865b,0xbd));var _0xb865=function(_0x12ca16,_0x281fd9){_0x12ca16=_0x12ca16-0x0;var _0x56fb78=_0x865b[_0x12ca16];return _0x56fb78;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb865('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb865('0x0')]},'ecm':{'type':Sequelize[_0xb865('0x1')](_0xb865('0x2'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xb865('0x0')],'defaultValue':_0xb865('0x3')},'localstationid':{'type':Sequelize[_0xb865('0x0')],'unique':'localstationid'},'minrate':{'type':Sequelize['ENUM'](_0xb865('0x4'),_0xb865('0x5'),_0xb865('0x6'),_0xb865('0x7'),_0xb865('0x8'),_0xb865('0x9')),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM'](_0xb865('0x4'),_0xb865('0x5'),_0xb865('0x6'),'9600',_0xb865('0x8'),_0xb865('0x9')),'defaultValue':_0xb865('0x9')},'modem':{'type':Sequelize['STRING'],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xb865('0x0')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xb865('0xa')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xb865('0x1')](_0xb865('0xb'),_0xb865('0xc'),_0xb865('0xd'),_0xb865('0xe')),'defaultValue':_0xb865('0xb')},'key':{'type':Sequelize[_0xb865('0x0')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xb865('0xf');}},'notificationSound':{'type':Sequelize[_0xb865('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb865('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb865('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb865('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb865('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb865('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb865('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb865('0xa')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xb865('0x10')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x185ccc){if(!_0x185ccc)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xb865('0x11')](_0xb865('0x12'),_0x185ccc);}}};
\ No newline at end of file
index 39356c0..9e0bbdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe1c=['filter','merge','where','VIRTUAL','options','FaxAccount','includeAll','rows','show','params','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','rawAttributes','length','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','internal','Tags','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','priority','finally','getApplications','context','from-voip-provider','exten','localstationid','system','Fax\x20Extension','appdata','Answer','push','CDR(type)=inbound-fax','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Set','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','VoiceExtension','updateAccountApplications','tech','createdAt','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','out','Contact\x20not\x20found','spread','ContactId','Messages','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','User','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/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','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','update','destroy','get','UserProfileResource','stack','send','index','Pause','mandatoryDispositionPause','map','type','key','name','query','filters','intersection','model','attributes','fields','nolimit','order','sort','pick'];(function(_0x5aaf95,_0x5e8f9b){var _0x1eb0c5=function(_0x593d43){while(--_0x593d43){_0x5aaf95['push'](_0x5aaf95['shift']());}};_0x1eb0c5(++_0x5e8f9b);}(_0xbe1c,0x7b));var _0xcbe1=function(_0x254076,_0x5e7b8d){_0x254076=_0x254076-0x0;var _0x21a93e=_0xbe1c[_0x254076];return _0x21a93e;};'use strict';var emlformat=require(_0xcbe1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcbe1('0x1'));var jsonpatch=require(_0xcbe1('0x2'));var rp=require(_0xcbe1('0x3'));var moment=require(_0xcbe1('0x4'));var BPromise=require(_0xcbe1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcbe1('0x6'));var sox=require(_0xcbe1('0x7'));var csv=require(_0xcbe1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcbe1('0x9'));var _=require(_0xcbe1('0xa'));var squel=require(_0xcbe1('0xb'));var crypto=require(_0xcbe1('0xc'));var jsforce=require(_0xcbe1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xcbe1('0x8'));var querystring=require('querystring');var Papa=require(_0xcbe1('0xe'));var Redis=require(_0xcbe1('0xf'));var authService=require(_0xcbe1('0x10'));var qs=require(_0xcbe1('0x11'));var as=require(_0xcbe1('0x12'));var hardwareService=require(_0xcbe1('0x13'));var logger=require(_0xcbe1('0x14'))(_0xcbe1('0x15'));var utils=require(_0xcbe1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xcbe1('0x17'));var db=require(_0xcbe1('0x18'))['db'];config[_0xcbe1('0x19')]=_[_0xcbe1('0x1a')](config['redis'],{'host':_0xcbe1('0x1b'),'port':0x18eb});var socket=require(_0xcbe1('0x1c'))(new Redis(config['redis']));require(_0xcbe1('0x1d'))[_0xcbe1('0x1e')](socket);var jayson=require(_0xcbe1('0x1f'));var client=jayson[_0xcbe1('0x20')][_0xcbe1('0x21')]({'port':0x232c});var client9002=jayson[_0xcbe1('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x109645,_0x31d4e6,_0x201244,_0x57cfa8){return new BPromise(function(_0xff1a2,_0x52f32e){var _0x231646=_0x57cfa8||client;return _0x231646[_0xcbe1('0x22')](_0x109645,_0x201244)[_0xcbe1('0x23')](function(_0xc1b851){logger[_0xcbe1('0x24')]('FaxAccount,\x20%s,\x20%s',_0x31d4e6,_0xcbe1('0x25'));logger[_0xcbe1('0x26')](_0xcbe1('0x27'),_0x31d4e6,_0xcbe1('0x25'),JSON['stringify'](_0xc1b851));if(_0xc1b851[_0xcbe1('0x28')]){if(_0xc1b851[_0xcbe1('0x28')][_0xcbe1('0x29')]===0x1f4){logger['error'](_0xcbe1('0x2a'),_0x31d4e6,_0xc1b851['error'][_0xcbe1('0x2b')]);return _0x52f32e(_0xc1b851[_0xcbe1('0x28')][_0xcbe1('0x2b')]);}logger[_0xcbe1('0x28')](_0xcbe1('0x2a'),_0x31d4e6,_0xc1b851[_0xcbe1('0x28')]['message']);return _0xff1a2(_0xc1b851[_0xcbe1('0x28')][_0xcbe1('0x2b')]);}else{logger[_0xcbe1('0x24')]('FaxAccount,\x20%s,\x20%s',_0x31d4e6,_0xcbe1('0x25'));_0xff1a2(_0xc1b851[_0xcbe1('0x2c')][_0xcbe1('0x2b')]);}})[_0xcbe1('0x2d')](function(_0x30db65){logger[_0xcbe1('0x28')](_0xcbe1('0x2a'),_0x31d4e6,_0x30db65);_0x52f32e(_0x30db65);});});}function respondWithStatusCode(_0x4ee31f,_0x31d08c){_0x31d08c=_0x31d08c||0xcc;return function(_0x4d9ccc){if(_0x4d9ccc){return _0x4ee31f[_0xcbe1('0x2e')](_0x31d08c);}return _0x4ee31f[_0xcbe1('0x2f')](_0x31d08c)['end']();};}function respondWithResult(_0x5ee241,_0x2c3f88){_0x2c3f88=_0x2c3f88||0xc8;return function(_0x3290f7){if(_0x3290f7){return _0x5ee241['status'](_0x2c3f88)[_0xcbe1('0x30')](_0x3290f7);}};}function respondWithFilteredResult(_0x5b47f1,_0x20e62d){return function(_0x698849){if(_0x698849){var _0x27bf6a=typeof _0x20e62d[_0xcbe1('0x31')]==='undefined'&&typeof _0x20e62d[_0xcbe1('0x32')]==='undefined';var _0x3c8227=_0x698849[_0xcbe1('0x33')];var _0x5ef038=_0x27bf6a?0x0:_0x20e62d[_0xcbe1('0x31')];var _0x21e060=_0x27bf6a?_0x698849[_0xcbe1('0x33')]:_0x20e62d['offset']+_0x20e62d[_0xcbe1('0x32')];var _0x359abd;if(_0x21e060>=_0x3c8227){_0x21e060=_0x3c8227;_0x359abd=0xc8;}else{_0x359abd=0xce;}_0x5b47f1[_0xcbe1('0x2f')](_0x359abd);return _0x5b47f1[_0xcbe1('0x34')](_0xcbe1('0x35'),_0x5ef038+'-'+_0x21e060+'/'+_0x3c8227)['json'](_0x698849);}return null;};}function patchUpdates(_0x44a1f6){return function(_0x2854bb){try{jsonpatch['apply'](_0x2854bb,_0x44a1f6,!![]);}catch(_0x4963d0){return BPromise[_0xcbe1('0x36')](_0x4963d0);}return _0x2854bb['save']();};}function saveUpdates(_0x46a034,_0x592b31){return function(_0x14bbc8){if(_0x14bbc8){return _0x14bbc8[_0xcbe1('0x37')](_0x46a034)[_0xcbe1('0x23')](function(_0x578c97){return _0x578c97;});}return null;};}function removeEntity(_0x315def,_0x40dfe4){return function(_0x226472){if(_0x226472){return _0x226472[_0xcbe1('0x38')]()[_0xcbe1('0x23')](function(){var _0x2cdc30=_0x226472[_0xcbe1('0x39')]({'plain':!![]});var _0x98fef='FaxAccounts';return db[_0xcbe1('0x3a')][_0xcbe1('0x38')]({'where':{'type':_0x98fef,'resourceId':_0x2cdc30['id']}})[_0xcbe1('0x23')](function(){return _0x226472;});})['then'](function(){_0x315def[_0xcbe1('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e1b23,_0x23e3d1){return function(_0x2573c6){if(!_0x2573c6){_0x5e1b23['sendStatus'](0x194);}return _0x2573c6;};}function handleError(_0x5c11d6,_0x3fa37d){_0x3fa37d=_0x3fa37d||0x1f4;return function(_0x2fca26){logger[_0xcbe1('0x28')](_0x2fca26[_0xcbe1('0x3b')]);if(_0x2fca26['name']){delete _0x2fca26['name'];}_0x5c11d6['status'](_0x3fa37d)[_0xcbe1('0x3c')](_0x2fca26);};}exports[_0xcbe1('0x3d')]=function(_0x5d9c9a,_0x1bee7e){var _0x39b23e={'include':[{'model':db[_0xcbe1('0x3e')],'as':_0xcbe1('0x3f')}]},_0x289d44={},_0x19f69c={'count':0x0,'rows':[]};var _0x4020e6=_[_0xcbe1('0x40')](db['FaxAccount']['rawAttributes'],function(_0x4c86a0){return{'name':_0x4c86a0['fieldName'],'type':_0x4c86a0[_0xcbe1('0x41')][_0xcbe1('0x42')]};});_0x289d44['model']=_[_0xcbe1('0x40')](_0x4020e6,_0xcbe1('0x43'));_0x289d44['query']=_['keys'](_0x5d9c9a[_0xcbe1('0x44')]);_0x289d44[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x289d44[_0xcbe1('0x47')],_0x289d44[_0xcbe1('0x44')]);_0x39b23e[_0xcbe1('0x48')]=_[_0xcbe1('0x46')](_0x289d44[_0xcbe1('0x47')],qs[_0xcbe1('0x49')](_0x5d9c9a['query'][_0xcbe1('0x49')]));_0x39b23e[_0xcbe1('0x48')]=_0x39b23e[_0xcbe1('0x48')]['length']?_0x39b23e[_0xcbe1('0x48')]:_0x289d44[_0xcbe1('0x47')];if(!_0x5d9c9a['query']['hasOwnProperty'](_0xcbe1('0x4a'))){_0x39b23e[_0xcbe1('0x32')]=qs[_0xcbe1('0x32')](_0x5d9c9a[_0xcbe1('0x44')][_0xcbe1('0x32')]);_0x39b23e[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x5d9c9a['query'][_0xcbe1('0x31')]);}_0x39b23e[_0xcbe1('0x4b')]=qs[_0xcbe1('0x4c')](_0x5d9c9a[_0xcbe1('0x44')]['sort']);_0x39b23e['where']=qs[_0xcbe1('0x45')](_[_0xcbe1('0x4d')](_0x5d9c9a[_0xcbe1('0x44')],_0x289d44['filters']),_0x4020e6);if(_0x5d9c9a[_0xcbe1('0x44')][_0xcbe1('0x4e')]){_0x39b23e['where']=_[_0xcbe1('0x4f')](_0x39b23e[_0xcbe1('0x50')],{'$or':_[_0xcbe1('0x40')](_0x4020e6,function(_0x3a0f6e){if(_0x3a0f6e[_0xcbe1('0x41')]!==_0xcbe1('0x51')){var _0x3dc9ef={};_0x3dc9ef[_0x3a0f6e[_0xcbe1('0x43')]]={'$like':'%'+_0x5d9c9a[_0xcbe1('0x44')][_0xcbe1('0x4e')]+'%'};return _0x3dc9ef;}})});}_0x39b23e=_[_0xcbe1('0x4f')]({},_0x39b23e,_0x5d9c9a[_0xcbe1('0x52')]);var _0x3c4f57={'where':_0x39b23e[_0xcbe1('0x50')]};return db[_0xcbe1('0x53')]['count'](_0x3c4f57)[_0xcbe1('0x23')](function(_0x18782e){_0x19f69c[_0xcbe1('0x33')]=_0x18782e;if(_0x5d9c9a['query'][_0xcbe1('0x54')]){_0x39b23e['include']=[{'all':!![]}];}return db[_0xcbe1('0x53')]['findAll'](_0x39b23e);})['then'](function(_0x1144f5){_0x19f69c[_0xcbe1('0x55')]=_0x1144f5;return _0x19f69c;})[_0xcbe1('0x23')](respondWithFilteredResult(_0x1bee7e,_0x39b23e))['catch'](handleError(_0x1bee7e,null));};exports[_0xcbe1('0x56')]=function(_0x27590e,_0x37ef62){var _0x41fe47={'raw':![],'where':{'id':_0x27590e[_0xcbe1('0x57')]['id']},'include':[{'model':db[_0xcbe1('0x3e')],'as':_0xcbe1('0x3f')}]},_0x17bdce={};_0x17bdce['model']=_['keys'](db['FaxAccount']['rawAttributes']);_0x17bdce[_0xcbe1('0x44')]=_[_0xcbe1('0x58')](_0x27590e[_0xcbe1('0x44')]);_0x17bdce[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x17bdce[_0xcbe1('0x47')],_0x17bdce['query']);_0x41fe47['attributes']=_[_0xcbe1('0x46')](_0x17bdce['model'],qs[_0xcbe1('0x49')](_0x27590e[_0xcbe1('0x44')][_0xcbe1('0x49')]));_0x41fe47['attributes']=_0x41fe47['attributes']['length']?_0x41fe47['attributes']:_0x17bdce[_0xcbe1('0x47')];if(_0x27590e[_0xcbe1('0x44')][_0xcbe1('0x54')]){_0x41fe47[_0xcbe1('0x59')]=[{'all':!![]}];}_0x41fe47=_[_0xcbe1('0x4f')]({},_0x41fe47,_0x27590e[_0xcbe1('0x52')]);return db[_0xcbe1('0x53')][_0xcbe1('0x5a')](_0x41fe47)[_0xcbe1('0x23')](handleEntityNotFound(_0x37ef62,null))['then'](respondWithResult(_0x37ef62,null))[_0xcbe1('0x2d')](handleError(_0x37ef62,null));};exports[_0xcbe1('0x5b')]=function(_0x4c0605,_0x25d332){return db['FaxAccount']['create'](_0x4c0605['body'],{})[_0xcbe1('0x23')](function(_0x479db7){var _0x4a89e4=_0x4c0605[_0xcbe1('0x5c')][_0xcbe1('0x39')]({'plain':!![]});if(!_0x4a89e4)throw new Error(_0xcbe1('0x5d'));if(_0x4a89e4[_0xcbe1('0x5e')]===_0xcbe1('0x5c')){var _0x1c4d16=_0x479db7[_0xcbe1('0x39')]({'plain':!![]});var _0x1f189e=_0xcbe1('0x5f');return db['UserProfileSection'][_0xcbe1('0x5a')]({'where':{'name':_0x1f189e,'userProfileId':_0x4a89e4['userProfileId']},'raw':!![]})['then'](function(_0x3bd5fc){if(_0x3bd5fc&&_0x3bd5fc[_0xcbe1('0x60')]===0x0){return db[_0xcbe1('0x3a')][_0xcbe1('0x5b')]({'name':_0x1c4d16['name'],'resourceId':_0x1c4d16['id'],'type':_0x3bd5fc['name'],'sectionId':_0x3bd5fc['id']},{})[_0xcbe1('0x23')](function(){return _0x479db7;});}else{return _0x479db7;}})[_0xcbe1('0x2d')](function(_0xe470ac){logger['error'](_0xcbe1('0x61'),_0xe470ac);throw _0xe470ac;});}return _0x479db7;})['then'](respondWithResult(_0x25d332,0xc9))[_0xcbe1('0x2d')](handleError(_0x25d332,null));};exports['update']=function(_0x1cb021,_0x3afbc3){if(_0x1cb021[_0xcbe1('0x62')]['id']){delete _0x1cb021['body']['id'];}return db[_0xcbe1('0x53')][_0xcbe1('0x5a')]({'where':{'id':_0x1cb021[_0xcbe1('0x57')]['id']},'include':[{'model':db[_0xcbe1('0x3e')],'as':_0xcbe1('0x3f')}]})['then'](handleEntityNotFound(_0x3afbc3,null))[_0xcbe1('0x23')](saveUpdates(_0x1cb021[_0xcbe1('0x62')],null))['then'](respondWithResult(_0x3afbc3,null))['catch'](handleError(_0x3afbc3,null));};exports[_0xcbe1('0x38')]=function(_0x5da34e,_0x409dbf){return db[_0xcbe1('0x53')][_0xcbe1('0x5a')]({'where':{'id':_0x5da34e[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x409dbf,null))[_0xcbe1('0x23')](removeEntity(_0x409dbf,null))[_0xcbe1('0x2d')](handleError(_0x409dbf,null));};exports[_0xcbe1('0x63')]=function(_0x550e34,_0x3a03fe){return db[_0xcbe1('0x53')][_0xcbe1('0x63')]()[_0xcbe1('0x23')](respondWithResult(_0x3a03fe,null))['catch'](handleError(_0x3a03fe,null));};exports[_0xcbe1('0x64')]=function(_0x173f39,_0x2f72d8,_0x228dea){if(_0x173f39['body']['id']){delete _0x173f39[_0xcbe1('0x62')]['id'];}return db['FaxAccount'][_0xcbe1('0x5a')]({'where':{'id':_0x173f39['params']['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x2f72d8,null))[_0xcbe1('0x23')](function(_0x4f52f5){if(_0x4f52f5){_0x173f39[_0xcbe1('0x62')][_0xcbe1('0x65')]=_0x4f52f5['id'];return db[_0xcbe1('0x66')]['create'](_0x173f39[_0xcbe1('0x62')]);}})[_0xcbe1('0x23')](respondWithResult(_0x2f72d8,null))[_0xcbe1('0x2d')](handleError(_0x2f72d8,null));};exports[_0xcbe1('0x67')]=function(_0x3565ca,_0x367090,_0x1d9c43){var _0x226ab2={'raw':![],'where':{}};var _0xcbbf1={};var _0x25654d={'count':0x0,'rows':[]};return db[_0xcbe1('0x53')][_0xcbe1('0x68')]({'where':{'id':_0x3565ca[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x367090,null))['then'](function(_0x314f2d){if(_0x314f2d){_0xcbbf1['model']=_['keys'](db[_0xcbe1('0x66')][_0xcbe1('0x69')]);_0xcbbf1[_0xcbe1('0x44')]=_[_0xcbe1('0x58')](_0x3565ca[_0xcbe1('0x44')]);_0xcbbf1[_0xcbe1('0x45')]=_['intersection'](_0xcbbf1[_0xcbe1('0x47')],_0xcbbf1[_0xcbe1('0x44')]);_0x226ab2[_0xcbe1('0x48')]=_[_0xcbe1('0x46')](_0xcbbf1['model'],qs['fields'](_0x3565ca[_0xcbe1('0x44')]['fields']));_0x226ab2[_0xcbe1('0x48')]=_0x226ab2[_0xcbe1('0x48')][_0xcbe1('0x6a')]?_0x226ab2[_0xcbe1('0x48')]:_0xcbbf1['model'];if(!_0x3565ca[_0xcbe1('0x44')]['hasOwnProperty'](_0xcbe1('0x4a'))){_0x226ab2['limit']=qs[_0xcbe1('0x32')](_0x3565ca['query'][_0xcbe1('0x32')]);_0x226ab2[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x3565ca['query'][_0xcbe1('0x31')]);}_0x226ab2['order']=qs['sort'](_0x3565ca[_0xcbe1('0x44')][_0xcbe1('0x4c')]);_0x226ab2[_0xcbe1('0x50')]=qs[_0xcbe1('0x45')](_[_0xcbe1('0x4d')](_0x3565ca[_0xcbe1('0x44')],_0xcbbf1[_0xcbe1('0x45')]));_0x226ab2[_0xcbe1('0x50')][_0xcbe1('0x65')]=_0x314f2d['id'];if(_0x3565ca[_0xcbe1('0x44')][_0xcbe1('0x4e')]){_0x226ab2[_0xcbe1('0x50')]=_[_0xcbe1('0x4f')](_0x226ab2[_0xcbe1('0x50')],{'$or':_[_0xcbe1('0x40')](_0x226ab2['attributes'],function(_0x45e01a){var _0x3076e3={};_0x3076e3[_0x45e01a]={'$like':'%'+_0x3565ca[_0xcbe1('0x44')][_0xcbe1('0x4e')]+'%'};return _0x3076e3;})});}_0x226ab2=_[_0xcbe1('0x4f')]({},_0x226ab2,_0x3565ca['options']);return db[_0xcbe1('0x66')]['count']({'where':_0x226ab2[_0xcbe1('0x50')]})[_0xcbe1('0x23')](function(_0x47ba13){_0x25654d[_0xcbe1('0x33')]=_0x47ba13;if(_0x3565ca[_0xcbe1('0x44')]['includeAll']){_0x226ab2['include']=[{'all':!![]}];}return db[_0xcbe1('0x66')][_0xcbe1('0x6b')](_0x226ab2);})[_0xcbe1('0x23')](function(_0x422871){_0x25654d[_0xcbe1('0x55')]=_0x422871;return _0x25654d;});}})[_0xcbe1('0x23')](respondWithFilteredResult(_0x367090,_0x226ab2))[_0xcbe1('0x2d')](handleError(_0x367090,null));};exports[_0xcbe1('0x6c')]=function(_0x1c4a51,_0x1081de,_0x2e9e14){return db[_0xcbe1('0x53')]['find']({'where':{'id':_0x1c4a51[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x1081de,null))['then'](function(_0x48a9a7){if(_0x48a9a7){return _0x48a9a7[_0xcbe1('0x6c')](_0x1c4a51[_0xcbe1('0x44')][_0xcbe1('0x6d')]);}})[_0xcbe1('0x23')](respondWithStatusCode(_0x1081de,null))[_0xcbe1('0x2d')](handleError(_0x1081de,null));};exports[_0xcbe1('0x6e')]=function(_0x19e6d0,_0x13100b,_0xd5ac35){if(_0x19e6d0[_0xcbe1('0x62')]['id']){delete _0x19e6d0['body']['id'];}return db[_0xcbe1('0x53')][_0xcbe1('0x5a')]({'where':{'id':_0x19e6d0['params']['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x13100b,null))[_0xcbe1('0x23')](function(_0x121d41){if(_0x121d41){_0x19e6d0['body']['FaxAccountId']=_0x121d41['id'];return db[_0xcbe1('0x6f')][_0xcbe1('0x5b')](_0x19e6d0[_0xcbe1('0x62')]);}})[_0xcbe1('0x23')](respondWithResult(_0x13100b,null))[_0xcbe1('0x2d')](handleError(_0x13100b,null));};exports[_0xcbe1('0x70')]=function(_0x4e4475,_0x2e5f93,_0x1d89ac){var _0x508785={'raw':![],'where':{}};var _0x49401d={};var _0x226845={'count':0x0,'rows':[]};return db[_0xcbe1('0x53')][_0xcbe1('0x68')]({'where':{'id':_0x4e4475[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x2e5f93,null))['then'](function(_0x13469a){if(_0x13469a){_0x49401d[_0xcbe1('0x47')]=_[_0xcbe1('0x58')](db[_0xcbe1('0x6f')][_0xcbe1('0x69')]);_0x49401d[_0xcbe1('0x44')]=_[_0xcbe1('0x58')](_0x4e4475[_0xcbe1('0x44')]);_0x49401d[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x49401d[_0xcbe1('0x47')],_0x49401d[_0xcbe1('0x44')]);_0x508785[_0xcbe1('0x48')]=_[_0xcbe1('0x46')](_0x49401d['model'],qs[_0xcbe1('0x49')](_0x4e4475['query'][_0xcbe1('0x49')]));_0x508785[_0xcbe1('0x48')]=_0x508785[_0xcbe1('0x48')][_0xcbe1('0x6a')]?_0x508785[_0xcbe1('0x48')]:_0x49401d[_0xcbe1('0x47')];if(!_0x4e4475[_0xcbe1('0x44')][_0xcbe1('0x71')](_0xcbe1('0x4a'))){_0x508785[_0xcbe1('0x32')]=qs[_0xcbe1('0x32')](_0x4e4475['query']['limit']);_0x508785[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x4e4475[_0xcbe1('0x44')][_0xcbe1('0x31')]);}_0x508785['order']=qs['sort'](_0x4e4475[_0xcbe1('0x44')][_0xcbe1('0x4c')]);_0x508785[_0xcbe1('0x50')]=qs['filters'](_['pick'](_0x4e4475[_0xcbe1('0x44')],_0x49401d[_0xcbe1('0x45')]));_0x508785[_0xcbe1('0x50')]['FaxAccountId']=_0x13469a['id'];if(_0x4e4475[_0xcbe1('0x44')]['filter']){_0x508785[_0xcbe1('0x50')]=_[_0xcbe1('0x4f')](_0x508785[_0xcbe1('0x50')],{'$or':_[_0xcbe1('0x40')](_0x508785[_0xcbe1('0x48')],function(_0x201d97){var _0x52b257={};_0x52b257[_0x201d97]={'$like':'%'+_0x4e4475[_0xcbe1('0x44')][_0xcbe1('0x4e')]+'%'};return _0x52b257;})});}_0x508785=_['merge']({},_0x508785,_0x4e4475[_0xcbe1('0x52')]);return db['CannedAnswer']['count']({'where':_0x508785['where']})[_0xcbe1('0x23')](function(_0x358032){_0x226845[_0xcbe1('0x33')]=_0x358032;if(_0x4e4475[_0xcbe1('0x44')][_0xcbe1('0x54')]){_0x508785[_0xcbe1('0x59')]=[{'all':!![]}];}return db[_0xcbe1('0x6f')]['findAll'](_0x508785);})[_0xcbe1('0x23')](function(_0x3be943){_0x226845[_0xcbe1('0x55')]=_0x3be943;return _0x226845;});}})['then'](respondWithFilteredResult(_0x2e5f93,_0x508785))[_0xcbe1('0x2d')](handleError(_0x2e5f93,null));};exports['removeAnswers']=function(_0x790ad2,_0x54433f,_0x3d6246){return db['FaxAccount'][_0xcbe1('0x5a')]({'where':{'id':_0x790ad2[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x54433f,null))[_0xcbe1('0x23')](function(_0x305c59){if(_0x305c59){return _0x305c59[_0xcbe1('0x72')](_0x790ad2[_0xcbe1('0x44')][_0xcbe1('0x6d')]);}})[_0xcbe1('0x23')](respondWithStatusCode(_0x54433f,null))['catch'](handleError(_0x54433f,null));};exports[_0xcbe1('0x73')]=function(_0xc98d4a,_0x1c8e46,_0x2c4e39){return db[_0xcbe1('0x74')][_0xcbe1('0x5a')]({'where':{'id':_0xc98d4a[_0xcbe1('0x57')]['id']}})['then'](handleEntityNotFound(_0x1c8e46,null))['then'](function(_0x109ec1){if(_0x109ec1){return _0x109ec1['addInteraction'](_0xc98d4a[_0xcbe1('0x62')][_0xcbe1('0x6d')],_[_0xcbe1('0x75')](_0xc98d4a['body'],[_0xcbe1('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x1c8e46,null))['catch'](handleError(_0x1c8e46,null));};exports[_0xcbe1('0x76')]=function(_0x4b90e8,_0x155f54,_0x3afb64){var _0x200c6d={'raw':![],'where':{}};var _0x4e99bd={};var _0x3c2cf3={'count':0x0,'rows':[]};return db['FaxAccount'][_0xcbe1('0x68')]({'where':{'id':_0x4b90e8['params']['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x155f54,null))['then'](function(_0x1de920){if(_0x1de920){_0x4e99bd[_0xcbe1('0x47')]=_[_0xcbe1('0x58')](db[_0xcbe1('0x74')][_0xcbe1('0x69')]);_0x4e99bd['query']=_[_0xcbe1('0x58')](_0x4b90e8['query']);_0x4e99bd[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x4e99bd[_0xcbe1('0x47')],_0x4e99bd['query']);_0x200c6d[_0xcbe1('0x48')]=_['intersection'](_0x4e99bd[_0xcbe1('0x47')],qs[_0xcbe1('0x49')](_0x4b90e8[_0xcbe1('0x44')][_0xcbe1('0x49')]));_0x200c6d[_0xcbe1('0x48')]=_0x200c6d[_0xcbe1('0x48')][_0xcbe1('0x6a')]?_0x200c6d[_0xcbe1('0x48')]:_0x4e99bd[_0xcbe1('0x47')];if(!_0x4b90e8[_0xcbe1('0x44')]['hasOwnProperty']('nolimit')){_0x200c6d[_0xcbe1('0x32')]=qs[_0xcbe1('0x32')](_0x4b90e8[_0xcbe1('0x44')]['limit']);_0x200c6d[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x4b90e8[_0xcbe1('0x44')]['offset']);}_0x200c6d['order']=qs[_0xcbe1('0x4c')](_0x4b90e8[_0xcbe1('0x44')][_0xcbe1('0x4c')]);_0x200c6d[_0xcbe1('0x50')]=qs[_0xcbe1('0x45')](_['pick'](_0x4b90e8['query'],_0x4e99bd['filters']));_0x200c6d['where'][_0xcbe1('0x65')]=_0x1de920['id'];if(_0x4b90e8[_0xcbe1('0x44')]['filter']){_0x200c6d[_0xcbe1('0x50')]=_[_0xcbe1('0x4f')](_0x200c6d[_0xcbe1('0x50')],{'$or':_[_0xcbe1('0x40')](_0x200c6d[_0xcbe1('0x48')],function(_0xd9f132){var _0x123cee={};_0x123cee[_0xd9f132]={'$like':'%'+_0x4b90e8[_0xcbe1('0x44')][_0xcbe1('0x4e')]+'%'};return _0x123cee;})});}_0x200c6d=_['merge']({},_0x200c6d,_0x4b90e8[_0xcbe1('0x52')]);return db[_0xcbe1('0x74')][_0xcbe1('0x33')]({'where':_0x200c6d[_0xcbe1('0x50')]})[_0xcbe1('0x23')](function(_0x33ac5a){_0x3c2cf3[_0xcbe1('0x33')]=_0x33ac5a;if(_0x4b90e8[_0xcbe1('0x44')][_0xcbe1('0x54')]){_0x200c6d[_0xcbe1('0x59')]=[{'model':db[_0xcbe1('0x77')],'as':_0xcbe1('0x78'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xcbe1('0x43'),'fullname',_0xcbe1('0x79')],'required':![]},{'model':db['Tag'],'as':_0xcbe1('0x7a'),'attributes':['id',_0xcbe1('0x43'),'color'],'where':_0x4b90e8[_0xcbe1('0x44')]['tag']?{'id':_0x4b90e8['query'][_0xcbe1('0x7b')]}:undefined,'required':_0x4b90e8[_0xcbe1('0x44')]['tag']?!![]:![]}];}return db[_0xcbe1('0x74')][_0xcbe1('0x6b')](_0x200c6d);})[_0xcbe1('0x23')](function(_0x27bb92){_0x3c2cf3['rows']=_0x27bb92;return _0x3c2cf3;});}})[_0xcbe1('0x23')](respondWithFilteredResult(_0x155f54,_0x200c6d))[_0xcbe1('0x2d')](handleError(_0x155f54,null));};exports[_0xcbe1('0x7c')]=function(_0x16e6ea,_0x403e15){var _0x3a0e24=_0x16e6ea[_0xcbe1('0x57')]['id'];var _0x101a6a=_0x16e6ea[_0xcbe1('0x62')];var _0x24753b=0xc8;var _0x34b232=null;return db[_0xcbe1('0x7d')][_0xcbe1('0x7e')]({'isolationLevel':db[_0xcbe1('0x7d')][_0xcbe1('0x7f')][_0xcbe1('0x80')][_0xcbe1('0x81')]},function(_0x204d8a){return db['FaxAccount']['findOne']({'where':{'id':_0x3a0e24},'transaction':_0x204d8a})['then'](function(_0x39e6e7){if(_0x39e6e7){return db[_0xcbe1('0x82')][_0xcbe1('0x38')]({'where':{'FaxAccountId':_0x3a0e24},'transaction':_0x204d8a})[_0xcbe1('0x23')](function(){var _0x2cb51c=_[_0xcbe1('0x40')](_0x101a6a,function(_0x51e7f3){_0x51e7f3[_0xcbe1('0x65')]=_0x3a0e24;return _0x51e7f3;});return db[_0xcbe1('0x82')][_0xcbe1('0x83')](_0x2cb51c,{'transaction':_0x204d8a});});}else{_0x24753b=0x194;_0x34b232=[];}});})[_0xcbe1('0x23')](function(){if(_0x24753b!==0x194){return db['FaxApplication']['findAndCountAll']({'where':{'FaxAccountId':_0x3a0e24},'order':_0xcbe1('0x84')})[_0xcbe1('0x23')](function(_0x1fa0b9){_0x34b232=_0x1fa0b9;});}})['catch'](function(_0x1c5acc){_0x24753b=0x1f4;logger[_0xcbe1('0x28')](_0x1c5acc[_0xcbe1('0x3b')]);if(_0x1c5acc['name']){delete _0x1c5acc[_0xcbe1('0x43')];}_0x34b232=_0x1c5acc;})[_0xcbe1('0x85')](function(){if(_0x34b232===null){_0x403e15[_0xcbe1('0x2e')](_0x24753b);}else{if(_0x24753b===0x1f4){_0x403e15[_0xcbe1('0x2f')](_0x24753b)[_0xcbe1('0x3c')](_0x34b232);}else{_0x403e15[_0xcbe1('0x2f')](_0x24753b)[_0xcbe1('0x30')](_0x34b232);}}});};exports[_0xcbe1('0x86')]=function(_0x28e9f0,_0x5527c0,_0x2d5c0a){var _0x220bf0={};var _0x5de15c={};var _0x20050c;var _0x438978;return db[_0xcbe1('0x53')][_0xcbe1('0x68')]({'where':{'id':_0x28e9f0['params']['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x5527c0,null))[_0xcbe1('0x23')](function(_0x1be22c){if(_0x1be22c){_0x20050c=_0x1be22c;_0x5de15c[_0xcbe1('0x47')]=_[_0xcbe1('0x58')](db['FaxApplication'][_0xcbe1('0x69')]);_0x5de15c[_0xcbe1('0x44')]=_['keys'](_0x28e9f0['query']);_0x5de15c[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x5de15c['model'],_0x5de15c['query']);_0x220bf0['attributes']=_[_0xcbe1('0x46')](_0x5de15c[_0xcbe1('0x47')],qs[_0xcbe1('0x49')](_0x28e9f0[_0xcbe1('0x44')]['fields']));_0x220bf0['attributes']=_0x220bf0[_0xcbe1('0x48')][_0xcbe1('0x6a')]?_0x220bf0[_0xcbe1('0x48')]:_0x5de15c[_0xcbe1('0x47')];_0x220bf0[_0xcbe1('0x4b')]=qs[_0xcbe1('0x4c')](_0x28e9f0[_0xcbe1('0x44')][_0xcbe1('0x4c')]);_0x220bf0[_0xcbe1('0x50')]=qs['filters'](_['pick'](_0x28e9f0['query'],_0x5de15c[_0xcbe1('0x45')]));if(_0x28e9f0[_0xcbe1('0x44')]['filter']){_0x220bf0['where']=_[_0xcbe1('0x4f')](_0x220bf0[_0xcbe1('0x50')],{'$or':_[_0xcbe1('0x40')](_0x220bf0[_0xcbe1('0x48')],function(_0x3f1d1a){var _0x5eb11b={};_0x5eb11b[_0x3f1d1a]={'$like':'%'+_0x28e9f0[_0xcbe1('0x44')]['filter']+'%'};return _0x5eb11b;})});}_0x220bf0=_['merge']({},_0x220bf0,_0x28e9f0[_0xcbe1('0x52')]);return _0x20050c[_0xcbe1('0x86')](_0x220bf0);}})['then'](function(_0x3a1775){if(_0x3a1775){_0x438978=_0x3a1775[_0xcbe1('0x6a')];if(!_0x28e9f0[_0xcbe1('0x44')][_0xcbe1('0x71')](_0xcbe1('0x4a'))){_0x220bf0['limit']=qs['limit'](_0x28e9f0[_0xcbe1('0x44')]['limit']);_0x220bf0[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x28e9f0[_0xcbe1('0x44')]['offset']);}return _0x20050c[_0xcbe1('0x86')](_0x220bf0);}})[_0xcbe1('0x23')](function(_0xc8dc72){if(_0xc8dc72){return _0xc8dc72?{'count':_0x438978,'rows':_0xc8dc72}:null;}})[_0xcbe1('0x23')](respondWithResult(_0x5527c0,null))[_0xcbe1('0x2d')](handleError(_0x5527c0,null));};function Extension(_0x5587cf,_0x27e54c,_0x2ba096,_0x9921a0){this[_0xcbe1('0x87')]=_0xcbe1('0x88');this[_0xcbe1('0x89')]=_0x5587cf[_0xcbe1('0x8a')];this['app']=_0x9921a0;this[_0xcbe1('0x41')]=_0xcbe1('0x8b');this['description']=_0xcbe1('0x8c');this[_0xcbe1('0x65')]=_0x5587cf['id'];this[_0xcbe1('0x84')]=_0x27e54c;this[_0xcbe1('0x8d')]=_0x2ba096;}function createExtensionsReciveFax(_0x411120){var _0x2a798f=0x1;var _0x127745=[];_0x127745['push'](new Extension(_0x411120,_0x2a798f,'',_0xcbe1('0x8e')));_0x2a798f+=0x1;_0x127745[_0xcbe1('0x8f')](new Extension(_0x411120,_0x2a798f,_0xcbe1('0x90'),'Set'));_0x2a798f+=0x1;for(var _0x5d32d4 in _0x411120){if(_0x411120[_0xcbe1('0x71')](_0x5d32d4)&&(_0x5d32d4===_0xcbe1('0x91')||_0x5d32d4===_0xcbe1('0x8a')||_0x5d32d4===_0xcbe1('0x92')||_0x5d32d4===_0xcbe1('0x93')||_0x5d32d4===_0xcbe1('0x94')||_0x5d32d4===_0xcbe1('0x95')||_0x5d32d4===_0xcbe1('0x96')||_0x5d32d4===_0xcbe1('0x97')||_0x5d32d4===_0xcbe1('0x98'))){_0x127745[_0xcbe1('0x8f')](new Extension(_0x411120,_0x2a798f,_0xcbe1('0x99')+_0x5d32d4+')='+_0x411120[_0x5d32d4],_0xcbe1('0x9a')));_0x2a798f+=0x1;}}_0x127745['push'](new Extension(_0x411120,_0x2a798f,'6',_0xcbe1('0x9b')));_0x2a798f+=0x1;_0x127745[_0xcbe1('0x8f')](new Extension(_0x411120,_0x2a798f,_0xcbe1('0x9c'),_0xcbe1('0x9d')));_0x2a798f=0x0;return _0x127745;}exports['addAccountApplications']=function(_0x37e471,_0x443a47,_0x2964b9){var _0x2181c5;return db[_0xcbe1('0x7d')][_0xcbe1('0x7e')](function(_0xdc18f8){return db['FaxAccount'][_0xcbe1('0x5b')](_0x37e471[_0xcbe1('0x62')],{'transaction':_0xdc18f8})[_0xcbe1('0x23')](function(_0x27cb0d){_0x2181c5=_0x27cb0d['get']({'plain':!![]});return db[_0xcbe1('0x9e')][_0xcbe1('0x83')](createExtensionsReciveFax(_0x2181c5),{'transaction':_0xdc18f8});});})[_0xcbe1('0x23')](function(){return _0x2181c5;})[_0xcbe1('0x23')](respondWithResult(_0x443a47,null))[_0xcbe1('0x2d')](handleError(_0x443a47,null));};exports[_0xcbe1('0x9f')]=function(_0x18eb87,_0x5faccd,_0x4d8edf){var _0x24e9f2;return db['sequelize'][_0xcbe1('0x7e')](function(_0x1d65ff){return db[_0xcbe1('0x53')][_0xcbe1('0x37')](_0x18eb87[_0xcbe1('0x62')],{'where':{'id':_0x18eb87[_0xcbe1('0x62')]['id']},'transaction':_0x1d65ff})[_0xcbe1('0x23')](function(_0x56d2fa){return db['VoiceExtension'][_0xcbe1('0x38')]({'where':{'FaxAccountId':_0x18eb87[_0xcbe1('0x62')]['id']},'transaction':_0x1d65ff})[_0xcbe1('0x23')](function(_0x507ce2){return db['VoiceExtension'][_0xcbe1('0x83')](createExtensionsReciveFax(_[_0xcbe1('0x75')](_0x18eb87[_0xcbe1('0x62')],[_0xcbe1('0xa0'),_0xcbe1('0x42'),_0xcbe1('0xa1'),_0xcbe1('0xa2'),_0xcbe1('0xa3'),_0xcbe1('0xa4')])),{'transaction':_0x1d65ff});});});})['then'](function(){return db[_0xcbe1('0x53')][_0xcbe1('0xa5')](_0x18eb87[_0xcbe1('0x62')]['id']);})[_0xcbe1('0x23')](respondWithResult(_0x5faccd,null))[_0xcbe1('0x2d')](handleError(_0x5faccd,null));};exports['getMessages']=function(_0x5a82ea,_0x4f1930,_0x489a6b){var _0x36005d={'raw':!![],'where':{}};var _0x2daf88={};var _0x40f403={'count':0x0,'rows':[]};return db[_0xcbe1('0x53')]['findOne']({'where':{'id':_0x5a82ea['params']['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x4f1930,null))[_0xcbe1('0x23')](function(_0x26c283){if(_0x26c283){_0x2daf88[_0xcbe1('0x47')]=_[_0xcbe1('0x58')](db[_0xcbe1('0xa6')][_0xcbe1('0x69')]);_0x2daf88['query']=_[_0xcbe1('0x58')](_0x5a82ea[_0xcbe1('0x44')]);_0x2daf88[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x2daf88[_0xcbe1('0x47')],_0x2daf88[_0xcbe1('0x44')]);_0x36005d['attributes']=_[_0xcbe1('0x46')](_0x2daf88[_0xcbe1('0x47')],qs[_0xcbe1('0x49')](_0x5a82ea[_0xcbe1('0x44')][_0xcbe1('0x49')]));_0x36005d['attributes']=_0x36005d[_0xcbe1('0x48')][_0xcbe1('0x6a')]?_0x36005d[_0xcbe1('0x48')]:_0x2daf88['model'];if(!_0x5a82ea[_0xcbe1('0x44')][_0xcbe1('0x71')](_0xcbe1('0x4a'))){_0x36005d[_0xcbe1('0x32')]=qs['limit'](_0x5a82ea['query'][_0xcbe1('0x32')]);_0x36005d[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x5a82ea[_0xcbe1('0x44')]['offset']);}_0x36005d[_0xcbe1('0x4b')]=qs[_0xcbe1('0x4c')](_0x5a82ea['query'][_0xcbe1('0x4c')]);_0x36005d[_0xcbe1('0x50')]=qs[_0xcbe1('0x45')](_['pick'](_0x5a82ea['query'],_0x2daf88[_0xcbe1('0x45')]));_0x36005d[_0xcbe1('0x50')]['FaxAccountId']=_0x26c283['id'];if(_0x5a82ea['query']['filter']){_0x36005d['where']=_[_0xcbe1('0x4f')](_0x36005d['where'],{'$or':_[_0xcbe1('0x40')](_0x36005d[_0xcbe1('0x48')],function(_0x4cc836){var _0x244e8f={};_0x244e8f[_0x4cc836]={'$like':'%'+_0x5a82ea['query'][_0xcbe1('0x4e')]+'%'};return _0x244e8f;})});}if(_0x5a82ea[_0xcbe1('0x44')][_0xcbe1('0xa7')]){var _0x9f227d=_0x5a82ea[_0xcbe1('0x44')][_0xcbe1('0xa7')][_0xcbe1('0xa8')](',');var _0xb0656a={};_0xb0656a[_0x9f227d[0x0]]={'$gte':moment(_0x9f227d[0x1])[_0xcbe1('0xa9')](_0xcbe1('0xaa'))};_0x36005d[_0xcbe1('0x50')]=_[_0xcbe1('0x4f')](_0x36005d[_0xcbe1('0x50')],_0xb0656a);}_0x36005d=_[_0xcbe1('0x4f')]({},_0x36005d,_0x5a82ea[_0xcbe1('0x52')]);return db['FaxMessage'][_0xcbe1('0x33')]({'where':_0x36005d[_0xcbe1('0x50')]})[_0xcbe1('0x23')](function(_0x5c03a8){_0x40f403['count']=_0x5c03a8;if(_0x5a82ea['query'][_0xcbe1('0x54')]){_0x36005d[_0xcbe1('0x59')]=[{'all':!![]}];}return db['FaxMessage'][_0xcbe1('0x6b')](_0x36005d);})[_0xcbe1('0x23')](function(_0x2626da){_0x40f403[_0xcbe1('0x55')]=_0x2626da;return _0x40f403;});}})[_0xcbe1('0x23')](respondWithFilteredResult(_0x4f1930,_0x36005d))['catch'](handleError(_0x4f1930,null));};exports['send']=function(_0x2a285e,_0x545ed9,_0x3208fe){var _0x441c45,_0x4ea20b={},_0x2858e0;if(_0x2a285e[_0xcbe1('0x62')]['to']){_0x2858e0=_0x2a285e[_0xcbe1('0x62')]['to'][0x0];}return db[_0xcbe1('0x53')][_0xcbe1('0x5a')]({'where':{'id':_0x2a285e[_0xcbe1('0x57')]['id']},'include':[{'model':db[_0xcbe1('0xab')],'as':_0xcbe1('0xac'),'include':[{'model':db[_0xcbe1('0x77')],'as':_0xcbe1('0xad'),'where':{'fax':_0x2858e0},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0xcbe1('0x23')](handleEntityNotFound(_0x545ed9,null))[_0xcbe1('0x23')](function(_0x49f81f){_0x441c45=_0x49f81f;if(_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xae')]&&_0x2a285e['body'][_0xcbe1('0xae')][_0xcbe1('0x6a')]){for(var _0x4629ef=0x0;_0x4629ef<_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xae')][_0xcbe1('0x6a')];_0x4629ef+=0x1){_0x2a285e['body'][_0xcbe1('0xae')][_0x4629ef]={'filename':_0x2a285e[_0xcbe1('0x62')]['attachments'][_0x4629ef][_0xcbe1('0x43')],'id':_0x2a285e[_0xcbe1('0x62')]['attachments'][_0x4629ef]['id'],'path':path[_0xcbe1('0xaf')](config[_0xcbe1('0xb0')],_0xcbe1('0xb1'),_0x2a285e['body'][_0xcbe1('0xae')][_0x4629ef][_0xcbe1('0xb2')])};}}return respondWithRpcPromise(_0xcbe1('0xb3'),_0xcbe1('0xb3'),{'FaxAccountId':_[_0xcbe1('0xb4')](_0x2a285e[_0xcbe1('0x57')]['id'])?undefined:_0x2a285e[_0xcbe1('0x57')]['id'],'path':_[_0xcbe1('0xb4')](_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xae')][0x0][_0xcbe1('0x6')])?undefined:_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xae')][0x0][_0xcbe1('0x6')],'fax':_[_0xcbe1('0xb4')](_0x2a285e[_0xcbe1('0x62')]['to'][0x0])?undefined:_0x2a285e['body']['to'][0x0]},client9002);})[_0xcbe1('0x23')](function(){if(_0x441c45){if(_[_0xcbe1('0xb4')](_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xb5')])){_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xb5')]=util[_0xcbe1('0xa9')](_0xcbe1('0xb6'),_0x441c45['name'],_0x441c45[_0xcbe1('0xb7')]);}if(_0x441c45[_0xcbe1('0xac')]){if(_0x441c45[_0xcbe1('0xac')][_0xcbe1('0xad')]['length']){return _0x441c45[_0xcbe1('0xac')][_0xcbe1('0xad')][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x2a285e[_0xcbe1('0x62')],{'firstName':_0x2a285e[_0xcbe1('0x62')]['to'][0x0],'phone':_0x2a285e['body']['to'][0x0],'fax':_0x2a285e[_0xcbe1('0x62')]['to'][0x0],'ListId':_0x441c45[_0xcbe1('0xa4')]}));}}else{throw new Error(_0xcbe1('0xb8'));}}else{throw new Error(_0xcbe1('0xb9'));}})[_0xcbe1('0x23')](function(_0x593b8e){if(_0x593b8e){return db[_0xcbe1('0x74')][_0xcbe1('0x5a')]({'where':{'ContactId':_0x593b8e['id'],'closed':![],'FaxAccountId':_0x441c45['id']}})[_0xcbe1('0x23')](function(_0xc6bd50){if(_0xc6bd50){return[_0xc6bd50,![]];}return db['FaxInteraction']['create']({'UserId':_0x2a285e['user']['id'],'ContactId':_0x593b8e['id'],'FaxAccountId':_0x441c45['id'],'fax':_0x2a285e['body']['to'][0x0],'firstMsgDirection':_0xcbe1('0xba'),'Messages':[_['merge'](_0x2a285e[_0xcbe1('0x62')],{'read':![],'body':_0x2a285e['body']['attachments'][0x0]['filename'],'FaxAccountId':_0x441c45['id'],'UserId':_0x2a285e[_0xcbe1('0x5c')]['id'],'ContactId':_0x593b8e['id'],'AttachmentId':_0x2a285e['body'][_0xcbe1('0xae')][0x0]['id']})]},{'include':[{'model':db[_0xcbe1('0xa6')],'as':'Messages'}]})[_0xcbe1('0x23')](function(_0x58f137){return[_0x58f137,!![]];});});}else{throw new Error(_0xcbe1('0xbb'));}})[_0xcbe1('0xbc')](function(_0x4703d3,_0x310e25){if(_0x310e25){return _0x4703d3;}return db[_0xcbe1('0xa6')]['create']({'direction':_0xcbe1('0xba'),'read':![],'body':_0x2a285e[_0xcbe1('0x62')][_0xcbe1('0xae')][0x0]['filename'],'FaxAccountId':_0x441c45['id'],'FaxInteractionId':_0x4703d3['id'],'UserId':_0x2a285e['user']['id'],'ContactId':_0x4703d3[_0xcbe1('0xbd')],'AttachmentId':_0x2a285e[_0xcbe1('0x62')]['attachments'][0x0]['id']})[_0xcbe1('0x23')](function(_0x3f059f){_0x4703d3['dataValues'][_0xcbe1('0xbe')]=[];_0x4703d3[_0xcbe1('0xbf')][_0xcbe1('0xbe')]['push'](_0x3f059f['dataValues']);return _0x4703d3;});})[_0xcbe1('0x23')](function(_0x313481){respondWithRpcPromise('SendFax',_0xcbe1('0xc0'),{'FaxAccountId':_['isNil'](_0x2a285e[_0xcbe1('0x57')]['id'])?undefined:_0x2a285e[_0xcbe1('0x57')]['id'],'path':_[_0xcbe1('0xb4')](_0x2a285e['body']['attachments'][0x0][_0xcbe1('0x6')])?undefined:_0x2a285e['body'][_0xcbe1('0xae')][0x0][_0xcbe1('0x6')],'fax':_[_0xcbe1('0xb4')](_0x2a285e[_0xcbe1('0x62')]['to'][0x0])?undefined:_0x2a285e['body']['to'][0x0],'AttachmentId':_0x2a285e['body'][_0xcbe1('0xae')][0x0]['id']},client9002)[_0xcbe1('0x23')](function(_0x590084){logger[_0xcbe1('0x24')]('SendFaxRpc,\x20%s',_0x590084);})[_0xcbe1('0x2d')](function(_0x38cddf){logger[_0xcbe1('0x24')](_0xcbe1('0xc1'),_0x38cddf);});return _0x313481;})[_0xcbe1('0x23')](respondWithResult(_0x545ed9,null))['catch'](handleError(_0x545ed9,null));};exports['addAgents']=function(_0x1ad856,_0x4be05d,_0x499fd5){return db['FaxAccount'][_0xcbe1('0x5a')]({'where':{'id':_0x1ad856[_0xcbe1('0x57')]['id']}})['then'](handleEntityNotFound(_0x4be05d,null))['then'](function(_0x1cb1d5){if(_0x1cb1d5){return _0x1cb1d5[_0xcbe1('0xc2')](_0x1ad856[_0xcbe1('0x62')]['ids'],_[_0xcbe1('0x75')](_0x1ad856[_0xcbe1('0x62')],[_0xcbe1('0x6d'),'id'])||{})[_0xcbe1('0xbc')](function(_0x231951){for(var _0x4a4a6c=0x0;_0x4a4a6c<_0x1ad856[_0xcbe1('0x62')][_0xcbe1('0x6d')][_0xcbe1('0x6a')];_0x4a4a6c+=0x1){socket[_0xcbe1('0xc3')](_0xcbe1('0xc4'),{'UserId':Number(_0x1ad856['body'][_0xcbe1('0x6d')][_0x4a4a6c]),'FaxAccountId':Number(_0x1ad856[_0xcbe1('0x57')]['id'])});}return _0x231951;});}})[_0xcbe1('0x23')](respondWithResult(_0x4be05d,null))[_0xcbe1('0x2d')](handleError(_0x4be05d,null));};exports[_0xcbe1('0xc5')]=function(_0x5a4518,_0x456cf1,_0x37a430){return db[_0xcbe1('0x53')][_0xcbe1('0x5a')]({'where':{'id':_0x5a4518[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x456cf1,null))['then'](function(_0x31e045){if(_0x31e045){return _0x31e045[_0xcbe1('0xc5')](_0x5a4518[_0xcbe1('0x44')][_0xcbe1('0x6d')])[_0xcbe1('0x23')](function(){if(_['isArray'](_0x5a4518[_0xcbe1('0x44')][_0xcbe1('0x6d')])){for(var _0x54112d=0x0;_0x54112d<_0x5a4518[_0xcbe1('0x44')]['ids'][_0xcbe1('0x6a')];_0x54112d+=0x1){socket[_0xcbe1('0xc3')](_0xcbe1('0xc6'),{'UserId':Number(_0x5a4518[_0xcbe1('0x44')][_0xcbe1('0x6d')][_0x54112d]),'FaxAccountId':Number(_0x5a4518[_0xcbe1('0x57')]['id'])});}}else{socket[_0xcbe1('0xc3')](_0xcbe1('0xc6'),{'UserId':Number(_0x5a4518[_0xcbe1('0x44')][_0xcbe1('0x6d')]),'FaxAccountId':Number(_0x5a4518[_0xcbe1('0x57')]['id'])});}});}})[_0xcbe1('0x23')](respondWithStatusCode(_0x456cf1,null))['catch'](handleError(_0x456cf1,null));};exports[_0xcbe1('0xc7')]=function(_0x1d312e,_0x5beddb,_0x146061){var _0x5eb9f9={};var _0x59b330={};var _0x1beb53;var _0x11d0f2;return db[_0xcbe1('0x53')]['findOne']({'where':{'id':_0x1d312e[_0xcbe1('0x57')]['id']}})[_0xcbe1('0x23')](handleEntityNotFound(_0x5beddb,null))[_0xcbe1('0x23')](function(_0x2d08fd){if(_0x2d08fd){_0x1beb53=_0x2d08fd;_0x59b330[_0xcbe1('0x47')]=_[_0xcbe1('0x58')](db[_0xcbe1('0xc8')]['rawAttributes']);_0x59b330[_0xcbe1('0x44')]=_[_0xcbe1('0x58')](_0x1d312e[_0xcbe1('0x44')]);_0x59b330[_0xcbe1('0x45')]=_[_0xcbe1('0x46')](_0x59b330[_0xcbe1('0x47')],_0x59b330[_0xcbe1('0x44')]);_0x5eb9f9[_0xcbe1('0x48')]=_[_0xcbe1('0x46')](_0x59b330[_0xcbe1('0x47')],qs[_0xcbe1('0x49')](_0x1d312e[_0xcbe1('0x44')][_0xcbe1('0x49')]));_0x5eb9f9[_0xcbe1('0x48')]=_0x5eb9f9['attributes'][_0xcbe1('0x6a')]?_0x5eb9f9[_0xcbe1('0x48')]:_0x59b330[_0xcbe1('0x47')];_0x5eb9f9[_0xcbe1('0x4b')]=qs[_0xcbe1('0x4c')](_0x1d312e[_0xcbe1('0x44')][_0xcbe1('0x4c')]);_0x5eb9f9[_0xcbe1('0x50')]=qs[_0xcbe1('0x45')](_['pick'](_0x1d312e[_0xcbe1('0x44')],_0x59b330[_0xcbe1('0x45')]));if(_0x1d312e['query'][_0xcbe1('0x4e')]){_0x5eb9f9[_0xcbe1('0x50')]=_['merge'](_0x5eb9f9[_0xcbe1('0x50')],{'$or':_[_0xcbe1('0x40')](_0x5eb9f9[_0xcbe1('0x48')],function(_0x5b5308){var _0x35a156={};_0x35a156[_0x5b5308]={'$like':'%'+_0x1d312e[_0xcbe1('0x44')][_0xcbe1('0x4e')]+'%'};return _0x35a156;})});}_0x5eb9f9=_[_0xcbe1('0x4f')]({},_0x5eb9f9,_0x1d312e[_0xcbe1('0x52')]);return _0x1beb53[_0xcbe1('0xc7')](_0x5eb9f9);}})[_0xcbe1('0x23')](function(_0x42a3e8){if(_0x42a3e8){_0x11d0f2=_0x42a3e8['length'];if(!_0x1d312e[_0xcbe1('0x44')][_0xcbe1('0x71')](_0xcbe1('0x4a'))){_0x5eb9f9[_0xcbe1('0x32')]=qs[_0xcbe1('0x32')](_0x1d312e[_0xcbe1('0x44')][_0xcbe1('0x32')]);_0x5eb9f9[_0xcbe1('0x31')]=qs[_0xcbe1('0x31')](_0x1d312e[_0xcbe1('0x44')][_0xcbe1('0x31')]);}return _0x1beb53['getAgents'](_0x5eb9f9);}})[_0xcbe1('0x23')](function(_0x5dda42){if(_0x5dda42){return _0x5dda42?{'count':_0x11d0f2,'rows':_0x5dda42}:null;}})[_0xcbe1('0x23')](respondWithResult(_0x5beddb,null))['catch'](handleError(_0x5beddb,null));};
\ No newline at end of file
+var _0x0e0e=['READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','context','exten','localstationid','app','description','Fax\x20Extension','appdata','Answer','push','CDR(type)=inbound-fax','Set','faxdetect','headerinfo','maxrate','modem','t38timeout','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','tech','createdAt','updatedAt','TrunkId','getMessages','FaxMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','join','server/files/attachments','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','out','Messages','spread','filename','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','User','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','limit','count','set','apply','reject','update','destroy','get','FaxAccounts','UserProfileResource','end','sendStatus','stack','name','send','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','nolimit','options','include','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','omit','getInteractions','CmContact','Contact','Owner','fullname','color','tag','FaxInteraction','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS'];(function(_0x5870af,_0x59a964){var _0x1e78f6=function(_0x494478){while(--_0x494478){_0x5870af['push'](_0x5870af['shift']());}};_0x1e78f6(++_0x59a964);}(_0x0e0e,0x1ce));var _0xe0e0=function(_0x599aaf,_0x3d3622){_0x599aaf=_0x599aaf-0x0;var _0xd995f3=_0x0e0e[_0x599aaf];return _0xd995f3;};'use strict';var emlformat=require(_0xe0e0('0x0'));var rimraf=require(_0xe0e0('0x1'));var zipdir=require(_0xe0e0('0x2'));var jsonpatch=require(_0xe0e0('0x3'));var rp=require(_0xe0e0('0x4'));var moment=require('moment');var BPromise=require(_0xe0e0('0x5'));var Mustache=require(_0xe0e0('0x6'));var util=require(_0xe0e0('0x7'));var path=require(_0xe0e0('0x8'));var sox=require(_0xe0e0('0x9'));var csv=require(_0xe0e0('0xa'));var ejs=require(_0xe0e0('0xb'));var fs=require('fs');var fs_extra=require(_0xe0e0('0xc'));var _=require('lodash');var squel=require(_0xe0e0('0xd'));var crypto=require(_0xe0e0('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe0e0('0xf'));var toCsv=require(_0xe0e0('0xa'));var querystring=require(_0xe0e0('0x10'));var Papa=require(_0xe0e0('0x11'));var Redis=require(_0xe0e0('0x12'));var authService=require(_0xe0e0('0x13'));var qs=require(_0xe0e0('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe0e0('0x15'))(_0xe0e0('0x16'));var utils=require(_0xe0e0('0x17'));var config=require(_0xe0e0('0x18'));var licenseUtil=require(_0xe0e0('0x19'));var db=require(_0xe0e0('0x1a'))['db'];config[_0xe0e0('0x1b')]=_[_0xe0e0('0x1c')](config['redis'],{'host':_0xe0e0('0x1d'),'port':0x18eb});var socket=require(_0xe0e0('0x1e'))(new Redis(config['redis']));require('./faxAccount.socket')[_0xe0e0('0x1f')](socket);var jayson=require(_0xe0e0('0x20'));var client=jayson[_0xe0e0('0x21')][_0xe0e0('0x22')]({'port':0x232c});var client9002=jayson[_0xe0e0('0x21')][_0xe0e0('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x50c4c6,_0x5c7e73,_0x26e82c,_0x3984f4){return new BPromise(function(_0x4dcef9,_0x597947){var _0x1dd426=_0x3984f4||client;return _0x1dd426[_0xe0e0('0x23')](_0x50c4c6,_0x26e82c)[_0xe0e0('0x24')](function(_0x3a13ff){logger[_0xe0e0('0x25')]('FaxAccount,\x20%s,\x20%s',_0x5c7e73,'request\x20sent');logger[_0xe0e0('0x26')](_0xe0e0('0x27'),_0x5c7e73,_0xe0e0('0x28'),JSON[_0xe0e0('0x29')](_0x3a13ff));if(_0x3a13ff[_0xe0e0('0x2a')]){if(_0x3a13ff[_0xe0e0('0x2a')][_0xe0e0('0x2b')]===0x1f4){logger[_0xe0e0('0x2a')](_0xe0e0('0x2c'),_0x5c7e73,_0x3a13ff[_0xe0e0('0x2a')]['message']);return _0x597947(_0x3a13ff[_0xe0e0('0x2a')][_0xe0e0('0x2d')]);}logger[_0xe0e0('0x2a')]('FaxAccount,\x20%s,\x20%s',_0x5c7e73,_0x3a13ff[_0xe0e0('0x2a')][_0xe0e0('0x2d')]);return _0x4dcef9(_0x3a13ff[_0xe0e0('0x2a')]['message']);}else{logger['info'](_0xe0e0('0x2c'),_0x5c7e73,_0xe0e0('0x28'));_0x4dcef9(_0x3a13ff[_0xe0e0('0x2e')]['message']);}})[_0xe0e0('0x2f')](function(_0x257aed){logger[_0xe0e0('0x2a')](_0xe0e0('0x2c'),_0x5c7e73,_0x257aed);_0x597947(_0x257aed);});});}function respondWithStatusCode(_0x1f007d,_0x579ed8){_0x579ed8=_0x579ed8||0xcc;return function(_0xa6d087){if(_0xa6d087){return _0x1f007d['sendStatus'](_0x579ed8);}return _0x1f007d[_0xe0e0('0x30')](_0x579ed8)['end']();};}function respondWithResult(_0x557bc4,_0x4d861e){_0x4d861e=_0x4d861e||0xc8;return function(_0x1bc0b8){if(_0x1bc0b8){return _0x557bc4[_0xe0e0('0x30')](_0x4d861e)[_0xe0e0('0x31')](_0x1bc0b8);}};}function respondWithFilteredResult(_0x2b7e22,_0x4e6fe4){return function(_0x425eed){if(_0x425eed){var _0x5c97d8=typeof _0x4e6fe4[_0xe0e0('0x32')]===_0xe0e0('0x33')&&typeof _0x4e6fe4[_0xe0e0('0x34')]===_0xe0e0('0x33');var _0x7ecc0c=_0x425eed[_0xe0e0('0x35')];var _0x1eda40=_0x5c97d8?0x0:_0x4e6fe4[_0xe0e0('0x32')];var _0x4c9c51=_0x5c97d8?_0x425eed[_0xe0e0('0x35')]:_0x4e6fe4['offset']+_0x4e6fe4[_0xe0e0('0x34')];var _0x24dc1a;if(_0x4c9c51>=_0x7ecc0c){_0x4c9c51=_0x7ecc0c;_0x24dc1a=0xc8;}else{_0x24dc1a=0xce;}_0x2b7e22[_0xe0e0('0x30')](_0x24dc1a);return _0x2b7e22[_0xe0e0('0x36')]('Content-Range',_0x1eda40+'-'+_0x4c9c51+'/'+_0x7ecc0c)[_0xe0e0('0x31')](_0x425eed);}return null;};}function patchUpdates(_0x123000){return function(_0x2e42e0){try{jsonpatch[_0xe0e0('0x37')](_0x2e42e0,_0x123000,!![]);}catch(_0x5a2287){return BPromise[_0xe0e0('0x38')](_0x5a2287);}return _0x2e42e0['save']();};}function saveUpdates(_0x448f12,_0x598a8e){return function(_0x466e28){if(_0x466e28){return _0x466e28[_0xe0e0('0x39')](_0x448f12)[_0xe0e0('0x24')](function(_0x4f00e2){return _0x4f00e2;});}return null;};}function removeEntity(_0x540800,_0x4baadc){return function(_0x41257d){if(_0x41257d){return _0x41257d[_0xe0e0('0x3a')]()['then'](function(){var _0x17d634=_0x41257d[_0xe0e0('0x3b')]({'plain':!![]});var _0x12f849=_0xe0e0('0x3c');return db[_0xe0e0('0x3d')][_0xe0e0('0x3a')]({'where':{'type':_0x12f849,'resourceId':_0x17d634['id']}})[_0xe0e0('0x24')](function(){return _0x41257d;});})[_0xe0e0('0x24')](function(){_0x540800[_0xe0e0('0x30')](0xcc)[_0xe0e0('0x3e')]();});}};}function handleEntityNotFound(_0x4ff41d,_0x22a4f9){return function(_0x2505e5){if(!_0x2505e5){_0x4ff41d[_0xe0e0('0x3f')](0x194);}return _0x2505e5;};}function handleError(_0x1bd64e,_0xa9935e){_0xa9935e=_0xa9935e||0x1f4;return function(_0x2a02c6){logger[_0xe0e0('0x2a')](_0x2a02c6[_0xe0e0('0x40')]);if(_0x2a02c6[_0xe0e0('0x41')]){delete _0x2a02c6[_0xe0e0('0x41')];}_0x1bd64e[_0xe0e0('0x30')](_0xa9935e)[_0xe0e0('0x42')](_0x2a02c6);};}exports['index']=function(_0x152860,_0x404421){var _0x4971ae={'include':[{'model':db[_0xe0e0('0x43')],'as':_0xe0e0('0x44')}]},_0xab93e3={},_0x9f78a2={'count':0x0,'rows':[]};var _0x275f13=_[_0xe0e0('0x45')](db[_0xe0e0('0x46')][_0xe0e0('0x47')],function(_0x5ca001){return{'name':_0x5ca001[_0xe0e0('0x48')],'type':_0x5ca001[_0xe0e0('0x49')][_0xe0e0('0x4a')]};});_0xab93e3[_0xe0e0('0x4b')]=_['map'](_0x275f13,_0xe0e0('0x41'));_0xab93e3[_0xe0e0('0x4c')]=_[_0xe0e0('0x4d')](_0x152860['query']);_0xab93e3[_0xe0e0('0x4e')]=_[_0xe0e0('0x4f')](_0xab93e3['model'],_0xab93e3[_0xe0e0('0x4c')]);_0x4971ae[_0xe0e0('0x50')]=_['intersection'](_0xab93e3['model'],qs[_0xe0e0('0x51')](_0x152860[_0xe0e0('0x4c')]['fields']));_0x4971ae[_0xe0e0('0x50')]=_0x4971ae[_0xe0e0('0x50')][_0xe0e0('0x52')]?_0x4971ae['attributes']:_0xab93e3[_0xe0e0('0x4b')];if(!_0x152860[_0xe0e0('0x4c')][_0xe0e0('0x53')]('nolimit')){_0x4971ae[_0xe0e0('0x34')]=qs['limit'](_0x152860[_0xe0e0('0x4c')][_0xe0e0('0x34')]);_0x4971ae['offset']=qs['offset'](_0x152860[_0xe0e0('0x4c')][_0xe0e0('0x32')]);}_0x4971ae[_0xe0e0('0x54')]=qs[_0xe0e0('0x55')](_0x152860['query'][_0xe0e0('0x55')]);_0x4971ae['where']=qs[_0xe0e0('0x4e')](_[_0xe0e0('0x56')](_0x152860[_0xe0e0('0x4c')],_0xab93e3[_0xe0e0('0x4e')]),_0x275f13);if(_0x152860['query'][_0xe0e0('0x57')]){_0x4971ae[_0xe0e0('0x58')]=_[_0xe0e0('0x59')](_0x4971ae[_0xe0e0('0x58')],{'$or':_[_0xe0e0('0x45')](_0x275f13,function(_0x362e81){if(_0x362e81[_0xe0e0('0x49')]!==_0xe0e0('0x5a')){var _0x49321f={};_0x49321f[_0x362e81[_0xe0e0('0x41')]]={'$like':'%'+_0x152860['query'][_0xe0e0('0x57')]+'%'};return _0x49321f;}})});}_0x4971ae=_[_0xe0e0('0x59')]({},_0x4971ae,_0x152860['options']);var _0x35fe83={'where':_0x4971ae[_0xe0e0('0x58')]};return db['FaxAccount'][_0xe0e0('0x35')](_0x35fe83)[_0xe0e0('0x24')](function(_0x1ae56f){_0x9f78a2[_0xe0e0('0x35')]=_0x1ae56f;if(_0x152860[_0xe0e0('0x4c')][_0xe0e0('0x5b')]){_0x4971ae['include']=[{'all':!![]}];}return db[_0xe0e0('0x46')][_0xe0e0('0x5c')](_0x4971ae);})[_0xe0e0('0x24')](function(_0x36619d){_0x9f78a2[_0xe0e0('0x5d')]=_0x36619d;return _0x9f78a2;})[_0xe0e0('0x24')](respondWithFilteredResult(_0x404421,_0x4971ae))['catch'](handleError(_0x404421,null));};exports['show']=function(_0x4edf48,_0x27e5c9){var _0x3addc4={'raw':![],'where':{'id':_0x4edf48[_0xe0e0('0x5e')]['id']},'include':[{'model':db['Pause'],'as':_0xe0e0('0x44')}]},_0x20f901={};_0x20f901[_0xe0e0('0x4b')]=_[_0xe0e0('0x4d')](db[_0xe0e0('0x46')][_0xe0e0('0x47')]);_0x20f901[_0xe0e0('0x4c')]=_[_0xe0e0('0x4d')](_0x4edf48[_0xe0e0('0x4c')]);_0x20f901[_0xe0e0('0x4e')]=_[_0xe0e0('0x4f')](_0x20f901['model'],_0x20f901[_0xe0e0('0x4c')]);_0x3addc4[_0xe0e0('0x50')]=_[_0xe0e0('0x4f')](_0x20f901['model'],qs[_0xe0e0('0x51')](_0x4edf48['query'][_0xe0e0('0x51')]));_0x3addc4['attributes']=_0x3addc4[_0xe0e0('0x50')][_0xe0e0('0x52')]?_0x3addc4[_0xe0e0('0x50')]:_0x20f901[_0xe0e0('0x4b')];if(_0x4edf48['query']['includeAll']){_0x3addc4['include']=[{'all':!![]}];}_0x3addc4=_[_0xe0e0('0x59')]({},_0x3addc4,_0x4edf48['options']);return db[_0xe0e0('0x46')][_0xe0e0('0x5f')](_0x3addc4)[_0xe0e0('0x24')](handleEntityNotFound(_0x27e5c9,null))[_0xe0e0('0x24')](respondWithResult(_0x27e5c9,null))[_0xe0e0('0x2f')](handleError(_0x27e5c9,null));};exports['create']=function(_0x5873ba,_0x2b21c4){return db[_0xe0e0('0x46')][_0xe0e0('0x60')](_0x5873ba[_0xe0e0('0x61')],{})['then'](function(_0x3838d6){var _0xa5ccc3=_0x5873ba[_0xe0e0('0x62')][_0xe0e0('0x3b')]({'plain':!![]});if(!_0xa5ccc3)throw new Error(_0xe0e0('0x63'));if(_0xa5ccc3['role']===_0xe0e0('0x62')){var _0x13789b=_0x3838d6[_0xe0e0('0x3b')]({'plain':!![]});var _0x370d1e=_0xe0e0('0x3c');return db['UserProfileSection']['find']({'where':{'name':_0x370d1e,'userProfileId':_0xa5ccc3[_0xe0e0('0x64')]},'raw':!![]})[_0xe0e0('0x24')](function(_0x2b593c){if(_0x2b593c&&_0x2b593c[_0xe0e0('0x65')]===0x0){return db[_0xe0e0('0x3d')][_0xe0e0('0x60')]({'name':_0x13789b[_0xe0e0('0x41')],'resourceId':_0x13789b['id'],'type':_0x2b593c[_0xe0e0('0x41')],'sectionId':_0x2b593c['id']},{})[_0xe0e0('0x24')](function(){return _0x3838d6;});}else{return _0x3838d6;}})['catch'](function(_0x4b41fb){logger[_0xe0e0('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4b41fb);throw _0x4b41fb;});}return _0x3838d6;})[_0xe0e0('0x24')](respondWithResult(_0x2b21c4,0xc9))['catch'](handleError(_0x2b21c4,null));};exports['update']=function(_0x108348,_0x81a767){if(_0x108348[_0xe0e0('0x61')]['id']){delete _0x108348[_0xe0e0('0x61')]['id'];}return db[_0xe0e0('0x46')][_0xe0e0('0x5f')]({'where':{'id':_0x108348[_0xe0e0('0x5e')]['id']},'include':[{'model':db[_0xe0e0('0x43')],'as':_0xe0e0('0x44')}]})[_0xe0e0('0x24')](handleEntityNotFound(_0x81a767,null))[_0xe0e0('0x24')](saveUpdates(_0x108348[_0xe0e0('0x61')],null))['then'](respondWithResult(_0x81a767,null))[_0xe0e0('0x2f')](handleError(_0x81a767,null));};exports[_0xe0e0('0x3a')]=function(_0x6bed75,_0x4c97d9){return db[_0xe0e0('0x46')][_0xe0e0('0x5f')]({'where':{'id':_0x6bed75['params']['id']}})['then'](handleEntityNotFound(_0x4c97d9,null))['then'](removeEntity(_0x4c97d9,null))[_0xe0e0('0x2f')](handleError(_0x4c97d9,null));};exports['describe']=function(_0x4c3fd5,_0xe68f9){return db[_0xe0e0('0x46')][_0xe0e0('0x66')]()[_0xe0e0('0x24')](respondWithResult(_0xe68f9,null))[_0xe0e0('0x2f')](handleError(_0xe68f9,null));};exports[_0xe0e0('0x67')]=function(_0x24c967,_0x26afd5,_0x2fdae3){if(_0x24c967['body']['id']){delete _0x24c967[_0xe0e0('0x61')]['id'];}return db[_0xe0e0('0x46')][_0xe0e0('0x5f')]({'where':{'id':_0x24c967[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x26afd5,null))[_0xe0e0('0x24')](function(_0x212095){if(_0x212095){_0x24c967['body'][_0xe0e0('0x68')]=_0x212095['id'];return db[_0xe0e0('0x69')][_0xe0e0('0x60')](_0x24c967[_0xe0e0('0x61')]);}})[_0xe0e0('0x24')](respondWithResult(_0x26afd5,null))['catch'](handleError(_0x26afd5,null));};exports[_0xe0e0('0x6a')]=function(_0x170bab,_0x57759a,_0x530187){var _0x52fdbc={'raw':![],'where':{}};var _0x26f9b4={};var _0x6be6a7={'count':0x0,'rows':[]};return db['FaxAccount'][_0xe0e0('0x6b')]({'where':{'id':_0x170bab[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x57759a,null))['then'](function(_0x4d656c){if(_0x4d656c){_0x26f9b4[_0xe0e0('0x4b')]=_['keys'](db[_0xe0e0('0x69')][_0xe0e0('0x47')]);_0x26f9b4[_0xe0e0('0x4c')]=_[_0xe0e0('0x4d')](_0x170bab[_0xe0e0('0x4c')]);_0x26f9b4[_0xe0e0('0x4e')]=_[_0xe0e0('0x4f')](_0x26f9b4[_0xe0e0('0x4b')],_0x26f9b4[_0xe0e0('0x4c')]);_0x52fdbc[_0xe0e0('0x50')]=_[_0xe0e0('0x4f')](_0x26f9b4[_0xe0e0('0x4b')],qs['fields'](_0x170bab[_0xe0e0('0x4c')][_0xe0e0('0x51')]));_0x52fdbc[_0xe0e0('0x50')]=_0x52fdbc['attributes'][_0xe0e0('0x52')]?_0x52fdbc[_0xe0e0('0x50')]:_0x26f9b4[_0xe0e0('0x4b')];if(!_0x170bab['query']['hasOwnProperty'](_0xe0e0('0x6c'))){_0x52fdbc[_0xe0e0('0x34')]=qs[_0xe0e0('0x34')](_0x170bab[_0xe0e0('0x4c')]['limit']);_0x52fdbc[_0xe0e0('0x32')]=qs[_0xe0e0('0x32')](_0x170bab[_0xe0e0('0x4c')][_0xe0e0('0x32')]);}_0x52fdbc[_0xe0e0('0x54')]=qs[_0xe0e0('0x55')](_0x170bab[_0xe0e0('0x4c')][_0xe0e0('0x55')]);_0x52fdbc[_0xe0e0('0x58')]=qs[_0xe0e0('0x4e')](_[_0xe0e0('0x56')](_0x170bab[_0xe0e0('0x4c')],_0x26f9b4['filters']));_0x52fdbc[_0xe0e0('0x58')][_0xe0e0('0x68')]=_0x4d656c['id'];if(_0x170bab[_0xe0e0('0x4c')][_0xe0e0('0x57')]){_0x52fdbc['where']=_[_0xe0e0('0x59')](_0x52fdbc[_0xe0e0('0x58')],{'$or':_[_0xe0e0('0x45')](_0x52fdbc[_0xe0e0('0x50')],function(_0x50516f){var _0x10095f={};_0x10095f[_0x50516f]={'$like':'%'+_0x170bab[_0xe0e0('0x4c')][_0xe0e0('0x57')]+'%'};return _0x10095f;})});}_0x52fdbc=_[_0xe0e0('0x59')]({},_0x52fdbc,_0x170bab[_0xe0e0('0x6d')]);return db[_0xe0e0('0x69')][_0xe0e0('0x35')]({'where':_0x52fdbc[_0xe0e0('0x58')]})[_0xe0e0('0x24')](function(_0x2e9a5d){_0x6be6a7[_0xe0e0('0x35')]=_0x2e9a5d;if(_0x170bab['query']['includeAll']){_0x52fdbc[_0xe0e0('0x6e')]=[{'all':!![]}];}return db[_0xe0e0('0x69')][_0xe0e0('0x5c')](_0x52fdbc);})[_0xe0e0('0x24')](function(_0x38fd94){_0x6be6a7[_0xe0e0('0x5d')]=_0x38fd94;return _0x6be6a7;});}})[_0xe0e0('0x24')](respondWithFilteredResult(_0x57759a,_0x52fdbc))[_0xe0e0('0x2f')](handleError(_0x57759a,null));};exports[_0xe0e0('0x6f')]=function(_0x170aad,_0x3b757c,_0x31cb10){return db[_0xe0e0('0x46')][_0xe0e0('0x5f')]({'where':{'id':_0x170aad[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x3b757c,null))[_0xe0e0('0x24')](function(_0x4145e3){if(_0x4145e3){return _0x4145e3[_0xe0e0('0x6f')](_0x170aad[_0xe0e0('0x4c')][_0xe0e0('0x70')]);}})[_0xe0e0('0x24')](respondWithStatusCode(_0x3b757c,null))['catch'](handleError(_0x3b757c,null));};exports[_0xe0e0('0x71')]=function(_0x2dd7fd,_0x1403ea,_0xf039a7){if(_0x2dd7fd[_0xe0e0('0x61')]['id']){delete _0x2dd7fd['body']['id'];}return db[_0xe0e0('0x46')]['find']({'where':{'id':_0x2dd7fd[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x1403ea,null))[_0xe0e0('0x24')](function(_0x4e5131){if(_0x4e5131){_0x2dd7fd[_0xe0e0('0x61')][_0xe0e0('0x68')]=_0x4e5131['id'];return db[_0xe0e0('0x72')]['create'](_0x2dd7fd['body']);}})[_0xe0e0('0x24')](respondWithResult(_0x1403ea,null))['catch'](handleError(_0x1403ea,null));};exports[_0xe0e0('0x73')]=function(_0xba1875,_0x114b5f,_0x25766e){var _0x10c131={'raw':![],'where':{}};var _0x573209={};var _0x744c2e={'count':0x0,'rows':[]};return db['FaxAccount'][_0xe0e0('0x6b')]({'where':{'id':_0xba1875['params']['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x114b5f,null))[_0xe0e0('0x24')](function(_0x28f788){if(_0x28f788){_0x573209['model']=_[_0xe0e0('0x4d')](db[_0xe0e0('0x72')][_0xe0e0('0x47')]);_0x573209[_0xe0e0('0x4c')]=_[_0xe0e0('0x4d')](_0xba1875[_0xe0e0('0x4c')]);_0x573209[_0xe0e0('0x4e')]=_['intersection'](_0x573209['model'],_0x573209[_0xe0e0('0x4c')]);_0x10c131[_0xe0e0('0x50')]=_[_0xe0e0('0x4f')](_0x573209[_0xe0e0('0x4b')],qs[_0xe0e0('0x51')](_0xba1875[_0xe0e0('0x4c')][_0xe0e0('0x51')]));_0x10c131[_0xe0e0('0x50')]=_0x10c131[_0xe0e0('0x50')]['length']?_0x10c131['attributes']:_0x573209['model'];if(!_0xba1875[_0xe0e0('0x4c')]['hasOwnProperty'](_0xe0e0('0x6c'))){_0x10c131['limit']=qs[_0xe0e0('0x34')](_0xba1875['query'][_0xe0e0('0x34')]);_0x10c131[_0xe0e0('0x32')]=qs[_0xe0e0('0x32')](_0xba1875[_0xe0e0('0x4c')]['offset']);}_0x10c131[_0xe0e0('0x54')]=qs[_0xe0e0('0x55')](_0xba1875[_0xe0e0('0x4c')][_0xe0e0('0x55')]);_0x10c131[_0xe0e0('0x58')]=qs['filters'](_[_0xe0e0('0x56')](_0xba1875[_0xe0e0('0x4c')],_0x573209[_0xe0e0('0x4e')]));_0x10c131['where'][_0xe0e0('0x68')]=_0x28f788['id'];if(_0xba1875[_0xe0e0('0x4c')]['filter']){_0x10c131['where']=_[_0xe0e0('0x59')](_0x10c131[_0xe0e0('0x58')],{'$or':_[_0xe0e0('0x45')](_0x10c131['attributes'],function(_0x4b16d9){var _0x2a7278={};_0x2a7278[_0x4b16d9]={'$like':'%'+_0xba1875[_0xe0e0('0x4c')][_0xe0e0('0x57')]+'%'};return _0x2a7278;})});}_0x10c131=_['merge']({},_0x10c131,_0xba1875[_0xe0e0('0x6d')]);return db[_0xe0e0('0x72')][_0xe0e0('0x35')]({'where':_0x10c131[_0xe0e0('0x58')]})[_0xe0e0('0x24')](function(_0x4264ab){_0x744c2e[_0xe0e0('0x35')]=_0x4264ab;if(_0xba1875[_0xe0e0('0x4c')][_0xe0e0('0x5b')]){_0x10c131[_0xe0e0('0x6e')]=[{'all':!![]}];}return db['CannedAnswer'][_0xe0e0('0x5c')](_0x10c131);})[_0xe0e0('0x24')](function(_0x4167c6){_0x744c2e[_0xe0e0('0x5d')]=_0x4167c6;return _0x744c2e;});}})[_0xe0e0('0x24')](respondWithFilteredResult(_0x114b5f,_0x10c131))[_0xe0e0('0x2f')](handleError(_0x114b5f,null));};exports[_0xe0e0('0x74')]=function(_0x1dca95,_0x18bfe3,_0x2d3764){return db['FaxAccount'][_0xe0e0('0x5f')]({'where':{'id':_0x1dca95[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x18bfe3,null))[_0xe0e0('0x24')](function(_0x4af55d){if(_0x4af55d){return _0x4af55d[_0xe0e0('0x74')](_0x1dca95[_0xe0e0('0x4c')][_0xe0e0('0x70')]);}})['then'](respondWithStatusCode(_0x18bfe3,null))[_0xe0e0('0x2f')](handleError(_0x18bfe3,null));};exports[_0xe0e0('0x75')]=function(_0xc24f49,_0x394e3a,_0x416cdd){return db['FaxInteraction']['find']({'where':{'id':_0xc24f49[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x394e3a,null))[_0xe0e0('0x24')](function(_0x2c0106){if(_0x2c0106){return _0x2c0106[_0xe0e0('0x75')](_0xc24f49['body'][_0xe0e0('0x70')],_[_0xe0e0('0x76')](_0xc24f49[_0xe0e0('0x61')],['ids','id'])||{});}})[_0xe0e0('0x24')](respondWithResult(_0x394e3a,null))[_0xe0e0('0x2f')](handleError(_0x394e3a,null));};exports[_0xe0e0('0x77')]=function(_0x1bebbf,_0x20d668,_0x493868){var _0x2d0320={'raw':![],'where':{}};var _0x3bd0ab={};var _0x17e391={'count':0x0,'rows':[]};return db[_0xe0e0('0x46')][_0xe0e0('0x6b')]({'where':{'id':_0x1bebbf[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x20d668,null))[_0xe0e0('0x24')](function(_0x203aae){if(_0x203aae){_0x3bd0ab['model']=_[_0xe0e0('0x4d')](db['FaxInteraction'][_0xe0e0('0x47')]);_0x3bd0ab['query']=_[_0xe0e0('0x4d')](_0x1bebbf[_0xe0e0('0x4c')]);_0x3bd0ab[_0xe0e0('0x4e')]=_[_0xe0e0('0x4f')](_0x3bd0ab[_0xe0e0('0x4b')],_0x3bd0ab['query']);_0x2d0320['attributes']=_['intersection'](_0x3bd0ab['model'],qs[_0xe0e0('0x51')](_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x51')]));_0x2d0320[_0xe0e0('0x50')]=_0x2d0320[_0xe0e0('0x50')][_0xe0e0('0x52')]?_0x2d0320[_0xe0e0('0x50')]:_0x3bd0ab['model'];if(!_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x53')]('nolimit')){_0x2d0320[_0xe0e0('0x34')]=qs[_0xe0e0('0x34')](_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x34')]);_0x2d0320[_0xe0e0('0x32')]=qs[_0xe0e0('0x32')](_0x1bebbf['query'][_0xe0e0('0x32')]);}_0x2d0320['order']=qs[_0xe0e0('0x55')](_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x55')]);_0x2d0320[_0xe0e0('0x58')]=qs[_0xe0e0('0x4e')](_[_0xe0e0('0x56')](_0x1bebbf['query'],_0x3bd0ab[_0xe0e0('0x4e')]));_0x2d0320[_0xe0e0('0x58')][_0xe0e0('0x68')]=_0x203aae['id'];if(_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x57')]){_0x2d0320['where']=_[_0xe0e0('0x59')](_0x2d0320['where'],{'$or':_[_0xe0e0('0x45')](_0x2d0320['attributes'],function(_0x35eaab){var _0x507474={};_0x507474[_0x35eaab]={'$like':'%'+_0x1bebbf[_0xe0e0('0x4c')]['filter']+'%'};return _0x507474;})});}_0x2d0320=_[_0xe0e0('0x59')]({},_0x2d0320,_0x1bebbf[_0xe0e0('0x6d')]);return db['FaxInteraction'][_0xe0e0('0x35')]({'where':_0x2d0320['where']})[_0xe0e0('0x24')](function(_0x1bc2e9){_0x17e391['count']=_0x1bc2e9;if(_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x5b')]){_0x2d0320[_0xe0e0('0x6e')]=[{'model':db[_0xe0e0('0x78')],'as':_0xe0e0('0x79'),'required':![]},{'model':db['User'],'as':_0xe0e0('0x7a'),'attributes':['name',_0xe0e0('0x7b'),'internal'],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xe0e0('0x41'),_0xe0e0('0x7c')],'where':_0x1bebbf['query'][_0xe0e0('0x7d')]?{'id':_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x7d')]}:undefined,'required':_0x1bebbf[_0xe0e0('0x4c')][_0xe0e0('0x7d')]?!![]:![]}];}return db[_0xe0e0('0x7e')]['findAll'](_0x2d0320);})['then'](function(_0x45dee5){_0x17e391[_0xe0e0('0x5d')]=_0x45dee5;return _0x17e391;});}})[_0xe0e0('0x24')](respondWithFilteredResult(_0x20d668,_0x2d0320))[_0xe0e0('0x2f')](handleError(_0x20d668,null));};exports[_0xe0e0('0x7f')]=function(_0x2e49c2,_0x2b532a){var _0x6628=_0x2e49c2['params']['id'];var _0x2ebd9a=_0x2e49c2[_0xe0e0('0x61')];var _0x5ad547=0xc8;var _0x5e8f1a=null;return db[_0xe0e0('0x80')][_0xe0e0('0x81')]({'isolationLevel':db[_0xe0e0('0x80')][_0xe0e0('0x82')][_0xe0e0('0x83')][_0xe0e0('0x84')]},function(_0x31fd02){return db[_0xe0e0('0x46')][_0xe0e0('0x6b')]({'where':{'id':_0x6628},'transaction':_0x31fd02})[_0xe0e0('0x24')](function(_0x32b0c2){if(_0x32b0c2){return db[_0xe0e0('0x85')][_0xe0e0('0x3a')]({'where':{'FaxAccountId':_0x6628},'transaction':_0x31fd02})[_0xe0e0('0x24')](function(){var _0x552b8e=_[_0xe0e0('0x45')](_0x2ebd9a,function(_0x552d9f){_0x552d9f[_0xe0e0('0x68')]=_0x6628;return _0x552d9f;});return db[_0xe0e0('0x85')][_0xe0e0('0x86')](_0x552b8e,{'transaction':_0x31fd02});});}else{_0x5ad547=0x194;_0x5e8f1a=[];}});})[_0xe0e0('0x24')](function(){if(_0x5ad547!==0x194){return db[_0xe0e0('0x85')][_0xe0e0('0x87')]({'where':{'FaxAccountId':_0x6628},'order':_0xe0e0('0x88')})[_0xe0e0('0x24')](function(_0x2464da){_0x5e8f1a=_0x2464da;});}})[_0xe0e0('0x2f')](function(_0x350b9f){_0x5ad547=0x1f4;logger[_0xe0e0('0x2a')](_0x350b9f[_0xe0e0('0x40')]);if(_0x350b9f['name']){delete _0x350b9f[_0xe0e0('0x41')];}_0x5e8f1a=_0x350b9f;})[_0xe0e0('0x89')](function(){if(_0x5e8f1a===null){_0x2b532a[_0xe0e0('0x3f')](_0x5ad547);}else{if(_0x5ad547===0x1f4){_0x2b532a[_0xe0e0('0x30')](_0x5ad547)[_0xe0e0('0x42')](_0x5e8f1a);}else{_0x2b532a[_0xe0e0('0x30')](_0x5ad547)['json'](_0x5e8f1a);}}});};exports[_0xe0e0('0x8a')]=function(_0x597b0b,_0x23e34a,_0x4c513e){var _0xa5910b={};var _0x2d8445={};var _0x3cfb45;var _0x5afc04;return db[_0xe0e0('0x46')][_0xe0e0('0x6b')]({'where':{'id':_0x597b0b[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x23e34a,null))[_0xe0e0('0x24')](function(_0x544c4d){if(_0x544c4d){_0x3cfb45=_0x544c4d;_0x2d8445['model']=_[_0xe0e0('0x4d')](db['FaxApplication'][_0xe0e0('0x47')]);_0x2d8445[_0xe0e0('0x4c')]=_['keys'](_0x597b0b[_0xe0e0('0x4c')]);_0x2d8445[_0xe0e0('0x4e')]=_[_0xe0e0('0x4f')](_0x2d8445[_0xe0e0('0x4b')],_0x2d8445[_0xe0e0('0x4c')]);_0xa5910b[_0xe0e0('0x50')]=_[_0xe0e0('0x4f')](_0x2d8445[_0xe0e0('0x4b')],qs[_0xe0e0('0x51')](_0x597b0b['query'][_0xe0e0('0x51')]));_0xa5910b['attributes']=_0xa5910b[_0xe0e0('0x50')][_0xe0e0('0x52')]?_0xa5910b['attributes']:_0x2d8445[_0xe0e0('0x4b')];_0xa5910b[_0xe0e0('0x54')]=qs[_0xe0e0('0x55')](_0x597b0b['query'][_0xe0e0('0x55')]);_0xa5910b[_0xe0e0('0x58')]=qs[_0xe0e0('0x4e')](_[_0xe0e0('0x56')](_0x597b0b[_0xe0e0('0x4c')],_0x2d8445[_0xe0e0('0x4e')]));if(_0x597b0b['query'][_0xe0e0('0x57')]){_0xa5910b['where']=_[_0xe0e0('0x59')](_0xa5910b[_0xe0e0('0x58')],{'$or':_['map'](_0xa5910b[_0xe0e0('0x50')],function(_0x5bfc30){var _0x5d7346={};_0x5d7346[_0x5bfc30]={'$like':'%'+_0x597b0b[_0xe0e0('0x4c')]['filter']+'%'};return _0x5d7346;})});}_0xa5910b=_[_0xe0e0('0x59')]({},_0xa5910b,_0x597b0b[_0xe0e0('0x6d')]);return _0x3cfb45['getApplications'](_0xa5910b);}})['then'](function(_0x47982f){if(_0x47982f){_0x5afc04=_0x47982f[_0xe0e0('0x52')];if(!_0x597b0b[_0xe0e0('0x4c')][_0xe0e0('0x53')](_0xe0e0('0x6c'))){_0xa5910b[_0xe0e0('0x34')]=qs['limit'](_0x597b0b[_0xe0e0('0x4c')][_0xe0e0('0x34')]);_0xa5910b[_0xe0e0('0x32')]=qs['offset'](_0x597b0b[_0xe0e0('0x4c')][_0xe0e0('0x32')]);}return _0x3cfb45[_0xe0e0('0x8a')](_0xa5910b);}})[_0xe0e0('0x24')](function(_0x56bad5){if(_0x56bad5){return _0x56bad5?{'count':_0x5afc04,'rows':_0x56bad5}:null;}})[_0xe0e0('0x24')](respondWithResult(_0x23e34a,null))[_0xe0e0('0x2f')](handleError(_0x23e34a,null));};function Extension(_0x4d350f,_0x316a6e,_0x4349a6,_0x4742ba){this[_0xe0e0('0x8b')]='from-voip-provider';this[_0xe0e0('0x8c')]=_0x4d350f[_0xe0e0('0x8d')];this[_0xe0e0('0x8e')]=_0x4742ba;this['type']='system';this[_0xe0e0('0x8f')]=_0xe0e0('0x90');this[_0xe0e0('0x68')]=_0x4d350f['id'];this[_0xe0e0('0x88')]=_0x316a6e;this[_0xe0e0('0x91')]=_0x4349a6;}function createExtensionsReciveFax(_0x21ae15){var _0x27a3b1=0x1;var _0x344c56=[];_0x344c56['push'](new Extension(_0x21ae15,_0x27a3b1,'',_0xe0e0('0x92')));_0x27a3b1+=0x1;_0x344c56[_0xe0e0('0x93')](new Extension(_0x21ae15,_0x27a3b1,_0xe0e0('0x94'),_0xe0e0('0x95')));_0x27a3b1+=0x1;for(var _0x5945b4 in _0x21ae15){if(_0x21ae15['hasOwnProperty'](_0x5945b4)&&(_0x5945b4==='ecm'||_0x5945b4==='localstationid'||_0x5945b4==='gateway'||_0x5945b4===_0xe0e0('0x96')||_0x5945b4===_0xe0e0('0x97')||_0x5945b4===_0xe0e0('0x98')||_0x5945b4==='minrate'||_0x5945b4===_0xe0e0('0x99')||_0x5945b4===_0xe0e0('0x9a'))){_0x344c56[_0xe0e0('0x93')](new Extension(_0x21ae15,_0x27a3b1,'FAXOPT('+_0x5945b4+')='+_0x21ae15[_0x5945b4],_0xe0e0('0x95')));_0x27a3b1+=0x1;}}_0x344c56[_0xe0e0('0x93')](new Extension(_0x21ae15,_0x27a3b1,'6','Wait'));_0x27a3b1+=0x1;_0x344c56['push'](new Extension(_0x21ae15,_0x27a3b1,'/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',_0xe0e0('0x9b')));_0x27a3b1=0x0;return _0x344c56;}exports[_0xe0e0('0x9c')]=function(_0x452b2a,_0x3c5ccd,_0xd43a1c){var _0x3e696e;return db[_0xe0e0('0x80')][_0xe0e0('0x81')](function(_0x1f70ec){return db[_0xe0e0('0x46')][_0xe0e0('0x60')](_0x452b2a['body'],{'transaction':_0x1f70ec})[_0xe0e0('0x24')](function(_0x4b4864){_0x3e696e=_0x4b4864[_0xe0e0('0x3b')]({'plain':!![]});return db[_0xe0e0('0x9d')][_0xe0e0('0x86')](createExtensionsReciveFax(_0x3e696e),{'transaction':_0x1f70ec});});})[_0xe0e0('0x24')](function(){return _0x3e696e;})[_0xe0e0('0x24')](respondWithResult(_0x3c5ccd,null))[_0xe0e0('0x2f')](handleError(_0x3c5ccd,null));};exports[_0xe0e0('0x9e')]=function(_0x5103d7,_0x1fe188,_0x231f95){var _0x507b86;return db[_0xe0e0('0x80')]['transaction'](function(_0xc98fbb){return db[_0xe0e0('0x46')][_0xe0e0('0x39')](_0x5103d7[_0xe0e0('0x61')],{'where':{'id':_0x5103d7['body']['id']},'transaction':_0xc98fbb})['then'](function(_0x361315){return db[_0xe0e0('0x9d')][_0xe0e0('0x3a')]({'where':{'FaxAccountId':_0x5103d7['body']['id']},'transaction':_0xc98fbb})[_0xe0e0('0x24')](function(_0x5559eb){return db[_0xe0e0('0x9d')][_0xe0e0('0x86')](createExtensionsReciveFax(_[_0xe0e0('0x76')](_0x5103d7[_0xe0e0('0x61')],[_0xe0e0('0x9f'),_0xe0e0('0x4a'),_0xe0e0('0xa0'),_0xe0e0('0xa1'),_0xe0e0('0xa2'),'ListId'])),{'transaction':_0xc98fbb});});});})[_0xe0e0('0x24')](function(){return db[_0xe0e0('0x46')]['findById'](_0x5103d7[_0xe0e0('0x61')]['id']);})[_0xe0e0('0x24')](respondWithResult(_0x1fe188,null))[_0xe0e0('0x2f')](handleError(_0x1fe188,null));};exports[_0xe0e0('0xa3')]=function(_0x2506eb,_0x439bd7,_0x402e4b){var _0x45b3bb={'raw':!![],'where':{}};var _0x16a25d={};var _0x6ae93={'count':0x0,'rows':[]};return db[_0xe0e0('0x46')]['findOne']({'where':{'id':_0x2506eb[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x439bd7,null))[_0xe0e0('0x24')](function(_0x1ad675){if(_0x1ad675){_0x16a25d[_0xe0e0('0x4b')]=_[_0xe0e0('0x4d')](db[_0xe0e0('0xa4')][_0xe0e0('0x47')]);_0x16a25d['query']=_['keys'](_0x2506eb[_0xe0e0('0x4c')]);_0x16a25d['filters']=_[_0xe0e0('0x4f')](_0x16a25d[_0xe0e0('0x4b')],_0x16a25d[_0xe0e0('0x4c')]);_0x45b3bb[_0xe0e0('0x50')]=_[_0xe0e0('0x4f')](_0x16a25d[_0xe0e0('0x4b')],qs[_0xe0e0('0x51')](_0x2506eb[_0xe0e0('0x4c')][_0xe0e0('0x51')]));_0x45b3bb[_0xe0e0('0x50')]=_0x45b3bb['attributes'][_0xe0e0('0x52')]?_0x45b3bb[_0xe0e0('0x50')]:_0x16a25d[_0xe0e0('0x4b')];if(!_0x2506eb[_0xe0e0('0x4c')][_0xe0e0('0x53')](_0xe0e0('0x6c'))){_0x45b3bb[_0xe0e0('0x34')]=qs[_0xe0e0('0x34')](_0x2506eb['query'][_0xe0e0('0x34')]);_0x45b3bb[_0xe0e0('0x32')]=qs[_0xe0e0('0x32')](_0x2506eb['query']['offset']);}_0x45b3bb[_0xe0e0('0x54')]=qs[_0xe0e0('0x55')](_0x2506eb['query'][_0xe0e0('0x55')]);_0x45b3bb[_0xe0e0('0x58')]=qs[_0xe0e0('0x4e')](_['pick'](_0x2506eb[_0xe0e0('0x4c')],_0x16a25d[_0xe0e0('0x4e')]));_0x45b3bb[_0xe0e0('0x58')][_0xe0e0('0x68')]=_0x1ad675['id'];if(_0x2506eb[_0xe0e0('0x4c')][_0xe0e0('0x57')]){_0x45b3bb[_0xe0e0('0x58')]=_['merge'](_0x45b3bb[_0xe0e0('0x58')],{'$or':_[_0xe0e0('0x45')](_0x45b3bb[_0xe0e0('0x50')],function(_0x56a299){var _0x3c029e={};_0x3c029e[_0x56a299]={'$like':'%'+_0x2506eb['query'][_0xe0e0('0x57')]+'%'};return _0x3c029e;})});}if(_0x2506eb[_0xe0e0('0x4c')][_0xe0e0('0xa5')]){var _0x557d9b=_0x2506eb[_0xe0e0('0x4c')]['$gte'][_0xe0e0('0xa6')](',');var _0x46d65e={};_0x46d65e[_0x557d9b[0x0]]={'$gte':moment(_0x557d9b[0x1])['format'](_0xe0e0('0xa7'))};_0x45b3bb[_0xe0e0('0x58')]=_[_0xe0e0('0x59')](_0x45b3bb['where'],_0x46d65e);}_0x45b3bb=_[_0xe0e0('0x59')]({},_0x45b3bb,_0x2506eb[_0xe0e0('0x6d')]);return db[_0xe0e0('0xa4')]['count']({'where':_0x45b3bb['where']})[_0xe0e0('0x24')](function(_0x51e31b){_0x6ae93[_0xe0e0('0x35')]=_0x51e31b;if(_0x2506eb[_0xe0e0('0x4c')][_0xe0e0('0x5b')]){_0x45b3bb[_0xe0e0('0x6e')]=[{'all':!![]}];}return db[_0xe0e0('0xa4')]['findAll'](_0x45b3bb);})[_0xe0e0('0x24')](function(_0x14b3df){_0x6ae93[_0xe0e0('0x5d')]=_0x14b3df;return _0x6ae93;});}})[_0xe0e0('0x24')](respondWithFilteredResult(_0x439bd7,_0x45b3bb))['catch'](handleError(_0x439bd7,null));};exports['send']=function(_0x382811,_0x4188d4,_0x1a644e){var _0x3ae6a2,_0x4cda36={},_0x1c2c46;if(_0x382811[_0xe0e0('0x61')]['to']){_0x1c2c46=_0x382811[_0xe0e0('0x61')]['to'][0x0];}return db[_0xe0e0('0x46')][_0xe0e0('0x5f')]({'where':{'id':_0x382811[_0xe0e0('0x5e')]['id']},'include':[{'model':db[_0xe0e0('0xa8')],'as':_0xe0e0('0xa9'),'include':[{'model':db[_0xe0e0('0x78')],'as':_0xe0e0('0xaa'),'where':{'fax':_0x1c2c46},'limit':0x1,'order':[[_0xe0e0('0xa1'),_0xe0e0('0xab')]]}]}]})[_0xe0e0('0x24')](handleEntityNotFound(_0x4188d4,null))[_0xe0e0('0x24')](function(_0x5bd353){_0x3ae6a2=_0x5bd353;if(_0x382811['body'][_0xe0e0('0xac')]&&_0x382811[_0xe0e0('0x61')]['attachments'][_0xe0e0('0x52')]){for(var _0xb73585=0x0;_0xb73585<_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')]['length'];_0xb73585+=0x1){_0x382811['body'][_0xe0e0('0xac')][_0xb73585]={'filename':_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][_0xb73585][_0xe0e0('0x41')],'id':_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][_0xb73585]['id'],'path':path[_0xe0e0('0xad')](config['root'],_0xe0e0('0xae'),_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][_0xb73585]['basename'])};}}return respondWithRpcPromise('CheckAfterSend',_0xe0e0('0xaf'),{'FaxAccountId':_['isNil'](_0x382811['params']['id'])?undefined:_0x382811[_0xe0e0('0x5e')]['id'],'path':_[_0xe0e0('0xb0')](_0x382811['body'][_0xe0e0('0xac')][0x0]['path'])?undefined:_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][0x0][_0xe0e0('0x8')],'fax':_[_0xe0e0('0xb0')](_0x382811[_0xe0e0('0x61')]['to'][0x0])?undefined:_0x382811[_0xe0e0('0x61')]['to'][0x0]},client9002);})[_0xe0e0('0x24')](function(){if(_0x3ae6a2){if(_[_0xe0e0('0xb0')](_0x382811[_0xe0e0('0x61')]['from'])){_0x382811[_0xe0e0('0x61')][_0xe0e0('0xb1')]=util[_0xe0e0('0xb2')](_0xe0e0('0xb3'),_0x3ae6a2[_0xe0e0('0x41')],_0x3ae6a2[_0xe0e0('0xb4')]);}if(_0x3ae6a2[_0xe0e0('0xa9')]){if(_0x3ae6a2[_0xe0e0('0xa9')][_0xe0e0('0xaa')]['length']){return _0x3ae6a2[_0xe0e0('0xa9')][_0xe0e0('0xaa')][0x0];}else{return db[_0xe0e0('0x78')][_0xe0e0('0x60')](_['defaults'](_0x382811['body'],{'firstName':_0x382811[_0xe0e0('0x61')]['to'][0x0],'phone':_0x382811[_0xe0e0('0x61')]['to'][0x0],'fax':_0x382811[_0xe0e0('0x61')]['to'][0x0],'ListId':_0x3ae6a2['ListId']}));}}else{throw new Error(_0xe0e0('0xb5'));}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x442512){if(_0x442512){return db[_0xe0e0('0x7e')]['find']({'where':{'ContactId':_0x442512['id'],'closed':![],'FaxAccountId':_0x3ae6a2['id']}})[_0xe0e0('0x24')](function(_0x58b6a2){if(_0x58b6a2){return[_0x58b6a2,![]];}return db[_0xe0e0('0x7e')][_0xe0e0('0x60')]({'UserId':_0x382811['user']['id'],'ContactId':_0x442512['id'],'FaxAccountId':_0x3ae6a2['id'],'fax':_0x382811[_0xe0e0('0x61')]['to'][0x0],'firstMsgDirection':_0xe0e0('0xb6'),'Messages':[_[_0xe0e0('0x59')](_0x382811[_0xe0e0('0x61')],{'read':![],'body':_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][0x0]['filename'],'FaxAccountId':_0x3ae6a2['id'],'UserId':_0x382811[_0xe0e0('0x62')]['id'],'ContactId':_0x442512['id'],'AttachmentId':_0x382811['body']['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xe0e0('0xa4')],'as':_0xe0e0('0xb7')}]})[_0xe0e0('0x24')](function(_0x5a6a59){return[_0x5a6a59,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xe0e0('0xb8')](function(_0x4740c3,_0x2ca24){if(_0x2ca24){return _0x4740c3;}return db[_0xe0e0('0xa4')][_0xe0e0('0x60')]({'direction':'out','read':![],'body':_0x382811[_0xe0e0('0x61')]['attachments'][0x0][_0xe0e0('0xb9')],'FaxAccountId':_0x3ae6a2['id'],'FaxInteractionId':_0x4740c3['id'],'UserId':_0x382811['user']['id'],'ContactId':_0x4740c3[_0xe0e0('0xba')],'AttachmentId':_0x382811[_0xe0e0('0x61')]['attachments'][0x0]['id']})[_0xe0e0('0x24')](function(_0x52743c){_0x4740c3[_0xe0e0('0xbb')][_0xe0e0('0xb7')]=[];_0x4740c3[_0xe0e0('0xbb')][_0xe0e0('0xb7')][_0xe0e0('0x93')](_0x52743c[_0xe0e0('0xbb')]);return _0x4740c3;});})['then'](function(_0xef085f){respondWithRpcPromise(_0xe0e0('0xbc'),_0xe0e0('0xbc'),{'FaxAccountId':_['isNil'](_0x382811[_0xe0e0('0x5e')]['id'])?undefined:_0x382811[_0xe0e0('0x5e')]['id'],'path':_[_0xe0e0('0xb0')](_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][0x0][_0xe0e0('0x8')])?undefined:_0x382811['body'][_0xe0e0('0xac')][0x0][_0xe0e0('0x8')],'fax':_[_0xe0e0('0xb0')](_0x382811['body']['to'][0x0])?undefined:_0x382811['body']['to'][0x0],'AttachmentId':_0x382811[_0xe0e0('0x61')][_0xe0e0('0xac')][0x0]['id']},client9002)[_0xe0e0('0x24')](function(_0x3898c6){logger['info'](_0xe0e0('0xbd'),_0x3898c6);})[_0xe0e0('0x2f')](function(_0x5588b1){logger[_0xe0e0('0x25')](_0xe0e0('0xbd'),_0x5588b1);});return _0xef085f;})['then'](respondWithResult(_0x4188d4,null))[_0xe0e0('0x2f')](handleError(_0x4188d4,null));};exports['addAgents']=function(_0x263c09,_0x58d594,_0x3f54b1){return db['FaxAccount'][_0xe0e0('0x5f')]({'where':{'id':_0x263c09['params']['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x58d594,null))[_0xe0e0('0x24')](function(_0x29e379){if(_0x29e379){return _0x29e379[_0xe0e0('0xbe')](_0x263c09['body'][_0xe0e0('0x70')],_[_0xe0e0('0x76')](_0x263c09['body'],[_0xe0e0('0x70'),'id'])||{})[_0xe0e0('0xb8')](function(_0x87d836){for(var _0x2f226f=0x0;_0x2f226f<_0x263c09[_0xe0e0('0x61')][_0xe0e0('0x70')]['length'];_0x2f226f+=0x1){socket[_0xe0e0('0xbf')](_0xe0e0('0xc0'),{'UserId':Number(_0x263c09[_0xe0e0('0x61')]['ids'][_0x2f226f]),'FaxAccountId':Number(_0x263c09[_0xe0e0('0x5e')]['id'])});}return _0x87d836;});}})[_0xe0e0('0x24')](respondWithResult(_0x58d594,null))['catch'](handleError(_0x58d594,null));};exports[_0xe0e0('0xc1')]=function(_0x46987f,_0x3a667f,_0x3d4c4b){return db[_0xe0e0('0x46')]['find']({'where':{'id':_0x46987f[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x3a667f,null))[_0xe0e0('0x24')](function(_0x1ab0bf){if(_0x1ab0bf){return _0x1ab0bf[_0xe0e0('0xc1')](_0x46987f[_0xe0e0('0x4c')][_0xe0e0('0x70')])[_0xe0e0('0x24')](function(){if(_[_0xe0e0('0xc2')](_0x46987f[_0xe0e0('0x4c')][_0xe0e0('0x70')])){for(var _0x541ff5=0x0;_0x541ff5<_0x46987f['query'][_0xe0e0('0x70')][_0xe0e0('0x52')];_0x541ff5+=0x1){socket[_0xe0e0('0xbf')](_0xe0e0('0xc3'),{'UserId':Number(_0x46987f[_0xe0e0('0x4c')][_0xe0e0('0x70')][_0x541ff5]),'FaxAccountId':Number(_0x46987f['params']['id'])});}}else{socket[_0xe0e0('0xbf')]('userFaxAccount:remove',{'UserId':Number(_0x46987f[_0xe0e0('0x4c')]['ids']),'FaxAccountId':Number(_0x46987f[_0xe0e0('0x5e')]['id'])});}});}})[_0xe0e0('0x24')](respondWithStatusCode(_0x3a667f,null))[_0xe0e0('0x2f')](handleError(_0x3a667f,null));};exports['getAgents']=function(_0x3225d6,_0x598cb4,_0x28bcda){var _0x4f26e2={};var _0xf08563={};var _0x25c280;var _0x4daa7a;return db[_0xe0e0('0x46')][_0xe0e0('0x6b')]({'where':{'id':_0x3225d6[_0xe0e0('0x5e')]['id']}})[_0xe0e0('0x24')](handleEntityNotFound(_0x598cb4,null))['then'](function(_0x39eb6d){if(_0x39eb6d){_0x25c280=_0x39eb6d;_0xf08563['model']=_[_0xe0e0('0x4d')](db[_0xe0e0('0xc4')]['rawAttributes']);_0xf08563['query']=_[_0xe0e0('0x4d')](_0x3225d6[_0xe0e0('0x4c')]);_0xf08563[_0xe0e0('0x4e')]=_[_0xe0e0('0x4f')](_0xf08563['model'],_0xf08563[_0xe0e0('0x4c')]);_0x4f26e2[_0xe0e0('0x50')]=_[_0xe0e0('0x4f')](_0xf08563['model'],qs[_0xe0e0('0x51')](_0x3225d6[_0xe0e0('0x4c')][_0xe0e0('0x51')]));_0x4f26e2[_0xe0e0('0x50')]=_0x4f26e2[_0xe0e0('0x50')][_0xe0e0('0x52')]?_0x4f26e2[_0xe0e0('0x50')]:_0xf08563[_0xe0e0('0x4b')];_0x4f26e2['order']=qs[_0xe0e0('0x55')](_0x3225d6['query'][_0xe0e0('0x55')]);_0x4f26e2[_0xe0e0('0x58')]=qs[_0xe0e0('0x4e')](_[_0xe0e0('0x56')](_0x3225d6[_0xe0e0('0x4c')],_0xf08563[_0xe0e0('0x4e')]));if(_0x3225d6[_0xe0e0('0x4c')][_0xe0e0('0x57')]){_0x4f26e2['where']=_[_0xe0e0('0x59')](_0x4f26e2['where'],{'$or':_[_0xe0e0('0x45')](_0x4f26e2[_0xe0e0('0x50')],function(_0x16ffa4){var _0x5f3ea3={};_0x5f3ea3[_0x16ffa4]={'$like':'%'+_0x3225d6[_0xe0e0('0x4c')][_0xe0e0('0x57')]+'%'};return _0x5f3ea3;})});}_0x4f26e2=_[_0xe0e0('0x59')]({},_0x4f26e2,_0x3225d6[_0xe0e0('0x6d')]);return _0x25c280['getAgents'](_0x4f26e2);}})[_0xe0e0('0x24')](function(_0x551576){if(_0x551576){_0x4daa7a=_0x551576[_0xe0e0('0x52')];if(!_0x3225d6[_0xe0e0('0x4c')][_0xe0e0('0x53')](_0xe0e0('0x6c'))){_0x4f26e2[_0xe0e0('0x34')]=qs[_0xe0e0('0x34')](_0x3225d6[_0xe0e0('0x4c')]['limit']);_0x4f26e2[_0xe0e0('0x32')]=qs[_0xe0e0('0x32')](_0x3225d6[_0xe0e0('0x4c')][_0xe0e0('0x32')]);}return _0x25c280[_0xe0e0('0xc5')](_0x4f26e2);}})[_0xe0e0('0x24')](function(_0x4c2def){if(_0x4c2def){return _0x4c2def?{'count':_0x4daa7a,'rows':_0x4c2def}:null;}})[_0xe0e0('0x24')](respondWithResult(_0x598cb4,null))[_0xe0e0('0x2f')](handleError(_0x598cb4,null));};
\ No newline at end of file
index f9a21a9..69ffc3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc6=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x8a9206,_0x4d3257){var _0x1fcd30=function(_0x12fe42){while(--_0x12fe42){_0x8a9206['push'](_0x8a9206['shift']());}};_0x1fcd30(++_0x4d3257);}(_0xafc6,0x180));var _0x6afc=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xafc6[_0x1b6186];return _0x186121;};'use strict';var EventEmitter=require(_0x6afc('0x0'));var FaxAccount=require(_0x6afc('0x1'))['db'][_0x6afc('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x6afc('0x3')](0x0);var events={'afterCreate':_0x6afc('0x4'),'afterUpdate':_0x6afc('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2c17ee){return function(_0x4d6496,_0x53cb19,_0x2a7563){FaxAccountEvents[_0x6afc('0x6')](_0x2c17ee+':'+_0x4d6496['id'],_0x4d6496);FaxAccountEvents[_0x6afc('0x6')](_0x2c17ee,_0x4d6496);_0x2a7563(null);};}for(var e in events){if(events[_0x6afc('0x7')](e)){var event=events[e];FaxAccount[_0x6afc('0x8')](e,emitEvent(event));}}module[_0x6afc('0x9')]=FaxAccountEvents;
\ No newline at end of file
+var _0xbac2=['events','../../mysqldb','FaxAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x145376,_0x2454aa){var _0x2252ed=function(_0x5930b5){while(--_0x5930b5){_0x145376['push'](_0x145376['shift']());}};_0x2252ed(++_0x2454aa);}(_0xbac2,0xc6));var _0x2bac=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0xbac2[_0x2ec461];return _0x28603d;};'use strict';var EventEmitter=require(_0x2bac('0x0'));var FaxAccount=require(_0x2bac('0x1'))['db'][_0x2bac('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x2bac('0x3')](0x0);var events={'afterCreate':_0x2bac('0x4'),'afterUpdate':_0x2bac('0x5'),'afterDestroy':_0x2bac('0x6')};function emitEvent(_0x1e515c){return function(_0x5ef5aa,_0xde7e4c,_0x15342d){FaxAccountEvents['emit'](_0x1e515c+':'+_0x5ef5aa['id'],_0x5ef5aa);FaxAccountEvents[_0x2bac('0x7')](_0x1e515c,_0x5ef5aa);_0x15342d(null);};}for(var e in events){if(events[_0x2bac('0x8')](e)){var event=events[e];FaxAccount[_0x2bac('0x9')](e,emitEvent(event));}}module[_0x2bac('0xa')]=FaxAccountEvents;
\ No newline at end of file
index e8a7368..60ce1fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7b=['define','FaxAccount','fax_accounts','lodash','util','../../config/logger','request-promise','path','rimraf','./faxAccount.attributes'];(function(_0xe7e9dd,_0x5531b9){var _0x1fb3b7=function(_0x2fa442){while(--_0x2fa442){_0xe7e9dd['push'](_0xe7e9dd['shift']());}};_0x1fb3b7(++_0x5531b9);}(_0xaa7b,0x16b));var _0xbaa7=function(_0x47e3ce,_0x21e4fb){_0x47e3ce=_0x47e3ce-0x0;var _0x3b224=_0xaa7b[_0x47e3ce];return _0x3b224;};'use strict';var _=require(_0xbaa7('0x0'));var util=require(_0xbaa7('0x1'));var logger=require(_0xbaa7('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbaa7('0x3'));var fs=require('fs');var path=require(_0xbaa7('0x4'));var rimraf=require(_0xbaa7('0x5'));var config=require('../../config/environment');var attributes=require(_0xbaa7('0x6'));module['exports']=function(_0x29a37a,_0x3f2624){return _0x29a37a[_0xbaa7('0x7')](_0xbaa7('0x8'),attributes,{'tableName':_0xbaa7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x120e=['util','../../config/logger','api','bluebird','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash'];(function(_0x2e4846,_0x362366){var _0x2bd8db=function(_0x10c0ea){while(--_0x10c0ea){_0x2e4846['push'](_0x2e4846['shift']());}};_0x2bd8db(++_0x362366);}(_0x120e,0x117));var _0xe120=function(_0x3a8634,_0x3ab737){_0x3a8634=_0x3a8634-0x0;var _0x1cf7d2=_0x120e[_0x3a8634];return _0x1cf7d2;};'use strict';var _=require(_0xe120('0x0'));var util=require(_0xe120('0x1'));var logger=require(_0xe120('0x2'))(_0xe120('0x3'));var moment=require('moment');var BPromise=require(_0xe120('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe120('0x5'));var attributes=require(_0xe120('0x6'));module[_0xe120('0x7')]=function(_0x196ecc,_0x52b956){return _0x196ecc['define'](_0xe120('0x8'),attributes,{'tableName':_0xe120('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 54156b4..0c3cd3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd91=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetFaxAccount','FaxAccount','findAll','options','raw','attributes','limit','map','include','model','then','catch','NotifyFaxAccount','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','keys','CompanyId','ListId','isNil','body','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','updatedAt','FaxApplication','Applications','applications','list','orderBy','priority','length','contact','FaxInteraction','create','Contact\x20not\x20found','get','autoclose','push','close','unmanaged','created','FaxMessage','ContactId','interaction','UserId','User','find','name','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','lodash','moment'];(function(_0x210ed4,_0x9fc61e){var _0x261bb8=function(_0x5f187d){while(--_0x5f187d){_0x210ed4['push'](_0x210ed4['shift']());}};_0x261bb8(++_0x9fc61e);}(_0xfd91,0x112));var _0x1fd9=function(_0x57eb23,_0x1c95fe){_0x57eb23=_0x57eb23-0x0;var _0x388e2c=_0xfd91[_0x57eb23];return _0x388e2c;};'use strict';var _=require(_0x1fd9('0x0'));var util=require('util');var moment=require(_0x1fd9('0x1'));var BPromise=require('bluebird');var rs=require(_0x1fd9('0x2'));var fs=require('fs');var Redis=require(_0x1fd9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1fd9('0x4'));var logger=require(_0x1fd9('0x5'))(_0x1fd9('0x6'));var config=require(_0x1fd9('0x7'));var jayson=require(_0x1fd9('0x8'));var client=jayson[_0x1fd9('0x9')][_0x1fd9('0xa')]({'port':0x232c});config[_0x1fd9('0xb')]=_[_0x1fd9('0xc')](config[_0x1fd9('0xb')],{'host':_0x1fd9('0xd'),'port':0x18eb});var socket=require(_0x1fd9('0xe'))(new Redis(config[_0x1fd9('0xb')]));require(_0x1fd9('0xf'))[_0x1fd9('0x10')](socket);function respondWithRpcPromise(_0xd0fba5,_0x4d1119,_0x26344a){return new BPromise(function(_0x1680bf,_0x5a4cd9){return client[_0x1fd9('0x11')](_0xd0fba5,_0x26344a)['then'](function(_0x4f89ce){logger[_0x1fd9('0x12')](_0x1fd9('0x13'),_0x4d1119,'request\x20sent');logger[_0x1fd9('0x14')](_0x1fd9('0x15'),_0x4d1119,_0x1fd9('0x16'),JSON[_0x1fd9('0x17')](_0x4f89ce));if(_0x4f89ce[_0x1fd9('0x18')]){if(_0x4f89ce[_0x1fd9('0x18')][_0x1fd9('0x19')]===0x1f4){logger[_0x1fd9('0x18')](_0x1fd9('0x13'),_0x4d1119,_0x4f89ce[_0x1fd9('0x18')]['message']);return _0x5a4cd9(_0x4f89ce[_0x1fd9('0x18')]['message']);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x4d1119,_0x4f89ce['error'][_0x1fd9('0x1a')]);return _0x1680bf(_0x4f89ce['error'][_0x1fd9('0x1a')]);}else{logger[_0x1fd9('0x12')](_0x1fd9('0x13'),_0x4d1119,_0x1fd9('0x16'));_0x1680bf(_0x4f89ce[_0x1fd9('0x1b')][_0x1fd9('0x1a')]);}})['catch'](function(_0x219478){logger[_0x1fd9('0x18')](_0x1fd9('0x13'),_0x4d1119,_0x219478);_0x5a4cd9(_0x219478);});});}exports[_0x1fd9('0x1c')]=function(_0x30ea4a){var _0xe12f51=this;return new Promise(function(_0xbd4a93,_0x47af6c){return db[_0x1fd9('0x1d')][_0x1fd9('0x1e')]({'raw':_0x30ea4a[_0x1fd9('0x1f')]?_0x30ea4a[_0x1fd9('0x1f')][_0x1fd9('0x20')]===undefined?!![]:![]:!![],'where':_0x30ea4a[_0x1fd9('0x1f')]?_0x30ea4a[_0x1fd9('0x1f')]['where']||null:null,'attributes':_0x30ea4a[_0x1fd9('0x1f')]?_0x30ea4a['options'][_0x1fd9('0x21')]||null:null,'limit':_0x30ea4a[_0x1fd9('0x1f')]?_0x30ea4a['options'][_0x1fd9('0x22')]||null:null,'include':_0x30ea4a[_0x1fd9('0x1f')]?_0x30ea4a[_0x1fd9('0x1f')]['include']?_[_0x1fd9('0x23')](_0x30ea4a['options']['include'],function(_0x2515d9){return{'model':db[_0x2515d9['model']],'as':_0x2515d9['as'],'attributes':_0x2515d9['attributes'],'include':_0x2515d9[_0x1fd9('0x24')]?_[_0x1fd9('0x23')](_0x2515d9[_0x1fd9('0x24')],function(_0xf6aeaf){return{'model':db[_0xf6aeaf[_0x1fd9('0x25')]],'as':_0xf6aeaf['as'],'attributes':_0xf6aeaf[_0x1fd9('0x21')],'include':_0xf6aeaf[_0x1fd9('0x24')]?_[_0x1fd9('0x23')](_0xf6aeaf['include'],function(_0x42e01e){return{'model':db[_0x42e01e['model']],'as':_0x42e01e['as'],'attributes':_0x42e01e[_0x1fd9('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1fd9('0x26')](function(_0x1140ab){logger[_0x1fd9('0x12')](_0x1fd9('0x1c'),_0x30ea4a);logger[_0x1fd9('0x14')](_0x1fd9('0x1c'),_0x30ea4a,JSON['stringify'](_0x1140ab));_0xbd4a93(_0x1140ab);})[_0x1fd9('0x27')](function(_0x4f496f){logger['error'](_0x1fd9('0x1c'),_0x4f496f[_0x1fd9('0x1a')],_0x30ea4a);_0x47af6c(_0xe12f51['error'](0x1f4,_0x4f496f[_0x1fd9('0x1a')]));});});};exports[_0x1fd9('0x28')]=function(_0x363436,_0x3f686e,_0x2eb5a4){var _0x4df76b=this;return new Promise(function(_0x476e24,_0x2099aa){var _0x1fb945={'body':_0x363436['body'],'channel':_0x1fd9('0x29')};var _0x2f58ea=[];var _0x13c028=[];var _0x3485b2={};return db[_0x1fd9('0x2a')][_0x1fd9('0x2b')]()['then'](function(_0x4b37c3){if(!_0x4b37c3){throw new db[(_0x1fd9('0x2c'))][(_0x1fd9('0x2d'))](_0x1fd9('0x2e'));}_0x2f58ea=_[_0x1fd9('0x2f')](_['keys'](_0x4b37c3),[_0x1fd9('0x30'),'updatedAt']);_0x13c028=_[_0x1fd9('0x2f')](_[_0x1fd9('0x31')](_0x4b37c3),[_0x1fd9('0x30'),'updatedAt',_0x1fd9('0x32'),_0x1fd9('0x33')]);if(_0x363436['body']['id']){delete _0x363436['body']['id'];}if(_[_0x1fd9('0x34')](_0x363436[_0x1fd9('0x35')][_0x1fd9('0x36')])){throw new db[(_0x1fd9('0x2c'))][(_0x1fd9('0x2d'))]('from\x20is\x20mandatory');}if(_[_0x1fd9('0x34')](_0x363436['body'][_0x1fd9('0x35')])||_0x363436[_0x1fd9('0x35')][_0x1fd9('0x35')]===''){throw new db[(_0x1fd9('0x2c'))][(_0x1fd9('0x2d'))](_0x1fd9('0x37'));}if(_['isNil'](_0x363436[_0x1fd9('0x35')][_0x1fd9('0x38')])){throw new db[(_0x1fd9('0x2c'))][(_0x1fd9('0x2d'))](_0x1fd9('0x39')+_0x13c028);}if(!_['includes'](_0x13c028,_0x363436[_0x1fd9('0x35')]['mapKey'])){throw new db['Sequelize'][(_0x1fd9('0x2d'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x13c028);}_0x3485b2[_0x363436[_0x1fd9('0x35')][_0x1fd9('0x38')]]=_0x363436['body'][_0x1fd9('0x36')];})[_0x1fd9('0x26')](function(){return db['FaxAccount']['find']({'where':{'id':_0x363436[_0x1fd9('0x3a')]['id']},'include':[{'model':db[_0x1fd9('0x3b')],'as':_0x1fd9('0x3c'),'include':[{'model':db['CmContact'],'as':_0x1fd9('0x3d'),'where':_0x3485b2,'limit':0x1,'order':[[_0x1fd9('0x3e'),'DESC']]}]},{'model':db[_0x1fd9('0x3f')],'as':_0x1fd9('0x40')}]});})[_0x1fd9('0x26')](function(_0x27a34e){if(_0x27a34e&&_0x27a34e[_0x1fd9('0x3c')]){var _0x21d158=_0x27a34e['get']({'plain':!![]});_0x1fb945[_0x1fd9('0x3a')]=_0x21d158;_0x1fb945[_0x1fd9('0x41')]=_0x21d158[_0x1fd9('0x40')];_0x1fb945[_0x1fd9('0x42')]=_0x21d158[_0x1fd9('0x3c')];_0x1fb945['applications']=_[_0x1fd9('0x43')](_0x1fb945[_0x1fd9('0x41')],[_0x1fd9('0x44')],['asc']);if(_0x1fb945[_0x1fd9('0x3a')][_0x1fd9('0x40')]){delete _0x1fb945[_0x1fd9('0x3a')]['Applications'];}if(_0x1fb945[_0x1fd9('0x3a')][_0x1fd9('0x3c')]&&_0x1fb945[_0x1fd9('0x3a')][_0x1fd9('0x3c')]['Contacts'][_0x1fd9('0x45')]){return _0x1fb945[_0x1fd9('0x3a')][_0x1fd9('0x3c')][_0x1fd9('0x3d')][0x0];}var _0x1e3528=_[_0x1fd9('0xc')](_0x363436['body'],{'firstName':_0x363436[_0x1fd9('0x35')]['from'],'ListId':_0x21d158[_0x1fd9('0x33')]});_0x1e3528[_0x363436[_0x1fd9('0x35')][_0x1fd9('0x38')]]=_0x363436[_0x1fd9('0x35')]['from'];return db['CmContact']['create'](_0x1e3528,{'fields':_0x2f58ea,'raw':!![]});}})[_0x1fd9('0x26')](function(_0x22f548){_0x1fb945[_0x1fd9('0x46')]=_0x22f548;if(_0x22f548){var _0x443a81={'ContactId':_0x22f548['id'],'FaxAccountId':_0x363436[_0x1fd9('0x3a')]['id'],'fax':_0x22f548[_0x1fd9('0x29')]};return db[_0x1fd9('0x47')]['find']({'where':{'ContactId':_0x22f548['id'],'closed':![],'FaxAccountId':_0x363436['account']['id']}})['then'](function(_0x20ce63){if(_0x20ce63){return[_0x20ce63,![]];}return db[_0x1fd9('0x47')][_0x1fd9('0x48')](_0x443a81)[_0x1fd9('0x26')](function(_0x509773){return[_0x509773,!![]];});});}else{throw new Error(_0x1fd9('0x49'));}})['spread'](function(_0x5b60b4,_0x4f012a){var _0x5d7b92=_0x5b60b4[_0x1fd9('0x4a')]({'plain':!![]});if(_0x4f012a){if(_0x1fb945[_0x1fd9('0x3a')][_0x1fd9('0x4b')]){_0x1fb945[_0x1fd9('0x41')][_0x1fd9('0x4c')]({'id':0x0,'priority':_0x1fb945[_0x1fd9('0x41')]['length']+0x1,'app':_0x1fd9('0x4d'),'appdata':_0x1fd9('0x4e'),'interval':'*,*,*,*'});}_0x5d7b92[_0x1fd9('0x4f')]=!![];}else{_0x5d7b92['created']=![];}_0x1fb945['interaction']=_0x5d7b92;return db[_0x1fd9('0x50')][_0x1fd9('0x48')]({'body':_0x363436['body'][_0x1fd9('0x35')],'FaxAccountId':_0x363436['account']['id'],'FaxInteractionId':_0x5b60b4['id'],'direction':'in','ContactId':_0x5b60b4[_0x1fd9('0x51')],'AttachmentId':_0x363436[_0x1fd9('0x35')]['AttachmentId']});})[_0x1fd9('0x26')](function(_0x31ef95){_0x1fb945[_0x1fd9('0x1a')]=_0x31ef95;if(_0x1fb945[_0x1fd9('0x52')][_0x1fd9('0x53')]){return db[_0x1fd9('0x54')][_0x1fd9('0x55')]({'attributes':['id',_0x1fd9('0x56')],'where':{'id':_0x1fb945[_0x1fd9('0x52')]['UserId']}})[_0x1fd9('0x26')](function(_0x461870){if(_0x461870){_0x1fb945[_0x1fd9('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':_0x1fd9('0x57'),'appdata':_0x461870['name']+','+(_0x1fb945[_0x1fd9('0x3a')][_0x1fd9('0x58')]||0xa),'interval':_0x1fd9('0x59')});}return respondWithRpcPromise(_0x1fd9('0x5a'),_0x1fd9('0x5b'),_0x1fb945);});}return respondWithRpcPromise(_0x1fd9('0x5a'),_0x1fd9('0x5b'),_0x1fb945);})[_0x1fd9('0x26')](function(_0x3f18e5){_0x476e24(_0x3f18e5);})[_0x1fd9('0x27')](function(_0x882928){_0x2099aa(_0x4df76b[_0x1fd9('0x18')](0x1f4,_0x882928['message']));});});};
\ No newline at end of file
+var _0xd0a0=['close','*,*,*,*','created','interaction','FaxMessage','ContactId','User','find','name','waitForTheAssignedAgent','startRouting','Start','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','request','info','FaxAccount,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','FaxAccount','findAll','options','raw','where','attributes','limit','include','model','map','then','GetFaxAccount','catch','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','Contacts','DESC','FaxApplication','Applications','List','get','applications','list','orderBy','priority','asc','length','ListId','create','contact','Contact\x20not\x20found','autoclose','push'];(function(_0x3bf745,_0x8ef4c){var _0x5505e6=function(_0xc6af){while(--_0xc6af){_0x3bf745['push'](_0x3bf745['shift']());}};_0x5505e6(++_0x8ef4c);}(_0xd0a0,0x117));var _0x0d0a=function(_0x3f5e06,_0x2d78a9){_0x3f5e06=_0x3f5e06-0x0;var _0x467d64=_0xd0a0[_0x3f5e06];return _0x467d64;};'use strict';var _=require(_0x0d0a('0x0'));var util=require(_0x0d0a('0x1'));var moment=require(_0x0d0a('0x2'));var BPromise=require('bluebird');var rs=require(_0x0d0a('0x3'));var fs=require('fs');var Redis=require(_0x0d0a('0x4'));var db=require(_0x0d0a('0x5'))['db'];var utils=require(_0x0d0a('0x6'));var logger=require(_0x0d0a('0x7'))('rpc');var config=require(_0x0d0a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0d0a('0x9')][_0x0d0a('0xa')]({'port':0x232c});config[_0x0d0a('0xb')]=_[_0x0d0a('0xc')](config['redis'],{'host':_0x0d0a('0xd'),'port':0x18eb});var socket=require(_0x0d0a('0xe'))(new Redis(config[_0x0d0a('0xb')]));require(_0x0d0a('0xf'))['register'](socket);function respondWithRpcPromise(_0x23a842,_0x213b75,_0x21a277){return new BPromise(function(_0x4bd07b,_0xfecf18){return client[_0x0d0a('0x10')](_0x23a842,_0x21a277)['then'](function(_0x3a8583){logger[_0x0d0a('0x11')](_0x0d0a('0x12'),_0x213b75,'request\x20sent');logger[_0x0d0a('0x13')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x213b75,'request\x20sent',JSON[_0x0d0a('0x14')](_0x3a8583));if(_0x3a8583[_0x0d0a('0x15')]){if(_0x3a8583[_0x0d0a('0x15')]['code']===0x1f4){logger['error'](_0x0d0a('0x12'),_0x213b75,_0x3a8583[_0x0d0a('0x15')][_0x0d0a('0x16')]);return _0xfecf18(_0x3a8583[_0x0d0a('0x15')][_0x0d0a('0x16')]);}logger['error'](_0x0d0a('0x12'),_0x213b75,_0x3a8583[_0x0d0a('0x15')][_0x0d0a('0x16')]);return _0x4bd07b(_0x3a8583[_0x0d0a('0x15')]['message']);}else{logger[_0x0d0a('0x11')](_0x0d0a('0x12'),_0x213b75,_0x0d0a('0x17'));_0x4bd07b(_0x3a8583['result'][_0x0d0a('0x16')]);}})['catch'](function(_0x25e889){logger[_0x0d0a('0x15')](_0x0d0a('0x12'),_0x213b75,_0x25e889);_0xfecf18(_0x25e889);});});}exports['GetFaxAccount']=function(_0x5776f9){var _0x58c01a=this;return new Promise(function(_0x8af6a,_0x14f5c9){return db[_0x0d0a('0x18')][_0x0d0a('0x19')]({'raw':_0x5776f9[_0x0d0a('0x1a')]?_0x5776f9[_0x0d0a('0x1a')][_0x0d0a('0x1b')]===undefined?!![]:![]:!![],'where':_0x5776f9['options']?_0x5776f9['options'][_0x0d0a('0x1c')]||null:null,'attributes':_0x5776f9[_0x0d0a('0x1a')]?_0x5776f9['options'][_0x0d0a('0x1d')]||null:null,'limit':_0x5776f9[_0x0d0a('0x1a')]?_0x5776f9[_0x0d0a('0x1a')][_0x0d0a('0x1e')]||null:null,'include':_0x5776f9['options']?_0x5776f9[_0x0d0a('0x1a')]['include']?_['map'](_0x5776f9[_0x0d0a('0x1a')][_0x0d0a('0x1f')],function(_0x8d30cd){return{'model':db[_0x8d30cd[_0x0d0a('0x20')]],'as':_0x8d30cd['as'],'attributes':_0x8d30cd[_0x0d0a('0x1d')],'include':_0x8d30cd[_0x0d0a('0x1f')]?_['map'](_0x8d30cd[_0x0d0a('0x1f')],function(_0x56446a){return{'model':db[_0x56446a[_0x0d0a('0x20')]],'as':_0x56446a['as'],'attributes':_0x56446a[_0x0d0a('0x1d')],'include':_0x56446a[_0x0d0a('0x1f')]?_[_0x0d0a('0x21')](_0x56446a[_0x0d0a('0x1f')],function(_0x3e6ca4){return{'model':db[_0x3e6ca4['model']],'as':_0x3e6ca4['as'],'attributes':_0x3e6ca4[_0x0d0a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0d0a('0x22')](function(_0x1793fd){logger[_0x0d0a('0x11')]('GetFaxAccount',_0x5776f9);logger[_0x0d0a('0x13')](_0x0d0a('0x23'),_0x5776f9,JSON['stringify'](_0x1793fd));_0x8af6a(_0x1793fd);})[_0x0d0a('0x24')](function(_0x34c7d4){logger[_0x0d0a('0x15')]('GetFaxAccount',_0x34c7d4['message'],_0x5776f9);_0x14f5c9(_0x58c01a[_0x0d0a('0x15')](0x1f4,_0x34c7d4[_0x0d0a('0x16')]));});});};exports[_0x0d0a('0x25')]=function(_0x5840a3,_0x1b1cef,_0x1c70d3){var _0x2c5a2b=this;return new Promise(function(_0x313dbe,_0x117049){var _0x6b07fd={'body':_0x5840a3[_0x0d0a('0x26')],'channel':_0x0d0a('0x27')};var _0x1940b7=[];var _0x10d414=[];var _0x102aea={};return db[_0x0d0a('0x28')][_0x0d0a('0x29')]()[_0x0d0a('0x22')](function(_0x111c26){if(!_0x111c26){throw new db[(_0x0d0a('0x2a'))][(_0x0d0a('0x2b'))](_0x0d0a('0x2c'));}_0x1940b7=_[_0x0d0a('0x2d')](_[_0x0d0a('0x2e')](_0x111c26),[_0x0d0a('0x2f'),_0x0d0a('0x30')]);_0x10d414=_[_0x0d0a('0x2d')](_[_0x0d0a('0x2e')](_0x111c26),[_0x0d0a('0x2f'),_0x0d0a('0x30'),_0x0d0a('0x31'),'ListId']);if(_0x5840a3['body']['id']){delete _0x5840a3[_0x0d0a('0x26')]['id'];}if(_[_0x0d0a('0x32')](_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x33')])){throw new db['Sequelize']['ValidationError']('from\x20is\x20mandatory');}if(_[_0x0d0a('0x32')](_0x5840a3['body'][_0x0d0a('0x26')])||_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x26')]===''){throw new db[(_0x0d0a('0x2a'))][(_0x0d0a('0x2b'))](_0x0d0a('0x34'));}if(_[_0x0d0a('0x32')](_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x35')])){throw new db[(_0x0d0a('0x2a'))][(_0x0d0a('0x2b'))](_0x0d0a('0x36')+_0x10d414);}if(!_[_0x0d0a('0x37')](_0x10d414,_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x35')])){throw new db[(_0x0d0a('0x2a'))][(_0x0d0a('0x2b'))](_0x0d0a('0x38')+_0x10d414);}_0x102aea[_0x5840a3[_0x0d0a('0x26')]['mapKey']]=_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x33')];})[_0x0d0a('0x22')](function(){return db[_0x0d0a('0x18')]['find']({'where':{'id':_0x5840a3[_0x0d0a('0x39')]['id']},'include':[{'model':db[_0x0d0a('0x3a')],'as':'List','include':[{'model':db['CmContact'],'as':_0x0d0a('0x3b'),'where':_0x102aea,'limit':0x1,'order':[['updatedAt',_0x0d0a('0x3c')]]}]},{'model':db[_0x0d0a('0x3d')],'as':_0x0d0a('0x3e')}]});})['then'](function(_0x1ce4dd){if(_0x1ce4dd&&_0x1ce4dd[_0x0d0a('0x3f')]){var _0x29516b=_0x1ce4dd[_0x0d0a('0x40')]({'plain':!![]});_0x6b07fd['account']=_0x29516b;_0x6b07fd[_0x0d0a('0x41')]=_0x29516b[_0x0d0a('0x3e')];_0x6b07fd[_0x0d0a('0x42')]=_0x29516b['List'];_0x6b07fd[_0x0d0a('0x41')]=_[_0x0d0a('0x43')](_0x6b07fd[_0x0d0a('0x41')],[_0x0d0a('0x44')],[_0x0d0a('0x45')]);if(_0x6b07fd[_0x0d0a('0x39')][_0x0d0a('0x3e')]){delete _0x6b07fd[_0x0d0a('0x39')][_0x0d0a('0x3e')];}if(_0x6b07fd[_0x0d0a('0x39')]['List']&&_0x6b07fd[_0x0d0a('0x39')]['List'][_0x0d0a('0x3b')][_0x0d0a('0x46')]){return _0x6b07fd['account'][_0x0d0a('0x3f')][_0x0d0a('0x3b')][0x0];}var _0x4f6293=_[_0x0d0a('0xc')](_0x5840a3[_0x0d0a('0x26')],{'firstName':_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x33')],'ListId':_0x29516b[_0x0d0a('0x47')]});_0x4f6293[_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x35')]]=_0x5840a3['body'][_0x0d0a('0x33')];return db[_0x0d0a('0x28')][_0x0d0a('0x48')](_0x4f6293,{'fields':_0x1940b7,'raw':!![]});}})[_0x0d0a('0x22')](function(_0xb8c385){_0x6b07fd[_0x0d0a('0x49')]=_0xb8c385;if(_0xb8c385){var _0x577b28={'ContactId':_0xb8c385['id'],'FaxAccountId':_0x5840a3[_0x0d0a('0x39')]['id'],'fax':_0xb8c385[_0x0d0a('0x27')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0xb8c385['id'],'closed':![],'FaxAccountId':_0x5840a3[_0x0d0a('0x39')]['id']}})[_0x0d0a('0x22')](function(_0x1ca16b){if(_0x1ca16b){return[_0x1ca16b,![]];}return db['FaxInteraction'][_0x0d0a('0x48')](_0x577b28)['then'](function(_0x55a481){return[_0x55a481,!![]];});});}else{throw new Error(_0x0d0a('0x4a'));}})['spread'](function(_0x313b87,_0x447556){var _0x1f850f=_0x313b87[_0x0d0a('0x40')]({'plain':!![]});if(_0x447556){if(_0x6b07fd[_0x0d0a('0x39')][_0x0d0a('0x4b')]){_0x6b07fd['applications'][_0x0d0a('0x4c')]({'id':0x0,'priority':_0x6b07fd['applications'][_0x0d0a('0x46')]+0x1,'app':_0x0d0a('0x4d'),'appdata':'unmanaged','interval':_0x0d0a('0x4e')});}_0x1f850f[_0x0d0a('0x4f')]=!![];}else{_0x1f850f[_0x0d0a('0x4f')]=![];}_0x6b07fd[_0x0d0a('0x50')]=_0x1f850f;return db[_0x0d0a('0x51')][_0x0d0a('0x48')]({'body':_0x5840a3[_0x0d0a('0x26')][_0x0d0a('0x26')],'FaxAccountId':_0x5840a3[_0x0d0a('0x39')]['id'],'FaxInteractionId':_0x313b87['id'],'direction':'in','ContactId':_0x313b87[_0x0d0a('0x52')],'AttachmentId':_0x5840a3[_0x0d0a('0x26')]['AttachmentId']});})[_0x0d0a('0x22')](function(_0x5c60df){_0x6b07fd[_0x0d0a('0x16')]=_0x5c60df;if(_0x6b07fd[_0x0d0a('0x50')]['UserId']){return db[_0x0d0a('0x53')][_0x0d0a('0x54')]({'attributes':['id',_0x0d0a('0x55')],'where':{'id':_0x6b07fd['interaction']['UserId']}})['then'](function(_0x2ea540){if(_0x2ea540){_0x6b07fd[_0x0d0a('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2ea540[_0x0d0a('0x55')]+','+(_0x6b07fd[_0x0d0a('0x39')][_0x0d0a('0x56')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x0d0a('0x57'),_0x6b07fd);});}return respondWithRpcPromise(_0x0d0a('0x58'),_0x0d0a('0x57'),_0x6b07fd);})[_0x0d0a('0x22')](function(_0x2220e3){_0x313dbe(_0x2220e3);})[_0x0d0a('0x24')](function(_0x26e0ce){_0x117049(_0x2c5a2b[_0x0d0a('0x15')](0x1f4,_0x26e0ce[_0x0d0a('0x16')]));});});};
\ No newline at end of file
index c35e65a..3fb877c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b05=['update','emit','removeListener','length','faxAccount:','./faxAccount.events'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x5b05,0x14f));var _0x55b0=function(_0x5da28e,_0x411d2c){_0x5da28e=_0x5da28e-0x0;var _0x28206f=_0x5b05[_0x5da28e];return _0x28206f;};'use strict';var FaxAccountEvents=require(_0x55b0('0x0'));var events=['save','remove',_0x55b0('0x1')];function createListener(_0xfe828d,_0x4d287b){return function(_0x22a75b){_0x4d287b[_0x55b0('0x2')](_0xfe828d,_0x22a75b);};}function removeListener(_0x29576c,_0x58c646){return function(){FaxAccountEvents[_0x55b0('0x3')](_0x29576c,_0x58c646);};}exports['register']=function(_0x219acd){for(var _0x333a51=0x0,_0x3b76e5=events[_0x55b0('0x4')];_0x333a51<_0x3b76e5;_0x333a51++){var _0x2cac6b=events[_0x333a51];var _0x48ae87=createListener(_0x55b0('0x5')+_0x2cac6b,_0x219acd);FaxAccountEvents['on'](_0x2cac6b,_0x48ae87);}};
\ No newline at end of file
+var _0x1b55=['./faxAccount.events','save','remove','update','emit','removeListener','register','faxAccount:'];(function(_0x64652c,_0xecf03d){var _0x2f53fd=function(_0xf107cf){while(--_0xf107cf){_0x64652c['push'](_0x64652c['shift']());}};_0x2f53fd(++_0xecf03d);}(_0x1b55,0xa8));var _0x51b5=function(_0x224035,_0x1f93ef){_0x224035=_0x224035-0x0;var _0x3a0c7a=_0x1b55[_0x224035];return _0x3a0c7a;};'use strict';var FaxAccountEvents=require(_0x51b5('0x0'));var events=[_0x51b5('0x1'),_0x51b5('0x2'),_0x51b5('0x3')];function createListener(_0x289f2e,_0x2b95ea){return function(_0x288a7b){_0x2b95ea[_0x51b5('0x4')](_0x289f2e,_0x288a7b);};}function removeListener(_0x1b0959,_0x4cba71){return function(){FaxAccountEvents[_0x51b5('0x5')](_0x1b0959,_0x4cba71);};}exports[_0x51b5('0x6')]=function(_0x1bc124){for(var _0x1d134a=0x0,_0x5c4144=events['length'];_0x1d134a<_0x5c4144;_0x1d134a++){var _0x43186c=events[_0x1d134a];var _0x1a2fad=createListener(_0x51b5('0x7')+_0x43186c,_0x1bc124);FaxAccountEvents['on'](_0x43186c,_0x1a2fad);}};
\ No newline at end of file
index 069bd3a..62838ee 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(_0x7a242a,_0x423353){var _0x3b20c3=function(_0x467c4e){while(--_0x467c4e){_0x7a242a['push'](_0x7a242a['shift']());}};_0x3b20c3(++_0x423353);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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(_0x5573e7,_0x2adbad){var _0x5205b7=function(_0x238f15){while(--_0x238f15){_0x5573e7['push'](_0x5573e7['shift']());}};_0x5205b7(++_0x2adbad);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 cb90228..984970c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac6f=['INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x156542,_0x95a439){var _0x4d5dad=function(_0xf83c4f){while(--_0xf83c4f){_0x156542['push'](_0x156542['shift']());}};_0x4d5dad(++_0x95a439);}(_0xac6f,0x16a));var _0xfac6=function(_0x1b84c8,_0x4740d7){_0x1b84c8=_0x1b84c8-0x0;var _0x10a4aa=_0xac6f[_0x1b84c8];return _0x10a4aa;};'use strict';var Sequelize=require(_0xfac6('0x0'));module[_0xfac6('0x1')]={'priority':{'type':Sequelize[_0xfac6('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfac6('0x3')},'appdata':{'type':Sequelize[_0xfac6('0x4')]()},'description':{'type':Sequelize[_0xfac6('0x5')]},'interval':{'type':Sequelize[_0xfac6('0x5')],'defaultValue':_0xfac6('0x6')}};
\ No newline at end of file
+var _0x7d92=['INTEGER','STRING','TEXT','*,*,*,*','sequelize','exports'];(function(_0x1cd234,_0x12db2f){var _0x130802=function(_0x22d630){while(--_0x22d630){_0x1cd234['push'](_0x1cd234['shift']());}};_0x130802(++_0x12db2f);}(_0x7d92,0xb8));var _0x27d9=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0x7d92[_0x1b4b23];return _0x2a325b;};'use strict';var Sequelize=require(_0x27d9('0x0'));module[_0x27d9('0x1')]={'priority':{'type':Sequelize[_0x27d9('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x27d9('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x27d9('0x4')]()},'description':{'type':Sequelize[_0x27d9('0x3')]},'interval':{'type':Sequelize[_0x27d9('0x3')],'defaultValue':_0x27d9('0x5')}};
\ No newline at end of file
index a454fb9..309071b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c2b=['stack','name','index','map','rawAttributes','fieldName','key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','filters','pick','filter','where','merge','type','options','FaxApplication','findAll','rows','catch','includeAll','find','body','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','end'];(function(_0x856d37,_0x4786db){var _0xf90737=function(_0x42dc6e){while(--_0x42dc6e){_0x856d37['push'](_0x856d37['shift']());}};_0xf90737(++_0x4786db);}(_0x4c2b,0xb5));var _0xb4c2=function(_0x4624f9,_0x49b411){_0x4624f9=_0x4624f9-0x0;var _0x10c5ab=_0x4c2b[_0x4624f9];return _0x10c5ab;};'use strict';var emlformat=require(_0xb4c2('0x0'));var rimraf=require(_0xb4c2('0x1'));var zipdir=require(_0xb4c2('0x2'));var jsonpatch=require(_0xb4c2('0x3'));var rp=require(_0xb4c2('0x4'));var moment=require(_0xb4c2('0x5'));var BPromise=require(_0xb4c2('0x6'));var Mustache=require(_0xb4c2('0x7'));var util=require(_0xb4c2('0x8'));var path=require(_0xb4c2('0x9'));var sox=require(_0xb4c2('0xa'));var csv=require(_0xb4c2('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb4c2('0xc'));var squel=require(_0xb4c2('0xd'));var crypto=require('crypto');var jsforce=require(_0xb4c2('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb4c2('0xb'));var querystring=require(_0xb4c2('0xf'));var Papa=require(_0xb4c2('0x10'));var Redis=require('ioredis');var authService=require(_0xb4c2('0x11'));var qs=require(_0xb4c2('0x12'));var as=require(_0xb4c2('0x13'));var hardwareService=require(_0xb4c2('0x14'));var logger=require(_0xb4c2('0x15'))(_0xb4c2('0x16'));var utils=require(_0xb4c2('0x17'));var config=require(_0xb4c2('0x18'));var licenseUtil=require(_0xb4c2('0x19'));var db=require(_0xb4c2('0x1a'))['db'];function respondWithStatusCode(_0x345570,_0x705aa8){_0x705aa8=_0x705aa8||0xcc;return function(_0x13f7d0){if(_0x13f7d0){return _0x345570[_0xb4c2('0x1b')](_0x705aa8);}return _0x345570['status'](_0x705aa8)['end']();};}function respondWithResult(_0x2cef93,_0x290a5b){_0x290a5b=_0x290a5b||0xc8;return function(_0x31cad7){if(_0x31cad7){return _0x2cef93[_0xb4c2('0x1c')](_0x290a5b)['json'](_0x31cad7);}};}function respondWithFilteredResult(_0x2b7b9c,_0x38d62f){return function(_0x2a230f){if(_0x2a230f){var _0x5c7c8d=typeof _0x38d62f[_0xb4c2('0x1d')]===_0xb4c2('0x1e')&&typeof _0x38d62f[_0xb4c2('0x1f')]===_0xb4c2('0x1e');var _0x4f7499=_0x2a230f[_0xb4c2('0x20')];var _0x490311=_0x5c7c8d?0x0:_0x38d62f[_0xb4c2('0x1d')];var _0x2d3efe=_0x5c7c8d?_0x2a230f[_0xb4c2('0x20')]:_0x38d62f[_0xb4c2('0x1d')]+_0x38d62f[_0xb4c2('0x1f')];var _0xf9c139;if(_0x2d3efe>=_0x4f7499){_0x2d3efe=_0x4f7499;_0xf9c139=0xc8;}else{_0xf9c139=0xce;}_0x2b7b9c['status'](_0xf9c139);return _0x2b7b9c['set'](_0xb4c2('0x21'),_0x490311+'-'+_0x2d3efe+'/'+_0x4f7499)[_0xb4c2('0x22')](_0x2a230f);}return null;};}function patchUpdates(_0x387488){return function(_0xed7c26){try{jsonpatch[_0xb4c2('0x23')](_0xed7c26,_0x387488,!![]);}catch(_0x11ad28){return BPromise[_0xb4c2('0x24')](_0x11ad28);}return _0xed7c26[_0xb4c2('0x25')]();};}function saveUpdates(_0x221a68,_0x46a974){return function(_0xbe2862){if(_0xbe2862){return _0xbe2862['update'](_0x221a68)[_0xb4c2('0x26')](function(_0x109fdc){return _0x109fdc;});}return null;};}function removeEntity(_0x3bb989,_0x437d98){return function(_0xc4ceb5){if(_0xc4ceb5){return _0xc4ceb5[_0xb4c2('0x27')]()[_0xb4c2('0x26')](function(){_0x3bb989[_0xb4c2('0x1c')](0xcc)[_0xb4c2('0x28')]();});}};}function handleEntityNotFound(_0x908712,_0x22eca0){return function(_0x4181bf){if(!_0x4181bf){_0x908712[_0xb4c2('0x1b')](0x194);}return _0x4181bf;};}function handleError(_0x4fa51f,_0x3562d9){_0x3562d9=_0x3562d9||0x1f4;return function(_0x4d2bb6){logger['error'](_0x4d2bb6[_0xb4c2('0x29')]);if(_0x4d2bb6['name']){delete _0x4d2bb6[_0xb4c2('0x2a')];}_0x4fa51f[_0xb4c2('0x1c')](_0x3562d9)['send'](_0x4d2bb6);};}exports[_0xb4c2('0x2b')]=function(_0x544397,_0x5951a6){var _0x4d56c2={},_0x4f2d45={},_0x46bbda={'count':0x0,'rows':[]};var _0x261888=_[_0xb4c2('0x2c')](db['FaxApplication'][_0xb4c2('0x2d')],function(_0x22bd36){return{'name':_0x22bd36[_0xb4c2('0x2e')],'type':_0x22bd36['type'][_0xb4c2('0x2f')]};});_0x4f2d45[_0xb4c2('0x30')]=_[_0xb4c2('0x2c')](_0x261888,_0xb4c2('0x2a'));_0x4f2d45['query']=_[_0xb4c2('0x31')](_0x544397['query']);_0x4f2d45['filters']=_[_0xb4c2('0x32')](_0x4f2d45[_0xb4c2('0x30')],_0x4f2d45[_0xb4c2('0x33')]);_0x4d56c2[_0xb4c2('0x34')]=_[_0xb4c2('0x32')](_0x4f2d45[_0xb4c2('0x30')],qs[_0xb4c2('0x35')](_0x544397[_0xb4c2('0x33')][_0xb4c2('0x35')]));_0x4d56c2[_0xb4c2('0x34')]=_0x4d56c2['attributes'][_0xb4c2('0x36')]?_0x4d56c2['attributes']:_0x4f2d45['model'];if(!_0x544397[_0xb4c2('0x33')][_0xb4c2('0x37')](_0xb4c2('0x38'))){_0x4d56c2[_0xb4c2('0x1f')]=qs[_0xb4c2('0x1f')](_0x544397['query'][_0xb4c2('0x1f')]);_0x4d56c2[_0xb4c2('0x1d')]=qs[_0xb4c2('0x1d')](_0x544397[_0xb4c2('0x33')]['offset']);}_0x4d56c2[_0xb4c2('0x39')]=qs['sort'](_0x544397[_0xb4c2('0x33')]['sort']);_0x4d56c2['where']=qs[_0xb4c2('0x3a')](_[_0xb4c2('0x3b')](_0x544397[_0xb4c2('0x33')],_0x4f2d45[_0xb4c2('0x3a')]),_0x261888);if(_0x544397[_0xb4c2('0x33')][_0xb4c2('0x3c')]){_0x4d56c2[_0xb4c2('0x3d')]=_[_0xb4c2('0x3e')](_0x4d56c2[_0xb4c2('0x3d')],{'$or':_[_0xb4c2('0x2c')](_0x261888,function(_0x184102){if(_0x184102[_0xb4c2('0x3f')]!=='VIRTUAL'){var _0x4f7be5={};_0x4f7be5[_0x184102[_0xb4c2('0x2a')]]={'$like':'%'+_0x544397['query'][_0xb4c2('0x3c')]+'%'};return _0x4f7be5;}})});}_0x4d56c2=_[_0xb4c2('0x3e')]({},_0x4d56c2,_0x544397[_0xb4c2('0x40')]);var _0x141bb0={'where':_0x4d56c2[_0xb4c2('0x3d')]};return db['FaxApplication'][_0xb4c2('0x20')](_0x141bb0)[_0xb4c2('0x26')](function(_0x344042){_0x46bbda[_0xb4c2('0x20')]=_0x344042;if(_0x544397['query']['includeAll']){_0x4d56c2['include']=[{'all':!![]}];}return db[_0xb4c2('0x41')][_0xb4c2('0x42')](_0x4d56c2);})[_0xb4c2('0x26')](function(_0x54ff00){_0x46bbda[_0xb4c2('0x43')]=_0x54ff00;return _0x46bbda;})[_0xb4c2('0x26')](respondWithFilteredResult(_0x5951a6,_0x4d56c2))[_0xb4c2('0x44')](handleError(_0x5951a6,null));};exports['show']=function(_0x30b370,_0x3916a0){var _0x29e12c={'raw':!![],'where':{'id':_0x30b370['params']['id']}},_0x2083e9={};_0x2083e9[_0xb4c2('0x30')]=_[_0xb4c2('0x31')](db[_0xb4c2('0x41')][_0xb4c2('0x2d')]);_0x2083e9[_0xb4c2('0x33')]=_[_0xb4c2('0x31')](_0x30b370[_0xb4c2('0x33')]);_0x2083e9[_0xb4c2('0x3a')]=_[_0xb4c2('0x32')](_0x2083e9['model'],_0x2083e9['query']);_0x29e12c[_0xb4c2('0x34')]=_[_0xb4c2('0x32')](_0x2083e9[_0xb4c2('0x30')],qs[_0xb4c2('0x35')](_0x30b370['query'][_0xb4c2('0x35')]));_0x29e12c[_0xb4c2('0x34')]=_0x29e12c[_0xb4c2('0x34')][_0xb4c2('0x36')]?_0x29e12c[_0xb4c2('0x34')]:_0x2083e9[_0xb4c2('0x30')];if(_0x30b370[_0xb4c2('0x33')][_0xb4c2('0x45')]){_0x29e12c['include']=[{'all':!![]}];}_0x29e12c=_[_0xb4c2('0x3e')]({},_0x29e12c,_0x30b370[_0xb4c2('0x40')]);return db[_0xb4c2('0x41')][_0xb4c2('0x46')](_0x29e12c)['then'](handleEntityNotFound(_0x3916a0,null))[_0xb4c2('0x26')](respondWithResult(_0x3916a0,null))[_0xb4c2('0x44')](handleError(_0x3916a0,null));};exports['create']=function(_0x5c6fe7,_0x3a5e8d){return db['FaxApplication']['create'](_0x5c6fe7[_0xb4c2('0x47')],{})[_0xb4c2('0x26')](respondWithResult(_0x3a5e8d,0xc9))['catch'](handleError(_0x3a5e8d,null));};exports[_0xb4c2('0x48')]=function(_0x352df5,_0x4d42ce){if(_0x352df5[_0xb4c2('0x47')]['id']){delete _0x352df5['body']['id'];}return db[_0xb4c2('0x41')]['find']({'where':{'id':_0x352df5[_0xb4c2('0x49')]['id']}})[_0xb4c2('0x26')](handleEntityNotFound(_0x4d42ce,null))[_0xb4c2('0x26')](saveUpdates(_0x352df5[_0xb4c2('0x47')],null))[_0xb4c2('0x26')](respondWithResult(_0x4d42ce,null))[_0xb4c2('0x44')](handleError(_0x4d42ce,null));};exports[_0xb4c2('0x27')]=function(_0x38ca88,_0x5737ae){return db[_0xb4c2('0x41')][_0xb4c2('0x46')]({'where':{'id':_0x38ca88[_0xb4c2('0x49')]['id']}})[_0xb4c2('0x26')](handleEntityNotFound(_0x5737ae,null))[_0xb4c2('0x26')](removeEntity(_0x5737ae,null))['catch'](handleError(_0x5737ae,null));};
\ No newline at end of file
+var _0x2042=['params','includeAll','find','create','body','FaxApplication','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','update','then','destroy','error','stack','name','send','index','map','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','rows','catch','show'];(function(_0x336d13,_0x3eb5e7){var _0x110de3=function(_0x523ebe){while(--_0x523ebe){_0x336d13['push'](_0x336d13['shift']());}};_0x110de3(++_0x3eb5e7);}(_0x2042,0x1f0));var _0x2204=function(_0x2cacdf,_0x31f444){_0x2cacdf=_0x2cacdf-0x0;var _0x7f5828=_0x2042[_0x2cacdf];return _0x7f5828;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2204('0x0'));var jsonpatch=require(_0x2204('0x1'));var rp=require(_0x2204('0x2'));var moment=require('moment');var BPromise=require(_0x2204('0x3'));var Mustache=require('mustache');var util=require(_0x2204('0x4'));var path=require(_0x2204('0x5'));var sox=require(_0x2204('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2204('0x7'));var _=require(_0x2204('0x8'));var squel=require(_0x2204('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2204('0xa'));var toCsv=require(_0x2204('0xb'));var querystring=require(_0x2204('0xc'));var Papa=require(_0x2204('0xd'));var Redis=require(_0x2204('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x2204('0xf'));var as=require(_0x2204('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x2204('0x11'));var licenseUtil=require(_0x2204('0x12'));var db=require(_0x2204('0x13'))['db'];function respondWithStatusCode(_0x11848f,_0x5c1891){_0x5c1891=_0x5c1891||0xcc;return function(_0x262da0){if(_0x262da0){return _0x11848f[_0x2204('0x14')](_0x5c1891);}return _0x11848f[_0x2204('0x15')](_0x5c1891)[_0x2204('0x16')]();};}function respondWithResult(_0x976f47,_0x51294a){_0x51294a=_0x51294a||0xc8;return function(_0x1f86a6){if(_0x1f86a6){return _0x976f47[_0x2204('0x15')](_0x51294a)[_0x2204('0x17')](_0x1f86a6);}};}function respondWithFilteredResult(_0x1e864f,_0x46d00e){return function(_0x224298){if(_0x224298){var _0x65837e=typeof _0x46d00e[_0x2204('0x18')]==='undefined'&&typeof _0x46d00e[_0x2204('0x19')]===_0x2204('0x1a');var _0x48d678=_0x224298[_0x2204('0x1b')];var _0x475afe=_0x65837e?0x0:_0x46d00e['offset'];var _0x3c08f5=_0x65837e?_0x224298[_0x2204('0x1b')]:_0x46d00e['offset']+_0x46d00e[_0x2204('0x19')];var _0x539841;if(_0x3c08f5>=_0x48d678){_0x3c08f5=_0x48d678;_0x539841=0xc8;}else{_0x539841=0xce;}_0x1e864f['status'](_0x539841);return _0x1e864f[_0x2204('0x1c')]('Content-Range',_0x475afe+'-'+_0x3c08f5+'/'+_0x48d678)[_0x2204('0x17')](_0x224298);}return null;};}function patchUpdates(_0x164f65){return function(_0x3a83a9){try{jsonpatch['apply'](_0x3a83a9,_0x164f65,!![]);}catch(_0x18979b){return BPromise[_0x2204('0x1d')](_0x18979b);}return _0x3a83a9[_0x2204('0x1e')]();};}function saveUpdates(_0x1bbdd0,_0x1cfe8e){return function(_0x41efc5){if(_0x41efc5){return _0x41efc5[_0x2204('0x1f')](_0x1bbdd0)[_0x2204('0x20')](function(_0x2a4c5a){return _0x2a4c5a;});}return null;};}function removeEntity(_0x5e047c,_0x17b5c7){return function(_0x4e69d4){if(_0x4e69d4){return _0x4e69d4[_0x2204('0x21')]()[_0x2204('0x20')](function(){_0x5e047c[_0x2204('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f6c0c,_0x35f2d5){return function(_0x464cf0){if(!_0x464cf0){_0x1f6c0c[_0x2204('0x14')](0x194);}return _0x464cf0;};}function handleError(_0x1cdaec,_0x32c754){_0x32c754=_0x32c754||0x1f4;return function(_0x184547){logger[_0x2204('0x22')](_0x184547[_0x2204('0x23')]);if(_0x184547[_0x2204('0x24')]){delete _0x184547[_0x2204('0x24')];}_0x1cdaec[_0x2204('0x15')](_0x32c754)[_0x2204('0x25')](_0x184547);};}exports[_0x2204('0x26')]=function(_0x179d92,_0x57d3f3){var _0x498a7e={},_0x350d40={},_0x12f0fe={'count':0x0,'rows':[]};var _0x212d86=_[_0x2204('0x27')](db['FaxApplication']['rawAttributes'],function(_0xafbd12){return{'name':_0xafbd12['fieldName'],'type':_0xafbd12[_0x2204('0x28')][_0x2204('0x29')]};});_0x350d40['model']=_[_0x2204('0x27')](_0x212d86,_0x2204('0x24'));_0x350d40[_0x2204('0x2a')]=_[_0x2204('0x2b')](_0x179d92[_0x2204('0x2a')]);_0x350d40['filters']=_[_0x2204('0x2c')](_0x350d40[_0x2204('0x2d')],_0x350d40[_0x2204('0x2a')]);_0x498a7e[_0x2204('0x2e')]=_[_0x2204('0x2c')](_0x350d40[_0x2204('0x2d')],qs[_0x2204('0x2f')](_0x179d92['query'][_0x2204('0x2f')]));_0x498a7e['attributes']=_0x498a7e[_0x2204('0x2e')][_0x2204('0x30')]?_0x498a7e['attributes']:_0x350d40['model'];if(!_0x179d92[_0x2204('0x2a')][_0x2204('0x31')](_0x2204('0x32'))){_0x498a7e[_0x2204('0x19')]=qs['limit'](_0x179d92['query']['limit']);_0x498a7e[_0x2204('0x18')]=qs[_0x2204('0x18')](_0x179d92['query'][_0x2204('0x18')]);}_0x498a7e[_0x2204('0x33')]=qs[_0x2204('0x34')](_0x179d92[_0x2204('0x2a')]['sort']);_0x498a7e[_0x2204('0x35')]=qs[_0x2204('0x36')](_[_0x2204('0x37')](_0x179d92['query'],_0x350d40[_0x2204('0x36')]),_0x212d86);if(_0x179d92[_0x2204('0x2a')][_0x2204('0x38')]){_0x498a7e[_0x2204('0x35')]=_['merge'](_0x498a7e[_0x2204('0x35')],{'$or':_[_0x2204('0x27')](_0x212d86,function(_0xce6ad4){if(_0xce6ad4[_0x2204('0x28')]!==_0x2204('0x39')){var _0x428aa1={};_0x428aa1[_0xce6ad4[_0x2204('0x24')]]={'$like':'%'+_0x179d92[_0x2204('0x2a')]['filter']+'%'};return _0x428aa1;}})});}_0x498a7e=_[_0x2204('0x3a')]({},_0x498a7e,_0x179d92[_0x2204('0x3b')]);var _0xc5a1b={'where':_0x498a7e[_0x2204('0x35')]};return db['FaxApplication'][_0x2204('0x1b')](_0xc5a1b)['then'](function(_0x30e359){_0x12f0fe[_0x2204('0x1b')]=_0x30e359;if(_0x179d92[_0x2204('0x2a')]['includeAll']){_0x498a7e[_0x2204('0x3c')]=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x498a7e);})[_0x2204('0x20')](function(_0x564234){_0x12f0fe[_0x2204('0x3d')]=_0x564234;return _0x12f0fe;})[_0x2204('0x20')](respondWithFilteredResult(_0x57d3f3,_0x498a7e))[_0x2204('0x3e')](handleError(_0x57d3f3,null));};exports[_0x2204('0x3f')]=function(_0x2eeea0,_0x47f47f){var _0x49c0d2={'raw':!![],'where':{'id':_0x2eeea0[_0x2204('0x40')]['id']}},_0x1bf5a4={};_0x1bf5a4[_0x2204('0x2d')]=_[_0x2204('0x2b')](db['FaxApplication']['rawAttributes']);_0x1bf5a4[_0x2204('0x2a')]=_[_0x2204('0x2b')](_0x2eeea0[_0x2204('0x2a')]);_0x1bf5a4['filters']=_[_0x2204('0x2c')](_0x1bf5a4[_0x2204('0x2d')],_0x1bf5a4['query']);_0x49c0d2[_0x2204('0x2e')]=_[_0x2204('0x2c')](_0x1bf5a4[_0x2204('0x2d')],qs[_0x2204('0x2f')](_0x2eeea0['query'][_0x2204('0x2f')]));_0x49c0d2['attributes']=_0x49c0d2[_0x2204('0x2e')]['length']?_0x49c0d2[_0x2204('0x2e')]:_0x1bf5a4[_0x2204('0x2d')];if(_0x2eeea0['query'][_0x2204('0x41')]){_0x49c0d2[_0x2204('0x3c')]=[{'all':!![]}];}_0x49c0d2=_[_0x2204('0x3a')]({},_0x49c0d2,_0x2eeea0[_0x2204('0x3b')]);return db['FaxApplication'][_0x2204('0x42')](_0x49c0d2)[_0x2204('0x20')](handleEntityNotFound(_0x47f47f,null))['then'](respondWithResult(_0x47f47f,null))[_0x2204('0x3e')](handleError(_0x47f47f,null));};exports[_0x2204('0x43')]=function(_0x24b9f1,_0x208542){return db['FaxApplication'][_0x2204('0x43')](_0x24b9f1[_0x2204('0x44')],{})[_0x2204('0x20')](respondWithResult(_0x208542,0xc9))['catch'](handleError(_0x208542,null));};exports[_0x2204('0x1f')]=function(_0x27251f,_0x3e7989){if(_0x27251f[_0x2204('0x44')]['id']){delete _0x27251f[_0x2204('0x44')]['id'];}return db['FaxApplication'][_0x2204('0x42')]({'where':{'id':_0x27251f[_0x2204('0x40')]['id']}})[_0x2204('0x20')](handleEntityNotFound(_0x3e7989,null))[_0x2204('0x20')](saveUpdates(_0x27251f[_0x2204('0x44')],null))[_0x2204('0x20')](respondWithResult(_0x3e7989,null))[_0x2204('0x3e')](handleError(_0x3e7989,null));};exports[_0x2204('0x21')]=function(_0x2e0813,_0x167ae3){return db[_0x2204('0x45')][_0x2204('0x42')]({'where':{'id':_0x2e0813[_0x2204('0x40')]['id']}})[_0x2204('0x20')](handleEntityNotFound(_0x167ae3,null))[_0x2204('0x20')](removeEntity(_0x167ae3,null))['catch'](handleError(_0x167ae3,null));};
\ No newline at end of file
index 25c354f..d99ee8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ce=['moment','bluebird','request-promise','path','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','lodash','util','../../config/logger','api'];(function(_0x2ca616,_0x384ec8){var _0x53155f=function(_0x108627){while(--_0x108627){_0x2ca616['push'](_0x2ca616['shift']());}};_0x53155f(++_0x384ec8);}(_0x24ce,0x7e));var _0xe24c=function(_0x565882,_0x73d8fd){_0x565882=_0x565882-0x0;var _0x54dc68=_0x24ce[_0x565882];return _0x54dc68;};'use strict';var _=require(_0xe24c('0x0'));var util=require(_0xe24c('0x1'));var logger=require(_0xe24c('0x2'))(_0xe24c('0x3'));var moment=require(_0xe24c('0x4'));var BPromise=require(_0xe24c('0x5'));var rp=require(_0xe24c('0x6'));var fs=require('fs');var path=require(_0xe24c('0x7'));var rimraf=require('rimraf');var config=require(_0xe24c('0x8'));var attributes=require(_0xe24c('0x9'));module[_0xe24c('0xa')]=function(_0x413bb0,_0x5e6d29){return _0x413bb0[_0xe24c('0xb')](_0xe24c('0xc'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xda54=['fax_applications','lodash','api','moment','bluebird','path','./faxApplication.attributes','exports','define','FaxApplication'];(function(_0xadde88,_0x58ad47){var _0x3b8eb6=function(_0x15535a){while(--_0x15535a){_0xadde88['push'](_0xadde88['shift']());}};_0x3b8eb6(++_0x58ad47);}(_0xda54,0x141));var _0x4da5=function(_0x3dda0f,_0x5b9902){_0x3dda0f=_0x3dda0f-0x0;var _0x1b0488=_0xda54[_0x3dda0f];return _0x1b0488;};'use strict';var _=require(_0x4da5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4da5('0x1'));var moment=require(_0x4da5('0x2'));var BPromise=require(_0x4da5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4da5('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4da5('0x5'));module[_0x4da5('0x6')]=function(_0xd7ed94,_0xf69d1a){return _0xd7ed94[_0x4da5('0x7')](_0x4da5('0x8'),attributes,{'tableName':_0x4da5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ed99ab3..9933f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed27=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateFaxApplication','update','body','options','where','attributes','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4e4823,_0xf817e8){var _0x59815c=function(_0x5bde38){while(--_0x5bde38){_0x4e4823['push'](_0x4e4823['shift']());}};_0x59815c(++_0xf817e8);}(_0xed27,0x1ab));var _0x7ed2=function(_0x162b63,_0xb86b39){_0x162b63=_0x162b63-0x0;var _0x49e125=_0xed27[_0x162b63];return _0x49e125;};'use strict';var _=require(_0x7ed2('0x0'));var util=require(_0x7ed2('0x1'));var moment=require(_0x7ed2('0x2'));var BPromise=require(_0x7ed2('0x3'));var rs=require(_0x7ed2('0x4'));var fs=require('fs');var Redis=require(_0x7ed2('0x5'));var db=require(_0x7ed2('0x6'))['db'];var utils=require(_0x7ed2('0x7'));var logger=require(_0x7ed2('0x8'))('rpc');var config=require(_0x7ed2('0x9'));var jayson=require(_0x7ed2('0xa'));var client=jayson[_0x7ed2('0xb')][_0x7ed2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x506fd4,_0x181e4d,_0x81fb62){return new BPromise(function(_0x4c5cb9,_0x3e9754){return client['request'](_0x506fd4,_0x81fb62)[_0x7ed2('0xd')](function(_0x5a3bb6){logger[_0x7ed2('0xe')](_0x7ed2('0xf'),_0x181e4d,_0x7ed2('0x10'));logger[_0x7ed2('0x11')](_0x7ed2('0x12'),_0x181e4d,_0x7ed2('0x10'),JSON['stringify'](_0x5a3bb6));if(_0x5a3bb6[_0x7ed2('0x13')]){if(_0x5a3bb6[_0x7ed2('0x13')][_0x7ed2('0x14')]===0x1f4){logger['error'](_0x7ed2('0xf'),_0x181e4d,_0x5a3bb6[_0x7ed2('0x13')][_0x7ed2('0x15')]);return _0x3e9754(_0x5a3bb6[_0x7ed2('0x13')][_0x7ed2('0x15')]);}logger[_0x7ed2('0x13')](_0x7ed2('0xf'),_0x181e4d,_0x5a3bb6[_0x7ed2('0x13')][_0x7ed2('0x15')]);return _0x4c5cb9(_0x5a3bb6[_0x7ed2('0x13')][_0x7ed2('0x15')]);}else{logger[_0x7ed2('0xe')](_0x7ed2('0xf'),_0x181e4d,_0x7ed2('0x10'));_0x4c5cb9(_0x5a3bb6[_0x7ed2('0x16')][_0x7ed2('0x15')]);}})[_0x7ed2('0x17')](function(_0x43bcc5){logger[_0x7ed2('0x13')](_0x7ed2('0xf'),_0x181e4d,_0x43bcc5);_0x3e9754(_0x43bcc5);});});}exports[_0x7ed2('0x18')]=function(_0x56d023){var _0x426d3e=this;return new Promise(function(_0x40ff5e,_0x5202a1){return db['FaxApplication'][_0x7ed2('0x19')](_0x56d023[_0x7ed2('0x1a')],{'raw':_0x56d023['options']?_0x56d023[_0x7ed2('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56d023[_0x7ed2('0x1b')]?_0x56d023[_0x7ed2('0x1b')][_0x7ed2('0x1c')]||null:null,'attributes':_0x56d023[_0x7ed2('0x1b')]?_0x56d023[_0x7ed2('0x1b')][_0x7ed2('0x1d')]||null:null,'limit':_0x56d023[_0x7ed2('0x1b')]?_0x56d023[_0x7ed2('0x1b')]['limit']||null:null})[_0x7ed2('0xd')](function(_0x40fd71){logger[_0x7ed2('0xe')](_0x7ed2('0x18'),_0x56d023);logger['debug'](_0x7ed2('0x18'),_0x56d023,JSON[_0x7ed2('0x1e')](_0x40fd71));_0x40ff5e(_0x40fd71);})[_0x7ed2('0x17')](function(_0x1c053d){logger[_0x7ed2('0x13')](_0x7ed2('0x18'),_0x1c053d[_0x7ed2('0x15')],_0x56d023);_0x5202a1(_0x426d3e[_0x7ed2('0x13')](0x1f4,_0x1c053d['message']));});});};
\ No newline at end of file
+var _0x09f6=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code','message','FaxApplication,\x20%s,\x20%s','result','catch','UpdateFaxApplication','update','body','options','raw','where','limit','debug','lodash','moment','bluebird'];(function(_0x14f216,_0x2b12cd){var _0x1a6714=function(_0x13d5b4){while(--_0x13d5b4){_0x14f216['push'](_0x14f216['shift']());}};_0x1a6714(++_0x2b12cd);}(_0x09f6,0xfd));var _0x609f=function(_0x332ddf,_0x1ed1b5){_0x332ddf=_0x332ddf-0x0;var _0x4798a9=_0x09f6[_0x332ddf];return _0x4798a9;};'use strict';var _=require(_0x609f('0x0'));var util=require('util');var moment=require(_0x609f('0x1'));var BPromise=require(_0x609f('0x2'));var rs=require(_0x609f('0x3'));var fs=require('fs');var Redis=require(_0x609f('0x4'));var db=require(_0x609f('0x5'))['db'];var utils=require(_0x609f('0x6'));var logger=require(_0x609f('0x7'))(_0x609f('0x8'));var config=require(_0x609f('0x9'));var jayson=require(_0x609f('0xa'));var client=jayson[_0x609f('0xb')][_0x609f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x16d29b,_0x101abb,_0x588b29){return new BPromise(function(_0x2fb3f8,_0xf74ff9){return client[_0x609f('0xd')](_0x16d29b,_0x588b29)[_0x609f('0xe')](function(_0x1d1d14){logger[_0x609f('0xf')]('FaxApplication,\x20%s,\x20%s',_0x101abb,_0x609f('0x10'));logger['debug']('FaxApplication,\x20%s,\x20%s,\x20%s',_0x101abb,'request\x20sent',JSON[_0x609f('0x11')](_0x1d1d14));if(_0x1d1d14['error']){if(_0x1d1d14[_0x609f('0x12')][_0x609f('0x13')]===0x1f4){logger[_0x609f('0x12')]('FaxApplication,\x20%s,\x20%s',_0x101abb,_0x1d1d14[_0x609f('0x12')][_0x609f('0x14')]);return _0xf74ff9(_0x1d1d14[_0x609f('0x12')]['message']);}logger[_0x609f('0x12')](_0x609f('0x15'),_0x101abb,_0x1d1d14[_0x609f('0x12')][_0x609f('0x14')]);return _0x2fb3f8(_0x1d1d14[_0x609f('0x12')][_0x609f('0x14')]);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0x101abb,_0x609f('0x10'));_0x2fb3f8(_0x1d1d14[_0x609f('0x16')][_0x609f('0x14')]);}})[_0x609f('0x17')](function(_0x1be9d6){logger['error'](_0x609f('0x15'),_0x101abb,_0x1be9d6);_0xf74ff9(_0x1be9d6);});});}exports[_0x609f('0x18')]=function(_0x51004a){var _0x249391=this;return new Promise(function(_0x513e59,_0x124657){return db['FaxApplication'][_0x609f('0x19')](_0x51004a[_0x609f('0x1a')],{'raw':_0x51004a[_0x609f('0x1b')]?_0x51004a[_0x609f('0x1b')][_0x609f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x51004a[_0x609f('0x1b')]?_0x51004a[_0x609f('0x1b')][_0x609f('0x1d')]||null:null,'attributes':_0x51004a['options']?_0x51004a['options']['attributes']||null:null,'limit':_0x51004a[_0x609f('0x1b')]?_0x51004a['options'][_0x609f('0x1e')]||null:null})[_0x609f('0xe')](function(_0x3bdb09){logger[_0x609f('0xf')](_0x609f('0x18'),_0x51004a);logger[_0x609f('0x1f')](_0x609f('0x18'),_0x51004a,JSON[_0x609f('0x11')](_0x3bdb09));_0x513e59(_0x3bdb09);})[_0x609f('0x17')](function(_0x524d06){logger[_0x609f('0x12')](_0x609f('0x18'),_0x524d06[_0x609f('0x14')],_0x51004a);_0x124657(_0x249391[_0x609f('0x12')](0x1f4,_0x524d06[_0x609f('0x14')]));});});};
\ No newline at end of file
index f16782d..d757c45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['./faxApplication.controller','get','isAuthenticated','index','show','post','create','/:id','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1744e1,_0x1d5cd9){var _0x5166a0=function(_0x5f28dd){while(--_0x5f28dd){_0x1744e1['push'](_0x1744e1['shift']());}};_0x5166a0(++_0x1d5cd9);}(_0x0b0e,0x187));var _0xe0b0=function(_0x12aba8,_0x40a036){_0x12aba8=_0x12aba8-0x0;var _0x2aac66=_0x0b0e[_0x12aba8];return _0x2aac66;};'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('0xd')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xe')]);router['put'](_0xe0b0('0xf'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x10')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x11')]);module[_0xe0b0('0x12')]=router;
\ No newline at end of file
+var _0x7708=['multer','util','connect-timeout','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','put','delete','destroy'];(function(_0x474bd3,_0x5b89e3){var _0x5cfe0d=function(_0x45c4b9){while(--_0x45c4b9){_0x474bd3['push'](_0x474bd3['shift']());}};_0x5cfe0d(++_0x5b89e3);}(_0x7708,0x188));var _0x8770=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x7708[_0x32d457];return _0x338386;};'use strict';var multer=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var path=require('path');var timeout=require(_0x8770('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8770('0x3'));var config=require(_0x8770('0x4'));var controller=require('./faxApplication.controller');router[_0x8770('0x5')]('/',auth['isAuthenticated'](),controller[_0x8770('0x6')]);router[_0x8770('0x5')](_0x8770('0x7'),auth[_0x8770('0x8')](),controller[_0x8770('0x9')]);router[_0x8770('0xa')]('/',auth[_0x8770('0x8')](),controller['create']);router[_0x8770('0xb')](_0x8770('0x7'),auth[_0x8770('0x8')](),controller['update']);router[_0x8770('0xc')](_0x8770('0x7'),auth[_0x8770('0x8')](),controller[_0x8770('0xd')]);module['exports']=router;
\ No newline at end of file
index 84b0fd3..9f9d429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x681d=['STRING','DATE','out','ENUM','sequelize','exports','BOOLEAN'];(function(_0x8ab824,_0x407364){var _0x1be798=function(_0xde2b92){while(--_0xde2b92){_0x8ab824['push'](_0x8ab824['shift']());}};_0x1be798(++_0x407364);}(_0x681d,0x138));var _0xd681=function(_0x30cd7e,_0x4db10a){_0x30cd7e=_0x30cd7e-0x0;var _0x462a02=_0x681d[_0x30cd7e];return _0x462a02;};'use strict';var Sequelize=require(_0xd681('0x0'));module[_0xd681('0x1')]={'closed':{'type':Sequelize[_0xd681('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xd681('0x3')]},'secondDisposition':{'type':Sequelize[_0xd681('0x3')]},'thirdDisposition':{'type':Sequelize[_0xd681('0x3')]},'note':{'type':Sequelize[_0xd681('0x3')]},'read1stAt':{'type':Sequelize[_0xd681('0x4')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xd681('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xd681('0x6')]('in',_0xd681('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x8352=['STRING','DATE','ENUM','out','sequelize','BOOLEAN'];(function(_0x36cc2f,_0x2e297a){var _0x31be72=function(_0x3d4252){while(--_0x3d4252){_0x36cc2f['push'](_0x36cc2f['shift']());}};_0x31be72(++_0x2e297a);}(_0x8352,0x118));var _0x2835=function(_0x1b68e0,_0x305760){_0x1b68e0=_0x1b68e0-0x0;var _0x33ac6f=_0x8352[_0x1b68e0];return _0x33ac6f;};'use strict';var Sequelize=require(_0x2835('0x0'));module['exports']={'closed':{'type':Sequelize[_0x2835('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x2835('0x2')]},'secondDisposition':{'type':Sequelize[_0x2835('0x2')]},'thirdDisposition':{'type':Sequelize[_0x2835('0x2')]},'note':{'type':Sequelize[_0x2835('0x2')]},'read1stAt':{'type':Sequelize[_0x2835('0x3')]},'fax':{'type':Sequelize[_0x2835('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x2835('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2835('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x2835('0x4')]('in',_0x2835('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index dbe493d..3b2d564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f1=['FaxMessage','Messages','createdAt','get','mkdirSync','basename','createReadStream','createWriteStream','resolve','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','offset','limit','count','set','json','destroy','then','sendStatus','error','stack','name','send','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','catch','show','params','model','keys','filters','intersection','fields','attributes','length','includeAll','include','merge','create','body','update','find','describe','addMessage','ids','omit','findOne','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','unix','toString','root','files','join','server','attachments','transcript-%d-%s.zip','push','Attachment'];(function(_0x4bcc51,_0x4625aa){var _0x459b59=function(_0x145d5d){while(--_0x145d5d){_0x4bcc51['push'](_0x4bcc51['shift']());}};_0x459b59(++_0x4625aa);}(_0x54f1,0x75));var _0x154f=function(_0x4fe8eb,_0xb5bec){_0x4fe8eb=_0x4fe8eb-0x0;var _0xe72d02=_0x54f1[_0x4fe8eb];return _0xe72d02;};'use strict';var rimraf=require(_0x154f('0x0'));var zipdir=require(_0x154f('0x1'));var moment=require(_0x154f('0x2'));var BPromise=require(_0x154f('0x3'));var util=require(_0x154f('0x4'));var path=require(_0x154f('0x5'));var fs=require('fs');var _=require(_0x154f('0x6'));var Redis=require(_0x154f('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0x154f('0x8'));var logger=require(_0x154f('0x9'))('api');var config=require(_0x154f('0xa'));var db=require(_0x154f('0xb'))['db'];config[_0x154f('0xc')]=_['defaults'](config[_0x154f('0xc')],{'host':_0x154f('0xd'),'port':0x18eb});var socket=require(_0x154f('0xe'))(new Redis(config[_0x154f('0xc')]));require(_0x154f('0xf'))[_0x154f('0x10')](socket);function respondWithStatusCode(_0x2bc0a7,_0x512d79){_0x512d79=_0x512d79||0xcc;return function(_0x46a0e5){if(_0x46a0e5){return _0x2bc0a7['sendStatus'](_0x512d79);}return _0x2bc0a7[_0x154f('0x11')](_0x512d79)[_0x154f('0x12')]();};}function respondWithResult(_0x4b86db,_0x37fc40){_0x37fc40=_0x37fc40||0xc8;return function(_0xfe3626){if(_0xfe3626){return _0x4b86db[_0x154f('0x11')](_0x37fc40)['json'](_0xfe3626);}};}function respondWithFilteredResult(_0x4b2659,_0x15ad4b){return function(_0x56210a){if(_0x56210a){var _0x3772aa=typeof _0x15ad4b[_0x154f('0x13')]==='undefined'&&typeof _0x15ad4b[_0x154f('0x14')]==='undefined';var _0x2e88cd=_0x56210a[_0x154f('0x15')];var _0xef838=_0x3772aa?0x0:_0x15ad4b[_0x154f('0x13')];var _0x11b6fb=_0x3772aa?_0x56210a[_0x154f('0x15')]:_0x15ad4b[_0x154f('0x13')]+_0x15ad4b[_0x154f('0x14')];var _0x5e620a;if(_0x11b6fb>=_0x2e88cd){_0x11b6fb=_0x2e88cd;_0x5e620a=0xc8;}else{_0x5e620a=0xce;}_0x4b2659[_0x154f('0x11')](_0x5e620a);return _0x4b2659[_0x154f('0x16')]('Content-Range',_0xef838+'-'+_0x11b6fb+'/'+_0x2e88cd)[_0x154f('0x17')](_0x56210a);}return null;};}function saveUpdates(_0x2d156d){return function(_0x51050a){if(_0x51050a){return _0x51050a['update'](_0x2d156d)['then'](function(_0x109dfa){return _0x109dfa;});}return null;};}function removeEntity(_0x59a36b){return function(_0x1b6d0b){if(_0x1b6d0b){return _0x1b6d0b[_0x154f('0x18')]()[_0x154f('0x19')](function(){_0x59a36b[_0x154f('0x11')](0xcc)[_0x154f('0x12')]();});}};}function handleEntityNotFound(_0x198047){return function(_0x581888){if(!_0x581888){_0x198047[_0x154f('0x1a')](0x194);}return _0x581888;};}function handleError(_0x4628f9,_0x5e2234){_0x5e2234=_0x5e2234||0x1f4;return function(_0x414f7c){logger[_0x154f('0x1b')](_0x414f7c[_0x154f('0x1c')]);if(_0x414f7c[_0x154f('0x1d')]){delete _0x414f7c['name'];}_0x4628f9['status'](_0x5e2234)[_0x154f('0x1e')](_0x414f7c);};}exports[_0x154f('0x1f')]=function(_0x1a1e18,_0x3ad991){var _0x5cfeb7={};var _0x17ee88=_[_0x154f('0x20')](db[_0x154f('0x21')][_0x154f('0x22')],function(_0x15d695){return{'name':_0x15d695[_0x154f('0x23')],'type':_0x15d695[_0x154f('0x24')][_0x154f('0x25')]};});_0x5cfeb7=qs[_0x154f('0x26')](_0x17ee88,_0x1a1e18);return interaction[_0x154f('0x27')](_0x154f('0x28'),_0x1a1e18[_0x154f('0x29')],_0x1a1e18['user'],_0x5cfeb7,_0x17ee88)[_0x154f('0x19')](respondWithFilteredResult(_0x3ad991,_0x5cfeb7))[_0x154f('0x2a')](handleError(_0x3ad991,null));};exports[_0x154f('0x2b')]=function(_0x4d865a,_0x562381){var _0x4b97ac={'raw':![],'where':{'id':_0x4d865a[_0x154f('0x2c')]['id']}},_0x2a6738={};_0x2a6738[_0x154f('0x2d')]=_['keys'](db[_0x154f('0x21')][_0x154f('0x22')]);_0x2a6738[_0x154f('0x29')]=_[_0x154f('0x2e')](_0x4d865a['query']);_0x2a6738[_0x154f('0x2f')]=_[_0x154f('0x30')](_0x2a6738[_0x154f('0x2d')],_0x2a6738[_0x154f('0x29')]);_0x4b97ac['attributes']=_[_0x154f('0x30')](_0x2a6738[_0x154f('0x2d')],qs[_0x154f('0x31')](_0x4d865a[_0x154f('0x29')]['fields']));_0x4b97ac[_0x154f('0x32')]=_0x4b97ac[_0x154f('0x32')][_0x154f('0x33')]?_0x4b97ac['attributes']:_0x2a6738[_0x154f('0x2d')];if(_0x4d865a['query'][_0x154f('0x34')]){_0x4b97ac[_0x154f('0x35')]=[{'all':!![]}];}_0x4b97ac=_[_0x154f('0x36')]({},_0x4b97ac,_0x4d865a['options']);return db[_0x154f('0x21')]['find'](_0x4b97ac)[_0x154f('0x19')](handleEntityNotFound(_0x562381,null))[_0x154f('0x19')](respondWithResult(_0x562381,null))[_0x154f('0x2a')](handleError(_0x562381,null));};exports['create']=function(_0x41ae21,_0x3ab330){return db[_0x154f('0x21')][_0x154f('0x37')](_0x41ae21[_0x154f('0x38')],{})[_0x154f('0x19')](respondWithResult(_0x3ab330,0xc9))[_0x154f('0x2a')](handleError(_0x3ab330,null));};exports[_0x154f('0x39')]=function(_0x4b30bf,_0x571bee){if(_0x4b30bf[_0x154f('0x38')]['id']){delete _0x4b30bf['body']['id'];}return db[_0x154f('0x21')][_0x154f('0x3a')]({'where':{'id':_0x4b30bf[_0x154f('0x2c')]['id']}})[_0x154f('0x19')](handleEntityNotFound(_0x571bee,null))[_0x154f('0x19')](saveUpdates(_0x4b30bf['body'],null))['then'](respondWithResult(_0x571bee,null))[_0x154f('0x2a')](handleError(_0x571bee,null));};exports[_0x154f('0x18')]=function(_0x59070c,_0x592be5){return db['FaxInteraction']['find']({'where':{'id':_0x59070c['params']['id']}})[_0x154f('0x19')](handleEntityNotFound(_0x592be5,null))[_0x154f('0x19')](removeEntity(_0x592be5,null))[_0x154f('0x2a')](handleError(_0x592be5,null));};exports[_0x154f('0x3b')]=function(_0x33456e,_0x8a673b){return db['FaxInteraction']['describe']()['then'](respondWithResult(_0x8a673b,null))[_0x154f('0x2a')](handleError(_0x8a673b,null));};exports[_0x154f('0x3c')]=function(_0x3e28a0,_0x8bde3a){return db['FaxMessage'][_0x154f('0x3a')]({'where':{'id':_0x3e28a0[_0x154f('0x2c')]['id']}})[_0x154f('0x19')](handleEntityNotFound(_0x8bde3a,null))[_0x154f('0x19')](function(_0x5cbc3d){if(_0x5cbc3d){return _0x5cbc3d['addMessage'](_0x3e28a0['body'][_0x154f('0x3d')],_[_0x154f('0x3e')](_0x3e28a0[_0x154f('0x38')],[_0x154f('0x3d'),'id'])||{});}})['then'](respondWithResult(_0x8bde3a,null))['catch'](handleError(_0x8bde3a,null));};exports['getMessages']=function(_0x2a7b7f,_0x287d9){var _0x16e457={'raw':![],'where':{}};var _0x28f4c1={};var _0x37bdc7={'count':0x0,'rows':[]};return db[_0x154f('0x21')][_0x154f('0x3f')]({'where':{'id':_0x2a7b7f[_0x154f('0x2c')]['id']}})[_0x154f('0x19')](handleEntityNotFound(_0x287d9,null))[_0x154f('0x19')](function(_0x1f0868){if(_0x1f0868){_0x28f4c1[_0x154f('0x2d')]=_[_0x154f('0x2e')](db['FaxMessage'][_0x154f('0x22')]);_0x28f4c1[_0x154f('0x29')]=_[_0x154f('0x2e')](_0x2a7b7f[_0x154f('0x29')]);_0x28f4c1['filters']=_[_0x154f('0x30')](_0x28f4c1[_0x154f('0x2d')],_0x28f4c1[_0x154f('0x29')]);_0x16e457[_0x154f('0x32')]=_[_0x154f('0x30')](_0x28f4c1[_0x154f('0x2d')],qs[_0x154f('0x31')](_0x2a7b7f[_0x154f('0x29')][_0x154f('0x31')]));_0x16e457[_0x154f('0x32')]=_0x16e457['attributes'][_0x154f('0x33')]?_0x16e457[_0x154f('0x32')]:_0x28f4c1[_0x154f('0x2d')];if(!_0x2a7b7f['query']['hasOwnProperty'](_0x154f('0x40'))){_0x16e457['limit']=qs[_0x154f('0x14')](_0x2a7b7f['query'][_0x154f('0x14')]);_0x16e457[_0x154f('0x13')]=qs[_0x154f('0x13')](_0x2a7b7f[_0x154f('0x29')][_0x154f('0x13')]);}_0x16e457[_0x154f('0x41')]=qs[_0x154f('0x42')](_0x2a7b7f[_0x154f('0x29')][_0x154f('0x42')]);_0x16e457[_0x154f('0x43')]=qs['filters'](_[_0x154f('0x44')](_0x2a7b7f[_0x154f('0x29')],_0x28f4c1['filters']));_0x16e457[_0x154f('0x43')][_0x154f('0x45')]=_0x1f0868['id'];if(_0x2a7b7f[_0x154f('0x29')][_0x154f('0x46')]){_0x16e457[_0x154f('0x43')]=_[_0x154f('0x36')](_0x16e457[_0x154f('0x43')],{'$or':_['map'](_0x16e457[_0x154f('0x32')],function(_0x11e97f){var _0x3d3769={};_0x3d3769[_0x11e97f]={'$like':'%'+_0x2a7b7f[_0x154f('0x29')][_0x154f('0x46')]+'%'};return _0x3d3769;})});}if(_0x2a7b7f[_0x154f('0x29')][_0x154f('0x47')]){var _0x4dd8b3=_0x2a7b7f['query']['$gte']['split'](',');var _0x8ae696={};_0x8ae696[_0x4dd8b3[0x0]]={'$gte':moment(_0x4dd8b3[0x1])[_0x154f('0x48')](_0x154f('0x49'))};_0x16e457[_0x154f('0x43')]=_[_0x154f('0x36')](_0x16e457[_0x154f('0x43')],_0x8ae696);}_0x16e457=_[_0x154f('0x36')]({},_0x16e457,_0x2a7b7f['options']);return db['FaxMessage'][_0x154f('0x15')]({'where':_0x16e457[_0x154f('0x43')]})[_0x154f('0x19')](function(_0x416b09){_0x37bdc7[_0x154f('0x15')]=_0x416b09;if(_0x2a7b7f[_0x154f('0x29')][_0x154f('0x34')]){_0x16e457[_0x154f('0x35')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x16e457);})[_0x154f('0x19')](function(_0x4964e7){_0x37bdc7[_0x154f('0x4a')]=_0x4964e7;return _0x37bdc7;});}})[_0x154f('0x19')](respondWithFilteredResult(_0x287d9,_0x16e457))[_0x154f('0x2a')](handleError(_0x287d9,null));};exports[_0x154f('0x4b')]=function(_0x5434d3,_0xcf51a4){return db[_0x154f('0x21')][_0x154f('0x3a')]({'where':{'id':_0x5434d3[_0x154f('0x2c')]['id']}})[_0x154f('0x19')](handleEntityNotFound(_0xcf51a4,null))[_0x154f('0x19')](function(_0x25fda4){if(_0x25fda4){return _0x25fda4[_0x154f('0x4c')](_0x5434d3[_0x154f('0x38')][_0x154f('0x3d')],_[_0x154f('0x3e')](_0x5434d3[_0x154f('0x38')],[_0x154f('0x3d'),'id'])||{})[_0x154f('0x4d')](function(){return db[_0x154f('0x4e')][_0x154f('0x27')]({'attributes':['id',_0x154f('0x1d'),'color'],'where':{'id':_0x5434d3[_0x154f('0x38')][_0x154f('0x3d')]}});})[_0x154f('0x19')](function(_0x3c4aa){socket[_0x154f('0x4f')](_0x154f('0x50'),{'id':Number(_0x5434d3['params']['id']),'tags':_0x3c4aa||[]});return{'id':Number(_0x5434d3[_0x154f('0x2c')]['id']),'tags':_0x3c4aa||[]};});}})[_0x154f('0x19')](respondWithResult(_0xcf51a4,null))[_0x154f('0x2a')](handleError(_0xcf51a4,null));};exports[_0x154f('0x51')]=function(_0x4749c3,_0x219e75){return db[_0x154f('0x21')]['find']({'where':{'id':_0x4749c3[_0x154f('0x2c')]['id']}})[_0x154f('0x19')](handleEntityNotFound(_0x219e75,null))[_0x154f('0x19')](function(_0x527de7){if(_0x527de7){return _0x527de7[_0x154f('0x51')](_0x4749c3[_0x154f('0x29')][_0x154f('0x3d')]);}})[_0x154f('0x19')](respondWithStatusCode(_0x219e75,null))[_0x154f('0x2a')](handleError(_0x219e75,null));};exports[_0x154f('0x52')]=function(_0x144eed,_0x1d0836){var _0x573662=moment()[_0x154f('0x53')]()[_0x154f('0x54')]();var _0x1547a9=path['join'](config[_0x154f('0x55')],'server',_0x154f('0x56'),'tmp');var _0x254bc1=path[_0x154f('0x57')](config[_0x154f('0x55')],_0x154f('0x58'),_0x154f('0x56'),_0x154f('0x59'));var _0x3639a3=path[_0x154f('0x57')](_0x1547a9,_0x573662);var _0x526a73=util[_0x154f('0x48')](_0x154f('0x5a'),_0x144eed[_0x154f('0x2c')]['id'],_0x573662);var _0x1280b1=path[_0x154f('0x57')](_0x1547a9,_0x526a73);var _0x445e1f=[];_0x445e1f[_0x154f('0x5b')]({'model':db['Attachment'],'as':_0x154f('0x5c'),'raw':!![]});var _0x44a077=[{'model':db[_0x154f('0x5d')],'as':_0x154f('0x5e'),'attributes':['id',_0x154f('0x38'),_0x154f('0x5f')],'include':_0x445e1f}];return db[_0x154f('0x21')]['find']({'where':{'id':_0x144eed[_0x154f('0x2c')]['id']},'include':_0x44a077})[_0x154f('0x19')](handleEntityNotFound(_0x1d0836,null))[_0x154f('0x19')](function(_0x2658a6){if(_0x2658a6&&_0x2658a6['Messages']){var _0x392118=_0x2658a6[_0x154f('0x60')]({'plain':!![]});fs[_0x154f('0x61')](_0x3639a3);for(var _0x2b5eb0=0x0;_0x2b5eb0<_0x392118[_0x154f('0x5e')]['length'];_0x2b5eb0++){var _0x4ba627=_0x392118[_0x154f('0x5e')][_0x2b5eb0][_0x154f('0x5c')];if(_0x4ba627){var _0x5d9de0=path['join'](_0x254bc1,_0x4ba627[_0x154f('0x62')]);if(fs['existsSync'](_0x5d9de0)){fs[_0x154f('0x63')](_0x5d9de0)['pipe'](fs[_0x154f('0x64')](path[_0x154f('0x57')](_0x3639a3,_0x4ba627[_0x154f('0x62')])));}}}return BPromise[_0x154f('0x65')]()['then'](function(){return new BPromise(function(_0x48f079,_0x33bd5e){zipdir(_0x3639a3,{'saveTo':_0x1280b1},function(_0x4f34ea,_0x310497){if(_0x4f34ea)return _0x33bd5e(_0x4f34ea);return _0x48f079(_0x310497);});})[_0x154f('0x19')](function(){return new BPromise(function(_0x41e5f5,_0x54aa02){rimraf(_0x3639a3,function(_0x5e6a31){if(_0x5e6a31)_0x54aa02(_0x5e6a31);return _0x41e5f5();});});})[_0x154f('0x19')](function(){return _0x1d0836['download'](_0x1280b1,_0x526a73,function(_0x18f82f){if(_0x18f82f){console[_0x154f('0x66')](_0x154f('0x67'),_0x18f82f);}else{fs[_0x154f('0x68')](_0x1280b1);}});});});}else{return _0x1d0836['sendStatus'](0xc8);}})[_0x154f('0x2a')](handleError(_0x1d0836,null));};
\ No newline at end of file
+var _0xe14e=['defaults','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','index','map','FaxInteraction','fieldName','type','getOptions','findAll','fax','query','user','show','params','model','keys','rawAttributes','filters','intersection','attributes','fields','length','include','merge','options','find','create','body','catch','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','setTags','spread','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','attachments','format','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment'];(function(_0x212dad,_0xb862ef){var _0x4fea3f=function(_0x31664b){while(--_0x31664b){_0x212dad['push'](_0x212dad['shift']());}};_0x4fea3f(++_0xb862ef);}(_0xe14e,0x1a1));var _0xee14=function(_0x146572,_0x57d158){_0x146572=_0x146572-0x0;var _0x54459b=_0xe14e[_0x146572];return _0x54459b;};'use strict';var rimraf=require(_0xee14('0x0'));var zipdir=require(_0xee14('0x1'));var moment=require(_0xee14('0x2'));var BPromise=require(_0xee14('0x3'));var util=require(_0xee14('0x4'));var path=require(_0xee14('0x5'));var fs=require('fs');var _=require(_0xee14('0x6'));var Redis=require('ioredis');var interaction=require(_0xee14('0x7'));var qs=require(_0xee14('0x8'));var logger=require('../../config/logger')(_0xee14('0x9'));var config=require(_0xee14('0xa'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xee14('0xb')](config[_0xee14('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xee14('0xd'))(new Redis(config['redis']));require(_0xee14('0xe'))[_0xee14('0xf')](socket);function respondWithStatusCode(_0x33e761,_0x34bf24){_0x34bf24=_0x34bf24||0xcc;return function(_0x50e4a0){if(_0x50e4a0){return _0x33e761[_0xee14('0x10')](_0x34bf24);}return _0x33e761[_0xee14('0x11')](_0x34bf24)[_0xee14('0x12')]();};}function respondWithResult(_0x2a7ec0,_0x134d76){_0x134d76=_0x134d76||0xc8;return function(_0x447239){if(_0x447239){return _0x2a7ec0['status'](_0x134d76)[_0xee14('0x13')](_0x447239);}};}function respondWithFilteredResult(_0x4b374a,_0x27803d){return function(_0x3e45b7){if(_0x3e45b7){var _0x2e833c=typeof _0x27803d[_0xee14('0x14')]===_0xee14('0x15')&&typeof _0x27803d[_0xee14('0x16')]==='undefined';var _0x2321db=_0x3e45b7[_0xee14('0x17')];var _0x304af3=_0x2e833c?0x0:_0x27803d[_0xee14('0x14')];var _0x24f981=_0x2e833c?_0x3e45b7[_0xee14('0x17')]:_0x27803d[_0xee14('0x14')]+_0x27803d[_0xee14('0x16')];var _0x6d1479;if(_0x24f981>=_0x2321db){_0x24f981=_0x2321db;_0x6d1479=0xc8;}else{_0x6d1479=0xce;}_0x4b374a[_0xee14('0x11')](_0x6d1479);return _0x4b374a[_0xee14('0x18')](_0xee14('0x19'),_0x304af3+'-'+_0x24f981+'/'+_0x2321db)[_0xee14('0x13')](_0x3e45b7);}return null;};}function saveUpdates(_0xdc22f6){return function(_0x2570d5){if(_0x2570d5){return _0x2570d5[_0xee14('0x1a')](_0xdc22f6)[_0xee14('0x1b')](function(_0x3f4dd7){return _0x3f4dd7;});}return null;};}function removeEntity(_0x1e1c64){return function(_0x5c0d9d){if(_0x5c0d9d){return _0x5c0d9d[_0xee14('0x1c')]()[_0xee14('0x1b')](function(){_0x1e1c64[_0xee14('0x11')](0xcc)[_0xee14('0x12')]();});}};}function handleEntityNotFound(_0x2ce96d){return function(_0x387a03){if(!_0x387a03){_0x2ce96d[_0xee14('0x10')](0x194);}return _0x387a03;};}function handleError(_0x35e191,_0x4587b8){_0x4587b8=_0x4587b8||0x1f4;return function(_0x42f78f){logger[_0xee14('0x1d')](_0x42f78f[_0xee14('0x1e')]);if(_0x42f78f[_0xee14('0x1f')]){delete _0x42f78f[_0xee14('0x1f')];}_0x35e191[_0xee14('0x11')](_0x4587b8)['send'](_0x42f78f);};}exports[_0xee14('0x20')]=function(_0x4c9fb6,_0x2a4c9f){var _0x516327={};var _0x3bfb17=_[_0xee14('0x21')](db[_0xee14('0x22')]['rawAttributes'],function(_0x4e87b1){return{'name':_0x4e87b1[_0xee14('0x23')],'type':_0x4e87b1[_0xee14('0x24')]['key']};});_0x516327=qs[_0xee14('0x25')](_0x3bfb17,_0x4c9fb6);return interaction[_0xee14('0x26')](_0xee14('0x27'),_0x4c9fb6[_0xee14('0x28')],_0x4c9fb6[_0xee14('0x29')],_0x516327,_0x3bfb17)['then'](respondWithFilteredResult(_0x2a4c9f,_0x516327))['catch'](handleError(_0x2a4c9f,null));};exports[_0xee14('0x2a')]=function(_0x20de95,_0x31a82c){var _0x517d47={'raw':![],'where':{'id':_0x20de95[_0xee14('0x2b')]['id']}},_0x47adb1={};_0x47adb1[_0xee14('0x2c')]=_[_0xee14('0x2d')](db[_0xee14('0x22')][_0xee14('0x2e')]);_0x47adb1[_0xee14('0x28')]=_[_0xee14('0x2d')](_0x20de95['query']);_0x47adb1[_0xee14('0x2f')]=_[_0xee14('0x30')](_0x47adb1['model'],_0x47adb1[_0xee14('0x28')]);_0x517d47[_0xee14('0x31')]=_[_0xee14('0x30')](_0x47adb1[_0xee14('0x2c')],qs[_0xee14('0x32')](_0x20de95['query']['fields']));_0x517d47[_0xee14('0x31')]=_0x517d47[_0xee14('0x31')][_0xee14('0x33')]?_0x517d47[_0xee14('0x31')]:_0x47adb1[_0xee14('0x2c')];if(_0x20de95[_0xee14('0x28')]['includeAll']){_0x517d47[_0xee14('0x34')]=[{'all':!![]}];}_0x517d47=_[_0xee14('0x35')]({},_0x517d47,_0x20de95[_0xee14('0x36')]);return db[_0xee14('0x22')][_0xee14('0x37')](_0x517d47)[_0xee14('0x1b')](handleEntityNotFound(_0x31a82c,null))[_0xee14('0x1b')](respondWithResult(_0x31a82c,null))['catch'](handleError(_0x31a82c,null));};exports[_0xee14('0x38')]=function(_0x2d7dc4,_0x19d112){return db['FaxInteraction'][_0xee14('0x38')](_0x2d7dc4[_0xee14('0x39')],{})[_0xee14('0x1b')](respondWithResult(_0x19d112,0xc9))['catch'](handleError(_0x19d112,null));};exports[_0xee14('0x1a')]=function(_0x29cfa8,_0x599538){if(_0x29cfa8['body']['id']){delete _0x29cfa8[_0xee14('0x39')]['id'];}return db[_0xee14('0x22')][_0xee14('0x37')]({'where':{'id':_0x29cfa8[_0xee14('0x2b')]['id']}})['then'](handleEntityNotFound(_0x599538,null))['then'](saveUpdates(_0x29cfa8['body'],null))['then'](respondWithResult(_0x599538,null))['catch'](handleError(_0x599538,null));};exports[_0xee14('0x1c')]=function(_0x5c1b05,_0x453ad5){return db[_0xee14('0x22')][_0xee14('0x37')]({'where':{'id':_0x5c1b05[_0xee14('0x2b')]['id']}})['then'](handleEntityNotFound(_0x453ad5,null))[_0xee14('0x1b')](removeEntity(_0x453ad5,null))[_0xee14('0x3a')](handleError(_0x453ad5,null));};exports[_0xee14('0x3b')]=function(_0x47f524,_0x25f1d8){return db[_0xee14('0x22')][_0xee14('0x3b')]()[_0xee14('0x1b')](respondWithResult(_0x25f1d8,null))[_0xee14('0x3a')](handleError(_0x25f1d8,null));};exports[_0xee14('0x3c')]=function(_0x550d1d,_0x439aa1){return db[_0xee14('0x3d')][_0xee14('0x37')]({'where':{'id':_0x550d1d[_0xee14('0x2b')]['id']}})['then'](handleEntityNotFound(_0x439aa1,null))[_0xee14('0x1b')](function(_0x27ba56){if(_0x27ba56){return _0x27ba56[_0xee14('0x3c')](_0x550d1d[_0xee14('0x39')][_0xee14('0x3e')],_[_0xee14('0x3f')](_0x550d1d[_0xee14('0x39')],[_0xee14('0x3e'),'id'])||{});}})[_0xee14('0x1b')](respondWithResult(_0x439aa1,null))[_0xee14('0x3a')](handleError(_0x439aa1,null));};exports[_0xee14('0x40')]=function(_0x4ab634,_0x149b64){var _0x147a65={'raw':![],'where':{}};var _0x1ac295={};var _0x112486={'count':0x0,'rows':[]};return db[_0xee14('0x22')][_0xee14('0x41')]({'where':{'id':_0x4ab634[_0xee14('0x2b')]['id']}})['then'](handleEntityNotFound(_0x149b64,null))[_0xee14('0x1b')](function(_0x3e1913){if(_0x3e1913){_0x1ac295[_0xee14('0x2c')]=_[_0xee14('0x2d')](db[_0xee14('0x3d')][_0xee14('0x2e')]);_0x1ac295[_0xee14('0x28')]=_[_0xee14('0x2d')](_0x4ab634[_0xee14('0x28')]);_0x1ac295[_0xee14('0x2f')]=_['intersection'](_0x1ac295[_0xee14('0x2c')],_0x1ac295[_0xee14('0x28')]);_0x147a65[_0xee14('0x31')]=_[_0xee14('0x30')](_0x1ac295[_0xee14('0x2c')],qs['fields'](_0x4ab634[_0xee14('0x28')][_0xee14('0x32')]));_0x147a65['attributes']=_0x147a65['attributes'][_0xee14('0x33')]?_0x147a65[_0xee14('0x31')]:_0x1ac295[_0xee14('0x2c')];if(!_0x4ab634['query']['hasOwnProperty'](_0xee14('0x42'))){_0x147a65['limit']=qs[_0xee14('0x16')](_0x4ab634[_0xee14('0x28')][_0xee14('0x16')]);_0x147a65['offset']=qs[_0xee14('0x14')](_0x4ab634[_0xee14('0x28')][_0xee14('0x14')]);}_0x147a65[_0xee14('0x43')]=qs[_0xee14('0x44')](_0x4ab634[_0xee14('0x28')][_0xee14('0x44')]);_0x147a65[_0xee14('0x45')]=qs[_0xee14('0x2f')](_[_0xee14('0x46')](_0x4ab634[_0xee14('0x28')],_0x1ac295['filters']));_0x147a65[_0xee14('0x45')][_0xee14('0x47')]=_0x3e1913['id'];if(_0x4ab634[_0xee14('0x28')][_0xee14('0x48')]){_0x147a65[_0xee14('0x45')]=_['merge'](_0x147a65[_0xee14('0x45')],{'$or':_['map'](_0x147a65[_0xee14('0x31')],function(_0x44ddd7){var _0x2f91e9={};_0x2f91e9[_0x44ddd7]={'$like':'%'+_0x4ab634[_0xee14('0x28')][_0xee14('0x48')]+'%'};return _0x2f91e9;})});}if(_0x4ab634['query'][_0xee14('0x49')]){var _0x13ba8a=_0x4ab634[_0xee14('0x28')]['$gte'][_0xee14('0x4a')](',');var _0x201545={};_0x201545[_0x13ba8a[0x0]]={'$gte':moment(_0x13ba8a[0x1])['format'](_0xee14('0x4b'))};_0x147a65[_0xee14('0x45')]=_[_0xee14('0x35')](_0x147a65[_0xee14('0x45')],_0x201545);}_0x147a65=_[_0xee14('0x35')]({},_0x147a65,_0x4ab634[_0xee14('0x36')]);return db['FaxMessage'][_0xee14('0x17')]({'where':_0x147a65['where']})['then'](function(_0x59bebe){_0x112486['count']=_0x59bebe;if(_0x4ab634['query'][_0xee14('0x4c')]){_0x147a65[_0xee14('0x34')]=[{'all':!![]}];}return db[_0xee14('0x3d')][_0xee14('0x26')](_0x147a65);})[_0xee14('0x1b')](function(_0x4bdc83){_0x112486['rows']=_0x4bdc83;return _0x112486;});}})['then'](respondWithFilteredResult(_0x149b64,_0x147a65))['catch'](handleError(_0x149b64,null));};exports['addTags']=function(_0x5bb044,_0x4893e4){return db[_0xee14('0x22')]['find']({'where':{'id':_0x5bb044[_0xee14('0x2b')]['id']}})[_0xee14('0x1b')](handleEntityNotFound(_0x4893e4,null))['then'](function(_0x4dfa2c){if(_0x4dfa2c){return _0x4dfa2c[_0xee14('0x4d')](_0x5bb044[_0xee14('0x39')][_0xee14('0x3e')],_[_0xee14('0x3f')](_0x5bb044[_0xee14('0x39')],['ids','id'])||{})[_0xee14('0x4e')](function(){return db['Tag'][_0xee14('0x26')]({'attributes':['id','name','color'],'where':{'id':_0x5bb044['body'][_0xee14('0x3e')]}});})[_0xee14('0x1b')](function(_0x93b61e){socket[_0xee14('0x4f')](_0xee14('0x50'),{'id':Number(_0x5bb044[_0xee14('0x2b')]['id']),'tags':_0x93b61e||[]});return{'id':Number(_0x5bb044[_0xee14('0x2b')]['id']),'tags':_0x93b61e||[]};});}})['then'](respondWithResult(_0x4893e4,null))[_0xee14('0x3a')](handleError(_0x4893e4,null));};exports['removeTags']=function(_0x25c58d,_0xda2255){return db[_0xee14('0x22')][_0xee14('0x37')]({'where':{'id':_0x25c58d['params']['id']}})['then'](handleEntityNotFound(_0xda2255,null))['then'](function(_0x877606){if(_0x877606){return _0x877606[_0xee14('0x51')](_0x25c58d[_0xee14('0x28')]['ids']);}})[_0xee14('0x1b')](respondWithStatusCode(_0xda2255,null))[_0xee14('0x3a')](handleError(_0xda2255,null));};exports[_0xee14('0x52')]=function(_0x3e06a6,_0x4ff307){var _0x5d3ed6=moment()[_0xee14('0x53')]()[_0xee14('0x54')]();var _0x1c7ee9=path[_0xee14('0x55')](config['root'],_0xee14('0x56'),_0xee14('0x57'),_0xee14('0x58'));var _0x58cf09=path['join'](config[_0xee14('0x59')],_0xee14('0x56'),_0xee14('0x57'),_0xee14('0x5a'));var _0x13f605=path[_0xee14('0x55')](_0x1c7ee9,_0x5d3ed6);var _0x1dd714=util[_0xee14('0x5b')](_0xee14('0x5c'),_0x3e06a6[_0xee14('0x2b')]['id'],_0x5d3ed6);var _0x2c04da=path[_0xee14('0x55')](_0x1c7ee9,_0x1dd714);var _0x331edd=[];_0x331edd[_0xee14('0x5d')]({'model':db[_0xee14('0x5e')],'as':_0xee14('0x5e'),'raw':!![]});var _0x422d9f=[{'model':db['FaxMessage'],'as':_0xee14('0x5f'),'attributes':['id',_0xee14('0x39'),_0xee14('0x60')],'include':_0x331edd}];return db[_0xee14('0x22')][_0xee14('0x37')]({'where':{'id':_0x3e06a6[_0xee14('0x2b')]['id']},'include':_0x422d9f})['then'](handleEntityNotFound(_0x4ff307,null))[_0xee14('0x1b')](function(_0x3c7c14){if(_0x3c7c14&&_0x3c7c14[_0xee14('0x5f')]){var _0x37338b=_0x3c7c14[_0xee14('0x61')]({'plain':!![]});fs[_0xee14('0x62')](_0x13f605);for(var _0x457532=0x0;_0x457532<_0x37338b[_0xee14('0x5f')]['length'];_0x457532++){var _0x3ed717=_0x37338b['Messages'][_0x457532][_0xee14('0x5e')];if(_0x3ed717){var _0x4ff8ff=path[_0xee14('0x55')](_0x58cf09,_0x3ed717[_0xee14('0x63')]);if(fs[_0xee14('0x64')](_0x4ff8ff)){fs[_0xee14('0x65')](_0x4ff8ff)[_0xee14('0x66')](fs[_0xee14('0x67')](path['join'](_0x13f605,_0x3ed717[_0xee14('0x63')])));}}}return BPromise[_0xee14('0x68')]()[_0xee14('0x1b')](function(){return new BPromise(function(_0x38048c,_0x517ea1){zipdir(_0x13f605,{'saveTo':_0x2c04da},function(_0x1345a7,_0x3574b6){if(_0x1345a7)return _0x517ea1(_0x1345a7);return _0x38048c(_0x3574b6);});})[_0xee14('0x1b')](function(){return new BPromise(function(_0x4ed10a,_0xa1d93c){rimraf(_0x13f605,function(_0x47ad0b){if(_0x47ad0b)_0xa1d93c(_0x47ad0b);return _0x4ed10a();});});})[_0xee14('0x1b')](function(){return _0x4ff307[_0xee14('0x52')](_0x2c04da,_0x1dd714,function(_0x5abe01){if(_0x5abe01){console[_0xee14('0x69')]('err',_0x5abe01);}else{fs[_0xee14('0x6a')](_0x2c04da);}});});});}else{return _0x4ff307[_0xee14('0x10')](0xc8);}})[_0xee14('0x3a')](handleError(_0x4ff307,null));};
\ No newline at end of file
index 8097d9b..3f8b4e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66f6=['emit','catch','hasOwnProperty','hook','events','setMaxListeners','save','update','remove','getUsers','then','setDataValue','findAll','unreadMessages','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x66f6,0xf4));var _0x666f=function(_0x5c9e66,_0xb0a6ba){_0x5c9e66=_0x5c9e66-0x0;var _0x2cfb9b=_0x66f6[_0x5c9e66];return _0x2cfb9b;};'use strict';var EventEmitter=require(_0x666f('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x666f('0x1')](0x0);var events={'afterCreate':_0x666f('0x2'),'afterUpdate':_0x666f('0x3'),'afterDestroy':_0x666f('0x4')};function emitEvent(_0x11ed4c){return function(_0x1c2566,_0x3be3dd,_0xa672bf){_0x1c2566[_0x666f('0x5')]({'attributes':['id'],'raw':!![]})[_0x666f('0x6')](function(_0x108d0b){_0x1c2566[_0x666f('0x7')]('Users',_0x108d0b['map'](function(_0x5e3a85){return{'id':_0x5e3a85['id']};}));return FaxMessage[_0x666f('0x8')]({'where':{'FaxInteractionId':_0x1c2566['id'],'direction':'in','read':![]},'raw':!![]});})[_0x666f('0x6')](function(_0x230768){_0x1c2566[_0x666f('0x7')](_0x666f('0x9'),_0x230768[_0x666f('0xa')]);FaxInteractionEvents['emit'](_0x11ed4c+':'+_0x1c2566['id'],_0x1c2566);FaxInteractionEvents[_0x666f('0xb')](_0x11ed4c,_0x1c2566);_0xa672bf(null);})[_0x666f('0xc')](_0xa672bf(null));};}for(var e in events){if(events[_0x666f('0xd')](e)){var event=events[e];FaxInteraction[_0x666f('0xe')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0xbbca=['exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','then','Users','map','unreadMessages','length','emit','catch','hook'];(function(_0x4b03c9,_0x17ce03){var _0x161ba2=function(_0xb952db){while(--_0xb952db){_0x4b03c9['push'](_0x4b03c9['shift']());}};_0x161ba2(++_0x17ce03);}(_0xbbca,0xe2));var _0xabbc=function(_0x2681ea,_0x54af93){_0x2681ea=_0x2681ea-0x0;var _0x29b25e=_0xbbca[_0x2681ea];return _0x29b25e;};'use strict';var EventEmitter=require(_0xabbc('0x0'));var FaxInteraction=require(_0xabbc('0x1'))['db']['FaxInteraction'];var FaxMessage=require(_0xabbc('0x1'))['db'][_0xabbc('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xabbc('0x3')](0x0);var events={'afterCreate':_0xabbc('0x4'),'afterUpdate':_0xabbc('0x5'),'afterDestroy':'remove'};function emitEvent(_0x59d1d7){return function(_0x291ab6,_0x217e6c,_0x5c668a){_0x291ab6['getUsers']({'attributes':['id'],'raw':!![]})[_0xabbc('0x6')](function(_0x38a7cf){_0x291ab6['setDataValue'](_0xabbc('0x7'),_0x38a7cf[_0xabbc('0x8')](function(_0x301b12){return{'id':_0x301b12['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x291ab6['id'],'direction':'in','read':![]},'raw':!![]});})[_0xabbc('0x6')](function(_0x1dc774){_0x291ab6['setDataValue'](_0xabbc('0x9'),_0x1dc774[_0xabbc('0xa')]);FaxInteractionEvents['emit'](_0x59d1d7+':'+_0x291ab6['id'],_0x291ab6);FaxInteractionEvents[_0xabbc('0xb')](_0x59d1d7,_0x291ab6);_0x5c668a(null);})[_0xabbc('0xc')](_0x5c668a(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0xabbc('0xd')](e,emitEvent(event));}}module[_0xabbc('0xe')]=FaxInteractionEvents;
\ No newline at end of file
index e265d97..afcdb8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e6=['api','moment','request-promise','rimraf','./faxInteraction.attributes','exports','FaxInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0xa32dc1,_0x242262){var _0x237742=function(_0x20e5af){while(--_0x20e5af){_0xa32dc1['push'](_0xa32dc1['shift']());}};_0x237742(++_0x242262);}(_0xe1e6,0x67));var _0x6e1e=function(_0xbb29d2,_0x76d349){_0xbb29d2=_0xbb29d2-0x0;var _0x5d8e0c=_0xe1e6[_0xbb29d2];return _0x5d8e0c;};'use strict';var _=require(_0x6e1e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6e1e('0x1'));var moment=require(_0x6e1e('0x2'));var BPromise=require('bluebird');var rp=require(_0x6e1e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6e1e('0x4'));var config=require('../../config/environment');var attributes=require(_0x6e1e('0x5'));module[_0x6e1e('0x6')]=function(_0x418d25,_0x78014e){return _0x418d25['define'](_0x6e1e('0x7'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x13fd5a,_0x711d2f,_0x55f776){if(_0x13fd5a[_0x6e1e('0x8')](_0x6e1e('0x9'))){_0x13fd5a[_0x6e1e('0xa')]=moment()[_0x6e1e('0xb')](_0x6e1e('0xc'));}_0x55f776(null,_0x13fd5a);}}});};
\ No newline at end of file
+var _0x0bbe=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger'];(function(_0x5e1404,_0x4592e1){var _0x40e80b=function(_0x2388cc){while(--_0x2388cc){_0x5e1404['push'](_0x5e1404['shift']());}};_0x40e80b(++_0x4592e1);}(_0x0bbe,0x1e3));var _0xe0bb=function(_0x33c969,_0x122028){_0x33c969=_0x33c969-0x0;var _0x5ec6c4=_0x0bbe[_0x33c969];return _0x5ec6c4;};'use strict';var _=require(_0xe0bb('0x0'));var util=require(_0xe0bb('0x1'));var logger=require(_0xe0bb('0x2'))(_0xe0bb('0x3'));var moment=require(_0xe0bb('0x4'));var BPromise=require(_0xe0bb('0x5'));var rp=require(_0xe0bb('0x6'));var fs=require('fs');var path=require(_0xe0bb('0x7'));var rimraf=require(_0xe0bb('0x8'));var config=require(_0xe0bb('0x9'));var attributes=require(_0xe0bb('0xa'));module[_0xe0bb('0xb')]=function(_0x4770ed,_0x133f84){return _0x4770ed[_0xe0bb('0xc')](_0xe0bb('0xd'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3821d8,_0x4ade13,_0x2035eb){if(_0x3821d8['changed'](_0xe0bb('0xe'))){_0x3821d8[_0xe0bb('0xf')]=moment()[_0xe0bb('0x10')](_0xe0bb('0x11'));}_0x2035eb(null,_0x3821d8);}}});};
\ No newline at end of file
index 5db4b05..fc11fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3530=['then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','FaxInteraction','update','body','options','raw','where','limit','UpdateFaxInteraction','debug','catch','AddTagsToFaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request'];(function(_0x49088a,_0xa2b35c){var _0x3a522d=function(_0x19cf27){while(--_0x19cf27){_0x49088a['push'](_0x49088a['shift']());}};_0x3a522d(++_0xa2b35c);}(_0x3530,0x6f));var _0x0353=function(_0x4ed6e1,_0x2e1dd2){_0x4ed6e1=_0x4ed6e1-0x0;var _0x30553=_0x3530[_0x4ed6e1];return _0x30553;};'use strict';var _=require(_0x0353('0x0'));var util=require(_0x0353('0x1'));var moment=require('moment');var BPromise=require(_0x0353('0x2'));var rs=require(_0x0353('0x3'));var fs=require('fs');var Redis=require(_0x0353('0x4'));var db=require(_0x0353('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0353('0x6'));var config=require(_0x0353('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0353('0x8')][_0x0353('0x9')]({'port':0x232a});config[_0x0353('0xa')]=_['defaults'](config[_0x0353('0xa')],{'host':_0x0353('0xb'),'port':0x18eb});var socket=require(_0x0353('0xc'))(new Redis(config[_0x0353('0xa')]));require('./faxInteraction.socket')[_0x0353('0xd')](socket);function respondWithRpcPromise(_0x2d56aa,_0x1c15fe,_0x40c40e){return new BPromise(function(_0x17d839,_0x4a8015){return client[_0x0353('0xe')](_0x2d56aa,_0x40c40e)[_0x0353('0xf')](function(_0x4a6295){logger[_0x0353('0x10')](_0x0353('0x11'),_0x1c15fe,_0x0353('0x12'));logger['debug'](_0x0353('0x13'),_0x1c15fe,_0x0353('0x12'),JSON[_0x0353('0x14')](_0x4a6295));if(_0x4a6295[_0x0353('0x15')]){if(_0x4a6295[_0x0353('0x15')][_0x0353('0x16')]===0x1f4){logger[_0x0353('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x1c15fe,_0x4a6295['error'][_0x0353('0x17')]);return _0x4a8015(_0x4a6295['error'][_0x0353('0x17')]);}logger[_0x0353('0x15')](_0x0353('0x11'),_0x1c15fe,_0x4a6295[_0x0353('0x15')][_0x0353('0x17')]);return _0x17d839(_0x4a6295['error']['message']);}else{logger[_0x0353('0x10')](_0x0353('0x11'),_0x1c15fe,_0x0353('0x12'));_0x17d839(_0x4a6295[_0x0353('0x18')][_0x0353('0x17')]);}})['catch'](function(_0x21ab26){logger[_0x0353('0x15')](_0x0353('0x11'),_0x1c15fe,_0x21ab26);_0x4a8015(_0x21ab26);});});}exports['UpdateFaxInteraction']=function(_0x3bb11b){var _0x56cca4=this;return new Promise(function(_0x9b6252,_0x37be95){return db[_0x0353('0x19')][_0x0353('0x1a')](_0x3bb11b[_0x0353('0x1b')],{'raw':_0x3bb11b[_0x0353('0x1c')]?_0x3bb11b[_0x0353('0x1c')][_0x0353('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3bb11b[_0x0353('0x1c')]?_0x3bb11b[_0x0353('0x1c')][_0x0353('0x1e')]||null:null,'attributes':_0x3bb11b['options']?_0x3bb11b[_0x0353('0x1c')]['attributes']||null:null,'limit':_0x3bb11b['options']?_0x3bb11b['options'][_0x0353('0x1f')]||null:null})['then'](function(_0x24be03){logger[_0x0353('0x10')](_0x0353('0x20'),_0x3bb11b);logger[_0x0353('0x21')]('UpdateFaxInteraction',_0x3bb11b,JSON[_0x0353('0x14')](_0x24be03));_0x9b6252(_0x24be03);})[_0x0353('0x22')](function(_0x5a354b){logger[_0x0353('0x15')](_0x0353('0x20'),_0x5a354b['message'],_0x3bb11b);_0x37be95(_0x56cca4[_0x0353('0x15')](0x1f4,_0x5a354b[_0x0353('0x17')]));});});};exports[_0x0353('0x23')]=function(_0x58de08){return new Promise(function(_0x45c91c,_0x5e8f58){return db[_0x0353('0x19')][_0x0353('0x24')]({'where':_0x58de08['options']?_0x58de08['options'][_0x0353('0x1e')]||null:null})[_0x0353('0xf')](function(_0x2297e4){if(_0x2297e4){return _0x2297e4[_0x0353('0x25')](_0x58de08[_0x0353('0x1b')][_0x0353('0x26')],_[_0x0353('0x27')](_0x58de08[_0x0353('0x1b')],[_0x0353('0x26'),'id'])||{});}})[_0x0353('0x28')](function(_0x481079){logger['info'](_0x0353('0x29'),_0x58de08);logger[_0x0353('0x21')](_0x0353('0x29'),_0x58de08,JSON['stringify'](_0x481079));_0x45c91c(_0x481079);})[_0x0353('0x22')](function(_0x54d3ea){logger[_0x0353('0x15')](_0x0353('0x29'),_0x54d3ea['message'],_0x58de08);_0x5e8f58(_this[_0x0353('0x15')](0x1f4,_0x54d3ea[_0x0353('0x17')]));});});};
\ No newline at end of file
+var _0x53a8=['../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','UpdateFaxInteraction','FaxInteraction','update','body','options','where','attributes','limit','catch','AddTagsToFaxInteraction','find','addTags','ids','omit','AddTags','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x5dc448,_0x296d3c){var _0x397225=function(_0x14d56f){while(--_0x14d56f){_0x5dc448['push'](_0x5dc448['shift']());}};_0x397225(++_0x296d3c);}(_0x53a8,0x150));var _0x853a=function(_0x5bde6f,_0x5182b7){_0x5bde6f=_0x5bde6f-0x0;var _0x596792=_0x53a8[_0x5bde6f];return _0x596792;};'use strict';var _=require(_0x853a('0x0'));var util=require('util');var moment=require(_0x853a('0x1'));var BPromise=require(_0x853a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x853a('0x3'));var db=require(_0x853a('0x4'))['db'];var utils=require(_0x853a('0x5'));var logger=require(_0x853a('0x6'))(_0x853a('0x7'));var config=require(_0x853a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x853a('0x9')]['http']({'port':0x232a});config[_0x853a('0xa')]=_['defaults'](config[_0x853a('0xa')],{'host':_0x853a('0xb'),'port':0x18eb});var socket=require(_0x853a('0xc'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0x853a('0xd')](socket);function respondWithRpcPromise(_0x4770a3,_0x55297d,_0x478b2f){return new BPromise(function(_0x45c704,_0x15ddbd){return client[_0x853a('0xe')](_0x4770a3,_0x478b2f)[_0x853a('0xf')](function(_0x300873){logger[_0x853a('0x10')](_0x853a('0x11'),_0x55297d,_0x853a('0x12'));logger[_0x853a('0x13')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x55297d,'request\x20sent',JSON[_0x853a('0x14')](_0x300873));if(_0x300873[_0x853a('0x15')]){if(_0x300873[_0x853a('0x15')]['code']===0x1f4){logger['error'](_0x853a('0x11'),_0x55297d,_0x300873[_0x853a('0x15')][_0x853a('0x16')]);return _0x15ddbd(_0x300873[_0x853a('0x15')]['message']);}logger[_0x853a('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x55297d,_0x300873[_0x853a('0x15')][_0x853a('0x16')]);return _0x45c704(_0x300873[_0x853a('0x15')][_0x853a('0x16')]);}else{logger[_0x853a('0x10')](_0x853a('0x11'),_0x55297d,_0x853a('0x12'));_0x45c704(_0x300873['result'][_0x853a('0x16')]);}})['catch'](function(_0x35af55){logger[_0x853a('0x15')](_0x853a('0x11'),_0x55297d,_0x35af55);_0x15ddbd(_0x35af55);});});}exports[_0x853a('0x17')]=function(_0x125211){var _0x303f0c=this;return new Promise(function(_0x138e1f,_0x3b281b){return db[_0x853a('0x18')][_0x853a('0x19')](_0x125211[_0x853a('0x1a')],{'raw':_0x125211[_0x853a('0x1b')]?_0x125211[_0x853a('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x125211['options']?_0x125211[_0x853a('0x1b')][_0x853a('0x1c')]||null:null,'attributes':_0x125211[_0x853a('0x1b')]?_0x125211['options'][_0x853a('0x1d')]||null:null,'limit':_0x125211['options']?_0x125211[_0x853a('0x1b')][_0x853a('0x1e')]||null:null})[_0x853a('0xf')](function(_0x2eef26){logger[_0x853a('0x10')](_0x853a('0x17'),_0x125211);logger[_0x853a('0x13')](_0x853a('0x17'),_0x125211,JSON[_0x853a('0x14')](_0x2eef26));_0x138e1f(_0x2eef26);})[_0x853a('0x1f')](function(_0x5e3989){logger[_0x853a('0x15')](_0x853a('0x17'),_0x5e3989[_0x853a('0x16')],_0x125211);_0x3b281b(_0x303f0c[_0x853a('0x15')](0x1f4,_0x5e3989[_0x853a('0x16')]));});});};exports[_0x853a('0x20')]=function(_0x5ed50c){return new Promise(function(_0x27f02a,_0x3fe946){return db['FaxInteraction'][_0x853a('0x21')]({'where':_0x5ed50c['options']?_0x5ed50c[_0x853a('0x1b')][_0x853a('0x1c')]||null:null})[_0x853a('0xf')](function(_0x1a2a1a){if(_0x1a2a1a){return _0x1a2a1a[_0x853a('0x22')](_0x5ed50c[_0x853a('0x1a')][_0x853a('0x23')],_[_0x853a('0x24')](_0x5ed50c[_0x853a('0x1a')],[_0x853a('0x23'),'id'])||{});}})['spread'](function(_0xed6a10){logger['info'](_0x853a('0x25'),_0x5ed50c);logger['debug'](_0x853a('0x25'),_0x5ed50c,JSON[_0x853a('0x14')](_0xed6a10));_0x27f02a(_0xed6a10);})[_0x853a('0x1f')](function(_0x4fd8a1){logger[_0x853a('0x15')]('AddTags',_0x4fd8a1[_0x853a('0x16')],_0x5ed50c);_0x3fe946(_this[_0x853a('0x15')](0x1f4,_0x4fd8a1[_0x853a('0x16')]));});});};
\ No newline at end of file
index 7902acc..99abf67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa7f=['update','emit','removeListener','length','./faxInteraction.events','save','remove'];(function(_0x139236,_0x3044dc){var _0xdcc55e=function(_0xea34bc){while(--_0xea34bc){_0x139236['push'](_0x139236['shift']());}};_0xdcc55e(++_0x3044dc);}(_0xfa7f,0xeb));var _0xffa7=function(_0x491e90,_0xcc5113){_0x491e90=_0x491e90-0x0;var _0x5a32f3=_0xfa7f[_0x491e90];return _0x5a32f3;};'use strict';var FaxInteractionEvents=require(_0xffa7('0x0'));var events=[_0xffa7('0x1'),_0xffa7('0x2'),_0xffa7('0x3')];function createListener(_0x5b97ba,_0x4ee18c){return function(_0xc93b4e){_0x4ee18c[_0xffa7('0x4')](_0x5b97ba,_0xc93b4e);};}function removeListener(_0x1a34fb,_0x2d2c16){return function(){FaxInteractionEvents[_0xffa7('0x5')](_0x1a34fb,_0x2d2c16);};}exports['register']=function(_0x17585f){for(var _0xa2c5b2=0x0,_0x31f0e1=events[_0xffa7('0x6')];_0xa2c5b2<_0x31f0e1;_0xa2c5b2++){var _0x449832=events[_0xa2c5b2];var _0x21d760=createListener('faxInteraction:'+_0x449832,_0x17585f);FaxInteractionEvents['on'](_0x449832,_0x21d760);}};
\ No newline at end of file
+var _0xbd6b=['removeListener','register','length','faxInteraction:','./faxInteraction.events','update','emit'];(function(_0x2cde0a,_0x1f9695){var _0x260610=function(_0x179089){while(--_0x179089){_0x2cde0a['push'](_0x2cde0a['shift']());}};_0x260610(++_0x1f9695);}(_0xbd6b,0x89));var _0xbbd6=function(_0x5c6e84,_0x18417e){_0x5c6e84=_0x5c6e84-0x0;var _0xa58306=_0xbd6b[_0x5c6e84];return _0xa58306;};'use strict';var FaxInteractionEvents=require(_0xbbd6('0x0'));var events=['save','remove',_0xbbd6('0x1')];function createListener(_0x28e7cb,_0x5e9d2d){return function(_0x941052){_0x5e9d2d[_0xbbd6('0x2')](_0x28e7cb,_0x941052);};}function removeListener(_0x3052dd,_0x3a0b92){return function(){FaxInteractionEvents[_0xbbd6('0x3')](_0x3052dd,_0x3a0b92);};}exports[_0xbbd6('0x4')]=function(_0x20b815){for(var _0x1c2a6d=0x0,_0xaaf342=events[_0xbbd6('0x5')];_0x1c2a6d<_0xaaf342;_0x1c2a6d++){var _0x14cc3c=events[_0x1c2a6d];var _0x5aa517=createListener(_0xbbd6('0x6')+_0x14cc3c,_0x20b815);FaxInteractionEvents['on'](_0x14cc3c,_0x5aa517);}};
\ No newline at end of file
index 318d4dd..e18db22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ed=['destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','./faxInteraction.controller','get','isAuthenticated','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','tracked','fax','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy'];(function(_0x4b87f2,_0xab2019){var _0x3ca544=function(_0x2bda9e){while(--_0x2bda9e){_0x4b87f2['push'](_0x4b87f2['shift']());}};_0x3ca544(++_0xab2019);}(_0x92ed,0xd5));var _0xd92e=function(_0x2053f7,_0x3bff4d){_0x2053f7=_0x2053f7-0x0;var _0x52ee3c=_0x92ed[_0x2053f7];return _0x52ee3c;};'use strict';var multer=require(_0xd92e('0x0'));var util=require(_0xd92e('0x1'));var path=require(_0xd92e('0x2'));var timeout=require(_0xd92e('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd92e('0x4'));var auth=require(_0xd92e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd92e('0x6'));router[_0xd92e('0x7')]('/',auth[_0xd92e('0x8')](),controller['index']);router[_0xd92e('0x7')](_0xd92e('0x9'),auth[_0xd92e('0x8')](),controller[_0xd92e('0xa')]);router['get'](_0xd92e('0xb'),auth[_0xd92e('0x8')](),controller['show']);router[_0xd92e('0x7')](_0xd92e('0xc'),auth[_0xd92e('0x8')](),controller[_0xd92e('0xd')]);router[_0xd92e('0x7')](_0xd92e('0xe'),auth['isAuthenticated'](),controller[_0xd92e('0xf')]);router[_0xd92e('0x10')]('/',auth[_0xd92e('0x8')](),controller[_0xd92e('0x11')]);router['post']('/:id/messages',auth['isAuthenticated'](),controller[_0xd92e('0x12')]);router[_0xd92e('0x10')]('/:id/tags',auth['isAuthenticated'](),interaction[_0xd92e('0x13')](_0xd92e('0x14'),'faxinteraction:addtags'),controller[_0xd92e('0x15')]);router[_0xd92e('0x16')]('/:id',auth[_0xd92e('0x8')](),interaction['tracked']('fax',_0xd92e('0x17')),controller[_0xd92e('0x18')]);router[_0xd92e('0x19')](_0xd92e('0xb'),auth[_0xd92e('0x8')](),interaction['tracked'](_0xd92e('0x14'),_0xd92e('0x1a')),controller[_0xd92e('0x1b')]);router[_0xd92e('0x19')](_0xd92e('0x1c'),auth[_0xd92e('0x8')](),controller[_0xd92e('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x216c=['faxinteraction:destroy','/:id/tags','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','post','tracked','fax','faxinteraction:addtags','addTags','/:id','faxinteraction:update','update','delete'];(function(_0x3ab46a,_0x51f8ca){var _0x55aab4=function(_0x309ac8){while(--_0x309ac8){_0x3ab46a['push'](_0x3ab46a['shift']());}};_0x55aab4(++_0x51f8ca);}(_0x216c,0xb1));var _0xc216=function(_0x120d95,_0x3c3eb4){_0x120d95=_0x120d95-0x0;var _0x12374b=_0x216c[_0x120d95];return _0x12374b;};'use strict';var multer=require('multer');var util=require(_0xc216('0x0'));var path=require(_0xc216('0x1'));var timeout=require(_0xc216('0x2'));var express=require(_0xc216('0x3'));var router=express[_0xc216('0x4')]();var fs_extra=require(_0xc216('0x5'));var auth=require(_0xc216('0x6'));var interaction=require(_0xc216('0x7'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router[_0xc216('0x8')]('/',auth[_0xc216('0x9')](),controller[_0xc216('0xa')]);router['get'](_0xc216('0xb'),auth[_0xc216('0x9')](),controller[_0xc216('0xc')]);router[_0xc216('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xc216('0xd')]);router['get'](_0xc216('0xe'),auth[_0xc216('0x9')](),controller[_0xc216('0xf')]);router[_0xc216('0x8')](_0xc216('0x10'),auth[_0xc216('0x9')](),controller['download']);router[_0xc216('0x11')]('/',auth[_0xc216('0x9')](),controller['create']);router[_0xc216('0x11')]('/:id/messages',auth[_0xc216('0x9')](),controller['addMessage']);router['post']('/:id/tags',auth[_0xc216('0x9')](),interaction[_0xc216('0x12')](_0xc216('0x13'),_0xc216('0x14')),controller[_0xc216('0x15')]);router['put'](_0xc216('0x16'),auth[_0xc216('0x9')](),interaction[_0xc216('0x12')](_0xc216('0x13'),_0xc216('0x17')),controller[_0xc216('0x18')]);router[_0xc216('0x19')](_0xc216('0x16'),auth[_0xc216('0x9')](),interaction[_0xc216('0x12')](_0xc216('0x13'),_0xc216('0x1a')),controller['destroy']);router[_0xc216('0x19')](_0xc216('0x1b'),auth['isAuthenticated'](),controller['removeTags']);module[_0xc216('0x1c')]=router;
\ No newline at end of file
index 6748a61..ac6b18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0834=['medium','out','TEXT'];(function(_0x4c0ebb,_0x1e7eae){var _0xfc4dc1=function(_0x3de6fc){while(--_0x3de6fc){_0x4c0ebb['push'](_0x4c0ebb['shift']());}};_0xfc4dc1(++_0x1e7eae);}(_0x0834,0x18e));var _0x4083=function(_0x1e9934,_0x4146e6){_0x1e9934=_0x1e9934-0x0;var _0x358df6=_0x0834[_0x1e9934];return _0x358df6;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x4083('0x0')](_0x4083('0x1')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x4083('0x2'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x4083('0x0')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x26bc=['sequelize','exports','TEXT','medium','BOOLEAN','out'];(function(_0x58f841,_0x2e0923){var _0xcd37e3=function(_0x5a08de){while(--_0x5a08de){_0x58f841['push'](_0x58f841['shift']());}};_0xcd37e3(++_0x2e0923);}(_0x26bc,0x162));var _0xc26b=function(_0x6688a3,_0x16a3e5){_0x6688a3=_0x6688a3-0x0;var _0xfc210d=_0x26bc[_0x6688a3];return _0xfc210d;};'use strict';var Sequelize=require(_0xc26b('0x0'));module[_0xc26b('0x1')]={'body':{'type':Sequelize[_0xc26b('0x2')](_0xc26b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xc26b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xc26b('0x5')),'defaultValue':_0xc26b('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xc26b('0x2')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index c86f722..046e55e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa959=['include','findAll','rows','show','params','keys','rawAttributes','length','find','body','destroy','describe','fax-interactions','accept','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','role','interaction','null','AcceptMessage','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','interface','format','SIP/%s','channel','motionChannel','EventManager','fax','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','internal','rejectmessage','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','server','files','attachments','Attachment','join','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','end','stack','name','map','FaxMessage','fieldName','type','key','query','filters','intersection','model','fields','attributes','nolimit','order','pick','where','merge','VIRTUAL','filter','options','includeAll'];(function(_0x786a0e,_0x48df4c){var _0x5b7f57=function(_0x435d3f){while(--_0x435d3f){_0x786a0e['push'](_0x786a0e['shift']());}};_0x5b7f57(++_0x48df4c);}(_0xa959,0x152));var _0x9a95=function(_0x2cde5b,_0x1b99c4){_0x2cde5b=_0x2cde5b-0x0;var _0x2ccdbc=_0xa959[_0x2cde5b];return _0x2ccdbc;};'use strict';var emlformat=require(_0x9a95('0x0'));var rimraf=require(_0x9a95('0x1'));var zipdir=require(_0x9a95('0x2'));var jsonpatch=require(_0x9a95('0x3'));var rp=require('request-promise');var moment=require(_0x9a95('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9a95('0x5'));var util=require(_0x9a95('0x6'));var path=require(_0x9a95('0x7'));var sox=require(_0x9a95('0x8'));var csv=require(_0x9a95('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9a95('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9a95('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9a95('0x9'));var querystring=require(_0x9a95('0xc'));var Papa=require(_0x9a95('0xd'));var Redis=require('ioredis');var authService=require(_0x9a95('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x9a95('0xf'));var hardwareService=require(_0x9a95('0x10'));var logger=require(_0x9a95('0x11'))(_0x9a95('0x12'));var utils=require(_0x9a95('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x9a95('0x14'));var db=require('../../mysqldb')['db'];config[_0x9a95('0x15')]=_[_0x9a95('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9a95('0x17'))(new Redis(config['redis']));require('./faxMessage.socket')[_0x9a95('0x18')](socket);var jayson=require(_0x9a95('0x19'));var client=jayson[_0x9a95('0x1a')][_0x9a95('0x1b')]({'port':0x232c});var client9002=jayson[_0x9a95('0x1a')][_0x9a95('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4cfcde,_0x383ec6,_0x31655a,_0x28c707){return new BPromise(function(_0xbf8f73,_0x573c75){var _0x3c83da=_0x28c707||client;return _0x3c83da[_0x9a95('0x1c')](_0x4cfcde,_0x31655a)['then'](function(_0x152b7e){logger[_0x9a95('0x1d')](_0x9a95('0x1e'),_0x383ec6,_0x9a95('0x1f'));logger[_0x9a95('0x20')](_0x9a95('0x21'),_0x383ec6,_0x9a95('0x1f'),JSON[_0x9a95('0x22')](_0x152b7e));if(_0x152b7e[_0x9a95('0x23')]){if(_0x152b7e[_0x9a95('0x23')][_0x9a95('0x24')]===0x1f4){logger['error'](_0x9a95('0x1e'),_0x383ec6,_0x152b7e[_0x9a95('0x23')][_0x9a95('0x25')]);return _0x573c75(_0x152b7e['error'][_0x9a95('0x25')]);}logger[_0x9a95('0x23')](_0x9a95('0x1e'),_0x383ec6,_0x152b7e[_0x9a95('0x23')]['message']);return _0xbf8f73(_0x152b7e['error'][_0x9a95('0x25')]);}else{logger['info'](_0x9a95('0x1e'),_0x383ec6,_0x9a95('0x1f'));_0xbf8f73(_0x152b7e[_0x9a95('0x26')][_0x9a95('0x25')]);}})[_0x9a95('0x27')](function(_0x21241b){logger[_0x9a95('0x23')](_0x9a95('0x1e'),_0x383ec6,_0x21241b);_0x573c75(_0x21241b);});});}function respondWithStatusCode(_0x5ebb18,_0x446e2e){_0x446e2e=_0x446e2e||0xcc;return function(_0xf77fc6){if(_0xf77fc6){return _0x5ebb18[_0x9a95('0x28')](_0x446e2e);}return _0x5ebb18[_0x9a95('0x29')](_0x446e2e)['end']();};}function respondWithResult(_0x100183,_0x193e55){_0x193e55=_0x193e55||0xc8;return function(_0x3b2171){if(_0x3b2171){return _0x100183[_0x9a95('0x29')](_0x193e55)['json'](_0x3b2171);}};}function respondWithFilteredResult(_0x2944d5,_0x225f0b){return function(_0x5d4149){if(_0x5d4149){var _0x2f01bc=typeof _0x225f0b['offset']===_0x9a95('0x2a')&&typeof _0x225f0b[_0x9a95('0x2b')]==='undefined';var _0x228c76=_0x5d4149[_0x9a95('0x2c')];var _0x225746=_0x2f01bc?0x0:_0x225f0b[_0x9a95('0x2d')];var _0x47ea3d=_0x2f01bc?_0x5d4149[_0x9a95('0x2c')]:_0x225f0b[_0x9a95('0x2d')]+_0x225f0b[_0x9a95('0x2b')];var _0x183ebb;if(_0x47ea3d>=_0x228c76){_0x47ea3d=_0x228c76;_0x183ebb=0xc8;}else{_0x183ebb=0xce;}_0x2944d5[_0x9a95('0x29')](_0x183ebb);return _0x2944d5[_0x9a95('0x2e')](_0x9a95('0x2f'),_0x225746+'-'+_0x47ea3d+'/'+_0x228c76)[_0x9a95('0x30')](_0x5d4149);}return null;};}function patchUpdates(_0x50886d){return function(_0x5d75a4){try{jsonpatch[_0x9a95('0x31')](_0x5d75a4,_0x50886d,!![]);}catch(_0x37980e){return BPromise[_0x9a95('0x32')](_0x37980e);}return _0x5d75a4['save']();};}function saveUpdates(_0x34997f,_0x472e0a){return function(_0x2a685d){if(_0x2a685d){return _0x2a685d[_0x9a95('0x33')](_0x34997f)[_0x9a95('0x34')](function(_0x15f00a){return _0x15f00a;});}return null;};}function removeEntity(_0x22b1c6,_0x4e1f35){return function(_0x25f3b5){if(_0x25f3b5){return _0x25f3b5['destroy']()[_0x9a95('0x34')](function(){_0x22b1c6[_0x9a95('0x29')](0xcc)[_0x9a95('0x35')]();});}};}function handleEntityNotFound(_0x5416b9,_0x2ba044){return function(_0x34b54b){if(!_0x34b54b){_0x5416b9[_0x9a95('0x28')](0x194);}return _0x34b54b;};}function handleError(_0x5d39a1,_0x3623f0){_0x3623f0=_0x3623f0||0x1f4;return function(_0x49c40f){logger[_0x9a95('0x23')](_0x49c40f[_0x9a95('0x36')]);if(_0x49c40f[_0x9a95('0x37')]){delete _0x49c40f[_0x9a95('0x37')];}_0x5d39a1['status'](_0x3623f0)['send'](_0x49c40f);};}exports['index']=function(_0x1dd2ba,_0x47ee13){var _0x1a932e={},_0x394e66={},_0x3ce552={'count':0x0,'rows':[]};var _0x17a53b=_[_0x9a95('0x38')](db[_0x9a95('0x39')]['rawAttributes'],function(_0x3a52de){return{'name':_0x3a52de[_0x9a95('0x3a')],'type':_0x3a52de[_0x9a95('0x3b')][_0x9a95('0x3c')]};});_0x394e66['model']=_[_0x9a95('0x38')](_0x17a53b,_0x9a95('0x37'));_0x394e66[_0x9a95('0x3d')]=_['keys'](_0x1dd2ba[_0x9a95('0x3d')]);_0x394e66[_0x9a95('0x3e')]=_['intersection'](_0x394e66['model'],_0x394e66[_0x9a95('0x3d')]);_0x1a932e['attributes']=_[_0x9a95('0x3f')](_0x394e66[_0x9a95('0x40')],qs[_0x9a95('0x41')](_0x1dd2ba[_0x9a95('0x3d')][_0x9a95('0x41')]));_0x1a932e[_0x9a95('0x42')]=_0x1a932e[_0x9a95('0x42')]['length']?_0x1a932e[_0x9a95('0x42')]:_0x394e66['model'];if(!_0x1dd2ba['query']['hasOwnProperty'](_0x9a95('0x43'))){_0x1a932e[_0x9a95('0x2b')]=qs['limit'](_0x1dd2ba[_0x9a95('0x3d')][_0x9a95('0x2b')]);_0x1a932e[_0x9a95('0x2d')]=qs[_0x9a95('0x2d')](_0x1dd2ba['query'][_0x9a95('0x2d')]);}_0x1a932e[_0x9a95('0x44')]=qs['sort'](_0x1dd2ba['query']['sort']);_0x1a932e['where']=qs[_0x9a95('0x3e')](_[_0x9a95('0x45')](_0x1dd2ba[_0x9a95('0x3d')],_0x394e66[_0x9a95('0x3e')]),_0x17a53b);if(_0x1dd2ba[_0x9a95('0x3d')]['filter']){_0x1a932e[_0x9a95('0x46')]=_[_0x9a95('0x47')](_0x1a932e[_0x9a95('0x46')],{'$or':_[_0x9a95('0x38')](_0x17a53b,function(_0x573c94){if(_0x573c94[_0x9a95('0x3b')]!==_0x9a95('0x48')){var _0x3ae83f={};_0x3ae83f[_0x573c94['name']]={'$like':'%'+_0x1dd2ba['query'][_0x9a95('0x49')]+'%'};return _0x3ae83f;}})});}_0x1a932e=_[_0x9a95('0x47')]({},_0x1a932e,_0x1dd2ba[_0x9a95('0x4a')]);var _0x514e88={'where':_0x1a932e[_0x9a95('0x46')]};return db['FaxMessage'][_0x9a95('0x2c')](_0x514e88)[_0x9a95('0x34')](function(_0x1c121c){_0x3ce552[_0x9a95('0x2c')]=_0x1c121c;if(_0x1dd2ba[_0x9a95('0x3d')][_0x9a95('0x4b')]){_0x1a932e[_0x9a95('0x4c')]=[{'all':!![]}];}return db['FaxMessage'][_0x9a95('0x4d')](_0x1a932e);})[_0x9a95('0x34')](function(_0xbe8778){_0x3ce552[_0x9a95('0x4e')]=_0xbe8778;return _0x3ce552;})[_0x9a95('0x34')](respondWithFilteredResult(_0x47ee13,_0x1a932e))[_0x9a95('0x27')](handleError(_0x47ee13,null));};exports[_0x9a95('0x4f')]=function(_0x3bb9e3,_0x53a27d){var _0x35c4f5={'raw':!![],'where':{'id':_0x3bb9e3[_0x9a95('0x50')]['id']}},_0xfbf52c={};_0xfbf52c['model']=_[_0x9a95('0x51')](db[_0x9a95('0x39')][_0x9a95('0x52')]);_0xfbf52c[_0x9a95('0x3d')]=_['keys'](_0x3bb9e3[_0x9a95('0x3d')]);_0xfbf52c[_0x9a95('0x3e')]=_[_0x9a95('0x3f')](_0xfbf52c[_0x9a95('0x40')],_0xfbf52c['query']);_0x35c4f5[_0x9a95('0x42')]=_[_0x9a95('0x3f')](_0xfbf52c[_0x9a95('0x40')],qs[_0x9a95('0x41')](_0x3bb9e3[_0x9a95('0x3d')][_0x9a95('0x41')]));_0x35c4f5[_0x9a95('0x42')]=_0x35c4f5[_0x9a95('0x42')][_0x9a95('0x53')]?_0x35c4f5[_0x9a95('0x42')]:_0xfbf52c[_0x9a95('0x40')];if(_0x3bb9e3['query']['includeAll']){_0x35c4f5['include']=[{'all':!![]}];}_0x35c4f5=_[_0x9a95('0x47')]({},_0x35c4f5,_0x3bb9e3[_0x9a95('0x4a')]);return db[_0x9a95('0x39')][_0x9a95('0x54')](_0x35c4f5)[_0x9a95('0x34')](handleEntityNotFound(_0x53a27d,null))[_0x9a95('0x34')](respondWithResult(_0x53a27d,null))[_0x9a95('0x27')](handleError(_0x53a27d,null));};exports[_0x9a95('0x33')]=function(_0x1d49aa,_0x46d776){if(_0x1d49aa[_0x9a95('0x55')]['id']){delete _0x1d49aa[_0x9a95('0x55')]['id'];}return db['FaxMessage'][_0x9a95('0x54')]({'where':{'id':_0x1d49aa['params']['id']}})[_0x9a95('0x34')](handleEntityNotFound(_0x46d776,null))[_0x9a95('0x34')](saveUpdates(_0x1d49aa['body'],null))['then'](respondWithResult(_0x46d776,null))[_0x9a95('0x27')](handleError(_0x46d776,null));};exports[_0x9a95('0x56')]=function(_0x138b4d,_0x31d8d6){return db['FaxMessage'][_0x9a95('0x54')]({'where':{'id':_0x138b4d[_0x9a95('0x50')]['id']}})[_0x9a95('0x34')](handleEntityNotFound(_0x31d8d6,null))[_0x9a95('0x34')](removeEntity(_0x31d8d6,null))[_0x9a95('0x27')](handleError(_0x31d8d6,null));};exports['describe']=function(_0x1f8c67,_0x49ca9b){return db[_0x9a95('0x39')][_0x9a95('0x57')]()[_0x9a95('0x34')](respondWithResult(_0x49ca9b,null))[_0x9a95('0x27')](handleError(_0x49ca9b,null));};var interaction_log=require(_0x9a95('0x11'))(_0x9a95('0x58'));exports[_0x9a95('0x59')]=function(_0x49ee29,_0x30f5fc,_0x594cce){var _0x5c02b1={'agent':{},'channel':'fax'};if(_0x49ee29[_0x9a95('0x55')]['id']){delete _0x49ee29[_0x9a95('0x55')]['id'];}_0x49ee29[_0x9a95('0x55')]['read']=!![];_0x49ee29[_0x9a95('0x55')][_0x9a95('0x5a')]=moment()['format'](_0x9a95('0x5b'));_0x49ee29[_0x9a95('0x55')][_0x9a95('0x5c')]=_0x49ee29[_0x9a95('0x55')][_0x9a95('0x5c')]||_0x49ee29[_0x9a95('0x5d')]['id'];_0x5c02b1[_0x9a95('0x5e')]['id']=_0x49ee29[_0x9a95('0x55')][_0x9a95('0x5c')];return db[_0x9a95('0x39')][_0x9a95('0x54')]({'where':{'id':_0x49ee29[_0x9a95('0x50')]['id'],'UserId':null}})[_0x9a95('0x34')](handleEntityNotFound(_0x30f5fc,null))[_0x9a95('0x34')](saveUpdates(_0x49ee29[_0x9a95('0x55')],null))[_0x9a95('0x34')](function(_0x2e6633){if(_0x2e6633){_0x5c02b1[_0x9a95('0x25')]=_0x2e6633[_0x9a95('0x5f')]({'plain':!![]});return db[_0x9a95('0x60')][_0x9a95('0x54')]({'where':{'id':_0x2e6633[_0x9a95('0x61')]}});}return null;})[_0x9a95('0x34')](handleEntityNotFound(_0x30f5fc,null))['then'](function(_0x2d13b8){if(_0x2d13b8){return _0x2d13b8[_0x9a95('0x33')]({'UserId':_0x49ee29['body']['UserId'],'read1stAt':_[_0x9a95('0x62')](_0x2d13b8[_0x9a95('0x63')])?moment()['format'](_0x9a95('0x5b')):undefined});}return null;})[_0x9a95('0x34')](function(_0x2a7b1e){if(_0x2a7b1e){_0x5c02b1['interaction']=_0x2a7b1e[_0x9a95('0x5f')]({'plain':!![]});interaction_log[_0x9a95('0x1d')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x49ee29['user']['id'],_0x49ee29[_0x9a95('0x5d')][_0x9a95('0x37')],_0x49ee29['user'][_0x9a95('0x64')],_0x5c02b1[_0x9a95('0x65')]['id'],_0x49ee29[_0x9a95('0x55')]?JSON['stringify'](_0x49ee29[_0x9a95('0x55')]):_0x9a95('0x66'));return respondWithRpcPromise(_0x9a95('0x67'),'acceptMessage',_0x5c02b1);}return null;})['then'](function(_0x1ddbd2){var _0x406cc9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1ddbd2[_0x9a95('0x25')]['ContactId'];return db[_0x9a95('0x68')][_0x9a95('0x3d')](_0x406cc9,{'type':db[_0x9a95('0x69')][_0x9a95('0x6a')][_0x9a95('0x6b')],'raw':!![]})[_0x9a95('0x34')](function(_0x5cf841){return _0x5cf841;});})[_0x9a95('0x34')](function(_0x1545db){if(_0x1545db){_0x5c02b1[_0x9a95('0x25')][_0x9a95('0x6c')]=_0x1545db[0x0];if(!_0x49ee29[_0x9a95('0x55')][_0x9a95('0x5c')])return;return db[_0x9a95('0x6d')][_0x9a95('0x54')]({'where':{'id':_0x49ee29['body'][_0x9a95('0x5c')],'role':'agent'},'attributes':['id',_0x9a95('0x37'),_0x9a95('0x6e'),_0x9a95('0x6f'),'internal'],'raw':!![]});}return null;})[_0x9a95('0x34')](function(_0x270768){if(!_0x270768)return null;_0x5c02b1[_0x9a95('0x25')]['agent']=_0x270768;return _0x5c02b1;})[_0x9a95('0x34')](function(_0x202f37){if(_0x202f37){if(_0x49ee29[_0x9a95('0x55')]['manual']){_0x5c02b1[_0x9a95('0x25')][_0x9a95('0x70')]=util[_0x9a95('0x71')](_0x9a95('0x72'),_0x49ee29[_0x9a95('0x5d')][_0x9a95('0x37')]);_0x5c02b1[_0x9a95('0x25')][_0x9a95('0x73')]=_0x5c02b1['channel'];_0x5c02b1[_0x9a95('0x25')][_0x9a95('0x74')]=_0x5c02b1[_0x9a95('0x73')];_0x5c02b1[_0x9a95('0x25')]['event']=_0x9a95('0x59');return respondWithRpcPromise(_0x9a95('0x75'),_0x9a95('0x75'),{'event':'acceptmessage','message':_0x5c02b1['message']},client9002)[_0x9a95('0x34')](function(){return _0x5c02b1;});}return _0x5c02b1;}return null;})[_0x9a95('0x34')](respondWithResult(_0x30f5fc,null))['catch'](handleError(_0x30f5fc,null));};var interaction_log=require(_0x9a95('0x11'))('fax-interactions');exports[_0x9a95('0x32')]=function(_0x5c963d,_0x534977,_0x1060ff){var _0x3aad42={'agent':{},'channel':_0x9a95('0x76')};if(_0x5c963d['body']['id']){delete _0x5c963d['body']['id'];}_0x5c963d[_0x9a95('0x55')][_0x9a95('0x5c')]=_0x5c963d['body'][_0x9a95('0x5c')]||_0x5c963d[_0x9a95('0x5d')]['id'];_0x3aad42[_0x9a95('0x5e')]['id']=_0x5c963d[_0x9a95('0x55')]['UserId'];return db[_0x9a95('0x39')][_0x9a95('0x54')]({'where':{'id':_0x5c963d[_0x9a95('0x50')]['id'],'UserId':null}})[_0x9a95('0x34')](handleEntityNotFound(_0x534977,null))[_0x9a95('0x34')](function(_0x59cda4){if(_0x59cda4){_0x3aad42['message']=_0x59cda4[_0x9a95('0x5f')]({'plain':!![]});return db[_0x9a95('0x60')]['find']({'where':{'id':_0x59cda4[_0x9a95('0x61')]}});}return null;})[_0x9a95('0x34')](handleEntityNotFound(_0x534977,null))[_0x9a95('0x34')](function(_0x30469b){if(_0x30469b){_0x3aad42[_0x9a95('0x65')]=_0x30469b[_0x9a95('0x5f')]({'plain':!![]});interaction_log[_0x9a95('0x1d')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5c963d[_0x9a95('0x5d')]['id'],_0x5c963d[_0x9a95('0x5d')][_0x9a95('0x37')],_0x5c963d[_0x9a95('0x5d')][_0x9a95('0x64')],_0x3aad42[_0x9a95('0x65')]['id'],_0x5c963d[_0x9a95('0x55')]?JSON[_0x9a95('0x22')](_0x5c963d['body']):_0x9a95('0x66'));return respondWithRpcPromise(_0x9a95('0x77'),_0x9a95('0x78'),_0x3aad42);}return null;})[_0x9a95('0x34')](function(_0x3390d9){var _0x373bc0=_0x9a95('0x79')+_0x3390d9['message'][_0x9a95('0x7a')];return db['sequelize'][_0x9a95('0x3d')](_0x373bc0,{'type':db[_0x9a95('0x69')][_0x9a95('0x6a')][_0x9a95('0x6b')],'raw':!![]})[_0x9a95('0x34')](function(_0x116e55){return _0x116e55;});})['then'](function(_0x903eb6){if(_0x903eb6){_0x3aad42[_0x9a95('0x25')][_0x9a95('0x6c')]=_0x903eb6[0x0];if(!_0x5c963d[_0x9a95('0x55')]['UserId'])return;return db[_0x9a95('0x6d')][_0x9a95('0x54')]({'where':{'id':_0x5c963d['body'][_0x9a95('0x5c')],'role':_0x9a95('0x5e')},'attributes':['id',_0x9a95('0x37'),_0x9a95('0x6e'),_0x9a95('0x6f'),_0x9a95('0x7b')],'raw':!![]});}return null;})[_0x9a95('0x34')](function(_0x40f454){if(!_0x40f454)return null;_0x3aad42[_0x9a95('0x25')][_0x9a95('0x5e')]=_0x40f454;return _0x3aad42;})[_0x9a95('0x34')](function(_0x35f4e2){if(_0x35f4e2){_0x35f4e2[_0x9a95('0x25')]['interface']=util[_0x9a95('0x71')](_0x9a95('0x72'),_0x5c963d[_0x9a95('0x5d')][_0x9a95('0x37')]);_0x35f4e2[_0x9a95('0x25')][_0x9a95('0x73')]=_0x3aad42['channel'];_0x35f4e2[_0x9a95('0x25')][_0x9a95('0x74')]=_0x3aad42['channel'];_0x35f4e2[_0x9a95('0x25')]['event']=_0x9a95('0x32');respondWithRpcPromise('EventManager',_0x9a95('0x75'),{'event':_0x9a95('0x7c'),'message':_0x35f4e2[_0x9a95('0x25')]},client9002);return _0x3aad42;}return null;})[_0x9a95('0x34')](respondWithResult(_0x534977,null))[_0x9a95('0x27')](handleError(_0x534977,null));};exports['create']=function(_0x414e6a,_0x4108b5){var _0xae34cf;return db[_0x9a95('0x39')][_0x9a95('0x7d')](_0x414e6a[_0x9a95('0x55')],{})[_0x9a95('0x34')](function(_0x173653){_0xae34cf=_0x173653;return db['CmContact'][_0x9a95('0x7e')]({'where':{'id':_0xae34cf[_0x9a95('0x7a')]}});})[_0x9a95('0x34')](function(_0x13353a){if(_[_0x9a95('0x62')](_0x13353a)){return;}else{_0xae34cf['fax']=_0x13353a[_0x9a95('0x76')];return db['Attachment'][_0x9a95('0x7e')]({'where':{'id':_0xae34cf[_0x9a95('0x7f')]}});}})[_0x9a95('0x34')](function(_0x5e25cd){return respondWithRpcPromise(_0x9a95('0x80'),_0x9a95('0x80'),{'FaxAccountId':_[_0x9a95('0x62')](_0x414e6a[_0x9a95('0x55')])?undefined:_0x414e6a[_0x9a95('0x55')][_0x9a95('0x81')],'path':_[_0x9a95('0x62')](_0x5e25cd)?undefined:util[_0x9a95('0x71')](_0x9a95('0x82'),_0x5e25cd[_0x9a95('0x83')]),'fax':_[_0x9a95('0x62')](_0xae34cf[_0x9a95('0x76')])?undefined:_0xae34cf['fax'],'AttachmentId':_0xae34cf[_0x9a95('0x7f')]},client9002);})[_0x9a95('0x34')](respondWithResult(_0x4108b5,0xc9))[_0x9a95('0x27')](handleError(_0x4108b5,null));};exports[_0x9a95('0x84')]=function(_0x2b5e3b,_0x139177){var _0x589778=path['join'](config['root'],_0x9a95('0x85'),_0x9a95('0x86'),_0x9a95('0x87'));return db['FaxMessage'][_0x9a95('0x54')]({'where':{'id':_0x2b5e3b[_0x9a95('0x50')]['id']},'include':[{'model':db['Attachment'],'as':_0x9a95('0x88')}]})['then'](handleEntityNotFound(_0x139177,null))[_0x9a95('0x34')](function(_0x23d0a6){if(_0x23d0a6){return _0x139177[_0x9a95('0x84')](path[_0x9a95('0x89')](_0x589778,_0x23d0a6[_0x9a95('0x88')][_0x9a95('0x83')]));}})[_0x9a95('0x27')](handleError(_0x139177,null));};
\ No newline at end of file
+var _0x8f52=['../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxMessage.socket','client','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','name','index','FaxMessage','rawAttributes','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','update','body','find','describe','fax-interactions','accept','readAt','UserId','agent','FaxInteraction','FaxInteractionId','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','interaction','get','[FAXMESSAGE: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','fullname','email','internal','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','fax','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','User','interface','rejectmessage','create','findOne','isNil','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','join','root','Attachment','download','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x32e2f3,_0x5c9fe7){var _0xcc7735=function(_0x1154db){while(--_0x1154db){_0x32e2f3['push'](_0x32e2f3['shift']());}};_0xcc7735(++_0x5c9fe7);}(_0x8f52,0x18f));var _0x28f5=function(_0x4dab14,_0x164ea0){_0x4dab14=_0x4dab14-0x0;var _0xf41aa=_0x8f52[_0x4dab14];return _0xf41aa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x28f5('0x0'));var zipdir=require(_0x28f5('0x1'));var jsonpatch=require(_0x28f5('0x2'));var rp=require(_0x28f5('0x3'));var moment=require('moment');var BPromise=require(_0x28f5('0x4'));var Mustache=require(_0x28f5('0x5'));var util=require('util');var path=require(_0x28f5('0x6'));var sox=require(_0x28f5('0x7'));var csv=require('to-csv');var ejs=require(_0x28f5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x28f5('0x9'));var squel=require(_0x28f5('0xa'));var crypto=require(_0x28f5('0xb'));var jsforce=require(_0x28f5('0xc'));var deskjs=require(_0x28f5('0xd'));var toCsv=require(_0x28f5('0xe'));var querystring=require(_0x28f5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x28f5('0x10'));var as=require(_0x28f5('0x11'));var hardwareService=require(_0x28f5('0x12'));var logger=require(_0x28f5('0x13'))(_0x28f5('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x28f5('0x15'));var db=require(_0x28f5('0x16'))['db'];config[_0x28f5('0x17')]=_['defaults'](config[_0x28f5('0x17')],{'host':_0x28f5('0x18'),'port':0x18eb});var socket=require(_0x28f5('0x19'))(new Redis(config[_0x28f5('0x17')]));require(_0x28f5('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x28f5('0x1b')]['http']({'port':0x232c});var client9002=jayson[_0x28f5('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2c09,_0x5c2eb0,_0x180864,_0x99c53a){return new BPromise(function(_0x1e18cf,_0x41d264){var _0x37b2dd=_0x99c53a||client;return _0x37b2dd[_0x28f5('0x1c')](_0x3c2c09,_0x180864)[_0x28f5('0x1d')](function(_0x53c1de){logger[_0x28f5('0x1e')](_0x28f5('0x1f'),_0x5c2eb0,_0x28f5('0x20'));logger[_0x28f5('0x21')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x5c2eb0,'request\x20sent',JSON[_0x28f5('0x22')](_0x53c1de));if(_0x53c1de[_0x28f5('0x23')]){if(_0x53c1de[_0x28f5('0x23')][_0x28f5('0x24')]===0x1f4){logger[_0x28f5('0x23')](_0x28f5('0x1f'),_0x5c2eb0,_0x53c1de[_0x28f5('0x23')][_0x28f5('0x25')]);return _0x41d264(_0x53c1de[_0x28f5('0x23')][_0x28f5('0x25')]);}logger[_0x28f5('0x23')](_0x28f5('0x1f'),_0x5c2eb0,_0x53c1de[_0x28f5('0x23')][_0x28f5('0x25')]);return _0x1e18cf(_0x53c1de['error'][_0x28f5('0x25')]);}else{logger['info'](_0x28f5('0x1f'),_0x5c2eb0,_0x28f5('0x20'));_0x1e18cf(_0x53c1de[_0x28f5('0x26')][_0x28f5('0x25')]);}})[_0x28f5('0x27')](function(_0x113474){logger[_0x28f5('0x23')](_0x28f5('0x1f'),_0x5c2eb0,_0x113474);_0x41d264(_0x113474);});});}function respondWithStatusCode(_0xcab9aa,_0x3606b5){_0x3606b5=_0x3606b5||0xcc;return function(_0xde9e7c){if(_0xde9e7c){return _0xcab9aa[_0x28f5('0x28')](_0x3606b5);}return _0xcab9aa['status'](_0x3606b5)[_0x28f5('0x29')]();};}function respondWithResult(_0x45b801,_0x588207){_0x588207=_0x588207||0xc8;return function(_0x1ae1da){if(_0x1ae1da){return _0x45b801[_0x28f5('0x2a')](_0x588207)[_0x28f5('0x2b')](_0x1ae1da);}};}function respondWithFilteredResult(_0x1148b6,_0x12e25b){return function(_0x3bb96f){if(_0x3bb96f){var _0x21d7d8=typeof _0x12e25b[_0x28f5('0x2c')]===_0x28f5('0x2d')&&typeof _0x12e25b[_0x28f5('0x2e')]==='undefined';var _0x23ca7d=_0x3bb96f['count'];var _0x2278b0=_0x21d7d8?0x0:_0x12e25b['offset'];var _0x560ef0=_0x21d7d8?_0x3bb96f[_0x28f5('0x2f')]:_0x12e25b[_0x28f5('0x2c')]+_0x12e25b['limit'];var _0x54b839;if(_0x560ef0>=_0x23ca7d){_0x560ef0=_0x23ca7d;_0x54b839=0xc8;}else{_0x54b839=0xce;}_0x1148b6['status'](_0x54b839);return _0x1148b6[_0x28f5('0x30')](_0x28f5('0x31'),_0x2278b0+'-'+_0x560ef0+'/'+_0x23ca7d)['json'](_0x3bb96f);}return null;};}function patchUpdates(_0x3de063){return function(_0x4e888a){try{jsonpatch[_0x28f5('0x32')](_0x4e888a,_0x3de063,!![]);}catch(_0xb492be){return BPromise[_0x28f5('0x33')](_0xb492be);}return _0x4e888a[_0x28f5('0x34')]();};}function saveUpdates(_0x4708eb,_0x4e8c77){return function(_0x4409a7){if(_0x4409a7){return _0x4409a7['update'](_0x4708eb)['then'](function(_0x3e37e4){return _0x3e37e4;});}return null;};}function removeEntity(_0x2bee49,_0x5d1e02){return function(_0x3b4ca8){if(_0x3b4ca8){return _0x3b4ca8[_0x28f5('0x35')]()[_0x28f5('0x1d')](function(){_0x2bee49['status'](0xcc)[_0x28f5('0x29')]();});}};}function handleEntityNotFound(_0x1434b0,_0x12365c){return function(_0x33f161){if(!_0x33f161){_0x1434b0[_0x28f5('0x28')](0x194);}return _0x33f161;};}function handleError(_0x4b6409,_0x52a6e4){_0x52a6e4=_0x52a6e4||0x1f4;return function(_0x1ff51e){logger[_0x28f5('0x23')](_0x1ff51e['stack']);if(_0x1ff51e[_0x28f5('0x36')]){delete _0x1ff51e[_0x28f5('0x36')];}_0x4b6409[_0x28f5('0x2a')](_0x52a6e4)['send'](_0x1ff51e);};}exports[_0x28f5('0x37')]=function(_0x49fb82,_0x158972){var _0x400392={},_0x354e70={},_0x3b47dc={'count':0x0,'rows':[]};var _0x5735e9=_['map'](db[_0x28f5('0x38')][_0x28f5('0x39')],function(_0x3fc954){return{'name':_0x3fc954['fieldName'],'type':_0x3fc954['type'][_0x28f5('0x3a')]};});_0x354e70[_0x28f5('0x3b')]=_[_0x28f5('0x3c')](_0x5735e9,_0x28f5('0x36'));_0x354e70[_0x28f5('0x3d')]=_[_0x28f5('0x3e')](_0x49fb82[_0x28f5('0x3d')]);_0x354e70['filters']=_[_0x28f5('0x3f')](_0x354e70[_0x28f5('0x3b')],_0x354e70['query']);_0x400392['attributes']=_[_0x28f5('0x3f')](_0x354e70[_0x28f5('0x3b')],qs[_0x28f5('0x40')](_0x49fb82['query'][_0x28f5('0x40')]));_0x400392['attributes']=_0x400392[_0x28f5('0x41')][_0x28f5('0x42')]?_0x400392['attributes']:_0x354e70[_0x28f5('0x3b')];if(!_0x49fb82[_0x28f5('0x3d')][_0x28f5('0x43')](_0x28f5('0x44'))){_0x400392['limit']=qs[_0x28f5('0x2e')](_0x49fb82[_0x28f5('0x3d')][_0x28f5('0x2e')]);_0x400392[_0x28f5('0x2c')]=qs[_0x28f5('0x2c')](_0x49fb82[_0x28f5('0x3d')]['offset']);}_0x400392[_0x28f5('0x45')]=qs[_0x28f5('0x46')](_0x49fb82[_0x28f5('0x3d')][_0x28f5('0x46')]);_0x400392[_0x28f5('0x47')]=qs[_0x28f5('0x48')](_[_0x28f5('0x49')](_0x49fb82[_0x28f5('0x3d')],_0x354e70[_0x28f5('0x48')]),_0x5735e9);if(_0x49fb82[_0x28f5('0x3d')]['filter']){_0x400392[_0x28f5('0x47')]=_[_0x28f5('0x4a')](_0x400392[_0x28f5('0x47')],{'$or':_[_0x28f5('0x3c')](_0x5735e9,function(_0x45e602){if(_0x45e602['type']!==_0x28f5('0x4b')){var _0x4d0b36={};_0x4d0b36[_0x45e602[_0x28f5('0x36')]]={'$like':'%'+_0x49fb82['query'][_0x28f5('0x4c')]+'%'};return _0x4d0b36;}})});}_0x400392=_[_0x28f5('0x4a')]({},_0x400392,_0x49fb82[_0x28f5('0x4d')]);var _0x4b7727={'where':_0x400392[_0x28f5('0x47')]};return db[_0x28f5('0x38')]['count'](_0x4b7727)[_0x28f5('0x1d')](function(_0x211d43){_0x3b47dc[_0x28f5('0x2f')]=_0x211d43;if(_0x49fb82[_0x28f5('0x3d')][_0x28f5('0x4e')]){_0x400392[_0x28f5('0x4f')]=[{'all':!![]}];}return db[_0x28f5('0x38')][_0x28f5('0x50')](_0x400392);})[_0x28f5('0x1d')](function(_0x1ee374){_0x3b47dc[_0x28f5('0x51')]=_0x1ee374;return _0x3b47dc;})[_0x28f5('0x1d')](respondWithFilteredResult(_0x158972,_0x400392))['catch'](handleError(_0x158972,null));};exports[_0x28f5('0x52')]=function(_0x1d8e9b,_0x174d16){var _0x27a74f={'raw':!![],'where':{'id':_0x1d8e9b[_0x28f5('0x53')]['id']}},_0x4e2d7c={};_0x4e2d7c['model']=_[_0x28f5('0x3e')](db[_0x28f5('0x38')][_0x28f5('0x39')]);_0x4e2d7c[_0x28f5('0x3d')]=_['keys'](_0x1d8e9b[_0x28f5('0x3d')]);_0x4e2d7c[_0x28f5('0x48')]=_[_0x28f5('0x3f')](_0x4e2d7c[_0x28f5('0x3b')],_0x4e2d7c['query']);_0x27a74f[_0x28f5('0x41')]=_[_0x28f5('0x3f')](_0x4e2d7c[_0x28f5('0x3b')],qs[_0x28f5('0x40')](_0x1d8e9b[_0x28f5('0x3d')][_0x28f5('0x40')]));_0x27a74f[_0x28f5('0x41')]=_0x27a74f[_0x28f5('0x41')][_0x28f5('0x42')]?_0x27a74f[_0x28f5('0x41')]:_0x4e2d7c['model'];if(_0x1d8e9b[_0x28f5('0x3d')]['includeAll']){_0x27a74f[_0x28f5('0x4f')]=[{'all':!![]}];}_0x27a74f=_[_0x28f5('0x4a')]({},_0x27a74f,_0x1d8e9b[_0x28f5('0x4d')]);return db[_0x28f5('0x38')]['find'](_0x27a74f)[_0x28f5('0x1d')](handleEntityNotFound(_0x174d16,null))[_0x28f5('0x1d')](respondWithResult(_0x174d16,null))['catch'](handleError(_0x174d16,null));};exports[_0x28f5('0x54')]=function(_0x34fd18,_0x251ef8){if(_0x34fd18[_0x28f5('0x55')]['id']){delete _0x34fd18['body']['id'];}return db[_0x28f5('0x38')][_0x28f5('0x56')]({'where':{'id':_0x34fd18[_0x28f5('0x53')]['id']}})[_0x28f5('0x1d')](handleEntityNotFound(_0x251ef8,null))[_0x28f5('0x1d')](saveUpdates(_0x34fd18[_0x28f5('0x55')],null))[_0x28f5('0x1d')](respondWithResult(_0x251ef8,null))[_0x28f5('0x27')](handleError(_0x251ef8,null));};exports['destroy']=function(_0x37efcb,_0x40bd68){return db[_0x28f5('0x38')][_0x28f5('0x56')]({'where':{'id':_0x37efcb[_0x28f5('0x53')]['id']}})[_0x28f5('0x1d')](handleEntityNotFound(_0x40bd68,null))['then'](removeEntity(_0x40bd68,null))[_0x28f5('0x27')](handleError(_0x40bd68,null));};exports[_0x28f5('0x57')]=function(_0x28dd0c,_0x3f4e34){return db['FaxMessage'][_0x28f5('0x57')]()['then'](respondWithResult(_0x3f4e34,null))[_0x28f5('0x27')](handleError(_0x3f4e34,null));};var interaction_log=require(_0x28f5('0x13'))(_0x28f5('0x58'));exports[_0x28f5('0x59')]=function(_0x3e9564,_0x1aa861,_0x334738){var _0x9302d7={'agent':{},'channel':'fax'};if(_0x3e9564[_0x28f5('0x55')]['id']){delete _0x3e9564[_0x28f5('0x55')]['id'];}_0x3e9564['body']['read']=!![];_0x3e9564['body'][_0x28f5('0x5a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3e9564[_0x28f5('0x55')][_0x28f5('0x5b')]=_0x3e9564['body'][_0x28f5('0x5b')]||_0x3e9564['user']['id'];_0x9302d7[_0x28f5('0x5c')]['id']=_0x3e9564['body']['UserId'];return db[_0x28f5('0x38')]['find']({'where':{'id':_0x3e9564[_0x28f5('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1aa861,null))[_0x28f5('0x1d')](saveUpdates(_0x3e9564[_0x28f5('0x55')],null))[_0x28f5('0x1d')](function(_0x3cb9cc){if(_0x3cb9cc){_0x9302d7[_0x28f5('0x25')]=_0x3cb9cc['get']({'plain':!![]});return db[_0x28f5('0x5d')]['find']({'where':{'id':_0x3cb9cc[_0x28f5('0x5e')]}});}return null;})[_0x28f5('0x1d')](handleEntityNotFound(_0x1aa861,null))[_0x28f5('0x1d')](function(_0xafa1e8){if(_0xafa1e8){return _0xafa1e8[_0x28f5('0x54')]({'UserId':_0x3e9564[_0x28f5('0x55')][_0x28f5('0x5b')],'read1stAt':_['isNil'](_0xafa1e8[_0x28f5('0x5f')])?moment()[_0x28f5('0x60')](_0x28f5('0x61')):undefined});}return null;})['then'](function(_0x380de1){if(_0x380de1){_0x9302d7[_0x28f5('0x62')]=_0x380de1[_0x28f5('0x63')]({'plain':!![]});interaction_log[_0x28f5('0x1e')](_0x28f5('0x64'),_0x3e9564[_0x28f5('0x65')]['id'],_0x3e9564[_0x28f5('0x65')][_0x28f5('0x36')],_0x3e9564[_0x28f5('0x65')][_0x28f5('0x66')],_0x9302d7[_0x28f5('0x62')]['id'],_0x3e9564[_0x28f5('0x55')]?JSON['stringify'](_0x3e9564[_0x28f5('0x55')]):_0x28f5('0x67'));return respondWithRpcPromise(_0x28f5('0x68'),_0x28f5('0x69'),_0x9302d7);}return null;})[_0x28f5('0x1d')](function(_0x27e2b0){var _0x35025b=_0x28f5('0x6a')+_0x27e2b0['message'][_0x28f5('0x6b')];return db[_0x28f5('0x6c')][_0x28f5('0x3d')](_0x35025b,{'type':db[_0x28f5('0x6d')][_0x28f5('0x6e')]['SELECT'],'raw':!![]})[_0x28f5('0x1d')](function(_0x1fefa9){return _0x1fefa9;});})['then'](function(_0x2842eb){if(_0x2842eb){_0x9302d7['message']['contact']=_0x2842eb[0x0];if(!_0x3e9564[_0x28f5('0x55')]['UserId'])return;return db['User'][_0x28f5('0x56')]({'where':{'id':_0x3e9564[_0x28f5('0x55')][_0x28f5('0x5b')],'role':_0x28f5('0x5c')},'attributes':['id','name',_0x28f5('0x6f'),_0x28f5('0x70'),_0x28f5('0x71')],'raw':!![]});}return null;})['then'](function(_0x1fa4cb){if(!_0x1fa4cb)return null;_0x9302d7[_0x28f5('0x25')][_0x28f5('0x5c')]=_0x1fa4cb;return _0x9302d7;})[_0x28f5('0x1d')](function(_0x1056c9){if(_0x1056c9){if(_0x3e9564['body']['manual']){_0x9302d7[_0x28f5('0x25')]['interface']=util['format'](_0x28f5('0x72'),_0x3e9564[_0x28f5('0x65')][_0x28f5('0x36')]);_0x9302d7[_0x28f5('0x25')]['channel']=_0x9302d7[_0x28f5('0x73')];_0x9302d7[_0x28f5('0x25')][_0x28f5('0x74')]=_0x9302d7[_0x28f5('0x73')];_0x9302d7[_0x28f5('0x25')][_0x28f5('0x75')]=_0x28f5('0x59');return respondWithRpcPromise(_0x28f5('0x76'),'EventManager',{'event':_0x28f5('0x77'),'message':_0x9302d7[_0x28f5('0x25')]},client9002)[_0x28f5('0x1d')](function(){return _0x9302d7;});}return _0x9302d7;}return null;})[_0x28f5('0x1d')](respondWithResult(_0x1aa861,null))[_0x28f5('0x27')](handleError(_0x1aa861,null));};var interaction_log=require(_0x28f5('0x13'))('fax-interactions');exports['reject']=function(_0x850f3e,_0x3e58a5,_0x2facc8){var _0x45c874={'agent':{},'channel':_0x28f5('0x78')};if(_0x850f3e[_0x28f5('0x55')]['id']){delete _0x850f3e[_0x28f5('0x55')]['id'];}_0x850f3e[_0x28f5('0x55')][_0x28f5('0x5b')]=_0x850f3e[_0x28f5('0x55')][_0x28f5('0x5b')]||_0x850f3e[_0x28f5('0x65')]['id'];_0x45c874[_0x28f5('0x5c')]['id']=_0x850f3e['body'][_0x28f5('0x5b')];return db[_0x28f5('0x38')]['find']({'where':{'id':_0x850f3e[_0x28f5('0x53')]['id'],'UserId':null}})[_0x28f5('0x1d')](handleEntityNotFound(_0x3e58a5,null))[_0x28f5('0x1d')](function(_0x47123e){if(_0x47123e){_0x45c874[_0x28f5('0x25')]=_0x47123e['get']({'plain':!![]});return db['FaxInteraction'][_0x28f5('0x56')]({'where':{'id':_0x47123e[_0x28f5('0x5e')]}});}return null;})[_0x28f5('0x1d')](handleEntityNotFound(_0x3e58a5,null))[_0x28f5('0x1d')](function(_0x4fdd99){if(_0x4fdd99){_0x45c874['interaction']=_0x4fdd99[_0x28f5('0x63')]({'plain':!![]});interaction_log[_0x28f5('0x1e')](_0x28f5('0x79'),_0x850f3e[_0x28f5('0x65')]['id'],_0x850f3e[_0x28f5('0x65')][_0x28f5('0x36')],_0x850f3e[_0x28f5('0x65')][_0x28f5('0x66')],_0x45c874[_0x28f5('0x62')]['id'],_0x850f3e[_0x28f5('0x55')]?JSON[_0x28f5('0x22')](_0x850f3e[_0x28f5('0x55')]):_0x28f5('0x67'));return respondWithRpcPromise(_0x28f5('0x7a'),_0x28f5('0x7b'),_0x45c874);}return null;})[_0x28f5('0x1d')](function(_0x4b0546){var _0x3710ec=_0x28f5('0x6a')+_0x4b0546[_0x28f5('0x25')][_0x28f5('0x6b')];return db[_0x28f5('0x6c')][_0x28f5('0x3d')](_0x3710ec,{'type':db[_0x28f5('0x6d')][_0x28f5('0x6e')][_0x28f5('0x7c')],'raw':!![]})[_0x28f5('0x1d')](function(_0x5c46d5){return _0x5c46d5;});})['then'](function(_0x912448){if(_0x912448){_0x45c874[_0x28f5('0x25')]['contact']=_0x912448[0x0];if(!_0x850f3e[_0x28f5('0x55')][_0x28f5('0x5b')])return;return db[_0x28f5('0x7d')][_0x28f5('0x56')]({'where':{'id':_0x850f3e[_0x28f5('0x55')]['UserId'],'role':'agent'},'attributes':['id',_0x28f5('0x36'),_0x28f5('0x6f'),_0x28f5('0x70'),_0x28f5('0x71')],'raw':!![]});}return null;})['then'](function(_0x2aec6d){if(!_0x2aec6d)return null;_0x45c874['message']['agent']=_0x2aec6d;return _0x45c874;})['then'](function(_0xe896e){if(_0xe896e){_0xe896e[_0x28f5('0x25')][_0x28f5('0x7e')]=util[_0x28f5('0x60')](_0x28f5('0x72'),_0x850f3e[_0x28f5('0x65')][_0x28f5('0x36')]);_0xe896e['message'][_0x28f5('0x73')]=_0x45c874['channel'];_0xe896e[_0x28f5('0x25')][_0x28f5('0x74')]=_0x45c874['channel'];_0xe896e['message'][_0x28f5('0x75')]=_0x28f5('0x33');respondWithRpcPromise('EventManager',_0x28f5('0x76'),{'event':_0x28f5('0x7f'),'message':_0xe896e[_0x28f5('0x25')]},client9002);return _0x45c874;}return null;})[_0x28f5('0x1d')](respondWithResult(_0x3e58a5,null))[_0x28f5('0x27')](handleError(_0x3e58a5,null));};exports['create']=function(_0x5ca175,_0xbfd8b){var _0x2f6d9d;return db[_0x28f5('0x38')][_0x28f5('0x80')](_0x5ca175['body'],{})['then'](function(_0x4bd11d){_0x2f6d9d=_0x4bd11d;return db['CmContact'][_0x28f5('0x81')]({'where':{'id':_0x2f6d9d['ContactId']}});})[_0x28f5('0x1d')](function(_0x40cce1){if(_[_0x28f5('0x82')](_0x40cce1)){return;}else{_0x2f6d9d[_0x28f5('0x78')]=_0x40cce1[_0x28f5('0x78')];return db['Attachment'][_0x28f5('0x81')]({'where':{'id':_0x2f6d9d[_0x28f5('0x83')]}});}})[_0x28f5('0x1d')](function(_0x3728e7){return respondWithRpcPromise(_0x28f5('0x84'),_0x28f5('0x84'),{'FaxAccountId':_[_0x28f5('0x82')](_0x5ca175[_0x28f5('0x55')])?undefined:_0x5ca175[_0x28f5('0x55')]['FaxAccountId'],'path':_[_0x28f5('0x82')](_0x3728e7)?undefined:util[_0x28f5('0x60')](_0x28f5('0x85'),_0x3728e7[_0x28f5('0x86')]),'fax':_[_0x28f5('0x82')](_0x2f6d9d['fax'])?undefined:_0x2f6d9d[_0x28f5('0x78')],'AttachmentId':_0x2f6d9d[_0x28f5('0x83')]},client9002);})['then'](respondWithResult(_0xbfd8b,0xc9))[_0x28f5('0x27')](handleError(_0xbfd8b,null));};exports['download']=function(_0x4a9c2b,_0x295b2b){var _0x433cfb=path[_0x28f5('0x87')](config[_0x28f5('0x88')],'server','files','attachments');return db['FaxMessage'][_0x28f5('0x56')]({'where':{'id':_0x4a9c2b['params']['id']},'include':[{'model':db['Attachment'],'as':_0x28f5('0x89')}]})[_0x28f5('0x1d')](handleEntityNotFound(_0x295b2b,null))[_0x28f5('0x1d')](function(_0x14e56a){if(_0x14e56a){return _0x295b2b[_0x28f5('0x8a')](path[_0x28f5('0x87')](_0x433cfb,_0x14e56a[_0x28f5('0x89')][_0x28f5('0x86')]));}})[_0x28f5('0x27')](handleError(_0x295b2b,null));};
\ No newline at end of file
index 540579e..4baf662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x714c=['save','update','emit','hasOwnProperty','hook','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0xe73524,_0xde3a6d){var _0x4fdba2=function(_0x410dea){while(--_0x410dea){_0xe73524['push'](_0xe73524['shift']());}};_0x4fdba2(++_0xde3a6d);}(_0x714c,0x18d));var _0xc714=function(_0x57e18a,_0x199383){_0x57e18a=_0x57e18a-0x0;var _0x1181c7=_0x714c[_0x57e18a];return _0x1181c7;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0xc714('0x0'))['db'][_0xc714('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xc714('0x2')](0x0);var events={'afterCreate':_0xc714('0x3'),'afterUpdate':_0xc714('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3d1101){return function(_0x19f8fc,_0x541cdc,_0x4a1ce5){FaxMessageEvents[_0xc714('0x5')](_0x3d1101+':'+_0x19f8fc['id'],_0x19f8fc);FaxMessageEvents[_0xc714('0x5')](_0x3d1101,_0x19f8fc);_0x4a1ce5(null);};}for(var e in events){if(events[_0xc714('0x6')](e)){var event=events[e];FaxMessage[_0xc714('0x7')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0x00e0=['emit','hook','exports','events','../../mysqldb','FaxMessage','save','remove'];(function(_0x54705f,_0x31d44f){var _0x293e3a=function(_0x442462){while(--_0x442462){_0x54705f['push'](_0x54705f['shift']());}};_0x293e3a(++_0x31d44f);}(_0x00e0,0x1e3));var _0x000e=function(_0x197fbe,_0x1e051d){_0x197fbe=_0x197fbe-0x0;var _0x5b793a=_0x00e0[_0x197fbe];return _0x5b793a;};'use strict';var EventEmitter=require(_0x000e('0x0'));var FaxMessage=require(_0x000e('0x1'))['db'][_0x000e('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x000e('0x3'),'afterUpdate':'update','afterDestroy':_0x000e('0x4')};function emitEvent(_0x54d3ca){return function(_0x556ee0,_0x54a9c2,_0x5316d9){FaxMessageEvents[_0x000e('0x5')](_0x54d3ca+':'+_0x556ee0['id'],_0x556ee0);FaxMessageEvents[_0x000e('0x5')](_0x54d3ca,_0x556ee0);_0x5316d9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x000e('0x6')](e,emitEvent(event));}}module[_0x000e('0x7')]=FaxMessageEvents;
\ No newline at end of file
index 5f8443e..8e9b12f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b18=['update','error','utf8mb4','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','body','models','get','direction','toLowerCase','secret','isNil','UserId','findOne','FaxInteractionId','then'];(function(_0xac75b3,_0x55b8b5){var _0x464f8c=function(_0x3d3e92){while(--_0x3d3e92){_0xac75b3['push'](_0xac75b3['shift']());}};_0x464f8c(++_0x55b8b5);}(_0x6b18,0x198));var _0x86b1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6b18[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x86b1('0x0'));var logger=require(_0x86b1('0x1'))(_0x86b1('0x2'));var moment=require('moment');var BPromise=require(_0x86b1('0x3'));var rp=require(_0x86b1('0x4'));var fs=require('fs');var path=require(_0x86b1('0x5'));var rimraf=require(_0x86b1('0x6'));var config=require(_0x86b1('0x7'));var attributes=require(_0x86b1('0x8'));module[_0x86b1('0x9')]=function(_0x2e1088,_0x395bdd){return _0x2e1088[_0x86b1('0xa')]('FaxMessage',attributes,{'tableName':_0x86b1('0xb'),'paranoid':![],'indexes':[{'name':_0x86b1('0xc'),'fields':[_0x86b1('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x426775,_0x2dcb72,_0xbdb07e){var _0x4c6542=_0x2e1088[_0x86b1('0xe')];var _0x188896=_0x426775[_0x86b1('0xf')]({'plain':!![]});if(_0x188896[_0x86b1('0x10')][_0x86b1('0x11')]()==='in'||_0x188896[_0x86b1('0x10')]['toLowerCase']()==='out'&&!_0x188896[_0x86b1('0x12')]&&!_[_0x86b1('0x13')](_0x188896[_0x86b1('0x14')])){_0x4c6542['FaxInteraction'][_0x86b1('0x15')]({'where':{'id':_0x188896[_0x86b1('0x16')]}})[_0x86b1('0x17')](function(_0x475c3e){if(_0x475c3e){_0x475c3e[_0x86b1('0x18')]({'lastMsgAt':_0x188896['createdAt'],'lastMsgDirection':_0x188896[_0x86b1('0x10')]['toLowerCase']()});}})['catch'](function(_0x3a3f93){console[_0x86b1('0x19')](_0x3a3f93);});}_0xbdb07e();}},'charset':_0x86b1('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb47e=['body','models','get','direction','toLowerCase','out','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird','../../config/environment','./faxMessage.attributes','define','fti_fax_messages'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb47e,0x1b2));var _0xeb47=function(_0x3a4c1f,_0x3a824e){_0x3a4c1f=_0x3a4c1f-0x0;var _0x5f16ba=_0xb47e[_0x3a4c1f];return _0x5f16ba;};'use strict';var _=require('lodash');var util=require(_0xeb47('0x0'));var logger=require('../../config/logger')(_0xeb47('0x1'));var moment=require(_0xeb47('0x2'));var BPromise=require(_0xeb47('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xeb47('0x4'));var attributes=require(_0xeb47('0x5'));module['exports']=function(_0x24b1f6,_0x1c5ba7){return _0x24b1f6[_0xeb47('0x6')]('FaxMessage',attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0xeb47('0x7'),'fields':[_0xeb47('0x8')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1c28f1,_0x134708,_0x1bfbff){var _0x110455=_0x24b1f6[_0xeb47('0x9')];var _0x377504=_0x1c28f1[_0xeb47('0xa')]({'plain':!![]});if(_0x377504[_0xeb47('0xb')][_0xeb47('0xc')]()==='in'||_0x377504[_0xeb47('0xb')]['toLowerCase']()===_0xeb47('0xd')&&!_0x377504['secret']&&!_[_0xeb47('0xe')](_0x377504[_0xeb47('0xf')])){_0x110455[_0xeb47('0x10')][_0xeb47('0x11')]({'where':{'id':_0x377504[_0xeb47('0x12')]}})[_0xeb47('0x13')](function(_0x4683a0){if(_0x4683a0){_0x4683a0[_0xeb47('0x14')]({'lastMsgAt':_0x377504[_0xeb47('0x15')],'lastMsgDirection':_0x377504[_0xeb47('0xb')]['toLowerCase']()});}})[_0xeb47('0x16')](function(_0x3fe03b){console[_0xeb47('0x17')](_0x3fe03b);});}_0x1bfbff();}},'charset':_0xeb47('0x18'),'collate':_0xeb47('0x19')});};
\ No newline at end of file
index 8dda8d5..f69dc52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['request\x20sent','result','catch','CreateFaxMessage','FaxMessage','create','options','raw','update','body','attributes','limit','UpdateFaxMessage','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x368dcb,_0x44579e){var _0xf22c7b=function(_0x1d1a0a){while(--_0x1d1a0a){_0x368dcb['push'](_0x368dcb['shift']());}};_0xf22c7b(++_0x44579e);}(_0x34e8,0x12c));var _0x834e=function(_0x5d4f33,_0x585266){_0x5d4f33=_0x5d4f33-0x0;var _0x32f347=_0x34e8[_0x5d4f33];return _0x32f347;};'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});config['redis']=_[_0x834e('0xc')](config[_0x834e('0xd')],{'host':_0x834e('0xe'),'port':0x18eb});var socket=require(_0x834e('0xf'))(new Redis(config[_0x834e('0xd')]));require(_0x834e('0x10'))[_0x834e('0x11')](socket);function respondWithRpcPromise(_0x1af45a,_0x3bdda9,_0x186b3b){return new BPromise(function(_0x1e41fe,_0x36e124){return client[_0x834e('0x12')](_0x1af45a,_0x186b3b)[_0x834e('0x13')](function(_0x293514){logger[_0x834e('0x14')](_0x834e('0x15'),_0x3bdda9,'request\x20sent');logger[_0x834e('0x16')](_0x834e('0x17'),_0x3bdda9,'request\x20sent',JSON[_0x834e('0x18')](_0x293514));if(_0x293514[_0x834e('0x19')]){if(_0x293514[_0x834e('0x19')][_0x834e('0x1a')]===0x1f4){logger['error'](_0x834e('0x15'),_0x3bdda9,_0x293514[_0x834e('0x19')]['message']);return _0x36e124(_0x293514[_0x834e('0x19')]['message']);}logger[_0x834e('0x19')](_0x834e('0x15'),_0x3bdda9,_0x293514['error'][_0x834e('0x1b')]);return _0x1e41fe(_0x293514[_0x834e('0x19')][_0x834e('0x1b')]);}else{logger['info'](_0x834e('0x15'),_0x3bdda9,_0x834e('0x1c'));_0x1e41fe(_0x293514[_0x834e('0x1d')][_0x834e('0x1b')]);}})[_0x834e('0x1e')](function(_0x254677){logger[_0x834e('0x19')]('FaxMessage,\x20%s,\x20%s',_0x3bdda9,_0x254677);_0x36e124(_0x254677);});});}exports[_0x834e('0x1f')]=function(_0x1fd2c6){var _0x113ff4=this;return new Promise(function(_0x325a99,_0x4ab05d){return db[_0x834e('0x20')][_0x834e('0x21')](_0x1fd2c6['body'],{'raw':_0x1fd2c6[_0x834e('0x22')]?_0x1fd2c6[_0x834e('0x22')][_0x834e('0x23')]===undefined?!![]:![]:!![]})['then'](function(_0x4e3f48){logger[_0x834e('0x14')](_0x834e('0x1f'),_0x1fd2c6);logger['debug'](_0x834e('0x1f'),_0x1fd2c6,JSON[_0x834e('0x18')](_0x4e3f48));_0x325a99(_0x4e3f48);})['catch'](function(_0x3bc4f7){logger[_0x834e('0x19')](_0x834e('0x1f'),_0x3bc4f7['message'],_0x1fd2c6);_0x4ab05d(_0x113ff4[_0x834e('0x19')](0x1f4,_0x3bc4f7[_0x834e('0x1b')]));});});};exports['UpdateFaxMessage']=function(_0x5bef62){var _0x1e713a=this;return new Promise(function(_0x508a1d,_0x2826ec){return db[_0x834e('0x20')][_0x834e('0x24')](_0x5bef62[_0x834e('0x25')],{'raw':_0x5bef62[_0x834e('0x22')]?_0x5bef62[_0x834e('0x22')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bef62['options']?_0x5bef62['options']['where']||null:null,'attributes':_0x5bef62[_0x834e('0x22')]?_0x5bef62[_0x834e('0x22')][_0x834e('0x26')]||null:null,'limit':_0x5bef62['options']?_0x5bef62[_0x834e('0x22')][_0x834e('0x27')]||null:null})[_0x834e('0x13')](function(_0x1e026a){logger[_0x834e('0x14')](_0x834e('0x28'),_0x5bef62);logger[_0x834e('0x16')](_0x834e('0x28'),_0x5bef62,JSON[_0x834e('0x18')](_0x1e026a));_0x508a1d(_0x1e026a);})['catch'](function(_0xef9ec2){logger['error'](_0x834e('0x28'),_0xef9ec2[_0x834e('0x1b')],_0x5bef62);_0x2826ec(_0x1e713a[_0x834e('0x19')](0x1f4,_0xef9ec2[_0x834e('0x1b')]));});});};
\ No newline at end of file
+var _0x0a9a=['error','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','CreateFaxMessage','debug','UpdateFaxMessage','update','raw','where','attributes','limit','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','./faxMessage.socket','register','request','then','info','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x288a58,_0x108409){var _0x19876a=function(_0x298d77){while(--_0x298d77){_0x288a58['push'](_0x288a58['shift']());}};_0x19876a(++_0x108409);}(_0x0a9a,0x183));var _0xa0a9=function(_0x49683b,_0x5b4014){_0x49683b=_0x49683b-0x0;var _0x1d4b0e=_0x0a9a[_0x49683b];return _0x1d4b0e;};'use strict';var _=require('lodash');var util=require(_0xa0a9('0x0'));var moment=require('moment');var BPromise=require(_0xa0a9('0x1'));var rs=require(_0xa0a9('0x2'));var fs=require('fs');var Redis=require(_0xa0a9('0x3'));var db=require(_0xa0a9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa0a9('0x5'))(_0xa0a9('0x6'));var config=require('../../config/environment');var jayson=require(_0xa0a9('0x7'));var client=jayson[_0xa0a9('0x8')][_0xa0a9('0x9')]({'port':0x232a});config[_0xa0a9('0xa')]=_['defaults'](config[_0xa0a9('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xa0a9('0xb'))(new Redis(config[_0xa0a9('0xa')]));require(_0xa0a9('0xc'))[_0xa0a9('0xd')](socket);function respondWithRpcPromise(_0x4b9b93,_0x2ba0ac,_0x1b5bfb){return new BPromise(function(_0x5ce7e9,_0x5909cf){return client[_0xa0a9('0xe')](_0x4b9b93,_0x1b5bfb)[_0xa0a9('0xf')](function(_0x51d5a5){logger[_0xa0a9('0x10')]('FaxMessage,\x20%s,\x20%s',_0x2ba0ac,_0xa0a9('0x11'));logger['debug'](_0xa0a9('0x12'),_0x2ba0ac,_0xa0a9('0x11'),JSON[_0xa0a9('0x13')](_0x51d5a5));if(_0x51d5a5[_0xa0a9('0x14')]){if(_0x51d5a5[_0xa0a9('0x14')]['code']===0x1f4){logger[_0xa0a9('0x14')](_0xa0a9('0x15'),_0x2ba0ac,_0x51d5a5[_0xa0a9('0x14')][_0xa0a9('0x16')]);return _0x5909cf(_0x51d5a5[_0xa0a9('0x14')][_0xa0a9('0x16')]);}logger['error'](_0xa0a9('0x15'),_0x2ba0ac,_0x51d5a5['error']['message']);return _0x5ce7e9(_0x51d5a5[_0xa0a9('0x14')][_0xa0a9('0x16')]);}else{logger[_0xa0a9('0x10')](_0xa0a9('0x15'),_0x2ba0ac,'request\x20sent');_0x5ce7e9(_0x51d5a5[_0xa0a9('0x17')][_0xa0a9('0x16')]);}})[_0xa0a9('0x18')](function(_0x27f8d4){logger[_0xa0a9('0x14')](_0xa0a9('0x15'),_0x2ba0ac,_0x27f8d4);_0x5909cf(_0x27f8d4);});});}exports['CreateFaxMessage']=function(_0x3cdd8c){var _0x3107ce=this;return new Promise(function(_0x4a8e80,_0x53b99d){return db[_0xa0a9('0x19')][_0xa0a9('0x1a')](_0x3cdd8c[_0xa0a9('0x1b')],{'raw':_0x3cdd8c['options']?_0x3cdd8c[_0xa0a9('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xa0a9('0xf')](function(_0x5e6148){logger[_0xa0a9('0x10')](_0xa0a9('0x1d'),_0x3cdd8c);logger[_0xa0a9('0x1e')](_0xa0a9('0x1d'),_0x3cdd8c,JSON['stringify'](_0x5e6148));_0x4a8e80(_0x5e6148);})[_0xa0a9('0x18')](function(_0x4fb909){logger[_0xa0a9('0x14')](_0xa0a9('0x1d'),_0x4fb909[_0xa0a9('0x16')],_0x3cdd8c);_0x53b99d(_0x3107ce[_0xa0a9('0x14')](0x1f4,_0x4fb909['message']));});});};exports[_0xa0a9('0x1f')]=function(_0xe49d3b){var _0x384cd5=this;return new Promise(function(_0x3f4bea,_0x526dd1){return db[_0xa0a9('0x19')][_0xa0a9('0x20')](_0xe49d3b[_0xa0a9('0x1b')],{'raw':_0xe49d3b['options']?_0xe49d3b['options'][_0xa0a9('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe49d3b[_0xa0a9('0x1c')]?_0xe49d3b[_0xa0a9('0x1c')][_0xa0a9('0x22')]||null:null,'attributes':_0xe49d3b[_0xa0a9('0x1c')]?_0xe49d3b[_0xa0a9('0x1c')][_0xa0a9('0x23')]||null:null,'limit':_0xe49d3b[_0xa0a9('0x1c')]?_0xe49d3b[_0xa0a9('0x1c')][_0xa0a9('0x24')]||null:null})[_0xa0a9('0xf')](function(_0x554191){logger[_0xa0a9('0x10')](_0xa0a9('0x1f'),_0xe49d3b);logger['debug'](_0xa0a9('0x1f'),_0xe49d3b,JSON[_0xa0a9('0x13')](_0x554191));_0x3f4bea(_0x554191);})['catch'](function(_0x47c19b){logger[_0xa0a9('0x14')]('UpdateFaxMessage',_0x47c19b['message'],_0xe49d3b);_0x526dd1(_0x384cd5[_0xa0a9('0x14')](0x1f4,_0x47c19b[_0xa0a9('0x16')]));});});};
\ No newline at end of file
index fbefa2b..8aa300c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x887b=['length','faxMessage:','./faxMessage.events','save','update','emit','register'];(function(_0x1630d3,_0x586c6e){var _0x3e2c9d=function(_0x1dcc8a){while(--_0x1dcc8a){_0x1630d3['push'](_0x1630d3['shift']());}};_0x3e2c9d(++_0x586c6e);}(_0x887b,0x1ad));var _0xb887=function(_0x22f643,_0x35e6ae){_0x22f643=_0x22f643-0x0;var _0x41fc03=_0x887b[_0x22f643];return _0x41fc03;};'use strict';var FaxMessageEvents=require(_0xb887('0x0'));var events=[_0xb887('0x1'),'remove',_0xb887('0x2')];function createListener(_0x4b3576,_0xa74c5a){return function(_0x2c59c5){_0xa74c5a[_0xb887('0x3')](_0x4b3576,_0x2c59c5);};}function removeListener(_0x2c2725,_0x1ab059){return function(){FaxMessageEvents['removeListener'](_0x2c2725,_0x1ab059);};}exports[_0xb887('0x4')]=function(_0x3f1af0){for(var _0x8cc157=0x0,_0x352745=events[_0xb887('0x5')];_0x8cc157<_0x352745;_0x8cc157++){var _0x3892e0=events[_0x8cc157];var _0x929100=createListener(_0xb887('0x6')+_0x3892e0,_0x3f1af0);FaxMessageEvents['on'](_0x3892e0,_0x929100);}};
\ No newline at end of file
+var _0x076f=['length','./faxMessage.events','save','update','removeListener','register'];(function(_0x1a1275,_0x1a1610){var _0xda0b24=function(_0x18bc34){while(--_0x18bc34){_0x1a1275['push'](_0x1a1275['shift']());}};_0xda0b24(++_0x1a1610);}(_0x076f,0x10f));var _0xf076=function(_0x34c56f,_0x1c519d){_0x34c56f=_0x34c56f-0x0;var _0x2a90f0=_0x076f[_0x34c56f];return _0x2a90f0;};'use strict';var FaxMessageEvents=require(_0xf076('0x0'));var events=[_0xf076('0x1'),'remove',_0xf076('0x2')];function createListener(_0x5a188c,_0x283fbe){return function(_0x2dce99){_0x283fbe['emit'](_0x5a188c,_0x2dce99);};}function removeListener(_0x59314,_0x4fee5e){return function(){FaxMessageEvents[_0xf076('0x3')](_0x59314,_0x4fee5e);};}exports[_0xf076('0x4')]=function(_0xda2a0d){for(var _0x1a3c7f=0x0,_0x2aca20=events[_0xf076('0x5')];_0x1a3c7f<_0x2aca20;_0x1a3c7f++){var _0x3d17f8=events[_0x1a3c7f];var _0x5696ac=createListener('faxMessage:'+_0x3d17f8,_0xda2a0d);FaxMessageEvents['on'](_0x3d17f8,_0x5696ac);}};
\ No newline at end of file
index cecb7e7..194d352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc368=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','/describe','describe','/:id','download','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','delete','destroy','exports','util','connect-timeout'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0xc368,0x7b));var _0x8c36=function(_0xe3cb7,_0x214531){_0xe3cb7=_0xe3cb7-0x0;var _0x3bc252=_0xc368[_0xe3cb7];return _0x3bc252;};'use strict';var multer=require('multer');var util=require(_0x8c36('0x0'));var path=require('path');var timeout=require(_0x8c36('0x1'));var express=require(_0x8c36('0x2'));var router=express[_0x8c36('0x3')]();var fs_extra=require(_0x8c36('0x4'));var auth=require(_0x8c36('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8c36('0x6'));var controller=require(_0x8c36('0x7'));router[_0x8c36('0x8')]('/',auth[_0x8c36('0x9')](),controller['index']);router['get'](_0x8c36('0xa'),auth[_0x8c36('0x9')](),controller[_0x8c36('0xb')]);router[_0x8c36('0x8')](_0x8c36('0xc'),auth[_0x8c36('0x9')](),controller['show']);router['get']('/:id/download',auth[_0x8c36('0x9')](),controller[_0x8c36('0xd')]);router['post']('/',auth[_0x8c36('0x9')](),interaction[_0x8c36('0xe')](_0x8c36('0xf'),_0x8c36('0x10')),controller[_0x8c36('0x11')]);router[_0x8c36('0x12')](_0x8c36('0xc'),auth[_0x8c36('0x9')](),controller[_0x8c36('0x13')]);router[_0x8c36('0x12')](_0x8c36('0x14'),auth[_0x8c36('0x9')](),controller[_0x8c36('0x15')]);router[_0x8c36('0x12')]('/:id/reject',auth[_0x8c36('0x9')](),controller['reject']);router[_0x8c36('0x16')](_0x8c36('0xc'),auth[_0x8c36('0x9')](),controller[_0x8c36('0x17')]);module[_0x8c36('0x18')]=router;
\ No newline at end of file
+var _0x57f8=['../../config/environment','./faxMessage.controller','get','isAuthenticated','/describe','/:id','/:id/download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','/:id/reject','reject','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x57f8,0x198));var _0x857f=function(_0x58d98a,_0x3040c3){_0x58d98a=_0x58d98a-0x0;var _0x4274ba=_0x57f8[_0x58d98a];return _0x4274ba;};'use strict';var multer=require('multer');var util=require(_0x857f('0x0'));var path=require(_0x857f('0x1'));var timeout=require(_0x857f('0x2'));var express=require(_0x857f('0x3'));var router=express[_0x857f('0x4')]();var fs_extra=require(_0x857f('0x5'));var auth=require(_0x857f('0x6'));var interaction=require(_0x857f('0x7'));var config=require(_0x857f('0x8'));var controller=require(_0x857f('0x9'));router[_0x857f('0xa')]('/',auth[_0x857f('0xb')](),controller['index']);router[_0x857f('0xa')](_0x857f('0xc'),auth[_0x857f('0xb')](),controller['describe']);router[_0x857f('0xa')](_0x857f('0xd'),auth[_0x857f('0xb')](),controller['show']);router[_0x857f('0xa')](_0x857f('0xe'),auth[_0x857f('0xb')](),controller['download']);router[_0x857f('0xf')]('/',auth[_0x857f('0xb')](),interaction[_0x857f('0x10')](_0x857f('0x11'),_0x857f('0x12')),controller[_0x857f('0x13')]);router[_0x857f('0x14')]('/:id',auth[_0x857f('0xb')](),controller[_0x857f('0x15')]);router[_0x857f('0x14')](_0x857f('0x16'),auth[_0x857f('0xb')](),controller['accept']);router['put'](_0x857f('0x17'),auth['isAuthenticated'](),controller[_0x857f('0x18')]);router['delete'](_0x857f('0xd'),auth[_0x857f('0xb')](),controller['destroy']);module[_0x857f('0x19')]=router;
\ No newline at end of file
index 6d53371..ed7ab42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf19d=['roundrobin','INTEGER','sequelize','STRING','beepall'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xf19d,0x110));var _0xdf19=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xf19d[_0x1eda20];return _0x31b953;};'use strict';var Sequelize=require(_0xdf19('0x0'));module['exports']={'name':{'type':Sequelize[_0xdf19('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xdf19('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xdf19('0x2'),_0xdf19('0x3')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xdf19('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa48a=['INTEGER','ENUM','beepall','roundrobin','sequelize','STRING','name'];(function(_0x4d6298,_0x502f6b){var _0x57ccf0=function(_0x3cef94){while(--_0x3cef94){_0x4d6298['push'](_0x4d6298['shift']());}};_0x57ccf0(++_0x502f6b);}(_0xa48a,0xac));var _0xaa48=function(_0x2a1b89,_0x516adc){_0x2a1b89=_0x2a1b89-0x0;var _0x17b2e5=_0xa48a[_0x2a1b89];return _0x17b2e5;};'use strict';var Sequelize=require(_0xaa48('0x0'));module['exports']={'name':{'type':Sequelize[_0xaa48('0x1')],'unique':_0xaa48('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xaa48('0x1')]},'timeout':{'type':Sequelize[_0xaa48('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xaa48('0x4')]('rrmemory',_0xaa48('0x5'),_0xaa48('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xaa48('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 3a82308..ac990aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x880a=['tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','userFaxQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./faxQueue.socket','register','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxQueues','UserProfileResource','end','sendStatus','error','stack','name','send','index','FaxQueue','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','map','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','describe','getMembers','findOne','UserFaxQueue','rawAttributes','hasOwnProperty','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','field'];(function(_0x43de3f,_0x33b2ff){var _0x48d41b=function(_0x467346){while(--_0x467346){_0x43de3f['push'](_0x43de3f['shift']());}};_0x48d41b(++_0x33b2ff);}(_0x880a,0x138));var _0xa880=function(_0x9ab73f,_0x480c17){_0x9ab73f=_0x9ab73f-0x0;var _0xc3415d=_0x880a[_0x9ab73f];return _0xc3415d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa880('0x0'));var zipdir=require(_0xa880('0x1'));var jsonpatch=require(_0xa880('0x2'));var rp=require(_0xa880('0x3'));var moment=require(_0xa880('0x4'));var BPromise=require(_0xa880('0x5'));var Mustache=require(_0xa880('0x6'));var util=require(_0xa880('0x7'));var path=require('path');var sox=require(_0xa880('0x8'));var csv=require(_0xa880('0x9'));var ejs=require(_0xa880('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa880('0xb'));var squel=require(_0xa880('0xc'));var crypto=require('crypto');var jsforce=require(_0xa880('0xd'));var deskjs=require(_0xa880('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa880('0xf'));var Papa=require(_0xa880('0x10'));var Redis=require(_0xa880('0x11'));var authService=require(_0xa880('0x12'));var qs=require(_0xa880('0x13'));var as=require(_0xa880('0x14'));var hardwareService=require(_0xa880('0x15'));var logger=require(_0xa880('0x16'))(_0xa880('0x17'));var utils=require(_0xa880('0x18'));var config=require(_0xa880('0x19'));var licenseUtil=require(_0xa880('0x1a'));var db=require('../../mysqldb')['db'];config[_0xa880('0x1b')]=_['defaults'](config[_0xa880('0x1b')],{'host':_0xa880('0x1c'),'port':0x18eb});var socket=require(_0xa880('0x1d'))(new Redis(config['redis']));require(_0xa880('0x1e'))[_0xa880('0x1f')](socket);function respondWithStatusCode(_0x569106,_0x2521a){_0x2521a=_0x2521a||0xcc;return function(_0x4aec6d){if(_0x4aec6d){return _0x569106['sendStatus'](_0x2521a);}return _0x569106['status'](_0x2521a)['end']();};}function respondWithResult(_0xa0b596,_0x216554){_0x216554=_0x216554||0xc8;return function(_0x1bea5a){if(_0x1bea5a){return _0xa0b596[_0xa880('0x20')](_0x216554)[_0xa880('0x21')](_0x1bea5a);}};}function respondWithFilteredResult(_0x2ff7da,_0x356c32){return function(_0x55d72e){if(_0x55d72e){var _0x37d3d2=typeof _0x356c32['offset']===_0xa880('0x22')&&typeof _0x356c32[_0xa880('0x23')]==='undefined';var _0x55a757=_0x55d72e[_0xa880('0x24')];var _0x483cf2=_0x37d3d2?0x0:_0x356c32['offset'];var _0x547f7f=_0x37d3d2?_0x55d72e[_0xa880('0x24')]:_0x356c32[_0xa880('0x25')]+_0x356c32[_0xa880('0x23')];var _0x4c594e;if(_0x547f7f>=_0x55a757){_0x547f7f=_0x55a757;_0x4c594e=0xc8;}else{_0x4c594e=0xce;}_0x2ff7da[_0xa880('0x20')](_0x4c594e);return _0x2ff7da[_0xa880('0x26')](_0xa880('0x27'),_0x483cf2+'-'+_0x547f7f+'/'+_0x55a757)[_0xa880('0x21')](_0x55d72e);}return null;};}function patchUpdates(_0x4de610){return function(_0x320f75){try{jsonpatch[_0xa880('0x28')](_0x320f75,_0x4de610,!![]);}catch(_0x4a79fd){return BPromise[_0xa880('0x29')](_0x4a79fd);}return _0x320f75[_0xa880('0x2a')]();};}function saveUpdates(_0x5bc4e8,_0x5d56c1){return function(_0x19f4a1){if(_0x19f4a1){return _0x19f4a1[_0xa880('0x2b')](_0x5bc4e8)[_0xa880('0x2c')](function(_0x464d79){return _0x464d79;});}return null;};}function removeEntity(_0x68f9ed,_0x3ddfec){return function(_0x19c0f2){if(_0x19c0f2){return _0x19c0f2[_0xa880('0x2d')]()[_0xa880('0x2c')](function(){var _0x392902=_0x19c0f2[_0xa880('0x2e')]({'plain':!![]});var _0x4355de=_0xa880('0x2f');return db[_0xa880('0x30')][_0xa880('0x2d')]({'where':{'type':_0x4355de,'resourceId':_0x392902['id']}})[_0xa880('0x2c')](function(){return _0x19c0f2;});})['then'](function(){_0x68f9ed[_0xa880('0x20')](0xcc)[_0xa880('0x31')]();});}};}function handleEntityNotFound(_0xce4716,_0x21e250){return function(_0x5e404d){if(!_0x5e404d){_0xce4716[_0xa880('0x32')](0x194);}return _0x5e404d;};}function handleError(_0x56d497,_0x1b0194){_0x1b0194=_0x1b0194||0x1f4;return function(_0x580655){logger[_0xa880('0x33')](_0x580655[_0xa880('0x34')]);if(_0x580655[_0xa880('0x35')]){delete _0x580655['name'];}_0x56d497[_0xa880('0x20')](_0x1b0194)[_0xa880('0x36')](_0x580655);};}exports[_0xa880('0x37')]=function(_0x3e925b,_0x48df9c){var _0x218723={},_0x4547ba={},_0x30f434={'count':0x0,'rows':[]};var _0xe8fe54=_['map'](db[_0xa880('0x38')]['rawAttributes'],function(_0x4702bf){return{'name':_0x4702bf['fieldName'],'type':_0x4702bf['type']['key']};});_0x4547ba[_0xa880('0x39')]=_['map'](_0xe8fe54,_0xa880('0x35'));_0x4547ba[_0xa880('0x3a')]=_['keys'](_0x3e925b[_0xa880('0x3a')]);_0x4547ba[_0xa880('0x3b')]=_[_0xa880('0x3c')](_0x4547ba[_0xa880('0x39')],_0x4547ba[_0xa880('0x3a')]);_0x218723['attributes']=_[_0xa880('0x3c')](_0x4547ba[_0xa880('0x39')],qs[_0xa880('0x3d')](_0x3e925b['query'][_0xa880('0x3d')]));_0x218723[_0xa880('0x3e')]=_0x218723[_0xa880('0x3e')][_0xa880('0x3f')]?_0x218723[_0xa880('0x3e')]:_0x4547ba['model'];if(!_0x3e925b[_0xa880('0x3a')]['hasOwnProperty'](_0xa880('0x40'))){_0x218723[_0xa880('0x23')]=qs[_0xa880('0x23')](_0x3e925b[_0xa880('0x3a')]['limit']);_0x218723[_0xa880('0x25')]=qs[_0xa880('0x25')](_0x3e925b[_0xa880('0x3a')][_0xa880('0x25')]);}_0x218723[_0xa880('0x41')]=qs[_0xa880('0x42')](_0x3e925b[_0xa880('0x3a')][_0xa880('0x42')]);_0x218723[_0xa880('0x43')]=qs[_0xa880('0x3b')](_[_0xa880('0x44')](_0x3e925b[_0xa880('0x3a')],_0x4547ba[_0xa880('0x3b')]),_0xe8fe54);if(_0x3e925b[_0xa880('0x3a')][_0xa880('0x45')]){_0x218723[_0xa880('0x43')]=_['merge'](_0x218723[_0xa880('0x43')],{'$or':_[_0xa880('0x46')](_0xe8fe54,function(_0x1db63b){if(_0x1db63b[_0xa880('0x47')]!==_0xa880('0x48')){var _0x2616c6={};_0x2616c6[_0x1db63b[_0xa880('0x35')]]={'$like':'%'+_0x3e925b['query'][_0xa880('0x45')]+'%'};return _0x2616c6;}})});}_0x218723=_[_0xa880('0x49')]({},_0x218723,_0x3e925b[_0xa880('0x4a')]);var _0x8c6b0b={'where':_0x218723['where']};return db[_0xa880('0x38')]['count'](_0x8c6b0b)['then'](function(_0x13b6e1){_0x30f434[_0xa880('0x24')]=_0x13b6e1;if(_0x3e925b[_0xa880('0x3a')][_0xa880('0x4b')]){_0x218723[_0xa880('0x4c')]=[{'all':!![]}];}return db[_0xa880('0x38')][_0xa880('0x4d')](_0x218723);})['then'](function(_0x52bcf7){_0x30f434['rows']=_0x52bcf7;return _0x30f434;})[_0xa880('0x2c')](respondWithFilteredResult(_0x48df9c,_0x218723))[_0xa880('0x4e')](handleError(_0x48df9c,null));};exports['show']=function(_0x236b86,_0x39cece){var _0x55ad71={'raw':!![],'where':{'id':_0x236b86[_0xa880('0x4f')]['id']}},_0x52690b={};_0x52690b['model']=_['keys'](db[_0xa880('0x38')]['rawAttributes']);_0x52690b[_0xa880('0x3a')]=_[_0xa880('0x50')](_0x236b86[_0xa880('0x3a')]);_0x52690b[_0xa880('0x3b')]=_[_0xa880('0x3c')](_0x52690b[_0xa880('0x39')],_0x52690b[_0xa880('0x3a')]);_0x55ad71[_0xa880('0x3e')]=_[_0xa880('0x3c')](_0x52690b['model'],qs['fields'](_0x236b86[_0xa880('0x3a')][_0xa880('0x3d')]));_0x55ad71[_0xa880('0x3e')]=_0x55ad71[_0xa880('0x3e')][_0xa880('0x3f')]?_0x55ad71[_0xa880('0x3e')]:_0x52690b[_0xa880('0x39')];if(_0x236b86[_0xa880('0x3a')][_0xa880('0x4b')]){_0x55ad71[_0xa880('0x4c')]=[{'all':!![]}];}_0x55ad71=_[_0xa880('0x49')]({},_0x55ad71,_0x236b86[_0xa880('0x4a')]);return db[_0xa880('0x38')][_0xa880('0x51')](_0x55ad71)[_0xa880('0x2c')](handleEntityNotFound(_0x39cece,null))[_0xa880('0x2c')](respondWithResult(_0x39cece,null))[_0xa880('0x4e')](handleError(_0x39cece,null));};exports['create']=function(_0x32d475,_0x2255b0){return db['FaxQueue'][_0xa880('0x52')](_0x32d475[_0xa880('0x53')],{})[_0xa880('0x2c')](function(_0x2ec6b6){var _0x5f3b94=_0x32d475[_0xa880('0x54')][_0xa880('0x2e')]({'plain':!![]});if(!_0x5f3b94)throw new Error(_0xa880('0x55'));if(_0x5f3b94['role']===_0xa880('0x54')){var _0x58587b=_0x2ec6b6[_0xa880('0x2e')]({'plain':!![]});var _0x3a42fd=_0xa880('0x2f');return db[_0xa880('0x56')][_0xa880('0x51')]({'where':{'name':_0x3a42fd,'userProfileId':_0x5f3b94[_0xa880('0x57')]},'raw':!![]})['then'](function(_0x4a8437){if(_0x4a8437&&_0x4a8437['autoAssociation']===0x0){return db[_0xa880('0x30')][_0xa880('0x52')]({'name':_0x58587b[_0xa880('0x35')],'resourceId':_0x58587b['id'],'type':_0x4a8437['name'],'sectionId':_0x4a8437['id']},{})['then'](function(){return _0x2ec6b6;});}else{return _0x2ec6b6;}})[_0xa880('0x4e')](function(_0x4ac305){logger[_0xa880('0x33')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4ac305);throw _0x4ac305;});}return _0x2ec6b6;})[_0xa880('0x2c')](respondWithResult(_0x2255b0,0xc9))[_0xa880('0x4e')](handleError(_0x2255b0,null));};exports[_0xa880('0x2b')]=function(_0x4579f5,_0xbd33f5){if(_0x4579f5[_0xa880('0x53')]['id']){delete _0x4579f5['body']['id'];}return db[_0xa880('0x38')][_0xa880('0x51')]({'where':{'id':_0x4579f5[_0xa880('0x4f')]['id']}})['then'](handleEntityNotFound(_0xbd33f5,null))[_0xa880('0x2c')](saveUpdates(_0x4579f5[_0xa880('0x53')],null))['then'](respondWithResult(_0xbd33f5,null))[_0xa880('0x4e')](handleError(_0xbd33f5,null));};exports[_0xa880('0x2d')]=function(_0x2cae8c,_0x4b3629){return db[_0xa880('0x38')]['find']({'where':{'id':_0x2cae8c['params']['id']}})[_0xa880('0x2c')](handleEntityNotFound(_0x4b3629,null))[_0xa880('0x2c')](removeEntity(_0x4b3629,null))[_0xa880('0x4e')](handleError(_0x4b3629,null));};exports['describe']=function(_0x33ee8d,_0xe041f1){return db['FaxQueue'][_0xa880('0x58')]()[_0xa880('0x2c')](respondWithResult(_0xe041f1,null))[_0xa880('0x4e')](handleError(_0xe041f1,null));};exports[_0xa880('0x59')]=function(_0x24765e,_0x17bed9,_0x3b52f3){var _0x4c6928={'raw':!![],'where':{}},_0xd04ab7={},_0x5b7c4c;return db[_0xa880('0x38')][_0xa880('0x5a')]({'where':{'id':_0x24765e['params']['id']}})[_0xa880('0x2c')](handleEntityNotFound(_0x17bed9,null))[_0xa880('0x2c')](function(_0x589a77){if(_0x589a77){_0x5b7c4c=_0x589a77[_0xa880('0x2e')]({'plain':!![]});_0xd04ab7[_0xa880('0x39')]=_[_0xa880('0x50')](db[_0xa880('0x5b')][_0xa880('0x5c')]);_0xd04ab7[_0xa880('0x3a')]=_[_0xa880('0x50')](_0x24765e[_0xa880('0x3a')]);_0xd04ab7['filters']=_['intersection'](_0xd04ab7['model'],_0xd04ab7[_0xa880('0x3a')]);_0x4c6928['attributes']=_['intersection'](_0xd04ab7[_0xa880('0x39')],qs[_0xa880('0x3d')](_0x24765e['query'][_0xa880('0x3d')]));_0x4c6928[_0xa880('0x3e')]=_0x4c6928[_0xa880('0x3e')][_0xa880('0x3f')]?_0x4c6928[_0xa880('0x3e')]:_0xd04ab7[_0xa880('0x39')];if(!_0x24765e[_0xa880('0x3a')][_0xa880('0x5d')]('nolimit')){_0x4c6928['limit']=qs[_0xa880('0x23')](_0x24765e[_0xa880('0x3a')]['limit']);_0x4c6928[_0xa880('0x25')]=qs[_0xa880('0x25')](_0x24765e['query']['offset']);}_0x4c6928['order']=qs[_0xa880('0x42')](_0x24765e[_0xa880('0x3a')][_0xa880('0x42')]);_0x4c6928[_0xa880('0x43')]=qs[_0xa880('0x3b')](_['pick'](_0x24765e['query'],_0xd04ab7['filters']));_0x4c6928['where'][_0xa880('0x5e')]=_0x589a77['id'];if(_0x24765e[_0xa880('0x3a')][_0xa880('0x45')]){_0x4c6928['where']=_[_0xa880('0x49')](_0x4c6928[_0xa880('0x43')],{'$or':_[_0xa880('0x46')](_0x4c6928[_0xa880('0x3e')],function(_0xf8f4ef){var _0x15aeaf={};_0x15aeaf[_0xf8f4ef]={'$like':'%'+_0x24765e[_0xa880('0x3a')][_0xa880('0x45')]+'%'};return _0x15aeaf;})});}_0x4c6928=_[_0xa880('0x49')]({},_0x4c6928,_0x24765e[_0xa880('0x4a')]);return db['UserFaxQueue'][_0xa880('0x4d')](_0x4c6928);}})[_0xa880('0x2c')](function(_0x440667){if(_0x440667){return db[_0xa880('0x5f')][_0xa880('0x60')]({'where':{'id':_[_0xa880('0x46')](_0x440667,_0xa880('0x61')),'role':_0xa880('0x62')},'attributes':['id','name',_0xa880('0x63'),'updatedAt','createdAt']});}})[_0xa880('0x2c')](function(_0x11e5f1){if(_0x11e5f1){return{'count':_0x11e5f1['count'],'rows':_[_0xa880('0x46')](_0x11e5f1['rows'],function(_0xb1dc2b){return{'membername':_0xb1dc2b[_0xa880('0x35')],'UserId':_0xb1dc2b['id'],'queue_name':_0x5b7c4c[_0xa880('0x35')],'FaxQueueId':_0x5b7c4c['id'],'interface':util[_0xa880('0x64')](_0xa880('0x65'),_0xa880('0x66'),_0xb1dc2b['name']),'penalty':0x0,'paused':_0xb1dc2b[_0xa880('0x63')],'createdAt':_0xb1dc2b['createdAt'],'updatedAt':_0xb1dc2b['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xa880('0x2c')](respondWithFilteredResult(_0x17bed9,_0x4c6928))[_0xa880('0x4e')](handleError(_0x17bed9,null));};exports[_0xa880('0x67')]=function(_0x5330d3,_0x2f405d,_0x1a7a47){var _0x530759={};var _0x100d0d={};var _0x75ad60;var _0x1abe4b;return db[_0xa880('0x38')][_0xa880('0x5a')]({'where':{'id':_0x5330d3['params']['id']}})[_0xa880('0x2c')](handleEntityNotFound(_0x2f405d,null))[_0xa880('0x2c')](function(_0x5466e0){if(_0x5466e0){_0x75ad60=_0x5466e0;_0x100d0d[_0xa880('0x39')]=_['keys'](db[_0xa880('0x68')]['rawAttributes']);_0x100d0d[_0xa880('0x3a')]=_['keys'](_0x5330d3[_0xa880('0x3a')]);_0x100d0d['filters']=_[_0xa880('0x3c')](_0x100d0d[_0xa880('0x39')],_0x100d0d[_0xa880('0x3a')]);_0x530759[_0xa880('0x3e')]=_[_0xa880('0x3c')](_0x100d0d[_0xa880('0x39')],qs[_0xa880('0x3d')](_0x5330d3[_0xa880('0x3a')][_0xa880('0x3d')]));_0x530759[_0xa880('0x3e')]=_0x530759['attributes'][_0xa880('0x3f')]?_0x530759[_0xa880('0x3e')]:_0x100d0d[_0xa880('0x39')];_0x530759[_0xa880('0x41')]=qs[_0xa880('0x42')](_0x5330d3['query'][_0xa880('0x42')]);_0x530759[_0xa880('0x43')]=qs[_0xa880('0x3b')](_['pick'](_0x5330d3[_0xa880('0x3a')],_0x100d0d[_0xa880('0x3b')]));if(_0x5330d3[_0xa880('0x3a')]['filter']){_0x530759[_0xa880('0x43')]=_['merge'](_0x530759['where'],{'$or':_[_0xa880('0x46')](_0x530759[_0xa880('0x3e')],function(_0xbcf012){var _0x6a0688={};_0x6a0688[_0xbcf012]={'$like':'%'+_0x5330d3[_0xa880('0x3a')][_0xa880('0x45')]+'%'};return _0x6a0688;})});}_0x530759=_['merge']({},_0x530759,_0x5330d3[_0xa880('0x4a')]);return _0x75ad60[_0xa880('0x67')](_0x530759);}})[_0xa880('0x2c')](function(_0x29ac43){if(_0x29ac43){_0x1abe4b=_0x29ac43[_0xa880('0x3f')];if(!_0x5330d3['query'][_0xa880('0x5d')](_0xa880('0x40'))){_0x530759[_0xa880('0x23')]=qs['limit'](_0x5330d3[_0xa880('0x3a')][_0xa880('0x23')]);_0x530759['offset']=qs[_0xa880('0x25')](_0x5330d3[_0xa880('0x3a')][_0xa880('0x25')]);}return _0x75ad60[_0xa880('0x67')](_0x530759);}})[_0xa880('0x2c')](function(_0x279d86){if(_0x279d86){return _0x279d86?{'count':_0x1abe4b,'rows':_0x279d86}:null;}})[_0xa880('0x2c')](respondWithResult(_0x2f405d,null))[_0xa880('0x4e')](handleError(_0x2f405d,null));};exports[_0xa880('0x69')]=function(_0x18b8bf,_0x553a45,_0x5b15a6){var _0x45448f=_0x18b8bf[_0xa880('0x53')][_0xa880('0x6a')];return db[_0xa880('0x68')]['findAll']({'where':{'id':_0x45448f},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa880('0x6b'),'attributes':['id',_0xa880('0x35'),_0xa880('0x6c'),'voicePause',_0xa880('0x6d')],'raw':!![]}]})[_0xa880('0x2c')](function(_0xdb056b){if(_0xdb056b){var _0x58c469=_[_0xa880('0x6e')](_0xdb056b,function(_0x40cebe){var _0x35d56c=_0x40cebe[_0xa880('0x2e')]({'plain':!![]});return _0x35d56c[_0xa880('0x6b')];});return db['FaxQueue'][_0xa880('0x51')]({'where':{'id':_0x18b8bf['params']['id']}})[_0xa880('0x2c')](function(_0x32165a){return db[_0xa880('0x6f')][_0xa880('0x70')](function(_0x38123a){return _0x32165a['addTeams'](_0x45448f,{'transaction':_0x38123a})[_0xa880('0x2c')](function(){return BPromise[_0xa880('0x71')](_0x58c469,function(_0x26d3fb){return db[_0xa880('0x5b')][_0xa880('0x72')]({'where':{'UserId':_0x26d3fb['id'],'FaxQueueId':_0x18b8bf[_0xa880('0x4f')]['id']},'transaction':_0x38123a});});})[_0xa880('0x2c')](function(){_0x58c469[_0xa880('0x73')](function(_0x3c4f4f){socket[_0xa880('0x74')](_0xa880('0x75'),{'UserId':_0x3c4f4f['id'],'FaxQueueId':_0x32165a['id']});});});});});}})[_0xa880('0x2c')](respondWithStatusCode(_0x553a45,null))[_0xa880('0x4e')](handleError(_0x553a45,null));};exports[_0xa880('0x76')]=function(_0x551574,_0x3c6248,_0x4bffda){return db[_0xa880('0x68')]['findAll']({'where':{'id':_0x551574[_0xa880('0x3a')][_0xa880('0x6a')]},'attributes':['id'],'include':[{'model':db[_0xa880('0x5f')],'as':_0xa880('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3c6248,null))[_0xa880('0x2c')](function(_0x2fd20f){var _0x1b26d1=_['map'](_0x2fd20f,'id');var _0x45cfd2=[];var _0x4c0c88=[];var _0x3f67b2=squel['select']();_0x3f67b2[_0xa880('0x77')](_0xa880('0x78'))[_0xa880('0x79')](_0xa880('0x7a'),'tq')[_0xa880('0x7b')](_0xa880('0x7c'),'ut',_0xa880('0x7d'))[_0xa880('0x43')](_0xa880('0x7e'),_0x551574[_0xa880('0x4f')]['id']);for(var _0xccbfc=0x0;_0xccbfc<_0x2fd20f[_0xa880('0x3f')];_0xccbfc+=0x1){let _0x5ec109=_0x2fd20f[_0xccbfc];for(var _0x265b91=0x0;_0x265b91<_0x5ec109[_0xa880('0x6b')]['length'];_0x265b91+=0x1){let _0x37c2e2=_0x5ec109[_0xa880('0x6b')][_0x265b91];var _0x71a47=_0x3f67b2['clone']();_0x71a47['where'](_0xa880('0x7f'),_0x37c2e2['id']);_0x4c0c88[_0xa880('0x80')](db[_0xa880('0x6f')][_0xa880('0x3a')](_0x71a47[_0xa880('0x81')](),{'type':db[_0xa880('0x6f')][_0xa880('0x82')][_0xa880('0x83')]})['then'](function(_0x548e2f){if(_0x548e2f[_0xa880('0x3f')]===0x1){return _0x37c2e2['id'];}else{var _0x39b17a=_[_0xa880('0x84')](_[_0xa880('0x46')](_0x548e2f,_0xa880('0x85')),function(_0x49f7ae){return _[_0xa880('0x86')](_0x1b26d1,_0x49f7ae);});if(_0x39b17a){return _0x37c2e2['id'];}}}));}}return BPromise[_0xa880('0x87')](_0x4c0c88)[_0xa880('0x2c')](function(_0x1a1d2c){_0x45cfd2=_(_0x45cfd2)[_0xa880('0x88')](_0x1a1d2c)[_0xa880('0x89')]()['value']();return db[_0xa880('0x38')][_0xa880('0x51')]({'where':{'id':_0x551574[_0xa880('0x4f')]['id']}})['then'](function(_0x101083){return db[_0xa880('0x6f')][_0xa880('0x70')](function(_0x450399){return _0x101083[_0xa880('0x76')](_0x551574['query'][_0xa880('0x6a')],{'transaction':_0x450399})['then'](function(){if(!_['isEmpty'](_0x45cfd2)){return _0x101083['removeAgents'](_0x45cfd2,{'transaction':_0x450399});}})['then'](function(){_0x45cfd2[_0xa880('0x73')](function(_0x569ab8){socket[_0xa880('0x74')](_0xa880('0x8a'),{'UserId':_0x569ab8,'FaxQueueId':_0x101083['id']});});});});});});})[_0xa880('0x2c')](respondWithStatusCode(_0x3c6248,null))[_0xa880('0x4e')](handleError(_0x3c6248,null));};exports[_0xa880('0x8b')]=function(_0x26101d,_0x2d93aa,_0x5628c6){return db['FaxQueue']['find']({'where':{'id':_0x26101d[_0xa880('0x4f')]['id']}})[_0xa880('0x2c')](handleEntityNotFound(_0x2d93aa,null))[_0xa880('0x2c')](function(_0x5209cd){if(_0x5209cd){return _0x5209cd[_0xa880('0x8b')](_0x26101d['body']['ids'],_[_0xa880('0x8c')](_0x26101d['body'],['ids','id'])||{})['spread'](function(_0x19d14f){for(var _0x24fd01=0x0;_0x24fd01<_0x26101d[_0xa880('0x53')][_0xa880('0x6a')][_0xa880('0x3f')];_0x24fd01+=0x1){socket[_0xa880('0x74')](_0xa880('0x75'),{'UserId':Number(_0x26101d['body'][_0xa880('0x6a')][_0x24fd01]),'FaxQueueId':Number(_0x26101d[_0xa880('0x4f')]['id'])});}return _0x19d14f;});}})['then'](respondWithResult(_0x2d93aa,null))[_0xa880('0x4e')](handleError(_0x2d93aa,null));};exports[_0xa880('0x8d')]=function(_0x4703a7,_0x562954,_0x8edd69){return db[_0xa880('0x38')][_0xa880('0x51')]({'where':{'id':_0x4703a7[_0xa880('0x4f')]['id']}})[_0xa880('0x2c')](handleEntityNotFound(_0x562954,null))[_0xa880('0x2c')](function(_0x22e808){if(_0x22e808){return _0x22e808[_0xa880('0x8d')](_0x4703a7['query'][_0xa880('0x6a')])[_0xa880('0x2c')](function(){if(_[_0xa880('0x8e')](_0x4703a7[_0xa880('0x3a')][_0xa880('0x6a')])){for(var _0x2b03ee=0x0;_0x2b03ee<_0x4703a7[_0xa880('0x3a')][_0xa880('0x6a')][_0xa880('0x3f')];_0x2b03ee+=0x1){socket[_0xa880('0x74')](_0xa880('0x8a'),{'UserId':Number(_0x4703a7[_0xa880('0x3a')][_0xa880('0x6a')][_0x2b03ee]),'FaxQueueId':Number(_0x4703a7[_0xa880('0x4f')]['id'])});}}else{socket['emit'](_0xa880('0x8a'),{'UserId':Number(_0x4703a7['query'][_0xa880('0x6a')]),'FaxQueueId':Number(_0x4703a7[_0xa880('0x4f')]['id'])});}});}})[_0xa880('0x2c')](respondWithStatusCode(_0x562954,null))[_0xa880('0x4e')](handleError(_0x562954,null));};exports[_0xa880('0x8f')]=function(_0x55087b,_0x3a7fae,_0x30fe71){var _0x48556e={};var _0x5364c1={};var _0xc059de;var _0x5852c0;return db[_0xa880('0x38')][_0xa880('0x5a')]({'where':{'id':_0x55087b['params']['id']}})['then'](handleEntityNotFound(_0x3a7fae,null))['then'](function(_0x2444c4){if(_0x2444c4){_0xc059de=_0x2444c4;_0x5364c1[_0xa880('0x39')]=_[_0xa880('0x50')](db['User'][_0xa880('0x5c')]);_0x5364c1['query']=_[_0xa880('0x50')](_0x55087b[_0xa880('0x3a')]);_0x5364c1['filters']=_[_0xa880('0x3c')](_0x5364c1[_0xa880('0x39')],_0x5364c1[_0xa880('0x3a')]);_0x48556e[_0xa880('0x3e')]=_[_0xa880('0x3c')](_0x5364c1[_0xa880('0x39')],qs[_0xa880('0x3d')](_0x55087b[_0xa880('0x3a')]['fields']));_0x48556e[_0xa880('0x3e')]=_0x48556e[_0xa880('0x3e')][_0xa880('0x3f')]?_0x48556e[_0xa880('0x3e')]:_0x5364c1[_0xa880('0x39')];_0x48556e['order']=qs[_0xa880('0x42')](_0x55087b['query'][_0xa880('0x42')]);_0x48556e[_0xa880('0x43')]=qs[_0xa880('0x3b')](_[_0xa880('0x44')](_0x55087b['query'],_0x5364c1[_0xa880('0x3b')]));if(_0x55087b['query'][_0xa880('0x45')]){_0x48556e[_0xa880('0x43')]=_[_0xa880('0x49')](_0x48556e[_0xa880('0x43')],{'$or':_['map'](_0x48556e[_0xa880('0x3e')],function(_0x3e030f){var _0x27620c={};_0x27620c[_0x3e030f]={'$like':'%'+_0x55087b['query'][_0xa880('0x45')]+'%'};return _0x27620c;})});}_0x48556e=_[_0xa880('0x49')]({},_0x48556e,_0x55087b[_0xa880('0x4a')]);return _0xc059de[_0xa880('0x8f')](_0x48556e);}})[_0xa880('0x2c')](function(_0x452b32){if(_0x452b32){_0x5852c0=_0x452b32[_0xa880('0x3f')];if(!_0x55087b['query']['hasOwnProperty'](_0xa880('0x40'))){_0x48556e['limit']=qs['limit'](_0x55087b[_0xa880('0x3a')][_0xa880('0x23')]);_0x48556e[_0xa880('0x25')]=qs[_0xa880('0x25')](_0x55087b[_0xa880('0x3a')][_0xa880('0x25')]);}return _0xc059de['getAgents'](_0x48556e);}})[_0xa880('0x2c')](function(_0xa023b5){if(_0xa023b5){return _0xa023b5?{'count':_0x5852c0,'rows':_0xa023b5}:null;}})['then'](respondWithResult(_0x3a7fae,null))[_0xa880('0x4e')](handleError(_0x3a7fae,null));};
\ No newline at end of file
+var _0x26f6=['union','compact','value','isEmpty','removeAgents','emit','userFaxQueue:remove','addAgents','omit','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','end','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','get','FaxQueues','UserProfileResource','status','stack','name','send','index','map','rawAttributes','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','options','FaxQueue','includeAll','findAll','rows','show','keys','include','merge','find','catch','create','body','role','user','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','FaxQueueId','UserFaxQueue','User','UserId','agent','updatedAt','createdAt','format','%s/%s','faxPause','getTeams','findOne','Team','nolimit','addTeams','ids','Agents','online','flatMap','transaction','each','findOrCreate','forEach','userFaxQueue:save','removeTeams','select','tq.TeamId','team_has_fax_queues','join','user_has_teams','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all'];(function(_0x5158ea,_0x322327){var _0x6b8a59=function(_0x4abb2f){while(--_0x4abb2f){_0x5158ea['push'](_0x5158ea['shift']());}};_0x6b8a59(++_0x322327);}(_0x26f6,0x95));var _0x626f=function(_0x31132f,_0x23f49a){_0x31132f=_0x31132f-0x0;var _0x45ac8e=_0x26f6[_0x31132f];return _0x45ac8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x626f('0x0'));var zipdir=require(_0x626f('0x1'));var jsonpatch=require(_0x626f('0x2'));var rp=require(_0x626f('0x3'));var moment=require(_0x626f('0x4'));var BPromise=require(_0x626f('0x5'));var Mustache=require('mustache');var util=require(_0x626f('0x6'));var path=require(_0x626f('0x7'));var sox=require(_0x626f('0x8'));var csv=require(_0x626f('0x9'));var ejs=require(_0x626f('0xa'));var fs=require('fs');var fs_extra=require(_0x626f('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x626f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x626f('0x9'));var querystring=require(_0x626f('0xd'));var Papa=require(_0x626f('0xe'));var Redis=require(_0x626f('0xf'));var authService=require(_0x626f('0x10'));var qs=require(_0x626f('0x11'));var as=require(_0x626f('0x12'));var hardwareService=require(_0x626f('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x626f('0x14'));var config=require(_0x626f('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x626f('0x16'))['db'];config[_0x626f('0x17')]=_[_0x626f('0x18')](config[_0x626f('0x17')],{'host':_0x626f('0x19'),'port':0x18eb});var socket=require(_0x626f('0x1a'))(new Redis(config[_0x626f('0x17')]));require(_0x626f('0x1b'))[_0x626f('0x1c')](socket);function respondWithStatusCode(_0x2211a6,_0x5b55a4){_0x5b55a4=_0x5b55a4||0xcc;return function(_0xa4775d){if(_0xa4775d){return _0x2211a6[_0x626f('0x1d')](_0x5b55a4);}return _0x2211a6['status'](_0x5b55a4)[_0x626f('0x1e')]();};}function respondWithResult(_0x7db1f8,_0x4e2217){_0x4e2217=_0x4e2217||0xc8;return function(_0x210e70){if(_0x210e70){return _0x7db1f8['status'](_0x4e2217)['json'](_0x210e70);}};}function respondWithFilteredResult(_0x5a71d5,_0x187907){return function(_0x16a9d1){if(_0x16a9d1){var _0x3c6e8a=typeof _0x187907[_0x626f('0x1f')]===_0x626f('0x20')&&typeof _0x187907[_0x626f('0x21')]===_0x626f('0x20');var _0x5eb269=_0x16a9d1[_0x626f('0x22')];var _0x1356a7=_0x3c6e8a?0x0:_0x187907[_0x626f('0x1f')];var _0x349c61=_0x3c6e8a?_0x16a9d1[_0x626f('0x22')]:_0x187907['offset']+_0x187907['limit'];var _0xfc1d7f;if(_0x349c61>=_0x5eb269){_0x349c61=_0x5eb269;_0xfc1d7f=0xc8;}else{_0xfc1d7f=0xce;}_0x5a71d5['status'](_0xfc1d7f);return _0x5a71d5[_0x626f('0x23')]('Content-Range',_0x1356a7+'-'+_0x349c61+'/'+_0x5eb269)[_0x626f('0x24')](_0x16a9d1);}return null;};}function patchUpdates(_0x357fb1){return function(_0xf89da){try{jsonpatch['apply'](_0xf89da,_0x357fb1,!![]);}catch(_0x45118c){return BPromise[_0x626f('0x25')](_0x45118c);}return _0xf89da[_0x626f('0x26')]();};}function saveUpdates(_0x1d64af,_0x517189){return function(_0x3cd8f8){if(_0x3cd8f8){return _0x3cd8f8[_0x626f('0x27')](_0x1d64af)[_0x626f('0x28')](function(_0x581014){return _0x581014;});}return null;};}function removeEntity(_0x29214d,_0x103c27){return function(_0x3da9ba){if(_0x3da9ba){return _0x3da9ba[_0x626f('0x29')]()[_0x626f('0x28')](function(){var _0x44b27c=_0x3da9ba[_0x626f('0x2a')]({'plain':!![]});var _0x4e582e=_0x626f('0x2b');return db[_0x626f('0x2c')][_0x626f('0x29')]({'where':{'type':_0x4e582e,'resourceId':_0x44b27c['id']}})['then'](function(){return _0x3da9ba;});})['then'](function(){_0x29214d[_0x626f('0x2d')](0xcc)[_0x626f('0x1e')]();});}};}function handleEntityNotFound(_0xb16e20,_0x2a73a4){return function(_0x4efa82){if(!_0x4efa82){_0xb16e20[_0x626f('0x1d')](0x194);}return _0x4efa82;};}function handleError(_0x31c6b9,_0x442874){_0x442874=_0x442874||0x1f4;return function(_0x9c025b){logger['error'](_0x9c025b[_0x626f('0x2e')]);if(_0x9c025b[_0x626f('0x2f')]){delete _0x9c025b['name'];}_0x31c6b9['status'](_0x442874)[_0x626f('0x30')](_0x9c025b);};}exports[_0x626f('0x31')]=function(_0x541a2d,_0x1c999e){var _0x5bd570={},_0x5d5f08={},_0x199b1a={'count':0x0,'rows':[]};var _0xc3115b=_[_0x626f('0x32')](db['FaxQueue'][_0x626f('0x33')],function(_0x41420a){return{'name':_0x41420a['fieldName'],'type':_0x41420a[_0x626f('0x34')][_0x626f('0x35')]};});_0x5d5f08['model']=_[_0x626f('0x32')](_0xc3115b,'name');_0x5d5f08['query']=_['keys'](_0x541a2d[_0x626f('0x36')]);_0x5d5f08['filters']=_[_0x626f('0x37')](_0x5d5f08[_0x626f('0x38')],_0x5d5f08[_0x626f('0x36')]);_0x5bd570['attributes']=_[_0x626f('0x37')](_0x5d5f08['model'],qs['fields'](_0x541a2d[_0x626f('0x36')][_0x626f('0x39')]));_0x5bd570[_0x626f('0x3a')]=_0x5bd570['attributes'][_0x626f('0x3b')]?_0x5bd570[_0x626f('0x3a')]:_0x5d5f08['model'];if(!_0x541a2d[_0x626f('0x36')][_0x626f('0x3c')]('nolimit')){_0x5bd570['limit']=qs[_0x626f('0x21')](_0x541a2d[_0x626f('0x36')][_0x626f('0x21')]);_0x5bd570[_0x626f('0x1f')]=qs['offset'](_0x541a2d[_0x626f('0x36')]['offset']);}_0x5bd570[_0x626f('0x3d')]=qs[_0x626f('0x3e')](_0x541a2d['query'][_0x626f('0x3e')]);_0x5bd570[_0x626f('0x3f')]=qs[_0x626f('0x40')](_[_0x626f('0x41')](_0x541a2d['query'],_0x5d5f08[_0x626f('0x40')]),_0xc3115b);if(_0x541a2d['query'][_0x626f('0x42')]){_0x5bd570[_0x626f('0x3f')]=_['merge'](_0x5bd570[_0x626f('0x3f')],{'$or':_[_0x626f('0x32')](_0xc3115b,function(_0x4028f0){if(_0x4028f0[_0x626f('0x34')]!=='VIRTUAL'){var _0x364510={};_0x364510[_0x4028f0[_0x626f('0x2f')]]={'$like':'%'+_0x541a2d[_0x626f('0x36')][_0x626f('0x42')]+'%'};return _0x364510;}})});}_0x5bd570=_['merge']({},_0x5bd570,_0x541a2d[_0x626f('0x43')]);var _0x78a39e={'where':_0x5bd570[_0x626f('0x3f')]};return db[_0x626f('0x44')][_0x626f('0x22')](_0x78a39e)['then'](function(_0x55c96b){_0x199b1a['count']=_0x55c96b;if(_0x541a2d[_0x626f('0x36')][_0x626f('0x45')]){_0x5bd570['include']=[{'all':!![]}];}return db[_0x626f('0x44')][_0x626f('0x46')](_0x5bd570);})['then'](function(_0x270a7d){_0x199b1a[_0x626f('0x47')]=_0x270a7d;return _0x199b1a;})['then'](respondWithFilteredResult(_0x1c999e,_0x5bd570))['catch'](handleError(_0x1c999e,null));};exports[_0x626f('0x48')]=function(_0x6469a9,_0x290a70){var _0x419b2b={'raw':!![],'where':{'id':_0x6469a9['params']['id']}},_0x87976b={};_0x87976b[_0x626f('0x38')]=_[_0x626f('0x49')](db[_0x626f('0x44')][_0x626f('0x33')]);_0x87976b[_0x626f('0x36')]=_['keys'](_0x6469a9[_0x626f('0x36')]);_0x87976b[_0x626f('0x40')]=_[_0x626f('0x37')](_0x87976b[_0x626f('0x38')],_0x87976b[_0x626f('0x36')]);_0x419b2b['attributes']=_[_0x626f('0x37')](_0x87976b[_0x626f('0x38')],qs[_0x626f('0x39')](_0x6469a9['query']['fields']));_0x419b2b[_0x626f('0x3a')]=_0x419b2b['attributes'][_0x626f('0x3b')]?_0x419b2b[_0x626f('0x3a')]:_0x87976b[_0x626f('0x38')];if(_0x6469a9['query']['includeAll']){_0x419b2b[_0x626f('0x4a')]=[{'all':!![]}];}_0x419b2b=_[_0x626f('0x4b')]({},_0x419b2b,_0x6469a9[_0x626f('0x43')]);return db[_0x626f('0x44')][_0x626f('0x4c')](_0x419b2b)[_0x626f('0x28')](handleEntityNotFound(_0x290a70,null))['then'](respondWithResult(_0x290a70,null))[_0x626f('0x4d')](handleError(_0x290a70,null));};exports[_0x626f('0x4e')]=function(_0x4e5671,_0x3d6892){return db[_0x626f('0x44')]['create'](_0x4e5671[_0x626f('0x4f')],{})['then'](function(_0x1ab3ec){var _0x34075c=_0x4e5671['user']['get']({'plain':!![]});if(!_0x34075c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x34075c[_0x626f('0x50')]===_0x626f('0x51')){var _0x5ea9f2=_0x1ab3ec['get']({'plain':!![]});var _0x463dd4=_0x626f('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x463dd4,'userProfileId':_0x34075c['userProfileId']},'raw':!![]})[_0x626f('0x28')](function(_0x3ae29d){if(_0x3ae29d&&_0x3ae29d['autoAssociation']===0x0){return db['UserProfileResource'][_0x626f('0x4e')]({'name':_0x5ea9f2[_0x626f('0x2f')],'resourceId':_0x5ea9f2['id'],'type':_0x3ae29d[_0x626f('0x2f')],'sectionId':_0x3ae29d['id']},{})[_0x626f('0x28')](function(){return _0x1ab3ec;});}else{return _0x1ab3ec;}})[_0x626f('0x4d')](function(_0x550d4f){logger[_0x626f('0x52')](_0x626f('0x53'),_0x550d4f);throw _0x550d4f;});}return _0x1ab3ec;})['then'](respondWithResult(_0x3d6892,0xc9))[_0x626f('0x4d')](handleError(_0x3d6892,null));};exports[_0x626f('0x27')]=function(_0x5a113b,_0x5c24ee){if(_0x5a113b['body']['id']){delete _0x5a113b[_0x626f('0x4f')]['id'];}return db[_0x626f('0x44')]['find']({'where':{'id':_0x5a113b['params']['id']}})['then'](handleEntityNotFound(_0x5c24ee,null))[_0x626f('0x28')](saveUpdates(_0x5a113b[_0x626f('0x4f')],null))[_0x626f('0x28')](respondWithResult(_0x5c24ee,null))['catch'](handleError(_0x5c24ee,null));};exports[_0x626f('0x29')]=function(_0x2a85b3,_0x3fe1cd){return db[_0x626f('0x44')][_0x626f('0x4c')]({'where':{'id':_0x2a85b3[_0x626f('0x54')]['id']}})[_0x626f('0x28')](handleEntityNotFound(_0x3fe1cd,null))[_0x626f('0x28')](removeEntity(_0x3fe1cd,null))['catch'](handleError(_0x3fe1cd,null));};exports[_0x626f('0x55')]=function(_0x9f4490,_0x209a15){return db[_0x626f('0x44')][_0x626f('0x55')]()[_0x626f('0x28')](respondWithResult(_0x209a15,null))[_0x626f('0x4d')](handleError(_0x209a15,null));};exports[_0x626f('0x56')]=function(_0xe69f09,_0x4d2563,_0x41cd36){var _0x3b7b8c={'raw':!![],'where':{}},_0x2c5129={},_0x24cad7;return db[_0x626f('0x44')]['findOne']({'where':{'id':_0xe69f09[_0x626f('0x54')]['id']}})[_0x626f('0x28')](handleEntityNotFound(_0x4d2563,null))[_0x626f('0x28')](function(_0x8e8c2c){if(_0x8e8c2c){_0x24cad7=_0x8e8c2c[_0x626f('0x2a')]({'plain':!![]});_0x2c5129[_0x626f('0x38')]=_[_0x626f('0x49')](db['UserFaxQueue'][_0x626f('0x33')]);_0x2c5129[_0x626f('0x36')]=_[_0x626f('0x49')](_0xe69f09['query']);_0x2c5129[_0x626f('0x40')]=_[_0x626f('0x37')](_0x2c5129[_0x626f('0x38')],_0x2c5129[_0x626f('0x36')]);_0x3b7b8c[_0x626f('0x3a')]=_[_0x626f('0x37')](_0x2c5129[_0x626f('0x38')],qs[_0x626f('0x39')](_0xe69f09[_0x626f('0x36')][_0x626f('0x39')]));_0x3b7b8c[_0x626f('0x3a')]=_0x3b7b8c[_0x626f('0x3a')][_0x626f('0x3b')]?_0x3b7b8c[_0x626f('0x3a')]:_0x2c5129['model'];if(!_0xe69f09[_0x626f('0x36')][_0x626f('0x3c')]('nolimit')){_0x3b7b8c[_0x626f('0x21')]=qs[_0x626f('0x21')](_0xe69f09[_0x626f('0x36')][_0x626f('0x21')]);_0x3b7b8c[_0x626f('0x1f')]=qs['offset'](_0xe69f09[_0x626f('0x36')][_0x626f('0x1f')]);}_0x3b7b8c[_0x626f('0x3d')]=qs[_0x626f('0x3e')](_0xe69f09[_0x626f('0x36')][_0x626f('0x3e')]);_0x3b7b8c[_0x626f('0x3f')]=qs[_0x626f('0x40')](_[_0x626f('0x41')](_0xe69f09['query'],_0x2c5129[_0x626f('0x40')]));_0x3b7b8c[_0x626f('0x3f')][_0x626f('0x57')]=_0x8e8c2c['id'];if(_0xe69f09[_0x626f('0x36')][_0x626f('0x42')]){_0x3b7b8c['where']=_[_0x626f('0x4b')](_0x3b7b8c['where'],{'$or':_[_0x626f('0x32')](_0x3b7b8c[_0x626f('0x3a')],function(_0x42df44){var _0x200453={};_0x200453[_0x42df44]={'$like':'%'+_0xe69f09['query'][_0x626f('0x42')]+'%'};return _0x200453;})});}_0x3b7b8c=_[_0x626f('0x4b')]({},_0x3b7b8c,_0xe69f09[_0x626f('0x43')]);return db[_0x626f('0x58')][_0x626f('0x46')](_0x3b7b8c);}})[_0x626f('0x28')](function(_0x4b16dc){if(_0x4b16dc){return db[_0x626f('0x59')]['findAndCountAll']({'where':{'id':_[_0x626f('0x32')](_0x4b16dc,_0x626f('0x5a')),'role':_0x626f('0x5b')},'attributes':['id',_0x626f('0x2f'),'faxPause',_0x626f('0x5c'),_0x626f('0x5d')]});}})[_0x626f('0x28')](function(_0x916124){if(_0x916124){return{'count':_0x916124[_0x626f('0x22')],'rows':_['map'](_0x916124[_0x626f('0x47')],function(_0x267ca4){return{'membername':_0x267ca4[_0x626f('0x2f')],'UserId':_0x267ca4['id'],'queue_name':_0x24cad7[_0x626f('0x2f')],'FaxQueueId':_0x24cad7['id'],'interface':util[_0x626f('0x5e')](_0x626f('0x5f'),'SIP',_0x267ca4[_0x626f('0x2f')]),'penalty':0x0,'paused':_0x267ca4[_0x626f('0x60')],'createdAt':_0x267ca4[_0x626f('0x5d')],'updatedAt':_0x267ca4[_0x626f('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4d2563,_0x3b7b8c))[_0x626f('0x4d')](handleError(_0x4d2563,null));};exports[_0x626f('0x61')]=function(_0x2c0af1,_0x364a4f,_0x316b99){var _0x3ee5bc={};var _0x1e544c={};var _0x556fba;var _0x3d262c;return db['FaxQueue'][_0x626f('0x62')]({'where':{'id':_0x2c0af1[_0x626f('0x54')]['id']}})[_0x626f('0x28')](handleEntityNotFound(_0x364a4f,null))[_0x626f('0x28')](function(_0x6b8e5f){if(_0x6b8e5f){_0x556fba=_0x6b8e5f;_0x1e544c[_0x626f('0x38')]=_['keys'](db[_0x626f('0x63')][_0x626f('0x33')]);_0x1e544c[_0x626f('0x36')]=_['keys'](_0x2c0af1[_0x626f('0x36')]);_0x1e544c[_0x626f('0x40')]=_['intersection'](_0x1e544c[_0x626f('0x38')],_0x1e544c[_0x626f('0x36')]);_0x3ee5bc[_0x626f('0x3a')]=_[_0x626f('0x37')](_0x1e544c[_0x626f('0x38')],qs[_0x626f('0x39')](_0x2c0af1[_0x626f('0x36')]['fields']));_0x3ee5bc[_0x626f('0x3a')]=_0x3ee5bc['attributes'][_0x626f('0x3b')]?_0x3ee5bc['attributes']:_0x1e544c[_0x626f('0x38')];_0x3ee5bc[_0x626f('0x3d')]=qs[_0x626f('0x3e')](_0x2c0af1[_0x626f('0x36')]['sort']);_0x3ee5bc['where']=qs['filters'](_[_0x626f('0x41')](_0x2c0af1[_0x626f('0x36')],_0x1e544c[_0x626f('0x40')]));if(_0x2c0af1[_0x626f('0x36')][_0x626f('0x42')]){_0x3ee5bc[_0x626f('0x3f')]=_[_0x626f('0x4b')](_0x3ee5bc[_0x626f('0x3f')],{'$or':_[_0x626f('0x32')](_0x3ee5bc[_0x626f('0x3a')],function(_0x2b6c21){var _0x26a313={};_0x26a313[_0x2b6c21]={'$like':'%'+_0x2c0af1[_0x626f('0x36')][_0x626f('0x42')]+'%'};return _0x26a313;})});}_0x3ee5bc=_[_0x626f('0x4b')]({},_0x3ee5bc,_0x2c0af1[_0x626f('0x43')]);return _0x556fba[_0x626f('0x61')](_0x3ee5bc);}})[_0x626f('0x28')](function(_0x56b2a9){if(_0x56b2a9){_0x3d262c=_0x56b2a9[_0x626f('0x3b')];if(!_0x2c0af1[_0x626f('0x36')][_0x626f('0x3c')](_0x626f('0x64'))){_0x3ee5bc[_0x626f('0x21')]=qs['limit'](_0x2c0af1['query'][_0x626f('0x21')]);_0x3ee5bc[_0x626f('0x1f')]=qs[_0x626f('0x1f')](_0x2c0af1[_0x626f('0x36')][_0x626f('0x1f')]);}return _0x556fba[_0x626f('0x61')](_0x3ee5bc);}})[_0x626f('0x28')](function(_0x23c300){if(_0x23c300){return _0x23c300?{'count':_0x3d262c,'rows':_0x23c300}:null;}})['then'](respondWithResult(_0x364a4f,null))[_0x626f('0x4d')](handleError(_0x364a4f,null));};exports[_0x626f('0x65')]=function(_0x4650fd,_0x590017,_0x8e7a72){var _0x4153c8=_0x4650fd[_0x626f('0x4f')][_0x626f('0x66')];return db[_0x626f('0x63')]['findAll']({'where':{'id':_0x4153c8},'attributes':['id'],'include':[{'model':db['User'],'as':_0x626f('0x67'),'attributes':['id',_0x626f('0x2f'),_0x626f('0x68'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x22b95b){if(_0x22b95b){var _0x56e98b=_[_0x626f('0x69')](_0x22b95b,function(_0x4bbeda){var _0x142a75=_0x4bbeda[_0x626f('0x2a')]({'plain':!![]});return _0x142a75['Agents'];});return db[_0x626f('0x44')][_0x626f('0x4c')]({'where':{'id':_0x4650fd[_0x626f('0x54')]['id']}})['then'](function(_0x50c23a){return db['sequelize'][_0x626f('0x6a')](function(_0x28819f){return _0x50c23a[_0x626f('0x65')](_0x4153c8,{'transaction':_0x28819f})['then'](function(){return BPromise[_0x626f('0x6b')](_0x56e98b,function(_0x309686){return db['UserFaxQueue'][_0x626f('0x6c')]({'where':{'UserId':_0x309686['id'],'FaxQueueId':_0x4650fd[_0x626f('0x54')]['id']},'transaction':_0x28819f});});})['then'](function(){_0x56e98b[_0x626f('0x6d')](function(_0x35bd23){socket['emit'](_0x626f('0x6e'),{'UserId':_0x35bd23['id'],'FaxQueueId':_0x50c23a['id']});});});});});}})[_0x626f('0x28')](respondWithStatusCode(_0x590017,null))[_0x626f('0x4d')](handleError(_0x590017,null));};exports[_0x626f('0x6f')]=function(_0x2834fd,_0x57095d,_0x51616c){return db[_0x626f('0x63')][_0x626f('0x46')]({'where':{'id':_0x2834fd['query'][_0x626f('0x66')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x626f('0x67'),'attributes':['id'],'raw':!![]}]})[_0x626f('0x28')](handleEntityNotFound(_0x57095d,null))[_0x626f('0x28')](function(_0x41cb28){var _0x1e61e3=_[_0x626f('0x32')](_0x41cb28,'id');var _0x436de0=[];var _0xf9d4db=[];var _0x25fa12=squel[_0x626f('0x70')]();_0x25fa12['field'](_0x626f('0x71'))['from'](_0x626f('0x72'),'tq')[_0x626f('0x73')](_0x626f('0x74'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x626f('0x3f')]('FaxQueueId\x20=\x20?',_0x2834fd[_0x626f('0x54')]['id']);for(var _0x1ff471=0x0;_0x1ff471<_0x41cb28[_0x626f('0x3b')];_0x1ff471+=0x1){let _0x32d006=_0x41cb28[_0x1ff471];for(var _0x2dd3ab=0x0;_0x2dd3ab<_0x32d006['Agents'][_0x626f('0x3b')];_0x2dd3ab+=0x1){let _0xa5594=_0x32d006['Agents'][_0x2dd3ab];var _0x173efe=_0x25fa12[_0x626f('0x75')]();_0x173efe[_0x626f('0x3f')](_0x626f('0x76'),_0xa5594['id']);_0xf9d4db[_0x626f('0x77')](db[_0x626f('0x78')][_0x626f('0x36')](_0x173efe[_0x626f('0x79')](),{'type':db[_0x626f('0x78')][_0x626f('0x7a')][_0x626f('0x7b')]})['then'](function(_0x3bbc73){if(_0x3bbc73['length']===0x1){return _0xa5594['id'];}else{var _0x1eec35=_[_0x626f('0x7c')](_[_0x626f('0x32')](_0x3bbc73,_0x626f('0x7d')),function(_0xd1817){return _['includes'](_0x1e61e3,_0xd1817);});if(_0x1eec35){return _0xa5594['id'];}}}));}}return BPromise[_0x626f('0x7e')](_0xf9d4db)[_0x626f('0x28')](function(_0x333942){_0x436de0=_(_0x436de0)[_0x626f('0x7f')](_0x333942)[_0x626f('0x80')]()[_0x626f('0x81')]();return db[_0x626f('0x44')][_0x626f('0x4c')]({'where':{'id':_0x2834fd['params']['id']}})[_0x626f('0x28')](function(_0x39bacb){return db[_0x626f('0x78')][_0x626f('0x6a')](function(_0x21fdce){return _0x39bacb[_0x626f('0x6f')](_0x2834fd[_0x626f('0x36')][_0x626f('0x66')],{'transaction':_0x21fdce})[_0x626f('0x28')](function(){if(!_[_0x626f('0x82')](_0x436de0)){return _0x39bacb[_0x626f('0x83')](_0x436de0,{'transaction':_0x21fdce});}})[_0x626f('0x28')](function(){_0x436de0[_0x626f('0x6d')](function(_0x272bac){socket[_0x626f('0x84')](_0x626f('0x85'),{'UserId':_0x272bac,'FaxQueueId':_0x39bacb['id']});});});});});});})[_0x626f('0x28')](respondWithStatusCode(_0x57095d,null))['catch'](handleError(_0x57095d,null));};exports[_0x626f('0x86')]=function(_0x5e3938,_0x38f5bb,_0x1930a9){return db[_0x626f('0x44')][_0x626f('0x4c')]({'where':{'id':_0x5e3938[_0x626f('0x54')]['id']}})[_0x626f('0x28')](handleEntityNotFound(_0x38f5bb,null))[_0x626f('0x28')](function(_0xdc3c84){if(_0xdc3c84){return _0xdc3c84[_0x626f('0x86')](_0x5e3938[_0x626f('0x4f')][_0x626f('0x66')],_[_0x626f('0x87')](_0x5e3938[_0x626f('0x4f')],[_0x626f('0x66'),'id'])||{})[_0x626f('0x88')](function(_0x760a09){for(var _0x5ed095=0x0;_0x5ed095<_0x5e3938[_0x626f('0x4f')][_0x626f('0x66')][_0x626f('0x3b')];_0x5ed095+=0x1){socket['emit']('userFaxQueue:save',{'UserId':Number(_0x5e3938['body'][_0x626f('0x66')][_0x5ed095]),'FaxQueueId':Number(_0x5e3938[_0x626f('0x54')]['id'])});}return _0x760a09;});}})['then'](respondWithResult(_0x38f5bb,null))[_0x626f('0x4d')](handleError(_0x38f5bb,null));};exports['removeAgents']=function(_0x4e2620,_0x568042,_0x127ed0){return db[_0x626f('0x44')][_0x626f('0x4c')]({'where':{'id':_0x4e2620[_0x626f('0x54')]['id']}})[_0x626f('0x28')](handleEntityNotFound(_0x568042,null))[_0x626f('0x28')](function(_0x32a4b9){if(_0x32a4b9){return _0x32a4b9[_0x626f('0x83')](_0x4e2620[_0x626f('0x36')][_0x626f('0x66')])[_0x626f('0x28')](function(){if(_['isArray'](_0x4e2620[_0x626f('0x36')][_0x626f('0x66')])){for(var _0x5508fe=0x0;_0x5508fe<_0x4e2620[_0x626f('0x36')][_0x626f('0x66')][_0x626f('0x3b')];_0x5508fe+=0x1){socket[_0x626f('0x84')](_0x626f('0x85'),{'UserId':Number(_0x4e2620['query'][_0x626f('0x66')][_0x5508fe]),'FaxQueueId':Number(_0x4e2620[_0x626f('0x54')]['id'])});}}else{socket['emit'](_0x626f('0x85'),{'UserId':Number(_0x4e2620[_0x626f('0x36')][_0x626f('0x66')]),'FaxQueueId':Number(_0x4e2620[_0x626f('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x568042,null))[_0x626f('0x4d')](handleError(_0x568042,null));};exports[_0x626f('0x89')]=function(_0x20997c,_0x12b1fb,_0xa324e5){var _0x108842={};var _0x14eec7={};var _0x2ebf15;var _0x30758f;return db[_0x626f('0x44')]['findOne']({'where':{'id':_0x20997c[_0x626f('0x54')]['id']}})[_0x626f('0x28')](handleEntityNotFound(_0x12b1fb,null))[_0x626f('0x28')](function(_0x5354f1){if(_0x5354f1){_0x2ebf15=_0x5354f1;_0x14eec7[_0x626f('0x38')]=_[_0x626f('0x49')](db[_0x626f('0x59')][_0x626f('0x33')]);_0x14eec7[_0x626f('0x36')]=_['keys'](_0x20997c['query']);_0x14eec7[_0x626f('0x40')]=_[_0x626f('0x37')](_0x14eec7[_0x626f('0x38')],_0x14eec7[_0x626f('0x36')]);_0x108842[_0x626f('0x3a')]=_[_0x626f('0x37')](_0x14eec7['model'],qs[_0x626f('0x39')](_0x20997c['query'][_0x626f('0x39')]));_0x108842[_0x626f('0x3a')]=_0x108842[_0x626f('0x3a')]['length']?_0x108842[_0x626f('0x3a')]:_0x14eec7['model'];_0x108842[_0x626f('0x3d')]=qs[_0x626f('0x3e')](_0x20997c[_0x626f('0x36')][_0x626f('0x3e')]);_0x108842[_0x626f('0x3f')]=qs[_0x626f('0x40')](_['pick'](_0x20997c[_0x626f('0x36')],_0x14eec7[_0x626f('0x40')]));if(_0x20997c[_0x626f('0x36')][_0x626f('0x42')]){_0x108842['where']=_['merge'](_0x108842[_0x626f('0x3f')],{'$or':_[_0x626f('0x32')](_0x108842[_0x626f('0x3a')],function(_0x45b812){var _0x38dded={};_0x38dded[_0x45b812]={'$like':'%'+_0x20997c[_0x626f('0x36')]['filter']+'%'};return _0x38dded;})});}_0x108842=_[_0x626f('0x4b')]({},_0x108842,_0x20997c[_0x626f('0x43')]);return _0x2ebf15[_0x626f('0x89')](_0x108842);}})['then'](function(_0x18c37f){if(_0x18c37f){_0x30758f=_0x18c37f['length'];if(!_0x20997c[_0x626f('0x36')]['hasOwnProperty'](_0x626f('0x64'))){_0x108842[_0x626f('0x21')]=qs[_0x626f('0x21')](_0x20997c[_0x626f('0x36')][_0x626f('0x21')]);_0x108842['offset']=qs[_0x626f('0x1f')](_0x20997c[_0x626f('0x36')][_0x626f('0x1f')]);}return _0x2ebf15[_0x626f('0x89')](_0x108842);}})[_0x626f('0x28')](function(_0x36cded){if(_0x36cded){return _0x36cded?{'count':_0x30758f,'rows':_0x36cded}:null;}})['then'](respondWithResult(_0x12b1fb,null))[_0x626f('0x4d')](handleError(_0x12b1fb,null));};
\ No newline at end of file
index b1de7ec..ac1cc55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc8=['remove','emit','hasOwnProperty','hook','../../mysqldb','FaxQueue','save','update'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4fc8,0x13c));var _0x84fc=function(_0x4d6cc6,_0x46afc0){_0x4d6cc6=_0x4d6cc6-0x0;var _0x158c29=_0x4fc8[_0x4d6cc6];return _0x158c29;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x84fc('0x0'))['db'][_0x84fc('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x84fc('0x2'),'afterUpdate':_0x84fc('0x3'),'afterDestroy':_0x84fc('0x4')};function emitEvent(_0x1aa990){return function(_0x481af4,_0x54be4b,_0x21bb84){FaxQueueEvents['emit'](_0x1aa990+':'+_0x481af4['id'],_0x481af4);FaxQueueEvents[_0x84fc('0x5')](_0x1aa990,_0x481af4);_0x21bb84(null);};}for(var e in events){if(events[_0x84fc('0x6')](e)){var event=events[e];FaxQueue[_0x84fc('0x7')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0x2484=['update','emit','hook','../../mysqldb','FaxQueue','setMaxListeners'];(function(_0x5d8c3a,_0x52c448){var _0x5fbe1b=function(_0x5a07b4){while(--_0x5a07b4){_0x5d8c3a['push'](_0x5d8c3a['shift']());}};_0x5fbe1b(++_0x52c448);}(_0x2484,0x69));var _0x4248=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x2484[_0x92c450];return _0x2a9599;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x4248('0x0'))['db'][_0x4248('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x4248('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4248('0x3'),'afterDestroy':'remove'};function emitEvent(_0x197885){return function(_0x21f302,_0x567961,_0x425fb7){FaxQueueEvents[_0x4248('0x4')](_0x197885+':'+_0x21f302['id'],_0x21f302);FaxQueueEvents[_0x4248('0x4')](_0x197885,_0x21f302);_0x425fb7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0x4248('0x5')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index 39010f7..f8b2aba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8fe=['request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','define','FaxQueue','lodash','util','../../config/logger','api','bluebird'];(function(_0xf6763d,_0x1ee231){var _0x212ae2=function(_0x211ed2){while(--_0x211ed2){_0xf6763d['push'](_0xf6763d['shift']());}};_0x212ae2(++_0x1ee231);}(_0xc8fe,0xbb));var _0xec8f=function(_0xcb5841,_0x411820){_0xcb5841=_0xcb5841-0x0;var _0x53d1ce=_0xc8fe[_0xcb5841];return _0x53d1ce;};'use strict';var _=require(_0xec8f('0x0'));var util=require(_0xec8f('0x1'));var logger=require(_0xec8f('0x2'))(_0xec8f('0x3'));var moment=require('moment');var BPromise=require(_0xec8f('0x4'));var rp=require(_0xec8f('0x5'));var fs=require('fs');var path=require(_0xec8f('0x6'));var rimraf=require(_0xec8f('0x7'));var config=require(_0xec8f('0x8'));var attributes=require(_0xec8f('0x9'));module['exports']=function(_0x1a952d,_0x411ccf){return _0x1a952d[_0xec8f('0xa')](_0xec8f('0xb'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75e2=['path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x578a0e,_0x1f6b78){var _0x31bdf5=function(_0xb4dae){while(--_0xb4dae){_0x578a0e['push'](_0x578a0e['shift']());}};_0x31bdf5(++_0x1f6b78);}(_0x75e2,0x1aa));var _0x275e=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x75e2[_0x31a371];return _0x2a5bd6;};'use strict';var _=require(_0x275e('0x0'));var util=require(_0x275e('0x1'));var logger=require(_0x275e('0x2'))(_0x275e('0x3'));var moment=require('moment');var BPromise=require(_0x275e('0x4'));var rp=require(_0x275e('0x5'));var fs=require('fs');var path=require(_0x275e('0x6'));var rimraf=require(_0x275e('0x7'));var config=require(_0x275e('0x8'));var attributes=require(_0x275e('0x9'));module[_0x275e('0xa')]=function(_0x331a52,_0x91b17d){return _0x331a52['define'](_0x275e('0xb'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d51a0ef..5c893fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe349=['socket.io-emitter','./faxQueue.socket','register','info','FaxQueue,\x20%s,\x20%s','debug','FaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FaxQueue','findAll','options','raw','attributes','limit','include','map','model','then','GetFaxQueue','ShowFaxQueue','find','where','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x52b23b,_0x378054){var _0x1c2126=function(_0xf21258){while(--_0xf21258){_0x52b23b['push'](_0x52b23b['shift']());}};_0x1c2126(++_0x378054);}(_0xe349,0x10c));var _0x9e34=function(_0x11f5ff,_0xa0ef18){_0x11f5ff=_0x11f5ff-0x0;var _0x46eefb=_0xe349[_0x11f5ff];return _0x46eefb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9e34('0x0'));var BPromise=require(_0x9e34('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9e34('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x9e34('0x3'));var logger=require(_0x9e34('0x4'))('rpc');var config=require(_0x9e34('0x5'));var jayson=require(_0x9e34('0x6'));var client=jayson[_0x9e34('0x7')][_0x9e34('0x8')]({'port':0x232a});config[_0x9e34('0x9')]=_[_0x9e34('0xa')](config[_0x9e34('0x9')],{'host':_0x9e34('0xb'),'port':0x18eb});var socket=require(_0x9e34('0xc'))(new Redis(config['redis']));require(_0x9e34('0xd'))[_0x9e34('0xe')](socket);function respondWithRpcPromise(_0x23888c,_0x58e40c,_0x36b401){return new BPromise(function(_0x4591c5,_0x5bb49a){return client['request'](_0x23888c,_0x36b401)['then'](function(_0x50d9a5){logger[_0x9e34('0xf')](_0x9e34('0x10'),_0x58e40c,'request\x20sent');logger[_0x9e34('0x11')](_0x9e34('0x12'),_0x58e40c,_0x9e34('0x13'),JSON[_0x9e34('0x14')](_0x50d9a5));if(_0x50d9a5[_0x9e34('0x15')]){if(_0x50d9a5[_0x9e34('0x15')][_0x9e34('0x16')]===0x1f4){logger[_0x9e34('0x15')](_0x9e34('0x10'),_0x58e40c,_0x50d9a5['error'][_0x9e34('0x17')]);return _0x5bb49a(_0x50d9a5['error'][_0x9e34('0x17')]);}logger['error'](_0x9e34('0x10'),_0x58e40c,_0x50d9a5[_0x9e34('0x15')][_0x9e34('0x17')]);return _0x4591c5(_0x50d9a5['error']['message']);}else{logger['info']('FaxQueue,\x20%s,\x20%s',_0x58e40c,'request\x20sent');_0x4591c5(_0x50d9a5[_0x9e34('0x18')][_0x9e34('0x17')]);}})[_0x9e34('0x19')](function(_0x1a9b70){logger[_0x9e34('0x15')]('FaxQueue,\x20%s,\x20%s',_0x58e40c,_0x1a9b70);_0x5bb49a(_0x1a9b70);});});}exports['GetFaxQueue']=function(_0x50eb72){var _0x1e53d6=this;return new Promise(function(_0x407837,_0x292ab3){return db[_0x9e34('0x1a')][_0x9e34('0x1b')]({'raw':_0x50eb72[_0x9e34('0x1c')]?_0x50eb72['options'][_0x9e34('0x1d')]===undefined?!![]:![]:!![],'where':_0x50eb72['options']?_0x50eb72[_0x9e34('0x1c')]['where']||null:null,'attributes':_0x50eb72[_0x9e34('0x1c')]?_0x50eb72[_0x9e34('0x1c')][_0x9e34('0x1e')]||null:null,'limit':_0x50eb72['options']?_0x50eb72['options'][_0x9e34('0x1f')]||null:null,'include':_0x50eb72[_0x9e34('0x1c')]?_0x50eb72[_0x9e34('0x1c')][_0x9e34('0x20')]?_[_0x9e34('0x21')](_0x50eb72[_0x9e34('0x1c')][_0x9e34('0x20')],function(_0x2f038c){return{'model':db[_0x2f038c['model']],'as':_0x2f038c['as'],'attributes':_0x2f038c[_0x9e34('0x1e')],'include':_0x2f038c[_0x9e34('0x20')]?_[_0x9e34('0x21')](_0x2f038c[_0x9e34('0x20')],function(_0x471c48){return{'model':db[_0x471c48[_0x9e34('0x22')]],'as':_0x471c48['as'],'attributes':_0x471c48[_0x9e34('0x1e')],'include':_0x471c48[_0x9e34('0x20')]?_[_0x9e34('0x21')](_0x471c48[_0x9e34('0x20')],function(_0x70d796){return{'model':db[_0x70d796[_0x9e34('0x22')]],'as':_0x70d796['as'],'attributes':_0x70d796[_0x9e34('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9e34('0x23')](function(_0x5d2b4e){logger[_0x9e34('0xf')](_0x9e34('0x24'),_0x50eb72);logger[_0x9e34('0x11')]('GetFaxQueue',_0x50eb72,JSON[_0x9e34('0x14')](_0x5d2b4e));_0x407837(_0x5d2b4e);})['catch'](function(_0x503b91){logger['error'](_0x9e34('0x24'),_0x503b91[_0x9e34('0x17')],_0x50eb72);_0x292ab3(_0x1e53d6[_0x9e34('0x15')](0x1f4,_0x503b91[_0x9e34('0x17')]));});});};exports[_0x9e34('0x25')]=function(_0x188abb){var _0x53fdf9=this;return new Promise(function(_0x1870c3,_0x5d7b1e){return db[_0x9e34('0x1a')][_0x9e34('0x26')]({'raw':_0x188abb['options']?_0x188abb[_0x9e34('0x1c')][_0x9e34('0x1d')]===undefined?!![]:![]:!![],'where':_0x188abb['options']?_0x188abb['options'][_0x9e34('0x27')]||null:null,'attributes':_0x188abb['options']?_0x188abb[_0x9e34('0x1c')]['attributes']||null:null,'include':_0x188abb[_0x9e34('0x1c')]?_0x188abb[_0x9e34('0x1c')][_0x9e34('0x20')]?_[_0x9e34('0x21')](_0x188abb[_0x9e34('0x1c')]['include'],function(_0x81245d){return{'model':db[_0x81245d['model']],'as':_0x81245d['as'],'attributes':_0x81245d[_0x9e34('0x1e')],'include':_0x81245d['include']?_[_0x9e34('0x21')](_0x81245d[_0x9e34('0x20')],function(_0x7ad4db){return{'model':db[_0x7ad4db[_0x9e34('0x22')]],'as':_0x7ad4db['as'],'attributes':_0x7ad4db[_0x9e34('0x1e')],'include':_0x7ad4db[_0x9e34('0x20')]?_['map'](_0x7ad4db['include'],function(_0x16f294){return{'model':db[_0x16f294[_0x9e34('0x22')]],'as':_0x16f294['as'],'attributes':_0x16f294[_0x9e34('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9e34('0x23')](function(_0x1c8517){logger[_0x9e34('0xf')](_0x9e34('0x25'),_0x188abb);logger[_0x9e34('0x11')](_0x9e34('0x25'),_0x188abb,JSON[_0x9e34('0x14')](_0x1c8517));_0x1870c3(_0x1c8517);})[_0x9e34('0x19')](function(_0x27ff66){logger['error']('ShowFaxQueue',_0x27ff66[_0x9e34('0x17')],_0x188abb);_0x5d7b1e(_0x53fdf9[_0x9e34('0x15')](0x1f4,_0x27ff66[_0x9e34('0x17')]));});});};
\ No newline at end of file
+var _0x0580=['socket.io-emitter','./faxQueue.socket','register','request','info','FaxQueue,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','include','model','map','then','debug','stringify','ShowFaxQueue','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost'];(function(_0x5c67c8,_0xb8d6a){var _0x1897b9=function(_0x3e1f1a){while(--_0x3e1f1a){_0x5c67c8['push'](_0x5c67c8['shift']());}};_0x1897b9(++_0xb8d6a);}(_0x0580,0x13a));var _0x0058=function(_0x50b945,_0xc24278){_0x50b945=_0x50b945-0x0;var _0x4d435c=_0x0580[_0x50b945];return _0x4d435c;};'use strict';var _=require(_0x0058('0x0'));var util=require(_0x0058('0x1'));var moment=require(_0x0058('0x2'));var BPromise=require(_0x0058('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0058('0x4'));var db=require(_0x0058('0x5'))['db'];var utils=require(_0x0058('0x6'));var logger=require(_0x0058('0x7'))(_0x0058('0x8'));var config=require(_0x0058('0x9'));var jayson=require(_0x0058('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x0058('0xb')]=_[_0x0058('0xc')](config['redis'],{'host':_0x0058('0xd'),'port':0x18eb});var socket=require(_0x0058('0xe'))(new Redis(config[_0x0058('0xb')]));require(_0x0058('0xf'))[_0x0058('0x10')](socket);function respondWithRpcPromise(_0x280512,_0x29d106,_0x35b984){return new BPromise(function(_0x46e194,_0x20cc22){return client[_0x0058('0x11')](_0x280512,_0x35b984)['then'](function(_0x2f91b2){logger[_0x0058('0x12')](_0x0058('0x13'),_0x29d106,_0x0058('0x14'));logger['debug']('FaxQueue,\x20%s,\x20%s,\x20%s',_0x29d106,_0x0058('0x14'),JSON['stringify'](_0x2f91b2));if(_0x2f91b2[_0x0058('0x15')]){if(_0x2f91b2[_0x0058('0x15')][_0x0058('0x16')]===0x1f4){logger[_0x0058('0x15')](_0x0058('0x13'),_0x29d106,_0x2f91b2[_0x0058('0x15')][_0x0058('0x17')]);return _0x20cc22(_0x2f91b2[_0x0058('0x15')][_0x0058('0x17')]);}logger[_0x0058('0x15')](_0x0058('0x13'),_0x29d106,_0x2f91b2['error'][_0x0058('0x17')]);return _0x46e194(_0x2f91b2['error'][_0x0058('0x17')]);}else{logger[_0x0058('0x12')](_0x0058('0x13'),_0x29d106,_0x0058('0x14'));_0x46e194(_0x2f91b2['result']['message']);}})[_0x0058('0x18')](function(_0x5187cb){logger[_0x0058('0x15')]('FaxQueue,\x20%s,\x20%s',_0x29d106,_0x5187cb);_0x20cc22(_0x5187cb);});});}exports[_0x0058('0x19')]=function(_0xdce9c6){var _0x3a8942=this;return new Promise(function(_0x323d15,_0x163b03){return db[_0x0058('0x1a')][_0x0058('0x1b')]({'raw':_0xdce9c6[_0x0058('0x1c')]?_0xdce9c6['options'][_0x0058('0x1d')]===undefined?!![]:![]:!![],'where':_0xdce9c6[_0x0058('0x1c')]?_0xdce9c6[_0x0058('0x1c')][_0x0058('0x1e')]||null:null,'attributes':_0xdce9c6[_0x0058('0x1c')]?_0xdce9c6[_0x0058('0x1c')][_0x0058('0x1f')]||null:null,'limit':_0xdce9c6['options']?_0xdce9c6[_0x0058('0x1c')][_0x0058('0x20')]||null:null,'include':_0xdce9c6[_0x0058('0x1c')]?_0xdce9c6['options'][_0x0058('0x21')]?_['map'](_0xdce9c6['options'][_0x0058('0x21')],function(_0x22c7b9){return{'model':db[_0x22c7b9[_0x0058('0x22')]],'as':_0x22c7b9['as'],'attributes':_0x22c7b9[_0x0058('0x1f')],'include':_0x22c7b9[_0x0058('0x21')]?_[_0x0058('0x23')](_0x22c7b9['include'],function(_0x3e2d37){return{'model':db[_0x3e2d37[_0x0058('0x22')]],'as':_0x3e2d37['as'],'attributes':_0x3e2d37[_0x0058('0x1f')],'include':_0x3e2d37[_0x0058('0x21')]?_[_0x0058('0x23')](_0x3e2d37[_0x0058('0x21')],function(_0x4b3666){return{'model':db[_0x4b3666[_0x0058('0x22')]],'as':_0x4b3666['as'],'attributes':_0x4b3666[_0x0058('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0058('0x24')](function(_0x265820){logger[_0x0058('0x12')]('GetFaxQueue',_0xdce9c6);logger[_0x0058('0x25')](_0x0058('0x19'),_0xdce9c6,JSON[_0x0058('0x26')](_0x265820));_0x323d15(_0x265820);})[_0x0058('0x18')](function(_0x2644f5){logger[_0x0058('0x15')](_0x0058('0x19'),_0x2644f5['message'],_0xdce9c6);_0x163b03(_0x3a8942[_0x0058('0x15')](0x1f4,_0x2644f5['message']));});});};exports[_0x0058('0x27')]=function(_0x20af8d){var _0x1a10cd=this;return new Promise(function(_0x5b001d,_0x34a47b){return db[_0x0058('0x1a')][_0x0058('0x28')]({'raw':_0x20af8d['options']?_0x20af8d[_0x0058('0x1c')][_0x0058('0x1d')]===undefined?!![]:![]:!![],'where':_0x20af8d[_0x0058('0x1c')]?_0x20af8d[_0x0058('0x1c')][_0x0058('0x1e')]||null:null,'attributes':_0x20af8d[_0x0058('0x1c')]?_0x20af8d[_0x0058('0x1c')][_0x0058('0x1f')]||null:null,'include':_0x20af8d[_0x0058('0x1c')]?_0x20af8d[_0x0058('0x1c')][_0x0058('0x21')]?_[_0x0058('0x23')](_0x20af8d[_0x0058('0x1c')]['include'],function(_0x54138e){return{'model':db[_0x54138e[_0x0058('0x22')]],'as':_0x54138e['as'],'attributes':_0x54138e[_0x0058('0x1f')],'include':_0x54138e['include']?_[_0x0058('0x23')](_0x54138e[_0x0058('0x21')],function(_0x25ffbb){return{'model':db[_0x25ffbb[_0x0058('0x22')]],'as':_0x25ffbb['as'],'attributes':_0x25ffbb[_0x0058('0x1f')],'include':_0x25ffbb[_0x0058('0x21')]?_['map'](_0x25ffbb['include'],function(_0x1e0b45){return{'model':db[_0x1e0b45[_0x0058('0x22')]],'as':_0x1e0b45['as'],'attributes':_0x1e0b45[_0x0058('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0058('0x24')](function(_0x598453){logger['info'](_0x0058('0x27'),_0x20af8d);logger[_0x0058('0x25')](_0x0058('0x27'),_0x20af8d,JSON[_0x0058('0x26')](_0x598453));_0x5b001d(_0x598453);})[_0x0058('0x18')](function(_0x3fdfff){logger[_0x0058('0x15')](_0x0058('0x27'),_0x3fdfff['message'],_0x20af8d);_0x34a47b(_0x1a10cd[_0x0058('0x15')](0x1f4,_0x3fdfff['message']));});});};
\ No newline at end of file
index 1dad5b3..7b8eaec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7a=['removeListener','register','length','faxQueue:','./faxQueue.events','update','emit'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcc7a,0x1e0));var _0xacc7=function(_0x2e78e9,_0x42957c){_0x2e78e9=_0x2e78e9-0x0;var _0x35aad4=_0xcc7a[_0x2e78e9];return _0x35aad4;};'use strict';var FaxQueueEvents=require(_0xacc7('0x0'));var events=['save','remove',_0xacc7('0x1')];function createListener(_0x11ad3b,_0x881fbf){return function(_0x7d0127){_0x881fbf[_0xacc7('0x2')](_0x11ad3b,_0x7d0127);};}function removeListener(_0x557706,_0x409404){return function(){FaxQueueEvents[_0xacc7('0x3')](_0x557706,_0x409404);};}exports[_0xacc7('0x4')]=function(_0x4fc164){for(var _0x2041e0=0x0,_0x3a37e4=events[_0xacc7('0x5')];_0x2041e0<_0x3a37e4;_0x2041e0++){var _0x4cf075=events[_0x2041e0];var _0x811c82=createListener(_0xacc7('0x6')+_0x4cf075,_0x4fc164);FaxQueueEvents['on'](_0x4cf075,_0x811c82);}};
\ No newline at end of file
+var _0x1597=['length','faxQueue:','save','remove','update','emit','removeListener','register'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x1597,0x192));var _0x7159=function(_0x1765c4,_0x151565){_0x1765c4=_0x1765c4-0x0;var _0x56645f=_0x1597[_0x1765c4];return _0x56645f;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x7159('0x0'),_0x7159('0x1'),_0x7159('0x2')];function createListener(_0x16e41d,_0x3d5d0b){return function(_0xdf70a5){_0x3d5d0b[_0x7159('0x3')](_0x16e41d,_0xdf70a5);};}function removeListener(_0x2f12e3,_0x55a54c){return function(){FaxQueueEvents[_0x7159('0x4')](_0x2f12e3,_0x55a54c);};}exports[_0x7159('0x5')]=function(_0x4c9825){for(var _0x40e78e=0x0,_0x56b25f=events[_0x7159('0x6')];_0x40e78e<_0x56b25f;_0x40e78e++){var _0x3bafb9=events[_0x40e78e];var _0x1d9d9c=createListener(_0x7159('0x7')+_0x3bafb9,_0x4c9825);FaxQueueEvents['on'](_0x3bafb9,_0x1d9d9c);}};
\ No newline at end of file
index a361587..037b58c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','create','post','addTeams','addAgents','put','/:id','update','delete','removeTeams','removeAgents','exports','multer','util','connect-timeout','express'];(function(_0x839ecb,_0x1044d2){var _0x3d7e87=function(_0x28e00a){while(--_0x28e00a){_0x839ecb['push'](_0x839ecb['shift']());}};_0x3d7e87(++_0x1044d2);}(_0x958a,0x128));var _0xa958=function(_0x47a672,_0xb15839){_0x47a672=_0x47a672-0x0;var _0x10d67e=_0x958a[_0x47a672];return _0x10d67e;};'use strict';var multer=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var path=require('path');var timeout=require(_0xa958('0x2'));var express=require(_0xa958('0x3'));var router=express[_0xa958('0x4')]();var fs_extra=require(_0xa958('0x5'));var auth=require(_0xa958('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa958('0x7'));var controller=require('./faxQueue.controller');router[_0xa958('0x8')]('/',auth[_0xa958('0x9')](),controller[_0xa958('0xa')]);router[_0xa958('0x8')](_0xa958('0xb'),auth[_0xa958('0x9')](),controller[_0xa958('0xc')]);router['get']('/:id',auth[_0xa958('0x9')](),controller[_0xa958('0xd')]);router[_0xa958('0x8')](_0xa958('0xe'),auth[_0xa958('0x9')](),controller[_0xa958('0xf')]);router[_0xa958('0x8')](_0xa958('0x10'),auth[_0xa958('0x9')](),controller[_0xa958('0x11')]);router[_0xa958('0x8')](_0xa958('0x12'),auth[_0xa958('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0xa958('0x13')]);router[_0xa958('0x14')](_0xa958('0x10'),auth['isAuthenticated'](),controller[_0xa958('0x15')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0xa958('0x16')]);router[_0xa958('0x17')](_0xa958('0x18'),auth[_0xa958('0x9')](),controller[_0xa958('0x19')]);router[_0xa958('0x1a')](_0xa958('0x18'),auth[_0xa958('0x9')](),controller['destroy']);router[_0xa958('0x1a')]('/:id/teams',auth[_0xa958('0x9')](),controller[_0xa958('0x1b')]);router['delete'](_0xa958('0x12'),auth[_0xa958('0x9')](),controller[_0xa958('0x1c')]);module[_0xa958('0x1d')]=router;
\ No newline at end of file
+var _0x50a5=['exports','multer','util','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','create','addAgents','update','delete','destroy','removeAgents'];(function(_0xd3d279,_0x4bfcaf){var _0x1f1f95=function(_0x5d0425){while(--_0x5d0425){_0xd3d279['push'](_0xd3d279['shift']());}};_0x1f1f95(++_0x4bfcaf);}(_0x50a5,0xd1));var _0x550a=function(_0x48fa29,_0x55de28){_0x48fa29=_0x48fa29-0x0;var _0xcbcc80=_0x50a5[_0x48fa29];return _0xcbcc80;};'use strict';var multer=require(_0x550a('0x0'));var util=require(_0x550a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x550a('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x550a('0x3'));var config=require(_0x550a('0x4'));var controller=require(_0x550a('0x5'));router[_0x550a('0x6')]('/',auth[_0x550a('0x7')](),controller[_0x550a('0x8')]);router[_0x550a('0x6')](_0x550a('0x9'),auth[_0x550a('0x7')](),controller[_0x550a('0xa')]);router[_0x550a('0x6')](_0x550a('0xb'),auth[_0x550a('0x7')](),controller['show']);router[_0x550a('0x6')](_0x550a('0xc'),auth[_0x550a('0x7')](),controller[_0x550a('0xd')]);router[_0x550a('0x6')](_0x550a('0xe'),auth['isAuthenticated'](),controller[_0x550a('0xf')]);router[_0x550a('0x6')](_0x550a('0x10'),auth[_0x550a('0x7')](),controller[_0x550a('0x11')]);router[_0x550a('0x12')]('/',auth[_0x550a('0x7')](),controller[_0x550a('0x13')]);router['post'](_0x550a('0xe'),auth['isAuthenticated'](),controller['addTeams']);router[_0x550a('0x12')](_0x550a('0x10'),auth['isAuthenticated'](),controller[_0x550a('0x14')]);router['put'](_0x550a('0xb'),auth['isAuthenticated'](),controller[_0x550a('0x15')]);router[_0x550a('0x16')](_0x550a('0xb'),auth[_0x550a('0x7')](),controller[_0x550a('0x17')]);router[_0x550a('0x16')]('/:id/teams',auth[_0x550a('0x7')](),controller['removeTeams']);router[_0x550a('0x16')](_0x550a('0x10'),auth[_0x550a('0x7')](),controller[_0x550a('0x18')]);module[_0x550a('0x19')]=router;
\ No newline at end of file
index f91cc5c..4578321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6618=['DATE','moment','sequelize','exports','STRING'];(function(_0x16d2bb,_0x5e19c4){var _0x464b6c=function(_0x4fbec6){while(--_0x4fbec6){_0x16d2bb['push'](_0x16d2bb['shift']());}};_0x464b6c(++_0x5e19c4);}(_0x6618,0x141));var _0x8661=function(_0xd6dc3,_0x329f1d){_0xd6dc3=_0xd6dc3-0x0;var _0x2f65ac=_0x6618[_0xd6dc3];return _0x2f65ac;};'use strict';var moment=require(_0x8661('0x0'));var Sequelize=require(_0x8661('0x1'));module[_0x8661('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x8661('0x3')]},'joinAt':{'type':Sequelize[_0x8661('0x4')]},'leaveAt':{'type':Sequelize[_0x8661('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x8661('0x4')]},'reason':{'type':Sequelize[_0x8661('0x3')]}};
\ No newline at end of file
+var _0x2610=['STRING','moment','sequelize','exports','DATE'];(function(_0x11dbbe,_0x7b04d3){var _0x475061=function(_0x3677d3){while(--_0x3677d3){_0x11dbbe['push'](_0x11dbbe['shift']());}};_0x475061(++_0x7b04d3);}(_0x2610,0xc4));var _0x0261=function(_0x1be3f,_0x45f308){_0x1be3f=_0x1be3f-0x0;var _0x380cdb=_0x2610[_0x1be3f];return _0x380cdb;};'use strict';var moment=require(_0x0261('0x0'));var Sequelize=require(_0x0261('0x1'));module[_0x0261('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x0261('0x3')]},'leaveAt':{'type':Sequelize[_0x0261('0x3')]},'acceptAt':{'type':Sequelize[_0x0261('0x3')]},'exitAt':{'type':Sequelize[_0x0261('0x3')]},'reason':{'type':Sequelize[_0x0261('0x4')]}};
\ No newline at end of file
index 7162657..1b69720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0487=['error','stack','name','send','FaxQueueReport','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','map','type','VIRTUAL','merge','includeAll','findAll','rows','show','params','include','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy'];(function(_0x2d4421,_0x15a84f){var _0x2d3b01=function(_0xb9e94c){while(--_0xb9e94c){_0x2d4421['push'](_0x2d4421['shift']());}};_0x2d3b01(++_0x15a84f);}(_0x0487,0x14f));var _0x7048=function(_0x1488cd,_0x25a893){_0x1488cd=_0x1488cd-0x0;var _0x63fa13=_0x0487[_0x1488cd];return _0x63fa13;};'use strict';var emlformat=require(_0x7048('0x0'));var rimraf=require(_0x7048('0x1'));var zipdir=require(_0x7048('0x2'));var jsonpatch=require(_0x7048('0x3'));var rp=require(_0x7048('0x4'));var moment=require(_0x7048('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7048('0x6'));var util=require('util');var path=require(_0x7048('0x7'));var sox=require(_0x7048('0x8'));var csv=require(_0x7048('0x9'));var ejs=require(_0x7048('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7048('0xb'));var squel=require(_0x7048('0xc'));var crypto=require(_0x7048('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7048('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7048('0xf'));var Papa=require(_0x7048('0x10'));var Redis=require(_0x7048('0x11'));var authService=require(_0x7048('0x12'));var qs=require(_0x7048('0x13'));var as=require(_0x7048('0x14'));var hardwareService=require(_0x7048('0x15'));var logger=require('../../config/logger')(_0x7048('0x16'));var utils=require(_0x7048('0x17'));var config=require(_0x7048('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x7048('0x19'))['db'];function respondWithStatusCode(_0x1ba215,_0x59542b){_0x59542b=_0x59542b||0xcc;return function(_0x116386){if(_0x116386){return _0x1ba215[_0x7048('0x1a')](_0x59542b);}return _0x1ba215[_0x7048('0x1b')](_0x59542b)[_0x7048('0x1c')]();};}function respondWithResult(_0xc9c508,_0x546c51){_0x546c51=_0x546c51||0xc8;return function(_0x1072d0){if(_0x1072d0){return _0xc9c508['status'](_0x546c51)[_0x7048('0x1d')](_0x1072d0);}};}function respondWithFilteredResult(_0x361cf8,_0x6a2a55){return function(_0x2b9800){if(_0x2b9800){var _0x4ec491=typeof _0x6a2a55[_0x7048('0x1e')]==='undefined'&&typeof _0x6a2a55[_0x7048('0x1f')]===_0x7048('0x20');var _0x4cff1c=_0x2b9800['count'];var _0x255d5d=_0x4ec491?0x0:_0x6a2a55[_0x7048('0x1e')];var _0x1db323=_0x4ec491?_0x2b9800[_0x7048('0x21')]:_0x6a2a55['offset']+_0x6a2a55[_0x7048('0x1f')];var _0x5b040b;if(_0x1db323>=_0x4cff1c){_0x1db323=_0x4cff1c;_0x5b040b=0xc8;}else{_0x5b040b=0xce;}_0x361cf8['status'](_0x5b040b);return _0x361cf8['set'](_0x7048('0x22'),_0x255d5d+'-'+_0x1db323+'/'+_0x4cff1c)[_0x7048('0x1d')](_0x2b9800);}return null;};}function patchUpdates(_0xa83230){return function(_0x4b9def){try{jsonpatch[_0x7048('0x23')](_0x4b9def,_0xa83230,!![]);}catch(_0x5de659){return BPromise[_0x7048('0x24')](_0x5de659);}return _0x4b9def['save']();};}function saveUpdates(_0x3d6ee7,_0x43a621){return function(_0x31c5dc){if(_0x31c5dc){return _0x31c5dc[_0x7048('0x25')](_0x3d6ee7)[_0x7048('0x26')](function(_0x171304){return _0x171304;});}return null;};}function removeEntity(_0x5a683d,_0x4c8709){return function(_0x519649){if(_0x519649){return _0x519649[_0x7048('0x27')]()['then'](function(){_0x5a683d[_0x7048('0x1b')](0xcc)[_0x7048('0x1c')]();});}};}function handleEntityNotFound(_0x3c7c96,_0x4fc143){return function(_0x1e0c61){if(!_0x1e0c61){_0x3c7c96['sendStatus'](0x194);}return _0x1e0c61;};}function handleError(_0x33a9f1,_0x4a0f3b){_0x4a0f3b=_0x4a0f3b||0x1f4;return function(_0xe3b552){logger[_0x7048('0x28')](_0xe3b552[_0x7048('0x29')]);if(_0xe3b552['name']){delete _0xe3b552[_0x7048('0x2a')];}_0x33a9f1['status'](_0x4a0f3b)[_0x7048('0x2b')](_0xe3b552);};}exports['index']=function(_0x228981,_0x5ee10a){var _0x30d90b={},_0x3ccc34={},_0x52e437={'count':0x0,'rows':[]};var _0x5f2459=_['map'](db[_0x7048('0x2c')][_0x7048('0x2d')],function(_0x575bd3){return{'name':_0x575bd3[_0x7048('0x2e')],'type':_0x575bd3['type']['key']};});_0x3ccc34[_0x7048('0x2f')]=_['map'](_0x5f2459,_0x7048('0x2a'));_0x3ccc34[_0x7048('0x30')]=_[_0x7048('0x31')](_0x228981[_0x7048('0x30')]);_0x3ccc34[_0x7048('0x32')]=_[_0x7048('0x33')](_0x3ccc34[_0x7048('0x2f')],_0x3ccc34[_0x7048('0x30')]);_0x30d90b[_0x7048('0x34')]=_['intersection'](_0x3ccc34['model'],qs[_0x7048('0x35')](_0x228981[_0x7048('0x30')][_0x7048('0x35')]));_0x30d90b['attributes']=_0x30d90b[_0x7048('0x34')][_0x7048('0x36')]?_0x30d90b[_0x7048('0x34')]:_0x3ccc34[_0x7048('0x2f')];if(!_0x228981[_0x7048('0x30')][_0x7048('0x37')](_0x7048('0x38'))){_0x30d90b[_0x7048('0x1f')]=qs[_0x7048('0x1f')](_0x228981[_0x7048('0x30')][_0x7048('0x1f')]);_0x30d90b['offset']=qs['offset'](_0x228981[_0x7048('0x30')]['offset']);}_0x30d90b[_0x7048('0x39')]=qs['sort'](_0x228981[_0x7048('0x30')][_0x7048('0x3a')]);_0x30d90b[_0x7048('0x3b')]=qs[_0x7048('0x32')](_['pick'](_0x228981[_0x7048('0x30')],_0x3ccc34[_0x7048('0x32')]),_0x5f2459);if(_0x228981[_0x7048('0x30')][_0x7048('0x3c')]){_0x30d90b['where']=_['merge'](_0x30d90b[_0x7048('0x3b')],{'$or':_[_0x7048('0x3d')](_0x5f2459,function(_0x3bd55e){if(_0x3bd55e[_0x7048('0x3e')]!==_0x7048('0x3f')){var _0xae5fce={};_0xae5fce[_0x3bd55e[_0x7048('0x2a')]]={'$like':'%'+_0x228981[_0x7048('0x30')]['filter']+'%'};return _0xae5fce;}})});}_0x30d90b=_[_0x7048('0x40')]({},_0x30d90b,_0x228981['options']);var _0x3f0561={'where':_0x30d90b[_0x7048('0x3b')]};return db['FaxQueueReport'][_0x7048('0x21')](_0x3f0561)[_0x7048('0x26')](function(_0x295bdf){_0x52e437['count']=_0x295bdf;if(_0x228981[_0x7048('0x30')][_0x7048('0x41')]){_0x30d90b['include']=[{'all':!![]}];}return db[_0x7048('0x2c')][_0x7048('0x42')](_0x30d90b);})[_0x7048('0x26')](function(_0x418249){_0x52e437[_0x7048('0x43')]=_0x418249;return _0x52e437;})[_0x7048('0x26')](respondWithFilteredResult(_0x5ee10a,_0x30d90b))['catch'](handleError(_0x5ee10a,null));};exports[_0x7048('0x44')]=function(_0x35a872,_0x52afa9){var _0x5b23d0={'raw':!![],'where':{'id':_0x35a872[_0x7048('0x45')]['id']}},_0x360bd9={};_0x360bd9[_0x7048('0x2f')]=_[_0x7048('0x31')](db[_0x7048('0x2c')][_0x7048('0x2d')]);_0x360bd9[_0x7048('0x30')]=_[_0x7048('0x31')](_0x35a872['query']);_0x360bd9[_0x7048('0x32')]=_[_0x7048('0x33')](_0x360bd9[_0x7048('0x2f')],_0x360bd9[_0x7048('0x30')]);_0x5b23d0[_0x7048('0x34')]=_['intersection'](_0x360bd9[_0x7048('0x2f')],qs[_0x7048('0x35')](_0x35a872[_0x7048('0x30')][_0x7048('0x35')]));_0x5b23d0['attributes']=_0x5b23d0[_0x7048('0x34')][_0x7048('0x36')]?_0x5b23d0[_0x7048('0x34')]:_0x360bd9['model'];if(_0x35a872[_0x7048('0x30')]['includeAll']){_0x5b23d0[_0x7048('0x46')]=[{'all':!![]}];}_0x5b23d0=_['merge']({},_0x5b23d0,_0x35a872['options']);return db[_0x7048('0x2c')][_0x7048('0x47')](_0x5b23d0)[_0x7048('0x26')](handleEntityNotFound(_0x52afa9,null))[_0x7048('0x26')](respondWithResult(_0x52afa9,null))[_0x7048('0x48')](handleError(_0x52afa9,null));};exports['create']=function(_0x2ddf45,_0x2c579a){return db[_0x7048('0x2c')]['create'](_0x2ddf45[_0x7048('0x49')],{})['then'](respondWithResult(_0x2c579a,0xc9))[_0x7048('0x48')](handleError(_0x2c579a,null));};exports['update']=function(_0x3b1e0d,_0x213d74){if(_0x3b1e0d[_0x7048('0x49')]['id']){delete _0x3b1e0d['body']['id'];}return db[_0x7048('0x2c')][_0x7048('0x47')]({'where':{'id':_0x3b1e0d['params']['id']}})['then'](handleEntityNotFound(_0x213d74,null))['then'](saveUpdates(_0x3b1e0d['body'],null))[_0x7048('0x26')](respondWithResult(_0x213d74,null))[_0x7048('0x48')](handleError(_0x213d74,null));};exports[_0x7048('0x27')]=function(_0x1832f1,_0x5799dc){return db[_0x7048('0x2c')][_0x7048('0x47')]({'where':{'id':_0x1832f1[_0x7048('0x45')]['id']}})[_0x7048('0x26')](handleEntityNotFound(_0x5799dc,null))[_0x7048('0x26')](removeEntity(_0x5799dc,null))['catch'](handleError(_0x5799dc,null));};exports[_0x7048('0x4a')]=function(_0x59f158,_0x38b0d9){return db[_0x7048('0x2c')]['describe']()['then'](respondWithResult(_0x38b0d9,null))[_0x7048('0x48')](handleError(_0x38b0d9,null));};
\ No newline at end of file
+var _0x19ea=['order','sort','pick','filter','where','type','VIRTUAL','options','include','findAll','catch','show','fields','includeAll','merge','find','create','body','params','describe','eml-format','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x19ea,0xfe));var _0xa19e=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x19ea[_0x278e3c];return _0x3e2d9b;};'use strict';var emlformat=require(_0xa19e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa19e('0x1'));var rp=require('request-promise');var moment=require(_0xa19e('0x2'));var BPromise=require(_0xa19e('0x3'));var Mustache=require(_0xa19e('0x4'));var util=require('util');var path=require('path');var sox=require(_0xa19e('0x5'));var csv=require(_0xa19e('0x6'));var ejs=require(_0xa19e('0x7'));var fs=require('fs');var fs_extra=require(_0xa19e('0x8'));var _=require(_0xa19e('0x9'));var squel=require(_0xa19e('0xa'));var crypto=require(_0xa19e('0xb'));var jsforce=require(_0xa19e('0xc'));var deskjs=require(_0xa19e('0xd'));var toCsv=require(_0xa19e('0x6'));var querystring=require(_0xa19e('0xe'));var Papa=require('papaparse');var Redis=require(_0xa19e('0xf'));var authService=require(_0xa19e('0x10'));var qs=require(_0xa19e('0x11'));var as=require(_0xa19e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa19e('0x13'))(_0xa19e('0x14'));var utils=require(_0xa19e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa19e('0x16'));var db=require(_0xa19e('0x17'))['db'];function respondWithStatusCode(_0xc781a2,_0x1bd1f5){_0x1bd1f5=_0x1bd1f5||0xcc;return function(_0x35ca5b){if(_0x35ca5b){return _0xc781a2['sendStatus'](_0x1bd1f5);}return _0xc781a2[_0xa19e('0x18')](_0x1bd1f5)[_0xa19e('0x19')]();};}function respondWithResult(_0xa7e0c4,_0x28dedd){_0x28dedd=_0x28dedd||0xc8;return function(_0x564d2a){if(_0x564d2a){return _0xa7e0c4[_0xa19e('0x18')](_0x28dedd)[_0xa19e('0x1a')](_0x564d2a);}};}function respondWithFilteredResult(_0x245bcb,_0x3be281){return function(_0x1fdea2){if(_0x1fdea2){var _0x2598f5=typeof _0x3be281['offset']===_0xa19e('0x1b')&&typeof _0x3be281[_0xa19e('0x1c')]===_0xa19e('0x1b');var _0x256819=_0x1fdea2[_0xa19e('0x1d')];var _0x38e398=_0x2598f5?0x0:_0x3be281[_0xa19e('0x1e')];var _0x530a75=_0x2598f5?_0x1fdea2[_0xa19e('0x1d')]:_0x3be281['offset']+_0x3be281[_0xa19e('0x1c')];var _0x5d05fd;if(_0x530a75>=_0x256819){_0x530a75=_0x256819;_0x5d05fd=0xc8;}else{_0x5d05fd=0xce;}_0x245bcb['status'](_0x5d05fd);return _0x245bcb[_0xa19e('0x1f')](_0xa19e('0x20'),_0x38e398+'-'+_0x530a75+'/'+_0x256819)['json'](_0x1fdea2);}return null;};}function patchUpdates(_0x1cb9f9){return function(_0x3f2060){try{jsonpatch[_0xa19e('0x21')](_0x3f2060,_0x1cb9f9,!![]);}catch(_0x93eb86){return BPromise['reject'](_0x93eb86);}return _0x3f2060[_0xa19e('0x22')]();};}function saveUpdates(_0x33b588,_0x105874){return function(_0x301f6d){if(_0x301f6d){return _0x301f6d[_0xa19e('0x23')](_0x33b588)[_0xa19e('0x24')](function(_0x2a416e){return _0x2a416e;});}return null;};}function removeEntity(_0x20a649,_0xc16a44){return function(_0x536386){if(_0x536386){return _0x536386[_0xa19e('0x25')]()[_0xa19e('0x24')](function(){_0x20a649['status'](0xcc)[_0xa19e('0x19')]();});}};}function handleEntityNotFound(_0x1d3ce6,_0x4e06b8){return function(_0x20b05c){if(!_0x20b05c){_0x1d3ce6[_0xa19e('0x26')](0x194);}return _0x20b05c;};}function handleError(_0x5d5559,_0x40dc1c){_0x40dc1c=_0x40dc1c||0x1f4;return function(_0x10682d){logger[_0xa19e('0x27')](_0x10682d[_0xa19e('0x28')]);if(_0x10682d[_0xa19e('0x29')]){delete _0x10682d[_0xa19e('0x29')];}_0x5d5559[_0xa19e('0x18')](_0x40dc1c)[_0xa19e('0x2a')](_0x10682d);};}exports[_0xa19e('0x2b')]=function(_0x24dd51,_0x30e490){var _0x3d1cae={},_0x1ce643={},_0x475a26={'count':0x0,'rows':[]};var _0xdf0b20=_[_0xa19e('0x2c')](db[_0xa19e('0x2d')][_0xa19e('0x2e')],function(_0x3dcd74){return{'name':_0x3dcd74[_0xa19e('0x2f')],'type':_0x3dcd74['type'][_0xa19e('0x30')]};});_0x1ce643[_0xa19e('0x31')]=_[_0xa19e('0x2c')](_0xdf0b20,_0xa19e('0x29'));_0x1ce643[_0xa19e('0x32')]=_[_0xa19e('0x33')](_0x24dd51['query']);_0x1ce643[_0xa19e('0x34')]=_[_0xa19e('0x35')](_0x1ce643['model'],_0x1ce643[_0xa19e('0x32')]);_0x3d1cae['attributes']=_['intersection'](_0x1ce643[_0xa19e('0x31')],qs['fields'](_0x24dd51['query']['fields']));_0x3d1cae[_0xa19e('0x36')]=_0x3d1cae[_0xa19e('0x36')][_0xa19e('0x37')]?_0x3d1cae['attributes']:_0x1ce643[_0xa19e('0x31')];if(!_0x24dd51[_0xa19e('0x32')][_0xa19e('0x38')](_0xa19e('0x39'))){_0x3d1cae[_0xa19e('0x1c')]=qs[_0xa19e('0x1c')](_0x24dd51['query'][_0xa19e('0x1c')]);_0x3d1cae[_0xa19e('0x1e')]=qs['offset'](_0x24dd51[_0xa19e('0x32')][_0xa19e('0x1e')]);}_0x3d1cae[_0xa19e('0x3a')]=qs['sort'](_0x24dd51['query'][_0xa19e('0x3b')]);_0x3d1cae['where']=qs[_0xa19e('0x34')](_[_0xa19e('0x3c')](_0x24dd51[_0xa19e('0x32')],_0x1ce643[_0xa19e('0x34')]),_0xdf0b20);if(_0x24dd51['query'][_0xa19e('0x3d')]){_0x3d1cae[_0xa19e('0x3e')]=_['merge'](_0x3d1cae[_0xa19e('0x3e')],{'$or':_['map'](_0xdf0b20,function(_0x374201){if(_0x374201[_0xa19e('0x3f')]!==_0xa19e('0x40')){var _0x5ed1ce={};_0x5ed1ce[_0x374201[_0xa19e('0x29')]]={'$like':'%'+_0x24dd51[_0xa19e('0x32')][_0xa19e('0x3d')]+'%'};return _0x5ed1ce;}})});}_0x3d1cae=_['merge']({},_0x3d1cae,_0x24dd51[_0xa19e('0x41')]);var _0x244ee5={'where':_0x3d1cae['where']};return db['FaxQueueReport'][_0xa19e('0x1d')](_0x244ee5)[_0xa19e('0x24')](function(_0x5dd159){_0x475a26[_0xa19e('0x1d')]=_0x5dd159;if(_0x24dd51[_0xa19e('0x32')]['includeAll']){_0x3d1cae[_0xa19e('0x42')]=[{'all':!![]}];}return db[_0xa19e('0x2d')][_0xa19e('0x43')](_0x3d1cae);})[_0xa19e('0x24')](function(_0x30fdfb){_0x475a26['rows']=_0x30fdfb;return _0x475a26;})[_0xa19e('0x24')](respondWithFilteredResult(_0x30e490,_0x3d1cae))[_0xa19e('0x44')](handleError(_0x30e490,null));};exports[_0xa19e('0x45')]=function(_0x29d254,_0x124e8c){var _0x51f0f4={'raw':!![],'where':{'id':_0x29d254['params']['id']}},_0x315341={};_0x315341[_0xa19e('0x31')]=_[_0xa19e('0x33')](db['FaxQueueReport'][_0xa19e('0x2e')]);_0x315341[_0xa19e('0x32')]=_['keys'](_0x29d254[_0xa19e('0x32')]);_0x315341['filters']=_[_0xa19e('0x35')](_0x315341[_0xa19e('0x31')],_0x315341[_0xa19e('0x32')]);_0x51f0f4[_0xa19e('0x36')]=_[_0xa19e('0x35')](_0x315341[_0xa19e('0x31')],qs[_0xa19e('0x46')](_0x29d254[_0xa19e('0x32')]['fields']));_0x51f0f4[_0xa19e('0x36')]=_0x51f0f4[_0xa19e('0x36')]['length']?_0x51f0f4['attributes']:_0x315341[_0xa19e('0x31')];if(_0x29d254[_0xa19e('0x32')][_0xa19e('0x47')]){_0x51f0f4['include']=[{'all':!![]}];}_0x51f0f4=_[_0xa19e('0x48')]({},_0x51f0f4,_0x29d254[_0xa19e('0x41')]);return db['FaxQueueReport'][_0xa19e('0x49')](_0x51f0f4)[_0xa19e('0x24')](handleEntityNotFound(_0x124e8c,null))[_0xa19e('0x24')](respondWithResult(_0x124e8c,null))['catch'](handleError(_0x124e8c,null));};exports[_0xa19e('0x4a')]=function(_0x52cf31,_0x349543){return db[_0xa19e('0x2d')][_0xa19e('0x4a')](_0x52cf31[_0xa19e('0x4b')],{})[_0xa19e('0x24')](respondWithResult(_0x349543,0xc9))['catch'](handleError(_0x349543,null));};exports[_0xa19e('0x23')]=function(_0x4c90fe,_0x4779d8){if(_0x4c90fe['body']['id']){delete _0x4c90fe[_0xa19e('0x4b')]['id'];}return db[_0xa19e('0x2d')][_0xa19e('0x49')]({'where':{'id':_0x4c90fe[_0xa19e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4779d8,null))[_0xa19e('0x24')](saveUpdates(_0x4c90fe[_0xa19e('0x4b')],null))[_0xa19e('0x24')](respondWithResult(_0x4779d8,null))[_0xa19e('0x44')](handleError(_0x4779d8,null));};exports['destroy']=function(_0x454c9f,_0x5ae431){return db[_0xa19e('0x2d')][_0xa19e('0x49')]({'where':{'id':_0x454c9f[_0xa19e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5ae431,null))[_0xa19e('0x24')](removeEntity(_0x5ae431,null))[_0xa19e('0x44')](handleError(_0x5ae431,null));};exports['describe']=function(_0x101576,_0x13045d){return db[_0xa19e('0x2d')][_0xa19e('0x4d')]()['then'](respondWithResult(_0x13045d,null))['catch'](handleError(_0x13045d,null));};
\ No newline at end of file
index aaacca7..a90d31b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x562d7a,_0x36d05f){var _0x29b32c=function(_0x29a57f){while(--_0x29a57f){_0x562d7a['push'](_0x562d7a['shift']());}};_0x29b32c(++_0x36d05f);}(_0x53ec,0x192));var _0xc53e=function(_0x29db25,_0x457467){_0x29db25=_0x29db25-0x0;var _0x48b1a5=_0x53ec[_0x29db25];return _0x48b1a5;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0295=['rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash','api','request-promise','path'];(function(_0x25b3e3,_0x3d3cc1){var _0x4a9cac=function(_0x102a48){while(--_0x102a48){_0x25b3e3['push'](_0x25b3e3['shift']());}};_0x4a9cac(++_0x3d3cc1);}(_0x0295,0x1f0));var _0x5029=function(_0x23b612,_0x440ea6){_0x23b612=_0x23b612-0x0;var _0x104bcb=_0x0295[_0x23b612];return _0x104bcb;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5029('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5029('0x2'));var fs=require('fs');var path=require(_0x5029('0x3'));var rimraf=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var attributes=require(_0x5029('0x6'));module[_0x5029('0x7')]=function(_0x200217,_0x215955){return _0x200217[_0x5029('0x8')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x5029('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 0dc5e64..440a00a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bab=['FaxQueueReport,\x20%s,\x20%s,\x20%s','error','code','FaxQueueReport,\x20%s,\x20%s','message','result','catch','create','body','options','raw','then','info','CreateFaxQueueReport','stringify','UpdateFaxQueueReport','FaxQueueReport','update','attributes','limit','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','request\x20sent','debug'];(function(_0x1b745b,_0x3e2d40){var _0x120a9d=function(_0x882a6c){while(--_0x882a6c){_0x1b745b['push'](_0x1b745b['shift']());}};_0x120a9d(++_0x3e2d40);}(_0x8bab,0x77));var _0xb8ba=function(_0xb44ad,_0x247271){_0xb44ad=_0xb44ad-0x0;var _0x3d0201=_0x8bab[_0xb44ad];return _0x3d0201;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb8ba('0x0'));var BPromise=require(_0xb8ba('0x1'));var rs=require(_0xb8ba('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb8ba('0x3'))['db'];var utils=require(_0xb8ba('0x4'));var logger=require(_0xb8ba('0x5'))(_0xb8ba('0x6'));var config=require(_0xb8ba('0x7'));var jayson=require(_0xb8ba('0x8'));var client=jayson['client'][_0xb8ba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b8e57,_0x108356,_0x237741){return new BPromise(function(_0x234b51,_0x4926e6){return client[_0xb8ba('0xa')](_0x5b8e57,_0x237741)['then'](function(_0x5ac45a){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x108356,_0xb8ba('0xb'));logger[_0xb8ba('0xc')](_0xb8ba('0xd'),_0x108356,_0xb8ba('0xb'),JSON['stringify'](_0x5ac45a));if(_0x5ac45a[_0xb8ba('0xe')]){if(_0x5ac45a[_0xb8ba('0xe')][_0xb8ba('0xf')]===0x1f4){logger[_0xb8ba('0xe')](_0xb8ba('0x10'),_0x108356,_0x5ac45a[_0xb8ba('0xe')][_0xb8ba('0x11')]);return _0x4926e6(_0x5ac45a[_0xb8ba('0xe')][_0xb8ba('0x11')]);}logger[_0xb8ba('0xe')]('FaxQueueReport,\x20%s,\x20%s',_0x108356,_0x5ac45a[_0xb8ba('0xe')]['message']);return _0x234b51(_0x5ac45a['error']['message']);}else{logger['info'](_0xb8ba('0x10'),_0x108356,_0xb8ba('0xb'));_0x234b51(_0x5ac45a[_0xb8ba('0x12')][_0xb8ba('0x11')]);}})[_0xb8ba('0x13')](function(_0xf37cd4){logger[_0xb8ba('0xe')]('FaxQueueReport,\x20%s,\x20%s',_0x108356,_0xf37cd4);_0x4926e6(_0xf37cd4);});});}exports['CreateFaxQueueReport']=function(_0xa9db95){var _0x2dfcc1=this;return new Promise(function(_0x1ddb49,_0x6d5e44){return db['FaxQueueReport'][_0xb8ba('0x14')](_0xa9db95[_0xb8ba('0x15')],{'raw':_0xa9db95[_0xb8ba('0x16')]?_0xa9db95['options'][_0xb8ba('0x17')]===undefined?!![]:![]:!![]})[_0xb8ba('0x18')](function(_0x461c4c){logger[_0xb8ba('0x19')](_0xb8ba('0x1a'),_0xa9db95);logger[_0xb8ba('0xc')](_0xb8ba('0x1a'),_0xa9db95,JSON[_0xb8ba('0x1b')](_0x461c4c));_0x1ddb49(_0x461c4c);})['catch'](function(_0x2d64a5){logger[_0xb8ba('0xe')](_0xb8ba('0x1a'),_0x2d64a5['message'],_0xa9db95);_0x6d5e44(_0x2dfcc1['error'](0x1f4,_0x2d64a5[_0xb8ba('0x11')]));});});};exports[_0xb8ba('0x1c')]=function(_0x2890d4){var _0x108c68=this;return new Promise(function(_0x4a351e,_0x3cae44){return db[_0xb8ba('0x1d')][_0xb8ba('0x1e')](_0x2890d4[_0xb8ba('0x15')],{'raw':_0x2890d4['options']?_0x2890d4[_0xb8ba('0x16')][_0xb8ba('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2890d4[_0xb8ba('0x16')]?_0x2890d4[_0xb8ba('0x16')]['where']||null:null,'attributes':_0x2890d4[_0xb8ba('0x16')]?_0x2890d4['options'][_0xb8ba('0x1f')]||null:null,'limit':_0x2890d4[_0xb8ba('0x16')]?_0x2890d4[_0xb8ba('0x16')][_0xb8ba('0x20')]||null:null})[_0xb8ba('0x18')](function(_0x5c41a7){logger[_0xb8ba('0x19')]('UpdateFaxQueueReport',_0x2890d4);logger[_0xb8ba('0xc')](_0xb8ba('0x1c'),_0x2890d4,JSON[_0xb8ba('0x1b')](_0x5c41a7));_0x4a351e(_0x5c41a7);})[_0xb8ba('0x13')](function(_0x5c664d){logger['error'](_0xb8ba('0x1c'),_0x5c664d[_0xb8ba('0x11')],_0x2890d4);_0x3cae44(_0x108c68[_0xb8ba('0xe')](0x1f4,_0x5c664d[_0xb8ba('0x11')]));});});};
\ No newline at end of file
+var _0x8d4c=['catch','FaxQueueReport','create','body','options','raw','CreateFaxQueueReport','UpdateFaxQueueReport','where','attributes','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','error','message','FaxQueueReport,\x20%s,\x20%s','result'];(function(_0xdf6837,_0x440887){var _0x254cfa=function(_0x3bcbc2){while(--_0x3bcbc2){_0xdf6837['push'](_0xdf6837['shift']());}};_0x254cfa(++_0x440887);}(_0x8d4c,0xcb));var _0xc8d4=function(_0x37d3f3,_0xca010f){_0x37d3f3=_0x37d3f3-0x0;var _0x185c9c=_0x8d4c[_0x37d3f3];return _0x185c9c;};'use strict';var _=require(_0xc8d4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc8d4('0x1'));var rs=require(_0xc8d4('0x2'));var fs=require('fs');var Redis=require(_0xc8d4('0x3'));var db=require(_0xc8d4('0x4'))['db'];var utils=require(_0xc8d4('0x5'));var logger=require(_0xc8d4('0x6'))('rpc');var config=require(_0xc8d4('0x7'));var jayson=require(_0xc8d4('0x8'));var client=jayson[_0xc8d4('0x9')][_0xc8d4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58e4bf,_0x27409c,_0xc74bd6){return new BPromise(function(_0x4a54ac,_0x244dd5){return client[_0xc8d4('0xb')](_0x58e4bf,_0xc74bd6)[_0xc8d4('0xc')](function(_0x5cea27){logger[_0xc8d4('0xd')]('FaxQueueReport,\x20%s,\x20%s',_0x27409c,_0xc8d4('0xe'));logger[_0xc8d4('0xf')](_0xc8d4('0x10'),_0x27409c,'request\x20sent',JSON['stringify'](_0x5cea27));if(_0x5cea27[_0xc8d4('0x11')]){if(_0x5cea27[_0xc8d4('0x11')]['code']===0x1f4){logger[_0xc8d4('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x27409c,_0x5cea27['error'][_0xc8d4('0x12')]);return _0x244dd5(_0x5cea27[_0xc8d4('0x11')][_0xc8d4('0x12')]);}logger[_0xc8d4('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x27409c,_0x5cea27[_0xc8d4('0x11')][_0xc8d4('0x12')]);return _0x4a54ac(_0x5cea27[_0xc8d4('0x11')][_0xc8d4('0x12')]);}else{logger[_0xc8d4('0xd')](_0xc8d4('0x13'),_0x27409c,_0xc8d4('0xe'));_0x4a54ac(_0x5cea27[_0xc8d4('0x14')]['message']);}})[_0xc8d4('0x15')](function(_0x3c0d68){logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x27409c,_0x3c0d68);_0x244dd5(_0x3c0d68);});});}exports['CreateFaxQueueReport']=function(_0x4cc4f7){var _0x4419e0=this;return new Promise(function(_0x4d2f16,_0x547d24){return db[_0xc8d4('0x16')][_0xc8d4('0x17')](_0x4cc4f7[_0xc8d4('0x18')],{'raw':_0x4cc4f7[_0xc8d4('0x19')]?_0x4cc4f7[_0xc8d4('0x19')][_0xc8d4('0x1a')]===undefined?!![]:![]:!![]})[_0xc8d4('0xc')](function(_0xd7f098){logger['info'](_0xc8d4('0x1b'),_0x4cc4f7);logger[_0xc8d4('0xf')](_0xc8d4('0x1b'),_0x4cc4f7,JSON['stringify'](_0xd7f098));_0x4d2f16(_0xd7f098);})[_0xc8d4('0x15')](function(_0x59f72b){logger[_0xc8d4('0x11')](_0xc8d4('0x1b'),_0x59f72b['message'],_0x4cc4f7);_0x547d24(_0x4419e0[_0xc8d4('0x11')](0x1f4,_0x59f72b['message']));});});};exports[_0xc8d4('0x1c')]=function(_0xd1f977){var _0x266b4d=this;return new Promise(function(_0x3f1eb6,_0x25cc2d){return db[_0xc8d4('0x16')]['update'](_0xd1f977[_0xc8d4('0x18')],{'raw':_0xd1f977['options']?_0xd1f977[_0xc8d4('0x19')][_0xc8d4('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd1f977[_0xc8d4('0x19')]?_0xd1f977[_0xc8d4('0x19')][_0xc8d4('0x1d')]||null:null,'attributes':_0xd1f977[_0xc8d4('0x19')]?_0xd1f977['options'][_0xc8d4('0x1e')]||null:null,'limit':_0xd1f977[_0xc8d4('0x19')]?_0xd1f977['options']['limit']||null:null})[_0xc8d4('0xc')](function(_0x7f57ba){logger[_0xc8d4('0xd')](_0xc8d4('0x1c'),_0xd1f977);logger['debug'](_0xc8d4('0x1c'),_0xd1f977,JSON[_0xc8d4('0x1f')](_0x7f57ba));_0x3f1eb6(_0x7f57ba);})['catch'](function(_0x51a401){logger[_0xc8d4('0x11')](_0xc8d4('0x1c'),_0x51a401[_0xc8d4('0x12')],_0xd1f977);_0x25cc2d(_0x266b4d[_0xc8d4('0x11')](0x1f4,_0x51a401[_0xc8d4('0x12')]));});});};
\ No newline at end of file
index 19b12c8..15b62b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87d3=['post','create','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id','show'];(function(_0x50737d,_0x680f6b){var _0x31a82a=function(_0xa125ea){while(--_0xa125ea){_0x50737d['push'](_0x50737d['shift']());}};_0x31a82a(++_0x680f6b);}(_0x87d3,0x8b));var _0x387d=function(_0x34e14d,_0x5dea39){_0x34e14d=_0x34e14d-0x0;var _0x3d8e08=_0x87d3[_0x34e14d];return _0x3d8e08;};'use strict';var multer=require(_0x387d('0x0'));var util=require(_0x387d('0x1'));var path=require('path');var timeout=require(_0x387d('0x2'));var express=require(_0x387d('0x3'));var router=express[_0x387d('0x4')]();var fs_extra=require(_0x387d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x387d('0x6'));var config=require('../../config/environment');var controller=require('./faxQueueReport.controller');router[_0x387d('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x387d('0x7')](_0x387d('0x8'),auth[_0x387d('0x9')](),controller[_0x387d('0xa')]);router[_0x387d('0x7')](_0x387d('0xb'),auth[_0x387d('0x9')](),controller[_0x387d('0xc')]);router[_0x387d('0xd')]('/',auth[_0x387d('0x9')](),controller[_0x387d('0xe')]);router['put']('/:id',auth[_0x387d('0x9')](),controller[_0x387d('0xf')]);router[_0x387d('0x10')](_0x387d('0xb'),auth[_0x387d('0x9')](),controller[_0x387d('0x11')]);module[_0x387d('0x12')]=router;
\ No newline at end of file
+var _0x1431=['../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','/:id','post','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x4a6abe,_0x5c7730){var _0x2d47a3=function(_0x308dd0){while(--_0x308dd0){_0x4a6abe['push'](_0x4a6abe['shift']());}};_0x2d47a3(++_0x5c7730);}(_0x1431,0x13f));var _0x1143=function(_0x2268b5,_0x591704){_0x2268b5=_0x2268b5-0x0;var _0x3a893f=_0x1431[_0x2268b5];return _0x3a893f;};'use strict';var multer=require('multer');var util=require(_0x1143('0x0'));var path=require(_0x1143('0x1'));var timeout=require(_0x1143('0x2'));var express=require('express');var router=express[_0x1143('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1143('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1143('0x5'));var controller=require(_0x1143('0x6'));router[_0x1143('0x7')]('/',auth[_0x1143('0x8')](),controller[_0x1143('0x9')]);router[_0x1143('0x7')](_0x1143('0xa'),auth[_0x1143('0x8')](),controller['describe']);router['get'](_0x1143('0xb'),auth[_0x1143('0x8')](),controller['show']);router[_0x1143('0xc')]('/',auth[_0x1143('0x8')](),controller['create']);router[_0x1143('0xd')](_0x1143('0xb'),auth[_0x1143('0x8')](),controller[_0x1143('0xe')]);router[_0x1143('0xf')](_0x1143('0xb'),auth[_0x1143('0x8')](),controller[_0x1143('0x10')]);module[_0x1143('0x11')]=router;
\ No newline at end of file
index 45e9c36..d412862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x2bcb20,_0x3e9ced){var _0x23f5ed=function(_0x2df891){while(--_0x2df891){_0x2bcb20['push'](_0x2bcb20['shift']());}};_0x23f5ed(++_0x3e9ced);}(_0xf4eb,0xec));var _0xbf4e=function(_0x33b95e,_0x39bffb){_0x33b95e=_0x33b95e-0x0;var _0x3b2073=_0xf4eb[_0x33b95e];return _0x3b2073;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x49d19d,_0x245cf5){var _0x4ebef1=function(_0xf0a4e6){while(--_0xf0a4e6){_0x49d19d['push'](_0x49d19d['shift']());}};_0x4ebef1(++_0x245cf5);}(_0xb43b,0x1b2));var _0xbb43=function(_0x184d4c,_0x171787){_0x184d4c=_0x184d4c-0x0;var _0xbcc31e=_0xb43b[_0x184d4c];return _0xbcc31e;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index 06b13a9..2476278 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30c=['filters','attributes','intersection','fields','query','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','name','keys'];(function(_0x1571a3,_0x293ec6){var _0x337942=function(_0x2609dd){while(--_0x2609dd){_0x1571a3['push'](_0x1571a3['shift']());}};_0x337942(++_0x293ec6);}(_0xa30c,0x1e2));var _0xca30=function(_0x112955,_0x541eb2){_0x112955=_0x112955-0x0;var _0x28cb6c=_0xa30c[_0x112955];return _0x28cb6c;};'use strict';var emlformat=require(_0xca30('0x0'));var rimraf=require(_0xca30('0x1'));var zipdir=require(_0xca30('0x2'));var jsonpatch=require(_0xca30('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xca30('0x4'));var path=require(_0xca30('0x5'));var sox=require(_0xca30('0x6'));var csv=require(_0xca30('0x7'));var ejs=require(_0xca30('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xca30('0x9'));var crypto=require(_0xca30('0xa'));var jsforce=require(_0xca30('0xb'));var deskjs=require(_0xca30('0xc'));var toCsv=require(_0xca30('0x7'));var querystring=require('querystring');var Papa=require(_0xca30('0xd'));var Redis=require(_0xca30('0xe'));var authService=require(_0xca30('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xca30('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xca30('0x11'))(_0xca30('0x12'));var utils=require('../../config/utils');var config=require(_0xca30('0x13'));var licenseUtil=require(_0xca30('0x14'));var db=require(_0xca30('0x15'))['db'];function respondWithStatusCode(_0x315232,_0x21aafb){_0x21aafb=_0x21aafb||0xcc;return function(_0x3490fb){if(_0x3490fb){return _0x315232[_0xca30('0x16')](_0x21aafb);}return _0x315232[_0xca30('0x17')](_0x21aafb)[_0xca30('0x18')]();};}function respondWithResult(_0x117251,_0xd2c226){_0xd2c226=_0xd2c226||0xc8;return function(_0x28eea7){if(_0x28eea7){return _0x117251[_0xca30('0x17')](_0xd2c226)[_0xca30('0x19')](_0x28eea7);}};}function respondWithFilteredResult(_0x4c2d18,_0x3c401b){return function(_0x163cbc){if(_0x163cbc){var _0x14fc4d=typeof _0x3c401b['offset']===_0xca30('0x1a')&&typeof _0x3c401b[_0xca30('0x1b')]==='undefined';var _0xa6031d=_0x163cbc[_0xca30('0x1c')];var _0x2df5d3=_0x14fc4d?0x0:_0x3c401b[_0xca30('0x1d')];var _0x53b840=_0x14fc4d?_0x163cbc[_0xca30('0x1c')]:_0x3c401b[_0xca30('0x1d')]+_0x3c401b['limit'];var _0x3a8e21;if(_0x53b840>=_0xa6031d){_0x53b840=_0xa6031d;_0x3a8e21=0xc8;}else{_0x3a8e21=0xce;}_0x4c2d18[_0xca30('0x17')](_0x3a8e21);return _0x4c2d18['set'](_0xca30('0x1e'),_0x2df5d3+'-'+_0x53b840+'/'+_0xa6031d)[_0xca30('0x19')](_0x163cbc);}return null;};}function patchUpdates(_0x1daf5b){return function(_0x25e7cd){try{jsonpatch[_0xca30('0x1f')](_0x25e7cd,_0x1daf5b,!![]);}catch(_0x26c8bc){return BPromise[_0xca30('0x20')](_0x26c8bc);}return _0x25e7cd[_0xca30('0x21')]();};}function saveUpdates(_0x37d34a,_0x45c56b){return function(_0x3fdc67){if(_0x3fdc67){return _0x3fdc67[_0xca30('0x22')](_0x37d34a)[_0xca30('0x23')](function(_0x142d37){return _0x142d37;});}return null;};}function removeEntity(_0x538481,_0x2f5815){return function(_0x47499d){if(_0x47499d){return _0x47499d[_0xca30('0x24')]()[_0xca30('0x23')](function(){_0x538481['status'](0xcc)[_0xca30('0x18')]();});}};}function handleEntityNotFound(_0x281c98,_0x43f1fa){return function(_0x341137){if(!_0x341137){_0x281c98[_0xca30('0x16')](0x194);}return _0x341137;};}function handleError(_0x116572,_0xd5dd88){_0xd5dd88=_0xd5dd88||0x1f4;return function(_0x297edb){logger[_0xca30('0x25')](_0x297edb[_0xca30('0x26')]);if(_0x297edb['name']){delete _0x297edb['name'];}_0x116572[_0xca30('0x17')](_0xd5dd88)[_0xca30('0x27')](_0x297edb);};}exports[_0xca30('0x28')]=function(_0x1b4b5d,_0x4192a9){var _0x242279={},_0x66a067={},_0x1b5d38={'count':0x0,'rows':[]};var _0x15f02d=_[_0xca30('0x29')](db[_0xca30('0x2a')][_0xca30('0x2b')],function(_0x1e7433){return{'name':_0x1e7433[_0xca30('0x2c')],'type':_0x1e7433[_0xca30('0x2d')][_0xca30('0x2e')]};});_0x66a067[_0xca30('0x2f')]=_[_0xca30('0x29')](_0x15f02d,_0xca30('0x30'));_0x66a067['query']=_[_0xca30('0x31')](_0x1b4b5d['query']);_0x66a067[_0xca30('0x32')]=_['intersection'](_0x66a067['model'],_0x66a067['query']);_0x242279[_0xca30('0x33')]=_[_0xca30('0x34')](_0x66a067[_0xca30('0x2f')],qs[_0xca30('0x35')](_0x1b4b5d[_0xca30('0x36')][_0xca30('0x35')]));_0x242279['attributes']=_0x242279[_0xca30('0x33')][_0xca30('0x37')]?_0x242279[_0xca30('0x33')]:_0x66a067[_0xca30('0x2f')];if(!_0x1b4b5d[_0xca30('0x36')][_0xca30('0x38')](_0xca30('0x39'))){_0x242279[_0xca30('0x1b')]=qs['limit'](_0x1b4b5d[_0xca30('0x36')][_0xca30('0x1b')]);_0x242279[_0xca30('0x1d')]=qs[_0xca30('0x1d')](_0x1b4b5d[_0xca30('0x36')]['offset']);}_0x242279[_0xca30('0x3a')]=qs[_0xca30('0x3b')](_0x1b4b5d['query'][_0xca30('0x3b')]);_0x242279[_0xca30('0x3c')]=qs[_0xca30('0x32')](_['pick'](_0x1b4b5d[_0xca30('0x36')],_0x66a067[_0xca30('0x32')]),_0x15f02d);if(_0x1b4b5d['query'][_0xca30('0x3d')]){_0x242279[_0xca30('0x3c')]=_[_0xca30('0x3e')](_0x242279[_0xca30('0x3c')],{'$or':_['map'](_0x15f02d,function(_0x30a1ec){if(_0x30a1ec[_0xca30('0x2d')]!==_0xca30('0x3f')){var _0x3ec3e7={};_0x3ec3e7[_0x30a1ec[_0xca30('0x30')]]={'$like':'%'+_0x1b4b5d['query'][_0xca30('0x3d')]+'%'};return _0x3ec3e7;}})});}_0x242279=_[_0xca30('0x3e')]({},_0x242279,_0x1b4b5d['options']);var _0x48fdc8={'where':_0x242279[_0xca30('0x3c')]};return db['FaxTransferReport'][_0xca30('0x1c')](_0x48fdc8)[_0xca30('0x23')](function(_0x2f63e7){_0x1b5d38[_0xca30('0x1c')]=_0x2f63e7;if(_0x1b4b5d[_0xca30('0x36')][_0xca30('0x40')]){_0x242279[_0xca30('0x41')]=[{'all':!![]}];}return db[_0xca30('0x2a')][_0xca30('0x42')](_0x242279);})[_0xca30('0x23')](function(_0x5d89c3){_0x1b5d38[_0xca30('0x43')]=_0x5d89c3;return _0x1b5d38;})['then'](respondWithFilteredResult(_0x4192a9,_0x242279))[_0xca30('0x44')](handleError(_0x4192a9,null));};exports[_0xca30('0x45')]=function(_0x2face8,_0x325862){var _0x16bfcd={'raw':!![],'where':{'id':_0x2face8[_0xca30('0x46')]['id']}},_0x3112ee={};_0x3112ee[_0xca30('0x2f')]=_[_0xca30('0x31')](db[_0xca30('0x2a')][_0xca30('0x2b')]);_0x3112ee['query']=_[_0xca30('0x31')](_0x2face8[_0xca30('0x36')]);_0x3112ee[_0xca30('0x32')]=_[_0xca30('0x34')](_0x3112ee[_0xca30('0x2f')],_0x3112ee[_0xca30('0x36')]);_0x16bfcd[_0xca30('0x33')]=_[_0xca30('0x34')](_0x3112ee[_0xca30('0x2f')],qs[_0xca30('0x35')](_0x2face8[_0xca30('0x36')][_0xca30('0x35')]));_0x16bfcd[_0xca30('0x33')]=_0x16bfcd['attributes'][_0xca30('0x37')]?_0x16bfcd[_0xca30('0x33')]:_0x3112ee['model'];if(_0x2face8[_0xca30('0x36')][_0xca30('0x40')]){_0x16bfcd['include']=[{'all':!![]}];}_0x16bfcd=_['merge']({},_0x16bfcd,_0x2face8[_0xca30('0x47')]);return db[_0xca30('0x2a')][_0xca30('0x48')](_0x16bfcd)[_0xca30('0x23')](handleEntityNotFound(_0x325862,null))['then'](respondWithResult(_0x325862,null))['catch'](handleError(_0x325862,null));};exports['create']=function(_0x5eea9b,_0x12358a){return db['FaxTransferReport'][_0xca30('0x49')](_0x5eea9b[_0xca30('0x4a')],{})[_0xca30('0x23')](respondWithResult(_0x12358a,0xc9))[_0xca30('0x44')](handleError(_0x12358a,null));};exports['update']=function(_0x4ddf72,_0x42e073){if(_0x4ddf72[_0xca30('0x4a')]['id']){delete _0x4ddf72[_0xca30('0x4a')]['id'];}return db[_0xca30('0x2a')][_0xca30('0x48')]({'where':{'id':_0x4ddf72[_0xca30('0x46')]['id']}})[_0xca30('0x23')](handleEntityNotFound(_0x42e073,null))['then'](saveUpdates(_0x4ddf72[_0xca30('0x4a')],null))['then'](respondWithResult(_0x42e073,null))['catch'](handleError(_0x42e073,null));};exports[_0xca30('0x24')]=function(_0x2e464e,_0x2f7f1c){return db[_0xca30('0x2a')][_0xca30('0x48')]({'where':{'id':_0x2e464e[_0xca30('0x46')]['id']}})[_0xca30('0x23')](handleEntityNotFound(_0x2f7f1c,null))['then'](removeEntity(_0x2f7f1c,null))[_0xca30('0x44')](handleError(_0x2f7f1c,null));};exports[_0xca30('0x4b')]=function(_0x2bc268,_0x5cff87){return db[_0xca30('0x2a')][_0xca30('0x4b')]()[_0xca30('0x23')](respondWithResult(_0x5cff87,null))['catch'](handleError(_0x5cff87,null));};
\ No newline at end of file
+var _0x45a3=['FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','name','merge','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','update','destroy','then','error','index','map'];(function(_0x12d951,_0x249808){var _0x44de17=function(_0x182fd9){while(--_0x182fd9){_0x12d951['push'](_0x12d951['shift']());}};_0x44de17(++_0x249808);}(_0x45a3,0xff));var _0x345a=function(_0xb960ae,_0x36233e){_0xb960ae=_0xb960ae-0x0;var _0x2e1f5f=_0x45a3[_0xb960ae];return _0x2e1f5f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x345a('0x0'));var zipdir=require(_0x345a('0x1'));var jsonpatch=require(_0x345a('0x2'));var rp=require(_0x345a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x345a('0x4'));var util=require(_0x345a('0x5'));var path=require(_0x345a('0x6'));var sox=require('sox');var csv=require(_0x345a('0x7'));var ejs=require(_0x345a('0x8'));var fs=require('fs');var fs_extra=require(_0x345a('0x9'));var _=require('lodash');var squel=require(_0x345a('0xa'));var crypto=require(_0x345a('0xb'));var jsforce=require(_0x345a('0xc'));var deskjs=require(_0x345a('0xd'));var toCsv=require('to-csv');var querystring=require(_0x345a('0xe'));var Papa=require(_0x345a('0xf'));var Redis=require('ioredis');var authService=require(_0x345a('0x10'));var qs=require(_0x345a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x345a('0x12'));var logger=require(_0x345a('0x13'))(_0x345a('0x14'));var utils=require(_0x345a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x345a('0x16'));var db=require(_0x345a('0x17'))['db'];function respondWithStatusCode(_0x394bf3,_0x77cd04){_0x77cd04=_0x77cd04||0xcc;return function(_0x13d36c){if(_0x13d36c){return _0x394bf3[_0x345a('0x18')](_0x77cd04);}return _0x394bf3[_0x345a('0x19')](_0x77cd04)[_0x345a('0x1a')]();};}function respondWithResult(_0x5d4125,_0x9c3494){_0x9c3494=_0x9c3494||0xc8;return function(_0x1a13bc){if(_0x1a13bc){return _0x5d4125['status'](_0x9c3494)['json'](_0x1a13bc);}};}function respondWithFilteredResult(_0x5f568a,_0x37a0d4){return function(_0x195aff){if(_0x195aff){var _0x178976=typeof _0x37a0d4[_0x345a('0x1b')]==='undefined'&&typeof _0x37a0d4[_0x345a('0x1c')]===_0x345a('0x1d');var _0x5e0df1=_0x195aff[_0x345a('0x1e')];var _0x9e7666=_0x178976?0x0:_0x37a0d4[_0x345a('0x1b')];var _0x4ea610=_0x178976?_0x195aff[_0x345a('0x1e')]:_0x37a0d4[_0x345a('0x1b')]+_0x37a0d4[_0x345a('0x1c')];var _0xbc10ba;if(_0x4ea610>=_0x5e0df1){_0x4ea610=_0x5e0df1;_0xbc10ba=0xc8;}else{_0xbc10ba=0xce;}_0x5f568a['status'](_0xbc10ba);return _0x5f568a[_0x345a('0x1f')]('Content-Range',_0x9e7666+'-'+_0x4ea610+'/'+_0x5e0df1)[_0x345a('0x20')](_0x195aff);}return null;};}function patchUpdates(_0x17af8e){return function(_0x37254d){try{jsonpatch[_0x345a('0x21')](_0x37254d,_0x17af8e,!![]);}catch(_0x182554){return BPromise[_0x345a('0x22')](_0x182554);}return _0x37254d['save']();};}function saveUpdates(_0x22b8d6,_0x476bed){return function(_0x29d6ae){if(_0x29d6ae){return _0x29d6ae[_0x345a('0x23')](_0x22b8d6)['then'](function(_0x29f9f7){return _0x29f9f7;});}return null;};}function removeEntity(_0x370a2f,_0x4c018f){return function(_0x427660){if(_0x427660){return _0x427660[_0x345a('0x24')]()[_0x345a('0x25')](function(){_0x370a2f[_0x345a('0x19')](0xcc)[_0x345a('0x1a')]();});}};}function handleEntityNotFound(_0x2143ca,_0xf7d7a9){return function(_0x8e887b){if(!_0x8e887b){_0x2143ca[_0x345a('0x18')](0x194);}return _0x8e887b;};}function handleError(_0x317564,_0x439d38){_0x439d38=_0x439d38||0x1f4;return function(_0x41e0e9){logger[_0x345a('0x26')](_0x41e0e9['stack']);if(_0x41e0e9['name']){delete _0x41e0e9['name'];}_0x317564['status'](_0x439d38)['send'](_0x41e0e9);};}exports[_0x345a('0x27')]=function(_0x398140,_0x29c960){var _0x391660={},_0x24cca1={},_0x35cd8c={'count':0x0,'rows':[]};var _0x2a7397=_[_0x345a('0x28')](db[_0x345a('0x29')][_0x345a('0x2a')],function(_0x394f87){return{'name':_0x394f87[_0x345a('0x2b')],'type':_0x394f87[_0x345a('0x2c')][_0x345a('0x2d')]};});_0x24cca1[_0x345a('0x2e')]=_['map'](_0x2a7397,'name');_0x24cca1[_0x345a('0x2f')]=_[_0x345a('0x30')](_0x398140[_0x345a('0x2f')]);_0x24cca1[_0x345a('0x31')]=_['intersection'](_0x24cca1[_0x345a('0x2e')],_0x24cca1['query']);_0x391660[_0x345a('0x32')]=_[_0x345a('0x33')](_0x24cca1[_0x345a('0x2e')],qs[_0x345a('0x34')](_0x398140[_0x345a('0x2f')]['fields']));_0x391660['attributes']=_0x391660[_0x345a('0x32')]['length']?_0x391660[_0x345a('0x32')]:_0x24cca1['model'];if(!_0x398140[_0x345a('0x2f')][_0x345a('0x35')](_0x345a('0x36'))){_0x391660[_0x345a('0x1c')]=qs['limit'](_0x398140[_0x345a('0x2f')][_0x345a('0x1c')]);_0x391660[_0x345a('0x1b')]=qs[_0x345a('0x1b')](_0x398140[_0x345a('0x2f')]['offset']);}_0x391660['order']=qs['sort'](_0x398140[_0x345a('0x2f')][_0x345a('0x37')]);_0x391660[_0x345a('0x38')]=qs[_0x345a('0x31')](_[_0x345a('0x39')](_0x398140['query'],_0x24cca1[_0x345a('0x31')]),_0x2a7397);if(_0x398140[_0x345a('0x2f')][_0x345a('0x3a')]){_0x391660[_0x345a('0x38')]=_['merge'](_0x391660[_0x345a('0x38')],{'$or':_[_0x345a('0x28')](_0x2a7397,function(_0x48dd67){if(_0x48dd67[_0x345a('0x2c')]!==_0x345a('0x3b')){var _0x414786={};_0x414786[_0x48dd67[_0x345a('0x3c')]]={'$like':'%'+_0x398140['query']['filter']+'%'};return _0x414786;}})});}_0x391660=_[_0x345a('0x3d')]({},_0x391660,_0x398140[_0x345a('0x3e')]);var _0x3ad092={'where':_0x391660[_0x345a('0x38')]};return db[_0x345a('0x29')]['count'](_0x3ad092)[_0x345a('0x25')](function(_0xff0bce){_0x35cd8c[_0x345a('0x1e')]=_0xff0bce;if(_0x398140[_0x345a('0x2f')]['includeAll']){_0x391660[_0x345a('0x3f')]=[{'all':!![]}];}return db[_0x345a('0x29')][_0x345a('0x40')](_0x391660);})[_0x345a('0x25')](function(_0x54a1da){_0x35cd8c[_0x345a('0x41')]=_0x54a1da;return _0x35cd8c;})['then'](respondWithFilteredResult(_0x29c960,_0x391660))[_0x345a('0x42')](handleError(_0x29c960,null));};exports[_0x345a('0x43')]=function(_0x674b3b,_0x1d9d91){var _0x1bdb30={'raw':!![],'where':{'id':_0x674b3b[_0x345a('0x44')]['id']}},_0x49128f={};_0x49128f[_0x345a('0x2e')]=_['keys'](db[_0x345a('0x29')][_0x345a('0x2a')]);_0x49128f[_0x345a('0x2f')]=_[_0x345a('0x30')](_0x674b3b[_0x345a('0x2f')]);_0x49128f[_0x345a('0x31')]=_['intersection'](_0x49128f[_0x345a('0x2e')],_0x49128f['query']);_0x1bdb30['attributes']=_[_0x345a('0x33')](_0x49128f[_0x345a('0x2e')],qs[_0x345a('0x34')](_0x674b3b[_0x345a('0x2f')]['fields']));_0x1bdb30['attributes']=_0x1bdb30['attributes']['length']?_0x1bdb30[_0x345a('0x32')]:_0x49128f['model'];if(_0x674b3b['query'][_0x345a('0x45')]){_0x1bdb30[_0x345a('0x3f')]=[{'all':!![]}];}_0x1bdb30=_['merge']({},_0x1bdb30,_0x674b3b[_0x345a('0x3e')]);return db[_0x345a('0x29')]['find'](_0x1bdb30)[_0x345a('0x25')](handleEntityNotFound(_0x1d9d91,null))[_0x345a('0x25')](respondWithResult(_0x1d9d91,null))['catch'](handleError(_0x1d9d91,null));};exports[_0x345a('0x46')]=function(_0x4d2a82,_0x449db0){return db[_0x345a('0x29')][_0x345a('0x46')](_0x4d2a82[_0x345a('0x47')],{})['then'](respondWithResult(_0x449db0,0xc9))[_0x345a('0x42')](handleError(_0x449db0,null));};exports[_0x345a('0x23')]=function(_0x406d6d,_0x2602df){if(_0x406d6d['body']['id']){delete _0x406d6d[_0x345a('0x47')]['id'];}return db[_0x345a('0x29')][_0x345a('0x48')]({'where':{'id':_0x406d6d[_0x345a('0x44')]['id']}})['then'](handleEntityNotFound(_0x2602df,null))[_0x345a('0x25')](saveUpdates(_0x406d6d[_0x345a('0x47')],null))[_0x345a('0x25')](respondWithResult(_0x2602df,null))['catch'](handleError(_0x2602df,null));};exports['destroy']=function(_0x47f973,_0x104ae8){return db['FaxTransferReport']['find']({'where':{'id':_0x47f973[_0x345a('0x44')]['id']}})[_0x345a('0x25')](handleEntityNotFound(_0x104ae8,null))[_0x345a('0x25')](removeEntity(_0x104ae8,null))[_0x345a('0x42')](handleError(_0x104ae8,null));};exports[_0x345a('0x49')]=function(_0x57ae3f,_0x31be64){return db[_0x345a('0x29')][_0x345a('0x49')]()[_0x345a('0x25')](respondWithResult(_0x31be64,null))[_0x345a('0x42')](handleError(_0x31be64,null));};
\ No newline at end of file
index c695864..457f50f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ce9=['report_fax_transfer','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./faxTransferReport.attributes','exports','FaxTransferReport'];(function(_0x8612c2,_0x465184){var _0x34c523=function(_0x44351f){while(--_0x44351f){_0x8612c2['push'](_0x8612c2['shift']());}};_0x34c523(++_0x465184);}(_0x3ce9,0x85));var _0x93ce=function(_0x91fbc7,_0x207e4c){_0x91fbc7=_0x91fbc7-0x0;var _0x32a811=_0x3ce9[_0x91fbc7];return _0x32a811;};'use strict';var _=require(_0x93ce('0x0'));var util=require('util');var logger=require(_0x93ce('0x1'))(_0x93ce('0x2'));var moment=require(_0x93ce('0x3'));var BPromise=require(_0x93ce('0x4'));var rp=require(_0x93ce('0x5'));var fs=require('fs');var path=require(_0x93ce('0x6'));var rimraf=require('rimraf');var config=require(_0x93ce('0x7'));var attributes=require(_0x93ce('0x8'));module[_0x93ce('0x9')]=function(_0x9559,_0x44268b){return _0x9559['define'](_0x93ce('0xa'),attributes,{'tableName':_0x93ce('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x99d4=['FaxTransferReport','report_fax_transfer','lodash','../../config/logger','bluebird','request-promise','./faxTransferReport.attributes','exports','define'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x99d4,0x122));var _0x499d=function(_0x229a07,_0x4dea7a){_0x229a07=_0x229a07-0x0;var _0x3e5625=_0x99d4[_0x229a07];return _0x3e5625;};'use strict';var _=require(_0x499d('0x0'));var util=require('util');var logger=require(_0x499d('0x1'))('api');var moment=require('moment');var BPromise=require(_0x499d('0x2'));var rp=require(_0x499d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x499d('0x4'));module[_0x499d('0x5')]=function(_0x4748bc,_0x53264c){return _0x4748bc[_0x499d('0x6')](_0x499d('0x7'),attributes,{'tableName':_0x499d('0x8'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5a8eac6..7343a90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd73=['debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x163f72,_0x14c1c6){var _0x348c11=function(_0x158d7b){while(--_0x158d7b){_0x163f72['push'](_0x163f72['shift']());}};_0x348c11(++_0x14c1c6);}(_0xfd73,0x182));var _0x3fd7=function(_0x1929c9,_0x4feb67){_0x1929c9=_0x1929c9-0x0;var _0x115931=_0xfd73[_0x1929c9];return _0x115931;};'use strict';var _=require(_0x3fd7('0x0'));var util=require(_0x3fd7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3fd7('0x2'));var fs=require('fs');var Redis=require(_0x3fd7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3fd7('0x4'));var logger=require(_0x3fd7('0x5'))('rpc');var config=require(_0x3fd7('0x6'));var jayson=require(_0x3fd7('0x7'));var client=jayson['client'][_0x3fd7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x14e66e,_0x8fe7c8,_0x5f591b){return new BPromise(function(_0x8abcfa,_0x4f6924){return client['request'](_0x14e66e,_0x5f591b)[_0x3fd7('0x9')](function(_0x31ef76){logger[_0x3fd7('0xa')](_0x3fd7('0xb'),_0x8fe7c8,_0x3fd7('0xc'));logger[_0x3fd7('0xd')](_0x3fd7('0xe'),_0x8fe7c8,_0x3fd7('0xc'),JSON['stringify'](_0x31ef76));if(_0x31ef76[_0x3fd7('0xf')]){if(_0x31ef76['error'][_0x3fd7('0x10')]===0x1f4){logger[_0x3fd7('0xf')](_0x3fd7('0xb'),_0x8fe7c8,_0x31ef76['error'][_0x3fd7('0x11')]);return _0x4f6924(_0x31ef76['error'][_0x3fd7('0x11')]);}logger[_0x3fd7('0xf')](_0x3fd7('0xb'),_0x8fe7c8,_0x31ef76[_0x3fd7('0xf')][_0x3fd7('0x11')]);return _0x8abcfa(_0x31ef76[_0x3fd7('0xf')][_0x3fd7('0x11')]);}else{logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x8fe7c8,'request\x20sent');_0x8abcfa(_0x31ef76['result']['message']);}})[_0x3fd7('0x12')](function(_0xb1250a){logger[_0x3fd7('0xf')](_0x3fd7('0xb'),_0x8fe7c8,_0xb1250a);_0x4f6924(_0xb1250a);});});}
\ No newline at end of file
+var _0xf4f4=['FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','info'];(function(_0x4014fc,_0x3221ac){var _0x5e69f0=function(_0x184e84){while(--_0x184e84){_0x4014fc['push'](_0x4014fc['shift']());}};_0x5e69f0(++_0x3221ac);}(_0xf4f4,0x87));var _0x4f4f=function(_0x4e0b45,_0x3d4f9a){_0x4e0b45=_0x4e0b45-0x0;var _0x20a2f4=_0xf4f4[_0x4e0b45];return _0x20a2f4;};'use strict';var _=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var moment=require(_0x4f4f('0x2'));var BPromise=require(_0x4f4f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4f4f('0x4'));var db=require(_0x4f4f('0x5'))['db'];var utils=require(_0x4f4f('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4f4f('0x7'));var jayson=require(_0x4f4f('0x8'));var client=jayson['client'][_0x4f4f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x154362,_0x254c39,_0x211728){return new BPromise(function(_0x51a205,_0xd29a64){return client[_0x4f4f('0xa')](_0x154362,_0x211728)['then'](function(_0x2468ac){logger[_0x4f4f('0xb')](_0x4f4f('0xc'),_0x254c39,_0x4f4f('0xd'));logger[_0x4f4f('0xe')](_0x4f4f('0xf'),_0x254c39,'request\x20sent',JSON[_0x4f4f('0x10')](_0x2468ac));if(_0x2468ac[_0x4f4f('0x11')]){if(_0x2468ac[_0x4f4f('0x11')][_0x4f4f('0x12')]===0x1f4){logger[_0x4f4f('0x11')](_0x4f4f('0xc'),_0x254c39,_0x2468ac[_0x4f4f('0x11')]['message']);return _0xd29a64(_0x2468ac['error'][_0x4f4f('0x13')]);}logger[_0x4f4f('0x11')](_0x4f4f('0xc'),_0x254c39,_0x2468ac[_0x4f4f('0x11')]['message']);return _0x51a205(_0x2468ac[_0x4f4f('0x11')][_0x4f4f('0x13')]);}else{logger['info'](_0x4f4f('0xc'),_0x254c39,'request\x20sent');_0x51a205(_0x2468ac[_0x4f4f('0x14')][_0x4f4f('0x13')]);}})['catch'](function(_0x42f120){logger[_0x4f4f('0x11')](_0x4f4f('0xc'),_0x254c39,_0x42f120);_0xd29a64(_0x42f120);});});}
\ No newline at end of file
index 5c289c4..cb8a1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0f9=['put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','create'];(function(_0x4d8b4f,_0x319a76){var _0xf93797=function(_0x3832cd){while(--_0x3832cd){_0x4d8b4f['push'](_0x4d8b4f['shift']());}};_0xf93797(++_0x319a76);}(_0xd0f9,0x145));var _0x9d0f=function(_0x178856,_0x41f045){_0x178856=_0x178856-0x0;var _0x3c7fe7=_0xd0f9[_0x178856];return _0x3c7fe7;};'use strict';var multer=require(_0x9d0f('0x0'));var util=require('util');var path=require(_0x9d0f('0x1'));var timeout=require(_0x9d0f('0x2'));var express=require(_0x9d0f('0x3'));var router=express[_0x9d0f('0x4')]();var fs_extra=require(_0x9d0f('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9d0f('0x6'));var controller=require('./faxTransferReport.controller');router[_0x9d0f('0x7')]('/',auth[_0x9d0f('0x8')](),controller[_0x9d0f('0x9')]);router[_0x9d0f('0x7')](_0x9d0f('0xa'),auth[_0x9d0f('0x8')](),controller[_0x9d0f('0xb')]);router[_0x9d0f('0x7')](_0x9d0f('0xc'),auth[_0x9d0f('0x8')](),controller[_0x9d0f('0xd')]);router['post']('/',auth[_0x9d0f('0x8')](),controller[_0x9d0f('0xe')]);router[_0x9d0f('0xf')](_0x9d0f('0xc'),auth[_0x9d0f('0x8')](),controller[_0x9d0f('0x10')]);router[_0x9d0f('0x11')](_0x9d0f('0xc'),auth[_0x9d0f('0x8')](),controller[_0x9d0f('0x12')]);module[_0x9d0f('0x13')]=router;
\ No newline at end of file
+var _0x7fbf=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','index','/describe','isAuthenticated','describe','post','create','put','update','delete','/:id','destroy','exports'];(function(_0x4c3ffe,_0x457374){var _0x28d3eb=function(_0x3ae2a3){while(--_0x3ae2a3){_0x4c3ffe['push'](_0x4c3ffe['shift']());}};_0x28d3eb(++_0x457374);}(_0x7fbf,0x19e));var _0xf7fb=function(_0x2b6993,_0x44b8e0){_0x2b6993=_0x2b6993-0x0;var _0x2fdcc3=_0x7fbf[_0x2b6993];return _0x2fdcc3;};'use strict';var multer=require(_0xf7fb('0x0'));var util=require(_0xf7fb('0x1'));var path=require(_0xf7fb('0x2'));var timeout=require(_0xf7fb('0x3'));var express=require(_0xf7fb('0x4'));var router=express['Router']();var fs_extra=require(_0xf7fb('0x5'));var auth=require(_0xf7fb('0x6'));var interaction=require(_0xf7fb('0x7'));var config=require(_0xf7fb('0x8'));var controller=require(_0xf7fb('0x9'));router[_0xf7fb('0xa')]('/',auth['isAuthenticated'](),controller[_0xf7fb('0xb')]);router[_0xf7fb('0xa')](_0xf7fb('0xc'),auth[_0xf7fb('0xd')](),controller[_0xf7fb('0xe')]);router[_0xf7fb('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xf7fb('0xf')]('/',auth[_0xf7fb('0xd')](),controller[_0xf7fb('0x10')]);router[_0xf7fb('0x11')]('/:id',auth[_0xf7fb('0xd')](),controller[_0xf7fb('0x12')]);router[_0xf7fb('0x13')](_0xf7fb('0x14'),auth[_0xf7fb('0xd')](),controller[_0xf7fb('0x15')]);module[_0xf7fb('0x16')]=router;
\ No newline at end of file
index e2bb991..892a34b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4caf=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','/:id','show','getConfigurations','/:id/fields','getFields','create','/:id/configurations','addConfiguration','put','update','delete','destroy','exports'];(function(_0x562914,_0x5d1db2){var _0x5306ec=function(_0x3a7e87){while(--_0x3a7e87){_0x562914['push'](_0x562914['shift']());}};_0x5306ec(++_0x5d1db2);}(_0x4caf,0x12b));var _0xf4ca=function(_0x33d331,_0x579ad4){_0x33d331=_0x33d331-0x0;var _0x2f6409=_0x4caf[_0x33d331];return _0x2f6409;};'use strict';var multer=require(_0xf4ca('0x0'));var util=require('util');var path=require(_0xf4ca('0x1'));var timeout=require(_0xf4ca('0x2'));var express=require(_0xf4ca('0x3'));var router=express['Router']();var fs_extra=require(_0xf4ca('0x4'));var auth=require(_0xf4ca('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf4ca('0x6'));var controller=require(_0xf4ca('0x7'));router[_0xf4ca('0x8')]('/',auth[_0xf4ca('0x9')](),controller['index']);router[_0xf4ca('0x8')](_0xf4ca('0xa'),auth[_0xf4ca('0x9')](),controller[_0xf4ca('0xb')]);router[_0xf4ca('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xf4ca('0xc')]);router[_0xf4ca('0x8')](_0xf4ca('0xd'),auth[_0xf4ca('0x9')](),controller[_0xf4ca('0xe')]);router['post']('/',auth[_0xf4ca('0x9')](),controller[_0xf4ca('0xf')]);router['post'](_0xf4ca('0x10'),auth['isAuthenticated'](),controller[_0xf4ca('0x11')]);router[_0xf4ca('0x12')]('/:id',auth[_0xf4ca('0x9')](),controller[_0xf4ca('0x13')]);router[_0xf4ca('0x14')](_0xf4ca('0xa'),auth[_0xf4ca('0x9')](),controller[_0xf4ca('0x15')]);module[_0xf4ca('0x16')]=router;
\ No newline at end of file
+var _0xf479=['post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields'];(function(_0x2162f6,_0x493e6f){var _0xb034ee=function(_0x46849e){while(--_0x46849e){_0x2162f6['push'](_0x2162f6['shift']());}};_0xb034ee(++_0x493e6f);}(_0xf479,0x142));var _0x9f47=function(_0x3f4923,_0x3d01c9){_0x3f4923=_0x3f4923-0x0;var _0x508b35=_0xf479[_0x3f4923];return _0x508b35;};'use strict';var multer=require(_0x9f47('0x0'));var util=require('util');var path=require(_0x9f47('0x1'));var timeout=require(_0x9f47('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9f47('0x3'));var auth=require(_0x9f47('0x4'));var interaction=require(_0x9f47('0x5'));var config=require('../../config/environment');var controller=require(_0x9f47('0x6'));router[_0x9f47('0x7')]('/',auth[_0x9f47('0x8')](),controller[_0x9f47('0x9')]);router[_0x9f47('0x7')](_0x9f47('0xa'),auth[_0x9f47('0x8')](),controller['show']);router[_0x9f47('0x7')](_0x9f47('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x9f47('0x7')](_0x9f47('0xc'),auth[_0x9f47('0x8')](),controller[_0x9f47('0xd')]);router[_0x9f47('0xe')]('/',auth[_0x9f47('0x8')](),controller[_0x9f47('0xf')]);router[_0x9f47('0xe')](_0x9f47('0xb'),auth[_0x9f47('0x8')](),controller['addConfiguration']);router[_0x9f47('0x10')](_0x9f47('0xa'),auth[_0x9f47('0x8')](),controller[_0x9f47('0x11')]);router[_0x9f47('0x12')](_0x9f47('0xa'),auth[_0x9f47('0x8')](),controller[_0x9f47('0x13')]);module[_0x9f47('0x14')]=router;
\ No newline at end of file
index 8d84313..45a22dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2196=['sequelize','exports','STRING','ENUM','basic','newTab','integrationTab'];(function(_0x1bceb8,_0x2dca04){var _0x47225a=function(_0x382697){while(--_0x382697){_0x1bceb8['push'](_0x1bceb8['shift']());}};_0x47225a(++_0x2dca04);}(_0x2196,0x173));var _0x6219=function(_0x374e30,_0x3809b0){_0x374e30=_0x374e30-0x0;var _0x141736=_0x2196[_0x374e30];return _0x141736;};'use strict';var Sequelize=require(_0x6219('0x0'));module[_0x6219('0x1')]={'name':{'type':Sequelize[_0x6219('0x2')]},'description':{'type':Sequelize[_0x6219('0x2')]},'username':{'type':Sequelize[_0x6219('0x2')]},'remoteUri':{'type':Sequelize[_0x6219('0x2')]},'authType':{'type':Sequelize[_0x6219('0x3')](_0x6219('0x4')),'defaultValue':_0x6219('0x4')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x6219('0x2')]},'tokenSecret':{'type':Sequelize[_0x6219('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6219('0x3')]('integrationTab',_0x6219('0x5')),'defaultValue':_0x6219('0x6')}};
\ No newline at end of file
+var _0xebc7=['STRING','basic','ENUM','newTab','sequelize'];(function(_0x5c1e0d,_0x31d16b){var _0x3223ca=function(_0x3ef6f3){while(--_0x3ef6f3){_0x5c1e0d['push'](_0x5c1e0d['shift']());}};_0x3223ca(++_0x31d16b);}(_0xebc7,0x72));var _0x7ebc=function(_0x5b9821,_0x3cb315){_0x5b9821=_0x5b9821-0x0;var _0x2f9ace=_0xebc7[_0x5b9821];return _0x2f9ace;};'use strict';var Sequelize=require(_0x7ebc('0x0'));module['exports']={'name':{'type':Sequelize[_0x7ebc('0x1')]},'description':{'type':Sequelize[_0x7ebc('0x1')]},'username':{'type':Sequelize[_0x7ebc('0x1')]},'remoteUri':{'type':Sequelize[_0x7ebc('0x1')]},'authType':{'type':Sequelize['ENUM']('basic'),'defaultValue':_0x7ebc('0x2')},'password':{'type':Sequelize[_0x7ebc('0x1')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x7ebc('0x1')]},'token':{'type':Sequelize[_0x7ebc('0x1')]},'tokenSecret':{'type':Sequelize[_0x7ebc('0x1')]},'serverUrl':{'type':Sequelize[_0x7ebc('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7ebc('0x3')]('integrationTab',_0x7ebc('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 4200f48..3b24b0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffc=['getFields','Wrong\x20credentials','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','then','includeAll','include','DeskAccount','findAll','catch','show','params','length','create','body','find','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','channel','getDescriptions','DeskField','Descriptions','priority','remoteUri','authType','consumerKey','consumerSecret','tokenSecret','GET','application/json','basic','headers','Authorization','format','Basic\x20%s','username','password','toString','base64','concat','_embedded','entries','active','test','statusCode','getFields,\x20%s,\x20%s,\x20%s'];(function(_0xc94e54,_0x3366b8){var _0x34890f=function(_0x50585c){while(--_0x50585c){_0xc94e54['push'](_0xc94e54['shift']());}};_0x34890f(++_0x3366b8);}(_0x9ffc,0x69));var _0xc9ff=function(_0x4e0eb6,_0x240784){_0x4e0eb6=_0x4e0eb6-0x0;var _0x46e432=_0x9ffc[_0x4e0eb6];return _0x46e432;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc9ff('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc9ff('0x1'));var BPromise=require(_0xc9ff('0x2'));var Mustache=require(_0xc9ff('0x3'));var util=require(_0xc9ff('0x4'));var path=require(_0xc9ff('0x5'));var sox=require('sox');var csv=require(_0xc9ff('0x6'));var ejs=require(_0xc9ff('0x7'));var fs=require('fs');var fs_extra=require(_0xc9ff('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc9ff('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc9ff('0xa'));var Redis=require('ioredis');var authService=require(_0xc9ff('0xb'));var qs=require(_0xc9ff('0xc'));var as=require(_0xc9ff('0xd'));var hardwareService=require(_0xc9ff('0xe'));var logger=require('../../config/logger')(_0xc9ff('0xf'));var utils=require(_0xc9ff('0x10'));var config=require(_0xc9ff('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xc9ff('0x12'))['db'];var integrations=require(_0xc9ff('0x13'));function respondWithStatusCode(_0x38efd3,_0x25d53b){_0x25d53b=_0x25d53b||0xcc;return function(_0x478501){if(_0x478501){return _0x38efd3['sendStatus'](_0x25d53b);}return _0x38efd3['status'](_0x25d53b)[_0xc9ff('0x14')]();};}function respondWithResult(_0x3a1eab,_0x32e716){_0x32e716=_0x32e716||0xc8;return function(_0x14453f){if(_0x14453f){return _0x3a1eab[_0xc9ff('0x15')](_0x32e716)[_0xc9ff('0x16')](_0x14453f);}};}function respondWithFilteredResult(_0x193c63,_0x11291f){return function(_0x2c7b87){if(_0x2c7b87){var _0x31ae46=typeof _0x11291f[_0xc9ff('0x17')]==='undefined'&&typeof _0x11291f[_0xc9ff('0x18')]===_0xc9ff('0x19');var _0x1e8e41=_0x2c7b87[_0xc9ff('0x1a')];var _0xd6cfa4=_0x31ae46?0x0:_0x11291f['offset'];var _0x31c367=_0x31ae46?_0x2c7b87[_0xc9ff('0x1a')]:_0x11291f[_0xc9ff('0x17')]+_0x11291f[_0xc9ff('0x18')];var _0x43edea;if(_0x31c367>=_0x1e8e41){_0x31c367=_0x1e8e41;_0x43edea=0xc8;}else{_0x43edea=0xce;}_0x193c63[_0xc9ff('0x15')](_0x43edea);return _0x193c63['set'](_0xc9ff('0x1b'),_0xd6cfa4+'-'+_0x31c367+'/'+_0x1e8e41)[_0xc9ff('0x16')](_0x2c7b87);}return null;};}function patchUpdates(_0x50be1e){return function(_0x1d963d){try{jsonpatch['apply'](_0x1d963d,_0x50be1e,!![]);}catch(_0x42081c){return BPromise[_0xc9ff('0x1c')](_0x42081c);}return _0x1d963d[_0xc9ff('0x1d')]();};}function saveUpdates(_0x5edc48,_0x5138c9){return function(_0x7d0ed6){if(_0x7d0ed6){return _0x7d0ed6[_0xc9ff('0x1e')](_0x5edc48)['then'](function(_0x2e7ab3){return _0x2e7ab3;});}return null;};}function removeEntity(_0xd49cbe,_0x2a8f0b){return function(_0x148fad){if(_0x148fad){return _0x148fad[_0xc9ff('0x1f')]()['then'](function(){_0xd49cbe['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x35679a,_0x293ac1){return function(_0x339b2d){if(!_0x339b2d){_0x35679a['sendStatus'](0x194);}return _0x339b2d;};}function handleError(_0x3a2e88,_0x500284){_0x500284=_0x500284||0x1f4;return function(_0x5e23ed){logger[_0xc9ff('0x20')](_0x5e23ed[_0xc9ff('0x21')]);if(_0x5e23ed[_0xc9ff('0x22')]){delete _0x5e23ed['name'];}_0x3a2e88['status'](_0x500284)[_0xc9ff('0x23')](_0x5e23ed);};}exports['index']=function(_0x262ac7,_0x3b1756){var _0x4ae027={},_0x336341={},_0x3e0454={'count':0x0,'rows':[]};var _0x46b589=_[_0xc9ff('0x24')](db['DeskAccount'][_0xc9ff('0x25')],function(_0x3ce3c){return{'name':_0x3ce3c[_0xc9ff('0x26')],'type':_0x3ce3c[_0xc9ff('0x27')]['key']};});_0x336341[_0xc9ff('0x28')]=_[_0xc9ff('0x24')](_0x46b589,_0xc9ff('0x22'));_0x336341[_0xc9ff('0x29')]=_[_0xc9ff('0x2a')](_0x262ac7[_0xc9ff('0x29')]);_0x336341['filters']=_[_0xc9ff('0x2b')](_0x336341[_0xc9ff('0x28')],_0x336341[_0xc9ff('0x29')]);_0x4ae027[_0xc9ff('0x2c')]=_[_0xc9ff('0x2b')](_0x336341[_0xc9ff('0x28')],qs[_0xc9ff('0x2d')](_0x262ac7[_0xc9ff('0x29')][_0xc9ff('0x2d')]));_0x4ae027[_0xc9ff('0x2c')]=_0x4ae027['attributes']['length']?_0x4ae027[_0xc9ff('0x2c')]:_0x336341[_0xc9ff('0x28')];if(!_0x262ac7['query'][_0xc9ff('0x2e')](_0xc9ff('0x2f'))){_0x4ae027[_0xc9ff('0x18')]=qs[_0xc9ff('0x18')](_0x262ac7['query'][_0xc9ff('0x18')]);_0x4ae027[_0xc9ff('0x17')]=qs[_0xc9ff('0x17')](_0x262ac7[_0xc9ff('0x29')]['offset']);}_0x4ae027[_0xc9ff('0x30')]=qs[_0xc9ff('0x31')](_0x262ac7['query'][_0xc9ff('0x31')]);_0x4ae027[_0xc9ff('0x32')]=qs[_0xc9ff('0x33')](_[_0xc9ff('0x34')](_0x262ac7[_0xc9ff('0x29')],_0x336341[_0xc9ff('0x33')]),_0x46b589);if(_0x262ac7[_0xc9ff('0x29')][_0xc9ff('0x35')]){_0x4ae027[_0xc9ff('0x32')]=_[_0xc9ff('0x36')](_0x4ae027[_0xc9ff('0x32')],{'$or':_['map'](_0x46b589,function(_0x41cc81){if(_0x41cc81[_0xc9ff('0x27')]!=='VIRTUAL'){var _0x43ee4a={};_0x43ee4a[_0x41cc81[_0xc9ff('0x22')]]={'$like':'%'+_0x262ac7[_0xc9ff('0x29')]['filter']+'%'};return _0x43ee4a;}})});}_0x4ae027=_['merge']({},_0x4ae027,_0x262ac7[_0xc9ff('0x37')]);var _0x41cd3f={'where':_0x4ae027[_0xc9ff('0x32')]};return db['DeskAccount'][_0xc9ff('0x1a')](_0x41cd3f)[_0xc9ff('0x38')](function(_0x34deb5){_0x3e0454[_0xc9ff('0x1a')]=_0x34deb5;if(_0x262ac7[_0xc9ff('0x29')][_0xc9ff('0x39')]){_0x4ae027[_0xc9ff('0x3a')]=[{'all':!![]}];}return db[_0xc9ff('0x3b')][_0xc9ff('0x3c')](_0x4ae027);})[_0xc9ff('0x38')](function(_0x157e67){_0x3e0454['rows']=_0x157e67;return _0x3e0454;})[_0xc9ff('0x38')](respondWithFilteredResult(_0x3b1756,_0x4ae027))[_0xc9ff('0x3d')](handleError(_0x3b1756,null));};exports[_0xc9ff('0x3e')]=function(_0x26f5e8,_0x5b0c63){var _0x4a021c={'raw':![],'where':{'id':_0x26f5e8[_0xc9ff('0x3f')]['id']}},_0x5dc6c7={};_0x5dc6c7[_0xc9ff('0x28')]=_[_0xc9ff('0x2a')](db['DeskAccount']['rawAttributes']);_0x5dc6c7[_0xc9ff('0x29')]=_[_0xc9ff('0x2a')](_0x26f5e8[_0xc9ff('0x29')]);_0x5dc6c7[_0xc9ff('0x33')]=_[_0xc9ff('0x2b')](_0x5dc6c7[_0xc9ff('0x28')],_0x5dc6c7[_0xc9ff('0x29')]);_0x4a021c[_0xc9ff('0x2c')]=_['intersection'](_0x5dc6c7[_0xc9ff('0x28')],qs[_0xc9ff('0x2d')](_0x26f5e8[_0xc9ff('0x29')][_0xc9ff('0x2d')]));_0x4a021c[_0xc9ff('0x2c')]=_0x4a021c['attributes'][_0xc9ff('0x40')]?_0x4a021c[_0xc9ff('0x2c')]:_0x5dc6c7[_0xc9ff('0x28')];if(_0x26f5e8[_0xc9ff('0x29')][_0xc9ff('0x39')]){_0x4a021c[_0xc9ff('0x3a')]=[{'all':!![]}];}_0x4a021c=_[_0xc9ff('0x36')]({},_0x4a021c,_0x26f5e8[_0xc9ff('0x37')]);return db[_0xc9ff('0x3b')]['find'](_0x4a021c)[_0xc9ff('0x38')](handleEntityNotFound(_0x5b0c63,null))[_0xc9ff('0x38')](respondWithResult(_0x5b0c63,null))['catch'](handleError(_0x5b0c63,null));};exports[_0xc9ff('0x41')]=function(_0x1e0436,_0x2fc454){return db[_0xc9ff('0x3b')]['create'](_0x1e0436['body'],{})[_0xc9ff('0x38')](respondWithResult(_0x2fc454,0xc9))[_0xc9ff('0x3d')](handleError(_0x2fc454,null));};exports['update']=function(_0x54d19f,_0x186084){if(_0x54d19f[_0xc9ff('0x42')]['id']){delete _0x54d19f['body']['id'];}return db[_0xc9ff('0x3b')][_0xc9ff('0x43')]({'where':{'id':_0x54d19f[_0xc9ff('0x3f')]['id']}})[_0xc9ff('0x38')](handleEntityNotFound(_0x186084,null))['then'](saveUpdates(_0x54d19f[_0xc9ff('0x42')],null))[_0xc9ff('0x38')](respondWithResult(_0x186084,null))['catch'](handleError(_0x186084,null));};exports['destroy']=function(_0x4ab11c,_0x5514ad){return db[_0xc9ff('0x3b')][_0xc9ff('0x43')]({'where':{'id':_0x4ab11c['params']['id']}})[_0xc9ff('0x38')](handleEntityNotFound(_0x5514ad,null))[_0xc9ff('0x38')](removeEntity(_0x5514ad,null))[_0xc9ff('0x3d')](handleError(_0x5514ad,null));};exports[_0xc9ff('0x44')]=function(_0x1b33e3,_0x4044ff,_0x185c88){var _0x2cc25b={};var _0x3fd3ba={};var _0x26db47;var _0xd0b503;return db['DeskAccount'][_0xc9ff('0x45')]({'where':{'id':_0x1b33e3['params']['id']}})[_0xc9ff('0x38')](handleEntityNotFound(_0x4044ff,null))[_0xc9ff('0x38')](function(_0x179a19){if(_0x179a19){_0x26db47=_0x179a19;_0x3fd3ba[_0xc9ff('0x28')]=_['keys'](db[_0xc9ff('0x46')][_0xc9ff('0x25')]);_0x3fd3ba[_0xc9ff('0x29')]=_[_0xc9ff('0x2a')](_0x1b33e3[_0xc9ff('0x29')]);_0x3fd3ba[_0xc9ff('0x33')]=_[_0xc9ff('0x2b')](_0x3fd3ba[_0xc9ff('0x28')],_0x3fd3ba['query']);_0x2cc25b['attributes']=_[_0xc9ff('0x2b')](_0x3fd3ba['model'],qs['fields'](_0x1b33e3[_0xc9ff('0x29')]['fields']));_0x2cc25b[_0xc9ff('0x2c')]=_0x2cc25b['attributes'][_0xc9ff('0x40')]?_0x2cc25b[_0xc9ff('0x2c')]:_0x3fd3ba['model'];_0x2cc25b[_0xc9ff('0x30')]=qs[_0xc9ff('0x31')](_0x1b33e3[_0xc9ff('0x29')]['sort']);_0x2cc25b[_0xc9ff('0x32')]=qs[_0xc9ff('0x33')](_[_0xc9ff('0x34')](_0x1b33e3[_0xc9ff('0x29')],_0x3fd3ba[_0xc9ff('0x33')]));if(_0x1b33e3[_0xc9ff('0x29')][_0xc9ff('0x35')]){_0x2cc25b[_0xc9ff('0x32')]=_[_0xc9ff('0x36')](_0x2cc25b[_0xc9ff('0x32')],{'$or':_['map'](_0x2cc25b[_0xc9ff('0x2c')],function(_0x4fa5b9){var _0x3dcc51={};_0x3dcc51[_0x4fa5b9]={'$like':'%'+_0x1b33e3['query'][_0xc9ff('0x35')]+'%'};return _0x3dcc51;})});}_0x2cc25b=_[_0xc9ff('0x36')]({},_0x2cc25b,_0x1b33e3[_0xc9ff('0x37')]);return _0x26db47['getConfigurations'](_0x2cc25b);}})[_0xc9ff('0x38')](function(_0xc9b87b){if(_0xc9b87b){_0xd0b503=_0xc9b87b['length'];if(!_0x1b33e3[_0xc9ff('0x29')][_0xc9ff('0x2e')](_0xc9ff('0x2f'))){_0x2cc25b[_0xc9ff('0x18')]=qs[_0xc9ff('0x18')](_0x1b33e3[_0xc9ff('0x29')][_0xc9ff('0x18')]);_0x2cc25b['offset']=qs['offset'](_0x1b33e3[_0xc9ff('0x29')][_0xc9ff('0x17')]);}return _0x26db47[_0xc9ff('0x44')](_0x2cc25b);}})[_0xc9ff('0x38')](function(_0x2dc38c){if(_0x2dc38c){return _0x2dc38c?{'count':_0xd0b503,'rows':_0x2dc38c}:null;}})['then'](respondWithResult(_0x4044ff,null))[_0xc9ff('0x3d')](handleError(_0x4044ff,null));};exports[_0xc9ff('0x47')]=function(_0x30728e,_0xc0a2f0,_0x1c117c){if(_0x30728e[_0xc9ff('0x42')]['id']){delete _0x30728e[_0xc9ff('0x42')]['id'];}return db[_0xc9ff('0x3b')][_0xc9ff('0x45')]({'where':{'id':_0x30728e[_0xc9ff('0x3f')]['id']}})[_0xc9ff('0x38')](handleEntityNotFound(_0xc0a2f0,null))[_0xc9ff('0x38')](function(_0x905971){if(_0x905971){_0x30728e[_0xc9ff('0x42')][_0xc9ff('0x48')]=_0x905971['id'];_0x30728e[_0xc9ff('0x42')]['Subjects']=integrations['getSubjects'](_0x30728e[_0xc9ff('0x42')][_0xc9ff('0x49')],_0x30728e[_0xc9ff('0x42')][_0xc9ff('0x27')]);_0x30728e[_0xc9ff('0x42')]['Descriptions']=integrations[_0xc9ff('0x4a')](_0x30728e[_0xc9ff('0x42')]['channel'],_0x30728e[_0xc9ff('0x42')][_0xc9ff('0x27')]);return db[_0xc9ff('0x46')][_0xc9ff('0x41')](_0x30728e['body'],{'include':[{'model':db[_0xc9ff('0x4b')],'as':'Subjects'},{'model':db[_0xc9ff('0x4b')],'as':_0xc9ff('0x4c')}]});}return null;})[_0xc9ff('0x38')](respondWithResult(_0xc0a2f0,null))['catch'](handleError(_0xc0a2f0,null));};exports['getFields']=function(_0x392505,_0x5e970b,_0x27a4d8){var _0x4bd837=[{'name':_0xc9ff('0x4d'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x3675ed='';return db['DeskAccount']['findOne']({'where':{'id':_0x392505['params']['id']},'attributes':['id',_0xc9ff('0x4e'),_0xc9ff('0x4f'),'username','password',_0xc9ff('0x50'),_0xc9ff('0x51'),'token',_0xc9ff('0x52')]})['then'](handleEntityNotFound(_0x5e970b,null))[_0xc9ff('0x38')](function(_0x457abd){if(_0x457abd){_0x3675ed=_0x457abd[_0xc9ff('0x4e')];var _0x2141db=_0x3675ed['slice'](-0x1);if(_0x2141db==='/'){_0x3675ed=_0x3675ed['substring'](0x0,_0x3675ed['lastIndexOf'](_0x2141db));}var _0x1b5460={'method':_0xc9ff('0x53'),'uri':util['format']('%s/custom_fields',_0x3675ed),'headers':{'Content-Type':_0xc9ff('0x54'),'Accept':_0xc9ff('0x54')},'json':!![]};if(_0x457abd[_0xc9ff('0x4f')]===_0xc9ff('0x55')){_0x1b5460[_0xc9ff('0x56')][_0xc9ff('0x57')]=util[_0xc9ff('0x58')](_0xc9ff('0x59'),new Buffer(util['format']('%s:%s',_0x457abd[_0xc9ff('0x5a')],_0x457abd[_0xc9ff('0x5b')]))[_0xc9ff('0x5c')](_0xc9ff('0x5d')));}return rp(_0x1b5460)[_0xc9ff('0x38')](function(_0x344a6d){return _0x4bd837[_0xc9ff('0x5e')](_[_0xc9ff('0x24')](_0x344a6d[_0xc9ff('0x5f')][_0xc9ff('0x60')],function(_0x54813f){return{'id':_0x54813f[_0xc9ff('0x22')],'name':_0x54813f[_0xc9ff('0x22')],'type':_0x54813f[_0xc9ff('0x27')],'active':_0x54813f[_0xc9ff('0x61')],'label':_0x54813f['label'],'custom':!![]};}));});}})[_0xc9ff('0x38')](function(_0x1b0a0b){return{'count':_0x1b0a0b[_0xc9ff('0x40')],'rows':_0x1b0a0b};})[_0xc9ff('0x38')](respondWithResult(_0x5e970b,null))['catch'](function(_0x3e1ff5){var _0x49ad40=_0x392505[_0xc9ff('0x29')][_0xc9ff('0x62')]?0x1f4:_0x3e1ff5[_0xc9ff('0x63')]||0x1f4;logger['error'](_0xc9ff('0x64'),_0xc9ff('0x65'),_0x49ad40,JSON['stringify'](_0x3e1ff5));delete _0x3e1ff5[_0xc9ff('0x22')];if(_0x49ad40===0x191){_0x49ad40=0x190;}_0x5e970b[_0xc9ff('0x15')](_0x49ad40)[_0xc9ff('0x23')](_0x392505[_0xc9ff('0x29')]['test']?{'message':_0xc9ff('0x66'),'statusCode':_0x3e1ff5[_0xc9ff('0x63')]}:_0x3e1ff5);});};
\ No newline at end of file
+var _0xbcfa=['undefined','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','DeskAccount','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','show','params','include','find','catch','create','body','update','getConfigurations','findOne','rawAttributes','order','pick','AccountId','Subjects','channel','type','getDescriptions','DeskConfiguration','DeskField','Descriptions','getFields','priority','remoteUri','username','password','consumerKey','consumerSecret','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','Basic\x20%s','%s:%s','toString','base64','concat','entries','active','test','statusCode','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json'];(function(_0x46e523,_0xe6fccb){var _0x5da0ee=function(_0x396682){while(--_0x396682){_0x46e523['push'](_0x46e523['shift']());}};_0x5da0ee(++_0xe6fccb);}(_0xbcfa,0xcd));var _0xabcf=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xbcfa[_0x36ed48];return _0x51c63a;};'use strict';var emlformat=require(_0xabcf('0x0'));var rimraf=require(_0xabcf('0x1'));var zipdir=require(_0xabcf('0x2'));var jsonpatch=require(_0xabcf('0x3'));var rp=require(_0xabcf('0x4'));var moment=require(_0xabcf('0x5'));var BPromise=require(_0xabcf('0x6'));var Mustache=require(_0xabcf('0x7'));var util=require(_0xabcf('0x8'));var path=require('path');var sox=require(_0xabcf('0x9'));var csv=require(_0xabcf('0xa'));var ejs=require(_0xabcf('0xb'));var fs=require('fs');var fs_extra=require(_0xabcf('0xc'));var _=require(_0xabcf('0xd'));var squel=require(_0xabcf('0xe'));var crypto=require('crypto');var jsforce=require(_0xabcf('0xf'));var deskjs=require(_0xabcf('0x10'));var toCsv=require('to-csv');var querystring=require(_0xabcf('0x11'));var Papa=require(_0xabcf('0x12'));var Redis=require('ioredis');var authService=require(_0xabcf('0x13'));var qs=require(_0xabcf('0x14'));var as=require(_0xabcf('0x15'));var hardwareService=require(_0xabcf('0x16'));var logger=require(_0xabcf('0x17'))(_0xabcf('0x18'));var utils=require('../../config/utils');var config=require(_0xabcf('0x19'));var licenseUtil=require(_0xabcf('0x1a'));var db=require(_0xabcf('0x1b'))['db'];var integrations=require(_0xabcf('0x1c'));function respondWithStatusCode(_0x324b33,_0x550b10){_0x550b10=_0x550b10||0xcc;return function(_0x4d5ca2){if(_0x4d5ca2){return _0x324b33[_0xabcf('0x1d')](_0x550b10);}return _0x324b33['status'](_0x550b10)[_0xabcf('0x1e')]();};}function respondWithResult(_0x368101,_0x4c3490){_0x4c3490=_0x4c3490||0xc8;return function(_0x16c04c){if(_0x16c04c){return _0x368101[_0xabcf('0x1f')](_0x4c3490)[_0xabcf('0x20')](_0x16c04c);}};}function respondWithFilteredResult(_0x3fcf94,_0xedcc6e){return function(_0x53181a){if(_0x53181a){var _0x55f0=typeof _0xedcc6e['offset']===_0xabcf('0x21')&&typeof _0xedcc6e['limit']==='undefined';var _0x4a7429=_0x53181a['count'];var _0x28df0b=_0x55f0?0x0:_0xedcc6e[_0xabcf('0x22')];var _0x34c2b2=_0x55f0?_0x53181a['count']:_0xedcc6e[_0xabcf('0x22')]+_0xedcc6e[_0xabcf('0x23')];var _0x8ad243;if(_0x34c2b2>=_0x4a7429){_0x34c2b2=_0x4a7429;_0x8ad243=0xc8;}else{_0x8ad243=0xce;}_0x3fcf94[_0xabcf('0x1f')](_0x8ad243);return _0x3fcf94[_0xabcf('0x24')](_0xabcf('0x25'),_0x28df0b+'-'+_0x34c2b2+'/'+_0x4a7429)[_0xabcf('0x20')](_0x53181a);}return null;};}function patchUpdates(_0x199fe0){return function(_0x27c0a7){try{jsonpatch[_0xabcf('0x26')](_0x27c0a7,_0x199fe0,!![]);}catch(_0x367106){return BPromise[_0xabcf('0x27')](_0x367106);}return _0x27c0a7[_0xabcf('0x28')]();};}function saveUpdates(_0x507775,_0x157e3b){return function(_0xa2971b){if(_0xa2971b){return _0xa2971b['update'](_0x507775)[_0xabcf('0x29')](function(_0x1c8ac9){return _0x1c8ac9;});}return null;};}function removeEntity(_0x19fbc2,_0x25a0ee){return function(_0x44283e){if(_0x44283e){return _0x44283e[_0xabcf('0x2a')]()['then'](function(){_0x19fbc2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x573f45,_0x425e73){return function(_0x5ecb84){if(!_0x5ecb84){_0x573f45[_0xabcf('0x1d')](0x194);}return _0x5ecb84;};}function handleError(_0x316657,_0x102b69){_0x102b69=_0x102b69||0x1f4;return function(_0xf4e683){logger[_0xabcf('0x2b')](_0xf4e683['stack']);if(_0xf4e683[_0xabcf('0x2c')]){delete _0xf4e683[_0xabcf('0x2c')];}_0x316657[_0xabcf('0x1f')](_0x102b69)[_0xabcf('0x2d')](_0xf4e683);};}exports[_0xabcf('0x2e')]=function(_0x4148c3,_0x5d7369){var _0x361810={},_0x4611cd={},_0x5280c1={'count':0x0,'rows':[]};var _0x1e9241=_[_0xabcf('0x2f')](db[_0xabcf('0x30')]['rawAttributes'],function(_0x557bea){return{'name':_0x557bea[_0xabcf('0x31')],'type':_0x557bea['type'][_0xabcf('0x32')]};});_0x4611cd['model']=_[_0xabcf('0x2f')](_0x1e9241,_0xabcf('0x2c'));_0x4611cd[_0xabcf('0x33')]=_[_0xabcf('0x34')](_0x4148c3[_0xabcf('0x33')]);_0x4611cd[_0xabcf('0x35')]=_[_0xabcf('0x36')](_0x4611cd[_0xabcf('0x37')],_0x4611cd[_0xabcf('0x33')]);_0x361810[_0xabcf('0x38')]=_['intersection'](_0x4611cd[_0xabcf('0x37')],qs[_0xabcf('0x39')](_0x4148c3[_0xabcf('0x33')][_0xabcf('0x39')]));_0x361810[_0xabcf('0x38')]=_0x361810[_0xabcf('0x38')][_0xabcf('0x3a')]?_0x361810[_0xabcf('0x38')]:_0x4611cd['model'];if(!_0x4148c3['query'][_0xabcf('0x3b')](_0xabcf('0x3c'))){_0x361810[_0xabcf('0x23')]=qs[_0xabcf('0x23')](_0x4148c3['query'][_0xabcf('0x23')]);_0x361810[_0xabcf('0x22')]=qs[_0xabcf('0x22')](_0x4148c3[_0xabcf('0x33')]['offset']);}_0x361810['order']=qs['sort'](_0x4148c3['query'][_0xabcf('0x3d')]);_0x361810[_0xabcf('0x3e')]=qs['filters'](_['pick'](_0x4148c3['query'],_0x4611cd[_0xabcf('0x35')]),_0x1e9241);if(_0x4148c3[_0xabcf('0x33')][_0xabcf('0x3f')]){_0x361810[_0xabcf('0x3e')]=_[_0xabcf('0x40')](_0x361810[_0xabcf('0x3e')],{'$or':_[_0xabcf('0x2f')](_0x1e9241,function(_0x5e85fb){if(_0x5e85fb['type']!==_0xabcf('0x41')){var _0x5d8d74={};_0x5d8d74[_0x5e85fb['name']]={'$like':'%'+_0x4148c3[_0xabcf('0x33')]['filter']+'%'};return _0x5d8d74;}})});}_0x361810=_['merge']({},_0x361810,_0x4148c3[_0xabcf('0x42')]);var _0x34e607={'where':_0x361810[_0xabcf('0x3e')]};return db[_0xabcf('0x30')][_0xabcf('0x43')](_0x34e607)[_0xabcf('0x29')](function(_0x4c641b){_0x5280c1[_0xabcf('0x43')]=_0x4c641b;if(_0x4148c3[_0xabcf('0x33')][_0xabcf('0x44')]){_0x361810['include']=[{'all':!![]}];}return db[_0xabcf('0x30')][_0xabcf('0x45')](_0x361810);})[_0xabcf('0x29')](function(_0x3a1552){_0x5280c1[_0xabcf('0x46')]=_0x3a1552;return _0x5280c1;})[_0xabcf('0x29')](respondWithFilteredResult(_0x5d7369,_0x361810))['catch'](handleError(_0x5d7369,null));};exports[_0xabcf('0x47')]=function(_0x4939ac,_0x5b02ea){var _0xd580e1={'raw':![],'where':{'id':_0x4939ac[_0xabcf('0x48')]['id']}},_0x39d40a={};_0x39d40a[_0xabcf('0x37')]=_[_0xabcf('0x34')](db[_0xabcf('0x30')]['rawAttributes']);_0x39d40a[_0xabcf('0x33')]=_[_0xabcf('0x34')](_0x4939ac[_0xabcf('0x33')]);_0x39d40a[_0xabcf('0x35')]=_['intersection'](_0x39d40a['model'],_0x39d40a[_0xabcf('0x33')]);_0xd580e1[_0xabcf('0x38')]=_[_0xabcf('0x36')](_0x39d40a[_0xabcf('0x37')],qs[_0xabcf('0x39')](_0x4939ac[_0xabcf('0x33')][_0xabcf('0x39')]));_0xd580e1[_0xabcf('0x38')]=_0xd580e1[_0xabcf('0x38')][_0xabcf('0x3a')]?_0xd580e1[_0xabcf('0x38')]:_0x39d40a[_0xabcf('0x37')];if(_0x4939ac[_0xabcf('0x33')]['includeAll']){_0xd580e1[_0xabcf('0x49')]=[{'all':!![]}];}_0xd580e1=_[_0xabcf('0x40')]({},_0xd580e1,_0x4939ac[_0xabcf('0x42')]);return db[_0xabcf('0x30')][_0xabcf('0x4a')](_0xd580e1)['then'](handleEntityNotFound(_0x5b02ea,null))[_0xabcf('0x29')](respondWithResult(_0x5b02ea,null))[_0xabcf('0x4b')](handleError(_0x5b02ea,null));};exports[_0xabcf('0x4c')]=function(_0x16ce15,_0x2b0a47){return db[_0xabcf('0x30')][_0xabcf('0x4c')](_0x16ce15[_0xabcf('0x4d')],{})[_0xabcf('0x29')](respondWithResult(_0x2b0a47,0xc9))[_0xabcf('0x4b')](handleError(_0x2b0a47,null));};exports[_0xabcf('0x4e')]=function(_0x26e787,_0x4d29b1){if(_0x26e787[_0xabcf('0x4d')]['id']){delete _0x26e787[_0xabcf('0x4d')]['id'];}return db[_0xabcf('0x30')][_0xabcf('0x4a')]({'where':{'id':_0x26e787[_0xabcf('0x48')]['id']}})[_0xabcf('0x29')](handleEntityNotFound(_0x4d29b1,null))[_0xabcf('0x29')](saveUpdates(_0x26e787['body'],null))['then'](respondWithResult(_0x4d29b1,null))['catch'](handleError(_0x4d29b1,null));};exports['destroy']=function(_0x28382c,_0x4a999c){return db[_0xabcf('0x30')]['find']({'where':{'id':_0x28382c[_0xabcf('0x48')]['id']}})[_0xabcf('0x29')](handleEntityNotFound(_0x4a999c,null))[_0xabcf('0x29')](removeEntity(_0x4a999c,null))['catch'](handleError(_0x4a999c,null));};exports[_0xabcf('0x4f')]=function(_0xb301c2,_0x239a3b,_0x278238){var _0xc1a155={};var _0x20eb0a={};var _0x1041e7;var _0x2c4450;return db[_0xabcf('0x30')][_0xabcf('0x50')]({'where':{'id':_0xb301c2[_0xabcf('0x48')]['id']}})[_0xabcf('0x29')](handleEntityNotFound(_0x239a3b,null))[_0xabcf('0x29')](function(_0xd1833d){if(_0xd1833d){_0x1041e7=_0xd1833d;_0x20eb0a[_0xabcf('0x37')]=_[_0xabcf('0x34')](db['DeskConfiguration'][_0xabcf('0x51')]);_0x20eb0a[_0xabcf('0x33')]=_[_0xabcf('0x34')](_0xb301c2[_0xabcf('0x33')]);_0x20eb0a[_0xabcf('0x35')]=_[_0xabcf('0x36')](_0x20eb0a[_0xabcf('0x37')],_0x20eb0a['query']);_0xc1a155[_0xabcf('0x38')]=_[_0xabcf('0x36')](_0x20eb0a[_0xabcf('0x37')],qs['fields'](_0xb301c2[_0xabcf('0x33')][_0xabcf('0x39')]));_0xc1a155[_0xabcf('0x38')]=_0xc1a155['attributes'][_0xabcf('0x3a')]?_0xc1a155[_0xabcf('0x38')]:_0x20eb0a['model'];_0xc1a155[_0xabcf('0x52')]=qs[_0xabcf('0x3d')](_0xb301c2['query'][_0xabcf('0x3d')]);_0xc1a155[_0xabcf('0x3e')]=qs[_0xabcf('0x35')](_[_0xabcf('0x53')](_0xb301c2[_0xabcf('0x33')],_0x20eb0a['filters']));if(_0xb301c2['query'][_0xabcf('0x3f')]){_0xc1a155[_0xabcf('0x3e')]=_[_0xabcf('0x40')](_0xc1a155[_0xabcf('0x3e')],{'$or':_['map'](_0xc1a155[_0xabcf('0x38')],function(_0x14480a){var _0x4a1b7b={};_0x4a1b7b[_0x14480a]={'$like':'%'+_0xb301c2[_0xabcf('0x33')][_0xabcf('0x3f')]+'%'};return _0x4a1b7b;})});}_0xc1a155=_[_0xabcf('0x40')]({},_0xc1a155,_0xb301c2[_0xabcf('0x42')]);return _0x1041e7['getConfigurations'](_0xc1a155);}})[_0xabcf('0x29')](function(_0x26068b){if(_0x26068b){_0x2c4450=_0x26068b['length'];if(!_0xb301c2[_0xabcf('0x33')]['hasOwnProperty'](_0xabcf('0x3c'))){_0xc1a155[_0xabcf('0x23')]=qs[_0xabcf('0x23')](_0xb301c2['query'][_0xabcf('0x23')]);_0xc1a155[_0xabcf('0x22')]=qs[_0xabcf('0x22')](_0xb301c2[_0xabcf('0x33')][_0xabcf('0x22')]);}return _0x1041e7['getConfigurations'](_0xc1a155);}})[_0xabcf('0x29')](function(_0xd24a53){if(_0xd24a53){return _0xd24a53?{'count':_0x2c4450,'rows':_0xd24a53}:null;}})[_0xabcf('0x29')](respondWithResult(_0x239a3b,null))[_0xabcf('0x4b')](handleError(_0x239a3b,null));};exports['addConfiguration']=function(_0x327edd,_0x3a6253,_0x27016d){if(_0x327edd[_0xabcf('0x4d')]['id']){delete _0x327edd['body']['id'];}return db['DeskAccount'][_0xabcf('0x50')]({'where':{'id':_0x327edd[_0xabcf('0x48')]['id']}})[_0xabcf('0x29')](handleEntityNotFound(_0x3a6253,null))['then'](function(_0x2c5643){if(_0x2c5643){_0x327edd[_0xabcf('0x4d')][_0xabcf('0x54')]=_0x2c5643['id'];_0x327edd[_0xabcf('0x4d')][_0xabcf('0x55')]=integrations['getSubjects'](_0x327edd[_0xabcf('0x4d')][_0xabcf('0x56')],_0x327edd[_0xabcf('0x4d')][_0xabcf('0x57')]);_0x327edd[_0xabcf('0x4d')]['Descriptions']=integrations[_0xabcf('0x58')](_0x327edd[_0xabcf('0x4d')]['channel'],_0x327edd['body'][_0xabcf('0x57')]);return db[_0xabcf('0x59')]['create'](_0x327edd['body'],{'include':[{'model':db[_0xabcf('0x5a')],'as':_0xabcf('0x55')},{'model':db[_0xabcf('0x5a')],'as':_0xabcf('0x5b')}]});}return null;})['then'](respondWithResult(_0x3a6253,null))[_0xabcf('0x4b')](handleError(_0x3a6253,null));};exports[_0xabcf('0x5c')]=function(_0x51ad6c,_0x5de735,_0x2c8369){var _0x466b19=[{'name':_0xabcf('0x5d'),'label':_0xabcf('0x5d'),'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 _0x9e6212='';return db[_0xabcf('0x30')][_0xabcf('0x50')]({'where':{'id':_0x51ad6c[_0xabcf('0x48')]['id']},'attributes':['id',_0xabcf('0x5e'),'authType',_0xabcf('0x5f'),_0xabcf('0x60'),_0xabcf('0x61'),_0xabcf('0x62'),'token',_0xabcf('0x63')]})[_0xabcf('0x29')](handleEntityNotFound(_0x5de735,null))['then'](function(_0x72a067){if(_0x72a067){_0x9e6212=_0x72a067[_0xabcf('0x5e')];var _0x46ce37=_0x9e6212[_0xabcf('0x64')](-0x1);if(_0x46ce37==='/'){_0x9e6212=_0x9e6212[_0xabcf('0x65')](0x0,_0x9e6212[_0xabcf('0x66')](_0x46ce37));}var _0x10c719={'method':_0xabcf('0x67'),'uri':util[_0xabcf('0x68')](_0xabcf('0x69'),_0x9e6212),'headers':{'Content-Type':_0xabcf('0x6a'),'Accept':'application/json'},'json':!![]};if(_0x72a067[_0xabcf('0x6b')]===_0xabcf('0x6c')){_0x10c719['headers']['Authorization']=util['format'](_0xabcf('0x6d'),new Buffer(util[_0xabcf('0x68')](_0xabcf('0x6e'),_0x72a067[_0xabcf('0x5f')],_0x72a067[_0xabcf('0x60')]))[_0xabcf('0x6f')](_0xabcf('0x70')));}return rp(_0x10c719)[_0xabcf('0x29')](function(_0x6acd4b){return _0x466b19[_0xabcf('0x71')](_[_0xabcf('0x2f')](_0x6acd4b['_embedded'][_0xabcf('0x72')],function(_0x421c96){return{'id':_0x421c96[_0xabcf('0x2c')],'name':_0x421c96[_0xabcf('0x2c')],'type':_0x421c96[_0xabcf('0x57')],'active':_0x421c96[_0xabcf('0x73')],'label':_0x421c96['label'],'custom':!![]};}));});}})[_0xabcf('0x29')](function(_0x3df2a8){return{'count':_0x3df2a8[_0xabcf('0x3a')],'rows':_0x3df2a8};})[_0xabcf('0x29')](respondWithResult(_0x5de735,null))['catch'](function(_0x2d21db){var _0x34cd65=_0x51ad6c['query'][_0xabcf('0x74')]?0x1f4:_0x2d21db[_0xabcf('0x75')]||0x1f4;logger[_0xabcf('0x2b')]('getFields,\x20%s,\x20%s,\x20%s',_0xabcf('0x5c'),_0x34cd65,JSON[_0xabcf('0x76')](_0x2d21db));delete _0x2d21db['name'];if(_0x34cd65===0x191){_0x34cd65=0x190;}_0x5de735[_0xabcf('0x1f')](_0x34cd65)['send'](_0x51ad6c[_0xabcf('0x33')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x2d21db['statusCode']}:_0x2d21db);});};
\ No newline at end of file
index cae0dbd..1a56cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72da=['moment','bluebird','path','../../components/integrations/configuration','exports','define','int_desk_accounts','util'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x72da,0x13f));var _0xa72d=function(_0x5c6994,_0x19ad9a){_0x5c6994=_0x5c6994-0x0;var _0x1d5c84=_0x72da[_0x5c6994];return _0x1d5c84;};'use strict';var _=require('lodash');var util=require(_0xa72d('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa72d('0x1'));var BPromise=require(_0xa72d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa72d('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xa72d('0x4'));module[_0xa72d('0x5')]=function(_0x302127,_0x1fed44){return _0x302127[_0xa72d('0x6')]('DeskAccount',attributes,{'tableName':_0xa72d('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x71e0=['bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','define','int_desk_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x71e0,0xdf));var _0x071e=function(_0x5ea91e,_0x2c2430){_0x5ea91e=_0x5ea91e-0x0;var _0x4adaa1=_0x71e0[_0x5ea91e];return _0x4adaa1;};'use strict';var _=require(_0x071e('0x0'));var util=require(_0x071e('0x1'));var logger=require(_0x071e('0x2'))(_0x071e('0x3'));var moment=require(_0x071e('0x4'));var BPromise=require(_0x071e('0x5'));var rp=require(_0x071e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x071e('0x7'));var config=require(_0x071e('0x8'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x071e('0x9'));module['exports']=function(_0x1f2edf,_0x19fddd){return _0x1f2edf[_0x071e('0xa')]('DeskAccount',attributes,{'tableName':_0x071e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69f4319..fd12994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59fd=['map','model','include','stringify','ShowDeskAccount','find','util','moment','bluebird','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','error','DeskAccount,\x20%s,\x20%s','message','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes'];(function(_0x1ae8ab,_0x6e5c2a){var _0x1ad705=function(_0x1dfa15){while(--_0x1dfa15){_0x1ae8ab['push'](_0x1ae8ab['shift']());}};_0x1ad705(++_0x6e5c2a);}(_0x59fd,0x82));var _0xd59f=function(_0x16e5df,_0x5b0d1f){_0x16e5df=_0x16e5df-0x0;var _0x1b93ee=_0x59fd[_0x16e5df];return _0x1b93ee;};'use strict';var _=require('lodash');var util=require(_0xd59f('0x0'));var moment=require(_0xd59f('0x1'));var BPromise=require(_0xd59f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd59f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd59f('0x4'))('rpc');var config=require(_0xd59f('0x5'));var jayson=require(_0xd59f('0x6'));var client=jayson[_0xd59f('0x7')][_0xd59f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x199c65,_0x275d93,_0x57c14f){return new BPromise(function(_0x2fcdc8,_0x2ba941){return client['request'](_0x199c65,_0x57c14f)[_0xd59f('0x9')](function(_0x26cfa4){logger[_0xd59f('0xa')]('DeskAccount,\x20%s,\x20%s',_0x275d93,_0xd59f('0xb'));logger[_0xd59f('0xc')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x275d93,_0xd59f('0xb'),JSON['stringify'](_0x26cfa4));if(_0x26cfa4[_0xd59f('0xd')]){if(_0x26cfa4[_0xd59f('0xd')]['code']===0x1f4){logger['error'](_0xd59f('0xe'),_0x275d93,_0x26cfa4[_0xd59f('0xd')][_0xd59f('0xf')]);return _0x2ba941(_0x26cfa4[_0xd59f('0xd')][_0xd59f('0xf')]);}logger[_0xd59f('0xd')](_0xd59f('0xe'),_0x275d93,_0x26cfa4[_0xd59f('0xd')][_0xd59f('0xf')]);return _0x2fcdc8(_0x26cfa4[_0xd59f('0xd')][_0xd59f('0xf')]);}else{logger[_0xd59f('0xa')](_0xd59f('0xe'),_0x275d93,'request\x20sent');_0x2fcdc8(_0x26cfa4[_0xd59f('0x10')][_0xd59f('0xf')]);}})[_0xd59f('0x11')](function(_0x45fb97){logger['error'](_0xd59f('0xe'),_0x275d93,_0x45fb97);_0x2ba941(_0x45fb97);});});}exports[_0xd59f('0x12')]=function(_0x406712){var _0x5b432d=this;return new Promise(function(_0x52b5d9,_0x35622c){return db[_0xd59f('0x13')][_0xd59f('0x14')]({'raw':_0x406712[_0xd59f('0x15')]?_0x406712[_0xd59f('0x15')][_0xd59f('0x16')]===undefined?!![]:![]:!![],'where':_0x406712[_0xd59f('0x15')]?_0x406712[_0xd59f('0x15')][_0xd59f('0x17')]||null:null,'attributes':_0x406712['options']?_0x406712[_0xd59f('0x15')][_0xd59f('0x18')]||null:null,'limit':_0x406712[_0xd59f('0x15')]?_0x406712[_0xd59f('0x15')]['limit']||null:null,'include':_0x406712['options']?_0x406712[_0xd59f('0x15')]['include']?_[_0xd59f('0x19')](_0x406712[_0xd59f('0x15')]['include'],function(_0x5e6ba5){return{'model':db[_0x5e6ba5['model']],'as':_0x5e6ba5['as'],'attributes':_0x5e6ba5['attributes'],'include':_0x5e6ba5['include']?_['map'](_0x5e6ba5['include'],function(_0x36e5e9){return{'model':db[_0x36e5e9[_0xd59f('0x1a')]],'as':_0x36e5e9['as'],'attributes':_0x36e5e9['attributes'],'include':_0x36e5e9[_0xd59f('0x1b')]?_[_0xd59f('0x19')](_0x36e5e9[_0xd59f('0x1b')],function(_0xa0314b){return{'model':db[_0xa0314b[_0xd59f('0x1a')]],'as':_0xa0314b['as'],'attributes':_0xa0314b[_0xd59f('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd59f('0x9')](function(_0x4dd7ba){logger[_0xd59f('0xa')](_0xd59f('0x12'),_0x406712);logger[_0xd59f('0xc')]('GetDeskAccount',_0x406712,JSON[_0xd59f('0x1c')](_0x4dd7ba));_0x52b5d9(_0x4dd7ba);})[_0xd59f('0x11')](function(_0x51b432){logger[_0xd59f('0xd')](_0xd59f('0x12'),_0x51b432[_0xd59f('0xf')],_0x406712);_0x35622c(_0x5b432d['error'](0x1f4,_0x51b432[_0xd59f('0xf')]));});});};exports[_0xd59f('0x1d')]=function(_0x418cbf){var _0x3aefb9=this;return new Promise(function(_0x1a4e9f,_0xc049c){return db[_0xd59f('0x13')][_0xd59f('0x1e')]({'raw':_0x418cbf[_0xd59f('0x15')]?_0x418cbf[_0xd59f('0x15')][_0xd59f('0x16')]===undefined?!![]:![]:!![],'where':_0x418cbf[_0xd59f('0x15')]?_0x418cbf[_0xd59f('0x15')][_0xd59f('0x17')]||null:null,'attributes':_0x418cbf[_0xd59f('0x15')]?_0x418cbf['options']['attributes']||null:null,'include':_0x418cbf[_0xd59f('0x15')]?_0x418cbf[_0xd59f('0x15')]['include']?_[_0xd59f('0x19')](_0x418cbf[_0xd59f('0x15')][_0xd59f('0x1b')],function(_0x5d3cb8){return{'model':db[_0x5d3cb8[_0xd59f('0x1a')]],'as':_0x5d3cb8['as'],'attributes':_0x5d3cb8[_0xd59f('0x18')],'include':_0x5d3cb8[_0xd59f('0x1b')]?_[_0xd59f('0x19')](_0x5d3cb8[_0xd59f('0x1b')],function(_0x206a1e){return{'model':db[_0x206a1e[_0xd59f('0x1a')]],'as':_0x206a1e['as'],'attributes':_0x206a1e[_0xd59f('0x18')],'include':_0x206a1e[_0xd59f('0x1b')]?_['map'](_0x206a1e[_0xd59f('0x1b')],function(_0x13ad11){return{'model':db[_0x13ad11[_0xd59f('0x1a')]],'as':_0x13ad11['as'],'attributes':_0x13ad11[_0xd59f('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd59f('0x9')](function(_0x54e81e){logger[_0xd59f('0xa')](_0xd59f('0x1d'),_0x418cbf);logger[_0xd59f('0xc')](_0xd59f('0x1d'),_0x418cbf,JSON['stringify'](_0x54e81e));_0x1a4e9f(_0x54e81e);})['catch'](function(_0x55925d){logger[_0xd59f('0xd')](_0xd59f('0x1d'),_0x55925d[_0xd59f('0xf')],_0x418cbf);_0xc049c(_0x3aefb9[_0xd59f('0xd')](0x1f4,_0x55925d['message']));});});};
\ No newline at end of file
+var _0x7676=['request\x20sent','stringify','error','code','message','catch','findAll','options','raw','include','model','attributes','map','then','GetDeskAccount','debug','DeskAccount','find','where','ShowDeskAccount','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','DeskAccount,\x20%s,\x20%s'];(function(_0x5e6ebe,_0x373752){var _0x5d80a0=function(_0x145677){while(--_0x145677){_0x5e6ebe['push'](_0x5e6ebe['shift']());}};_0x5d80a0(++_0x373752);}(_0x7676,0xb4));var _0x6767=function(_0x4f37eb,_0xf9975d){_0x4f37eb=_0x4f37eb-0x0;var _0x5522dc=_0x7676[_0x4f37eb];return _0x5522dc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6767('0x0'));var BPromise=require(_0x6767('0x1'));var rs=require(_0x6767('0x2'));var fs=require('fs');var Redis=require(_0x6767('0x3'));var db=require(_0x6767('0x4'))['db'];var utils=require(_0x6767('0x5'));var logger=require(_0x6767('0x6'))(_0x6767('0x7'));var config=require('../../config/environment');var jayson=require(_0x6767('0x8'));var client=jayson['client'][_0x6767('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ed56d,_0x2850db,_0x172e20){return new BPromise(function(_0x52d391,_0x395e74){return client['request'](_0x5ed56d,_0x172e20)['then'](function(_0x195975){logger[_0x6767('0xa')](_0x6767('0xb'),_0x2850db,_0x6767('0xc'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x2850db,_0x6767('0xc'),JSON[_0x6767('0xd')](_0x195975));if(_0x195975[_0x6767('0xe')]){if(_0x195975['error'][_0x6767('0xf')]===0x1f4){logger[_0x6767('0xe')](_0x6767('0xb'),_0x2850db,_0x195975[_0x6767('0xe')]['message']);return _0x395e74(_0x195975[_0x6767('0xe')][_0x6767('0x10')]);}logger[_0x6767('0xe')](_0x6767('0xb'),_0x2850db,_0x195975[_0x6767('0xe')][_0x6767('0x10')]);return _0x52d391(_0x195975[_0x6767('0xe')][_0x6767('0x10')]);}else{logger[_0x6767('0xa')](_0x6767('0xb'),_0x2850db,_0x6767('0xc'));_0x52d391(_0x195975['result'][_0x6767('0x10')]);}})[_0x6767('0x11')](function(_0x4ed75d){logger[_0x6767('0xe')](_0x6767('0xb'),_0x2850db,_0x4ed75d);_0x395e74(_0x4ed75d);});});}exports['GetDeskAccount']=function(_0x18baad){var _0x197dcb=this;return new Promise(function(_0x4e58c2,_0x58c219){return db['DeskAccount'][_0x6767('0x12')]({'raw':_0x18baad['options']?_0x18baad[_0x6767('0x13')][_0x6767('0x14')]===undefined?!![]:![]:!![],'where':_0x18baad[_0x6767('0x13')]?_0x18baad[_0x6767('0x13')]['where']||null:null,'attributes':_0x18baad[_0x6767('0x13')]?_0x18baad[_0x6767('0x13')]['attributes']||null:null,'limit':_0x18baad[_0x6767('0x13')]?_0x18baad['options']['limit']||null:null,'include':_0x18baad[_0x6767('0x13')]?_0x18baad[_0x6767('0x13')][_0x6767('0x15')]?_['map'](_0x18baad[_0x6767('0x13')]['include'],function(_0x4ca27c){return{'model':db[_0x4ca27c[_0x6767('0x16')]],'as':_0x4ca27c['as'],'attributes':_0x4ca27c[_0x6767('0x17')],'include':_0x4ca27c[_0x6767('0x15')]?_['map'](_0x4ca27c['include'],function(_0x1015a2){return{'model':db[_0x1015a2[_0x6767('0x16')]],'as':_0x1015a2['as'],'attributes':_0x1015a2['attributes'],'include':_0x1015a2['include']?_[_0x6767('0x18')](_0x1015a2[_0x6767('0x15')],function(_0x93ba99){return{'model':db[_0x93ba99[_0x6767('0x16')]],'as':_0x93ba99['as'],'attributes':_0x93ba99['attributes']};}):[]};}):[]};}):[]:[]})[_0x6767('0x19')](function(_0x40098a){logger[_0x6767('0xa')](_0x6767('0x1a'),_0x18baad);logger[_0x6767('0x1b')](_0x6767('0x1a'),_0x18baad,JSON[_0x6767('0xd')](_0x40098a));_0x4e58c2(_0x40098a);})['catch'](function(_0xa5ee3a){logger[_0x6767('0xe')]('GetDeskAccount',_0xa5ee3a['message'],_0x18baad);_0x58c219(_0x197dcb[_0x6767('0xe')](0x1f4,_0xa5ee3a['message']));});});};exports['ShowDeskAccount']=function(_0x1543a3){var _0x2b02d2=this;return new Promise(function(_0x4e530a,_0x3d8c02){return db[_0x6767('0x1c')][_0x6767('0x1d')]({'raw':_0x1543a3['options']?_0x1543a3[_0x6767('0x13')][_0x6767('0x14')]===undefined?!![]:![]:!![],'where':_0x1543a3[_0x6767('0x13')]?_0x1543a3['options'][_0x6767('0x1e')]||null:null,'attributes':_0x1543a3[_0x6767('0x13')]?_0x1543a3[_0x6767('0x13')][_0x6767('0x17')]||null:null,'include':_0x1543a3['options']?_0x1543a3[_0x6767('0x13')][_0x6767('0x15')]?_[_0x6767('0x18')](_0x1543a3[_0x6767('0x13')][_0x6767('0x15')],function(_0x2f41ed){return{'model':db[_0x2f41ed['model']],'as':_0x2f41ed['as'],'attributes':_0x2f41ed[_0x6767('0x17')],'include':_0x2f41ed[_0x6767('0x15')]?_[_0x6767('0x18')](_0x2f41ed[_0x6767('0x15')],function(_0x4406b7){return{'model':db[_0x4406b7[_0x6767('0x16')]],'as':_0x4406b7['as'],'attributes':_0x4406b7[_0x6767('0x17')],'include':_0x4406b7['include']?_[_0x6767('0x18')](_0x4406b7[_0x6767('0x15')],function(_0x1726c4){return{'model':db[_0x1726c4['model']],'as':_0x1726c4['as'],'attributes':_0x1726c4[_0x6767('0x17')]};}):[]};}):[]};}):[]:[]})[_0x6767('0x19')](function(_0x193f0d){logger[_0x6767('0xa')](_0x6767('0x1f'),_0x1543a3);logger['debug'](_0x6767('0x1f'),_0x1543a3,JSON['stringify'](_0x193f0d));_0x4e530a(_0x193f0d);})[_0x6767('0x11')](function(_0x7ccf83){logger['error']('ShowDeskAccount',_0x7ccf83[_0x6767('0x10')],_0x1543a3);_0x3d8c02(_0x2b02d2[_0x6767('0xe')](0x1f4,_0x7ccf83[_0x6767('0x10')]));});});};
\ No newline at end of file
index 8dd9de9..55784d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x162a27,_0x420008){var _0x38d2c8=function(_0x148453){while(--_0x148453){_0x162a27['push'](_0x162a27['shift']());}};_0x38d2c8(++_0x420008);}(_0x3e74,0x175));var _0x43e7=function(_0x4e7d8b,_0x532d5f){_0x4e7d8b=_0x4e7d8b-0x0;var _0xa37fd0=_0x3e74[_0x4e7d8b];return _0xa37fd0;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
+var _0x008c=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','getFields','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xe87ac,_0x476916){var _0x2a130c=function(_0x23f8d9){while(--_0x23f8d9){_0xe87ac['push'](_0xe87ac['shift']());}};_0x2a130c(++_0x476916);}(_0x008c,0x188));var _0xc008=function(_0x41dd01,_0x3287fe){_0x41dd01=_0x41dd01-0x0;var _0x1b2a58=_0x008c[_0x41dd01];return _0x1b2a58;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0x10'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x14')](_0xc008('0x15'),auth[_0xc008('0xb')](),controller[_0xc008('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x17')]);module[_0xc008('0x18')]=router;
\ No newline at end of file
index 2b4fe6e..aef7569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd4=['exports','STRING'];(function(_0x1f53eb,_0x43f4cc){var _0x24c2fe=function(_0x115383){while(--_0x115383){_0x1f53eb['push'](_0x1f53eb['shift']());}};_0x24c2fe(++_0x43f4cc);}(_0xdcd4,0x1c8));var _0x4dcd=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xdcd4[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require('sequelize');module[_0x4dcd('0x0')]={'name':{'type':Sequelize[_0x4dcd('0x1')]},'description':{'type':Sequelize[_0x4dcd('0x1')]}};
\ No newline at end of file
+var _0x1863=['STRING','sequelize'];(function(_0x20a2e7,_0x36862b){var _0x11abda=function(_0x981eb3){while(--_0x981eb3){_0x20a2e7['push'](_0x20a2e7['shift']());}};_0x11abda(++_0x36862b);}(_0x1863,0x1ab));var _0x3186=function(_0x49beea,_0x47add1){_0x49beea=_0x49beea-0x0;var _0x27693a=_0x1863[_0x49beea];return _0x27693a;};'use strict';var Sequelize=require(_0x3186('0x0'));module['exports']={'name':{'type':Sequelize[_0x3186('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 55b11a2..81e1d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb156=['getTags','Tag','setTags','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','DeskConfiguration','rawAttributes','fieldName','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','getFields','findOne','DeskField','pick','getSubjects','getDescriptions'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb156,0x1a2));var _0x6b15=function(_0x5b7327,_0x3da7cc){_0x5b7327=_0x5b7327-0x0;var _0x1518a1=_0xb156[_0x5b7327];return _0x1518a1;};'use strict';var emlformat=require(_0x6b15('0x0'));var rimraf=require(_0x6b15('0x1'));var zipdir=require(_0x6b15('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b15('0x3'));var moment=require('moment');var BPromise=require(_0x6b15('0x4'));var Mustache=require(_0x6b15('0x5'));var util=require(_0x6b15('0x6'));var path=require(_0x6b15('0x7'));var sox=require(_0x6b15('0x8'));var csv=require(_0x6b15('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6b15('0xa'));var _=require(_0x6b15('0xb'));var squel=require(_0x6b15('0xc'));var crypto=require(_0x6b15('0xd'));var jsforce=require(_0x6b15('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6b15('0x9'));var querystring=require('querystring');var Papa=require(_0x6b15('0xf'));var Redis=require('ioredis');var authService=require(_0x6b15('0x10'));var qs=require(_0x6b15('0x11'));var as=require(_0x6b15('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b15('0x13'))(_0x6b15('0x14'));var utils=require(_0x6b15('0x15'));var config=require(_0x6b15('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x480341,_0x283f22){_0x283f22=_0x283f22||0xcc;return function(_0x90b5e9){if(_0x90b5e9){return _0x480341[_0x6b15('0x17')](_0x283f22);}return _0x480341[_0x6b15('0x18')](_0x283f22)[_0x6b15('0x19')]();};}function respondWithResult(_0x113460,_0x28c8c2){_0x28c8c2=_0x28c8c2||0xc8;return function(_0x3c0658){if(_0x3c0658){return _0x113460[_0x6b15('0x18')](_0x28c8c2)['json'](_0x3c0658);}};}function respondWithFilteredResult(_0x46bac6,_0xbff64b){return function(_0x477f0f){if(_0x477f0f){var _0x1b3c7c=typeof _0xbff64b['offset']===_0x6b15('0x1a')&&typeof _0xbff64b[_0x6b15('0x1b')]===_0x6b15('0x1a');var _0x4b503b=_0x477f0f[_0x6b15('0x1c')];var _0x27ddfd=_0x1b3c7c?0x0:_0xbff64b[_0x6b15('0x1d')];var _0x1ef9d4=_0x1b3c7c?_0x477f0f[_0x6b15('0x1c')]:_0xbff64b[_0x6b15('0x1d')]+_0xbff64b['limit'];var _0x4e38f1;if(_0x1ef9d4>=_0x4b503b){_0x1ef9d4=_0x4b503b;_0x4e38f1=0xc8;}else{_0x4e38f1=0xce;}_0x46bac6['status'](_0x4e38f1);return _0x46bac6['set'](_0x6b15('0x1e'),_0x27ddfd+'-'+_0x1ef9d4+'/'+_0x4b503b)[_0x6b15('0x1f')](_0x477f0f);}return null;};}function patchUpdates(_0x1a4202){return function(_0x19de8a){try{jsonpatch[_0x6b15('0x20')](_0x19de8a,_0x1a4202,!![]);}catch(_0x5f0fd4){return BPromise[_0x6b15('0x21')](_0x5f0fd4);}return _0x19de8a[_0x6b15('0x22')]();};}function saveUpdates(_0x1f7147,_0x531bc0){return function(_0xb1acb5){if(_0xb1acb5){return _0xb1acb5[_0x6b15('0x23')](_0x1f7147)[_0x6b15('0x24')](function(_0x5b87ad){return _0x5b87ad;});}return null;};}function removeEntity(_0x3a4ac5,_0x3241cd){return function(_0xb717f0){if(_0xb717f0){return _0xb717f0[_0x6b15('0x25')]()['then'](function(){_0x3a4ac5['status'](0xcc)[_0x6b15('0x19')]();});}};}function handleEntityNotFound(_0xa3bd97,_0x47241b){return function(_0x521024){if(!_0x521024){_0xa3bd97[_0x6b15('0x17')](0x194);}return _0x521024;};}function handleError(_0x4b0969,_0x8d5af2){_0x8d5af2=_0x8d5af2||0x1f4;return function(_0x3ad41b){logger[_0x6b15('0x26')](_0x3ad41b['stack']);if(_0x3ad41b['name']){delete _0x3ad41b[_0x6b15('0x27')];}_0x4b0969[_0x6b15('0x18')](_0x8d5af2)[_0x6b15('0x28')](_0x3ad41b);};}exports['index']=function(_0x247a08,_0xdfe7c6){var _0x531d90={},_0x42dd8b={},_0x615ef7={'count':0x0,'rows':[]};var _0x39a8be=_[_0x6b15('0x29')](db[_0x6b15('0x2a')][_0x6b15('0x2b')],function(_0x141077){return{'name':_0x141077[_0x6b15('0x2c')],'type':_0x141077['type'][_0x6b15('0x2d')]};});_0x42dd8b[_0x6b15('0x2e')]=_[_0x6b15('0x29')](_0x39a8be,'name');_0x42dd8b['query']=_[_0x6b15('0x2f')](_0x247a08[_0x6b15('0x30')]);_0x42dd8b['filters']=_[_0x6b15('0x31')](_0x42dd8b[_0x6b15('0x2e')],_0x42dd8b[_0x6b15('0x30')]);_0x531d90['attributes']=_[_0x6b15('0x31')](_0x42dd8b[_0x6b15('0x2e')],qs[_0x6b15('0x32')](_0x247a08[_0x6b15('0x30')]['fields']));_0x531d90[_0x6b15('0x33')]=_0x531d90[_0x6b15('0x33')]['length']?_0x531d90[_0x6b15('0x33')]:_0x42dd8b[_0x6b15('0x2e')];if(!_0x247a08[_0x6b15('0x30')][_0x6b15('0x34')](_0x6b15('0x35'))){_0x531d90[_0x6b15('0x1b')]=qs[_0x6b15('0x1b')](_0x247a08[_0x6b15('0x30')][_0x6b15('0x1b')]);_0x531d90[_0x6b15('0x1d')]=qs[_0x6b15('0x1d')](_0x247a08[_0x6b15('0x30')][_0x6b15('0x1d')]);}_0x531d90[_0x6b15('0x36')]=qs[_0x6b15('0x37')](_0x247a08[_0x6b15('0x30')]['sort']);_0x531d90[_0x6b15('0x38')]=qs[_0x6b15('0x39')](_['pick'](_0x247a08[_0x6b15('0x30')],_0x42dd8b[_0x6b15('0x39')]),_0x39a8be);if(_0x247a08[_0x6b15('0x30')][_0x6b15('0x3a')]){_0x531d90[_0x6b15('0x38')]=_['merge'](_0x531d90[_0x6b15('0x38')],{'$or':_['map'](_0x39a8be,function(_0x2d5385){if(_0x2d5385[_0x6b15('0x3b')]!==_0x6b15('0x3c')){var _0x6f595b={};_0x6f595b[_0x2d5385[_0x6b15('0x27')]]={'$like':'%'+_0x247a08['query']['filter']+'%'};return _0x6f595b;}})});}_0x531d90=_[_0x6b15('0x3d')]({},_0x531d90,_0x247a08[_0x6b15('0x3e')]);var _0x541cee={'where':_0x531d90['where']};return db[_0x6b15('0x2a')][_0x6b15('0x1c')](_0x541cee)['then'](function(_0x1b87e5){_0x615ef7[_0x6b15('0x1c')]=_0x1b87e5;if(_0x247a08[_0x6b15('0x30')][_0x6b15('0x3f')]){_0x531d90[_0x6b15('0x40')]=[{'all':!![]}];}return db[_0x6b15('0x2a')][_0x6b15('0x41')](_0x531d90);})[_0x6b15('0x24')](function(_0x313b77){_0x615ef7[_0x6b15('0x42')]=_0x313b77;return _0x615ef7;})[_0x6b15('0x24')](respondWithFilteredResult(_0xdfe7c6,_0x531d90))[_0x6b15('0x43')](handleError(_0xdfe7c6,null));};exports[_0x6b15('0x44')]=function(_0x5358b2,_0x29d008){var _0x2afb68={'raw':![],'where':{'id':_0x5358b2['params']['id']}},_0x1d7617={};_0x1d7617['model']=_[_0x6b15('0x2f')](db['DeskConfiguration'][_0x6b15('0x2b')]);_0x1d7617[_0x6b15('0x30')]=_[_0x6b15('0x2f')](_0x5358b2[_0x6b15('0x30')]);_0x1d7617[_0x6b15('0x39')]=_[_0x6b15('0x31')](_0x1d7617[_0x6b15('0x2e')],_0x1d7617[_0x6b15('0x30')]);_0x2afb68[_0x6b15('0x33')]=_[_0x6b15('0x31')](_0x1d7617[_0x6b15('0x2e')],qs['fields'](_0x5358b2[_0x6b15('0x30')][_0x6b15('0x32')]));_0x2afb68[_0x6b15('0x33')]=_0x2afb68[_0x6b15('0x33')][_0x6b15('0x45')]?_0x2afb68[_0x6b15('0x33')]:_0x1d7617[_0x6b15('0x2e')];if(_0x5358b2[_0x6b15('0x30')]['includeAll']){_0x2afb68['include']=[{'all':!![]}];}_0x2afb68=_[_0x6b15('0x3d')]({},_0x2afb68,_0x5358b2[_0x6b15('0x3e')]);return db['DeskConfiguration'][_0x6b15('0x46')](_0x2afb68)[_0x6b15('0x24')](handleEntityNotFound(_0x29d008,null))[_0x6b15('0x24')](respondWithResult(_0x29d008,null))[_0x6b15('0x43')](handleError(_0x29d008,null));};exports[_0x6b15('0x47')]=function(_0x3a7989,_0x4e022d){return db['DeskConfiguration'][_0x6b15('0x47')](_0x3a7989[_0x6b15('0x48')],{})[_0x6b15('0x24')](respondWithResult(_0x4e022d,0xc9))['catch'](handleError(_0x4e022d,null));};exports[_0x6b15('0x23')]=function(_0x38ba1d,_0x42628b){if(_0x38ba1d[_0x6b15('0x48')]['id']){delete _0x38ba1d[_0x6b15('0x48')]['id'];}return db[_0x6b15('0x2a')][_0x6b15('0x46')]({'where':{'id':_0x38ba1d[_0x6b15('0x49')]['id']}})[_0x6b15('0x24')](handleEntityNotFound(_0x42628b,null))[_0x6b15('0x24')](saveUpdates(_0x38ba1d['body'],null))['then'](respondWithResult(_0x42628b,null))['catch'](handleError(_0x42628b,null));};exports[_0x6b15('0x25')]=function(_0x582282,_0x16e06b){return db['DeskConfiguration'][_0x6b15('0x46')]({'where':{'id':_0x582282[_0x6b15('0x49')]['id']}})[_0x6b15('0x24')](handleEntityNotFound(_0x16e06b,null))[_0x6b15('0x24')](removeEntity(_0x16e06b,null))[_0x6b15('0x43')](handleError(_0x16e06b,null));};exports[_0x6b15('0x4a')]=function(_0x3a7b9c,_0x4b8072,_0x2313c8){var _0x164c43={};var _0x4374a7={};var _0x5d83c1;var _0xe27164;return db[_0x6b15('0x2a')][_0x6b15('0x4b')]({'where':{'id':_0x3a7b9c[_0x6b15('0x49')]['id']}})[_0x6b15('0x24')](handleEntityNotFound(_0x4b8072,null))[_0x6b15('0x24')](function(_0x32167b){if(_0x32167b){_0x5d83c1=_0x32167b;_0x4374a7['model']=_[_0x6b15('0x2f')](db[_0x6b15('0x4c')][_0x6b15('0x2b')]);_0x4374a7[_0x6b15('0x30')]=_[_0x6b15('0x2f')](_0x3a7b9c[_0x6b15('0x30')]);_0x4374a7[_0x6b15('0x39')]=_[_0x6b15('0x31')](_0x4374a7[_0x6b15('0x2e')],_0x4374a7[_0x6b15('0x30')]);_0x164c43[_0x6b15('0x33')]=_[_0x6b15('0x31')](_0x4374a7['model'],qs[_0x6b15('0x32')](_0x3a7b9c[_0x6b15('0x30')]['fields']));_0x164c43[_0x6b15('0x33')]=_0x164c43[_0x6b15('0x33')][_0x6b15('0x45')]?_0x164c43[_0x6b15('0x33')]:_0x4374a7[_0x6b15('0x2e')];_0x164c43['order']=qs[_0x6b15('0x37')](_0x3a7b9c[_0x6b15('0x30')][_0x6b15('0x37')]);_0x164c43[_0x6b15('0x38')]=qs[_0x6b15('0x39')](_[_0x6b15('0x4d')](_0x3a7b9c[_0x6b15('0x30')],_0x4374a7[_0x6b15('0x39')]));if(_0x3a7b9c[_0x6b15('0x30')][_0x6b15('0x3a')]){_0x164c43['where']=_[_0x6b15('0x3d')](_0x164c43[_0x6b15('0x38')],{'$or':_[_0x6b15('0x29')](_0x164c43[_0x6b15('0x33')],function(_0x1149a7){var _0x2f9f37={};_0x2f9f37[_0x1149a7]={'$like':'%'+_0x3a7b9c[_0x6b15('0x30')][_0x6b15('0x3a')]+'%'};return _0x2f9f37;})});}_0x164c43=_[_0x6b15('0x3d')]({},_0x164c43,_0x3a7b9c[_0x6b15('0x3e')]);return _0x5d83c1['getFields'](_0x164c43);}})[_0x6b15('0x24')](function(_0x24335b){if(_0x24335b){_0xe27164=_0x24335b['length'];if(!_0x3a7b9c[_0x6b15('0x30')][_0x6b15('0x34')]('nolimit')){_0x164c43[_0x6b15('0x1b')]=qs['limit'](_0x3a7b9c[_0x6b15('0x30')][_0x6b15('0x1b')]);_0x164c43[_0x6b15('0x1d')]=qs[_0x6b15('0x1d')](_0x3a7b9c[_0x6b15('0x30')][_0x6b15('0x1d')]);}return _0x5d83c1[_0x6b15('0x4a')](_0x164c43);}})[_0x6b15('0x24')](function(_0x18bd7d){if(_0x18bd7d){return _0x18bd7d?{'count':_0xe27164,'rows':_0x18bd7d}:null;}})[_0x6b15('0x24')](respondWithResult(_0x4b8072,null))[_0x6b15('0x43')](handleError(_0x4b8072,null));};exports[_0x6b15('0x4e')]=function(_0x490c08,_0x148313,_0x9e2f35){var _0x3d3407={};var _0xa28cee={};var _0x1c172f;var _0x5bb3bc;return db[_0x6b15('0x2a')][_0x6b15('0x4b')]({'where':{'id':_0x490c08['params']['id']}})[_0x6b15('0x24')](handleEntityNotFound(_0x148313,null))['then'](function(_0x525be1){if(_0x525be1){_0x1c172f=_0x525be1;_0xa28cee[_0x6b15('0x2e')]=_[_0x6b15('0x2f')](db['DeskField'][_0x6b15('0x2b')]);_0xa28cee[_0x6b15('0x30')]=_['keys'](_0x490c08[_0x6b15('0x30')]);_0xa28cee[_0x6b15('0x39')]=_[_0x6b15('0x31')](_0xa28cee[_0x6b15('0x2e')],_0xa28cee[_0x6b15('0x30')]);_0x3d3407['attributes']=_[_0x6b15('0x31')](_0xa28cee[_0x6b15('0x2e')],qs[_0x6b15('0x32')](_0x490c08[_0x6b15('0x30')][_0x6b15('0x32')]));_0x3d3407[_0x6b15('0x33')]=_0x3d3407[_0x6b15('0x33')][_0x6b15('0x45')]?_0x3d3407[_0x6b15('0x33')]:_0xa28cee[_0x6b15('0x2e')];_0x3d3407['order']=qs[_0x6b15('0x37')](_0x490c08[_0x6b15('0x30')][_0x6b15('0x37')]);_0x3d3407[_0x6b15('0x38')]=qs[_0x6b15('0x39')](_[_0x6b15('0x4d')](_0x490c08[_0x6b15('0x30')],_0xa28cee[_0x6b15('0x39')]));if(_0x490c08[_0x6b15('0x30')][_0x6b15('0x3a')]){_0x3d3407[_0x6b15('0x38')]=_[_0x6b15('0x3d')](_0x3d3407['where'],{'$or':_[_0x6b15('0x29')](_0x3d3407[_0x6b15('0x33')],function(_0x38170a){var _0x40060b={};_0x40060b[_0x38170a]={'$like':'%'+_0x490c08[_0x6b15('0x30')][_0x6b15('0x3a')]+'%'};return _0x40060b;})});}_0x3d3407=_[_0x6b15('0x3d')]({},_0x3d3407,_0x490c08['options']);return _0x1c172f[_0x6b15('0x4e')](_0x3d3407);}})['then'](function(_0x377b84){if(_0x377b84){_0x5bb3bc=_0x377b84[_0x6b15('0x45')];if(!_0x490c08[_0x6b15('0x30')][_0x6b15('0x34')]('nolimit')){_0x3d3407['limit']=qs[_0x6b15('0x1b')](_0x490c08['query'][_0x6b15('0x1b')]);_0x3d3407[_0x6b15('0x1d')]=qs[_0x6b15('0x1d')](_0x490c08[_0x6b15('0x30')][_0x6b15('0x1d')]);}return _0x1c172f['getSubjects'](_0x3d3407);}})[_0x6b15('0x24')](function(_0x3d9329){if(_0x3d9329){return _0x3d9329?{'count':_0x5bb3bc,'rows':_0x3d9329}:null;}})[_0x6b15('0x24')](respondWithResult(_0x148313,null))['catch'](handleError(_0x148313,null));};exports[_0x6b15('0x4f')]=function(_0x4d7133,_0x541ca0,_0x4f1f54){var _0x3dde27={};var _0x3fb662={};var _0x370152;var _0x552344;return db[_0x6b15('0x2a')][_0x6b15('0x4b')]({'where':{'id':_0x4d7133[_0x6b15('0x49')]['id']}})[_0x6b15('0x24')](handleEntityNotFound(_0x541ca0,null))[_0x6b15('0x24')](function(_0x364078){if(_0x364078){_0x370152=_0x364078;_0x3fb662['model']=_[_0x6b15('0x2f')](db['DeskField']['rawAttributes']);_0x3fb662[_0x6b15('0x30')]=_['keys'](_0x4d7133[_0x6b15('0x30')]);_0x3fb662[_0x6b15('0x39')]=_['intersection'](_0x3fb662['model'],_0x3fb662['query']);_0x3dde27[_0x6b15('0x33')]=_['intersection'](_0x3fb662['model'],qs['fields'](_0x4d7133[_0x6b15('0x30')][_0x6b15('0x32')]));_0x3dde27[_0x6b15('0x33')]=_0x3dde27['attributes'][_0x6b15('0x45')]?_0x3dde27[_0x6b15('0x33')]:_0x3fb662['model'];_0x3dde27[_0x6b15('0x36')]=qs[_0x6b15('0x37')](_0x4d7133[_0x6b15('0x30')][_0x6b15('0x37')]);_0x3dde27[_0x6b15('0x38')]=qs[_0x6b15('0x39')](_[_0x6b15('0x4d')](_0x4d7133[_0x6b15('0x30')],_0x3fb662[_0x6b15('0x39')]));if(_0x4d7133[_0x6b15('0x30')][_0x6b15('0x3a')]){_0x3dde27[_0x6b15('0x38')]=_['merge'](_0x3dde27[_0x6b15('0x38')],{'$or':_[_0x6b15('0x29')](_0x3dde27[_0x6b15('0x33')],function(_0x196f2e){var _0x1d20f6={};_0x1d20f6[_0x196f2e]={'$like':'%'+_0x4d7133[_0x6b15('0x30')][_0x6b15('0x3a')]+'%'};return _0x1d20f6;})});}_0x3dde27=_[_0x6b15('0x3d')]({},_0x3dde27,_0x4d7133['options']);return _0x370152['getDescriptions'](_0x3dde27);}})[_0x6b15('0x24')](function(_0x118229){if(_0x118229){_0x552344=_0x118229[_0x6b15('0x45')];if(!_0x4d7133[_0x6b15('0x30')][_0x6b15('0x34')](_0x6b15('0x35'))){_0x3dde27[_0x6b15('0x1b')]=qs['limit'](_0x4d7133['query']['limit']);_0x3dde27[_0x6b15('0x1d')]=qs[_0x6b15('0x1d')](_0x4d7133[_0x6b15('0x30')][_0x6b15('0x1d')]);}return _0x370152[_0x6b15('0x4f')](_0x3dde27);}})['then'](function(_0x2e4d84){if(_0x2e4d84){return _0x2e4d84?{'count':_0x552344,'rows':_0x2e4d84}:null;}})[_0x6b15('0x24')](respondWithResult(_0x541ca0,null))[_0x6b15('0x43')](handleError(_0x541ca0,null));};exports[_0x6b15('0x50')]=function(_0x2496d3,_0x8142a1,_0x520371){var _0x48b48e={};var _0xa0cfca={};var _0x3bfd1e;var _0x560536;return db[_0x6b15('0x2a')]['findOne']({'where':{'id':_0x2496d3[_0x6b15('0x49')]['id']}})['then'](handleEntityNotFound(_0x8142a1,null))[_0x6b15('0x24')](function(_0x58c00c){if(_0x58c00c){_0x3bfd1e=_0x58c00c;_0xa0cfca[_0x6b15('0x2e')]=_[_0x6b15('0x2f')](db[_0x6b15('0x51')][_0x6b15('0x2b')]);_0xa0cfca[_0x6b15('0x30')]=_['keys'](_0x2496d3[_0x6b15('0x30')]);_0xa0cfca[_0x6b15('0x39')]=_[_0x6b15('0x31')](_0xa0cfca[_0x6b15('0x2e')],_0xa0cfca[_0x6b15('0x30')]);_0x48b48e['attributes']=_['intersection'](_0xa0cfca[_0x6b15('0x2e')],qs[_0x6b15('0x32')](_0x2496d3['query'][_0x6b15('0x32')]));_0x48b48e['attributes']=_0x48b48e[_0x6b15('0x33')]['length']?_0x48b48e[_0x6b15('0x33')]:_0xa0cfca['model'];_0x48b48e[_0x6b15('0x36')]=qs[_0x6b15('0x37')](_0x2496d3[_0x6b15('0x30')]['sort']);_0x48b48e[_0x6b15('0x38')]=qs['filters'](_[_0x6b15('0x4d')](_0x2496d3[_0x6b15('0x30')],_0xa0cfca[_0x6b15('0x39')]));if(_0x2496d3[_0x6b15('0x30')]['filter']){_0x48b48e[_0x6b15('0x38')]=_[_0x6b15('0x3d')](_0x48b48e['where'],{'$or':_['map'](_0x48b48e[_0x6b15('0x33')],function(_0x140999){var _0x3faf3a={};_0x3faf3a[_0x140999]={'$like':'%'+_0x2496d3['query'][_0x6b15('0x3a')]+'%'};return _0x3faf3a;})});}_0x48b48e=_[_0x6b15('0x3d')]({},_0x48b48e,_0x2496d3[_0x6b15('0x3e')]);return _0x3bfd1e['getTags'](_0x48b48e);}})[_0x6b15('0x24')](function(_0x491547){if(_0x491547){_0x560536=_0x491547['length'];if(!_0x2496d3['query'][_0x6b15('0x34')](_0x6b15('0x35'))){_0x48b48e[_0x6b15('0x1b')]=qs[_0x6b15('0x1b')](_0x2496d3[_0x6b15('0x30')]['limit']);_0x48b48e[_0x6b15('0x1d')]=qs[_0x6b15('0x1d')](_0x2496d3[_0x6b15('0x30')][_0x6b15('0x1d')]);}return _0x3bfd1e['getTags'](_0x48b48e);}})[_0x6b15('0x24')](function(_0x278701){if(_0x278701){return _0x278701?{'count':_0x560536,'rows':_0x278701}:null;}})[_0x6b15('0x24')](respondWithResult(_0x8142a1,null))[_0x6b15('0x43')](handleError(_0x8142a1,null));};exports[_0x6b15('0x52')]=function(_0x506f3e,_0x330310,_0x46c7ff){if(_0x506f3e['body']['id']){delete _0x506f3e[_0x6b15('0x48')]['id'];}return db[_0x6b15('0x2a')]['findOne']({'where':{'id':_0x506f3e[_0x6b15('0x49')]['id']}})['then'](handleEntityNotFound(_0x330310,null))[_0x6b15('0x24')](function(_0xc2efb9){if(_0xc2efb9){return _0xc2efb9[_0x6b15('0x52')](_0x506f3e['body']['ids']||[]);}return null;})[_0x6b15('0x24')](respondWithResult(_0x330310,null))[_0x6b15('0x43')](handleError(_0x330310,null));};
\ No newline at end of file
+var _0xc204=['send','index','DeskConfiguration','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','rawAttributes','options','create','body','find','findOne','DeskField','getFields','getSubjects','order','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','count','limit','status','json','apply','reject','update','destroy','then','error','name'];(function(_0x3654d9,_0x3c11af){var _0x331118=function(_0x43c1ec){while(--_0x43c1ec){_0x3654d9['push'](_0x3654d9['shift']());}};_0x331118(++_0x3c11af);}(_0xc204,0x12b));var _0x4c20=function(_0x502a20,_0x4fea06){_0x502a20=_0x502a20-0x0;var _0x29d3fa=_0xc204[_0x502a20];return _0x29d3fa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4c20('0x0'));var zipdir=require(_0x4c20('0x1'));var jsonpatch=require(_0x4c20('0x2'));var rp=require(_0x4c20('0x3'));var moment=require(_0x4c20('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4c20('0x5'));var util=require(_0x4c20('0x6'));var path=require('path');var sox=require(_0x4c20('0x7'));var csv=require('to-csv');var ejs=require(_0x4c20('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4c20('0x9'));var squel=require('squel');var crypto=require(_0x4c20('0xa'));var jsforce=require(_0x4c20('0xb'));var deskjs=require(_0x4c20('0xc'));var toCsv=require(_0x4c20('0xd'));var querystring=require(_0x4c20('0xe'));var Papa=require(_0x4c20('0xf'));var Redis=require(_0x4c20('0x10'));var authService=require(_0x4c20('0x11'));var qs=require(_0x4c20('0x12'));var as=require(_0x4c20('0x13'));var hardwareService=require(_0x4c20('0x14'));var logger=require(_0x4c20('0x15'))(_0x4c20('0x16'));var utils=require(_0x4c20('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4c20('0x18'));var db=require(_0x4c20('0x19'))['db'];function respondWithStatusCode(_0x248d64,_0x31d5f6){_0x31d5f6=_0x31d5f6||0xcc;return function(_0x1d4820){if(_0x1d4820){return _0x248d64[_0x4c20('0x1a')](_0x31d5f6);}return _0x248d64['status'](_0x31d5f6)[_0x4c20('0x1b')]();};}function respondWithResult(_0x429279,_0x54e0cf){_0x54e0cf=_0x54e0cf||0xc8;return function(_0x3166c3){if(_0x3166c3){return _0x429279['status'](_0x54e0cf)['json'](_0x3166c3);}};}function respondWithFilteredResult(_0x7c887b,_0x13c4a2){return function(_0x296173){if(_0x296173){var _0x4aa52a=typeof _0x13c4a2[_0x4c20('0x1c')]===_0x4c20('0x1d')&&typeof _0x13c4a2['limit']===_0x4c20('0x1d');var _0x50e979=_0x296173[_0x4c20('0x1e')];var _0x34820e=_0x4aa52a?0x0:_0x13c4a2[_0x4c20('0x1c')];var _0x3087ab=_0x4aa52a?_0x296173[_0x4c20('0x1e')]:_0x13c4a2[_0x4c20('0x1c')]+_0x13c4a2[_0x4c20('0x1f')];var _0x261796;if(_0x3087ab>=_0x50e979){_0x3087ab=_0x50e979;_0x261796=0xc8;}else{_0x261796=0xce;}_0x7c887b[_0x4c20('0x20')](_0x261796);return _0x7c887b['set']('Content-Range',_0x34820e+'-'+_0x3087ab+'/'+_0x50e979)[_0x4c20('0x21')](_0x296173);}return null;};}function patchUpdates(_0x4e095b){return function(_0x28add3){try{jsonpatch[_0x4c20('0x22')](_0x28add3,_0x4e095b,!![]);}catch(_0x1db1f1){return BPromise[_0x4c20('0x23')](_0x1db1f1);}return _0x28add3['save']();};}function saveUpdates(_0x1ba779,_0x434543){return function(_0x2a5dd7){if(_0x2a5dd7){return _0x2a5dd7[_0x4c20('0x24')](_0x1ba779)['then'](function(_0x464079){return _0x464079;});}return null;};}function removeEntity(_0x1cab84,_0x2fc544){return function(_0x4d25c9){if(_0x4d25c9){return _0x4d25c9[_0x4c20('0x25')]()[_0x4c20('0x26')](function(){_0x1cab84[_0x4c20('0x20')](0xcc)[_0x4c20('0x1b')]();});}};}function handleEntityNotFound(_0xb2bf43,_0x30459b){return function(_0x43f49f){if(!_0x43f49f){_0xb2bf43[_0x4c20('0x1a')](0x194);}return _0x43f49f;};}function handleError(_0x2f9c79,_0x17f3c2){_0x17f3c2=_0x17f3c2||0x1f4;return function(_0x54ecaf){logger[_0x4c20('0x27')](_0x54ecaf['stack']);if(_0x54ecaf[_0x4c20('0x28')]){delete _0x54ecaf[_0x4c20('0x28')];}_0x2f9c79[_0x4c20('0x20')](_0x17f3c2)[_0x4c20('0x29')](_0x54ecaf);};}exports[_0x4c20('0x2a')]=function(_0x9f762f,_0x3ad83e){var _0x5851e3={},_0x4b23c9={},_0x5ce392={'count':0x0,'rows':[]};var _0xee2cd6=_['map'](db[_0x4c20('0x2b')]['rawAttributes'],function(_0x1393a5){return{'name':_0x1393a5[_0x4c20('0x2c')],'type':_0x1393a5['type'][_0x4c20('0x2d')]};});_0x4b23c9[_0x4c20('0x2e')]=_[_0x4c20('0x2f')](_0xee2cd6,_0x4c20('0x28'));_0x4b23c9[_0x4c20('0x30')]=_['keys'](_0x9f762f[_0x4c20('0x30')]);_0x4b23c9[_0x4c20('0x31')]=_[_0x4c20('0x32')](_0x4b23c9[_0x4c20('0x2e')],_0x4b23c9['query']);_0x5851e3[_0x4c20('0x33')]=_[_0x4c20('0x32')](_0x4b23c9[_0x4c20('0x2e')],qs['fields'](_0x9f762f[_0x4c20('0x30')][_0x4c20('0x34')]));_0x5851e3[_0x4c20('0x33')]=_0x5851e3[_0x4c20('0x33')][_0x4c20('0x35')]?_0x5851e3['attributes']:_0x4b23c9[_0x4c20('0x2e')];if(!_0x9f762f[_0x4c20('0x30')][_0x4c20('0x36')](_0x4c20('0x37'))){_0x5851e3[_0x4c20('0x1f')]=qs[_0x4c20('0x1f')](_0x9f762f['query'][_0x4c20('0x1f')]);_0x5851e3[_0x4c20('0x1c')]=qs['offset'](_0x9f762f[_0x4c20('0x30')][_0x4c20('0x1c')]);}_0x5851e3['order']=qs[_0x4c20('0x38')](_0x9f762f[_0x4c20('0x30')][_0x4c20('0x38')]);_0x5851e3[_0x4c20('0x39')]=qs[_0x4c20('0x31')](_[_0x4c20('0x3a')](_0x9f762f[_0x4c20('0x30')],_0x4b23c9[_0x4c20('0x31')]),_0xee2cd6);if(_0x9f762f[_0x4c20('0x30')][_0x4c20('0x3b')]){_0x5851e3[_0x4c20('0x39')]=_[_0x4c20('0x3c')](_0x5851e3[_0x4c20('0x39')],{'$or':_[_0x4c20('0x2f')](_0xee2cd6,function(_0x1be788){if(_0x1be788[_0x4c20('0x3d')]!==_0x4c20('0x3e')){var _0x2a1e39={};_0x2a1e39[_0x1be788[_0x4c20('0x28')]]={'$like':'%'+_0x9f762f[_0x4c20('0x30')]['filter']+'%'};return _0x2a1e39;}})});}_0x5851e3=_[_0x4c20('0x3c')]({},_0x5851e3,_0x9f762f['options']);var _0x4936fa={'where':_0x5851e3[_0x4c20('0x39')]};return db['DeskConfiguration']['count'](_0x4936fa)[_0x4c20('0x26')](function(_0x2237d1){_0x5ce392['count']=_0x2237d1;if(_0x9f762f['query'][_0x4c20('0x3f')]){_0x5851e3[_0x4c20('0x40')]=[{'all':!![]}];}return db[_0x4c20('0x2b')][_0x4c20('0x41')](_0x5851e3);})[_0x4c20('0x26')](function(_0x580d19){_0x5ce392['rows']=_0x580d19;return _0x5ce392;})[_0x4c20('0x26')](respondWithFilteredResult(_0x3ad83e,_0x5851e3))[_0x4c20('0x42')](handleError(_0x3ad83e,null));};exports[_0x4c20('0x43')]=function(_0x3e0232,_0x2c9319){var _0x2651e4={'raw':![],'where':{'id':_0x3e0232[_0x4c20('0x44')]['id']}},_0x15bb5b={};_0x15bb5b[_0x4c20('0x2e')]=_[_0x4c20('0x45')](db[_0x4c20('0x2b')][_0x4c20('0x46')]);_0x15bb5b['query']=_[_0x4c20('0x45')](_0x3e0232[_0x4c20('0x30')]);_0x15bb5b[_0x4c20('0x31')]=_['intersection'](_0x15bb5b[_0x4c20('0x2e')],_0x15bb5b[_0x4c20('0x30')]);_0x2651e4['attributes']=_[_0x4c20('0x32')](_0x15bb5b[_0x4c20('0x2e')],qs[_0x4c20('0x34')](_0x3e0232[_0x4c20('0x30')][_0x4c20('0x34')]));_0x2651e4['attributes']=_0x2651e4[_0x4c20('0x33')][_0x4c20('0x35')]?_0x2651e4[_0x4c20('0x33')]:_0x15bb5b[_0x4c20('0x2e')];if(_0x3e0232[_0x4c20('0x30')][_0x4c20('0x3f')]){_0x2651e4[_0x4c20('0x40')]=[{'all':!![]}];}_0x2651e4=_[_0x4c20('0x3c')]({},_0x2651e4,_0x3e0232[_0x4c20('0x47')]);return db[_0x4c20('0x2b')]['find'](_0x2651e4)[_0x4c20('0x26')](handleEntityNotFound(_0x2c9319,null))['then'](respondWithResult(_0x2c9319,null))[_0x4c20('0x42')](handleError(_0x2c9319,null));};exports[_0x4c20('0x48')]=function(_0x51a219,_0x338050){return db[_0x4c20('0x2b')][_0x4c20('0x48')](_0x51a219[_0x4c20('0x49')],{})[_0x4c20('0x26')](respondWithResult(_0x338050,0xc9))[_0x4c20('0x42')](handleError(_0x338050,null));};exports[_0x4c20('0x24')]=function(_0x45366d,_0x1e1f25){if(_0x45366d[_0x4c20('0x49')]['id']){delete _0x45366d[_0x4c20('0x49')]['id'];}return db[_0x4c20('0x2b')][_0x4c20('0x4a')]({'where':{'id':_0x45366d[_0x4c20('0x44')]['id']}})['then'](handleEntityNotFound(_0x1e1f25,null))[_0x4c20('0x26')](saveUpdates(_0x45366d[_0x4c20('0x49')],null))['then'](respondWithResult(_0x1e1f25,null))[_0x4c20('0x42')](handleError(_0x1e1f25,null));};exports['destroy']=function(_0x233371,_0x61e9df){return db[_0x4c20('0x2b')][_0x4c20('0x4a')]({'where':{'id':_0x233371[_0x4c20('0x44')]['id']}})[_0x4c20('0x26')](handleEntityNotFound(_0x61e9df,null))[_0x4c20('0x26')](removeEntity(_0x61e9df,null))['catch'](handleError(_0x61e9df,null));};exports['getFields']=function(_0x4e4174,_0x1ee65c,_0x23e186){var _0xdaea40={};var _0x2c3a72={};var _0x5e82da;var _0x495c62;return db[_0x4c20('0x2b')][_0x4c20('0x4b')]({'where':{'id':_0x4e4174[_0x4c20('0x44')]['id']}})[_0x4c20('0x26')](handleEntityNotFound(_0x1ee65c,null))[_0x4c20('0x26')](function(_0x533620){if(_0x533620){_0x5e82da=_0x533620;_0x2c3a72[_0x4c20('0x2e')]=_[_0x4c20('0x45')](db[_0x4c20('0x4c')][_0x4c20('0x46')]);_0x2c3a72[_0x4c20('0x30')]=_[_0x4c20('0x45')](_0x4e4174[_0x4c20('0x30')]);_0x2c3a72[_0x4c20('0x31')]=_[_0x4c20('0x32')](_0x2c3a72[_0x4c20('0x2e')],_0x2c3a72[_0x4c20('0x30')]);_0xdaea40[_0x4c20('0x33')]=_[_0x4c20('0x32')](_0x2c3a72[_0x4c20('0x2e')],qs[_0x4c20('0x34')](_0x4e4174[_0x4c20('0x30')][_0x4c20('0x34')]));_0xdaea40[_0x4c20('0x33')]=_0xdaea40['attributes'][_0x4c20('0x35')]?_0xdaea40['attributes']:_0x2c3a72[_0x4c20('0x2e')];_0xdaea40['order']=qs[_0x4c20('0x38')](_0x4e4174[_0x4c20('0x30')][_0x4c20('0x38')]);_0xdaea40[_0x4c20('0x39')]=qs[_0x4c20('0x31')](_[_0x4c20('0x3a')](_0x4e4174[_0x4c20('0x30')],_0x2c3a72[_0x4c20('0x31')]));if(_0x4e4174['query'][_0x4c20('0x3b')]){_0xdaea40[_0x4c20('0x39')]=_[_0x4c20('0x3c')](_0xdaea40[_0x4c20('0x39')],{'$or':_['map'](_0xdaea40[_0x4c20('0x33')],function(_0x1e8717){var _0x5d8701={};_0x5d8701[_0x1e8717]={'$like':'%'+_0x4e4174[_0x4c20('0x30')][_0x4c20('0x3b')]+'%'};return _0x5d8701;})});}_0xdaea40=_[_0x4c20('0x3c')]({},_0xdaea40,_0x4e4174[_0x4c20('0x47')]);return _0x5e82da[_0x4c20('0x4d')](_0xdaea40);}})[_0x4c20('0x26')](function(_0x3cc6bc){if(_0x3cc6bc){_0x495c62=_0x3cc6bc['length'];if(!_0x4e4174[_0x4c20('0x30')][_0x4c20('0x36')]('nolimit')){_0xdaea40[_0x4c20('0x1f')]=qs[_0x4c20('0x1f')](_0x4e4174['query'][_0x4c20('0x1f')]);_0xdaea40[_0x4c20('0x1c')]=qs[_0x4c20('0x1c')](_0x4e4174['query']['offset']);}return _0x5e82da[_0x4c20('0x4d')](_0xdaea40);}})[_0x4c20('0x26')](function(_0x35e38d){if(_0x35e38d){return _0x35e38d?{'count':_0x495c62,'rows':_0x35e38d}:null;}})[_0x4c20('0x26')](respondWithResult(_0x1ee65c,null))['catch'](handleError(_0x1ee65c,null));};exports[_0x4c20('0x4e')]=function(_0x6f5b07,_0x27bd31,_0x1f13fb){var _0x36ed1d={};var _0x3301b3={};var _0x17cc03;var _0x3bd828;return db['DeskConfiguration'][_0x4c20('0x4b')]({'where':{'id':_0x6f5b07[_0x4c20('0x44')]['id']}})[_0x4c20('0x26')](handleEntityNotFound(_0x27bd31,null))['then'](function(_0x339ab1){if(_0x339ab1){_0x17cc03=_0x339ab1;_0x3301b3[_0x4c20('0x2e')]=_[_0x4c20('0x45')](db[_0x4c20('0x4c')][_0x4c20('0x46')]);_0x3301b3[_0x4c20('0x30')]=_[_0x4c20('0x45')](_0x6f5b07[_0x4c20('0x30')]);_0x3301b3[_0x4c20('0x31')]=_[_0x4c20('0x32')](_0x3301b3[_0x4c20('0x2e')],_0x3301b3[_0x4c20('0x30')]);_0x36ed1d[_0x4c20('0x33')]=_['intersection'](_0x3301b3['model'],qs[_0x4c20('0x34')](_0x6f5b07['query'][_0x4c20('0x34')]));_0x36ed1d[_0x4c20('0x33')]=_0x36ed1d['attributes'][_0x4c20('0x35')]?_0x36ed1d[_0x4c20('0x33')]:_0x3301b3['model'];_0x36ed1d[_0x4c20('0x4f')]=qs['sort'](_0x6f5b07[_0x4c20('0x30')][_0x4c20('0x38')]);_0x36ed1d[_0x4c20('0x39')]=qs['filters'](_[_0x4c20('0x3a')](_0x6f5b07[_0x4c20('0x30')],_0x3301b3[_0x4c20('0x31')]));if(_0x6f5b07[_0x4c20('0x30')][_0x4c20('0x3b')]){_0x36ed1d[_0x4c20('0x39')]=_[_0x4c20('0x3c')](_0x36ed1d[_0x4c20('0x39')],{'$or':_[_0x4c20('0x2f')](_0x36ed1d[_0x4c20('0x33')],function(_0x3aa586){var _0x4fa0c1={};_0x4fa0c1[_0x3aa586]={'$like':'%'+_0x6f5b07[_0x4c20('0x30')]['filter']+'%'};return _0x4fa0c1;})});}_0x36ed1d=_['merge']({},_0x36ed1d,_0x6f5b07[_0x4c20('0x47')]);return _0x17cc03[_0x4c20('0x4e')](_0x36ed1d);}})[_0x4c20('0x26')](function(_0x3dfc07){if(_0x3dfc07){_0x3bd828=_0x3dfc07['length'];if(!_0x6f5b07[_0x4c20('0x30')][_0x4c20('0x36')]('nolimit')){_0x36ed1d[_0x4c20('0x1f')]=qs[_0x4c20('0x1f')](_0x6f5b07[_0x4c20('0x30')][_0x4c20('0x1f')]);_0x36ed1d[_0x4c20('0x1c')]=qs[_0x4c20('0x1c')](_0x6f5b07[_0x4c20('0x30')][_0x4c20('0x1c')]);}return _0x17cc03[_0x4c20('0x4e')](_0x36ed1d);}})[_0x4c20('0x26')](function(_0x411168){if(_0x411168){return _0x411168?{'count':_0x3bd828,'rows':_0x411168}:null;}})[_0x4c20('0x26')](respondWithResult(_0x27bd31,null))[_0x4c20('0x42')](handleError(_0x27bd31,null));};exports['getDescriptions']=function(_0x4b13a2,_0x108ca6,_0x346be1){var _0x27c92a={};var _0x157f3e={};var _0x2e2d07;var _0x5644ac;return db[_0x4c20('0x2b')][_0x4c20('0x4b')]({'where':{'id':_0x4b13a2[_0x4c20('0x44')]['id']}})[_0x4c20('0x26')](handleEntityNotFound(_0x108ca6,null))[_0x4c20('0x26')](function(_0x3680e3){if(_0x3680e3){_0x2e2d07=_0x3680e3;_0x157f3e[_0x4c20('0x2e')]=_['keys'](db[_0x4c20('0x4c')]['rawAttributes']);_0x157f3e[_0x4c20('0x30')]=_['keys'](_0x4b13a2[_0x4c20('0x30')]);_0x157f3e[_0x4c20('0x31')]=_['intersection'](_0x157f3e[_0x4c20('0x2e')],_0x157f3e[_0x4c20('0x30')]);_0x27c92a[_0x4c20('0x33')]=_[_0x4c20('0x32')](_0x157f3e['model'],qs[_0x4c20('0x34')](_0x4b13a2['query'][_0x4c20('0x34')]));_0x27c92a['attributes']=_0x27c92a[_0x4c20('0x33')][_0x4c20('0x35')]?_0x27c92a[_0x4c20('0x33')]:_0x157f3e[_0x4c20('0x2e')];_0x27c92a[_0x4c20('0x4f')]=qs[_0x4c20('0x38')](_0x4b13a2[_0x4c20('0x30')][_0x4c20('0x38')]);_0x27c92a[_0x4c20('0x39')]=qs[_0x4c20('0x31')](_[_0x4c20('0x3a')](_0x4b13a2[_0x4c20('0x30')],_0x157f3e[_0x4c20('0x31')]));if(_0x4b13a2['query'][_0x4c20('0x3b')]){_0x27c92a[_0x4c20('0x39')]=_['merge'](_0x27c92a[_0x4c20('0x39')],{'$or':_[_0x4c20('0x2f')](_0x27c92a['attributes'],function(_0x2fd1ce){var _0x361414={};_0x361414[_0x2fd1ce]={'$like':'%'+_0x4b13a2[_0x4c20('0x30')][_0x4c20('0x3b')]+'%'};return _0x361414;})});}_0x27c92a=_[_0x4c20('0x3c')]({},_0x27c92a,_0x4b13a2[_0x4c20('0x47')]);return _0x2e2d07[_0x4c20('0x50')](_0x27c92a);}})[_0x4c20('0x26')](function(_0x5ba78a){if(_0x5ba78a){_0x5644ac=_0x5ba78a['length'];if(!_0x4b13a2[_0x4c20('0x30')][_0x4c20('0x36')](_0x4c20('0x37'))){_0x27c92a['limit']=qs[_0x4c20('0x1f')](_0x4b13a2['query']['limit']);_0x27c92a[_0x4c20('0x1c')]=qs[_0x4c20('0x1c')](_0x4b13a2['query'][_0x4c20('0x1c')]);}return _0x2e2d07['getDescriptions'](_0x27c92a);}})[_0x4c20('0x26')](function(_0x350ea1){if(_0x350ea1){return _0x350ea1?{'count':_0x5644ac,'rows':_0x350ea1}:null;}})[_0x4c20('0x26')](respondWithResult(_0x108ca6,null))['catch'](handleError(_0x108ca6,null));};exports[_0x4c20('0x51')]=function(_0x12e27e,_0x257135,_0x438663){var _0x114626={};var _0x3ce68a={};var _0x310650;var _0x35c55d;return db[_0x4c20('0x2b')][_0x4c20('0x4b')]({'where':{'id':_0x12e27e['params']['id']}})['then'](handleEntityNotFound(_0x257135,null))['then'](function(_0x434f84){if(_0x434f84){_0x310650=_0x434f84;_0x3ce68a[_0x4c20('0x2e')]=_['keys'](db[_0x4c20('0x52')]['rawAttributes']);_0x3ce68a[_0x4c20('0x30')]=_[_0x4c20('0x45')](_0x12e27e[_0x4c20('0x30')]);_0x3ce68a[_0x4c20('0x31')]=_[_0x4c20('0x32')](_0x3ce68a['model'],_0x3ce68a[_0x4c20('0x30')]);_0x114626['attributes']=_[_0x4c20('0x32')](_0x3ce68a[_0x4c20('0x2e')],qs[_0x4c20('0x34')](_0x12e27e[_0x4c20('0x30')][_0x4c20('0x34')]));_0x114626['attributes']=_0x114626['attributes']['length']?_0x114626[_0x4c20('0x33')]:_0x3ce68a[_0x4c20('0x2e')];_0x114626[_0x4c20('0x4f')]=qs[_0x4c20('0x38')](_0x12e27e['query'][_0x4c20('0x38')]);_0x114626['where']=qs[_0x4c20('0x31')](_[_0x4c20('0x3a')](_0x12e27e[_0x4c20('0x30')],_0x3ce68a[_0x4c20('0x31')]));if(_0x12e27e[_0x4c20('0x30')][_0x4c20('0x3b')]){_0x114626[_0x4c20('0x39')]=_[_0x4c20('0x3c')](_0x114626[_0x4c20('0x39')],{'$or':_[_0x4c20('0x2f')](_0x114626[_0x4c20('0x33')],function(_0x557605){var _0x11f849={};_0x11f849[_0x557605]={'$like':'%'+_0x12e27e[_0x4c20('0x30')]['filter']+'%'};return _0x11f849;})});}_0x114626=_[_0x4c20('0x3c')]({},_0x114626,_0x12e27e[_0x4c20('0x47')]);return _0x310650[_0x4c20('0x51')](_0x114626);}})[_0x4c20('0x26')](function(_0x50b5dd){if(_0x50b5dd){_0x35c55d=_0x50b5dd[_0x4c20('0x35')];if(!_0x12e27e[_0x4c20('0x30')][_0x4c20('0x36')](_0x4c20('0x37'))){_0x114626['limit']=qs['limit'](_0x12e27e[_0x4c20('0x30')][_0x4c20('0x1f')]);_0x114626[_0x4c20('0x1c')]=qs[_0x4c20('0x1c')](_0x12e27e[_0x4c20('0x30')][_0x4c20('0x1c')]);}return _0x310650['getTags'](_0x114626);}})[_0x4c20('0x26')](function(_0x910c93){if(_0x910c93){return _0x910c93?{'count':_0x35c55d,'rows':_0x910c93}:null;}})[_0x4c20('0x26')](respondWithResult(_0x257135,null))[_0x4c20('0x42')](handleError(_0x257135,null));};exports[_0x4c20('0x53')]=function(_0x58a009,_0x398749,_0x4e4b3c){if(_0x58a009[_0x4c20('0x49')]['id']){delete _0x58a009['body']['id'];}return db[_0x4c20('0x2b')]['findOne']({'where':{'id':_0x58a009[_0x4c20('0x44')]['id']}})[_0x4c20('0x26')](handleEntityNotFound(_0x398749,null))[_0x4c20('0x26')](function(_0x11d772){if(_0x11d772){return _0x11d772[_0x4c20('0x53')](_0x58a009[_0x4c20('0x49')][_0x4c20('0x54')]||[]);}return null;})[_0x4c20('0x26')](respondWithResult(_0x398749,null))[_0x4c20('0x42')](handleError(_0x398749,null));};
\ No newline at end of file
index e4eb396..de3fdf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa368=['../../config/logger','path','rimraf','../../config/environment','define','int_desk_configurations','lodash'];(function(_0x2647b4,_0x293e04){var _0x2d5654=function(_0xc813ed){while(--_0xc813ed){_0x2647b4['push'](_0x2647b4['shift']());}};_0x2d5654(++_0x293e04);}(_0xa368,0xe6));var _0x8a36=function(_0x1a9620,_0x173775){_0x1a9620=_0x1a9620-0x0;var _0x2f130c=_0xa368[_0x1a9620];return _0x2f130c;};'use strict';var _=require(_0x8a36('0x0'));var util=require('util');var logger=require(_0x8a36('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8a36('0x2'));var rimraf=require(_0x8a36('0x3'));var config=require(_0x8a36('0x4'));var attributes=require('./intDeskConfiguration.attributes');module['exports']=function(_0x4f51e5,_0x2d567f){return _0x4f51e5[_0x8a36('0x5')]('DeskConfiguration',attributes,{'tableName':_0x8a36('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f5a=['../../config/logger','api','moment','bluebird','rimraf','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','lodash','util'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x2f5a,0xca));var _0xa2f5=function(_0x4bc56e,_0x4f2fc0){_0x4bc56e=_0x4bc56e-0x0;var _0x29c230=_0x2f5a[_0x4bc56e];return _0x29c230;};'use strict';var _=require(_0xa2f5('0x0'));var util=require(_0xa2f5('0x1'));var logger=require(_0xa2f5('0x2'))(_0xa2f5('0x3'));var moment=require(_0xa2f5('0x4'));var BPromise=require(_0xa2f5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa2f5('0x6'));var config=require('../../config/environment');var attributes=require(_0xa2f5('0x7'));module[_0xa2f5('0x8')]=function(_0x331fe1,_0x3d588f){return _0x331fe1[_0xa2f5('0x9')](_0xa2f5('0xa'),attributes,{'tableName':_0xa2f5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b8a92ed..244d7fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9148=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x24b125,_0x388877){var _0x3db334=function(_0x376319){while(--_0x376319){_0x24b125['push'](_0x24b125['shift']());}};_0x3db334(++_0x388877);}(_0x9148,0x10d));var _0x8914=function(_0x461a33,_0x308724){_0x461a33=_0x461a33-0x0;var _0x39227d=_0x9148[_0x461a33];return _0x39227d;};'use strict';var _=require(_0x8914('0x0'));var util=require(_0x8914('0x1'));var moment=require(_0x8914('0x2'));var BPromise=require(_0x8914('0x3'));var rs=require(_0x8914('0x4'));var fs=require('fs');var Redis=require(_0x8914('0x5'));var db=require(_0x8914('0x6'))['db'];var utils=require(_0x8914('0x7'));var logger=require(_0x8914('0x8'))(_0x8914('0x9'));var config=require(_0x8914('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x8914('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cd146,_0x58e892,_0x1b0445){return new BPromise(function(_0x15aff5,_0x1e2d12){return client[_0x8914('0xc')](_0x1cd146,_0x1b0445)['then'](function(_0x2e7aac){logger[_0x8914('0xd')](_0x8914('0xe'),_0x58e892,_0x8914('0xf'));logger[_0x8914('0x10')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x58e892,_0x8914('0xf'),JSON[_0x8914('0x11')](_0x2e7aac));if(_0x2e7aac['error']){if(_0x2e7aac['error'][_0x8914('0x12')]===0x1f4){logger[_0x8914('0x13')](_0x8914('0xe'),_0x58e892,_0x2e7aac[_0x8914('0x13')][_0x8914('0x14')]);return _0x1e2d12(_0x2e7aac[_0x8914('0x13')]['message']);}logger[_0x8914('0x13')](_0x8914('0xe'),_0x58e892,_0x2e7aac['error'][_0x8914('0x14')]);return _0x15aff5(_0x2e7aac[_0x8914('0x13')][_0x8914('0x14')]);}else{logger[_0x8914('0xd')](_0x8914('0xe'),_0x58e892,_0x8914('0xf'));_0x15aff5(_0x2e7aac[_0x8914('0x15')][_0x8914('0x14')]);}})[_0x8914('0x16')](function(_0x4ca130){logger[_0x8914('0x13')](_0x8914('0xe'),_0x58e892,_0x4ca130);_0x1e2d12(_0x4ca130);});});}
\ No newline at end of file
+var _0xfed7=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x403967,_0x3d7b8d){var _0x5df22d=function(_0x19be8e){while(--_0x19be8e){_0x403967['push'](_0x403967['shift']());}};_0x5df22d(++_0x3d7b8d);}(_0xfed7,0x190));var _0x7fed=function(_0x23ac30,_0x2a1d00){_0x23ac30=_0x23ac30-0x0;var _0x208fec=_0xfed7[_0x23ac30];return _0x208fec;};'use strict';var _=require(_0x7fed('0x0'));var util=require(_0x7fed('0x1'));var moment=require(_0x7fed('0x2'));var BPromise=require(_0x7fed('0x3'));var rs=require(_0x7fed('0x4'));var fs=require('fs');var Redis=require(_0x7fed('0x5'));var db=require(_0x7fed('0x6'))['db'];var utils=require(_0x7fed('0x7'));var logger=require(_0x7fed('0x8'))(_0x7fed('0x9'));var config=require('../../config/environment');var jayson=require(_0x7fed('0xa'));var client=jayson[_0x7fed('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5eeb9f,_0x42415f,_0x14fb65){return new BPromise(function(_0x1ebaad,_0x1a62bb){return client[_0x7fed('0xc')](_0x5eeb9f,_0x14fb65)['then'](function(_0x15a895){logger[_0x7fed('0xd')](_0x7fed('0xe'),_0x42415f,_0x7fed('0xf'));logger[_0x7fed('0x10')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x42415f,_0x7fed('0xf'),JSON[_0x7fed('0x11')](_0x15a895));if(_0x15a895[_0x7fed('0x12')]){if(_0x15a895['error']['code']===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x42415f,_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);return _0x1a62bb(_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);}logger[_0x7fed('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x42415f,_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);return _0x1ebaad(_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);}else{logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x42415f,_0x7fed('0xf'));_0x1ebaad(_0x15a895[_0x7fed('0x14')]['message']);}})['catch'](function(_0x32a10b){logger[_0x7fed('0x12')](_0x7fed('0xe'),_0x42415f,_0x32a10b);_0x1a62bb(_0x32a10b);});});}
\ No newline at end of file
index 601411d..cfdbffd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabad=['../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x263a8a,_0x5c088d){var _0x226a79=function(_0x53a7d1){while(--_0x53a7d1){_0x263a8a['push'](_0x263a8a['shift']());}};_0x226a79(++_0x5c088d);}(_0xabad,0x150));var _0xdaba=function(_0x14bc03,_0x1f858b){_0x14bc03=_0x14bc03-0x0;var _0x9af4a1=_0xabad[_0x14bc03];return _0x9af4a1;};'use strict';var multer=require(_0xdaba('0x0'));var util=require('util');var path=require(_0xdaba('0x1'));var timeout=require(_0xdaba('0x2'));var express=require(_0xdaba('0x3'));var router=express['Router']();var fs_extra=require(_0xdaba('0x4'));var auth=require(_0xdaba('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdaba('0x6'));var controller=require(_0xdaba('0x7'));router[_0xdaba('0x8')]('/',auth[_0xdaba('0x9')](),controller[_0xdaba('0xa')]);router[_0xdaba('0x8')](_0xdaba('0xb'),auth[_0xdaba('0x9')](),controller['show']);router[_0xdaba('0xc')]('/',auth[_0xdaba('0x9')](),controller[_0xdaba('0xd')]);router[_0xdaba('0xe')]('/:id',auth[_0xdaba('0x9')](),controller[_0xdaba('0xf')]);router[_0xdaba('0x10')](_0xdaba('0xb'),auth[_0xdaba('0x9')](),controller[_0xdaba('0x11')]);module[_0xdaba('0x12')]=router;
\ No newline at end of file
+var _0x32f3=['delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','show','post','put','update'];(function(_0x17981e,_0x314461){var _0x1a8b78=function(_0x5f4d13){while(--_0x5f4d13){_0x17981e['push'](_0x17981e['shift']());}};_0x1a8b78(++_0x314461);}(_0x32f3,0xd4));var _0x332f=function(_0x50f881,_0x1c9a32){_0x50f881=_0x50f881-0x0;var _0x35703c=_0x32f3[_0x50f881];return _0x35703c;};'use strict';var multer=require('multer');var util=require(_0x332f('0x0'));var path=require(_0x332f('0x1'));var timeout=require(_0x332f('0x2'));var express=require('express');var router=express[_0x332f('0x3')]();var fs_extra=require(_0x332f('0x4'));var auth=require(_0x332f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x332f('0x6'));var controller=require(_0x332f('0x7'));router[_0x332f('0x8')]('/',auth[_0x332f('0x9')](),controller[_0x332f('0xa')]);router[_0x332f('0x8')](_0x332f('0xb'),auth[_0x332f('0x9')](),controller[_0x332f('0xc')]);router[_0x332f('0xd')]('/',auth[_0x332f('0x9')](),controller['create']);router[_0x332f('0xe')](_0x332f('0xb'),auth['isAuthenticated'](),controller[_0x332f('0xf')]);router[_0x332f('0x10')]('/:id',auth[_0x332f('0x9')](),controller[_0x332f('0x11')]);module[_0x332f('0x12')]=router;
\ No newline at end of file
index de079a7..971ad4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb18a=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0xb18a,0x12f));var _0xab18=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xb18a[_0x403c20];return _0x2b271a;};'use strict';var Sequelize=require(_0xab18('0x0'));module['exports']={'type':{'type':Sequelize[_0xab18('0x1')](_0xab18('0x2'),_0xab18('0x3'),_0xab18('0x4'),_0xab18('0x5'),_0xab18('0x6')),'defaultValue':_0xab18('0x2')},'content':{'type':Sequelize[_0xab18('0x7')]},'key':{'type':Sequelize[_0xab18('0x7')]},'keyType':{'type':Sequelize[_0xab18('0x1')]('string',_0xab18('0x3'),_0xab18('0x4'))},'keyContent':{'type':Sequelize[_0xab18('0x7')]},'idField':{'type':Sequelize[_0xab18('0x7')]},'nameField':{'type':Sequelize[_0xab18('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xab18('0x7')]}};
\ No newline at end of file
+var _0xed5b=['sequelize','ENUM','string','variable','STRING','customVariable','BOOLEAN'];(function(_0x1c5963,_0x2cface){var _0x21e527=function(_0x553323){while(--_0x553323){_0x1c5963['push'](_0x1c5963['shift']());}};_0x21e527(++_0x2cface);}(_0xed5b,0x1b2));var _0xbed5=function(_0x47ebeb,_0x2def0f){_0x47ebeb=_0x47ebeb-0x0;var _0x4143a4=_0xed5b[_0x47ebeb];return _0x4143a4;};'use strict';var Sequelize=require(_0xbed5('0x0'));module['exports']={'type':{'type':Sequelize[_0xbed5('0x1')](_0xbed5('0x2'),_0xbed5('0x3'),'customVariable','keyValue','picklist'),'defaultValue':_0xbed5('0x2')},'content':{'type':Sequelize[_0xbed5('0x4')]},'key':{'type':Sequelize[_0xbed5('0x4')]},'keyType':{'type':Sequelize['ENUM'](_0xbed5('0x2'),_0xbed5('0x3'),_0xbed5('0x5'))},'keyContent':{'type':Sequelize[_0xbed5('0x4')]},'idField':{'type':Sequelize[_0xbed5('0x4')]},'nameField':{'type':Sequelize[_0xbed5('0x4')]},'customField':{'type':Sequelize[_0xbed5('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbed5('0x4')]}};
\ No newline at end of file
index f860683..a8a1071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ad=['catch','create','body','update','params','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','limit','undefined','count','offset','status','set','Content-Range','json','then','destroy','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','rows','includeAll','find'];(function(_0x2d31d3,_0x4b13e5){var _0xe4b163=function(_0xd7e7c4){while(--_0xd7e7c4){_0x2d31d3['push'](_0x2d31d3['shift']());}};_0xe4b163(++_0x4b13e5);}(_0xb2ad,0x16d));var _0xdb2a=function(_0x2dad27,_0x5887f3){_0x2dad27=_0x2dad27-0x0;var _0x2fb84c=_0xb2ad[_0x2dad27];return _0x2fb84c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdb2a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdb2a('0x1'));var rp=require(_0xdb2a('0x2'));var moment=require(_0xdb2a('0x3'));var BPromise=require(_0xdb2a('0x4'));var Mustache=require(_0xdb2a('0x5'));var util=require('util');var path=require(_0xdb2a('0x6'));var sox=require(_0xdb2a('0x7'));var csv=require(_0xdb2a('0x8'));var ejs=require(_0xdb2a('0x9'));var fs=require('fs');var fs_extra=require(_0xdb2a('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xdb2a('0xb'));var jsforce=require(_0xdb2a('0xc'));var deskjs=require(_0xdb2a('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdb2a('0xe'));var Papa=require(_0xdb2a('0xf'));var Redis=require('ioredis');var authService=require(_0xdb2a('0x10'));var qs=require(_0xdb2a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb2a('0x12'))(_0xdb2a('0x13'));var utils=require(_0xdb2a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xdb2a('0x15'));var db=require(_0xdb2a('0x16'))['db'];function respondWithStatusCode(_0x5c6688,_0x5f4a7b){_0x5f4a7b=_0x5f4a7b||0xcc;return function(_0x4e1cda){if(_0x4e1cda){return _0x5c6688[_0xdb2a('0x17')](_0x5f4a7b);}return _0x5c6688['status'](_0x5f4a7b)[_0xdb2a('0x18')]();};}function respondWithResult(_0x3c3ac3,_0x527af2){_0x527af2=_0x527af2||0xc8;return function(_0x33045a){if(_0x33045a){return _0x3c3ac3['status'](_0x527af2)['json'](_0x33045a);}};}function respondWithFilteredResult(_0x5d8282,_0x5dbbb1){return function(_0x8a580e){if(_0x8a580e){var _0x2df1fd=typeof _0x5dbbb1['offset']==='undefined'&&typeof _0x5dbbb1[_0xdb2a('0x19')]===_0xdb2a('0x1a');var _0x440dab=_0x8a580e[_0xdb2a('0x1b')];var _0x52508d=_0x2df1fd?0x0:_0x5dbbb1[_0xdb2a('0x1c')];var _0x2de4cf=_0x2df1fd?_0x8a580e[_0xdb2a('0x1b')]:_0x5dbbb1['offset']+_0x5dbbb1['limit'];var _0x424583;if(_0x2de4cf>=_0x440dab){_0x2de4cf=_0x440dab;_0x424583=0xc8;}else{_0x424583=0xce;}_0x5d8282[_0xdb2a('0x1d')](_0x424583);return _0x5d8282[_0xdb2a('0x1e')](_0xdb2a('0x1f'),_0x52508d+'-'+_0x2de4cf+'/'+_0x440dab)[_0xdb2a('0x20')](_0x8a580e);}return null;};}function patchUpdates(_0x5e6a59){return function(_0x5c3824){try{jsonpatch['apply'](_0x5c3824,_0x5e6a59,!![]);}catch(_0x444fcf){return BPromise['reject'](_0x444fcf);}return _0x5c3824['save']();};}function saveUpdates(_0x1e6985,_0x449fba){return function(_0x46910c){if(_0x46910c){return _0x46910c['update'](_0x1e6985)[_0xdb2a('0x21')](function(_0x871b44){return _0x871b44;});}return null;};}function removeEntity(_0x16035f,_0x391378){return function(_0x1f3d54){if(_0x1f3d54){return _0x1f3d54[_0xdb2a('0x22')]()['then'](function(){_0x16035f[_0xdb2a('0x1d')](0xcc)[_0xdb2a('0x18')]();});}};}function handleEntityNotFound(_0x5f00fb,_0x332911){return function(_0x3645e9){if(!_0x3645e9){_0x5f00fb[_0xdb2a('0x17')](0x194);}return _0x3645e9;};}function handleError(_0x28252e,_0x4dd822){_0x4dd822=_0x4dd822||0x1f4;return function(_0xc50c3d){logger[_0xdb2a('0x23')](_0xc50c3d[_0xdb2a('0x24')]);if(_0xc50c3d[_0xdb2a('0x25')]){delete _0xc50c3d['name'];}_0x28252e[_0xdb2a('0x1d')](_0x4dd822)[_0xdb2a('0x26')](_0xc50c3d);};}exports[_0xdb2a('0x27')]=function(_0x2b1c6d,_0x235c06){var _0x565889={},_0x852103={},_0x19e39c={'count':0x0,'rows':[]};var _0x42cc46=_[_0xdb2a('0x28')](db[_0xdb2a('0x29')][_0xdb2a('0x2a')],function(_0x134053){return{'name':_0x134053[_0xdb2a('0x2b')],'type':_0x134053[_0xdb2a('0x2c')][_0xdb2a('0x2d')]};});_0x852103[_0xdb2a('0x2e')]=_[_0xdb2a('0x28')](_0x42cc46,_0xdb2a('0x25'));_0x852103[_0xdb2a('0x2f')]=_[_0xdb2a('0x30')](_0x2b1c6d[_0xdb2a('0x2f')]);_0x852103[_0xdb2a('0x31')]=_[_0xdb2a('0x32')](_0x852103[_0xdb2a('0x2e')],_0x852103[_0xdb2a('0x2f')]);_0x565889['attributes']=_[_0xdb2a('0x32')](_0x852103[_0xdb2a('0x2e')],qs[_0xdb2a('0x33')](_0x2b1c6d['query'][_0xdb2a('0x33')]));_0x565889[_0xdb2a('0x34')]=_0x565889[_0xdb2a('0x34')][_0xdb2a('0x35')]?_0x565889[_0xdb2a('0x34')]:_0x852103[_0xdb2a('0x2e')];if(!_0x2b1c6d[_0xdb2a('0x2f')][_0xdb2a('0x36')](_0xdb2a('0x37'))){_0x565889[_0xdb2a('0x19')]=qs[_0xdb2a('0x19')](_0x2b1c6d[_0xdb2a('0x2f')][_0xdb2a('0x19')]);_0x565889[_0xdb2a('0x1c')]=qs[_0xdb2a('0x1c')](_0x2b1c6d['query'][_0xdb2a('0x1c')]);}_0x565889['order']=qs['sort'](_0x2b1c6d[_0xdb2a('0x2f')][_0xdb2a('0x38')]);_0x565889[_0xdb2a('0x39')]=qs[_0xdb2a('0x31')](_[_0xdb2a('0x3a')](_0x2b1c6d['query'],_0x852103['filters']),_0x42cc46);if(_0x2b1c6d[_0xdb2a('0x2f')]['filter']){_0x565889['where']=_[_0xdb2a('0x3b')](_0x565889[_0xdb2a('0x39')],{'$or':_[_0xdb2a('0x28')](_0x42cc46,function(_0x500616){if(_0x500616[_0xdb2a('0x2c')]!==_0xdb2a('0x3c')){var _0x2fa3e3={};_0x2fa3e3[_0x500616['name']]={'$like':'%'+_0x2b1c6d[_0xdb2a('0x2f')][_0xdb2a('0x3d')]+'%'};return _0x2fa3e3;}})});}_0x565889=_[_0xdb2a('0x3b')]({},_0x565889,_0x2b1c6d[_0xdb2a('0x3e')]);var _0x1efcf8={'where':_0x565889[_0xdb2a('0x39')]};return db[_0xdb2a('0x29')]['count'](_0x1efcf8)[_0xdb2a('0x21')](function(_0x170d7c){_0x19e39c[_0xdb2a('0x1b')]=_0x170d7c;if(_0x2b1c6d[_0xdb2a('0x2f')]['includeAll']){_0x565889[_0xdb2a('0x3f')]=[{'all':!![]}];}return db[_0xdb2a('0x29')]['findAll'](_0x565889);})[_0xdb2a('0x21')](function(_0x39c387){_0x19e39c[_0xdb2a('0x40')]=_0x39c387;return _0x19e39c;})[_0xdb2a('0x21')](respondWithFilteredResult(_0x235c06,_0x565889))['catch'](handleError(_0x235c06,null));};exports['show']=function(_0x4b14f8,_0x2e56b6){var _0x2c69d3={'raw':!![],'where':{'id':_0x4b14f8['params']['id']}},_0x54ffcc={};_0x54ffcc['model']=_['keys'](db[_0xdb2a('0x29')]['rawAttributes']);_0x54ffcc[_0xdb2a('0x2f')]=_[_0xdb2a('0x30')](_0x4b14f8[_0xdb2a('0x2f')]);_0x54ffcc[_0xdb2a('0x31')]=_['intersection'](_0x54ffcc[_0xdb2a('0x2e')],_0x54ffcc[_0xdb2a('0x2f')]);_0x2c69d3[_0xdb2a('0x34')]=_['intersection'](_0x54ffcc[_0xdb2a('0x2e')],qs[_0xdb2a('0x33')](_0x4b14f8[_0xdb2a('0x2f')][_0xdb2a('0x33')]));_0x2c69d3['attributes']=_0x2c69d3[_0xdb2a('0x34')]['length']?_0x2c69d3[_0xdb2a('0x34')]:_0x54ffcc['model'];if(_0x4b14f8['query'][_0xdb2a('0x41')]){_0x2c69d3[_0xdb2a('0x3f')]=[{'all':!![]}];}_0x2c69d3=_[_0xdb2a('0x3b')]({},_0x2c69d3,_0x4b14f8[_0xdb2a('0x3e')]);return db[_0xdb2a('0x29')][_0xdb2a('0x42')](_0x2c69d3)[_0xdb2a('0x21')](handleEntityNotFound(_0x2e56b6,null))['then'](respondWithResult(_0x2e56b6,null))[_0xdb2a('0x43')](handleError(_0x2e56b6,null));};exports[_0xdb2a('0x44')]=function(_0x1352a3,_0x300543){return db['DeskField'][_0xdb2a('0x44')](_0x1352a3[_0xdb2a('0x45')],{})['then'](respondWithResult(_0x300543,0xc9))[_0xdb2a('0x43')](handleError(_0x300543,null));};exports[_0xdb2a('0x46')]=function(_0x2daae5,_0x2079d4){if(_0x2daae5['body']['id']){delete _0x2daae5['body']['id'];}return db[_0xdb2a('0x29')]['find']({'where':{'id':_0x2daae5[_0xdb2a('0x47')]['id']}})['then'](handleEntityNotFound(_0x2079d4,null))[_0xdb2a('0x21')](saveUpdates(_0x2daae5[_0xdb2a('0x45')],null))[_0xdb2a('0x21')](respondWithResult(_0x2079d4,null))['catch'](handleError(_0x2079d4,null));};exports[_0xdb2a('0x22')]=function(_0x471013,_0x1ebf04){return db['DeskField'][_0xdb2a('0x42')]({'where':{'id':_0x471013['params']['id']}})[_0xdb2a('0x21')](handleEntityNotFound(_0x1ebf04,null))[_0xdb2a('0x21')](removeEntity(_0x1ebf04,null))['catch'](handleError(_0x1ebf04,null));};
\ No newline at end of file
+var _0x4cad=['intersection','fields','attributes','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','options','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','DeskField','rawAttributes','fieldName','type','key','model','query','filters'];(function(_0xe8fbd5,_0x491d60){var _0x43bf81=function(_0x45a5ae){while(--_0x45a5ae){_0xe8fbd5['push'](_0xe8fbd5['shift']());}};_0x43bf81(++_0x491d60);}(_0x4cad,0x179));var _0xd4ca=function(_0x36c754,_0x55f748){_0x36c754=_0x36c754-0x0;var _0x1f0903=_0x4cad[_0x36c754];return _0x1f0903;};'use strict';var emlformat=require(_0xd4ca('0x0'));var rimraf=require(_0xd4ca('0x1'));var zipdir=require(_0xd4ca('0x2'));var jsonpatch=require(_0xd4ca('0x3'));var rp=require(_0xd4ca('0x4'));var moment=require('moment');var BPromise=require(_0xd4ca('0x5'));var Mustache=require(_0xd4ca('0x6'));var util=require(_0xd4ca('0x7'));var path=require(_0xd4ca('0x8'));var sox=require(_0xd4ca('0x9'));var csv=require(_0xd4ca('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd4ca('0xb'));var deskjs=require(_0xd4ca('0xc'));var toCsv=require(_0xd4ca('0xa'));var querystring=require(_0xd4ca('0xd'));var Papa=require(_0xd4ca('0xe'));var Redis=require(_0xd4ca('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd4ca('0x10'));var as=require(_0xd4ca('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd4ca('0x12'))(_0xd4ca('0x13'));var utils=require('../../config/utils');var config=require(_0xd4ca('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd4ca('0x15'))['db'];function respondWithStatusCode(_0x47dfd5,_0x19104c){_0x19104c=_0x19104c||0xcc;return function(_0x29341d){if(_0x29341d){return _0x47dfd5[_0xd4ca('0x16')](_0x19104c);}return _0x47dfd5[_0xd4ca('0x17')](_0x19104c)['end']();};}function respondWithResult(_0x2af4bf,_0x1a0c47){_0x1a0c47=_0x1a0c47||0xc8;return function(_0x3231a9){if(_0x3231a9){return _0x2af4bf[_0xd4ca('0x17')](_0x1a0c47)[_0xd4ca('0x18')](_0x3231a9);}};}function respondWithFilteredResult(_0x31ed5c,_0x43cd03){return function(_0x12a302){if(_0x12a302){var _0x637a8f=typeof _0x43cd03['offset']===_0xd4ca('0x19')&&typeof _0x43cd03[_0xd4ca('0x1a')]===_0xd4ca('0x19');var _0x3a71af=_0x12a302[_0xd4ca('0x1b')];var _0x19a8a3=_0x637a8f?0x0:_0x43cd03[_0xd4ca('0x1c')];var _0x15246e=_0x637a8f?_0x12a302[_0xd4ca('0x1b')]:_0x43cd03['offset']+_0x43cd03[_0xd4ca('0x1a')];var _0x17e59f;if(_0x15246e>=_0x3a71af){_0x15246e=_0x3a71af;_0x17e59f=0xc8;}else{_0x17e59f=0xce;}_0x31ed5c[_0xd4ca('0x17')](_0x17e59f);return _0x31ed5c[_0xd4ca('0x1d')](_0xd4ca('0x1e'),_0x19a8a3+'-'+_0x15246e+'/'+_0x3a71af)['json'](_0x12a302);}return null;};}function patchUpdates(_0x2b8c16){return function(_0x20e689){try{jsonpatch[_0xd4ca('0x1f')](_0x20e689,_0x2b8c16,!![]);}catch(_0xbd2d6f){return BPromise[_0xd4ca('0x20')](_0xbd2d6f);}return _0x20e689[_0xd4ca('0x21')]();};}function saveUpdates(_0x198992,_0x21316f){return function(_0x593d67){if(_0x593d67){return _0x593d67[_0xd4ca('0x22')](_0x198992)[_0xd4ca('0x23')](function(_0x46bfb3){return _0x46bfb3;});}return null;};}function removeEntity(_0x4300d1,_0x4b7798){return function(_0x2e513a){if(_0x2e513a){return _0x2e513a[_0xd4ca('0x24')]()[_0xd4ca('0x23')](function(){_0x4300d1[_0xd4ca('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eb25a,_0x1459dc){return function(_0x374370){if(!_0x374370){_0x5eb25a[_0xd4ca('0x16')](0x194);}return _0x374370;};}function handleError(_0x317c3a,_0x1135b3){_0x1135b3=_0x1135b3||0x1f4;return function(_0x20fad2){logger['error'](_0x20fad2[_0xd4ca('0x25')]);if(_0x20fad2[_0xd4ca('0x26')]){delete _0x20fad2[_0xd4ca('0x26')];}_0x317c3a[_0xd4ca('0x17')](_0x1135b3)[_0xd4ca('0x27')](_0x20fad2);};}exports['index']=function(_0x560a44,_0x136258){var _0xac2533={},_0x2bff12={},_0x2f4553={'count':0x0,'rows':[]};var _0x4713e8=_[_0xd4ca('0x28')](db[_0xd4ca('0x29')][_0xd4ca('0x2a')],function(_0x4c68ce){return{'name':_0x4c68ce[_0xd4ca('0x2b')],'type':_0x4c68ce[_0xd4ca('0x2c')][_0xd4ca('0x2d')]};});_0x2bff12[_0xd4ca('0x2e')]=_[_0xd4ca('0x28')](_0x4713e8,_0xd4ca('0x26'));_0x2bff12['query']=_['keys'](_0x560a44[_0xd4ca('0x2f')]);_0x2bff12[_0xd4ca('0x30')]=_['intersection'](_0x2bff12[_0xd4ca('0x2e')],_0x2bff12[_0xd4ca('0x2f')]);_0xac2533['attributes']=_[_0xd4ca('0x31')](_0x2bff12['model'],qs[_0xd4ca('0x32')](_0x560a44[_0xd4ca('0x2f')][_0xd4ca('0x32')]));_0xac2533['attributes']=_0xac2533[_0xd4ca('0x33')]['length']?_0xac2533['attributes']:_0x2bff12[_0xd4ca('0x2e')];if(!_0x560a44[_0xd4ca('0x2f')][_0xd4ca('0x34')](_0xd4ca('0x35'))){_0xac2533[_0xd4ca('0x1a')]=qs[_0xd4ca('0x1a')](_0x560a44[_0xd4ca('0x2f')][_0xd4ca('0x1a')]);_0xac2533[_0xd4ca('0x1c')]=qs['offset'](_0x560a44[_0xd4ca('0x2f')][_0xd4ca('0x1c')]);}_0xac2533[_0xd4ca('0x36')]=qs['sort'](_0x560a44[_0xd4ca('0x2f')]['sort']);_0xac2533[_0xd4ca('0x37')]=qs[_0xd4ca('0x30')](_[_0xd4ca('0x38')](_0x560a44[_0xd4ca('0x2f')],_0x2bff12['filters']),_0x4713e8);if(_0x560a44[_0xd4ca('0x2f')][_0xd4ca('0x39')]){_0xac2533['where']=_[_0xd4ca('0x3a')](_0xac2533[_0xd4ca('0x37')],{'$or':_['map'](_0x4713e8,function(_0x579c4b){if(_0x579c4b[_0xd4ca('0x2c')]!==_0xd4ca('0x3b')){var _0x40bcb3={};_0x40bcb3[_0x579c4b[_0xd4ca('0x26')]]={'$like':'%'+_0x560a44['query']['filter']+'%'};return _0x40bcb3;}})});}_0xac2533=_[_0xd4ca('0x3a')]({},_0xac2533,_0x560a44['options']);var _0x48f3d6={'where':_0xac2533[_0xd4ca('0x37')]};return db['DeskField']['count'](_0x48f3d6)[_0xd4ca('0x23')](function(_0x957984){_0x2f4553['count']=_0x957984;if(_0x560a44['query'][_0xd4ca('0x3c')]){_0xac2533[_0xd4ca('0x3d')]=[{'all':!![]}];}return db[_0xd4ca('0x29')][_0xd4ca('0x3e')](_0xac2533);})[_0xd4ca('0x23')](function(_0x3563ad){_0x2f4553['rows']=_0x3563ad;return _0x2f4553;})[_0xd4ca('0x23')](respondWithFilteredResult(_0x136258,_0xac2533))[_0xd4ca('0x3f')](handleError(_0x136258,null));};exports[_0xd4ca('0x40')]=function(_0x31a169,_0x3f1282){var _0xef7b96={'raw':!![],'where':{'id':_0x31a169[_0xd4ca('0x41')]['id']}},_0x174c1d={};_0x174c1d['model']=_[_0xd4ca('0x42')](db[_0xd4ca('0x29')]['rawAttributes']);_0x174c1d[_0xd4ca('0x2f')]=_[_0xd4ca('0x42')](_0x31a169[_0xd4ca('0x2f')]);_0x174c1d[_0xd4ca('0x30')]=_[_0xd4ca('0x31')](_0x174c1d[_0xd4ca('0x2e')],_0x174c1d[_0xd4ca('0x2f')]);_0xef7b96['attributes']=_[_0xd4ca('0x31')](_0x174c1d[_0xd4ca('0x2e')],qs[_0xd4ca('0x32')](_0x31a169[_0xd4ca('0x2f')][_0xd4ca('0x32')]));_0xef7b96[_0xd4ca('0x33')]=_0xef7b96[_0xd4ca('0x33')]['length']?_0xef7b96['attributes']:_0x174c1d[_0xd4ca('0x2e')];if(_0x31a169[_0xd4ca('0x2f')][_0xd4ca('0x3c')]){_0xef7b96[_0xd4ca('0x3d')]=[{'all':!![]}];}_0xef7b96=_['merge']({},_0xef7b96,_0x31a169[_0xd4ca('0x43')]);return db[_0xd4ca('0x29')]['find'](_0xef7b96)[_0xd4ca('0x23')](handleEntityNotFound(_0x3f1282,null))[_0xd4ca('0x23')](respondWithResult(_0x3f1282,null))[_0xd4ca('0x3f')](handleError(_0x3f1282,null));};exports[_0xd4ca('0x44')]=function(_0x109603,_0x9afe0a){return db[_0xd4ca('0x29')][_0xd4ca('0x44')](_0x109603[_0xd4ca('0x45')],{})[_0xd4ca('0x23')](respondWithResult(_0x9afe0a,0xc9))['catch'](handleError(_0x9afe0a,null));};exports[_0xd4ca('0x22')]=function(_0x4901c4,_0x386800){if(_0x4901c4[_0xd4ca('0x45')]['id']){delete _0x4901c4[_0xd4ca('0x45')]['id'];}return db['DeskField'][_0xd4ca('0x46')]({'where':{'id':_0x4901c4[_0xd4ca('0x41')]['id']}})[_0xd4ca('0x23')](handleEntityNotFound(_0x386800,null))[_0xd4ca('0x23')](saveUpdates(_0x4901c4[_0xd4ca('0x45')],null))[_0xd4ca('0x23')](respondWithResult(_0x386800,null))['catch'](handleError(_0x386800,null));};exports[_0xd4ca('0x24')]=function(_0x37bb55,_0xbb0cc2){return db[_0xd4ca('0x29')][_0xd4ca('0x46')]({'where':{'id':_0x37bb55[_0xd4ca('0x41')]['id']}})[_0xd4ca('0x23')](handleEntityNotFound(_0xbb0cc2,null))['then'](removeEntity(_0xbb0cc2,null))['catch'](handleError(_0xbb0cc2,null));};
\ No newline at end of file
index 645d620..1c4728f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf891=['moment','bluebird','request-promise','rimraf','./intDeskField.attributes','DeskField','idField','FieldId','lodash','util','../../config/logger'];(function(_0x65a1e4,_0x39cf59){var _0x2e173c=function(_0x3ca385){while(--_0x3ca385){_0x65a1e4['push'](_0x65a1e4['shift']());}};_0x2e173c(++_0x39cf59);}(_0xf891,0xb8));var _0x1f89=function(_0x4dbf74,_0x3c58c4){_0x4dbf74=_0x4dbf74-0x0;var _0x377c44=_0xf891[_0x4dbf74];return _0x377c44;};'use strict';var _=require(_0x1f89('0x0'));var util=require(_0x1f89('0x1'));var logger=require(_0x1f89('0x2'))('api');var moment=require(_0x1f89('0x3'));var BPromise=require(_0x1f89('0x4'));var rp=require(_0x1f89('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1f89('0x6'));var config=require('../../config/environment');var attributes=require(_0x1f89('0x7'));module['exports']=function(_0xb50bcd,_0x4ca2b){return _0xb50bcd['define'](_0x1f89('0x8'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x1f89('0x9'),_0x1f89('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x874d=['exports','define','DeskField','int_desk_fields','desk_unique_index','idField','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intDeskField.attributes'];(function(_0x12ff2c,_0x4cab86){var _0x2467a3=function(_0x1f515c){while(--_0x1f515c){_0x12ff2c['push'](_0x12ff2c['shift']());}};_0x2467a3(++_0x4cab86);}(_0x874d,0x1c6));var _0xd874=function(_0x13524d,_0x505b49){_0x13524d=_0x13524d-0x0;var _0x9918b4=_0x874d[_0x13524d];return _0x9918b4;};'use strict';var _=require(_0xd874('0x0'));var util=require('util');var logger=require(_0xd874('0x1'))(_0xd874('0x2'));var moment=require('moment');var BPromise=require(_0xd874('0x3'));var rp=require(_0xd874('0x4'));var fs=require('fs');var path=require(_0xd874('0x5'));var rimraf=require('rimraf');var config=require(_0xd874('0x6'));var attributes=require(_0xd874('0x7'));module[_0xd874('0x8')]=function(_0x17c11a,_0x1c2930){return _0x17c11a[_0xd874('0x9')](_0xd874('0xa'),attributes,{'tableName':_0xd874('0xb'),'paranoid':![],'indexes':[{'name':_0xd874('0xc'),'fields':[_0xd874('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6139f30..1aeaeff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb05a=['request','then','info','request\x20sent','stringify','error','code','message','DeskField,\x20%s,\x20%s','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x52b770,_0x4a935a){var _0x542cfd=function(_0x4d3450){while(--_0x4d3450){_0x52b770['push'](_0x52b770['shift']());}};_0x542cfd(++_0x4a935a);}(_0xb05a,0x14b));var _0xab05=function(_0x22fb94,_0x9a235c){_0x22fb94=_0x22fb94-0x0;var _0x33da77=_0xb05a[_0x22fb94];return _0x33da77;};'use strict';var _=require(_0xab05('0x0'));var util=require(_0xab05('0x1'));var moment=require(_0xab05('0x2'));var BPromise=require(_0xab05('0x3'));var rs=require(_0xab05('0x4'));var fs=require('fs');var Redis=require(_0xab05('0x5'));var db=require(_0xab05('0x6'))['db'];var utils=require(_0xab05('0x7'));var logger=require(_0xab05('0x8'))(_0xab05('0x9'));var config=require(_0xab05('0xa'));var jayson=require(_0xab05('0xb'));var client=jayson[_0xab05('0xc')][_0xab05('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5c6fcd,_0x41608f,_0x2e09e7){return new BPromise(function(_0x1f0d51,_0x36c09d){return client[_0xab05('0xe')](_0x5c6fcd,_0x2e09e7)[_0xab05('0xf')](function(_0x2bd915){logger[_0xab05('0x10')]('DeskField,\x20%s,\x20%s',_0x41608f,_0xab05('0x11'));logger['debug']('DeskField,\x20%s,\x20%s,\x20%s',_0x41608f,_0xab05('0x11'),JSON[_0xab05('0x12')](_0x2bd915));if(_0x2bd915[_0xab05('0x13')]){if(_0x2bd915[_0xab05('0x13')][_0xab05('0x14')]===0x1f4){logger[_0xab05('0x13')]('DeskField,\x20%s,\x20%s',_0x41608f,_0x2bd915[_0xab05('0x13')][_0xab05('0x15')]);return _0x36c09d(_0x2bd915['error'][_0xab05('0x15')]);}logger[_0xab05('0x13')](_0xab05('0x16'),_0x41608f,_0x2bd915[_0xab05('0x13')][_0xab05('0x15')]);return _0x1f0d51(_0x2bd915['error'][_0xab05('0x15')]);}else{logger[_0xab05('0x10')](_0xab05('0x16'),_0x41608f,_0xab05('0x11'));_0x1f0d51(_0x2bd915['result'][_0xab05('0x15')]);}})['catch'](function(_0x3772d7){logger['error'](_0xab05('0x16'),_0x41608f,_0x3772d7);_0x36c09d(_0x3772d7);});});}
\ No newline at end of file
+var _0xe426=['../../config/environment','client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3567d8,_0x2b47c9){var _0x353f25=function(_0x1d4754){while(--_0x1d4754){_0x3567d8['push'](_0x3567d8['shift']());}};_0x353f25(++_0x2b47c9);}(_0xe426,0x77));var _0x6e42=function(_0xa5d1f8,_0x100737){_0xa5d1f8=_0xa5d1f8-0x0;var _0x107e2d=_0xe426[_0xa5d1f8];return _0x107e2d;};'use strict';var _=require('lodash');var util=require(_0x6e42('0x0'));var moment=require('moment');var BPromise=require(_0x6e42('0x1'));var rs=require(_0x6e42('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e42('0x3'))['db'];var utils=require(_0x6e42('0x4'));var logger=require(_0x6e42('0x5'))(_0x6e42('0x6'));var config=require(_0x6e42('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6e42('0x8')][_0x6e42('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x463cfb,_0x3ab940,_0x80f5e){return new BPromise(function(_0x7a763e,_0x4757b8){return client[_0x6e42('0xa')](_0x463cfb,_0x80f5e)[_0x6e42('0xb')](function(_0x63ef23){logger['info'](_0x6e42('0xc'),_0x3ab940,_0x6e42('0xd'));logger['debug']('DeskField,\x20%s,\x20%s,\x20%s',_0x3ab940,_0x6e42('0xd'),JSON[_0x6e42('0xe')](_0x63ef23));if(_0x63ef23['error']){if(_0x63ef23[_0x6e42('0xf')][_0x6e42('0x10')]===0x1f4){logger[_0x6e42('0xf')](_0x6e42('0xc'),_0x3ab940,_0x63ef23['error']['message']);return _0x4757b8(_0x63ef23[_0x6e42('0xf')]['message']);}logger['error'](_0x6e42('0xc'),_0x3ab940,_0x63ef23['error'][_0x6e42('0x11')]);return _0x7a763e(_0x63ef23[_0x6e42('0xf')][_0x6e42('0x11')]);}else{logger[_0x6e42('0x12')]('DeskField,\x20%s,\x20%s',_0x3ab940,_0x6e42('0xd'));_0x7a763e(_0x63ef23[_0x6e42('0x13')][_0x6e42('0x11')]);}})[_0x6e42('0x14')](function(_0x164ad8){logger[_0x6e42('0xf')](_0x6e42('0xc'),_0x3ab940,_0x164ad8);_0x4757b8(_0x164ad8);});});}
\ No newline at end of file
index 7f428bf..495dada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9dc=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','delete','exports','multer','util','path','connect-timeout'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xb9dc,0x18c));var _0xcb9d=function(_0x315b44,_0x239760){_0x315b44=_0x315b44-0x0;var _0x5cf351=_0xb9dc[_0x315b44];return _0x5cf351;};'use strict';var multer=require(_0xcb9d('0x0'));var util=require(_0xcb9d('0x1'));var path=require(_0xcb9d('0x2'));var timeout=require(_0xcb9d('0x3'));var express=require(_0xcb9d('0x4'));var router=express[_0xcb9d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xcb9d('0x6'));var interaction=require(_0xcb9d('0x7'));var config=require(_0xcb9d('0x8'));var controller=require(_0xcb9d('0x9'));router[_0xcb9d('0xa')]('/',auth[_0xcb9d('0xb')](),controller[_0xcb9d('0xc')]);router[_0xcb9d('0xa')](_0xcb9d('0xd'),auth['isAuthenticated'](),controller[_0xcb9d('0xe')]);router['get'](_0xcb9d('0xf'),auth['isAuthenticated'](),controller[_0xcb9d('0x10')]);router['get'](_0xcb9d('0x11'),auth[_0xcb9d('0xb')](),controller[_0xcb9d('0x12')]);router['post']('/',auth[_0xcb9d('0xb')](),controller[_0xcb9d('0x13')]);router[_0xcb9d('0x14')]('/:id/configurations',auth[_0xcb9d('0xb')](),controller[_0xcb9d('0x15')]);router[_0xcb9d('0x16')](_0xcb9d('0xd'),auth[_0xcb9d('0xb')](),controller['update']);router[_0xcb9d('0x17')](_0xcb9d('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xcb9d('0x18')]=router;
\ No newline at end of file
+var _0x3cdd=['isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','delete','destroy','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get'];(function(_0x192b9c,_0x122691){var _0xb128b2=function(_0x12b8ea){while(--_0x12b8ea){_0x192b9c['push'](_0x192b9c['shift']());}};_0xb128b2(++_0x122691);}(_0x3cdd,0xe7));var _0xd3cd=function(_0x1c5568,_0x50fb17){_0x1c5568=_0x1c5568-0x0;var _0x3d3fa8=_0x3cdd[_0x1c5568];return _0x3d3fa8;};'use strict';var multer=require(_0xd3cd('0x0'));var util=require(_0xd3cd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd3cd('0x2'));var router=express[_0xd3cd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd3cd('0x4'));var interaction=require(_0xd3cd('0x5'));var config=require(_0xd3cd('0x6'));var controller=require(_0xd3cd('0x7'));router[_0xd3cd('0x8')]('/',auth[_0xd3cd('0x9')](),controller[_0xd3cd('0xa')]);router[_0xd3cd('0x8')]('/:id',auth[_0xd3cd('0x9')](),controller[_0xd3cd('0xb')]);router['get'](_0xd3cd('0xc'),auth[_0xd3cd('0x9')](),controller[_0xd3cd('0xd')]);router[_0xd3cd('0x8')](_0xd3cd('0xe'),auth[_0xd3cd('0x9')](),controller[_0xd3cd('0xf')]);router[_0xd3cd('0x10')]('/',auth[_0xd3cd('0x9')](),controller[_0xd3cd('0x11')]);router[_0xd3cd('0x10')](_0xd3cd('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xd3cd('0x12')](_0xd3cd('0x13'),auth['isAuthenticated'](),controller[_0xd3cd('0x14')]);router[_0xd3cd('0x15')](_0xd3cd('0x13'),auth[_0xd3cd('0x9')](),controller[_0xd3cd('0x16')]);module[_0xd3cd('0x17')]=router;
\ No newline at end of file
index 71fafb1..2cf3d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b94=['STRING','BOOLEAN','sequelize','exports'];(function(_0x208205,_0x5b6bbb){var _0xf43ee=function(_0x1e43f3){while(--_0x1e43f3){_0x208205['push'](_0x208205['shift']());}};_0xf43ee(++_0x5b6bbb);}(_0x1b94,0x1f2));var _0x41b9=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x1b94[_0x2d2c16];return _0x53f2fb;};'use strict';var Sequelize=require(_0x41b9('0x0'));module[_0x41b9('0x1')]={'name':{'type':Sequelize[_0x41b9('0x2')]},'username':{'type':Sequelize[_0x41b9('0x2')]},'password':{'type':Sequelize[_0x41b9('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x41b9('0x2')]},'clientId':{'type':Sequelize[_0x41b9('0x2')]},'clientSecret':{'type':Sequelize[_0x41b9('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x41b9('0x2')]},'modernAuthentication':{'type':Sequelize[_0x41b9('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf23b=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3dbaae,_0x48fd46){var _0x220008=function(_0x40a102){while(--_0x40a102){_0x3dbaae['push'](_0x3dbaae['shift']());}};_0x220008(++_0x48fd46);}(_0xf23b,0x133));var _0xbf23=function(_0x1da1a4,_0x5af4a4){_0x1da1a4=_0x1da1a4-0x0;var _0x289312=_0xf23b[_0x1da1a4];return _0x289312;};'use strict';var Sequelize=require(_0xbf23('0x0'));module[_0xbf23('0x1')]={'name':{'type':Sequelize[_0xbf23('0x2')]},'username':{'type':Sequelize[_0xbf23('0x2')]},'password':{'type':Sequelize[_0xbf23('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xbf23('0x2')]},'clientId':{'type':Sequelize[_0xbf23('0x2')]},'clientSecret':{'type':Sequelize[_0xbf23('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xbf23('0x2')]},'modernAuthentication':{'type':Sequelize[_0xbf23('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 47c581d..eeefaaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf79b=['keys','query','attributes','intersection','fields','hasOwnProperty','sort','pick','filters','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','find','create','body','destroy','getConfigurations','findOne','params','Dynamics365Configuration','order','length','nolimit','addConfiguration','AccountId','getSubjects','channel','Dynamics365Field','Subjects','Descriptions','slice','format','%s/api/data/v9.0/','getFields','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','regardingobjectid','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','createdbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','escalatedon','followupby','importsequencenumber','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','concat','password','remoteUri','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','POST','https://login.microsoftonline.com/','/oauth2/token','username','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','all','isNil','substring','push','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','test',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','lodash','../../config/logger','api','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','update','then','end','error','stack','name','send','map','Dynamics365Account','rawAttributes','fieldName','key','model'];(function(_0x3a4f28,_0x4c103b){var _0x8aae=function(_0x355c77){while(--_0x355c77){_0x3a4f28['push'](_0x3a4f28['shift']());}};_0x8aae(++_0x4c103b);}(_0xf79b,0xa0));var _0xbf79=function(_0x400922,_0xdbb668){_0x400922=_0x400922-0x0;var _0x4959c5=_0xf79b[_0x400922];return _0x4959c5;};'use strict';var rp=require('request-promise');var util=require(_0xbf79('0x0'));var _=require(_0xbf79('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xbf79('0x2'))(_0xbf79('0x3'));var db=require(_0xbf79('0x4'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0x469763,_0x3ef1bb){_0x3ef1bb=_0x3ef1bb||0xc8;return function(_0x238ca0){if(_0x238ca0){return _0x469763[_0xbf79('0x5')](_0x3ef1bb)[_0xbf79('0x6')](_0x238ca0);}};}function respondWithFilteredResult(_0x2731ea,_0x1fce17){return function(_0x290fd6){if(_0x290fd6){var _0x4b7deb=typeof _0x1fce17[_0xbf79('0x7')]===_0xbf79('0x8')&&typeof _0x1fce17['limit']===_0xbf79('0x8');var _0x4e84b3=_0x290fd6[_0xbf79('0x9')];var _0x5211fa=_0x4b7deb?0x0:_0x1fce17[_0xbf79('0x7')];var _0x53ca23=_0x4b7deb?_0x290fd6['count']:_0x1fce17[_0xbf79('0x7')]+_0x1fce17[_0xbf79('0xa')];var _0x37b698;if(_0x53ca23>=_0x4e84b3){_0x53ca23=_0x4e84b3;_0x37b698=0xc8;}else{_0x37b698=0xce;}_0x2731ea[_0xbf79('0x5')](_0x37b698);return _0x2731ea[_0xbf79('0xb')](_0xbf79('0xc'),_0x5211fa+'-'+_0x53ca23+'/'+_0x4e84b3)[_0xbf79('0x6')](_0x290fd6);}return null;};}function saveUpdates(_0x1d2bd3){return function(_0x3f01b5){if(_0x3f01b5){return _0x3f01b5[_0xbf79('0xd')](_0x1d2bd3)[_0xbf79('0xe')](function(_0x97f300){return _0x97f300;});}return null;};}function removeEntity(_0x23fe13){return function(_0x26ea5f){if(_0x26ea5f){return _0x26ea5f['destroy']()[_0xbf79('0xe')](function(){_0x23fe13[_0xbf79('0x5')](0xcc)[_0xbf79('0xf')]();});}};}function handleEntityNotFound(_0x3b88dc){return function(_0x5f4b96){if(!_0x5f4b96){_0x3b88dc['sendStatus'](0x194);}return _0x5f4b96;};}function handleError(_0x27c409,_0x4b0c1a){_0x4b0c1a=_0x4b0c1a||0x1f4;return function(_0x2d1e10){logger[_0xbf79('0x10')](_0x2d1e10[_0xbf79('0x11')]);if(_0x2d1e10['name']){delete _0x2d1e10[_0xbf79('0x12')];}_0x27c409[_0xbf79('0x5')](_0x4b0c1a)[_0xbf79('0x13')](_0x2d1e10);};}exports['index']=function(_0x26cb87,_0x235bbe){var _0x169a2d={},_0x38b78d={},_0x25305c={'count':0x0,'rows':[]};var _0x8b6f45=_[_0xbf79('0x14')](db[_0xbf79('0x15')][_0xbf79('0x16')],function(_0x27c236){return{'name':_0x27c236[_0xbf79('0x17')],'type':_0x27c236['type'][_0xbf79('0x18')]};});_0x38b78d[_0xbf79('0x19')]=_[_0xbf79('0x14')](_0x8b6f45,'name');_0x38b78d['query']=_[_0xbf79('0x1a')](_0x26cb87[_0xbf79('0x1b')]);_0x38b78d['filters']=_['intersection'](_0x38b78d[_0xbf79('0x19')],_0x38b78d['query']);_0x169a2d[_0xbf79('0x1c')]=_[_0xbf79('0x1d')](_0x38b78d[_0xbf79('0x19')],qs[_0xbf79('0x1e')](_0x26cb87[_0xbf79('0x1b')]['fields']));_0x169a2d[_0xbf79('0x1c')]=_0x169a2d['attributes']['length']?_0x169a2d[_0xbf79('0x1c')]:_0x38b78d['model'];if(!_0x26cb87[_0xbf79('0x1b')][_0xbf79('0x1f')]('nolimit')){_0x169a2d[_0xbf79('0xa')]=qs['limit'](_0x26cb87[_0xbf79('0x1b')][_0xbf79('0xa')]);_0x169a2d[_0xbf79('0x7')]=qs[_0xbf79('0x7')](_0x26cb87[_0xbf79('0x1b')]['offset']);}_0x169a2d['order']=qs[_0xbf79('0x20')](_0x26cb87[_0xbf79('0x1b')][_0xbf79('0x20')]);_0x169a2d['where']=qs['filters'](_[_0xbf79('0x21')](_0x26cb87[_0xbf79('0x1b')],_0x38b78d[_0xbf79('0x22')]),_0x8b6f45);if(_0x26cb87[_0xbf79('0x1b')][_0xbf79('0x23')]){_0x169a2d[_0xbf79('0x24')]=_[_0xbf79('0x25')](_0x169a2d[_0xbf79('0x24')],{'$or':_[_0xbf79('0x14')](_0x8b6f45,function(_0xabd6d3){if(_0xabd6d3[_0xbf79('0x26')]!==_0xbf79('0x27')){var _0x3a90bc={};_0x3a90bc[_0xabd6d3[_0xbf79('0x12')]]={'$like':'%'+_0x26cb87[_0xbf79('0x1b')][_0xbf79('0x23')]+'%'};return _0x3a90bc;}})});}_0x169a2d=_[_0xbf79('0x25')]({},_0x169a2d,_0x26cb87[_0xbf79('0x28')]);var _0x659912={'where':_0x169a2d[_0xbf79('0x24')]};return db[_0xbf79('0x15')][_0xbf79('0x9')](_0x659912)[_0xbf79('0xe')](function(_0x4e6755){_0x25305c[_0xbf79('0x9')]=_0x4e6755;if(_0x26cb87[_0xbf79('0x1b')][_0xbf79('0x29')]){_0x169a2d[_0xbf79('0x2a')]=[{'all':!![]}];}return db[_0xbf79('0x15')][_0xbf79('0x2b')](_0x169a2d);})[_0xbf79('0xe')](function(_0x4121fc){_0x25305c['rows']=_0x4121fc;return _0x25305c;})[_0xbf79('0xe')](respondWithFilteredResult(_0x235bbe,_0x169a2d))[_0xbf79('0x2c')](handleError(_0x235bbe,null));};exports['show']=function(_0x571db8,_0x490502){var _0x3ba567={'raw':![],'where':{'id':_0x571db8['params']['id']}},_0xd905a2={};_0xd905a2['model']=_[_0xbf79('0x1a')](db[_0xbf79('0x15')][_0xbf79('0x16')]);_0xd905a2[_0xbf79('0x1b')]=_[_0xbf79('0x1a')](_0x571db8['query']);_0xd905a2[_0xbf79('0x22')]=_[_0xbf79('0x1d')](_0xd905a2['model'],_0xd905a2[_0xbf79('0x1b')]);_0x3ba567[_0xbf79('0x1c')]=_['intersection'](_0xd905a2[_0xbf79('0x19')],qs[_0xbf79('0x1e')](_0x571db8['query']['fields']));_0x3ba567[_0xbf79('0x1c')]=_0x3ba567['attributes']['length']?_0x3ba567[_0xbf79('0x1c')]:_0xd905a2[_0xbf79('0x19')];if(_0x571db8['query'][_0xbf79('0x29')]){_0x3ba567[_0xbf79('0x2a')]=[{'all':!![]}];}_0x3ba567=_[_0xbf79('0x25')]({},_0x3ba567,_0x571db8[_0xbf79('0x28')]);return db[_0xbf79('0x15')][_0xbf79('0x2d')](_0x3ba567)[_0xbf79('0xe')](handleEntityNotFound(_0x490502,null))[_0xbf79('0xe')](respondWithResult(_0x490502,null))[_0xbf79('0x2c')](handleError(_0x490502,null));};exports[_0xbf79('0x2e')]=function(_0x3dc392,_0x3d8934){return db[_0xbf79('0x15')][_0xbf79('0x2e')](_0x3dc392[_0xbf79('0x2f')],{})[_0xbf79('0xe')](respondWithResult(_0x3d8934,0xc9))['catch'](handleError(_0x3d8934,null));};exports[_0xbf79('0xd')]=function(_0x2c5fb5,_0x204170){if(_0x2c5fb5[_0xbf79('0x2f')]['id']){delete _0x2c5fb5[_0xbf79('0x2f')]['id'];}return db[_0xbf79('0x15')][_0xbf79('0x2d')]({'where':{'id':_0x2c5fb5['params']['id']}})[_0xbf79('0xe')](handleEntityNotFound(_0x204170,null))['then'](saveUpdates(_0x2c5fb5['body'],null))[_0xbf79('0xe')](respondWithResult(_0x204170,null))[_0xbf79('0x2c')](handleError(_0x204170,null));};exports[_0xbf79('0x30')]=function(_0x3f779d,_0x482fcb){return db[_0xbf79('0x15')][_0xbf79('0x2d')]({'where':{'id':_0x3f779d['params']['id']}})[_0xbf79('0xe')](handleEntityNotFound(_0x482fcb,null))[_0xbf79('0xe')](removeEntity(_0x482fcb,null))[_0xbf79('0x2c')](handleError(_0x482fcb,null));};exports[_0xbf79('0x31')]=function(_0x29c913,_0x4fdecf){var _0x1ad627={};var _0x3ec5bb={};var _0x4ac6d7;var _0xb18da6;return db[_0xbf79('0x15')][_0xbf79('0x32')]({'where':{'id':_0x29c913[_0xbf79('0x33')]['id']}})[_0xbf79('0xe')](handleEntityNotFound(_0x4fdecf,null))['then'](function(_0x5c999d){if(_0x5c999d){_0x4ac6d7=_0x5c999d;_0x3ec5bb[_0xbf79('0x19')]=_[_0xbf79('0x1a')](db[_0xbf79('0x34')]['rawAttributes']);_0x3ec5bb[_0xbf79('0x1b')]=_[_0xbf79('0x1a')](_0x29c913[_0xbf79('0x1b')]);_0x3ec5bb[_0xbf79('0x22')]=_[_0xbf79('0x1d')](_0x3ec5bb[_0xbf79('0x19')],_0x3ec5bb['query']);_0x1ad627['attributes']=_[_0xbf79('0x1d')](_0x3ec5bb[_0xbf79('0x19')],qs[_0xbf79('0x1e')](_0x29c913['query'][_0xbf79('0x1e')]));_0x1ad627[_0xbf79('0x1c')]=_0x1ad627[_0xbf79('0x1c')]['length']?_0x1ad627[_0xbf79('0x1c')]:_0x3ec5bb[_0xbf79('0x19')];_0x1ad627[_0xbf79('0x35')]=qs['sort'](_0x29c913[_0xbf79('0x1b')]['sort']);_0x1ad627[_0xbf79('0x24')]=qs['filters'](_['pick'](_0x29c913[_0xbf79('0x1b')],_0x3ec5bb['filters']));if(_0x29c913[_0xbf79('0x1b')][_0xbf79('0x23')]){_0x1ad627[_0xbf79('0x24')]=_[_0xbf79('0x25')](_0x1ad627['where'],{'$or':_[_0xbf79('0x14')](_0x1ad627[_0xbf79('0x1c')],function(_0x35a60c){var _0xe56fdd={};_0xe56fdd[_0x35a60c]={'$like':'%'+_0x29c913[_0xbf79('0x1b')][_0xbf79('0x23')]+'%'};return _0xe56fdd;})});}_0x1ad627=_[_0xbf79('0x25')]({},_0x1ad627,_0x29c913['options']);return _0x4ac6d7[_0xbf79('0x31')](_0x1ad627);}})[_0xbf79('0xe')](function(_0x1fff48){if(_0x1fff48){_0xb18da6=_0x1fff48[_0xbf79('0x36')];if(!_0x29c913[_0xbf79('0x1b')]['hasOwnProperty'](_0xbf79('0x37'))){_0x1ad627[_0xbf79('0xa')]=qs[_0xbf79('0xa')](_0x29c913[_0xbf79('0x1b')][_0xbf79('0xa')]);_0x1ad627[_0xbf79('0x7')]=qs['offset'](_0x29c913['query']['offset']);}return _0x4ac6d7['getConfigurations'](_0x1ad627);}})[_0xbf79('0xe')](function(_0x1179cd){if(_0x1179cd){return _0x1179cd?{'count':_0xb18da6,'rows':_0x1179cd}:null;}})[_0xbf79('0xe')](respondWithResult(_0x4fdecf,null))[_0xbf79('0x2c')](handleError(_0x4fdecf,null));};exports[_0xbf79('0x38')]=function(_0x42d63e,_0x2ca011){if(_0x42d63e[_0xbf79('0x2f')]['id']){delete _0x42d63e[_0xbf79('0x2f')]['id'];}return db[_0xbf79('0x15')]['findOne']({'where':{'id':_0x42d63e[_0xbf79('0x33')]['id']}})[_0xbf79('0xe')](handleEntityNotFound(_0x2ca011,null))['then'](function(_0x5a5424){if(_0x5a5424){_0x42d63e[_0xbf79('0x2f')][_0xbf79('0x39')]=_0x5a5424['id'];_0x42d63e[_0xbf79('0x2f')]['Subjects']=integrations[_0xbf79('0x3a')](_0x42d63e[_0xbf79('0x2f')]['channel'],_0x42d63e[_0xbf79('0x2f')][_0xbf79('0x26')]);_0x42d63e['body']['Descriptions']=integrations['getDescriptions'](_0x42d63e[_0xbf79('0x2f')][_0xbf79('0x3b')],_0x42d63e[_0xbf79('0x2f')][_0xbf79('0x26')]);return db[_0xbf79('0x34')]['create'](_0x42d63e[_0xbf79('0x2f')],{'include':[{'model':db[_0xbf79('0x3c')],'as':_0xbf79('0x3d')},{'model':db[_0xbf79('0x3c')],'as':_0xbf79('0x3e')}]});}return null;})[_0xbf79('0xe')](respondWithResult(_0x2ca011,null))[_0xbf79('0x2c')](handleError(_0x2ca011,null));};function sanitizeRemoteUri(_0x1ef304){var _0x57af73=_0x1ef304[_0xbf79('0x3f')](-0x1);if(_0x57af73==='/')return _0x1ef304['substring'](0x0,_0x1ef304['lastIndexOf'](_0x57af73));return _0x1ef304;}function getWebApiUrl(_0x1bacc6){return util[_0xbf79('0x40')](_0xbf79('0x41'),_0x1bacc6);}exports[_0xbf79('0x42')]=function(_0x47df54,_0x2e81e9){var _0x46ee93=_0x47df54[_0xbf79('0x1b')][_0xbf79('0x43')];var _0x3d6e38=_0x46ee93===_0xbf79('0x44')?_0xbf79('0x45'):_0xbf79('0x46');var _0x49a56e='';var _0x4398ad='';var _0x4926ae='';var _0x59f40c='';var _0x4b8b65='';var _0x278959='';var _0xa6d0ad='';var _0x17884c='';var _0x4f8916=[_0xbf79('0x47'),_0xbf79('0x48'),_0xbf79('0x49'),_0xbf79('0x4a'),_0xbf79('0x4b'),_0xbf79('0x4c'),'phonenumber',_0xbf79('0x4d'),'directioncode','phonecall_activity_parties'];var _0x4a8389=[_0xbf79('0x4e'),_0xbf79('0x4f'),_0xbf79('0x50'),_0xbf79('0x51'),_0xbf79('0x52'),'contactidyominame',_0xbf79('0x53'),'contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname',_0xbf79('0x54'),'createdon','createdonbehalfbyname','createdonbehalfbyyominame',_0xbf79('0x55'),_0xbf79('0x56'),_0xbf79('0x57'),_0xbf79('0x58'),_0xbf79('0x59'),_0xbf79('0x5a'),'entityimage_url',_0xbf79('0x5b'),'exchangerate','firstresponsebykpiidname',_0xbf79('0x5c'),_0xbf79('0x5d'),'influencescore',_0xbf79('0x5e'),_0xbf79('0x5f'),_0xbf79('0x60'),_0xbf79('0x61'),_0xbf79('0x62'),_0xbf79('0x63'),'modifiedbyyominame',_0xbf79('0x64'),_0xbf79('0x65'),_0xbf79('0x66'),_0xbf79('0x67'),_0xbf79('0x68'),_0xbf79('0x69'),_0xbf79('0x6a'),_0xbf79('0x6b'),_0xbf79('0x6c'),_0xbf79('0x6d'),_0xbf79('0x6e'),'parentcaseidname',_0xbf79('0x6f'),_0xbf79('0x70'),_0xbf79('0x71'),'productidname',_0xbf79('0x72'),_0xbf79('0x73'),_0xbf79('0x74'),_0xbf79('0x75'),_0xbf79('0x76'),_0xbf79('0x77'),_0xbf79('0x78'),'slainvokedidname',_0xbf79('0x79'),_0xbf79('0x7a'),_0xbf79('0x7b'),_0xbf79('0x7c'),_0xbf79('0x7d'),_0xbf79('0x7e'),_0xbf79('0x7f'),_0xbf79('0x80'),'traversedpath',_0xbf79('0x81'),_0xbf79('0x82')];var _0x4052ab=_0x4f8916[_0xbf79('0x83')](_0x4a8389);return db[_0xbf79('0x15')][_0xbf79('0x32')]({'where':{'id':_0x47df54[_0xbf79('0x33')]['id']},'attributes':['id','username',_0xbf79('0x84'),_0xbf79('0x85'),_0xbf79('0x86'),_0xbf79('0x87'),_0xbf79('0x88'),_0xbf79('0x89')],'include':[{'model':db[_0xbf79('0x8a')],'as':_0xbf79('0x8a'),'attributes':['id',_0xbf79('0x8b'),_0xbf79('0x8c')]}]})[_0xbf79('0xe')](handleEntityNotFound(_0x2e81e9,null))[_0xbf79('0xe')](function(_0x357b9b){if(_0x357b9b){if(_0x357b9b[_0xbf79('0x89')]){_0x357b9b['access_token']=_0x357b9b[_0xbf79('0x8a')][_0xbf79('0x8b')];_0x17884c=sanitizeRemoteUri(_0x357b9b[_0xbf79('0x8a')][_0xbf79('0x8c')]);_0xa6d0ad=getWebApiUrl(_0x17884c);return _0x357b9b;}_0x17884c=sanitizeRemoteUri(_0x357b9b[_0xbf79('0x85')]);_0xa6d0ad=getWebApiUrl(_0x17884c);var _0x59d491={'method':_0xbf79('0x8d'),'uri':_0xbf79('0x8e')+_0x357b9b[_0xbf79('0x86')]+_0xbf79('0x8f'),'form':{'client_id':_0x357b9b[_0xbf79('0x87')],'resource':_0x17884c,'username':_0x357b9b[_0xbf79('0x90')],'password':_0x357b9b[_0xbf79('0x84')],'grant_type':'password','client_secret':_0x357b9b[_0xbf79('0x88')]},'json':!![]};return rp(_0x59d491);}})[_0xbf79('0xe')](function(_0x4f1b89){_0x278959=_0x4f1b89['access_token'];var _0x3e5816={'method':_0xbf79('0x91'),'uri':encodeURI(_0xa6d0ad+_0xbf79('0x92')+_0x3d6e38+'\x27'),'headers':{'Authorization':_0xbf79('0x93')+_0x278959,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3e5816);})[_0xbf79('0xe')](function(_0x38edf0){var _0x369070=_0x38edf0[_0xbf79('0x94')][0x0];var _0x362fc4=_0x369070[_0xbf79('0x95')];var _0xc7bb12={'method':_0xbf79('0x91'),'uri':_0xa6d0ad+_0xbf79('0x96')+_0x362fc4+_0xbf79('0x97'),'headers':{'Authorization':_0xbf79('0x93')+_0x278959,'If-None-Match':null,'OData-Version':_0xbf79('0x98')},'json':!![]};return rp(_0xc7bb12);})[_0xbf79('0xe')](function(_0x34b16a){_0x49a56e=_0x34b16a;_0x4398ad=_0x49a56e['Attributes'];_0x4398ad=_[_0xbf79('0x99')](_0x4398ad,function(_0x2b3ff7){return!_0x4052ab[_0xbf79('0x9a')](_0x2b3ff7[_0xbf79('0x9b')]);});var _0x5d395a=[];var _0x2fc542=[];_0x4398ad[_0xbf79('0x9c')](function(_0x5ba5df){if(_0x5ba5df[_0xbf79('0x9d')]){var _0x3bcda9=_0x5ba5df[_0xbf79('0x9d')]['substring'](_0x5ba5df['@odata.type'][_0xbf79('0x9e')]('.')+0x1);if(_0x3bcda9==='PicklistAttributeMetadata'){_0x5d395a['push'](getSelectList(_0xa6d0ad,_0x46ee93,_0x2fc542,_0x49a56e['MetadataId'],_0x5ba5df['MetadataId'],_0x278959));}}});return Promise[_0xbf79('0x9f')](_0x5d395a);})[_0xbf79('0xe')](function(_0x1fc84e){_0x4926ae=_0x1fc84e[0x0];var _0x5b06c8=[];var _0x5deb10=[];_0x4398ad['forEach'](function(_0x3f5f14){if(!_[_0xbf79('0xa0')](_0x3f5f14['@odata.type'])){var _0x374cf8=_0x3f5f14[_0xbf79('0x9d')][_0xbf79('0xa1')](_0x3f5f14['@odata.type'][_0xbf79('0x9e')]('.')+0x1);if(_0x374cf8==='BooleanAttributeMetadata'){_0x5b06c8[_0xbf79('0xa2')](getBooleanList(_0xa6d0ad,_0x46ee93,_0x5deb10,_0x49a56e[_0xbf79('0x95')],_0x3f5f14['MetadataId'],_0x278959));}}});return Promise[_0xbf79('0x9f')](_0x5b06c8);})[_0xbf79('0xe')](function(_0x344bc4){_0x59f40c=_0x344bc4[0x0];var _0x155cfc=[];var _0x167ef7=[];_0x4398ad[_0xbf79('0x9c')](function(_0x406ad2){if(_0x406ad2[_0xbf79('0x9d')]){var _0x140e5e=_0x406ad2['@odata.type'][_0xbf79('0xa1')](_0x406ad2[_0xbf79('0x9d')][_0xbf79('0x9e')]('.')+0x1);if(_0x140e5e===_0xbf79('0xa3')||_0x140e5e===_0xbf79('0xa4')||_0x140e5e===_0xbf79('0xa5')||_0x140e5e===_0xbf79('0xa6')||_0x140e5e===_0xbf79('0xa7')||_0x140e5e==='DateTimeAttributeMetadata'||_0x140e5e===_0xbf79('0xa8')||_0x140e5e===_0xbf79('0xa9')||_0x140e5e===_0xbf79('0xaa')||_0x140e5e===_0xbf79('0xab')){_0x155cfc[_0xbf79('0xa2')](getInputList(_0xa6d0ad,_0x46ee93,_0x140e5e,_0x167ef7,_0x49a56e[_0xbf79('0x95')],_0x406ad2['MetadataId'],_0x278959));}}});return Promise[_0xbf79('0x9f')](_0x155cfc);})[_0xbf79('0xe')](function(_0x427bf0){_0x4b8b65=_0x427bf0[0x0];var _0x12243e=_0x4926ae[_0xbf79('0x83')](_0x59f40c)['concat'](_0x4b8b65);var _0x529903={'count':_0x12243e[_0xbf79('0x36')],'rows':_0x12243e};return _0x529903;})['then'](respondWithResult(_0x2e81e9,null))[_0xbf79('0x2c')](function(_0x457387){var _0x24b6eb=_0x47df54[_0xbf79('0x1b')]['test']?0x1f4:_0x457387[_0xbf79('0xac')]||0x1f4;logger[_0xbf79('0x10')](_0x457387[_0xbf79('0x11')]);delete _0x457387[_0xbf79('0x12')];if(_0x24b6eb===0x191){_0x24b6eb=0x190;}_0x2e81e9[_0xbf79('0x5')](_0x24b6eb)[_0xbf79('0x13')](_0x47df54[_0xbf79('0x1b')][_0xbf79('0xad')]?{'message':'Wrong\x20credentials','statusCode':_0x457387[_0xbf79('0xac')]}:_0x457387);});};function getSelectList(_0x2cac6d,_0x389892,_0x493819,_0x563c62,_0xe1c887,_0x1d2af7){var _0x3951a5={'method':_0xbf79('0x91'),'uri':_0x2cac6d+_0xbf79('0x96')+_0x563c62+_0xbf79('0xae')+_0xe1c887+_0xbf79('0xaf')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':'Bearer\x20'+_0x1d2af7,'If-None-Match':null,'OData-Version':_0xbf79('0x98')},'json':!![]};return rp(_0x3951a5)['then'](function(_0x295a95){var _0x4767e4=[];var _0x4c1194=_0x295a95[_0xbf79('0xb0')][_0xbf79('0xb1')];_0x4c1194[_0xbf79('0x9c')](function(_0x312e32){_0x4767e4[_0xbf79('0xa2')]({'name':_0x312e32[_0xbf79('0xb2')][_0xbf79('0xb3')]['Label'],'value':String(_0x312e32['Value'])});});var _0x3b5793={'id':_0x389892+'_'+_0x295a95['LogicalName'],'name':_0x295a95[_0xbf79('0xb4')][_0xbf79('0xb3')][_0xbf79('0xb2')],'custom':![],'options':_0x4767e4};_0x493819[_0xbf79('0xa2')](_0x3b5793);return _0x493819;});}function getBooleanList(_0x269464,_0x387748,_0x51dec9,_0x477fa1,_0x4c13c7,_0x2eae72){var _0xbae1c0={'method':_0xbf79('0x91'),'uri':_0x269464+_0xbf79('0x96')+_0x477fa1+')/Attributes('+_0x4c13c7+_0xbf79('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x2eae72,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xbae1c0)[_0xbf79('0xe')](function(_0x458333){var _0x4a55ab=[];_0x4a55ab[_0xbf79('0xa2')]({'name':_0x458333[_0xbf79('0xb0')][_0xbf79('0xb6')][_0xbf79('0xb2')][_0xbf79('0xb3')][_0xbf79('0xb2')],'value':_0xbf79('0xb7')},{'name':_0x458333[_0xbf79('0xb0')]['FalseOption'][_0xbf79('0xb2')]['UserLocalizedLabel']['Label'],'value':'false'});var _0x743d02={'id':_0x387748+'_'+_0x458333[_0xbf79('0x9b')],'name':_0x458333[_0xbf79('0xb4')]['UserLocalizedLabel'][_0xbf79('0xb2')],'custom':![],'options':_0x4a55ab};_0x51dec9[_0xbf79('0xa2')](_0x743d02);return _0x51dec9;});}function getInputList(_0x29d46c,_0x19dd5b,_0x3868bb,_0x432407,_0x11a4ae,_0x54e0d9,_0x20a25c){var _0x1c8c03={'method':_0xbf79('0x91'),'uri':_0x29d46c+'EntityDefinitions('+_0x11a4ae+_0xbf79('0xae')+_0x54e0d9+_0xbf79('0xb8')+_0x3868bb+_0xbf79('0xb9'),'headers':{'Authorization':_0xbf79('0x93')+_0x20a25c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1c8c03)[_0xbf79('0xe')](function(_0x246689){var _0xd8a0fe={'id':_0x19dd5b+'_'+_0x246689['LogicalName'],'name':_0x246689['DisplayName'][_0xbf79('0xb3')]?_0x246689[_0xbf79('0xb4')][_0xbf79('0xb3')]['Label']:_0x246689[_0xbf79('0x9b')],'custom':![],'options':[]};_0x432407[_0xbf79('0xa2')](_0xd8a0fe);return _0x432407;});}
\ No newline at end of file
+var _0x325b=['filters','options','create','body','find','params','getConfigurations','findOne','addConfiguration','AccountId','Subjects','channel','type','getDescriptions','Dynamics365Configuration','Dynamics365Field','Descriptions','slice','substring','getFields','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','accountidyominame','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdon','createdonbehalfbyyominame','customeridname','customeridyominame','emailaddress','entitlementidname','entityimage_url','exchangerate','followupby','importsequencenumber','kbarticleidname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','password','clientSecret','modernAuthentication','CloudProvider','data7','access_token','data5','remoteUri','POST','https://login.microsoftonline.com/','tenantId','clientId','username','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','MetadataId','EntityDefinitions(','4.0','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','BooleanAttributeMetadata','push','all','lastIndexOf','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','error','Wrong\x20credentials','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','DisplayName','request-promise','util','lodash','../../config/logger','api','offset','undefined','limit','count','status','set','Content-Range','json','update','destroy','end','sendStatus','stack','name','send','map','Dynamics365Account','rawAttributes','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','then','includeAll','findAll','rows','catch','show'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x325b,0x8b));var _0xb325=function(_0x4b624e,_0x5595b2){_0x4b624e=_0x4b624e-0x0;var _0x1d7bbe=_0x325b[_0x4b624e];return _0x1d7bbe;};'use strict';var rp=require(_0xb325('0x0'));var util=require(_0xb325('0x1'));var _=require(_0xb325('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0xb325('0x3'))(_0xb325('0x4'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0x3a6c20,_0xca6c44){_0xca6c44=_0xca6c44||0xc8;return function(_0x33f59a){if(_0x33f59a){return _0x3a6c20['status'](_0xca6c44)['json'](_0x33f59a);}};}function respondWithFilteredResult(_0x33dcfc,_0x5a241f){return function(_0x22569c){if(_0x22569c){var _0x2fa16d=typeof _0x5a241f[_0xb325('0x5')]===_0xb325('0x6')&&typeof _0x5a241f[_0xb325('0x7')]===_0xb325('0x6');var _0xb008cb=_0x22569c[_0xb325('0x8')];var _0x468dd8=_0x2fa16d?0x0:_0x5a241f[_0xb325('0x5')];var _0x1d8ef4=_0x2fa16d?_0x22569c[_0xb325('0x8')]:_0x5a241f[_0xb325('0x5')]+_0x5a241f[_0xb325('0x7')];var _0x530b95;if(_0x1d8ef4>=_0xb008cb){_0x1d8ef4=_0xb008cb;_0x530b95=0xc8;}else{_0x530b95=0xce;}_0x33dcfc[_0xb325('0x9')](_0x530b95);return _0x33dcfc[_0xb325('0xa')](_0xb325('0xb'),_0x468dd8+'-'+_0x1d8ef4+'/'+_0xb008cb)[_0xb325('0xc')](_0x22569c);}return null;};}function saveUpdates(_0x4ac26f){return function(_0x306758){if(_0x306758){return _0x306758[_0xb325('0xd')](_0x4ac26f)['then'](function(_0xac80f){return _0xac80f;});}return null;};}function removeEntity(_0x1265f0){return function(_0x2f0cf1){if(_0x2f0cf1){return _0x2f0cf1[_0xb325('0xe')]()['then'](function(){_0x1265f0[_0xb325('0x9')](0xcc)[_0xb325('0xf')]();});}};}function handleEntityNotFound(_0x2b103c){return function(_0x10ce0f){if(!_0x10ce0f){_0x2b103c[_0xb325('0x10')](0x194);}return _0x10ce0f;};}function handleError(_0x2e3b1d,_0x7106c7){_0x7106c7=_0x7106c7||0x1f4;return function(_0xa4e6c6){logger['error'](_0xa4e6c6[_0xb325('0x11')]);if(_0xa4e6c6['name']){delete _0xa4e6c6[_0xb325('0x12')];}_0x2e3b1d[_0xb325('0x9')](_0x7106c7)[_0xb325('0x13')](_0xa4e6c6);};}exports['index']=function(_0x1a527c,_0x3f1893){var _0x345647={},_0x28fcce={},_0x4105c5={'count':0x0,'rows':[]};var _0x259a34=_[_0xb325('0x14')](db[_0xb325('0x15')][_0xb325('0x16')],function(_0x15baac){return{'name':_0x15baac['fieldName'],'type':_0x15baac['type'][_0xb325('0x17')]};});_0x28fcce[_0xb325('0x18')]=_[_0xb325('0x14')](_0x259a34,_0xb325('0x12'));_0x28fcce[_0xb325('0x19')]=_[_0xb325('0x1a')](_0x1a527c[_0xb325('0x19')]);_0x28fcce['filters']=_[_0xb325('0x1b')](_0x28fcce[_0xb325('0x18')],_0x28fcce[_0xb325('0x19')]);_0x345647[_0xb325('0x1c')]=_[_0xb325('0x1b')](_0x28fcce[_0xb325('0x18')],qs['fields'](_0x1a527c[_0xb325('0x19')][_0xb325('0x1d')]));_0x345647[_0xb325('0x1c')]=_0x345647['attributes'][_0xb325('0x1e')]?_0x345647[_0xb325('0x1c')]:_0x28fcce[_0xb325('0x18')];if(!_0x1a527c[_0xb325('0x19')][_0xb325('0x1f')](_0xb325('0x20'))){_0x345647[_0xb325('0x7')]=qs['limit'](_0x1a527c[_0xb325('0x19')][_0xb325('0x7')]);_0x345647[_0xb325('0x5')]=qs['offset'](_0x1a527c[_0xb325('0x19')][_0xb325('0x5')]);}_0x345647[_0xb325('0x21')]=qs[_0xb325('0x22')](_0x1a527c[_0xb325('0x19')][_0xb325('0x22')]);_0x345647['where']=qs['filters'](_[_0xb325('0x23')](_0x1a527c[_0xb325('0x19')],_0x28fcce['filters']),_0x259a34);if(_0x1a527c['query'][_0xb325('0x24')]){_0x345647[_0xb325('0x25')]=_[_0xb325('0x26')](_0x345647['where'],{'$or':_[_0xb325('0x14')](_0x259a34,function(_0x478aa6){if(_0x478aa6['type']!==_0xb325('0x27')){var _0xd4e5d8={};_0xd4e5d8[_0x478aa6[_0xb325('0x12')]]={'$like':'%'+_0x1a527c[_0xb325('0x19')][_0xb325('0x24')]+'%'};return _0xd4e5d8;}})});}_0x345647=_[_0xb325('0x26')]({},_0x345647,_0x1a527c['options']);var _0x38cdb9={'where':_0x345647['where']};return db[_0xb325('0x15')]['count'](_0x38cdb9)[_0xb325('0x28')](function(_0x9a2561){_0x4105c5[_0xb325('0x8')]=_0x9a2561;if(_0x1a527c['query'][_0xb325('0x29')]){_0x345647['include']=[{'all':!![]}];}return db[_0xb325('0x15')][_0xb325('0x2a')](_0x345647);})['then'](function(_0x11cf27){_0x4105c5[_0xb325('0x2b')]=_0x11cf27;return _0x4105c5;})['then'](respondWithFilteredResult(_0x3f1893,_0x345647))[_0xb325('0x2c')](handleError(_0x3f1893,null));};exports[_0xb325('0x2d')]=function(_0x34e20e,_0x7ab8e0){var _0x384c71={'raw':![],'where':{'id':_0x34e20e['params']['id']}},_0x211eee={};_0x211eee[_0xb325('0x18')]=_['keys'](db[_0xb325('0x15')]['rawAttributes']);_0x211eee[_0xb325('0x19')]=_[_0xb325('0x1a')](_0x34e20e['query']);_0x211eee[_0xb325('0x2e')]=_[_0xb325('0x1b')](_0x211eee[_0xb325('0x18')],_0x211eee['query']);_0x384c71[_0xb325('0x1c')]=_[_0xb325('0x1b')](_0x211eee['model'],qs[_0xb325('0x1d')](_0x34e20e[_0xb325('0x19')]['fields']));_0x384c71[_0xb325('0x1c')]=_0x384c71['attributes']['length']?_0x384c71[_0xb325('0x1c')]:_0x211eee[_0xb325('0x18')];if(_0x34e20e['query'][_0xb325('0x29')]){_0x384c71['include']=[{'all':!![]}];}_0x384c71=_[_0xb325('0x26')]({},_0x384c71,_0x34e20e[_0xb325('0x2f')]);return db[_0xb325('0x15')]['find'](_0x384c71)['then'](handleEntityNotFound(_0x7ab8e0,null))[_0xb325('0x28')](respondWithResult(_0x7ab8e0,null))['catch'](handleError(_0x7ab8e0,null));};exports['create']=function(_0x57fe41,_0x5114db){return db[_0xb325('0x15')][_0xb325('0x30')](_0x57fe41[_0xb325('0x31')],{})[_0xb325('0x28')](respondWithResult(_0x5114db,0xc9))['catch'](handleError(_0x5114db,null));};exports[_0xb325('0xd')]=function(_0x3205e3,_0x51f3ea){if(_0x3205e3['body']['id']){delete _0x3205e3[_0xb325('0x31')]['id'];}return db['Dynamics365Account'][_0xb325('0x32')]({'where':{'id':_0x3205e3[_0xb325('0x33')]['id']}})['then'](handleEntityNotFound(_0x51f3ea,null))[_0xb325('0x28')](saveUpdates(_0x3205e3[_0xb325('0x31')],null))[_0xb325('0x28')](respondWithResult(_0x51f3ea,null))[_0xb325('0x2c')](handleError(_0x51f3ea,null));};exports['destroy']=function(_0x22491b,_0x24b912){return db[_0xb325('0x15')][_0xb325('0x32')]({'where':{'id':_0x22491b[_0xb325('0x33')]['id']}})[_0xb325('0x28')](handleEntityNotFound(_0x24b912,null))['then'](removeEntity(_0x24b912,null))[_0xb325('0x2c')](handleError(_0x24b912,null));};exports[_0xb325('0x34')]=function(_0x2c7649,_0x50bd2f){var _0x11c25e={};var _0x1d8a89={};var _0x232ff8;var _0x102242;return db[_0xb325('0x15')][_0xb325('0x35')]({'where':{'id':_0x2c7649['params']['id']}})['then'](handleEntityNotFound(_0x50bd2f,null))[_0xb325('0x28')](function(_0x1f4199){if(_0x1f4199){_0x232ff8=_0x1f4199;_0x1d8a89['model']=_[_0xb325('0x1a')](db['Dynamics365Configuration'][_0xb325('0x16')]);_0x1d8a89['query']=_['keys'](_0x2c7649[_0xb325('0x19')]);_0x1d8a89['filters']=_[_0xb325('0x1b')](_0x1d8a89[_0xb325('0x18')],_0x1d8a89['query']);_0x11c25e[_0xb325('0x1c')]=_['intersection'](_0x1d8a89['model'],qs['fields'](_0x2c7649[_0xb325('0x19')][_0xb325('0x1d')]));_0x11c25e[_0xb325('0x1c')]=_0x11c25e['attributes'][_0xb325('0x1e')]?_0x11c25e[_0xb325('0x1c')]:_0x1d8a89[_0xb325('0x18')];_0x11c25e['order']=qs[_0xb325('0x22')](_0x2c7649[_0xb325('0x19')][_0xb325('0x22')]);_0x11c25e['where']=qs[_0xb325('0x2e')](_['pick'](_0x2c7649[_0xb325('0x19')],_0x1d8a89[_0xb325('0x2e')]));if(_0x2c7649['query'][_0xb325('0x24')]){_0x11c25e[_0xb325('0x25')]=_[_0xb325('0x26')](_0x11c25e[_0xb325('0x25')],{'$or':_[_0xb325('0x14')](_0x11c25e[_0xb325('0x1c')],function(_0x207e4c){var _0x129efc={};_0x129efc[_0x207e4c]={'$like':'%'+_0x2c7649[_0xb325('0x19')][_0xb325('0x24')]+'%'};return _0x129efc;})});}_0x11c25e=_[_0xb325('0x26')]({},_0x11c25e,_0x2c7649[_0xb325('0x2f')]);return _0x232ff8[_0xb325('0x34')](_0x11c25e);}})[_0xb325('0x28')](function(_0x37f062){if(_0x37f062){_0x102242=_0x37f062[_0xb325('0x1e')];if(!_0x2c7649[_0xb325('0x19')]['hasOwnProperty'](_0xb325('0x20'))){_0x11c25e[_0xb325('0x7')]=qs['limit'](_0x2c7649[_0xb325('0x19')][_0xb325('0x7')]);_0x11c25e[_0xb325('0x5')]=qs[_0xb325('0x5')](_0x2c7649[_0xb325('0x19')][_0xb325('0x5')]);}return _0x232ff8['getConfigurations'](_0x11c25e);}})[_0xb325('0x28')](function(_0x249150){if(_0x249150){return _0x249150?{'count':_0x102242,'rows':_0x249150}:null;}})[_0xb325('0x28')](respondWithResult(_0x50bd2f,null))[_0xb325('0x2c')](handleError(_0x50bd2f,null));};exports[_0xb325('0x36')]=function(_0x5c7aa2,_0x3bb63c){if(_0x5c7aa2[_0xb325('0x31')]['id']){delete _0x5c7aa2[_0xb325('0x31')]['id'];}return db[_0xb325('0x15')][_0xb325('0x35')]({'where':{'id':_0x5c7aa2[_0xb325('0x33')]['id']}})[_0xb325('0x28')](handleEntityNotFound(_0x3bb63c,null))['then'](function(_0x1ef799){if(_0x1ef799){_0x5c7aa2[_0xb325('0x31')][_0xb325('0x37')]=_0x1ef799['id'];_0x5c7aa2['body'][_0xb325('0x38')]=integrations['getSubjects'](_0x5c7aa2['body'][_0xb325('0x39')],_0x5c7aa2[_0xb325('0x31')][_0xb325('0x3a')]);_0x5c7aa2[_0xb325('0x31')]['Descriptions']=integrations[_0xb325('0x3b')](_0x5c7aa2[_0xb325('0x31')][_0xb325('0x39')],_0x5c7aa2['body'][_0xb325('0x3a')]);return db[_0xb325('0x3c')][_0xb325('0x30')](_0x5c7aa2['body'],{'include':[{'model':db[_0xb325('0x3d')],'as':_0xb325('0x38')},{'model':db[_0xb325('0x3d')],'as':_0xb325('0x3e')}]});}return null;})['then'](respondWithResult(_0x3bb63c,null))['catch'](handleError(_0x3bb63c,null));};function sanitizeRemoteUri(_0x5d72e3){var _0xa447b7=_0x5d72e3[_0xb325('0x3f')](-0x1);if(_0xa447b7==='/')return _0x5d72e3[_0xb325('0x40')](0x0,_0x5d72e3['lastIndexOf'](_0xa447b7));return _0x5d72e3;}function getWebApiUrl(_0x2e8131){return util['format']('%s/api/data/v9.0/',_0x2e8131);}exports[_0xb325('0x41')]=function(_0x95789b,_0x1a8036){var _0x5e33da=_0x95789b[_0xb325('0x19')][_0xb325('0x42')];var _0x455510=_0x5e33da===_0xb325('0x43')?_0xb325('0x44'):_0xb325('0x45');var _0x5b68f3='';var _0x1a0391='';var _0x2d0048='';var _0x2da89b='';var _0xfc9d0d='';var _0x1da381='';var _0x19b261='';var _0x4219c2='';var _0x3a2002=[_0xb325('0x46'),_0xb325('0x47'),_0xb325('0x48'),_0xb325('0x49'),_0xb325('0x4a'),_0xb325('0x4b'),_0xb325('0x4c'),_0xb325('0x4d'),'directioncode','phonecall_activity_parties'];var _0x386cf3=['accountidname',_0xb325('0x4e'),'actualserviceunits',_0xb325('0x4f'),_0xb325('0x50'),_0xb325('0x51'),_0xb325('0x52'),_0xb325('0x53'),_0xb325('0x54'),_0xb325('0x55'),_0xb325('0x56'),'createdbyyominame',_0xb325('0x57'),'createdonbehalfbyname',_0xb325('0x58'),_0xb325('0x59'),'customeridtype',_0xb325('0x5a'),_0xb325('0x5b'),_0xb325('0x5c'),'entityimage_timestamp',_0xb325('0x5d'),'escalatedon',_0xb325('0x5e'),'firstresponsebykpiidname',_0xb325('0x5f'),_0xb325('0x60'),'influencescore',_0xb325('0x61'),'lastonholdtime','masteridname',_0xb325('0x62'),_0xb325('0x63'),_0xb325('0x64'),_0xb325('0x65'),'modifiedon',_0xb325('0x66'),_0xb325('0x67'),_0xb325('0x68'),'msdyn_iotalertname','numberofchildincidents',_0xb325('0x69'),_0xb325('0x6a'),_0xb325('0x6b'),'owneridtype',_0xb325('0x6c'),_0xb325('0x6d'),'primarycontactidname',_0xb325('0x6e'),_0xb325('0x6f'),_0xb325('0x70'),_0xb325('0x71'),_0xb325('0x72'),_0xb325('0x73'),_0xb325('0x74'),_0xb325('0x75'),_0xb325('0x76'),_0xb325('0x77'),_0xb325('0x78'),_0xb325('0x79'),_0xb325('0x7a'),_0xb325('0x7b'),_0xb325('0x7c'),'subjectidname',_0xb325('0x7d'),_0xb325('0x7e'),_0xb325('0x7f'),_0xb325('0x80'),_0xb325('0x81'),_0xb325('0x82')];var _0x288b28=_0x3a2002[_0xb325('0x83')](_0x386cf3);return db[_0xb325('0x15')][_0xb325('0x35')]({'where':{'id':_0x95789b[_0xb325('0x33')]['id']},'attributes':['id','username',_0xb325('0x84'),'remoteUri','tenantId','clientId',_0xb325('0x85'),_0xb325('0x86')],'include':[{'model':db[_0xb325('0x87')],'as':_0xb325('0x87'),'attributes':['id','data5',_0xb325('0x88')]}]})['then'](handleEntityNotFound(_0x1a8036,null))[_0xb325('0x28')](function(_0x611ccb){if(_0x611ccb){if(_0x611ccb['modernAuthentication']){_0x611ccb[_0xb325('0x89')]=_0x611ccb[_0xb325('0x87')][_0xb325('0x8a')];_0x4219c2=sanitizeRemoteUri(_0x611ccb[_0xb325('0x87')]['data7']);_0x19b261=getWebApiUrl(_0x4219c2);return _0x611ccb;}_0x4219c2=sanitizeRemoteUri(_0x611ccb[_0xb325('0x8b')]);_0x19b261=getWebApiUrl(_0x4219c2);var _0x5242da={'method':_0xb325('0x8c'),'uri':_0xb325('0x8d')+_0x611ccb[_0xb325('0x8e')]+'/oauth2/token','form':{'client_id':_0x611ccb[_0xb325('0x8f')],'resource':_0x4219c2,'username':_0x611ccb[_0xb325('0x90')],'password':_0x611ccb[_0xb325('0x84')],'grant_type':_0xb325('0x84'),'client_secret':_0x611ccb[_0xb325('0x85')]},'json':!![]};return rp(_0x5242da);}})[_0xb325('0x28')](function(_0x5ee30c){_0x1da381=_0x5ee30c['access_token'];var _0x16981d={'method':_0xb325('0x91'),'uri':encodeURI(_0x19b261+_0xb325('0x92')+_0x455510+'\x27'),'headers':{'Authorization':_0xb325('0x93')+_0x1da381,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x16981d);})[_0xb325('0x28')](function(_0x3f4b94){var _0x107395=_0x3f4b94['value'][0x0];var _0x4d23fb=_0x107395[_0xb325('0x94')];var _0x495d4e={'method':_0xb325('0x91'),'uri':_0x19b261+_0xb325('0x95')+_0x4d23fb+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0xb325('0x93')+_0x1da381,'If-None-Match':null,'OData-Version':_0xb325('0x96')},'json':!![]};return rp(_0x495d4e);})['then'](function(_0x4d35a0){_0x5b68f3=_0x4d35a0;_0x1a0391=_0x5b68f3['Attributes'];_0x1a0391=_[_0xb325('0x97')](_0x1a0391,function(_0x1dc617){return!_0x288b28[_0xb325('0x98')](_0x1dc617[_0xb325('0x99')]);});var _0x697d4f=[];var _0x187b02=[];_0x1a0391[_0xb325('0x9a')](function(_0x232f75){if(_0x232f75[_0xb325('0x9b')]){var _0x10011b=_0x232f75[_0xb325('0x9b')][_0xb325('0x40')](_0x232f75[_0xb325('0x9b')]['lastIndexOf']('.')+0x1);if(_0x10011b===_0xb325('0x9c')){_0x697d4f['push'](getSelectList(_0x19b261,_0x5e33da,_0x187b02,_0x5b68f3[_0xb325('0x94')],_0x232f75[_0xb325('0x94')],_0x1da381));}}});return Promise['all'](_0x697d4f);})[_0xb325('0x28')](function(_0x58916f){_0x2d0048=_0x58916f[0x0];var _0x43f96b=[];var _0x365076=[];_0x1a0391[_0xb325('0x9a')](function(_0x433057){if(!_['isNil'](_0x433057[_0xb325('0x9b')])){var _0x12e866=_0x433057['@odata.type'][_0xb325('0x40')](_0x433057[_0xb325('0x9b')]['lastIndexOf']('.')+0x1);if(_0x12e866===_0xb325('0x9d')){_0x43f96b[_0xb325('0x9e')](getBooleanList(_0x19b261,_0x5e33da,_0x365076,_0x5b68f3[_0xb325('0x94')],_0x433057[_0xb325('0x94')],_0x1da381));}}});return Promise[_0xb325('0x9f')](_0x43f96b);})[_0xb325('0x28')](function(_0x58da8f){_0x2da89b=_0x58da8f[0x0];var _0x4f106f=[];var _0x4ceeb6=[];_0x1a0391[_0xb325('0x9a')](function(_0x433b4e){if(_0x433b4e[_0xb325('0x9b')]){var _0x19f412=_0x433b4e[_0xb325('0x9b')][_0xb325('0x40')](_0x433b4e[_0xb325('0x9b')][_0xb325('0xa0')]('.')+0x1);if(_0x19f412==='StringAttributeMetadata'||_0x19f412==='DoubleAttributeMetadata'||_0x19f412===_0xb325('0xa1')||_0x19f412===_0xb325('0xa2')||_0x19f412===_0xb325('0xa3')||_0x19f412===_0xb325('0xa4')||_0x19f412===_0xb325('0xa5')||_0x19f412===_0xb325('0xa6')||_0x19f412===_0xb325('0xa7')||_0x19f412==='DecimalAttributeMetadata'){_0x4f106f[_0xb325('0x9e')](getInputList(_0x19b261,_0x5e33da,_0x19f412,_0x4ceeb6,_0x5b68f3[_0xb325('0x94')],_0x433b4e[_0xb325('0x94')],_0x1da381));}}});return Promise[_0xb325('0x9f')](_0x4f106f);})[_0xb325('0x28')](function(_0xf5c57){_0xfc9d0d=_0xf5c57[0x0];var _0x4063b5=_0x2d0048[_0xb325('0x83')](_0x2da89b)[_0xb325('0x83')](_0xfc9d0d);var _0x1ded67={'count':_0x4063b5[_0xb325('0x1e')],'rows':_0x4063b5};return _0x1ded67;})[_0xb325('0x28')](respondWithResult(_0x1a8036,null))['catch'](function(_0x964538){var _0x50e2d7=_0x95789b['query'][_0xb325('0xa8')]?0x1f4:_0x964538['statusCode']||0x1f4;logger[_0xb325('0xa9')](_0x964538[_0xb325('0x11')]);delete _0x964538['name'];if(_0x50e2d7===0x191){_0x50e2d7=0x190;}_0x1a8036[_0xb325('0x9')](_0x50e2d7)[_0xb325('0x13')](_0x95789b[_0xb325('0x19')][_0xb325('0xa8')]?{'message':_0xb325('0xaa'),'statusCode':_0x964538[_0xb325('0xab')]}:_0x964538);});};function getSelectList(_0x5df0ab,_0x207226,_0x32fc94,_0x4958b0,_0x57295e,_0x1b52d0){var _0x5eba7c={'method':_0xb325('0x91'),'uri':_0x5df0ab+_0xb325('0x95')+_0x4958b0+_0xb325('0xac')+_0x57295e+_0xb325('0xad')+_0xb325('0xae'),'headers':{'Authorization':_0xb325('0x93')+_0x1b52d0,'If-None-Match':null,'OData-Version':_0xb325('0x96')},'json':!![]};return rp(_0x5eba7c)['then'](function(_0x4abac2){var _0x35dca3=[];var _0x1d8342=_0x4abac2[_0xb325('0xaf')][_0xb325('0xb0')];_0x1d8342[_0xb325('0x9a')](function(_0x10ba5d){_0x35dca3[_0xb325('0x9e')]({'name':_0x10ba5d[_0xb325('0xb1')][_0xb325('0xb2')][_0xb325('0xb1')],'value':String(_0x10ba5d['Value'])});});var _0x56923e={'id':_0x207226+'_'+_0x4abac2[_0xb325('0x99')],'name':_0x4abac2['DisplayName'][_0xb325('0xb2')][_0xb325('0xb1')],'custom':![],'options':_0x35dca3};_0x32fc94[_0xb325('0x9e')](_0x56923e);return _0x32fc94;});}function getBooleanList(_0x1f9917,_0x37a9f4,_0x4ba329,_0x5737b8,_0x5bfe6c,_0x3e7dd5){var _0x2d294e={'method':_0xb325('0x91'),'uri':_0x1f9917+_0xb325('0x95')+_0x5737b8+')/Attributes('+_0x5bfe6c+_0xb325('0xb3'),'headers':{'Authorization':_0xb325('0x93')+_0x3e7dd5,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2d294e)[_0xb325('0x28')](function(_0x1d75e6){var _0x5f2f4b=[];_0x5f2f4b[_0xb325('0x9e')]({'name':_0x1d75e6[_0xb325('0xaf')][_0xb325('0xb4')][_0xb325('0xb1')][_0xb325('0xb2')][_0xb325('0xb1')],'value':_0xb325('0xb5')},{'name':_0x1d75e6[_0xb325('0xaf')]['FalseOption'][_0xb325('0xb1')][_0xb325('0xb2')][_0xb325('0xb1')],'value':'false'});var _0x465773={'id':_0x37a9f4+'_'+_0x1d75e6[_0xb325('0x99')],'name':_0x1d75e6['DisplayName'][_0xb325('0xb2')]['Label'],'custom':![],'options':_0x5f2f4b};_0x4ba329['push'](_0x465773);return _0x4ba329;});}function getInputList(_0x6edc33,_0x1ef627,_0xd5f71f,_0x1cd7db,_0x482edf,_0x5d296a,_0x47bb65){var _0x9e9b2f={'method':_0xb325('0x91'),'uri':_0x6edc33+_0xb325('0x95')+_0x482edf+_0xb325('0xac')+_0x5d296a+_0xb325('0xb6')+_0xd5f71f+_0xb325('0xb7'),'headers':{'Authorization':_0xb325('0x93')+_0x47bb65,'If-None-Match':null,'OData-Version':_0xb325('0x96')},'json':!![]};return rp(_0x9e9b2f)['then'](function(_0x19fd49){var _0x54829e={'id':_0x1ef627+'_'+_0x19fd49[_0xb325('0x99')],'name':_0x19fd49['DisplayName'][_0xb325('0xb2')]?_0x19fd49[_0xb325('0xb8')]['UserLocalizedLabel']['Label']:_0x19fd49[_0xb325('0x99')],'custom':![],'options':[]};_0x1cd7db['push'](_0x54829e);return _0x1cd7db;});}
\ No newline at end of file
index 95be641..46b27ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x43f49c,_0x279bba){var _0x25e2c8=function(_0x27ff39){while(--_0x27ff39){_0x43f49c['push'](_0x43f49c['shift']());}};_0x25e2c8(++_0x279bba);}(_0xe706,0xa3));var _0x6e70=function(_0x290c31,_0x534b8a){_0x290c31=_0x290c31-0x0;var _0x2eb0ac=_0xe706[_0x290c31];return _0x2eb0ac;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts'];(function(_0x272638,_0x42b993){var _0x19d027=function(_0x27ac44){while(--_0x27ac44){_0x272638['push'](_0x272638['shift']());}};_0x19d027(++_0x42b993);}(_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'));var integrations=require(_0x3071('0x8'));module[_0x3071('0x9')]=function(_0x41cf76,_0x1d3dd6){return _0x41cf76[_0x3071('0xa')](_0x3071('0xb'),attributes,{'tableName':_0x3071('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3db070f..edb377a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b82=['request','info','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dynamics365Account,\x20%s,\x20%s','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','ShowDynamics365Account','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0xb7a459,_0xc13228){var _0x104ab5=function(_0x186a0e){while(--_0x186a0e){_0xb7a459['push'](_0xb7a459['shift']());}};_0x104ab5(++_0xc13228);}(_0x6b82,0x131));var _0x26b8=function(_0x32b9c9,_0x5881e6){_0x32b9c9=_0x32b9c9-0x0;var _0x1a837f=_0x6b82[_0x32b9c9];return _0x1a837f;};'use strict';var _=require(_0x26b8('0x0'));var util=require(_0x26b8('0x1'));var moment=require('moment');var BPromise=require(_0x26b8('0x2'));var rs=require(_0x26b8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x26b8('0x4'))['db'];var utils=require(_0x26b8('0x5'));var logger=require(_0x26b8('0x6'))('rpc');var config=require(_0x26b8('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x26b8('0x8')][_0x26b8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30a895,_0xc3da0b,_0x8d3dda){return new BPromise(function(_0x16ac12,_0x21eea2){return client[_0x26b8('0xa')](_0x30a895,_0x8d3dda)['then'](function(_0x1be599){logger[_0x26b8('0xb')]('Dynamics365Account,\x20%s,\x20%s',_0xc3da0b,'request\x20sent');logger['debug'](_0x26b8('0xc'),_0xc3da0b,_0x26b8('0xd'),JSON[_0x26b8('0xe')](_0x1be599));if(_0x1be599[_0x26b8('0xf')]){if(_0x1be599['error']['code']===0x1f4){logger[_0x26b8('0xf')](_0x26b8('0x10'),_0xc3da0b,_0x1be599[_0x26b8('0xf')]['message']);return _0x21eea2(_0x1be599[_0x26b8('0xf')][_0x26b8('0x11')]);}logger[_0x26b8('0xf')](_0x26b8('0x10'),_0xc3da0b,_0x1be599[_0x26b8('0xf')][_0x26b8('0x11')]);return _0x16ac12(_0x1be599['error'][_0x26b8('0x11')]);}else{logger['info'](_0x26b8('0x10'),_0xc3da0b,_0x26b8('0xd'));_0x16ac12(_0x1be599[_0x26b8('0x12')][_0x26b8('0x11')]);}})[_0x26b8('0x13')](function(_0x1765d0){logger[_0x26b8('0xf')](_0x26b8('0x10'),_0xc3da0b,_0x1765d0);_0x21eea2(_0x1765d0);});});}exports[_0x26b8('0x14')]=function(_0x14d5f6){var _0x5a0c4a=this;return new Promise(function(_0x20efcb,_0x233550){return db[_0x26b8('0x15')][_0x26b8('0x16')]({'raw':_0x14d5f6[_0x26b8('0x17')]?_0x14d5f6[_0x26b8('0x17')][_0x26b8('0x18')]===undefined?!![]:![]:!![],'where':_0x14d5f6['options']?_0x14d5f6[_0x26b8('0x17')][_0x26b8('0x19')]||null:null,'attributes':_0x14d5f6['options']?_0x14d5f6[_0x26b8('0x17')][_0x26b8('0x1a')]||null:null,'limit':_0x14d5f6[_0x26b8('0x17')]?_0x14d5f6['options'][_0x26b8('0x1b')]||null:null,'include':_0x14d5f6[_0x26b8('0x17')]?_0x14d5f6['options'][_0x26b8('0x1c')]?_[_0x26b8('0x1d')](_0x14d5f6[_0x26b8('0x17')][_0x26b8('0x1c')],function(_0xcea7ae){return{'model':db[_0xcea7ae[_0x26b8('0x1e')]],'as':_0xcea7ae['as'],'attributes':_0xcea7ae[_0x26b8('0x1a')],'include':_0xcea7ae['include']?_[_0x26b8('0x1d')](_0xcea7ae['include'],function(_0x3ea536){return{'model':db[_0x3ea536[_0x26b8('0x1e')]],'as':_0x3ea536['as'],'attributes':_0x3ea536[_0x26b8('0x1a')],'include':_0x3ea536['include']?_[_0x26b8('0x1d')](_0x3ea536[_0x26b8('0x1c')],function(_0x3ca499){return{'model':db[_0x3ca499[_0x26b8('0x1e')]],'as':_0x3ca499['as'],'attributes':_0x3ca499['attributes']};}):[]};}):[]};}):[]:[]})[_0x26b8('0x1f')](function(_0x440451){logger['info'](_0x26b8('0x14'),_0x14d5f6);logger[_0x26b8('0x20')](_0x26b8('0x14'),_0x14d5f6,JSON['stringify'](_0x440451));_0x20efcb(_0x440451);})[_0x26b8('0x13')](function(_0x49dc02){logger[_0x26b8('0xf')](_0x26b8('0x14'),_0x49dc02[_0x26b8('0x11')],_0x14d5f6);_0x233550(_0x5a0c4a['error'](0x1f4,_0x49dc02[_0x26b8('0x11')]));});});};exports[_0x26b8('0x21')]=function(_0x10f4ea){var _0x5f2f5f=this;return new Promise(function(_0x269193,_0x121809){return db['Dynamics365Account'][_0x26b8('0x22')]({'raw':_0x10f4ea[_0x26b8('0x17')]?_0x10f4ea[_0x26b8('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x10f4ea[_0x26b8('0x17')]?_0x10f4ea[_0x26b8('0x17')][_0x26b8('0x19')]||null:null,'attributes':_0x10f4ea[_0x26b8('0x17')]?_0x10f4ea[_0x26b8('0x17')]['attributes']||null:null,'include':_0x10f4ea[_0x26b8('0x17')]?_0x10f4ea[_0x26b8('0x17')][_0x26b8('0x1c')]?_['map'](_0x10f4ea[_0x26b8('0x17')]['include'],function(_0x5432c6){return{'model':db[_0x5432c6[_0x26b8('0x1e')]],'as':_0x5432c6['as'],'attributes':_0x5432c6[_0x26b8('0x1a')],'include':_0x5432c6['include']?_['map'](_0x5432c6[_0x26b8('0x1c')],function(_0x4405be){return{'model':db[_0x4405be[_0x26b8('0x1e')]],'as':_0x4405be['as'],'attributes':_0x4405be['attributes'],'include':_0x4405be['include']?_[_0x26b8('0x1d')](_0x4405be[_0x26b8('0x1c')],function(_0x335ee1){return{'model':db[_0x335ee1[_0x26b8('0x1e')]],'as':_0x335ee1['as'],'attributes':_0x335ee1[_0x26b8('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x26b8('0x1f')](function(_0x4cd7a1){logger[_0x26b8('0xb')](_0x26b8('0x21'),_0x10f4ea);logger[_0x26b8('0x20')](_0x26b8('0x21'),_0x10f4ea,JSON[_0x26b8('0xe')](_0x4cd7a1));_0x269193(_0x4cd7a1);})[_0x26b8('0x13')](function(_0x4be38d){logger['error'](_0x26b8('0x21'),_0x4be38d[_0x26b8('0x11')],_0x10f4ea);_0x121809(_0x5f2f5f[_0x26b8('0xf')](0x1f4,_0x4be38d[_0x26b8('0x11')]));});});};
\ No newline at end of file
+var _0xa301=['request','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetDynamics365Account','findAll','options','where','attributes','limit','map','include','model','then','find','raw','ShowDynamics365Account','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x46f915,_0x43251c){var _0x3d6cca=function(_0x55bac2){while(--_0x55bac2){_0x46f915['push'](_0x46f915['shift']());}};_0x3d6cca(++_0x43251c);}(_0xa301,0x1a4));var _0x1a30=function(_0x26b3ac,_0x4ed282){_0x26b3ac=_0x26b3ac-0x0;var _0x362e28=_0xa301[_0x26b3ac];return _0x362e28;};'use strict';var _=require(_0x1a30('0x0'));var util=require('util');var moment=require(_0x1a30('0x1'));var BPromise=require(_0x1a30('0x2'));var rs=require(_0x1a30('0x3'));var fs=require('fs');var Redis=require(_0x1a30('0x4'));var db=require(_0x1a30('0x5'))['db'];var utils=require(_0x1a30('0x6'));var logger=require(_0x1a30('0x7'))('rpc');var config=require(_0x1a30('0x8'));var jayson=require(_0x1a30('0x9'));var client=jayson[_0x1a30('0xa')][_0x1a30('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4dad98,_0x1158cb,_0x51b3a8){return new BPromise(function(_0x2ef672,_0xd1fc09){return client[_0x1a30('0xc')](_0x4dad98,_0x51b3a8)['then'](function(_0x1262da){logger['info'](_0x1a30('0xd'),_0x1158cb,_0x1a30('0xe'));logger[_0x1a30('0xf')](_0x1a30('0x10'),_0x1158cb,'request\x20sent',JSON[_0x1a30('0x11')](_0x1262da));if(_0x1262da[_0x1a30('0x12')]){if(_0x1262da['error']['code']===0x1f4){logger['error'](_0x1a30('0xd'),_0x1158cb,_0x1262da[_0x1a30('0x12')][_0x1a30('0x13')]);return _0xd1fc09(_0x1262da[_0x1a30('0x12')][_0x1a30('0x13')]);}logger[_0x1a30('0x12')](_0x1a30('0xd'),_0x1158cb,_0x1262da[_0x1a30('0x12')][_0x1a30('0x13')]);return _0x2ef672(_0x1262da[_0x1a30('0x12')]['message']);}else{logger[_0x1a30('0x14')]('Dynamics365Account,\x20%s,\x20%s',_0x1158cb,_0x1a30('0xe'));_0x2ef672(_0x1262da[_0x1a30('0x15')][_0x1a30('0x13')]);}})[_0x1a30('0x16')](function(_0x4108d3){logger[_0x1a30('0x12')](_0x1a30('0xd'),_0x1158cb,_0x4108d3);_0xd1fc09(_0x4108d3);});});}exports[_0x1a30('0x17')]=function(_0x3056ce){var _0x28b7f2=this;return new Promise(function(_0x5de4d9,_0x2254ef){return db['Dynamics365Account'][_0x1a30('0x18')]({'raw':_0x3056ce['options']?_0x3056ce[_0x1a30('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3056ce[_0x1a30('0x19')]?_0x3056ce['options'][_0x1a30('0x1a')]||null:null,'attributes':_0x3056ce[_0x1a30('0x19')]?_0x3056ce[_0x1a30('0x19')][_0x1a30('0x1b')]||null:null,'limit':_0x3056ce[_0x1a30('0x19')]?_0x3056ce['options'][_0x1a30('0x1c')]||null:null,'include':_0x3056ce['options']?_0x3056ce[_0x1a30('0x19')]['include']?_[_0x1a30('0x1d')](_0x3056ce[_0x1a30('0x19')][_0x1a30('0x1e')],function(_0x311762){return{'model':db[_0x311762[_0x1a30('0x1f')]],'as':_0x311762['as'],'attributes':_0x311762[_0x1a30('0x1b')],'include':_0x311762[_0x1a30('0x1e')]?_[_0x1a30('0x1d')](_0x311762['include'],function(_0x522cdb){return{'model':db[_0x522cdb[_0x1a30('0x1f')]],'as':_0x522cdb['as'],'attributes':_0x522cdb[_0x1a30('0x1b')],'include':_0x522cdb[_0x1a30('0x1e')]?_[_0x1a30('0x1d')](_0x522cdb[_0x1a30('0x1e')],function(_0x3fe13b){return{'model':db[_0x3fe13b[_0x1a30('0x1f')]],'as':_0x3fe13b['as'],'attributes':_0x3fe13b[_0x1a30('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x1a30('0x20')](function(_0x5b28a9){logger['info'](_0x1a30('0x17'),_0x3056ce);logger[_0x1a30('0xf')](_0x1a30('0x17'),_0x3056ce,JSON[_0x1a30('0x11')](_0x5b28a9));_0x5de4d9(_0x5b28a9);})[_0x1a30('0x16')](function(_0x31d8b6){logger[_0x1a30('0x12')]('GetDynamics365Account',_0x31d8b6[_0x1a30('0x13')],_0x3056ce);_0x2254ef(_0x28b7f2[_0x1a30('0x12')](0x1f4,_0x31d8b6[_0x1a30('0x13')]));});});};exports['ShowDynamics365Account']=function(_0x3c039b){var _0x27641a=this;return new Promise(function(_0x502990,_0x523a7c){return db['Dynamics365Account'][_0x1a30('0x21')]({'raw':_0x3c039b[_0x1a30('0x19')]?_0x3c039b[_0x1a30('0x19')][_0x1a30('0x22')]===undefined?!![]:![]:!![],'where':_0x3c039b[_0x1a30('0x19')]?_0x3c039b[_0x1a30('0x19')][_0x1a30('0x1a')]||null:null,'attributes':_0x3c039b['options']?_0x3c039b[_0x1a30('0x19')]['attributes']||null:null,'include':_0x3c039b[_0x1a30('0x19')]?_0x3c039b[_0x1a30('0x19')][_0x1a30('0x1e')]?_['map'](_0x3c039b[_0x1a30('0x19')][_0x1a30('0x1e')],function(_0x3beee0){return{'model':db[_0x3beee0[_0x1a30('0x1f')]],'as':_0x3beee0['as'],'attributes':_0x3beee0[_0x1a30('0x1b')],'include':_0x3beee0[_0x1a30('0x1e')]?_[_0x1a30('0x1d')](_0x3beee0[_0x1a30('0x1e')],function(_0x2ae25e){return{'model':db[_0x2ae25e[_0x1a30('0x1f')]],'as':_0x2ae25e['as'],'attributes':_0x2ae25e[_0x1a30('0x1b')],'include':_0x2ae25e[_0x1a30('0x1e')]?_[_0x1a30('0x1d')](_0x2ae25e[_0x1a30('0x1e')],function(_0x1563ab){return{'model':db[_0x1563ab[_0x1a30('0x1f')]],'as':_0x1563ab['as'],'attributes':_0x1563ab[_0x1a30('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4c1ffb){logger[_0x1a30('0x14')](_0x1a30('0x23'),_0x3c039b);logger[_0x1a30('0xf')](_0x1a30('0x23'),_0x3c039b,JSON[_0x1a30('0x11')](_0x4c1ffb));_0x502990(_0x4c1ffb);})['catch'](function(_0x3d1f83){logger[_0x1a30('0x12')](_0x1a30('0x23'),_0x3d1f83[_0x1a30('0x13')],_0x3c039b);_0x523a7c(_0x27641a[_0x1a30('0x12')](0x1f4,_0x3d1f83[_0x1a30('0x13')]));});});};
\ No newline at end of file
index 145d7d5..dc32e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff73=['post','create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Configuration.controller','get','index','/:id','isAuthenticated','show','getFields','getSubjects'];(function(_0x3d9c29,_0x4a5eda){var _0x4075ac=function(_0xa4f65e){while(--_0xa4f65e){_0x3d9c29['push'](_0x3d9c29['shift']());}};_0x4075ac(++_0x4a5eda);}(_0xff73,0x1d4));var _0x3ff7=function(_0x261999,_0x15f7e8){_0x261999=_0x261999-0x0;var _0x109e04=_0xff73[_0x261999];return _0x109e04;};'use strict';var multer=require(_0x3ff7('0x0'));var util=require(_0x3ff7('0x1'));var path=require('path');var timeout=require(_0x3ff7('0x2'));var express=require(_0x3ff7('0x3'));var router=express[_0x3ff7('0x4')]();var fs_extra=require(_0x3ff7('0x5'));var auth=require(_0x3ff7('0x6'));var interaction=require(_0x3ff7('0x7'));var config=require('../../config/environment');var controller=require(_0x3ff7('0x8'));router[_0x3ff7('0x9')]('/',auth['isAuthenticated'](),controller[_0x3ff7('0xa')]);router[_0x3ff7('0x9')](_0x3ff7('0xb'),auth[_0x3ff7('0xc')](),controller[_0x3ff7('0xd')]);router['get']('/:id/fields',auth[_0x3ff7('0xc')](),controller[_0x3ff7('0xe')]);router[_0x3ff7('0x9')]('/:id/subjects',auth[_0x3ff7('0xc')](),controller[_0x3ff7('0xf')]);router['get']('/:id/descriptions',auth[_0x3ff7('0xc')](),controller['getDescriptions']);router[_0x3ff7('0x10')]('/',auth[_0x3ff7('0xc')](),controller[_0x3ff7('0x11')]);router[_0x3ff7('0x12')](_0x3ff7('0xb'),auth['isAuthenticated'](),controller[_0x3ff7('0x13')]);router['delete']('/:id',auth[_0x3ff7('0xc')](),controller[_0x3ff7('0x14')]);module[_0x3ff7('0x15')]=router;
\ No newline at end of file
+var _0xba3a=['multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xba3a,0x84));var _0xaba3=function(_0x200b4d,_0x4b997f){_0x200b4d=_0x200b4d-0x0;var _0x29b4d5=_0xba3a[_0x200b4d];return _0x29b4d5;};'use strict';var multer=require(_0xaba3('0x0'));var util=require('util');var path=require(_0xaba3('0x1'));var timeout=require('connect-timeout');var express=require(_0xaba3('0x2'));var router=express[_0xaba3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xaba3('0x4'));var interaction=require(_0xaba3('0x5'));var config=require(_0xaba3('0x6'));var controller=require(_0xaba3('0x7'));router[_0xaba3('0x8')]('/',auth[_0xaba3('0x9')](),controller['index']);router[_0xaba3('0x8')](_0xaba3('0xa'),auth[_0xaba3('0x9')](),controller[_0xaba3('0xb')]);router[_0xaba3('0x8')]('/:id/fields',auth[_0xaba3('0x9')](),controller[_0xaba3('0xc')]);router[_0xaba3('0x8')](_0xaba3('0xd'),auth[_0xaba3('0x9')](),controller[_0xaba3('0xe')]);router[_0xaba3('0x8')](_0xaba3('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0xaba3('0x10')]('/',auth['isAuthenticated'](),controller[_0xaba3('0x11')]);router[_0xaba3('0x12')](_0xaba3('0xa'),auth[_0xaba3('0x9')](),controller[_0xaba3('0x13')]);router[_0xaba3('0x14')](_0xaba3('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xaba3('0x15')]=router;
\ No newline at end of file
index 436613c..4b0dfcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02f0=['contact','nothing','BOOLEAN','sequelize','exports','STRING','ENUM','incident'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0x02f0,0xeb));var _0x002f=function(_0x2f30f4,_0xa70942){_0x2f30f4=_0x2f30f4-0x0;var _0x382470=_0x02f0[_0x2f30f4];return _0x382470;};'use strict';var Sequelize=require(_0x002f('0x0'));module[_0x002f('0x1')]={'name':{'type':Sequelize[_0x002f('0x2')]},'description':{'type':Sequelize[_0x002f('0x2')]},'ticketType':{'type':Sequelize[_0x002f('0x3')](_0x002f('0x4'),'phonecall'),'defaultValue':_0x002f('0x4')},'moduleCreate':{'type':Sequelize[_0x002f('0x3')](_0x002f('0x5'),_0x002f('0x6')),'defaultValue':_0x002f('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x002f('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x002f('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x54ef=['nothing','contact','BOOLEAN','STRING','ENUM','incident'];(function(_0x4017b0,_0x4347db){var _0x5ed4f7=function(_0x706c26){while(--_0x706c26){_0x4017b0['push'](_0x4017b0['shift']());}};_0x5ed4f7(++_0x4347db);}(_0x54ef,0x69));var _0xf54e=function(_0x1bd750,_0x51dcc0){_0x1bd750=_0x1bd750-0x0;var _0x442ca1=_0x54ef[_0x1bd750];return _0x442ca1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xf54e('0x0')]},'description':{'type':Sequelize[_0xf54e('0x0')]},'ticketType':{'type':Sequelize[_0xf54e('0x1')](_0xf54e('0x2'),'phonecall'),'defaultValue':_0xf54e('0x2')},'moduleCreate':{'type':Sequelize[_0xf54e('0x1')]('contact',_0xf54e('0x3')),'defaultValue':_0xf54e('0x4'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xf54e('0x0')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xf54e('0x5')],'defaultValue':!![]}};
\ No newline at end of file
index 3788291..86b625a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x306e=['limit','undefined','count','status','set','apply','reject','save','then','destroy','error','stack','name','send','Dynamics365Configuration','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','catch','show','options','find','create','body','params','getFields','findOne','Dynamics365Field','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset'];(function(_0x1d6c92,_0x472c12){var _0x49178f=function(_0x4e4680){while(--_0x4e4680){_0x1d6c92['push'](_0x1d6c92['shift']());}};_0x49178f(++_0x472c12);}(_0x306e,0x86));var _0xe306=function(_0x2197da,_0x323842){_0x2197da=_0x2197da-0x0;var _0x3070a8=_0x306e[_0x2197da];return _0x3070a8;};'use strict';var emlformat=require(_0xe306('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe306('0x1'));var jsonpatch=require(_0xe306('0x2'));var rp=require(_0xe306('0x3'));var moment=require(_0xe306('0x4'));var BPromise=require(_0xe306('0x5'));var Mustache=require(_0xe306('0x6'));var util=require(_0xe306('0x7'));var path=require(_0xe306('0x8'));var sox=require('sox');var csv=require(_0xe306('0x9'));var ejs=require(_0xe306('0xa'));var fs=require('fs');var fs_extra=require(_0xe306('0xb'));var _=require(_0xe306('0xc'));var squel=require(_0xe306('0xd'));var crypto=require(_0xe306('0xe'));var jsforce=require(_0xe306('0xf'));var deskjs=require(_0xe306('0x10'));var toCsv=require(_0xe306('0x9'));var querystring=require(_0xe306('0x11'));var Papa=require(_0xe306('0x12'));var Redis=require(_0xe306('0x13'));var authService=require(_0xe306('0x14'));var qs=require(_0xe306('0x15'));var as=require(_0xe306('0x16'));var hardwareService=require(_0xe306('0x17'));var logger=require(_0xe306('0x18'))('api');var utils=require(_0xe306('0x19'));var config=require(_0xe306('0x1a'));var licenseUtil=require(_0xe306('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e8c54,_0x53d69c){_0x53d69c=_0x53d69c||0xcc;return function(_0x22040e){if(_0x22040e){return _0x1e8c54[_0xe306('0x1c')](_0x53d69c);}return _0x1e8c54['status'](_0x53d69c)[_0xe306('0x1d')]();};}function respondWithResult(_0x439202,_0x13b9e1){_0x13b9e1=_0x13b9e1||0xc8;return function(_0x55154d){if(_0x55154d){return _0x439202['status'](_0x13b9e1)[_0xe306('0x1e')](_0x55154d);}};}function respondWithFilteredResult(_0x40ac8b,_0x42932b){return function(_0xfffa95){if(_0xfffa95){var _0x190f85=typeof _0x42932b[_0xe306('0x1f')]==='undefined'&&typeof _0x42932b[_0xe306('0x20')]===_0xe306('0x21');var _0x35aa4a=_0xfffa95['count'];var _0x4051b2=_0x190f85?0x0:_0x42932b['offset'];var _0x730055=_0x190f85?_0xfffa95[_0xe306('0x22')]:_0x42932b[_0xe306('0x1f')]+_0x42932b['limit'];var _0xc6e120;if(_0x730055>=_0x35aa4a){_0x730055=_0x35aa4a;_0xc6e120=0xc8;}else{_0xc6e120=0xce;}_0x40ac8b[_0xe306('0x23')](_0xc6e120);return _0x40ac8b[_0xe306('0x24')]('Content-Range',_0x4051b2+'-'+_0x730055+'/'+_0x35aa4a)[_0xe306('0x1e')](_0xfffa95);}return null;};}function patchUpdates(_0x347d5a){return function(_0x1a2200){try{jsonpatch[_0xe306('0x25')](_0x1a2200,_0x347d5a,!![]);}catch(_0x42146b){return BPromise[_0xe306('0x26')](_0x42146b);}return _0x1a2200[_0xe306('0x27')]();};}function saveUpdates(_0xa6dcaf,_0xe239f6){return function(_0x20ee72){if(_0x20ee72){return _0x20ee72['update'](_0xa6dcaf)[_0xe306('0x28')](function(_0x354774){return _0x354774;});}return null;};}function removeEntity(_0x4a25c8,_0xfac19e){return function(_0x25ae21){if(_0x25ae21){return _0x25ae21[_0xe306('0x29')]()[_0xe306('0x28')](function(){_0x4a25c8[_0xe306('0x23')](0xcc)[_0xe306('0x1d')]();});}};}function handleEntityNotFound(_0x39ddbc,_0x1c524f){return function(_0x26ccba){if(!_0x26ccba){_0x39ddbc[_0xe306('0x1c')](0x194);}return _0x26ccba;};}function handleError(_0xb48720,_0x27bd52){_0x27bd52=_0x27bd52||0x1f4;return function(_0x133f6e){logger[_0xe306('0x2a')](_0x133f6e[_0xe306('0x2b')]);if(_0x133f6e[_0xe306('0x2c')]){delete _0x133f6e[_0xe306('0x2c')];}_0xb48720[_0xe306('0x23')](_0x27bd52)[_0xe306('0x2d')](_0x133f6e);};}exports['index']=function(_0xa2afe1,_0x35b427){var _0x2ae08a={},_0x5bc603={},_0x4680f1={'count':0x0,'rows':[]};var _0x126b28=_['map'](db[_0xe306('0x2e')][_0xe306('0x2f')],function(_0x2ab219){return{'name':_0x2ab219[_0xe306('0x30')],'type':_0x2ab219['type'][_0xe306('0x31')]};});_0x5bc603[_0xe306('0x32')]=_[_0xe306('0x33')](_0x126b28,_0xe306('0x2c'));_0x5bc603[_0xe306('0x34')]=_[_0xe306('0x35')](_0xa2afe1['query']);_0x5bc603[_0xe306('0x36')]=_['intersection'](_0x5bc603['model'],_0x5bc603[_0xe306('0x34')]);_0x2ae08a[_0xe306('0x37')]=_[_0xe306('0x38')](_0x5bc603['model'],qs[_0xe306('0x39')](_0xa2afe1[_0xe306('0x34')][_0xe306('0x39')]));_0x2ae08a[_0xe306('0x37')]=_0x2ae08a[_0xe306('0x37')][_0xe306('0x3a')]?_0x2ae08a['attributes']:_0x5bc603[_0xe306('0x32')];if(!_0xa2afe1[_0xe306('0x34')][_0xe306('0x3b')](_0xe306('0x3c'))){_0x2ae08a[_0xe306('0x20')]=qs[_0xe306('0x20')](_0xa2afe1['query'][_0xe306('0x20')]);_0x2ae08a['offset']=qs['offset'](_0xa2afe1[_0xe306('0x34')]['offset']);}_0x2ae08a[_0xe306('0x3d')]=qs[_0xe306('0x3e')](_0xa2afe1[_0xe306('0x34')][_0xe306('0x3e')]);_0x2ae08a[_0xe306('0x3f')]=qs[_0xe306('0x36')](_[_0xe306('0x40')](_0xa2afe1[_0xe306('0x34')],_0x5bc603[_0xe306('0x36')]),_0x126b28);if(_0xa2afe1[_0xe306('0x34')][_0xe306('0x41')]){_0x2ae08a[_0xe306('0x3f')]=_[_0xe306('0x42')](_0x2ae08a['where'],{'$or':_[_0xe306('0x33')](_0x126b28,function(_0x368934){if(_0x368934[_0xe306('0x43')]!=='VIRTUAL'){var _0x43bf76={};_0x43bf76[_0x368934[_0xe306('0x2c')]]={'$like':'%'+_0xa2afe1[_0xe306('0x34')][_0xe306('0x41')]+'%'};return _0x43bf76;}})});}_0x2ae08a=_['merge']({},_0x2ae08a,_0xa2afe1['options']);var _0x4678aa={'where':_0x2ae08a[_0xe306('0x3f')]};return db[_0xe306('0x2e')][_0xe306('0x22')](_0x4678aa)[_0xe306('0x28')](function(_0x5a3619){_0x4680f1[_0xe306('0x22')]=_0x5a3619;if(_0xa2afe1[_0xe306('0x34')][_0xe306('0x44')]){_0x2ae08a[_0xe306('0x45')]=[{'all':!![]}];}return db[_0xe306('0x2e')][_0xe306('0x46')](_0x2ae08a);})[_0xe306('0x28')](function(_0x43656e){_0x4680f1['rows']=_0x43656e;return _0x4680f1;})['then'](respondWithFilteredResult(_0x35b427,_0x2ae08a))[_0xe306('0x47')](handleError(_0x35b427,null));};exports[_0xe306('0x48')]=function(_0x218941,_0xb59331){var _0x48361e={'raw':![],'where':{'id':_0x218941['params']['id']}},_0x2099b1={};_0x2099b1[_0xe306('0x32')]=_['keys'](db[_0xe306('0x2e')][_0xe306('0x2f')]);_0x2099b1['query']=_['keys'](_0x218941[_0xe306('0x34')]);_0x2099b1[_0xe306('0x36')]=_[_0xe306('0x38')](_0x2099b1[_0xe306('0x32')],_0x2099b1['query']);_0x48361e['attributes']=_[_0xe306('0x38')](_0x2099b1[_0xe306('0x32')],qs['fields'](_0x218941[_0xe306('0x34')][_0xe306('0x39')]));_0x48361e[_0xe306('0x37')]=_0x48361e[_0xe306('0x37')]['length']?_0x48361e['attributes']:_0x2099b1['model'];if(_0x218941['query'][_0xe306('0x44')]){_0x48361e[_0xe306('0x45')]=[{'all':!![]}];}_0x48361e=_['merge']({},_0x48361e,_0x218941[_0xe306('0x49')]);return db[_0xe306('0x2e')][_0xe306('0x4a')](_0x48361e)[_0xe306('0x28')](handleEntityNotFound(_0xb59331,null))['then'](respondWithResult(_0xb59331,null))[_0xe306('0x47')](handleError(_0xb59331,null));};exports['create']=function(_0x335206,_0xbda44){return db[_0xe306('0x2e')][_0xe306('0x4b')](_0x335206[_0xe306('0x4c')],{})[_0xe306('0x28')](respondWithResult(_0xbda44,0xc9))['catch'](handleError(_0xbda44,null));};exports['update']=function(_0x5cc660,_0x4f5b6d){if(_0x5cc660[_0xe306('0x4c')]['id']){delete _0x5cc660[_0xe306('0x4c')]['id'];}return db[_0xe306('0x2e')][_0xe306('0x4a')]({'where':{'id':_0x5cc660[_0xe306('0x4d')]['id']}})[_0xe306('0x28')](handleEntityNotFound(_0x4f5b6d,null))[_0xe306('0x28')](saveUpdates(_0x5cc660[_0xe306('0x4c')],null))[_0xe306('0x28')](respondWithResult(_0x4f5b6d,null))[_0xe306('0x47')](handleError(_0x4f5b6d,null));};exports[_0xe306('0x29')]=function(_0x43a652,_0x158b98){return db['Dynamics365Configuration']['find']({'where':{'id':_0x43a652[_0xe306('0x4d')]['id']}})[_0xe306('0x28')](handleEntityNotFound(_0x158b98,null))['then'](removeEntity(_0x158b98,null))[_0xe306('0x47')](handleError(_0x158b98,null));};exports[_0xe306('0x4e')]=function(_0x30d5b5,_0x3c7daa,_0x59df53){var _0xf5c12={};var _0x31e50d={};var _0x5bd329;var _0x52b5b0;return db[_0xe306('0x2e')][_0xe306('0x4f')]({'where':{'id':_0x30d5b5[_0xe306('0x4d')]['id']}})[_0xe306('0x28')](handleEntityNotFound(_0x3c7daa,null))[_0xe306('0x28')](function(_0x11a81b){if(_0x11a81b){_0x5bd329=_0x11a81b;_0x31e50d['model']=_[_0xe306('0x35')](db[_0xe306('0x50')][_0xe306('0x2f')]);_0x31e50d[_0xe306('0x34')]=_[_0xe306('0x35')](_0x30d5b5[_0xe306('0x34')]);_0x31e50d['filters']=_['intersection'](_0x31e50d[_0xe306('0x32')],_0x31e50d[_0xe306('0x34')]);_0xf5c12[_0xe306('0x37')]=_[_0xe306('0x38')](_0x31e50d[_0xe306('0x32')],qs[_0xe306('0x39')](_0x30d5b5[_0xe306('0x34')][_0xe306('0x39')]));_0xf5c12['attributes']=_0xf5c12[_0xe306('0x37')]['length']?_0xf5c12[_0xe306('0x37')]:_0x31e50d[_0xe306('0x32')];_0xf5c12[_0xe306('0x3d')]=qs['sort'](_0x30d5b5[_0xe306('0x34')][_0xe306('0x3e')]);_0xf5c12[_0xe306('0x3f')]=qs[_0xe306('0x36')](_[_0xe306('0x40')](_0x30d5b5[_0xe306('0x34')],_0x31e50d[_0xe306('0x36')]));if(_0x30d5b5[_0xe306('0x34')]['filter']){_0xf5c12[_0xe306('0x3f')]=_[_0xe306('0x42')](_0xf5c12[_0xe306('0x3f')],{'$or':_['map'](_0xf5c12['attributes'],function(_0x37fb64){var _0x3390b4={};_0x3390b4[_0x37fb64]={'$like':'%'+_0x30d5b5[_0xe306('0x34')][_0xe306('0x41')]+'%'};return _0x3390b4;})});}_0xf5c12=_[_0xe306('0x42')]({},_0xf5c12,_0x30d5b5['options']);return _0x5bd329[_0xe306('0x4e')](_0xf5c12);}})[_0xe306('0x28')](function(_0x5047ba){if(_0x5047ba){_0x52b5b0=_0x5047ba[_0xe306('0x3a')];if(!_0x30d5b5[_0xe306('0x34')][_0xe306('0x3b')](_0xe306('0x3c'))){_0xf5c12['limit']=qs[_0xe306('0x20')](_0x30d5b5[_0xe306('0x34')][_0xe306('0x20')]);_0xf5c12[_0xe306('0x1f')]=qs['offset'](_0x30d5b5['query'][_0xe306('0x1f')]);}return _0x5bd329[_0xe306('0x4e')](_0xf5c12);}})[_0xe306('0x28')](function(_0x1d1786){if(_0x1d1786){return _0x1d1786?{'count':_0x52b5b0,'rows':_0x1d1786}:null;}})['then'](respondWithResult(_0x3c7daa,null))[_0xe306('0x47')](handleError(_0x3c7daa,null));};exports[_0xe306('0x51')]=function(_0x5d6d1b,_0x45db0,_0x16bef9){var _0x441108={};var _0x4830ce={};var _0x18cde8;var _0x360457;return db['Dynamics365Configuration'][_0xe306('0x4f')]({'where':{'id':_0x5d6d1b[_0xe306('0x4d')]['id']}})[_0xe306('0x28')](handleEntityNotFound(_0x45db0,null))['then'](function(_0x15c50e){if(_0x15c50e){_0x18cde8=_0x15c50e;_0x4830ce[_0xe306('0x32')]=_['keys'](db[_0xe306('0x50')][_0xe306('0x2f')]);_0x4830ce['query']=_[_0xe306('0x35')](_0x5d6d1b[_0xe306('0x34')]);_0x4830ce['filters']=_[_0xe306('0x38')](_0x4830ce[_0xe306('0x32')],_0x4830ce[_0xe306('0x34')]);_0x441108[_0xe306('0x37')]=_[_0xe306('0x38')](_0x4830ce[_0xe306('0x32')],qs[_0xe306('0x39')](_0x5d6d1b[_0xe306('0x34')][_0xe306('0x39')]));_0x441108[_0xe306('0x37')]=_0x441108[_0xe306('0x37')][_0xe306('0x3a')]?_0x441108[_0xe306('0x37')]:_0x4830ce[_0xe306('0x32')];_0x441108[_0xe306('0x3d')]=qs[_0xe306('0x3e')](_0x5d6d1b[_0xe306('0x34')]['sort']);_0x441108[_0xe306('0x3f')]=qs['filters'](_['pick'](_0x5d6d1b['query'],_0x4830ce[_0xe306('0x36')]));if(_0x5d6d1b[_0xe306('0x34')][_0xe306('0x41')]){_0x441108['where']=_[_0xe306('0x42')](_0x441108[_0xe306('0x3f')],{'$or':_[_0xe306('0x33')](_0x441108[_0xe306('0x37')],function(_0x45ecbb){var _0x25e62f={};_0x25e62f[_0x45ecbb]={'$like':'%'+_0x5d6d1b[_0xe306('0x34')][_0xe306('0x41')]+'%'};return _0x25e62f;})});}_0x441108=_[_0xe306('0x42')]({},_0x441108,_0x5d6d1b['options']);return _0x18cde8['getSubjects'](_0x441108);}})[_0xe306('0x28')](function(_0x2e45bf){if(_0x2e45bf){_0x360457=_0x2e45bf[_0xe306('0x3a')];if(!_0x5d6d1b[_0xe306('0x34')][_0xe306('0x3b')](_0xe306('0x3c'))){_0x441108[_0xe306('0x20')]=qs[_0xe306('0x20')](_0x5d6d1b[_0xe306('0x34')]['limit']);_0x441108[_0xe306('0x1f')]=qs['offset'](_0x5d6d1b[_0xe306('0x34')][_0xe306('0x1f')]);}return _0x18cde8[_0xe306('0x51')](_0x441108);}})[_0xe306('0x28')](function(_0x58add7){if(_0x58add7){return _0x58add7?{'count':_0x360457,'rows':_0x58add7}:null;}})['then'](respondWithResult(_0x45db0,null))[_0xe306('0x47')](handleError(_0x45db0,null));};exports['getDescriptions']=function(_0x5c4983,_0x504689,_0x4baf5c){var _0x436c02={};var _0x39b347={};var _0x4a76c3;var _0x59627a;return db['Dynamics365Configuration'][_0xe306('0x4f')]({'where':{'id':_0x5c4983['params']['id']}})[_0xe306('0x28')](handleEntityNotFound(_0x504689,null))[_0xe306('0x28')](function(_0x26a67b){if(_0x26a67b){_0x4a76c3=_0x26a67b;_0x39b347[_0xe306('0x32')]=_[_0xe306('0x35')](db['Dynamics365Field'][_0xe306('0x2f')]);_0x39b347[_0xe306('0x34')]=_[_0xe306('0x35')](_0x5c4983[_0xe306('0x34')]);_0x39b347[_0xe306('0x36')]=_[_0xe306('0x38')](_0x39b347[_0xe306('0x32')],_0x39b347[_0xe306('0x34')]);_0x436c02[_0xe306('0x37')]=_[_0xe306('0x38')](_0x39b347[_0xe306('0x32')],qs['fields'](_0x5c4983[_0xe306('0x34')]['fields']));_0x436c02['attributes']=_0x436c02[_0xe306('0x37')][_0xe306('0x3a')]?_0x436c02[_0xe306('0x37')]:_0x39b347['model'];_0x436c02[_0xe306('0x3d')]=qs[_0xe306('0x3e')](_0x5c4983['query'][_0xe306('0x3e')]);_0x436c02['where']=qs[_0xe306('0x36')](_[_0xe306('0x40')](_0x5c4983[_0xe306('0x34')],_0x39b347['filters']));if(_0x5c4983[_0xe306('0x34')][_0xe306('0x41')]){_0x436c02[_0xe306('0x3f')]=_[_0xe306('0x42')](_0x436c02['where'],{'$or':_[_0xe306('0x33')](_0x436c02['attributes'],function(_0x2c0343){var _0x55d607={};_0x55d607[_0x2c0343]={'$like':'%'+_0x5c4983[_0xe306('0x34')]['filter']+'%'};return _0x55d607;})});}_0x436c02=_[_0xe306('0x42')]({},_0x436c02,_0x5c4983[_0xe306('0x49')]);return _0x4a76c3['getDescriptions'](_0x436c02);}})[_0xe306('0x28')](function(_0x1a74bb){if(_0x1a74bb){_0x59627a=_0x1a74bb[_0xe306('0x3a')];if(!_0x5c4983[_0xe306('0x34')][_0xe306('0x3b')](_0xe306('0x3c'))){_0x436c02['limit']=qs[_0xe306('0x20')](_0x5c4983[_0xe306('0x34')][_0xe306('0x20')]);_0x436c02[_0xe306('0x1f')]=qs[_0xe306('0x1f')](_0x5c4983[_0xe306('0x34')][_0xe306('0x1f')]);}return _0x4a76c3[_0xe306('0x52')](_0x436c02);}})[_0xe306('0x28')](function(_0x52fd4c){if(_0x52fd4c){return _0x52fd4c?{'count':_0x59627a,'rows':_0x52fd4c}:null;}})[_0xe306('0x28')](respondWithResult(_0x504689,null))[_0xe306('0x47')](handleError(_0x504689,null));};
\ No newline at end of file
+var _0x70e1=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','name','map','Dynamics365Configuration','fieldName','query','keys','filters','intersection','model','attributes','fields','nolimit','limit','order','sort','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','getFields','Dynamics365Field','pick','hasOwnProperty','getSubjects','findOne','getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api'];(function(_0x99f137,_0x27b9b9){var _0x285126=function(_0x4dfc9){while(--_0x4dfc9){_0x99f137['push'](_0x99f137['shift']());}};_0x285126(++_0x27b9b9);}(_0x70e1,0x1bb));var _0x170e=function(_0x470b24,_0x58a01e){_0x470b24=_0x470b24-0x0;var _0xde9b3d=_0x70e1[_0x470b24];return _0xde9b3d;};'use strict';var emlformat=require(_0x170e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x170e('0x1'));var rp=require(_0x170e('0x2'));var moment=require(_0x170e('0x3'));var BPromise=require(_0x170e('0x4'));var Mustache=require('mustache');var util=require(_0x170e('0x5'));var path=require('path');var sox=require(_0x170e('0x6'));var csv=require(_0x170e('0x7'));var ejs=require(_0x170e('0x8'));var fs=require('fs');var fs_extra=require(_0x170e('0x9'));var _=require(_0x170e('0xa'));var squel=require('squel');var crypto=require(_0x170e('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x170e('0x7'));var querystring=require(_0x170e('0xc'));var Papa=require(_0x170e('0xd'));var Redis=require(_0x170e('0xe'));var authService=require(_0x170e('0xf'));var qs=require(_0x170e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x170e('0x11'));var logger=require('../../config/logger')(_0x170e('0x12'));var utils=require(_0x170e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x170e('0x14'));var db=require(_0x170e('0x15'))['db'];function respondWithStatusCode(_0x1b2ea1,_0x526602){_0x526602=_0x526602||0xcc;return function(_0x59a8c7){if(_0x59a8c7){return _0x1b2ea1[_0x170e('0x16')](_0x526602);}return _0x1b2ea1[_0x170e('0x17')](_0x526602)[_0x170e('0x18')]();};}function respondWithResult(_0x4532a8,_0x2ef41c){_0x2ef41c=_0x2ef41c||0xc8;return function(_0x14b66e){if(_0x14b66e){return _0x4532a8[_0x170e('0x17')](_0x2ef41c)[_0x170e('0x19')](_0x14b66e);}};}function respondWithFilteredResult(_0x3ac0ce,_0x39d0cf){return function(_0xeef332){if(_0xeef332){var _0x20be48=typeof _0x39d0cf['offset']===_0x170e('0x1a')&&typeof _0x39d0cf['limit']===_0x170e('0x1a');var _0x538ef0=_0xeef332[_0x170e('0x1b')];var _0x4e3498=_0x20be48?0x0:_0x39d0cf[_0x170e('0x1c')];var _0x3b6ac6=_0x20be48?_0xeef332[_0x170e('0x1b')]:_0x39d0cf[_0x170e('0x1c')]+_0x39d0cf['limit'];var _0x28af4f;if(_0x3b6ac6>=_0x538ef0){_0x3b6ac6=_0x538ef0;_0x28af4f=0xc8;}else{_0x28af4f=0xce;}_0x3ac0ce[_0x170e('0x17')](_0x28af4f);return _0x3ac0ce[_0x170e('0x1d')](_0x170e('0x1e'),_0x4e3498+'-'+_0x3b6ac6+'/'+_0x538ef0)[_0x170e('0x19')](_0xeef332);}return null;};}function patchUpdates(_0x506e52){return function(_0x38ce47){try{jsonpatch[_0x170e('0x1f')](_0x38ce47,_0x506e52,!![]);}catch(_0x19957a){return BPromise[_0x170e('0x20')](_0x19957a);}return _0x38ce47[_0x170e('0x21')]();};}function saveUpdates(_0x128853,_0x57f75a){return function(_0x577c8f){if(_0x577c8f){return _0x577c8f[_0x170e('0x22')](_0x128853)[_0x170e('0x23')](function(_0x34fcc6){return _0x34fcc6;});}return null;};}function removeEntity(_0x38230e,_0x4ac6d6){return function(_0xd98296){if(_0xd98296){return _0xd98296[_0x170e('0x24')]()[_0x170e('0x23')](function(){_0x38230e[_0x170e('0x17')](0xcc)[_0x170e('0x18')]();});}};}function handleEntityNotFound(_0x22e7a7,_0x50f8f9){return function(_0x17a587){if(!_0x17a587){_0x22e7a7[_0x170e('0x16')](0x194);}return _0x17a587;};}function handleError(_0x50388d,_0x4c1126){_0x4c1126=_0x4c1126||0x1f4;return function(_0x4dd6f8){logger['error'](_0x4dd6f8['stack']);if(_0x4dd6f8['name']){delete _0x4dd6f8[_0x170e('0x25')];}_0x50388d['status'](_0x4c1126)['send'](_0x4dd6f8);};}exports['index']=function(_0x54635e,_0x562ccf){var _0x3e000c={},_0x4ab5ca={},_0x29deea={'count':0x0,'rows':[]};var _0x5c874c=_[_0x170e('0x26')](db[_0x170e('0x27')]['rawAttributes'],function(_0x12804f){return{'name':_0x12804f[_0x170e('0x28')],'type':_0x12804f['type']['key']};});_0x4ab5ca['model']=_[_0x170e('0x26')](_0x5c874c,_0x170e('0x25'));_0x4ab5ca[_0x170e('0x29')]=_[_0x170e('0x2a')](_0x54635e[_0x170e('0x29')]);_0x4ab5ca[_0x170e('0x2b')]=_[_0x170e('0x2c')](_0x4ab5ca[_0x170e('0x2d')],_0x4ab5ca[_0x170e('0x29')]);_0x3e000c[_0x170e('0x2e')]=_['intersection'](_0x4ab5ca[_0x170e('0x2d')],qs[_0x170e('0x2f')](_0x54635e[_0x170e('0x29')][_0x170e('0x2f')]));_0x3e000c[_0x170e('0x2e')]=_0x3e000c[_0x170e('0x2e')]['length']?_0x3e000c['attributes']:_0x4ab5ca[_0x170e('0x2d')];if(!_0x54635e['query']['hasOwnProperty'](_0x170e('0x30'))){_0x3e000c[_0x170e('0x31')]=qs[_0x170e('0x31')](_0x54635e['query'][_0x170e('0x31')]);_0x3e000c['offset']=qs[_0x170e('0x1c')](_0x54635e[_0x170e('0x29')][_0x170e('0x1c')]);}_0x3e000c[_0x170e('0x32')]=qs[_0x170e('0x33')](_0x54635e[_0x170e('0x29')][_0x170e('0x33')]);_0x3e000c['where']=qs[_0x170e('0x2b')](_['pick'](_0x54635e[_0x170e('0x29')],_0x4ab5ca[_0x170e('0x2b')]),_0x5c874c);if(_0x54635e[_0x170e('0x29')][_0x170e('0x34')]){_0x3e000c[_0x170e('0x35')]=_['merge'](_0x3e000c[_0x170e('0x35')],{'$or':_[_0x170e('0x26')](_0x5c874c,function(_0x552630){if(_0x552630[_0x170e('0x36')]!==_0x170e('0x37')){var _0x12b845={};_0x12b845[_0x552630[_0x170e('0x25')]]={'$like':'%'+_0x54635e['query']['filter']+'%'};return _0x12b845;}})});}_0x3e000c=_[_0x170e('0x38')]({},_0x3e000c,_0x54635e[_0x170e('0x39')]);var _0x1791b3={'where':_0x3e000c[_0x170e('0x35')]};return db[_0x170e('0x27')][_0x170e('0x1b')](_0x1791b3)[_0x170e('0x23')](function(_0x5a114a){_0x29deea['count']=_0x5a114a;if(_0x54635e[_0x170e('0x29')][_0x170e('0x3a')]){_0x3e000c[_0x170e('0x3b')]=[{'all':!![]}];}return db[_0x170e('0x27')][_0x170e('0x3c')](_0x3e000c);})[_0x170e('0x23')](function(_0x1c13cc){_0x29deea[_0x170e('0x3d')]=_0x1c13cc;return _0x29deea;})['then'](respondWithFilteredResult(_0x562ccf,_0x3e000c))[_0x170e('0x3e')](handleError(_0x562ccf,null));};exports[_0x170e('0x3f')]=function(_0x269fb0,_0x170696){var _0x555ee0={'raw':![],'where':{'id':_0x269fb0[_0x170e('0x40')]['id']}},_0x17b348={};_0x17b348[_0x170e('0x2d')]=_[_0x170e('0x2a')](db['Dynamics365Configuration'][_0x170e('0x41')]);_0x17b348[_0x170e('0x29')]=_[_0x170e('0x2a')](_0x269fb0[_0x170e('0x29')]);_0x17b348[_0x170e('0x2b')]=_['intersection'](_0x17b348['model'],_0x17b348[_0x170e('0x29')]);_0x555ee0[_0x170e('0x2e')]=_[_0x170e('0x2c')](_0x17b348[_0x170e('0x2d')],qs[_0x170e('0x2f')](_0x269fb0['query'][_0x170e('0x2f')]));_0x555ee0['attributes']=_0x555ee0[_0x170e('0x2e')][_0x170e('0x42')]?_0x555ee0[_0x170e('0x2e')]:_0x17b348['model'];if(_0x269fb0[_0x170e('0x29')][_0x170e('0x3a')]){_0x555ee0[_0x170e('0x3b')]=[{'all':!![]}];}_0x555ee0=_['merge']({},_0x555ee0,_0x269fb0[_0x170e('0x39')]);return db[_0x170e('0x27')][_0x170e('0x43')](_0x555ee0)['then'](handleEntityNotFound(_0x170696,null))[_0x170e('0x23')](respondWithResult(_0x170696,null))['catch'](handleError(_0x170696,null));};exports[_0x170e('0x44')]=function(_0x2c62be,_0x52e8a5){return db[_0x170e('0x27')]['create'](_0x2c62be['body'],{})[_0x170e('0x23')](respondWithResult(_0x52e8a5,0xc9))[_0x170e('0x3e')](handleError(_0x52e8a5,null));};exports[_0x170e('0x22')]=function(_0x2485b1,_0x5c6b2e){if(_0x2485b1[_0x170e('0x45')]['id']){delete _0x2485b1['body']['id'];}return db['Dynamics365Configuration']['find']({'where':{'id':_0x2485b1['params']['id']}})['then'](handleEntityNotFound(_0x5c6b2e,null))[_0x170e('0x23')](saveUpdates(_0x2485b1[_0x170e('0x45')],null))[_0x170e('0x23')](respondWithResult(_0x5c6b2e,null))[_0x170e('0x3e')](handleError(_0x5c6b2e,null));};exports[_0x170e('0x24')]=function(_0x5dda0e,_0x3fdc25){return db[_0x170e('0x27')]['find']({'where':{'id':_0x5dda0e[_0x170e('0x40')]['id']}})[_0x170e('0x23')](handleEntityNotFound(_0x3fdc25,null))['then'](removeEntity(_0x3fdc25,null))['catch'](handleError(_0x3fdc25,null));};exports[_0x170e('0x46')]=function(_0x57ed6a,_0x4b119f,_0x510f5d){var _0xaf13c4={};var _0xe47645={};var _0x4e4161;var _0x54ba8a;return db[_0x170e('0x27')]['findOne']({'where':{'id':_0x57ed6a[_0x170e('0x40')]['id']}})[_0x170e('0x23')](handleEntityNotFound(_0x4b119f,null))['then'](function(_0x304081){if(_0x304081){_0x4e4161=_0x304081;_0xe47645['model']=_[_0x170e('0x2a')](db[_0x170e('0x47')]['rawAttributes']);_0xe47645['query']=_['keys'](_0x57ed6a['query']);_0xe47645[_0x170e('0x2b')]=_[_0x170e('0x2c')](_0xe47645[_0x170e('0x2d')],_0xe47645[_0x170e('0x29')]);_0xaf13c4[_0x170e('0x2e')]=_[_0x170e('0x2c')](_0xe47645[_0x170e('0x2d')],qs[_0x170e('0x2f')](_0x57ed6a[_0x170e('0x29')][_0x170e('0x2f')]));_0xaf13c4[_0x170e('0x2e')]=_0xaf13c4[_0x170e('0x2e')][_0x170e('0x42')]?_0xaf13c4[_0x170e('0x2e')]:_0xe47645[_0x170e('0x2d')];_0xaf13c4[_0x170e('0x32')]=qs[_0x170e('0x33')](_0x57ed6a['query']['sort']);_0xaf13c4[_0x170e('0x35')]=qs[_0x170e('0x2b')](_[_0x170e('0x48')](_0x57ed6a['query'],_0xe47645[_0x170e('0x2b')]));if(_0x57ed6a[_0x170e('0x29')][_0x170e('0x34')]){_0xaf13c4['where']=_[_0x170e('0x38')](_0xaf13c4['where'],{'$or':_[_0x170e('0x26')](_0xaf13c4['attributes'],function(_0x5d87f1){var _0x5ad633={};_0x5ad633[_0x5d87f1]={'$like':'%'+_0x57ed6a[_0x170e('0x29')][_0x170e('0x34')]+'%'};return _0x5ad633;})});}_0xaf13c4=_[_0x170e('0x38')]({},_0xaf13c4,_0x57ed6a[_0x170e('0x39')]);return _0x4e4161['getFields'](_0xaf13c4);}})[_0x170e('0x23')](function(_0x39ec11){if(_0x39ec11){_0x54ba8a=_0x39ec11['length'];if(!_0x57ed6a[_0x170e('0x29')][_0x170e('0x49')]('nolimit')){_0xaf13c4[_0x170e('0x31')]=qs['limit'](_0x57ed6a[_0x170e('0x29')][_0x170e('0x31')]);_0xaf13c4['offset']=qs[_0x170e('0x1c')](_0x57ed6a[_0x170e('0x29')]['offset']);}return _0x4e4161['getFields'](_0xaf13c4);}})['then'](function(_0x59e4ac){if(_0x59e4ac){return _0x59e4ac?{'count':_0x54ba8a,'rows':_0x59e4ac}:null;}})[_0x170e('0x23')](respondWithResult(_0x4b119f,null))[_0x170e('0x3e')](handleError(_0x4b119f,null));};exports[_0x170e('0x4a')]=function(_0x13754b,_0x1ded68,_0x3e4ceb){var _0x58afd0={};var _0x3b7a71={};var _0x224660;var _0x4746b2;return db[_0x170e('0x27')][_0x170e('0x4b')]({'where':{'id':_0x13754b[_0x170e('0x40')]['id']}})[_0x170e('0x23')](handleEntityNotFound(_0x1ded68,null))[_0x170e('0x23')](function(_0x7ca9bf){if(_0x7ca9bf){_0x224660=_0x7ca9bf;_0x3b7a71[_0x170e('0x2d')]=_[_0x170e('0x2a')](db[_0x170e('0x47')]['rawAttributes']);_0x3b7a71[_0x170e('0x29')]=_[_0x170e('0x2a')](_0x13754b[_0x170e('0x29')]);_0x3b7a71['filters']=_[_0x170e('0x2c')](_0x3b7a71['model'],_0x3b7a71['query']);_0x58afd0[_0x170e('0x2e')]=_[_0x170e('0x2c')](_0x3b7a71['model'],qs['fields'](_0x13754b[_0x170e('0x29')][_0x170e('0x2f')]));_0x58afd0[_0x170e('0x2e')]=_0x58afd0['attributes']['length']?_0x58afd0['attributes']:_0x3b7a71[_0x170e('0x2d')];_0x58afd0['order']=qs[_0x170e('0x33')](_0x13754b['query']['sort']);_0x58afd0[_0x170e('0x35')]=qs[_0x170e('0x2b')](_[_0x170e('0x48')](_0x13754b[_0x170e('0x29')],_0x3b7a71[_0x170e('0x2b')]));if(_0x13754b[_0x170e('0x29')][_0x170e('0x34')]){_0x58afd0[_0x170e('0x35')]=_['merge'](_0x58afd0['where'],{'$or':_['map'](_0x58afd0[_0x170e('0x2e')],function(_0x1773d4){var _0x450d5b={};_0x450d5b[_0x1773d4]={'$like':'%'+_0x13754b['query']['filter']+'%'};return _0x450d5b;})});}_0x58afd0=_['merge']({},_0x58afd0,_0x13754b[_0x170e('0x39')]);return _0x224660[_0x170e('0x4a')](_0x58afd0);}})[_0x170e('0x23')](function(_0x50dfd3){if(_0x50dfd3){_0x4746b2=_0x50dfd3['length'];if(!_0x13754b[_0x170e('0x29')][_0x170e('0x49')]('nolimit')){_0x58afd0[_0x170e('0x31')]=qs[_0x170e('0x31')](_0x13754b[_0x170e('0x29')][_0x170e('0x31')]);_0x58afd0[_0x170e('0x1c')]=qs[_0x170e('0x1c')](_0x13754b[_0x170e('0x29')][_0x170e('0x1c')]);}return _0x224660[_0x170e('0x4a')](_0x58afd0);}})[_0x170e('0x23')](function(_0x580527){if(_0x580527){return _0x580527?{'count':_0x4746b2,'rows':_0x580527}:null;}})[_0x170e('0x23')](respondWithResult(_0x1ded68,null))[_0x170e('0x3e')](handleError(_0x1ded68,null));};exports[_0x170e('0x4c')]=function(_0x12a457,_0x1a86d1,_0x45965c){var _0x31dd1c={};var _0x4e324a={};var _0x3a6934;var _0x53f85d;return db[_0x170e('0x27')][_0x170e('0x4b')]({'where':{'id':_0x12a457[_0x170e('0x40')]['id']}})[_0x170e('0x23')](handleEntityNotFound(_0x1a86d1,null))['then'](function(_0x88ec76){if(_0x88ec76){_0x3a6934=_0x88ec76;_0x4e324a[_0x170e('0x2d')]=_['keys'](db['Dynamics365Field'][_0x170e('0x41')]);_0x4e324a[_0x170e('0x29')]=_[_0x170e('0x2a')](_0x12a457[_0x170e('0x29')]);_0x4e324a[_0x170e('0x2b')]=_['intersection'](_0x4e324a['model'],_0x4e324a[_0x170e('0x29')]);_0x31dd1c['attributes']=_[_0x170e('0x2c')](_0x4e324a[_0x170e('0x2d')],qs[_0x170e('0x2f')](_0x12a457['query'][_0x170e('0x2f')]));_0x31dd1c[_0x170e('0x2e')]=_0x31dd1c[_0x170e('0x2e')]['length']?_0x31dd1c[_0x170e('0x2e')]:_0x4e324a[_0x170e('0x2d')];_0x31dd1c['order']=qs[_0x170e('0x33')](_0x12a457[_0x170e('0x29')]['sort']);_0x31dd1c[_0x170e('0x35')]=qs[_0x170e('0x2b')](_['pick'](_0x12a457[_0x170e('0x29')],_0x4e324a[_0x170e('0x2b')]));if(_0x12a457['query'][_0x170e('0x34')]){_0x31dd1c[_0x170e('0x35')]=_[_0x170e('0x38')](_0x31dd1c['where'],{'$or':_[_0x170e('0x26')](_0x31dd1c[_0x170e('0x2e')],function(_0x313149){var _0x1537bc={};_0x1537bc[_0x313149]={'$like':'%'+_0x12a457[_0x170e('0x29')][_0x170e('0x34')]+'%'};return _0x1537bc;})});}_0x31dd1c=_[_0x170e('0x38')]({},_0x31dd1c,_0x12a457[_0x170e('0x39')]);return _0x3a6934[_0x170e('0x4c')](_0x31dd1c);}})[_0x170e('0x23')](function(_0xf6c7c4){if(_0xf6c7c4){_0x53f85d=_0xf6c7c4['length'];if(!_0x12a457['query']['hasOwnProperty'](_0x170e('0x30'))){_0x31dd1c[_0x170e('0x31')]=qs[_0x170e('0x31')](_0x12a457[_0x170e('0x29')][_0x170e('0x31')]);_0x31dd1c['offset']=qs[_0x170e('0x1c')](_0x12a457[_0x170e('0x29')][_0x170e('0x1c')]);}return _0x3a6934[_0x170e('0x4c')](_0x31dd1c);}})[_0x170e('0x23')](function(_0x32b98b){if(_0x32b98b){return _0x32b98b?{'count':_0x53f85d,'rows':_0x32b98b}:null;}})['then'](respondWithResult(_0x1a86d1,null))[_0x170e('0x3e')](handleError(_0x1a86d1,null));};
\ No newline at end of file
index 74447b6..598e1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f62=['api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util'];(function(_0x377a35,_0x7fab83){var _0xb7c978=function(_0xd4703){while(--_0xd4703){_0x377a35['push'](_0x377a35['shift']());}};_0xb7c978(++_0x7fab83);}(_0x9f62,0x154));var _0x29f6=function(_0x2c5686,_0x3b2e57){_0x2c5686=_0x2c5686-0x0;var _0x7d7731=_0x9f62[_0x2c5686];return _0x7d7731;};'use strict';var _=require('lodash');var util=require(_0x29f6('0x0'));var logger=require('../../config/logger')(_0x29f6('0x1'));var moment=require(_0x29f6('0x2'));var BPromise=require(_0x29f6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var attributes=require(_0x29f6('0x6'));module[_0x29f6('0x7')]=function(_0x595034,_0xf66137){return _0x595034[_0x29f6('0x8')](_0x29f6('0x9'),attributes,{'tableName':_0x29f6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb821=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','bluebird'];(function(_0x515c92,_0x2686bd){var _0x2b2f75=function(_0x563d48){while(--_0x563d48){_0x515c92['push'](_0x515c92['shift']());}};_0x2b2f75(++_0x2686bd);}(_0xb821,0xa7));var _0x1b82=function(_0x580d6a,_0x4f9289){_0x580d6a=_0x580d6a-0x0;var _0x5d036d=_0xb821[_0x580d6a];return _0x5d036d;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var logger=require(_0x1b82('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1b82('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1b82('0x3'));var config=require(_0x1b82('0x4'));var attributes=require(_0x1b82('0x5'));module[_0x1b82('0x6')]=function(_0x597ca7,_0x3e27c4){return _0x597ca7[_0x1b82('0x7')](_0x1b82('0x8'),attributes,{'tableName':_0x1b82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9128fa4..ef5cb48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ac=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../config/utils'];(function(_0x3cbf93,_0x35f10c){var _0x387bad=function(_0x3c3b15){while(--_0x3c3b15){_0x3cbf93['push'](_0x3cbf93['shift']());}};_0x387bad(++_0x35f10c);}(_0x33ac,0x16b));var _0xc33a=function(_0x4883ca,_0x466517){_0x4883ca=_0x4883ca-0x0;var _0x3b718c=_0x33ac[_0x4883ca];return _0x3b718c;};'use strict';var _=require(_0xc33a('0x0'));var util=require(_0xc33a('0x1'));var moment=require(_0xc33a('0x2'));var BPromise=require('bluebird');var rs=require(_0xc33a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc33a('0x4'));var logger=require(_0xc33a('0x5'))(_0xc33a('0x6'));var config=require(_0xc33a('0x7'));var jayson=require(_0xc33a('0x8'));var client=jayson[_0xc33a('0x9')][_0xc33a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45aa1e,_0x2d00ad,_0x299d6f){return new BPromise(function(_0x1141d2,_0x44da26){return client[_0xc33a('0xb')](_0x45aa1e,_0x299d6f)[_0xc33a('0xc')](function(_0x33659b){logger[_0xc33a('0xd')](_0xc33a('0xe'),_0x2d00ad,'request\x20sent');logger[_0xc33a('0xf')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x2d00ad,_0xc33a('0x10'),JSON[_0xc33a('0x11')](_0x33659b));if(_0x33659b[_0xc33a('0x12')]){if(_0x33659b['error'][_0xc33a('0x13')]===0x1f4){logger[_0xc33a('0x12')](_0xc33a('0xe'),_0x2d00ad,_0x33659b[_0xc33a('0x12')][_0xc33a('0x14')]);return _0x44da26(_0x33659b[_0xc33a('0x12')][_0xc33a('0x14')]);}logger['error'](_0xc33a('0xe'),_0x2d00ad,_0x33659b['error']['message']);return _0x1141d2(_0x33659b[_0xc33a('0x12')][_0xc33a('0x14')]);}else{logger['info'](_0xc33a('0xe'),_0x2d00ad,_0xc33a('0x10'));_0x1141d2(_0x33659b[_0xc33a('0x15')]['message']);}})[_0xc33a('0x16')](function(_0x304db2){logger[_0xc33a('0x12')](_0xc33a('0xe'),_0x2d00ad,_0x304db2);_0x44da26(_0x304db2);});});}
\ No newline at end of file
+var _0x7b75=['ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird'];(function(_0x23b85e,_0x39b209){var _0x329756=function(_0x3418e1){while(--_0x3418e1){_0x23b85e['push'](_0x23b85e['shift']());}};_0x329756(++_0x39b209);}(_0x7b75,0x153));var _0x57b7=function(_0xcf8564,_0x2a5c8c){_0xcf8564=_0xcf8564-0x0;var _0x18c5e2=_0x7b75[_0xcf8564];return _0x18c5e2;};'use strict';var _=require(_0x57b7('0x0'));var util=require('util');var moment=require(_0x57b7('0x1'));var BPromise=require(_0x57b7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x57b7('0x3'));var db=require(_0x57b7('0x4'))['db'];var utils=require(_0x57b7('0x5'));var logger=require(_0x57b7('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x57b7('0x7'));var client=jayson[_0x57b7('0x8')][_0x57b7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2515d1,_0x2708fc,_0x3e89c3){return new BPromise(function(_0x211b1b,_0x14c352){return client['request'](_0x2515d1,_0x3e89c3)['then'](function(_0x275e78){logger[_0x57b7('0xa')](_0x57b7('0xb'),_0x2708fc,_0x57b7('0xc'));logger[_0x57b7('0xd')](_0x57b7('0xe'),_0x2708fc,_0x57b7('0xc'),JSON['stringify'](_0x275e78));if(_0x275e78[_0x57b7('0xf')]){if(_0x275e78['error']['code']===0x1f4){logger[_0x57b7('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2708fc,_0x275e78[_0x57b7('0xf')]['message']);return _0x14c352(_0x275e78[_0x57b7('0xf')][_0x57b7('0x10')]);}logger[_0x57b7('0xf')](_0x57b7('0xb'),_0x2708fc,_0x275e78[_0x57b7('0xf')]['message']);return _0x211b1b(_0x275e78['error'][_0x57b7('0x10')]);}else{logger[_0x57b7('0xa')](_0x57b7('0xb'),_0x2708fc,_0x57b7('0xc'));_0x211b1b(_0x275e78[_0x57b7('0x11')][_0x57b7('0x10')]);}})[_0x57b7('0x12')](function(_0x2270d2){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x2708fc,_0x2270d2);_0x14c352(_0x2270d2);});});}
\ No newline at end of file
index b712eaa..8f42edd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd0e=['exports','multer','path','connect-timeout','express','Router','../../components/auth/service','./intDynamics365Field.controller','get','isAuthenticated','index','show','post','create','put','/:id'];(function(_0x2714c1,_0x5d134f){var _0x2d1530=function(_0x4b8290){while(--_0x4b8290){_0x2714c1['push'](_0x2714c1['shift']());}};_0x2d1530(++_0x5d134f);}(_0xcd0e,0x141));var _0xecd0=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xcd0e[_0x5037ab];return _0x512adb;};'use strict';var multer=require(_0xecd0('0x0'));var util=require('util');var path=require(_0xecd0('0x1'));var timeout=require(_0xecd0('0x2'));var express=require(_0xecd0('0x3'));var router=express[_0xecd0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xecd0('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xecd0('0x6'));router[_0xecd0('0x7')]('/',auth[_0xecd0('0x8')](),controller[_0xecd0('0x9')]);router[_0xecd0('0x7')]('/:id',auth[_0xecd0('0x8')](),controller[_0xecd0('0xa')]);router[_0xecd0('0xb')]('/',auth[_0xecd0('0x8')](),controller[_0xecd0('0xc')]);router[_0xecd0('0xd')](_0xecd0('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xecd0('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0xecd0('0xf')]=router;
\ No newline at end of file
+var _0xd8f9=['create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post'];(function(_0x4f8722,_0x47e4ae){var _0x1430eb=function(_0x2c8812){while(--_0x2c8812){_0x4f8722['push'](_0x4f8722['shift']());}};_0x1430eb(++_0x47e4ae);}(_0xd8f9,0x96));var _0x9d8f=function(_0x4396df,_0x1de4aa){_0x4396df=_0x4396df-0x0;var _0x1bed0d=_0xd8f9[_0x4396df];return _0x1bed0d;};'use strict';var multer=require(_0x9d8f('0x0'));var util=require(_0x9d8f('0x1'));var path=require(_0x9d8f('0x2'));var timeout=require('connect-timeout');var express=require(_0x9d8f('0x3'));var router=express[_0x9d8f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9d8f('0x5'));var config=require(_0x9d8f('0x6'));var controller=require('./intDynamics365Field.controller');router[_0x9d8f('0x7')]('/',auth[_0x9d8f('0x8')](),controller[_0x9d8f('0x9')]);router['get'](_0x9d8f('0xa'),auth[_0x9d8f('0x8')](),controller['show']);router[_0x9d8f('0xb')]('/',auth[_0x9d8f('0x8')](),controller[_0x9d8f('0xc')]);router[_0x9d8f('0xd')](_0x9d8f('0xa'),auth['isAuthenticated'](),controller[_0x9d8f('0xe')]);router[_0x9d8f('0xf')]('/:id',auth[_0x9d8f('0x8')](),controller[_0x9d8f('0x10')]);module[_0x9d8f('0x11')]=router;
\ No newline at end of file
index 83e899d..3803eb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x559e=['variable','customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x559e,0xcb));var _0xe559=function(_0xb98525,_0x308961){_0xb98525=_0xb98525-0x0;var _0x5e577b=_0x559e[_0xb98525];return _0x5e577b;};'use strict';var Sequelize=require(_0xe559('0x0'));module[_0xe559('0x1')]={'type':{'type':Sequelize[_0xe559('0x2')](_0xe559('0x3'),_0xe559('0x4'),_0xe559('0x5'),'keyValue',_0xe559('0x6')),'defaultValue':_0xe559('0x3')},'content':{'type':Sequelize[_0xe559('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe559('0x2')](_0xe559('0x3'),'variable',_0xe559('0x5'))},'keyContent':{'type':Sequelize[_0xe559('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xe559('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe559('0x7')]}};
\ No newline at end of file
+var _0xd439=['STRING','string','BOOLEAN','exports','ENUM','variable','customVariable','keyValue'];(function(_0x5d1cf7,_0x201b68){var _0x436f70=function(_0x11410a){while(--_0x11410a){_0x5d1cf7['push'](_0x5d1cf7['shift']());}};_0x436f70(++_0x201b68);}(_0xd439,0xf3));var _0x9d43=function(_0x17cc8e,_0x3a9a7f){_0x17cc8e=_0x17cc8e-0x0;var _0x37d8df=_0xd439[_0x17cc8e];return _0x37d8df;};'use strict';var Sequelize=require('sequelize');module[_0x9d43('0x0')]={'type':{'type':Sequelize[_0x9d43('0x1')]('string',_0x9d43('0x2'),_0x9d43('0x3'),_0x9d43('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x9d43('0x5')]},'key':{'type':Sequelize[_0x9d43('0x5')]},'keyType':{'type':Sequelize[_0x9d43('0x1')](_0x9d43('0x6'),'variable',_0x9d43('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x9d43('0x5')]},'customField':{'type':Sequelize[_0x9d43('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9d43('0x5')]}};
\ No newline at end of file
index 754c06a..153df61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e68=['length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','limit','undefined','count','set','json','apply','save','update','then','destroy','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','key','query','keys','filters','attributes','intersection','fields'];(function(_0x1e1603,_0x1e97b0){var _0x59c4b6=function(_0x5f43a3){while(--_0x5f43a3){_0x1e1603['push'](_0x1e1603['shift']());}};_0x59c4b6(++_0x1e97b0);}(_0x1e68,0x14e));var _0x81e6=function(_0x303ac7,_0xbc2841){_0x303ac7=_0x303ac7-0x0;var _0x47d0be=_0x1e68[_0x303ac7];return _0x47d0be;};'use strict';var emlformat=require(_0x81e6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x81e6('0x1'));var jsonpatch=require(_0x81e6('0x2'));var rp=require(_0x81e6('0x3'));var moment=require(_0x81e6('0x4'));var BPromise=require(_0x81e6('0x5'));var Mustache=require(_0x81e6('0x6'));var util=require(_0x81e6('0x7'));var path=require(_0x81e6('0x8'));var sox=require(_0x81e6('0x9'));var csv=require('to-csv');var ejs=require(_0x81e6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x81e6('0xb'));var squel=require(_0x81e6('0xc'));var crypto=require('crypto');var jsforce=require(_0x81e6('0xd'));var deskjs=require(_0x81e6('0xe'));var toCsv=require(_0x81e6('0xf'));var querystring=require(_0x81e6('0x10'));var Papa=require(_0x81e6('0x11'));var Redis=require(_0x81e6('0x12'));var authService=require(_0x81e6('0x13'));var qs=require(_0x81e6('0x14'));var as=require(_0x81e6('0x15'));var hardwareService=require(_0x81e6('0x16'));var logger=require(_0x81e6('0x17'))(_0x81e6('0x18'));var utils=require(_0x81e6('0x19'));var config=require(_0x81e6('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x81e6('0x1b'))['db'];function respondWithStatusCode(_0x40e92b,_0x442781){_0x442781=_0x442781||0xcc;return function(_0xec8fc0){if(_0xec8fc0){return _0x40e92b['sendStatus'](_0x442781);}return _0x40e92b[_0x81e6('0x1c')](_0x442781)[_0x81e6('0x1d')]();};}function respondWithResult(_0x4b4790,_0x5ebbd7){_0x5ebbd7=_0x5ebbd7||0xc8;return function(_0x5c6eb7){if(_0x5c6eb7){return _0x4b4790[_0x81e6('0x1c')](_0x5ebbd7)['json'](_0x5c6eb7);}};}function respondWithFilteredResult(_0x3f405c,_0x3934c8){return function(_0xb0de42){if(_0xb0de42){var _0x502308=typeof _0x3934c8[_0x81e6('0x1e')]==='undefined'&&typeof _0x3934c8[_0x81e6('0x1f')]===_0x81e6('0x20');var _0x1d1b8b=_0xb0de42[_0x81e6('0x21')];var _0xbec79c=_0x502308?0x0:_0x3934c8[_0x81e6('0x1e')];var _0x498710=_0x502308?_0xb0de42[_0x81e6('0x21')]:_0x3934c8['offset']+_0x3934c8[_0x81e6('0x1f')];var _0x23dee9;if(_0x498710>=_0x1d1b8b){_0x498710=_0x1d1b8b;_0x23dee9=0xc8;}else{_0x23dee9=0xce;}_0x3f405c[_0x81e6('0x1c')](_0x23dee9);return _0x3f405c[_0x81e6('0x22')]('Content-Range',_0xbec79c+'-'+_0x498710+'/'+_0x1d1b8b)[_0x81e6('0x23')](_0xb0de42);}return null;};}function patchUpdates(_0x277671){return function(_0x267075){try{jsonpatch[_0x81e6('0x24')](_0x267075,_0x277671,!![]);}catch(_0x2d8021){return BPromise['reject'](_0x2d8021);}return _0x267075[_0x81e6('0x25')]();};}function saveUpdates(_0x4c1ec7,_0x4f01d5){return function(_0x15c1a0){if(_0x15c1a0){return _0x15c1a0[_0x81e6('0x26')](_0x4c1ec7)[_0x81e6('0x27')](function(_0x3f6a06){return _0x3f6a06;});}return null;};}function removeEntity(_0x24068a,_0x12126f){return function(_0x444127){if(_0x444127){return _0x444127[_0x81e6('0x28')]()[_0x81e6('0x27')](function(){_0x24068a[_0x81e6('0x1c')](0xcc)[_0x81e6('0x1d')]();});}};}function handleEntityNotFound(_0x492540,_0x1bf5fd){return function(_0x5ee09e){if(!_0x5ee09e){_0x492540['sendStatus'](0x194);}return _0x5ee09e;};}function handleError(_0xb0298b,_0x329b2c){_0x329b2c=_0x329b2c||0x1f4;return function(_0x56f65f){logger[_0x81e6('0x29')](_0x56f65f[_0x81e6('0x2a')]);if(_0x56f65f[_0x81e6('0x2b')]){delete _0x56f65f[_0x81e6('0x2b')];}_0xb0298b['status'](_0x329b2c)[_0x81e6('0x2c')](_0x56f65f);};}exports[_0x81e6('0x2d')]=function(_0x3cd194,_0x135ba0){var _0x239fe9={},_0x2f12cf={},_0x37136e={'count':0x0,'rows':[]};var _0x2c94d4=_[_0x81e6('0x2e')](db[_0x81e6('0x2f')][_0x81e6('0x30')],function(_0x4ac555){return{'name':_0x4ac555['fieldName'],'type':_0x4ac555['type'][_0x81e6('0x31')]};});_0x2f12cf['model']=_[_0x81e6('0x2e')](_0x2c94d4,_0x81e6('0x2b'));_0x2f12cf[_0x81e6('0x32')]=_[_0x81e6('0x33')](_0x3cd194[_0x81e6('0x32')]);_0x2f12cf[_0x81e6('0x34')]=_['intersection'](_0x2f12cf['model'],_0x2f12cf[_0x81e6('0x32')]);_0x239fe9[_0x81e6('0x35')]=_[_0x81e6('0x36')](_0x2f12cf['model'],qs['fields'](_0x3cd194['query'][_0x81e6('0x37')]));_0x239fe9[_0x81e6('0x35')]=_0x239fe9[_0x81e6('0x35')][_0x81e6('0x38')]?_0x239fe9[_0x81e6('0x35')]:_0x2f12cf[_0x81e6('0x39')];if(!_0x3cd194[_0x81e6('0x32')][_0x81e6('0x3a')](_0x81e6('0x3b'))){_0x239fe9['limit']=qs[_0x81e6('0x1f')](_0x3cd194['query'][_0x81e6('0x1f')]);_0x239fe9[_0x81e6('0x1e')]=qs[_0x81e6('0x1e')](_0x3cd194[_0x81e6('0x32')]['offset']);}_0x239fe9[_0x81e6('0x3c')]=qs[_0x81e6('0x3d')](_0x3cd194[_0x81e6('0x32')][_0x81e6('0x3d')]);_0x239fe9[_0x81e6('0x3e')]=qs[_0x81e6('0x34')](_[_0x81e6('0x3f')](_0x3cd194[_0x81e6('0x32')],_0x2f12cf[_0x81e6('0x34')]),_0x2c94d4);if(_0x3cd194[_0x81e6('0x32')][_0x81e6('0x40')]){_0x239fe9['where']=_[_0x81e6('0x41')](_0x239fe9[_0x81e6('0x3e')],{'$or':_[_0x81e6('0x2e')](_0x2c94d4,function(_0x193659){if(_0x193659[_0x81e6('0x42')]!==_0x81e6('0x43')){var _0x4065a9={};_0x4065a9[_0x193659[_0x81e6('0x2b')]]={'$like':'%'+_0x3cd194[_0x81e6('0x32')]['filter']+'%'};return _0x4065a9;}})});}_0x239fe9=_[_0x81e6('0x41')]({},_0x239fe9,_0x3cd194['options']);var _0xdda700={'where':_0x239fe9[_0x81e6('0x3e')]};return db[_0x81e6('0x2f')][_0x81e6('0x21')](_0xdda700)[_0x81e6('0x27')](function(_0x5c08f9){_0x37136e['count']=_0x5c08f9;if(_0x3cd194[_0x81e6('0x32')][_0x81e6('0x44')]){_0x239fe9[_0x81e6('0x45')]=[{'all':!![]}];}return db[_0x81e6('0x2f')][_0x81e6('0x46')](_0x239fe9);})[_0x81e6('0x27')](function(_0x4bff31){_0x37136e[_0x81e6('0x47')]=_0x4bff31;return _0x37136e;})[_0x81e6('0x27')](respondWithFilteredResult(_0x135ba0,_0x239fe9))[_0x81e6('0x48')](handleError(_0x135ba0,null));};exports[_0x81e6('0x49')]=function(_0x499556,_0x374b88){var _0x26412b={'raw':!![],'where':{'id':_0x499556[_0x81e6('0x4a')]['id']}},_0x5e1528={};_0x5e1528['model']=_[_0x81e6('0x33')](db[_0x81e6('0x2f')]['rawAttributes']);_0x5e1528[_0x81e6('0x32')]=_['keys'](_0x499556[_0x81e6('0x32')]);_0x5e1528[_0x81e6('0x34')]=_[_0x81e6('0x36')](_0x5e1528['model'],_0x5e1528[_0x81e6('0x32')]);_0x26412b['attributes']=_[_0x81e6('0x36')](_0x5e1528[_0x81e6('0x39')],qs[_0x81e6('0x37')](_0x499556[_0x81e6('0x32')]['fields']));_0x26412b['attributes']=_0x26412b[_0x81e6('0x35')]['length']?_0x26412b[_0x81e6('0x35')]:_0x5e1528[_0x81e6('0x39')];if(_0x499556[_0x81e6('0x32')][_0x81e6('0x44')]){_0x26412b[_0x81e6('0x45')]=[{'all':!![]}];}_0x26412b=_[_0x81e6('0x41')]({},_0x26412b,_0x499556['options']);return db[_0x81e6('0x2f')][_0x81e6('0x4b')](_0x26412b)['then'](handleEntityNotFound(_0x374b88,null))['then'](respondWithResult(_0x374b88,null))[_0x81e6('0x48')](handleError(_0x374b88,null));};exports[_0x81e6('0x4c')]=function(_0x10bf09,_0x2072b9){return db['Dynamics365Field'][_0x81e6('0x4c')](_0x10bf09[_0x81e6('0x4d')],{})[_0x81e6('0x27')](respondWithResult(_0x2072b9,0xc9))['catch'](handleError(_0x2072b9,null));};exports[_0x81e6('0x26')]=function(_0x445149,_0x36665c){if(_0x445149[_0x81e6('0x4d')]['id']){delete _0x445149[_0x81e6('0x4d')]['id'];}return db[_0x81e6('0x2f')]['find']({'where':{'id':_0x445149[_0x81e6('0x4a')]['id']}})[_0x81e6('0x27')](handleEntityNotFound(_0x36665c,null))[_0x81e6('0x27')](saveUpdates(_0x445149['body'],null))[_0x81e6('0x27')](respondWithResult(_0x36665c,null))[_0x81e6('0x48')](handleError(_0x36665c,null));};exports[_0x81e6('0x28')]=function(_0x23b958,_0x57dd92){return db[_0x81e6('0x2f')][_0x81e6('0x4b')]({'where':{'id':_0x23b958[_0x81e6('0x4a')]['id']}})[_0x81e6('0x27')](handleEntityNotFound(_0x57dd92,null))[_0x81e6('0x27')](removeEntity(_0x57dd92,null))['catch'](handleError(_0x57dd92,null));};
\ No newline at end of file
+var _0x8881=['set','json','reject','save','update','then','destroy','end','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','query','keys','attributes','intersection','fields','model','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','offset','count'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x8881,0x15b));var _0x1888=function(_0x35d59c,_0x341ef9){_0x35d59c=_0x35d59c-0x0;var _0x18cd27=_0x8881[_0x35d59c];return _0x18cd27;};'use strict';var emlformat=require(_0x1888('0x0'));var rimraf=require(_0x1888('0x1'));var zipdir=require(_0x1888('0x2'));var jsonpatch=require(_0x1888('0x3'));var rp=require(_0x1888('0x4'));var moment=require(_0x1888('0x5'));var BPromise=require(_0x1888('0x6'));var Mustache=require(_0x1888('0x7'));var util=require(_0x1888('0x8'));var path=require('path');var sox=require(_0x1888('0x9'));var csv=require(_0x1888('0xa'));var ejs=require(_0x1888('0xb'));var fs=require('fs');var fs_extra=require(_0x1888('0xc'));var _=require(_0x1888('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1888('0xe'));var deskjs=require(_0x1888('0xf'));var toCsv=require(_0x1888('0xa'));var querystring=require(_0x1888('0x10'));var Papa=require(_0x1888('0x11'));var Redis=require(_0x1888('0x12'));var authService=require(_0x1888('0x13'));var qs=require(_0x1888('0x14'));var as=require(_0x1888('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1888('0x16'))(_0x1888('0x17'));var utils=require('../../config/utils');var config=require(_0x1888('0x18'));var licenseUtil=require(_0x1888('0x19'));var db=require(_0x1888('0x1a'))['db'];function respondWithStatusCode(_0x658964,_0xa8ad59){_0xa8ad59=_0xa8ad59||0xcc;return function(_0x445385){if(_0x445385){return _0x658964[_0x1888('0x1b')](_0xa8ad59);}return _0x658964[_0x1888('0x1c')](_0xa8ad59)['end']();};}function respondWithResult(_0x140a26,_0xa19ef5){_0xa19ef5=_0xa19ef5||0xc8;return function(_0x1c1fb9){if(_0x1c1fb9){return _0x140a26[_0x1888('0x1c')](_0xa19ef5)['json'](_0x1c1fb9);}};}function respondWithFilteredResult(_0x13a3be,_0x11439f){return function(_0x3767c5){if(_0x3767c5){var _0x24747e=typeof _0x11439f['offset']===_0x1888('0x1d')&&typeof _0x11439f[_0x1888('0x1e')]==='undefined';var _0x671f33=_0x3767c5['count'];var _0x18d0b3=_0x24747e?0x0:_0x11439f[_0x1888('0x1f')];var _0x39fb06=_0x24747e?_0x3767c5[_0x1888('0x20')]:_0x11439f[_0x1888('0x1f')]+_0x11439f[_0x1888('0x1e')];var _0x1a11c2;if(_0x39fb06>=_0x671f33){_0x39fb06=_0x671f33;_0x1a11c2=0xc8;}else{_0x1a11c2=0xce;}_0x13a3be[_0x1888('0x1c')](_0x1a11c2);return _0x13a3be[_0x1888('0x21')]('Content-Range',_0x18d0b3+'-'+_0x39fb06+'/'+_0x671f33)[_0x1888('0x22')](_0x3767c5);}return null;};}function patchUpdates(_0x1d8242){return function(_0x3bad5a){try{jsonpatch['apply'](_0x3bad5a,_0x1d8242,!![]);}catch(_0x1efa15){return BPromise[_0x1888('0x23')](_0x1efa15);}return _0x3bad5a[_0x1888('0x24')]();};}function saveUpdates(_0x5816ff,_0x260995){return function(_0x4f355d){if(_0x4f355d){return _0x4f355d[_0x1888('0x25')](_0x5816ff)[_0x1888('0x26')](function(_0xe7147){return _0xe7147;});}return null;};}function removeEntity(_0x18d39c,_0x202b76){return function(_0x14767e){if(_0x14767e){return _0x14767e[_0x1888('0x27')]()['then'](function(){_0x18d39c[_0x1888('0x1c')](0xcc)[_0x1888('0x28')]();});}};}function handleEntityNotFound(_0x5156a3,_0xbe1d59){return function(_0x5536a7){if(!_0x5536a7){_0x5156a3[_0x1888('0x1b')](0x194);}return _0x5536a7;};}function handleError(_0x3f7e78,_0x31061a){_0x31061a=_0x31061a||0x1f4;return function(_0x255528){logger[_0x1888('0x29')](_0x255528[_0x1888('0x2a')]);if(_0x255528['name']){delete _0x255528[_0x1888('0x2b')];}_0x3f7e78[_0x1888('0x1c')](_0x31061a)[_0x1888('0x2c')](_0x255528);};}exports[_0x1888('0x2d')]=function(_0x4636af,_0x64d5a8){var _0x9ae86b={},_0x35b552={},_0x251d88={'count':0x0,'rows':[]};var _0x2b51a9=_[_0x1888('0x2e')](db[_0x1888('0x2f')][_0x1888('0x30')],function(_0x231919){return{'name':_0x231919[_0x1888('0x31')],'type':_0x231919[_0x1888('0x32')]['key']};});_0x35b552['model']=_[_0x1888('0x2e')](_0x2b51a9,_0x1888('0x2b'));_0x35b552[_0x1888('0x33')]=_[_0x1888('0x34')](_0x4636af['query']);_0x35b552['filters']=_['intersection'](_0x35b552['model'],_0x35b552['query']);_0x9ae86b[_0x1888('0x35')]=_[_0x1888('0x36')](_0x35b552['model'],qs[_0x1888('0x37')](_0x4636af[_0x1888('0x33')][_0x1888('0x37')]));_0x9ae86b[_0x1888('0x35')]=_0x9ae86b[_0x1888('0x35')]['length']?_0x9ae86b['attributes']:_0x35b552[_0x1888('0x38')];if(!_0x4636af[_0x1888('0x33')][_0x1888('0x39')](_0x1888('0x3a'))){_0x9ae86b[_0x1888('0x1e')]=qs[_0x1888('0x1e')](_0x4636af[_0x1888('0x33')][_0x1888('0x1e')]);_0x9ae86b['offset']=qs['offset'](_0x4636af[_0x1888('0x33')][_0x1888('0x1f')]);}_0x9ae86b[_0x1888('0x3b')]=qs[_0x1888('0x3c')](_0x4636af[_0x1888('0x33')]['sort']);_0x9ae86b[_0x1888('0x3d')]=qs[_0x1888('0x3e')](_[_0x1888('0x3f')](_0x4636af[_0x1888('0x33')],_0x35b552['filters']),_0x2b51a9);if(_0x4636af[_0x1888('0x33')][_0x1888('0x40')]){_0x9ae86b[_0x1888('0x3d')]=_[_0x1888('0x41')](_0x9ae86b[_0x1888('0x3d')],{'$or':_[_0x1888('0x2e')](_0x2b51a9,function(_0x37177e){if(_0x37177e[_0x1888('0x32')]!==_0x1888('0x42')){var _0x5f29df={};_0x5f29df[_0x37177e[_0x1888('0x2b')]]={'$like':'%'+_0x4636af['query'][_0x1888('0x40')]+'%'};return _0x5f29df;}})});}_0x9ae86b=_['merge']({},_0x9ae86b,_0x4636af[_0x1888('0x43')]);var _0x11e1a3={'where':_0x9ae86b[_0x1888('0x3d')]};return db[_0x1888('0x2f')][_0x1888('0x20')](_0x11e1a3)['then'](function(_0x31f682){_0x251d88[_0x1888('0x20')]=_0x31f682;if(_0x4636af['query'][_0x1888('0x44')]){_0x9ae86b[_0x1888('0x45')]=[{'all':!![]}];}return db[_0x1888('0x2f')]['findAll'](_0x9ae86b);})[_0x1888('0x26')](function(_0x43c909){_0x251d88[_0x1888('0x46')]=_0x43c909;return _0x251d88;})[_0x1888('0x26')](respondWithFilteredResult(_0x64d5a8,_0x9ae86b))[_0x1888('0x47')](handleError(_0x64d5a8,null));};exports['show']=function(_0x4bf319,_0x2ede14){var _0x36befb={'raw':!![],'where':{'id':_0x4bf319['params']['id']}},_0x5c170a={};_0x5c170a[_0x1888('0x38')]=_[_0x1888('0x34')](db[_0x1888('0x2f')][_0x1888('0x30')]);_0x5c170a['query']=_[_0x1888('0x34')](_0x4bf319[_0x1888('0x33')]);_0x5c170a[_0x1888('0x3e')]=_[_0x1888('0x36')](_0x5c170a[_0x1888('0x38')],_0x5c170a['query']);_0x36befb[_0x1888('0x35')]=_[_0x1888('0x36')](_0x5c170a[_0x1888('0x38')],qs['fields'](_0x4bf319[_0x1888('0x33')][_0x1888('0x37')]));_0x36befb[_0x1888('0x35')]=_0x36befb[_0x1888('0x35')]['length']?_0x36befb[_0x1888('0x35')]:_0x5c170a[_0x1888('0x38')];if(_0x4bf319[_0x1888('0x33')][_0x1888('0x44')]){_0x36befb[_0x1888('0x45')]=[{'all':!![]}];}_0x36befb=_[_0x1888('0x41')]({},_0x36befb,_0x4bf319[_0x1888('0x43')]);return db['Dynamics365Field'][_0x1888('0x48')](_0x36befb)[_0x1888('0x26')](handleEntityNotFound(_0x2ede14,null))[_0x1888('0x26')](respondWithResult(_0x2ede14,null))[_0x1888('0x47')](handleError(_0x2ede14,null));};exports[_0x1888('0x49')]=function(_0x1af500,_0x1fd623){return db['Dynamics365Field'][_0x1888('0x49')](_0x1af500['body'],{})[_0x1888('0x26')](respondWithResult(_0x1fd623,0xc9))[_0x1888('0x47')](handleError(_0x1fd623,null));};exports[_0x1888('0x25')]=function(_0x2330ee,_0xf5322a){if(_0x2330ee[_0x1888('0x4a')]['id']){delete _0x2330ee[_0x1888('0x4a')]['id'];}return db[_0x1888('0x2f')][_0x1888('0x48')]({'where':{'id':_0x2330ee['params']['id']}})[_0x1888('0x26')](handleEntityNotFound(_0xf5322a,null))['then'](saveUpdates(_0x2330ee[_0x1888('0x4a')],null))[_0x1888('0x26')](respondWithResult(_0xf5322a,null))[_0x1888('0x47')](handleError(_0xf5322a,null));};exports['destroy']=function(_0x51daf8,_0x3b268f){return db[_0x1888('0x2f')][_0x1888('0x48')]({'where':{'id':_0x51daf8[_0x1888('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3b268f,null))[_0x1888('0x26')](removeEntity(_0x3b268f,null))[_0x1888('0x47')](handleError(_0x3b268f,null));};
\ No newline at end of file
index ab1793a..b64bba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1edb=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','idField'];(function(_0x1d209c,_0x633e4a){var _0x33c332=function(_0x444188){while(--_0x444188){_0x1d209c['push'](_0x1d209c['shift']());}};_0x33c332(++_0x633e4a);}(_0x1edb,0x9a));var _0xb1ed=function(_0x3a1867,_0x4b1a1b){_0x3a1867=_0x3a1867-0x0;var _0x474f76=_0x1edb[_0x3a1867];return _0x474f76;};'use strict';var _=require(_0xb1ed('0x0'));var util=require(_0xb1ed('0x1'));var logger=require(_0xb1ed('0x2'))(_0xb1ed('0x3'));var moment=require(_0xb1ed('0x4'));var BPromise=require(_0xb1ed('0x5'));var rp=require(_0xb1ed('0x6'));var fs=require('fs');var path=require(_0xb1ed('0x7'));var rimraf=require(_0xb1ed('0x8'));var config=require(_0xb1ed('0x9'));var attributes=require(_0xb1ed('0xa'));module[_0xb1ed('0xb')]=function(_0x1da184,_0x533432){return _0x1da184[_0xb1ed('0xc')](_0xb1ed('0xd'),attributes,{'tableName':_0xb1ed('0xe'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xb1ed('0xf'),_0xb1ed('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf7fc=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./intDynamics365Field.attributes','exports','define','int_dynamics365_fields','dynamics365_unique_index','idField'];(function(_0x39e8e7,_0x3ae5c5){var _0x460a81=function(_0x26248a){while(--_0x26248a){_0x39e8e7['push'](_0x39e8e7['shift']());}};_0x460a81(++_0x3ae5c5);}(_0xf7fc,0x16c));var _0xcf7f=function(_0x141c39,_0x504ee9){_0x141c39=_0x141c39-0x0;var _0x5379e9=_0xf7fc[_0x141c39];return _0x5379e9;};'use strict';var _=require(_0xcf7f('0x0'));var util=require('util');var logger=require(_0xcf7f('0x1'))(_0xcf7f('0x2'));var moment=require(_0xcf7f('0x3'));var BPromise=require(_0xcf7f('0x4'));var rp=require(_0xcf7f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcf7f('0x6'));var config=require('../../config/environment');var attributes=require(_0xcf7f('0x7'));module[_0xcf7f('0x8')]=function(_0x3c6bb8,_0x424ead){return _0x3c6bb8[_0xcf7f('0x9')]('Dynamics365Field',attributes,{'tableName':_0xcf7f('0xa'),'paranoid':![],'indexes':[{'name':_0xcf7f('0xb'),'fields':[_0xcf7f('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a7be805..b1cc0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3efa=['error','Dynamics365Field,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s'];(function(_0x418d65,_0x69d05c){var _0x3bb5e4=function(_0x43b92b){while(--_0x43b92b){_0x418d65['push'](_0x418d65['shift']());}};_0x3bb5e4(++_0x69d05c);}(_0x3efa,0xd6));var _0xa3ef=function(_0x13672f,_0x79b157){_0x13672f=_0x13672f-0x0;var _0x226ebd=_0x3efa[_0x13672f];return _0x226ebd;};'use strict';var _=require(_0xa3ef('0x0'));var util=require(_0xa3ef('0x1'));var moment=require(_0xa3ef('0x2'));var BPromise=require(_0xa3ef('0x3'));var rs=require(_0xa3ef('0x4'));var fs=require('fs');var Redis=require(_0xa3ef('0x5'));var db=require(_0xa3ef('0x6'))['db'];var utils=require(_0xa3ef('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa3ef('0x8'));var client=jayson[_0xa3ef('0x9')][_0xa3ef('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x158a3a,_0xd73654,_0xa75a5e){return new BPromise(function(_0x42e003,_0x31e808){return client[_0xa3ef('0xb')](_0x158a3a,_0xa75a5e)[_0xa3ef('0xc')](function(_0x51e86f){logger[_0xa3ef('0xd')]('Dynamics365Field,\x20%s,\x20%s',_0xd73654,_0xa3ef('0xe'));logger[_0xa3ef('0xf')](_0xa3ef('0x10'),_0xd73654,_0xa3ef('0xe'),JSON['stringify'](_0x51e86f));if(_0x51e86f['error']){if(_0x51e86f[_0xa3ef('0x11')]['code']===0x1f4){logger['error'](_0xa3ef('0x12'),_0xd73654,_0x51e86f[_0xa3ef('0x11')][_0xa3ef('0x13')]);return _0x31e808(_0x51e86f['error'][_0xa3ef('0x13')]);}logger[_0xa3ef('0x11')](_0xa3ef('0x12'),_0xd73654,_0x51e86f[_0xa3ef('0x11')][_0xa3ef('0x13')]);return _0x42e003(_0x51e86f['error']['message']);}else{logger[_0xa3ef('0xd')]('Dynamics365Field,\x20%s,\x20%s',_0xd73654,'request\x20sent');_0x42e003(_0x51e86f[_0xa3ef('0x14')][_0xa3ef('0x13')]);}})['catch'](function(_0x3dcded){logger[_0xa3ef('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0xd73654,_0x3dcded);_0x31e808(_0x3dcded);});});}
\ No newline at end of file
+var _0x175c=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring'];(function(_0x437fbf,_0x2cf9ab){var _0x4c34ef=function(_0x35bd4b){while(--_0x35bd4b){_0x437fbf['push'](_0x437fbf['shift']());}};_0x4c34ef(++_0x2cf9ab);}(_0x175c,0x11c));var _0xc175=function(_0xa5e825,_0x5e06a9){_0xa5e825=_0xa5e825-0x0;var _0x3a9131=_0x175c[_0xa5e825];return _0x3a9131;};'use strict';var _=require(_0xc175('0x0'));var util=require(_0xc175('0x1'));var moment=require(_0xc175('0x2'));var BPromise=require('bluebird');var rs=require(_0xc175('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc175('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc175('0x5'))(_0xc175('0x6'));var config=require(_0xc175('0x7'));var jayson=require(_0xc175('0x8'));var client=jayson[_0xc175('0x9')][_0xc175('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42123a,_0x2b8bef,_0x41a5e3){return new BPromise(function(_0x2df336,_0x431c1d){return client[_0xc175('0xb')](_0x42123a,_0x41a5e3)[_0xc175('0xc')](function(_0x422d95){logger[_0xc175('0xd')](_0xc175('0xe'),_0x2b8bef,_0xc175('0xf'));logger[_0xc175('0x10')](_0xc175('0x11'),_0x2b8bef,_0xc175('0xf'),JSON[_0xc175('0x12')](_0x422d95));if(_0x422d95[_0xc175('0x13')]){if(_0x422d95[_0xc175('0x13')][_0xc175('0x14')]===0x1f4){logger[_0xc175('0x13')](_0xc175('0xe'),_0x2b8bef,_0x422d95[_0xc175('0x13')][_0xc175('0x15')]);return _0x431c1d(_0x422d95[_0xc175('0x13')][_0xc175('0x15')]);}logger[_0xc175('0x13')](_0xc175('0xe'),_0x2b8bef,_0x422d95[_0xc175('0x13')][_0xc175('0x15')]);return _0x2df336(_0x422d95[_0xc175('0x13')][_0xc175('0x15')]);}else{logger[_0xc175('0xd')](_0xc175('0xe'),_0x2b8bef,_0xc175('0xf'));_0x2df336(_0x422d95[_0xc175('0x16')]['message']);}})[_0xc175('0x17')](function(_0x1bd958){logger[_0xc175('0x13')](_0xc175('0xe'),_0x2b8bef,_0x1bd958);_0x431c1d(_0x1bd958);});});}
\ No newline at end of file
index 825069f..4a9d4db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d66=['put','update','delete','destroy','multer','path','Router','../../components/auth/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index','/:id','show','get','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration'];(function(_0x3e50c7,_0x4e6538){var _0x326646=function(_0xc21a54){while(--_0xc21a54){_0x3e50c7['push'](_0x3e50c7['shift']());}};_0x326646(++_0x4e6538);}(_0x7d66,0x13f));var _0x67d6=function(_0x2f87cd,_0xcaf299){_0x2f87cd=_0x2f87cd-0x0;var _0x5d7eda=_0x7d66[_0x2f87cd];return _0x5d7eda;};'use strict';var multer=require(_0x67d6('0x0'));var util=require('util');var path=require(_0x67d6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x67d6('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x67d6('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x67d6('0x4'));var controller=require(_0x67d6('0x5'));router['get']('/',auth[_0x67d6('0x6')](),controller[_0x67d6('0x7')]);router['get'](_0x67d6('0x8'),auth[_0x67d6('0x6')](),controller[_0x67d6('0x9')]);router[_0x67d6('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0x67d6('0xa')](_0x67d6('0xb'),auth[_0x67d6('0x6')](),controller[_0x67d6('0xc')]);router[_0x67d6('0xd')]('/',auth['isAuthenticated'](),controller[_0x67d6('0xe')]);router[_0x67d6('0xd')](_0x67d6('0xf'),auth['isAuthenticated'](),controller[_0x67d6('0x10')]);router[_0x67d6('0x11')](_0x67d6('0x8'),auth[_0x67d6('0x6')](),controller[_0x67d6('0x12')]);router[_0x67d6('0x13')](_0x67d6('0x8'),auth[_0x67d6('0x6')](),controller[_0x67d6('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xbf1a=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','/:id','delete','destroy','exports','multer'];(function(_0x161bc7,_0x48e34b){var _0x32f15a=function(_0x10a532){while(--_0x10a532){_0x161bc7['push'](_0x161bc7['shift']());}};_0x32f15a(++_0x48e34b);}(_0xbf1a,0xdb));var _0xabf1=function(_0x5d46f2,_0x36ed4a){_0x5d46f2=_0x5d46f2-0x0;var _0x45998c=_0xbf1a[_0x5d46f2];return _0x45998c;};'use strict';var multer=require(_0xabf1('0x0'));var util=require(_0xabf1('0x1'));var path=require(_0xabf1('0x2'));var timeout=require(_0xabf1('0x3'));var express=require(_0xabf1('0x4'));var router=express[_0xabf1('0x5')]();var fs_extra=require(_0xabf1('0x6'));var auth=require(_0xabf1('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xabf1('0x8'));var controller=require('./intFreshdeskAccount.controller');router[_0xabf1('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xabf1('0x9')]('/:id',auth[_0xabf1('0xa')](),controller['show']);router[_0xabf1('0x9')](_0xabf1('0xb'),auth[_0xabf1('0xa')](),controller[_0xabf1('0xc')]);router[_0xabf1('0x9')](_0xabf1('0xd'),auth[_0xabf1('0xa')](),controller['getFields']);router[_0xabf1('0xe')]('/',auth[_0xabf1('0xa')](),controller[_0xabf1('0xf')]);router['post'](_0xabf1('0xb'),auth[_0xabf1('0xa')](),controller[_0xabf1('0x10')]);router[_0xabf1('0x11')](_0xabf1('0x12'),auth[_0xabf1('0xa')](),controller['update']);router[_0xabf1('0x13')](_0xabf1('0x12'),auth['isAuthenticated'](),controller[_0xabf1('0x14')]);module[_0xabf1('0x15')]=router;
\ No newline at end of file
index bbe2e4c..659694e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['exports','STRING','username','sequelize'];(function(_0x13ced3,_0x529a2a){var _0x43897f=function(_0x135f1c){while(--_0x135f1c){_0x13ced3['push'](_0x13ced3['shift']());}};_0x43897f(++_0x529a2a);}(_0x3a6d,0x143));var _0xd3a6=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x3a6d[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require(_0xd3a6('0x0'));module[_0xd3a6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd3a6('0x2')]},'username':{'type':Sequelize[_0xd3a6('0x2')],'unique':_0xd3a6('0x3')},'apiKey':{'type':Sequelize[_0xd3a6('0x2')]},'remoteUri':{'type':Sequelize[_0xd3a6('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xd3a6('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xaebd=['remoteUri','sequelize','STRING','username'];(function(_0x401b1a,_0x24bddf){var _0x51e72f=function(_0x3cd0e9){while(--_0x3cd0e9){_0x401b1a['push'](_0x401b1a['shift']());}};_0x51e72f(++_0x24bddf);}(_0xaebd,0x1e9));var _0xdaeb=function(_0xfcc09c,_0x7e02cc){_0xfcc09c=_0xfcc09c-0x0;var _0x4ddf55=_0xaebd[_0xfcc09c];return _0x4ddf55;};'use strict';var Sequelize=require(_0xdaeb('0x0'));module['exports']={'name':{'type':Sequelize[_0xdaeb('0x1')]},'description':{'type':Sequelize[_0xdaeb('0x1')]},'username':{'type':Sequelize[_0xdaeb('0x1')],'unique':_0xdaeb('0x2')},'apiKey':{'type':Sequelize[_0xdaeb('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xdaeb('0x3')},'serverUrl':{'type':Sequelize[_0xdaeb('0x1')],'allowNull':![]}};
\ No newline at end of file
index 6dbc0ba..688278d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2821=['requester','subject','agent','description','priority','group','ticket_type','company','default','custom_text','choices','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','stack','name','send','FreshdeskAccount','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','findAll','rows','params','include','find','catch','create','body','getConfigurations','hasOwnProperty','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshdeskConfiguration','FreshdeskField','getFields','remoteUri','apiKey','substring','lastIndexOf','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','base64'];(function(_0x56f63f,_0x3ed8c9){var _0x25b30f=function(_0x48724e){while(--_0x48724e){_0x56f63f['push'](_0x56f63f['shift']());}};_0x25b30f(++_0x3ed8c9);}(_0x2821,0x87));var _0x1282=function(_0x17345b,_0x18a4a6){_0x17345b=_0x17345b-0x0;var _0x20e829=_0x2821[_0x17345b];return _0x20e829;};'use strict';var emlformat=require(_0x1282('0x0'));var rimraf=require(_0x1282('0x1'));var zipdir=require(_0x1282('0x2'));var jsonpatch=require(_0x1282('0x3'));var rp=require(_0x1282('0x4'));var moment=require(_0x1282('0x5'));var BPromise=require(_0x1282('0x6'));var Mustache=require(_0x1282('0x7'));var util=require(_0x1282('0x8'));var path=require(_0x1282('0x9'));var sox=require(_0x1282('0xa'));var csv=require('to-csv');var ejs=require(_0x1282('0xb'));var fs=require('fs');var fs_extra=require(_0x1282('0xc'));var _=require(_0x1282('0xd'));var squel=require(_0x1282('0xe'));var crypto=require(_0x1282('0xf'));var jsforce=require(_0x1282('0x10'));var deskjs=require(_0x1282('0x11'));var toCsv=require(_0x1282('0x12'));var querystring=require('querystring');var Papa=require(_0x1282('0x13'));var Redis=require(_0x1282('0x14'));var authService=require(_0x1282('0x15'));var qs=require(_0x1282('0x16'));var as=require(_0x1282('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1282('0x18'))(_0x1282('0x19'));var utils=require('../../config/utils');var config=require(_0x1282('0x1a'));var licenseUtil=require(_0x1282('0x1b'));var db=require('../../mysqldb')['db'];var integrations=require(_0x1282('0x1c'));function respondWithStatusCode(_0x4bba95,_0x4d0a3c){_0x4d0a3c=_0x4d0a3c||0xcc;return function(_0x387852){if(_0x387852){return _0x4bba95[_0x1282('0x1d')](_0x4d0a3c);}return _0x4bba95[_0x1282('0x1e')](_0x4d0a3c)[_0x1282('0x1f')]();};}function respondWithResult(_0x4dfd14,_0x5af979){_0x5af979=_0x5af979||0xc8;return function(_0x493837){if(_0x493837){return _0x4dfd14[_0x1282('0x1e')](_0x5af979)[_0x1282('0x20')](_0x493837);}};}function respondWithFilteredResult(_0x4272fa,_0x3f7bd8){return function(_0x2320c5){if(_0x2320c5){var _0x1f6a7a=typeof _0x3f7bd8[_0x1282('0x21')]===_0x1282('0x22')&&typeof _0x3f7bd8['limit']===_0x1282('0x22');var _0x28eeef=_0x2320c5['count'];var _0x48c857=_0x1f6a7a?0x0:_0x3f7bd8[_0x1282('0x21')];var _0x4e3ec7=_0x1f6a7a?_0x2320c5[_0x1282('0x23')]:_0x3f7bd8[_0x1282('0x21')]+_0x3f7bd8['limit'];var _0x5ea75d;if(_0x4e3ec7>=_0x28eeef){_0x4e3ec7=_0x28eeef;_0x5ea75d=0xc8;}else{_0x5ea75d=0xce;}_0x4272fa['status'](_0x5ea75d);return _0x4272fa['set'](_0x1282('0x24'),_0x48c857+'-'+_0x4e3ec7+'/'+_0x28eeef)[_0x1282('0x20')](_0x2320c5);}return null;};}function patchUpdates(_0xe67079){return function(_0x41dd71){try{jsonpatch[_0x1282('0x25')](_0x41dd71,_0xe67079,!![]);}catch(_0x38f22b){return BPromise[_0x1282('0x26')](_0x38f22b);}return _0x41dd71[_0x1282('0x27')]();};}function saveUpdates(_0x153159,_0x1a6240){return function(_0x56fddd){if(_0x56fddd){return _0x56fddd[_0x1282('0x28')](_0x153159)['then'](function(_0x13a39e){return _0x13a39e;});}return null;};}function removeEntity(_0x25dbb5,_0x158123){return function(_0x3c116f){if(_0x3c116f){return _0x3c116f[_0x1282('0x29')]()['then'](function(){_0x25dbb5[_0x1282('0x1e')](0xcc)[_0x1282('0x1f')]();});}};}function handleEntityNotFound(_0x45830f,_0x29d09c){return function(_0xe98661){if(!_0xe98661){_0x45830f[_0x1282('0x1d')](0x194);}return _0xe98661;};}function handleError(_0x725029,_0x28e686){_0x28e686=_0x28e686||0x1f4;return function(_0x5b2927){logger['error'](_0x5b2927[_0x1282('0x2a')]);if(_0x5b2927[_0x1282('0x2b')]){delete _0x5b2927[_0x1282('0x2b')];}_0x725029['status'](_0x28e686)[_0x1282('0x2c')](_0x5b2927);};}exports['index']=function(_0xfdb50c,_0x5753ba){var _0x519a7f={},_0x4b5d6c={},_0x5d6a7d={'count':0x0,'rows':[]};var _0x4aa4cb=_['map'](db[_0x1282('0x2d')][_0x1282('0x2e')],function(_0x37463a){return{'name':_0x37463a[_0x1282('0x2f')],'type':_0x37463a[_0x1282('0x30')][_0x1282('0x31')]};});_0x4b5d6c[_0x1282('0x32')]=_[_0x1282('0x33')](_0x4aa4cb,_0x1282('0x2b'));_0x4b5d6c['query']=_[_0x1282('0x34')](_0xfdb50c[_0x1282('0x35')]);_0x4b5d6c[_0x1282('0x36')]=_[_0x1282('0x37')](_0x4b5d6c[_0x1282('0x32')],_0x4b5d6c['query']);_0x519a7f[_0x1282('0x38')]=_[_0x1282('0x37')](_0x4b5d6c['model'],qs['fields'](_0xfdb50c['query'][_0x1282('0x39')]));_0x519a7f['attributes']=_0x519a7f[_0x1282('0x38')][_0x1282('0x3a')]?_0x519a7f['attributes']:_0x4b5d6c[_0x1282('0x32')];if(!_0xfdb50c['query']['hasOwnProperty'](_0x1282('0x3b'))){_0x519a7f[_0x1282('0x3c')]=qs[_0x1282('0x3c')](_0xfdb50c[_0x1282('0x35')]['limit']);_0x519a7f['offset']=qs[_0x1282('0x21')](_0xfdb50c['query'][_0x1282('0x21')]);}_0x519a7f[_0x1282('0x3d')]=qs[_0x1282('0x3e')](_0xfdb50c[_0x1282('0x35')]['sort']);_0x519a7f[_0x1282('0x3f')]=qs['filters'](_[_0x1282('0x40')](_0xfdb50c[_0x1282('0x35')],_0x4b5d6c[_0x1282('0x36')]),_0x4aa4cb);if(_0xfdb50c[_0x1282('0x35')]['filter']){_0x519a7f['where']=_[_0x1282('0x41')](_0x519a7f[_0x1282('0x3f')],{'$or':_[_0x1282('0x33')](_0x4aa4cb,function(_0x5ce898){if(_0x5ce898[_0x1282('0x30')]!==_0x1282('0x42')){var _0x3efca5={};_0x3efca5[_0x5ce898[_0x1282('0x2b')]]={'$like':'%'+_0xfdb50c[_0x1282('0x35')][_0x1282('0x43')]+'%'};return _0x3efca5;}})});}_0x519a7f=_[_0x1282('0x41')]({},_0x519a7f,_0xfdb50c[_0x1282('0x44')]);var _0x178ac5={'where':_0x519a7f[_0x1282('0x3f')]};return db[_0x1282('0x2d')][_0x1282('0x23')](_0x178ac5)[_0x1282('0x45')](function(_0x53ee4c){_0x5d6a7d[_0x1282('0x23')]=_0x53ee4c;if(_0xfdb50c[_0x1282('0x35')][_0x1282('0x46')]){_0x519a7f['include']=[{'all':!![]}];}return db['FreshdeskAccount'][_0x1282('0x47')](_0x519a7f);})[_0x1282('0x45')](function(_0x3ca027){_0x5d6a7d[_0x1282('0x48')]=_0x3ca027;return _0x5d6a7d;})[_0x1282('0x45')](respondWithFilteredResult(_0x5753ba,_0x519a7f))['catch'](handleError(_0x5753ba,null));};exports['show']=function(_0x45be30,_0x3bd935){var _0x270262={'raw':![],'where':{'id':_0x45be30[_0x1282('0x49')]['id']}},_0x5657f4={};_0x5657f4[_0x1282('0x32')]=_[_0x1282('0x34')](db[_0x1282('0x2d')][_0x1282('0x2e')]);_0x5657f4[_0x1282('0x35')]=_['keys'](_0x45be30['query']);_0x5657f4['filters']=_[_0x1282('0x37')](_0x5657f4[_0x1282('0x32')],_0x5657f4[_0x1282('0x35')]);_0x270262[_0x1282('0x38')]=_[_0x1282('0x37')](_0x5657f4['model'],qs['fields'](_0x45be30['query']['fields']));_0x270262[_0x1282('0x38')]=_0x270262[_0x1282('0x38')][_0x1282('0x3a')]?_0x270262[_0x1282('0x38')]:_0x5657f4['model'];if(_0x45be30['query']['includeAll']){_0x270262[_0x1282('0x4a')]=[{'all':!![]}];}_0x270262=_['merge']({},_0x270262,_0x45be30['options']);return db['FreshdeskAccount'][_0x1282('0x4b')](_0x270262)[_0x1282('0x45')](handleEntityNotFound(_0x3bd935,null))['then'](respondWithResult(_0x3bd935,null))[_0x1282('0x4c')](handleError(_0x3bd935,null));};exports[_0x1282('0x4d')]=function(_0x3d6792,_0x2e9414){return db['FreshdeskAccount']['create'](_0x3d6792[_0x1282('0x4e')],{})[_0x1282('0x45')](respondWithResult(_0x2e9414,0xc9))[_0x1282('0x4c')](handleError(_0x2e9414,null));};exports[_0x1282('0x28')]=function(_0x381a46,_0x2e1529){if(_0x381a46[_0x1282('0x4e')]['id']){delete _0x381a46[_0x1282('0x4e')]['id'];}return db[_0x1282('0x2d')][_0x1282('0x4b')]({'where':{'id':_0x381a46[_0x1282('0x49')]['id']}})[_0x1282('0x45')](handleEntityNotFound(_0x2e1529,null))[_0x1282('0x45')](saveUpdates(_0x381a46[_0x1282('0x4e')],null))['then'](respondWithResult(_0x2e1529,null))[_0x1282('0x4c')](handleError(_0x2e1529,null));};exports['destroy']=function(_0x16d0cf,_0x412eaf){return db['FreshdeskAccount']['find']({'where':{'id':_0x16d0cf['params']['id']}})[_0x1282('0x45')](handleEntityNotFound(_0x412eaf,null))[_0x1282('0x45')](removeEntity(_0x412eaf,null))[_0x1282('0x4c')](handleError(_0x412eaf,null));};exports[_0x1282('0x4f')]=function(_0x1e0541,_0x212c9c,_0x44e249){var _0x5f00bb={};var _0x276397={};var _0x401f16;var _0x321edb;return db[_0x1282('0x2d')]['findOne']({'where':{'id':_0x1e0541[_0x1282('0x49')]['id']}})[_0x1282('0x45')](handleEntityNotFound(_0x212c9c,null))['then'](function(_0x6275c3){if(_0x6275c3){_0x401f16=_0x6275c3;_0x276397[_0x1282('0x32')]=_[_0x1282('0x34')](db['FreshdeskConfiguration'][_0x1282('0x2e')]);_0x276397['query']=_[_0x1282('0x34')](_0x1e0541['query']);_0x276397[_0x1282('0x36')]=_[_0x1282('0x37')](_0x276397[_0x1282('0x32')],_0x276397[_0x1282('0x35')]);_0x5f00bb[_0x1282('0x38')]=_[_0x1282('0x37')](_0x276397[_0x1282('0x32')],qs[_0x1282('0x39')](_0x1e0541[_0x1282('0x35')][_0x1282('0x39')]));_0x5f00bb['attributes']=_0x5f00bb[_0x1282('0x38')][_0x1282('0x3a')]?_0x5f00bb[_0x1282('0x38')]:_0x276397[_0x1282('0x32')];_0x5f00bb[_0x1282('0x3d')]=qs[_0x1282('0x3e')](_0x1e0541['query'][_0x1282('0x3e')]);_0x5f00bb['where']=qs[_0x1282('0x36')](_[_0x1282('0x40')](_0x1e0541[_0x1282('0x35')],_0x276397[_0x1282('0x36')]));if(_0x1e0541[_0x1282('0x35')][_0x1282('0x43')]){_0x5f00bb['where']=_[_0x1282('0x41')](_0x5f00bb[_0x1282('0x3f')],{'$or':_['map'](_0x5f00bb[_0x1282('0x38')],function(_0x147ac0){var _0xe87f96={};_0xe87f96[_0x147ac0]={'$like':'%'+_0x1e0541['query'][_0x1282('0x43')]+'%'};return _0xe87f96;})});}_0x5f00bb=_['merge']({},_0x5f00bb,_0x1e0541[_0x1282('0x44')]);return _0x401f16[_0x1282('0x4f')](_0x5f00bb);}})['then'](function(_0x556d09){if(_0x556d09){_0x321edb=_0x556d09[_0x1282('0x3a')];if(!_0x1e0541[_0x1282('0x35')][_0x1282('0x50')](_0x1282('0x3b'))){_0x5f00bb[_0x1282('0x3c')]=qs['limit'](_0x1e0541[_0x1282('0x35')][_0x1282('0x3c')]);_0x5f00bb['offset']=qs[_0x1282('0x21')](_0x1e0541[_0x1282('0x35')][_0x1282('0x21')]);}return _0x401f16[_0x1282('0x4f')](_0x5f00bb);}})[_0x1282('0x45')](function(_0x1e2692){if(_0x1e2692){return _0x1e2692?{'count':_0x321edb,'rows':_0x1e2692}:null;}})[_0x1282('0x45')](respondWithResult(_0x212c9c,null))['catch'](handleError(_0x212c9c,null));};exports[_0x1282('0x51')]=function(_0x4d2a6f,_0x359449,_0x1a7545){if(_0x4d2a6f[_0x1282('0x4e')]['id']){delete _0x4d2a6f['body']['id'];}return db[_0x1282('0x2d')][_0x1282('0x52')]({'where':{'id':_0x4d2a6f[_0x1282('0x49')]['id']}})[_0x1282('0x45')](handleEntityNotFound(_0x359449,null))['then'](function(_0x1ed80e){if(_0x1ed80e){_0x4d2a6f[_0x1282('0x4e')][_0x1282('0x53')]=_0x1ed80e['id'];_0x4d2a6f['body'][_0x1282('0x54')]=integrations[_0x1282('0x55')](_0x4d2a6f[_0x1282('0x4e')][_0x1282('0x56')],_0x4d2a6f['body'][_0x1282('0x30')]);_0x4d2a6f[_0x1282('0x4e')]['Descriptions']=integrations[_0x1282('0x57')](_0x4d2a6f[_0x1282('0x4e')]['channel'],_0x4d2a6f[_0x1282('0x4e')][_0x1282('0x30')]);return db[_0x1282('0x58')][_0x1282('0x4d')](_0x4d2a6f[_0x1282('0x4e')],{'include':[{'model':db[_0x1282('0x59')],'as':'Subjects'},{'model':db[_0x1282('0x59')],'as':'Descriptions'}]});}return null;})[_0x1282('0x45')](respondWithResult(_0x359449,null))[_0x1282('0x4c')](handleError(_0x359449,null));};exports[_0x1282('0x5a')]=function(_0x2e7f65,_0x470d95,_0x3aa0d4){var _0x2be9bd='';return db[_0x1282('0x2d')][_0x1282('0x52')]({'where':{'id':_0x2e7f65[_0x1282('0x49')]['id']},'attributes':['id',_0x1282('0x5b'),_0x1282('0x5c')]})[_0x1282('0x45')](handleEntityNotFound(_0x470d95,null))[_0x1282('0x45')](function(_0x3f90ea){if(_0x3f90ea){_0x2be9bd=_0x3f90ea['remoteUri'];var _0x32efc0=_0x2be9bd['slice'](-0x1);if(_0x32efc0==='/'){_0x2be9bd=_0x2be9bd[_0x1282('0x5d')](0x0,_0x2be9bd[_0x1282('0x5e')](_0x32efc0));}return rp({'method':'GET','uri':util[_0x1282('0x5f')](_0x1282('0x60'),_0x2be9bd,_0x1282('0x61')),'headers':{'Authorization':util[_0x1282('0x5f')](_0x1282('0x62'),new Buffer(util['format'](_0x1282('0x63'),_0x3f90ea[_0x1282('0x5c')]))['toString'](_0x1282('0x64')))},'json':!![]});}})[_0x1282('0x45')](function(_0x5ef6c9){if(_0x5ef6c9){var _0x124eef=[_0x1282('0x65'),_0x1282('0x66'),_0x1282('0x67'),_0x1282('0x68'),_0x1282('0x1e'),_0x1282('0x69'),_0x1282('0x6a'),'source',_0x1282('0x6b'),'group',_0x1282('0x6c')];_['remove'](_0x5ef6c9,function(_0xa58f6a){return _0x124eef['includes'](_0xa58f6a[_0x1282('0x2b')])||!_0xa58f6a[_0x1282('0x6d')]&&_0xa58f6a[_0x1282('0x30')]!==_0x1282('0x6e')&&_0xa58f6a['type']!=='custom_dropdown';});return{'count':_0x5ef6c9['length'],'rows':_[_0x1282('0x33')](_0x5ef6c9,function(_0x44884e){return{'id':_0x44884e[_0x1282('0x2b')],'name':_0x44884e['label'],'custom':!_0x44884e['default'],'options':_0x44884e[_0x1282('0x6f')]?_['map'](_0x44884e[_0x1282('0x6f')],function(_0x3bfcd4){return{'name':_['capitalize'](_0x3bfcd4),'value':_0x3bfcd4};}):[]};})};}})[_0x1282('0x45')](respondWithResult(_0x470d95,null))['catch'](function(_0x4f8a31){var _0x1d8cf3=_0x2e7f65[_0x1282('0x35')][_0x1282('0x70')]?0x1f4:_0x4f8a31[_0x1282('0x71')]||0x1f4;logger[_0x1282('0x72')](_0x1282('0x73'),'getFields',_0x1d8cf3,JSON[_0x1282('0x74')](_0x4f8a31));delete _0x4f8a31[_0x1282('0x2b')];if(_0x1d8cf3===0x191){_0x1d8cf3=0x190;}_0x470d95[_0x1282('0x1e')](_0x1d8cf3)[_0x1282('0x2c')](_0x2e7f65['query']['test']?{'message':_0x1282('0x75'),'statusCode':_0x4f8a31[_0x1282('0x71')]}:_0x4f8a31);});};
\ No newline at end of file
+var _0xb240=['ticket_type','company','includes','default','custom_text','custom_dropdown','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FreshdeskAccount','includeAll','findAll','show','keys','find','catch','create','body','params','getConfigurations','FreshdeskConfiguration','length','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','requester','subject','agent','description','priority','group','source'];(function(_0x54174c,_0x4b7886){var _0x57ccb0=function(_0x4f0a8e){while(--_0x4f0a8e){_0x54174c['push'](_0x54174c['shift']());}};_0x57ccb0(++_0x4b7886);}(_0xb240,0x7e));var _0x0b24=function(_0x64c864,_0x3edf68){_0x64c864=_0x64c864-0x0;var _0x2adfaf=_0xb240[_0x64c864];return _0x2adfaf;};'use strict';var emlformat=require(_0x0b24('0x0'));var rimraf=require(_0x0b24('0x1'));var zipdir=require(_0x0b24('0x2'));var jsonpatch=require(_0x0b24('0x3'));var rp=require(_0x0b24('0x4'));var moment=require(_0x0b24('0x5'));var BPromise=require(_0x0b24('0x6'));var Mustache=require(_0x0b24('0x7'));var util=require(_0x0b24('0x8'));var path=require('path');var sox=require(_0x0b24('0x9'));var csv=require(_0x0b24('0xa'));var ejs=require(_0x0b24('0xb'));var fs=require('fs');var fs_extra=require(_0x0b24('0xc'));var _=require(_0x0b24('0xd'));var squel=require('squel');var crypto=require(_0x0b24('0xe'));var jsforce=require(_0x0b24('0xf'));var deskjs=require(_0x0b24('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0b24('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0b24('0x12'));var as=require(_0x0b24('0x13'));var hardwareService=require(_0x0b24('0x14'));var logger=require(_0x0b24('0x15'))(_0x0b24('0x16'));var utils=require(_0x0b24('0x17'));var config=require(_0x0b24('0x18'));var licenseUtil=require(_0x0b24('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0b24('0x1a'));function respondWithStatusCode(_0x2381a1,_0x4bb796){_0x4bb796=_0x4bb796||0xcc;return function(_0x385410){if(_0x385410){return _0x2381a1[_0x0b24('0x1b')](_0x4bb796);}return _0x2381a1[_0x0b24('0x1c')](_0x4bb796)[_0x0b24('0x1d')]();};}function respondWithResult(_0x5dc21f,_0x4b60fc){_0x4b60fc=_0x4b60fc||0xc8;return function(_0x5533c0){if(_0x5533c0){return _0x5dc21f['status'](_0x4b60fc)[_0x0b24('0x1e')](_0x5533c0);}};}function respondWithFilteredResult(_0x1aae67,_0x459bb1){return function(_0x5c2ee7){if(_0x5c2ee7){var _0x11e71f=typeof _0x459bb1[_0x0b24('0x1f')]===_0x0b24('0x20')&&typeof _0x459bb1[_0x0b24('0x21')]===_0x0b24('0x20');var _0x1e99ef=_0x5c2ee7['count'];var _0x377fd5=_0x11e71f?0x0:_0x459bb1[_0x0b24('0x1f')];var _0x4a1218=_0x11e71f?_0x5c2ee7[_0x0b24('0x22')]:_0x459bb1['offset']+_0x459bb1['limit'];var _0x2dc67e;if(_0x4a1218>=_0x1e99ef){_0x4a1218=_0x1e99ef;_0x2dc67e=0xc8;}else{_0x2dc67e=0xce;}_0x1aae67[_0x0b24('0x1c')](_0x2dc67e);return _0x1aae67[_0x0b24('0x23')]('Content-Range',_0x377fd5+'-'+_0x4a1218+'/'+_0x1e99ef)[_0x0b24('0x1e')](_0x5c2ee7);}return null;};}function patchUpdates(_0x3c0260){return function(_0x4e6780){try{jsonpatch[_0x0b24('0x24')](_0x4e6780,_0x3c0260,!![]);}catch(_0x187001){return BPromise[_0x0b24('0x25')](_0x187001);}return _0x4e6780[_0x0b24('0x26')]();};}function saveUpdates(_0x46124d,_0x3302e4){return function(_0x466bbf){if(_0x466bbf){return _0x466bbf[_0x0b24('0x27')](_0x46124d)[_0x0b24('0x28')](function(_0x59483c){return _0x59483c;});}return null;};}function removeEntity(_0x55ae1c,_0x1f88cf){return function(_0x3f92ac){if(_0x3f92ac){return _0x3f92ac[_0x0b24('0x29')]()[_0x0b24('0x28')](function(){_0x55ae1c['status'](0xcc)[_0x0b24('0x1d')]();});}};}function handleEntityNotFound(_0x4ef587,_0x1efbfd){return function(_0x150fe1){if(!_0x150fe1){_0x4ef587[_0x0b24('0x1b')](0x194);}return _0x150fe1;};}function handleError(_0x48a06a,_0x3cb461){_0x3cb461=_0x3cb461||0x1f4;return function(_0xb339d5){logger[_0x0b24('0x2a')](_0xb339d5[_0x0b24('0x2b')]);if(_0xb339d5[_0x0b24('0x2c')]){delete _0xb339d5[_0x0b24('0x2c')];}_0x48a06a[_0x0b24('0x1c')](_0x3cb461)[_0x0b24('0x2d')](_0xb339d5);};}exports[_0x0b24('0x2e')]=function(_0x408511,_0xf39f24){var _0x1ab5ee={},_0x1e1425={},_0x1d830b={'count':0x0,'rows':[]};var _0x217cbc=_[_0x0b24('0x2f')](db['FreshdeskAccount'][_0x0b24('0x30')],function(_0x5be1ad){return{'name':_0x5be1ad[_0x0b24('0x31')],'type':_0x5be1ad[_0x0b24('0x32')]['key']};});_0x1e1425[_0x0b24('0x33')]=_[_0x0b24('0x2f')](_0x217cbc,_0x0b24('0x2c'));_0x1e1425[_0x0b24('0x34')]=_['keys'](_0x408511[_0x0b24('0x34')]);_0x1e1425[_0x0b24('0x35')]=_['intersection'](_0x1e1425[_0x0b24('0x33')],_0x1e1425[_0x0b24('0x34')]);_0x1ab5ee[_0x0b24('0x36')]=_[_0x0b24('0x37')](_0x1e1425[_0x0b24('0x33')],qs[_0x0b24('0x38')](_0x408511[_0x0b24('0x34')][_0x0b24('0x38')]));_0x1ab5ee[_0x0b24('0x36')]=_0x1ab5ee[_0x0b24('0x36')]['length']?_0x1ab5ee[_0x0b24('0x36')]:_0x1e1425[_0x0b24('0x33')];if(!_0x408511[_0x0b24('0x34')]['hasOwnProperty'](_0x0b24('0x39'))){_0x1ab5ee[_0x0b24('0x21')]=qs[_0x0b24('0x21')](_0x408511[_0x0b24('0x34')]['limit']);_0x1ab5ee[_0x0b24('0x1f')]=qs[_0x0b24('0x1f')](_0x408511[_0x0b24('0x34')][_0x0b24('0x1f')]);}_0x1ab5ee[_0x0b24('0x3a')]=qs[_0x0b24('0x3b')](_0x408511[_0x0b24('0x34')][_0x0b24('0x3b')]);_0x1ab5ee[_0x0b24('0x3c')]=qs[_0x0b24('0x35')](_[_0x0b24('0x3d')](_0x408511[_0x0b24('0x34')],_0x1e1425[_0x0b24('0x35')]),_0x217cbc);if(_0x408511[_0x0b24('0x34')][_0x0b24('0x3e')]){_0x1ab5ee[_0x0b24('0x3c')]=_[_0x0b24('0x3f')](_0x1ab5ee[_0x0b24('0x3c')],{'$or':_[_0x0b24('0x2f')](_0x217cbc,function(_0x1117e6){if(_0x1117e6[_0x0b24('0x32')]!==_0x0b24('0x40')){var _0x11eba4={};_0x11eba4[_0x1117e6[_0x0b24('0x2c')]]={'$like':'%'+_0x408511['query'][_0x0b24('0x3e')]+'%'};return _0x11eba4;}})});}_0x1ab5ee=_[_0x0b24('0x3f')]({},_0x1ab5ee,_0x408511[_0x0b24('0x41')]);var _0xb5b3e2={'where':_0x1ab5ee[_0x0b24('0x3c')]};return db[_0x0b24('0x42')][_0x0b24('0x22')](_0xb5b3e2)[_0x0b24('0x28')](function(_0x30a437){_0x1d830b[_0x0b24('0x22')]=_0x30a437;if(_0x408511['query'][_0x0b24('0x43')]){_0x1ab5ee['include']=[{'all':!![]}];}return db[_0x0b24('0x42')][_0x0b24('0x44')](_0x1ab5ee);})[_0x0b24('0x28')](function(_0x5a529b){_0x1d830b['rows']=_0x5a529b;return _0x1d830b;})[_0x0b24('0x28')](respondWithFilteredResult(_0xf39f24,_0x1ab5ee))['catch'](handleError(_0xf39f24,null));};exports[_0x0b24('0x45')]=function(_0x360cbb,_0x3416f5){var _0x5153bd={'raw':![],'where':{'id':_0x360cbb['params']['id']}},_0x10f5d6={};_0x10f5d6[_0x0b24('0x33')]=_[_0x0b24('0x46')](db['FreshdeskAccount']['rawAttributes']);_0x10f5d6[_0x0b24('0x34')]=_['keys'](_0x360cbb[_0x0b24('0x34')]);_0x10f5d6[_0x0b24('0x35')]=_[_0x0b24('0x37')](_0x10f5d6[_0x0b24('0x33')],_0x10f5d6[_0x0b24('0x34')]);_0x5153bd[_0x0b24('0x36')]=_[_0x0b24('0x37')](_0x10f5d6['model'],qs[_0x0b24('0x38')](_0x360cbb[_0x0b24('0x34')][_0x0b24('0x38')]));_0x5153bd['attributes']=_0x5153bd[_0x0b24('0x36')]['length']?_0x5153bd[_0x0b24('0x36')]:_0x10f5d6[_0x0b24('0x33')];if(_0x360cbb[_0x0b24('0x34')]['includeAll']){_0x5153bd['include']=[{'all':!![]}];}_0x5153bd=_[_0x0b24('0x3f')]({},_0x5153bd,_0x360cbb[_0x0b24('0x41')]);return db[_0x0b24('0x42')][_0x0b24('0x47')](_0x5153bd)['then'](handleEntityNotFound(_0x3416f5,null))[_0x0b24('0x28')](respondWithResult(_0x3416f5,null))[_0x0b24('0x48')](handleError(_0x3416f5,null));};exports[_0x0b24('0x49')]=function(_0x198988,_0xe34292){return db[_0x0b24('0x42')][_0x0b24('0x49')](_0x198988[_0x0b24('0x4a')],{})[_0x0b24('0x28')](respondWithResult(_0xe34292,0xc9))[_0x0b24('0x48')](handleError(_0xe34292,null));};exports['update']=function(_0xbf9e7f,_0x14a138){if(_0xbf9e7f['body']['id']){delete _0xbf9e7f[_0x0b24('0x4a')]['id'];}return db[_0x0b24('0x42')]['find']({'where':{'id':_0xbf9e7f[_0x0b24('0x4b')]['id']}})['then'](handleEntityNotFound(_0x14a138,null))['then'](saveUpdates(_0xbf9e7f[_0x0b24('0x4a')],null))['then'](respondWithResult(_0x14a138,null))[_0x0b24('0x48')](handleError(_0x14a138,null));};exports[_0x0b24('0x29')]=function(_0x132db6,_0x5a9762){return db[_0x0b24('0x42')][_0x0b24('0x47')]({'where':{'id':_0x132db6[_0x0b24('0x4b')]['id']}})[_0x0b24('0x28')](handleEntityNotFound(_0x5a9762,null))['then'](removeEntity(_0x5a9762,null))[_0x0b24('0x48')](handleError(_0x5a9762,null));};exports[_0x0b24('0x4c')]=function(_0x35dc4d,_0x30d01f,_0x16e374){var _0x2c1531={};var _0x47b227={};var _0x1f90be;var _0xcae01c;return db[_0x0b24('0x42')]['findOne']({'where':{'id':_0x35dc4d[_0x0b24('0x4b')]['id']}})['then'](handleEntityNotFound(_0x30d01f,null))[_0x0b24('0x28')](function(_0x1142ed){if(_0x1142ed){_0x1f90be=_0x1142ed;_0x47b227[_0x0b24('0x33')]=_[_0x0b24('0x46')](db[_0x0b24('0x4d')]['rawAttributes']);_0x47b227['query']=_[_0x0b24('0x46')](_0x35dc4d[_0x0b24('0x34')]);_0x47b227[_0x0b24('0x35')]=_['intersection'](_0x47b227[_0x0b24('0x33')],_0x47b227[_0x0b24('0x34')]);_0x2c1531[_0x0b24('0x36')]=_[_0x0b24('0x37')](_0x47b227[_0x0b24('0x33')],qs['fields'](_0x35dc4d[_0x0b24('0x34')][_0x0b24('0x38')]));_0x2c1531[_0x0b24('0x36')]=_0x2c1531['attributes'][_0x0b24('0x4e')]?_0x2c1531[_0x0b24('0x36')]:_0x47b227[_0x0b24('0x33')];_0x2c1531[_0x0b24('0x3a')]=qs[_0x0b24('0x3b')](_0x35dc4d[_0x0b24('0x34')]['sort']);_0x2c1531[_0x0b24('0x3c')]=qs['filters'](_[_0x0b24('0x3d')](_0x35dc4d[_0x0b24('0x34')],_0x47b227['filters']));if(_0x35dc4d['query'][_0x0b24('0x3e')]){_0x2c1531[_0x0b24('0x3c')]=_['merge'](_0x2c1531[_0x0b24('0x3c')],{'$or':_['map'](_0x2c1531[_0x0b24('0x36')],function(_0x51456a){var _0x3b1ea5={};_0x3b1ea5[_0x51456a]={'$like':'%'+_0x35dc4d[_0x0b24('0x34')]['filter']+'%'};return _0x3b1ea5;})});}_0x2c1531=_[_0x0b24('0x3f')]({},_0x2c1531,_0x35dc4d[_0x0b24('0x41')]);return _0x1f90be[_0x0b24('0x4c')](_0x2c1531);}})[_0x0b24('0x28')](function(_0x62ec5d){if(_0x62ec5d){_0xcae01c=_0x62ec5d[_0x0b24('0x4e')];if(!_0x35dc4d['query']['hasOwnProperty'](_0x0b24('0x39'))){_0x2c1531[_0x0b24('0x21')]=qs[_0x0b24('0x21')](_0x35dc4d[_0x0b24('0x34')][_0x0b24('0x21')]);_0x2c1531[_0x0b24('0x1f')]=qs[_0x0b24('0x1f')](_0x35dc4d['query'][_0x0b24('0x1f')]);}return _0x1f90be[_0x0b24('0x4c')](_0x2c1531);}})[_0x0b24('0x28')](function(_0x2cabb8){if(_0x2cabb8){return _0x2cabb8?{'count':_0xcae01c,'rows':_0x2cabb8}:null;}})['then'](respondWithResult(_0x30d01f,null))['catch'](handleError(_0x30d01f,null));};exports[_0x0b24('0x4f')]=function(_0x28ebbe,_0x1c6325,_0x3b6171){if(_0x28ebbe[_0x0b24('0x4a')]['id']){delete _0x28ebbe[_0x0b24('0x4a')]['id'];}return db[_0x0b24('0x42')][_0x0b24('0x50')]({'where':{'id':_0x28ebbe[_0x0b24('0x4b')]['id']}})[_0x0b24('0x28')](handleEntityNotFound(_0x1c6325,null))[_0x0b24('0x28')](function(_0x49b9ac){if(_0x49b9ac){_0x28ebbe[_0x0b24('0x4a')][_0x0b24('0x51')]=_0x49b9ac['id'];_0x28ebbe[_0x0b24('0x4a')][_0x0b24('0x52')]=integrations[_0x0b24('0x53')](_0x28ebbe[_0x0b24('0x4a')][_0x0b24('0x54')],_0x28ebbe[_0x0b24('0x4a')]['type']);_0x28ebbe[_0x0b24('0x4a')]['Descriptions']=integrations[_0x0b24('0x55')](_0x28ebbe['body']['channel'],_0x28ebbe[_0x0b24('0x4a')][_0x0b24('0x32')]);return db['FreshdeskConfiguration']['create'](_0x28ebbe[_0x0b24('0x4a')],{'include':[{'model':db[_0x0b24('0x56')],'as':_0x0b24('0x52')},{'model':db[_0x0b24('0x56')],'as':_0x0b24('0x57')}]});}return null;})['then'](respondWithResult(_0x1c6325,null))[_0x0b24('0x48')](handleError(_0x1c6325,null));};exports[_0x0b24('0x58')]=function(_0x5dd846,_0x5c0096,_0x348be5){var _0x5b6b51='';return db[_0x0b24('0x42')][_0x0b24('0x50')]({'where':{'id':_0x5dd846[_0x0b24('0x4b')]['id']},'attributes':['id',_0x0b24('0x59'),_0x0b24('0x5a')]})['then'](handleEntityNotFound(_0x5c0096,null))[_0x0b24('0x28')](function(_0x4b48ae){if(_0x4b48ae){_0x5b6b51=_0x4b48ae['remoteUri'];var _0x120e04=_0x5b6b51['slice'](-0x1);if(_0x120e04==='/'){_0x5b6b51=_0x5b6b51['substring'](0x0,_0x5b6b51[_0x0b24('0x5b')](_0x120e04));}return rp({'method':_0x0b24('0x5c'),'uri':util[_0x0b24('0x5d')]('%s/%s',_0x5b6b51,_0x0b24('0x5e')),'headers':{'Authorization':util[_0x0b24('0x5d')](_0x0b24('0x5f'),new Buffer(util[_0x0b24('0x5d')](_0x0b24('0x60'),_0x4b48ae[_0x0b24('0x5a')]))['toString']('base64'))},'json':!![]});}})[_0x0b24('0x28')](function(_0x305a70){if(_0x305a70){var _0x5d1bd4=[_0x0b24('0x61'),_0x0b24('0x62'),_0x0b24('0x63'),_0x0b24('0x64'),_0x0b24('0x1c'),_0x0b24('0x65'),_0x0b24('0x66'),_0x0b24('0x67'),_0x0b24('0x68'),_0x0b24('0x66'),_0x0b24('0x69')];_['remove'](_0x305a70,function(_0x372eca){return _0x5d1bd4[_0x0b24('0x6a')](_0x372eca[_0x0b24('0x2c')])||!_0x372eca[_0x0b24('0x6b')]&&_0x372eca[_0x0b24('0x32')]!==_0x0b24('0x6c')&&_0x372eca['type']!==_0x0b24('0x6d');});return{'count':_0x305a70['length'],'rows':_[_0x0b24('0x2f')](_0x305a70,function(_0x26bee0){return{'id':_0x26bee0[_0x0b24('0x2c')],'name':_0x26bee0['label'],'custom':!_0x26bee0['default'],'options':_0x26bee0[_0x0b24('0x6e')]?_['map'](_0x26bee0[_0x0b24('0x6e')],function(_0x2dc9a8){return{'name':_['capitalize'](_0x2dc9a8),'value':_0x2dc9a8};}):[]};})};}})[_0x0b24('0x28')](respondWithResult(_0x5c0096,null))['catch'](function(_0x5456bf){var _0x472dc7=_0x5dd846[_0x0b24('0x34')][_0x0b24('0x6f')]?0x1f4:_0x5456bf[_0x0b24('0x70')]||0x1f4;logger[_0x0b24('0x2a')](_0x0b24('0x71'),'getFields',_0x472dc7,JSON['stringify'](_0x5456bf));delete _0x5456bf[_0x0b24('0x2c')];if(_0x472dc7===0x191){_0x472dc7=0x190;}_0x5c0096[_0x0b24('0x1c')](_0x472dc7)['send'](_0x5dd846[_0x0b24('0x34')][_0x0b24('0x6f')]?{'message':_0x0b24('0x72'),'statusCode':_0x5456bf['statusCode']}:_0x5456bf);});};
\ No newline at end of file
index 0a9d804..5f59247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ab=['bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','util','../../config/logger','moment'];(function(_0x286030,_0x1f384f){var _0x95a5b2=function(_0x42c056){while(--_0x42c056){_0x286030['push'](_0x286030['shift']());}};_0x95a5b2(++_0x1f384f);}(_0x80ab,0x1d6));var _0xb80a=function(_0xfb1baa,_0x2658fd){_0xfb1baa=_0xfb1baa-0x0;var _0xe61045=_0x80ab[_0xfb1baa];return _0xe61045;};'use strict';var _=require('lodash');var util=require(_0xb80a('0x0'));var logger=require(_0xb80a('0x1'))('api');var moment=require(_0xb80a('0x2'));var BPromise=require(_0xb80a('0x3'));var rp=require(_0xb80a('0x4'));var fs=require('fs');var path=require(_0xb80a('0x5'));var rimraf=require(_0xb80a('0x6'));var config=require(_0xb80a('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xb80a('0x8'));module[_0xb80a('0x9')]=function(_0x4704b4,_0x3baaa6){return _0x4704b4[_0xb80a('0xa')]('FreshdeskAccount',attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3aa7=['../../components/integrations/configuration','exports','define','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x1b15f6,_0x1aeda1){var _0x5f1c12=function(_0x3ca7b3){while(--_0x3ca7b3){_0x1b15f6['push'](_0x1b15f6['shift']());}};_0x5f1c12(++_0x1aeda1);}(_0x3aa7,0x66));var _0x73aa=function(_0x4b60b2,_0x363a55){_0x4b60b2=_0x4b60b2-0x0;var _0x429538=_0x3aa7[_0x4b60b2];return _0x429538;};'use strict';var _=require(_0x73aa('0x0'));var util=require(_0x73aa('0x1'));var logger=require(_0x73aa('0x2'))(_0x73aa('0x3'));var moment=require(_0x73aa('0x4'));var BPromise=require(_0x73aa('0x5'));var rp=require(_0x73aa('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x73aa('0x7'));var config=require(_0x73aa('0x8'));var attributes=require(_0x73aa('0x9'));var integrations=require(_0x73aa('0xa'));module[_0x73aa('0xb')]=function(_0x35c1a0,_0x392f66){return _0x35c1a0[_0x73aa('0xc')]('FreshdeskAccount',attributes,{'tableName':_0x73aa('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e104cd..f7a1eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af7=['FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowFreshdeskAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','request','then','info'];(function(_0x23730a,_0x5ca67b){var _0x275135=function(_0x3a4c45){while(--_0x3a4c45){_0x23730a['push'](_0x23730a['shift']());}};_0x275135(++_0x5ca67b);}(_0x4af7,0x104));var _0x74af=function(_0x1057a3,_0x28d9b7){_0x1057a3=_0x1057a3-0x0;var _0x131cdb=_0x4af7[_0x1057a3];return _0x131cdb;};'use strict';var _=require(_0x74af('0x0'));var util=require(_0x74af('0x1'));var moment=require(_0x74af('0x2'));var BPromise=require(_0x74af('0x3'));var rs=require(_0x74af('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x74af('0x5'))['db'];var utils=require(_0x74af('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x74af('0x7'));var client=jayson[_0x74af('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x296c54,_0x4382ef,_0x309012){return new BPromise(function(_0x164705,_0x3c3b3b){return client[_0x74af('0x9')](_0x296c54,_0x309012)[_0x74af('0xa')](function(_0x3a17ea){logger[_0x74af('0xb')](_0x74af('0xc'),_0x4382ef,_0x74af('0xd'));logger[_0x74af('0xe')](_0x74af('0xf'),_0x4382ef,_0x74af('0xd'),JSON['stringify'](_0x3a17ea));if(_0x3a17ea['error']){if(_0x3a17ea[_0x74af('0x10')][_0x74af('0x11')]===0x1f4){logger['error'](_0x74af('0xc'),_0x4382ef,_0x3a17ea['error'][_0x74af('0x12')]);return _0x3c3b3b(_0x3a17ea['error'][_0x74af('0x12')]);}logger[_0x74af('0x10')](_0x74af('0xc'),_0x4382ef,_0x3a17ea[_0x74af('0x10')][_0x74af('0x12')]);return _0x164705(_0x3a17ea['error']['message']);}else{logger[_0x74af('0xb')]('FreshdeskAccount,\x20%s,\x20%s',_0x4382ef,_0x74af('0xd'));_0x164705(_0x3a17ea['result'][_0x74af('0x12')]);}})[_0x74af('0x13')](function(_0x36d0d6){logger['error'](_0x74af('0xc'),_0x4382ef,_0x36d0d6);_0x3c3b3b(_0x36d0d6);});});}exports[_0x74af('0x14')]=function(_0x527d22){var _0x3a466d=this;return new Promise(function(_0x5bb1df,_0x3f5c8a){return db[_0x74af('0x15')][_0x74af('0x16')]({'raw':_0x527d22['options']?_0x527d22[_0x74af('0x17')][_0x74af('0x18')]===undefined?!![]:![]:!![],'where':_0x527d22[_0x74af('0x17')]?_0x527d22[_0x74af('0x17')][_0x74af('0x19')]||null:null,'attributes':_0x527d22[_0x74af('0x17')]?_0x527d22[_0x74af('0x17')][_0x74af('0x1a')]||null:null,'limit':_0x527d22[_0x74af('0x17')]?_0x527d22[_0x74af('0x17')][_0x74af('0x1b')]||null:null,'include':_0x527d22[_0x74af('0x17')]?_0x527d22[_0x74af('0x17')][_0x74af('0x1c')]?_[_0x74af('0x1d')](_0x527d22['options'][_0x74af('0x1c')],function(_0x45ef15){return{'model':db[_0x45ef15[_0x74af('0x1e')]],'as':_0x45ef15['as'],'attributes':_0x45ef15[_0x74af('0x1a')],'include':_0x45ef15[_0x74af('0x1c')]?_[_0x74af('0x1d')](_0x45ef15[_0x74af('0x1c')],function(_0x14d842){return{'model':db[_0x14d842['model']],'as':_0x14d842['as'],'attributes':_0x14d842[_0x74af('0x1a')],'include':_0x14d842['include']?_['map'](_0x14d842[_0x74af('0x1c')],function(_0xc47ec3){return{'model':db[_0xc47ec3[_0x74af('0x1e')]],'as':_0xc47ec3['as'],'attributes':_0xc47ec3[_0x74af('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x74af('0xa')](function(_0x38c341){logger['info'](_0x74af('0x14'),_0x527d22);logger[_0x74af('0xe')]('GetFreshdeskAccount',_0x527d22,JSON[_0x74af('0x1f')](_0x38c341));_0x5bb1df(_0x38c341);})[_0x74af('0x13')](function(_0x2c32c1){logger[_0x74af('0x10')](_0x74af('0x14'),_0x2c32c1['message'],_0x527d22);_0x3f5c8a(_0x3a466d['error'](0x1f4,_0x2c32c1[_0x74af('0x12')]));});});};exports[_0x74af('0x20')]=function(_0x37a5c9){var _0x54909c=this;return new Promise(function(_0x2b5d1a,_0x2d2eca){return db[_0x74af('0x15')][_0x74af('0x21')]({'raw':_0x37a5c9[_0x74af('0x17')]?_0x37a5c9[_0x74af('0x17')][_0x74af('0x18')]===undefined?!![]:![]:!![],'where':_0x37a5c9['options']?_0x37a5c9[_0x74af('0x17')][_0x74af('0x19')]||null:null,'attributes':_0x37a5c9['options']?_0x37a5c9[_0x74af('0x17')][_0x74af('0x1a')]||null:null,'include':_0x37a5c9[_0x74af('0x17')]?_0x37a5c9[_0x74af('0x17')][_0x74af('0x1c')]?_['map'](_0x37a5c9['options'][_0x74af('0x1c')],function(_0x298293){return{'model':db[_0x298293[_0x74af('0x1e')]],'as':_0x298293['as'],'attributes':_0x298293[_0x74af('0x1a')],'include':_0x298293[_0x74af('0x1c')]?_['map'](_0x298293[_0x74af('0x1c')],function(_0x1c899e){return{'model':db[_0x1c899e['model']],'as':_0x1c899e['as'],'attributes':_0x1c899e[_0x74af('0x1a')],'include':_0x1c899e[_0x74af('0x1c')]?_[_0x74af('0x1d')](_0x1c899e[_0x74af('0x1c')],function(_0xe9c126){return{'model':db[_0xe9c126[_0x74af('0x1e')]],'as':_0xe9c126['as'],'attributes':_0xe9c126['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x48c0b5){logger['info'](_0x74af('0x20'),_0x37a5c9);logger[_0x74af('0xe')](_0x74af('0x20'),_0x37a5c9,JSON[_0x74af('0x1f')](_0x48c0b5));_0x2b5d1a(_0x48c0b5);})[_0x74af('0x13')](function(_0x293fd5){logger['error'](_0x74af('0x20'),_0x293fd5[_0x74af('0x12')],_0x37a5c9);_0x2d2eca(_0x54909c[_0x74af('0x10')](0x1f4,_0x293fd5[_0x74af('0x12')]));});});};
\ No newline at end of file
+var _0x8230=['limit','include','map','model','debug','stringify','find','ShowFreshdeskAccount','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','code','FreshdeskAccount,\x20%s,\x20%s','message','info','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes'];(function(_0x270adf,_0x1daaa3){var _0x29eda9=function(_0x40afec){while(--_0x40afec){_0x270adf['push'](_0x270adf['shift']());}};_0x29eda9(++_0x1daaa3);}(_0x8230,0x143));var _0x0823=function(_0x3b0f1c,_0x3ed2b1){_0x3b0f1c=_0x3b0f1c-0x0;var _0x5253a9=_0x8230[_0x3b0f1c];return _0x5253a9;};'use strict';var _=require(_0x0823('0x0'));var util=require('util');var moment=require(_0x0823('0x1'));var BPromise=require(_0x0823('0x2'));var rs=require(_0x0823('0x3'));var fs=require('fs');var Redis=require(_0x0823('0x4'));var db=require(_0x0823('0x5'))['db'];var utils=require(_0x0823('0x6'));var logger=require(_0x0823('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0823('0x8')][_0x0823('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c8c92,_0x54865d,_0x4933f5){return new BPromise(function(_0x3a8664,_0x411ce5){return client[_0x0823('0xa')](_0x5c8c92,_0x4933f5)[_0x0823('0xb')](function(_0x393838){logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x54865d,_0x0823('0xc'));logger['debug'](_0x0823('0xd'),_0x54865d,_0x0823('0xc'),JSON['stringify'](_0x393838));if(_0x393838[_0x0823('0xe')]){if(_0x393838[_0x0823('0xe')][_0x0823('0xf')]===0x1f4){logger[_0x0823('0xe')](_0x0823('0x10'),_0x54865d,_0x393838[_0x0823('0xe')][_0x0823('0x11')]);return _0x411ce5(_0x393838[_0x0823('0xe')][_0x0823('0x11')]);}logger[_0x0823('0xe')](_0x0823('0x10'),_0x54865d,_0x393838[_0x0823('0xe')][_0x0823('0x11')]);return _0x3a8664(_0x393838['error'][_0x0823('0x11')]);}else{logger[_0x0823('0x12')](_0x0823('0x10'),_0x54865d,_0x0823('0xc'));_0x3a8664(_0x393838['result']['message']);}})[_0x0823('0x13')](function(_0x2d06fb){logger[_0x0823('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x54865d,_0x2d06fb);_0x411ce5(_0x2d06fb);});});}exports[_0x0823('0x14')]=function(_0x141879){var _0x3c2c73=this;return new Promise(function(_0x1ce94b,_0x24eb99){return db[_0x0823('0x15')][_0x0823('0x16')]({'raw':_0x141879[_0x0823('0x17')]?_0x141879[_0x0823('0x17')][_0x0823('0x18')]===undefined?!![]:![]:!![],'where':_0x141879[_0x0823('0x17')]?_0x141879['options'][_0x0823('0x19')]||null:null,'attributes':_0x141879[_0x0823('0x17')]?_0x141879['options'][_0x0823('0x1a')]||null:null,'limit':_0x141879[_0x0823('0x17')]?_0x141879[_0x0823('0x17')][_0x0823('0x1b')]||null:null,'include':_0x141879['options']?_0x141879[_0x0823('0x17')][_0x0823('0x1c')]?_[_0x0823('0x1d')](_0x141879['options']['include'],function(_0x2d1b8b){return{'model':db[_0x2d1b8b[_0x0823('0x1e')]],'as':_0x2d1b8b['as'],'attributes':_0x2d1b8b[_0x0823('0x1a')],'include':_0x2d1b8b[_0x0823('0x1c')]?_[_0x0823('0x1d')](_0x2d1b8b['include'],function(_0x598386){return{'model':db[_0x598386[_0x0823('0x1e')]],'as':_0x598386['as'],'attributes':_0x598386['attributes'],'include':_0x598386[_0x0823('0x1c')]?_['map'](_0x598386[_0x0823('0x1c')],function(_0x2262ad){return{'model':db[_0x2262ad[_0x0823('0x1e')]],'as':_0x2262ad['as'],'attributes':_0x2262ad[_0x0823('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0823('0xb')](function(_0x245c81){logger['info'](_0x0823('0x14'),_0x141879);logger[_0x0823('0x1f')](_0x0823('0x14'),_0x141879,JSON[_0x0823('0x20')](_0x245c81));_0x1ce94b(_0x245c81);})[_0x0823('0x13')](function(_0x2c3728){logger[_0x0823('0xe')](_0x0823('0x14'),_0x2c3728[_0x0823('0x11')],_0x141879);_0x24eb99(_0x3c2c73[_0x0823('0xe')](0x1f4,_0x2c3728[_0x0823('0x11')]));});});};exports['ShowFreshdeskAccount']=function(_0x31d725){var _0x3e39dd=this;return new Promise(function(_0x9851ef,_0x40c570){return db[_0x0823('0x15')][_0x0823('0x21')]({'raw':_0x31d725[_0x0823('0x17')]?_0x31d725['options'][_0x0823('0x18')]===undefined?!![]:![]:!![],'where':_0x31d725['options']?_0x31d725['options']['where']||null:null,'attributes':_0x31d725[_0x0823('0x17')]?_0x31d725[_0x0823('0x17')][_0x0823('0x1a')]||null:null,'include':_0x31d725[_0x0823('0x17')]?_0x31d725[_0x0823('0x17')]['include']?_['map'](_0x31d725[_0x0823('0x17')][_0x0823('0x1c')],function(_0x590e63){return{'model':db[_0x590e63['model']],'as':_0x590e63['as'],'attributes':_0x590e63[_0x0823('0x1a')],'include':_0x590e63['include']?_['map'](_0x590e63['include'],function(_0x2e5ba6){return{'model':db[_0x2e5ba6['model']],'as':_0x2e5ba6['as'],'attributes':_0x2e5ba6[_0x0823('0x1a')],'include':_0x2e5ba6[_0x0823('0x1c')]?_[_0x0823('0x1d')](_0x2e5ba6[_0x0823('0x1c')],function(_0x74b3f9){return{'model':db[_0x74b3f9[_0x0823('0x1e')]],'as':_0x74b3f9['as'],'attributes':_0x74b3f9[_0x0823('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0823('0xb')](function(_0x23c4b0){logger[_0x0823('0x12')](_0x0823('0x22'),_0x31d725);logger[_0x0823('0x1f')]('ShowFreshdeskAccount',_0x31d725,JSON[_0x0823('0x20')](_0x23c4b0));_0x9851ef(_0x23c4b0);})[_0x0823('0x13')](function(_0xbcb921){logger['error']('ShowFreshdeskAccount',_0xbcb921[_0x0823('0x11')],_0x31d725);_0x40c570(_0x3e39dd[_0x0823('0xe')](0x1f4,_0xbcb921[_0x0823('0x11')]));});});};
\ No newline at end of file
index 669c79a..b0f2451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd3=['isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','/:id/tags','setTags','put','update','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','get'];(function(_0x4706ae,_0x562816){var _0x3f6938=function(_0x263ee7){while(--_0x263ee7){_0x4706ae['push'](_0x4706ae['shift']());}};_0x3f6938(++_0x562816);}(_0xddd3,0x16e));var _0x3ddd=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xddd3[_0xae7c2f];return _0x5d7001;};'use strict';var multer=require(_0x3ddd('0x0'));var util=require('util');var path=require(_0x3ddd('0x1'));var timeout=require(_0x3ddd('0x2'));var express=require('express');var router=express[_0x3ddd('0x3')]();var fs_extra=require(_0x3ddd('0x4'));var auth=require(_0x3ddd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3ddd('0x6'));var controller=require(_0x3ddd('0x7'));router[_0x3ddd('0x8')]('/',auth[_0x3ddd('0x9')](),controller[_0x3ddd('0xa')]);router[_0x3ddd('0x8')](_0x3ddd('0xb'),auth[_0x3ddd('0x9')](),controller['show']);router[_0x3ddd('0x8')](_0x3ddd('0xc'),auth[_0x3ddd('0x9')](),controller[_0x3ddd('0xd')]);router[_0x3ddd('0x8')](_0x3ddd('0xe'),auth[_0x3ddd('0x9')](),controller[_0x3ddd('0xf')]);router[_0x3ddd('0x8')](_0x3ddd('0x10'),auth[_0x3ddd('0x9')](),controller[_0x3ddd('0x11')]);router[_0x3ddd('0x8')]('/:id/tags',auth['isAuthenticated'](),controller['getTags']);router[_0x3ddd('0x12')]('/',auth[_0x3ddd('0x9')](),controller[_0x3ddd('0x13')]);router[_0x3ddd('0x12')](_0x3ddd('0x14'),auth[_0x3ddd('0x9')](),controller[_0x3ddd('0x15')]);router[_0x3ddd('0x16')](_0x3ddd('0xb'),auth[_0x3ddd('0x9')](),controller[_0x3ddd('0x17')]);router['delete'](_0x3ddd('0xb'),auth[_0x3ddd('0x9')](),controller[_0x3ddd('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x7ce3=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','isAuthenticated','get','/:id','show','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x7ce3,0x163));var _0x37ce=function(_0x301773,_0x47130d){_0x301773=_0x301773-0x0;var _0x2cbe08=_0x7ce3[_0x301773];return _0x2cbe08;};'use strict';var multer=require(_0x37ce('0x0'));var util=require(_0x37ce('0x1'));var path=require(_0x37ce('0x2'));var timeout=require(_0x37ce('0x3'));var express=require(_0x37ce('0x4'));var router=express[_0x37ce('0x5')]();var fs_extra=require(_0x37ce('0x6'));var auth=require(_0x37ce('0x7'));var interaction=require(_0x37ce('0x8'));var config=require('../../config/environment');var controller=require(_0x37ce('0x9'));router['get']('/',auth[_0x37ce('0xa')](),controller['index']);router[_0x37ce('0xb')](_0x37ce('0xc'),auth[_0x37ce('0xa')](),controller[_0x37ce('0xd')]);router[_0x37ce('0xb')]('/:id/fields',auth['isAuthenticated'](),controller[_0x37ce('0xe')]);router[_0x37ce('0xb')](_0x37ce('0xf'),auth[_0x37ce('0xa')](),controller[_0x37ce('0x10')]);router[_0x37ce('0xb')]('/:id/descriptions',auth[_0x37ce('0xa')](),controller[_0x37ce('0x11')]);router[_0x37ce('0xb')](_0x37ce('0x12'),auth[_0x37ce('0xa')](),controller[_0x37ce('0x13')]);router[_0x37ce('0x14')]('/',auth[_0x37ce('0xa')](),controller[_0x37ce('0x15')]);router[_0x37ce('0x14')]('/:id/tags',auth[_0x37ce('0xa')](),controller[_0x37ce('0x16')]);router[_0x37ce('0x17')](_0x37ce('0xc'),auth[_0x37ce('0xa')](),controller[_0x37ce('0x18')]);router['delete'](_0x37ce('0xc'),auth[_0x37ce('0xa')](),controller[_0x37ce('0x19')]);module[_0x37ce('0x1a')]=router;
\ No newline at end of file
index 8351093..eb039fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x595b=['STRING','sequelize','exports'];(function(_0x2825e4,_0x2dea1f){var _0x1e9d55=function(_0x47ccf6){while(--_0x47ccf6){_0x2825e4['push'](_0x2825e4['shift']());}};_0x1e9d55(++_0x2dea1f);}(_0x595b,0x1a2));var _0xb595=function(_0x17c02c,_0x256703){_0x17c02c=_0x17c02c-0x0;var _0x249c53=_0x595b[_0x17c02c];return _0x249c53;};'use strict';var Sequelize=require(_0xb595('0x0'));module[_0xb595('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb595('0x2')]}};
\ No newline at end of file
+var _0xbf0b=['sequelize','exports','STRING'];(function(_0x4f24d1,_0x4b3b01){var _0x4e7fa8=function(_0xcbe6ae){while(--_0xcbe6ae){_0x4f24d1['push'](_0x4f24d1['shift']());}};_0x4e7fa8(++_0x4b3b01);}(_0xbf0b,0x144));var _0xbbf0=function(_0x546778,_0x5a5dfb){_0x546778=_0x546778-0x0;var _0x16b445=_0xbf0b[_0x546778];return _0x16b445;};'use strict';var Sequelize=require(_0xbbf0('0x0'));module[_0xbbf0('0x1')]={'name':{'type':Sequelize[_0xbbf0('0x2')]},'description':{'type':Sequelize[_0xbbf0('0x2')]}};
\ No newline at end of file
index e116c59..0b8fd39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa1a=['rawAttributes','type','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','keys','filters','length','include','find','create','body','getFields','pick','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','FreshdeskConfiguration'];(function(_0x3472c1,_0x2af15b){var _0x1d0cf7=function(_0x661b4a){while(--_0x661b4a){_0x3472c1['push'](_0x3472c1['shift']());}};_0x1d0cf7(++_0x2af15b);}(_0xaa1a,0x7f));var _0xaaa1=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xaa1a[_0x3d42d8];return _0x27fc41;};'use strict';var emlformat=require(_0xaaa1('0x0'));var rimraf=require(_0xaaa1('0x1'));var zipdir=require(_0xaaa1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaaa1('0x3'));var moment=require(_0xaaa1('0x4'));var BPromise=require(_0xaaa1('0x5'));var Mustache=require(_0xaaa1('0x6'));var util=require(_0xaaa1('0x7'));var path=require(_0xaaa1('0x8'));var sox=require(_0xaaa1('0x9'));var csv=require(_0xaaa1('0xa'));var ejs=require(_0xaaa1('0xb'));var fs=require('fs');var fs_extra=require(_0xaaa1('0xc'));var _=require(_0xaaa1('0xd'));var squel=require(_0xaaa1('0xe'));var crypto=require(_0xaaa1('0xf'));var jsforce=require(_0xaaa1('0x10'));var deskjs=require(_0xaaa1('0x11'));var toCsv=require(_0xaaa1('0xa'));var querystring=require('querystring');var Papa=require(_0xaaa1('0x12'));var Redis=require(_0xaaa1('0x13'));var authService=require(_0xaaa1('0x14'));var qs=require(_0xaaa1('0x15'));var as=require(_0xaaa1('0x16'));var hardwareService=require(_0xaaa1('0x17'));var logger=require(_0xaaa1('0x18'))(_0xaaa1('0x19'));var utils=require(_0xaaa1('0x1a'));var config=require(_0xaaa1('0x1b'));var licenseUtil=require(_0xaaa1('0x1c'));var db=require(_0xaaa1('0x1d'))['db'];function respondWithStatusCode(_0x15722a,_0x315b21){_0x315b21=_0x315b21||0xcc;return function(_0x1aaa77){if(_0x1aaa77){return _0x15722a['sendStatus'](_0x315b21);}return _0x15722a[_0xaaa1('0x1e')](_0x315b21)['end']();};}function respondWithResult(_0x530472,_0x397989){_0x397989=_0x397989||0xc8;return function(_0x712dba){if(_0x712dba){return _0x530472[_0xaaa1('0x1e')](_0x397989)[_0xaaa1('0x1f')](_0x712dba);}};}function respondWithFilteredResult(_0x116233,_0x25b6f9){return function(_0x55e038){if(_0x55e038){var _0x3afabc=typeof _0x25b6f9[_0xaaa1('0x20')]===_0xaaa1('0x21')&&typeof _0x25b6f9[_0xaaa1('0x22')]===_0xaaa1('0x21');var _0x200638=_0x55e038[_0xaaa1('0x23')];var _0x210ef5=_0x3afabc?0x0:_0x25b6f9[_0xaaa1('0x20')];var _0x15e1e3=_0x3afabc?_0x55e038[_0xaaa1('0x23')]:_0x25b6f9[_0xaaa1('0x20')]+_0x25b6f9[_0xaaa1('0x22')];var _0x39281d;if(_0x15e1e3>=_0x200638){_0x15e1e3=_0x200638;_0x39281d=0xc8;}else{_0x39281d=0xce;}_0x116233['status'](_0x39281d);return _0x116233[_0xaaa1('0x24')](_0xaaa1('0x25'),_0x210ef5+'-'+_0x15e1e3+'/'+_0x200638)['json'](_0x55e038);}return null;};}function patchUpdates(_0x36d00f){return function(_0x13e80f){try{jsonpatch[_0xaaa1('0x26')](_0x13e80f,_0x36d00f,!![]);}catch(_0x2d1b6b){return BPromise[_0xaaa1('0x27')](_0x2d1b6b);}return _0x13e80f[_0xaaa1('0x28')]();};}function saveUpdates(_0x3f2d53,_0x161d9a){return function(_0x2c776c){if(_0x2c776c){return _0x2c776c[_0xaaa1('0x29')](_0x3f2d53)[_0xaaa1('0x2a')](function(_0x13e0cd){return _0x13e0cd;});}return null;};}function removeEntity(_0x1f36e2,_0x198510){return function(_0x587506){if(_0x587506){return _0x587506[_0xaaa1('0x2b')]()[_0xaaa1('0x2a')](function(){_0x1f36e2[_0xaaa1('0x1e')](0xcc)[_0xaaa1('0x2c')]();});}};}function handleEntityNotFound(_0x14e526,_0x5ae3ee){return function(_0x5b3a99){if(!_0x5b3a99){_0x14e526[_0xaaa1('0x2d')](0x194);}return _0x5b3a99;};}function handleError(_0x44b533,_0x2c3d1a){_0x2c3d1a=_0x2c3d1a||0x1f4;return function(_0x275299){logger[_0xaaa1('0x2e')](_0x275299[_0xaaa1('0x2f')]);if(_0x275299['name']){delete _0x275299[_0xaaa1('0x30')];}_0x44b533[_0xaaa1('0x1e')](_0x2c3d1a)[_0xaaa1('0x31')](_0x275299);};}exports[_0xaaa1('0x32')]=function(_0x335d08,_0x8a8d37){var _0x125657={},_0x3315ad={},_0x30a32d={'count':0x0,'rows':[]};var _0x3ce633=_[_0xaaa1('0x33')](db[_0xaaa1('0x34')][_0xaaa1('0x35')],function(_0x365554){return{'name':_0x365554['fieldName'],'type':_0x365554[_0xaaa1('0x36')]['key']};});_0x3315ad['model']=_[_0xaaa1('0x33')](_0x3ce633,'name');_0x3315ad[_0xaaa1('0x37')]=_['keys'](_0x335d08['query']);_0x3315ad['filters']=_[_0xaaa1('0x38')](_0x3315ad[_0xaaa1('0x39')],_0x3315ad['query']);_0x125657[_0xaaa1('0x3a')]=_[_0xaaa1('0x38')](_0x3315ad[_0xaaa1('0x39')],qs[_0xaaa1('0x3b')](_0x335d08[_0xaaa1('0x37')][_0xaaa1('0x3b')]));_0x125657['attributes']=_0x125657[_0xaaa1('0x3a')]['length']?_0x125657[_0xaaa1('0x3a')]:_0x3315ad[_0xaaa1('0x39')];if(!_0x335d08[_0xaaa1('0x37')][_0xaaa1('0x3c')](_0xaaa1('0x3d'))){_0x125657[_0xaaa1('0x22')]=qs[_0xaaa1('0x22')](_0x335d08[_0xaaa1('0x37')][_0xaaa1('0x22')]);_0x125657[_0xaaa1('0x20')]=qs['offset'](_0x335d08['query'][_0xaaa1('0x20')]);}_0x125657[_0xaaa1('0x3e')]=qs['sort'](_0x335d08[_0xaaa1('0x37')][_0xaaa1('0x3f')]);_0x125657[_0xaaa1('0x40')]=qs['filters'](_['pick'](_0x335d08[_0xaaa1('0x37')],_0x3315ad['filters']),_0x3ce633);if(_0x335d08['query']['filter']){_0x125657[_0xaaa1('0x40')]=_[_0xaaa1('0x41')](_0x125657[_0xaaa1('0x40')],{'$or':_[_0xaaa1('0x33')](_0x3ce633,function(_0x333bad){if(_0x333bad[_0xaaa1('0x36')]!==_0xaaa1('0x42')){var _0x2e3d78={};_0x2e3d78[_0x333bad[_0xaaa1('0x30')]]={'$like':'%'+_0x335d08[_0xaaa1('0x37')][_0xaaa1('0x43')]+'%'};return _0x2e3d78;}})});}_0x125657=_['merge']({},_0x125657,_0x335d08[_0xaaa1('0x44')]);var _0x2c1ea8={'where':_0x125657[_0xaaa1('0x40')]};return db['FreshdeskConfiguration'][_0xaaa1('0x23')](_0x2c1ea8)['then'](function(_0x5ea826){_0x30a32d[_0xaaa1('0x23')]=_0x5ea826;if(_0x335d08[_0xaaa1('0x37')][_0xaaa1('0x45')]){_0x125657['include']=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0xaaa1('0x46')](_0x125657);})[_0xaaa1('0x2a')](function(_0x515096){_0x30a32d[_0xaaa1('0x47')]=_0x515096;return _0x30a32d;})[_0xaaa1('0x2a')](respondWithFilteredResult(_0x8a8d37,_0x125657))[_0xaaa1('0x48')](handleError(_0x8a8d37,null));};exports['show']=function(_0x4cda43,_0x4a932b){var _0x4f9366={'raw':![],'where':{'id':_0x4cda43[_0xaaa1('0x49')]['id']}},_0x4fd3a2={};_0x4fd3a2[_0xaaa1('0x39')]=_[_0xaaa1('0x4a')](db[_0xaaa1('0x34')][_0xaaa1('0x35')]);_0x4fd3a2[_0xaaa1('0x37')]=_[_0xaaa1('0x4a')](_0x4cda43[_0xaaa1('0x37')]);_0x4fd3a2[_0xaaa1('0x4b')]=_[_0xaaa1('0x38')](_0x4fd3a2['model'],_0x4fd3a2[_0xaaa1('0x37')]);_0x4f9366[_0xaaa1('0x3a')]=_[_0xaaa1('0x38')](_0x4fd3a2[_0xaaa1('0x39')],qs['fields'](_0x4cda43[_0xaaa1('0x37')][_0xaaa1('0x3b')]));_0x4f9366['attributes']=_0x4f9366[_0xaaa1('0x3a')][_0xaaa1('0x4c')]?_0x4f9366['attributes']:_0x4fd3a2['model'];if(_0x4cda43[_0xaaa1('0x37')][_0xaaa1('0x45')]){_0x4f9366[_0xaaa1('0x4d')]=[{'all':!![]}];}_0x4f9366=_[_0xaaa1('0x41')]({},_0x4f9366,_0x4cda43[_0xaaa1('0x44')]);return db[_0xaaa1('0x34')][_0xaaa1('0x4e')](_0x4f9366)[_0xaaa1('0x2a')](handleEntityNotFound(_0x4a932b,null))[_0xaaa1('0x2a')](respondWithResult(_0x4a932b,null))[_0xaaa1('0x48')](handleError(_0x4a932b,null));};exports[_0xaaa1('0x4f')]=function(_0x41f165,_0x554a5a){return db['FreshdeskConfiguration']['create'](_0x41f165[_0xaaa1('0x50')],{})['then'](respondWithResult(_0x554a5a,0xc9))['catch'](handleError(_0x554a5a,null));};exports[_0xaaa1('0x29')]=function(_0x3103a2,_0x3c15b9){if(_0x3103a2[_0xaaa1('0x50')]['id']){delete _0x3103a2[_0xaaa1('0x50')]['id'];}return db[_0xaaa1('0x34')][_0xaaa1('0x4e')]({'where':{'id':_0x3103a2[_0xaaa1('0x49')]['id']}})[_0xaaa1('0x2a')](handleEntityNotFound(_0x3c15b9,null))['then'](saveUpdates(_0x3103a2[_0xaaa1('0x50')],null))['then'](respondWithResult(_0x3c15b9,null))['catch'](handleError(_0x3c15b9,null));};exports[_0xaaa1('0x2b')]=function(_0x1fb9c5,_0x25bfe4){return db[_0xaaa1('0x34')][_0xaaa1('0x4e')]({'where':{'id':_0x1fb9c5[_0xaaa1('0x49')]['id']}})[_0xaaa1('0x2a')](handleEntityNotFound(_0x25bfe4,null))['then'](removeEntity(_0x25bfe4,null))[_0xaaa1('0x48')](handleError(_0x25bfe4,null));};exports[_0xaaa1('0x51')]=function(_0xaf653,_0x4f7d23,_0x1e75f6){var _0x5636e3={};var _0x4291e0={};var _0x53cd62;var _0x5ba47b;return db[_0xaaa1('0x34')]['findOne']({'where':{'id':_0xaf653['params']['id']}})[_0xaaa1('0x2a')](handleEntityNotFound(_0x4f7d23,null))['then'](function(_0xbf18e5){if(_0xbf18e5){_0x53cd62=_0xbf18e5;_0x4291e0[_0xaaa1('0x39')]=_[_0xaaa1('0x4a')](db['FreshdeskField'][_0xaaa1('0x35')]);_0x4291e0[_0xaaa1('0x37')]=_[_0xaaa1('0x4a')](_0xaf653[_0xaaa1('0x37')]);_0x4291e0[_0xaaa1('0x4b')]=_[_0xaaa1('0x38')](_0x4291e0[_0xaaa1('0x39')],_0x4291e0[_0xaaa1('0x37')]);_0x5636e3['attributes']=_[_0xaaa1('0x38')](_0x4291e0[_0xaaa1('0x39')],qs[_0xaaa1('0x3b')](_0xaf653[_0xaaa1('0x37')][_0xaaa1('0x3b')]));_0x5636e3[_0xaaa1('0x3a')]=_0x5636e3[_0xaaa1('0x3a')]['length']?_0x5636e3['attributes']:_0x4291e0['model'];_0x5636e3['order']=qs[_0xaaa1('0x3f')](_0xaf653[_0xaaa1('0x37')]['sort']);_0x5636e3[_0xaaa1('0x40')]=qs[_0xaaa1('0x4b')](_[_0xaaa1('0x52')](_0xaf653['query'],_0x4291e0['filters']));if(_0xaf653[_0xaaa1('0x37')][_0xaaa1('0x43')]){_0x5636e3[_0xaaa1('0x40')]=_[_0xaaa1('0x41')](_0x5636e3[_0xaaa1('0x40')],{'$or':_[_0xaaa1('0x33')](_0x5636e3[_0xaaa1('0x3a')],function(_0x35588e){var _0xd99ddb={};_0xd99ddb[_0x35588e]={'$like':'%'+_0xaf653[_0xaaa1('0x37')][_0xaaa1('0x43')]+'%'};return _0xd99ddb;})});}_0x5636e3=_[_0xaaa1('0x41')]({},_0x5636e3,_0xaf653['options']);return _0x53cd62[_0xaaa1('0x51')](_0x5636e3);}})[_0xaaa1('0x2a')](function(_0x5c0ee7){if(_0x5c0ee7){_0x5ba47b=_0x5c0ee7[_0xaaa1('0x4c')];if(!_0xaf653['query'][_0xaaa1('0x3c')]('nolimit')){_0x5636e3[_0xaaa1('0x22')]=qs[_0xaaa1('0x22')](_0xaf653[_0xaaa1('0x37')][_0xaaa1('0x22')]);_0x5636e3[_0xaaa1('0x20')]=qs[_0xaaa1('0x20')](_0xaf653[_0xaaa1('0x37')][_0xaaa1('0x20')]);}return _0x53cd62['getFields'](_0x5636e3);}})[_0xaaa1('0x2a')](function(_0x2707ad){if(_0x2707ad){return _0x2707ad?{'count':_0x5ba47b,'rows':_0x2707ad}:null;}})[_0xaaa1('0x2a')](respondWithResult(_0x4f7d23,null))[_0xaaa1('0x48')](handleError(_0x4f7d23,null));};exports[_0xaaa1('0x53')]=function(_0x325407,_0x408467,_0x5bc3a5){var _0x563e5d={};var _0x94be15={};var _0x1b2c7c;var _0x1229af;return db['FreshdeskConfiguration'][_0xaaa1('0x54')]({'where':{'id':_0x325407[_0xaaa1('0x49')]['id']}})['then'](handleEntityNotFound(_0x408467,null))[_0xaaa1('0x2a')](function(_0x5279af){if(_0x5279af){_0x1b2c7c=_0x5279af;_0x94be15['model']=_['keys'](db['FreshdeskField'][_0xaaa1('0x35')]);_0x94be15['query']=_[_0xaaa1('0x4a')](_0x325407['query']);_0x94be15[_0xaaa1('0x4b')]=_[_0xaaa1('0x38')](_0x94be15['model'],_0x94be15[_0xaaa1('0x37')]);_0x563e5d[_0xaaa1('0x3a')]=_[_0xaaa1('0x38')](_0x94be15[_0xaaa1('0x39')],qs[_0xaaa1('0x3b')](_0x325407[_0xaaa1('0x37')]['fields']));_0x563e5d[_0xaaa1('0x3a')]=_0x563e5d['attributes'][_0xaaa1('0x4c')]?_0x563e5d[_0xaaa1('0x3a')]:_0x94be15[_0xaaa1('0x39')];_0x563e5d['order']=qs['sort'](_0x325407[_0xaaa1('0x37')][_0xaaa1('0x3f')]);_0x563e5d[_0xaaa1('0x40')]=qs[_0xaaa1('0x4b')](_['pick'](_0x325407[_0xaaa1('0x37')],_0x94be15[_0xaaa1('0x4b')]));if(_0x325407['query'][_0xaaa1('0x43')]){_0x563e5d[_0xaaa1('0x40')]=_['merge'](_0x563e5d[_0xaaa1('0x40')],{'$or':_[_0xaaa1('0x33')](_0x563e5d[_0xaaa1('0x3a')],function(_0x48afc2){var _0x5b1bb5={};_0x5b1bb5[_0x48afc2]={'$like':'%'+_0x325407[_0xaaa1('0x37')][_0xaaa1('0x43')]+'%'};return _0x5b1bb5;})});}_0x563e5d=_['merge']({},_0x563e5d,_0x325407[_0xaaa1('0x44')]);return _0x1b2c7c['getSubjects'](_0x563e5d);}})[_0xaaa1('0x2a')](function(_0x5732d4){if(_0x5732d4){_0x1229af=_0x5732d4[_0xaaa1('0x4c')];if(!_0x325407[_0xaaa1('0x37')]['hasOwnProperty']('nolimit')){_0x563e5d[_0xaaa1('0x22')]=qs[_0xaaa1('0x22')](_0x325407[_0xaaa1('0x37')]['limit']);_0x563e5d[_0xaaa1('0x20')]=qs[_0xaaa1('0x20')](_0x325407[_0xaaa1('0x37')][_0xaaa1('0x20')]);}return _0x1b2c7c[_0xaaa1('0x53')](_0x563e5d);}})[_0xaaa1('0x2a')](function(_0x4cff4b){if(_0x4cff4b){return _0x4cff4b?{'count':_0x1229af,'rows':_0x4cff4b}:null;}})[_0xaaa1('0x2a')](respondWithResult(_0x408467,null))['catch'](handleError(_0x408467,null));};exports[_0xaaa1('0x55')]=function(_0x184287,_0x52bd5c,_0x36ce73){var _0x2f5fad={};var _0x1aceaf={};var _0x5af3d7;var _0x89ddda;return db[_0xaaa1('0x34')]['findOne']({'where':{'id':_0x184287[_0xaaa1('0x49')]['id']}})[_0xaaa1('0x2a')](handleEntityNotFound(_0x52bd5c,null))[_0xaaa1('0x2a')](function(_0x1886a3){if(_0x1886a3){_0x5af3d7=_0x1886a3;_0x1aceaf[_0xaaa1('0x39')]=_[_0xaaa1('0x4a')](db['FreshdeskField']['rawAttributes']);_0x1aceaf['query']=_['keys'](_0x184287['query']);_0x1aceaf[_0xaaa1('0x4b')]=_['intersection'](_0x1aceaf['model'],_0x1aceaf[_0xaaa1('0x37')]);_0x2f5fad[_0xaaa1('0x3a')]=_[_0xaaa1('0x38')](_0x1aceaf[_0xaaa1('0x39')],qs[_0xaaa1('0x3b')](_0x184287[_0xaaa1('0x37')]['fields']));_0x2f5fad[_0xaaa1('0x3a')]=_0x2f5fad[_0xaaa1('0x3a')][_0xaaa1('0x4c')]?_0x2f5fad[_0xaaa1('0x3a')]:_0x1aceaf[_0xaaa1('0x39')];_0x2f5fad[_0xaaa1('0x3e')]=qs[_0xaaa1('0x3f')](_0x184287['query'][_0xaaa1('0x3f')]);_0x2f5fad['where']=qs[_0xaaa1('0x4b')](_[_0xaaa1('0x52')](_0x184287[_0xaaa1('0x37')],_0x1aceaf['filters']));if(_0x184287['query'][_0xaaa1('0x43')]){_0x2f5fad['where']=_[_0xaaa1('0x41')](_0x2f5fad[_0xaaa1('0x40')],{'$or':_[_0xaaa1('0x33')](_0x2f5fad[_0xaaa1('0x3a')],function(_0x410a45){var _0xe1230={};_0xe1230[_0x410a45]={'$like':'%'+_0x184287[_0xaaa1('0x37')]['filter']+'%'};return _0xe1230;})});}_0x2f5fad=_[_0xaaa1('0x41')]({},_0x2f5fad,_0x184287[_0xaaa1('0x44')]);return _0x5af3d7[_0xaaa1('0x55')](_0x2f5fad);}})[_0xaaa1('0x2a')](function(_0x1b5269){if(_0x1b5269){_0x89ddda=_0x1b5269[_0xaaa1('0x4c')];if(!_0x184287['query'][_0xaaa1('0x3c')]('nolimit')){_0x2f5fad[_0xaaa1('0x22')]=qs[_0xaaa1('0x22')](_0x184287[_0xaaa1('0x37')][_0xaaa1('0x22')]);_0x2f5fad['offset']=qs['offset'](_0x184287[_0xaaa1('0x37')]['offset']);}return _0x5af3d7[_0xaaa1('0x55')](_0x2f5fad);}})['then'](function(_0x24f632){if(_0x24f632){return _0x24f632?{'count':_0x89ddda,'rows':_0x24f632}:null;}})['then'](respondWithResult(_0x52bd5c,null))[_0xaaa1('0x48')](handleError(_0x52bd5c,null));};exports[_0xaaa1('0x56')]=function(_0x3fcfa4,_0x165cf8,_0x52f2d4){var _0x451949={};var _0x28c401={};var _0x5bdd9d;var _0x56ebb0;return db[_0xaaa1('0x34')]['findOne']({'where':{'id':_0x3fcfa4['params']['id']}})[_0xaaa1('0x2a')](handleEntityNotFound(_0x165cf8,null))[_0xaaa1('0x2a')](function(_0x4e657e){if(_0x4e657e){_0x5bdd9d=_0x4e657e;_0x28c401[_0xaaa1('0x39')]=_['keys'](db[_0xaaa1('0x57')][_0xaaa1('0x35')]);_0x28c401[_0xaaa1('0x37')]=_[_0xaaa1('0x4a')](_0x3fcfa4[_0xaaa1('0x37')]);_0x28c401[_0xaaa1('0x4b')]=_['intersection'](_0x28c401[_0xaaa1('0x39')],_0x28c401[_0xaaa1('0x37')]);_0x451949['attributes']=_[_0xaaa1('0x38')](_0x28c401[_0xaaa1('0x39')],qs[_0xaaa1('0x3b')](_0x3fcfa4[_0xaaa1('0x37')][_0xaaa1('0x3b')]));_0x451949[_0xaaa1('0x3a')]=_0x451949[_0xaaa1('0x3a')][_0xaaa1('0x4c')]?_0x451949[_0xaaa1('0x3a')]:_0x28c401[_0xaaa1('0x39')];_0x451949[_0xaaa1('0x3e')]=qs['sort'](_0x3fcfa4['query'][_0xaaa1('0x3f')]);_0x451949[_0xaaa1('0x40')]=qs['filters'](_[_0xaaa1('0x52')](_0x3fcfa4[_0xaaa1('0x37')],_0x28c401['filters']));if(_0x3fcfa4[_0xaaa1('0x37')][_0xaaa1('0x43')]){_0x451949[_0xaaa1('0x40')]=_['merge'](_0x451949[_0xaaa1('0x40')],{'$or':_[_0xaaa1('0x33')](_0x451949['attributes'],function(_0x3694f6){var _0x3f24fd={};_0x3f24fd[_0x3694f6]={'$like':'%'+_0x3fcfa4[_0xaaa1('0x37')]['filter']+'%'};return _0x3f24fd;})});}_0x451949=_[_0xaaa1('0x41')]({},_0x451949,_0x3fcfa4[_0xaaa1('0x44')]);return _0x5bdd9d['getTags'](_0x451949);}})[_0xaaa1('0x2a')](function(_0x6b9ab3){if(_0x6b9ab3){_0x56ebb0=_0x6b9ab3[_0xaaa1('0x4c')];if(!_0x3fcfa4['query'][_0xaaa1('0x3c')](_0xaaa1('0x3d'))){_0x451949[_0xaaa1('0x22')]=qs[_0xaaa1('0x22')](_0x3fcfa4[_0xaaa1('0x37')][_0xaaa1('0x22')]);_0x451949[_0xaaa1('0x20')]=qs[_0xaaa1('0x20')](_0x3fcfa4['query']['offset']);}return _0x5bdd9d['getTags'](_0x451949);}})[_0xaaa1('0x2a')](function(_0x1c54eb){if(_0x1c54eb){return _0x1c54eb?{'count':_0x56ebb0,'rows':_0x1c54eb}:null;}})[_0xaaa1('0x2a')](respondWithResult(_0x165cf8,null))['catch'](handleError(_0x165cf8,null));};exports[_0xaaa1('0x58')]=function(_0x393b0e,_0x43faa4,_0x4b957e){if(_0x393b0e[_0xaaa1('0x50')]['id']){delete _0x393b0e[_0xaaa1('0x50')]['id'];}return db['FreshdeskConfiguration'][_0xaaa1('0x54')]({'where':{'id':_0x393b0e[_0xaaa1('0x49')]['id']}})[_0xaaa1('0x2a')](handleEntityNotFound(_0x43faa4,null))[_0xaaa1('0x2a')](function(_0x5ed5cf){if(_0x5ed5cf){return _0x5ed5cf[_0xaaa1('0x58')](_0x393b0e[_0xaaa1('0x50')][_0xaaa1('0x59')]||[]);}return null;})[_0xaaa1('0x2a')](respondWithResult(_0x43faa4,null))[_0xaaa1('0x48')](handleError(_0x43faa4,null));};
\ No newline at end of file
+var _0x399d=['body','destroy','findOne','FreshdeskField','order','getFields','hasOwnProperty','getSubjects','getDescriptions','Tag','getTags','setTags','eml-format','rimraf','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','sendStatus','error','stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','key','model','map','query','filters','attributes','intersection','fields','length','nolimit','sort','pick','where','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create'];(function(_0x3c1ebb,_0x5d8a7f){var _0xac4aea=function(_0x6954c){while(--_0x6954c){_0x3c1ebb['push'](_0x3c1ebb['shift']());}};_0xac4aea(++_0x5d8a7f);}(_0x399d,0xb8));var _0xd399=function(_0x9e507a,_0x17f3cd){_0x9e507a=_0x9e507a-0x0;var _0x45b9f5=_0x399d[_0x9e507a];return _0x45b9f5;};'use strict';var emlformat=require(_0xd399('0x0'));var rimraf=require(_0xd399('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd399('0x2'));var BPromise=require(_0xd399('0x3'));var Mustache=require(_0xd399('0x4'));var util=require('util');var path=require(_0xd399('0x5'));var sox=require(_0xd399('0x6'));var csv=require(_0xd399('0x7'));var ejs=require(_0xd399('0x8'));var fs=require('fs');var fs_extra=require(_0xd399('0x9'));var _=require(_0xd399('0xa'));var squel=require('squel');var crypto=require(_0xd399('0xb'));var jsforce=require(_0xd399('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xd399('0x7'));var querystring=require(_0xd399('0xd'));var Papa=require(_0xd399('0xe'));var Redis=require(_0xd399('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd399('0x10'));var as=require(_0xd399('0x11'));var hardwareService=require(_0xd399('0x12'));var logger=require(_0xd399('0x13'))(_0xd399('0x14'));var utils=require(_0xd399('0x15'));var config=require(_0xd399('0x16'));var licenseUtil=require(_0xd399('0x17'));var db=require(_0xd399('0x18'))['db'];function respondWithStatusCode(_0x526391,_0x4efd31){_0x4efd31=_0x4efd31||0xcc;return function(_0x177615){if(_0x177615){return _0x526391['sendStatus'](_0x4efd31);}return _0x526391[_0xd399('0x19')](_0x4efd31)[_0xd399('0x1a')]();};}function respondWithResult(_0x31e37c,_0x133094){_0x133094=_0x133094||0xc8;return function(_0x292a0b){if(_0x292a0b){return _0x31e37c[_0xd399('0x19')](_0x133094)[_0xd399('0x1b')](_0x292a0b);}};}function respondWithFilteredResult(_0x55beb9,_0x28e3e1){return function(_0x3506d3){if(_0x3506d3){var _0x203a37=typeof _0x28e3e1[_0xd399('0x1c')]===_0xd399('0x1d')&&typeof _0x28e3e1[_0xd399('0x1e')]===_0xd399('0x1d');var _0x319171=_0x3506d3[_0xd399('0x1f')];var _0x5b2348=_0x203a37?0x0:_0x28e3e1['offset'];var _0x352ecc=_0x203a37?_0x3506d3[_0xd399('0x1f')]:_0x28e3e1['offset']+_0x28e3e1['limit'];var _0x49527d;if(_0x352ecc>=_0x319171){_0x352ecc=_0x319171;_0x49527d=0xc8;}else{_0x49527d=0xce;}_0x55beb9['status'](_0x49527d);return _0x55beb9[_0xd399('0x20')](_0xd399('0x21'),_0x5b2348+'-'+_0x352ecc+'/'+_0x319171)['json'](_0x3506d3);}return null;};}function patchUpdates(_0x135969){return function(_0x4c528e){try{jsonpatch['apply'](_0x4c528e,_0x135969,!![]);}catch(_0xc47bd){return BPromise['reject'](_0xc47bd);}return _0x4c528e[_0xd399('0x22')]();};}function saveUpdates(_0x34c293,_0x168784){return function(_0x13b6e5){if(_0x13b6e5){return _0x13b6e5[_0xd399('0x23')](_0x34c293)[_0xd399('0x24')](function(_0x3ce70b){return _0x3ce70b;});}return null;};}function removeEntity(_0x441555,_0xb76e55){return function(_0x77a23e){if(_0x77a23e){return _0x77a23e['destroy']()[_0xd399('0x24')](function(){_0x441555[_0xd399('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24b0db,_0x34fb11){return function(_0x387c57){if(!_0x387c57){_0x24b0db[_0xd399('0x25')](0x194);}return _0x387c57;};}function handleError(_0x51bbe9,_0x2dd46d){_0x2dd46d=_0x2dd46d||0x1f4;return function(_0x3eb099){logger[_0xd399('0x26')](_0x3eb099[_0xd399('0x27')]);if(_0x3eb099[_0xd399('0x28')]){delete _0x3eb099[_0xd399('0x28')];}_0x51bbe9[_0xd399('0x19')](_0x2dd46d)[_0xd399('0x29')](_0x3eb099);};}exports[_0xd399('0x2a')]=function(_0xef6276,_0x89cd97){var _0x917dec={},_0x2ffaf7={},_0x24d0ee={'count':0x0,'rows':[]};var _0x4513e7=_['map'](db[_0xd399('0x2b')][_0xd399('0x2c')],function(_0x572316){return{'name':_0x572316[_0xd399('0x2d')],'type':_0x572316['type'][_0xd399('0x2e')]};});_0x2ffaf7[_0xd399('0x2f')]=_[_0xd399('0x30')](_0x4513e7,_0xd399('0x28'));_0x2ffaf7[_0xd399('0x31')]=_['keys'](_0xef6276[_0xd399('0x31')]);_0x2ffaf7[_0xd399('0x32')]=_['intersection'](_0x2ffaf7[_0xd399('0x2f')],_0x2ffaf7[_0xd399('0x31')]);_0x917dec[_0xd399('0x33')]=_[_0xd399('0x34')](_0x2ffaf7[_0xd399('0x2f')],qs[_0xd399('0x35')](_0xef6276[_0xd399('0x31')][_0xd399('0x35')]));_0x917dec[_0xd399('0x33')]=_0x917dec[_0xd399('0x33')][_0xd399('0x36')]?_0x917dec[_0xd399('0x33')]:_0x2ffaf7[_0xd399('0x2f')];if(!_0xef6276['query']['hasOwnProperty'](_0xd399('0x37'))){_0x917dec[_0xd399('0x1e')]=qs[_0xd399('0x1e')](_0xef6276[_0xd399('0x31')]['limit']);_0x917dec[_0xd399('0x1c')]=qs[_0xd399('0x1c')](_0xef6276[_0xd399('0x31')][_0xd399('0x1c')]);}_0x917dec['order']=qs[_0xd399('0x38')](_0xef6276[_0xd399('0x31')][_0xd399('0x38')]);_0x917dec['where']=qs[_0xd399('0x32')](_[_0xd399('0x39')](_0xef6276[_0xd399('0x31')],_0x2ffaf7['filters']),_0x4513e7);if(_0xef6276[_0xd399('0x31')]['filter']){_0x917dec[_0xd399('0x3a')]=_[_0xd399('0x3b')](_0x917dec['where'],{'$or':_[_0xd399('0x30')](_0x4513e7,function(_0x186f73){if(_0x186f73[_0xd399('0x3c')]!==_0xd399('0x3d')){var _0x16921b={};_0x16921b[_0x186f73['name']]={'$like':'%'+_0xef6276[_0xd399('0x31')][_0xd399('0x3e')]+'%'};return _0x16921b;}})});}_0x917dec=_[_0xd399('0x3b')]({},_0x917dec,_0xef6276[_0xd399('0x3f')]);var _0x3c2d98={'where':_0x917dec['where']};return db['FreshdeskConfiguration'][_0xd399('0x1f')](_0x3c2d98)[_0xd399('0x24')](function(_0x1640ac){_0x24d0ee[_0xd399('0x1f')]=_0x1640ac;if(_0xef6276['query']['includeAll']){_0x917dec[_0xd399('0x40')]=[{'all':!![]}];}return db[_0xd399('0x2b')][_0xd399('0x41')](_0x917dec);})['then'](function(_0xe9491f){_0x24d0ee[_0xd399('0x42')]=_0xe9491f;return _0x24d0ee;})[_0xd399('0x24')](respondWithFilteredResult(_0x89cd97,_0x917dec))[_0xd399('0x43')](handleError(_0x89cd97,null));};exports[_0xd399('0x44')]=function(_0x5ae096,_0x1f4437){var _0xf959b2={'raw':![],'where':{'id':_0x5ae096[_0xd399('0x45')]['id']}},_0x583095={};_0x583095[_0xd399('0x2f')]=_[_0xd399('0x46')](db[_0xd399('0x2b')][_0xd399('0x2c')]);_0x583095[_0xd399('0x31')]=_[_0xd399('0x46')](_0x5ae096[_0xd399('0x31')]);_0x583095[_0xd399('0x32')]=_[_0xd399('0x34')](_0x583095[_0xd399('0x2f')],_0x583095[_0xd399('0x31')]);_0xf959b2[_0xd399('0x33')]=_[_0xd399('0x34')](_0x583095[_0xd399('0x2f')],qs[_0xd399('0x35')](_0x5ae096[_0xd399('0x31')][_0xd399('0x35')]));_0xf959b2['attributes']=_0xf959b2[_0xd399('0x33')][_0xd399('0x36')]?_0xf959b2[_0xd399('0x33')]:_0x583095['model'];if(_0x5ae096[_0xd399('0x31')][_0xd399('0x47')]){_0xf959b2[_0xd399('0x40')]=[{'all':!![]}];}_0xf959b2=_[_0xd399('0x3b')]({},_0xf959b2,_0x5ae096[_0xd399('0x3f')]);return db[_0xd399('0x2b')][_0xd399('0x48')](_0xf959b2)['then'](handleEntityNotFound(_0x1f4437,null))['then'](respondWithResult(_0x1f4437,null))[_0xd399('0x43')](handleError(_0x1f4437,null));};exports['create']=function(_0x274e7a,_0x1bcefc){return db[_0xd399('0x2b')][_0xd399('0x49')](_0x274e7a[_0xd399('0x4a')],{})[_0xd399('0x24')](respondWithResult(_0x1bcefc,0xc9))[_0xd399('0x43')](handleError(_0x1bcefc,null));};exports[_0xd399('0x23')]=function(_0x36cf78,_0x33f72e){if(_0x36cf78[_0xd399('0x4a')]['id']){delete _0x36cf78[_0xd399('0x4a')]['id'];}return db[_0xd399('0x2b')][_0xd399('0x48')]({'where':{'id':_0x36cf78[_0xd399('0x45')]['id']}})[_0xd399('0x24')](handleEntityNotFound(_0x33f72e,null))[_0xd399('0x24')](saveUpdates(_0x36cf78['body'],null))['then'](respondWithResult(_0x33f72e,null))['catch'](handleError(_0x33f72e,null));};exports[_0xd399('0x4b')]=function(_0xa2d956,_0x343104){return db[_0xd399('0x2b')]['find']({'where':{'id':_0xa2d956[_0xd399('0x45')]['id']}})[_0xd399('0x24')](handleEntityNotFound(_0x343104,null))[_0xd399('0x24')](removeEntity(_0x343104,null))[_0xd399('0x43')](handleError(_0x343104,null));};exports['getFields']=function(_0xb6bd63,_0x229437,_0x3f6085){var _0x416422={};var _0x3ee8c2={};var _0x50694a;var _0x3355a8;return db[_0xd399('0x2b')][_0xd399('0x4c')]({'where':{'id':_0xb6bd63[_0xd399('0x45')]['id']}})[_0xd399('0x24')](handleEntityNotFound(_0x229437,null))[_0xd399('0x24')](function(_0x23bab8){if(_0x23bab8){_0x50694a=_0x23bab8;_0x3ee8c2['model']=_[_0xd399('0x46')](db[_0xd399('0x4d')][_0xd399('0x2c')]);_0x3ee8c2[_0xd399('0x31')]=_[_0xd399('0x46')](_0xb6bd63['query']);_0x3ee8c2[_0xd399('0x32')]=_[_0xd399('0x34')](_0x3ee8c2['model'],_0x3ee8c2[_0xd399('0x31')]);_0x416422[_0xd399('0x33')]=_[_0xd399('0x34')](_0x3ee8c2[_0xd399('0x2f')],qs[_0xd399('0x35')](_0xb6bd63[_0xd399('0x31')]['fields']));_0x416422['attributes']=_0x416422['attributes']['length']?_0x416422[_0xd399('0x33')]:_0x3ee8c2['model'];_0x416422[_0xd399('0x4e')]=qs[_0xd399('0x38')](_0xb6bd63[_0xd399('0x31')][_0xd399('0x38')]);_0x416422['where']=qs[_0xd399('0x32')](_[_0xd399('0x39')](_0xb6bd63['query'],_0x3ee8c2[_0xd399('0x32')]));if(_0xb6bd63[_0xd399('0x31')]['filter']){_0x416422[_0xd399('0x3a')]=_['merge'](_0x416422[_0xd399('0x3a')],{'$or':_[_0xd399('0x30')](_0x416422[_0xd399('0x33')],function(_0x217cc3){var _0x531118={};_0x531118[_0x217cc3]={'$like':'%'+_0xb6bd63[_0xd399('0x31')][_0xd399('0x3e')]+'%'};return _0x531118;})});}_0x416422=_[_0xd399('0x3b')]({},_0x416422,_0xb6bd63[_0xd399('0x3f')]);return _0x50694a[_0xd399('0x4f')](_0x416422);}})[_0xd399('0x24')](function(_0x450b7b){if(_0x450b7b){_0x3355a8=_0x450b7b[_0xd399('0x36')];if(!_0xb6bd63[_0xd399('0x31')][_0xd399('0x50')](_0xd399('0x37'))){_0x416422[_0xd399('0x1e')]=qs[_0xd399('0x1e')](_0xb6bd63[_0xd399('0x31')][_0xd399('0x1e')]);_0x416422['offset']=qs[_0xd399('0x1c')](_0xb6bd63[_0xd399('0x31')][_0xd399('0x1c')]);}return _0x50694a[_0xd399('0x4f')](_0x416422);}})[_0xd399('0x24')](function(_0x1104dc){if(_0x1104dc){return _0x1104dc?{'count':_0x3355a8,'rows':_0x1104dc}:null;}})[_0xd399('0x24')](respondWithResult(_0x229437,null))[_0xd399('0x43')](handleError(_0x229437,null));};exports[_0xd399('0x51')]=function(_0x3831a1,_0x2eb39f,_0x4d246a){var _0x536d63={};var _0x23a803={};var _0xfb258f;var _0x212b7b;return db['FreshdeskConfiguration'][_0xd399('0x4c')]({'where':{'id':_0x3831a1[_0xd399('0x45')]['id']}})['then'](handleEntityNotFound(_0x2eb39f,null))[_0xd399('0x24')](function(_0xff6c5f){if(_0xff6c5f){_0xfb258f=_0xff6c5f;_0x23a803['model']=_[_0xd399('0x46')](db[_0xd399('0x4d')]['rawAttributes']);_0x23a803[_0xd399('0x31')]=_['keys'](_0x3831a1[_0xd399('0x31')]);_0x23a803[_0xd399('0x32')]=_[_0xd399('0x34')](_0x23a803[_0xd399('0x2f')],_0x23a803[_0xd399('0x31')]);_0x536d63[_0xd399('0x33')]=_[_0xd399('0x34')](_0x23a803[_0xd399('0x2f')],qs[_0xd399('0x35')](_0x3831a1[_0xd399('0x31')][_0xd399('0x35')]));_0x536d63[_0xd399('0x33')]=_0x536d63[_0xd399('0x33')]['length']?_0x536d63[_0xd399('0x33')]:_0x23a803[_0xd399('0x2f')];_0x536d63[_0xd399('0x4e')]=qs[_0xd399('0x38')](_0x3831a1['query'][_0xd399('0x38')]);_0x536d63[_0xd399('0x3a')]=qs[_0xd399('0x32')](_['pick'](_0x3831a1['query'],_0x23a803[_0xd399('0x32')]));if(_0x3831a1['query'][_0xd399('0x3e')]){_0x536d63[_0xd399('0x3a')]=_['merge'](_0x536d63[_0xd399('0x3a')],{'$or':_[_0xd399('0x30')](_0x536d63['attributes'],function(_0x84652a){var _0x200223={};_0x200223[_0x84652a]={'$like':'%'+_0x3831a1[_0xd399('0x31')][_0xd399('0x3e')]+'%'};return _0x200223;})});}_0x536d63=_[_0xd399('0x3b')]({},_0x536d63,_0x3831a1[_0xd399('0x3f')]);return _0xfb258f[_0xd399('0x51')](_0x536d63);}})[_0xd399('0x24')](function(_0x34031d){if(_0x34031d){_0x212b7b=_0x34031d[_0xd399('0x36')];if(!_0x3831a1[_0xd399('0x31')][_0xd399('0x50')](_0xd399('0x37'))){_0x536d63[_0xd399('0x1e')]=qs[_0xd399('0x1e')](_0x3831a1[_0xd399('0x31')]['limit']);_0x536d63[_0xd399('0x1c')]=qs['offset'](_0x3831a1['query'][_0xd399('0x1c')]);}return _0xfb258f[_0xd399('0x51')](_0x536d63);}})[_0xd399('0x24')](function(_0x110b6d){if(_0x110b6d){return _0x110b6d?{'count':_0x212b7b,'rows':_0x110b6d}:null;}})['then'](respondWithResult(_0x2eb39f,null))[_0xd399('0x43')](handleError(_0x2eb39f,null));};exports[_0xd399('0x52')]=function(_0x3d0c66,_0x53a9d0,_0x637e34){var _0x156f84={};var _0x257399={};var _0x354154;var _0x5b212e;return db[_0xd399('0x2b')][_0xd399('0x4c')]({'where':{'id':_0x3d0c66[_0xd399('0x45')]['id']}})[_0xd399('0x24')](handleEntityNotFound(_0x53a9d0,null))[_0xd399('0x24')](function(_0x795ede){if(_0x795ede){_0x354154=_0x795ede;_0x257399['model']=_[_0xd399('0x46')](db[_0xd399('0x4d')][_0xd399('0x2c')]);_0x257399[_0xd399('0x31')]=_[_0xd399('0x46')](_0x3d0c66[_0xd399('0x31')]);_0x257399[_0xd399('0x32')]=_[_0xd399('0x34')](_0x257399[_0xd399('0x2f')],_0x257399[_0xd399('0x31')]);_0x156f84[_0xd399('0x33')]=_['intersection'](_0x257399['model'],qs['fields'](_0x3d0c66[_0xd399('0x31')][_0xd399('0x35')]));_0x156f84['attributes']=_0x156f84['attributes'][_0xd399('0x36')]?_0x156f84[_0xd399('0x33')]:_0x257399[_0xd399('0x2f')];_0x156f84[_0xd399('0x4e')]=qs[_0xd399('0x38')](_0x3d0c66[_0xd399('0x31')][_0xd399('0x38')]);_0x156f84[_0xd399('0x3a')]=qs[_0xd399('0x32')](_[_0xd399('0x39')](_0x3d0c66[_0xd399('0x31')],_0x257399[_0xd399('0x32')]));if(_0x3d0c66[_0xd399('0x31')][_0xd399('0x3e')]){_0x156f84[_0xd399('0x3a')]=_[_0xd399('0x3b')](_0x156f84['where'],{'$or':_[_0xd399('0x30')](_0x156f84[_0xd399('0x33')],function(_0x34f488){var _0x3dc372={};_0x3dc372[_0x34f488]={'$like':'%'+_0x3d0c66[_0xd399('0x31')]['filter']+'%'};return _0x3dc372;})});}_0x156f84=_[_0xd399('0x3b')]({},_0x156f84,_0x3d0c66[_0xd399('0x3f')]);return _0x354154['getDescriptions'](_0x156f84);}})[_0xd399('0x24')](function(_0x537ec8){if(_0x537ec8){_0x5b212e=_0x537ec8[_0xd399('0x36')];if(!_0x3d0c66[_0xd399('0x31')][_0xd399('0x50')]('nolimit')){_0x156f84[_0xd399('0x1e')]=qs[_0xd399('0x1e')](_0x3d0c66[_0xd399('0x31')][_0xd399('0x1e')]);_0x156f84[_0xd399('0x1c')]=qs[_0xd399('0x1c')](_0x3d0c66[_0xd399('0x31')]['offset']);}return _0x354154[_0xd399('0x52')](_0x156f84);}})[_0xd399('0x24')](function(_0x260345){if(_0x260345){return _0x260345?{'count':_0x5b212e,'rows':_0x260345}:null;}})[_0xd399('0x24')](respondWithResult(_0x53a9d0,null))['catch'](handleError(_0x53a9d0,null));};exports['getTags']=function(_0x5417a0,_0x293832,_0x4a25b3){var _0x48445b={};var _0x30db66={};var _0x7c7082;var _0x58cba2;return db['FreshdeskConfiguration'][_0xd399('0x4c')]({'where':{'id':_0x5417a0['params']['id']}})[_0xd399('0x24')](handleEntityNotFound(_0x293832,null))[_0xd399('0x24')](function(_0x1e17f6){if(_0x1e17f6){_0x7c7082=_0x1e17f6;_0x30db66['model']=_[_0xd399('0x46')](db[_0xd399('0x53')][_0xd399('0x2c')]);_0x30db66[_0xd399('0x31')]=_['keys'](_0x5417a0[_0xd399('0x31')]);_0x30db66['filters']=_[_0xd399('0x34')](_0x30db66[_0xd399('0x2f')],_0x30db66[_0xd399('0x31')]);_0x48445b['attributes']=_['intersection'](_0x30db66[_0xd399('0x2f')],qs['fields'](_0x5417a0[_0xd399('0x31')][_0xd399('0x35')]));_0x48445b[_0xd399('0x33')]=_0x48445b[_0xd399('0x33')]['length']?_0x48445b[_0xd399('0x33')]:_0x30db66[_0xd399('0x2f')];_0x48445b[_0xd399('0x4e')]=qs[_0xd399('0x38')](_0x5417a0[_0xd399('0x31')][_0xd399('0x38')]);_0x48445b['where']=qs['filters'](_[_0xd399('0x39')](_0x5417a0[_0xd399('0x31')],_0x30db66[_0xd399('0x32')]));if(_0x5417a0[_0xd399('0x31')][_0xd399('0x3e')]){_0x48445b[_0xd399('0x3a')]=_[_0xd399('0x3b')](_0x48445b['where'],{'$or':_[_0xd399('0x30')](_0x48445b['attributes'],function(_0x465d16){var _0x9ba16e={};_0x9ba16e[_0x465d16]={'$like':'%'+_0x5417a0['query'][_0xd399('0x3e')]+'%'};return _0x9ba16e;})});}_0x48445b=_['merge']({},_0x48445b,_0x5417a0[_0xd399('0x3f')]);return _0x7c7082[_0xd399('0x54')](_0x48445b);}})[_0xd399('0x24')](function(_0x5ab947){if(_0x5ab947){_0x58cba2=_0x5ab947[_0xd399('0x36')];if(!_0x5417a0[_0xd399('0x31')][_0xd399('0x50')](_0xd399('0x37'))){_0x48445b['limit']=qs['limit'](_0x5417a0[_0xd399('0x31')][_0xd399('0x1e')]);_0x48445b[_0xd399('0x1c')]=qs['offset'](_0x5417a0['query'][_0xd399('0x1c')]);}return _0x7c7082[_0xd399('0x54')](_0x48445b);}})['then'](function(_0x28d8bc){if(_0x28d8bc){return _0x28d8bc?{'count':_0x58cba2,'rows':_0x28d8bc}:null;}})[_0xd399('0x24')](respondWithResult(_0x293832,null))[_0xd399('0x43')](handleError(_0x293832,null));};exports[_0xd399('0x55')]=function(_0x37d2cf,_0x147f3f,_0x37759e){if(_0x37d2cf['body']['id']){delete _0x37d2cf[_0xd399('0x4a')]['id'];}return db[_0xd399('0x2b')][_0xd399('0x4c')]({'where':{'id':_0x37d2cf[_0xd399('0x45')]['id']}})['then'](handleEntityNotFound(_0x147f3f,null))[_0xd399('0x24')](function(_0x3066b5){if(_0x3066b5){return _0x3066b5['setTags'](_0x37d2cf[_0xd399('0x4a')]['ids']||[]);}return null;})[_0xd399('0x24')](respondWithResult(_0x147f3f,null))[_0xd399('0x43')](handleError(_0x147f3f,null));};
\ No newline at end of file
index 7fda78d..1a01f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ad3=['../../config/environment','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x327b9f,_0x1ccda5){var _0x35c44d=function(_0x357d60){while(--_0x357d60){_0x327b9f['push'](_0x327b9f['shift']());}};_0x35c44d(++_0x1ccda5);}(_0x7ad3,0x170));var _0x37ad=function(_0x187d80,_0x5b793f){_0x187d80=_0x187d80-0x0;var _0x498a77=_0x7ad3[_0x187d80];return _0x498a77;};'use strict';var _=require(_0x37ad('0x0'));var util=require(_0x37ad('0x1'));var logger=require(_0x37ad('0x2'))(_0x37ad('0x3'));var moment=require(_0x37ad('0x4'));var BPromise=require(_0x37ad('0x5'));var rp=require(_0x37ad('0x6'));var fs=require('fs');var path=require(_0x37ad('0x7'));var rimraf=require(_0x37ad('0x8'));var config=require(_0x37ad('0x9'));var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x2a7e9c,_0x524014){return _0x2a7e9c[_0x37ad('0xa')](_0x37ad('0xb'),attributes,{'tableName':_0x37ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21b9=['FreshdeskConfiguration','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x155489,_0x22326c){var _0x31d5bd=function(_0x519e34){while(--_0x519e34){_0x155489['push'](_0x155489['shift']());}};_0x31d5bd(++_0x22326c);}(_0x21b9,0x18d));var _0x921b=function(_0x2ecfb2,_0x14df0e){_0x2ecfb2=_0x2ecfb2-0x0;var _0x535f5e=_0x21b9[_0x2ecfb2];return _0x535f5e;};'use strict';var _=require(_0x921b('0x0'));var util=require('util');var logger=require(_0x921b('0x1'))(_0x921b('0x2'));var moment=require(_0x921b('0x3'));var BPromise=require(_0x921b('0x4'));var rp=require(_0x921b('0x5'));var fs=require('fs');var path=require(_0x921b('0x6'));var rimraf=require(_0x921b('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x4211a3,_0xc2db06){return _0x4211a3['define'](_0x921b('0x8'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb4a038..44eef04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07fa=['error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x9729d7,_0x1b79a8){var _0x3c4ac6=function(_0x401ba6){while(--_0x401ba6){_0x9729d7['push'](_0x9729d7['shift']());}};_0x3c4ac6(++_0x1b79a8);}(_0x07fa,0xf4));var _0xa07f=function(_0x17406a,_0x1e2320){_0x17406a=_0x17406a-0x0;var _0x1501ff=_0x07fa[_0x17406a];return _0x1501ff;};'use strict';var _=require(_0xa07f('0x0'));var util=require(_0xa07f('0x1'));var moment=require(_0xa07f('0x2'));var BPromise=require(_0xa07f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa07f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa07f('0x5'));var logger=require(_0xa07f('0x6'))(_0xa07f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa07f('0x8')][_0xa07f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5a9265,_0x212c72,_0x2af3d1){return new BPromise(function(_0x52d3cc,_0x59bcc2){return client[_0xa07f('0xa')](_0x5a9265,_0x2af3d1)[_0xa07f('0xb')](function(_0x17dd40){logger[_0xa07f('0xc')](_0xa07f('0xd'),_0x212c72,'request\x20sent');logger['debug'](_0xa07f('0xe'),_0x212c72,_0xa07f('0xf'),JSON['stringify'](_0x17dd40));if(_0x17dd40[_0xa07f('0x10')]){if(_0x17dd40[_0xa07f('0x10')]['code']===0x1f4){logger[_0xa07f('0x10')](_0xa07f('0xd'),_0x212c72,_0x17dd40['error']['message']);return _0x59bcc2(_0x17dd40['error'][_0xa07f('0x11')]);}logger[_0xa07f('0x10')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x212c72,_0x17dd40['error'][_0xa07f('0x11')]);return _0x52d3cc(_0x17dd40[_0xa07f('0x10')][_0xa07f('0x11')]);}else{logger[_0xa07f('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x212c72,_0xa07f('0xf'));_0x52d3cc(_0x17dd40[_0xa07f('0x12')][_0xa07f('0x11')]);}})[_0xa07f('0x13')](function(_0x57d587){logger[_0xa07f('0x10')](_0xa07f('0xd'),_0x212c72,_0x57d587);_0x59bcc2(_0x57d587);});});}
\ No newline at end of file
+var _0x206a=['code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','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','error'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x206a,0x189));var _0xa206=function(_0x4d5179,_0x1275a1){_0x4d5179=_0x4d5179-0x0;var _0xe7d4d1=_0x206a[_0x4d5179];return _0xe7d4d1;};'use strict';var _=require(_0xa206('0x0'));var util=require(_0xa206('0x1'));var moment=require(_0xa206('0x2'));var BPromise=require(_0xa206('0x3'));var rs=require(_0xa206('0x4'));var fs=require('fs');var Redis=require(_0xa206('0x5'));var db=require(_0xa206('0x6'))['db'];var utils=require(_0xa206('0x7'));var logger=require('../../config/logger')(_0xa206('0x8'));var config=require(_0xa206('0x9'));var jayson=require(_0xa206('0xa'));var client=jayson[_0xa206('0xb')][_0xa206('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xe70be1,_0x116f47,_0xe3f815){return new BPromise(function(_0x372d36,_0xb3b183){return client[_0xa206('0xd')](_0xe70be1,_0xe3f815)[_0xa206('0xe')](function(_0x5b7b47){logger[_0xa206('0xf')](_0xa206('0x10'),_0x116f47,_0xa206('0x11'));logger[_0xa206('0x12')](_0xa206('0x13'),_0x116f47,_0xa206('0x11'),JSON['stringify'](_0x5b7b47));if(_0x5b7b47[_0xa206('0x14')]){if(_0x5b7b47[_0xa206('0x14')][_0xa206('0x15')]===0x1f4){logger['error'](_0xa206('0x10'),_0x116f47,_0x5b7b47[_0xa206('0x14')][_0xa206('0x16')]);return _0xb3b183(_0x5b7b47[_0xa206('0x14')][_0xa206('0x16')]);}logger[_0xa206('0x14')](_0xa206('0x10'),_0x116f47,_0x5b7b47[_0xa206('0x14')][_0xa206('0x16')]);return _0x372d36(_0x5b7b47[_0xa206('0x14')]['message']);}else{logger[_0xa206('0xf')](_0xa206('0x10'),_0x116f47,_0xa206('0x11'));_0x372d36(_0x5b7b47['result']['message']);}})['catch'](function(_0x41d716){logger[_0xa206('0x14')](_0xa206('0x10'),_0x116f47,_0x41d716);_0xb3b183(_0x41d716);});});}
\ No newline at end of file
index 8c0dede..21d6323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b19=['delete','destroy','exports','util','connect-timeout','fs-extra','../../components/interaction/service','./intFreshdeskField.controller','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x4498d9,_0x5554d0){var _0x2eb037=function(_0x1d59f9){while(--_0x1d59f9){_0x4498d9['push'](_0x4498d9['shift']());}};_0x2eb037(++_0x5554d0);}(_0x4b19,0x93));var _0x94b1=function(_0x36cb29,_0x2718a0){_0x36cb29=_0x36cb29-0x0;var _0x135d03=_0x4b19[_0x36cb29];return _0x135d03;};'use strict';var multer=require('multer');var util=require(_0x94b1('0x0'));var path=require('path');var timeout=require(_0x94b1('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x94b1('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x94b1('0x3'));var config=require('../../config/environment');var controller=require(_0x94b1('0x4'));router[_0x94b1('0x5')]('/',auth[_0x94b1('0x6')](),controller['index']);router[_0x94b1('0x5')](_0x94b1('0x7'),auth[_0x94b1('0x6')](),controller[_0x94b1('0x8')]);router[_0x94b1('0x9')]('/',auth['isAuthenticated'](),controller[_0x94b1('0xa')]);router[_0x94b1('0xb')](_0x94b1('0x7'),auth['isAuthenticated'](),controller[_0x94b1('0xc')]);router[_0x94b1('0xd')](_0x94b1('0x7'),auth[_0x94b1('0x6')](),controller[_0x94b1('0xe')]);module[_0x94b1('0xf')]=router;
\ No newline at end of file
+var _0x7104=['../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','post','create','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra'];(function(_0x259757,_0x44c1d0){var _0x334b75=function(_0x8ed353){while(--_0x8ed353){_0x259757['push'](_0x259757['shift']());}};_0x334b75(++_0x44c1d0);}(_0x7104,0x171));var _0x4710=function(_0x27f1d6,_0x331c90){_0x27f1d6=_0x27f1d6-0x0;var _0x1839da=_0x7104[_0x27f1d6];return _0x1839da;};'use strict';var multer=require(_0x4710('0x0'));var util=require('util');var path=require(_0x4710('0x1'));var timeout=require(_0x4710('0x2'));var express=require('express');var router=express[_0x4710('0x3')]();var fs_extra=require(_0x4710('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4710('0x5'));var controller=require(_0x4710('0x6'));router['get']('/',auth[_0x4710('0x7')](),controller[_0x4710('0x8')]);router[_0x4710('0x9')](_0x4710('0xa'),auth[_0x4710('0x7')](),controller['show']);router[_0x4710('0xb')]('/',auth[_0x4710('0x7')](),controller[_0x4710('0xc')]);router['put'](_0x4710('0xa'),auth[_0x4710('0x7')](),controller[_0x4710('0xd')]);router[_0x4710('0xe')](_0x4710('0xa'),auth['isAuthenticated'](),controller[_0x4710('0xf')]);module[_0x4710('0x10')]=router;
\ No newline at end of file
index c1a0fcc..9782fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5dd=['picklist','STRING','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb5dd,0x7a));var _0xdb5d=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xb5dd[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require('sequelize');module[_0xdb5d('0x0')]={'type':{'type':Sequelize[_0xdb5d('0x1')](_0xdb5d('0x2'),_0xdb5d('0x3'),_0xdb5d('0x4'),_0xdb5d('0x5'),_0xdb5d('0x6')),'defaultValue':_0xdb5d('0x2')},'content':{'type':Sequelize[_0xdb5d('0x7')]},'key':{'type':Sequelize[_0xdb5d('0x7')]},'keyType':{'type':Sequelize[_0xdb5d('0x1')](_0xdb5d('0x2'),_0xdb5d('0x3'),_0xdb5d('0x4'))},'keyContent':{'type':Sequelize[_0xdb5d('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4fa5=['variable','customVariable','picklist','string','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x1ca8dd,_0x2b2f46){var _0x26e5bf=function(_0x94e68c){while(--_0x94e68c){_0x1ca8dd['push'](_0x1ca8dd['shift']());}};_0x26e5bf(++_0x2b2f46);}(_0x4fa5,0x19b));var _0x54fa=function(_0x565726,_0x2bceb3){_0x565726=_0x565726-0x0;var _0x5e656d=_0x4fa5[_0x565726];return _0x5e656d;};'use strict';var Sequelize=require(_0x54fa('0x0'));module[_0x54fa('0x1')]={'type':{'type':Sequelize[_0x54fa('0x2')]('string',_0x54fa('0x3'),_0x54fa('0x4'),'keyValue',_0x54fa('0x5')),'defaultValue':_0x54fa('0x6')},'content':{'type':Sequelize[_0x54fa('0x7')]},'key':{'type':Sequelize[_0x54fa('0x7')]},'keyType':{'type':Sequelize[_0x54fa('0x2')](_0x54fa('0x6'),_0x54fa('0x3'),_0x54fa('0x4'))},'keyContent':{'type':Sequelize[_0x54fa('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x54fa('0x7')]},'customField':{'type':Sequelize[_0x54fa('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 467bb86..9547500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc901=['save','update','destroy','then','error','stack','name','send','index','map','FreshdeskField','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','include','rows','includeAll','find','catch','create','body','params','eml-format','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject'];(function(_0x1a9ae1,_0x20079d){var _0x42e272=function(_0x5a83c0){while(--_0x5a83c0){_0x1a9ae1['push'](_0x1a9ae1['shift']());}};_0x42e272(++_0x20079d);}(_0xc901,0x142));var _0x1c90=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc901[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x1c90('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1c90('0x1'));var BPromise=require(_0x1c90('0x2'));var Mustache=require('mustache');var util=require(_0x1c90('0x3'));var path=require(_0x1c90('0x4'));var sox=require(_0x1c90('0x5'));var csv=require(_0x1c90('0x6'));var ejs=require(_0x1c90('0x7'));var fs=require('fs');var fs_extra=require(_0x1c90('0x8'));var _=require(_0x1c90('0x9'));var squel=require(_0x1c90('0xa'));var crypto=require(_0x1c90('0xb'));var jsforce=require(_0x1c90('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1c90('0x6'));var querystring=require(_0x1c90('0xd'));var Papa=require(_0x1c90('0xe'));var Redis=require(_0x1c90('0xf'));var authService=require(_0x1c90('0x10'));var qs=require(_0x1c90('0x11'));var as=require(_0x1c90('0x12'));var hardwareService=require(_0x1c90('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x1c90('0x14'));var config=require(_0x1c90('0x15'));var licenseUtil=require(_0x1c90('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4da158,_0x3a38ed){_0x3a38ed=_0x3a38ed||0xcc;return function(_0x3353e3){if(_0x3353e3){return _0x4da158['sendStatus'](_0x3a38ed);}return _0x4da158[_0x1c90('0x17')](_0x3a38ed)[_0x1c90('0x18')]();};}function respondWithResult(_0xf72b98,_0x589c97){_0x589c97=_0x589c97||0xc8;return function(_0x42cb94){if(_0x42cb94){return _0xf72b98['status'](_0x589c97)[_0x1c90('0x19')](_0x42cb94);}};}function respondWithFilteredResult(_0x210ef4,_0x7a88dc){return function(_0x42d8a4){if(_0x42d8a4){var _0x48bd5e=typeof _0x7a88dc[_0x1c90('0x1a')]==='undefined'&&typeof _0x7a88dc[_0x1c90('0x1b')]===_0x1c90('0x1c');var _0x5f1025=_0x42d8a4[_0x1c90('0x1d')];var _0x4ec354=_0x48bd5e?0x0:_0x7a88dc['offset'];var _0x128bf0=_0x48bd5e?_0x42d8a4['count']:_0x7a88dc[_0x1c90('0x1a')]+_0x7a88dc[_0x1c90('0x1b')];var _0x2a5b73;if(_0x128bf0>=_0x5f1025){_0x128bf0=_0x5f1025;_0x2a5b73=0xc8;}else{_0x2a5b73=0xce;}_0x210ef4[_0x1c90('0x17')](_0x2a5b73);return _0x210ef4['set'](_0x1c90('0x1e'),_0x4ec354+'-'+_0x128bf0+'/'+_0x5f1025)['json'](_0x42d8a4);}return null;};}function patchUpdates(_0x525997){return function(_0x38f997){try{jsonpatch[_0x1c90('0x1f')](_0x38f997,_0x525997,!![]);}catch(_0x47fd11){return BPromise[_0x1c90('0x20')](_0x47fd11);}return _0x38f997[_0x1c90('0x21')]();};}function saveUpdates(_0x445664,_0x4074fd){return function(_0x13fc42){if(_0x13fc42){return _0x13fc42[_0x1c90('0x22')](_0x445664)['then'](function(_0x418f4c){return _0x418f4c;});}return null;};}function removeEntity(_0x46baa1,_0xab232a){return function(_0x33c88b){if(_0x33c88b){return _0x33c88b[_0x1c90('0x23')]()[_0x1c90('0x24')](function(){_0x46baa1[_0x1c90('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x64ca90,_0x435c3a){return function(_0x3923a9){if(!_0x3923a9){_0x64ca90['sendStatus'](0x194);}return _0x3923a9;};}function handleError(_0xb5666e,_0x44387f){_0x44387f=_0x44387f||0x1f4;return function(_0x4abffe){logger[_0x1c90('0x25')](_0x4abffe[_0x1c90('0x26')]);if(_0x4abffe['name']){delete _0x4abffe[_0x1c90('0x27')];}_0xb5666e[_0x1c90('0x17')](_0x44387f)[_0x1c90('0x28')](_0x4abffe);};}exports[_0x1c90('0x29')]=function(_0x395edb,_0x111e20){var _0xd0a607={},_0x35c843={},_0x52c308={'count':0x0,'rows':[]};var _0xc1a571=_[_0x1c90('0x2a')](db[_0x1c90('0x2b')][_0x1c90('0x2c')],function(_0x1979de){return{'name':_0x1979de[_0x1c90('0x2d')],'type':_0x1979de[_0x1c90('0x2e')][_0x1c90('0x2f')]};});_0x35c843[_0x1c90('0x30')]=_[_0x1c90('0x2a')](_0xc1a571,_0x1c90('0x27'));_0x35c843['query']=_[_0x1c90('0x31')](_0x395edb[_0x1c90('0x32')]);_0x35c843['filters']=_[_0x1c90('0x33')](_0x35c843['model'],_0x35c843[_0x1c90('0x32')]);_0xd0a607['attributes']=_[_0x1c90('0x33')](_0x35c843['model'],qs[_0x1c90('0x34')](_0x395edb[_0x1c90('0x32')]['fields']));_0xd0a607[_0x1c90('0x35')]=_0xd0a607[_0x1c90('0x35')]['length']?_0xd0a607[_0x1c90('0x35')]:_0x35c843[_0x1c90('0x30')];if(!_0x395edb[_0x1c90('0x32')][_0x1c90('0x36')](_0x1c90('0x37'))){_0xd0a607['limit']=qs['limit'](_0x395edb['query']['limit']);_0xd0a607['offset']=qs[_0x1c90('0x1a')](_0x395edb[_0x1c90('0x32')][_0x1c90('0x1a')]);}_0xd0a607['order']=qs[_0x1c90('0x38')](_0x395edb['query'][_0x1c90('0x38')]);_0xd0a607[_0x1c90('0x39')]=qs['filters'](_['pick'](_0x395edb[_0x1c90('0x32')],_0x35c843[_0x1c90('0x3a')]),_0xc1a571);if(_0x395edb[_0x1c90('0x32')][_0x1c90('0x3b')]){_0xd0a607[_0x1c90('0x39')]=_[_0x1c90('0x3c')](_0xd0a607[_0x1c90('0x39')],{'$or':_['map'](_0xc1a571,function(_0x508025){if(_0x508025[_0x1c90('0x2e')]!==_0x1c90('0x3d')){var _0x134501={};_0x134501[_0x508025[_0x1c90('0x27')]]={'$like':'%'+_0x395edb[_0x1c90('0x32')][_0x1c90('0x3b')]+'%'};return _0x134501;}})});}_0xd0a607=_[_0x1c90('0x3c')]({},_0xd0a607,_0x395edb[_0x1c90('0x3e')]);var _0x398ee9={'where':_0xd0a607[_0x1c90('0x39')]};return db['FreshdeskField'][_0x1c90('0x1d')](_0x398ee9)['then'](function(_0x5a8eea){_0x52c308[_0x1c90('0x1d')]=_0x5a8eea;if(_0x395edb['query']['includeAll']){_0xd0a607[_0x1c90('0x3f')]=[{'all':!![]}];}return db[_0x1c90('0x2b')]['findAll'](_0xd0a607);})[_0x1c90('0x24')](function(_0x3271ea){_0x52c308[_0x1c90('0x40')]=_0x3271ea;return _0x52c308;})[_0x1c90('0x24')](respondWithFilteredResult(_0x111e20,_0xd0a607))['catch'](handleError(_0x111e20,null));};exports['show']=function(_0x19e689,_0x171ca0){var _0x5680fe={'raw':!![],'where':{'id':_0x19e689['params']['id']}},_0x35952a={};_0x35952a[_0x1c90('0x30')]=_[_0x1c90('0x31')](db['FreshdeskField'][_0x1c90('0x2c')]);_0x35952a[_0x1c90('0x32')]=_[_0x1c90('0x31')](_0x19e689[_0x1c90('0x32')]);_0x35952a[_0x1c90('0x3a')]=_[_0x1c90('0x33')](_0x35952a[_0x1c90('0x30')],_0x35952a[_0x1c90('0x32')]);_0x5680fe[_0x1c90('0x35')]=_[_0x1c90('0x33')](_0x35952a[_0x1c90('0x30')],qs['fields'](_0x19e689[_0x1c90('0x32')]['fields']));_0x5680fe[_0x1c90('0x35')]=_0x5680fe['attributes']['length']?_0x5680fe[_0x1c90('0x35')]:_0x35952a[_0x1c90('0x30')];if(_0x19e689[_0x1c90('0x32')][_0x1c90('0x41')]){_0x5680fe[_0x1c90('0x3f')]=[{'all':!![]}];}_0x5680fe=_[_0x1c90('0x3c')]({},_0x5680fe,_0x19e689[_0x1c90('0x3e')]);return db[_0x1c90('0x2b')][_0x1c90('0x42')](_0x5680fe)['then'](handleEntityNotFound(_0x171ca0,null))['then'](respondWithResult(_0x171ca0,null))[_0x1c90('0x43')](handleError(_0x171ca0,null));};exports[_0x1c90('0x44')]=function(_0x68fac8,_0x2d30f5){return db[_0x1c90('0x2b')][_0x1c90('0x44')](_0x68fac8[_0x1c90('0x45')],{})[_0x1c90('0x24')](respondWithResult(_0x2d30f5,0xc9))['catch'](handleError(_0x2d30f5,null));};exports[_0x1c90('0x22')]=function(_0x24016a,_0x9524b6){if(_0x24016a['body']['id']){delete _0x24016a['body']['id'];}return db[_0x1c90('0x2b')]['find']({'where':{'id':_0x24016a[_0x1c90('0x46')]['id']}})['then'](handleEntityNotFound(_0x9524b6,null))['then'](saveUpdates(_0x24016a[_0x1c90('0x45')],null))[_0x1c90('0x24')](respondWithResult(_0x9524b6,null))['catch'](handleError(_0x9524b6,null));};exports['destroy']=function(_0x394177,_0x53f158){return db[_0x1c90('0x2b')][_0x1c90('0x42')]({'where':{'id':_0x394177[_0x1c90('0x46')]['id']}})[_0x1c90('0x24')](handleEntityNotFound(_0x53f158,null))['then'](removeEntity(_0x53f158,null))['catch'](handleError(_0x53f158,null));};
\ No newline at end of file
+var _0x1152=['stack','name','index','map','FreshdeskField','rawAttributes','key','model','query','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','includeAll','findAll','show','keys','include','merge','create','body','catch','update','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error'];(function(_0x573120,_0xb5cd55){var _0x442242=function(_0x4ce453){while(--_0x4ce453){_0x573120['push'](_0x573120['shift']());}};_0x442242(++_0xb5cd55);}(_0x1152,0x182));var _0x2115=function(_0x50b295,_0x420eaf){_0x50b295=_0x50b295-0x0;var _0x230324=_0x1152[_0x50b295];return _0x230324;};'use strict';var emlformat=require(_0x2115('0x0'));var rimraf=require(_0x2115('0x1'));var zipdir=require(_0x2115('0x2'));var jsonpatch=require(_0x2115('0x3'));var rp=require(_0x2115('0x4'));var moment=require(_0x2115('0x5'));var BPromise=require(_0x2115('0x6'));var Mustache=require(_0x2115('0x7'));var util=require('util');var path=require(_0x2115('0x8'));var sox=require('sox');var csv=require(_0x2115('0x9'));var ejs=require(_0x2115('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2115('0xb'));var toCsv=require(_0x2115('0x9'));var querystring=require(_0x2115('0xc'));var Papa=require('papaparse');var Redis=require(_0x2115('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2115('0xe'));var hardwareService=require(_0x2115('0xf'));var logger=require(_0x2115('0x10'))('api');var utils=require(_0x2115('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x2115('0x12'));var db=require(_0x2115('0x13'))['db'];function respondWithStatusCode(_0x2bb885,_0x33d38b){_0x33d38b=_0x33d38b||0xcc;return function(_0x22475e){if(_0x22475e){return _0x2bb885['sendStatus'](_0x33d38b);}return _0x2bb885[_0x2115('0x14')](_0x33d38b)['end']();};}function respondWithResult(_0x3727a3,_0x38e406){_0x38e406=_0x38e406||0xc8;return function(_0x17028e){if(_0x17028e){return _0x3727a3[_0x2115('0x14')](_0x38e406)[_0x2115('0x15')](_0x17028e);}};}function respondWithFilteredResult(_0x113ce2,_0x350969){return function(_0x5e8f81){if(_0x5e8f81){var _0xdf3e24=typeof _0x350969[_0x2115('0x16')]===_0x2115('0x17')&&typeof _0x350969[_0x2115('0x18')]===_0x2115('0x17');var _0x1bdef9=_0x5e8f81[_0x2115('0x19')];var _0x77e2c6=_0xdf3e24?0x0:_0x350969['offset'];var _0x154f69=_0xdf3e24?_0x5e8f81[_0x2115('0x19')]:_0x350969[_0x2115('0x16')]+_0x350969['limit'];var _0x2dfb3c;if(_0x154f69>=_0x1bdef9){_0x154f69=_0x1bdef9;_0x2dfb3c=0xc8;}else{_0x2dfb3c=0xce;}_0x113ce2[_0x2115('0x14')](_0x2dfb3c);return _0x113ce2[_0x2115('0x1a')](_0x2115('0x1b'),_0x77e2c6+'-'+_0x154f69+'/'+_0x1bdef9)[_0x2115('0x15')](_0x5e8f81);}return null;};}function patchUpdates(_0xcc2d7b){return function(_0x21d079){try{jsonpatch[_0x2115('0x1c')](_0x21d079,_0xcc2d7b,!![]);}catch(_0x464af4){return BPromise[_0x2115('0x1d')](_0x464af4);}return _0x21d079[_0x2115('0x1e')]();};}function saveUpdates(_0x8b7304,_0x8e37c){return function(_0x13fde1){if(_0x13fde1){return _0x13fde1['update'](_0x8b7304)[_0x2115('0x1f')](function(_0x340c42){return _0x340c42;});}return null;};}function removeEntity(_0x40d19f,_0x4ac436){return function(_0x27c2f5){if(_0x27c2f5){return _0x27c2f5[_0x2115('0x20')]()['then'](function(){_0x40d19f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x201c94,_0x5e9d07){return function(_0x1a2ec3){if(!_0x1a2ec3){_0x201c94['sendStatus'](0x194);}return _0x1a2ec3;};}function handleError(_0x1283ec,_0x115800){_0x115800=_0x115800||0x1f4;return function(_0x1b7f47){logger[_0x2115('0x21')](_0x1b7f47[_0x2115('0x22')]);if(_0x1b7f47['name']){delete _0x1b7f47[_0x2115('0x23')];}_0x1283ec[_0x2115('0x14')](_0x115800)['send'](_0x1b7f47);};}exports[_0x2115('0x24')]=function(_0x33d81c,_0x26eff7){var _0x1262e7={},_0x59ca70={},_0x19c595={'count':0x0,'rows':[]};var _0x15229e=_[_0x2115('0x25')](db[_0x2115('0x26')][_0x2115('0x27')],function(_0x27969d){return{'name':_0x27969d['fieldName'],'type':_0x27969d['type'][_0x2115('0x28')]};});_0x59ca70[_0x2115('0x29')]=_[_0x2115('0x25')](_0x15229e,_0x2115('0x23'));_0x59ca70[_0x2115('0x2a')]=_['keys'](_0x33d81c[_0x2115('0x2a')]);_0x59ca70[_0x2115('0x2b')]=_[_0x2115('0x2c')](_0x59ca70['model'],_0x59ca70[_0x2115('0x2a')]);_0x1262e7['attributes']=_[_0x2115('0x2c')](_0x59ca70['model'],qs[_0x2115('0x2d')](_0x33d81c[_0x2115('0x2a')][_0x2115('0x2d')]));_0x1262e7['attributes']=_0x1262e7['attributes'][_0x2115('0x2e')]?_0x1262e7[_0x2115('0x2f')]:_0x59ca70['model'];if(!_0x33d81c[_0x2115('0x2a')][_0x2115('0x30')](_0x2115('0x31'))){_0x1262e7[_0x2115('0x18')]=qs['limit'](_0x33d81c[_0x2115('0x2a')][_0x2115('0x18')]);_0x1262e7[_0x2115('0x16')]=qs[_0x2115('0x16')](_0x33d81c['query'][_0x2115('0x16')]);}_0x1262e7[_0x2115('0x32')]=qs[_0x2115('0x33')](_0x33d81c[_0x2115('0x2a')][_0x2115('0x33')]);_0x1262e7[_0x2115('0x34')]=qs['filters'](_[_0x2115('0x35')](_0x33d81c[_0x2115('0x2a')],_0x59ca70[_0x2115('0x2b')]),_0x15229e);if(_0x33d81c[_0x2115('0x2a')][_0x2115('0x36')]){_0x1262e7[_0x2115('0x34')]=_['merge'](_0x1262e7[_0x2115('0x34')],{'$or':_['map'](_0x15229e,function(_0x59b531){if(_0x59b531[_0x2115('0x37')]!==_0x2115('0x38')){var _0x4572f3={};_0x4572f3[_0x59b531[_0x2115('0x23')]]={'$like':'%'+_0x33d81c[_0x2115('0x2a')][_0x2115('0x36')]+'%'};return _0x4572f3;}})});}_0x1262e7=_['merge']({},_0x1262e7,_0x33d81c[_0x2115('0x39')]);var _0x1c2508={'where':_0x1262e7[_0x2115('0x34')]};return db[_0x2115('0x26')][_0x2115('0x19')](_0x1c2508)[_0x2115('0x1f')](function(_0x1aa165){_0x19c595[_0x2115('0x19')]=_0x1aa165;if(_0x33d81c[_0x2115('0x2a')][_0x2115('0x3a')]){_0x1262e7['include']=[{'all':!![]}];}return db['FreshdeskField'][_0x2115('0x3b')](_0x1262e7);})['then'](function(_0xa652de){_0x19c595['rows']=_0xa652de;return _0x19c595;})['then'](respondWithFilteredResult(_0x26eff7,_0x1262e7))['catch'](handleError(_0x26eff7,null));};exports[_0x2115('0x3c')]=function(_0x40d5d6,_0x11b840){var _0x96847d={'raw':!![],'where':{'id':_0x40d5d6['params']['id']}},_0x16f022={};_0x16f022[_0x2115('0x29')]=_['keys'](db[_0x2115('0x26')][_0x2115('0x27')]);_0x16f022['query']=_[_0x2115('0x3d')](_0x40d5d6[_0x2115('0x2a')]);_0x16f022['filters']=_['intersection'](_0x16f022[_0x2115('0x29')],_0x16f022[_0x2115('0x2a')]);_0x96847d['attributes']=_['intersection'](_0x16f022[_0x2115('0x29')],qs[_0x2115('0x2d')](_0x40d5d6['query']['fields']));_0x96847d[_0x2115('0x2f')]=_0x96847d[_0x2115('0x2f')][_0x2115('0x2e')]?_0x96847d['attributes']:_0x16f022[_0x2115('0x29')];if(_0x40d5d6['query'][_0x2115('0x3a')]){_0x96847d[_0x2115('0x3e')]=[{'all':!![]}];}_0x96847d=_[_0x2115('0x3f')]({},_0x96847d,_0x40d5d6[_0x2115('0x39')]);return db[_0x2115('0x26')]['find'](_0x96847d)[_0x2115('0x1f')](handleEntityNotFound(_0x11b840,null))['then'](respondWithResult(_0x11b840,null))['catch'](handleError(_0x11b840,null));};exports[_0x2115('0x40')]=function(_0xa67937,_0x583575){return db[_0x2115('0x26')][_0x2115('0x40')](_0xa67937[_0x2115('0x41')],{})[_0x2115('0x1f')](respondWithResult(_0x583575,0xc9))[_0x2115('0x42')](handleError(_0x583575,null));};exports[_0x2115('0x43')]=function(_0x41d1a4,_0x347f16){if(_0x41d1a4[_0x2115('0x41')]['id']){delete _0x41d1a4['body']['id'];}return db[_0x2115('0x26')][_0x2115('0x44')]({'where':{'id':_0x41d1a4[_0x2115('0x45')]['id']}})['then'](handleEntityNotFound(_0x347f16,null))[_0x2115('0x1f')](saveUpdates(_0x41d1a4['body'],null))['then'](respondWithResult(_0x347f16,null))['catch'](handleError(_0x347f16,null));};exports[_0x2115('0x20')]=function(_0x24d601,_0x4820c7){return db['FreshdeskField'][_0x2115('0x44')]({'where':{'id':_0x24d601[_0x2115('0x45')]['id']}})[_0x2115('0x1f')](handleEntityNotFound(_0x4820c7,null))[_0x2115('0x1f')](removeEntity(_0x4820c7,null))[_0x2115('0x42')](handleError(_0x4820c7,null));};
\ No newline at end of file
index 514a0cd..492f417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bba=['freshdesk_unique_index','idField','FieldId','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields'];(function(_0x501207,_0x15bc19){var _0x24e430=function(_0x1c8414){while(--_0x1c8414){_0x501207['push'](_0x501207['shift']());}};_0x24e430(++_0x15bc19);}(_0x0bba,0x143));var _0xa0bb=function(_0x2fdab0,_0x2e89cc){_0x2fdab0=_0x2fdab0-0x0;var _0x57f941=_0x0bba[_0x2fdab0];return _0x57f941;};'use strict';var _=require('lodash');var util=require(_0xa0bb('0x0'));var logger=require(_0xa0bb('0x1'))(_0xa0bb('0x2'));var moment=require(_0xa0bb('0x3'));var BPromise=require('bluebird');var rp=require(_0xa0bb('0x4'));var fs=require('fs');var path=require(_0xa0bb('0x5'));var rimraf=require(_0xa0bb('0x6'));var config=require(_0xa0bb('0x7'));var attributes=require(_0xa0bb('0x8'));module[_0xa0bb('0x9')]=function(_0x50fa7f,_0x3e7459){return _0x50fa7f[_0xa0bb('0xa')](_0xa0bb('0xb'),attributes,{'tableName':_0xa0bb('0xc'),'paranoid':![],'indexes':[{'name':_0xa0bb('0xd'),'fields':[_0xa0bb('0xe'),_0xa0bb('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d82=['lodash','../../config/logger','moment','bluebird','path','../../config/environment','exports','define','FreshdeskField','freshdesk_unique_index','idField','FieldId'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x7d82,0x174));var _0x27d8=function(_0x7f3608,_0x3b30c9){_0x7f3608=_0x7f3608-0x0;var _0x44b9bf=_0x7d82[_0x7f3608];return _0x44b9bf;};'use strict';var _=require(_0x27d8('0x0'));var util=require('util');var logger=require(_0x27d8('0x1'))('api');var moment=require(_0x27d8('0x2'));var BPromise=require(_0x27d8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x27d8('0x4'));var rimraf=require('rimraf');var config=require(_0x27d8('0x5'));var attributes=require('./intFreshdeskField.attributes');module[_0x27d8('0x6')]=function(_0x449d6a,_0x459925){return _0x449d6a[_0x27d8('0x7')](_0x27d8('0x8'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0x27d8('0x9'),'fields':[_0x27d8('0xa'),_0x27d8('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 080a65c..a204503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfd2=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x2b5513,_0x3fe5cd){var _0x578fd2=function(_0x7a9106){while(--_0x7a9106){_0x2b5513['push'](_0x2b5513['shift']());}};_0x578fd2(++_0x3fe5cd);}(_0xcfd2,0xac));var _0x2cfd=function(_0x51ba68,_0x2f9d25){_0x51ba68=_0x51ba68-0x0;var _0x3c6a43=_0xcfd2[_0x51ba68];return _0x3c6a43;};'use strict';var _=require(_0x2cfd('0x0'));var util=require(_0x2cfd('0x1'));var moment=require(_0x2cfd('0x2'));var BPromise=require(_0x2cfd('0x3'));var rs=require(_0x2cfd('0x4'));var fs=require('fs');var Redis=require(_0x2cfd('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2cfd('0x6'))(_0x2cfd('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x49268d,_0x37607f,_0x578dd7){return new BPromise(function(_0x47de81,_0x4be6c4){return client['request'](_0x49268d,_0x578dd7)[_0x2cfd('0x8')](function(_0x505d6b){logger['info'](_0x2cfd('0x9'),_0x37607f,_0x2cfd('0xa'));logger[_0x2cfd('0xb')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x37607f,_0x2cfd('0xa'),JSON[_0x2cfd('0xc')](_0x505d6b));if(_0x505d6b[_0x2cfd('0xd')]){if(_0x505d6b[_0x2cfd('0xd')][_0x2cfd('0xe')]===0x1f4){logger[_0x2cfd('0xd')](_0x2cfd('0x9'),_0x37607f,_0x505d6b[_0x2cfd('0xd')][_0x2cfd('0xf')]);return _0x4be6c4(_0x505d6b[_0x2cfd('0xd')]['message']);}logger[_0x2cfd('0xd')](_0x2cfd('0x9'),_0x37607f,_0x505d6b['error'][_0x2cfd('0xf')]);return _0x47de81(_0x505d6b[_0x2cfd('0xd')]['message']);}else{logger['info']('FreshdeskField,\x20%s,\x20%s',_0x37607f,_0x2cfd('0xa'));_0x47de81(_0x505d6b[_0x2cfd('0x10')]['message']);}})['catch'](function(_0x54fc03){logger[_0x2cfd('0xd')](_0x2cfd('0x9'),_0x37607f,_0x54fc03);_0x4be6c4(_0x54fc03);});});}
\ No newline at end of file
+var _0xde0d=['FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','debug'];(function(_0x3b2369,_0x4c68b9){var _0x5a1367=function(_0x58ddcf){while(--_0x58ddcf){_0x3b2369['push'](_0x3b2369['shift']());}};_0x5a1367(++_0x4c68b9);}(_0xde0d,0x14d));var _0xdde0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xde0d[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xdde0('0x0'));var moment=require(_0xdde0('0x1'));var BPromise=require(_0xdde0('0x2'));var rs=require(_0xdde0('0x3'));var fs=require('fs');var Redis=require(_0xdde0('0x4'));var db=require(_0xdde0('0x5'))['db'];var utils=require(_0xdde0('0x6'));var logger=require(_0xdde0('0x7'))(_0xdde0('0x8'));var config=require(_0xdde0('0x9'));var jayson=require(_0xdde0('0xa'));var client=jayson[_0xdde0('0xb')][_0xdde0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x387991,_0x10e248,_0x3cce3c){return new BPromise(function(_0x5f07cf,_0x5331c6){return client[_0xdde0('0xd')](_0x387991,_0x3cce3c)[_0xdde0('0xe')](function(_0x573ddb){logger['info'](_0xdde0('0xf'),_0x10e248,'request\x20sent');logger[_0xdde0('0x10')](_0xdde0('0x11'),_0x10e248,_0xdde0('0x12'),JSON[_0xdde0('0x13')](_0x573ddb));if(_0x573ddb['error']){if(_0x573ddb[_0xdde0('0x14')][_0xdde0('0x15')]===0x1f4){logger[_0xdde0('0x14')]('FreshdeskField,\x20%s,\x20%s',_0x10e248,_0x573ddb[_0xdde0('0x14')][_0xdde0('0x16')]);return _0x5331c6(_0x573ddb[_0xdde0('0x14')][_0xdde0('0x16')]);}logger['error'](_0xdde0('0xf'),_0x10e248,_0x573ddb[_0xdde0('0x14')]['message']);return _0x5f07cf(_0x573ddb[_0xdde0('0x14')][_0xdde0('0x16')]);}else{logger[_0xdde0('0x17')](_0xdde0('0xf'),_0x10e248,_0xdde0('0x12'));_0x5f07cf(_0x573ddb[_0xdde0('0x18')]['message']);}})['catch'](function(_0x5073ea){logger[_0xdde0('0x14')]('FreshdeskField,\x20%s,\x20%s',_0x10e248,_0x5073ea);_0x5331c6(_0x5073ea);});});}
\ No newline at end of file
index 0117d7a..b406eba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['/:id/configurations','getConfigurations','/:id/fields','post','create','put','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x37b872,_0x44df08){var _0x90a7ad=function(_0x3de547){while(--_0x3de547){_0x37b872['push'](_0x37b872['shift']());}};_0x90a7ad(++_0x44df08);}(_0x1339,0x1ed));var _0x9133=function(_0x1bcab9,_0x3be778){_0x1bcab9=_0x1bcab9-0x0;var _0x4696f7=_0x1339[_0x1bcab9];return _0x4696f7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9133('0x0'));var timeout=require(_0x9133('0x1'));var express=require(_0x9133('0x2'));var router=express[_0x9133('0x3')]();var fs_extra=require(_0x9133('0x4'));var auth=require(_0x9133('0x5'));var interaction=require(_0x9133('0x6'));var config=require(_0x9133('0x7'));var controller=require('./intFreshsalesAccount.controller');router[_0x9133('0x8')]('/',auth[_0x9133('0x9')](),controller[_0x9133('0xa')]);router['get'](_0x9133('0xb'),auth[_0x9133('0x9')](),controller[_0x9133('0xc')]);router[_0x9133('0x8')](_0x9133('0xd'),auth[_0x9133('0x9')](),controller[_0x9133('0xe')]);router[_0x9133('0x8')](_0x9133('0xf'),auth[_0x9133('0x9')](),controller['getFields']);router[_0x9133('0x10')]('/',auth[_0x9133('0x9')](),controller[_0x9133('0x11')]);router[_0x9133('0x10')](_0x9133('0xd'),auth[_0x9133('0x9')](),controller['addConfiguration']);router[_0x9133('0x12')](_0x9133('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x9133('0x13')]('/:id',auth[_0x9133('0x9')](),controller[_0x9133('0x14')]);module[_0x9133('0x15')]=router;
\ No newline at end of file
+var _0x0972=['create','addConfiguration','put','/:id','update','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show','/:id/configurations','/:id/fields','getFields','post'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x0972,0x64));var _0x2097=function(_0x43b79c,_0x2c31f1){_0x43b79c=_0x43b79c-0x0;var _0x436d2f=_0x0972[_0x43b79c];return _0x436d2f;};'use strict';var multer=require('multer');var util=require(_0x2097('0x0'));var path=require('path');var timeout=require(_0x2097('0x1'));var express=require('express');var router=express[_0x2097('0x2')]();var fs_extra=require(_0x2097('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2097('0x4'));var config=require(_0x2097('0x5'));var controller=require(_0x2097('0x6'));router[_0x2097('0x7')]('/',auth[_0x2097('0x8')](),controller[_0x2097('0x9')]);router[_0x2097('0x7')]('/:id',auth[_0x2097('0x8')](),controller[_0x2097('0xa')]);router[_0x2097('0x7')](_0x2097('0xb'),auth[_0x2097('0x8')](),controller['getConfigurations']);router[_0x2097('0x7')](_0x2097('0xc'),auth[_0x2097('0x8')](),controller[_0x2097('0xd')]);router[_0x2097('0xe')]('/',auth[_0x2097('0x8')](),controller[_0x2097('0xf')]);router[_0x2097('0xe')](_0x2097('0xb'),auth[_0x2097('0x8')](),controller[_0x2097('0x10')]);router[_0x2097('0x11')](_0x2097('0x12'),auth[_0x2097('0x8')](),controller[_0x2097('0x13')]);router[_0x2097('0x14')](_0x2097('0x12'),auth[_0x2097('0x8')](),controller[_0x2097('0x15')]);module[_0x2097('0x16')]=router;
\ No newline at end of file
index aa59a76..e76b3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['STRING','username','remoteUri','exports'];(function(_0x32a767,_0x4e3e76){var _0x2b4e6d=function(_0x5e0702){while(--_0x5e0702){_0x32a767['push'](_0x32a767['shift']());}};_0x2b4e6d(++_0x4e3e76);}(_0x1967,0x173));var _0x7196=function(_0x1a9fd4,_0x4c7c7b){_0x1a9fd4=_0x1a9fd4-0x0;var _0x466df5=_0x1967[_0x1a9fd4];return _0x466df5;};'use strict';var Sequelize=require('sequelize');module[_0x7196('0x0')]={'name':{'type':Sequelize[_0x7196('0x1')]},'description':{'type':Sequelize[_0x7196('0x1')]},'username':{'type':Sequelize[_0x7196('0x1')],'unique':_0x7196('0x2')},'apiKey':{'type':Sequelize[_0x7196('0x1')]},'remoteUri':{'type':Sequelize[_0x7196('0x1')],'unique':_0x7196('0x3')},'serverUrl':{'type':Sequelize[_0x7196('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb145=['STRING','username','remoteUri','exports'];(function(_0x550e29,_0x4047f){var _0x3515b6=function(_0x303fe2){while(--_0x303fe2){_0x550e29['push'](_0x550e29['shift']());}};_0x3515b6(++_0x4047f);}(_0xb145,0xa3));var _0x5b14=function(_0x211289,_0x524c01){_0x211289=_0x211289-0x0;var _0x54faab=_0xb145[_0x211289];return _0x54faab;};'use strict';var Sequelize=require('sequelize');module[_0x5b14('0x0')]={'name':{'type':Sequelize[_0x5b14('0x1')]},'description':{'type':Sequelize[_0x5b14('0x1')]},'username':{'type':Sequelize[_0x5b14('0x1')],'unique':_0x5b14('0x2')},'apiKey':{'type':Sequelize[_0x5b14('0x1')]},'remoteUri':{'type':Sequelize[_0x5b14('0x1')],'unique':_0x5b14('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index e68d378..0e36e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4505=['order','getConfigurations','AccountId','Subjects','getSubjects','type','channel','FreshsalesConfiguration','FreshsalesField','Descriptions','username','remoteUri','apiKey','slice','substring','GET','format','/api/selector/owners','Token\x20token=','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','to-csv','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','FreshsalesAccount','includeAll','include','rows','catch','show','params','find','create','body','findOne'];(function(_0x2fb53d,_0x38fe77){var _0x234112=function(_0x209a9f){while(--_0x209a9f){_0x2fb53d['push'](_0x2fb53d['shift']());}};_0x234112(++_0x38fe77);}(_0x4505,0xd7));var _0x5450=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x4505[_0x1caf6a];return _0x1bf493;};'use strict';var emlformat=require(_0x5450('0x0'));var rimraf=require(_0x5450('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5450('0x2'));var rp=require(_0x5450('0x3'));var moment=require(_0x5450('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5450('0x5'));var path=require(_0x5450('0x6'));var sox=require('sox');var csv=require(_0x5450('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5450('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5450('0x9'));var toCsv=require(_0x5450('0x7'));var querystring=require(_0x5450('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5450('0xb'));var qs=require(_0x5450('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5450('0xd'))(_0x5450('0xe'));var utils=require('../../config/utils');var config=require(_0x5450('0xf'));var licenseUtil=require(_0x5450('0x10'));var db=require(_0x5450('0x11'))['db'];var integrations=require(_0x5450('0x12'));function respondWithStatusCode(_0x322253,_0x345f29){_0x345f29=_0x345f29||0xcc;return function(_0x4a0382){if(_0x4a0382){return _0x322253[_0x5450('0x13')](_0x345f29);}return _0x322253[_0x5450('0x14')](_0x345f29)[_0x5450('0x15')]();};}function respondWithResult(_0x27773a,_0x5674a8){_0x5674a8=_0x5674a8||0xc8;return function(_0x1beb0c){if(_0x1beb0c){return _0x27773a[_0x5450('0x14')](_0x5674a8)['json'](_0x1beb0c);}};}function respondWithFilteredResult(_0x221c12,_0x30be39){return function(_0x43e571){if(_0x43e571){var _0x560200=typeof _0x30be39['offset']===_0x5450('0x16')&&typeof _0x30be39[_0x5450('0x17')]===_0x5450('0x16');var _0x53a3f9=_0x43e571['count'];var _0xc6cd7e=_0x560200?0x0:_0x30be39[_0x5450('0x18')];var _0xe09d86=_0x560200?_0x43e571[_0x5450('0x19')]:_0x30be39['offset']+_0x30be39[_0x5450('0x17')];var _0x270b6c;if(_0xe09d86>=_0x53a3f9){_0xe09d86=_0x53a3f9;_0x270b6c=0xc8;}else{_0x270b6c=0xce;}_0x221c12['status'](_0x270b6c);return _0x221c12[_0x5450('0x1a')](_0x5450('0x1b'),_0xc6cd7e+'-'+_0xe09d86+'/'+_0x53a3f9)['json'](_0x43e571);}return null;};}function patchUpdates(_0xa23159){return function(_0x9bad9e){try{jsonpatch['apply'](_0x9bad9e,_0xa23159,!![]);}catch(_0x316883){return BPromise[_0x5450('0x1c')](_0x316883);}return _0x9bad9e[_0x5450('0x1d')]();};}function saveUpdates(_0x588773,_0x4c20a9){return function(_0x92f2f3){if(_0x92f2f3){return _0x92f2f3[_0x5450('0x1e')](_0x588773)[_0x5450('0x1f')](function(_0x526467){return _0x526467;});}return null;};}function removeEntity(_0x2b6cac,_0xfa49fd){return function(_0x6aedc4){if(_0x6aedc4){return _0x6aedc4[_0x5450('0x20')]()[_0x5450('0x1f')](function(){_0x2b6cac[_0x5450('0x14')](0xcc)[_0x5450('0x15')]();});}};}function handleEntityNotFound(_0x52cede,_0x19ea30){return function(_0x133b20){if(!_0x133b20){_0x52cede[_0x5450('0x13')](0x194);}return _0x133b20;};}function handleError(_0xac21b7,_0x2c6fa0){_0x2c6fa0=_0x2c6fa0||0x1f4;return function(_0x5bc18c){logger[_0x5450('0x21')](_0x5bc18c[_0x5450('0x22')]);if(_0x5bc18c[_0x5450('0x23')]){delete _0x5bc18c[_0x5450('0x23')];}_0xac21b7[_0x5450('0x14')](_0x2c6fa0)[_0x5450('0x24')](_0x5bc18c);};}exports['index']=function(_0x28ea0,_0x11f472){var _0x509d0f={},_0x5d8646={},_0x8f0866={'count':0x0,'rows':[]};var _0x365dd2=_[_0x5450('0x25')](db['FreshsalesAccount'][_0x5450('0x26')],function(_0x170714){return{'name':_0x170714['fieldName'],'type':_0x170714['type'][_0x5450('0x27')]};});_0x5d8646['model']=_[_0x5450('0x25')](_0x365dd2,_0x5450('0x23'));_0x5d8646[_0x5450('0x28')]=_[_0x5450('0x29')](_0x28ea0[_0x5450('0x28')]);_0x5d8646[_0x5450('0x2a')]=_[_0x5450('0x2b')](_0x5d8646[_0x5450('0x2c')],_0x5d8646[_0x5450('0x28')]);_0x509d0f[_0x5450('0x2d')]=_[_0x5450('0x2b')](_0x5d8646[_0x5450('0x2c')],qs[_0x5450('0x2e')](_0x28ea0[_0x5450('0x28')][_0x5450('0x2e')]));_0x509d0f[_0x5450('0x2d')]=_0x509d0f[_0x5450('0x2d')][_0x5450('0x2f')]?_0x509d0f[_0x5450('0x2d')]:_0x5d8646[_0x5450('0x2c')];if(!_0x28ea0[_0x5450('0x28')][_0x5450('0x30')](_0x5450('0x31'))){_0x509d0f[_0x5450('0x17')]=qs['limit'](_0x28ea0[_0x5450('0x28')][_0x5450('0x17')]);_0x509d0f[_0x5450('0x18')]=qs[_0x5450('0x18')](_0x28ea0[_0x5450('0x28')][_0x5450('0x18')]);}_0x509d0f['order']=qs[_0x5450('0x32')](_0x28ea0['query'][_0x5450('0x32')]);_0x509d0f[_0x5450('0x33')]=qs['filters'](_[_0x5450('0x34')](_0x28ea0[_0x5450('0x28')],_0x5d8646[_0x5450('0x2a')]),_0x365dd2);if(_0x28ea0[_0x5450('0x28')][_0x5450('0x35')]){_0x509d0f[_0x5450('0x33')]=_[_0x5450('0x36')](_0x509d0f[_0x5450('0x33')],{'$or':_[_0x5450('0x25')](_0x365dd2,function(_0x346e93){if(_0x346e93['type']!=='VIRTUAL'){var _0x5b3377={};_0x5b3377[_0x346e93[_0x5450('0x23')]]={'$like':'%'+_0x28ea0[_0x5450('0x28')][_0x5450('0x35')]+'%'};return _0x5b3377;}})});}_0x509d0f=_[_0x5450('0x36')]({},_0x509d0f,_0x28ea0[_0x5450('0x37')]);var _0x22ddba={'where':_0x509d0f[_0x5450('0x33')]};return db[_0x5450('0x38')][_0x5450('0x19')](_0x22ddba)[_0x5450('0x1f')](function(_0xe9e6df){_0x8f0866[_0x5450('0x19')]=_0xe9e6df;if(_0x28ea0[_0x5450('0x28')][_0x5450('0x39')]){_0x509d0f[_0x5450('0x3a')]=[{'all':!![]}];}return db[_0x5450('0x38')]['findAll'](_0x509d0f);})[_0x5450('0x1f')](function(_0x1422ce){_0x8f0866[_0x5450('0x3b')]=_0x1422ce;return _0x8f0866;})[_0x5450('0x1f')](respondWithFilteredResult(_0x11f472,_0x509d0f))[_0x5450('0x3c')](handleError(_0x11f472,null));};exports[_0x5450('0x3d')]=function(_0x3c02b1,_0x439ab5){var _0x24a026={'raw':![],'where':{'id':_0x3c02b1[_0x5450('0x3e')]['id']}},_0x1534c0={};_0x1534c0['model']=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0x1534c0[_0x5450('0x28')]=_['keys'](_0x3c02b1['query']);_0x1534c0[_0x5450('0x2a')]=_['intersection'](_0x1534c0[_0x5450('0x2c')],_0x1534c0[_0x5450('0x28')]);_0x24a026['attributes']=_[_0x5450('0x2b')](_0x1534c0[_0x5450('0x2c')],qs[_0x5450('0x2e')](_0x3c02b1[_0x5450('0x28')][_0x5450('0x2e')]));_0x24a026[_0x5450('0x2d')]=_0x24a026[_0x5450('0x2d')][_0x5450('0x2f')]?_0x24a026[_0x5450('0x2d')]:_0x1534c0[_0x5450('0x2c')];if(_0x3c02b1[_0x5450('0x28')][_0x5450('0x39')]){_0x24a026[_0x5450('0x3a')]=[{'all':!![]}];}_0x24a026=_[_0x5450('0x36')]({},_0x24a026,_0x3c02b1[_0x5450('0x37')]);return db[_0x5450('0x38')][_0x5450('0x3f')](_0x24a026)[_0x5450('0x1f')](handleEntityNotFound(_0x439ab5,null))['then'](respondWithResult(_0x439ab5,null))['catch'](handleError(_0x439ab5,null));};exports[_0x5450('0x40')]=function(_0x3c34b3,_0x4d93b3){return db[_0x5450('0x38')][_0x5450('0x40')](_0x3c34b3[_0x5450('0x41')],{})[_0x5450('0x1f')](respondWithResult(_0x4d93b3,0xc9))[_0x5450('0x3c')](handleError(_0x4d93b3,null));};exports[_0x5450('0x1e')]=function(_0x52b69d,_0x3daa40){if(_0x52b69d['body']['id']){delete _0x52b69d[_0x5450('0x41')]['id'];}return db[_0x5450('0x38')][_0x5450('0x3f')]({'where':{'id':_0x52b69d[_0x5450('0x3e')]['id']}})[_0x5450('0x1f')](handleEntityNotFound(_0x3daa40,null))[_0x5450('0x1f')](saveUpdates(_0x52b69d[_0x5450('0x41')],null))[_0x5450('0x1f')](respondWithResult(_0x3daa40,null))[_0x5450('0x3c')](handleError(_0x3daa40,null));};exports[_0x5450('0x20')]=function(_0x499d61,_0x4cf876){return db[_0x5450('0x38')][_0x5450('0x3f')]({'where':{'id':_0x499d61[_0x5450('0x3e')]['id']}})[_0x5450('0x1f')](handleEntityNotFound(_0x4cf876,null))['then'](removeEntity(_0x4cf876,null))['catch'](handleError(_0x4cf876,null));};exports['getConfigurations']=function(_0xd4e7b0,_0x25a357,_0x524b2d){var _0x4999fc={};var _0x2004ec={};var _0xad8cec;var _0x4dd400;return db[_0x5450('0x38')][_0x5450('0x42')]({'where':{'id':_0xd4e7b0[_0x5450('0x3e')]['id']}})[_0x5450('0x1f')](handleEntityNotFound(_0x25a357,null))[_0x5450('0x1f')](function(_0x6b7f65){if(_0x6b7f65){_0xad8cec=_0x6b7f65;_0x2004ec[_0x5450('0x2c')]=_[_0x5450('0x29')](db['FreshsalesConfiguration'][_0x5450('0x26')]);_0x2004ec[_0x5450('0x28')]=_[_0x5450('0x29')](_0xd4e7b0['query']);_0x2004ec[_0x5450('0x2a')]=_[_0x5450('0x2b')](_0x2004ec['model'],_0x2004ec[_0x5450('0x28')]);_0x4999fc['attributes']=_[_0x5450('0x2b')](_0x2004ec['model'],qs[_0x5450('0x2e')](_0xd4e7b0[_0x5450('0x28')][_0x5450('0x2e')]));_0x4999fc[_0x5450('0x2d')]=_0x4999fc[_0x5450('0x2d')][_0x5450('0x2f')]?_0x4999fc[_0x5450('0x2d')]:_0x2004ec[_0x5450('0x2c')];_0x4999fc[_0x5450('0x43')]=qs[_0x5450('0x32')](_0xd4e7b0['query'][_0x5450('0x32')]);_0x4999fc[_0x5450('0x33')]=qs['filters'](_[_0x5450('0x34')](_0xd4e7b0[_0x5450('0x28')],_0x2004ec['filters']));if(_0xd4e7b0[_0x5450('0x28')][_0x5450('0x35')]){_0x4999fc[_0x5450('0x33')]=_[_0x5450('0x36')](_0x4999fc[_0x5450('0x33')],{'$or':_['map'](_0x4999fc[_0x5450('0x2d')],function(_0x1311fd){var _0x510709={};_0x510709[_0x1311fd]={'$like':'%'+_0xd4e7b0[_0x5450('0x28')][_0x5450('0x35')]+'%'};return _0x510709;})});}_0x4999fc=_['merge']({},_0x4999fc,_0xd4e7b0[_0x5450('0x37')]);return _0xad8cec[_0x5450('0x44')](_0x4999fc);}})[_0x5450('0x1f')](function(_0x528183){if(_0x528183){_0x4dd400=_0x528183[_0x5450('0x2f')];if(!_0xd4e7b0['query'][_0x5450('0x30')]('nolimit')){_0x4999fc[_0x5450('0x17')]=qs[_0x5450('0x17')](_0xd4e7b0['query'][_0x5450('0x17')]);_0x4999fc['offset']=qs[_0x5450('0x18')](_0xd4e7b0[_0x5450('0x28')][_0x5450('0x18')]);}return _0xad8cec[_0x5450('0x44')](_0x4999fc);}})['then'](function(_0xd28070){if(_0xd28070){return _0xd28070?{'count':_0x4dd400,'rows':_0xd28070}:null;}})[_0x5450('0x1f')](respondWithResult(_0x25a357,null))[_0x5450('0x3c')](handleError(_0x25a357,null));};exports['addConfiguration']=function(_0x2b94ad,_0x4d2791,_0x674e89){if(_0x2b94ad['body']['id']){delete _0x2b94ad['body']['id'];}return db[_0x5450('0x38')][_0x5450('0x42')]({'where':{'id':_0x2b94ad[_0x5450('0x3e')]['id']}})['then'](handleEntityNotFound(_0x4d2791,null))[_0x5450('0x1f')](function(_0x3d5803){if(_0x3d5803){_0x2b94ad['body'][_0x5450('0x45')]=_0x3d5803['id'];_0x2b94ad[_0x5450('0x41')][_0x5450('0x46')]=integrations[_0x5450('0x47')](_0x2b94ad[_0x5450('0x41')]['channel'],_0x2b94ad['body'][_0x5450('0x48')]);_0x2b94ad[_0x5450('0x41')]['Descriptions']=integrations['getDescriptions'](_0x2b94ad['body'][_0x5450('0x49')],_0x2b94ad[_0x5450('0x41')]['type']);return db[_0x5450('0x4a')][_0x5450('0x40')](_0x2b94ad[_0x5450('0x41')],{'include':[{'model':db[_0x5450('0x4b')],'as':_0x5450('0x46')},{'model':db[_0x5450('0x4b')],'as':_0x5450('0x4c')}]});}return null;})[_0x5450('0x1f')](respondWithResult(_0x4d2791,null))[_0x5450('0x3c')](handleError(_0x4d2791,null));};exports['getFields']=function(_0x2a0340,_0x2bc3b6,_0x4a7cf5){var _0xe75f79='';var _0x23cad1='';return db['FreshsalesAccount'][_0x5450('0x42')]({'where':{'id':_0x2a0340['params']['id']},'attributes':['id',_0x5450('0x4d'),_0x5450('0x4e'),_0x5450('0x4f')]})[_0x5450('0x1f')](handleEntityNotFound(_0x2bc3b6,null))['then'](function(_0x45a476){if(_0x45a476){_0x23cad1=_0x45a476['username'];_0xe75f79=_0x45a476['remoteUri'];var _0x488d55=_0x45a476['remoteUri'][_0x5450('0x50')](-0x1);if(_0x488d55==='/'){_0xe75f79=_0xe75f79[_0x5450('0x51')](0x0,_0xe75f79['lastIndexOf'](_0x488d55));}return rp({'method':_0x5450('0x52'),'uri':util[_0x5450('0x53')]('%s%s',_0xe75f79,_0x5450('0x54')),'headers':{'Authorization':_0x5450('0x55')+_0x45a476[_0x5450('0x4f')]},'json':!![]});}})['then'](function(_0x44e231){if(_0x44e231){var _0x3da35b=_0x44e231['users'];var _0x5f192c=![];var _0x441bef=null;for(_0x441bef=0x0;_0x441bef<_0x3da35b['length'];_0x441bef++){if(_0x3da35b[_0x441bef][_0x5450('0x56')]===_0x23cad1){_0x5f192c=!![];}}if(_0x5f192c){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x5450('0x57')});}}})[_0x5450('0x1f')](respondWithResult(_0x2bc3b6,null))[_0x5450('0x3c')](function(_0x3f86cf){var _0x459c08=_0x2a0340['query'][_0x5450('0x58')]?0x1f4:_0x3f86cf[_0x5450('0x59')]||0x1f4;logger[_0x5450('0x21')](_0x5450('0x5a'),_0x5450('0x5b'),_0x459c08,JSON[_0x5450('0x5c')](_0x3f86cf));delete _0x3f86cf[_0x5450('0x23')];if(_0x459c08===0x191){_0x459c08=0x190;}_0x2bc3b6['status'](_0x459c08)[_0x5450('0x24')](_0x2a0340[_0x5450('0x28')][_0x5450('0x58')]?{'message':_0x5450('0x5d'),'statusCode':_0x3f86cf['statusCode']}:_0x3f86cf);});};
\ No newline at end of file
+var _0x2d75=['json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','update','body','params','FreshsalesConfiguration','filter','getConfigurations','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','error','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status'];(function(_0x1562b6,_0xbd7707){var _0x24e636=function(_0x479634){while(--_0x479634){_0x1562b6['push'](_0x1562b6['shift']());}};_0x24e636(++_0xbd7707);}(_0x2d75,0x11f));var _0x52d7=function(_0x5a27e8,_0x492a2f){_0x5a27e8=_0x5a27e8-0x0;var _0x4e38f7=_0x2d75[_0x5a27e8];return _0x4e38f7;};'use strict';var emlformat=require(_0x52d7('0x0'));var rimraf=require(_0x52d7('0x1'));var zipdir=require(_0x52d7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x52d7('0x3'));var moment=require(_0x52d7('0x4'));var BPromise=require(_0x52d7('0x5'));var Mustache=require(_0x52d7('0x6'));var util=require(_0x52d7('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x52d7('0x8'));var ejs=require(_0x52d7('0x9'));var fs=require('fs');var fs_extra=require(_0x52d7('0xa'));var _=require(_0x52d7('0xb'));var squel=require('squel');var crypto=require(_0x52d7('0xc'));var jsforce=require(_0x52d7('0xd'));var deskjs=require(_0x52d7('0xe'));var toCsv=require(_0x52d7('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x52d7('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x52d7('0x10'));var hardwareService=require(_0x52d7('0x11'));var logger=require(_0x52d7('0x12'))('api');var utils=require(_0x52d7('0x13'));var config=require(_0x52d7('0x14'));var licenseUtil=require(_0x52d7('0x15'));var db=require(_0x52d7('0x16'))['db'];var integrations=require(_0x52d7('0x17'));function respondWithStatusCode(_0x368996,_0x437a19){_0x437a19=_0x437a19||0xcc;return function(_0x13769a){if(_0x13769a){return _0x368996['sendStatus'](_0x437a19);}return _0x368996[_0x52d7('0x18')](_0x437a19)['end']();};}function respondWithResult(_0x4faafa,_0x5347e8){_0x5347e8=_0x5347e8||0xc8;return function(_0xfbcc37){if(_0xfbcc37){return _0x4faafa['status'](_0x5347e8)[_0x52d7('0x19')](_0xfbcc37);}};}function respondWithFilteredResult(_0x4e2476,_0x1f7c8a){return function(_0x1e22b4){if(_0x1e22b4){var _0xc237e7=typeof _0x1f7c8a[_0x52d7('0x1a')]===_0x52d7('0x1b')&&typeof _0x1f7c8a[_0x52d7('0x1c')]==='undefined';var _0xd8f7a8=_0x1e22b4['count'];var _0x4fe483=_0xc237e7?0x0:_0x1f7c8a[_0x52d7('0x1a')];var _0x57734c=_0xc237e7?_0x1e22b4[_0x52d7('0x1d')]:_0x1f7c8a[_0x52d7('0x1a')]+_0x1f7c8a[_0x52d7('0x1c')];var _0x3454e8;if(_0x57734c>=_0xd8f7a8){_0x57734c=_0xd8f7a8;_0x3454e8=0xc8;}else{_0x3454e8=0xce;}_0x4e2476['status'](_0x3454e8);return _0x4e2476[_0x52d7('0x1e')](_0x52d7('0x1f'),_0x4fe483+'-'+_0x57734c+'/'+_0xd8f7a8)[_0x52d7('0x19')](_0x1e22b4);}return null;};}function patchUpdates(_0x48a848){return function(_0x43076a){try{jsonpatch[_0x52d7('0x20')](_0x43076a,_0x48a848,!![]);}catch(_0x330c2e){return BPromise[_0x52d7('0x21')](_0x330c2e);}return _0x43076a[_0x52d7('0x22')]();};}function saveUpdates(_0x559758,_0xfb5e02){return function(_0x34cb64){if(_0x34cb64){return _0x34cb64['update'](_0x559758)[_0x52d7('0x23')](function(_0x56b7b9){return _0x56b7b9;});}return null;};}function removeEntity(_0x1132cf,_0x158265){return function(_0x4dc172){if(_0x4dc172){return _0x4dc172[_0x52d7('0x24')]()[_0x52d7('0x23')](function(){_0x1132cf['status'](0xcc)[_0x52d7('0x25')]();});}};}function handleEntityNotFound(_0xa432d4,_0x1c7a5f){return function(_0x2719d3){if(!_0x2719d3){_0xa432d4[_0x52d7('0x26')](0x194);}return _0x2719d3;};}function handleError(_0x488cd3,_0x3eecc3){_0x3eecc3=_0x3eecc3||0x1f4;return function(_0x25cfb2){logger['error'](_0x25cfb2[_0x52d7('0x27')]);if(_0x25cfb2[_0x52d7('0x28')]){delete _0x25cfb2['name'];}_0x488cd3['status'](_0x3eecc3)[_0x52d7('0x29')](_0x25cfb2);};}exports[_0x52d7('0x2a')]=function(_0x57e63b,_0x117c97){var _0x39c6a9={},_0x8550db={},_0x265d93={'count':0x0,'rows':[]};var _0x11959d=_[_0x52d7('0x2b')](db[_0x52d7('0x2c')][_0x52d7('0x2d')],function(_0x5a7264){return{'name':_0x5a7264[_0x52d7('0x2e')],'type':_0x5a7264[_0x52d7('0x2f')][_0x52d7('0x30')]};});_0x8550db[_0x52d7('0x31')]=_[_0x52d7('0x2b')](_0x11959d,_0x52d7('0x28'));_0x8550db[_0x52d7('0x32')]=_[_0x52d7('0x33')](_0x57e63b[_0x52d7('0x32')]);_0x8550db[_0x52d7('0x34')]=_[_0x52d7('0x35')](_0x8550db[_0x52d7('0x31')],_0x8550db['query']);_0x39c6a9['attributes']=_[_0x52d7('0x35')](_0x8550db[_0x52d7('0x31')],qs[_0x52d7('0x36')](_0x57e63b[_0x52d7('0x32')][_0x52d7('0x36')]));_0x39c6a9['attributes']=_0x39c6a9[_0x52d7('0x37')][_0x52d7('0x38')]?_0x39c6a9[_0x52d7('0x37')]:_0x8550db[_0x52d7('0x31')];if(!_0x57e63b[_0x52d7('0x32')]['hasOwnProperty'](_0x52d7('0x39'))){_0x39c6a9[_0x52d7('0x1c')]=qs['limit'](_0x57e63b[_0x52d7('0x32')][_0x52d7('0x1c')]);_0x39c6a9[_0x52d7('0x1a')]=qs[_0x52d7('0x1a')](_0x57e63b['query']['offset']);}_0x39c6a9[_0x52d7('0x3a')]=qs[_0x52d7('0x3b')](_0x57e63b['query'][_0x52d7('0x3b')]);_0x39c6a9[_0x52d7('0x3c')]=qs[_0x52d7('0x34')](_[_0x52d7('0x3d')](_0x57e63b[_0x52d7('0x32')],_0x8550db[_0x52d7('0x34')]),_0x11959d);if(_0x57e63b[_0x52d7('0x32')]['filter']){_0x39c6a9['where']=_[_0x52d7('0x3e')](_0x39c6a9[_0x52d7('0x3c')],{'$or':_['map'](_0x11959d,function(_0x3ae259){if(_0x3ae259[_0x52d7('0x2f')]!==_0x52d7('0x3f')){var _0x4db92b={};_0x4db92b[_0x3ae259[_0x52d7('0x28')]]={'$like':'%'+_0x57e63b[_0x52d7('0x32')]['filter']+'%'};return _0x4db92b;}})});}_0x39c6a9=_[_0x52d7('0x3e')]({},_0x39c6a9,_0x57e63b[_0x52d7('0x40')]);var _0x38af50={'where':_0x39c6a9[_0x52d7('0x3c')]};return db[_0x52d7('0x2c')][_0x52d7('0x1d')](_0x38af50)[_0x52d7('0x23')](function(_0x26a5e9){_0x265d93[_0x52d7('0x1d')]=_0x26a5e9;if(_0x57e63b[_0x52d7('0x32')]['includeAll']){_0x39c6a9[_0x52d7('0x41')]=[{'all':!![]}];}return db[_0x52d7('0x2c')][_0x52d7('0x42')](_0x39c6a9);})[_0x52d7('0x23')](function(_0x5b2942){_0x265d93[_0x52d7('0x43')]=_0x5b2942;return _0x265d93;})[_0x52d7('0x23')](respondWithFilteredResult(_0x117c97,_0x39c6a9))[_0x52d7('0x44')](handleError(_0x117c97,null));};exports[_0x52d7('0x45')]=function(_0x116459,_0x34a2d2){var _0x3fa396={'raw':![],'where':{'id':_0x116459['params']['id']}},_0x38ad95={};_0x38ad95[_0x52d7('0x31')]=_['keys'](db['FreshsalesAccount'][_0x52d7('0x2d')]);_0x38ad95['query']=_[_0x52d7('0x33')](_0x116459[_0x52d7('0x32')]);_0x38ad95[_0x52d7('0x34')]=_['intersection'](_0x38ad95[_0x52d7('0x31')],_0x38ad95[_0x52d7('0x32')]);_0x3fa396['attributes']=_[_0x52d7('0x35')](_0x38ad95['model'],qs[_0x52d7('0x36')](_0x116459['query'][_0x52d7('0x36')]));_0x3fa396[_0x52d7('0x37')]=_0x3fa396[_0x52d7('0x37')][_0x52d7('0x38')]?_0x3fa396[_0x52d7('0x37')]:_0x38ad95[_0x52d7('0x31')];if(_0x116459[_0x52d7('0x32')][_0x52d7('0x46')]){_0x3fa396['include']=[{'all':!![]}];}_0x3fa396=_[_0x52d7('0x3e')]({},_0x3fa396,_0x116459[_0x52d7('0x40')]);return db[_0x52d7('0x2c')][_0x52d7('0x47')](_0x3fa396)[_0x52d7('0x23')](handleEntityNotFound(_0x34a2d2,null))[_0x52d7('0x23')](respondWithResult(_0x34a2d2,null))['catch'](handleError(_0x34a2d2,null));};exports['create']=function(_0x7c9fd2,_0xb0a5d7){return db[_0x52d7('0x2c')][_0x52d7('0x48')](_0x7c9fd2['body'],{})[_0x52d7('0x23')](respondWithResult(_0xb0a5d7,0xc9))[_0x52d7('0x44')](handleError(_0xb0a5d7,null));};exports[_0x52d7('0x49')]=function(_0x23c256,_0x3d93a4){if(_0x23c256[_0x52d7('0x4a')]['id']){delete _0x23c256[_0x52d7('0x4a')]['id'];}return db[_0x52d7('0x2c')][_0x52d7('0x47')]({'where':{'id':_0x23c256[_0x52d7('0x4b')]['id']}})[_0x52d7('0x23')](handleEntityNotFound(_0x3d93a4,null))[_0x52d7('0x23')](saveUpdates(_0x23c256[_0x52d7('0x4a')],null))['then'](respondWithResult(_0x3d93a4,null))[_0x52d7('0x44')](handleError(_0x3d93a4,null));};exports[_0x52d7('0x24')]=function(_0x15fb49,_0x307657){return db[_0x52d7('0x2c')][_0x52d7('0x47')]({'where':{'id':_0x15fb49['params']['id']}})[_0x52d7('0x23')](handleEntityNotFound(_0x307657,null))[_0x52d7('0x23')](removeEntity(_0x307657,null))[_0x52d7('0x44')](handleError(_0x307657,null));};exports['getConfigurations']=function(_0x37c5cb,_0x1c5e4e,_0x4cc4be){var _0x44e0d2={};var _0xadba28={};var _0x5675d1;var _0x482ee5;return db[_0x52d7('0x2c')]['findOne']({'where':{'id':_0x37c5cb[_0x52d7('0x4b')]['id']}})[_0x52d7('0x23')](handleEntityNotFound(_0x1c5e4e,null))['then'](function(_0x29c658){if(_0x29c658){_0x5675d1=_0x29c658;_0xadba28[_0x52d7('0x31')]=_[_0x52d7('0x33')](db[_0x52d7('0x4c')][_0x52d7('0x2d')]);_0xadba28[_0x52d7('0x32')]=_[_0x52d7('0x33')](_0x37c5cb[_0x52d7('0x32')]);_0xadba28[_0x52d7('0x34')]=_[_0x52d7('0x35')](_0xadba28[_0x52d7('0x31')],_0xadba28[_0x52d7('0x32')]);_0x44e0d2[_0x52d7('0x37')]=_[_0x52d7('0x35')](_0xadba28[_0x52d7('0x31')],qs[_0x52d7('0x36')](_0x37c5cb[_0x52d7('0x32')][_0x52d7('0x36')]));_0x44e0d2[_0x52d7('0x37')]=_0x44e0d2['attributes']['length']?_0x44e0d2[_0x52d7('0x37')]:_0xadba28[_0x52d7('0x31')];_0x44e0d2['order']=qs[_0x52d7('0x3b')](_0x37c5cb[_0x52d7('0x32')][_0x52d7('0x3b')]);_0x44e0d2[_0x52d7('0x3c')]=qs['filters'](_['pick'](_0x37c5cb[_0x52d7('0x32')],_0xadba28['filters']));if(_0x37c5cb[_0x52d7('0x32')][_0x52d7('0x4d')]){_0x44e0d2[_0x52d7('0x3c')]=_[_0x52d7('0x3e')](_0x44e0d2[_0x52d7('0x3c')],{'$or':_[_0x52d7('0x2b')](_0x44e0d2[_0x52d7('0x37')],function(_0x17493b){var _0x2bea3c={};_0x2bea3c[_0x17493b]={'$like':'%'+_0x37c5cb[_0x52d7('0x32')][_0x52d7('0x4d')]+'%'};return _0x2bea3c;})});}_0x44e0d2=_[_0x52d7('0x3e')]({},_0x44e0d2,_0x37c5cb[_0x52d7('0x40')]);return _0x5675d1[_0x52d7('0x4e')](_0x44e0d2);}})[_0x52d7('0x23')](function(_0x5a9a1a){if(_0x5a9a1a){_0x482ee5=_0x5a9a1a['length'];if(!_0x37c5cb['query']['hasOwnProperty'](_0x52d7('0x39'))){_0x44e0d2['limit']=qs[_0x52d7('0x1c')](_0x37c5cb[_0x52d7('0x32')][_0x52d7('0x1c')]);_0x44e0d2['offset']=qs[_0x52d7('0x1a')](_0x37c5cb['query']['offset']);}return _0x5675d1['getConfigurations'](_0x44e0d2);}})['then'](function(_0x3b13ed){if(_0x3b13ed){return _0x3b13ed?{'count':_0x482ee5,'rows':_0x3b13ed}:null;}})['then'](respondWithResult(_0x1c5e4e,null))[_0x52d7('0x44')](handleError(_0x1c5e4e,null));};exports['addConfiguration']=function(_0x246e38,_0x4b4878,_0x5556a3){if(_0x246e38[_0x52d7('0x4a')]['id']){delete _0x246e38[_0x52d7('0x4a')]['id'];}return db['FreshsalesAccount'][_0x52d7('0x4f')]({'where':{'id':_0x246e38['params']['id']}})[_0x52d7('0x23')](handleEntityNotFound(_0x4b4878,null))[_0x52d7('0x23')](function(_0x2c90d0){if(_0x2c90d0){_0x246e38[_0x52d7('0x4a')][_0x52d7('0x50')]=_0x2c90d0['id'];_0x246e38[_0x52d7('0x4a')][_0x52d7('0x51')]=integrations[_0x52d7('0x52')](_0x246e38['body'][_0x52d7('0x53')],_0x246e38['body'][_0x52d7('0x2f')]);_0x246e38[_0x52d7('0x4a')][_0x52d7('0x54')]=integrations['getDescriptions'](_0x246e38[_0x52d7('0x4a')][_0x52d7('0x53')],_0x246e38['body'][_0x52d7('0x2f')]);return db[_0x52d7('0x4c')][_0x52d7('0x48')](_0x246e38[_0x52d7('0x4a')],{'include':[{'model':db[_0x52d7('0x55')],'as':_0x52d7('0x51')},{'model':db['FreshsalesField'],'as':_0x52d7('0x54')}]});}return null;})[_0x52d7('0x23')](respondWithResult(_0x4b4878,null))[_0x52d7('0x44')](handleError(_0x4b4878,null));};exports[_0x52d7('0x56')]=function(_0x1ca658,_0x2ec7f4,_0x3e19d1){var _0x3f7caf='';var _0x363fe5='';return db[_0x52d7('0x2c')][_0x52d7('0x4f')]({'where':{'id':_0x1ca658[_0x52d7('0x4b')]['id']},'attributes':['id',_0x52d7('0x57'),_0x52d7('0x58'),_0x52d7('0x59')]})['then'](handleEntityNotFound(_0x2ec7f4,null))[_0x52d7('0x23')](function(_0x2653d0){if(_0x2653d0){_0x363fe5=_0x2653d0[_0x52d7('0x57')];_0x3f7caf=_0x2653d0[_0x52d7('0x58')];var _0x3720d8=_0x2653d0[_0x52d7('0x58')][_0x52d7('0x5a')](-0x1);if(_0x3720d8==='/'){_0x3f7caf=_0x3f7caf[_0x52d7('0x5b')](0x0,_0x3f7caf[_0x52d7('0x5c')](_0x3720d8));}return rp({'method':_0x52d7('0x5d'),'uri':util['format']('%s%s',_0x3f7caf,_0x52d7('0x5e')),'headers':{'Authorization':_0x52d7('0x5f')+_0x2653d0[_0x52d7('0x59')]},'json':!![]});}})[_0x52d7('0x23')](function(_0x55704d){if(_0x55704d){var _0x98e396=_0x55704d[_0x52d7('0x60')];var _0x3849a1=![];var _0xa3ff10=null;for(_0xa3ff10=0x0;_0xa3ff10<_0x98e396[_0x52d7('0x38')];_0xa3ff10++){if(_0x98e396[_0xa3ff10][_0x52d7('0x61')]===_0x363fe5){_0x3849a1=!![];}}if(_0x3849a1){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x52d7('0x62')});}}})[_0x52d7('0x23')](respondWithResult(_0x2ec7f4,null))[_0x52d7('0x44')](function(_0x3ade89){var _0x452185=_0x1ca658[_0x52d7('0x32')]['test']?0x1f4:_0x3ade89['statusCode']||0x1f4;logger[_0x52d7('0x63')](_0x52d7('0x64'),'getFields',_0x452185,JSON[_0x52d7('0x65')](_0x3ade89));delete _0x3ade89['name'];if(_0x452185===0x191){_0x452185=0x190;}_0x2ec7f4[_0x52d7('0x18')](_0x452185)[_0x52d7('0x29')](_0x1ca658[_0x52d7('0x32')][_0x52d7('0x66')]?{'message':_0x52d7('0x67'),'statusCode':_0x3ade89['statusCode']}:_0x3ade89);});};
\ No newline at end of file
index 3c608f7..0c8e8b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','lodash','util','../../config/logger','api','moment'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0xc4aa[_0x565ed7];return _0x183ad7;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));var integrations=require(_0xac4a('0x8'));module[_0xac4a('0x9')]=function(_0x96be2b,_0x15cd34){return _0x96be2b[_0xac4a('0xa')](_0xac4a('0xb'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcf0=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xfcf0,0x138));var _0x0fcf=function(_0xee3051,_0xbe4f18){_0xee3051=_0xee3051-0x0;var _0x139e81=_0xfcf0[_0xee3051];return _0x139e81;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var logger=require('../../config/logger')(_0x0fcf('0x2'));var moment=require(_0x0fcf('0x3'));var BPromise=require(_0x0fcf('0x4'));var rp=require(_0x0fcf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0fcf('0x6'));var config=require(_0x0fcf('0x7'));var attributes=require(_0x0fcf('0x8'));var integrations=require(_0x0fcf('0x9'));module[_0x0fcf('0xa')]=function(_0x1a7b03,_0x61bbb9){return _0x1a7b03[_0x0fcf('0xb')]('FreshsalesAccount',attributes,{'tableName':_0x0fcf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1267307..f523977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','attributes','limit','include','map','model','ShowFreshsalesAccount','find','raw','lodash','util','moment'];(function(_0xe14ee9,_0x4cd8e1){var _0x1dda60=function(_0x50b9cf){while(--_0x50b9cf){_0xe14ee9['push'](_0xe14ee9['shift']());}};_0x1dda60(++_0x4cd8e1);}(_0x687b,0x14a));var _0xb687=function(_0x5076ae,_0x4d9525){_0x5076ae=_0x5076ae-0x0;var _0x1b936f=_0x687b[_0x5076ae];return _0x1b936f;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var moment=require(_0xb687('0x2'));var BPromise=require(_0xb687('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb687('0x4'))['db'];var utils=require(_0xb687('0x5'));var logger=require(_0xb687('0x6'))(_0xb687('0x7'));var config=require(_0xb687('0x8'));var jayson=require(_0xb687('0x9'));var client=jayson[_0xb687('0xa')][_0xb687('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47ffea,_0x27b750,_0x48942b){return new BPromise(function(_0x2aea59,_0xd40346){return client['request'](_0x47ffea,_0x48942b)[_0xb687('0xc')](function(_0x21e3ab){logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));logger[_0xb687('0x10')](_0xb687('0x11'),_0x27b750,_0xb687('0xf'),JSON[_0xb687('0x12')](_0x21e3ab));if(_0x21e3ab['error']){if(_0x21e3ab[_0xb687('0x13')][_0xb687('0x14')]===0x1f4){logger[_0xb687('0x13')](_0xb687('0xe'),_0x27b750,_0x21e3ab['error']['message']);return _0xd40346(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}logger['error'](_0xb687('0xe'),_0x27b750,_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);return _0x2aea59(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}else{logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));_0x2aea59(_0x21e3ab[_0xb687('0x16')][_0xb687('0x15')]);}})[_0xb687('0x17')](function(_0x19bb29){logger['error'](_0xb687('0xe'),_0x27b750,_0x19bb29);_0xd40346(_0x19bb29);});});}exports[_0xb687('0x18')]=function(_0x30d370){var _0x5eb9b9=this;return new Promise(function(_0x48958d,_0x12eff1){return db[_0xb687('0x19')][_0xb687('0x1a')]({'raw':_0x30d370['options']?_0x30d370[_0xb687('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x30d370[_0xb687('0x1b')]?_0x30d370[_0xb687('0x1b')][_0xb687('0x1c')]||null:null,'attributes':_0x30d370[_0xb687('0x1b')]?_0x30d370['options'][_0xb687('0x1d')]||null:null,'limit':_0x30d370['options']?_0x30d370[_0xb687('0x1b')][_0xb687('0x1e')]||null:null,'include':_0x30d370[_0xb687('0x1b')]?_0x30d370['options'][_0xb687('0x1f')]?_[_0xb687('0x20')](_0x30d370[_0xb687('0x1b')][_0xb687('0x1f')],function(_0xbf6c58){return{'model':db[_0xbf6c58[_0xb687('0x21')]],'as':_0xbf6c58['as'],'attributes':_0xbf6c58[_0xb687('0x1d')],'include':_0xbf6c58[_0xb687('0x1f')]?_['map'](_0xbf6c58[_0xb687('0x1f')],function(_0x129347){return{'model':db[_0x129347[_0xb687('0x21')]],'as':_0x129347['as'],'attributes':_0x129347[_0xb687('0x1d')],'include':_0x129347[_0xb687('0x1f')]?_[_0xb687('0x20')](_0x129347[_0xb687('0x1f')],function(_0x3cb2f2){return{'model':db[_0x3cb2f2[_0xb687('0x21')]],'as':_0x3cb2f2['as'],'attributes':_0x3cb2f2[_0xb687('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3712cf){logger[_0xb687('0xd')](_0xb687('0x18'),_0x30d370);logger[_0xb687('0x10')](_0xb687('0x18'),_0x30d370,JSON[_0xb687('0x12')](_0x3712cf));_0x48958d(_0x3712cf);})['catch'](function(_0x28b69a){logger['error'](_0xb687('0x18'),_0x28b69a[_0xb687('0x15')],_0x30d370);_0x12eff1(_0x5eb9b9[_0xb687('0x13')](0x1f4,_0x28b69a[_0xb687('0x15')]));});});};exports[_0xb687('0x22')]=function(_0x43d20d){var _0xf1f0dd=this;return new Promise(function(_0x556815,_0x3da2be){return db[_0xb687('0x19')][_0xb687('0x23')]({'raw':_0x43d20d[_0xb687('0x1b')]?_0x43d20d[_0xb687('0x1b')][_0xb687('0x24')]===undefined?!![]:![]:!![],'where':_0x43d20d[_0xb687('0x1b')]?_0x43d20d[_0xb687('0x1b')][_0xb687('0x1c')]||null:null,'attributes':_0x43d20d[_0xb687('0x1b')]?_0x43d20d[_0xb687('0x1b')]['attributes']||null:null,'include':_0x43d20d['options']?_0x43d20d[_0xb687('0x1b')][_0xb687('0x1f')]?_[_0xb687('0x20')](_0x43d20d[_0xb687('0x1b')]['include'],function(_0x4f0b28){return{'model':db[_0x4f0b28[_0xb687('0x21')]],'as':_0x4f0b28['as'],'attributes':_0x4f0b28[_0xb687('0x1d')],'include':_0x4f0b28['include']?_[_0xb687('0x20')](_0x4f0b28[_0xb687('0x1f')],function(_0x548b83){return{'model':db[_0x548b83[_0xb687('0x21')]],'as':_0x548b83['as'],'attributes':_0x548b83['attributes'],'include':_0x548b83[_0xb687('0x1f')]?_[_0xb687('0x20')](_0x548b83[_0xb687('0x1f')],function(_0x3e146a){return{'model':db[_0x3e146a[_0xb687('0x21')]],'as':_0x3e146a['as'],'attributes':_0x3e146a[_0xb687('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x529b1a){logger[_0xb687('0xd')](_0xb687('0x22'),_0x43d20d);logger[_0xb687('0x10')]('ShowFreshsalesAccount',_0x43d20d,JSON[_0xb687('0x12')](_0x529b1a));_0x556815(_0x529b1a);})[_0xb687('0x17')](function(_0x1f1c88){logger[_0xb687('0x13')](_0xb687('0x22'),_0x1f1c88['message'],_0x43d20d);_0x3da2be(_0xf1f0dd[_0xb687('0x13')](0x1f4,_0x1f1c88[_0xb687('0x15')]));});});};
\ No newline at end of file
+var _0x9f0e=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','limit','include','map','model','attributes','ShowFreshsalesAccount','find','where','lodash','util'];(function(_0x5084ce,_0x12cd1f){var _0x4225c2=function(_0x39dbc4){while(--_0x39dbc4){_0x5084ce['push'](_0x5084ce['shift']());}};_0x4225c2(++_0x12cd1f);}(_0x9f0e,0x116));var _0xe9f0=function(_0x52cf7f,_0x1b876c){_0x52cf7f=_0x52cf7f-0x0;var _0x1ed10f=_0x9f0e[_0x52cf7f];return _0x1ed10f;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a17b3,_0x167198,_0xe64a79){return new BPromise(function(_0x4be6a6,_0xf4a256){return client[_0xe9f0('0xa')](_0x3a17b3,_0xe64a79)[_0xe9f0('0xb')](function(_0x3386a8){logger[_0xe9f0('0xc')](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));logger[_0xe9f0('0xf')](_0xe9f0('0x10'),_0x167198,'request\x20sent',JSON[_0xe9f0('0x11')](_0x3386a8));if(_0x3386a8[_0xe9f0('0x12')]){if(_0x3386a8[_0xe9f0('0x12')]['code']===0x1f4){logger[_0xe9f0('0x12')]('FreshsalesAccount,\x20%s,\x20%s',_0x167198,_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);return _0xf4a256(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}logger['error'](_0xe9f0('0xd'),_0x167198,_0x3386a8['error'][_0xe9f0('0x13')]);return _0x4be6a6(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}else{logger['info'](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));_0x4be6a6(_0x3386a8[_0xe9f0('0x14')]['message']);}})[_0xe9f0('0x15')](function(_0x1e16e0){logger[_0xe9f0('0x12')](_0xe9f0('0xd'),_0x167198,_0x1e16e0);_0xf4a256(_0x1e16e0);});});}exports[_0xe9f0('0x16')]=function(_0x2ab12b){var _0x3da237=this;return new Promise(function(_0x59bf5a,_0x15a33b){return db[_0xe9f0('0x17')][_0xe9f0('0x18')]({'raw':_0x2ab12b['options']?_0x2ab12b[_0xe9f0('0x19')][_0xe9f0('0x1a')]===undefined?!![]:![]:!![],'where':_0x2ab12b[_0xe9f0('0x19')]?_0x2ab12b[_0xe9f0('0x19')]['where']||null:null,'attributes':_0x2ab12b[_0xe9f0('0x19')]?_0x2ab12b[_0xe9f0('0x19')]['attributes']||null:null,'limit':_0x2ab12b['options']?_0x2ab12b['options'][_0xe9f0('0x1b')]||null:null,'include':_0x2ab12b[_0xe9f0('0x19')]?_0x2ab12b[_0xe9f0('0x19')][_0xe9f0('0x1c')]?_[_0xe9f0('0x1d')](_0x2ab12b['options'][_0xe9f0('0x1c')],function(_0x38b7ee){return{'model':db[_0x38b7ee[_0xe9f0('0x1e')]],'as':_0x38b7ee['as'],'attributes':_0x38b7ee[_0xe9f0('0x1f')],'include':_0x38b7ee[_0xe9f0('0x1c')]?_[_0xe9f0('0x1d')](_0x38b7ee[_0xe9f0('0x1c')],function(_0x1321bb){return{'model':db[_0x1321bb[_0xe9f0('0x1e')]],'as':_0x1321bb['as'],'attributes':_0x1321bb[_0xe9f0('0x1f')],'include':_0x1321bb['include']?_[_0xe9f0('0x1d')](_0x1321bb[_0xe9f0('0x1c')],function(_0x2ddfba){return{'model':db[_0x2ddfba[_0xe9f0('0x1e')]],'as':_0x2ddfba['as'],'attributes':_0x2ddfba['attributes']};}):[]};}):[]};}):[]:[]})[_0xe9f0('0xb')](function(_0x2613fd){logger[_0xe9f0('0xc')](_0xe9f0('0x16'),_0x2ab12b);logger[_0xe9f0('0xf')]('GetFreshsalesAccount',_0x2ab12b,JSON[_0xe9f0('0x11')](_0x2613fd));_0x59bf5a(_0x2613fd);})[_0xe9f0('0x15')](function(_0x44fb5b){logger[_0xe9f0('0x12')](_0xe9f0('0x16'),_0x44fb5b[_0xe9f0('0x13')],_0x2ab12b);_0x15a33b(_0x3da237[_0xe9f0('0x12')](0x1f4,_0x44fb5b[_0xe9f0('0x13')]));});});};exports[_0xe9f0('0x20')]=function(_0x3dbe49){var _0x22806c=this;return new Promise(function(_0x617ad3,_0x445ad0){return db[_0xe9f0('0x17')][_0xe9f0('0x21')]({'raw':_0x3dbe49[_0xe9f0('0x19')]?_0x3dbe49[_0xe9f0('0x19')][_0xe9f0('0x1a')]===undefined?!![]:![]:!![],'where':_0x3dbe49[_0xe9f0('0x19')]?_0x3dbe49[_0xe9f0('0x19')][_0xe9f0('0x22')]||null:null,'attributes':_0x3dbe49[_0xe9f0('0x19')]?_0x3dbe49[_0xe9f0('0x19')][_0xe9f0('0x1f')]||null:null,'include':_0x3dbe49['options']?_0x3dbe49['options']['include']?_[_0xe9f0('0x1d')](_0x3dbe49['options'][_0xe9f0('0x1c')],function(_0xc5fa13){return{'model':db[_0xc5fa13['model']],'as':_0xc5fa13['as'],'attributes':_0xc5fa13[_0xe9f0('0x1f')],'include':_0xc5fa13['include']?_['map'](_0xc5fa13['include'],function(_0x165440){return{'model':db[_0x165440[_0xe9f0('0x1e')]],'as':_0x165440['as'],'attributes':_0x165440['attributes'],'include':_0x165440[_0xe9f0('0x1c')]?_[_0xe9f0('0x1d')](_0x165440[_0xe9f0('0x1c')],function(_0x4d4186){return{'model':db[_0x4d4186['model']],'as':_0x4d4186['as'],'attributes':_0x4d4186[_0xe9f0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe9f0('0xb')](function(_0x1917c8){logger['info'](_0xe9f0('0x20'),_0x3dbe49);logger[_0xe9f0('0xf')](_0xe9f0('0x20'),_0x3dbe49,JSON[_0xe9f0('0x11')](_0x1917c8));_0x617ad3(_0x1917c8);})[_0xe9f0('0x15')](function(_0x552ec2){logger[_0xe9f0('0x12')](_0xe9f0('0x20'),_0x552ec2[_0xe9f0('0x13')],_0x3dbe49);_0x445ad0(_0x22806c['error'](0x1f4,_0x552ec2[_0xe9f0('0x13')]));});});};
\ No newline at end of file
index adc9e8b..3b30f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x263f=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesConfiguration.controller','index','get','/:id','isAuthenticated','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getFields','post','create','put','update','delete','destroy'];(function(_0x5979f5,_0x469641){var _0x3fbc76=function(_0x18d841){while(--_0x18d841){_0x5979f5['push'](_0x5979f5['shift']());}};_0x3fbc76(++_0x469641);}(_0x263f,0x187));var _0xf263=function(_0x3977fc,_0xb3ed10){_0x3977fc=_0x3977fc-0x0;var _0x5a45bd=_0x263f[_0x3977fc];return _0x5a45bd;};'use strict';var multer=require(_0xf263('0x0'));var util=require(_0xf263('0x1'));var path=require(_0xf263('0x2'));var timeout=require(_0xf263('0x3'));var express=require(_0xf263('0x4'));var router=express[_0xf263('0x5')]();var fs_extra=require(_0xf263('0x6'));var auth=require(_0xf263('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xf263('0x8'));var controller=require(_0xf263('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xf263('0xa')]);router[_0xf263('0xb')](_0xf263('0xc'),auth[_0xf263('0xd')](),controller['show']);router[_0xf263('0xb')](_0xf263('0xe'),auth[_0xf263('0xd')](),controller[_0xf263('0xf')]);router['get'](_0xf263('0x10'),auth[_0xf263('0xd')](),controller[_0xf263('0x11')]);router[_0xf263('0xb')]('/:id/fields',auth[_0xf263('0xd')](),controller[_0xf263('0x12')]);router[_0xf263('0x13')]('/',auth[_0xf263('0xd')](),controller[_0xf263('0x14')]);router[_0xf263('0x15')](_0xf263('0xc'),auth[_0xf263('0xd')](),controller[_0xf263('0x16')]);router[_0xf263('0x17')](_0xf263('0xc'),auth[_0xf263('0xd')](),controller[_0xf263('0x18')]);module[_0xf263('0x19')]=router;
\ No newline at end of file
+var _0xc1f9=['exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','isAuthenticated','get','/:id','show','getSubjects','getDescriptions','getFields','post','put','update','delete'];(function(_0x50fffe,_0x2d1370){var _0x53e9d1=function(_0x41fde0){while(--_0x41fde0){_0x50fffe['push'](_0x50fffe['shift']());}};_0x53e9d1(++_0x2d1370);}(_0xc1f9,0x145));var _0x9c1f=function(_0x11659d,_0x1a6034){_0x11659d=_0x11659d-0x0;var _0xd4de=_0xc1f9[_0x11659d];return _0xd4de;};'use strict';var multer=require(_0x9c1f('0x0'));var util=require('util');var path=require(_0x9c1f('0x1'));var timeout=require(_0x9c1f('0x2'));var express=require(_0x9c1f('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9c1f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9c1f('0x5'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth[_0x9c1f('0x6')](),controller['index']);router[_0x9c1f('0x7')](_0x9c1f('0x8'),auth[_0x9c1f('0x6')](),controller[_0x9c1f('0x9')]);router[_0x9c1f('0x7')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x9c1f('0xa')]);router[_0x9c1f('0x7')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x9c1f('0xb')]);router[_0x9c1f('0x7')]('/:id/fields',auth[_0x9c1f('0x6')](),controller[_0x9c1f('0xc')]);router[_0x9c1f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9c1f('0xe')](_0x9c1f('0x8'),auth['isAuthenticated'](),controller[_0x9c1f('0xf')]);router[_0x9c1f('0x10')](_0x9c1f('0x8'),auth[_0x9c1f('0x6')](),controller['destroy']);module[_0x9c1f('0x11')]=router;
\ No newline at end of file
index a12dbda..1c7a3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b44=['exports','STRING','sequelize'];(function(_0x5ce107,_0x3de139){var _0x1710a1=function(_0x5e5047){while(--_0x5e5047){_0x5ce107['push'](_0x5ce107['shift']());}};_0x1710a1(++_0x3de139);}(_0x6b44,0x101));var _0x46b4=function(_0x2ac4af,_0x288c53){_0x2ac4af=_0x2ac4af-0x0;var _0x3a36df=_0x6b44[_0x2ac4af];return _0x3a36df;};'use strict';var Sequelize=require(_0x46b4('0x0'));module[_0x46b4('0x1')]={'name':{'type':Sequelize[_0x46b4('0x2')]},'description':{'type':Sequelize[_0x46b4('0x2')]}};
\ No newline at end of file
+var _0x9703=['STRING','exports'];(function(_0x4855fa,_0x490cf3){var _0x4b7a91=function(_0x456ec7){while(--_0x456ec7){_0x4855fa['push'](_0x4855fa['shift']());}};_0x4b7a91(++_0x490cf3);}(_0x9703,0x1cf));var _0x3970=function(_0x1a6422,_0x18db7a){_0x1a6422=_0x1a6422-0x0;var _0x3a9818=_0x9703[_0x1a6422];return _0x3a9818;};'use strict';var Sequelize=require('sequelize');module[_0x3970('0x0')]={'name':{'type':Sequelize[_0x3970('0x1')]},'description':{'type':Sequelize[_0x3970('0x1')]}};
\ No newline at end of file
index 5693f23..0df7dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4041=['Content-Range','reject','update','then','end','stack','name','send','map','FreshsalesConfiguration','rawAttributes','fieldName','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','includeAll','include','findAll','catch','show','params','length','create','body','find','destroy','getSubjects','FreshsalesField','merge','options','findOne','getDescriptions','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','ioredis','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','limit','count'];(function(_0x27bda8,_0x1461a3){var _0x591b5b=function(_0x24037f){while(--_0x24037f){_0x27bda8['push'](_0x27bda8['shift']());}};_0x591b5b(++_0x1461a3);}(_0x4041,0x195));var _0x1404=function(_0x16808c,_0xa3a003){_0x16808c=_0x16808c-0x0;var _0x44ad03=_0x4041[_0x16808c];return _0x44ad03;};'use strict';var emlformat=require(_0x1404('0x0'));var rimraf=require(_0x1404('0x1'));var zipdir=require(_0x1404('0x2'));var jsonpatch=require(_0x1404('0x3'));var rp=require(_0x1404('0x4'));var moment=require(_0x1404('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1404('0x6'));var util=require(_0x1404('0x7'));var path=require(_0x1404('0x8'));var sox=require(_0x1404('0x9'));var csv=require(_0x1404('0xa'));var ejs=require(_0x1404('0xb'));var fs=require('fs');var fs_extra=require(_0x1404('0xc'));var _=require(_0x1404('0xd'));var squel=require('squel');var crypto=require(_0x1404('0xe'));var jsforce=require(_0x1404('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x1404('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1404('0x10'));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(_0x1404('0x11'))(_0x1404('0x12'));var utils=require(_0x1404('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x1404('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1550d9,_0x5c6470){_0x5c6470=_0x5c6470||0xcc;return function(_0x49a1f9){if(_0x49a1f9){return _0x1550d9[_0x1404('0x15')](_0x5c6470);}return _0x1550d9['status'](_0x5c6470)['end']();};}function respondWithResult(_0x8e2a9f,_0x5609a3){_0x5609a3=_0x5609a3||0xc8;return function(_0x2fdf92){if(_0x2fdf92){return _0x8e2a9f[_0x1404('0x16')](_0x5609a3)[_0x1404('0x17')](_0x2fdf92);}};}function respondWithFilteredResult(_0x5508a1,_0x2bcd12){return function(_0x5f4eff){if(_0x5f4eff){var _0x141b48=typeof _0x2bcd12[_0x1404('0x18')]==='undefined'&&typeof _0x2bcd12[_0x1404('0x19')]==='undefined';var _0x4f00eb=_0x5f4eff[_0x1404('0x1a')];var _0x18afc8=_0x141b48?0x0:_0x2bcd12[_0x1404('0x18')];var _0x44014e=_0x141b48?_0x5f4eff[_0x1404('0x1a')]:_0x2bcd12[_0x1404('0x18')]+_0x2bcd12['limit'];var _0x18d203;if(_0x44014e>=_0x4f00eb){_0x44014e=_0x4f00eb;_0x18d203=0xc8;}else{_0x18d203=0xce;}_0x5508a1['status'](_0x18d203);return _0x5508a1['set'](_0x1404('0x1b'),_0x18afc8+'-'+_0x44014e+'/'+_0x4f00eb)[_0x1404('0x17')](_0x5f4eff);}return null;};}function patchUpdates(_0x550bba){return function(_0x572ad3){try{jsonpatch['apply'](_0x572ad3,_0x550bba,!![]);}catch(_0x196d1b){return BPromise[_0x1404('0x1c')](_0x196d1b);}return _0x572ad3['save']();};}function saveUpdates(_0x277942,_0x4deb17){return function(_0x4c2ce4){if(_0x4c2ce4){return _0x4c2ce4[_0x1404('0x1d')](_0x277942)[_0x1404('0x1e')](function(_0x4af65b){return _0x4af65b;});}return null;};}function removeEntity(_0x4a1150,_0x25680){return function(_0x3026dd){if(_0x3026dd){return _0x3026dd['destroy']()[_0x1404('0x1e')](function(){_0x4a1150['status'](0xcc)[_0x1404('0x1f')]();});}};}function handleEntityNotFound(_0x17d718,_0x22d293){return function(_0x5e5285){if(!_0x5e5285){_0x17d718[_0x1404('0x15')](0x194);}return _0x5e5285;};}function handleError(_0x957112,_0x17a736){_0x17a736=_0x17a736||0x1f4;return function(_0x254b17){logger['error'](_0x254b17[_0x1404('0x20')]);if(_0x254b17[_0x1404('0x21')]){delete _0x254b17[_0x1404('0x21')];}_0x957112[_0x1404('0x16')](_0x17a736)[_0x1404('0x22')](_0x254b17);};}exports['index']=function(_0x4145de,_0x2fe9f2){var _0x1bb76f={},_0x45b016={},_0x57a07f={'count':0x0,'rows':[]};var _0xe439d6=_[_0x1404('0x23')](db[_0x1404('0x24')][_0x1404('0x25')],function(_0x260e55){return{'name':_0x260e55[_0x1404('0x26')],'type':_0x260e55['type']['key']};});_0x45b016['model']=_[_0x1404('0x23')](_0xe439d6,'name');_0x45b016['query']=_[_0x1404('0x27')](_0x4145de[_0x1404('0x28')]);_0x45b016[_0x1404('0x29')]=_[_0x1404('0x2a')](_0x45b016[_0x1404('0x2b')],_0x45b016[_0x1404('0x28')]);_0x1bb76f[_0x1404('0x2c')]=_[_0x1404('0x2a')](_0x45b016[_0x1404('0x2b')],qs[_0x1404('0x2d')](_0x4145de[_0x1404('0x28')][_0x1404('0x2d')]));_0x1bb76f[_0x1404('0x2c')]=_0x1bb76f[_0x1404('0x2c')]['length']?_0x1bb76f[_0x1404('0x2c')]:_0x45b016[_0x1404('0x2b')];if(!_0x4145de[_0x1404('0x28')][_0x1404('0x2e')](_0x1404('0x2f'))){_0x1bb76f[_0x1404('0x19')]=qs[_0x1404('0x19')](_0x4145de[_0x1404('0x28')][_0x1404('0x19')]);_0x1bb76f[_0x1404('0x18')]=qs[_0x1404('0x18')](_0x4145de[_0x1404('0x28')][_0x1404('0x18')]);}_0x1bb76f[_0x1404('0x30')]=qs[_0x1404('0x31')](_0x4145de[_0x1404('0x28')][_0x1404('0x31')]);_0x1bb76f['where']=qs[_0x1404('0x29')](_[_0x1404('0x32')](_0x4145de[_0x1404('0x28')],_0x45b016[_0x1404('0x29')]),_0xe439d6);if(_0x4145de['query'][_0x1404('0x33')]){_0x1bb76f[_0x1404('0x34')]=_['merge'](_0x1bb76f[_0x1404('0x34')],{'$or':_['map'](_0xe439d6,function(_0x18c6d9){if(_0x18c6d9[_0x1404('0x35')]!=='VIRTUAL'){var _0x526a65={};_0x526a65[_0x18c6d9[_0x1404('0x21')]]={'$like':'%'+_0x4145de[_0x1404('0x28')]['filter']+'%'};return _0x526a65;}})});}_0x1bb76f=_['merge']({},_0x1bb76f,_0x4145de['options']);var _0x5d6d07={'where':_0x1bb76f[_0x1404('0x34')]};return db[_0x1404('0x24')][_0x1404('0x1a')](_0x5d6d07)['then'](function(_0x4b3172){_0x57a07f[_0x1404('0x1a')]=_0x4b3172;if(_0x4145de[_0x1404('0x28')][_0x1404('0x36')]){_0x1bb76f[_0x1404('0x37')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0x1404('0x38')](_0x1bb76f);})[_0x1404('0x1e')](function(_0x56f2a1){_0x57a07f['rows']=_0x56f2a1;return _0x57a07f;})[_0x1404('0x1e')](respondWithFilteredResult(_0x2fe9f2,_0x1bb76f))[_0x1404('0x39')](handleError(_0x2fe9f2,null));};exports[_0x1404('0x3a')]=function(_0xc292ac,_0x1b59a2){var _0x1774db={'raw':![],'where':{'id':_0xc292ac[_0x1404('0x3b')]['id']}},_0x5477f6={};_0x5477f6[_0x1404('0x2b')]=_[_0x1404('0x27')](db['FreshsalesConfiguration'][_0x1404('0x25')]);_0x5477f6[_0x1404('0x28')]=_[_0x1404('0x27')](_0xc292ac[_0x1404('0x28')]);_0x5477f6[_0x1404('0x29')]=_['intersection'](_0x5477f6['model'],_0x5477f6['query']);_0x1774db[_0x1404('0x2c')]=_[_0x1404('0x2a')](_0x5477f6[_0x1404('0x2b')],qs[_0x1404('0x2d')](_0xc292ac[_0x1404('0x28')][_0x1404('0x2d')]));_0x1774db[_0x1404('0x2c')]=_0x1774db['attributes'][_0x1404('0x3c')]?_0x1774db[_0x1404('0x2c')]:_0x5477f6[_0x1404('0x2b')];if(_0xc292ac[_0x1404('0x28')]['includeAll']){_0x1774db[_0x1404('0x37')]=[{'all':!![]}];}_0x1774db=_['merge']({},_0x1774db,_0xc292ac['options']);return db['FreshsalesConfiguration']['find'](_0x1774db)[_0x1404('0x1e')](handleEntityNotFound(_0x1b59a2,null))[_0x1404('0x1e')](respondWithResult(_0x1b59a2,null))[_0x1404('0x39')](handleError(_0x1b59a2,null));};exports[_0x1404('0x3d')]=function(_0x2b4415,_0x5427b3){return db[_0x1404('0x24')][_0x1404('0x3d')](_0x2b4415[_0x1404('0x3e')],{})[_0x1404('0x1e')](respondWithResult(_0x5427b3,0xc9))[_0x1404('0x39')](handleError(_0x5427b3,null));};exports[_0x1404('0x1d')]=function(_0x52806b,_0x20767f){if(_0x52806b[_0x1404('0x3e')]['id']){delete _0x52806b[_0x1404('0x3e')]['id'];}return db[_0x1404('0x24')][_0x1404('0x3f')]({'where':{'id':_0x52806b[_0x1404('0x3b')]['id']}})['then'](handleEntityNotFound(_0x20767f,null))[_0x1404('0x1e')](saveUpdates(_0x52806b[_0x1404('0x3e')],null))[_0x1404('0x1e')](respondWithResult(_0x20767f,null))[_0x1404('0x39')](handleError(_0x20767f,null));};exports[_0x1404('0x40')]=function(_0x33a273,_0x24d950){return db[_0x1404('0x24')][_0x1404('0x3f')]({'where':{'id':_0x33a273[_0x1404('0x3b')]['id']}})[_0x1404('0x1e')](handleEntityNotFound(_0x24d950,null))[_0x1404('0x1e')](removeEntity(_0x24d950,null))[_0x1404('0x39')](handleError(_0x24d950,null));};exports[_0x1404('0x41')]=function(_0x799d18,_0x257461,_0x5604ae){var _0x241f1d={};var _0x2abc3d={};var _0x16bbd9;var _0x55a955;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x799d18[_0x1404('0x3b')]['id']}})[_0x1404('0x1e')](handleEntityNotFound(_0x257461,null))['then'](function(_0x2a6014){if(_0x2a6014){_0x16bbd9=_0x2a6014;_0x2abc3d[_0x1404('0x2b')]=_[_0x1404('0x27')](db[_0x1404('0x42')][_0x1404('0x25')]);_0x2abc3d[_0x1404('0x28')]=_['keys'](_0x799d18[_0x1404('0x28')]);_0x2abc3d[_0x1404('0x29')]=_['intersection'](_0x2abc3d['model'],_0x2abc3d[_0x1404('0x28')]);_0x241f1d[_0x1404('0x2c')]=_[_0x1404('0x2a')](_0x2abc3d[_0x1404('0x2b')],qs[_0x1404('0x2d')](_0x799d18[_0x1404('0x28')]['fields']));_0x241f1d[_0x1404('0x2c')]=_0x241f1d[_0x1404('0x2c')][_0x1404('0x3c')]?_0x241f1d[_0x1404('0x2c')]:_0x2abc3d[_0x1404('0x2b')];_0x241f1d['order']=qs[_0x1404('0x31')](_0x799d18[_0x1404('0x28')][_0x1404('0x31')]);_0x241f1d['where']=qs[_0x1404('0x29')](_[_0x1404('0x32')](_0x799d18[_0x1404('0x28')],_0x2abc3d[_0x1404('0x29')]));if(_0x799d18[_0x1404('0x28')]['filter']){_0x241f1d[_0x1404('0x34')]=_[_0x1404('0x43')](_0x241f1d[_0x1404('0x34')],{'$or':_[_0x1404('0x23')](_0x241f1d[_0x1404('0x2c')],function(_0x425915){var _0x5271aa={};_0x5271aa[_0x425915]={'$like':'%'+_0x799d18[_0x1404('0x28')]['filter']+'%'};return _0x5271aa;})});}_0x241f1d=_[_0x1404('0x43')]({},_0x241f1d,_0x799d18[_0x1404('0x44')]);return _0x16bbd9['getSubjects'](_0x241f1d);}})[_0x1404('0x1e')](function(_0x4dc79e){if(_0x4dc79e){_0x55a955=_0x4dc79e[_0x1404('0x3c')];if(!_0x799d18['query'][_0x1404('0x2e')](_0x1404('0x2f'))){_0x241f1d[_0x1404('0x19')]=qs[_0x1404('0x19')](_0x799d18[_0x1404('0x28')][_0x1404('0x19')]);_0x241f1d[_0x1404('0x18')]=qs[_0x1404('0x18')](_0x799d18[_0x1404('0x28')][_0x1404('0x18')]);}return _0x16bbd9['getSubjects'](_0x241f1d);}})['then'](function(_0x187987){if(_0x187987){return _0x187987?{'count':_0x55a955,'rows':_0x187987}:null;}})[_0x1404('0x1e')](respondWithResult(_0x257461,null))['catch'](handleError(_0x257461,null));};exports['getDescriptions']=function(_0x214881,_0x1da2e1,_0x32c62e){var _0x3641f4={};var _0x3eb52f={};var _0x167695;var _0x2a95fc;return db[_0x1404('0x24')][_0x1404('0x45')]({'where':{'id':_0x214881['params']['id']}})[_0x1404('0x1e')](handleEntityNotFound(_0x1da2e1,null))[_0x1404('0x1e')](function(_0x16aefe){if(_0x16aefe){_0x167695=_0x16aefe;_0x3eb52f[_0x1404('0x2b')]=_['keys'](db[_0x1404('0x42')]['rawAttributes']);_0x3eb52f[_0x1404('0x28')]=_['keys'](_0x214881['query']);_0x3eb52f[_0x1404('0x29')]=_[_0x1404('0x2a')](_0x3eb52f[_0x1404('0x2b')],_0x3eb52f['query']);_0x3641f4[_0x1404('0x2c')]=_[_0x1404('0x2a')](_0x3eb52f[_0x1404('0x2b')],qs[_0x1404('0x2d')](_0x214881[_0x1404('0x28')][_0x1404('0x2d')]));_0x3641f4['attributes']=_0x3641f4[_0x1404('0x2c')][_0x1404('0x3c')]?_0x3641f4[_0x1404('0x2c')]:_0x3eb52f[_0x1404('0x2b')];_0x3641f4[_0x1404('0x30')]=qs[_0x1404('0x31')](_0x214881[_0x1404('0x28')][_0x1404('0x31')]);_0x3641f4[_0x1404('0x34')]=qs[_0x1404('0x29')](_[_0x1404('0x32')](_0x214881[_0x1404('0x28')],_0x3eb52f[_0x1404('0x29')]));if(_0x214881['query'][_0x1404('0x33')]){_0x3641f4[_0x1404('0x34')]=_[_0x1404('0x43')](_0x3641f4[_0x1404('0x34')],{'$or':_[_0x1404('0x23')](_0x3641f4['attributes'],function(_0x43fa36){var _0x1126ee={};_0x1126ee[_0x43fa36]={'$like':'%'+_0x214881['query']['filter']+'%'};return _0x1126ee;})});}_0x3641f4=_[_0x1404('0x43')]({},_0x3641f4,_0x214881[_0x1404('0x44')]);return _0x167695[_0x1404('0x46')](_0x3641f4);}})['then'](function(_0x4e919f){if(_0x4e919f){_0x2a95fc=_0x4e919f[_0x1404('0x3c')];if(!_0x214881[_0x1404('0x28')][_0x1404('0x2e')](_0x1404('0x2f'))){_0x3641f4[_0x1404('0x19')]=qs[_0x1404('0x19')](_0x214881[_0x1404('0x28')][_0x1404('0x19')]);_0x3641f4[_0x1404('0x18')]=qs[_0x1404('0x18')](_0x214881['query'][_0x1404('0x18')]);}return _0x167695[_0x1404('0x46')](_0x3641f4);}})[_0x1404('0x1e')](function(_0x58aa85){if(_0x58aa85){return _0x58aa85?{'count':_0x2a95fc,'rows':_0x58aa85}:null;}})[_0x1404('0x1e')](respondWithResult(_0x1da2e1,null))[_0x1404('0x39')](handleError(_0x1da2e1,null));};exports[_0x1404('0x47')]=function(_0x44bdde,_0x584872,_0x493b14){var _0x180b71={};var _0x49b159={};var _0x31faef;var _0x10ddda;return db[_0x1404('0x24')][_0x1404('0x45')]({'where':{'id':_0x44bdde['params']['id']}})[_0x1404('0x1e')](handleEntityNotFound(_0x584872,null))['then'](function(_0x1bf9cf){if(_0x1bf9cf){_0x31faef=_0x1bf9cf;_0x49b159[_0x1404('0x2b')]=_[_0x1404('0x27')](db[_0x1404('0x42')]['rawAttributes']);_0x49b159[_0x1404('0x28')]=_[_0x1404('0x27')](_0x44bdde[_0x1404('0x28')]);_0x49b159['filters']=_['intersection'](_0x49b159[_0x1404('0x2b')],_0x49b159[_0x1404('0x28')]);_0x180b71[_0x1404('0x2c')]=_[_0x1404('0x2a')](_0x49b159['model'],qs[_0x1404('0x2d')](_0x44bdde[_0x1404('0x28')][_0x1404('0x2d')]));_0x180b71['attributes']=_0x180b71['attributes'][_0x1404('0x3c')]?_0x180b71[_0x1404('0x2c')]:_0x49b159[_0x1404('0x2b')];_0x180b71[_0x1404('0x30')]=qs[_0x1404('0x31')](_0x44bdde['query'][_0x1404('0x31')]);_0x180b71[_0x1404('0x34')]=qs['filters'](_['pick'](_0x44bdde[_0x1404('0x28')],_0x49b159[_0x1404('0x29')]));if(_0x44bdde[_0x1404('0x28')]['filter']){_0x180b71['where']=_[_0x1404('0x43')](_0x180b71[_0x1404('0x34')],{'$or':_[_0x1404('0x23')](_0x180b71['attributes'],function(_0x50a676){var _0x31d7e5={};_0x31d7e5[_0x50a676]={'$like':'%'+_0x44bdde[_0x1404('0x28')][_0x1404('0x33')]+'%'};return _0x31d7e5;})});}_0x180b71=_[_0x1404('0x43')]({},_0x180b71,_0x44bdde['options']);return _0x31faef[_0x1404('0x47')](_0x180b71);}})[_0x1404('0x1e')](function(_0xec87c8){if(_0xec87c8){_0x10ddda=_0xec87c8[_0x1404('0x3c')];if(!_0x44bdde[_0x1404('0x28')]['hasOwnProperty']('nolimit')){_0x180b71['limit']=qs[_0x1404('0x19')](_0x44bdde[_0x1404('0x28')][_0x1404('0x19')]);_0x180b71['offset']=qs[_0x1404('0x18')](_0x44bdde[_0x1404('0x28')][_0x1404('0x18')]);}return _0x31faef[_0x1404('0x47')](_0x180b71);}})[_0x1404('0x1e')](function(_0x21e719){if(_0x21e719){return _0x21e719?{'count':_0x10ddda,'rows':_0x21e719}:null;}})['then'](respondWithResult(_0x584872,null))[_0x1404('0x39')](handleError(_0x584872,null));};
\ No newline at end of file
+var _0xb404=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','filter','options','include','findAll','catch','show','params','keys','includeAll','find','create','body','getSubjects','getDescriptions','findOne','FreshsalesField','getFields','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring'];(function(_0x9dbcfa,_0x17dc6d){var _0x665925=function(_0x3f3758){while(--_0x3f3758){_0x9dbcfa['push'](_0x9dbcfa['shift']());}};_0x665925(++_0x17dc6d);}(_0xb404,0x1d2));var _0x4b40=function(_0x448b5f,_0xe4a760){_0x448b5f=_0x448b5f-0x0;var _0x5c34e4=_0xb404[_0x448b5f];return _0x5c34e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4b40('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4b40('0x1'));var rp=require(_0x4b40('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4b40('0x3'));var util=require(_0x4b40('0x4'));var path=require(_0x4b40('0x5'));var sox=require(_0x4b40('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4b40('0x7'));var _=require(_0x4b40('0x8'));var squel=require('squel');var crypto=require(_0x4b40('0x9'));var jsforce=require(_0x4b40('0xa'));var deskjs=require(_0x4b40('0xb'));var toCsv=require(_0x4b40('0xc'));var querystring=require(_0x4b40('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4b40('0xe'));var qs=require(_0x4b40('0xf'));var as=require(_0x4b40('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b40('0x11'))(_0x4b40('0x12'));var utils=require(_0x4b40('0x13'));var config=require(_0x4b40('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4b40('0x15'))['db'];function respondWithStatusCode(_0x44fa91,_0x3616af){_0x3616af=_0x3616af||0xcc;return function(_0x2ea57a){if(_0x2ea57a){return _0x44fa91[_0x4b40('0x16')](_0x3616af);}return _0x44fa91[_0x4b40('0x17')](_0x3616af)[_0x4b40('0x18')]();};}function respondWithResult(_0x392f4b,_0x5c3f7a){_0x5c3f7a=_0x5c3f7a||0xc8;return function(_0x54b295){if(_0x54b295){return _0x392f4b[_0x4b40('0x17')](_0x5c3f7a)[_0x4b40('0x19')](_0x54b295);}};}function respondWithFilteredResult(_0xb8f4f7,_0x73bd0c){return function(_0x34538d){if(_0x34538d){var _0x3f96a0=typeof _0x73bd0c['offset']===_0x4b40('0x1a')&&typeof _0x73bd0c['limit']===_0x4b40('0x1a');var _0x437313=_0x34538d[_0x4b40('0x1b')];var _0x13472a=_0x3f96a0?0x0:_0x73bd0c[_0x4b40('0x1c')];var _0x2815e2=_0x3f96a0?_0x34538d['count']:_0x73bd0c[_0x4b40('0x1c')]+_0x73bd0c[_0x4b40('0x1d')];var _0x50edb5;if(_0x2815e2>=_0x437313){_0x2815e2=_0x437313;_0x50edb5=0xc8;}else{_0x50edb5=0xce;}_0xb8f4f7[_0x4b40('0x17')](_0x50edb5);return _0xb8f4f7[_0x4b40('0x1e')](_0x4b40('0x1f'),_0x13472a+'-'+_0x2815e2+'/'+_0x437313)[_0x4b40('0x19')](_0x34538d);}return null;};}function patchUpdates(_0x30abcc){return function(_0x15de3e){try{jsonpatch[_0x4b40('0x20')](_0x15de3e,_0x30abcc,!![]);}catch(_0x2bb980){return BPromise[_0x4b40('0x21')](_0x2bb980);}return _0x15de3e[_0x4b40('0x22')]();};}function saveUpdates(_0x56d74a,_0x59054f){return function(_0x438811){if(_0x438811){return _0x438811[_0x4b40('0x23')](_0x56d74a)['then'](function(_0x129265){return _0x129265;});}return null;};}function removeEntity(_0x3d18ec,_0x3a3fa6){return function(_0x3bc714){if(_0x3bc714){return _0x3bc714[_0x4b40('0x24')]()[_0x4b40('0x25')](function(){_0x3d18ec[_0x4b40('0x17')](0xcc)[_0x4b40('0x18')]();});}};}function handleEntityNotFound(_0x110ce3,_0x269bc9){return function(_0x8c45e4){if(!_0x8c45e4){_0x110ce3[_0x4b40('0x16')](0x194);}return _0x8c45e4;};}function handleError(_0x58bf7d,_0x55c950){_0x55c950=_0x55c950||0x1f4;return function(_0x282d1f){logger[_0x4b40('0x26')](_0x282d1f[_0x4b40('0x27')]);if(_0x282d1f['name']){delete _0x282d1f[_0x4b40('0x28')];}_0x58bf7d[_0x4b40('0x17')](_0x55c950)[_0x4b40('0x29')](_0x282d1f);};}exports[_0x4b40('0x2a')]=function(_0x3f35b2,_0x278b47){var _0x5459a3={},_0x487642={},_0x4cb9ae={'count':0x0,'rows':[]};var _0x26a531=_[_0x4b40('0x2b')](db[_0x4b40('0x2c')][_0x4b40('0x2d')],function(_0x1e0c2c){return{'name':_0x1e0c2c['fieldName'],'type':_0x1e0c2c[_0x4b40('0x2e')][_0x4b40('0x2f')]};});_0x487642[_0x4b40('0x30')]=_[_0x4b40('0x2b')](_0x26a531,_0x4b40('0x28'));_0x487642[_0x4b40('0x31')]=_['keys'](_0x3f35b2[_0x4b40('0x31')]);_0x487642['filters']=_[_0x4b40('0x32')](_0x487642[_0x4b40('0x30')],_0x487642[_0x4b40('0x31')]);_0x5459a3[_0x4b40('0x33')]=_[_0x4b40('0x32')](_0x487642[_0x4b40('0x30')],qs[_0x4b40('0x34')](_0x3f35b2[_0x4b40('0x31')][_0x4b40('0x34')]));_0x5459a3[_0x4b40('0x33')]=_0x5459a3[_0x4b40('0x33')][_0x4b40('0x35')]?_0x5459a3[_0x4b40('0x33')]:_0x487642[_0x4b40('0x30')];if(!_0x3f35b2['query'][_0x4b40('0x36')](_0x4b40('0x37'))){_0x5459a3[_0x4b40('0x1d')]=qs['limit'](_0x3f35b2[_0x4b40('0x31')][_0x4b40('0x1d')]);_0x5459a3[_0x4b40('0x1c')]=qs['offset'](_0x3f35b2[_0x4b40('0x31')][_0x4b40('0x1c')]);}_0x5459a3[_0x4b40('0x38')]=qs[_0x4b40('0x39')](_0x3f35b2[_0x4b40('0x31')][_0x4b40('0x39')]);_0x5459a3[_0x4b40('0x3a')]=qs['filters'](_[_0x4b40('0x3b')](_0x3f35b2[_0x4b40('0x31')],_0x487642[_0x4b40('0x3c')]),_0x26a531);if(_0x3f35b2[_0x4b40('0x31')]['filter']){_0x5459a3[_0x4b40('0x3a')]=_[_0x4b40('0x3d')](_0x5459a3[_0x4b40('0x3a')],{'$or':_[_0x4b40('0x2b')](_0x26a531,function(_0x5975cc){if(_0x5975cc[_0x4b40('0x2e')]!==_0x4b40('0x3e')){var _0x43a55b={};_0x43a55b[_0x5975cc['name']]={'$like':'%'+_0x3f35b2['query'][_0x4b40('0x3f')]+'%'};return _0x43a55b;}})});}_0x5459a3=_[_0x4b40('0x3d')]({},_0x5459a3,_0x3f35b2[_0x4b40('0x40')]);var _0x12b2ad={'where':_0x5459a3[_0x4b40('0x3a')]};return db[_0x4b40('0x2c')]['count'](_0x12b2ad)[_0x4b40('0x25')](function(_0x5b60f1){_0x4cb9ae['count']=_0x5b60f1;if(_0x3f35b2[_0x4b40('0x31')]['includeAll']){_0x5459a3[_0x4b40('0x41')]=[{'all':!![]}];}return db[_0x4b40('0x2c')][_0x4b40('0x42')](_0x5459a3);})[_0x4b40('0x25')](function(_0x68e459){_0x4cb9ae['rows']=_0x68e459;return _0x4cb9ae;})['then'](respondWithFilteredResult(_0x278b47,_0x5459a3))[_0x4b40('0x43')](handleError(_0x278b47,null));};exports[_0x4b40('0x44')]=function(_0x79d0ef,_0x2f0b66){var _0x439e60={'raw':![],'where':{'id':_0x79d0ef[_0x4b40('0x45')]['id']}},_0x37f092={};_0x37f092[_0x4b40('0x30')]=_[_0x4b40('0x46')](db[_0x4b40('0x2c')][_0x4b40('0x2d')]);_0x37f092['query']=_[_0x4b40('0x46')](_0x79d0ef[_0x4b40('0x31')]);_0x37f092['filters']=_[_0x4b40('0x32')](_0x37f092[_0x4b40('0x30')],_0x37f092[_0x4b40('0x31')]);_0x439e60[_0x4b40('0x33')]=_[_0x4b40('0x32')](_0x37f092[_0x4b40('0x30')],qs[_0x4b40('0x34')](_0x79d0ef[_0x4b40('0x31')][_0x4b40('0x34')]));_0x439e60[_0x4b40('0x33')]=_0x439e60['attributes']['length']?_0x439e60['attributes']:_0x37f092['model'];if(_0x79d0ef[_0x4b40('0x31')][_0x4b40('0x47')]){_0x439e60[_0x4b40('0x41')]=[{'all':!![]}];}_0x439e60=_[_0x4b40('0x3d')]({},_0x439e60,_0x79d0ef['options']);return db[_0x4b40('0x2c')][_0x4b40('0x48')](_0x439e60)['then'](handleEntityNotFound(_0x2f0b66,null))[_0x4b40('0x25')](respondWithResult(_0x2f0b66,null))[_0x4b40('0x43')](handleError(_0x2f0b66,null));};exports[_0x4b40('0x49')]=function(_0x50fb57,_0x5091d){return db[_0x4b40('0x2c')][_0x4b40('0x49')](_0x50fb57[_0x4b40('0x4a')],{})[_0x4b40('0x25')](respondWithResult(_0x5091d,0xc9))[_0x4b40('0x43')](handleError(_0x5091d,null));};exports[_0x4b40('0x23')]=function(_0x3598b4,_0x360b89){if(_0x3598b4['body']['id']){delete _0x3598b4['body']['id'];}return db[_0x4b40('0x2c')][_0x4b40('0x48')]({'where':{'id':_0x3598b4[_0x4b40('0x45')]['id']}})[_0x4b40('0x25')](handleEntityNotFound(_0x360b89,null))['then'](saveUpdates(_0x3598b4['body'],null))[_0x4b40('0x25')](respondWithResult(_0x360b89,null))[_0x4b40('0x43')](handleError(_0x360b89,null));};exports[_0x4b40('0x24')]=function(_0x437e3e,_0x7f7439){return db[_0x4b40('0x2c')][_0x4b40('0x48')]({'where':{'id':_0x437e3e[_0x4b40('0x45')]['id']}})['then'](handleEntityNotFound(_0x7f7439,null))[_0x4b40('0x25')](removeEntity(_0x7f7439,null))[_0x4b40('0x43')](handleError(_0x7f7439,null));};exports[_0x4b40('0x4b')]=function(_0x5acef5,_0x9ab192,_0x553248){var _0x34f252={};var _0x461fc9={};var _0x127dd9;var _0x3c4e30;return db[_0x4b40('0x2c')]['findOne']({'where':{'id':_0x5acef5[_0x4b40('0x45')]['id']}})[_0x4b40('0x25')](handleEntityNotFound(_0x9ab192,null))[_0x4b40('0x25')](function(_0x2d9e3f){if(_0x2d9e3f){_0x127dd9=_0x2d9e3f;_0x461fc9[_0x4b40('0x30')]=_[_0x4b40('0x46')](db['FreshsalesField']['rawAttributes']);_0x461fc9[_0x4b40('0x31')]=_['keys'](_0x5acef5[_0x4b40('0x31')]);_0x461fc9[_0x4b40('0x3c')]=_[_0x4b40('0x32')](_0x461fc9['model'],_0x461fc9['query']);_0x34f252[_0x4b40('0x33')]=_[_0x4b40('0x32')](_0x461fc9['model'],qs[_0x4b40('0x34')](_0x5acef5[_0x4b40('0x31')]['fields']));_0x34f252[_0x4b40('0x33')]=_0x34f252[_0x4b40('0x33')][_0x4b40('0x35')]?_0x34f252[_0x4b40('0x33')]:_0x461fc9[_0x4b40('0x30')];_0x34f252[_0x4b40('0x38')]=qs['sort'](_0x5acef5['query'][_0x4b40('0x39')]);_0x34f252['where']=qs[_0x4b40('0x3c')](_['pick'](_0x5acef5['query'],_0x461fc9['filters']));if(_0x5acef5[_0x4b40('0x31')][_0x4b40('0x3f')]){_0x34f252[_0x4b40('0x3a')]=_[_0x4b40('0x3d')](_0x34f252[_0x4b40('0x3a')],{'$or':_[_0x4b40('0x2b')](_0x34f252['attributes'],function(_0x25b0c8){var _0x2f2116={};_0x2f2116[_0x25b0c8]={'$like':'%'+_0x5acef5[_0x4b40('0x31')][_0x4b40('0x3f')]+'%'};return _0x2f2116;})});}_0x34f252=_['merge']({},_0x34f252,_0x5acef5[_0x4b40('0x40')]);return _0x127dd9[_0x4b40('0x4b')](_0x34f252);}})[_0x4b40('0x25')](function(_0x1e842e){if(_0x1e842e){_0x3c4e30=_0x1e842e[_0x4b40('0x35')];if(!_0x5acef5['query'][_0x4b40('0x36')](_0x4b40('0x37'))){_0x34f252['limit']=qs[_0x4b40('0x1d')](_0x5acef5[_0x4b40('0x31')][_0x4b40('0x1d')]);_0x34f252['offset']=qs[_0x4b40('0x1c')](_0x5acef5['query'][_0x4b40('0x1c')]);}return _0x127dd9[_0x4b40('0x4b')](_0x34f252);}})[_0x4b40('0x25')](function(_0x2c46c5){if(_0x2c46c5){return _0x2c46c5?{'count':_0x3c4e30,'rows':_0x2c46c5}:null;}})['then'](respondWithResult(_0x9ab192,null))[_0x4b40('0x43')](handleError(_0x9ab192,null));};exports[_0x4b40('0x4c')]=function(_0x2cddc2,_0x556f25,_0x132c52){var _0x51aecf={};var _0x197c72={};var _0x20dc17;var _0x194fca;return db[_0x4b40('0x2c')][_0x4b40('0x4d')]({'where':{'id':_0x2cddc2['params']['id']}})[_0x4b40('0x25')](handleEntityNotFound(_0x556f25,null))[_0x4b40('0x25')](function(_0x5b0197){if(_0x5b0197){_0x20dc17=_0x5b0197;_0x197c72[_0x4b40('0x30')]=_[_0x4b40('0x46')](db[_0x4b40('0x4e')][_0x4b40('0x2d')]);_0x197c72[_0x4b40('0x31')]=_['keys'](_0x2cddc2[_0x4b40('0x31')]);_0x197c72['filters']=_[_0x4b40('0x32')](_0x197c72[_0x4b40('0x30')],_0x197c72[_0x4b40('0x31')]);_0x51aecf[_0x4b40('0x33')]=_['intersection'](_0x197c72[_0x4b40('0x30')],qs[_0x4b40('0x34')](_0x2cddc2[_0x4b40('0x31')][_0x4b40('0x34')]));_0x51aecf['attributes']=_0x51aecf[_0x4b40('0x33')]['length']?_0x51aecf[_0x4b40('0x33')]:_0x197c72[_0x4b40('0x30')];_0x51aecf[_0x4b40('0x38')]=qs[_0x4b40('0x39')](_0x2cddc2['query'][_0x4b40('0x39')]);_0x51aecf[_0x4b40('0x3a')]=qs[_0x4b40('0x3c')](_[_0x4b40('0x3b')](_0x2cddc2[_0x4b40('0x31')],_0x197c72[_0x4b40('0x3c')]));if(_0x2cddc2[_0x4b40('0x31')][_0x4b40('0x3f')]){_0x51aecf[_0x4b40('0x3a')]=_[_0x4b40('0x3d')](_0x51aecf['where'],{'$or':_['map'](_0x51aecf[_0x4b40('0x33')],function(_0x3312da){var _0x136d84={};_0x136d84[_0x3312da]={'$like':'%'+_0x2cddc2[_0x4b40('0x31')][_0x4b40('0x3f')]+'%'};return _0x136d84;})});}_0x51aecf=_['merge']({},_0x51aecf,_0x2cddc2[_0x4b40('0x40')]);return _0x20dc17['getDescriptions'](_0x51aecf);}})[_0x4b40('0x25')](function(_0x41d0d0){if(_0x41d0d0){_0x194fca=_0x41d0d0[_0x4b40('0x35')];if(!_0x2cddc2[_0x4b40('0x31')][_0x4b40('0x36')](_0x4b40('0x37'))){_0x51aecf['limit']=qs['limit'](_0x2cddc2[_0x4b40('0x31')][_0x4b40('0x1d')]);_0x51aecf[_0x4b40('0x1c')]=qs['offset'](_0x2cddc2[_0x4b40('0x31')]['offset']);}return _0x20dc17[_0x4b40('0x4c')](_0x51aecf);}})['then'](function(_0x3b12d9){if(_0x3b12d9){return _0x3b12d9?{'count':_0x194fca,'rows':_0x3b12d9}:null;}})['then'](respondWithResult(_0x556f25,null))[_0x4b40('0x43')](handleError(_0x556f25,null));};exports[_0x4b40('0x4f')]=function(_0xb25c8d,_0x32d731,_0x3a3373){var _0x5f4104={};var _0x4f3362={};var _0x2a3a11;var _0x559eb6;return db[_0x4b40('0x2c')][_0x4b40('0x4d')]({'where':{'id':_0xb25c8d['params']['id']}})['then'](handleEntityNotFound(_0x32d731,null))[_0x4b40('0x25')](function(_0x542e6c){if(_0x542e6c){_0x2a3a11=_0x542e6c;_0x4f3362[_0x4b40('0x30')]=_[_0x4b40('0x46')](db[_0x4b40('0x4e')]['rawAttributes']);_0x4f3362['query']=_[_0x4b40('0x46')](_0xb25c8d[_0x4b40('0x31')]);_0x4f3362[_0x4b40('0x3c')]=_['intersection'](_0x4f3362[_0x4b40('0x30')],_0x4f3362[_0x4b40('0x31')]);_0x5f4104[_0x4b40('0x33')]=_['intersection'](_0x4f3362[_0x4b40('0x30')],qs[_0x4b40('0x34')](_0xb25c8d[_0x4b40('0x31')][_0x4b40('0x34')]));_0x5f4104['attributes']=_0x5f4104[_0x4b40('0x33')][_0x4b40('0x35')]?_0x5f4104[_0x4b40('0x33')]:_0x4f3362[_0x4b40('0x30')];_0x5f4104['order']=qs[_0x4b40('0x39')](_0xb25c8d['query']['sort']);_0x5f4104[_0x4b40('0x3a')]=qs[_0x4b40('0x3c')](_['pick'](_0xb25c8d[_0x4b40('0x31')],_0x4f3362[_0x4b40('0x3c')]));if(_0xb25c8d['query'][_0x4b40('0x3f')]){_0x5f4104[_0x4b40('0x3a')]=_[_0x4b40('0x3d')](_0x5f4104['where'],{'$or':_['map'](_0x5f4104[_0x4b40('0x33')],function(_0xe5709f){var _0xaf884={};_0xaf884[_0xe5709f]={'$like':'%'+_0xb25c8d[_0x4b40('0x31')][_0x4b40('0x3f')]+'%'};return _0xaf884;})});}_0x5f4104=_['merge']({},_0x5f4104,_0xb25c8d[_0x4b40('0x40')]);return _0x2a3a11[_0x4b40('0x4f')](_0x5f4104);}})['then'](function(_0x5dc088){if(_0x5dc088){_0x559eb6=_0x5dc088[_0x4b40('0x35')];if(!_0xb25c8d[_0x4b40('0x31')][_0x4b40('0x36')]('nolimit')){_0x5f4104[_0x4b40('0x1d')]=qs['limit'](_0xb25c8d[_0x4b40('0x31')][_0x4b40('0x1d')]);_0x5f4104['offset']=qs['offset'](_0xb25c8d['query'][_0x4b40('0x1c')]);}return _0x2a3a11[_0x4b40('0x4f')](_0x5f4104);}})['then'](function(_0x1a98df){if(_0x1a98df){return _0x1a98df?{'count':_0x559eb6,'rows':_0x1a98df}:null;}})[_0x4b40('0x25')](respondWithResult(_0x32d731,null))[_0x4b40('0x43')](handleError(_0x32d731,null));};
\ No newline at end of file
index 8792d02..72975da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb2=['rimraf','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5cc1f3,_0x3246fc){var _0x383108=function(_0x308e32){while(--_0x308e32){_0x5cc1f3['push'](_0x5cc1f3['shift']());}};_0x383108(++_0x3246fc);}(_0x6cb2,0xf5));var _0x26cb=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x6cb2[_0x255d5b];return _0x3e141a;};'use strict';var _=require('lodash');var util=require(_0x26cb('0x0'));var logger=require(_0x26cb('0x1'))(_0x26cb('0x2'));var moment=require(_0x26cb('0x3'));var BPromise=require(_0x26cb('0x4'));var rp=require(_0x26cb('0x5'));var fs=require('fs');var path=require(_0x26cb('0x6'));var rimraf=require(_0x26cb('0x7'));var config=require('../../config/environment');var attributes=require(_0x26cb('0x8'));module[_0x26cb('0x9')]=function(_0x47ae27,_0x1ad1d8){return _0x47ae27[_0x26cb('0xa')](_0x26cb('0xb'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xace9=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','FreshsalesConfiguration','int_freshsales_configurations','util','../../config/logger'];(function(_0x2299e8,_0x3e4063){var _0x433c0e=function(_0x43f27e){while(--_0x43f27e){_0x2299e8['push'](_0x2299e8['shift']());}};_0x433c0e(++_0x3e4063);}(_0xace9,0xc4));var _0x9ace=function(_0x2cbf92,_0xa30cd1){_0x2cbf92=_0x2cbf92-0x0;var _0x3b48ca=_0xace9[_0x2cbf92];return _0x3b48ca;};'use strict';var _=require('lodash');var util=require(_0x9ace('0x0'));var logger=require(_0x9ace('0x1'))(_0x9ace('0x2'));var moment=require('moment');var BPromise=require(_0x9ace('0x3'));var rp=require(_0x9ace('0x4'));var fs=require('fs');var path=require(_0x9ace('0x5'));var rimraf=require(_0x9ace('0x6'));var config=require(_0x9ace('0x7'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0x9ace('0x8')]=function(_0x5910db,_0x5c6cb9){return _0x5910db['define'](_0x9ace('0x9'),attributes,{'tableName':_0x9ace('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7ffe28..65b18b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53b2=['FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x1538db,_0x380120){var _0x46da9c=function(_0x3c413b){while(--_0x3c413b){_0x1538db['push'](_0x1538db['shift']());}};_0x46da9c(++_0x380120);}(_0x53b2,0x105));var _0x253b=function(_0x3f12bc,_0x267a31){_0x3f12bc=_0x3f12bc-0x0;var _0x5823ed=_0x53b2[_0x3f12bc];return _0x5823ed;};'use strict';var _=require(_0x253b('0x0'));var util=require(_0x253b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x253b('0x2'));var db=require(_0x253b('0x3'))['db'];var utils=require(_0x253b('0x4'));var logger=require(_0x253b('0x5'))('rpc');var config=require(_0x253b('0x6'));var jayson=require(_0x253b('0x7'));var client=jayson[_0x253b('0x8')][_0x253b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35d8e8,_0x1f0709,_0x339d49){return new BPromise(function(_0x36ca8c,_0x5b517b){return client[_0x253b('0xa')](_0x35d8e8,_0x339d49)['then'](function(_0x5adb02){logger[_0x253b('0xb')](_0x253b('0xc'),_0x1f0709,_0x253b('0xd'));logger[_0x253b('0xe')](_0x253b('0xf'),_0x1f0709,_0x253b('0xd'),JSON[_0x253b('0x10')](_0x5adb02));if(_0x5adb02['error']){if(_0x5adb02['error'][_0x253b('0x11')]===0x1f4){logger[_0x253b('0x12')](_0x253b('0xc'),_0x1f0709,_0x5adb02[_0x253b('0x12')][_0x253b('0x13')]);return _0x5b517b(_0x5adb02[_0x253b('0x12')][_0x253b('0x13')]);}logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x1f0709,_0x5adb02[_0x253b('0x12')][_0x253b('0x13')]);return _0x36ca8c(_0x5adb02[_0x253b('0x12')][_0x253b('0x13')]);}else{logger[_0x253b('0xb')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x1f0709,_0x253b('0xd'));_0x36ca8c(_0x5adb02['result'][_0x253b('0x13')]);}})[_0x253b('0x14')](function(_0x1fc937){logger[_0x253b('0x12')](_0x253b('0xc'),_0x1f0709,_0x1fc937);_0x5b517b(_0x1fc937);});});}
\ No newline at end of file
+var _0xe700=['result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3ba1de,_0x4b2d0f){var _0xbc4db2=function(_0x1efd1b){while(--_0x1efd1b){_0x3ba1de['push'](_0x3ba1de['shift']());}};_0xbc4db2(++_0x4b2d0f);}(_0xe700,0xb9));var _0x0e70=function(_0x3b0927,_0x4b6291){_0x3b0927=_0x3b0927-0x0;var _0x2a891d=_0xe700[_0x3b0927];return _0x2a891d;};'use strict';var _=require(_0x0e70('0x0'));var util=require(_0x0e70('0x1'));var moment=require(_0x0e70('0x2'));var BPromise=require(_0x0e70('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e70('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0e70('0x5'));var logger=require(_0x0e70('0x6'))(_0x0e70('0x7'));var config=require(_0x0e70('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0e70('0x9')][_0x0e70('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51a99c,_0x460686,_0x2ddc82){return new BPromise(function(_0x448d87,_0x458ea5){return client[_0x0e70('0xb')](_0x51a99c,_0x2ddc82)[_0x0e70('0xc')](function(_0x379319){logger[_0x0e70('0xd')](_0x0e70('0xe'),_0x460686,_0x0e70('0xf'));logger[_0x0e70('0x10')](_0x0e70('0x11'),_0x460686,_0x0e70('0xf'),JSON[_0x0e70('0x12')](_0x379319));if(_0x379319[_0x0e70('0x13')]){if(_0x379319['error'][_0x0e70('0x14')]===0x1f4){logger[_0x0e70('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x460686,_0x379319[_0x0e70('0x13')]['message']);return _0x458ea5(_0x379319['error'][_0x0e70('0x15')]);}logger[_0x0e70('0x13')](_0x0e70('0xe'),_0x460686,_0x379319[_0x0e70('0x13')][_0x0e70('0x15')]);return _0x448d87(_0x379319[_0x0e70('0x13')][_0x0e70('0x15')]);}else{logger[_0x0e70('0xd')](_0x0e70('0xe'),_0x460686,_0x0e70('0xf'));_0x448d87(_0x379319[_0x0e70('0x16')][_0x0e70('0x15')]);}})['catch'](function(_0x41a4be){logger[_0x0e70('0x13')](_0x0e70('0xe'),_0x460686,_0x41a4be);_0x458ea5(_0x41a4be);});});}
\ No newline at end of file
index b1cacd2..912874b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x616c=['/:id','post','put','destroy','util','path','express','Router','fs-extra','../../components/auth/service','./intFreshsalesField.controller','get','isAuthenticated','index'];(function(_0x39767f,_0xdf30e6){var _0x54ff20=function(_0x2975f0){while(--_0x2975f0){_0x39767f['push'](_0x39767f['shift']());}};_0x54ff20(++_0xdf30e6);}(_0x616c,0x1b6));var _0xc616=function(_0x1488f2,_0x3269b3){_0x1488f2=_0x1488f2-0x0;var _0x278733=_0x616c[_0x1488f2];return _0x278733;};'use strict';var multer=require('multer');var util=require(_0xc616('0x0'));var path=require(_0xc616('0x1'));var timeout=require('connect-timeout');var express=require(_0xc616('0x2'));var router=express[_0xc616('0x3')]();var fs_extra=require(_0xc616('0x4'));var auth=require(_0xc616('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc616('0x6'));router[_0xc616('0x7')]('/',auth[_0xc616('0x8')](),controller[_0xc616('0x9')]);router[_0xc616('0x7')](_0xc616('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xc616('0xb')]('/',auth[_0xc616('0x8')](),controller['create']);router[_0xc616('0xc')]('/:id',auth[_0xc616('0x8')](),controller['update']);router['delete'](_0xc616('0xa'),auth[_0xc616('0x8')](),controller[_0xc616('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x22dd=['multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','show','put','update','delete','/:id','destroy','exports'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x22dd,0xe4));var _0xd22d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x22dd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd22d('0x0'));var util=require(_0xd22d('0x1'));var path=require(_0xd22d('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd22d('0x3')]();var fs_extra=require(_0xd22d('0x4'));var auth=require(_0xd22d('0x5'));var interaction=require(_0xd22d('0x6'));var config=require(_0xd22d('0x7'));var controller=require(_0xd22d('0x8'));router[_0xd22d('0x9')]('/',auth[_0xd22d('0xa')](),controller[_0xd22d('0xb')]);router[_0xd22d('0x9')]('/:id',auth[_0xd22d('0xa')](),controller[_0xd22d('0xc')]);router['post']('/',auth[_0xd22d('0xa')](),controller['create']);router[_0xd22d('0xd')]('/:id',auth[_0xd22d('0xa')](),controller[_0xd22d('0xe')]);router[_0xd22d('0xf')](_0xd22d('0x10'),auth[_0xd22d('0xa')](),controller[_0xd22d('0x11')]);module[_0xd22d('0x12')]=router;
\ No newline at end of file
index 1404cf5..bd790fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662f=['sequelize','exports','ENUM','string','variable','customVariable','picklist','STRING','BOOLEAN'];(function(_0xd08cd7,_0x262118){var _0x27a73e=function(_0x9acea5){while(--_0x9acea5){_0xd08cd7['push'](_0xd08cd7['shift']());}};_0x27a73e(++_0x262118);}(_0x662f,0x120));var _0xf662=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x662f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf662('0x0'));module[_0xf662('0x1')]={'type':{'type':Sequelize[_0xf662('0x2')](_0xf662('0x3'),_0xf662('0x4'),_0xf662('0x5'),'keyValue',_0xf662('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf662('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xf662('0x2')](_0xf662('0x3'),_0xf662('0x4'),_0xf662('0x5'))},'keyContent':{'type':Sequelize[_0xf662('0x7')]},'idField':{'type':Sequelize[_0xf662('0x7')]},'nameField':{'type':Sequelize[_0xf662('0x7')]},'customField':{'type':Sequelize[_0xf662('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2cb4=['variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x4d55ad,_0x3d2405){var _0x5d3bfa=function(_0x2eab82){while(--_0x2eab82){_0x4d55ad['push'](_0x4d55ad['shift']());}};_0x5d3bfa(++_0x3d2405);}(_0x2cb4,0x83));var _0x42cb=function(_0x2298f0,_0x3bbf4f){_0x2298f0=_0x2298f0-0x0;var _0x39b136=_0x2cb4[_0x2298f0];return _0x39b136;};'use strict';var Sequelize=require(_0x42cb('0x0'));module[_0x42cb('0x1')]={'type':{'type':Sequelize[_0x42cb('0x2')](_0x42cb('0x3'),_0x42cb('0x4'),_0x42cb('0x5'),_0x42cb('0x6'),_0x42cb('0x7')),'defaultValue':_0x42cb('0x3')},'content':{'type':Sequelize[_0x42cb('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0x42cb('0x4'),_0x42cb('0x5'))},'keyContent':{'type':Sequelize[_0x42cb('0x8')]},'idField':{'type':Sequelize[_0x42cb('0x8')]},'nameField':{'type':Sequelize[_0x42cb('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x42cb('0x8')]}};
\ No newline at end of file
index 8680842..5895185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7612=['rows','catch','show','params','create','body','find','eml-format','fast-json-patch','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','../../config/environment','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','send','index','map','FreshsalesField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll'];(function(_0x2b92ec,_0x18e0e3){var _0x12be46=function(_0x18118b){while(--_0x18118b){_0x2b92ec['push'](_0x2b92ec['shift']());}};_0x12be46(++_0x18e0e3);}(_0x7612,0x1c9));var _0x2761=function(_0x10df1e,_0xf56f85){_0x10df1e=_0x10df1e-0x0;var _0x3e24fb=_0x7612[_0x10df1e];return _0x3e24fb;};'use strict';var emlformat=require(_0x2761('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2761('0x1'));var rp=require(_0x2761('0x2'));var moment=require(_0x2761('0x3'));var BPromise=require(_0x2761('0x4'));var Mustache=require(_0x2761('0x5'));var util=require(_0x2761('0x6'));var path=require(_0x2761('0x7'));var sox=require(_0x2761('0x8'));var csv=require(_0x2761('0x9'));var ejs=require(_0x2761('0xa'));var fs=require('fs');var fs_extra=require(_0x2761('0xb'));var _=require('lodash');var squel=require(_0x2761('0xc'));var crypto=require(_0x2761('0xd'));var jsforce=require(_0x2761('0xe'));var deskjs=require(_0x2761('0xf'));var toCsv=require(_0x2761('0x9'));var querystring=require(_0x2761('0x10'));var Papa=require(_0x2761('0x11'));var Redis=require(_0x2761('0x12'));var authService=require(_0x2761('0x13'));var qs=require(_0x2761('0x14'));var as=require(_0x2761('0x15'));var hardwareService=require(_0x2761('0x16'));var logger=require(_0x2761('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x2761('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x372eb1,_0x1a9dc3){_0x1a9dc3=_0x1a9dc3||0xcc;return function(_0x2789ea){if(_0x2789ea){return _0x372eb1['sendStatus'](_0x1a9dc3);}return _0x372eb1[_0x2761('0x19')](_0x1a9dc3)[_0x2761('0x1a')]();};}function respondWithResult(_0x374b2e,_0x5a3ef6){_0x5a3ef6=_0x5a3ef6||0xc8;return function(_0x5f1233){if(_0x5f1233){return _0x374b2e[_0x2761('0x19')](_0x5a3ef6)[_0x2761('0x1b')](_0x5f1233);}};}function respondWithFilteredResult(_0xdf7ebf,_0x530fce){return function(_0x2d24cd){if(_0x2d24cd){var _0x2f9b4d=typeof _0x530fce[_0x2761('0x1c')]===_0x2761('0x1d')&&typeof _0x530fce['limit']===_0x2761('0x1d');var _0x4ad6dc=_0x2d24cd[_0x2761('0x1e')];var _0x4d0f4b=_0x2f9b4d?0x0:_0x530fce[_0x2761('0x1c')];var _0xab9604=_0x2f9b4d?_0x2d24cd[_0x2761('0x1e')]:_0x530fce[_0x2761('0x1c')]+_0x530fce['limit'];var _0x561817;if(_0xab9604>=_0x4ad6dc){_0xab9604=_0x4ad6dc;_0x561817=0xc8;}else{_0x561817=0xce;}_0xdf7ebf[_0x2761('0x19')](_0x561817);return _0xdf7ebf[_0x2761('0x1f')](_0x2761('0x20'),_0x4d0f4b+'-'+_0xab9604+'/'+_0x4ad6dc)[_0x2761('0x1b')](_0x2d24cd);}return null;};}function patchUpdates(_0x2b76d3){return function(_0x1b22a2){try{jsonpatch[_0x2761('0x21')](_0x1b22a2,_0x2b76d3,!![]);}catch(_0x313f79){return BPromise[_0x2761('0x22')](_0x313f79);}return _0x1b22a2['save']();};}function saveUpdates(_0x406a8b,_0x9ac275){return function(_0x17ffc1){if(_0x17ffc1){return _0x17ffc1[_0x2761('0x23')](_0x406a8b)[_0x2761('0x24')](function(_0x4014cd){return _0x4014cd;});}return null;};}function removeEntity(_0x3889af,_0x15e18d){return function(_0x25ad2d){if(_0x25ad2d){return _0x25ad2d['destroy']()[_0x2761('0x24')](function(){_0x3889af[_0x2761('0x19')](0xcc)[_0x2761('0x1a')]();});}};}function handleEntityNotFound(_0x3281b0,_0x105ea8){return function(_0x3ff219){if(!_0x3ff219){_0x3281b0[_0x2761('0x25')](0x194);}return _0x3ff219;};}function handleError(_0x1bef1e,_0x32f8b5){_0x32f8b5=_0x32f8b5||0x1f4;return function(_0x326fb4){logger[_0x2761('0x26')](_0x326fb4[_0x2761('0x27')]);if(_0x326fb4[_0x2761('0x28')]){delete _0x326fb4['name'];}_0x1bef1e['status'](_0x32f8b5)[_0x2761('0x29')](_0x326fb4);};}exports[_0x2761('0x2a')]=function(_0xacf447,_0xf8e4e3){var _0x2f9627={},_0x5d900f={},_0x530e57={'count':0x0,'rows':[]};var _0x4b4c9d=_[_0x2761('0x2b')](db[_0x2761('0x2c')][_0x2761('0x2d')],function(_0x3aba97){return{'name':_0x3aba97['fieldName'],'type':_0x3aba97[_0x2761('0x2e')][_0x2761('0x2f')]};});_0x5d900f[_0x2761('0x30')]=_[_0x2761('0x2b')](_0x4b4c9d,_0x2761('0x28'));_0x5d900f[_0x2761('0x31')]=_[_0x2761('0x32')](_0xacf447[_0x2761('0x31')]);_0x5d900f[_0x2761('0x33')]=_[_0x2761('0x34')](_0x5d900f[_0x2761('0x30')],_0x5d900f['query']);_0x2f9627[_0x2761('0x35')]=_[_0x2761('0x34')](_0x5d900f[_0x2761('0x30')],qs[_0x2761('0x36')](_0xacf447['query'][_0x2761('0x36')]));_0x2f9627[_0x2761('0x35')]=_0x2f9627[_0x2761('0x35')][_0x2761('0x37')]?_0x2f9627[_0x2761('0x35')]:_0x5d900f[_0x2761('0x30')];if(!_0xacf447[_0x2761('0x31')]['hasOwnProperty'](_0x2761('0x38'))){_0x2f9627[_0x2761('0x39')]=qs[_0x2761('0x39')](_0xacf447[_0x2761('0x31')]['limit']);_0x2f9627['offset']=qs['offset'](_0xacf447['query'][_0x2761('0x1c')]);}_0x2f9627[_0x2761('0x3a')]=qs[_0x2761('0x3b')](_0xacf447[_0x2761('0x31')][_0x2761('0x3b')]);_0x2f9627['where']=qs[_0x2761('0x33')](_[_0x2761('0x3c')](_0xacf447[_0x2761('0x31')],_0x5d900f[_0x2761('0x33')]),_0x4b4c9d);if(_0xacf447[_0x2761('0x31')][_0x2761('0x3d')]){_0x2f9627[_0x2761('0x3e')]=_[_0x2761('0x3f')](_0x2f9627[_0x2761('0x3e')],{'$or':_[_0x2761('0x2b')](_0x4b4c9d,function(_0x3f4bdb){if(_0x3f4bdb[_0x2761('0x2e')]!=='VIRTUAL'){var _0x4b4081={};_0x4b4081[_0x3f4bdb[_0x2761('0x28')]]={'$like':'%'+_0xacf447[_0x2761('0x31')]['filter']+'%'};return _0x4b4081;}})});}_0x2f9627=_[_0x2761('0x3f')]({},_0x2f9627,_0xacf447[_0x2761('0x40')]);var _0x442f2d={'where':_0x2f9627[_0x2761('0x3e')]};return db['FreshsalesField']['count'](_0x442f2d)[_0x2761('0x24')](function(_0x569926){_0x530e57[_0x2761('0x1e')]=_0x569926;if(_0xacf447['query'][_0x2761('0x41')]){_0x2f9627[_0x2761('0x42')]=[{'all':!![]}];}return db[_0x2761('0x2c')][_0x2761('0x43')](_0x2f9627);})['then'](function(_0x15d6dd){_0x530e57[_0x2761('0x44')]=_0x15d6dd;return _0x530e57;})[_0x2761('0x24')](respondWithFilteredResult(_0xf8e4e3,_0x2f9627))[_0x2761('0x45')](handleError(_0xf8e4e3,null));};exports[_0x2761('0x46')]=function(_0xbbfe6c,_0x22e30a){var _0x4448cb={'raw':!![],'where':{'id':_0xbbfe6c[_0x2761('0x47')]['id']}},_0x339f79={};_0x339f79[_0x2761('0x30')]=_[_0x2761('0x32')](db[_0x2761('0x2c')][_0x2761('0x2d')]);_0x339f79['query']=_[_0x2761('0x32')](_0xbbfe6c[_0x2761('0x31')]);_0x339f79['filters']=_[_0x2761('0x34')](_0x339f79[_0x2761('0x30')],_0x339f79[_0x2761('0x31')]);_0x4448cb[_0x2761('0x35')]=_[_0x2761('0x34')](_0x339f79[_0x2761('0x30')],qs[_0x2761('0x36')](_0xbbfe6c[_0x2761('0x31')][_0x2761('0x36')]));_0x4448cb['attributes']=_0x4448cb[_0x2761('0x35')]['length']?_0x4448cb['attributes']:_0x339f79[_0x2761('0x30')];if(_0xbbfe6c['query'][_0x2761('0x41')]){_0x4448cb[_0x2761('0x42')]=[{'all':!![]}];}_0x4448cb=_[_0x2761('0x3f')]({},_0x4448cb,_0xbbfe6c[_0x2761('0x40')]);return db[_0x2761('0x2c')]['find'](_0x4448cb)['then'](handleEntityNotFound(_0x22e30a,null))[_0x2761('0x24')](respondWithResult(_0x22e30a,null))[_0x2761('0x45')](handleError(_0x22e30a,null));};exports[_0x2761('0x48')]=function(_0x129109,_0x5efd37){return db[_0x2761('0x2c')][_0x2761('0x48')](_0x129109[_0x2761('0x49')],{})[_0x2761('0x24')](respondWithResult(_0x5efd37,0xc9))['catch'](handleError(_0x5efd37,null));};exports[_0x2761('0x23')]=function(_0x10a66d,_0xd98eef){if(_0x10a66d[_0x2761('0x49')]['id']){delete _0x10a66d[_0x2761('0x49')]['id'];}return db['FreshsalesField'][_0x2761('0x4a')]({'where':{'id':_0x10a66d[_0x2761('0x47')]['id']}})[_0x2761('0x24')](handleEntityNotFound(_0xd98eef,null))[_0x2761('0x24')](saveUpdates(_0x10a66d[_0x2761('0x49')],null))[_0x2761('0x24')](respondWithResult(_0xd98eef,null))[_0x2761('0x45')](handleError(_0xd98eef,null));};exports['destroy']=function(_0x518cfa,_0x25c71d){return db[_0x2761('0x2c')][_0x2761('0x4a')]({'where':{'id':_0x518cfa[_0x2761('0x47')]['id']}})[_0x2761('0x24')](handleEntityNotFound(_0x25c71d,null))[_0x2761('0x24')](removeEntity(_0x25c71d,null))['catch'](handleError(_0x25c71d,null));};
\ No newline at end of file
+var _0xb174=['key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','FreshsalesField','rawAttributes','type'];(function(_0x5beeba,_0x7b67f5){var _0x4f2d73=function(_0x5a8043){while(--_0x5a8043){_0x5beeba['push'](_0x5beeba['shift']());}};_0x4f2d73(++_0x7b67f5);}(_0xb174,0xfd));var _0x4b17=function(_0x574788,_0x8e4cec){_0x574788=_0x574788-0x0;var _0x3a7f35=_0xb174[_0x574788];return _0x3a7f35;};'use strict';var emlformat=require(_0x4b17('0x0'));var rimraf=require(_0x4b17('0x1'));var zipdir=require(_0x4b17('0x2'));var jsonpatch=require(_0x4b17('0x3'));var rp=require(_0x4b17('0x4'));var moment=require('moment');var BPromise=require(_0x4b17('0x5'));var Mustache=require(_0x4b17('0x6'));var util=require(_0x4b17('0x7'));var path=require(_0x4b17('0x8'));var sox=require(_0x4b17('0x9'));var csv=require(_0x4b17('0xa'));var ejs=require(_0x4b17('0xb'));var fs=require('fs');var fs_extra=require(_0x4b17('0xc'));var _=require(_0x4b17('0xd'));var squel=require(_0x4b17('0xe'));var crypto=require(_0x4b17('0xf'));var jsforce=require(_0x4b17('0x10'));var deskjs=require(_0x4b17('0x11'));var toCsv=require('to-csv');var querystring=require(_0x4b17('0x12'));var Papa=require(_0x4b17('0x13'));var Redis=require(_0x4b17('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x4b17('0x15'));var as=require(_0x4b17('0x16'));var hardwareService=require(_0x4b17('0x17'));var logger=require(_0x4b17('0x18'))('api');var utils=require(_0x4b17('0x19'));var config=require(_0x4b17('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x4b17('0x1b'))['db'];function respondWithStatusCode(_0x7d1eea,_0x27317f){_0x27317f=_0x27317f||0xcc;return function(_0x5708f8){if(_0x5708f8){return _0x7d1eea['sendStatus'](_0x27317f);}return _0x7d1eea[_0x4b17('0x1c')](_0x27317f)[_0x4b17('0x1d')]();};}function respondWithResult(_0x1c57ca,_0x318a8d){_0x318a8d=_0x318a8d||0xc8;return function(_0xe3503c){if(_0xe3503c){return _0x1c57ca[_0x4b17('0x1c')](_0x318a8d)[_0x4b17('0x1e')](_0xe3503c);}};}function respondWithFilteredResult(_0x577e76,_0x16fa18){return function(_0x51590f){if(_0x51590f){var _0x16b91e=typeof _0x16fa18[_0x4b17('0x1f')]===_0x4b17('0x20')&&typeof _0x16fa18[_0x4b17('0x21')]===_0x4b17('0x20');var _0x579fd3=_0x51590f[_0x4b17('0x22')];var _0x6012e2=_0x16b91e?0x0:_0x16fa18[_0x4b17('0x1f')];var _0x40e454=_0x16b91e?_0x51590f['count']:_0x16fa18[_0x4b17('0x1f')]+_0x16fa18[_0x4b17('0x21')];var _0x507df2;if(_0x40e454>=_0x579fd3){_0x40e454=_0x579fd3;_0x507df2=0xc8;}else{_0x507df2=0xce;}_0x577e76[_0x4b17('0x1c')](_0x507df2);return _0x577e76['set'](_0x4b17('0x23'),_0x6012e2+'-'+_0x40e454+'/'+_0x579fd3)[_0x4b17('0x1e')](_0x51590f);}return null;};}function patchUpdates(_0xa5700c){return function(_0x222606){try{jsonpatch[_0x4b17('0x24')](_0x222606,_0xa5700c,!![]);}catch(_0x452a06){return BPromise[_0x4b17('0x25')](_0x452a06);}return _0x222606['save']();};}function saveUpdates(_0x1aeb88,_0x13481d){return function(_0xa98d6e){if(_0xa98d6e){return _0xa98d6e[_0x4b17('0x26')](_0x1aeb88)[_0x4b17('0x27')](function(_0x527046){return _0x527046;});}return null;};}function removeEntity(_0x257664,_0x333943){return function(_0x59d14d){if(_0x59d14d){return _0x59d14d[_0x4b17('0x28')]()[_0x4b17('0x27')](function(){_0x257664[_0x4b17('0x1c')](0xcc)[_0x4b17('0x1d')]();});}};}function handleEntityNotFound(_0x1785ad,_0x5955c2){return function(_0x162ee4){if(!_0x162ee4){_0x1785ad[_0x4b17('0x29')](0x194);}return _0x162ee4;};}function handleError(_0x11ff99,_0x16bada){_0x16bada=_0x16bada||0x1f4;return function(_0x500eb2){logger[_0x4b17('0x2a')](_0x500eb2[_0x4b17('0x2b')]);if(_0x500eb2['name']){delete _0x500eb2[_0x4b17('0x2c')];}_0x11ff99[_0x4b17('0x1c')](_0x16bada)[_0x4b17('0x2d')](_0x500eb2);};}exports[_0x4b17('0x2e')]=function(_0x5351bd,_0x48e3ec){var _0x145a9d={},_0x4859ae={},_0x553dc5={'count':0x0,'rows':[]};var _0x3df70f=_[_0x4b17('0x2f')](db[_0x4b17('0x30')][_0x4b17('0x31')],function(_0x14eef6){return{'name':_0x14eef6['fieldName'],'type':_0x14eef6[_0x4b17('0x32')][_0x4b17('0x33')]};});_0x4859ae['model']=_[_0x4b17('0x2f')](_0x3df70f,'name');_0x4859ae[_0x4b17('0x34')]=_['keys'](_0x5351bd['query']);_0x4859ae[_0x4b17('0x35')]=_[_0x4b17('0x36')](_0x4859ae[_0x4b17('0x37')],_0x4859ae[_0x4b17('0x34')]);_0x145a9d[_0x4b17('0x38')]=_[_0x4b17('0x36')](_0x4859ae[_0x4b17('0x37')],qs['fields'](_0x5351bd[_0x4b17('0x34')][_0x4b17('0x39')]));_0x145a9d['attributes']=_0x145a9d[_0x4b17('0x38')][_0x4b17('0x3a')]?_0x145a9d[_0x4b17('0x38')]:_0x4859ae[_0x4b17('0x37')];if(!_0x5351bd['query'][_0x4b17('0x3b')](_0x4b17('0x3c'))){_0x145a9d['limit']=qs[_0x4b17('0x21')](_0x5351bd[_0x4b17('0x34')][_0x4b17('0x21')]);_0x145a9d[_0x4b17('0x1f')]=qs[_0x4b17('0x1f')](_0x5351bd[_0x4b17('0x34')]['offset']);}_0x145a9d['order']=qs[_0x4b17('0x3d')](_0x5351bd[_0x4b17('0x34')][_0x4b17('0x3d')]);_0x145a9d[_0x4b17('0x3e')]=qs[_0x4b17('0x35')](_[_0x4b17('0x3f')](_0x5351bd[_0x4b17('0x34')],_0x4859ae[_0x4b17('0x35')]),_0x3df70f);if(_0x5351bd[_0x4b17('0x34')][_0x4b17('0x40')]){_0x145a9d[_0x4b17('0x3e')]=_[_0x4b17('0x41')](_0x145a9d[_0x4b17('0x3e')],{'$or':_[_0x4b17('0x2f')](_0x3df70f,function(_0x1ea593){if(_0x1ea593[_0x4b17('0x32')]!=='VIRTUAL'){var _0x257b17={};_0x257b17[_0x1ea593[_0x4b17('0x2c')]]={'$like':'%'+_0x5351bd['query'][_0x4b17('0x40')]+'%'};return _0x257b17;}})});}_0x145a9d=_[_0x4b17('0x41')]({},_0x145a9d,_0x5351bd[_0x4b17('0x42')]);var _0x1bffe7={'where':_0x145a9d[_0x4b17('0x3e')]};return db[_0x4b17('0x30')][_0x4b17('0x22')](_0x1bffe7)[_0x4b17('0x27')](function(_0x2f61e5){_0x553dc5['count']=_0x2f61e5;if(_0x5351bd[_0x4b17('0x34')][_0x4b17('0x43')]){_0x145a9d['include']=[{'all':!![]}];}return db[_0x4b17('0x30')][_0x4b17('0x44')](_0x145a9d);})[_0x4b17('0x27')](function(_0x13e082){_0x553dc5[_0x4b17('0x45')]=_0x13e082;return _0x553dc5;})[_0x4b17('0x27')](respondWithFilteredResult(_0x48e3ec,_0x145a9d))[_0x4b17('0x46')](handleError(_0x48e3ec,null));};exports['show']=function(_0x1c837d,_0x5d89cf){var _0x48094d={'raw':!![],'where':{'id':_0x1c837d[_0x4b17('0x47')]['id']}},_0x23fc8f={};_0x23fc8f[_0x4b17('0x37')]=_[_0x4b17('0x48')](db['FreshsalesField']['rawAttributes']);_0x23fc8f['query']=_[_0x4b17('0x48')](_0x1c837d[_0x4b17('0x34')]);_0x23fc8f[_0x4b17('0x35')]=_[_0x4b17('0x36')](_0x23fc8f[_0x4b17('0x37')],_0x23fc8f['query']);_0x48094d['attributes']=_[_0x4b17('0x36')](_0x23fc8f[_0x4b17('0x37')],qs['fields'](_0x1c837d[_0x4b17('0x34')][_0x4b17('0x39')]));_0x48094d[_0x4b17('0x38')]=_0x48094d[_0x4b17('0x38')][_0x4b17('0x3a')]?_0x48094d[_0x4b17('0x38')]:_0x23fc8f[_0x4b17('0x37')];if(_0x1c837d[_0x4b17('0x34')][_0x4b17('0x43')]){_0x48094d['include']=[{'all':!![]}];}_0x48094d=_[_0x4b17('0x41')]({},_0x48094d,_0x1c837d[_0x4b17('0x42')]);return db['FreshsalesField'][_0x4b17('0x49')](_0x48094d)['then'](handleEntityNotFound(_0x5d89cf,null))[_0x4b17('0x27')](respondWithResult(_0x5d89cf,null))['catch'](handleError(_0x5d89cf,null));};exports[_0x4b17('0x4a')]=function(_0x55cb19,_0x4a72b5){return db[_0x4b17('0x30')][_0x4b17('0x4a')](_0x55cb19[_0x4b17('0x4b')],{})[_0x4b17('0x27')](respondWithResult(_0x4a72b5,0xc9))[_0x4b17('0x46')](handleError(_0x4a72b5,null));};exports['update']=function(_0x571413,_0x5296ab){if(_0x571413[_0x4b17('0x4b')]['id']){delete _0x571413[_0x4b17('0x4b')]['id'];}return db['FreshsalesField'][_0x4b17('0x49')]({'where':{'id':_0x571413[_0x4b17('0x47')]['id']}})['then'](handleEntityNotFound(_0x5296ab,null))['then'](saveUpdates(_0x571413[_0x4b17('0x4b')],null))['then'](respondWithResult(_0x5296ab,null))[_0x4b17('0x46')](handleError(_0x5296ab,null));};exports['destroy']=function(_0x29f42c,_0x3b6617){return db[_0x4b17('0x30')]['find']({'where':{'id':_0x29f42c[_0x4b17('0x47')]['id']}})[_0x4b17('0x27')](handleEntityNotFound(_0x3b6617,null))['then'](removeEntity(_0x3b6617,null))[_0x4b17('0x46')](handleError(_0x3b6617,null));};
\ No newline at end of file
index 008ed44..ac9bc8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca0=['util','bluebird','request-promise','path','rimraf','exports','define','idField','FieldId','lodash'];(function(_0x30ac5d,_0x13c623){var _0x95ba7c=function(_0x566e6a){while(--_0x566e6a){_0x30ac5d['push'](_0x30ac5d['shift']());}};_0x95ba7c(++_0x13c623);}(_0xbca0,0x8b));var _0x0bca=function(_0x411358,_0x34392b){_0x411358=_0x411358-0x0;var _0x40740d=_0xbca0[_0x411358];return _0x40740d;};'use strict';var _=require(_0x0bca('0x0'));var util=require(_0x0bca('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0bca('0x2'));var rp=require(_0x0bca('0x3'));var fs=require('fs');var path=require(_0x0bca('0x4'));var rimraf=require(_0x0bca('0x5'));var config=require('../../config/environment');var attributes=require('./intFreshsalesField.attributes');module[_0x0bca('0x6')]=function(_0x3d1155,_0x3dab5e){return _0x3d1155[_0x0bca('0x7')]('FreshsalesField',attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x0bca('0x8'),_0x0bca('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdacc=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId','util'];(function(_0x2758ab,_0x5ab705){var _0x178c08=function(_0x196fd9){while(--_0x196fd9){_0x2758ab['push'](_0x2758ab['shift']());}};_0x178c08(++_0x5ab705);}(_0xdacc,0x14f));var _0xcdac=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xdacc[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0xcdac('0x0'));var logger=require(_0xcdac('0x1'))(_0xcdac('0x2'));var moment=require(_0xcdac('0x3'));var BPromise=require(_0xcdac('0x4'));var rp=require(_0xcdac('0x5'));var fs=require('fs');var path=require(_0xcdac('0x6'));var rimraf=require('rimraf');var config=require(_0xcdac('0x7'));var attributes=require(_0xcdac('0x8'));module[_0xcdac('0x9')]=function(_0x1dcf63,_0x323492){return _0x1dcf63[_0xcdac('0xa')](_0xcdac('0xb'),attributes,{'tableName':_0xcdac('0xc'),'paranoid':![],'indexes':[{'name':_0xcdac('0xd'),'fields':[_0xcdac('0xe'),_0xcdac('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1b41c27..d1cb970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['then','info','FreshsalesField,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x531647,_0x2c3674){var _0x261760=function(_0x1d71e6){while(--_0x1d71e6){_0x531647['push'](_0x531647['shift']());}};_0x261760(++_0x2c3674);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xee2f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee2f('0x2'));var db=require(_0xee2f('0x3'))['db'];var utils=require(_0xee2f('0x4'));var logger=require(_0xee2f('0x5'))(_0xee2f('0x6'));var config=require('../../config/environment');var jayson=require(_0xee2f('0x7'));var client=jayson[_0xee2f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1533a0,_0x2e1c8c,_0x5a7975){return new BPromise(function(_0x3c4095,_0x5ea796){return client[_0xee2f('0x9')](_0x1533a0,_0x5a7975)[_0xee2f('0xa')](function(_0x53f7dd){logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,'request\x20sent');logger['debug']('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x2e1c8c,'request\x20sent',JSON[_0xee2f('0xd')](_0x53f7dd));if(_0x53f7dd['error']){if(_0x53f7dd['error']['code']===0x1f4){logger[_0xee2f('0xe')](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);return _0x5ea796(_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);}logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd['error'][_0xee2f('0xf')]);return _0x3c4095(_0x53f7dd[_0xee2f('0xe')]['message']);}else{logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,_0xee2f('0x10'));_0x3c4095(_0x53f7dd[_0xee2f('0x11')][_0xee2f('0xf')]);}})['catch'](function(_0x3f6372){logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x3f6372);_0x5ea796(_0x3f6372);});});}
\ No newline at end of file
+var _0x4c60=['client','http','request','then','debug','request\x20sent','stringify','error','code','FreshsalesField,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/environment','jayson/promise'];(function(_0x294ab2,_0x42549b){var _0x1cb5b7=function(_0x197ae2){while(--_0x197ae2){_0x294ab2['push'](_0x294ab2['shift']());}};_0x1cb5b7(++_0x42549b);}(_0x4c60,0xc1));var _0x04c6=function(_0x58ab47,_0x4cae0b){_0x58ab47=_0x58ab47-0x0;var _0x2261ab=_0x4c60[_0x58ab47];return _0x2261ab;};'use strict';var _=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var moment=require(_0x04c6('0x2'));var BPromise=require(_0x04c6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x04c6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x04c6('0x5'));var jayson=require(_0x04c6('0x6'));var client=jayson[_0x04c6('0x7')][_0x04c6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b9041,_0x39be2d,_0x8f9b13){return new BPromise(function(_0x530a48,_0x2a4b51){return client[_0x04c6('0x9')](_0x2b9041,_0x8f9b13)[_0x04c6('0xa')](function(_0x30b901){logger['info']('FreshsalesField,\x20%s,\x20%s',_0x39be2d,'request\x20sent');logger[_0x04c6('0xb')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x39be2d,_0x04c6('0xc'),JSON[_0x04c6('0xd')](_0x30b901));if(_0x30b901['error']){if(_0x30b901[_0x04c6('0xe')][_0x04c6('0xf')]===0x1f4){logger[_0x04c6('0xe')](_0x04c6('0x10'),_0x39be2d,_0x30b901['error'][_0x04c6('0x11')]);return _0x2a4b51(_0x30b901[_0x04c6('0xe')][_0x04c6('0x11')]);}logger['error'](_0x04c6('0x10'),_0x39be2d,_0x30b901[_0x04c6('0xe')][_0x04c6('0x11')]);return _0x530a48(_0x30b901[_0x04c6('0xe')][_0x04c6('0x11')]);}else{logger[_0x04c6('0x12')](_0x04c6('0x10'),_0x39be2d,_0x04c6('0xc'));_0x530a48(_0x30b901['result'][_0x04c6('0x11')]);}})[_0x04c6('0x13')](function(_0x382e58){logger[_0x04c6('0xe')](_0x04c6('0x10'),_0x39be2d,_0x382e58);_0x2a4b51(_0x382e58);});});}
\ No newline at end of file
index 4b2d865..10b59cb 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(_0x1aa780,_0x4ebb39){var _0x32b14d=function(_0x5203c0){while(--_0x5203c0){_0x1aa780['push'](_0x1aa780['shift']());}};_0x32b14d(++_0x4ebb39);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x45b305,_0x4d7fc2){var _0x20bde6=function(_0x2c53b1){while(--_0x2c53b1){_0x45b305['push'](_0x45b305['shift']());}};_0x20bde6(++_0x4d7fc2);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 9ae3049..fb9fbd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce9e=['sequelize','exports','STRING','ENUM','integrationTab','newTab'];(function(_0x61a429,_0x522e43){var _0x534b5c=function(_0x20e348){while(--_0x20e348){_0x61a429['push'](_0x61a429['shift']());}};_0x534b5c(++_0x522e43);}(_0xce9e,0x1c8));var _0xece9=function(_0xe58ae2,_0x30a065){_0xe58ae2=_0xe58ae2-0x0;var _0x369b69=_0xce9e[_0xe58ae2];return _0x369b69;};'use strict';var Sequelize=require(_0xece9('0x0'));module[_0xece9('0x1')]={'name':{'type':Sequelize[_0xece9('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xece9('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xece9('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xece9('0x2')]},'securityToken':{'type':Sequelize[_0xece9('0x2')]},'serverUrl':{'type':Sequelize[_0xece9('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xece9('0x3')](_0xece9('0x4'),_0xece9('0x5')),'defaultValue':_0xece9('0x4')}};
\ No newline at end of file
+var _0x8506=['username','ENUM','integrationTab','newTab','exports','STRING'];(function(_0x301186,_0x969cdc){var _0xd161d7=function(_0x4e19ee){while(--_0x4e19ee){_0x301186['push'](_0x301186['shift']());}};_0xd161d7(++_0x969cdc);}(_0x8506,0xe8));var _0x6850=function(_0x1cb508,_0x1973ca){_0x1cb508=_0x1cb508-0x0;var _0x2837a7=_0x8506[_0x1cb508];return _0x2837a7;};'use strict';var Sequelize=require('sequelize');module[_0x6850('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6850('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x6850('0x2')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x6850('0x1')]},'clientId':{'type':Sequelize[_0x6850('0x1')]},'clientSecret':{'type':Sequelize[_0x6850('0x1')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x6850('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x6850('0x3')](_0x6850('0x4'),_0x6850('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index d7f1208..1b9277d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x585e=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','nolimit','order','sort','where','merge','VIRTUAL','SalesforceAccount','include','findAll','rows','params','length','options','find','catch','create','body','destroy','getConfigurations','findOne','SalesforceConfiguration','filters','pick','filter','addConfiguration','AccountId','channel','Descriptions','getDescriptions','SalesforceField','Subjects','getFields','clientId','clientSecret','username','securityToken','remoteUri','slice','lastIndexOf','Connection','login','password','concat','isNil','ticketType','sobject','OwnerId','ActivityDate','IsRecurrence','Subject','string','int','picklist','boolean','textarea','phone','remove','includes','label','picklistValues','value','True','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x585e,0x151));var _0xe585=function(_0x1655c4,_0x45625b){_0x1655c4=_0x1655c4-0x0;var _0x4c5efc=_0x585e[_0x1655c4];return _0x4c5efc;};'use strict';var emlformat=require(_0xe585('0x0'));var rimraf=require(_0xe585('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe585('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe585('0x3'));var util=require(_0xe585('0x4'));var path=require('path');var sox=require(_0xe585('0x5'));var csv=require(_0xe585('0x6'));var ejs=require(_0xe585('0x7'));var fs=require('fs');var fs_extra=require(_0xe585('0x8'));var _=require(_0xe585('0x9'));var squel=require(_0xe585('0xa'));var crypto=require(_0xe585('0xb'));var jsforce=require(_0xe585('0xc'));var deskjs=require(_0xe585('0xd'));var toCsv=require(_0xe585('0x6'));var querystring=require(_0xe585('0xe'));var Papa=require('papaparse');var Redis=require(_0xe585('0xf'));var authService=require(_0xe585('0x10'));var qs=require(_0xe585('0x11'));var as=require(_0xe585('0x12'));var hardwareService=require(_0xe585('0x13'));var logger=require('../../config/logger')(_0xe585('0x14'));var utils=require('../../config/utils');var config=require(_0xe585('0x15'));var licenseUtil=require(_0xe585('0x16'));var db=require(_0xe585('0x17'))['db'];var integrations=require(_0xe585('0x18'));function respondWithStatusCode(_0xe50fe8,_0xee031a){_0xee031a=_0xee031a||0xcc;return function(_0x34482a){if(_0x34482a){return _0xe50fe8[_0xe585('0x19')](_0xee031a);}return _0xe50fe8[_0xe585('0x1a')](_0xee031a)[_0xe585('0x1b')]();};}function respondWithResult(_0x8b1c03,_0x1892ae){_0x1892ae=_0x1892ae||0xc8;return function(_0x1a4c85){if(_0x1a4c85){return _0x8b1c03['status'](_0x1892ae)[_0xe585('0x1c')](_0x1a4c85);}};}function respondWithFilteredResult(_0x15809c,_0x38a365){return function(_0x2e5010){if(_0x2e5010){var _0x76f3ad=typeof _0x38a365[_0xe585('0x1d')]===_0xe585('0x1e')&&typeof _0x38a365[_0xe585('0x1f')]==='undefined';var _0x28469a=_0x2e5010[_0xe585('0x20')];var _0xe39477=_0x76f3ad?0x0:_0x38a365[_0xe585('0x1d')];var _0x204f7b=_0x76f3ad?_0x2e5010[_0xe585('0x20')]:_0x38a365[_0xe585('0x1d')]+_0x38a365['limit'];var _0x7519a1;if(_0x204f7b>=_0x28469a){_0x204f7b=_0x28469a;_0x7519a1=0xc8;}else{_0x7519a1=0xce;}_0x15809c['status'](_0x7519a1);return _0x15809c[_0xe585('0x21')](_0xe585('0x22'),_0xe39477+'-'+_0x204f7b+'/'+_0x28469a)[_0xe585('0x1c')](_0x2e5010);}return null;};}function patchUpdates(_0x2b19cf){return function(_0x5b5305){try{jsonpatch[_0xe585('0x23')](_0x5b5305,_0x2b19cf,!![]);}catch(_0x467c8d){return BPromise[_0xe585('0x24')](_0x467c8d);}return _0x5b5305[_0xe585('0x25')]();};}function saveUpdates(_0x23f7fa,_0x1816ee){return function(_0x34196c){if(_0x34196c){return _0x34196c[_0xe585('0x26')](_0x23f7fa)['then'](function(_0x1363a9){return _0x1363a9;});}return null;};}function removeEntity(_0x5332ac,_0x1d47ef){return function(_0x571b76){if(_0x571b76){return _0x571b76['destroy']()[_0xe585('0x27')](function(){_0x5332ac[_0xe585('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44ad91,_0x4584fc){return function(_0x55273d){if(!_0x55273d){_0x44ad91[_0xe585('0x19')](0x194);}return _0x55273d;};}function handleError(_0x30cd1b,_0x45e766){_0x45e766=_0x45e766||0x1f4;return function(_0x1c188c){logger[_0xe585('0x28')](_0x1c188c[_0xe585('0x29')]);if(_0x1c188c[_0xe585('0x2a')]){delete _0x1c188c[_0xe585('0x2a')];}_0x30cd1b[_0xe585('0x1a')](_0x45e766)['send'](_0x1c188c);};}exports[_0xe585('0x2b')]=function(_0x53b439,_0x4c3445){var _0x256afa={},_0x31dfdb={},_0x4d11b1={'count':0x0,'rows':[]};var _0x20cf09=_[_0xe585('0x2c')](db['SalesforceAccount'][_0xe585('0x2d')],function(_0xe755e0){return{'name':_0xe755e0[_0xe585('0x2e')],'type':_0xe755e0[_0xe585('0x2f')][_0xe585('0x30')]};});_0x31dfdb['model']=_[_0xe585('0x2c')](_0x20cf09,_0xe585('0x2a'));_0x31dfdb[_0xe585('0x31')]=_[_0xe585('0x32')](_0x53b439['query']);_0x31dfdb['filters']=_[_0xe585('0x33')](_0x31dfdb['model'],_0x31dfdb['query']);_0x256afa[_0xe585('0x34')]=_[_0xe585('0x33')](_0x31dfdb[_0xe585('0x35')],qs[_0xe585('0x36')](_0x53b439[_0xe585('0x31')][_0xe585('0x36')]));_0x256afa['attributes']=_0x256afa[_0xe585('0x34')]['length']?_0x256afa[_0xe585('0x34')]:_0x31dfdb['model'];if(!_0x53b439[_0xe585('0x31')]['hasOwnProperty'](_0xe585('0x37'))){_0x256afa[_0xe585('0x1f')]=qs['limit'](_0x53b439[_0xe585('0x31')]['limit']);_0x256afa['offset']=qs[_0xe585('0x1d')](_0x53b439[_0xe585('0x31')]['offset']);}_0x256afa[_0xe585('0x38')]=qs[_0xe585('0x39')](_0x53b439[_0xe585('0x31')][_0xe585('0x39')]);_0x256afa[_0xe585('0x3a')]=qs['filters'](_['pick'](_0x53b439['query'],_0x31dfdb['filters']),_0x20cf09);if(_0x53b439[_0xe585('0x31')]['filter']){_0x256afa[_0xe585('0x3a')]=_[_0xe585('0x3b')](_0x256afa[_0xe585('0x3a')],{'$or':_[_0xe585('0x2c')](_0x20cf09,function(_0x2ef60b){if(_0x2ef60b[_0xe585('0x2f')]!==_0xe585('0x3c')){var _0x3397a0={};_0x3397a0[_0x2ef60b[_0xe585('0x2a')]]={'$like':'%'+_0x53b439[_0xe585('0x31')]['filter']+'%'};return _0x3397a0;}})});}_0x256afa=_['merge']({},_0x256afa,_0x53b439['options']);var _0x2811f6={'where':_0x256afa[_0xe585('0x3a')]};return db[_0xe585('0x3d')][_0xe585('0x20')](_0x2811f6)[_0xe585('0x27')](function(_0x2c9b2b){_0x4d11b1[_0xe585('0x20')]=_0x2c9b2b;if(_0x53b439[_0xe585('0x31')]['includeAll']){_0x256afa[_0xe585('0x3e')]=[{'all':!![]}];}return db[_0xe585('0x3d')][_0xe585('0x3f')](_0x256afa);})[_0xe585('0x27')](function(_0x16055b){_0x4d11b1[_0xe585('0x40')]=_0x16055b;return _0x4d11b1;})[_0xe585('0x27')](respondWithFilteredResult(_0x4c3445,_0x256afa))['catch'](handleError(_0x4c3445,null));};exports['show']=function(_0x1d1e99,_0x588a71){var _0x28de78={'raw':![],'where':{'id':_0x1d1e99[_0xe585('0x41')]['id']}},_0x309b73={};_0x309b73[_0xe585('0x35')]=_[_0xe585('0x32')](db[_0xe585('0x3d')][_0xe585('0x2d')]);_0x309b73[_0xe585('0x31')]=_[_0xe585('0x32')](_0x1d1e99[_0xe585('0x31')]);_0x309b73['filters']=_[_0xe585('0x33')](_0x309b73[_0xe585('0x35')],_0x309b73[_0xe585('0x31')]);_0x28de78[_0xe585('0x34')]=_['intersection'](_0x309b73[_0xe585('0x35')],qs[_0xe585('0x36')](_0x1d1e99[_0xe585('0x31')]['fields']));_0x28de78[_0xe585('0x34')]=_0x28de78[_0xe585('0x34')][_0xe585('0x42')]?_0x28de78[_0xe585('0x34')]:_0x309b73[_0xe585('0x35')];if(_0x1d1e99[_0xe585('0x31')]['includeAll']){_0x28de78[_0xe585('0x3e')]=[{'all':!![]}];}_0x28de78=_[_0xe585('0x3b')]({},_0x28de78,_0x1d1e99[_0xe585('0x43')]);return db[_0xe585('0x3d')][_0xe585('0x44')](_0x28de78)[_0xe585('0x27')](handleEntityNotFound(_0x588a71,null))[_0xe585('0x27')](respondWithResult(_0x588a71,null))[_0xe585('0x45')](handleError(_0x588a71,null));};exports[_0xe585('0x46')]=function(_0x3c32e2,_0x5af6e1){return db[_0xe585('0x3d')][_0xe585('0x46')](_0x3c32e2[_0xe585('0x47')],{})[_0xe585('0x27')](respondWithResult(_0x5af6e1,0xc9))[_0xe585('0x45')](handleError(_0x5af6e1,null));};exports[_0xe585('0x26')]=function(_0x346e2f,_0x852a73){if(_0x346e2f[_0xe585('0x47')]['id']){delete _0x346e2f[_0xe585('0x47')]['id'];}return db[_0xe585('0x3d')][_0xe585('0x44')]({'where':{'id':_0x346e2f[_0xe585('0x41')]['id']}})[_0xe585('0x27')](handleEntityNotFound(_0x852a73,null))['then'](saveUpdates(_0x346e2f[_0xe585('0x47')],null))[_0xe585('0x27')](respondWithResult(_0x852a73,null))[_0xe585('0x45')](handleError(_0x852a73,null));};exports[_0xe585('0x48')]=function(_0x4c0328,_0xd0b5b4){return db[_0xe585('0x3d')]['find']({'where':{'id':_0x4c0328[_0xe585('0x41')]['id']}})[_0xe585('0x27')](handleEntityNotFound(_0xd0b5b4,null))[_0xe585('0x27')](removeEntity(_0xd0b5b4,null))[_0xe585('0x45')](handleError(_0xd0b5b4,null));};exports[_0xe585('0x49')]=function(_0x301cbc,_0x539b00,_0x532f84){var _0x328ea6={};var _0x2868ce={};var _0x13dc10;var _0x1618a7;return db[_0xe585('0x3d')][_0xe585('0x4a')]({'where':{'id':_0x301cbc[_0xe585('0x41')]['id']}})[_0xe585('0x27')](handleEntityNotFound(_0x539b00,null))[_0xe585('0x27')](function(_0x472ecf){if(_0x472ecf){_0x13dc10=_0x472ecf;_0x2868ce['model']=_['keys'](db[_0xe585('0x4b')][_0xe585('0x2d')]);_0x2868ce[_0xe585('0x31')]=_[_0xe585('0x32')](_0x301cbc[_0xe585('0x31')]);_0x2868ce[_0xe585('0x4c')]=_[_0xe585('0x33')](_0x2868ce[_0xe585('0x35')],_0x2868ce[_0xe585('0x31')]);_0x328ea6[_0xe585('0x34')]=_[_0xe585('0x33')](_0x2868ce[_0xe585('0x35')],qs[_0xe585('0x36')](_0x301cbc[_0xe585('0x31')][_0xe585('0x36')]));_0x328ea6[_0xe585('0x34')]=_0x328ea6['attributes'][_0xe585('0x42')]?_0x328ea6[_0xe585('0x34')]:_0x2868ce[_0xe585('0x35')];_0x328ea6['order']=qs[_0xe585('0x39')](_0x301cbc[_0xe585('0x31')][_0xe585('0x39')]);_0x328ea6[_0xe585('0x3a')]=qs[_0xe585('0x4c')](_[_0xe585('0x4d')](_0x301cbc[_0xe585('0x31')],_0x2868ce[_0xe585('0x4c')]));if(_0x301cbc[_0xe585('0x31')][_0xe585('0x4e')]){_0x328ea6[_0xe585('0x3a')]=_[_0xe585('0x3b')](_0x328ea6[_0xe585('0x3a')],{'$or':_[_0xe585('0x2c')](_0x328ea6[_0xe585('0x34')],function(_0x2f0d8a){var _0x36381d={};_0x36381d[_0x2f0d8a]={'$like':'%'+_0x301cbc[_0xe585('0x31')][_0xe585('0x4e')]+'%'};return _0x36381d;})});}_0x328ea6=_[_0xe585('0x3b')]({},_0x328ea6,_0x301cbc['options']);return _0x13dc10[_0xe585('0x49')](_0x328ea6);}})['then'](function(_0x3da13c){if(_0x3da13c){_0x1618a7=_0x3da13c[_0xe585('0x42')];if(!_0x301cbc[_0xe585('0x31')]['hasOwnProperty'](_0xe585('0x37'))){_0x328ea6[_0xe585('0x1f')]=qs[_0xe585('0x1f')](_0x301cbc[_0xe585('0x31')][_0xe585('0x1f')]);_0x328ea6[_0xe585('0x1d')]=qs[_0xe585('0x1d')](_0x301cbc['query'][_0xe585('0x1d')]);}return _0x13dc10[_0xe585('0x49')](_0x328ea6);}})[_0xe585('0x27')](function(_0x2f4e17){if(_0x2f4e17){return _0x2f4e17?{'count':_0x1618a7,'rows':_0x2f4e17}:null;}})[_0xe585('0x27')](respondWithResult(_0x539b00,null))[_0xe585('0x45')](handleError(_0x539b00,null));};exports[_0xe585('0x4f')]=function(_0x3ce0a2,_0x54dbb5,_0x4d838c){if(_0x3ce0a2['body']['id']){delete _0x3ce0a2[_0xe585('0x47')]['id'];}return db[_0xe585('0x3d')][_0xe585('0x4a')]({'where':{'id':_0x3ce0a2[_0xe585('0x41')]['id']}})[_0xe585('0x27')](handleEntityNotFound(_0x54dbb5,null))[_0xe585('0x27')](function(_0x28c554){if(_0x28c554){_0x3ce0a2[_0xe585('0x47')][_0xe585('0x50')]=_0x28c554['id'];_0x3ce0a2[_0xe585('0x47')]['Subjects']=integrations['getSubjects'](_0x3ce0a2[_0xe585('0x47')][_0xe585('0x51')],_0x3ce0a2['body'][_0xe585('0x2f')]);_0x3ce0a2['body'][_0xe585('0x52')]=integrations[_0xe585('0x53')](_0x3ce0a2['body'][_0xe585('0x51')],_0x3ce0a2['body']['type']);return db['SalesforceConfiguration'][_0xe585('0x46')](_0x3ce0a2['body'],{'include':[{'model':db[_0xe585('0x54')],'as':_0xe585('0x55')},{'model':db[_0xe585('0x54')],'as':_0xe585('0x52')}]});}return null;})[_0xe585('0x27')](respondWithResult(_0x54dbb5,null))[_0xe585('0x45')](handleError(_0x54dbb5,null));};exports[_0xe585('0x56')]=function(_0x7e04c9,_0x8d8898,_0x36ec9c){var _0x2d2809;var _0x23b7e0='';var _0x221e89='Task';return db[_0xe585('0x3d')]['findOne']({'where':{'id':_0x7e04c9[_0xe585('0x41')]['id']},'attributes':['id','remoteUri',_0xe585('0x57'),_0xe585('0x58'),_0xe585('0x59'),'password',_0xe585('0x5a')]})['then'](handleEntityNotFound(_0x8d8898,null))['then'](function(_0x336238){if(_0x336238){_0x23b7e0=_0x336238[_0xe585('0x5b')];var _0x11a27b=_0x23b7e0[_0xe585('0x5c')](-0x1);if(_0x11a27b==='/'){_0x23b7e0=_0x23b7e0['substring'](0x0,_0x23b7e0[_0xe585('0x5d')](_0x11a27b));}_0x2d2809=new jsforce[(_0xe585('0x5e'))]({'oauth2':{'loginUrl':_0x23b7e0,'clientId':_0x336238[_0xe585('0x57')],'clientSecret':_0x336238[_0xe585('0x58')]}});return _0x2d2809[_0xe585('0x5f')](_0x336238[_0xe585('0x59')],_0x336238[_0xe585('0x60')][_0xe585('0x61')](_0x336238[_0xe585('0x5a')]));}})[_0xe585('0x27')](function(_0x5c5e70){if(_0x5c5e70){if(!_[_0xe585('0x62')](_0x7e04c9[_0xe585('0x31')][_0xe585('0x63')])){_0x221e89=_0x7e04c9[_0xe585('0x31')][_0xe585('0x63')];}return _0x2d2809[_0xe585('0x64')](_0x221e89)['describe']();}})[_0xe585('0x27')](function(_0xeea9fc){var _0x3b53fc=[_0xe585('0x65'),_0xe585('0x66'),'IsReminderSet',_0xe585('0x67'),_0xe585('0x68'),'Description'];var _0x4c806e=[_0xe585('0x69'),_0xe585('0x6a'),_0xe585('0x6b'),_0xe585('0x6c'),'email',_0xe585('0x6d'),_0xe585('0x6e')];if(_0xeea9fc){_[_0xe585('0x6f')](_0xeea9fc[_0xe585('0x36')],function(_0x3c7ca9){return _0x3b53fc['includes'](_0x3c7ca9[_0xe585('0x2a')])||!_0x4c806e[_0xe585('0x70')](_0x3c7ca9[_0xe585('0x2f')]);});return{'count':_0xeea9fc[_0xe585('0x36')][_0xe585('0x42')],'rows':_['map'](_0xeea9fc['fields'],function(_0x1deef2){return{'id':_0x1deef2[_0xe585('0x2a')],'name':_0x1deef2[_0xe585('0x71')],'custom':_0x1deef2['custom'],'options':_0x1deef2[_0xe585('0x72')][_0xe585('0x42')]>0x0?_[_0xe585('0x2c')](_0x1deef2['picklistValues'],function(_0x1a6f71){return{'name':_0x1a6f71[_0xe585('0x71')],'value':_0x1a6f71[_0xe585('0x73')]};}):_0x1deef2['type']=='boolean'?[{'name':_0xe585('0x74'),'value':'true'},{'name':'False','value':'false'}]:[]};})};}})[_0xe585('0x27')](respondWithResult(_0x8d8898,null))[_0xe585('0x45')](function(_0x23e848){var _0x160514=_0x7e04c9[_0xe585('0x31')][_0xe585('0x75')]?0x1f4:_0x23e848[_0xe585('0x76')]||0x1f4;logger[_0xe585('0x28')](_0xe585('0x77'),_0xe585('0x56'),_0x160514,JSON[_0xe585('0x78')](_0x23e848));delete _0x23e848['name'];if(_0x160514===0x191){_0x160514=0x190;}_0x8d8898[_0xe585('0x1a')](_0x160514)['send'](_0x7e04c9[_0xe585('0x31')][_0xe585('0x75')]?{'message':_0xe585('0x79'),'statusCode':_0x23e848[_0xe585('0x76')]}:_0x23e848);});};
\ No newline at end of file
+var _0xbae9=['apply','reject','save','update','then','destroy','name','send','index','SalesforceAccount','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','getConfigurations','findOne','SalesforceConfiguration','order','nolimit','addConfiguration','Subjects','getSubjects','channel','Descriptions','SalesforceField','Task','remoteUri','clientId','password','securityToken','substring','lastIndexOf','Connection','clientSecret','login','username','concat','isNil','ticketType','sobject','describe','IsReminderSet','Subject','Description','string','picklist','boolean','email','textarea','phone','remove','label','custom','picklistValues','True','true','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','eml-format','zip-dir','moment','bluebird','mustache','util','sox','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','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','json'];(function(_0x57531e,_0x536fc6){var _0x1c549a=function(_0x2e67f6){while(--_0x2e67f6){_0x57531e['push'](_0x57531e['shift']());}};_0x1c549a(++_0x536fc6);}(_0xbae9,0x1bf));var _0x9bae=function(_0x3457b4,_0x4cd8f9){_0x3457b4=_0x3457b4-0x0;var _0xaa8fa9=_0xbae9[_0x3457b4];return _0xaa8fa9;};'use strict';var emlformat=require(_0x9bae('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9bae('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9bae('0x2'));var BPromise=require(_0x9bae('0x3'));var Mustache=require(_0x9bae('0x4'));var util=require(_0x9bae('0x5'));var path=require('path');var sox=require(_0x9bae('0x6'));var csv=require(_0x9bae('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9bae('0x8'));var _=require(_0x9bae('0x9'));var squel=require(_0x9bae('0xa'));var crypto=require(_0x9bae('0xb'));var jsforce=require(_0x9bae('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9bae('0x7'));var querystring=require(_0x9bae('0xd'));var Papa=require(_0x9bae('0xe'));var Redis=require(_0x9bae('0xf'));var authService=require(_0x9bae('0x10'));var qs=require(_0x9bae('0x11'));var as=require(_0x9bae('0x12'));var hardwareService=require(_0x9bae('0x13'));var logger=require(_0x9bae('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x9bae('0x15'));var licenseUtil=require(_0x9bae('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9bae('0x17'));function respondWithStatusCode(_0x31d1ce,_0x433d1b){_0x433d1b=_0x433d1b||0xcc;return function(_0x2bd517){if(_0x2bd517){return _0x31d1ce[_0x9bae('0x18')](_0x433d1b);}return _0x31d1ce[_0x9bae('0x19')](_0x433d1b)[_0x9bae('0x1a')]();};}function respondWithResult(_0x240176,_0x191fae){_0x191fae=_0x191fae||0xc8;return function(_0x4486aa){if(_0x4486aa){return _0x240176[_0x9bae('0x19')](_0x191fae)['json'](_0x4486aa);}};}function respondWithFilteredResult(_0x14e5f0,_0x3288c9){return function(_0x175df0){if(_0x175df0){var _0x5aa9ec=typeof _0x3288c9[_0x9bae('0x1b')]===_0x9bae('0x1c')&&typeof _0x3288c9[_0x9bae('0x1d')]==='undefined';var _0x3c667c=_0x175df0[_0x9bae('0x1e')];var _0x54f910=_0x5aa9ec?0x0:_0x3288c9[_0x9bae('0x1b')];var _0x5bc57d=_0x5aa9ec?_0x175df0[_0x9bae('0x1e')]:_0x3288c9[_0x9bae('0x1b')]+_0x3288c9[_0x9bae('0x1d')];var _0x588af0;if(_0x5bc57d>=_0x3c667c){_0x5bc57d=_0x3c667c;_0x588af0=0xc8;}else{_0x588af0=0xce;}_0x14e5f0[_0x9bae('0x19')](_0x588af0);return _0x14e5f0[_0x9bae('0x1f')]('Content-Range',_0x54f910+'-'+_0x5bc57d+'/'+_0x3c667c)[_0x9bae('0x20')](_0x175df0);}return null;};}function patchUpdates(_0x148fd4){return function(_0x3d88dd){try{jsonpatch[_0x9bae('0x21')](_0x3d88dd,_0x148fd4,!![]);}catch(_0x4095fe){return BPromise[_0x9bae('0x22')](_0x4095fe);}return _0x3d88dd[_0x9bae('0x23')]();};}function saveUpdates(_0x48dbd7,_0x520e03){return function(_0x24c13d){if(_0x24c13d){return _0x24c13d[_0x9bae('0x24')](_0x48dbd7)[_0x9bae('0x25')](function(_0x2b4be5){return _0x2b4be5;});}return null;};}function removeEntity(_0x4fe8e9,_0x12c9d7){return function(_0xd98669){if(_0xd98669){return _0xd98669[_0x9bae('0x26')]()[_0x9bae('0x25')](function(){_0x4fe8e9['status'](0xcc)[_0x9bae('0x1a')]();});}};}function handleEntityNotFound(_0x348388,_0x4f2b93){return function(_0x50f19b){if(!_0x50f19b){_0x348388[_0x9bae('0x18')](0x194);}return _0x50f19b;};}function handleError(_0x56f6eb,_0x1d2f69){_0x1d2f69=_0x1d2f69||0x1f4;return function(_0x2b2ed5){logger['error'](_0x2b2ed5['stack']);if(_0x2b2ed5[_0x9bae('0x27')]){delete _0x2b2ed5['name'];}_0x56f6eb['status'](_0x1d2f69)[_0x9bae('0x28')](_0x2b2ed5);};}exports[_0x9bae('0x29')]=function(_0x13989f,_0x4508fa){var _0x321ecc={},_0x5cdf4d={},_0xc9de09={'count':0x0,'rows':[]};var _0x45850b=_['map'](db[_0x9bae('0x2a')]['rawAttributes'],function(_0x37b235){return{'name':_0x37b235[_0x9bae('0x2b')],'type':_0x37b235[_0x9bae('0x2c')][_0x9bae('0x2d')]};});_0x5cdf4d[_0x9bae('0x2e')]=_[_0x9bae('0x2f')](_0x45850b,_0x9bae('0x27'));_0x5cdf4d[_0x9bae('0x30')]=_[_0x9bae('0x31')](_0x13989f[_0x9bae('0x30')]);_0x5cdf4d[_0x9bae('0x32')]=_[_0x9bae('0x33')](_0x5cdf4d['model'],_0x5cdf4d[_0x9bae('0x30')]);_0x321ecc[_0x9bae('0x34')]=_[_0x9bae('0x33')](_0x5cdf4d[_0x9bae('0x2e')],qs[_0x9bae('0x35')](_0x13989f[_0x9bae('0x30')][_0x9bae('0x35')]));_0x321ecc['attributes']=_0x321ecc[_0x9bae('0x34')][_0x9bae('0x36')]?_0x321ecc[_0x9bae('0x34')]:_0x5cdf4d[_0x9bae('0x2e')];if(!_0x13989f[_0x9bae('0x30')][_0x9bae('0x37')]('nolimit')){_0x321ecc[_0x9bae('0x1d')]=qs[_0x9bae('0x1d')](_0x13989f[_0x9bae('0x30')][_0x9bae('0x1d')]);_0x321ecc['offset']=qs[_0x9bae('0x1b')](_0x13989f[_0x9bae('0x30')]['offset']);}_0x321ecc['order']=qs[_0x9bae('0x38')](_0x13989f[_0x9bae('0x30')]['sort']);_0x321ecc[_0x9bae('0x39')]=qs['filters'](_[_0x9bae('0x3a')](_0x13989f['query'],_0x5cdf4d[_0x9bae('0x32')]),_0x45850b);if(_0x13989f[_0x9bae('0x30')][_0x9bae('0x3b')]){_0x321ecc['where']=_['merge'](_0x321ecc[_0x9bae('0x39')],{'$or':_[_0x9bae('0x2f')](_0x45850b,function(_0x765194){if(_0x765194[_0x9bae('0x2c')]!==_0x9bae('0x3c')){var _0x4c8cfa={};_0x4c8cfa[_0x765194['name']]={'$like':'%'+_0x13989f[_0x9bae('0x30')][_0x9bae('0x3b')]+'%'};return _0x4c8cfa;}})});}_0x321ecc=_[_0x9bae('0x3d')]({},_0x321ecc,_0x13989f[_0x9bae('0x3e')]);var _0x15f1bd={'where':_0x321ecc[_0x9bae('0x39')]};return db[_0x9bae('0x2a')][_0x9bae('0x1e')](_0x15f1bd)[_0x9bae('0x25')](function(_0x472cf0){_0xc9de09[_0x9bae('0x1e')]=_0x472cf0;if(_0x13989f[_0x9bae('0x30')][_0x9bae('0x3f')]){_0x321ecc[_0x9bae('0x40')]=[{'all':!![]}];}return db[_0x9bae('0x2a')]['findAll'](_0x321ecc);})[_0x9bae('0x25')](function(_0x4b6f9a){_0xc9de09[_0x9bae('0x41')]=_0x4b6f9a;return _0xc9de09;})[_0x9bae('0x25')](respondWithFilteredResult(_0x4508fa,_0x321ecc))[_0x9bae('0x42')](handleError(_0x4508fa,null));};exports[_0x9bae('0x43')]=function(_0xa51e13,_0x2e837b){var _0x26e3bf={'raw':![],'where':{'id':_0xa51e13[_0x9bae('0x44')]['id']}},_0x3e5d6c={};_0x3e5d6c[_0x9bae('0x2e')]=_[_0x9bae('0x31')](db[_0x9bae('0x2a')][_0x9bae('0x45')]);_0x3e5d6c['query']=_[_0x9bae('0x31')](_0xa51e13[_0x9bae('0x30')]);_0x3e5d6c[_0x9bae('0x32')]=_[_0x9bae('0x33')](_0x3e5d6c['model'],_0x3e5d6c['query']);_0x26e3bf[_0x9bae('0x34')]=_[_0x9bae('0x33')](_0x3e5d6c[_0x9bae('0x2e')],qs[_0x9bae('0x35')](_0xa51e13[_0x9bae('0x30')]['fields']));_0x26e3bf['attributes']=_0x26e3bf[_0x9bae('0x34')][_0x9bae('0x36')]?_0x26e3bf[_0x9bae('0x34')]:_0x3e5d6c['model'];if(_0xa51e13[_0x9bae('0x30')][_0x9bae('0x3f')]){_0x26e3bf['include']=[{'all':!![]}];}_0x26e3bf=_[_0x9bae('0x3d')]({},_0x26e3bf,_0xa51e13[_0x9bae('0x3e')]);return db['SalesforceAccount'][_0x9bae('0x46')](_0x26e3bf)[_0x9bae('0x25')](handleEntityNotFound(_0x2e837b,null))[_0x9bae('0x25')](respondWithResult(_0x2e837b,null))[_0x9bae('0x42')](handleError(_0x2e837b,null));};exports[_0x9bae('0x47')]=function(_0x4541e7,_0x54394b){return db[_0x9bae('0x2a')]['create'](_0x4541e7[_0x9bae('0x48')],{})[_0x9bae('0x25')](respondWithResult(_0x54394b,0xc9))[_0x9bae('0x42')](handleError(_0x54394b,null));};exports[_0x9bae('0x24')]=function(_0x167ba3,_0x3d5d39){if(_0x167ba3[_0x9bae('0x48')]['id']){delete _0x167ba3['body']['id'];}return db[_0x9bae('0x2a')]['find']({'where':{'id':_0x167ba3['params']['id']}})[_0x9bae('0x25')](handleEntityNotFound(_0x3d5d39,null))[_0x9bae('0x25')](saveUpdates(_0x167ba3[_0x9bae('0x48')],null))[_0x9bae('0x25')](respondWithResult(_0x3d5d39,null))['catch'](handleError(_0x3d5d39,null));};exports[_0x9bae('0x26')]=function(_0x37f6ea,_0x5b7f4a){return db[_0x9bae('0x2a')][_0x9bae('0x46')]({'where':{'id':_0x37f6ea[_0x9bae('0x44')]['id']}})['then'](handleEntityNotFound(_0x5b7f4a,null))[_0x9bae('0x25')](removeEntity(_0x5b7f4a,null))[_0x9bae('0x42')](handleError(_0x5b7f4a,null));};exports[_0x9bae('0x49')]=function(_0x461f5f,_0x4f5a4d,_0xd6526c){var _0x85fdc6={};var _0x5cd839={};var _0xaf40b0;var _0x3448f9;return db[_0x9bae('0x2a')][_0x9bae('0x4a')]({'where':{'id':_0x461f5f[_0x9bae('0x44')]['id']}})[_0x9bae('0x25')](handleEntityNotFound(_0x4f5a4d,null))[_0x9bae('0x25')](function(_0x19f3a7){if(_0x19f3a7){_0xaf40b0=_0x19f3a7;_0x5cd839[_0x9bae('0x2e')]=_[_0x9bae('0x31')](db[_0x9bae('0x4b')][_0x9bae('0x45')]);_0x5cd839['query']=_[_0x9bae('0x31')](_0x461f5f[_0x9bae('0x30')]);_0x5cd839[_0x9bae('0x32')]=_[_0x9bae('0x33')](_0x5cd839[_0x9bae('0x2e')],_0x5cd839[_0x9bae('0x30')]);_0x85fdc6[_0x9bae('0x34')]=_[_0x9bae('0x33')](_0x5cd839['model'],qs[_0x9bae('0x35')](_0x461f5f['query'][_0x9bae('0x35')]));_0x85fdc6[_0x9bae('0x34')]=_0x85fdc6[_0x9bae('0x34')][_0x9bae('0x36')]?_0x85fdc6[_0x9bae('0x34')]:_0x5cd839[_0x9bae('0x2e')];_0x85fdc6[_0x9bae('0x4c')]=qs[_0x9bae('0x38')](_0x461f5f[_0x9bae('0x30')][_0x9bae('0x38')]);_0x85fdc6[_0x9bae('0x39')]=qs[_0x9bae('0x32')](_[_0x9bae('0x3a')](_0x461f5f[_0x9bae('0x30')],_0x5cd839[_0x9bae('0x32')]));if(_0x461f5f['query'][_0x9bae('0x3b')]){_0x85fdc6['where']=_[_0x9bae('0x3d')](_0x85fdc6[_0x9bae('0x39')],{'$or':_[_0x9bae('0x2f')](_0x85fdc6[_0x9bae('0x34')],function(_0x314f82){var _0x15ed59={};_0x15ed59[_0x314f82]={'$like':'%'+_0x461f5f[_0x9bae('0x30')][_0x9bae('0x3b')]+'%'};return _0x15ed59;})});}_0x85fdc6=_[_0x9bae('0x3d')]({},_0x85fdc6,_0x461f5f[_0x9bae('0x3e')]);return _0xaf40b0[_0x9bae('0x49')](_0x85fdc6);}})['then'](function(_0x43419a){if(_0x43419a){_0x3448f9=_0x43419a[_0x9bae('0x36')];if(!_0x461f5f[_0x9bae('0x30')][_0x9bae('0x37')](_0x9bae('0x4d'))){_0x85fdc6[_0x9bae('0x1d')]=qs['limit'](_0x461f5f[_0x9bae('0x30')][_0x9bae('0x1d')]);_0x85fdc6[_0x9bae('0x1b')]=qs[_0x9bae('0x1b')](_0x461f5f[_0x9bae('0x30')][_0x9bae('0x1b')]);}return _0xaf40b0[_0x9bae('0x49')](_0x85fdc6);}})[_0x9bae('0x25')](function(_0x464a64){if(_0x464a64){return _0x464a64?{'count':_0x3448f9,'rows':_0x464a64}:null;}})['then'](respondWithResult(_0x4f5a4d,null))[_0x9bae('0x42')](handleError(_0x4f5a4d,null));};exports[_0x9bae('0x4e')]=function(_0x1bda95,_0x4ea4fb,_0x5a9e71){if(_0x1bda95['body']['id']){delete _0x1bda95['body']['id'];}return db[_0x9bae('0x2a')][_0x9bae('0x4a')]({'where':{'id':_0x1bda95[_0x9bae('0x44')]['id']}})[_0x9bae('0x25')](handleEntityNotFound(_0x4ea4fb,null))[_0x9bae('0x25')](function(_0x1be1c3){if(_0x1be1c3){_0x1bda95['body']['AccountId']=_0x1be1c3['id'];_0x1bda95[_0x9bae('0x48')][_0x9bae('0x4f')]=integrations[_0x9bae('0x50')](_0x1bda95[_0x9bae('0x48')][_0x9bae('0x51')],_0x1bda95[_0x9bae('0x48')][_0x9bae('0x2c')]);_0x1bda95['body'][_0x9bae('0x52')]=integrations['getDescriptions'](_0x1bda95[_0x9bae('0x48')]['channel'],_0x1bda95[_0x9bae('0x48')]['type']);return db['SalesforceConfiguration'][_0x9bae('0x47')](_0x1bda95[_0x9bae('0x48')],{'include':[{'model':db[_0x9bae('0x53')],'as':_0x9bae('0x4f')},{'model':db['SalesforceField'],'as':_0x9bae('0x52')}]});}return null;})['then'](respondWithResult(_0x4ea4fb,null))['catch'](handleError(_0x4ea4fb,null));};exports['getFields']=function(_0x3f325e,_0x5ada2c,_0x3a7684){var _0xea909;var _0x5caf5e='';var _0x296d5e=_0x9bae('0x54');return db[_0x9bae('0x2a')][_0x9bae('0x4a')]({'where':{'id':_0x3f325e[_0x9bae('0x44')]['id']},'attributes':['id',_0x9bae('0x55'),_0x9bae('0x56'),'clientSecret','username',_0x9bae('0x57'),_0x9bae('0x58')]})[_0x9bae('0x25')](handleEntityNotFound(_0x5ada2c,null))[_0x9bae('0x25')](function(_0x3bc325){if(_0x3bc325){_0x5caf5e=_0x3bc325[_0x9bae('0x55')];var _0x108e1c=_0x5caf5e['slice'](-0x1);if(_0x108e1c==='/'){_0x5caf5e=_0x5caf5e[_0x9bae('0x59')](0x0,_0x5caf5e[_0x9bae('0x5a')](_0x108e1c));}_0xea909=new jsforce[(_0x9bae('0x5b'))]({'oauth2':{'loginUrl':_0x5caf5e,'clientId':_0x3bc325[_0x9bae('0x56')],'clientSecret':_0x3bc325[_0x9bae('0x5c')]}});return _0xea909[_0x9bae('0x5d')](_0x3bc325[_0x9bae('0x5e')],_0x3bc325[_0x9bae('0x57')][_0x9bae('0x5f')](_0x3bc325[_0x9bae('0x58')]));}})[_0x9bae('0x25')](function(_0x531931){if(_0x531931){if(!_[_0x9bae('0x60')](_0x3f325e[_0x9bae('0x30')]['ticketType'])){_0x296d5e=_0x3f325e[_0x9bae('0x30')][_0x9bae('0x61')];}return _0xea909[_0x9bae('0x62')](_0x296d5e)[_0x9bae('0x63')]();}})[_0x9bae('0x25')](function(_0x292c63){var _0x57ed7d=['OwnerId','ActivityDate',_0x9bae('0x64'),'IsRecurrence',_0x9bae('0x65'),_0x9bae('0x66')];var _0x54a1e7=[_0x9bae('0x67'),'int',_0x9bae('0x68'),_0x9bae('0x69'),_0x9bae('0x6a'),_0x9bae('0x6b'),_0x9bae('0x6c')];if(_0x292c63){_[_0x9bae('0x6d')](_0x292c63[_0x9bae('0x35')],function(_0x39adfe){return _0x57ed7d['includes'](_0x39adfe['name'])||!_0x54a1e7['includes'](_0x39adfe[_0x9bae('0x2c')]);});return{'count':_0x292c63[_0x9bae('0x35')]['length'],'rows':_['map'](_0x292c63[_0x9bae('0x35')],function(_0xcac0af){return{'id':_0xcac0af[_0x9bae('0x27')],'name':_0xcac0af[_0x9bae('0x6e')],'custom':_0xcac0af[_0x9bae('0x6f')],'options':_0xcac0af[_0x9bae('0x70')][_0x9bae('0x36')]>0x0?_[_0x9bae('0x2f')](_0xcac0af[_0x9bae('0x70')],function(_0x2a8265){return{'name':_0x2a8265['label'],'value':_0x2a8265['value']};}):_0xcac0af[_0x9bae('0x2c')]==_0x9bae('0x69')?[{'name':_0x9bae('0x71'),'value':_0x9bae('0x72')},{'name':'False','value':'false'}]:[]};})};}})[_0x9bae('0x25')](respondWithResult(_0x5ada2c,null))['catch'](function(_0x451815){var _0x4633af=_0x3f325e[_0x9bae('0x30')][_0x9bae('0x73')]?0x1f4:_0x451815[_0x9bae('0x74')]||0x1f4;logger['error'](_0x9bae('0x75'),_0x9bae('0x76'),_0x4633af,JSON[_0x9bae('0x77')](_0x451815));delete _0x451815[_0x9bae('0x27')];if(_0x4633af===0x191){_0x4633af=0x190;}_0x5ada2c[_0x9bae('0x19')](_0x4633af)[_0x9bae('0x28')](_0x3f325e[_0x9bae('0x30')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x451815[_0x9bae('0x74')]}:_0x451815);});};
\ No newline at end of file
index 2617952..25995c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4221=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','SalesforceAccount','lodash'];(function(_0x1514aa,_0x2da9c5){var _0x8f9eab=function(_0x1caede){while(--_0x1caede){_0x1514aa['push'](_0x1514aa['shift']());}};_0x8f9eab(++_0x2da9c5);}(_0x4221,0x1a1));var _0x1422=function(_0x543a1a,_0x3b6b1d){_0x543a1a=_0x543a1a-0x0;var _0x1728d0=_0x4221[_0x543a1a];return _0x1728d0;};'use strict';var _=require(_0x1422('0x0'));var util=require('util');var logger=require(_0x1422('0x1'))(_0x1422('0x2'));var moment=require(_0x1422('0x3'));var BPromise=require(_0x1422('0x4'));var rp=require(_0x1422('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1422('0x6'));var config=require('../../config/environment');var attributes=require(_0x1422('0x7'));var integrations=require(_0x1422('0x8'));module['exports']=function(_0x5f4a00,_0x614005){return _0x5f4a00[_0x1422('0x9')](_0x1422('0xa'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x65a4=['path','../../config/environment','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65a4,0x166));var _0x465a=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x65a4[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x465a('0x0'));var util=require(_0x465a('0x1'));var logger=require(_0x465a('0x2'))(_0x465a('0x3'));var moment=require(_0x465a('0x4'));var BPromise=require(_0x465a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x465a('0x6'));var rimraf=require('rimraf');var config=require(_0x465a('0x7'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0x465a('0x8'));module[_0x465a('0x9')]=function(_0x16dc5d,_0x470952){return _0x16dc5d[_0x465a('0xa')](_0x465a('0xb'),attributes,{'tableName':_0x465a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2714e2d..5ee50d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fe0=['model','ShowSalesforceAccount','SalesforceAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SalesforceAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetSalesforceAccount','findAll','raw','options','where','attributes','include','map'];(function(_0x588bf5,_0x2ab735){var _0x4dd019=function(_0x578d08){while(--_0x578d08){_0x588bf5['push'](_0x588bf5['shift']());}};_0x4dd019(++_0x2ab735);}(_0x0fe0,0x6f));var _0x00fe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0fe0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x00fe('0x0'));var util=require(_0x00fe('0x1'));var moment=require(_0x00fe('0x2'));var BPromise=require(_0x00fe('0x3'));var rs=require(_0x00fe('0x4'));var fs=require('fs');var Redis=require(_0x00fe('0x5'));var db=require(_0x00fe('0x6'))['db'];var utils=require(_0x00fe('0x7'));var logger=require(_0x00fe('0x8'))(_0x00fe('0x9'));var config=require(_0x00fe('0xa'));var jayson=require(_0x00fe('0xb'));var client=jayson[_0x00fe('0xc')][_0x00fe('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x36c393,_0x46fbb9,_0x500b31){return new BPromise(function(_0x5239d5,_0x5b11ae){return client['request'](_0x36c393,_0x500b31)[_0x00fe('0xe')](function(_0x24e14d){logger[_0x00fe('0xf')](_0x00fe('0x10'),_0x46fbb9,'request\x20sent');logger[_0x00fe('0x11')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x46fbb9,_0x00fe('0x12'),JSON[_0x00fe('0x13')](_0x24e14d));if(_0x24e14d[_0x00fe('0x14')]){if(_0x24e14d[_0x00fe('0x14')][_0x00fe('0x15')]===0x1f4){logger[_0x00fe('0x14')](_0x00fe('0x10'),_0x46fbb9,_0x24e14d[_0x00fe('0x14')][_0x00fe('0x16')]);return _0x5b11ae(_0x24e14d[_0x00fe('0x14')][_0x00fe('0x16')]);}logger[_0x00fe('0x14')](_0x00fe('0x10'),_0x46fbb9,_0x24e14d[_0x00fe('0x14')][_0x00fe('0x16')]);return _0x5239d5(_0x24e14d[_0x00fe('0x14')][_0x00fe('0x16')]);}else{logger[_0x00fe('0xf')](_0x00fe('0x10'),_0x46fbb9,'request\x20sent');_0x5239d5(_0x24e14d[_0x00fe('0x17')][_0x00fe('0x16')]);}})[_0x00fe('0x18')](function(_0x215a9c){logger[_0x00fe('0x14')](_0x00fe('0x10'),_0x46fbb9,_0x215a9c);_0x5b11ae(_0x215a9c);});});}exports[_0x00fe('0x19')]=function(_0x1ea3e0){var _0x4d497b=this;return new Promise(function(_0x199daf,_0x5efccc){return db['SalesforceAccount'][_0x00fe('0x1a')]({'raw':_0x1ea3e0['options']?_0x1ea3e0['options'][_0x00fe('0x1b')]===undefined?!![]:![]:!![],'where':_0x1ea3e0[_0x00fe('0x1c')]?_0x1ea3e0['options'][_0x00fe('0x1d')]||null:null,'attributes':_0x1ea3e0[_0x00fe('0x1c')]?_0x1ea3e0[_0x00fe('0x1c')][_0x00fe('0x1e')]||null:null,'limit':_0x1ea3e0[_0x00fe('0x1c')]?_0x1ea3e0[_0x00fe('0x1c')]['limit']||null:null,'include':_0x1ea3e0['options']?_0x1ea3e0[_0x00fe('0x1c')][_0x00fe('0x1f')]?_[_0x00fe('0x20')](_0x1ea3e0[_0x00fe('0x1c')][_0x00fe('0x1f')],function(_0x25b3bb){return{'model':db[_0x25b3bb['model']],'as':_0x25b3bb['as'],'attributes':_0x25b3bb[_0x00fe('0x1e')],'include':_0x25b3bb[_0x00fe('0x1f')]?_[_0x00fe('0x20')](_0x25b3bb['include'],function(_0x150536){return{'model':db[_0x150536[_0x00fe('0x21')]],'as':_0x150536['as'],'attributes':_0x150536[_0x00fe('0x1e')],'include':_0x150536[_0x00fe('0x1f')]?_[_0x00fe('0x20')](_0x150536[_0x00fe('0x1f')],function(_0x5aba91){return{'model':db[_0x5aba91[_0x00fe('0x21')]],'as':_0x5aba91['as'],'attributes':_0x5aba91[_0x00fe('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x00fe('0xe')](function(_0x29b117){logger[_0x00fe('0xf')]('GetSalesforceAccount',_0x1ea3e0);logger[_0x00fe('0x11')]('GetSalesforceAccount',_0x1ea3e0,JSON[_0x00fe('0x13')](_0x29b117));_0x199daf(_0x29b117);})['catch'](function(_0x1ad62c){logger[_0x00fe('0x14')](_0x00fe('0x19'),_0x1ad62c[_0x00fe('0x16')],_0x1ea3e0);_0x5efccc(_0x4d497b[_0x00fe('0x14')](0x1f4,_0x1ad62c[_0x00fe('0x16')]));});});};exports[_0x00fe('0x22')]=function(_0x5d0ff8){var _0x31d532=this;return new Promise(function(_0x3c9262,_0x2a4a80){return db[_0x00fe('0x23')]['find']({'raw':_0x5d0ff8['options']?_0x5d0ff8['options'][_0x00fe('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d0ff8[_0x00fe('0x1c')]?_0x5d0ff8['options'][_0x00fe('0x1d')]||null:null,'attributes':_0x5d0ff8[_0x00fe('0x1c')]?_0x5d0ff8[_0x00fe('0x1c')][_0x00fe('0x1e')]||null:null,'include':_0x5d0ff8[_0x00fe('0x1c')]?_0x5d0ff8['options'][_0x00fe('0x1f')]?_[_0x00fe('0x20')](_0x5d0ff8[_0x00fe('0x1c')]['include'],function(_0xf78090){return{'model':db[_0xf78090[_0x00fe('0x21')]],'as':_0xf78090['as'],'attributes':_0xf78090[_0x00fe('0x1e')],'include':_0xf78090['include']?_[_0x00fe('0x20')](_0xf78090[_0x00fe('0x1f')],function(_0x27eb48){return{'model':db[_0x27eb48[_0x00fe('0x21')]],'as':_0x27eb48['as'],'attributes':_0x27eb48[_0x00fe('0x1e')],'include':_0x27eb48[_0x00fe('0x1f')]?_[_0x00fe('0x20')](_0x27eb48['include'],function(_0x566f4c){return{'model':db[_0x566f4c['model']],'as':_0x566f4c['as'],'attributes':_0x566f4c[_0x00fe('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b6a19){logger['info'](_0x00fe('0x22'),_0x5d0ff8);logger[_0x00fe('0x11')]('ShowSalesforceAccount',_0x5d0ff8,JSON[_0x00fe('0x13')](_0x5b6a19));_0x3c9262(_0x5b6a19);})['catch'](function(_0x51a2fa){logger['error'](_0x00fe('0x22'),_0x51a2fa[_0x00fe('0x16')],_0x5d0ff8);_0x2a4a80(_0x31d532[_0x00fe('0x14')](0x1f4,_0x51a2fa['message']));});});};
\ No newline at end of file
+var _0x2791=['client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','findAll','options','where','attributes','include','model','map','GetSalesforceAccount','debug','catch','ShowSalesforceAccount','SalesforceAccount','find','raw','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x57074d,_0x2fb471){var _0x237aed=function(_0x1c2117){while(--_0x1c2117){_0x57074d['push'](_0x57074d['shift']());}};_0x237aed(++_0x2fb471);}(_0x2791,0x15a));var _0x1279=function(_0xa4dd82,_0x39fbd2){_0xa4dd82=_0xa4dd82-0x0;var _0x29afab=_0x2791[_0xa4dd82];return _0x29afab;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1279('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1279('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x1279('0x2'));var logger=require(_0x1279('0x3'))('rpc');var config=require(_0x1279('0x4'));var jayson=require(_0x1279('0x5'));var client=jayson[_0x1279('0x6')][_0x1279('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x728661,_0x343067,_0x12abb8){return new BPromise(function(_0x1e7b35,_0x48991b){return client[_0x1279('0x8')](_0x728661,_0x12abb8)[_0x1279('0x9')](function(_0x4645ab){logger[_0x1279('0xa')](_0x1279('0xb'),_0x343067,'request\x20sent');logger['debug'](_0x1279('0xc'),_0x343067,'request\x20sent',JSON[_0x1279('0xd')](_0x4645ab));if(_0x4645ab[_0x1279('0xe')]){if(_0x4645ab['error']['code']===0x1f4){logger[_0x1279('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x343067,_0x4645ab['error'][_0x1279('0xf')]);return _0x48991b(_0x4645ab[_0x1279('0xe')][_0x1279('0xf')]);}logger[_0x1279('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x343067,_0x4645ab[_0x1279('0xe')][_0x1279('0xf')]);return _0x1e7b35(_0x4645ab[_0x1279('0xe')][_0x1279('0xf')]);}else{logger[_0x1279('0xa')](_0x1279('0xb'),_0x343067,_0x1279('0x10'));_0x1e7b35(_0x4645ab[_0x1279('0x11')][_0x1279('0xf')]);}})['catch'](function(_0xdfc81b){logger[_0x1279('0xe')](_0x1279('0xb'),_0x343067,_0xdfc81b);_0x48991b(_0xdfc81b);});});}exports['GetSalesforceAccount']=function(_0x37769d){var _0x26ce1f=this;return new Promise(function(_0x194656,_0x2d217d){return db['SalesforceAccount'][_0x1279('0x12')]({'raw':_0x37769d['options']?_0x37769d[_0x1279('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x37769d[_0x1279('0x13')]?_0x37769d['options'][_0x1279('0x14')]||null:null,'attributes':_0x37769d[_0x1279('0x13')]?_0x37769d[_0x1279('0x13')][_0x1279('0x15')]||null:null,'limit':_0x37769d['options']?_0x37769d[_0x1279('0x13')]['limit']||null:null,'include':_0x37769d[_0x1279('0x13')]?_0x37769d[_0x1279('0x13')][_0x1279('0x16')]?_['map'](_0x37769d['options']['include'],function(_0x3e9c7d){return{'model':db[_0x3e9c7d[_0x1279('0x17')]],'as':_0x3e9c7d['as'],'attributes':_0x3e9c7d[_0x1279('0x15')],'include':_0x3e9c7d[_0x1279('0x16')]?_[_0x1279('0x18')](_0x3e9c7d[_0x1279('0x16')],function(_0x59432f){return{'model':db[_0x59432f['model']],'as':_0x59432f['as'],'attributes':_0x59432f[_0x1279('0x15')],'include':_0x59432f['include']?_[_0x1279('0x18')](_0x59432f[_0x1279('0x16')],function(_0x2d7044){return{'model':db[_0x2d7044['model']],'as':_0x2d7044['as'],'attributes':_0x2d7044[_0x1279('0x15')]};}):[]};}):[]};}):[]:[]})[_0x1279('0x9')](function(_0x309888){logger['info'](_0x1279('0x19'),_0x37769d);logger[_0x1279('0x1a')](_0x1279('0x19'),_0x37769d,JSON[_0x1279('0xd')](_0x309888));_0x194656(_0x309888);})[_0x1279('0x1b')](function(_0x2509c5){logger[_0x1279('0xe')](_0x1279('0x19'),_0x2509c5['message'],_0x37769d);_0x2d217d(_0x26ce1f['error'](0x1f4,_0x2509c5[_0x1279('0xf')]));});});};exports[_0x1279('0x1c')]=function(_0x1a6623){var _0x55c3d6=this;return new Promise(function(_0x5483f0,_0x380654){return db[_0x1279('0x1d')][_0x1279('0x1e')]({'raw':_0x1a6623[_0x1279('0x13')]?_0x1a6623['options'][_0x1279('0x1f')]===undefined?!![]:![]:!![],'where':_0x1a6623[_0x1279('0x13')]?_0x1a6623[_0x1279('0x13')]['where']||null:null,'attributes':_0x1a6623[_0x1279('0x13')]?_0x1a6623[_0x1279('0x13')][_0x1279('0x15')]||null:null,'include':_0x1a6623[_0x1279('0x13')]?_0x1a6623[_0x1279('0x13')][_0x1279('0x16')]?_[_0x1279('0x18')](_0x1a6623[_0x1279('0x13')][_0x1279('0x16')],function(_0x1829fe){return{'model':db[_0x1829fe[_0x1279('0x17')]],'as':_0x1829fe['as'],'attributes':_0x1829fe['attributes'],'include':_0x1829fe[_0x1279('0x16')]?_[_0x1279('0x18')](_0x1829fe[_0x1279('0x16')],function(_0x4bafa4){return{'model':db[_0x4bafa4[_0x1279('0x17')]],'as':_0x4bafa4['as'],'attributes':_0x4bafa4[_0x1279('0x15')],'include':_0x4bafa4[_0x1279('0x16')]?_[_0x1279('0x18')](_0x4bafa4[_0x1279('0x16')],function(_0xe066ae){return{'model':db[_0xe066ae['model']],'as':_0xe066ae['as'],'attributes':_0xe066ae[_0x1279('0x15')]};}):[]};}):[]};}):[]:[]})[_0x1279('0x9')](function(_0x35355c){logger['info'](_0x1279('0x1c'),_0x1a6623);logger[_0x1279('0x1a')](_0x1279('0x1c'),_0x1a6623,JSON[_0x1279('0xd')](_0x35355c));_0x5483f0(_0x35355c);})[_0x1279('0x1b')](function(_0x2eefaa){logger[_0x1279('0xe')]('ShowSalesforceAccount',_0x2eefaa[_0x1279('0xf')],_0x1a6623);_0x380654(_0x55c3d6['error'](0x1f4,_0x2eefaa[_0x1279('0xf')]));});});};
\ No newline at end of file
index ed2ad24..88d2c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x5611d7,_0x5a7fa4){var _0x2bb0f6=function(_0x243858){while(--_0x243858){_0x5611d7['push'](_0x5611d7['shift']());}};_0x2bb0f6(++_0x5a7fa4);}(_0x2ef3,0xba));var _0x32ef=function(_0x421b0b,_0x2e24cd){_0x421b0b=_0x421b0b-0x0;var _0x9f5982=_0x2ef3[_0x421b0b];return _0x9f5982;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
+var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x2c8abc,_0x5097d7){var _0x181815=function(_0x53c87a){while(--_0x53c87a){_0x2c8abc['push'](_0x2c8abc['shift']());}};_0x181815(++_0x5097d7);}(_0x2ef3,0xba));var _0x32ef=function(_0xc92a81,_0x3bb63b){_0xc92a81=_0xc92a81-0x0;var _0x586ef5=_0x2ef3[_0xc92a81];return _0x586ef5;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
index 125f12d..ca6bc49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fc5=['nothing','lead','sequelize','STRING','ENUM','Task','Case','contact_lead','contact'];(function(_0x58a294,_0xb9efb7){var _0x3b07a7=function(_0x4c7dab){while(--_0x4c7dab){_0x58a294['push'](_0x58a294['shift']());}};_0x3b07a7(++_0xb9efb7);}(_0x6fc5,0xbf));var _0x56fc=function(_0xc0ccb0,_0x19b354){_0xc0ccb0=_0xc0ccb0-0x0;var _0x2f5189=_0x6fc5[_0xc0ccb0];return _0x2f5189;};'use strict';var Sequelize=require(_0x56fc('0x0'));module['exports']={'name':{'type':Sequelize[_0x56fc('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x56fc('0x2')](_0x56fc('0x3'),_0x56fc('0x4')),'defaultValue':_0x56fc('0x3')},'moduleSearch':{'type':Sequelize[_0x56fc('0x2')](_0x56fc('0x5'),_0x56fc('0x6'),'lead','account_contact_lead','account'),'defaultValue':_0x56fc('0x5')},'moduleCreate':{'type':Sequelize[_0x56fc('0x2')](_0x56fc('0x7'),_0x56fc('0x6'),_0x56fc('0x8'),'account'),'defaultValue':'lead'},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x47a0=['lead','account_contact_lead','contact_lead','nothing','account','sequelize','STRING','ENUM','Case','Task','contact'];(function(_0x46e5fc,_0x5db9aa){var _0x52f4e6=function(_0x51a00){while(--_0x51a00){_0x46e5fc['push'](_0x46e5fc['shift']());}};_0x52f4e6(++_0x5db9aa);}(_0x47a0,0x15a));var _0x047a=function(_0x40ed0f,_0x5bb1cb){_0x40ed0f=_0x40ed0f-0x0;var _0x4d465d=_0x47a0[_0x40ed0f];return _0x4d465d;};'use strict';var Sequelize=require(_0x047a('0x0'));module['exports']={'name':{'type':Sequelize[_0x047a('0x1')]},'description':{'type':Sequelize[_0x047a('0x1')]},'ticketType':{'type':Sequelize[_0x047a('0x2')]('Task',_0x047a('0x3')),'defaultValue':_0x047a('0x4')},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x047a('0x5'),_0x047a('0x6'),_0x047a('0x7'),'account'),'defaultValue':_0x047a('0x8')},'moduleCreate':{'type':Sequelize[_0x047a('0x2')](_0x047a('0x9'),_0x047a('0x5'),_0x047a('0x6'),_0x047a('0xa')),'defaultValue':'lead'},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x047a('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x047a('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x047a('0x1')]}};
\ No newline at end of file
index 5cffac5..7f3f2bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef39=['getFields','hasOwnProperty','getSubjects','getDescriptions','SalesforceField','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','end','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','filter','where','merge','options','SalesforceConfiguration','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','findOne','pick'];(function(_0x23b416,_0x2dd90e){var _0x369569=function(_0xfcc77c){while(--_0xfcc77c){_0x23b416['push'](_0x23b416['shift']());}};_0x369569(++_0x2dd90e);}(_0xef39,0xa9));var _0x9ef3=function(_0x111eae,_0x5a0466){_0x111eae=_0x111eae-0x0;var _0x22f5cd=_0xef39[_0x111eae];return _0x22f5cd;};'use strict';var emlformat=require(_0x9ef3('0x0'));var rimraf=require(_0x9ef3('0x1'));var zipdir=require(_0x9ef3('0x2'));var jsonpatch=require(_0x9ef3('0x3'));var rp=require('request-promise');var moment=require(_0x9ef3('0x4'));var BPromise=require(_0x9ef3('0x5'));var Mustache=require('mustache');var util=require(_0x9ef3('0x6'));var path=require('path');var sox=require(_0x9ef3('0x7'));var csv=require(_0x9ef3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9ef3('0x9'));var _=require(_0x9ef3('0xa'));var squel=require(_0x9ef3('0xb'));var crypto=require(_0x9ef3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9ef3('0xd'));var toCsv=require(_0x9ef3('0x8'));var querystring=require(_0x9ef3('0xe'));var Papa=require(_0x9ef3('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9ef3('0x10'));var as=require(_0x9ef3('0x11'));var hardwareService=require(_0x9ef3('0x12'));var logger=require(_0x9ef3('0x13'))('api');var utils=require(_0x9ef3('0x14'));var config=require(_0x9ef3('0x15'));var licenseUtil=require(_0x9ef3('0x16'));var db=require(_0x9ef3('0x17'))['db'];function respondWithStatusCode(_0x126839,_0xe4ff84){_0xe4ff84=_0xe4ff84||0xcc;return function(_0x558685){if(_0x558685){return _0x126839[_0x9ef3('0x18')](_0xe4ff84);}return _0x126839[_0x9ef3('0x19')](_0xe4ff84)['end']();};}function respondWithResult(_0x19d0f5,_0x52c2d5){_0x52c2d5=_0x52c2d5||0xc8;return function(_0x3ddad6){if(_0x3ddad6){return _0x19d0f5[_0x9ef3('0x19')](_0x52c2d5)[_0x9ef3('0x1a')](_0x3ddad6);}};}function respondWithFilteredResult(_0x2df640,_0xb46b12){return function(_0xc43840){if(_0xc43840){var _0x1968a1=typeof _0xb46b12[_0x9ef3('0x1b')]===_0x9ef3('0x1c')&&typeof _0xb46b12[_0x9ef3('0x1d')]===_0x9ef3('0x1c');var _0xe40b64=_0xc43840[_0x9ef3('0x1e')];var _0x43e9e5=_0x1968a1?0x0:_0xb46b12[_0x9ef3('0x1b')];var _0x5ed803=_0x1968a1?_0xc43840[_0x9ef3('0x1e')]:_0xb46b12['offset']+_0xb46b12['limit'];var _0x5ce898;if(_0x5ed803>=_0xe40b64){_0x5ed803=_0xe40b64;_0x5ce898=0xc8;}else{_0x5ce898=0xce;}_0x2df640[_0x9ef3('0x19')](_0x5ce898);return _0x2df640[_0x9ef3('0x1f')](_0x9ef3('0x20'),_0x43e9e5+'-'+_0x5ed803+'/'+_0xe40b64)[_0x9ef3('0x1a')](_0xc43840);}return null;};}function patchUpdates(_0xaa413d){return function(_0xb7e085){try{jsonpatch[_0x9ef3('0x21')](_0xb7e085,_0xaa413d,!![]);}catch(_0x48f52a){return BPromise[_0x9ef3('0x22')](_0x48f52a);}return _0xb7e085[_0x9ef3('0x23')]();};}function saveUpdates(_0x33b5cd,_0x1d182e){return function(_0x50e9a1){if(_0x50e9a1){return _0x50e9a1['update'](_0x33b5cd)['then'](function(_0x1139c7){return _0x1139c7;});}return null;};}function removeEntity(_0x1e9f6b,_0x33bf54){return function(_0xe6c56a){if(_0xe6c56a){return _0xe6c56a[_0x9ef3('0x24')]()[_0x9ef3('0x25')](function(){_0x1e9f6b['status'](0xcc)[_0x9ef3('0x26')]();});}};}function handleEntityNotFound(_0x45ba97,_0x351b7a){return function(_0x4fdce7){if(!_0x4fdce7){_0x45ba97[_0x9ef3('0x18')](0x194);}return _0x4fdce7;};}function handleError(_0x572af7,_0x30f465){_0x30f465=_0x30f465||0x1f4;return function(_0x586038){logger[_0x9ef3('0x27')](_0x586038[_0x9ef3('0x28')]);if(_0x586038['name']){delete _0x586038[_0x9ef3('0x29')];}_0x572af7[_0x9ef3('0x19')](_0x30f465)[_0x9ef3('0x2a')](_0x586038);};}exports[_0x9ef3('0x2b')]=function(_0x40edde,_0x348e2f){var _0x55f068={},_0x184729={},_0x4ef073={'count':0x0,'rows':[]};var _0x2f6351=_[_0x9ef3('0x2c')](db['SalesforceConfiguration'][_0x9ef3('0x2d')],function(_0x197cf3){return{'name':_0x197cf3['fieldName'],'type':_0x197cf3[_0x9ef3('0x2e')][_0x9ef3('0x2f')]};});_0x184729['model']=_[_0x9ef3('0x2c')](_0x2f6351,_0x9ef3('0x29'));_0x184729[_0x9ef3('0x30')]=_[_0x9ef3('0x31')](_0x40edde[_0x9ef3('0x30')]);_0x184729[_0x9ef3('0x32')]=_['intersection'](_0x184729[_0x9ef3('0x33')],_0x184729[_0x9ef3('0x30')]);_0x55f068[_0x9ef3('0x34')]=_[_0x9ef3('0x35')](_0x184729[_0x9ef3('0x33')],qs['fields'](_0x40edde['query'][_0x9ef3('0x36')]));_0x55f068[_0x9ef3('0x34')]=_0x55f068['attributes'][_0x9ef3('0x37')]?_0x55f068[_0x9ef3('0x34')]:_0x184729[_0x9ef3('0x33')];if(!_0x40edde[_0x9ef3('0x30')]['hasOwnProperty'](_0x9ef3('0x38'))){_0x55f068[_0x9ef3('0x1d')]=qs[_0x9ef3('0x1d')](_0x40edde[_0x9ef3('0x30')][_0x9ef3('0x1d')]);_0x55f068['offset']=qs[_0x9ef3('0x1b')](_0x40edde[_0x9ef3('0x30')][_0x9ef3('0x1b')]);}_0x55f068[_0x9ef3('0x39')]=qs[_0x9ef3('0x3a')](_0x40edde[_0x9ef3('0x30')][_0x9ef3('0x3a')]);_0x55f068['where']=qs['filters'](_['pick'](_0x40edde[_0x9ef3('0x30')],_0x184729[_0x9ef3('0x32')]),_0x2f6351);if(_0x40edde[_0x9ef3('0x30')][_0x9ef3('0x3b')]){_0x55f068[_0x9ef3('0x3c')]=_[_0x9ef3('0x3d')](_0x55f068[_0x9ef3('0x3c')],{'$or':_['map'](_0x2f6351,function(_0x35374c){if(_0x35374c['type']!=='VIRTUAL'){var _0xbbd425={};_0xbbd425[_0x35374c[_0x9ef3('0x29')]]={'$like':'%'+_0x40edde[_0x9ef3('0x30')][_0x9ef3('0x3b')]+'%'};return _0xbbd425;}})});}_0x55f068=_[_0x9ef3('0x3d')]({},_0x55f068,_0x40edde[_0x9ef3('0x3e')]);var _0x67c6c2={'where':_0x55f068['where']};return db[_0x9ef3('0x3f')]['count'](_0x67c6c2)[_0x9ef3('0x25')](function(_0x472611){_0x4ef073[_0x9ef3('0x1e')]=_0x472611;if(_0x40edde[_0x9ef3('0x30')][_0x9ef3('0x40')]){_0x55f068['include']=[{'all':!![]}];}return db[_0x9ef3('0x3f')][_0x9ef3('0x41')](_0x55f068);})['then'](function(_0x38bf4f){_0x4ef073[_0x9ef3('0x42')]=_0x38bf4f;return _0x4ef073;})[_0x9ef3('0x25')](respondWithFilteredResult(_0x348e2f,_0x55f068))[_0x9ef3('0x43')](handleError(_0x348e2f,null));};exports[_0x9ef3('0x44')]=function(_0x22d03c,_0x155797){var _0x459b2a={'raw':![],'where':{'id':_0x22d03c[_0x9ef3('0x45')]['id']}},_0x4abfbf={};_0x4abfbf[_0x9ef3('0x33')]=_[_0x9ef3('0x31')](db['SalesforceConfiguration'][_0x9ef3('0x2d')]);_0x4abfbf[_0x9ef3('0x30')]=_['keys'](_0x22d03c[_0x9ef3('0x30')]);_0x4abfbf[_0x9ef3('0x32')]=_[_0x9ef3('0x35')](_0x4abfbf[_0x9ef3('0x33')],_0x4abfbf['query']);_0x459b2a[_0x9ef3('0x34')]=_[_0x9ef3('0x35')](_0x4abfbf[_0x9ef3('0x33')],qs['fields'](_0x22d03c[_0x9ef3('0x30')][_0x9ef3('0x36')]));_0x459b2a['attributes']=_0x459b2a[_0x9ef3('0x34')][_0x9ef3('0x37')]?_0x459b2a[_0x9ef3('0x34')]:_0x4abfbf[_0x9ef3('0x33')];if(_0x22d03c[_0x9ef3('0x30')][_0x9ef3('0x40')]){_0x459b2a[_0x9ef3('0x46')]=[{'all':!![]}];}_0x459b2a=_[_0x9ef3('0x3d')]({},_0x459b2a,_0x22d03c[_0x9ef3('0x3e')]);return db[_0x9ef3('0x3f')][_0x9ef3('0x47')](_0x459b2a)[_0x9ef3('0x25')](handleEntityNotFound(_0x155797,null))[_0x9ef3('0x25')](respondWithResult(_0x155797,null))[_0x9ef3('0x43')](handleError(_0x155797,null));};exports[_0x9ef3('0x48')]=function(_0x2b4bc7,_0xf7ac9d){return db[_0x9ef3('0x3f')]['create'](_0x2b4bc7[_0x9ef3('0x49')],{})[_0x9ef3('0x25')](respondWithResult(_0xf7ac9d,0xc9))[_0x9ef3('0x43')](handleError(_0xf7ac9d,null));};exports[_0x9ef3('0x4a')]=function(_0xb65301,_0x4a6882){if(_0xb65301['body']['id']){delete _0xb65301[_0x9ef3('0x49')]['id'];}return db[_0x9ef3('0x3f')]['find']({'where':{'id':_0xb65301[_0x9ef3('0x45')]['id']}})[_0x9ef3('0x25')](handleEntityNotFound(_0x4a6882,null))[_0x9ef3('0x25')](saveUpdates(_0xb65301[_0x9ef3('0x49')],null))[_0x9ef3('0x25')](respondWithResult(_0x4a6882,null))[_0x9ef3('0x43')](handleError(_0x4a6882,null));};exports[_0x9ef3('0x24')]=function(_0xe6d920,_0x4ff2c3){return db[_0x9ef3('0x3f')][_0x9ef3('0x47')]({'where':{'id':_0xe6d920[_0x9ef3('0x45')]['id']}})[_0x9ef3('0x25')](handleEntityNotFound(_0x4ff2c3,null))['then'](removeEntity(_0x4ff2c3,null))[_0x9ef3('0x43')](handleError(_0x4ff2c3,null));};exports['getFields']=function(_0x5e42cd,_0x58c946,_0x562eb7){var _0x45cff3={};var _0x3d6c86={};var _0x38570b;var _0x40c464;return db[_0x9ef3('0x3f')][_0x9ef3('0x4b')]({'where':{'id':_0x5e42cd[_0x9ef3('0x45')]['id']}})[_0x9ef3('0x25')](handleEntityNotFound(_0x58c946,null))['then'](function(_0x375538){if(_0x375538){_0x38570b=_0x375538;_0x3d6c86[_0x9ef3('0x33')]=_[_0x9ef3('0x31')](db['SalesforceField'][_0x9ef3('0x2d')]);_0x3d6c86['query']=_[_0x9ef3('0x31')](_0x5e42cd[_0x9ef3('0x30')]);_0x3d6c86['filters']=_[_0x9ef3('0x35')](_0x3d6c86[_0x9ef3('0x33')],_0x3d6c86[_0x9ef3('0x30')]);_0x45cff3[_0x9ef3('0x34')]=_['intersection'](_0x3d6c86[_0x9ef3('0x33')],qs[_0x9ef3('0x36')](_0x5e42cd[_0x9ef3('0x30')][_0x9ef3('0x36')]));_0x45cff3[_0x9ef3('0x34')]=_0x45cff3[_0x9ef3('0x34')][_0x9ef3('0x37')]?_0x45cff3['attributes']:_0x3d6c86[_0x9ef3('0x33')];_0x45cff3['order']=qs[_0x9ef3('0x3a')](_0x5e42cd['query'][_0x9ef3('0x3a')]);_0x45cff3[_0x9ef3('0x3c')]=qs[_0x9ef3('0x32')](_[_0x9ef3('0x4c')](_0x5e42cd[_0x9ef3('0x30')],_0x3d6c86[_0x9ef3('0x32')]));if(_0x5e42cd[_0x9ef3('0x30')][_0x9ef3('0x3b')]){_0x45cff3[_0x9ef3('0x3c')]=_[_0x9ef3('0x3d')](_0x45cff3[_0x9ef3('0x3c')],{'$or':_['map'](_0x45cff3['attributes'],function(_0xf5a766){var _0xf5835d={};_0xf5835d[_0xf5a766]={'$like':'%'+_0x5e42cd[_0x9ef3('0x30')]['filter']+'%'};return _0xf5835d;})});}_0x45cff3=_[_0x9ef3('0x3d')]({},_0x45cff3,_0x5e42cd[_0x9ef3('0x3e')]);return _0x38570b[_0x9ef3('0x4d')](_0x45cff3);}})[_0x9ef3('0x25')](function(_0x191a14){if(_0x191a14){_0x40c464=_0x191a14['length'];if(!_0x5e42cd[_0x9ef3('0x30')][_0x9ef3('0x4e')]('nolimit')){_0x45cff3[_0x9ef3('0x1d')]=qs[_0x9ef3('0x1d')](_0x5e42cd[_0x9ef3('0x30')]['limit']);_0x45cff3[_0x9ef3('0x1b')]=qs['offset'](_0x5e42cd[_0x9ef3('0x30')][_0x9ef3('0x1b')]);}return _0x38570b[_0x9ef3('0x4d')](_0x45cff3);}})[_0x9ef3('0x25')](function(_0x37cc56){if(_0x37cc56){return _0x37cc56?{'count':_0x40c464,'rows':_0x37cc56}:null;}})['then'](respondWithResult(_0x58c946,null))[_0x9ef3('0x43')](handleError(_0x58c946,null));};exports[_0x9ef3('0x4f')]=function(_0x5cb650,_0xa3ef35,_0x554a91){var _0x570a26={};var _0x41e736={};var _0x10cf43;var _0x7ca4cc;return db[_0x9ef3('0x3f')][_0x9ef3('0x4b')]({'where':{'id':_0x5cb650[_0x9ef3('0x45')]['id']}})[_0x9ef3('0x25')](handleEntityNotFound(_0xa3ef35,null))['then'](function(_0x35099a){if(_0x35099a){_0x10cf43=_0x35099a;_0x41e736['model']=_[_0x9ef3('0x31')](db['SalesforceField'][_0x9ef3('0x2d')]);_0x41e736[_0x9ef3('0x30')]=_[_0x9ef3('0x31')](_0x5cb650[_0x9ef3('0x30')]);_0x41e736['filters']=_[_0x9ef3('0x35')](_0x41e736[_0x9ef3('0x33')],_0x41e736[_0x9ef3('0x30')]);_0x570a26[_0x9ef3('0x34')]=_[_0x9ef3('0x35')](_0x41e736[_0x9ef3('0x33')],qs['fields'](_0x5cb650[_0x9ef3('0x30')][_0x9ef3('0x36')]));_0x570a26['attributes']=_0x570a26[_0x9ef3('0x34')][_0x9ef3('0x37')]?_0x570a26[_0x9ef3('0x34')]:_0x41e736[_0x9ef3('0x33')];_0x570a26[_0x9ef3('0x39')]=qs[_0x9ef3('0x3a')](_0x5cb650[_0x9ef3('0x30')][_0x9ef3('0x3a')]);_0x570a26[_0x9ef3('0x3c')]=qs[_0x9ef3('0x32')](_['pick'](_0x5cb650[_0x9ef3('0x30')],_0x41e736[_0x9ef3('0x32')]));if(_0x5cb650[_0x9ef3('0x30')]['filter']){_0x570a26[_0x9ef3('0x3c')]=_['merge'](_0x570a26[_0x9ef3('0x3c')],{'$or':_['map'](_0x570a26['attributes'],function(_0x4407ed){var _0x4d213f={};_0x4d213f[_0x4407ed]={'$like':'%'+_0x5cb650[_0x9ef3('0x30')][_0x9ef3('0x3b')]+'%'};return _0x4d213f;})});}_0x570a26=_[_0x9ef3('0x3d')]({},_0x570a26,_0x5cb650[_0x9ef3('0x3e')]);return _0x10cf43[_0x9ef3('0x4f')](_0x570a26);}})['then'](function(_0x4bb17f){if(_0x4bb17f){_0x7ca4cc=_0x4bb17f[_0x9ef3('0x37')];if(!_0x5cb650[_0x9ef3('0x30')][_0x9ef3('0x4e')](_0x9ef3('0x38'))){_0x570a26['limit']=qs[_0x9ef3('0x1d')](_0x5cb650[_0x9ef3('0x30')][_0x9ef3('0x1d')]);_0x570a26[_0x9ef3('0x1b')]=qs[_0x9ef3('0x1b')](_0x5cb650[_0x9ef3('0x30')][_0x9ef3('0x1b')]);}return _0x10cf43[_0x9ef3('0x4f')](_0x570a26);}})[_0x9ef3('0x25')](function(_0x1b874b){if(_0x1b874b){return _0x1b874b?{'count':_0x7ca4cc,'rows':_0x1b874b}:null;}})[_0x9ef3('0x25')](respondWithResult(_0xa3ef35,null))[_0x9ef3('0x43')](handleError(_0xa3ef35,null));};exports[_0x9ef3('0x50')]=function(_0x2fb474,_0x2bc533,_0x5cbaf9){var _0x5b9639={};var _0x356b8d={};var _0x370760;var _0x4c7217;return db[_0x9ef3('0x3f')]['findOne']({'where':{'id':_0x2fb474[_0x9ef3('0x45')]['id']}})[_0x9ef3('0x25')](handleEntityNotFound(_0x2bc533,null))['then'](function(_0x560cbe){if(_0x560cbe){_0x370760=_0x560cbe;_0x356b8d[_0x9ef3('0x33')]=_['keys'](db[_0x9ef3('0x51')][_0x9ef3('0x2d')]);_0x356b8d[_0x9ef3('0x30')]=_['keys'](_0x2fb474[_0x9ef3('0x30')]);_0x356b8d[_0x9ef3('0x32')]=_[_0x9ef3('0x35')](_0x356b8d['model'],_0x356b8d[_0x9ef3('0x30')]);_0x5b9639[_0x9ef3('0x34')]=_['intersection'](_0x356b8d['model'],qs[_0x9ef3('0x36')](_0x2fb474[_0x9ef3('0x30')][_0x9ef3('0x36')]));_0x5b9639[_0x9ef3('0x34')]=_0x5b9639[_0x9ef3('0x34')]['length']?_0x5b9639[_0x9ef3('0x34')]:_0x356b8d[_0x9ef3('0x33')];_0x5b9639[_0x9ef3('0x39')]=qs[_0x9ef3('0x3a')](_0x2fb474[_0x9ef3('0x30')][_0x9ef3('0x3a')]);_0x5b9639['where']=qs[_0x9ef3('0x32')](_[_0x9ef3('0x4c')](_0x2fb474[_0x9ef3('0x30')],_0x356b8d[_0x9ef3('0x32')]));if(_0x2fb474[_0x9ef3('0x30')][_0x9ef3('0x3b')]){_0x5b9639['where']=_['merge'](_0x5b9639[_0x9ef3('0x3c')],{'$or':_['map'](_0x5b9639[_0x9ef3('0x34')],function(_0x131313){var _0x2e188b={};_0x2e188b[_0x131313]={'$like':'%'+_0x2fb474[_0x9ef3('0x30')][_0x9ef3('0x3b')]+'%'};return _0x2e188b;})});}_0x5b9639=_[_0x9ef3('0x3d')]({},_0x5b9639,_0x2fb474[_0x9ef3('0x3e')]);return _0x370760[_0x9ef3('0x50')](_0x5b9639);}})[_0x9ef3('0x25')](function(_0x19778c){if(_0x19778c){_0x4c7217=_0x19778c[_0x9ef3('0x37')];if(!_0x2fb474[_0x9ef3('0x30')][_0x9ef3('0x4e')](_0x9ef3('0x38'))){_0x5b9639['limit']=qs[_0x9ef3('0x1d')](_0x2fb474['query'][_0x9ef3('0x1d')]);_0x5b9639['offset']=qs[_0x9ef3('0x1b')](_0x2fb474['query']['offset']);}return _0x370760['getDescriptions'](_0x5b9639);}})['then'](function(_0x3c6d89){if(_0x3c6d89){return _0x3c6d89?{'count':_0x4c7217,'rows':_0x3c6d89}:null;}})[_0x9ef3('0x25')](respondWithResult(_0x2bc533,null))[_0x9ef3('0x43')](handleError(_0x2bc533,null));};
\ No newline at end of file
+var _0x5329=['body','SalesforceField','getFields','nolimit','getSubjects','findOne','rawAttributes','pick','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','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','undefined','count','offset','set','Content-Range','json','reject','save','update','then','destroy','name','send','index','map','SalesforceConfiguration','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','merge','where','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','find','create'];(function(_0x46b5ea,_0x55175d){var _0x1e66e0=function(_0x4047bc){while(--_0x4047bc){_0x46b5ea['push'](_0x46b5ea['shift']());}};_0x1e66e0(++_0x55175d);}(_0x5329,0xab));var _0x9532=function(_0x2da6f7,_0x18da1d){_0x2da6f7=_0x2da6f7-0x0;var _0xd0449c=_0x5329[_0x2da6f7];return _0xd0449c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9532('0x0'));var zipdir=require(_0x9532('0x1'));var jsonpatch=require(_0x9532('0x2'));var rp=require(_0x9532('0x3'));var moment=require(_0x9532('0x4'));var BPromise=require(_0x9532('0x5'));var Mustache=require(_0x9532('0x6'));var util=require('util');var path=require(_0x9532('0x7'));var sox=require(_0x9532('0x8'));var csv=require(_0x9532('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9532('0xa'));var _=require('lodash');var squel=require(_0x9532('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9532('0xc'));var toCsv=require(_0x9532('0x9'));var querystring=require(_0x9532('0xd'));var Papa=require('papaparse');var Redis=require(_0x9532('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9532('0xf'));var as=require(_0x9532('0x10'));var hardwareService=require(_0x9532('0x11'));var logger=require(_0x9532('0x12'))(_0x9532('0x13'));var utils=require(_0x9532('0x14'));var config=require(_0x9532('0x15'));var licenseUtil=require(_0x9532('0x16'));var db=require(_0x9532('0x17'))['db'];function respondWithStatusCode(_0x5e888b,_0xac2d00){_0xac2d00=_0xac2d00||0xcc;return function(_0x2e6bb2){if(_0x2e6bb2){return _0x5e888b[_0x9532('0x18')](_0xac2d00);}return _0x5e888b[_0x9532('0x19')](_0xac2d00)[_0x9532('0x1a')]();};}function respondWithResult(_0x1c5769,_0x404b98){_0x404b98=_0x404b98||0xc8;return function(_0x2719de){if(_0x2719de){return _0x1c5769[_0x9532('0x19')](_0x404b98)['json'](_0x2719de);}};}function respondWithFilteredResult(_0x12f066,_0x49845b){return function(_0x29b02b){if(_0x29b02b){var _0x275fa5=typeof _0x49845b['offset']===_0x9532('0x1b')&&typeof _0x49845b['limit']===_0x9532('0x1b');var _0x444228=_0x29b02b[_0x9532('0x1c')];var _0x43c67e=_0x275fa5?0x0:_0x49845b[_0x9532('0x1d')];var _0x354dfa=_0x275fa5?_0x29b02b['count']:_0x49845b[_0x9532('0x1d')]+_0x49845b['limit'];var _0x4eb903;if(_0x354dfa>=_0x444228){_0x354dfa=_0x444228;_0x4eb903=0xc8;}else{_0x4eb903=0xce;}_0x12f066[_0x9532('0x19')](_0x4eb903);return _0x12f066[_0x9532('0x1e')](_0x9532('0x1f'),_0x43c67e+'-'+_0x354dfa+'/'+_0x444228)[_0x9532('0x20')](_0x29b02b);}return null;};}function patchUpdates(_0x52207f){return function(_0x181500){try{jsonpatch['apply'](_0x181500,_0x52207f,!![]);}catch(_0x2dd062){return BPromise[_0x9532('0x21')](_0x2dd062);}return _0x181500[_0x9532('0x22')]();};}function saveUpdates(_0x43fcf2,_0x337df3){return function(_0x4c3067){if(_0x4c3067){return _0x4c3067[_0x9532('0x23')](_0x43fcf2)[_0x9532('0x24')](function(_0x55ba08){return _0x55ba08;});}return null;};}function removeEntity(_0x16b9ed,_0x586246){return function(_0x40431b){if(_0x40431b){return _0x40431b[_0x9532('0x25')]()[_0x9532('0x24')](function(){_0x16b9ed[_0x9532('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x84e174,_0x2a1409){return function(_0x518c28){if(!_0x518c28){_0x84e174['sendStatus'](0x194);}return _0x518c28;};}function handleError(_0x3a26f0,_0x2bad72){_0x2bad72=_0x2bad72||0x1f4;return function(_0x1691cd){logger['error'](_0x1691cd['stack']);if(_0x1691cd[_0x9532('0x26')]){delete _0x1691cd[_0x9532('0x26')];}_0x3a26f0[_0x9532('0x19')](_0x2bad72)[_0x9532('0x27')](_0x1691cd);};}exports[_0x9532('0x28')]=function(_0x119423,_0x164539){var _0x1b6a61={},_0x4e0d00={},_0x37ce37={'count':0x0,'rows':[]};var _0x39fcbe=_[_0x9532('0x29')](db[_0x9532('0x2a')]['rawAttributes'],function(_0x4638a2){return{'name':_0x4638a2[_0x9532('0x2b')],'type':_0x4638a2[_0x9532('0x2c')][_0x9532('0x2d')]};});_0x4e0d00[_0x9532('0x2e')]=_[_0x9532('0x29')](_0x39fcbe,_0x9532('0x26'));_0x4e0d00[_0x9532('0x2f')]=_[_0x9532('0x30')](_0x119423[_0x9532('0x2f')]);_0x4e0d00[_0x9532('0x31')]=_['intersection'](_0x4e0d00[_0x9532('0x2e')],_0x4e0d00[_0x9532('0x2f')]);_0x1b6a61[_0x9532('0x32')]=_[_0x9532('0x33')](_0x4e0d00[_0x9532('0x2e')],qs[_0x9532('0x34')](_0x119423['query'][_0x9532('0x34')]));_0x1b6a61['attributes']=_0x1b6a61[_0x9532('0x32')][_0x9532('0x35')]?_0x1b6a61[_0x9532('0x32')]:_0x4e0d00[_0x9532('0x2e')];if(!_0x119423[_0x9532('0x2f')][_0x9532('0x36')]('nolimit')){_0x1b6a61['limit']=qs[_0x9532('0x37')](_0x119423['query'][_0x9532('0x37')]);_0x1b6a61[_0x9532('0x1d')]=qs['offset'](_0x119423[_0x9532('0x2f')]['offset']);}_0x1b6a61[_0x9532('0x38')]=qs[_0x9532('0x39')](_0x119423[_0x9532('0x2f')][_0x9532('0x39')]);_0x1b6a61['where']=qs[_0x9532('0x31')](_['pick'](_0x119423[_0x9532('0x2f')],_0x4e0d00[_0x9532('0x31')]),_0x39fcbe);if(_0x119423[_0x9532('0x2f')]['filter']){_0x1b6a61['where']=_[_0x9532('0x3a')](_0x1b6a61[_0x9532('0x3b')],{'$or':_[_0x9532('0x29')](_0x39fcbe,function(_0x359b46){if(_0x359b46['type']!==_0x9532('0x3c')){var _0x50847a={};_0x50847a[_0x359b46[_0x9532('0x26')]]={'$like':'%'+_0x119423[_0x9532('0x2f')][_0x9532('0x3d')]+'%'};return _0x50847a;}})});}_0x1b6a61=_[_0x9532('0x3a')]({},_0x1b6a61,_0x119423[_0x9532('0x3e')]);var _0x295606={'where':_0x1b6a61[_0x9532('0x3b')]};return db[_0x9532('0x2a')][_0x9532('0x1c')](_0x295606)[_0x9532('0x24')](function(_0x315a36){_0x37ce37[_0x9532('0x1c')]=_0x315a36;if(_0x119423['query']['includeAll']){_0x1b6a61[_0x9532('0x3f')]=[{'all':!![]}];}return db[_0x9532('0x2a')][_0x9532('0x40')](_0x1b6a61);})[_0x9532('0x24')](function(_0x5ea983){_0x37ce37[_0x9532('0x41')]=_0x5ea983;return _0x37ce37;})[_0x9532('0x24')](respondWithFilteredResult(_0x164539,_0x1b6a61))[_0x9532('0x42')](handleError(_0x164539,null));};exports[_0x9532('0x43')]=function(_0xd6c98a,_0x47010b){var _0x17d336={'raw':![],'where':{'id':_0xd6c98a[_0x9532('0x44')]['id']}},_0x380f70={};_0x380f70[_0x9532('0x2e')]=_[_0x9532('0x30')](db[_0x9532('0x2a')]['rawAttributes']);_0x380f70[_0x9532('0x2f')]=_[_0x9532('0x30')](_0xd6c98a[_0x9532('0x2f')]);_0x380f70[_0x9532('0x31')]=_[_0x9532('0x33')](_0x380f70['model'],_0x380f70[_0x9532('0x2f')]);_0x17d336[_0x9532('0x32')]=_[_0x9532('0x33')](_0x380f70[_0x9532('0x2e')],qs[_0x9532('0x34')](_0xd6c98a[_0x9532('0x2f')][_0x9532('0x34')]));_0x17d336['attributes']=_0x17d336[_0x9532('0x32')][_0x9532('0x35')]?_0x17d336[_0x9532('0x32')]:_0x380f70[_0x9532('0x2e')];if(_0xd6c98a[_0x9532('0x2f')][_0x9532('0x45')]){_0x17d336['include']=[{'all':!![]}];}_0x17d336=_[_0x9532('0x3a')]({},_0x17d336,_0xd6c98a[_0x9532('0x3e')]);return db[_0x9532('0x2a')][_0x9532('0x46')](_0x17d336)[_0x9532('0x24')](handleEntityNotFound(_0x47010b,null))[_0x9532('0x24')](respondWithResult(_0x47010b,null))[_0x9532('0x42')](handleError(_0x47010b,null));};exports['create']=function(_0x4329db,_0x3971bb){return db[_0x9532('0x2a')][_0x9532('0x47')](_0x4329db[_0x9532('0x48')],{})['then'](respondWithResult(_0x3971bb,0xc9))[_0x9532('0x42')](handleError(_0x3971bb,null));};exports['update']=function(_0x45ef7a,_0xd4bf72){if(_0x45ef7a['body']['id']){delete _0x45ef7a[_0x9532('0x48')]['id'];}return db[_0x9532('0x2a')]['find']({'where':{'id':_0x45ef7a[_0x9532('0x44')]['id']}})[_0x9532('0x24')](handleEntityNotFound(_0xd4bf72,null))[_0x9532('0x24')](saveUpdates(_0x45ef7a['body'],null))[_0x9532('0x24')](respondWithResult(_0xd4bf72,null))[_0x9532('0x42')](handleError(_0xd4bf72,null));};exports[_0x9532('0x25')]=function(_0x102d04,_0x3a8ca5){return db[_0x9532('0x2a')]['find']({'where':{'id':_0x102d04['params']['id']}})[_0x9532('0x24')](handleEntityNotFound(_0x3a8ca5,null))[_0x9532('0x24')](removeEntity(_0x3a8ca5,null))[_0x9532('0x42')](handleError(_0x3a8ca5,null));};exports['getFields']=function(_0x1232d8,_0x4819d5,_0x3b49c1){var _0x8f45a0={};var _0x2476f9={};var _0x55c8e1;var _0x1e21aa;return db[_0x9532('0x2a')]['findOne']({'where':{'id':_0x1232d8[_0x9532('0x44')]['id']}})[_0x9532('0x24')](handleEntityNotFound(_0x4819d5,null))[_0x9532('0x24')](function(_0x123458){if(_0x123458){_0x55c8e1=_0x123458;_0x2476f9[_0x9532('0x2e')]=_[_0x9532('0x30')](db[_0x9532('0x49')]['rawAttributes']);_0x2476f9[_0x9532('0x2f')]=_[_0x9532('0x30')](_0x1232d8[_0x9532('0x2f')]);_0x2476f9[_0x9532('0x31')]=_[_0x9532('0x33')](_0x2476f9[_0x9532('0x2e')],_0x2476f9['query']);_0x8f45a0[_0x9532('0x32')]=_[_0x9532('0x33')](_0x2476f9[_0x9532('0x2e')],qs[_0x9532('0x34')](_0x1232d8[_0x9532('0x2f')][_0x9532('0x34')]));_0x8f45a0['attributes']=_0x8f45a0[_0x9532('0x32')][_0x9532('0x35')]?_0x8f45a0[_0x9532('0x32')]:_0x2476f9[_0x9532('0x2e')];_0x8f45a0[_0x9532('0x38')]=qs['sort'](_0x1232d8['query'][_0x9532('0x39')]);_0x8f45a0['where']=qs[_0x9532('0x31')](_['pick'](_0x1232d8[_0x9532('0x2f')],_0x2476f9[_0x9532('0x31')]));if(_0x1232d8[_0x9532('0x2f')][_0x9532('0x3d')]){_0x8f45a0[_0x9532('0x3b')]=_[_0x9532('0x3a')](_0x8f45a0[_0x9532('0x3b')],{'$or':_[_0x9532('0x29')](_0x8f45a0['attributes'],function(_0x2a027a){var _0x32c68d={};_0x32c68d[_0x2a027a]={'$like':'%'+_0x1232d8[_0x9532('0x2f')]['filter']+'%'};return _0x32c68d;})});}_0x8f45a0=_[_0x9532('0x3a')]({},_0x8f45a0,_0x1232d8[_0x9532('0x3e')]);return _0x55c8e1[_0x9532('0x4a')](_0x8f45a0);}})[_0x9532('0x24')](function(_0x9fcaa2){if(_0x9fcaa2){_0x1e21aa=_0x9fcaa2[_0x9532('0x35')];if(!_0x1232d8[_0x9532('0x2f')]['hasOwnProperty'](_0x9532('0x4b'))){_0x8f45a0[_0x9532('0x37')]=qs[_0x9532('0x37')](_0x1232d8[_0x9532('0x2f')][_0x9532('0x37')]);_0x8f45a0[_0x9532('0x1d')]=qs[_0x9532('0x1d')](_0x1232d8[_0x9532('0x2f')][_0x9532('0x1d')]);}return _0x55c8e1[_0x9532('0x4a')](_0x8f45a0);}})['then'](function(_0xfe64e5){if(_0xfe64e5){return _0xfe64e5?{'count':_0x1e21aa,'rows':_0xfe64e5}:null;}})[_0x9532('0x24')](respondWithResult(_0x4819d5,null))['catch'](handleError(_0x4819d5,null));};exports[_0x9532('0x4c')]=function(_0x3de690,_0x400bdf,_0x431391){var _0x4e18d6={};var _0xb028ee={};var _0x4d1426;var _0x3f48b8;return db[_0x9532('0x2a')][_0x9532('0x4d')]({'where':{'id':_0x3de690[_0x9532('0x44')]['id']}})['then'](handleEntityNotFound(_0x400bdf,null))[_0x9532('0x24')](function(_0x534c97){if(_0x534c97){_0x4d1426=_0x534c97;_0xb028ee[_0x9532('0x2e')]=_['keys'](db[_0x9532('0x49')][_0x9532('0x4e')]);_0xb028ee['query']=_[_0x9532('0x30')](_0x3de690[_0x9532('0x2f')]);_0xb028ee[_0x9532('0x31')]=_[_0x9532('0x33')](_0xb028ee['model'],_0xb028ee[_0x9532('0x2f')]);_0x4e18d6[_0x9532('0x32')]=_['intersection'](_0xb028ee[_0x9532('0x2e')],qs[_0x9532('0x34')](_0x3de690[_0x9532('0x2f')]['fields']));_0x4e18d6[_0x9532('0x32')]=_0x4e18d6[_0x9532('0x32')][_0x9532('0x35')]?_0x4e18d6[_0x9532('0x32')]:_0xb028ee[_0x9532('0x2e')];_0x4e18d6[_0x9532('0x38')]=qs[_0x9532('0x39')](_0x3de690[_0x9532('0x2f')][_0x9532('0x39')]);_0x4e18d6[_0x9532('0x3b')]=qs[_0x9532('0x31')](_[_0x9532('0x4f')](_0x3de690['query'],_0xb028ee['filters']));if(_0x3de690[_0x9532('0x2f')][_0x9532('0x3d')]){_0x4e18d6[_0x9532('0x3b')]=_['merge'](_0x4e18d6[_0x9532('0x3b')],{'$or':_[_0x9532('0x29')](_0x4e18d6[_0x9532('0x32')],function(_0x54ab52){var _0x56c612={};_0x56c612[_0x54ab52]={'$like':'%'+_0x3de690[_0x9532('0x2f')]['filter']+'%'};return _0x56c612;})});}_0x4e18d6=_[_0x9532('0x3a')]({},_0x4e18d6,_0x3de690[_0x9532('0x3e')]);return _0x4d1426[_0x9532('0x4c')](_0x4e18d6);}})[_0x9532('0x24')](function(_0x4a4597){if(_0x4a4597){_0x3f48b8=_0x4a4597[_0x9532('0x35')];if(!_0x3de690[_0x9532('0x2f')][_0x9532('0x36')](_0x9532('0x4b'))){_0x4e18d6[_0x9532('0x37')]=qs[_0x9532('0x37')](_0x3de690['query'][_0x9532('0x37')]);_0x4e18d6[_0x9532('0x1d')]=qs['offset'](_0x3de690[_0x9532('0x2f')]['offset']);}return _0x4d1426['getSubjects'](_0x4e18d6);}})[_0x9532('0x24')](function(_0x1b12cf){if(_0x1b12cf){return _0x1b12cf?{'count':_0x3f48b8,'rows':_0x1b12cf}:null;}})[_0x9532('0x24')](respondWithResult(_0x400bdf,null))['catch'](handleError(_0x400bdf,null));};exports[_0x9532('0x50')]=function(_0xc09a45,_0xf16f9e,_0x5f5c3a){var _0x49c4ed={};var _0x60ba8e={};var _0x4b9b08;var _0x4fd2f3;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0xc09a45['params']['id']}})['then'](handleEntityNotFound(_0xf16f9e,null))[_0x9532('0x24')](function(_0x2c24ef){if(_0x2c24ef){_0x4b9b08=_0x2c24ef;_0x60ba8e['model']=_['keys'](db[_0x9532('0x49')]['rawAttributes']);_0x60ba8e[_0x9532('0x2f')]=_[_0x9532('0x30')](_0xc09a45['query']);_0x60ba8e['filters']=_[_0x9532('0x33')](_0x60ba8e['model'],_0x60ba8e[_0x9532('0x2f')]);_0x49c4ed[_0x9532('0x32')]=_[_0x9532('0x33')](_0x60ba8e['model'],qs[_0x9532('0x34')](_0xc09a45['query'][_0x9532('0x34')]));_0x49c4ed[_0x9532('0x32')]=_0x49c4ed['attributes'][_0x9532('0x35')]?_0x49c4ed[_0x9532('0x32')]:_0x60ba8e[_0x9532('0x2e')];_0x49c4ed[_0x9532('0x38')]=qs['sort'](_0xc09a45['query']['sort']);_0x49c4ed['where']=qs[_0x9532('0x31')](_['pick'](_0xc09a45['query'],_0x60ba8e[_0x9532('0x31')]));if(_0xc09a45[_0x9532('0x2f')]['filter']){_0x49c4ed['where']=_['merge'](_0x49c4ed[_0x9532('0x3b')],{'$or':_[_0x9532('0x29')](_0x49c4ed['attributes'],function(_0x111fa1){var _0x3f165a={};_0x3f165a[_0x111fa1]={'$like':'%'+_0xc09a45['query'][_0x9532('0x3d')]+'%'};return _0x3f165a;})});}_0x49c4ed=_[_0x9532('0x3a')]({},_0x49c4ed,_0xc09a45['options']);return _0x4b9b08[_0x9532('0x50')](_0x49c4ed);}})[_0x9532('0x24')](function(_0x255149){if(_0x255149){_0x4fd2f3=_0x255149['length'];if(!_0xc09a45[_0x9532('0x2f')][_0x9532('0x36')]('nolimit')){_0x49c4ed['limit']=qs['limit'](_0xc09a45['query'][_0x9532('0x37')]);_0x49c4ed[_0x9532('0x1d')]=qs['offset'](_0xc09a45[_0x9532('0x2f')][_0x9532('0x1d')]);}return _0x4b9b08['getDescriptions'](_0x49c4ed);}})['then'](function(_0x1d6680){if(_0x1d6680){return _0x1d6680?{'count':_0x4fd2f3,'rows':_0x1d6680}:null;}})[_0x9532('0x24')](respondWithResult(_0xf16f9e,null))[_0x9532('0x42')](handleError(_0xf16f9e,null));};
\ No newline at end of file
index efb838b..038b979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c24=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash'];(function(_0x5d69cc,_0x3746cc){var _0x5a3a6d=function(_0x47b0bc){while(--_0x47b0bc){_0x5d69cc['push'](_0x5d69cc['shift']());}};_0x5a3a6d(++_0x3746cc);}(_0x1c24,0xa4));var _0x41c2=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x1c24[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x41c2('0x0'));var util=require(_0x41c2('0x1'));var logger=require(_0x41c2('0x2'))(_0x41c2('0x3'));var moment=require(_0x41c2('0x4'));var BPromise=require(_0x41c2('0x5'));var rp=require(_0x41c2('0x6'));var fs=require('fs');var path=require(_0x41c2('0x7'));var rimraf=require(_0x41c2('0x8'));var config=require(_0x41c2('0x9'));var attributes=require(_0x41c2('0xa'));module[_0x41c2('0xb')]=function(_0x3572d0,_0xa97101){return _0x3572d0[_0x41c2('0xc')](_0x41c2('0xd'),attributes,{'tableName':_0x41c2('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3272=['../../config/logger','moment','bluebird','path','rimraf','./intSalesforceConfiguration.attributes','exports','define','int_salesforce_configurations','util'];(function(_0x1c944b,_0x408a4b){var _0x3bfdeb=function(_0xc4c919){while(--_0xc4c919){_0x1c944b['push'](_0x1c944b['shift']());}};_0x3bfdeb(++_0x408a4b);}(_0x3272,0x77));var _0x2327=function(_0x5731a9,_0x5f5cdb){_0x5731a9=_0x5731a9-0x0;var _0x2d898a=_0x3272[_0x5731a9];return _0x2d898a;};'use strict';var _=require('lodash');var util=require(_0x2327('0x0'));var logger=require(_0x2327('0x1'))('api');var moment=require(_0x2327('0x2'));var BPromise=require(_0x2327('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2327('0x4'));var rimraf=require(_0x2327('0x5'));var config=require('../../config/environment');var attributes=require(_0x2327('0x6'));module[_0x2327('0x7')]=function(_0x227780,_0x54f4d4){return _0x227780[_0x2327('0x8')]('SalesforceConfiguration',attributes,{'tableName':_0x2327('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e770669..b4996c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6402=['jayson/promise','client','http','request','then','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','message','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2e4c09,_0xda1a53){var _0x58bf6a=function(_0x285f1e){while(--_0x285f1e){_0x2e4c09['push'](_0x2e4c09['shift']());}};_0x58bf6a(++_0xda1a53);}(_0x6402,0x172));var _0x2640=function(_0x38b678,_0x29ea42){_0x38b678=_0x38b678-0x0;var _0x2b0c45=_0x6402[_0x38b678];return _0x2b0c45;};'use strict';var _=require(_0x2640('0x0'));var util=require(_0x2640('0x1'));var moment=require('moment');var BPromise=require(_0x2640('0x2'));var rs=require(_0x2640('0x3'));var fs=require('fs');var Redis=require(_0x2640('0x4'));var db=require(_0x2640('0x5'))['db'];var utils=require(_0x2640('0x6'));var logger=require(_0x2640('0x7'))(_0x2640('0x8'));var config=require(_0x2640('0x9'));var jayson=require(_0x2640('0xa'));var client=jayson[_0x2640('0xb')][_0x2640('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5360fc,_0x474c0c,_0x113fc0){return new BPromise(function(_0x156a0c,_0x53fcb3){return client[_0x2640('0xd')](_0x5360fc,_0x113fc0)[_0x2640('0xe')](function(_0x3edd78){logger['info'](_0x2640('0xf'),_0x474c0c,_0x2640('0x10'));logger['debug'](_0x2640('0x11'),_0x474c0c,_0x2640('0x10'),JSON['stringify'](_0x3edd78));if(_0x3edd78['error']){if(_0x3edd78[_0x2640('0x12')]['code']===0x1f4){logger[_0x2640('0x12')](_0x2640('0xf'),_0x474c0c,_0x3edd78['error'][_0x2640('0x13')]);return _0x53fcb3(_0x3edd78[_0x2640('0x12')][_0x2640('0x13')]);}logger[_0x2640('0x12')](_0x2640('0xf'),_0x474c0c,_0x3edd78[_0x2640('0x12')][_0x2640('0x13')]);return _0x156a0c(_0x3edd78[_0x2640('0x12')][_0x2640('0x13')]);}else{logger['info'](_0x2640('0xf'),_0x474c0c,_0x2640('0x10'));_0x156a0c(_0x3edd78['result'][_0x2640('0x13')]);}})['catch'](function(_0x2d58a4){logger[_0x2640('0x12')](_0x2640('0xf'),_0x474c0c,_0x2d58a4);_0x53fcb3(_0x2d58a4);});});}
\ No newline at end of file
+var _0x526b=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util'];(function(_0x2fa889,_0x171858){var _0xccd52c=function(_0x37d555){while(--_0x37d555){_0x2fa889['push'](_0x2fa889['shift']());}};_0xccd52c(++_0x171858);}(_0x526b,0x71));var _0xb526=function(_0x2e776d,_0x3c24f0){_0x2e776d=_0x2e776d-0x0;var _0x41f409=_0x526b[_0x2e776d];return _0x41f409;};'use strict';var _=require(_0xb526('0x0'));var util=require(_0xb526('0x1'));var moment=require(_0xb526('0x2'));var BPromise=require('bluebird');var rs=require(_0xb526('0x3'));var fs=require('fs');var Redis=require(_0xb526('0x4'));var db=require(_0xb526('0x5'))['db'];var utils=require(_0xb526('0x6'));var logger=require(_0xb526('0x7'))(_0xb526('0x8'));var config=require(_0xb526('0x9'));var jayson=require(_0xb526('0xa'));var client=jayson[_0xb526('0xb')][_0xb526('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1a0eef,_0x53a7cd,_0x45b285){return new BPromise(function(_0x57167d,_0x26a83f){return client['request'](_0x1a0eef,_0x45b285)[_0xb526('0xd')](function(_0x19033c){logger['info'](_0xb526('0xe'),_0x53a7cd,'request\x20sent');logger[_0xb526('0xf')](_0xb526('0x10'),_0x53a7cd,_0xb526('0x11'),JSON['stringify'](_0x19033c));if(_0x19033c[_0xb526('0x12')]){if(_0x19033c[_0xb526('0x12')][_0xb526('0x13')]===0x1f4){logger[_0xb526('0x12')](_0xb526('0xe'),_0x53a7cd,_0x19033c['error'][_0xb526('0x14')]);return _0x26a83f(_0x19033c[_0xb526('0x12')]['message']);}logger[_0xb526('0x12')](_0xb526('0xe'),_0x53a7cd,_0x19033c[_0xb526('0x12')]['message']);return _0x57167d(_0x19033c[_0xb526('0x12')][_0xb526('0x14')]);}else{logger['info'](_0xb526('0xe'),_0x53a7cd,'request\x20sent');_0x57167d(_0x19033c[_0xb526('0x15')][_0xb526('0x14')]);}})[_0xb526('0x16')](function(_0x2ccece){logger[_0xb526('0x12')](_0xb526('0xe'),_0x53a7cd,_0x2ccece);_0x26a83f(_0x2ccece);});});}
\ No newline at end of file
index 3cedde1..593513f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d06=['update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x5f51aa,_0x4dc3ae){var _0x3d3f77=function(_0x3e068c){while(--_0x3e068c){_0x5f51aa['push'](_0x5f51aa['shift']());}};_0x3d3f77(++_0x4dc3ae);}(_0x5d06,0xed));var _0x65d0=function(_0x4a73fe,_0x501b59){_0x4a73fe=_0x4a73fe-0x0;var _0x318f86=_0x5d06[_0x4a73fe];return _0x318f86;};'use strict';var multer=require(_0x65d0('0x0'));var util=require('util');var path=require(_0x65d0('0x1'));var timeout=require(_0x65d0('0x2'));var express=require(_0x65d0('0x3'));var router=express[_0x65d0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x65d0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65d0('0x6'));var controller=require(_0x65d0('0x7'));router['get']('/',auth[_0x65d0('0x8')](),controller[_0x65d0('0x9')]);router[_0x65d0('0xa')](_0x65d0('0xb'),auth[_0x65d0('0x8')](),controller[_0x65d0('0xc')]);router[_0x65d0('0xd')]('/',auth[_0x65d0('0x8')](),controller[_0x65d0('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x65d0('0xf')]);router['delete']('/:id',auth[_0x65d0('0x8')](),controller[_0x65d0('0x10')]);module[_0x65d0('0x11')]=router;
\ No newline at end of file
+var _0xed1a=['isAuthenticated','index','get','/:id','show','post','create','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intSalesforceField.controller'];(function(_0x52dbcb,_0x344f7e){var _0x10bfe4=function(_0x4685c5){while(--_0x4685c5){_0x52dbcb['push'](_0x52dbcb['shift']());}};_0x10bfe4(++_0x344f7e);}(_0xed1a,0x77));var _0xaed1=function(_0x3d41ce,_0xef34a8){_0x3d41ce=_0x3d41ce-0x0;var _0x170f11=_0xed1a[_0x3d41ce];return _0x170f11;};'use strict';var multer=require(_0xaed1('0x0'));var util=require('util');var path=require(_0xaed1('0x1'));var timeout=require(_0xaed1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xaed1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xaed1('0x4'));var config=require(_0xaed1('0x5'));var controller=require(_0xaed1('0x6'));router['get']('/',auth[_0xaed1('0x7')](),controller[_0xaed1('0x8')]);router[_0xaed1('0x9')](_0xaed1('0xa'),auth[_0xaed1('0x7')](),controller[_0xaed1('0xb')]);router[_0xaed1('0xc')]('/',auth[_0xaed1('0x7')](),controller[_0xaed1('0xd')]);router['put'](_0xaed1('0xa'),auth[_0xaed1('0x7')](),controller[_0xaed1('0xe')]);router[_0xaed1('0xf')](_0xaed1('0xa'),auth[_0xaed1('0x7')](),controller[_0xaed1('0x10')]);module[_0xaed1('0x11')]=router;
\ No newline at end of file
index 2d76c5c..c47e76d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5677=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0x5677,0x1ca));var _0x7567=function(_0x5d3903,_0x3d6c3e){_0x5d3903=_0x5d3903-0x0;var _0x4b8bc9=_0x5677[_0x5d3903];return _0x4b8bc9;};'use strict';var Sequelize=require(_0x7567('0x0'));module[_0x7567('0x1')]={'type':{'type':Sequelize[_0x7567('0x2')](_0x7567('0x3'),_0x7567('0x4'),_0x7567('0x5'),_0x7567('0x6'),_0x7567('0x7')),'defaultValue':_0x7567('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7567('0x2')](_0x7567('0x3'),_0x7567('0x4'),_0x7567('0x5'))},'keyContent':{'type':Sequelize[_0x7567('0x8')]},'idField':{'type':Sequelize[_0x7567('0x8')]},'variableName':{'type':Sequelize[_0x7567('0x8')]}};
\ No newline at end of file
+var _0x575d=['picklist','STRING','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x5275a7,_0x1e1456){var _0xd694bb=function(_0x5bf859){while(--_0x5bf859){_0x5275a7['push'](_0x5275a7['shift']());}};_0xd694bb(++_0x1e1456);}(_0x575d,0x122));var _0xd575=function(_0x4e8368,_0x26436f){_0x4e8368=_0x4e8368-0x0;var _0x197516=_0x575d[_0x4e8368];return _0x197516;};'use strict';var Sequelize=require(_0xd575('0x0'));module[_0xd575('0x1')]={'type':{'type':Sequelize[_0xd575('0x2')](_0xd575('0x3'),_0xd575('0x4'),_0xd575('0x5'),'keyValue',_0xd575('0x6')),'defaultValue':_0xd575('0x3')},'content':{'type':Sequelize[_0xd575('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xd575('0x3'),_0xd575('0x4'),_0xd575('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xd575('0x7')]},'variableName':{'type':Sequelize[_0xd575('0x7')]}};
\ No newline at end of file
index 6b5ba49..3f757e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ca=['include','find','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','map','SalesforceField','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','options','findAll','catch','show','params','includeAll'];(function(_0x339db5,_0x441041){var _0x142ff8=function(_0x4c8ac0){while(--_0x4c8ac0){_0x339db5['push'](_0x339db5['shift']());}};_0x142ff8(++_0x441041);}(_0xa1ca,0x16d));var _0xaa1c=function(_0x2bddf9,_0x22c873){_0x2bddf9=_0x2bddf9-0x0;var _0x3f3ae9=_0xa1ca[_0x2bddf9];return _0x3f3ae9;};'use strict';var emlformat=require(_0xaa1c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaa1c('0x1'));var jsonpatch=require(_0xaa1c('0x2'));var rp=require(_0xaa1c('0x3'));var moment=require(_0xaa1c('0x4'));var BPromise=require(_0xaa1c('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xaa1c('0x6'));var sox=require(_0xaa1c('0x7'));var csv=require(_0xaa1c('0x8'));var ejs=require(_0xaa1c('0x9'));var fs=require('fs');var fs_extra=require(_0xaa1c('0xa'));var _=require(_0xaa1c('0xb'));var squel=require('squel');var crypto=require(_0xaa1c('0xc'));var jsforce=require(_0xaa1c('0xd'));var deskjs=require(_0xaa1c('0xe'));var toCsv=require(_0xaa1c('0x8'));var querystring=require(_0xaa1c('0xf'));var Papa=require(_0xaa1c('0x10'));var Redis=require('ioredis');var authService=require(_0xaa1c('0x11'));var qs=require(_0xaa1c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaa1c('0x13'));var logger=require(_0xaa1c('0x14'))('api');var utils=require(_0xaa1c('0x15'));var config=require(_0xaa1c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d4aac,_0x413fb8){_0x413fb8=_0x413fb8||0xcc;return function(_0x295df4){if(_0x295df4){return _0x1d4aac[_0xaa1c('0x17')](_0x413fb8);}return _0x1d4aac[_0xaa1c('0x18')](_0x413fb8)[_0xaa1c('0x19')]();};}function respondWithResult(_0x4d65eb,_0x2afdd5){_0x2afdd5=_0x2afdd5||0xc8;return function(_0x140ef6){if(_0x140ef6){return _0x4d65eb['status'](_0x2afdd5)['json'](_0x140ef6);}};}function respondWithFilteredResult(_0x29dbe2,_0x32f1c9){return function(_0x2eafdf){if(_0x2eafdf){var _0x5755c3=typeof _0x32f1c9[_0xaa1c('0x1a')]===_0xaa1c('0x1b')&&typeof _0x32f1c9[_0xaa1c('0x1c')]===_0xaa1c('0x1b');var _0x14a335=_0x2eafdf[_0xaa1c('0x1d')];var _0x40744e=_0x5755c3?0x0:_0x32f1c9['offset'];var _0x552d0e=_0x5755c3?_0x2eafdf[_0xaa1c('0x1d')]:_0x32f1c9[_0xaa1c('0x1a')]+_0x32f1c9[_0xaa1c('0x1c')];var _0x48b1bd;if(_0x552d0e>=_0x14a335){_0x552d0e=_0x14a335;_0x48b1bd=0xc8;}else{_0x48b1bd=0xce;}_0x29dbe2['status'](_0x48b1bd);return _0x29dbe2[_0xaa1c('0x1e')](_0xaa1c('0x1f'),_0x40744e+'-'+_0x552d0e+'/'+_0x14a335)['json'](_0x2eafdf);}return null;};}function patchUpdates(_0x449218){return function(_0x6838a6){try{jsonpatch[_0xaa1c('0x20')](_0x6838a6,_0x449218,!![]);}catch(_0x4dd5a7){return BPromise[_0xaa1c('0x21')](_0x4dd5a7);}return _0x6838a6[_0xaa1c('0x22')]();};}function saveUpdates(_0x3119f6,_0x132cd9){return function(_0x4667c2){if(_0x4667c2){return _0x4667c2[_0xaa1c('0x23')](_0x3119f6)[_0xaa1c('0x24')](function(_0x55a6eb){return _0x55a6eb;});}return null;};}function removeEntity(_0x117b29,_0x35d880){return function(_0x1fc96d){if(_0x1fc96d){return _0x1fc96d['destroy']()[_0xaa1c('0x24')](function(){_0x117b29['status'](0xcc)[_0xaa1c('0x19')]();});}};}function handleEntityNotFound(_0x43586e,_0x1d6252){return function(_0x336860){if(!_0x336860){_0x43586e[_0xaa1c('0x17')](0x194);}return _0x336860;};}function handleError(_0x1639a3,_0x4aab0e){_0x4aab0e=_0x4aab0e||0x1f4;return function(_0x5e479b){logger[_0xaa1c('0x25')](_0x5e479b['stack']);if(_0x5e479b[_0xaa1c('0x26')]){delete _0x5e479b[_0xaa1c('0x26')];}_0x1639a3[_0xaa1c('0x18')](_0x4aab0e)['send'](_0x5e479b);};}exports['index']=function(_0x38331c,_0x3b4a83){var _0x54ddcb={},_0x598425={},_0x4e53e6={'count':0x0,'rows':[]};var _0x3b1685=_[_0xaa1c('0x27')](db[_0xaa1c('0x28')][_0xaa1c('0x29')],function(_0x3811d9){return{'name':_0x3811d9[_0xaa1c('0x2a')],'type':_0x3811d9['type'][_0xaa1c('0x2b')]};});_0x598425['model']=_[_0xaa1c('0x27')](_0x3b1685,_0xaa1c('0x26'));_0x598425[_0xaa1c('0x2c')]=_[_0xaa1c('0x2d')](_0x38331c[_0xaa1c('0x2c')]);_0x598425[_0xaa1c('0x2e')]=_['intersection'](_0x598425[_0xaa1c('0x2f')],_0x598425[_0xaa1c('0x2c')]);_0x54ddcb[_0xaa1c('0x30')]=_[_0xaa1c('0x31')](_0x598425[_0xaa1c('0x2f')],qs['fields'](_0x38331c[_0xaa1c('0x2c')][_0xaa1c('0x32')]));_0x54ddcb['attributes']=_0x54ddcb[_0xaa1c('0x30')][_0xaa1c('0x33')]?_0x54ddcb[_0xaa1c('0x30')]:_0x598425[_0xaa1c('0x2f')];if(!_0x38331c[_0xaa1c('0x2c')][_0xaa1c('0x34')](_0xaa1c('0x35'))){_0x54ddcb['limit']=qs[_0xaa1c('0x1c')](_0x38331c['query'][_0xaa1c('0x1c')]);_0x54ddcb[_0xaa1c('0x1a')]=qs[_0xaa1c('0x1a')](_0x38331c['query'][_0xaa1c('0x1a')]);}_0x54ddcb[_0xaa1c('0x36')]=qs['sort'](_0x38331c[_0xaa1c('0x2c')][_0xaa1c('0x37')]);_0x54ddcb['where']=qs[_0xaa1c('0x2e')](_[_0xaa1c('0x38')](_0x38331c['query'],_0x598425[_0xaa1c('0x2e')]),_0x3b1685);if(_0x38331c[_0xaa1c('0x2c')][_0xaa1c('0x39')]){_0x54ddcb[_0xaa1c('0x3a')]=_['merge'](_0x54ddcb[_0xaa1c('0x3a')],{'$or':_[_0xaa1c('0x27')](_0x3b1685,function(_0x52c586){if(_0x52c586[_0xaa1c('0x3b')]!=='VIRTUAL'){var _0x25a000={};_0x25a000[_0x52c586[_0xaa1c('0x26')]]={'$like':'%'+_0x38331c[_0xaa1c('0x2c')][_0xaa1c('0x39')]+'%'};return _0x25a000;}})});}_0x54ddcb=_[_0xaa1c('0x3c')]({},_0x54ddcb,_0x38331c[_0xaa1c('0x3d')]);var _0x411565={'where':_0x54ddcb['where']};return db[_0xaa1c('0x28')]['count'](_0x411565)['then'](function(_0x208228){_0x4e53e6[_0xaa1c('0x1d')]=_0x208228;if(_0x38331c['query']['includeAll']){_0x54ddcb['include']=[{'all':!![]}];}return db['SalesforceField'][_0xaa1c('0x3e')](_0x54ddcb);})[_0xaa1c('0x24')](function(_0x507b0b){_0x4e53e6['rows']=_0x507b0b;return _0x4e53e6;})[_0xaa1c('0x24')](respondWithFilteredResult(_0x3b4a83,_0x54ddcb))[_0xaa1c('0x3f')](handleError(_0x3b4a83,null));};exports[_0xaa1c('0x40')]=function(_0xc5348c,_0x152e2b){var _0x47aaf0={'raw':!![],'where':{'id':_0xc5348c[_0xaa1c('0x41')]['id']}},_0x43088f={};_0x43088f[_0xaa1c('0x2f')]=_[_0xaa1c('0x2d')](db[_0xaa1c('0x28')][_0xaa1c('0x29')]);_0x43088f[_0xaa1c('0x2c')]=_[_0xaa1c('0x2d')](_0xc5348c[_0xaa1c('0x2c')]);_0x43088f['filters']=_['intersection'](_0x43088f[_0xaa1c('0x2f')],_0x43088f['query']);_0x47aaf0[_0xaa1c('0x30')]=_[_0xaa1c('0x31')](_0x43088f['model'],qs[_0xaa1c('0x32')](_0xc5348c[_0xaa1c('0x2c')][_0xaa1c('0x32')]));_0x47aaf0[_0xaa1c('0x30')]=_0x47aaf0[_0xaa1c('0x30')][_0xaa1c('0x33')]?_0x47aaf0[_0xaa1c('0x30')]:_0x43088f[_0xaa1c('0x2f')];if(_0xc5348c[_0xaa1c('0x2c')][_0xaa1c('0x42')]){_0x47aaf0[_0xaa1c('0x43')]=[{'all':!![]}];}_0x47aaf0=_[_0xaa1c('0x3c')]({},_0x47aaf0,_0xc5348c[_0xaa1c('0x3d')]);return db[_0xaa1c('0x28')][_0xaa1c('0x44')](_0x47aaf0)[_0xaa1c('0x24')](handleEntityNotFound(_0x152e2b,null))['then'](respondWithResult(_0x152e2b,null))[_0xaa1c('0x3f')](handleError(_0x152e2b,null));};exports[_0xaa1c('0x45')]=function(_0x1fb174,_0x51f611){return db[_0xaa1c('0x28')][_0xaa1c('0x45')](_0x1fb174[_0xaa1c('0x46')],{})[_0xaa1c('0x24')](respondWithResult(_0x51f611,0xc9))[_0xaa1c('0x3f')](handleError(_0x51f611,null));};exports[_0xaa1c('0x23')]=function(_0x27c4c0,_0x257410){if(_0x27c4c0[_0xaa1c('0x46')]['id']){delete _0x27c4c0[_0xaa1c('0x46')]['id'];}return db[_0xaa1c('0x28')][_0xaa1c('0x44')]({'where':{'id':_0x27c4c0['params']['id']}})[_0xaa1c('0x24')](handleEntityNotFound(_0x257410,null))[_0xaa1c('0x24')](saveUpdates(_0x27c4c0[_0xaa1c('0x46')],null))[_0xaa1c('0x24')](respondWithResult(_0x257410,null))['catch'](handleError(_0x257410,null));};exports[_0xaa1c('0x47')]=function(_0x19a117,_0x4b3bb8){return db[_0xaa1c('0x28')][_0xaa1c('0x44')]({'where':{'id':_0x19a117[_0xaa1c('0x41')]['id']}})[_0xaa1c('0x24')](handleEntityNotFound(_0x4b3bb8,null))[_0xaa1c('0x24')](removeEntity(_0x4b3bb8,null))[_0xaa1c('0x3f')](handleError(_0x4b3bb8,null));};
\ No newline at end of file
+var _0xa3e9=['order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceField','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length'];(function(_0x2594cb,_0x59c76d){var _0x4abac5=function(_0x15d297){while(--_0x15d297){_0x2594cb['push'](_0x2594cb['shift']());}};_0x4abac5(++_0x59c76d);}(_0xa3e9,0xa3));var _0x9a3e=function(_0x3a5d49,_0x1024ba){_0x3a5d49=_0x3a5d49-0x0;var _0x31e6f2=_0xa3e9[_0x3a5d49];return _0x31e6f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a3e('0x0'));var zipdir=require(_0x9a3e('0x1'));var jsonpatch=require(_0x9a3e('0x2'));var rp=require(_0x9a3e('0x3'));var moment=require(_0x9a3e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9a3e('0x5'));var util=require(_0x9a3e('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9a3e('0x7'));var fs=require('fs');var fs_extra=require(_0x9a3e('0x8'));var _=require(_0x9a3e('0x9'));var squel=require(_0x9a3e('0xa'));var crypto=require(_0x9a3e('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9a3e('0xc'));var toCsv=require(_0x9a3e('0xd'));var querystring=require(_0x9a3e('0xe'));var Papa=require('papaparse');var Redis=require(_0x9a3e('0xf'));var authService=require(_0x9a3e('0x10'));var qs=require(_0x9a3e('0x11'));var as=require(_0x9a3e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x9a3e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x9a3e('0x14'));var db=require(_0x9a3e('0x15'))['db'];function respondWithStatusCode(_0x3adbbb,_0x438141){_0x438141=_0x438141||0xcc;return function(_0x309f4c){if(_0x309f4c){return _0x3adbbb[_0x9a3e('0x16')](_0x438141);}return _0x3adbbb[_0x9a3e('0x17')](_0x438141)[_0x9a3e('0x18')]();};}function respondWithResult(_0x229992,_0x238896){_0x238896=_0x238896||0xc8;return function(_0x4ab50c){if(_0x4ab50c){return _0x229992[_0x9a3e('0x17')](_0x238896)[_0x9a3e('0x19')](_0x4ab50c);}};}function respondWithFilteredResult(_0x2f7e8c,_0x1fd493){return function(_0x7b4ce1){if(_0x7b4ce1){var _0x4604d8=typeof _0x1fd493[_0x9a3e('0x1a')]==='undefined'&&typeof _0x1fd493[_0x9a3e('0x1b')]===_0x9a3e('0x1c');var _0x4ee5c9=_0x7b4ce1[_0x9a3e('0x1d')];var _0x27a6d=_0x4604d8?0x0:_0x1fd493[_0x9a3e('0x1a')];var _0x286c5e=_0x4604d8?_0x7b4ce1[_0x9a3e('0x1d')]:_0x1fd493[_0x9a3e('0x1a')]+_0x1fd493['limit'];var _0x2c0700;if(_0x286c5e>=_0x4ee5c9){_0x286c5e=_0x4ee5c9;_0x2c0700=0xc8;}else{_0x2c0700=0xce;}_0x2f7e8c[_0x9a3e('0x17')](_0x2c0700);return _0x2f7e8c[_0x9a3e('0x1e')](_0x9a3e('0x1f'),_0x27a6d+'-'+_0x286c5e+'/'+_0x4ee5c9)['json'](_0x7b4ce1);}return null;};}function patchUpdates(_0x46fd2c){return function(_0x416d58){try{jsonpatch[_0x9a3e('0x20')](_0x416d58,_0x46fd2c,!![]);}catch(_0x5e6f3c){return BPromise[_0x9a3e('0x21')](_0x5e6f3c);}return _0x416d58[_0x9a3e('0x22')]();};}function saveUpdates(_0x5475ab,_0x559339){return function(_0x325c81){if(_0x325c81){return _0x325c81[_0x9a3e('0x23')](_0x5475ab)[_0x9a3e('0x24')](function(_0x315e3a){return _0x315e3a;});}return null;};}function removeEntity(_0x495bf0,_0x276a26){return function(_0x44a6dc){if(_0x44a6dc){return _0x44a6dc[_0x9a3e('0x25')]()[_0x9a3e('0x24')](function(){_0x495bf0[_0x9a3e('0x17')](0xcc)[_0x9a3e('0x18')]();});}};}function handleEntityNotFound(_0x5b5eed,_0x4332cc){return function(_0x26d53e){if(!_0x26d53e){_0x5b5eed[_0x9a3e('0x16')](0x194);}return _0x26d53e;};}function handleError(_0x5c9fe8,_0x43b347){_0x43b347=_0x43b347||0x1f4;return function(_0x2b25c1){logger[_0x9a3e('0x26')](_0x2b25c1[_0x9a3e('0x27')]);if(_0x2b25c1[_0x9a3e('0x28')]){delete _0x2b25c1[_0x9a3e('0x28')];}_0x5c9fe8[_0x9a3e('0x17')](_0x43b347)[_0x9a3e('0x29')](_0x2b25c1);};}exports[_0x9a3e('0x2a')]=function(_0x39946e,_0x4da0bd){var _0x3cb1d2={},_0x2b20bf={},_0x4998cf={'count':0x0,'rows':[]};var _0xff6355=_[_0x9a3e('0x2b')](db[_0x9a3e('0x2c')]['rawAttributes'],function(_0x364609){return{'name':_0x364609[_0x9a3e('0x2d')],'type':_0x364609[_0x9a3e('0x2e')][_0x9a3e('0x2f')]};});_0x2b20bf[_0x9a3e('0x30')]=_[_0x9a3e('0x2b')](_0xff6355,_0x9a3e('0x28'));_0x2b20bf[_0x9a3e('0x31')]=_[_0x9a3e('0x32')](_0x39946e[_0x9a3e('0x31')]);_0x2b20bf[_0x9a3e('0x33')]=_[_0x9a3e('0x34')](_0x2b20bf[_0x9a3e('0x30')],_0x2b20bf['query']);_0x3cb1d2['attributes']=_[_0x9a3e('0x34')](_0x2b20bf[_0x9a3e('0x30')],qs[_0x9a3e('0x35')](_0x39946e['query'][_0x9a3e('0x35')]));_0x3cb1d2[_0x9a3e('0x36')]=_0x3cb1d2['attributes'][_0x9a3e('0x37')]?_0x3cb1d2['attributes']:_0x2b20bf['model'];if(!_0x39946e['query']['hasOwnProperty']('nolimit')){_0x3cb1d2[_0x9a3e('0x1b')]=qs[_0x9a3e('0x1b')](_0x39946e['query']['limit']);_0x3cb1d2[_0x9a3e('0x1a')]=qs[_0x9a3e('0x1a')](_0x39946e[_0x9a3e('0x31')][_0x9a3e('0x1a')]);}_0x3cb1d2[_0x9a3e('0x38')]=qs[_0x9a3e('0x39')](_0x39946e[_0x9a3e('0x31')]['sort']);_0x3cb1d2['where']=qs['filters'](_[_0x9a3e('0x3a')](_0x39946e[_0x9a3e('0x31')],_0x2b20bf['filters']),_0xff6355);if(_0x39946e[_0x9a3e('0x31')][_0x9a3e('0x3b')]){_0x3cb1d2[_0x9a3e('0x3c')]=_[_0x9a3e('0x3d')](_0x3cb1d2['where'],{'$or':_[_0x9a3e('0x2b')](_0xff6355,function(_0x5a5b59){if(_0x5a5b59['type']!=='VIRTUAL'){var _0xc8a738={};_0xc8a738[_0x5a5b59[_0x9a3e('0x28')]]={'$like':'%'+_0x39946e['query'][_0x9a3e('0x3b')]+'%'};return _0xc8a738;}})});}_0x3cb1d2=_[_0x9a3e('0x3d')]({},_0x3cb1d2,_0x39946e[_0x9a3e('0x3e')]);var _0x32afe3={'where':_0x3cb1d2[_0x9a3e('0x3c')]};return db[_0x9a3e('0x2c')][_0x9a3e('0x1d')](_0x32afe3)[_0x9a3e('0x24')](function(_0x18174f){_0x4998cf['count']=_0x18174f;if(_0x39946e['query'][_0x9a3e('0x3f')]){_0x3cb1d2[_0x9a3e('0x40')]=[{'all':!![]}];}return db[_0x9a3e('0x2c')][_0x9a3e('0x41')](_0x3cb1d2);})[_0x9a3e('0x24')](function(_0x3f4f58){_0x4998cf[_0x9a3e('0x42')]=_0x3f4f58;return _0x4998cf;})[_0x9a3e('0x24')](respondWithFilteredResult(_0x4da0bd,_0x3cb1d2))[_0x9a3e('0x43')](handleError(_0x4da0bd,null));};exports[_0x9a3e('0x44')]=function(_0x3abcb7,_0x287901){var _0x3f5e0b={'raw':!![],'where':{'id':_0x3abcb7[_0x9a3e('0x45')]['id']}},_0x53ddaf={};_0x53ddaf[_0x9a3e('0x30')]=_[_0x9a3e('0x32')](db['SalesforceField']['rawAttributes']);_0x53ddaf[_0x9a3e('0x31')]=_[_0x9a3e('0x32')](_0x3abcb7[_0x9a3e('0x31')]);_0x53ddaf['filters']=_[_0x9a3e('0x34')](_0x53ddaf[_0x9a3e('0x30')],_0x53ddaf['query']);_0x3f5e0b[_0x9a3e('0x36')]=_[_0x9a3e('0x34')](_0x53ddaf[_0x9a3e('0x30')],qs[_0x9a3e('0x35')](_0x3abcb7[_0x9a3e('0x31')][_0x9a3e('0x35')]));_0x3f5e0b[_0x9a3e('0x36')]=_0x3f5e0b[_0x9a3e('0x36')][_0x9a3e('0x37')]?_0x3f5e0b['attributes']:_0x53ddaf[_0x9a3e('0x30')];if(_0x3abcb7['query']['includeAll']){_0x3f5e0b[_0x9a3e('0x40')]=[{'all':!![]}];}_0x3f5e0b=_[_0x9a3e('0x3d')]({},_0x3f5e0b,_0x3abcb7[_0x9a3e('0x3e')]);return db[_0x9a3e('0x2c')][_0x9a3e('0x46')](_0x3f5e0b)[_0x9a3e('0x24')](handleEntityNotFound(_0x287901,null))[_0x9a3e('0x24')](respondWithResult(_0x287901,null))[_0x9a3e('0x43')](handleError(_0x287901,null));};exports[_0x9a3e('0x47')]=function(_0xcda147,_0x1a6388){return db[_0x9a3e('0x2c')][_0x9a3e('0x47')](_0xcda147[_0x9a3e('0x48')],{})[_0x9a3e('0x24')](respondWithResult(_0x1a6388,0xc9))['catch'](handleError(_0x1a6388,null));};exports[_0x9a3e('0x23')]=function(_0x2b16b0,_0xf7e66){if(_0x2b16b0['body']['id']){delete _0x2b16b0[_0x9a3e('0x48')]['id'];}return db[_0x9a3e('0x2c')]['find']({'where':{'id':_0x2b16b0[_0x9a3e('0x45')]['id']}})[_0x9a3e('0x24')](handleEntityNotFound(_0xf7e66,null))[_0x9a3e('0x24')](saveUpdates(_0x2b16b0[_0x9a3e('0x48')],null))['then'](respondWithResult(_0xf7e66,null))[_0x9a3e('0x43')](handleError(_0xf7e66,null));};exports['destroy']=function(_0x54596a,_0x18d9d4){return db[_0x9a3e('0x2c')][_0x9a3e('0x46')]({'where':{'id':_0x54596a[_0x9a3e('0x45')]['id']}})[_0x9a3e('0x24')](handleEntityNotFound(_0x18d9d4,null))['then'](removeEntity(_0x18d9d4,null))[_0x9a3e('0x43')](handleError(_0x18d9d4,null));};
\ No newline at end of file
index 77b17d4..940e71d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d59=['define','SalesforceField','int_salesforce_fields','salesforce_unique_index','FieldId','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports'];(function(_0x29fd90,_0x169c41){var _0x4e4691=function(_0x2e2b99){while(--_0x2e2b99){_0x29fd90['push'](_0x29fd90['shift']());}};_0x4e4691(++_0x169c41);}(_0x7d59,0x67));var _0x97d5=function(_0x1a1128,_0x1784d8){_0x1a1128=_0x1a1128-0x0;var _0x1f5bd2=_0x7d59[_0x1a1128];return _0x1f5bd2;};'use strict';var _=require(_0x97d5('0x0'));var util=require('util');var logger=require(_0x97d5('0x1'))('api');var moment=require(_0x97d5('0x2'));var BPromise=require('bluebird');var rp=require(_0x97d5('0x3'));var fs=require('fs');var path=require(_0x97d5('0x4'));var rimraf=require(_0x97d5('0x5'));var config=require(_0x97d5('0x6'));var attributes=require(_0x97d5('0x7'));module[_0x97d5('0x8')]=function(_0x5e939e,_0x23e9e5){return _0x5e939e[_0x97d5('0x9')](_0x97d5('0xa'),attributes,{'tableName':_0x97d5('0xb'),'paranoid':![],'indexes':[{'name':_0x97d5('0xc'),'fields':['idField',_0x97d5('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x423c=['idField','FieldId','util','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','SalesforceField','int_salesforce_fields','salesforce_unique_index'];(function(_0x36d45b,_0x417426){var _0x3dc01c=function(_0x37d04b){while(--_0x37d04b){_0x36d45b['push'](_0x36d45b['shift']());}};_0x3dc01c(++_0x417426);}(_0x423c,0x13a));var _0xc423=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x423c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc423('0x0'));var logger=require(_0xc423('0x1'))(_0xc423('0x2'));var moment=require('moment');var BPromise=require(_0xc423('0x3'));var rp=require(_0xc423('0x4'));var fs=require('fs');var path=require(_0xc423('0x5'));var rimraf=require(_0xc423('0x6'));var config=require('../../config/environment');var attributes=require('./intSalesforceField.attributes');module[_0xc423('0x7')]=function(_0x2730d8,_0x1331e5){return _0x2730d8['define'](_0xc423('0x8'),attributes,{'tableName':_0xc423('0x9'),'paranoid':![],'indexes':[{'name':_0xc423('0xa'),'fields':[_0xc423('0xb'),_0xc423('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0fa417c..c0c28a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbadf=['result','catch','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SalesforceField,\x20%s,\x20%s'];(function(_0x11f9ab,_0x31683f){var _0x4b7d8c=function(_0x49dabe){while(--_0x49dabe){_0x11f9ab['push'](_0x11f9ab['shift']());}};_0x4b7d8c(++_0x31683f);}(_0xbadf,0xb6));var _0xfbad=function(_0x3fe1ba,_0x1a33c5){_0x3fe1ba=_0x3fe1ba-0x0;var _0x5df1b4=_0xbadf[_0x3fe1ba];return _0x5df1b4;};'use strict';var _=require(_0xfbad('0x0'));var util=require('util');var moment=require(_0xfbad('0x1'));var BPromise=require('bluebird');var rs=require(_0xfbad('0x2'));var fs=require('fs');var Redis=require(_0xfbad('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfbad('0x4'));var logger=require('../../config/logger')(_0xfbad('0x5'));var config=require(_0xfbad('0x6'));var jayson=require(_0xfbad('0x7'));var client=jayson[_0xfbad('0x8')][_0xfbad('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1bcfd8,_0x54e626,_0x390b7a){return new BPromise(function(_0x3002c2,_0x2e800b){return client['request'](_0x1bcfd8,_0x390b7a)['then'](function(_0x776049){logger[_0xfbad('0xa')]('SalesforceField,\x20%s,\x20%s',_0x54e626,_0xfbad('0xb'));logger['debug'](_0xfbad('0xc'),_0x54e626,_0xfbad('0xb'),JSON[_0xfbad('0xd')](_0x776049));if(_0x776049[_0xfbad('0xe')]){if(_0x776049[_0xfbad('0xe')][_0xfbad('0xf')]===0x1f4){logger[_0xfbad('0xe')]('SalesforceField,\x20%s,\x20%s',_0x54e626,_0x776049['error'][_0xfbad('0x10')]);return _0x2e800b(_0x776049['error'][_0xfbad('0x10')]);}logger['error'](_0xfbad('0x11'),_0x54e626,_0x776049['error']['message']);return _0x3002c2(_0x776049['error']['message']);}else{logger['info'](_0xfbad('0x11'),_0x54e626,'request\x20sent');_0x3002c2(_0x776049[_0xfbad('0x12')]['message']);}})[_0xfbad('0x13')](function(_0x598f51){logger[_0xfbad('0xe')](_0xfbad('0x11'),_0x54e626,_0x598f51);_0x2e800b(_0x598f51);});});}
\ No newline at end of file
+var _0x0e23=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','error','code','SalesforceField,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x4e1361,_0x577d3e){var _0xe1f0ca=function(_0x52f9a5){while(--_0x52f9a5){_0x4e1361['push'](_0x4e1361['shift']());}};_0xe1f0ca(++_0x577d3e);}(_0x0e23,0x104));var _0x30e2=function(_0x14f483,_0xa4f335){_0x14f483=_0x14f483-0x0;var _0x27b0a9=_0x0e23[_0x14f483];return _0x27b0a9;};'use strict';var _=require('lodash');var util=require(_0x30e2('0x0'));var moment=require(_0x30e2('0x1'));var BPromise=require(_0x30e2('0x2'));var rs=require(_0x30e2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x30e2('0x4'));var logger=require(_0x30e2('0x5'))(_0x30e2('0x6'));var config=require(_0x30e2('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x30e2('0x8')][_0x30e2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d59ca,_0x228edf,_0xc216ad){return new BPromise(function(_0x5e31de,_0x2a4cf5){return client[_0x30e2('0xa')](_0x1d59ca,_0xc216ad)[_0x30e2('0xb')](function(_0x5a5e7d){logger[_0x30e2('0xc')]('SalesforceField,\x20%s,\x20%s',_0x228edf,_0x30e2('0xd'));logger[_0x30e2('0xe')](_0x30e2('0xf'),_0x228edf,_0x30e2('0xd'),JSON['stringify'](_0x5a5e7d));if(_0x5a5e7d[_0x30e2('0x10')]){if(_0x5a5e7d['error'][_0x30e2('0x11')]===0x1f4){logger['error'](_0x30e2('0x12'),_0x228edf,_0x5a5e7d[_0x30e2('0x10')][_0x30e2('0x13')]);return _0x2a4cf5(_0x5a5e7d[_0x30e2('0x10')][_0x30e2('0x13')]);}logger[_0x30e2('0x10')](_0x30e2('0x12'),_0x228edf,_0x5a5e7d[_0x30e2('0x10')][_0x30e2('0x13')]);return _0x5e31de(_0x5a5e7d[_0x30e2('0x10')][_0x30e2('0x13')]);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x228edf,_0x30e2('0xd'));_0x5e31de(_0x5a5e7d[_0x30e2('0x14')]['message']);}})[_0x30e2('0x15')](function(_0x459c2d){logger['error'](_0x30e2('0x12'),_0x228edf,_0x459c2d);_0x2a4cf5(_0x459c2d);});});}
\ No newline at end of file
index d62bf87..1970092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['getConfigurations','/:id/configurations','addConfiguration','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x7af2,0x119));var _0x27af=function(_0x2798d5,_0x398a0a){_0x2798d5=_0x2798d5-0x0;var _0x3cb51f=_0x7af2[_0x2798d5];return _0x3cb51f;};'use strict';var multer=require('multer');var util=require(_0x27af('0x0'));var path=require(_0x27af('0x1'));var timeout=require(_0x27af('0x2'));var express=require(_0x27af('0x3'));var router=express['Router']();var fs_extra=require(_0x27af('0x4'));var auth=require(_0x27af('0x5'));var interaction=require(_0x27af('0x6'));var config=require(_0x27af('0x7'));var controller=require(_0x27af('0x8'));router[_0x27af('0x9')]('/',auth[_0x27af('0xa')](),controller[_0x27af('0xb')]);router[_0x27af('0x9')]('/:id',auth[_0x27af('0xa')](),controller[_0x27af('0xc')]);router[_0x27af('0x9')]('/:id/configurations',auth[_0x27af('0xa')](),controller[_0x27af('0xd')]);router[_0x27af('0x9')]('/:id/fields',auth[_0x27af('0xa')](),controller['getFields']);router['post']('/',auth[_0x27af('0xa')](),controller['create']);router['post'](_0x27af('0xe'),auth['isAuthenticated'](),controller[_0x27af('0xf')]);router['put'](_0x27af('0x10'),auth[_0x27af('0xa')](),controller[_0x27af('0x11')]);router[_0x27af('0x12')](_0x27af('0x10'),auth[_0x27af('0xa')](),controller[_0x27af('0x13')]);module[_0x27af('0x14')]=router;
\ No newline at end of file
+var _0x6343=['../../components/interaction/service','./intServicenowAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','update','delete','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x1f2971,_0x23aeff){var _0x4c19e1=function(_0x58e564){while(--_0x58e564){_0x1f2971['push'](_0x1f2971['shift']());}};_0x4c19e1(++_0x23aeff);}(_0x6343,0x1e9));var _0x3634=function(_0x16c5ea,_0xeb1b66){_0x16c5ea=_0x16c5ea-0x0;var _0x36e299=_0x6343[_0x16c5ea];return _0x36e299;};'use strict';var multer=require('multer');var util=require(_0x3634('0x0'));var path=require(_0x3634('0x1'));var timeout=require(_0x3634('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3634('0x3'));var auth=require(_0x3634('0x4'));var interaction=require(_0x3634('0x5'));var config=require('../../config/environment');var controller=require(_0x3634('0x6'));router[_0x3634('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x3634('0x8'),auth[_0x3634('0x9')](),controller[_0x3634('0xa')]);router[_0x3634('0x7')](_0x3634('0xb'),auth[_0x3634('0x9')](),controller[_0x3634('0xc')]);router[_0x3634('0x7')](_0x3634('0xd'),auth[_0x3634('0x9')](),controller[_0x3634('0xe')]);router[_0x3634('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x3634('0x9')](),controller['addConfiguration']);router[_0x3634('0x10')](_0x3634('0x8'),auth[_0x3634('0x9')](),controller[_0x3634('0x11')]);router[_0x3634('0x12')](_0x3634('0x8'),auth[_0x3634('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 31a0717..0b46af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ecc=['STRING','remoteUri','exports'];(function(_0x4664db,_0x1de672){var _0x5615b4=function(_0x54fb5a){while(--_0x54fb5a){_0x4664db['push'](_0x4664db['shift']());}};_0x5615b4(++_0x1de672);}(_0x4ecc,0xa4));var _0xc4ec=function(_0x2355a4,_0xc0b80d){_0x2355a4=_0x2355a4-0x0;var _0xe22dd=_0x4ecc[_0x2355a4];return _0xe22dd;};'use strict';var Sequelize=require('sequelize');module[_0xc4ec('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc4ec('0x1')]},'username':{'type':Sequelize[_0xc4ec('0x1')],'unique':'username'},'password':{'type':Sequelize[_0xc4ec('0x1')]},'email':{'type':Sequelize[_0xc4ec('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xc4ec('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x8aab=['STRING'];(function(_0x235f31,_0x50a5c8){var _0x46cf55=function(_0x274343){while(--_0x274343){_0x235f31['push'](_0x235f31['shift']());}};_0x46cf55(++_0x50a5c8);}(_0x8aab,0x1c7));var _0xb8aa=function(_0xfa6e3a,_0x42ad48){_0xfa6e3a=_0xfa6e3a-0x0;var _0x22a150=_0x8aab[_0xfa6e3a];return _0x22a150;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb8aa('0x0')]},'description':{'type':Sequelize[_0xb8aa('0x0')]},'username':{'type':Sequelize[_0xb8aa('0x0')],'unique':'username'},'password':{'type':Sequelize[_0xb8aa('0x0')]},'email':{'type':Sequelize[_0xb8aa('0x0')]},'remoteUri':{'type':Sequelize[_0xb8aa('0x0')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xb8aa('0x0')],'allowNull':![]}};
\ No newline at end of file
index d143d1f..a464a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc761=['sys_created_on','sys_domain','state','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','group_list','work_end','resolved_at','caller_id','approval_set','work_notes','short_description','close_code','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','reassignment_count','assigned_to','sla_due','comments_and_work_notes','sys_tags','escalation','upon_approval','correlation_id','remoteUri','format','%s/api/now/doc/table/schema/','%s/api/now/table/','password','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','includes','internalType','label','push','all','assign','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','boolean','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','ServicenowAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','includeAll','include','rows','catch','show','params','keys','find','create','body','destroy','getConfigurations','findOne','ServicenowConfiguration','pick','Subjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','notify','incident_state','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','number','resolved_by','sys_updated_by','opened_by','user_input'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0xc761,0x105));var _0x1c76=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc761[_0x1caf6a];return _0x1bf493;};'use strict';var emlformat=require(_0x1c76('0x0'));var rimraf=require(_0x1c76('0x1'));var zipdir=require(_0x1c76('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1c76('0x3'));var moment=require('moment');var BPromise=require(_0x1c76('0x4'));var Mustache=require('mustache');var util=require(_0x1c76('0x5'));var path=require('path');var sox=require(_0x1c76('0x6'));var csv=require(_0x1c76('0x7'));var ejs=require(_0x1c76('0x8'));var fs=require('fs');var fs_extra=require(_0x1c76('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1c76('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x1c76('0x7'));var querystring=require(_0x1c76('0xb'));var Papa=require(_0x1c76('0xc'));var Redis=require(_0x1c76('0xd'));var authService=require(_0x1c76('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x1c76('0xf'));var hardwareService=require(_0x1c76('0x10'));var logger=require(_0x1c76('0x11'))(_0x1c76('0x12'));var utils=require(_0x1c76('0x13'));var config=require(_0x1c76('0x14'));var licenseUtil=require(_0x1c76('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x1c76('0x16'));function respondWithStatusCode(_0x5a2165,_0x13ee61){_0x13ee61=_0x13ee61||0xcc;return function(_0x5f2013){if(_0x5f2013){return _0x5a2165[_0x1c76('0x17')](_0x13ee61);}return _0x5a2165[_0x1c76('0x18')](_0x13ee61)[_0x1c76('0x19')]();};}function respondWithResult(_0x2c9acd,_0x3d5b4a){_0x3d5b4a=_0x3d5b4a||0xc8;return function(_0x15b77d){if(_0x15b77d){return _0x2c9acd[_0x1c76('0x18')](_0x3d5b4a)[_0x1c76('0x1a')](_0x15b77d);}};}function respondWithFilteredResult(_0x2a84fc,_0x4f6b55){return function(_0xe3972e){if(_0xe3972e){var _0x479407=typeof _0x4f6b55[_0x1c76('0x1b')]===_0x1c76('0x1c')&&typeof _0x4f6b55[_0x1c76('0x1d')]===_0x1c76('0x1c');var _0x433be5=_0xe3972e['count'];var _0x3ae9e1=_0x479407?0x0:_0x4f6b55[_0x1c76('0x1b')];var _0x1ca0d9=_0x479407?_0xe3972e[_0x1c76('0x1e')]:_0x4f6b55[_0x1c76('0x1b')]+_0x4f6b55[_0x1c76('0x1d')];var _0x2f96ab;if(_0x1ca0d9>=_0x433be5){_0x1ca0d9=_0x433be5;_0x2f96ab=0xc8;}else{_0x2f96ab=0xce;}_0x2a84fc['status'](_0x2f96ab);return _0x2a84fc['set'](_0x1c76('0x1f'),_0x3ae9e1+'-'+_0x1ca0d9+'/'+_0x433be5)[_0x1c76('0x1a')](_0xe3972e);}return null;};}function patchUpdates(_0x4d41ad){return function(_0x156758){try{jsonpatch[_0x1c76('0x20')](_0x156758,_0x4d41ad,!![]);}catch(_0x506996){return BPromise[_0x1c76('0x21')](_0x506996);}return _0x156758[_0x1c76('0x22')]();};}function saveUpdates(_0xc5e7ce,_0x25dac8){return function(_0x548550){if(_0x548550){return _0x548550[_0x1c76('0x23')](_0xc5e7ce)[_0x1c76('0x24')](function(_0x4b2d7e){return _0x4b2d7e;});}return null;};}function removeEntity(_0x579bfc,_0x584de8){return function(_0x2cd2a9){if(_0x2cd2a9){return _0x2cd2a9['destroy']()[_0x1c76('0x24')](function(){_0x579bfc[_0x1c76('0x18')](0xcc)[_0x1c76('0x19')]();});}};}function handleEntityNotFound(_0x4b192d,_0x16710d){return function(_0x91da5e){if(!_0x91da5e){_0x4b192d['sendStatus'](0x194);}return _0x91da5e;};}function handleError(_0x327e85,_0x591bc3){_0x591bc3=_0x591bc3||0x1f4;return function(_0x50a88b){logger[_0x1c76('0x25')](_0x50a88b[_0x1c76('0x26')]);if(_0x50a88b[_0x1c76('0x27')]){delete _0x50a88b['name'];}_0x327e85[_0x1c76('0x18')](_0x591bc3)[_0x1c76('0x28')](_0x50a88b);};}exports[_0x1c76('0x29')]=function(_0x180d9e,_0x4174fc){var _0x336227={},_0x23a9e1={},_0x55b471={'count':0x0,'rows':[]};var _0x35b72e=_[_0x1c76('0x2a')](db[_0x1c76('0x2b')][_0x1c76('0x2c')],function(_0x9dae8e){return{'name':_0x9dae8e[_0x1c76('0x2d')],'type':_0x9dae8e['type'][_0x1c76('0x2e')]};});_0x23a9e1[_0x1c76('0x2f')]=_['map'](_0x35b72e,_0x1c76('0x27'));_0x23a9e1[_0x1c76('0x30')]=_['keys'](_0x180d9e[_0x1c76('0x30')]);_0x23a9e1[_0x1c76('0x31')]=_[_0x1c76('0x32')](_0x23a9e1[_0x1c76('0x2f')],_0x23a9e1[_0x1c76('0x30')]);_0x336227[_0x1c76('0x33')]=_['intersection'](_0x23a9e1[_0x1c76('0x2f')],qs['fields'](_0x180d9e[_0x1c76('0x30')][_0x1c76('0x34')]));_0x336227[_0x1c76('0x33')]=_0x336227[_0x1c76('0x33')][_0x1c76('0x35')]?_0x336227['attributes']:_0x23a9e1[_0x1c76('0x2f')];if(!_0x180d9e[_0x1c76('0x30')][_0x1c76('0x36')](_0x1c76('0x37'))){_0x336227[_0x1c76('0x1d')]=qs[_0x1c76('0x1d')](_0x180d9e['query'][_0x1c76('0x1d')]);_0x336227['offset']=qs[_0x1c76('0x1b')](_0x180d9e['query'][_0x1c76('0x1b')]);}_0x336227[_0x1c76('0x38')]=qs[_0x1c76('0x39')](_0x180d9e[_0x1c76('0x30')][_0x1c76('0x39')]);_0x336227[_0x1c76('0x3a')]=qs[_0x1c76('0x31')](_['pick'](_0x180d9e[_0x1c76('0x30')],_0x23a9e1[_0x1c76('0x31')]),_0x35b72e);if(_0x180d9e[_0x1c76('0x30')][_0x1c76('0x3b')]){_0x336227['where']=_[_0x1c76('0x3c')](_0x336227[_0x1c76('0x3a')],{'$or':_[_0x1c76('0x2a')](_0x35b72e,function(_0x3837fc){if(_0x3837fc[_0x1c76('0x3d')]!=='VIRTUAL'){var _0x524825={};_0x524825[_0x3837fc[_0x1c76('0x27')]]={'$like':'%'+_0x180d9e[_0x1c76('0x30')]['filter']+'%'};return _0x524825;}})});}_0x336227=_['merge']({},_0x336227,_0x180d9e[_0x1c76('0x3e')]);var _0x5b6509={'where':_0x336227[_0x1c76('0x3a')]};return db[_0x1c76('0x2b')][_0x1c76('0x1e')](_0x5b6509)['then'](function(_0x5c2231){_0x55b471[_0x1c76('0x1e')]=_0x5c2231;if(_0x180d9e[_0x1c76('0x30')][_0x1c76('0x3f')]){_0x336227[_0x1c76('0x40')]=[{'all':!![]}];}return db[_0x1c76('0x2b')]['findAll'](_0x336227);})[_0x1c76('0x24')](function(_0x395638){_0x55b471[_0x1c76('0x41')]=_0x395638;return _0x55b471;})[_0x1c76('0x24')](respondWithFilteredResult(_0x4174fc,_0x336227))[_0x1c76('0x42')](handleError(_0x4174fc,null));};exports[_0x1c76('0x43')]=function(_0x40446b,_0x6ba55e){var _0x39c60f={'raw':![],'where':{'id':_0x40446b[_0x1c76('0x44')]['id']}},_0x43af81={};_0x43af81[_0x1c76('0x2f')]=_[_0x1c76('0x45')](db[_0x1c76('0x2b')][_0x1c76('0x2c')]);_0x43af81[_0x1c76('0x30')]=_['keys'](_0x40446b[_0x1c76('0x30')]);_0x43af81['filters']=_[_0x1c76('0x32')](_0x43af81[_0x1c76('0x2f')],_0x43af81[_0x1c76('0x30')]);_0x39c60f[_0x1c76('0x33')]=_[_0x1c76('0x32')](_0x43af81['model'],qs['fields'](_0x40446b[_0x1c76('0x30')][_0x1c76('0x34')]));_0x39c60f[_0x1c76('0x33')]=_0x39c60f['attributes'][_0x1c76('0x35')]?_0x39c60f[_0x1c76('0x33')]:_0x43af81['model'];if(_0x40446b[_0x1c76('0x30')][_0x1c76('0x3f')]){_0x39c60f[_0x1c76('0x40')]=[{'all':!![]}];}_0x39c60f=_['merge']({},_0x39c60f,_0x40446b[_0x1c76('0x3e')]);return db['ServicenowAccount'][_0x1c76('0x46')](_0x39c60f)[_0x1c76('0x24')](handleEntityNotFound(_0x6ba55e,null))['then'](respondWithResult(_0x6ba55e,null))[_0x1c76('0x42')](handleError(_0x6ba55e,null));};exports[_0x1c76('0x47')]=function(_0x377fc5,_0x49a770){return db[_0x1c76('0x2b')]['create'](_0x377fc5['body'],{})['then'](respondWithResult(_0x49a770,0xc9))[_0x1c76('0x42')](handleError(_0x49a770,null));};exports[_0x1c76('0x23')]=function(_0x162a0e,_0x3ce02f){if(_0x162a0e[_0x1c76('0x48')]['id']){delete _0x162a0e[_0x1c76('0x48')]['id'];}return db[_0x1c76('0x2b')][_0x1c76('0x46')]({'where':{'id':_0x162a0e[_0x1c76('0x44')]['id']}})['then'](handleEntityNotFound(_0x3ce02f,null))[_0x1c76('0x24')](saveUpdates(_0x162a0e[_0x1c76('0x48')],null))[_0x1c76('0x24')](respondWithResult(_0x3ce02f,null))[_0x1c76('0x42')](handleError(_0x3ce02f,null));};exports[_0x1c76('0x49')]=function(_0x31393e,_0x876774){return db['ServicenowAccount'][_0x1c76('0x46')]({'where':{'id':_0x31393e['params']['id']}})['then'](handleEntityNotFound(_0x876774,null))[_0x1c76('0x24')](removeEntity(_0x876774,null))[_0x1c76('0x42')](handleError(_0x876774,null));};exports[_0x1c76('0x4a')]=function(_0x5541d1,_0x5bffef,_0x4b72b4){var _0x58421a={};var _0x21d00d={};var _0x4f61a;var _0x30cf5d;return db[_0x1c76('0x2b')][_0x1c76('0x4b')]({'where':{'id':_0x5541d1[_0x1c76('0x44')]['id']}})[_0x1c76('0x24')](handleEntityNotFound(_0x5bffef,null))[_0x1c76('0x24')](function(_0x44e098){if(_0x44e098){_0x4f61a=_0x44e098;_0x21d00d[_0x1c76('0x2f')]=_['keys'](db[_0x1c76('0x4c')][_0x1c76('0x2c')]);_0x21d00d[_0x1c76('0x30')]=_[_0x1c76('0x45')](_0x5541d1[_0x1c76('0x30')]);_0x21d00d[_0x1c76('0x31')]=_[_0x1c76('0x32')](_0x21d00d[_0x1c76('0x2f')],_0x21d00d[_0x1c76('0x30')]);_0x58421a[_0x1c76('0x33')]=_[_0x1c76('0x32')](_0x21d00d[_0x1c76('0x2f')],qs[_0x1c76('0x34')](_0x5541d1['query'][_0x1c76('0x34')]));_0x58421a[_0x1c76('0x33')]=_0x58421a['attributes'][_0x1c76('0x35')]?_0x58421a[_0x1c76('0x33')]:_0x21d00d[_0x1c76('0x2f')];_0x58421a[_0x1c76('0x38')]=qs['sort'](_0x5541d1['query']['sort']);_0x58421a[_0x1c76('0x3a')]=qs['filters'](_[_0x1c76('0x4d')](_0x5541d1[_0x1c76('0x30')],_0x21d00d[_0x1c76('0x31')]));if(_0x5541d1[_0x1c76('0x30')][_0x1c76('0x3b')]){_0x58421a['where']=_[_0x1c76('0x3c')](_0x58421a['where'],{'$or':_[_0x1c76('0x2a')](_0x58421a[_0x1c76('0x33')],function(_0x2a7a5d){var _0x27b895={};_0x27b895[_0x2a7a5d]={'$like':'%'+_0x5541d1['query']['filter']+'%'};return _0x27b895;})});}_0x58421a=_['merge']({},_0x58421a,_0x5541d1['options']);return _0x4f61a[_0x1c76('0x4a')](_0x58421a);}})['then'](function(_0x551cfd){if(_0x551cfd){_0x30cf5d=_0x551cfd[_0x1c76('0x35')];if(!_0x5541d1[_0x1c76('0x30')][_0x1c76('0x36')]('nolimit')){_0x58421a[_0x1c76('0x1d')]=qs['limit'](_0x5541d1['query'][_0x1c76('0x1d')]);_0x58421a['offset']=qs[_0x1c76('0x1b')](_0x5541d1[_0x1c76('0x30')][_0x1c76('0x1b')]);}return _0x4f61a[_0x1c76('0x4a')](_0x58421a);}})[_0x1c76('0x24')](function(_0x30c172){if(_0x30c172){return _0x30c172?{'count':_0x30cf5d,'rows':_0x30c172}:null;}})['then'](respondWithResult(_0x5bffef,null))[_0x1c76('0x42')](handleError(_0x5bffef,null));};exports['addConfiguration']=function(_0x3c7f86,_0x917fe4,_0x1c8ae3){if(_0x3c7f86['body']['id']){delete _0x3c7f86['body']['id'];}return db[_0x1c76('0x2b')][_0x1c76('0x4b')]({'where':{'id':_0x3c7f86[_0x1c76('0x44')]['id']}})[_0x1c76('0x24')](handleEntityNotFound(_0x917fe4,null))[_0x1c76('0x24')](function(_0x4ebba6){if(_0x4ebba6){_0x3c7f86[_0x1c76('0x48')]['AccountId']=_0x4ebba6['id'];_0x3c7f86['body'][_0x1c76('0x4e')]=integrations['getSubjects'](_0x3c7f86[_0x1c76('0x48')][_0x1c76('0x4f')],_0x3c7f86['body'][_0x1c76('0x3d')]);_0x3c7f86[_0x1c76('0x48')][_0x1c76('0x50')]=integrations[_0x1c76('0x51')](_0x3c7f86[_0x1c76('0x48')][_0x1c76('0x4f')],_0x3c7f86[_0x1c76('0x48')][_0x1c76('0x3d')]);return db[_0x1c76('0x4c')]['create'](_0x3c7f86['body'],{'include':[{'model':db['ServicenowField'],'as':_0x1c76('0x4e')},{'model':db[_0x1c76('0x52')],'as':_0x1c76('0x50')}]});}return null;})[_0x1c76('0x24')](respondWithResult(_0x917fe4,null))[_0x1c76('0x42')](handleError(_0x917fe4,null));};exports[_0x1c76('0x53')]=function(_0x125962,_0x207e32,_0x4dc806){var _0x35674d=[_0x1c76('0x54'),_0x1c76('0x55'),_0x1c76('0x56'),_0x1c76('0x57'),'close_code',_0x1c76('0x58'),_0x1c76('0x59'),_0x1c76('0x5a'),_0x1c76('0x5b')];var _0x593060=[_0x1c76('0x5c'),_0x1c76('0x54'),_0x1c76('0x5d'),_0x1c76('0x5e'),_0x1c76('0x5f'),_0x1c76('0x60'),_0x1c76('0x61'),_0x1c76('0x55'),'approval_history',_0x1c76('0x62'),_0x1c76('0x63'),_0x1c76('0x64'),_0x1c76('0x65'),_0x1c76('0x66'),_0x1c76('0x67'),_0x1c76('0x68'),_0x1c76('0x69'),'sys_created_by',_0x1c76('0x56'),_0x1c76('0x38'),_0x1c76('0x6a'),_0x1c76('0x6b'),_0x1c76('0x6c'),_0x1c76('0x6d'),_0x1c76('0x6e'),_0x1c76('0x6f'),_0x1c76('0x70'),_0x1c76('0x71'),_0x1c76('0x72'),_0x1c76('0x73'),_0x1c76('0x74'),_0x1c76('0x75'),_0x1c76('0x76'),_0x1c76('0x77'),'business_duration',_0x1c76('0x78'),_0x1c76('0x79'),'reopened_time',_0x1c76('0x7a'),_0x1c76('0x7b'),_0x1c76('0x7c'),_0x1c76('0x57'),_0x1c76('0x7d'),_0x1c76('0x7e'),_0x1c76('0x7f'),'correlation_display',_0x1c76('0x80'),_0x1c76('0x81'),_0x1c76('0x82'),'business_stc',_0x1c76('0x83'),_0x1c76('0x84'),_0x1c76('0x85'),_0x1c76('0x58'),_0x1c76('0x86'),_0x1c76('0x87'),_0x1c76('0x88'),_0x1c76('0x89'),_0x1c76('0x8a'),_0x1c76('0x8b'),_0x1c76('0x8c'),_0x1c76('0x8d'),_0x1c76('0x59'),_0x1c76('0x8e'),'problem_id','company',_0x1c76('0x8f'),'activity_due',_0x1c76('0x90'),_0x1c76('0x5a'),'comments',_0x1c76('0x91'),'approval',_0x1c76('0x92'),'due_date','sys_mod_count','reopen_count',_0x1c76('0x93'),_0x1c76('0x94'),_0x1c76('0x95'),_0x1c76('0x96'),'location',_0x1c76('0x5b')];var _0x359502='';var _0x666cf8='';var _0x5bbcbd=[];var _0x2d0469='';var _0x37311d='';var _0x405381=[];var _0x114649='';var _0x412450='';var _0x5efad1={};var _0x5b4341='';return db[_0x1c76('0x2b')][_0x1c76('0x4b')]({'where':{'id':_0x125962[_0x1c76('0x44')]['id']},'attributes':['id','username','password','email',_0x1c76('0x97'),'serverUrl']})[_0x1c76('0x24')](handleEntityNotFound(_0x207e32,null))[_0x1c76('0x24')](function(_0x25e216){if(_0x25e216){_0x5b4341=_0x25e216[_0x1c76('0x97')];var _0x2b6855=_0x5b4341['slice'](-0x1);if(_0x2b6855==='/'){_0x5b4341=_0x5b4341['substring'](0x0,_0x5b4341['lastIndexOf'](_0x2b6855));}_0x412450=util[_0x1c76('0x98')](_0x1c76('0x99'),_0x5b4341);_0x114649=util[_0x1c76('0x98')](_0x1c76('0x9a'),_0x5b4341);_0x5efad1={'user':_0x25e216['username'],'pass':_0x25e216[_0x1c76('0x9b')]};var _0x3910c0={'method':_0x1c76('0x9c'),'uri':_0x412450+_0x1c76('0x9d'),'auth':_0x5efad1,'json':!![]};return rp(_0x3910c0);}})[_0x1c76('0x24')](function(_0x3b0c04){if(_0x3b0c04[_0x1c76('0x9e')]['length']>0x0){_0x359502=_0x3b0c04[_0x1c76('0x9e')];}console[_0x1c76('0x9f')](_0x1c76('0xa0'),_0x359502);_0x405381=[];_0x666cf8=Object['assign']([],_0x359502);_[_0x1c76('0xa1')](_0x666cf8,function(_0x36f346){return!_0x35674d[_0x1c76('0xa2')](_0x36f346[_0x1c76('0x27')]);});_0x666cf8['forEach'](function(_0x337fc8){var _0x4bd300=createFieldObject(_0x114649,_0x5efad1,_0x337fc8[_0x1c76('0xa3')],_0x337fc8[_0x1c76('0x27')],_0x337fc8[_0x1c76('0xa4')],![]);_0x405381[_0x1c76('0xa5')](_0x4bd300);});return Promise[_0x1c76('0xa6')](_0x405381);})[_0x1c76('0x24')](function(_0x325399){_0x5bbcbd=_0x325399;_0x2d0469=Object[_0x1c76('0xa7')]([],_0x359502);console[_0x1c76('0x9f')](_0x1c76('0xa8'),_0x359502);_[_0x1c76('0xa1')](_0x2d0469,function(_0x30a484){return _0x593060[_0x1c76('0xa2')](_0x30a484[_0x1c76('0x27')]);});console[_0x1c76('0x9f')](_0x1c76('0xa9'),_0x2d0469);_0x405381=[];_0x2d0469[_0x1c76('0xaa')](function(_0x28d744){var _0x49ee43=createFieldObject(_0x114649,_0x5efad1,_0x28d744[_0x1c76('0xa3')],_0x28d744['name'],_0x28d744[_0x1c76('0xa4')],!![]);_0x405381[_0x1c76('0xa5')](_0x49ee43);});return Promise['all'](_0x405381);})[_0x1c76('0x24')](function(_0x58cb3b){_0x37311d=_0x58cb3b;var _0x3458e4=_0x5bbcbd[_0x1c76('0xab')](_0x37311d);return{'count':_0x3458e4[_0x1c76('0x35')],'rows':_0x3458e4};})[_0x1c76('0x24')](respondWithResult(_0x207e32,null))['catch'](function(_0x38d421){console[_0x1c76('0x9f')](_0x1c76('0xac')+_0x38d421);var _0x56daa7=_0x125962['query'][_0x1c76('0xad')]?0x1f4:_0x38d421['statusCode']||0x1f4;logger[_0x1c76('0x25')](_0x38d421['stack']);delete _0x38d421[_0x1c76('0x27')];if(_0x56daa7===0x191){_0x56daa7=0x190;}_0x207e32[_0x1c76('0x18')](_0x56daa7)[_0x1c76('0x28')](_0x125962['query'][_0x1c76('0xad')]?{'message':_0x1c76('0xae'),'statusCode':_0x38d421['statusCode']}:_0x38d421);});};function createFieldObject(_0x3e5016,_0x29e396,_0x10270a,_0xd80723,_0x43c3e2,_0x283b1e){return new Promise(function(_0x3fc800,_0x349e87){var _0xd943de={'id':_0xd80723,'name':_0x43c3e2,'custom':_0x283b1e};if(_0x10270a===_0x1c76('0xaf')){_0xd943de['options']=[{'name':'True','value':_0x1c76('0xb0')},{'name':_0x1c76('0xb1'),'value':_0x1c76('0xb2')}];_0x3fc800(_0xd943de);}else{var _0x4b9f5a={'method':_0x1c76('0x9c'),'uri':_0x3e5016+_0x1c76('0xb3')+_0xd80723,'auth':_0x29e396,'json':!![]};return rp(_0x4b9f5a)[_0x1c76('0x24')](function(_0x1a390c){var _0x23a672=[];if(_0x1a390c[_0x1c76('0x9e')][_0x1c76('0x35')]>0x0){_0x1a390c[_0x1c76('0x9e')][_0x1c76('0xaa')](function(_0x89a37f){if(_0x89a37f[_0x1c76('0xb4')]===_0x1c76('0xb2')){var _0x509a93={'name':_0x89a37f[_0x1c76('0xa4')],'value':_0x89a37f[_0x1c76('0xb5')]};_0x23a672[_0x1c76('0xa5')](_0x509a93);}});}_0xd943de['options']=_0x23a672;if(_0xd943de[_0x1c76('0x3e')]['length']>0x0){_0x3fc800(_0xd943de);}else{if(_0x283b1e==![]){_0x3fc800();}else{_0x3fc800(_0xd943de);}}});}});}
\ No newline at end of file
+var _0xb690=['impact','active','business_service','priority','rfc','expected_start','opened_at','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','work_start','assignment_group','description','calendar_duration','sys_class_name','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','password','email','remoteUri','serverUrl','slice','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','username','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','log','TCL:\x20_object','all','concat','test','send','Wrong\x20credentials','statusCode','boolean','True','true','False','false','GET','inactive','value','eml-format','rimraf','zip-dir','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','error','stack','name','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','ServicenowAccount','includeAll','catch','show','params','length','include','options','find','create','body','destroy','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowConfiguration','getFields','made_sla','knowledge','subcategory','close_code','notify','incident_state','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','hold_reason','number','sys_updated_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb690,0x107));var _0x0b69=function(_0x239b31,_0x44a64d){_0x239b31=_0x239b31-0x0;var _0x41c8be=_0xb690[_0x239b31];return _0x41c8be;};'use strict';var emlformat=require(_0x0b69('0x0'));var rimraf=require(_0x0b69('0x1'));var zipdir=require(_0x0b69('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0b69('0x3'));var BPromise=require(_0x0b69('0x4'));var Mustache=require(_0x0b69('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x0b69('0x6'));var ejs=require(_0x0b69('0x7'));var fs=require('fs');var fs_extra=require(_0x0b69('0x8'));var _=require(_0x0b69('0x9'));var squel=require(_0x0b69('0xa'));var crypto=require(_0x0b69('0xb'));var jsforce=require(_0x0b69('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0b69('0xd'));var Papa=require(_0x0b69('0xe'));var Redis=require(_0x0b69('0xf'));var authService=require(_0x0b69('0x10'));var qs=require(_0x0b69('0x11'));var as=require(_0x0b69('0x12'));var hardwareService=require(_0x0b69('0x13'));var logger=require('../../config/logger')(_0x0b69('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0b69('0x15'));var db=require(_0x0b69('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3a0106,_0x15a9ae){_0x15a9ae=_0x15a9ae||0xcc;return function(_0x43436c){if(_0x43436c){return _0x3a0106[_0x0b69('0x17')](_0x15a9ae);}return _0x3a0106[_0x0b69('0x18')](_0x15a9ae)[_0x0b69('0x19')]();};}function respondWithResult(_0x1048b8,_0xaa61f9){_0xaa61f9=_0xaa61f9||0xc8;return function(_0x4483e1){if(_0x4483e1){return _0x1048b8[_0x0b69('0x18')](_0xaa61f9)['json'](_0x4483e1);}};}function respondWithFilteredResult(_0x3f91bd,_0x245587){return function(_0x21dc19){if(_0x21dc19){var _0x4f1d2d=typeof _0x245587[_0x0b69('0x1a')]===_0x0b69('0x1b')&&typeof _0x245587[_0x0b69('0x1c')]===_0x0b69('0x1b');var _0x247d9a=_0x21dc19[_0x0b69('0x1d')];var _0x106af5=_0x4f1d2d?0x0:_0x245587[_0x0b69('0x1a')];var _0x4bb803=_0x4f1d2d?_0x21dc19[_0x0b69('0x1d')]:_0x245587[_0x0b69('0x1a')]+_0x245587[_0x0b69('0x1c')];var _0xd458b5;if(_0x4bb803>=_0x247d9a){_0x4bb803=_0x247d9a;_0xd458b5=0xc8;}else{_0xd458b5=0xce;}_0x3f91bd[_0x0b69('0x18')](_0xd458b5);return _0x3f91bd['set'](_0x0b69('0x1e'),_0x106af5+'-'+_0x4bb803+'/'+_0x247d9a)[_0x0b69('0x1f')](_0x21dc19);}return null;};}function patchUpdates(_0x2ea4f8){return function(_0x5bf632){try{jsonpatch[_0x0b69('0x20')](_0x5bf632,_0x2ea4f8,!![]);}catch(_0x12e93a){return BPromise[_0x0b69('0x21')](_0x12e93a);}return _0x5bf632[_0x0b69('0x22')]();};}function saveUpdates(_0x1726f4,_0x575185){return function(_0x198245){if(_0x198245){return _0x198245[_0x0b69('0x23')](_0x1726f4)['then'](function(_0x362b84){return _0x362b84;});}return null;};}function removeEntity(_0x2d4f7f,_0x5ec3e5){return function(_0x483aa0){if(_0x483aa0){return _0x483aa0['destroy']()[_0x0b69('0x24')](function(){_0x2d4f7f[_0x0b69('0x18')](0xcc)[_0x0b69('0x19')]();});}};}function handleEntityNotFound(_0x4254aa,_0x5afe97){return function(_0x21ccfe){if(!_0x21ccfe){_0x4254aa[_0x0b69('0x17')](0x194);}return _0x21ccfe;};}function handleError(_0x2e60e8,_0x440ee7){_0x440ee7=_0x440ee7||0x1f4;return function(_0x48a449){logger[_0x0b69('0x25')](_0x48a449[_0x0b69('0x26')]);if(_0x48a449['name']){delete _0x48a449[_0x0b69('0x27')];}_0x2e60e8['status'](_0x440ee7)['send'](_0x48a449);};}exports[_0x0b69('0x28')]=function(_0x5d6ca1,_0x15bc60){var _0xd30c1={},_0x3af469={},_0x4f4369={'count':0x0,'rows':[]};var _0x47e06d=_[_0x0b69('0x29')](db['ServicenowAccount'][_0x0b69('0x2a')],function(_0x57d836){return{'name':_0x57d836['fieldName'],'type':_0x57d836[_0x0b69('0x2b')][_0x0b69('0x2c')]};});_0x3af469[_0x0b69('0x2d')]=_[_0x0b69('0x29')](_0x47e06d,_0x0b69('0x27'));_0x3af469[_0x0b69('0x2e')]=_[_0x0b69('0x2f')](_0x5d6ca1[_0x0b69('0x2e')]);_0x3af469[_0x0b69('0x30')]=_[_0x0b69('0x31')](_0x3af469[_0x0b69('0x2d')],_0x3af469[_0x0b69('0x2e')]);_0xd30c1[_0x0b69('0x32')]=_['intersection'](_0x3af469[_0x0b69('0x2d')],qs[_0x0b69('0x33')](_0x5d6ca1[_0x0b69('0x2e')]['fields']));_0xd30c1[_0x0b69('0x32')]=_0xd30c1[_0x0b69('0x32')]['length']?_0xd30c1[_0x0b69('0x32')]:_0x3af469[_0x0b69('0x2d')];if(!_0x5d6ca1[_0x0b69('0x2e')][_0x0b69('0x34')](_0x0b69('0x35'))){_0xd30c1[_0x0b69('0x1c')]=qs['limit'](_0x5d6ca1['query']['limit']);_0xd30c1['offset']=qs[_0x0b69('0x1a')](_0x5d6ca1[_0x0b69('0x2e')][_0x0b69('0x1a')]);}_0xd30c1[_0x0b69('0x36')]=qs[_0x0b69('0x37')](_0x5d6ca1[_0x0b69('0x2e')][_0x0b69('0x37')]);_0xd30c1['where']=qs[_0x0b69('0x30')](_[_0x0b69('0x38')](_0x5d6ca1[_0x0b69('0x2e')],_0x3af469[_0x0b69('0x30')]),_0x47e06d);if(_0x5d6ca1['query'][_0x0b69('0x39')]){_0xd30c1['where']=_[_0x0b69('0x3a')](_0xd30c1[_0x0b69('0x3b')],{'$or':_[_0x0b69('0x29')](_0x47e06d,function(_0x3fe8c5){if(_0x3fe8c5[_0x0b69('0x2b')]!==_0x0b69('0x3c')){var _0xf8c5fd={};_0xf8c5fd[_0x3fe8c5['name']]={'$like':'%'+_0x5d6ca1[_0x0b69('0x2e')]['filter']+'%'};return _0xf8c5fd;}})});}_0xd30c1=_['merge']({},_0xd30c1,_0x5d6ca1['options']);var _0x1c7984={'where':_0xd30c1[_0x0b69('0x3b')]};return db[_0x0b69('0x3d')][_0x0b69('0x1d')](_0x1c7984)[_0x0b69('0x24')](function(_0x33991c){_0x4f4369[_0x0b69('0x1d')]=_0x33991c;if(_0x5d6ca1[_0x0b69('0x2e')][_0x0b69('0x3e')]){_0xd30c1['include']=[{'all':!![]}];}return db[_0x0b69('0x3d')]['findAll'](_0xd30c1);})['then'](function(_0x5baf04){_0x4f4369['rows']=_0x5baf04;return _0x4f4369;})[_0x0b69('0x24')](respondWithFilteredResult(_0x15bc60,_0xd30c1))[_0x0b69('0x3f')](handleError(_0x15bc60,null));};exports[_0x0b69('0x40')]=function(_0x448c3c,_0x219d74){var _0x557e2d={'raw':![],'where':{'id':_0x448c3c[_0x0b69('0x41')]['id']}},_0x17dc7a={};_0x17dc7a[_0x0b69('0x2d')]=_['keys'](db[_0x0b69('0x3d')][_0x0b69('0x2a')]);_0x17dc7a[_0x0b69('0x2e')]=_[_0x0b69('0x2f')](_0x448c3c[_0x0b69('0x2e')]);_0x17dc7a[_0x0b69('0x30')]=_[_0x0b69('0x31')](_0x17dc7a[_0x0b69('0x2d')],_0x17dc7a[_0x0b69('0x2e')]);_0x557e2d['attributes']=_[_0x0b69('0x31')](_0x17dc7a[_0x0b69('0x2d')],qs[_0x0b69('0x33')](_0x448c3c['query'][_0x0b69('0x33')]));_0x557e2d[_0x0b69('0x32')]=_0x557e2d[_0x0b69('0x32')][_0x0b69('0x42')]?_0x557e2d[_0x0b69('0x32')]:_0x17dc7a[_0x0b69('0x2d')];if(_0x448c3c['query'][_0x0b69('0x3e')]){_0x557e2d[_0x0b69('0x43')]=[{'all':!![]}];}_0x557e2d=_[_0x0b69('0x3a')]({},_0x557e2d,_0x448c3c[_0x0b69('0x44')]);return db[_0x0b69('0x3d')][_0x0b69('0x45')](_0x557e2d)['then'](handleEntityNotFound(_0x219d74,null))[_0x0b69('0x24')](respondWithResult(_0x219d74,null))[_0x0b69('0x3f')](handleError(_0x219d74,null));};exports[_0x0b69('0x46')]=function(_0x32f2f0,_0x4a6b43){return db[_0x0b69('0x3d')][_0x0b69('0x46')](_0x32f2f0[_0x0b69('0x47')],{})[_0x0b69('0x24')](respondWithResult(_0x4a6b43,0xc9))[_0x0b69('0x3f')](handleError(_0x4a6b43,null));};exports[_0x0b69('0x23')]=function(_0x496beb,_0x1b50f4){if(_0x496beb[_0x0b69('0x47')]['id']){delete _0x496beb[_0x0b69('0x47')]['id'];}return db[_0x0b69('0x3d')][_0x0b69('0x45')]({'where':{'id':_0x496beb[_0x0b69('0x41')]['id']}})[_0x0b69('0x24')](handleEntityNotFound(_0x1b50f4,null))[_0x0b69('0x24')](saveUpdates(_0x496beb['body'],null))[_0x0b69('0x24')](respondWithResult(_0x1b50f4,null))[_0x0b69('0x3f')](handleError(_0x1b50f4,null));};exports[_0x0b69('0x48')]=function(_0x327473,_0x584353){return db['ServicenowAccount'][_0x0b69('0x45')]({'where':{'id':_0x327473[_0x0b69('0x41')]['id']}})[_0x0b69('0x24')](handleEntityNotFound(_0x584353,null))[_0x0b69('0x24')](removeEntity(_0x584353,null))[_0x0b69('0x3f')](handleError(_0x584353,null));};exports[_0x0b69('0x49')]=function(_0x287c54,_0x310aaf,_0x222bc8){var _0x24f662={};var _0xd73ac1={};var _0x3dd3ce;var _0x5cdfab;return db[_0x0b69('0x3d')]['findOne']({'where':{'id':_0x287c54[_0x0b69('0x41')]['id']}})[_0x0b69('0x24')](handleEntityNotFound(_0x310aaf,null))[_0x0b69('0x24')](function(_0x49a789){if(_0x49a789){_0x3dd3ce=_0x49a789;_0xd73ac1[_0x0b69('0x2d')]=_[_0x0b69('0x2f')](db['ServicenowConfiguration'][_0x0b69('0x2a')]);_0xd73ac1[_0x0b69('0x2e')]=_[_0x0b69('0x2f')](_0x287c54['query']);_0xd73ac1['filters']=_[_0x0b69('0x31')](_0xd73ac1[_0x0b69('0x2d')],_0xd73ac1[_0x0b69('0x2e')]);_0x24f662[_0x0b69('0x32')]=_['intersection'](_0xd73ac1[_0x0b69('0x2d')],qs[_0x0b69('0x33')](_0x287c54[_0x0b69('0x2e')]['fields']));_0x24f662['attributes']=_0x24f662['attributes'][_0x0b69('0x42')]?_0x24f662[_0x0b69('0x32')]:_0xd73ac1[_0x0b69('0x2d')];_0x24f662[_0x0b69('0x36')]=qs['sort'](_0x287c54[_0x0b69('0x2e')][_0x0b69('0x37')]);_0x24f662[_0x0b69('0x3b')]=qs[_0x0b69('0x30')](_[_0x0b69('0x38')](_0x287c54[_0x0b69('0x2e')],_0xd73ac1['filters']));if(_0x287c54[_0x0b69('0x2e')][_0x0b69('0x39')]){_0x24f662[_0x0b69('0x3b')]=_[_0x0b69('0x3a')](_0x24f662['where'],{'$or':_['map'](_0x24f662[_0x0b69('0x32')],function(_0x3bcafe){var _0x49a65c={};_0x49a65c[_0x3bcafe]={'$like':'%'+_0x287c54[_0x0b69('0x2e')][_0x0b69('0x39')]+'%'};return _0x49a65c;})});}_0x24f662=_[_0x0b69('0x3a')]({},_0x24f662,_0x287c54[_0x0b69('0x44')]);return _0x3dd3ce['getConfigurations'](_0x24f662);}})[_0x0b69('0x24')](function(_0x1fe222){if(_0x1fe222){_0x5cdfab=_0x1fe222[_0x0b69('0x42')];if(!_0x287c54[_0x0b69('0x2e')]['hasOwnProperty'](_0x0b69('0x35'))){_0x24f662['limit']=qs['limit'](_0x287c54['query'][_0x0b69('0x1c')]);_0x24f662['offset']=qs[_0x0b69('0x1a')](_0x287c54[_0x0b69('0x2e')]['offset']);}return _0x3dd3ce['getConfigurations'](_0x24f662);}})[_0x0b69('0x24')](function(_0x5026bd){if(_0x5026bd){return _0x5026bd?{'count':_0x5cdfab,'rows':_0x5026bd}:null;}})[_0x0b69('0x24')](respondWithResult(_0x310aaf,null))[_0x0b69('0x3f')](handleError(_0x310aaf,null));};exports[_0x0b69('0x4a')]=function(_0x412627,_0x53ee6d,_0xe34845){if(_0x412627['body']['id']){delete _0x412627[_0x0b69('0x47')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x412627['params']['id']}})[_0x0b69('0x24')](handleEntityNotFound(_0x53ee6d,null))[_0x0b69('0x24')](function(_0x5e2b4e){if(_0x5e2b4e){_0x412627['body'][_0x0b69('0x4b')]=_0x5e2b4e['id'];_0x412627['body'][_0x0b69('0x4c')]=integrations[_0x0b69('0x4d')](_0x412627[_0x0b69('0x47')][_0x0b69('0x4e')],_0x412627['body'][_0x0b69('0x2b')]);_0x412627[_0x0b69('0x47')][_0x0b69('0x4f')]=integrations[_0x0b69('0x50')](_0x412627['body'][_0x0b69('0x4e')],_0x412627['body'][_0x0b69('0x2b')]);return db[_0x0b69('0x51')]['create'](_0x412627[_0x0b69('0x47')],{'include':[{'model':db['ServicenowField'],'as':'Subjects'},{'model':db['ServicenowField'],'as':_0x0b69('0x4f')}]});}return null;})['then'](respondWithResult(_0x53ee6d,null))[_0x0b69('0x3f')](handleError(_0x53ee6d,null));};exports[_0x0b69('0x52')]=function(_0x5591ea,_0x190f49,_0x8c6576){var _0x795daa=[_0x0b69('0x53'),'hold_reason',_0x0b69('0x54'),_0x0b69('0x55'),_0x0b69('0x56'),_0x0b69('0x57'),_0x0b69('0x58'),_0x0b69('0x59'),_0x0b69('0x5a')];var _0x3a64df=[_0x0b69('0x5b'),_0x0b69('0x53'),_0x0b69('0x5c'),_0x0b69('0x5d'),_0x0b69('0x5e'),_0x0b69('0x5f'),_0x0b69('0x60'),_0x0b69('0x61'),'approval_history',_0x0b69('0x62'),'resolved_by',_0x0b69('0x63'),'opened_by',_0x0b69('0x64'),_0x0b69('0x65'),_0x0b69('0x66'),_0x0b69('0x67'),_0x0b69('0x68'),_0x0b69('0x54'),'order',_0x0b69('0x69'),_0x0b69('0x6a'),_0x0b69('0x6b'),_0x0b69('0x6c'),_0x0b69('0x6d'),_0x0b69('0x6e'),'work_notes_list',_0x0b69('0x6f'),_0x0b69('0x70'),'sys_domain_path',_0x0b69('0x71'),'time_worked',_0x0b69('0x72'),_0x0b69('0x73'),'business_duration',_0x0b69('0x74'),'work_end',_0x0b69('0x75'),_0x0b69('0x76'),_0x0b69('0x77'),_0x0b69('0x78'),_0x0b69('0x55'),_0x0b69('0x79'),_0x0b69('0x7a'),_0x0b69('0x56'),'correlation_display','delivery_task',_0x0b69('0x7b'),_0x0b69('0x7c'),'business_stc','additional_assignee_list',_0x0b69('0x7d'),_0x0b69('0x7e'),_0x0b69('0x57'),_0x0b69('0x7f'),'close_notes',_0x0b69('0x80'),_0x0b69('0x81'),_0x0b69('0x82'),_0x0b69('0x83'),_0x0b69('0x84'),_0x0b69('0x85'),_0x0b69('0x58'),'urgency',_0x0b69('0x86'),_0x0b69('0x87'),_0x0b69('0x88'),_0x0b69('0x89'),_0x0b69('0x8a'),_0x0b69('0x59'),_0x0b69('0x8b'),'sla_due',_0x0b69('0x8c'),_0x0b69('0x8d'),_0x0b69('0x8e'),_0x0b69('0x8f'),_0x0b69('0x90'),_0x0b69('0x91'),_0x0b69('0x92'),_0x0b69('0x93'),_0x0b69('0x94'),_0x0b69('0x95'),_0x0b69('0x5a')];var _0x705bff='';var _0x501a9a='';var _0x146def=[];var _0x4e0869='';var _0x19db20='';var _0x9c0070=[];var _0x1efb7a='';var _0x504da6='';var _0x35faeb={};var _0x199923='';return db[_0x0b69('0x3d')]['findOne']({'where':{'id':_0x5591ea[_0x0b69('0x41')]['id']},'attributes':['id','username',_0x0b69('0x96'),_0x0b69('0x97'),_0x0b69('0x98'),_0x0b69('0x99')]})[_0x0b69('0x24')](handleEntityNotFound(_0x190f49,null))[_0x0b69('0x24')](function(_0x33e9f4){if(_0x33e9f4){_0x199923=_0x33e9f4[_0x0b69('0x98')];var _0x42edf3=_0x199923[_0x0b69('0x9a')](-0x1);if(_0x42edf3==='/'){_0x199923=_0x199923['substring'](0x0,_0x199923[_0x0b69('0x9b')](_0x42edf3));}_0x504da6=util[_0x0b69('0x9c')](_0x0b69('0x9d'),_0x199923);_0x1efb7a=util[_0x0b69('0x9c')](_0x0b69('0x9e'),_0x199923);_0x35faeb={'user':_0x33e9f4[_0x0b69('0x9f')],'pass':_0x33e9f4['password']};var _0x56cb50={'method':'GET','uri':_0x504da6+_0x0b69('0xa0'),'auth':_0x35faeb,'json':!![]};return rp(_0x56cb50);}})['then'](function(_0x2f19ca){if(_0x2f19ca[_0x0b69('0xa1')]['length']>0x0){_0x705bff=_0x2f19ca[_0x0b69('0xa1')];}console['log'](_0x0b69('0xa2'),_0x705bff);_0x9c0070=[];_0x501a9a=Object[_0x0b69('0xa3')]([],_0x705bff);_[_0x0b69('0xa4')](_0x501a9a,function(_0x43b63f){return!_0x795daa[_0x0b69('0xa5')](_0x43b63f[_0x0b69('0x27')]);});_0x501a9a[_0x0b69('0xa6')](function(_0x20abf4){var _0x2118ec=createFieldObject(_0x1efb7a,_0x35faeb,_0x20abf4[_0x0b69('0xa7')],_0x20abf4[_0x0b69('0x27')],_0x20abf4[_0x0b69('0xa8')],![]);_0x9c0070[_0x0b69('0xa9')](_0x2118ec);});return Promise['all'](_0x9c0070);})['then'](function(_0x17ee21){_0x146def=_0x17ee21;_0x4e0869=Object[_0x0b69('0xa3')]([],_0x705bff);console[_0x0b69('0xaa')](_0x0b69('0xab'),_0x705bff);_[_0x0b69('0xa4')](_0x4e0869,function(_0x3acba1){return _0x3a64df[_0x0b69('0xa5')](_0x3acba1[_0x0b69('0x27')]);});console[_0x0b69('0xaa')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x4e0869);_0x9c0070=[];_0x4e0869[_0x0b69('0xa6')](function(_0x12706b){var _0x294ff9=createFieldObject(_0x1efb7a,_0x35faeb,_0x12706b['internalType'],_0x12706b['name'],_0x12706b['label'],!![]);_0x9c0070[_0x0b69('0xa9')](_0x294ff9);});return Promise[_0x0b69('0xac')](_0x9c0070);})[_0x0b69('0x24')](function(_0x34972c){_0x19db20=_0x34972c;var _0x1d3307=_0x146def[_0x0b69('0xad')](_0x19db20);return{'count':_0x1d3307[_0x0b69('0x42')],'rows':_0x1d3307};})[_0x0b69('0x24')](respondWithResult(_0x190f49,null))[_0x0b69('0x3f')](function(_0x12f2f3){console[_0x0b69('0xaa')]('ServiceNow\x20error:\x20'+_0x12f2f3);var _0x6ac39d=_0x5591ea[_0x0b69('0x2e')][_0x0b69('0xae')]?0x1f4:_0x12f2f3['statusCode']||0x1f4;logger[_0x0b69('0x25')](_0x12f2f3[_0x0b69('0x26')]);delete _0x12f2f3[_0x0b69('0x27')];if(_0x6ac39d===0x191){_0x6ac39d=0x190;}_0x190f49[_0x0b69('0x18')](_0x6ac39d)[_0x0b69('0xaf')](_0x5591ea[_0x0b69('0x2e')][_0x0b69('0xae')]?{'message':_0x0b69('0xb0'),'statusCode':_0x12f2f3[_0x0b69('0xb1')]}:_0x12f2f3);});};function createFieldObject(_0x505015,_0x5b5e3f,_0x29f674,_0x6c67cf,_0x6e546d,_0x1d4f4c){return new Promise(function(_0x4e731e,_0x4480fc){var _0xb96a4a={'id':_0x6c67cf,'name':_0x6e546d,'custom':_0x1d4f4c};if(_0x29f674===_0x0b69('0xb2')){_0xb96a4a['options']=[{'name':_0x0b69('0xb3'),'value':_0x0b69('0xb4')},{'name':_0x0b69('0xb5'),'value':_0x0b69('0xb6')}];_0x4e731e(_0xb96a4a);}else{var _0x1ce699={'method':_0x0b69('0xb7'),'uri':_0x505015+'sys_choice?sysparm_query=name=incident^element='+_0x6c67cf,'auth':_0x5b5e3f,'json':!![]};return rp(_0x1ce699)[_0x0b69('0x24')](function(_0x456b80){var _0x3189dd=[];if(_0x456b80[_0x0b69('0xa1')]['length']>0x0){_0x456b80['result'][_0x0b69('0xa6')](function(_0x4461a2){if(_0x4461a2[_0x0b69('0xb8')]===_0x0b69('0xb6')){var _0x487f6c={'name':_0x4461a2['label'],'value':_0x4461a2[_0x0b69('0xb9')]};_0x3189dd['push'](_0x487f6c);}});}_0xb96a4a['options']=_0x3189dd;if(_0xb96a4a[_0x0b69('0x44')][_0x0b69('0x42')]>0x0){_0x4e731e(_0xb96a4a);}else{if(_0x1d4f4c==![]){_0x4e731e();}else{_0x4e731e(_0xb96a4a);}}});}});}
\ No newline at end of file
index 1307c01..0ce5901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1398ba,_0x529fb3){var _0x4020a2=function(_0x3f8aa2){while(--_0x3f8aa2){_0x1398ba['push'](_0x1398ba['shift']());}};_0x4020a2(++_0x529fb3);}(_0x4975,0x86));var _0x5497=function(_0x713277,_0x11cf87){_0x713277=_0x713277-0x0;var _0x21a3f8=_0x4975[_0x713277];return _0x21a3f8;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var logger=require(_0x5497('0x1'))(_0x5497('0x2'));var moment=require(_0x5497('0x3'));var BPromise=require(_0x5497('0x4'));var rp=require(_0x5497('0x5'));var fs=require('fs');var path=require(_0x5497('0x6'));var rimraf=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var attributes=require(_0x5497('0x9'));var integrations=require(_0x5497('0xa'));module['exports']=function(_0x37e48d,_0x4f563d){return _0x37e48d[_0x5497('0xb')](_0x5497('0xc'),attributes,{'tableName':_0x5497('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2675=['path','rimraf','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','moment','bluebird'];(function(_0x229b09,_0x141b41){var _0x5206cc=function(_0x41b2cf){while(--_0x41b2cf){_0x229b09['push'](_0x229b09['shift']());}};_0x5206cc(++_0x141b41);}(_0x2675,0x75));var _0x5267=function(_0x33ff20,_0x212197){_0x33ff20=_0x33ff20-0x0;var _0x614afb=_0x2675[_0x33ff20];return _0x614afb;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5267('0x1'));var BPromise=require(_0x5267('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5267('0x3'));var rimraf=require(_0x5267('0x4'));var config=require('../../config/environment');var attributes=require(_0x5267('0x5'));var integrations=require(_0x5267('0x6'));module[_0x5267('0x7')]=function(_0x10f92c,_0x20f065){return _0x10f92c[_0x5267('0x8')]('ServicenowAccount',attributes,{'tableName':_0x5267('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d516923..5816e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c6=['info','ServicenowAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','GetServicenowAccount','options','where','attributes','limit','include','model','ServicenowAccount','raw','map','ShowServicenowAccount','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0x139b33,_0x5e9e9d){var _0x11a7d0=function(_0x464b1f){while(--_0x464b1f){_0x139b33['push'](_0x139b33['shift']());}};_0x11a7d0(++_0x5e9e9d);}(_0xa5c6,0x90));var _0x6a5c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5c6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6a5c('0x0'));var util=require('util');var moment=require(_0x6a5c('0x1'));var BPromise=require(_0x6a5c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6a5c('0x3'))['db'];var utils=require(_0x6a5c('0x4'));var logger=require(_0x6a5c('0x5'))(_0x6a5c('0x6'));var config=require('../../config/environment');var jayson=require(_0x6a5c('0x7'));var client=jayson[_0x6a5c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11acd3,_0x5c11d6,_0x175cfe){return new BPromise(function(_0x396297,_0x6e5ca){return client[_0x6a5c('0x9')](_0x11acd3,_0x175cfe)[_0x6a5c('0xa')](function(_0x2092c5){logger[_0x6a5c('0xb')](_0x6a5c('0xc'),_0x5c11d6,'request\x20sent');logger[_0x6a5c('0xd')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x5c11d6,_0x6a5c('0xe'),JSON[_0x6a5c('0xf')](_0x2092c5));if(_0x2092c5[_0x6a5c('0x10')]){if(_0x2092c5[_0x6a5c('0x10')][_0x6a5c('0x11')]===0x1f4){logger[_0x6a5c('0x10')]('ServicenowAccount,\x20%s,\x20%s',_0x5c11d6,_0x2092c5[_0x6a5c('0x10')][_0x6a5c('0x12')]);return _0x6e5ca(_0x2092c5['error']['message']);}logger[_0x6a5c('0x10')](_0x6a5c('0xc'),_0x5c11d6,_0x2092c5[_0x6a5c('0x10')]['message']);return _0x396297(_0x2092c5[_0x6a5c('0x10')]['message']);}else{logger[_0x6a5c('0xb')](_0x6a5c('0xc'),_0x5c11d6,_0x6a5c('0xe'));_0x396297(_0x2092c5['result']['message']);}})[_0x6a5c('0x13')](function(_0x391700){logger[_0x6a5c('0x10')](_0x6a5c('0xc'),_0x5c11d6,_0x391700);_0x6e5ca(_0x391700);});});}exports[_0x6a5c('0x14')]=function(_0x48ed84){var _0x36e388=this;return new Promise(function(_0x63c50f,_0xc6949f){return db['ServicenowAccount']['findAll']({'raw':_0x48ed84[_0x6a5c('0x15')]?_0x48ed84[_0x6a5c('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x48ed84[_0x6a5c('0x15')]?_0x48ed84[_0x6a5c('0x15')][_0x6a5c('0x16')]||null:null,'attributes':_0x48ed84['options']?_0x48ed84['options'][_0x6a5c('0x17')]||null:null,'limit':_0x48ed84[_0x6a5c('0x15')]?_0x48ed84[_0x6a5c('0x15')][_0x6a5c('0x18')]||null:null,'include':_0x48ed84[_0x6a5c('0x15')]?_0x48ed84[_0x6a5c('0x15')][_0x6a5c('0x19')]?_['map'](_0x48ed84['options'][_0x6a5c('0x19')],function(_0x1aa763){return{'model':db[_0x1aa763[_0x6a5c('0x1a')]],'as':_0x1aa763['as'],'attributes':_0x1aa763[_0x6a5c('0x17')],'include':_0x1aa763[_0x6a5c('0x19')]?_['map'](_0x1aa763['include'],function(_0x5e37b5){return{'model':db[_0x5e37b5[_0x6a5c('0x1a')]],'as':_0x5e37b5['as'],'attributes':_0x5e37b5[_0x6a5c('0x17')],'include':_0x5e37b5[_0x6a5c('0x19')]?_['map'](_0x5e37b5[_0x6a5c('0x19')],function(_0x46aa38){return{'model':db[_0x46aa38['model']],'as':_0x46aa38['as'],'attributes':_0x46aa38['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x34ae30){logger[_0x6a5c('0xb')]('GetServicenowAccount',_0x48ed84);logger['debug'](_0x6a5c('0x14'),_0x48ed84,JSON[_0x6a5c('0xf')](_0x34ae30));_0x63c50f(_0x34ae30);})[_0x6a5c('0x13')](function(_0x488bc9){logger[_0x6a5c('0x10')](_0x6a5c('0x14'),_0x488bc9[_0x6a5c('0x12')],_0x48ed84);_0xc6949f(_0x36e388[_0x6a5c('0x10')](0x1f4,_0x488bc9[_0x6a5c('0x12')]));});});};exports['ShowServicenowAccount']=function(_0x4c3627){var _0x18bf32=this;return new Promise(function(_0x1b8e08,_0x2a36fc){return db[_0x6a5c('0x1b')]['find']({'raw':_0x4c3627[_0x6a5c('0x15')]?_0x4c3627[_0x6a5c('0x15')][_0x6a5c('0x1c')]===undefined?!![]:![]:!![],'where':_0x4c3627[_0x6a5c('0x15')]?_0x4c3627['options']['where']||null:null,'attributes':_0x4c3627[_0x6a5c('0x15')]?_0x4c3627[_0x6a5c('0x15')]['attributes']||null:null,'include':_0x4c3627[_0x6a5c('0x15')]?_0x4c3627['options'][_0x6a5c('0x19')]?_['map'](_0x4c3627[_0x6a5c('0x15')][_0x6a5c('0x19')],function(_0x65785e){return{'model':db[_0x65785e[_0x6a5c('0x1a')]],'as':_0x65785e['as'],'attributes':_0x65785e[_0x6a5c('0x17')],'include':_0x65785e[_0x6a5c('0x19')]?_[_0x6a5c('0x1d')](_0x65785e[_0x6a5c('0x19')],function(_0x2e172b){return{'model':db[_0x2e172b[_0x6a5c('0x1a')]],'as':_0x2e172b['as'],'attributes':_0x2e172b[_0x6a5c('0x17')],'include':_0x2e172b[_0x6a5c('0x19')]?_[_0x6a5c('0x1d')](_0x2e172b[_0x6a5c('0x19')],function(_0x175b7b){return{'model':db[_0x175b7b[_0x6a5c('0x1a')]],'as':_0x175b7b['as'],'attributes':_0x175b7b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x323949){logger[_0x6a5c('0xb')](_0x6a5c('0x1e'),_0x4c3627);logger['debug']('ShowServicenowAccount',_0x4c3627,JSON['stringify'](_0x323949));_0x1b8e08(_0x323949);})[_0x6a5c('0x13')](function(_0x4c1960){logger[_0x6a5c('0x10')](_0x6a5c('0x1e'),_0x4c1960[_0x6a5c('0x12')],_0x4c3627);_0x2a36fc(_0x18bf32[_0x6a5c('0x10')](0x1f4,_0x4c1960[_0x6a5c('0x12')]));});});};
\ No newline at end of file
+var _0x4133=['ShowServicenowAccount','find','where','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','debug','request\x20sent','stringify','error','code','message','ServicenowAccount,\x20%s,\x20%s','result','ServicenowAccount','findAll','options','raw','attributes','limit','include','model','map','GetServicenowAccount','catch'];(function(_0x4804cc,_0x472e9e){var _0x29b550=function(_0x556606){while(--_0x556606){_0x4804cc['push'](_0x4804cc['shift']());}};_0x29b550(++_0x472e9e);}(_0x4133,0xd5));var _0x3413=function(_0x3b6cc7,_0x5df0c1){_0x3b6cc7=_0x3b6cc7-0x0;var _0x37f564=_0x4133[_0x3b6cc7];return _0x37f564;};'use strict';var _=require(_0x3413('0x0'));var util=require('util');var moment=require(_0x3413('0x1'));var BPromise=require(_0x3413('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3413('0x3'));var db=require(_0x3413('0x4'))['db'];var utils=require(_0x3413('0x5'));var logger=require(_0x3413('0x6'))('rpc');var config=require(_0x3413('0x7'));var jayson=require(_0x3413('0x8'));var client=jayson[_0x3413('0x9')][_0x3413('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x472e9d,_0x3cb53b,_0x420a57){return new BPromise(function(_0x2bd503,_0x3e6987){return client['request'](_0x472e9d,_0x420a57)[_0x3413('0xb')](function(_0x52dbfa){logger[_0x3413('0xc')]('ServicenowAccount,\x20%s,\x20%s',_0x3cb53b,'request\x20sent');logger[_0x3413('0xd')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x3cb53b,_0x3413('0xe'),JSON[_0x3413('0xf')](_0x52dbfa));if(_0x52dbfa[_0x3413('0x10')]){if(_0x52dbfa[_0x3413('0x10')][_0x3413('0x11')]===0x1f4){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x3cb53b,_0x52dbfa['error']['message']);return _0x3e6987(_0x52dbfa[_0x3413('0x10')][_0x3413('0x12')]);}logger[_0x3413('0x10')](_0x3413('0x13'),_0x3cb53b,_0x52dbfa[_0x3413('0x10')][_0x3413('0x12')]);return _0x2bd503(_0x52dbfa[_0x3413('0x10')][_0x3413('0x12')]);}else{logger[_0x3413('0xc')](_0x3413('0x13'),_0x3cb53b,_0x3413('0xe'));_0x2bd503(_0x52dbfa[_0x3413('0x14')][_0x3413('0x12')]);}})['catch'](function(_0x2c72d8){logger[_0x3413('0x10')](_0x3413('0x13'),_0x3cb53b,_0x2c72d8);_0x3e6987(_0x2c72d8);});});}exports['GetServicenowAccount']=function(_0x57847e){var _0x432a88=this;return new Promise(function(_0x1c656,_0x465500){return db[_0x3413('0x15')][_0x3413('0x16')]({'raw':_0x57847e[_0x3413('0x17')]?_0x57847e[_0x3413('0x17')][_0x3413('0x18')]===undefined?!![]:![]:!![],'where':_0x57847e[_0x3413('0x17')]?_0x57847e[_0x3413('0x17')]['where']||null:null,'attributes':_0x57847e['options']?_0x57847e[_0x3413('0x17')][_0x3413('0x19')]||null:null,'limit':_0x57847e[_0x3413('0x17')]?_0x57847e[_0x3413('0x17')][_0x3413('0x1a')]||null:null,'include':_0x57847e[_0x3413('0x17')]?_0x57847e[_0x3413('0x17')][_0x3413('0x1b')]?_['map'](_0x57847e[_0x3413('0x17')][_0x3413('0x1b')],function(_0x1f96cf){return{'model':db[_0x1f96cf[_0x3413('0x1c')]],'as':_0x1f96cf['as'],'attributes':_0x1f96cf['attributes'],'include':_0x1f96cf['include']?_[_0x3413('0x1d')](_0x1f96cf[_0x3413('0x1b')],function(_0x278224){return{'model':db[_0x278224[_0x3413('0x1c')]],'as':_0x278224['as'],'attributes':_0x278224['attributes'],'include':_0x278224[_0x3413('0x1b')]?_[_0x3413('0x1d')](_0x278224[_0x3413('0x1b')],function(_0x23f8f6){return{'model':db[_0x23f8f6[_0x3413('0x1c')]],'as':_0x23f8f6['as'],'attributes':_0x23f8f6[_0x3413('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xacfd7b){logger[_0x3413('0xc')](_0x3413('0x1e'),_0x57847e);logger[_0x3413('0xd')]('GetServicenowAccount',_0x57847e,JSON[_0x3413('0xf')](_0xacfd7b));_0x1c656(_0xacfd7b);})[_0x3413('0x1f')](function(_0x330ba5){logger[_0x3413('0x10')](_0x3413('0x1e'),_0x330ba5[_0x3413('0x12')],_0x57847e);_0x465500(_0x432a88['error'](0x1f4,_0x330ba5['message']));});});};exports[_0x3413('0x20')]=function(_0x2b856c){var _0xcdaf27=this;return new Promise(function(_0x276e4b,_0x47be76){return db[_0x3413('0x15')][_0x3413('0x21')]({'raw':_0x2b856c['options']?_0x2b856c[_0x3413('0x17')][_0x3413('0x18')]===undefined?!![]:![]:!![],'where':_0x2b856c[_0x3413('0x17')]?_0x2b856c[_0x3413('0x17')][_0x3413('0x22')]||null:null,'attributes':_0x2b856c[_0x3413('0x17')]?_0x2b856c['options'][_0x3413('0x19')]||null:null,'include':_0x2b856c[_0x3413('0x17')]?_0x2b856c['options']['include']?_[_0x3413('0x1d')](_0x2b856c[_0x3413('0x17')][_0x3413('0x1b')],function(_0x4ccdbe){return{'model':db[_0x4ccdbe[_0x3413('0x1c')]],'as':_0x4ccdbe['as'],'attributes':_0x4ccdbe[_0x3413('0x19')],'include':_0x4ccdbe[_0x3413('0x1b')]?_[_0x3413('0x1d')](_0x4ccdbe[_0x3413('0x1b')],function(_0x4839d1){return{'model':db[_0x4839d1['model']],'as':_0x4839d1['as'],'attributes':_0x4839d1[_0x3413('0x19')],'include':_0x4839d1[_0x3413('0x1b')]?_['map'](_0x4839d1[_0x3413('0x1b')],function(_0x77b90f){return{'model':db[_0x77b90f['model']],'as':_0x77b90f['as'],'attributes':_0x77b90f[_0x3413('0x19')]};}):[]};}):[]};}):[]:[]})[_0x3413('0xb')](function(_0x2840c2){logger[_0x3413('0xc')](_0x3413('0x20'),_0x2b856c);logger[_0x3413('0xd')](_0x3413('0x20'),_0x2b856c,JSON[_0x3413('0xf')](_0x2840c2));_0x276e4b(_0x2840c2);})[_0x3413('0x1f')](function(_0x3d52da){logger[_0x3413('0x10')]('ShowServicenowAccount',_0x3d52da['message'],_0x2b856c);_0x47be76(_0xcdaf27['error'](0x1f4,_0x3d52da[_0x3413('0x12')]));});});};
\ No newline at end of file
index cac1636..6573e56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e2c=['./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getSubjects','getDescriptions','post','create','put','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x557f5f,_0x31d8e7){var _0x196eba=function(_0x433d89){while(--_0x433d89){_0x557f5f['push'](_0x557f5f['shift']());}};_0x196eba(++_0x31d8e7);}(_0x6e2c,0xef));var _0xc6e2=function(_0x10c226,_0xd3776f){_0x10c226=_0x10c226-0x0;var _0x32192a=_0x6e2c[_0x10c226];return _0x32192a;};'use strict';var multer=require(_0xc6e2('0x0'));var util=require(_0xc6e2('0x1'));var path=require(_0xc6e2('0x2'));var timeout=require('connect-timeout');var express=require(_0xc6e2('0x3'));var router=express[_0xc6e2('0x4')]();var fs_extra=require(_0xc6e2('0x5'));var auth=require(_0xc6e2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc6e2('0x7'));var controller=require(_0xc6e2('0x8'));router[_0xc6e2('0x9')]('/',auth[_0xc6e2('0xa')](),controller[_0xc6e2('0xb')]);router[_0xc6e2('0x9')](_0xc6e2('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xc6e2('0x9')](_0xc6e2('0xd'),auth[_0xc6e2('0xa')](),controller['getFields']);router[_0xc6e2('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xc6e2('0xe')]);router[_0xc6e2('0x9')]('/:id/descriptions',auth[_0xc6e2('0xa')](),controller[_0xc6e2('0xf')]);router[_0xc6e2('0x10')]('/',auth[_0xc6e2('0xa')](),controller[_0xc6e2('0x11')]);router[_0xc6e2('0x12')](_0xc6e2('0xc'),auth[_0xc6e2('0xa')](),controller['update']);router['delete'](_0xc6e2('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xd7b2=['post','create','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','index','get','/:id','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x524c9e,_0x395031){var _0x3d9e66=function(_0x1e8439){while(--_0x1e8439){_0x524c9e['push'](_0x524c9e['shift']());}};_0x3d9e66(++_0x395031);}(_0xd7b2,0xd6));var _0x2d7b=function(_0x590db6,_0x190b08){_0x590db6=_0x590db6-0x0;var _0x2745b8=_0xd7b2[_0x590db6];return _0x2745b8;};'use strict';var multer=require(_0x2d7b('0x0'));var util=require('util');var path=require(_0x2d7b('0x1'));var timeout=require(_0x2d7b('0x2'));var express=require(_0x2d7b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2d7b('0x4'));var interaction=require(_0x2d7b('0x5'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x2d7b('0x6')]);router[_0x2d7b('0x7')](_0x2d7b('0x8'),auth['isAuthenticated'](),controller['show']);router[_0x2d7b('0x7')]('/:id/fields',auth[_0x2d7b('0x9')](),controller[_0x2d7b('0xa')]);router[_0x2d7b('0x7')](_0x2d7b('0xb'),auth['isAuthenticated'](),controller[_0x2d7b('0xc')]);router[_0x2d7b('0x7')](_0x2d7b('0xd'),auth[_0x2d7b('0x9')](),controller['getDescriptions']);router[_0x2d7b('0xe')]('/',auth['isAuthenticated'](),controller[_0x2d7b('0xf')]);router['put'](_0x2d7b('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x2d7b('0x10')](_0x2d7b('0x8'),auth['isAuthenticated'](),controller[_0x2d7b('0x11')]);module[_0x2d7b('0x12')]=router;
\ No newline at end of file
index a837890..73e5812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a29=['exports','STRING','sequelize'];(function(_0x339b49,_0x1dc75b){var _0x29808a=function(_0x13f685){while(--_0x13f685){_0x339b49['push'](_0x339b49['shift']());}};_0x29808a(++_0x1dc75b);}(_0x7a29,0xfb));var _0x97a2=function(_0x2d2ded,_0x5744dc){_0x2d2ded=_0x2d2ded-0x0;var _0x1dd004=_0x7a29[_0x2d2ded];return _0x1dd004;};'use strict';var Sequelize=require(_0x97a2('0x0'));module[_0x97a2('0x1')]={'name':{'type':Sequelize[_0x97a2('0x2')]},'description':{'type':Sequelize[_0x97a2('0x2')]}};
\ No newline at end of file
+var _0x6e9d=['sequelize','STRING'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0x6e9d,0x146));var _0xd6e9=function(_0x25880b,_0x292b0f){_0x25880b=_0x25880b-0x0;var _0x41ba86=_0x6e9d[_0x25880b];return _0x41ba86;};'use strict';var Sequelize=require(_0xd6e9('0x0'));module['exports']={'name':{'type':Sequelize[_0xd6e9('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8c77387..0613263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe518=['apply','reject','save','update','then','destroy','stack','name','send','ServicenowConfiguration','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch','show','params','keys','length','options','find','create','body','findOne','map','hasOwnProperty','getSubjects','getDescriptions','ServicenowField','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x25eaa8,_0x5ba844){var _0xdadd30=function(_0x1bfb47){while(--_0x1bfb47){_0x25eaa8['push'](_0x25eaa8['shift']());}};_0xdadd30(++_0x5ba844);}(_0xe518,0xc6));var _0x8e51=function(_0x32c61a,_0x55b28d){_0x32c61a=_0x32c61a-0x0;var _0x77d428=_0xe518[_0x32c61a];return _0x77d428;};'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(_0x8e51('0x0'));var moment=require(_0x8e51('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x8e51('0x2'));var util=require(_0x8e51('0x3'));var path=require(_0x8e51('0x4'));var sox=require(_0x8e51('0x5'));var csv=require('to-csv');var ejs=require(_0x8e51('0x6'));var fs=require('fs');var fs_extra=require(_0x8e51('0x7'));var _=require(_0x8e51('0x8'));var squel=require(_0x8e51('0x9'));var crypto=require(_0x8e51('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8e51('0xb'));var querystring=require(_0x8e51('0xc'));var Papa=require(_0x8e51('0xd'));var Redis=require(_0x8e51('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8e51('0xf'));var as=require(_0x8e51('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e51('0x11'))('api');var utils=require(_0x8e51('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x8e51('0x13'));var db=require(_0x8e51('0x14'))['db'];function respondWithStatusCode(_0x260a72,_0x13310a){_0x13310a=_0x13310a||0xcc;return function(_0x59f70a){if(_0x59f70a){return _0x260a72['sendStatus'](_0x13310a);}return _0x260a72[_0x8e51('0x15')](_0x13310a)[_0x8e51('0x16')]();};}function respondWithResult(_0x526f1f,_0x547695){_0x547695=_0x547695||0xc8;return function(_0x53d363){if(_0x53d363){return _0x526f1f[_0x8e51('0x15')](_0x547695)[_0x8e51('0x17')](_0x53d363);}};}function respondWithFilteredResult(_0x1ebf21,_0x3b0593){return function(_0x1babfd){if(_0x1babfd){var _0x3e4b96=typeof _0x3b0593[_0x8e51('0x18')]===_0x8e51('0x19')&&typeof _0x3b0593['limit']==='undefined';var _0x475513=_0x1babfd[_0x8e51('0x1a')];var _0x44b3b4=_0x3e4b96?0x0:_0x3b0593[_0x8e51('0x18')];var _0x2bf57e=_0x3e4b96?_0x1babfd[_0x8e51('0x1a')]:_0x3b0593['offset']+_0x3b0593[_0x8e51('0x1b')];var _0x4e387d;if(_0x2bf57e>=_0x475513){_0x2bf57e=_0x475513;_0x4e387d=0xc8;}else{_0x4e387d=0xce;}_0x1ebf21['status'](_0x4e387d);return _0x1ebf21[_0x8e51('0x1c')](_0x8e51('0x1d'),_0x44b3b4+'-'+_0x2bf57e+'/'+_0x475513)['json'](_0x1babfd);}return null;};}function patchUpdates(_0x2d7529){return function(_0x4be637){try{jsonpatch[_0x8e51('0x1e')](_0x4be637,_0x2d7529,!![]);}catch(_0x15eef7){return BPromise[_0x8e51('0x1f')](_0x15eef7);}return _0x4be637[_0x8e51('0x20')]();};}function saveUpdates(_0x1517d2,_0x1a7881){return function(_0x244934){if(_0x244934){return _0x244934[_0x8e51('0x21')](_0x1517d2)[_0x8e51('0x22')](function(_0x2ea686){return _0x2ea686;});}return null;};}function removeEntity(_0x266348,_0x212df8){return function(_0x123ba5){if(_0x123ba5){return _0x123ba5[_0x8e51('0x23')]()[_0x8e51('0x22')](function(){_0x266348[_0x8e51('0x15')](0xcc)[_0x8e51('0x16')]();});}};}function handleEntityNotFound(_0x50571f,_0x17d46c){return function(_0x45a511){if(!_0x45a511){_0x50571f['sendStatus'](0x194);}return _0x45a511;};}function handleError(_0xeaf5e7,_0x4d6ddc){_0x4d6ddc=_0x4d6ddc||0x1f4;return function(_0x51bc4f){logger['error'](_0x51bc4f[_0x8e51('0x24')]);if(_0x51bc4f[_0x8e51('0x25')]){delete _0x51bc4f[_0x8e51('0x25')];}_0xeaf5e7[_0x8e51('0x15')](_0x4d6ddc)[_0x8e51('0x26')](_0x51bc4f);};}exports['index']=function(_0x1e65a0,_0x44f4de){var _0x5c12b4={},_0x3ef7d2={},_0x34f330={'count':0x0,'rows':[]};var _0x977a2a=_['map'](db[_0x8e51('0x27')][_0x8e51('0x28')],function(_0x3d7448){return{'name':_0x3d7448[_0x8e51('0x29')],'type':_0x3d7448[_0x8e51('0x2a')][_0x8e51('0x2b')]};});_0x3ef7d2['model']=_['map'](_0x977a2a,_0x8e51('0x25'));_0x3ef7d2['query']=_['keys'](_0x1e65a0[_0x8e51('0x2c')]);_0x3ef7d2['filters']=_[_0x8e51('0x2d')](_0x3ef7d2[_0x8e51('0x2e')],_0x3ef7d2[_0x8e51('0x2c')]);_0x5c12b4[_0x8e51('0x2f')]=_[_0x8e51('0x2d')](_0x3ef7d2[_0x8e51('0x2e')],qs[_0x8e51('0x30')](_0x1e65a0[_0x8e51('0x2c')]['fields']));_0x5c12b4[_0x8e51('0x2f')]=_0x5c12b4['attributes']['length']?_0x5c12b4[_0x8e51('0x2f')]:_0x3ef7d2['model'];if(!_0x1e65a0[_0x8e51('0x2c')]['hasOwnProperty'](_0x8e51('0x31'))){_0x5c12b4[_0x8e51('0x1b')]=qs[_0x8e51('0x1b')](_0x1e65a0[_0x8e51('0x2c')]['limit']);_0x5c12b4[_0x8e51('0x18')]=qs[_0x8e51('0x18')](_0x1e65a0[_0x8e51('0x2c')][_0x8e51('0x18')]);}_0x5c12b4[_0x8e51('0x32')]=qs[_0x8e51('0x33')](_0x1e65a0['query']['sort']);_0x5c12b4[_0x8e51('0x34')]=qs[_0x8e51('0x35')](_[_0x8e51('0x36')](_0x1e65a0['query'],_0x3ef7d2[_0x8e51('0x35')]),_0x977a2a);if(_0x1e65a0[_0x8e51('0x2c')]['filter']){_0x5c12b4[_0x8e51('0x34')]=_[_0x8e51('0x37')](_0x5c12b4['where'],{'$or':_['map'](_0x977a2a,function(_0x3a428a){if(_0x3a428a[_0x8e51('0x2a')]!==_0x8e51('0x38')){var _0x3cd7ed={};_0x3cd7ed[_0x3a428a['name']]={'$like':'%'+_0x1e65a0[_0x8e51('0x2c')][_0x8e51('0x39')]+'%'};return _0x3cd7ed;}})});}_0x5c12b4=_[_0x8e51('0x37')]({},_0x5c12b4,_0x1e65a0['options']);var _0x293ccb={'where':_0x5c12b4['where']};return db[_0x8e51('0x27')][_0x8e51('0x1a')](_0x293ccb)[_0x8e51('0x22')](function(_0x178caf){_0x34f330[_0x8e51('0x1a')]=_0x178caf;if(_0x1e65a0[_0x8e51('0x2c')][_0x8e51('0x3a')]){_0x5c12b4[_0x8e51('0x3b')]=[{'all':!![]}];}return db[_0x8e51('0x27')]['findAll'](_0x5c12b4);})[_0x8e51('0x22')](function(_0x68f078){_0x34f330[_0x8e51('0x3c')]=_0x68f078;return _0x34f330;})[_0x8e51('0x22')](respondWithFilteredResult(_0x44f4de,_0x5c12b4))[_0x8e51('0x3d')](handleError(_0x44f4de,null));};exports[_0x8e51('0x3e')]=function(_0x4811b1,_0x39c513){var _0x41b705={'raw':![],'where':{'id':_0x4811b1[_0x8e51('0x3f')]['id']}},_0x4684f6={};_0x4684f6['model']=_['keys'](db[_0x8e51('0x27')]['rawAttributes']);_0x4684f6[_0x8e51('0x2c')]=_[_0x8e51('0x40')](_0x4811b1[_0x8e51('0x2c')]);_0x4684f6[_0x8e51('0x35')]=_['intersection'](_0x4684f6[_0x8e51('0x2e')],_0x4684f6[_0x8e51('0x2c')]);_0x41b705['attributes']=_[_0x8e51('0x2d')](_0x4684f6['model'],qs[_0x8e51('0x30')](_0x4811b1['query'][_0x8e51('0x30')]));_0x41b705[_0x8e51('0x2f')]=_0x41b705[_0x8e51('0x2f')][_0x8e51('0x41')]?_0x41b705[_0x8e51('0x2f')]:_0x4684f6['model'];if(_0x4811b1[_0x8e51('0x2c')][_0x8e51('0x3a')]){_0x41b705['include']=[{'all':!![]}];}_0x41b705=_[_0x8e51('0x37')]({},_0x41b705,_0x4811b1[_0x8e51('0x42')]);return db[_0x8e51('0x27')][_0x8e51('0x43')](_0x41b705)[_0x8e51('0x22')](handleEntityNotFound(_0x39c513,null))[_0x8e51('0x22')](respondWithResult(_0x39c513,null))[_0x8e51('0x3d')](handleError(_0x39c513,null));};exports[_0x8e51('0x44')]=function(_0x5ba6b1,_0x46b427){return db[_0x8e51('0x27')][_0x8e51('0x44')](_0x5ba6b1[_0x8e51('0x45')],{})[_0x8e51('0x22')](respondWithResult(_0x46b427,0xc9))[_0x8e51('0x3d')](handleError(_0x46b427,null));};exports[_0x8e51('0x21')]=function(_0x1229f8,_0xc03a9b){if(_0x1229f8[_0x8e51('0x45')]['id']){delete _0x1229f8[_0x8e51('0x45')]['id'];}return db['ServicenowConfiguration'][_0x8e51('0x43')]({'where':{'id':_0x1229f8['params']['id']}})[_0x8e51('0x22')](handleEntityNotFound(_0xc03a9b,null))[_0x8e51('0x22')](saveUpdates(_0x1229f8[_0x8e51('0x45')],null))[_0x8e51('0x22')](respondWithResult(_0xc03a9b,null))[_0x8e51('0x3d')](handleError(_0xc03a9b,null));};exports[_0x8e51('0x23')]=function(_0x303ed8,_0x3c75bf){return db[_0x8e51('0x27')][_0x8e51('0x43')]({'where':{'id':_0x303ed8['params']['id']}})[_0x8e51('0x22')](handleEntityNotFound(_0x3c75bf,null))['then'](removeEntity(_0x3c75bf,null))[_0x8e51('0x3d')](handleError(_0x3c75bf,null));};exports['getFields']=function(_0x242a1b,_0x5263f8,_0x78af40){var _0x3e1f4e={};var _0x5d92c9={};var _0x5b0527;var _0x563d2e;return db['ServicenowConfiguration'][_0x8e51('0x46')]({'where':{'id':_0x242a1b[_0x8e51('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5263f8,null))[_0x8e51('0x22')](function(_0x25e427){if(_0x25e427){_0x5b0527=_0x25e427;_0x5d92c9[_0x8e51('0x2e')]=_[_0x8e51('0x40')](db['ServicenowField'][_0x8e51('0x28')]);_0x5d92c9[_0x8e51('0x2c')]=_[_0x8e51('0x40')](_0x242a1b[_0x8e51('0x2c')]);_0x5d92c9[_0x8e51('0x35')]=_[_0x8e51('0x2d')](_0x5d92c9[_0x8e51('0x2e')],_0x5d92c9[_0x8e51('0x2c')]);_0x3e1f4e['attributes']=_[_0x8e51('0x2d')](_0x5d92c9['model'],qs['fields'](_0x242a1b['query'][_0x8e51('0x30')]));_0x3e1f4e[_0x8e51('0x2f')]=_0x3e1f4e[_0x8e51('0x2f')][_0x8e51('0x41')]?_0x3e1f4e[_0x8e51('0x2f')]:_0x5d92c9['model'];_0x3e1f4e[_0x8e51('0x32')]=qs['sort'](_0x242a1b[_0x8e51('0x2c')]['sort']);_0x3e1f4e[_0x8e51('0x34')]=qs[_0x8e51('0x35')](_[_0x8e51('0x36')](_0x242a1b[_0x8e51('0x2c')],_0x5d92c9[_0x8e51('0x35')]));if(_0x242a1b[_0x8e51('0x2c')][_0x8e51('0x39')]){_0x3e1f4e[_0x8e51('0x34')]=_['merge'](_0x3e1f4e[_0x8e51('0x34')],{'$or':_[_0x8e51('0x47')](_0x3e1f4e['attributes'],function(_0x3596d2){var _0x5eb952={};_0x5eb952[_0x3596d2]={'$like':'%'+_0x242a1b['query']['filter']+'%'};return _0x5eb952;})});}_0x3e1f4e=_['merge']({},_0x3e1f4e,_0x242a1b['options']);return _0x5b0527['getFields'](_0x3e1f4e);}})[_0x8e51('0x22')](function(_0x85308e){if(_0x85308e){_0x563d2e=_0x85308e[_0x8e51('0x41')];if(!_0x242a1b[_0x8e51('0x2c')][_0x8e51('0x48')]('nolimit')){_0x3e1f4e[_0x8e51('0x1b')]=qs['limit'](_0x242a1b[_0x8e51('0x2c')][_0x8e51('0x1b')]);_0x3e1f4e[_0x8e51('0x18')]=qs[_0x8e51('0x18')](_0x242a1b[_0x8e51('0x2c')]['offset']);}return _0x5b0527['getFields'](_0x3e1f4e);}})[_0x8e51('0x22')](function(_0x16b4a8){if(_0x16b4a8){return _0x16b4a8?{'count':_0x563d2e,'rows':_0x16b4a8}:null;}})[_0x8e51('0x22')](respondWithResult(_0x5263f8,null))[_0x8e51('0x3d')](handleError(_0x5263f8,null));};exports[_0x8e51('0x49')]=function(_0x361a43,_0x12b63a,_0x389468){var _0x3080f6={};var _0x58728b={};var _0x148cfb;var _0x102c55;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x361a43['params']['id']}})[_0x8e51('0x22')](handleEntityNotFound(_0x12b63a,null))[_0x8e51('0x22')](function(_0x4d14ae){if(_0x4d14ae){_0x148cfb=_0x4d14ae;_0x58728b['model']=_[_0x8e51('0x40')](db['ServicenowField'][_0x8e51('0x28')]);_0x58728b[_0x8e51('0x2c')]=_['keys'](_0x361a43[_0x8e51('0x2c')]);_0x58728b[_0x8e51('0x35')]=_[_0x8e51('0x2d')](_0x58728b['model'],_0x58728b[_0x8e51('0x2c')]);_0x3080f6[_0x8e51('0x2f')]=_[_0x8e51('0x2d')](_0x58728b[_0x8e51('0x2e')],qs[_0x8e51('0x30')](_0x361a43['query']['fields']));_0x3080f6[_0x8e51('0x2f')]=_0x3080f6[_0x8e51('0x2f')]['length']?_0x3080f6[_0x8e51('0x2f')]:_0x58728b['model'];_0x3080f6[_0x8e51('0x32')]=qs[_0x8e51('0x33')](_0x361a43[_0x8e51('0x2c')]['sort']);_0x3080f6[_0x8e51('0x34')]=qs[_0x8e51('0x35')](_[_0x8e51('0x36')](_0x361a43[_0x8e51('0x2c')],_0x58728b['filters']));if(_0x361a43[_0x8e51('0x2c')]['filter']){_0x3080f6[_0x8e51('0x34')]=_[_0x8e51('0x37')](_0x3080f6[_0x8e51('0x34')],{'$or':_[_0x8e51('0x47')](_0x3080f6['attributes'],function(_0xb495f3){var _0x1b15e7={};_0x1b15e7[_0xb495f3]={'$like':'%'+_0x361a43[_0x8e51('0x2c')]['filter']+'%'};return _0x1b15e7;})});}_0x3080f6=_['merge']({},_0x3080f6,_0x361a43[_0x8e51('0x42')]);return _0x148cfb[_0x8e51('0x49')](_0x3080f6);}})['then'](function(_0x597c69){if(_0x597c69){_0x102c55=_0x597c69[_0x8e51('0x41')];if(!_0x361a43[_0x8e51('0x2c')][_0x8e51('0x48')](_0x8e51('0x31'))){_0x3080f6['limit']=qs[_0x8e51('0x1b')](_0x361a43[_0x8e51('0x2c')][_0x8e51('0x1b')]);_0x3080f6[_0x8e51('0x18')]=qs[_0x8e51('0x18')](_0x361a43['query'][_0x8e51('0x18')]);}return _0x148cfb[_0x8e51('0x49')](_0x3080f6);}})[_0x8e51('0x22')](function(_0x5ac077){if(_0x5ac077){return _0x5ac077?{'count':_0x102c55,'rows':_0x5ac077}:null;}})[_0x8e51('0x22')](respondWithResult(_0x12b63a,null))['catch'](handleError(_0x12b63a,null));};exports[_0x8e51('0x4a')]=function(_0x513096,_0x39e02a,_0x31c4ad){var _0x55c3d8={};var _0x5b7545={};var _0x9bafce;var _0x27fea4;return db[_0x8e51('0x27')][_0x8e51('0x46')]({'where':{'id':_0x513096[_0x8e51('0x3f')]['id']}})[_0x8e51('0x22')](handleEntityNotFound(_0x39e02a,null))[_0x8e51('0x22')](function(_0x36fe76){if(_0x36fe76){_0x9bafce=_0x36fe76;_0x5b7545[_0x8e51('0x2e')]=_[_0x8e51('0x40')](db[_0x8e51('0x4b')]['rawAttributes']);_0x5b7545[_0x8e51('0x2c')]=_[_0x8e51('0x40')](_0x513096[_0x8e51('0x2c')]);_0x5b7545[_0x8e51('0x35')]=_[_0x8e51('0x2d')](_0x5b7545[_0x8e51('0x2e')],_0x5b7545['query']);_0x55c3d8[_0x8e51('0x2f')]=_[_0x8e51('0x2d')](_0x5b7545[_0x8e51('0x2e')],qs[_0x8e51('0x30')](_0x513096[_0x8e51('0x2c')][_0x8e51('0x30')]));_0x55c3d8[_0x8e51('0x2f')]=_0x55c3d8[_0x8e51('0x2f')]['length']?_0x55c3d8[_0x8e51('0x2f')]:_0x5b7545[_0x8e51('0x2e')];_0x55c3d8[_0x8e51('0x32')]=qs[_0x8e51('0x33')](_0x513096['query']['sort']);_0x55c3d8[_0x8e51('0x34')]=qs['filters'](_['pick'](_0x513096[_0x8e51('0x2c')],_0x5b7545[_0x8e51('0x35')]));if(_0x513096['query'][_0x8e51('0x39')]){_0x55c3d8[_0x8e51('0x34')]=_[_0x8e51('0x37')](_0x55c3d8[_0x8e51('0x34')],{'$or':_[_0x8e51('0x47')](_0x55c3d8[_0x8e51('0x2f')],function(_0x19f045){var _0xc1d900={};_0xc1d900[_0x19f045]={'$like':'%'+_0x513096[_0x8e51('0x2c')][_0x8e51('0x39')]+'%'};return _0xc1d900;})});}_0x55c3d8=_[_0x8e51('0x37')]({},_0x55c3d8,_0x513096[_0x8e51('0x42')]);return _0x9bafce['getDescriptions'](_0x55c3d8);}})[_0x8e51('0x22')](function(_0x17df4b){if(_0x17df4b){_0x27fea4=_0x17df4b[_0x8e51('0x41')];if(!_0x513096[_0x8e51('0x2c')][_0x8e51('0x48')](_0x8e51('0x31'))){_0x55c3d8[_0x8e51('0x1b')]=qs['limit'](_0x513096[_0x8e51('0x2c')][_0x8e51('0x1b')]);_0x55c3d8[_0x8e51('0x18')]=qs['offset'](_0x513096[_0x8e51('0x2c')][_0x8e51('0x18')]);}return _0x9bafce[_0x8e51('0x4a')](_0x55c3d8);}})[_0x8e51('0x22')](function(_0x2152c6){if(_0x2152c6){return _0x2152c6?{'count':_0x27fea4,'rows':_0x2152c6}:null;}})['then'](respondWithResult(_0x39e02a,null))['catch'](handleError(_0x39e02a,null));};
\ No newline at end of file
+var _0x0255=['fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','create','body','find','getFields','findOne','ServicenowField','nolimit','getSubjects','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/license/util','sendStatus','end','json','undefined','count','offset','limit','status','Content-Range','reject','save','update','destroy','then','error','stack','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','name','keys','query','filters','intersection','model','attributes'];(function(_0xab33f0,_0x42ca18){var _0x18a6b9=function(_0x2c353e){while(--_0x2c353e){_0xab33f0['push'](_0xab33f0['shift']());}};_0x18a6b9(++_0x42ca18);}(_0x0255,0x15f));var _0x5025=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0255[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x5025('0x0'));var rimraf=require(_0x5025('0x1'));var zipdir=require(_0x5025('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5025('0x3'));var moment=require(_0x5025('0x4'));var BPromise=require(_0x5025('0x5'));var Mustache=require(_0x5025('0x6'));var util=require(_0x5025('0x7'));var path=require(_0x5025('0x8'));var sox=require(_0x5025('0x9'));var csv=require('to-csv');var ejs=require(_0x5025('0xa'));var fs=require('fs');var fs_extra=require(_0x5025('0xb'));var _=require(_0x5025('0xc'));var squel=require(_0x5025('0xd'));var crypto=require('crypto');var jsforce=require(_0x5025('0xe'));var deskjs=require(_0x5025('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5025('0x10'));var Papa=require(_0x5025('0x11'));var Redis=require(_0x5025('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5025('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5025('0x14'));var utils=require(_0x5025('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x5025('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a1152,_0x482d91){_0x482d91=_0x482d91||0xcc;return function(_0x10e48a){if(_0x10e48a){return _0x2a1152[_0x5025('0x17')](_0x482d91);}return _0x2a1152['status'](_0x482d91)[_0x5025('0x18')]();};}function respondWithResult(_0x583537,_0x3d7de8){_0x3d7de8=_0x3d7de8||0xc8;return function(_0x393a15){if(_0x393a15){return _0x583537['status'](_0x3d7de8)[_0x5025('0x19')](_0x393a15);}};}function respondWithFilteredResult(_0x4205e2,_0x13fd88){return function(_0x1fcc33){if(_0x1fcc33){var _0x9d771f=typeof _0x13fd88['offset']===_0x5025('0x1a')&&typeof _0x13fd88['limit']===_0x5025('0x1a');var _0x465a47=_0x1fcc33[_0x5025('0x1b')];var _0xddc0ef=_0x9d771f?0x0:_0x13fd88[_0x5025('0x1c')];var _0x6c79ef=_0x9d771f?_0x1fcc33[_0x5025('0x1b')]:_0x13fd88[_0x5025('0x1c')]+_0x13fd88[_0x5025('0x1d')];var _0x27212d;if(_0x6c79ef>=_0x465a47){_0x6c79ef=_0x465a47;_0x27212d=0xc8;}else{_0x27212d=0xce;}_0x4205e2[_0x5025('0x1e')](_0x27212d);return _0x4205e2['set'](_0x5025('0x1f'),_0xddc0ef+'-'+_0x6c79ef+'/'+_0x465a47)[_0x5025('0x19')](_0x1fcc33);}return null;};}function patchUpdates(_0x178350){return function(_0x4e8a16){try{jsonpatch['apply'](_0x4e8a16,_0x178350,!![]);}catch(_0x1d7257){return BPromise[_0x5025('0x20')](_0x1d7257);}return _0x4e8a16[_0x5025('0x21')]();};}function saveUpdates(_0x699987,_0x31440d){return function(_0x38529c){if(_0x38529c){return _0x38529c[_0x5025('0x22')](_0x699987)['then'](function(_0x1278e8){return _0x1278e8;});}return null;};}function removeEntity(_0x2c4df6,_0x3d0b03){return function(_0x5ae0a6){if(_0x5ae0a6){return _0x5ae0a6[_0x5025('0x23')]()[_0x5025('0x24')](function(){_0x2c4df6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x23f3ca,_0x205a9c){return function(_0x365acf){if(!_0x365acf){_0x23f3ca['sendStatus'](0x194);}return _0x365acf;};}function handleError(_0xc962cd,_0x11fdd1){_0x11fdd1=_0x11fdd1||0x1f4;return function(_0x29f379){logger[_0x5025('0x25')](_0x29f379[_0x5025('0x26')]);if(_0x29f379['name']){delete _0x29f379['name'];}_0xc962cd['status'](_0x11fdd1)[_0x5025('0x27')](_0x29f379);};}exports[_0x5025('0x28')]=function(_0x181839,_0x2b0d02){var _0x244756={},_0x2d1a26={},_0x1beb74={'count':0x0,'rows':[]};var _0xc8ff74=_[_0x5025('0x29')](db[_0x5025('0x2a')][_0x5025('0x2b')],function(_0x3f9840){return{'name':_0x3f9840[_0x5025('0x2c')],'type':_0x3f9840[_0x5025('0x2d')][_0x5025('0x2e')]};});_0x2d1a26['model']=_[_0x5025('0x29')](_0xc8ff74,_0x5025('0x2f'));_0x2d1a26['query']=_[_0x5025('0x30')](_0x181839[_0x5025('0x31')]);_0x2d1a26[_0x5025('0x32')]=_[_0x5025('0x33')](_0x2d1a26[_0x5025('0x34')],_0x2d1a26[_0x5025('0x31')]);_0x244756[_0x5025('0x35')]=_[_0x5025('0x33')](_0x2d1a26[_0x5025('0x34')],qs[_0x5025('0x36')](_0x181839['query'][_0x5025('0x36')]));_0x244756[_0x5025('0x35')]=_0x244756['attributes'][_0x5025('0x37')]?_0x244756['attributes']:_0x2d1a26['model'];if(!_0x181839[_0x5025('0x31')]['hasOwnProperty']('nolimit')){_0x244756[_0x5025('0x1d')]=qs[_0x5025('0x1d')](_0x181839[_0x5025('0x31')][_0x5025('0x1d')]);_0x244756[_0x5025('0x1c')]=qs[_0x5025('0x1c')](_0x181839[_0x5025('0x31')][_0x5025('0x1c')]);}_0x244756[_0x5025('0x38')]=qs['sort'](_0x181839[_0x5025('0x31')][_0x5025('0x39')]);_0x244756[_0x5025('0x3a')]=qs[_0x5025('0x32')](_[_0x5025('0x3b')](_0x181839[_0x5025('0x31')],_0x2d1a26[_0x5025('0x32')]),_0xc8ff74);if(_0x181839['query'][_0x5025('0x3c')]){_0x244756['where']=_[_0x5025('0x3d')](_0x244756[_0x5025('0x3a')],{'$or':_[_0x5025('0x29')](_0xc8ff74,function(_0x4b8983){if(_0x4b8983[_0x5025('0x2d')]!==_0x5025('0x3e')){var _0x59bcca={};_0x59bcca[_0x4b8983[_0x5025('0x2f')]]={'$like':'%'+_0x181839[_0x5025('0x31')][_0x5025('0x3c')]+'%'};return _0x59bcca;}})});}_0x244756=_[_0x5025('0x3d')]({},_0x244756,_0x181839[_0x5025('0x3f')]);var _0x28370c={'where':_0x244756[_0x5025('0x3a')]};return db[_0x5025('0x2a')]['count'](_0x28370c)[_0x5025('0x24')](function(_0x120adf){_0x1beb74['count']=_0x120adf;if(_0x181839[_0x5025('0x31')]['includeAll']){_0x244756['include']=[{'all':!![]}];}return db['ServicenowConfiguration'][_0x5025('0x40')](_0x244756);})[_0x5025('0x24')](function(_0x473afd){_0x1beb74[_0x5025('0x41')]=_0x473afd;return _0x1beb74;})[_0x5025('0x24')](respondWithFilteredResult(_0x2b0d02,_0x244756))[_0x5025('0x42')](handleError(_0x2b0d02,null));};exports[_0x5025('0x43')]=function(_0x213bdd,_0x59fa00){var _0xc69e50={'raw':![],'where':{'id':_0x213bdd[_0x5025('0x44')]['id']}},_0x12763a={};_0x12763a[_0x5025('0x34')]=_[_0x5025('0x30')](db[_0x5025('0x2a')][_0x5025('0x2b')]);_0x12763a['query']=_[_0x5025('0x30')](_0x213bdd[_0x5025('0x31')]);_0x12763a[_0x5025('0x32')]=_[_0x5025('0x33')](_0x12763a[_0x5025('0x34')],_0x12763a[_0x5025('0x31')]);_0xc69e50['attributes']=_[_0x5025('0x33')](_0x12763a[_0x5025('0x34')],qs[_0x5025('0x36')](_0x213bdd['query']['fields']));_0xc69e50[_0x5025('0x35')]=_0xc69e50[_0x5025('0x35')][_0x5025('0x37')]?_0xc69e50[_0x5025('0x35')]:_0x12763a[_0x5025('0x34')];if(_0x213bdd[_0x5025('0x31')][_0x5025('0x45')]){_0xc69e50[_0x5025('0x46')]=[{'all':!![]}];}_0xc69e50=_[_0x5025('0x3d')]({},_0xc69e50,_0x213bdd[_0x5025('0x3f')]);return db[_0x5025('0x2a')]['find'](_0xc69e50)[_0x5025('0x24')](handleEntityNotFound(_0x59fa00,null))[_0x5025('0x24')](respondWithResult(_0x59fa00,null))[_0x5025('0x42')](handleError(_0x59fa00,null));};exports[_0x5025('0x47')]=function(_0x56c337,_0x1f0538){return db[_0x5025('0x2a')][_0x5025('0x47')](_0x56c337['body'],{})['then'](respondWithResult(_0x1f0538,0xc9))[_0x5025('0x42')](handleError(_0x1f0538,null));};exports['update']=function(_0x1bfc53,_0x43be53){if(_0x1bfc53[_0x5025('0x48')]['id']){delete _0x1bfc53['body']['id'];}return db[_0x5025('0x2a')][_0x5025('0x49')]({'where':{'id':_0x1bfc53[_0x5025('0x44')]['id']}})['then'](handleEntityNotFound(_0x43be53,null))[_0x5025('0x24')](saveUpdates(_0x1bfc53['body'],null))[_0x5025('0x24')](respondWithResult(_0x43be53,null))[_0x5025('0x42')](handleError(_0x43be53,null));};exports[_0x5025('0x23')]=function(_0x73e0fa,_0x505877){return db[_0x5025('0x2a')][_0x5025('0x49')]({'where':{'id':_0x73e0fa[_0x5025('0x44')]['id']}})[_0x5025('0x24')](handleEntityNotFound(_0x505877,null))[_0x5025('0x24')](removeEntity(_0x505877,null))['catch'](handleError(_0x505877,null));};exports[_0x5025('0x4a')]=function(_0x235f68,_0x586064,_0x2b4f8e){var _0x2a5a31={};var _0x39b52a={};var _0x77ba7d;var _0x3cadfb;return db['ServicenowConfiguration'][_0x5025('0x4b')]({'where':{'id':_0x235f68['params']['id']}})['then'](handleEntityNotFound(_0x586064,null))[_0x5025('0x24')](function(_0x5009a3){if(_0x5009a3){_0x77ba7d=_0x5009a3;_0x39b52a[_0x5025('0x34')]=_[_0x5025('0x30')](db[_0x5025('0x4c')][_0x5025('0x2b')]);_0x39b52a[_0x5025('0x31')]=_['keys'](_0x235f68['query']);_0x39b52a[_0x5025('0x32')]=_[_0x5025('0x33')](_0x39b52a['model'],_0x39b52a[_0x5025('0x31')]);_0x2a5a31[_0x5025('0x35')]=_[_0x5025('0x33')](_0x39b52a[_0x5025('0x34')],qs['fields'](_0x235f68['query'][_0x5025('0x36')]));_0x2a5a31[_0x5025('0x35')]=_0x2a5a31[_0x5025('0x35')][_0x5025('0x37')]?_0x2a5a31[_0x5025('0x35')]:_0x39b52a[_0x5025('0x34')];_0x2a5a31[_0x5025('0x38')]=qs[_0x5025('0x39')](_0x235f68[_0x5025('0x31')]['sort']);_0x2a5a31[_0x5025('0x3a')]=qs[_0x5025('0x32')](_[_0x5025('0x3b')](_0x235f68['query'],_0x39b52a[_0x5025('0x32')]));if(_0x235f68[_0x5025('0x31')][_0x5025('0x3c')]){_0x2a5a31[_0x5025('0x3a')]=_[_0x5025('0x3d')](_0x2a5a31[_0x5025('0x3a')],{'$or':_[_0x5025('0x29')](_0x2a5a31[_0x5025('0x35')],function(_0x4a5e36){var _0x23e988={};_0x23e988[_0x4a5e36]={'$like':'%'+_0x235f68[_0x5025('0x31')][_0x5025('0x3c')]+'%'};return _0x23e988;})});}_0x2a5a31=_[_0x5025('0x3d')]({},_0x2a5a31,_0x235f68[_0x5025('0x3f')]);return _0x77ba7d[_0x5025('0x4a')](_0x2a5a31);}})['then'](function(_0x5791f7){if(_0x5791f7){_0x3cadfb=_0x5791f7['length'];if(!_0x235f68[_0x5025('0x31')]['hasOwnProperty'](_0x5025('0x4d'))){_0x2a5a31[_0x5025('0x1d')]=qs[_0x5025('0x1d')](_0x235f68['query'][_0x5025('0x1d')]);_0x2a5a31[_0x5025('0x1c')]=qs[_0x5025('0x1c')](_0x235f68[_0x5025('0x31')][_0x5025('0x1c')]);}return _0x77ba7d[_0x5025('0x4a')](_0x2a5a31);}})[_0x5025('0x24')](function(_0x24a5c6){if(_0x24a5c6){return _0x24a5c6?{'count':_0x3cadfb,'rows':_0x24a5c6}:null;}})[_0x5025('0x24')](respondWithResult(_0x586064,null))[_0x5025('0x42')](handleError(_0x586064,null));};exports[_0x5025('0x4e')]=function(_0x5a7e4f,_0x1614ff,_0x4be536){var _0x5f4111={};var _0x11e8a7={};var _0x4f6ce2;var _0x25f919;return db[_0x5025('0x2a')][_0x5025('0x4b')]({'where':{'id':_0x5a7e4f[_0x5025('0x44')]['id']}})[_0x5025('0x24')](handleEntityNotFound(_0x1614ff,null))[_0x5025('0x24')](function(_0x210b8a){if(_0x210b8a){_0x4f6ce2=_0x210b8a;_0x11e8a7[_0x5025('0x34')]=_[_0x5025('0x30')](db[_0x5025('0x4c')]['rawAttributes']);_0x11e8a7[_0x5025('0x31')]=_[_0x5025('0x30')](_0x5a7e4f['query']);_0x11e8a7[_0x5025('0x32')]=_[_0x5025('0x33')](_0x11e8a7[_0x5025('0x34')],_0x11e8a7['query']);_0x5f4111['attributes']=_['intersection'](_0x11e8a7['model'],qs['fields'](_0x5a7e4f[_0x5025('0x31')][_0x5025('0x36')]));_0x5f4111[_0x5025('0x35')]=_0x5f4111['attributes']['length']?_0x5f4111[_0x5025('0x35')]:_0x11e8a7['model'];_0x5f4111['order']=qs[_0x5025('0x39')](_0x5a7e4f[_0x5025('0x31')][_0x5025('0x39')]);_0x5f4111[_0x5025('0x3a')]=qs[_0x5025('0x32')](_['pick'](_0x5a7e4f[_0x5025('0x31')],_0x11e8a7[_0x5025('0x32')]));if(_0x5a7e4f[_0x5025('0x31')][_0x5025('0x3c')]){_0x5f4111['where']=_[_0x5025('0x3d')](_0x5f4111['where'],{'$or':_['map'](_0x5f4111[_0x5025('0x35')],function(_0x5509ee){var _0xacda76={};_0xacda76[_0x5509ee]={'$like':'%'+_0x5a7e4f['query']['filter']+'%'};return _0xacda76;})});}_0x5f4111=_[_0x5025('0x3d')]({},_0x5f4111,_0x5a7e4f[_0x5025('0x3f')]);return _0x4f6ce2[_0x5025('0x4e')](_0x5f4111);}})[_0x5025('0x24')](function(_0x5d734a){if(_0x5d734a){_0x25f919=_0x5d734a['length'];if(!_0x5a7e4f[_0x5025('0x31')][_0x5025('0x4f')](_0x5025('0x4d'))){_0x5f4111[_0x5025('0x1d')]=qs[_0x5025('0x1d')](_0x5a7e4f[_0x5025('0x31')][_0x5025('0x1d')]);_0x5f4111['offset']=qs[_0x5025('0x1c')](_0x5a7e4f['query'][_0x5025('0x1c')]);}return _0x4f6ce2[_0x5025('0x4e')](_0x5f4111);}})[_0x5025('0x24')](function(_0x1c2d40){if(_0x1c2d40){return _0x1c2d40?{'count':_0x25f919,'rows':_0x1c2d40}:null;}})[_0x5025('0x24')](respondWithResult(_0x1614ff,null))[_0x5025('0x42')](handleError(_0x1614ff,null));};exports[_0x5025('0x50')]=function(_0x10dfae,_0x3d1aa6,_0x4dfacd){var _0x1260ab={};var _0x1e07d7={};var _0x4404f1;var _0x309bd7;return db[_0x5025('0x2a')][_0x5025('0x4b')]({'where':{'id':_0x10dfae[_0x5025('0x44')]['id']}})[_0x5025('0x24')](handleEntityNotFound(_0x3d1aa6,null))['then'](function(_0x500797){if(_0x500797){_0x4404f1=_0x500797;_0x1e07d7[_0x5025('0x34')]=_[_0x5025('0x30')](db['ServicenowField'][_0x5025('0x2b')]);_0x1e07d7[_0x5025('0x31')]=_[_0x5025('0x30')](_0x10dfae[_0x5025('0x31')]);_0x1e07d7[_0x5025('0x32')]=_[_0x5025('0x33')](_0x1e07d7[_0x5025('0x34')],_0x1e07d7[_0x5025('0x31')]);_0x1260ab[_0x5025('0x35')]=_['intersection'](_0x1e07d7[_0x5025('0x34')],qs[_0x5025('0x36')](_0x10dfae[_0x5025('0x31')]['fields']));_0x1260ab[_0x5025('0x35')]=_0x1260ab[_0x5025('0x35')][_0x5025('0x37')]?_0x1260ab[_0x5025('0x35')]:_0x1e07d7[_0x5025('0x34')];_0x1260ab[_0x5025('0x38')]=qs[_0x5025('0x39')](_0x10dfae[_0x5025('0x31')][_0x5025('0x39')]);_0x1260ab[_0x5025('0x3a')]=qs[_0x5025('0x32')](_[_0x5025('0x3b')](_0x10dfae[_0x5025('0x31')],_0x1e07d7[_0x5025('0x32')]));if(_0x10dfae[_0x5025('0x31')][_0x5025('0x3c')]){_0x1260ab['where']=_[_0x5025('0x3d')](_0x1260ab[_0x5025('0x3a')],{'$or':_[_0x5025('0x29')](_0x1260ab[_0x5025('0x35')],function(_0x5abd01){var _0x5e9561={};_0x5e9561[_0x5abd01]={'$like':'%'+_0x10dfae['query']['filter']+'%'};return _0x5e9561;})});}_0x1260ab=_[_0x5025('0x3d')]({},_0x1260ab,_0x10dfae[_0x5025('0x3f')]);return _0x4404f1['getDescriptions'](_0x1260ab);}})[_0x5025('0x24')](function(_0x12b64e){if(_0x12b64e){_0x309bd7=_0x12b64e[_0x5025('0x37')];if(!_0x10dfae['query'][_0x5025('0x4f')](_0x5025('0x4d'))){_0x1260ab['limit']=qs[_0x5025('0x1d')](_0x10dfae[_0x5025('0x31')][_0x5025('0x1d')]);_0x1260ab[_0x5025('0x1c')]=qs['offset'](_0x10dfae[_0x5025('0x31')][_0x5025('0x1c')]);}return _0x4404f1['getDescriptions'](_0x1260ab);}})[_0x5025('0x24')](function(_0x6f1625){if(_0x6f1625){return _0x6f1625?{'count':_0x309bd7,'rows':_0x6f1625}:null;}})['then'](respondWithResult(_0x3d1aa6,null))[_0x5025('0x42')](handleError(_0x3d1aa6,null));};
\ No newline at end of file
index 6686eef..3e3241b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x337f=['rimraf','../../config/environment','exports','ServicenowConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x13fc2a,_0x505a7d){var _0x3fb4d6=function(_0x5b4fe7){while(--_0x5b4fe7){_0x13fc2a['push'](_0x13fc2a['shift']());}};_0x3fb4d6(++_0x505a7d);}(_0x337f,0x11c));var _0xf337=function(_0x49ccd3,_0x288f0f){_0x49ccd3=_0x49ccd3-0x0;var _0x21301d=_0x337f[_0x49ccd3];return _0x21301d;};'use strict';var _=require(_0xf337('0x0'));var util=require(_0xf337('0x1'));var logger=require(_0xf337('0x2'))('api');var moment=require(_0xf337('0x3'));var BPromise=require(_0xf337('0x4'));var rp=require(_0xf337('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf337('0x6'));var config=require(_0xf337('0x7'));var attributes=require('./intServicenowConfiguration.attributes');module[_0xf337('0x8')]=function(_0x485b2a,_0x4580a3){return _0x485b2a['define'](_0xf337('0x9'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x15b8=['moment','bluebird','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','api'];(function(_0x2f99cb,_0x1816ed){var _0x40b317=function(_0x289caa){while(--_0x289caa){_0x2f99cb['push'](_0x2f99cb['shift']());}};_0x40b317(++_0x1816ed);}(_0x15b8,0xcd));var _0x815b=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x15b8[_0x45d55e];return _0x29812a;};'use strict';var _=require('lodash');var util=require(_0x815b('0x0'));var logger=require(_0x815b('0x1'))(_0x815b('0x2'));var moment=require(_0x815b('0x3'));var BPromise=require(_0x815b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x815b('0x5'));var rimraf=require(_0x815b('0x6'));var config=require(_0x815b('0x7'));var attributes=require(_0x815b('0x8'));module[_0x815b('0x9')]=function(_0x37a503,_0x581869){return _0x37a503[_0x815b('0xa')](_0x815b('0xb'),attributes,{'tableName':_0x815b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fd61e4f..13d6303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b3=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x83b3,0x147));var _0x383b=function(_0x37cc40,_0x48abc0){_0x37cc40=_0x37cc40-0x0;var _0x3cfa21=_0x83b3[_0x37cc40];return _0x3cfa21;};'use strict';var _=require(_0x383b('0x0'));var util=require(_0x383b('0x1'));var moment=require(_0x383b('0x2'));var BPromise=require(_0x383b('0x3'));var rs=require(_0x383b('0x4'));var fs=require('fs');var Redis=require(_0x383b('0x5'));var db=require(_0x383b('0x6'))['db'];var utils=require(_0x383b('0x7'));var logger=require(_0x383b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x383b('0x9'));var client=jayson[_0x383b('0xa')][_0x383b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x369aac,_0x310d35,_0x2e7aff){return new BPromise(function(_0x3f557f,_0x392a26){return client[_0x383b('0xc')](_0x369aac,_0x2e7aff)[_0x383b('0xd')](function(_0x43017c){logger['info'](_0x383b('0xe'),_0x310d35,_0x383b('0xf'));logger[_0x383b('0x10')](_0x383b('0x11'),_0x310d35,_0x383b('0xf'),JSON['stringify'](_0x43017c));if(_0x43017c[_0x383b('0x12')]){if(_0x43017c['error'][_0x383b('0x13')]===0x1f4){logger['error'](_0x383b('0xe'),_0x310d35,_0x43017c[_0x383b('0x12')][_0x383b('0x14')]);return _0x392a26(_0x43017c[_0x383b('0x12')][_0x383b('0x14')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x310d35,_0x43017c[_0x383b('0x12')][_0x383b('0x14')]);return _0x3f557f(_0x43017c[_0x383b('0x12')][_0x383b('0x14')]);}else{logger['info'](_0x383b('0xe'),_0x310d35,_0x383b('0xf'));_0x3f557f(_0x43017c[_0x383b('0x15')][_0x383b('0x14')]);}})[_0x383b('0x16')](function(_0x17c1c4){logger[_0x383b('0x12')](_0x383b('0xe'),_0x310d35,_0x17c1c4);_0x392a26(_0x17c1c4);});});}
\ No newline at end of file
+var _0xb079=['ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s'];(function(_0x3ae998,_0x731a1d){var _0x1f45b4=function(_0x1d3097){while(--_0x1d3097){_0x3ae998['push'](_0x3ae998['shift']());}};_0x1f45b4(++_0x731a1d);}(_0xb079,0x133));var _0x9b07=function(_0x5c0f17,_0x2c7a95){_0x5c0f17=_0x5c0f17-0x0;var _0x160ef5=_0xb079[_0x5c0f17];return _0x160ef5;};'use strict';var _=require(_0x9b07('0x0'));var util=require(_0x9b07('0x1'));var moment=require(_0x9b07('0x2'));var BPromise=require('bluebird');var rs=require(_0x9b07('0x3'));var fs=require('fs');var Redis=require(_0x9b07('0x4'));var db=require(_0x9b07('0x5'))['db'];var utils=require(_0x9b07('0x6'));var logger=require('../../config/logger')(_0x9b07('0x7'));var config=require(_0x9b07('0x8'));var jayson=require(_0x9b07('0x9'));var client=jayson['client'][_0x9b07('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59237b,_0x4f6779,_0x5621ea){return new BPromise(function(_0x239384,_0x1fd218){return client[_0x9b07('0xb')](_0x59237b,_0x5621ea)[_0x9b07('0xc')](function(_0x1c64cf){logger[_0x9b07('0xd')](_0x9b07('0xe'),_0x4f6779,'request\x20sent');logger['debug'](_0x9b07('0xf'),_0x4f6779,_0x9b07('0x10'),JSON[_0x9b07('0x11')](_0x1c64cf));if(_0x1c64cf[_0x9b07('0x12')]){if(_0x1c64cf[_0x9b07('0x12')][_0x9b07('0x13')]===0x1f4){logger[_0x9b07('0x12')](_0x9b07('0xe'),_0x4f6779,_0x1c64cf['error'][_0x9b07('0x14')]);return _0x1fd218(_0x1c64cf['error'][_0x9b07('0x14')]);}logger['error'](_0x9b07('0xe'),_0x4f6779,_0x1c64cf[_0x9b07('0x12')][_0x9b07('0x14')]);return _0x239384(_0x1c64cf[_0x9b07('0x12')][_0x9b07('0x14')]);}else{logger[_0x9b07('0xd')](_0x9b07('0xe'),_0x4f6779,_0x9b07('0x10'));_0x239384(_0x1c64cf[_0x9b07('0x15')][_0x9b07('0x14')]);}})[_0x9b07('0x16')](function(_0x1e26f6){logger['error'](_0x9b07('0xe'),_0x4f6779,_0x1e26f6);_0x1fd218(_0x1e26f6);});});}
\ No newline at end of file
index 33eda0c..6d64c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b1=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','create','put','exports','multer'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x64b1,0x13f));var _0x164b=function(_0x1018f8,_0x4b6a59){_0x1018f8=_0x1018f8-0x0;var _0xde1fee=_0x64b1[_0x1018f8];return _0xde1fee;};'use strict';var multer=require(_0x164b('0x0'));var util=require(_0x164b('0x1'));var path=require(_0x164b('0x2'));var timeout=require(_0x164b('0x3'));var express=require(_0x164b('0x4'));var router=express[_0x164b('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x164b('0x6'));var config=require(_0x164b('0x7'));var controller=require(_0x164b('0x8'));router[_0x164b('0x9')]('/',auth[_0x164b('0xa')](),controller[_0x164b('0xb')]);router[_0x164b('0x9')](_0x164b('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x164b('0xd')]);router[_0x164b('0xe')](_0x164b('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x164b('0xc'),auth[_0x164b('0xa')](),controller['destroy']);module[_0x164b('0xf')]=router;
\ No newline at end of file
+var _0x08be=['get','isAuthenticated','index','/:id','show','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowField.controller'];(function(_0x241424,_0x25eb5d){var _0x3da798=function(_0x415153){while(--_0x415153){_0x241424['push'](_0x241424['shift']());}};_0x3da798(++_0x25eb5d);}(_0x08be,0x6f));var _0xe08b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x08be[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xe08b('0x0'));var util=require(_0xe08b('0x1'));var path=require(_0xe08b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe08b('0x3')]();var fs_extra=require(_0xe08b('0x4'));var auth=require(_0xe08b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe08b('0x6'));var controller=require(_0xe08b('0x7'));router[_0xe08b('0x8')]('/',auth[_0xe08b('0x9')](),controller[_0xe08b('0xa')]);router[_0xe08b('0x8')](_0xe08b('0xb'),auth[_0xe08b('0x9')](),controller[_0xe08b('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xe08b('0xb'),auth[_0xe08b('0x9')](),controller[_0xe08b('0xd')]);router[_0xe08b('0xe')]('/:id',auth[_0xe08b('0x9')](),controller[_0xe08b('0xf')]);module[_0xe08b('0x10')]=router;
\ No newline at end of file
index e8ea3a4..00e66a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fab=['exports','ENUM','string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize'];(function(_0x1f99de,_0x3c0d0a){var _0x6deea4=function(_0x4e24d0){while(--_0x4e24d0){_0x1f99de['push'](_0x1f99de['shift']());}};_0x6deea4(++_0x3c0d0a);}(_0x9fab,0xd1));var _0xb9fa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9fab[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb9fa('0x0'));module[_0xb9fa('0x1')]={'type':{'type':Sequelize[_0xb9fa('0x2')](_0xb9fa('0x3'),'variable',_0xb9fa('0x4'),_0xb9fa('0x5'),_0xb9fa('0x6')),'defaultValue':_0xb9fa('0x3')},'content':{'type':Sequelize[_0xb9fa('0x7')]},'key':{'type':Sequelize[_0xb9fa('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0xb9fa('0x8'),_0xb9fa('0x4'))},'keyContent':{'type':Sequelize[_0xb9fa('0x7')]},'idField':{'type':Sequelize[_0xb9fa('0x7')]},'nameField':{'type':Sequelize[_0xb9fa('0x7')]},'customField':{'type':Sequelize[_0xb9fa('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1ba0=['customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x480455,_0x449bb4){var _0x9105e4=function(_0xd6fdcd){while(--_0xd6fdcd){_0x480455['push'](_0x480455['shift']());}};_0x9105e4(++_0x449bb4);}(_0x1ba0,0x11b));var _0x01ba=function(_0x5f0fea,_0x1eb09a){_0x5f0fea=_0x5f0fea-0x0;var _0x4a0b45=_0x1ba0[_0x5f0fea];return _0x4a0b45;};'use strict';var Sequelize=require(_0x01ba('0x0'));module[_0x01ba('0x1')]={'type':{'type':Sequelize[_0x01ba('0x2')](_0x01ba('0x3'),_0x01ba('0x4'),_0x01ba('0x5'),_0x01ba('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x01ba('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x01ba('0x3'),'variable',_0x01ba('0x5'))},'keyContent':{'type':Sequelize[_0x01ba('0x7')]},'idField':{'type':Sequelize[_0x01ba('0x7')]},'nameField':{'type':Sequelize[_0x01ba('0x7')]},'customField':{'type':Sequelize[_0x01ba('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x01ba('0x7')]}};
\ No newline at end of file
index 2452733..81f9a87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec89=['fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','send','rawAttributes','fieldName','key','model','name','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','ServicenowField','includeAll','include','findAll','catch','params','find','create','body','zip-dir'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xec89,0x87));var _0x9ec8=function(_0x38d706,_0x5041be){_0x38d706=_0x38d706-0x0;var _0x519340=_0xec89[_0x38d706];return _0x519340;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9ec8('0x0'));var jsonpatch=require(_0x9ec8('0x1'));var rp=require(_0x9ec8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9ec8('0x3'));var path=require(_0x9ec8('0x4'));var sox=require(_0x9ec8('0x5'));var csv=require(_0x9ec8('0x6'));var ejs=require(_0x9ec8('0x7'));var fs=require('fs');var fs_extra=require(_0x9ec8('0x8'));var _=require('lodash');var squel=require(_0x9ec8('0x9'));var crypto=require(_0x9ec8('0xa'));var jsforce=require(_0x9ec8('0xb'));var deskjs=require(_0x9ec8('0xc'));var toCsv=require(_0x9ec8('0x6'));var querystring=require(_0x9ec8('0xd'));var Papa=require('papaparse');var Redis=require(_0x9ec8('0xe'));var authService=require(_0x9ec8('0xf'));var qs=require(_0x9ec8('0x10'));var as=require(_0x9ec8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9ec8('0x12'))(_0x9ec8('0x13'));var utils=require(_0x9ec8('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9ec8('0x15'))['db'];function respondWithStatusCode(_0x57154e,_0x2563c6){_0x2563c6=_0x2563c6||0xcc;return function(_0x59f181){if(_0x59f181){return _0x57154e['sendStatus'](_0x2563c6);}return _0x57154e[_0x9ec8('0x16')](_0x2563c6)[_0x9ec8('0x17')]();};}function respondWithResult(_0x29793c,_0x37e59d){_0x37e59d=_0x37e59d||0xc8;return function(_0x4e000e){if(_0x4e000e){return _0x29793c[_0x9ec8('0x16')](_0x37e59d)[_0x9ec8('0x18')](_0x4e000e);}};}function respondWithFilteredResult(_0x448417,_0x354885){return function(_0x2d1672){if(_0x2d1672){var _0x3e69f9=typeof _0x354885[_0x9ec8('0x19')]==='undefined'&&typeof _0x354885[_0x9ec8('0x1a')]===_0x9ec8('0x1b');var _0x307672=_0x2d1672[_0x9ec8('0x1c')];var _0x535d93=_0x3e69f9?0x0:_0x354885[_0x9ec8('0x19')];var _0xe7ae8f=_0x3e69f9?_0x2d1672[_0x9ec8('0x1c')]:_0x354885[_0x9ec8('0x19')]+_0x354885[_0x9ec8('0x1a')];var _0x4fb728;if(_0xe7ae8f>=_0x307672){_0xe7ae8f=_0x307672;_0x4fb728=0xc8;}else{_0x4fb728=0xce;}_0x448417[_0x9ec8('0x16')](_0x4fb728);return _0x448417['set'](_0x9ec8('0x1d'),_0x535d93+'-'+_0xe7ae8f+'/'+_0x307672)[_0x9ec8('0x18')](_0x2d1672);}return null;};}function patchUpdates(_0x40c42e){return function(_0x19bee6){try{jsonpatch[_0x9ec8('0x1e')](_0x19bee6,_0x40c42e,!![]);}catch(_0x3b7789){return BPromise[_0x9ec8('0x1f')](_0x3b7789);}return _0x19bee6[_0x9ec8('0x20')]();};}function saveUpdates(_0x3a2afd,_0x56c696){return function(_0x442196){if(_0x442196){return _0x442196[_0x9ec8('0x21')](_0x3a2afd)[_0x9ec8('0x22')](function(_0x433ae0){return _0x433ae0;});}return null;};}function removeEntity(_0x45c326,_0x34a2e6){return function(_0x3d5af9){if(_0x3d5af9){return _0x3d5af9[_0x9ec8('0x23')]()['then'](function(){_0x45c326[_0x9ec8('0x16')](0xcc)[_0x9ec8('0x17')]();});}};}function handleEntityNotFound(_0xb4e9c0,_0x180250){return function(_0x15c8a5){if(!_0x15c8a5){_0xb4e9c0[_0x9ec8('0x24')](0x194);}return _0x15c8a5;};}function handleError(_0x5929cd,_0xd6948c){_0xd6948c=_0xd6948c||0x1f4;return function(_0x1b51f5){logger[_0x9ec8('0x25')](_0x1b51f5['stack']);if(_0x1b51f5['name']){delete _0x1b51f5['name'];}_0x5929cd['status'](_0xd6948c)[_0x9ec8('0x26')](_0x1b51f5);};}exports['index']=function(_0x2dfe0d,_0x5a832f){var _0x49a87a={},_0x3bf605={},_0x53dd5e={'count':0x0,'rows':[]};var _0x29f718=_['map'](db['ServicenowField'][_0x9ec8('0x27')],function(_0x2f66cc){return{'name':_0x2f66cc[_0x9ec8('0x28')],'type':_0x2f66cc['type'][_0x9ec8('0x29')]};});_0x3bf605[_0x9ec8('0x2a')]=_['map'](_0x29f718,_0x9ec8('0x2b'));_0x3bf605[_0x9ec8('0x2c')]=_[_0x9ec8('0x2d')](_0x2dfe0d[_0x9ec8('0x2c')]);_0x3bf605[_0x9ec8('0x2e')]=_['intersection'](_0x3bf605['model'],_0x3bf605[_0x9ec8('0x2c')]);_0x49a87a[_0x9ec8('0x2f')]=_[_0x9ec8('0x30')](_0x3bf605[_0x9ec8('0x2a')],qs[_0x9ec8('0x31')](_0x2dfe0d[_0x9ec8('0x2c')][_0x9ec8('0x31')]));_0x49a87a[_0x9ec8('0x2f')]=_0x49a87a[_0x9ec8('0x2f')]['length']?_0x49a87a[_0x9ec8('0x2f')]:_0x3bf605[_0x9ec8('0x2a')];if(!_0x2dfe0d[_0x9ec8('0x2c')][_0x9ec8('0x32')](_0x9ec8('0x33'))){_0x49a87a[_0x9ec8('0x1a')]=qs[_0x9ec8('0x1a')](_0x2dfe0d['query'][_0x9ec8('0x1a')]);_0x49a87a[_0x9ec8('0x19')]=qs[_0x9ec8('0x19')](_0x2dfe0d['query']['offset']);}_0x49a87a[_0x9ec8('0x34')]=qs['sort'](_0x2dfe0d[_0x9ec8('0x2c')][_0x9ec8('0x35')]);_0x49a87a['where']=qs[_0x9ec8('0x2e')](_[_0x9ec8('0x36')](_0x2dfe0d[_0x9ec8('0x2c')],_0x3bf605['filters']),_0x29f718);if(_0x2dfe0d[_0x9ec8('0x2c')][_0x9ec8('0x37')]){_0x49a87a[_0x9ec8('0x38')]=_[_0x9ec8('0x39')](_0x49a87a['where'],{'$or':_['map'](_0x29f718,function(_0x17e729){if(_0x17e729['type']!==_0x9ec8('0x3a')){var _0x124416={};_0x124416[_0x17e729[_0x9ec8('0x2b')]]={'$like':'%'+_0x2dfe0d[_0x9ec8('0x2c')][_0x9ec8('0x37')]+'%'};return _0x124416;}})});}_0x49a87a=_[_0x9ec8('0x39')]({},_0x49a87a,_0x2dfe0d['options']);var _0x17396d={'where':_0x49a87a['where']};return db[_0x9ec8('0x3b')][_0x9ec8('0x1c')](_0x17396d)[_0x9ec8('0x22')](function(_0x30abb4){_0x53dd5e[_0x9ec8('0x1c')]=_0x30abb4;if(_0x2dfe0d['query'][_0x9ec8('0x3c')]){_0x49a87a[_0x9ec8('0x3d')]=[{'all':!![]}];}return db[_0x9ec8('0x3b')][_0x9ec8('0x3e')](_0x49a87a);})[_0x9ec8('0x22')](function(_0x1d77dc){_0x53dd5e['rows']=_0x1d77dc;return _0x53dd5e;})[_0x9ec8('0x22')](respondWithFilteredResult(_0x5a832f,_0x49a87a))[_0x9ec8('0x3f')](handleError(_0x5a832f,null));};exports['show']=function(_0x242905,_0x1d697b){var _0x5a95d8={'raw':!![],'where':{'id':_0x242905[_0x9ec8('0x40')]['id']}},_0x4502d3={};_0x4502d3[_0x9ec8('0x2a')]=_[_0x9ec8('0x2d')](db[_0x9ec8('0x3b')][_0x9ec8('0x27')]);_0x4502d3[_0x9ec8('0x2c')]=_[_0x9ec8('0x2d')](_0x242905[_0x9ec8('0x2c')]);_0x4502d3['filters']=_[_0x9ec8('0x30')](_0x4502d3[_0x9ec8('0x2a')],_0x4502d3['query']);_0x5a95d8[_0x9ec8('0x2f')]=_[_0x9ec8('0x30')](_0x4502d3['model'],qs[_0x9ec8('0x31')](_0x242905[_0x9ec8('0x2c')][_0x9ec8('0x31')]));_0x5a95d8[_0x9ec8('0x2f')]=_0x5a95d8[_0x9ec8('0x2f')]['length']?_0x5a95d8[_0x9ec8('0x2f')]:_0x4502d3[_0x9ec8('0x2a')];if(_0x242905['query'][_0x9ec8('0x3c')]){_0x5a95d8['include']=[{'all':!![]}];}_0x5a95d8=_[_0x9ec8('0x39')]({},_0x5a95d8,_0x242905['options']);return db[_0x9ec8('0x3b')][_0x9ec8('0x41')](_0x5a95d8)['then'](handleEntityNotFound(_0x1d697b,null))['then'](respondWithResult(_0x1d697b,null))[_0x9ec8('0x3f')](handleError(_0x1d697b,null));};exports[_0x9ec8('0x42')]=function(_0x9a26d4,_0x30f403){return db[_0x9ec8('0x3b')]['create'](_0x9a26d4[_0x9ec8('0x43')],{})['then'](respondWithResult(_0x30f403,0xc9))[_0x9ec8('0x3f')](handleError(_0x30f403,null));};exports['update']=function(_0x2415e8,_0x5c2d5a){if(_0x2415e8[_0x9ec8('0x43')]['id']){delete _0x2415e8['body']['id'];}return db[_0x9ec8('0x3b')][_0x9ec8('0x41')]({'where':{'id':_0x2415e8[_0x9ec8('0x40')]['id']}})[_0x9ec8('0x22')](handleEntityNotFound(_0x5c2d5a,null))[_0x9ec8('0x22')](saveUpdates(_0x2415e8[_0x9ec8('0x43')],null))['then'](respondWithResult(_0x5c2d5a,null))['catch'](handleError(_0x5c2d5a,null));};exports[_0x9ec8('0x23')]=function(_0x59c27f,_0x32c4ad){return db[_0x9ec8('0x3b')]['find']({'where':{'id':_0x59c27f[_0x9ec8('0x40')]['id']}})[_0x9ec8('0x22')](handleEntityNotFound(_0x32c4ad,null))[_0x9ec8('0x22')](removeEntity(_0x32c4ad,null))['catch'](handleError(_0x32c4ad,null));};
\ No newline at end of file
+var _0xa1a9=['findAll','show','catch','body','find','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','ServicenowField','include'];(function(_0x1199ca,_0x4efce0){var _0x54469f=function(_0x321970){while(--_0x321970){_0x1199ca['push'](_0x1199ca['shift']());}};_0x54469f(++_0x4efce0);}(_0xa1a9,0x182));var _0x9a1a=function(_0x37a0a9,_0x11c264){_0x37a0a9=_0x37a0a9-0x0;var _0x5eeec4=_0xa1a9[_0x37a0a9];return _0x5eeec4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a1a('0x0'));var zipdir=require(_0x9a1a('0x1'));var jsonpatch=require(_0x9a1a('0x2'));var rp=require('request-promise');var moment=require(_0x9a1a('0x3'));var BPromise=require(_0x9a1a('0x4'));var Mustache=require(_0x9a1a('0x5'));var util=require(_0x9a1a('0x6'));var path=require('path');var sox=require(_0x9a1a('0x7'));var csv=require(_0x9a1a('0x8'));var ejs=require(_0x9a1a('0x9'));var fs=require('fs');var fs_extra=require(_0x9a1a('0xa'));var _=require(_0x9a1a('0xb'));var squel=require(_0x9a1a('0xc'));var crypto=require(_0x9a1a('0xd'));var jsforce=require(_0x9a1a('0xe'));var deskjs=require(_0x9a1a('0xf'));var toCsv=require(_0x9a1a('0x8'));var querystring=require(_0x9a1a('0x10'));var Papa=require(_0x9a1a('0x11'));var Redis=require(_0x9a1a('0x12'));var authService=require(_0x9a1a('0x13'));var qs=require(_0x9a1a('0x14'));var as=require(_0x9a1a('0x15'));var hardwareService=require(_0x9a1a('0x16'));var logger=require(_0x9a1a('0x17'))(_0x9a1a('0x18'));var utils=require(_0x9a1a('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x9a1a('0x1a'));var db=require(_0x9a1a('0x1b'))['db'];function respondWithStatusCode(_0x28618c,_0x557b03){_0x557b03=_0x557b03||0xcc;return function(_0x1fb7b4){if(_0x1fb7b4){return _0x28618c[_0x9a1a('0x1c')](_0x557b03);}return _0x28618c['status'](_0x557b03)['end']();};}function respondWithResult(_0x4d4a0f,_0x55e224){_0x55e224=_0x55e224||0xc8;return function(_0x14cfb3){if(_0x14cfb3){return _0x4d4a0f[_0x9a1a('0x1d')](_0x55e224)['json'](_0x14cfb3);}};}function respondWithFilteredResult(_0x3b9cdc,_0x126fb2){return function(_0x3102b8){if(_0x3102b8){var _0x430805=typeof _0x126fb2[_0x9a1a('0x1e')]===_0x9a1a('0x1f')&&typeof _0x126fb2[_0x9a1a('0x20')]===_0x9a1a('0x1f');var _0x1d57e4=_0x3102b8['count'];var _0x37602d=_0x430805?0x0:_0x126fb2[_0x9a1a('0x1e')];var _0x4d7d53=_0x430805?_0x3102b8[_0x9a1a('0x21')]:_0x126fb2[_0x9a1a('0x1e')]+_0x126fb2[_0x9a1a('0x20')];var _0x3c6da0;if(_0x4d7d53>=_0x1d57e4){_0x4d7d53=_0x1d57e4;_0x3c6da0=0xc8;}else{_0x3c6da0=0xce;}_0x3b9cdc[_0x9a1a('0x1d')](_0x3c6da0);return _0x3b9cdc[_0x9a1a('0x22')](_0x9a1a('0x23'),_0x37602d+'-'+_0x4d7d53+'/'+_0x1d57e4)[_0x9a1a('0x24')](_0x3102b8);}return null;};}function patchUpdates(_0x2db3bc){return function(_0x5ec06f){try{jsonpatch[_0x9a1a('0x25')](_0x5ec06f,_0x2db3bc,!![]);}catch(_0x847b2b){return BPromise[_0x9a1a('0x26')](_0x847b2b);}return _0x5ec06f['save']();};}function saveUpdates(_0x497856,_0x4a5158){return function(_0x3eb90b){if(_0x3eb90b){return _0x3eb90b[_0x9a1a('0x27')](_0x497856)['then'](function(_0x203102){return _0x203102;});}return null;};}function removeEntity(_0x3dea4c,_0x5c6233){return function(_0x2dce80){if(_0x2dce80){return _0x2dce80['destroy']()[_0x9a1a('0x28')](function(){_0x3dea4c[_0x9a1a('0x1d')](0xcc)[_0x9a1a('0x29')]();});}};}function handleEntityNotFound(_0x21bdf0,_0x191e10){return function(_0x1bd5ae){if(!_0x1bd5ae){_0x21bdf0[_0x9a1a('0x1c')](0x194);}return _0x1bd5ae;};}function handleError(_0x20f46e,_0x5068d3){_0x5068d3=_0x5068d3||0x1f4;return function(_0x217a20){logger[_0x9a1a('0x2a')](_0x217a20[_0x9a1a('0x2b')]);if(_0x217a20[_0x9a1a('0x2c')]){delete _0x217a20[_0x9a1a('0x2c')];}_0x20f46e[_0x9a1a('0x1d')](_0x5068d3)[_0x9a1a('0x2d')](_0x217a20);};}exports[_0x9a1a('0x2e')]=function(_0x4476ed,_0x1bc656){var _0x296ff9={},_0x38ec2a={},_0x2bcc1c={'count':0x0,'rows':[]};var _0x2d7137=_['map'](db['ServicenowField'][_0x9a1a('0x2f')],function(_0x4f5ba8){return{'name':_0x4f5ba8[_0x9a1a('0x30')],'type':_0x4f5ba8[_0x9a1a('0x31')][_0x9a1a('0x32')]};});_0x38ec2a[_0x9a1a('0x33')]=_[_0x9a1a('0x34')](_0x2d7137,_0x9a1a('0x2c'));_0x38ec2a[_0x9a1a('0x35')]=_[_0x9a1a('0x36')](_0x4476ed[_0x9a1a('0x35')]);_0x38ec2a[_0x9a1a('0x37')]=_['intersection'](_0x38ec2a[_0x9a1a('0x33')],_0x38ec2a[_0x9a1a('0x35')]);_0x296ff9['attributes']=_[_0x9a1a('0x38')](_0x38ec2a['model'],qs[_0x9a1a('0x39')](_0x4476ed[_0x9a1a('0x35')][_0x9a1a('0x39')]));_0x296ff9[_0x9a1a('0x3a')]=_0x296ff9[_0x9a1a('0x3a')]['length']?_0x296ff9['attributes']:_0x38ec2a['model'];if(!_0x4476ed['query'][_0x9a1a('0x3b')](_0x9a1a('0x3c'))){_0x296ff9[_0x9a1a('0x20')]=qs[_0x9a1a('0x20')](_0x4476ed[_0x9a1a('0x35')][_0x9a1a('0x20')]);_0x296ff9[_0x9a1a('0x1e')]=qs[_0x9a1a('0x1e')](_0x4476ed[_0x9a1a('0x35')][_0x9a1a('0x1e')]);}_0x296ff9[_0x9a1a('0x3d')]=qs[_0x9a1a('0x3e')](_0x4476ed[_0x9a1a('0x35')]['sort']);_0x296ff9[_0x9a1a('0x3f')]=qs['filters'](_['pick'](_0x4476ed[_0x9a1a('0x35')],_0x38ec2a[_0x9a1a('0x37')]),_0x2d7137);if(_0x4476ed[_0x9a1a('0x35')][_0x9a1a('0x40')]){_0x296ff9['where']=_[_0x9a1a('0x41')](_0x296ff9['where'],{'$or':_[_0x9a1a('0x34')](_0x2d7137,function(_0x1aefbf){if(_0x1aefbf['type']!==_0x9a1a('0x42')){var _0x4122b7={};_0x4122b7[_0x1aefbf['name']]={'$like':'%'+_0x4476ed[_0x9a1a('0x35')][_0x9a1a('0x40')]+'%'};return _0x4122b7;}})});}_0x296ff9=_[_0x9a1a('0x41')]({},_0x296ff9,_0x4476ed[_0x9a1a('0x43')]);var _0x881c04={'where':_0x296ff9[_0x9a1a('0x3f')]};return db[_0x9a1a('0x44')][_0x9a1a('0x21')](_0x881c04)[_0x9a1a('0x28')](function(_0x4eac22){_0x2bcc1c['count']=_0x4eac22;if(_0x4476ed[_0x9a1a('0x35')]['includeAll']){_0x296ff9[_0x9a1a('0x45')]=[{'all':!![]}];}return db[_0x9a1a('0x44')][_0x9a1a('0x46')](_0x296ff9);})[_0x9a1a('0x28')](function(_0x1ae5d7){_0x2bcc1c['rows']=_0x1ae5d7;return _0x2bcc1c;})[_0x9a1a('0x28')](respondWithFilteredResult(_0x1bc656,_0x296ff9))['catch'](handleError(_0x1bc656,null));};exports[_0x9a1a('0x47')]=function(_0x47046d,_0x565098){var _0x419a8c={'raw':!![],'where':{'id':_0x47046d['params']['id']}},_0x9bf4a4={};_0x9bf4a4['model']=_['keys'](db[_0x9a1a('0x44')][_0x9a1a('0x2f')]);_0x9bf4a4[_0x9a1a('0x35')]=_[_0x9a1a('0x36')](_0x47046d[_0x9a1a('0x35')]);_0x9bf4a4[_0x9a1a('0x37')]=_[_0x9a1a('0x38')](_0x9bf4a4[_0x9a1a('0x33')],_0x9bf4a4[_0x9a1a('0x35')]);_0x419a8c[_0x9a1a('0x3a')]=_['intersection'](_0x9bf4a4['model'],qs[_0x9a1a('0x39')](_0x47046d['query'][_0x9a1a('0x39')]));_0x419a8c[_0x9a1a('0x3a')]=_0x419a8c[_0x9a1a('0x3a')]['length']?_0x419a8c[_0x9a1a('0x3a')]:_0x9bf4a4['model'];if(_0x47046d[_0x9a1a('0x35')]['includeAll']){_0x419a8c['include']=[{'all':!![]}];}_0x419a8c=_[_0x9a1a('0x41')]({},_0x419a8c,_0x47046d[_0x9a1a('0x43')]);return db[_0x9a1a('0x44')]['find'](_0x419a8c)[_0x9a1a('0x28')](handleEntityNotFound(_0x565098,null))[_0x9a1a('0x28')](respondWithResult(_0x565098,null))[_0x9a1a('0x48')](handleError(_0x565098,null));};exports['create']=function(_0x8ac3a6,_0x236369){return db[_0x9a1a('0x44')]['create'](_0x8ac3a6[_0x9a1a('0x49')],{})[_0x9a1a('0x28')](respondWithResult(_0x236369,0xc9))[_0x9a1a('0x48')](handleError(_0x236369,null));};exports[_0x9a1a('0x27')]=function(_0x20ec33,_0x4f1321){if(_0x20ec33['body']['id']){delete _0x20ec33[_0x9a1a('0x49')]['id'];}return db[_0x9a1a('0x44')][_0x9a1a('0x4a')]({'where':{'id':_0x20ec33[_0x9a1a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4f1321,null))['then'](saveUpdates(_0x20ec33[_0x9a1a('0x49')],null))[_0x9a1a('0x28')](respondWithResult(_0x4f1321,null))[_0x9a1a('0x48')](handleError(_0x4f1321,null));};exports['destroy']=function(_0xae4b9c,_0x50f7c0){return db['ServicenowField'][_0x9a1a('0x4a')]({'where':{'id':_0xae4b9c[_0x9a1a('0x4b')]['id']}})[_0x9a1a('0x28')](handleEntityNotFound(_0x50f7c0,null))[_0x9a1a('0x28')](removeEntity(_0x50f7c0,null))[_0x9a1a('0x48')](handleError(_0x50f7c0,null));};
\ No newline at end of file
index 1f80976..a6f6010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x899e=['bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','idField','FieldId','lodash','../../config/logger','api','moment'];(function(_0xefef6f,_0x5f9f66){var _0x454173=function(_0x42e3d1){while(--_0x42e3d1){_0xefef6f['push'](_0xefef6f['shift']());}};_0x454173(++_0x5f9f66);}(_0x899e,0xfb));var _0xe899=function(_0x5c7eb6,_0x4b4dd0){_0x5c7eb6=_0x5c7eb6-0x0;var _0x5e841c=_0x899e[_0x5c7eb6];return _0x5e841c;};'use strict';var _=require(_0xe899('0x0'));var util=require('util');var logger=require(_0xe899('0x1'))(_0xe899('0x2'));var moment=require(_0xe899('0x3'));var BPromise=require(_0xe899('0x4'));var rp=require(_0xe899('0x5'));var fs=require('fs');var path=require(_0xe899('0x6'));var rimraf=require(_0xe899('0x7'));var config=require(_0xe899('0x8'));var attributes=require(_0xe899('0x9'));module[_0xe899('0xa')]=function(_0x3b1f0a,_0x4c454a){return _0x3b1f0a[_0xe899('0xb')](_0xe899('0xc'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0xe899('0xd'),_0xe899('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33b4=['path','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x33b4,0x1e9));var _0x433b=function(_0x3ecffc,_0x5c131f){_0x3ecffc=_0x3ecffc-0x0;var _0x529483=_0x33b4[_0x3ecffc];return _0x529483;};'use strict';var _=require('lodash');var util=require(_0x433b('0x0'));var logger=require(_0x433b('0x1'))(_0x433b('0x2'));var moment=require(_0x433b('0x3'));var BPromise=require(_0x433b('0x4'));var rp=require(_0x433b('0x5'));var fs=require('fs');var path=require(_0x433b('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x433b('0x7'));module[_0x433b('0x8')]=function(_0x160fc6,_0x4a30b3){return _0x160fc6[_0x433b('0x9')](_0x433b('0xa'),attributes,{'tableName':_0x433b('0xb'),'paranoid':![],'indexes':[{'name':_0x433b('0xc'),'fields':[_0x433b('0xd'),_0x433b('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b4ea185..57141af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x46ba2e,_0x194416){var _0x13a86d=function(_0x4a48d1){while(--_0x4a48d1){_0x46ba2e['push'](_0x46ba2e['shift']());}};_0x13a86d(++_0x194416);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x469a3c,_0x5ebc10){_0x469a3c=_0x469a3c-0x0;var _0x968f4=_0xcb91[_0x469a3c];return _0x968f4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xac4a,0x13f));var _0xaac4=function(_0xa93070,_0x121cfa){_0xa93070=_0xa93070-0x0;var _0x13c396=_0xac4a[_0xa93070];return _0x13c396;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index 94596e1..c1e2035 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(_0x349d74,_0x51d09a){var _0x874471=function(_0x3146fc){while(--_0x3146fc){_0x349d74['push'](_0x349d74['shift']());}};_0x874471(++_0x51d09a);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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(_0x2ba700,_0x53f132){var _0x575e1e=function(_0x5d3616){while(--_0x5d3616){_0x2ba700['push'](_0x2ba700['shift']());}};_0x575e1e(++_0x53f132);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 65b78ee..b056f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x7866bd,_0x1872d9){var _0x150c38=function(_0x3dbf94){while(--_0x3dbf94){_0x7866bd['push'](_0x7866bd['shift']());}};_0x150c38(++_0x1872d9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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(_0x2e7a58,_0x439022){var _0x576a9c=function(_0x54f11b){while(--_0x54f11b){_0x2e7a58['push'](_0x2e7a58['shift']());}};_0x576a9c(++_0x439022);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 f976701..cfdf62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64d3=['getConfigurations','findOne','SugarcrmConfiguration','order','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_name','direction','username','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','get_module_fields','Calls','values','remove','label','endsWith','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy','error','name','send','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','keys','includeAll','find','create','body'];(function(_0x56825b,_0x172b8d){var _0x69ce77=function(_0x348a1c){while(--_0x348a1c){_0x56825b['push'](_0x56825b['shift']());}};_0x69ce77(++_0x172b8d);}(_0x64d3,0xab));var _0x364d=function(_0x4c0cd0,_0x193e81){_0x4c0cd0=_0x4c0cd0-0x0;var _0x1919b3=_0x64d3[_0x4c0cd0];return _0x1919b3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x364d('0x0'));var zipdir=require(_0x364d('0x1'));var jsonpatch=require(_0x364d('0x2'));var rp=require(_0x364d('0x3'));var moment=require(_0x364d('0x4'));var BPromise=require(_0x364d('0x5'));var Mustache=require(_0x364d('0x6'));var util=require(_0x364d('0x7'));var path=require(_0x364d('0x8'));var sox=require('sox');var csv=require(_0x364d('0x9'));var ejs=require(_0x364d('0xa'));var fs=require('fs');var fs_extra=require(_0x364d('0xb'));var _=require(_0x364d('0xc'));var squel=require('squel');var crypto=require(_0x364d('0xd'));var jsforce=require(_0x364d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x364d('0xf'));var Papa=require(_0x364d('0x10'));var Redis=require(_0x364d('0x11'));var authService=require(_0x364d('0x12'));var qs=require(_0x364d('0x13'));var as=require(_0x364d('0x14'));var hardwareService=require(_0x364d('0x15'));var logger=require('../../config/logger')(_0x364d('0x16'));var utils=require(_0x364d('0x17'));var config=require(_0x364d('0x18'));var licenseUtil=require(_0x364d('0x19'));var db=require(_0x364d('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x580770,_0x295b6e){_0x295b6e=_0x295b6e||0xcc;return function(_0x274e96){if(_0x274e96){return _0x580770[_0x364d('0x1b')](_0x295b6e);}return _0x580770['status'](_0x295b6e)[_0x364d('0x1c')]();};}function respondWithResult(_0x3aeaa3,_0x8bfc02){_0x8bfc02=_0x8bfc02||0xc8;return function(_0xc83117){if(_0xc83117){return _0x3aeaa3[_0x364d('0x1d')](_0x8bfc02)['json'](_0xc83117);}};}function respondWithFilteredResult(_0x20e0ea,_0x1a7779){return function(_0x50cc5b){if(_0x50cc5b){var _0x596673=typeof _0x1a7779['offset']===_0x364d('0x1e')&&typeof _0x1a7779[_0x364d('0x1f')]===_0x364d('0x1e');var _0x364c77=_0x50cc5b[_0x364d('0x20')];var _0x1209bf=_0x596673?0x0:_0x1a7779[_0x364d('0x21')];var _0x14dc1c=_0x596673?_0x50cc5b['count']:_0x1a7779[_0x364d('0x21')]+_0x1a7779[_0x364d('0x1f')];var _0x36f874;if(_0x14dc1c>=_0x364c77){_0x14dc1c=_0x364c77;_0x36f874=0xc8;}else{_0x36f874=0xce;}_0x20e0ea['status'](_0x36f874);return _0x20e0ea['set'](_0x364d('0x22'),_0x1209bf+'-'+_0x14dc1c+'/'+_0x364c77)[_0x364d('0x23')](_0x50cc5b);}return null;};}function patchUpdates(_0xd959c4){return function(_0x54aec7){try{jsonpatch['apply'](_0x54aec7,_0xd959c4,!![]);}catch(_0x3ea965){return BPromise[_0x364d('0x24')](_0x3ea965);}return _0x54aec7[_0x364d('0x25')]();};}function saveUpdates(_0x10442c,_0x15b946){return function(_0x3da3b1){if(_0x3da3b1){return _0x3da3b1[_0x364d('0x26')](_0x10442c)[_0x364d('0x27')](function(_0x44c324){return _0x44c324;});}return null;};}function removeEntity(_0x499667,_0x1d3de8){return function(_0x4852ae){if(_0x4852ae){return _0x4852ae[_0x364d('0x28')]()[_0x364d('0x27')](function(){_0x499667[_0x364d('0x1d')](0xcc)[_0x364d('0x1c')]();});}};}function handleEntityNotFound(_0x48245b,_0x3f7d43){return function(_0x1fad08){if(!_0x1fad08){_0x48245b['sendStatus'](0x194);}return _0x1fad08;};}function handleError(_0x4c2d29,_0x44c815){_0x44c815=_0x44c815||0x1f4;return function(_0x174385){logger[_0x364d('0x29')](_0x174385['stack']);if(_0x174385[_0x364d('0x2a')]){delete _0x174385['name'];}_0x4c2d29[_0x364d('0x1d')](_0x44c815)[_0x364d('0x2b')](_0x174385);};}exports['index']=function(_0x574c93,_0x41578b){var _0x1162c2={},_0x213d51={},_0x21491f={'count':0x0,'rows':[]};var _0x10fba9=_[_0x364d('0x2c')](db[_0x364d('0x2d')][_0x364d('0x2e')],function(_0x10ec78){return{'name':_0x10ec78[_0x364d('0x2f')],'type':_0x10ec78[_0x364d('0x30')][_0x364d('0x31')]};});_0x213d51[_0x364d('0x32')]=_[_0x364d('0x2c')](_0x10fba9,_0x364d('0x2a'));_0x213d51['query']=_['keys'](_0x574c93[_0x364d('0x33')]);_0x213d51[_0x364d('0x34')]=_[_0x364d('0x35')](_0x213d51[_0x364d('0x32')],_0x213d51['query']);_0x1162c2[_0x364d('0x36')]=_[_0x364d('0x35')](_0x213d51[_0x364d('0x32')],qs[_0x364d('0x37')](_0x574c93[_0x364d('0x33')][_0x364d('0x37')]));_0x1162c2[_0x364d('0x36')]=_0x1162c2[_0x364d('0x36')][_0x364d('0x38')]?_0x1162c2[_0x364d('0x36')]:_0x213d51['model'];if(!_0x574c93['query'][_0x364d('0x39')](_0x364d('0x3a'))){_0x1162c2['limit']=qs[_0x364d('0x1f')](_0x574c93['query']['limit']);_0x1162c2[_0x364d('0x21')]=qs[_0x364d('0x21')](_0x574c93[_0x364d('0x33')][_0x364d('0x21')]);}_0x1162c2['order']=qs[_0x364d('0x3b')](_0x574c93[_0x364d('0x33')][_0x364d('0x3b')]);_0x1162c2['where']=qs['filters'](_['pick'](_0x574c93[_0x364d('0x33')],_0x213d51[_0x364d('0x34')]),_0x10fba9);if(_0x574c93[_0x364d('0x33')][_0x364d('0x3c')]){_0x1162c2[_0x364d('0x3d')]=_[_0x364d('0x3e')](_0x1162c2['where'],{'$or':_[_0x364d('0x2c')](_0x10fba9,function(_0x5ce6f8){if(_0x5ce6f8[_0x364d('0x30')]!==_0x364d('0x3f')){var _0x4461de={};_0x4461de[_0x5ce6f8[_0x364d('0x2a')]]={'$like':'%'+_0x574c93[_0x364d('0x33')][_0x364d('0x3c')]+'%'};return _0x4461de;}})});}_0x1162c2=_[_0x364d('0x3e')]({},_0x1162c2,_0x574c93[_0x364d('0x40')]);var _0x3e187b={'where':_0x1162c2[_0x364d('0x3d')]};return db[_0x364d('0x2d')]['count'](_0x3e187b)[_0x364d('0x27')](function(_0x3c7a24){_0x21491f[_0x364d('0x20')]=_0x3c7a24;if(_0x574c93['query']['includeAll']){_0x1162c2[_0x364d('0x41')]=[{'all':!![]}];}return db[_0x364d('0x2d')][_0x364d('0x42')](_0x1162c2);})[_0x364d('0x27')](function(_0x41b61a){_0x21491f['rows']=_0x41b61a;return _0x21491f;})[_0x364d('0x27')](respondWithFilteredResult(_0x41578b,_0x1162c2))[_0x364d('0x43')](handleError(_0x41578b,null));};exports[_0x364d('0x44')]=function(_0x456e52,_0x2b86ed){var _0x21b417={'raw':![],'where':{'id':_0x456e52[_0x364d('0x45')]['id']}},_0x1ce5f2={};_0x1ce5f2[_0x364d('0x32')]=_[_0x364d('0x46')](db[_0x364d('0x2d')][_0x364d('0x2e')]);_0x1ce5f2['query']=_[_0x364d('0x46')](_0x456e52[_0x364d('0x33')]);_0x1ce5f2[_0x364d('0x34')]=_['intersection'](_0x1ce5f2[_0x364d('0x32')],_0x1ce5f2[_0x364d('0x33')]);_0x21b417[_0x364d('0x36')]=_[_0x364d('0x35')](_0x1ce5f2[_0x364d('0x32')],qs[_0x364d('0x37')](_0x456e52['query'][_0x364d('0x37')]));_0x21b417[_0x364d('0x36')]=_0x21b417[_0x364d('0x36')][_0x364d('0x38')]?_0x21b417[_0x364d('0x36')]:_0x1ce5f2[_0x364d('0x32')];if(_0x456e52[_0x364d('0x33')][_0x364d('0x47')]){_0x21b417[_0x364d('0x41')]=[{'all':!![]}];}_0x21b417=_['merge']({},_0x21b417,_0x456e52[_0x364d('0x40')]);return db[_0x364d('0x2d')][_0x364d('0x48')](_0x21b417)['then'](handleEntityNotFound(_0x2b86ed,null))[_0x364d('0x27')](respondWithResult(_0x2b86ed,null))['catch'](handleError(_0x2b86ed,null));};exports[_0x364d('0x49')]=function(_0x3cb1c4,_0x7b92b3){return db['SugarcrmAccount']['create'](_0x3cb1c4[_0x364d('0x4a')],{})[_0x364d('0x27')](respondWithResult(_0x7b92b3,0xc9))[_0x364d('0x43')](handleError(_0x7b92b3,null));};exports[_0x364d('0x26')]=function(_0x1448c9,_0x25cd97){if(_0x1448c9[_0x364d('0x4a')]['id']){delete _0x1448c9['body']['id'];}return db['SugarcrmAccount'][_0x364d('0x48')]({'where':{'id':_0x1448c9[_0x364d('0x45')]['id']}})[_0x364d('0x27')](handleEntityNotFound(_0x25cd97,null))['then'](saveUpdates(_0x1448c9['body'],null))['then'](respondWithResult(_0x25cd97,null))['catch'](handleError(_0x25cd97,null));};exports['destroy']=function(_0x52daf0,_0x4c9592){return db[_0x364d('0x2d')][_0x364d('0x48')]({'where':{'id':_0x52daf0[_0x364d('0x45')]['id']}})[_0x364d('0x27')](handleEntityNotFound(_0x4c9592,null))['then'](removeEntity(_0x4c9592,null))[_0x364d('0x43')](handleError(_0x4c9592,null));};exports[_0x364d('0x4b')]=function(_0x2d3340,_0x464baa,_0x442886){var _0x446b8c={};var _0x4bfb8f={};var _0x362409;var _0x2c29b2;return db[_0x364d('0x2d')][_0x364d('0x4c')]({'where':{'id':_0x2d3340[_0x364d('0x45')]['id']}})[_0x364d('0x27')](handleEntityNotFound(_0x464baa,null))[_0x364d('0x27')](function(_0x5a49e6){if(_0x5a49e6){_0x362409=_0x5a49e6;_0x4bfb8f[_0x364d('0x32')]=_['keys'](db[_0x364d('0x4d')][_0x364d('0x2e')]);_0x4bfb8f['query']=_[_0x364d('0x46')](_0x2d3340[_0x364d('0x33')]);_0x4bfb8f[_0x364d('0x34')]=_['intersection'](_0x4bfb8f[_0x364d('0x32')],_0x4bfb8f[_0x364d('0x33')]);_0x446b8c[_0x364d('0x36')]=_[_0x364d('0x35')](_0x4bfb8f[_0x364d('0x32')],qs['fields'](_0x2d3340[_0x364d('0x33')][_0x364d('0x37')]));_0x446b8c[_0x364d('0x36')]=_0x446b8c[_0x364d('0x36')][_0x364d('0x38')]?_0x446b8c[_0x364d('0x36')]:_0x4bfb8f['model'];_0x446b8c[_0x364d('0x4e')]=qs[_0x364d('0x3b')](_0x2d3340['query'][_0x364d('0x3b')]);_0x446b8c['where']=qs[_0x364d('0x34')](_[_0x364d('0x4f')](_0x2d3340[_0x364d('0x33')],_0x4bfb8f[_0x364d('0x34')]));if(_0x2d3340[_0x364d('0x33')][_0x364d('0x3c')]){_0x446b8c[_0x364d('0x3d')]=_[_0x364d('0x3e')](_0x446b8c[_0x364d('0x3d')],{'$or':_[_0x364d('0x2c')](_0x446b8c[_0x364d('0x36')],function(_0x557c85){var _0x405e32={};_0x405e32[_0x557c85]={'$like':'%'+_0x2d3340[_0x364d('0x33')]['filter']+'%'};return _0x405e32;})});}_0x446b8c=_['merge']({},_0x446b8c,_0x2d3340[_0x364d('0x40')]);return _0x362409[_0x364d('0x4b')](_0x446b8c);}})[_0x364d('0x27')](function(_0x1b40e1){if(_0x1b40e1){_0x2c29b2=_0x1b40e1[_0x364d('0x38')];if(!_0x2d3340[_0x364d('0x33')][_0x364d('0x39')](_0x364d('0x3a'))){_0x446b8c[_0x364d('0x1f')]=qs[_0x364d('0x1f')](_0x2d3340['query'][_0x364d('0x1f')]);_0x446b8c['offset']=qs['offset'](_0x2d3340[_0x364d('0x33')][_0x364d('0x21')]);}return _0x362409[_0x364d('0x4b')](_0x446b8c);}})[_0x364d('0x27')](function(_0x195e0b){if(_0x195e0b){return _0x195e0b?{'count':_0x2c29b2,'rows':_0x195e0b}:null;}})['then'](respondWithResult(_0x464baa,null))[_0x364d('0x43')](handleError(_0x464baa,null));};exports[_0x364d('0x50')]=function(_0x23b721,_0x3171b8,_0x2f0928){if(_0x23b721[_0x364d('0x4a')]['id']){delete _0x23b721[_0x364d('0x4a')]['id'];}return db[_0x364d('0x2d')][_0x364d('0x4c')]({'where':{'id':_0x23b721[_0x364d('0x45')]['id']}})[_0x364d('0x27')](handleEntityNotFound(_0x3171b8,null))['then'](function(_0xd48620){if(_0xd48620){_0x23b721[_0x364d('0x4a')][_0x364d('0x51')]=_0xd48620['id'];_0x23b721[_0x364d('0x4a')][_0x364d('0x52')]=integrations[_0x364d('0x53')](_0x23b721[_0x364d('0x4a')][_0x364d('0x54')],_0x23b721[_0x364d('0x4a')][_0x364d('0x30')]);_0x23b721['body'][_0x364d('0x55')]=integrations[_0x364d('0x56')](_0x23b721[_0x364d('0x4a')][_0x364d('0x54')],_0x23b721[_0x364d('0x4a')][_0x364d('0x30')]);return db['SugarcrmConfiguration']['create'](_0x23b721[_0x364d('0x4a')],{'include':[{'model':db['SugarcrmField'],'as':_0x364d('0x52')},{'model':db[_0x364d('0x57')],'as':_0x364d('0x55')}]});}return null;})[_0x364d('0x27')](respondWithResult(_0x3171b8,null))['catch'](handleError(_0x3171b8,null));};exports['getFields']=function(_0x151122,_0x3ce3e7,_0x223572){var _0x585042='';var _0x43dab7=['id',_0x364d('0x2a'),_0x364d('0x58'),_0x364d('0x59'),_0x364d('0x5a'),_0x364d('0x5b'),_0x364d('0x5c'),_0x364d('0x5d'),'parent_id','parent_type',_0x364d('0x5e'),_0x364d('0x5f')];return db[_0x364d('0x2d')][_0x364d('0x4c')]({'where':{'id':_0x151122['params']['id']},'attributes':['id',_0x364d('0x60'),'password',_0x364d('0x61')]})[_0x364d('0x27')](handleEntityNotFound(_0x3ce3e7,null))[_0x364d('0x27')](function(_0x2e71cd){if(_0x2e71cd){_0x585042=_0x2e71cd[_0x364d('0x61')];var _0x290673=_0x585042[_0x364d('0x62')](-0x1);if(_0x290673==='/'){_0x585042=_0x585042[_0x364d('0x63')](0x0,_0x585042[_0x364d('0x64')](_0x290673));}return rp({'method':_0x364d('0x65'),'uri':util[_0x364d('0x66')](_0x364d('0x67'),_0x585042,_0x364d('0x68')),'json':!![],'form':{'method':_0x364d('0x69'),'input_type':_0x364d('0x6a'),'response_type':_0x364d('0x6a'),'rest_data':JSON[_0x364d('0x6b')]({'user_auth':{'user_name':_0x2e71cd[_0x364d('0x60')],'password':_0x2e71cd[_0x364d('0x6c')],'encryption':_0x364d('0x6d')},'application':_0x364d('0x6e')})}});}})['then'](function(_0x1ca06a){if(_0x1ca06a&&_0x1ca06a['name']!==_0x364d('0x6f')&&_0x1ca06a['name']!=='Password\x20Expired'){return rp({'method':_0x364d('0x65'),'uri':util[_0x364d('0x66')](_0x364d('0x67'),_0x585042,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x364d('0x70'),'input_type':_0x364d('0x6a'),'response_type':'JSON','rest_data':JSON[_0x364d('0x6b')]({'session':_0x1ca06a['id'],'module_name':_0x364d('0x71')})}})[_0x364d('0x27')](function(_0x4ed72f){if(_0x4ed72f){var _0x32ef9b=_[_0x364d('0x72')](_0x4ed72f['module_fields']);_[_0x364d('0x73')](_0x32ef9b,function(_0x5b670f){return _0x43dab7['includes'](_0x5b670f['name']);});return{'count':_0x32ef9b[_0x364d('0x38')],'rows':_[_0x364d('0x2c')](_0x32ef9b,function(_0x31c61b){return{'id':_0x31c61b[_0x364d('0x2a')],'name':_0x31c61b[_0x364d('0x74')],'custom':_[_0x364d('0x75')](_0x31c61b[_0x364d('0x2a')],'_c')?!![]:![],'options':_0x31c61b[_0x364d('0x40')]?_[_0x364d('0x2c')](_[_0x364d('0x72')](_0x31c61b[_0x364d('0x40')]),function(_0x12c16a){return{'name':_0x12c16a['value'],'value':_0x12c16a[_0x364d('0x2a')]};}):[]};})};}})[_0x364d('0x27')](respondWithResult(_0x3ce3e7,null))['catch'](function(_0x3a4ff2){var _0x1be54d=_0x151122['query'][_0x364d('0x76')]?0x1f4:_0x3a4ff2[_0x364d('0x77')]||0x1f4;logger[_0x364d('0x29')](_0x364d('0x78'),_0x364d('0x79'),_0x1be54d,JSON[_0x364d('0x6b')](_0x3a4ff2));delete _0x3a4ff2[_0x364d('0x2a')];if(_0x1be54d===0x191){_0x1be54d=0x190;}_0x3ce3e7[_0x364d('0x1d')](_0x1be54d)['send'](_0x151122['query'][_0x364d('0x76')]?{'message':_0x364d('0x7a'),'statusCode':_0x3a4ff2[_0x364d('0x77')]}:_0x3a4ff2);});}else{var _0x5b584b=0x1f4;_0x3ce3e7['status'](_0x5b584b)[_0x364d('0x2b')]({'message':_0x364d('0x7a'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xda4a=['created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','get_module_fields','Calls','remove','includes','label','endsWith','values','value','test','statusCode','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmAccount','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','findAll','rows','show','params','includeAll','include','catch','create','body','find','findOne','SugarcrmConfiguration','rawAttributes','pick','getConfigurations','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id'];(function(_0x29a707,_0x342505){var _0x229e83=function(_0x463053){while(--_0x463053){_0x29a707['push'](_0x29a707['shift']());}};_0x229e83(++_0x342505);}(_0xda4a,0xa4));var _0xada4=function(_0x228745,_0x591081){_0x228745=_0x228745-0x0;var _0x2964ad=_0xda4a[_0x228745];return _0x2964ad;};'use strict';var emlformat=require(_0xada4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xada4('0x1'));var jsonpatch=require(_0xada4('0x2'));var rp=require(_0xada4('0x3'));var moment=require(_0xada4('0x4'));var BPromise=require(_0xada4('0x5'));var Mustache=require(_0xada4('0x6'));var util=require(_0xada4('0x7'));var path=require('path');var sox=require(_0xada4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xada4('0x9'));var _=require('lodash');var squel=require(_0xada4('0xa'));var crypto=require(_0xada4('0xb'));var jsforce=require(_0xada4('0xc'));var deskjs=require(_0xada4('0xd'));var toCsv=require(_0xada4('0xe'));var querystring=require(_0xada4('0xf'));var Papa=require(_0xada4('0x10'));var Redis=require(_0xada4('0x11'));var authService=require(_0xada4('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xada4('0x13'));var hardwareService=require(_0xada4('0x14'));var logger=require(_0xada4('0x15'))(_0xada4('0x16'));var utils=require(_0xada4('0x17'));var config=require(_0xada4('0x18'));var licenseUtil=require(_0xada4('0x19'));var db=require(_0xada4('0x1a'))['db'];var integrations=require(_0xada4('0x1b'));function respondWithStatusCode(_0x41f44f,_0xf54584){_0xf54584=_0xf54584||0xcc;return function(_0x24ac10){if(_0x24ac10){return _0x41f44f[_0xada4('0x1c')](_0xf54584);}return _0x41f44f[_0xada4('0x1d')](_0xf54584)[_0xada4('0x1e')]();};}function respondWithResult(_0x4154b2,_0x14387e){_0x14387e=_0x14387e||0xc8;return function(_0x46aa5a){if(_0x46aa5a){return _0x4154b2['status'](_0x14387e)[_0xada4('0x1f')](_0x46aa5a);}};}function respondWithFilteredResult(_0x5e378a,_0x1d9532){return function(_0x3632c1){if(_0x3632c1){var _0x1ea638=typeof _0x1d9532[_0xada4('0x20')]===_0xada4('0x21')&&typeof _0x1d9532[_0xada4('0x22')]===_0xada4('0x21');var _0x3f1da1=_0x3632c1[_0xada4('0x23')];var _0x5b3045=_0x1ea638?0x0:_0x1d9532['offset'];var _0x122619=_0x1ea638?_0x3632c1[_0xada4('0x23')]:_0x1d9532[_0xada4('0x20')]+_0x1d9532[_0xada4('0x22')];var _0x52cdce;if(_0x122619>=_0x3f1da1){_0x122619=_0x3f1da1;_0x52cdce=0xc8;}else{_0x52cdce=0xce;}_0x5e378a[_0xada4('0x1d')](_0x52cdce);return _0x5e378a[_0xada4('0x24')](_0xada4('0x25'),_0x5b3045+'-'+_0x122619+'/'+_0x3f1da1)[_0xada4('0x1f')](_0x3632c1);}return null;};}function patchUpdates(_0x174646){return function(_0x3c2778){try{jsonpatch[_0xada4('0x26')](_0x3c2778,_0x174646,!![]);}catch(_0x35e4f8){return BPromise[_0xada4('0x27')](_0x35e4f8);}return _0x3c2778[_0xada4('0x28')]();};}function saveUpdates(_0x5d072e,_0x4c2cb1){return function(_0x56d6af){if(_0x56d6af){return _0x56d6af[_0xada4('0x29')](_0x5d072e)[_0xada4('0x2a')](function(_0x46b300){return _0x46b300;});}return null;};}function removeEntity(_0x39d5ad,_0x457d4b){return function(_0x1cc4c8){if(_0x1cc4c8){return _0x1cc4c8[_0xada4('0x2b')]()[_0xada4('0x2a')](function(){_0x39d5ad[_0xada4('0x1d')](0xcc)[_0xada4('0x1e')]();});}};}function handleEntityNotFound(_0x5ccc58,_0x48d579){return function(_0x5e058d){if(!_0x5e058d){_0x5ccc58[_0xada4('0x1c')](0x194);}return _0x5e058d;};}function handleError(_0x286042,_0x56c929){_0x56c929=_0x56c929||0x1f4;return function(_0x4b53cb){logger[_0xada4('0x2c')](_0x4b53cb[_0xada4('0x2d')]);if(_0x4b53cb[_0xada4('0x2e')]){delete _0x4b53cb['name'];}_0x286042[_0xada4('0x1d')](_0x56c929)[_0xada4('0x2f')](_0x4b53cb);};}exports[_0xada4('0x30')]=function(_0x4219c0,_0x74d677){var _0x12e111={},_0x45cb36={},_0x24dc17={'count':0x0,'rows':[]};var _0x3518bd=_[_0xada4('0x31')](db[_0xada4('0x32')]['rawAttributes'],function(_0x4ed90d){return{'name':_0x4ed90d[_0xada4('0x33')],'type':_0x4ed90d[_0xada4('0x34')][_0xada4('0x35')]};});_0x45cb36['model']=_['map'](_0x3518bd,_0xada4('0x2e'));_0x45cb36[_0xada4('0x36')]=_[_0xada4('0x37')](_0x4219c0[_0xada4('0x36')]);_0x45cb36[_0xada4('0x38')]=_['intersection'](_0x45cb36[_0xada4('0x39')],_0x45cb36['query']);_0x12e111[_0xada4('0x3a')]=_[_0xada4('0x3b')](_0x45cb36['model'],qs[_0xada4('0x3c')](_0x4219c0[_0xada4('0x36')][_0xada4('0x3c')]));_0x12e111[_0xada4('0x3a')]=_0x12e111[_0xada4('0x3a')][_0xada4('0x3d')]?_0x12e111['attributes']:_0x45cb36[_0xada4('0x39')];if(!_0x4219c0[_0xada4('0x36')][_0xada4('0x3e')]('nolimit')){_0x12e111[_0xada4('0x22')]=qs[_0xada4('0x22')](_0x4219c0[_0xada4('0x36')][_0xada4('0x22')]);_0x12e111['offset']=qs[_0xada4('0x20')](_0x4219c0[_0xada4('0x36')][_0xada4('0x20')]);}_0x12e111[_0xada4('0x3f')]=qs[_0xada4('0x40')](_0x4219c0[_0xada4('0x36')][_0xada4('0x40')]);_0x12e111[_0xada4('0x41')]=qs['filters'](_['pick'](_0x4219c0['query'],_0x45cb36[_0xada4('0x38')]),_0x3518bd);if(_0x4219c0[_0xada4('0x36')][_0xada4('0x42')]){_0x12e111[_0xada4('0x41')]=_['merge'](_0x12e111[_0xada4('0x41')],{'$or':_[_0xada4('0x31')](_0x3518bd,function(_0x237ca2){if(_0x237ca2[_0xada4('0x34')]!==_0xada4('0x43')){var _0x5ec867={};_0x5ec867[_0x237ca2[_0xada4('0x2e')]]={'$like':'%'+_0x4219c0[_0xada4('0x36')][_0xada4('0x42')]+'%'};return _0x5ec867;}})});}_0x12e111=_[_0xada4('0x44')]({},_0x12e111,_0x4219c0[_0xada4('0x45')]);var _0x10172f={'where':_0x12e111[_0xada4('0x41')]};return db[_0xada4('0x32')][_0xada4('0x23')](_0x10172f)[_0xada4('0x2a')](function(_0x5898ad){_0x24dc17[_0xada4('0x23')]=_0x5898ad;if(_0x4219c0[_0xada4('0x36')]['includeAll']){_0x12e111['include']=[{'all':!![]}];}return db[_0xada4('0x32')][_0xada4('0x46')](_0x12e111);})['then'](function(_0x3eeaee){_0x24dc17[_0xada4('0x47')]=_0x3eeaee;return _0x24dc17;})[_0xada4('0x2a')](respondWithFilteredResult(_0x74d677,_0x12e111))['catch'](handleError(_0x74d677,null));};exports[_0xada4('0x48')]=function(_0x4ac529,_0x1feeab){var _0x41c92b={'raw':![],'where':{'id':_0x4ac529[_0xada4('0x49')]['id']}},_0x3e1b89={};_0x3e1b89[_0xada4('0x39')]=_['keys'](db['SugarcrmAccount']['rawAttributes']);_0x3e1b89[_0xada4('0x36')]=_[_0xada4('0x37')](_0x4ac529[_0xada4('0x36')]);_0x3e1b89[_0xada4('0x38')]=_[_0xada4('0x3b')](_0x3e1b89[_0xada4('0x39')],_0x3e1b89[_0xada4('0x36')]);_0x41c92b[_0xada4('0x3a')]=_[_0xada4('0x3b')](_0x3e1b89[_0xada4('0x39')],qs[_0xada4('0x3c')](_0x4ac529[_0xada4('0x36')][_0xada4('0x3c')]));_0x41c92b[_0xada4('0x3a')]=_0x41c92b[_0xada4('0x3a')][_0xada4('0x3d')]?_0x41c92b[_0xada4('0x3a')]:_0x3e1b89[_0xada4('0x39')];if(_0x4ac529[_0xada4('0x36')][_0xada4('0x4a')]){_0x41c92b[_0xada4('0x4b')]=[{'all':!![]}];}_0x41c92b=_[_0xada4('0x44')]({},_0x41c92b,_0x4ac529[_0xada4('0x45')]);return db[_0xada4('0x32')]['find'](_0x41c92b)[_0xada4('0x2a')](handleEntityNotFound(_0x1feeab,null))['then'](respondWithResult(_0x1feeab,null))[_0xada4('0x4c')](handleError(_0x1feeab,null));};exports[_0xada4('0x4d')]=function(_0x138a42,_0x572ceb){return db[_0xada4('0x32')]['create'](_0x138a42[_0xada4('0x4e')],{})['then'](respondWithResult(_0x572ceb,0xc9))[_0xada4('0x4c')](handleError(_0x572ceb,null));};exports[_0xada4('0x29')]=function(_0x2f4924,_0x6350f4){if(_0x2f4924[_0xada4('0x4e')]['id']){delete _0x2f4924['body']['id'];}return db['SugarcrmAccount'][_0xada4('0x4f')]({'where':{'id':_0x2f4924[_0xada4('0x49')]['id']}})['then'](handleEntityNotFound(_0x6350f4,null))[_0xada4('0x2a')](saveUpdates(_0x2f4924[_0xada4('0x4e')],null))[_0xada4('0x2a')](respondWithResult(_0x6350f4,null))[_0xada4('0x4c')](handleError(_0x6350f4,null));};exports[_0xada4('0x2b')]=function(_0x51c880,_0x3044f2){return db[_0xada4('0x32')]['find']({'where':{'id':_0x51c880['params']['id']}})[_0xada4('0x2a')](handleEntityNotFound(_0x3044f2,null))[_0xada4('0x2a')](removeEntity(_0x3044f2,null))[_0xada4('0x4c')](handleError(_0x3044f2,null));};exports['getConfigurations']=function(_0x7e3586,_0x448e3e,_0x20340f){var _0x4a258d={};var _0x479930={};var _0x4882fe;var _0x34cc0b;return db[_0xada4('0x32')][_0xada4('0x50')]({'where':{'id':_0x7e3586['params']['id']}})[_0xada4('0x2a')](handleEntityNotFound(_0x448e3e,null))['then'](function(_0x5e4156){if(_0x5e4156){_0x4882fe=_0x5e4156;_0x479930['model']=_['keys'](db[_0xada4('0x51')][_0xada4('0x52')]);_0x479930[_0xada4('0x36')]=_[_0xada4('0x37')](_0x7e3586[_0xada4('0x36')]);_0x479930[_0xada4('0x38')]=_[_0xada4('0x3b')](_0x479930[_0xada4('0x39')],_0x479930['query']);_0x4a258d[_0xada4('0x3a')]=_[_0xada4('0x3b')](_0x479930[_0xada4('0x39')],qs[_0xada4('0x3c')](_0x7e3586[_0xada4('0x36')][_0xada4('0x3c')]));_0x4a258d['attributes']=_0x4a258d[_0xada4('0x3a')][_0xada4('0x3d')]?_0x4a258d[_0xada4('0x3a')]:_0x479930[_0xada4('0x39')];_0x4a258d['order']=qs[_0xada4('0x40')](_0x7e3586['query']['sort']);_0x4a258d[_0xada4('0x41')]=qs[_0xada4('0x38')](_[_0xada4('0x53')](_0x7e3586[_0xada4('0x36')],_0x479930[_0xada4('0x38')]));if(_0x7e3586[_0xada4('0x36')][_0xada4('0x42')]){_0x4a258d[_0xada4('0x41')]=_[_0xada4('0x44')](_0x4a258d[_0xada4('0x41')],{'$or':_[_0xada4('0x31')](_0x4a258d[_0xada4('0x3a')],function(_0x52e7fd){var _0x3b16cb={};_0x3b16cb[_0x52e7fd]={'$like':'%'+_0x7e3586[_0xada4('0x36')]['filter']+'%'};return _0x3b16cb;})});}_0x4a258d=_[_0xada4('0x44')]({},_0x4a258d,_0x7e3586[_0xada4('0x45')]);return _0x4882fe['getConfigurations'](_0x4a258d);}})[_0xada4('0x2a')](function(_0x3a4b94){if(_0x3a4b94){_0x34cc0b=_0x3a4b94[_0xada4('0x3d')];if(!_0x7e3586[_0xada4('0x36')][_0xada4('0x3e')]('nolimit')){_0x4a258d['limit']=qs['limit'](_0x7e3586[_0xada4('0x36')][_0xada4('0x22')]);_0x4a258d[_0xada4('0x20')]=qs[_0xada4('0x20')](_0x7e3586[_0xada4('0x36')]['offset']);}return _0x4882fe[_0xada4('0x54')](_0x4a258d);}})[_0xada4('0x2a')](function(_0x39015f){if(_0x39015f){return _0x39015f?{'count':_0x34cc0b,'rows':_0x39015f}:null;}})['then'](respondWithResult(_0x448e3e,null))[_0xada4('0x4c')](handleError(_0x448e3e,null));};exports[_0xada4('0x55')]=function(_0x38082f,_0x4ad30a,_0x5b5043){if(_0x38082f[_0xada4('0x4e')]['id']){delete _0x38082f['body']['id'];}return db[_0xada4('0x32')][_0xada4('0x50')]({'where':{'id':_0x38082f[_0xada4('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ad30a,null))[_0xada4('0x2a')](function(_0xba5459){if(_0xba5459){_0x38082f[_0xada4('0x4e')][_0xada4('0x56')]=_0xba5459['id'];_0x38082f[_0xada4('0x4e')][_0xada4('0x57')]=integrations['getSubjects'](_0x38082f['body'][_0xada4('0x58')],_0x38082f[_0xada4('0x4e')]['type']);_0x38082f[_0xada4('0x4e')][_0xada4('0x59')]=integrations[_0xada4('0x5a')](_0x38082f[_0xada4('0x4e')]['channel'],_0x38082f[_0xada4('0x4e')][_0xada4('0x34')]);return db[_0xada4('0x51')][_0xada4('0x4d')](_0x38082f[_0xada4('0x4e')],{'include':[{'model':db['SugarcrmField'],'as':_0xada4('0x57')},{'model':db[_0xada4('0x5b')],'as':'Descriptions'}]});}return null;})[_0xada4('0x2a')](respondWithResult(_0x4ad30a,null))['catch'](handleError(_0x4ad30a,null));};exports[_0xada4('0x5c')]=function(_0x1fb095,_0x13d81b,_0x22b0a4){var _0x25cc46='';var _0xd31367=['id',_0xada4('0x2e'),_0xada4('0x5d'),_0xada4('0x5e'),_0xada4('0x5f'),_0xada4('0x60'),_0xada4('0x61'),_0xada4('0x62'),_0xada4('0x63'),_0xada4('0x64'),_0xada4('0x65'),'direction'];return db[_0xada4('0x32')][_0xada4('0x50')]({'where':{'id':_0x1fb095['params']['id']},'attributes':['id','username',_0xada4('0x66'),_0xada4('0x67')]})[_0xada4('0x2a')](handleEntityNotFound(_0x13d81b,null))[_0xada4('0x2a')](function(_0x37b1c5){if(_0x37b1c5){_0x25cc46=_0x37b1c5[_0xada4('0x67')];var _0x4668c6=_0x25cc46[_0xada4('0x68')](-0x1);if(_0x4668c6==='/'){_0x25cc46=_0x25cc46[_0xada4('0x69')](0x0,_0x25cc46[_0xada4('0x6a')](_0x4668c6));}return rp({'method':_0xada4('0x6b'),'uri':util[_0xada4('0x6c')](_0xada4('0x6d'),_0x25cc46,_0xada4('0x6e')),'json':!![],'form':{'method':_0xada4('0x6f'),'input_type':_0xada4('0x70'),'response_type':_0xada4('0x70'),'rest_data':JSON[_0xada4('0x71')]({'user_auth':{'user_name':_0x37b1c5[_0xada4('0x72')],'password':_0x37b1c5['password'],'encryption':_0xada4('0x73')},'application':_0xada4('0x74')})}});}})[_0xada4('0x2a')](function(_0xb6d662){if(_0xb6d662&&_0xb6d662['name']!==_0xada4('0x75')&&_0xb6d662['name']!=='Password\x20Expired'){return rp({'method':_0xada4('0x6b'),'uri':util['format'](_0xada4('0x6d'),_0x25cc46,_0xada4('0x6e')),'json':!![],'form':{'method':_0xada4('0x76'),'input_type':'JSON','response_type':_0xada4('0x70'),'rest_data':JSON[_0xada4('0x71')]({'session':_0xb6d662['id'],'module_name':_0xada4('0x77')})}})[_0xada4('0x2a')](function(_0x3887d1){if(_0x3887d1){var _0x35d1cd=_['values'](_0x3887d1['module_fields']);_[_0xada4('0x78')](_0x35d1cd,function(_0xcb9cd1){return _0xd31367[_0xada4('0x79')](_0xcb9cd1[_0xada4('0x2e')]);});return{'count':_0x35d1cd[_0xada4('0x3d')],'rows':_[_0xada4('0x31')](_0x35d1cd,function(_0xbdd68a){return{'id':_0xbdd68a[_0xada4('0x2e')],'name':_0xbdd68a[_0xada4('0x7a')],'custom':_[_0xada4('0x7b')](_0xbdd68a[_0xada4('0x2e')],'_c')?!![]:![],'options':_0xbdd68a[_0xada4('0x45')]?_[_0xada4('0x31')](_[_0xada4('0x7c')](_0xbdd68a[_0xada4('0x45')]),function(_0x16da7f){return{'name':_0x16da7f[_0xada4('0x7d')],'value':_0x16da7f[_0xada4('0x2e')]};}):[]};})};}})['then'](respondWithResult(_0x13d81b,null))[_0xada4('0x4c')](function(_0x1fcc92){var _0x5e9457=_0x1fb095[_0xada4('0x36')][_0xada4('0x7e')]?0x1f4:_0x1fcc92[_0xada4('0x7f')]||0x1f4;logger[_0xada4('0x2c')]('getFields,\x20%s,\x20%s,\x20%s',_0xada4('0x5c'),_0x5e9457,JSON['stringify'](_0x1fcc92));delete _0x1fcc92['name'];if(_0x5e9457===0x191){_0x5e9457=0x190;}_0x13d81b[_0xada4('0x1d')](_0x5e9457)[_0xada4('0x2f')](_0x1fb095[_0xada4('0x36')]['test']?{'message':_0xada4('0x80'),'statusCode':_0x1fcc92[_0xada4('0x7f')]}:_0x1fcc92);});}else{var _0x58b9a9=0x1f4;_0x13d81b['status'](_0x58b9a9)['send']({'message':_0xada4('0x80'),'statusCode':0x190});}});};
\ No newline at end of file
index 8edb257..92c6773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x046a=['exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','../../config/logger','api','moment','bluebird','./intSugarcrmAccount.attributes','../../components/integrations/configuration'];(function(_0x4046ad,_0x3a90ae){var _0x5c6799=function(_0x1bebe4){while(--_0x1bebe4){_0x4046ad['push'](_0x4046ad['shift']());}};_0x5c6799(++_0x3a90ae);}(_0x046a,0x122));var _0xa046=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x046a[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0xa046('0x0'));var util=require('util');var logger=require(_0xa046('0x1'))(_0xa046('0x2'));var moment=require(_0xa046('0x3'));var BPromise=require(_0xa046('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa046('0x5'));var integrations=require(_0xa046('0x6'));module[_0xa046('0x7')]=function(_0x3237f7,_0x52e606){return _0x3237f7[_0xa046('0x8')](_0xa046('0x9'),attributes,{'tableName':_0xa046('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf0d6=['./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x364b32,_0x4dec35){var _0x3f3ea0=function(_0x1911a8){while(--_0x1911a8){_0x364b32['push'](_0x364b32['shift']());}};_0x3f3ea0(++_0x4dec35);}(_0xf0d6,0xfc));var _0x6f0d=function(_0x49287b,_0x562716){_0x49287b=_0x49287b-0x0;var _0x6d0126=_0xf0d6[_0x49287b];return _0x6d0126;};'use strict';var _=require(_0x6f0d('0x0'));var util=require(_0x6f0d('0x1'));var logger=require('../../config/logger')(_0x6f0d('0x2'));var moment=require('moment');var BPromise=require(_0x6f0d('0x3'));var rp=require(_0x6f0d('0x4'));var fs=require('fs');var path=require(_0x6f0d('0x5'));var rimraf=require(_0x6f0d('0x6'));var config=require(_0x6f0d('0x7'));var attributes=require(_0x6f0d('0x8'));var integrations=require(_0x6f0d('0x9'));module['exports']=function(_0x2a5802,_0x6d3a16){return _0x2a5802[_0x6f0d('0xa')](_0x6f0d('0xb'),attributes,{'tableName':_0x6f0d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 851b509..4f276fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x480a=['model','attributes','stringify','ShowSugarcrmAccount','find','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','SugarcrmAccount,\x20%s,\x20%s','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','options','raw','where','limit','include','map'];(function(_0x579106,_0xd3d630){var _0x5d1ca6=function(_0x9f8832){while(--_0x9f8832){_0x579106['push'](_0x579106['shift']());}};_0x5d1ca6(++_0xd3d630);}(_0x480a,0x1bf));var _0xa480=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x480a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa480('0x0'));var BPromise=require('bluebird');var rs=require(_0xa480('0x1'));var fs=require('fs');var Redis=require(_0xa480('0x2'));var db=require(_0xa480('0x3'))['db'];var utils=require(_0xa480('0x4'));var logger=require(_0xa480('0x5'))(_0xa480('0x6'));var config=require(_0xa480('0x7'));var jayson=require(_0xa480('0x8'));var client=jayson['client'][_0xa480('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x481d39,_0x5db72d,_0x410280){return new BPromise(function(_0x105096,_0x2d9023){return client['request'](_0x481d39,_0x410280)[_0xa480('0xa')](function(_0x230e74){logger[_0xa480('0xb')](_0xa480('0xc'),_0x5db72d,'request\x20sent');logger[_0xa480('0xd')](_0xa480('0xe'),_0x5db72d,_0xa480('0xf'),JSON['stringify'](_0x230e74));if(_0x230e74[_0xa480('0x10')]){if(_0x230e74[_0xa480('0x10')][_0xa480('0x11')]===0x1f4){logger[_0xa480('0x10')](_0xa480('0xc'),_0x5db72d,_0x230e74[_0xa480('0x10')][_0xa480('0x12')]);return _0x2d9023(_0x230e74[_0xa480('0x10')][_0xa480('0x12')]);}logger[_0xa480('0x10')](_0xa480('0xc'),_0x5db72d,_0x230e74[_0xa480('0x10')][_0xa480('0x12')]);return _0x105096(_0x230e74[_0xa480('0x10')][_0xa480('0x12')]);}else{logger[_0xa480('0xb')]('SugarcrmAccount,\x20%s,\x20%s',_0x5db72d,_0xa480('0xf'));_0x105096(_0x230e74[_0xa480('0x13')][_0xa480('0x12')]);}})[_0xa480('0x14')](function(_0x5c536e){logger['error'](_0xa480('0xc'),_0x5db72d,_0x5c536e);_0x2d9023(_0x5c536e);});});}exports[_0xa480('0x15')]=function(_0x2b5267){var _0x569957=this;return new Promise(function(_0x448c85,_0x230f15){return db[_0xa480('0x16')]['findAll']({'raw':_0x2b5267[_0xa480('0x17')]?_0x2b5267['options'][_0xa480('0x18')]===undefined?!![]:![]:!![],'where':_0x2b5267[_0xa480('0x17')]?_0x2b5267[_0xa480('0x17')][_0xa480('0x19')]||null:null,'attributes':_0x2b5267[_0xa480('0x17')]?_0x2b5267[_0xa480('0x17')]['attributes']||null:null,'limit':_0x2b5267[_0xa480('0x17')]?_0x2b5267[_0xa480('0x17')][_0xa480('0x1a')]||null:null,'include':_0x2b5267[_0xa480('0x17')]?_0x2b5267[_0xa480('0x17')][_0xa480('0x1b')]?_[_0xa480('0x1c')](_0x2b5267[_0xa480('0x17')][_0xa480('0x1b')],function(_0x4cd701){return{'model':db[_0x4cd701[_0xa480('0x1d')]],'as':_0x4cd701['as'],'attributes':_0x4cd701[_0xa480('0x1e')],'include':_0x4cd701[_0xa480('0x1b')]?_['map'](_0x4cd701[_0xa480('0x1b')],function(_0x36399c){return{'model':db[_0x36399c[_0xa480('0x1d')]],'as':_0x36399c['as'],'attributes':_0x36399c[_0xa480('0x1e')],'include':_0x36399c[_0xa480('0x1b')]?_['map'](_0x36399c[_0xa480('0x1b')],function(_0x611836){return{'model':db[_0x611836[_0xa480('0x1d')]],'as':_0x611836['as'],'attributes':_0x611836[_0xa480('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa480('0xa')](function(_0x124c7a){logger[_0xa480('0xb')](_0xa480('0x15'),_0x2b5267);logger[_0xa480('0xd')](_0xa480('0x15'),_0x2b5267,JSON[_0xa480('0x1f')](_0x124c7a));_0x448c85(_0x124c7a);})['catch'](function(_0x42e1ed){logger['error']('GetSugarcrmAccount',_0x42e1ed['message'],_0x2b5267);_0x230f15(_0x569957[_0xa480('0x10')](0x1f4,_0x42e1ed[_0xa480('0x12')]));});});};exports[_0xa480('0x20')]=function(_0x12ec7b){var _0x15d8a5=this;return new Promise(function(_0xcdd6cd,_0x4232d8){return db['SugarcrmAccount'][_0xa480('0x21')]({'raw':_0x12ec7b[_0xa480('0x17')]?_0x12ec7b[_0xa480('0x17')][_0xa480('0x18')]===undefined?!![]:![]:!![],'where':_0x12ec7b[_0xa480('0x17')]?_0x12ec7b[_0xa480('0x17')][_0xa480('0x19')]||null:null,'attributes':_0x12ec7b['options']?_0x12ec7b[_0xa480('0x17')][_0xa480('0x1e')]||null:null,'include':_0x12ec7b[_0xa480('0x17')]?_0x12ec7b['options'][_0xa480('0x1b')]?_[_0xa480('0x1c')](_0x12ec7b[_0xa480('0x17')]['include'],function(_0x30e9d8){return{'model':db[_0x30e9d8[_0xa480('0x1d')]],'as':_0x30e9d8['as'],'attributes':_0x30e9d8['attributes'],'include':_0x30e9d8['include']?_[_0xa480('0x1c')](_0x30e9d8[_0xa480('0x1b')],function(_0x1470b1){return{'model':db[_0x1470b1[_0xa480('0x1d')]],'as':_0x1470b1['as'],'attributes':_0x1470b1[_0xa480('0x1e')],'include':_0x1470b1[_0xa480('0x1b')]?_[_0xa480('0x1c')](_0x1470b1['include'],function(_0x52e45a){return{'model':db[_0x52e45a[_0xa480('0x1d')]],'as':_0x52e45a['as'],'attributes':_0x52e45a['attributes']};}):[]};}):[]};}):[]:[]})[_0xa480('0xa')](function(_0x4ee0ee){logger[_0xa480('0xb')]('ShowSugarcrmAccount',_0x12ec7b);logger['debug']('ShowSugarcrmAccount',_0x12ec7b,JSON[_0xa480('0x1f')](_0x4ee0ee));_0xcdd6cd(_0x4ee0ee);})[_0xa480('0x14')](function(_0x15988a){logger[_0xa480('0x10')](_0xa480('0x20'),_0x15988a[_0xa480('0x12')],_0x12ec7b);_0x4232d8(_0x15d8a5[_0xa480('0x10')](0x1f4,_0x15988a[_0xa480('0x12')]));});});};
\ No newline at end of file
+var _0x0f33=['options','raw','where','attributes','limit','include','map','model','catch','then','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetSugarcrmAccount','SugarcrmAccount'];(function(_0x5cb3a9,_0x19602b){var _0x343dce=function(_0x4e6aff){while(--_0x4e6aff){_0x5cb3a9['push'](_0x5cb3a9['shift']());}};_0x343dce(++_0x19602b);}(_0x0f33,0xd1));var _0x30f3=function(_0x2f06ee,_0x413ed9){_0x2f06ee=_0x2f06ee-0x0;var _0x5047c8=_0x0f33[_0x2f06ee];return _0x5047c8;};'use strict';var _=require(_0x30f3('0x0'));var util=require(_0x30f3('0x1'));var moment=require(_0x30f3('0x2'));var BPromise=require(_0x30f3('0x3'));var rs=require(_0x30f3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x30f3('0x5'))['db'];var utils=require(_0x30f3('0x6'));var logger=require(_0x30f3('0x7'))(_0x30f3('0x8'));var config=require(_0x30f3('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x30f3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x248b21,_0x588a2a,_0x5e2bd2){return new BPromise(function(_0x5f02cb,_0x3a9d73){return client['request'](_0x248b21,_0x5e2bd2)['then'](function(_0x220785){logger[_0x30f3('0xb')](_0x30f3('0xc'),_0x588a2a,_0x30f3('0xd'));logger[_0x30f3('0xe')](_0x30f3('0xf'),_0x588a2a,_0x30f3('0xd'),JSON[_0x30f3('0x10')](_0x220785));if(_0x220785['error']){if(_0x220785[_0x30f3('0x11')]['code']===0x1f4){logger[_0x30f3('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x588a2a,_0x220785[_0x30f3('0x11')][_0x30f3('0x12')]);return _0x3a9d73(_0x220785[_0x30f3('0x11')][_0x30f3('0x12')]);}logger['error'](_0x30f3('0xc'),_0x588a2a,_0x220785[_0x30f3('0x11')][_0x30f3('0x12')]);return _0x5f02cb(_0x220785['error'][_0x30f3('0x12')]);}else{logger[_0x30f3('0xb')](_0x30f3('0xc'),_0x588a2a,'request\x20sent');_0x5f02cb(_0x220785[_0x30f3('0x13')][_0x30f3('0x12')]);}})['catch'](function(_0x50edee){logger['error'](_0x30f3('0xc'),_0x588a2a,_0x50edee);_0x3a9d73(_0x50edee);});});}exports[_0x30f3('0x14')]=function(_0x534e41){var _0x538b73=this;return new Promise(function(_0x420f5c,_0xaf0832){return db[_0x30f3('0x15')]['findAll']({'raw':_0x534e41[_0x30f3('0x16')]?_0x534e41[_0x30f3('0x16')][_0x30f3('0x17')]===undefined?!![]:![]:!![],'where':_0x534e41[_0x30f3('0x16')]?_0x534e41[_0x30f3('0x16')][_0x30f3('0x18')]||null:null,'attributes':_0x534e41[_0x30f3('0x16')]?_0x534e41[_0x30f3('0x16')][_0x30f3('0x19')]||null:null,'limit':_0x534e41[_0x30f3('0x16')]?_0x534e41[_0x30f3('0x16')][_0x30f3('0x1a')]||null:null,'include':_0x534e41['options']?_0x534e41[_0x30f3('0x16')][_0x30f3('0x1b')]?_[_0x30f3('0x1c')](_0x534e41[_0x30f3('0x16')]['include'],function(_0x491182){return{'model':db[_0x491182[_0x30f3('0x1d')]],'as':_0x491182['as'],'attributes':_0x491182[_0x30f3('0x19')],'include':_0x491182['include']?_[_0x30f3('0x1c')](_0x491182[_0x30f3('0x1b')],function(_0x29e3e9){return{'model':db[_0x29e3e9['model']],'as':_0x29e3e9['as'],'attributes':_0x29e3e9[_0x30f3('0x19')],'include':_0x29e3e9[_0x30f3('0x1b')]?_[_0x30f3('0x1c')](_0x29e3e9['include'],function(_0x331604){return{'model':db[_0x331604[_0x30f3('0x1d')]],'as':_0x331604['as'],'attributes':_0x331604[_0x30f3('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x85ed58){logger[_0x30f3('0xb')](_0x30f3('0x14'),_0x534e41);logger['debug'](_0x30f3('0x14'),_0x534e41,JSON[_0x30f3('0x10')](_0x85ed58));_0x420f5c(_0x85ed58);})[_0x30f3('0x1e')](function(_0x8b36cf){logger['error'](_0x30f3('0x14'),_0x8b36cf[_0x30f3('0x12')],_0x534e41);_0xaf0832(_0x538b73[_0x30f3('0x11')](0x1f4,_0x8b36cf[_0x30f3('0x12')]));});});};exports['ShowSugarcrmAccount']=function(_0x59ca38){var _0x5e6c43=this;return new Promise(function(_0x48c314,_0x8c1069){return db['SugarcrmAccount']['find']({'raw':_0x59ca38[_0x30f3('0x16')]?_0x59ca38[_0x30f3('0x16')][_0x30f3('0x17')]===undefined?!![]:![]:!![],'where':_0x59ca38[_0x30f3('0x16')]?_0x59ca38[_0x30f3('0x16')][_0x30f3('0x18')]||null:null,'attributes':_0x59ca38[_0x30f3('0x16')]?_0x59ca38[_0x30f3('0x16')][_0x30f3('0x19')]||null:null,'include':_0x59ca38[_0x30f3('0x16')]?_0x59ca38[_0x30f3('0x16')][_0x30f3('0x1b')]?_[_0x30f3('0x1c')](_0x59ca38['options'][_0x30f3('0x1b')],function(_0x36ef8e){return{'model':db[_0x36ef8e[_0x30f3('0x1d')]],'as':_0x36ef8e['as'],'attributes':_0x36ef8e[_0x30f3('0x19')],'include':_0x36ef8e[_0x30f3('0x1b')]?_[_0x30f3('0x1c')](_0x36ef8e[_0x30f3('0x1b')],function(_0x3084bf){return{'model':db[_0x3084bf['model']],'as':_0x3084bf['as'],'attributes':_0x3084bf[_0x30f3('0x19')],'include':_0x3084bf[_0x30f3('0x1b')]?_[_0x30f3('0x1c')](_0x3084bf['include'],function(_0xbf44bb){return{'model':db[_0xbf44bb['model']],'as':_0xbf44bb['as'],'attributes':_0xbf44bb['attributes']};}):[]};}):[]};}):[]:[]})[_0x30f3('0x1f')](function(_0x3f2f2a){logger[_0x30f3('0xb')](_0x30f3('0x20'),_0x59ca38);logger[_0x30f3('0xe')]('ShowSugarcrmAccount',_0x59ca38,JSON['stringify'](_0x3f2f2a));_0x48c314(_0x3f2f2a);})[_0x30f3('0x1e')](function(_0x91112c){logger['error'](_0x30f3('0x20'),_0x91112c['message'],_0x59ca38);_0x8c1069(_0x5e6c43[_0x30f3('0x11')](0x1f4,_0x91112c['message']));});});};
\ No newline at end of file
index fcc0b69..f688eed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5233=['put','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','/:id/subjects','getSubjects','/:id/descriptions','post','create'];(function(_0x3dc55d,_0xd07e93){var _0x3aa7f3=function(_0x506b46){while(--_0x506b46){_0x3dc55d['push'](_0x3dc55d['shift']());}};_0x3aa7f3(++_0xd07e93);}(_0x5233,0x193));var _0x3523=function(_0x28ff33,_0x232c72){_0x28ff33=_0x28ff33-0x0;var _0x6aafa7=_0x5233[_0x28ff33];return _0x6aafa7;};'use strict';var multer=require(_0x3523('0x0'));var util=require(_0x3523('0x1'));var path=require(_0x3523('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3523('0x3')]();var fs_extra=require(_0x3523('0x4'));var auth=require(_0x3523('0x5'));var interaction=require(_0x3523('0x6'));var config=require(_0x3523('0x7'));var controller=require(_0x3523('0x8'));router[_0x3523('0x9')]('/',auth[_0x3523('0xa')](),controller['index']);router['get'](_0x3523('0xb'),auth[_0x3523('0xa')](),controller['show']);router[_0x3523('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x3523('0x9')](_0x3523('0xc'),auth[_0x3523('0xa')](),controller[_0x3523('0xd')]);router[_0x3523('0x9')](_0x3523('0xe'),auth[_0x3523('0xa')](),controller['getDescriptions']);router[_0x3523('0xf')]('/',auth[_0x3523('0xa')](),controller[_0x3523('0x10')]);router[_0x3523('0x11')](_0x3523('0xb'),auth[_0x3523('0xa')](),controller[_0x3523('0x12')]);router[_0x3523('0x13')](_0x3523('0xb'),auth[_0x3523('0xa')](),controller['destroy']);module[_0x3523('0x14')]=router;
\ No newline at end of file
+var _0x346c=['exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','get','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy'];(function(_0x226ad1,_0x2858e2){var _0x16b625=function(_0x4dc555){while(--_0x4dc555){_0x226ad1['push'](_0x226ad1['shift']());}};_0x16b625(++_0x2858e2);}(_0x346c,0x91));var _0xc346=function(_0x3f731b,_0x290bc4){_0x3f731b=_0x3f731b-0x0;var _0x2c8c3d=_0x346c[_0x3f731b];return _0x2c8c3d;};'use strict';var multer=require(_0xc346('0x0'));var util=require(_0xc346('0x1'));var path=require('path');var timeout=require(_0xc346('0x2'));var express=require('express');var router=express[_0xc346('0x3')]();var fs_extra=require(_0xc346('0x4'));var auth=require(_0xc346('0x5'));var interaction=require(_0xc346('0x6'));var config=require(_0xc346('0x7'));var controller=require('./intSugarcrmConfiguration.controller');router['get']('/',auth[_0xc346('0x8')](),controller[_0xc346('0x9')]);router['get'](_0xc346('0xa'),auth[_0xc346('0x8')](),controller[_0xc346('0xb')]);router[_0xc346('0xc')](_0xc346('0xd'),auth[_0xc346('0x8')](),controller['getFields']);router[_0xc346('0xc')]('/:id/subjects',auth[_0xc346('0x8')](),controller[_0xc346('0xe')]);router['get'](_0xc346('0xf'),auth[_0xc346('0x8')](),controller[_0xc346('0x10')]);router[_0xc346('0x11')]('/',auth[_0xc346('0x8')](),controller[_0xc346('0x12')]);router[_0xc346('0x13')]('/:id',auth[_0xc346('0x8')](),controller[_0xc346('0x14')]);router[_0xc346('0x15')](_0xc346('0xa'),auth['isAuthenticated'](),controller[_0xc346('0x16')]);module[_0xc346('0x17')]=router;
\ No newline at end of file
index 506c6fa..358ea5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf9e=['exports','sequelize'];(function(_0x5678b5,_0x1c4aa8){var _0x4c09a5=function(_0x2aa89a){while(--_0x2aa89a){_0x5678b5['push'](_0x5678b5['shift']());}};_0x4c09a5(++_0x1c4aa8);}(_0xaf9e,0x91));var _0xeaf9=function(_0x917423,_0x518624){_0x917423=_0x917423-0x0;var _0x2bf5ef=_0xaf9e[_0x917423];return _0x2bf5ef;};'use strict';var Sequelize=require(_0xeaf9('0x0'));module[_0xeaf9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x97e5=['exports','STRING'];(function(_0x13992d,_0x3029ea){var _0x3d15bf=function(_0x3444f7){while(--_0x3444f7){_0x13992d['push'](_0x13992d['shift']());}};_0x3d15bf(++_0x3029ea);}(_0x97e5,0x1a0));var _0x597e=function(_0x5eddfd,_0x43a647){_0x5eddfd=_0x5eddfd-0x0;var _0x272139=_0x97e5[_0x5eddfd];return _0x272139;};'use strict';var Sequelize=require('sequelize');module[_0x597e('0x0')]={'name':{'type':Sequelize[_0x597e('0x1')]},'description':{'type':Sequelize[_0x597e('0x1')]}};
\ No newline at end of file
index b3e6d6a..3629874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ab=['update','destroy','end','sendStatus','error','stack','name','send','index','SugarcrmConfiguration','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','then','rows','params','include','find','catch','create','body','getFields','getSubjects','getDescriptions','SugarcrmField','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','reject','save'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xf6ab,0x7f));var _0xbf6a=function(_0x1ed92e,_0x3bf021){_0x1ed92e=_0x1ed92e-0x0;var _0x5743ae=_0xf6ab[_0x1ed92e];return _0x5743ae;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbf6a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbf6a('0x1'));var rp=require(_0xbf6a('0x2'));var moment=require('moment');var BPromise=require(_0xbf6a('0x3'));var Mustache=require(_0xbf6a('0x4'));var util=require(_0xbf6a('0x5'));var path=require(_0xbf6a('0x6'));var sox=require(_0xbf6a('0x7'));var csv=require(_0xbf6a('0x8'));var ejs=require(_0xbf6a('0x9'));var fs=require('fs');var fs_extra=require(_0xbf6a('0xa'));var _=require(_0xbf6a('0xb'));var squel=require('squel');var crypto=require(_0xbf6a('0xc'));var jsforce=require(_0xbf6a('0xd'));var deskjs=require(_0xbf6a('0xe'));var toCsv=require(_0xbf6a('0x8'));var querystring=require(_0xbf6a('0xf'));var Papa=require(_0xbf6a('0x10'));var Redis=require(_0xbf6a('0x11'));var authService=require(_0xbf6a('0x12'));var qs=require(_0xbf6a('0x13'));var as=require(_0xbf6a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbf6a('0x15'))(_0xbf6a('0x16'));var utils=require(_0xbf6a('0x17'));var config=require(_0xbf6a('0x18'));var licenseUtil=require(_0xbf6a('0x19'));var db=require(_0xbf6a('0x1a'))['db'];function respondWithStatusCode(_0x5995f1,_0x205411){_0x205411=_0x205411||0xcc;return function(_0x359ffc){if(_0x359ffc){return _0x5995f1['sendStatus'](_0x205411);}return _0x5995f1[_0xbf6a('0x1b')](_0x205411)['end']();};}function respondWithResult(_0x200bd6,_0x3f05e3){_0x3f05e3=_0x3f05e3||0xc8;return function(_0x47015b){if(_0x47015b){return _0x200bd6['status'](_0x3f05e3)[_0xbf6a('0x1c')](_0x47015b);}};}function respondWithFilteredResult(_0x29e500,_0x2c938a){return function(_0x3dd64b){if(_0x3dd64b){var _0x302aaf=typeof _0x2c938a[_0xbf6a('0x1d')]==='undefined'&&typeof _0x2c938a[_0xbf6a('0x1e')]===_0xbf6a('0x1f');var _0x1bd208=_0x3dd64b[_0xbf6a('0x20')];var _0x38438f=_0x302aaf?0x0:_0x2c938a[_0xbf6a('0x1d')];var _0x31cfd6=_0x302aaf?_0x3dd64b[_0xbf6a('0x20')]:_0x2c938a[_0xbf6a('0x1d')]+_0x2c938a[_0xbf6a('0x1e')];var _0x32aec0;if(_0x31cfd6>=_0x1bd208){_0x31cfd6=_0x1bd208;_0x32aec0=0xc8;}else{_0x32aec0=0xce;}_0x29e500[_0xbf6a('0x1b')](_0x32aec0);return _0x29e500[_0xbf6a('0x21')](_0xbf6a('0x22'),_0x38438f+'-'+_0x31cfd6+'/'+_0x1bd208)[_0xbf6a('0x1c')](_0x3dd64b);}return null;};}function patchUpdates(_0x209e3f){return function(_0x38f39c){try{jsonpatch['apply'](_0x38f39c,_0x209e3f,!![]);}catch(_0x30def3){return BPromise[_0xbf6a('0x23')](_0x30def3);}return _0x38f39c[_0xbf6a('0x24')]();};}function saveUpdates(_0x1627a9,_0x285bea){return function(_0x2107f1){if(_0x2107f1){return _0x2107f1[_0xbf6a('0x25')](_0x1627a9)['then'](function(_0x5a5eec){return _0x5a5eec;});}return null;};}function removeEntity(_0x4de1e1,_0x5df98d){return function(_0x10b242){if(_0x10b242){return _0x10b242[_0xbf6a('0x26')]()['then'](function(){_0x4de1e1[_0xbf6a('0x1b')](0xcc)[_0xbf6a('0x27')]();});}};}function handleEntityNotFound(_0x2728e4,_0x29309c){return function(_0x88e791){if(!_0x88e791){_0x2728e4[_0xbf6a('0x28')](0x194);}return _0x88e791;};}function handleError(_0x5b1545,_0x4cf0c1){_0x4cf0c1=_0x4cf0c1||0x1f4;return function(_0x52e227){logger[_0xbf6a('0x29')](_0x52e227[_0xbf6a('0x2a')]);if(_0x52e227['name']){delete _0x52e227[_0xbf6a('0x2b')];}_0x5b1545[_0xbf6a('0x1b')](_0x4cf0c1)[_0xbf6a('0x2c')](_0x52e227);};}exports[_0xbf6a('0x2d')]=function(_0x451558,_0x47c131){var _0x572845={},_0x43ad47={},_0x144f74={'count':0x0,'rows':[]};var _0x191aae=_['map'](db[_0xbf6a('0x2e')][_0xbf6a('0x2f')],function(_0x4c1478){return{'name':_0x4c1478['fieldName'],'type':_0x4c1478[_0xbf6a('0x30')][_0xbf6a('0x31')]};});_0x43ad47[_0xbf6a('0x32')]=_[_0xbf6a('0x33')](_0x191aae,_0xbf6a('0x2b'));_0x43ad47[_0xbf6a('0x34')]=_[_0xbf6a('0x35')](_0x451558['query']);_0x43ad47[_0xbf6a('0x36')]=_[_0xbf6a('0x37')](_0x43ad47[_0xbf6a('0x32')],_0x43ad47[_0xbf6a('0x34')]);_0x572845[_0xbf6a('0x38')]=_[_0xbf6a('0x37')](_0x43ad47[_0xbf6a('0x32')],qs['fields'](_0x451558[_0xbf6a('0x34')][_0xbf6a('0x39')]));_0x572845[_0xbf6a('0x38')]=_0x572845[_0xbf6a('0x38')][_0xbf6a('0x3a')]?_0x572845[_0xbf6a('0x38')]:_0x43ad47[_0xbf6a('0x32')];if(!_0x451558[_0xbf6a('0x34')][_0xbf6a('0x3b')](_0xbf6a('0x3c'))){_0x572845[_0xbf6a('0x1e')]=qs[_0xbf6a('0x1e')](_0x451558['query'][_0xbf6a('0x1e')]);_0x572845['offset']=qs[_0xbf6a('0x1d')](_0x451558['query'][_0xbf6a('0x1d')]);}_0x572845[_0xbf6a('0x3d')]=qs[_0xbf6a('0x3e')](_0x451558['query'][_0xbf6a('0x3e')]);_0x572845[_0xbf6a('0x3f')]=qs['filters'](_[_0xbf6a('0x40')](_0x451558[_0xbf6a('0x34')],_0x43ad47[_0xbf6a('0x36')]),_0x191aae);if(_0x451558[_0xbf6a('0x34')][_0xbf6a('0x41')]){_0x572845[_0xbf6a('0x3f')]=_[_0xbf6a('0x42')](_0x572845[_0xbf6a('0x3f')],{'$or':_[_0xbf6a('0x33')](_0x191aae,function(_0x287922){if(_0x287922[_0xbf6a('0x30')]!=='VIRTUAL'){var _0x2ee18c={};_0x2ee18c[_0x287922[_0xbf6a('0x2b')]]={'$like':'%'+_0x451558[_0xbf6a('0x34')]['filter']+'%'};return _0x2ee18c;}})});}_0x572845=_[_0xbf6a('0x42')]({},_0x572845,_0x451558[_0xbf6a('0x43')]);var _0x144dbf={'where':_0x572845[_0xbf6a('0x3f')]};return db['SugarcrmConfiguration'][_0xbf6a('0x20')](_0x144dbf)['then'](function(_0xf107c3){_0x144f74[_0xbf6a('0x20')]=_0xf107c3;if(_0x451558[_0xbf6a('0x34')][_0xbf6a('0x44')]){_0x572845['include']=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xbf6a('0x45')](_0x572845);})[_0xbf6a('0x46')](function(_0x16c5a7){_0x144f74[_0xbf6a('0x47')]=_0x16c5a7;return _0x144f74;})['then'](respondWithFilteredResult(_0x47c131,_0x572845))['catch'](handleError(_0x47c131,null));};exports['show']=function(_0xb8659,_0x3fb51d){var _0x1e6fca={'raw':![],'where':{'id':_0xb8659[_0xbf6a('0x48')]['id']}},_0x4b8a58={};_0x4b8a58['model']=_[_0xbf6a('0x35')](db['SugarcrmConfiguration'][_0xbf6a('0x2f')]);_0x4b8a58[_0xbf6a('0x34')]=_['keys'](_0xb8659[_0xbf6a('0x34')]);_0x4b8a58[_0xbf6a('0x36')]=_[_0xbf6a('0x37')](_0x4b8a58[_0xbf6a('0x32')],_0x4b8a58[_0xbf6a('0x34')]);_0x1e6fca['attributes']=_[_0xbf6a('0x37')](_0x4b8a58[_0xbf6a('0x32')],qs[_0xbf6a('0x39')](_0xb8659[_0xbf6a('0x34')][_0xbf6a('0x39')]));_0x1e6fca[_0xbf6a('0x38')]=_0x1e6fca[_0xbf6a('0x38')][_0xbf6a('0x3a')]?_0x1e6fca['attributes']:_0x4b8a58[_0xbf6a('0x32')];if(_0xb8659[_0xbf6a('0x34')]['includeAll']){_0x1e6fca[_0xbf6a('0x49')]=[{'all':!![]}];}_0x1e6fca=_[_0xbf6a('0x42')]({},_0x1e6fca,_0xb8659[_0xbf6a('0x43')]);return db['SugarcrmConfiguration'][_0xbf6a('0x4a')](_0x1e6fca)[_0xbf6a('0x46')](handleEntityNotFound(_0x3fb51d,null))['then'](respondWithResult(_0x3fb51d,null))[_0xbf6a('0x4b')](handleError(_0x3fb51d,null));};exports[_0xbf6a('0x4c')]=function(_0x17c171,_0x33895c){return db['SugarcrmConfiguration'][_0xbf6a('0x4c')](_0x17c171['body'],{})[_0xbf6a('0x46')](respondWithResult(_0x33895c,0xc9))[_0xbf6a('0x4b')](handleError(_0x33895c,null));};exports[_0xbf6a('0x25')]=function(_0x499871,_0x2513e2){if(_0x499871['body']['id']){delete _0x499871[_0xbf6a('0x4d')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x499871[_0xbf6a('0x48')]['id']}})[_0xbf6a('0x46')](handleEntityNotFound(_0x2513e2,null))['then'](saveUpdates(_0x499871[_0xbf6a('0x4d')],null))[_0xbf6a('0x46')](respondWithResult(_0x2513e2,null))['catch'](handleError(_0x2513e2,null));};exports[_0xbf6a('0x26')]=function(_0x33eba1,_0x2252da){return db[_0xbf6a('0x2e')]['find']({'where':{'id':_0x33eba1[_0xbf6a('0x48')]['id']}})[_0xbf6a('0x46')](handleEntityNotFound(_0x2252da,null))[_0xbf6a('0x46')](removeEntity(_0x2252da,null))[_0xbf6a('0x4b')](handleError(_0x2252da,null));};exports['getFields']=function(_0x30b2de,_0x2a796e,_0x41e975){var _0x1d7993={};var _0x375ca4={};var _0x3f9106;var _0x508612;return db[_0xbf6a('0x2e')]['findOne']({'where':{'id':_0x30b2de[_0xbf6a('0x48')]['id']}})['then'](handleEntityNotFound(_0x2a796e,null))[_0xbf6a('0x46')](function(_0x3ac5d8){if(_0x3ac5d8){_0x3f9106=_0x3ac5d8;_0x375ca4['model']=_[_0xbf6a('0x35')](db['SugarcrmField'][_0xbf6a('0x2f')]);_0x375ca4[_0xbf6a('0x34')]=_[_0xbf6a('0x35')](_0x30b2de['query']);_0x375ca4[_0xbf6a('0x36')]=_[_0xbf6a('0x37')](_0x375ca4[_0xbf6a('0x32')],_0x375ca4[_0xbf6a('0x34')]);_0x1d7993[_0xbf6a('0x38')]=_[_0xbf6a('0x37')](_0x375ca4[_0xbf6a('0x32')],qs['fields'](_0x30b2de['query'][_0xbf6a('0x39')]));_0x1d7993[_0xbf6a('0x38')]=_0x1d7993[_0xbf6a('0x38')]['length']?_0x1d7993[_0xbf6a('0x38')]:_0x375ca4[_0xbf6a('0x32')];_0x1d7993[_0xbf6a('0x3d')]=qs['sort'](_0x30b2de[_0xbf6a('0x34')][_0xbf6a('0x3e')]);_0x1d7993['where']=qs['filters'](_[_0xbf6a('0x40')](_0x30b2de['query'],_0x375ca4['filters']));if(_0x30b2de[_0xbf6a('0x34')][_0xbf6a('0x41')]){_0x1d7993[_0xbf6a('0x3f')]=_[_0xbf6a('0x42')](_0x1d7993[_0xbf6a('0x3f')],{'$or':_['map'](_0x1d7993[_0xbf6a('0x38')],function(_0x1d74ba){var _0x2f57e8={};_0x2f57e8[_0x1d74ba]={'$like':'%'+_0x30b2de[_0xbf6a('0x34')][_0xbf6a('0x41')]+'%'};return _0x2f57e8;})});}_0x1d7993=_['merge']({},_0x1d7993,_0x30b2de[_0xbf6a('0x43')]);return _0x3f9106['getFields'](_0x1d7993);}})[_0xbf6a('0x46')](function(_0x4027a6){if(_0x4027a6){_0x508612=_0x4027a6[_0xbf6a('0x3a')];if(!_0x30b2de[_0xbf6a('0x34')][_0xbf6a('0x3b')](_0xbf6a('0x3c'))){_0x1d7993[_0xbf6a('0x1e')]=qs['limit'](_0x30b2de[_0xbf6a('0x34')][_0xbf6a('0x1e')]);_0x1d7993['offset']=qs['offset'](_0x30b2de[_0xbf6a('0x34')][_0xbf6a('0x1d')]);}return _0x3f9106[_0xbf6a('0x4e')](_0x1d7993);}})['then'](function(_0x121d12){if(_0x121d12){return _0x121d12?{'count':_0x508612,'rows':_0x121d12}:null;}})[_0xbf6a('0x46')](respondWithResult(_0x2a796e,null))['catch'](handleError(_0x2a796e,null));};exports['getSubjects']=function(_0x2c2608,_0x1b08d1,_0x57a16b){var _0x5e22ea={};var _0xb119dd={};var _0x6abc4d;var _0x16d935;return db[_0xbf6a('0x2e')]['findOne']({'where':{'id':_0x2c2608['params']['id']}})[_0xbf6a('0x46')](handleEntityNotFound(_0x1b08d1,null))[_0xbf6a('0x46')](function(_0x57f970){if(_0x57f970){_0x6abc4d=_0x57f970;_0xb119dd[_0xbf6a('0x32')]=_[_0xbf6a('0x35')](db['SugarcrmField']['rawAttributes']);_0xb119dd[_0xbf6a('0x34')]=_[_0xbf6a('0x35')](_0x2c2608[_0xbf6a('0x34')]);_0xb119dd['filters']=_[_0xbf6a('0x37')](_0xb119dd[_0xbf6a('0x32')],_0xb119dd[_0xbf6a('0x34')]);_0x5e22ea[_0xbf6a('0x38')]=_['intersection'](_0xb119dd[_0xbf6a('0x32')],qs[_0xbf6a('0x39')](_0x2c2608[_0xbf6a('0x34')][_0xbf6a('0x39')]));_0x5e22ea[_0xbf6a('0x38')]=_0x5e22ea[_0xbf6a('0x38')][_0xbf6a('0x3a')]?_0x5e22ea[_0xbf6a('0x38')]:_0xb119dd[_0xbf6a('0x32')];_0x5e22ea[_0xbf6a('0x3d')]=qs[_0xbf6a('0x3e')](_0x2c2608[_0xbf6a('0x34')][_0xbf6a('0x3e')]);_0x5e22ea['where']=qs[_0xbf6a('0x36')](_['pick'](_0x2c2608['query'],_0xb119dd[_0xbf6a('0x36')]));if(_0x2c2608[_0xbf6a('0x34')]['filter']){_0x5e22ea[_0xbf6a('0x3f')]=_[_0xbf6a('0x42')](_0x5e22ea[_0xbf6a('0x3f')],{'$or':_[_0xbf6a('0x33')](_0x5e22ea['attributes'],function(_0x342516){var _0x238c4c={};_0x238c4c[_0x342516]={'$like':'%'+_0x2c2608['query']['filter']+'%'};return _0x238c4c;})});}_0x5e22ea=_['merge']({},_0x5e22ea,_0x2c2608[_0xbf6a('0x43')]);return _0x6abc4d[_0xbf6a('0x4f')](_0x5e22ea);}})[_0xbf6a('0x46')](function(_0x2fdcf7){if(_0x2fdcf7){_0x16d935=_0x2fdcf7['length'];if(!_0x2c2608[_0xbf6a('0x34')][_0xbf6a('0x3b')](_0xbf6a('0x3c'))){_0x5e22ea['limit']=qs[_0xbf6a('0x1e')](_0x2c2608[_0xbf6a('0x34')]['limit']);_0x5e22ea[_0xbf6a('0x1d')]=qs[_0xbf6a('0x1d')](_0x2c2608[_0xbf6a('0x34')][_0xbf6a('0x1d')]);}return _0x6abc4d['getSubjects'](_0x5e22ea);}})[_0xbf6a('0x46')](function(_0x5fba16){if(_0x5fba16){return _0x5fba16?{'count':_0x16d935,'rows':_0x5fba16}:null;}})[_0xbf6a('0x46')](respondWithResult(_0x1b08d1,null))[_0xbf6a('0x4b')](handleError(_0x1b08d1,null));};exports[_0xbf6a('0x50')]=function(_0x1179ff,_0xc1dd32,_0x37922f){var _0x1a3dbc={};var _0x107ea6={};var _0x310d58;var _0xfa34b1;return db[_0xbf6a('0x2e')]['findOne']({'where':{'id':_0x1179ff[_0xbf6a('0x48')]['id']}})[_0xbf6a('0x46')](handleEntityNotFound(_0xc1dd32,null))[_0xbf6a('0x46')](function(_0x5bb20c){if(_0x5bb20c){_0x310d58=_0x5bb20c;_0x107ea6[_0xbf6a('0x32')]=_[_0xbf6a('0x35')](db[_0xbf6a('0x51')][_0xbf6a('0x2f')]);_0x107ea6[_0xbf6a('0x34')]=_[_0xbf6a('0x35')](_0x1179ff[_0xbf6a('0x34')]);_0x107ea6[_0xbf6a('0x36')]=_['intersection'](_0x107ea6[_0xbf6a('0x32')],_0x107ea6[_0xbf6a('0x34')]);_0x1a3dbc[_0xbf6a('0x38')]=_[_0xbf6a('0x37')](_0x107ea6[_0xbf6a('0x32')],qs[_0xbf6a('0x39')](_0x1179ff[_0xbf6a('0x34')][_0xbf6a('0x39')]));_0x1a3dbc[_0xbf6a('0x38')]=_0x1a3dbc[_0xbf6a('0x38')][_0xbf6a('0x3a')]?_0x1a3dbc[_0xbf6a('0x38')]:_0x107ea6[_0xbf6a('0x32')];_0x1a3dbc[_0xbf6a('0x3d')]=qs['sort'](_0x1179ff[_0xbf6a('0x34')]['sort']);_0x1a3dbc[_0xbf6a('0x3f')]=qs[_0xbf6a('0x36')](_[_0xbf6a('0x40')](_0x1179ff['query'],_0x107ea6['filters']));if(_0x1179ff['query']['filter']){_0x1a3dbc[_0xbf6a('0x3f')]=_['merge'](_0x1a3dbc[_0xbf6a('0x3f')],{'$or':_[_0xbf6a('0x33')](_0x1a3dbc[_0xbf6a('0x38')],function(_0x4b8b16){var _0x433960={};_0x433960[_0x4b8b16]={'$like':'%'+_0x1179ff[_0xbf6a('0x34')]['filter']+'%'};return _0x433960;})});}_0x1a3dbc=_[_0xbf6a('0x42')]({},_0x1a3dbc,_0x1179ff[_0xbf6a('0x43')]);return _0x310d58['getDescriptions'](_0x1a3dbc);}})[_0xbf6a('0x46')](function(_0x1b7f5f){if(_0x1b7f5f){_0xfa34b1=_0x1b7f5f[_0xbf6a('0x3a')];if(!_0x1179ff[_0xbf6a('0x34')][_0xbf6a('0x3b')](_0xbf6a('0x3c'))){_0x1a3dbc['limit']=qs[_0xbf6a('0x1e')](_0x1179ff[_0xbf6a('0x34')][_0xbf6a('0x1e')]);_0x1a3dbc[_0xbf6a('0x1d')]=qs[_0xbf6a('0x1d')](_0x1179ff['query'][_0xbf6a('0x1d')]);}return _0x310d58[_0xbf6a('0x50')](_0x1a3dbc);}})[_0xbf6a('0x46')](function(_0x4d67c0){if(_0x4d67c0){return _0x4d67c0?{'count':_0xfa34b1,'rows':_0x4d67c0}:null;}})[_0xbf6a('0x46')](respondWithResult(_0xc1dd32,null))[_0xbf6a('0x4b')](handleError(_0xc1dd32,null));};
\ No newline at end of file
+var _0x3ab5=['rawAttributes','find','create','body','getFields','SugarcrmField','order','pick','nolimit','findOne','getSubjects','getDescriptions','eml-format','zip-dir','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','SugarcrmConfiguration','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','filters','filter','where','merge','options','includeAll','include','catch','params'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0x3ab5,0x1d4));var _0x53ab=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x3ab5[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x53ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x53ab('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x53ab('0x2'));var moment=require(_0x53ab('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x53ab('0x4'));var util=require(_0x53ab('0x5'));var path=require(_0x53ab('0x6'));var sox=require(_0x53ab('0x7'));var csv=require(_0x53ab('0x8'));var ejs=require(_0x53ab('0x9'));var fs=require('fs');var fs_extra=require(_0x53ab('0xa'));var _=require('lodash');var squel=require(_0x53ab('0xb'));var crypto=require('crypto');var jsforce=require(_0x53ab('0xc'));var deskjs=require(_0x53ab('0xd'));var toCsv=require(_0x53ab('0x8'));var querystring=require(_0x53ab('0xe'));var Papa=require(_0x53ab('0xf'));var Redis=require(_0x53ab('0x10'));var authService=require(_0x53ab('0x11'));var qs=require(_0x53ab('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x53ab('0x13'));var config=require(_0x53ab('0x14'));var licenseUtil=require(_0x53ab('0x15'));var db=require(_0x53ab('0x16'))['db'];function respondWithStatusCode(_0x2494e9,_0x41e96f){_0x41e96f=_0x41e96f||0xcc;return function(_0x4e0073){if(_0x4e0073){return _0x2494e9[_0x53ab('0x17')](_0x41e96f);}return _0x2494e9[_0x53ab('0x18')](_0x41e96f)['end']();};}function respondWithResult(_0x399113,_0x239e95){_0x239e95=_0x239e95||0xc8;return function(_0xa89c5f){if(_0xa89c5f){return _0x399113['status'](_0x239e95)[_0x53ab('0x19')](_0xa89c5f);}};}function respondWithFilteredResult(_0x5dcf1e,_0x306563){return function(_0x4433c4){if(_0x4433c4){var _0x246211=typeof _0x306563['offset']===_0x53ab('0x1a')&&typeof _0x306563[_0x53ab('0x1b')]===_0x53ab('0x1a');var _0x476bd5=_0x4433c4[_0x53ab('0x1c')];var _0x15e290=_0x246211?0x0:_0x306563[_0x53ab('0x1d')];var _0x1b9e99=_0x246211?_0x4433c4[_0x53ab('0x1c')]:_0x306563[_0x53ab('0x1d')]+_0x306563[_0x53ab('0x1b')];var _0xea7508;if(_0x1b9e99>=_0x476bd5){_0x1b9e99=_0x476bd5;_0xea7508=0xc8;}else{_0xea7508=0xce;}_0x5dcf1e['status'](_0xea7508);return _0x5dcf1e['set'](_0x53ab('0x1e'),_0x15e290+'-'+_0x1b9e99+'/'+_0x476bd5)[_0x53ab('0x19')](_0x4433c4);}return null;};}function patchUpdates(_0x36dc83){return function(_0x317982){try{jsonpatch[_0x53ab('0x1f')](_0x317982,_0x36dc83,!![]);}catch(_0x2b2d28){return BPromise[_0x53ab('0x20')](_0x2b2d28);}return _0x317982[_0x53ab('0x21')]();};}function saveUpdates(_0x562080,_0x5cb874){return function(_0x9b8011){if(_0x9b8011){return _0x9b8011[_0x53ab('0x22')](_0x562080)[_0x53ab('0x23')](function(_0x128d0f){return _0x128d0f;});}return null;};}function removeEntity(_0x1919a0,_0x2776f0){return function(_0xa16c28){if(_0xa16c28){return _0xa16c28[_0x53ab('0x24')]()['then'](function(){_0x1919a0[_0x53ab('0x18')](0xcc)[_0x53ab('0x25')]();});}};}function handleEntityNotFound(_0x2625ca,_0x13bd69){return function(_0x414e46){if(!_0x414e46){_0x2625ca[_0x53ab('0x17')](0x194);}return _0x414e46;};}function handleError(_0x396100,_0x616706){_0x616706=_0x616706||0x1f4;return function(_0x1a7856){logger[_0x53ab('0x26')](_0x1a7856[_0x53ab('0x27')]);if(_0x1a7856[_0x53ab('0x28')]){delete _0x1a7856[_0x53ab('0x28')];}_0x396100[_0x53ab('0x18')](_0x616706)['send'](_0x1a7856);};}exports[_0x53ab('0x29')]=function(_0x19c52c,_0x9d3194){var _0x34de3b={},_0x10ce19={},_0x43e451={'count':0x0,'rows':[]};var _0x308e8e=_[_0x53ab('0x2a')](db[_0x53ab('0x2b')]['rawAttributes'],function(_0x19d66f){return{'name':_0x19d66f[_0x53ab('0x2c')],'type':_0x19d66f[_0x53ab('0x2d')]['key']};});_0x10ce19[_0x53ab('0x2e')]=_[_0x53ab('0x2a')](_0x308e8e,_0x53ab('0x28'));_0x10ce19[_0x53ab('0x2f')]=_[_0x53ab('0x30')](_0x19c52c['query']);_0x10ce19['filters']=_[_0x53ab('0x31')](_0x10ce19[_0x53ab('0x2e')],_0x10ce19['query']);_0x34de3b['attributes']=_['intersection'](_0x10ce19[_0x53ab('0x2e')],qs[_0x53ab('0x32')](_0x19c52c['query'][_0x53ab('0x32')]));_0x34de3b[_0x53ab('0x33')]=_0x34de3b[_0x53ab('0x33')][_0x53ab('0x34')]?_0x34de3b[_0x53ab('0x33')]:_0x10ce19[_0x53ab('0x2e')];if(!_0x19c52c[_0x53ab('0x2f')][_0x53ab('0x35')]('nolimit')){_0x34de3b[_0x53ab('0x1b')]=qs[_0x53ab('0x1b')](_0x19c52c['query'][_0x53ab('0x1b')]);_0x34de3b['offset']=qs['offset'](_0x19c52c[_0x53ab('0x2f')][_0x53ab('0x1d')]);}_0x34de3b['order']=qs[_0x53ab('0x36')](_0x19c52c[_0x53ab('0x2f')][_0x53ab('0x36')]);_0x34de3b['where']=qs[_0x53ab('0x37')](_['pick'](_0x19c52c[_0x53ab('0x2f')],_0x10ce19[_0x53ab('0x37')]),_0x308e8e);if(_0x19c52c['query'][_0x53ab('0x38')]){_0x34de3b[_0x53ab('0x39')]=_[_0x53ab('0x3a')](_0x34de3b['where'],{'$or':_[_0x53ab('0x2a')](_0x308e8e,function(_0x250311){if(_0x250311[_0x53ab('0x2d')]!=='VIRTUAL'){var _0xdda409={};_0xdda409[_0x250311['name']]={'$like':'%'+_0x19c52c[_0x53ab('0x2f')][_0x53ab('0x38')]+'%'};return _0xdda409;}})});}_0x34de3b=_[_0x53ab('0x3a')]({},_0x34de3b,_0x19c52c[_0x53ab('0x3b')]);var _0x3da05b={'where':_0x34de3b[_0x53ab('0x39')]};return db[_0x53ab('0x2b')][_0x53ab('0x1c')](_0x3da05b)['then'](function(_0x2595e4){_0x43e451[_0x53ab('0x1c')]=_0x2595e4;if(_0x19c52c['query'][_0x53ab('0x3c')]){_0x34de3b[_0x53ab('0x3d')]=[{'all':!![]}];}return db[_0x53ab('0x2b')]['findAll'](_0x34de3b);})[_0x53ab('0x23')](function(_0x5eb8fe){_0x43e451['rows']=_0x5eb8fe;return _0x43e451;})[_0x53ab('0x23')](respondWithFilteredResult(_0x9d3194,_0x34de3b))[_0x53ab('0x3e')](handleError(_0x9d3194,null));};exports['show']=function(_0x288bde,_0x3f4827){var _0x216f0e={'raw':![],'where':{'id':_0x288bde[_0x53ab('0x3f')]['id']}},_0xefe377={};_0xefe377[_0x53ab('0x2e')]=_[_0x53ab('0x30')](db[_0x53ab('0x2b')][_0x53ab('0x40')]);_0xefe377[_0x53ab('0x2f')]=_[_0x53ab('0x30')](_0x288bde['query']);_0xefe377['filters']=_[_0x53ab('0x31')](_0xefe377[_0x53ab('0x2e')],_0xefe377[_0x53ab('0x2f')]);_0x216f0e[_0x53ab('0x33')]=_[_0x53ab('0x31')](_0xefe377[_0x53ab('0x2e')],qs[_0x53ab('0x32')](_0x288bde[_0x53ab('0x2f')][_0x53ab('0x32')]));_0x216f0e[_0x53ab('0x33')]=_0x216f0e[_0x53ab('0x33')][_0x53ab('0x34')]?_0x216f0e[_0x53ab('0x33')]:_0xefe377[_0x53ab('0x2e')];if(_0x288bde['query'][_0x53ab('0x3c')]){_0x216f0e[_0x53ab('0x3d')]=[{'all':!![]}];}_0x216f0e=_[_0x53ab('0x3a')]({},_0x216f0e,_0x288bde[_0x53ab('0x3b')]);return db[_0x53ab('0x2b')][_0x53ab('0x41')](_0x216f0e)[_0x53ab('0x23')](handleEntityNotFound(_0x3f4827,null))[_0x53ab('0x23')](respondWithResult(_0x3f4827,null))[_0x53ab('0x3e')](handleError(_0x3f4827,null));};exports[_0x53ab('0x42')]=function(_0x20ed60,_0x376668){return db[_0x53ab('0x2b')][_0x53ab('0x42')](_0x20ed60[_0x53ab('0x43')],{})['then'](respondWithResult(_0x376668,0xc9))['catch'](handleError(_0x376668,null));};exports['update']=function(_0x2586b7,_0x5b6cf4){if(_0x2586b7[_0x53ab('0x43')]['id']){delete _0x2586b7[_0x53ab('0x43')]['id'];}return db[_0x53ab('0x2b')][_0x53ab('0x41')]({'where':{'id':_0x2586b7[_0x53ab('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5b6cf4,null))['then'](saveUpdates(_0x2586b7['body'],null))[_0x53ab('0x23')](respondWithResult(_0x5b6cf4,null))[_0x53ab('0x3e')](handleError(_0x5b6cf4,null));};exports[_0x53ab('0x24')]=function(_0x31244d,_0x162ef3){return db[_0x53ab('0x2b')][_0x53ab('0x41')]({'where':{'id':_0x31244d[_0x53ab('0x3f')]['id']}})[_0x53ab('0x23')](handleEntityNotFound(_0x162ef3,null))['then'](removeEntity(_0x162ef3,null))[_0x53ab('0x3e')](handleError(_0x162ef3,null));};exports[_0x53ab('0x44')]=function(_0x2555cd,_0x1b60b8,_0x404eb7){var _0x56ad3d={};var _0x321107={};var _0x4ac59c;var _0x5e5815;return db[_0x53ab('0x2b')]['findOne']({'where':{'id':_0x2555cd[_0x53ab('0x3f')]['id']}})[_0x53ab('0x23')](handleEntityNotFound(_0x1b60b8,null))['then'](function(_0x86b1d7){if(_0x86b1d7){_0x4ac59c=_0x86b1d7;_0x321107[_0x53ab('0x2e')]=_[_0x53ab('0x30')](db[_0x53ab('0x45')][_0x53ab('0x40')]);_0x321107['query']=_[_0x53ab('0x30')](_0x2555cd['query']);_0x321107['filters']=_['intersection'](_0x321107[_0x53ab('0x2e')],_0x321107[_0x53ab('0x2f')]);_0x56ad3d['attributes']=_['intersection'](_0x321107[_0x53ab('0x2e')],qs[_0x53ab('0x32')](_0x2555cd['query'][_0x53ab('0x32')]));_0x56ad3d[_0x53ab('0x33')]=_0x56ad3d['attributes'][_0x53ab('0x34')]?_0x56ad3d[_0x53ab('0x33')]:_0x321107[_0x53ab('0x2e')];_0x56ad3d[_0x53ab('0x46')]=qs[_0x53ab('0x36')](_0x2555cd[_0x53ab('0x2f')][_0x53ab('0x36')]);_0x56ad3d[_0x53ab('0x39')]=qs['filters'](_[_0x53ab('0x47')](_0x2555cd[_0x53ab('0x2f')],_0x321107[_0x53ab('0x37')]));if(_0x2555cd['query']['filter']){_0x56ad3d['where']=_[_0x53ab('0x3a')](_0x56ad3d[_0x53ab('0x39')],{'$or':_[_0x53ab('0x2a')](_0x56ad3d['attributes'],function(_0x251e46){var _0x256d11={};_0x256d11[_0x251e46]={'$like':'%'+_0x2555cd['query'][_0x53ab('0x38')]+'%'};return _0x256d11;})});}_0x56ad3d=_[_0x53ab('0x3a')]({},_0x56ad3d,_0x2555cd[_0x53ab('0x3b')]);return _0x4ac59c['getFields'](_0x56ad3d);}})[_0x53ab('0x23')](function(_0x3f9f21){if(_0x3f9f21){_0x5e5815=_0x3f9f21[_0x53ab('0x34')];if(!_0x2555cd[_0x53ab('0x2f')][_0x53ab('0x35')](_0x53ab('0x48'))){_0x56ad3d[_0x53ab('0x1b')]=qs[_0x53ab('0x1b')](_0x2555cd[_0x53ab('0x2f')][_0x53ab('0x1b')]);_0x56ad3d['offset']=qs[_0x53ab('0x1d')](_0x2555cd['query'][_0x53ab('0x1d')]);}return _0x4ac59c[_0x53ab('0x44')](_0x56ad3d);}})[_0x53ab('0x23')](function(_0x4a6f34){if(_0x4a6f34){return _0x4a6f34?{'count':_0x5e5815,'rows':_0x4a6f34}:null;}})[_0x53ab('0x23')](respondWithResult(_0x1b60b8,null))['catch'](handleError(_0x1b60b8,null));};exports['getSubjects']=function(_0x5922af,_0x2c03e2,_0x53fc82){var _0x2968d6={};var _0x5b0a48={};var _0x8fa5cd;var _0x2117cd;return db[_0x53ab('0x2b')][_0x53ab('0x49')]({'where':{'id':_0x5922af[_0x53ab('0x3f')]['id']}})[_0x53ab('0x23')](handleEntityNotFound(_0x2c03e2,null))['then'](function(_0x160aa8){if(_0x160aa8){_0x8fa5cd=_0x160aa8;_0x5b0a48[_0x53ab('0x2e')]=_['keys'](db[_0x53ab('0x45')][_0x53ab('0x40')]);_0x5b0a48[_0x53ab('0x2f')]=_['keys'](_0x5922af['query']);_0x5b0a48[_0x53ab('0x37')]=_[_0x53ab('0x31')](_0x5b0a48[_0x53ab('0x2e')],_0x5b0a48[_0x53ab('0x2f')]);_0x2968d6[_0x53ab('0x33')]=_[_0x53ab('0x31')](_0x5b0a48[_0x53ab('0x2e')],qs[_0x53ab('0x32')](_0x5922af[_0x53ab('0x2f')][_0x53ab('0x32')]));_0x2968d6[_0x53ab('0x33')]=_0x2968d6[_0x53ab('0x33')][_0x53ab('0x34')]?_0x2968d6['attributes']:_0x5b0a48[_0x53ab('0x2e')];_0x2968d6['order']=qs['sort'](_0x5922af[_0x53ab('0x2f')]['sort']);_0x2968d6['where']=qs[_0x53ab('0x37')](_[_0x53ab('0x47')](_0x5922af[_0x53ab('0x2f')],_0x5b0a48[_0x53ab('0x37')]));if(_0x5922af[_0x53ab('0x2f')][_0x53ab('0x38')]){_0x2968d6[_0x53ab('0x39')]=_['merge'](_0x2968d6[_0x53ab('0x39')],{'$or':_[_0x53ab('0x2a')](_0x2968d6[_0x53ab('0x33')],function(_0x565c65){var _0x419b1a={};_0x419b1a[_0x565c65]={'$like':'%'+_0x5922af[_0x53ab('0x2f')][_0x53ab('0x38')]+'%'};return _0x419b1a;})});}_0x2968d6=_[_0x53ab('0x3a')]({},_0x2968d6,_0x5922af['options']);return _0x8fa5cd[_0x53ab('0x4a')](_0x2968d6);}})['then'](function(_0x4d2547){if(_0x4d2547){_0x2117cd=_0x4d2547['length'];if(!_0x5922af[_0x53ab('0x2f')][_0x53ab('0x35')]('nolimit')){_0x2968d6[_0x53ab('0x1b')]=qs[_0x53ab('0x1b')](_0x5922af[_0x53ab('0x2f')][_0x53ab('0x1b')]);_0x2968d6['offset']=qs[_0x53ab('0x1d')](_0x5922af[_0x53ab('0x2f')][_0x53ab('0x1d')]);}return _0x8fa5cd[_0x53ab('0x4a')](_0x2968d6);}})[_0x53ab('0x23')](function(_0x3d15ec){if(_0x3d15ec){return _0x3d15ec?{'count':_0x2117cd,'rows':_0x3d15ec}:null;}})[_0x53ab('0x23')](respondWithResult(_0x2c03e2,null))[_0x53ab('0x3e')](handleError(_0x2c03e2,null));};exports[_0x53ab('0x4b')]=function(_0x32e967,_0x1e5e88,_0x589f20){var _0x38c937={};var _0x5ac4e7={};var _0x5b5e0f;var _0x2d3e39;return db['SugarcrmConfiguration'][_0x53ab('0x49')]({'where':{'id':_0x32e967['params']['id']}})[_0x53ab('0x23')](handleEntityNotFound(_0x1e5e88,null))['then'](function(_0x233981){if(_0x233981){_0x5b5e0f=_0x233981;_0x5ac4e7[_0x53ab('0x2e')]=_[_0x53ab('0x30')](db['SugarcrmField'][_0x53ab('0x40')]);_0x5ac4e7['query']=_[_0x53ab('0x30')](_0x32e967[_0x53ab('0x2f')]);_0x5ac4e7[_0x53ab('0x37')]=_[_0x53ab('0x31')](_0x5ac4e7[_0x53ab('0x2e')],_0x5ac4e7['query']);_0x38c937['attributes']=_[_0x53ab('0x31')](_0x5ac4e7['model'],qs['fields'](_0x32e967[_0x53ab('0x2f')]['fields']));_0x38c937[_0x53ab('0x33')]=_0x38c937[_0x53ab('0x33')][_0x53ab('0x34')]?_0x38c937[_0x53ab('0x33')]:_0x5ac4e7[_0x53ab('0x2e')];_0x38c937[_0x53ab('0x46')]=qs[_0x53ab('0x36')](_0x32e967['query'][_0x53ab('0x36')]);_0x38c937[_0x53ab('0x39')]=qs[_0x53ab('0x37')](_[_0x53ab('0x47')](_0x32e967[_0x53ab('0x2f')],_0x5ac4e7[_0x53ab('0x37')]));if(_0x32e967[_0x53ab('0x2f')][_0x53ab('0x38')]){_0x38c937['where']=_[_0x53ab('0x3a')](_0x38c937[_0x53ab('0x39')],{'$or':_[_0x53ab('0x2a')](_0x38c937['attributes'],function(_0x3e2c6b){var _0x327ee9={};_0x327ee9[_0x3e2c6b]={'$like':'%'+_0x32e967[_0x53ab('0x2f')][_0x53ab('0x38')]+'%'};return _0x327ee9;})});}_0x38c937=_[_0x53ab('0x3a')]({},_0x38c937,_0x32e967[_0x53ab('0x3b')]);return _0x5b5e0f[_0x53ab('0x4b')](_0x38c937);}})[_0x53ab('0x23')](function(_0x31a646){if(_0x31a646){_0x2d3e39=_0x31a646['length'];if(!_0x32e967[_0x53ab('0x2f')][_0x53ab('0x35')](_0x53ab('0x48'))){_0x38c937[_0x53ab('0x1b')]=qs[_0x53ab('0x1b')](_0x32e967[_0x53ab('0x2f')][_0x53ab('0x1b')]);_0x38c937[_0x53ab('0x1d')]=qs[_0x53ab('0x1d')](_0x32e967[_0x53ab('0x2f')][_0x53ab('0x1d')]);}return _0x5b5e0f[_0x53ab('0x4b')](_0x38c937);}})[_0x53ab('0x23')](function(_0x3703f1){if(_0x3703f1){return _0x3703f1?{'count':_0x2d3e39,'rows':_0x3703f1}:null;}})[_0x53ab('0x23')](respondWithResult(_0x1e5e88,null))[_0x53ab('0x3e')](handleError(_0x1e5e88,null));};
\ No newline at end of file
index 5a9bf72..5b508d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa77e=['../../config/environment','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','lodash','api','moment'];(function(_0x131f7b,_0x1a7f6f){var _0x9af824=function(_0x3af748){while(--_0x3af748){_0x131f7b['push'](_0x131f7b['shift']());}};_0x9af824(++_0x1a7f6f);}(_0xa77e,0xeb));var _0xea77=function(_0x689ccd,_0x2462b9){_0x689ccd=_0x689ccd-0x0;var _0x378630=_0xa77e[_0x689ccd];return _0x378630;};'use strict';var _=require(_0xea77('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xea77('0x1'));var moment=require(_0xea77('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(_0xea77('0x3'));var attributes=require(_0xea77('0x4'));module[_0xea77('0x5')]=function(_0x479050,_0x21f158){return _0x479050['define'](_0xea77('0x6'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfeec=['request-promise','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','../../config/logger','moment'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0xfeec,0xd9));var _0xcfee=function(_0x1881a5,_0x5b790a){_0x1881a5=_0x1881a5-0x0;var _0xf0e9b9=_0xfeec[_0x1881a5];return _0xf0e9b9;};'use strict';var _=require(_0xcfee('0x0'));var util=require('util');var logger=require(_0xcfee('0x1'))('api');var moment=require(_0xcfee('0x2'));var BPromise=require('bluebird');var rp=require(_0xcfee('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcfee('0x4'));var config=require(_0xcfee('0x5'));var attributes=require(_0xcfee('0x6'));module['exports']=function(_0x4a0d53,_0x54d351){return _0x4a0d53[_0xcfee('0x7')](_0xcfee('0x8'),attributes,{'tableName':_0xcfee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1214484..b66ccf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bed=['request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','SugarcrmConfiguration,\x20%s,\x20%s'];(function(_0x49a57f,_0x405f38){var _0x2fa2a5=function(_0x359a98){while(--_0x359a98){_0x49a57f['push'](_0x49a57f['shift']());}};_0x2fa2a5(++_0x405f38);}(_0x2bed,0xb1));var _0xd2be=function(_0x2e7c05,_0x43a66e){_0x2e7c05=_0x2e7c05-0x0;var _0x3c2195=_0x2bed[_0x2e7c05];return _0x3c2195;};'use strict';var _=require(_0xd2be('0x0'));var util=require(_0xd2be('0x1'));var moment=require('moment');var BPromise=require(_0xd2be('0x2'));var rs=require(_0xd2be('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd2be('0x4'));var logger=require(_0xd2be('0x5'))(_0xd2be('0x6'));var config=require(_0xd2be('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd2be('0x8')][_0xd2be('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14734e,_0x8d9007,_0xc3ef2d){return new BPromise(function(_0x1ba062,_0x2870ef){return client['request'](_0x14734e,_0xc3ef2d)['then'](function(_0x50fcc6){logger[_0xd2be('0xa')](_0xd2be('0xb'),_0x8d9007,_0xd2be('0xc'));logger[_0xd2be('0xd')](_0xd2be('0xe'),_0x8d9007,_0xd2be('0xc'),JSON[_0xd2be('0xf')](_0x50fcc6));if(_0x50fcc6[_0xd2be('0x10')]){if(_0x50fcc6['error'][_0xd2be('0x11')]===0x1f4){logger[_0xd2be('0x10')](_0xd2be('0xb'),_0x8d9007,_0x50fcc6['error'][_0xd2be('0x12')]);return _0x2870ef(_0x50fcc6[_0xd2be('0x10')]['message']);}logger[_0xd2be('0x10')](_0xd2be('0xb'),_0x8d9007,_0x50fcc6[_0xd2be('0x10')]['message']);return _0x1ba062(_0x50fcc6['error'][_0xd2be('0x12')]);}else{logger[_0xd2be('0xa')](_0xd2be('0xb'),_0x8d9007,'request\x20sent');_0x1ba062(_0x50fcc6[_0xd2be('0x13')][_0xd2be('0x12')]);}})[_0xd2be('0x14')](function(_0x21742a){logger[_0xd2be('0x10')](_0xd2be('0xb'),_0x8d9007,_0x21742a);_0x2870ef(_0x21742a);});});}
\ No newline at end of file
+var _0xd47d=['../../config/utils','../../config/logger','../../config/environment','client','http','request','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0x8328fc,_0xbd96e8){var _0x542721=function(_0x3860b2){while(--_0x3860b2){_0x8328fc['push'](_0x8328fc['shift']());}};_0x542721(++_0xbd96e8);}(_0xd47d,0xe2));var _0xdd47=function(_0x376db5,_0x2b8874){_0x376db5=_0x376db5-0x0;var _0x304c17=_0xd47d[_0x376db5];return _0x304c17;};'use strict';var _=require(_0xdd47('0x0'));var util=require(_0xdd47('0x1'));var moment=require('moment');var BPromise=require(_0xdd47('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdd47('0x3'));var db=require(_0xdd47('0x4'))['db'];var utils=require(_0xdd47('0x5'));var logger=require(_0xdd47('0x6'))('rpc');var config=require(_0xdd47('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdd47('0x8')][_0xdd47('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ed442,_0xa7066f,_0x350fe8){return new BPromise(function(_0x3ba55c,_0x38c4d2){return client[_0xdd47('0xa')](_0x5ed442,_0x350fe8)['then'](function(_0x531198){logger['info'](_0xdd47('0xb'),_0xa7066f,'request\x20sent');logger[_0xdd47('0xc')](_0xdd47('0xd'),_0xa7066f,_0xdd47('0xe'),JSON[_0xdd47('0xf')](_0x531198));if(_0x531198[_0xdd47('0x10')]){if(_0x531198[_0xdd47('0x10')]['code']===0x1f4){logger[_0xdd47('0x10')](_0xdd47('0xb'),_0xa7066f,_0x531198[_0xdd47('0x10')][_0xdd47('0x11')]);return _0x38c4d2(_0x531198[_0xdd47('0x10')]['message']);}logger['error'](_0xdd47('0xb'),_0xa7066f,_0x531198[_0xdd47('0x10')][_0xdd47('0x11')]);return _0x3ba55c(_0x531198[_0xdd47('0x10')][_0xdd47('0x11')]);}else{logger[_0xdd47('0x12')](_0xdd47('0xb'),_0xa7066f,_0xdd47('0xe'));_0x3ba55c(_0x531198[_0xdd47('0x13')][_0xdd47('0x11')]);}})[_0xdd47('0x14')](function(_0xae481d){logger[_0xdd47('0x10')](_0xdd47('0xb'),_0xa7066f,_0xae481d);_0x38c4d2(_0xae481d);});});}
\ No newline at end of file
index dc24c73..c2ad253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb131=['update','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','put'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xb131,0xf1));var _0x1b13=function(_0x3b2be5,_0x9c01ae){_0x3b2be5=_0x3b2be5-0x0;var _0x14cd8=_0xb131[_0x3b2be5];return _0x14cd8;};'use strict';var multer=require(_0x1b13('0x0'));var util=require('util');var path=require(_0x1b13('0x1'));var timeout=require(_0x1b13('0x2'));var express=require('express');var router=express[_0x1b13('0x3')]();var fs_extra=require(_0x1b13('0x4'));var auth=require(_0x1b13('0x5'));var interaction=require(_0x1b13('0x6'));var config=require(_0x1b13('0x7'));var controller=require(_0x1b13('0x8'));router[_0x1b13('0x9')]('/',auth[_0x1b13('0xa')](),controller['index']);router[_0x1b13('0x9')](_0x1b13('0xb'),auth[_0x1b13('0xa')](),controller[_0x1b13('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x1b13('0xd')](_0x1b13('0xb'),auth['isAuthenticated'](),controller[_0x1b13('0xe')]);router[_0x1b13('0xf')](_0x1b13('0xb'),auth[_0x1b13('0xa')](),controller[_0x1b13('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x2e2f=['path','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','isAuthenticated','create','/:id','delete','destroy','exports','multer','util'];(function(_0x1e235e,_0x994b77){var _0x1e8e94=function(_0x4a9e2c){while(--_0x4a9e2c){_0x1e235e['push'](_0x1e235e['shift']());}};_0x1e8e94(++_0x994b77);}(_0x2e2f,0x14e));var _0xf2e2=function(_0x18e1a1,_0x5426d6){_0x18e1a1=_0x18e1a1-0x0;var _0x3613d0=_0x2e2f[_0x18e1a1];return _0x3613d0;};'use strict';var multer=require(_0xf2e2('0x0'));var util=require(_0xf2e2('0x1'));var path=require(_0xf2e2('0x2'));var timeout=require('connect-timeout');var express=require(_0xf2e2('0x3'));var router=express[_0xf2e2('0x4')]();var fs_extra=require(_0xf2e2('0x5'));var auth=require(_0xf2e2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf2e2('0x7'));var controller=require('./intSugarcrmField.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xf2e2('0x8')]);router[_0xf2e2('0x9')]('/:id',auth[_0xf2e2('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xf2e2('0xb')]);router['put'](_0xf2e2('0xc'),auth[_0xf2e2('0xa')](),controller['update']);router[_0xf2e2('0xd')]('/:id',auth[_0xf2e2('0xa')](),controller[_0xf2e2('0xe')]);module[_0xf2e2('0xf')]=router;
\ No newline at end of file
index 8647b7e..476828b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31fc=['picklist','string','STRING','sequelize','ENUM','variable','keyValue'];(function(_0x3af55b,_0x2bcd1d){var _0x1a5122=function(_0x31c113){while(--_0x31c113){_0x3af55b['push'](_0x3af55b['shift']());}};_0x1a5122(++_0x2bcd1d);}(_0x31fc,0x18b));var _0xc31f=function(_0x36684c,_0xbab67){_0x36684c=_0x36684c-0x0;var _0x51ab53=_0x31fc[_0x36684c];return _0x51ab53;};'use strict';var Sequelize=require(_0xc31f('0x0'));module['exports']={'type':{'type':Sequelize[_0xc31f('0x1')]('string',_0xc31f('0x2'),'customVariable',_0xc31f('0x3'),_0xc31f('0x4')),'defaultValue':_0xc31f('0x5')},'content':{'type':Sequelize[_0xc31f('0x6')]},'key':{'type':Sequelize[_0xc31f('0x6')]},'keyType':{'type':Sequelize[_0xc31f('0x1')]('string',_0xc31f('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xc31f('0x6')]},'idField':{'type':Sequelize[_0xc31f('0x6')]},'nameField':{'type':Sequelize[_0xc31f('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc31f('0x6')]}};
\ No newline at end of file
+var _0x451f=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize'];(function(_0x574de7,_0x24ce60){var _0x568f46=function(_0x516004){while(--_0x516004){_0x574de7['push'](_0x574de7['shift']());}};_0x568f46(++_0x24ce60);}(_0x451f,0x143));var _0xf451=function(_0x4d9c87,_0x50af67){_0x4d9c87=_0x4d9c87-0x0;var _0x5ca7b5=_0x451f[_0x4d9c87];return _0x5ca7b5;};'use strict';var Sequelize=require(_0xf451('0x0'));module[_0xf451('0x1')]={'type':{'type':Sequelize[_0xf451('0x2')](_0xf451('0x3'),_0xf451('0x4'),_0xf451('0x5'),_0xf451('0x6'),_0xf451('0x7')),'defaultValue':_0xf451('0x3')},'content':{'type':Sequelize[_0xf451('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xf451('0x2')](_0xf451('0x3'),_0xf451('0x4'),_0xf451('0x5'))},'keyContent':{'type':Sequelize[_0xf451('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf451('0x8')]}};
\ No newline at end of file
index 68a1a04..5211b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b7=['../../mysqldb','sendStatus','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','then','end','error','name','send','index','map','SugarcrmField','fieldName','key','model','query','intersection','fields','attributes','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','findAll','rows','catch','show','params','keys','rawAttributes','length','includeAll','find','body','update','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','fs-extra','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x15b7,0x190));var _0x715b=function(_0x449daf,_0x18c7d9){_0x449daf=_0x449daf-0x0;var _0x2d4879=_0x15b7[_0x449daf];return _0x2d4879;};'use strict';var emlformat=require(_0x715b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x715b('0x1'));var jsonpatch=require(_0x715b('0x2'));var rp=require('request-promise');var moment=require(_0x715b('0x3'));var BPromise=require(_0x715b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x715b('0x5'));var sox=require(_0x715b('0x6'));var csv=require(_0x715b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x715b('0x8'));var _=require('lodash');var squel=require(_0x715b('0x9'));var crypto=require(_0x715b('0xa'));var jsforce=require(_0x715b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x715b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x715b('0xc'));var qs=require(_0x715b('0xd'));var as=require(_0x715b('0xe'));var hardwareService=require(_0x715b('0xf'));var logger=require(_0x715b('0x10'))(_0x715b('0x11'));var utils=require('../../config/utils');var config=require(_0x715b('0x12'));var licenseUtil=require(_0x715b('0x13'));var db=require(_0x715b('0x14'))['db'];function respondWithStatusCode(_0x18e64f,_0x32b9c2){_0x32b9c2=_0x32b9c2||0xcc;return function(_0x2f87c0){if(_0x2f87c0){return _0x18e64f[_0x715b('0x15')](_0x32b9c2);}return _0x18e64f['status'](_0x32b9c2)['end']();};}function respondWithResult(_0x13a750,_0xa393d9){_0xa393d9=_0xa393d9||0xc8;return function(_0x52b508){if(_0x52b508){return _0x13a750['status'](_0xa393d9)['json'](_0x52b508);}};}function respondWithFilteredResult(_0x22b372,_0x1ce8b3){return function(_0x3cf75b){if(_0x3cf75b){var _0x25f124=typeof _0x1ce8b3[_0x715b('0x16')]===_0x715b('0x17')&&typeof _0x1ce8b3[_0x715b('0x18')]===_0x715b('0x17');var _0x323e48=_0x3cf75b[_0x715b('0x19')];var _0x112a17=_0x25f124?0x0:_0x1ce8b3[_0x715b('0x16')];var _0x2f97b1=_0x25f124?_0x3cf75b['count']:_0x1ce8b3[_0x715b('0x16')]+_0x1ce8b3[_0x715b('0x18')];var _0x127311;if(_0x2f97b1>=_0x323e48){_0x2f97b1=_0x323e48;_0x127311=0xc8;}else{_0x127311=0xce;}_0x22b372[_0x715b('0x1a')](_0x127311);return _0x22b372[_0x715b('0x1b')](_0x715b('0x1c'),_0x112a17+'-'+_0x2f97b1+'/'+_0x323e48)[_0x715b('0x1d')](_0x3cf75b);}return null;};}function patchUpdates(_0x2394a2){return function(_0x2192eb){try{jsonpatch[_0x715b('0x1e')](_0x2192eb,_0x2394a2,!![]);}catch(_0x1899ef){return BPromise[_0x715b('0x1f')](_0x1899ef);}return _0x2192eb[_0x715b('0x20')]();};}function saveUpdates(_0x1d1c41,_0x34163e){return function(_0x159a80){if(_0x159a80){return _0x159a80['update'](_0x1d1c41)[_0x715b('0x21')](function(_0xd0ec8c){return _0xd0ec8c;});}return null;};}function removeEntity(_0x10245f,_0x3c6b0b){return function(_0x2a12ab){if(_0x2a12ab){return _0x2a12ab['destroy']()[_0x715b('0x21')](function(){_0x10245f[_0x715b('0x1a')](0xcc)[_0x715b('0x22')]();});}};}function handleEntityNotFound(_0x273466,_0xd90c5f){return function(_0x2b76b1){if(!_0x2b76b1){_0x273466[_0x715b('0x15')](0x194);}return _0x2b76b1;};}function handleError(_0x403e8b,_0x57bdb8){_0x57bdb8=_0x57bdb8||0x1f4;return function(_0x234948){logger[_0x715b('0x23')](_0x234948['stack']);if(_0x234948['name']){delete _0x234948[_0x715b('0x24')];}_0x403e8b[_0x715b('0x1a')](_0x57bdb8)[_0x715b('0x25')](_0x234948);};}exports[_0x715b('0x26')]=function(_0x12e297,_0x34b845){var _0x333cab={},_0x51476f={},_0x59d3e2={'count':0x0,'rows':[]};var _0xe5ad=_[_0x715b('0x27')](db[_0x715b('0x28')]['rawAttributes'],function(_0x54f677){return{'name':_0x54f677[_0x715b('0x29')],'type':_0x54f677['type'][_0x715b('0x2a')]};});_0x51476f[_0x715b('0x2b')]=_[_0x715b('0x27')](_0xe5ad,'name');_0x51476f[_0x715b('0x2c')]=_['keys'](_0x12e297[_0x715b('0x2c')]);_0x51476f['filters']=_[_0x715b('0x2d')](_0x51476f[_0x715b('0x2b')],_0x51476f['query']);_0x333cab['attributes']=_[_0x715b('0x2d')](_0x51476f[_0x715b('0x2b')],qs['fields'](_0x12e297[_0x715b('0x2c')][_0x715b('0x2e')]));_0x333cab['attributes']=_0x333cab[_0x715b('0x2f')]['length']?_0x333cab[_0x715b('0x2f')]:_0x51476f[_0x715b('0x2b')];if(!_0x12e297[_0x715b('0x2c')]['hasOwnProperty']('nolimit')){_0x333cab['limit']=qs[_0x715b('0x18')](_0x12e297[_0x715b('0x2c')][_0x715b('0x18')]);_0x333cab['offset']=qs[_0x715b('0x16')](_0x12e297[_0x715b('0x2c')][_0x715b('0x16')]);}_0x333cab[_0x715b('0x30')]=qs['sort'](_0x12e297['query'][_0x715b('0x31')]);_0x333cab[_0x715b('0x32')]=qs[_0x715b('0x33')](_[_0x715b('0x34')](_0x12e297['query'],_0x51476f[_0x715b('0x33')]),_0xe5ad);if(_0x12e297[_0x715b('0x2c')][_0x715b('0x35')]){_0x333cab[_0x715b('0x32')]=_[_0x715b('0x36')](_0x333cab[_0x715b('0x32')],{'$or':_[_0x715b('0x27')](_0xe5ad,function(_0x47f78e){if(_0x47f78e[_0x715b('0x37')]!==_0x715b('0x38')){var _0x1a2ca6={};_0x1a2ca6[_0x47f78e[_0x715b('0x24')]]={'$like':'%'+_0x12e297[_0x715b('0x2c')]['filter']+'%'};return _0x1a2ca6;}})});}_0x333cab=_[_0x715b('0x36')]({},_0x333cab,_0x12e297[_0x715b('0x39')]);var _0x17b027={'where':_0x333cab['where']};return db[_0x715b('0x28')]['count'](_0x17b027)[_0x715b('0x21')](function(_0x43202e){_0x59d3e2[_0x715b('0x19')]=_0x43202e;if(_0x12e297['query']['includeAll']){_0x333cab['include']=[{'all':!![]}];}return db[_0x715b('0x28')][_0x715b('0x3a')](_0x333cab);})[_0x715b('0x21')](function(_0x32593d){_0x59d3e2[_0x715b('0x3b')]=_0x32593d;return _0x59d3e2;})[_0x715b('0x21')](respondWithFilteredResult(_0x34b845,_0x333cab))[_0x715b('0x3c')](handleError(_0x34b845,null));};exports[_0x715b('0x3d')]=function(_0xb47579,_0x120e8b){var _0xb0cbd8={'raw':!![],'where':{'id':_0xb47579[_0x715b('0x3e')]['id']}},_0x5cfa9c={};_0x5cfa9c[_0x715b('0x2b')]=_[_0x715b('0x3f')](db[_0x715b('0x28')][_0x715b('0x40')]);_0x5cfa9c['query']=_['keys'](_0xb47579['query']);_0x5cfa9c[_0x715b('0x33')]=_['intersection'](_0x5cfa9c[_0x715b('0x2b')],_0x5cfa9c[_0x715b('0x2c')]);_0xb0cbd8[_0x715b('0x2f')]=_[_0x715b('0x2d')](_0x5cfa9c[_0x715b('0x2b')],qs[_0x715b('0x2e')](_0xb47579[_0x715b('0x2c')][_0x715b('0x2e')]));_0xb0cbd8[_0x715b('0x2f')]=_0xb0cbd8['attributes'][_0x715b('0x41')]?_0xb0cbd8['attributes']:_0x5cfa9c['model'];if(_0xb47579['query'][_0x715b('0x42')]){_0xb0cbd8['include']=[{'all':!![]}];}_0xb0cbd8=_[_0x715b('0x36')]({},_0xb0cbd8,_0xb47579['options']);return db[_0x715b('0x28')][_0x715b('0x43')](_0xb0cbd8)[_0x715b('0x21')](handleEntityNotFound(_0x120e8b,null))['then'](respondWithResult(_0x120e8b,null))['catch'](handleError(_0x120e8b,null));};exports['create']=function(_0x3b892f,_0x3fd4b5){return db[_0x715b('0x28')]['create'](_0x3b892f[_0x715b('0x44')],{})[_0x715b('0x21')](respondWithResult(_0x3fd4b5,0xc9))[_0x715b('0x3c')](handleError(_0x3fd4b5,null));};exports[_0x715b('0x45')]=function(_0x2af513,_0x187faf){if(_0x2af513[_0x715b('0x44')]['id']){delete _0x2af513[_0x715b('0x44')]['id'];}return db[_0x715b('0x28')][_0x715b('0x43')]({'where':{'id':_0x2af513[_0x715b('0x3e')]['id']}})[_0x715b('0x21')](handleEntityNotFound(_0x187faf,null))[_0x715b('0x21')](saveUpdates(_0x2af513[_0x715b('0x44')],null))[_0x715b('0x21')](respondWithResult(_0x187faf,null))[_0x715b('0x3c')](handleError(_0x187faf,null));};exports['destroy']=function(_0x38c698,_0x3d6950){return db[_0x715b('0x28')][_0x715b('0x43')]({'where':{'id':_0x38c698[_0x715b('0x3e')]['id']}})[_0x715b('0x21')](handleEntityNotFound(_0x3d6950,null))['then'](removeEntity(_0x3d6950,null))[_0x715b('0x3c')](handleError(_0x3d6950,null));};
\ No newline at end of file
+var _0x1e34=['key','map','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','findAll','rows','catch','show','params','length','includeAll','include','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','stack','name','send','index','SugarcrmField','rawAttributes','fieldName','type'];(function(_0x5bb84c,_0x23eb32){var _0x4df744=function(_0x309583){while(--_0x309583){_0x5bb84c['push'](_0x5bb84c['shift']());}};_0x4df744(++_0x23eb32);}(_0x1e34,0xb1));var _0x41e3=function(_0x1d0b2c,_0x20d6e5){_0x1d0b2c=_0x1d0b2c-0x0;var _0xbc31ef=_0x1e34[_0x1d0b2c];return _0xbc31ef;};'use strict';var emlformat=require(_0x41e3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x41e3('0x1'));var jsonpatch=require(_0x41e3('0x2'));var rp=require(_0x41e3('0x3'));var moment=require(_0x41e3('0x4'));var BPromise=require(_0x41e3('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x41e3('0x6'));var sox=require(_0x41e3('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x41e3('0x8'));var _=require('lodash');var squel=require(_0x41e3('0x9'));var crypto=require(_0x41e3('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x41e3('0xb'));var toCsv=require(_0x41e3('0xc'));var querystring=require(_0x41e3('0xd'));var Papa=require(_0x41e3('0xe'));var Redis=require('ioredis');var authService=require(_0x41e3('0xf'));var qs=require(_0x41e3('0x10'));var as=require(_0x41e3('0x11'));var hardwareService=require(_0x41e3('0x12'));var logger=require(_0x41e3('0x13'))(_0x41e3('0x14'));var utils=require('../../config/utils');var config=require(_0x41e3('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x41e3('0x16'))['db'];function respondWithStatusCode(_0x548037,_0x2b2f7b){_0x2b2f7b=_0x2b2f7b||0xcc;return function(_0x352b67){if(_0x352b67){return _0x548037[_0x41e3('0x17')](_0x2b2f7b);}return _0x548037[_0x41e3('0x18')](_0x2b2f7b)[_0x41e3('0x19')]();};}function respondWithResult(_0x155cc2,_0xe15330){_0xe15330=_0xe15330||0xc8;return function(_0x3a604e){if(_0x3a604e){return _0x155cc2[_0x41e3('0x18')](_0xe15330)[_0x41e3('0x1a')](_0x3a604e);}};}function respondWithFilteredResult(_0x4bf914,_0x509fff){return function(_0x1cd76f){if(_0x1cd76f){var _0x465358=typeof _0x509fff[_0x41e3('0x1b')]===_0x41e3('0x1c')&&typeof _0x509fff[_0x41e3('0x1d')]===_0x41e3('0x1c');var _0x3ed2ae=_0x1cd76f[_0x41e3('0x1e')];var _0x2c2fd6=_0x465358?0x0:_0x509fff[_0x41e3('0x1b')];var _0x56d1ec=_0x465358?_0x1cd76f[_0x41e3('0x1e')]:_0x509fff['offset']+_0x509fff[_0x41e3('0x1d')];var _0x11ff77;if(_0x56d1ec>=_0x3ed2ae){_0x56d1ec=_0x3ed2ae;_0x11ff77=0xc8;}else{_0x11ff77=0xce;}_0x4bf914[_0x41e3('0x18')](_0x11ff77);return _0x4bf914[_0x41e3('0x1f')](_0x41e3('0x20'),_0x2c2fd6+'-'+_0x56d1ec+'/'+_0x3ed2ae)[_0x41e3('0x1a')](_0x1cd76f);}return null;};}function patchUpdates(_0x425d54){return function(_0x3779d3){try{jsonpatch['apply'](_0x3779d3,_0x425d54,!![]);}catch(_0x37d437){return BPromise[_0x41e3('0x21')](_0x37d437);}return _0x3779d3[_0x41e3('0x22')]();};}function saveUpdates(_0x3f6ca7,_0x3ecb13){return function(_0x298c15){if(_0x298c15){return _0x298c15['update'](_0x3f6ca7)['then'](function(_0xf48a80){return _0xf48a80;});}return null;};}function removeEntity(_0x4e2642,_0x323971){return function(_0x46e694){if(_0x46e694){return _0x46e694[_0x41e3('0x23')]()[_0x41e3('0x24')](function(){_0x4e2642[_0x41e3('0x18')](0xcc)[_0x41e3('0x19')]();});}};}function handleEntityNotFound(_0x1d7939,_0x2dbd0a){return function(_0x31da1e){if(!_0x31da1e){_0x1d7939[_0x41e3('0x17')](0x194);}return _0x31da1e;};}function handleError(_0x35fa19,_0x110a95){_0x110a95=_0x110a95||0x1f4;return function(_0x5171ff){logger['error'](_0x5171ff[_0x41e3('0x25')]);if(_0x5171ff['name']){delete _0x5171ff[_0x41e3('0x26')];}_0x35fa19['status'](_0x110a95)[_0x41e3('0x27')](_0x5171ff);};}exports[_0x41e3('0x28')]=function(_0x359b41,_0x251756){var _0x126cc6={},_0x229206={},_0x51e85b={'count':0x0,'rows':[]};var _0x2ba57c=_['map'](db[_0x41e3('0x29')][_0x41e3('0x2a')],function(_0x36d989){return{'name':_0x36d989[_0x41e3('0x2b')],'type':_0x36d989[_0x41e3('0x2c')][_0x41e3('0x2d')]};});_0x229206['model']=_[_0x41e3('0x2e')](_0x2ba57c,'name');_0x229206[_0x41e3('0x2f')]=_[_0x41e3('0x30')](_0x359b41[_0x41e3('0x2f')]);_0x229206['filters']=_['intersection'](_0x229206[_0x41e3('0x31')],_0x229206[_0x41e3('0x2f')]);_0x126cc6[_0x41e3('0x32')]=_[_0x41e3('0x33')](_0x229206['model'],qs[_0x41e3('0x34')](_0x359b41[_0x41e3('0x2f')][_0x41e3('0x34')]));_0x126cc6[_0x41e3('0x32')]=_0x126cc6[_0x41e3('0x32')]['length']?_0x126cc6[_0x41e3('0x32')]:_0x229206[_0x41e3('0x31')];if(!_0x359b41[_0x41e3('0x2f')][_0x41e3('0x35')](_0x41e3('0x36'))){_0x126cc6['limit']=qs[_0x41e3('0x1d')](_0x359b41[_0x41e3('0x2f')]['limit']);_0x126cc6[_0x41e3('0x1b')]=qs[_0x41e3('0x1b')](_0x359b41[_0x41e3('0x2f')][_0x41e3('0x1b')]);}_0x126cc6[_0x41e3('0x37')]=qs[_0x41e3('0x38')](_0x359b41[_0x41e3('0x2f')][_0x41e3('0x38')]);_0x126cc6['where']=qs[_0x41e3('0x39')](_[_0x41e3('0x3a')](_0x359b41[_0x41e3('0x2f')],_0x229206[_0x41e3('0x39')]),_0x2ba57c);if(_0x359b41[_0x41e3('0x2f')][_0x41e3('0x3b')]){_0x126cc6[_0x41e3('0x3c')]=_[_0x41e3('0x3d')](_0x126cc6['where'],{'$or':_[_0x41e3('0x2e')](_0x2ba57c,function(_0x57f00a){if(_0x57f00a[_0x41e3('0x2c')]!==_0x41e3('0x3e')){var _0xf62beb={};_0xf62beb[_0x57f00a[_0x41e3('0x26')]]={'$like':'%'+_0x359b41[_0x41e3('0x2f')][_0x41e3('0x3b')]+'%'};return _0xf62beb;}})});}_0x126cc6=_[_0x41e3('0x3d')]({},_0x126cc6,_0x359b41['options']);var _0x122f00={'where':_0x126cc6[_0x41e3('0x3c')]};return db['SugarcrmField']['count'](_0x122f00)['then'](function(_0x4ae174){_0x51e85b[_0x41e3('0x1e')]=_0x4ae174;if(_0x359b41[_0x41e3('0x2f')]['includeAll']){_0x126cc6['include']=[{'all':!![]}];}return db[_0x41e3('0x29')][_0x41e3('0x3f')](_0x126cc6);})['then'](function(_0x1b7e3b){_0x51e85b[_0x41e3('0x40')]=_0x1b7e3b;return _0x51e85b;})[_0x41e3('0x24')](respondWithFilteredResult(_0x251756,_0x126cc6))[_0x41e3('0x41')](handleError(_0x251756,null));};exports[_0x41e3('0x42')]=function(_0x7de5c,_0xb8411e){var _0x42ee3e={'raw':!![],'where':{'id':_0x7de5c[_0x41e3('0x43')]['id']}},_0x175e0a={};_0x175e0a['model']=_['keys'](db[_0x41e3('0x29')][_0x41e3('0x2a')]);_0x175e0a['query']=_[_0x41e3('0x30')](_0x7de5c['query']);_0x175e0a[_0x41e3('0x39')]=_[_0x41e3('0x33')](_0x175e0a[_0x41e3('0x31')],_0x175e0a[_0x41e3('0x2f')]);_0x42ee3e[_0x41e3('0x32')]=_[_0x41e3('0x33')](_0x175e0a['model'],qs[_0x41e3('0x34')](_0x7de5c[_0x41e3('0x2f')]['fields']));_0x42ee3e[_0x41e3('0x32')]=_0x42ee3e[_0x41e3('0x32')][_0x41e3('0x44')]?_0x42ee3e['attributes']:_0x175e0a[_0x41e3('0x31')];if(_0x7de5c['query'][_0x41e3('0x45')]){_0x42ee3e[_0x41e3('0x46')]=[{'all':!![]}];}_0x42ee3e=_[_0x41e3('0x3d')]({},_0x42ee3e,_0x7de5c['options']);return db['SugarcrmField']['find'](_0x42ee3e)[_0x41e3('0x24')](handleEntityNotFound(_0xb8411e,null))[_0x41e3('0x24')](respondWithResult(_0xb8411e,null))[_0x41e3('0x41')](handleError(_0xb8411e,null));};exports['create']=function(_0xdf2ac7,_0xb7786f){return db[_0x41e3('0x29')][_0x41e3('0x47')](_0xdf2ac7[_0x41e3('0x48')],{})['then'](respondWithResult(_0xb7786f,0xc9))[_0x41e3('0x41')](handleError(_0xb7786f,null));};exports['update']=function(_0x55f4cb,_0x336985){if(_0x55f4cb[_0x41e3('0x48')]['id']){delete _0x55f4cb[_0x41e3('0x48')]['id'];}return db[_0x41e3('0x29')][_0x41e3('0x49')]({'where':{'id':_0x55f4cb[_0x41e3('0x43')]['id']}})[_0x41e3('0x24')](handleEntityNotFound(_0x336985,null))[_0x41e3('0x24')](saveUpdates(_0x55f4cb[_0x41e3('0x48')],null))[_0x41e3('0x24')](respondWithResult(_0x336985,null))[_0x41e3('0x41')](handleError(_0x336985,null));};exports[_0x41e3('0x23')]=function(_0x559fb3,_0x17a051){return db[_0x41e3('0x29')][_0x41e3('0x49')]({'where':{'id':_0x559fb3[_0x41e3('0x43')]['id']}})[_0x41e3('0x24')](handleEntityNotFound(_0x17a051,null))[_0x41e3('0x24')](removeEntity(_0x17a051,null))[_0x41e3('0x41')](handleError(_0x17a051,null));};
\ No newline at end of file
index cfeb070..961acc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x850a=['lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','int_sugarcrm_fields','sugarcrm_unique_index'];(function(_0x448313,_0x2b5e0f){var _0x3740be=function(_0x130a0d){while(--_0x130a0d){_0x448313['push'](_0x448313['shift']());}};_0x3740be(++_0x2b5e0f);}(_0x850a,0x1ec));var _0xa850=function(_0x57a53b,_0x11494e){_0x57a53b=_0x57a53b-0x0;var _0x29e81c=_0x850a[_0x57a53b];return _0x29e81c;};'use strict';var _=require(_0xa850('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa850('0x1'));var moment=require(_0xa850('0x2'));var BPromise=require(_0xa850('0x3'));var rp=require(_0xa850('0x4'));var fs=require('fs');var path=require(_0xa850('0x5'));var rimraf=require(_0xa850('0x6'));var config=require(_0xa850('0x7'));var attributes=require(_0xa850('0x8'));module[_0xa850('0x9')]=function(_0x31208,_0xe080fa){return _0x31208['define']('SugarcrmField',attributes,{'tableName':_0xa850('0xa'),'paranoid':![],'indexes':[{'name':_0xa850('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f01=['../../config/environment','./intSugarcrmField.attributes','exports','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','util','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x5f01,0x173));var _0x15f0=function(_0xb90084,_0x553d2f){_0xb90084=_0xb90084-0x0;var _0x476d1f=_0x5f01[_0xb90084];return _0x476d1f;};'use strict';var _=require('lodash');var util=require(_0x15f0('0x0'));var logger=require(_0x15f0('0x1'))('api');var moment=require(_0x15f0('0x2'));var BPromise=require(_0x15f0('0x3'));var rp=require(_0x15f0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x15f0('0x5'));var config=require(_0x15f0('0x6'));var attributes=require(_0x15f0('0x7'));module[_0x15f0('0x8')]=function(_0x36fa2b,_0x43e898){return _0x36fa2b['define']('SugarcrmField',attributes,{'tableName':_0x15f0('0x9'),'paranoid':![],'indexes':[{'name':_0x15f0('0xa'),'fields':[_0x15f0('0xb'),_0x15f0('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index aeb2177..b9f9dbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3fc=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xd3fc,0x1cf));var _0xcd3f=function(_0x116fd1,_0x23c0c3){_0x116fd1=_0x116fd1-0x0;var _0x2a9589=_0xd3fc[_0x116fd1];return _0x2a9589;};'use strict';var _=require(_0xcd3f('0x0'));var util=require(_0xcd3f('0x1'));var moment=require(_0xcd3f('0x2'));var BPromise=require(_0xcd3f('0x3'));var rs=require(_0xcd3f('0x4'));var fs=require('fs');var Redis=require(_0xcd3f('0x5'));var db=require(_0xcd3f('0x6'))['db'];var utils=require(_0xcd3f('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xcd3f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xcd3f('0x9')][_0xcd3f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b137e,_0xea4cd1,_0xa9e08b){return new BPromise(function(_0x24dfdc,_0x72dbad){return client['request'](_0x5b137e,_0xa9e08b)[_0xcd3f('0xb')](function(_0xe8ee86){logger['info'](_0xcd3f('0xc'),_0xea4cd1,_0xcd3f('0xd'));logger['debug'](_0xcd3f('0xe'),_0xea4cd1,'request\x20sent',JSON[_0xcd3f('0xf')](_0xe8ee86));if(_0xe8ee86[_0xcd3f('0x10')]){if(_0xe8ee86[_0xcd3f('0x10')][_0xcd3f('0x11')]===0x1f4){logger[_0xcd3f('0x10')](_0xcd3f('0xc'),_0xea4cd1,_0xe8ee86['error'][_0xcd3f('0x12')]);return _0x72dbad(_0xe8ee86['error'][_0xcd3f('0x12')]);}logger[_0xcd3f('0x10')](_0xcd3f('0xc'),_0xea4cd1,_0xe8ee86['error']['message']);return _0x24dfdc(_0xe8ee86['error'][_0xcd3f('0x12')]);}else{logger[_0xcd3f('0x13')]('SugarcrmField,\x20%s,\x20%s',_0xea4cd1,_0xcd3f('0xd'));_0x24dfdc(_0xe8ee86[_0xcd3f('0x14')][_0xcd3f('0x12')]);}})[_0xcd3f('0x15')](function(_0x25934e){logger[_0xcd3f('0x10')]('SugarcrmField,\x20%s,\x20%s',_0xea4cd1,_0x25934e);_0x72dbad(_0x25934e);});});}
\ No newline at end of file
+var _0xa1ea=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','SugarcrmField,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird'];(function(_0xf72469,_0x2d3ebf){var _0x2b6171=function(_0x54bf97){while(--_0x54bf97){_0xf72469['push'](_0xf72469['shift']());}};_0x2b6171(++_0x2d3ebf);}(_0xa1ea,0xe3));var _0xaa1e=function(_0x1f5530,_0x5d51ea){_0x1f5530=_0x1f5530-0x0;var _0x45a722=_0xa1ea[_0x1f5530];return _0x45a722;};'use strict';var _=require(_0xaa1e('0x0'));var util=require(_0xaa1e('0x1'));var moment=require(_0xaa1e('0x2'));var BPromise=require(_0xaa1e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa1e('0x4'))['db'];var utils=require(_0xaa1e('0x5'));var logger=require(_0xaa1e('0x6'))(_0xaa1e('0x7'));var config=require(_0xaa1e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaa1e('0x9')][_0xaa1e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30a98a,_0x446a07,_0x2e0a04){return new BPromise(function(_0x40ae56,_0x53528a){return client[_0xaa1e('0xb')](_0x30a98a,_0x2e0a04)['then'](function(_0x3ab8e4){logger[_0xaa1e('0xc')]('SugarcrmField,\x20%s,\x20%s',_0x446a07,_0xaa1e('0xd'));logger[_0xaa1e('0xe')](_0xaa1e('0xf'),_0x446a07,_0xaa1e('0xd'),JSON[_0xaa1e('0x10')](_0x3ab8e4));if(_0x3ab8e4[_0xaa1e('0x11')]){if(_0x3ab8e4[_0xaa1e('0x11')]['code']===0x1f4){logger[_0xaa1e('0x11')](_0xaa1e('0x12'),_0x446a07,_0x3ab8e4['error'][_0xaa1e('0x13')]);return _0x53528a(_0x3ab8e4['error'][_0xaa1e('0x13')]);}logger['error'](_0xaa1e('0x12'),_0x446a07,_0x3ab8e4[_0xaa1e('0x11')][_0xaa1e('0x13')]);return _0x40ae56(_0x3ab8e4[_0xaa1e('0x11')][_0xaa1e('0x13')]);}else{logger['info'](_0xaa1e('0x12'),_0x446a07,_0xaa1e('0xd'));_0x40ae56(_0x3ab8e4[_0xaa1e('0x14')][_0xaa1e('0x13')]);}})['catch'](function(_0x56f88d){logger[_0xaa1e('0x11')](_0xaa1e('0x12'),_0x446a07,_0x56f88d);_0x53528a(_0x56f88d);});});}
\ No newline at end of file
index 5a4f9c6..679fb90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf128=['../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x5376d9,_0x9f3907){var _0x1c6c40=function(_0x4966e6){while(--_0x4966e6){_0x5376d9['push'](_0x5376d9['shift']());}};_0x1c6c40(++_0x9f3907);}(_0xf128,0x109));var _0x8f12=function(_0x280bef,_0x5e1bd3){_0x280bef=_0x280bef-0x0;var _0x56dc85=_0xf128[_0x280bef];return _0x56dc85;};'use strict';var multer=require(_0x8f12('0x0'));var util=require(_0x8f12('0x1'));var path=require(_0x8f12('0x2'));var timeout=require(_0x8f12('0x3'));var express=require(_0x8f12('0x4'));var router=express[_0x8f12('0x5')]();var fs_extra=require(_0x8f12('0x6'));var auth=require(_0x8f12('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8f12('0x8'));var controller=require(_0x8f12('0x9'));router[_0x8f12('0xa')]('/',auth[_0x8f12('0xb')](),controller['index']);router[_0x8f12('0xa')](_0x8f12('0xc'),auth[_0x8f12('0xb')](),controller['show']);router[_0x8f12('0xa')](_0x8f12('0xd'),auth[_0x8f12('0xb')](),controller[_0x8f12('0xe')]);router['get'](_0x8f12('0xf'),auth['isAuthenticated'](),controller['getFields']);router[_0x8f12('0x10')]('/',auth[_0x8f12('0xb')](),controller['create']);router[_0x8f12('0x10')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x8f12('0x11')]);router['put'](_0x8f12('0xc'),auth[_0x8f12('0xb')](),controller[_0x8f12('0x12')]);router[_0x8f12('0x13')](_0x8f12('0xc'),auth[_0x8f12('0xb')](),controller[_0x8f12('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xe644=['../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','getConfigurations','/:id/fields','getFields','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x2ae54e,_0x2db639){var _0x24031e=function(_0x2ccadd){while(--_0x2ccadd){_0x2ae54e['push'](_0x2ae54e['shift']());}};_0x24031e(++_0x2db639);}(_0xe644,0x159));var _0x4e64=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe644[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4e64('0x0'));var util=require(_0x4e64('0x1'));var path=require(_0x4e64('0x2'));var timeout=require(_0x4e64('0x3'));var express=require(_0x4e64('0x4'));var router=express[_0x4e64('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4e64('0x6'));var interaction=require(_0x4e64('0x7'));var config=require(_0x4e64('0x8'));var controller=require(_0x4e64('0x9'));router[_0x4e64('0xa')]('/',auth[_0x4e64('0xb')](),controller['index']);router[_0x4e64('0xa')](_0x4e64('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x4e64('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x4e64('0xd')]);router[_0x4e64('0xa')](_0x4e64('0xe'),auth[_0x4e64('0xb')](),controller[_0x4e64('0xf')]);router[_0x4e64('0x10')]('/',auth['isAuthenticated'](),controller[_0x4e64('0x11')]);router[_0x4e64('0x10')]('/:id/configurations',auth[_0x4e64('0xb')](),controller['addConfiguration']);router['put'](_0x4e64('0xc'),auth['isAuthenticated'](),controller[_0x4e64('0x12')]);router[_0x4e64('0x13')](_0x4e64('0xc'),auth[_0x4e64('0xb')](),controller[_0x4e64('0x14')]);module[_0x4e64('0x15')]=router;
\ No newline at end of file
index 5d16327..0cfc53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a0=['exports','STRING','HelpDesk','sequelize'];(function(_0x401d67,_0xeb1592){var _0x25076b=function(_0x233577){while(--_0x233577){_0x401d67['push'](_0x401d67['shift']());}};_0x25076b(++_0xeb1592);}(_0xc4a0,0x1c7));var _0x0c4a=function(_0x25c8d8,_0x12f7ad){_0x25c8d8=_0x25c8d8-0x0;var _0x32981a=_0xc4a0[_0x25c8d8];return _0x32981a;};'use strict';var Sequelize=require(_0x0c4a('0x0'));module[_0x0c4a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x0c4a('0x2')]},'username':{'type':Sequelize[_0x0c4a('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x0c4a('0x2')],'allowNull':![],'defaultValue':_0x0c4a('0x3')},'remoteUri':{'type':Sequelize[_0x0c4a('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x0c4a('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x0c4a('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x16f1=['STRING','HelpDesk','sequelize','exports'];(function(_0x21eb3c,_0x7ce88b){var _0x4bd2aa=function(_0x1b4bfd){while(--_0x1b4bfd){_0x21eb3c['push'](_0x21eb3c['shift']());}};_0x4bd2aa(++_0x7ce88b);}(_0x16f1,0x16a));var _0x116f=function(_0x3f554c,_0x53dc22){_0x3f554c=_0x3f554c-0x0;var _0x54b2bb=_0x16f1[_0x3f554c];return _0x54b2bb;};'use strict';var Sequelize=require(_0x116f('0x0'));module[_0x116f('0x1')]={'name':{'type':Sequelize[_0x116f('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x116f('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x116f('0x2')],'allowNull':![],'defaultValue':_0x116f('0x3')},'remoteUri':{'type':Sequelize[_0x116f('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x116f('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x116f('0x2')],'allowNull':![]}};
\ No newline at end of file
index 22db2ab..dd733a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafba=['serverUrl','accessKey','slice','lastIndexOf','format','%s/webservice.php','success','POST','login','result','token','describe','sessionName','autogenerated','owner','includes','remove','editable','false','label','cf_','picklist','picklistValues','log','vTiger\x20error:\x20','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','statusCode','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','stack','name','index','map','fieldName','type','key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','VtigerAccount','include','show','params','rawAttributes','includeAll','catch','create','body','find','destroy','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xafba,0x113));var _0xaafb=function(_0x4ecd93,_0x22c38d){_0x4ecd93=_0x4ecd93-0x0;var _0x4bd9d7=_0xafba[_0x4ecd93];return _0x4bd9d7;};'use strict';var emlformat=require(_0xaafb('0x0'));var rimraf=require(_0xaafb('0x1'));var zipdir=require(_0xaafb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaafb('0x3'));var moment=require(_0xaafb('0x4'));var BPromise=require(_0xaafb('0x5'));var Mustache=require(_0xaafb('0x6'));var util=require(_0xaafb('0x7'));var path=require(_0xaafb('0x8'));var sox=require(_0xaafb('0x9'));var csv=require(_0xaafb('0xa'));var ejs=require(_0xaafb('0xb'));var fs=require('fs');var fs_extra=require(_0xaafb('0xc'));var _=require(_0xaafb('0xd'));var squel=require(_0xaafb('0xe'));var crypto=require(_0xaafb('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xaafb('0x10'));var toCsv=require(_0xaafb('0xa'));var querystring=require(_0xaafb('0x11'));var Papa=require(_0xaafb('0x12'));var Redis=require(_0xaafb('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xaafb('0x14'));var as=require(_0xaafb('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaafb('0x16'))(_0xaafb('0x17'));var utils=require('../../config/utils');var config=require(_0xaafb('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xaafb('0x19'))['db'];var integrations=require(_0xaafb('0x1a'));function respondWithStatusCode(_0x273273,_0x478841){_0x478841=_0x478841||0xcc;return function(_0x3403d3){if(_0x3403d3){return _0x273273[_0xaafb('0x1b')](_0x478841);}return _0x273273[_0xaafb('0x1c')](_0x478841)[_0xaafb('0x1d')]();};}function respondWithResult(_0x30400f,_0x383eef){_0x383eef=_0x383eef||0xc8;return function(_0x3601c9){if(_0x3601c9){return _0x30400f[_0xaafb('0x1c')](_0x383eef)[_0xaafb('0x1e')](_0x3601c9);}};}function respondWithFilteredResult(_0x1ded40,_0x49a138){return function(_0x40ad28){if(_0x40ad28){var _0x5ad972=typeof _0x49a138[_0xaafb('0x1f')]===_0xaafb('0x20')&&typeof _0x49a138['limit']==='undefined';var _0x4f5538=_0x40ad28['count'];var _0x7964ba=_0x5ad972?0x0:_0x49a138[_0xaafb('0x1f')];var _0x16744a=_0x5ad972?_0x40ad28[_0xaafb('0x21')]:_0x49a138[_0xaafb('0x1f')]+_0x49a138['limit'];var _0x1566f5;if(_0x16744a>=_0x4f5538){_0x16744a=_0x4f5538;_0x1566f5=0xc8;}else{_0x1566f5=0xce;}_0x1ded40[_0xaafb('0x1c')](_0x1566f5);return _0x1ded40[_0xaafb('0x22')](_0xaafb('0x23'),_0x7964ba+'-'+_0x16744a+'/'+_0x4f5538)[_0xaafb('0x1e')](_0x40ad28);}return null;};}function patchUpdates(_0x1e295f){return function(_0x33886d){try{jsonpatch['apply'](_0x33886d,_0x1e295f,!![]);}catch(_0x47a90c){return BPromise[_0xaafb('0x24')](_0x47a90c);}return _0x33886d['save']();};}function saveUpdates(_0x284157,_0x58ab56){return function(_0x54f979){if(_0x54f979){return _0x54f979[_0xaafb('0x25')](_0x284157)[_0xaafb('0x26')](function(_0x80e6c3){return _0x80e6c3;});}return null;};}function removeEntity(_0x219429,_0x41adf0){return function(_0x4f4d38){if(_0x4f4d38){return _0x4f4d38['destroy']()['then'](function(){_0x219429['status'](0xcc)[_0xaafb('0x1d')]();});}};}function handleEntityNotFound(_0x2571b5,_0x319649){return function(_0x2f781f){if(!_0x2f781f){_0x2571b5[_0xaafb('0x1b')](0x194);}return _0x2f781f;};}function handleError(_0x462433,_0x537883){_0x537883=_0x537883||0x1f4;return function(_0x29969d){logger['error'](_0x29969d[_0xaafb('0x27')]);if(_0x29969d[_0xaafb('0x28')]){delete _0x29969d[_0xaafb('0x28')];}_0x462433[_0xaafb('0x1c')](_0x537883)['send'](_0x29969d);};}exports[_0xaafb('0x29')]=function(_0x3a782e,_0x5999c3){var _0xfee420={},_0xdc5f9b={},_0x5304c7={'count':0x0,'rows':[]};var _0x28c197=_[_0xaafb('0x2a')](db['VtigerAccount']['rawAttributes'],function(_0x30f2f6){return{'name':_0x30f2f6[_0xaafb('0x2b')],'type':_0x30f2f6[_0xaafb('0x2c')][_0xaafb('0x2d')]};});_0xdc5f9b[_0xaafb('0x2e')]=_[_0xaafb('0x2a')](_0x28c197,_0xaafb('0x28'));_0xdc5f9b['query']=_[_0xaafb('0x2f')](_0x3a782e['query']);_0xdc5f9b[_0xaafb('0x30')]=_['intersection'](_0xdc5f9b['model'],_0xdc5f9b[_0xaafb('0x31')]);_0xfee420[_0xaafb('0x32')]=_[_0xaafb('0x33')](_0xdc5f9b[_0xaafb('0x2e')],qs[_0xaafb('0x34')](_0x3a782e[_0xaafb('0x31')][_0xaafb('0x34')]));_0xfee420['attributes']=_0xfee420['attributes'][_0xaafb('0x35')]?_0xfee420['attributes']:_0xdc5f9b[_0xaafb('0x2e')];if(!_0x3a782e[_0xaafb('0x31')][_0xaafb('0x36')](_0xaafb('0x37'))){_0xfee420[_0xaafb('0x38')]=qs['limit'](_0x3a782e[_0xaafb('0x31')][_0xaafb('0x38')]);_0xfee420[_0xaafb('0x1f')]=qs[_0xaafb('0x1f')](_0x3a782e['query']['offset']);}_0xfee420[_0xaafb('0x39')]=qs[_0xaafb('0x3a')](_0x3a782e[_0xaafb('0x31')][_0xaafb('0x3a')]);_0xfee420[_0xaafb('0x3b')]=qs[_0xaafb('0x30')](_['pick'](_0x3a782e['query'],_0xdc5f9b[_0xaafb('0x30')]),_0x28c197);if(_0x3a782e['query'][_0xaafb('0x3c')]){_0xfee420[_0xaafb('0x3b')]=_[_0xaafb('0x3d')](_0xfee420[_0xaafb('0x3b')],{'$or':_['map'](_0x28c197,function(_0x4788a3){if(_0x4788a3[_0xaafb('0x2c')]!==_0xaafb('0x3e')){var _0x864f45={};_0x864f45[_0x4788a3['name']]={'$like':'%'+_0x3a782e[_0xaafb('0x31')][_0xaafb('0x3c')]+'%'};return _0x864f45;}})});}_0xfee420=_['merge']({},_0xfee420,_0x3a782e[_0xaafb('0x3f')]);var _0x374ab0={'where':_0xfee420[_0xaafb('0x3b')]};return db[_0xaafb('0x40')][_0xaafb('0x21')](_0x374ab0)[_0xaafb('0x26')](function(_0x3e1fdf){_0x5304c7[_0xaafb('0x21')]=_0x3e1fdf;if(_0x3a782e[_0xaafb('0x31')]['includeAll']){_0xfee420[_0xaafb('0x41')]=[{'all':!![]}];}return db[_0xaafb('0x40')]['findAll'](_0xfee420);})['then'](function(_0x5a82e0){_0x5304c7['rows']=_0x5a82e0;return _0x5304c7;})['then'](respondWithFilteredResult(_0x5999c3,_0xfee420))['catch'](handleError(_0x5999c3,null));};exports[_0xaafb('0x42')]=function(_0x2f2a26,_0x2685a8){var _0x2af2ba={'raw':![],'where':{'id':_0x2f2a26[_0xaafb('0x43')]['id']}},_0x47dc77={};_0x47dc77[_0xaafb('0x2e')]=_[_0xaafb('0x2f')](db[_0xaafb('0x40')][_0xaafb('0x44')]);_0x47dc77[_0xaafb('0x31')]=_[_0xaafb('0x2f')](_0x2f2a26[_0xaafb('0x31')]);_0x47dc77[_0xaafb('0x30')]=_[_0xaafb('0x33')](_0x47dc77[_0xaafb('0x2e')],_0x47dc77[_0xaafb('0x31')]);_0x2af2ba[_0xaafb('0x32')]=_[_0xaafb('0x33')](_0x47dc77[_0xaafb('0x2e')],qs[_0xaafb('0x34')](_0x2f2a26[_0xaafb('0x31')][_0xaafb('0x34')]));_0x2af2ba['attributes']=_0x2af2ba['attributes']['length']?_0x2af2ba[_0xaafb('0x32')]:_0x47dc77[_0xaafb('0x2e')];if(_0x2f2a26[_0xaafb('0x31')][_0xaafb('0x45')]){_0x2af2ba[_0xaafb('0x41')]=[{'all':!![]}];}_0x2af2ba=_['merge']({},_0x2af2ba,_0x2f2a26[_0xaafb('0x3f')]);return db[_0xaafb('0x40')]['find'](_0x2af2ba)[_0xaafb('0x26')](handleEntityNotFound(_0x2685a8,null))['then'](respondWithResult(_0x2685a8,null))[_0xaafb('0x46')](handleError(_0x2685a8,null));};exports[_0xaafb('0x47')]=function(_0x4ee965,_0x2f30e7){return db[_0xaafb('0x40')][_0xaafb('0x47')](_0x4ee965[_0xaafb('0x48')],{})[_0xaafb('0x26')](respondWithResult(_0x2f30e7,0xc9))['catch'](handleError(_0x2f30e7,null));};exports[_0xaafb('0x25')]=function(_0x10e5c3,_0x19a5e3){if(_0x10e5c3['body']['id']){delete _0x10e5c3['body']['id'];}return db[_0xaafb('0x40')][_0xaafb('0x49')]({'where':{'id':_0x10e5c3['params']['id']}})[_0xaafb('0x26')](handleEntityNotFound(_0x19a5e3,null))[_0xaafb('0x26')](saveUpdates(_0x10e5c3[_0xaafb('0x48')],null))['then'](respondWithResult(_0x19a5e3,null))[_0xaafb('0x46')](handleError(_0x19a5e3,null));};exports[_0xaafb('0x4a')]=function(_0x353d15,_0x55612f){return db[_0xaafb('0x40')]['find']({'where':{'id':_0x353d15[_0xaafb('0x43')]['id']}})['then'](handleEntityNotFound(_0x55612f,null))[_0xaafb('0x26')](removeEntity(_0x55612f,null))['catch'](handleError(_0x55612f,null));};exports[_0xaafb('0x4b')]=function(_0x23b194,_0xebabd5,_0x51cf0c){var _0x5254cf={};var _0x43c113={};var _0x23a3c7;var _0x1d37c1;return db[_0xaafb('0x40')][_0xaafb('0x4c')]({'where':{'id':_0x23b194[_0xaafb('0x43')]['id']}})[_0xaafb('0x26')](handleEntityNotFound(_0xebabd5,null))[_0xaafb('0x26')](function(_0x5ea5a0){if(_0x5ea5a0){_0x23a3c7=_0x5ea5a0;_0x43c113[_0xaafb('0x2e')]=_[_0xaafb('0x2f')](db[_0xaafb('0x4d')]['rawAttributes']);_0x43c113[_0xaafb('0x31')]=_[_0xaafb('0x2f')](_0x23b194[_0xaafb('0x31')]);_0x43c113['filters']=_[_0xaafb('0x33')](_0x43c113['model'],_0x43c113[_0xaafb('0x31')]);_0x5254cf['attributes']=_[_0xaafb('0x33')](_0x43c113[_0xaafb('0x2e')],qs[_0xaafb('0x34')](_0x23b194[_0xaafb('0x31')][_0xaafb('0x34')]));_0x5254cf[_0xaafb('0x32')]=_0x5254cf[_0xaafb('0x32')][_0xaafb('0x35')]?_0x5254cf['attributes']:_0x43c113['model'];_0x5254cf[_0xaafb('0x39')]=qs[_0xaafb('0x3a')](_0x23b194[_0xaafb('0x31')][_0xaafb('0x3a')]);_0x5254cf['where']=qs[_0xaafb('0x30')](_['pick'](_0x23b194[_0xaafb('0x31')],_0x43c113['filters']));if(_0x23b194['query']['filter']){_0x5254cf[_0xaafb('0x3b')]=_[_0xaafb('0x3d')](_0x5254cf['where'],{'$or':_[_0xaafb('0x2a')](_0x5254cf[_0xaafb('0x32')],function(_0x29dd93){var _0x3bee3b={};_0x3bee3b[_0x29dd93]={'$like':'%'+_0x23b194[_0xaafb('0x31')]['filter']+'%'};return _0x3bee3b;})});}_0x5254cf=_[_0xaafb('0x3d')]({},_0x5254cf,_0x23b194[_0xaafb('0x3f')]);return _0x23a3c7[_0xaafb('0x4b')](_0x5254cf);}})[_0xaafb('0x26')](function(_0x14ee6c){if(_0x14ee6c){_0x1d37c1=_0x14ee6c[_0xaafb('0x35')];if(!_0x23b194[_0xaafb('0x31')]['hasOwnProperty']('nolimit')){_0x5254cf[_0xaafb('0x38')]=qs[_0xaafb('0x38')](_0x23b194[_0xaafb('0x31')][_0xaafb('0x38')]);_0x5254cf['offset']=qs[_0xaafb('0x1f')](_0x23b194['query'][_0xaafb('0x1f')]);}return _0x23a3c7[_0xaafb('0x4b')](_0x5254cf);}})[_0xaafb('0x26')](function(_0x53a140){if(_0x53a140){return _0x53a140?{'count':_0x1d37c1,'rows':_0x53a140}:null;}})[_0xaafb('0x26')](respondWithResult(_0xebabd5,null))[_0xaafb('0x46')](handleError(_0xebabd5,null));};exports[_0xaafb('0x4e')]=function(_0x1853af,_0x532a14,_0x18d6cf){if(_0x1853af[_0xaafb('0x48')]['id']){delete _0x1853af[_0xaafb('0x48')]['id'];}return db[_0xaafb('0x40')][_0xaafb('0x4c')]({'where':{'id':_0x1853af[_0xaafb('0x43')]['id']}})[_0xaafb('0x26')](handleEntityNotFound(_0x532a14,null))[_0xaafb('0x26')](function(_0x2e2247){if(_0x2e2247){_0x1853af[_0xaafb('0x48')][_0xaafb('0x4f')]=_0x2e2247['id'];_0x1853af['body'][_0xaafb('0x50')]=integrations[_0xaafb('0x51')](_0x1853af['body'][_0xaafb('0x52')],_0x1853af['body'][_0xaafb('0x2c')]);_0x1853af[_0xaafb('0x48')][_0xaafb('0x53')]=integrations['getDescriptions'](_0x1853af[_0xaafb('0x48')][_0xaafb('0x52')],_0x1853af[_0xaafb('0x48')]['type']);return db[_0xaafb('0x4d')][_0xaafb('0x47')](_0x1853af['body'],{'include':[{'model':db[_0xaafb('0x54')],'as':_0xaafb('0x50')},{'model':db['VtigerField'],'as':_0xaafb('0x53')}]});}return null;})['then'](respondWithResult(_0x532a14,null))['catch'](handleError(_0x532a14,null));};var md5=require(_0xaafb('0x55'));exports[_0xaafb('0x56')]=function(_0x2ae830,_0x4eb058,_0x2d9b8f){var _0x5369c5=null;var _0x485b4e=null;var _0x4cd467=null;var _0x271b8e=null;var _0x410a53='';return db[_0xaafb('0x40')][_0xaafb('0x4c')]({'where':{'id':_0x2ae830[_0xaafb('0x43')]['id']},'attributes':['id',_0xaafb('0x28'),_0xaafb('0x57'),_0xaafb('0x58'),_0xaafb('0x59'),_0xaafb('0x5a'),_0xaafb('0x5b'),_0xaafb('0x5c')]})[_0xaafb('0x26')](handleEntityNotFound(_0x4eb058,null))[_0xaafb('0x26')](function(_0x6d13b3){if(_0x6d13b3){_0x5369c5=_0x6d13b3[_0xaafb('0x57')];_0x485b4e=_0x6d13b3[_0xaafb('0x5c')];_0x4cd467=_0x6d13b3[_0xaafb('0x59')];_0x410a53=_0x6d13b3[_0xaafb('0x5a')];var _0x46b994=_0x410a53[_0xaafb('0x5d')](-0x1);if(_0x46b994==='/'){_0x410a53=_0x410a53['substring'](0x0,_0x410a53[_0xaafb('0x5e')](_0x46b994));}_0x271b8e=util[_0xaafb('0x5f')](_0xaafb('0x60'),_0x410a53);var _0x23881c={'method':'GET','uri':_0x271b8e,'qs':{'operation':'getchallenge','username':_0x6d13b3[_0xaafb('0x57')]},'json':!![]};return rp(_0x23881c);}})[_0xaafb('0x26')](function(_0x484da5){if(_0x484da5[_0xaafb('0x61')]){var _0x167550={'method':_0xaafb('0x62'),'uri':_0x271b8e,'form':{'operation':_0xaafb('0x63'),'username':_0x5369c5,'accessKey':md5(_0x484da5[_0xaafb('0x64')][_0xaafb('0x65')]+_0x485b4e)},'json':!![]};return rp(_0x167550);}})[_0xaafb('0x26')](function(_0x129f1c){if(_0x129f1c[_0xaafb('0x61')]){var _0x1a242a={'method':'GET','uri':_0x271b8e,'qs':{'operation':_0xaafb('0x66'),'username':_0x5369c5,'sessionName':_0x129f1c[_0xaafb('0x64')][_0xaafb('0x67')],'elementType':_0x4cd467},'json':!![]};return rp(_0x1a242a);}})[_0xaafb('0x26')](function(_0x1bb05f){if(_0x1bb05f['success']){var _0x2ad15f=[_0xaafb('0x68'),'reference',_0xaafb('0x69')];_['remove'](_0x1bb05f[_0xaafb('0x64')][_0xaafb('0x34')],function(_0x179f87){return _0x2ad15f[_0xaafb('0x6a')](_0x179f87[_0xaafb('0x2c')]['name']);});_[_0xaafb('0x6b')](_0x1bb05f[_0xaafb('0x64')][_0xaafb('0x34')],function(_0x3cd9e9){return _0x3cd9e9[_0xaafb('0x6c')]===_0xaafb('0x6d');});return{'count':_0x1bb05f[_0xaafb('0x64')][_0xaafb('0x34')][_0xaafb('0x35')],'rows':_['map'](_0x1bb05f[_0xaafb('0x64')]['fields'],function(_0x321569){return{'id':_0x321569[_0xaafb('0x28')],'name':_0x321569[_0xaafb('0x6e')],'custom':_['startsWith'](_0x321569['name'],_0xaafb('0x6f'))?!![]:![],'options':_0x321569[_0xaafb('0x2c')][_0xaafb('0x28')]===_0xaafb('0x70')&&_0x321569[_0xaafb('0x2c')]['picklistValues'][_0xaafb('0x35')]>0x0?_[_0xaafb('0x2a')](_0x321569['type'][_0xaafb('0x71')],function(_0x41f783){return{'name':_0x41f783['label'],'value':_0x41f783['value']};}):[]};})};}})[_0xaafb('0x26')](respondWithResult(_0x4eb058,null))[_0xaafb('0x46')](function(_0x5ecfe9){console[_0xaafb('0x72')](_0xaafb('0x73')+_0x5ecfe9);var _0x29e6d5=_0x2ae830[_0xaafb('0x31')][_0xaafb('0x74')]?0x1f4:_0x5ecfe9['statusCode']||0x1f4;logger[_0xaafb('0x75')](_0xaafb('0x76'),'getFields',_0x29e6d5,JSON[_0xaafb('0x77')](_0x5ecfe9));delete _0x5ecfe9[_0xaafb('0x28')];if(_0x29e6d5===0x191){_0x29e6d5=0x190;}_0x4eb058[_0xaafb('0x1c')](_0x29e6d5)[_0xaafb('0x78')](_0x2ae830['query'][_0xaafb('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x5ecfe9[_0xaafb('0x79')]}:_0x5ecfe9);});};
\ No newline at end of file
+var _0x4c14=['api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','VtigerAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','destroy','getConfigurations','findOne','VtigerConfiguration','pick','hasOwnProperty','addConfiguration','AccountId','getSubjects','getDescriptions','channel','VtigerField','Descriptions','md5','username','description','moduleName','serverUrl','accessKey','slice','substring','%s/webservice.php','GET','getchallenge','success','login','token','describe','result','autogenerated','owner','includes','remove','editable','false','picklist','picklistValues','label','value','log','vTiger\x20error:\x20','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x28394f,_0x5ebdd2){var _0x2618d2=function(_0x2ffed6){while(--_0x2ffed6){_0x28394f['push'](_0x28394f['shift']());}};_0x2618d2(++_0x5ebdd2);}(_0x4c14,0x15b));var _0x44c1=function(_0x142ad4,_0x2c3e5d){_0x142ad4=_0x142ad4-0x0;var _0x6ace79=_0x4c14[_0x142ad4];return _0x6ace79;};'use strict';var emlformat=require(_0x44c1('0x0'));var rimraf=require(_0x44c1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x44c1('0x2'));var rp=require(_0x44c1('0x3'));var moment=require(_0x44c1('0x4'));var BPromise=require(_0x44c1('0x5'));var Mustache=require('mustache');var util=require(_0x44c1('0x6'));var path=require('path');var sox=require(_0x44c1('0x7'));var csv=require('to-csv');var ejs=require(_0x44c1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x44c1('0x9'));var squel=require('squel');var crypto=require(_0x44c1('0xa'));var jsforce=require(_0x44c1('0xb'));var deskjs=require(_0x44c1('0xc'));var toCsv=require(_0x44c1('0xd'));var querystring=require(_0x44c1('0xe'));var Papa=require(_0x44c1('0xf'));var Redis=require('ioredis');var authService=require(_0x44c1('0x10'));var qs=require(_0x44c1('0x11'));var as=require(_0x44c1('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x44c1('0x13'));var utils=require(_0x44c1('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x44c1('0x15'));var db=require(_0x44c1('0x16'))['db'];var integrations=require(_0x44c1('0x17'));function respondWithStatusCode(_0xa799bc,_0x32511e){_0x32511e=_0x32511e||0xcc;return function(_0x366116){if(_0x366116){return _0xa799bc[_0x44c1('0x18')](_0x32511e);}return _0xa799bc[_0x44c1('0x19')](_0x32511e)[_0x44c1('0x1a')]();};}function respondWithResult(_0x16d734,_0x73b279){_0x73b279=_0x73b279||0xc8;return function(_0x22ea3d){if(_0x22ea3d){return _0x16d734[_0x44c1('0x19')](_0x73b279)[_0x44c1('0x1b')](_0x22ea3d);}};}function respondWithFilteredResult(_0x19731c,_0x325130){return function(_0x137153){if(_0x137153){var _0x5cb2cd=typeof _0x325130[_0x44c1('0x1c')]===_0x44c1('0x1d')&&typeof _0x325130[_0x44c1('0x1e')]===_0x44c1('0x1d');var _0x472784=_0x137153[_0x44c1('0x1f')];var _0x4979d0=_0x5cb2cd?0x0:_0x325130[_0x44c1('0x1c')];var _0x1bedab=_0x5cb2cd?_0x137153[_0x44c1('0x1f')]:_0x325130[_0x44c1('0x1c')]+_0x325130[_0x44c1('0x1e')];var _0x2bd7e8;if(_0x1bedab>=_0x472784){_0x1bedab=_0x472784;_0x2bd7e8=0xc8;}else{_0x2bd7e8=0xce;}_0x19731c['status'](_0x2bd7e8);return _0x19731c[_0x44c1('0x20')](_0x44c1('0x21'),_0x4979d0+'-'+_0x1bedab+'/'+_0x472784)[_0x44c1('0x1b')](_0x137153);}return null;};}function patchUpdates(_0x734439){return function(_0x2ebec9){try{jsonpatch[_0x44c1('0x22')](_0x2ebec9,_0x734439,!![]);}catch(_0x433834){return BPromise[_0x44c1('0x23')](_0x433834);}return _0x2ebec9[_0x44c1('0x24')]();};}function saveUpdates(_0x2d7ca4,_0xedb12){return function(_0x2731a9){if(_0x2731a9){return _0x2731a9[_0x44c1('0x25')](_0x2d7ca4)[_0x44c1('0x26')](function(_0x355abb){return _0x355abb;});}return null;};}function removeEntity(_0x481b97,_0x2a7b1a){return function(_0xe297ca){if(_0xe297ca){return _0xe297ca['destroy']()[_0x44c1('0x26')](function(){_0x481b97[_0x44c1('0x19')](0xcc)[_0x44c1('0x1a')]();});}};}function handleEntityNotFound(_0x474e70,_0x2bb095){return function(_0x5aa67b){if(!_0x5aa67b){_0x474e70[_0x44c1('0x18')](0x194);}return _0x5aa67b;};}function handleError(_0x19af76,_0x281d2b){_0x281d2b=_0x281d2b||0x1f4;return function(_0x2adf33){logger[_0x44c1('0x27')](_0x2adf33[_0x44c1('0x28')]);if(_0x2adf33['name']){delete _0x2adf33[_0x44c1('0x29')];}_0x19af76[_0x44c1('0x19')](_0x281d2b)[_0x44c1('0x2a')](_0x2adf33);};}exports[_0x44c1('0x2b')]=function(_0x5d4264,_0x2b7599){var _0x447d60={},_0x167195={},_0x321832={'count':0x0,'rows':[]};var _0x2212a0=_['map'](db[_0x44c1('0x2c')][_0x44c1('0x2d')],function(_0x4a3502){return{'name':_0x4a3502[_0x44c1('0x2e')],'type':_0x4a3502[_0x44c1('0x2f')][_0x44c1('0x30')]};});_0x167195[_0x44c1('0x31')]=_[_0x44c1('0x32')](_0x2212a0,_0x44c1('0x29'));_0x167195[_0x44c1('0x33')]=_[_0x44c1('0x34')](_0x5d4264[_0x44c1('0x33')]);_0x167195[_0x44c1('0x35')]=_[_0x44c1('0x36')](_0x167195[_0x44c1('0x31')],_0x167195[_0x44c1('0x33')]);_0x447d60[_0x44c1('0x37')]=_[_0x44c1('0x36')](_0x167195[_0x44c1('0x31')],qs[_0x44c1('0x38')](_0x5d4264[_0x44c1('0x33')][_0x44c1('0x38')]));_0x447d60[_0x44c1('0x37')]=_0x447d60['attributes']['length']?_0x447d60['attributes']:_0x167195['model'];if(!_0x5d4264['query']['hasOwnProperty'](_0x44c1('0x39'))){_0x447d60[_0x44c1('0x1e')]=qs['limit'](_0x5d4264[_0x44c1('0x33')][_0x44c1('0x1e')]);_0x447d60[_0x44c1('0x1c')]=qs['offset'](_0x5d4264['query'][_0x44c1('0x1c')]);}_0x447d60[_0x44c1('0x3a')]=qs['sort'](_0x5d4264['query'][_0x44c1('0x3b')]);_0x447d60[_0x44c1('0x3c')]=qs[_0x44c1('0x35')](_['pick'](_0x5d4264[_0x44c1('0x33')],_0x167195[_0x44c1('0x35')]),_0x2212a0);if(_0x5d4264[_0x44c1('0x33')][_0x44c1('0x3d')]){_0x447d60[_0x44c1('0x3c')]=_[_0x44c1('0x3e')](_0x447d60[_0x44c1('0x3c')],{'$or':_['map'](_0x2212a0,function(_0x4eab74){if(_0x4eab74[_0x44c1('0x2f')]!==_0x44c1('0x3f')){var _0x3feae4={};_0x3feae4[_0x4eab74[_0x44c1('0x29')]]={'$like':'%'+_0x5d4264[_0x44c1('0x33')][_0x44c1('0x3d')]+'%'};return _0x3feae4;}})});}_0x447d60=_[_0x44c1('0x3e')]({},_0x447d60,_0x5d4264[_0x44c1('0x40')]);var _0x6fb652={'where':_0x447d60[_0x44c1('0x3c')]};return db[_0x44c1('0x2c')][_0x44c1('0x1f')](_0x6fb652)['then'](function(_0x36dd8b){_0x321832[_0x44c1('0x1f')]=_0x36dd8b;if(_0x5d4264['query']['includeAll']){_0x447d60[_0x44c1('0x41')]=[{'all':!![]}];}return db[_0x44c1('0x2c')][_0x44c1('0x42')](_0x447d60);})[_0x44c1('0x26')](function(_0xdc6c4a){_0x321832[_0x44c1('0x43')]=_0xdc6c4a;return _0x321832;})[_0x44c1('0x26')](respondWithFilteredResult(_0x2b7599,_0x447d60))[_0x44c1('0x44')](handleError(_0x2b7599,null));};exports[_0x44c1('0x45')]=function(_0x47cb34,_0x276a4){var _0x8e441f={'raw':![],'where':{'id':_0x47cb34[_0x44c1('0x46')]['id']}},_0x1f11b3={};_0x1f11b3[_0x44c1('0x31')]=_[_0x44c1('0x34')](db['VtigerAccount'][_0x44c1('0x2d')]);_0x1f11b3['query']=_[_0x44c1('0x34')](_0x47cb34['query']);_0x1f11b3[_0x44c1('0x35')]=_[_0x44c1('0x36')](_0x1f11b3[_0x44c1('0x31')],_0x1f11b3[_0x44c1('0x33')]);_0x8e441f[_0x44c1('0x37')]=_['intersection'](_0x1f11b3['model'],qs[_0x44c1('0x38')](_0x47cb34[_0x44c1('0x33')][_0x44c1('0x38')]));_0x8e441f['attributes']=_0x8e441f[_0x44c1('0x37')][_0x44c1('0x47')]?_0x8e441f[_0x44c1('0x37')]:_0x1f11b3[_0x44c1('0x31')];if(_0x47cb34[_0x44c1('0x33')][_0x44c1('0x48')]){_0x8e441f[_0x44c1('0x41')]=[{'all':!![]}];}_0x8e441f=_[_0x44c1('0x3e')]({},_0x8e441f,_0x47cb34[_0x44c1('0x40')]);return db[_0x44c1('0x2c')][_0x44c1('0x49')](_0x8e441f)[_0x44c1('0x26')](handleEntityNotFound(_0x276a4,null))['then'](respondWithResult(_0x276a4,null))[_0x44c1('0x44')](handleError(_0x276a4,null));};exports['create']=function(_0x315d16,_0x21f7c1){return db[_0x44c1('0x2c')][_0x44c1('0x4a')](_0x315d16[_0x44c1('0x4b')],{})[_0x44c1('0x26')](respondWithResult(_0x21f7c1,0xc9))[_0x44c1('0x44')](handleError(_0x21f7c1,null));};exports[_0x44c1('0x25')]=function(_0x3fd20a,_0x47dcee){if(_0x3fd20a[_0x44c1('0x4b')]['id']){delete _0x3fd20a['body']['id'];}return db['VtigerAccount'][_0x44c1('0x49')]({'where':{'id':_0x3fd20a['params']['id']}})['then'](handleEntityNotFound(_0x47dcee,null))['then'](saveUpdates(_0x3fd20a['body'],null))['then'](respondWithResult(_0x47dcee,null))[_0x44c1('0x44')](handleError(_0x47dcee,null));};exports[_0x44c1('0x4c')]=function(_0x426931,_0x26c789){return db['VtigerAccount'][_0x44c1('0x49')]({'where':{'id':_0x426931[_0x44c1('0x46')]['id']}})[_0x44c1('0x26')](handleEntityNotFound(_0x26c789,null))[_0x44c1('0x26')](removeEntity(_0x26c789,null))[_0x44c1('0x44')](handleError(_0x26c789,null));};exports[_0x44c1('0x4d')]=function(_0x6cc493,_0x28beb6,_0x23a1db){var _0x4e5599={};var _0x24c77e={};var _0x5d55aa;var _0x240c57;return db['VtigerAccount'][_0x44c1('0x4e')]({'where':{'id':_0x6cc493[_0x44c1('0x46')]['id']}})[_0x44c1('0x26')](handleEntityNotFound(_0x28beb6,null))[_0x44c1('0x26')](function(_0x4b829a){if(_0x4b829a){_0x5d55aa=_0x4b829a;_0x24c77e['model']=_['keys'](db[_0x44c1('0x4f')][_0x44c1('0x2d')]);_0x24c77e[_0x44c1('0x33')]=_['keys'](_0x6cc493['query']);_0x24c77e['filters']=_[_0x44c1('0x36')](_0x24c77e['model'],_0x24c77e['query']);_0x4e5599[_0x44c1('0x37')]=_[_0x44c1('0x36')](_0x24c77e[_0x44c1('0x31')],qs['fields'](_0x6cc493[_0x44c1('0x33')][_0x44c1('0x38')]));_0x4e5599[_0x44c1('0x37')]=_0x4e5599['attributes'][_0x44c1('0x47')]?_0x4e5599[_0x44c1('0x37')]:_0x24c77e[_0x44c1('0x31')];_0x4e5599[_0x44c1('0x3a')]=qs['sort'](_0x6cc493['query']['sort']);_0x4e5599[_0x44c1('0x3c')]=qs[_0x44c1('0x35')](_[_0x44c1('0x50')](_0x6cc493['query'],_0x24c77e[_0x44c1('0x35')]));if(_0x6cc493[_0x44c1('0x33')][_0x44c1('0x3d')]){_0x4e5599[_0x44c1('0x3c')]=_[_0x44c1('0x3e')](_0x4e5599[_0x44c1('0x3c')],{'$or':_['map'](_0x4e5599[_0x44c1('0x37')],function(_0xb11426){var _0xd77e10={};_0xd77e10[_0xb11426]={'$like':'%'+_0x6cc493[_0x44c1('0x33')][_0x44c1('0x3d')]+'%'};return _0xd77e10;})});}_0x4e5599=_[_0x44c1('0x3e')]({},_0x4e5599,_0x6cc493[_0x44c1('0x40')]);return _0x5d55aa['getConfigurations'](_0x4e5599);}})['then'](function(_0x17bc5b){if(_0x17bc5b){_0x240c57=_0x17bc5b['length'];if(!_0x6cc493[_0x44c1('0x33')][_0x44c1('0x51')](_0x44c1('0x39'))){_0x4e5599[_0x44c1('0x1e')]=qs[_0x44c1('0x1e')](_0x6cc493[_0x44c1('0x33')]['limit']);_0x4e5599['offset']=qs['offset'](_0x6cc493[_0x44c1('0x33')][_0x44c1('0x1c')]);}return _0x5d55aa['getConfigurations'](_0x4e5599);}})[_0x44c1('0x26')](function(_0x1c4ae6){if(_0x1c4ae6){return _0x1c4ae6?{'count':_0x240c57,'rows':_0x1c4ae6}:null;}})[_0x44c1('0x26')](respondWithResult(_0x28beb6,null))[_0x44c1('0x44')](handleError(_0x28beb6,null));};exports[_0x44c1('0x52')]=function(_0x577a89,_0x18e438,_0x22cff8){if(_0x577a89[_0x44c1('0x4b')]['id']){delete _0x577a89[_0x44c1('0x4b')]['id'];}return db[_0x44c1('0x2c')]['findOne']({'where':{'id':_0x577a89[_0x44c1('0x46')]['id']}})[_0x44c1('0x26')](handleEntityNotFound(_0x18e438,null))['then'](function(_0x26eb03){if(_0x26eb03){_0x577a89[_0x44c1('0x4b')][_0x44c1('0x53')]=_0x26eb03['id'];_0x577a89[_0x44c1('0x4b')]['Subjects']=integrations[_0x44c1('0x54')](_0x577a89[_0x44c1('0x4b')]['channel'],_0x577a89[_0x44c1('0x4b')][_0x44c1('0x2f')]);_0x577a89['body']['Descriptions']=integrations[_0x44c1('0x55')](_0x577a89['body'][_0x44c1('0x56')],_0x577a89[_0x44c1('0x4b')]['type']);return db[_0x44c1('0x4f')][_0x44c1('0x4a')](_0x577a89[_0x44c1('0x4b')],{'include':[{'model':db[_0x44c1('0x57')],'as':'Subjects'},{'model':db[_0x44c1('0x57')],'as':_0x44c1('0x58')}]});}return null;})[_0x44c1('0x26')](respondWithResult(_0x18e438,null))['catch'](handleError(_0x18e438,null));};var md5=require(_0x44c1('0x59'));exports['getFields']=function(_0x44e3f1,_0x135d25,_0x27e5a6){var _0xa8d913=null;var _0x19724e=null;var _0xc8dff0=null;var _0x38515f=null;var _0x241d2c='';return db[_0x44c1('0x2c')]['findOne']({'where':{'id':_0x44e3f1[_0x44c1('0x46')]['id']},'attributes':['id',_0x44c1('0x29'),_0x44c1('0x5a'),_0x44c1('0x5b'),_0x44c1('0x5c'),'remoteUri',_0x44c1('0x5d'),'accessKey']})[_0x44c1('0x26')](handleEntityNotFound(_0x135d25,null))['then'](function(_0x587cfb){if(_0x587cfb){_0xa8d913=_0x587cfb[_0x44c1('0x5a')];_0x19724e=_0x587cfb[_0x44c1('0x5e')];_0xc8dff0=_0x587cfb[_0x44c1('0x5c')];_0x241d2c=_0x587cfb['remoteUri'];var _0x15cc6e=_0x241d2c[_0x44c1('0x5f')](-0x1);if(_0x15cc6e==='/'){_0x241d2c=_0x241d2c[_0x44c1('0x60')](0x0,_0x241d2c['lastIndexOf'](_0x15cc6e));}_0x38515f=util['format'](_0x44c1('0x61'),_0x241d2c);var _0x3e4ea0={'method':_0x44c1('0x62'),'uri':_0x38515f,'qs':{'operation':_0x44c1('0x63'),'username':_0x587cfb[_0x44c1('0x5a')]},'json':!![]};return rp(_0x3e4ea0);}})[_0x44c1('0x26')](function(_0x30cc98){if(_0x30cc98[_0x44c1('0x64')]){var _0x3c6389={'method':'POST','uri':_0x38515f,'form':{'operation':_0x44c1('0x65'),'username':_0xa8d913,'accessKey':md5(_0x30cc98['result'][_0x44c1('0x66')]+_0x19724e)},'json':!![]};return rp(_0x3c6389);}})[_0x44c1('0x26')](function(_0x49ccf7){if(_0x49ccf7[_0x44c1('0x64')]){var _0x3f6088={'method':_0x44c1('0x62'),'uri':_0x38515f,'qs':{'operation':_0x44c1('0x67'),'username':_0xa8d913,'sessionName':_0x49ccf7[_0x44c1('0x68')]['sessionName'],'elementType':_0xc8dff0},'json':!![]};return rp(_0x3f6088);}})[_0x44c1('0x26')](function(_0x3286be){if(_0x3286be[_0x44c1('0x64')]){var _0x466c88=[_0x44c1('0x69'),'reference',_0x44c1('0x6a')];_['remove'](_0x3286be[_0x44c1('0x68')][_0x44c1('0x38')],function(_0x39b520){return _0x466c88[_0x44c1('0x6b')](_0x39b520[_0x44c1('0x2f')][_0x44c1('0x29')]);});_[_0x44c1('0x6c')](_0x3286be['result'][_0x44c1('0x38')],function(_0x2f2914){return _0x2f2914[_0x44c1('0x6d')]===_0x44c1('0x6e');});return{'count':_0x3286be['result'][_0x44c1('0x38')][_0x44c1('0x47')],'rows':_['map'](_0x3286be['result']['fields'],function(_0x2da0e1){return{'id':_0x2da0e1[_0x44c1('0x29')],'name':_0x2da0e1['label'],'custom':_['startsWith'](_0x2da0e1[_0x44c1('0x29')],'cf_')?!![]:![],'options':_0x2da0e1[_0x44c1('0x2f')]['name']===_0x44c1('0x6f')&&_0x2da0e1[_0x44c1('0x2f')][_0x44c1('0x70')][_0x44c1('0x47')]>0x0?_[_0x44c1('0x32')](_0x2da0e1[_0x44c1('0x2f')][_0x44c1('0x70')],function(_0x5db60e){return{'name':_0x5db60e[_0x44c1('0x71')],'value':_0x5db60e[_0x44c1('0x72')]};}):[]};})};}})[_0x44c1('0x26')](respondWithResult(_0x135d25,null))[_0x44c1('0x44')](function(_0x5e4f58){console[_0x44c1('0x73')](_0x44c1('0x74')+_0x5e4f58);var _0x2b12ad=_0x44e3f1[_0x44c1('0x33')][_0x44c1('0x75')]?0x1f4:_0x5e4f58[_0x44c1('0x76')]||0x1f4;logger[_0x44c1('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x44c1('0x77'),_0x2b12ad,JSON[_0x44c1('0x78')](_0x5e4f58));delete _0x5e4f58[_0x44c1('0x29')];if(_0x2b12ad===0x191){_0x2b12ad=0x190;}_0x135d25[_0x44c1('0x19')](_0x2b12ad)['send'](_0x44e3f1[_0x44c1('0x33')][_0x44c1('0x75')]?{'message':_0x44c1('0x79'),'statusCode':_0x5e4f58[_0x44c1('0x76')]}:_0x5e4f58);});};
\ No newline at end of file
index 34fc082..c8399a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x225ee0,_0x4eaa64){var _0xad547f=function(_0x5dd97d){while(--_0x5dd97d){_0x225ee0['push'](_0x225ee0['shift']());}};_0xad547f(++_0x4eaa64);}(_0x0fc2,0x1cd));var _0x20fc=function(_0x4c2285,_0x3f50b8){_0x4c2285=_0x4c2285-0x0;var _0x11bd9c=_0x0fc2[_0x4c2285];return _0x11bd9c;};'use strict';var _=require(_0x20fc('0x0'));var util=require(_0x20fc('0x1'));var logger=require('../../config/logger')(_0x20fc('0x2'));var moment=require(_0x20fc('0x3'));var BPromise=require(_0x20fc('0x4'));var rp=require(_0x20fc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x20fc('0x6'));var config=require(_0x20fc('0x7'));var attributes=require(_0x20fc('0x8'));var integrations=require(_0x20fc('0x9'));module[_0x20fc('0xa')]=function(_0x18aa52,_0x9aa358){return _0x18aa52[_0x20fc('0xb')](_0x20fc('0xc'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x95fa=['define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger','moment','request-promise','rimraf','./intVtigerAccount.attributes','exports'];(function(_0x6add6a,_0x1123c0){var _0x4d8df1=function(_0x5e15f0){while(--_0x5e15f0){_0x6add6a['push'](_0x6add6a['shift']());}};_0x4d8df1(++_0x1123c0);}(_0x95fa,0xc9));var _0xa95f=function(_0x4edb3a,_0x9ad05d){_0x4edb3a=_0x4edb3a-0x0;var _0x2332b8=_0x95fa[_0x4edb3a];return _0x2332b8;};'use strict';var _=require(_0xa95f('0x0'));var util=require(_0xa95f('0x1'));var logger=require(_0xa95f('0x2'))('api');var moment=require(_0xa95f('0x3'));var BPromise=require('bluebird');var rp=require(_0xa95f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa95f('0x5'));var config=require('../../config/environment');var attributes=require(_0xa95f('0x6'));var integrations=require('../../components/integrations/configuration');module[_0xa95f('0x7')]=function(_0x2ac85c,_0x2480c6){return _0x2ac85c[_0xa95f('0x8')](_0xa95f('0x9'),attributes,{'tableName':_0xa95f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 925245b..b334330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351d=['findAll','options','attributes','include','map','model','then','catch','ShowVtigerAccount','find','raw','where','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','VtigerAccount,\x20%s,\x20%s','message','result','GetVtigerAccount','VtigerAccount'];(function(_0x3862fc,_0x22f0bd){var _0x48bf43=function(_0x584993){while(--_0x584993){_0x3862fc['push'](_0x3862fc['shift']());}};_0x48bf43(++_0x22f0bd);}(_0x351d,0x90));var _0xd351=function(_0x463849,_0x2f8b41){_0x463849=_0x463849-0x0;var _0x11d848=_0x351d[_0x463849];return _0x11d848;};'use strict';var _=require(_0xd351('0x0'));var util=require('util');var moment=require(_0xd351('0x1'));var BPromise=require(_0xd351('0x2'));var rs=require(_0xd351('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd351('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd351('0x5'))(_0xd351('0x6'));var config=require('../../config/environment');var jayson=require(_0xd351('0x7'));var client=jayson[_0xd351('0x8')][_0xd351('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5318b2,_0x16b3f7,_0x235aa0){return new BPromise(function(_0x4e1b06,_0x2e9a2a){return client[_0xd351('0xa')](_0x5318b2,_0x235aa0)['then'](function(_0x586c60){logger[_0xd351('0xb')]('VtigerAccount,\x20%s,\x20%s',_0x16b3f7,_0xd351('0xc'));logger[_0xd351('0xd')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x16b3f7,_0xd351('0xc'),JSON[_0xd351('0xe')](_0x586c60));if(_0x586c60['error']){if(_0x586c60[_0xd351('0xf')]['code']===0x1f4){logger['error'](_0xd351('0x10'),_0x16b3f7,_0x586c60[_0xd351('0xf')][_0xd351('0x11')]);return _0x2e9a2a(_0x586c60[_0xd351('0xf')]['message']);}logger[_0xd351('0xf')](_0xd351('0x10'),_0x16b3f7,_0x586c60['error'][_0xd351('0x11')]);return _0x4e1b06(_0x586c60[_0xd351('0xf')][_0xd351('0x11')]);}else{logger[_0xd351('0xb')](_0xd351('0x10'),_0x16b3f7,'request\x20sent');_0x4e1b06(_0x586c60[_0xd351('0x12')]['message']);}})['catch'](function(_0x2c6708){logger['error'](_0xd351('0x10'),_0x16b3f7,_0x2c6708);_0x2e9a2a(_0x2c6708);});});}exports[_0xd351('0x13')]=function(_0x4e0164){var _0x4c6693=this;return new Promise(function(_0x1e1a3c,_0x2bfc53){return db[_0xd351('0x14')][_0xd351('0x15')]({'raw':_0x4e0164['options']?_0x4e0164[_0xd351('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x4e0164['options']?_0x4e0164[_0xd351('0x16')]['where']||null:null,'attributes':_0x4e0164[_0xd351('0x16')]?_0x4e0164[_0xd351('0x16')][_0xd351('0x17')]||null:null,'limit':_0x4e0164[_0xd351('0x16')]?_0x4e0164[_0xd351('0x16')]['limit']||null:null,'include':_0x4e0164[_0xd351('0x16')]?_0x4e0164[_0xd351('0x16')][_0xd351('0x18')]?_['map'](_0x4e0164[_0xd351('0x16')][_0xd351('0x18')],function(_0x365bbc){return{'model':db[_0x365bbc['model']],'as':_0x365bbc['as'],'attributes':_0x365bbc[_0xd351('0x17')],'include':_0x365bbc[_0xd351('0x18')]?_[_0xd351('0x19')](_0x365bbc[_0xd351('0x18')],function(_0x489c9a){return{'model':db[_0x489c9a[_0xd351('0x1a')]],'as':_0x489c9a['as'],'attributes':_0x489c9a['attributes'],'include':_0x489c9a[_0xd351('0x18')]?_[_0xd351('0x19')](_0x489c9a['include'],function(_0x2648d0){return{'model':db[_0x2648d0['model']],'as':_0x2648d0['as'],'attributes':_0x2648d0['attributes']};}):[]};}):[]};}):[]:[]})[_0xd351('0x1b')](function(_0x560be9){logger['info'](_0xd351('0x13'),_0x4e0164);logger['debug'](_0xd351('0x13'),_0x4e0164,JSON[_0xd351('0xe')](_0x560be9));_0x1e1a3c(_0x560be9);})[_0xd351('0x1c')](function(_0x4d3f48){logger[_0xd351('0xf')]('GetVtigerAccount',_0x4d3f48[_0xd351('0x11')],_0x4e0164);_0x2bfc53(_0x4c6693['error'](0x1f4,_0x4d3f48['message']));});});};exports[_0xd351('0x1d')]=function(_0x38c82f){var _0x3f9ef3=this;return new Promise(function(_0x33b43d,_0x48aa96){return db[_0xd351('0x14')][_0xd351('0x1e')]({'raw':_0x38c82f[_0xd351('0x16')]?_0x38c82f[_0xd351('0x16')][_0xd351('0x1f')]===undefined?!![]:![]:!![],'where':_0x38c82f[_0xd351('0x16')]?_0x38c82f[_0xd351('0x16')][_0xd351('0x20')]||null:null,'attributes':_0x38c82f[_0xd351('0x16')]?_0x38c82f['options'][_0xd351('0x17')]||null:null,'include':_0x38c82f[_0xd351('0x16')]?_0x38c82f[_0xd351('0x16')][_0xd351('0x18')]?_['map'](_0x38c82f[_0xd351('0x16')][_0xd351('0x18')],function(_0x3d5b7f){return{'model':db[_0x3d5b7f[_0xd351('0x1a')]],'as':_0x3d5b7f['as'],'attributes':_0x3d5b7f[_0xd351('0x17')],'include':_0x3d5b7f[_0xd351('0x18')]?_[_0xd351('0x19')](_0x3d5b7f[_0xd351('0x18')],function(_0x238663){return{'model':db[_0x238663['model']],'as':_0x238663['as'],'attributes':_0x238663['attributes'],'include':_0x238663[_0xd351('0x18')]?_[_0xd351('0x19')](_0x238663[_0xd351('0x18')],function(_0x2907b7){return{'model':db[_0x2907b7[_0xd351('0x1a')]],'as':_0x2907b7['as'],'attributes':_0x2907b7[_0xd351('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47e2fa){logger[_0xd351('0xb')]('ShowVtigerAccount',_0x38c82f);logger[_0xd351('0xd')](_0xd351('0x1d'),_0x38c82f,JSON[_0xd351('0xe')](_0x47e2fa));_0x33b43d(_0x47e2fa);})[_0xd351('0x1c')](function(_0x33307){logger[_0xd351('0xf')](_0xd351('0x1d'),_0x33307[_0xd351('0x11')],_0x38c82f);_0x48aa96(_0x3f9ef3[_0xd351('0xf')](0x1f4,_0x33307[_0xd351('0x11')]));});});};
\ No newline at end of file
+var _0xbee3=['VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','limit','include','map','model','attributes','stringify','where','ShowVtigerAccount','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info'];(function(_0x412c8f,_0x11ec94){var _0x27c005=function(_0x127059){while(--_0x127059){_0x412c8f['push'](_0x412c8f['shift']());}};_0x27c005(++_0x11ec94);}(_0xbee3,0xd5));var _0x3bee=function(_0x3d5eb1,_0x46d5a5){_0x3d5eb1=_0x3d5eb1-0x0;var _0x3c7844=_0xbee3[_0x3d5eb1];return _0x3c7844;};'use strict';var _=require('lodash');var util=require(_0x3bee('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3bee('0x1'));var fs=require('fs');var Redis=require(_0x3bee('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3bee('0x3'));var logger=require(_0x3bee('0x4'))(_0x3bee('0x5'));var config=require('../../config/environment');var jayson=require(_0x3bee('0x6'));var client=jayson[_0x3bee('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fdeec,_0x28d912,_0x1b510d){return new BPromise(function(_0x339223,_0xbdd5d5){return client[_0x3bee('0x8')](_0x2fdeec,_0x1b510d)[_0x3bee('0x9')](function(_0x518e2d){logger[_0x3bee('0xa')](_0x3bee('0xb'),_0x28d912,_0x3bee('0xc'));logger[_0x3bee('0xd')](_0x3bee('0xe'),_0x28d912,_0x3bee('0xc'),JSON['stringify'](_0x518e2d));if(_0x518e2d[_0x3bee('0xf')]){if(_0x518e2d['error'][_0x3bee('0x10')]===0x1f4){logger[_0x3bee('0xf')](_0x3bee('0xb'),_0x28d912,_0x518e2d[_0x3bee('0xf')][_0x3bee('0x11')]);return _0xbdd5d5(_0x518e2d[_0x3bee('0xf')][_0x3bee('0x11')]);}logger['error'](_0x3bee('0xb'),_0x28d912,_0x518e2d[_0x3bee('0xf')][_0x3bee('0x11')]);return _0x339223(_0x518e2d[_0x3bee('0xf')][_0x3bee('0x11')]);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x28d912,_0x3bee('0xc'));_0x339223(_0x518e2d['result'][_0x3bee('0x11')]);}})[_0x3bee('0x12')](function(_0x57d42c){logger['error'](_0x3bee('0xb'),_0x28d912,_0x57d42c);_0xbdd5d5(_0x57d42c);});});}exports[_0x3bee('0x13')]=function(_0xfdba3b){var _0x631ff8=this;return new Promise(function(_0x49095a,_0x30a1de){return db[_0x3bee('0x14')][_0x3bee('0x15')]({'raw':_0xfdba3b[_0x3bee('0x16')]?_0xfdba3b[_0x3bee('0x16')][_0x3bee('0x17')]===undefined?!![]:![]:!![],'where':_0xfdba3b[_0x3bee('0x16')]?_0xfdba3b['options']['where']||null:null,'attributes':_0xfdba3b[_0x3bee('0x16')]?_0xfdba3b[_0x3bee('0x16')]['attributes']||null:null,'limit':_0xfdba3b[_0x3bee('0x16')]?_0xfdba3b[_0x3bee('0x16')][_0x3bee('0x18')]||null:null,'include':_0xfdba3b[_0x3bee('0x16')]?_0xfdba3b[_0x3bee('0x16')][_0x3bee('0x19')]?_[_0x3bee('0x1a')](_0xfdba3b['options'][_0x3bee('0x19')],function(_0x1ed0c1){return{'model':db[_0x1ed0c1[_0x3bee('0x1b')]],'as':_0x1ed0c1['as'],'attributes':_0x1ed0c1[_0x3bee('0x1c')],'include':_0x1ed0c1['include']?_[_0x3bee('0x1a')](_0x1ed0c1[_0x3bee('0x19')],function(_0x1e0111){return{'model':db[_0x1e0111['model']],'as':_0x1e0111['as'],'attributes':_0x1e0111['attributes'],'include':_0x1e0111[_0x3bee('0x19')]?_[_0x3bee('0x1a')](_0x1e0111['include'],function(_0x2c0e50){return{'model':db[_0x2c0e50[_0x3bee('0x1b')]],'as':_0x2c0e50['as'],'attributes':_0x2c0e50[_0x3bee('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1984c4){logger[_0x3bee('0xa')](_0x3bee('0x13'),_0xfdba3b);logger['debug'](_0x3bee('0x13'),_0xfdba3b,JSON[_0x3bee('0x1d')](_0x1984c4));_0x49095a(_0x1984c4);})[_0x3bee('0x12')](function(_0x496abd){logger[_0x3bee('0xf')](_0x3bee('0x13'),_0x496abd[_0x3bee('0x11')],_0xfdba3b);_0x30a1de(_0x631ff8[_0x3bee('0xf')](0x1f4,_0x496abd[_0x3bee('0x11')]));});});};exports['ShowVtigerAccount']=function(_0x564e45){var _0x3fbc8c=this;return new Promise(function(_0x1e1529,_0x10bae0){return db[_0x3bee('0x14')]['find']({'raw':_0x564e45['options']?_0x564e45[_0x3bee('0x16')][_0x3bee('0x17')]===undefined?!![]:![]:!![],'where':_0x564e45['options']?_0x564e45['options'][_0x3bee('0x1e')]||null:null,'attributes':_0x564e45[_0x3bee('0x16')]?_0x564e45[_0x3bee('0x16')][_0x3bee('0x1c')]||null:null,'include':_0x564e45[_0x3bee('0x16')]?_0x564e45[_0x3bee('0x16')][_0x3bee('0x19')]?_[_0x3bee('0x1a')](_0x564e45[_0x3bee('0x16')][_0x3bee('0x19')],function(_0x569675){return{'model':db[_0x569675['model']],'as':_0x569675['as'],'attributes':_0x569675[_0x3bee('0x1c')],'include':_0x569675['include']?_['map'](_0x569675[_0x3bee('0x19')],function(_0x1bc332){return{'model':db[_0x1bc332[_0x3bee('0x1b')]],'as':_0x1bc332['as'],'attributes':_0x1bc332[_0x3bee('0x1c')],'include':_0x1bc332[_0x3bee('0x19')]?_[_0x3bee('0x1a')](_0x1bc332[_0x3bee('0x19')],function(_0x10ace5){return{'model':db[_0x10ace5['model']],'as':_0x10ace5['as'],'attributes':_0x10ace5[_0x3bee('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3bee('0x9')](function(_0x5f046a){logger[_0x3bee('0xa')](_0x3bee('0x1f'),_0x564e45);logger[_0x3bee('0xd')](_0x3bee('0x1f'),_0x564e45,JSON[_0x3bee('0x1d')](_0x5f046a));_0x1e1529(_0x5f046a);})['catch'](function(_0x57a895){logger[_0x3bee('0xf')](_0x3bee('0x1f'),_0x57a895[_0x3bee('0x11')],_0x564e45);_0x10bae0(_0x3fbc8c[_0x3bee('0xf')](0x1f4,_0x57a895[_0x3bee('0x11')]));});});};
\ No newline at end of file
index 2c52501..19f6af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x228e=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','connect-timeout'];(function(_0x4a705c,_0x5196c3){var _0x3e1195=function(_0x519726){while(--_0x519726){_0x4a705c['push'](_0x4a705c['shift']());}};_0x3e1195(++_0x5196c3);}(_0x228e,0xee));var _0xe228=function(_0x28ba21,_0x1da2c6){_0x28ba21=_0x28ba21-0x0;var _0x104bfb=_0x228e[_0x28ba21];return _0x104bfb;};'use strict';var multer=require(_0xe228('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe228('0x1'));var express=require('express');var router=express[_0xe228('0x2')]();var fs_extra=require(_0xe228('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xe228('0x4'));var config=require(_0xe228('0x5'));var controller=require(_0xe228('0x6'));router['get']('/',auth[_0xe228('0x7')](),controller[_0xe228('0x8')]);router[_0xe228('0x9')](_0xe228('0xa'),auth['isAuthenticated'](),controller[_0xe228('0xb')]);router[_0xe228('0x9')](_0xe228('0xc'),auth[_0xe228('0x7')](),controller[_0xe228('0xd')]);router[_0xe228('0x9')]('/:id/subjects',auth[_0xe228('0x7')](),controller[_0xe228('0xe')]);router[_0xe228('0x9')](_0xe228('0xf'),auth[_0xe228('0x7')](),controller[_0xe228('0x10')]);router[_0xe228('0x11')]('/',auth[_0xe228('0x7')](),controller[_0xe228('0x12')]);router[_0xe228('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xe228('0x14')]);router[_0xe228('0x15')](_0xe228('0xa'),auth[_0xe228('0x7')](),controller[_0xe228('0x16')]);module[_0xe228('0x17')]=router;
\ No newline at end of file
+var _0xed69=['getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x202605,_0x50b8e8){var _0x4b6217=function(_0x1ec527){while(--_0x1ec527){_0x202605['push'](_0x202605['shift']());}};_0x4b6217(++_0x50b8e8);}(_0xed69,0xda));var _0x9ed6=function(_0x403fc7,_0x32931a){_0x403fc7=_0x403fc7-0x0;var _0x5d0827=_0xed69[_0x403fc7];return _0x5d0827;};'use strict';var multer=require(_0x9ed6('0x0'));var util=require(_0x9ed6('0x1'));var path=require(_0x9ed6('0x2'));var timeout=require(_0x9ed6('0x3'));var express=require(_0x9ed6('0x4'));var router=express['Router']();var fs_extra=require(_0x9ed6('0x5'));var auth=require(_0x9ed6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9ed6('0x7'));var controller=require('./intVtigerConfiguration.controller');router[_0x9ed6('0x8')]('/',auth[_0x9ed6('0x9')](),controller[_0x9ed6('0xa')]);router['get'](_0x9ed6('0xb'),auth[_0x9ed6('0x9')](),controller[_0x9ed6('0xc')]);router[_0x9ed6('0x8')]('/:id/fields',auth[_0x9ed6('0x9')](),controller[_0x9ed6('0xd')]);router[_0x9ed6('0x8')](_0x9ed6('0xe'),auth[_0x9ed6('0x9')](),controller[_0x9ed6('0xf')]);router[_0x9ed6('0x8')](_0x9ed6('0x10'),auth[_0x9ed6('0x9')](),controller[_0x9ed6('0x11')]);router['post']('/',auth[_0x9ed6('0x9')](),controller[_0x9ed6('0x12')]);router[_0x9ed6('0x13')](_0x9ed6('0xb'),auth[_0x9ed6('0x9')](),controller['update']);router['delete'](_0x9ed6('0xb'),auth[_0x9ed6('0x9')](),controller[_0x9ed6('0x14')]);module['exports']=router;
\ No newline at end of file
index e656ce8..669289e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x417f=['exports','STRING','sequelize'];(function(_0x139e41,_0x45e4d5){var _0x74f59e=function(_0x103d57){while(--_0x103d57){_0x139e41['push'](_0x139e41['shift']());}};_0x74f59e(++_0x45e4d5);}(_0x417f,0xb0));var _0xf417=function(_0x51b411,_0x4407f2){_0x51b411=_0x51b411-0x0;var _0x598de8=_0x417f[_0x51b411];return _0x598de8;};'use strict';var Sequelize=require(_0xf417('0x0'));module[_0xf417('0x1')]={'name':{'type':Sequelize[_0xf417('0x2')]},'description':{'type':Sequelize[_0xf417('0x2')]}};
\ No newline at end of file
+var _0x594d=['exports','STRING','sequelize'];(function(_0x10a9ca,_0x55d971){var _0x1a8069=function(_0x4160f2){while(--_0x4160f2){_0x10a9ca['push'](_0x10a9ca['shift']());}};_0x1a8069(++_0x55d971);}(_0x594d,0xbf));var _0xd594=function(_0x2ff531,_0x2154f6){_0x2ff531=_0x2ff531-0x0;var _0x52c686=_0x594d[_0x2ff531];return _0x52c686;};'use strict';var Sequelize=require(_0xd594('0x0'));module[_0xd594('0x1')]={'name':{'type':Sequelize[_0xd594('0x2')]},'description':{'type':Sequelize[_0xd594('0x2')]}};
\ No newline at end of file
index bb149d2..6c76b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae75=['model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VtigerConfiguration','then','includeAll','include','rows','catch','show','params','intersection','find','create','body','update','getFields','findOne','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','json','reject','save','destroy','end','error','stack','name','send','map','rawAttributes','fieldName','key'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xae75,0x1a8));var _0x5ae7=function(_0x385cd7,_0x231f3a){_0x385cd7=_0x385cd7-0x0;var _0x38f683=_0xae75[_0x385cd7];return _0x38f683;};'use strict';var emlformat=require(_0x5ae7('0x0'));var rimraf=require(_0x5ae7('0x1'));var zipdir=require(_0x5ae7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5ae7('0x3'));var moment=require(_0x5ae7('0x4'));var BPromise=require(_0x5ae7('0x5'));var Mustache=require(_0x5ae7('0x6'));var util=require(_0x5ae7('0x7'));var path=require(_0x5ae7('0x8'));var sox=require(_0x5ae7('0x9'));var csv=require('to-csv');var ejs=require(_0x5ae7('0xa'));var fs=require('fs');var fs_extra=require(_0x5ae7('0xb'));var _=require('lodash');var squel=require(_0x5ae7('0xc'));var crypto=require(_0x5ae7('0xd'));var jsforce=require(_0x5ae7('0xe'));var deskjs=require(_0x5ae7('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5ae7('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5ae7('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5ae7('0x12'))(_0x5ae7('0x13'));var utils=require(_0x5ae7('0x14'));var config=require(_0x5ae7('0x15'));var licenseUtil=require(_0x5ae7('0x16'));var db=require(_0x5ae7('0x17'))['db'];function respondWithStatusCode(_0x4acbb1,_0x285147){_0x285147=_0x285147||0xcc;return function(_0x163948){if(_0x163948){return _0x4acbb1[_0x5ae7('0x18')](_0x285147);}return _0x4acbb1[_0x5ae7('0x19')](_0x285147)['end']();};}function respondWithResult(_0x31d340,_0x3a0e00){_0x3a0e00=_0x3a0e00||0xc8;return function(_0x400b21){if(_0x400b21){return _0x31d340['status'](_0x3a0e00)['json'](_0x400b21);}};}function respondWithFilteredResult(_0x5417cd,_0x24958b){return function(_0x3efa0){if(_0x3efa0){var _0x7654cd=typeof _0x24958b['offset']===_0x5ae7('0x1a')&&typeof _0x24958b[_0x5ae7('0x1b')]==='undefined';var _0x1abbb8=_0x3efa0[_0x5ae7('0x1c')];var _0x59e38a=_0x7654cd?0x0:_0x24958b[_0x5ae7('0x1d')];var _0x25f3e1=_0x7654cd?_0x3efa0[_0x5ae7('0x1c')]:_0x24958b['offset']+_0x24958b[_0x5ae7('0x1b')];var _0x4afbdc;if(_0x25f3e1>=_0x1abbb8){_0x25f3e1=_0x1abbb8;_0x4afbdc=0xc8;}else{_0x4afbdc=0xce;}_0x5417cd['status'](_0x4afbdc);return _0x5417cd[_0x5ae7('0x1e')]('Content-Range',_0x59e38a+'-'+_0x25f3e1+'/'+_0x1abbb8)[_0x5ae7('0x1f')](_0x3efa0);}return null;};}function patchUpdates(_0x5be58a){return function(_0x271c53){try{jsonpatch['apply'](_0x271c53,_0x5be58a,!![]);}catch(_0x2ba977){return BPromise[_0x5ae7('0x20')](_0x2ba977);}return _0x271c53[_0x5ae7('0x21')]();};}function saveUpdates(_0x1c4bde,_0x3d46ac){return function(_0x5f18aa){if(_0x5f18aa){return _0x5f18aa['update'](_0x1c4bde)['then'](function(_0x11f46b){return _0x11f46b;});}return null;};}function removeEntity(_0x190090,_0x3e019f){return function(_0x2de289){if(_0x2de289){return _0x2de289[_0x5ae7('0x22')]()['then'](function(){_0x190090['status'](0xcc)[_0x5ae7('0x23')]();});}};}function handleEntityNotFound(_0x61d9a2,_0x56dd69){return function(_0x5d7191){if(!_0x5d7191){_0x61d9a2['sendStatus'](0x194);}return _0x5d7191;};}function handleError(_0x3be1ed,_0x59c177){_0x59c177=_0x59c177||0x1f4;return function(_0x2a0eb4){logger[_0x5ae7('0x24')](_0x2a0eb4[_0x5ae7('0x25')]);if(_0x2a0eb4['name']){delete _0x2a0eb4[_0x5ae7('0x26')];}_0x3be1ed[_0x5ae7('0x19')](_0x59c177)[_0x5ae7('0x27')](_0x2a0eb4);};}exports['index']=function(_0x51fd15,_0x5d9615){var _0x140d95={},_0x17237e={},_0x27ef7c={'count':0x0,'rows':[]};var _0x352f95=_[_0x5ae7('0x28')](db['VtigerConfiguration'][_0x5ae7('0x29')],function(_0x2daf51){return{'name':_0x2daf51[_0x5ae7('0x2a')],'type':_0x2daf51['type'][_0x5ae7('0x2b')]};});_0x17237e[_0x5ae7('0x2c')]=_[_0x5ae7('0x28')](_0x352f95,_0x5ae7('0x26'));_0x17237e['query']=_[_0x5ae7('0x2d')](_0x51fd15[_0x5ae7('0x2e')]);_0x17237e[_0x5ae7('0x2f')]=_['intersection'](_0x17237e['model'],_0x17237e[_0x5ae7('0x2e')]);_0x140d95[_0x5ae7('0x30')]=_['intersection'](_0x17237e[_0x5ae7('0x2c')],qs[_0x5ae7('0x31')](_0x51fd15['query'][_0x5ae7('0x31')]));_0x140d95[_0x5ae7('0x30')]=_0x140d95[_0x5ae7('0x30')][_0x5ae7('0x32')]?_0x140d95[_0x5ae7('0x30')]:_0x17237e[_0x5ae7('0x2c')];if(!_0x51fd15['query'][_0x5ae7('0x33')](_0x5ae7('0x34'))){_0x140d95[_0x5ae7('0x1b')]=qs[_0x5ae7('0x1b')](_0x51fd15['query'][_0x5ae7('0x1b')]);_0x140d95[_0x5ae7('0x1d')]=qs['offset'](_0x51fd15[_0x5ae7('0x2e')][_0x5ae7('0x1d')]);}_0x140d95[_0x5ae7('0x35')]=qs[_0x5ae7('0x36')](_0x51fd15['query'][_0x5ae7('0x36')]);_0x140d95[_0x5ae7('0x37')]=qs['filters'](_[_0x5ae7('0x38')](_0x51fd15[_0x5ae7('0x2e')],_0x17237e['filters']),_0x352f95);if(_0x51fd15[_0x5ae7('0x2e')][_0x5ae7('0x39')]){_0x140d95[_0x5ae7('0x37')]=_[_0x5ae7('0x3a')](_0x140d95[_0x5ae7('0x37')],{'$or':_[_0x5ae7('0x28')](_0x352f95,function(_0x154f65){if(_0x154f65[_0x5ae7('0x3b')]!==_0x5ae7('0x3c')){var _0x184c17={};_0x184c17[_0x154f65[_0x5ae7('0x26')]]={'$like':'%'+_0x51fd15['query'][_0x5ae7('0x39')]+'%'};return _0x184c17;}})});}_0x140d95=_[_0x5ae7('0x3a')]({},_0x140d95,_0x51fd15[_0x5ae7('0x3d')]);var _0x551d78={'where':_0x140d95[_0x5ae7('0x37')]};return db[_0x5ae7('0x3e')]['count'](_0x551d78)[_0x5ae7('0x3f')](function(_0x267dc0){_0x27ef7c[_0x5ae7('0x1c')]=_0x267dc0;if(_0x51fd15['query'][_0x5ae7('0x40')]){_0x140d95[_0x5ae7('0x41')]=[{'all':!![]}];}return db[_0x5ae7('0x3e')]['findAll'](_0x140d95);})['then'](function(_0x455357){_0x27ef7c[_0x5ae7('0x42')]=_0x455357;return _0x27ef7c;})['then'](respondWithFilteredResult(_0x5d9615,_0x140d95))[_0x5ae7('0x43')](handleError(_0x5d9615,null));};exports[_0x5ae7('0x44')]=function(_0x179803,_0x559555){var _0x14460c={'raw':![],'where':{'id':_0x179803[_0x5ae7('0x45')]['id']}},_0x43f9d4={};_0x43f9d4[_0x5ae7('0x2c')]=_[_0x5ae7('0x2d')](db[_0x5ae7('0x3e')][_0x5ae7('0x29')]);_0x43f9d4[_0x5ae7('0x2e')]=_[_0x5ae7('0x2d')](_0x179803['query']);_0x43f9d4[_0x5ae7('0x2f')]=_[_0x5ae7('0x46')](_0x43f9d4[_0x5ae7('0x2c')],_0x43f9d4[_0x5ae7('0x2e')]);_0x14460c[_0x5ae7('0x30')]=_[_0x5ae7('0x46')](_0x43f9d4[_0x5ae7('0x2c')],qs[_0x5ae7('0x31')](_0x179803[_0x5ae7('0x2e')][_0x5ae7('0x31')]));_0x14460c[_0x5ae7('0x30')]=_0x14460c['attributes'][_0x5ae7('0x32')]?_0x14460c['attributes']:_0x43f9d4[_0x5ae7('0x2c')];if(_0x179803[_0x5ae7('0x2e')]['includeAll']){_0x14460c[_0x5ae7('0x41')]=[{'all':!![]}];}_0x14460c=_[_0x5ae7('0x3a')]({},_0x14460c,_0x179803[_0x5ae7('0x3d')]);return db[_0x5ae7('0x3e')][_0x5ae7('0x47')](_0x14460c)['then'](handleEntityNotFound(_0x559555,null))[_0x5ae7('0x3f')](respondWithResult(_0x559555,null))[_0x5ae7('0x43')](handleError(_0x559555,null));};exports[_0x5ae7('0x48')]=function(_0x195bb7,_0x387215){return db[_0x5ae7('0x3e')][_0x5ae7('0x48')](_0x195bb7[_0x5ae7('0x49')],{})[_0x5ae7('0x3f')](respondWithResult(_0x387215,0xc9))['catch'](handleError(_0x387215,null));};exports[_0x5ae7('0x4a')]=function(_0x20b28e,_0x3ce05d){if(_0x20b28e['body']['id']){delete _0x20b28e[_0x5ae7('0x49')]['id'];}return db['VtigerConfiguration'][_0x5ae7('0x47')]({'where':{'id':_0x20b28e['params']['id']}})[_0x5ae7('0x3f')](handleEntityNotFound(_0x3ce05d,null))['then'](saveUpdates(_0x20b28e[_0x5ae7('0x49')],null))[_0x5ae7('0x3f')](respondWithResult(_0x3ce05d,null))[_0x5ae7('0x43')](handleError(_0x3ce05d,null));};exports[_0x5ae7('0x22')]=function(_0x23a842,_0x27d516){return db[_0x5ae7('0x3e')]['find']({'where':{'id':_0x23a842['params']['id']}})[_0x5ae7('0x3f')](handleEntityNotFound(_0x27d516,null))[_0x5ae7('0x3f')](removeEntity(_0x27d516,null))[_0x5ae7('0x43')](handleError(_0x27d516,null));};exports[_0x5ae7('0x4b')]=function(_0x13be99,_0x5c82a4,_0x55a259){var _0x883099={};var _0xa7a364={};var _0x3bb819;var _0x1c6bbf;return db[_0x5ae7('0x3e')][_0x5ae7('0x4c')]({'where':{'id':_0x13be99[_0x5ae7('0x45')]['id']}})[_0x5ae7('0x3f')](handleEntityNotFound(_0x5c82a4,null))[_0x5ae7('0x3f')](function(_0x4419e2){if(_0x4419e2){_0x3bb819=_0x4419e2;_0xa7a364['model']=_[_0x5ae7('0x2d')](db['VtigerField'][_0x5ae7('0x29')]);_0xa7a364[_0x5ae7('0x2e')]=_[_0x5ae7('0x2d')](_0x13be99[_0x5ae7('0x2e')]);_0xa7a364[_0x5ae7('0x2f')]=_['intersection'](_0xa7a364[_0x5ae7('0x2c')],_0xa7a364[_0x5ae7('0x2e')]);_0x883099[_0x5ae7('0x30')]=_[_0x5ae7('0x46')](_0xa7a364[_0x5ae7('0x2c')],qs['fields'](_0x13be99[_0x5ae7('0x2e')][_0x5ae7('0x31')]));_0x883099[_0x5ae7('0x30')]=_0x883099[_0x5ae7('0x30')]['length']?_0x883099[_0x5ae7('0x30')]:_0xa7a364[_0x5ae7('0x2c')];_0x883099[_0x5ae7('0x35')]=qs[_0x5ae7('0x36')](_0x13be99['query'][_0x5ae7('0x36')]);_0x883099[_0x5ae7('0x37')]=qs['filters'](_['pick'](_0x13be99[_0x5ae7('0x2e')],_0xa7a364[_0x5ae7('0x2f')]));if(_0x13be99[_0x5ae7('0x2e')]['filter']){_0x883099[_0x5ae7('0x37')]=_[_0x5ae7('0x3a')](_0x883099['where'],{'$or':_[_0x5ae7('0x28')](_0x883099[_0x5ae7('0x30')],function(_0x3b0a1a){var _0x9f3a14={};_0x9f3a14[_0x3b0a1a]={'$like':'%'+_0x13be99[_0x5ae7('0x2e')]['filter']+'%'};return _0x9f3a14;})});}_0x883099=_[_0x5ae7('0x3a')]({},_0x883099,_0x13be99[_0x5ae7('0x3d')]);return _0x3bb819[_0x5ae7('0x4b')](_0x883099);}})['then'](function(_0x1ac15e){if(_0x1ac15e){_0x1c6bbf=_0x1ac15e[_0x5ae7('0x32')];if(!_0x13be99[_0x5ae7('0x2e')][_0x5ae7('0x33')](_0x5ae7('0x34'))){_0x883099[_0x5ae7('0x1b')]=qs[_0x5ae7('0x1b')](_0x13be99[_0x5ae7('0x2e')]['limit']);_0x883099['offset']=qs[_0x5ae7('0x1d')](_0x13be99[_0x5ae7('0x2e')]['offset']);}return _0x3bb819[_0x5ae7('0x4b')](_0x883099);}})[_0x5ae7('0x3f')](function(_0x12d5af){if(_0x12d5af){return _0x12d5af?{'count':_0x1c6bbf,'rows':_0x12d5af}:null;}})[_0x5ae7('0x3f')](respondWithResult(_0x5c82a4,null))['catch'](handleError(_0x5c82a4,null));};exports['getSubjects']=function(_0x5ca42c,_0x34dee9,_0x2b1f92){var _0xa1f3a1={};var _0x12a87a={};var _0x5c264b;var _0x993ad;return db[_0x5ae7('0x3e')][_0x5ae7('0x4c')]({'where':{'id':_0x5ca42c[_0x5ae7('0x45')]['id']}})[_0x5ae7('0x3f')](handleEntityNotFound(_0x34dee9,null))['then'](function(_0x1167d0){if(_0x1167d0){_0x5c264b=_0x1167d0;_0x12a87a['model']=_['keys'](db['VtigerField'][_0x5ae7('0x29')]);_0x12a87a[_0x5ae7('0x2e')]=_[_0x5ae7('0x2d')](_0x5ca42c[_0x5ae7('0x2e')]);_0x12a87a[_0x5ae7('0x2f')]=_[_0x5ae7('0x46')](_0x12a87a[_0x5ae7('0x2c')],_0x12a87a['query']);_0xa1f3a1[_0x5ae7('0x30')]=_[_0x5ae7('0x46')](_0x12a87a[_0x5ae7('0x2c')],qs[_0x5ae7('0x31')](_0x5ca42c['query']['fields']));_0xa1f3a1[_0x5ae7('0x30')]=_0xa1f3a1[_0x5ae7('0x30')][_0x5ae7('0x32')]?_0xa1f3a1['attributes']:_0x12a87a['model'];_0xa1f3a1['order']=qs[_0x5ae7('0x36')](_0x5ca42c[_0x5ae7('0x2e')]['sort']);_0xa1f3a1[_0x5ae7('0x37')]=qs[_0x5ae7('0x2f')](_['pick'](_0x5ca42c['query'],_0x12a87a['filters']));if(_0x5ca42c[_0x5ae7('0x2e')][_0x5ae7('0x39')]){_0xa1f3a1[_0x5ae7('0x37')]=_[_0x5ae7('0x3a')](_0xa1f3a1[_0x5ae7('0x37')],{'$or':_[_0x5ae7('0x28')](_0xa1f3a1[_0x5ae7('0x30')],function(_0x57cce3){var _0x3741ca={};_0x3741ca[_0x57cce3]={'$like':'%'+_0x5ca42c['query'][_0x5ae7('0x39')]+'%'};return _0x3741ca;})});}_0xa1f3a1=_[_0x5ae7('0x3a')]({},_0xa1f3a1,_0x5ca42c[_0x5ae7('0x3d')]);return _0x5c264b['getSubjects'](_0xa1f3a1);}})[_0x5ae7('0x3f')](function(_0x46ab54){if(_0x46ab54){_0x993ad=_0x46ab54[_0x5ae7('0x32')];if(!_0x5ca42c['query'][_0x5ae7('0x33')]('nolimit')){_0xa1f3a1[_0x5ae7('0x1b')]=qs[_0x5ae7('0x1b')](_0x5ca42c[_0x5ae7('0x2e')][_0x5ae7('0x1b')]);_0xa1f3a1[_0x5ae7('0x1d')]=qs['offset'](_0x5ca42c['query'][_0x5ae7('0x1d')]);}return _0x5c264b['getSubjects'](_0xa1f3a1);}})[_0x5ae7('0x3f')](function(_0x4f0b4b){if(_0x4f0b4b){return _0x4f0b4b?{'count':_0x993ad,'rows':_0x4f0b4b}:null;}})[_0x5ae7('0x3f')](respondWithResult(_0x34dee9,null))[_0x5ae7('0x43')](handleError(_0x34dee9,null));};exports[_0x5ae7('0x4d')]=function(_0x41817b,_0xd870fb,_0x57913f){var _0x404ac6={};var _0x47da52={};var _0x5dcd94;var _0x1d3203;return db[_0x5ae7('0x3e')][_0x5ae7('0x4c')]({'where':{'id':_0x41817b[_0x5ae7('0x45')]['id']}})['then'](handleEntityNotFound(_0xd870fb,null))['then'](function(_0x3beafa){if(_0x3beafa){_0x5dcd94=_0x3beafa;_0x47da52[_0x5ae7('0x2c')]=_[_0x5ae7('0x2d')](db['VtigerField'][_0x5ae7('0x29')]);_0x47da52[_0x5ae7('0x2e')]=_[_0x5ae7('0x2d')](_0x41817b[_0x5ae7('0x2e')]);_0x47da52['filters']=_[_0x5ae7('0x46')](_0x47da52[_0x5ae7('0x2c')],_0x47da52[_0x5ae7('0x2e')]);_0x404ac6[_0x5ae7('0x30')]=_[_0x5ae7('0x46')](_0x47da52['model'],qs[_0x5ae7('0x31')](_0x41817b[_0x5ae7('0x2e')][_0x5ae7('0x31')]));_0x404ac6[_0x5ae7('0x30')]=_0x404ac6[_0x5ae7('0x30')][_0x5ae7('0x32')]?_0x404ac6[_0x5ae7('0x30')]:_0x47da52[_0x5ae7('0x2c')];_0x404ac6[_0x5ae7('0x35')]=qs[_0x5ae7('0x36')](_0x41817b[_0x5ae7('0x2e')][_0x5ae7('0x36')]);_0x404ac6['where']=qs[_0x5ae7('0x2f')](_[_0x5ae7('0x38')](_0x41817b[_0x5ae7('0x2e')],_0x47da52[_0x5ae7('0x2f')]));if(_0x41817b[_0x5ae7('0x2e')][_0x5ae7('0x39')]){_0x404ac6[_0x5ae7('0x37')]=_[_0x5ae7('0x3a')](_0x404ac6[_0x5ae7('0x37')],{'$or':_[_0x5ae7('0x28')](_0x404ac6[_0x5ae7('0x30')],function(_0x2c22c2){var _0x248980={};_0x248980[_0x2c22c2]={'$like':'%'+_0x41817b[_0x5ae7('0x2e')][_0x5ae7('0x39')]+'%'};return _0x248980;})});}_0x404ac6=_['merge']({},_0x404ac6,_0x41817b[_0x5ae7('0x3d')]);return _0x5dcd94[_0x5ae7('0x4d')](_0x404ac6);}})['then'](function(_0x49a8bc){if(_0x49a8bc){_0x1d3203=_0x49a8bc[_0x5ae7('0x32')];if(!_0x41817b[_0x5ae7('0x2e')][_0x5ae7('0x33')](_0x5ae7('0x34'))){_0x404ac6['limit']=qs[_0x5ae7('0x1b')](_0x41817b[_0x5ae7('0x2e')][_0x5ae7('0x1b')]);_0x404ac6[_0x5ae7('0x1d')]=qs['offset'](_0x41817b[_0x5ae7('0x2e')]['offset']);}return _0x5dcd94[_0x5ae7('0x4d')](_0x404ac6);}})['then'](function(_0x4c09fb){if(_0x4c09fb){return _0x4c09fb?{'count':_0x1d3203,'rows':_0x4c09fb}:null;}})[_0x5ae7('0x3f')](respondWithResult(_0xd870fb,null))['catch'](handleError(_0xd870fb,null));};
\ No newline at end of file
+var _0x62ed=['offset','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','rows','catch','params','options','find','create','body','getFields','findOne','order','hasOwnProperty','getSubjects','VtigerField','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','status','end','limit','count','Content-Range','json','apply','reject','then','destroy','sendStatus','error','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','nolimit'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x62ed,0x18e));var _0xd62e=function(_0x1ae119,_0x20aea8){_0x1ae119=_0x1ae119-0x0;var _0x37fc8e=_0x62ed[_0x1ae119];return _0x37fc8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd62e('0x0'));var zipdir=require(_0xd62e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd62e('0x2'));var moment=require(_0xd62e('0x3'));var BPromise=require(_0xd62e('0x4'));var Mustache=require(_0xd62e('0x5'));var util=require(_0xd62e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xd62e('0x7'));var ejs=require(_0xd62e('0x8'));var fs=require('fs');var fs_extra=require(_0xd62e('0x9'));var _=require(_0xd62e('0xa'));var squel=require(_0xd62e('0xb'));var crypto=require(_0xd62e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd62e('0xd'));var toCsv=require(_0xd62e('0x7'));var querystring=require(_0xd62e('0xe'));var Papa=require('papaparse');var Redis=require(_0xd62e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd62e('0x10'));var as=require(_0xd62e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd62e('0x12'))(_0xd62e('0x13'));var utils=require('../../config/utils');var config=require(_0xd62e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd62e('0x15'))['db'];function respondWithStatusCode(_0x369fd4,_0x4c4b0d){_0x4c4b0d=_0x4c4b0d||0xcc;return function(_0x6a6125){if(_0x6a6125){return _0x369fd4['sendStatus'](_0x4c4b0d);}return _0x369fd4[_0xd62e('0x16')](_0x4c4b0d)[_0xd62e('0x17')]();};}function respondWithResult(_0x5bf8fd,_0x4b3d23){_0x4b3d23=_0x4b3d23||0xc8;return function(_0x185b89){if(_0x185b89){return _0x5bf8fd['status'](_0x4b3d23)['json'](_0x185b89);}};}function respondWithFilteredResult(_0x435067,_0xc3f675){return function(_0x26ba16){if(_0x26ba16){var _0x4c7eb9=typeof _0xc3f675['offset']==='undefined'&&typeof _0xc3f675[_0xd62e('0x18')]==='undefined';var _0x182321=_0x26ba16[_0xd62e('0x19')];var _0x237915=_0x4c7eb9?0x0:_0xc3f675['offset'];var _0x4bdb58=_0x4c7eb9?_0x26ba16[_0xd62e('0x19')]:_0xc3f675['offset']+_0xc3f675[_0xd62e('0x18')];var _0x288f16;if(_0x4bdb58>=_0x182321){_0x4bdb58=_0x182321;_0x288f16=0xc8;}else{_0x288f16=0xce;}_0x435067[_0xd62e('0x16')](_0x288f16);return _0x435067['set'](_0xd62e('0x1a'),_0x237915+'-'+_0x4bdb58+'/'+_0x182321)[_0xd62e('0x1b')](_0x26ba16);}return null;};}function patchUpdates(_0x98fdf6){return function(_0x3de276){try{jsonpatch[_0xd62e('0x1c')](_0x3de276,_0x98fdf6,!![]);}catch(_0x3332c8){return BPromise[_0xd62e('0x1d')](_0x3332c8);}return _0x3de276['save']();};}function saveUpdates(_0x4e836b,_0x165c98){return function(_0x346654){if(_0x346654){return _0x346654['update'](_0x4e836b)[_0xd62e('0x1e')](function(_0x1a80f7){return _0x1a80f7;});}return null;};}function removeEntity(_0x3f7952,_0x11385d){return function(_0x9a4f9e){if(_0x9a4f9e){return _0x9a4f9e[_0xd62e('0x1f')]()[_0xd62e('0x1e')](function(){_0x3f7952['status'](0xcc)[_0xd62e('0x17')]();});}};}function handleEntityNotFound(_0x271a73,_0x29cb1e){return function(_0xe41e15){if(!_0xe41e15){_0x271a73[_0xd62e('0x20')](0x194);}return _0xe41e15;};}function handleError(_0x6e6f33,_0x6e6d48){_0x6e6d48=_0x6e6d48||0x1f4;return function(_0x381a51){logger[_0xd62e('0x21')](_0x381a51[_0xd62e('0x22')]);if(_0x381a51[_0xd62e('0x23')]){delete _0x381a51['name'];}_0x6e6f33[_0xd62e('0x16')](_0x6e6d48)[_0xd62e('0x24')](_0x381a51);};}exports[_0xd62e('0x25')]=function(_0x564bc1,_0x2ffb0c){var _0x5886b1={},_0x5c52d6={},_0x54a5d7={'count':0x0,'rows':[]};var _0x2eb6a4=_[_0xd62e('0x26')](db[_0xd62e('0x27')][_0xd62e('0x28')],function(_0xb20e42){return{'name':_0xb20e42[_0xd62e('0x29')],'type':_0xb20e42[_0xd62e('0x2a')][_0xd62e('0x2b')]};});_0x5c52d6['model']=_[_0xd62e('0x26')](_0x2eb6a4,_0xd62e('0x23'));_0x5c52d6[_0xd62e('0x2c')]=_[_0xd62e('0x2d')](_0x564bc1[_0xd62e('0x2c')]);_0x5c52d6['filters']=_[_0xd62e('0x2e')](_0x5c52d6['model'],_0x5c52d6[_0xd62e('0x2c')]);_0x5886b1['attributes']=_[_0xd62e('0x2e')](_0x5c52d6[_0xd62e('0x2f')],qs[_0xd62e('0x30')](_0x564bc1['query']['fields']));_0x5886b1[_0xd62e('0x31')]=_0x5886b1[_0xd62e('0x31')][_0xd62e('0x32')]?_0x5886b1[_0xd62e('0x31')]:_0x5c52d6['model'];if(!_0x564bc1[_0xd62e('0x2c')]['hasOwnProperty'](_0xd62e('0x33'))){_0x5886b1[_0xd62e('0x18')]=qs[_0xd62e('0x18')](_0x564bc1[_0xd62e('0x2c')]['limit']);_0x5886b1[_0xd62e('0x34')]=qs[_0xd62e('0x34')](_0x564bc1[_0xd62e('0x2c')]['offset']);}_0x5886b1['order']=qs[_0xd62e('0x35')](_0x564bc1[_0xd62e('0x2c')][_0xd62e('0x35')]);_0x5886b1[_0xd62e('0x36')]=qs['filters'](_[_0xd62e('0x37')](_0x564bc1[_0xd62e('0x2c')],_0x5c52d6[_0xd62e('0x38')]),_0x2eb6a4);if(_0x564bc1['query'][_0xd62e('0x39')]){_0x5886b1[_0xd62e('0x36')]=_[_0xd62e('0x3a')](_0x5886b1['where'],{'$or':_['map'](_0x2eb6a4,function(_0x1053cf){if(_0x1053cf[_0xd62e('0x2a')]!==_0xd62e('0x3b')){var _0x224a02={};_0x224a02[_0x1053cf[_0xd62e('0x23')]]={'$like':'%'+_0x564bc1['query'][_0xd62e('0x39')]+'%'};return _0x224a02;}})});}_0x5886b1=_['merge']({},_0x5886b1,_0x564bc1['options']);var _0x1138db={'where':_0x5886b1[_0xd62e('0x36')]};return db[_0xd62e('0x27')]['count'](_0x1138db)[_0xd62e('0x1e')](function(_0x6e719c){_0x54a5d7[_0xd62e('0x19')]=_0x6e719c;if(_0x564bc1['query'][_0xd62e('0x3c')]){_0x5886b1['include']=[{'all':!![]}];}return db[_0xd62e('0x27')]['findAll'](_0x5886b1);})[_0xd62e('0x1e')](function(_0x32d1c1){_0x54a5d7[_0xd62e('0x3d')]=_0x32d1c1;return _0x54a5d7;})['then'](respondWithFilteredResult(_0x2ffb0c,_0x5886b1))[_0xd62e('0x3e')](handleError(_0x2ffb0c,null));};exports['show']=function(_0x51aefb,_0x29dd4a){var _0x4ce8b6={'raw':![],'where':{'id':_0x51aefb[_0xd62e('0x3f')]['id']}},_0xb9c502={};_0xb9c502[_0xd62e('0x2f')]=_[_0xd62e('0x2d')](db[_0xd62e('0x27')][_0xd62e('0x28')]);_0xb9c502[_0xd62e('0x2c')]=_[_0xd62e('0x2d')](_0x51aefb[_0xd62e('0x2c')]);_0xb9c502[_0xd62e('0x38')]=_[_0xd62e('0x2e')](_0xb9c502[_0xd62e('0x2f')],_0xb9c502['query']);_0x4ce8b6[_0xd62e('0x31')]=_[_0xd62e('0x2e')](_0xb9c502[_0xd62e('0x2f')],qs['fields'](_0x51aefb['query']['fields']));_0x4ce8b6['attributes']=_0x4ce8b6[_0xd62e('0x31')][_0xd62e('0x32')]?_0x4ce8b6[_0xd62e('0x31')]:_0xb9c502[_0xd62e('0x2f')];if(_0x51aefb[_0xd62e('0x2c')][_0xd62e('0x3c')]){_0x4ce8b6['include']=[{'all':!![]}];}_0x4ce8b6=_['merge']({},_0x4ce8b6,_0x51aefb[_0xd62e('0x40')]);return db[_0xd62e('0x27')][_0xd62e('0x41')](_0x4ce8b6)[_0xd62e('0x1e')](handleEntityNotFound(_0x29dd4a,null))[_0xd62e('0x1e')](respondWithResult(_0x29dd4a,null))[_0xd62e('0x3e')](handleError(_0x29dd4a,null));};exports[_0xd62e('0x42')]=function(_0x5e57bc,_0x59bee3){return db[_0xd62e('0x27')][_0xd62e('0x42')](_0x5e57bc[_0xd62e('0x43')],{})[_0xd62e('0x1e')](respondWithResult(_0x59bee3,0xc9))['catch'](handleError(_0x59bee3,null));};exports['update']=function(_0x10919d,_0x2bfe30){if(_0x10919d['body']['id']){delete _0x10919d[_0xd62e('0x43')]['id'];}return db['VtigerConfiguration'][_0xd62e('0x41')]({'where':{'id':_0x10919d[_0xd62e('0x3f')]['id']}})[_0xd62e('0x1e')](handleEntityNotFound(_0x2bfe30,null))[_0xd62e('0x1e')](saveUpdates(_0x10919d[_0xd62e('0x43')],null))[_0xd62e('0x1e')](respondWithResult(_0x2bfe30,null))[_0xd62e('0x3e')](handleError(_0x2bfe30,null));};exports[_0xd62e('0x1f')]=function(_0x341757,_0x8cc6e1){return db['VtigerConfiguration'][_0xd62e('0x41')]({'where':{'id':_0x341757[_0xd62e('0x3f')]['id']}})[_0xd62e('0x1e')](handleEntityNotFound(_0x8cc6e1,null))['then'](removeEntity(_0x8cc6e1,null))[_0xd62e('0x3e')](handleError(_0x8cc6e1,null));};exports[_0xd62e('0x44')]=function(_0x1ea856,_0x31933e,_0x4c8288){var _0x4b0ee9={};var _0x5ab1cc={};var _0x2cf74c;var _0x188368;return db[_0xd62e('0x27')][_0xd62e('0x45')]({'where':{'id':_0x1ea856['params']['id']}})[_0xd62e('0x1e')](handleEntityNotFound(_0x31933e,null))[_0xd62e('0x1e')](function(_0x4e61ba){if(_0x4e61ba){_0x2cf74c=_0x4e61ba;_0x5ab1cc[_0xd62e('0x2f')]=_[_0xd62e('0x2d')](db['VtigerField'][_0xd62e('0x28')]);_0x5ab1cc['query']=_[_0xd62e('0x2d')](_0x1ea856[_0xd62e('0x2c')]);_0x5ab1cc[_0xd62e('0x38')]=_[_0xd62e('0x2e')](_0x5ab1cc[_0xd62e('0x2f')],_0x5ab1cc[_0xd62e('0x2c')]);_0x4b0ee9[_0xd62e('0x31')]=_['intersection'](_0x5ab1cc[_0xd62e('0x2f')],qs['fields'](_0x1ea856['query'][_0xd62e('0x30')]));_0x4b0ee9[_0xd62e('0x31')]=_0x4b0ee9[_0xd62e('0x31')][_0xd62e('0x32')]?_0x4b0ee9['attributes']:_0x5ab1cc[_0xd62e('0x2f')];_0x4b0ee9[_0xd62e('0x46')]=qs[_0xd62e('0x35')](_0x1ea856[_0xd62e('0x2c')][_0xd62e('0x35')]);_0x4b0ee9[_0xd62e('0x36')]=qs[_0xd62e('0x38')](_[_0xd62e('0x37')](_0x1ea856['query'],_0x5ab1cc['filters']));if(_0x1ea856[_0xd62e('0x2c')][_0xd62e('0x39')]){_0x4b0ee9[_0xd62e('0x36')]=_[_0xd62e('0x3a')](_0x4b0ee9['where'],{'$or':_[_0xd62e('0x26')](_0x4b0ee9[_0xd62e('0x31')],function(_0xf92505){var _0x428e59={};_0x428e59[_0xf92505]={'$like':'%'+_0x1ea856[_0xd62e('0x2c')][_0xd62e('0x39')]+'%'};return _0x428e59;})});}_0x4b0ee9=_[_0xd62e('0x3a')]({},_0x4b0ee9,_0x1ea856[_0xd62e('0x40')]);return _0x2cf74c[_0xd62e('0x44')](_0x4b0ee9);}})[_0xd62e('0x1e')](function(_0x4d5da7){if(_0x4d5da7){_0x188368=_0x4d5da7[_0xd62e('0x32')];if(!_0x1ea856[_0xd62e('0x2c')][_0xd62e('0x47')](_0xd62e('0x33'))){_0x4b0ee9['limit']=qs[_0xd62e('0x18')](_0x1ea856['query'][_0xd62e('0x18')]);_0x4b0ee9[_0xd62e('0x34')]=qs['offset'](_0x1ea856[_0xd62e('0x2c')]['offset']);}return _0x2cf74c['getFields'](_0x4b0ee9);}})['then'](function(_0x1c5ba8){if(_0x1c5ba8){return _0x1c5ba8?{'count':_0x188368,'rows':_0x1c5ba8}:null;}})[_0xd62e('0x1e')](respondWithResult(_0x31933e,null))[_0xd62e('0x3e')](handleError(_0x31933e,null));};exports[_0xd62e('0x48')]=function(_0x1bd192,_0x5aef21,_0x20f9f8){var _0x43bc31={};var _0x16407d={};var _0x586873;var _0x129779;return db[_0xd62e('0x27')][_0xd62e('0x45')]({'where':{'id':_0x1bd192[_0xd62e('0x3f')]['id']}})[_0xd62e('0x1e')](handleEntityNotFound(_0x5aef21,null))[_0xd62e('0x1e')](function(_0x234be8){if(_0x234be8){_0x586873=_0x234be8;_0x16407d[_0xd62e('0x2f')]=_[_0xd62e('0x2d')](db[_0xd62e('0x49')][_0xd62e('0x28')]);_0x16407d[_0xd62e('0x2c')]=_[_0xd62e('0x2d')](_0x1bd192[_0xd62e('0x2c')]);_0x16407d[_0xd62e('0x38')]=_[_0xd62e('0x2e')](_0x16407d[_0xd62e('0x2f')],_0x16407d['query']);_0x43bc31[_0xd62e('0x31')]=_['intersection'](_0x16407d[_0xd62e('0x2f')],qs[_0xd62e('0x30')](_0x1bd192[_0xd62e('0x2c')][_0xd62e('0x30')]));_0x43bc31[_0xd62e('0x31')]=_0x43bc31['attributes'][_0xd62e('0x32')]?_0x43bc31['attributes']:_0x16407d[_0xd62e('0x2f')];_0x43bc31[_0xd62e('0x46')]=qs[_0xd62e('0x35')](_0x1bd192['query']['sort']);_0x43bc31[_0xd62e('0x36')]=qs[_0xd62e('0x38')](_[_0xd62e('0x37')](_0x1bd192['query'],_0x16407d[_0xd62e('0x38')]));if(_0x1bd192[_0xd62e('0x2c')]['filter']){_0x43bc31[_0xd62e('0x36')]=_[_0xd62e('0x3a')](_0x43bc31[_0xd62e('0x36')],{'$or':_[_0xd62e('0x26')](_0x43bc31['attributes'],function(_0x1e0182){var _0x21a185={};_0x21a185[_0x1e0182]={'$like':'%'+_0x1bd192[_0xd62e('0x2c')]['filter']+'%'};return _0x21a185;})});}_0x43bc31=_[_0xd62e('0x3a')]({},_0x43bc31,_0x1bd192[_0xd62e('0x40')]);return _0x586873[_0xd62e('0x48')](_0x43bc31);}})[_0xd62e('0x1e')](function(_0x2b40af){if(_0x2b40af){_0x129779=_0x2b40af[_0xd62e('0x32')];if(!_0x1bd192[_0xd62e('0x2c')][_0xd62e('0x47')](_0xd62e('0x33'))){_0x43bc31['limit']=qs['limit'](_0x1bd192[_0xd62e('0x2c')][_0xd62e('0x18')]);_0x43bc31[_0xd62e('0x34')]=qs['offset'](_0x1bd192[_0xd62e('0x2c')][_0xd62e('0x34')]);}return _0x586873[_0xd62e('0x48')](_0x43bc31);}})['then'](function(_0x7f566e){if(_0x7f566e){return _0x7f566e?{'count':_0x129779,'rows':_0x7f566e}:null;}})['then'](respondWithResult(_0x5aef21,null))[_0xd62e('0x3e')](handleError(_0x5aef21,null));};exports['getDescriptions']=function(_0x26c735,_0x28089c,_0x32cf62){var _0x5c64d4={};var _0x14de07={};var _0x43f58a;var _0x49738a;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x26c735[_0xd62e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x28089c,null))[_0xd62e('0x1e')](function(_0x10fe42){if(_0x10fe42){_0x43f58a=_0x10fe42;_0x14de07[_0xd62e('0x2f')]=_[_0xd62e('0x2d')](db[_0xd62e('0x49')][_0xd62e('0x28')]);_0x14de07['query']=_[_0xd62e('0x2d')](_0x26c735[_0xd62e('0x2c')]);_0x14de07[_0xd62e('0x38')]=_[_0xd62e('0x2e')](_0x14de07[_0xd62e('0x2f')],_0x14de07[_0xd62e('0x2c')]);_0x5c64d4[_0xd62e('0x31')]=_[_0xd62e('0x2e')](_0x14de07[_0xd62e('0x2f')],qs[_0xd62e('0x30')](_0x26c735['query'][_0xd62e('0x30')]));_0x5c64d4['attributes']=_0x5c64d4[_0xd62e('0x31')]['length']?_0x5c64d4[_0xd62e('0x31')]:_0x14de07['model'];_0x5c64d4[_0xd62e('0x46')]=qs[_0xd62e('0x35')](_0x26c735[_0xd62e('0x2c')][_0xd62e('0x35')]);_0x5c64d4[_0xd62e('0x36')]=qs[_0xd62e('0x38')](_['pick'](_0x26c735[_0xd62e('0x2c')],_0x14de07[_0xd62e('0x38')]));if(_0x26c735[_0xd62e('0x2c')][_0xd62e('0x39')]){_0x5c64d4[_0xd62e('0x36')]=_['merge'](_0x5c64d4[_0xd62e('0x36')],{'$or':_[_0xd62e('0x26')](_0x5c64d4[_0xd62e('0x31')],function(_0x350f70){var _0x13c6f2={};_0x13c6f2[_0x350f70]={'$like':'%'+_0x26c735[_0xd62e('0x2c')][_0xd62e('0x39')]+'%'};return _0x13c6f2;})});}_0x5c64d4=_['merge']({},_0x5c64d4,_0x26c735[_0xd62e('0x40')]);return _0x43f58a[_0xd62e('0x4a')](_0x5c64d4);}})[_0xd62e('0x1e')](function(_0x2712d7){if(_0x2712d7){_0x49738a=_0x2712d7[_0xd62e('0x32')];if(!_0x26c735[_0xd62e('0x2c')][_0xd62e('0x47')](_0xd62e('0x33'))){_0x5c64d4[_0xd62e('0x18')]=qs['limit'](_0x26c735[_0xd62e('0x2c')][_0xd62e('0x18')]);_0x5c64d4[_0xd62e('0x34')]=qs[_0xd62e('0x34')](_0x26c735[_0xd62e('0x2c')]['offset']);}return _0x43f58a['getDescriptions'](_0x5c64d4);}})['then'](function(_0x4dd823){if(_0x4dd823){return _0x4dd823?{'count':_0x49738a,'rows':_0x4dd823}:null;}})[_0xd62e('0x1e')](respondWithResult(_0x28089c,null))[_0xd62e('0x3e')](handleError(_0x28089c,null));};
\ No newline at end of file
index b5e3039..7fa7bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa1=['lodash','util','api','moment','request-promise','rimraf','../../config/environment','exports','define','int_vtiger_configurations'];(function(_0x589aee,_0x140a03){var _0x2f5ed4=function(_0x3d224f){while(--_0x3d224f){_0x589aee['push'](_0x589aee['shift']());}};_0x2f5ed4(++_0x140a03);}(_0xeaa1,0xb4));var _0x1eaa=function(_0x152788,_0x42c161){_0x152788=_0x152788-0x0;var _0x279fb5=_0xeaa1[_0x152788];return _0x279fb5;};'use strict';var _=require(_0x1eaa('0x0'));var util=require(_0x1eaa('0x1'));var logger=require('../../config/logger')(_0x1eaa('0x2'));var moment=require(_0x1eaa('0x3'));var BPromise=require('bluebird');var rp=require(_0x1eaa('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1eaa('0x5'));var config=require(_0x1eaa('0x6'));var attributes=require('./intVtigerConfiguration.attributes');module[_0x1eaa('0x7')]=function(_0x36761e,_0x48872a){return _0x36761e[_0x1eaa('0x8')]('VtigerConfiguration',attributes,{'tableName':_0x1eaa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c45=['int_vtiger_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','VtigerConfiguration'];(function(_0x5ce3c1,_0x2ab59b){var _0x585640=function(_0x44bacb){while(--_0x44bacb){_0x5ce3c1['push'](_0x5ce3c1['shift']());}};_0x585640(++_0x2ab59b);}(_0x7c45,0x15f));var _0x57c4=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x7c45[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0x57c4('0x0'));var util=require(_0x57c4('0x1'));var logger=require(_0x57c4('0x2'))(_0x57c4('0x3'));var moment=require(_0x57c4('0x4'));var BPromise=require(_0x57c4('0x5'));var rp=require(_0x57c4('0x6'));var fs=require('fs');var path=require(_0x57c4('0x7'));var rimraf=require(_0x57c4('0x8'));var config=require(_0x57c4('0x9'));var attributes=require(_0x57c4('0xa'));module[_0x57c4('0xb')]=function(_0x5bd192,_0x231e19){return _0x5bd192['define'](_0x57c4('0xc'),attributes,{'tableName':_0x57c4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 941c22b..b2bf840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ed=['../../config/logger','jayson/promise','client','http','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x4a8d6,_0x1d1239){var _0x3219b9=function(_0x4d8dae){while(--_0x4d8dae){_0x4a8d6['push'](_0x4a8d6['shift']());}};_0x3219b9(++_0x1d1239);}(_0x73ed,0x10a));var _0xd73e=function(_0x2d5075,_0x47e0f1){_0x2d5075=_0x2d5075-0x0;var _0x8fc155=_0x73ed[_0x2d5075];return _0x8fc155;};'use strict';var _=require(_0xd73e('0x0'));var util=require(_0xd73e('0x1'));var moment=require(_0xd73e('0x2'));var BPromise=require(_0xd73e('0x3'));var rs=require(_0xd73e('0x4'));var fs=require('fs');var Redis=require(_0xd73e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd73e('0x6'));var logger=require(_0xd73e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd73e('0x8'));var client=jayson[_0xd73e('0x9')][_0xd73e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56fbba,_0x575eae,_0x2c282f){return new BPromise(function(_0x9acc22,_0x421ab1){return client['request'](_0x56fbba,_0x2c282f)['then'](function(_0x1b9f22){logger[_0xd73e('0xb')](_0xd73e('0xc'),_0x575eae,_0xd73e('0xd'));logger[_0xd73e('0xe')](_0xd73e('0xf'),_0x575eae,_0xd73e('0xd'),JSON[_0xd73e('0x10')](_0x1b9f22));if(_0x1b9f22[_0xd73e('0x11')]){if(_0x1b9f22['error']['code']===0x1f4){logger[_0xd73e('0x11')](_0xd73e('0xc'),_0x575eae,_0x1b9f22[_0xd73e('0x11')]['message']);return _0x421ab1(_0x1b9f22['error'][_0xd73e('0x12')]);}logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x575eae,_0x1b9f22[_0xd73e('0x11')][_0xd73e('0x12')]);return _0x9acc22(_0x1b9f22[_0xd73e('0x11')]['message']);}else{logger['info'](_0xd73e('0xc'),_0x575eae,_0xd73e('0xd'));_0x9acc22(_0x1b9f22[_0xd73e('0x13')]['message']);}})[_0xd73e('0x14')](function(_0x5698c4){logger['error'](_0xd73e('0xc'),_0x575eae,_0x5698c4);_0x421ab1(_0x5698c4);});});}
\ No newline at end of file
+var _0xe738=['request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','VtigerConfiguration,\x20%s,\x20%s'];(function(_0x406919,_0x1fee07){var _0x107120=function(_0x122b6){while(--_0x122b6){_0x406919['push'](_0x406919['shift']());}};_0x107120(++_0x1fee07);}(_0xe738,0x11d));var _0x8e73=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0xe738[_0x29d94e];return _0x106237;};'use strict';var _=require(_0x8e73('0x0'));var util=require('util');var moment=require(_0x8e73('0x1'));var BPromise=require(_0x8e73('0x2'));var rs=require(_0x8e73('0x3'));var fs=require('fs');var Redis=require(_0x8e73('0x4'));var db=require(_0x8e73('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e73('0x6'))(_0x8e73('0x7'));var config=require(_0x8e73('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8e73('0x9')][_0x8e73('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39427c,_0x287c8c,_0x4ae2cf){return new BPromise(function(_0xd201b8,_0x534e46){return client[_0x8e73('0xb')](_0x39427c,_0x4ae2cf)[_0x8e73('0xc')](function(_0xde7524){logger['info'](_0x8e73('0xd'),_0x287c8c,_0x8e73('0xe'));logger[_0x8e73('0xf')](_0x8e73('0x10'),_0x287c8c,_0x8e73('0xe'),JSON[_0x8e73('0x11')](_0xde7524));if(_0xde7524[_0x8e73('0x12')]){if(_0xde7524[_0x8e73('0x12')][_0x8e73('0x13')]===0x1f4){logger[_0x8e73('0x12')](_0x8e73('0xd'),_0x287c8c,_0xde7524[_0x8e73('0x12')]['message']);return _0x534e46(_0xde7524[_0x8e73('0x12')]['message']);}logger[_0x8e73('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x287c8c,_0xde7524[_0x8e73('0x12')][_0x8e73('0x14')]);return _0xd201b8(_0xde7524[_0x8e73('0x12')][_0x8e73('0x14')]);}else{logger[_0x8e73('0x15')](_0x8e73('0xd'),_0x287c8c,_0x8e73('0xe'));_0xd201b8(_0xde7524[_0x8e73('0x16')][_0x8e73('0x14')]);}})['catch'](function(_0x5c6ff4){logger[_0x8e73('0x12')](_0x8e73('0xd'),_0x287c8c,_0x5c6ff4);_0x534e46(_0x5c6ff4);});});}
\ No newline at end of file
index fb9f57d..45fe6a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c3a=['get','isAuthenticated','index','create','put','/:id','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4ed443,_0x435c11){var _0x34d239=function(_0x498ea6){while(--_0x498ea6){_0x4ed443['push'](_0x4ed443['shift']());}};_0x34d239(++_0x435c11);}(_0x7c3a,0x1d8));var _0xa7c3=function(_0x4dab14,_0x164ea0){_0x4dab14=_0x4dab14-0x0;var _0xf41aa=_0x7c3a[_0x4dab14];return _0xf41aa;};'use strict';var multer=require('multer');var util=require(_0xa7c3('0x0'));var path=require(_0xa7c3('0x1'));var timeout=require(_0xa7c3('0x2'));var express=require(_0xa7c3('0x3'));var router=express[_0xa7c3('0x4')]();var fs_extra=require(_0xa7c3('0x5'));var auth=require(_0xa7c3('0x6'));var interaction=require(_0xa7c3('0x7'));var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router[_0xa7c3('0x8')]('/',auth[_0xa7c3('0x9')](),controller[_0xa7c3('0xa')]);router[_0xa7c3('0x8')]('/:id',auth[_0xa7c3('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xa7c3('0xb')]);router[_0xa7c3('0xc')](_0xa7c3('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xa7c3('0xe')]('/:id',auth[_0xa7c3('0x9')](),controller['destroy']);module[_0xa7c3('0xf')]=router;
\ No newline at end of file
+var _0xe05a=['express','Router','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','show','create','put','update','/:id','destroy','connect-timeout'];(function(_0x555ebb,_0x4b1b68){var _0x3c0a4a=function(_0x312e2f){while(--_0x312e2f){_0x555ebb['push'](_0x555ebb['shift']());}};_0x3c0a4a(++_0x4b1b68);}(_0xe05a,0x6f));var _0xae05=function(_0xfa33f5,_0x5214b1){_0xfa33f5=_0xfa33f5-0x0;var _0x4972e7=_0xe05a[_0xfa33f5];return _0x4972e7;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xae05('0x0'));var express=require(_0xae05('0x1'));var router=express[_0xae05('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xae05('0x3'));var config=require(_0xae05('0x4'));var controller=require(_0xae05('0x5'));router[_0xae05('0x6')]('/',auth[_0xae05('0x7')](),controller['index']);router[_0xae05('0x6')]('/:id',auth[_0xae05('0x7')](),controller[_0xae05('0x8')]);router['post']('/',auth[_0xae05('0x7')](),controller[_0xae05('0x9')]);router[_0xae05('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xae05('0xb')]);router['delete'](_0xae05('0xc'),auth[_0xae05('0x7')](),controller[_0xae05('0xd')]);module['exports']=router;
\ No newline at end of file
index 3decf0b..5ec0db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57b6=['STRING','customVariable','BOOLEAN','exports','ENUM','string','variable','keyValue'];(function(_0x540ada,_0x519ca0){var _0xf38ce5=function(_0x10926f){while(--_0x10926f){_0x540ada['push'](_0x540ada['shift']());}};_0xf38ce5(++_0x519ca0);}(_0x57b6,0x8b));var _0x657b=function(_0x126660,_0x38b10f){_0x126660=_0x126660-0x0;var _0x304e68=_0x57b6[_0x126660];return _0x304e68;};'use strict';var Sequelize=require('sequelize');module[_0x657b('0x0')]={'type':{'type':Sequelize[_0x657b('0x1')](_0x657b('0x2'),_0x657b('0x3'),'customVariable',_0x657b('0x4'),'picklist'),'defaultValue':_0x657b('0x2')},'content':{'type':Sequelize[_0x657b('0x5')]},'key':{'type':Sequelize[_0x657b('0x5')]},'keyType':{'type':Sequelize[_0x657b('0x1')](_0x657b('0x2'),'variable',_0x657b('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x657b('0x5')]},'customField':{'type':Sequelize[_0x657b('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0948=['sequelize','exports','ENUM','customVariable','keyValue','picklist','STRING','string','variable','BOOLEAN'];(function(_0x58f0a3,_0x1cdd63){var _0x14d4ec=function(_0x55bb4b){while(--_0x55bb4b){_0x58f0a3['push'](_0x58f0a3['shift']());}};_0x14d4ec(++_0x1cdd63);}(_0x0948,0xdc));var _0x8094=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x0948[_0x1a0daa];return _0x1dbe15;};'use strict';var Sequelize=require(_0x8094('0x0'));module[_0x8094('0x1')]={'type':{'type':Sequelize[_0x8094('0x2')]('string','variable',_0x8094('0x3'),_0x8094('0x4'),_0x8094('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8094('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x8094('0x2')](_0x8094('0x7'),_0x8094('0x8'),'customVariable')},'keyContent':{'type':Sequelize[_0x8094('0x6')]},'idField':{'type':Sequelize[_0x8094('0x6')]},'nameField':{'type':Sequelize[_0x8094('0x6')]},'customField':{'type':Sequelize[_0x8094('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8094('0x6')]}};
\ No newline at end of file
index 7ac3a7b..346842d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc81b=['../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','VtigerField','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','catch','show','params','keys','includeAll','find','create','body','eml-format','zip-dir','request-promise','bluebird','mustache','path','to-csv','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0xc81b,0x1d7));var _0xbc81=function(_0x494c48,_0x53a8b9){_0x494c48=_0x494c48-0x0;var _0x210926=_0xc81b[_0x494c48];return _0x210926;};'use strict';var emlformat=require(_0xbc81('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbc81('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbc81('0x2'));var moment=require('moment');var BPromise=require(_0xbc81('0x3'));var Mustache=require(_0xbc81('0x4'));var util=require('util');var path=require(_0xbc81('0x5'));var sox=require('sox');var csv=require(_0xbc81('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbc81('0x7'));var squel=require('squel');var crypto=require(_0xbc81('0x8'));var jsforce=require(_0xbc81('0x9'));var deskjs=require(_0xbc81('0xa'));var toCsv=require(_0xbc81('0x6'));var querystring=require(_0xbc81('0xb'));var Papa=require('papaparse');var Redis=require(_0xbc81('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbc81('0xd'));var hardwareService=require(_0xbc81('0xe'));var logger=require('../../config/logger')(_0xbc81('0xf'));var utils=require(_0xbc81('0x10'));var config=require(_0xbc81('0x11'));var licenseUtil=require(_0xbc81('0x12'));var db=require(_0xbc81('0x13'))['db'];function respondWithStatusCode(_0x2bb320,_0x97ed1b){_0x97ed1b=_0x97ed1b||0xcc;return function(_0x5dced4){if(_0x5dced4){return _0x2bb320[_0xbc81('0x14')](_0x97ed1b);}return _0x2bb320[_0xbc81('0x15')](_0x97ed1b)[_0xbc81('0x16')]();};}function respondWithResult(_0x11d85f,_0xbb3588){_0xbb3588=_0xbb3588||0xc8;return function(_0x429acd){if(_0x429acd){return _0x11d85f[_0xbc81('0x15')](_0xbb3588)['json'](_0x429acd);}};}function respondWithFilteredResult(_0xc86b6d,_0x5ef6a0){return function(_0x31deca){if(_0x31deca){var _0x507886=typeof _0x5ef6a0[_0xbc81('0x17')]===_0xbc81('0x18')&&typeof _0x5ef6a0[_0xbc81('0x19')]==='undefined';var _0x343da4=_0x31deca[_0xbc81('0x1a')];var _0x523b47=_0x507886?0x0:_0x5ef6a0['offset'];var _0x18c1f0=_0x507886?_0x31deca['count']:_0x5ef6a0[_0xbc81('0x17')]+_0x5ef6a0[_0xbc81('0x19')];var _0x550302;if(_0x18c1f0>=_0x343da4){_0x18c1f0=_0x343da4;_0x550302=0xc8;}else{_0x550302=0xce;}_0xc86b6d[_0xbc81('0x15')](_0x550302);return _0xc86b6d[_0xbc81('0x1b')](_0xbc81('0x1c'),_0x523b47+'-'+_0x18c1f0+'/'+_0x343da4)['json'](_0x31deca);}return null;};}function patchUpdates(_0x513dc9){return function(_0x36bc5b){try{jsonpatch[_0xbc81('0x1d')](_0x36bc5b,_0x513dc9,!![]);}catch(_0xbcef1){return BPromise[_0xbc81('0x1e')](_0xbcef1);}return _0x36bc5b[_0xbc81('0x1f')]();};}function saveUpdates(_0x59a20c,_0x423432){return function(_0x5e71db){if(_0x5e71db){return _0x5e71db[_0xbc81('0x20')](_0x59a20c)[_0xbc81('0x21')](function(_0x3e58ad){return _0x3e58ad;});}return null;};}function removeEntity(_0x25e3b1,_0x14fc5f){return function(_0x1ebb76){if(_0x1ebb76){return _0x1ebb76[_0xbc81('0x22')]()['then'](function(){_0x25e3b1[_0xbc81('0x15')](0xcc)[_0xbc81('0x16')]();});}};}function handleEntityNotFound(_0x55054a,_0x397dc1){return function(_0x475c42){if(!_0x475c42){_0x55054a[_0xbc81('0x14')](0x194);}return _0x475c42;};}function handleError(_0x465179,_0x24f297){_0x24f297=_0x24f297||0x1f4;return function(_0x202190){logger[_0xbc81('0x23')](_0x202190[_0xbc81('0x24')]);if(_0x202190[_0xbc81('0x25')]){delete _0x202190['name'];}_0x465179[_0xbc81('0x15')](_0x24f297)[_0xbc81('0x26')](_0x202190);};}exports['index']=function(_0x17c77a,_0x46d769){var _0x223e4c={},_0xb9aa75={},_0x576b65={'count':0x0,'rows':[]};var _0x8c5d14=_[_0xbc81('0x27')](db[_0xbc81('0x28')][_0xbc81('0x29')],function(_0x2c623f){return{'name':_0x2c623f[_0xbc81('0x2a')],'type':_0x2c623f[_0xbc81('0x2b')][_0xbc81('0x2c')]};});_0xb9aa75[_0xbc81('0x2d')]=_[_0xbc81('0x27')](_0x8c5d14,_0xbc81('0x25'));_0xb9aa75[_0xbc81('0x2e')]=_['keys'](_0x17c77a[_0xbc81('0x2e')]);_0xb9aa75[_0xbc81('0x2f')]=_['intersection'](_0xb9aa75[_0xbc81('0x2d')],_0xb9aa75[_0xbc81('0x2e')]);_0x223e4c[_0xbc81('0x30')]=_[_0xbc81('0x31')](_0xb9aa75[_0xbc81('0x2d')],qs[_0xbc81('0x32')](_0x17c77a[_0xbc81('0x2e')][_0xbc81('0x32')]));_0x223e4c[_0xbc81('0x30')]=_0x223e4c[_0xbc81('0x30')][_0xbc81('0x33')]?_0x223e4c[_0xbc81('0x30')]:_0xb9aa75[_0xbc81('0x2d')];if(!_0x17c77a['query'][_0xbc81('0x34')](_0xbc81('0x35'))){_0x223e4c[_0xbc81('0x19')]=qs[_0xbc81('0x19')](_0x17c77a[_0xbc81('0x2e')][_0xbc81('0x19')]);_0x223e4c['offset']=qs[_0xbc81('0x17')](_0x17c77a[_0xbc81('0x2e')][_0xbc81('0x17')]);}_0x223e4c[_0xbc81('0x36')]=qs[_0xbc81('0x37')](_0x17c77a[_0xbc81('0x2e')][_0xbc81('0x37')]);_0x223e4c[_0xbc81('0x38')]=qs[_0xbc81('0x2f')](_['pick'](_0x17c77a[_0xbc81('0x2e')],_0xb9aa75[_0xbc81('0x2f')]),_0x8c5d14);if(_0x17c77a[_0xbc81('0x2e')][_0xbc81('0x39')]){_0x223e4c['where']=_[_0xbc81('0x3a')](_0x223e4c['where'],{'$or':_[_0xbc81('0x27')](_0x8c5d14,function(_0x5cbeaf){if(_0x5cbeaf[_0xbc81('0x2b')]!==_0xbc81('0x3b')){var _0x45156a={};_0x45156a[_0x5cbeaf['name']]={'$like':'%'+_0x17c77a['query'][_0xbc81('0x39')]+'%'};return _0x45156a;}})});}_0x223e4c=_[_0xbc81('0x3a')]({},_0x223e4c,_0x17c77a[_0xbc81('0x3c')]);var _0x133dad={'where':_0x223e4c[_0xbc81('0x38')]};return db[_0xbc81('0x28')][_0xbc81('0x1a')](_0x133dad)['then'](function(_0x44f263){_0x576b65[_0xbc81('0x1a')]=_0x44f263;if(_0x17c77a[_0xbc81('0x2e')]['includeAll']){_0x223e4c[_0xbc81('0x3d')]=[{'all':!![]}];}return db[_0xbc81('0x28')]['findAll'](_0x223e4c);})[_0xbc81('0x21')](function(_0x53083b){_0x576b65['rows']=_0x53083b;return _0x576b65;})[_0xbc81('0x21')](respondWithFilteredResult(_0x46d769,_0x223e4c))[_0xbc81('0x3e')](handleError(_0x46d769,null));};exports[_0xbc81('0x3f')]=function(_0x3cb8ad,_0x36e8c4){var _0x200e67={'raw':!![],'where':{'id':_0x3cb8ad[_0xbc81('0x40')]['id']}},_0x27ce23={};_0x27ce23['model']=_[_0xbc81('0x41')](db[_0xbc81('0x28')]['rawAttributes']);_0x27ce23[_0xbc81('0x2e')]=_['keys'](_0x3cb8ad['query']);_0x27ce23[_0xbc81('0x2f')]=_[_0xbc81('0x31')](_0x27ce23[_0xbc81('0x2d')],_0x27ce23[_0xbc81('0x2e')]);_0x200e67[_0xbc81('0x30')]=_[_0xbc81('0x31')](_0x27ce23[_0xbc81('0x2d')],qs[_0xbc81('0x32')](_0x3cb8ad[_0xbc81('0x2e')][_0xbc81('0x32')]));_0x200e67[_0xbc81('0x30')]=_0x200e67[_0xbc81('0x30')][_0xbc81('0x33')]?_0x200e67[_0xbc81('0x30')]:_0x27ce23[_0xbc81('0x2d')];if(_0x3cb8ad[_0xbc81('0x2e')][_0xbc81('0x42')]){_0x200e67[_0xbc81('0x3d')]=[{'all':!![]}];}_0x200e67=_[_0xbc81('0x3a')]({},_0x200e67,_0x3cb8ad['options']);return db[_0xbc81('0x28')][_0xbc81('0x43')](_0x200e67)['then'](handleEntityNotFound(_0x36e8c4,null))[_0xbc81('0x21')](respondWithResult(_0x36e8c4,null))[_0xbc81('0x3e')](handleError(_0x36e8c4,null));};exports['create']=function(_0x972697,_0x15fa33){return db[_0xbc81('0x28')][_0xbc81('0x44')](_0x972697[_0xbc81('0x45')],{})[_0xbc81('0x21')](respondWithResult(_0x15fa33,0xc9))['catch'](handleError(_0x15fa33,null));};exports['update']=function(_0x103b92,_0x29f5e7){if(_0x103b92[_0xbc81('0x45')]['id']){delete _0x103b92['body']['id'];}return db[_0xbc81('0x28')]['find']({'where':{'id':_0x103b92[_0xbc81('0x40')]['id']}})['then'](handleEntityNotFound(_0x29f5e7,null))['then'](saveUpdates(_0x103b92[_0xbc81('0x45')],null))['then'](respondWithResult(_0x29f5e7,null))[_0xbc81('0x3e')](handleError(_0x29f5e7,null));};exports[_0xbc81('0x22')]=function(_0x3f4ac3,_0x9b8840){return db[_0xbc81('0x28')][_0xbc81('0x43')]({'where':{'id':_0x3f4ac3[_0xbc81('0x40')]['id']}})[_0xbc81('0x21')](handleEntityNotFound(_0x9b8840,null))[_0xbc81('0x21')](removeEntity(_0x9b8840,null))[_0xbc81('0x3e')](handleError(_0x9b8840,null));};
\ No newline at end of file
+var _0x886c=['end','json','offset','undefined','count','limit','set','Content-Range','save','update','then','error','stack','name','index','map','VtigerField','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x221900,_0x4b15bd){var _0x36805a=function(_0x5b672a){while(--_0x5b672a){_0x221900['push'](_0x221900['shift']());}};_0x36805a(++_0x4b15bd);}(_0x886c,0x196));var _0xc886=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x886c[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require(_0xc886('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc886('0x1'));var jsonpatch=require(_0xc886('0x2'));var rp=require(_0xc886('0x3'));var moment=require(_0xc886('0x4'));var BPromise=require(_0xc886('0x5'));var Mustache=require('mustache');var util=require(_0xc886('0x6'));var path=require(_0xc886('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc886('0x8'));var fs=require('fs');var fs_extra=require(_0xc886('0x9'));var _=require(_0xc886('0xa'));var squel=require(_0xc886('0xb'));var crypto=require(_0xc886('0xc'));var jsforce=require(_0xc886('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc886('0xe'));var Papa=require(_0xc886('0xf'));var Redis=require(_0xc886('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc886('0x11'));var as=require(_0xc886('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc886('0x13'))('api');var utils=require(_0xc886('0x14'));var config=require(_0xc886('0x15'));var licenseUtil=require(_0xc886('0x16'));var db=require(_0xc886('0x17'))['db'];function respondWithStatusCode(_0x3e58af,_0x3fa60c){_0x3fa60c=_0x3fa60c||0xcc;return function(_0x3a69d0){if(_0x3a69d0){return _0x3e58af[_0xc886('0x18')](_0x3fa60c);}return _0x3e58af[_0xc886('0x19')](_0x3fa60c)[_0xc886('0x1a')]();};}function respondWithResult(_0x2719c7,_0x5930aa){_0x5930aa=_0x5930aa||0xc8;return function(_0x1b2272){if(_0x1b2272){return _0x2719c7[_0xc886('0x19')](_0x5930aa)[_0xc886('0x1b')](_0x1b2272);}};}function respondWithFilteredResult(_0x316bd5,_0x3044f4){return function(_0x39da57){if(_0x39da57){var _0x35c8c8=typeof _0x3044f4[_0xc886('0x1c')]===_0xc886('0x1d')&&typeof _0x3044f4['limit']===_0xc886('0x1d');var _0x51d393=_0x39da57[_0xc886('0x1e')];var _0x54a175=_0x35c8c8?0x0:_0x3044f4[_0xc886('0x1c')];var _0x29a67c=_0x35c8c8?_0x39da57[_0xc886('0x1e')]:_0x3044f4[_0xc886('0x1c')]+_0x3044f4[_0xc886('0x1f')];var _0x45d102;if(_0x29a67c>=_0x51d393){_0x29a67c=_0x51d393;_0x45d102=0xc8;}else{_0x45d102=0xce;}_0x316bd5[_0xc886('0x19')](_0x45d102);return _0x316bd5[_0xc886('0x20')](_0xc886('0x21'),_0x54a175+'-'+_0x29a67c+'/'+_0x51d393)[_0xc886('0x1b')](_0x39da57);}return null;};}function patchUpdates(_0x587256){return function(_0x628094){try{jsonpatch['apply'](_0x628094,_0x587256,!![]);}catch(_0x51bf17){return BPromise['reject'](_0x51bf17);}return _0x628094[_0xc886('0x22')]();};}function saveUpdates(_0x468bbf,_0x1e955a){return function(_0x3c6c7c){if(_0x3c6c7c){return _0x3c6c7c[_0xc886('0x23')](_0x468bbf)[_0xc886('0x24')](function(_0x220219){return _0x220219;});}return null;};}function removeEntity(_0x2ee253,_0x3eec8e){return function(_0x15c0e4){if(_0x15c0e4){return _0x15c0e4['destroy']()['then'](function(){_0x2ee253[_0xc886('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b7191,_0x20d3ae){return function(_0x4a12e4){if(!_0x4a12e4){_0x5b7191[_0xc886('0x18')](0x194);}return _0x4a12e4;};}function handleError(_0x266c4e,_0x3ef1f5){_0x3ef1f5=_0x3ef1f5||0x1f4;return function(_0x428db8){logger[_0xc886('0x25')](_0x428db8[_0xc886('0x26')]);if(_0x428db8[_0xc886('0x27')]){delete _0x428db8[_0xc886('0x27')];}_0x266c4e[_0xc886('0x19')](_0x3ef1f5)['send'](_0x428db8);};}exports[_0xc886('0x28')]=function(_0x2ad7e8,_0x204c22){var _0x46be49={},_0x1b72e5={},_0x4a72af={'count':0x0,'rows':[]};var _0x5c1bd2=_[_0xc886('0x29')](db[_0xc886('0x2a')][_0xc886('0x2b')],function(_0x4f8f79){return{'name':_0x4f8f79[_0xc886('0x2c')],'type':_0x4f8f79[_0xc886('0x2d')]['key']};});_0x1b72e5[_0xc886('0x2e')]=_['map'](_0x5c1bd2,_0xc886('0x27'));_0x1b72e5[_0xc886('0x2f')]=_['keys'](_0x2ad7e8[_0xc886('0x2f')]);_0x1b72e5['filters']=_[_0xc886('0x30')](_0x1b72e5[_0xc886('0x2e')],_0x1b72e5['query']);_0x46be49['attributes']=_[_0xc886('0x30')](_0x1b72e5[_0xc886('0x2e')],qs[_0xc886('0x31')](_0x2ad7e8['query']['fields']));_0x46be49[_0xc886('0x32')]=_0x46be49['attributes'][_0xc886('0x33')]?_0x46be49[_0xc886('0x32')]:_0x1b72e5[_0xc886('0x2e')];if(!_0x2ad7e8[_0xc886('0x2f')]['hasOwnProperty'](_0xc886('0x34'))){_0x46be49[_0xc886('0x1f')]=qs[_0xc886('0x1f')](_0x2ad7e8['query'][_0xc886('0x1f')]);_0x46be49[_0xc886('0x1c')]=qs[_0xc886('0x1c')](_0x2ad7e8[_0xc886('0x2f')][_0xc886('0x1c')]);}_0x46be49[_0xc886('0x35')]=qs[_0xc886('0x36')](_0x2ad7e8[_0xc886('0x2f')][_0xc886('0x36')]);_0x46be49[_0xc886('0x37')]=qs['filters'](_['pick'](_0x2ad7e8[_0xc886('0x2f')],_0x1b72e5[_0xc886('0x38')]),_0x5c1bd2);if(_0x2ad7e8['query'][_0xc886('0x39')]){_0x46be49[_0xc886('0x37')]=_[_0xc886('0x3a')](_0x46be49[_0xc886('0x37')],{'$or':_[_0xc886('0x29')](_0x5c1bd2,function(_0x11ee00){if(_0x11ee00[_0xc886('0x2d')]!==_0xc886('0x3b')){var _0x16df89={};_0x16df89[_0x11ee00['name']]={'$like':'%'+_0x2ad7e8[_0xc886('0x2f')][_0xc886('0x39')]+'%'};return _0x16df89;}})});}_0x46be49=_['merge']({},_0x46be49,_0x2ad7e8[_0xc886('0x3c')]);var _0x512790={'where':_0x46be49[_0xc886('0x37')]};return db[_0xc886('0x2a')][_0xc886('0x1e')](_0x512790)['then'](function(_0xab4a61){_0x4a72af[_0xc886('0x1e')]=_0xab4a61;if(_0x2ad7e8['query'][_0xc886('0x3d')]){_0x46be49[_0xc886('0x3e')]=[{'all':!![]}];}return db[_0xc886('0x2a')][_0xc886('0x3f')](_0x46be49);})[_0xc886('0x24')](function(_0x17cdc9){_0x4a72af[_0xc886('0x40')]=_0x17cdc9;return _0x4a72af;})[_0xc886('0x24')](respondWithFilteredResult(_0x204c22,_0x46be49))['catch'](handleError(_0x204c22,null));};exports[_0xc886('0x41')]=function(_0x47c8b7,_0x1181a5){var _0x4657c8={'raw':!![],'where':{'id':_0x47c8b7[_0xc886('0x42')]['id']}},_0x288b1e={};_0x288b1e[_0xc886('0x2e')]=_[_0xc886('0x43')](db['VtigerField'][_0xc886('0x2b')]);_0x288b1e['query']=_[_0xc886('0x43')](_0x47c8b7['query']);_0x288b1e['filters']=_[_0xc886('0x30')](_0x288b1e[_0xc886('0x2e')],_0x288b1e[_0xc886('0x2f')]);_0x4657c8[_0xc886('0x32')]=_[_0xc886('0x30')](_0x288b1e[_0xc886('0x2e')],qs['fields'](_0x47c8b7[_0xc886('0x2f')][_0xc886('0x31')]));_0x4657c8[_0xc886('0x32')]=_0x4657c8[_0xc886('0x32')][_0xc886('0x33')]?_0x4657c8[_0xc886('0x32')]:_0x288b1e[_0xc886('0x2e')];if(_0x47c8b7['query'][_0xc886('0x3d')]){_0x4657c8[_0xc886('0x3e')]=[{'all':!![]}];}_0x4657c8=_[_0xc886('0x3a')]({},_0x4657c8,_0x47c8b7[_0xc886('0x3c')]);return db[_0xc886('0x2a')][_0xc886('0x44')](_0x4657c8)['then'](handleEntityNotFound(_0x1181a5,null))[_0xc886('0x24')](respondWithResult(_0x1181a5,null))[_0xc886('0x45')](handleError(_0x1181a5,null));};exports['create']=function(_0x2554b2,_0x196a73){return db[_0xc886('0x2a')][_0xc886('0x46')](_0x2554b2[_0xc886('0x47')],{})['then'](respondWithResult(_0x196a73,0xc9))[_0xc886('0x45')](handleError(_0x196a73,null));};exports[_0xc886('0x23')]=function(_0x3f4123,_0x575cd5){if(_0x3f4123['body']['id']){delete _0x3f4123[_0xc886('0x47')]['id'];}return db['VtigerField'][_0xc886('0x44')]({'where':{'id':_0x3f4123[_0xc886('0x42')]['id']}})[_0xc886('0x24')](handleEntityNotFound(_0x575cd5,null))[_0xc886('0x24')](saveUpdates(_0x3f4123[_0xc886('0x47')],null))[_0xc886('0x24')](respondWithResult(_0x575cd5,null))[_0xc886('0x45')](handleError(_0x575cd5,null));};exports['destroy']=function(_0x367dd3,_0x5aaecd){return db[_0xc886('0x2a')][_0xc886('0x44')]({'where':{'id':_0x367dd3[_0xc886('0x42')]['id']}})[_0xc886('0x24')](handleEntityNotFound(_0x5aaecd,null))[_0xc886('0x24')](removeEntity(_0x5aaecd,null))[_0xc886('0x45')](handleError(_0x5aaecd,null));};
\ No newline at end of file
index 462fbc5..ae42a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c06=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','FieldId'];(function(_0x390a19,_0x5dd137){var _0x5d8230=function(_0x2e6234){while(--_0x2e6234){_0x390a19['push'](_0x390a19['shift']());}};_0x5d8230(++_0x5dd137);}(_0x1c06,0xc3));var _0x61c0=function(_0x98db33,_0x397f20){_0x98db33=_0x98db33-0x0;var _0x5ae63a=_0x1c06[_0x98db33];return _0x5ae63a;};'use strict';var _=require(_0x61c0('0x0'));var util=require(_0x61c0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x61c0('0x2'));var BPromise=require(_0x61c0('0x3'));var rp=require(_0x61c0('0x4'));var fs=require('fs');var path=require(_0x61c0('0x5'));var rimraf=require(_0x61c0('0x6'));var config=require(_0x61c0('0x7'));var attributes=require(_0x61c0('0x8'));module[_0x61c0('0x9')]=function(_0x52f432,_0x44775d){return _0x52f432[_0x61c0('0xa')](_0x61c0('0xb'),attributes,{'tableName':_0x61c0('0xc'),'paranoid':![],'indexes':[{'name':_0x61c0('0xd'),'fields':['idField',_0x61c0('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc612=['rimraf','./intVtigerField.attributes','exports','define','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4da1dc,_0x1c6743){var _0x397478=function(_0x17e6a3){while(--_0x17e6a3){_0x4da1dc['push'](_0x4da1dc['shift']());}};_0x397478(++_0x1c6743);}(_0xc612,0x14a));var _0x2c61=function(_0x4f65f7,_0x388b7b){_0x4f65f7=_0x4f65f7-0x0;var _0x195327=_0xc612[_0x4f65f7];return _0x195327;};'use strict';var _=require(_0x2c61('0x0'));var util=require(_0x2c61('0x1'));var logger=require(_0x2c61('0x2'))(_0x2c61('0x3'));var moment=require(_0x2c61('0x4'));var BPromise=require(_0x2c61('0x5'));var rp=require(_0x2c61('0x6'));var fs=require('fs');var path=require(_0x2c61('0x7'));var rimraf=require(_0x2c61('0x8'));var config=require('../../config/environment');var attributes=require(_0x2c61('0x9'));module[_0x2c61('0xa')]=function(_0x5ae882,_0x1e68ad){return _0x5ae882[_0x2c61('0xb')]('VtigerField',attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':['idField',_0x2c61('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fe60f8e..2b1fe3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a71=['rpc','../../config/environment','client','request','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x3a71,0xea));var _0x13a7=function(_0x1ad9fe,_0x1a85d9){_0x1ad9fe=_0x1ad9fe-0x0;var _0x341757=_0x3a71[_0x1ad9fe];return _0x341757;};'use strict';var _=require(_0x13a7('0x0'));var util=require('util');var moment=require(_0x13a7('0x1'));var BPromise=require(_0x13a7('0x2'));var rs=require(_0x13a7('0x3'));var fs=require('fs');var Redis=require(_0x13a7('0x4'));var db=require(_0x13a7('0x5'))['db'];var utils=require(_0x13a7('0x6'));var logger=require(_0x13a7('0x7'))(_0x13a7('0x8'));var config=require(_0x13a7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x13a7('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xbf1e9b,_0x4df142,_0x230f15){return new BPromise(function(_0x3f65d1,_0x395e28){return client[_0x13a7('0xb')](_0xbf1e9b,_0x230f15)['then'](function(_0x30c893){logger[_0x13a7('0xc')](_0x13a7('0xd'),_0x4df142,_0x13a7('0xe'));logger[_0x13a7('0xf')](_0x13a7('0x10'),_0x4df142,'request\x20sent',JSON[_0x13a7('0x11')](_0x30c893));if(_0x30c893[_0x13a7('0x12')]){if(_0x30c893[_0x13a7('0x12')]['code']===0x1f4){logger[_0x13a7('0x12')](_0x13a7('0xd'),_0x4df142,_0x30c893[_0x13a7('0x12')][_0x13a7('0x13')]);return _0x395e28(_0x30c893[_0x13a7('0x12')][_0x13a7('0x13')]);}logger[_0x13a7('0x12')](_0x13a7('0xd'),_0x4df142,_0x30c893['error'][_0x13a7('0x13')]);return _0x3f65d1(_0x30c893[_0x13a7('0x12')]['message']);}else{logger[_0x13a7('0xc')](_0x13a7('0xd'),_0x4df142,_0x13a7('0xe'));_0x3f65d1(_0x30c893[_0x13a7('0x14')][_0x13a7('0x13')]);}})[_0x13a7('0x15')](function(_0x599bfb){logger[_0x13a7('0x12')](_0x13a7('0xd'),_0x4df142,_0x599bfb);_0x395e28(_0x599bfb);});});}
\ No newline at end of file
+var _0xbc98=['request','then','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x5df55d,_0x590727){var _0x36b1f0=function(_0xc97cf8){while(--_0xc97cf8){_0x5df55d['push'](_0x5df55d['shift']());}};_0x36b1f0(++_0x590727);}(_0xbc98,0xad));var _0x8bc9=function(_0x1253db,_0x2cad03){_0x1253db=_0x1253db-0x0;var _0x47fbbf=_0xbc98[_0x1253db];return _0x47fbbf;};'use strict';var _=require(_0x8bc9('0x0'));var util=require(_0x8bc9('0x1'));var moment=require(_0x8bc9('0x2'));var BPromise=require(_0x8bc9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8bc9('0x4'));var logger=require(_0x8bc9('0x5'))(_0x8bc9('0x6'));var config=require(_0x8bc9('0x7'));var jayson=require(_0x8bc9('0x8'));var client=jayson[_0x8bc9('0x9')][_0x8bc9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x175783,_0x21223e,_0x3a5f08){return new BPromise(function(_0x440813,_0x5f2fd5){return client[_0x8bc9('0xb')](_0x175783,_0x3a5f08)[_0x8bc9('0xc')](function(_0x145bd6){logger[_0x8bc9('0xd')](_0x8bc9('0xe'),_0x21223e,'request\x20sent');logger[_0x8bc9('0xf')](_0x8bc9('0x10'),_0x21223e,_0x8bc9('0x11'),JSON[_0x8bc9('0x12')](_0x145bd6));if(_0x145bd6[_0x8bc9('0x13')]){if(_0x145bd6[_0x8bc9('0x13')][_0x8bc9('0x14')]===0x1f4){logger[_0x8bc9('0x13')](_0x8bc9('0xe'),_0x21223e,_0x145bd6[_0x8bc9('0x13')][_0x8bc9('0x15')]);return _0x5f2fd5(_0x145bd6['error']['message']);}logger['error'](_0x8bc9('0xe'),_0x21223e,_0x145bd6[_0x8bc9('0x13')][_0x8bc9('0x15')]);return _0x440813(_0x145bd6[_0x8bc9('0x13')][_0x8bc9('0x15')]);}else{logger[_0x8bc9('0xd')]('VtigerField,\x20%s,\x20%s',_0x21223e,_0x8bc9('0x11'));_0x440813(_0x145bd6[_0x8bc9('0x16')][_0x8bc9('0x15')]);}})['catch'](function(_0x1d2764){logger['error'](_0x8bc9('0xe'),_0x21223e,_0x1d2764);_0x5f2fd5(_0x1d2764);});});}
\ No newline at end of file
index 1b0ebf8..df7e524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59a1=['delete','/:id','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','post','addConfiguration','put'];(function(_0x35d8af,_0x14fd75){var _0x1d08b0=function(_0x36b437){while(--_0x36b437){_0x35d8af['push'](_0x35d8af['shift']());}};_0x1d08b0(++_0x14fd75);}(_0x59a1,0xb7));var _0x159a=function(_0x22873c,_0x2ab3c7){_0x22873c=_0x22873c-0x0;var _0x2d218c=_0x59a1[_0x22873c];return _0x2d218c;};'use strict';var multer=require(_0x159a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x159a('0x1'));var express=require(_0x159a('0x2'));var router=express[_0x159a('0x3')]();var fs_extra=require(_0x159a('0x4'));var auth=require(_0x159a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x159a('0x6'));var controller=require(_0x159a('0x7'));router[_0x159a('0x8')]('/',auth[_0x159a('0x9')](),controller[_0x159a('0xa')]);router[_0x159a('0x8')]('/:id',auth[_0x159a('0x9')](),controller[_0x159a('0xb')]);router['get'](_0x159a('0xc'),auth[_0x159a('0x9')](),controller[_0x159a('0xd')]);router[_0x159a('0x8')]('/:id/fields',auth[_0x159a('0x9')](),controller['getFields']);router[_0x159a('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x159a('0xe')](_0x159a('0xc'),auth['isAuthenticated'](),controller[_0x159a('0xf')]);router[_0x159a('0x10')]('/:id',auth[_0x159a('0x9')](),controller['update']);router[_0x159a('0x11')](_0x159a('0x12'),auth[_0x159a('0x9')](),controller[_0x159a('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd48e=['../../config/environment','get','isAuthenticated','index','/:id','getConfigurations','getFields','post','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x554de9,_0x4b1bd2){var _0x2bcb4f=function(_0x52557f){while(--_0x52557f){_0x554de9['push'](_0x554de9['shift']());}};_0x2bcb4f(++_0x4b1bd2);}(_0xd48e,0x93));var _0xed48=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xd48e[_0x4b369d];return _0x571a98;};'use strict';var multer=require('multer');var util=require(_0xed48('0x0'));var path=require(_0xed48('0x1'));var timeout=require(_0xed48('0x2'));var express=require(_0xed48('0x3'));var router=express[_0xed48('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xed48('0x5'));var interaction=require(_0xed48('0x6'));var config=require(_0xed48('0x7'));var controller=require('./intZendeskAccount.controller');router[_0xed48('0x8')]('/',auth[_0xed48('0x9')](),controller[_0xed48('0xa')]);router['get'](_0xed48('0xb'),auth[_0xed48('0x9')](),controller['show']);router['get']('/:id/configurations',auth[_0xed48('0x9')](),controller[_0xed48('0xc')]);router[_0xed48('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xed48('0xd')]);router[_0xed48('0xe')]('/',auth[_0xed48('0x9')](),controller['create']);router[_0xed48('0xe')](_0xed48('0xf'),auth[_0xed48('0x9')](),controller[_0xed48('0x10')]);router[_0xed48('0x11')](_0xed48('0xb'),auth[_0xed48('0x9')](),controller[_0xed48('0x12')]);router[_0xed48('0x13')](_0xed48('0xb'),auth[_0xed48('0x9')](),controller[_0xed48('0x14')]);module[_0xed48('0x15')]=router;
\ No newline at end of file
index bd78ea9..5241b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3fe=['sequelize','STRING','username','remoteUri','password','token','integrationTab','newTab'];(function(_0x12ea7b,_0x3e6219){var _0x2034ae=function(_0x3a4735){while(--_0x3a4735){_0x12ea7b['push'](_0x12ea7b['shift']());}};_0x2034ae(++_0x3e6219);}(_0xa3fe,0xd8));var _0xea3f=function(_0x403022,_0x487e4b){_0x403022=_0x403022-0x0;var _0x1bd837=_0xa3fe[_0x403022];return _0x1bd837;};'use strict';var Sequelize=require(_0xea3f('0x0'));module['exports']={'name':{'type':Sequelize[_0xea3f('0x1')]},'description':{'type':Sequelize[_0xea3f('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0xea3f('0x2')},'password':{'type':Sequelize[_0xea3f('0x1')]},'token':{'type':Sequelize[_0xea3f('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xea3f('0x3')},'authType':{'type':Sequelize['ENUM'](_0xea3f('0x4'),_0xea3f('0x5')),'defaultValue':_0xea3f('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xea3f('0x6'),_0xea3f('0x7')),'defaultValue':_0xea3f('0x6')}};
\ No newline at end of file
+var _0x39e6=['ENUM','password','token','integrationTab','newTab','sequelize','STRING','username','remoteUri'];(function(_0x243c5c,_0x3dd30c){var _0x486e0f=function(_0x5bbc2a){while(--_0x5bbc2a){_0x243c5c['push'](_0x243c5c['shift']());}};_0x486e0f(++_0x3dd30c);}(_0x39e6,0x9e));var _0x639e=function(_0x5e9f56,_0x4edbec){_0x5e9f56=_0x5e9f56-0x0;var _0x32c102=_0x39e6[_0x5e9f56];return _0x32c102;};'use strict';var Sequelize=require(_0x639e('0x0'));module['exports']={'name':{'type':Sequelize[_0x639e('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x639e('0x2')},'password':{'type':Sequelize[_0x639e('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x639e('0x1')],'unique':_0x639e('0x3')},'authType':{'type':Sequelize[_0x639e('0x4')](_0x639e('0x5'),_0x639e('0x6')),'defaultValue':_0x639e('0x5')},'serverUrl':{'type':Sequelize[_0x639e('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x639e('0x4')](_0x639e('0x7'),_0x639e('0x8')),'defaultValue':_0x639e('0x7')}};
\ No newline at end of file
index a71e17c..8e65706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb94=['query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','create','body','params','destroy','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','getSubjects','channel','getDescriptions','ZendeskField','Descriptions','getFields','password','authType','remoteUri','slice','substring','%s/%s','ticket_fields','format','%s:%s','username','toString','base64','token','Basic\x20%s','Sequelize','includes','position','title','system_field_options','custom_field_options','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','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','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','end','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','ZendeskAccount','rawAttributes','fieldName','key','model'];(function(_0x5e4b85,_0x6cf965){var _0x5cd3cb=function(_0x589c9e){while(--_0x589c9e){_0x5e4b85['push'](_0x5e4b85['shift']());}};_0x5cd3cb(++_0x6cf965);}(_0xdb94,0xab));var _0x4db9=function(_0x312e6d,_0x253611){_0x312e6d=_0x312e6d-0x0;var _0x499832=_0xdb94[_0x312e6d];return _0x499832;};'use strict';var emlformat=require(_0x4db9('0x0'));var rimraf=require(_0x4db9('0x1'));var zipdir=require(_0x4db9('0x2'));var jsonpatch=require(_0x4db9('0x3'));var rp=require(_0x4db9('0x4'));var moment=require('moment');var BPromise=require(_0x4db9('0x5'));var Mustache=require(_0x4db9('0x6'));var util=require('util');var path=require('path');var sox=require(_0x4db9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4db9('0x8'));var _=require('lodash');var squel=require(_0x4db9('0x9'));var crypto=require('crypto');var jsforce=require(_0x4db9('0xa'));var deskjs=require(_0x4db9('0xb'));var toCsv=require(_0x4db9('0xc'));var querystring=require(_0x4db9('0xd'));var Papa=require(_0x4db9('0xe'));var Redis=require(_0x4db9('0xf'));var authService=require(_0x4db9('0x10'));var qs=require(_0x4db9('0x11'));var as=require(_0x4db9('0x12'));var hardwareService=require(_0x4db9('0x13'));var logger=require(_0x4db9('0x14'))('api');var utils=require(_0x4db9('0x15'));var config=require(_0x4db9('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x4db9('0x17'));function respondWithStatusCode(_0x5e644c,_0x571685){_0x571685=_0x571685||0xcc;return function(_0x34fc7d){if(_0x34fc7d){return _0x5e644c[_0x4db9('0x18')](_0x571685);}return _0x5e644c['status'](_0x571685)[_0x4db9('0x19')]();};}function respondWithResult(_0x1f9638,_0x452896){_0x452896=_0x452896||0xc8;return function(_0x22667c){if(_0x22667c){return _0x1f9638['status'](_0x452896)['json'](_0x22667c);}};}function respondWithFilteredResult(_0x102274,_0x34de1a){return function(_0x4a037f){if(_0x4a037f){var _0xadc104=typeof _0x34de1a[_0x4db9('0x1a')]==='undefined'&&typeof _0x34de1a['limit']===_0x4db9('0x1b');var _0x143b88=_0x4a037f[_0x4db9('0x1c')];var _0xa693c4=_0xadc104?0x0:_0x34de1a[_0x4db9('0x1a')];var _0x55494a=_0xadc104?_0x4a037f[_0x4db9('0x1c')]:_0x34de1a[_0x4db9('0x1a')]+_0x34de1a[_0x4db9('0x1d')];var _0x5e3b36;if(_0x55494a>=_0x143b88){_0x55494a=_0x143b88;_0x5e3b36=0xc8;}else{_0x5e3b36=0xce;}_0x102274[_0x4db9('0x1e')](_0x5e3b36);return _0x102274[_0x4db9('0x1f')](_0x4db9('0x20'),_0xa693c4+'-'+_0x55494a+'/'+_0x143b88)['json'](_0x4a037f);}return null;};}function patchUpdates(_0x46b522){return function(_0x2e8f95){try{jsonpatch[_0x4db9('0x21')](_0x2e8f95,_0x46b522,!![]);}catch(_0x46fc3d){return BPromise[_0x4db9('0x22')](_0x46fc3d);}return _0x2e8f95[_0x4db9('0x23')]();};}function saveUpdates(_0x3585d5,_0x5aef3b){return function(_0x4ceb0c){if(_0x4ceb0c){return _0x4ceb0c[_0x4db9('0x24')](_0x3585d5)[_0x4db9('0x25')](function(_0x319475){return _0x319475;});}return null;};}function removeEntity(_0x4aaa84,_0x213daa){return function(_0xdac966){if(_0xdac966){return _0xdac966['destroy']()[_0x4db9('0x25')](function(){_0x4aaa84[_0x4db9('0x1e')](0xcc)[_0x4db9('0x19')]();});}};}function handleEntityNotFound(_0x4dbb1b,_0x3c8237){return function(_0xd250c5){if(!_0xd250c5){_0x4dbb1b[_0x4db9('0x18')](0x194);}return _0xd250c5;};}function handleError(_0x2d330e,_0x3f9f7e){_0x3f9f7e=_0x3f9f7e||0x1f4;return function(_0x385e22){logger[_0x4db9('0x26')](_0x385e22[_0x4db9('0x27')]);if(_0x385e22[_0x4db9('0x28')]){delete _0x385e22[_0x4db9('0x28')];}_0x2d330e[_0x4db9('0x1e')](_0x3f9f7e)[_0x4db9('0x29')](_0x385e22);};}exports[_0x4db9('0x2a')]=function(_0x20f133,_0x583861){var _0x5031fe={},_0x3951b2={},_0x331279={'count':0x0,'rows':[]};var _0x119371=_[_0x4db9('0x2b')](db[_0x4db9('0x2c')][_0x4db9('0x2d')],function(_0x4dc946){return{'name':_0x4dc946[_0x4db9('0x2e')],'type':_0x4dc946['type'][_0x4db9('0x2f')]};});_0x3951b2[_0x4db9('0x30')]=_[_0x4db9('0x2b')](_0x119371,_0x4db9('0x28'));_0x3951b2[_0x4db9('0x31')]=_['keys'](_0x20f133['query']);_0x3951b2[_0x4db9('0x32')]=_['intersection'](_0x3951b2[_0x4db9('0x30')],_0x3951b2[_0x4db9('0x31')]);_0x5031fe['attributes']=_[_0x4db9('0x33')](_0x3951b2[_0x4db9('0x30')],qs[_0x4db9('0x34')](_0x20f133['query'][_0x4db9('0x34')]));_0x5031fe['attributes']=_0x5031fe[_0x4db9('0x35')][_0x4db9('0x36')]?_0x5031fe[_0x4db9('0x35')]:_0x3951b2['model'];if(!_0x20f133['query'][_0x4db9('0x37')](_0x4db9('0x38'))){_0x5031fe[_0x4db9('0x1d')]=qs[_0x4db9('0x1d')](_0x20f133[_0x4db9('0x31')][_0x4db9('0x1d')]);_0x5031fe[_0x4db9('0x1a')]=qs[_0x4db9('0x1a')](_0x20f133[_0x4db9('0x31')]['offset']);}_0x5031fe[_0x4db9('0x39')]=qs[_0x4db9('0x3a')](_0x20f133[_0x4db9('0x31')][_0x4db9('0x3a')]);_0x5031fe['where']=qs[_0x4db9('0x32')](_[_0x4db9('0x3b')](_0x20f133[_0x4db9('0x31')],_0x3951b2['filters']),_0x119371);if(_0x20f133[_0x4db9('0x31')][_0x4db9('0x3c')]){_0x5031fe[_0x4db9('0x3d')]=_[_0x4db9('0x3e')](_0x5031fe['where'],{'$or':_['map'](_0x119371,function(_0x41da52){if(_0x41da52[_0x4db9('0x3f')]!==_0x4db9('0x40')){var _0x8bc540={};_0x8bc540[_0x41da52[_0x4db9('0x28')]]={'$like':'%'+_0x20f133['query'][_0x4db9('0x3c')]+'%'};return _0x8bc540;}})});}_0x5031fe=_[_0x4db9('0x3e')]({},_0x5031fe,_0x20f133[_0x4db9('0x41')]);var _0x367c4c={'where':_0x5031fe[_0x4db9('0x3d')]};return db['ZendeskAccount'][_0x4db9('0x1c')](_0x367c4c)[_0x4db9('0x25')](function(_0x38a727){_0x331279['count']=_0x38a727;if(_0x20f133[_0x4db9('0x31')][_0x4db9('0x42')]){_0x5031fe[_0x4db9('0x43')]=[{'all':!![]}];}return db[_0x4db9('0x2c')][_0x4db9('0x44')](_0x5031fe);})[_0x4db9('0x25')](function(_0x412aab){_0x331279[_0x4db9('0x45')]=_0x412aab;return _0x331279;})[_0x4db9('0x25')](respondWithFilteredResult(_0x583861,_0x5031fe))[_0x4db9('0x46')](handleError(_0x583861,null));};exports['show']=function(_0x56bd68,_0x48aaf5){var _0x22a021={'raw':![],'where':{'id':_0x56bd68['params']['id']}},_0x28a3ef={};_0x28a3ef[_0x4db9('0x30')]=_[_0x4db9('0x47')](db['ZendeskAccount']['rawAttributes']);_0x28a3ef[_0x4db9('0x31')]=_['keys'](_0x56bd68[_0x4db9('0x31')]);_0x28a3ef[_0x4db9('0x32')]=_['intersection'](_0x28a3ef[_0x4db9('0x30')],_0x28a3ef[_0x4db9('0x31')]);_0x22a021['attributes']=_[_0x4db9('0x33')](_0x28a3ef[_0x4db9('0x30')],qs[_0x4db9('0x34')](_0x56bd68['query']['fields']));_0x22a021[_0x4db9('0x35')]=_0x22a021[_0x4db9('0x35')][_0x4db9('0x36')]?_0x22a021[_0x4db9('0x35')]:_0x28a3ef[_0x4db9('0x30')];if(_0x56bd68[_0x4db9('0x31')][_0x4db9('0x42')]){_0x22a021[_0x4db9('0x43')]=[{'all':!![]}];}_0x22a021=_[_0x4db9('0x3e')]({},_0x22a021,_0x56bd68[_0x4db9('0x41')]);return db[_0x4db9('0x2c')][_0x4db9('0x48')](_0x22a021)[_0x4db9('0x25')](handleEntityNotFound(_0x48aaf5,null))['then'](respondWithResult(_0x48aaf5,null))[_0x4db9('0x46')](handleError(_0x48aaf5,null));};exports[_0x4db9('0x49')]=function(_0x3852f0,_0xba27c0){return db[_0x4db9('0x2c')][_0x4db9('0x49')](_0x3852f0[_0x4db9('0x4a')],{})[_0x4db9('0x25')](respondWithResult(_0xba27c0,0xc9))[_0x4db9('0x46')](handleError(_0xba27c0,null));};exports[_0x4db9('0x24')]=function(_0x10dccb,_0x49ea0c){if(_0x10dccb['body']['id']){delete _0x10dccb[_0x4db9('0x4a')]['id'];}return db[_0x4db9('0x2c')][_0x4db9('0x48')]({'where':{'id':_0x10dccb[_0x4db9('0x4b')]['id']}})[_0x4db9('0x25')](handleEntityNotFound(_0x49ea0c,null))[_0x4db9('0x25')](saveUpdates(_0x10dccb[_0x4db9('0x4a')],null))[_0x4db9('0x25')](respondWithResult(_0x49ea0c,null))['catch'](handleError(_0x49ea0c,null));};exports[_0x4db9('0x4c')]=function(_0xcb832e,_0x121225){return db[_0x4db9('0x2c')][_0x4db9('0x48')]({'where':{'id':_0xcb832e[_0x4db9('0x4b')]['id']}})[_0x4db9('0x25')](handleEntityNotFound(_0x121225,null))[_0x4db9('0x25')](removeEntity(_0x121225,null))['catch'](handleError(_0x121225,null));};exports[_0x4db9('0x4d')]=function(_0xd6701a,_0x216696,_0x3a1f0e){var _0x15486f={};var _0x2d7fa2={};var _0x4e88c2;var _0x188663;return db['ZendeskAccount'][_0x4db9('0x4e')]({'where':{'id':_0xd6701a['params']['id']}})['then'](handleEntityNotFound(_0x216696,null))[_0x4db9('0x25')](function(_0x5996f2){if(_0x5996f2){_0x4e88c2=_0x5996f2;_0x2d7fa2[_0x4db9('0x30')]=_[_0x4db9('0x47')](db[_0x4db9('0x4f')][_0x4db9('0x2d')]);_0x2d7fa2['query']=_[_0x4db9('0x47')](_0xd6701a['query']);_0x2d7fa2[_0x4db9('0x32')]=_[_0x4db9('0x33')](_0x2d7fa2['model'],_0x2d7fa2[_0x4db9('0x31')]);_0x15486f['attributes']=_[_0x4db9('0x33')](_0x2d7fa2[_0x4db9('0x30')],qs[_0x4db9('0x34')](_0xd6701a[_0x4db9('0x31')][_0x4db9('0x34')]));_0x15486f[_0x4db9('0x35')]=_0x15486f[_0x4db9('0x35')][_0x4db9('0x36')]?_0x15486f[_0x4db9('0x35')]:_0x2d7fa2[_0x4db9('0x30')];_0x15486f[_0x4db9('0x39')]=qs[_0x4db9('0x3a')](_0xd6701a[_0x4db9('0x31')][_0x4db9('0x3a')]);_0x15486f[_0x4db9('0x3d')]=qs['filters'](_[_0x4db9('0x3b')](_0xd6701a[_0x4db9('0x31')],_0x2d7fa2['filters']));if(_0xd6701a[_0x4db9('0x31')][_0x4db9('0x3c')]){_0x15486f[_0x4db9('0x3d')]=_[_0x4db9('0x3e')](_0x15486f[_0x4db9('0x3d')],{'$or':_[_0x4db9('0x2b')](_0x15486f[_0x4db9('0x35')],function(_0x355083){var _0x215538={};_0x215538[_0x355083]={'$like':'%'+_0xd6701a['query']['filter']+'%'};return _0x215538;})});}_0x15486f=_[_0x4db9('0x3e')]({},_0x15486f,_0xd6701a[_0x4db9('0x41')]);return _0x4e88c2[_0x4db9('0x4d')](_0x15486f);}})[_0x4db9('0x25')](function(_0x35e822){if(_0x35e822){_0x188663=_0x35e822[_0x4db9('0x36')];if(!_0xd6701a[_0x4db9('0x31')][_0x4db9('0x37')](_0x4db9('0x38'))){_0x15486f[_0x4db9('0x1d')]=qs['limit'](_0xd6701a[_0x4db9('0x31')]['limit']);_0x15486f['offset']=qs['offset'](_0xd6701a['query'][_0x4db9('0x1a')]);}return _0x4e88c2['getConfigurations'](_0x15486f);}})['then'](function(_0x7aea3a){if(_0x7aea3a){return _0x7aea3a?{'count':_0x188663,'rows':_0x7aea3a}:null;}})[_0x4db9('0x25')](respondWithResult(_0x216696,null))[_0x4db9('0x46')](handleError(_0x216696,null));};exports[_0x4db9('0x50')]=function(_0x2d91d9,_0x3e833d,_0xaea8ff){if(_0x2d91d9[_0x4db9('0x4a')]['id']){delete _0x2d91d9[_0x4db9('0x4a')]['id'];}return db[_0x4db9('0x2c')][_0x4db9('0x4e')]({'where':{'id':_0x2d91d9[_0x4db9('0x4b')]['id']}})[_0x4db9('0x25')](handleEntityNotFound(_0x3e833d,null))[_0x4db9('0x25')](function(_0xd84c6c){if(_0xd84c6c){_0x2d91d9[_0x4db9('0x4a')]['AccountId']=_0xd84c6c['id'];_0x2d91d9['body']['Subjects']=integrations[_0x4db9('0x51')](_0x2d91d9['body'][_0x4db9('0x52')],_0x2d91d9[_0x4db9('0x4a')][_0x4db9('0x3f')]);_0x2d91d9['body']['Descriptions']=integrations[_0x4db9('0x53')](_0x2d91d9['body'][_0x4db9('0x52')],_0x2d91d9[_0x4db9('0x4a')][_0x4db9('0x3f')]);return db[_0x4db9('0x4f')][_0x4db9('0x49')](_0x2d91d9['body'],{'include':[{'model':db[_0x4db9('0x54')],'as':'Subjects'},{'model':db[_0x4db9('0x54')],'as':_0x4db9('0x55')}]});}return null;})[_0x4db9('0x25')](respondWithResult(_0x3e833d,null))[_0x4db9('0x46')](handleError(_0x3e833d,null));};exports[_0x4db9('0x56')]=function(_0x543d35,_0x524d82,_0x3901b5){var _0xd8a34='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x543d35[_0x4db9('0x4b')]['id']},'attributes':['id','username',_0x4db9('0x57'),'token',_0x4db9('0x58'),_0x4db9('0x59')]})['then'](handleEntityNotFound(_0x524d82,null))['then'](function(_0x3de95c){if(_0x3de95c){_0xd8a34=_0x3de95c[_0x4db9('0x59')];var _0x294111=_0xd8a34[_0x4db9('0x5a')](-0x1);if(_0x294111==='/'){_0xd8a34=_0xd8a34[_0x4db9('0x5b')](0x0,_0xd8a34['lastIndexOf'](_0x294111));}var _0x593497={'method':'GET','uri':util['format'](_0x4db9('0x5c'),_0xd8a34,_0x4db9('0x5d')),'json':!![]};switch(_0x3de95c[_0x4db9('0x58')]){case _0x4db9('0x57'):_0x593497['headers']={'Authorization':util[_0x4db9('0x5e')]('Basic\x20%s',new Buffer(util[_0x4db9('0x5e')](_0x4db9('0x5f'),_0x3de95c[_0x4db9('0x60')],_0x3de95c[_0x4db9('0x57')]))[_0x4db9('0x61')](_0x4db9('0x62')))};break;case _0x4db9('0x63'):_0x593497['headers']={'Authorization':util[_0x4db9('0x5e')](_0x4db9('0x64'),new Buffer(util[_0x4db9('0x5e')]('%s/token:%s',_0x3de95c[_0x4db9('0x60')],_0x3de95c[_0x4db9('0x63')]))['toString']('base64'))};break;default:throw new db[(_0x4db9('0x65'))]['ValidationError']('Unknown\x20authentication\x20type');}return rp(_0x593497);}})[_0x4db9('0x25')](function(_0x30ba05){if(_0x30ba05){var _0x190e38=['subject','description','group','assignee'];_['remove'](_0x30ba05[_0x4db9('0x5d')],function(_0x3f4cb6){return _0x190e38[_0x4db9('0x66')](_0x3f4cb6[_0x4db9('0x3f')]);});return{'count':_0x30ba05[_0x4db9('0x5d')][_0x4db9('0x36')],'rows':_[_0x4db9('0x2b')](_0x30ba05[_0x4db9('0x5d')],function(_0x4c5be0){return{'id':_0x4c5be0['id'],'name':_0x4c5be0[_0x4db9('0x67')]>0x7?_0x4c5be0[_0x4db9('0x68')]:_0x4c5be0[_0x4db9('0x3f')],'custom':_0x4c5be0[_0x4db9('0x67')]>0x7?!![]:![],'options':_0x4c5be0[_0x4db9('0x69')]?_0x4c5be0[_0x4db9('0x69')]:_0x4c5be0[_0x4db9('0x6a')]?_0x4c5be0[_0x4db9('0x6a')]:[]};})};}})['then'](respondWithResult(_0x524d82,null))[_0x4db9('0x46')](function(_0x4a7e8b){var _0x17bbcb=_0x543d35[_0x4db9('0x31')][_0x4db9('0x6b')]?0x1f4:_0x4a7e8b[_0x4db9('0x6c')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x4db9('0x56'),_0x17bbcb,JSON['stringify'](_0x4a7e8b));delete _0x4a7e8b[_0x4db9('0x28')];if(_0x17bbcb===0x191){_0x17bbcb=0x190;}_0x524d82[_0x4db9('0x1e')](_0x17bbcb)[_0x4db9('0x29')](_0x543d35[_0x4db9('0x31')][_0x4db9('0x6b')]?{'message':_0x4db9('0x6d'),'statusCode':_0x4a7e8b[_0x4db9('0x6c')]}:_0x4a7e8b);});};
\ No newline at end of file
+var _0x373d=['ZendeskField','username','password','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','base64','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','remove','includes','position','title','system_field_options','custom_field_options','test','stringify','statusCode','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','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','ZendeskAccount','rows','catch','show','keys','rawAttributes','find','create','body','params','findOne','options','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0x254d9f,_0x54ddb5){var _0x1eedb9=function(_0x2d05f1){while(--_0x2d05f1){_0x254d9f['push'](_0x254d9f['shift']());}};_0x1eedb9(++_0x54ddb5);}(_0x373d,0x1e2));var _0xd373=function(_0x3362e5,_0x5091d1){_0x3362e5=_0x3362e5-0x0;var _0x228031=_0x373d[_0x3362e5];return _0x228031;};'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'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5ab89c,_0xcd9b8c){_0xcd9b8c=_0xcd9b8c||0xcc;return function(_0x14a0ee){if(_0x14a0ee){return _0x5ab89c['sendStatus'](_0xcd9b8c);}return _0x5ab89c[_0xd373('0x15')](_0xcd9b8c)[_0xd373('0x16')]();};}function respondWithResult(_0x27c161,_0x23ed86){_0x23ed86=_0x23ed86||0xc8;return function(_0x28b2bf){if(_0x28b2bf){return _0x27c161[_0xd373('0x15')](_0x23ed86)[_0xd373('0x17')](_0x28b2bf);}};}function respondWithFilteredResult(_0x2eacb1,_0x5a286a){return function(_0x2c5854){if(_0x2c5854){var _0x3a5316=typeof _0x5a286a[_0xd373('0x18')]===_0xd373('0x19')&&typeof _0x5a286a['limit']===_0xd373('0x19');var _0x5eab00=_0x2c5854[_0xd373('0x1a')];var _0x36d47a=_0x3a5316?0x0:_0x5a286a['offset'];var _0x1bbdbd=_0x3a5316?_0x2c5854['count']:_0x5a286a['offset']+_0x5a286a[_0xd373('0x1b')];var _0x186fdd;if(_0x1bbdbd>=_0x5eab00){_0x1bbdbd=_0x5eab00;_0x186fdd=0xc8;}else{_0x186fdd=0xce;}_0x2eacb1[_0xd373('0x15')](_0x186fdd);return _0x2eacb1[_0xd373('0x1c')](_0xd373('0x1d'),_0x36d47a+'-'+_0x1bbdbd+'/'+_0x5eab00)[_0xd373('0x17')](_0x2c5854);}return null;};}function patchUpdates(_0x4ba510){return function(_0x18b681){try{jsonpatch[_0xd373('0x1e')](_0x18b681,_0x4ba510,!![]);}catch(_0x1378a0){return BPromise[_0xd373('0x1f')](_0x1378a0);}return _0x18b681[_0xd373('0x20')]();};}function saveUpdates(_0x3aa1c5,_0x4f64bd){return function(_0x355fca){if(_0x355fca){return _0x355fca[_0xd373('0x21')](_0x3aa1c5)[_0xd373('0x22')](function(_0x209ca7){return _0x209ca7;});}return null;};}function removeEntity(_0x217ee7,_0x238ffd){return function(_0x466a03){if(_0x466a03){return _0x466a03[_0xd373('0x23')]()[_0xd373('0x22')](function(){_0x217ee7[_0xd373('0x15')](0xcc)[_0xd373('0x16')]();});}};}function handleEntityNotFound(_0x34f05a,_0x388182){return function(_0x420a30){if(!_0x420a30){_0x34f05a[_0xd373('0x24')](0x194);}return _0x420a30;};}function handleError(_0x38ba50,_0x50b987){_0x50b987=_0x50b987||0x1f4;return function(_0x13a012){logger[_0xd373('0x25')](_0x13a012[_0xd373('0x26')]);if(_0x13a012[_0xd373('0x27')]){delete _0x13a012[_0xd373('0x27')];}_0x38ba50[_0xd373('0x15')](_0x50b987)[_0xd373('0x28')](_0x13a012);};}exports[_0xd373('0x29')]=function(_0x2869e5,_0x158825){var _0xbc420b={},_0x2ee37c={},_0x7dad3e={'count':0x0,'rows':[]};var _0x5287e7=_[_0xd373('0x2a')](db['ZendeskAccount']['rawAttributes'],function(_0xedc8f3){return{'name':_0xedc8f3[_0xd373('0x2b')],'type':_0xedc8f3[_0xd373('0x2c')][_0xd373('0x2d')]};});_0x2ee37c[_0xd373('0x2e')]=_['map'](_0x5287e7,_0xd373('0x27'));_0x2ee37c[_0xd373('0x2f')]=_['keys'](_0x2869e5[_0xd373('0x2f')]);_0x2ee37c[_0xd373('0x30')]=_[_0xd373('0x31')](_0x2ee37c[_0xd373('0x2e')],_0x2ee37c[_0xd373('0x2f')]);_0xbc420b[_0xd373('0x32')]=_[_0xd373('0x31')](_0x2ee37c[_0xd373('0x2e')],qs[_0xd373('0x33')](_0x2869e5['query'][_0xd373('0x33')]));_0xbc420b[_0xd373('0x32')]=_0xbc420b[_0xd373('0x32')][_0xd373('0x34')]?_0xbc420b[_0xd373('0x32')]:_0x2ee37c[_0xd373('0x2e')];if(!_0x2869e5[_0xd373('0x2f')][_0xd373('0x35')](_0xd373('0x36'))){_0xbc420b[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0x2869e5[_0xd373('0x2f')][_0xd373('0x1b')]);_0xbc420b[_0xd373('0x18')]=qs[_0xd373('0x18')](_0x2869e5['query'][_0xd373('0x18')]);}_0xbc420b[_0xd373('0x37')]=qs[_0xd373('0x38')](_0x2869e5[_0xd373('0x2f')]['sort']);_0xbc420b[_0xd373('0x39')]=qs[_0xd373('0x30')](_[_0xd373('0x3a')](_0x2869e5[_0xd373('0x2f')],_0x2ee37c[_0xd373('0x30')]),_0x5287e7);if(_0x2869e5[_0xd373('0x2f')]['filter']){_0xbc420b['where']=_[_0xd373('0x3b')](_0xbc420b['where'],{'$or':_[_0xd373('0x2a')](_0x5287e7,function(_0xe19d5b){if(_0xe19d5b[_0xd373('0x2c')]!=='VIRTUAL'){var _0x287136={};_0x287136[_0xe19d5b[_0xd373('0x27')]]={'$like':'%'+_0x2869e5[_0xd373('0x2f')][_0xd373('0x3c')]+'%'};return _0x287136;}})});}_0xbc420b=_['merge']({},_0xbc420b,_0x2869e5['options']);var _0x5de74e={'where':_0xbc420b[_0xd373('0x39')]};return db['ZendeskAccount'][_0xd373('0x1a')](_0x5de74e)[_0xd373('0x22')](function(_0x4e5e80){_0x7dad3e['count']=_0x4e5e80;if(_0x2869e5['query'][_0xd373('0x3d')]){_0xbc420b[_0xd373('0x3e')]=[{'all':!![]}];}return db[_0xd373('0x3f')]['findAll'](_0xbc420b);})['then'](function(_0xb87e16){_0x7dad3e[_0xd373('0x40')]=_0xb87e16;return _0x7dad3e;})['then'](respondWithFilteredResult(_0x158825,_0xbc420b))[_0xd373('0x41')](handleError(_0x158825,null));};exports[_0xd373('0x42')]=function(_0x1e3de1,_0x9989e4){var _0x2d8c7d={'raw':![],'where':{'id':_0x1e3de1['params']['id']}},_0x4e8bc6={};_0x4e8bc6[_0xd373('0x2e')]=_[_0xd373('0x43')](db[_0xd373('0x3f')][_0xd373('0x44')]);_0x4e8bc6['query']=_[_0xd373('0x43')](_0x1e3de1['query']);_0x4e8bc6[_0xd373('0x30')]=_[_0xd373('0x31')](_0x4e8bc6[_0xd373('0x2e')],_0x4e8bc6[_0xd373('0x2f')]);_0x2d8c7d[_0xd373('0x32')]=_['intersection'](_0x4e8bc6[_0xd373('0x2e')],qs[_0xd373('0x33')](_0x1e3de1['query'][_0xd373('0x33')]));_0x2d8c7d[_0xd373('0x32')]=_0x2d8c7d[_0xd373('0x32')][_0xd373('0x34')]?_0x2d8c7d[_0xd373('0x32')]:_0x4e8bc6[_0xd373('0x2e')];if(_0x1e3de1[_0xd373('0x2f')][_0xd373('0x3d')]){_0x2d8c7d[_0xd373('0x3e')]=[{'all':!![]}];}_0x2d8c7d=_[_0xd373('0x3b')]({},_0x2d8c7d,_0x1e3de1['options']);return db['ZendeskAccount'][_0xd373('0x45')](_0x2d8c7d)['then'](handleEntityNotFound(_0x9989e4,null))[_0xd373('0x22')](respondWithResult(_0x9989e4,null))['catch'](handleError(_0x9989e4,null));};exports['create']=function(_0x5cbc16,_0x280598){return db[_0xd373('0x3f')][_0xd373('0x46')](_0x5cbc16[_0xd373('0x47')],{})[_0xd373('0x22')](respondWithResult(_0x280598,0xc9))[_0xd373('0x41')](handleError(_0x280598,null));};exports[_0xd373('0x21')]=function(_0x4d1088,_0x28ec3e){if(_0x4d1088['body']['id']){delete _0x4d1088[_0xd373('0x47')]['id'];}return db[_0xd373('0x3f')]['find']({'where':{'id':_0x4d1088[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x28ec3e,null))[_0xd373('0x22')](saveUpdates(_0x4d1088[_0xd373('0x47')],null))[_0xd373('0x22')](respondWithResult(_0x28ec3e,null))[_0xd373('0x41')](handleError(_0x28ec3e,null));};exports[_0xd373('0x23')]=function(_0x4bc631,_0x4971a0){return db['ZendeskAccount'][_0xd373('0x45')]({'where':{'id':_0x4bc631[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x4971a0,null))[_0xd373('0x22')](removeEntity(_0x4971a0,null))[_0xd373('0x41')](handleError(_0x4971a0,null));};exports['getConfigurations']=function(_0xae7067,_0xb6b583,_0x102101){var _0x473af2={};var _0x3b5e70={};var _0xa2758;var _0xc255ec;return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0xae7067[_0xd373('0x48')]['id']}})[_0xd373('0x22')](handleEntityNotFound(_0xb6b583,null))['then'](function(_0x4b2645){if(_0x4b2645){_0xa2758=_0x4b2645;_0x3b5e70['model']=_['keys'](db['ZendeskConfiguration']['rawAttributes']);_0x3b5e70[_0xd373('0x2f')]=_[_0xd373('0x43')](_0xae7067['query']);_0x3b5e70['filters']=_['intersection'](_0x3b5e70[_0xd373('0x2e')],_0x3b5e70[_0xd373('0x2f')]);_0x473af2['attributes']=_['intersection'](_0x3b5e70[_0xd373('0x2e')],qs[_0xd373('0x33')](_0xae7067[_0xd373('0x2f')][_0xd373('0x33')]));_0x473af2[_0xd373('0x32')]=_0x473af2['attributes'][_0xd373('0x34')]?_0x473af2[_0xd373('0x32')]:_0x3b5e70[_0xd373('0x2e')];_0x473af2[_0xd373('0x37')]=qs[_0xd373('0x38')](_0xae7067[_0xd373('0x2f')][_0xd373('0x38')]);_0x473af2[_0xd373('0x39')]=qs[_0xd373('0x30')](_[_0xd373('0x3a')](_0xae7067[_0xd373('0x2f')],_0x3b5e70[_0xd373('0x30')]));if(_0xae7067[_0xd373('0x2f')][_0xd373('0x3c')]){_0x473af2[_0xd373('0x39')]=_['merge'](_0x473af2[_0xd373('0x39')],{'$or':_[_0xd373('0x2a')](_0x473af2[_0xd373('0x32')],function(_0x4dba1d){var _0x2bdadf={};_0x2bdadf[_0x4dba1d]={'$like':'%'+_0xae7067['query'][_0xd373('0x3c')]+'%'};return _0x2bdadf;})});}_0x473af2=_['merge']({},_0x473af2,_0xae7067[_0xd373('0x4a')]);return _0xa2758[_0xd373('0x4b')](_0x473af2);}})[_0xd373('0x22')](function(_0x19924a){if(_0x19924a){_0xc255ec=_0x19924a[_0xd373('0x34')];if(!_0xae7067[_0xd373('0x2f')][_0xd373('0x35')](_0xd373('0x36'))){_0x473af2[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0xae7067[_0xd373('0x2f')][_0xd373('0x1b')]);_0x473af2[_0xd373('0x18')]=qs[_0xd373('0x18')](_0xae7067[_0xd373('0x2f')][_0xd373('0x18')]);}return _0xa2758[_0xd373('0x4b')](_0x473af2);}})[_0xd373('0x22')](function(_0x209e76){if(_0x209e76){return _0x209e76?{'count':_0xc255ec,'rows':_0x209e76}:null;}})[_0xd373('0x22')](respondWithResult(_0xb6b583,null))[_0xd373('0x41')](handleError(_0xb6b583,null));};exports[_0xd373('0x4c')]=function(_0x296242,_0x5133,_0x2ada2f){if(_0x296242[_0xd373('0x47')]['id']){delete _0x296242['body']['id'];}return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0x296242[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x5133,null))[_0xd373('0x22')](function(_0x2d9019){if(_0x2d9019){_0x296242[_0xd373('0x47')][_0xd373('0x4d')]=_0x2d9019['id'];_0x296242[_0xd373('0x47')][_0xd373('0x4e')]=integrations[_0xd373('0x4f')](_0x296242['body'][_0xd373('0x50')],_0x296242[_0xd373('0x47')][_0xd373('0x2c')]);_0x296242[_0xd373('0x47')][_0xd373('0x51')]=integrations[_0xd373('0x52')](_0x296242[_0xd373('0x47')][_0xd373('0x50')],_0x296242['body'][_0xd373('0x2c')]);return db['ZendeskConfiguration'][_0xd373('0x46')](_0x296242[_0xd373('0x47')],{'include':[{'model':db[_0xd373('0x53')],'as':_0xd373('0x4e')},{'model':db[_0xd373('0x53')],'as':_0xd373('0x51')}]});}return null;})[_0xd373('0x22')](respondWithResult(_0x5133,null))[_0xd373('0x41')](handleError(_0x5133,null));};exports['getFields']=function(_0x237f15,_0x5c5855,_0x40f5ad){var _0x27fcbe='';return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0x237f15[_0xd373('0x48')]['id']},'attributes':['id',_0xd373('0x54'),_0xd373('0x55'),'token',_0xd373('0x56'),_0xd373('0x57')]})[_0xd373('0x22')](handleEntityNotFound(_0x5c5855,null))['then'](function(_0x4035d4){if(_0x4035d4){_0x27fcbe=_0x4035d4[_0xd373('0x57')];var _0xaf9102=_0x27fcbe[_0xd373('0x58')](-0x1);if(_0xaf9102==='/'){_0x27fcbe=_0x27fcbe[_0xd373('0x59')](0x0,_0x27fcbe[_0xd373('0x5a')](_0xaf9102));}var _0x6c7c8d={'method':_0xd373('0x5b'),'uri':util[_0xd373('0x5c')](_0xd373('0x5d'),_0x27fcbe,_0xd373('0x5e')),'json':!![]};switch(_0x4035d4[_0xd373('0x56')]){case'password':_0x6c7c8d[_0xd373('0x5f')]={'Authorization':util[_0xd373('0x5c')](_0xd373('0x60'),new Buffer(util['format'](_0xd373('0x61'),_0x4035d4[_0xd373('0x54')],_0x4035d4[_0xd373('0x55')]))['toString'](_0xd373('0x62')))};break;case'token':_0x6c7c8d[_0xd373('0x5f')]={'Authorization':util[_0xd373('0x5c')](_0xd373('0x60'),new Buffer(util[_0xd373('0x5c')]('%s/token:%s',_0x4035d4[_0xd373('0x54')],_0x4035d4['token']))[_0xd373('0x63')](_0xd373('0x62')))};break;default:throw new db[(_0xd373('0x64'))][(_0xd373('0x65'))](_0xd373('0x66'));}return rp(_0x6c7c8d);}})[_0xd373('0x22')](function(_0x53c0a7){if(_0x53c0a7){var _0xb01a00=['subject',_0xd373('0x67'),'group','assignee'];_[_0xd373('0x68')](_0x53c0a7[_0xd373('0x5e')],function(_0x1cff58){return _0xb01a00[_0xd373('0x69')](_0x1cff58['type']);});return{'count':_0x53c0a7['ticket_fields'][_0xd373('0x34')],'rows':_[_0xd373('0x2a')](_0x53c0a7[_0xd373('0x5e')],function(_0x25bf55){return{'id':_0x25bf55['id'],'name':_0x25bf55[_0xd373('0x6a')]>0x7?_0x25bf55[_0xd373('0x6b')]:_0x25bf55[_0xd373('0x2c')],'custom':_0x25bf55[_0xd373('0x6a')]>0x7?!![]:![],'options':_0x25bf55[_0xd373('0x6c')]?_0x25bf55[_0xd373('0x6c')]:_0x25bf55['custom_field_options']?_0x25bf55[_0xd373('0x6d')]:[]};})};}})[_0xd373('0x22')](respondWithResult(_0x5c5855,null))[_0xd373('0x41')](function(_0xa77a42){var _0x9bdd39=_0x237f15[_0xd373('0x2f')][_0xd373('0x6e')]?0x1f4:_0xa77a42['statusCode']||0x1f4;logger[_0xd373('0x25')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x9bdd39,JSON[_0xd373('0x6f')](_0xa77a42));delete _0xa77a42[_0xd373('0x27')];if(_0x9bdd39===0x191){_0x9bdd39=0x190;}_0x5c5855[_0xd373('0x15')](_0x9bdd39)[_0xd373('0x28')](_0x237f15[_0xd373('0x2f')][_0xd373('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0xa77a42[_0xd373('0x70')]}:_0xa77a42);});};
\ No newline at end of file
index 4a6a9d2..2dd6bd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf477=['exports','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0x522a18,_0x522677){var _0x5f31c0=function(_0x5b5fcb){while(--_0x5b5fcb){_0x522a18['push'](_0x522a18['shift']());}};_0x5f31c0(++_0x522677);}(_0xf477,0xb8));var _0x7f47=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xf477[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x7f47('0x0'));var util=require(_0x7f47('0x1'));var logger=require(_0x7f47('0x2'))(_0x7f47('0x3'));var moment=require(_0x7f47('0x4'));var BPromise=require(_0x7f47('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f47('0x6'));var rimraf=require(_0x7f47('0x7'));var config=require(_0x7f47('0x8'));var attributes=require(_0x7f47('0x9'));var integrations=require(_0x7f47('0xa'));module[_0x7f47('0xb')]=function(_0x407f70,_0x12aa2f){return _0x407f70['define']('ZendeskAccount',attributes,{'tableName':_0x7f47('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6995=['../../config/logger','request-promise','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount'];(function(_0x412b2a,_0x11fb8a){var _0x5872e3=function(_0x202191){while(--_0x202191){_0x412b2a['push'](_0x412b2a['shift']());}};_0x5872e3(++_0x11fb8a);}(_0x6995,0x156));var _0x5699=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x6995[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5699('0x0'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5699('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5699('0x2'));var config=require(_0x5699('0x3'));var attributes=require(_0x5699('0x4'));var integrations=require(_0x5699('0x5'));module[_0x5699('0x6')]=function(_0x20dae4,_0x2fabbe){return _0x20dae4[_0x5699('0x7')](_0x5699('0x8'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c8f68d..55698d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24f=['jayson/promise','request','then','info','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','message','ZendeskAccount,\x20%s,\x20%s','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','attributes','include','map','stringify','where','model','ShowZendeskAccount','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0xa24f,0x118));var _0xfa24=function(_0x9d679d,_0x4dd38a){_0x9d679d=_0x9d679d-0x0;var _0x3ce1dc=_0xa24f[_0x9d679d];return _0x3ce1dc;};'use strict';var _=require('lodash');var util=require(_0xfa24('0x0'));var moment=require(_0xfa24('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfa24('0x2'));var db=require(_0xfa24('0x3'))['db'];var utils=require(_0xfa24('0x4'));var logger=require(_0xfa24('0x5'))(_0xfa24('0x6'));var config=require(_0xfa24('0x7'));var jayson=require(_0xfa24('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1b54b3,_0x59f776,_0x2b5160){return new BPromise(function(_0x831fd1,_0x334511){return client[_0xfa24('0x9')](_0x1b54b3,_0x2b5160)[_0xfa24('0xa')](function(_0x2b00c7){logger[_0xfa24('0xb')]('ZendeskAccount,\x20%s,\x20%s',_0x59f776,_0xfa24('0xc'));logger[_0xfa24('0xd')](_0xfa24('0xe'),_0x59f776,_0xfa24('0xc'),JSON['stringify'](_0x2b00c7));if(_0x2b00c7[_0xfa24('0xf')]){if(_0x2b00c7[_0xfa24('0xf')]['code']===0x1f4){logger[_0xfa24('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x59f776,_0x2b00c7['error'][_0xfa24('0x10')]);return _0x334511(_0x2b00c7[_0xfa24('0xf')][_0xfa24('0x10')]);}logger['error'](_0xfa24('0x11'),_0x59f776,_0x2b00c7['error'][_0xfa24('0x10')]);return _0x831fd1(_0x2b00c7[_0xfa24('0xf')][_0xfa24('0x10')]);}else{logger[_0xfa24('0xb')](_0xfa24('0x11'),_0x59f776,'request\x20sent');_0x831fd1(_0x2b00c7[_0xfa24('0x12')]['message']);}})[_0xfa24('0x13')](function(_0x5783d2){logger[_0xfa24('0xf')](_0xfa24('0x11'),_0x59f776,_0x5783d2);_0x334511(_0x5783d2);});});}exports[_0xfa24('0x14')]=function(_0x2e330a){var _0x3aa939=this;return new Promise(function(_0x9b08d0,_0x1373ad){return db[_0xfa24('0x15')][_0xfa24('0x16')]({'raw':_0x2e330a[_0xfa24('0x17')]?_0x2e330a[_0xfa24('0x17')][_0xfa24('0x18')]===undefined?!![]:![]:!![],'where':_0x2e330a[_0xfa24('0x17')]?_0x2e330a[_0xfa24('0x17')]['where']||null:null,'attributes':_0x2e330a['options']?_0x2e330a[_0xfa24('0x17')][_0xfa24('0x19')]||null:null,'limit':_0x2e330a[_0xfa24('0x17')]?_0x2e330a[_0xfa24('0x17')]['limit']||null:null,'include':_0x2e330a[_0xfa24('0x17')]?_0x2e330a['options'][_0xfa24('0x1a')]?_[_0xfa24('0x1b')](_0x2e330a['options'][_0xfa24('0x1a')],function(_0x46adc4){return{'model':db[_0x46adc4['model']],'as':_0x46adc4['as'],'attributes':_0x46adc4['attributes'],'include':_0x46adc4['include']?_[_0xfa24('0x1b')](_0x46adc4['include'],function(_0x3e84cf){return{'model':db[_0x3e84cf['model']],'as':_0x3e84cf['as'],'attributes':_0x3e84cf[_0xfa24('0x19')],'include':_0x3e84cf[_0xfa24('0x1a')]?_[_0xfa24('0x1b')](_0x3e84cf['include'],function(_0x585106){return{'model':db[_0x585106['model']],'as':_0x585106['as'],'attributes':_0x585106[_0xfa24('0x19')]};}):[]};}):[]};}):[]:[]})[_0xfa24('0xa')](function(_0x692fa0){logger['info'](_0xfa24('0x14'),_0x2e330a);logger[_0xfa24('0xd')]('GetZendeskAccount',_0x2e330a,JSON[_0xfa24('0x1c')](_0x692fa0));_0x9b08d0(_0x692fa0);})[_0xfa24('0x13')](function(_0x54ebda){logger['error']('GetZendeskAccount',_0x54ebda[_0xfa24('0x10')],_0x2e330a);_0x1373ad(_0x3aa939[_0xfa24('0xf')](0x1f4,_0x54ebda[_0xfa24('0x10')]));});});};exports['ShowZendeskAccount']=function(_0x134f2b){var _0x17e6d2=this;return new Promise(function(_0x9572b6,_0x1716e8){return db[_0xfa24('0x15')]['find']({'raw':_0x134f2b[_0xfa24('0x17')]?_0x134f2b[_0xfa24('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x134f2b[_0xfa24('0x17')]?_0x134f2b['options'][_0xfa24('0x1d')]||null:null,'attributes':_0x134f2b['options']?_0x134f2b[_0xfa24('0x17')][_0xfa24('0x19')]||null:null,'include':_0x134f2b[_0xfa24('0x17')]?_0x134f2b['options'][_0xfa24('0x1a')]?_['map'](_0x134f2b[_0xfa24('0x17')][_0xfa24('0x1a')],function(_0x12d33f){return{'model':db[_0x12d33f[_0xfa24('0x1e')]],'as':_0x12d33f['as'],'attributes':_0x12d33f[_0xfa24('0x19')],'include':_0x12d33f[_0xfa24('0x1a')]?_['map'](_0x12d33f[_0xfa24('0x1a')],function(_0x32d99f){return{'model':db[_0x32d99f[_0xfa24('0x1e')]],'as':_0x32d99f['as'],'attributes':_0x32d99f[_0xfa24('0x19')],'include':_0x32d99f[_0xfa24('0x1a')]?_[_0xfa24('0x1b')](_0x32d99f[_0xfa24('0x1a')],function(_0x48b5b1){return{'model':db[_0x48b5b1['model']],'as':_0x48b5b1['as'],'attributes':_0x48b5b1[_0xfa24('0x19')]};}):[]};}):[]};}):[]:[]})[_0xfa24('0xa')](function(_0x1bf0de){logger[_0xfa24('0xb')](_0xfa24('0x1f'),_0x134f2b);logger[_0xfa24('0xd')](_0xfa24('0x1f'),_0x134f2b,JSON[_0xfa24('0x1c')](_0x1bf0de));_0x9572b6(_0x1bf0de);})[_0xfa24('0x13')](function(_0x40f478){logger['error']('ShowZendeskAccount',_0x40f478['message'],_0x134f2b);_0x1716e8(_0x17e6d2['error'](0x1f4,_0x40f478[_0xfa24('0x10')]));});});};
\ No newline at end of file
+var _0x05eb=['then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZendeskAccount','findAll','raw','options','attributes','limit','include','model','map','debug','ZendeskAccount','find','where','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x23ca4d,_0x5c2a32){var _0x435432=function(_0xe1a5e5){while(--_0xe1a5e5){_0x23ca4d['push'](_0x23ca4d['shift']());}};_0x435432(++_0x5c2a32);}(_0x05eb,0x1bc));var _0xb05e=function(_0x213a1a,_0x3456c0){_0x213a1a=_0x213a1a-0x0;var _0x449ec7=_0x05eb[_0x213a1a];return _0x449ec7;};'use strict';var _=require(_0xb05e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb05e('0x1'));var rs=require(_0xb05e('0x2'));var fs=require('fs');var Redis=require(_0xb05e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb05e('0x4'));var logger=require(_0xb05e('0x5'))(_0xb05e('0x6'));var config=require(_0xb05e('0x7'));var jayson=require(_0xb05e('0x8'));var client=jayson['client'][_0xb05e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x27cadc,_0x50b109,_0x147e6b){return new BPromise(function(_0x1198a8,_0xfd0576){return client[_0xb05e('0xa')](_0x27cadc,_0x147e6b)[_0xb05e('0xb')](function(_0x53fb6b){logger[_0xb05e('0xc')](_0xb05e('0xd'),_0x50b109,_0xb05e('0xe'));logger['debug'](_0xb05e('0xf'),_0x50b109,_0xb05e('0xe'),JSON[_0xb05e('0x10')](_0x53fb6b));if(_0x53fb6b[_0xb05e('0x11')]){if(_0x53fb6b[_0xb05e('0x11')][_0xb05e('0x12')]===0x1f4){logger[_0xb05e('0x11')](_0xb05e('0xd'),_0x50b109,_0x53fb6b[_0xb05e('0x11')][_0xb05e('0x13')]);return _0xfd0576(_0x53fb6b['error'][_0xb05e('0x13')]);}logger[_0xb05e('0x11')](_0xb05e('0xd'),_0x50b109,_0x53fb6b[_0xb05e('0x11')]['message']);return _0x1198a8(_0x53fb6b[_0xb05e('0x11')]['message']);}else{logger[_0xb05e('0xc')](_0xb05e('0xd'),_0x50b109,'request\x20sent');_0x1198a8(_0x53fb6b[_0xb05e('0x14')][_0xb05e('0x13')]);}})[_0xb05e('0x15')](function(_0x10bd8b){logger[_0xb05e('0x11')](_0xb05e('0xd'),_0x50b109,_0x10bd8b);_0xfd0576(_0x10bd8b);});});}exports[_0xb05e('0x16')]=function(_0x466ea1){var _0x3aa4cc=this;return new Promise(function(_0x35a906,_0x580903){return db['ZendeskAccount'][_0xb05e('0x17')]({'raw':_0x466ea1['options']?_0x466ea1['options'][_0xb05e('0x18')]===undefined?!![]:![]:!![],'where':_0x466ea1['options']?_0x466ea1[_0xb05e('0x19')]['where']||null:null,'attributes':_0x466ea1['options']?_0x466ea1[_0xb05e('0x19')][_0xb05e('0x1a')]||null:null,'limit':_0x466ea1[_0xb05e('0x19')]?_0x466ea1['options'][_0xb05e('0x1b')]||null:null,'include':_0x466ea1[_0xb05e('0x19')]?_0x466ea1[_0xb05e('0x19')]['include']?_['map'](_0x466ea1[_0xb05e('0x19')][_0xb05e('0x1c')],function(_0x4c21e5){return{'model':db[_0x4c21e5[_0xb05e('0x1d')]],'as':_0x4c21e5['as'],'attributes':_0x4c21e5[_0xb05e('0x1a')],'include':_0x4c21e5[_0xb05e('0x1c')]?_[_0xb05e('0x1e')](_0x4c21e5['include'],function(_0x363e47){return{'model':db[_0x363e47['model']],'as':_0x363e47['as'],'attributes':_0x363e47[_0xb05e('0x1a')],'include':_0x363e47[_0xb05e('0x1c')]?_[_0xb05e('0x1e')](_0x363e47[_0xb05e('0x1c')],function(_0xd5959d){return{'model':db[_0xd5959d['model']],'as':_0xd5959d['as'],'attributes':_0xd5959d[_0xb05e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb05e('0xb')](function(_0x47dab0){logger[_0xb05e('0xc')]('GetZendeskAccount',_0x466ea1);logger[_0xb05e('0x1f')](_0xb05e('0x16'),_0x466ea1,JSON['stringify'](_0x47dab0));_0x35a906(_0x47dab0);})['catch'](function(_0x523626){logger[_0xb05e('0x11')](_0xb05e('0x16'),_0x523626[_0xb05e('0x13')],_0x466ea1);_0x580903(_0x3aa4cc['error'](0x1f4,_0x523626[_0xb05e('0x13')]));});});};exports['ShowZendeskAccount']=function(_0x4de189){var _0x3f272c=this;return new Promise(function(_0x115655,_0xeed9f5){return db[_0xb05e('0x20')][_0xb05e('0x21')]({'raw':_0x4de189[_0xb05e('0x19')]?_0x4de189[_0xb05e('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4de189[_0xb05e('0x19')]?_0x4de189['options'][_0xb05e('0x22')]||null:null,'attributes':_0x4de189[_0xb05e('0x19')]?_0x4de189[_0xb05e('0x19')]['attributes']||null:null,'include':_0x4de189[_0xb05e('0x19')]?_0x4de189[_0xb05e('0x19')]['include']?_['map'](_0x4de189[_0xb05e('0x19')][_0xb05e('0x1c')],function(_0xdc9741){return{'model':db[_0xdc9741[_0xb05e('0x1d')]],'as':_0xdc9741['as'],'attributes':_0xdc9741[_0xb05e('0x1a')],'include':_0xdc9741[_0xb05e('0x1c')]?_[_0xb05e('0x1e')](_0xdc9741[_0xb05e('0x1c')],function(_0x3acc33){return{'model':db[_0x3acc33[_0xb05e('0x1d')]],'as':_0x3acc33['as'],'attributes':_0x3acc33['attributes'],'include':_0x3acc33[_0xb05e('0x1c')]?_[_0xb05e('0x1e')](_0x3acc33[_0xb05e('0x1c')],function(_0xe3101e){return{'model':db[_0xe3101e[_0xb05e('0x1d')]],'as':_0xe3101e['as'],'attributes':_0xe3101e[_0xb05e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb05e('0xb')](function(_0x19d53b){logger[_0xb05e('0xc')]('ShowZendeskAccount',_0x4de189);logger[_0xb05e('0x1f')]('ShowZendeskAccount',_0x4de189,JSON[_0xb05e('0x10')](_0x19d53b));_0x115655(_0x19d53b);})['catch'](function(_0x19e0e8){logger[_0xb05e('0x11')]('ShowZendeskAccount',_0x19e0e8[_0xb05e('0x13')],_0x4de189);_0xeed9f5(_0x3f272c[_0xb05e('0x11')](0x1f4,_0x19e0e8['message']));});});};
\ No newline at end of file
index 998d427..89dfa0d 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','isAuthenticated','index','get','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/tags','getTags','post','create','setTags','put','/:id','delete','destroy','exports','multer','util'];(function(_0x2a690a,_0x4afc04){var _0x8ba65a=function(_0x84d6ce){while(--_0x84d6ce){_0x2a690a['push'](_0x2a690a['shift']());}};_0x8ba65a(++_0x4afc04);}(_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('./intZendeskConfiguration.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0x9')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0x9')]('/:id/descriptions',auth[_0x0d8b('0x7')](),controller['getDescriptions']);router[_0x0d8b('0x9')](_0x0d8b('0xf'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x10')]);router[_0x0d8b('0x11')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0xf'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x13')]);router[_0x0d8b('0x14')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller['update']);router[_0x0d8b('0x16')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x17')]);module[_0x0d8b('0x18')]=router;
\ No newline at end of file
+var _0xe5b5=['../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x217b53,_0x3983af){var _0x897e2e=function(_0x439a26){while(--_0x439a26){_0x217b53['push'](_0x217b53['shift']());}};_0x897e2e(++_0x3983af);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x2bfd4f,_0x1bbf2c){_0x2bfd4f=_0x2bfd4f-0x0;var _0x341849=_0xe5b5[_0x2bfd4f];return _0x341849;};'use strict';var multer=require(_0x5e5b('0x0'));var util=require(_0x5e5b('0x1'));var path=require(_0x5e5b('0x2'));var timeout=require(_0x5e5b('0x3'));var express=require(_0x5e5b('0x4'));var router=express[_0x5e5b('0x5')]();var fs_extra=require(_0x5e5b('0x6'));var auth=require(_0x5e5b('0x7'));var interaction=require(_0x5e5b('0x8'));var config=require(_0x5e5b('0x9'));var controller=require(_0x5e5b('0xa'));router[_0x5e5b('0xb')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xd')]);router[_0x5e5b('0xb')](_0x5e5b('0xe'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xf')]);router[_0x5e5b('0xb')](_0x5e5b('0x10'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x11')]);router[_0x5e5b('0xb')]('/:id/subjects',auth[_0x5e5b('0xc')](),controller['getSubjects']);router[_0x5e5b('0xb')](_0x5e5b('0x12'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x13')]);router['get']('/:id/tags',auth['isAuthenticated'](),controller[_0x5e5b('0x14')]);router[_0x5e5b('0x15')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x16')]);router[_0x5e5b('0x15')](_0x5e5b('0x17'),auth[_0x5e5b('0xc')](),controller['setTags']);router[_0x5e5b('0x18')](_0x5e5b('0xe'),auth['isAuthenticated'](),controller[_0x5e5b('0x19')]);router['delete']('/:id',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x1a')]);module[_0x5e5b('0x1b')]=router;
\ No newline at end of file
index f52ce9d..f851bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe751=['STRING','sequelize','exports'];(function(_0x132dec,_0x6f2159){var _0x3e56c4=function(_0x17e37d){while(--_0x17e37d){_0x132dec['push'](_0x132dec['shift']());}};_0x3e56c4(++_0x6f2159);}(_0xe751,0x6a));var _0x1e75=function(_0xa824d,_0x47ef38){_0xa824d=_0xa824d-0x0;var _0x29f965=_0xe751[_0xa824d];return _0x29f965;};'use strict';var Sequelize=require(_0x1e75('0x0'));module[_0x1e75('0x1')]={'name':{'type':Sequelize[_0x1e75('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xeb78=['STRING','sequelize','exports'];(function(_0x3c4341,_0x54774f){var _0x464309=function(_0x4f65b9){while(--_0x4f65b9){_0x3c4341['push'](_0x3c4341['shift']());}};_0x464309(++_0x54774f);}(_0xeb78,0x18d));var _0x8eb7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xeb78[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x8eb7('0x0'));module[_0x8eb7('0x1')]={'name':{'type':Sequelize[_0x8eb7('0x2')]},'description':{'type':Sequelize[_0x8eb7('0x2')]}};
\ No newline at end of file
index df2fb99..67a1cd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80f6=['fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','find','findOne','order','getFields','getSubjects','ZendeskField','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection'];(function(_0x3279cb,_0x2d050d){var _0x235edc=function(_0x3b223c){while(--_0x3b223c){_0x3279cb['push'](_0x3279cb['shift']());}};_0x235edc(++_0x2d050d);}(_0x80f6,0x16f));var _0x680f=function(_0x206c35,_0x46b5ee){_0x206c35=_0x206c35-0x0;var _0x3d6c32=_0x80f6[_0x206c35];return _0x3d6c32;};'use strict';var emlformat=require(_0x680f('0x0'));var rimraf=require(_0x680f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x680f('0x2'));var moment=require(_0x680f('0x3'));var BPromise=require(_0x680f('0x4'));var Mustache=require('mustache');var util=require(_0x680f('0x5'));var path=require('path');var sox=require(_0x680f('0x6'));var csv=require(_0x680f('0x7'));var ejs=require(_0x680f('0x8'));var fs=require('fs');var fs_extra=require(_0x680f('0x9'));var _=require(_0x680f('0xa'));var squel=require(_0x680f('0xb'));var crypto=require('crypto');var jsforce=require(_0x680f('0xc'));var deskjs=require(_0x680f('0xd'));var toCsv=require(_0x680f('0x7'));var querystring=require(_0x680f('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x680f('0xf'));var qs=require(_0x680f('0x10'));var as=require(_0x680f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x680f('0x12'))(_0x680f('0x13'));var utils=require('../../config/utils');var config=require(_0x680f('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe67271,_0x1085f4){_0x1085f4=_0x1085f4||0xcc;return function(_0x35c94d){if(_0x35c94d){return _0xe67271['sendStatus'](_0x1085f4);}return _0xe67271[_0x680f('0x15')](_0x1085f4)[_0x680f('0x16')]();};}function respondWithResult(_0x4d6208,_0x274b16){_0x274b16=_0x274b16||0xc8;return function(_0x280f68){if(_0x280f68){return _0x4d6208[_0x680f('0x15')](_0x274b16)[_0x680f('0x17')](_0x280f68);}};}function respondWithFilteredResult(_0x2709a5,_0x286c5b){return function(_0x1b04b4){if(_0x1b04b4){var _0xa9e203=typeof _0x286c5b[_0x680f('0x18')]===_0x680f('0x19')&&typeof _0x286c5b[_0x680f('0x1a')]==='undefined';var _0x51322b=_0x1b04b4[_0x680f('0x1b')];var _0x45a087=_0xa9e203?0x0:_0x286c5b[_0x680f('0x18')];var _0x1fb9d5=_0xa9e203?_0x1b04b4[_0x680f('0x1b')]:_0x286c5b[_0x680f('0x18')]+_0x286c5b['limit'];var _0x38ae1b;if(_0x1fb9d5>=_0x51322b){_0x1fb9d5=_0x51322b;_0x38ae1b=0xc8;}else{_0x38ae1b=0xce;}_0x2709a5[_0x680f('0x15')](_0x38ae1b);return _0x2709a5[_0x680f('0x1c')](_0x680f('0x1d'),_0x45a087+'-'+_0x1fb9d5+'/'+_0x51322b)[_0x680f('0x17')](_0x1b04b4);}return null;};}function patchUpdates(_0x8055db){return function(_0x4967d0){try{jsonpatch[_0x680f('0x1e')](_0x4967d0,_0x8055db,!![]);}catch(_0x5e24e2){return BPromise[_0x680f('0x1f')](_0x5e24e2);}return _0x4967d0[_0x680f('0x20')]();};}function saveUpdates(_0x1f9eef,_0x42958b){return function(_0x29d705){if(_0x29d705){return _0x29d705[_0x680f('0x21')](_0x1f9eef)[_0x680f('0x22')](function(_0x4bee30){return _0x4bee30;});}return null;};}function removeEntity(_0x1be13a,_0x30006c){return function(_0x1bbb58){if(_0x1bbb58){return _0x1bbb58[_0x680f('0x23')]()['then'](function(){_0x1be13a[_0x680f('0x15')](0xcc)[_0x680f('0x16')]();});}};}function handleEntityNotFound(_0x5e12f2,_0x4873b9){return function(_0x52793e){if(!_0x52793e){_0x5e12f2[_0x680f('0x24')](0x194);}return _0x52793e;};}function handleError(_0x324efc,_0x4acc12){_0x4acc12=_0x4acc12||0x1f4;return function(_0x147b75){logger[_0x680f('0x25')](_0x147b75[_0x680f('0x26')]);if(_0x147b75['name']){delete _0x147b75[_0x680f('0x27')];}_0x324efc[_0x680f('0x15')](_0x4acc12)[_0x680f('0x28')](_0x147b75);};}exports[_0x680f('0x29')]=function(_0x5104fd,_0x3a75b3){var _0x44a11c={},_0x1c7007={},_0x4034ff={'count':0x0,'rows':[]};var _0x104cd8=_[_0x680f('0x2a')](db[_0x680f('0x2b')][_0x680f('0x2c')],function(_0x3aee83){return{'name':_0x3aee83[_0x680f('0x2d')],'type':_0x3aee83['type'][_0x680f('0x2e')]};});_0x1c7007[_0x680f('0x2f')]=_[_0x680f('0x2a')](_0x104cd8,_0x680f('0x27'));_0x1c7007[_0x680f('0x30')]=_[_0x680f('0x31')](_0x5104fd[_0x680f('0x30')]);_0x1c7007[_0x680f('0x32')]=_['intersection'](_0x1c7007['model'],_0x1c7007[_0x680f('0x30')]);_0x44a11c[_0x680f('0x33')]=_[_0x680f('0x34')](_0x1c7007['model'],qs[_0x680f('0x35')](_0x5104fd[_0x680f('0x30')][_0x680f('0x35')]));_0x44a11c[_0x680f('0x33')]=_0x44a11c['attributes'][_0x680f('0x36')]?_0x44a11c[_0x680f('0x33')]:_0x1c7007[_0x680f('0x2f')];if(!_0x5104fd[_0x680f('0x30')][_0x680f('0x37')](_0x680f('0x38'))){_0x44a11c[_0x680f('0x1a')]=qs[_0x680f('0x1a')](_0x5104fd[_0x680f('0x30')][_0x680f('0x1a')]);_0x44a11c[_0x680f('0x18')]=qs[_0x680f('0x18')](_0x5104fd['query']['offset']);}_0x44a11c['order']=qs[_0x680f('0x39')](_0x5104fd[_0x680f('0x30')]['sort']);_0x44a11c[_0x680f('0x3a')]=qs['filters'](_[_0x680f('0x3b')](_0x5104fd[_0x680f('0x30')],_0x1c7007[_0x680f('0x32')]),_0x104cd8);if(_0x5104fd[_0x680f('0x30')][_0x680f('0x3c')]){_0x44a11c[_0x680f('0x3a')]=_[_0x680f('0x3d')](_0x44a11c[_0x680f('0x3a')],{'$or':_['map'](_0x104cd8,function(_0x3bd026){if(_0x3bd026[_0x680f('0x3e')]!==_0x680f('0x3f')){var _0x1108e8={};_0x1108e8[_0x3bd026[_0x680f('0x27')]]={'$like':'%'+_0x5104fd[_0x680f('0x30')][_0x680f('0x3c')]+'%'};return _0x1108e8;}})});}_0x44a11c=_[_0x680f('0x3d')]({},_0x44a11c,_0x5104fd[_0x680f('0x40')]);var _0x47abd5={'where':_0x44a11c[_0x680f('0x3a')]};return db[_0x680f('0x2b')][_0x680f('0x1b')](_0x47abd5)[_0x680f('0x22')](function(_0x21079f){_0x4034ff[_0x680f('0x1b')]=_0x21079f;if(_0x5104fd['query'][_0x680f('0x41')]){_0x44a11c[_0x680f('0x42')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x680f('0x43')](_0x44a11c);})[_0x680f('0x22')](function(_0x4e2399){_0x4034ff[_0x680f('0x44')]=_0x4e2399;return _0x4034ff;})['then'](respondWithFilteredResult(_0x3a75b3,_0x44a11c))['catch'](handleError(_0x3a75b3,null));};exports[_0x680f('0x45')]=function(_0x1fd198,_0x1cf454){var _0xdc61fc={'raw':![],'where':{'id':_0x1fd198[_0x680f('0x46')]['id']}},_0x4de24a={};_0x4de24a[_0x680f('0x2f')]=_['keys'](db[_0x680f('0x2b')][_0x680f('0x2c')]);_0x4de24a[_0x680f('0x30')]=_[_0x680f('0x31')](_0x1fd198[_0x680f('0x30')]);_0x4de24a[_0x680f('0x32')]=_[_0x680f('0x34')](_0x4de24a[_0x680f('0x2f')],_0x4de24a[_0x680f('0x30')]);_0xdc61fc['attributes']=_[_0x680f('0x34')](_0x4de24a[_0x680f('0x2f')],qs[_0x680f('0x35')](_0x1fd198['query'][_0x680f('0x35')]));_0xdc61fc['attributes']=_0xdc61fc[_0x680f('0x33')][_0x680f('0x36')]?_0xdc61fc[_0x680f('0x33')]:_0x4de24a[_0x680f('0x2f')];if(_0x1fd198['query'][_0x680f('0x41')]){_0xdc61fc[_0x680f('0x42')]=[{'all':!![]}];}_0xdc61fc=_[_0x680f('0x3d')]({},_0xdc61fc,_0x1fd198[_0x680f('0x40')]);return db[_0x680f('0x2b')]['find'](_0xdc61fc)[_0x680f('0x22')](handleEntityNotFound(_0x1cf454,null))[_0x680f('0x22')](respondWithResult(_0x1cf454,null))[_0x680f('0x47')](handleError(_0x1cf454,null));};exports[_0x680f('0x48')]=function(_0x5ac47d,_0x360e39){return db[_0x680f('0x2b')][_0x680f('0x48')](_0x5ac47d[_0x680f('0x49')],{})[_0x680f('0x22')](respondWithResult(_0x360e39,0xc9))[_0x680f('0x47')](handleError(_0x360e39,null));};exports['update']=function(_0x82c6ba,_0x33430d){if(_0x82c6ba[_0x680f('0x49')]['id']){delete _0x82c6ba[_0x680f('0x49')]['id'];}return db[_0x680f('0x2b')][_0x680f('0x4a')]({'where':{'id':_0x82c6ba[_0x680f('0x46')]['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x33430d,null))[_0x680f('0x22')](saveUpdates(_0x82c6ba[_0x680f('0x49')],null))['then'](respondWithResult(_0x33430d,null))[_0x680f('0x47')](handleError(_0x33430d,null));};exports['destroy']=function(_0x2a2928,_0x16607a){return db[_0x680f('0x2b')][_0x680f('0x4a')]({'where':{'id':_0x2a2928['params']['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x16607a,null))[_0x680f('0x22')](removeEntity(_0x16607a,null))[_0x680f('0x47')](handleError(_0x16607a,null));};exports['getFields']=function(_0x1e435c,_0x4f4389,_0x48fd93){var _0x38e461={};var _0x5bd3d6={};var _0x257b9a;var _0x403fbf;return db[_0x680f('0x2b')][_0x680f('0x4b')]({'where':{'id':_0x1e435c[_0x680f('0x46')]['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x4f4389,null))[_0x680f('0x22')](function(_0x2c6880){if(_0x2c6880){_0x257b9a=_0x2c6880;_0x5bd3d6['model']=_['keys'](db['ZendeskField']['rawAttributes']);_0x5bd3d6['query']=_[_0x680f('0x31')](_0x1e435c[_0x680f('0x30')]);_0x5bd3d6['filters']=_[_0x680f('0x34')](_0x5bd3d6[_0x680f('0x2f')],_0x5bd3d6['query']);_0x38e461['attributes']=_[_0x680f('0x34')](_0x5bd3d6[_0x680f('0x2f')],qs[_0x680f('0x35')](_0x1e435c[_0x680f('0x30')][_0x680f('0x35')]));_0x38e461['attributes']=_0x38e461[_0x680f('0x33')][_0x680f('0x36')]?_0x38e461['attributes']:_0x5bd3d6[_0x680f('0x2f')];_0x38e461[_0x680f('0x4c')]=qs[_0x680f('0x39')](_0x1e435c[_0x680f('0x30')]['sort']);_0x38e461[_0x680f('0x3a')]=qs[_0x680f('0x32')](_[_0x680f('0x3b')](_0x1e435c[_0x680f('0x30')],_0x5bd3d6['filters']));if(_0x1e435c[_0x680f('0x30')][_0x680f('0x3c')]){_0x38e461['where']=_[_0x680f('0x3d')](_0x38e461[_0x680f('0x3a')],{'$or':_[_0x680f('0x2a')](_0x38e461[_0x680f('0x33')],function(_0x5f0450){var _0x84ae61={};_0x84ae61[_0x5f0450]={'$like':'%'+_0x1e435c[_0x680f('0x30')][_0x680f('0x3c')]+'%'};return _0x84ae61;})});}_0x38e461=_[_0x680f('0x3d')]({},_0x38e461,_0x1e435c[_0x680f('0x40')]);return _0x257b9a[_0x680f('0x4d')](_0x38e461);}})[_0x680f('0x22')](function(_0x2a4d1f){if(_0x2a4d1f){_0x403fbf=_0x2a4d1f[_0x680f('0x36')];if(!_0x1e435c[_0x680f('0x30')][_0x680f('0x37')](_0x680f('0x38'))){_0x38e461[_0x680f('0x1a')]=qs[_0x680f('0x1a')](_0x1e435c['query']['limit']);_0x38e461[_0x680f('0x18')]=qs['offset'](_0x1e435c[_0x680f('0x30')][_0x680f('0x18')]);}return _0x257b9a[_0x680f('0x4d')](_0x38e461);}})[_0x680f('0x22')](function(_0x335873){if(_0x335873){return _0x335873?{'count':_0x403fbf,'rows':_0x335873}:null;}})['then'](respondWithResult(_0x4f4389,null))[_0x680f('0x47')](handleError(_0x4f4389,null));};exports[_0x680f('0x4e')]=function(_0x510539,_0x2e19d1,_0x53a8ac){var _0x76f9ed={};var _0x2ad056={};var _0x2fcacc;var _0x1fade7;return db[_0x680f('0x2b')][_0x680f('0x4b')]({'where':{'id':_0x510539[_0x680f('0x46')]['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x2e19d1,null))[_0x680f('0x22')](function(_0x46aba3){if(_0x46aba3){_0x2fcacc=_0x46aba3;_0x2ad056[_0x680f('0x2f')]=_['keys'](db[_0x680f('0x4f')]['rawAttributes']);_0x2ad056['query']=_[_0x680f('0x31')](_0x510539[_0x680f('0x30')]);_0x2ad056['filters']=_[_0x680f('0x34')](_0x2ad056['model'],_0x2ad056[_0x680f('0x30')]);_0x76f9ed[_0x680f('0x33')]=_['intersection'](_0x2ad056[_0x680f('0x2f')],qs[_0x680f('0x35')](_0x510539[_0x680f('0x30')][_0x680f('0x35')]));_0x76f9ed[_0x680f('0x33')]=_0x76f9ed[_0x680f('0x33')]['length']?_0x76f9ed[_0x680f('0x33')]:_0x2ad056['model'];_0x76f9ed[_0x680f('0x4c')]=qs[_0x680f('0x39')](_0x510539[_0x680f('0x30')][_0x680f('0x39')]);_0x76f9ed['where']=qs[_0x680f('0x32')](_[_0x680f('0x3b')](_0x510539[_0x680f('0x30')],_0x2ad056[_0x680f('0x32')]));if(_0x510539[_0x680f('0x30')][_0x680f('0x3c')]){_0x76f9ed['where']=_[_0x680f('0x3d')](_0x76f9ed['where'],{'$or':_[_0x680f('0x2a')](_0x76f9ed[_0x680f('0x33')],function(_0x1ad1e9){var _0x2275ce={};_0x2275ce[_0x1ad1e9]={'$like':'%'+_0x510539['query'][_0x680f('0x3c')]+'%'};return _0x2275ce;})});}_0x76f9ed=_[_0x680f('0x3d')]({},_0x76f9ed,_0x510539['options']);return _0x2fcacc['getSubjects'](_0x76f9ed);}})['then'](function(_0x5eb008){if(_0x5eb008){_0x1fade7=_0x5eb008['length'];if(!_0x510539[_0x680f('0x30')][_0x680f('0x37')](_0x680f('0x38'))){_0x76f9ed[_0x680f('0x1a')]=qs['limit'](_0x510539['query'][_0x680f('0x1a')]);_0x76f9ed[_0x680f('0x18')]=qs['offset'](_0x510539[_0x680f('0x30')][_0x680f('0x18')]);}return _0x2fcacc['getSubjects'](_0x76f9ed);}})['then'](function(_0x3613b7){if(_0x3613b7){return _0x3613b7?{'count':_0x1fade7,'rows':_0x3613b7}:null;}})[_0x680f('0x22')](respondWithResult(_0x2e19d1,null))[_0x680f('0x47')](handleError(_0x2e19d1,null));};exports['getDescriptions']=function(_0x50b007,_0x1e2174,_0x2798f3){var _0x9da49b={};var _0x3b6175={};var _0x22b858;var _0x11fd4d;return db[_0x680f('0x2b')]['findOne']({'where':{'id':_0x50b007[_0x680f('0x46')]['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x1e2174,null))[_0x680f('0x22')](function(_0xcb5269){if(_0xcb5269){_0x22b858=_0xcb5269;_0x3b6175[_0x680f('0x2f')]=_['keys'](db['ZendeskField'][_0x680f('0x2c')]);_0x3b6175[_0x680f('0x30')]=_[_0x680f('0x31')](_0x50b007[_0x680f('0x30')]);_0x3b6175[_0x680f('0x32')]=_[_0x680f('0x34')](_0x3b6175[_0x680f('0x2f')],_0x3b6175[_0x680f('0x30')]);_0x9da49b[_0x680f('0x33')]=_['intersection'](_0x3b6175['model'],qs['fields'](_0x50b007[_0x680f('0x30')][_0x680f('0x35')]));_0x9da49b[_0x680f('0x33')]=_0x9da49b[_0x680f('0x33')]['length']?_0x9da49b['attributes']:_0x3b6175[_0x680f('0x2f')];_0x9da49b[_0x680f('0x4c')]=qs[_0x680f('0x39')](_0x50b007['query']['sort']);_0x9da49b[_0x680f('0x3a')]=qs['filters'](_[_0x680f('0x3b')](_0x50b007['query'],_0x3b6175[_0x680f('0x32')]));if(_0x50b007[_0x680f('0x30')][_0x680f('0x3c')]){_0x9da49b[_0x680f('0x3a')]=_[_0x680f('0x3d')](_0x9da49b['where'],{'$or':_['map'](_0x9da49b['attributes'],function(_0x123cde){var _0x54c534={};_0x54c534[_0x123cde]={'$like':'%'+_0x50b007['query']['filter']+'%'};return _0x54c534;})});}_0x9da49b=_[_0x680f('0x3d')]({},_0x9da49b,_0x50b007[_0x680f('0x40')]);return _0x22b858[_0x680f('0x50')](_0x9da49b);}})[_0x680f('0x22')](function(_0x478dd7){if(_0x478dd7){_0x11fd4d=_0x478dd7[_0x680f('0x36')];if(!_0x50b007[_0x680f('0x30')][_0x680f('0x37')](_0x680f('0x38'))){_0x9da49b['limit']=qs[_0x680f('0x1a')](_0x50b007[_0x680f('0x30')]['limit']);_0x9da49b[_0x680f('0x18')]=qs[_0x680f('0x18')](_0x50b007[_0x680f('0x30')]['offset']);}return _0x22b858['getDescriptions'](_0x9da49b);}})[_0x680f('0x22')](function(_0x4c5594){if(_0x4c5594){return _0x4c5594?{'count':_0x11fd4d,'rows':_0x4c5594}:null;}})['then'](respondWithResult(_0x1e2174,null))[_0x680f('0x47')](handleError(_0x1e2174,null));};exports[_0x680f('0x51')]=function(_0x1d0ada,_0x2d7db2,_0x17ec74){var _0xf9f44={};var _0x2a4f3e={};var _0x40557d;var _0x49774f;return db[_0x680f('0x2b')][_0x680f('0x4b')]({'where':{'id':_0x1d0ada['params']['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x2d7db2,null))[_0x680f('0x22')](function(_0xb8f0f4){if(_0xb8f0f4){_0x40557d=_0xb8f0f4;_0x2a4f3e[_0x680f('0x2f')]=_[_0x680f('0x31')](db[_0x680f('0x52')][_0x680f('0x2c')]);_0x2a4f3e['query']=_[_0x680f('0x31')](_0x1d0ada[_0x680f('0x30')]);_0x2a4f3e['filters']=_[_0x680f('0x34')](_0x2a4f3e['model'],_0x2a4f3e['query']);_0xf9f44['attributes']=_[_0x680f('0x34')](_0x2a4f3e[_0x680f('0x2f')],qs[_0x680f('0x35')](_0x1d0ada[_0x680f('0x30')][_0x680f('0x35')]));_0xf9f44[_0x680f('0x33')]=_0xf9f44[_0x680f('0x33')][_0x680f('0x36')]?_0xf9f44[_0x680f('0x33')]:_0x2a4f3e[_0x680f('0x2f')];_0xf9f44[_0x680f('0x4c')]=qs['sort'](_0x1d0ada[_0x680f('0x30')][_0x680f('0x39')]);_0xf9f44['where']=qs[_0x680f('0x32')](_[_0x680f('0x3b')](_0x1d0ada[_0x680f('0x30')],_0x2a4f3e[_0x680f('0x32')]));if(_0x1d0ada[_0x680f('0x30')][_0x680f('0x3c')]){_0xf9f44[_0x680f('0x3a')]=_['merge'](_0xf9f44['where'],{'$or':_[_0x680f('0x2a')](_0xf9f44[_0x680f('0x33')],function(_0x21ef32){var _0x2a75d3={};_0x2a75d3[_0x21ef32]={'$like':'%'+_0x1d0ada[_0x680f('0x30')]['filter']+'%'};return _0x2a75d3;})});}_0xf9f44=_['merge']({},_0xf9f44,_0x1d0ada['options']);return _0x40557d[_0x680f('0x51')](_0xf9f44);}})[_0x680f('0x22')](function(_0x48e5b3){if(_0x48e5b3){_0x49774f=_0x48e5b3[_0x680f('0x36')];if(!_0x1d0ada[_0x680f('0x30')]['hasOwnProperty'](_0x680f('0x38'))){_0xf9f44['limit']=qs['limit'](_0x1d0ada[_0x680f('0x30')][_0x680f('0x1a')]);_0xf9f44['offset']=qs[_0x680f('0x18')](_0x1d0ada[_0x680f('0x30')][_0x680f('0x18')]);}return _0x40557d[_0x680f('0x51')](_0xf9f44);}})[_0x680f('0x22')](function(_0x2e6b22){if(_0x2e6b22){return _0x2e6b22?{'count':_0x49774f,'rows':_0x2e6b22}:null;}})[_0x680f('0x22')](respondWithResult(_0x2d7db2,null))[_0x680f('0x47')](handleError(_0x2d7db2,null));};exports['setTags']=function(_0x215476,_0x159a6e,_0x5afdcf){if(_0x215476[_0x680f('0x49')]['id']){delete _0x215476[_0x680f('0x49')]['id'];}return db['ZendeskConfiguration'][_0x680f('0x4b')]({'where':{'id':_0x215476[_0x680f('0x46')]['id']}})[_0x680f('0x22')](handleEntityNotFound(_0x159a6e,null))[_0x680f('0x22')](function(_0x1c2b85){if(_0x1c2b85){return _0x1c2b85[_0x680f('0x53')](_0x215476[_0x680f('0x49')]['ids']||[]);}return null;})['then'](respondWithResult(_0x159a6e,null))[_0x680f('0x47')](handleError(_0x159a6e,null));};
\ No newline at end of file
+var _0xa11d=['type','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','ZendeskConfiguration','findAll','rows','catch','show','params','intersection','includeAll','merge','options','create','body','find','getFields','findOne','order','getSubjects','getDescriptions','ZendeskField','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','stack','name','index','map','rawAttributes','fieldName'];(function(_0x36ac88,_0x6988f6){var _0x634946=function(_0x45dc54){while(--_0x45dc54){_0x36ac88['push'](_0x36ac88['shift']());}};_0x634946(++_0x6988f6);}(_0xa11d,0xcb));var _0xda11=function(_0x16794e,_0x2a8464){_0x16794e=_0x16794e-0x0;var _0x62973=_0xa11d[_0x16794e];return _0x62973;};'use strict';var emlformat=require(_0xda11('0x0'));var rimraf=require(_0xda11('0x1'));var zipdir=require(_0xda11('0x2'));var jsonpatch=require(_0xda11('0x3'));var rp=require(_0xda11('0x4'));var moment=require(_0xda11('0x5'));var BPromise=require(_0xda11('0x6'));var Mustache=require('mustache');var util=require(_0xda11('0x7'));var path=require(_0xda11('0x8'));var sox=require(_0xda11('0x9'));var csv=require(_0xda11('0xa'));var ejs=require(_0xda11('0xb'));var fs=require('fs');var fs_extra=require(_0xda11('0xc'));var _=require(_0xda11('0xd'));var squel=require(_0xda11('0xe'));var crypto=require('crypto');var jsforce=require(_0xda11('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xda11('0xa'));var querystring=require('querystring');var Papa=require(_0xda11('0x10'));var Redis=require('ioredis');var authService=require(_0xda11('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xda11('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xda11('0x13'));var utils=require(_0xda11('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xda11('0x15'))['db'];function respondWithStatusCode(_0x536382,_0x5764c4){_0x5764c4=_0x5764c4||0xcc;return function(_0x4e5563){if(_0x4e5563){return _0x536382[_0xda11('0x16')](_0x5764c4);}return _0x536382[_0xda11('0x17')](_0x5764c4)[_0xda11('0x18')]();};}function respondWithResult(_0x29aafe,_0x32b7b5){_0x32b7b5=_0x32b7b5||0xc8;return function(_0x421151){if(_0x421151){return _0x29aafe[_0xda11('0x17')](_0x32b7b5)[_0xda11('0x19')](_0x421151);}};}function respondWithFilteredResult(_0x355bfc,_0x5ab9c5){return function(_0x4975f5){if(_0x4975f5){var _0x5bea27=typeof _0x5ab9c5[_0xda11('0x1a')]==='undefined'&&typeof _0x5ab9c5[_0xda11('0x1b')]===_0xda11('0x1c');var _0xe1366e=_0x4975f5[_0xda11('0x1d')];var _0x50badf=_0x5bea27?0x0:_0x5ab9c5[_0xda11('0x1a')];var _0xefc8b0=_0x5bea27?_0x4975f5[_0xda11('0x1d')]:_0x5ab9c5[_0xda11('0x1a')]+_0x5ab9c5['limit'];var _0x516bd1;if(_0xefc8b0>=_0xe1366e){_0xefc8b0=_0xe1366e;_0x516bd1=0xc8;}else{_0x516bd1=0xce;}_0x355bfc[_0xda11('0x17')](_0x516bd1);return _0x355bfc[_0xda11('0x1e')](_0xda11('0x1f'),_0x50badf+'-'+_0xefc8b0+'/'+_0xe1366e)[_0xda11('0x19')](_0x4975f5);}return null;};}function patchUpdates(_0x82e549){return function(_0x267202){try{jsonpatch['apply'](_0x267202,_0x82e549,!![]);}catch(_0x48fc50){return BPromise[_0xda11('0x20')](_0x48fc50);}return _0x267202[_0xda11('0x21')]();};}function saveUpdates(_0x2b53fb,_0x17fb2c){return function(_0xf41d7c){if(_0xf41d7c){return _0xf41d7c[_0xda11('0x22')](_0x2b53fb)[_0xda11('0x23')](function(_0x17de9c){return _0x17de9c;});}return null;};}function removeEntity(_0x3dda46,_0xd99f92){return function(_0x4653d6){if(_0x4653d6){return _0x4653d6[_0xda11('0x24')]()['then'](function(){_0x3dda46['status'](0xcc)[_0xda11('0x18')]();});}};}function handleEntityNotFound(_0x16b7a7,_0x98c635){return function(_0x369c35){if(!_0x369c35){_0x16b7a7['sendStatus'](0x194);}return _0x369c35;};}function handleError(_0x5ec729,_0x285f33){_0x285f33=_0x285f33||0x1f4;return function(_0x1c26f2){logger['error'](_0x1c26f2[_0xda11('0x25')]);if(_0x1c26f2[_0xda11('0x26')]){delete _0x1c26f2[_0xda11('0x26')];}_0x5ec729[_0xda11('0x17')](_0x285f33)['send'](_0x1c26f2);};}exports[_0xda11('0x27')]=function(_0x221a70,_0x57577e){var _0xec53dc={},_0x19eaeb={},_0x1eb85b={'count':0x0,'rows':[]};var _0xf68be7=_[_0xda11('0x28')](db['ZendeskConfiguration'][_0xda11('0x29')],function(_0xc0a87c){return{'name':_0xc0a87c[_0xda11('0x2a')],'type':_0xc0a87c[_0xda11('0x2b')][_0xda11('0x2c')]};});_0x19eaeb[_0xda11('0x2d')]=_[_0xda11('0x28')](_0xf68be7,'name');_0x19eaeb['query']=_[_0xda11('0x2e')](_0x221a70[_0xda11('0x2f')]);_0x19eaeb[_0xda11('0x30')]=_['intersection'](_0x19eaeb[_0xda11('0x2d')],_0x19eaeb[_0xda11('0x2f')]);_0xec53dc[_0xda11('0x31')]=_['intersection'](_0x19eaeb['model'],qs[_0xda11('0x32')](_0x221a70[_0xda11('0x2f')]['fields']));_0xec53dc[_0xda11('0x31')]=_0xec53dc['attributes'][_0xda11('0x33')]?_0xec53dc[_0xda11('0x31')]:_0x19eaeb[_0xda11('0x2d')];if(!_0x221a70['query'][_0xda11('0x34')](_0xda11('0x35'))){_0xec53dc['limit']=qs[_0xda11('0x1b')](_0x221a70['query'][_0xda11('0x1b')]);_0xec53dc[_0xda11('0x1a')]=qs[_0xda11('0x1a')](_0x221a70[_0xda11('0x2f')][_0xda11('0x1a')]);}_0xec53dc['order']=qs[_0xda11('0x36')](_0x221a70[_0xda11('0x2f')]['sort']);_0xec53dc[_0xda11('0x37')]=qs[_0xda11('0x30')](_[_0xda11('0x38')](_0x221a70[_0xda11('0x2f')],_0x19eaeb[_0xda11('0x30')]),_0xf68be7);if(_0x221a70[_0xda11('0x2f')][_0xda11('0x39')]){_0xec53dc[_0xda11('0x37')]=_['merge'](_0xec53dc[_0xda11('0x37')],{'$or':_['map'](_0xf68be7,function(_0x55a596){if(_0x55a596['type']!==_0xda11('0x3a')){var _0x13e3bc={};_0x13e3bc[_0x55a596['name']]={'$like':'%'+_0x221a70['query'][_0xda11('0x39')]+'%'};return _0x13e3bc;}})});}_0xec53dc=_['merge']({},_0xec53dc,_0x221a70['options']);var _0x4314f6={'where':_0xec53dc[_0xda11('0x37')]};return db['ZendeskConfiguration']['count'](_0x4314f6)[_0xda11('0x23')](function(_0x21a58d){_0x1eb85b['count']=_0x21a58d;if(_0x221a70[_0xda11('0x2f')]['includeAll']){_0xec53dc['include']=[{'all':!![]}];}return db[_0xda11('0x3b')][_0xda11('0x3c')](_0xec53dc);})['then'](function(_0x3998f2){_0x1eb85b[_0xda11('0x3d')]=_0x3998f2;return _0x1eb85b;})['then'](respondWithFilteredResult(_0x57577e,_0xec53dc))[_0xda11('0x3e')](handleError(_0x57577e,null));};exports[_0xda11('0x3f')]=function(_0x5cb70d,_0x4bef57){var _0x4e77f9={'raw':![],'where':{'id':_0x5cb70d[_0xda11('0x40')]['id']}},_0x3c57a7={};_0x3c57a7[_0xda11('0x2d')]=_[_0xda11('0x2e')](db[_0xda11('0x3b')]['rawAttributes']);_0x3c57a7[_0xda11('0x2f')]=_['keys'](_0x5cb70d[_0xda11('0x2f')]);_0x3c57a7['filters']=_[_0xda11('0x41')](_0x3c57a7[_0xda11('0x2d')],_0x3c57a7[_0xda11('0x2f')]);_0x4e77f9[_0xda11('0x31')]=_[_0xda11('0x41')](_0x3c57a7[_0xda11('0x2d')],qs['fields'](_0x5cb70d['query'][_0xda11('0x32')]));_0x4e77f9[_0xda11('0x31')]=_0x4e77f9[_0xda11('0x31')][_0xda11('0x33')]?_0x4e77f9[_0xda11('0x31')]:_0x3c57a7[_0xda11('0x2d')];if(_0x5cb70d[_0xda11('0x2f')][_0xda11('0x42')]){_0x4e77f9['include']=[{'all':!![]}];}_0x4e77f9=_[_0xda11('0x43')]({},_0x4e77f9,_0x5cb70d[_0xda11('0x44')]);return db[_0xda11('0x3b')]['find'](_0x4e77f9)[_0xda11('0x23')](handleEntityNotFound(_0x4bef57,null))[_0xda11('0x23')](respondWithResult(_0x4bef57,null))['catch'](handleError(_0x4bef57,null));};exports[_0xda11('0x45')]=function(_0x1252a5,_0x2b4c34){return db[_0xda11('0x3b')][_0xda11('0x45')](_0x1252a5[_0xda11('0x46')],{})[_0xda11('0x23')](respondWithResult(_0x2b4c34,0xc9))['catch'](handleError(_0x2b4c34,null));};exports['update']=function(_0xafca55,_0x1db88b){if(_0xafca55['body']['id']){delete _0xafca55[_0xda11('0x46')]['id'];}return db[_0xda11('0x3b')][_0xda11('0x47')]({'where':{'id':_0xafca55[_0xda11('0x40')]['id']}})['then'](handleEntityNotFound(_0x1db88b,null))[_0xda11('0x23')](saveUpdates(_0xafca55[_0xda11('0x46')],null))[_0xda11('0x23')](respondWithResult(_0x1db88b,null))['catch'](handleError(_0x1db88b,null));};exports['destroy']=function(_0x5ad316,_0x505e26){return db[_0xda11('0x3b')][_0xda11('0x47')]({'where':{'id':_0x5ad316[_0xda11('0x40')]['id']}})['then'](handleEntityNotFound(_0x505e26,null))[_0xda11('0x23')](removeEntity(_0x505e26,null))[_0xda11('0x3e')](handleError(_0x505e26,null));};exports[_0xda11('0x48')]=function(_0x303a00,_0x2d90d3,_0x315141){var _0x5ab778={};var _0x5a1089={};var _0x46f339;var _0xe32e3e;return db['ZendeskConfiguration'][_0xda11('0x49')]({'where':{'id':_0x303a00['params']['id']}})[_0xda11('0x23')](handleEntityNotFound(_0x2d90d3,null))[_0xda11('0x23')](function(_0x35b940){if(_0x35b940){_0x46f339=_0x35b940;_0x5a1089['model']=_[_0xda11('0x2e')](db['ZendeskField'][_0xda11('0x29')]);_0x5a1089[_0xda11('0x2f')]=_[_0xda11('0x2e')](_0x303a00[_0xda11('0x2f')]);_0x5a1089[_0xda11('0x30')]=_[_0xda11('0x41')](_0x5a1089[_0xda11('0x2d')],_0x5a1089[_0xda11('0x2f')]);_0x5ab778[_0xda11('0x31')]=_['intersection'](_0x5a1089[_0xda11('0x2d')],qs[_0xda11('0x32')](_0x303a00[_0xda11('0x2f')][_0xda11('0x32')]));_0x5ab778[_0xda11('0x31')]=_0x5ab778[_0xda11('0x31')]['length']?_0x5ab778[_0xda11('0x31')]:_0x5a1089[_0xda11('0x2d')];_0x5ab778[_0xda11('0x4a')]=qs[_0xda11('0x36')](_0x303a00[_0xda11('0x2f')]['sort']);_0x5ab778[_0xda11('0x37')]=qs[_0xda11('0x30')](_[_0xda11('0x38')](_0x303a00[_0xda11('0x2f')],_0x5a1089[_0xda11('0x30')]));if(_0x303a00[_0xda11('0x2f')][_0xda11('0x39')]){_0x5ab778[_0xda11('0x37')]=_[_0xda11('0x43')](_0x5ab778[_0xda11('0x37')],{'$or':_[_0xda11('0x28')](_0x5ab778[_0xda11('0x31')],function(_0x26edb2){var _0x5cc05f={};_0x5cc05f[_0x26edb2]={'$like':'%'+_0x303a00[_0xda11('0x2f')]['filter']+'%'};return _0x5cc05f;})});}_0x5ab778=_['merge']({},_0x5ab778,_0x303a00[_0xda11('0x44')]);return _0x46f339['getFields'](_0x5ab778);}})[_0xda11('0x23')](function(_0x5dd84f){if(_0x5dd84f){_0xe32e3e=_0x5dd84f[_0xda11('0x33')];if(!_0x303a00[_0xda11('0x2f')][_0xda11('0x34')](_0xda11('0x35'))){_0x5ab778['limit']=qs['limit'](_0x303a00[_0xda11('0x2f')]['limit']);_0x5ab778[_0xda11('0x1a')]=qs[_0xda11('0x1a')](_0x303a00[_0xda11('0x2f')]['offset']);}return _0x46f339[_0xda11('0x48')](_0x5ab778);}})['then'](function(_0x4f92c8){if(_0x4f92c8){return _0x4f92c8?{'count':_0xe32e3e,'rows':_0x4f92c8}:null;}})[_0xda11('0x23')](respondWithResult(_0x2d90d3,null))[_0xda11('0x3e')](handleError(_0x2d90d3,null));};exports[_0xda11('0x4b')]=function(_0x54d3e7,_0x218b6e,_0x8c5b79){var _0x342ea2={};var _0xc7f708={};var _0x2acad2;var _0x40c15e;return db[_0xda11('0x3b')]['findOne']({'where':{'id':_0x54d3e7[_0xda11('0x40')]['id']}})[_0xda11('0x23')](handleEntityNotFound(_0x218b6e,null))[_0xda11('0x23')](function(_0x153142){if(_0x153142){_0x2acad2=_0x153142;_0xc7f708['model']=_[_0xda11('0x2e')](db['ZendeskField']['rawAttributes']);_0xc7f708[_0xda11('0x2f')]=_[_0xda11('0x2e')](_0x54d3e7[_0xda11('0x2f')]);_0xc7f708[_0xda11('0x30')]=_[_0xda11('0x41')](_0xc7f708[_0xda11('0x2d')],_0xc7f708[_0xda11('0x2f')]);_0x342ea2[_0xda11('0x31')]=_[_0xda11('0x41')](_0xc7f708['model'],qs[_0xda11('0x32')](_0x54d3e7['query'][_0xda11('0x32')]));_0x342ea2[_0xda11('0x31')]=_0x342ea2[_0xda11('0x31')][_0xda11('0x33')]?_0x342ea2['attributes']:_0xc7f708['model'];_0x342ea2[_0xda11('0x4a')]=qs[_0xda11('0x36')](_0x54d3e7[_0xda11('0x2f')][_0xda11('0x36')]);_0x342ea2['where']=qs[_0xda11('0x30')](_['pick'](_0x54d3e7[_0xda11('0x2f')],_0xc7f708['filters']));if(_0x54d3e7[_0xda11('0x2f')]['filter']){_0x342ea2['where']=_[_0xda11('0x43')](_0x342ea2['where'],{'$or':_[_0xda11('0x28')](_0x342ea2[_0xda11('0x31')],function(_0x49f3eb){var _0x4dc910={};_0x4dc910[_0x49f3eb]={'$like':'%'+_0x54d3e7[_0xda11('0x2f')][_0xda11('0x39')]+'%'};return _0x4dc910;})});}_0x342ea2=_['merge']({},_0x342ea2,_0x54d3e7['options']);return _0x2acad2[_0xda11('0x4b')](_0x342ea2);}})[_0xda11('0x23')](function(_0x316aa0){if(_0x316aa0){_0x40c15e=_0x316aa0[_0xda11('0x33')];if(!_0x54d3e7[_0xda11('0x2f')]['hasOwnProperty']('nolimit')){_0x342ea2[_0xda11('0x1b')]=qs['limit'](_0x54d3e7[_0xda11('0x2f')][_0xda11('0x1b')]);_0x342ea2[_0xda11('0x1a')]=qs[_0xda11('0x1a')](_0x54d3e7[_0xda11('0x2f')][_0xda11('0x1a')]);}return _0x2acad2[_0xda11('0x4b')](_0x342ea2);}})['then'](function(_0x1772ba){if(_0x1772ba){return _0x1772ba?{'count':_0x40c15e,'rows':_0x1772ba}:null;}})['then'](respondWithResult(_0x218b6e,null))[_0xda11('0x3e')](handleError(_0x218b6e,null));};exports[_0xda11('0x4c')]=function(_0x3a0605,_0x197444,_0xff9f4c){var _0x1b33f6={};var _0x432cb6={};var _0x29cb2e;var _0x2851b4;return db[_0xda11('0x3b')][_0xda11('0x49')]({'where':{'id':_0x3a0605['params']['id']}})[_0xda11('0x23')](handleEntityNotFound(_0x197444,null))[_0xda11('0x23')](function(_0x15bb19){if(_0x15bb19){_0x29cb2e=_0x15bb19;_0x432cb6['model']=_[_0xda11('0x2e')](db[_0xda11('0x4d')][_0xda11('0x29')]);_0x432cb6[_0xda11('0x2f')]=_[_0xda11('0x2e')](_0x3a0605[_0xda11('0x2f')]);_0x432cb6[_0xda11('0x30')]=_['intersection'](_0x432cb6[_0xda11('0x2d')],_0x432cb6[_0xda11('0x2f')]);_0x1b33f6[_0xda11('0x31')]=_[_0xda11('0x41')](_0x432cb6[_0xda11('0x2d')],qs[_0xda11('0x32')](_0x3a0605[_0xda11('0x2f')][_0xda11('0x32')]));_0x1b33f6[_0xda11('0x31')]=_0x1b33f6['attributes'][_0xda11('0x33')]?_0x1b33f6['attributes']:_0x432cb6['model'];_0x1b33f6[_0xda11('0x4a')]=qs[_0xda11('0x36')](_0x3a0605[_0xda11('0x2f')]['sort']);_0x1b33f6[_0xda11('0x37')]=qs[_0xda11('0x30')](_[_0xda11('0x38')](_0x3a0605[_0xda11('0x2f')],_0x432cb6[_0xda11('0x30')]));if(_0x3a0605['query'][_0xda11('0x39')]){_0x1b33f6[_0xda11('0x37')]=_['merge'](_0x1b33f6['where'],{'$or':_[_0xda11('0x28')](_0x1b33f6[_0xda11('0x31')],function(_0x4fafe1){var _0x5ab3ec={};_0x5ab3ec[_0x4fafe1]={'$like':'%'+_0x3a0605[_0xda11('0x2f')][_0xda11('0x39')]+'%'};return _0x5ab3ec;})});}_0x1b33f6=_[_0xda11('0x43')]({},_0x1b33f6,_0x3a0605[_0xda11('0x44')]);return _0x29cb2e[_0xda11('0x4c')](_0x1b33f6);}})[_0xda11('0x23')](function(_0x2db1a4){if(_0x2db1a4){_0x2851b4=_0x2db1a4['length'];if(!_0x3a0605[_0xda11('0x2f')]['hasOwnProperty']('nolimit')){_0x1b33f6[_0xda11('0x1b')]=qs[_0xda11('0x1b')](_0x3a0605[_0xda11('0x2f')][_0xda11('0x1b')]);_0x1b33f6[_0xda11('0x1a')]=qs[_0xda11('0x1a')](_0x3a0605[_0xda11('0x2f')][_0xda11('0x1a')]);}return _0x29cb2e[_0xda11('0x4c')](_0x1b33f6);}})[_0xda11('0x23')](function(_0x5966f5){if(_0x5966f5){return _0x5966f5?{'count':_0x2851b4,'rows':_0x5966f5}:null;}})['then'](respondWithResult(_0x197444,null))[_0xda11('0x3e')](handleError(_0x197444,null));};exports[_0xda11('0x4e')]=function(_0xbee9c,_0x2a60f5,_0x30c2e1){var _0x332d52={};var _0x34c823={};var _0x57d0be;var _0x234c9b;return db[_0xda11('0x3b')][_0xda11('0x49')]({'where':{'id':_0xbee9c['params']['id']}})[_0xda11('0x23')](handleEntityNotFound(_0x2a60f5,null))[_0xda11('0x23')](function(_0x521c92){if(_0x521c92){_0x57d0be=_0x521c92;_0x34c823[_0xda11('0x2d')]=_[_0xda11('0x2e')](db[_0xda11('0x4f')][_0xda11('0x29')]);_0x34c823[_0xda11('0x2f')]=_[_0xda11('0x2e')](_0xbee9c['query']);_0x34c823[_0xda11('0x30')]=_[_0xda11('0x41')](_0x34c823[_0xda11('0x2d')],_0x34c823[_0xda11('0x2f')]);_0x332d52['attributes']=_[_0xda11('0x41')](_0x34c823['model'],qs[_0xda11('0x32')](_0xbee9c[_0xda11('0x2f')]['fields']));_0x332d52[_0xda11('0x31')]=_0x332d52[_0xda11('0x31')]['length']?_0x332d52['attributes']:_0x34c823['model'];_0x332d52[_0xda11('0x4a')]=qs[_0xda11('0x36')](_0xbee9c[_0xda11('0x2f')][_0xda11('0x36')]);_0x332d52[_0xda11('0x37')]=qs[_0xda11('0x30')](_[_0xda11('0x38')](_0xbee9c[_0xda11('0x2f')],_0x34c823['filters']));if(_0xbee9c['query'][_0xda11('0x39')]){_0x332d52[_0xda11('0x37')]=_[_0xda11('0x43')](_0x332d52[_0xda11('0x37')],{'$or':_['map'](_0x332d52[_0xda11('0x31')],function(_0x468a66){var _0x100e16={};_0x100e16[_0x468a66]={'$like':'%'+_0xbee9c[_0xda11('0x2f')][_0xda11('0x39')]+'%'};return _0x100e16;})});}_0x332d52=_[_0xda11('0x43')]({},_0x332d52,_0xbee9c[_0xda11('0x44')]);return _0x57d0be[_0xda11('0x4e')](_0x332d52);}})[_0xda11('0x23')](function(_0x5a0110){if(_0x5a0110){_0x234c9b=_0x5a0110['length'];if(!_0xbee9c[_0xda11('0x2f')][_0xda11('0x34')](_0xda11('0x35'))){_0x332d52[_0xda11('0x1b')]=qs[_0xda11('0x1b')](_0xbee9c[_0xda11('0x2f')][_0xda11('0x1b')]);_0x332d52[_0xda11('0x1a')]=qs[_0xda11('0x1a')](_0xbee9c[_0xda11('0x2f')][_0xda11('0x1a')]);}return _0x57d0be[_0xda11('0x4e')](_0x332d52);}})['then'](function(_0x271508){if(_0x271508){return _0x271508?{'count':_0x234c9b,'rows':_0x271508}:null;}})[_0xda11('0x23')](respondWithResult(_0x2a60f5,null))[_0xda11('0x3e')](handleError(_0x2a60f5,null));};exports[_0xda11('0x50')]=function(_0x5d4717,_0x1cb2ec,_0x20eef3){if(_0x5d4717['body']['id']){delete _0x5d4717['body']['id'];}return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x5d4717['params']['id']}})[_0xda11('0x23')](handleEntityNotFound(_0x1cb2ec,null))[_0xda11('0x23')](function(_0x440d04){if(_0x440d04){return _0x440d04[_0xda11('0x50')](_0x5d4717[_0xda11('0x46')][_0xda11('0x51')]||[]);}return null;})['then'](respondWithResult(_0x1cb2ec,null))[_0xda11('0x3e')](handleError(_0x1cb2ec,null));};
\ No newline at end of file
index 5358079..cc83c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','api','moment','request-promise','path','rimraf'];(function(_0x259dbd,_0x19d425){var _0x184037=function(_0x22ddc4){while(--_0x22ddc4){_0x259dbd['push'](_0x259dbd['shift']());}};_0x184037(++_0x19d425);}(_0xefda,0x96));var _0xaefd=function(_0xf70000,_0x40bfdc){_0xf70000=_0xf70000-0x0;var _0x5f4402=_0xefda[_0xf70000];return _0x5f4402;};'use strict';var _=require(_0xaefd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaefd('0x1'));var moment=require(_0xaefd('0x2'));var BPromise=require('bluebird');var rp=require(_0xaefd('0x3'));var fs=require('fs');var path=require(_0xaefd('0x4'));var rimraf=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var attributes=require(_0xaefd('0x7'));module[_0xaefd('0x8')]=function(_0x497258,_0x3677ea){return _0x497258[_0xaefd('0x9')](_0xaefd('0xa'),attributes,{'tableName':_0xaefd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1eba=['define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports'];(function(_0x176b4e,_0x31d539){var _0x57a6f5=function(_0x44b440){while(--_0x44b440){_0x176b4e['push'](_0x176b4e['shift']());}};_0x57a6f5(++_0x31d539);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x285c85,_0x132c21){_0x285c85=_0x285c85-0x0;var _0x2f81cd=_0x1eba[_0x285c85];return _0x2f81cd;};'use strict';var _=require(_0xa1eb('0x0'));var util=require(_0xa1eb('0x1'));var logger=require(_0xa1eb('0x2'))(_0xa1eb('0x3'));var moment=require(_0xa1eb('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa1eb('0x5'));var rimraf=require(_0xa1eb('0x6'));var config=require(_0xa1eb('0x7'));var attributes=require(_0xa1eb('0x8'));module[_0xa1eb('0x9')]=function(_0x2933d0,_0x1d0d67){return _0x2933d0[_0xa1eb('0xa')](_0xa1eb('0xb'),attributes,{'tableName':_0xa1eb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0431d0..8da16ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33fc=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskConfiguration,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','moment','bluebird','ioredis'];(function(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0x33fc,0x18b));var _0xc33f=function(_0x29759e,_0x30c9e4){_0x29759e=_0x29759e-0x0;var _0x2bd9f1=_0x33fc[_0x29759e];return _0x2bd9f1;};'use strict';var _=require(_0xc33f('0x0'));var util=require('util');var moment=require(_0xc33f('0x1'));var BPromise=require(_0xc33f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc33f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc33f('0x4'));var logger=require(_0xc33f('0x5'))('rpc');var config=require(_0xc33f('0x6'));var jayson=require(_0xc33f('0x7'));var client=jayson[_0xc33f('0x8')][_0xc33f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x412d6d,_0x1f1ca7,_0x3d9bd6){return new BPromise(function(_0x4a50f5,_0x2c6c34){return client['request'](_0x412d6d,_0x3d9bd6)[_0xc33f('0xa')](function(_0x3382c4){logger[_0xc33f('0xb')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1f1ca7,'request\x20sent');logger[_0xc33f('0xc')](_0xc33f('0xd'),_0x1f1ca7,'request\x20sent',JSON[_0xc33f('0xe')](_0x3382c4));if(_0x3382c4['error']){if(_0x3382c4[_0xc33f('0xf')]['code']===0x1f4){logger[_0xc33f('0xf')](_0xc33f('0x10'),_0x1f1ca7,_0x3382c4[_0xc33f('0xf')][_0xc33f('0x11')]);return _0x2c6c34(_0x3382c4[_0xc33f('0xf')][_0xc33f('0x11')]);}logger[_0xc33f('0xf')](_0xc33f('0x10'),_0x1f1ca7,_0x3382c4[_0xc33f('0xf')][_0xc33f('0x11')]);return _0x4a50f5(_0x3382c4[_0xc33f('0xf')][_0xc33f('0x11')]);}else{logger['info'](_0xc33f('0x10'),_0x1f1ca7,_0xc33f('0x12'));_0x4a50f5(_0x3382c4[_0xc33f('0x13')][_0xc33f('0x11')]);}})[_0xc33f('0x14')](function(_0x597ef5){logger['error'](_0xc33f('0x10'),_0x1f1ca7,_0x597ef5);_0x2c6c34(_0x597ef5);});});}
\ No newline at end of file
+var _0x960f=['error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x145b9b,_0x1803b2){var _0x232288=function(_0x3ba06b){while(--_0x3ba06b){_0x145b9b['push'](_0x145b9b['shift']());}};_0x232288(++_0x1803b2);}(_0x960f,0x144));var _0xf960=function(_0x444e8b,_0x3524cc){_0x444e8b=_0x444e8b-0x0;var _0x35eb37=_0x960f[_0x444e8b];return _0x35eb37;};'use strict';var _=require(_0xf960('0x0'));var util=require(_0xf960('0x1'));var moment=require(_0xf960('0x2'));var BPromise=require('bluebird');var rs=require(_0xf960('0x3'));var fs=require('fs');var Redis=require(_0xf960('0x4'));var db=require(_0xf960('0x5'))['db'];var utils=require(_0xf960('0x6'));var logger=require(_0xf960('0x7'))(_0xf960('0x8'));var config=require(_0xf960('0x9'));var jayson=require(_0xf960('0xa'));var client=jayson['client'][_0xf960('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x153cd0,_0x59669e,_0x24d0a7){return new BPromise(function(_0x23cb92,_0x111b3b){return client['request'](_0x153cd0,_0x24d0a7)[_0xf960('0xc')](function(_0xb0823b){logger[_0xf960('0xd')](_0xf960('0xe'),_0x59669e,_0xf960('0xf'));logger['debug']('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x59669e,_0xf960('0xf'),JSON['stringify'](_0xb0823b));if(_0xb0823b[_0xf960('0x10')]){if(_0xb0823b['error']['code']===0x1f4){logger[_0xf960('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x59669e,_0xb0823b[_0xf960('0x10')][_0xf960('0x11')]);return _0x111b3b(_0xb0823b[_0xf960('0x10')]['message']);}logger[_0xf960('0x10')](_0xf960('0xe'),_0x59669e,_0xb0823b['error'][_0xf960('0x11')]);return _0x23cb92(_0xb0823b[_0xf960('0x10')]['message']);}else{logger['info'](_0xf960('0xe'),_0x59669e,_0xf960('0xf'));_0x23cb92(_0xb0823b[_0xf960('0x12')][_0xf960('0x11')]);}})[_0xf960('0x13')](function(_0x35a660){logger[_0xf960('0x10')](_0xf960('0xe'),_0x59669e,_0x35a660);_0x111b3b(_0x35a660);});});}
\ No newline at end of file
index 049e7f3..1521964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x641c=['/:id','isAuthenticated','show','post','create','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskField.controller','get'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x641c,0x1f4));var _0xc641=function(_0x5e2a65,_0x1a0ac8){_0x5e2a65=_0x5e2a65-0x0;var _0x5d4806=_0x641c[_0x5e2a65];return _0x5d4806;};'use strict';var multer=require(_0xc641('0x0'));var util=require(_0xc641('0x1'));var path=require('path');var timeout=require(_0xc641('0x2'));var express=require(_0xc641('0x3'));var router=express[_0xc641('0x4')]();var fs_extra=require(_0xc641('0x5'));var auth=require(_0xc641('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc641('0x7'));var controller=require(_0xc641('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xc641('0x9')](_0xc641('0xa'),auth[_0xc641('0xb')](),controller[_0xc641('0xc')]);router[_0xc641('0xd')]('/',auth['isAuthenticated'](),controller[_0xc641('0xe')]);router['put'](_0xc641('0xa'),auth[_0xc641('0xb')](),controller[_0xc641('0xf')]);router['delete'](_0xc641('0xa'),auth[_0xc641('0xb')](),controller[_0xc641('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x75e4=['create','/:id','delete','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','post'];(function(_0x1daa61,_0x1665a3){var _0x4fdb3c=function(_0x4732de){while(--_0x4732de){_0x1daa61['push'](_0x1daa61['shift']());}};_0x4fdb3c(++_0x1665a3);}(_0x75e4,0x1f4));var _0x475e=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x75e4[_0x19950b];return _0x3c6b41;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x475e('0x0'));var timeout=require(_0x475e('0x1'));var express=require(_0x475e('0x2'));var router=express['Router']();var fs_extra=require(_0x475e('0x3'));var auth=require(_0x475e('0x4'));var interaction=require(_0x475e('0x5'));var config=require(_0x475e('0x6'));var controller=require(_0x475e('0x7'));router[_0x475e('0x8')]('/',auth[_0x475e('0x9')](),controller[_0x475e('0xa')]);router[_0x475e('0x8')]('/:id',auth[_0x475e('0x9')](),controller['show']);router[_0x475e('0xb')]('/',auth[_0x475e('0x9')](),controller[_0x475e('0xc')]);router['put'](_0x475e('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x475e('0xe')]('/:id',auth[_0x475e('0x9')](),controller['destroy']);module[_0x475e('0xf')]=router;
\ No newline at end of file
index 12d820f..d28a3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x211e=['customVariable','keyValue','picklist','STRING','variable','BOOLEAN','exports','ENUM','string'];(function(_0xdd640,_0xed9c9d){var _0x54cfe7=function(_0x407cdc){while(--_0x407cdc){_0xdd640['push'](_0xdd640['shift']());}};_0x54cfe7(++_0xed9c9d);}(_0x211e,0x14a));var _0xe211=function(_0x557003,_0x56e862){_0x557003=_0x557003-0x0;var _0x3e9e02=_0x211e[_0x557003];return _0x3e9e02;};'use strict';var Sequelize=require('sequelize');module[_0xe211('0x0')]={'type':{'type':Sequelize[_0xe211('0x1')](_0xe211('0x2'),'variable',_0xe211('0x3'),_0xe211('0x4'),_0xe211('0x5')),'defaultValue':_0xe211('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xe211('0x6')]},'keyType':{'type':Sequelize[_0xe211('0x1')](_0xe211('0x2'),_0xe211('0x7'),_0xe211('0x3'))},'keyContent':{'type':Sequelize[_0xe211('0x6')]},'idField':{'type':Sequelize[_0xe211('0x6')]},'nameField':{'type':Sequelize[_0xe211('0x6')]},'customField':{'type':Sequelize[_0xe211('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe211('0x6')]}};
\ No newline at end of file
+var _0xd61b=['ENUM','string','variable','customVariable','picklist','STRING','sequelize'];(function(_0x12a7fa,_0x595149){var _0x38abe2=function(_0x22f80b){while(--_0x22f80b){_0x12a7fa['push'](_0x12a7fa['shift']());}};_0x38abe2(++_0x595149);}(_0xd61b,0x179));var _0xbd61=function(_0x14b8c7,_0x4839ea){_0x14b8c7=_0x14b8c7-0x0;var _0x4bb5a3=_0xd61b[_0x14b8c7];return _0x4bb5a3;};'use strict';var Sequelize=require(_0xbd61('0x0'));module['exports']={'type':{'type':Sequelize[_0xbd61('0x1')](_0xbd61('0x2'),_0xbd61('0x3'),_0xbd61('0x4'),'keyValue',_0xbd61('0x5')),'defaultValue':_0xbd61('0x2')},'content':{'type':Sequelize[_0xbd61('0x6')]},'key':{'type':Sequelize[_0xbd61('0x6')]},'keyType':{'type':Sequelize[_0xbd61('0x1')](_0xbd61('0x2'),_0xbd61('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xbd61('0x6')]},'idField':{'type':Sequelize[_0xbd61('0x6')]},'nameField':{'type':Sequelize[_0xbd61('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbd61('0x6')]}};
\ No newline at end of file
index 4503f01..75ec7be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['filter','where','merge','options','includeAll','findAll','rows','include','find','catch','create','body','destroy','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','update','then','error','name','map','ZendeskField','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters'];(function(_0xd1cf76,_0x1e667d){var _0x580cbf=function(_0x51dc24){while(--_0x51dc24){_0xd1cf76['push'](_0xd1cf76['shift']());}};_0x580cbf(++_0x1e667d);}(_0xa8a8,0xec));var _0x8a8a=function(_0x111b18,_0x25f223){_0x111b18=_0x111b18-0x0;var _0x1e46b4=_0xa8a8[_0x111b18];return _0x1e46b4;};'use strict';var emlformat=require(_0x8a8a('0x0'));var rimraf=require(_0x8a8a('0x1'));var zipdir=require(_0x8a8a('0x2'));var jsonpatch=require(_0x8a8a('0x3'));var rp=require('request-promise');var moment=require(_0x8a8a('0x4'));var BPromise=require(_0x8a8a('0x5'));var Mustache=require(_0x8a8a('0x6'));var util=require(_0x8a8a('0x7'));var path=require(_0x8a8a('0x8'));var sox=require(_0x8a8a('0x9'));var csv=require(_0x8a8a('0xa'));var ejs=require(_0x8a8a('0xb'));var fs=require('fs');var fs_extra=require(_0x8a8a('0xc'));var _=require(_0x8a8a('0xd'));var squel=require(_0x8a8a('0xe'));var crypto=require(_0x8a8a('0xf'));var jsforce=require(_0x8a8a('0x10'));var deskjs=require(_0x8a8a('0x11'));var toCsv=require(_0x8a8a('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8a8a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x8a8a('0x13'));var as=require(_0x8a8a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8a8a('0x15'))(_0x8a8a('0x16'));var utils=require(_0x8a8a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8a8a('0x18'));var db=require(_0x8a8a('0x19'))['db'];function respondWithStatusCode(_0x330796,_0x234481){_0x234481=_0x234481||0xcc;return function(_0x4a1b91){if(_0x4a1b91){return _0x330796[_0x8a8a('0x1a')](_0x234481);}return _0x330796['status'](_0x234481)[_0x8a8a('0x1b')]();};}function respondWithResult(_0xb2a3bc,_0x787eec){_0x787eec=_0x787eec||0xc8;return function(_0x2f6e33){if(_0x2f6e33){return _0xb2a3bc[_0x8a8a('0x1c')](_0x787eec)[_0x8a8a('0x1d')](_0x2f6e33);}};}function respondWithFilteredResult(_0x16d38d,_0x51ce75){return function(_0x1ed3be){if(_0x1ed3be){var _0x568b83=typeof _0x51ce75[_0x8a8a('0x1e')]===_0x8a8a('0x1f')&&typeof _0x51ce75[_0x8a8a('0x20')]===_0x8a8a('0x1f');var _0x42e8b6=_0x1ed3be['count'];var _0x9d55f9=_0x568b83?0x0:_0x51ce75[_0x8a8a('0x1e')];var _0x262ca9=_0x568b83?_0x1ed3be[_0x8a8a('0x21')]:_0x51ce75[_0x8a8a('0x1e')]+_0x51ce75[_0x8a8a('0x20')];var _0x4d7a45;if(_0x262ca9>=_0x42e8b6){_0x262ca9=_0x42e8b6;_0x4d7a45=0xc8;}else{_0x4d7a45=0xce;}_0x16d38d['status'](_0x4d7a45);return _0x16d38d['set']('Content-Range',_0x9d55f9+'-'+_0x262ca9+'/'+_0x42e8b6)['json'](_0x1ed3be);}return null;};}function patchUpdates(_0x3a9b2f){return function(_0x45095b){try{jsonpatch[_0x8a8a('0x22')](_0x45095b,_0x3a9b2f,!![]);}catch(_0x44719e){return BPromise[_0x8a8a('0x23')](_0x44719e);}return _0x45095b[_0x8a8a('0x24')]();};}function saveUpdates(_0x242bac,_0xe0321c){return function(_0x25d5d4){if(_0x25d5d4){return _0x25d5d4[_0x8a8a('0x25')](_0x242bac)[_0x8a8a('0x26')](function(_0x3aa2bb){return _0x3aa2bb;});}return null;};}function removeEntity(_0x3b4ece,_0x625c1b){return function(_0x442c00){if(_0x442c00){return _0x442c00['destroy']()[_0x8a8a('0x26')](function(){_0x3b4ece[_0x8a8a('0x1c')](0xcc)[_0x8a8a('0x1b')]();});}};}function handleEntityNotFound(_0x7662e,_0x36e6d4){return function(_0x251315){if(!_0x251315){_0x7662e[_0x8a8a('0x1a')](0x194);}return _0x251315;};}function handleError(_0x5f4dcc,_0x31d21a){_0x31d21a=_0x31d21a||0x1f4;return function(_0x38c1e0){logger[_0x8a8a('0x27')](_0x38c1e0['stack']);if(_0x38c1e0['name']){delete _0x38c1e0[_0x8a8a('0x28')];}_0x5f4dcc[_0x8a8a('0x1c')](_0x31d21a)['send'](_0x38c1e0);};}exports['index']=function(_0x4b3bc5,_0x78fd48){var _0x5c7e58={},_0x10b916={},_0xdd6221={'count':0x0,'rows':[]};var _0x49ea81=_[_0x8a8a('0x29')](db[_0x8a8a('0x2a')][_0x8a8a('0x2b')],function(_0x8df0cb){return{'name':_0x8df0cb[_0x8a8a('0x2c')],'type':_0x8df0cb[_0x8a8a('0x2d')][_0x8a8a('0x2e')]};});_0x10b916[_0x8a8a('0x2f')]=_['map'](_0x49ea81,'name');_0x10b916['query']=_[_0x8a8a('0x30')](_0x4b3bc5[_0x8a8a('0x31')]);_0x10b916['filters']=_[_0x8a8a('0x32')](_0x10b916[_0x8a8a('0x2f')],_0x10b916['query']);_0x5c7e58[_0x8a8a('0x33')]=_[_0x8a8a('0x32')](_0x10b916[_0x8a8a('0x2f')],qs['fields'](_0x4b3bc5['query'][_0x8a8a('0x34')]));_0x5c7e58['attributes']=_0x5c7e58[_0x8a8a('0x33')][_0x8a8a('0x35')]?_0x5c7e58[_0x8a8a('0x33')]:_0x10b916[_0x8a8a('0x2f')];if(!_0x4b3bc5[_0x8a8a('0x31')][_0x8a8a('0x36')](_0x8a8a('0x37'))){_0x5c7e58[_0x8a8a('0x20')]=qs[_0x8a8a('0x20')](_0x4b3bc5[_0x8a8a('0x31')][_0x8a8a('0x20')]);_0x5c7e58[_0x8a8a('0x1e')]=qs[_0x8a8a('0x1e')](_0x4b3bc5[_0x8a8a('0x31')][_0x8a8a('0x1e')]);}_0x5c7e58[_0x8a8a('0x38')]=qs[_0x8a8a('0x39')](_0x4b3bc5[_0x8a8a('0x31')]['sort']);_0x5c7e58['where']=qs['filters'](_[_0x8a8a('0x3a')](_0x4b3bc5[_0x8a8a('0x31')],_0x10b916[_0x8a8a('0x3b')]),_0x49ea81);if(_0x4b3bc5[_0x8a8a('0x31')][_0x8a8a('0x3c')]){_0x5c7e58['where']=_['merge'](_0x5c7e58[_0x8a8a('0x3d')],{'$or':_['map'](_0x49ea81,function(_0x41a4c4){if(_0x41a4c4['type']!=='VIRTUAL'){var _0x1b33eb={};_0x1b33eb[_0x41a4c4[_0x8a8a('0x28')]]={'$like':'%'+_0x4b3bc5[_0x8a8a('0x31')][_0x8a8a('0x3c')]+'%'};return _0x1b33eb;}})});}_0x5c7e58=_[_0x8a8a('0x3e')]({},_0x5c7e58,_0x4b3bc5[_0x8a8a('0x3f')]);var _0x20584a={'where':_0x5c7e58['where']};return db[_0x8a8a('0x2a')][_0x8a8a('0x21')](_0x20584a)[_0x8a8a('0x26')](function(_0x53f66e){_0xdd6221[_0x8a8a('0x21')]=_0x53f66e;if(_0x4b3bc5[_0x8a8a('0x31')][_0x8a8a('0x40')]){_0x5c7e58['include']=[{'all':!![]}];}return db[_0x8a8a('0x2a')][_0x8a8a('0x41')](_0x5c7e58);})[_0x8a8a('0x26')](function(_0x19fd7a){_0xdd6221[_0x8a8a('0x42')]=_0x19fd7a;return _0xdd6221;})[_0x8a8a('0x26')](respondWithFilteredResult(_0x78fd48,_0x5c7e58))['catch'](handleError(_0x78fd48,null));};exports['show']=function(_0x392e7a,_0x568027){var _0x13e0d4={'raw':!![],'where':{'id':_0x392e7a['params']['id']}},_0x1aa8b5={};_0x1aa8b5['model']=_[_0x8a8a('0x30')](db[_0x8a8a('0x2a')][_0x8a8a('0x2b')]);_0x1aa8b5[_0x8a8a('0x31')]=_['keys'](_0x392e7a[_0x8a8a('0x31')]);_0x1aa8b5['filters']=_[_0x8a8a('0x32')](_0x1aa8b5[_0x8a8a('0x2f')],_0x1aa8b5['query']);_0x13e0d4[_0x8a8a('0x33')]=_[_0x8a8a('0x32')](_0x1aa8b5[_0x8a8a('0x2f')],qs['fields'](_0x392e7a[_0x8a8a('0x31')][_0x8a8a('0x34')]));_0x13e0d4[_0x8a8a('0x33')]=_0x13e0d4['attributes']['length']?_0x13e0d4[_0x8a8a('0x33')]:_0x1aa8b5[_0x8a8a('0x2f')];if(_0x392e7a[_0x8a8a('0x31')]['includeAll']){_0x13e0d4[_0x8a8a('0x43')]=[{'all':!![]}];}_0x13e0d4=_[_0x8a8a('0x3e')]({},_0x13e0d4,_0x392e7a[_0x8a8a('0x3f')]);return db[_0x8a8a('0x2a')][_0x8a8a('0x44')](_0x13e0d4)[_0x8a8a('0x26')](handleEntityNotFound(_0x568027,null))[_0x8a8a('0x26')](respondWithResult(_0x568027,null))[_0x8a8a('0x45')](handleError(_0x568027,null));};exports[_0x8a8a('0x46')]=function(_0x229751,_0x150b42){return db['ZendeskField'][_0x8a8a('0x46')](_0x229751[_0x8a8a('0x47')],{})[_0x8a8a('0x26')](respondWithResult(_0x150b42,0xc9))[_0x8a8a('0x45')](handleError(_0x150b42,null));};exports[_0x8a8a('0x25')]=function(_0x2e22b0,_0x565a49){if(_0x2e22b0[_0x8a8a('0x47')]['id']){delete _0x2e22b0[_0x8a8a('0x47')]['id'];}return db[_0x8a8a('0x2a')][_0x8a8a('0x44')]({'where':{'id':_0x2e22b0['params']['id']}})[_0x8a8a('0x26')](handleEntityNotFound(_0x565a49,null))[_0x8a8a('0x26')](saveUpdates(_0x2e22b0[_0x8a8a('0x47')],null))['then'](respondWithResult(_0x565a49,null))['catch'](handleError(_0x565a49,null));};exports[_0x8a8a('0x48')]=function(_0x39a8e0,_0xf4b6ee){return db[_0x8a8a('0x2a')][_0x8a8a('0x44')]({'where':{'id':_0x39a8e0[_0x8a8a('0x49')]['id']}})[_0x8a8a('0x26')](handleEntityNotFound(_0xf4b6ee,null))[_0x8a8a('0x26')](removeEntity(_0xf4b6ee,null))[_0x8a8a('0x45')](handleError(_0xf4b6ee,null));};
\ No newline at end of file
+var _0x7217=['filters','intersection','attributes','length','hasOwnProperty','sort','where','pick','VIRTUAL','filter','merge','options','include','findAll','rows','fields','includeAll','find','catch','create','body','params','destroy','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','ZendeskField','rawAttributes','type','key','model','query','keys'];(function(_0x94e53a,_0x4e5fb5){var _0x67f207=function(_0x513024){while(--_0x513024){_0x94e53a['push'](_0x94e53a['shift']());}};_0x67f207(++_0x4e5fb5);}(_0x7217,0xa9));var _0x7721=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0x7217[_0x1ddedd];return _0xa3e1ac;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7721('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7721('0x1'));var moment=require(_0x7721('0x2'));var BPromise=require(_0x7721('0x3'));var Mustache=require(_0x7721('0x4'));var util=require(_0x7721('0x5'));var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require('lodash');var squel=require(_0x7721('0xb'));var crypto=require(_0x7721('0xc'));var jsforce=require(_0x7721('0xd'));var deskjs=require(_0x7721('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7721('0xf'));var Papa=require(_0x7721('0x10'));var Redis=require('ioredis');var authService=require(_0x7721('0x11'));var qs=require(_0x7721('0x12'));var as=require(_0x7721('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7721('0x14'))(_0x7721('0x15'));var utils=require(_0x7721('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7721('0x17'));var db=require(_0x7721('0x18'))['db'];function respondWithStatusCode(_0x4db091,_0x290415){_0x290415=_0x290415||0xcc;return function(_0xcbb8d5){if(_0xcbb8d5){return _0x4db091['sendStatus'](_0x290415);}return _0x4db091[_0x7721('0x19')](_0x290415)[_0x7721('0x1a')]();};}function respondWithResult(_0xedb98,_0x36f8a0){_0x36f8a0=_0x36f8a0||0xc8;return function(_0x22a78b){if(_0x22a78b){return _0xedb98['status'](_0x36f8a0)[_0x7721('0x1b')](_0x22a78b);}};}function respondWithFilteredResult(_0x353249,_0x2fdfec){return function(_0x281dfd){if(_0x281dfd){var _0x488c09=typeof _0x2fdfec[_0x7721('0x1c')]==='undefined'&&typeof _0x2fdfec[_0x7721('0x1d')]==='undefined';var _0x378dfb=_0x281dfd['count'];var _0x4b64ab=_0x488c09?0x0:_0x2fdfec[_0x7721('0x1c')];var _0x499b28=_0x488c09?_0x281dfd[_0x7721('0x1e')]:_0x2fdfec['offset']+_0x2fdfec[_0x7721('0x1d')];var _0x19f3b4;if(_0x499b28>=_0x378dfb){_0x499b28=_0x378dfb;_0x19f3b4=0xc8;}else{_0x19f3b4=0xce;}_0x353249['status'](_0x19f3b4);return _0x353249[_0x7721('0x1f')](_0x7721('0x20'),_0x4b64ab+'-'+_0x499b28+'/'+_0x378dfb)[_0x7721('0x1b')](_0x281dfd);}return null;};}function patchUpdates(_0x519768){return function(_0x4083dd){try{jsonpatch['apply'](_0x4083dd,_0x519768,!![]);}catch(_0x49b37b){return BPromise[_0x7721('0x21')](_0x49b37b);}return _0x4083dd[_0x7721('0x22')]();};}function saveUpdates(_0x528664,_0x45c389){return function(_0x16c9c4){if(_0x16c9c4){return _0x16c9c4[_0x7721('0x23')](_0x528664)['then'](function(_0x159117){return _0x159117;});}return null;};}function removeEntity(_0x5b7e03,_0x6ab534){return function(_0x1c5511){if(_0x1c5511){return _0x1c5511['destroy']()[_0x7721('0x24')](function(){_0x5b7e03['status'](0xcc)[_0x7721('0x1a')]();});}};}function handleEntityNotFound(_0x6b932b,_0x179d10){return function(_0x126486){if(!_0x126486){_0x6b932b['sendStatus'](0x194);}return _0x126486;};}function handleError(_0x37cbc7,_0x1f3aff){_0x1f3aff=_0x1f3aff||0x1f4;return function(_0x43fa19){logger[_0x7721('0x25')](_0x43fa19[_0x7721('0x26')]);if(_0x43fa19['name']){delete _0x43fa19[_0x7721('0x27')];}_0x37cbc7[_0x7721('0x19')](_0x1f3aff)[_0x7721('0x28')](_0x43fa19);};}exports[_0x7721('0x29')]=function(_0xbb3ce4,_0x265f6d){var _0x1779cb={},_0x459d1f={},_0x3dca94={'count':0x0,'rows':[]};var _0x5771bb=_[_0x7721('0x2a')](db[_0x7721('0x2b')][_0x7721('0x2c')],function(_0x3903f4){return{'name':_0x3903f4['fieldName'],'type':_0x3903f4[_0x7721('0x2d')][_0x7721('0x2e')]};});_0x459d1f[_0x7721('0x2f')]=_['map'](_0x5771bb,'name');_0x459d1f[_0x7721('0x30')]=_[_0x7721('0x31')](_0xbb3ce4[_0x7721('0x30')]);_0x459d1f[_0x7721('0x32')]=_[_0x7721('0x33')](_0x459d1f[_0x7721('0x2f')],_0x459d1f[_0x7721('0x30')]);_0x1779cb[_0x7721('0x34')]=_['intersection'](_0x459d1f[_0x7721('0x2f')],qs['fields'](_0xbb3ce4[_0x7721('0x30')]['fields']));_0x1779cb[_0x7721('0x34')]=_0x1779cb[_0x7721('0x34')][_0x7721('0x35')]?_0x1779cb[_0x7721('0x34')]:_0x459d1f[_0x7721('0x2f')];if(!_0xbb3ce4[_0x7721('0x30')][_0x7721('0x36')]('nolimit')){_0x1779cb[_0x7721('0x1d')]=qs['limit'](_0xbb3ce4[_0x7721('0x30')][_0x7721('0x1d')]);_0x1779cb[_0x7721('0x1c')]=qs['offset'](_0xbb3ce4[_0x7721('0x30')][_0x7721('0x1c')]);}_0x1779cb['order']=qs[_0x7721('0x37')](_0xbb3ce4[_0x7721('0x30')][_0x7721('0x37')]);_0x1779cb[_0x7721('0x38')]=qs['filters'](_[_0x7721('0x39')](_0xbb3ce4[_0x7721('0x30')],_0x459d1f['filters']),_0x5771bb);if(_0xbb3ce4[_0x7721('0x30')]['filter']){_0x1779cb[_0x7721('0x38')]=_['merge'](_0x1779cb['where'],{'$or':_[_0x7721('0x2a')](_0x5771bb,function(_0x52db52){if(_0x52db52[_0x7721('0x2d')]!==_0x7721('0x3a')){var _0x4cee30={};_0x4cee30[_0x52db52[_0x7721('0x27')]]={'$like':'%'+_0xbb3ce4[_0x7721('0x30')][_0x7721('0x3b')]+'%'};return _0x4cee30;}})});}_0x1779cb=_[_0x7721('0x3c')]({},_0x1779cb,_0xbb3ce4[_0x7721('0x3d')]);var _0x22fee7={'where':_0x1779cb[_0x7721('0x38')]};return db[_0x7721('0x2b')][_0x7721('0x1e')](_0x22fee7)[_0x7721('0x24')](function(_0x5014fb){_0x3dca94[_0x7721('0x1e')]=_0x5014fb;if(_0xbb3ce4[_0x7721('0x30')]['includeAll']){_0x1779cb[_0x7721('0x3e')]=[{'all':!![]}];}return db[_0x7721('0x2b')][_0x7721('0x3f')](_0x1779cb);})[_0x7721('0x24')](function(_0x5d56a9){_0x3dca94[_0x7721('0x40')]=_0x5d56a9;return _0x3dca94;})[_0x7721('0x24')](respondWithFilteredResult(_0x265f6d,_0x1779cb))['catch'](handleError(_0x265f6d,null));};exports['show']=function(_0x2f7f64,_0x5b57dc){var _0x2e8e7b={'raw':!![],'where':{'id':_0x2f7f64['params']['id']}},_0x21c9cb={};_0x21c9cb['model']=_['keys'](db[_0x7721('0x2b')][_0x7721('0x2c')]);_0x21c9cb[_0x7721('0x30')]=_[_0x7721('0x31')](_0x2f7f64[_0x7721('0x30')]);_0x21c9cb[_0x7721('0x32')]=_[_0x7721('0x33')](_0x21c9cb[_0x7721('0x2f')],_0x21c9cb[_0x7721('0x30')]);_0x2e8e7b[_0x7721('0x34')]=_[_0x7721('0x33')](_0x21c9cb['model'],qs['fields'](_0x2f7f64[_0x7721('0x30')][_0x7721('0x41')]));_0x2e8e7b[_0x7721('0x34')]=_0x2e8e7b[_0x7721('0x34')][_0x7721('0x35')]?_0x2e8e7b[_0x7721('0x34')]:_0x21c9cb[_0x7721('0x2f')];if(_0x2f7f64[_0x7721('0x30')][_0x7721('0x42')]){_0x2e8e7b[_0x7721('0x3e')]=[{'all':!![]}];}_0x2e8e7b=_[_0x7721('0x3c')]({},_0x2e8e7b,_0x2f7f64[_0x7721('0x3d')]);return db[_0x7721('0x2b')][_0x7721('0x43')](_0x2e8e7b)[_0x7721('0x24')](handleEntityNotFound(_0x5b57dc,null))['then'](respondWithResult(_0x5b57dc,null))[_0x7721('0x44')](handleError(_0x5b57dc,null));};exports[_0x7721('0x45')]=function(_0x4a378e,_0x1eb9b4){return db[_0x7721('0x2b')]['create'](_0x4a378e[_0x7721('0x46')],{})[_0x7721('0x24')](respondWithResult(_0x1eb9b4,0xc9))[_0x7721('0x44')](handleError(_0x1eb9b4,null));};exports[_0x7721('0x23')]=function(_0x26357d,_0x4ac85f){if(_0x26357d['body']['id']){delete _0x26357d[_0x7721('0x46')]['id'];}return db[_0x7721('0x2b')][_0x7721('0x43')]({'where':{'id':_0x26357d[_0x7721('0x47')]['id']}})[_0x7721('0x24')](handleEntityNotFound(_0x4ac85f,null))[_0x7721('0x24')](saveUpdates(_0x26357d[_0x7721('0x46')],null))[_0x7721('0x24')](respondWithResult(_0x4ac85f,null))[_0x7721('0x44')](handleError(_0x4ac85f,null));};exports[_0x7721('0x48')]=function(_0x3ce861,_0x5d8412){return db[_0x7721('0x2b')]['find']({'where':{'id':_0x3ce861[_0x7721('0x47')]['id']}})[_0x7721('0x24')](handleEntityNotFound(_0x5d8412,null))[_0x7721('0x24')](removeEntity(_0x5d8412,null))['catch'](handleError(_0x5d8412,null));};
\ No newline at end of file
index da7d273..d37628d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf92=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields','idField','lodash','util'];(function(_0x54c76a,_0x1ffced){var _0x4fe811=function(_0x196d90){while(--_0x196d90){_0x54c76a['push'](_0x54c76a['shift']());}};_0x4fe811(++_0x1ffced);}(_0xaf92,0x108));var _0x2af9=function(_0x4e1d82,_0x546fc3){_0x4e1d82=_0x4e1d82-0x0;var _0x22279f=_0xaf92[_0x4e1d82];return _0x22279f;};'use strict';var _=require(_0x2af9('0x0'));var util=require(_0x2af9('0x1'));var logger=require(_0x2af9('0x2'))(_0x2af9('0x3'));var moment=require(_0x2af9('0x4'));var BPromise=require(_0x2af9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2af9('0x6'));var rimraf=require(_0x2af9('0x7'));var config=require(_0x2af9('0x8'));var attributes=require(_0x2af9('0x9'));module['exports']=function(_0x18c725,_0x264697){return _0x18c725[_0x2af9('0xa')](_0x2af9('0xb'),attributes,{'tableName':_0x2af9('0xc'),'paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x2af9('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd029=['util','../../config/logger','api','bluebird','path','rimraf','./intZendeskField.attributes','define','zendesk_unique_index','idField','FieldId'];(function(_0x1bc013,_0x7771c6){var _0x55df36=function(_0x1c02e0){while(--_0x1c02e0){_0x1bc013['push'](_0x1bc013['shift']());}};_0x55df36(++_0x7771c6);}(_0xd029,0x11e));var _0x9d02=function(_0x337796,_0x2edbc9){_0x337796=_0x337796-0x0;var _0x15c164=_0xd029[_0x337796];return _0x15c164;};'use strict';var _=require('lodash');var util=require(_0x9d02('0x0'));var logger=require(_0x9d02('0x1'))(_0x9d02('0x2'));var moment=require('moment');var BPromise=require(_0x9d02('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d02('0x4'));var rimraf=require(_0x9d02('0x5'));var config=require('../../config/environment');var attributes=require(_0x9d02('0x6'));module['exports']=function(_0x514029,_0x28ea94){return _0x514029[_0x9d02('0x7')]('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x9d02('0x8'),'fields':[_0x9d02('0x9'),_0x9d02('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 67aca78..add3696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fda=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','ZendeskField,\x20%s,\x20%s','result','catch'];(function(_0x12ca5f,_0x223d98){var _0xfc3ae9=function(_0x1928fb){while(--_0x1928fb){_0x12ca5f['push'](_0x12ca5f['shift']());}};_0xfc3ae9(++_0x223d98);}(_0x8fda,0x8a));var _0xa8fd=function(_0x4c8b0f,_0x370400){_0x4c8b0f=_0x4c8b0f-0x0;var _0x411383=_0x8fda[_0x4c8b0f];return _0x411383;};'use strict';var _=require(_0xa8fd('0x0'));var util=require(_0xa8fd('0x1'));var moment=require(_0xa8fd('0x2'));var BPromise=require(_0xa8fd('0x3'));var rs=require(_0xa8fd('0x4'));var fs=require('fs');var Redis=require(_0xa8fd('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa8fd('0x6'))(_0xa8fd('0x7'));var config=require('../../config/environment');var jayson=require(_0xa8fd('0x8'));var client=jayson[_0xa8fd('0x9')][_0xa8fd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3dc9fb,_0x49099a,_0x563bd8){return new BPromise(function(_0x21339b,_0x4587ca){return client[_0xa8fd('0xb')](_0x3dc9fb,_0x563bd8)[_0xa8fd('0xc')](function(_0x1341e8){logger[_0xa8fd('0xd')]('ZendeskField,\x20%s,\x20%s',_0x49099a,'request\x20sent');logger[_0xa8fd('0xe')](_0xa8fd('0xf'),_0x49099a,_0xa8fd('0x10'),JSON['stringify'](_0x1341e8));if(_0x1341e8[_0xa8fd('0x11')]){if(_0x1341e8[_0xa8fd('0x11')][_0xa8fd('0x12')]===0x1f4){logger['error']('ZendeskField,\x20%s,\x20%s',_0x49099a,_0x1341e8[_0xa8fd('0x11')][_0xa8fd('0x13')]);return _0x4587ca(_0x1341e8[_0xa8fd('0x11')][_0xa8fd('0x13')]);}logger[_0xa8fd('0x11')](_0xa8fd('0x14'),_0x49099a,_0x1341e8[_0xa8fd('0x11')][_0xa8fd('0x13')]);return _0x21339b(_0x1341e8[_0xa8fd('0x11')][_0xa8fd('0x13')]);}else{logger['info'](_0xa8fd('0x14'),_0x49099a,'request\x20sent');_0x21339b(_0x1341e8[_0xa8fd('0x15')]['message']);}})[_0xa8fd('0x16')](function(_0x61c502){logger[_0xa8fd('0x11')](_0xa8fd('0x14'),_0x49099a,_0x61c502);_0x4587ca(_0x61c502);});});}
\ No newline at end of file
+var _0xbd4b=['then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x8db2cb,_0x464b4f){var _0x5a6f1c=function(_0x3b6815){while(--_0x3b6815){_0x8db2cb['push'](_0x8db2cb['shift']());}};_0x5a6f1c(++_0x464b4f);}(_0xbd4b,0xa5));var _0xbbd4=function(_0x53a162,_0x20e1a2){_0x53a162=_0x53a162-0x0;var _0x46ffbd=_0xbd4b[_0x53a162];return _0x46ffbd;};'use strict';var _=require(_0xbbd4('0x0'));var util=require('util');var moment=require(_0xbbd4('0x1'));var BPromise=require(_0xbbd4('0x2'));var rs=require(_0xbbd4('0x3'));var fs=require('fs');var Redis=require(_0xbbd4('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbbd4('0x5'));var logger=require(_0xbbd4('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbbd4('0x7'));var client=jayson[_0xbbd4('0x8')][_0xbbd4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x43379d,_0x1f0b00,_0x2b809d){return new BPromise(function(_0x5d9089,_0x44e8de){return client[_0xbbd4('0xa')](_0x43379d,_0x2b809d)[_0xbbd4('0xb')](function(_0x775f5e){logger[_0xbbd4('0xc')](_0xbbd4('0xd'),_0x1f0b00,_0xbbd4('0xe'));logger[_0xbbd4('0xf')](_0xbbd4('0x10'),_0x1f0b00,_0xbbd4('0xe'),JSON[_0xbbd4('0x11')](_0x775f5e));if(_0x775f5e[_0xbbd4('0x12')]){if(_0x775f5e[_0xbbd4('0x12')][_0xbbd4('0x13')]===0x1f4){logger[_0xbbd4('0x12')](_0xbbd4('0xd'),_0x1f0b00,_0x775f5e[_0xbbd4('0x12')][_0xbbd4('0x14')]);return _0x44e8de(_0x775f5e[_0xbbd4('0x12')]['message']);}logger[_0xbbd4('0x12')](_0xbbd4('0xd'),_0x1f0b00,_0x775f5e[_0xbbd4('0x12')][_0xbbd4('0x14')]);return _0x5d9089(_0x775f5e[_0xbbd4('0x12')]['message']);}else{logger[_0xbbd4('0xc')](_0xbbd4('0xd'),_0x1f0b00,'request\x20sent');_0x5d9089(_0x775f5e[_0xbbd4('0x15')][_0xbbd4('0x14')]);}})['catch'](function(_0x43183a){logger['error']('ZendeskField,\x20%s,\x20%s',_0x1f0b00,_0x43183a);_0x44e8de(_0x43183a);});});}
\ No newline at end of file
index 926a1a4..d75764f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92f8=['multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','post','create','addConfiguration','update','delete','exports'];(function(_0x13edfc,_0x1c210f){var _0xd1b025=function(_0x4cdf55){while(--_0x4cdf55){_0x13edfc['push'](_0x13edfc['shift']());}};_0xd1b025(++_0x1c210f);}(_0x92f8,0x126));var _0x892f=function(_0x1134b9,_0x678699){_0x1134b9=_0x1134b9-0x0;var _0x230842=_0x92f8[_0x1134b9];return _0x230842;};'use strict';var multer=require(_0x892f('0x0'));var util=require(_0x892f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x892f('0x2'));var router=express[_0x892f('0x3')]();var fs_extra=require(_0x892f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x892f('0x5'));var config=require(_0x892f('0x6'));var controller=require(_0x892f('0x7'));router[_0x892f('0x8')]('/',auth[_0x892f('0x9')](),controller[_0x892f('0xa')]);router['get'](_0x892f('0xb'),auth[_0x892f('0x9')](),controller[_0x892f('0xc')]);router['get'](_0x892f('0xd'),auth[_0x892f('0x9')](),controller[_0x892f('0xe')]);router[_0x892f('0x8')]('/:id/fields',auth[_0x892f('0x9')](),controller['getFields']);router[_0x892f('0xf')]('/',auth[_0x892f('0x9')](),controller[_0x892f('0x10')]);router[_0x892f('0xf')](_0x892f('0xd'),auth[_0x892f('0x9')](),controller[_0x892f('0x11')]);router['put']('/:id',auth[_0x892f('0x9')](),controller[_0x892f('0x12')]);router[_0x892f('0x13')](_0x892f('0xb'),auth[_0x892f('0x9')](),controller['destroy']);module[_0x892f('0x14')]=router;
\ No newline at end of file
+var _0xa7ca=['put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','addConfiguration'];(function(_0x41094d,_0x4ca21d){var _0x503ee1=function(_0x7e4dac){while(--_0x7e4dac){_0x41094d['push'](_0x41094d['shift']());}};_0x503ee1(++_0x4ca21d);}(_0xa7ca,0xa5));var _0xaa7c=function(_0x11a962,_0x3cc338){_0x11a962=_0x11a962-0x0;var _0x55d423=_0xa7ca[_0x11a962];return _0x55d423;};'use strict';var multer=require(_0xaa7c('0x0'));var util=require('util');var path=require(_0xaa7c('0x1'));var timeout=require(_0xaa7c('0x2'));var express=require(_0xaa7c('0x3'));var router=express[_0xaa7c('0x4')]();var fs_extra=require(_0xaa7c('0x5'));var auth=require(_0xaa7c('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xaa7c('0x7'));router['get']('/',auth[_0xaa7c('0x8')](),controller[_0xaa7c('0x9')]);router[_0xaa7c('0xa')](_0xaa7c('0xb'),auth[_0xaa7c('0x8')](),controller[_0xaa7c('0xc')]);router[_0xaa7c('0xa')](_0xaa7c('0xd'),auth[_0xaa7c('0x8')](),controller[_0xaa7c('0xe')]);router['get'](_0xaa7c('0xf'),auth[_0xaa7c('0x8')](),controller[_0xaa7c('0x10')]);router['post']('/',auth[_0xaa7c('0x8')](),controller[_0xaa7c('0x11')]);router['post'](_0xaa7c('0xd'),auth['isAuthenticated'](),controller[_0xaa7c('0x12')]);router[_0xaa7c('0x13')]('/:id',auth[_0xaa7c('0x8')](),controller[_0xaa7c('0x14')]);router['delete']('/:id',auth[_0xaa7c('0x8')](),controller[_0xaa7c('0x15')]);module[_0xaa7c('0x16')]=router;
\ No newline at end of file
index b2eff37..a0ace80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['sequelize','exports','STRING'];(function(_0x3e25c1,_0x1d15f9){var _0x52e7f2=function(_0x597a5a){while(--_0x597a5a){_0x3e25c1['push'](_0x3e25c1['shift']());}};_0x52e7f2(++_0x1d15f9);}(_0x9a19,0x114));var _0x99a1=function(_0x7c0074,_0x1ffdcf){_0x7c0074=_0x7c0074-0x0;var _0x13e95b=_0x9a19[_0x7c0074];return _0x13e95b;};'use strict';var Sequelize=require(_0x99a1('0x0'));module[_0x99a1('0x1')]={'name':{'type':Sequelize[_0x99a1('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x99a1('0x2')]},'zone':{'type':Sequelize[_0x99a1('0x2')]},'clientId':{'type':Sequelize[_0x99a1('0x2')]},'clientSecret':{'type':Sequelize[_0x99a1('0x2')]},'serverUrl':{'type':Sequelize[_0x99a1('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x99a1('0x2')]},'refreshToken':{'type':Sequelize[_0x99a1('0x2')]}};
\ No newline at end of file
+var _0x91a7=['STRING','exports'];(function(_0x3b2cce,_0x7380c6){var _0x1549d2=function(_0x5ebacd){while(--_0x5ebacd){_0x3b2cce['push'](_0x3b2cce['shift']());}};_0x1549d2(++_0x7380c6);}(_0x91a7,0xe7));var _0x791a=function(_0x446a62,_0x32bb6d){_0x446a62=_0x446a62-0x0;var _0x16a711=_0x91a7[_0x446a62];return _0x16a711;};'use strict';var Sequelize=require('sequelize');module[_0x791a('0x0')]={'name':{'type':Sequelize[_0x791a('0x1')]},'description':{'type':Sequelize[_0x791a('0x1')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x791a('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x791a('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x791a('0x1')]}};
\ No newline at end of file
index c7205b7..531bf2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21de=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','reject','update','then','error','name','send','map','ZohoAccount','rawAttributes','fieldName','key','model','keys','intersection','query','attributes','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','fields','options','create','body','find','destroy','getConfigurations','findOne','filter','nolimit','addConfiguration','Subjects','getSubjects','getDescriptions','channel','type','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','code','refreshToken','zoho.eu','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','Call_Result','Call_Start_Time','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','getFields','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x1ef3d6,_0x4583e3){var _0x422719=function(_0x2db9e3){while(--_0x2db9e3){_0x1ef3d6['push'](_0x1ef3d6['shift']());}};_0x422719(++_0x4583e3);}(_0x21de,0xe2));var _0xe21d=function(_0x319c95,_0x1e73a9){_0x319c95=_0x319c95-0x0;var _0x39d768=_0x21de[_0x319c95];return _0x39d768;};'use strict';var emlformat=require(_0xe21d('0x0'));var rimraf=require(_0xe21d('0x1'));var zipdir=require(_0xe21d('0x2'));var jsonpatch=require(_0xe21d('0x3'));var rp=require(_0xe21d('0x4'));var moment=require(_0xe21d('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe21d('0x6'));var path=require(_0xe21d('0x7'));var sox=require(_0xe21d('0x8'));var csv=require(_0xe21d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe21d('0xa'));var _=require(_0xe21d('0xb'));var squel=require('squel');var crypto=require(_0xe21d('0xc'));var jsforce=require(_0xe21d('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe21d('0xe'));var Papa=require(_0xe21d('0xf'));var Redis=require(_0xe21d('0x10'));var authService=require(_0xe21d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe21d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe21d('0x13'))(_0xe21d('0x14'));var utils=require(_0xe21d('0x15'));var config=require(_0xe21d('0x16'));var licenseUtil=require(_0xe21d('0x17'));var db=require(_0xe21d('0x18'))['db'];var integrations=require(_0xe21d('0x19'));function respondWithStatusCode(_0x23d6c3,_0x290e5d){_0x290e5d=_0x290e5d||0xcc;return function(_0x375a7f){if(_0x375a7f){return _0x23d6c3[_0xe21d('0x1a')](_0x290e5d);}return _0x23d6c3[_0xe21d('0x1b')](_0x290e5d)[_0xe21d('0x1c')]();};}function respondWithResult(_0x312933,_0x5a6489){_0x5a6489=_0x5a6489||0xc8;return function(_0x16fb56){if(_0x16fb56){return _0x312933[_0xe21d('0x1b')](_0x5a6489)[_0xe21d('0x1d')](_0x16fb56);}};}function respondWithFilteredResult(_0x1858c8,_0x1d8eb6){return function(_0x186293){if(_0x186293){var _0x4deb0b=typeof _0x1d8eb6['offset']==='undefined'&&typeof _0x1d8eb6[_0xe21d('0x1e')]===_0xe21d('0x1f');var _0x4fc199=_0x186293['count'];var _0x22f07f=_0x4deb0b?0x0:_0x1d8eb6[_0xe21d('0x20')];var _0x24d2b8=_0x4deb0b?_0x186293[_0xe21d('0x21')]:_0x1d8eb6[_0xe21d('0x20')]+_0x1d8eb6[_0xe21d('0x1e')];var _0x11ab00;if(_0x24d2b8>=_0x4fc199){_0x24d2b8=_0x4fc199;_0x11ab00=0xc8;}else{_0x11ab00=0xce;}_0x1858c8[_0xe21d('0x1b')](_0x11ab00);return _0x1858c8[_0xe21d('0x22')](_0xe21d('0x23'),_0x22f07f+'-'+_0x24d2b8+'/'+_0x4fc199)['json'](_0x186293);}return null;};}function patchUpdates(_0x3b2ab8){return function(_0x3fc801){try{jsonpatch['apply'](_0x3fc801,_0x3b2ab8,!![]);}catch(_0x54eaeb){return BPromise[_0xe21d('0x24')](_0x54eaeb);}return _0x3fc801['save']();};}function saveUpdates(_0x559f8b,_0x4574c9){return function(_0x17eec6){if(_0x17eec6){return _0x17eec6[_0xe21d('0x25')](_0x559f8b)[_0xe21d('0x26')](function(_0x4c678e){return _0x4c678e;});}return null;};}function removeEntity(_0x2d575b,_0x57a6c8){return function(_0x9f97e9){if(_0x9f97e9){return _0x9f97e9['destroy']()[_0xe21d('0x26')](function(){_0x2d575b[_0xe21d('0x1b')](0xcc)[_0xe21d('0x1c')]();});}};}function handleEntityNotFound(_0x3268b6,_0x1c8e22){return function(_0x280619){if(!_0x280619){_0x3268b6[_0xe21d('0x1a')](0x194);}return _0x280619;};}function handleError(_0x20ef21,_0x18e63c){_0x18e63c=_0x18e63c||0x1f4;return function(_0x120826){logger[_0xe21d('0x27')](_0x120826['stack']);if(_0x120826[_0xe21d('0x28')]){delete _0x120826['name'];}_0x20ef21[_0xe21d('0x1b')](_0x18e63c)[_0xe21d('0x29')](_0x120826);};}exports['index']=function(_0x13f900,_0x29699f){var _0x54731e={},_0x446469={},_0x3f30fb={'count':0x0,'rows':[]};var _0x278667=_[_0xe21d('0x2a')](db[_0xe21d('0x2b')][_0xe21d('0x2c')],function(_0x1fc458){return{'name':_0x1fc458[_0xe21d('0x2d')],'type':_0x1fc458['type'][_0xe21d('0x2e')]};});_0x446469[_0xe21d('0x2f')]=_[_0xe21d('0x2a')](_0x278667,_0xe21d('0x28'));_0x446469['query']=_[_0xe21d('0x30')](_0x13f900['query']);_0x446469['filters']=_[_0xe21d('0x31')](_0x446469['model'],_0x446469[_0xe21d('0x32')]);_0x54731e[_0xe21d('0x33')]=_[_0xe21d('0x31')](_0x446469[_0xe21d('0x2f')],qs['fields'](_0x13f900['query']['fields']));_0x54731e['attributes']=_0x54731e[_0xe21d('0x33')][_0xe21d('0x34')]?_0x54731e[_0xe21d('0x33')]:_0x446469[_0xe21d('0x2f')];if(!_0x13f900['query'][_0xe21d('0x35')]('nolimit')){_0x54731e['limit']=qs[_0xe21d('0x1e')](_0x13f900[_0xe21d('0x32')][_0xe21d('0x1e')]);_0x54731e[_0xe21d('0x20')]=qs[_0xe21d('0x20')](_0x13f900['query'][_0xe21d('0x20')]);}_0x54731e[_0xe21d('0x36')]=qs[_0xe21d('0x37')](_0x13f900[_0xe21d('0x32')][_0xe21d('0x37')]);_0x54731e[_0xe21d('0x38')]=qs[_0xe21d('0x39')](_['pick'](_0x13f900[_0xe21d('0x32')],_0x446469['filters']),_0x278667);if(_0x13f900[_0xe21d('0x32')]['filter']){_0x54731e[_0xe21d('0x38')]=_[_0xe21d('0x3a')](_0x54731e[_0xe21d('0x38')],{'$or':_[_0xe21d('0x2a')](_0x278667,function(_0x43215a){if(_0x43215a['type']!==_0xe21d('0x3b')){var _0x5bd357={};_0x5bd357[_0x43215a[_0xe21d('0x28')]]={'$like':'%'+_0x13f900['query']['filter']+'%'};return _0x5bd357;}})});}_0x54731e=_[_0xe21d('0x3a')]({},_0x54731e,_0x13f900['options']);var _0x337a9f={'where':_0x54731e[_0xe21d('0x38')]};return db['ZohoAccount'][_0xe21d('0x21')](_0x337a9f)['then'](function(_0x4b4867){_0x3f30fb[_0xe21d('0x21')]=_0x4b4867;if(_0x13f900['query'][_0xe21d('0x3c')]){_0x54731e[_0xe21d('0x3d')]=[{'all':!![]}];}return db[_0xe21d('0x2b')][_0xe21d('0x3e')](_0x54731e);})[_0xe21d('0x26')](function(_0x191eb2){_0x3f30fb['rows']=_0x191eb2;return _0x3f30fb;})['then'](respondWithFilteredResult(_0x29699f,_0x54731e))[_0xe21d('0x3f')](handleError(_0x29699f,null));};exports[_0xe21d('0x40')]=function(_0x3bc9c1,_0x36c05b){var _0x363d85={'raw':![],'where':{'id':_0x3bc9c1[_0xe21d('0x41')]['id']}},_0x3ffed7={};_0x3ffed7[_0xe21d('0x2f')]=_[_0xe21d('0x30')](db[_0xe21d('0x2b')][_0xe21d('0x2c')]);_0x3ffed7[_0xe21d('0x32')]=_[_0xe21d('0x30')](_0x3bc9c1['query']);_0x3ffed7[_0xe21d('0x39')]=_[_0xe21d('0x31')](_0x3ffed7[_0xe21d('0x2f')],_0x3ffed7[_0xe21d('0x32')]);_0x363d85[_0xe21d('0x33')]=_[_0xe21d('0x31')](_0x3ffed7[_0xe21d('0x2f')],qs[_0xe21d('0x42')](_0x3bc9c1[_0xe21d('0x32')][_0xe21d('0x42')]));_0x363d85[_0xe21d('0x33')]=_0x363d85[_0xe21d('0x33')][_0xe21d('0x34')]?_0x363d85[_0xe21d('0x33')]:_0x3ffed7['model'];if(_0x3bc9c1[_0xe21d('0x32')][_0xe21d('0x3c')]){_0x363d85[_0xe21d('0x3d')]=[{'all':!![]}];}_0x363d85=_[_0xe21d('0x3a')]({},_0x363d85,_0x3bc9c1[_0xe21d('0x43')]);return db[_0xe21d('0x2b')]['find'](_0x363d85)['then'](handleEntityNotFound(_0x36c05b,null))['then'](respondWithResult(_0x36c05b,null))[_0xe21d('0x3f')](handleError(_0x36c05b,null));};exports[_0xe21d('0x44')]=function(_0x595874,_0x186221){return db[_0xe21d('0x2b')]['create'](_0x595874[_0xe21d('0x45')],{})['then'](respondWithResult(_0x186221,0xc9))['catch'](handleError(_0x186221,null));};exports['update']=function(_0x170a1b,_0xb21241){if(_0x170a1b[_0xe21d('0x45')]['id']){delete _0x170a1b['body']['id'];}return db[_0xe21d('0x2b')][_0xe21d('0x46')]({'where':{'id':_0x170a1b['params']['id']}})['then'](handleEntityNotFound(_0xb21241,null))[_0xe21d('0x26')](saveUpdates(_0x170a1b[_0xe21d('0x45')],null))['then'](respondWithResult(_0xb21241,null))[_0xe21d('0x3f')](handleError(_0xb21241,null));};exports[_0xe21d('0x47')]=function(_0x304793,_0x2b5dcd){return db[_0xe21d('0x2b')][_0xe21d('0x46')]({'where':{'id':_0x304793[_0xe21d('0x41')]['id']}})[_0xe21d('0x26')](handleEntityNotFound(_0x2b5dcd,null))[_0xe21d('0x26')](removeEntity(_0x2b5dcd,null))[_0xe21d('0x3f')](handleError(_0x2b5dcd,null));};exports[_0xe21d('0x48')]=function(_0x3a4a42,_0x12f626,_0x2d7493){var _0x45b653={};var _0x413ebd={};var _0x3a9196;var _0x53921e;return db[_0xe21d('0x2b')][_0xe21d('0x49')]({'where':{'id':_0x3a4a42[_0xe21d('0x41')]['id']}})[_0xe21d('0x26')](handleEntityNotFound(_0x12f626,null))[_0xe21d('0x26')](function(_0x1c22f6){if(_0x1c22f6){_0x3a9196=_0x1c22f6;_0x413ebd[_0xe21d('0x2f')]=_[_0xe21d('0x30')](db['ZohoConfiguration'][_0xe21d('0x2c')]);_0x413ebd[_0xe21d('0x32')]=_[_0xe21d('0x30')](_0x3a4a42[_0xe21d('0x32')]);_0x413ebd['filters']=_[_0xe21d('0x31')](_0x413ebd[_0xe21d('0x2f')],_0x413ebd['query']);_0x45b653[_0xe21d('0x33')]=_[_0xe21d('0x31')](_0x413ebd['model'],qs['fields'](_0x3a4a42[_0xe21d('0x32')][_0xe21d('0x42')]));_0x45b653['attributes']=_0x45b653['attributes'][_0xe21d('0x34')]?_0x45b653[_0xe21d('0x33')]:_0x413ebd[_0xe21d('0x2f')];_0x45b653['order']=qs[_0xe21d('0x37')](_0x3a4a42[_0xe21d('0x32')][_0xe21d('0x37')]);_0x45b653[_0xe21d('0x38')]=qs[_0xe21d('0x39')](_['pick'](_0x3a4a42[_0xe21d('0x32')],_0x413ebd[_0xe21d('0x39')]));if(_0x3a4a42[_0xe21d('0x32')]['filter']){_0x45b653[_0xe21d('0x38')]=_['merge'](_0x45b653[_0xe21d('0x38')],{'$or':_['map'](_0x45b653[_0xe21d('0x33')],function(_0x5c287e){var _0x340b7b={};_0x340b7b[_0x5c287e]={'$like':'%'+_0x3a4a42[_0xe21d('0x32')][_0xe21d('0x4a')]+'%'};return _0x340b7b;})});}_0x45b653=_[_0xe21d('0x3a')]({},_0x45b653,_0x3a4a42[_0xe21d('0x43')]);return _0x3a9196[_0xe21d('0x48')](_0x45b653);}})[_0xe21d('0x26')](function(_0x527106){if(_0x527106){_0x53921e=_0x527106[_0xe21d('0x34')];if(!_0x3a4a42['query'][_0xe21d('0x35')](_0xe21d('0x4b'))){_0x45b653['limit']=qs[_0xe21d('0x1e')](_0x3a4a42[_0xe21d('0x32')][_0xe21d('0x1e')]);_0x45b653['offset']=qs[_0xe21d('0x20')](_0x3a4a42[_0xe21d('0x32')][_0xe21d('0x20')]);}return _0x3a9196[_0xe21d('0x48')](_0x45b653);}})[_0xe21d('0x26')](function(_0x37f4ec){if(_0x37f4ec){return _0x37f4ec?{'count':_0x53921e,'rows':_0x37f4ec}:null;}})[_0xe21d('0x26')](respondWithResult(_0x12f626,null))[_0xe21d('0x3f')](handleError(_0x12f626,null));};exports[_0xe21d('0x4c')]=function(_0x1b8b18,_0x210920,_0x219e65){if(_0x1b8b18['body']['id']){delete _0x1b8b18[_0xe21d('0x45')]['id'];}return db[_0xe21d('0x2b')]['findOne']({'where':{'id':_0x1b8b18[_0xe21d('0x41')]['id']}})['then'](handleEntityNotFound(_0x210920,null))[_0xe21d('0x26')](function(_0x18859f){if(_0x18859f){_0x1b8b18['body']['AccountId']=_0x18859f['id'];_0x1b8b18[_0xe21d('0x45')][_0xe21d('0x4d')]=integrations[_0xe21d('0x4e')](_0x1b8b18[_0xe21d('0x45')]['channel'],_0x1b8b18[_0xe21d('0x45')]['type']);_0x1b8b18[_0xe21d('0x45')]['Descriptions']=integrations[_0xe21d('0x4f')](_0x1b8b18['body'][_0xe21d('0x50')],_0x1b8b18[_0xe21d('0x45')][_0xe21d('0x51')]);return db['ZohoConfiguration'][_0xe21d('0x44')](_0x1b8b18['body'],{'include':[{'model':db[_0xe21d('0x52')],'as':'Subjects'},{'model':db[_0xe21d('0x52')],'as':'Descriptions'}]});}return null;})[_0xe21d('0x26')](respondWithResult(_0x210920,null))['catch'](handleError(_0x210920,null));};function getAccessToken(_0x1af5c5){return new Promise(function(_0x139763,_0x15f8d3){var _0x9881a;switch(_0x1af5c5[_0xe21d('0x53')]){case'US':_0x9881a=_0xe21d('0x54');break;case'AU':_0x9881a=_0xe21d('0x55');break;case'EU':_0x9881a=_0xe21d('0x56');break;case'IN':_0x9881a=_0xe21d('0x57');break;case'CN':_0x9881a=_0xe21d('0x58');break;default:_0x9881a=_0xe21d('0x56');break;}var _0x4c68be={'method':'POST','uri':_0x9881a+_0xe21d('0x59'),'qs':{'refresh_token':_0x1af5c5['refreshToken'],'client_id':_0x1af5c5[_0xe21d('0x5a')],'client_secret':_0x1af5c5[_0xe21d('0x5b')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x4c68be)[_0xe21d('0x26')](function(_0x219f3c){if(_0x219f3c[_0xe21d('0x5c')]){_0x139763(_0x219f3c['access_token']);}else{_0x15f8d3(_0xe21d('0x5d'));}})[_0xe21d('0x3f')](function(_0x5d33b8){_0x15f8d3(_0x5d33b8);});});}exports['getFields']=function(_0x2a467e,_0x3d50be,_0x45e9e0){var _0x4daa9f,_0x219307,_0x5649db,_0x3c0cca,_0x2825b0;return db[_0xe21d('0x2b')][_0xe21d('0x49')]({'where':{'id':_0x2a467e[_0xe21d('0x41')]['id']},'attributes':['id',_0xe21d('0x5e'),'zone','clientId',_0xe21d('0x5b'),_0xe21d('0x5f'),_0xe21d('0x60'),_0xe21d('0x61')]})['then'](handleEntityNotFound(_0x3d50be,null))[_0xe21d('0x26')](function(_0x7610f8){_0x2825b0=_0x7610f8;_0x4daa9f=_0x2825b0[_0xe21d('0x5e')];_0x219307=_0x4daa9f===_0xe21d('0x62')?'eu':'com';_0x5649db=_0x2825b0[_0xe21d('0x5f')];var _0x594996=_0x5649db[_0xe21d('0x63')](-0x1);if(_0x594996==='/'||_0x594996==='\x5c'||_0x594996===':'){_0x5649db=_0x5649db[_0xe21d('0x64')](0x0,_0x5649db[_0xe21d('0x65')](_0x594996));}if(!_0x2825b0[_0xe21d('0x61')]){throw new Error(_0xe21d('0x66'));}return getAccessToken(_0x2825b0);})[_0xe21d('0x26')](function(_0x5d0035){if(_0x5d0035){return rp({'method':'GET','uri':util['format'](_0xe21d('0x67'),_0x219307),'qs':{'module':_0xe21d('0x68')},'headers':{'Authorization':_0xe21d('0x69')+_0x5d0035},'json':!![]});}})[_0xe21d('0x26')](function(_0x662f7){if(_0x662f7){if(_0x662f7[_0xe21d('0x6a')]&&_0x662f7[_0xe21d('0x6a')][_0xe21d('0x27')]){throw new Error(_0x662f7['response']['error']['message']);}var _0x501fb2=[];var _0x203f2=[];var _0x33435d=[_0xe21d('0x6b'),_0xe21d('0x6c'),_0xe21d('0x6d'),'WhoId','Call_Duration',_0xe21d('0x6e'),_0xe21d('0x6f'),'Call_Type'];_0x203f2=_[_0xe21d('0x70')](_0x662f7[_0xe21d('0x42')],function(_0x163629){return _0x33435d[_0xe21d('0x71')](_0x163629[_0xe21d('0x72')]);});for(var _0x16679e=0x0;_0x16679e<_0x203f2[_0xe21d('0x34')];_0x16679e++){if(_0x203f2[_0x16679e][_0xe21d('0x73')]===![]){_0x501fb2[_0xe21d('0x74')]({'id':_0x203f2[_0x16679e]['id'],'name':_0x203f2[_0x16679e][_0xe21d('0x75')],'custom':_0x203f2[_0x16679e][_0xe21d('0x76')],'options':_0x203f2[_0x16679e][_0xe21d('0x77')]==='picklist'&&_0x203f2[_0x16679e][_0xe21d('0x78')][_0xe21d('0x34')]>-0x1?_[_0xe21d('0x2a')](_0x203f2[_0x16679e][_0xe21d('0x78')],function(_0x3c5ddf){return{'name':_0x3c5ddf,'value':_0x3c5ddf};}):[]});}}return{'count':_0x501fb2[_0xe21d('0x34')],'rows':_0x501fb2};}else{return{'count':0x0,'rows':[]};}})[_0xe21d('0x26')](respondWithResult(_0x3d50be,null))[_0xe21d('0x3f')](function(_0x55bb73){var _0x53e286=_0x2a467e[_0xe21d('0x32')]['test']?0x1f4:_0x55bb73['statusCode']||0x1f4;logger[_0xe21d('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0xe21d('0x79'),_0x53e286,JSON['stringify'](_0x55bb73));delete _0x55bb73['name'];if(_0x53e286===0x191){_0x53e286=0x190;}_0x3d50be[_0xe21d('0x1b')](_0x53e286)[_0xe21d('0x29')](_0x2a467e[_0xe21d('0x32')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x55bb73[_0xe21d('0x7a')]}:_0x55bb73);});};
\ No newline at end of file
+var _0x2e38=['desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','send','index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','ZohoAccount','includeAll','catch','show','params','include','find','create','body','destroy','ZohoConfiguration','addConfiguration','AccountId','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','findOne','host','zone','serverUrl','code','zoho.eu','slice','substring','format','Calls','Zoho-oauthtoken\x20','response','message','Owner','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','includes','api_name','system_mandatory','display_label','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x21a4ce,_0x81f48d){var _0x52d1af=function(_0x1568c7){while(--_0x1568c7){_0x21a4ce['push'](_0x21a4ce['shift']());}};_0x52d1af(++_0x81f48d);}(_0x2e38,0xee));var _0x82e3=function(_0x32004b,_0x4dfa24){_0x32004b=_0x32004b-0x0;var _0x2f29d7=_0x2e38[_0x32004b];return _0x2f29d7;};'use strict';var emlformat=require(_0x82e3('0x0'));var rimraf=require(_0x82e3('0x1'));var zipdir=require(_0x82e3('0x2'));var jsonpatch=require(_0x82e3('0x3'));var rp=require(_0x82e3('0x4'));var moment=require(_0x82e3('0x5'));var BPromise=require(_0x82e3('0x6'));var Mustache=require(_0x82e3('0x7'));var util=require(_0x82e3('0x8'));var path=require('path');var sox=require(_0x82e3('0x9'));var csv=require(_0x82e3('0xa'));var ejs=require(_0x82e3('0xb'));var fs=require('fs');var fs_extra=require(_0x82e3('0xc'));var _=require(_0x82e3('0xd'));var squel=require('squel');var crypto=require(_0x82e3('0xe'));var jsforce=require(_0x82e3('0xf'));var deskjs=require(_0x82e3('0x10'));var toCsv=require(_0x82e3('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x82e3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x82e3('0x12'));var hardwareService=require(_0x82e3('0x13'));var logger=require(_0x82e3('0x14'))(_0x82e3('0x15'));var utils=require(_0x82e3('0x16'));var config=require(_0x82e3('0x17'));var licenseUtil=require(_0x82e3('0x18'));var db=require(_0x82e3('0x19'))['db'];var integrations=require(_0x82e3('0x1a'));function respondWithStatusCode(_0x539805,_0x282315){_0x282315=_0x282315||0xcc;return function(_0xb0842f){if(_0xb0842f){return _0x539805['sendStatus'](_0x282315);}return _0x539805[_0x82e3('0x1b')](_0x282315)[_0x82e3('0x1c')]();};}function respondWithResult(_0x27dbae,_0x4fa158){_0x4fa158=_0x4fa158||0xc8;return function(_0x26b981){if(_0x26b981){return _0x27dbae['status'](_0x4fa158)[_0x82e3('0x1d')](_0x26b981);}};}function respondWithFilteredResult(_0x3cec4e,_0x4f5e2d){return function(_0x3f82c1){if(_0x3f82c1){var _0x78f38=typeof _0x4f5e2d[_0x82e3('0x1e')]==='undefined'&&typeof _0x4f5e2d[_0x82e3('0x1f')]===_0x82e3('0x20');var _0x2fbbeb=_0x3f82c1[_0x82e3('0x21')];var _0x3d4aff=_0x78f38?0x0:_0x4f5e2d[_0x82e3('0x1e')];var _0x53cb3b=_0x78f38?_0x3f82c1[_0x82e3('0x21')]:_0x4f5e2d[_0x82e3('0x1e')]+_0x4f5e2d[_0x82e3('0x1f')];var _0x51ce23;if(_0x53cb3b>=_0x2fbbeb){_0x53cb3b=_0x2fbbeb;_0x51ce23=0xc8;}else{_0x51ce23=0xce;}_0x3cec4e[_0x82e3('0x1b')](_0x51ce23);return _0x3cec4e[_0x82e3('0x22')](_0x82e3('0x23'),_0x3d4aff+'-'+_0x53cb3b+'/'+_0x2fbbeb)[_0x82e3('0x1d')](_0x3f82c1);}return null;};}function patchUpdates(_0x5587b3){return function(_0x44d44e){try{jsonpatch[_0x82e3('0x24')](_0x44d44e,_0x5587b3,!![]);}catch(_0x8eb3ca){return BPromise[_0x82e3('0x25')](_0x8eb3ca);}return _0x44d44e['save']();};}function saveUpdates(_0x15a1e3,_0x563cca){return function(_0x357182){if(_0x357182){return _0x357182[_0x82e3('0x26')](_0x15a1e3)['then'](function(_0x3f835f){return _0x3f835f;});}return null;};}function removeEntity(_0x3cfeac,_0x250b29){return function(_0x5f98bb){if(_0x5f98bb){return _0x5f98bb['destroy']()[_0x82e3('0x27')](function(){_0x3cfeac[_0x82e3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e4f28,_0x16c435){return function(_0x3ffc25){if(!_0x3ffc25){_0x4e4f28[_0x82e3('0x28')](0x194);}return _0x3ffc25;};}function handleError(_0x1d28ca,_0x1616ff){_0x1616ff=_0x1616ff||0x1f4;return function(_0x41d196){logger[_0x82e3('0x29')](_0x41d196[_0x82e3('0x2a')]);if(_0x41d196['name']){delete _0x41d196[_0x82e3('0x2b')];}_0x1d28ca[_0x82e3('0x1b')](_0x1616ff)[_0x82e3('0x2c')](_0x41d196);};}exports[_0x82e3('0x2d')]=function(_0x596f28,_0xbafff7){var _0x2a99bd={},_0x11befa={},_0x377539={'count':0x0,'rows':[]};var _0xe3cdc1=_['map'](db['ZohoAccount'][_0x82e3('0x2e')],function(_0x3852fe){return{'name':_0x3852fe['fieldName'],'type':_0x3852fe[_0x82e3('0x2f')][_0x82e3('0x30')]};});_0x11befa[_0x82e3('0x31')]=_[_0x82e3('0x32')](_0xe3cdc1,_0x82e3('0x2b'));_0x11befa[_0x82e3('0x33')]=_[_0x82e3('0x34')](_0x596f28[_0x82e3('0x33')]);_0x11befa[_0x82e3('0x35')]=_[_0x82e3('0x36')](_0x11befa['model'],_0x11befa['query']);_0x2a99bd[_0x82e3('0x37')]=_['intersection'](_0x11befa[_0x82e3('0x31')],qs[_0x82e3('0x38')](_0x596f28[_0x82e3('0x33')]['fields']));_0x2a99bd[_0x82e3('0x37')]=_0x2a99bd[_0x82e3('0x37')][_0x82e3('0x39')]?_0x2a99bd[_0x82e3('0x37')]:_0x11befa[_0x82e3('0x31')];if(!_0x596f28['query'][_0x82e3('0x3a')](_0x82e3('0x3b'))){_0x2a99bd[_0x82e3('0x1f')]=qs[_0x82e3('0x1f')](_0x596f28['query'][_0x82e3('0x1f')]);_0x2a99bd[_0x82e3('0x1e')]=qs[_0x82e3('0x1e')](_0x596f28[_0x82e3('0x33')][_0x82e3('0x1e')]);}_0x2a99bd[_0x82e3('0x3c')]=qs[_0x82e3('0x3d')](_0x596f28['query'][_0x82e3('0x3d')]);_0x2a99bd[_0x82e3('0x3e')]=qs[_0x82e3('0x35')](_[_0x82e3('0x3f')](_0x596f28[_0x82e3('0x33')],_0x11befa[_0x82e3('0x35')]),_0xe3cdc1);if(_0x596f28[_0x82e3('0x33')][_0x82e3('0x40')]){_0x2a99bd[_0x82e3('0x3e')]=_[_0x82e3('0x41')](_0x2a99bd[_0x82e3('0x3e')],{'$or':_[_0x82e3('0x32')](_0xe3cdc1,function(_0xab51fd){if(_0xab51fd[_0x82e3('0x2f')]!=='VIRTUAL'){var _0x4f5835={};_0x4f5835[_0xab51fd[_0x82e3('0x2b')]]={'$like':'%'+_0x596f28[_0x82e3('0x33')][_0x82e3('0x40')]+'%'};return _0x4f5835;}})});}_0x2a99bd=_['merge']({},_0x2a99bd,_0x596f28[_0x82e3('0x42')]);var _0x3f698e={'where':_0x2a99bd['where']};return db[_0x82e3('0x43')][_0x82e3('0x21')](_0x3f698e)[_0x82e3('0x27')](function(_0x1e4c26){_0x377539['count']=_0x1e4c26;if(_0x596f28[_0x82e3('0x33')][_0x82e3('0x44')]){_0x2a99bd['include']=[{'all':!![]}];}return db[_0x82e3('0x43')]['findAll'](_0x2a99bd);})['then'](function(_0x98d6d9){_0x377539['rows']=_0x98d6d9;return _0x377539;})[_0x82e3('0x27')](respondWithFilteredResult(_0xbafff7,_0x2a99bd))[_0x82e3('0x45')](handleError(_0xbafff7,null));};exports[_0x82e3('0x46')]=function(_0x868bbf,_0x12dc24){var _0x5780ca={'raw':![],'where':{'id':_0x868bbf[_0x82e3('0x47')]['id']}},_0x588d71={};_0x588d71[_0x82e3('0x31')]=_['keys'](db[_0x82e3('0x43')][_0x82e3('0x2e')]);_0x588d71[_0x82e3('0x33')]=_[_0x82e3('0x34')](_0x868bbf[_0x82e3('0x33')]);_0x588d71['filters']=_[_0x82e3('0x36')](_0x588d71[_0x82e3('0x31')],_0x588d71[_0x82e3('0x33')]);_0x5780ca['attributes']=_['intersection'](_0x588d71[_0x82e3('0x31')],qs[_0x82e3('0x38')](_0x868bbf[_0x82e3('0x33')][_0x82e3('0x38')]));_0x5780ca['attributes']=_0x5780ca[_0x82e3('0x37')][_0x82e3('0x39')]?_0x5780ca[_0x82e3('0x37')]:_0x588d71[_0x82e3('0x31')];if(_0x868bbf['query'][_0x82e3('0x44')]){_0x5780ca[_0x82e3('0x48')]=[{'all':!![]}];}_0x5780ca=_[_0x82e3('0x41')]({},_0x5780ca,_0x868bbf['options']);return db[_0x82e3('0x43')][_0x82e3('0x49')](_0x5780ca)[_0x82e3('0x27')](handleEntityNotFound(_0x12dc24,null))[_0x82e3('0x27')](respondWithResult(_0x12dc24,null))['catch'](handleError(_0x12dc24,null));};exports[_0x82e3('0x4a')]=function(_0x302c5b,_0x5cb61b){return db[_0x82e3('0x43')]['create'](_0x302c5b[_0x82e3('0x4b')],{})[_0x82e3('0x27')](respondWithResult(_0x5cb61b,0xc9))[_0x82e3('0x45')](handleError(_0x5cb61b,null));};exports[_0x82e3('0x26')]=function(_0x44e1f2,_0x57df34){if(_0x44e1f2[_0x82e3('0x4b')]['id']){delete _0x44e1f2['body']['id'];}return db[_0x82e3('0x43')][_0x82e3('0x49')]({'where':{'id':_0x44e1f2['params']['id']}})[_0x82e3('0x27')](handleEntityNotFound(_0x57df34,null))[_0x82e3('0x27')](saveUpdates(_0x44e1f2[_0x82e3('0x4b')],null))['then'](respondWithResult(_0x57df34,null))[_0x82e3('0x45')](handleError(_0x57df34,null));};exports[_0x82e3('0x4c')]=function(_0x26b020,_0x55716b){return db[_0x82e3('0x43')][_0x82e3('0x49')]({'where':{'id':_0x26b020[_0x82e3('0x47')]['id']}})['then'](handleEntityNotFound(_0x55716b,null))[_0x82e3('0x27')](removeEntity(_0x55716b,null))['catch'](handleError(_0x55716b,null));};exports['getConfigurations']=function(_0x3ca578,_0x562890,_0x405e2d){var _0x27e743={};var _0x897432={};var _0x46ac95;var _0x2c059c;return db[_0x82e3('0x43')]['findOne']({'where':{'id':_0x3ca578['params']['id']}})[_0x82e3('0x27')](handleEntityNotFound(_0x562890,null))[_0x82e3('0x27')](function(_0x3fa1cc){if(_0x3fa1cc){_0x46ac95=_0x3fa1cc;_0x897432[_0x82e3('0x31')]=_[_0x82e3('0x34')](db[_0x82e3('0x4d')][_0x82e3('0x2e')]);_0x897432['query']=_[_0x82e3('0x34')](_0x3ca578[_0x82e3('0x33')]);_0x897432[_0x82e3('0x35')]=_['intersection'](_0x897432[_0x82e3('0x31')],_0x897432['query']);_0x27e743[_0x82e3('0x37')]=_[_0x82e3('0x36')](_0x897432[_0x82e3('0x31')],qs[_0x82e3('0x38')](_0x3ca578['query'][_0x82e3('0x38')]));_0x27e743[_0x82e3('0x37')]=_0x27e743[_0x82e3('0x37')]['length']?_0x27e743[_0x82e3('0x37')]:_0x897432['model'];_0x27e743['order']=qs['sort'](_0x3ca578[_0x82e3('0x33')][_0x82e3('0x3d')]);_0x27e743[_0x82e3('0x3e')]=qs['filters'](_[_0x82e3('0x3f')](_0x3ca578[_0x82e3('0x33')],_0x897432[_0x82e3('0x35')]));if(_0x3ca578['query']['filter']){_0x27e743[_0x82e3('0x3e')]=_[_0x82e3('0x41')](_0x27e743[_0x82e3('0x3e')],{'$or':_[_0x82e3('0x32')](_0x27e743[_0x82e3('0x37')],function(_0x124b05){var _0x21fffc={};_0x21fffc[_0x124b05]={'$like':'%'+_0x3ca578[_0x82e3('0x33')][_0x82e3('0x40')]+'%'};return _0x21fffc;})});}_0x27e743=_[_0x82e3('0x41')]({},_0x27e743,_0x3ca578[_0x82e3('0x42')]);return _0x46ac95['getConfigurations'](_0x27e743);}})[_0x82e3('0x27')](function(_0x1173bc){if(_0x1173bc){_0x2c059c=_0x1173bc[_0x82e3('0x39')];if(!_0x3ca578[_0x82e3('0x33')][_0x82e3('0x3a')](_0x82e3('0x3b'))){_0x27e743[_0x82e3('0x1f')]=qs['limit'](_0x3ca578[_0x82e3('0x33')]['limit']);_0x27e743['offset']=qs['offset'](_0x3ca578[_0x82e3('0x33')]['offset']);}return _0x46ac95['getConfigurations'](_0x27e743);}})[_0x82e3('0x27')](function(_0xc099d1){if(_0xc099d1){return _0xc099d1?{'count':_0x2c059c,'rows':_0xc099d1}:null;}})[_0x82e3('0x27')](respondWithResult(_0x562890,null))[_0x82e3('0x45')](handleError(_0x562890,null));};exports[_0x82e3('0x4e')]=function(_0xbbe103,_0x129676,_0x19ace3){if(_0xbbe103[_0x82e3('0x4b')]['id']){delete _0xbbe103['body']['id'];}return db['ZohoAccount']['findOne']({'where':{'id':_0xbbe103['params']['id']}})['then'](handleEntityNotFound(_0x129676,null))['then'](function(_0x35f4e3){if(_0x35f4e3){_0xbbe103[_0x82e3('0x4b')][_0x82e3('0x4f')]=_0x35f4e3['id'];_0xbbe103['body']['Subjects']=integrations['getSubjects'](_0xbbe103['body'][_0x82e3('0x50')],_0xbbe103[_0x82e3('0x4b')][_0x82e3('0x2f')]);_0xbbe103['body'][_0x82e3('0x51')]=integrations[_0x82e3('0x52')](_0xbbe103[_0x82e3('0x4b')][_0x82e3('0x50')],_0xbbe103['body']['type']);return db[_0x82e3('0x4d')][_0x82e3('0x4a')](_0xbbe103[_0x82e3('0x4b')],{'include':[{'model':db[_0x82e3('0x53')],'as':'Subjects'},{'model':db[_0x82e3('0x53')],'as':_0x82e3('0x51')}]});}return null;})['then'](respondWithResult(_0x129676,null))['catch'](handleError(_0x129676,null));};function getAccessToken(_0x4a3f35){return new Promise(function(_0x4dd7bb,_0x38c07c){var _0x456037;switch(_0x4a3f35['zone']){case'US':_0x456037=_0x82e3('0x54');break;case'AU':_0x456037=_0x82e3('0x55');break;case'EU':_0x456037=_0x82e3('0x56');break;case'IN':_0x456037=_0x82e3('0x57');break;case'CN':_0x456037='https://accounts.zoho.com.cn';break;default:_0x456037=_0x82e3('0x56');break;}var _0x1975f3={'method':_0x82e3('0x58'),'uri':_0x456037+'/oauth/v2/token','qs':{'refresh_token':_0x4a3f35[_0x82e3('0x59')],'client_id':_0x4a3f35['clientId'],'client_secret':_0x4a3f35[_0x82e3('0x5a')],'grant_type':_0x82e3('0x5b')},'json':!![]};return rp(_0x1975f3)[_0x82e3('0x27')](function(_0x59d771){if(_0x59d771['access_token']){_0x4dd7bb(_0x59d771[_0x82e3('0x5c')]);}else{_0x38c07c(_0x82e3('0x5d'));}})[_0x82e3('0x45')](function(_0x3f2a4c){_0x38c07c(_0x3f2a4c);});});}exports[_0x82e3('0x5e')]=function(_0x384320,_0x952092,_0x3ba7f9){var _0x586709,_0x407f1e,_0x3553c7,_0x176ba5,_0x3ebe04;return db[_0x82e3('0x43')][_0x82e3('0x5f')]({'where':{'id':_0x384320[_0x82e3('0x47')]['id']},'attributes':['id',_0x82e3('0x60'),_0x82e3('0x61'),'clientId',_0x82e3('0x5a'),_0x82e3('0x62'),_0x82e3('0x63'),_0x82e3('0x59')]})[_0x82e3('0x27')](handleEntityNotFound(_0x952092,null))[_0x82e3('0x27')](function(_0x584793){_0x3ebe04=_0x584793;_0x586709=_0x3ebe04[_0x82e3('0x60')];_0x407f1e=_0x586709===_0x82e3('0x64')?'eu':'com';_0x3553c7=_0x3ebe04[_0x82e3('0x62')];var _0x157524=_0x3553c7[_0x82e3('0x65')](-0x1);if(_0x157524==='/'||_0x157524==='\x5c'||_0x157524===':'){_0x3553c7=_0x3553c7[_0x82e3('0x66')](0x0,_0x3553c7['lastIndexOf'](_0x157524));}if(!_0x3ebe04[_0x82e3('0x59')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x3ebe04);})[_0x82e3('0x27')](function(_0x1f4e00){if(_0x1f4e00){return rp({'method':'GET','uri':util[_0x82e3('0x67')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x407f1e),'qs':{'module':_0x82e3('0x68')},'headers':{'Authorization':_0x82e3('0x69')+_0x1f4e00},'json':!![]});}})[_0x82e3('0x27')](function(_0x2b66ce){if(_0x2b66ce){if(_0x2b66ce['response']&&_0x2b66ce[_0x82e3('0x6a')][_0x82e3('0x29')]){throw new Error(_0x2b66ce[_0x82e3('0x6a')][_0x82e3('0x29')][_0x82e3('0x6b')]);}var _0x466326=[];var _0x22bdc5=[];var _0x41b8c8=[_0x82e3('0x6c'),'Subject',_0x82e3('0x6d'),_0x82e3('0x6e'),_0x82e3('0x6f'),_0x82e3('0x70'),_0x82e3('0x71'),_0x82e3('0x72')];_0x22bdc5=_['remove'](_0x2b66ce[_0x82e3('0x38')],function(_0x8bfbf0){return _0x41b8c8[_0x82e3('0x73')](_0x8bfbf0[_0x82e3('0x74')]);});for(var _0x219fb0=0x0;_0x219fb0<_0x22bdc5[_0x82e3('0x39')];_0x219fb0++){if(_0x22bdc5[_0x219fb0][_0x82e3('0x75')]===![]){_0x466326['push']({'id':_0x22bdc5[_0x219fb0]['id'],'name':_0x22bdc5[_0x219fb0][_0x82e3('0x76')],'custom':_0x22bdc5[_0x219fb0]['custom_field'],'options':_0x22bdc5[_0x219fb0][_0x82e3('0x77')]===_0x82e3('0x78')&&_0x22bdc5[_0x219fb0][_0x82e3('0x79')]['length']>-0x1?_['map'](_0x22bdc5[_0x219fb0]['pick_list_values'],function(_0x2d07c0){return{'name':_0x2d07c0,'value':_0x2d07c0};}):[]});}}return{'count':_0x466326['length'],'rows':_0x466326};}else{return{'count':0x0,'rows':[]};}})[_0x82e3('0x27')](respondWithResult(_0x952092,null))['catch'](function(_0x54d134){var _0x1fd29f=_0x384320[_0x82e3('0x33')][_0x82e3('0x7a')]?0x1f4:_0x54d134[_0x82e3('0x7b')]||0x1f4;logger[_0x82e3('0x29')](_0x82e3('0x7c'),'getFields',_0x1fd29f,JSON[_0x82e3('0x7d')](_0x54d134));delete _0x54d134[_0x82e3('0x2b')];if(_0x1fd29f===0x191){_0x1fd29f=0x190;}_0x952092[_0x82e3('0x1b')](_0x1fd29f)[_0x82e3('0x2c')](_0x384320[_0x82e3('0x33')][_0x82e3('0x7a')]?{'message':_0x82e3('0x7e'),'statusCode':_0x54d134[_0x82e3('0x7b')]}:_0x54d134);});};
\ No newline at end of file
index 7b639d6..f487dcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8252=['catch','lodash','util','../../config/logger','moment','path','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','changed','zone','serverUrl','clientId','clientSecret','code','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','authorization_code','then','refresh_token','refreshToken','info','format','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect'];(function(_0x3208d2,_0x530456){var _0x1d7852=function(_0x27a091){while(--_0x27a091){_0x3208d2['push'](_0x3208d2['shift']());}};_0x1d7852(++_0x530456);}(_0x8252,0x1b1));var _0x2825=function(_0x1201fc,_0x5a095e){_0x1201fc=_0x1201fc-0x0;var _0x446237=_0x8252[_0x1201fc];return _0x446237;};'use strict';var _=require(_0x2825('0x0'));var util=require(_0x2825('0x1'));var logger=require(_0x2825('0x2'))('api');var moment=require(_0x2825('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2825('0x4'));var rimraf=require(_0x2825('0x5'));var config=require('../../config/environment');var attributes=require(_0x2825('0x6'));var integrations=require(_0x2825('0x7'));module[_0x2825('0x8')]=function(_0x32180c,_0x5882a1){return _0x32180c[_0x2825('0x9')](_0x2825('0xa'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x365d19,_0x10d7f4,_0x1ca992){if(_0x365d19[_0x2825('0xb')](_0x2825('0xc'))||_0x365d19[_0x2825('0xb')](_0x2825('0xd'))||_0x365d19[_0x2825('0xb')](_0x2825('0xe'))||_0x365d19[_0x2825('0xb')](_0x2825('0xf'))||_0x365d19[_0x2825('0xb')](_0x2825('0x10'))||_0x365d19[_0x2825('0xb')](_0x2825('0x11'))){var _0x55c77d,_0x5c1a12;_0x55c77d=_0x365d19[_0x2825('0xd')];var _0x1d90e3=_0x55c77d['slice'](-0x1);if(_0x1d90e3==='/'||_0x1d90e3==='\x5c'||_0x1d90e3===':'){_0x55c77d=_0x55c77d[_0x2825('0x12')](0x0,_0x55c77d[_0x2825('0x13')](_0x1d90e3));}switch(_0x365d19[_0x2825('0xc')]){case'US':_0x5c1a12=_0x2825('0x14');break;case'AU':_0x5c1a12='https://accounts.zoho.com.au';break;case'IN':_0x5c1a12=_0x2825('0x15');break;case'CN':_0x5c1a12=_0x2825('0x16');break;default:_0x5c1a12='https://accounts.zoho.eu';break;}var _0x37113c={'method':_0x2825('0x17'),'uri':_0x5c1a12+_0x2825('0x18'),'form':{'grant_type':_0x2825('0x19'),'client_id':_0x365d19[_0x2825('0xe')],'client_secret':_0x365d19[_0x2825('0xf')],'redirect_uri':_0x365d19[_0x2825('0xd')],'code':_0x365d19['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x37113c)[_0x2825('0x1a')](function(_0x3e63f4){var _0x2fbad2=JSON['parse'](_0x3e63f4);if(_0x2fbad2[_0x2825('0x1b')]){_0x365d19[_0x2825('0x1c')]=_0x2fbad2[_0x2825('0x1b')];logger[_0x2825('0x1d')](util[_0x2825('0x1e')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x365d19['name'],_0x365d19['id']));}else{logger[_0x2825('0x1f')](util[_0x2825('0x1e')](_0x2825('0x20'),_0x365d19[_0x2825('0x21')],_0x365d19['id']),util[_0x2825('0x22')](_0x2fbad2,{'showHidden':![],'depth':null}));}return _0x1ca992(null,_0x10d7f4);})[_0x2825('0x23')](function(_0x169176){logger[_0x2825('0x1f')](util[_0x2825('0x1e')](_0x2825('0x20'),_0x365d19['name'],_0x365d19['id']),util[_0x2825('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x1ca992(_0x169176);});}else{return _0x1ca992(null,_0x10d7f4);}},'beforeUpdate':function(_0x55a44b,_0x3ec977,_0x4a41ab){if(_0x55a44b[_0x2825('0xb')](_0x2825('0xc'))||_0x55a44b[_0x2825('0xb')]('serverUrl')||_0x55a44b['changed'](_0x2825('0xe'))||_0x55a44b[_0x2825('0xb')]('clientSecret')||_0x55a44b[_0x2825('0xb')](_0x2825('0x10'))||_0x55a44b[_0x2825('0xb')](_0x2825('0x11'))){var _0x53f4e4,_0x49f9f3;_0x53f4e4=_0x55a44b[_0x2825('0xd')];var _0x25b984=_0x53f4e4['slice'](-0x1);if(_0x25b984==='/'||_0x25b984==='\x5c'||_0x25b984===':'){_0x53f4e4=_0x53f4e4[_0x2825('0x12')](0x0,_0x53f4e4[_0x2825('0x13')](_0x25b984));}switch(_0x55a44b[_0x2825('0xc')]){case'US':_0x49f9f3=_0x2825('0x14');break;case'AU':_0x49f9f3='https://accounts.zoho.com.au';break;case'IN':_0x49f9f3=_0x2825('0x15');break;case'CN':_0x49f9f3=_0x2825('0x16');break;default:_0x49f9f3='https://accounts.zoho.eu';break;}var _0x37d4b7={'method':_0x2825('0x17'),'uri':_0x49f9f3+_0x2825('0x18'),'form':{'grant_type':_0x2825('0x19'),'client_id':_0x55a44b[_0x2825('0xe')],'client_secret':_0x55a44b[_0x2825('0xf')],'redirect_uri':_0x55a44b[_0x2825('0xd')],'code':_0x55a44b['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x37d4b7)[_0x2825('0x1a')](function(_0x51df42){var _0x35109d=JSON['parse'](_0x51df42);if(_0x35109d[_0x2825('0x1b')]){_0x55a44b[_0x2825('0x1c')]=_0x35109d['refresh_token'];logger[_0x2825('0x1d')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x55a44b[_0x2825('0x21')],_0x55a44b['id']));}else{logger[_0x2825('0x1f')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x55a44b[_0x2825('0x21')],_0x55a44b['id']),util[_0x2825('0x22')](_0x35109d,{'showHidden':![],'depth':null}));}return _0x4a41ab(null,_0x3ec977);})['catch'](function(_0xbd404b){logger[_0x2825('0x1f')](util[_0x2825('0x1e')](_0x2825('0x20'),_0x55a44b[_0x2825('0x21')],_0x55a44b['id']),util[_0x2825('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x4a41ab(_0xbd404b);});}else{return _0x4a41ab(null,_0x3ec977);}}}});};
\ No newline at end of file
+var _0x2064=['https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','application/x-www-form-urlencoded','then','refreshToken','refresh_token','info','format','name','inspect','catch','parse','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','error','lodash','util','api','moment','bluebird','request-promise','path','./intZohoAccount.attributes','../../components/integrations/configuration','define','int_zoho_accounts','zone','changed','serverUrl','clientId','clientSecret','code','host','slice','substring','lastIndexOf'];(function(_0x49605e,_0x50df3c){var _0x16ae99=function(_0x41f571){while(--_0x41f571){_0x49605e['push'](_0x49605e['shift']());}};_0x16ae99(++_0x50df3c);}(_0x2064,0x15c));var _0x4206=function(_0xc744bc,_0x8baa35){_0xc744bc=_0xc744bc-0x0;var _0x4f069d=_0x2064[_0xc744bc];return _0x4f069d;};'use strict';var _=require(_0x4206('0x0'));var util=require(_0x4206('0x1'));var logger=require('../../config/logger')(_0x4206('0x2'));var moment=require(_0x4206('0x3'));var BPromise=require(_0x4206('0x4'));var rp=require(_0x4206('0x5'));var fs=require('fs');var path=require(_0x4206('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4206('0x7'));var integrations=require(_0x4206('0x8'));module['exports']=function(_0x43fc7f,_0x59c6d1){return _0x43fc7f[_0x4206('0x9')]('ZohoAccount',attributes,{'tableName':_0x4206('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2f0a46,_0xc900d1,_0x4679e6){if(_0x2f0a46['changed'](_0x4206('0xb'))||_0x2f0a46[_0x4206('0xc')](_0x4206('0xd'))||_0x2f0a46['changed'](_0x4206('0xe'))||_0x2f0a46[_0x4206('0xc')](_0x4206('0xf'))||_0x2f0a46[_0x4206('0xc')](_0x4206('0x10'))||_0x2f0a46[_0x4206('0xc')](_0x4206('0x11'))){var _0x2c009a,_0x5f3cb2;_0x2c009a=_0x2f0a46[_0x4206('0xd')];var _0x443b96=_0x2c009a[_0x4206('0x12')](-0x1);if(_0x443b96==='/'||_0x443b96==='\x5c'||_0x443b96===':'){_0x2c009a=_0x2c009a[_0x4206('0x13')](0x0,_0x2c009a[_0x4206('0x14')](_0x443b96));}switch(_0x2f0a46['zone']){case'US':_0x5f3cb2=_0x4206('0x15');break;case'AU':_0x5f3cb2=_0x4206('0x16');break;case'IN':_0x5f3cb2=_0x4206('0x17');break;case'CN':_0x5f3cb2=_0x4206('0x18');break;default:_0x5f3cb2=_0x4206('0x19');break;}var _0x4ae66e={'method':_0x4206('0x1a'),'uri':_0x5f3cb2+_0x4206('0x1b'),'form':{'grant_type':'authorization_code','client_id':_0x2f0a46['clientId'],'client_secret':_0x2f0a46[_0x4206('0xf')],'redirect_uri':_0x2f0a46['serverUrl'],'code':_0x2f0a46[_0x4206('0x10')]},'headers':{'Content-Type':_0x4206('0x1c')}};return rp(_0x4ae66e)[_0x4206('0x1d')](function(_0x53bbda){var _0x203961=JSON['parse'](_0x53bbda);if(_0x203961['refresh_token']){_0x2f0a46[_0x4206('0x1e')]=_0x203961[_0x4206('0x1f')];logger[_0x4206('0x20')](util[_0x4206('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2f0a46[_0x4206('0x22')],_0x2f0a46['id']));}else{logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2f0a46[_0x4206('0x22')],_0x2f0a46['id']),util[_0x4206('0x23')](_0x203961,{'showHidden':![],'depth':null}));}return _0x4679e6(null,_0xc900d1);})[_0x4206('0x24')](function(_0x1757fa){logger['error'](util[_0x4206('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2f0a46[_0x4206('0x22')],_0x2f0a46['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x4679e6(_0x1757fa);});}else{return _0x4679e6(null,_0xc900d1);}},'beforeUpdate':function(_0x2246ab,_0x5e0ea1,_0x5afb24){if(_0x2246ab[_0x4206('0xc')](_0x4206('0xb'))||_0x2246ab[_0x4206('0xc')]('serverUrl')||_0x2246ab[_0x4206('0xc')]('clientId')||_0x2246ab[_0x4206('0xc')](_0x4206('0xf'))||_0x2246ab[_0x4206('0xc')](_0x4206('0x10'))||_0x2246ab[_0x4206('0xc')](_0x4206('0x11'))){var _0x48bf58,_0x555cdf;_0x48bf58=_0x2246ab['serverUrl'];var _0x2fa300=_0x48bf58[_0x4206('0x12')](-0x1);if(_0x2fa300==='/'||_0x2fa300==='\x5c'||_0x2fa300===':'){_0x48bf58=_0x48bf58[_0x4206('0x13')](0x0,_0x48bf58[_0x4206('0x14')](_0x2fa300));}switch(_0x2246ab[_0x4206('0xb')]){case'US':_0x555cdf=_0x4206('0x15');break;case'AU':_0x555cdf=_0x4206('0x16');break;case'IN':_0x555cdf=_0x4206('0x17');break;case'CN':_0x555cdf='https://accounts.zoho.com.cn';break;default:_0x555cdf=_0x4206('0x19');break;}var _0x2f9613={'method':_0x4206('0x1a'),'uri':_0x555cdf+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x2246ab[_0x4206('0xe')],'client_secret':_0x2246ab[_0x4206('0xf')],'redirect_uri':_0x2246ab[_0x4206('0xd')],'code':_0x2246ab[_0x4206('0x10')]},'headers':{'Content-Type':_0x4206('0x1c')}};return rp(_0x2f9613)['then'](function(_0x4fa69d){var _0x3eb573=JSON[_0x4206('0x25')](_0x4fa69d);if(_0x3eb573[_0x4206('0x1f')]){_0x2246ab['refreshToken']=_0x3eb573['refresh_token'];logger[_0x4206('0x20')](util[_0x4206('0x21')](_0x4206('0x26'),_0x2246ab[_0x4206('0x22')],_0x2246ab['id']));}else{logger['error'](util['format'](_0x4206('0x27'),_0x2246ab[_0x4206('0x22')],_0x2246ab['id']),util[_0x4206('0x23')](_0x3eb573,{'showHidden':![],'depth':null}));}return _0x5afb24(null,_0x5e0ea1);})['catch'](function(_0xd31c5f){logger[_0x4206('0x28')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2246ab[_0x4206('0x22')],_0x2246ab['id']),util[_0x4206('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x5afb24(_0xd31c5f);});}else{return _0x5afb24(null,_0x5e0ea1);}}}});};
\ No newline at end of file
index fe0787f..134a8a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcac3=['attributes','limit','include','model','map','ShowZohoAccount','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0xcac3,0x193));var _0x3cac=function(_0x461119,_0x28ce98){_0x461119=_0x461119-0x0;var _0x4b5ed3=_0xcac3[_0x461119];return _0x4b5ed3;};'use strict';var _=require('lodash');var util=require(_0x3cac('0x0'));var moment=require(_0x3cac('0x1'));var BPromise=require(_0x3cac('0x2'));var rs=require(_0x3cac('0x3'));var fs=require('fs');var Redis=require(_0x3cac('0x4'));var db=require(_0x3cac('0x5'))['db'];var utils=require(_0x3cac('0x6'));var logger=require(_0x3cac('0x7'))(_0x3cac('0x8'));var config=require(_0x3cac('0x9'));var jayson=require(_0x3cac('0xa'));var client=jayson[_0x3cac('0xb')][_0x3cac('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1e2560,_0x14562c,_0x21365c){return new BPromise(function(_0x13c1b9,_0x55670d){return client[_0x3cac('0xd')](_0x1e2560,_0x21365c)[_0x3cac('0xe')](function(_0x3bcbed){logger[_0x3cac('0xf')](_0x3cac('0x10'),_0x14562c,'request\x20sent');logger[_0x3cac('0x11')](_0x3cac('0x12'),_0x14562c,_0x3cac('0x13'),JSON[_0x3cac('0x14')](_0x3bcbed));if(_0x3bcbed[_0x3cac('0x15')]){if(_0x3bcbed['error']['code']===0x1f4){logger[_0x3cac('0x15')](_0x3cac('0x10'),_0x14562c,_0x3bcbed[_0x3cac('0x15')][_0x3cac('0x16')]);return _0x55670d(_0x3bcbed[_0x3cac('0x15')][_0x3cac('0x16')]);}logger[_0x3cac('0x15')]('ZohoAccount,\x20%s,\x20%s',_0x14562c,_0x3bcbed[_0x3cac('0x15')][_0x3cac('0x16')]);return _0x13c1b9(_0x3bcbed[_0x3cac('0x15')][_0x3cac('0x16')]);}else{logger[_0x3cac('0xf')](_0x3cac('0x10'),_0x14562c,_0x3cac('0x13'));_0x13c1b9(_0x3bcbed[_0x3cac('0x17')][_0x3cac('0x16')]);}})[_0x3cac('0x18')](function(_0x4173ca){logger[_0x3cac('0x15')](_0x3cac('0x10'),_0x14562c,_0x4173ca);_0x55670d(_0x4173ca);});});}exports[_0x3cac('0x19')]=function(_0x1b1007){var _0x9c768f=this;return new Promise(function(_0x752c5b,_0x17d5bc){return db[_0x3cac('0x1a')][_0x3cac('0x1b')]({'raw':_0x1b1007[_0x3cac('0x1c')]?_0x1b1007[_0x3cac('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1b1007[_0x3cac('0x1c')]?_0x1b1007[_0x3cac('0x1c')]['where']||null:null,'attributes':_0x1b1007[_0x3cac('0x1c')]?_0x1b1007[_0x3cac('0x1c')][_0x3cac('0x1d')]||null:null,'limit':_0x1b1007[_0x3cac('0x1c')]?_0x1b1007[_0x3cac('0x1c')][_0x3cac('0x1e')]||null:null,'include':_0x1b1007['options']?_0x1b1007[_0x3cac('0x1c')]['include']?_['map'](_0x1b1007['options'][_0x3cac('0x1f')],function(_0x842c3d){return{'model':db[_0x842c3d[_0x3cac('0x20')]],'as':_0x842c3d['as'],'attributes':_0x842c3d[_0x3cac('0x1d')],'include':_0x842c3d[_0x3cac('0x1f')]?_[_0x3cac('0x21')](_0x842c3d[_0x3cac('0x1f')],function(_0x3f79b6){return{'model':db[_0x3f79b6[_0x3cac('0x20')]],'as':_0x3f79b6['as'],'attributes':_0x3f79b6[_0x3cac('0x1d')],'include':_0x3f79b6[_0x3cac('0x1f')]?_[_0x3cac('0x21')](_0x3f79b6['include'],function(_0x24c4fb){return{'model':db[_0x24c4fb[_0x3cac('0x20')]],'as':_0x24c4fb['as'],'attributes':_0x24c4fb[_0x3cac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3cac('0xe')](function(_0xf8ef01){logger[_0x3cac('0xf')](_0x3cac('0x19'),_0x1b1007);logger[_0x3cac('0x11')](_0x3cac('0x19'),_0x1b1007,JSON[_0x3cac('0x14')](_0xf8ef01));_0x752c5b(_0xf8ef01);})[_0x3cac('0x18')](function(_0x391412){logger[_0x3cac('0x15')](_0x3cac('0x19'),_0x391412[_0x3cac('0x16')],_0x1b1007);_0x17d5bc(_0x9c768f[_0x3cac('0x15')](0x1f4,_0x391412[_0x3cac('0x16')]));});});};exports[_0x3cac('0x22')]=function(_0x447e9e){var _0x1fc118=this;return new Promise(function(_0x2d44ff,_0x2f03b3){return db[_0x3cac('0x1a')]['find']({'raw':_0x447e9e[_0x3cac('0x1c')]?_0x447e9e[_0x3cac('0x1c')][_0x3cac('0x23')]===undefined?!![]:![]:!![],'where':_0x447e9e[_0x3cac('0x1c')]?_0x447e9e[_0x3cac('0x1c')]['where']||null:null,'attributes':_0x447e9e['options']?_0x447e9e[_0x3cac('0x1c')][_0x3cac('0x1d')]||null:null,'include':_0x447e9e['options']?_0x447e9e[_0x3cac('0x1c')]['include']?_['map'](_0x447e9e[_0x3cac('0x1c')][_0x3cac('0x1f')],function(_0x4eba91){return{'model':db[_0x4eba91[_0x3cac('0x20')]],'as':_0x4eba91['as'],'attributes':_0x4eba91[_0x3cac('0x1d')],'include':_0x4eba91[_0x3cac('0x1f')]?_[_0x3cac('0x21')](_0x4eba91[_0x3cac('0x1f')],function(_0x7ec730){return{'model':db[_0x7ec730[_0x3cac('0x20')]],'as':_0x7ec730['as'],'attributes':_0x7ec730[_0x3cac('0x1d')],'include':_0x7ec730[_0x3cac('0x1f')]?_['map'](_0x7ec730['include'],function(_0x27a8fc){return{'model':db[_0x27a8fc[_0x3cac('0x20')]],'as':_0x27a8fc['as'],'attributes':_0x27a8fc[_0x3cac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3cac('0xe')](function(_0x55bf22){logger[_0x3cac('0xf')](_0x3cac('0x22'),_0x447e9e);logger[_0x3cac('0x11')]('ShowZohoAccount',_0x447e9e,JSON[_0x3cac('0x14')](_0x55bf22));_0x2d44ff(_0x55bf22);})[_0x3cac('0x18')](function(_0x5b57c5){logger[_0x3cac('0x15')](_0x3cac('0x22'),_0x5b57c5[_0x3cac('0x16')],_0x447e9e);_0x2f03b3(_0x1fc118['error'](0x1f4,_0x5b57c5['message']));});});};
\ No newline at end of file
+var _0x1c63=['map','model','ShowZohoAccount','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetZohoAccount','ZohoAccount','raw','options','where','attributes','limit','include'];(function(_0x3974fc,_0xe3a6e8){var _0x31469c=function(_0x101040){while(--_0x101040){_0x3974fc['push'](_0x3974fc['shift']());}};_0x31469c(++_0xe3a6e8);}(_0x1c63,0xdc));var _0x31c6=function(_0x273305,_0x57815f){_0x273305=_0x273305-0x0;var _0x12cf22=_0x1c63[_0x273305];return _0x12cf22;};'use strict';var _=require(_0x31c6('0x0'));var util=require(_0x31c6('0x1'));var moment=require(_0x31c6('0x2'));var BPromise=require(_0x31c6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31c6('0x4'));var db=require(_0x31c6('0x5'))['db'];var utils=require(_0x31c6('0x6'));var logger=require('../../config/logger')(_0x31c6('0x7'));var config=require(_0x31c6('0x8'));var jayson=require(_0x31c6('0x9'));var client=jayson[_0x31c6('0xa')][_0x31c6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ac1b7,_0x560053,_0x30185e){return new BPromise(function(_0x184d7d,_0x37cc89){return client[_0x31c6('0xc')](_0x4ac1b7,_0x30185e)[_0x31c6('0xd')](function(_0x487e6e){logger[_0x31c6('0xe')](_0x31c6('0xf'),_0x560053,_0x31c6('0x10'));logger[_0x31c6('0x11')](_0x31c6('0x12'),_0x560053,'request\x20sent',JSON[_0x31c6('0x13')](_0x487e6e));if(_0x487e6e['error']){if(_0x487e6e[_0x31c6('0x14')][_0x31c6('0x15')]===0x1f4){logger['error'](_0x31c6('0xf'),_0x560053,_0x487e6e[_0x31c6('0x14')][_0x31c6('0x16')]);return _0x37cc89(_0x487e6e[_0x31c6('0x14')][_0x31c6('0x16')]);}logger[_0x31c6('0x14')]('ZohoAccount,\x20%s,\x20%s',_0x560053,_0x487e6e[_0x31c6('0x14')][_0x31c6('0x16')]);return _0x184d7d(_0x487e6e[_0x31c6('0x14')][_0x31c6('0x16')]);}else{logger[_0x31c6('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x560053,'request\x20sent');_0x184d7d(_0x487e6e['result']['message']);}})[_0x31c6('0x17')](function(_0x512d53){logger[_0x31c6('0x14')](_0x31c6('0xf'),_0x560053,_0x512d53);_0x37cc89(_0x512d53);});});}exports[_0x31c6('0x18')]=function(_0xf352af){var _0x20f9a2=this;return new Promise(function(_0x4c7f34,_0x162061){return db[_0x31c6('0x19')]['findAll']({'raw':_0xf352af['options']?_0xf352af['options'][_0x31c6('0x1a')]===undefined?!![]:![]:!![],'where':_0xf352af[_0x31c6('0x1b')]?_0xf352af[_0x31c6('0x1b')][_0x31c6('0x1c')]||null:null,'attributes':_0xf352af['options']?_0xf352af['options'][_0x31c6('0x1d')]||null:null,'limit':_0xf352af[_0x31c6('0x1b')]?_0xf352af['options'][_0x31c6('0x1e')]||null:null,'include':_0xf352af[_0x31c6('0x1b')]?_0xf352af[_0x31c6('0x1b')][_0x31c6('0x1f')]?_[_0x31c6('0x20')](_0xf352af['options'][_0x31c6('0x1f')],function(_0x536e57){return{'model':db[_0x536e57[_0x31c6('0x21')]],'as':_0x536e57['as'],'attributes':_0x536e57[_0x31c6('0x1d')],'include':_0x536e57['include']?_['map'](_0x536e57['include'],function(_0x412a8a){return{'model':db[_0x412a8a[_0x31c6('0x21')]],'as':_0x412a8a['as'],'attributes':_0x412a8a['attributes'],'include':_0x412a8a[_0x31c6('0x1f')]?_[_0x31c6('0x20')](_0x412a8a[_0x31c6('0x1f')],function(_0x2fb5f3){return{'model':db[_0x2fb5f3['model']],'as':_0x2fb5f3['as'],'attributes':_0x2fb5f3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x53fa6c){logger[_0x31c6('0xe')]('GetZohoAccount',_0xf352af);logger['debug'](_0x31c6('0x18'),_0xf352af,JSON[_0x31c6('0x13')](_0x53fa6c));_0x4c7f34(_0x53fa6c);})['catch'](function(_0x41100c){logger['error'](_0x31c6('0x18'),_0x41100c[_0x31c6('0x16')],_0xf352af);_0x162061(_0x20f9a2['error'](0x1f4,_0x41100c[_0x31c6('0x16')]));});});};exports[_0x31c6('0x22')]=function(_0x28937c){var _0x3399fe=this;return new Promise(function(_0x202f45,_0x35c366){return db['ZohoAccount'][_0x31c6('0x23')]({'raw':_0x28937c[_0x31c6('0x1b')]?_0x28937c['options'][_0x31c6('0x1a')]===undefined?!![]:![]:!![],'where':_0x28937c[_0x31c6('0x1b')]?_0x28937c['options']['where']||null:null,'attributes':_0x28937c['options']?_0x28937c[_0x31c6('0x1b')][_0x31c6('0x1d')]||null:null,'include':_0x28937c['options']?_0x28937c[_0x31c6('0x1b')][_0x31c6('0x1f')]?_[_0x31c6('0x20')](_0x28937c[_0x31c6('0x1b')][_0x31c6('0x1f')],function(_0x57143f){return{'model':db[_0x57143f[_0x31c6('0x21')]],'as':_0x57143f['as'],'attributes':_0x57143f[_0x31c6('0x1d')],'include':_0x57143f[_0x31c6('0x1f')]?_[_0x31c6('0x20')](_0x57143f[_0x31c6('0x1f')],function(_0xb25a7e){return{'model':db[_0xb25a7e[_0x31c6('0x21')]],'as':_0xb25a7e['as'],'attributes':_0xb25a7e[_0x31c6('0x1d')],'include':_0xb25a7e[_0x31c6('0x1f')]?_['map'](_0xb25a7e[_0x31c6('0x1f')],function(_0x2cc3d1){return{'model':db[_0x2cc3d1['model']],'as':_0x2cc3d1['as'],'attributes':_0x2cc3d1[_0x31c6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x31c6('0xd')](function(_0x488b35){logger[_0x31c6('0xe')](_0x31c6('0x22'),_0x28937c);logger[_0x31c6('0x11')]('ShowZohoAccount',_0x28937c,JSON[_0x31c6('0x13')](_0x488b35));_0x202f45(_0x488b35);})['catch'](function(_0x2a776d){logger[_0x31c6('0x14')](_0x31c6('0x22'),_0x2a776d['message'],_0x28937c);_0x35c366(_0x3399fe[_0x31c6('0x14')](0x1f4,_0x2a776d[_0x31c6('0x16')]));});});};
\ No newline at end of file
index 4f3bf65..72dada4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x889d=['/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','delete','destroy','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id'];(function(_0x2fedfb,_0xf30f43){var _0x5a6b3f=function(_0x2d66b1){while(--_0x2d66b1){_0x2fedfb['push'](_0x2fedfb['shift']());}};_0x5a6b3f(++_0xf30f43);}(_0x889d,0x6e));var _0xd889=function(_0x4a5972,_0x22541e){_0x4a5972=_0x4a5972-0x0;var _0x49a63c=_0x889d[_0x4a5972];return _0x49a63c;};'use strict';var multer=require('multer');var util=require(_0xd889('0x0'));var path=require(_0xd889('0x1'));var timeout=require(_0xd889('0x2'));var express=require(_0xd889('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd889('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd889('0x5'));var controller=require(_0xd889('0x6'));router[_0xd889('0x7')]('/',auth[_0xd889('0x8')](),controller['index']);router[_0xd889('0x7')](_0xd889('0x9'),auth[_0xd889('0x8')](),controller['show']);router['get'](_0xd889('0xa'),auth[_0xd889('0x8')](),controller[_0xd889('0xb')]);router[_0xd889('0x7')](_0xd889('0xc'),auth[_0xd889('0x8')](),controller[_0xd889('0xd')]);router[_0xd889('0x7')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0xd889('0xe')]);router[_0xd889('0xf')]('/',auth[_0xd889('0x8')](),controller[_0xd889('0x10')]);router[_0xd889('0x11')](_0xd889('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xd889('0x12')](_0xd889('0x9'),auth['isAuthenticated'](),controller[_0xd889('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x25a9=['../../config/environment','get','isAuthenticated','/:id','/:id/fields','getFields','getSubjects','getDescriptions','post','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x9b7a64,_0x38d4a8){var _0x33fd98=function(_0x15c82b){while(--_0x15c82b){_0x9b7a64['push'](_0x9b7a64['shift']());}};_0x33fd98(++_0x38d4a8);}(_0x25a9,0xf1));var _0x925a=function(_0x3fcc20,_0x57c31b){_0x3fcc20=_0x3fcc20-0x0;var _0x15d3ce=_0x25a9[_0x3fcc20];return _0x15d3ce;};'use strict';var multer=require(_0x925a('0x0'));var util=require('util');var path=require(_0x925a('0x1'));var timeout=require('connect-timeout');var express=require(_0x925a('0x2'));var router=express[_0x925a('0x3')]();var fs_extra=require(_0x925a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x925a('0x5'));var config=require(_0x925a('0x6'));var controller=require('./intZohoConfiguration.controller');router[_0x925a('0x7')]('/',auth[_0x925a('0x8')](),controller['index']);router[_0x925a('0x7')](_0x925a('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x925a('0x7')](_0x925a('0xa'),auth[_0x925a('0x8')](),controller[_0x925a('0xb')]);router[_0x925a('0x7')]('/:id/subjects',auth[_0x925a('0x8')](),controller[_0x925a('0xc')]);router['get']('/:id/descriptions',auth[_0x925a('0x8')](),controller[_0x925a('0xd')]);router[_0x925a('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x925a('0xf')](_0x925a('0x9'),auth[_0x925a('0x8')](),controller[_0x925a('0x10')]);router[_0x925a('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x925a('0x12')]);module['exports']=router;
\ No newline at end of file
index 4e480fa..752e4fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc8e=['contact_lead','sequelize','STRING','lead','ENUM','contact'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xcc8e,0xa3));var _0xecc8=function(_0x5f46d3,_0x6139ac){_0x5f46d3=_0x5f46d3-0x0;var _0x5424d7=_0xcc8e[_0x5f46d3];return _0x5424d7;};'use strict';var Sequelize=require(_0xecc8('0x0'));module['exports']={'name':{'type':Sequelize[_0xecc8('0x1')]},'moduleCreate':{'type':Sequelize['ENUM'](_0xecc8('0x2'),'contact','nothing'),'defaultValue':_0xecc8('0x2')},'moduleSearch':{'type':Sequelize[_0xecc8('0x3')]('contact_lead',_0xecc8('0x4'),_0xecc8('0x2')),'defaultValue':_0xecc8('0x5')},'description':{'type':Sequelize[_0xecc8('0x1')]}};
\ No newline at end of file
+var _0xf784=['sequelize','STRING','ENUM','lead','contact','nothing','contact_lead'];(function(_0x47515e,_0x974b1){var _0x279112=function(_0x561c01){while(--_0x561c01){_0x47515e['push'](_0x47515e['shift']());}};_0x279112(++_0x974b1);}(_0xf784,0x1b9));var _0x4f78=function(_0x57d1c8,_0xa86256){_0x57d1c8=_0x57d1c8-0x0;var _0x9343e6=_0xf784[_0x57d1c8];return _0x9343e6;};'use strict';var Sequelize=require(_0x4f78('0x0'));module['exports']={'name':{'type':Sequelize[_0x4f78('0x1')]},'moduleCreate':{'type':Sequelize[_0x4f78('0x2')](_0x4f78('0x3'),_0x4f78('0x4'),_0x4f78('0x5')),'defaultValue':_0x4f78('0x3')},'moduleSearch':{'type':Sequelize[_0x4f78('0x2')]('contact_lead',_0x4f78('0x4'),'lead'),'defaultValue':_0x4f78('0x6')},'description':{'type':Sequelize[_0x4f78('0x1')]}};
\ No newline at end of file
index 86f399e..d02acd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb92=['../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','ZohoConfiguration','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','getFields','findOne','ZohoField','pick','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x2dfe30,_0x2b0b5d){var _0x1f1fda=function(_0x4250f5){while(--_0x4250f5){_0x2dfe30['push'](_0x2dfe30['shift']());}};_0x1f1fda(++_0x2b0b5d);}(_0xfb92,0x8a));var _0x2fb9=function(_0x588ab1,_0x32a749){_0x588ab1=_0x588ab1-0x0;var _0x3b9c40=_0xfb92[_0x588ab1];return _0x3b9c40;};'use strict';var emlformat=require(_0x2fb9('0x0'));var rimraf=require(_0x2fb9('0x1'));var zipdir=require(_0x2fb9('0x2'));var jsonpatch=require(_0x2fb9('0x3'));var rp=require(_0x2fb9('0x4'));var moment=require('moment');var BPromise=require(_0x2fb9('0x5'));var Mustache=require(_0x2fb9('0x6'));var util=require(_0x2fb9('0x7'));var path=require('path');var sox=require(_0x2fb9('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2fb9('0x9'));var crypto=require(_0x2fb9('0xa'));var jsforce=require(_0x2fb9('0xb'));var deskjs=require(_0x2fb9('0xc'));var toCsv=require('to-csv');var querystring=require(_0x2fb9('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2fb9('0xe'));var hardwareService=require(_0x2fb9('0xf'));var logger=require(_0x2fb9('0x10'))(_0x2fb9('0x11'));var utils=require(_0x2fb9('0x12'));var config=require(_0x2fb9('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fb9('0x14'))['db'];function respondWithStatusCode(_0x2f801f,_0xe6b593){_0xe6b593=_0xe6b593||0xcc;return function(_0x41a057){if(_0x41a057){return _0x2f801f['sendStatus'](_0xe6b593);}return _0x2f801f[_0x2fb9('0x15')](_0xe6b593)[_0x2fb9('0x16')]();};}function respondWithResult(_0xc3f21d,_0x39d0e5){_0x39d0e5=_0x39d0e5||0xc8;return function(_0x4f1ba5){if(_0x4f1ba5){return _0xc3f21d[_0x2fb9('0x15')](_0x39d0e5)[_0x2fb9('0x17')](_0x4f1ba5);}};}function respondWithFilteredResult(_0x33782d,_0x4129b0){return function(_0x232819){if(_0x232819){var _0x22fe71=typeof _0x4129b0[_0x2fb9('0x18')]==='undefined'&&typeof _0x4129b0[_0x2fb9('0x19')]===_0x2fb9('0x1a');var _0x4e1447=_0x232819[_0x2fb9('0x1b')];var _0x4d857e=_0x22fe71?0x0:_0x4129b0['offset'];var _0xc0c7a=_0x22fe71?_0x232819[_0x2fb9('0x1b')]:_0x4129b0[_0x2fb9('0x18')]+_0x4129b0['limit'];var _0x5c8b1b;if(_0xc0c7a>=_0x4e1447){_0xc0c7a=_0x4e1447;_0x5c8b1b=0xc8;}else{_0x5c8b1b=0xce;}_0x33782d[_0x2fb9('0x15')](_0x5c8b1b);return _0x33782d[_0x2fb9('0x1c')](_0x2fb9('0x1d'),_0x4d857e+'-'+_0xc0c7a+'/'+_0x4e1447)[_0x2fb9('0x17')](_0x232819);}return null;};}function patchUpdates(_0x5b8dee){return function(_0x5d370e){try{jsonpatch[_0x2fb9('0x1e')](_0x5d370e,_0x5b8dee,!![]);}catch(_0x33073a){return BPromise[_0x2fb9('0x1f')](_0x33073a);}return _0x5d370e[_0x2fb9('0x20')]();};}function saveUpdates(_0x97099c,_0x110aa6){return function(_0x2e85e0){if(_0x2e85e0){return _0x2e85e0[_0x2fb9('0x21')](_0x97099c)[_0x2fb9('0x22')](function(_0x4c7e4c){return _0x4c7e4c;});}return null;};}function removeEntity(_0xbe5ef7,_0x18bea8){return function(_0x36b4f9){if(_0x36b4f9){return _0x36b4f9[_0x2fb9('0x23')]()[_0x2fb9('0x22')](function(){_0xbe5ef7[_0x2fb9('0x15')](0xcc)[_0x2fb9('0x16')]();});}};}function handleEntityNotFound(_0x37e20f,_0x553958){return function(_0x17d236){if(!_0x17d236){_0x37e20f[_0x2fb9('0x24')](0x194);}return _0x17d236;};}function handleError(_0x2f90ef,_0x4ea166){_0x4ea166=_0x4ea166||0x1f4;return function(_0x1ee882){logger['error'](_0x1ee882['stack']);if(_0x1ee882['name']){delete _0x1ee882[_0x2fb9('0x25')];}_0x2f90ef[_0x2fb9('0x15')](_0x4ea166)[_0x2fb9('0x26')](_0x1ee882);};}exports[_0x2fb9('0x27')]=function(_0x46b6d4,_0x72f362){var _0x26270c={},_0x557489={},_0x161ec0={'count':0x0,'rows':[]};var _0x504484=_[_0x2fb9('0x28')](db['ZohoConfiguration'][_0x2fb9('0x29')],function(_0x74a130){return{'name':_0x74a130[_0x2fb9('0x2a')],'type':_0x74a130[_0x2fb9('0x2b')][_0x2fb9('0x2c')]};});_0x557489[_0x2fb9('0x2d')]=_[_0x2fb9('0x28')](_0x504484,_0x2fb9('0x25'));_0x557489[_0x2fb9('0x2e')]=_['keys'](_0x46b6d4[_0x2fb9('0x2e')]);_0x557489[_0x2fb9('0x2f')]=_[_0x2fb9('0x30')](_0x557489[_0x2fb9('0x2d')],_0x557489[_0x2fb9('0x2e')]);_0x26270c[_0x2fb9('0x31')]=_[_0x2fb9('0x30')](_0x557489[_0x2fb9('0x2d')],qs[_0x2fb9('0x32')](_0x46b6d4[_0x2fb9('0x2e')]['fields']));_0x26270c[_0x2fb9('0x31')]=_0x26270c[_0x2fb9('0x31')][_0x2fb9('0x33')]?_0x26270c[_0x2fb9('0x31')]:_0x557489[_0x2fb9('0x2d')];if(!_0x46b6d4[_0x2fb9('0x2e')]['hasOwnProperty'](_0x2fb9('0x34'))){_0x26270c[_0x2fb9('0x19')]=qs[_0x2fb9('0x19')](_0x46b6d4['query'][_0x2fb9('0x19')]);_0x26270c['offset']=qs[_0x2fb9('0x18')](_0x46b6d4[_0x2fb9('0x2e')]['offset']);}_0x26270c[_0x2fb9('0x35')]=qs[_0x2fb9('0x36')](_0x46b6d4[_0x2fb9('0x2e')][_0x2fb9('0x36')]);_0x26270c[_0x2fb9('0x37')]=qs[_0x2fb9('0x2f')](_['pick'](_0x46b6d4['query'],_0x557489[_0x2fb9('0x2f')]),_0x504484);if(_0x46b6d4[_0x2fb9('0x2e')][_0x2fb9('0x38')]){_0x26270c[_0x2fb9('0x37')]=_[_0x2fb9('0x39')](_0x26270c[_0x2fb9('0x37')],{'$or':_[_0x2fb9('0x28')](_0x504484,function(_0x3c0ddc){if(_0x3c0ddc[_0x2fb9('0x2b')]!=='VIRTUAL'){var _0xf65518={};_0xf65518[_0x3c0ddc['name']]={'$like':'%'+_0x46b6d4[_0x2fb9('0x2e')]['filter']+'%'};return _0xf65518;}})});}_0x26270c=_[_0x2fb9('0x39')]({},_0x26270c,_0x46b6d4[_0x2fb9('0x3a')]);var _0x4741fd={'where':_0x26270c[_0x2fb9('0x37')]};return db[_0x2fb9('0x3b')][_0x2fb9('0x1b')](_0x4741fd)[_0x2fb9('0x22')](function(_0x2d06ba){_0x161ec0[_0x2fb9('0x1b')]=_0x2d06ba;if(_0x46b6d4['query']['includeAll']){_0x26270c[_0x2fb9('0x3c')]=[{'all':!![]}];}return db[_0x2fb9('0x3b')][_0x2fb9('0x3d')](_0x26270c);})[_0x2fb9('0x22')](function(_0x243a34){_0x161ec0[_0x2fb9('0x3e')]=_0x243a34;return _0x161ec0;})[_0x2fb9('0x22')](respondWithFilteredResult(_0x72f362,_0x26270c))[_0x2fb9('0x3f')](handleError(_0x72f362,null));};exports[_0x2fb9('0x40')]=function(_0x4c19e4,_0x15eb64){var _0x49d9d3={'raw':![],'where':{'id':_0x4c19e4[_0x2fb9('0x41')]['id']}},_0x4a3546={};_0x4a3546[_0x2fb9('0x2d')]=_[_0x2fb9('0x42')](db['ZohoConfiguration'][_0x2fb9('0x29')]);_0x4a3546[_0x2fb9('0x2e')]=_[_0x2fb9('0x42')](_0x4c19e4[_0x2fb9('0x2e')]);_0x4a3546[_0x2fb9('0x2f')]=_[_0x2fb9('0x30')](_0x4a3546['model'],_0x4a3546[_0x2fb9('0x2e')]);_0x49d9d3[_0x2fb9('0x31')]=_['intersection'](_0x4a3546[_0x2fb9('0x2d')],qs[_0x2fb9('0x32')](_0x4c19e4[_0x2fb9('0x2e')][_0x2fb9('0x32')]));_0x49d9d3[_0x2fb9('0x31')]=_0x49d9d3[_0x2fb9('0x31')][_0x2fb9('0x33')]?_0x49d9d3['attributes']:_0x4a3546[_0x2fb9('0x2d')];if(_0x4c19e4[_0x2fb9('0x2e')][_0x2fb9('0x43')]){_0x49d9d3['include']=[{'all':!![]}];}_0x49d9d3=_[_0x2fb9('0x39')]({},_0x49d9d3,_0x4c19e4['options']);return db[_0x2fb9('0x3b')][_0x2fb9('0x44')](_0x49d9d3)['then'](handleEntityNotFound(_0x15eb64,null))[_0x2fb9('0x22')](respondWithResult(_0x15eb64,null))['catch'](handleError(_0x15eb64,null));};exports['create']=function(_0x54ab1f,_0x2af000){return db[_0x2fb9('0x3b')][_0x2fb9('0x45')](_0x54ab1f[_0x2fb9('0x46')],{})[_0x2fb9('0x22')](respondWithResult(_0x2af000,0xc9))['catch'](handleError(_0x2af000,null));};exports[_0x2fb9('0x21')]=function(_0x1a87b2,_0x35a537){if(_0x1a87b2[_0x2fb9('0x46')]['id']){delete _0x1a87b2[_0x2fb9('0x46')]['id'];}return db[_0x2fb9('0x3b')][_0x2fb9('0x44')]({'where':{'id':_0x1a87b2[_0x2fb9('0x41')]['id']}})[_0x2fb9('0x22')](handleEntityNotFound(_0x35a537,null))[_0x2fb9('0x22')](saveUpdates(_0x1a87b2[_0x2fb9('0x46')],null))[_0x2fb9('0x22')](respondWithResult(_0x35a537,null))[_0x2fb9('0x3f')](handleError(_0x35a537,null));};exports[_0x2fb9('0x23')]=function(_0x566ec5,_0x28bdf4){return db['ZohoConfiguration'][_0x2fb9('0x44')]({'where':{'id':_0x566ec5[_0x2fb9('0x41')]['id']}})[_0x2fb9('0x22')](handleEntityNotFound(_0x28bdf4,null))[_0x2fb9('0x22')](removeEntity(_0x28bdf4,null))[_0x2fb9('0x3f')](handleError(_0x28bdf4,null));};exports[_0x2fb9('0x47')]=function(_0x3ec46a,_0x8bee7f,_0x26e262){var _0x6dcb0={};var _0x135b31={};var _0x41e248;var _0x37433f;return db[_0x2fb9('0x3b')][_0x2fb9('0x48')]({'where':{'id':_0x3ec46a[_0x2fb9('0x41')]['id']}})[_0x2fb9('0x22')](handleEntityNotFound(_0x8bee7f,null))[_0x2fb9('0x22')](function(_0x23499c){if(_0x23499c){_0x41e248=_0x23499c;_0x135b31['model']=_['keys'](db[_0x2fb9('0x49')][_0x2fb9('0x29')]);_0x135b31[_0x2fb9('0x2e')]=_[_0x2fb9('0x42')](_0x3ec46a[_0x2fb9('0x2e')]);_0x135b31['filters']=_[_0x2fb9('0x30')](_0x135b31[_0x2fb9('0x2d')],_0x135b31[_0x2fb9('0x2e')]);_0x6dcb0['attributes']=_[_0x2fb9('0x30')](_0x135b31[_0x2fb9('0x2d')],qs[_0x2fb9('0x32')](_0x3ec46a['query'][_0x2fb9('0x32')]));_0x6dcb0[_0x2fb9('0x31')]=_0x6dcb0[_0x2fb9('0x31')][_0x2fb9('0x33')]?_0x6dcb0[_0x2fb9('0x31')]:_0x135b31[_0x2fb9('0x2d')];_0x6dcb0[_0x2fb9('0x35')]=qs[_0x2fb9('0x36')](_0x3ec46a['query'][_0x2fb9('0x36')]);_0x6dcb0[_0x2fb9('0x37')]=qs[_0x2fb9('0x2f')](_[_0x2fb9('0x4a')](_0x3ec46a[_0x2fb9('0x2e')],_0x135b31['filters']));if(_0x3ec46a[_0x2fb9('0x2e')][_0x2fb9('0x38')]){_0x6dcb0[_0x2fb9('0x37')]=_[_0x2fb9('0x39')](_0x6dcb0[_0x2fb9('0x37')],{'$or':_[_0x2fb9('0x28')](_0x6dcb0[_0x2fb9('0x31')],function(_0x22f825){var _0xce752={};_0xce752[_0x22f825]={'$like':'%'+_0x3ec46a[_0x2fb9('0x2e')][_0x2fb9('0x38')]+'%'};return _0xce752;})});}_0x6dcb0=_['merge']({},_0x6dcb0,_0x3ec46a[_0x2fb9('0x3a')]);return _0x41e248[_0x2fb9('0x47')](_0x6dcb0);}})[_0x2fb9('0x22')](function(_0x304f68){if(_0x304f68){_0x37433f=_0x304f68[_0x2fb9('0x33')];if(!_0x3ec46a[_0x2fb9('0x2e')][_0x2fb9('0x4b')]('nolimit')){_0x6dcb0['limit']=qs['limit'](_0x3ec46a[_0x2fb9('0x2e')][_0x2fb9('0x19')]);_0x6dcb0[_0x2fb9('0x18')]=qs['offset'](_0x3ec46a['query']['offset']);}return _0x41e248['getFields'](_0x6dcb0);}})[_0x2fb9('0x22')](function(_0x202c32){if(_0x202c32){return _0x202c32?{'count':_0x37433f,'rows':_0x202c32}:null;}})[_0x2fb9('0x22')](respondWithResult(_0x8bee7f,null))[_0x2fb9('0x3f')](handleError(_0x8bee7f,null));};exports[_0x2fb9('0x4c')]=function(_0x20065a,_0x6e67c1,_0x30124d){var _0x106ee7={};var _0x1cbb40={};var _0x20800f;var _0x164aad;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x20065a[_0x2fb9('0x41')]['id']}})[_0x2fb9('0x22')](handleEntityNotFound(_0x6e67c1,null))['then'](function(_0x4465ef){if(_0x4465ef){_0x20800f=_0x4465ef;_0x1cbb40[_0x2fb9('0x2d')]=_['keys'](db[_0x2fb9('0x49')]['rawAttributes']);_0x1cbb40[_0x2fb9('0x2e')]=_[_0x2fb9('0x42')](_0x20065a[_0x2fb9('0x2e')]);_0x1cbb40[_0x2fb9('0x2f')]=_[_0x2fb9('0x30')](_0x1cbb40[_0x2fb9('0x2d')],_0x1cbb40[_0x2fb9('0x2e')]);_0x106ee7[_0x2fb9('0x31')]=_[_0x2fb9('0x30')](_0x1cbb40['model'],qs[_0x2fb9('0x32')](_0x20065a[_0x2fb9('0x2e')][_0x2fb9('0x32')]));_0x106ee7['attributes']=_0x106ee7[_0x2fb9('0x31')]['length']?_0x106ee7[_0x2fb9('0x31')]:_0x1cbb40['model'];_0x106ee7[_0x2fb9('0x35')]=qs[_0x2fb9('0x36')](_0x20065a['query'][_0x2fb9('0x36')]);_0x106ee7['where']=qs[_0x2fb9('0x2f')](_[_0x2fb9('0x4a')](_0x20065a['query'],_0x1cbb40[_0x2fb9('0x2f')]));if(_0x20065a['query'][_0x2fb9('0x38')]){_0x106ee7['where']=_['merge'](_0x106ee7[_0x2fb9('0x37')],{'$or':_[_0x2fb9('0x28')](_0x106ee7[_0x2fb9('0x31')],function(_0x5b363c){var _0x3123d3={};_0x3123d3[_0x5b363c]={'$like':'%'+_0x20065a[_0x2fb9('0x2e')][_0x2fb9('0x38')]+'%'};return _0x3123d3;})});}_0x106ee7=_[_0x2fb9('0x39')]({},_0x106ee7,_0x20065a[_0x2fb9('0x3a')]);return _0x20800f['getSubjects'](_0x106ee7);}})[_0x2fb9('0x22')](function(_0x1a02f4){if(_0x1a02f4){_0x164aad=_0x1a02f4[_0x2fb9('0x33')];if(!_0x20065a[_0x2fb9('0x2e')][_0x2fb9('0x4b')](_0x2fb9('0x34'))){_0x106ee7[_0x2fb9('0x19')]=qs['limit'](_0x20065a[_0x2fb9('0x2e')][_0x2fb9('0x19')]);_0x106ee7[_0x2fb9('0x18')]=qs[_0x2fb9('0x18')](_0x20065a[_0x2fb9('0x2e')][_0x2fb9('0x18')]);}return _0x20800f[_0x2fb9('0x4c')](_0x106ee7);}})['then'](function(_0x57c04b){if(_0x57c04b){return _0x57c04b?{'count':_0x164aad,'rows':_0x57c04b}:null;}})[_0x2fb9('0x22')](respondWithResult(_0x6e67c1,null))[_0x2fb9('0x3f')](handleError(_0x6e67c1,null));};exports['getDescriptions']=function(_0x314699,_0xb5c73,_0x3e933d){var _0x3b5c8f={};var _0x319c16={};var _0x503605;var _0x209eee;return db[_0x2fb9('0x3b')]['findOne']({'where':{'id':_0x314699[_0x2fb9('0x41')]['id']}})['then'](handleEntityNotFound(_0xb5c73,null))[_0x2fb9('0x22')](function(_0x350b3f){if(_0x350b3f){_0x503605=_0x350b3f;_0x319c16[_0x2fb9('0x2d')]=_[_0x2fb9('0x42')](db[_0x2fb9('0x49')][_0x2fb9('0x29')]);_0x319c16[_0x2fb9('0x2e')]=_[_0x2fb9('0x42')](_0x314699[_0x2fb9('0x2e')]);_0x319c16[_0x2fb9('0x2f')]=_[_0x2fb9('0x30')](_0x319c16['model'],_0x319c16['query']);_0x3b5c8f[_0x2fb9('0x31')]=_['intersection'](_0x319c16[_0x2fb9('0x2d')],qs[_0x2fb9('0x32')](_0x314699[_0x2fb9('0x2e')][_0x2fb9('0x32')]));_0x3b5c8f[_0x2fb9('0x31')]=_0x3b5c8f[_0x2fb9('0x31')][_0x2fb9('0x33')]?_0x3b5c8f[_0x2fb9('0x31')]:_0x319c16[_0x2fb9('0x2d')];_0x3b5c8f[_0x2fb9('0x35')]=qs[_0x2fb9('0x36')](_0x314699['query'][_0x2fb9('0x36')]);_0x3b5c8f[_0x2fb9('0x37')]=qs[_0x2fb9('0x2f')](_[_0x2fb9('0x4a')](_0x314699[_0x2fb9('0x2e')],_0x319c16[_0x2fb9('0x2f')]));if(_0x314699['query']['filter']){_0x3b5c8f[_0x2fb9('0x37')]=_['merge'](_0x3b5c8f[_0x2fb9('0x37')],{'$or':_[_0x2fb9('0x28')](_0x3b5c8f[_0x2fb9('0x31')],function(_0x221cf7){var _0xb591fa={};_0xb591fa[_0x221cf7]={'$like':'%'+_0x314699[_0x2fb9('0x2e')][_0x2fb9('0x38')]+'%'};return _0xb591fa;})});}_0x3b5c8f=_[_0x2fb9('0x39')]({},_0x3b5c8f,_0x314699[_0x2fb9('0x3a')]);return _0x503605[_0x2fb9('0x4d')](_0x3b5c8f);}})[_0x2fb9('0x22')](function(_0x198c80){if(_0x198c80){_0x209eee=_0x198c80[_0x2fb9('0x33')];if(!_0x314699['query']['hasOwnProperty']('nolimit')){_0x3b5c8f['limit']=qs[_0x2fb9('0x19')](_0x314699['query'][_0x2fb9('0x19')]);_0x3b5c8f[_0x2fb9('0x18')]=qs[_0x2fb9('0x18')](_0x314699[_0x2fb9('0x2e')][_0x2fb9('0x18')]);}return _0x503605[_0x2fb9('0x4d')](_0x3b5c8f);}})[_0x2fb9('0x22')](function(_0x5e381a){if(_0x5e381a){return _0x5e381a?{'count':_0x209eee,'rows':_0x5e381a}:null;}})[_0x2fb9('0x22')](respondWithResult(_0xb5c73,null))[_0x2fb9('0x3f')](handleError(_0xb5c73,null));};
\ No newline at end of file
+var _0xaefc=['../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','ZohoConfiguration','includeAll','include','catch','params','fields','options','find','create','body','getFields','findOne','order','ZohoField','getSubjects','getDescriptions','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x4fd779,_0x52bac5){var _0x212598=function(_0x3f138d){while(--_0x3f138d){_0x4fd779['push'](_0x4fd779['shift']());}};_0x212598(++_0x52bac5);}(_0xaefc,0x11c));var _0xcaef=function(_0x1628b3,_0x5f1805){_0x1628b3=_0x1628b3-0x0;var _0x4bad95=_0xaefc[_0x1628b3];return _0x4bad95;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcaef('0x0'));var zipdir=require(_0xcaef('0x1'));var jsonpatch=require(_0xcaef('0x2'));var rp=require(_0xcaef('0x3'));var moment=require(_0xcaef('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcaef('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xcaef('0x6'));var ejs=require(_0xcaef('0x7'));var fs=require('fs');var fs_extra=require(_0xcaef('0x8'));var _=require(_0xcaef('0x9'));var squel=require(_0xcaef('0xa'));var crypto=require(_0xcaef('0xb'));var jsforce=require(_0xcaef('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xcaef('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xcaef('0xd'));var authService=require(_0xcaef('0xe'));var qs=require(_0xcaef('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcaef('0x10'));var logger=require(_0xcaef('0x11'))('api');var utils=require(_0xcaef('0x12'));var config=require(_0xcaef('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xcaef('0x14'))['db'];function respondWithStatusCode(_0xb69407,_0x3ffa6a){_0x3ffa6a=_0x3ffa6a||0xcc;return function(_0x383bfb){if(_0x383bfb){return _0xb69407[_0xcaef('0x15')](_0x3ffa6a);}return _0xb69407[_0xcaef('0x16')](_0x3ffa6a)[_0xcaef('0x17')]();};}function respondWithResult(_0x4729bb,_0x46a571){_0x46a571=_0x46a571||0xc8;return function(_0x585443){if(_0x585443){return _0x4729bb[_0xcaef('0x16')](_0x46a571)[_0xcaef('0x18')](_0x585443);}};}function respondWithFilteredResult(_0x423aec,_0x2013f4){return function(_0x446def){if(_0x446def){var _0xa4fcf5=typeof _0x2013f4['offset']===_0xcaef('0x19')&&typeof _0x2013f4[_0xcaef('0x1a')]===_0xcaef('0x19');var _0x4d3535=_0x446def[_0xcaef('0x1b')];var _0x5a4ffe=_0xa4fcf5?0x0:_0x2013f4[_0xcaef('0x1c')];var _0x4601bf=_0xa4fcf5?_0x446def[_0xcaef('0x1b')]:_0x2013f4[_0xcaef('0x1c')]+_0x2013f4['limit'];var _0x226c34;if(_0x4601bf>=_0x4d3535){_0x4601bf=_0x4d3535;_0x226c34=0xc8;}else{_0x226c34=0xce;}_0x423aec[_0xcaef('0x16')](_0x226c34);return _0x423aec[_0xcaef('0x1d')](_0xcaef('0x1e'),_0x5a4ffe+'-'+_0x4601bf+'/'+_0x4d3535)[_0xcaef('0x18')](_0x446def);}return null;};}function patchUpdates(_0x19fd72){return function(_0x1eca40){try{jsonpatch[_0xcaef('0x1f')](_0x1eca40,_0x19fd72,!![]);}catch(_0x22fa81){return BPromise[_0xcaef('0x20')](_0x22fa81);}return _0x1eca40['save']();};}function saveUpdates(_0x4998ee,_0x10301f){return function(_0x5f44e5){if(_0x5f44e5){return _0x5f44e5['update'](_0x4998ee)[_0xcaef('0x21')](function(_0x3348a7){return _0x3348a7;});}return null;};}function removeEntity(_0x257d14,_0x4c5df8){return function(_0x53633f){if(_0x53633f){return _0x53633f[_0xcaef('0x22')]()['then'](function(){_0x257d14[_0xcaef('0x16')](0xcc)[_0xcaef('0x17')]();});}};}function handleEntityNotFound(_0x494f68,_0x4cd89c){return function(_0x44d4b5){if(!_0x44d4b5){_0x494f68[_0xcaef('0x15')](0x194);}return _0x44d4b5;};}function handleError(_0x40aef9,_0x3b7fab){_0x3b7fab=_0x3b7fab||0x1f4;return function(_0x38ad37){logger[_0xcaef('0x23')](_0x38ad37[_0xcaef('0x24')]);if(_0x38ad37[_0xcaef('0x25')]){delete _0x38ad37[_0xcaef('0x25')];}_0x40aef9[_0xcaef('0x16')](_0x3b7fab)[_0xcaef('0x26')](_0x38ad37);};}exports[_0xcaef('0x27')]=function(_0x1edfce,_0x1fdf73){var _0x301570={},_0x368fd4={},_0x139a7a={'count':0x0,'rows':[]};var _0x567828=_['map'](db['ZohoConfiguration'][_0xcaef('0x28')],function(_0x271e80){return{'name':_0x271e80[_0xcaef('0x29')],'type':_0x271e80[_0xcaef('0x2a')][_0xcaef('0x2b')]};});_0x368fd4[_0xcaef('0x2c')]=_[_0xcaef('0x2d')](_0x567828,'name');_0x368fd4[_0xcaef('0x2e')]=_[_0xcaef('0x2f')](_0x1edfce[_0xcaef('0x2e')]);_0x368fd4[_0xcaef('0x30')]=_[_0xcaef('0x31')](_0x368fd4['model'],_0x368fd4[_0xcaef('0x2e')]);_0x301570[_0xcaef('0x32')]=_[_0xcaef('0x31')](_0x368fd4[_0xcaef('0x2c')],qs['fields'](_0x1edfce[_0xcaef('0x2e')]['fields']));_0x301570[_0xcaef('0x32')]=_0x301570[_0xcaef('0x32')][_0xcaef('0x33')]?_0x301570[_0xcaef('0x32')]:_0x368fd4[_0xcaef('0x2c')];if(!_0x1edfce[_0xcaef('0x2e')]['hasOwnProperty'](_0xcaef('0x34'))){_0x301570['limit']=qs[_0xcaef('0x1a')](_0x1edfce['query'][_0xcaef('0x1a')]);_0x301570[_0xcaef('0x1c')]=qs['offset'](_0x1edfce[_0xcaef('0x2e')]['offset']);}_0x301570['order']=qs['sort'](_0x1edfce[_0xcaef('0x2e')][_0xcaef('0x35')]);_0x301570['where']=qs[_0xcaef('0x30')](_[_0xcaef('0x36')](_0x1edfce[_0xcaef('0x2e')],_0x368fd4['filters']),_0x567828);if(_0x1edfce['query'][_0xcaef('0x37')]){_0x301570[_0xcaef('0x38')]=_[_0xcaef('0x39')](_0x301570[_0xcaef('0x38')],{'$or':_[_0xcaef('0x2d')](_0x567828,function(_0x244a9e){if(_0x244a9e[_0xcaef('0x2a')]!==_0xcaef('0x3a')){var _0x3a4383={};_0x3a4383[_0x244a9e['name']]={'$like':'%'+_0x1edfce[_0xcaef('0x2e')]['filter']+'%'};return _0x3a4383;}})});}_0x301570=_[_0xcaef('0x39')]({},_0x301570,_0x1edfce['options']);var _0xc24747={'where':_0x301570[_0xcaef('0x38')]};return db[_0xcaef('0x3b')][_0xcaef('0x1b')](_0xc24747)[_0xcaef('0x21')](function(_0x392999){_0x139a7a['count']=_0x392999;if(_0x1edfce['query'][_0xcaef('0x3c')]){_0x301570[_0xcaef('0x3d')]=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x301570);})[_0xcaef('0x21')](function(_0x2b7813){_0x139a7a['rows']=_0x2b7813;return _0x139a7a;})['then'](respondWithFilteredResult(_0x1fdf73,_0x301570))[_0xcaef('0x3e')](handleError(_0x1fdf73,null));};exports['show']=function(_0xd74462,_0x5d8c4c){var _0x5c82ef={'raw':![],'where':{'id':_0xd74462[_0xcaef('0x3f')]['id']}},_0x4c0354={};_0x4c0354[_0xcaef('0x2c')]=_['keys'](db[_0xcaef('0x3b')]['rawAttributes']);_0x4c0354['query']=_[_0xcaef('0x2f')](_0xd74462[_0xcaef('0x2e')]);_0x4c0354[_0xcaef('0x30')]=_[_0xcaef('0x31')](_0x4c0354[_0xcaef('0x2c')],_0x4c0354['query']);_0x5c82ef[_0xcaef('0x32')]=_[_0xcaef('0x31')](_0x4c0354[_0xcaef('0x2c')],qs[_0xcaef('0x40')](_0xd74462[_0xcaef('0x2e')][_0xcaef('0x40')]));_0x5c82ef[_0xcaef('0x32')]=_0x5c82ef[_0xcaef('0x32')][_0xcaef('0x33')]?_0x5c82ef[_0xcaef('0x32')]:_0x4c0354[_0xcaef('0x2c')];if(_0xd74462[_0xcaef('0x2e')]['includeAll']){_0x5c82ef[_0xcaef('0x3d')]=[{'all':!![]}];}_0x5c82ef=_['merge']({},_0x5c82ef,_0xd74462[_0xcaef('0x41')]);return db['ZohoConfiguration'][_0xcaef('0x42')](_0x5c82ef)[_0xcaef('0x21')](handleEntityNotFound(_0x5d8c4c,null))[_0xcaef('0x21')](respondWithResult(_0x5d8c4c,null))[_0xcaef('0x3e')](handleError(_0x5d8c4c,null));};exports[_0xcaef('0x43')]=function(_0x249f0b,_0x3e75a1){return db[_0xcaef('0x3b')][_0xcaef('0x43')](_0x249f0b[_0xcaef('0x44')],{})[_0xcaef('0x21')](respondWithResult(_0x3e75a1,0xc9))[_0xcaef('0x3e')](handleError(_0x3e75a1,null));};exports['update']=function(_0x3ad604,_0xcf6f81){if(_0x3ad604[_0xcaef('0x44')]['id']){delete _0x3ad604[_0xcaef('0x44')]['id'];}return db['ZohoConfiguration'][_0xcaef('0x42')]({'where':{'id':_0x3ad604[_0xcaef('0x3f')]['id']}})[_0xcaef('0x21')](handleEntityNotFound(_0xcf6f81,null))[_0xcaef('0x21')](saveUpdates(_0x3ad604[_0xcaef('0x44')],null))[_0xcaef('0x21')](respondWithResult(_0xcf6f81,null))[_0xcaef('0x3e')](handleError(_0xcf6f81,null));};exports[_0xcaef('0x22')]=function(_0x479756,_0x211a6c){return db['ZohoConfiguration'][_0xcaef('0x42')]({'where':{'id':_0x479756['params']['id']}})[_0xcaef('0x21')](handleEntityNotFound(_0x211a6c,null))[_0xcaef('0x21')](removeEntity(_0x211a6c,null))['catch'](handleError(_0x211a6c,null));};exports[_0xcaef('0x45')]=function(_0x528b97,_0x1289c0,_0x5c5bcb){var _0x3494e5={};var _0x6cd668={};var _0x1f762f;var _0x7281df;return db[_0xcaef('0x3b')][_0xcaef('0x46')]({'where':{'id':_0x528b97[_0xcaef('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1289c0,null))[_0xcaef('0x21')](function(_0x7baa5){if(_0x7baa5){_0x1f762f=_0x7baa5;_0x6cd668[_0xcaef('0x2c')]=_[_0xcaef('0x2f')](db['ZohoField'][_0xcaef('0x28')]);_0x6cd668[_0xcaef('0x2e')]=_[_0xcaef('0x2f')](_0x528b97[_0xcaef('0x2e')]);_0x6cd668[_0xcaef('0x30')]=_[_0xcaef('0x31')](_0x6cd668[_0xcaef('0x2c')],_0x6cd668[_0xcaef('0x2e')]);_0x3494e5['attributes']=_['intersection'](_0x6cd668[_0xcaef('0x2c')],qs[_0xcaef('0x40')](_0x528b97[_0xcaef('0x2e')]['fields']));_0x3494e5[_0xcaef('0x32')]=_0x3494e5[_0xcaef('0x32')][_0xcaef('0x33')]?_0x3494e5[_0xcaef('0x32')]:_0x6cd668[_0xcaef('0x2c')];_0x3494e5[_0xcaef('0x47')]=qs['sort'](_0x528b97['query'][_0xcaef('0x35')]);_0x3494e5[_0xcaef('0x38')]=qs[_0xcaef('0x30')](_[_0xcaef('0x36')](_0x528b97[_0xcaef('0x2e')],_0x6cd668[_0xcaef('0x30')]));if(_0x528b97[_0xcaef('0x2e')][_0xcaef('0x37')]){_0x3494e5['where']=_['merge'](_0x3494e5[_0xcaef('0x38')],{'$or':_[_0xcaef('0x2d')](_0x3494e5['attributes'],function(_0x292008){var _0x2a3df6={};_0x2a3df6[_0x292008]={'$like':'%'+_0x528b97[_0xcaef('0x2e')][_0xcaef('0x37')]+'%'};return _0x2a3df6;})});}_0x3494e5=_[_0xcaef('0x39')]({},_0x3494e5,_0x528b97[_0xcaef('0x41')]);return _0x1f762f[_0xcaef('0x45')](_0x3494e5);}})[_0xcaef('0x21')](function(_0x1bd53f){if(_0x1bd53f){_0x7281df=_0x1bd53f[_0xcaef('0x33')];if(!_0x528b97[_0xcaef('0x2e')]['hasOwnProperty'](_0xcaef('0x34'))){_0x3494e5['limit']=qs[_0xcaef('0x1a')](_0x528b97[_0xcaef('0x2e')]['limit']);_0x3494e5['offset']=qs[_0xcaef('0x1c')](_0x528b97[_0xcaef('0x2e')][_0xcaef('0x1c')]);}return _0x1f762f[_0xcaef('0x45')](_0x3494e5);}})[_0xcaef('0x21')](function(_0x3d3aaf){if(_0x3d3aaf){return _0x3d3aaf?{'count':_0x7281df,'rows':_0x3d3aaf}:null;}})['then'](respondWithResult(_0x1289c0,null))[_0xcaef('0x3e')](handleError(_0x1289c0,null));};exports['getSubjects']=function(_0x3700a,_0x2e78e7,_0x43fda7){var _0x1049a2={};var _0x33ef03={};var _0xbcc1c;var _0x2f90bd;return db[_0xcaef('0x3b')][_0xcaef('0x46')]({'where':{'id':_0x3700a[_0xcaef('0x3f')]['id']}})[_0xcaef('0x21')](handleEntityNotFound(_0x2e78e7,null))[_0xcaef('0x21')](function(_0x443994){if(_0x443994){_0xbcc1c=_0x443994;_0x33ef03[_0xcaef('0x2c')]=_[_0xcaef('0x2f')](db[_0xcaef('0x48')][_0xcaef('0x28')]);_0x33ef03['query']=_[_0xcaef('0x2f')](_0x3700a[_0xcaef('0x2e')]);_0x33ef03[_0xcaef('0x30')]=_['intersection'](_0x33ef03[_0xcaef('0x2c')],_0x33ef03[_0xcaef('0x2e')]);_0x1049a2[_0xcaef('0x32')]=_[_0xcaef('0x31')](_0x33ef03[_0xcaef('0x2c')],qs[_0xcaef('0x40')](_0x3700a[_0xcaef('0x2e')]['fields']));_0x1049a2['attributes']=_0x1049a2[_0xcaef('0x32')][_0xcaef('0x33')]?_0x1049a2[_0xcaef('0x32')]:_0x33ef03['model'];_0x1049a2[_0xcaef('0x47')]=qs['sort'](_0x3700a[_0xcaef('0x2e')][_0xcaef('0x35')]);_0x1049a2[_0xcaef('0x38')]=qs[_0xcaef('0x30')](_[_0xcaef('0x36')](_0x3700a['query'],_0x33ef03['filters']));if(_0x3700a[_0xcaef('0x2e')][_0xcaef('0x37')]){_0x1049a2[_0xcaef('0x38')]=_[_0xcaef('0x39')](_0x1049a2['where'],{'$or':_[_0xcaef('0x2d')](_0x1049a2[_0xcaef('0x32')],function(_0x32ce4d){var _0x1b861c={};_0x1b861c[_0x32ce4d]={'$like':'%'+_0x3700a[_0xcaef('0x2e')][_0xcaef('0x37')]+'%'};return _0x1b861c;})});}_0x1049a2=_[_0xcaef('0x39')]({},_0x1049a2,_0x3700a['options']);return _0xbcc1c[_0xcaef('0x49')](_0x1049a2);}})[_0xcaef('0x21')](function(_0x4991f1){if(_0x4991f1){_0x2f90bd=_0x4991f1[_0xcaef('0x33')];if(!_0x3700a[_0xcaef('0x2e')]['hasOwnProperty'](_0xcaef('0x34'))){_0x1049a2['limit']=qs['limit'](_0x3700a['query'][_0xcaef('0x1a')]);_0x1049a2[_0xcaef('0x1c')]=qs[_0xcaef('0x1c')](_0x3700a[_0xcaef('0x2e')][_0xcaef('0x1c')]);}return _0xbcc1c[_0xcaef('0x49')](_0x1049a2);}})[_0xcaef('0x21')](function(_0x12ecee){if(_0x12ecee){return _0x12ecee?{'count':_0x2f90bd,'rows':_0x12ecee}:null;}})[_0xcaef('0x21')](respondWithResult(_0x2e78e7,null))['catch'](handleError(_0x2e78e7,null));};exports[_0xcaef('0x4a')]=function(_0x3f6eb2,_0x2a5df6,_0x3672a9){var _0x4d3d2b={};var _0x5d3dee={};var _0x1e90dd;var _0x3a6636;return db[_0xcaef('0x3b')][_0xcaef('0x46')]({'where':{'id':_0x3f6eb2['params']['id']}})[_0xcaef('0x21')](handleEntityNotFound(_0x2a5df6,null))['then'](function(_0x5c56e6){if(_0x5c56e6){_0x1e90dd=_0x5c56e6;_0x5d3dee['model']=_[_0xcaef('0x2f')](db[_0xcaef('0x48')][_0xcaef('0x28')]);_0x5d3dee['query']=_[_0xcaef('0x2f')](_0x3f6eb2[_0xcaef('0x2e')]);_0x5d3dee[_0xcaef('0x30')]=_[_0xcaef('0x31')](_0x5d3dee[_0xcaef('0x2c')],_0x5d3dee[_0xcaef('0x2e')]);_0x4d3d2b[_0xcaef('0x32')]=_[_0xcaef('0x31')](_0x5d3dee[_0xcaef('0x2c')],qs['fields'](_0x3f6eb2[_0xcaef('0x2e')]['fields']));_0x4d3d2b['attributes']=_0x4d3d2b[_0xcaef('0x32')][_0xcaef('0x33')]?_0x4d3d2b[_0xcaef('0x32')]:_0x5d3dee[_0xcaef('0x2c')];_0x4d3d2b[_0xcaef('0x47')]=qs[_0xcaef('0x35')](_0x3f6eb2[_0xcaef('0x2e')][_0xcaef('0x35')]);_0x4d3d2b[_0xcaef('0x38')]=qs[_0xcaef('0x30')](_['pick'](_0x3f6eb2[_0xcaef('0x2e')],_0x5d3dee[_0xcaef('0x30')]));if(_0x3f6eb2[_0xcaef('0x2e')][_0xcaef('0x37')]){_0x4d3d2b['where']=_['merge'](_0x4d3d2b[_0xcaef('0x38')],{'$or':_[_0xcaef('0x2d')](_0x4d3d2b[_0xcaef('0x32')],function(_0xb1b9ac){var _0x232d34={};_0x232d34[_0xb1b9ac]={'$like':'%'+_0x3f6eb2[_0xcaef('0x2e')][_0xcaef('0x37')]+'%'};return _0x232d34;})});}_0x4d3d2b=_['merge']({},_0x4d3d2b,_0x3f6eb2[_0xcaef('0x41')]);return _0x1e90dd['getDescriptions'](_0x4d3d2b);}})[_0xcaef('0x21')](function(_0x3fcb51){if(_0x3fcb51){_0x3a6636=_0x3fcb51[_0xcaef('0x33')];if(!_0x3f6eb2['query'][_0xcaef('0x4b')](_0xcaef('0x34'))){_0x4d3d2b[_0xcaef('0x1a')]=qs[_0xcaef('0x1a')](_0x3f6eb2[_0xcaef('0x2e')][_0xcaef('0x1a')]);_0x4d3d2b[_0xcaef('0x1c')]=qs[_0xcaef('0x1c')](_0x3f6eb2[_0xcaef('0x2e')]['offset']);}return _0x1e90dd['getDescriptions'](_0x4d3d2b);}})[_0xcaef('0x21')](function(_0x11b183){if(_0x11b183){return _0x11b183?{'count':_0x3a6636,'rows':_0x11b183}:null;}})[_0xcaef('0x21')](respondWithResult(_0x2a5df6,null))['catch'](handleError(_0x2a5df6,null));};
\ No newline at end of file
index a27d1b9..da7b140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73c7=['request-promise','path','../../config/environment','./intZohoConfiguration.attributes','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','bluebird'];(function(_0x57d4da,_0x21dc63){var _0x367130=function(_0x3b9d86){while(--_0x3b9d86){_0x57d4da['push'](_0x57d4da['shift']());}};_0x367130(++_0x21dc63);}(_0x73c7,0xed));var _0x773c=function(_0x50966b,_0x4ee335){_0x50966b=_0x50966b-0x0;var _0x26d24c=_0x73c7[_0x50966b];return _0x26d24c;};'use strict';var _=require(_0x773c('0x0'));var util=require(_0x773c('0x1'));var logger=require(_0x773c('0x2'))(_0x773c('0x3'));var moment=require('moment');var BPromise=require(_0x773c('0x4'));var rp=require(_0x773c('0x5'));var fs=require('fs');var path=require(_0x773c('0x6'));var rimraf=require('rimraf');var config=require(_0x773c('0x7'));var attributes=require(_0x773c('0x8'));module['exports']=function(_0x5ab654,_0x3b4109){return _0x5ab654['define'](_0x773c('0x9'),attributes,{'tableName':_0x773c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84d9=['path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','api','moment','request-promise'];(function(_0x18bcb5,_0x1ad113){var _0x3a8828=function(_0x1187dd){while(--_0x1187dd){_0x18bcb5['push'](_0x18bcb5['shift']());}};_0x3a8828(++_0x1ad113);}(_0x84d9,0x10f));var _0x984d=function(_0x19e2d2,_0x4ca76f){_0x19e2d2=_0x19e2d2-0x0;var _0xc7d35f=_0x84d9[_0x19e2d2];return _0xc7d35f;};'use strict';var _=require(_0x984d('0x0'));var util=require('util');var logger=require(_0x984d('0x1'))(_0x984d('0x2'));var moment=require(_0x984d('0x3'));var BPromise=require('bluebird');var rp=require(_0x984d('0x4'));var fs=require('fs');var path=require(_0x984d('0x5'));var rimraf=require(_0x984d('0x6'));var config=require(_0x984d('0x7'));var attributes=require(_0x984d('0x8'));module[_0x984d('0x9')]=function(_0x3cf681,_0x4f7bff){return _0x3cf681['define'](_0x984d('0xa'),attributes,{'tableName':_0x984d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 651cc24..e55e8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67aa=['request\x20sent','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','info'];(function(_0x271d2,_0x139546){var _0x44c3e7=function(_0x3dbc1b){while(--_0x3dbc1b){_0x271d2['push'](_0x271d2['shift']());}};_0x44c3e7(++_0x139546);}(_0x67aa,0x88));var _0xa67a=function(_0x216af3,_0x1b2340){_0x216af3=_0x216af3-0x0;var _0x421227=_0x67aa[_0x216af3];return _0x421227;};'use strict';var _=require(_0xa67a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa67a('0x1'));var rs=require(_0xa67a('0x2'));var fs=require('fs');var Redis=require(_0xa67a('0x3'));var db=require(_0xa67a('0x4'))['db'];var utils=require(_0xa67a('0x5'));var logger=require('../../config/logger')(_0xa67a('0x6'));var config=require(_0xa67a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa67a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31b267,_0x185f65,_0x35b379){return new BPromise(function(_0x47e84e,_0x3d168c){return client[_0xa67a('0x9')](_0x31b267,_0x35b379)['then'](function(_0x394551){logger['info'](_0xa67a('0xa'),_0x185f65,'request\x20sent');logger[_0xa67a('0xb')](_0xa67a('0xc'),_0x185f65,'request\x20sent',JSON['stringify'](_0x394551));if(_0x394551['error']){if(_0x394551[_0xa67a('0xd')]['code']===0x1f4){logger[_0xa67a('0xd')](_0xa67a('0xa'),_0x185f65,_0x394551['error'][_0xa67a('0xe')]);return _0x3d168c(_0x394551[_0xa67a('0xd')][_0xa67a('0xe')]);}logger['error'](_0xa67a('0xa'),_0x185f65,_0x394551[_0xa67a('0xd')][_0xa67a('0xe')]);return _0x47e84e(_0x394551['error'][_0xa67a('0xe')]);}else{logger[_0xa67a('0xf')](_0xa67a('0xa'),_0x185f65,_0xa67a('0x10'));_0x47e84e(_0x394551[_0xa67a('0x11')]['message']);}})[_0xa67a('0x12')](function(_0x1a774a){logger[_0xa67a('0xd')](_0xa67a('0xa'),_0x185f65,_0x1a774a);_0x3d168c(_0x1a774a);});});}
\ No newline at end of file
+var _0x93dd=['http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','randomstring','ioredis','rpc','../../config/environment','jayson/promise'];(function(_0x11c35b,_0x3e5f58){var _0x59640b=function(_0x4ec94a){while(--_0x4ec94a){_0x11c35b['push'](_0x11c35b['shift']());}};_0x59640b(++_0x3e5f58);}(_0x93dd,0xd5));var _0xd93d=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x93dd[_0x4ff09b];return _0x3f5c2e;};'use strict';var _=require('lodash');var util=require(_0xd93d('0x0'));var moment=require(_0xd93d('0x1'));var BPromise=require('bluebird');var rs=require(_0xd93d('0x2'));var fs=require('fs');var Redis=require(_0xd93d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd93d('0x4'));var config=require(_0xd93d('0x5'));var jayson=require(_0xd93d('0x6'));var client=jayson['client'][_0xd93d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x42c2bb,_0x4df047,_0x3727d7){return new BPromise(function(_0x4ff6ad,_0x221d76){return client[_0xd93d('0x8')](_0x42c2bb,_0x3727d7)[_0xd93d('0x9')](function(_0x3393ea){logger[_0xd93d('0xa')](_0xd93d('0xb'),_0x4df047,_0xd93d('0xc'));logger[_0xd93d('0xd')](_0xd93d('0xe'),_0x4df047,'request\x20sent',JSON[_0xd93d('0xf')](_0x3393ea));if(_0x3393ea[_0xd93d('0x10')]){if(_0x3393ea[_0xd93d('0x10')]['code']===0x1f4){logger['error'](_0xd93d('0xb'),_0x4df047,_0x3393ea[_0xd93d('0x10')][_0xd93d('0x11')]);return _0x221d76(_0x3393ea[_0xd93d('0x10')][_0xd93d('0x11')]);}logger[_0xd93d('0x10')](_0xd93d('0xb'),_0x4df047,_0x3393ea['error'][_0xd93d('0x11')]);return _0x4ff6ad(_0x3393ea[_0xd93d('0x10')][_0xd93d('0x11')]);}else{logger[_0xd93d('0xa')](_0xd93d('0xb'),_0x4df047,_0xd93d('0xc'));_0x4ff6ad(_0x3393ea[_0xd93d('0x12')][_0xd93d('0x11')]);}})[_0xd93d('0x13')](function(_0x39b66b){logger[_0xd93d('0x10')](_0xd93d('0xb'),_0x4df047,_0x39b66b);_0x221d76(_0x39b66b);});});}
\ No newline at end of file
index c5b1335..abb8e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8bd=['show','post','isAuthenticated','create','put','destroy','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoField.controller','get','/:id'];(function(_0x9c8bf7,_0x1f3655){var _0x586c15=function(_0x371e6c){while(--_0x371e6c){_0x9c8bf7['push'](_0x9c8bf7['shift']());}};_0x586c15(++_0x1f3655);}(_0xa8bd,0x15f));var _0xda8b=function(_0x33a5ec,_0x10c014){_0x33a5ec=_0x33a5ec-0x0;var _0x38f89c=_0xa8bd[_0x33a5ec];return _0x38f89c;};'use strict';var multer=require(_0xda8b('0x0'));var util=require('util');var path=require(_0xda8b('0x1'));var timeout=require(_0xda8b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xda8b('0x3'));var auth=require(_0xda8b('0x4'));var interaction=require(_0xda8b('0x5'));var config=require('../../config/environment');var controller=require(_0xda8b('0x6'));router[_0xda8b('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xda8b('0x7')](_0xda8b('0x8'),auth['isAuthenticated'](),controller[_0xda8b('0x9')]);router[_0xda8b('0xa')]('/',auth[_0xda8b('0xb')](),controller[_0xda8b('0xc')]);router[_0xda8b('0xd')](_0xda8b('0x8'),auth[_0xda8b('0xb')](),controller['update']);router['delete'](_0xda8b('0x8'),auth[_0xda8b('0xb')](),controller[_0xda8b('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xd670=['util','path','express','Router','fs-extra','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','put','update','destroy','exports','multer'];(function(_0x425213,_0x5b0300){var _0x4c2ba2=function(_0x2bf696){while(--_0x2bf696){_0x425213['push'](_0x425213['shift']());}};_0x4c2ba2(++_0x5b0300);}(_0xd670,0xe9));var _0x0d67=function(_0x243dce,_0x548bcf){_0x243dce=_0x243dce-0x0;var _0x482b9d=_0xd670[_0x243dce];return _0x482b9d;};'use strict';var multer=require(_0x0d67('0x0'));var util=require(_0x0d67('0x1'));var path=require(_0x0d67('0x2'));var timeout=require('connect-timeout');var express=require(_0x0d67('0x3'));var router=express[_0x0d67('0x4')]();var fs_extra=require(_0x0d67('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0d67('0x6'));var controller=require('./intZohoField.controller');router['get']('/',auth[_0x0d67('0x7')](),controller[_0x0d67('0x8')]);router[_0x0d67('0x9')](_0x0d67('0xa'),auth['isAuthenticated'](),controller[_0x0d67('0xb')]);router[_0x0d67('0xc')]('/',auth[_0x0d67('0x7')](),controller[_0x0d67('0xd')]);router[_0x0d67('0xe')](_0x0d67('0xa'),auth[_0x0d67('0x7')](),controller[_0x0d67('0xf')]);router['delete'](_0x0d67('0xa'),auth[_0x0d67('0x7')](),controller[_0x0d67('0x10')]);module[_0x0d67('0x11')]=router;
\ No newline at end of file
index c0c6adf..aec94a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb852=['variable','exports','keyValue','picklist','string','STRING','ENUM'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xb852,0x14a));var _0x2b85=function(_0x167fb5,_0x4de98b){_0x167fb5=_0x167fb5-0x0;var _0x56454d=_0xb852[_0x167fb5];return _0x56454d;};'use strict';var Sequelize=require('sequelize');module[_0x2b85('0x0')]={'type':{'type':Sequelize['ENUM']('string','variable','customVariable',_0x2b85('0x1'),_0x2b85('0x2')),'defaultValue':_0x2b85('0x3')},'content':{'type':Sequelize[_0x2b85('0x4')]},'key':{'type':Sequelize[_0x2b85('0x4')]},'keyType':{'type':Sequelize[_0x2b85('0x5')](_0x2b85('0x3'),_0x2b85('0x6'),'customVariable')},'keyContent':{'type':Sequelize[_0x2b85('0x4')]},'idField':{'type':Sequelize[_0x2b85('0x4')]},'nameField':{'type':Sequelize[_0x2b85('0x4')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2b85('0x4')]}};
\ No newline at end of file
+var _0xd65a=['ENUM','sequelize','variable','customVariable','keyValue','picklist','string','STRING'];(function(_0x18d431,_0x1412f5){var _0x265a6b=function(_0x33db86){while(--_0x33db86){_0x18d431['push'](_0x18d431['shift']());}};_0x265a6b(++_0x1412f5);}(_0xd65a,0x1d1));var _0xad65=function(_0x2324d9,_0x28d702){_0x2324d9=_0x2324d9-0x0;var _0x4365e0=_0xd65a[_0x2324d9];return _0x4365e0;};'use strict';var Sequelize=require(_0xad65('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0xad65('0x1'),_0xad65('0x2'),_0xad65('0x3'),_0xad65('0x4')),'defaultValue':_0xad65('0x5')},'content':{'type':Sequelize[_0xad65('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xad65('0x7')](_0xad65('0x5'),_0xad65('0x1'),_0xad65('0x2'))},'keyContent':{'type':Sequelize[_0xad65('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xad65('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xad65('0x6')]}};
\ No newline at end of file
index a0f2e04..d94b11e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7efc=['VIRTUAL','count','includeAll','include','rows','catch','params','length','options','create','body','eml-format','zip-dir','fast-json-patch','bluebird','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','api','../../config/utils','../../config/environment','sendStatus','end','json','offset','undefined','limit','status','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','ZohoField','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','type'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x7efc,0x173));var _0xc7ef=function(_0xcd4d8e,_0x1fc2fd){_0xcd4d8e=_0xcd4d8e-0x0;var _0x1c3c61=_0x7efc[_0xcd4d8e];return _0x1c3c61;};'use strict';var emlformat=require(_0xc7ef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc7ef('0x1'));var jsonpatch=require(_0xc7ef('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc7ef('0x3'));var Mustache=require('mustache');var util=require(_0xc7ef('0x4'));var path=require(_0xc7ef('0x5'));var sox=require(_0xc7ef('0x6'));var csv=require(_0xc7ef('0x7'));var ejs=require(_0xc7ef('0x8'));var fs=require('fs');var fs_extra=require(_0xc7ef('0x9'));var _=require(_0xc7ef('0xa'));var squel=require(_0xc7ef('0xb'));var crypto=require(_0xc7ef('0xc'));var jsforce=require(_0xc7ef('0xd'));var deskjs=require(_0xc7ef('0xe'));var toCsv=require(_0xc7ef('0x7'));var querystring=require(_0xc7ef('0xf'));var Papa=require(_0xc7ef('0x10'));var Redis=require(_0xc7ef('0x11'));var authService=require(_0xc7ef('0x12'));var qs=require(_0xc7ef('0x13'));var as=require(_0xc7ef('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc7ef('0x15'));var utils=require(_0xc7ef('0x16'));var config=require(_0xc7ef('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e30e4,_0x27ea36){_0x27ea36=_0x27ea36||0xcc;return function(_0xdc27e3){if(_0xdc27e3){return _0x5e30e4[_0xc7ef('0x18')](_0x27ea36);}return _0x5e30e4['status'](_0x27ea36)[_0xc7ef('0x19')]();};}function respondWithResult(_0x5c580c,_0x55dd24){_0x55dd24=_0x55dd24||0xc8;return function(_0x1282a2){if(_0x1282a2){return _0x5c580c['status'](_0x55dd24)[_0xc7ef('0x1a')](_0x1282a2);}};}function respondWithFilteredResult(_0x1b1deb,_0x58d295){return function(_0x59ff96){if(_0x59ff96){var _0x278fd1=typeof _0x58d295[_0xc7ef('0x1b')]===_0xc7ef('0x1c')&&typeof _0x58d295[_0xc7ef('0x1d')]===_0xc7ef('0x1c');var _0x4b8fdd=_0x59ff96['count'];var _0x77d6f6=_0x278fd1?0x0:_0x58d295['offset'];var _0xe45fe7=_0x278fd1?_0x59ff96['count']:_0x58d295[_0xc7ef('0x1b')]+_0x58d295[_0xc7ef('0x1d')];var _0x27ef7e;if(_0xe45fe7>=_0x4b8fdd){_0xe45fe7=_0x4b8fdd;_0x27ef7e=0xc8;}else{_0x27ef7e=0xce;}_0x1b1deb[_0xc7ef('0x1e')](_0x27ef7e);return _0x1b1deb['set'](_0xc7ef('0x1f'),_0x77d6f6+'-'+_0xe45fe7+'/'+_0x4b8fdd)[_0xc7ef('0x1a')](_0x59ff96);}return null;};}function patchUpdates(_0x3704cb){return function(_0x594819){try{jsonpatch['apply'](_0x594819,_0x3704cb,!![]);}catch(_0x1b1a70){return BPromise[_0xc7ef('0x20')](_0x1b1a70);}return _0x594819[_0xc7ef('0x21')]();};}function saveUpdates(_0x444c47,_0x3c391a){return function(_0x2e8cca){if(_0x2e8cca){return _0x2e8cca[_0xc7ef('0x22')](_0x444c47)[_0xc7ef('0x23')](function(_0x18fa75){return _0x18fa75;});}return null;};}function removeEntity(_0x5380e8,_0x104103){return function(_0x437f31){if(_0x437f31){return _0x437f31[_0xc7ef('0x24')]()[_0xc7ef('0x23')](function(){_0x5380e8[_0xc7ef('0x1e')](0xcc)[_0xc7ef('0x19')]();});}};}function handleEntityNotFound(_0x258875,_0x34de1c){return function(_0xcab3b4){if(!_0xcab3b4){_0x258875[_0xc7ef('0x18')](0x194);}return _0xcab3b4;};}function handleError(_0x23780c,_0x58c0c8){_0x58c0c8=_0x58c0c8||0x1f4;return function(_0x38226c){logger['error'](_0x38226c[_0xc7ef('0x25')]);if(_0x38226c['name']){delete _0x38226c[_0xc7ef('0x26')];}_0x23780c[_0xc7ef('0x1e')](_0x58c0c8)[_0xc7ef('0x27')](_0x38226c);};}exports[_0xc7ef('0x28')]=function(_0x1f91f6,_0x28cab2){var _0x577d82={},_0x451be0={},_0x2dd846={'count':0x0,'rows':[]};var _0x5d4b3d=_[_0xc7ef('0x29')](db[_0xc7ef('0x2a')][_0xc7ef('0x2b')],function(_0x2564a7){return{'name':_0x2564a7[_0xc7ef('0x2c')],'type':_0x2564a7['type'][_0xc7ef('0x2d')]};});_0x451be0['model']=_['map'](_0x5d4b3d,_0xc7ef('0x26'));_0x451be0[_0xc7ef('0x2e')]=_[_0xc7ef('0x2f')](_0x1f91f6[_0xc7ef('0x2e')]);_0x451be0[_0xc7ef('0x30')]=_['intersection'](_0x451be0[_0xc7ef('0x31')],_0x451be0[_0xc7ef('0x2e')]);_0x577d82[_0xc7ef('0x32')]=_[_0xc7ef('0x33')](_0x451be0[_0xc7ef('0x31')],qs['fields'](_0x1f91f6[_0xc7ef('0x2e')][_0xc7ef('0x34')]));_0x577d82[_0xc7ef('0x32')]=_0x577d82['attributes']['length']?_0x577d82[_0xc7ef('0x32')]:_0x451be0['model'];if(!_0x1f91f6['query']['hasOwnProperty'](_0xc7ef('0x35'))){_0x577d82['limit']=qs[_0xc7ef('0x1d')](_0x1f91f6[_0xc7ef('0x2e')][_0xc7ef('0x1d')]);_0x577d82['offset']=qs[_0xc7ef('0x1b')](_0x1f91f6[_0xc7ef('0x2e')][_0xc7ef('0x1b')]);}_0x577d82[_0xc7ef('0x36')]=qs[_0xc7ef('0x37')](_0x1f91f6['query']['sort']);_0x577d82[_0xc7ef('0x38')]=qs[_0xc7ef('0x30')](_[_0xc7ef('0x39')](_0x1f91f6[_0xc7ef('0x2e')],_0x451be0['filters']),_0x5d4b3d);if(_0x1f91f6[_0xc7ef('0x2e')][_0xc7ef('0x3a')]){_0x577d82[_0xc7ef('0x38')]=_[_0xc7ef('0x3b')](_0x577d82[_0xc7ef('0x38')],{'$or':_['map'](_0x5d4b3d,function(_0x44dde1){if(_0x44dde1[_0xc7ef('0x3c')]!==_0xc7ef('0x3d')){var _0x189ef3={};_0x189ef3[_0x44dde1['name']]={'$like':'%'+_0x1f91f6[_0xc7ef('0x2e')]['filter']+'%'};return _0x189ef3;}})});}_0x577d82=_[_0xc7ef('0x3b')]({},_0x577d82,_0x1f91f6['options']);var _0x2f0432={'where':_0x577d82[_0xc7ef('0x38')]};return db['ZohoField'][_0xc7ef('0x3e')](_0x2f0432)[_0xc7ef('0x23')](function(_0x221bf5){_0x2dd846[_0xc7ef('0x3e')]=_0x221bf5;if(_0x1f91f6[_0xc7ef('0x2e')][_0xc7ef('0x3f')]){_0x577d82[_0xc7ef('0x40')]=[{'all':!![]}];}return db[_0xc7ef('0x2a')]['findAll'](_0x577d82);})['then'](function(_0x1b8062){_0x2dd846[_0xc7ef('0x41')]=_0x1b8062;return _0x2dd846;})[_0xc7ef('0x23')](respondWithFilteredResult(_0x28cab2,_0x577d82))[_0xc7ef('0x42')](handleError(_0x28cab2,null));};exports['show']=function(_0x29c2de,_0x20c56f){var _0x1f65e7={'raw':!![],'where':{'id':_0x29c2de[_0xc7ef('0x43')]['id']}},_0x3dfa3c={};_0x3dfa3c[_0xc7ef('0x31')]=_[_0xc7ef('0x2f')](db[_0xc7ef('0x2a')]['rawAttributes']);_0x3dfa3c['query']=_[_0xc7ef('0x2f')](_0x29c2de[_0xc7ef('0x2e')]);_0x3dfa3c[_0xc7ef('0x30')]=_[_0xc7ef('0x33')](_0x3dfa3c[_0xc7ef('0x31')],_0x3dfa3c[_0xc7ef('0x2e')]);_0x1f65e7[_0xc7ef('0x32')]=_[_0xc7ef('0x33')](_0x3dfa3c['model'],qs[_0xc7ef('0x34')](_0x29c2de[_0xc7ef('0x2e')][_0xc7ef('0x34')]));_0x1f65e7['attributes']=_0x1f65e7['attributes'][_0xc7ef('0x44')]?_0x1f65e7[_0xc7ef('0x32')]:_0x3dfa3c[_0xc7ef('0x31')];if(_0x29c2de[_0xc7ef('0x2e')][_0xc7ef('0x3f')]){_0x1f65e7[_0xc7ef('0x40')]=[{'all':!![]}];}_0x1f65e7=_['merge']({},_0x1f65e7,_0x29c2de[_0xc7ef('0x45')]);return db['ZohoField']['find'](_0x1f65e7)['then'](handleEntityNotFound(_0x20c56f,null))[_0xc7ef('0x23')](respondWithResult(_0x20c56f,null))['catch'](handleError(_0x20c56f,null));};exports[_0xc7ef('0x46')]=function(_0x9b18ce,_0x47b3c5){return db[_0xc7ef('0x2a')][_0xc7ef('0x46')](_0x9b18ce[_0xc7ef('0x47')],{})['then'](respondWithResult(_0x47b3c5,0xc9))[_0xc7ef('0x42')](handleError(_0x47b3c5,null));};exports[_0xc7ef('0x22')]=function(_0x54cabf,_0x2d014d){if(_0x54cabf[_0xc7ef('0x47')]['id']){delete _0x54cabf[_0xc7ef('0x47')]['id'];}return db[_0xc7ef('0x2a')]['find']({'where':{'id':_0x54cabf[_0xc7ef('0x43')]['id']}})['then'](handleEntityNotFound(_0x2d014d,null))['then'](saveUpdates(_0x54cabf[_0xc7ef('0x47')],null))['then'](respondWithResult(_0x2d014d,null))[_0xc7ef('0x42')](handleError(_0x2d014d,null));};exports[_0xc7ef('0x24')]=function(_0x3024d2,_0x59a7a8){return db[_0xc7ef('0x2a')]['find']({'where':{'id':_0x3024d2[_0xc7ef('0x43')]['id']}})[_0xc7ef('0x23')](handleEntityNotFound(_0x59a7a8,null))[_0xc7ef('0x23')](removeEntity(_0x59a7a8,null))[_0xc7ef('0x42')](handleError(_0x59a7a8,null));};
\ No newline at end of file
+var _0x04e0=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','reject','save','update','then','error','stack','name','send','index','map','rawAttributes','keys','query','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','ZohoField','includeAll','include','findAll','rows','show','params','length','options','find','catch','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox'];(function(_0x1cd16e,_0x1a437d){var _0x47d387=function(_0x1c2abe){while(--_0x1c2abe){_0x1cd16e['push'](_0x1cd16e['shift']());}};_0x47d387(++_0x1a437d);}(_0x04e0,0xd2));var _0x004e=function(_0x330025,_0x44ebc4){_0x330025=_0x330025-0x0;var _0x5d64b6=_0x04e0[_0x330025];return _0x5d64b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x004e('0x0'));var zipdir=require(_0x004e('0x1'));var jsonpatch=require(_0x004e('0x2'));var rp=require('request-promise');var moment=require(_0x004e('0x3'));var BPromise=require(_0x004e('0x4'));var Mustache=require(_0x004e('0x5'));var util=require(_0x004e('0x6'));var path=require(_0x004e('0x7'));var sox=require(_0x004e('0x8'));var csv=require(_0x004e('0x9'));var ejs=require(_0x004e('0xa'));var fs=require('fs');var fs_extra=require(_0x004e('0xb'));var _=require(_0x004e('0xc'));var squel=require(_0x004e('0xd'));var crypto=require(_0x004e('0xe'));var jsforce=require(_0x004e('0xf'));var deskjs=require(_0x004e('0x10'));var toCsv=require(_0x004e('0x9'));var querystring=require('querystring');var Papa=require(_0x004e('0x11'));var Redis=require(_0x004e('0x12'));var authService=require(_0x004e('0x13'));var qs=require(_0x004e('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x004e('0x15'));var logger=require(_0x004e('0x16'))(_0x004e('0x17'));var utils=require(_0x004e('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x004e('0x19'));var db=require(_0x004e('0x1a'))['db'];function respondWithStatusCode(_0x44ff75,_0x1d8f54){_0x1d8f54=_0x1d8f54||0xcc;return function(_0x196517){if(_0x196517){return _0x44ff75[_0x004e('0x1b')](_0x1d8f54);}return _0x44ff75[_0x004e('0x1c')](_0x1d8f54)[_0x004e('0x1d')]();};}function respondWithResult(_0x9e1aab,_0x3c27ad){_0x3c27ad=_0x3c27ad||0xc8;return function(_0x538472){if(_0x538472){return _0x9e1aab[_0x004e('0x1c')](_0x3c27ad)[_0x004e('0x1e')](_0x538472);}};}function respondWithFilteredResult(_0x24067d,_0x3bd469){return function(_0x35616f){if(_0x35616f){var _0x221445=typeof _0x3bd469[_0x004e('0x1f')]==='undefined'&&typeof _0x3bd469[_0x004e('0x20')]==='undefined';var _0x217635=_0x35616f['count'];var _0x1e0a5e=_0x221445?0x0:_0x3bd469['offset'];var _0x1ef2a6=_0x221445?_0x35616f[_0x004e('0x21')]:_0x3bd469[_0x004e('0x1f')]+_0x3bd469[_0x004e('0x20')];var _0x5065c0;if(_0x1ef2a6>=_0x217635){_0x1ef2a6=_0x217635;_0x5065c0=0xc8;}else{_0x5065c0=0xce;}_0x24067d[_0x004e('0x1c')](_0x5065c0);return _0x24067d['set'](_0x004e('0x22'),_0x1e0a5e+'-'+_0x1ef2a6+'/'+_0x217635)[_0x004e('0x1e')](_0x35616f);}return null;};}function patchUpdates(_0x267aa){return function(_0x8716fe){try{jsonpatch['apply'](_0x8716fe,_0x267aa,!![]);}catch(_0xb2b7d1){return BPromise[_0x004e('0x23')](_0xb2b7d1);}return _0x8716fe[_0x004e('0x24')]();};}function saveUpdates(_0x2c0cbc,_0x32a8bb){return function(_0x3b51f6){if(_0x3b51f6){return _0x3b51f6[_0x004e('0x25')](_0x2c0cbc)[_0x004e('0x26')](function(_0x5780c9){return _0x5780c9;});}return null;};}function removeEntity(_0x3c6a69,_0x3e5dbb){return function(_0x12e3b6){if(_0x12e3b6){return _0x12e3b6['destroy']()[_0x004e('0x26')](function(){_0x3c6a69[_0x004e('0x1c')](0xcc)[_0x004e('0x1d')]();});}};}function handleEntityNotFound(_0x592d90,_0x2134d6){return function(_0x29ce33){if(!_0x29ce33){_0x592d90[_0x004e('0x1b')](0x194);}return _0x29ce33;};}function handleError(_0x4605b7,_0x174b66){_0x174b66=_0x174b66||0x1f4;return function(_0x49c9d9){logger[_0x004e('0x27')](_0x49c9d9[_0x004e('0x28')]);if(_0x49c9d9[_0x004e('0x29')]){delete _0x49c9d9[_0x004e('0x29')];}_0x4605b7[_0x004e('0x1c')](_0x174b66)[_0x004e('0x2a')](_0x49c9d9);};}exports[_0x004e('0x2b')]=function(_0x211ab7,_0x4afdc6){var _0x1c308f={},_0x4fc30b={},_0x49212f={'count':0x0,'rows':[]};var _0x11f9c4=_[_0x004e('0x2c')](db['ZohoField'][_0x004e('0x2d')],function(_0x1cbd1c){return{'name':_0x1cbd1c['fieldName'],'type':_0x1cbd1c['type']['key']};});_0x4fc30b['model']=_[_0x004e('0x2c')](_0x11f9c4,'name');_0x4fc30b['query']=_[_0x004e('0x2e')](_0x211ab7[_0x004e('0x2f')]);_0x4fc30b[_0x004e('0x30')]=_[_0x004e('0x31')](_0x4fc30b['model'],_0x4fc30b[_0x004e('0x2f')]);_0x1c308f[_0x004e('0x32')]=_[_0x004e('0x31')](_0x4fc30b['model'],qs[_0x004e('0x33')](_0x211ab7[_0x004e('0x2f')]['fields']));_0x1c308f['attributes']=_0x1c308f[_0x004e('0x32')]['length']?_0x1c308f['attributes']:_0x4fc30b[_0x004e('0x34')];if(!_0x211ab7[_0x004e('0x2f')][_0x004e('0x35')](_0x004e('0x36'))){_0x1c308f[_0x004e('0x20')]=qs[_0x004e('0x20')](_0x211ab7[_0x004e('0x2f')][_0x004e('0x20')]);_0x1c308f[_0x004e('0x1f')]=qs[_0x004e('0x1f')](_0x211ab7[_0x004e('0x2f')][_0x004e('0x1f')]);}_0x1c308f['order']=qs[_0x004e('0x37')](_0x211ab7[_0x004e('0x2f')][_0x004e('0x37')]);_0x1c308f[_0x004e('0x38')]=qs[_0x004e('0x30')](_[_0x004e('0x39')](_0x211ab7[_0x004e('0x2f')],_0x4fc30b[_0x004e('0x30')]),_0x11f9c4);if(_0x211ab7['query'][_0x004e('0x3a')]){_0x1c308f[_0x004e('0x38')]=_[_0x004e('0x3b')](_0x1c308f[_0x004e('0x38')],{'$or':_[_0x004e('0x2c')](_0x11f9c4,function(_0x46897d){if(_0x46897d['type']!=='VIRTUAL'){var _0x194b4e={};_0x194b4e[_0x46897d[_0x004e('0x29')]]={'$like':'%'+_0x211ab7['query']['filter']+'%'};return _0x194b4e;}})});}_0x1c308f=_['merge']({},_0x1c308f,_0x211ab7['options']);var _0x25cc42={'where':_0x1c308f[_0x004e('0x38')]};return db[_0x004e('0x3c')][_0x004e('0x21')](_0x25cc42)[_0x004e('0x26')](function(_0x4b5d0){_0x49212f[_0x004e('0x21')]=_0x4b5d0;if(_0x211ab7[_0x004e('0x2f')][_0x004e('0x3d')]){_0x1c308f[_0x004e('0x3e')]=[{'all':!![]}];}return db[_0x004e('0x3c')][_0x004e('0x3f')](_0x1c308f);})['then'](function(_0x55213d){_0x49212f[_0x004e('0x40')]=_0x55213d;return _0x49212f;})[_0x004e('0x26')](respondWithFilteredResult(_0x4afdc6,_0x1c308f))['catch'](handleError(_0x4afdc6,null));};exports[_0x004e('0x41')]=function(_0x54067e,_0x203e8a){var _0x54b1b4={'raw':!![],'where':{'id':_0x54067e[_0x004e('0x42')]['id']}},_0x33e3d2={};_0x33e3d2[_0x004e('0x34')]=_[_0x004e('0x2e')](db[_0x004e('0x3c')][_0x004e('0x2d')]);_0x33e3d2['query']=_['keys'](_0x54067e[_0x004e('0x2f')]);_0x33e3d2[_0x004e('0x30')]=_['intersection'](_0x33e3d2[_0x004e('0x34')],_0x33e3d2['query']);_0x54b1b4[_0x004e('0x32')]=_[_0x004e('0x31')](_0x33e3d2[_0x004e('0x34')],qs['fields'](_0x54067e[_0x004e('0x2f')]['fields']));_0x54b1b4[_0x004e('0x32')]=_0x54b1b4['attributes'][_0x004e('0x43')]?_0x54b1b4[_0x004e('0x32')]:_0x33e3d2[_0x004e('0x34')];if(_0x54067e[_0x004e('0x2f')][_0x004e('0x3d')]){_0x54b1b4[_0x004e('0x3e')]=[{'all':!![]}];}_0x54b1b4=_[_0x004e('0x3b')]({},_0x54b1b4,_0x54067e[_0x004e('0x44')]);return db[_0x004e('0x3c')][_0x004e('0x45')](_0x54b1b4)[_0x004e('0x26')](handleEntityNotFound(_0x203e8a,null))['then'](respondWithResult(_0x203e8a,null))[_0x004e('0x46')](handleError(_0x203e8a,null));};exports[_0x004e('0x47')]=function(_0x3bb656,_0x376a10){return db[_0x004e('0x3c')][_0x004e('0x47')](_0x3bb656['body'],{})[_0x004e('0x26')](respondWithResult(_0x376a10,0xc9))[_0x004e('0x46')](handleError(_0x376a10,null));};exports['update']=function(_0x574ae1,_0x58c86c){if(_0x574ae1[_0x004e('0x48')]['id']){delete _0x574ae1['body']['id'];}return db[_0x004e('0x3c')][_0x004e('0x45')]({'where':{'id':_0x574ae1[_0x004e('0x42')]['id']}})[_0x004e('0x26')](handleEntityNotFound(_0x58c86c,null))[_0x004e('0x26')](saveUpdates(_0x574ae1[_0x004e('0x48')],null))['then'](respondWithResult(_0x58c86c,null))[_0x004e('0x46')](handleError(_0x58c86c,null));};exports['destroy']=function(_0x399e91,_0x5948a8){return db['ZohoField'][_0x004e('0x45')]({'where':{'id':_0x399e91['params']['id']}})[_0x004e('0x26')](handleEntityNotFound(_0x5948a8,null))['then'](removeEntity(_0x5948a8,null))[_0x004e('0x46')](handleError(_0x5948a8,null));};
\ No newline at end of file
index 67964e8..be2bc10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','zoho_unique_index','idField','lodash','util','../../config/logger'];(function(_0x141d11,_0x1df14b){var _0x3c04a6=function(_0x439176){while(--_0x439176){_0x141d11['push'](_0x141d11['shift']());}};_0x3c04a6(++_0x1df14b);}(_0xe3da,0x1cd));var _0xae3d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe3da[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));module[_0xae3d('0xb')]=function(_0xa9a1a,_0xa54808){return _0xa9a1a[_0xae3d('0xc')](_0xae3d('0xd'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0xae3d('0xe'),'fields':[_0xae3d('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x430c=['api','moment','bluebird','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash'];(function(_0xdd09cb,_0x2d80fa){var _0x4557a9=function(_0x346ad2){while(--_0x346ad2){_0xdd09cb['push'](_0xdd09cb['shift']());}};_0x4557a9(++_0x2d80fa);}(_0x430c,0x1a1));var _0xc430=function(_0x3df871,_0xda2e11){_0x3df871=_0x3df871-0x0;var _0x570f7b=_0x430c[_0x3df871];return _0x570f7b;};'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'));module[_0xc430('0x5')]=function(_0x50b256,_0x42aa9c){return _0x50b256['define'](_0xc430('0x6'),attributes,{'tableName':_0xc430('0x7'),'paranoid':![],'indexes':[{'name':_0xc430('0x8'),'fields':[_0xc430('0x9'),_0xc430('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f572a1f..eb6d800 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6070=['catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x1fccd4,_0x1d7116){var _0x20e615=function(_0x5343b4){while(--_0x5343b4){_0x1fccd4['push'](_0x1fccd4['shift']());}};_0x20e615(++_0x1d7116);}(_0x6070,0xe8));var _0x0607=function(_0x383aff,_0x560d04){_0x383aff=_0x383aff-0x0;var _0x4d2b6a=_0x6070[_0x383aff];return _0x4d2b6a;};'use strict';var _=require('lodash');var util=require(_0x0607('0x0'));var moment=require(_0x0607('0x1'));var BPromise=require(_0x0607('0x2'));var rs=require(_0x0607('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0607('0x4'))['db'];var utils=require(_0x0607('0x5'));var logger=require(_0x0607('0x6'))('rpc');var config=require(_0x0607('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0607('0x8')][_0x0607('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x18fd2f,_0x23546a,_0x271f97){return new BPromise(function(_0x1ae534,_0x7a67c9){return client[_0x0607('0xa')](_0x18fd2f,_0x271f97)['then'](function(_0x2c574f){logger[_0x0607('0xb')](_0x0607('0xc'),_0x23546a,_0x0607('0xd'));logger[_0x0607('0xe')](_0x0607('0xf'),_0x23546a,_0x0607('0xd'),JSON[_0x0607('0x10')](_0x2c574f));if(_0x2c574f['error']){if(_0x2c574f[_0x0607('0x11')]['code']===0x1f4){logger[_0x0607('0x11')](_0x0607('0xc'),_0x23546a,_0x2c574f['error'][_0x0607('0x12')]);return _0x7a67c9(_0x2c574f['error'][_0x0607('0x12')]);}logger[_0x0607('0x11')](_0x0607('0xc'),_0x23546a,_0x2c574f[_0x0607('0x11')][_0x0607('0x12')]);return _0x1ae534(_0x2c574f[_0x0607('0x11')][_0x0607('0x12')]);}else{logger[_0x0607('0xb')](_0x0607('0xc'),_0x23546a,_0x0607('0xd'));_0x1ae534(_0x2c574f[_0x0607('0x13')][_0x0607('0x12')]);}})[_0x0607('0x14')](function(_0x5dc6b5){logger['error'](_0x0607('0xc'),_0x23546a,_0x5dc6b5);_0x7a67c9(_0x5dc6b5);});});}
\ No newline at end of file
+var _0x81b5=['message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0xad52db,_0x2945cd){var _0x22f8b1=function(_0x539101){while(--_0x539101){_0xad52db['push'](_0xad52db['shift']());}};_0x22f8b1(++_0x2945cd);}(_0x81b5,0x1a1));var _0x581b=function(_0x8b65e1,_0x3b20f1){_0x8b65e1=_0x8b65e1-0x0;var _0x2630da=_0x81b5[_0x8b65e1];return _0x2630da;};'use strict';var _=require(_0x581b('0x0'));var util=require(_0x581b('0x1'));var moment=require(_0x581b('0x2'));var BPromise=require('bluebird');var rs=require(_0x581b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x581b('0x4'))['db'];var utils=require(_0x581b('0x5'));var logger=require(_0x581b('0x6'))(_0x581b('0x7'));var config=require(_0x581b('0x8'));var jayson=require(_0x581b('0x9'));var client=jayson[_0x581b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x72e879,_0x460147,_0x4b27ca){return new BPromise(function(_0x4f437a,_0x1d58fd){return client[_0x581b('0xb')](_0x72e879,_0x4b27ca)[_0x581b('0xc')](function(_0x2686d9){logger[_0x581b('0xd')](_0x581b('0xe'),_0x460147,_0x581b('0xf'));logger[_0x581b('0x10')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x460147,'request\x20sent',JSON[_0x581b('0x11')](_0x2686d9));if(_0x2686d9[_0x581b('0x12')]){if(_0x2686d9[_0x581b('0x12')][_0x581b('0x13')]===0x1f4){logger[_0x581b('0x12')](_0x581b('0xe'),_0x460147,_0x2686d9[_0x581b('0x12')][_0x581b('0x14')]);return _0x1d58fd(_0x2686d9[_0x581b('0x12')][_0x581b('0x14')]);}logger[_0x581b('0x12')](_0x581b('0xe'),_0x460147,_0x2686d9[_0x581b('0x12')]['message']);return _0x4f437a(_0x2686d9['error'][_0x581b('0x14')]);}else{logger[_0x581b('0xd')](_0x581b('0xe'),_0x460147,'request\x20sent');_0x4f437a(_0x2686d9[_0x581b('0x15')][_0x581b('0x14')]);}})[_0x581b('0x16')](function(_0x357aa1){logger[_0x581b('0x12')](_0x581b('0xe'),_0x460147,_0x357aa1);_0x1d58fd(_0x357aa1);});});}
\ No newline at end of file
index 90c6ce3..027d6ac 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(_0x37aeb6,_0x1d4bb0){var _0x12b37b=function(_0x1c5589){while(--_0x1c5589){_0x37aeb6['push'](_0x37aeb6['shift']());}};_0x12b37b(++_0x1d4bb0);}(_0xe706,0xa3));var _0x6e70=function(_0x2de59e,_0x24b766){_0x2de59e=_0x2de59e-0x0;var _0x534d4b=_0xe706[_0x2de59e];return _0x534d4b;};'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(_0x36c0b5,_0x4d99b4){var _0x514310=function(_0x15c33b){while(--_0x15c33b){_0x36c0b5['push'](_0x36c0b5['shift']());}};_0x514310(++_0x4d99b4);}(_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 936398b..c163fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3be=['INTEGER','BOOLEAN','state','sequelize','exports','unique_name_and_version','STRING','app.js'];(function(_0x1a7473,_0x53d63b){var _0x1af932=function(_0x186ca8){while(--_0x186ca8){_0x1a7473['push'](_0x1a7473['shift']());}};_0x1af932(++_0x53d63b);}(_0xc3be,0x7b));var _0xec3b=function(_0x35d59c,_0x4aa57e){_0x35d59c=_0x35d59c-0x0;var _0x55d5cc=_0xc3be[_0x35d59c];return _0x55d5cc;};'use strict';var Sequelize=require(_0xec3b('0x0'));module[_0xec3b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xec3b('0x2')},'version':{'type':Sequelize[_0xec3b('0x3')],'allowNull':![],'unique':_0xec3b('0x2')},'main':{'type':Sequelize['STRING'],'defaultValue':_0xec3b('0x4')},'filename':{'type':Sequelize[_0xec3b('0x3')]},'path':{'type':Sequelize[_0xec3b('0x3')]},'type':{'type':Sequelize[_0xec3b('0x3')]},'size':{'type':Sequelize[_0xec3b('0x5')]},'active':{'type':Sequelize[_0xec3b('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0xec3b('0x3')]},'logo':{'type':Sequelize[_0xec3b('0x3')]},'state':{'type':Sequelize['STRING'],'unique':_0xec3b('0x7')},'description':{'type':Sequelize[_0xec3b('0x3')]},'title':{'type':Sequelize[_0xec3b('0x3')]},'remoteUri':{'type':Sequelize[_0xec3b('0x3')]},'link':{'type':Sequelize[_0xec3b('0x3')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xb4d3=['INTEGER','BOOLEAN','state','sequelize','exports','unique_name_and_version','STRING'];(function(_0xf48cce,_0x3531e4){var _0x2a5c38=function(_0x22a454){while(--_0x22a454){_0xf48cce['push'](_0xf48cce['shift']());}};_0x2a5c38(++_0x3531e4);}(_0xb4d3,0x199));var _0x3b4d=function(_0x44bf54,_0x5be3d6){_0x44bf54=_0x44bf54-0x0;var _0x2c4a96=_0xb4d3[_0x44bf54];return _0x2c4a96;};'use strict';var Sequelize=require(_0x3b4d('0x0'));module[_0x3b4d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x3b4d('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x3b4d('0x3')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x3b4d('0x3')]},'path':{'type':Sequelize[_0x3b4d('0x3')]},'type':{'type':Sequelize[_0x3b4d('0x3')]},'size':{'type':Sequelize[_0x3b4d('0x4')]},'active':{'type':Sequelize[_0x3b4d('0x5')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x3b4d('0x3')]},'state':{'type':Sequelize['STRING'],'unique':_0x3b4d('0x6')},'description':{'type':Sequelize[_0x3b4d('0x3')]},'title':{'type':Sequelize[_0x3b4d('0x3')]},'remoteUri':{'type':Sequelize[_0x3b4d('0x3')]},'link':{'type':Sequelize[_0x3b4d('0x3')],'defaultValue':'#'}};
\ No newline at end of file
index 11459e4..19efe83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c3c=['VIRTUAL','options','Integration','includeAll','include','findAll','rows','params','merge','catch','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','stack','name','send','index','map','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type'];(function(_0x340437,_0x15c98d){var _0x1b9b01=function(_0x6436d6){while(--_0x6436d6){_0x340437['push'](_0x340437['shift']());}};_0x1b9b01(++_0x15c98d);}(_0x5c3c,0x132));var _0xc5c3=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5c3c[_0x4243a3];return _0x1b2a33;};'use strict';var emlformat=require(_0xc5c3('0x0'));var rimraf=require(_0xc5c3('0x1'));var zipdir=require(_0xc5c3('0x2'));var jsonpatch=require(_0xc5c3('0x3'));var rp=require('request-promise');var moment=require(_0xc5c3('0x4'));var BPromise=require(_0xc5c3('0x5'));var Mustache=require(_0xc5c3('0x6'));var util=require(_0xc5c3('0x7'));var path=require(_0xc5c3('0x8'));var sox=require(_0xc5c3('0x9'));var csv=require(_0xc5c3('0xa'));var ejs=require(_0xc5c3('0xb'));var fs=require('fs');var fs_extra=require(_0xc5c3('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc5c3('0xd'));var deskjs=require(_0xc5c3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc5c3('0xf'));var Papa=require(_0xc5c3('0x10'));var Redis=require('ioredis');var authService=require(_0xc5c3('0x11'));var qs=require(_0xc5c3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc5c3('0x13'));var logger=require(_0xc5c3('0x14'))(_0xc5c3('0x15'));var utils=require('../../config/utils');var config=require(_0xc5c3('0x16'));var licenseUtil=require(_0xc5c3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b56e6,_0x44d2b9){_0x44d2b9=_0x44d2b9||0xcc;return function(_0x3f0f45){if(_0x3f0f45){return _0x2b56e6['sendStatus'](_0x44d2b9);}return _0x2b56e6[_0xc5c3('0x18')](_0x44d2b9)[_0xc5c3('0x19')]();};}function respondWithResult(_0x1488ab,_0x13a740){_0x13a740=_0x13a740||0xc8;return function(_0xc8a636){if(_0xc8a636){return _0x1488ab['status'](_0x13a740)['json'](_0xc8a636);}};}function respondWithFilteredResult(_0x4445ea,_0x577e1a){return function(_0x1bae87){if(_0x1bae87){var _0xef8b21=typeof _0x577e1a['offset']==='undefined'&&typeof _0x577e1a[_0xc5c3('0x1a')]==='undefined';var _0xa9bc84=_0x1bae87[_0xc5c3('0x1b')];var _0x2ff158=_0xef8b21?0x0:_0x577e1a[_0xc5c3('0x1c')];var _0x28bae6=_0xef8b21?_0x1bae87['count']:_0x577e1a[_0xc5c3('0x1c')]+_0x577e1a[_0xc5c3('0x1a')];var _0x123dba;if(_0x28bae6>=_0xa9bc84){_0x28bae6=_0xa9bc84;_0x123dba=0xc8;}else{_0x123dba=0xce;}_0x4445ea[_0xc5c3('0x18')](_0x123dba);return _0x4445ea['set'](_0xc5c3('0x1d'),_0x2ff158+'-'+_0x28bae6+'/'+_0xa9bc84)[_0xc5c3('0x1e')](_0x1bae87);}return null;};}function patchUpdates(_0x3cc612){return function(_0x3ca20a){try{jsonpatch[_0xc5c3('0x1f')](_0x3ca20a,_0x3cc612,!![]);}catch(_0x564815){return BPromise[_0xc5c3('0x20')](_0x564815);}return _0x3ca20a[_0xc5c3('0x21')]();};}function saveUpdates(_0x370254,_0x2de266){return function(_0x1c5793){if(_0x1c5793){return _0x1c5793[_0xc5c3('0x22')](_0x370254)[_0xc5c3('0x23')](function(_0x5996a0){return _0x5996a0;});}return null;};}function removeEntity(_0x52d638,_0x45affe){return function(_0x38dd9e){if(_0x38dd9e){return _0x38dd9e['destroy']()['then'](function(){_0x52d638[_0xc5c3('0x18')](0xcc)[_0xc5c3('0x19')]();});}};}function handleEntityNotFound(_0x38a3df,_0x52e54a){return function(_0x4af067){if(!_0x4af067){_0x38a3df[_0xc5c3('0x24')](0x194);}return _0x4af067;};}function handleError(_0x22f607,_0x20c506){_0x20c506=_0x20c506||0x1f4;return function(_0x29791c){logger['error'](_0x29791c[_0xc5c3('0x25')]);if(_0x29791c['name']){delete _0x29791c[_0xc5c3('0x26')];}_0x22f607['status'](_0x20c506)[_0xc5c3('0x27')](_0x29791c);};}exports[_0xc5c3('0x28')]=function(_0x4269eb,_0x4773c5){var _0x15361c={},_0x2d07e1={},_0x35a397={'count':0x0,'rows':[]};var _0x4b5a0c=_[_0xc5c3('0x29')](db['Integration'][_0xc5c3('0x2a')],function(_0x43ebfc){return{'name':_0x43ebfc['fieldName'],'type':_0x43ebfc['type'][_0xc5c3('0x2b')]};});_0x2d07e1[_0xc5c3('0x2c')]=_[_0xc5c3('0x29')](_0x4b5a0c,_0xc5c3('0x26'));_0x2d07e1['query']=_[_0xc5c3('0x2d')](_0x4269eb[_0xc5c3('0x2e')]);_0x2d07e1[_0xc5c3('0x2f')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],_0x2d07e1[_0xc5c3('0x2e')]);_0x15361c[_0xc5c3('0x31')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],qs['fields'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x32')]));_0x15361c[_0xc5c3('0x31')]=_0x15361c[_0xc5c3('0x31')][_0xc5c3('0x33')]?_0x15361c[_0xc5c3('0x31')]:_0x2d07e1[_0xc5c3('0x2c')];if(!_0x4269eb['query']['hasOwnProperty'](_0xc5c3('0x34'))){_0x15361c['limit']=qs[_0xc5c3('0x1a')](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x1a')]);_0x15361c[_0xc5c3('0x1c')]=qs[_0xc5c3('0x1c')](_0x4269eb['query'][_0xc5c3('0x1c')]);}_0x15361c[_0xc5c3('0x35')]=qs['sort'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x36')]);_0x15361c[_0xc5c3('0x37')]=qs[_0xc5c3('0x2f')](_[_0xc5c3('0x38')](_0x4269eb[_0xc5c3('0x2e')],_0x2d07e1[_0xc5c3('0x2f')]),_0x4b5a0c);if(_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x39')]){_0x15361c[_0xc5c3('0x37')]=_['merge'](_0x15361c[_0xc5c3('0x37')],{'$or':_['map'](_0x4b5a0c,function(_0x4fdbe6){if(_0x4fdbe6[_0xc5c3('0x3a')]!==_0xc5c3('0x3b')){var _0x1b546e={};_0x1b546e[_0x4fdbe6[_0xc5c3('0x26')]]={'$like':'%'+_0x4269eb[_0xc5c3('0x2e')]['filter']+'%'};return _0x1b546e;}})});}_0x15361c=_['merge']({},_0x15361c,_0x4269eb[_0xc5c3('0x3c')]);var _0xa7cb91={'where':_0x15361c['where']};return db[_0xc5c3('0x3d')]['count'](_0xa7cb91)[_0xc5c3('0x23')](function(_0x2dfd19){_0x35a397[_0xc5c3('0x1b')]=_0x2dfd19;if(_0x4269eb['query'][_0xc5c3('0x3e')]){_0x15361c[_0xc5c3('0x3f')]=[{'all':!![]}];}return db['Integration'][_0xc5c3('0x40')](_0x15361c);})['then'](function(_0x33936c){_0x35a397[_0xc5c3('0x41')]=_0x33936c;return _0x35a397;})['then'](respondWithFilteredResult(_0x4773c5,_0x15361c))['catch'](handleError(_0x4773c5,null));};exports['show']=function(_0xfb64bb,_0x2f02ab){var _0x49b1fc={'raw':![],'where':{'id':_0xfb64bb[_0xc5c3('0x42')]['id']}},_0x1a8490={};_0x1a8490[_0xc5c3('0x2c')]=_[_0xc5c3('0x2d')](db['Integration'][_0xc5c3('0x2a')]);_0x1a8490['query']=_['keys'](_0xfb64bb[_0xc5c3('0x2e')]);_0x1a8490[_0xc5c3('0x2f')]=_['intersection'](_0x1a8490[_0xc5c3('0x2c')],_0x1a8490[_0xc5c3('0x2e')]);_0x49b1fc['attributes']=_[_0xc5c3('0x30')](_0x1a8490['model'],qs[_0xc5c3('0x32')](_0xfb64bb[_0xc5c3('0x2e')]['fields']));_0x49b1fc[_0xc5c3('0x31')]=_0x49b1fc['attributes'][_0xc5c3('0x33')]?_0x49b1fc[_0xc5c3('0x31')]:_0x1a8490['model'];if(_0xfb64bb[_0xc5c3('0x2e')][_0xc5c3('0x3e')]){_0x49b1fc[_0xc5c3('0x3f')]=[{'all':!![]}];}_0x49b1fc=_[_0xc5c3('0x43')]({},_0x49b1fc,_0xfb64bb[_0xc5c3('0x3c')]);return db[_0xc5c3('0x3d')]['find'](_0x49b1fc)[_0xc5c3('0x23')](handleEntityNotFound(_0x2f02ab,null))[_0xc5c3('0x23')](respondWithResult(_0x2f02ab,null))[_0xc5c3('0x44')](handleError(_0x2f02ab,null));};exports[_0xc5c3('0x45')]=function(_0x23002b,_0x4a7330){return db['Integration'][_0xc5c3('0x45')](_0x23002b[_0xc5c3('0x46')],{})[_0xc5c3('0x23')](respondWithResult(_0x4a7330,0xc9))['catch'](handleError(_0x4a7330,null));};exports[_0xc5c3('0x22')]=function(_0x65f720,_0x3a901f){if(_0x65f720[_0xc5c3('0x46')]['id']){delete _0x65f720[_0xc5c3('0x46')]['id'];}return db[_0xc5c3('0x3d')][_0xc5c3('0x47')]({'where':{'id':_0x65f720['params']['id']}})[_0xc5c3('0x23')](handleEntityNotFound(_0x3a901f,null))[_0xc5c3('0x23')](saveUpdates(_0x65f720[_0xc5c3('0x46')],null))['then'](respondWithResult(_0x3a901f,null))[_0xc5c3('0x44')](handleError(_0x3a901f,null));};exports[_0xc5c3('0x48')]=function(_0x3b1bc2,_0x103bde){return db[_0xc5c3('0x3d')]['find']({'where':{'id':_0x3b1bc2[_0xc5c3('0x42')]['id']}})['then'](handleEntityNotFound(_0x103bde,null))[_0xc5c3('0x23')](removeEntity(_0x103bde,null))['catch'](handleError(_0x103bde,null));};
\ No newline at end of file
+var _0x4975=['path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','fieldName','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','map','VIRTUAL','options','Integration','count','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x51e66a,_0x524edf){var _0x43804c=function(_0x4410a1){while(--_0x4410a1){_0x51e66a['push'](_0x51e66a['shift']());}};_0x43804c(++_0x524edf);}(_0x4975,0x86));var _0x5497=function(_0x2ef2d2,_0xce2ea0){_0x2ef2d2=_0x2ef2d2-0x0;var _0x50c295=_0x4975[_0x2ef2d2];return _0x50c295;};'use strict';var emlformat=require(_0x5497('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5497('0x1'));var jsonpatch=require(_0x5497('0x2'));var rp=require(_0x5497('0x3'));var moment=require(_0x5497('0x4'));var BPromise=require(_0x5497('0x5'));var Mustache=require(_0x5497('0x6'));var util=require(_0x5497('0x7'));var path=require(_0x5497('0x8'));var sox=require(_0x5497('0x9'));var csv=require(_0x5497('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5497('0xb'));var _=require('lodash');var squel=require(_0x5497('0xc'));var crypto=require(_0x5497('0xd'));var jsforce=require(_0x5497('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5497('0xa'));var querystring=require('querystring');var Papa=require(_0x5497('0xf'));var Redis=require(_0x5497('0x10'));var authService=require(_0x5497('0x11'));var qs=require(_0x5497('0x12'));var as=require(_0x5497('0x13'));var hardwareService=require(_0x5497('0x14'));var logger=require(_0x5497('0x15'))(_0x5497('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5497('0x17'))['db'];function respondWithStatusCode(_0x1b23df,_0x1bb794){_0x1bb794=_0x1bb794||0xcc;return function(_0x984990){if(_0x984990){return _0x1b23df[_0x5497('0x18')](_0x1bb794);}return _0x1b23df[_0x5497('0x19')](_0x1bb794)[_0x5497('0x1a')]();};}function respondWithResult(_0xaca97d,_0x363a5b){_0x363a5b=_0x363a5b||0xc8;return function(_0x1a4c74){if(_0x1a4c74){return _0xaca97d['status'](_0x363a5b)[_0x5497('0x1b')](_0x1a4c74);}};}function respondWithFilteredResult(_0x4fb8e9,_0x4237a9){return function(_0x2bfd8a){if(_0x2bfd8a){var _0x19e5f3=typeof _0x4237a9[_0x5497('0x1c')]===_0x5497('0x1d')&&typeof _0x4237a9[_0x5497('0x1e')]===_0x5497('0x1d');var _0x575f6b=_0x2bfd8a['count'];var _0x3f4d20=_0x19e5f3?0x0:_0x4237a9[_0x5497('0x1c')];var _0x3a47fd=_0x19e5f3?_0x2bfd8a['count']:_0x4237a9[_0x5497('0x1c')]+_0x4237a9[_0x5497('0x1e')];var _0x18e8a8;if(_0x3a47fd>=_0x575f6b){_0x3a47fd=_0x575f6b;_0x18e8a8=0xc8;}else{_0x18e8a8=0xce;}_0x4fb8e9[_0x5497('0x19')](_0x18e8a8);return _0x4fb8e9[_0x5497('0x1f')](_0x5497('0x20'),_0x3f4d20+'-'+_0x3a47fd+'/'+_0x575f6b)[_0x5497('0x1b')](_0x2bfd8a);}return null;};}function patchUpdates(_0x10226f){return function(_0x2e3960){try{jsonpatch[_0x5497('0x21')](_0x2e3960,_0x10226f,!![]);}catch(_0x186065){return BPromise['reject'](_0x186065);}return _0x2e3960[_0x5497('0x22')]();};}function saveUpdates(_0x4d1b27,_0x19200a){return function(_0xd0868d){if(_0xd0868d){return _0xd0868d[_0x5497('0x23')](_0x4d1b27)[_0x5497('0x24')](function(_0x35ecd9){return _0x35ecd9;});}return null;};}function removeEntity(_0x3b2fbc,_0x5018fa){return function(_0x54043a){if(_0x54043a){return _0x54043a[_0x5497('0x25')]()[_0x5497('0x24')](function(){_0x3b2fbc[_0x5497('0x19')](0xcc)[_0x5497('0x1a')]();});}};}function handleEntityNotFound(_0x5223b5,_0x13b7a4){return function(_0x57268c){if(!_0x57268c){_0x5223b5[_0x5497('0x18')](0x194);}return _0x57268c;};}function handleError(_0x16a2b4,_0x429d36){_0x429d36=_0x429d36||0x1f4;return function(_0x34a1a5){logger[_0x5497('0x26')](_0x34a1a5[_0x5497('0x27')]);if(_0x34a1a5['name']){delete _0x34a1a5[_0x5497('0x28')];}_0x16a2b4['status'](_0x429d36)['send'](_0x34a1a5);};}exports['index']=function(_0x39a2b7,_0x48d146){var _0x5e9356={},_0xc3465={},_0xb14593={'count':0x0,'rows':[]};var _0x1cf908=_['map'](db['Integration']['rawAttributes'],function(_0x371874){return{'name':_0x371874[_0x5497('0x29')],'type':_0x371874[_0x5497('0x2a')]['key']};});_0xc3465['model']=_['map'](_0x1cf908,_0x5497('0x28'));_0xc3465['query']=_[_0x5497('0x2b')](_0x39a2b7[_0x5497('0x2c')]);_0xc3465[_0x5497('0x2d')]=_['intersection'](_0xc3465[_0x5497('0x2e')],_0xc3465[_0x5497('0x2c')]);_0x5e9356['attributes']=_[_0x5497('0x2f')](_0xc3465[_0x5497('0x2e')],qs[_0x5497('0x30')](_0x39a2b7['query'][_0x5497('0x30')]));_0x5e9356[_0x5497('0x31')]=_0x5e9356[_0x5497('0x31')][_0x5497('0x32')]?_0x5e9356[_0x5497('0x31')]:_0xc3465['model'];if(!_0x39a2b7[_0x5497('0x2c')][_0x5497('0x33')]('nolimit')){_0x5e9356[_0x5497('0x1e')]=qs[_0x5497('0x1e')](_0x39a2b7[_0x5497('0x2c')][_0x5497('0x1e')]);_0x5e9356[_0x5497('0x1c')]=qs[_0x5497('0x1c')](_0x39a2b7['query'][_0x5497('0x1c')]);}_0x5e9356['order']=qs[_0x5497('0x34')](_0x39a2b7[_0x5497('0x2c')][_0x5497('0x34')]);_0x5e9356['where']=qs['filters'](_[_0x5497('0x35')](_0x39a2b7[_0x5497('0x2c')],_0xc3465[_0x5497('0x2d')]),_0x1cf908);if(_0x39a2b7[_0x5497('0x2c')][_0x5497('0x36')]){_0x5e9356[_0x5497('0x37')]=_['merge'](_0x5e9356[_0x5497('0x37')],{'$or':_[_0x5497('0x38')](_0x1cf908,function(_0x3de8fe){if(_0x3de8fe[_0x5497('0x2a')]!==_0x5497('0x39')){var _0x468902={};_0x468902[_0x3de8fe[_0x5497('0x28')]]={'$like':'%'+_0x39a2b7[_0x5497('0x2c')][_0x5497('0x36')]+'%'};return _0x468902;}})});}_0x5e9356=_['merge']({},_0x5e9356,_0x39a2b7[_0x5497('0x3a')]);var _0x32fa2b={'where':_0x5e9356[_0x5497('0x37')]};return db[_0x5497('0x3b')][_0x5497('0x3c')](_0x32fa2b)[_0x5497('0x24')](function(_0x4299be){_0xb14593['count']=_0x4299be;if(_0x39a2b7[_0x5497('0x2c')][_0x5497('0x3d')]){_0x5e9356[_0x5497('0x3e')]=[{'all':!![]}];}return db[_0x5497('0x3b')][_0x5497('0x3f')](_0x5e9356);})[_0x5497('0x24')](function(_0x114471){_0xb14593['rows']=_0x114471;return _0xb14593;})[_0x5497('0x24')](respondWithFilteredResult(_0x48d146,_0x5e9356))[_0x5497('0x40')](handleError(_0x48d146,null));};exports[_0x5497('0x41')]=function(_0x1e6389,_0x20e947){var _0xd90608={'raw':![],'where':{'id':_0x1e6389[_0x5497('0x42')]['id']}},_0xc1a999={};_0xc1a999[_0x5497('0x2e')]=_[_0x5497('0x2b')](db['Integration'][_0x5497('0x43')]);_0xc1a999['query']=_[_0x5497('0x2b')](_0x1e6389[_0x5497('0x2c')]);_0xc1a999[_0x5497('0x2d')]=_[_0x5497('0x2f')](_0xc1a999[_0x5497('0x2e')],_0xc1a999['query']);_0xd90608[_0x5497('0x31')]=_[_0x5497('0x2f')](_0xc1a999['model'],qs[_0x5497('0x30')](_0x1e6389['query'][_0x5497('0x30')]));_0xd90608['attributes']=_0xd90608[_0x5497('0x31')][_0x5497('0x32')]?_0xd90608[_0x5497('0x31')]:_0xc1a999[_0x5497('0x2e')];if(_0x1e6389[_0x5497('0x2c')]['includeAll']){_0xd90608['include']=[{'all':!![]}];}_0xd90608=_['merge']({},_0xd90608,_0x1e6389['options']);return db[_0x5497('0x3b')][_0x5497('0x44')](_0xd90608)[_0x5497('0x24')](handleEntityNotFound(_0x20e947,null))[_0x5497('0x24')](respondWithResult(_0x20e947,null))[_0x5497('0x40')](handleError(_0x20e947,null));};exports[_0x5497('0x45')]=function(_0xc78abe,_0x466287){return db[_0x5497('0x3b')]['create'](_0xc78abe[_0x5497('0x46')],{})[_0x5497('0x24')](respondWithResult(_0x466287,0xc9))[_0x5497('0x40')](handleError(_0x466287,null));};exports['update']=function(_0x3e4da2,_0x530475){if(_0x3e4da2[_0x5497('0x46')]['id']){delete _0x3e4da2[_0x5497('0x46')]['id'];}return db[_0x5497('0x3b')]['find']({'where':{'id':_0x3e4da2[_0x5497('0x42')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x530475,null))['then'](saveUpdates(_0x3e4da2[_0x5497('0x46')],null))['then'](respondWithResult(_0x530475,null))[_0x5497('0x40')](handleError(_0x530475,null));};exports['destroy']=function(_0x416f76,_0x400860){return db[_0x5497('0x3b')][_0x5497('0x44')]({'where':{'id':_0x416f76[_0x5497('0x42')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x400860,null))[_0x5497('0x24')](removeEntity(_0x400860,null))[_0x5497('0x40')](handleError(_0x400860,null));};
\ No newline at end of file
index 49c04b4..3d8f746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x981e=['define','Integration','integrations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x425ac0,_0x3f1854){var _0x25df70=function(_0x36cac2){while(--_0x36cac2){_0x425ac0['push'](_0x425ac0['shift']());}};_0x25df70(++_0x3f1854);}(_0x981e,0x1c6));var _0xe981=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x981e[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xe981('0x0'));var util=require('util');var logger=require(_0xe981('0x1'))(_0xe981('0x2'));var moment=require(_0xe981('0x3'));var BPromise=require(_0xe981('0x4'));var rp=require(_0xe981('0x5'));var fs=require('fs');var path=require(_0xe981('0x6'));var rimraf=require('rimraf');var config=require(_0xe981('0x7'));var attributes=require('./integration.attributes');module['exports']=function(_0x5716f5,_0x15eeeb){return _0x5716f5[_0xe981('0x8')](_0xe981('0x9'),attributes,{'tableName':_0xe981('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0932=['util','../../config/logger','api','path','rimraf','../../config/environment','./integration.attributes','exports','integrations','lodash'];(function(_0x2ec905,_0x442fb6){var _0xc98bd=function(_0x363b91){while(--_0x363b91){_0x2ec905['push'](_0x2ec905['shift']());}};_0xc98bd(++_0x442fb6);}(_0x0932,0xdb));var _0x2093=function(_0x21451f,_0x146930){_0x21451f=_0x21451f-0x0;var _0x20e8f7=_0x0932[_0x21451f];return _0x20e8f7;};'use strict';var _=require(_0x2093('0x0'));var util=require(_0x2093('0x1'));var logger=require(_0x2093('0x2'))(_0x2093('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2093('0x4'));var rimraf=require(_0x2093('0x5'));var config=require(_0x2093('0x6'));var attributes=require(_0x2093('0x7'));module[_0x2093('0x8')]=function(_0x5e2f4c,_0x57b3e8){return _0x5e2f4c['define']('Integration',attributes,{'tableName':_0x2093('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f63b2cb..2abe465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Integration,\x20%s,\x20%s','message','catch','lodash'];(function(_0x506bce,_0x3a3ba7){var _0x5650c3=function(_0x54340d){while(--_0x54340d){_0x506bce['push'](_0x506bce['shift']());}};_0x5650c3(++_0x3a3ba7);}(_0x66fa,0x117));var _0xa66f=function(_0x2239a3,_0x4bee51){_0x2239a3=_0x2239a3-0x0;var _0x21ce65=_0x66fa[_0x2239a3];return _0x21ce65;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var moment=require('moment');var BPromise=require(_0xa66f('0x2'));var rs=require(_0xa66f('0x3'));var fs=require('fs');var Redis=require(_0xa66f('0x4'));var db=require(_0xa66f('0x5'))['db'];var utils=require(_0xa66f('0x6'));var logger=require(_0xa66f('0x7'))(_0xa66f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa66f('0x9')][_0xa66f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0b78,_0x1d02fc,_0x38b58b){return new BPromise(function(_0x5096bf,_0x39c1ef){return client['request'](_0x2f0b78,_0x38b58b)[_0xa66f('0xb')](function(_0x597c7c){logger[_0xa66f('0xc')]('Integration,\x20%s,\x20%s',_0x1d02fc,'request\x20sent');logger['debug'](_0xa66f('0xd'),_0x1d02fc,_0xa66f('0xe'),JSON['stringify'](_0x597c7c));if(_0x597c7c[_0xa66f('0xf')]){if(_0x597c7c['error'][_0xa66f('0x10')]===0x1f4){logger['error'](_0xa66f('0x11'),_0x1d02fc,_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);return _0x39c1ef(_0x597c7c['error']['message']);}logger[_0xa66f('0xf')]('Integration,\x20%s,\x20%s',_0x1d02fc,_0x597c7c['error']['message']);return _0x5096bf(_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);}else{logger[_0xa66f('0xc')](_0xa66f('0x11'),_0x1d02fc,_0xa66f('0xe'));_0x5096bf(_0x597c7c['result']['message']);}})[_0xa66f('0x13')](function(_0x32d338){logger[_0xa66f('0xf')](_0xa66f('0x11'),_0x1d02fc,_0x32d338);_0x39c1ef(_0x32d338);});});}
\ No newline at end of file
+var _0x0b0e=['Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','debug'];(function(_0x39ffd1,_0x299703){var _0x31267e=function(_0x11b420){while(--_0x11b420){_0x39ffd1['push'](_0x39ffd1['shift']());}};_0x31267e(++_0x299703);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5a7cbc,_0x573d85){_0x5a7cbc=_0x5a7cbc-0x0;var _0x44d2cc=_0x0b0e[_0x5a7cbc];return _0x44d2cc;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x219b1c,_0x5cf9cc,_0x50be7f){return new BPromise(function(_0x11effc,_0x435060){return client[_0xe0b0('0xc')](_0x219b1c,_0x50be7f)[_0xe0b0('0xd')](function(_0x4c24f9){logger[_0xe0b0('0xe')](_0xe0b0('0xf'),_0x5cf9cc,'request\x20sent');logger[_0xe0b0('0x10')](_0xe0b0('0x11'),_0x5cf9cc,'request\x20sent',JSON[_0xe0b0('0x12')](_0x4c24f9));if(_0x4c24f9[_0xe0b0('0x13')]){if(_0x4c24f9[_0xe0b0('0x13')]['code']===0x1f4){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x435060(_0x4c24f9[_0xe0b0('0x13')]['message']);}logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x11effc(_0x4c24f9[_0xe0b0('0x13')]['message']);}else{logger[_0xe0b0('0xe')]('Integration,\x20%s,\x20%s',_0x5cf9cc,_0xe0b0('0x15'));_0x11effc(_0x4c24f9[_0xe0b0('0x16')]['message']);}})[_0xe0b0('0x17')](function(_0x4a4cc0){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4a4cc0);_0x435060(_0x4a4cc0);});});}
\ No newline at end of file
index e3c20ad..3cc0aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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','./integrationReport.controller','get'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x0295,0x1f0));var _0x5029=function(_0x587fb5,_0x59cb3b){_0x587fb5=_0x587fb5-0x0;var _0x551105=_0x0295[_0x587fb5];return _0x551105;};'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')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x5029('0x7')]('/:id',auth[_0x5029('0x8')](),controller['show']);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
+var _0x2542=['put','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x1ca597,_0x5927cc){var _0x5e3335=function(_0x57b239){while(--_0x57b239){_0x1ca597['push'](_0x1ca597['shift']());}};_0x5e3335(++_0x5927cc);}(_0x2542,0x169));var _0x2254=function(_0x265721,_0x1503f2){_0x265721=_0x265721-0x0;var _0x11ec95=_0x2542[_0x265721];return _0x11ec95;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')]('/',auth[_0x2254('0xc')](),controller['create']);router[_0x2254('0x11')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0x12')]);router['delete']('/:id',auth[_0x2254('0xc')](),controller[_0x2254('0x13')]);module[_0x2254('0x14')]=router;
\ No newline at end of file
index f9ce6b5..750d1bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f7b=['ENUM','SENT','SENDING','RECEIVED','sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT'];(function(_0x25efc1,_0x562953){var _0x2b55f1=function(_0x1cb20c){while(--_0x1cb20c){_0x25efc1['push'](_0x25efc1['shift']());}};_0x2b55f1(++_0x562953);}(_0x2f7b,0x9e));var _0xb2f7=function(_0x1f48af,_0x5986c5){_0x1f48af=_0x1f48af-0x0;var _0x535689=_0x2f7b[_0x1f48af];return _0x535689;};'use strict';var Sequelize=require(_0xb2f7('0x0'));module[_0xb2f7('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xb2f7('0x2')]},'exitStatus':{'type':Sequelize[_0xb2f7('0x2')]},'ticketId':{'type':Sequelize[_0xb2f7('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xb2f7('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb2f7('0x2')]},'calleridname':{'type':Sequelize[_0xb2f7('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xb2f7('0x2')]},'membername':{'type':Sequelize[_0xb2f7('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xb2f7('0x3')]},'holdtime':{'type':Sequelize[_0xb2f7('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xb2f7('0x3')]},'talktime':{'type':Sequelize[_0xb2f7('0x4')]},'agentacw':{'type':Sequelize[_0xb2f7('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xb2f7('0x4')]},'reason':{'type':Sequelize[_0xb2f7('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xb2f7('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xb2f7('0x3')]},'agentdump':{'type':Sequelize[_0xb2f7('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xb2f7('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xb2f7('0x2')]},'connectedlinenum':{'type':Sequelize[_0xb2f7('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xb2f7('0x2')]},'accountcode':{'type':Sequelize[_0xb2f7('0x2')]},'context':{'type':Sequelize[_0xb2f7('0x2')]},'exten':{'type':Sequelize[_0xb2f7('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xb2f7('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xb2f7('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xb2f7('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb2f7('0x2')]},'destlanguage':{'type':Sequelize[_0xb2f7('0x2')]},'destaccountcode':{'type':Sequelize[_0xb2f7('0x2')]},'destcontext':{'type':Sequelize[_0xb2f7('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xb2f7('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xb2f7('0x2')]},'from':{'type':Sequelize[_0xb2f7('0x2')]},'to':{'type':Sequelize[_0xb2f7('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xb2f7('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0xb2f7('0x6')]},'status':{'type':Sequelize[_0xb2f7('0x7')](_0xb2f7('0x8'),_0xb2f7('0x9'),_0xb2f7('0xa'),'FAILED')},'url':{'type':Sequelize[_0xb2f7('0x2')]},'app':{'type':Sequelize[_0xb2f7('0x2')]},'appdata':{'type':Sequelize[_0xb2f7('0x2')]},'projectId':{'type':Sequelize[_0xb2f7('0x4')]}};
\ No newline at end of file
+var _0xe939=['SENT','SENDING','RECEIVED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM'];(function(_0x578bc8,_0x115414){var _0x2e83e8=function(_0x16c2a7){while(--_0x16c2a7){_0x578bc8['push'](_0x578bc8['shift']());}};_0x2e83e8(++_0x115414);}(_0xe939,0xea));var _0x9e93=function(_0x279ebc,_0x5bb386){_0x279ebc=_0x279ebc-0x0;var _0x1d0782=_0xe939[_0x279ebc];return _0x1d0782;};'use strict';var Sequelize=require(_0x9e93('0x0'));module[_0x9e93('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x9e93('0x2')]},'exitStatus':{'type':Sequelize[_0x9e93('0x2')]},'ticketId':{'type':Sequelize[_0x9e93('0x2')]},'integrationId':{'type':Sequelize[_0x9e93('0x3')]},'contacts':{'type':Sequelize[_0x9e93('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x9e93('0x2')]},'calleridname':{'type':Sequelize[_0x9e93('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x9e93('0x2')]},'membername':{'type':Sequelize[_0x9e93('0x2')]},'agentcalledAt':{'type':Sequelize[_0x9e93('0x4')]},'agentconnectAt':{'type':Sequelize[_0x9e93('0x4')]},'holdtime':{'type':Sequelize[_0x9e93('0x3')]},'agentcomplete':{'type':Sequelize[_0x9e93('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x9e93('0x4')]},'talktime':{'type':Sequelize[_0x9e93('0x3')]},'agentacw':{'type':Sequelize[_0x9e93('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x9e93('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x9e93('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x9e93('0x4')]},'agentdump':{'type':Sequelize[_0x9e93('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x9e93('0x4')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x9e93('0x2')]},'channelstate':{'type':Sequelize[_0x9e93('0x3')]},'channelstatedesc':{'type':Sequelize[_0x9e93('0x2')]},'connectedlinenum':{'type':Sequelize[_0x9e93('0x2')]},'connectedlinename':{'type':Sequelize[_0x9e93('0x2')]},'language':{'type':Sequelize[_0x9e93('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x9e93('0x2')]},'exten':{'type':Sequelize[_0x9e93('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x9e93('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x9e93('0x2')]},'destcalleridnum':{'type':Sequelize[_0x9e93('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x9e93('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x9e93('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x9e93('0x2')]},'destcontext':{'type':Sequelize[_0x9e93('0x2')]},'destexten':{'type':Sequelize[_0x9e93('0x2')]},'destpriority':{'type':Sequelize[_0x9e93('0x2')]},'destuniqueid':{'type':Sequelize[_0x9e93('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x9e93('0x2')]},'subject':{'type':Sequelize[_0x9e93('0x2')]},'from':{'type':Sequelize[_0x9e93('0x2')]},'to':{'type':Sequelize[_0x9e93('0x2')]},'cc':{'type':Sequelize[_0x9e93('0x2')]},'attachment':{'type':Sequelize[_0x9e93('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x9e93('0x6')]},'status':{'type':Sequelize[_0x9e93('0x7')](_0x9e93('0x8'),_0x9e93('0x9'),_0x9e93('0xa'),'FAILED')},'url':{'type':Sequelize[_0x9e93('0x2')]},'app':{'type':Sequelize[_0x9e93('0x2')]},'appdata':{'type':Sequelize[_0x9e93('0x2')]},'projectId':{'type':Sequelize[_0x9e93('0x3')]}};
\ No newline at end of file
index f01af60..78da769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51bf=['reject','save','update','destroy','then','end','error','stack','name','send','index','map','IntegrationReport','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','keys','rawAttributes','include','find','body','describe','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply'];(function(_0x2364a2,_0xc197f3){var _0x1da290=function(_0x5eed98){while(--_0x5eed98){_0x2364a2['push'](_0x2364a2['shift']());}};_0x1da290(++_0xc197f3);}(_0x51bf,0x7b));var _0xf51b=function(_0x518cfc,_0x5d5b58){_0x518cfc=_0x518cfc-0x0;var _0x53a536=_0x51bf[_0x518cfc];return _0x53a536;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf51b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf51b('0x1'));var rp=require('request-promise');var moment=require(_0xf51b('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf51b('0x3'));var path=require(_0xf51b('0x4'));var sox=require(_0xf51b('0x5'));var csv=require(_0xf51b('0x6'));var ejs=require(_0xf51b('0x7'));var fs=require('fs');var fs_extra=require(_0xf51b('0x8'));var _=require(_0xf51b('0x9'));var squel=require(_0xf51b('0xa'));var crypto=require(_0xf51b('0xb'));var jsforce=require(_0xf51b('0xc'));var deskjs=require(_0xf51b('0xd'));var toCsv=require(_0xf51b('0x6'));var querystring=require(_0xf51b('0xe'));var Papa=require(_0xf51b('0xf'));var Redis=require(_0xf51b('0x10'));var authService=require(_0xf51b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xf51b('0x12'));var hardwareService=require(_0xf51b('0x13'));var logger=require(_0xf51b('0x14'))(_0xf51b('0x15'));var utils=require(_0xf51b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf51b('0x17'));var db=require(_0xf51b('0x18'))['db'];function respondWithStatusCode(_0x35d940,_0x235345){_0x235345=_0x235345||0xcc;return function(_0x33dd21){if(_0x33dd21){return _0x35d940[_0xf51b('0x19')](_0x235345);}return _0x35d940[_0xf51b('0x1a')](_0x235345)['end']();};}function respondWithResult(_0x1279a8,_0x2d234e){_0x2d234e=_0x2d234e||0xc8;return function(_0x4f5285){if(_0x4f5285){return _0x1279a8[_0xf51b('0x1a')](_0x2d234e)['json'](_0x4f5285);}};}function respondWithFilteredResult(_0x91cafb,_0x2bf8f7){return function(_0x3b70fc){if(_0x3b70fc){var _0x2ae3c8=typeof _0x2bf8f7[_0xf51b('0x1b')]===_0xf51b('0x1c')&&typeof _0x2bf8f7['limit']===_0xf51b('0x1c');var _0x756275=_0x3b70fc[_0xf51b('0x1d')];var _0xb1b940=_0x2ae3c8?0x0:_0x2bf8f7[_0xf51b('0x1b')];var _0x1272ee=_0x2ae3c8?_0x3b70fc[_0xf51b('0x1d')]:_0x2bf8f7[_0xf51b('0x1b')]+_0x2bf8f7[_0xf51b('0x1e')];var _0x11ffa2;if(_0x1272ee>=_0x756275){_0x1272ee=_0x756275;_0x11ffa2=0xc8;}else{_0x11ffa2=0xce;}_0x91cafb[_0xf51b('0x1a')](_0x11ffa2);return _0x91cafb[_0xf51b('0x1f')](_0xf51b('0x20'),_0xb1b940+'-'+_0x1272ee+'/'+_0x756275)[_0xf51b('0x21')](_0x3b70fc);}return null;};}function patchUpdates(_0x25c107){return function(_0x6837ac){try{jsonpatch[_0xf51b('0x22')](_0x6837ac,_0x25c107,!![]);}catch(_0x5916f8){return BPromise[_0xf51b('0x23')](_0x5916f8);}return _0x6837ac[_0xf51b('0x24')]();};}function saveUpdates(_0x135184,_0x5c5b8a){return function(_0x31f68a){if(_0x31f68a){return _0x31f68a[_0xf51b('0x25')](_0x135184)['then'](function(_0x37ca17){return _0x37ca17;});}return null;};}function removeEntity(_0x2c28cd,_0x490ede){return function(_0x445234){if(_0x445234){return _0x445234[_0xf51b('0x26')]()[_0xf51b('0x27')](function(){_0x2c28cd['status'](0xcc)[_0xf51b('0x28')]();});}};}function handleEntityNotFound(_0x3842d9,_0x16738b){return function(_0x218a82){if(!_0x218a82){_0x3842d9[_0xf51b('0x19')](0x194);}return _0x218a82;};}function handleError(_0x3fd2ea,_0x180818){_0x180818=_0x180818||0x1f4;return function(_0x178d2e){logger[_0xf51b('0x29')](_0x178d2e[_0xf51b('0x2a')]);if(_0x178d2e['name']){delete _0x178d2e[_0xf51b('0x2b')];}_0x3fd2ea[_0xf51b('0x1a')](_0x180818)[_0xf51b('0x2c')](_0x178d2e);};}exports[_0xf51b('0x2d')]=function(_0x59f8fa,_0x153496){var _0x326505={},_0x29c1bb={},_0x838d6b={'count':0x0,'rows':[]};var _0x4bdd35=_[_0xf51b('0x2e')](db[_0xf51b('0x2f')]['rawAttributes'],function(_0x2cab5f){return{'name':_0x2cab5f[_0xf51b('0x30')],'type':_0x2cab5f['type'][_0xf51b('0x31')]};});_0x29c1bb[_0xf51b('0x32')]=_[_0xf51b('0x2e')](_0x4bdd35,_0xf51b('0x2b'));_0x29c1bb[_0xf51b('0x33')]=_['keys'](_0x59f8fa[_0xf51b('0x33')]);_0x29c1bb[_0xf51b('0x34')]=_[_0xf51b('0x35')](_0x29c1bb['model'],_0x29c1bb['query']);_0x326505[_0xf51b('0x36')]=_[_0xf51b('0x35')](_0x29c1bb[_0xf51b('0x32')],qs[_0xf51b('0x37')](_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x37')]));_0x326505[_0xf51b('0x36')]=_0x326505['attributes'][_0xf51b('0x38')]?_0x326505[_0xf51b('0x36')]:_0x29c1bb[_0xf51b('0x32')];if(!_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x39')](_0xf51b('0x3a'))){_0x326505[_0xf51b('0x1e')]=qs[_0xf51b('0x1e')](_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x1e')]);_0x326505[_0xf51b('0x1b')]=qs[_0xf51b('0x1b')](_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x1b')]);}_0x326505[_0xf51b('0x3b')]=qs['sort'](_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x3c')]);_0x326505[_0xf51b('0x3d')]=qs[_0xf51b('0x34')](_[_0xf51b('0x3e')](_0x59f8fa[_0xf51b('0x33')],_0x29c1bb[_0xf51b('0x34')]),_0x4bdd35);if(_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x3f')]){_0x326505[_0xf51b('0x3d')]=_[_0xf51b('0x40')](_0x326505[_0xf51b('0x3d')],{'$or':_[_0xf51b('0x2e')](_0x4bdd35,function(_0x2f1d35){if(_0x2f1d35[_0xf51b('0x41')]!==_0xf51b('0x42')){var _0x501dc1={};_0x501dc1[_0x2f1d35[_0xf51b('0x2b')]]={'$like':'%'+_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x3f')]+'%'};return _0x501dc1;}})});}_0x326505=_[_0xf51b('0x40')]({},_0x326505,_0x59f8fa[_0xf51b('0x43')]);var _0x50c70f={'where':_0x326505[_0xf51b('0x3d')]};return db['IntegrationReport'][_0xf51b('0x1d')](_0x50c70f)[_0xf51b('0x27')](function(_0x196dc2){_0x838d6b[_0xf51b('0x1d')]=_0x196dc2;if(_0x59f8fa[_0xf51b('0x33')][_0xf51b('0x44')]){_0x326505['include']=[{'all':!![]}];}return db[_0xf51b('0x2f')]['findAll'](_0x326505);})[_0xf51b('0x27')](function(_0x8015ce){_0x838d6b[_0xf51b('0x45')]=_0x8015ce;return _0x838d6b;})[_0xf51b('0x27')](respondWithFilteredResult(_0x153496,_0x326505))[_0xf51b('0x46')](handleError(_0x153496,null));};exports[_0xf51b('0x47')]=function(_0x5e570d,_0x442cc7){var _0x33739a={'raw':![],'where':{'id':_0x5e570d[_0xf51b('0x48')]['id']}},_0x1d4e4e={};_0x1d4e4e[_0xf51b('0x32')]=_[_0xf51b('0x49')](db[_0xf51b('0x2f')][_0xf51b('0x4a')]);_0x1d4e4e[_0xf51b('0x33')]=_[_0xf51b('0x49')](_0x5e570d[_0xf51b('0x33')]);_0x1d4e4e[_0xf51b('0x34')]=_[_0xf51b('0x35')](_0x1d4e4e[_0xf51b('0x32')],_0x1d4e4e[_0xf51b('0x33')]);_0x33739a[_0xf51b('0x36')]=_['intersection'](_0x1d4e4e[_0xf51b('0x32')],qs[_0xf51b('0x37')](_0x5e570d[_0xf51b('0x33')][_0xf51b('0x37')]));_0x33739a[_0xf51b('0x36')]=_0x33739a['attributes'][_0xf51b('0x38')]?_0x33739a[_0xf51b('0x36')]:_0x1d4e4e[_0xf51b('0x32')];if(_0x5e570d['query'][_0xf51b('0x44')]){_0x33739a[_0xf51b('0x4b')]=[{'all':!![]}];}_0x33739a=_[_0xf51b('0x40')]({},_0x33739a,_0x5e570d['options']);return db['IntegrationReport'][_0xf51b('0x4c')](_0x33739a)[_0xf51b('0x27')](handleEntityNotFound(_0x442cc7,null))[_0xf51b('0x27')](respondWithResult(_0x442cc7,null))[_0xf51b('0x46')](handleError(_0x442cc7,null));};exports['create']=function(_0x4b20de,_0x22845e){return db[_0xf51b('0x2f')]['create'](_0x4b20de[_0xf51b('0x4d')],{})['then'](respondWithResult(_0x22845e,0xc9))[_0xf51b('0x46')](handleError(_0x22845e,null));};exports['update']=function(_0x26e0e5,_0x24bf05){if(_0x26e0e5['body']['id']){delete _0x26e0e5[_0xf51b('0x4d')]['id'];}return db[_0xf51b('0x2f')]['find']({'where':{'id':_0x26e0e5[_0xf51b('0x48')]['id']}})['then'](handleEntityNotFound(_0x24bf05,null))['then'](saveUpdates(_0x26e0e5['body'],null))[_0xf51b('0x27')](respondWithResult(_0x24bf05,null))[_0xf51b('0x46')](handleError(_0x24bf05,null));};exports[_0xf51b('0x26')]=function(_0x56398f,_0x20af1e){return db[_0xf51b('0x2f')][_0xf51b('0x4c')]({'where':{'id':_0x56398f[_0xf51b('0x48')]['id']}})['then'](handleEntityNotFound(_0x20af1e,null))[_0xf51b('0x27')](removeEntity(_0x20af1e,null))[_0xf51b('0x46')](handleError(_0x20af1e,null));};exports[_0xf51b('0x4e')]=function(_0x109f43,_0x888640){return db['IntegrationReport'][_0xf51b('0x4e')]()[_0xf51b('0x27')](respondWithResult(_0x888640,null))['catch'](handleError(_0x888640,null));};
\ No newline at end of file
+var _0x03a6=['api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','IntegrationReport','then','includeAll','include','findAll','rows','catch','show','params','length','find','body','describe','rimraf','zip-dir','bluebird','mustache','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x1ce569,_0x4887e2){var _0x3fb345=function(_0x2b8391){while(--_0x2b8391){_0x1ce569['push'](_0x1ce569['shift']());}};_0x3fb345(++_0x4887e2);}(_0x03a6,0xc4));var _0x603a=function(_0xa6a5c3,_0x25eec2){_0xa6a5c3=_0xa6a5c3-0x0;var _0x2f865e=_0x03a6[_0xa6a5c3];return _0x2f865e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x603a('0x0'));var zipdir=require(_0x603a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x603a('0x2'));var Mustache=require(_0x603a('0x3'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x603a('0x4'));var ejs=require(_0x603a('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x603a('0x6'));var squel=require(_0x603a('0x7'));var crypto=require(_0x603a('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x603a('0x9'));var Papa=require(_0x603a('0xa'));var Redis=require(_0x603a('0xb'));var authService=require(_0x603a('0xc'));var qs=require(_0x603a('0xd'));var as=require(_0x603a('0xe'));var hardwareService=require(_0x603a('0xf'));var logger=require(_0x603a('0x10'))(_0x603a('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x603a('0x12'));var db=require(_0x603a('0x13'))['db'];function respondWithStatusCode(_0x51ab41,_0x1b822f){_0x1b822f=_0x1b822f||0xcc;return function(_0x58cd23){if(_0x58cd23){return _0x51ab41[_0x603a('0x14')](_0x1b822f);}return _0x51ab41[_0x603a('0x15')](_0x1b822f)[_0x603a('0x16')]();};}function respondWithResult(_0x334422,_0xc27ae3){_0xc27ae3=_0xc27ae3||0xc8;return function(_0x238e18){if(_0x238e18){return _0x334422['status'](_0xc27ae3)[_0x603a('0x17')](_0x238e18);}};}function respondWithFilteredResult(_0x448574,_0x1ff809){return function(_0x520761){if(_0x520761){var _0x47de46=typeof _0x1ff809[_0x603a('0x18')]===_0x603a('0x19')&&typeof _0x1ff809[_0x603a('0x1a')]===_0x603a('0x19');var _0x1b9add=_0x520761[_0x603a('0x1b')];var _0x47d2db=_0x47de46?0x0:_0x1ff809[_0x603a('0x18')];var _0x9f03f1=_0x47de46?_0x520761[_0x603a('0x1b')]:_0x1ff809[_0x603a('0x18')]+_0x1ff809[_0x603a('0x1a')];var _0x3fc9df;if(_0x9f03f1>=_0x1b9add){_0x9f03f1=_0x1b9add;_0x3fc9df=0xc8;}else{_0x3fc9df=0xce;}_0x448574[_0x603a('0x15')](_0x3fc9df);return _0x448574['set'](_0x603a('0x1c'),_0x47d2db+'-'+_0x9f03f1+'/'+_0x1b9add)[_0x603a('0x17')](_0x520761);}return null;};}function patchUpdates(_0x47f8e5){return function(_0x5aac80){try{jsonpatch[_0x603a('0x1d')](_0x5aac80,_0x47f8e5,!![]);}catch(_0x6c63de){return BPromise[_0x603a('0x1e')](_0x6c63de);}return _0x5aac80[_0x603a('0x1f')]();};}function saveUpdates(_0x2da1ce,_0x1c28ec){return function(_0x222460){if(_0x222460){return _0x222460[_0x603a('0x20')](_0x2da1ce)['then'](function(_0x4a12b0){return _0x4a12b0;});}return null;};}function removeEntity(_0x171554,_0x66d93b){return function(_0x2d4174){if(_0x2d4174){return _0x2d4174['destroy']()['then'](function(){_0x171554[_0x603a('0x15')](0xcc)[_0x603a('0x16')]();});}};}function handleEntityNotFound(_0x17d6da,_0x3705e3){return function(_0x4a85cd){if(!_0x4a85cd){_0x17d6da[_0x603a('0x14')](0x194);}return _0x4a85cd;};}function handleError(_0x56d70d,_0x336524){_0x336524=_0x336524||0x1f4;return function(_0x4a33aa){logger[_0x603a('0x21')](_0x4a33aa['stack']);if(_0x4a33aa[_0x603a('0x22')]){delete _0x4a33aa[_0x603a('0x22')];}_0x56d70d[_0x603a('0x15')](_0x336524)[_0x603a('0x23')](_0x4a33aa);};}exports[_0x603a('0x24')]=function(_0x4cd003,_0x103a72){var _0x22e400={},_0x9e6743={},_0x2e5d0b={'count':0x0,'rows':[]};var _0x5c104a=_[_0x603a('0x25')](db['IntegrationReport'][_0x603a('0x26')],function(_0x107aaf){return{'name':_0x107aaf[_0x603a('0x27')],'type':_0x107aaf[_0x603a('0x28')][_0x603a('0x29')]};});_0x9e6743[_0x603a('0x2a')]=_[_0x603a('0x25')](_0x5c104a,_0x603a('0x22'));_0x9e6743[_0x603a('0x2b')]=_[_0x603a('0x2c')](_0x4cd003[_0x603a('0x2b')]);_0x9e6743[_0x603a('0x2d')]=_[_0x603a('0x2e')](_0x9e6743[_0x603a('0x2a')],_0x9e6743['query']);_0x22e400[_0x603a('0x2f')]=_[_0x603a('0x2e')](_0x9e6743[_0x603a('0x2a')],qs['fields'](_0x4cd003[_0x603a('0x2b')][_0x603a('0x30')]));_0x22e400[_0x603a('0x2f')]=_0x22e400[_0x603a('0x2f')]['length']?_0x22e400['attributes']:_0x9e6743[_0x603a('0x2a')];if(!_0x4cd003['query'][_0x603a('0x31')](_0x603a('0x32'))){_0x22e400[_0x603a('0x1a')]=qs[_0x603a('0x1a')](_0x4cd003['query'][_0x603a('0x1a')]);_0x22e400[_0x603a('0x18')]=qs[_0x603a('0x18')](_0x4cd003[_0x603a('0x2b')][_0x603a('0x18')]);}_0x22e400['order']=qs[_0x603a('0x33')](_0x4cd003[_0x603a('0x2b')][_0x603a('0x33')]);_0x22e400[_0x603a('0x34')]=qs[_0x603a('0x2d')](_[_0x603a('0x35')](_0x4cd003['query'],_0x9e6743[_0x603a('0x2d')]),_0x5c104a);if(_0x4cd003[_0x603a('0x2b')][_0x603a('0x36')]){_0x22e400['where']=_[_0x603a('0x37')](_0x22e400[_0x603a('0x34')],{'$or':_[_0x603a('0x25')](_0x5c104a,function(_0x2b2396){if(_0x2b2396['type']!==_0x603a('0x38')){var _0x585c81={};_0x585c81[_0x2b2396[_0x603a('0x22')]]={'$like':'%'+_0x4cd003[_0x603a('0x2b')]['filter']+'%'};return _0x585c81;}})});}_0x22e400=_[_0x603a('0x37')]({},_0x22e400,_0x4cd003[_0x603a('0x39')]);var _0x37e29c={'where':_0x22e400[_0x603a('0x34')]};return db[_0x603a('0x3a')]['count'](_0x37e29c)[_0x603a('0x3b')](function(_0x4ed56b){_0x2e5d0b['count']=_0x4ed56b;if(_0x4cd003['query'][_0x603a('0x3c')]){_0x22e400[_0x603a('0x3d')]=[{'all':!![]}];}return db['IntegrationReport'][_0x603a('0x3e')](_0x22e400);})['then'](function(_0x549147){_0x2e5d0b[_0x603a('0x3f')]=_0x549147;return _0x2e5d0b;})[_0x603a('0x3b')](respondWithFilteredResult(_0x103a72,_0x22e400))[_0x603a('0x40')](handleError(_0x103a72,null));};exports[_0x603a('0x41')]=function(_0x1ccd2b,_0x19b96e){var _0xb16a0={'raw':![],'where':{'id':_0x1ccd2b[_0x603a('0x42')]['id']}},_0x560a65={};_0x560a65[_0x603a('0x2a')]=_[_0x603a('0x2c')](db[_0x603a('0x3a')][_0x603a('0x26')]);_0x560a65['query']=_['keys'](_0x1ccd2b[_0x603a('0x2b')]);_0x560a65[_0x603a('0x2d')]=_['intersection'](_0x560a65[_0x603a('0x2a')],_0x560a65[_0x603a('0x2b')]);_0xb16a0[_0x603a('0x2f')]=_[_0x603a('0x2e')](_0x560a65['model'],qs[_0x603a('0x30')](_0x1ccd2b[_0x603a('0x2b')][_0x603a('0x30')]));_0xb16a0[_0x603a('0x2f')]=_0xb16a0[_0x603a('0x2f')][_0x603a('0x43')]?_0xb16a0[_0x603a('0x2f')]:_0x560a65[_0x603a('0x2a')];if(_0x1ccd2b[_0x603a('0x2b')]['includeAll']){_0xb16a0['include']=[{'all':!![]}];}_0xb16a0=_[_0x603a('0x37')]({},_0xb16a0,_0x1ccd2b[_0x603a('0x39')]);return db[_0x603a('0x3a')][_0x603a('0x44')](_0xb16a0)['then'](handleEntityNotFound(_0x19b96e,null))['then'](respondWithResult(_0x19b96e,null))['catch'](handleError(_0x19b96e,null));};exports['create']=function(_0x4480ac,_0x34fccb){return db['IntegrationReport']['create'](_0x4480ac[_0x603a('0x45')],{})[_0x603a('0x3b')](respondWithResult(_0x34fccb,0xc9))['catch'](handleError(_0x34fccb,null));};exports[_0x603a('0x20')]=function(_0x2c533a,_0x317402){if(_0x2c533a['body']['id']){delete _0x2c533a[_0x603a('0x45')]['id'];}return db['IntegrationReport'][_0x603a('0x44')]({'where':{'id':_0x2c533a[_0x603a('0x42')]['id']}})[_0x603a('0x3b')](handleEntityNotFound(_0x317402,null))[_0x603a('0x3b')](saveUpdates(_0x2c533a['body'],null))[_0x603a('0x3b')](respondWithResult(_0x317402,null))['catch'](handleError(_0x317402,null));};exports['destroy']=function(_0x21c638,_0x487960){return db[_0x603a('0x3a')][_0x603a('0x44')]({'where':{'id':_0x21c638[_0x603a('0x42')]['id']}})['then'](handleEntityNotFound(_0x487960,null))[_0x603a('0x3b')](removeEntity(_0x487960,null))[_0x603a('0x40')](handleError(_0x487960,null));};exports[_0x603a('0x46')]=function(_0x33e5db,_0x4c409c){return db['IntegrationReport'][_0x603a('0x46')]()['then'](respondWithResult(_0x4c409c,null))[_0x603a('0x40')](handleError(_0x4c409c,null));};
\ No newline at end of file
index 345b8fe..5a4ff49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb858=['define','IntegrationReport','../../config/logger','api','moment','path','../../config/environment','./integrationReport.attributes','exports'];(function(_0x3dc74b,_0x3c5944){var _0x464fe2=function(_0x5149e1){while(--_0x5149e1){_0x3dc74b['push'](_0x3dc74b['shift']());}};_0x464fe2(++_0x3c5944);}(_0xb858,0xb6));var _0x8b85=function(_0x56331d,_0x3d655a){_0x56331d=_0x56331d-0x0;var _0x4288fa=_0xb858[_0x56331d];return _0x4288fa;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8b85('0x0'))(_0x8b85('0x1'));var moment=require(_0x8b85('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8b85('0x3'));var rimraf=require('rimraf');var config=require(_0x8b85('0x4'));var attributes=require(_0x8b85('0x5'));module[_0x8b85('0x6')]=function(_0x5a5c5d,_0x3c9fda){return _0x5a5c5d[_0x8b85('0x7')](_0x8b85('0x8'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2731=['rimraf','../../config/environment','./integrationReport.attributes','exports','IntegrationReport','report_integration','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1b0a56,_0x368ec3){var _0x137227=function(_0x595510){while(--_0x595510){_0x1b0a56['push'](_0x1b0a56['shift']());}};_0x137227(++_0x368ec3);}(_0x2731,0x95));var _0x1273=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x2731[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x1273('0x0'));var logger=require(_0x1273('0x1'))(_0x1273('0x2'));var moment=require(_0x1273('0x3'));var BPromise=require(_0x1273('0x4'));var rp=require(_0x1273('0x5'));var fs=require('fs');var path=require(_0x1273('0x6'));var rimraf=require(_0x1273('0x7'));var config=require(_0x1273('0x8'));var attributes=require(_0x1273('0x9'));module[_0x1273('0xa')]=function(_0x4f88c5,_0x14f2db){return _0x4f88c5['define'](_0x1273('0xb'),attributes,{'tableName':_0x1273('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9fbc1ee..a7359c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x2a322b,_0x638d45){var _0x5c410c=function(_0x5e6aa8){while(--_0x5e6aa8){_0x2a322b['push'](_0x2a322b['shift']());}};_0x5c410c(++_0x638d45);}(_0x1261,0x144));var _0x1126=function(_0x1d3e3f,_0x495ec1){_0x1d3e3f=_0x1d3e3f-0x0;var _0x3879fa=_0x1261[_0x1d3e3f];return _0x3879fa;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('IntegrationReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x118678,_0x245ff7){var _0x43d3f1=function(_0x231e99){while(--_0x231e99){_0x118678['push'](_0x118678['shift']());}};_0x43d3f1(++_0x245ff7);}(_0xba34,0x119));var _0x4ba3=function(_0x266315,_0x3b3d8b){_0x266315=_0x266315-0x0;var _0x585ba4=_0xba34[_0x266315];return _0x585ba4;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var moment=require(_0x4ba3('0x2'));var BPromise=require(_0x4ba3('0x3'));var rs=require(_0x4ba3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ba3('0x5'))(_0x4ba3('0x6'));var config=require(_0x4ba3('0x7'));var jayson=require(_0x4ba3('0x8'));var client=jayson[_0x4ba3('0x9')][_0x4ba3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe5f99a,_0x585f2d,_0x6254fb){return new BPromise(function(_0x368eee,_0x2df7f3){return client[_0x4ba3('0xb')](_0xe5f99a,_0x6254fb)[_0x4ba3('0xc')](function(_0xcf1ec3){logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0x585f2d,'request\x20sent',JSON[_0x4ba3('0x12')](_0xcf1ec3));if(_0xcf1ec3[_0x4ba3('0x13')]){if(_0xcf1ec3['error'][_0x4ba3('0x14')]===0x1f4){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3['error'][_0x4ba3('0x15')]);return _0x2df7f3(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}logger[_0x4ba3('0x13')](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);return _0x368eee(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}else{logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));_0x368eee(_0xcf1ec3[_0x4ba3('0x16')][_0x4ba3('0x15')]);}})[_0x4ba3('0x17')](function(_0x1b7776){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0x1b7776);_0x2df7f3(_0x1b7776);});});}
\ No newline at end of file
index bd7fbe0..efa5d1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c7b=['addInterval','/:id/sub_intervals/create_many','addIntervals','/:id','update','delete','destroy','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service','./interval.controller','get','isAuthenticated','index','show','/:id/sub_intervals','getIntervals','post'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6c7b,0x10b));var _0xb6c7=function(_0x481529,_0x2ad20a){_0x481529=_0x481529-0x0;var _0x20015b=_0x6c7b[_0x481529];return _0x20015b;};'use strict';var multer=require(_0xb6c7('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb6c7('0x1'));var router=express['Router']();var fs_extra=require(_0xb6c7('0x2'));var auth=require(_0xb6c7('0x3'));var interaction=require(_0xb6c7('0x4'));var config=require('../../config/environment');var controller=require(_0xb6c7('0x5'));router[_0xb6c7('0x6')]('/',auth[_0xb6c7('0x7')](),controller[_0xb6c7('0x8')]);router[_0xb6c7('0x6')]('/:id',auth[_0xb6c7('0x7')](),controller[_0xb6c7('0x9')]);router[_0xb6c7('0x6')](_0xb6c7('0xa'),auth[_0xb6c7('0x7')](),controller[_0xb6c7('0xb')]);router[_0xb6c7('0xc')]('/',auth[_0xb6c7('0x7')](),controller['create']);router['post'](_0xb6c7('0xa'),auth[_0xb6c7('0x7')](),controller[_0xb6c7('0xd')]);router[_0xb6c7('0xc')](_0xb6c7('0xe'),auth[_0xb6c7('0x7')](),controller[_0xb6c7('0xf')]);router['put'](_0xb6c7('0x10'),auth[_0xb6c7('0x7')](),controller[_0xb6c7('0x11')]);router[_0xb6c7('0x12')](_0xb6c7('0x10'),auth[_0xb6c7('0x7')](),controller[_0xb6c7('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xbfc0=['getIntervals','post','/:id/sub_intervals/create_many','addIntervals','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sub_intervals'];(function(_0x4f9e89,_0x2b2204){var _0x21409f=function(_0x7880eb){while(--_0x7880eb){_0x4f9e89['push'](_0x4f9e89['shift']());}};_0x21409f(++_0x2b2204);}(_0xbfc0,0x125));var _0x0bfc=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0xbfc0[_0x21f9c2];return _0x3da17f;};'use strict';var multer=require(_0x0bfc('0x0'));var util=require(_0x0bfc('0x1'));var path=require(_0x0bfc('0x2'));var timeout=require(_0x0bfc('0x3'));var express=require(_0x0bfc('0x4'));var router=express[_0x0bfc('0x5')]();var fs_extra=require(_0x0bfc('0x6'));var auth=require(_0x0bfc('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0bfc('0x8'));var controller=require('./interval.controller');router[_0x0bfc('0x9')]('/',auth[_0x0bfc('0xa')](),controller[_0x0bfc('0xb')]);router[_0x0bfc('0x9')](_0x0bfc('0xc'),auth[_0x0bfc('0xa')](),controller[_0x0bfc('0xd')]);router[_0x0bfc('0x9')](_0x0bfc('0xe'),auth['isAuthenticated'](),controller[_0x0bfc('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0bfc('0x10')]('/:id/sub_intervals',auth[_0x0bfc('0xa')](),controller['addInterval']);router['post'](_0x0bfc('0x11'),auth[_0x0bfc('0xa')](),controller[_0x0bfc('0x12')]);router[_0x0bfc('0x13')]('/:id',auth[_0x0bfc('0xa')](),controller[_0x0bfc('0x14')]);router[_0x0bfc('0x15')]('/:id',auth[_0x0bfc('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7208f47..25a46a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64d3=['sequelize','exports','STRING'];(function(_0x1c9f90,_0x538898){var _0x2e0c4c=function(_0x458786){while(--_0x458786){_0x1c9f90['push'](_0x1c9f90['shift']());}};_0x2e0c4c(++_0x538898);}(_0x64d3,0xe4));var _0x364d=function(_0x254e46,_0x4ee9b4){_0x254e46=_0x254e46-0x0;var _0x9928e5=_0x64d3[_0x254e46];return _0x9928e5;};'use strict';var Sequelize=require(_0x364d('0x0'));module[_0x364d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x364d('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xdf82=['STRING','exports'];(function(_0xe4bb3d,_0x21e87e){var _0xd9e51=function(_0x1f732b){while(--_0x1f732b){_0xe4bb3d['push'](_0xe4bb3d['shift']());}};_0xd9e51(++_0x21e87e);}(_0xdf82,0xf7));var _0x2df8=function(_0x1488be,_0xe6d984){_0x1488be=_0x1488be-0x0;var _0x15600f=_0xdf82[_0x1488be];return _0x15600f;};'use strict';var Sequelize=require('sequelize');module[_0x2df8('0x0')]={'name':{'type':Sequelize[_0x2df8('0x1')]},'description':{'type':Sequelize[_0x2df8('0x1')]},'interval':{'type':Sequelize[_0x2df8('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 6bee287..5fe5d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85ad=['error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','VIRTUAL','filter','options','Interval','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','addInterval','IntervalId','getIntervals','pick','addIntervals','findOne','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','get','Intervals'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x85ad,0x15f));var _0xd85a=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x85ad[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0xd85a('0x0'));var rimraf=require(_0xd85a('0x1'));var zipdir=require(_0xd85a('0x2'));var jsonpatch=require(_0xd85a('0x3'));var rp=require(_0xd85a('0x4'));var moment=require(_0xd85a('0x5'));var BPromise=require(_0xd85a('0x6'));var Mustache=require('mustache');var util=require(_0xd85a('0x7'));var path=require(_0xd85a('0x8'));var sox=require(_0xd85a('0x9'));var csv=require('to-csv');var ejs=require(_0xd85a('0xa'));var fs=require('fs');var fs_extra=require(_0xd85a('0xb'));var _=require(_0xd85a('0xc'));var squel=require(_0xd85a('0xd'));var crypto=require('crypto');var jsforce=require(_0xd85a('0xe'));var deskjs=require(_0xd85a('0xf'));var toCsv=require(_0xd85a('0x10'));var querystring=require(_0xd85a('0x11'));var Papa=require(_0xd85a('0x12'));var Redis=require(_0xd85a('0x13'));var authService=require(_0xd85a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xd85a('0x15'));var hardwareService=require(_0xd85a('0x16'));var logger=require(_0xd85a('0x17'))(_0xd85a('0x18'));var utils=require(_0xd85a('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xd85a('0x1a'));var db=require(_0xd85a('0x1b'))['db'];var extensions=require(_0xd85a('0x1c'));function respondWithStatusCode(_0x633c75,_0x28b90c){_0x28b90c=_0x28b90c||0xcc;return function(_0x57ade9){if(_0x57ade9){return _0x633c75[_0xd85a('0x1d')](_0x28b90c);}return _0x633c75[_0xd85a('0x1e')](_0x28b90c)[_0xd85a('0x1f')]();};}function respondWithResult(_0x4a94d1,_0xc9728a){_0xc9728a=_0xc9728a||0xc8;return function(_0x50d1f2){if(_0x50d1f2){return _0x4a94d1[_0xd85a('0x1e')](_0xc9728a)[_0xd85a('0x20')](_0x50d1f2);}};}function respondWithFilteredResult(_0x4cf90d,_0x598295){return function(_0x2510ff){if(_0x2510ff){var _0x49c1d4=typeof _0x598295[_0xd85a('0x21')]===_0xd85a('0x22')&&typeof _0x598295['limit']===_0xd85a('0x22');var _0x57041b=_0x2510ff[_0xd85a('0x23')];var _0x5c5dbc=_0x49c1d4?0x0:_0x598295[_0xd85a('0x21')];var _0x47b4aa=_0x49c1d4?_0x2510ff[_0xd85a('0x23')]:_0x598295[_0xd85a('0x21')]+_0x598295[_0xd85a('0x24')];var _0x21f737;if(_0x47b4aa>=_0x57041b){_0x47b4aa=_0x57041b;_0x21f737=0xc8;}else{_0x21f737=0xce;}_0x4cf90d[_0xd85a('0x1e')](_0x21f737);return _0x4cf90d['set'](_0xd85a('0x25'),_0x5c5dbc+'-'+_0x47b4aa+'/'+_0x57041b)[_0xd85a('0x20')](_0x2510ff);}return null;};}function patchUpdates(_0x56c615){return function(_0x4b1660){try{jsonpatch[_0xd85a('0x26')](_0x4b1660,_0x56c615,!![]);}catch(_0xe5b5b7){return BPromise['reject'](_0xe5b5b7);}return _0x4b1660[_0xd85a('0x27')]();};}function saveUpdates(_0x179740,_0x4a92da){return function(_0x45c308){if(_0x45c308){return _0x45c308[_0xd85a('0x28')](_0x179740)[_0xd85a('0x29')](function(_0x5e77c){return _0x5e77c;});}return null;};}function removeEntity(_0x4c19cf,_0x1dc8f5){return function(_0x455c80){if(_0x455c80){return _0x455c80[_0xd85a('0x2a')]()[_0xd85a('0x29')](function(){var _0x3d2da9=_0x455c80[_0xd85a('0x2b')]({'plain':!![]});var _0x258f16=_0xd85a('0x2c');return db['UserProfileResource'][_0xd85a('0x2a')]({'where':{'type':_0x258f16,'resourceId':_0x3d2da9['id']}})[_0xd85a('0x29')](function(){return _0x455c80;});})[_0xd85a('0x29')](function(){_0x4c19cf[_0xd85a('0x1e')](0xcc)[_0xd85a('0x1f')]();});}};}function handleEntityNotFound(_0x21b942,_0x291208){return function(_0x3c8cfa){if(!_0x3c8cfa){_0x21b942[_0xd85a('0x1d')](0x194);}return _0x3c8cfa;};}function handleError(_0x5a5ece,_0x5bb3c7){_0x5bb3c7=_0x5bb3c7||0x1f4;return function(_0x803b37){logger[_0xd85a('0x2d')](_0x803b37[_0xd85a('0x2e')]);if(_0x803b37[_0xd85a('0x2f')]){delete _0x803b37[_0xd85a('0x2f')];}_0x5a5ece[_0xd85a('0x1e')](_0x5bb3c7)[_0xd85a('0x30')](_0x803b37);};}exports[_0xd85a('0x31')]=function(_0x1cc117,_0x23ab1a){var _0x2dd7ef={},_0x42c80c={},_0x84f0b6={'count':0x0,'rows':[]};var _0x5de217=_[_0xd85a('0x32')](db['Interval'][_0xd85a('0x33')],function(_0x423eb9){return{'name':_0x423eb9[_0xd85a('0x34')],'type':_0x423eb9[_0xd85a('0x35')][_0xd85a('0x36')]};});_0x42c80c[_0xd85a('0x37')]=_[_0xd85a('0x32')](_0x5de217,_0xd85a('0x2f'));_0x42c80c[_0xd85a('0x38')]=_[_0xd85a('0x39')](_0x1cc117[_0xd85a('0x38')]);_0x42c80c[_0xd85a('0x3a')]=_[_0xd85a('0x3b')](_0x42c80c['model'],_0x42c80c[_0xd85a('0x38')]);_0x2dd7ef[_0xd85a('0x3c')]=_['intersection'](_0x42c80c[_0xd85a('0x37')],qs[_0xd85a('0x3d')](_0x1cc117['query']['fields']));_0x2dd7ef['attributes']=_0x2dd7ef[_0xd85a('0x3c')][_0xd85a('0x3e')]?_0x2dd7ef[_0xd85a('0x3c')]:_0x42c80c[_0xd85a('0x37')];if(!_0x1cc117[_0xd85a('0x38')][_0xd85a('0x3f')](_0xd85a('0x40'))){_0x2dd7ef[_0xd85a('0x24')]=qs[_0xd85a('0x24')](_0x1cc117[_0xd85a('0x38')]['limit']);_0x2dd7ef[_0xd85a('0x21')]=qs[_0xd85a('0x21')](_0x1cc117[_0xd85a('0x38')]['offset']);}_0x2dd7ef[_0xd85a('0x41')]=qs[_0xd85a('0x42')](_0x1cc117['query'][_0xd85a('0x42')]);_0x2dd7ef['where']=qs[_0xd85a('0x3a')](_['pick'](_0x1cc117[_0xd85a('0x38')],_0x42c80c[_0xd85a('0x3a')]),_0x5de217);if(_0x1cc117[_0xd85a('0x38')]['filter']){_0x2dd7ef['where']=_[_0xd85a('0x43')](_0x2dd7ef[_0xd85a('0x44')],{'$or':_[_0xd85a('0x32')](_0x5de217,function(_0x17f901){if(_0x17f901['type']!==_0xd85a('0x45')){var _0x59cc53={};_0x59cc53[_0x17f901[_0xd85a('0x2f')]]={'$like':'%'+_0x1cc117[_0xd85a('0x38')][_0xd85a('0x46')]+'%'};return _0x59cc53;}})});}_0x2dd7ef=_['merge']({},_0x2dd7ef,_0x1cc117[_0xd85a('0x47')]);var _0x4be5b8={'where':_0x2dd7ef['where']};return db[_0xd85a('0x48')][_0xd85a('0x23')](_0x4be5b8)[_0xd85a('0x29')](function(_0xf2240b){_0x84f0b6[_0xd85a('0x23')]=_0xf2240b;if(_0x1cc117[_0xd85a('0x38')][_0xd85a('0x49')]){_0x2dd7ef[_0xd85a('0x4a')]=[{'all':!![]}];}return db[_0xd85a('0x48')][_0xd85a('0x4b')](_0x2dd7ef);})[_0xd85a('0x29')](function(_0x430936){_0x84f0b6[_0xd85a('0x4c')]=_0x430936;return _0x84f0b6;})[_0xd85a('0x29')](respondWithFilteredResult(_0x23ab1a,_0x2dd7ef))[_0xd85a('0x4d')](handleError(_0x23ab1a,null));};exports[_0xd85a('0x4e')]=function(_0x25431e,_0x460fb4){var _0x40579e={'raw':!![],'where':{'id':_0x25431e[_0xd85a('0x4f')]['id']}},_0x22be86={};_0x22be86[_0xd85a('0x37')]=_[_0xd85a('0x39')](db[_0xd85a('0x48')]['rawAttributes']);_0x22be86['query']=_[_0xd85a('0x39')](_0x25431e[_0xd85a('0x38')]);_0x22be86[_0xd85a('0x3a')]=_[_0xd85a('0x3b')](_0x22be86[_0xd85a('0x37')],_0x22be86[_0xd85a('0x38')]);_0x40579e['attributes']=_['intersection'](_0x22be86[_0xd85a('0x37')],qs[_0xd85a('0x3d')](_0x25431e['query'][_0xd85a('0x3d')]));_0x40579e[_0xd85a('0x3c')]=_0x40579e[_0xd85a('0x3c')][_0xd85a('0x3e')]?_0x40579e['attributes']:_0x22be86[_0xd85a('0x37')];if(_0x25431e[_0xd85a('0x38')][_0xd85a('0x49')]){_0x40579e[_0xd85a('0x4a')]=[{'all':!![]}];}_0x40579e=_['merge']({},_0x40579e,_0x25431e[_0xd85a('0x47')]);return db[_0xd85a('0x48')][_0xd85a('0x50')](_0x40579e)['then'](handleEntityNotFound(_0x460fb4,null))['then'](respondWithResult(_0x460fb4,null))[_0xd85a('0x4d')](handleError(_0x460fb4,null));};exports[_0xd85a('0x51')]=function(_0x454b49,_0x1dec23){return db[_0xd85a('0x48')][_0xd85a('0x51')](_0x454b49[_0xd85a('0x52')],{})[_0xd85a('0x29')](function(_0x5e5650){var _0x2c2904=_0x454b49[_0xd85a('0x53')][_0xd85a('0x2b')]({'plain':!![]});if(!_0x2c2904)throw new Error(_0xd85a('0x54'));if(_0x2c2904[_0xd85a('0x55')]===_0xd85a('0x53')){var _0x585e23=_0x5e5650[_0xd85a('0x2b')]({'plain':!![]});var _0x145ccd=_0xd85a('0x2c');return db[_0xd85a('0x56')][_0xd85a('0x50')]({'where':{'name':_0x145ccd,'userProfileId':_0x2c2904[_0xd85a('0x57')]},'raw':!![]})['then'](function(_0x39f7e5){if(_0x39f7e5&&_0x39f7e5[_0xd85a('0x58')]===0x0){return db[_0xd85a('0x59')][_0xd85a('0x51')]({'name':_0x585e23[_0xd85a('0x2f')],'resourceId':_0x585e23['id'],'type':_0x39f7e5[_0xd85a('0x2f')],'sectionId':_0x39f7e5['id']},{})[_0xd85a('0x29')](function(){return _0x5e5650;});}else{return _0x5e5650;}})['catch'](function(_0xd68844){logger[_0xd85a('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xd68844);throw _0xd68844;});}return _0x5e5650;})[_0xd85a('0x29')](respondWithResult(_0x1dec23,0xc9))[_0xd85a('0x4d')](handleError(_0x1dec23,null));};exports[_0xd85a('0x28')]=function(_0x36eee2,_0x53b86a){if(_0x36eee2[_0xd85a('0x52')]['id']){delete _0x36eee2['body']['id'];}return db[_0xd85a('0x48')][_0xd85a('0x50')]({'where':{'id':_0x36eee2[_0xd85a('0x4f')]['id']}})[_0xd85a('0x29')](handleEntityNotFound(_0x53b86a,null))[_0xd85a('0x29')](saveUpdates(_0x36eee2[_0xd85a('0x52')],null))[_0xd85a('0x29')](respondWithResult(_0x53b86a,null))[_0xd85a('0x4d')](handleError(_0x53b86a,null));};exports[_0xd85a('0x2a')]=function(_0x533493,_0x16ad4c){return db[_0xd85a('0x48')][_0xd85a('0x50')]({'where':{'id':_0x533493[_0xd85a('0x4f')]['id']}})['then'](handleEntityNotFound(_0x16ad4c,null))['then'](removeEntity(_0x16ad4c,null))['catch'](handleError(_0x16ad4c,null));};exports[_0xd85a('0x5a')]=function(_0x86cdd4,_0x36227b,_0x2ac2df){if(_0x86cdd4[_0xd85a('0x52')]['id']){delete _0x86cdd4[_0xd85a('0x52')]['id'];}return db[_0xd85a('0x48')][_0xd85a('0x50')]({'where':{'id':_0x86cdd4[_0xd85a('0x4f')]['id']}})[_0xd85a('0x29')](handleEntityNotFound(_0x36227b,null))[_0xd85a('0x29')](function(_0xc1d5dc){if(_0xc1d5dc){_0x86cdd4[_0xd85a('0x52')][_0xd85a('0x5b')]=_0xc1d5dc['id'];return db['Interval']['create'](_0x86cdd4[_0xd85a('0x52')]);}})[_0xd85a('0x29')](respondWithResult(_0x36227b,null))[_0xd85a('0x4d')](handleError(_0x36227b,null));};exports[_0xd85a('0x5c')]=function(_0x41fbb5,_0x3eb29a,_0x51050d){var _0x179150={};var _0x3cf0db={};var _0x5d2c09;var _0x465b97;return db['Interval']['findOne']({'where':{'id':_0x41fbb5['params']['id']}})['then'](handleEntityNotFound(_0x3eb29a,null))[_0xd85a('0x29')](function(_0x17b18b){if(_0x17b18b){_0x5d2c09=_0x17b18b;_0x3cf0db[_0xd85a('0x37')]=_['keys'](db[_0xd85a('0x48')][_0xd85a('0x33')]);_0x3cf0db[_0xd85a('0x38')]=_['keys'](_0x41fbb5[_0xd85a('0x38')]);_0x3cf0db[_0xd85a('0x3a')]=_['intersection'](_0x3cf0db[_0xd85a('0x37')],_0x3cf0db['query']);_0x179150[_0xd85a('0x3c')]=_[_0xd85a('0x3b')](_0x3cf0db[_0xd85a('0x37')],qs[_0xd85a('0x3d')](_0x41fbb5[_0xd85a('0x38')]['fields']));_0x179150['attributes']=_0x179150[_0xd85a('0x3c')][_0xd85a('0x3e')]?_0x179150['attributes']:_0x3cf0db['model'];_0x179150[_0xd85a('0x41')]=qs[_0xd85a('0x42')](_0x41fbb5[_0xd85a('0x38')][_0xd85a('0x42')]);_0x179150[_0xd85a('0x44')]=qs[_0xd85a('0x3a')](_[_0xd85a('0x5d')](_0x41fbb5[_0xd85a('0x38')],_0x3cf0db[_0xd85a('0x3a')]));if(_0x41fbb5[_0xd85a('0x38')][_0xd85a('0x46')]){_0x179150['where']=_['merge'](_0x179150[_0xd85a('0x44')],{'$or':_[_0xd85a('0x32')](_0x179150['attributes'],function(_0x5bf926){var _0x2527e3={};_0x2527e3[_0x5bf926]={'$like':'%'+_0x41fbb5[_0xd85a('0x38')][_0xd85a('0x46')]+'%'};return _0x2527e3;})});}_0x179150=_[_0xd85a('0x43')]({},_0x179150,_0x41fbb5[_0xd85a('0x47')]);return _0x5d2c09['getIntervals'](_0x179150);}})[_0xd85a('0x29')](function(_0x33e14e){if(_0x33e14e){_0x465b97=_0x33e14e[_0xd85a('0x3e')];if(!_0x41fbb5[_0xd85a('0x38')][_0xd85a('0x3f')](_0xd85a('0x40'))){_0x179150[_0xd85a('0x24')]=qs[_0xd85a('0x24')](_0x41fbb5[_0xd85a('0x38')][_0xd85a('0x24')]);_0x179150[_0xd85a('0x21')]=qs[_0xd85a('0x21')](_0x41fbb5[_0xd85a('0x38')]['offset']);}return _0x5d2c09[_0xd85a('0x5c')](_0x179150);}})[_0xd85a('0x29')](function(_0xe597c2){if(_0xe597c2){return _0xe597c2?{'count':_0x465b97,'rows':_0xe597c2}:null;}})['then'](respondWithResult(_0x3eb29a,null))['catch'](handleError(_0x3eb29a,null));};exports[_0xd85a('0x5e')]=function(_0x2688ea,_0x4d780c,_0x2e58a7){return db['Interval'][_0xd85a('0x5f')]({'where':{'id':_0x2688ea[_0xd85a('0x4f')]['id']}})[_0xd85a('0x29')](handleEntityNotFound(_0x4d780c,null))['then'](function(_0x41d048){if(_0x41d048){return db[_0xd85a('0x60')][_0xd85a('0x61')](function(_0x2d305b){return db[_0xd85a('0x48')][_0xd85a('0x2a')]({'where':{'IntervalId':_0x2688ea['params']['id']},'transaction':_0x2d305b})[_0xd85a('0x29')](function(_0x1c9707){var _0xe4c34b=_[_0xd85a('0x32')](_0x2688ea[_0xd85a('0x52')],function(_0x1c63f1){delete _0x1c63f1['id'];_0x1c63f1[_0xd85a('0x5b')]=_0x2688ea[_0xd85a('0x4f')]['id'];return _0x1c63f1;});return db['Interval'][_0xd85a('0x62')](_0xe4c34b,{'transaction':_0x2d305b});});})[_0xd85a('0x29')](function(){return db[_0xd85a('0x48')][_0xd85a('0x4b')]({'where':{'IntervalId':_0x2688ea[_0xd85a('0x4f')]['id']}});});}})['then'](respondWithResult(_0x4d780c,null))[_0xd85a('0x4d')](handleError(_0x4d780c,null));};
\ No newline at end of file
+var _0xf50e=['query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','user','role','Intervals','UserProfileSection','userProfileId','create','error','addInterval','IntervalId','findOne','order','getIntervals','addIntervals','sequelize','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','Interval','rawAttributes','fieldName','type','model'];(function(_0x2e50a2,_0x27f31e){var _0x47e5de=function(_0x4e1f70){while(--_0x4e1f70){_0x2e50a2['push'](_0x2e50a2['shift']());}};_0x47e5de(++_0x27f31e);}(_0xf50e,0x84));var _0xef50=function(_0x352d28,_0x444033){_0x352d28=_0x352d28-0x0;var _0x387d7e=_0xf50e[_0x352d28];return _0x387d7e;};'use strict';var emlformat=require(_0xef50('0x0'));var rimraf=require(_0xef50('0x1'));var zipdir=require(_0xef50('0x2'));var jsonpatch=require(_0xef50('0x3'));var rp=require(_0xef50('0x4'));var moment=require('moment');var BPromise=require(_0xef50('0x5'));var Mustache=require(_0xef50('0x6'));var util=require('util');var path=require(_0xef50('0x7'));var sox=require(_0xef50('0x8'));var csv=require(_0xef50('0x9'));var ejs=require(_0xef50('0xa'));var fs=require('fs');var fs_extra=require(_0xef50('0xb'));var _=require(_0xef50('0xc'));var squel=require('squel');var crypto=require(_0xef50('0xd'));var jsforce=require(_0xef50('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xef50('0x9'));var querystring=require(_0xef50('0xf'));var Papa=require('papaparse');var Redis=require(_0xef50('0x10'));var authService=require(_0xef50('0x11'));var qs=require(_0xef50('0x12'));var as=require(_0xef50('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef50('0x14'))(_0xef50('0x15'));var utils=require(_0xef50('0x16'));var config=require(_0xef50('0x17'));var licenseUtil=require(_0xef50('0x18'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x55202,_0x3f9f31){_0x3f9f31=_0x3f9f31||0xcc;return function(_0x3c8dd1){if(_0x3c8dd1){return _0x55202[_0xef50('0x19')](_0x3f9f31);}return _0x55202[_0xef50('0x1a')](_0x3f9f31)[_0xef50('0x1b')]();};}function respondWithResult(_0x8327d9,_0xf8f4ec){_0xf8f4ec=_0xf8f4ec||0xc8;return function(_0x3edfe2){if(_0x3edfe2){return _0x8327d9['status'](_0xf8f4ec)[_0xef50('0x1c')](_0x3edfe2);}};}function respondWithFilteredResult(_0x1b2b20,_0x3620da){return function(_0xc5d161){if(_0xc5d161){var _0x336b32=typeof _0x3620da[_0xef50('0x1d')]===_0xef50('0x1e')&&typeof _0x3620da[_0xef50('0x1f')]===_0xef50('0x1e');var _0x2f36ca=_0xc5d161[_0xef50('0x20')];var _0x22b285=_0x336b32?0x0:_0x3620da[_0xef50('0x1d')];var _0x14d70a=_0x336b32?_0xc5d161[_0xef50('0x20')]:_0x3620da[_0xef50('0x1d')]+_0x3620da[_0xef50('0x1f')];var _0x1c3101;if(_0x14d70a>=_0x2f36ca){_0x14d70a=_0x2f36ca;_0x1c3101=0xc8;}else{_0x1c3101=0xce;}_0x1b2b20['status'](_0x1c3101);return _0x1b2b20[_0xef50('0x21')](_0xef50('0x22'),_0x22b285+'-'+_0x14d70a+'/'+_0x2f36ca)[_0xef50('0x1c')](_0xc5d161);}return null;};}function patchUpdates(_0x579019){return function(_0x2e9786){try{jsonpatch[_0xef50('0x23')](_0x2e9786,_0x579019,!![]);}catch(_0x447eb0){return BPromise[_0xef50('0x24')](_0x447eb0);}return _0x2e9786['save']();};}function saveUpdates(_0x4999a8,_0x5e220c){return function(_0x1a6ac5){if(_0x1a6ac5){return _0x1a6ac5[_0xef50('0x25')](_0x4999a8)[_0xef50('0x26')](function(_0x594d7c){return _0x594d7c;});}return null;};}function removeEntity(_0x3448ab,_0x53d0c2){return function(_0x12022d){if(_0x12022d){return _0x12022d[_0xef50('0x27')]()['then'](function(){var _0x3df795=_0x12022d[_0xef50('0x28')]({'plain':!![]});var _0x24752d='Intervals';return db[_0xef50('0x29')][_0xef50('0x27')]({'where':{'type':_0x24752d,'resourceId':_0x3df795['id']}})[_0xef50('0x26')](function(){return _0x12022d;});})[_0xef50('0x26')](function(){_0x3448ab[_0xef50('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x510bf8,_0x1c063c){return function(_0x3dcd4f){if(!_0x3dcd4f){_0x510bf8[_0xef50('0x19')](0x194);}return _0x3dcd4f;};}function handleError(_0x4baa43,_0x5e6605){_0x5e6605=_0x5e6605||0x1f4;return function(_0x7c57a2){logger['error'](_0x7c57a2[_0xef50('0x2a')]);if(_0x7c57a2[_0xef50('0x2b')]){delete _0x7c57a2[_0xef50('0x2b')];}_0x4baa43['status'](_0x5e6605)[_0xef50('0x2c')](_0x7c57a2);};}exports[_0xef50('0x2d')]=function(_0x337efa,_0x4839c3){var _0x17c04b={},_0x5ba70f={},_0x164fa6={'count':0x0,'rows':[]};var _0x2cc621=_[_0xef50('0x2e')](db[_0xef50('0x2f')][_0xef50('0x30')],function(_0x181e90){return{'name':_0x181e90[_0xef50('0x31')],'type':_0x181e90[_0xef50('0x32')]['key']};});_0x5ba70f[_0xef50('0x33')]=_[_0xef50('0x2e')](_0x2cc621,'name');_0x5ba70f[_0xef50('0x34')]=_[_0xef50('0x35')](_0x337efa['query']);_0x5ba70f[_0xef50('0x36')]=_[_0xef50('0x37')](_0x5ba70f['model'],_0x5ba70f[_0xef50('0x34')]);_0x17c04b[_0xef50('0x38')]=_[_0xef50('0x37')](_0x5ba70f[_0xef50('0x33')],qs[_0xef50('0x39')](_0x337efa[_0xef50('0x34')][_0xef50('0x39')]));_0x17c04b[_0xef50('0x38')]=_0x17c04b[_0xef50('0x38')]['length']?_0x17c04b[_0xef50('0x38')]:_0x5ba70f[_0xef50('0x33')];if(!_0x337efa[_0xef50('0x34')][_0xef50('0x3a')](_0xef50('0x3b'))){_0x17c04b[_0xef50('0x1f')]=qs[_0xef50('0x1f')](_0x337efa[_0xef50('0x34')]['limit']);_0x17c04b[_0xef50('0x1d')]=qs['offset'](_0x337efa[_0xef50('0x34')][_0xef50('0x1d')]);}_0x17c04b['order']=qs['sort'](_0x337efa['query'][_0xef50('0x3c')]);_0x17c04b[_0xef50('0x3d')]=qs[_0xef50('0x36')](_[_0xef50('0x3e')](_0x337efa[_0xef50('0x34')],_0x5ba70f[_0xef50('0x36')]),_0x2cc621);if(_0x337efa['query'][_0xef50('0x3f')]){_0x17c04b[_0xef50('0x3d')]=_[_0xef50('0x40')](_0x17c04b[_0xef50('0x3d')],{'$or':_['map'](_0x2cc621,function(_0x3ab5c6){if(_0x3ab5c6[_0xef50('0x32')]!==_0xef50('0x41')){var _0x4f6957={};_0x4f6957[_0x3ab5c6[_0xef50('0x2b')]]={'$like':'%'+_0x337efa[_0xef50('0x34')]['filter']+'%'};return _0x4f6957;}})});}_0x17c04b=_[_0xef50('0x40')]({},_0x17c04b,_0x337efa[_0xef50('0x42')]);var _0x2ef55a={'where':_0x17c04b['where']};return db[_0xef50('0x2f')][_0xef50('0x20')](_0x2ef55a)['then'](function(_0x1281eb){_0x164fa6[_0xef50('0x20')]=_0x1281eb;if(_0x337efa[_0xef50('0x34')][_0xef50('0x43')]){_0x17c04b[_0xef50('0x44')]=[{'all':!![]}];}return db[_0xef50('0x2f')][_0xef50('0x45')](_0x17c04b);})['then'](function(_0x5508dc){_0x164fa6[_0xef50('0x46')]=_0x5508dc;return _0x164fa6;})[_0xef50('0x26')](respondWithFilteredResult(_0x4839c3,_0x17c04b))[_0xef50('0x47')](handleError(_0x4839c3,null));};exports[_0xef50('0x48')]=function(_0x5da451,_0x5c781e){var _0x580feb={'raw':!![],'where':{'id':_0x5da451[_0xef50('0x49')]['id']}},_0x17fcd3={};_0x17fcd3['model']=_[_0xef50('0x35')](db[_0xef50('0x2f')][_0xef50('0x30')]);_0x17fcd3[_0xef50('0x34')]=_[_0xef50('0x35')](_0x5da451[_0xef50('0x34')]);_0x17fcd3['filters']=_['intersection'](_0x17fcd3['model'],_0x17fcd3[_0xef50('0x34')]);_0x580feb['attributes']=_[_0xef50('0x37')](_0x17fcd3[_0xef50('0x33')],qs[_0xef50('0x39')](_0x5da451[_0xef50('0x34')][_0xef50('0x39')]));_0x580feb[_0xef50('0x38')]=_0x580feb['attributes'][_0xef50('0x4a')]?_0x580feb[_0xef50('0x38')]:_0x17fcd3[_0xef50('0x33')];if(_0x5da451['query'][_0xef50('0x43')]){_0x580feb[_0xef50('0x44')]=[{'all':!![]}];}_0x580feb=_[_0xef50('0x40')]({},_0x580feb,_0x5da451[_0xef50('0x42')]);return db[_0xef50('0x2f')][_0xef50('0x4b')](_0x580feb)[_0xef50('0x26')](handleEntityNotFound(_0x5c781e,null))['then'](respondWithResult(_0x5c781e,null))[_0xef50('0x47')](handleError(_0x5c781e,null));};exports['create']=function(_0x1a72c3,_0x15a7f5){return db[_0xef50('0x2f')]['create'](_0x1a72c3[_0xef50('0x4c')],{})[_0xef50('0x26')](function(_0x57fc7f){var _0x57f1a6=_0x1a72c3[_0xef50('0x4d')][_0xef50('0x28')]({'plain':!![]});if(!_0x57f1a6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x57f1a6[_0xef50('0x4e')]===_0xef50('0x4d')){var _0x3e3827=_0x57fc7f['get']({'plain':!![]});var _0x167c12=_0xef50('0x4f');return db[_0xef50('0x50')][_0xef50('0x4b')]({'where':{'name':_0x167c12,'userProfileId':_0x57f1a6[_0xef50('0x51')]},'raw':!![]})['then'](function(_0xabb7e3){if(_0xabb7e3&&_0xabb7e3['autoAssociation']===0x0){return db[_0xef50('0x29')][_0xef50('0x52')]({'name':_0x3e3827['name'],'resourceId':_0x3e3827['id'],'type':_0xabb7e3[_0xef50('0x2b')],'sectionId':_0xabb7e3['id']},{})['then'](function(){return _0x57fc7f;});}else{return _0x57fc7f;}})['catch'](function(_0x54de3c){logger[_0xef50('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x54de3c);throw _0x54de3c;});}return _0x57fc7f;})[_0xef50('0x26')](respondWithResult(_0x15a7f5,0xc9))['catch'](handleError(_0x15a7f5,null));};exports['update']=function(_0x43beed,_0x3c455e){if(_0x43beed[_0xef50('0x4c')]['id']){delete _0x43beed[_0xef50('0x4c')]['id'];}return db[_0xef50('0x2f')][_0xef50('0x4b')]({'where':{'id':_0x43beed[_0xef50('0x49')]['id']}})[_0xef50('0x26')](handleEntityNotFound(_0x3c455e,null))[_0xef50('0x26')](saveUpdates(_0x43beed[_0xef50('0x4c')],null))[_0xef50('0x26')](respondWithResult(_0x3c455e,null))['catch'](handleError(_0x3c455e,null));};exports[_0xef50('0x27')]=function(_0xa18c2a,_0x250c01){return db[_0xef50('0x2f')][_0xef50('0x4b')]({'where':{'id':_0xa18c2a[_0xef50('0x49')]['id']}})[_0xef50('0x26')](handleEntityNotFound(_0x250c01,null))[_0xef50('0x26')](removeEntity(_0x250c01,null))[_0xef50('0x47')](handleError(_0x250c01,null));};exports[_0xef50('0x54')]=function(_0x13ef2c,_0x40ff7a,_0x21d56a){if(_0x13ef2c[_0xef50('0x4c')]['id']){delete _0x13ef2c[_0xef50('0x4c')]['id'];}return db[_0xef50('0x2f')][_0xef50('0x4b')]({'where':{'id':_0x13ef2c[_0xef50('0x49')]['id']}})[_0xef50('0x26')](handleEntityNotFound(_0x40ff7a,null))[_0xef50('0x26')](function(_0x113383){if(_0x113383){_0x13ef2c[_0xef50('0x4c')][_0xef50('0x55')]=_0x113383['id'];return db[_0xef50('0x2f')]['create'](_0x13ef2c[_0xef50('0x4c')]);}})[_0xef50('0x26')](respondWithResult(_0x40ff7a,null))['catch'](handleError(_0x40ff7a,null));};exports['getIntervals']=function(_0x5c9084,_0xf352a3,_0x63d664){var _0xda9be={};var _0x524cd6={};var _0x29afda;var _0x541fd3;return db[_0xef50('0x2f')][_0xef50('0x56')]({'where':{'id':_0x5c9084[_0xef50('0x49')]['id']}})[_0xef50('0x26')](handleEntityNotFound(_0xf352a3,null))[_0xef50('0x26')](function(_0x870d6d){if(_0x870d6d){_0x29afda=_0x870d6d;_0x524cd6[_0xef50('0x33')]=_[_0xef50('0x35')](db[_0xef50('0x2f')][_0xef50('0x30')]);_0x524cd6[_0xef50('0x34')]=_[_0xef50('0x35')](_0x5c9084[_0xef50('0x34')]);_0x524cd6[_0xef50('0x36')]=_['intersection'](_0x524cd6[_0xef50('0x33')],_0x524cd6['query']);_0xda9be['attributes']=_[_0xef50('0x37')](_0x524cd6[_0xef50('0x33')],qs[_0xef50('0x39')](_0x5c9084['query']['fields']));_0xda9be[_0xef50('0x38')]=_0xda9be[_0xef50('0x38')][_0xef50('0x4a')]?_0xda9be[_0xef50('0x38')]:_0x524cd6[_0xef50('0x33')];_0xda9be[_0xef50('0x57')]=qs[_0xef50('0x3c')](_0x5c9084['query']['sort']);_0xda9be['where']=qs[_0xef50('0x36')](_[_0xef50('0x3e')](_0x5c9084[_0xef50('0x34')],_0x524cd6[_0xef50('0x36')]));if(_0x5c9084['query'][_0xef50('0x3f')]){_0xda9be[_0xef50('0x3d')]=_['merge'](_0xda9be['where'],{'$or':_[_0xef50('0x2e')](_0xda9be[_0xef50('0x38')],function(_0xe9f8d6){var _0x44d3de={};_0x44d3de[_0xe9f8d6]={'$like':'%'+_0x5c9084['query'][_0xef50('0x3f')]+'%'};return _0x44d3de;})});}_0xda9be=_[_0xef50('0x40')]({},_0xda9be,_0x5c9084[_0xef50('0x42')]);return _0x29afda[_0xef50('0x58')](_0xda9be);}})[_0xef50('0x26')](function(_0x2879f0){if(_0x2879f0){_0x541fd3=_0x2879f0[_0xef50('0x4a')];if(!_0x5c9084[_0xef50('0x34')][_0xef50('0x3a')](_0xef50('0x3b'))){_0xda9be[_0xef50('0x1f')]=qs[_0xef50('0x1f')](_0x5c9084['query'][_0xef50('0x1f')]);_0xda9be[_0xef50('0x1d')]=qs[_0xef50('0x1d')](_0x5c9084[_0xef50('0x34')][_0xef50('0x1d')]);}return _0x29afda[_0xef50('0x58')](_0xda9be);}})[_0xef50('0x26')](function(_0x150043){if(_0x150043){return _0x150043?{'count':_0x541fd3,'rows':_0x150043}:null;}})[_0xef50('0x26')](respondWithResult(_0xf352a3,null))[_0xef50('0x47')](handleError(_0xf352a3,null));};exports[_0xef50('0x59')]=function(_0x380054,_0x52bec9,_0x3b6cb0){return db[_0xef50('0x2f')]['findOne']({'where':{'id':_0x380054[_0xef50('0x49')]['id']}})['then'](handleEntityNotFound(_0x52bec9,null))[_0xef50('0x26')](function(_0x4ad42e){if(_0x4ad42e){return db[_0xef50('0x5a')]['transaction'](function(_0x1e462c){return db[_0xef50('0x2f')][_0xef50('0x27')]({'where':{'IntervalId':_0x380054['params']['id']},'transaction':_0x1e462c})[_0xef50('0x26')](function(_0x544172){var _0x43f1a6=_[_0xef50('0x2e')](_0x380054[_0xef50('0x4c')],function(_0xf821ef){delete _0xf821ef['id'];_0xf821ef[_0xef50('0x55')]=_0x380054[_0xef50('0x49')]['id'];return _0xf821ef;});return db[_0xef50('0x2f')][_0xef50('0x5b')](_0x43f1a6,{'transaction':_0x1e462c});});})[_0xef50('0x26')](function(){return db[_0xef50('0x2f')][_0xef50('0x45')]({'where':{'IntervalId':_0x380054[_0xef50('0x49')]['id']}});});}})['then'](respondWithResult(_0x52bec9,null))['catch'](handleError(_0x52bec9,null));};
\ No newline at end of file
index d7be1f4..9b797fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4f1=['string','getIntervals','map','then','reduce','./interval.attributes','../../utils/iftime','iftime','define','Interval','tools_intervals','rewrite','interval'];(function(_0x2c5c0c,_0x13a005){var _0x2193e9=function(_0x4114ac){while(--_0x4114ac){_0x2c5c0c['push'](_0x2c5c0c['shift']());}};_0x2193e9(++_0x13a005);}(_0xa4f1,0x123));var _0x1a4f=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xa4f1[_0x59ee6f];return _0x4c0979;};'use strict';var attributes=require(_0x1a4f('0x0'));var extensions=require('../../components/extensions/rewrite');var iftime=require(_0x1a4f('0x1'))[_0x1a4f('0x2')];module['exports']=function(_0x6c5f5b){return _0x6c5f5b[_0x1a4f('0x3')](_0x1a4f('0x4'),attributes,{'tableName':_0x1a4f('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x42e8ff){extensions[_0x1a4f('0x6')](_0x6c5f5b,_0x42e8ff);},'afterBulkCreate':function(_0x431371,_0x218b04,_0x27502f){_0x27502f();extensions[_0x1a4f('0x6')](_0x6c5f5b,_0x431371[0x0]);},'afterUpdate':function(_0x27f3e2){extensions['rewrite'](_0x6c5f5b,_0x27f3e2);},'afterDestroy':function(_0x4f7bd7){extensions[_0x1a4f('0x6')](_0x6c5f5b,_0x4f7bd7);}},'instanceMethods':{'ifTime':function(_0x40702e=undefined,_0x1d905a=new Date()){if(typeof this[_0x1a4f('0x7')]===_0x1a4f('0x8')){return iftime(this[_0x1a4f('0x7')],_0x40702e,_0x1d905a);}else{return this[_0x1a4f('0x9')]()['then'](function(_0x31c019){return Promise['all'](_0x31c019[_0x1a4f('0xa')](function(_0x3ffebc){return _0x3ffebc['ifTime'](_0x40702e,_0x1d905a);}));})[_0x1a4f('0xb')](function(_0x56e2cb){return _0x56e2cb[_0x1a4f('0xc')](function(_0x36db79,_0x103687){return _0x36db79||_0x103687;},![]);});}}}});};
\ No newline at end of file
+var _0xb629=['../../utils/iftime','exports','define','Interval','tools_intervals','rewrite','interval','string','getIntervals','then','all','ifTime','reduce','../../components/extensions/rewrite'];(function(_0x518c9a,_0x8bb392){var _0xf873d1=function(_0x1f3e28){while(--_0x1f3e28){_0x518c9a['push'](_0x518c9a['shift']());}};_0xf873d1(++_0x8bb392);}(_0xb629,0xa7));var _0x9b62=function(_0x27d387,_0x34cbfc){_0x27d387=_0x27d387-0x0;var _0x17ba46=_0xb629[_0x27d387];return _0x17ba46;};'use strict';var attributes=require('./interval.attributes');var extensions=require(_0x9b62('0x0'));var iftime=require(_0x9b62('0x1'))['iftime'];module[_0x9b62('0x2')]=function(_0x347e81){return _0x347e81[_0x9b62('0x3')](_0x9b62('0x4'),attributes,{'tableName':_0x9b62('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x21881d){extensions[_0x9b62('0x6')](_0x347e81,_0x21881d);},'afterBulkCreate':function(_0x437a8a,_0x55adbd,_0x2aa787){_0x2aa787();extensions['rewrite'](_0x347e81,_0x437a8a[0x0]);},'afterUpdate':function(_0x5c3c2f){extensions['rewrite'](_0x347e81,_0x5c3c2f);},'afterDestroy':function(_0x52b6a7){extensions[_0x9b62('0x6')](_0x347e81,_0x52b6a7);}},'instanceMethods':{'ifTime':function(_0xfe49f5=undefined,_0x252125=new Date()){if(typeof this[_0x9b62('0x7')]===_0x9b62('0x8')){return iftime(this[_0x9b62('0x7')],_0xfe49f5,_0x252125);}else{return this[_0x9b62('0x9')]()[_0x9b62('0xa')](function(_0x3b63fc){return Promise[_0x9b62('0xb')](_0x3b63fc['map'](function(_0x304cef){return _0x304cef[_0x9b62('0xc')](_0xfe49f5,_0x252125);}));})['then'](function(_0x43e071){return _0x43e071[_0x9b62('0xd')](function(_0x448c70,_0xa462a5){return _0x448c70||_0xa462a5;},![]);});}}}});};
\ No newline at end of file
index 149e232..9cdd1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa21a=['Interval','all','ifTime','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','join','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','name','IntervalIftime','intervalIds','isArray','intervals','string','timezone','length','IntervalIftime:\x20timezone\x20=\x20%s','silly','lodash','util','../../mysqldb','../../utils/iftime','iftime','../../config/logger','rpc','GetInterval','findAll','options','raw','where','attributes','limit','include','map','model','then','info','debug','stringify','error','message','ShowInterval','catch'];(function(_0x178b6d,_0x3f74f9){var _0x4766a1=function(_0x5ce3a2){while(--_0x5ce3a2){_0x178b6d['push'](_0x178b6d['shift']());}};_0x4766a1(++_0x3f74f9);}(_0xa21a,0x137));var _0xaa21=function(_0x243f59,_0xa37ed7){_0x243f59=_0x243f59-0x0;var _0x1c3e77=_0xa21a[_0x243f59];return _0x1c3e77;};'use strict';var _=require(_0xaa21('0x0'));var util=require(_0xaa21('0x1'));var db=require(_0xaa21('0x2'))['db'];var iftime=require(_0xaa21('0x3'))[_0xaa21('0x4')];var logger=require(_0xaa21('0x5'))(_0xaa21('0x6'));exports[_0xaa21('0x7')]=function(_0x4c2238){var _0x1ae350=this;return new Promise(function(_0x49c178,_0x58d310){return db['Interval'][_0xaa21('0x8')]({'raw':_0x4c2238['options']?_0x4c2238[_0xaa21('0x9')][_0xaa21('0xa')]===undefined?!![]:![]:!![],'where':_0x4c2238[_0xaa21('0x9')]?_0x4c2238[_0xaa21('0x9')][_0xaa21('0xb')]||null:null,'attributes':_0x4c2238[_0xaa21('0x9')]?_0x4c2238['options'][_0xaa21('0xc')]||null:null,'limit':_0x4c2238[_0xaa21('0x9')]?_0x4c2238[_0xaa21('0x9')][_0xaa21('0xd')]||null:null,'include':_0x4c2238[_0xaa21('0x9')]?_0x4c2238[_0xaa21('0x9')][_0xaa21('0xe')]?_[_0xaa21('0xf')](_0x4c2238['options']['include'],function(_0x4189a0){return{'model':db[_0x4189a0[_0xaa21('0x10')]],'as':_0x4189a0['as'],'attributes':_0x4189a0[_0xaa21('0xc')],'include':_0x4189a0[_0xaa21('0xe')]?_[_0xaa21('0xf')](_0x4189a0[_0xaa21('0xe')],function(_0x1de08d){return{'model':db[_0x1de08d['model']],'as':_0x1de08d['as'],'attributes':_0x1de08d['attributes'],'include':_0x1de08d['include']?_[_0xaa21('0xf')](_0x1de08d[_0xaa21('0xe')],function(_0x449adf){return{'model':db[_0x449adf['model']],'as':_0x449adf['as'],'attributes':_0x449adf[_0xaa21('0xc')]};}):[]};}):[]};}):[]:[]})[_0xaa21('0x11')](function(_0x513b11){logger[_0xaa21('0x12')]('GetInterval',_0x4c2238);logger[_0xaa21('0x13')](_0xaa21('0x7'),_0x4c2238,JSON[_0xaa21('0x14')](_0x513b11));_0x49c178(_0x513b11);})['catch'](function(_0x1fd97b){logger[_0xaa21('0x15')](_0xaa21('0x7'),_0x1fd97b[_0xaa21('0x16')],_0x4c2238);_0x58d310(_0x1ae350[_0xaa21('0x15')](0x1f4,_0x1fd97b[_0xaa21('0x16')]));});});};exports['ShowInterval']=function(_0x24039c){var _0x41d3d6=this;return new Promise(function(_0x5ad615,_0x5e9c20){return db['Interval']['find']({'raw':_0x24039c[_0xaa21('0x9')]?_0x24039c[_0xaa21('0x9')][_0xaa21('0xa')]===undefined?!![]:![]:!![],'where':_0x24039c[_0xaa21('0x9')]?_0x24039c[_0xaa21('0x9')][_0xaa21('0xb')]||null:null,'attributes':_0x24039c['options']?_0x24039c[_0xaa21('0x9')][_0xaa21('0xc')]||null:null,'include':_0x24039c['options']?_0x24039c[_0xaa21('0x9')][_0xaa21('0xe')]?_[_0xaa21('0xf')](_0x24039c[_0xaa21('0x9')][_0xaa21('0xe')],function(_0x38669a){return{'model':db[_0x38669a[_0xaa21('0x10')]],'as':_0x38669a['as'],'attributes':_0x38669a[_0xaa21('0xc')],'include':_0x38669a[_0xaa21('0xe')]?_[_0xaa21('0xf')](_0x38669a['include'],function(_0xcff0a3){return{'model':db[_0xcff0a3['model']],'as':_0xcff0a3['as'],'attributes':_0xcff0a3[_0xaa21('0xc')],'include':_0xcff0a3[_0xaa21('0xe')]?_[_0xaa21('0xf')](_0xcff0a3[_0xaa21('0xe')],function(_0x142a3e){return{'model':db[_0x142a3e[_0xaa21('0x10')]],'as':_0x142a3e['as'],'attributes':_0x142a3e[_0xaa21('0xc')]};}):[]};}):[]};}):[]:[]})[_0xaa21('0x11')](function(_0x58d423){logger[_0xaa21('0x12')](_0xaa21('0x17'),_0x24039c);logger['debug'](_0xaa21('0x17'),_0x24039c,JSON[_0xaa21('0x14')](_0x58d423));_0x5ad615(_0x58d423);})[_0xaa21('0x18')](function(_0x431aa7){logger[_0xaa21('0x15')](_0xaa21('0x17'),_0x431aa7[_0xaa21('0x16')],_0x24039c);_0x5e9c20(_0x41d3d6[_0xaa21('0x15')](0x1f4,_0x431aa7[_0xaa21('0x16')]));});});};function checkArrayOfIntervals(_0x42ace1,_0x2b69df){var _0x204fb3=[];return db[_0xaa21('0x19')][_0xaa21('0x8')]({'where':{'id':_0x42ace1}})['then'](function(_0x2fb13d){_0x204fb3=_0x2fb13d;return Promise[_0xaa21('0x1a')](_0x204fb3[_0xaa21('0xf')](function(_0x1b2070){return _0x1b2070[_0xaa21('0x1b')](_0x2b69df);}));})['then'](function(_0x5f520e){var _0x38fd12=_0x5f520e['reduce'](function(_0x1b6b1a,_0x379f84){return _0x1b6b1a||_0x379f84;},![]);logger[_0xaa21('0x12')](util[_0xaa21('0x1c')](_0xaa21('0x1d'),_0x204fb3[_0xaa21('0xf')](function(_0x47266a){return _0x47266a['name'];})[_0xaa21('0x1e')](',\x20'),_0x204fb3[_0xaa21('0xf')](function(_0x160c3a){return _0x160c3a['id'];})[_0xaa21('0x1e')](',\x20')));return _0x38fd12;});}function checkSingleInterval(_0xef4ca1,_0xbc53b1){return db[_0xaa21('0x19')]['findById'](_0xef4ca1)[_0xaa21('0x11')](function(_0x3062ae){if(_0x3062ae){logger[_0xaa21('0x12')](util['format'](_0xaa21('0x1f'),_0x3062ae[_0xaa21('0x20')],_0x3062ae['id']));return _0x3062ae['ifTime'](_0xbc53b1);}});}exports[_0xaa21('0x21')]=function(_0x17e1f2){var _0x200df3=_0x17e1f2[_0xaa21('0x22')];var _0x37eade=Array[_0xaa21('0x23')](_0x17e1f2[_0xaa21('0x24')])?_0x17e1f2[_0xaa21('0x24')]:typeof _0x17e1f2[_0xaa21('0x24')]===_0xaa21('0x25')?[_0x17e1f2[_0xaa21('0x24')]]:[];var _0x5cfda2=_0x17e1f2[_0xaa21('0x26')]||undefined;var _0x53a90c=![];if(_0x37eade[_0xaa21('0x27')]){logger[_0xaa21('0x12')](util[_0xaa21('0x1c')]('IntervalIftime:\x20interval\x20strings\x20=\x20%s',_0x37eade[_0xaa21('0x1e')](';\x20')));}if(_0x5cfda2){logger[_0xaa21('0x12')](util['format'](_0xaa21('0x28'),_0x5cfda2));}logger['debug']('Iftime',_0x53a90c);logger[_0xaa21('0x29')](_0xaa21('0x21'),_0x17e1f2);return Promise['resolve']()['then'](function(){if(Array[_0xaa21('0x23')](_0x200df3)){return checkArrayOfIntervals(_0x200df3,_0x5cfda2);}else if(_0x200df3){return checkSingleInterval(_0x200df3,_0x5cfda2);}})['then'](function(_0x1cd0c0){var _0x22d79b=_0x37eade['reduce'](function(_0x13d305,_0x3f6dd8){return _0x13d305||iftime(_0x3f6dd8,_0x5cfda2);},![]);_0x53a90c=_0x1cd0c0||_0x22d79b;return _0x53a90c;})['catch'](function(_0x1855b1){logger[_0xaa21('0x15')](_0xaa21('0x21'),_0x17e1f2,_0x1855b1);throw this['error'](0x1f4,_0x1855b1[_0xaa21('0x16')]);});};
\ No newline at end of file
+var _0xeb9e=['silly','resolve','lodash','util','../../mysqldb','../../utils/iftime','rpc','Interval','options','raw','limit','map','model','include','attributes','then','GetInterval','stringify','catch','error','message','ShowInterval','find','where','info','reduce','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','name','join','findById','format','ifTime','IntervalIftime','intervalIds','isArray','intervals','string','timezone','length','IntervalIftime:\x20interval\x20strings\x20=\x20%s','IntervalIftime:\x20timezone\x20=\x20%s','Iftime'];(function(_0x10e8f3,_0x2c0247){var _0x4eadaf=function(_0x3f98ef){while(--_0x3f98ef){_0x10e8f3['push'](_0x10e8f3['shift']());}};_0x4eadaf(++_0x2c0247);}(_0xeb9e,0xd4));var _0xeeb9=function(_0x20d7fd,_0x2fa278){_0x20d7fd=_0x20d7fd-0x0;var _0x32773b=_0xeb9e[_0x20d7fd];return _0x32773b;};'use strict';var _=require(_0xeeb9('0x0'));var util=require(_0xeeb9('0x1'));var db=require(_0xeeb9('0x2'))['db'];var iftime=require(_0xeeb9('0x3'))['iftime'];var logger=require('../../config/logger')(_0xeeb9('0x4'));exports['GetInterval']=function(_0x32ee22){var _0x4e7abb=this;return new Promise(function(_0x2564e3,_0xc09406){return db[_0xeeb9('0x5')]['findAll']({'raw':_0x32ee22[_0xeeb9('0x6')]?_0x32ee22[_0xeeb9('0x6')][_0xeeb9('0x7')]===undefined?!![]:![]:!![],'where':_0x32ee22['options']?_0x32ee22[_0xeeb9('0x6')]['where']||null:null,'attributes':_0x32ee22[_0xeeb9('0x6')]?_0x32ee22[_0xeeb9('0x6')]['attributes']||null:null,'limit':_0x32ee22[_0xeeb9('0x6')]?_0x32ee22[_0xeeb9('0x6')][_0xeeb9('0x8')]||null:null,'include':_0x32ee22[_0xeeb9('0x6')]?_0x32ee22[_0xeeb9('0x6')]['include']?_[_0xeeb9('0x9')](_0x32ee22['options']['include'],function(_0x1f62c6){return{'model':db[_0x1f62c6[_0xeeb9('0xa')]],'as':_0x1f62c6['as'],'attributes':_0x1f62c6['attributes'],'include':_0x1f62c6[_0xeeb9('0xb')]?_[_0xeeb9('0x9')](_0x1f62c6[_0xeeb9('0xb')],function(_0x5d82a1){return{'model':db[_0x5d82a1[_0xeeb9('0xa')]],'as':_0x5d82a1['as'],'attributes':_0x5d82a1[_0xeeb9('0xc')],'include':_0x5d82a1[_0xeeb9('0xb')]?_[_0xeeb9('0x9')](_0x5d82a1[_0xeeb9('0xb')],function(_0x5736b8){return{'model':db[_0x5736b8['model']],'as':_0x5736b8['as'],'attributes':_0x5736b8[_0xeeb9('0xc')]};}):[]};}):[]};}):[]:[]})[_0xeeb9('0xd')](function(_0x4337e1){logger['info'](_0xeeb9('0xe'),_0x32ee22);logger['debug'](_0xeeb9('0xe'),_0x32ee22,JSON[_0xeeb9('0xf')](_0x4337e1));_0x2564e3(_0x4337e1);})[_0xeeb9('0x10')](function(_0x448693){logger[_0xeeb9('0x11')](_0xeeb9('0xe'),_0x448693[_0xeeb9('0x12')],_0x32ee22);_0xc09406(_0x4e7abb[_0xeeb9('0x11')](0x1f4,_0x448693['message']));});});};exports[_0xeeb9('0x13')]=function(_0x5b6ba1){var _0x2b7b62=this;return new Promise(function(_0x433828,_0x40ba7e){return db[_0xeeb9('0x5')][_0xeeb9('0x14')]({'raw':_0x5b6ba1[_0xeeb9('0x6')]?_0x5b6ba1[_0xeeb9('0x6')]['raw']===undefined?!![]:![]:!![],'where':_0x5b6ba1['options']?_0x5b6ba1[_0xeeb9('0x6')][_0xeeb9('0x15')]||null:null,'attributes':_0x5b6ba1[_0xeeb9('0x6')]?_0x5b6ba1[_0xeeb9('0x6')][_0xeeb9('0xc')]||null:null,'include':_0x5b6ba1[_0xeeb9('0x6')]?_0x5b6ba1[_0xeeb9('0x6')][_0xeeb9('0xb')]?_['map'](_0x5b6ba1[_0xeeb9('0x6')]['include'],function(_0x33a88a){return{'model':db[_0x33a88a['model']],'as':_0x33a88a['as'],'attributes':_0x33a88a[_0xeeb9('0xc')],'include':_0x33a88a[_0xeeb9('0xb')]?_[_0xeeb9('0x9')](_0x33a88a[_0xeeb9('0xb')],function(_0x4ffa33){return{'model':db[_0x4ffa33[_0xeeb9('0xa')]],'as':_0x4ffa33['as'],'attributes':_0x4ffa33[_0xeeb9('0xc')],'include':_0x4ffa33[_0xeeb9('0xb')]?_['map'](_0x4ffa33[_0xeeb9('0xb')],function(_0x1d46fe){return{'model':db[_0x1d46fe['model']],'as':_0x1d46fe['as'],'attributes':_0x1d46fe[_0xeeb9('0xc')]};}):[]};}):[]};}):[]:[]})[_0xeeb9('0xd')](function(_0x8017bd){logger[_0xeeb9('0x16')]('ShowInterval',_0x5b6ba1);logger['debug']('ShowInterval',_0x5b6ba1,JSON[_0xeeb9('0xf')](_0x8017bd));_0x433828(_0x8017bd);})[_0xeeb9('0x10')](function(_0x302ee2){logger['error'](_0xeeb9('0x13'),_0x302ee2[_0xeeb9('0x12')],_0x5b6ba1);_0x40ba7e(_0x2b7b62['error'](0x1f4,_0x302ee2[_0xeeb9('0x12')]));});});};function checkArrayOfIntervals(_0x3b3ef1,_0x4270c8){var _0x4b7424=[];return db['Interval']['findAll']({'where':{'id':_0x3b3ef1}})[_0xeeb9('0xd')](function(_0xfb755b){_0x4b7424=_0xfb755b;return Promise['all'](_0x4b7424[_0xeeb9('0x9')](function(_0xefa793){return _0xefa793['ifTime'](_0x4270c8);}));})[_0xeeb9('0xd')](function(_0x5b074e){var _0x348e35=_0x5b074e[_0xeeb9('0x17')](function(_0x181199,_0x5b235f){return _0x181199||_0x5b235f;},![]);logger[_0xeeb9('0x16')](util['format'](_0xeeb9('0x18'),_0x4b7424[_0xeeb9('0x9')](function(_0x94dd7d){return _0x94dd7d[_0xeeb9('0x19')];})[_0xeeb9('0x1a')](',\x20'),_0x4b7424[_0xeeb9('0x9')](function(_0x18794e){return _0x18794e['id'];})[_0xeeb9('0x1a')](',\x20')));return _0x348e35;});}function checkSingleInterval(_0x3dade3,_0x364d94){return db['Interval'][_0xeeb9('0x1b')](_0x3dade3)[_0xeeb9('0xd')](function(_0x433ab7){if(_0x433ab7){logger[_0xeeb9('0x16')](util[_0xeeb9('0x1c')]('IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)',_0x433ab7[_0xeeb9('0x19')],_0x433ab7['id']));return _0x433ab7[_0xeeb9('0x1d')](_0x364d94);}});}exports[_0xeeb9('0x1e')]=function(_0x39d546){var _0x18e79f=_0x39d546[_0xeeb9('0x1f')];var _0x1431f7=Array[_0xeeb9('0x20')](_0x39d546['intervals'])?_0x39d546[_0xeeb9('0x21')]:typeof _0x39d546[_0xeeb9('0x21')]===_0xeeb9('0x22')?[_0x39d546['intervals']]:[];var _0x28fb07=_0x39d546[_0xeeb9('0x23')]||undefined;var _0x286292=![];if(_0x1431f7[_0xeeb9('0x24')]){logger['info'](util[_0xeeb9('0x1c')](_0xeeb9('0x25'),_0x1431f7[_0xeeb9('0x1a')](';\x20')));}if(_0x28fb07){logger[_0xeeb9('0x16')](util[_0xeeb9('0x1c')](_0xeeb9('0x26'),_0x28fb07));}logger['debug'](_0xeeb9('0x27'),_0x286292);logger[_0xeeb9('0x28')](_0xeeb9('0x1e'),_0x39d546);return Promise[_0xeeb9('0x29')]()[_0xeeb9('0xd')](function(){if(Array[_0xeeb9('0x20')](_0x18e79f)){return checkArrayOfIntervals(_0x18e79f,_0x28fb07);}else if(_0x18e79f){return checkSingleInterval(_0x18e79f,_0x28fb07);}})['then'](function(_0x35fa20){var _0x437a73=_0x1431f7[_0xeeb9('0x17')](function(_0x5ecad8,_0x4bb9a5){return _0x5ecad8||iftime(_0x4bb9a5,_0x28fb07);},![]);_0x286292=_0x35fa20||_0x437a73;return _0x286292;})[_0xeeb9('0x10')](function(_0x405678){logger[_0xeeb9('0x11')](_0xeeb9('0x1e'),_0x39d546,_0x405678);throw this[_0xeeb9('0x11')](0x1f4,_0x405678[_0xeeb9('0x12')]);});};
\ No newline at end of file
index c0bc98e..0b7e8ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0xb1750a,_0x52d0bd){var _0x33b46a=function(_0x39d5dc){while(--_0x39d5dc){_0xb1750a['push'](_0xb1750a['shift']());}};_0x33b46a(++_0x52d0bd);}(_0xdb28,0x106));var _0x8db2=function(_0xb0e4bf,_0x39404b){_0xb0e4bf=_0xb0e4bf-0x0;var _0x39c271=_0xdb28[_0xb0e4bf];return _0x39c271;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
+var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xb10b,0x12a));var _0xbb10=function(_0xf5fbb7,_0xdb7f69){_0xf5fbb7=_0xf5fbb7-0x0;var _0x330d55=_0xb10b[_0xf5fbb7];return _0x330d55;};'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
index c938b0d..a0085bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5de4=['customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','base64','request','utf8','data','statusCode','json','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','headers','x-forwarded-for','connection','socket','bluebird','https','api','support','key','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503'];(function(_0x891c3d,_0x4be861){var _0x176c27=function(_0x3d6126){while(--_0x3d6126){_0x891c3d['push'](_0x891c3d['shift']());}};_0x176c27(++_0x4be861);}(_0x5de4,0x127));var _0x45de=function(_0x153cf5,_0x1b7386){_0x153cf5=_0x153cf5-0x0;var _0x6e5517=_0x5de4[_0x153cf5];return _0x6e5517;};'use strict';var BPromise=require(_0x45de('0x0'));var https=require(_0x45de('0x1'));var logger=require('../../config/logger')(_0x45de('0x2'));var USERNAME=_0x45de('0x3');var PASSWORD='3eAmWpBVP0';function openIssue(_0x3d8657,_0x1d276d){var _0x378c1e={'fields':{'project':{'key':_0x3d8657[_0x45de('0x4')]||'MOTGUI'},'summary':(_0x3d8657[_0x45de('0x5')]||_0x45de('0x6'))+_0x45de('0x7')+_0x3d8657['ip'],'description':_0x3d8657[_0x45de('0x8')]||JSON[_0x45de('0x9')](_0x3d8657),'issuetype':{'name':_0x3d8657[_0x45de('0xa')]||_0x45de('0xb')}}};_0x378c1e[_0x45de('0xc')][_0x45de('0xd')]=_0x3d8657[_0x45de('0xe')];_0x378c1e[_0x45de('0xc')][_0x45de('0xf')]=_0x3d8657[_0x45de('0x10')];_0x378c1e[_0x45de('0xc')][_0x45de('0x11')]=_0x3d8657[_0x45de('0x12')];_0x378c1e[_0x45de('0xc')][_0x45de('0x13')]=_0x3d8657['name'];_0x378c1e[_0x45de('0xc')][_0x45de('0x14')]=_0x3d8657[_0x45de('0x15')];_0x378c1e[_0x45de('0xc')][_0x45de('0x16')]=_0x3d8657['ip'];var _0x1ecc06={'host':_0x45de('0x17'),'port':0x1bb,'path':_0x45de('0x18'),'method':_0x45de('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x45de('0x1a'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x45de('0x1b'))}};var _0x557ba5=JSON['stringify'](_0x378c1e);var _0x46c70c=https[_0x45de('0x1c')](_0x1ecc06,function(_0x1bb45d){_0x1bb45d['setEncoding'](_0x45de('0x1d'));var _0x48284e='';_0x1bb45d['on'](_0x45de('0x1e'),function(_0x23d56f){_0x48284e+=_0x23d56f;});_0x1bb45d['on']('end',function(){if(_0x1d276d){return _0x1d276d['status'](_0x1bb45d[_0x45de('0x1f')])[_0x45de('0x20')](JSON[_0x45de('0x21')](_0x48284e));}});});_0x46c70c['on'](_0x45de('0x22'),function(_0x6047f9){if(_0x1d276d){return _0x1d276d[_0x45de('0x23')](0x1f4)['json']({'errors':[{'message':_0x45de('0x24'),'type':_0x45de('0x25')}]});}});_0x46c70c[_0x45de('0x26')](_0x557ba5);_0x46c70c['end']();}exports[_0x45de('0x27')]=openIssue;exports[_0x45de('0x28')]=function(_0x63e1df,_0x2cafbc){_0x63e1df['body']['ip']=_0x63e1df[_0x45de('0x29')][_0x45de('0x2a')]||_0x63e1df[_0x45de('0x2b')]['remoteAddress']||_0x63e1df[_0x45de('0x2c')]['remoteAddress']||_0x63e1df['connection'][_0x45de('0x2c')]['remoteAddress'];return openIssue(_0x63e1df['body'],_0x2cafbc);};
\ No newline at end of file
+var _0x289d=['connection','remoteAddress','socket','bluebird','https','support','3eAmWpBVP0','MOTGUI','summary','Report','\x20from\x20','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','customfield_11504','reason','track.xcallymotion.com','POST','Basic\x20','base64','request','end','status','statusCode','error','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','openIssue','send','body','headers','x-forwarded-for'];(function(_0x2d6df9,_0x45da50){var _0x429b18=function(_0x5b3c09){while(--_0x5b3c09){_0x2d6df9['push'](_0x2d6df9['shift']());}};_0x429b18(++_0x45da50);}(_0x289d,0x13b));var _0xd289=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x289d[_0x55e08b];return _0xd1a7ff;};'use strict';var BPromise=require(_0xd289('0x0'));var https=require(_0xd289('0x1'));var logger=require('../../config/logger')('api');var USERNAME=_0xd289('0x2');var PASSWORD=_0xd289('0x3');function openIssue(_0x2893a8,_0x1faf03){var _0x2fe094={'fields':{'project':{'key':_0x2893a8['key']||_0xd289('0x4')},'summary':(_0x2893a8[_0xd289('0x5')]||_0xd289('0x6'))+_0xd289('0x7')+_0x2893a8['ip'],'description':_0x2893a8['description']||JSON[_0xd289('0x8')](_0x2893a8),'issuetype':{'name':_0x2893a8[_0xd289('0x9')]||_0xd289('0xa')}}};_0x2fe094[_0xd289('0xb')][_0xd289('0xc')]=_0x2893a8[_0xd289('0xd')];_0x2fe094[_0xd289('0xb')][_0xd289('0xe')]=_0x2893a8[_0xd289('0xf')];_0x2fe094[_0xd289('0xb')][_0xd289('0x10')]=_0x2893a8['newToken'];_0x2fe094[_0xd289('0xb')][_0xd289('0x11')]=_0x2893a8['name'];_0x2fe094[_0xd289('0xb')][_0xd289('0x12')]=_0x2893a8[_0xd289('0x13')];_0x2fe094[_0xd289('0xb')]['customfield_10102']=_0x2893a8['ip'];var _0x27114d={'host':_0xd289('0x14'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xd289('0x15'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0xd289('0x16')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0xd289('0x17'))}};var _0x4e8876=JSON[_0xd289('0x8')](_0x2fe094);var _0x3c9619=https[_0xd289('0x18')](_0x27114d,function(_0x1a04da){_0x1a04da['setEncoding']('utf8');var _0x4765ec='';_0x1a04da['on']('data',function(_0x1ca494){_0x4765ec+=_0x1ca494;});_0x1a04da['on'](_0xd289('0x19'),function(){if(_0x1faf03){return _0x1faf03[_0xd289('0x1a')](_0x1a04da[_0xd289('0x1b')])['json'](JSON['parse'](_0x4765ec));}});});_0x3c9619['on'](_0xd289('0x1c'),function(_0x248af5){if(_0x1faf03){return _0x1faf03[_0xd289('0x1a')](0x1f4)[_0xd289('0x1d')]({'errors':[{'message':_0xd289('0x1e'),'type':'api.jira'}]});}});_0x3c9619['write'](_0x4e8876);_0x3c9619[_0xd289('0x19')]();}exports[_0xd289('0x1f')]=openIssue;exports[_0xd289('0x20')]=function(_0x2d8e80,_0x2c47f6){_0x2d8e80[_0xd289('0x21')]['ip']=_0x2d8e80[_0xd289('0x22')][_0xd289('0x23')]||_0x2d8e80[_0xd289('0x24')][_0xd289('0x25')]||_0x2d8e80[_0xd289('0x26')][_0xd289('0x25')]||_0x2d8e80[_0xd289('0x24')][_0xd289('0x26')][_0xd289('0x25')];return openIssue(_0x2d8e80[_0xd289('0x21')],_0x2c47f6);};
\ No newline at end of file
index 195480b..e244207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x3e5ff0,_0x5d4ce3){var _0x9f0c4d=function(_0x4b440d){while(--_0x4b440d){_0x3e5ff0['push'](_0x3e5ff0['shift']());}};_0x9f0c4d(++_0x5d4ce3);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x43d16c,_0x2b5447){_0x43d16c=_0x43d16c-0x0;var _0x208cce=_0xb4e6[_0x43d16c];return _0x208cce;};'use strict';var multer=require(_0x6b4e('0x0'));var util=require('util');var path=require(_0x6b4e('0x1'));var timeout=require(_0x6b4e('0x2'));var express=require(_0x6b4e('0x3'));var router=express[_0x6b4e('0x4')]();var fs_extra=require(_0x6b4e('0x5'));var auth=require(_0x6b4e('0x6'));var interaction=require(_0x6b4e('0x7'));var config=require('../../config/environment');var controller=require(_0x6b4e('0x8'));router[_0x6b4e('0x9')]('/',auth[_0x6b4e('0xa')](),controller['index']);router[_0x6b4e('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x6b4e('0xb')]);router['get']('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xc')]);router[_0x6b4e('0xd')]('/',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xe')]);router[_0x6b4e('0xf')](_0x6b4e('0x10'),auth['isAuthenticated'](),controller[_0x6b4e('0x11')]);router[_0x6b4e('0x12')]('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x13')]);module[_0x6b4e('0x14')]=router;
\ No newline at end of file
+var _0x9c44=['update','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./jscriptyAnswerReport.controller','isAuthenticated','index','get','/describe','/:id','show','create','put'];(function(_0x559b37,_0x47f627){var _0x2837e8=function(_0x1d4f8c){while(--_0x1d4f8c){_0x559b37['push'](_0x559b37['shift']());}};_0x2837e8(++_0x47f627);}(_0x9c44,0x178));var _0x49c4=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9c44[_0x13b02f];return _0x12e9a6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x49c4('0xd')]);router[_0x49c4('0xe')]('/:id',auth[_0x49c4('0x7')](),controller[_0x49c4('0xf')]);router['delete']('/:id',auth[_0x49c4('0x7')](),controller[_0x49c4('0x10')]);module['exports']=router;
\ No newline at end of file
index b2355dd..a4e8a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x7a54,0x106));var _0x47a5=function(_0x1e723b,_0x5bdf0c){_0x1e723b=_0x1e723b-0x0;var _0x5398c0=_0x7a54[_0x1e723b];return _0x5398c0;};'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(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x7a54,0x106));var _0x47a5=function(_0x3af122,_0x54ec9a){_0x3af122=_0x3af122-0x0;var _0x22d6eb=_0x7a54[_0x3af122];return _0x22d6eb;};'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 1d0a18d..4f8958f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0170=['params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','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','sendStatus','status','end','json','offset','undefined','count','limit','set','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','JscriptyAnswerReport','includeAll','include','findAll','rows','catch','show','find','create','body'];(function(_0x354f8c,_0x28cd59){var _0xb467ff=function(_0x522033){while(--_0x522033){_0x354f8c['push'](_0x354f8c['shift']());}};_0xb467ff(++_0x28cd59);}(_0x0170,0x1d6));var _0x0017=function(_0x3dc6da,_0x335efa){_0x3dc6da=_0x3dc6da-0x0;var _0x11a0aa=_0x0170[_0x3dc6da];return _0x11a0aa;};'use strict';var emlformat=require(_0x0017('0x0'));var rimraf=require(_0x0017('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0017('0x2'));var rp=require(_0x0017('0x3'));var moment=require(_0x0017('0x4'));var BPromise=require(_0x0017('0x5'));var Mustache=require('mustache');var util=require(_0x0017('0x6'));var path=require(_0x0017('0x7'));var sox=require(_0x0017('0x8'));var csv=require(_0x0017('0x9'));var ejs=require(_0x0017('0xa'));var fs=require('fs');var fs_extra=require(_0x0017('0xb'));var _=require(_0x0017('0xc'));var squel=require(_0x0017('0xd'));var crypto=require(_0x0017('0xe'));var jsforce=require(_0x0017('0xf'));var deskjs=require(_0x0017('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0017('0x11'));var Redis=require(_0x0017('0x12'));var authService=require(_0x0017('0x13'));var qs=require(_0x0017('0x14'));var as=require(_0x0017('0x15'));var hardwareService=require(_0x0017('0x16'));var logger=require(_0x0017('0x17'))(_0x0017('0x18'));var utils=require(_0x0017('0x19'));var config=require(_0x0017('0x1a'));var licenseUtil=require(_0x0017('0x1b'));var db=require(_0x0017('0x1c'))['db'];function respondWithStatusCode(_0x25200c,_0x50c5d7){_0x50c5d7=_0x50c5d7||0xcc;return function(_0x21505f){if(_0x21505f){return _0x25200c[_0x0017('0x1d')](_0x50c5d7);}return _0x25200c[_0x0017('0x1e')](_0x50c5d7)[_0x0017('0x1f')]();};}function respondWithResult(_0xedbf4c,_0x4bcc57){_0x4bcc57=_0x4bcc57||0xc8;return function(_0x53911b){if(_0x53911b){return _0xedbf4c[_0x0017('0x1e')](_0x4bcc57)[_0x0017('0x20')](_0x53911b);}};}function respondWithFilteredResult(_0x44a006,_0x4ac607){return function(_0x22a6ab){if(_0x22a6ab){var _0x3b46f9=typeof _0x4ac607[_0x0017('0x21')]===_0x0017('0x22')&&typeof _0x4ac607['limit']===_0x0017('0x22');var _0x3a40d6=_0x22a6ab['count'];var _0x24cce2=_0x3b46f9?0x0:_0x4ac607[_0x0017('0x21')];var _0x29c8ea=_0x3b46f9?_0x22a6ab[_0x0017('0x23')]:_0x4ac607['offset']+_0x4ac607[_0x0017('0x24')];var _0x2397b6;if(_0x29c8ea>=_0x3a40d6){_0x29c8ea=_0x3a40d6;_0x2397b6=0xc8;}else{_0x2397b6=0xce;}_0x44a006['status'](_0x2397b6);return _0x44a006[_0x0017('0x25')]('Content-Range',_0x24cce2+'-'+_0x29c8ea+'/'+_0x3a40d6)[_0x0017('0x20')](_0x22a6ab);}return null;};}function patchUpdates(_0x54833a){return function(_0xc2d620){try{jsonpatch['apply'](_0xc2d620,_0x54833a,!![]);}catch(_0x2a64df){return BPromise['reject'](_0x2a64df);}return _0xc2d620[_0x0017('0x26')]();};}function saveUpdates(_0x6cd580,_0x444471){return function(_0x30b1e5){if(_0x30b1e5){return _0x30b1e5[_0x0017('0x27')](_0x6cd580)[_0x0017('0x28')](function(_0x515599){return _0x515599;});}return null;};}function removeEntity(_0x4b34ea,_0x3b8136){return function(_0x22c1ec){if(_0x22c1ec){return _0x22c1ec[_0x0017('0x29')]()[_0x0017('0x28')](function(){_0x4b34ea['status'](0xcc)[_0x0017('0x1f')]();});}};}function handleEntityNotFound(_0x354068,_0x1ed0f7){return function(_0x45099d){if(!_0x45099d){_0x354068[_0x0017('0x1d')](0x194);}return _0x45099d;};}function handleError(_0x321639,_0x3468a0){_0x3468a0=_0x3468a0||0x1f4;return function(_0x45bdba){logger[_0x0017('0x2a')](_0x45bdba[_0x0017('0x2b')]);if(_0x45bdba[_0x0017('0x2c')]){delete _0x45bdba[_0x0017('0x2c')];}_0x321639[_0x0017('0x1e')](_0x3468a0)['send'](_0x45bdba);};}exports[_0x0017('0x2d')]=function(_0x377ab2,_0x54608f){var _0x5ec32f={},_0x113d74={},_0x1d1832={'count':0x0,'rows':[]};var _0x29e8fe=_[_0x0017('0x2e')](db['JscriptyAnswerReport'][_0x0017('0x2f')],function(_0x1596f1){return{'name':_0x1596f1[_0x0017('0x30')],'type':_0x1596f1[_0x0017('0x31')]['key']};});_0x113d74[_0x0017('0x32')]=_[_0x0017('0x2e')](_0x29e8fe,'name');_0x113d74[_0x0017('0x33')]=_[_0x0017('0x34')](_0x377ab2[_0x0017('0x33')]);_0x113d74[_0x0017('0x35')]=_[_0x0017('0x36')](_0x113d74[_0x0017('0x32')],_0x113d74[_0x0017('0x33')]);_0x5ec32f['attributes']=_[_0x0017('0x36')](_0x113d74['model'],qs[_0x0017('0x37')](_0x377ab2[_0x0017('0x33')][_0x0017('0x37')]));_0x5ec32f[_0x0017('0x38')]=_0x5ec32f['attributes'][_0x0017('0x39')]?_0x5ec32f[_0x0017('0x38')]:_0x113d74['model'];if(!_0x377ab2[_0x0017('0x33')][_0x0017('0x3a')](_0x0017('0x3b'))){_0x5ec32f['limit']=qs['limit'](_0x377ab2[_0x0017('0x33')][_0x0017('0x24')]);_0x5ec32f[_0x0017('0x21')]=qs[_0x0017('0x21')](_0x377ab2[_0x0017('0x33')][_0x0017('0x21')]);}_0x5ec32f['order']=qs[_0x0017('0x3c')](_0x377ab2[_0x0017('0x33')][_0x0017('0x3c')]);_0x5ec32f[_0x0017('0x3d')]=qs[_0x0017('0x35')](_[_0x0017('0x3e')](_0x377ab2[_0x0017('0x33')],_0x113d74[_0x0017('0x35')]),_0x29e8fe);if(_0x377ab2[_0x0017('0x33')]['filter']){_0x5ec32f[_0x0017('0x3d')]=_[_0x0017('0x3f')](_0x5ec32f[_0x0017('0x3d')],{'$or':_[_0x0017('0x2e')](_0x29e8fe,function(_0x24da24){if(_0x24da24[_0x0017('0x31')]!==_0x0017('0x40')){var _0x19ad28={};_0x19ad28[_0x24da24['name']]={'$like':'%'+_0x377ab2[_0x0017('0x33')]['filter']+'%'};return _0x19ad28;}})});}_0x5ec32f=_['merge']({},_0x5ec32f,_0x377ab2[_0x0017('0x41')]);var _0x415441={'where':_0x5ec32f[_0x0017('0x3d')]};return db[_0x0017('0x42')][_0x0017('0x23')](_0x415441)[_0x0017('0x28')](function(_0x780d75){_0x1d1832[_0x0017('0x23')]=_0x780d75;if(_0x377ab2['query'][_0x0017('0x43')]){_0x5ec32f[_0x0017('0x44')]=[{'all':!![]}];}return db[_0x0017('0x42')][_0x0017('0x45')](_0x5ec32f);})[_0x0017('0x28')](function(_0x27d786){_0x1d1832[_0x0017('0x46')]=_0x27d786;return _0x1d1832;})[_0x0017('0x28')](respondWithFilteredResult(_0x54608f,_0x5ec32f))[_0x0017('0x47')](handleError(_0x54608f,null));};exports[_0x0017('0x48')]=function(_0x27ffa6,_0x349d5d){var _0x25a08b={'raw':!![],'where':{'id':_0x27ffa6['params']['id']}},_0x25956c={};_0x25956c['model']=_['keys'](db[_0x0017('0x42')][_0x0017('0x2f')]);_0x25956c[_0x0017('0x33')]=_[_0x0017('0x34')](_0x27ffa6['query']);_0x25956c['filters']=_[_0x0017('0x36')](_0x25956c[_0x0017('0x32')],_0x25956c[_0x0017('0x33')]);_0x25a08b[_0x0017('0x38')]=_[_0x0017('0x36')](_0x25956c[_0x0017('0x32')],qs[_0x0017('0x37')](_0x27ffa6[_0x0017('0x33')][_0x0017('0x37')]));_0x25a08b[_0x0017('0x38')]=_0x25a08b[_0x0017('0x38')]['length']?_0x25a08b[_0x0017('0x38')]:_0x25956c['model'];if(_0x27ffa6[_0x0017('0x33')][_0x0017('0x43')]){_0x25a08b[_0x0017('0x44')]=[{'all':!![]}];}_0x25a08b=_[_0x0017('0x3f')]({},_0x25a08b,_0x27ffa6[_0x0017('0x41')]);return db['JscriptyAnswerReport'][_0x0017('0x49')](_0x25a08b)[_0x0017('0x28')](handleEntityNotFound(_0x349d5d,null))[_0x0017('0x28')](respondWithResult(_0x349d5d,null))[_0x0017('0x47')](handleError(_0x349d5d,null));};exports[_0x0017('0x4a')]=function(_0x45eafa,_0x5b43e3){return db[_0x0017('0x42')][_0x0017('0x4a')](_0x45eafa[_0x0017('0x4b')],{})[_0x0017('0x28')](respondWithResult(_0x5b43e3,0xc9))['catch'](handleError(_0x5b43e3,null));};exports[_0x0017('0x27')]=function(_0x26f411,_0x3a6173){if(_0x26f411[_0x0017('0x4b')]['id']){delete _0x26f411[_0x0017('0x4b')]['id'];}return db[_0x0017('0x42')][_0x0017('0x49')]({'where':{'id':_0x26f411[_0x0017('0x4c')]['id']}})[_0x0017('0x28')](handleEntityNotFound(_0x3a6173,null))[_0x0017('0x28')](saveUpdates(_0x26f411[_0x0017('0x4b')],null))['then'](respondWithResult(_0x3a6173,null))['catch'](handleError(_0x3a6173,null));};exports[_0x0017('0x29')]=function(_0x5118eb,_0x3686bf){return db[_0x0017('0x42')]['find']({'where':{'id':_0x5118eb['params']['id']}})[_0x0017('0x28')](handleEntityNotFound(_0x3686bf,null))[_0x0017('0x28')](removeEntity(_0x3686bf,null))['catch'](handleError(_0x3686bf,null));};exports['describe']=function(_0x96dd13,_0x16f86b){return db['JscriptyAnswerReport'][_0x0017('0x4d')]()['then'](respondWithResult(_0x16f86b,null))[_0x0017('0x47')](handleError(_0x16f86b,null));};
\ No newline at end of file
+var _0x4ce6=['limit','apply','reject','save','then','error','stack','name','send','map','JscriptyAnswerReport','rawAttributes','fieldName','type','model','keys','filters','attributes','fields','query','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','intersection','length','options','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','count'];(function(_0x57cb2a,_0x3612f7){var _0x1008c3=function(_0x365b72){while(--_0x365b72){_0x57cb2a['push'](_0x57cb2a['shift']());}};_0x1008c3(++_0x3612f7);}(_0x4ce6,0x108));var _0x64ce=function(_0x13cab0,_0x14d825){_0x13cab0=_0x13cab0-0x0;var _0x38804f=_0x4ce6[_0x13cab0];return _0x38804f;};'use strict';var emlformat=require(_0x64ce('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64ce('0x1'));var jsonpatch=require(_0x64ce('0x2'));var rp=require(_0x64ce('0x3'));var moment=require(_0x64ce('0x4'));var BPromise=require(_0x64ce('0x5'));var Mustache=require(_0x64ce('0x6'));var util=require('util');var path=require(_0x64ce('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x64ce('0x8'));var fs=require('fs');var fs_extra=require(_0x64ce('0x9'));var _=require('lodash');var squel=require(_0x64ce('0xa'));var crypto=require(_0x64ce('0xb'));var jsforce=require(_0x64ce('0xc'));var deskjs=require(_0x64ce('0xd'));var toCsv=require(_0x64ce('0xe'));var querystring=require(_0x64ce('0xf'));var Papa=require(_0x64ce('0x10'));var Redis=require(_0x64ce('0x11'));var authService=require(_0x64ce('0x12'));var qs=require(_0x64ce('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x64ce('0x14'));var logger=require(_0x64ce('0x15'))(_0x64ce('0x16'));var utils=require(_0x64ce('0x17'));var config=require(_0x64ce('0x18'));var licenseUtil=require(_0x64ce('0x19'));var db=require(_0x64ce('0x1a'))['db'];function respondWithStatusCode(_0x321f24,_0x4dbb9e){_0x4dbb9e=_0x4dbb9e||0xcc;return function(_0x17be05){if(_0x17be05){return _0x321f24['sendStatus'](_0x4dbb9e);}return _0x321f24['status'](_0x4dbb9e)[_0x64ce('0x1b')]();};}function respondWithResult(_0x498d55,_0xedcfa5){_0xedcfa5=_0xedcfa5||0xc8;return function(_0x22e852){if(_0x22e852){return _0x498d55[_0x64ce('0x1c')](_0xedcfa5)[_0x64ce('0x1d')](_0x22e852);}};}function respondWithFilteredResult(_0x3579a3,_0x235a82){return function(_0x476a31){if(_0x476a31){var _0x42df9a=typeof _0x235a82[_0x64ce('0x1e')]==='undefined'&&typeof _0x235a82['limit']==='undefined';var _0x3eca89=_0x476a31[_0x64ce('0x1f')];var _0x1f6fd4=_0x42df9a?0x0:_0x235a82[_0x64ce('0x1e')];var _0x38d441=_0x42df9a?_0x476a31[_0x64ce('0x1f')]:_0x235a82[_0x64ce('0x1e')]+_0x235a82[_0x64ce('0x20')];var _0xafcce4;if(_0x38d441>=_0x3eca89){_0x38d441=_0x3eca89;_0xafcce4=0xc8;}else{_0xafcce4=0xce;}_0x3579a3[_0x64ce('0x1c')](_0xafcce4);return _0x3579a3['set']('Content-Range',_0x1f6fd4+'-'+_0x38d441+'/'+_0x3eca89)[_0x64ce('0x1d')](_0x476a31);}return null;};}function patchUpdates(_0x17a36b){return function(_0x4f8dc2){try{jsonpatch[_0x64ce('0x21')](_0x4f8dc2,_0x17a36b,!![]);}catch(_0x3a8d29){return BPromise[_0x64ce('0x22')](_0x3a8d29);}return _0x4f8dc2[_0x64ce('0x23')]();};}function saveUpdates(_0x2b5f89,_0x1aa495){return function(_0x34a7f7){if(_0x34a7f7){return _0x34a7f7['update'](_0x2b5f89)[_0x64ce('0x24')](function(_0x36c332){return _0x36c332;});}return null;};}function removeEntity(_0x4f9107,_0x1aec1f){return function(_0x9729cf){if(_0x9729cf){return _0x9729cf['destroy']()[_0x64ce('0x24')](function(){_0x4f9107[_0x64ce('0x1c')](0xcc)[_0x64ce('0x1b')]();});}};}function handleEntityNotFound(_0x33feb3,_0x2826f6){return function(_0x2e941c){if(!_0x2e941c){_0x33feb3['sendStatus'](0x194);}return _0x2e941c;};}function handleError(_0x618946,_0x3b77c7){_0x3b77c7=_0x3b77c7||0x1f4;return function(_0x5415de){logger[_0x64ce('0x25')](_0x5415de[_0x64ce('0x26')]);if(_0x5415de['name']){delete _0x5415de[_0x64ce('0x27')];}_0x618946[_0x64ce('0x1c')](_0x3b77c7)[_0x64ce('0x28')](_0x5415de);};}exports['index']=function(_0x24181c,_0x1fd112){var _0x23d5a0={},_0x3e7a52={},_0x2fa80d={'count':0x0,'rows':[]};var _0x46c19b=_[_0x64ce('0x29')](db[_0x64ce('0x2a')][_0x64ce('0x2b')],function(_0x2f8b6b){return{'name':_0x2f8b6b[_0x64ce('0x2c')],'type':_0x2f8b6b[_0x64ce('0x2d')]['key']};});_0x3e7a52[_0x64ce('0x2e')]=_['map'](_0x46c19b,_0x64ce('0x27'));_0x3e7a52['query']=_[_0x64ce('0x2f')](_0x24181c['query']);_0x3e7a52[_0x64ce('0x30')]=_['intersection'](_0x3e7a52['model'],_0x3e7a52['query']);_0x23d5a0[_0x64ce('0x31')]=_['intersection'](_0x3e7a52['model'],qs[_0x64ce('0x32')](_0x24181c[_0x64ce('0x33')][_0x64ce('0x32')]));_0x23d5a0[_0x64ce('0x31')]=_0x23d5a0[_0x64ce('0x31')]['length']?_0x23d5a0[_0x64ce('0x31')]:_0x3e7a52[_0x64ce('0x2e')];if(!_0x24181c[_0x64ce('0x33')][_0x64ce('0x34')](_0x64ce('0x35'))){_0x23d5a0['limit']=qs[_0x64ce('0x20')](_0x24181c[_0x64ce('0x33')][_0x64ce('0x20')]);_0x23d5a0['offset']=qs[_0x64ce('0x1e')](_0x24181c[_0x64ce('0x33')][_0x64ce('0x1e')]);}_0x23d5a0[_0x64ce('0x36')]=qs[_0x64ce('0x37')](_0x24181c[_0x64ce('0x33')][_0x64ce('0x37')]);_0x23d5a0[_0x64ce('0x38')]=qs['filters'](_[_0x64ce('0x39')](_0x24181c['query'],_0x3e7a52['filters']),_0x46c19b);if(_0x24181c[_0x64ce('0x33')]['filter']){_0x23d5a0[_0x64ce('0x38')]=_[_0x64ce('0x3a')](_0x23d5a0[_0x64ce('0x38')],{'$or':_['map'](_0x46c19b,function(_0x3460ae){if(_0x3460ae[_0x64ce('0x2d')]!=='VIRTUAL'){var _0x1a640a={};_0x1a640a[_0x3460ae['name']]={'$like':'%'+_0x24181c[_0x64ce('0x33')][_0x64ce('0x3b')]+'%'};return _0x1a640a;}})});}_0x23d5a0=_[_0x64ce('0x3a')]({},_0x23d5a0,_0x24181c['options']);var _0xdce6d7={'where':_0x23d5a0['where']};return db[_0x64ce('0x2a')][_0x64ce('0x1f')](_0xdce6d7)[_0x64ce('0x24')](function(_0x1eed7f){_0x2fa80d[_0x64ce('0x1f')]=_0x1eed7f;if(_0x24181c['query'][_0x64ce('0x3c')]){_0x23d5a0[_0x64ce('0x3d')]=[{'all':!![]}];}return db[_0x64ce('0x2a')]['findAll'](_0x23d5a0);})[_0x64ce('0x24')](function(_0x824143){_0x2fa80d[_0x64ce('0x3e')]=_0x824143;return _0x2fa80d;})['then'](respondWithFilteredResult(_0x1fd112,_0x23d5a0))[_0x64ce('0x3f')](handleError(_0x1fd112,null));};exports[_0x64ce('0x40')]=function(_0x456fef,_0x132499){var _0x422211={'raw':!![],'where':{'id':_0x456fef[_0x64ce('0x41')]['id']}},_0x48043b={};_0x48043b['model']=_[_0x64ce('0x2f')](db[_0x64ce('0x2a')][_0x64ce('0x2b')]);_0x48043b[_0x64ce('0x33')]=_['keys'](_0x456fef[_0x64ce('0x33')]);_0x48043b[_0x64ce('0x30')]=_[_0x64ce('0x42')](_0x48043b['model'],_0x48043b['query']);_0x422211[_0x64ce('0x31')]=_[_0x64ce('0x42')](_0x48043b[_0x64ce('0x2e')],qs[_0x64ce('0x32')](_0x456fef['query'][_0x64ce('0x32')]));_0x422211[_0x64ce('0x31')]=_0x422211[_0x64ce('0x31')][_0x64ce('0x43')]?_0x422211[_0x64ce('0x31')]:_0x48043b[_0x64ce('0x2e')];if(_0x456fef['query'][_0x64ce('0x3c')]){_0x422211['include']=[{'all':!![]}];}_0x422211=_[_0x64ce('0x3a')]({},_0x422211,_0x456fef[_0x64ce('0x44')]);return db[_0x64ce('0x2a')][_0x64ce('0x45')](_0x422211)[_0x64ce('0x24')](handleEntityNotFound(_0x132499,null))[_0x64ce('0x24')](respondWithResult(_0x132499,null))[_0x64ce('0x3f')](handleError(_0x132499,null));};exports[_0x64ce('0x46')]=function(_0x5711f8,_0x40df30){return db['JscriptyAnswerReport'][_0x64ce('0x46')](_0x5711f8[_0x64ce('0x47')],{})[_0x64ce('0x24')](respondWithResult(_0x40df30,0xc9))[_0x64ce('0x3f')](handleError(_0x40df30,null));};exports['update']=function(_0x3f565e,_0x1b739c){if(_0x3f565e['body']['id']){delete _0x3f565e[_0x64ce('0x47')]['id'];}return db[_0x64ce('0x2a')][_0x64ce('0x45')]({'where':{'id':_0x3f565e[_0x64ce('0x41')]['id']}})['then'](handleEntityNotFound(_0x1b739c,null))[_0x64ce('0x24')](saveUpdates(_0x3f565e[_0x64ce('0x47')],null))[_0x64ce('0x24')](respondWithResult(_0x1b739c,null))[_0x64ce('0x3f')](handleError(_0x1b739c,null));};exports[_0x64ce('0x48')]=function(_0x4cf1e2,_0x9c65da){return db['JscriptyAnswerReport'][_0x64ce('0x45')]({'where':{'id':_0x4cf1e2['params']['id']}})[_0x64ce('0x24')](handleEntityNotFound(_0x9c65da,null))['then'](removeEntity(_0x9c65da,null))[_0x64ce('0x3f')](handleError(_0x9c65da,null));};exports['describe']=function(_0x4d4e3c,_0x12cde5){return db[_0x64ce('0x2a')][_0x64ce('0x49')]()[_0x64ce('0x24')](respondWithResult(_0x12cde5,null))[_0x64ce('0x3f')](handleError(_0x12cde5,null));};
\ No newline at end of file
index d47b5c9..b7914db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1f7=['report_jscripty_answers','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport'];(function(_0x424a50,_0x1fd66d){var _0x1427b2=function(_0x35f2a0){while(--_0x35f2a0){_0x424a50['push'](_0x424a50['shift']());}};_0x1427b2(++_0x1fd66d);}(_0xc1f7,0xd1));var _0x7c1f=function(_0x219521,_0x44fbb5){_0x219521=_0x219521-0x0;var _0x5414ad=_0xc1f7[_0x219521];return _0x5414ad;};'use strict';var _=require(_0x7c1f('0x0'));var util=require(_0x7c1f('0x1'));var logger=require('../../config/logger')(_0x7c1f('0x2'));var moment=require(_0x7c1f('0x3'));var BPromise=require(_0x7c1f('0x4'));var rp=require(_0x7c1f('0x5'));var fs=require('fs');var path=require(_0x7c1f('0x6'));var rimraf=require(_0x7c1f('0x7'));var config=require('../../config/environment');var attributes=require(_0x7c1f('0x8'));module[_0x7c1f('0x9')]=function(_0xca55a2,_0x524dd3){return _0xca55a2[_0x7c1f('0xa')](_0x7c1f('0xb'),attributes,{'tableName':_0x7c1f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0068=['../../config/logger','moment','bluebird','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util'];(function(_0x543cf9,_0xc093bc){var _0x5500cd=function(_0xdc9fb7){while(--_0xdc9fb7){_0x543cf9['push'](_0x543cf9['shift']());}};_0x5500cd(++_0xc093bc);}(_0x0068,0x15a));var _0x8006=function(_0x4124b8,_0x39a5fb){_0x4124b8=_0x4124b8-0x0;var _0xdd927=_0x0068[_0x4124b8];return _0xdd927;};'use strict';var _=require(_0x8006('0x0'));var util=require(_0x8006('0x1'));var logger=require(_0x8006('0x2'))('api');var moment=require(_0x8006('0x3'));var BPromise=require(_0x8006('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8006('0x5'));var config=require(_0x8006('0x6'));var attributes=require(_0x8006('0x7'));module[_0x8006('0x8')]=function(_0x4179e8,_0x15d9c2){return _0x4179e8[_0x8006('0x9')](_0x8006('0xa'),attributes,{'tableName':_0x8006('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63ada88..e9ccea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb4=['request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x1b26a,_0x1c082e){var _0x17db32=function(_0x74ab7b){while(--_0x74ab7b){_0x1b26a['push'](_0x1b26a['shift']());}};_0x17db32(++_0x1c082e);}(_0xddb4,0x110));var _0x4ddb=function(_0x4adfa4,_0x121c5a){_0x4adfa4=_0x4adfa4-0x0;var _0x14cec1=_0xddb4[_0x4adfa4];return _0x14cec1;};'use strict';var _=require(_0x4ddb('0x0'));var util=require(_0x4ddb('0x1'));var moment=require(_0x4ddb('0x2'));var BPromise=require(_0x4ddb('0x3'));var rs=require(_0x4ddb('0x4'));var fs=require('fs');var Redis=require(_0x4ddb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ddb('0x6'));var logger=require(_0x4ddb('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4ddb('0x8'));var client=jayson[_0x4ddb('0x9')][_0x4ddb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ce86e,_0x3f2673,_0x4b0f84){return new BPromise(function(_0x402769,_0x26f3aa){return client[_0x4ddb('0xb')](_0x1ce86e,_0x4b0f84)['then'](function(_0x3315e9){logger[_0x4ddb('0xc')](_0x4ddb('0xd'),_0x3f2673,_0x4ddb('0xe'));logger[_0x4ddb('0xf')](_0x4ddb('0x10'),_0x3f2673,_0x4ddb('0xe'),JSON[_0x4ddb('0x11')](_0x3315e9));if(_0x3315e9[_0x4ddb('0x12')]){if(_0x3315e9[_0x4ddb('0x12')][_0x4ddb('0x13')]===0x1f4){logger['error'](_0x4ddb('0xd'),_0x3f2673,_0x3315e9[_0x4ddb('0x12')][_0x4ddb('0x14')]);return _0x26f3aa(_0x3315e9['error'][_0x4ddb('0x14')]);}logger[_0x4ddb('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3f2673,_0x3315e9['error'][_0x4ddb('0x14')]);return _0x402769(_0x3315e9[_0x4ddb('0x12')][_0x4ddb('0x14')]);}else{logger[_0x4ddb('0xc')](_0x4ddb('0xd'),_0x3f2673,_0x4ddb('0xe'));_0x402769(_0x3315e9[_0x4ddb('0x15')][_0x4ddb('0x14')]);}})['catch'](function(_0x277b34){logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x3f2673,_0x277b34);_0x26f3aa(_0x277b34);});});}
\ No newline at end of file
+var _0xf865=['JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent'];(function(_0x24117a,_0x2b7733){var _0x130e6f=function(_0x2f3b05){while(--_0x2f3b05){_0x24117a['push'](_0x24117a['shift']());}};_0x130e6f(++_0x2b7733);}(_0xf865,0x11a));var _0x5f86=function(_0x54bac5,_0x8d3a16){_0x54bac5=_0x54bac5-0x0;var _0xc15971=_0xf865[_0x54bac5];return _0xc15971;};'use strict';var _=require(_0x5f86('0x0'));var util=require(_0x5f86('0x1'));var moment=require(_0x5f86('0x2'));var BPromise=require(_0x5f86('0x3'));var rs=require(_0x5f86('0x4'));var fs=require('fs');var Redis=require(_0x5f86('0x5'));var db=require(_0x5f86('0x6'))['db'];var utils=require(_0x5f86('0x7'));var logger=require(_0x5f86('0x8'))(_0x5f86('0x9'));var config=require(_0x5f86('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x5f86('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x456170,_0x5cb1f8,_0xa00a7f){return new BPromise(function(_0x4b657b,_0x74e6ff){return client[_0x5f86('0xc')](_0x456170,_0xa00a7f)[_0x5f86('0xd')](function(_0x115be7){logger[_0x5f86('0xe')](_0x5f86('0xf'),_0x5cb1f8,_0x5f86('0x10'));logger['debug'](_0x5f86('0x11'),_0x5cb1f8,_0x5f86('0x10'),JSON[_0x5f86('0x12')](_0x115be7));if(_0x115be7[_0x5f86('0x13')]){if(_0x115be7[_0x5f86('0x13')]['code']===0x1f4){logger[_0x5f86('0x13')](_0x5f86('0xf'),_0x5cb1f8,_0x115be7['error']['message']);return _0x74e6ff(_0x115be7[_0x5f86('0x13')][_0x5f86('0x14')]);}logger[_0x5f86('0x13')](_0x5f86('0xf'),_0x5cb1f8,_0x115be7[_0x5f86('0x13')][_0x5f86('0x14')]);return _0x4b657b(_0x115be7['error'][_0x5f86('0x14')]);}else{logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x5cb1f8,_0x5f86('0x10'));_0x4b657b(_0x115be7[_0x5f86('0x15')][_0x5f86('0x14')]);}})[_0x5f86('0x16')](function(_0x58256e){logger[_0x5f86('0x13')](_0x5f86('0xf'),_0x5cb1f8,_0x58256e);_0x74e6ff(_0x58256e);});});}
\ No newline at end of file
index 80c9a7b..589dfeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04a0=['get','show','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','/:id/clone','clone','put','/:id','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','./jscriptyProject.controller','isAuthenticated','index'];(function(_0xb56ccf,_0xb5befe){var _0x409ac3=function(_0x202390){while(--_0x202390){_0xb56ccf['push'](_0xb56ccf['shift']());}};_0x409ac3(++_0xb5befe);}(_0x04a0,0x1d2));var _0x004a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x04a0[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x004a('0x0'));var util=require(_0x004a('0x1'));var path=require(_0x004a('0x2'));var timeout=require('connect-timeout');var express=require(_0x004a('0x3'));var router=express['Router']();var fs_extra=require(_0x004a('0x4'));var auth=require(_0x004a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x004a('0x6'));router['get']('/',auth[_0x004a('0x7')](),controller[_0x004a('0x8')]);router[_0x004a('0x9')]('/:id',auth[_0x004a('0x7')](),controller[_0x004a('0xa')]);router['get'](_0x004a('0xb'),auth[_0x004a('0x7')](),controller[_0x004a('0xc')]);router[_0x004a('0x9')](_0x004a('0xd'),auth['isAuthenticated'](),controller[_0x004a('0xe')]);router[_0x004a('0x9')](_0x004a('0xf'),auth[_0x004a('0x7')](),timeout(_0x004a('0x10')),controller[_0x004a('0x11')]);router['post']('/',auth[_0x004a('0x7')](),controller['create']);router['post'](_0x004a('0x12'),auth['isAuthenticated'](),controller[_0x004a('0x13')]);router[_0x004a('0x14')](_0x004a('0x15'),auth['isAuthenticated'](),controller[_0x004a('0x16')]);router[_0x004a('0x17')](_0x004a('0x15'),auth[_0x004a('0x7')](),controller[_0x004a('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x2f71=['30s','getSummary','post','create','/:id/clone','clone','put','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','index','get','/:id','isAuthenticated','show','/:id/sessions','getSessions','/:id/answers','/:id/summary'];(function(_0x519b4c,_0x32efbc){var _0x1a5dae=function(_0xefec55){while(--_0xefec55){_0x519b4c['push'](_0x519b4c['shift']());}};_0x1a5dae(++_0x32efbc);}(_0x2f71,0x1bd));var _0x12f7=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x2f71[_0x13e741];return _0x3f8bb3;};'use strict';var multer=require(_0x12f7('0x0'));var util=require(_0x12f7('0x1'));var path=require(_0x12f7('0x2'));var timeout=require(_0x12f7('0x3'));var express=require(_0x12f7('0x4'));var router=express['Router']();var fs_extra=require(_0x12f7('0x5'));var auth=require(_0x12f7('0x6'));var interaction=require(_0x12f7('0x7'));var config=require(_0x12f7('0x8'));var controller=require(_0x12f7('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x12f7('0xa')]);router[_0x12f7('0xb')](_0x12f7('0xc'),auth[_0x12f7('0xd')](),controller[_0x12f7('0xe')]);router[_0x12f7('0xb')](_0x12f7('0xf'),auth['isAuthenticated'](),controller[_0x12f7('0x10')]);router[_0x12f7('0xb')](_0x12f7('0x11'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x12f7('0xb')](_0x12f7('0x12'),auth[_0x12f7('0xd')](),timeout(_0x12f7('0x13')),controller[_0x12f7('0x14')]);router[_0x12f7('0x15')]('/',auth[_0x12f7('0xd')](),controller[_0x12f7('0x16')]);router['post'](_0x12f7('0x17'),auth['isAuthenticated'](),controller[_0x12f7('0x18')]);router[_0x12f7('0x19')](_0x12f7('0xc'),auth[_0x12f7('0xd')](),controller[_0x12f7('0x1a')]);router[_0x12f7('0x1b')](_0x12f7('0xc'),auth['isAuthenticated'](),controller[_0x12f7('0x1c')]);module['exports']=router;
\ No newline at end of file
index 1c34372..b798164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66de=['setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','util','exports','name','STRING','TEXT','long','isObjectLike','formData','stringify','isString'];(function(_0x5b2980,_0x210603){var _0x482986=function(_0x54ad2f){while(--_0x54ad2f){_0x5b2980['push'](_0x5b2980['shift']());}};_0x482986(++_0x210603);}(_0x66de,0x186));var _0xe66d=function(_0x180c9b,_0x13d173){_0x180c9b=_0x180c9b-0x0;var _0x3ff116=_0x66de[_0x180c9b];return _0x3ff116;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');var util=require(_0xe66d('0x0'));module[_0xe66d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe66d('0x2')},'description':{'type':Sequelize[_0xe66d('0x3')]},'formData':{'type':Sequelize[_0xe66d('0x4')](_0xe66d('0x5')),'set':function(_0x4b8bbf){if(_[_0xe66d('0x6')](_0x4b8bbf)){this['setDataValue'](_0xe66d('0x7'),JSON[_0xe66d('0x8')](_0x4b8bbf));}else if(_[_0xe66d('0x9')](_0x4b8bbf)){this[_0xe66d('0xa')](_0xe66d('0x7'),_0x4b8bbf);}else{this[_0xe66d('0xa')](_0xe66d('0x7'),util[_0xe66d('0xb')](_0xe66d('0xc'),this['getDataValue']('name')||'',this[_0xe66d('0xd')](_0xe66d('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xe66d('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xe66d('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1ed3=['formData','stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','util','exports','STRING','name','TEXT','isObjectLike','setDataValue'];(function(_0x43b495,_0xb57a7c){var _0x3532e7=function(_0x55645f){while(--_0x55645f){_0x43b495['push'](_0x43b495['shift']());}};_0x3532e7(++_0xb57a7c);}(_0x1ed3,0xa7));var _0x31ed=function(_0x5d09d9,_0x181abf){_0x5d09d9=_0x5d09d9-0x0;var _0x7ce182=_0x1ed3[_0x5d09d9];return _0x7ce182;};'use strict';var Sequelize=require(_0x31ed('0x0'));var _=require(_0x31ed('0x1'));var util=require(_0x31ed('0x2'));module[_0x31ed('0x3')]={'name':{'type':Sequelize[_0x31ed('0x4')],'unique':_0x31ed('0x5')},'description':{'type':Sequelize[_0x31ed('0x4')]},'formData':{'type':Sequelize[_0x31ed('0x6')]('long'),'set':function(_0x240171){if(_[_0x31ed('0x7')](_0x240171)){this[_0x31ed('0x8')](_0x31ed('0x9'),JSON[_0x31ed('0xa')](_0x240171));}else if(_[_0x31ed('0xb')](_0x240171)){this[_0x31ed('0x8')](_0x31ed('0x9'),_0x240171);}else{this[_0x31ed('0x8')](_0x31ed('0x9'),util[_0x31ed('0xc')](_0x31ed('0xd'),this[_0x31ed('0xe')](_0x31ed('0x5'))||'',this[_0x31ed('0xe')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x31ed('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 2e0740c..5df9f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eae=['pick','where','VIRTUAL','filter','findAll','rows','catch','show','params','keys','rawAttributes','includeAll','merge','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','include','omit','createdAt','updatedAt','userProfileId','autoAssociation','getSessions','findOne','JscriptySessionReport','order','JscriptyAnswerReport','ProjectId','toString','indexOf','startTime','starttime','parse','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','answer','isEmpty','now','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','Projects','end','error','stack','name','send','index','map','JscriptyProject','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort'];(function(_0x435f92,_0x4d636d){var _0x5a1222=function(_0x4e6493){while(--_0x4e6493){_0x435f92['push'](_0x435f92['shift']());}};_0x5a1222(++_0x4d636d);}(_0x3eae,0x126));var _0xe3ea=function(_0x28b7ab,_0x16a764){_0x28b7ab=_0x28b7ab-0x0;var _0x56791b=_0x3eae[_0x28b7ab];return _0x56791b;};'use strict';var emlformat=require(_0xe3ea('0x0'));var rimraf=require(_0xe3ea('0x1'));var zipdir=require(_0xe3ea('0x2'));var jsonpatch=require(_0xe3ea('0x3'));var rp=require('request-promise');var moment=require(_0xe3ea('0x4'));var BPromise=require(_0xe3ea('0x5'));var Mustache=require('mustache');var util=require(_0xe3ea('0x6'));var path=require(_0xe3ea('0x7'));var sox=require(_0xe3ea('0x8'));var csv=require('to-csv');var ejs=require(_0xe3ea('0x9'));var fs=require('fs');var fs_extra=require(_0xe3ea('0xa'));var _=require(_0xe3ea('0xb'));var squel=require(_0xe3ea('0xc'));var crypto=require(_0xe3ea('0xd'));var jsforce=require(_0xe3ea('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe3ea('0xf'));var querystring=require(_0xe3ea('0x10'));var Papa=require('papaparse');var Redis=require(_0xe3ea('0x11'));var authService=require(_0xe3ea('0x12'));var qs=require(_0xe3ea('0x13'));var as=require(_0xe3ea('0x14'));var hardwareService=require(_0xe3ea('0x15'));var logger=require('../../config/logger')(_0xe3ea('0x16'));var utils=require(_0xe3ea('0x17'));var config=require(_0xe3ea('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe3ea('0x19'))['db'];function respondWithStatusCode(_0x3fa991,_0x470912){_0x470912=_0x470912||0xcc;return function(_0x1312e0){if(_0x1312e0){return _0x3fa991[_0xe3ea('0x1a')](_0x470912);}return _0x3fa991[_0xe3ea('0x1b')](_0x470912)['end']();};}function respondWithResult(_0x544dfe,_0x1701d3){_0x1701d3=_0x1701d3||0xc8;return function(_0x335689){if(_0x335689){return _0x544dfe[_0xe3ea('0x1b')](_0x1701d3)[_0xe3ea('0x1c')](_0x335689);}};}function respondWithFilteredResult(_0x45ba02,_0x4ac0ea){return function(_0x4c92b2){if(_0x4c92b2){var _0x27885e=typeof _0x4ac0ea[_0xe3ea('0x1d')]==='undefined'&&typeof _0x4ac0ea[_0xe3ea('0x1e')]===_0xe3ea('0x1f');var _0x4af35e=_0x4c92b2['count'];var _0x2af916=_0x27885e?0x0:_0x4ac0ea[_0xe3ea('0x1d')];var _0x417b88=_0x27885e?_0x4c92b2[_0xe3ea('0x20')]:_0x4ac0ea[_0xe3ea('0x1d')]+_0x4ac0ea[_0xe3ea('0x1e')];var _0x4d611a;if(_0x417b88>=_0x4af35e){_0x417b88=_0x4af35e;_0x4d611a=0xc8;}else{_0x4d611a=0xce;}_0x45ba02['status'](_0x4d611a);return _0x45ba02[_0xe3ea('0x21')]('Content-Range',_0x2af916+'-'+_0x417b88+'/'+_0x4af35e)['json'](_0x4c92b2);}return null;};}function patchUpdates(_0xcbb4db){return function(_0xe8e88){try{jsonpatch[_0xe3ea('0x22')](_0xe8e88,_0xcbb4db,!![]);}catch(_0x181720){return BPromise[_0xe3ea('0x23')](_0x181720);}return _0xe8e88[_0xe3ea('0x24')]();};}function saveUpdates(_0x161c0e,_0x2f763b){return function(_0x342192){if(_0x342192){return _0x342192[_0xe3ea('0x25')](_0x161c0e)[_0xe3ea('0x26')](function(_0x37be78){return _0x37be78;});}return null;};}function removeEntity(_0x196fac,_0x580da3){return function(_0x3f728c){if(_0x3f728c){return _0x3f728c[_0xe3ea('0x27')]()[_0xe3ea('0x26')](function(){var _0x21082d=_0x3f728c[_0xe3ea('0x28')]({'plain':!![]});var _0x3c7131=_0xe3ea('0x29');return db['UserProfileResource'][_0xe3ea('0x27')]({'where':{'type':_0x3c7131,'resourceId':_0x21082d['id']}})[_0xe3ea('0x26')](function(){return _0x3f728c;});})['then'](function(){_0x196fac[_0xe3ea('0x1b')](0xcc)[_0xe3ea('0x2a')]();});}};}function handleEntityNotFound(_0x218dcb,_0x30c2be){return function(_0x54bc71){if(!_0x54bc71){_0x218dcb['sendStatus'](0x194);}return _0x54bc71;};}function handleError(_0x3e9c65,_0x4df0aa){_0x4df0aa=_0x4df0aa||0x1f4;return function(_0x3032b1){logger[_0xe3ea('0x2b')](_0x3032b1[_0xe3ea('0x2c')]);if(_0x3032b1['name']){delete _0x3032b1[_0xe3ea('0x2d')];}_0x3e9c65['status'](_0x4df0aa)[_0xe3ea('0x2e')](_0x3032b1);};}exports[_0xe3ea('0x2f')]=function(_0x45a01b,_0x530948){var _0x451cfe={},_0x56be4a={},_0x264e44={'count':0x0,'rows':[]};var _0x1f4685=_[_0xe3ea('0x30')](db[_0xe3ea('0x31')]['rawAttributes'],function(_0x4bf1fa){return{'name':_0x4bf1fa[_0xe3ea('0x32')],'type':_0x4bf1fa[_0xe3ea('0x33')][_0xe3ea('0x34')]};});_0x56be4a[_0xe3ea('0x35')]=_[_0xe3ea('0x30')](_0x1f4685,'name');_0x56be4a[_0xe3ea('0x36')]=_['keys'](_0x45a01b['query']);_0x56be4a[_0xe3ea('0x37')]=_[_0xe3ea('0x38')](_0x56be4a['model'],_0x56be4a['query']);_0x451cfe[_0xe3ea('0x39')]=_[_0xe3ea('0x38')](_0x56be4a[_0xe3ea('0x35')],qs[_0xe3ea('0x3a')](_0x45a01b[_0xe3ea('0x36')][_0xe3ea('0x3a')]));_0x451cfe['attributes']=_0x451cfe[_0xe3ea('0x39')][_0xe3ea('0x3b')]?_0x451cfe[_0xe3ea('0x39')]:_0x56be4a[_0xe3ea('0x35')];if(!_0x45a01b[_0xe3ea('0x36')][_0xe3ea('0x3c')](_0xe3ea('0x3d'))){_0x451cfe[_0xe3ea('0x1e')]=qs[_0xe3ea('0x1e')](_0x45a01b[_0xe3ea('0x36')][_0xe3ea('0x1e')]);_0x451cfe[_0xe3ea('0x1d')]=qs[_0xe3ea('0x1d')](_0x45a01b[_0xe3ea('0x36')]['offset']);}_0x451cfe['order']=qs[_0xe3ea('0x3e')](_0x45a01b[_0xe3ea('0x36')][_0xe3ea('0x3e')]);_0x451cfe['where']=qs[_0xe3ea('0x37')](_[_0xe3ea('0x3f')](_0x45a01b[_0xe3ea('0x36')],_0x56be4a[_0xe3ea('0x37')]),_0x1f4685);if(_0x45a01b[_0xe3ea('0x36')]['filter']){_0x451cfe[_0xe3ea('0x40')]=_['merge'](_0x451cfe['where'],{'$or':_[_0xe3ea('0x30')](_0x1f4685,function(_0xc675ce){if(_0xc675ce[_0xe3ea('0x33')]!==_0xe3ea('0x41')){var _0x235a64={};_0x235a64[_0xc675ce[_0xe3ea('0x2d')]]={'$like':'%'+_0x45a01b[_0xe3ea('0x36')][_0xe3ea('0x42')]+'%'};return _0x235a64;}})});}_0x451cfe=_['merge']({},_0x451cfe,_0x45a01b['options']);var _0x2f5533={'where':_0x451cfe[_0xe3ea('0x40')]};return db[_0xe3ea('0x31')]['count'](_0x2f5533)[_0xe3ea('0x26')](function(_0x58df4e){_0x264e44[_0xe3ea('0x20')]=_0x58df4e;if(_0x45a01b[_0xe3ea('0x36')]['includeAll']){_0x451cfe['include']=[{'all':!![]}];}return db[_0xe3ea('0x31')][_0xe3ea('0x43')](_0x451cfe);})[_0xe3ea('0x26')](function(_0x5d18ec){_0x264e44[_0xe3ea('0x44')]=_0x5d18ec;return _0x264e44;})['then'](respondWithFilteredResult(_0x530948,_0x451cfe))[_0xe3ea('0x45')](handleError(_0x530948,null));};exports[_0xe3ea('0x46')]=function(_0x4c3f20,_0x34fd9c){var _0x536d73={'raw':![],'where':{'id':_0x4c3f20[_0xe3ea('0x47')]['id']}},_0x4fa668={};_0x4fa668[_0xe3ea('0x35')]=_[_0xe3ea('0x48')](db[_0xe3ea('0x31')][_0xe3ea('0x49')]);_0x4fa668[_0xe3ea('0x36')]=_[_0xe3ea('0x48')](_0x4c3f20['query']);_0x4fa668[_0xe3ea('0x37')]=_[_0xe3ea('0x38')](_0x4fa668['model'],_0x4fa668[_0xe3ea('0x36')]);_0x536d73[_0xe3ea('0x39')]=_[_0xe3ea('0x38')](_0x4fa668[_0xe3ea('0x35')],qs[_0xe3ea('0x3a')](_0x4c3f20['query'][_0xe3ea('0x3a')]));_0x536d73[_0xe3ea('0x39')]=_0x536d73[_0xe3ea('0x39')]['length']?_0x536d73['attributes']:_0x4fa668['model'];if(_0x4c3f20[_0xe3ea('0x36')][_0xe3ea('0x4a')]){_0x536d73['include']=[{'all':!![]}];}_0x536d73=_[_0xe3ea('0x4b')]({},_0x536d73,_0x4c3f20[_0xe3ea('0x4c')]);return db[_0xe3ea('0x31')][_0xe3ea('0x4d')](_0x536d73)[_0xe3ea('0x26')](handleEntityNotFound(_0x34fd9c,null))[_0xe3ea('0x26')](respondWithResult(_0x34fd9c,null))['catch'](handleError(_0x34fd9c,null));};exports[_0xe3ea('0x4e')]=function(_0x4d71a9,_0x3b9e62){return db['JscriptyProject'][_0xe3ea('0x4e')](_0x4d71a9[_0xe3ea('0x4f')],{})['then'](function(_0xb69b73){var _0x3263ea=_0x4d71a9[_0xe3ea('0x50')][_0xe3ea('0x28')]({'plain':!![]});if(!_0x3263ea)throw new Error(_0xe3ea('0x51'));if(_0x3263ea[_0xe3ea('0x52')]===_0xe3ea('0x50')){var _0x41c1a7=_0xb69b73[_0xe3ea('0x28')]({'plain':!![]});var _0x4008e6=_0xe3ea('0x29');return db[_0xe3ea('0x53')][_0xe3ea('0x4d')]({'where':{'name':_0x4008e6,'userProfileId':_0x3263ea['userProfileId']},'raw':!![]})[_0xe3ea('0x26')](function(_0x348939){if(_0x348939&&_0x348939['autoAssociation']===0x0){return db[_0xe3ea('0x54')][_0xe3ea('0x4e')]({'name':_0x41c1a7[_0xe3ea('0x2d')],'resourceId':_0x41c1a7['id'],'type':_0x348939[_0xe3ea('0x2d')],'sectionId':_0x348939['id']},{})[_0xe3ea('0x26')](function(){return _0xb69b73;});}else{return _0xb69b73;}})[_0xe3ea('0x45')](function(_0x2a39fa){logger['error'](_0xe3ea('0x55'),_0x2a39fa);throw _0x2a39fa;});}return _0xb69b73;})[_0xe3ea('0x26')](respondWithResult(_0x3b9e62,0xc9))[_0xe3ea('0x45')](handleError(_0x3b9e62,null));};exports[_0xe3ea('0x56')]=function(_0x3ff403,_0x11cef2){var _0x29b170={'where':{'id':_0x3ff403[_0xe3ea('0x47')]['id']}},_0x3742ab={};_0x3742ab['model']=_['keys'](db[_0xe3ea('0x31')][_0xe3ea('0x49')]);_0x29b170[_0xe3ea('0x39')]=_[_0xe3ea('0x38')](_0x3742ab[_0xe3ea('0x35')],qs[_0xe3ea('0x3a')](_0x3ff403[_0xe3ea('0x36')][_0xe3ea('0x3a')]));_0x29b170[_0xe3ea('0x39')]=_0x29b170['attributes'][_0xe3ea('0x3b')]?_0x29b170[_0xe3ea('0x39')]:_0x3742ab[_0xe3ea('0x35')];if(_0x3ff403['query'][_0xe3ea('0x4a')]){_0x29b170[_0xe3ea('0x57')]=[{'all':!![]}];}_0x29b170=_['merge']({},_0x29b170,_0x3ff403[_0xe3ea('0x4c')]);return db[_0xe3ea('0x31')][_0xe3ea('0x4d')](_0x29b170)[_0xe3ea('0x26')](handleEntityNotFound(_0x11cef2,null))['then'](function(_0xf41294){if(_0xf41294){var _0x21240c=_0xf41294[_0xe3ea('0x28')]({'plain':!![]});_0x21240c=qs[_0xe3ea('0x58')](_0x21240c,['id','createdAt','updatedAt']);_0x3ff403[_0xe3ea('0x4f')]=_[_0xe3ea('0x58')](_0x3ff403[_0xe3ea('0x4f')],['id',_0xe3ea('0x59'),_0xe3ea('0x5a')]);return db[_0xe3ea('0x31')][_0xe3ea('0x4e')](_['merge'](_0x21240c,_0x3ff403['body']),{'include':_0x3ff403[_0xe3ea('0x36')][_0xe3ea('0x4a')]?[{'all':!![]}]:undefined})[_0xe3ea('0x26')](function(_0x28121f){var _0x5abbd9=_0x3ff403[_0xe3ea('0x50')][_0xe3ea('0x28')]({'plain':!![]});if(!_0x5abbd9)throw new Error(_0xe3ea('0x51'));if(_0x5abbd9['role']===_0xe3ea('0x50')){var _0x1e9f1e=_0x28121f['get']({'plain':!![]});var _0x4df5ac='Projects';return db['UserProfileSection']['find']({'where':{'name':_0x4df5ac,'userProfileId':_0x5abbd9[_0xe3ea('0x5b')]},'raw':!![]})[_0xe3ea('0x26')](function(_0x3d14be){if(_0x3d14be&&_0x3d14be[_0xe3ea('0x5c')]===0x0){return db[_0xe3ea('0x54')]['create']({'name':_0x1e9f1e[_0xe3ea('0x2d')],'resourceId':_0x1e9f1e['id'],'type':_0x3d14be['name'],'sectionId':_0x3d14be['id']},{})[_0xe3ea('0x26')](function(){return _0x28121f;});}else{return _0x28121f;}})[_0xe3ea('0x45')](function(_0x53dd48){logger[_0xe3ea('0x2b')](_0xe3ea('0x55'),_0x53dd48);throw _0x53dd48;});}return _0x28121f;});}})['then'](respondWithResult(_0x11cef2,0xc9))[_0xe3ea('0x45')](handleError(_0x11cef2,null));};exports[_0xe3ea('0x25')]=function(_0x3179e4,_0x5a7222){if(_0x3179e4[_0xe3ea('0x4f')]['id']){delete _0x3179e4[_0xe3ea('0x4f')]['id'];}return db[_0xe3ea('0x31')][_0xe3ea('0x4d')]({'where':{'id':_0x3179e4[_0xe3ea('0x47')]['id']}})[_0xe3ea('0x26')](handleEntityNotFound(_0x5a7222,null))[_0xe3ea('0x26')](saveUpdates(_0x3179e4[_0xe3ea('0x4f')],null))[_0xe3ea('0x26')](respondWithResult(_0x5a7222,null))[_0xe3ea('0x45')](handleError(_0x5a7222,null));};exports['destroy']=function(_0x33d7f8,_0x137ade){return db[_0xe3ea('0x31')][_0xe3ea('0x4d')]({'where':{'id':_0x33d7f8[_0xe3ea('0x47')]['id']}})[_0xe3ea('0x26')](handleEntityNotFound(_0x137ade,null))[_0xe3ea('0x26')](removeEntity(_0x137ade,null))[_0xe3ea('0x45')](handleError(_0x137ade,null));};exports[_0xe3ea('0x5d')]=function(_0x30d733,_0x4a7882,_0x372ff5){var _0x3007a5={'raw':!![],'where':{}};var _0x4cb1c3={};var _0x4b9b1a={'count':0x0,'rows':[]};return db[_0xe3ea('0x31')][_0xe3ea('0x5e')]({'where':{'id':_0x30d733[_0xe3ea('0x47')]['id']}})['then'](handleEntityNotFound(_0x4a7882,null))[_0xe3ea('0x26')](function(_0x460cd3){if(_0x460cd3){_0x4cb1c3[_0xe3ea('0x35')]=_['keys'](db[_0xe3ea('0x5f')][_0xe3ea('0x49')]);_0x4cb1c3['query']=_['keys'](_0x30d733[_0xe3ea('0x36')]);_0x4cb1c3[_0xe3ea('0x37')]=_[_0xe3ea('0x38')](_0x4cb1c3[_0xe3ea('0x35')],_0x4cb1c3[_0xe3ea('0x36')]);_0x3007a5[_0xe3ea('0x39')]=_['intersection'](_0x4cb1c3['model'],qs[_0xe3ea('0x3a')](_0x30d733[_0xe3ea('0x36')][_0xe3ea('0x3a')]));_0x3007a5[_0xe3ea('0x39')]=_0x3007a5[_0xe3ea('0x39')][_0xe3ea('0x3b')]?_0x3007a5[_0xe3ea('0x39')]:_0x4cb1c3[_0xe3ea('0x35')];if(!_0x30d733[_0xe3ea('0x36')][_0xe3ea('0x3c')](_0xe3ea('0x3d'))){_0x3007a5[_0xe3ea('0x1e')]=qs[_0xe3ea('0x1e')](_0x30d733[_0xe3ea('0x36')][_0xe3ea('0x1e')]);_0x3007a5[_0xe3ea('0x1d')]=qs[_0xe3ea('0x1d')](_0x30d733['query'][_0xe3ea('0x1d')]);}_0x3007a5[_0xe3ea('0x60')]=qs[_0xe3ea('0x3e')](_0x30d733[_0xe3ea('0x36')][_0xe3ea('0x3e')]);_0x3007a5[_0xe3ea('0x40')]=qs[_0xe3ea('0x37')](_['pick'](_0x30d733['query'],_0x4cb1c3[_0xe3ea('0x37')]));_0x3007a5[_0xe3ea('0x40')]['ProjectId']=_0x460cd3['id'];if(_0x30d733['query'][_0xe3ea('0x42')]){_0x3007a5[_0xe3ea('0x40')]=_['merge'](_0x3007a5['where'],{'$or':_['map'](_0x3007a5[_0xe3ea('0x39')],function(_0x3cabcb){var _0x4ccee8={};_0x4ccee8[_0x3cabcb]={'$like':'%'+_0x30d733[_0xe3ea('0x36')][_0xe3ea('0x42')]+'%'};return _0x4ccee8;})});}_0x3007a5=_[_0xe3ea('0x4b')]({},_0x3007a5,_0x30d733['options']);return db[_0xe3ea('0x5f')][_0xe3ea('0x20')]({'where':_0x3007a5[_0xe3ea('0x40')]})['then'](function(_0x506491){_0x4b9b1a[_0xe3ea('0x20')]=_0x506491;if(_0x30d733[_0xe3ea('0x36')][_0xe3ea('0x4a')]){_0x3007a5['include']=[{'all':!![]}];}return db[_0xe3ea('0x5f')][_0xe3ea('0x43')](_0x3007a5);})[_0xe3ea('0x26')](function(_0x49143d){_0x4b9b1a['rows']=_0x49143d;return _0x4b9b1a;});}})[_0xe3ea('0x26')](respondWithFilteredResult(_0x4a7882,_0x3007a5))[_0xe3ea('0x45')](handleError(_0x4a7882,null));};exports['getAnswers']=function(_0x35f1fe,_0x1c2c03,_0x30ab5b){var _0x1967c3={'raw':!![],'where':{}};var _0x39280c={};var _0x38117c={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xe3ea('0x5e')]({'where':{'id':_0x35f1fe[_0xe3ea('0x47')]['id']}})[_0xe3ea('0x26')](handleEntityNotFound(_0x1c2c03,null))[_0xe3ea('0x26')](function(_0x4db7ae){if(_0x4db7ae){_0x39280c['model']=_['keys'](db[_0xe3ea('0x61')][_0xe3ea('0x49')]);_0x39280c['query']=_[_0xe3ea('0x48')](_0x35f1fe[_0xe3ea('0x36')]);_0x39280c['filters']=_[_0xe3ea('0x38')](_0x39280c[_0xe3ea('0x35')],_0x39280c[_0xe3ea('0x36')]);_0x1967c3[_0xe3ea('0x39')]=_[_0xe3ea('0x38')](_0x39280c['model'],qs[_0xe3ea('0x3a')](_0x35f1fe['query'][_0xe3ea('0x3a')]));_0x1967c3[_0xe3ea('0x39')]=_0x1967c3[_0xe3ea('0x39')][_0xe3ea('0x3b')]?_0x1967c3[_0xe3ea('0x39')]:_0x39280c[_0xe3ea('0x35')];if(!_0x35f1fe['query'][_0xe3ea('0x3c')](_0xe3ea('0x3d'))){_0x1967c3[_0xe3ea('0x1e')]=qs[_0xe3ea('0x1e')](_0x35f1fe[_0xe3ea('0x36')]['limit']);_0x1967c3[_0xe3ea('0x1d')]=qs[_0xe3ea('0x1d')](_0x35f1fe[_0xe3ea('0x36')][_0xe3ea('0x1d')]);}_0x1967c3[_0xe3ea('0x60')]=qs[_0xe3ea('0x3e')](_0x35f1fe[_0xe3ea('0x36')][_0xe3ea('0x3e')]);_0x1967c3[_0xe3ea('0x40')]=qs[_0xe3ea('0x37')](_[_0xe3ea('0x3f')](_0x35f1fe[_0xe3ea('0x36')],_0x39280c['filters']));_0x1967c3['where'][_0xe3ea('0x62')]=_0x4db7ae['id'];if(_0x35f1fe[_0xe3ea('0x36')][_0xe3ea('0x42')]){_0x1967c3[_0xe3ea('0x40')]=_[_0xe3ea('0x4b')](_0x1967c3[_0xe3ea('0x40')],{'$or':_['map'](_0x1967c3[_0xe3ea('0x39')],function(_0x436b03){var _0x9c714e={};_0x9c714e[_0x436b03]={'$like':'%'+_0x35f1fe['query']['filter']+'%'};return _0x9c714e;})});}_0x1967c3=_['merge']({},_0x1967c3,_0x35f1fe[_0xe3ea('0x4c')]);return db[_0xe3ea('0x61')][_0xe3ea('0x20')]({'where':_0x1967c3[_0xe3ea('0x40')]})[_0xe3ea('0x26')](function(_0x543de9){_0x38117c['count']=_0x543de9;if(_0x35f1fe[_0xe3ea('0x36')][_0xe3ea('0x4a')]){_0x1967c3[_0xe3ea('0x57')]=[{'all':!![]}];}return db[_0xe3ea('0x61')][_0xe3ea('0x43')](_0x1967c3);})[_0xe3ea('0x26')](function(_0x321baf){_0x38117c['rows']=_0x321baf;return _0x38117c;});}})[_0xe3ea('0x26')](respondWithFilteredResult(_0x1c2c03,_0x1967c3))[_0xe3ea('0x45')](handleError(_0x1c2c03,null));};function char(_0x1c2bc2){return'number'===typeof _0x1c2bc2?String['fromCharCode'][_0xe3ea('0x22')](null,arguments):_0x1c2bc2;}function needsEncapsulation(_0x2cd60d){return!!_0x2cd60d&&(_0x2cd60d[_0xe3ea('0x63')]()[_0xe3ea('0x64')](char(0xd))>=0x0||_0x2cd60d['toString']()[_0xe3ea('0x64')](char(0xa))>=0x0||_0x2cd60d['toString']()[_0xe3ea('0x64')](char(0x2c))>=0x0||_0x2cd60d[_0xe3ea('0x63')]()[_0xe3ea('0x64')](char(0x22))>=0x0);}function encapsulate(_0x32cf10){var _0x1594d6=char(0x22),_0x483bb3='\x5c'+char(0x22),_0x10afe6=_0x32cf10[_0xe3ea('0x63')]()['replace'](new RegExp(_0x1594d6,'g'),_0x483bb3);return _0x1594d6+_0x10afe6+_0x1594d6;}exports['getSummary']=function(_0x10a75a,_0x18f244,_0xcafc5f){var _0x3b0d3a,_0x23fc3e;var _0x509e5d={'where':{'ProjectId':_0x10a75a[_0xe3ea('0x47')]['id']}};if(_0x10a75a[_0xe3ea('0x36')][_0xe3ea('0x65')]){_0x509e5d['where'][_0xe3ea('0x66')]=JSON[_0xe3ea('0x67')](_0x10a75a[_0xe3ea('0x36')]['startTime']);}return db[_0xe3ea('0x5f')][_0xe3ea('0x43')](_0x509e5d)[_0xe3ea('0x26')](handleEntityNotFound(_0x18f244,null))[_0xe3ea('0x26')](function(_0x9b529f){if(_0x9b529f){_0x3b0d3a=_0x9b529f;return db[_0xe3ea('0x68')][_0xe3ea('0x43')]({'where':{'SessionId':{'$in':_[_0xe3ea('0x30')](_0x3b0d3a,'id')},'ProjectId':_0x10a75a['params']['id']},'order':'-createdAt'});}})[_0xe3ea('0x26')](handleEntityNotFound(_0x18f244,null))[_0xe3ea('0x26')](function(_0x1c3d22){if(_0x1c3d22){_0x23fc3e=_0x1c3d22;var _0xf423a5={};for(var _0x31dcef=0x0,_0x933189=_0x23fc3e['length'];_0x31dcef<_0x933189;_0x31dcef++){if(!_0xf423a5[_0xe3ea('0x3c')](_0x23fc3e[_0x31dcef][_0xe3ea('0x69')])){_0xf423a5[_0x23fc3e[_0x31dcef][_0xe3ea('0x69')]]=needsEncapsulation(_0x23fc3e[_0x31dcef][_0xe3ea('0x6a')])?encapsulate(_0x23fc3e[_0x31dcef][_0xe3ea('0x6a')]):_0x23fc3e[_0x31dcef][_0xe3ea('0x6a')];}}var _0x275d60=[],_0x493d58={};for(var _0x358e2e=0x0,_0x59c705=_0x3b0d3a[_0xe3ea('0x3b')];_0x358e2e<_0x59c705;_0x358e2e++){_0x493d58={'ProjectId':_0x10a75a[_0xe3ea('0x47')]['id'],'SessionId':_0x3b0d3a[_0x358e2e]['id'],'StartTime':moment(_0x3b0d3a[_0x358e2e][_0xe3ea('0x66')])[_0xe3ea('0x6b')](_0xe3ea('0x6c'))};for(var _0xc5f686=0x0,_0x34243b=_0x23fc3e[_0xe3ea('0x3b')];_0xc5f686<_0x34243b;_0xc5f686++){if(_0x23fc3e[_0xc5f686]['SessionId']==_0x3b0d3a[_0x358e2e]['id']&&_0xf423a5[_0xe3ea('0x3c')](_0x23fc3e[_0xc5f686][_0xe3ea('0x69')])){_0x493d58[_0xf423a5[_0x23fc3e[_0xc5f686][_0xe3ea('0x69')]]]=_0x23fc3e[_0xc5f686][_0xe3ea('0x6d')];}}for(var _0x558bc6 in _0xf423a5){if(!_0x493d58[_0xe3ea('0x3c')](_0xf423a5[_0x558bc6])){_0x493d58[_0xf423a5[_0x558bc6]]=null;}}_0x275d60['push'](_0x493d58);}return _0x275d60;}})['then'](function(_0x5a60d7){if(!_[_0xe3ea('0x6e')](_0x5a60d7)){var _0x4d453f=toCsv(_0x5a60d7);var _0x34128e=Date[_0xe3ea('0x6f')]();fs[_0xe3ea('0x70')](util[_0xe3ea('0x6b')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x10a75a['params']['id'],_0x34128e),_0x4d453f);_0x18f244[_0xe3ea('0x71')](_0xe3ea('0x72'),_0xe3ea('0x73')+util[_0xe3ea('0x6b')](_0xe3ea('0x74'),_0x10a75a['params']['id'],_0x34128e));_0x18f244[_0xe3ea('0x71')](_0xe3ea('0x75'),'text/csv');return _0x18f244[_0xe3ea('0x76')](util[_0xe3ea('0x6b')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x10a75a[_0xe3ea('0x47')]['id'],_0x34128e));}else{return _0x18f244[_0xe3ea('0x1a')](0xcc);}})[_0xe3ea('0x45')](handleError(_0x18f244,null));};
\ No newline at end of file
+var _0x7033=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','JscriptyProject','count','includeAll','include','findAll','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Projects','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','userProfileId','update','getSessions','JscriptySessionReport','sort','ProjectId','rows','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','sendStatus','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','destroy','get','UserProfileResource','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x186141,_0x3cf2e2){var _0xc4ab9f=function(_0x4c0621){while(--_0x4c0621){_0x186141['push'](_0x186141['shift']());}};_0xc4ab9f(++_0x3cf2e2);}(_0x7033,0x19e));var _0x3703=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x7033[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x3703('0x0'));var rimraf=require(_0x3703('0x1'));var zipdir=require(_0x3703('0x2'));var jsonpatch=require(_0x3703('0x3'));var rp=require('request-promise');var moment=require(_0x3703('0x4'));var BPromise=require(_0x3703('0x5'));var Mustache=require(_0x3703('0x6'));var util=require(_0x3703('0x7'));var path=require(_0x3703('0x8'));var sox=require(_0x3703('0x9'));var csv=require(_0x3703('0xa'));var ejs=require(_0x3703('0xb'));var fs=require('fs');var fs_extra=require(_0x3703('0xc'));var _=require(_0x3703('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3703('0xe'));var toCsv=require(_0x3703('0xa'));var querystring=require(_0x3703('0xf'));var Papa=require(_0x3703('0x10'));var Redis=require(_0x3703('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3703('0x12'));var as=require(_0x3703('0x13'));var hardwareService=require(_0x3703('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x3703('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3703('0x16'));var db=require(_0x3703('0x17'))['db'];function respondWithStatusCode(_0x31c0df,_0x41af55){_0x41af55=_0x41af55||0xcc;return function(_0x520ce3){if(_0x520ce3){return _0x31c0df['sendStatus'](_0x41af55);}return _0x31c0df[_0x3703('0x18')](_0x41af55)[_0x3703('0x19')]();};}function respondWithResult(_0x44d586,_0x6318f2){_0x6318f2=_0x6318f2||0xc8;return function(_0x25d3ef){if(_0x25d3ef){return _0x44d586[_0x3703('0x18')](_0x6318f2)[_0x3703('0x1a')](_0x25d3ef);}};}function respondWithFilteredResult(_0x12d16c,_0x23b04e){return function(_0x2457c1){if(_0x2457c1){var _0x3a8a89=typeof _0x23b04e[_0x3703('0x1b')]===_0x3703('0x1c')&&typeof _0x23b04e[_0x3703('0x1d')]==='undefined';var _0x3cbbce=_0x2457c1['count'];var _0x10ff16=_0x3a8a89?0x0:_0x23b04e['offset'];var _0x433d67=_0x3a8a89?_0x2457c1['count']:_0x23b04e[_0x3703('0x1b')]+_0x23b04e[_0x3703('0x1d')];var _0x5deb5b;if(_0x433d67>=_0x3cbbce){_0x433d67=_0x3cbbce;_0x5deb5b=0xc8;}else{_0x5deb5b=0xce;}_0x12d16c[_0x3703('0x18')](_0x5deb5b);return _0x12d16c[_0x3703('0x1e')](_0x3703('0x1f'),_0x10ff16+'-'+_0x433d67+'/'+_0x3cbbce)[_0x3703('0x1a')](_0x2457c1);}return null;};}function patchUpdates(_0x2a4983){return function(_0x51b1c8){try{jsonpatch[_0x3703('0x20')](_0x51b1c8,_0x2a4983,!![]);}catch(_0xc45c46){return BPromise[_0x3703('0x21')](_0xc45c46);}return _0x51b1c8['save']();};}function saveUpdates(_0x386c4a,_0x255266){return function(_0x10c74d){if(_0x10c74d){return _0x10c74d['update'](_0x386c4a)['then'](function(_0x4b9d6f){return _0x4b9d6f;});}return null;};}function removeEntity(_0x425388,_0x34aaf8){return function(_0x306905){if(_0x306905){return _0x306905[_0x3703('0x22')]()['then'](function(){var _0x4fe6dd=_0x306905[_0x3703('0x23')]({'plain':!![]});var _0x5e68f2='Projects';return db[_0x3703('0x24')][_0x3703('0x22')]({'where':{'type':_0x5e68f2,'resourceId':_0x4fe6dd['id']}})['then'](function(){return _0x306905;});})[_0x3703('0x25')](function(){_0x425388[_0x3703('0x18')](0xcc)[_0x3703('0x19')]();});}};}function handleEntityNotFound(_0x2f0fe9,_0x42b15c){return function(_0x59c6ca){if(!_0x59c6ca){_0x2f0fe9['sendStatus'](0x194);}return _0x59c6ca;};}function handleError(_0x375f6a,_0x5bfc23){_0x5bfc23=_0x5bfc23||0x1f4;return function(_0x1e280c){logger[_0x3703('0x26')](_0x1e280c['stack']);if(_0x1e280c['name']){delete _0x1e280c[_0x3703('0x27')];}_0x375f6a[_0x3703('0x18')](_0x5bfc23)[_0x3703('0x28')](_0x1e280c);};}exports[_0x3703('0x29')]=function(_0x2c6c19,_0x2be412){var _0x465bca={},_0xed6e41={},_0x1737c4={'count':0x0,'rows':[]};var _0xe2cdf=_[_0x3703('0x2a')](db['JscriptyProject'][_0x3703('0x2b')],function(_0x40778a){return{'name':_0x40778a[_0x3703('0x2c')],'type':_0x40778a[_0x3703('0x2d')][_0x3703('0x2e')]};});_0xed6e41[_0x3703('0x2f')]=_[_0x3703('0x2a')](_0xe2cdf,_0x3703('0x27'));_0xed6e41[_0x3703('0x30')]=_[_0x3703('0x31')](_0x2c6c19[_0x3703('0x30')]);_0xed6e41[_0x3703('0x32')]=_[_0x3703('0x33')](_0xed6e41[_0x3703('0x2f')],_0xed6e41[_0x3703('0x30')]);_0x465bca[_0x3703('0x34')]=_[_0x3703('0x33')](_0xed6e41[_0x3703('0x2f')],qs[_0x3703('0x35')](_0x2c6c19[_0x3703('0x30')][_0x3703('0x35')]));_0x465bca[_0x3703('0x34')]=_0x465bca['attributes'][_0x3703('0x36')]?_0x465bca['attributes']:_0xed6e41[_0x3703('0x2f')];if(!_0x2c6c19['query'][_0x3703('0x37')](_0x3703('0x38'))){_0x465bca[_0x3703('0x1d')]=qs[_0x3703('0x1d')](_0x2c6c19[_0x3703('0x30')]['limit']);_0x465bca[_0x3703('0x1b')]=qs['offset'](_0x2c6c19[_0x3703('0x30')][_0x3703('0x1b')]);}_0x465bca[_0x3703('0x39')]=qs['sort'](_0x2c6c19[_0x3703('0x30')]['sort']);_0x465bca[_0x3703('0x3a')]=qs[_0x3703('0x32')](_[_0x3703('0x3b')](_0x2c6c19[_0x3703('0x30')],_0xed6e41[_0x3703('0x32')]),_0xe2cdf);if(_0x2c6c19[_0x3703('0x30')]['filter']){_0x465bca['where']=_[_0x3703('0x3c')](_0x465bca[_0x3703('0x3a')],{'$or':_['map'](_0xe2cdf,function(_0x32f35a){if(_0x32f35a[_0x3703('0x2d')]!==_0x3703('0x3d')){var _0x12ee82={};_0x12ee82[_0x32f35a[_0x3703('0x27')]]={'$like':'%'+_0x2c6c19[_0x3703('0x30')][_0x3703('0x3e')]+'%'};return _0x12ee82;}})});}_0x465bca=_[_0x3703('0x3c')]({},_0x465bca,_0x2c6c19[_0x3703('0x3f')]);var _0x5997f4={'where':_0x465bca['where']};return db[_0x3703('0x40')][_0x3703('0x41')](_0x5997f4)['then'](function(_0x39760d){_0x1737c4[_0x3703('0x41')]=_0x39760d;if(_0x2c6c19[_0x3703('0x30')][_0x3703('0x42')]){_0x465bca[_0x3703('0x43')]=[{'all':!![]}];}return db[_0x3703('0x40')][_0x3703('0x44')](_0x465bca);})[_0x3703('0x25')](function(_0x1d39c7){_0x1737c4['rows']=_0x1d39c7;return _0x1737c4;})['then'](respondWithFilteredResult(_0x2be412,_0x465bca))[_0x3703('0x45')](handleError(_0x2be412,null));};exports['show']=function(_0x535d21,_0x17d1ca){var _0x3e7b9f={'raw':![],'where':{'id':_0x535d21[_0x3703('0x46')]['id']}},_0x93eb29={};_0x93eb29[_0x3703('0x2f')]=_[_0x3703('0x31')](db[_0x3703('0x40')]['rawAttributes']);_0x93eb29[_0x3703('0x30')]=_[_0x3703('0x31')](_0x535d21[_0x3703('0x30')]);_0x93eb29[_0x3703('0x32')]=_['intersection'](_0x93eb29['model'],_0x93eb29[_0x3703('0x30')]);_0x3e7b9f[_0x3703('0x34')]=_[_0x3703('0x33')](_0x93eb29[_0x3703('0x2f')],qs[_0x3703('0x35')](_0x535d21[_0x3703('0x30')][_0x3703('0x35')]));_0x3e7b9f['attributes']=_0x3e7b9f[_0x3703('0x34')][_0x3703('0x36')]?_0x3e7b9f[_0x3703('0x34')]:_0x93eb29[_0x3703('0x2f')];if(_0x535d21['query']['includeAll']){_0x3e7b9f['include']=[{'all':!![]}];}_0x3e7b9f=_['merge']({},_0x3e7b9f,_0x535d21[_0x3703('0x3f')]);return db[_0x3703('0x40')][_0x3703('0x47')](_0x3e7b9f)['then'](handleEntityNotFound(_0x17d1ca,null))[_0x3703('0x25')](respondWithResult(_0x17d1ca,null))['catch'](handleError(_0x17d1ca,null));};exports[_0x3703('0x48')]=function(_0x2ab470,_0x2e19f6){return db['JscriptyProject'][_0x3703('0x48')](_0x2ab470[_0x3703('0x49')],{})[_0x3703('0x25')](function(_0x176585){var _0x59bc2c=_0x2ab470['user']['get']({'plain':!![]});if(!_0x59bc2c)throw new Error(_0x3703('0x4a'));if(_0x59bc2c['role']===_0x3703('0x4b')){var _0x528db8=_0x176585[_0x3703('0x23')]({'plain':!![]});var _0x518544=_0x3703('0x4c');return db[_0x3703('0x4d')][_0x3703('0x47')]({'where':{'name':_0x518544,'userProfileId':_0x59bc2c['userProfileId']},'raw':!![]})[_0x3703('0x25')](function(_0x19f974){if(_0x19f974&&_0x19f974[_0x3703('0x4e')]===0x0){return db[_0x3703('0x24')][_0x3703('0x48')]({'name':_0x528db8['name'],'resourceId':_0x528db8['id'],'type':_0x19f974[_0x3703('0x27')],'sectionId':_0x19f974['id']},{})['then'](function(){return _0x176585;});}else{return _0x176585;}})[_0x3703('0x45')](function(_0x4a09f8){logger[_0x3703('0x26')](_0x3703('0x4f'),_0x4a09f8);throw _0x4a09f8;});}return _0x176585;})[_0x3703('0x25')](respondWithResult(_0x2e19f6,0xc9))[_0x3703('0x45')](handleError(_0x2e19f6,null));};exports['clone']=function(_0x47fbc7,_0x18cd07){var _0x150ed5={'where':{'id':_0x47fbc7[_0x3703('0x46')]['id']}},_0x168437={};_0x168437[_0x3703('0x2f')]=_['keys'](db[_0x3703('0x40')][_0x3703('0x2b')]);_0x150ed5[_0x3703('0x34')]=_[_0x3703('0x33')](_0x168437[_0x3703('0x2f')],qs[_0x3703('0x35')](_0x47fbc7['query'][_0x3703('0x35')]));_0x150ed5[_0x3703('0x34')]=_0x150ed5[_0x3703('0x34')][_0x3703('0x36')]?_0x150ed5[_0x3703('0x34')]:_0x168437[_0x3703('0x2f')];if(_0x47fbc7[_0x3703('0x30')][_0x3703('0x42')]){_0x150ed5['include']=[{'all':!![]}];}_0x150ed5=_[_0x3703('0x3c')]({},_0x150ed5,_0x47fbc7[_0x3703('0x3f')]);return db[_0x3703('0x40')][_0x3703('0x47')](_0x150ed5)[_0x3703('0x25')](handleEntityNotFound(_0x18cd07,null))[_0x3703('0x25')](function(_0xc00cc4){if(_0xc00cc4){var _0x4bd09b=_0xc00cc4[_0x3703('0x23')]({'plain':!![]});_0x4bd09b=qs[_0x3703('0x50')](_0x4bd09b,['id',_0x3703('0x51'),_0x3703('0x52')]);_0x47fbc7[_0x3703('0x49')]=_[_0x3703('0x50')](_0x47fbc7[_0x3703('0x49')],['id',_0x3703('0x51'),_0x3703('0x52')]);return db[_0x3703('0x40')][_0x3703('0x48')](_['merge'](_0x4bd09b,_0x47fbc7['body']),{'include':_0x47fbc7[_0x3703('0x30')][_0x3703('0x42')]?[{'all':!![]}]:undefined})[_0x3703('0x25')](function(_0x4f39ef){var _0x432741=_0x47fbc7[_0x3703('0x4b')]['get']({'plain':!![]});if(!_0x432741)throw new Error(_0x3703('0x4a'));if(_0x432741['role']===_0x3703('0x4b')){var _0x11be13=_0x4f39ef[_0x3703('0x23')]({'plain':!![]});var _0x599b8b='Projects';return db[_0x3703('0x4d')]['find']({'where':{'name':_0x599b8b,'userProfileId':_0x432741[_0x3703('0x53')]},'raw':!![]})[_0x3703('0x25')](function(_0x373ec9){if(_0x373ec9&&_0x373ec9[_0x3703('0x4e')]===0x0){return db[_0x3703('0x24')][_0x3703('0x48')]({'name':_0x11be13[_0x3703('0x27')],'resourceId':_0x11be13['id'],'type':_0x373ec9[_0x3703('0x27')],'sectionId':_0x373ec9['id']},{})[_0x3703('0x25')](function(){return _0x4f39ef;});}else{return _0x4f39ef;}})[_0x3703('0x45')](function(_0x3975c2){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3975c2);throw _0x3975c2;});}return _0x4f39ef;});}})[_0x3703('0x25')](respondWithResult(_0x18cd07,0xc9))['catch'](handleError(_0x18cd07,null));};exports[_0x3703('0x54')]=function(_0x5c0e9d,_0x56e877){if(_0x5c0e9d[_0x3703('0x49')]['id']){delete _0x5c0e9d['body']['id'];}return db['JscriptyProject'][_0x3703('0x47')]({'where':{'id':_0x5c0e9d[_0x3703('0x46')]['id']}})['then'](handleEntityNotFound(_0x56e877,null))[_0x3703('0x25')](saveUpdates(_0x5c0e9d['body'],null))[_0x3703('0x25')](respondWithResult(_0x56e877,null))['catch'](handleError(_0x56e877,null));};exports[_0x3703('0x22')]=function(_0x4c1584,_0x391b57){return db[_0x3703('0x40')][_0x3703('0x47')]({'where':{'id':_0x4c1584[_0x3703('0x46')]['id']}})['then'](handleEntityNotFound(_0x391b57,null))[_0x3703('0x25')](removeEntity(_0x391b57,null))[_0x3703('0x45')](handleError(_0x391b57,null));};exports[_0x3703('0x55')]=function(_0x2dc403,_0x57c825,_0x5e6bb8){var _0x3eea4f={'raw':!![],'where':{}};var _0x4f8963={};var _0x32127e={'count':0x0,'rows':[]};return db[_0x3703('0x40')]['findOne']({'where':{'id':_0x2dc403['params']['id']}})['then'](handleEntityNotFound(_0x57c825,null))['then'](function(_0x480d5e){if(_0x480d5e){_0x4f8963[_0x3703('0x2f')]=_[_0x3703('0x31')](db[_0x3703('0x56')][_0x3703('0x2b')]);_0x4f8963[_0x3703('0x30')]=_[_0x3703('0x31')](_0x2dc403[_0x3703('0x30')]);_0x4f8963[_0x3703('0x32')]=_[_0x3703('0x33')](_0x4f8963[_0x3703('0x2f')],_0x4f8963['query']);_0x3eea4f[_0x3703('0x34')]=_['intersection'](_0x4f8963[_0x3703('0x2f')],qs[_0x3703('0x35')](_0x2dc403[_0x3703('0x30')][_0x3703('0x35')]));_0x3eea4f[_0x3703('0x34')]=_0x3eea4f['attributes']['length']?_0x3eea4f[_0x3703('0x34')]:_0x4f8963['model'];if(!_0x2dc403['query'][_0x3703('0x37')](_0x3703('0x38'))){_0x3eea4f[_0x3703('0x1d')]=qs['limit'](_0x2dc403[_0x3703('0x30')][_0x3703('0x1d')]);_0x3eea4f[_0x3703('0x1b')]=qs[_0x3703('0x1b')](_0x2dc403[_0x3703('0x30')]['offset']);}_0x3eea4f[_0x3703('0x39')]=qs['sort'](_0x2dc403[_0x3703('0x30')][_0x3703('0x57')]);_0x3eea4f[_0x3703('0x3a')]=qs[_0x3703('0x32')](_[_0x3703('0x3b')](_0x2dc403[_0x3703('0x30')],_0x4f8963[_0x3703('0x32')]));_0x3eea4f[_0x3703('0x3a')][_0x3703('0x58')]=_0x480d5e['id'];if(_0x2dc403['query']['filter']){_0x3eea4f[_0x3703('0x3a')]=_['merge'](_0x3eea4f[_0x3703('0x3a')],{'$or':_[_0x3703('0x2a')](_0x3eea4f['attributes'],function(_0x20ab73){var _0xb32369={};_0xb32369[_0x20ab73]={'$like':'%'+_0x2dc403[_0x3703('0x30')][_0x3703('0x3e')]+'%'};return _0xb32369;})});}_0x3eea4f=_['merge']({},_0x3eea4f,_0x2dc403[_0x3703('0x3f')]);return db[_0x3703('0x56')][_0x3703('0x41')]({'where':_0x3eea4f['where']})[_0x3703('0x25')](function(_0x582ea8){_0x32127e[_0x3703('0x41')]=_0x582ea8;if(_0x2dc403['query'][_0x3703('0x42')]){_0x3eea4f[_0x3703('0x43')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x3703('0x44')](_0x3eea4f);})['then'](function(_0x56a0cc){_0x32127e[_0x3703('0x59')]=_0x56a0cc;return _0x32127e;});}})[_0x3703('0x25')](respondWithFilteredResult(_0x57c825,_0x3eea4f))['catch'](handleError(_0x57c825,null));};exports['getAnswers']=function(_0xfc1b50,_0x4f25f8,_0x17617b){var _0x285edd={'raw':!![],'where':{}};var _0x543a5c={};var _0x44939f={'count':0x0,'rows':[]};return db[_0x3703('0x40')]['findOne']({'where':{'id':_0xfc1b50['params']['id']}})[_0x3703('0x25')](handleEntityNotFound(_0x4f25f8,null))[_0x3703('0x25')](function(_0x232120){if(_0x232120){_0x543a5c['model']=_[_0x3703('0x31')](db[_0x3703('0x5a')][_0x3703('0x2b')]);_0x543a5c[_0x3703('0x30')]=_[_0x3703('0x31')](_0xfc1b50[_0x3703('0x30')]);_0x543a5c[_0x3703('0x32')]=_[_0x3703('0x33')](_0x543a5c[_0x3703('0x2f')],_0x543a5c[_0x3703('0x30')]);_0x285edd[_0x3703('0x34')]=_[_0x3703('0x33')](_0x543a5c['model'],qs[_0x3703('0x35')](_0xfc1b50[_0x3703('0x30')][_0x3703('0x35')]));_0x285edd['attributes']=_0x285edd[_0x3703('0x34')][_0x3703('0x36')]?_0x285edd[_0x3703('0x34')]:_0x543a5c[_0x3703('0x2f')];if(!_0xfc1b50[_0x3703('0x30')][_0x3703('0x37')]('nolimit')){_0x285edd[_0x3703('0x1d')]=qs[_0x3703('0x1d')](_0xfc1b50[_0x3703('0x30')]['limit']);_0x285edd['offset']=qs[_0x3703('0x1b')](_0xfc1b50[_0x3703('0x30')][_0x3703('0x1b')]);}_0x285edd[_0x3703('0x39')]=qs[_0x3703('0x57')](_0xfc1b50['query']['sort']);_0x285edd[_0x3703('0x3a')]=qs[_0x3703('0x32')](_[_0x3703('0x3b')](_0xfc1b50[_0x3703('0x30')],_0x543a5c['filters']));_0x285edd[_0x3703('0x3a')]['ProjectId']=_0x232120['id'];if(_0xfc1b50[_0x3703('0x30')][_0x3703('0x3e')]){_0x285edd[_0x3703('0x3a')]=_[_0x3703('0x3c')](_0x285edd[_0x3703('0x3a')],{'$or':_[_0x3703('0x2a')](_0x285edd['attributes'],function(_0xc3c303){var _0x28a843={};_0x28a843[_0xc3c303]={'$like':'%'+_0xfc1b50['query'][_0x3703('0x3e')]+'%'};return _0x28a843;})});}_0x285edd=_[_0x3703('0x3c')]({},_0x285edd,_0xfc1b50['options']);return db[_0x3703('0x5a')]['count']({'where':_0x285edd[_0x3703('0x3a')]})[_0x3703('0x25')](function(_0x16af58){_0x44939f[_0x3703('0x41')]=_0x16af58;if(_0xfc1b50[_0x3703('0x30')]['includeAll']){_0x285edd[_0x3703('0x43')]=[{'all':!![]}];}return db[_0x3703('0x5a')]['findAll'](_0x285edd);})[_0x3703('0x25')](function(_0x58ee32){_0x44939f[_0x3703('0x59')]=_0x58ee32;return _0x44939f;});}})[_0x3703('0x25')](respondWithFilteredResult(_0x4f25f8,_0x285edd))[_0x3703('0x45')](handleError(_0x4f25f8,null));};function char(_0x3a0c16){return _0x3703('0x5b')===typeof _0x3a0c16?String['fromCharCode']['apply'](null,arguments):_0x3a0c16;}function needsEncapsulation(_0x3ac92b){return!!_0x3ac92b&&(_0x3ac92b[_0x3703('0x5c')]()[_0x3703('0x5d')](char(0xd))>=0x0||_0x3ac92b[_0x3703('0x5c')]()['indexOf'](char(0xa))>=0x0||_0x3ac92b['toString']()['indexOf'](char(0x2c))>=0x0||_0x3ac92b[_0x3703('0x5c')]()[_0x3703('0x5d')](char(0x22))>=0x0);}function encapsulate(_0xb8c719){var _0x3d4f02=char(0x22),_0x3ed476='\x5c'+char(0x22),_0x2f50fb=_0xb8c719[_0x3703('0x5c')]()[_0x3703('0x5e')](new RegExp(_0x3d4f02,'g'),_0x3ed476);return _0x3d4f02+_0x2f50fb+_0x3d4f02;}exports[_0x3703('0x5f')]=function(_0x5396e1,_0x47502e,_0x2b066e){var _0x9f76cd,_0x1c6fab;var _0x436c56={'where':{'ProjectId':_0x5396e1[_0x3703('0x46')]['id']}};if(_0x5396e1[_0x3703('0x30')][_0x3703('0x60')]){_0x436c56['where'][_0x3703('0x61')]=JSON[_0x3703('0x62')](_0x5396e1['query']['startTime']);}return db[_0x3703('0x56')][_0x3703('0x44')](_0x436c56)['then'](handleEntityNotFound(_0x47502e,null))[_0x3703('0x25')](function(_0x93245a){if(_0x93245a){_0x9f76cd=_0x93245a;return db[_0x3703('0x63')][_0x3703('0x44')]({'where':{'SessionId':{'$in':_[_0x3703('0x2a')](_0x9f76cd,'id')},'ProjectId':_0x5396e1[_0x3703('0x46')]['id']},'order':'-createdAt'});}})[_0x3703('0x25')](handleEntityNotFound(_0x47502e,null))[_0x3703('0x25')](function(_0x3ea7ab){if(_0x3ea7ab){_0x1c6fab=_0x3ea7ab;var _0x1111f0={};for(var _0x302982=0x0,_0x1272c9=_0x1c6fab[_0x3703('0x36')];_0x302982<_0x1272c9;_0x302982++){if(!_0x1111f0['hasOwnProperty'](_0x1c6fab[_0x302982][_0x3703('0x64')])){_0x1111f0[_0x1c6fab[_0x302982][_0x3703('0x64')]]=needsEncapsulation(_0x1c6fab[_0x302982]['question'])?encapsulate(_0x1c6fab[_0x302982][_0x3703('0x65')]):_0x1c6fab[_0x302982][_0x3703('0x65')];}}var _0x245873=[],_0x53b909={};for(var _0x310241=0x0,_0x5cf451=_0x9f76cd[_0x3703('0x36')];_0x310241<_0x5cf451;_0x310241++){_0x53b909={'ProjectId':_0x5396e1['params']['id'],'SessionId':_0x9f76cd[_0x310241]['id'],'StartTime':moment(_0x9f76cd[_0x310241][_0x3703('0x61')])[_0x3703('0x66')](_0x3703('0x67'))};for(var _0xd1ea95=0x0,_0x497f05=_0x1c6fab[_0x3703('0x36')];_0xd1ea95<_0x497f05;_0xd1ea95++){if(_0x1c6fab[_0xd1ea95][_0x3703('0x68')]==_0x9f76cd[_0x310241]['id']&&_0x1111f0[_0x3703('0x37')](_0x1c6fab[_0xd1ea95]['questionId'])){_0x53b909[_0x1111f0[_0x1c6fab[_0xd1ea95][_0x3703('0x64')]]]=_0x1c6fab[_0xd1ea95][_0x3703('0x69')];}}for(var _0x648474 in _0x1111f0){if(!_0x53b909['hasOwnProperty'](_0x1111f0[_0x648474])){_0x53b909[_0x1111f0[_0x648474]]=null;}}_0x245873['push'](_0x53b909);}return _0x245873;}})[_0x3703('0x25')](function(_0x3e0d9a){if(!_[_0x3703('0x6a')](_0x3e0d9a)){var _0x380594=toCsv(_0x3e0d9a);var _0x2b7aac=Date['now']();fs[_0x3703('0x6b')](util['format'](_0x3703('0x6c'),_0x5396e1['params']['id'],_0x2b7aac),_0x380594);_0x47502e[_0x3703('0x6d')](_0x3703('0x6e'),'attachment;\x20filename='+util['format'](_0x3703('0x6f'),_0x5396e1[_0x3703('0x46')]['id'],_0x2b7aac));_0x47502e[_0x3703('0x6d')](_0x3703('0x70'),_0x3703('0x71'));return _0x47502e[_0x3703('0x72')](util['format'](_0x3703('0x6c'),_0x5396e1[_0x3703('0x46')]['id'],_0x2b7aac));}else{return _0x47502e[_0x3703('0x73')](0xcc);}})[_0x3703('0x45')](handleError(_0x47502e,null));};
\ No newline at end of file
index 6ac202e..7cdc044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1dc=['request-promise','rimraf','exports','define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x42518e,_0x5b873c){var _0x50a85e=function(_0x7e2fd){while(--_0x7e2fd){_0x42518e['push'](_0x42518e['shift']());}};_0x50a85e(++_0x5b873c);}(_0xe1dc,0x8a));var _0xce1d=function(_0x74ed1c,_0x9c31a0){_0x74ed1c=_0x74ed1c-0x0;var _0x111da5=_0xe1dc[_0x74ed1c];return _0x111da5;};'use strict';var _=require(_0xce1d('0x0'));var util=require(_0xce1d('0x1'));var logger=require(_0xce1d('0x2'))(_0xce1d('0x3'));var moment=require(_0xce1d('0x4'));var BPromise=require(_0xce1d('0x5'));var rp=require(_0xce1d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xce1d('0x7'));var config=require('../../config/environment');var attributes=require('./jscriptyProject.attributes');module[_0xce1d('0x8')]=function(_0x232005,_0x2782b7){return _0x232005[_0xce1d('0x9')](_0xce1d('0xa'),attributes,{'tableName':_0xce1d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9aee=['path','rimraf','JscriptyProject','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4d84ad,_0x200d68){var _0xec03a6=function(_0x181731){while(--_0x181731){_0x4d84ad['push'](_0x4d84ad['shift']());}};_0xec03a6(++_0x200d68);}(_0x9aee,0x71));var _0xe9ae=function(_0x55a860,_0x37a53f){_0x55a860=_0x55a860-0x0;var _0x1d3867=_0x9aee[_0x55a860];return _0x1d3867;};'use strict';var _=require(_0xe9ae('0x0'));var util=require(_0xe9ae('0x1'));var logger=require(_0xe9ae('0x2'))(_0xe9ae('0x3'));var moment=require(_0xe9ae('0x4'));var BPromise=require(_0xe9ae('0x5'));var rp=require(_0xe9ae('0x6'));var fs=require('fs');var path=require(_0xe9ae('0x7'));var rimraf=require(_0xe9ae('0x8'));var config=require('../../config/environment');var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0xf3aa52,_0x4e889d){return _0xf3aa52['define'](_0xe9ae('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92de327..24e3273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0x304dc8,_0x3b91e0){var _0x17c7ec=function(_0x213dff){while(--_0x213dff){_0x304dc8['push'](_0x304dc8['shift']());}};_0x17c7ec(++_0x3b91e0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xd816e2,_0x5edac2){_0xd816e2=_0xd816e2-0x0;var _0x1f5924=_0xcb91[_0xd816e2];return _0x1f5924;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x43e796,_0x17df1b){var _0x2763c3=function(_0x18ba24){while(--_0x18ba24){_0x43e796['push'](_0x43e796['shift']());}};_0x2763c3(++_0x17df1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 06ff6ce..b7cd3b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a8=['/:id','create','put','update','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/describe','describe'];(function(_0x55da99,_0x4a6b0c){var _0x575612=function(_0x9ebd8){while(--_0x9ebd8){_0x55da99['push'](_0x55da99['shift']());}};_0x575612(++_0x4a6b0c);}(_0x71a8,0x1e6));var _0x871a=function(_0x157a60,_0x3d77a9){_0x157a60=_0x157a60-0x0;var _0x3dda8a=_0x71a8[_0x157a60];return _0x3dda8a;};'use strict';var multer=require('multer');var util=require(_0x871a('0x0'));var path=require('path');var timeout=require(_0x871a('0x1'));var express=require(_0x871a('0x2'));var router=express[_0x871a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x871a('0x4'));var interaction=require(_0x871a('0x5'));var config=require('../../config/environment');var controller=require('./jscriptyQuestionReport.controller');router['get']('/',auth[_0x871a('0x6')](),controller['index']);router[_0x871a('0x7')](_0x871a('0x8'),auth['isAuthenticated'](),controller[_0x871a('0x9')]);router[_0x871a('0x7')](_0x871a('0xa'),auth[_0x871a('0x6')](),controller['show']);router['post']('/',auth[_0x871a('0x6')](),controller[_0x871a('0xb')]);router[_0x871a('0xc')](_0x871a('0xa'),auth[_0x871a('0x6')](),controller[_0x871a('0xd')]);router['delete']('/:id',auth[_0x871a('0x6')](),controller[_0x871a('0xe')]);module[_0x871a('0xf')]=router;
\ No newline at end of file
+var _0xee13=['isAuthenticated','/:id','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xee13,0x86));var _0x3ee1=function(_0x58c2b,_0xd5a7eb){_0x58c2b=_0x58c2b-0x0;var _0x34d3e4=_0xee13[_0x58c2b];return _0x34d3e4;};'use strict';var multer=require(_0x3ee1('0x0'));var util=require(_0x3ee1('0x1'));var path=require(_0x3ee1('0x2'));var timeout=require(_0x3ee1('0x3'));var express=require(_0x3ee1('0x4'));var router=express[_0x3ee1('0x5')]();var fs_extra=require(_0x3ee1('0x6'));var auth=require(_0x3ee1('0x7'));var interaction=require(_0x3ee1('0x8'));var config=require(_0x3ee1('0x9'));var controller=require('./jscriptyQuestionReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x3ee1('0xa')]);router[_0x3ee1('0xb')](_0x3ee1('0xc'),auth[_0x3ee1('0xd')](),controller['describe']);router[_0x3ee1('0xb')](_0x3ee1('0xe'),auth[_0x3ee1('0xd')](),controller['show']);router[_0x3ee1('0xf')]('/',auth[_0x3ee1('0xd')](),controller[_0x3ee1('0x10')]);router[_0x3ee1('0x11')]('/:id',auth[_0x3ee1('0xd')](),controller['update']);router[_0x3ee1('0x12')]('/:id',auth[_0x3ee1('0xd')](),controller[_0x3ee1('0x13')]);module[_0x3ee1('0x14')]=router;
\ No newline at end of file
index 80d33cf..7b422c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_0x12ee84,_0x5c62b1){_0x12ee84=_0x12ee84-0x0;var _0x1dbd2a=_0x7a54[_0x12ee84];return _0x1dbd2a;};'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(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x7a54,0x106));var _0x47a5=function(_0x437864,_0x599155){_0x437864=_0x437864-0x0;var _0x3fb93b=_0x7a54[_0x437864];return _0x3fb93b;};'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 16458ef..464c906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc927=['crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','update','then','error','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','includeAll','include','findAll','rows','show','params','keys','options','catch','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','lodash','squel'];(function(_0x10c8b5,_0x15163e){var _0x1b7970=function(_0x481e93){while(--_0x481e93){_0x10c8b5['push'](_0x10c8b5['shift']());}};_0x1b7970(++_0x15163e);}(_0xc927,0x120));var _0x7c92=function(_0x1c2c2b,_0x4edc25){_0x1c2c2b=_0x1c2c2b-0x0;var _0x142695=_0xc927[_0x1c2c2b];return _0x142695;};'use strict';var emlformat=require(_0x7c92('0x0'));var rimraf=require(_0x7c92('0x1'));var zipdir=require(_0x7c92('0x2'));var jsonpatch=require(_0x7c92('0x3'));var rp=require(_0x7c92('0x4'));var moment=require('moment');var BPromise=require(_0x7c92('0x5'));var Mustache=require(_0x7c92('0x6'));var util=require(_0x7c92('0x7'));var path=require(_0x7c92('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7c92('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7c92('0xa'));var squel=require(_0x7c92('0xb'));var crypto=require(_0x7c92('0xc'));var jsforce=require(_0x7c92('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7c92('0xe'));var querystring=require(_0x7c92('0xf'));var Papa=require('papaparse');var Redis=require(_0x7c92('0x10'));var authService=require(_0x7c92('0x11'));var qs=require(_0x7c92('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7c92('0x13'));var logger=require('../../config/logger')(_0x7c92('0x14'));var utils=require(_0x7c92('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7c92('0x16'));var db=require(_0x7c92('0x17'))['db'];function respondWithStatusCode(_0x58ad26,_0x452ab6){_0x452ab6=_0x452ab6||0xcc;return function(_0x250a6f){if(_0x250a6f){return _0x58ad26[_0x7c92('0x18')](_0x452ab6);}return _0x58ad26[_0x7c92('0x19')](_0x452ab6)[_0x7c92('0x1a')]();};}function respondWithResult(_0x4861ca,_0x2507fa){_0x2507fa=_0x2507fa||0xc8;return function(_0x3a7dda){if(_0x3a7dda){return _0x4861ca[_0x7c92('0x19')](_0x2507fa)['json'](_0x3a7dda);}};}function respondWithFilteredResult(_0x40bd49,_0x41479b){return function(_0x513901){if(_0x513901){var _0x185731=typeof _0x41479b[_0x7c92('0x1b')]===_0x7c92('0x1c')&&typeof _0x41479b[_0x7c92('0x1d')]===_0x7c92('0x1c');var _0x5ecb6=_0x513901[_0x7c92('0x1e')];var _0x55a6ff=_0x185731?0x0:_0x41479b[_0x7c92('0x1b')];var _0x243bef=_0x185731?_0x513901[_0x7c92('0x1e')]:_0x41479b[_0x7c92('0x1b')]+_0x41479b[_0x7c92('0x1d')];var _0x329bb7;if(_0x243bef>=_0x5ecb6){_0x243bef=_0x5ecb6;_0x329bb7=0xc8;}else{_0x329bb7=0xce;}_0x40bd49['status'](_0x329bb7);return _0x40bd49['set']('Content-Range',_0x55a6ff+'-'+_0x243bef+'/'+_0x5ecb6)[_0x7c92('0x1f')](_0x513901);}return null;};}function patchUpdates(_0x3442ff){return function(_0x284de0){try{jsonpatch[_0x7c92('0x20')](_0x284de0,_0x3442ff,!![]);}catch(_0xbf2016){return BPromise[_0x7c92('0x21')](_0xbf2016);}return _0x284de0['save']();};}function saveUpdates(_0x2a2c4f,_0x127aa5){return function(_0x3ef650){if(_0x3ef650){return _0x3ef650[_0x7c92('0x22')](_0x2a2c4f)[_0x7c92('0x23')](function(_0x159119){return _0x159119;});}return null;};}function removeEntity(_0x1a9916,_0x10fb3b){return function(_0x5b5609){if(_0x5b5609){return _0x5b5609['destroy']()['then'](function(){_0x1a9916[_0x7c92('0x19')](0xcc)[_0x7c92('0x1a')]();});}};}function handleEntityNotFound(_0x5a1237,_0x28525f){return function(_0x42cc38){if(!_0x42cc38){_0x5a1237[_0x7c92('0x18')](0x194);}return _0x42cc38;};}function handleError(_0x2d5e41,_0x4db6a6){_0x4db6a6=_0x4db6a6||0x1f4;return function(_0x1fcc5d){logger[_0x7c92('0x24')](_0x1fcc5d[_0x7c92('0x25')]);if(_0x1fcc5d['name']){delete _0x1fcc5d[_0x7c92('0x26')];}_0x2d5e41[_0x7c92('0x19')](_0x4db6a6)[_0x7c92('0x27')](_0x1fcc5d);};}exports[_0x7c92('0x28')]=function(_0x484962,_0x2b6f3c){var _0x197438={},_0x53b1e3={},_0x5c8567={'count':0x0,'rows':[]};var _0x240e35=_['map'](db[_0x7c92('0x29')][_0x7c92('0x2a')],function(_0x20c86a){return{'name':_0x20c86a[_0x7c92('0x2b')],'type':_0x20c86a[_0x7c92('0x2c')][_0x7c92('0x2d')]};});_0x53b1e3[_0x7c92('0x2e')]=_['map'](_0x240e35,'name');_0x53b1e3[_0x7c92('0x2f')]=_['keys'](_0x484962[_0x7c92('0x2f')]);_0x53b1e3[_0x7c92('0x30')]=_[_0x7c92('0x31')](_0x53b1e3[_0x7c92('0x2e')],_0x53b1e3[_0x7c92('0x2f')]);_0x197438['attributes']=_[_0x7c92('0x31')](_0x53b1e3[_0x7c92('0x2e')],qs[_0x7c92('0x32')](_0x484962['query'][_0x7c92('0x32')]));_0x197438[_0x7c92('0x33')]=_0x197438[_0x7c92('0x33')][_0x7c92('0x34')]?_0x197438[_0x7c92('0x33')]:_0x53b1e3[_0x7c92('0x2e')];if(!_0x484962['query'][_0x7c92('0x35')](_0x7c92('0x36'))){_0x197438[_0x7c92('0x1d')]=qs[_0x7c92('0x1d')](_0x484962[_0x7c92('0x2f')][_0x7c92('0x1d')]);_0x197438[_0x7c92('0x1b')]=qs[_0x7c92('0x1b')](_0x484962[_0x7c92('0x2f')][_0x7c92('0x1b')]);}_0x197438['order']=qs['sort'](_0x484962['query'][_0x7c92('0x37')]);_0x197438[_0x7c92('0x38')]=qs[_0x7c92('0x30')](_[_0x7c92('0x39')](_0x484962[_0x7c92('0x2f')],_0x53b1e3[_0x7c92('0x30')]),_0x240e35);if(_0x484962['query'][_0x7c92('0x3a')]){_0x197438['where']=_[_0x7c92('0x3b')](_0x197438['where'],{'$or':_[_0x7c92('0x3c')](_0x240e35,function(_0x5679b2){if(_0x5679b2['type']!=='VIRTUAL'){var _0x56070d={};_0x56070d[_0x5679b2['name']]={'$like':'%'+_0x484962['query'][_0x7c92('0x3a')]+'%'};return _0x56070d;}})});}_0x197438=_['merge']({},_0x197438,_0x484962['options']);var _0xa98e0b={'where':_0x197438['where']};return db[_0x7c92('0x29')]['count'](_0xa98e0b)[_0x7c92('0x23')](function(_0x468975){_0x5c8567[_0x7c92('0x1e')]=_0x468975;if(_0x484962[_0x7c92('0x2f')][_0x7c92('0x3d')]){_0x197438[_0x7c92('0x3e')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x7c92('0x3f')](_0x197438);})[_0x7c92('0x23')](function(_0x11951c){_0x5c8567[_0x7c92('0x40')]=_0x11951c;return _0x5c8567;})[_0x7c92('0x23')](respondWithFilteredResult(_0x2b6f3c,_0x197438))['catch'](handleError(_0x2b6f3c,null));};exports[_0x7c92('0x41')]=function(_0x1ed7cc,_0x2a849e){var _0x5b00a9={'raw':!![],'where':{'id':_0x1ed7cc[_0x7c92('0x42')]['id']}},_0x4725c0={};_0x4725c0[_0x7c92('0x2e')]=_[_0x7c92('0x43')](db[_0x7c92('0x29')][_0x7c92('0x2a')]);_0x4725c0['query']=_['keys'](_0x1ed7cc[_0x7c92('0x2f')]);_0x4725c0[_0x7c92('0x30')]=_['intersection'](_0x4725c0['model'],_0x4725c0['query']);_0x5b00a9[_0x7c92('0x33')]=_[_0x7c92('0x31')](_0x4725c0['model'],qs['fields'](_0x1ed7cc[_0x7c92('0x2f')][_0x7c92('0x32')]));_0x5b00a9[_0x7c92('0x33')]=_0x5b00a9['attributes'][_0x7c92('0x34')]?_0x5b00a9[_0x7c92('0x33')]:_0x4725c0['model'];if(_0x1ed7cc[_0x7c92('0x2f')][_0x7c92('0x3d')]){_0x5b00a9[_0x7c92('0x3e')]=[{'all':!![]}];}_0x5b00a9=_[_0x7c92('0x3b')]({},_0x5b00a9,_0x1ed7cc[_0x7c92('0x44')]);return db[_0x7c92('0x29')]['find'](_0x5b00a9)[_0x7c92('0x23')](handleEntityNotFound(_0x2a849e,null))[_0x7c92('0x23')](respondWithResult(_0x2a849e,null))[_0x7c92('0x45')](handleError(_0x2a849e,null));};exports['create']=function(_0x233f42,_0x572504){return db[_0x7c92('0x29')][_0x7c92('0x46')](_0x233f42[_0x7c92('0x47')],{})[_0x7c92('0x23')](respondWithResult(_0x572504,0xc9))[_0x7c92('0x45')](handleError(_0x572504,null));};exports[_0x7c92('0x22')]=function(_0x23303e,_0x44e6ff){if(_0x23303e['body']['id']){delete _0x23303e[_0x7c92('0x47')]['id'];}return db[_0x7c92('0x29')][_0x7c92('0x48')]({'where':{'id':_0x23303e['params']['id']}})['then'](handleEntityNotFound(_0x44e6ff,null))['then'](saveUpdates(_0x23303e['body'],null))[_0x7c92('0x23')](respondWithResult(_0x44e6ff,null))[_0x7c92('0x45')](handleError(_0x44e6ff,null));};exports[_0x7c92('0x49')]=function(_0x5a9eb0,_0x512b77){return db[_0x7c92('0x29')][_0x7c92('0x48')]({'where':{'id':_0x5a9eb0[_0x7c92('0x42')]['id']}})[_0x7c92('0x23')](handleEntityNotFound(_0x512b77,null))[_0x7c92('0x23')](removeEntity(_0x512b77,null))[_0x7c92('0x45')](handleError(_0x512b77,null));};exports[_0x7c92('0x4a')]=function(_0x2d20e5,_0xeefa6){return db[_0x7c92('0x29')][_0x7c92('0x4a')]()[_0x7c92('0x23')](respondWithResult(_0xeefa6,null))[_0x7c92('0x45')](handleError(_0xeefa6,null));};
\ No newline at end of file
+var _0x9edd=['hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','JscriptyQuestionReport','count','includeAll','include','findAll','rows','catch','keys','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','set','json','apply','reject','save','update','then','destroy','name','send','map','rawAttributes','type','model','query','filters','intersection','attributes','fields','length'];(function(_0x4a37ae,_0x1f911e){var _0x214094=function(_0x1b127e){while(--_0x1b127e){_0x4a37ae['push'](_0x4a37ae['shift']());}};_0x214094(++_0x1f911e);}(_0x9edd,0x172));var _0xd9ed=function(_0x42d7c2,_0x2845ca){_0x42d7c2=_0x42d7c2-0x0;var _0x4018e8=_0x9edd[_0x42d7c2];return _0x4018e8;};'use strict';var emlformat=require(_0xd9ed('0x0'));var rimraf=require(_0xd9ed('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd9ed('0x2'));var rp=require(_0xd9ed('0x3'));var moment=require('moment');var BPromise=require(_0xd9ed('0x4'));var Mustache=require(_0xd9ed('0x5'));var util=require('util');var path=require(_0xd9ed('0x6'));var sox=require('sox');var csv=require(_0xd9ed('0x7'));var ejs=require(_0xd9ed('0x8'));var fs=require('fs');var fs_extra=require(_0xd9ed('0x9'));var _=require(_0xd9ed('0xa'));var squel=require('squel');var crypto=require(_0xd9ed('0xb'));var jsforce=require(_0xd9ed('0xc'));var deskjs=require(_0xd9ed('0xd'));var toCsv=require(_0xd9ed('0x7'));var querystring=require('querystring');var Papa=require(_0xd9ed('0xe'));var Redis=require(_0xd9ed('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd9ed('0x10'));var as=require(_0xd9ed('0x11'));var hardwareService=require(_0xd9ed('0x12'));var logger=require(_0xd9ed('0x13'))(_0xd9ed('0x14'));var utils=require(_0xd9ed('0x15'));var config=require(_0xd9ed('0x16'));var licenseUtil=require(_0xd9ed('0x17'));var db=require(_0xd9ed('0x18'))['db'];function respondWithStatusCode(_0x2f4909,_0x564027){_0x564027=_0x564027||0xcc;return function(_0x1acc78){if(_0x1acc78){return _0x2f4909['sendStatus'](_0x564027);}return _0x2f4909[_0xd9ed('0x19')](_0x564027)[_0xd9ed('0x1a')]();};}function respondWithResult(_0x3f290d,_0x1897e6){_0x1897e6=_0x1897e6||0xc8;return function(_0x54fddc){if(_0x54fddc){return _0x3f290d[_0xd9ed('0x19')](_0x1897e6)['json'](_0x54fddc);}};}function respondWithFilteredResult(_0x56c472,_0x56ddb9){return function(_0x31e1e8){if(_0x31e1e8){var _0xe1f690=typeof _0x56ddb9[_0xd9ed('0x1b')]==='undefined'&&typeof _0x56ddb9[_0xd9ed('0x1c')]===_0xd9ed('0x1d');var _0x52acc5=_0x31e1e8['count'];var _0x4067e5=_0xe1f690?0x0:_0x56ddb9['offset'];var _0x3b6bc1=_0xe1f690?_0x31e1e8['count']:_0x56ddb9[_0xd9ed('0x1b')]+_0x56ddb9[_0xd9ed('0x1c')];var _0x20059e;if(_0x3b6bc1>=_0x52acc5){_0x3b6bc1=_0x52acc5;_0x20059e=0xc8;}else{_0x20059e=0xce;}_0x56c472[_0xd9ed('0x19')](_0x20059e);return _0x56c472[_0xd9ed('0x1e')]('Content-Range',_0x4067e5+'-'+_0x3b6bc1+'/'+_0x52acc5)[_0xd9ed('0x1f')](_0x31e1e8);}return null;};}function patchUpdates(_0x3fb18c){return function(_0x2847e0){try{jsonpatch[_0xd9ed('0x20')](_0x2847e0,_0x3fb18c,!![]);}catch(_0x1792a2){return BPromise[_0xd9ed('0x21')](_0x1792a2);}return _0x2847e0[_0xd9ed('0x22')]();};}function saveUpdates(_0x2fdf21,_0x4bafbe){return function(_0x77b5a0){if(_0x77b5a0){return _0x77b5a0[_0xd9ed('0x23')](_0x2fdf21)[_0xd9ed('0x24')](function(_0x4b55c8){return _0x4b55c8;});}return null;};}function removeEntity(_0x3d1062,_0x5c97a0){return function(_0x40c738){if(_0x40c738){return _0x40c738[_0xd9ed('0x25')]()['then'](function(){_0x3d1062[_0xd9ed('0x19')](0xcc)[_0xd9ed('0x1a')]();});}};}function handleEntityNotFound(_0x4d436c,_0x36258d){return function(_0x1e8392){if(!_0x1e8392){_0x4d436c['sendStatus'](0x194);}return _0x1e8392;};}function handleError(_0x2ba0f8,_0x44e446){_0x44e446=_0x44e446||0x1f4;return function(_0x4de183){logger['error'](_0x4de183['stack']);if(_0x4de183['name']){delete _0x4de183[_0xd9ed('0x26')];}_0x2ba0f8[_0xd9ed('0x19')](_0x44e446)[_0xd9ed('0x27')](_0x4de183);};}exports['index']=function(_0x2b5af2,_0x3a3126){var _0x403750={},_0x24bf7a={},_0x9617be={'count':0x0,'rows':[]};var _0x3af1ed=_[_0xd9ed('0x28')](db['JscriptyQuestionReport'][_0xd9ed('0x29')],function(_0x1551b5){return{'name':_0x1551b5['fieldName'],'type':_0x1551b5[_0xd9ed('0x2a')]['key']};});_0x24bf7a[_0xd9ed('0x2b')]=_[_0xd9ed('0x28')](_0x3af1ed,_0xd9ed('0x26'));_0x24bf7a[_0xd9ed('0x2c')]=_['keys'](_0x2b5af2[_0xd9ed('0x2c')]);_0x24bf7a[_0xd9ed('0x2d')]=_[_0xd9ed('0x2e')](_0x24bf7a[_0xd9ed('0x2b')],_0x24bf7a['query']);_0x403750[_0xd9ed('0x2f')]=_[_0xd9ed('0x2e')](_0x24bf7a[_0xd9ed('0x2b')],qs['fields'](_0x2b5af2[_0xd9ed('0x2c')][_0xd9ed('0x30')]));_0x403750[_0xd9ed('0x2f')]=_0x403750[_0xd9ed('0x2f')][_0xd9ed('0x31')]?_0x403750[_0xd9ed('0x2f')]:_0x24bf7a['model'];if(!_0x2b5af2[_0xd9ed('0x2c')][_0xd9ed('0x32')](_0xd9ed('0x33'))){_0x403750[_0xd9ed('0x1c')]=qs[_0xd9ed('0x1c')](_0x2b5af2[_0xd9ed('0x2c')]['limit']);_0x403750[_0xd9ed('0x1b')]=qs[_0xd9ed('0x1b')](_0x2b5af2[_0xd9ed('0x2c')][_0xd9ed('0x1b')]);}_0x403750['order']=qs[_0xd9ed('0x34')](_0x2b5af2[_0xd9ed('0x2c')][_0xd9ed('0x34')]);_0x403750[_0xd9ed('0x35')]=qs[_0xd9ed('0x2d')](_['pick'](_0x2b5af2[_0xd9ed('0x2c')],_0x24bf7a[_0xd9ed('0x2d')]),_0x3af1ed);if(_0x2b5af2[_0xd9ed('0x2c')][_0xd9ed('0x36')]){_0x403750['where']=_['merge'](_0x403750[_0xd9ed('0x35')],{'$or':_[_0xd9ed('0x28')](_0x3af1ed,function(_0x3b24ca){if(_0x3b24ca[_0xd9ed('0x2a')]!==_0xd9ed('0x37')){var _0x47b776={};_0x47b776[_0x3b24ca[_0xd9ed('0x26')]]={'$like':'%'+_0x2b5af2[_0xd9ed('0x2c')][_0xd9ed('0x36')]+'%'};return _0x47b776;}})});}_0x403750=_[_0xd9ed('0x38')]({},_0x403750,_0x2b5af2[_0xd9ed('0x39')]);var _0x256b3b={'where':_0x403750[_0xd9ed('0x35')]};return db[_0xd9ed('0x3a')][_0xd9ed('0x3b')](_0x256b3b)['then'](function(_0x2516f8){_0x9617be[_0xd9ed('0x3b')]=_0x2516f8;if(_0x2b5af2['query'][_0xd9ed('0x3c')]){_0x403750[_0xd9ed('0x3d')]=[{'all':!![]}];}return db[_0xd9ed('0x3a')][_0xd9ed('0x3e')](_0x403750);})[_0xd9ed('0x24')](function(_0x46ff0b){_0x9617be[_0xd9ed('0x3f')]=_0x46ff0b;return _0x9617be;})[_0xd9ed('0x24')](respondWithFilteredResult(_0x3a3126,_0x403750))[_0xd9ed('0x40')](handleError(_0x3a3126,null));};exports['show']=function(_0x29c0ab,_0x117c9f){var _0x2af912={'raw':!![],'where':{'id':_0x29c0ab['params']['id']}},_0x8ad75d={};_0x8ad75d[_0xd9ed('0x2b')]=_[_0xd9ed('0x41')](db[_0xd9ed('0x3a')][_0xd9ed('0x29')]);_0x8ad75d['query']=_['keys'](_0x29c0ab['query']);_0x8ad75d[_0xd9ed('0x2d')]=_[_0xd9ed('0x2e')](_0x8ad75d['model'],_0x8ad75d[_0xd9ed('0x2c')]);_0x2af912[_0xd9ed('0x2f')]=_['intersection'](_0x8ad75d[_0xd9ed('0x2b')],qs[_0xd9ed('0x30')](_0x29c0ab[_0xd9ed('0x2c')][_0xd9ed('0x30')]));_0x2af912['attributes']=_0x2af912['attributes']['length']?_0x2af912['attributes']:_0x8ad75d[_0xd9ed('0x2b')];if(_0x29c0ab[_0xd9ed('0x2c')]['includeAll']){_0x2af912[_0xd9ed('0x3d')]=[{'all':!![]}];}_0x2af912=_[_0xd9ed('0x38')]({},_0x2af912,_0x29c0ab['options']);return db[_0xd9ed('0x3a')][_0xd9ed('0x42')](_0x2af912)['then'](handleEntityNotFound(_0x117c9f,null))['then'](respondWithResult(_0x117c9f,null))[_0xd9ed('0x40')](handleError(_0x117c9f,null));};exports[_0xd9ed('0x43')]=function(_0xa58245,_0x33401c){return db[_0xd9ed('0x3a')][_0xd9ed('0x43')](_0xa58245[_0xd9ed('0x44')],{})[_0xd9ed('0x24')](respondWithResult(_0x33401c,0xc9))[_0xd9ed('0x40')](handleError(_0x33401c,null));};exports[_0xd9ed('0x23')]=function(_0x2af44b,_0x1eb06d){if(_0x2af44b[_0xd9ed('0x44')]['id']){delete _0x2af44b[_0xd9ed('0x44')]['id'];}return db[_0xd9ed('0x3a')]['find']({'where':{'id':_0x2af44b['params']['id']}})[_0xd9ed('0x24')](handleEntityNotFound(_0x1eb06d,null))[_0xd9ed('0x24')](saveUpdates(_0x2af44b['body'],null))[_0xd9ed('0x24')](respondWithResult(_0x1eb06d,null))[_0xd9ed('0x40')](handleError(_0x1eb06d,null));};exports[_0xd9ed('0x25')]=function(_0x385eb6,_0xba45cc){return db[_0xd9ed('0x3a')][_0xd9ed('0x42')]({'where':{'id':_0x385eb6['params']['id']}})[_0xd9ed('0x24')](handleEntityNotFound(_0xba45cc,null))['then'](removeEntity(_0xba45cc,null))[_0xd9ed('0x40')](handleError(_0xba45cc,null));};exports[_0xd9ed('0x45')]=function(_0x329d21,_0x2b03c5){return db[_0xd9ed('0x3a')][_0xd9ed('0x45')]()[_0xd9ed('0x24')](respondWithResult(_0x2b03c5,null))[_0xd9ed('0x40')](handleError(_0x2b03c5,null));};
\ No newline at end of file
index 31b73ff..01515a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa95d=['moment','bluebird','request-promise','path','rimraf','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util','../../config/logger','api'];(function(_0x76a409,_0x2306c6){var _0x71f1ac=function(_0x3123b9){while(--_0x3123b9){_0x76a409['push'](_0x76a409['shift']());}};_0x71f1ac(++_0x2306c6);}(_0xa95d,0x175));var _0xda95=function(_0x1a159b,_0x5b731e){_0x1a159b=_0x1a159b-0x0;var _0x19dfe9=_0xa95d[_0x1a159b];return _0x19dfe9;};'use strict';var _=require(_0xda95('0x0'));var util=require(_0xda95('0x1'));var logger=require(_0xda95('0x2'))(_0xda95('0x3'));var moment=require(_0xda95('0x4'));var BPromise=require(_0xda95('0x5'));var rp=require(_0xda95('0x6'));var fs=require('fs');var path=require(_0xda95('0x7'));var rimraf=require(_0xda95('0x8'));var config=require('../../config/environment');var attributes=require(_0xda95('0x9'));module[_0xda95('0xa')]=function(_0x392cf1,_0x518111){return _0x392cf1[_0xda95('0xb')]('JscriptyQuestionReport',attributes,{'tableName':_0xda95('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3087=['define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','moment','bluebird','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports'];(function(_0xae745e,_0x4d4619){var _0xa9b16c=function(_0x44252e){while(--_0x44252e){_0xae745e['push'](_0xae745e['shift']());}};_0xa9b16c(++_0x4d4619);}(_0x3087,0x87));var _0x7308=function(_0x4ddfe9,_0x2a7d65){_0x4ddfe9=_0x4ddfe9-0x0;var _0x30c493=_0x3087[_0x4ddfe9];return _0x30c493;};'use strict';var _=require(_0x7308('0x0'));var util=require(_0x7308('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7308('0x2'));var BPromise=require(_0x7308('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7308('0x4'));var rimraf=require(_0x7308('0x5'));var config=require(_0x7308('0x6'));var attributes=require(_0x7308('0x7'));module[_0x7308('0x8')]=function(_0x5cbcee,_0x212c4e){return _0x5cbcee[_0x7308('0x9')](_0x7308('0xa'),attributes,{'tableName':_0x7308('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a6c565..473103d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x310a=['info','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','request'];(function(_0x278221,_0x5e6b39){var _0x47afa4=function(_0x5d9512){while(--_0x5d9512){_0x278221['push'](_0x278221['shift']());}};_0x47afa4(++_0x5e6b39);}(_0x310a,0xdc));var _0xa310=function(_0x41ecfd,_0x597ca8){_0x41ecfd=_0x41ecfd-0x0;var _0x45c615=_0x310a[_0x41ecfd];return _0x45c615;};'use strict';var _=require(_0xa310('0x0'));var util=require(_0xa310('0x1'));var moment=require(_0xa310('0x2'));var BPromise=require(_0xa310('0x3'));var rs=require(_0xa310('0x4'));var fs=require('fs');var Redis=require(_0xa310('0x5'));var db=require(_0xa310('0x6'))['db'];var utils=require(_0xa310('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa310('0x8'));var client=jayson[_0xa310('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x299632,_0x5b6f3,_0x2ec887){return new BPromise(function(_0x50fa1f,_0x50678a){return client[_0xa310('0xa')](_0x299632,_0x2ec887)['then'](function(_0x29bac0){logger[_0xa310('0xb')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5b6f3,'request\x20sent');logger[_0xa310('0xc')](_0xa310('0xd'),_0x5b6f3,_0xa310('0xe'),JSON['stringify'](_0x29bac0));if(_0x29bac0[_0xa310('0xf')]){if(_0x29bac0[_0xa310('0xf')][_0xa310('0x10')]===0x1f4){logger[_0xa310('0xf')](_0xa310('0x11'),_0x5b6f3,_0x29bac0[_0xa310('0xf')][_0xa310('0x12')]);return _0x50678a(_0x29bac0[_0xa310('0xf')]['message']);}logger['error'](_0xa310('0x11'),_0x5b6f3,_0x29bac0[_0xa310('0xf')]['message']);return _0x50fa1f(_0x29bac0['error'][_0xa310('0x12')]);}else{logger[_0xa310('0xb')](_0xa310('0x11'),_0x5b6f3,_0xa310('0xe'));_0x50fa1f(_0x29bac0[_0xa310('0x13')]['message']);}})[_0xa310('0x14')](function(_0x159e6f){logger[_0xa310('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5b6f3,_0x159e6f);_0x50678a(_0x159e6f);});});}
\ No newline at end of file
+var _0x7124=['code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x74892f,_0x1e981b){var _0x10ee61=function(_0x3c480a){while(--_0x3c480a){_0x74892f['push'](_0x74892f['shift']());}};_0x10ee61(++_0x1e981b);}(_0x7124,0x121));var _0x4712=function(_0x1f57e7,_0x31455f){_0x1f57e7=_0x1f57e7-0x0;var _0xc38613=_0x7124[_0x1f57e7];return _0xc38613;};'use strict';var _=require(_0x4712('0x0'));var util=require(_0x4712('0x1'));var moment=require(_0x4712('0x2'));var BPromise=require(_0x4712('0x3'));var rs=require(_0x4712('0x4'));var fs=require('fs');var Redis=require(_0x4712('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4712('0x6'))(_0x4712('0x7'));var config=require(_0x4712('0x8'));var jayson=require(_0x4712('0x9'));var client=jayson[_0x4712('0xa')][_0x4712('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2e0556,_0x206952,_0x346a){return new BPromise(function(_0x39338a,_0x481ea4){return client['request'](_0x2e0556,_0x346a)[_0x4712('0xc')](function(_0x41145d){logger[_0x4712('0xd')](_0x4712('0xe'),_0x206952,_0x4712('0xf'));logger['debug'](_0x4712('0x10'),_0x206952,'request\x20sent',JSON[_0x4712('0x11')](_0x41145d));if(_0x41145d[_0x4712('0x12')]){if(_0x41145d[_0x4712('0x12')][_0x4712('0x13')]===0x1f4){logger[_0x4712('0x12')](_0x4712('0xe'),_0x206952,_0x41145d[_0x4712('0x12')][_0x4712('0x14')]);return _0x481ea4(_0x41145d[_0x4712('0x12')][_0x4712('0x14')]);}logger['error'](_0x4712('0xe'),_0x206952,_0x41145d[_0x4712('0x12')][_0x4712('0x14')]);return _0x39338a(_0x41145d[_0x4712('0x12')][_0x4712('0x14')]);}else{logger[_0x4712('0xd')](_0x4712('0xe'),_0x206952,_0x4712('0xf'));_0x39338a(_0x41145d[_0x4712('0x15')][_0x4712('0x14')]);}})['catch'](function(_0x520227){logger[_0x4712('0x12')](_0x4712('0xe'),_0x206952,_0x520227);_0x481ea4(_0x520227);});});}
\ No newline at end of file
index 4bf7990..dcb59da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad6=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','destroy'];(function(_0x51867e,_0x5a8a8e){var _0xdda948=function(_0x539cb2){while(--_0x539cb2){_0x51867e['push'](_0x51867e['shift']());}};_0xdda948(++_0x5a8a8e);}(_0xcad6,0x151));var _0x6cad=function(_0x44c20d,_0x5e170a){_0x44c20d=_0x44c20d-0x0;var _0x27c4f7=_0xcad6[_0x44c20d];return _0x27c4f7;};'use strict';var multer=require(_0x6cad('0x0'));var util=require(_0x6cad('0x1'));var path=require(_0x6cad('0x2'));var timeout=require(_0x6cad('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x6cad('0x4'));var auth=require(_0x6cad('0x5'));var interaction=require(_0x6cad('0x6'));var config=require(_0x6cad('0x7'));var controller=require(_0x6cad('0x8'));router[_0x6cad('0x9')]('/',auth[_0x6cad('0xa')](),controller[_0x6cad('0xb')]);router[_0x6cad('0x9')](_0x6cad('0xc'),auth[_0x6cad('0xa')](),controller[_0x6cad('0xd')]);router[_0x6cad('0x9')](_0x6cad('0xe'),auth['isAuthenticated'](),controller[_0x6cad('0xf')]);router[_0x6cad('0x9')](_0x6cad('0x10'),auth[_0x6cad('0xa')](),controller[_0x6cad('0x11')]);router[_0x6cad('0x12')]('/',auth['isAuthenticated'](),controller[_0x6cad('0x13')]);router[_0x6cad('0x14')](_0x6cad('0xe'),auth[_0x6cad('0xa')](),controller[_0x6cad('0x15')]);router['delete']('/:id',auth[_0x6cad('0xa')](),controller[_0x6cad('0x16')]);module[_0x6cad('0x17')]=router;
\ No newline at end of file
+var _0x4aab=['delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update'];(function(_0x4c2623,_0x4838bb){var _0x2be431=function(_0x55829d){while(--_0x55829d){_0x4c2623['push'](_0x4c2623['shift']());}};_0x2be431(++_0x4838bb);}(_0x4aab,0xa2));var _0xb4aa=function(_0x30c434,_0x10294d){_0x30c434=_0x30c434-0x0;var _0x275d0d=_0x4aab[_0x30c434];return _0x275d0d;};'use strict';var multer=require(_0xb4aa('0x0'));var util=require(_0xb4aa('0x1'));var path=require('path');var timeout=require(_0xb4aa('0x2'));var express=require(_0xb4aa('0x3'));var router=express['Router']();var fs_extra=require(_0xb4aa('0x4'));var auth=require(_0xb4aa('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb4aa('0x6'));var controller=require(_0xb4aa('0x7'));router[_0xb4aa('0x8')]('/',auth[_0xb4aa('0x9')](),controller[_0xb4aa('0xa')]);router[_0xb4aa('0x8')](_0xb4aa('0xb'),auth[_0xb4aa('0x9')](),controller['describe']);router[_0xb4aa('0x8')](_0xb4aa('0xc'),auth[_0xb4aa('0x9')](),controller[_0xb4aa('0xd')]);router['get']('/:id/questions',auth[_0xb4aa('0x9')](),controller['getQuestions']);router[_0xb4aa('0xe')]('/',auth[_0xb4aa('0x9')](),controller[_0xb4aa('0xf')]);router[_0xb4aa('0x10')](_0xb4aa('0xc'),auth[_0xb4aa('0x9')](),controller[_0xb4aa('0x11')]);router[_0xb4aa('0x12')]('/:id',auth[_0xb4aa('0x9')](),controller['destroy']);module[_0xb4aa('0x13')]=router;
\ No newline at end of file
index 344b593..a715a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de6=['STRING','BOOLEAN','moment','sequelize','DATE','starttime','setDataValue','endtime','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4c446e,_0x19a934){var _0x367191=function(_0x42a399){while(--_0x42a399){_0x4c446e['push'](_0x4c446e['shift']());}};_0x367191(++_0x19a934);}(_0x1de6,0x122));var _0x61de=function(_0x2215d2,_0x563782){_0x2215d2=_0x2215d2-0x0;var _0x2bb13a=_0x1de6[_0x2215d2];return _0x2bb13a;};'use strict';var moment=require(_0x61de('0x0'));var Sequelize=require(_0x61de('0x1'));module['exports']={'starttime':{'type':Sequelize[_0x61de('0x2')],'set':function(_0x234575){this['setDataValue'](_0x61de('0x3'),_0x234575);this[_0x61de('0x4')](_0x61de('0x5'),moment()['format'](_0x61de('0x6')));}},'endtime':{'type':Sequelize[_0x61de('0x2')]},'membername':{'type':Sequelize[_0x61de('0x7')]},'projectname':{'type':Sequelize[_0x61de('0x7')]},'queue':{'type':Sequelize[_0x61de('0x7')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x61de('0x7')]},'calleridnum':{'type':Sequelize[_0x61de('0x7')]},'completed':{'type':Sequelize[_0x61de('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbeca=['YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','DATE','setDataValue','starttime','endtime','format'];(function(_0x1392f4,_0x1e59c8){var _0x5da73a=function(_0x3adde2){while(--_0x3adde2){_0x1392f4['push'](_0x1392f4['shift']());}};_0x5da73a(++_0x1e59c8);}(_0xbeca,0xdf));var _0xabec=function(_0x5ddafe,_0x1fb508){_0x5ddafe=_0x5ddafe-0x0;var _0x5e23aa=_0xbeca[_0x5ddafe];return _0x5e23aa;};'use strict';var moment=require(_0xabec('0x0'));var Sequelize=require(_0xabec('0x1'));module[_0xabec('0x2')]={'starttime':{'type':Sequelize[_0xabec('0x3')],'set':function(_0x2ff064){this[_0xabec('0x4')](_0xabec('0x5'),_0x2ff064);this[_0xabec('0x4')](_0xabec('0x6'),moment()[_0xabec('0x7')](_0xabec('0x8')));}},'endtime':{'type':Sequelize[_0xabec('0x3')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xabec('0x9')]},'uniqueid':{'type':Sequelize[_0xabec('0x9')]},'calleridname':{'type':Sequelize[_0xabec('0x9')]},'calleridnum':{'type':Sequelize[_0xabec('0x9')]},'completed':{'type':Sequelize[_0xabec('0xa')],'defaultValue':![]}};
\ No newline at end of file
index e87ea5f..a17a6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x526a=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','JscriptySessionReport','includeAll','findAll','catch','show','params','length','include','find','create','body','describe','getQuestions','JscriptyQuestionReport','SessionId','rows','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x4cdd4a,_0x1aaff){var _0xf05f4c=function(_0x3c3eb4){while(--_0x3c3eb4){_0x4cdd4a['push'](_0x4cdd4a['shift']());}};_0xf05f4c(++_0x1aaff);}(_0x526a,0x1cf));var _0xa526=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x526a[_0x4b7b62];return _0x2280df;};'use strict';var emlformat=require(_0xa526('0x0'));var rimraf=require(_0xa526('0x1'));var zipdir=require(_0xa526('0x2'));var jsonpatch=require(_0xa526('0x3'));var rp=require('request-promise');var moment=require(_0xa526('0x4'));var BPromise=require(_0xa526('0x5'));var Mustache=require(_0xa526('0x6'));var util=require(_0xa526('0x7'));var path=require('path');var sox=require(_0xa526('0x8'));var csv=require(_0xa526('0x9'));var ejs=require(_0xa526('0xa'));var fs=require('fs');var fs_extra=require(_0xa526('0xb'));var _=require(_0xa526('0xc'));var squel=require(_0xa526('0xd'));var crypto=require(_0xa526('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa526('0xf'));var toCsv=require('to-csv');var querystring=require(_0xa526('0x10'));var Papa=require(_0xa526('0x11'));var Redis=require(_0xa526('0x12'));var authService=require(_0xa526('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa526('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa526('0x15'));var utils=require(_0xa526('0x16'));var config=require(_0xa526('0x17'));var licenseUtil=require(_0xa526('0x18'));var db=require(_0xa526('0x19'))['db'];function respondWithStatusCode(_0x2cee4d,_0x318f0a){_0x318f0a=_0x318f0a||0xcc;return function(_0x543385){if(_0x543385){return _0x2cee4d['sendStatus'](_0x318f0a);}return _0x2cee4d['status'](_0x318f0a)['end']();};}function respondWithResult(_0x23ae70,_0x1c3651){_0x1c3651=_0x1c3651||0xc8;return function(_0x509e8d){if(_0x509e8d){return _0x23ae70[_0xa526('0x1a')](_0x1c3651)[_0xa526('0x1b')](_0x509e8d);}};}function respondWithFilteredResult(_0x36cc8d,_0x2e1486){return function(_0x26ff61){if(_0x26ff61){var _0x3ff216=typeof _0x2e1486[_0xa526('0x1c')]===_0xa526('0x1d')&&typeof _0x2e1486[_0xa526('0x1e')]==='undefined';var _0x4b951f=_0x26ff61[_0xa526('0x1f')];var _0x4450f9=_0x3ff216?0x0:_0x2e1486[_0xa526('0x1c')];var _0x45d3d8=_0x3ff216?_0x26ff61[_0xa526('0x1f')]:_0x2e1486[_0xa526('0x1c')]+_0x2e1486[_0xa526('0x1e')];var _0x44a991;if(_0x45d3d8>=_0x4b951f){_0x45d3d8=_0x4b951f;_0x44a991=0xc8;}else{_0x44a991=0xce;}_0x36cc8d[_0xa526('0x1a')](_0x44a991);return _0x36cc8d[_0xa526('0x20')]('Content-Range',_0x4450f9+'-'+_0x45d3d8+'/'+_0x4b951f)[_0xa526('0x1b')](_0x26ff61);}return null;};}function patchUpdates(_0x8c8e65){return function(_0x2ec481){try{jsonpatch[_0xa526('0x21')](_0x2ec481,_0x8c8e65,!![]);}catch(_0x4abdce){return BPromise['reject'](_0x4abdce);}return _0x2ec481['save']();};}function saveUpdates(_0x208dbe,_0x524594){return function(_0x1e0fa0){if(_0x1e0fa0){return _0x1e0fa0[_0xa526('0x22')](_0x208dbe)[_0xa526('0x23')](function(_0x429e7a){return _0x429e7a;});}return null;};}function removeEntity(_0x293ac8,_0x38c401){return function(_0x4f3f59){if(_0x4f3f59){return _0x4f3f59[_0xa526('0x24')]()[_0xa526('0x23')](function(){_0x293ac8[_0xa526('0x1a')](0xcc)[_0xa526('0x25')]();});}};}function handleEntityNotFound(_0x153387,_0x526c9a){return function(_0x58302b){if(!_0x58302b){_0x153387['sendStatus'](0x194);}return _0x58302b;};}function handleError(_0x5624e6,_0x34ea39){_0x34ea39=_0x34ea39||0x1f4;return function(_0x55ac12){logger[_0xa526('0x26')](_0x55ac12[_0xa526('0x27')]);if(_0x55ac12[_0xa526('0x28')]){delete _0x55ac12[_0xa526('0x28')];}_0x5624e6[_0xa526('0x1a')](_0x34ea39)[_0xa526('0x29')](_0x55ac12);};}exports[_0xa526('0x2a')]=function(_0x535846,_0x480f22){var _0x36469b={},_0x34ed78={},_0x426337={'count':0x0,'rows':[]};var _0x426fed=_[_0xa526('0x2b')](db['JscriptySessionReport'][_0xa526('0x2c')],function(_0x4ef074){return{'name':_0x4ef074[_0xa526('0x2d')],'type':_0x4ef074[_0xa526('0x2e')][_0xa526('0x2f')]};});_0x34ed78[_0xa526('0x30')]=_[_0xa526('0x2b')](_0x426fed,_0xa526('0x28'));_0x34ed78[_0xa526('0x31')]=_[_0xa526('0x32')](_0x535846[_0xa526('0x31')]);_0x34ed78[_0xa526('0x33')]=_[_0xa526('0x34')](_0x34ed78[_0xa526('0x30')],_0x34ed78['query']);_0x36469b[_0xa526('0x35')]=_[_0xa526('0x34')](_0x34ed78[_0xa526('0x30')],qs['fields'](_0x535846[_0xa526('0x31')][_0xa526('0x36')]));_0x36469b[_0xa526('0x35')]=_0x36469b[_0xa526('0x35')]['length']?_0x36469b[_0xa526('0x35')]:_0x34ed78['model'];if(!_0x535846[_0xa526('0x31')][_0xa526('0x37')]('nolimit')){_0x36469b[_0xa526('0x1e')]=qs['limit'](_0x535846[_0xa526('0x31')]['limit']);_0x36469b[_0xa526('0x1c')]=qs[_0xa526('0x1c')](_0x535846[_0xa526('0x31')][_0xa526('0x1c')]);}_0x36469b[_0xa526('0x38')]=qs['sort'](_0x535846[_0xa526('0x31')][_0xa526('0x39')]);_0x36469b[_0xa526('0x3a')]=qs['filters'](_[_0xa526('0x3b')](_0x535846['query'],_0x34ed78[_0xa526('0x33')]),_0x426fed);if(_0x535846['query'][_0xa526('0x3c')]){_0x36469b[_0xa526('0x3a')]=_[_0xa526('0x3d')](_0x36469b[_0xa526('0x3a')],{'$or':_[_0xa526('0x2b')](_0x426fed,function(_0x59803b){if(_0x59803b[_0xa526('0x2e')]!==_0xa526('0x3e')){var _0x2df060={};_0x2df060[_0x59803b[_0xa526('0x28')]]={'$like':'%'+_0x535846[_0xa526('0x31')][_0xa526('0x3c')]+'%'};return _0x2df060;}})});}_0x36469b=_[_0xa526('0x3d')]({},_0x36469b,_0x535846[_0xa526('0x3f')]);var _0x34a588={'where':_0x36469b[_0xa526('0x3a')]};return db[_0xa526('0x40')][_0xa526('0x1f')](_0x34a588)[_0xa526('0x23')](function(_0x597d57){_0x426337[_0xa526('0x1f')]=_0x597d57;if(_0x535846[_0xa526('0x31')][_0xa526('0x41')]){_0x36469b['include']=[{'all':!![]}];}return db[_0xa526('0x40')][_0xa526('0x42')](_0x36469b);})[_0xa526('0x23')](function(_0x824803){_0x426337['rows']=_0x824803;return _0x426337;})['then'](respondWithFilteredResult(_0x480f22,_0x36469b))[_0xa526('0x43')](handleError(_0x480f22,null));};exports[_0xa526('0x44')]=function(_0x38132d,_0x562d02){var _0x55ff33={'raw':!![],'where':{'id':_0x38132d[_0xa526('0x45')]['id']}},_0x102503={};_0x102503['model']=_[_0xa526('0x32')](db[_0xa526('0x40')][_0xa526('0x2c')]);_0x102503['query']=_['keys'](_0x38132d[_0xa526('0x31')]);_0x102503[_0xa526('0x33')]=_[_0xa526('0x34')](_0x102503[_0xa526('0x30')],_0x102503[_0xa526('0x31')]);_0x55ff33['attributes']=_['intersection'](_0x102503[_0xa526('0x30')],qs[_0xa526('0x36')](_0x38132d[_0xa526('0x31')]['fields']));_0x55ff33['attributes']=_0x55ff33[_0xa526('0x35')][_0xa526('0x46')]?_0x55ff33[_0xa526('0x35')]:_0x102503[_0xa526('0x30')];if(_0x38132d[_0xa526('0x31')][_0xa526('0x41')]){_0x55ff33[_0xa526('0x47')]=[{'all':!![]}];}_0x55ff33=_[_0xa526('0x3d')]({},_0x55ff33,_0x38132d[_0xa526('0x3f')]);return db['JscriptySessionReport'][_0xa526('0x48')](_0x55ff33)[_0xa526('0x23')](handleEntityNotFound(_0x562d02,null))['then'](respondWithResult(_0x562d02,null))[_0xa526('0x43')](handleError(_0x562d02,null));};exports['create']=function(_0x26f3ac,_0x42800e){return db[_0xa526('0x40')][_0xa526('0x49')](_0x26f3ac[_0xa526('0x4a')],{})[_0xa526('0x23')](respondWithResult(_0x42800e,0xc9))[_0xa526('0x43')](handleError(_0x42800e,null));};exports[_0xa526('0x22')]=function(_0x18db3d,_0x19187){if(_0x18db3d[_0xa526('0x4a')]['id']){delete _0x18db3d[_0xa526('0x4a')]['id'];}return db['JscriptySessionReport']['find']({'where':{'id':_0x18db3d['params']['id']}})[_0xa526('0x23')](handleEntityNotFound(_0x19187,null))[_0xa526('0x23')](saveUpdates(_0x18db3d[_0xa526('0x4a')],null))[_0xa526('0x23')](respondWithResult(_0x19187,null))[_0xa526('0x43')](handleError(_0x19187,null));};exports[_0xa526('0x24')]=function(_0x44a264,_0x295ab1){return db[_0xa526('0x40')][_0xa526('0x48')]({'where':{'id':_0x44a264[_0xa526('0x45')]['id']}})[_0xa526('0x23')](handleEntityNotFound(_0x295ab1,null))['then'](removeEntity(_0x295ab1,null))[_0xa526('0x43')](handleError(_0x295ab1,null));};exports[_0xa526('0x4b')]=function(_0x2f1f61,_0x311c71){return db[_0xa526('0x40')][_0xa526('0x4b')]()['then'](respondWithResult(_0x311c71,null))['catch'](handleError(_0x311c71,null));};exports[_0xa526('0x4c')]=function(_0x27b56b,_0xe6284c,_0x561ff4){var _0xa2ef36={'raw':!![],'where':{}};var _0x447d36={};var _0x581e87={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0x27b56b['params']['id']}})[_0xa526('0x23')](handleEntityNotFound(_0xe6284c,null))[_0xa526('0x23')](function(_0x216b29){if(_0x216b29){_0x447d36['model']=_[_0xa526('0x32')](db[_0xa526('0x4d')][_0xa526('0x2c')]);_0x447d36['query']=_['keys'](_0x27b56b['query']);_0x447d36[_0xa526('0x33')]=_[_0xa526('0x34')](_0x447d36[_0xa526('0x30')],_0x447d36['query']);_0xa2ef36['attributes']=_[_0xa526('0x34')](_0x447d36[_0xa526('0x30')],qs[_0xa526('0x36')](_0x27b56b['query'][_0xa526('0x36')]));_0xa2ef36[_0xa526('0x35')]=_0xa2ef36[_0xa526('0x35')][_0xa526('0x46')]?_0xa2ef36[_0xa526('0x35')]:_0x447d36['model'];if(!_0x27b56b[_0xa526('0x31')][_0xa526('0x37')]('nolimit')){_0xa2ef36[_0xa526('0x1e')]=qs['limit'](_0x27b56b[_0xa526('0x31')][_0xa526('0x1e')]);_0xa2ef36['offset']=qs[_0xa526('0x1c')](_0x27b56b[_0xa526('0x31')]['offset']);}_0xa2ef36['order']=qs[_0xa526('0x39')](_0x27b56b[_0xa526('0x31')][_0xa526('0x39')]);_0xa2ef36[_0xa526('0x3a')]=qs[_0xa526('0x33')](_[_0xa526('0x3b')](_0x27b56b[_0xa526('0x31')],_0x447d36[_0xa526('0x33')]));_0xa2ef36[_0xa526('0x3a')][_0xa526('0x4e')]=_0x216b29['id'];if(_0x27b56b['query'][_0xa526('0x3c')]){_0xa2ef36['where']=_['merge'](_0xa2ef36['where'],{'$or':_['map'](_0xa2ef36['attributes'],function(_0x5b835b){var _0x384f1e={};_0x384f1e[_0x5b835b]={'$like':'%'+_0x27b56b[_0xa526('0x31')]['filter']+'%'};return _0x384f1e;})});}_0xa2ef36=_[_0xa526('0x3d')]({},_0xa2ef36,_0x27b56b['options']);return db[_0xa526('0x4d')][_0xa526('0x1f')]({'where':_0xa2ef36[_0xa526('0x3a')]})[_0xa526('0x23')](function(_0x2c0fa0){_0x581e87[_0xa526('0x1f')]=_0x2c0fa0;if(_0x27b56b[_0xa526('0x31')][_0xa526('0x41')]){_0xa2ef36['include']=[{'all':!![]}];}return db[_0xa526('0x4d')][_0xa526('0x42')](_0xa2ef36);})[_0xa526('0x23')](function(_0xe53a8b){_0x581e87[_0xa526('0x4f')]=_0xe53a8b;return _0x581e87;});}})['then'](respondWithFilteredResult(_0xe6284c,_0xa2ef36))[_0xa526('0x43')](handleError(_0xe6284c,null));};
\ No newline at end of file
+var _0xb043=['crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','stack','name','send','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','filter','count','includeAll','include','JscriptySessionReport','findAll','rows','catch','params','find','create','body','describe','findOne','JscriptyQuestionReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','fs-extra','squel'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0xb043,0x1b2));var _0x3b04=function(_0x529296,_0x1a6a23){_0x529296=_0x529296-0x0;var _0x1796bf=_0xb043[_0x529296];return _0x1796bf;};'use strict';var emlformat=require(_0x3b04('0x0'));var rimraf=require(_0x3b04('0x1'));var zipdir=require(_0x3b04('0x2'));var jsonpatch=require(_0x3b04('0x3'));var rp=require(_0x3b04('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3b04('0x5'));var util=require('util');var path=require(_0x3b04('0x6'));var sox=require('sox');var csv=require(_0x3b04('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3b04('0x8'));var _=require('lodash');var squel=require(_0x3b04('0x9'));var crypto=require(_0x3b04('0xa'));var jsforce=require(_0x3b04('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3b04('0x7'));var querystring=require(_0x3b04('0xc'));var Papa=require(_0x3b04('0xd'));var Redis=require(_0x3b04('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x3b04('0xf'));var as=require(_0x3b04('0x10'));var hardwareService=require(_0x3b04('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x3b04('0x12'));var config=require(_0x3b04('0x13'));var licenseUtil=require(_0x3b04('0x14'));var db=require(_0x3b04('0x15'))['db'];function respondWithStatusCode(_0x31ee5e,_0x5712b1){_0x5712b1=_0x5712b1||0xcc;return function(_0x3e2e09){if(_0x3e2e09){return _0x31ee5e['sendStatus'](_0x5712b1);}return _0x31ee5e[_0x3b04('0x16')](_0x5712b1)[_0x3b04('0x17')]();};}function respondWithResult(_0x22463f,_0x53dd26){_0x53dd26=_0x53dd26||0xc8;return function(_0x5d28d5){if(_0x5d28d5){return _0x22463f[_0x3b04('0x16')](_0x53dd26)['json'](_0x5d28d5);}};}function respondWithFilteredResult(_0x307d59,_0xbff846){return function(_0x3960d7){if(_0x3960d7){var _0x315dd0=typeof _0xbff846[_0x3b04('0x18')]===_0x3b04('0x19')&&typeof _0xbff846['limit']===_0x3b04('0x19');var _0xe4c2d0=_0x3960d7['count'];var _0x432ea6=_0x315dd0?0x0:_0xbff846['offset'];var _0x16f567=_0x315dd0?_0x3960d7['count']:_0xbff846[_0x3b04('0x18')]+_0xbff846['limit'];var _0x16a786;if(_0x16f567>=_0xe4c2d0){_0x16f567=_0xe4c2d0;_0x16a786=0xc8;}else{_0x16a786=0xce;}_0x307d59[_0x3b04('0x16')](_0x16a786);return _0x307d59[_0x3b04('0x1a')](_0x3b04('0x1b'),_0x432ea6+'-'+_0x16f567+'/'+_0xe4c2d0)[_0x3b04('0x1c')](_0x3960d7);}return null;};}function patchUpdates(_0x148b60){return function(_0xd6541a){try{jsonpatch['apply'](_0xd6541a,_0x148b60,!![]);}catch(_0x364e4c){return BPromise[_0x3b04('0x1d')](_0x364e4c);}return _0xd6541a[_0x3b04('0x1e')]();};}function saveUpdates(_0x3acadc,_0x120bf0){return function(_0x13c2ba){if(_0x13c2ba){return _0x13c2ba[_0x3b04('0x1f')](_0x3acadc)[_0x3b04('0x20')](function(_0x3dad79){return _0x3dad79;});}return null;};}function removeEntity(_0x4cfe1e,_0x5d8aaa){return function(_0x2dda91){if(_0x2dda91){return _0x2dda91[_0x3b04('0x21')]()[_0x3b04('0x20')](function(){_0x4cfe1e[_0x3b04('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0xaf7ec7,_0x224a8f){return function(_0x14d73b){if(!_0x14d73b){_0xaf7ec7[_0x3b04('0x22')](0x194);}return _0x14d73b;};}function handleError(_0x2c7bab,_0x5c47bc){_0x5c47bc=_0x5c47bc||0x1f4;return function(_0x489198){logger['error'](_0x489198[_0x3b04('0x23')]);if(_0x489198['name']){delete _0x489198[_0x3b04('0x24')];}_0x2c7bab[_0x3b04('0x16')](_0x5c47bc)[_0x3b04('0x25')](_0x489198);};}exports['index']=function(_0x477d09,_0x488a52){var _0x5e8218={},_0x3cf979={},_0x28d255={'count':0x0,'rows':[]};var _0x44f03e=_['map'](db['JscriptySessionReport'][_0x3b04('0x26')],function(_0x24bc4d){return{'name':_0x24bc4d[_0x3b04('0x27')],'type':_0x24bc4d[_0x3b04('0x28')][_0x3b04('0x29')]};});_0x3cf979['model']=_[_0x3b04('0x2a')](_0x44f03e,_0x3b04('0x24'));_0x3cf979['query']=_[_0x3b04('0x2b')](_0x477d09[_0x3b04('0x2c')]);_0x3cf979[_0x3b04('0x2d')]=_[_0x3b04('0x2e')](_0x3cf979[_0x3b04('0x2f')],_0x3cf979[_0x3b04('0x2c')]);_0x5e8218[_0x3b04('0x30')]=_[_0x3b04('0x2e')](_0x3cf979[_0x3b04('0x2f')],qs[_0x3b04('0x31')](_0x477d09[_0x3b04('0x2c')]['fields']));_0x5e8218[_0x3b04('0x30')]=_0x5e8218[_0x3b04('0x30')][_0x3b04('0x32')]?_0x5e8218[_0x3b04('0x30')]:_0x3cf979[_0x3b04('0x2f')];if(!_0x477d09[_0x3b04('0x2c')][_0x3b04('0x33')](_0x3b04('0x34'))){_0x5e8218[_0x3b04('0x35')]=qs[_0x3b04('0x35')](_0x477d09['query'][_0x3b04('0x35')]);_0x5e8218[_0x3b04('0x18')]=qs[_0x3b04('0x18')](_0x477d09[_0x3b04('0x2c')][_0x3b04('0x18')]);}_0x5e8218[_0x3b04('0x36')]=qs[_0x3b04('0x37')](_0x477d09[_0x3b04('0x2c')][_0x3b04('0x37')]);_0x5e8218[_0x3b04('0x38')]=qs['filters'](_[_0x3b04('0x39')](_0x477d09[_0x3b04('0x2c')],_0x3cf979[_0x3b04('0x2d')]),_0x44f03e);if(_0x477d09['query']['filter']){_0x5e8218[_0x3b04('0x38')]=_[_0x3b04('0x3a')](_0x5e8218[_0x3b04('0x38')],{'$or':_[_0x3b04('0x2a')](_0x44f03e,function(_0x37aaa4){if(_0x37aaa4[_0x3b04('0x28')]!=='VIRTUAL'){var _0x5a4263={};_0x5a4263[_0x37aaa4['name']]={'$like':'%'+_0x477d09[_0x3b04('0x2c')][_0x3b04('0x3b')]+'%'};return _0x5a4263;}})});}_0x5e8218=_['merge']({},_0x5e8218,_0x477d09['options']);var _0x2b4479={'where':_0x5e8218['where']};return db['JscriptySessionReport'][_0x3b04('0x3c')](_0x2b4479)[_0x3b04('0x20')](function(_0x390bef){_0x28d255[_0x3b04('0x3c')]=_0x390bef;if(_0x477d09[_0x3b04('0x2c')][_0x3b04('0x3d')]){_0x5e8218[_0x3b04('0x3e')]=[{'all':!![]}];}return db[_0x3b04('0x3f')][_0x3b04('0x40')](_0x5e8218);})['then'](function(_0x195d05){_0x28d255[_0x3b04('0x41')]=_0x195d05;return _0x28d255;})[_0x3b04('0x20')](respondWithFilteredResult(_0x488a52,_0x5e8218))[_0x3b04('0x42')](handleError(_0x488a52,null));};exports['show']=function(_0x8ad108,_0x12ea96){var _0x5cf559={'raw':!![],'where':{'id':_0x8ad108[_0x3b04('0x43')]['id']}},_0x183537={};_0x183537[_0x3b04('0x2f')]=_[_0x3b04('0x2b')](db[_0x3b04('0x3f')][_0x3b04('0x26')]);_0x183537[_0x3b04('0x2c')]=_[_0x3b04('0x2b')](_0x8ad108[_0x3b04('0x2c')]);_0x183537[_0x3b04('0x2d')]=_['intersection'](_0x183537['model'],_0x183537[_0x3b04('0x2c')]);_0x5cf559['attributes']=_[_0x3b04('0x2e')](_0x183537['model'],qs[_0x3b04('0x31')](_0x8ad108[_0x3b04('0x2c')][_0x3b04('0x31')]));_0x5cf559['attributes']=_0x5cf559[_0x3b04('0x30')][_0x3b04('0x32')]?_0x5cf559[_0x3b04('0x30')]:_0x183537['model'];if(_0x8ad108['query'][_0x3b04('0x3d')]){_0x5cf559[_0x3b04('0x3e')]=[{'all':!![]}];}_0x5cf559=_[_0x3b04('0x3a')]({},_0x5cf559,_0x8ad108['options']);return db[_0x3b04('0x3f')][_0x3b04('0x44')](_0x5cf559)[_0x3b04('0x20')](handleEntityNotFound(_0x12ea96,null))[_0x3b04('0x20')](respondWithResult(_0x12ea96,null))[_0x3b04('0x42')](handleError(_0x12ea96,null));};exports[_0x3b04('0x45')]=function(_0x5c40aa,_0x229e3c){return db[_0x3b04('0x3f')][_0x3b04('0x45')](_0x5c40aa[_0x3b04('0x46')],{})[_0x3b04('0x20')](respondWithResult(_0x229e3c,0xc9))['catch'](handleError(_0x229e3c,null));};exports[_0x3b04('0x1f')]=function(_0x12ea8b,_0x2cfd1d){if(_0x12ea8b['body']['id']){delete _0x12ea8b[_0x3b04('0x46')]['id'];}return db[_0x3b04('0x3f')]['find']({'where':{'id':_0x12ea8b[_0x3b04('0x43')]['id']}})['then'](handleEntityNotFound(_0x2cfd1d,null))['then'](saveUpdates(_0x12ea8b[_0x3b04('0x46')],null))['then'](respondWithResult(_0x2cfd1d,null))[_0x3b04('0x42')](handleError(_0x2cfd1d,null));};exports[_0x3b04('0x21')]=function(_0x1e5ed,_0x2b3c6b){return db[_0x3b04('0x3f')]['find']({'where':{'id':_0x1e5ed[_0x3b04('0x43')]['id']}})[_0x3b04('0x20')](handleEntityNotFound(_0x2b3c6b,null))[_0x3b04('0x20')](removeEntity(_0x2b3c6b,null))[_0x3b04('0x42')](handleError(_0x2b3c6b,null));};exports[_0x3b04('0x47')]=function(_0x9820aa,_0x32a83a){return db[_0x3b04('0x3f')][_0x3b04('0x47')]()[_0x3b04('0x20')](respondWithResult(_0x32a83a,null))[_0x3b04('0x42')](handleError(_0x32a83a,null));};exports['getQuestions']=function(_0x111ac5,_0x3175e3,_0x1fc59a){var _0x266312={'raw':!![],'where':{}};var _0x1c0794={};var _0x5148fc={'count':0x0,'rows':[]};return db[_0x3b04('0x3f')][_0x3b04('0x48')]({'where':{'id':_0x111ac5[_0x3b04('0x43')]['id']}})[_0x3b04('0x20')](handleEntityNotFound(_0x3175e3,null))['then'](function(_0x460205){if(_0x460205){_0x1c0794[_0x3b04('0x2f')]=_[_0x3b04('0x2b')](db[_0x3b04('0x49')][_0x3b04('0x26')]);_0x1c0794['query']=_[_0x3b04('0x2b')](_0x111ac5[_0x3b04('0x2c')]);_0x1c0794[_0x3b04('0x2d')]=_[_0x3b04('0x2e')](_0x1c0794['model'],_0x1c0794['query']);_0x266312[_0x3b04('0x30')]=_[_0x3b04('0x2e')](_0x1c0794[_0x3b04('0x2f')],qs[_0x3b04('0x31')](_0x111ac5['query'][_0x3b04('0x31')]));_0x266312[_0x3b04('0x30')]=_0x266312[_0x3b04('0x30')]['length']?_0x266312[_0x3b04('0x30')]:_0x1c0794['model'];if(!_0x111ac5[_0x3b04('0x2c')]['hasOwnProperty'](_0x3b04('0x34'))){_0x266312[_0x3b04('0x35')]=qs[_0x3b04('0x35')](_0x111ac5[_0x3b04('0x2c')][_0x3b04('0x35')]);_0x266312['offset']=qs[_0x3b04('0x18')](_0x111ac5[_0x3b04('0x2c')][_0x3b04('0x18')]);}_0x266312[_0x3b04('0x36')]=qs['sort'](_0x111ac5['query']['sort']);_0x266312['where']=qs[_0x3b04('0x2d')](_[_0x3b04('0x39')](_0x111ac5[_0x3b04('0x2c')],_0x1c0794[_0x3b04('0x2d')]));_0x266312['where']['SessionId']=_0x460205['id'];if(_0x111ac5[_0x3b04('0x2c')][_0x3b04('0x3b')]){_0x266312[_0x3b04('0x38')]=_[_0x3b04('0x3a')](_0x266312[_0x3b04('0x38')],{'$or':_['map'](_0x266312[_0x3b04('0x30')],function(_0x156f03){var _0x36a849={};_0x36a849[_0x156f03]={'$like':'%'+_0x111ac5[_0x3b04('0x2c')]['filter']+'%'};return _0x36a849;})});}_0x266312=_[_0x3b04('0x3a')]({},_0x266312,_0x111ac5['options']);return db[_0x3b04('0x49')]['count']({'where':_0x266312['where']})['then'](function(_0x53b132){_0x5148fc[_0x3b04('0x3c')]=_0x53b132;if(_0x111ac5[_0x3b04('0x2c')][_0x3b04('0x3d')]){_0x266312[_0x3b04('0x3e')]=[{'all':!![]}];}return db[_0x3b04('0x49')][_0x3b04('0x40')](_0x266312);})[_0x3b04('0x20')](function(_0x51b199){_0x5148fc[_0x3b04('0x41')]=_0x51b199;return _0x5148fc;});}})['then'](respondWithFilteredResult(_0x3175e3,_0x266312))[_0x3b04('0x42')](handleError(_0x3175e3,null));};
\ No newline at end of file
index 4b9bbd9..63402d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['lodash','util','api','moment','bluebird','path','rimraf','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0x46ed,0x168));var _0xd46e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x46ed[_0x29d94e];return _0x106237;};'use strict';var _=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var logger=require('../../config/logger')(_0xd46e('0x2'));var moment=require(_0xd46e('0x3'));var BPromise=require(_0xd46e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd46e('0x5'));var rimraf=require(_0xd46e('0x6'));var config=require('../../config/environment');var attributes=require(_0xd46e('0x7'));module[_0xd46e('0x8')]=function(_0x160bcf,_0x25cf78){return _0x160bcf[_0xd46e('0x9')](_0xd46e('0xa'),attributes,{'tableName':_0xd46e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xef17=['./jscriptySessionReport.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x130705,_0x2d266b){var _0x1fa991=function(_0x395639){while(--_0x395639){_0x130705['push'](_0x130705['shift']());}};_0x1fa991(++_0x2d266b);}(_0xef17,0x136));var _0x7ef1=function(_0x20def8,_0x4b7ee0){_0x20def8=_0x20def8-0x0;var _0xf24268=_0xef17[_0x20def8];return _0xf24268;};'use strict';var _=require(_0x7ef1('0x0'));var util=require(_0x7ef1('0x1'));var logger=require(_0x7ef1('0x2'))(_0x7ef1('0x3'));var moment=require(_0x7ef1('0x4'));var BPromise=require(_0x7ef1('0x5'));var rp=require(_0x7ef1('0x6'));var fs=require('fs');var path=require(_0x7ef1('0x7'));var rimraf=require(_0x7ef1('0x8'));var config=require('../../config/environment');var attributes=require(_0x7ef1('0x9'));module['exports']=function(_0x138ed1,_0x498596){return _0x138ed1[_0x7ef1('0xa')]('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b8680bf..7c24c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','JscriptySessionReport,\x20%s,\x20%s'];(function(_0x5e92c6,_0x52cb31){var _0x2b5767=function(_0x58e1a3){while(--_0x58e1a3){_0x5e92c6['push'](_0x5e92c6['shift']());}};_0x2b5767(++_0x52cb31);}(_0x9536,0x179));var _0x6953=function(_0x16bb0e,_0x343132){_0x16bb0e=_0x16bb0e-0x0;var _0x102b8b=_0x9536[_0x16bb0e];return _0x102b8b;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var moment=require(_0x6953('0x2'));var BPromise=require(_0x6953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6953('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6953('0x5'));var logger=require(_0x6953('0x6'))(_0x6953('0x7'));var config=require(_0x6953('0x8'));var jayson=require(_0x6953('0x9'));var client=jayson['client'][_0x6953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bb026,_0x385f2d,_0x3e1aff){return new BPromise(function(_0x1c8225,_0x58ac30){return client[_0x6953('0xb')](_0x2bb026,_0x3e1aff)[_0x6953('0xc')](function(_0x449acb){logger['info'](_0x6953('0xd'),_0x385f2d,_0x6953('0xe'));logger[_0x6953('0xf')](_0x6953('0x10'),_0x385f2d,_0x6953('0xe'),JSON[_0x6953('0x11')](_0x449acb));if(_0x449acb[_0x6953('0x12')]){if(_0x449acb[_0x6953('0x12')][_0x6953('0x13')]===0x1f4){logger['error'](_0x6953('0xd'),_0x385f2d,_0x449acb['error'][_0x6953('0x14')]);return _0x58ac30(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}logger[_0x6953('0x12')](_0x6953('0xd'),_0x385f2d,_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);return _0x1c8225(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}else{logger[_0x6953('0x15')](_0x6953('0xd'),_0x385f2d,'request\x20sent');_0x1c8225(_0x449acb['result'][_0x6953('0x14')]);}})[_0x6953('0x16')](function(_0x16b79b){logger[_0x6953('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x385f2d,_0x16b79b);_0x58ac30(_0x16b79b);});});}
\ No newline at end of file
+var _0x583c=['../../config/environment','client','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc'];(function(_0x1fd675,_0x165dfe){var _0x16b554=function(_0x5761ff){while(--_0x5761ff){_0x1fd675['push'](_0x1fd675['shift']());}};_0x16b554(++_0x165dfe);}(_0x583c,0x12b));var _0xc583=function(_0x284a61,_0x231686){_0x284a61=_0x284a61-0x0;var _0x220e3c=_0x583c[_0x284a61];return _0x220e3c;};'use strict';var _=require(_0xc583('0x0'));var util=require(_0xc583('0x1'));var moment=require(_0xc583('0x2'));var BPromise=require(_0xc583('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc583('0x4'));var db=require(_0xc583('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc583('0x6'));var config=require(_0xc583('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc583('0x8')][_0xc583('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2719df,_0x1dd37c,_0x48a8d4){return new BPromise(function(_0x21ed88,_0x26cec0){return client['request'](_0x2719df,_0x48a8d4)[_0xc583('0xa')](function(_0x24ab4f){logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,_0xc583('0xd'));logger['debug'](_0xc583('0xe'),_0x1dd37c,_0xc583('0xd'),JSON['stringify'](_0x24ab4f));if(_0x24ab4f[_0xc583('0xf')]){if(_0x24ab4f[_0xc583('0xf')]['code']===0x1f4){logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);return _0x26cec0(_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);}logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')]['message']);return _0x21ed88(_0x24ab4f[_0xc583('0xf')]['message']);}else{logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,'request\x20sent');_0x21ed88(_0x24ab4f[_0xc583('0x11')][_0xc583('0x10')]);}})['catch'](function(_0x7d1690){logger[_0xc583('0xf')]('JscriptySessionReport,\x20%s,\x20%s',_0x1dd37c,_0x7d1690);_0x26cec0(_0x7d1690);});});}
\ No newline at end of file
index a252e9c..a076653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30bb=['exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','./license.controller','/:id','update','isAuthenticated'];(function(_0xc3155e,_0x3d6ede){var _0x4e9604=function(_0x165f9a){while(--_0x165f9a){_0xc3155e['push'](_0xc3155e['shift']());}};_0x4e9604(++_0x3d6ede);}(_0x30bb,0x175));var _0xb30b=function(_0x4d01fd,_0x1f8278){_0x4d01fd=_0x4d01fd-0x0;var _0x1dab92=_0x30bb[_0x4d01fd];return _0x1dab92;};'use strict';var multer=require(_0xb30b('0x0'));var util=require(_0xb30b('0x1'));var path=require(_0xb30b('0x2'));var timeout=require('connect-timeout');var express=require(_0xb30b('0x3'));var router=express[_0xb30b('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb30b('0x5'));var config=require(_0xb30b('0x6'));var controller=require(_0xb30b('0x7'));router['get']('/',controller['index']);router['put'](_0xb30b('0x8'),auth['isAuthenticated'](),controller[_0xb30b('0x9')]);router['get']('/download_log_file',auth[_0xb30b('0xa')](),controller['downloadLogFile']);module[_0xb30b('0xb')]=router;
\ No newline at end of file
+var _0x4d09=['util','path','connect-timeout','../../components/interaction/service','../../config/environment','./license.controller','put','/:id','update','get','/download_log_file','downloadLogFile','exports','multer'];(function(_0x37f85a,_0x240e20){var _0x190eeb=function(_0x2ae374){while(--_0x2ae374){_0x37f85a['push'](_0x37f85a['shift']());}};_0x190eeb(++_0x240e20);}(_0x4d09,0xb5));var _0x94d0=function(_0x5b27da,_0x4a6532){_0x5b27da=_0x5b27da-0x0;var _0x3254f4=_0x4d09[_0x5b27da];return _0x3254f4;};'use strict';var multer=require(_0x94d0('0x0'));var util=require(_0x94d0('0x1'));var path=require(_0x94d0('0x2'));var timeout=require(_0x94d0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x94d0('0x4'));var config=require(_0x94d0('0x5'));var controller=require(_0x94d0('0x6'));router['get']('/',controller['index']);router[_0x94d0('0x7')](_0x94d0('0x8'),auth['isAuthenticated'](),controller[_0x94d0('0x9')]);router[_0x94d0('0xa')](_0x94d0('0xb'),auth['isAuthenticated'](),controller[_0x94d0('0xc')]);module[_0x94d0('0xd')]=router;
\ No newline at end of file
index e3b6ef4..9e268d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb18d=['sequelize','exports','TEXT','STRING','INTEGER'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0xb18d,0x181));var _0xdb18=function(_0x1a0682,_0x485b70){_0x1a0682=_0x1a0682-0x0;var _0xe03252=_0xb18d[_0x1a0682];return _0xe03252;};'use strict';var Sequelize=require(_0xdb18('0x0'));module[_0xdb18('0x1')]={'license':{'type':Sequelize[_0xdb18('0x2')]},'data1':{'type':Sequelize[_0xdb18('0x3')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xdb18('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6bef=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x75c570,_0x4d449c){var _0x561b6c=function(_0x3a655d){while(--_0x3a655d){_0x75c570['push'](_0x75c570['shift']());}};_0x561b6c(++_0x4d449c);}(_0x6bef,0x1ba));var _0xf6be=function(_0x5a12f1,_0x4dc8a5){_0x5a12f1=_0x5a12f1-0x0;var _0x21c639=_0x6bef[_0x5a12f1];return _0x21c639;};'use strict';var Sequelize=require(_0xf6be('0x0'));module[_0xf6be('0x1')]={'license':{'type':Sequelize[_0xf6be('0x2')]},'data1':{'type':Sequelize[_0xf6be('0x3')]},'data2':{'type':Sequelize[_0xf6be('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xf6be('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 976bed6..6b18b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d56=['lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','../../config/license/util','index','License','query','filters','intersection','model','fields','attributes','length','merge','options','catch','body','params','get','checkLicense','demo','downloadLogFile','license-info.log','/var','log','xcally','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','zip-dir','fast-json-patch','moment','util','path','sox','to-csv'];(function(_0x583914,_0x521877){var _0x4218bb=function(_0x3b776e){while(--_0x3b776e){_0x583914['push'](_0x583914['shift']());}};_0x4218bb(++_0x521877);}(_0x1d56,0x1d4));var _0x61d5=function(_0x262e9b,_0x1817a9){_0x262e9b=_0x262e9b-0x0;var _0x4185a8=_0x1d56[_0x262e9b];return _0x4185a8;};'use strict';var emlformat=require(_0x61d5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x61d5('0x1'));var jsonpatch=require(_0x61d5('0x2'));var rp=require('request-promise');var moment=require(_0x61d5('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x61d5('0x4'));var path=require(_0x61d5('0x5'));var sox=require(_0x61d5('0x6'));var csv=require(_0x61d5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x61d5('0x8'));var squel=require(_0x61d5('0x9'));var crypto=require('crypto');var jsforce=require(_0x61d5('0xa'));var deskjs=require(_0x61d5('0xb'));var toCsv=require('to-csv');var querystring=require(_0x61d5('0xc'));var Papa=require(_0x61d5('0xd'));var Redis=require(_0x61d5('0xe'));var authService=require(_0x61d5('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x61d5('0x10'));var logger=require(_0x61d5('0x11'))(_0x61d5('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x61d5('0x13'))['db'];function respondWithStatusCode(_0x595baa,_0x42f443){_0x42f443=_0x42f443||0xcc;return function(_0x536a87){if(_0x536a87){return _0x595baa[_0x61d5('0x14')](_0x42f443);}return _0x595baa[_0x61d5('0x15')](_0x42f443)[_0x61d5('0x16')]();};}function respondWithResult(_0x451ccc,_0x36ba1c){_0x36ba1c=_0x36ba1c||0xc8;return function(_0x557ba7){if(_0x557ba7){return _0x451ccc['status'](_0x36ba1c)['json'](_0x557ba7);}};}function respondWithFilteredResult(_0x296004,_0x5aed62){return function(_0x2f0618){if(_0x2f0618){var _0x587d71=typeof _0x5aed62[_0x61d5('0x17')]===_0x61d5('0x18')&&typeof _0x5aed62[_0x61d5('0x19')]===_0x61d5('0x18');var _0x10b07b=_0x2f0618[_0x61d5('0x1a')];var _0x360547=_0x587d71?0x0:_0x5aed62[_0x61d5('0x17')];var _0x21ad5a=_0x587d71?_0x2f0618['count']:_0x5aed62[_0x61d5('0x17')]+_0x5aed62['limit'];var _0x17ebf8;if(_0x21ad5a>=_0x10b07b){_0x21ad5a=_0x10b07b;_0x17ebf8=0xc8;}else{_0x17ebf8=0xce;}_0x296004[_0x61d5('0x15')](_0x17ebf8);return _0x296004[_0x61d5('0x1b')](_0x61d5('0x1c'),_0x360547+'-'+_0x21ad5a+'/'+_0x10b07b)[_0x61d5('0x1d')](_0x2f0618);}return null;};}function patchUpdates(_0x4c41c0){return function(_0x5a14a6){try{jsonpatch[_0x61d5('0x1e')](_0x5a14a6,_0x4c41c0,!![]);}catch(_0x4eaacd){return BPromise[_0x61d5('0x1f')](_0x4eaacd);}return _0x5a14a6[_0x61d5('0x20')]();};}function saveUpdates(_0x5ba4e4,_0x169126){return function(_0x1e650e){if(_0x1e650e){return _0x1e650e[_0x61d5('0x21')](_0x5ba4e4)[_0x61d5('0x22')](function(_0xd7e14f){return _0xd7e14f;});}return null;};}function removeEntity(_0x1ba9c9,_0x16153e){return function(_0x14db97){if(_0x14db97){return _0x14db97[_0x61d5('0x23')]()[_0x61d5('0x22')](function(){_0x1ba9c9[_0x61d5('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0xcd7406,_0x543b93){return function(_0x144cb7){if(!_0x144cb7){_0xcd7406[_0x61d5('0x14')](0x194);}return _0x144cb7;};}function handleError(_0xf36446,_0x203a9d){_0x203a9d=_0x203a9d||0x1f4;return function(_0x5c05b8){logger[_0x61d5('0x24')](_0x5c05b8['stack']);if(_0x5c05b8[_0x61d5('0x25')]){delete _0x5c05b8['name'];}_0xf36446[_0x61d5('0x15')](_0x203a9d)[_0x61d5('0x26')](_0x5c05b8);};}var utilLicense=require(_0x61d5('0x27'));exports[_0x61d5('0x28')]=function(_0xedf9b2,_0x297e28){var _0x3634b0={'raw':!![],'where':{'id':0x1}},_0x4d0eed={};_0x4d0eed['model']=_['keys'](db[_0x61d5('0x29')]['rawAttributes']);_0x4d0eed[_0x61d5('0x2a')]=_['keys'](_0xedf9b2[_0x61d5('0x2a')]);_0x4d0eed[_0x61d5('0x2b')]=_[_0x61d5('0x2c')](_0x4d0eed[_0x61d5('0x2d')],_0x4d0eed[_0x61d5('0x2a')]);_0x3634b0['attributes']=_[_0x61d5('0x2c')](_0x4d0eed['model'],qs[_0x61d5('0x2e')](_0xedf9b2[_0x61d5('0x2a')][_0x61d5('0x2e')]));_0x3634b0[_0x61d5('0x2f')]=_0x3634b0[_0x61d5('0x2f')][_0x61d5('0x30')]?_0x3634b0[_0x61d5('0x2f')]:_0x4d0eed['model'];_0x3634b0=_[_0x61d5('0x31')]({},_0x3634b0,_0xedf9b2[_0x61d5('0x32')]);return utilLicense['getLicense'](_0x3634b0)[_0x61d5('0x22')](respondWithResult(_0x297e28,null))[_0x61d5('0x33')](handleError(_0x297e28,null));};exports['update']=function(_0x2039ca,_0x8de814){if(_0x2039ca[_0x61d5('0x34')]['id']){delete _0x2039ca[_0x61d5('0x34')]['id'];}return db[_0x61d5('0x29')]['find']({'where':{'id':_0x2039ca[_0x61d5('0x35')]['id']}})[_0x61d5('0x22')](handleEntityNotFound(_0x8de814,null))[_0x61d5('0x22')](function(_0xe61bd3){var _0x3da31b=_0xe61bd3[_0x61d5('0x36')]({'plain':!![]});return utilLicense[_0x61d5('0x37')](_0x3da31b,_0x2039ca['body']['key']);})[_0x61d5('0x22')](function(_0x3fdc5a){if(!_0x3fdc5a[_0x61d5('0x38')]){return saveUpdates(_0x2039ca[_0x61d5('0x34')],null);}return _0x3fdc5a;})['then'](respondWithResult(_0x8de814,null))[_0x61d5('0x33')](handleError(_0x8de814,null));};exports[_0x61d5('0x39')]=function(_0x2b9709,_0x2dbf6d){var _0x2e268b=_0x61d5('0x3a');var _0x11422f=path['join'](_0x61d5('0x3b'),_0x61d5('0x3c'),_0x61d5('0x3d'),_0x2e268b);_0x2dbf6d[_0x61d5('0x3e')](_0x61d5('0x3f'),_0x61d5('0x40')+_0x2e268b);_0x2dbf6d[_0x61d5('0x1b')](_0x61d5('0x41'),_0x61d5('0x42'));_0x2dbf6d[_0x61d5('0x43')](_0x11422f);};
\ No newline at end of file
+var _0xdfab=['util','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','end','error','stack','index','model','keys','query','intersection','attributes','length','merge','options','getLicense','catch','body','License','find','get','checkLicense','key','downloadLogFile','license-info.log','join','/var','log','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xdfab,0x18c));var _0xbdfa=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xdfab[_0x5f309e];return _0x487b5e;};'use strict';var emlformat=require(_0xbdfa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbdfa('0x1'));var jsonpatch=require(_0xbdfa('0x2'));var rp=require(_0xbdfa('0x3'));var moment=require(_0xbdfa('0x4'));var BPromise=require(_0xbdfa('0x5'));var Mustache=require('mustache');var util=require(_0xbdfa('0x6'));var path=require(_0xbdfa('0x7'));var sox=require(_0xbdfa('0x8'));var csv=require(_0xbdfa('0x9'));var ejs=require(_0xbdfa('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbdfa('0xb'));var squel=require('squel');var crypto=require(_0xbdfa('0xc'));var jsforce=require(_0xbdfa('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xbdfa('0x9'));var querystring=require('querystring');var Papa=require(_0xbdfa('0xe'));var Redis=require(_0xbdfa('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xbdfa('0x10'));var as=require(_0xbdfa('0x11'));var hardwareService=require(_0xbdfa('0x12'));var logger=require('../../config/logger')(_0xbdfa('0x13'));var utils=require('../../config/utils');var config=require(_0xbdfa('0x14'));var licenseUtil=require(_0xbdfa('0x15'));var db=require(_0xbdfa('0x16'))['db'];function respondWithStatusCode(_0x4b5ff6,_0x47bdd8){_0x47bdd8=_0x47bdd8||0xcc;return function(_0x1b7997){if(_0x1b7997){return _0x4b5ff6[_0xbdfa('0x17')](_0x47bdd8);}return _0x4b5ff6[_0xbdfa('0x18')](_0x47bdd8)['end']();};}function respondWithResult(_0x2c6c00,_0x4eb91e){_0x4eb91e=_0x4eb91e||0xc8;return function(_0x221fb5){if(_0x221fb5){return _0x2c6c00[_0xbdfa('0x18')](_0x4eb91e)[_0xbdfa('0x19')](_0x221fb5);}};}function respondWithFilteredResult(_0x5c020c,_0x4ca29a){return function(_0xa79465){if(_0xa79465){var _0x1848cc=typeof _0x4ca29a[_0xbdfa('0x1a')]===_0xbdfa('0x1b')&&typeof _0x4ca29a[_0xbdfa('0x1c')]===_0xbdfa('0x1b');var _0x2cd65b=_0xa79465[_0xbdfa('0x1d')];var _0x168941=_0x1848cc?0x0:_0x4ca29a[_0xbdfa('0x1a')];var _0x8cfe3f=_0x1848cc?_0xa79465['count']:_0x4ca29a[_0xbdfa('0x1a')]+_0x4ca29a['limit'];var _0x52dfca;if(_0x8cfe3f>=_0x2cd65b){_0x8cfe3f=_0x2cd65b;_0x52dfca=0xc8;}else{_0x52dfca=0xce;}_0x5c020c[_0xbdfa('0x18')](_0x52dfca);return _0x5c020c['set']('Content-Range',_0x168941+'-'+_0x8cfe3f+'/'+_0x2cd65b)[_0xbdfa('0x19')](_0xa79465);}return null;};}function patchUpdates(_0x3d88d3){return function(_0x4b44e6){try{jsonpatch[_0xbdfa('0x1e')](_0x4b44e6,_0x3d88d3,!![]);}catch(_0x268fab){return BPromise[_0xbdfa('0x1f')](_0x268fab);}return _0x4b44e6[_0xbdfa('0x20')]();};}function saveUpdates(_0xfc7de4,_0x507ef5){return function(_0x30fb2b){if(_0x30fb2b){return _0x30fb2b[_0xbdfa('0x21')](_0xfc7de4)[_0xbdfa('0x22')](function(_0xa5630f){return _0xa5630f;});}return null;};}function removeEntity(_0x47cfe7,_0x4676d5){return function(_0x24c903){if(_0x24c903){return _0x24c903[_0xbdfa('0x23')]()[_0xbdfa('0x22')](function(){_0x47cfe7[_0xbdfa('0x18')](0xcc)[_0xbdfa('0x24')]();});}};}function handleEntityNotFound(_0x55d4e5,_0x17eb5f){return function(_0xf0b4c8){if(!_0xf0b4c8){_0x55d4e5[_0xbdfa('0x17')](0x194);}return _0xf0b4c8;};}function handleError(_0x3af369,_0x4f1d81){_0x4f1d81=_0x4f1d81||0x1f4;return function(_0x3008e2){logger[_0xbdfa('0x25')](_0x3008e2[_0xbdfa('0x26')]);if(_0x3008e2['name']){delete _0x3008e2['name'];}_0x3af369[_0xbdfa('0x18')](_0x4f1d81)['send'](_0x3008e2);};}var utilLicense=require(_0xbdfa('0x15'));exports[_0xbdfa('0x27')]=function(_0x4fa74b,_0x2cfec5){var _0x2e4112={'raw':!![],'where':{'id':0x1}},_0x4589bb={};_0x4589bb[_0xbdfa('0x28')]=_[_0xbdfa('0x29')](db['License']['rawAttributes']);_0x4589bb[_0xbdfa('0x2a')]=_[_0xbdfa('0x29')](_0x4fa74b[_0xbdfa('0x2a')]);_0x4589bb['filters']=_[_0xbdfa('0x2b')](_0x4589bb[_0xbdfa('0x28')],_0x4589bb['query']);_0x2e4112[_0xbdfa('0x2c')]=_[_0xbdfa('0x2b')](_0x4589bb['model'],qs['fields'](_0x4fa74b['query']['fields']));_0x2e4112['attributes']=_0x2e4112[_0xbdfa('0x2c')][_0xbdfa('0x2d')]?_0x2e4112[_0xbdfa('0x2c')]:_0x4589bb['model'];_0x2e4112=_[_0xbdfa('0x2e')]({},_0x2e4112,_0x4fa74b[_0xbdfa('0x2f')]);return utilLicense[_0xbdfa('0x30')](_0x2e4112)[_0xbdfa('0x22')](respondWithResult(_0x2cfec5,null))[_0xbdfa('0x31')](handleError(_0x2cfec5,null));};exports[_0xbdfa('0x21')]=function(_0x33a16d,_0x22bb86){if(_0x33a16d['body']['id']){delete _0x33a16d[_0xbdfa('0x32')]['id'];}return db[_0xbdfa('0x33')][_0xbdfa('0x34')]({'where':{'id':_0x33a16d['params']['id']}})[_0xbdfa('0x22')](handleEntityNotFound(_0x22bb86,null))[_0xbdfa('0x22')](function(_0x38ffde){var _0x484245=_0x38ffde[_0xbdfa('0x35')]({'plain':!![]});return utilLicense[_0xbdfa('0x36')](_0x484245,_0x33a16d[_0xbdfa('0x32')][_0xbdfa('0x37')]);})[_0xbdfa('0x22')](function(_0x2d21f3){if(!_0x2d21f3['demo']){return saveUpdates(_0x33a16d[_0xbdfa('0x32')],null);}return _0x2d21f3;})[_0xbdfa('0x22')](respondWithResult(_0x22bb86,null))[_0xbdfa('0x31')](handleError(_0x22bb86,null));};exports[_0xbdfa('0x38')]=function(_0x10d430,_0x554dc8){var _0x40bb49=_0xbdfa('0x39');var _0x256fed=path[_0xbdfa('0x3a')](_0xbdfa('0x3b'),_0xbdfa('0x3c'),'xcally',_0x40bb49);_0x554dc8[_0xbdfa('0x3d')](_0xbdfa('0x3e'),_0xbdfa('0x3f')+_0x40bb49);_0x554dc8['set'](_0xbdfa('0x40'),_0xbdfa('0x41'));_0x554dc8[_0xbdfa('0x42')](_0x256fed);};
\ No newline at end of file
index 54b0d41..5ec381d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd652=['license','lodash','util','moment','path','./license.attributes','exports','define','License'];(function(_0x13843f,_0x50422d){var _0x1063ae=function(_0x12fd6b){while(--_0x12fd6b){_0x13843f['push'](_0x13843f['shift']());}};_0x1063ae(++_0x50422d);}(_0xd652,0x106));var _0x2d65=function(_0x359e33,_0x38305a){_0x359e33=_0x359e33-0x0;var _0x220c91=_0xd652[_0x359e33];return _0x220c91;};'use strict';var _=require(_0x2d65('0x0'));var util=require(_0x2d65('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2d65('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d65('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2d65('0x4'));module[_0x2d65('0x5')]=function(_0x1a1e4b,_0x1cc254){return _0x1a1e4b[_0x2d65('0x6')](_0x2d65('0x7'),attributes,{'tableName':_0x2d65('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd63c=['../../config/logger','api','moment','path','../../config/environment','./license.attributes','exports','define','License','license','lodash','util'];(function(_0x273436,_0x3d07f8){var _0x3e7ae2=function(_0x20d6c5){while(--_0x20d6c5){_0x273436['push'](_0x273436['shift']());}};_0x3e7ae2(++_0x3d07f8);}(_0xd63c,0x18a));var _0xcd63=function(_0x3df93e,_0x5af13a){_0x3df93e=_0x3df93e-0x0;var _0x2d4f2a=_0xd63c[_0x3df93e];return _0x2d4f2a;};'use strict';var _=require(_0xcd63('0x0'));var util=require(_0xcd63('0x1'));var logger=require(_0xcd63('0x2'))(_0xcd63('0x3'));var moment=require(_0xcd63('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xcd63('0x5'));var rimraf=require('rimraf');var config=require(_0xcd63('0x6'));var attributes=require(_0xcd63('0x7'));module[_0xcd63('0x8')]=function(_0x5eb383,_0x2fec6d){return _0x5eb383[_0xcd63('0x9')](_0xcd63('0xa'),attributes,{'tableName':_0xcd63('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 111e99c..cf4e6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39ee=['request','then','info','request\x20sent','debug','stringify','error','code','License,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3a521a,_0x50c1e3){var _0x826560=function(_0xd3a46c){while(--_0xd3a46c){_0x3a521a['push'](_0x3a521a['shift']());}};_0x826560(++_0x50c1e3);}(_0x39ee,0x14e));var _0xe39e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x39ee[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xe39e('0x0'));var util=require('util');var moment=require(_0xe39e('0x1'));var BPromise=require('bluebird');var rs=require(_0xe39e('0x2'));var fs=require('fs');var Redis=require(_0xe39e('0x3'));var db=require(_0xe39e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe39e('0x5'))(_0xe39e('0x6'));var config=require(_0xe39e('0x7'));var jayson=require(_0xe39e('0x8'));var client=jayson[_0xe39e('0x9')][_0xe39e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34923f,_0xa50954,_0x24fda0){return new BPromise(function(_0x155173,_0x11b705){return client[_0xe39e('0xb')](_0x34923f,_0x24fda0)[_0xe39e('0xc')](function(_0x2988b0){logger[_0xe39e('0xd')]('License,\x20%s,\x20%s',_0xa50954,_0xe39e('0xe'));logger[_0xe39e('0xf')]('License,\x20%s,\x20%s,\x20%s',_0xa50954,_0xe39e('0xe'),JSON[_0xe39e('0x10')](_0x2988b0));if(_0x2988b0[_0xe39e('0x11')]){if(_0x2988b0['error'][_0xe39e('0x12')]===0x1f4){logger['error'](_0xe39e('0x13'),_0xa50954,_0x2988b0[_0xe39e('0x11')][_0xe39e('0x14')]);return _0x11b705(_0x2988b0['error'][_0xe39e('0x14')]);}logger['error'](_0xe39e('0x13'),_0xa50954,_0x2988b0['error'][_0xe39e('0x14')]);return _0x155173(_0x2988b0[_0xe39e('0x11')]['message']);}else{logger[_0xe39e('0xd')](_0xe39e('0x13'),_0xa50954,'request\x20sent');_0x155173(_0x2988b0[_0xe39e('0x15')][_0xe39e('0x14')]);}})[_0xe39e('0x16')](function(_0x2a7987){logger[_0xe39e('0x11')](_0xe39e('0x13'),_0xa50954,_0x2a7987);_0x11b705(_0x2a7987);});});}
\ No newline at end of file
+var _0x6f96=['info','License,\x20%s,\x20%s','request\x20sent','License,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x176c30,_0x3cb714){var _0xaac1fe=function(_0x3e9b02){while(--_0x3e9b02){_0x176c30['push'](_0x176c30['shift']());}};_0xaac1fe(++_0x3cb714);}(_0x6f96,0x93));var _0x66f9=function(_0x47289a,_0x2aae5e){_0x47289a=_0x47289a-0x0;var _0x4430d7=_0x6f96[_0x47289a];return _0x4430d7;};'use strict';var _=require(_0x66f9('0x0'));var util=require(_0x66f9('0x1'));var moment=require(_0x66f9('0x2'));var BPromise=require(_0x66f9('0x3'));var rs=require(_0x66f9('0x4'));var fs=require('fs');var Redis=require(_0x66f9('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x66f9('0x6'));var logger=require('../../config/logger')(_0x66f9('0x7'));var config=require(_0x66f9('0x8'));var jayson=require(_0x66f9('0x9'));var client=jayson[_0x66f9('0xa')][_0x66f9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x232352,_0x167f88,_0x54b320){return new BPromise(function(_0x269d51,_0x1e42c4){return client[_0x66f9('0xc')](_0x232352,_0x54b320)[_0x66f9('0xd')](function(_0x4e400e){logger[_0x66f9('0xe')](_0x66f9('0xf'),_0x167f88,_0x66f9('0x10'));logger['debug'](_0x66f9('0x11'),_0x167f88,_0x66f9('0x10'),JSON[_0x66f9('0x12')](_0x4e400e));if(_0x4e400e['error']){if(_0x4e400e[_0x66f9('0x13')][_0x66f9('0x14')]===0x1f4){logger[_0x66f9('0x13')](_0x66f9('0xf'),_0x167f88,_0x4e400e[_0x66f9('0x13')][_0x66f9('0x15')]);return _0x1e42c4(_0x4e400e[_0x66f9('0x13')][_0x66f9('0x15')]);}logger[_0x66f9('0x13')](_0x66f9('0xf'),_0x167f88,_0x4e400e['error'][_0x66f9('0x15')]);return _0x269d51(_0x4e400e[_0x66f9('0x13')][_0x66f9('0x15')]);}else{logger[_0x66f9('0xe')](_0x66f9('0xf'),_0x167f88,_0x66f9('0x10'));_0x269d51(_0x4e400e['result'][_0x66f9('0x15')]);}})[_0x66f9('0x16')](function(_0xcf20e9){logger[_0x66f9('0x13')](_0x66f9('0xf'),_0x167f88,_0xcf20e9);_0x1e42c4(_0xcf20e9);});});}
\ No newline at end of file
index 30fd796..df9a1a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ae=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','/:id','show','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','getInteractions','/:id/messages','getMessages','/:id/verify','verifySmtp','post','/:id/dispositions','addAnswer','create','addImap','addSmtp','addInteraction','/:id/applications','/:id/send','/:id/users','addAgents','update','removeDispositions','delete','removeImap','destroy','removeAgents','exports','multer'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x25ae,0x10d));var _0xe25a=function(_0x4656b2,_0x2d5db3){_0x4656b2=_0x4656b2-0x0;var _0x2ef94f=_0x25ae[_0x4656b2];return _0x2ef94f;};'use strict';var multer=require(_0xe25a('0x0'));var util=require(_0xe25a('0x1'));var path=require(_0xe25a('0x2'));var timeout=require(_0xe25a('0x3'));var express=require(_0xe25a('0x4'));var router=express['Router']();var fs_extra=require(_0xe25a('0x5'));var auth=require(_0xe25a('0x6'));var interaction=require(_0xe25a('0x7'));var config=require(_0xe25a('0x8'));var controller=require(_0xe25a('0x9'));router[_0xe25a('0xa')]('/',auth[_0xe25a('0xb')](),controller[_0xe25a('0xc')]);router[_0xe25a('0xa')](_0xe25a('0xd'),auth[_0xe25a('0xb')](),controller['describe']);router[_0xe25a('0xa')](_0xe25a('0xe'),auth[_0xe25a('0xb')](),controller[_0xe25a('0xf')]);router[_0xe25a('0xa')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xe25a('0x10')]);router[_0xe25a('0xa')](_0xe25a('0x11'),auth[_0xe25a('0xb')](),controller['getAnswers']);router[_0xe25a('0xa')](_0xe25a('0x12'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x13')]);router[_0xe25a('0xa')](_0xe25a('0x14'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x15')]);router['get']('/:id/interactions',auth[_0xe25a('0xb')](),controller[_0xe25a('0x16')]);router['get']('/:id/applications',auth[_0xe25a('0xb')](),controller['getApplications']);router[_0xe25a('0xa')](_0xe25a('0x17'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x18')]);router[_0xe25a('0xa')](_0xe25a('0x19'),auth['isAuthenticated'](),controller[_0xe25a('0x1a')]);router['get']('/:id/users',auth[_0xe25a('0xb')](),controller['getAgents']);router[_0xe25a('0x1b')](_0xe25a('0x1c'),auth[_0xe25a('0xb')](),controller['addDisposition']);router[_0xe25a('0x1b')]('/:id/canned_answers',auth[_0xe25a('0xb')](),controller[_0xe25a('0x1d')]);router[_0xe25a('0x1b')]('/',auth['isAuthenticated'](),controller[_0xe25a('0x1e')]);router[_0xe25a('0x1b')](_0xe25a('0x12'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x1f')]);router[_0xe25a('0x1b')](_0xe25a('0x14'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x20')]);router['post']('/:id/interactions',auth['isAuthenticated'](),controller[_0xe25a('0x21')]);router[_0xe25a('0x1b')](_0xe25a('0x22'),auth[_0xe25a('0xb')](),controller['addApplications']);router[_0xe25a('0x1b')](_0xe25a('0x23'),auth[_0xe25a('0xb')](),controller['send']);router[_0xe25a('0x1b')](_0xe25a('0x24'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x25')]);router['put'](_0xe25a('0xe'),auth['isAuthenticated'](),controller[_0xe25a('0x26')]);router['delete']('/:id/dispositions',auth[_0xe25a('0xb')](),controller[_0xe25a('0x27')]);router[_0xe25a('0x28')](_0xe25a('0x11'),auth[_0xe25a('0xb')](),controller['removeAnswers']);router[_0xe25a('0x28')](_0xe25a('0x12'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x29')]);router[_0xe25a('0x28')]('/:id/out_servers',auth[_0xe25a('0xb')](),controller['removeSmtp']);router[_0xe25a('0x28')](_0xe25a('0xe'),auth[_0xe25a('0xb')](),controller[_0xe25a('0x2a')]);router['delete'](_0xe25a('0x24'),auth['isAuthenticated'](),controller[_0xe25a('0x2b')]);module[_0xe25a('0x2c')]=router;
\ No newline at end of file
+var _0x1b0b=['/:id/canned_answers','getAnswers','getImap','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','verifySmtp','getAgents','post','addDisposition','addAnswer','create','addImap','/:id/out_servers','addSmtp','addApplications','/:id/send','send','addAgents','put','update','delete','removeAnswers','/:id/in_servers','removeImap','removeSmtp','destroy','/:id/users','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getDispositions'];(function(_0x1daabf,_0x23dcf0){var _0x3755fb=function(_0x2c4b2b){while(--_0x2c4b2b){_0x1daabf['push'](_0x1daabf['shift']());}};_0x3755fb(++_0x23dcf0);}(_0x1b0b,0x16a));var _0xb1b0=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x1b0b[_0x36c5b0];return _0xf19333;};'use strict';var multer=require('multer');var util=require(_0xb1b0('0x0'));var path=require('path');var timeout=require(_0xb1b0('0x1'));var express=require('express');var router=express[_0xb1b0('0x2')]();var fs_extra=require(_0xb1b0('0x3'));var auth=require(_0xb1b0('0x4'));var interaction=require(_0xb1b0('0x5'));var config=require('../../config/environment');var controller=require(_0xb1b0('0x6'));router[_0xb1b0('0x7')]('/',auth[_0xb1b0('0x8')](),controller['index']);router['get'](_0xb1b0('0x9'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0xa')]);router[_0xb1b0('0x7')](_0xb1b0('0xb'),auth[_0xb1b0('0x8')](),controller['show']);router['get'](_0xb1b0('0xc'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0xd')]);router[_0xb1b0('0x7')](_0xb1b0('0xe'),auth['isAuthenticated'](),controller[_0xb1b0('0xf')]);router[_0xb1b0('0x7')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0xb1b0('0x10')]);router[_0xb1b0('0x7')]('/:id/out_servers',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x11')]);router['get'](_0xb1b0('0x12'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x13')]);router['get'](_0xb1b0('0x14'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x15')]);router[_0xb1b0('0x7')](_0xb1b0('0x16'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x17')]);router['get']('/:id/verify',auth['isAuthenticated'](),controller[_0xb1b0('0x18')]);router['get']('/:id/users',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x19')]);router[_0xb1b0('0x1a')](_0xb1b0('0xc'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x1b')]);router['post'](_0xb1b0('0xe'),auth['isAuthenticated'](),controller[_0xb1b0('0x1c')]);router[_0xb1b0('0x1a')]('/',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x1d')]);router[_0xb1b0('0x1a')]('/:id/in_servers',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x1e')]);router[_0xb1b0('0x1a')](_0xb1b0('0x1f'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x20')]);router[_0xb1b0('0x1a')]('/:id/interactions',auth[_0xb1b0('0x8')](),controller['addInteraction']);router[_0xb1b0('0x1a')](_0xb1b0('0x14'),auth['isAuthenticated'](),controller[_0xb1b0('0x21')]);router[_0xb1b0('0x1a')](_0xb1b0('0x22'),auth['isAuthenticated'](),controller[_0xb1b0('0x23')]);router[_0xb1b0('0x1a')]('/:id/users',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x24')]);router[_0xb1b0('0x25')](_0xb1b0('0xb'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x26')]);router[_0xb1b0('0x27')](_0xb1b0('0xc'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0xb1b0('0x27')](_0xb1b0('0xe'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x28')]);router[_0xb1b0('0x27')](_0xb1b0('0x29'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x2a')]);router['delete']('/:id/out_servers',auth['isAuthenticated'](),controller[_0xb1b0('0x2b')]);router[_0xb1b0('0x27')](_0xb1b0('0xb'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x2c')]);router[_0xb1b0('0x27')](_0xb1b0('0x2d'),auth[_0xb1b0('0x8')](),controller['removeAgents']);module[_0xb1b0('0x2e')]=router;
\ No newline at end of file
index 54ddb4e..3259aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4782=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','hotmail','yahoo','outlook365','getDataValue','custom','provider','sequelize','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}}'];(function(_0x32d414,_0x4d23da){var _0x4e0bca=function(_0x15d397){while(--_0x15d397){_0x32d414['push'](_0x32d414['shift']());}};_0x4e0bca(++_0x4d23da);}(_0x4782,0x10f));var _0x2478=function(_0x39f36f,_0x2db91e){_0x39f36f=_0x39f36f-0x0;var _0x21781f=_0x4782[_0x39f36f];return _0x21781f;};'use strict';var Sequelize=require(_0x2478('0x0'));module[_0x2478('0x1')]={'description':{'type':Sequelize[_0x2478('0x2')]},'name':{'type':Sequelize[_0x2478('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x2478('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x2478('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x2478('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x2478('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x2478('0x4')]},'markAsUnread':{'type':Sequelize[_0x2478('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x2478('0x2')],'allowNull':![],'defaultValue':_0x2478('0x5')},'fontSize':{'type':Sequelize[_0x2478('0x6')](0x2)[_0x2478('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x2478('0x4')],'defaultValue':function(){return _0x2478('0x8');}},'notificationSound':{'type':Sequelize[_0x2478('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2478('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2478('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2478('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2478('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2478('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x2478('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x2478('0x3')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1d0abd){if(!_0x1d0abd)this[_0x2478('0xa')](_0x2478('0xb'),null);this[_0x2478('0xa')](_0x2478('0xc'),_0x1d0abd);}},'provider':{'type':Sequelize[_0x2478('0xd')]('gmail',_0x2478('0xe'),_0x2478('0xf'),_0x2478('0x10')),'defaultValue':null,'get':function(){if(!this[_0x2478('0x11')]('provider'))return _0x2478('0x12');return this['getDataValue'](_0x2478('0x13'));},'set':function(_0x1954a8){if(_0x1954a8===_0x2478('0x12'))_0x1954a8=null;return this[_0x2478('0xa')](_0x2478('0x13'),_0x1954a8);}}};
\ No newline at end of file
+var _0x74fe=['Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','ENUM','gmail','hotmail','outlook365','getDataValue','provider','custom','STRING','BOOLEAN','TEXT'];(function(_0x4f0c2b,_0x2c9d14){var _0x526436=function(_0x2e13b6){while(--_0x2e13b6){_0x4f0c2b['push'](_0x4f0c2b['shift']());}};_0x526436(++_0x2c9d14);}(_0x74fe,0x9d));var _0xe74f=function(_0x1dc2c4,_0x1a043e){_0x1dc2c4=_0x1dc2c4-0x0;var _0x54390b=_0x74fe[_0x1dc2c4];return _0x54390b;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xe74f('0x0')]},'name':{'type':Sequelize[_0xe74f('0x0')],'allowNull':![]},'service':{'type':Sequelize[_0xe74f('0x1')],'defaultValue':![]},'email':{'type':Sequelize[_0xe74f('0x0')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xe74f('0x2')]},'markAsUnread':{'type':Sequelize[_0xe74f('0x1')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe74f('0x3')},'fontSize':{'type':Sequelize[_0xe74f('0x4')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xe74f('0x5');}},'notificationSound':{'type':Sequelize[_0xe74f('0x1')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe74f('0x1')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xe74f('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xe74f('0x1')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe74f('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe74f('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe74f('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0xe74f('0x6')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4cc03a){if(!_0x4cc03a)this[_0xe74f('0x7')](_0xe74f('0x8'),null);this['setDataValue']('mandatoryDisposition',_0x4cc03a);}},'provider':{'type':Sequelize[_0xe74f('0x9')](_0xe74f('0xa'),_0xe74f('0xb'),'yahoo',_0xe74f('0xc')),'defaultValue':null,'get':function(){if(!this[_0xe74f('0xd')](_0xe74f('0xe')))return _0xe74f('0xf');return this[_0xe74f('0xd')](_0xe74f('0xe'));},'set':function(_0x130f4d){if(_0x130f4d===_0xe74f('0xf'))_0x130f4d=null;return this[_0xe74f('0x7')](_0xe74f('0xe'),_0x130f4d);}}};
\ No newline at end of file
index d09a12a..5e50144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x710f=['Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','include','find','body','provider','custom','params','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','email','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','Owner','fullname','Tag','Tags','color','addApplications','transaction','sequelize','Transaction','MailApplication','findAndCountAll','finally','getApplications','getMessages','MailMessage','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','List','CmContact','CloudProvider','Smtp\x20configuration\x20not\x20found','isNil','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','sendMail','List\x20not\x20found','Contacts','messageId','subject','attach','out','Interaction','Messages','VerifySmtp','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','User','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','client','http','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','update','then','get','MailAccounts','UserProfileResource','destroy','stack','name','send','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','Unknown\x20email\x20service\x20provider','gmail','smtp-mail.outlook.com','smtp.office365.com','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','user','username','authentication','Imap','Smtp','index','MailServerIn','MailServerOut'];(function(_0x280bb5,_0x4a1aff){var _0x2b760c=function(_0x53b65a){while(--_0x53b65a){_0x280bb5['push'](_0x280bb5['shift']());}};_0x2b760c(++_0x4a1aff);}(_0x710f,0x137));var _0xf710=function(_0x187feb,_0x496b2c){_0x187feb=_0x187feb-0x0;var _0x1d3bc4=_0x710f[_0x187feb];return _0x1d3bc4;};'use strict';var moment=require(_0xf710('0x0'));var BPromise=require(_0xf710('0x1'));var util=require(_0xf710('0x2'));var path=require(_0xf710('0x3'));var _=require(_0xf710('0x4'));var juice=require('juice');var Redis=require(_0xf710('0x5'));var qs=require(_0xf710('0x6'));var logger=require(_0xf710('0x7'))(_0xf710('0x8'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xf710('0x9')]=_[_0xf710('0xa')](config[_0xf710('0x9')],{'host':_0xf710('0xb'),'port':0x18eb});var socket=require(_0xf710('0xc'))(new Redis(config['redis']));require(_0xf710('0xd'))[_0xf710('0xe')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf710('0xf')][_0xf710('0x10')]({'port':0x232b});function respondWithRpcPromise(_0x217249,_0x354a57,_0x35932b,_0x18c023){return new BPromise(function(_0x3fc237,_0x3b6f2c){var _0x51bc54=_0x18c023||client;return _0x51bc54['request'](_0x217249,_0x35932b)['then'](function(_0x2adf4c){logger[_0xf710('0x11')](_0xf710('0x12'),_0x354a57,_0xf710('0x13'));logger[_0xf710('0x14')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x354a57,_0xf710('0x13'),JSON[_0xf710('0x15')](_0x2adf4c));if(_0x2adf4c[_0xf710('0x16')]){if(_0x2adf4c['error']['code']===0x1f4){logger[_0xf710('0x16')]('MailAccount,\x20%s,\x20%s',_0x354a57,_0x2adf4c[_0xf710('0x16')]['message']);return _0x3b6f2c(_0x2adf4c['error'][_0xf710('0x17')]);}logger['error'](_0xf710('0x12'),_0x354a57,_0x2adf4c['error']['message']);return _0x3fc237(_0x2adf4c[_0xf710('0x16')][_0xf710('0x17')]);}else{logger[_0xf710('0x11')](_0xf710('0x12'),_0x354a57,'request\x20sent');_0x3fc237(_0x2adf4c['result'][_0xf710('0x17')]);}})[_0xf710('0x18')](function(_0x2cc196){logger['error'](_0xf710('0x12'),_0x354a57,_0x2cc196);_0x3b6f2c(_0x2cc196);});});}function respondWithStatusCode(_0x3519db,_0x3a243d){_0x3a243d=_0x3a243d||0xcc;return function(_0xe6829d){if(_0xe6829d){return _0x3519db[_0xf710('0x19')](_0x3a243d);}return _0x3519db[_0xf710('0x1a')](_0x3a243d)[_0xf710('0x1b')]();};}function respondWithResult(_0x2e0e56,_0x2d12ef){_0x2d12ef=_0x2d12ef||0xc8;return function(_0x446baf){if(_0x446baf){return _0x2e0e56[_0xf710('0x1a')](_0x2d12ef)[_0xf710('0x1c')](_0x446baf);}};}function respondWithFilteredResult(_0x11cbd0,_0x2fbc7d){return function(_0x1eb1b1){if(_0x1eb1b1){var _0x9ba1f1=typeof _0x2fbc7d['offset']===_0xf710('0x1d')&&typeof _0x2fbc7d[_0xf710('0x1e')]==='undefined';var _0x36f71c=_0x1eb1b1['count'];var _0x2bece2=_0x9ba1f1?0x0:_0x2fbc7d['offset'];var _0x2eacaa=_0x9ba1f1?_0x1eb1b1[_0xf710('0x1f')]:_0x2fbc7d[_0xf710('0x20')]+_0x2fbc7d[_0xf710('0x1e')];var _0xd87654;if(_0x2eacaa>=_0x36f71c){_0x2eacaa=_0x36f71c;_0xd87654=0xc8;}else{_0xd87654=0xce;}_0x11cbd0['status'](_0xd87654);return _0x11cbd0['set'](_0xf710('0x21'),_0x2bece2+'-'+_0x2eacaa+'/'+_0x36f71c)[_0xf710('0x1c')](_0x1eb1b1);}return null;};}function saveUpdates(_0x3a5816){return function(_0x123daf){if(_0x123daf){return _0x123daf[_0xf710('0x22')](_0x3a5816)[_0xf710('0x23')](function(_0x214e81){return _0x214e81;});}return null;};}function removeEntity(_0x2b9526){return function(_0x65c315){if(_0x65c315){return _0x65c315['destroy']()[_0xf710('0x23')](function(){var _0x16cce2=_0x65c315[_0xf710('0x24')]({'plain':!![]});var _0x71991a=_0xf710('0x25');return db[_0xf710('0x26')][_0xf710('0x27')]({'where':{'type':_0x71991a,'resourceId':_0x16cce2['id']}})[_0xf710('0x23')](function(){return _0x65c315;});})[_0xf710('0x23')](function(){_0x2b9526['status'](0xcc)[_0xf710('0x1b')]();});}};}function handleEntityNotFound(_0x13eef5){return function(_0x1020d6){if(!_0x1020d6){_0x13eef5[_0xf710('0x19')](0x194);}return _0x1020d6;};}function handleError(_0x5c0f49,_0x217a71){_0x217a71=_0x217a71||0x1f4;return function(_0x2019fe){logger[_0xf710('0x16')](_0x2019fe[_0xf710('0x28')]);if(_0x2019fe['name']){delete _0x2019fe[_0xf710('0x29')];}_0x5c0f49[_0xf710('0x1a')](_0x217a71)[_0xf710('0x2a')](_0x2019fe);};}function getImapHost(_0x72cab7){switch(_0x72cab7){case'gmail':return _0xf710('0x2b');case _0xf710('0x2c'):return _0xf710('0x2d');case _0xf710('0x2e'):return _0xf710('0x2f');case _0xf710('0x30'):return'outlook.office365.com';}throw new Error(_0xf710('0x31'),_0x72cab7);}function getSmtpHost(_0x58ac41){switch(_0x58ac41){case _0xf710('0x32'):return'smtp.gmail.com';case'yahoo':return'smtp.mail.yahoo.com';case'hotmail':return _0xf710('0x33');case'outlook365':return _0xf710('0x34');}throw new Error('Unknown\x20email\x20service\x20provider',_0x58ac41);}function getAuthenticationOptions(_0x31eb0a,_0xd799b){var _0x26a3f4={};var _0x56cc88={};if(_0x31eb0a){_0x26a3f4['user']=_0x56cc88['user']=_0xd799b['username'];_0x26a3f4['password']=_0x56cc88[_0xf710('0x35')]=_0xd799b[_0xf710('0x36')];if(_0xd799b[_0xf710('0x37')]){_0x26a3f4[_0xf710('0x37')]=_0x56cc88[_0xf710('0x37')]=!![];_0x26a3f4['CloudProviderId']=_0x56cc88[_0xf710('0x38')]=_0xd799b[_0xf710('0x38')];_0x26a3f4[_0xf710('0x36')]=_0x56cc88[_0xf710('0x35')]=null;}else{_0x26a3f4[_0xf710('0x38')]=_0x56cc88[_0xf710('0x38')]=null;}_0x26a3f4[_0xf710('0x39')]=getImapHost(_0x31eb0a);_0x26a3f4[_0xf710('0x3a')]=0x3e1;_0x56cc88['host']=getSmtpHost(_0x31eb0a);_0x56cc88['port']=0x24b;_0x56cc88[_0xf710('0x3b')]=![];_0x26a3f4['service']=_0x56cc88[_0xf710('0x3c')]=null;}else{if(_0xd799b['authentication']){_0x26a3f4[_0xf710('0x3d')]=_0x56cc88[_0xf710('0x3d')]=_0xd799b[_0xf710('0x3e')];_0x26a3f4[_0xf710('0x36')]=_0x56cc88[_0xf710('0x35')]=_0xd799b['password'];}else{_0x26a3f4[_0xf710('0x3f')]=_0x56cc88[_0xf710('0x3f')]=![];_0x26a3f4[_0xf710('0x3d')]=_0x56cc88[_0xf710('0x3d')]=null;_0x26a3f4[_0xf710('0x36')]=_0x56cc88['pass']=null;}_0x26a3f4[_0xf710('0x39')]=_0xd799b[_0xf710('0x40')][_0xf710('0x39')];_0x26a3f4[_0xf710('0x3a')]=_0xd799b[_0xf710('0x40')][_0xf710('0x3a')];_0x56cc88[_0xf710('0x39')]=_0xd799b['Smtp'][_0xf710('0x39')];_0x56cc88[_0xf710('0x3a')]=_0xd799b[_0xf710('0x41')][_0xf710('0x3a')];}return{'Imap':_0x26a3f4,'Smtp':_0x56cc88};}exports[_0xf710('0x42')]=function(_0x58fd73,_0xecd6a4){var _0x109c8c={'include':[{'model':db[_0xf710('0x43')],'as':_0xf710('0x40')},{'model':db[_0xf710('0x44')],'as':_0xf710('0x41')},{'model':db[_0xf710('0x45')],'as':_0xf710('0x46')}]},_0x48ac8c={},_0xcf3188={'count':0x0,'rows':[]};var _0x5e54b7=_[_0xf710('0x47')](db[_0xf710('0x48')][_0xf710('0x49')],function(_0x2c332d){return{'name':_0x2c332d['fieldName'],'type':_0x2c332d[_0xf710('0x4a')][_0xf710('0x4b')]};});_0x48ac8c[_0xf710('0x4c')]=_[_0xf710('0x47')](_0x5e54b7,_0xf710('0x29'));_0x48ac8c['query']=_[_0xf710('0x4d')](_0x58fd73[_0xf710('0x4e')]);_0x48ac8c[_0xf710('0x4f')]=_[_0xf710('0x50')](_0x48ac8c['model'],_0x48ac8c[_0xf710('0x4e')]);_0x109c8c[_0xf710('0x51')]=_[_0xf710('0x50')](_0x48ac8c[_0xf710('0x4c')],qs[_0xf710('0x52')](_0x58fd73[_0xf710('0x4e')]['fields']));_0x109c8c[_0xf710('0x51')]=_0x109c8c[_0xf710('0x51')][_0xf710('0x53')]?_0x109c8c[_0xf710('0x51')]:_0x48ac8c[_0xf710('0x4c')];if(!_0x58fd73['query'][_0xf710('0x54')](_0xf710('0x55'))){_0x109c8c[_0xf710('0x1e')]=qs[_0xf710('0x1e')](_0x58fd73[_0xf710('0x4e')][_0xf710('0x1e')]);_0x109c8c['offset']=qs['offset'](_0x58fd73[_0xf710('0x4e')]['offset']);}_0x109c8c[_0xf710('0x56')]=qs[_0xf710('0x57')](_0x58fd73[_0xf710('0x4e')]['sort']);_0x109c8c['where']=qs[_0xf710('0x4f')](_[_0xf710('0x58')](_0x58fd73['query'],_0x48ac8c['filters']),_0x5e54b7);if(_0x58fd73[_0xf710('0x4e')]['filter']){_0x109c8c[_0xf710('0x59')]=_[_0xf710('0x5a')](_0x109c8c[_0xf710('0x59')],{'$or':_[_0xf710('0x47')](_0x5e54b7,function(_0x4b1999){if(_0x4b1999[_0xf710('0x4a')]!==_0xf710('0x5b')){var _0x12975d={};_0x12975d[_0x4b1999['name']]={'$like':'%'+_0x58fd73[_0xf710('0x4e')][_0xf710('0x5c')]+'%'};return _0x12975d;}})});}_0x109c8c=_[_0xf710('0x5a')]({},_0x109c8c,_0x58fd73[_0xf710('0x5d')]);var _0x4324d1={'where':_0x109c8c['where']};return db['MailAccount']['count'](_0x4324d1)['then'](function(_0x4bfefd){_0xcf3188[_0xf710('0x1f')]=_0x4bfefd;if(_0x58fd73[_0xf710('0x4e')][_0xf710('0x5e')]){_0x109c8c['include']=[{'all':!![]}];}return db['MailAccount'][_0xf710('0x5f')](_0x109c8c);})['then'](function(_0x5a19da){_0xcf3188[_0xf710('0x60')]=_0x5a19da;return _0xcf3188;})[_0xf710('0x23')](respondWithFilteredResult(_0xecd6a4,_0x109c8c))['catch'](handleError(_0xecd6a4,null));};exports[_0xf710('0x61')]=function(_0x46be16,_0xea56cf){var _0x3cd077={'raw':![],'where':{'id':_0x46be16['params']['id']},'include':[{'model':db[_0xf710('0x43')],'as':_0xf710('0x40')},{'model':db[_0xf710('0x44')],'as':'Smtp'},{'model':db[_0xf710('0x45')],'as':'mandatoryDispositionPause'}]},_0x784772={};_0x784772[_0xf710('0x4c')]=_[_0xf710('0x4d')](db[_0xf710('0x48')][_0xf710('0x49')]);_0x784772[_0xf710('0x4e')]=_['keys'](_0x46be16[_0xf710('0x4e')]);_0x784772[_0xf710('0x4f')]=_['intersection'](_0x784772[_0xf710('0x4c')],_0x784772[_0xf710('0x4e')]);_0x3cd077[_0xf710('0x51')]=_[_0xf710('0x50')](_0x784772[_0xf710('0x4c')],qs[_0xf710('0x52')](_0x46be16[_0xf710('0x4e')][_0xf710('0x52')]));_0x3cd077[_0xf710('0x51')]=_0x3cd077['attributes'][_0xf710('0x53')]?_0x3cd077['attributes']:_0x784772[_0xf710('0x4c')];if(_0x46be16[_0xf710('0x4e')]['includeAll']){_0x3cd077[_0xf710('0x62')]=[{'all':!![]}];}_0x3cd077=_[_0xf710('0x5a')]({},_0x3cd077,_0x46be16[_0xf710('0x5d')]);return db['MailAccount'][_0xf710('0x63')](_0x3cd077)[_0xf710('0x23')](handleEntityNotFound(_0xea56cf,null))[_0xf710('0x23')](respondWithResult(_0xea56cf,null))[_0xf710('0x18')](handleError(_0xea56cf,null));};exports[_0xf710('0x22')]=function(_0x293163,_0x3ca04c){if(_0x293163[_0xf710('0x64')]['id']){delete _0x293163[_0xf710('0x64')]['id'];}var _0x5649d2=_0x293163[_0xf710('0x64')][_0xf710('0x65')]===_0xf710('0x66')?null:_0x293163[_0xf710('0x64')][_0xf710('0x65')];var _0x106f3c=_0x293163[_0xf710('0x64')][_0xf710('0x40')]||{};var _0x1ca0ec=_0x293163[_0xf710('0x64')][_0xf710('0x41')]||{};if(_0x5649d2){_0x106f3c[_0xf710('0x39')]=getImapHost(_0x5649d2);_0x106f3c[_0xf710('0x3a')]=0x3e1;_0x1ca0ec[_0xf710('0x39')]=getSmtpHost(_0x5649d2);_0x1ca0ec[_0xf710('0x3a')]=0x24b;_0x1ca0ec[_0xf710('0x3b')]=![];}if(_0x1ca0ec[_0xf710('0x37')]){_0x1ca0ec[_0xf710('0x3b')]=![];}else{_0x1ca0ec[_0xf710('0x38')]=null;}if(!_0x106f3c[_0xf710('0x37')])_0x106f3c[_0xf710('0x38')]=null;_0x293163[_0xf710('0x64')][_0xf710('0x40')]=_0x106f3c;_0x293163[_0xf710('0x64')]['Smtp']=_0x1ca0ec;return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x293163[_0xf710('0x67')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xf710('0x40')},{'model':db[_0xf710('0x44')],'as':_0xf710('0x41')},{'model':db[_0xf710('0x45')],'as':_0xf710('0x46')}]})['then'](handleEntityNotFound(_0x3ca04c,null))['then'](function(_0x1c42f0){if(!_0x1c42f0)throw new Error(_0xf710('0x68'));if(_0x1c42f0['service'])delete _0x293163[_0xf710('0x64')]['Imap'];return _0x1c42f0;})[_0xf710('0x23')](saveUpdates(_0x293163[_0xf710('0x64')],null))['then'](function(_0x552f38){if(!_0x293163[_0xf710('0x64')]['Imap'])return _0x552f38;return db[_0xf710('0x43')][_0xf710('0x22')](_0x293163['body']['Imap'],{'where':{'MailAccountId':_0x552f38['id']}})[_0xf710('0x23')](function(){return _0x552f38;});})[_0xf710('0x23')](function(_0x2c10cf){if(!_0x293163[_0xf710('0x64')]['Smtp'])return _0x2c10cf;return db[_0xf710('0x44')][_0xf710('0x22')](_0x293163[_0xf710('0x64')][_0xf710('0x41')],{'where':{'MailAccountId':_0x2c10cf['id']}})[_0xf710('0x23')](function(){return _0x2c10cf;});})['then'](respondWithResult(_0x3ca04c,null))[_0xf710('0x18')](handleError(_0x3ca04c,null));};exports[_0xf710('0x69')]=function(_0x2847f5,_0x4a52aa){return db[_0xf710('0x48')][_0xf710('0x69')]()[_0xf710('0x23')](respondWithResult(_0x4a52aa,null))[_0xf710('0x18')](handleError(_0x4a52aa,null));};exports[_0xf710('0x6a')]=function(_0x1fd6c1,_0x4ed69e){if(_0x1fd6c1[_0xf710('0x64')]['id']){delete _0x1fd6c1['body']['id'];}return db['MailAccount'][_0xf710('0x63')]({'where':{'id':_0x1fd6c1[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x4ed69e,null))[_0xf710('0x23')](function(_0x3a087c){if(_0x3a087c){_0x1fd6c1[_0xf710('0x64')][_0xf710('0x6b')]=_0x3a087c['id'];return db[_0xf710('0x6c')][_0xf710('0x6d')](_0x1fd6c1[_0xf710('0x64')]);}})['then'](respondWithResult(_0x4ed69e,null))[_0xf710('0x18')](handleError(_0x4ed69e,null));};exports[_0xf710('0x6e')]=function(_0x622f52,_0x105429){var _0x4197ea={'raw':![],'where':{}};var _0x51a42f={};var _0x4a30a5={'count':0x0,'rows':[]};return db[_0xf710('0x48')]['findOne']({'where':{'id':_0x622f52[_0xf710('0x67')]['id']}})['then'](handleEntityNotFound(_0x105429,null))['then'](function(_0x5065a7){if(_0x5065a7){_0x51a42f[_0xf710('0x4c')]=_[_0xf710('0x4d')](db[_0xf710('0x6c')][_0xf710('0x49')]);_0x51a42f[_0xf710('0x4e')]=_[_0xf710('0x4d')](_0x622f52[_0xf710('0x4e')]);_0x51a42f[_0xf710('0x4f')]=_[_0xf710('0x50')](_0x51a42f[_0xf710('0x4c')],_0x51a42f[_0xf710('0x4e')]);_0x4197ea[_0xf710('0x51')]=_[_0xf710('0x50')](_0x51a42f[_0xf710('0x4c')],qs['fields'](_0x622f52[_0xf710('0x4e')][_0xf710('0x52')]));_0x4197ea[_0xf710('0x51')]=_0x4197ea[_0xf710('0x51')][_0xf710('0x53')]?_0x4197ea[_0xf710('0x51')]:_0x51a42f['model'];if(!_0x622f52[_0xf710('0x4e')][_0xf710('0x54')](_0xf710('0x55'))){_0x4197ea[_0xf710('0x1e')]=qs['limit'](_0x622f52['query'][_0xf710('0x1e')]);_0x4197ea['offset']=qs[_0xf710('0x20')](_0x622f52['query'][_0xf710('0x20')]);}_0x4197ea['order']=qs[_0xf710('0x57')](_0x622f52[_0xf710('0x4e')][_0xf710('0x57')]);_0x4197ea[_0xf710('0x59')]=qs[_0xf710('0x4f')](_[_0xf710('0x58')](_0x622f52[_0xf710('0x4e')],_0x51a42f[_0xf710('0x4f')]));_0x4197ea[_0xf710('0x59')][_0xf710('0x6b')]=_0x5065a7['id'];if(_0x622f52['query'][_0xf710('0x5c')]){_0x4197ea['where']=_['merge'](_0x4197ea[_0xf710('0x59')],{'$or':_[_0xf710('0x47')](_0x4197ea[_0xf710('0x51')],function(_0x3efa0b){var _0x54393f={};_0x54393f[_0x3efa0b]={'$like':'%'+_0x622f52['query']['filter']+'%'};return _0x54393f;})});}_0x4197ea=_['merge']({},_0x4197ea,_0x622f52[_0xf710('0x5d')]);return db[_0xf710('0x6c')][_0xf710('0x1f')]({'where':_0x4197ea[_0xf710('0x59')]})[_0xf710('0x23')](function(_0x4fe777){_0x4a30a5[_0xf710('0x1f')]=_0x4fe777;if(_0x622f52[_0xf710('0x4e')][_0xf710('0x5e')]){_0x4197ea['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x4197ea);})[_0xf710('0x23')](function(_0x508d29){_0x4a30a5[_0xf710('0x60')]=_0x508d29;return _0x4a30a5;});}})[_0xf710('0x23')](respondWithFilteredResult(_0x105429,_0x4197ea))[_0xf710('0x18')](handleError(_0x105429,null));};exports[_0xf710('0x6f')]=function(_0x433924,_0x1cf85a){return db['MailAccount']['find']({'where':{'id':_0x433924[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x1cf85a,null))[_0xf710('0x23')](function(_0x4ded33){if(_0x4ded33){return _0x4ded33[_0xf710('0x6f')](_0x433924[_0xf710('0x4e')][_0xf710('0x70')]);}})[_0xf710('0x23')](respondWithStatusCode(_0x1cf85a,null))[_0xf710('0x18')](handleError(_0x1cf85a,null));};exports[_0xf710('0x71')]=function(_0x5b761f,_0x53feb5){if(_0x5b761f['body']['id']){delete _0x5b761f[_0xf710('0x64')]['id'];}return db[_0xf710('0x48')]['find']({'where':{'id':_0x5b761f['params']['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x53feb5,null))['then'](function(_0x4a69e9){if(_0x4a69e9){_0x5b761f[_0xf710('0x64')][_0xf710('0x6b')]=_0x4a69e9['id'];return db[_0xf710('0x72')][_0xf710('0x6d')](_0x5b761f[_0xf710('0x64')]);}})[_0xf710('0x23')](respondWithResult(_0x53feb5,null))[_0xf710('0x18')](handleError(_0x53feb5,null));};exports[_0xf710('0x73')]=function(_0x1c8270,_0x503aeb){var _0x96acf0={'raw':![],'where':{}};var _0x120d99={};var _0x56e4e8={'count':0x0,'rows':[]};return db['MailAccount'][_0xf710('0x74')]({'where':{'id':_0x1c8270['params']['id']}})['then'](handleEntityNotFound(_0x503aeb,null))[_0xf710('0x23')](function(_0x5b1edb){if(_0x5b1edb){_0x120d99[_0xf710('0x4c')]=_['keys'](db[_0xf710('0x72')][_0xf710('0x49')]);_0x120d99[_0xf710('0x4e')]=_['keys'](_0x1c8270[_0xf710('0x4e')]);_0x120d99['filters']=_['intersection'](_0x120d99['model'],_0x120d99[_0xf710('0x4e')]);_0x96acf0[_0xf710('0x51')]=_[_0xf710('0x50')](_0x120d99[_0xf710('0x4c')],qs[_0xf710('0x52')](_0x1c8270[_0xf710('0x4e')][_0xf710('0x52')]));_0x96acf0[_0xf710('0x51')]=_0x96acf0[_0xf710('0x51')][_0xf710('0x53')]?_0x96acf0['attributes']:_0x120d99[_0xf710('0x4c')];if(!_0x1c8270[_0xf710('0x4e')][_0xf710('0x54')]('nolimit')){_0x96acf0[_0xf710('0x1e')]=qs[_0xf710('0x1e')](_0x1c8270[_0xf710('0x4e')][_0xf710('0x1e')]);_0x96acf0['offset']=qs['offset'](_0x1c8270[_0xf710('0x4e')][_0xf710('0x20')]);}_0x96acf0[_0xf710('0x56')]=qs[_0xf710('0x57')](_0x1c8270[_0xf710('0x4e')][_0xf710('0x57')]);_0x96acf0[_0xf710('0x59')]=qs[_0xf710('0x4f')](_[_0xf710('0x58')](_0x1c8270[_0xf710('0x4e')],_0x120d99[_0xf710('0x4f')]));_0x96acf0[_0xf710('0x59')][_0xf710('0x6b')]=_0x5b1edb['id'];if(_0x1c8270['query'][_0xf710('0x5c')]){_0x96acf0[_0xf710('0x59')]=_['merge'](_0x96acf0[_0xf710('0x59')],{'$or':_[_0xf710('0x47')](_0x96acf0[_0xf710('0x51')],function(_0x234b86){var _0xbd3b4b={};_0xbd3b4b[_0x234b86]={'$like':'%'+_0x1c8270[_0xf710('0x4e')][_0xf710('0x5c')]+'%'};return _0xbd3b4b;})});}_0x96acf0=_[_0xf710('0x5a')]({},_0x96acf0,_0x1c8270[_0xf710('0x5d')]);return db[_0xf710('0x72')][_0xf710('0x1f')]({'where':_0x96acf0[_0xf710('0x59')]})['then'](function(_0x39fd36){_0x56e4e8['count']=_0x39fd36;if(_0x1c8270[_0xf710('0x4e')][_0xf710('0x5e')]){_0x96acf0[_0xf710('0x62')]=[{'all':!![]}];}return db[_0xf710('0x72')][_0xf710('0x5f')](_0x96acf0);})[_0xf710('0x23')](function(_0x2eea8b){_0x56e4e8['rows']=_0x2eea8b;return _0x56e4e8;});}})[_0xf710('0x23')](respondWithFilteredResult(_0x503aeb,_0x96acf0))[_0xf710('0x18')](handleError(_0x503aeb,null));};exports[_0xf710('0x75')]=function(_0x5e83f9,_0x1b88b0){return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x5e83f9['params']['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x1b88b0,null))[_0xf710('0x23')](function(_0x16d36e){if(_0x16d36e){return _0x16d36e['removeAnswers'](_0x5e83f9[_0xf710('0x4e')][_0xf710('0x70')]);}})['then'](respondWithStatusCode(_0x1b88b0,null))['catch'](handleError(_0x1b88b0,null));};exports[_0xf710('0x6d')]=function(_0x5a007e,_0x41a848){var _0x1cb286={'name':_0x5a007e[_0xf710('0x64')][_0xf710('0x29')],'key':_0x5a007e[_0xf710('0x64')][_0xf710('0x4b')],'provider':_0x5a007e['body'][_0xf710('0x65')]===_0xf710('0x66')?null:_0x5a007e['body'][_0xf710('0x65')],'email':_0x5a007e[_0xf710('0x64')][_0xf710('0x76')],'ListId':_0x5a007e[_0xf710('0x64')]['ListId'],'active':!_['isNil'](_0x5a007e[_0xf710('0x64')]['active'])?_0x5a007e[_0xf710('0x64')][_0xf710('0x77')]:!![],'description':_0x5a007e[_0xf710('0x64')][_0xf710('0x78')]||null};var _0x360ed9=getAuthenticationOptions(_0x1cb286[_0xf710('0x65')],_0x5a007e[_0xf710('0x64')]);_0x1cb286[_0xf710('0x40')]=_0x360ed9[_0xf710('0x40')];_0x1cb286['Smtp']=_0x360ed9[_0xf710('0x41')];return db[_0xf710('0x48')][_0xf710('0x6d')](_0x1cb286,{'include':[{'model':db['MailServerOut'],'as':_0xf710('0x41')},{'model':db[_0xf710('0x43')],'as':_0xf710('0x40')}]})[_0xf710('0x23')](function(_0x3ed77a){var _0x236585=_0x5a007e[_0xf710('0x3d')][_0xf710('0x24')]({'plain':!![]});if(!_0x236585)throw new Error(_0xf710('0x79'));if(_0x236585[_0xf710('0x7a')]===_0xf710('0x3d')){var _0x1a49b4=_0x3ed77a['get']({'plain':!![]});return db[_0xf710('0x7b')][_0xf710('0x63')]({'where':{'name':_0xf710('0x25'),'userProfileId':_0x236585[_0xf710('0x7c')]},'raw':!![]})[_0xf710('0x23')](function(_0x2aa39f){if(_0x2aa39f&&_0x2aa39f[_0xf710('0x7d')]===0x0){return db[_0xf710('0x26')][_0xf710('0x6d')]({'name':_0x1a49b4['name'],'resourceId':_0x1a49b4['id'],'type':_0x2aa39f[_0xf710('0x29')],'sectionId':_0x2aa39f['id']},{})[_0xf710('0x23')](function(){return _0x3ed77a;});}else{return _0x3ed77a;}})[_0xf710('0x18')](function(_0xf04e26){logger[_0xf710('0x16')](_0xf710('0x7e'),_0xf04e26);throw _0xf04e26;});}return _0x3ed77a;})[_0xf710('0x23')](respondWithResult(_0x41a848,0xc9))[_0xf710('0x18')](handleError(_0x41a848,null));};exports[_0xf710('0x7f')]=function(_0x13bd3a,_0x507243){return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x13bd3a[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x507243,null))[_0xf710('0x23')](function(_0x1c0318){if(_0x1c0318){return _0x1c0318['getImap']();}return null;})['then'](respondWithResult(_0x507243,null))[_0xf710('0x18')](handleError(_0x507243,null));};exports[_0xf710('0x80')]=function(_0x4693c4,_0x12475a){if(_0x4693c4['body']['id']){delete _0x4693c4[_0xf710('0x64')]['id'];}return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x4693c4[_0xf710('0x67')]['id']}})['then'](handleEntityNotFound(_0x12475a,null))['then'](function(_0x5ba731){if(_0x5ba731){_0x4693c4[_0xf710('0x64')][_0xf710('0x6b')]=_0x5ba731['id'];return db[_0xf710('0x43')][_0xf710('0x6d')](_0x4693c4[_0xf710('0x64')]);}})[_0xf710('0x23')](respondWithResult(_0x12475a,null))[_0xf710('0x18')](handleError(_0x12475a,null));};exports['removeImap']=function(_0x1cd5ac,_0x2959b8){return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x1cd5ac['params']['id']}})['then'](handleEntityNotFound(_0x2959b8,null))[_0xf710('0x23')](function(_0x4aadc7){if(_0x4aadc7){return _0x4aadc7['setImap'](null);}return null;})[_0xf710('0x23')](respondWithStatusCode(_0x2959b8,null))[_0xf710('0x18')](handleError(_0x2959b8,null));};exports['getSmtp']=function(_0x14104c,_0x4cef77){return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x14104c[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x4cef77,null))[_0xf710('0x23')](function(_0x422ab5){if(_0x422ab5){return _0x422ab5[_0xf710('0x81')]();}return null;})[_0xf710('0x23')](respondWithResult(_0x4cef77,null))['catch'](handleError(_0x4cef77,null));};exports[_0xf710('0x82')]=function(_0x3fb06e,_0x4ed968){if(_0x3fb06e[_0xf710('0x64')]['id']){delete _0x3fb06e[_0xf710('0x64')]['id'];}return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x3fb06e[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x4ed968,null))[_0xf710('0x23')](function(_0x35b351){if(_0x35b351){_0x3fb06e[_0xf710('0x64')][_0xf710('0x6b')]=_0x35b351['id'];return db[_0xf710('0x44')]['create'](_0x3fb06e[_0xf710('0x64')]);}})[_0xf710('0x23')](respondWithResult(_0x4ed968,null))[_0xf710('0x18')](handleError(_0x4ed968,null));};exports[_0xf710('0x83')]=function(_0x4f099b,_0x3bcdca){return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x4f099b[_0xf710('0x67')]['id']}})['then'](handleEntityNotFound(_0x3bcdca,null))[_0xf710('0x23')](function(_0x3fe737){if(_0x3fe737){return _0x3fe737[_0xf710('0x84')](null);}return null;})[_0xf710('0x23')](respondWithStatusCode(_0x3bcdca,null))['catch'](handleError(_0x3bcdca,null));};exports[_0xf710('0x85')]=function(_0x174c04,_0x1f57a0){return db[_0xf710('0x86')][_0xf710('0x63')]({'where':{'id':_0x174c04[_0xf710('0x67')]['id']}})['then'](handleEntityNotFound(_0x1f57a0,null))['then'](function(_0x4dc22f){if(_0x4dc22f){return _0x4dc22f[_0xf710('0x85')](_0x174c04[_0xf710('0x64')][_0xf710('0x70')],_[_0xf710('0x87')](_0x174c04[_0xf710('0x64')],[_0xf710('0x70'),'id'])||{});}})[_0xf710('0x23')](respondWithResult(_0x1f57a0,null))[_0xf710('0x18')](handleError(_0x1f57a0,null));};exports['getInteractions']=function(_0x5688e2,_0x23b404){var _0x146596={'raw':![],'where':{}};var _0x1fc2e3={};var _0x2acfb8={'count':0x0,'rows':[]};return db['MailAccount'][_0xf710('0x74')]({'where':{'id':_0x5688e2[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x23b404,null))['then'](function(_0x3bcda9){if(_0x3bcda9){_0x1fc2e3[_0xf710('0x4c')]=_[_0xf710('0x4d')](db['MailInteraction'][_0xf710('0x49')]);_0x1fc2e3[_0xf710('0x4e')]=_[_0xf710('0x4d')](_0x5688e2[_0xf710('0x4e')]);_0x1fc2e3[_0xf710('0x4f')]=_[_0xf710('0x50')](_0x1fc2e3[_0xf710('0x4c')],_0x1fc2e3[_0xf710('0x4e')]);_0x146596['attributes']=_[_0xf710('0x50')](_0x1fc2e3[_0xf710('0x4c')],qs[_0xf710('0x52')](_0x5688e2[_0xf710('0x4e')][_0xf710('0x52')]));_0x146596[_0xf710('0x51')]=_0x146596[_0xf710('0x51')][_0xf710('0x53')]?_0x146596['attributes']:_0x1fc2e3[_0xf710('0x4c')];if(!_0x5688e2[_0xf710('0x4e')][_0xf710('0x54')](_0xf710('0x55'))){_0x146596[_0xf710('0x1e')]=qs[_0xf710('0x1e')](_0x5688e2[_0xf710('0x4e')]['limit']);_0x146596[_0xf710('0x20')]=qs['offset'](_0x5688e2['query']['offset']);}_0x146596[_0xf710('0x56')]=qs[_0xf710('0x57')](_0x5688e2['query'][_0xf710('0x57')]);_0x146596[_0xf710('0x59')]=qs[_0xf710('0x4f')](_[_0xf710('0x58')](_0x5688e2[_0xf710('0x4e')],_0x1fc2e3['filters']));_0x146596[_0xf710('0x59')][_0xf710('0x6b')]=_0x3bcda9['id'];if(_0x5688e2['query'][_0xf710('0x5c')]){_0x146596[_0xf710('0x59')]=_[_0xf710('0x5a')](_0x146596[_0xf710('0x59')],{'$or':_['map'](_0x146596['attributes'],function(_0x4804f7){var _0x2ecdde={};_0x2ecdde[_0x4804f7]={'$like':'%'+_0x5688e2[_0xf710('0x4e')][_0xf710('0x5c')]+'%'};return _0x2ecdde;})});}_0x146596=_['merge']({},_0x146596,_0x5688e2[_0xf710('0x5d')]);return db[_0xf710('0x86')][_0xf710('0x1f')]({'where':_0x146596['where']})[_0xf710('0x23')](function(_0x197f9d){_0x2acfb8['count']=_0x197f9d;if(_0x5688e2['query']['includeAll']){_0x146596[_0xf710('0x62')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db['User'],'as':_0xf710('0x88'),'attributes':['name',_0xf710('0x89'),'internal'],'required':![]},{'model':db[_0xf710('0x8a')],'as':_0xf710('0x8b'),'attributes':['id',_0xf710('0x29'),_0xf710('0x8c')],'where':_0x5688e2[_0xf710('0x4e')]['tag']?{'id':_0x5688e2[_0xf710('0x4e')]['tag']}:undefined,'required':_0x5688e2[_0xf710('0x4e')]['tag']?!![]:![]}];}return db['MailInteraction'][_0xf710('0x5f')](_0x146596);})['then'](function(_0x2a02d9){_0x2acfb8[_0xf710('0x60')]=_0x2a02d9;return _0x2acfb8;});}})[_0xf710('0x23')](respondWithFilteredResult(_0x23b404,_0x146596))[_0xf710('0x18')](handleError(_0x23b404,null));};exports[_0xf710('0x8d')]=function addApplications(_0x741b19,_0x20f88a){var _0x32ce74=_0x741b19[_0xf710('0x67')]['id'];var _0x408095=_0x741b19[_0xf710('0x64')];var _0x40ef88=0xc8;var _0x9b69c5=null;return db['sequelize'][_0xf710('0x8e')]({'isolationLevel':db[_0xf710('0x8f')][_0xf710('0x90')]['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x42ce2e){return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x32ce74},'transaction':_0x42ce2e})[_0xf710('0x23')](function(_0x554cce){if(_0x554cce){return db[_0xf710('0x91')][_0xf710('0x27')]({'where':{'MailAccountId':_0x32ce74},'transaction':_0x42ce2e})[_0xf710('0x23')](function(){var _0x3122be=_[_0xf710('0x47')](_0x408095,function(_0x5507d6){_0x5507d6[_0xf710('0x6b')]=_0x32ce74;return _0x5507d6;});return db['MailApplication']['bulkCreate'](_0x3122be,{'transaction':_0x42ce2e});});}else{_0x40ef88=0x194;_0x9b69c5=[];}});})['then'](function(){if(_0x40ef88!==0x194){return db[_0xf710('0x91')][_0xf710('0x92')]({'where':{'MailAccountId':_0x32ce74},'order':'priority'})[_0xf710('0x23')](function(_0x330eaa){_0x9b69c5=_0x330eaa;});}})['catch'](function(_0x2e526f){_0x40ef88=0x1f4;logger[_0xf710('0x16')](_0x2e526f[_0xf710('0x28')]);if(_0x2e526f[_0xf710('0x29')]){delete _0x2e526f[_0xf710('0x29')];}_0x9b69c5=_0x2e526f;})[_0xf710('0x93')](function(){if(_0x9b69c5===null){_0x20f88a[_0xf710('0x19')](_0x40ef88);}else{if(_0x40ef88===0x1f4){_0x20f88a[_0xf710('0x1a')](_0x40ef88)[_0xf710('0x2a')](_0x9b69c5);}else{_0x20f88a[_0xf710('0x1a')](_0x40ef88)[_0xf710('0x1c')](_0x9b69c5);}}});};exports[_0xf710('0x94')]=function(_0x1e60aa,_0x314c4f){var _0x1358d9={};var _0x3e786b={};var _0x1f95ca;var _0x4bb817;return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x1e60aa[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x314c4f,null))[_0xf710('0x23')](function(_0x452371){if(_0x452371){_0x1f95ca=_0x452371;_0x3e786b[_0xf710('0x4c')]=_['keys'](db[_0xf710('0x91')][_0xf710('0x49')]);_0x3e786b['query']=_[_0xf710('0x4d')](_0x1e60aa['query']);_0x3e786b['filters']=_['intersection'](_0x3e786b['model'],_0x3e786b[_0xf710('0x4e')]);_0x1358d9[_0xf710('0x51')]=_[_0xf710('0x50')](_0x3e786b[_0xf710('0x4c')],qs[_0xf710('0x52')](_0x1e60aa[_0xf710('0x4e')][_0xf710('0x52')]));_0x1358d9[_0xf710('0x51')]=_0x1358d9[_0xf710('0x51')][_0xf710('0x53')]?_0x1358d9[_0xf710('0x51')]:_0x3e786b[_0xf710('0x4c')];_0x1358d9[_0xf710('0x56')]=qs['sort'](_0x1e60aa[_0xf710('0x4e')]['sort']);_0x1358d9[_0xf710('0x59')]=qs['filters'](_[_0xf710('0x58')](_0x1e60aa['query'],_0x3e786b[_0xf710('0x4f')]));if(_0x1e60aa['query']['filter']){_0x1358d9['where']=_[_0xf710('0x5a')](_0x1358d9['where'],{'$or':_[_0xf710('0x47')](_0x1358d9['attributes'],function(_0xeb411b){var _0x24cd12={};_0x24cd12[_0xeb411b]={'$like':'%'+_0x1e60aa['query'][_0xf710('0x5c')]+'%'};return _0x24cd12;})});}_0x1358d9=_[_0xf710('0x5a')]({},_0x1358d9,_0x1e60aa[_0xf710('0x5d')]);return _0x1f95ca['getApplications'](_0x1358d9);}})[_0xf710('0x23')](function(_0x28f19a){if(_0x28f19a){_0x4bb817=_0x28f19a[_0xf710('0x53')];if(!_0x1e60aa['query'][_0xf710('0x54')](_0xf710('0x55'))){_0x1358d9[_0xf710('0x1e')]=qs[_0xf710('0x1e')](_0x1e60aa[_0xf710('0x4e')]['limit']);_0x1358d9['offset']=qs[_0xf710('0x20')](_0x1e60aa[_0xf710('0x4e')][_0xf710('0x20')]);}return _0x1f95ca[_0xf710('0x94')](_0x1358d9);}})['then'](function(_0x443456){if(_0x443456){return _0x443456?{'count':_0x4bb817,'rows':_0x443456}:null;}})[_0xf710('0x23')](respondWithResult(_0x314c4f,null))['catch'](handleError(_0x314c4f,null));};exports[_0xf710('0x95')]=function(_0xd2f95e,_0x28ae05){var _0x27e97e={'raw':!![],'where':{}};var _0x764471={};var _0x3207d2={'count':0x0,'rows':[]};return db['MailAccount'][_0xf710('0x74')]({'where':{'id':_0xd2f95e[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x28ae05,null))[_0xf710('0x23')](function(_0x14a653){if(_0x14a653){_0x764471[_0xf710('0x4c')]=_['keys'](db[_0xf710('0x96')]['rawAttributes']);_0x764471[_0xf710('0x4e')]=_[_0xf710('0x4d')](_0xd2f95e[_0xf710('0x4e')]);_0x764471[_0xf710('0x4f')]=_[_0xf710('0x50')](_0x764471[_0xf710('0x4c')],_0x764471[_0xf710('0x4e')]);_0x27e97e[_0xf710('0x51')]=_[_0xf710('0x50')](_0x764471[_0xf710('0x4c')],qs[_0xf710('0x52')](_0xd2f95e[_0xf710('0x4e')]['fields']));_0x27e97e[_0xf710('0x51')]=_0x27e97e[_0xf710('0x51')][_0xf710('0x53')]?_0x27e97e[_0xf710('0x51')]:_0x764471['model'];if(!_0xd2f95e[_0xf710('0x4e')][_0xf710('0x54')](_0xf710('0x55'))){_0x27e97e[_0xf710('0x1e')]=qs[_0xf710('0x1e')](_0xd2f95e[_0xf710('0x4e')]['limit']);_0x27e97e['offset']=qs[_0xf710('0x20')](_0xd2f95e[_0xf710('0x4e')][_0xf710('0x20')]);}_0x27e97e[_0xf710('0x56')]=qs[_0xf710('0x57')](_0xd2f95e[_0xf710('0x4e')][_0xf710('0x57')]);_0x27e97e['where']=qs[_0xf710('0x4f')](_['pick'](_0xd2f95e['query'],_0x764471['filters']));_0x27e97e['where'][_0xf710('0x6b')]=_0x14a653['id'];if(_0xd2f95e['query'][_0xf710('0x5c')]){_0x27e97e['where']=_[_0xf710('0x5a')](_0x27e97e[_0xf710('0x59')],{'$or':_['map'](_0x27e97e['attributes'],function(_0x4ad9ae){var _0x119521={};_0x119521[_0x4ad9ae]={'$like':'%'+_0xd2f95e['query'][_0xf710('0x5c')]+'%'};return _0x119521;})});}if(_0xd2f95e['query']['$gte']){var _0x5cccf8=_0xd2f95e['query']['$gte'][_0xf710('0x97')](',');var _0x4e5e03={};_0x4e5e03[_0x5cccf8[0x0]]={'$gte':moment(_0x5cccf8[0x1])[_0xf710('0x98')](_0xf710('0x99'))};_0x27e97e[_0xf710('0x59')]=_[_0xf710('0x5a')](_0x27e97e[_0xf710('0x59')],_0x4e5e03);}_0x27e97e=_[_0xf710('0x5a')]({},_0x27e97e,_0xd2f95e['options']);return db['MailMessage']['count']({'where':_0x27e97e[_0xf710('0x59')]})[_0xf710('0x23')](function(_0xade80){_0x3207d2[_0xf710('0x1f')]=_0xade80;if(_0xd2f95e[_0xf710('0x4e')][_0xf710('0x5e')]){_0x27e97e[_0xf710('0x62')]=[{'all':!![]}];}return db[_0xf710('0x96')]['findAll'](_0x27e97e);})['then'](function(_0x513e8e){if(_0xd2f95e[_0xf710('0x4e')][_0xf710('0x9a')]===_0xf710('0x9b')){for(var _0x2b23d0=0x0;_0x2b23d0<_0x513e8e['length'];_0x2b23d0++){_0x513e8e[_0x2b23d0][_0xf710('0x64')]=juice(_0x513e8e[_0x2b23d0][_0xf710('0x64')]);}}_0x3207d2[_0xf710('0x60')]=_0x513e8e;return _0x3207d2;});}})['then'](respondWithFilteredResult(_0x28ae05,_0x27e97e))[_0xf710('0x18')](handleError(_0x28ae05,null));};exports[_0xf710('0x2a')]=function(_0x482cb7,_0x41e5fb){var _0x491660,_0x832f88={},_0x5edff1;if(_0x482cb7[_0xf710('0x64')]['to']){_0x5edff1=_0x482cb7[_0xf710('0x64')]['to'][_0xf710('0x97')](',')[0x0];}return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x482cb7[_0xf710('0x67')]['id']},'include':[{'model':db['CmList'],'as':_0xf710('0x9c'),'include':[{'model':db[_0xf710('0x9d')],'as':'Contacts','where':{'email':_0x5edff1},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xf710('0x44')],'as':_0xf710('0x41'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf710('0x9e'),'raw':!![]}]}]})[_0xf710('0x23')](handleEntityNotFound(_0x41e5fb,null))[_0xf710('0x23')](function(_0x569ef9){if(!_0x569ef9)return;_0x491660=_0x569ef9;if(!_0x569ef9[_0xf710('0x41')])throw new Error(_0xf710('0x9f'));if(_[_0xf710('0xa0')](_0x482cb7[_0xf710('0x64')][_0xf710('0xa1')])){_0x482cb7['body']['from']=util[_0xf710('0x98')](_0xf710('0xa2'),_0x569ef9[_0xf710('0x29')],_0x569ef9['email']||_0x569ef9['Smtp'][_0xf710('0x3d')]);}if(_0x482cb7[_0xf710('0x64')][_0xf710('0xa3')]&&_0x482cb7['body'][_0xf710('0xa3')][_0xf710('0x53')]){for(var _0x3634de=0x0;_0x3634de<_0x482cb7[_0xf710('0x64')]['attachments'][_0xf710('0x53')];_0x3634de+=0x1){_0x482cb7[_0xf710('0x64')][_0xf710('0xa3')][_0x3634de]={'filename':_0x482cb7[_0xf710('0x64')]['attachments'][_0x3634de][_0xf710('0x29')],'path':path[_0xf710('0xa4')](config[_0xf710('0xa5')],_0xf710('0xa6'),_0x482cb7[_0xf710('0x64')][_0xf710('0xa3')][_0x3634de][_0xf710('0xa7')])};}}var _0x444308=_0x569ef9[_0xf710('0xa8')]();return respondWithRpcPromise('SendMail',_0xf710('0xa9'),{'account':_0x444308,'message':_0x482cb7[_0xf710('0x64')]});})[_0xf710('0x23')](function(_0x6d5f2b){if(!_0x6d5f2b)return;_0x832f88=_0x6d5f2b;if(!_0x491660[_0xf710('0x9c')])throw new Error(_0xf710('0xaa'));if(_0x491660[_0xf710('0x9c')][_0xf710('0xab')]['length'])return _0x491660['List']['Contacts'][0x0];return db[_0xf710('0x9d')]['create'](_[_0xf710('0xa')](_0x482cb7[_0xf710('0x64')],{'firstName':_0x482cb7[_0xf710('0x64')]['to'],'email':_0x482cb7['body']['to'],'phone':_0x482cb7[_0xf710('0x64')]['to'],'ListId':_0x491660['ListId']}));})[_0xf710('0x23')](function(_0x4e2148){if(!_0x4e2148)return;var _0x16eac6={'UserId':_0x482cb7[_0xf710('0x3d')]['id'],'ContactId':_0x4e2148['id'],'MailAccountId':_0x491660['id'],'inReplyTo':_0x832f88[_0xf710('0xac')],'to':_0x482cb7[_0xf710('0x64')]['from'],'cc':_0x482cb7['body']['cc'],'subject':_0x482cb7[_0xf710('0x64')][_0xf710('0xad')],'attach':_0x482cb7[_0xf710('0x64')][_0xf710('0xae')],'firstMsgDirection':_0xf710('0xaf'),'lastMsgAt':moment()[_0xf710('0x98')](_0xf710('0x99')),'lastMsgDirection':'out','Messages':[_[_0xf710('0x5a')](_0x482cb7[_0xf710('0x64')],{'messageId':_0x832f88[_0xf710('0xac')],'sentAt':moment()['format'](_0xf710('0x99')),'read':!![],'MailAccountId':_0x491660['id'],'UserId':_0x482cb7[_0xf710('0x3d')]['id'],'ContactId':_0x4e2148['id']})]};if(_0x482cb7['body'][_0xf710('0xb0')]){_0x16eac6=_[_0xf710('0x5a')](_0x16eac6,_0x482cb7[_0xf710('0x64')]['Interaction']);}return db[_0xf710('0x86')][_0xf710('0x6d')](_0x16eac6,{'include':[{'model':db[_0xf710('0x96')],'as':_0xf710('0xb1')}]});})[_0xf710('0x23')](respondWithResult(_0x41e5fb,null))[_0xf710('0x18')](handleError(_0x41e5fb,null));};exports['verifySmtp']=function(_0x5bf096,_0x3135ba){return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x5bf096[_0xf710('0x67')]['id']},'include':[{'model':db[_0xf710('0x44')],'as':_0xf710('0x41'),'raw':!![],'include':[{'model':db[_0xf710('0x9e')],'as':_0xf710('0x9e'),'raw':!![]}]}]})[_0xf710('0x23')](handleEntityNotFound(_0x3135ba,null))[_0xf710('0x23')](function(_0x4817bb){if(!_0x4817bb[_0xf710('0x41')])return;var _0x2a16a0=_0x4817bb[_0xf710('0xa8')]();return respondWithRpcPromise(_0xf710('0xb2'),'verifySmtp',{'account':_0x2a16a0});})[_0xf710('0x23')](respondWithResult(_0x3135ba,null))['catch'](handleError(_0x3135ba,null));};exports[_0xf710('0x27')]=function(_0x33d481,_0x5f3967){return db[_0xf710('0x48')][_0xf710('0x63')]({'where':{'id':_0x33d481[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x5f3967,null))[_0xf710('0x23')](function(_0x33ed4a){if(_0x33ed4a&&_0x33ed4a['service']){throw new db['Sequelize'][(_0xf710('0xb3'))](_0xf710('0xb4'));}return _0x33ed4a;})[_0xf710('0x23')](removeEntity(_0x5f3967,null))[_0xf710('0x18')](handleError(_0x5f3967,null));};exports[_0xf710('0xb5')]=function(_0x3b6489,_0x22e7de){return db['MailAccount'][_0xf710('0x63')]({'where':{'id':_0x3b6489['params']['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x22e7de,null))[_0xf710('0x23')](function(_0x552099){if(_0x552099){return _0x552099[_0xf710('0xb5')](_0x3b6489[_0xf710('0x64')][_0xf710('0x70')],_[_0xf710('0x87')](_0x3b6489['body'],['ids','id'])||{})[_0xf710('0xb6')](function(_0x2d1b50){for(var _0x1ba6fe=0x0;_0x1ba6fe<_0x3b6489['body'][_0xf710('0x70')][_0xf710('0x53')];_0x1ba6fe+=0x1){socket[_0xf710('0xb7')](_0xf710('0xb8'),{'UserId':Number(_0x3b6489[_0xf710('0x64')][_0xf710('0x70')][_0x1ba6fe]),'MailAccountId':Number(_0x3b6489[_0xf710('0x67')]['id'])});}return _0x2d1b50;});}})['then'](respondWithResult(_0x22e7de,null))[_0xf710('0x18')](handleError(_0x22e7de,null));};exports['removeAgents']=function(_0x241d23,_0x634978){return db[_0xf710('0x48')]['find']({'where':{'id':_0x241d23[_0xf710('0x67')]['id']}})[_0xf710('0x23')](handleEntityNotFound(_0x634978,null))[_0xf710('0x23')](function(_0x3b6237){if(_0x3b6237){return _0x3b6237[_0xf710('0xb9')](_0x241d23[_0xf710('0x4e')]['ids'])['then'](function(){if(_[_0xf710('0xba')](_0x241d23[_0xf710('0x4e')][_0xf710('0x70')])){for(var _0x5f592f=0x0;_0x5f592f<_0x241d23[_0xf710('0x4e')][_0xf710('0x70')][_0xf710('0x53')];_0x5f592f+=0x1){socket[_0xf710('0xb7')](_0xf710('0xbb'),{'UserId':Number(_0x241d23['query']['ids'][_0x5f592f]),'MailAccountId':Number(_0x241d23[_0xf710('0x67')]['id'])});}}else{socket[_0xf710('0xb7')](_0xf710('0xbb'),{'UserId':Number(_0x241d23['query']['ids']),'MailAccountId':Number(_0x241d23[_0xf710('0x67')]['id'])});}});}})[_0xf710('0x23')](respondWithStatusCode(_0x634978,null))[_0xf710('0x18')](handleError(_0x634978,null));};exports[_0xf710('0xbc')]=function(_0x3fd6ea,_0xe9cec9){var _0xbc4fc2={};var _0x4fda3f={};var _0x1c6bb2;var _0x522cdd;return db[_0xf710('0x48')][_0xf710('0x74')]({'where':{'id':_0x3fd6ea['params']['id']}})[_0xf710('0x23')](handleEntityNotFound(_0xe9cec9,null))[_0xf710('0x23')](function(_0x1b793e){if(_0x1b793e){_0x1c6bb2=_0x1b793e;_0x4fda3f[_0xf710('0x4c')]=_[_0xf710('0x4d')](db[_0xf710('0xbd')][_0xf710('0x49')]);_0x4fda3f[_0xf710('0x4e')]=_[_0xf710('0x4d')](_0x3fd6ea[_0xf710('0x4e')]);_0x4fda3f['filters']=_['intersection'](_0x4fda3f[_0xf710('0x4c')],_0x4fda3f[_0xf710('0x4e')]);_0xbc4fc2[_0xf710('0x51')]=_[_0xf710('0x50')](_0x4fda3f[_0xf710('0x4c')],qs[_0xf710('0x52')](_0x3fd6ea['query']['fields']));_0xbc4fc2[_0xf710('0x51')]=_0xbc4fc2[_0xf710('0x51')][_0xf710('0x53')]?_0xbc4fc2[_0xf710('0x51')]:_0x4fda3f[_0xf710('0x4c')];_0xbc4fc2[_0xf710('0x56')]=qs['sort'](_0x3fd6ea[_0xf710('0x4e')][_0xf710('0x57')]);_0xbc4fc2[_0xf710('0x59')]=qs[_0xf710('0x4f')](_[_0xf710('0x58')](_0x3fd6ea[_0xf710('0x4e')],_0x4fda3f['filters']));if(_0x3fd6ea[_0xf710('0x4e')][_0xf710('0x5c')]){_0xbc4fc2['where']=_[_0xf710('0x5a')](_0xbc4fc2['where'],{'$or':_[_0xf710('0x47')](_0xbc4fc2[_0xf710('0x51')],function(_0x52b9bd){var _0x15ae0e={};_0x15ae0e[_0x52b9bd]={'$like':'%'+_0x3fd6ea['query'][_0xf710('0x5c')]+'%'};return _0x15ae0e;})});}_0xbc4fc2=_[_0xf710('0x5a')]({},_0xbc4fc2,_0x3fd6ea['options']);return _0x1c6bb2['getAgents'](_0xbc4fc2);}})[_0xf710('0x23')](function(_0x598822){if(_0x598822){_0x522cdd=_0x598822[_0xf710('0x53')];if(!_0x3fd6ea[_0xf710('0x4e')]['hasOwnProperty']('nolimit')){_0xbc4fc2[_0xf710('0x1e')]=qs[_0xf710('0x1e')](_0x3fd6ea[_0xf710('0x4e')][_0xf710('0x1e')]);_0xbc4fc2[_0xf710('0x20')]=qs[_0xf710('0x20')](_0x3fd6ea[_0xf710('0x4e')][_0xf710('0x20')]);}return _0x1c6bb2[_0xf710('0xbc')](_0xbc4fc2);}})[_0xf710('0x23')](function(_0x143e6f){if(_0x143e6f){return _0x143e6f?{'count':_0x522cdd,'rows':_0x143e6f}:null;}})['then'](respondWithResult(_0xe9cec9,null))[_0xf710('0x18')](handleError(_0xe9cec9,null));};
\ No newline at end of file
+var _0x059c=['./mailAccount.socket','register','jayson/promise','client','http','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','status','offset','undefined','count','limit','set','Content-Range','update','destroy','get','MailAccounts','UserProfileResource','end','sendStatus','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','smtp.office365.com','user','username','password','pass','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','MailServerIn','MailServerOut','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','Pause','options','body','provider','custom','modernAuthentication','find','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','email','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','getImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','CmContact','Contact','Owner','internal','Tag','color','tag','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','json','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','true','CmList','List','Contacts','updatedAt','DESC','CloudProvider','isNil','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','ListId','messageId','subject','attach','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','User','moment','path','lodash','juice','ioredis','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter'];(function(_0x588454,_0x44233d){var _0x33203f=function(_0x34510b){while(--_0x34510b){_0x588454['push'](_0x588454['shift']());}};_0x33203f(++_0x44233d);}(_0x059c,0xb6));var _0xc059=function(_0x54db71,_0x43de96){_0x54db71=_0x54db71-0x0;var _0x1104e7=_0x059c[_0x54db71];return _0x1104e7;};'use strict';var moment=require(_0xc059('0x0'));var BPromise=require('bluebird');var util=require('util');var path=require(_0xc059('0x1'));var _=require(_0xc059('0x2'));var juice=require(_0xc059('0x3'));var Redis=require(_0xc059('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0xc059('0x5'))('api');var config=require(_0xc059('0x6'));var db=require(_0xc059('0x7'))['db'];config[_0xc059('0x8')]=_['defaults'](config['redis'],{'host':_0xc059('0x9'),'port':0x18eb});var socket=require(_0xc059('0xa'))(new Redis(config[_0xc059('0x8')]));require(_0xc059('0xb'))[_0xc059('0xc')](socket);var jayson=require(_0xc059('0xd'));var client=jayson[_0xc059('0xe')][_0xc059('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x1e0fd6,_0x384919,_0x37fb34,_0x38daf4){return new BPromise(function(_0x20c0c4,_0x57211e){var _0x49ee4d=_0x38daf4||client;return _0x49ee4d['request'](_0x1e0fd6,_0x37fb34)[_0xc059('0x10')](function(_0xe48d4a){logger[_0xc059('0x11')](_0xc059('0x12'),_0x384919,_0xc059('0x13'));logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x384919,'request\x20sent',JSON[_0xc059('0x14')](_0xe48d4a));if(_0xe48d4a[_0xc059('0x15')]){if(_0xe48d4a[_0xc059('0x15')][_0xc059('0x16')]===0x1f4){logger[_0xc059('0x15')](_0xc059('0x12'),_0x384919,_0xe48d4a[_0xc059('0x15')]['message']);return _0x57211e(_0xe48d4a['error']['message']);}logger[_0xc059('0x15')](_0xc059('0x12'),_0x384919,_0xe48d4a[_0xc059('0x15')][_0xc059('0x17')]);return _0x20c0c4(_0xe48d4a[_0xc059('0x15')]['message']);}else{logger['info'](_0xc059('0x12'),_0x384919,_0xc059('0x13'));_0x20c0c4(_0xe48d4a[_0xc059('0x18')][_0xc059('0x17')]);}})['catch'](function(_0x2e44a8){logger['error'](_0xc059('0x12'),_0x384919,_0x2e44a8);_0x57211e(_0x2e44a8);});});}function respondWithStatusCode(_0xce0b40,_0x45a763){_0x45a763=_0x45a763||0xcc;return function(_0x3d779f){if(_0x3d779f){return _0xce0b40['sendStatus'](_0x45a763);}return _0xce0b40['status'](_0x45a763)['end']();};}function respondWithResult(_0x38cd0c,_0x465381){_0x465381=_0x465381||0xc8;return function(_0x4ca37b){if(_0x4ca37b){return _0x38cd0c[_0xc059('0x19')](_0x465381)['json'](_0x4ca37b);}};}function respondWithFilteredResult(_0x1bfea8,_0x332874){return function(_0x394a1a){if(_0x394a1a){var _0x40e2f2=typeof _0x332874[_0xc059('0x1a')]===_0xc059('0x1b')&&typeof _0x332874['limit']==='undefined';var _0x233bb9=_0x394a1a[_0xc059('0x1c')];var _0x193673=_0x40e2f2?0x0:_0x332874[_0xc059('0x1a')];var _0x1e0e94=_0x40e2f2?_0x394a1a[_0xc059('0x1c')]:_0x332874[_0xc059('0x1a')]+_0x332874[_0xc059('0x1d')];var _0x510a66;if(_0x1e0e94>=_0x233bb9){_0x1e0e94=_0x233bb9;_0x510a66=0xc8;}else{_0x510a66=0xce;}_0x1bfea8[_0xc059('0x19')](_0x510a66);return _0x1bfea8[_0xc059('0x1e')](_0xc059('0x1f'),_0x193673+'-'+_0x1e0e94+'/'+_0x233bb9)['json'](_0x394a1a);}return null;};}function saveUpdates(_0x4fc398){return function(_0x1b62bc){if(_0x1b62bc){return _0x1b62bc[_0xc059('0x20')](_0x4fc398)[_0xc059('0x10')](function(_0x46bbd9){return _0x46bbd9;});}return null;};}function removeEntity(_0x2ac5f3){return function(_0x26b2cd){if(_0x26b2cd){return _0x26b2cd[_0xc059('0x21')]()['then'](function(){var _0x48fc4a=_0x26b2cd[_0xc059('0x22')]({'plain':!![]});var _0x1c1ad5=_0xc059('0x23');return db[_0xc059('0x24')]['destroy']({'where':{'type':_0x1c1ad5,'resourceId':_0x48fc4a['id']}})['then'](function(){return _0x26b2cd;});})['then'](function(){_0x2ac5f3[_0xc059('0x19')](0xcc)[_0xc059('0x25')]();});}};}function handleEntityNotFound(_0x1cac84){return function(_0x2f56c1){if(!_0x2f56c1){_0x1cac84[_0xc059('0x26')](0x194);}return _0x2f56c1;};}function handleError(_0x9b549c,_0x55321d){_0x55321d=_0x55321d||0x1f4;return function(_0x5a1c05){logger['error'](_0x5a1c05['stack']);if(_0x5a1c05[_0xc059('0x27')]){delete _0x5a1c05['name'];}_0x9b549c['status'](_0x55321d)[_0xc059('0x28')](_0x5a1c05);};}function getImapHost(_0x22e5aa){switch(_0x22e5aa){case _0xc059('0x29'):return _0xc059('0x2a');case _0xc059('0x2b'):return _0xc059('0x2c');case _0xc059('0x2d'):return _0xc059('0x2e');case _0xc059('0x2f'):return _0xc059('0x30');}throw new Error(_0xc059('0x31'),_0x22e5aa);}function getSmtpHost(_0x3cd1a3){switch(_0x3cd1a3){case'gmail':return _0xc059('0x32');case'yahoo':return _0xc059('0x33');case _0xc059('0x2d'):return'smtp-mail.outlook.com';case _0xc059('0x2f'):return _0xc059('0x34');}throw new Error('Unknown\x20email\x20service\x20provider',_0x3cd1a3);}function getAuthenticationOptions(_0x2bd2d5,_0x1d062c){var _0x1183c8={};var _0xaa3caa={};if(_0x2bd2d5){_0x1183c8[_0xc059('0x35')]=_0xaa3caa[_0xc059('0x35')]=_0x1d062c[_0xc059('0x36')];_0x1183c8[_0xc059('0x37')]=_0xaa3caa[_0xc059('0x38')]=_0x1d062c[_0xc059('0x37')];if(_0x1d062c['modernAuthentication']){_0x1183c8['modernAuthentication']=_0xaa3caa['modernAuthentication']=!![];_0x1183c8[_0xc059('0x39')]=_0xaa3caa[_0xc059('0x39')]=_0x1d062c[_0xc059('0x39')];_0x1183c8[_0xc059('0x37')]=_0xaa3caa[_0xc059('0x38')]=null;}else{_0x1183c8[_0xc059('0x39')]=_0xaa3caa[_0xc059('0x39')]=null;}_0x1183c8[_0xc059('0x3a')]=getImapHost(_0x2bd2d5);_0x1183c8[_0xc059('0x3b')]=0x3e1;_0xaa3caa[_0xc059('0x3a')]=getSmtpHost(_0x2bd2d5);_0xaa3caa[_0xc059('0x3b')]=0x24b;_0xaa3caa[_0xc059('0x3c')]=![];_0x1183c8[_0xc059('0x3d')]=_0xaa3caa[_0xc059('0x3d')]=null;}else{if(_0x1d062c[_0xc059('0x3e')]){_0x1183c8[_0xc059('0x35')]=_0xaa3caa['user']=_0x1d062c[_0xc059('0x36')];_0x1183c8[_0xc059('0x37')]=_0xaa3caa[_0xc059('0x38')]=_0x1d062c[_0xc059('0x37')];}else{_0x1183c8['authentication']=_0xaa3caa[_0xc059('0x3e')]=![];_0x1183c8['user']=_0xaa3caa[_0xc059('0x35')]=null;_0x1183c8[_0xc059('0x37')]=_0xaa3caa[_0xc059('0x38')]=null;}_0x1183c8[_0xc059('0x3a')]=_0x1d062c[_0xc059('0x3f')][_0xc059('0x3a')];_0x1183c8[_0xc059('0x3b')]=_0x1d062c[_0xc059('0x3f')][_0xc059('0x3b')];_0xaa3caa['host']=_0x1d062c[_0xc059('0x40')][_0xc059('0x3a')];_0xaa3caa['port']=_0x1d062c[_0xc059('0x40')]['port'];}return{'Imap':_0x1183c8,'Smtp':_0xaa3caa};}exports['index']=function(_0x1b2f8e,_0x1c661b){var _0x1daaf5={'include':[{'model':db[_0xc059('0x41')],'as':_0xc059('0x3f')},{'model':db[_0xc059('0x42')],'as':_0xc059('0x40')},{'model':db['Pause'],'as':_0xc059('0x43')}]},_0x208c14={},_0x25ae46={'count':0x0,'rows':[]};var _0x594e5b=_[_0xc059('0x44')](db[_0xc059('0x45')][_0xc059('0x46')],function(_0x417d0d){return{'name':_0x417d0d[_0xc059('0x47')],'type':_0x417d0d[_0xc059('0x48')][_0xc059('0x49')]};});_0x208c14[_0xc059('0x4a')]=_[_0xc059('0x44')](_0x594e5b,_0xc059('0x27'));_0x208c14[_0xc059('0x4b')]=_[_0xc059('0x4c')](_0x1b2f8e['query']);_0x208c14['filters']=_[_0xc059('0x4d')](_0x208c14['model'],_0x208c14[_0xc059('0x4b')]);_0x1daaf5[_0xc059('0x4e')]=_['intersection'](_0x208c14['model'],qs[_0xc059('0x4f')](_0x1b2f8e[_0xc059('0x4b')][_0xc059('0x4f')]));_0x1daaf5[_0xc059('0x4e')]=_0x1daaf5['attributes'][_0xc059('0x50')]?_0x1daaf5[_0xc059('0x4e')]:_0x208c14[_0xc059('0x4a')];if(!_0x1b2f8e[_0xc059('0x4b')][_0xc059('0x51')](_0xc059('0x52'))){_0x1daaf5[_0xc059('0x1d')]=qs[_0xc059('0x1d')](_0x1b2f8e[_0xc059('0x4b')][_0xc059('0x1d')]);_0x1daaf5['offset']=qs['offset'](_0x1b2f8e['query']['offset']);}_0x1daaf5[_0xc059('0x53')]=qs[_0xc059('0x54')](_0x1b2f8e[_0xc059('0x4b')]['sort']);_0x1daaf5[_0xc059('0x55')]=qs[_0xc059('0x56')](_[_0xc059('0x57')](_0x1b2f8e[_0xc059('0x4b')],_0x208c14['filters']),_0x594e5b);if(_0x1b2f8e[_0xc059('0x4b')][_0xc059('0x58')]){_0x1daaf5[_0xc059('0x55')]=_[_0xc059('0x59')](_0x1daaf5[_0xc059('0x55')],{'$or':_[_0xc059('0x44')](_0x594e5b,function(_0x5d0769){if(_0x5d0769['type']!==_0xc059('0x5a')){var _0x237a56={};_0x237a56[_0x5d0769['name']]={'$like':'%'+_0x1b2f8e[_0xc059('0x4b')][_0xc059('0x58')]+'%'};return _0x237a56;}})});}_0x1daaf5=_[_0xc059('0x59')]({},_0x1daaf5,_0x1b2f8e['options']);var _0x21d3a0={'where':_0x1daaf5[_0xc059('0x55')]};return db[_0xc059('0x45')][_0xc059('0x1c')](_0x21d3a0)[_0xc059('0x10')](function(_0x2aa7f8){_0x25ae46['count']=_0x2aa7f8;if(_0x1b2f8e[_0xc059('0x4b')][_0xc059('0x5b')]){_0x1daaf5[_0xc059('0x5c')]=[{'all':!![]}];}return db[_0xc059('0x45')][_0xc059('0x5d')](_0x1daaf5);})[_0xc059('0x10')](function(_0x374c0e){_0x25ae46[_0xc059('0x5e')]=_0x374c0e;return _0x25ae46;})['then'](respondWithFilteredResult(_0x1c661b,_0x1daaf5))[_0xc059('0x5f')](handleError(_0x1c661b,null));};exports[_0xc059('0x60')]=function(_0x1fc3a0,_0x282601){var _0x205a81={'raw':![],'where':{'id':_0x1fc3a0[_0xc059('0x61')]['id']},'include':[{'model':db[_0xc059('0x41')],'as':_0xc059('0x3f')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xc059('0x62')],'as':_0xc059('0x43')}]},_0x215d66={};_0x215d66[_0xc059('0x4a')]=_[_0xc059('0x4c')](db[_0xc059('0x45')]['rawAttributes']);_0x215d66[_0xc059('0x4b')]=_['keys'](_0x1fc3a0[_0xc059('0x4b')]);_0x215d66[_0xc059('0x56')]=_[_0xc059('0x4d')](_0x215d66['model'],_0x215d66[_0xc059('0x4b')]);_0x205a81[_0xc059('0x4e')]=_[_0xc059('0x4d')](_0x215d66['model'],qs[_0xc059('0x4f')](_0x1fc3a0[_0xc059('0x4b')][_0xc059('0x4f')]));_0x205a81['attributes']=_0x205a81[_0xc059('0x4e')][_0xc059('0x50')]?_0x205a81[_0xc059('0x4e')]:_0x215d66[_0xc059('0x4a')];if(_0x1fc3a0[_0xc059('0x4b')][_0xc059('0x5b')]){_0x205a81[_0xc059('0x5c')]=[{'all':!![]}];}_0x205a81=_[_0xc059('0x59')]({},_0x205a81,_0x1fc3a0[_0xc059('0x63')]);return db[_0xc059('0x45')]['find'](_0x205a81)[_0xc059('0x10')](handleEntityNotFound(_0x282601,null))[_0xc059('0x10')](respondWithResult(_0x282601,null))[_0xc059('0x5f')](handleError(_0x282601,null));};exports[_0xc059('0x20')]=function(_0x148040,_0x3df605){if(_0x148040[_0xc059('0x64')]['id']){delete _0x148040['body']['id'];}var _0x137c8b=_0x148040['body'][_0xc059('0x65')]===_0xc059('0x66')?null:_0x148040[_0xc059('0x64')][_0xc059('0x65')];var _0x2bb295=_0x148040[_0xc059('0x64')]['Imap']||{};var _0x48aa7d=_0x148040['body'][_0xc059('0x40')]||{};if(_0x137c8b){_0x2bb295['host']=getImapHost(_0x137c8b);_0x2bb295[_0xc059('0x3b')]=0x3e1;_0x48aa7d['host']=getSmtpHost(_0x137c8b);_0x48aa7d[_0xc059('0x3b')]=0x24b;_0x48aa7d['secure']=![];}if(_0x48aa7d[_0xc059('0x67')]){_0x48aa7d[_0xc059('0x3c')]=![];}else{_0x48aa7d[_0xc059('0x39')]=null;}if(!_0x2bb295[_0xc059('0x67')])_0x2bb295[_0xc059('0x39')]=null;_0x148040[_0xc059('0x64')]['Imap']=_0x2bb295;_0x148040['body'][_0xc059('0x40')]=_0x48aa7d;return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x148040[_0xc059('0x61')]['id']},'include':[{'model':db[_0xc059('0x41')],'as':_0xc059('0x3f')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xc059('0x62')],'as':_0xc059('0x43')}]})[_0xc059('0x10')](handleEntityNotFound(_0x3df605,null))[_0xc059('0x10')](function(_0x423caa){if(!_0x423caa)throw new Error(_0xc059('0x69'));if(_0x423caa['service'])delete _0x148040[_0xc059('0x64')][_0xc059('0x3f')];return _0x423caa;})[_0xc059('0x10')](saveUpdates(_0x148040[_0xc059('0x64')],null))[_0xc059('0x10')](function(_0x3d2e01){if(!_0x148040[_0xc059('0x64')][_0xc059('0x3f')])return _0x3d2e01;return db[_0xc059('0x41')][_0xc059('0x20')](_0x148040['body'][_0xc059('0x3f')],{'where':{'MailAccountId':_0x3d2e01['id']}})[_0xc059('0x10')](function(){return _0x3d2e01;});})[_0xc059('0x10')](function(_0x20a3a7){if(!_0x148040[_0xc059('0x64')]['Smtp'])return _0x20a3a7;return db[_0xc059('0x42')][_0xc059('0x20')](_0x148040[_0xc059('0x64')][_0xc059('0x40')],{'where':{'MailAccountId':_0x20a3a7['id']}})[_0xc059('0x10')](function(){return _0x20a3a7;});})[_0xc059('0x10')](respondWithResult(_0x3df605,null))[_0xc059('0x5f')](handleError(_0x3df605,null));};exports[_0xc059('0x6a')]=function(_0x2a73ab,_0x3a6134){return db[_0xc059('0x45')][_0xc059('0x6a')]()[_0xc059('0x10')](respondWithResult(_0x3a6134,null))[_0xc059('0x5f')](handleError(_0x3a6134,null));};exports[_0xc059('0x6b')]=function(_0x130428,_0xd3af4d){if(_0x130428[_0xc059('0x64')]['id']){delete _0x130428['body']['id'];}return db['MailAccount'][_0xc059('0x68')]({'where':{'id':_0x130428[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0xd3af4d,null))['then'](function(_0x2a83cc){if(_0x2a83cc){_0x130428[_0xc059('0x64')][_0xc059('0x6c')]=_0x2a83cc['id'];return db[_0xc059('0x6d')][_0xc059('0x6e')](_0x130428[_0xc059('0x64')]);}})[_0xc059('0x10')](respondWithResult(_0xd3af4d,null))[_0xc059('0x5f')](handleError(_0xd3af4d,null));};exports[_0xc059('0x6f')]=function(_0x47e32b,_0x42c7e0){var _0x2562d8={'raw':![],'where':{}};var _0x55f3ca={};var _0x438ff2={'count':0x0,'rows':[]};return db[_0xc059('0x45')][_0xc059('0x70')]({'where':{'id':_0x47e32b[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x42c7e0,null))[_0xc059('0x10')](function(_0x5e9c82){if(_0x5e9c82){_0x55f3ca[_0xc059('0x4a')]=_[_0xc059('0x4c')](db[_0xc059('0x6d')][_0xc059('0x46')]);_0x55f3ca[_0xc059('0x4b')]=_[_0xc059('0x4c')](_0x47e32b[_0xc059('0x4b')]);_0x55f3ca['filters']=_[_0xc059('0x4d')](_0x55f3ca[_0xc059('0x4a')],_0x55f3ca[_0xc059('0x4b')]);_0x2562d8['attributes']=_[_0xc059('0x4d')](_0x55f3ca['model'],qs[_0xc059('0x4f')](_0x47e32b[_0xc059('0x4b')][_0xc059('0x4f')]));_0x2562d8[_0xc059('0x4e')]=_0x2562d8[_0xc059('0x4e')][_0xc059('0x50')]?_0x2562d8[_0xc059('0x4e')]:_0x55f3ca['model'];if(!_0x47e32b[_0xc059('0x4b')][_0xc059('0x51')](_0xc059('0x52'))){_0x2562d8[_0xc059('0x1d')]=qs['limit'](_0x47e32b[_0xc059('0x4b')][_0xc059('0x1d')]);_0x2562d8[_0xc059('0x1a')]=qs['offset'](_0x47e32b[_0xc059('0x4b')][_0xc059('0x1a')]);}_0x2562d8[_0xc059('0x53')]=qs[_0xc059('0x54')](_0x47e32b['query'][_0xc059('0x54')]);_0x2562d8[_0xc059('0x55')]=qs[_0xc059('0x56')](_[_0xc059('0x57')](_0x47e32b['query'],_0x55f3ca[_0xc059('0x56')]));_0x2562d8['where'][_0xc059('0x6c')]=_0x5e9c82['id'];if(_0x47e32b['query'][_0xc059('0x58')]){_0x2562d8[_0xc059('0x55')]=_[_0xc059('0x59')](_0x2562d8['where'],{'$or':_[_0xc059('0x44')](_0x2562d8[_0xc059('0x4e')],function(_0x429ef0){var _0x57d722={};_0x57d722[_0x429ef0]={'$like':'%'+_0x47e32b[_0xc059('0x4b')][_0xc059('0x58')]+'%'};return _0x57d722;})});}_0x2562d8=_[_0xc059('0x59')]({},_0x2562d8,_0x47e32b[_0xc059('0x63')]);return db['Disposition'][_0xc059('0x1c')]({'where':_0x2562d8[_0xc059('0x55')]})[_0xc059('0x10')](function(_0x4c6e73){_0x438ff2[_0xc059('0x1c')]=_0x4c6e73;if(_0x47e32b[_0xc059('0x4b')][_0xc059('0x5b')]){_0x2562d8[_0xc059('0x5c')]=[{'all':!![]}];}return db[_0xc059('0x6d')][_0xc059('0x5d')](_0x2562d8);})[_0xc059('0x10')](function(_0x5dcd36){_0x438ff2['rows']=_0x5dcd36;return _0x438ff2;});}})[_0xc059('0x10')](respondWithFilteredResult(_0x42c7e0,_0x2562d8))[_0xc059('0x5f')](handleError(_0x42c7e0,null));};exports[_0xc059('0x71')]=function(_0x43b7a3,_0x22daf8){return db['MailAccount'][_0xc059('0x68')]({'where':{'id':_0x43b7a3['params']['id']}})['then'](handleEntityNotFound(_0x22daf8,null))[_0xc059('0x10')](function(_0x2a9e57){if(_0x2a9e57){return _0x2a9e57[_0xc059('0x71')](_0x43b7a3[_0xc059('0x4b')]['ids']);}})[_0xc059('0x10')](respondWithStatusCode(_0x22daf8,null))['catch'](handleError(_0x22daf8,null));};exports[_0xc059('0x72')]=function(_0x4a4165,_0x57136a){if(_0x4a4165['body']['id']){delete _0x4a4165['body']['id'];}return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x4a4165['params']['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x57136a,null))['then'](function(_0x4639f4){if(_0x4639f4){_0x4a4165[_0xc059('0x64')]['MailAccountId']=_0x4639f4['id'];return db[_0xc059('0x73')][_0xc059('0x6e')](_0x4a4165[_0xc059('0x64')]);}})[_0xc059('0x10')](respondWithResult(_0x57136a,null))[_0xc059('0x5f')](handleError(_0x57136a,null));};exports[_0xc059('0x74')]=function(_0x1e5bd9,_0x348c19){var _0x3be6ad={'raw':![],'where':{}};var _0x424f70={};var _0x2f16d1={'count':0x0,'rows':[]};return db['MailAccount'][_0xc059('0x70')]({'where':{'id':_0x1e5bd9['params']['id']}})['then'](handleEntityNotFound(_0x348c19,null))[_0xc059('0x10')](function(_0x34df1f){if(_0x34df1f){_0x424f70[_0xc059('0x4a')]=_[_0xc059('0x4c')](db[_0xc059('0x73')][_0xc059('0x46')]);_0x424f70[_0xc059('0x4b')]=_[_0xc059('0x4c')](_0x1e5bd9[_0xc059('0x4b')]);_0x424f70[_0xc059('0x56')]=_[_0xc059('0x4d')](_0x424f70['model'],_0x424f70['query']);_0x3be6ad['attributes']=_[_0xc059('0x4d')](_0x424f70[_0xc059('0x4a')],qs[_0xc059('0x4f')](_0x1e5bd9[_0xc059('0x4b')][_0xc059('0x4f')]));_0x3be6ad[_0xc059('0x4e')]=_0x3be6ad['attributes'][_0xc059('0x50')]?_0x3be6ad[_0xc059('0x4e')]:_0x424f70[_0xc059('0x4a')];if(!_0x1e5bd9['query'][_0xc059('0x51')]('nolimit')){_0x3be6ad[_0xc059('0x1d')]=qs[_0xc059('0x1d')](_0x1e5bd9[_0xc059('0x4b')]['limit']);_0x3be6ad[_0xc059('0x1a')]=qs[_0xc059('0x1a')](_0x1e5bd9[_0xc059('0x4b')]['offset']);}_0x3be6ad[_0xc059('0x53')]=qs[_0xc059('0x54')](_0x1e5bd9[_0xc059('0x4b')][_0xc059('0x54')]);_0x3be6ad[_0xc059('0x55')]=qs[_0xc059('0x56')](_[_0xc059('0x57')](_0x1e5bd9[_0xc059('0x4b')],_0x424f70['filters']));_0x3be6ad[_0xc059('0x55')][_0xc059('0x6c')]=_0x34df1f['id'];if(_0x1e5bd9['query'][_0xc059('0x58')]){_0x3be6ad[_0xc059('0x55')]=_[_0xc059('0x59')](_0x3be6ad[_0xc059('0x55')],{'$or':_[_0xc059('0x44')](_0x3be6ad[_0xc059('0x4e')],function(_0x2b7fbb){var _0x5364ce={};_0x5364ce[_0x2b7fbb]={'$like':'%'+_0x1e5bd9[_0xc059('0x4b')][_0xc059('0x58')]+'%'};return _0x5364ce;})});}_0x3be6ad=_[_0xc059('0x59')]({},_0x3be6ad,_0x1e5bd9[_0xc059('0x63')]);return db[_0xc059('0x73')]['count']({'where':_0x3be6ad[_0xc059('0x55')]})['then'](function(_0x436e62){_0x2f16d1[_0xc059('0x1c')]=_0x436e62;if(_0x1e5bd9[_0xc059('0x4b')]['includeAll']){_0x3be6ad[_0xc059('0x5c')]=[{'all':!![]}];}return db['CannedAnswer'][_0xc059('0x5d')](_0x3be6ad);})[_0xc059('0x10')](function(_0x5802ac){_0x2f16d1[_0xc059('0x5e')]=_0x5802ac;return _0x2f16d1;});}})['then'](respondWithFilteredResult(_0x348c19,_0x3be6ad))['catch'](handleError(_0x348c19,null));};exports[_0xc059('0x75')]=function(_0xa409b0,_0x3c7d6e){return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0xa409b0[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x3c7d6e,null))[_0xc059('0x10')](function(_0x314bfb){if(_0x314bfb){return _0x314bfb[_0xc059('0x75')](_0xa409b0['query'][_0xc059('0x76')]);}})['then'](respondWithStatusCode(_0x3c7d6e,null))['catch'](handleError(_0x3c7d6e,null));};exports[_0xc059('0x6e')]=function(_0x58a93f,_0x5039bd){var _0x269786={'name':_0x58a93f[_0xc059('0x64')][_0xc059('0x27')],'key':_0x58a93f[_0xc059('0x64')]['key'],'provider':_0x58a93f['body'][_0xc059('0x65')]===_0xc059('0x66')?null:_0x58a93f['body'][_0xc059('0x65')],'email':_0x58a93f['body'][_0xc059('0x77')],'ListId':_0x58a93f[_0xc059('0x64')]['ListId'],'active':!_['isNil'](_0x58a93f[_0xc059('0x64')]['active'])?_0x58a93f['body'][_0xc059('0x78')]:!![],'description':_0x58a93f['body']['description']||null};var _0x4b191b=getAuthenticationOptions(_0x269786[_0xc059('0x65')],_0x58a93f['body']);_0x269786['Imap']=_0x4b191b[_0xc059('0x3f')];_0x269786[_0xc059('0x40')]=_0x4b191b['Smtp'];return db['MailAccount']['create'](_0x269786,{'include':[{'model':db['MailServerOut'],'as':_0xc059('0x40')},{'model':db[_0xc059('0x41')],'as':_0xc059('0x3f')}]})[_0xc059('0x10')](function(_0x290ce0){var _0x255666=_0x58a93f[_0xc059('0x35')][_0xc059('0x22')]({'plain':!![]});if(!_0x255666)throw new Error(_0xc059('0x79'));if(_0x255666[_0xc059('0x7a')]===_0xc059('0x35')){var _0x134ac2=_0x290ce0[_0xc059('0x22')]({'plain':!![]});return db[_0xc059('0x7b')][_0xc059('0x68')]({'where':{'name':_0xc059('0x23'),'userProfileId':_0x255666[_0xc059('0x7c')]},'raw':!![]})[_0xc059('0x10')](function(_0x410cf8){if(_0x410cf8&&_0x410cf8[_0xc059('0x7d')]===0x0){return db[_0xc059('0x24')][_0xc059('0x6e')]({'name':_0x134ac2[_0xc059('0x27')],'resourceId':_0x134ac2['id'],'type':_0x410cf8[_0xc059('0x27')],'sectionId':_0x410cf8['id']},{})[_0xc059('0x10')](function(){return _0x290ce0;});}else{return _0x290ce0;}})[_0xc059('0x5f')](function(_0x494016){logger[_0xc059('0x15')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x494016);throw _0x494016;});}return _0x290ce0;})[_0xc059('0x10')](respondWithResult(_0x5039bd,0xc9))[_0xc059('0x5f')](handleError(_0x5039bd,null));};exports[_0xc059('0x7e')]=function(_0xf5a16a,_0x10dde6){return db[_0xc059('0x45')]['findOne']({'where':{'id':_0xf5a16a[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x10dde6,null))[_0xc059('0x10')](function(_0x32351f){if(_0x32351f){return _0x32351f[_0xc059('0x7e')]();}return null;})[_0xc059('0x10')](respondWithResult(_0x10dde6,null))[_0xc059('0x5f')](handleError(_0x10dde6,null));};exports['addImap']=function(_0x1b59c3,_0x240e0d){if(_0x1b59c3[_0xc059('0x64')]['id']){delete _0x1b59c3[_0xc059('0x64')]['id'];}return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x1b59c3['params']['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x240e0d,null))[_0xc059('0x10')](function(_0x5dfb56){if(_0x5dfb56){_0x1b59c3[_0xc059('0x64')][_0xc059('0x6c')]=_0x5dfb56['id'];return db[_0xc059('0x41')]['create'](_0x1b59c3[_0xc059('0x64')]);}})['then'](respondWithResult(_0x240e0d,null))['catch'](handleError(_0x240e0d,null));};exports['removeImap']=function(_0x2f49ea,_0x54724e){return db[_0xc059('0x45')][_0xc059('0x70')]({'where':{'id':_0x2f49ea[_0xc059('0x61')]['id']}})['then'](handleEntityNotFound(_0x54724e,null))[_0xc059('0x10')](function(_0x2a51a5){if(_0x2a51a5){return _0x2a51a5['setImap'](null);}return null;})[_0xc059('0x10')](respondWithStatusCode(_0x54724e,null))[_0xc059('0x5f')](handleError(_0x54724e,null));};exports[_0xc059('0x7f')]=function(_0x47e012,_0x384e2a){return db[_0xc059('0x45')]['findOne']({'where':{'id':_0x47e012['params']['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x384e2a,null))[_0xc059('0x10')](function(_0xc559c4){if(_0xc559c4){return _0xc559c4[_0xc059('0x7f')]();}return null;})['then'](respondWithResult(_0x384e2a,null))[_0xc059('0x5f')](handleError(_0x384e2a,null));};exports[_0xc059('0x80')]=function(_0x10af62,_0x330f41){if(_0x10af62[_0xc059('0x64')]['id']){delete _0x10af62['body']['id'];}return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x10af62[_0xc059('0x61')]['id']}})['then'](handleEntityNotFound(_0x330f41,null))[_0xc059('0x10')](function(_0x25d919){if(_0x25d919){_0x10af62[_0xc059('0x64')][_0xc059('0x6c')]=_0x25d919['id'];return db[_0xc059('0x42')][_0xc059('0x6e')](_0x10af62[_0xc059('0x64')]);}})[_0xc059('0x10')](respondWithResult(_0x330f41,null))[_0xc059('0x5f')](handleError(_0x330f41,null));};exports[_0xc059('0x81')]=function(_0x384c73,_0x11f10e){return db['MailAccount'][_0xc059('0x70')]({'where':{'id':_0x384c73['params']['id']}})['then'](handleEntityNotFound(_0x11f10e,null))[_0xc059('0x10')](function(_0x33198c){if(_0x33198c){return _0x33198c[_0xc059('0x82')](null);}return null;})['then'](respondWithStatusCode(_0x11f10e,null))[_0xc059('0x5f')](handleError(_0x11f10e,null));};exports[_0xc059('0x83')]=function(_0x43ebd6,_0x5c16b4){return db[_0xc059('0x84')]['find']({'where':{'id':_0x43ebd6[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x5c16b4,null))['then'](function(_0x334e1e){if(_0x334e1e){return _0x334e1e[_0xc059('0x83')](_0x43ebd6[_0xc059('0x64')][_0xc059('0x76')],_[_0xc059('0x85')](_0x43ebd6[_0xc059('0x64')],[_0xc059('0x76'),'id'])||{});}})[_0xc059('0x10')](respondWithResult(_0x5c16b4,null))['catch'](handleError(_0x5c16b4,null));};exports['getInteractions']=function(_0x2b75b4,_0x267c5a){var _0x39747c={'raw':![],'where':{}};var _0x585388={};var _0x2518a2={'count':0x0,'rows':[]};return db[_0xc059('0x45')][_0xc059('0x70')]({'where':{'id':_0x2b75b4['params']['id']}})['then'](handleEntityNotFound(_0x267c5a,null))['then'](function(_0x5d48e2){if(_0x5d48e2){_0x585388[_0xc059('0x4a')]=_[_0xc059('0x4c')](db[_0xc059('0x84')][_0xc059('0x46')]);_0x585388[_0xc059('0x4b')]=_[_0xc059('0x4c')](_0x2b75b4['query']);_0x585388[_0xc059('0x56')]=_['intersection'](_0x585388[_0xc059('0x4a')],_0x585388['query']);_0x39747c[_0xc059('0x4e')]=_['intersection'](_0x585388[_0xc059('0x4a')],qs['fields'](_0x2b75b4[_0xc059('0x4b')][_0xc059('0x4f')]));_0x39747c[_0xc059('0x4e')]=_0x39747c[_0xc059('0x4e')][_0xc059('0x50')]?_0x39747c[_0xc059('0x4e')]:_0x585388[_0xc059('0x4a')];if(!_0x2b75b4[_0xc059('0x4b')]['hasOwnProperty'](_0xc059('0x52'))){_0x39747c[_0xc059('0x1d')]=qs[_0xc059('0x1d')](_0x2b75b4[_0xc059('0x4b')][_0xc059('0x1d')]);_0x39747c[_0xc059('0x1a')]=qs[_0xc059('0x1a')](_0x2b75b4['query']['offset']);}_0x39747c[_0xc059('0x53')]=qs[_0xc059('0x54')](_0x2b75b4[_0xc059('0x4b')][_0xc059('0x54')]);_0x39747c[_0xc059('0x55')]=qs['filters'](_['pick'](_0x2b75b4[_0xc059('0x4b')],_0x585388[_0xc059('0x56')]));_0x39747c[_0xc059('0x55')]['MailAccountId']=_0x5d48e2['id'];if(_0x2b75b4[_0xc059('0x4b')]['filter']){_0x39747c[_0xc059('0x55')]=_['merge'](_0x39747c['where'],{'$or':_[_0xc059('0x44')](_0x39747c[_0xc059('0x4e')],function(_0x22e00c){var _0x33da7b={};_0x33da7b[_0x22e00c]={'$like':'%'+_0x2b75b4['query']['filter']+'%'};return _0x33da7b;})});}_0x39747c=_[_0xc059('0x59')]({},_0x39747c,_0x2b75b4['options']);return db['MailInteraction'][_0xc059('0x1c')]({'where':_0x39747c[_0xc059('0x55')]})[_0xc059('0x10')](function(_0x5e864c){_0x2518a2[_0xc059('0x1c')]=_0x5e864c;if(_0x2b75b4[_0xc059('0x4b')][_0xc059('0x5b')]){_0x39747c[_0xc059('0x5c')]=[{'model':db[_0xc059('0x86')],'as':_0xc059('0x87'),'required':![]},{'model':db['User'],'as':_0xc059('0x88'),'attributes':[_0xc059('0x27'),'fullname',_0xc059('0x89')],'required':![]},{'model':db[_0xc059('0x8a')],'as':'Tags','attributes':['id','name',_0xc059('0x8b')],'where':_0x2b75b4[_0xc059('0x4b')][_0xc059('0x8c')]?{'id':_0x2b75b4['query'][_0xc059('0x8c')]}:undefined,'required':_0x2b75b4[_0xc059('0x4b')][_0xc059('0x8c')]?!![]:![]}];}return db[_0xc059('0x84')]['findAll'](_0x39747c);})[_0xc059('0x10')](function(_0x249ce9){_0x2518a2[_0xc059('0x5e')]=_0x249ce9;return _0x2518a2;});}})[_0xc059('0x10')](respondWithFilteredResult(_0x267c5a,_0x39747c))[_0xc059('0x5f')](handleError(_0x267c5a,null));};exports['addApplications']=function addApplications(_0x1fe0cd,_0xdc0b73){var _0x533d14=_0x1fe0cd[_0xc059('0x61')]['id'];var _0x38f5ea=_0x1fe0cd['body'];var _0x3e0ad2=0xc8;var _0x247b6f=null;return db[_0xc059('0x8d')][_0xc059('0x8e')]({'isolationLevel':db[_0xc059('0x8d')][_0xc059('0x8f')][_0xc059('0x90')][_0xc059('0x91')]},function(_0x4769e8){return db[_0xc059('0x45')]['findOne']({'where':{'id':_0x533d14},'transaction':_0x4769e8})['then'](function(_0x16399c){if(_0x16399c){return db[_0xc059('0x92')][_0xc059('0x21')]({'where':{'MailAccountId':_0x533d14},'transaction':_0x4769e8})['then'](function(){var _0x529035=_[_0xc059('0x44')](_0x38f5ea,function(_0x194dfe){_0x194dfe[_0xc059('0x6c')]=_0x533d14;return _0x194dfe;});return db[_0xc059('0x92')][_0xc059('0x93')](_0x529035,{'transaction':_0x4769e8});});}else{_0x3e0ad2=0x194;_0x247b6f=[];}});})[_0xc059('0x10')](function(){if(_0x3e0ad2!==0x194){return db[_0xc059('0x92')][_0xc059('0x94')]({'where':{'MailAccountId':_0x533d14},'order':_0xc059('0x95')})[_0xc059('0x10')](function(_0x322e3d){_0x247b6f=_0x322e3d;});}})[_0xc059('0x5f')](function(_0x6b7d0f){_0x3e0ad2=0x1f4;logger[_0xc059('0x15')](_0x6b7d0f['stack']);if(_0x6b7d0f[_0xc059('0x27')]){delete _0x6b7d0f[_0xc059('0x27')];}_0x247b6f=_0x6b7d0f;})[_0xc059('0x96')](function(){if(_0x247b6f===null){_0xdc0b73['sendStatus'](_0x3e0ad2);}else{if(_0x3e0ad2===0x1f4){_0xdc0b73[_0xc059('0x19')](_0x3e0ad2)[_0xc059('0x28')](_0x247b6f);}else{_0xdc0b73[_0xc059('0x19')](_0x3e0ad2)[_0xc059('0x97')](_0x247b6f);}}});};exports[_0xc059('0x98')]=function(_0xa2ad7d,_0x147f88){var _0x12d56f={};var _0x5d4efb={};var _0x5aa5c0;var _0x4478d1;return db[_0xc059('0x45')]['findOne']({'where':{'id':_0xa2ad7d[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x147f88,null))[_0xc059('0x10')](function(_0x44abfe){if(_0x44abfe){_0x5aa5c0=_0x44abfe;_0x5d4efb[_0xc059('0x4a')]=_['keys'](db[_0xc059('0x92')][_0xc059('0x46')]);_0x5d4efb[_0xc059('0x4b')]=_[_0xc059('0x4c')](_0xa2ad7d[_0xc059('0x4b')]);_0x5d4efb[_0xc059('0x56')]=_[_0xc059('0x4d')](_0x5d4efb[_0xc059('0x4a')],_0x5d4efb['query']);_0x12d56f['attributes']=_[_0xc059('0x4d')](_0x5d4efb[_0xc059('0x4a')],qs[_0xc059('0x4f')](_0xa2ad7d[_0xc059('0x4b')]['fields']));_0x12d56f[_0xc059('0x4e')]=_0x12d56f['attributes'][_0xc059('0x50')]?_0x12d56f[_0xc059('0x4e')]:_0x5d4efb[_0xc059('0x4a')];_0x12d56f['order']=qs['sort'](_0xa2ad7d['query'][_0xc059('0x54')]);_0x12d56f[_0xc059('0x55')]=qs[_0xc059('0x56')](_[_0xc059('0x57')](_0xa2ad7d['query'],_0x5d4efb[_0xc059('0x56')]));if(_0xa2ad7d[_0xc059('0x4b')][_0xc059('0x58')]){_0x12d56f['where']=_[_0xc059('0x59')](_0x12d56f[_0xc059('0x55')],{'$or':_[_0xc059('0x44')](_0x12d56f['attributes'],function(_0x4daeea){var _0x3a312e={};_0x3a312e[_0x4daeea]={'$like':'%'+_0xa2ad7d[_0xc059('0x4b')][_0xc059('0x58')]+'%'};return _0x3a312e;})});}_0x12d56f=_['merge']({},_0x12d56f,_0xa2ad7d[_0xc059('0x63')]);return _0x5aa5c0[_0xc059('0x98')](_0x12d56f);}})[_0xc059('0x10')](function(_0x1189d3){if(_0x1189d3){_0x4478d1=_0x1189d3['length'];if(!_0xa2ad7d[_0xc059('0x4b')][_0xc059('0x51')](_0xc059('0x52'))){_0x12d56f[_0xc059('0x1d')]=qs[_0xc059('0x1d')](_0xa2ad7d[_0xc059('0x4b')][_0xc059('0x1d')]);_0x12d56f[_0xc059('0x1a')]=qs['offset'](_0xa2ad7d['query'][_0xc059('0x1a')]);}return _0x5aa5c0[_0xc059('0x98')](_0x12d56f);}})['then'](function(_0x5a7498){if(_0x5a7498){return _0x5a7498?{'count':_0x4478d1,'rows':_0x5a7498}:null;}})[_0xc059('0x10')](respondWithResult(_0x147f88,null))[_0xc059('0x5f')](handleError(_0x147f88,null));};exports['getMessages']=function(_0xed4f74,_0x277575){var _0x59670c={'raw':!![],'where':{}};var _0xbc1535={};var _0x106906={'count':0x0,'rows':[]};return db['MailAccount'][_0xc059('0x70')]({'where':{'id':_0xed4f74[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x277575,null))['then'](function(_0x1db2fe){if(_0x1db2fe){_0xbc1535[_0xc059('0x4a')]=_['keys'](db[_0xc059('0x99')][_0xc059('0x46')]);_0xbc1535['query']=_[_0xc059('0x4c')](_0xed4f74['query']);_0xbc1535[_0xc059('0x56')]=_[_0xc059('0x4d')](_0xbc1535[_0xc059('0x4a')],_0xbc1535['query']);_0x59670c[_0xc059('0x4e')]=_[_0xc059('0x4d')](_0xbc1535[_0xc059('0x4a')],qs['fields'](_0xed4f74[_0xc059('0x4b')][_0xc059('0x4f')]));_0x59670c[_0xc059('0x4e')]=_0x59670c['attributes'][_0xc059('0x50')]?_0x59670c[_0xc059('0x4e')]:_0xbc1535['model'];if(!_0xed4f74[_0xc059('0x4b')][_0xc059('0x51')](_0xc059('0x52'))){_0x59670c[_0xc059('0x1d')]=qs['limit'](_0xed4f74[_0xc059('0x4b')][_0xc059('0x1d')]);_0x59670c[_0xc059('0x1a')]=qs[_0xc059('0x1a')](_0xed4f74[_0xc059('0x4b')][_0xc059('0x1a')]);}_0x59670c['order']=qs[_0xc059('0x54')](_0xed4f74[_0xc059('0x4b')][_0xc059('0x54')]);_0x59670c[_0xc059('0x55')]=qs[_0xc059('0x56')](_[_0xc059('0x57')](_0xed4f74[_0xc059('0x4b')],_0xbc1535[_0xc059('0x56')]));_0x59670c[_0xc059('0x55')][_0xc059('0x6c')]=_0x1db2fe['id'];if(_0xed4f74[_0xc059('0x4b')][_0xc059('0x58')]){_0x59670c[_0xc059('0x55')]=_[_0xc059('0x59')](_0x59670c[_0xc059('0x55')],{'$or':_[_0xc059('0x44')](_0x59670c[_0xc059('0x4e')],function(_0x123c0d){var _0x3910bc={};_0x3910bc[_0x123c0d]={'$like':'%'+_0xed4f74[_0xc059('0x4b')][_0xc059('0x58')]+'%'};return _0x3910bc;})});}if(_0xed4f74[_0xc059('0x4b')][_0xc059('0x9a')]){var _0x1d1237=_0xed4f74[_0xc059('0x4b')][_0xc059('0x9a')][_0xc059('0x9b')](',');var _0x41cc07={};_0x41cc07[_0x1d1237[0x0]]={'$gte':moment(_0x1d1237[0x1])[_0xc059('0x9c')](_0xc059('0x9d'))};_0x59670c['where']=_['merge'](_0x59670c['where'],_0x41cc07);}_0x59670c=_[_0xc059('0x59')]({},_0x59670c,_0xed4f74['options']);return db[_0xc059('0x99')][_0xc059('0x1c')]({'where':_0x59670c[_0xc059('0x55')]})[_0xc059('0x10')](function(_0x234202){_0x106906['count']=_0x234202;if(_0xed4f74[_0xc059('0x4b')][_0xc059('0x5b')]){_0x59670c[_0xc059('0x5c')]=[{'all':!![]}];}return db['MailMessage'][_0xc059('0x5d')](_0x59670c);})[_0xc059('0x10')](function(_0x265d6d){if(_0xed4f74['query']['inlineCss']===_0xc059('0x9e')){for(var _0x13f499=0x0;_0x13f499<_0x265d6d[_0xc059('0x50')];_0x13f499++){_0x265d6d[_0x13f499]['body']=juice(_0x265d6d[_0x13f499][_0xc059('0x64')]);}}_0x106906[_0xc059('0x5e')]=_0x265d6d;return _0x106906;});}})['then'](respondWithFilteredResult(_0x277575,_0x59670c))[_0xc059('0x5f')](handleError(_0x277575,null));};exports[_0xc059('0x28')]=function(_0x4cc7d0,_0x2d135c){var _0x44364e,_0xb6081={},_0x18c7b9;if(_0x4cc7d0[_0xc059('0x64')]['to']){_0x18c7b9=_0x4cc7d0[_0xc059('0x64')]['to']['split'](',')[0x0];}return db['MailAccount'][_0xc059('0x68')]({'where':{'id':_0x4cc7d0[_0xc059('0x61')]['id']},'include':[{'model':db[_0xc059('0x9f')],'as':_0xc059('0xa0'),'include':[{'model':db[_0xc059('0x86')],'as':_0xc059('0xa1'),'where':{'email':_0x18c7b9},'limit':0x1,'order':[[_0xc059('0xa2'),_0xc059('0xa3')]]}]},{'model':db[_0xc059('0x42')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xc059('0xa4')],'as':_0xc059('0xa4'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x2d135c,null))[_0xc059('0x10')](function(_0x5278e7){if(!_0x5278e7)return;_0x44364e=_0x5278e7;if(!_0x5278e7[_0xc059('0x40')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0xc059('0xa5')](_0x4cc7d0[_0xc059('0x64')][_0xc059('0xa6')])){_0x4cc7d0[_0xc059('0x64')][_0xc059('0xa6')]=util[_0xc059('0x9c')](_0xc059('0xa7'),_0x5278e7[_0xc059('0x27')],_0x5278e7['email']||_0x5278e7[_0xc059('0x40')][_0xc059('0x35')]);}if(_0x4cc7d0[_0xc059('0x64')]['attachments']&&_0x4cc7d0[_0xc059('0x64')]['attachments']['length']){for(var _0x254e34=0x0;_0x254e34<_0x4cc7d0[_0xc059('0x64')][_0xc059('0xa8')]['length'];_0x254e34+=0x1){_0x4cc7d0[_0xc059('0x64')][_0xc059('0xa8')][_0x254e34]={'filename':_0x4cc7d0[_0xc059('0x64')][_0xc059('0xa8')][_0x254e34]['name'],'path':path[_0xc059('0xa9')](config[_0xc059('0xaa')],_0xc059('0xab'),_0x4cc7d0[_0xc059('0x64')]['attachments'][_0x254e34][_0xc059('0xac')])};}}var _0x30dd72=_0x5278e7[_0xc059('0xad')]();return respondWithRpcPromise(_0xc059('0xae'),'sendMail',{'account':_0x30dd72,'message':_0x4cc7d0[_0xc059('0x64')]});})['then'](function(_0x328cf9){if(!_0x328cf9)return;_0xb6081=_0x328cf9;if(!_0x44364e[_0xc059('0xa0')])throw new Error('List\x20not\x20found');if(_0x44364e[_0xc059('0xa0')][_0xc059('0xa1')]['length'])return _0x44364e[_0xc059('0xa0')][_0xc059('0xa1')][0x0];return db['CmContact']['create'](_['defaults'](_0x4cc7d0[_0xc059('0x64')],{'firstName':_0x4cc7d0['body']['to'],'email':_0x4cc7d0['body']['to'],'phone':_0x4cc7d0[_0xc059('0x64')]['to'],'ListId':_0x44364e[_0xc059('0xaf')]}));})[_0xc059('0x10')](function(_0x216079){if(!_0x216079)return;var _0x52fd3d={'UserId':_0x4cc7d0[_0xc059('0x35')]['id'],'ContactId':_0x216079['id'],'MailAccountId':_0x44364e['id'],'inReplyTo':_0xb6081[_0xc059('0xb0')],'to':_0x4cc7d0[_0xc059('0x64')]['from'],'cc':_0x4cc7d0[_0xc059('0x64')]['cc'],'subject':_0x4cc7d0['body'][_0xc059('0xb1')],'attach':_0x4cc7d0[_0xc059('0x64')][_0xc059('0xb2')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xc059('0x9c')](_0xc059('0x9d')),'lastMsgDirection':'out','Messages':[_[_0xc059('0x59')](_0x4cc7d0[_0xc059('0x64')],{'messageId':_0xb6081[_0xc059('0xb0')],'sentAt':moment()[_0xc059('0x9c')](_0xc059('0x9d')),'read':!![],'MailAccountId':_0x44364e['id'],'UserId':_0x4cc7d0[_0xc059('0x35')]['id'],'ContactId':_0x216079['id']})]};if(_0x4cc7d0['body']['Interaction']){_0x52fd3d=_[_0xc059('0x59')](_0x52fd3d,_0x4cc7d0[_0xc059('0x64')][_0xc059('0xb3')]);}return db[_0xc059('0x84')][_0xc059('0x6e')](_0x52fd3d,{'include':[{'model':db[_0xc059('0x99')],'as':_0xc059('0xb4')}]});})[_0xc059('0x10')](respondWithResult(_0x2d135c,null))[_0xc059('0x5f')](handleError(_0x2d135c,null));};exports[_0xc059('0xb5')]=function(_0x5a1985,_0x3596b8){return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x5a1985[_0xc059('0x61')]['id']},'include':[{'model':db[_0xc059('0x42')],'as':_0xc059('0x40'),'raw':!![],'include':[{'model':db[_0xc059('0xa4')],'as':_0xc059('0xa4'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x3596b8,null))[_0xc059('0x10')](function(_0x280370){if(!_0x280370[_0xc059('0x40')])return;var _0x5002b6=_0x280370[_0xc059('0xad')]();return respondWithRpcPromise(_0xc059('0xb6'),'verifySmtp',{'account':_0x5002b6});})[_0xc059('0x10')](respondWithResult(_0x3596b8,null))[_0xc059('0x5f')](handleError(_0x3596b8,null));};exports[_0xc059('0x21')]=function(_0x4d8878,_0x2b5ced){return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x4d8878['params']['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x2b5ced,null))[_0xc059('0x10')](function(_0x576d17){if(_0x576d17&&_0x576d17['service']){throw new db[(_0xc059('0xb7'))][(_0xc059('0xb8'))](_0xc059('0xb9'));}return _0x576d17;})[_0xc059('0x10')](removeEntity(_0x2b5ced,null))[_0xc059('0x5f')](handleError(_0x2b5ced,null));};exports[_0xc059('0xba')]=function(_0x8f0d17,_0x1f5a8b){return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x8f0d17['params']['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x1f5a8b,null))[_0xc059('0x10')](function(_0x92427e){if(_0x92427e){return _0x92427e[_0xc059('0xba')](_0x8f0d17[_0xc059('0x64')][_0xc059('0x76')],_[_0xc059('0x85')](_0x8f0d17['body'],[_0xc059('0x76'),'id'])||{})['spread'](function(_0x2481c6){for(var _0x137d4a=0x0;_0x137d4a<_0x8f0d17[_0xc059('0x64')][_0xc059('0x76')][_0xc059('0x50')];_0x137d4a+=0x1){socket[_0xc059('0xbb')](_0xc059('0xbc'),{'UserId':Number(_0x8f0d17[_0xc059('0x64')]['ids'][_0x137d4a]),'MailAccountId':Number(_0x8f0d17[_0xc059('0x61')]['id'])});}return _0x2481c6;});}})[_0xc059('0x10')](respondWithResult(_0x1f5a8b,null))['catch'](handleError(_0x1f5a8b,null));};exports[_0xc059('0xbd')]=function(_0x480925,_0x14491a){return db[_0xc059('0x45')][_0xc059('0x68')]({'where':{'id':_0x480925['params']['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x14491a,null))['then'](function(_0x5b2d0a){if(_0x5b2d0a){return _0x5b2d0a[_0xc059('0xbd')](_0x480925[_0xc059('0x4b')][_0xc059('0x76')])[_0xc059('0x10')](function(){if(_['isArray'](_0x480925['query'][_0xc059('0x76')])){for(var _0x1e9731=0x0;_0x1e9731<_0x480925['query'][_0xc059('0x76')][_0xc059('0x50')];_0x1e9731+=0x1){socket[_0xc059('0xbb')](_0xc059('0xbe'),{'UserId':Number(_0x480925[_0xc059('0x4b')][_0xc059('0x76')][_0x1e9731]),'MailAccountId':Number(_0x480925[_0xc059('0x61')]['id'])});}}else{socket['emit'](_0xc059('0xbe'),{'UserId':Number(_0x480925[_0xc059('0x4b')][_0xc059('0x76')]),'MailAccountId':Number(_0x480925['params']['id'])});}});}})[_0xc059('0x10')](respondWithStatusCode(_0x14491a,null))[_0xc059('0x5f')](handleError(_0x14491a,null));};exports[_0xc059('0xbf')]=function(_0x34162e,_0x553144){var _0x48dfa1={};var _0x364a89={};var _0x261638;var _0x380741;return db[_0xc059('0x45')][_0xc059('0x70')]({'where':{'id':_0x34162e[_0xc059('0x61')]['id']}})[_0xc059('0x10')](handleEntityNotFound(_0x553144,null))[_0xc059('0x10')](function(_0x1813fa){if(_0x1813fa){_0x261638=_0x1813fa;_0x364a89[_0xc059('0x4a')]=_[_0xc059('0x4c')](db[_0xc059('0xc0')][_0xc059('0x46')]);_0x364a89[_0xc059('0x4b')]=_[_0xc059('0x4c')](_0x34162e[_0xc059('0x4b')]);_0x364a89[_0xc059('0x56')]=_[_0xc059('0x4d')](_0x364a89[_0xc059('0x4a')],_0x364a89[_0xc059('0x4b')]);_0x48dfa1[_0xc059('0x4e')]=_[_0xc059('0x4d')](_0x364a89[_0xc059('0x4a')],qs['fields'](_0x34162e[_0xc059('0x4b')][_0xc059('0x4f')]));_0x48dfa1[_0xc059('0x4e')]=_0x48dfa1[_0xc059('0x4e')][_0xc059('0x50')]?_0x48dfa1[_0xc059('0x4e')]:_0x364a89[_0xc059('0x4a')];_0x48dfa1[_0xc059('0x53')]=qs['sort'](_0x34162e[_0xc059('0x4b')]['sort']);_0x48dfa1['where']=qs[_0xc059('0x56')](_[_0xc059('0x57')](_0x34162e[_0xc059('0x4b')],_0x364a89['filters']));if(_0x34162e[_0xc059('0x4b')]['filter']){_0x48dfa1[_0xc059('0x55')]=_[_0xc059('0x59')](_0x48dfa1[_0xc059('0x55')],{'$or':_[_0xc059('0x44')](_0x48dfa1['attributes'],function(_0xf1e7b5){var _0x3895fd={};_0x3895fd[_0xf1e7b5]={'$like':'%'+_0x34162e[_0xc059('0x4b')]['filter']+'%'};return _0x3895fd;})});}_0x48dfa1=_[_0xc059('0x59')]({},_0x48dfa1,_0x34162e[_0xc059('0x63')]);return _0x261638[_0xc059('0xbf')](_0x48dfa1);}})['then'](function(_0x1ba28f){if(_0x1ba28f){_0x380741=_0x1ba28f['length'];if(!_0x34162e[_0xc059('0x4b')]['hasOwnProperty'](_0xc059('0x52'))){_0x48dfa1['limit']=qs[_0xc059('0x1d')](_0x34162e[_0xc059('0x4b')]['limit']);_0x48dfa1[_0xc059('0x1a')]=qs[_0xc059('0x1a')](_0x34162e[_0xc059('0x4b')][_0xc059('0x1a')]);}return _0x261638[_0xc059('0xbf')](_0x48dfa1);}})[_0xc059('0x10')](function(_0x3190a3){if(_0x3190a3){return _0x3190a3?{'count':_0x380741,'rows':_0x3190a3}:null;}})['then'](respondWithResult(_0x553144,null))['catch'](handleError(_0x553144,null));};
\ No newline at end of file
index 054a780..2dfda5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea3=['emit','exports','events','../../mysqldb','MailAccount','setMaxListeners','save','update','remove'];(function(_0x142e35,_0x4e77e4){var _0x3f7baa=function(_0x147d83){while(--_0x147d83){_0x142e35['push'](_0x142e35['shift']());}};_0x3f7baa(++_0x4e77e4);}(_0x9ea3,0x12b));var _0x39ea=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0x9ea3[_0x26462c];return _0x509a42;};'use strict';var EventEmitter=require(_0x39ea('0x0'));var MailAccount=require(_0x39ea('0x1'))['db'][_0x39ea('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x39ea('0x3')](0x0);var events={'afterCreate':_0x39ea('0x4'),'afterUpdate':_0x39ea('0x5'),'afterDestroy':_0x39ea('0x6')};function emitEvent(_0x49548d){return function(_0xc887b3,_0x129660,_0x229027){MailAccountEvents['emit'](_0x49548d+':'+_0xc887b3['id'],_0xc887b3);MailAccountEvents[_0x39ea('0x7')](_0x49548d,_0xc887b3);_0x229027(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x39ea('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0xcf2e=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','MailAccount'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xcf2e,0x197));var _0xecf2=function(_0x3a87d1,_0x584e71){_0x3a87d1=_0x3a87d1-0x0;var _0x3aa6d8=_0xcf2e[_0x3a87d1];return _0x3aa6d8;};'use strict';var EventEmitter=require(_0xecf2('0x0'));var MailAccount=require(_0xecf2('0x1'))['db'][_0xecf2('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xecf2('0x3')](0x0);var events={'afterCreate':_0xecf2('0x4'),'afterUpdate':_0xecf2('0x5'),'afterDestroy':_0xecf2('0x6')};function emitEvent(_0x26b249){return function(_0x4306cc,_0x57f63f,_0x14a022){MailAccountEvents[_0xecf2('0x7')](_0x26b249+':'+_0x4306cc['id'],_0x4306cc);MailAccountEvents[_0xecf2('0x7')](_0x26b249,_0x4306cc);_0x14a022(null);};}for(var e in events){if(events[_0xecf2('0x8')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0xecf2('0x9')]=MailAccountEvents;
\ No newline at end of file
index 57c4965..05660ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed8=['Cloud\x20Provider\x20configuration\x20not\x20found','user','CloudProvider','data5','auth','define','mail_accounts','provider','service','host','Smtp','port','secure','authentication','modernAuthentication'];(function(_0x4645bd,_0x1ad4c){var _0x59ebbb=function(_0x42f66f){while(--_0x42f66f){_0x4645bd['push'](_0x4645bd['shift']());}};_0x59ebbb(++_0x1ad4c);}(_0x3ed8,0x16d));var _0x83ed=function(_0x171fdc,_0x16ae91){_0x171fdc=_0x171fdc-0x0;var _0x3782ea=_0x3ed8[_0x171fdc];return _0x3782ea;};'use strict';var attributes=require('./mailAccount.attributes');module['exports']=function(_0x20638c){return _0x20638c[_0x83ed('0x0')]('MailAccount',attributes,{'tableName':_0x83ed('0x1'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x403521=this;var _0x2eb269={'id':_0x403521['id'],'tls':{'rejectUnauthorized':![]}};if(_0x403521[_0x83ed('0x2')]!=='custom'){_0x2eb269[_0x83ed('0x3')]=_0x403521[_0x83ed('0x2')];}else{_0x2eb269[_0x83ed('0x4')]=_0x403521[_0x83ed('0x5')][_0x83ed('0x4')];_0x2eb269[_0x83ed('0x6')]=_0x403521['Smtp'][_0x83ed('0x6')];_0x2eb269[_0x83ed('0x7')]=_0x403521[_0x83ed('0x5')][_0x83ed('0x7')];}if(_0x403521[_0x83ed('0x5')][_0x83ed('0x8')]){if(_0x403521['Smtp'][_0x83ed('0x9')]){if(!_0x403521['Smtp']['CloudProvider'])throw new Error(_0x83ed('0xa'));_0x2eb269['auth']={'type':'OAuth2','user':_0x403521[_0x83ed('0x5')][_0x83ed('0xb')],'accessToken':_0x403521[_0x83ed('0x5')][_0x83ed('0xc')][_0x83ed('0xd')]};}else{_0x2eb269[_0x83ed('0xe')]={'user':_0x403521[_0x83ed('0x5')][_0x83ed('0xb')],'pass':_0x403521[_0x83ed('0x5')]['pass']};}}return _0x2eb269;}}});};
\ No newline at end of file
+var _0x2817=['port','secure','authentication','modernAuthentication','Smtp','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','user','data5','pass','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider','host'];(function(_0x38cd9d,_0x13b695){var _0x4f827f=function(_0x22d1af){while(--_0x22d1af){_0x38cd9d['push'](_0x38cd9d['shift']());}};_0x4f827f(++_0x13b695);}(_0x2817,0x173));var _0x7281=function(_0x13dc99,_0x2e7821){_0x13dc99=_0x13dc99-0x0;var _0x4c8451=_0x2817[_0x13dc99];return _0x4c8451;};'use strict';var attributes=require(_0x7281('0x0'));module[_0x7281('0x1')]=function(_0x4a2818){return _0x4a2818[_0x7281('0x2')](_0x7281('0x3'),attributes,{'tableName':_0x7281('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x556c30=this;var _0x1da02e={'id':_0x556c30['id'],'tls':{'rejectUnauthorized':![]}};if(_0x556c30[_0x7281('0x5')]!=='custom'){_0x1da02e['service']=_0x556c30[_0x7281('0x5')];}else{_0x1da02e[_0x7281('0x6')]=_0x556c30['Smtp'][_0x7281('0x6')];_0x1da02e[_0x7281('0x7')]=_0x556c30['Smtp'][_0x7281('0x7')];_0x1da02e[_0x7281('0x8')]=_0x556c30['Smtp'][_0x7281('0x8')];}if(_0x556c30['Smtp'][_0x7281('0x9')]){if(_0x556c30['Smtp'][_0x7281('0xa')]){if(!_0x556c30[_0x7281('0xb')][_0x7281('0xc')])throw new Error(_0x7281('0xd'));_0x1da02e[_0x7281('0xe')]={'type':'OAuth2','user':_0x556c30['Smtp'][_0x7281('0xf')],'accessToken':_0x556c30[_0x7281('0xb')][_0x7281('0xc')][_0x7281('0x10')]};}else{_0x1da02e[_0x7281('0xe')]={'user':_0x556c30[_0x7281('0xb')][_0x7281('0xf')],'pass':_0x556c30[_0x7281('0xb')][_0x7281('0x11')]};}}return _0x1da02e;}}});};
\ No newline at end of file
index 5f552f5..7d4b751 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['MailServerOut','Smtp','CloudProvider','get','account','omit','smtpOptions','applications','list','asc','autoclose','close','Contacts','length','defaults','ListId','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','create','spread','attach','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','socket.io-emitter','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','MailAccount','findAll','options','where','attributes','limit','include','map','model','stringify','GetMailAccount','ShowMailAccount','smtp','setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','isNil','from','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','DESC','MailApplication','Applications'];(function(_0x39ee17,_0x7ac060){var _0x4bc635=function(_0x2df964){while(--_0x2df964){_0x39ee17['push'](_0x39ee17['shift']());}};_0x4bc635(++_0x7ac060);}(_0xd943,0x15d));var _0x3d94=function(_0x183dec,_0x57e3b2){_0x183dec=_0x183dec-0x0;var _0x53d202=_0xd943[_0x183dec];return _0x53d202;};'use strict';var _=require(_0x3d94('0x0'));var moment=require(_0x3d94('0x1'));var BPromise=require(_0x3d94('0x2'));var rs=require(_0x3d94('0x3'));var Redis=require('ioredis');var db=require(_0x3d94('0x4'))['db'];var logger=require(_0x3d94('0x5'))(_0x3d94('0x6'));var config=require(_0x3d94('0x7'));var jayson=require(_0x3d94('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x3d94('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3d94('0xa'))(new Redis(config[_0x3d94('0x9')]));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x3984a3,_0x27e381,_0x1cc58c){return new BPromise(function(_0x5908a7,_0x182066){return client['request'](_0x3984a3,_0x1cc58c)[_0x3d94('0xb')](function(_0x301536){logger['info'](_0x3d94('0xc'),_0x27e381,_0x3d94('0xd'));logger[_0x3d94('0xe')](_0x3d94('0xf'),_0x27e381,_0x3d94('0xd'),JSON['stringify'](_0x301536));if(_0x301536[_0x3d94('0x10')]){if(_0x301536[_0x3d94('0x10')][_0x3d94('0x11')]===0x1f4){logger['error'](_0x3d94('0xc'),_0x27e381,_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);return _0x182066(_0x301536['error'][_0x3d94('0x12')]);}logger[_0x3d94('0x10')](_0x3d94('0xc'),_0x27e381,_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);return _0x5908a7(_0x301536[_0x3d94('0x10')][_0x3d94('0x12')]);}else{logger[_0x3d94('0x13')]('MailAccount,\x20%s,\x20%s',_0x27e381,_0x3d94('0xd'));_0x5908a7(_0x301536[_0x3d94('0x14')][_0x3d94('0x12')]);}})[_0x3d94('0x15')](function(_0x4afc92){logger[_0x3d94('0x10')](_0x3d94('0xc'),_0x27e381,_0x4afc92);_0x182066(_0x4afc92);});});}exports['GetMailAccount']=function(_0x9bca24){var _0x59b741=this;return new Promise(function(_0x28bead,_0x193934){return db[_0x3d94('0x16')][_0x3d94('0x17')]({'raw':_0x9bca24[_0x3d94('0x18')]?_0x9bca24['options']['raw']===undefined?!![]:![]:!![],'where':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x19')]||null:null,'attributes':_0x9bca24['options']?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1a')]||null:null,'limit':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1b')]||null:null,'include':_0x9bca24[_0x3d94('0x18')]?_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x9bca24[_0x3d94('0x18')][_0x3d94('0x1c')],function(_0x192839){return{'model':db[_0x192839[_0x3d94('0x1e')]],'as':_0x192839['as'],'attributes':_0x192839[_0x3d94('0x1a')],'include':_0x192839[_0x3d94('0x1c')]?_['map'](_0x192839[_0x3d94('0x1c')],function(_0x558fd2){return{'model':db[_0x558fd2[_0x3d94('0x1e')]],'as':_0x558fd2['as'],'attributes':_0x558fd2[_0x3d94('0x1a')],'include':_0x558fd2[_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x558fd2[_0x3d94('0x1c')],function(_0x82b568){return{'model':db[_0x82b568[_0x3d94('0x1e')]],'as':_0x82b568['as'],'attributes':_0x82b568['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x362642){logger['info']('GetMailAccount',_0x9bca24);logger[_0x3d94('0xe')]('GetMailAccount',_0x9bca24,JSON[_0x3d94('0x1f')](_0x362642));_0x28bead(_0x362642);})[_0x3d94('0x15')](function(_0x32403a){logger['error'](_0x3d94('0x20'),_0x32403a['message'],_0x9bca24);_0x193934(_0x59b741[_0x3d94('0x10')](0x1f4,_0x32403a['message']));});});};exports[_0x3d94('0x21')]=function(_0x215ad7){var _0x29b1ff=this;return new Promise(function(_0x246f88,_0x50560c){return db[_0x3d94('0x16')]['find']({'raw':_0x215ad7[_0x3d94('0x18')]?_0x215ad7[_0x3d94('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x215ad7['options']?_0x215ad7[_0x3d94('0x18')][_0x3d94('0x19')]||null:null,'attributes':_0x215ad7[_0x3d94('0x18')]?_0x215ad7['options'][_0x3d94('0x1a')]||null:null,'include':_0x215ad7[_0x3d94('0x18')]?_0x215ad7['options'][_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x215ad7[_0x3d94('0x18')][_0x3d94('0x1c')],function(_0x782c1){return{'model':db[_0x782c1['model']],'as':_0x782c1['as'],'attributes':_0x782c1[_0x3d94('0x1a')],'include':_0x782c1[_0x3d94('0x1c')]?_[_0x3d94('0x1d')](_0x782c1[_0x3d94('0x1c')],function(_0xb493f1){return{'model':db[_0xb493f1[_0x3d94('0x1e')]],'as':_0xb493f1['as'],'attributes':_0xb493f1['attributes'],'include':_0xb493f1['include']?_[_0x3d94('0x1d')](_0xb493f1[_0x3d94('0x1c')],function(_0x1c1b25){return{'model':db[_0x1c1b25[_0x3d94('0x1e')]],'as':_0x1c1b25['as'],'attributes':_0x1c1b25[_0x3d94('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3d94('0xb')](function(_0x2ef743){if(_0x215ad7[_0x3d94('0x18')][_0x3d94('0x22')]===!![])_0x2ef743[_0x3d94('0x23')]('smtpOptions',_0x2ef743[_0x3d94('0x24')]());logger[_0x3d94('0x13')](_0x3d94('0x21'),_0x215ad7);logger[_0x3d94('0xe')]('ShowMailAccount',_0x215ad7,JSON[_0x3d94('0x1f')](_0x2ef743));_0x246f88(_0x2ef743);})[_0x3d94('0x15')](function(_0x35e0e6){logger[_0x3d94('0x10')](_0x3d94('0x21'),_0x35e0e6['message'],_0x215ad7);_0x50560c(_0x29b1ff[_0x3d94('0x10')](0x1f4,_0x35e0e6[_0x3d94('0x12')]));});});};exports[_0x3d94('0x25')]=function(_0x485066){var _0x4eee4d=this;return new Promise(function(_0x4d8a8f,_0x47905e){var _0x3b3550={'body':_0x485066[_0x3d94('0x26')],'channel':_0x3d94('0x27')};var _0x146ccb=_[_0x3d94('0x28')](_[_0x3d94('0x29')](db[_0x3d94('0x2a')]['rawAttributes']),['createdAt',_0x3d94('0x2b'),_0x3d94('0x2c'),'ListId']);var _0x2d0aa2=![];if(_0x485066['body']['id']){delete _0x485066[_0x3d94('0x26')]['id'];}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x26')])||_0x485066['body'][_0x3d94('0x26')]===''){return _0x47905e(_0x4eee4d['error'](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x3d94('0x2d')](_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x146ccb));}if(!_[_0x3d94('0x30')](_0x146ccb,_0x485066['body'][_0x3d94('0x2f')])){return _0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,_0x3d94('0x31')+_0x146ccb));}var _0x15c8e7={};_0x15c8e7[_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')]]=_0x485066[_0x3d94('0x26')]['from'];return db[_0x3d94('0x16')][_0x3d94('0x32')]({'where':{'id':_0x485066['account']['id']},'include':[{'model':db['CmList'],'as':_0x3d94('0x33'),'include':[{'model':db[_0x3d94('0x2a')],'as':'Contacts','where':_0x15c8e7,'limit':0x1,'order':[[_0x3d94('0x2b'),_0x3d94('0x34')]]}]},{'model':db[_0x3d94('0x35')],'as':_0x3d94('0x36')},{'model':db[_0x3d94('0x37')],'as':_0x3d94('0x38'),'include':[{'model':db[_0x3d94('0x39')],'as':_0x3d94('0x39')}]}]})[_0x3d94('0xb')](function(_0x2429bc){if(_0x2429bc&&_0x2429bc[_0x3d94('0x33')]){var _0x29682b=_0x2429bc[_0x3d94('0x3a')]({'plain':!![]});_0x3b3550[_0x3d94('0x3b')]=_[_0x3d94('0x3c')](_0x29682b,['Applications',_0x3d94('0x33')]);_0x3b3550[_0x3d94('0x3b')][_0x3d94('0x3d')]=_0x2429bc[_0x3d94('0x24')]();_0x3b3550[_0x3d94('0x3e')]=_0x29682b[_0x3d94('0x36')];_0x3b3550[_0x3d94('0x3f')]=_0x29682b[_0x3d94('0x33')];_0x3b3550[_0x3d94('0x3e')]=_['orderBy'](_0x3b3550[_0x3d94('0x3e')],['priority'],[_0x3d94('0x40')]);if(_0x3b3550[_0x3d94('0x3b')]&&_0x3b3550['account'][_0x3d94('0x41')]){_0x3b3550['applications']['push']({'id':0x0,'priority':_0x3b3550[_0x3d94('0x3e')]['length']+0x1,'app':_0x3d94('0x42'),'appdata':_0x3d94('0x41'),'interval':'*,*,*,*'});}if(_0x3b3550[_0x3d94('0x3b')]['Applications']){delete _0x3b3550['account'][_0x3d94('0x36')];}if(_0x3b3550[_0x3d94('0x3b')][_0x3d94('0x33')]){delete _0x3b3550[_0x3d94('0x3b')][_0x3d94('0x33')];}if(_0x29682b[_0x3d94('0x33')][_0x3d94('0x43')][_0x3d94('0x44')]){return _0x29682b[_0x3d94('0x33')]['Contacts'][0x0];}var _0x28cfbb=_[_0x3d94('0x45')](_0x485066[_0x3d94('0x26')],{'firstName':_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')],'ListId':_0x29682b[_0x3d94('0x46')]});_0x28cfbb[_0x485066[_0x3d94('0x26')][_0x3d94('0x2f')]]=_0x485066[_0x3d94('0x26')][_0x3d94('0x2e')];return db[_0x3d94('0x2a')]['create'](_0x28cfbb);}else{throw new Error(_0x3d94('0x47'));}})['then'](function(_0x709841){_0x3b3550[_0x3d94('0x48')]=_0x709841;if(_0x709841){if(!_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')]){_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')]=rs[_0x3d94('0x4a')]()+'\x20'+_0x485066['body']['message'][_0x3d94('0x2e')];}var _0x4bd97c={'ContactId':_0x709841['id'],'MailAccountId':_0x485066[_0x3d94('0x3b')]['id'],'inReplyTo':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x49')],'to':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x2e')],'cc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['cc'],'subject':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x4b')],'attach':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['attach'],'lastMsgAt':moment()[_0x3d94('0x4c')](_0x3d94('0x4d')),'lastMsgDirection':'in'};return db[_0x3d94('0x4e')][_0x3d94('0x32')]({'where':{'closed':![],'MailAccountId':_0x485066['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x3d94('0x4f'),'attributes':[_0x3d94('0x49')],'where':{'messageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['inReplyTo']}}]})[_0x3d94('0xb')](function(_0x1c99d1){if(_0x1c99d1){return[_0x1c99d1,![]];}return db['MailInteraction'][_0x3d94('0x50')](_0x4bd97c)[_0x3d94('0xb')](function(_0x336e36){return[_0x336e36,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x3d94('0x51')](function(_0x227372,_0x585531){if(_0x227372){_0x2d0aa2=_0x585531;if(!_0x585531){return _0x227372['update']({'inReplyTo':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['messageId'],'to':_0x485066['body']['message'][_0x3d94('0x2e')],'cc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['cc'],'subject':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['subject'],'attach':_0x227372[_0x3d94('0x52')]?_0x227372[_0x3d94('0x52')]:_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x52')],'substatus':null,'substatusAt':moment()[_0x3d94('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x3d94('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x227372;}}})[_0x3d94('0xb')](function(_0x41d561){_0x3b3550[_0x3d94('0x53')]=_0x41d561[_0x3d94('0x3a')]({'plain':!![]});_0x3b3550[_0x3d94('0x53')][_0x3d94('0x54')]=_0x2d0aa2;return db['MailMessage']['create']({'body':_0x485066[_0x3d94('0x26')]['body'],'MailAccountId':_0x485066['account']['id'],'MailInteractionId':_0x41d561['id'],'direction':'in','ContactId':_0x3b3550['contact']['id'],'messageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x49')],'from':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x2e')],'to':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['to'],'cc':_0x485066['body'][_0x3d94('0x12')]['cc'],'subject':_0x485066['body'][_0x3d94('0x12')][_0x3d94('0x4b')],'attach':_0x485066[_0x3d94('0x26')]['message']['attach'],'Attachments':_0x485066['body'][_0x3d94('0x12')][_0x3d94('0x55')],'originTo':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x56')],'originCc':_0x485066['body']['message'][_0x3d94('0x57')],'bcc':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')]['bcc'],'ChatWebsiteId':_0x485066[_0x3d94('0x26')]['message'][_0x3d94('0x58')]||null,'originChannel':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x59')]||_0x3d94('0x5a'),'ChatOfflineMessageId':_0x485066[_0x3d94('0x26')][_0x3d94('0x12')][_0x3d94('0x5b')]||null},{'include':[{'model':db[_0x3d94('0x5c')],'as':_0x3d94('0x5d')}]});})[_0x3d94('0xb')](function(_0xe6cfd1){_0x3b3550[_0x3d94('0x12')]=_0xe6cfd1;if(_0x3b3550['interaction'][_0x3d94('0x5e')]){return db[_0x3d94('0x5f')][_0x3d94('0x32')]({'attributes':['id',_0x3d94('0x60')],'where':{'id':_0x3b3550['interaction'][_0x3d94('0x5e')]}})['then'](function(_0x4f217f){if(_0x4f217f){_0x3b3550[_0x3d94('0x3e')]['unshift']({'id':0x0,'priority':0x0,'app':_0x3d94('0x61'),'appdata':_0x4f217f[_0x3d94('0x60')]+','+(_0x3b3550['account'][_0x3d94('0x62')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x3d94('0x63'),_0x3d94('0x64'),_0x3b3550);});}return respondWithRpcPromise('Start','startRouting',_0x3b3550);})['then'](function(_0x833d96){_0x4d8a8f(_0x833d96);})['catch'](function(_0x5a8114){_0x47905e(_0x4eee4d[_0x3d94('0x10')](0x1f4,_0x5a8114[_0x3d94('0x12')]));});});};
\ No newline at end of file
+var _0xc2c7=['defaults','./mailAccount.socket','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','raw','options','where','attributes','include','map','model','ShowMailAccount','MailAccount','find','smtp','setDataValue','smtpOptions','getSmtpOptions','NotifyMailAccount','body','mail','difference','CmContact','rawAttributes','updatedAt','ListId','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','from','account','CmList','List','DESC','MailApplication','Smtp','CloudProvider','get','omit','Applications','applications','orderBy','asc','autoclose','push','close','Contacts','length','List\x20not\x20found','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','Messages','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','attach','interaction','created','attachments','originTo','originCc','bcc','ChatWebsiteId','Email','Attachment','Attachments','User','name','UserId','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis'];(function(_0x166df5,_0x38faf1){var _0x1193aa=function(_0x3d0b6f){while(--_0x3d0b6f){_0x166df5['push'](_0x166df5['shift']());}};_0x1193aa(++_0x38faf1);}(_0xc2c7,0x134));var _0x7c2c=function(_0x218f40,_0x3f10eb){_0x218f40=_0x218f40-0x0;var _0x1d1a97=_0xc2c7[_0x218f40];return _0x1d1a97;};'use strict';var _=require('lodash');var moment=require(_0x7c2c('0x0'));var BPromise=require(_0x7c2c('0x1'));var rs=require(_0x7c2c('0x2'));var Redis=require(_0x7c2c('0x3'));var db=require(_0x7c2c('0x4'))['db'];var logger=require(_0x7c2c('0x5'))(_0x7c2c('0x6'));var config=require(_0x7c2c('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7c2c('0x8')]({'port':0x232c});config[_0x7c2c('0x9')]=_[_0x7c2c('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7c2c('0x9')]));require(_0x7c2c('0xb'))[_0x7c2c('0xc')](socket);function respondWithRpcPromise(_0x3b780b,_0x279cff,_0x57b107){return new BPromise(function(_0x3093d2,_0x307bec){return client[_0x7c2c('0xd')](_0x3b780b,_0x57b107)[_0x7c2c('0xe')](function(_0x2587ec){logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x279cff,_0x7c2c('0x11'));logger[_0x7c2c('0x12')](_0x7c2c('0x13'),_0x279cff,_0x7c2c('0x11'),JSON[_0x7c2c('0x14')](_0x2587ec));if(_0x2587ec[_0x7c2c('0x15')]){if(_0x2587ec[_0x7c2c('0x15')][_0x7c2c('0x16')]===0x1f4){logger[_0x7c2c('0x15')]('MailAccount,\x20%s,\x20%s',_0x279cff,_0x2587ec['error'][_0x7c2c('0x17')]);return _0x307bec(_0x2587ec[_0x7c2c('0x15')][_0x7c2c('0x17')]);}logger['error'](_0x7c2c('0x10'),_0x279cff,_0x2587ec[_0x7c2c('0x15')]['message']);return _0x3093d2(_0x2587ec[_0x7c2c('0x15')]['message']);}else{logger[_0x7c2c('0xf')]('MailAccount,\x20%s,\x20%s',_0x279cff,_0x7c2c('0x11'));_0x3093d2(_0x2587ec[_0x7c2c('0x18')][_0x7c2c('0x17')]);}})[_0x7c2c('0x19')](function(_0x17df4a){logger[_0x7c2c('0x15')](_0x7c2c('0x10'),_0x279cff,_0x17df4a);_0x307bec(_0x17df4a);});});}exports[_0x7c2c('0x1a')]=function(_0x2d356e){var _0x39c5f3=this;return new Promise(function(_0x40eaef,_0x2381b4){return db['MailAccount'][_0x7c2c('0x1b')]({'raw':_0x2d356e['options']?_0x2d356e['options'][_0x7c2c('0x1c')]===undefined?!![]:![]:!![],'where':_0x2d356e[_0x7c2c('0x1d')]?_0x2d356e[_0x7c2c('0x1d')][_0x7c2c('0x1e')]||null:null,'attributes':_0x2d356e[_0x7c2c('0x1d')]?_0x2d356e[_0x7c2c('0x1d')][_0x7c2c('0x1f')]||null:null,'limit':_0x2d356e['options']?_0x2d356e[_0x7c2c('0x1d')]['limit']||null:null,'include':_0x2d356e[_0x7c2c('0x1d')]?_0x2d356e['options'][_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x2d356e[_0x7c2c('0x1d')]['include'],function(_0x4d6ec7){return{'model':db[_0x4d6ec7[_0x7c2c('0x22')]],'as':_0x4d6ec7['as'],'attributes':_0x4d6ec7[_0x7c2c('0x1f')],'include':_0x4d6ec7[_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x4d6ec7[_0x7c2c('0x20')],function(_0xa8e145){return{'model':db[_0xa8e145[_0x7c2c('0x22')]],'as':_0xa8e145['as'],'attributes':_0xa8e145['attributes'],'include':_0xa8e145[_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0xa8e145[_0x7c2c('0x20')],function(_0x22d03f){return{'model':db[_0x22d03f[_0x7c2c('0x22')]],'as':_0x22d03f['as'],'attributes':_0x22d03f[_0x7c2c('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7c2c('0xe')](function(_0x26f472){logger[_0x7c2c('0xf')]('GetMailAccount',_0x2d356e);logger[_0x7c2c('0x12')](_0x7c2c('0x1a'),_0x2d356e,JSON[_0x7c2c('0x14')](_0x26f472));_0x40eaef(_0x26f472);})[_0x7c2c('0x19')](function(_0x53ad23){logger[_0x7c2c('0x15')](_0x7c2c('0x1a'),_0x53ad23[_0x7c2c('0x17')],_0x2d356e);_0x2381b4(_0x39c5f3[_0x7c2c('0x15')](0x1f4,_0x53ad23[_0x7c2c('0x17')]));});});};exports[_0x7c2c('0x23')]=function(_0x463ef7){var _0x57af44=this;return new Promise(function(_0x1969f4,_0x1acf75){return db[_0x7c2c('0x24')][_0x7c2c('0x25')]({'raw':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7['options']['raw']===undefined?!![]:![]:!![],'where':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7['options']['where']||null:null,'attributes':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7[_0x7c2c('0x1d')][_0x7c2c('0x1f')]||null:null,'include':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7['options'][_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x463ef7[_0x7c2c('0x1d')][_0x7c2c('0x20')],function(_0x204968){return{'model':db[_0x204968[_0x7c2c('0x22')]],'as':_0x204968['as'],'attributes':_0x204968[_0x7c2c('0x1f')],'include':_0x204968[_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x204968[_0x7c2c('0x20')],function(_0x3230a1){return{'model':db[_0x3230a1[_0x7c2c('0x22')]],'as':_0x3230a1['as'],'attributes':_0x3230a1[_0x7c2c('0x1f')],'include':_0x3230a1['include']?_['map'](_0x3230a1[_0x7c2c('0x20')],function(_0x4acc5d){return{'model':db[_0x4acc5d['model']],'as':_0x4acc5d['as'],'attributes':_0x4acc5d['attributes']};}):[]};}):[]};}):[]:[]})[_0x7c2c('0xe')](function(_0xc77f11){if(_0x463ef7[_0x7c2c('0x1d')][_0x7c2c('0x26')]===!![])_0xc77f11[_0x7c2c('0x27')](_0x7c2c('0x28'),_0xc77f11[_0x7c2c('0x29')]());logger[_0x7c2c('0xf')](_0x7c2c('0x23'),_0x463ef7);logger[_0x7c2c('0x12')](_0x7c2c('0x23'),_0x463ef7,JSON['stringify'](_0xc77f11));_0x1969f4(_0xc77f11);})['catch'](function(_0x3920b6){logger[_0x7c2c('0x15')](_0x7c2c('0x23'),_0x3920b6[_0x7c2c('0x17')],_0x463ef7);_0x1acf75(_0x57af44['error'](0x1f4,_0x3920b6[_0x7c2c('0x17')]));});});};exports[_0x7c2c('0x2a')]=function(_0x93e2a8){var _0x45fddf=this;return new Promise(function(_0x18e288,_0x8b0dc9){var _0x12c9cd={'body':_0x93e2a8[_0x7c2c('0x2b')],'channel':_0x7c2c('0x2c')};var _0x4e1f79=_[_0x7c2c('0x2d')](_['keys'](db[_0x7c2c('0x2e')][_0x7c2c('0x2f')]),['createdAt',_0x7c2c('0x30'),'CompanyId',_0x7c2c('0x31')]);var _0x33b2be=![];if(_0x93e2a8[_0x7c2c('0x2b')]['id']){delete _0x93e2a8[_0x7c2c('0x2b')]['id'];}if(_['isNil'](_0x93e2a8[_0x7c2c('0x2b')]['from'])){return _0x8b0dc9(_0x45fddf['error'](0x1f4,_0x7c2c('0x32')));}if(_[_0x7c2c('0x33')](_0x93e2a8[_0x7c2c('0x2b')]['body'])||_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x2b')]===''){return _0x8b0dc9(_0x45fddf['error'](0x1f4,_0x7c2c('0x34')));}if(_['isNil'](_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x35')])){return _0x8b0dc9(_0x45fddf['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e1f79));}if(!_[_0x7c2c('0x36')](_0x4e1f79,_0x93e2a8[_0x7c2c('0x2b')]['mapKey'])){return _0x8b0dc9(_0x45fddf[_0x7c2c('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e1f79));}var _0x51e3b7={};_0x51e3b7[_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x35')]]=_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x37')];return db[_0x7c2c('0x24')][_0x7c2c('0x25')]({'where':{'id':_0x93e2a8[_0x7c2c('0x38')]['id']},'include':[{'model':db[_0x7c2c('0x39')],'as':_0x7c2c('0x3a'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x51e3b7,'limit':0x1,'order':[[_0x7c2c('0x30'),_0x7c2c('0x3b')]]}]},{'model':db[_0x7c2c('0x3c')],'as':'Applications'},{'model':db['MailServerOut'],'as':_0x7c2c('0x3d'),'include':[{'model':db[_0x7c2c('0x3e')],'as':_0x7c2c('0x3e')}]}]})[_0x7c2c('0xe')](function(_0x5f3de8){if(_0x5f3de8&&_0x5f3de8['List']){var _0x587667=_0x5f3de8[_0x7c2c('0x3f')]({'plain':!![]});_0x12c9cd[_0x7c2c('0x38')]=_[_0x7c2c('0x40')](_0x587667,[_0x7c2c('0x41'),_0x7c2c('0x3a')]);_0x12c9cd['account'][_0x7c2c('0x28')]=_0x5f3de8[_0x7c2c('0x29')]();_0x12c9cd['applications']=_0x587667[_0x7c2c('0x41')];_0x12c9cd['list']=_0x587667[_0x7c2c('0x3a')];_0x12c9cd[_0x7c2c('0x42')]=_[_0x7c2c('0x43')](_0x12c9cd['applications'],['priority'],[_0x7c2c('0x44')]);if(_0x12c9cd['account']&&_0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x45')]){_0x12c9cd['applications'][_0x7c2c('0x46')]({'id':0x0,'priority':_0x12c9cd[_0x7c2c('0x42')]['length']+0x1,'app':_0x7c2c('0x47'),'appdata':_0x7c2c('0x45'),'interval':'*,*,*,*'});}if(_0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x41')]){delete _0x12c9cd[_0x7c2c('0x38')]['Applications'];}if(_0x12c9cd[_0x7c2c('0x38')]['List']){delete _0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x3a')];}if(_0x587667['List'][_0x7c2c('0x48')][_0x7c2c('0x49')]){return _0x587667[_0x7c2c('0x3a')][_0x7c2c('0x48')][0x0];}var _0x481b9e=_[_0x7c2c('0xa')](_0x93e2a8[_0x7c2c('0x2b')],{'firstName':_0x93e2a8['body'][_0x7c2c('0x37')],'ListId':_0x587667['ListId']});_0x481b9e[_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x35')]]=_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x37')];return db[_0x7c2c('0x2e')]['create'](_0x481b9e);}else{throw new Error(_0x7c2c('0x4a'));}})[_0x7c2c('0xe')](function(_0x4c4661){_0x12c9cd['contact']=_0x4c4661;if(_0x4c4661){if(!_0x93e2a8['body'][_0x7c2c('0x17')]['messageId']){_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x4b')]=rs[_0x7c2c('0x4c')]()+'\x20'+_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x37')];}var _0x1ee34d={'ContactId':_0x4c4661['id'],'MailAccountId':_0x93e2a8[_0x7c2c('0x38')]['id'],'inReplyTo':_0x93e2a8[_0x7c2c('0x2b')]['message']['messageId'],'to':_0x93e2a8['body'][_0x7c2c('0x17')][_0x7c2c('0x37')],'cc':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['cc'],'subject':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x4d')],'attach':_0x93e2a8[_0x7c2c('0x2b')]['message']['attach'],'lastMsgAt':moment()[_0x7c2c('0x4e')](_0x7c2c('0x4f')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x7c2c('0x25')]({'where':{'closed':![],'MailAccountId':_0x93e2a8['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x7c2c('0x50'),'attributes':[_0x7c2c('0x4b')],'where':{'messageId':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x51')]}}]})[_0x7c2c('0xe')](function(_0x2d4459){if(_0x2d4459){return[_0x2d4459,![]];}return db[_0x7c2c('0x52')][_0x7c2c('0x53')](_0x1ee34d)[_0x7c2c('0xe')](function(_0xd01d59){return[_0xd01d59,!![]];});});}else{throw new Error(_0x7c2c('0x54'));}})[_0x7c2c('0x55')](function(_0x3d44f8,_0x559005){if(_0x3d44f8){_0x33b2be=_0x559005;if(!_0x559005){return _0x3d44f8[_0x7c2c('0x56')]({'inReplyTo':_0x93e2a8['body']['message']['messageId'],'to':_0x93e2a8['body'][_0x7c2c('0x17')][_0x7c2c('0x37')],'cc':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['cc'],'subject':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['subject'],'attach':_0x3d44f8[_0x7c2c('0x57')]?_0x3d44f8[_0x7c2c('0x57')]:_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x57')],'substatus':null,'substatusAt':moment()[_0x7c2c('0x4e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x7c2c('0x4e')](_0x7c2c('0x4f')),'lastMsgDirection':'in'});}else{return _0x3d44f8;}}})['then'](function(_0x39d319){_0x12c9cd[_0x7c2c('0x58')]=_0x39d319['get']({'plain':!![]});_0x12c9cd[_0x7c2c('0x58')][_0x7c2c('0x59')]=_0x33b2be;return db['MailMessage']['create']({'body':_0x93e2a8[_0x7c2c('0x2b')]['body'],'MailAccountId':_0x93e2a8[_0x7c2c('0x38')]['id'],'MailInteractionId':_0x39d319['id'],'direction':'in','ContactId':_0x12c9cd['contact']['id'],'messageId':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['messageId'],'from':_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x37')],'to':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['to'],'cc':_0x93e2a8['body'][_0x7c2c('0x17')]['cc'],'subject':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x4d')],'attach':_0x93e2a8['body'][_0x7c2c('0x17')][_0x7c2c('0x57')],'Attachments':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x5a')],'originTo':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x5b')],'originCc':_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x5c')],'bcc':_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x5d')],'ChatWebsiteId':_0x93e2a8['body']['message'][_0x7c2c('0x5e')]||null,'originChannel':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['originChannel']||_0x7c2c('0x5f'),'ChatOfflineMessageId':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x7c2c('0x60')],'as':_0x7c2c('0x61')}]});})[_0x7c2c('0xe')](function(_0x8f8b42){_0x12c9cd['message']=_0x8f8b42;if(_0x12c9cd[_0x7c2c('0x58')]['UserId']){return db[_0x7c2c('0x62')]['find']({'attributes':['id',_0x7c2c('0x63')],'where':{'id':_0x12c9cd[_0x7c2c('0x58')][_0x7c2c('0x64')]}})[_0x7c2c('0xe')](function(_0x43eb9d){if(_0x43eb9d){_0x12c9cd[_0x7c2c('0x42')][_0x7c2c('0x65')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x43eb9d[_0x7c2c('0x63')]+','+(_0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x66')]||0xa),'interval':_0x7c2c('0x67')});}return respondWithRpcPromise(_0x7c2c('0x68'),_0x7c2c('0x69'),_0x12c9cd);});}return respondWithRpcPromise(_0x7c2c('0x68'),_0x7c2c('0x69'),_0x12c9cd);})['then'](function(_0x2d75b8){_0x18e288(_0x2d75b8);})[_0x7c2c('0x19')](function(_0x2391a7){_0x8b0dc9(_0x45fddf[_0x7c2c('0x15')](0x1f4,_0x2391a7[_0x7c2c('0x17')]));});});};
\ No newline at end of file
index 892ae68..951b7bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x205c=['length','mailAccount:','./mailAccount.events','remove','update','removeListener'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0x205c,0x122));var _0xc205=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x205c[_0x45d55e];return _0x29812a;};'use strict';var MailAccountEvents=require(_0xc205('0x0'));var events=['save',_0xc205('0x1'),_0xc205('0x2')];function createListener(_0x102fd9,_0x13c84d){return function(_0x564d59){_0x13c84d['emit'](_0x102fd9,_0x564d59);};}function removeListener(_0x7be69a,_0x1ce2ff){return function(){MailAccountEvents[_0xc205('0x3')](_0x7be69a,_0x1ce2ff);};}exports['register']=function(_0xd511d5){for(var _0x12170b=0x0,_0x208d10=events[_0xc205('0x4')];_0x12170b<_0x208d10;_0x12170b++){var _0x1ac4e9=events[_0x12170b];var _0xc7efdd=createListener(_0xc205('0x5')+_0x1ac4e9,_0xd511d5);MailAccountEvents['on'](_0x1ac4e9,_0xc7efdd);}};
\ No newline at end of file
+var _0xab04=['save','remove','removeListener','register','length','mailAccount:','./mailAccount.events'];(function(_0x52ec51,_0x2f1bb7){var _0x386802=function(_0x45c53c){while(--_0x45c53c){_0x52ec51['push'](_0x52ec51['shift']());}};_0x386802(++_0x2f1bb7);}(_0xab04,0x1b8));var _0x4ab0=function(_0x154f21,_0x3c7f37){_0x154f21=_0x154f21-0x0;var _0x5ae16f=_0xab04[_0x154f21];return _0x5ae16f;};'use strict';var MailAccountEvents=require(_0x4ab0('0x0'));var events=[_0x4ab0('0x1'),_0x4ab0('0x2'),'update'];function createListener(_0x2b9b9b,_0x29c0fa){return function(_0xf0720f){_0x29c0fa['emit'](_0x2b9b9b,_0xf0720f);};}function removeListener(_0x54fbb3,_0x23f5a4){return function(){MailAccountEvents[_0x4ab0('0x3')](_0x54fbb3,_0x23f5a4);};}exports[_0x4ab0('0x4')]=function(_0x5dbc06){for(var _0x28ef60=0x0,_0x3e2666=events[_0x4ab0('0x5')];_0x28ef60<_0x3e2666;_0x28ef60++){var _0xc50742=events[_0x28ef60];var _0x31773b=createListener(_0x4ab0('0x6')+_0xc50742,_0x5dbc06);MailAccountEvents['on'](_0xc50742,_0x31773b);}};
\ No newline at end of file
index 84898db..00d2638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6294=['../../components/interaction/service','get','/:id','isAuthenticated','show','put','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x305fd3,_0x5eef9c){var _0x4126d8=function(_0x184676){while(--_0x184676){_0x305fd3['push'](_0x305fd3['shift']());}};_0x4126d8(++_0x5eef9c);}(_0x6294,0x19f));var _0x4629=function(_0xb31d4f,_0x485512){_0xb31d4f=_0xb31d4f-0x0;var _0x3d09f7=_0x6294[_0xb31d4f];return _0x3d09f7;};'use strict';var multer=require(_0x4629('0x0'));var util=require(_0x4629('0x1'));var path=require('path');var timeout=require(_0x4629('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4629('0x3'));var auth=require(_0x4629('0x4'));var interaction=require(_0x4629('0x5'));var config=require('../../config/environment');var controller=require('./mailApplication.controller');router[_0x4629('0x6')](_0x4629('0x7'),auth[_0x4629('0x8')](),controller[_0x4629('0x9')]);router[_0x4629('0xa')](_0x4629('0x7'),auth[_0x4629('0x8')](),controller[_0x4629('0xb')]);router[_0x4629('0xc')](_0x4629('0x7'),auth[_0x4629('0x8')](),controller[_0x4629('0xd')]);module[_0x4629('0xe')]=router;
\ No newline at end of file
+var _0xf742=['/:id','isAuthenticated','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./mailApplication.controller','get'];(function(_0x12b1b7,_0x28c697){var _0x380344=function(_0x2084ab){while(--_0x2084ab){_0x12b1b7['push'](_0x12b1b7['shift']());}};_0x380344(++_0x28c697);}(_0xf742,0xe7));var _0x2f74=function(_0xaeee9,_0x59c33f){_0xaeee9=_0xaeee9-0x0;var _0xd143a6=_0xf742[_0xaeee9];return _0xd143a6;};'use strict';var multer=require(_0x2f74('0x0'));var util=require(_0x2f74('0x1'));var path=require(_0x2f74('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f74('0x3'));var router=express[_0x2f74('0x4')]();var fs_extra=require(_0x2f74('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2f74('0x6'));var config=require('../../config/environment');var controller=require(_0x2f74('0x7'));router[_0x2f74('0x8')](_0x2f74('0x9'),auth[_0x2f74('0xa')](),controller['show']);router[_0x2f74('0xb')](_0x2f74('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x2f74('0xc')](_0x2f74('0x9'),auth['isAuthenticated'](),controller[_0x2f74('0xd')]);module[_0x2f74('0xe')]=router;
\ No newline at end of file
index cbf961c..20ef10d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44b9=['INTEGER','STRING','*,*,*,*','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x44b9,0x125));var _0x944b=function(_0x23ba79,_0x5a3cb5){_0x23ba79=_0x23ba79-0x0;var _0x27d5ae=_0x44b9[_0x23ba79];return _0x27d5ae;};'use strict';var Sequelize=require(_0x944b('0x0'));module[_0x944b('0x1')]={'priority':{'type':Sequelize[_0x944b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x944b('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x944b('0x3')]},'interval':{'type':Sequelize[_0x944b('0x3')],'defaultValue':_0x944b('0x4')}};
\ No newline at end of file
+var _0x5835=['TEXT','STRING','sequelize','noop'];(function(_0x5c8e2d,_0x2ef172){var _0x1f63dd=function(_0x26b1d2){while(--_0x26b1d2){_0x5c8e2d['push'](_0x5c8e2d['shift']());}};_0x1f63dd(++_0x2ef172);}(_0x5835,0x16e));var _0x5583=function(_0x30d3c9,_0x50b9ba){_0x30d3c9=_0x30d3c9-0x0;var _0x3463f9=_0x5835[_0x30d3c9];return _0x3463f9;};'use strict';var Sequelize=require(_0x5583('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5583('0x1')},'appdata':{'type':Sequelize[_0x5583('0x2')]()},'description':{'type':Sequelize[_0x5583('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 538d160..763f379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['includeAll','include','merge','find','catch','body','MailApplication','destroy','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','params','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x3c7517,_0x348c11){var _0x4f294d=function(_0x5c28ad){while(--_0x5c28ad){_0x3c7517['push'](_0x3c7517['shift']());}};_0x4f294d(++_0x348c11);}(_0xda3f,0xec));var _0xfda3=function(_0x14ecf7,_0x4d83ad){_0x14ecf7=_0x14ecf7-0x0;var _0x1d495a=_0xda3f[_0x14ecf7];return _0x1d495a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['show']=function(_0x3c1549,_0x4101b1){var _0x301509={'raw':!![],'where':{'id':_0x3c1549[_0xfda3('0x28')]['id']}},_0x474992={};_0x474992[_0xfda3('0x29')]=_[_0xfda3('0x2a')](db['MailApplication']['rawAttributes']);_0x474992[_0xfda3('0x2b')]=_['keys'](_0x3c1549['query']);_0x474992[_0xfda3('0x2c')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2e')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],qs[_0xfda3('0x2f')](_0x3c1549[_0xfda3('0x2b')]['fields']));_0x301509[_0xfda3('0x2e')]=_0x301509[_0xfda3('0x2e')][_0xfda3('0x30')]?_0x301509[_0xfda3('0x2e')]:_0x474992[_0xfda3('0x29')];if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x31')]){_0x301509[_0xfda3('0x32')]=[{'all':!![]}];}_0x301509=_[_0xfda3('0x33')]({},_0x301509,_0x3c1549['options']);return db['MailApplication'][_0xfda3('0x34')](_0x301509)[_0xfda3('0x23')](handleEntityNotFound(_0x4101b1,null))['then'](respondWithResult(_0x4101b1,null))[_0xfda3('0x35')](handleError(_0x4101b1,null));};exports[_0xfda3('0x22')]=function(_0x28ca96,_0x52ee98){if(_0x28ca96[_0xfda3('0x36')]['id']){delete _0x28ca96[_0xfda3('0x36')]['id'];}return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x28ca96[_0xfda3('0x28')]['id']}})['then'](handleEntityNotFound(_0x52ee98,null))[_0xfda3('0x23')](saveUpdates(_0x28ca96[_0xfda3('0x36')],null))[_0xfda3('0x23')](respondWithResult(_0x52ee98,null))['catch'](handleError(_0x52ee98,null));};exports[_0xfda3('0x38')]=function(_0x4854b1,_0x2d9a3f){return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x4854b1[_0xfda3('0x28')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2d9a3f,null))[_0xfda3('0x23')](removeEntity(_0x2d9a3f,null))[_0xfda3('0x35')](handleError(_0x2d9a3f,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x2994ff,_0x49cfe9){var _0xff37c9=function(_0x39025c){while(--_0x39025c){_0x2994ff['push'](_0x2994ff['shift']());}};_0xff37c9(++_0x49cfe9);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index 871021c..53f3ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6757=['utf8mb4','lodash','moment','bluebird','request-promise','rimraf','../../config/environment','./mailApplication.attributes','exports','MailApplication','mail_applications'];(function(_0x2a731b,_0x48138e){var _0x339d9d=function(_0x44a1c4){while(--_0x44a1c4){_0x2a731b['push'](_0x2a731b['shift']());}};_0x339d9d(++_0x48138e);}(_0x6757,0x140));var _0x7675=function(_0x1a284b,_0x4d11f6){_0x1a284b=_0x1a284b-0x0;var _0x2b7625=_0x6757[_0x1a284b];return _0x2b7625;};'use strict';var _=require(_0x7675('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x7675('0x1'));var BPromise=require(_0x7675('0x2'));var rp=require(_0x7675('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7675('0x4'));var config=require(_0x7675('0x5'));var attributes=require(_0x7675('0x6'));module[_0x7675('0x7')]=function(_0x4759f4,_0x2bb51a){return _0x4759f4['define'](_0x7675('0x8'),attributes,{'tableName':_0x7675('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7675('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xa0c4=['../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird'];(function(_0x3f4c7c,_0x1459be){var _0x4f7dfb=function(_0x2db7cc){while(--_0x2db7cc){_0x3f4c7c['push'](_0x3f4c7c['shift']());}};_0x4f7dfb(++_0x1459be);}(_0xa0c4,0xa4));var _0x4a0c=function(_0x32388d,_0x36b3ba){_0x32388d=_0x32388d-0x0;var _0x101ffc=_0xa0c4[_0x32388d];return _0x101ffc;};'use strict';var _=require(_0x4a0c('0x0'));var util=require(_0x4a0c('0x1'));var logger=require(_0x4a0c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x4a0c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4a0c('0x4'));var attributes=require(_0x4a0c('0x5'));module[_0x4a0c('0x6')]=function(_0x4e618f,_0x2485dc){return _0x4e618f[_0x4a0c('0x7')](_0x4a0c('0x8'),attributes,{'tableName':_0x4a0c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4a0c('0xa'),'collate':_0x4a0c('0xb')});};
\ No newline at end of file
index 49b14ec..c0b13d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd62d=['../../config/environment','jayson/promise','client','request','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','MailApplication','options','raw','limit','UpdateMailApplication','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd62d,0x1d5));var _0xdd62=function(_0x2b737a,_0xadcd90){_0x2b737a=_0x2b737a-0x0;var _0xbae6ed=_0xd62d[_0x2b737a];return _0xbae6ed;};'use strict';var _=require('lodash');var util=require(_0xdd62('0x0'));var moment=require('moment');var BPromise=require(_0xdd62('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdd62('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xdd62('0x3'));var logger=require(_0xdd62('0x4'))(_0xdd62('0x5'));var config=require(_0xdd62('0x6'));var jayson=require(_0xdd62('0x7'));var client=jayson[_0xdd62('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fe453,_0x25841f,_0x2340f9){return new BPromise(function(_0x57fb58,_0x424105){return client[_0xdd62('0x9')](_0x4fe453,_0x2340f9)[_0xdd62('0xa')](function(_0x4af566){logger[_0xdd62('0xb')](_0xdd62('0xc'),_0x25841f,'request\x20sent');logger['debug'](_0xdd62('0xd'),_0x25841f,_0xdd62('0xe'),JSON[_0xdd62('0xf')](_0x4af566));if(_0x4af566[_0xdd62('0x10')]){if(_0x4af566[_0xdd62('0x10')]['code']===0x1f4){logger[_0xdd62('0x10')](_0xdd62('0xc'),_0x25841f,_0x4af566[_0xdd62('0x10')][_0xdd62('0x11')]);return _0x424105(_0x4af566[_0xdd62('0x10')][_0xdd62('0x11')]);}logger[_0xdd62('0x10')]('MailApplication,\x20%s,\x20%s',_0x25841f,_0x4af566[_0xdd62('0x10')]['message']);return _0x57fb58(_0x4af566[_0xdd62('0x10')][_0xdd62('0x11')]);}else{logger['info'](_0xdd62('0xc'),_0x25841f,_0xdd62('0xe'));_0x57fb58(_0x4af566[_0xdd62('0x12')][_0xdd62('0x11')]);}})[_0xdd62('0x13')](function(_0x39b2c6){logger[_0xdd62('0x10')]('MailApplication,\x20%s,\x20%s',_0x25841f,_0x39b2c6);_0x424105(_0x39b2c6);});});}exports['UpdateMailApplication']=function(_0x201cc3){var _0x5c4906=this;return new Promise(function(_0x35ce5e,_0x3a1246){return db[_0xdd62('0x14')]['update'](_0x201cc3['body'],{'raw':_0x201cc3['options']?_0x201cc3[_0xdd62('0x15')][_0xdd62('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x201cc3[_0xdd62('0x15')]?_0x201cc3[_0xdd62('0x15')]['where']||null:null,'attributes':_0x201cc3[_0xdd62('0x15')]?_0x201cc3[_0xdd62('0x15')]['attributes']||null:null,'limit':_0x201cc3[_0xdd62('0x15')]?_0x201cc3[_0xdd62('0x15')][_0xdd62('0x17')]||null:null})['then'](function(_0x71c43f){logger[_0xdd62('0xb')](_0xdd62('0x18'),_0x201cc3);logger['debug'](_0xdd62('0x18'),_0x201cc3,JSON['stringify'](_0x71c43f));_0x35ce5e(_0x71c43f);})[_0xdd62('0x13')](function(_0x164d1d){logger[_0xdd62('0x10')](_0xdd62('0x18'),_0x164d1d[_0xdd62('0x11')],_0x201cc3);_0x3a1246(_0x5c4906[_0xdd62('0x10')](0x1f4,_0x164d1d['message']));});});};
\ No newline at end of file
+var _0xacae=['info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateMailApplication','MailApplication','body','options','raw','where','attributes','limit','then','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x4f3894,_0x474816){var _0x2cc234=function(_0x42c4f1){while(--_0x42c4f1){_0x4f3894['push'](_0x4f3894['shift']());}};_0x2cc234(++_0x474816);}(_0xacae,0x103));var _0xeaca=function(_0x5c1eba,_0x2a356c){_0x5c1eba=_0x5c1eba-0x0;var _0x46e2dc=_0xacae[_0x5c1eba];return _0x46e2dc;};'use strict';var _=require(_0xeaca('0x0'));var util=require('util');var moment=require(_0xeaca('0x1'));var BPromise=require('bluebird');var rs=require(_0xeaca('0x2'));var fs=require('fs');var Redis=require(_0xeaca('0x3'));var db=require(_0xeaca('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xeaca('0x5'))('rpc');var config=require(_0xeaca('0x6'));var jayson=require(_0xeaca('0x7'));var client=jayson[_0xeaca('0x8')][_0xeaca('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1a57cc,_0x297ff5,_0x531977){return new BPromise(function(_0x4eff49,_0xeb065b){return client[_0xeaca('0xa')](_0x1a57cc,_0x531977)['then'](function(_0x1b39c3){logger[_0xeaca('0xb')](_0xeaca('0xc'),_0x297ff5,_0xeaca('0xd'));logger[_0xeaca('0xe')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x297ff5,_0xeaca('0xd'),JSON[_0xeaca('0xf')](_0x1b39c3));if(_0x1b39c3['error']){if(_0x1b39c3[_0xeaca('0x10')][_0xeaca('0x11')]===0x1f4){logger[_0xeaca('0x10')]('MailApplication,\x20%s,\x20%s',_0x297ff5,_0x1b39c3[_0xeaca('0x10')][_0xeaca('0x12')]);return _0xeb065b(_0x1b39c3[_0xeaca('0x10')][_0xeaca('0x12')]);}logger[_0xeaca('0x10')](_0xeaca('0xc'),_0x297ff5,_0x1b39c3[_0xeaca('0x10')][_0xeaca('0x12')]);return _0x4eff49(_0x1b39c3[_0xeaca('0x10')][_0xeaca('0x12')]);}else{logger[_0xeaca('0xb')](_0xeaca('0xc'),_0x297ff5,'request\x20sent');_0x4eff49(_0x1b39c3[_0xeaca('0x13')][_0xeaca('0x12')]);}})[_0xeaca('0x14')](function(_0x431866){logger[_0xeaca('0x10')]('MailApplication,\x20%s,\x20%s',_0x297ff5,_0x431866);_0xeb065b(_0x431866);});});}exports[_0xeaca('0x15')]=function(_0x1c489c){var _0x156137=this;return new Promise(function(_0x274ace,_0x3aad33){return db[_0xeaca('0x16')]['update'](_0x1c489c[_0xeaca('0x17')],{'raw':_0x1c489c['options']?_0x1c489c[_0xeaca('0x18')][_0xeaca('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c489c[_0xeaca('0x18')]?_0x1c489c[_0xeaca('0x18')][_0xeaca('0x1a')]||null:null,'attributes':_0x1c489c[_0xeaca('0x18')]?_0x1c489c['options'][_0xeaca('0x1b')]||null:null,'limit':_0x1c489c['options']?_0x1c489c[_0xeaca('0x18')][_0xeaca('0x1c')]||null:null})[_0xeaca('0x1d')](function(_0x3b9296){logger['info'](_0xeaca('0x15'),_0x1c489c);logger[_0xeaca('0xe')](_0xeaca('0x15'),_0x1c489c,JSON['stringify'](_0x3b9296));_0x274ace(_0x3b9296);})['catch'](function(_0x185e8d){logger['error'](_0xeaca('0x15'),_0x185e8d['message'],_0x1c489c);_0x3aad33(_0x156137['error'](0x1f4,_0x185e8d[_0xeaca('0x12')]));});});};
\ No newline at end of file
index a7446ac..bd4ba21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x762f=['index','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','mailinteraction:addtags','put','tracked','mailinteraction:update','mail','mailinteraction:destroy','destroy','delete','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated'];(function(_0xed8fde,_0x217cea){var _0x1529af=function(_0x27c300){while(--_0x27c300){_0xed8fde['push'](_0xed8fde['shift']());}};_0x1529af(++_0x217cea);}(_0x762f,0x165));var _0xf762=function(_0x393733,_0x487cc9){_0x393733=_0x393733-0x0;var _0x400bce=_0x762f[_0x393733];return _0x400bce;};'use strict';var express=require(_0xf762('0x0'));var router=express[_0xf762('0x1')]();var auth=require(_0xf762('0x2'));var interaction=require(_0xf762('0x3'));var controller=require(_0xf762('0x4'));router[_0xf762('0x5')]('/',auth[_0xf762('0x6')](),controller[_0xf762('0x7')]);router[_0xf762('0x5')]('/describe',auth[_0xf762('0x6')](),controller[_0xf762('0x8')]);router['get'](_0xf762('0x9'),auth['isAuthenticated'](),controller[_0xf762('0xa')]);router[_0xf762('0x5')](_0xf762('0xb'),auth['isAuthenticated'](),controller[_0xf762('0xc')]);router[_0xf762('0x5')](_0xf762('0xd'),auth['isAuthenticated'](),controller['download']);router[_0xf762('0xe')]('/',auth[_0xf762('0x6')](),controller[_0xf762('0xf')]);router[_0xf762('0xe')](_0xf762('0xb'),auth[_0xf762('0x6')](),controller[_0xf762('0x10')]);router[_0xf762('0xe')](_0xf762('0x11'),auth[_0xf762('0x6')](),interaction['tracked']('mail',_0xf762('0x12')),controller['addTags']);router[_0xf762('0x13')]('/:id',auth['isAuthenticated'](),interaction[_0xf762('0x14')]('mail',_0xf762('0x15')),controller['update']);router['delete'](_0xf762('0x9'),auth['isAuthenticated'](),interaction[_0xf762('0x14')](_0xf762('0x16'),_0xf762('0x17')),controller[_0xf762('0x18')]);router[_0xf762('0x19')](_0xf762('0x11'),auth['isAuthenticated'](),controller[_0xf762('0x1a')]);module[_0xf762('0x1b')]=router;
\ No newline at end of file
+var _0x8a6d=['isAuthenticated','index','show','/:id/messages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','/:id','delete','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x8a6d,0xb0));var _0xd8a6=function(_0x46a6c0,_0x1a16b8){_0x46a6c0=_0x46a6c0-0x0;var _0x5c6c1c=_0x8a6d[_0x46a6c0];return _0x5c6c1c;};'use strict';var express=require(_0xd8a6('0x0'));var router=express[_0xd8a6('0x1')]();var auth=require(_0xd8a6('0x2'));var interaction=require(_0xd8a6('0x3'));var controller=require(_0xd8a6('0x4'));router[_0xd8a6('0x5')]('/',auth[_0xd8a6('0x6')](),controller[_0xd8a6('0x7')]);router[_0xd8a6('0x5')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd8a6('0x5')]('/:id',auth[_0xd8a6('0x6')](),controller[_0xd8a6('0x8')]);router[_0xd8a6('0x5')](_0xd8a6('0x9'),auth[_0xd8a6('0x6')](),controller['getMessages']);router[_0xd8a6('0x5')](_0xd8a6('0xa'),auth[_0xd8a6('0x6')](),controller[_0xd8a6('0xb')]);router['post']('/',auth[_0xd8a6('0x6')](),controller[_0xd8a6('0xc')]);router[_0xd8a6('0xd')](_0xd8a6('0x9'),auth['isAuthenticated'](),controller[_0xd8a6('0xe')]);router[_0xd8a6('0xd')](_0xd8a6('0xf'),auth['isAuthenticated'](),interaction[_0xd8a6('0x10')](_0xd8a6('0x11'),_0xd8a6('0x12')),controller[_0xd8a6('0x13')]);router[_0xd8a6('0x14')]('/:id',auth[_0xd8a6('0x6')](),interaction[_0xd8a6('0x10')](_0xd8a6('0x11'),_0xd8a6('0x15')),controller[_0xd8a6('0x16')]);router['delete'](_0xd8a6('0x17'),auth['isAuthenticated'](),interaction[_0xd8a6('0x10')](_0xd8a6('0x11'),'mailinteraction:destroy'),controller['destroy']);router[_0xd8a6('0x18')](_0xd8a6('0xf'),auth['isAuthenticated'](),controller[_0xd8a6('0x19')]);module['exports']=router;
\ No newline at end of file
index 8efeacc..acb5fc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17da=['exports','BOOLEAN','DATE','STRING','TEXT','long','ENUM','out','sequelize'];(function(_0x246f5e,_0x2460db){var _0x1a87be=function(_0x401eef){while(--_0x401eef){_0x246f5e['push'](_0x246f5e['shift']());}};_0x1a87be(++_0x2460db);}(_0x17da,0x167));var _0xa17d=function(_0x3e74a2,_0x24c047){_0x3e74a2=_0x3e74a2-0x0;var _0x23e6c8=_0x17da[_0x3e74a2];return _0x23e6c8;};'use strict';var Sequelize=require(_0xa17d('0x0'));var iconv=require('iconv');module[_0xa17d('0x1')]={'closed':{'type':Sequelize[_0xa17d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa17d('0x3')]},'disposition':{'type':Sequelize[_0xa17d('0x4')]},'secondDisposition':{'type':Sequelize[_0xa17d('0x4')]},'thirdDisposition':{'type':Sequelize[_0xa17d('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0xa17d('0x4')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xa17d('0x5')](_0xa17d('0x6'))},'subject':{'type':Sequelize[_0xa17d('0x5')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xa17d('0x3')]},'substatus':{'type':Sequelize[_0xa17d('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0xa17d('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xa17d('0x7')]('in',_0xa17d('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa17d('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xa17d('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xac37=['iconv','DATE','STRING','TEXT','BOOLEAN','ENUM','sequelize'];(function(_0xe1c774,_0xa8126d){var _0x94c042=function(_0x188c47){while(--_0x188c47){_0xe1c774['push'](_0xe1c774['shift']());}};_0x94c042(++_0xa8126d);}(_0xac37,0xca));var _0x7ac3=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0xac37[_0x1beef3];return _0x5af964;};'use strict';var Sequelize=require(_0x7ac3('0x0'));var iconv=require(_0x7ac3('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7ac3('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x7ac3('0x3')]},'thirdDisposition':{'type':Sequelize[_0x7ac3('0x3')]},'note':{'type':Sequelize[_0x7ac3('0x3')]},'inReplyTo':{'type':Sequelize[_0x7ac3('0x3')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x7ac3('0x4')]('long')},'subject':{'type':Sequelize[_0x7ac3('0x4')]()},'attach':{'type':Sequelize[_0x7ac3('0x5')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x7ac3('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0x7ac3('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x7ac3('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7ac3('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x7ac3('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7ac3('0x5')],'defaultValue':![]}};
\ No newline at end of file
index 7f108bd..163e6f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd97a=['format','findAll','inlineCss','true','rows','addTags','omit','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','files','transcript-%d-%s.zip','attachments','push','Attachments','subject','createdAt','Messages','each','missing.recipient@your.company.com','decode','headers','bcc','Bcc','basename','existsSync','type','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','lodash','juice','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','./mailInteraction.socket','register','sendStatus','status','end','json','offset','limit','count','set','Content-Range','update','then','error','stack','name','map','MailInteraction','rawAttributes','key','getOptions','mail','query','catch','params','keys','intersection','model','fields','attributes','length','include','merge','create','body','destroy','find','describe','addMessage','MailMessage','ids','getMessages','hasOwnProperty','order','sort','where','filters','pick','MailInteractionId','filter','split'];(function(_0x339408,_0xf72aef){var _0x50adc2=function(_0x4ab6be){while(--_0x4ab6be){_0x339408['push'](_0x339408['shift']());}};_0x50adc2(++_0xf72aef);}(_0xd97a,0x1d0));var _0xad97=function(_0x2e092e,_0x1bbef3){_0x2e092e=_0x2e092e-0x0;var _0x4d4f52=_0xd97a[_0x2e092e];return _0x4d4f52;};'use strict';var emlformat=require(_0xad97('0x0'));var rimraf=require(_0xad97('0x1'));var zipdir=require(_0xad97('0x2'));var moment=require(_0xad97('0x3'));var BPromise=require('bluebird');var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xad97('0x4'));var juice=require(_0xad97('0x5'));var Redis=require(_0xad97('0x6'));var interaction=require(_0xad97('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0xad97('0x8'))(_0xad97('0x9'));var config=require(_0xad97('0xa'));var db=require(_0xad97('0xb'))['db'];var htmlEntities=require(_0xad97('0xc'));config[_0xad97('0xd')]=_[_0xad97('0xe')](config[_0xad97('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad97('0xd')]));require(_0xad97('0xf'))[_0xad97('0x10')](socket);function respondWithStatusCode(_0x2b6be6,_0x4fd98e){_0x4fd98e=_0x4fd98e||0xcc;return function(_0x24a716){if(_0x24a716){return _0x2b6be6[_0xad97('0x11')](_0x4fd98e);}return _0x2b6be6[_0xad97('0x12')](_0x4fd98e)[_0xad97('0x13')]();};}function respondWithResult(_0x3dfad0,_0x37ae9a){_0x37ae9a=_0x37ae9a||0xc8;return function(_0x58eae3){if(_0x58eae3){return _0x3dfad0[_0xad97('0x12')](_0x37ae9a)[_0xad97('0x14')](_0x58eae3);}};}function respondWithFilteredResult(_0x5f51a3,_0x62b6a8){return function(_0x2b02b0){if(_0x2b02b0){var _0x646581=typeof _0x62b6a8[_0xad97('0x15')]==='undefined'&&typeof _0x62b6a8[_0xad97('0x16')]==='undefined';var _0xabea09=_0x2b02b0[_0xad97('0x17')];var _0xc5c9cb=_0x646581?0x0:_0x62b6a8[_0xad97('0x15')];var _0x16ff40=_0x646581?_0x2b02b0['count']:_0x62b6a8[_0xad97('0x15')]+_0x62b6a8[_0xad97('0x16')];var _0x599ef9;if(_0x16ff40>=_0xabea09){_0x16ff40=_0xabea09;_0x599ef9=0xc8;}else{_0x599ef9=0xce;}_0x5f51a3['status'](_0x599ef9);return _0x5f51a3[_0xad97('0x18')](_0xad97('0x19'),_0xc5c9cb+'-'+_0x16ff40+'/'+_0xabea09)[_0xad97('0x14')](_0x2b02b0);}return null;};}function saveUpdates(_0x2e8c11){return function(_0x1ea7eb){if(_0x1ea7eb){return _0x1ea7eb[_0xad97('0x1a')](_0x2e8c11)[_0xad97('0x1b')](function(_0x5419ec){return _0x5419ec;});}return null;};}function removeEntity(_0x5eb2ec){return function(_0x36a1c1){if(_0x36a1c1){return _0x36a1c1['destroy']()['then'](function(){_0x5eb2ec[_0xad97('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x73d192){return function(_0xbbdafc){if(!_0xbbdafc){_0x73d192[_0xad97('0x11')](0x194);}return _0xbbdafc;};}function handleError(_0x478cbf,_0x198241){_0x198241=_0x198241||0x1f4;return function(_0x543398){logger[_0xad97('0x1c')](_0x543398[_0xad97('0x1d')]);if(_0x543398[_0xad97('0x1e')]){delete _0x543398[_0xad97('0x1e')];}_0x478cbf[_0xad97('0x12')](_0x198241)['send'](_0x543398);};}exports['index']=function(_0x3bfe5,_0x256055){var _0x2562d1={};var _0x292b16=_[_0xad97('0x1f')](db[_0xad97('0x20')][_0xad97('0x21')],function(_0x496749){return{'name':_0x496749['fieldName'],'type':_0x496749['type'][_0xad97('0x22')]};});_0x2562d1=qs[_0xad97('0x23')](_0x292b16,_0x3bfe5);return interaction['findAll'](_0xad97('0x24'),_0x3bfe5[_0xad97('0x25')],_0x3bfe5['user'],_0x2562d1,_0x292b16)[_0xad97('0x1b')](respondWithFilteredResult(_0x256055,_0x2562d1))[_0xad97('0x26')](handleError(_0x256055,null));};exports['show']=function(_0x33cb08,_0x213776){var _0x548160={'raw':![],'where':{'id':_0x33cb08[_0xad97('0x27')]['id']}},_0x4837a8={};_0x4837a8['model']=_[_0xad97('0x28')](db[_0xad97('0x20')]['rawAttributes']);_0x4837a8['query']=_['keys'](_0x33cb08[_0xad97('0x25')]);_0x4837a8['filters']=_[_0xad97('0x29')](_0x4837a8[_0xad97('0x2a')],_0x4837a8[_0xad97('0x25')]);_0x548160['attributes']=_['intersection'](_0x4837a8['model'],qs[_0xad97('0x2b')](_0x33cb08['query'][_0xad97('0x2b')]));_0x548160[_0xad97('0x2c')]=_0x548160[_0xad97('0x2c')][_0xad97('0x2d')]?_0x548160[_0xad97('0x2c')]:_0x4837a8[_0xad97('0x2a')];if(_0x33cb08[_0xad97('0x25')]['includeAll']){_0x548160[_0xad97('0x2e')]=[{'all':!![]}];}_0x548160=_[_0xad97('0x2f')]({},_0x548160,_0x33cb08['options']);return db['MailInteraction']['find'](_0x548160)[_0xad97('0x1b')](handleEntityNotFound(_0x213776,null))[_0xad97('0x1b')](respondWithResult(_0x213776,null))[_0xad97('0x26')](handleError(_0x213776,null));};exports[_0xad97('0x30')]=function(_0x4c7362,_0x2ada12){return db[_0xad97('0x20')][_0xad97('0x30')](_0x4c7362[_0xad97('0x31')],{})['then'](respondWithResult(_0x2ada12,0xc9))[_0xad97('0x26')](handleError(_0x2ada12,null));};exports['update']=function(_0x37cea0,_0x1ad04c){if(_0x37cea0[_0xad97('0x31')]['id']){delete _0x37cea0[_0xad97('0x31')]['id'];}return db['MailInteraction']['find']({'where':{'id':_0x37cea0[_0xad97('0x27')]['id']}})[_0xad97('0x1b')](handleEntityNotFound(_0x1ad04c,null))['then'](saveUpdates(_0x37cea0[_0xad97('0x31')],null))[_0xad97('0x1b')](respondWithResult(_0x1ad04c,null))[_0xad97('0x26')](handleError(_0x1ad04c,null));};exports[_0xad97('0x32')]=function(_0x5a87da,_0x20b95d){return db[_0xad97('0x20')][_0xad97('0x33')]({'where':{'id':_0x5a87da['params']['id']}})[_0xad97('0x1b')](handleEntityNotFound(_0x20b95d,null))[_0xad97('0x1b')](removeEntity(_0x20b95d,null))['catch'](handleError(_0x20b95d,null));};exports[_0xad97('0x34')]=function(_0xf2ade5,_0x2bc365){return db[_0xad97('0x20')][_0xad97('0x34')]()[_0xad97('0x1b')](respondWithResult(_0x2bc365,null))['catch'](handleError(_0x2bc365,null));};exports[_0xad97('0x35')]=function(_0x1e4b0c,_0x549306){return db[_0xad97('0x36')][_0xad97('0x33')]({'where':{'id':_0x1e4b0c['params']['id']}})[_0xad97('0x1b')](handleEntityNotFound(_0x549306,null))[_0xad97('0x1b')](function(_0x5429c6){if(_0x5429c6){return _0x5429c6[_0xad97('0x35')](_0x1e4b0c[_0xad97('0x31')][_0xad97('0x37')],_['omit'](_0x1e4b0c['body'],[_0xad97('0x37'),'id'])||{});}})[_0xad97('0x1b')](respondWithResult(_0x549306,null))['catch'](handleError(_0x549306,null));};exports[_0xad97('0x38')]=function(_0x3a4da0,_0x4a1526){var _0x733f84={'raw':![],'where':{}};var _0x5a7570={};var _0x9b3ad9={'count':0x0,'rows':[]};return db[_0xad97('0x20')]['findOne']({'where':{'id':_0x3a4da0[_0xad97('0x27')]['id']}})['then'](handleEntityNotFound(_0x4a1526,null))[_0xad97('0x1b')](function(_0x3c4836){if(_0x3c4836){_0x5a7570[_0xad97('0x2a')]=_[_0xad97('0x28')](db[_0xad97('0x36')][_0xad97('0x21')]);_0x5a7570[_0xad97('0x25')]=_[_0xad97('0x28')](_0x3a4da0[_0xad97('0x25')]);_0x5a7570['filters']=_[_0xad97('0x29')](_0x5a7570[_0xad97('0x2a')],_0x5a7570['query']);_0x733f84[_0xad97('0x2c')]=_[_0xad97('0x29')](_0x5a7570[_0xad97('0x2a')],qs[_0xad97('0x2b')](_0x3a4da0['query'][_0xad97('0x2b')]));_0x733f84[_0xad97('0x2c')]=_0x733f84[_0xad97('0x2c')]['length']?_0x733f84['attributes']:_0x5a7570[_0xad97('0x2a')];if(!_0x3a4da0['query'][_0xad97('0x39')]('nolimit')){_0x733f84[_0xad97('0x16')]=qs[_0xad97('0x16')](_0x3a4da0['query'][_0xad97('0x16')]);_0x733f84[_0xad97('0x15')]=qs[_0xad97('0x15')](_0x3a4da0[_0xad97('0x25')]['offset']);}_0x733f84[_0xad97('0x3a')]=qs['sort'](_0x3a4da0[_0xad97('0x25')][_0xad97('0x3b')]);_0x733f84[_0xad97('0x3c')]=qs[_0xad97('0x3d')](_[_0xad97('0x3e')](_0x3a4da0[_0xad97('0x25')],_0x5a7570['filters']));_0x733f84['where'][_0xad97('0x3f')]=_0x3c4836['id'];if(_0x3a4da0[_0xad97('0x25')][_0xad97('0x40')]){_0x733f84['where']=_[_0xad97('0x2f')](_0x733f84[_0xad97('0x3c')],{'$or':_['map'](_0x733f84[_0xad97('0x2c')],function(_0x12e6fc){var _0x27205a={};_0x27205a[_0x12e6fc]={'$like':'%'+_0x3a4da0[_0xad97('0x25')][_0xad97('0x40')]+'%'};return _0x27205a;})});}if(_0x3a4da0[_0xad97('0x25')]['$gte']){var _0x5364b7=_0x3a4da0[_0xad97('0x25')]['$gte'][_0xad97('0x41')](',');var _0xa2f700={};_0xa2f700[_0x5364b7[0x0]]={'$gte':moment(_0x5364b7[0x1])[_0xad97('0x42')]('YYYY-MM-DD\x20HH:mm:ss')};_0x733f84[_0xad97('0x3c')]=_[_0xad97('0x2f')](_0x733f84[_0xad97('0x3c')],_0xa2f700);}_0x733f84=_['merge']({},_0x733f84,_0x3a4da0['options']);return db[_0xad97('0x36')]['count']({'where':_0x733f84[_0xad97('0x3c')]})['then'](function(_0x1d34ed){_0x9b3ad9['count']=_0x1d34ed;if(_0x3a4da0[_0xad97('0x25')]['includeAll']){_0x733f84['include']=[{'all':!![]}];}return db[_0xad97('0x36')][_0xad97('0x43')](_0x733f84);})[_0xad97('0x1b')](function(_0x21d1ed){if(_0x3a4da0[_0xad97('0x25')][_0xad97('0x44')]===_0xad97('0x45')){for(var _0x2d4354=0x0;_0x2d4354<_0x21d1ed[_0xad97('0x2d')];_0x2d4354++){_0x21d1ed[_0x2d4354][_0xad97('0x31')]=juice(_0x21d1ed[_0x2d4354][_0xad97('0x31')]);}}_0x9b3ad9[_0xad97('0x46')]=_0x21d1ed;return _0x9b3ad9;});}})[_0xad97('0x1b')](respondWithFilteredResult(_0x4a1526,_0x733f84))[_0xad97('0x26')](handleError(_0x4a1526,null));};exports[_0xad97('0x47')]=function(_0x4bddff,_0x315dd1){return db[_0xad97('0x20')][_0xad97('0x33')]({'where':{'id':_0x4bddff[_0xad97('0x27')]['id']}})['then'](handleEntityNotFound(_0x315dd1,null))['then'](function(_0x58317a){if(_0x58317a){return _0x58317a['setTags'](_0x4bddff[_0xad97('0x31')][_0xad97('0x37')],_[_0xad97('0x48')](_0x4bddff['body'],['ids','id'])||{})[_0xad97('0x49')](function(){return db[_0xad97('0x4a')][_0xad97('0x43')]({'attributes':['id','name',_0xad97('0x4b')],'where':{'id':_0x4bddff[_0xad97('0x31')][_0xad97('0x37')]}});})['then'](function(_0x568e5b){socket[_0xad97('0x4c')](_0xad97('0x4d'),{'id':Number(_0x4bddff[_0xad97('0x27')]['id']),'tags':_0x568e5b||[]});return{'id':Number(_0x4bddff[_0xad97('0x27')]['id']),'tags':_0x568e5b||[]};});}})[_0xad97('0x1b')](respondWithResult(_0x315dd1,null))['catch'](handleError(_0x315dd1,null));};exports[_0xad97('0x4e')]=function(_0x396bc7,_0x4fa407){return db[_0xad97('0x20')][_0xad97('0x33')]({'where':{'id':_0x396bc7[_0xad97('0x27')]['id']}})[_0xad97('0x1b')](handleEntityNotFound(_0x4fa407,null))[_0xad97('0x1b')](function(_0x2c8084){if(_0x2c8084){return _0x2c8084[_0xad97('0x4e')](_0x396bc7[_0xad97('0x25')][_0xad97('0x37')]);}})[_0xad97('0x1b')](respondWithStatusCode(_0x4fa407,null))[_0xad97('0x26')](handleError(_0x4fa407,null));};exports[_0xad97('0x4f')]=function(_0x398bb8,_0x4b8d9c){var _0x1afbe2=moment()[_0xad97('0x50')]()[_0xad97('0x51')]();var _0x54a2dc=path[_0xad97('0x52')](config[_0xad97('0x53')],'server',_0xad97('0x54'),'tmp');var _0x2dee45=path[_0xad97('0x52')](config[_0xad97('0x53')],'server',_0xad97('0x54'),'attachments');var _0xf85345=path['join'](_0x54a2dc,_0x1afbe2);var _0x11c57c=util['format'](_0xad97('0x55'),_0x398bb8[_0xad97('0x27')]['id'],_0x1afbe2);var _0x31ab28=path[_0xad97('0x52')](_0x54a2dc,_0x11c57c);var _0x5610f7=[];if(_0x398bb8['query'][_0xad97('0x56')]){_0x5610f7[_0xad97('0x57')]({'model':db['Attachment'],'as':_0xad97('0x58'),'raw':!![]});}var _0x30b8b0=[{'model':db[_0xad97('0x36')],'as':'Messages','attributes':['id',_0xad97('0x31'),'from','to','cc','bcc',_0xad97('0x59'),_0xad97('0x5a')],'where':{'secret':![]},'order':qs[_0xad97('0x3b')]('id'),'include':_0x5610f7}];return db[_0xad97('0x20')][_0xad97('0x33')]({'where':{'id':_0x398bb8[_0xad97('0x27')]['id']},'include':_0x30b8b0})['then'](handleEntityNotFound(_0x4b8d9c,null))[_0xad97('0x1b')](function(_0x2100ba){if(_0x2100ba&&_0x2100ba[_0xad97('0x5b')]){var _0x1cc52a=_0x2100ba['get']({'plain':!![]});fs['mkdirSync'](_0xf85345);return BPromise[_0xad97('0x5c')](_0x1cc52a[_0xad97('0x5b')],function(_0x204e2c,_0x25c6e6){var _0x14ffdc={'from':_0x204e2c['from'],'to':_0x204e2c['to']||_0xad97('0x5d'),'subject':_0x204e2c[_0xad97('0x59')],'html':htmlEntities[_0xad97('0x5e')](_0x204e2c[_0xad97('0x31')]),'headers':{'Date':moment(_0x204e2c[_0xad97('0x5a')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x204e2c['cc']){_0x14ffdc[_0xad97('0x5f')]['Cc']=_0x204e2c['cc'];}if(_0x204e2c[_0xad97('0x60')]){_0x14ffdc[_0xad97('0x5f')][_0xad97('0x61')]=_0x204e2c[_0xad97('0x60')];}return new BPromise(function(_0x1b0d6c,_0x183806){if(_0x204e2c[_0xad97('0x58')]){for(var _0x136804=0x0;_0x136804<_0x204e2c[_0xad97('0x58')]['length'];_0x136804++){var _0x4d488f=_0x204e2c[_0xad97('0x58')][_0x136804];var _0x2bcab4=path[_0xad97('0x52')](_0x2dee45,_0x4d488f[_0xad97('0x62')]);if(fs[_0xad97('0x63')](_0x2bcab4)){_0x14ffdc[_0xad97('0x56')][_0xad97('0x57')]({'name':_0x4d488f[_0xad97('0x1e')],'contentType':_0x4d488f[_0xad97('0x64')],'data':fs[_0xad97('0x65')](_0x2bcab4)});}}}emlformat[_0xad97('0x66')](_0x14ffdc,function(_0x4a3a50,_0x2880f3){if(_0x4a3a50)return _0x183806(_0x4a3a50);fs[_0xad97('0x67')](path[_0xad97('0x52')](_0xf85345,util['format'](_0xad97('0x68'),_0x25c6e6)),_0x2880f3);return _0x1b0d6c(_0x2880f3);});});})[_0xad97('0x1b')](function(){return new BPromise(function(_0x5684eb,_0x3671f7){zipdir(_0xf85345,{'saveTo':_0x31ab28},function(_0x4c12f9,_0x2877b2){if(_0x4c12f9)return _0x3671f7(_0x4c12f9);return _0x5684eb(_0x2877b2);});})[_0xad97('0x1b')](function(){return new BPromise(function(_0x218ff4,_0xae48a4){rimraf(_0xf85345,function(_0x1658f5){if(_0x1658f5)_0xae48a4(_0x1658f5);return _0x218ff4();});});})['then'](function(){return _0x4b8d9c[_0xad97('0x4f')](_0x31ab28,_0x11c57c,function(_0x301276){if(!_0x301276)fs[_0xad97('0x69')](_0x31ab28);});});});}else{return _0x4b8d9c[_0xad97('0x11')](0xc8);}})[_0xad97('0x26')](handleError(_0x4b8d9c,null));};
\ No newline at end of file
+var _0x32d7=['true','rows','spread','color','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','subject','get','mkdirSync','each','missing.recipient@your.company.com','decode','createdAt','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','util','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','html-entities','defaults','redis','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','destroy','error','stack','name','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail','query','user','then','catch','params','model','keys','intersection','attributes','includeAll','include','find','create','body','describe','addMessage','ids','MailMessage','fields','length','nolimit','order','sort','where','filters','pick','MailInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','inlineCss'];(function(_0x413c51,_0x40d739){var _0x5c37eb=function(_0x21b14e){while(--_0x21b14e){_0x413c51['push'](_0x413c51['shift']());}};_0x5c37eb(++_0x40d739);}(_0x32d7,0x16b));var _0x732d=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0x32d7[_0x481bf7];return _0x461787;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x732d('0x0'));var path=require('path');var fs=require('fs');var _=require('lodash');var juice=require(_0x732d('0x1'));var Redis=require(_0x732d('0x2'));var interaction=require(_0x732d('0x3'));var qs=require(_0x732d('0x4'));var logger=require(_0x732d('0x5'))('api');var config=require(_0x732d('0x6'));var db=require(_0x732d('0x7'))['db'];var htmlEntities=require(_0x732d('0x8'));config['redis']=_[_0x732d('0x9')](config[_0x732d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x732d('0xb'))(new Redis(config['redis']));require(_0x732d('0xc'))[_0x732d('0xd')](socket);function respondWithStatusCode(_0x37432b,_0x53487b){_0x53487b=_0x53487b||0xcc;return function(_0x255135){if(_0x255135){return _0x37432b[_0x732d('0xe')](_0x53487b);}return _0x37432b[_0x732d('0xf')](_0x53487b)[_0x732d('0x10')]();};}function respondWithResult(_0x729d89,_0x5ef4b2){_0x5ef4b2=_0x5ef4b2||0xc8;return function(_0x458c45){if(_0x458c45){return _0x729d89[_0x732d('0xf')](_0x5ef4b2)[_0x732d('0x11')](_0x458c45);}};}function respondWithFilteredResult(_0x1a6705,_0xac16e){return function(_0x29ed92){if(_0x29ed92){var _0x277d8c=typeof _0xac16e['offset']===_0x732d('0x12')&&typeof _0xac16e[_0x732d('0x13')]===_0x732d('0x12');var _0x22d8df=_0x29ed92[_0x732d('0x14')];var _0x14f8f2=_0x277d8c?0x0:_0xac16e[_0x732d('0x15')];var _0x58d0a2=_0x277d8c?_0x29ed92[_0x732d('0x14')]:_0xac16e['offset']+_0xac16e[_0x732d('0x13')];var _0x53cffd;if(_0x58d0a2>=_0x22d8df){_0x58d0a2=_0x22d8df;_0x53cffd=0xc8;}else{_0x53cffd=0xce;}_0x1a6705[_0x732d('0xf')](_0x53cffd);return _0x1a6705[_0x732d('0x16')]('Content-Range',_0x14f8f2+'-'+_0x58d0a2+'/'+_0x22d8df)['json'](_0x29ed92);}return null;};}function saveUpdates(_0x1a59eb){return function(_0x5bbb3b){if(_0x5bbb3b){return _0x5bbb3b['update'](_0x1a59eb)['then'](function(_0x3c0391){return _0x3c0391;});}return null;};}function removeEntity(_0x1ef83b){return function(_0x2b8739){if(_0x2b8739){return _0x2b8739[_0x732d('0x17')]()['then'](function(){_0x1ef83b[_0x732d('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20abb8){return function(_0x5e7456){if(!_0x5e7456){_0x20abb8[_0x732d('0xe')](0x194);}return _0x5e7456;};}function handleError(_0x4995b8,_0x427a60){_0x427a60=_0x427a60||0x1f4;return function(_0x12b73f){logger[_0x732d('0x18')](_0x12b73f[_0x732d('0x19')]);if(_0x12b73f[_0x732d('0x1a')]){delete _0x12b73f[_0x732d('0x1a')];}_0x4995b8['status'](_0x427a60)[_0x732d('0x1b')](_0x12b73f);};}exports[_0x732d('0x1c')]=function(_0x9d0f44,_0x4c43a1){var _0x3e8a7f={};var _0x2c4b9d=_[_0x732d('0x1d')](db[_0x732d('0x1e')][_0x732d('0x1f')],function(_0x9048b2){return{'name':_0x9048b2[_0x732d('0x20')],'type':_0x9048b2[_0x732d('0x21')][_0x732d('0x22')]};});_0x3e8a7f=qs[_0x732d('0x23')](_0x2c4b9d,_0x9d0f44);return interaction[_0x732d('0x24')](_0x732d('0x25'),_0x9d0f44[_0x732d('0x26')],_0x9d0f44[_0x732d('0x27')],_0x3e8a7f,_0x2c4b9d)[_0x732d('0x28')](respondWithFilteredResult(_0x4c43a1,_0x3e8a7f))[_0x732d('0x29')](handleError(_0x4c43a1,null));};exports['show']=function(_0x3b2e66,_0x256554){var _0x518efd={'raw':![],'where':{'id':_0x3b2e66[_0x732d('0x2a')]['id']}},_0x1a60fb={};_0x1a60fb[_0x732d('0x2b')]=_[_0x732d('0x2c')](db[_0x732d('0x1e')]['rawAttributes']);_0x1a60fb['query']=_[_0x732d('0x2c')](_0x3b2e66['query']);_0x1a60fb['filters']=_[_0x732d('0x2d')](_0x1a60fb[_0x732d('0x2b')],_0x1a60fb[_0x732d('0x26')]);_0x518efd['attributes']=_['intersection'](_0x1a60fb['model'],qs['fields'](_0x3b2e66['query']['fields']));_0x518efd[_0x732d('0x2e')]=_0x518efd[_0x732d('0x2e')]['length']?_0x518efd[_0x732d('0x2e')]:_0x1a60fb[_0x732d('0x2b')];if(_0x3b2e66[_0x732d('0x26')][_0x732d('0x2f')]){_0x518efd[_0x732d('0x30')]=[{'all':!![]}];}_0x518efd=_['merge']({},_0x518efd,_0x3b2e66['options']);return db[_0x732d('0x1e')][_0x732d('0x31')](_0x518efd)[_0x732d('0x28')](handleEntityNotFound(_0x256554,null))[_0x732d('0x28')](respondWithResult(_0x256554,null))[_0x732d('0x29')](handleError(_0x256554,null));};exports[_0x732d('0x32')]=function(_0x520c5b,_0x2a4171){return db[_0x732d('0x1e')]['create'](_0x520c5b[_0x732d('0x33')],{})[_0x732d('0x28')](respondWithResult(_0x2a4171,0xc9))[_0x732d('0x29')](handleError(_0x2a4171,null));};exports['update']=function(_0xcba347,_0x5befb7){if(_0xcba347[_0x732d('0x33')]['id']){delete _0xcba347[_0x732d('0x33')]['id'];}return db[_0x732d('0x1e')][_0x732d('0x31')]({'where':{'id':_0xcba347[_0x732d('0x2a')]['id']}})[_0x732d('0x28')](handleEntityNotFound(_0x5befb7,null))['then'](saveUpdates(_0xcba347[_0x732d('0x33')],null))[_0x732d('0x28')](respondWithResult(_0x5befb7,null))[_0x732d('0x29')](handleError(_0x5befb7,null));};exports[_0x732d('0x17')]=function(_0x4a918a,_0x11393c){return db[_0x732d('0x1e')][_0x732d('0x31')]({'where':{'id':_0x4a918a[_0x732d('0x2a')]['id']}})[_0x732d('0x28')](handleEntityNotFound(_0x11393c,null))[_0x732d('0x28')](removeEntity(_0x11393c,null))[_0x732d('0x29')](handleError(_0x11393c,null));};exports['describe']=function(_0xb38550,_0x3e5241){return db[_0x732d('0x1e')][_0x732d('0x34')]()[_0x732d('0x28')](respondWithResult(_0x3e5241,null))[_0x732d('0x29')](handleError(_0x3e5241,null));};exports[_0x732d('0x35')]=function(_0x51df3d,_0x2dbe32){return db['MailMessage'][_0x732d('0x31')]({'where':{'id':_0x51df3d[_0x732d('0x2a')]['id']}})[_0x732d('0x28')](handleEntityNotFound(_0x2dbe32,null))['then'](function(_0x44a1fb){if(_0x44a1fb){return _0x44a1fb['addMessage'](_0x51df3d[_0x732d('0x33')][_0x732d('0x36')],_['omit'](_0x51df3d[_0x732d('0x33')],[_0x732d('0x36'),'id'])||{});}})[_0x732d('0x28')](respondWithResult(_0x2dbe32,null))[_0x732d('0x29')](handleError(_0x2dbe32,null));};exports['getMessages']=function(_0x4c96a4,_0x76c12e){var _0x5a779f={'raw':![],'where':{}};var _0xdd18c8={};var _0x36425e={'count':0x0,'rows':[]};return db[_0x732d('0x1e')]['findOne']({'where':{'id':_0x4c96a4[_0x732d('0x2a')]['id']}})[_0x732d('0x28')](handleEntityNotFound(_0x76c12e,null))[_0x732d('0x28')](function(_0x332fd2){if(_0x332fd2){_0xdd18c8[_0x732d('0x2b')]=_[_0x732d('0x2c')](db[_0x732d('0x37')][_0x732d('0x1f')]);_0xdd18c8[_0x732d('0x26')]=_[_0x732d('0x2c')](_0x4c96a4[_0x732d('0x26')]);_0xdd18c8['filters']=_[_0x732d('0x2d')](_0xdd18c8[_0x732d('0x2b')],_0xdd18c8[_0x732d('0x26')]);_0x5a779f[_0x732d('0x2e')]=_['intersection'](_0xdd18c8[_0x732d('0x2b')],qs['fields'](_0x4c96a4[_0x732d('0x26')][_0x732d('0x38')]));_0x5a779f['attributes']=_0x5a779f['attributes'][_0x732d('0x39')]?_0x5a779f[_0x732d('0x2e')]:_0xdd18c8[_0x732d('0x2b')];if(!_0x4c96a4[_0x732d('0x26')]['hasOwnProperty'](_0x732d('0x3a'))){_0x5a779f[_0x732d('0x13')]=qs[_0x732d('0x13')](_0x4c96a4['query'][_0x732d('0x13')]);_0x5a779f['offset']=qs[_0x732d('0x15')](_0x4c96a4[_0x732d('0x26')]['offset']);}_0x5a779f[_0x732d('0x3b')]=qs[_0x732d('0x3c')](_0x4c96a4[_0x732d('0x26')][_0x732d('0x3c')]);_0x5a779f[_0x732d('0x3d')]=qs[_0x732d('0x3e')](_[_0x732d('0x3f')](_0x4c96a4[_0x732d('0x26')],_0xdd18c8[_0x732d('0x3e')]));_0x5a779f[_0x732d('0x3d')][_0x732d('0x40')]=_0x332fd2['id'];if(_0x4c96a4[_0x732d('0x26')][_0x732d('0x41')]){_0x5a779f[_0x732d('0x3d')]=_[_0x732d('0x42')](_0x5a779f[_0x732d('0x3d')],{'$or':_[_0x732d('0x1d')](_0x5a779f[_0x732d('0x2e')],function(_0x6c584){var _0x45b31b={};_0x45b31b[_0x6c584]={'$like':'%'+_0x4c96a4[_0x732d('0x26')][_0x732d('0x41')]+'%'};return _0x45b31b;})});}if(_0x4c96a4['query'][_0x732d('0x43')]){var _0x3f5854=_0x4c96a4[_0x732d('0x26')][_0x732d('0x43')][_0x732d('0x44')](',');var _0x375d96={};_0x375d96[_0x3f5854[0x0]]={'$gte':moment(_0x3f5854[0x1])[_0x732d('0x45')](_0x732d('0x46'))};_0x5a779f['where']=_[_0x732d('0x42')](_0x5a779f[_0x732d('0x3d')],_0x375d96);}_0x5a779f=_[_0x732d('0x42')]({},_0x5a779f,_0x4c96a4[_0x732d('0x47')]);return db[_0x732d('0x37')][_0x732d('0x14')]({'where':_0x5a779f['where']})['then'](function(_0x304e6e){_0x36425e['count']=_0x304e6e;if(_0x4c96a4[_0x732d('0x26')]['includeAll']){_0x5a779f[_0x732d('0x30')]=[{'all':!![]}];}return db[_0x732d('0x37')]['findAll'](_0x5a779f);})[_0x732d('0x28')](function(_0x19850b){if(_0x4c96a4['query'][_0x732d('0x48')]===_0x732d('0x49')){for(var _0x26782c=0x0;_0x26782c<_0x19850b[_0x732d('0x39')];_0x26782c++){_0x19850b[_0x26782c][_0x732d('0x33')]=juice(_0x19850b[_0x26782c][_0x732d('0x33')]);}}_0x36425e[_0x732d('0x4a')]=_0x19850b;return _0x36425e;});}})[_0x732d('0x28')](respondWithFilteredResult(_0x76c12e,_0x5a779f))[_0x732d('0x29')](handleError(_0x76c12e,null));};exports['addTags']=function(_0x390224,_0x4d04e6){return db[_0x732d('0x1e')][_0x732d('0x31')]({'where':{'id':_0x390224[_0x732d('0x2a')]['id']}})[_0x732d('0x28')](handleEntityNotFound(_0x4d04e6,null))['then'](function(_0x1828e0){if(_0x1828e0){return _0x1828e0['setTags'](_0x390224[_0x732d('0x33')]['ids'],_['omit'](_0x390224[_0x732d('0x33')],[_0x732d('0x36'),'id'])||{})[_0x732d('0x4b')](function(){return db['Tag'][_0x732d('0x24')]({'attributes':['id','name',_0x732d('0x4c')],'where':{'id':_0x390224[_0x732d('0x33')][_0x732d('0x36')]}});})[_0x732d('0x28')](function(_0x287ad2){socket['emit'](_0x732d('0x4d'),{'id':Number(_0x390224[_0x732d('0x2a')]['id']),'tags':_0x287ad2||[]});return{'id':Number(_0x390224['params']['id']),'tags':_0x287ad2||[]};});}})[_0x732d('0x28')](respondWithResult(_0x4d04e6,null))[_0x732d('0x29')](handleError(_0x4d04e6,null));};exports[_0x732d('0x4e')]=function(_0x3e06a4,_0x2cc702){return db[_0x732d('0x1e')]['find']({'where':{'id':_0x3e06a4[_0x732d('0x2a')]['id']}})[_0x732d('0x28')](handleEntityNotFound(_0x2cc702,null))['then'](function(_0x4d43f4){if(_0x4d43f4){return _0x4d43f4['removeTags'](_0x3e06a4[_0x732d('0x26')]['ids']);}})[_0x732d('0x28')](respondWithStatusCode(_0x2cc702,null))[_0x732d('0x29')](handleError(_0x2cc702,null));};exports[_0x732d('0x4f')]=function(_0x31a5b7,_0x36d01a){var _0x2f00fb=moment()[_0x732d('0x50')]()[_0x732d('0x51')]();var _0x216724=path[_0x732d('0x52')](config[_0x732d('0x53')],_0x732d('0x54'),'files',_0x732d('0x55'));var _0x29ebc7=path[_0x732d('0x52')](config[_0x732d('0x53')],_0x732d('0x54'),_0x732d('0x56'),_0x732d('0x57'));var _0x1656ad=path[_0x732d('0x52')](_0x216724,_0x2f00fb);var _0x174701=util[_0x732d('0x45')](_0x732d('0x58'),_0x31a5b7[_0x732d('0x2a')]['id'],_0x2f00fb);var _0x44aa58=path[_0x732d('0x52')](_0x216724,_0x174701);var _0x44b599=[];if(_0x31a5b7[_0x732d('0x26')][_0x732d('0x57')]){_0x44b599[_0x732d('0x59')]({'model':db[_0x732d('0x5a')],'as':_0x732d('0x5b'),'raw':!![]});}var _0x4d85cc=[{'model':db[_0x732d('0x37')],'as':_0x732d('0x5c'),'attributes':['id',_0x732d('0x33'),_0x732d('0x5d'),'to','cc','bcc',_0x732d('0x5e'),'createdAt'],'where':{'secret':![]},'order':qs[_0x732d('0x3c')]('id'),'include':_0x44b599}];return db[_0x732d('0x1e')][_0x732d('0x31')]({'where':{'id':_0x31a5b7[_0x732d('0x2a')]['id']},'include':_0x4d85cc})[_0x732d('0x28')](handleEntityNotFound(_0x36d01a,null))[_0x732d('0x28')](function(_0x4b7944){if(_0x4b7944&&_0x4b7944[_0x732d('0x5c')]){var _0x591670=_0x4b7944[_0x732d('0x5f')]({'plain':!![]});fs[_0x732d('0x60')](_0x1656ad);return BPromise[_0x732d('0x61')](_0x591670[_0x732d('0x5c')],function(_0x44eeb3,_0x4683dc){var _0x10b4f8={'from':_0x44eeb3[_0x732d('0x5d')],'to':_0x44eeb3['to']||_0x732d('0x62'),'subject':_0x44eeb3['subject'],'html':htmlEntities[_0x732d('0x63')](_0x44eeb3['body']),'headers':{'Date':moment(_0x44eeb3[_0x732d('0x64')])[_0x732d('0x45')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x44eeb3['cc']){_0x10b4f8[_0x732d('0x65')]['Cc']=_0x44eeb3['cc'];}if(_0x44eeb3[_0x732d('0x66')]){_0x10b4f8[_0x732d('0x65')][_0x732d('0x67')]=_0x44eeb3[_0x732d('0x66')];}return new BPromise(function(_0x27f478,_0x2deb03){if(_0x44eeb3['Attachments']){for(var _0x2dd0cf=0x0;_0x2dd0cf<_0x44eeb3[_0x732d('0x5b')][_0x732d('0x39')];_0x2dd0cf++){var _0x411c06=_0x44eeb3[_0x732d('0x5b')][_0x2dd0cf];var _0x1f025b=path[_0x732d('0x52')](_0x29ebc7,_0x411c06[_0x732d('0x68')]);if(fs[_0x732d('0x69')](_0x1f025b)){_0x10b4f8['attachments'][_0x732d('0x59')]({'name':_0x411c06[_0x732d('0x1a')],'contentType':_0x411c06[_0x732d('0x21')],'data':fs[_0x732d('0x6a')](_0x1f025b)});}}}emlformat['build'](_0x10b4f8,function(_0x46c76e,_0x3a4dca){if(_0x46c76e)return _0x2deb03(_0x46c76e);fs[_0x732d('0x6b')](path['join'](_0x1656ad,util[_0x732d('0x45')](_0x732d('0x6c'),_0x4683dc)),_0x3a4dca);return _0x27f478(_0x3a4dca);});});})[_0x732d('0x28')](function(){return new BPromise(function(_0x523c2f,_0x3dcfad){zipdir(_0x1656ad,{'saveTo':_0x44aa58},function(_0x49ec44,_0xe5518b){if(_0x49ec44)return _0x3dcfad(_0x49ec44);return _0x523c2f(_0xe5518b);});})[_0x732d('0x28')](function(){return new BPromise(function(_0x51a227,_0x55a4a4){rimraf(_0x1656ad,function(_0x2e0c41){if(_0x2e0c41)_0x55a4a4(_0x2e0c41);return _0x51a227();});});})[_0x732d('0x28')](function(){return _0x36d01a['download'](_0x44aa58,_0x174701,function(_0x2860a5){if(!_0x2860a5)fs['unlinkSync'](_0x44aa58);});});});}else{return _0x36d01a[_0x732d('0xe')](0xc8);}})[_0x732d('0x29')](handleError(_0x36d01a,null));};
\ No newline at end of file
index e7e97c2..d320a03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e1=['setMaxListeners','save','update','remove','Users','map','findAll','then','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','events','MailInteraction','MailMessage'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb7e1,0x96));var _0x1b7e=function(_0x2ed244,_0x129f94){_0x2ed244=_0x2ed244-0x0;var _0x116cf9=_0xb7e1[_0x2ed244];return _0x116cf9;};'use strict';var EventEmitter=require(_0x1b7e('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x1b7e('0x1')];var MailMessage=require('../../mysqldb')['db'][_0x1b7e('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x1b7e('0x3')](0x0);var events={'afterCreate':_0x1b7e('0x4'),'afterUpdate':_0x1b7e('0x5'),'afterDestroy':_0x1b7e('0x6')};function emitEvent(_0x4440c8){return function(_0x301ba4,_0x9582ae,_0x557d4f){_0x301ba4['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x43bb21){_0x301ba4['setDataValue'](_0x1b7e('0x7'),_0x43bb21[_0x1b7e('0x8')](function(_0x53cffe){return{'id':_0x53cffe['id']};}));return MailMessage[_0x1b7e('0x9')]({'where':{'MailInteractionId':_0x301ba4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1b7e('0xa')](function(_0x2d6659){_0x301ba4[_0x1b7e('0xb')](_0x1b7e('0xc'),_0x2d6659[_0x1b7e('0xd')]);MailInteractionEvents[_0x1b7e('0xe')](_0x4440c8+':'+_0x301ba4['id'],_0x301ba4);MailInteractionEvents[_0x1b7e('0xe')](_0x4440c8,_0x301ba4);_0x557d4f(null);})[_0x1b7e('0xf')](_0x557d4f(null));};}for(var e in events){if(events[_0x1b7e('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0xf774=['remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','exports','events','MailInteraction','../../mysqldb','MailMessage','save','update'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf774,0xae));var _0x4f77=function(_0x381d6c,_0x3b511f){_0x381d6c=_0x381d6c-0x0;var _0x2a2724=_0xf774[_0x381d6c];return _0x2a2724;};'use strict';var EventEmitter=require(_0x4f77('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x4f77('0x1')];var MailMessage=require(_0x4f77('0x2'))['db'][_0x4f77('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4f77('0x4'),'afterUpdate':_0x4f77('0x5'),'afterDestroy':_0x4f77('0x6')};function emitEvent(_0x3d7443){return function(_0x2fa2d5,_0x430c65,_0x180511){_0x2fa2d5[_0x4f77('0x7')]({'attributes':['id'],'raw':!![]})[_0x4f77('0x8')](function(_0x4daa2a){_0x2fa2d5[_0x4f77('0x9')](_0x4f77('0xa'),_0x4daa2a[_0x4f77('0xb')](function(_0xd2b2cf){return{'id':_0xd2b2cf['id']};}));return MailMessage[_0x4f77('0xc')]({'where':{'MailInteractionId':_0x2fa2d5['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4f77('0x8')](function(_0xa1188f){_0x2fa2d5[_0x4f77('0x9')]('unreadMessages',_0xa1188f[_0x4f77('0xd')]);MailInteractionEvents[_0x4f77('0xe')](_0x3d7443+':'+_0x2fa2d5['id'],_0x2fa2d5);MailInteractionEvents['emit'](_0x3d7443,_0x2fa2d5);_0x180511(null);})[_0x4f77('0xf')](_0x180511(null));};}for(var e in events){if(events[_0x4f77('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x4f77('0x11')]=MailInteractionEvents;
\ No newline at end of file
index 1d95d7f..464a097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21cf=['define','MailInteraction','fti_mail_interactions','subject','FULLTEXT','substatus','format','changed','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','models','get','update','then','catch','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes'];(function(_0x4ec625,_0x1add61){var _0x1ebd0e=function(_0xa25cad){while(--_0xa25cad){_0x4ec625['push'](_0x4ec625['shift']());}};_0x1ebd0e(++_0x1add61);}(_0x21cf,0x155));var _0xf21c=function(_0x117852,_0x5c0506){_0x117852=_0x117852-0x0;var _0x82fc80=_0x21cf[_0x117852];return _0x82fc80;};'use strict';var _=require(_0xf21c('0x0'));var util=require(_0xf21c('0x1'));var logger=require('../../config/logger')(_0xf21c('0x2'));var moment=require(_0xf21c('0x3'));var BPromise=require(_0xf21c('0x4'));var rp=require(_0xf21c('0x5'));var fs=require('fs');var path=require(_0xf21c('0x6'));var rimraf=require(_0xf21c('0x7'));var config=require(_0xf21c('0x8'));var attributes=require(_0xf21c('0x9'));module['exports']=function(_0x7284cf,_0x35229a){return _0x7284cf[_0xf21c('0xa')](_0xf21c('0xb'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xf21c('0xc'),'fields':[_0xf21c('0xd'),'to'],'type':_0xf21c('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x403817,_0x4750ca,_0x5bd984){if(_0x403817[_0xf21c('0xf')]){_0x403817['substatusAt']=moment()[_0xf21c('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x403817['closed']){_0x403817['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x5bd984(null,_0x4750ca);},'beforeUpdate':function(_0x129406,_0x9f0d37,_0x24cc02){if(_0x129406[_0xf21c('0x11')](_0xf21c('0xf'))){_0x129406[_0xf21c('0x12')]=_0x129406[_0xf21c('0xf')]?moment()[_0xf21c('0x10')](_0xf21c('0x13')):null;}if(_0x129406['changed'](_0xf21c('0x14'))){_0x129406['closedAt']=moment()[_0xf21c('0x10')](_0xf21c('0x13'));_0x129406['substatus']=null;_0x129406['substatusAt']=null;}_0x24cc02(null,_0x129406);},'afterUpdate':function(_0xc1ac7e,_0x477f9d,_0x126152){var _0x5f0b85=_0x7284cf[_0xf21c('0x15')];var _0x188e1e=_0xc1ac7e[_0xf21c('0x16')]({'plain':!![]});if(_0x188e1e[_0xf21c('0x14')]){return _0x5f0b85['MailMessage'][_0xf21c('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x188e1e['id']}})[_0xf21c('0x18')](function(){_0x126152();})[_0xf21c('0x19')](function(_0xe15d9d){_0x126152(_0xe15d9d);});}else{_0x126152();}}},'charset':_0xf21c('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x58f8=['bluebird','../../config/environment','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','format','closed','YYYY-MM-DD\x20HH:mm:ss','changed','closedAt','models','get','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api'];(function(_0x183b18,_0x243de5){var _0xad9a35=function(_0x1acc55){while(--_0x1acc55){_0x183b18['push'](_0x183b18['shift']());}};_0xad9a35(++_0x243de5);}(_0x58f8,0x11b));var _0x858f=function(_0x55beec,_0x266397){_0x55beec=_0x55beec-0x0;var _0x4a548e=_0x58f8[_0x55beec];return _0x4a548e;};'use strict';var _=require('lodash');var util=require(_0x858f('0x0'));var logger=require(_0x858f('0x1'))(_0x858f('0x2'));var moment=require('moment');var BPromise=require(_0x858f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x858f('0x4'));var attributes=require('./mailInteraction.attributes');module[_0x858f('0x5')]=function(_0xbfdf97,_0x5aa63e){return _0xbfdf97[_0x858f('0x6')](_0x858f('0x7'),attributes,{'tableName':_0x858f('0x8'),'paranoid':![],'indexes':[{'name':_0x858f('0x9'),'fields':['subject','to'],'type':_0x858f('0xa')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x48cf35,_0x46d292,_0x5a84c9){if(_0x48cf35[_0x858f('0xb')]){_0x48cf35[_0x858f('0xc')]=moment()[_0x858f('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x48cf35[_0x858f('0xe')]){_0x48cf35['closedAt']=moment()[_0x858f('0xd')](_0x858f('0xf'));}_0x5a84c9(null,_0x46d292);},'beforeUpdate':function(_0x57bf7a,_0x2c75c9,_0x433314){if(_0x57bf7a['changed'](_0x858f('0xb'))){_0x57bf7a[_0x858f('0xc')]=_0x57bf7a[_0x858f('0xb')]?moment()[_0x858f('0xd')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x57bf7a[_0x858f('0x10')](_0x858f('0xe'))){_0x57bf7a[_0x858f('0x11')]=moment()[_0x858f('0xd')]('YYYY-MM-DD\x20HH:mm:ss');_0x57bf7a[_0x858f('0xb')]=null;_0x57bf7a['substatusAt']=null;}_0x433314(null,_0x57bf7a);},'afterUpdate':function(_0x1cffa4,_0x2fd573,_0x5ee1d0){var _0x439189=_0xbfdf97[_0x858f('0x12')];var _0x246d2d=_0x1cffa4[_0x858f('0x13')]({'plain':!![]});if(_0x246d2d['closed']){return _0x439189[_0x858f('0x14')][_0x858f('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x246d2d['id']}})[_0x858f('0x16')](function(){_0x5ee1d0();})[_0x858f('0x17')](function(_0x3c9e03){_0x5ee1d0(_0x3c9e03);});}else{_0x5ee1d0();}}},'charset':_0x858f('0x18'),'collate':_0x858f('0x19')});};
\ No newline at end of file
index 17f1cf4..ec20aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c85=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','request','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','MailInteraction','update','body','options','raw','where','limit','UpdateMailInteraction','then','addTags','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xb3005a,_0x3a23a2){var _0x3a0924=function(_0x430491){while(--_0x430491){_0xb3005a['push'](_0xb3005a['shift']());}};_0x3a0924(++_0x3a23a2);}(_0x8c85,0x158));var _0x58c8=function(_0x31e126,_0xfc8a4f){_0x31e126=_0x31e126-0x0;var _0x401d3b=_0x8c85[_0x31e126];return _0x401d3b;};'use strict';var _=require(_0x58c8('0x0'));var util=require(_0x58c8('0x1'));var moment=require(_0x58c8('0x2'));var BPromise=require('bluebird');var rs=require(_0x58c8('0x3'));var fs=require('fs');var Redis=require(_0x58c8('0x4'));var db=require(_0x58c8('0x5'))['db'];var utils=require(_0x58c8('0x6'));var logger=require(_0x58c8('0x7'))(_0x58c8('0x8'));var config=require(_0x58c8('0x9'));var jayson=require(_0x58c8('0xa'));var client=jayson[_0x58c8('0xb')][_0x58c8('0xc')]({'port':0x232a});config[_0x58c8('0xd')]=_[_0x58c8('0xe')](config['redis'],{'host':_0x58c8('0xf'),'port':0x18eb});var socket=require(_0x58c8('0x10'))(new Redis(config[_0x58c8('0xd')]));require(_0x58c8('0x11'))['register'](socket);function respondWithRpcPromise(_0xa8c49,_0x4a5caa,_0x81a69a){return new BPromise(function(_0x545897,_0x421876){return client[_0x58c8('0x12')](_0xa8c49,_0x81a69a)['then'](function(_0xf627c){logger['info'](_0x58c8('0x13'),_0x4a5caa,_0x58c8('0x14'));logger[_0x58c8('0x15')](_0x58c8('0x16'),_0x4a5caa,_0x58c8('0x14'),JSON[_0x58c8('0x17')](_0xf627c));if(_0xf627c[_0x58c8('0x18')]){if(_0xf627c['error'][_0x58c8('0x19')]===0x1f4){logger[_0x58c8('0x18')](_0x58c8('0x13'),_0x4a5caa,_0xf627c[_0x58c8('0x18')][_0x58c8('0x1a')]);return _0x421876(_0xf627c['error']['message']);}logger[_0x58c8('0x18')]('MailInteraction,\x20%s,\x20%s',_0x4a5caa,_0xf627c[_0x58c8('0x18')][_0x58c8('0x1a')]);return _0x545897(_0xf627c[_0x58c8('0x18')][_0x58c8('0x1a')]);}else{logger[_0x58c8('0x1b')](_0x58c8('0x13'),_0x4a5caa,_0x58c8('0x14'));_0x545897(_0xf627c[_0x58c8('0x1c')]['message']);}})[_0x58c8('0x1d')](function(_0x40fe0c){logger[_0x58c8('0x18')]('MailInteraction,\x20%s,\x20%s',_0x4a5caa,_0x40fe0c);_0x421876(_0x40fe0c);});});}exports['UpdateMailInteraction']=function(_0x2a329b){var _0x31124f=this;return new Promise(function(_0x65630d,_0x31e9b6){return db[_0x58c8('0x1e')][_0x58c8('0x1f')](_0x2a329b[_0x58c8('0x20')],{'raw':_0x2a329b[_0x58c8('0x21')]?_0x2a329b['options'][_0x58c8('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a329b['options']?_0x2a329b[_0x58c8('0x21')][_0x58c8('0x23')]||null:null,'attributes':_0x2a329b[_0x58c8('0x21')]?_0x2a329b[_0x58c8('0x21')]['attributes']||null:null,'limit':_0x2a329b[_0x58c8('0x21')]?_0x2a329b[_0x58c8('0x21')][_0x58c8('0x24')]||null:null})['then'](function(_0x1bcca9){logger[_0x58c8('0x1b')](_0x58c8('0x25'),_0x2a329b);logger[_0x58c8('0x15')](_0x58c8('0x25'),_0x2a329b,JSON[_0x58c8('0x17')](_0x1bcca9));_0x65630d(_0x1bcca9);})['catch'](function(_0x19c043){logger[_0x58c8('0x18')]('UpdateMailInteraction',_0x19c043[_0x58c8('0x1a')],_0x2a329b);_0x31e9b6(_0x31124f[_0x58c8('0x18')](0x1f4,_0x19c043[_0x58c8('0x1a')]));});});};exports['AddTagsToMailInteraction']=function(_0x5b7374){return new Promise(function(_0x48b777,_0x27a231){return db[_0x58c8('0x1e')]['find']({'where':_0x5b7374[_0x58c8('0x21')]?_0x5b7374['options'][_0x58c8('0x23')]||null:null})[_0x58c8('0x26')](function(_0x4e22ba){if(_0x4e22ba){return _0x4e22ba[_0x58c8('0x27')](_0x5b7374[_0x58c8('0x20')][_0x58c8('0x28')],_[_0x58c8('0x29')](_0x5b7374[_0x58c8('0x20')],['ids','id'])||{});}})[_0x58c8('0x2a')](function(_0xcbb095){logger['info'](_0x58c8('0x2b'),_0x5b7374);logger[_0x58c8('0x15')](_0x58c8('0x2b'),_0x5b7374,JSON[_0x58c8('0x17')](_0xcbb095));_0x48b777(_0xcbb095);})[_0x58c8('0x1d')](function(_0x50efe6){logger[_0x58c8('0x18')]('AddTags',_0x50efe6[_0x58c8('0x1a')],_0x5b7374);_0x27a231(_this['error'](0x1f4,_0x50efe6['message']));});});};
\ No newline at end of file
+var _0xbd1f=['register','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','attributes','AddTagsToMailInteraction','where','addTags','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailInteraction.socket'];(function(_0x34c027,_0x230054){var _0x440e68=function(_0x24a1a4){while(--_0x24a1a4){_0x34c027['push'](_0x34c027['shift']());}};_0x440e68(++_0x230054);}(_0xbd1f,0x139));var _0xfbd1=function(_0x1f5169,_0x50224c){_0x1f5169=_0x1f5169-0x0;var _0x28989f=_0xbd1f[_0x1f5169];return _0x28989f;};'use strict';var _=require(_0xfbd1('0x0'));var util=require(_0xfbd1('0x1'));var moment=require(_0xfbd1('0x2'));var BPromise=require('bluebird');var rs=require(_0xfbd1('0x3'));var fs=require('fs');var Redis=require(_0xfbd1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfbd1('0x5'));var logger=require(_0xfbd1('0x6'))(_0xfbd1('0x7'));var config=require('../../config/environment');var jayson=require(_0xfbd1('0x8'));var client=jayson[_0xfbd1('0x9')][_0xfbd1('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xfbd1('0xb')],{'host':_0xfbd1('0xc'),'port':0x18eb});var socket=require(_0xfbd1('0xd'))(new Redis(config[_0xfbd1('0xb')]));require(_0xfbd1('0xe'))[_0xfbd1('0xf')](socket);function respondWithRpcPromise(_0x237a29,_0x441945,_0x1fc8f5){return new BPromise(function(_0x1dddb0,_0x1a8ab9){return client['request'](_0x237a29,_0x1fc8f5)[_0xfbd1('0x10')](function(_0x430af8){logger[_0xfbd1('0x11')](_0xfbd1('0x12'),_0x441945,_0xfbd1('0x13'));logger[_0xfbd1('0x14')](_0xfbd1('0x15'),_0x441945,_0xfbd1('0x13'),JSON[_0xfbd1('0x16')](_0x430af8));if(_0x430af8[_0xfbd1('0x17')]){if(_0x430af8['error'][_0xfbd1('0x18')]===0x1f4){logger[_0xfbd1('0x17')](_0xfbd1('0x12'),_0x441945,_0x430af8['error'][_0xfbd1('0x19')]);return _0x1a8ab9(_0x430af8[_0xfbd1('0x17')]['message']);}logger[_0xfbd1('0x17')]('MailInteraction,\x20%s,\x20%s',_0x441945,_0x430af8[_0xfbd1('0x17')][_0xfbd1('0x19')]);return _0x1dddb0(_0x430af8[_0xfbd1('0x17')][_0xfbd1('0x19')]);}else{logger['info'](_0xfbd1('0x12'),_0x441945,'request\x20sent');_0x1dddb0(_0x430af8[_0xfbd1('0x1a')][_0xfbd1('0x19')]);}})[_0xfbd1('0x1b')](function(_0x3fd7a9){logger[_0xfbd1('0x17')]('MailInteraction,\x20%s,\x20%s',_0x441945,_0x3fd7a9);_0x1a8ab9(_0x3fd7a9);});});}exports[_0xfbd1('0x1c')]=function(_0x2b5039){var _0x3c88c9=this;return new Promise(function(_0xa19bc2,_0x2d7b41){return db[_0xfbd1('0x1d')][_0xfbd1('0x1e')](_0x2b5039[_0xfbd1('0x1f')],{'raw':_0x2b5039[_0xfbd1('0x20')]?_0x2b5039['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b5039[_0xfbd1('0x20')]?_0x2b5039[_0xfbd1('0x20')]['where']||null:null,'attributes':_0x2b5039['options']?_0x2b5039[_0xfbd1('0x20')][_0xfbd1('0x21')]||null:null,'limit':_0x2b5039[_0xfbd1('0x20')]?_0x2b5039['options']['limit']||null:null})['then'](function(_0x47ef87){logger['info'](_0xfbd1('0x1c'),_0x2b5039);logger[_0xfbd1('0x14')](_0xfbd1('0x1c'),_0x2b5039,JSON[_0xfbd1('0x16')](_0x47ef87));_0xa19bc2(_0x47ef87);})[_0xfbd1('0x1b')](function(_0x2fc9b1){logger['error'](_0xfbd1('0x1c'),_0x2fc9b1['message'],_0x2b5039);_0x2d7b41(_0x3c88c9[_0xfbd1('0x17')](0x1f4,_0x2fc9b1['message']));});});};exports[_0xfbd1('0x22')]=function(_0x553900){return new Promise(function(_0x119075,_0x12ad4b){return db[_0xfbd1('0x1d')]['find']({'where':_0x553900['options']?_0x553900[_0xfbd1('0x20')][_0xfbd1('0x23')]||null:null})['then'](function(_0x205f81){if(_0x205f81){return _0x205f81[_0xfbd1('0x24')](_0x553900['body'][_0xfbd1('0x25')],_[_0xfbd1('0x26')](_0x553900[_0xfbd1('0x1f')],[_0xfbd1('0x25'),'id'])||{});}})[_0xfbd1('0x27')](function(_0x55d202){logger[_0xfbd1('0x11')](_0xfbd1('0x28'),_0x553900);logger[_0xfbd1('0x14')]('AddTags',_0x553900,JSON[_0xfbd1('0x16')](_0x55d202));_0x119075(_0x55d202);})['catch'](function(_0x4891f9){logger[_0xfbd1('0x17')](_0xfbd1('0x28'),_0x4891f9[_0xfbd1('0x19')],_0x553900);_0x12ad4b(_this[_0xfbd1('0x17')](0x1f4,_0x4891f9['message']));});});};
\ No newline at end of file
index 729d07b..20950c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab18=['removeListener','register','length','mailInteraction:','./mailInteraction.events','remove','emit'];(function(_0x4c4db1,_0x16b268){var _0x47ba97=function(_0x2ba88b){while(--_0x2ba88b){_0x4c4db1['push'](_0x4c4db1['shift']());}};_0x47ba97(++_0x16b268);}(_0xab18,0x12a));var _0x8ab1=function(_0x2b622b,_0x4628d4){_0x2b622b=_0x2b622b-0x0;var _0x257a87=_0xab18[_0x2b622b];return _0x257a87;};'use strict';var MailInteractionEvents=require(_0x8ab1('0x0'));var events=['save',_0x8ab1('0x1'),'update'];function createListener(_0x1f878c,_0x2cff11){return function(_0x552741){_0x2cff11[_0x8ab1('0x2')](_0x1f878c,_0x552741);};}function removeListener(_0xcf3d14,_0x145fb8){return function(){MailInteractionEvents[_0x8ab1('0x3')](_0xcf3d14,_0x145fb8);};}exports[_0x8ab1('0x4')]=function(_0x6704ea){for(var _0x593176=0x0,_0x5a4545=events[_0x8ab1('0x5')];_0x593176<_0x5a4545;_0x593176++){var _0x47f84f=events[_0x593176];var _0x11b4f9=createListener(_0x8ab1('0x6')+_0x47f84f,_0x6704ea);MailInteractionEvents['on'](_0x47f84f,_0x11b4f9);}};
\ No newline at end of file
+var _0xbbf9=['remove','update','emit','register','length','mailInteraction:','./mailInteraction.events','save'];(function(_0x163395,_0x2e3464){var _0x804441=function(_0x677470){while(--_0x677470){_0x163395['push'](_0x163395['shift']());}};_0x804441(++_0x2e3464);}(_0xbbf9,0x1be));var _0x9bbf=function(_0x163e7d,_0x221edb){_0x163e7d=_0x163e7d-0x0;var _0xf0e141=_0xbbf9[_0x163e7d];return _0xf0e141;};'use strict';var MailInteractionEvents=require(_0x9bbf('0x0'));var events=[_0x9bbf('0x1'),_0x9bbf('0x2'),_0x9bbf('0x3')];function createListener(_0x384512,_0x4de365){return function(_0x31f142){_0x4de365[_0x9bbf('0x4')](_0x384512,_0x31f142);};}function removeListener(_0x3f7ddb,_0x2c82be){return function(){MailInteractionEvents['removeListener'](_0x3f7ddb,_0x2c82be);};}exports[_0x9bbf('0x5')]=function(_0x2995a0){for(var _0x1a8ee2=0x0,_0x578550=events[_0x9bbf('0x6')];_0x1a8ee2<_0x578550;_0x1a8ee2++){var _0x5e28e0=events[_0x1a8ee2];var _0x354ad1=createListener(_0x9bbf('0x7')+_0x5e28e0,_0x2995a0);MailInteractionEvents['on'](_0x5e28e0,_0x354ad1);}};
\ No newline at end of file
index 56d4349..6e2df9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa12=['reject','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','index','isAuthenticated','describe','/:id','show','download','post','tracked','mail','mailmessage:create','create','update','put','/:id/accept','/:id/reject'];(function(_0x56b782,_0x38aad6){var _0x17bd0a=function(_0x3b99ba){while(--_0x3b99ba){_0x56b782['push'](_0x56b782['shift']());}};_0x17bd0a(++_0x38aad6);}(_0xfa12,0x1b2));var _0x2fa1=function(_0x22fb2a,_0x3523a3){_0x22fb2a=_0x22fb2a-0x0;var _0x18d9d0=_0xfa12[_0x22fb2a];return _0x18d9d0;};'use strict';var multer=require(_0x2fa1('0x0'));var util=require(_0x2fa1('0x1'));var path=require('path');var timeout=require(_0x2fa1('0x2'));var express=require(_0x2fa1('0x3'));var router=express[_0x2fa1('0x4')]();var fs_extra=require(_0x2fa1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2fa1('0x6'));var config=require(_0x2fa1('0x7'));var controller=require(_0x2fa1('0x8'));router[_0x2fa1('0x9')]('/',auth['isAuthenticated'](),controller[_0x2fa1('0xa')]);router[_0x2fa1('0x9')]('/describe',auth[_0x2fa1('0xb')](),controller[_0x2fa1('0xc')]);router[_0x2fa1('0x9')](_0x2fa1('0xd'),auth['isAuthenticated'](),controller[_0x2fa1('0xe')]);router[_0x2fa1('0x9')]('/:id/download',auth[_0x2fa1('0xb')](),controller[_0x2fa1('0xf')]);router[_0x2fa1('0x10')]('/',auth[_0x2fa1('0xb')](),interaction[_0x2fa1('0x11')](_0x2fa1('0x12'),_0x2fa1('0x13')),controller[_0x2fa1('0x14')]);router['put'](_0x2fa1('0xd'),auth[_0x2fa1('0xb')](),controller[_0x2fa1('0x15')]);router[_0x2fa1('0x16')](_0x2fa1('0x17'),auth[_0x2fa1('0xb')](),controller['accept']);router[_0x2fa1('0x16')](_0x2fa1('0x18'),auth[_0x2fa1('0xb')](),controller[_0x2fa1('0x19')]);router['delete'](_0x2fa1('0xd'),auth[_0x2fa1('0xb')](),controller['destroy']);module[_0x2fa1('0x1a')]=router;
\ No newline at end of file
+var _0xf1e4=['exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','mailmessage:create','put','/:id','update','accept','delete','destroy'];(function(_0x53ccc2,_0x5066cb){var _0x21fcf0=function(_0x35912b){while(--_0x35912b){_0x53ccc2['push'](_0x53ccc2['shift']());}};_0x21fcf0(++_0x5066cb);}(_0xf1e4,0x1e4));var _0x4f1e=function(_0x3030a0,_0x5b3df8){_0x3030a0=_0x3030a0-0x0;var _0x4e0c0c=_0xf1e4[_0x3030a0];return _0x4e0c0c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x4f1e('0x0'));var express=require('express');var router=express[_0x4f1e('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x4f1e('0x2'));var interaction=require(_0x4f1e('0x3'));var config=require(_0x4f1e('0x4'));var controller=require(_0x4f1e('0x5'));router[_0x4f1e('0x6')]('/',auth[_0x4f1e('0x7')](),controller[_0x4f1e('0x8')]);router[_0x4f1e('0x6')](_0x4f1e('0x9'),auth['isAuthenticated'](),controller[_0x4f1e('0xa')]);router[_0x4f1e('0x6')]('/:id',auth[_0x4f1e('0x7')](),controller['show']);router[_0x4f1e('0x6')]('/:id/download',auth[_0x4f1e('0x7')](),controller['download']);router[_0x4f1e('0xb')]('/',auth['isAuthenticated'](),interaction[_0x4f1e('0xc')]('mail',_0x4f1e('0xd')),controller['create']);router[_0x4f1e('0xe')](_0x4f1e('0xf'),auth[_0x4f1e('0x7')](),controller[_0x4f1e('0x10')]);router[_0x4f1e('0xe')]('/:id/accept',auth[_0x4f1e('0x7')](),controller[_0x4f1e('0x11')]);router['put']('/:id/reject',auth[_0x4f1e('0x7')](),controller['reject']);router[_0x4f1e('0x12')]('/:id',auth[_0x4f1e('0x7')](),controller[_0x4f1e('0x13')]);module[_0x4f1e('0x14')]=router;
\ No newline at end of file
index f9e0c2a..64a2a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40d=['Chat','sequelize','exports','TEXT','long','medium','BOOLEAN','out','STRING','INTEGER','DATE','ENUM','Email'];(function(_0xc4c573,_0x58ea76){var _0x2d1cf3=function(_0x422872){while(--_0x422872){_0xc4c573['push'](_0xc4c573['shift']());}};_0x2d1cf3(++_0x58ea76);}(_0xd40d,0x146));var _0xdd40=function(_0x575264,_0x506ef0){_0x575264=_0x575264-0x0;var _0x4bfdd1=_0xd40d[_0x575264];return _0x4bfdd1;};'use strict';var Sequelize=require(_0xdd40('0x0'));var _=require('lodash');module[_0xdd40('0x1')]={'body':{'type':Sequelize[_0xdd40('0x2')](_0xdd40('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xdd40('0x2')](_0xdd40('0x4'))},'read':{'type':Sequelize[_0xdd40('0x5')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xdd40('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xdd40('0x7')](0x1fe)},'from':{'type':Sequelize[_0xdd40('0x7')]},'to':{'type':Sequelize[_0xdd40('0x2')](_0xdd40('0x3'))},'cc':{'type':Sequelize['TEXT'](_0xdd40('0x3'))},'bcc':{'type':Sequelize['TEXT'](_0xdd40('0x3'))},'subject':{'type':Sequelize[_0xdd40('0x2')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0xdd40('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xdd40('0x9')]},'originTo':{'type':Sequelize[_0xdd40('0x2')](_0xdd40('0x3'))},'originCc':{'type':Sequelize['TEXT']('long')},'originChannel':{'type':Sequelize[_0xdd40('0xa')](_0xdd40('0xb'),_0xdd40('0xc')),'defaultValue':_0xdd40('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x7548=['BOOLEAN','Email','sequelize','lodash','TEXT','long','medium','ENUM','out','STRING','INTEGER'];(function(_0x2cfc10,_0x244754){var _0x28298f=function(_0x4a7f65){while(--_0x4a7f65){_0x2cfc10['push'](_0x2cfc10['shift']());}};_0x28298f(++_0x244754);}(_0x7548,0x10a));var _0x8754=function(_0xaecacd,_0x501dd2){_0xaecacd=_0xaecacd-0x0;var _0x227900=_0x7548[_0xaecacd];return _0x227900;};'use strict';var Sequelize=require(_0x8754('0x0'));var _=require(_0x8754('0x1'));module['exports']={'body':{'type':Sequelize[_0x8754('0x2')](_0x8754('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8754('0x4'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x8754('0x5')]('in',_0x8754('0x6')),'defaultValue':_0x8754('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8754('0x7')](0x1fe)},'from':{'type':Sequelize[_0x8754('0x7')]},'to':{'type':Sequelize[_0x8754('0x2')](_0x8754('0x3'))},'cc':{'type':Sequelize[_0x8754('0x2')]('long')},'bcc':{'type':Sequelize[_0x8754('0x2')](_0x8754('0x3'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x8754('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x8754('0x9')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x8754('0x2')]('long')},'originCc':{'type':Sequelize[_0x8754('0x2')](_0x8754('0x3'))},'originChannel':{'type':Sequelize[_0x8754('0x5')](_0x8754('0xa'),'Chat'),'defaultValue':_0x8754('0xa'),'allowNull':![]}};
\ No newline at end of file
index 56afeb9..4410ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00e1=['request\x20sent','debug','stringify','error','code','message','MailMessage,\x20%s,\x20%s','result','status','json','undefined','offset','limit','set','Content-Range','update','end','sendStatus','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','MailMessage','count','includeAll','include','rows','catch','show','params','rawAttributes','find','body','destroy','describe','create','direction','out','secret','MailAccount','List','updatedAt','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','basename','Contacts','CmContact','ListId','List\x20not\x20found','SendMail','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','format','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','contact','User','reject','rejectmessage','unix','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','push','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','lodash','ioredis','html-to-text','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','html-entities','register','jayson/promise','http','client','request','then','info'];(function(_0x5eedae,_0x23b102){var _0x342c73=function(_0x394028){while(--_0x394028){_0x5eedae['push'](_0x5eedae['shift']());}};_0x342c73(++_0x23b102);}(_0x00e1,0x128));var _0x100e=function(_0x1d785d,_0x14fc14){_0x1d785d=_0x1d785d-0x0;var _0x70a826=_0x00e1[_0x1d785d];return _0x70a826;};'use strict';var emlformat=require(_0x100e('0x0'));var moment=require(_0x100e('0x1'));var BPromise=require(_0x100e('0x2'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x100e('0x3'));var Redis=require(_0x100e('0x4'));var htmlToText=require(_0x100e('0x5'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var interaction_log=require('../../config/logger')('mail-interactions');var config=require(_0x100e('0x6'));var db=require(_0x100e('0x7'))['db'];config[_0x100e('0x8')]=_[_0x100e('0x9')](config[_0x100e('0x8')],{'host':_0x100e('0xa'),'port':0x18eb});var socket=require(_0x100e('0xb'))(new Redis(config[_0x100e('0x8')]));var htmlEntities=require(_0x100e('0xc'));require('./mailMessage.socket')[_0x100e('0xd')](socket);var jayson=require(_0x100e('0xe'));var client=jayson['client']['http']({'port':0x232c});var client9003=jayson['client'][_0x100e('0xf')]({'port':0x232b});var client9002=jayson[_0x100e('0x10')][_0x100e('0xf')]({'port':0x232a});function respondWithRpcPromise(_0x25fe08,_0x58f5d8,_0x1f1e65,_0x201198){return new BPromise(function(_0x326788,_0x4ed240){var _0x34f2ae=_0x201198||client;return _0x34f2ae[_0x100e('0x11')](_0x25fe08,_0x1f1e65)[_0x100e('0x12')](function(_0x94c1e4){logger[_0x100e('0x13')]('MailMessage,\x20%s,\x20%s',_0x58f5d8,_0x100e('0x14'));logger[_0x100e('0x15')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x58f5d8,'request\x20sent',JSON[_0x100e('0x16')](_0x94c1e4));if(_0x94c1e4[_0x100e('0x17')]){if(_0x94c1e4[_0x100e('0x17')][_0x100e('0x18')]===0x1f4){logger[_0x100e('0x17')]('MailMessage,\x20%s,\x20%s',_0x58f5d8,_0x94c1e4[_0x100e('0x17')]['message']);return _0x4ed240(_0x94c1e4[_0x100e('0x17')][_0x100e('0x19')]);}logger['error'](_0x100e('0x1a'),_0x58f5d8,_0x94c1e4['error'][_0x100e('0x19')]);return _0x326788(_0x94c1e4[_0x100e('0x17')][_0x100e('0x19')]);}else{logger[_0x100e('0x13')](_0x100e('0x1a'),_0x58f5d8,_0x100e('0x14'));_0x326788(_0x94c1e4[_0x100e('0x1b')][_0x100e('0x19')]);}})['catch'](function(_0x5e9571){logger[_0x100e('0x17')](_0x100e('0x1a'),_0x58f5d8,_0x5e9571);_0x4ed240(_0x5e9571);});});}function respondWithResult(_0x52b2e9,_0x29d412){_0x29d412=_0x29d412||0xc8;return function(_0x26412e){if(_0x26412e){return _0x52b2e9[_0x100e('0x1c')](_0x29d412)[_0x100e('0x1d')](_0x26412e);}};}function respondWithFilteredResult(_0x26a3e3,_0x4a9852){return function(_0x18fd85){if(_0x18fd85){var _0x2cf585=typeof _0x4a9852['offset']==='undefined'&&typeof _0x4a9852['limit']===_0x100e('0x1e');var _0x48e545=_0x18fd85['count'];var _0x507ef1=_0x2cf585?0x0:_0x4a9852['offset'];var _0x2c564d=_0x2cf585?_0x18fd85['count']:_0x4a9852[_0x100e('0x1f')]+_0x4a9852[_0x100e('0x20')];var _0x1b9a02;if(_0x2c564d>=_0x48e545){_0x2c564d=_0x48e545;_0x1b9a02=0xc8;}else{_0x1b9a02=0xce;}_0x26a3e3[_0x100e('0x1c')](_0x1b9a02);return _0x26a3e3[_0x100e('0x21')](_0x100e('0x22'),_0x507ef1+'-'+_0x2c564d+'/'+_0x48e545)[_0x100e('0x1d')](_0x18fd85);}return null;};}function saveUpdates(_0xa2ae59){return function(_0x84059a){if(_0x84059a){return _0x84059a[_0x100e('0x23')](_0xa2ae59)[_0x100e('0x12')](function(_0x5963cb){return _0x5963cb;});}return null;};}function removeEntity(_0x5ddb3a){return function(_0x16e8f1){if(_0x16e8f1){return _0x16e8f1['destroy']()[_0x100e('0x12')](function(){_0x5ddb3a['status'](0xcc)[_0x100e('0x24')]();});}};}function handleEntityNotFound(_0x248dfe){return function(_0x5ce539){if(!_0x5ce539){_0x248dfe[_0x100e('0x25')](0x194);}return _0x5ce539;};}function handleError(_0x7c169f,_0x146a6e){_0x146a6e=_0x146a6e||0x1f4;return function(_0x2f105b){logger[_0x100e('0x17')](_0x2f105b['stack']);if(_0x2f105b['name']){delete _0x2f105b[_0x100e('0x26')];}_0x7c169f['status'](_0x146a6e)[_0x100e('0x27')](_0x2f105b);};}exports[_0x100e('0x28')]=function(_0x3acee1,_0x297ec0){var _0x210d55={},_0x115f96={},_0x558c8c={'count':0x0,'rows':[]};var _0x440d5e=_[_0x100e('0x29')](db['MailMessage']['rawAttributes'],function(_0xdf839e){return{'name':_0xdf839e[_0x100e('0x2a')],'type':_0xdf839e[_0x100e('0x2b')][_0x100e('0x2c')]};});_0x115f96[_0x100e('0x2d')]=_[_0x100e('0x29')](_0x440d5e,_0x100e('0x26'));_0x115f96[_0x100e('0x2e')]=_[_0x100e('0x2f')](_0x3acee1[_0x100e('0x2e')]);_0x115f96[_0x100e('0x30')]=_['intersection'](_0x115f96[_0x100e('0x2d')],_0x115f96[_0x100e('0x2e')]);_0x210d55['attributes']=_[_0x100e('0x31')](_0x115f96[_0x100e('0x2d')],qs[_0x100e('0x32')](_0x3acee1[_0x100e('0x2e')][_0x100e('0x32')]));_0x210d55[_0x100e('0x33')]=_0x210d55[_0x100e('0x33')][_0x100e('0x34')]?_0x210d55[_0x100e('0x33')]:_0x115f96['model'];if(!_0x3acee1[_0x100e('0x2e')][_0x100e('0x35')](_0x100e('0x36'))){_0x210d55[_0x100e('0x20')]=qs[_0x100e('0x20')](_0x3acee1[_0x100e('0x2e')][_0x100e('0x20')]);_0x210d55['offset']=qs['offset'](_0x3acee1[_0x100e('0x2e')][_0x100e('0x1f')]);}_0x210d55[_0x100e('0x37')]=qs['sort'](_0x3acee1[_0x100e('0x2e')]['sort']);_0x210d55[_0x100e('0x38')]=qs[_0x100e('0x30')](_[_0x100e('0x39')](_0x3acee1[_0x100e('0x2e')],_0x115f96['filters']),_0x440d5e);if(_0x3acee1[_0x100e('0x2e')][_0x100e('0x3a')]){_0x210d55['where']=_[_0x100e('0x3b')](_0x210d55[_0x100e('0x38')],{'$or':_[_0x100e('0x29')](_0x440d5e,function(_0x3c6b16){if(_0x3c6b16[_0x100e('0x2b')]!==_0x100e('0x3c')){var _0x534364={};_0x534364[_0x3c6b16[_0x100e('0x26')]]={'$like':'%'+_0x3acee1[_0x100e('0x2e')][_0x100e('0x3a')]+'%'};return _0x534364;}})});}_0x210d55=_[_0x100e('0x3b')]({},_0x210d55,_0x3acee1[_0x100e('0x3d')]);var _0x4a5564={'where':_0x210d55[_0x100e('0x38')]};return db[_0x100e('0x3e')]['count'](_0x4a5564)[_0x100e('0x12')](function(_0xe7a3c9){_0x558c8c[_0x100e('0x3f')]=_0xe7a3c9;if(_0x3acee1[_0x100e('0x2e')][_0x100e('0x40')]){_0x210d55[_0x100e('0x41')]=[{'all':!![]}];}return db[_0x100e('0x3e')]['findAll'](_0x210d55);})[_0x100e('0x12')](function(_0x57bed2){_0x558c8c[_0x100e('0x42')]=_0x57bed2;return _0x558c8c;})[_0x100e('0x12')](respondWithFilteredResult(_0x297ec0,_0x210d55))[_0x100e('0x43')](handleError(_0x297ec0,null));};exports[_0x100e('0x44')]=function(_0xa139d2,_0x36c45e){var _0x113fb4={'raw':!![],'where':{'id':_0xa139d2[_0x100e('0x45')]['id']}},_0x42f495={};_0x42f495[_0x100e('0x2d')]=_[_0x100e('0x2f')](db['MailMessage'][_0x100e('0x46')]);_0x42f495[_0x100e('0x2e')]=_[_0x100e('0x2f')](_0xa139d2[_0x100e('0x2e')]);_0x42f495[_0x100e('0x30')]=_[_0x100e('0x31')](_0x42f495['model'],_0x42f495[_0x100e('0x2e')]);_0x113fb4[_0x100e('0x33')]=_[_0x100e('0x31')](_0x42f495[_0x100e('0x2d')],qs[_0x100e('0x32')](_0xa139d2[_0x100e('0x2e')][_0x100e('0x32')]));_0x113fb4['attributes']=_0x113fb4['attributes'][_0x100e('0x34')]?_0x113fb4[_0x100e('0x33')]:_0x42f495[_0x100e('0x2d')];if(_0xa139d2[_0x100e('0x2e')][_0x100e('0x40')]){_0x113fb4[_0x100e('0x41')]=[{'all':!![]}];}_0x113fb4=_[_0x100e('0x3b')]({},_0x113fb4,_0xa139d2[_0x100e('0x3d')]);return db[_0x100e('0x3e')][_0x100e('0x47')](_0x113fb4)['then'](handleEntityNotFound(_0x36c45e,null))[_0x100e('0x12')](respondWithResult(_0x36c45e,null))['catch'](handleError(_0x36c45e,null));};exports[_0x100e('0x23')]=function(_0x209cd5,_0x3de533){if(_0x209cd5[_0x100e('0x48')]['id']){delete _0x209cd5[_0x100e('0x48')]['id'];}return db['MailMessage'][_0x100e('0x47')]({'where':{'id':_0x209cd5[_0x100e('0x45')]['id']}})['then'](handleEntityNotFound(_0x3de533,null))[_0x100e('0x12')](saveUpdates(_0x209cd5[_0x100e('0x48')],null))[_0x100e('0x12')](respondWithResult(_0x3de533,null))[_0x100e('0x43')](handleError(_0x3de533,null));};exports[_0x100e('0x49')]=function(_0x25eebc,_0xe59166){return db[_0x100e('0x3e')][_0x100e('0x47')]({'where':{'id':_0x25eebc[_0x100e('0x45')]['id']}})['then'](handleEntityNotFound(_0xe59166,null))['then'](removeEntity(_0xe59166,null))['catch'](handleError(_0xe59166,null));};exports[_0x100e('0x4a')]=function(_0x448a2a,_0x1c7dcd){return db['MailMessage'][_0x100e('0x4a')]()[_0x100e('0x12')](respondWithResult(_0x1c7dcd,null))[_0x100e('0x43')](handleError(_0x1c7dcd,null));};exports[_0x100e('0x4b')]=function(_0xc90b82,_0x5acaa3){return db['MailMessage'][_0x100e('0x4b')](_0xc90b82[_0x100e('0x48')])[_0x100e('0x12')](function(_0xe8ea77){if(_0xe8ea77){if(_0xe8ea77[_0x100e('0x4c')]===_0x100e('0x4d')&&!_0xe8ea77[_0x100e('0x4e')]){var _0x427d13,_0x31ff61,_0x58edc6;if(_0xc90b82['body']['to']){_0x31ff61=_0xc90b82[_0x100e('0x48')]['to']['split'](',')[0x0];}return db[_0x100e('0x4f')]['findOne']({'where':{'id':_0xe8ea77['MailAccountId']},'include':[{'model':db['CmList'],'as':_0x100e('0x50'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'email':_0x31ff61},'limit':0x1,'order':[[_0x100e('0x51'),'DESC']]}]},{'model':db[_0x100e('0x52')],'as':_0x100e('0x53'),'raw':!![],'include':[{'model':db[_0x100e('0x54')],'as':_0x100e('0x54'),'raw':!![]}]}]})[_0x100e('0x12')](function(_0x2658f2){_0x427d13=_0x2658f2;if(!_0x427d13||!_0x427d13['Smtp'])return;var _0x2e72bb=_0x427d13[_0x100e('0x55')]();if(_0xc90b82[_0x100e('0x48')]['attachments']&&_0xc90b82[_0x100e('0x48')][_0x100e('0x56')][_0x100e('0x34')]){for(var _0x449cf8=0x0;_0x449cf8<_0xc90b82['body']['attachments'][_0x100e('0x34')];_0x449cf8+=0x1){_0xc90b82[_0x100e('0x48')][_0x100e('0x56')][_0x449cf8]={'filename':_0xc90b82['body'][_0x100e('0x56')][_0x449cf8][_0x100e('0x26')],'path':path[_0x100e('0x57')](config[_0x100e('0x58')],_0x100e('0x59'),_0xc90b82['body'][_0x100e('0x56')][_0x449cf8][_0x100e('0x5a')])};}}_0x58edc6={'account':_0x2e72bb,'message':_0xc90b82[_0x100e('0x48')]};return;})[_0x100e('0x12')](function(){if(_0x427d13['List']){if(_0x427d13['List'][_0x100e('0x5b')][_0x100e('0x34')]){return _0x427d13['List'][_0x100e('0x5b')][0x0];}else{return db[_0x100e('0x5c')][_0x100e('0x4b')](_[_0x100e('0x9')](_0xc90b82[_0x100e('0x48')],{'firstName':_0xc90b82[_0x100e('0x48')]['to'],'email':_0xc90b82[_0x100e('0x48')]['to'],'phone':_0xc90b82[_0x100e('0x48')]['to'],'ListId':_0x427d13[_0x100e('0x5d')]}));}}else{throw new Error(_0x100e('0x5e'));}})[_0x100e('0x12')](function(){if(_0x58edc6){return respondWithRpcPromise(_0x100e('0x5f'),_0x100e('0x60'),_0x58edc6,client9003)[_0x100e('0x12')](function(_0x736cfa){return _0xe8ea77[_0x100e('0x23')]({'read':!![],'messageId':_0x736cfa[_0x100e('0x61')],'sentAt':moment()['format'](_0x100e('0x62'))});})[_0x100e('0x43')](function(_0x29ae4a){logger['error']('%s',JSON[_0x100e('0x16')](_0x29ae4a));return _0xe8ea77;});}return _0xe8ea77;});}return _0xe8ea77;}})['then'](respondWithResult(_0x5acaa3,0xc9))[_0x100e('0x43')](handleError(_0x5acaa3,null));};exports[_0x100e('0x63')]=function(_0x567b64,_0x5b410b){var _0x5760ae={'agent':{},'channel':_0x100e('0x64')};if(_0x567b64[_0x100e('0x48')]['id']){delete _0x567b64['body']['id'];}_0x567b64[_0x100e('0x48')][_0x100e('0x65')]=!![];_0x567b64['body'][_0x100e('0x66')]=moment()['format'](_0x100e('0x62'));_0x567b64[_0x100e('0x48')][_0x100e('0x67')]=_0x567b64[_0x100e('0x48')][_0x100e('0x67')]||_0x567b64[_0x100e('0x68')]['id'];_0x5760ae[_0x100e('0x69')]['id']=_0x567b64['body'][_0x100e('0x67')];return db[_0x100e('0x3e')][_0x100e('0x47')]({'where':{'id':_0x567b64[_0x100e('0x45')]['id'],'UserId':null}})[_0x100e('0x12')](handleEntityNotFound(_0x5b410b,null))[_0x100e('0x12')](saveUpdates(_0x567b64[_0x100e('0x48')],null))[_0x100e('0x12')](function(_0x3a073e){if(_0x3a073e){_0x5760ae[_0x100e('0x19')]=_0x3a073e[_0x100e('0x6a')]({'plain':!![]});return db[_0x100e('0x6b')]['find']({'where':{'id':_0x3a073e[_0x100e('0x6c')]}});}return null;})['then'](handleEntityNotFound(_0x5b410b,null))[_0x100e('0x12')](function(_0x193fb3){if(_0x193fb3){return _0x193fb3[_0x100e('0x23')]({'UserId':_0x567b64['body'][_0x100e('0x67')],'read1stAt':_[_0x100e('0x6d')](_0x193fb3[_0x100e('0x6e')])?moment()[_0x100e('0x6f')](_0x100e('0x62')):undefined});}return null;})[_0x100e('0x12')](function(_0x2aa75f){if(_0x2aa75f){_0x5760ae[_0x100e('0x70')]=_0x2aa75f[_0x100e('0x6a')]({'plain':!![]});interaction_log[_0x100e('0x13')](_0x100e('0x71'),_0x567b64[_0x100e('0x68')]['id'],_0x567b64[_0x100e('0x68')][_0x100e('0x26')],_0x567b64[_0x100e('0x68')][_0x100e('0x72')],_0x5760ae[_0x100e('0x70')]['id'],_0x567b64[_0x100e('0x48')]?JSON['stringify'](_0x567b64[_0x100e('0x48')]):'null');return respondWithRpcPromise(_0x100e('0x73'),'acceptMessage',_0x5760ae);}return null;})[_0x100e('0x12')](function(_0x2d59cf){var _0x5ec660=_0x100e('0x74')+_0x2d59cf['message'][_0x100e('0x75')];return db[_0x100e('0x76')][_0x100e('0x2e')](_0x5ec660,{'type':db[_0x100e('0x77')][_0x100e('0x78')][_0x100e('0x79')],'raw':!![]})[_0x100e('0x12')](function(_0x409c3a){return _0x409c3a;});})[_0x100e('0x12')](function(_0x3def31){if(_0x3def31){_0x5760ae[_0x100e('0x19')]['contact']=_0x3def31[0x0];if(!_0x567b64[_0x100e('0x48')][_0x100e('0x67')])return;return db['User'][_0x100e('0x47')]({'where':{'id':_0x567b64[_0x100e('0x48')][_0x100e('0x67')],'role':_0x100e('0x69')},'attributes':['id',_0x100e('0x26'),_0x100e('0x7a'),'email',_0x100e('0x7b')],'raw':!![]});}return null;})[_0x100e('0x12')](function(_0x315d58){if(!_0x315d58)return null;_0x5760ae[_0x100e('0x19')][_0x100e('0x69')]=_0x315d58;return _0x5760ae;})['then'](function(_0x4077a8){if(_0x4077a8){if(_0x567b64['body'][_0x100e('0x7c')]){_0x5760ae[_0x100e('0x19')][_0x100e('0x7d')]=util[_0x100e('0x6f')](_0x100e('0x7e'),_0x567b64[_0x100e('0x68')]['name']);_0x5760ae['message'][_0x100e('0x7f')]=_0x5760ae['channel'];_0x5760ae['message'][_0x100e('0x80')]=_0x5760ae[_0x100e('0x7f')];_0x5760ae[_0x100e('0x19')][_0x100e('0x81')]=_0x100e('0x63');_0x5760ae['message']['body']=htmlToText['fromString'](_0x5760ae[_0x100e('0x19')][_0x100e('0x48')]);return respondWithRpcPromise(_0x100e('0x82'),_0x100e('0x82'),{'event':_0x100e('0x83'),'message':_0x5760ae[_0x100e('0x19')]},client9002)['then'](function(){return _0x5760ae;});}return _0x5760ae;}return null;})[_0x100e('0x12')](respondWithResult(_0x5b410b,null))[_0x100e('0x43')](handleError(_0x5b410b,null));};exports['reject']=function(_0x1039b3,_0x528e4e){var _0x3ed882={'agent':{},'channel':'mail'};if(_0x1039b3['body']['id']){delete _0x1039b3['body']['id'];}_0x1039b3[_0x100e('0x48')][_0x100e('0x67')]=_0x1039b3[_0x100e('0x48')][_0x100e('0x67')]||_0x1039b3['user']['id'];_0x3ed882[_0x100e('0x69')]['id']=_0x1039b3[_0x100e('0x48')][_0x100e('0x67')];return db[_0x100e('0x3e')][_0x100e('0x47')]({'where':{'id':_0x1039b3[_0x100e('0x45')]['id'],'UserId':null}})[_0x100e('0x12')](handleEntityNotFound(_0x528e4e,null))[_0x100e('0x12')](function(_0x430da3){if(_0x430da3){_0x3ed882[_0x100e('0x19')]=_0x430da3[_0x100e('0x6a')]({'plain':!![]});return db[_0x100e('0x6b')][_0x100e('0x47')]({'where':{'id':_0x430da3[_0x100e('0x6c')]}});}return null;})[_0x100e('0x12')](handleEntityNotFound(_0x528e4e,null))['then'](function(_0x5b9eaf){if(_0x5b9eaf){_0x3ed882[_0x100e('0x70')]=_0x5b9eaf[_0x100e('0x6a')]({'plain':!![]});interaction_log[_0x100e('0x13')](_0x100e('0x84'),_0x1039b3[_0x100e('0x68')]['id'],_0x1039b3['user']['name'],_0x1039b3[_0x100e('0x68')][_0x100e('0x72')],_0x3ed882['interaction']['id'],_0x1039b3[_0x100e('0x48')]?JSON[_0x100e('0x16')](_0x1039b3[_0x100e('0x48')]):'null');return respondWithRpcPromise(_0x100e('0x85'),_0x100e('0x86'),_0x3ed882);}return null;})[_0x100e('0x12')](function(_0x344b62){var _0x2d4c50=_0x100e('0x74')+_0x344b62[_0x100e('0x19')][_0x100e('0x75')];return db[_0x100e('0x76')][_0x100e('0x2e')](_0x2d4c50,{'type':db['Sequelize'][_0x100e('0x78')][_0x100e('0x79')],'raw':!![]})[_0x100e('0x12')](function(_0x554081){return _0x554081;});})[_0x100e('0x12')](function(_0x1a36d8){if(_0x1a36d8){_0x3ed882[_0x100e('0x19')][_0x100e('0x87')]=_0x1a36d8[0x0];if(!_0x1039b3[_0x100e('0x48')][_0x100e('0x67')])return;return db[_0x100e('0x88')][_0x100e('0x47')]({'where':{'id':_0x1039b3[_0x100e('0x48')][_0x100e('0x67')],'role':_0x100e('0x69')},'attributes':['id',_0x100e('0x26'),_0x100e('0x7a'),'email',_0x100e('0x7b')],'raw':!![]});}return null;})[_0x100e('0x12')](function(_0x385bbe){if(!_0x385bbe)return null;_0x3ed882[_0x100e('0x19')][_0x100e('0x69')]=_0x385bbe;return _0x3ed882;})[_0x100e('0x12')](function(_0x580592){if(_0x580592){_0x580592['message']['interface']=util['format'](_0x100e('0x7e'),_0x1039b3[_0x100e('0x68')][_0x100e('0x26')]);_0x580592[_0x100e('0x19')]['channel']=_0x3ed882[_0x100e('0x7f')];_0x580592[_0x100e('0x19')][_0x100e('0x80')]=_0x3ed882[_0x100e('0x7f')];_0x580592['message'][_0x100e('0x81')]=_0x100e('0x89');_0x580592['message']['body']=htmlToText['fromString'](_0x3ed882[_0x100e('0x19')][_0x100e('0x48')]);respondWithRpcPromise(_0x100e('0x82'),_0x100e('0x82'),{'event':_0x100e('0x8a'),'message':_0x580592[_0x100e('0x19')]},client9002);return _0x3ed882;}return null;})[_0x100e('0x12')](respondWithResult(_0x528e4e,null))[_0x100e('0x43')](handleError(_0x528e4e,null));};exports['download']=function(_0x3a0f14,_0x2392ac){var _0x498b12=moment()[_0x100e('0x8b')]()[_0x100e('0x8c')]();var _0xef0c6b=path[_0x100e('0x57')](config['root'],_0x100e('0x8d'),_0x100e('0x8e'),_0x100e('0x8f'));var _0x43266a=path['join'](config['root'],'server',_0x100e('0x8e'),_0x100e('0x56'));var _0x13306a=util[_0x100e('0x6f')](_0x100e('0x90'),_0x498b12);return db[_0x100e('0x3e')][_0x100e('0x47')]({'where':{'id':_0x3a0f14[_0x100e('0x45')]['id']},'attributes':['id',_0x100e('0x48'),_0x100e('0x91'),'to','cc',_0x100e('0x92'),_0x100e('0x93'),_0x100e('0x94')],'include':_0x3a0f14[_0x100e('0x2e')][_0x100e('0x56')]?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0x100e('0x12')](handleEntityNotFound(_0x2392ac,null))['then'](function(_0x5a3d06){if(_0x5a3d06){var _0x366287=_0x5a3d06;var _0x130c28={'from':_0x366287[_0x100e('0x91')],'to':_0x366287['to'],'subject':_0x366287[_0x100e('0x93')],'html':htmlEntities[_0x100e('0x95')](_0x366287['body']),'headers':{'Date':moment(_0x366287[_0x100e('0x94')])['format'](_0x100e('0x96'))},'attachments':[]};if(_0x5a3d06['cc']){_0x130c28[_0x100e('0x97')]['Cc']=_0x5a3d06['cc'];}if(_0x5a3d06[_0x100e('0x92')]){_0x130c28[_0x100e('0x97')][_0x100e('0x98')]=_0x5a3d06[_0x100e('0x92')];}return new BPromise(function(_0xb3ac5,_0x341a14){if(_0x5a3d06[_0x100e('0x99')]){for(var _0x3b6425=0x0;_0x3b6425<_0x5a3d06[_0x100e('0x99')][_0x100e('0x34')];_0x3b6425++){var _0x529104=_0x5a3d06[_0x100e('0x99')][_0x3b6425];var _0x1ba7d4=path[_0x100e('0x57')](_0x43266a,_0x529104['basename']);if(fs['existsSync'](_0x1ba7d4)){_0x130c28[_0x100e('0x56')][_0x100e('0x9a')]({'name':_0x529104['name'],'contentType':_0x529104[_0x100e('0x2b')],'data':fs['readFileSync'](_0x1ba7d4)});}}}emlformat[_0x100e('0x9b')](_0x130c28,function(_0xf5f158,_0x4b4207){if(_0xf5f158)return _0x341a14(_0xf5f158);fs[_0x100e('0x9c')](path[_0x100e('0x57')](_0xef0c6b,_0x13306a),_0x4b4207);return _0xb3ac5(_0x4b4207);});});}})[_0x100e('0x12')](function(_0x591b75){if(_0x591b75){return _0x2392ac['download'](path['join'](_0xef0c6b,_0x13306a),_0x13306a,function(_0xa3980d){if(!_0xa3980d)fs[_0x100e('0x9d')](path['join'](_0xef0c6b,_0x13306a));});}})[_0x100e('0x43')](handleError(_0x2392ac,null));};
\ No newline at end of file
+var _0x404f=['findOne','CmList','List','CmContact','Contacts','DESC','CloudProvider','Smtp','attachments','root','basename','List\x20not\x20found','SendMail','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','stringify','accept','read','readAt','format','UserId','get','MailInteraction','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','User','agent','fullname','manual','interface','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','mail','MailInteractionId','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','ContactId','QueryTypes','internal','rejectmessage','download','unix','join','server','files','message-%s.eml','from','bcc','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','push','build','writeFileSync','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','undefined','limit','count','set','Content-Range','json','update','destroy','end','sendStatus','stack','name','index','map','MailMessage','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','offset','order','sort','where','VIRTUAL','filter','merge','options','include','findAll','rows','show','keys','rawAttributes','length','includeAll','find','body','params','describe','create','out','secret','split','MailAccount'];(function(_0x151334,_0x1e11ac){var _0x3d03da=function(_0x2099cf){while(--_0x2099cf){_0x151334['push'](_0x151334['shift']());}};_0x3d03da(++_0x1e11ac);}(_0x404f,0xed));var _0xf404=function(_0x3b3c4c,_0x1989be){_0x3b3c4c=_0x3b3c4c-0x0;var _0x552319=_0x404f[_0x3b3c4c];return _0x552319;};'use strict';var emlformat=require('eml-format');var moment=require('moment');var BPromise=require(_0xf404('0x0'));var util=require(_0xf404('0x1'));var path=require(_0xf404('0x2'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xf404('0x3'));var htmlToText=require(_0xf404('0x4'));var qs=require(_0xf404('0x5'));var logger=require(_0xf404('0x6'))(_0xf404('0x7'));var interaction_log=require(_0xf404('0x6'))(_0xf404('0x8'));var config=require(_0xf404('0x9'));var db=require(_0xf404('0xa'))['db'];config[_0xf404('0xb')]=_[_0xf404('0xc')](config['redis'],{'host':_0xf404('0xd'),'port':0x18eb});var socket=require(_0xf404('0xe'))(new Redis(config['redis']));var htmlEntities=require(_0xf404('0xf'));require(_0xf404('0x10'))[_0xf404('0x11')](socket);var jayson=require(_0xf404('0x12'));var client=jayson[_0xf404('0x13')][_0xf404('0x14')]({'port':0x232c});var client9003=jayson[_0xf404('0x13')]['http']({'port':0x232b});var client9002=jayson[_0xf404('0x13')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17e38f,_0x2f6d71,_0x598648,_0x54a5b5){return new BPromise(function(_0x3fce4a,_0x2ae235){var _0x4dcd76=_0x54a5b5||client;return _0x4dcd76[_0xf404('0x15')](_0x17e38f,_0x598648)[_0xf404('0x16')](function(_0x4bf79e){logger[_0xf404('0x17')]('MailMessage,\x20%s,\x20%s',_0x2f6d71,_0xf404('0x18'));logger['debug'](_0xf404('0x19'),_0x2f6d71,_0xf404('0x18'),JSON['stringify'](_0x4bf79e));if(_0x4bf79e[_0xf404('0x1a')]){if(_0x4bf79e[_0xf404('0x1a')][_0xf404('0x1b')]===0x1f4){logger['error'](_0xf404('0x1c'),_0x2f6d71,_0x4bf79e[_0xf404('0x1a')][_0xf404('0x1d')]);return _0x2ae235(_0x4bf79e[_0xf404('0x1a')]['message']);}logger[_0xf404('0x1a')]('MailMessage,\x20%s,\x20%s',_0x2f6d71,_0x4bf79e['error'][_0xf404('0x1d')]);return _0x3fce4a(_0x4bf79e[_0xf404('0x1a')][_0xf404('0x1d')]);}else{logger[_0xf404('0x17')]('MailMessage,\x20%s,\x20%s',_0x2f6d71,_0xf404('0x18'));_0x3fce4a(_0x4bf79e[_0xf404('0x1e')][_0xf404('0x1d')]);}})[_0xf404('0x1f')](function(_0x4b9a21){logger['error'](_0xf404('0x1c'),_0x2f6d71,_0x4b9a21);_0x2ae235(_0x4b9a21);});});}function respondWithResult(_0x5df0e8,_0x3d47b9){_0x3d47b9=_0x3d47b9||0xc8;return function(_0x4ae7bd){if(_0x4ae7bd){return _0x5df0e8[_0xf404('0x20')](_0x3d47b9)['json'](_0x4ae7bd);}};}function respondWithFilteredResult(_0x37bbcd,_0x4aff67){return function(_0x3480ea){if(_0x3480ea){var _0xbf63d2=typeof _0x4aff67['offset']===_0xf404('0x21')&&typeof _0x4aff67[_0xf404('0x22')]==='undefined';var _0xd8dee7=_0x3480ea['count'];var _0x391fa9=_0xbf63d2?0x0:_0x4aff67['offset'];var _0x77f7f2=_0xbf63d2?_0x3480ea[_0xf404('0x23')]:_0x4aff67['offset']+_0x4aff67[_0xf404('0x22')];var _0x3687b0;if(_0x77f7f2>=_0xd8dee7){_0x77f7f2=_0xd8dee7;_0x3687b0=0xc8;}else{_0x3687b0=0xce;}_0x37bbcd[_0xf404('0x20')](_0x3687b0);return _0x37bbcd[_0xf404('0x24')](_0xf404('0x25'),_0x391fa9+'-'+_0x77f7f2+'/'+_0xd8dee7)[_0xf404('0x26')](_0x3480ea);}return null;};}function saveUpdates(_0x2589ce){return function(_0x58cd20){if(_0x58cd20){return _0x58cd20[_0xf404('0x27')](_0x2589ce)[_0xf404('0x16')](function(_0x26f277){return _0x26f277;});}return null;};}function removeEntity(_0xc863f8){return function(_0x11e3a4){if(_0x11e3a4){return _0x11e3a4[_0xf404('0x28')]()[_0xf404('0x16')](function(){_0xc863f8['status'](0xcc)[_0xf404('0x29')]();});}};}function handleEntityNotFound(_0x8baf86){return function(_0x1daede){if(!_0x1daede){_0x8baf86[_0xf404('0x2a')](0x194);}return _0x1daede;};}function handleError(_0x88a21b,_0x2661ae){_0x2661ae=_0x2661ae||0x1f4;return function(_0x1577c0){logger[_0xf404('0x1a')](_0x1577c0[_0xf404('0x2b')]);if(_0x1577c0[_0xf404('0x2c')]){delete _0x1577c0[_0xf404('0x2c')];}_0x88a21b[_0xf404('0x20')](_0x2661ae)['send'](_0x1577c0);};}exports[_0xf404('0x2d')]=function(_0xbc458e,_0x435c7a){var _0x107521={},_0x14cdec={},_0x15319d={'count':0x0,'rows':[]};var _0x56c809=_[_0xf404('0x2e')](db[_0xf404('0x2f')]['rawAttributes'],function(_0x467aee){return{'name':_0x467aee['fieldName'],'type':_0x467aee[_0xf404('0x30')][_0xf404('0x31')]};});_0x14cdec[_0xf404('0x32')]=_[_0xf404('0x2e')](_0x56c809,'name');_0x14cdec[_0xf404('0x33')]=_['keys'](_0xbc458e[_0xf404('0x33')]);_0x14cdec[_0xf404('0x34')]=_[_0xf404('0x35')](_0x14cdec[_0xf404('0x32')],_0x14cdec[_0xf404('0x33')]);_0x107521['attributes']=_[_0xf404('0x35')](_0x14cdec[_0xf404('0x32')],qs['fields'](_0xbc458e[_0xf404('0x33')][_0xf404('0x36')]));_0x107521['attributes']=_0x107521[_0xf404('0x37')]['length']?_0x107521[_0xf404('0x37')]:_0x14cdec['model'];if(!_0xbc458e[_0xf404('0x33')][_0xf404('0x38')](_0xf404('0x39'))){_0x107521[_0xf404('0x22')]=qs['limit'](_0xbc458e[_0xf404('0x33')]['limit']);_0x107521['offset']=qs['offset'](_0xbc458e['query'][_0xf404('0x3a')]);}_0x107521[_0xf404('0x3b')]=qs['sort'](_0xbc458e[_0xf404('0x33')][_0xf404('0x3c')]);_0x107521[_0xf404('0x3d')]=qs['filters'](_['pick'](_0xbc458e[_0xf404('0x33')],_0x14cdec[_0xf404('0x34')]),_0x56c809);if(_0xbc458e['query']['filter']){_0x107521[_0xf404('0x3d')]=_['merge'](_0x107521[_0xf404('0x3d')],{'$or':_[_0xf404('0x2e')](_0x56c809,function(_0x1a8d12){if(_0x1a8d12['type']!==_0xf404('0x3e')){var _0x1e693e={};_0x1e693e[_0x1a8d12[_0xf404('0x2c')]]={'$like':'%'+_0xbc458e['query'][_0xf404('0x3f')]+'%'};return _0x1e693e;}})});}_0x107521=_[_0xf404('0x40')]({},_0x107521,_0xbc458e[_0xf404('0x41')]);var _0x5f3879={'where':_0x107521['where']};return db[_0xf404('0x2f')][_0xf404('0x23')](_0x5f3879)[_0xf404('0x16')](function(_0x31cbd7){_0x15319d[_0xf404('0x23')]=_0x31cbd7;if(_0xbc458e[_0xf404('0x33')]['includeAll']){_0x107521[_0xf404('0x42')]=[{'all':!![]}];}return db[_0xf404('0x2f')][_0xf404('0x43')](_0x107521);})[_0xf404('0x16')](function(_0x44784a){_0x15319d[_0xf404('0x44')]=_0x44784a;return _0x15319d;})[_0xf404('0x16')](respondWithFilteredResult(_0x435c7a,_0x107521))['catch'](handleError(_0x435c7a,null));};exports[_0xf404('0x45')]=function(_0x47e414,_0x491412){var _0x93950e={'raw':!![],'where':{'id':_0x47e414['params']['id']}},_0x1fcb09={};_0x1fcb09[_0xf404('0x32')]=_[_0xf404('0x46')](db[_0xf404('0x2f')][_0xf404('0x47')]);_0x1fcb09[_0xf404('0x33')]=_[_0xf404('0x46')](_0x47e414[_0xf404('0x33')]);_0x1fcb09[_0xf404('0x34')]=_[_0xf404('0x35')](_0x1fcb09[_0xf404('0x32')],_0x1fcb09['query']);_0x93950e[_0xf404('0x37')]=_['intersection'](_0x1fcb09['model'],qs['fields'](_0x47e414['query'][_0xf404('0x36')]));_0x93950e[_0xf404('0x37')]=_0x93950e['attributes'][_0xf404('0x48')]?_0x93950e[_0xf404('0x37')]:_0x1fcb09[_0xf404('0x32')];if(_0x47e414[_0xf404('0x33')][_0xf404('0x49')]){_0x93950e[_0xf404('0x42')]=[{'all':!![]}];}_0x93950e=_[_0xf404('0x40')]({},_0x93950e,_0x47e414[_0xf404('0x41')]);return db[_0xf404('0x2f')][_0xf404('0x4a')](_0x93950e)[_0xf404('0x16')](handleEntityNotFound(_0x491412,null))[_0xf404('0x16')](respondWithResult(_0x491412,null))[_0xf404('0x1f')](handleError(_0x491412,null));};exports[_0xf404('0x27')]=function(_0x366190,_0x414e6b){if(_0x366190[_0xf404('0x4b')]['id']){delete _0x366190[_0xf404('0x4b')]['id'];}return db['MailMessage'][_0xf404('0x4a')]({'where':{'id':_0x366190['params']['id']}})[_0xf404('0x16')](handleEntityNotFound(_0x414e6b,null))[_0xf404('0x16')](saveUpdates(_0x366190[_0xf404('0x4b')],null))[_0xf404('0x16')](respondWithResult(_0x414e6b,null))[_0xf404('0x1f')](handleError(_0x414e6b,null));};exports[_0xf404('0x28')]=function(_0x58820c,_0x536115){return db[_0xf404('0x2f')]['find']({'where':{'id':_0x58820c[_0xf404('0x4c')]['id']}})[_0xf404('0x16')](handleEntityNotFound(_0x536115,null))[_0xf404('0x16')](removeEntity(_0x536115,null))[_0xf404('0x1f')](handleError(_0x536115,null));};exports[_0xf404('0x4d')]=function(_0x368a88,_0x49c17f){return db[_0xf404('0x2f')][_0xf404('0x4d')]()[_0xf404('0x16')](respondWithResult(_0x49c17f,null))['catch'](handleError(_0x49c17f,null));};exports[_0xf404('0x4e')]=function(_0x4905d7,_0x79008f){return db[_0xf404('0x2f')]['create'](_0x4905d7[_0xf404('0x4b')])[_0xf404('0x16')](function(_0x110fc2){if(_0x110fc2){if(_0x110fc2['direction']===_0xf404('0x4f')&&!_0x110fc2[_0xf404('0x50')]){var _0x185aaa,_0x164dcc,_0x41ca38;if(_0x4905d7['body']['to']){_0x164dcc=_0x4905d7[_0xf404('0x4b')]['to'][_0xf404('0x51')](',')[0x0];}return db[_0xf404('0x52')][_0xf404('0x53')]({'where':{'id':_0x110fc2['MailAccountId']},'include':[{'model':db[_0xf404('0x54')],'as':_0xf404('0x55'),'include':[{'model':db[_0xf404('0x56')],'as':_0xf404('0x57'),'where':{'email':_0x164dcc},'limit':0x1,'order':[['updatedAt',_0xf404('0x58')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xf404('0x59'),'raw':!![]}]}]})['then'](function(_0x56e2e0){_0x185aaa=_0x56e2e0;if(!_0x185aaa||!_0x185aaa[_0xf404('0x5a')])return;var _0x1c9903=_0x185aaa['getSmtpOptions']();if(_0x4905d7[_0xf404('0x4b')][_0xf404('0x5b')]&&_0x4905d7[_0xf404('0x4b')][_0xf404('0x5b')][_0xf404('0x48')]){for(var _0xe5b18=0x0;_0xe5b18<_0x4905d7['body']['attachments'][_0xf404('0x48')];_0xe5b18+=0x1){_0x4905d7[_0xf404('0x4b')][_0xf404('0x5b')][_0xe5b18]={'filename':_0x4905d7['body'][_0xf404('0x5b')][_0xe5b18]['name'],'path':path['join'](config[_0xf404('0x5c')],'server/files/attachments',_0x4905d7[_0xf404('0x4b')][_0xf404('0x5b')][_0xe5b18][_0xf404('0x5d')])};}}_0x41ca38={'account':_0x1c9903,'message':_0x4905d7[_0xf404('0x4b')]};return;})[_0xf404('0x16')](function(){if(_0x185aaa[_0xf404('0x55')]){if(_0x185aaa[_0xf404('0x55')][_0xf404('0x57')][_0xf404('0x48')]){return _0x185aaa[_0xf404('0x55')][_0xf404('0x57')][0x0];}else{return db['CmContact'][_0xf404('0x4e')](_[_0xf404('0xc')](_0x4905d7['body'],{'firstName':_0x4905d7['body']['to'],'email':_0x4905d7[_0xf404('0x4b')]['to'],'phone':_0x4905d7[_0xf404('0x4b')]['to'],'ListId':_0x185aaa['ListId']}));}}else{throw new Error(_0xf404('0x5e'));}})['then'](function(){if(_0x41ca38){return respondWithRpcPromise(_0xf404('0x5f'),_0xf404('0x60'),_0x41ca38,client9003)[_0xf404('0x16')](function(_0x244b17){return _0x110fc2[_0xf404('0x27')]({'read':!![],'messageId':_0x244b17[_0xf404('0x61')],'sentAt':moment()['format'](_0xf404('0x62'))});})['catch'](function(_0x141e32){logger['error']('%s',JSON[_0xf404('0x63')](_0x141e32));return _0x110fc2;});}return _0x110fc2;});}return _0x110fc2;}})[_0xf404('0x16')](respondWithResult(_0x79008f,0xc9))[_0xf404('0x1f')](handleError(_0x79008f,null));};exports[_0xf404('0x64')]=function(_0x1daf31,_0x51dd0b){var _0x238d2e={'agent':{},'channel':'mail'};if(_0x1daf31[_0xf404('0x4b')]['id']){delete _0x1daf31[_0xf404('0x4b')]['id'];}_0x1daf31[_0xf404('0x4b')][_0xf404('0x65')]=!![];_0x1daf31['body'][_0xf404('0x66')]=moment()[_0xf404('0x67')](_0xf404('0x62'));_0x1daf31[_0xf404('0x4b')][_0xf404('0x68')]=_0x1daf31[_0xf404('0x4b')][_0xf404('0x68')]||_0x1daf31['user']['id'];_0x238d2e['agent']['id']=_0x1daf31[_0xf404('0x4b')][_0xf404('0x68')];return db[_0xf404('0x2f')]['find']({'where':{'id':_0x1daf31['params']['id'],'UserId':null}})[_0xf404('0x16')](handleEntityNotFound(_0x51dd0b,null))[_0xf404('0x16')](saveUpdates(_0x1daf31[_0xf404('0x4b')],null))[_0xf404('0x16')](function(_0x49d086){if(_0x49d086){_0x238d2e[_0xf404('0x1d')]=_0x49d086[_0xf404('0x69')]({'plain':!![]});return db[_0xf404('0x6a')][_0xf404('0x4a')]({'where':{'id':_0x49d086['MailInteractionId']}});}return null;})[_0xf404('0x16')](handleEntityNotFound(_0x51dd0b,null))[_0xf404('0x16')](function(_0x157ae7){if(_0x157ae7){return _0x157ae7[_0xf404('0x27')]({'UserId':_0x1daf31[_0xf404('0x4b')][_0xf404('0x68')],'read1stAt':_['isNil'](_0x157ae7[_0xf404('0x6b')])?moment()[_0xf404('0x67')](_0xf404('0x62')):undefined});}return null;})[_0xf404('0x16')](function(_0x542475){if(_0x542475){_0x238d2e[_0xf404('0x6c')]=_0x542475[_0xf404('0x69')]({'plain':!![]});interaction_log['info'](_0xf404('0x6d'),_0x1daf31[_0xf404('0x6e')]['id'],_0x1daf31[_0xf404('0x6e')]['name'],_0x1daf31[_0xf404('0x6e')]['role'],_0x238d2e['interaction']['id'],_0x1daf31['body']?JSON[_0xf404('0x63')](_0x1daf31[_0xf404('0x4b')]):_0xf404('0x6f'));return respondWithRpcPromise(_0xf404('0x70'),_0xf404('0x71'),_0x238d2e);}return null;})[_0xf404('0x16')](function(_0x80c478){var _0x29e2f9=_0xf404('0x72')+_0x80c478[_0xf404('0x1d')]['ContactId'];return db[_0xf404('0x73')]['query'](_0x29e2f9,{'type':db[_0xf404('0x74')]['QueryTypes'][_0xf404('0x75')],'raw':!![]})[_0xf404('0x16')](function(_0x9b4fe1){return _0x9b4fe1;});})[_0xf404('0x16')](function(_0x10e518){if(_0x10e518){_0x238d2e[_0xf404('0x1d')][_0xf404('0x76')]=_0x10e518[0x0];if(!_0x1daf31[_0xf404('0x4b')]['UserId'])return;return db[_0xf404('0x77')][_0xf404('0x4a')]({'where':{'id':_0x1daf31[_0xf404('0x4b')][_0xf404('0x68')],'role':_0xf404('0x78')},'attributes':['id','name',_0xf404('0x79'),'email','internal'],'raw':!![]});}return null;})[_0xf404('0x16')](function(_0x280d0a){if(!_0x280d0a)return null;_0x238d2e[_0xf404('0x1d')][_0xf404('0x78')]=_0x280d0a;return _0x238d2e;})[_0xf404('0x16')](function(_0x1f7945){if(_0x1f7945){if(_0x1daf31['body'][_0xf404('0x7a')]){_0x238d2e[_0xf404('0x1d')][_0xf404('0x7b')]=util['format'](_0xf404('0x7c'),_0x1daf31[_0xf404('0x6e')][_0xf404('0x2c')]);_0x238d2e[_0xf404('0x1d')][_0xf404('0x7d')]=_0x238d2e[_0xf404('0x7d')];_0x238d2e[_0xf404('0x1d')][_0xf404('0x7e')]=_0x238d2e[_0xf404('0x7d')];_0x238d2e['message'][_0xf404('0x7f')]=_0xf404('0x64');_0x238d2e[_0xf404('0x1d')]['body']=htmlToText[_0xf404('0x80')](_0x238d2e[_0xf404('0x1d')]['body']);return respondWithRpcPromise(_0xf404('0x81'),_0xf404('0x81'),{'event':_0xf404('0x82'),'message':_0x238d2e[_0xf404('0x1d')]},client9002)['then'](function(){return _0x238d2e;});}return _0x238d2e;}return null;})[_0xf404('0x16')](respondWithResult(_0x51dd0b,null))[_0xf404('0x1f')](handleError(_0x51dd0b,null));};exports[_0xf404('0x83')]=function(_0x42a511,_0x144e7a){var _0x2cdb3e={'agent':{},'channel':_0xf404('0x84')};if(_0x42a511[_0xf404('0x4b')]['id']){delete _0x42a511[_0xf404('0x4b')]['id'];}_0x42a511[_0xf404('0x4b')][_0xf404('0x68')]=_0x42a511[_0xf404('0x4b')][_0xf404('0x68')]||_0x42a511[_0xf404('0x6e')]['id'];_0x2cdb3e[_0xf404('0x78')]['id']=_0x42a511[_0xf404('0x4b')]['UserId'];return db[_0xf404('0x2f')][_0xf404('0x4a')]({'where':{'id':_0x42a511[_0xf404('0x4c')]['id'],'UserId':null}})[_0xf404('0x16')](handleEntityNotFound(_0x144e7a,null))[_0xf404('0x16')](function(_0x519781){if(_0x519781){_0x2cdb3e[_0xf404('0x1d')]=_0x519781['get']({'plain':!![]});return db[_0xf404('0x6a')][_0xf404('0x4a')]({'where':{'id':_0x519781[_0xf404('0x85')]}});}return null;})[_0xf404('0x16')](handleEntityNotFound(_0x144e7a,null))['then'](function(_0x5004eb){if(_0x5004eb){_0x2cdb3e['interaction']=_0x5004eb[_0xf404('0x69')]({'plain':!![]});interaction_log[_0xf404('0x17')](_0xf404('0x86'),_0x42a511['user']['id'],_0x42a511[_0xf404('0x6e')][_0xf404('0x2c')],_0x42a511[_0xf404('0x6e')][_0xf404('0x87')],_0x2cdb3e[_0xf404('0x6c')]['id'],_0x42a511[_0xf404('0x4b')]?JSON[_0xf404('0x63')](_0x42a511[_0xf404('0x4b')]):_0xf404('0x6f'));return respondWithRpcPromise(_0xf404('0x88'),_0xf404('0x89'),_0x2cdb3e);}return null;})[_0xf404('0x16')](function(_0x1bd9b7){var _0x580e4d=_0xf404('0x72')+_0x1bd9b7[_0xf404('0x1d')][_0xf404('0x8a')];return db[_0xf404('0x73')][_0xf404('0x33')](_0x580e4d,{'type':db[_0xf404('0x74')][_0xf404('0x8b')][_0xf404('0x75')],'raw':!![]})['then'](function(_0x447921){return _0x447921;});})['then'](function(_0x27d101){if(_0x27d101){_0x2cdb3e['message'][_0xf404('0x76')]=_0x27d101[0x0];if(!_0x42a511[_0xf404('0x4b')]['UserId'])return;return db[_0xf404('0x77')][_0xf404('0x4a')]({'where':{'id':_0x42a511[_0xf404('0x4b')][_0xf404('0x68')],'role':_0xf404('0x78')},'attributes':['id',_0xf404('0x2c'),_0xf404('0x79'),'email',_0xf404('0x8c')],'raw':!![]});}return null;})[_0xf404('0x16')](function(_0x289807){if(!_0x289807)return null;_0x2cdb3e[_0xf404('0x1d')][_0xf404('0x78')]=_0x289807;return _0x2cdb3e;})[_0xf404('0x16')](function(_0x273f78){if(_0x273f78){_0x273f78[_0xf404('0x1d')][_0xf404('0x7b')]=util[_0xf404('0x67')]('SIP/%s',_0x42a511['user']['name']);_0x273f78[_0xf404('0x1d')]['channel']=_0x2cdb3e[_0xf404('0x7d')];_0x273f78[_0xf404('0x1d')]['motionChannel']=_0x2cdb3e['channel'];_0x273f78[_0xf404('0x1d')][_0xf404('0x7f')]=_0xf404('0x83');_0x273f78['message'][_0xf404('0x4b')]=htmlToText['fromString'](_0x2cdb3e[_0xf404('0x1d')][_0xf404('0x4b')]);respondWithRpcPromise(_0xf404('0x81'),_0xf404('0x81'),{'event':_0xf404('0x8d'),'message':_0x273f78['message']},client9002);return _0x2cdb3e;}return null;})['then'](respondWithResult(_0x144e7a,null))[_0xf404('0x1f')](handleError(_0x144e7a,null));};exports[_0xf404('0x8e')]=function(_0x5d924b,_0x14cea9){var _0x398c9d=moment()[_0xf404('0x8f')]()['toString']();var _0x48814d=path[_0xf404('0x90')](config['root'],_0xf404('0x91'),_0xf404('0x92'),'tmp');var _0x6de34d=path[_0xf404('0x90')](config[_0xf404('0x5c')],_0xf404('0x91'),_0xf404('0x92'),_0xf404('0x5b'));var _0xf43379=util[_0xf404('0x67')](_0xf404('0x93'),_0x398c9d);return db[_0xf404('0x2f')][_0xf404('0x4a')]({'where':{'id':_0x5d924b[_0xf404('0x4c')]['id']},'attributes':['id',_0xf404('0x4b'),_0xf404('0x94'),'to','cc',_0xf404('0x95'),'subject',_0xf404('0x96')],'include':_0x5d924b[_0xf404('0x33')][_0xf404('0x5b')]?[{'model':db[_0xf404('0x97')],'as':_0xf404('0x98')}]:undefined})['then'](handleEntityNotFound(_0x14cea9,null))[_0xf404('0x16')](function(_0x4f0b8f){if(_0x4f0b8f){var _0x592994=_0x4f0b8f;var _0x4a1c1c={'from':_0x592994[_0xf404('0x94')],'to':_0x592994['to'],'subject':_0x592994['subject'],'html':htmlEntities[_0xf404('0x99')](_0x592994[_0xf404('0x4b')]),'headers':{'Date':moment(_0x592994[_0xf404('0x96')])[_0xf404('0x67')](_0xf404('0x9a'))},'attachments':[]};if(_0x4f0b8f['cc']){_0x4a1c1c[_0xf404('0x9b')]['Cc']=_0x4f0b8f['cc'];}if(_0x4f0b8f[_0xf404('0x95')]){_0x4a1c1c['headers'][_0xf404('0x9c')]=_0x4f0b8f[_0xf404('0x95')];}return new BPromise(function(_0xd3dcb3,_0x31808a){if(_0x4f0b8f[_0xf404('0x98')]){for(var _0x57a59b=0x0;_0x57a59b<_0x4f0b8f[_0xf404('0x98')][_0xf404('0x48')];_0x57a59b++){var _0x2be5df=_0x4f0b8f[_0xf404('0x98')][_0x57a59b];var _0x149789=path[_0xf404('0x90')](_0x6de34d,_0x2be5df[_0xf404('0x5d')]);if(fs['existsSync'](_0x149789)){_0x4a1c1c['attachments'][_0xf404('0x9d')]({'name':_0x2be5df[_0xf404('0x2c')],'contentType':_0x2be5df[_0xf404('0x30')],'data':fs['readFileSync'](_0x149789)});}}}emlformat[_0xf404('0x9e')](_0x4a1c1c,function(_0x448626,_0x85a56b){if(_0x448626)return _0x31808a(_0x448626);fs[_0xf404('0x9f')](path[_0xf404('0x90')](_0x48814d,_0xf43379),_0x85a56b);return _0xd3dcb3(_0x85a56b);});});}})[_0xf404('0x16')](function(_0x452c70){if(_0x452c70){return _0x14cea9[_0xf404('0x8e')](path['join'](_0x48814d,_0xf43379),_0xf43379,function(_0x5dd4f4){if(!_0x5dd4f4)fs['unlinkSync'](path[_0xf404('0x90')](_0x48814d,_0xf43379));});}})[_0xf404('0x1f')](handleError(_0x14cea9,null));};
\ No newline at end of file
index 600532a..9c7bf3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d2=['save','update','remove','emit','hasOwnProperty','hook','exports','events','MailMessage'];(function(_0x58c20f,_0x4cdb1b){var _0x3b0318=function(_0x36fa84){while(--_0x36fa84){_0x58c20f['push'](_0x58c20f['shift']());}};_0x3b0318(++_0x4cdb1b);}(_0xc9d2,0x73));var _0x2c9d=function(_0x5e7fa4,_0x1c210f){_0x5e7fa4=_0x5e7fa4-0x0;var _0x454264=_0xc9d2[_0x5e7fa4];return _0x454264;};'use strict';var EventEmitter=require(_0x2c9d('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x2c9d('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2c9d('0x2'),'afterUpdate':_0x2c9d('0x3'),'afterDestroy':_0x2c9d('0x4')};function emitEvent(_0x101392){return function(_0x3efe47,_0x119f57,_0x1a635a){MailMessageEvents[_0x2c9d('0x5')](_0x101392+':'+_0x3efe47['id'],_0x3efe47);MailMessageEvents['emit'](_0x101392,_0x3efe47);_0x1a635a(null);};}for(var e in events){if(events[_0x2c9d('0x6')](e)){var event=events[e];MailMessage[_0x2c9d('0x7')](e,emitEvent(event));}}module[_0x2c9d('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x2850=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x2850,0x18d));var _0x0285=function(_0x568bba,_0x2cabca){_0x568bba=_0x568bba-0x0;var _0x3b49e0=_0x2850[_0x568bba];return _0x3b49e0;};'use strict';var EventEmitter=require(_0x0285('0x0'));var MailMessage=require(_0x0285('0x1'))['db'][_0x0285('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x0285('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0285('0x4'),'afterDestroy':_0x0285('0x5')};function emitEvent(_0x549bf6){return function(_0x2e4cf3,_0x1b2449,_0x540a05){MailMessageEvents[_0x0285('0x6')](_0x549bf6+':'+_0x2e4cf3['id'],_0x2e4cf3);MailMessageEvents[_0x0285('0x6')](_0x549bf6,_0x2e4cf3);_0x540a05(null);};}for(var e in events){if(events[_0x0285('0x7')](e)){var event=events[e];MailMessage[_0x0285('0x8')](e,emitEvent(event));}}module[_0x0285('0x9')]=MailMessageEvents;
\ No newline at end of file
index be94969..1ec901f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06c7=['utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailMessage.attributes','define','fti_mail_messages','plainBody','subject','fromString','body','models','get','direction','toLowerCase','secret','isNil','MailInteraction','findOne','MailInteractionId','then','update','createdAt','error','utf8mb4'];(function(_0x5c027f,_0xa40135){var _0x5392f3=function(_0x581c3b){while(--_0x581c3b){_0x5c027f['push'](_0x5c027f['shift']());}};_0x5392f3(++_0xa40135);}(_0x06c7,0x1c3));var _0x706c=function(_0x183fd4,_0x2a7180){_0x183fd4=_0x183fd4-0x0;var _0x25bab7=_0x06c7[_0x183fd4];return _0x25bab7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x706c('0x0'))(_0x706c('0x1'));var moment=require(_0x706c('0x2'));var BPromise=require(_0x706c('0x3'));var rp=require(_0x706c('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x706c('0x5'));var rimraf=require(_0x706c('0x6'));var config=require(_0x706c('0x7'));var attributes=require(_0x706c('0x8'));module['exports']=function(_0x3b5c18,_0xa03ae0){return _0x3b5c18[_0x706c('0x9')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0x706c('0xa'),'fields':[_0x706c('0xb'),_0x706c('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4a487f,_0x4bad9a,_0x5f232c){if(_0x4a487f['body']){_0x4a487f['plainBody']=htmlToText[_0x706c('0xd')](_0x4a487f[_0x706c('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x5f232c(null,_0x4bad9a);},'afterCreate':function(_0x4bd10c,_0x248e6f,_0x2acfe5){var _0x2e7ac5=_0x3b5c18[_0x706c('0xf')];var _0x2421fc=_0x4bd10c[_0x706c('0x10')]({'plain':!![]});if(_0x2421fc[_0x706c('0x11')][_0x706c('0x12')]()==='in'||_0x2421fc['direction'][_0x706c('0x12')]()==='out'&&!_0x2421fc[_0x706c('0x13')]&&!_[_0x706c('0x14')](_0x2421fc['UserId'])){_0x2e7ac5[_0x706c('0x15')][_0x706c('0x16')]({'where':{'id':_0x2421fc[_0x706c('0x17')]}})[_0x706c('0x18')](function(_0x26d6dd){if(_0x26d6dd){_0x26d6dd[_0x706c('0x19')]({'lastMsgAt':_0x2421fc[_0x706c('0x1a')],'lastMsgDirection':_0x2421fc[_0x706c('0x11')][_0x706c('0x12')]()});}})['catch'](function(_0x25c8da){console[_0x706c('0x1b')](_0x25c8da);});}_0x2acfe5();}},'charset':_0x706c('0x1c'),'collate':_0x706c('0x1d')});};
\ No newline at end of file
+var _0xb977=['isNil','UserId','MailInteraction','findOne','MailInteractionId','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','fromString','models','direction','toLowerCase','out','secret'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xb977,0x70));var _0x7b97=function(_0x358810,_0x160a9d){_0x358810=_0x358810-0x0;var _0x4ba545=_0xb977[_0x358810];return _0x4ba545;};'use strict';var _=require(_0x7b97('0x0'));var util=require('util');var logger=require(_0x7b97('0x1'))(_0x7b97('0x2'));var moment=require(_0x7b97('0x3'));var BPromise=require(_0x7b97('0x4'));var rp=require(_0x7b97('0x5'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x7b97('0x6'));var rimraf=require(_0x7b97('0x7'));var config=require(_0x7b97('0x8'));var attributes=require('./mailMessage.attributes');module[_0x7b97('0x9')]=function(_0x3271e3,_0x2abce9){return _0x3271e3[_0x7b97('0xa')](_0x7b97('0xb'),attributes,{'tableName':_0x7b97('0xc'),'paranoid':![],'indexes':[{'name':_0x7b97('0xd'),'fields':[_0x7b97('0xd')]},{'name':_0x7b97('0xe'),'fields':[_0x7b97('0xf'),_0x7b97('0x10')],'type':_0x7b97('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x45248c,_0x3bef78,_0x430330){if(_0x45248c['body']){_0x45248c[_0x7b97('0xf')]=htmlToText[_0x7b97('0x12')](_0x45248c['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x430330(null,_0x3bef78);},'afterCreate':function(_0x3fc8d1,_0xbd92e1,_0x4a5e45){var _0x5db0dc=_0x3271e3[_0x7b97('0x13')];var _0x18023b=_0x3fc8d1['get']({'plain':!![]});if(_0x18023b[_0x7b97('0x14')][_0x7b97('0x15')]()==='in'||_0x18023b[_0x7b97('0x14')][_0x7b97('0x15')]()===_0x7b97('0x16')&&!_0x18023b[_0x7b97('0x17')]&&!_[_0x7b97('0x18')](_0x18023b[_0x7b97('0x19')])){_0x5db0dc[_0x7b97('0x1a')][_0x7b97('0x1b')]({'where':{'id':_0x18023b[_0x7b97('0x1c')]}})['then'](function(_0xed2136){if(_0xed2136){_0xed2136[_0x7b97('0x1d')]({'lastMsgAt':_0x18023b[_0x7b97('0x1e')],'lastMsgDirection':_0x18023b[_0x7b97('0x14')][_0x7b97('0x15')]()});}})[_0x7b97('0x1f')](function(_0x50ae1f){console[_0x7b97('0x20')](_0x50ae1f);});}_0x4a5e45();}},'charset':'utf8mb4','collate':_0x7b97('0x21')});};
\ No newline at end of file
index 5987d96..068b7d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['code','message','request\x20sent','result','catch','CreateMailMessage','MailMessage','create','body','options','raw','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','./mailMessage.socket','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x1d7165,_0x89c7a5){var _0x52cdee=function(_0x17df8a){while(--_0x17df8a){_0x1d7165['push'](_0x1d7165['shift']());}};_0x52cdee(++_0x89c7a5);}(_0x4888,0x198));var _0x8488=function(_0x45e18e,_0x47cc4d){_0x45e18e=_0x45e18e-0x0;var _0x175e61=_0x4888[_0x45e18e];return _0x175e61;};'use strict';var _=require('lodash');var util=require(_0x8488('0x0'));var moment=require(_0x8488('0x1'));var BPromise=require(_0x8488('0x2'));var rs=require(_0x8488('0x3'));var fs=require('fs');var Redis=require(_0x8488('0x4'));var db=require(_0x8488('0x5'))['db'];var utils=require(_0x8488('0x6'));var logger=require('../../config/logger')(_0x8488('0x7'));var config=require(_0x8488('0x8'));var jayson=require(_0x8488('0x9'));var client=jayson[_0x8488('0xa')][_0x8488('0xb')]({'port':0x232a});config[_0x8488('0xc')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8488('0xc')]));require(_0x8488('0xd'))['register'](socket);function respondWithRpcPromise(_0x19c994,_0x1334fe,_0x98223){return new BPromise(function(_0x19a2ee,_0x515ea8){return client[_0x8488('0xe')](_0x19c994,_0x98223)[_0x8488('0xf')](function(_0x468896){logger[_0x8488('0x10')](_0x8488('0x11'),_0x1334fe,'request\x20sent');logger[_0x8488('0x12')](_0x8488('0x13'),_0x1334fe,'request\x20sent',JSON['stringify'](_0x468896));if(_0x468896[_0x8488('0x14')]){if(_0x468896['error'][_0x8488('0x15')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x1334fe,_0x468896[_0x8488('0x14')][_0x8488('0x16')]);return _0x515ea8(_0x468896[_0x8488('0x14')][_0x8488('0x16')]);}logger[_0x8488('0x14')](_0x8488('0x11'),_0x1334fe,_0x468896[_0x8488('0x14')]['message']);return _0x19a2ee(_0x468896[_0x8488('0x14')][_0x8488('0x16')]);}else{logger[_0x8488('0x10')](_0x8488('0x11'),_0x1334fe,_0x8488('0x17'));_0x19a2ee(_0x468896[_0x8488('0x18')][_0x8488('0x16')]);}})[_0x8488('0x19')](function(_0x514c31){logger[_0x8488('0x14')](_0x8488('0x11'),_0x1334fe,_0x514c31);_0x515ea8(_0x514c31);});});}exports[_0x8488('0x1a')]=function(_0x3dd93e){var _0x554ec6=this;return new Promise(function(_0x4a1b45,_0x340d6b){return db[_0x8488('0x1b')][_0x8488('0x1c')](_0x3dd93e[_0x8488('0x1d')],{'raw':_0x3dd93e[_0x8488('0x1e')]?_0x3dd93e[_0x8488('0x1e')][_0x8488('0x1f')]===undefined?!![]:![]:!![]})[_0x8488('0xf')](function(_0x39dd43){logger['info'](_0x8488('0x1a'),_0x3dd93e);logger[_0x8488('0x12')](_0x8488('0x1a'),_0x3dd93e,JSON[_0x8488('0x20')](_0x39dd43));_0x4a1b45(_0x39dd43);})[_0x8488('0x19')](function(_0x54ecda){logger['error']('CreateMailMessage',_0x54ecda['message'],_0x3dd93e);_0x340d6b(_0x554ec6[_0x8488('0x14')](0x1f4,_0x54ecda['message']));});});};
\ No newline at end of file
+var _0xa30a=['then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','MailMessage','create','body','options','raw','CreateMailMessage','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','socket.io-emitter','./mailMessage.socket','register'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0xa30a,0xd7));var _0xaa30=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa30a[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaa30('0x0'));var util=require(_0xaa30('0x1'));var moment=require(_0xaa30('0x2'));var BPromise=require('bluebird');var rs=require(_0xaa30('0x3'));var fs=require('fs');var Redis=require(_0xaa30('0x4'));var db=require(_0xaa30('0x5'))['db'];var utils=require(_0xaa30('0x6'));var logger=require(_0xaa30('0x7'))(_0xaa30('0x8'));var config=require(_0xaa30('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa30('0xa')]['http']({'port':0x232a});config[_0xaa30('0xb')]=_[_0xaa30('0xc')](config[_0xaa30('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xaa30('0xd'))(new Redis(config[_0xaa30('0xb')]));require(_0xaa30('0xe'))[_0xaa30('0xf')](socket);function respondWithRpcPromise(_0x14a6a6,_0x45419f,_0x56f686){return new BPromise(function(_0x5afbf5,_0x12a8ce){return client['request'](_0x14a6a6,_0x56f686)[_0xaa30('0x10')](function(_0x1a5681){logger[_0xaa30('0x11')](_0xaa30('0x12'),_0x45419f,'request\x20sent');logger[_0xaa30('0x13')](_0xaa30('0x14'),_0x45419f,_0xaa30('0x15'),JSON['stringify'](_0x1a5681));if(_0x1a5681[_0xaa30('0x16')]){if(_0x1a5681[_0xaa30('0x16')][_0xaa30('0x17')]===0x1f4){logger[_0xaa30('0x16')](_0xaa30('0x12'),_0x45419f,_0x1a5681[_0xaa30('0x16')][_0xaa30('0x18')]);return _0x12a8ce(_0x1a5681[_0xaa30('0x16')][_0xaa30('0x18')]);}logger[_0xaa30('0x16')]('MailMessage,\x20%s,\x20%s',_0x45419f,_0x1a5681[_0xaa30('0x16')]['message']);return _0x5afbf5(_0x1a5681['error'][_0xaa30('0x18')]);}else{logger[_0xaa30('0x11')](_0xaa30('0x12'),_0x45419f,'request\x20sent');_0x5afbf5(_0x1a5681['result']['message']);}})[_0xaa30('0x19')](function(_0x4acdfa){logger[_0xaa30('0x16')](_0xaa30('0x12'),_0x45419f,_0x4acdfa);_0x12a8ce(_0x4acdfa);});});}exports['CreateMailMessage']=function(_0x4e29f9){var _0x520abb=this;return new Promise(function(_0x3cbf92,_0x3e4f1d){return db[_0xaa30('0x1a')][_0xaa30('0x1b')](_0x4e29f9[_0xaa30('0x1c')],{'raw':_0x4e29f9['options']?_0x4e29f9[_0xaa30('0x1d')][_0xaa30('0x1e')]===undefined?!![]:![]:!![]})[_0xaa30('0x10')](function(_0x2d9e35){logger[_0xaa30('0x11')]('CreateMailMessage',_0x4e29f9);logger[_0xaa30('0x13')](_0xaa30('0x1f'),_0x4e29f9,JSON[_0xaa30('0x20')](_0x2d9e35));_0x3cbf92(_0x2d9e35);})[_0xaa30('0x19')](function(_0x57d1ca){logger[_0xaa30('0x16')](_0xaa30('0x1f'),_0x57d1ca[_0xaa30('0x18')],_0x4e29f9);_0x3e4f1d(_0x520abb[_0xaa30('0x16')](0x1f4,_0x57d1ca[_0xaa30('0x18')]));});});};
\ No newline at end of file
index 65c0806..938f66c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0137=['register','mailMessage:','./mailMessage.events','remove','update','removeListener'];(function(_0x4b1473,_0x570c61){var _0x4eb602=function(_0x4ee4ab){while(--_0x4ee4ab){_0x4b1473['push'](_0x4b1473['shift']());}};_0x4eb602(++_0x570c61);}(_0x0137,0xa4));var _0x7013=function(_0x2223be,_0x4e4034){_0x2223be=_0x2223be-0x0;var _0x453496=_0x0137[_0x2223be];return _0x453496;};'use strict';var MailMessageEvents=require(_0x7013('0x0'));var events=['save',_0x7013('0x1'),_0x7013('0x2')];function createListener(_0x2da33c,_0x1594b6){return function(_0x4665ed){_0x1594b6['emit'](_0x2da33c,_0x4665ed);};}function removeListener(_0x547329,_0x232446){return function(){MailMessageEvents[_0x7013('0x3')](_0x547329,_0x232446);};}exports[_0x7013('0x4')]=function(_0x3e2683){for(var _0x49568=0x0,_0x542117=events['length'];_0x49568<_0x542117;_0x49568++){var _0x52238c=events[_0x49568];var _0x2a633e=createListener(_0x7013('0x5')+_0x52238c,_0x3e2683);MailMessageEvents['on'](_0x52238c,_0x2a633e);}};
\ No newline at end of file
+var _0x7877=['update','emit','length','mailMessage:','save','remove'];(function(_0x17745e,_0x49a551){var _0x14803b=function(_0x1136d0){while(--_0x1136d0){_0x17745e['push'](_0x17745e['shift']());}};_0x14803b(++_0x49a551);}(_0x7877,0xb2));var _0x7787=function(_0x399214,_0x393d1e){_0x399214=_0x399214-0x0;var _0x1c8f4c=_0x7877[_0x399214];return _0x1c8f4c;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x7787('0x0'),_0x7787('0x1'),_0x7787('0x2')];function createListener(_0x4460ba,_0x3cbce2){return function(_0x2aef17){_0x3cbce2[_0x7787('0x3')](_0x4460ba,_0x2aef17);};}function removeListener(_0xa5647e,_0x1f5667){return function(){MailMessageEvents['removeListener'](_0xa5647e,_0x1f5667);};}exports['register']=function(_0x121cd1){for(var _0x144d87=0x0,_0x1d97c6=events[_0x7787('0x4')];_0x144d87<_0x1d97c6;_0x144d87++){var _0x3142be=events[_0x144d87];var _0x3bcbb1=createListener(_0x7787('0x5')+_0x3142be,_0x121cd1);MailMessageEvents['on'](_0x3142be,_0x3bcbb1);}};
\ No newline at end of file
index f9c5494..fa37176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab66=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueue.controller','get','index','isAuthenticated','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','post','create','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeAgents'];(function(_0x328fe8,_0x3959b4){var _0x28eab1=function(_0x5b2053){while(--_0x5b2053){_0x328fe8['push'](_0x328fe8['shift']());}};_0x28eab1(++_0x3959b4);}(_0xab66,0x187));var _0x6ab6=function(_0x126934,_0x91db42){_0x126934=_0x126934-0x0;var _0x4273cc=_0xab66[_0x126934];return _0x4273cc;};'use strict';var multer=require(_0x6ab6('0x0'));var util=require('util');var path=require(_0x6ab6('0x1'));var timeout=require(_0x6ab6('0x2'));var express=require(_0x6ab6('0x3'));var router=express[_0x6ab6('0x4')]();var fs_extra=require(_0x6ab6('0x5'));var auth=require(_0x6ab6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6ab6('0x7'));var controller=require(_0x6ab6('0x8'));router[_0x6ab6('0x9')]('/',auth['isAuthenticated'](),controller[_0x6ab6('0xa')]);router[_0x6ab6('0x9')]('/describe',auth[_0x6ab6('0xb')](),controller[_0x6ab6('0xc')]);router[_0x6ab6('0x9')](_0x6ab6('0xd'),auth['isAuthenticated'](),controller[_0x6ab6('0xe')]);router[_0x6ab6('0x9')](_0x6ab6('0xf'),auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x10')]);router[_0x6ab6('0x9')]('/:id/teams',auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x11')]);router[_0x6ab6('0x9')](_0x6ab6('0x12'),auth[_0x6ab6('0xb')](),controller['getAgents']);router[_0x6ab6('0x13')]('/',auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x14')]);router[_0x6ab6('0x13')](_0x6ab6('0x15'),auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x16')]);router[_0x6ab6('0x13')](_0x6ab6('0x12'),auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x17')]);router[_0x6ab6('0x18')](_0x6ab6('0xd'),auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x19')]);router[_0x6ab6('0x1a')](_0x6ab6('0xd'),auth[_0x6ab6('0xb')](),controller[_0x6ab6('0x1b')]);router[_0x6ab6('0x1a')]('/:id/teams',auth[_0x6ab6('0xb')](),controller['removeTeams']);router[_0x6ab6('0x1a')](_0x6ab6('0x12'),auth['isAuthenticated'](),controller[_0x6ab6('0x1c')]);module[_0x6ab6('0x1d')]=router;
\ No newline at end of file
+var _0xae17=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./mailQueue.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports'];(function(_0x15a211,_0x410bdf){var _0x5c50eb=function(_0x438c76){while(--_0x438c76){_0x15a211['push'](_0x15a211['shift']());}};_0x5c50eb(++_0x410bdf);}(_0xae17,0xd2));var _0x7ae1=function(_0x441810,_0x566a4b){_0x441810=_0x441810-0x0;var _0x4856d1=_0xae17[_0x441810];return _0x4856d1;};'use strict';var multer=require('multer');var util=require(_0x7ae1('0x0'));var path=require('path');var timeout=require(_0x7ae1('0x1'));var express=require(_0x7ae1('0x2'));var router=express[_0x7ae1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7ae1('0x4'));var interaction=require(_0x7ae1('0x5'));var config=require('../../config/environment');var controller=require(_0x7ae1('0x6'));router['get']('/',auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x8')]);router['get'](_0x7ae1('0x9'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0xa')]);router[_0x7ae1('0xb')](_0x7ae1('0xc'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0xd')]);router[_0x7ae1('0xb')](_0x7ae1('0xe'),auth['isAuthenticated'](),controller[_0x7ae1('0xf')]);router[_0x7ae1('0xb')](_0x7ae1('0x10'),auth['isAuthenticated'](),controller[_0x7ae1('0x11')]);router[_0x7ae1('0xb')](_0x7ae1('0x12'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x13')]);router[_0x7ae1('0x14')]('/',auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x15')]);router[_0x7ae1('0x14')](_0x7ae1('0x10'),auth[_0x7ae1('0x7')](),controller['addTeams']);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x7ae1('0x16')]);router[_0x7ae1('0x17')](_0x7ae1('0xc'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x18')]);router[_0x7ae1('0x19')](_0x7ae1('0xc'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x1a')]);router[_0x7ae1('0x19')](_0x7ae1('0x10'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x1b')]);router[_0x7ae1('0x19')](_0x7ae1('0x12'),auth[_0x7ae1('0x7')](),controller[_0x7ae1('0x1c')]);module[_0x7ae1('0x1d')]=router;
\ No newline at end of file
index 13c6a8a..b72e123 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432f=['STRING','INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports','name'];(function(_0x1c4b44,_0x2377de){var _0x10d72b=function(_0x2bd31e){while(--_0x2bd31e){_0x1c4b44['push'](_0x1c4b44['shift']());}};_0x10d72b(++_0x2377de);}(_0x432f,0x17d));var _0xf432=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0x432f[_0x231e16];return _0x570a7c;};'use strict';var Sequelize=require(_0xf432('0x0'));module[_0xf432('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf432('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xf432('0x3')]},'timeout':{'type':Sequelize[_0xf432('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf432('0x5')](_0xf432('0x6'),'beepall',_0xf432('0x7'))}};
\ No newline at end of file
+var _0x1903=['roundrobin','sequelize','exports','STRING','name'];(function(_0x420cc1,_0xba3dcb){var _0x444406=function(_0x2de1c3){while(--_0x2de1c3){_0x420cc1['push'](_0x420cc1['shift']());}};_0x444406(++_0xba3dcb);}(_0x1903,0xb0));var _0x3190=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1903[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3190('0x0'));module[_0x3190('0x1')]={'name':{'type':Sequelize[_0x3190('0x2')],'unique':_0x3190('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3190('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall',_0x3190('0x4'))}};
\ No newline at end of file
index 4068c4a..226a63c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccef=['index','MailQueue','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserMailQueue','nolimit','MailQueueId','findAndCountAll','UserId','updatedAt','format','%s/%s','SIP','mailPause','createdAt','getTeams','options','addTeams','ids','Team','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','userMailQueue:save','removeTeams','field','tq.TeamId','team_has_mail_queues','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','every','includes','all','union','compact','value','isEmpty','removeAgents','forEach','emit','userMailQueue:remove','omit','spread','getAgents','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','update','destroy','then','get','MailQueues','UserProfileResource','stack','name'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xccef,0x1ee));var _0xfcce=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xccef[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfcce('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfcce('0x1'));var rp=require(_0xfcce('0x2'));var moment=require('moment');var BPromise=require(_0xfcce('0x3'));var Mustache=require(_0xfcce('0x4'));var util=require(_0xfcce('0x5'));var path=require('path');var sox=require(_0xfcce('0x6'));var csv=require(_0xfcce('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfcce('0x8'));var _=require(_0xfcce('0x9'));var squel=require('squel');var crypto=require(_0xfcce('0xa'));var jsforce=require(_0xfcce('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfcce('0xc'));var Papa=require(_0xfcce('0xd'));var Redis=require(_0xfcce('0xe'));var authService=require(_0xfcce('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfcce('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfcce('0x11'))(_0xfcce('0x12'));var utils=require('../../config/utils');var config=require(_0xfcce('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfcce('0x14'))['db'];config[_0xfcce('0x15')]=_[_0xfcce('0x16')](config[_0xfcce('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0xfcce('0x17'))(new Redis(config[_0xfcce('0x15')]));require(_0xfcce('0x18'))[_0xfcce('0x19')](socket);function respondWithStatusCode(_0x5dfb69,_0x5ba45b){_0x5ba45b=_0x5ba45b||0xcc;return function(_0x1b2851){if(_0x1b2851){return _0x5dfb69[_0xfcce('0x1a')](_0x5ba45b);}return _0x5dfb69['status'](_0x5ba45b)[_0xfcce('0x1b')]();};}function respondWithResult(_0x368621,_0x5e4994){_0x5e4994=_0x5e4994||0xc8;return function(_0x1492cc){if(_0x1492cc){return _0x368621['status'](_0x5e4994)[_0xfcce('0x1c')](_0x1492cc);}};}function respondWithFilteredResult(_0xa220b1,_0x58c9fb){return function(_0x223ca0){if(_0x223ca0){var _0x15ec3f=typeof _0x58c9fb[_0xfcce('0x1d')]===_0xfcce('0x1e')&&typeof _0x58c9fb[_0xfcce('0x1f')]==='undefined';var _0x269594=_0x223ca0[_0xfcce('0x20')];var _0x337201=_0x15ec3f?0x0:_0x58c9fb[_0xfcce('0x1d')];var _0xc4e5af=_0x15ec3f?_0x223ca0[_0xfcce('0x20')]:_0x58c9fb[_0xfcce('0x1d')]+_0x58c9fb[_0xfcce('0x1f')];var _0x5159b1;if(_0xc4e5af>=_0x269594){_0xc4e5af=_0x269594;_0x5159b1=0xc8;}else{_0x5159b1=0xce;}_0xa220b1[_0xfcce('0x21')](_0x5159b1);return _0xa220b1[_0xfcce('0x22')](_0xfcce('0x23'),_0x337201+'-'+_0xc4e5af+'/'+_0x269594)[_0xfcce('0x1c')](_0x223ca0);}return null;};}function patchUpdates(_0x2adf97){return function(_0xde5a7f){try{jsonpatch[_0xfcce('0x24')](_0xde5a7f,_0x2adf97,!![]);}catch(_0x2def2c){return BPromise[_0xfcce('0x25')](_0x2def2c);}return _0xde5a7f['save']();};}function saveUpdates(_0x517fa0,_0x1fca14){return function(_0x151ab3){if(_0x151ab3){return _0x151ab3[_0xfcce('0x26')](_0x517fa0)['then'](function(_0x34c8c9){return _0x34c8c9;});}return null;};}function removeEntity(_0x5ad980,_0x1ba786){return function(_0x388b1a){if(_0x388b1a){return _0x388b1a[_0xfcce('0x27')]()[_0xfcce('0x28')](function(){var _0x5af1c8=_0x388b1a[_0xfcce('0x29')]({'plain':!![]});var _0x37e42d=_0xfcce('0x2a');return db[_0xfcce('0x2b')]['destroy']({'where':{'type':_0x37e42d,'resourceId':_0x5af1c8['id']}})[_0xfcce('0x28')](function(){return _0x388b1a;});})['then'](function(){_0x5ad980[_0xfcce('0x21')](0xcc)[_0xfcce('0x1b')]();});}};}function handleEntityNotFound(_0x40716c,_0x1ce273){return function(_0xa720a3){if(!_0xa720a3){_0x40716c['sendStatus'](0x194);}return _0xa720a3;};}function handleError(_0x3b4b2c,_0x27787b){_0x27787b=_0x27787b||0x1f4;return function(_0x1cb72d){logger['error'](_0x1cb72d[_0xfcce('0x2c')]);if(_0x1cb72d[_0xfcce('0x2d')]){delete _0x1cb72d[_0xfcce('0x2d')];}_0x3b4b2c['status'](_0x27787b)['send'](_0x1cb72d);};}exports[_0xfcce('0x2e')]=function(_0x147581,_0xc76958){var _0x1c79e1={},_0x5bec9d={},_0xedb95f={'count':0x0,'rows':[]};var _0x3459ac=_['map'](db[_0xfcce('0x2f')][_0xfcce('0x30')],function(_0x48b46f){return{'name':_0x48b46f[_0xfcce('0x31')],'type':_0x48b46f[_0xfcce('0x32')][_0xfcce('0x33')]};});_0x5bec9d['model']=_[_0xfcce('0x34')](_0x3459ac,_0xfcce('0x2d'));_0x5bec9d['query']=_[_0xfcce('0x35')](_0x147581[_0xfcce('0x36')]);_0x5bec9d[_0xfcce('0x37')]=_[_0xfcce('0x38')](_0x5bec9d[_0xfcce('0x39')],_0x5bec9d[_0xfcce('0x36')]);_0x1c79e1[_0xfcce('0x3a')]=_[_0xfcce('0x38')](_0x5bec9d[_0xfcce('0x39')],qs['fields'](_0x147581[_0xfcce('0x36')][_0xfcce('0x3b')]));_0x1c79e1['attributes']=_0x1c79e1[_0xfcce('0x3a')][_0xfcce('0x3c')]?_0x1c79e1[_0xfcce('0x3a')]:_0x5bec9d[_0xfcce('0x39')];if(!_0x147581['query'][_0xfcce('0x3d')]('nolimit')){_0x1c79e1[_0xfcce('0x1f')]=qs[_0xfcce('0x1f')](_0x147581[_0xfcce('0x36')][_0xfcce('0x1f')]);_0x1c79e1[_0xfcce('0x1d')]=qs[_0xfcce('0x1d')](_0x147581['query']['offset']);}_0x1c79e1[_0xfcce('0x3e')]=qs['sort'](_0x147581[_0xfcce('0x36')][_0xfcce('0x3f')]);_0x1c79e1['where']=qs['filters'](_[_0xfcce('0x40')](_0x147581['query'],_0x5bec9d['filters']),_0x3459ac);if(_0x147581[_0xfcce('0x36')][_0xfcce('0x41')]){_0x1c79e1[_0xfcce('0x42')]=_[_0xfcce('0x43')](_0x1c79e1['where'],{'$or':_[_0xfcce('0x34')](_0x3459ac,function(_0x1bb06c){if(_0x1bb06c['type']!=='VIRTUAL'){var _0x3cc8f3={};_0x3cc8f3[_0x1bb06c['name']]={'$like':'%'+_0x147581[_0xfcce('0x36')]['filter']+'%'};return _0x3cc8f3;}})});}_0x1c79e1=_['merge']({},_0x1c79e1,_0x147581['options']);var _0x3ee8ba={'where':_0x1c79e1[_0xfcce('0x42')]};return db[_0xfcce('0x2f')][_0xfcce('0x20')](_0x3ee8ba)[_0xfcce('0x28')](function(_0x5768d0){_0xedb95f[_0xfcce('0x20')]=_0x5768d0;if(_0x147581['query'][_0xfcce('0x44')]){_0x1c79e1['include']=[{'all':!![]}];}return db['MailQueue'][_0xfcce('0x45')](_0x1c79e1);})[_0xfcce('0x28')](function(_0x37819c){_0xedb95f[_0xfcce('0x46')]=_0x37819c;return _0xedb95f;})['then'](respondWithFilteredResult(_0xc76958,_0x1c79e1))[_0xfcce('0x47')](handleError(_0xc76958,null));};exports[_0xfcce('0x48')]=function(_0x2be900,_0x168e83){var _0x304bb0={'raw':!![],'where':{'id':_0x2be900[_0xfcce('0x49')]['id']}},_0xaf12c8={};_0xaf12c8[_0xfcce('0x39')]=_[_0xfcce('0x35')](db[_0xfcce('0x2f')][_0xfcce('0x30')]);_0xaf12c8['query']=_[_0xfcce('0x35')](_0x2be900[_0xfcce('0x36')]);_0xaf12c8[_0xfcce('0x37')]=_[_0xfcce('0x38')](_0xaf12c8['model'],_0xaf12c8['query']);_0x304bb0[_0xfcce('0x3a')]=_[_0xfcce('0x38')](_0xaf12c8['model'],qs[_0xfcce('0x3b')](_0x2be900[_0xfcce('0x36')][_0xfcce('0x3b')]));_0x304bb0[_0xfcce('0x3a')]=_0x304bb0[_0xfcce('0x3a')][_0xfcce('0x3c')]?_0x304bb0['attributes']:_0xaf12c8[_0xfcce('0x39')];if(_0x2be900[_0xfcce('0x36')][_0xfcce('0x44')]){_0x304bb0[_0xfcce('0x4a')]=[{'all':!![]}];}_0x304bb0=_['merge']({},_0x304bb0,_0x2be900['options']);return db[_0xfcce('0x2f')][_0xfcce('0x4b')](_0x304bb0)[_0xfcce('0x28')](handleEntityNotFound(_0x168e83,null))['then'](respondWithResult(_0x168e83,null))[_0xfcce('0x47')](handleError(_0x168e83,null));};exports[_0xfcce('0x4c')]=function(_0x2159df,_0x499fd6){return db[_0xfcce('0x2f')][_0xfcce('0x4c')](_0x2159df[_0xfcce('0x4d')],{})[_0xfcce('0x28')](function(_0x4a0245){var _0x59d0a8=_0x2159df[_0xfcce('0x4e')][_0xfcce('0x29')]({'plain':!![]});if(!_0x59d0a8)throw new Error(_0xfcce('0x4f'));if(_0x59d0a8[_0xfcce('0x50')]===_0xfcce('0x4e')){var _0x5a6ba5=_0x4a0245[_0xfcce('0x29')]({'plain':!![]});var _0x2420a1='MailQueues';return db[_0xfcce('0x51')][_0xfcce('0x4b')]({'where':{'name':_0x2420a1,'userProfileId':_0x59d0a8['userProfileId']},'raw':!![]})[_0xfcce('0x28')](function(_0x581fd2){if(_0x581fd2&&_0x581fd2[_0xfcce('0x52')]===0x0){return db[_0xfcce('0x2b')]['create']({'name':_0x5a6ba5[_0xfcce('0x2d')],'resourceId':_0x5a6ba5['id'],'type':_0x581fd2[_0xfcce('0x2d')],'sectionId':_0x581fd2['id']},{})[_0xfcce('0x28')](function(){return _0x4a0245;});}else{return _0x4a0245;}})[_0xfcce('0x47')](function(_0x5a8c3e){logger[_0xfcce('0x53')](_0xfcce('0x54'),_0x5a8c3e);throw _0x5a8c3e;});}return _0x4a0245;})[_0xfcce('0x28')](respondWithResult(_0x499fd6,0xc9))[_0xfcce('0x47')](handleError(_0x499fd6,null));};exports['update']=function(_0x2619dc,_0x13b45a){if(_0x2619dc[_0xfcce('0x4d')]['id']){delete _0x2619dc[_0xfcce('0x4d')]['id'];}return db['MailQueue'][_0xfcce('0x4b')]({'where':{'id':_0x2619dc['params']['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x13b45a,null))[_0xfcce('0x28')](saveUpdates(_0x2619dc[_0xfcce('0x4d')],null))[_0xfcce('0x28')](respondWithResult(_0x13b45a,null))[_0xfcce('0x47')](handleError(_0x13b45a,null));};exports[_0xfcce('0x27')]=function(_0x2101b0,_0x47f88a){return db['MailQueue'][_0xfcce('0x4b')]({'where':{'id':_0x2101b0[_0xfcce('0x49')]['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x47f88a,null))[_0xfcce('0x28')](removeEntity(_0x47f88a,null))['catch'](handleError(_0x47f88a,null));};exports[_0xfcce('0x55')]=function(_0x9b85ee,_0x59e540){return db[_0xfcce('0x2f')][_0xfcce('0x55')]()['then'](respondWithResult(_0x59e540,null))['catch'](handleError(_0x59e540,null));};exports['getMembers']=function(_0x4b4b6a,_0x38aca0,_0x2d1829){var _0x1283d4={'raw':!![],'where':{}},_0x5d850f={},_0x4d855b;return db['MailQueue'][_0xfcce('0x56')]({'where':{'id':_0x4b4b6a[_0xfcce('0x49')]['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x38aca0,null))[_0xfcce('0x28')](function(_0x3464f1){if(_0x3464f1){_0x4d855b=_0x3464f1[_0xfcce('0x29')]({'plain':!![]});_0x5d850f[_0xfcce('0x39')]=_['keys'](db[_0xfcce('0x57')]['rawAttributes']);_0x5d850f[_0xfcce('0x36')]=_[_0xfcce('0x35')](_0x4b4b6a[_0xfcce('0x36')]);_0x5d850f[_0xfcce('0x37')]=_['intersection'](_0x5d850f[_0xfcce('0x39')],_0x5d850f[_0xfcce('0x36')]);_0x1283d4['attributes']=_[_0xfcce('0x38')](_0x5d850f['model'],qs[_0xfcce('0x3b')](_0x4b4b6a[_0xfcce('0x36')][_0xfcce('0x3b')]));_0x1283d4[_0xfcce('0x3a')]=_0x1283d4['attributes']['length']?_0x1283d4[_0xfcce('0x3a')]:_0x5d850f[_0xfcce('0x39')];if(!_0x4b4b6a['query'][_0xfcce('0x3d')](_0xfcce('0x58'))){_0x1283d4[_0xfcce('0x1f')]=qs[_0xfcce('0x1f')](_0x4b4b6a[_0xfcce('0x36')]['limit']);_0x1283d4[_0xfcce('0x1d')]=qs[_0xfcce('0x1d')](_0x4b4b6a['query'][_0xfcce('0x1d')]);}_0x1283d4['order']=qs[_0xfcce('0x3f')](_0x4b4b6a[_0xfcce('0x36')][_0xfcce('0x3f')]);_0x1283d4[_0xfcce('0x42')]=qs[_0xfcce('0x37')](_[_0xfcce('0x40')](_0x4b4b6a['query'],_0x5d850f[_0xfcce('0x37')]));_0x1283d4[_0xfcce('0x42')][_0xfcce('0x59')]=_0x3464f1['id'];if(_0x4b4b6a[_0xfcce('0x36')][_0xfcce('0x41')]){_0x1283d4['where']=_[_0xfcce('0x43')](_0x1283d4['where'],{'$or':_[_0xfcce('0x34')](_0x1283d4[_0xfcce('0x3a')],function(_0x336a49){var _0x1a9246={};_0x1a9246[_0x336a49]={'$like':'%'+_0x4b4b6a[_0xfcce('0x36')][_0xfcce('0x41')]+'%'};return _0x1a9246;})});}_0x1283d4=_[_0xfcce('0x43')]({},_0x1283d4,_0x4b4b6a['options']);return db['UserMailQueue'][_0xfcce('0x45')](_0x1283d4);}})[_0xfcce('0x28')](function(_0x2bd79b){if(_0x2bd79b){return db['User'][_0xfcce('0x5a')]({'where':{'id':_[_0xfcce('0x34')](_0x2bd79b,_0xfcce('0x5b')),'role':'agent'},'attributes':['id',_0xfcce('0x2d'),'mailPause',_0xfcce('0x5c'),'createdAt']});}})['then'](function(_0x1a3a3a){if(_0x1a3a3a){return{'count':_0x1a3a3a[_0xfcce('0x20')],'rows':_[_0xfcce('0x34')](_0x1a3a3a[_0xfcce('0x46')],function(_0x5b2459){return{'membername':_0x5b2459[_0xfcce('0x2d')],'UserId':_0x5b2459['id'],'queue_name':_0x4d855b[_0xfcce('0x2d')],'MailQueueId':_0x4d855b['id'],'interface':util[_0xfcce('0x5d')](_0xfcce('0x5e'),_0xfcce('0x5f'),_0x5b2459[_0xfcce('0x2d')]),'penalty':0x0,'paused':_0x5b2459[_0xfcce('0x60')],'createdAt':_0x5b2459[_0xfcce('0x61')],'updatedAt':_0x5b2459['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xfcce('0x28')](respondWithFilteredResult(_0x38aca0,_0x1283d4))[_0xfcce('0x47')](handleError(_0x38aca0,null));};exports[_0xfcce('0x62')]=function(_0x443212,_0x29b7fd,_0x45e491){var _0x4bc26c={};var _0x372f53={};var _0x174296;var _0x1cf064;return db['MailQueue'][_0xfcce('0x56')]({'where':{'id':_0x443212['params']['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x29b7fd,null))[_0xfcce('0x28')](function(_0x19d3ed){if(_0x19d3ed){_0x174296=_0x19d3ed;_0x372f53[_0xfcce('0x39')]=_[_0xfcce('0x35')](db['Team'][_0xfcce('0x30')]);_0x372f53[_0xfcce('0x36')]=_[_0xfcce('0x35')](_0x443212[_0xfcce('0x36')]);_0x372f53[_0xfcce('0x37')]=_[_0xfcce('0x38')](_0x372f53[_0xfcce('0x39')],_0x372f53['query']);_0x4bc26c[_0xfcce('0x3a')]=_[_0xfcce('0x38')](_0x372f53[_0xfcce('0x39')],qs[_0xfcce('0x3b')](_0x443212['query'][_0xfcce('0x3b')]));_0x4bc26c[_0xfcce('0x3a')]=_0x4bc26c['attributes'][_0xfcce('0x3c')]?_0x4bc26c[_0xfcce('0x3a')]:_0x372f53[_0xfcce('0x39')];_0x4bc26c[_0xfcce('0x3e')]=qs['sort'](_0x443212['query']['sort']);_0x4bc26c[_0xfcce('0x42')]=qs[_0xfcce('0x37')](_[_0xfcce('0x40')](_0x443212[_0xfcce('0x36')],_0x372f53['filters']));if(_0x443212[_0xfcce('0x36')][_0xfcce('0x41')]){_0x4bc26c[_0xfcce('0x42')]=_[_0xfcce('0x43')](_0x4bc26c[_0xfcce('0x42')],{'$or':_[_0xfcce('0x34')](_0x4bc26c[_0xfcce('0x3a')],function(_0x132880){var _0x4fa544={};_0x4fa544[_0x132880]={'$like':'%'+_0x443212['query'][_0xfcce('0x41')]+'%'};return _0x4fa544;})});}_0x4bc26c=_[_0xfcce('0x43')]({},_0x4bc26c,_0x443212[_0xfcce('0x63')]);return _0x174296['getTeams'](_0x4bc26c);}})[_0xfcce('0x28')](function(_0x15b727){if(_0x15b727){_0x1cf064=_0x15b727[_0xfcce('0x3c')];if(!_0x443212[_0xfcce('0x36')][_0xfcce('0x3d')](_0xfcce('0x58'))){_0x4bc26c[_0xfcce('0x1f')]=qs[_0xfcce('0x1f')](_0x443212[_0xfcce('0x36')]['limit']);_0x4bc26c['offset']=qs['offset'](_0x443212[_0xfcce('0x36')][_0xfcce('0x1d')]);}return _0x174296['getTeams'](_0x4bc26c);}})['then'](function(_0x3c8dac){if(_0x3c8dac){return _0x3c8dac?{'count':_0x1cf064,'rows':_0x3c8dac}:null;}})[_0xfcce('0x28')](respondWithResult(_0x29b7fd,null))[_0xfcce('0x47')](handleError(_0x29b7fd,null));};exports[_0xfcce('0x64')]=function(_0x2c42ff,_0x2d6d73,_0x1e8912){var _0x1fdb15=_0x2c42ff[_0xfcce('0x4d')][_0xfcce('0x65')];return db[_0xfcce('0x66')][_0xfcce('0x45')]({'where':{'id':_0x1fdb15},'attributes':['id'],'include':[{'model':db[_0xfcce('0x67')],'as':_0xfcce('0x68'),'attributes':['id','name',_0xfcce('0x69'),_0xfcce('0x6a'),_0xfcce('0x6b')],'raw':!![]}]})[_0xfcce('0x28')](function(_0x6f5dae){if(_0x6f5dae){var _0x42cc99=_[_0xfcce('0x6c')](_0x6f5dae,function(_0x5b4d17){var _0x3de521=_0x5b4d17[_0xfcce('0x29')]({'plain':!![]});return _0x3de521[_0xfcce('0x68')];});return db[_0xfcce('0x2f')]['find']({'where':{'id':_0x2c42ff[_0xfcce('0x49')]['id']}})[_0xfcce('0x28')](function(_0x264c5a){return db[_0xfcce('0x6d')][_0xfcce('0x6e')](function(_0x3d11b8){return _0x264c5a[_0xfcce('0x64')](_0x1fdb15,{'transaction':_0x3d11b8})[_0xfcce('0x28')](function(){return BPromise[_0xfcce('0x6f')](_0x42cc99,function(_0x5846d8){return db['UserMailQueue']['findOrCreate']({'where':{'UserId':_0x5846d8['id'],'MailQueueId':_0x2c42ff[_0xfcce('0x49')]['id']},'transaction':_0x3d11b8});});})['then'](function(){_0x42cc99['forEach'](function(_0x3a6bf9){socket['emit'](_0xfcce('0x70'),{'UserId':_0x3a6bf9['id'],'MailQueueId':_0x264c5a['id']});});});});});}})[_0xfcce('0x28')](respondWithStatusCode(_0x2d6d73,null))[_0xfcce('0x47')](handleError(_0x2d6d73,null));};exports[_0xfcce('0x71')]=function(_0x3ebebf,_0x4d2a24,_0x1fe83d){return db['Team'][_0xfcce('0x45')]({'where':{'id':_0x3ebebf[_0xfcce('0x36')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xfcce('0x68'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4d2a24,null))[_0xfcce('0x28')](function(_0x3e11fd){var _0x574a8b=_[_0xfcce('0x34')](_0x3e11fd,'id');var _0x44e326=[];var _0x1c7220=[];var _0x6e13c9=squel['select']();_0x6e13c9[_0xfcce('0x72')](_0xfcce('0x73'))['from'](_0xfcce('0x74'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xfcce('0x42')](_0xfcce('0x75'),_0x3ebebf[_0xfcce('0x49')]['id']);for(var _0x4445e3=0x0;_0x4445e3<_0x3e11fd[_0xfcce('0x3c')];_0x4445e3+=0x1){let _0x57882e=_0x3e11fd[_0x4445e3];for(var _0x55de2b=0x0;_0x55de2b<_0x57882e['Agents']['length'];_0x55de2b+=0x1){let _0x5c5751=_0x57882e[_0xfcce('0x68')][_0x55de2b];var _0x2bcc4c=_0x6e13c9[_0xfcce('0x76')]();_0x2bcc4c[_0xfcce('0x42')](_0xfcce('0x77'),_0x5c5751['id']);_0x1c7220['push'](db['sequelize'][_0xfcce('0x36')](_0x2bcc4c[_0xfcce('0x78')](),{'type':db[_0xfcce('0x6d')]['QueryTypes']['SELECT']})['then'](function(_0xd2c1d1){if(_0xd2c1d1['length']===0x1){return _0x5c5751['id'];}else{var _0x23c271=_[_0xfcce('0x79')](_['map'](_0xd2c1d1,'TeamId'),function(_0x51aeae){return _[_0xfcce('0x7a')](_0x574a8b,_0x51aeae);});if(_0x23c271){return _0x5c5751['id'];}}}));}}return BPromise[_0xfcce('0x7b')](_0x1c7220)[_0xfcce('0x28')](function(_0x5112b7){_0x44e326=_(_0x44e326)[_0xfcce('0x7c')](_0x5112b7)[_0xfcce('0x7d')]()[_0xfcce('0x7e')]();return db['MailQueue'][_0xfcce('0x4b')]({'where':{'id':_0x3ebebf[_0xfcce('0x49')]['id']}})['then'](function(_0x544fff){return db[_0xfcce('0x6d')][_0xfcce('0x6e')](function(_0x17efbd){return _0x544fff[_0xfcce('0x71')](_0x3ebebf[_0xfcce('0x36')][_0xfcce('0x65')],{'transaction':_0x17efbd})[_0xfcce('0x28')](function(){if(!_[_0xfcce('0x7f')](_0x44e326)){return _0x544fff[_0xfcce('0x80')](_0x44e326,{'transaction':_0x17efbd});}})[_0xfcce('0x28')](function(){_0x44e326[_0xfcce('0x81')](function(_0x537799){socket[_0xfcce('0x82')](_0xfcce('0x83'),{'UserId':_0x537799,'MailQueueId':_0x544fff['id']});});});});});});})[_0xfcce('0x28')](respondWithStatusCode(_0x4d2a24,null))['catch'](handleError(_0x4d2a24,null));};exports['addAgents']=function(_0x2e24ca,_0x45a228,_0x51fe9c){return db['MailQueue'][_0xfcce('0x4b')]({'where':{'id':_0x2e24ca[_0xfcce('0x49')]['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x45a228,null))[_0xfcce('0x28')](function(_0x21e1a4){if(_0x21e1a4){return _0x21e1a4['addAgents'](_0x2e24ca[_0xfcce('0x4d')][_0xfcce('0x65')],_[_0xfcce('0x84')](_0x2e24ca[_0xfcce('0x4d')],[_0xfcce('0x65'),'id'])||{})[_0xfcce('0x85')](function(_0x5eaf44){for(var _0x7a8564=0x0;_0x7a8564<_0x2e24ca['body'][_0xfcce('0x65')][_0xfcce('0x3c')];_0x7a8564+=0x1){socket[_0xfcce('0x82')](_0xfcce('0x70'),{'UserId':Number(_0x2e24ca['body'][_0xfcce('0x65')][_0x7a8564]),'MailQueueId':Number(_0x2e24ca[_0xfcce('0x49')]['id'])});}return _0x5eaf44;});}})['then'](respondWithResult(_0x45a228,null))[_0xfcce('0x47')](handleError(_0x45a228,null));};exports[_0xfcce('0x80')]=function(_0x6d7c5f,_0x1e36d5,_0x35d8a6){return db['MailQueue']['find']({'where':{'id':_0x6d7c5f[_0xfcce('0x49')]['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x1e36d5,null))[_0xfcce('0x28')](function(_0x44e5d5){if(_0x44e5d5){return _0x44e5d5[_0xfcce('0x80')](_0x6d7c5f[_0xfcce('0x36')][_0xfcce('0x65')])[_0xfcce('0x28')](function(){if(_['isArray'](_0x6d7c5f[_0xfcce('0x36')][_0xfcce('0x65')])){for(var _0x49bb31=0x0;_0x49bb31<_0x6d7c5f['query'][_0xfcce('0x65')][_0xfcce('0x3c')];_0x49bb31+=0x1){socket['emit'](_0xfcce('0x83'),{'UserId':Number(_0x6d7c5f[_0xfcce('0x36')]['ids'][_0x49bb31]),'MailQueueId':Number(_0x6d7c5f[_0xfcce('0x49')]['id'])});}}else{socket[_0xfcce('0x82')](_0xfcce('0x83'),{'UserId':Number(_0x6d7c5f[_0xfcce('0x36')]['ids']),'MailQueueId':Number(_0x6d7c5f[_0xfcce('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x1e36d5,null))[_0xfcce('0x47')](handleError(_0x1e36d5,null));};exports[_0xfcce('0x86')]=function(_0x25cb6d,_0x53c110,_0x186fc7){var _0x2816f6={};var _0xaf5c1a={};var _0x4bb193;var _0x40fdff;return db[_0xfcce('0x2f')]['findOne']({'where':{'id':_0x25cb6d[_0xfcce('0x49')]['id']}})[_0xfcce('0x28')](handleEntityNotFound(_0x53c110,null))[_0xfcce('0x28')](function(_0x3340b7){if(_0x3340b7){_0x4bb193=_0x3340b7;_0xaf5c1a[_0xfcce('0x39')]=_['keys'](db[_0xfcce('0x67')]['rawAttributes']);_0xaf5c1a['query']=_[_0xfcce('0x35')](_0x25cb6d[_0xfcce('0x36')]);_0xaf5c1a[_0xfcce('0x37')]=_[_0xfcce('0x38')](_0xaf5c1a['model'],_0xaf5c1a[_0xfcce('0x36')]);_0x2816f6[_0xfcce('0x3a')]=_[_0xfcce('0x38')](_0xaf5c1a[_0xfcce('0x39')],qs['fields'](_0x25cb6d[_0xfcce('0x36')]['fields']));_0x2816f6[_0xfcce('0x3a')]=_0x2816f6[_0xfcce('0x3a')][_0xfcce('0x3c')]?_0x2816f6[_0xfcce('0x3a')]:_0xaf5c1a[_0xfcce('0x39')];_0x2816f6[_0xfcce('0x3e')]=qs[_0xfcce('0x3f')](_0x25cb6d[_0xfcce('0x36')][_0xfcce('0x3f')]);_0x2816f6[_0xfcce('0x42')]=qs['filters'](_['pick'](_0x25cb6d[_0xfcce('0x36')],_0xaf5c1a[_0xfcce('0x37')]));if(_0x25cb6d[_0xfcce('0x36')][_0xfcce('0x41')]){_0x2816f6['where']=_[_0xfcce('0x43')](_0x2816f6[_0xfcce('0x42')],{'$or':_['map'](_0x2816f6['attributes'],function(_0x568d9e){var _0x56a34d={};_0x56a34d[_0x568d9e]={'$like':'%'+_0x25cb6d['query'][_0xfcce('0x41')]+'%'};return _0x56a34d;})});}_0x2816f6=_[_0xfcce('0x43')]({},_0x2816f6,_0x25cb6d['options']);return _0x4bb193[_0xfcce('0x86')](_0x2816f6);}})['then'](function(_0x54bd84){if(_0x54bd84){_0x40fdff=_0x54bd84[_0xfcce('0x3c')];if(!_0x25cb6d[_0xfcce('0x36')]['hasOwnProperty']('nolimit')){_0x2816f6[_0xfcce('0x1f')]=qs[_0xfcce('0x1f')](_0x25cb6d[_0xfcce('0x36')][_0xfcce('0x1f')]);_0x2816f6['offset']=qs[_0xfcce('0x1d')](_0x25cb6d[_0xfcce('0x36')]['offset']);}return _0x4bb193[_0xfcce('0x86')](_0x2816f6);}})[_0xfcce('0x28')](function(_0x3baef6){if(_0x3baef6){return _0x3baef6?{'count':_0x40fdff,'rows':_0x3baef6}:null;}})['then'](respondWithResult(_0x53c110,null))[_0xfcce('0x47')](handleError(_0x53c110,null));};
\ No newline at end of file
+var _0x7834=['mailPause','createdAt','rows','format','SIP','updatedAt','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','flatMap','get','each','findOrCreate','forEach','userMailQueue:save','removeTeams','select','field','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','toString','QueryTypes','every','TeamId','includes','union','compact','value','sequelize','removeAgents','userMailQueue:remove','addAgents','omit','emit','isArray','getAgents','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','MailQueue','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','findAll','catch','show','params','length','includeAll','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','MailQueues','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','UserMailQueue','hasOwnProperty','MailQueueId','filter','UserId'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7834,0x13f));var _0x4783=function(_0x42a66b,_0x1a345b){_0x42a66b=_0x42a66b-0x0;var _0x26a063=_0x7834[_0x42a66b];return _0x26a063;};'use strict';var emlformat=require(_0x4783('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4783('0x1'));var rp=require('request-promise');var moment=require(_0x4783('0x2'));var BPromise=require(_0x4783('0x3'));var Mustache=require(_0x4783('0x4'));var util=require(_0x4783('0x5'));var path=require(_0x4783('0x6'));var sox=require(_0x4783('0x7'));var csv=require(_0x4783('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4783('0x9'));var _=require(_0x4783('0xa'));var squel=require('squel');var crypto=require(_0x4783('0xb'));var jsforce=require(_0x4783('0xc'));var deskjs=require(_0x4783('0xd'));var toCsv=require(_0x4783('0x8'));var querystring=require(_0x4783('0xe'));var Papa=require(_0x4783('0xf'));var Redis=require('ioredis');var authService=require(_0x4783('0x10'));var qs=require(_0x4783('0x11'));var as=require(_0x4783('0x12'));var hardwareService=require(_0x4783('0x13'));var logger=require(_0x4783('0x14'))(_0x4783('0x15'));var utils=require(_0x4783('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4783('0x17'))['db'];config[_0x4783('0x18')]=_['defaults'](config[_0x4783('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x4783('0x19'))(new Redis(config[_0x4783('0x18')]));require(_0x4783('0x1a'))[_0x4783('0x1b')](socket);function respondWithStatusCode(_0x230ae6,_0x4ceae1){_0x4ceae1=_0x4ceae1||0xcc;return function(_0x3dcc1f){if(_0x3dcc1f){return _0x230ae6[_0x4783('0x1c')](_0x4ceae1);}return _0x230ae6[_0x4783('0x1d')](_0x4ceae1)[_0x4783('0x1e')]();};}function respondWithResult(_0x3cb485,_0x216fbb){_0x216fbb=_0x216fbb||0xc8;return function(_0x3d4e04){if(_0x3d4e04){return _0x3cb485[_0x4783('0x1d')](_0x216fbb)[_0x4783('0x1f')](_0x3d4e04);}};}function respondWithFilteredResult(_0x28c979,_0x1bcc3d){return function(_0x323a90){if(_0x323a90){var _0x513074=typeof _0x1bcc3d[_0x4783('0x20')]===_0x4783('0x21')&&typeof _0x1bcc3d['limit']===_0x4783('0x21');var _0x4a9dc8=_0x323a90[_0x4783('0x22')];var _0x9c75da=_0x513074?0x0:_0x1bcc3d[_0x4783('0x20')];var _0x925344=_0x513074?_0x323a90[_0x4783('0x22')]:_0x1bcc3d[_0x4783('0x20')]+_0x1bcc3d[_0x4783('0x23')];var _0x4e15d7;if(_0x925344>=_0x4a9dc8){_0x925344=_0x4a9dc8;_0x4e15d7=0xc8;}else{_0x4e15d7=0xce;}_0x28c979[_0x4783('0x1d')](_0x4e15d7);return _0x28c979['set'](_0x4783('0x24'),_0x9c75da+'-'+_0x925344+'/'+_0x4a9dc8)[_0x4783('0x1f')](_0x323a90);}return null;};}function patchUpdates(_0x46ada4){return function(_0x44aaf3){try{jsonpatch[_0x4783('0x25')](_0x44aaf3,_0x46ada4,!![]);}catch(_0x54529d){return BPromise[_0x4783('0x26')](_0x54529d);}return _0x44aaf3[_0x4783('0x27')]();};}function saveUpdates(_0xba686e,_0x30ac45){return function(_0x866449){if(_0x866449){return _0x866449[_0x4783('0x28')](_0xba686e)[_0x4783('0x29')](function(_0x48da76){return _0x48da76;});}return null;};}function removeEntity(_0x22d276,_0x3e45d2){return function(_0x5d33f5){if(_0x5d33f5){return _0x5d33f5['destroy']()[_0x4783('0x29')](function(){var _0xb5f71c=_0x5d33f5['get']({'plain':!![]});var _0x106b09='MailQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x106b09,'resourceId':_0xb5f71c['id']}})['then'](function(){return _0x5d33f5;});})['then'](function(){_0x22d276['status'](0xcc)[_0x4783('0x1e')]();});}};}function handleEntityNotFound(_0x589082,_0x3a996c){return function(_0x455559){if(!_0x455559){_0x589082[_0x4783('0x1c')](0x194);}return _0x455559;};}function handleError(_0x3455e,_0x1d5a5e){_0x1d5a5e=_0x1d5a5e||0x1f4;return function(_0x52b18f){logger[_0x4783('0x2a')](_0x52b18f[_0x4783('0x2b')]);if(_0x52b18f['name']){delete _0x52b18f[_0x4783('0x2c')];}_0x3455e[_0x4783('0x1d')](_0x1d5a5e)['send'](_0x52b18f);};}exports[_0x4783('0x2d')]=function(_0x4f67b7,_0x299660){var _0x4e999c={},_0x3dc9fd={},_0x3e519e={'count':0x0,'rows':[]};var _0x51a8be=_[_0x4783('0x2e')](db[_0x4783('0x2f')][_0x4783('0x30')],function(_0x1efca5){return{'name':_0x1efca5['fieldName'],'type':_0x1efca5[_0x4783('0x31')][_0x4783('0x32')]};});_0x3dc9fd[_0x4783('0x33')]=_[_0x4783('0x2e')](_0x51a8be,'name');_0x3dc9fd[_0x4783('0x34')]=_[_0x4783('0x35')](_0x4f67b7['query']);_0x3dc9fd[_0x4783('0x36')]=_[_0x4783('0x37')](_0x3dc9fd[_0x4783('0x33')],_0x3dc9fd[_0x4783('0x34')]);_0x4e999c[_0x4783('0x38')]=_['intersection'](_0x3dc9fd[_0x4783('0x33')],qs['fields'](_0x4f67b7['query'][_0x4783('0x39')]));_0x4e999c[_0x4783('0x38')]=_0x4e999c[_0x4783('0x38')]['length']?_0x4e999c[_0x4783('0x38')]:_0x3dc9fd['model'];if(!_0x4f67b7[_0x4783('0x34')]['hasOwnProperty'](_0x4783('0x3a'))){_0x4e999c[_0x4783('0x23')]=qs[_0x4783('0x23')](_0x4f67b7['query'][_0x4783('0x23')]);_0x4e999c['offset']=qs[_0x4783('0x20')](_0x4f67b7[_0x4783('0x34')][_0x4783('0x20')]);}_0x4e999c[_0x4783('0x3b')]=qs['sort'](_0x4f67b7[_0x4783('0x34')][_0x4783('0x3c')]);_0x4e999c[_0x4783('0x3d')]=qs['filters'](_[_0x4783('0x3e')](_0x4f67b7[_0x4783('0x34')],_0x3dc9fd[_0x4783('0x36')]),_0x51a8be);if(_0x4f67b7['query']['filter']){_0x4e999c[_0x4783('0x3d')]=_[_0x4783('0x3f')](_0x4e999c[_0x4783('0x3d')],{'$or':_[_0x4783('0x2e')](_0x51a8be,function(_0x91f1a5){if(_0x91f1a5[_0x4783('0x31')]!==_0x4783('0x40')){var _0x30a76d={};_0x30a76d[_0x91f1a5[_0x4783('0x2c')]]={'$like':'%'+_0x4f67b7['query']['filter']+'%'};return _0x30a76d;}})});}_0x4e999c=_[_0x4783('0x3f')]({},_0x4e999c,_0x4f67b7['options']);var _0xc577a9={'where':_0x4e999c[_0x4783('0x3d')]};return db[_0x4783('0x2f')][_0x4783('0x22')](_0xc577a9)['then'](function(_0x409ac6){_0x3e519e[_0x4783('0x22')]=_0x409ac6;if(_0x4f67b7[_0x4783('0x34')]['includeAll']){_0x4e999c['include']=[{'all':!![]}];}return db[_0x4783('0x2f')][_0x4783('0x41')](_0x4e999c);})['then'](function(_0x378c0e){_0x3e519e['rows']=_0x378c0e;return _0x3e519e;})[_0x4783('0x29')](respondWithFilteredResult(_0x299660,_0x4e999c))[_0x4783('0x42')](handleError(_0x299660,null));};exports[_0x4783('0x43')]=function(_0x767fc8,_0x2975fa){var _0x192c69={'raw':!![],'where':{'id':_0x767fc8[_0x4783('0x44')]['id']}},_0x2ab285={};_0x2ab285['model']=_['keys'](db[_0x4783('0x2f')]['rawAttributes']);_0x2ab285[_0x4783('0x34')]=_[_0x4783('0x35')](_0x767fc8[_0x4783('0x34')]);_0x2ab285[_0x4783('0x36')]=_[_0x4783('0x37')](_0x2ab285[_0x4783('0x33')],_0x2ab285[_0x4783('0x34')]);_0x192c69[_0x4783('0x38')]=_[_0x4783('0x37')](_0x2ab285[_0x4783('0x33')],qs[_0x4783('0x39')](_0x767fc8[_0x4783('0x34')]['fields']));_0x192c69['attributes']=_0x192c69[_0x4783('0x38')][_0x4783('0x45')]?_0x192c69['attributes']:_0x2ab285['model'];if(_0x767fc8[_0x4783('0x34')][_0x4783('0x46')]){_0x192c69[_0x4783('0x47')]=[{'all':!![]}];}_0x192c69=_['merge']({},_0x192c69,_0x767fc8[_0x4783('0x48')]);return db['MailQueue'][_0x4783('0x49')](_0x192c69)[_0x4783('0x29')](handleEntityNotFound(_0x2975fa,null))['then'](respondWithResult(_0x2975fa,null))['catch'](handleError(_0x2975fa,null));};exports['create']=function(_0x62fc1d,_0x419333){return db['MailQueue'][_0x4783('0x4a')](_0x62fc1d[_0x4783('0x4b')],{})['then'](function(_0x447ab9){var _0x4c2b3a=_0x62fc1d[_0x4783('0x4c')]['get']({'plain':!![]});if(!_0x4c2b3a)throw new Error(_0x4783('0x4d'));if(_0x4c2b3a['role']===_0x4783('0x4c')){var _0x4974f6=_0x447ab9['get']({'plain':!![]});var _0x525b5a=_0x4783('0x4e');return db['UserProfileSection'][_0x4783('0x49')]({'where':{'name':_0x525b5a,'userProfileId':_0x4c2b3a[_0x4783('0x4f')]},'raw':!![]})[_0x4783('0x29')](function(_0xac3410){if(_0xac3410&&_0xac3410[_0x4783('0x50')]===0x0){return db[_0x4783('0x51')]['create']({'name':_0x4974f6['name'],'resourceId':_0x4974f6['id'],'type':_0xac3410[_0x4783('0x2c')],'sectionId':_0xac3410['id']},{})[_0x4783('0x29')](function(){return _0x447ab9;});}else{return _0x447ab9;}})[_0x4783('0x42')](function(_0x3d7269){logger['error'](_0x4783('0x52'),_0x3d7269);throw _0x3d7269;});}return _0x447ab9;})[_0x4783('0x29')](respondWithResult(_0x419333,0xc9))[_0x4783('0x42')](handleError(_0x419333,null));};exports[_0x4783('0x28')]=function(_0x220cbc,_0x3e78fb){if(_0x220cbc[_0x4783('0x4b')]['id']){delete _0x220cbc['body']['id'];}return db['MailQueue'][_0x4783('0x49')]({'where':{'id':_0x220cbc[_0x4783('0x44')]['id']}})[_0x4783('0x29')](handleEntityNotFound(_0x3e78fb,null))[_0x4783('0x29')](saveUpdates(_0x220cbc[_0x4783('0x4b')],null))[_0x4783('0x29')](respondWithResult(_0x3e78fb,null))[_0x4783('0x42')](handleError(_0x3e78fb,null));};exports[_0x4783('0x53')]=function(_0x3cb0e9,_0xf7e59f){return db[_0x4783('0x2f')]['find']({'where':{'id':_0x3cb0e9[_0x4783('0x44')]['id']}})[_0x4783('0x29')](handleEntityNotFound(_0xf7e59f,null))[_0x4783('0x29')](removeEntity(_0xf7e59f,null))[_0x4783('0x42')](handleError(_0xf7e59f,null));};exports[_0x4783('0x54')]=function(_0x2be320,_0x289efc){return db['MailQueue'][_0x4783('0x54')]()[_0x4783('0x29')](respondWithResult(_0x289efc,null))[_0x4783('0x42')](handleError(_0x289efc,null));};exports[_0x4783('0x55')]=function(_0x287c0f,_0x3a85ad,_0x4f22d6){var _0x47fda0={'raw':!![],'where':{}},_0x318908={},_0x2d1416;return db[_0x4783('0x2f')][_0x4783('0x56')]({'where':{'id':_0x287c0f['params']['id']}})[_0x4783('0x29')](handleEntityNotFound(_0x3a85ad,null))[_0x4783('0x29')](function(_0x1600ff){if(_0x1600ff){_0x2d1416=_0x1600ff['get']({'plain':!![]});_0x318908[_0x4783('0x33')]=_[_0x4783('0x35')](db[_0x4783('0x57')]['rawAttributes']);_0x318908[_0x4783('0x34')]=_[_0x4783('0x35')](_0x287c0f['query']);_0x318908['filters']=_[_0x4783('0x37')](_0x318908[_0x4783('0x33')],_0x318908[_0x4783('0x34')]);_0x47fda0[_0x4783('0x38')]=_[_0x4783('0x37')](_0x318908[_0x4783('0x33')],qs[_0x4783('0x39')](_0x287c0f['query']['fields']));_0x47fda0[_0x4783('0x38')]=_0x47fda0[_0x4783('0x38')][_0x4783('0x45')]?_0x47fda0['attributes']:_0x318908[_0x4783('0x33')];if(!_0x287c0f[_0x4783('0x34')][_0x4783('0x58')](_0x4783('0x3a'))){_0x47fda0['limit']=qs[_0x4783('0x23')](_0x287c0f[_0x4783('0x34')]['limit']);_0x47fda0[_0x4783('0x20')]=qs[_0x4783('0x20')](_0x287c0f['query']['offset']);}_0x47fda0[_0x4783('0x3b')]=qs[_0x4783('0x3c')](_0x287c0f[_0x4783('0x34')][_0x4783('0x3c')]);_0x47fda0['where']=qs['filters'](_[_0x4783('0x3e')](_0x287c0f['query'],_0x318908[_0x4783('0x36')]));_0x47fda0[_0x4783('0x3d')][_0x4783('0x59')]=_0x1600ff['id'];if(_0x287c0f[_0x4783('0x34')][_0x4783('0x5a')]){_0x47fda0[_0x4783('0x3d')]=_[_0x4783('0x3f')](_0x47fda0[_0x4783('0x3d')],{'$or':_[_0x4783('0x2e')](_0x47fda0['attributes'],function(_0x19ce5f){var _0x26b908={};_0x26b908[_0x19ce5f]={'$like':'%'+_0x287c0f[_0x4783('0x34')][_0x4783('0x5a')]+'%'};return _0x26b908;})});}_0x47fda0=_['merge']({},_0x47fda0,_0x287c0f['options']);return db['UserMailQueue'][_0x4783('0x41')](_0x47fda0);}})[_0x4783('0x29')](function(_0x8a6349){if(_0x8a6349){return db['User']['findAndCountAll']({'where':{'id':_[_0x4783('0x2e')](_0x8a6349,_0x4783('0x5b')),'role':'agent'},'attributes':['id',_0x4783('0x2c'),_0x4783('0x5c'),'updatedAt',_0x4783('0x5d')]});}})['then'](function(_0x86769){if(_0x86769){return{'count':_0x86769['count'],'rows':_[_0x4783('0x2e')](_0x86769[_0x4783('0x5e')],function(_0x3ab637){return{'membername':_0x3ab637[_0x4783('0x2c')],'UserId':_0x3ab637['id'],'queue_name':_0x2d1416[_0x4783('0x2c')],'MailQueueId':_0x2d1416['id'],'interface':util[_0x4783('0x5f')]('%s/%s',_0x4783('0x60'),_0x3ab637['name']),'penalty':0x0,'paused':_0x3ab637[_0x4783('0x5c')],'createdAt':_0x3ab637[_0x4783('0x5d')],'updatedAt':_0x3ab637[_0x4783('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4783('0x29')](respondWithFilteredResult(_0x3a85ad,_0x47fda0))[_0x4783('0x42')](handleError(_0x3a85ad,null));};exports[_0x4783('0x62')]=function(_0xccc0b7,_0x45e6bd,_0x5be31c){var _0x1f10c2={};var _0xd2d184={};var _0x16c32a;var _0x27f10c;return db[_0x4783('0x2f')]['findOne']({'where':{'id':_0xccc0b7['params']['id']}})[_0x4783('0x29')](handleEntityNotFound(_0x45e6bd,null))['then'](function(_0x4bee9c){if(_0x4bee9c){_0x16c32a=_0x4bee9c;_0xd2d184[_0x4783('0x33')]=_[_0x4783('0x35')](db[_0x4783('0x63')]['rawAttributes']);_0xd2d184[_0x4783('0x34')]=_[_0x4783('0x35')](_0xccc0b7[_0x4783('0x34')]);_0xd2d184['filters']=_['intersection'](_0xd2d184['model'],_0xd2d184[_0x4783('0x34')]);_0x1f10c2[_0x4783('0x38')]=_[_0x4783('0x37')](_0xd2d184[_0x4783('0x33')],qs[_0x4783('0x39')](_0xccc0b7[_0x4783('0x34')]['fields']));_0x1f10c2[_0x4783('0x38')]=_0x1f10c2[_0x4783('0x38')][_0x4783('0x45')]?_0x1f10c2['attributes']:_0xd2d184[_0x4783('0x33')];_0x1f10c2[_0x4783('0x3b')]=qs[_0x4783('0x3c')](_0xccc0b7[_0x4783('0x34')][_0x4783('0x3c')]);_0x1f10c2['where']=qs['filters'](_['pick'](_0xccc0b7['query'],_0xd2d184[_0x4783('0x36')]));if(_0xccc0b7['query'][_0x4783('0x5a')]){_0x1f10c2[_0x4783('0x3d')]=_['merge'](_0x1f10c2['where'],{'$or':_[_0x4783('0x2e')](_0x1f10c2[_0x4783('0x38')],function(_0x1ae2b5){var _0x3f9aef={};_0x3f9aef[_0x1ae2b5]={'$like':'%'+_0xccc0b7[_0x4783('0x34')][_0x4783('0x5a')]+'%'};return _0x3f9aef;})});}_0x1f10c2=_[_0x4783('0x3f')]({},_0x1f10c2,_0xccc0b7[_0x4783('0x48')]);return _0x16c32a[_0x4783('0x62')](_0x1f10c2);}})[_0x4783('0x29')](function(_0x307632){if(_0x307632){_0x27f10c=_0x307632[_0x4783('0x45')];if(!_0xccc0b7[_0x4783('0x34')]['hasOwnProperty'](_0x4783('0x3a'))){_0x1f10c2[_0x4783('0x23')]=qs[_0x4783('0x23')](_0xccc0b7[_0x4783('0x34')][_0x4783('0x23')]);_0x1f10c2['offset']=qs['offset'](_0xccc0b7[_0x4783('0x34')][_0x4783('0x20')]);}return _0x16c32a[_0x4783('0x62')](_0x1f10c2);}})[_0x4783('0x29')](function(_0x4cb78b){if(_0x4cb78b){return _0x4cb78b?{'count':_0x27f10c,'rows':_0x4cb78b}:null;}})[_0x4783('0x29')](respondWithResult(_0x45e6bd,null))[_0x4783('0x42')](handleError(_0x45e6bd,null));};exports[_0x4783('0x64')]=function(_0x28e100,_0x20af08,_0x3f2904){var _0xfb81d8=_0x28e100['body'][_0x4783('0x65')];return db[_0x4783('0x63')][_0x4783('0x41')]({'where':{'id':_0xfb81d8},'attributes':['id'],'include':[{'model':db[_0x4783('0x66')],'as':_0x4783('0x67'),'attributes':['id',_0x4783('0x2c'),_0x4783('0x68'),_0x4783('0x69'),'interface'],'raw':!![]}]})[_0x4783('0x29')](function(_0x5a6692){if(_0x5a6692){var _0x5b59d0=_[_0x4783('0x6a')](_0x5a6692,function(_0x3586d9){var _0x104325=_0x3586d9[_0x4783('0x6b')]({'plain':!![]});return _0x104325['Agents'];});return db[_0x4783('0x2f')][_0x4783('0x49')]({'where':{'id':_0x28e100['params']['id']}})[_0x4783('0x29')](function(_0x446aaf){return db['sequelize']['transaction'](function(_0x3fd670){return _0x446aaf[_0x4783('0x64')](_0xfb81d8,{'transaction':_0x3fd670})[_0x4783('0x29')](function(){return BPromise[_0x4783('0x6c')](_0x5b59d0,function(_0x2ab802){return db['UserMailQueue'][_0x4783('0x6d')]({'where':{'UserId':_0x2ab802['id'],'MailQueueId':_0x28e100['params']['id']},'transaction':_0x3fd670});});})[_0x4783('0x29')](function(){_0x5b59d0[_0x4783('0x6e')](function(_0x4b0d75){socket['emit'](_0x4783('0x6f'),{'UserId':_0x4b0d75['id'],'MailQueueId':_0x446aaf['id']});});});});});}})[_0x4783('0x29')](respondWithStatusCode(_0x20af08,null))[_0x4783('0x42')](handleError(_0x20af08,null));};exports[_0x4783('0x70')]=function(_0x351bca,_0x1a715d,_0x3c30b5){return db[_0x4783('0x63')][_0x4783('0x41')]({'where':{'id':_0x351bca['query'][_0x4783('0x65')]},'attributes':['id'],'include':[{'model':db[_0x4783('0x66')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x4783('0x29')](handleEntityNotFound(_0x1a715d,null))[_0x4783('0x29')](function(_0x311ae0){var _0x49a574=_[_0x4783('0x2e')](_0x311ae0,'id');var _0x1c272f=[];var _0x16371a=[];var _0x19f337=squel[_0x4783('0x71')]();_0x19f337[_0x4783('0x72')]('tq.TeamId')['from'](_0x4783('0x73'),'tq')[_0x4783('0x74')](_0x4783('0x75'),'ut',_0x4783('0x76'))['where'](_0x4783('0x77'),_0x351bca['params']['id']);for(var _0x501b4c=0x0;_0x501b4c<_0x311ae0[_0x4783('0x45')];_0x501b4c+=0x1){let _0x289be8=_0x311ae0[_0x501b4c];for(var _0x2b7617=0x0;_0x2b7617<_0x289be8[_0x4783('0x67')][_0x4783('0x45')];_0x2b7617+=0x1){let _0x2b0164=_0x289be8[_0x4783('0x67')][_0x2b7617];var _0x6ef7a8=_0x19f337[_0x4783('0x78')]();_0x6ef7a8[_0x4783('0x3d')]('ut.UserId\x20=\x20?',_0x2b0164['id']);_0x16371a['push'](db['sequelize'][_0x4783('0x34')](_0x6ef7a8[_0x4783('0x79')](),{'type':db['sequelize'][_0x4783('0x7a')]['SELECT']})[_0x4783('0x29')](function(_0x252834){if(_0x252834['length']===0x1){return _0x2b0164['id'];}else{var _0x596246=_[_0x4783('0x7b')](_[_0x4783('0x2e')](_0x252834,_0x4783('0x7c')),function(_0x1b9007){return _[_0x4783('0x7d')](_0x49a574,_0x1b9007);});if(_0x596246){return _0x2b0164['id'];}}}));}}return BPromise['all'](_0x16371a)[_0x4783('0x29')](function(_0x27e366){_0x1c272f=_(_0x1c272f)[_0x4783('0x7e')](_0x27e366)[_0x4783('0x7f')]()[_0x4783('0x80')]();return db['MailQueue'][_0x4783('0x49')]({'where':{'id':_0x351bca[_0x4783('0x44')]['id']}})[_0x4783('0x29')](function(_0x3bd741){return db[_0x4783('0x81')]['transaction'](function(_0x4b31a3){return _0x3bd741[_0x4783('0x70')](_0x351bca[_0x4783('0x34')][_0x4783('0x65')],{'transaction':_0x4b31a3})['then'](function(){if(!_['isEmpty'](_0x1c272f)){return _0x3bd741[_0x4783('0x82')](_0x1c272f,{'transaction':_0x4b31a3});}})[_0x4783('0x29')](function(){_0x1c272f['forEach'](function(_0x3724fc){socket['emit'](_0x4783('0x83'),{'UserId':_0x3724fc,'MailQueueId':_0x3bd741['id']});});});});});});})[_0x4783('0x29')](respondWithStatusCode(_0x1a715d,null))[_0x4783('0x42')](handleError(_0x1a715d,null));};exports['addAgents']=function(_0x5a0744,_0x444363,_0x47c136){return db[_0x4783('0x2f')][_0x4783('0x49')]({'where':{'id':_0x5a0744[_0x4783('0x44')]['id']}})['then'](handleEntityNotFound(_0x444363,null))[_0x4783('0x29')](function(_0x213134){if(_0x213134){return _0x213134[_0x4783('0x84')](_0x5a0744['body'][_0x4783('0x65')],_[_0x4783('0x85')](_0x5a0744['body'],[_0x4783('0x65'),'id'])||{})['spread'](function(_0x41ab80){for(var _0x5a2bda=0x0;_0x5a2bda<_0x5a0744[_0x4783('0x4b')][_0x4783('0x65')][_0x4783('0x45')];_0x5a2bda+=0x1){socket[_0x4783('0x86')](_0x4783('0x6f'),{'UserId':Number(_0x5a0744[_0x4783('0x4b')][_0x4783('0x65')][_0x5a2bda]),'MailQueueId':Number(_0x5a0744[_0x4783('0x44')]['id'])});}return _0x41ab80;});}})[_0x4783('0x29')](respondWithResult(_0x444363,null))['catch'](handleError(_0x444363,null));};exports['removeAgents']=function(_0x6e7974,_0x225dbf,_0x1c60fe){return db['MailQueue'][_0x4783('0x49')]({'where':{'id':_0x6e7974[_0x4783('0x44')]['id']}})[_0x4783('0x29')](handleEntityNotFound(_0x225dbf,null))[_0x4783('0x29')](function(_0x18d99e){if(_0x18d99e){return _0x18d99e[_0x4783('0x82')](_0x6e7974['query']['ids'])[_0x4783('0x29')](function(){if(_[_0x4783('0x87')](_0x6e7974[_0x4783('0x34')][_0x4783('0x65')])){for(var _0x3935ae=0x0;_0x3935ae<_0x6e7974[_0x4783('0x34')][_0x4783('0x65')][_0x4783('0x45')];_0x3935ae+=0x1){socket[_0x4783('0x86')](_0x4783('0x83'),{'UserId':Number(_0x6e7974[_0x4783('0x34')][_0x4783('0x65')][_0x3935ae]),'MailQueueId':Number(_0x6e7974[_0x4783('0x44')]['id'])});}}else{socket[_0x4783('0x86')](_0x4783('0x83'),{'UserId':Number(_0x6e7974[_0x4783('0x34')][_0x4783('0x65')]),'MailQueueId':Number(_0x6e7974[_0x4783('0x44')]['id'])});}});}})[_0x4783('0x29')](respondWithStatusCode(_0x225dbf,null))[_0x4783('0x42')](handleError(_0x225dbf,null));};exports[_0x4783('0x88')]=function(_0x23c22d,_0x18f762,_0x24f23a){var _0xc84a9b={};var _0x29c7dc={};var _0x48b281;var _0x509661;return db[_0x4783('0x2f')][_0x4783('0x56')]({'where':{'id':_0x23c22d[_0x4783('0x44')]['id']}})[_0x4783('0x29')](handleEntityNotFound(_0x18f762,null))[_0x4783('0x29')](function(_0x13bf5b){if(_0x13bf5b){_0x48b281=_0x13bf5b;_0x29c7dc[_0x4783('0x33')]=_['keys'](db[_0x4783('0x66')][_0x4783('0x30')]);_0x29c7dc['query']=_[_0x4783('0x35')](_0x23c22d['query']);_0x29c7dc[_0x4783('0x36')]=_[_0x4783('0x37')](_0x29c7dc['model'],_0x29c7dc['query']);_0xc84a9b['attributes']=_[_0x4783('0x37')](_0x29c7dc['model'],qs[_0x4783('0x39')](_0x23c22d[_0x4783('0x34')][_0x4783('0x39')]));_0xc84a9b[_0x4783('0x38')]=_0xc84a9b['attributes'][_0x4783('0x45')]?_0xc84a9b['attributes']:_0x29c7dc[_0x4783('0x33')];_0xc84a9b[_0x4783('0x3b')]=qs[_0x4783('0x3c')](_0x23c22d[_0x4783('0x34')][_0x4783('0x3c')]);_0xc84a9b['where']=qs[_0x4783('0x36')](_[_0x4783('0x3e')](_0x23c22d[_0x4783('0x34')],_0x29c7dc[_0x4783('0x36')]));if(_0x23c22d['query'][_0x4783('0x5a')]){_0xc84a9b[_0x4783('0x3d')]=_['merge'](_0xc84a9b[_0x4783('0x3d')],{'$or':_[_0x4783('0x2e')](_0xc84a9b['attributes'],function(_0x3cf728){var _0x42041e={};_0x42041e[_0x3cf728]={'$like':'%'+_0x23c22d[_0x4783('0x34')][_0x4783('0x5a')]+'%'};return _0x42041e;})});}_0xc84a9b=_[_0x4783('0x3f')]({},_0xc84a9b,_0x23c22d[_0x4783('0x48')]);return _0x48b281['getAgents'](_0xc84a9b);}})[_0x4783('0x29')](function(_0x2146c1){if(_0x2146c1){_0x509661=_0x2146c1[_0x4783('0x45')];if(!_0x23c22d[_0x4783('0x34')][_0x4783('0x58')](_0x4783('0x3a'))){_0xc84a9b[_0x4783('0x23')]=qs[_0x4783('0x23')](_0x23c22d[_0x4783('0x34')][_0x4783('0x23')]);_0xc84a9b[_0x4783('0x20')]=qs[_0x4783('0x20')](_0x23c22d[_0x4783('0x34')][_0x4783('0x20')]);}return _0x48b281['getAgents'](_0xc84a9b);}})[_0x4783('0x29')](function(_0x13e248){if(_0x13e248){return _0x13e248?{'count':_0x509661,'rows':_0x13e248}:null;}})['then'](respondWithResult(_0x18f762,null))[_0x4783('0x42')](handleError(_0x18f762,null));};
\ No newline at end of file
index 1099e64..655720c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73e8=['emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x19d81e,_0x3ea3a5){var _0x1b3b86=function(_0x3edf0b){while(--_0x3edf0b){_0x19d81e['push'](_0x19d81e['shift']());}};_0x1b3b86(++_0x3ea3a5);}(_0x73e8,0xd2));var _0x873e=function(_0x6e4e76,_0x464712){_0x6e4e76=_0x6e4e76-0x0;var _0x2c18af=_0x73e8[_0x6e4e76];return _0x2c18af;};'use strict';var EventEmitter=require(_0x873e('0x0'));var MailQueue=require(_0x873e('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x873e('0x2')](0x0);var events={'afterCreate':_0x873e('0x3'),'afterUpdate':_0x873e('0x4'),'afterDestroy':_0x873e('0x5')};function emitEvent(_0x1e4251){return function(_0x2b01ab,_0x17de91,_0x51ad6e){MailQueueEvents[_0x873e('0x6')](_0x1e4251+':'+_0x2b01ab['id'],_0x2b01ab);MailQueueEvents[_0x873e('0x6')](_0x1e4251,_0x2b01ab);_0x51ad6e(null);};}for(var e in events){if(events[_0x873e('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x873e('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x49f1=['exports','events','MailQueue','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x1b2ea4,_0x6bdeda){var _0x22c566=function(_0x527414){while(--_0x527414){_0x1b2ea4['push'](_0x1b2ea4['shift']());}};_0x22c566(++_0x6bdeda);}(_0x49f1,0x91));var _0x149f=function(_0x179b68,_0x339d82){_0x179b68=_0x179b68-0x0;var _0x5e6d69=_0x49f1[_0x179b68];return _0x5e6d69;};'use strict';var EventEmitter=require(_0x149f('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x149f('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x149f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x149f('0x3'),'afterDestroy':_0x149f('0x4')};function emitEvent(_0x274f40){return function(_0x55ca0f,_0x15799d,_0x49e3bc){MailQueueEvents['emit'](_0x274f40+':'+_0x55ca0f['id'],_0x55ca0f);MailQueueEvents[_0x149f('0x5')](_0x274f40,_0x55ca0f);_0x49e3bc(null);};}for(var e in events){if(events[_0x149f('0x6')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x149f('0x7')]=MailQueueEvents;
\ No newline at end of file
index f94cd89..6aab2a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda7d=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','define','MailQueue'];(function(_0x4e2d3a,_0x5e310f){var _0x53b1cd=function(_0x2b9108){while(--_0x2b9108){_0x4e2d3a['push'](_0x4e2d3a['shift']());}};_0x53b1cd(++_0x5e310f);}(_0xda7d,0x134));var _0xdda7=function(_0x2bfc60,_0xa254ab){_0x2bfc60=_0x2bfc60-0x0;var _0x44ea2c=_0xda7d[_0x2bfc60];return _0x44ea2c;};'use strict';var _=require(_0xdda7('0x0'));var util=require(_0xdda7('0x1'));var logger=require(_0xdda7('0x2'))(_0xdda7('0x3'));var moment=require(_0xdda7('0x4'));var BPromise=require('bluebird');var rp=require(_0xdda7('0x5'));var fs=require('fs');var path=require(_0xdda7('0x6'));var rimraf=require(_0xdda7('0x7'));var config=require('../../config/environment');var attributes=require('./mailQueue.attributes');module[_0xdda7('0x8')]=function(_0x5a21f7,_0x4b08a4){return _0x5a21f7[_0xdda7('0x9')](_0xdda7('0xa'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3402=['exports','MailQueue','mail_queues','../../config/logger','api','path','rimraf','./mailQueue.attributes'];(function(_0x23b7bd,_0x88f570){var _0x3905a1=function(_0x554e23){while(--_0x554e23){_0x23b7bd['push'](_0x23b7bd['shift']());}};_0x3905a1(++_0x88f570);}(_0x3402,0x123));var _0x2340=function(_0xeae244,_0x535107){_0xeae244=_0xeae244-0x0;var _0x46231c=_0x3402[_0xeae244];return _0x46231c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2340('0x0'))(_0x2340('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2340('0x2'));var rimraf=require(_0x2340('0x3'));var config=require('../../config/environment');var attributes=require(_0x2340('0x4'));module[_0x2340('0x5')]=function(_0x31c26d,_0x3acf1b){return _0x31c26d['define'](_0x2340('0x6'),attributes,{'tableName':_0x2340('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d3445d..9b129af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d40=['stringify','code','error','message','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','limit','include','map','model','attributes','ShowMailQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x57f291,_0x4e8bea){var _0x2be349=function(_0x574852){while(--_0x574852){_0x57f291['push'](_0x57f291['shift']());}};_0x2be349(++_0x4e8bea);}(_0x6d40,0x1ec));var _0x06d4=function(_0x9ba5f3,_0x57c168){_0x9ba5f3=_0x9ba5f3-0x0;var _0x58fd68=_0x6d40[_0x9ba5f3];return _0x58fd68;};'use strict';var _=require(_0x06d4('0x0'));var util=require(_0x06d4('0x1'));var moment=require('moment');var BPromise=require(_0x06d4('0x2'));var rs=require(_0x06d4('0x3'));var fs=require('fs');var Redis=require(_0x06d4('0x4'));var db=require(_0x06d4('0x5'))['db'];var utils=require(_0x06d4('0x6'));var logger=require(_0x06d4('0x7'))(_0x06d4('0x8'));var config=require(_0x06d4('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x06d4('0xa')][_0x06d4('0xb')]({'port':0x232a});config[_0x06d4('0xc')]=_[_0x06d4('0xd')](config[_0x06d4('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x06d4('0xe'))(new Redis(config[_0x06d4('0xc')]));require(_0x06d4('0xf'))[_0x06d4('0x10')](socket);function respondWithRpcPromise(_0x454ebb,_0x327633,_0x3944e9){return new BPromise(function(_0xb525a,_0x4852ef){return client[_0x06d4('0x11')](_0x454ebb,_0x3944e9)[_0x06d4('0x12')](function(_0xac4836){logger[_0x06d4('0x13')](_0x06d4('0x14'),_0x327633,_0x06d4('0x15'));logger[_0x06d4('0x16')](_0x06d4('0x17'),_0x327633,_0x06d4('0x15'),JSON[_0x06d4('0x18')](_0xac4836));if(_0xac4836['error']){if(_0xac4836['error'][_0x06d4('0x19')]===0x1f4){logger['error'](_0x06d4('0x14'),_0x327633,_0xac4836[_0x06d4('0x1a')][_0x06d4('0x1b')]);return _0x4852ef(_0xac4836['error']['message']);}logger[_0x06d4('0x1a')](_0x06d4('0x14'),_0x327633,_0xac4836[_0x06d4('0x1a')][_0x06d4('0x1b')]);return _0xb525a(_0xac4836[_0x06d4('0x1a')][_0x06d4('0x1b')]);}else{logger['info'](_0x06d4('0x14'),_0x327633,'request\x20sent');_0xb525a(_0xac4836[_0x06d4('0x1c')][_0x06d4('0x1b')]);}})[_0x06d4('0x1d')](function(_0x239af8){logger['error']('MailQueue,\x20%s,\x20%s',_0x327633,_0x239af8);_0x4852ef(_0x239af8);});});}exports[_0x06d4('0x1e')]=function(_0x360c13){var _0x1d6721=this;return new Promise(function(_0x21b4ca,_0x10fbeb){return db[_0x06d4('0x1f')][_0x06d4('0x20')]({'raw':_0x360c13['options']?_0x360c13[_0x06d4('0x21')][_0x06d4('0x22')]===undefined?!![]:![]:!![],'where':_0x360c13[_0x06d4('0x21')]?_0x360c13['options'][_0x06d4('0x23')]||null:null,'attributes':_0x360c13[_0x06d4('0x21')]?_0x360c13[_0x06d4('0x21')]['attributes']||null:null,'limit':_0x360c13[_0x06d4('0x21')]?_0x360c13[_0x06d4('0x21')][_0x06d4('0x24')]||null:null,'include':_0x360c13['options']?_0x360c13[_0x06d4('0x21')][_0x06d4('0x25')]?_[_0x06d4('0x26')](_0x360c13[_0x06d4('0x21')][_0x06d4('0x25')],function(_0x25ce0b){return{'model':db[_0x25ce0b[_0x06d4('0x27')]],'as':_0x25ce0b['as'],'attributes':_0x25ce0b[_0x06d4('0x28')],'include':_0x25ce0b[_0x06d4('0x25')]?_[_0x06d4('0x26')](_0x25ce0b['include'],function(_0xd73dca){return{'model':db[_0xd73dca['model']],'as':_0xd73dca['as'],'attributes':_0xd73dca[_0x06d4('0x28')],'include':_0xd73dca[_0x06d4('0x25')]?_['map'](_0xd73dca[_0x06d4('0x25')],function(_0x316963){return{'model':db[_0x316963[_0x06d4('0x27')]],'as':_0x316963['as'],'attributes':_0x316963[_0x06d4('0x28')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xff84fa){logger[_0x06d4('0x13')](_0x06d4('0x1e'),_0x360c13);logger[_0x06d4('0x16')](_0x06d4('0x1e'),_0x360c13,JSON[_0x06d4('0x18')](_0xff84fa));_0x21b4ca(_0xff84fa);})[_0x06d4('0x1d')](function(_0x3d0c46){logger[_0x06d4('0x1a')]('GetMailQueue',_0x3d0c46[_0x06d4('0x1b')],_0x360c13);_0x10fbeb(_0x1d6721[_0x06d4('0x1a')](0x1f4,_0x3d0c46[_0x06d4('0x1b')]));});});};exports[_0x06d4('0x29')]=function(_0x52639f){var _0x212570=this;return new Promise(function(_0x26c34a,_0x5d80b3){return db['MailQueue'][_0x06d4('0x2a')]({'raw':_0x52639f[_0x06d4('0x21')]?_0x52639f[_0x06d4('0x21')][_0x06d4('0x22')]===undefined?!![]:![]:!![],'where':_0x52639f[_0x06d4('0x21')]?_0x52639f[_0x06d4('0x21')][_0x06d4('0x23')]||null:null,'attributes':_0x52639f[_0x06d4('0x21')]?_0x52639f[_0x06d4('0x21')][_0x06d4('0x28')]||null:null,'include':_0x52639f[_0x06d4('0x21')]?_0x52639f[_0x06d4('0x21')][_0x06d4('0x25')]?_[_0x06d4('0x26')](_0x52639f[_0x06d4('0x21')][_0x06d4('0x25')],function(_0x5765fd){return{'model':db[_0x5765fd[_0x06d4('0x27')]],'as':_0x5765fd['as'],'attributes':_0x5765fd[_0x06d4('0x28')],'include':_0x5765fd['include']?_[_0x06d4('0x26')](_0x5765fd['include'],function(_0x588430){return{'model':db[_0x588430[_0x06d4('0x27')]],'as':_0x588430['as'],'attributes':_0x588430[_0x06d4('0x28')],'include':_0x588430[_0x06d4('0x25')]?_[_0x06d4('0x26')](_0x588430[_0x06d4('0x25')],function(_0x51d13b){return{'model':db[_0x51d13b[_0x06d4('0x27')]],'as':_0x51d13b['as'],'attributes':_0x51d13b[_0x06d4('0x28')]};}):[]};}):[]};}):[]:[]})[_0x06d4('0x12')](function(_0x2a2cf1){logger[_0x06d4('0x13')](_0x06d4('0x29'),_0x52639f);logger['debug'](_0x06d4('0x29'),_0x52639f,JSON[_0x06d4('0x18')](_0x2a2cf1));_0x26c34a(_0x2a2cf1);})['catch'](function(_0x39f040){logger['error']('ShowMailQueue',_0x39f040[_0x06d4('0x1b')],_0x52639f);_0x5d80b3(_0x212570[_0x06d4('0x1a')](0x1f4,_0x39f040[_0x06d4('0x1b')]));});});};
\ No newline at end of file
+var _0xbed3=['findAll','options','where','limit','include','map','model','attributes','then','ShowMailQueue','find','raw','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','request','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailQueue','MailQueue'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xbed3,0x81));var _0x3bed=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xbed3[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x3bed('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3bed('0x1'));var rs=require(_0x3bed('0x2'));var fs=require('fs');var Redis=require(_0x3bed('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3bed('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x3bed('0x5'));var jayson=require(_0x3bed('0x6'));var client=jayson['client'][_0x3bed('0x7')]({'port':0x232a});config[_0x3bed('0x8')]=_[_0x3bed('0x9')](config[_0x3bed('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x3bed('0xa'))(new Redis(config['redis']));require(_0x3bed('0xb'))[_0x3bed('0xc')](socket);function respondWithRpcPromise(_0x1da652,_0x67fcf4,_0x163f53){return new BPromise(function(_0x4c8172,_0x13599e){return client[_0x3bed('0xd')](_0x1da652,_0x163f53)['then'](function(_0x12f568){logger[_0x3bed('0xe')](_0x3bed('0xf'),_0x67fcf4,_0x3bed('0x10'));logger[_0x3bed('0x11')](_0x3bed('0x12'),_0x67fcf4,_0x3bed('0x10'),JSON[_0x3bed('0x13')](_0x12f568));if(_0x12f568[_0x3bed('0x14')]){if(_0x12f568[_0x3bed('0x14')][_0x3bed('0x15')]===0x1f4){logger['error'](_0x3bed('0xf'),_0x67fcf4,_0x12f568['error'][_0x3bed('0x16')]);return _0x13599e(_0x12f568[_0x3bed('0x14')][_0x3bed('0x16')]);}logger[_0x3bed('0x14')](_0x3bed('0xf'),_0x67fcf4,_0x12f568[_0x3bed('0x14')][_0x3bed('0x16')]);return _0x4c8172(_0x12f568[_0x3bed('0x14')]['message']);}else{logger[_0x3bed('0xe')](_0x3bed('0xf'),_0x67fcf4,_0x3bed('0x10'));_0x4c8172(_0x12f568[_0x3bed('0x17')][_0x3bed('0x16')]);}})[_0x3bed('0x18')](function(_0x11f03e){logger['error'](_0x3bed('0xf'),_0x67fcf4,_0x11f03e);_0x13599e(_0x11f03e);});});}exports[_0x3bed('0x19')]=function(_0x23f873){var _0x44dee5=this;return new Promise(function(_0x2bb607,_0x2e95f8){return db[_0x3bed('0x1a')][_0x3bed('0x1b')]({'raw':_0x23f873[_0x3bed('0x1c')]?_0x23f873[_0x3bed('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x23f873[_0x3bed('0x1c')]?_0x23f873['options'][_0x3bed('0x1d')]||null:null,'attributes':_0x23f873[_0x3bed('0x1c')]?_0x23f873[_0x3bed('0x1c')]['attributes']||null:null,'limit':_0x23f873[_0x3bed('0x1c')]?_0x23f873[_0x3bed('0x1c')][_0x3bed('0x1e')]||null:null,'include':_0x23f873[_0x3bed('0x1c')]?_0x23f873['options'][_0x3bed('0x1f')]?_[_0x3bed('0x20')](_0x23f873[_0x3bed('0x1c')]['include'],function(_0x5812c7){return{'model':db[_0x5812c7[_0x3bed('0x21')]],'as':_0x5812c7['as'],'attributes':_0x5812c7['attributes'],'include':_0x5812c7[_0x3bed('0x1f')]?_[_0x3bed('0x20')](_0x5812c7['include'],function(_0x45c925){return{'model':db[_0x45c925[_0x3bed('0x21')]],'as':_0x45c925['as'],'attributes':_0x45c925[_0x3bed('0x22')],'include':_0x45c925[_0x3bed('0x1f')]?_[_0x3bed('0x20')](_0x45c925[_0x3bed('0x1f')],function(_0x548f80){return{'model':db[_0x548f80[_0x3bed('0x21')]],'as':_0x548f80['as'],'attributes':_0x548f80[_0x3bed('0x22')]};}):[]};}):[]};}):[]:[]})[_0x3bed('0x23')](function(_0x51d888){logger['info'](_0x3bed('0x19'),_0x23f873);logger[_0x3bed('0x11')](_0x3bed('0x19'),_0x23f873,JSON[_0x3bed('0x13')](_0x51d888));_0x2bb607(_0x51d888);})[_0x3bed('0x18')](function(_0x113ef3){logger['error']('GetMailQueue',_0x113ef3[_0x3bed('0x16')],_0x23f873);_0x2e95f8(_0x44dee5['error'](0x1f4,_0x113ef3[_0x3bed('0x16')]));});});};exports[_0x3bed('0x24')]=function(_0x2fb645){var _0x329f0f=this;return new Promise(function(_0x2caa04,_0x493c9f){return db['MailQueue'][_0x3bed('0x25')]({'raw':_0x2fb645[_0x3bed('0x1c')]?_0x2fb645['options'][_0x3bed('0x26')]===undefined?!![]:![]:!![],'where':_0x2fb645[_0x3bed('0x1c')]?_0x2fb645[_0x3bed('0x1c')][_0x3bed('0x1d')]||null:null,'attributes':_0x2fb645['options']?_0x2fb645['options'][_0x3bed('0x22')]||null:null,'include':_0x2fb645['options']?_0x2fb645['options'][_0x3bed('0x1f')]?_[_0x3bed('0x20')](_0x2fb645['options'][_0x3bed('0x1f')],function(_0x486033){return{'model':db[_0x486033[_0x3bed('0x21')]],'as':_0x486033['as'],'attributes':_0x486033[_0x3bed('0x22')],'include':_0x486033[_0x3bed('0x1f')]?_[_0x3bed('0x20')](_0x486033[_0x3bed('0x1f')],function(_0x30eda1){return{'model':db[_0x30eda1[_0x3bed('0x21')]],'as':_0x30eda1['as'],'attributes':_0x30eda1[_0x3bed('0x22')],'include':_0x30eda1[_0x3bed('0x1f')]?_[_0x3bed('0x20')](_0x30eda1[_0x3bed('0x1f')],function(_0x3faf78){return{'model':db[_0x3faf78[_0x3bed('0x21')]],'as':_0x3faf78['as'],'attributes':_0x3faf78['attributes']};}):[]};}):[]};}):[]:[]})[_0x3bed('0x23')](function(_0x288a50){logger['info'](_0x3bed('0x24'),_0x2fb645);logger[_0x3bed('0x11')](_0x3bed('0x24'),_0x2fb645,JSON['stringify'](_0x288a50));_0x2caa04(_0x288a50);})['catch'](function(_0x4a299a){logger['error'](_0x3bed('0x24'),_0x4a299a[_0x3bed('0x16')],_0x2fb645);_0x493c9f(_0x329f0f['error'](0x1f4,_0x4a299a[_0x3bed('0x16')]));});});};
\ No newline at end of file
index 895c744..98a4a57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x675c=['length','mailQueue:','./mailQueue.events','save','remove','update','emit','register'];(function(_0x53b6ae,_0x3cb9f4){var _0x34f4b2=function(_0x4b3169){while(--_0x4b3169){_0x53b6ae['push'](_0x53b6ae['shift']());}};_0x34f4b2(++_0x3cb9f4);}(_0x675c,0x72));var _0xc675=function(_0x3a60f3,_0x3d0fcc){_0x3a60f3=_0x3a60f3-0x0;var _0x987bb1=_0x675c[_0x3a60f3];return _0x987bb1;};'use strict';var MailQueueEvents=require(_0xc675('0x0'));var events=[_0xc675('0x1'),_0xc675('0x2'),_0xc675('0x3')];function createListener(_0x578e33,_0x18b106){return function(_0x195ce2){_0x18b106[_0xc675('0x4')](_0x578e33,_0x195ce2);};}function removeListener(_0x1c81fc,_0x59a2e6){return function(){MailQueueEvents['removeListener'](_0x1c81fc,_0x59a2e6);};}exports[_0xc675('0x5')]=function(_0x29162c){for(var _0x248744=0x0,_0x559dc3=events[_0xc675('0x6')];_0x248744<_0x559dc3;_0x248744++){var _0x2a970a=events[_0x248744];var _0x39ef81=createListener(_0xc675('0x7')+_0x2a970a,_0x29162c);MailQueueEvents['on'](_0x2a970a,_0x39ef81);}};
\ No newline at end of file
+var _0x7cc1=['emit','removeListener','length','./mailQueue.events','save','remove','update'];(function(_0x2ea384,_0x20e770){var _0x4d591e=function(_0x3289d0){while(--_0x3289d0){_0x2ea384['push'](_0x2ea384['shift']());}};_0x4d591e(++_0x20e770);}(_0x7cc1,0x199));var _0x17cc=function(_0x1d0736,_0x31b7cc){_0x1d0736=_0x1d0736-0x0;var _0x47bd80=_0x7cc1[_0x1d0736];return _0x47bd80;};'use strict';var MailQueueEvents=require(_0x17cc('0x0'));var events=[_0x17cc('0x1'),_0x17cc('0x2'),_0x17cc('0x3')];function createListener(_0x55462c,_0x23ac4a){return function(_0x40c3a5){_0x23ac4a[_0x17cc('0x4')](_0x55462c,_0x40c3a5);};}function removeListener(_0x42483b,_0x3bdf8f){return function(){MailQueueEvents[_0x17cc('0x5')](_0x42483b,_0x3bdf8f);};}exports['register']=function(_0x13998e){for(var _0x18cad7=0x0,_0x4b01dd=events[_0x17cc('0x6')];_0x18cad7<_0x4b01dd;_0x18cad7++){var _0x449449=events[_0x18cad7];var _0x5f282c=createListener('mailQueue:'+_0x449449,_0x13998e);MailQueueEvents['on'](_0x449449,_0x5f282c);}};
\ No newline at end of file
index 5716a12..1ec1d41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae7=['/describe','describe','get','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailQueueReport.controller','isAuthenticated','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeae7,0x15a));var _0x7eae=function(_0x35f7f5,_0x4e2ee1){_0x35f7f5=_0x35f7f5-0x0;var _0x5567a4=_0xeae7[_0x35f7f5];return _0x5567a4;};'use strict';var multer=require(_0x7eae('0x0'));var util=require(_0x7eae('0x1'));var path=require(_0x7eae('0x2'));var timeout=require(_0x7eae('0x3'));var express=require(_0x7eae('0x4'));var router=express['Router']();var fs_extra=require(_0x7eae('0x5'));var auth=require(_0x7eae('0x6'));var interaction=require(_0x7eae('0x7'));var config=require('../../config/environment');var controller=require(_0x7eae('0x8'));router['get']('/',auth[_0x7eae('0x9')](),controller[_0x7eae('0xa')]);router['get'](_0x7eae('0xb'),auth[_0x7eae('0x9')](),controller[_0x7eae('0xc')]);router[_0x7eae('0xd')](_0x7eae('0xe'),auth[_0x7eae('0x9')](),controller[_0x7eae('0xf')]);router[_0x7eae('0x10')]('/',auth[_0x7eae('0x9')](),controller[_0x7eae('0x11')]);router[_0x7eae('0x12')](_0x7eae('0xe'),auth['isAuthenticated'](),controller[_0x7eae('0x13')]);router[_0x7eae('0x14')](_0x7eae('0xe'),auth[_0x7eae('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x57d3=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','index','describe','get','show','post','create','/:id','delete'];(function(_0x32b8a9,_0x59d62b){var _0x40105c=function(_0x54c048){while(--_0x54c048){_0x32b8a9['push'](_0x32b8a9['shift']());}};_0x40105c(++_0x59d62b);}(_0x57d3,0x1a4));var _0x357d=function(_0x423ce7,_0x5effb6){_0x423ce7=_0x423ce7-0x0;var _0x208c29=_0x57d3[_0x423ce7];return _0x208c29;};'use strict';var multer=require(_0x357d('0x0'));var util=require(_0x357d('0x1'));var path=require(_0x357d('0x2'));var timeout=require(_0x357d('0x3'));var express=require(_0x357d('0x4'));var router=express[_0x357d('0x5')]();var fs_extra=require(_0x357d('0x6'));var auth=require(_0x357d('0x7'));var interaction=require(_0x357d('0x8'));var config=require(_0x357d('0x9'));var controller=require(_0x357d('0xa'));router['get']('/',auth[_0x357d('0xb')](),controller[_0x357d('0xc')]);router['get']('/describe',auth[_0x357d('0xb')](),controller[_0x357d('0xd')]);router[_0x357d('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x357d('0xf')]);router[_0x357d('0x10')]('/',auth['isAuthenticated'](),controller[_0x357d('0x11')]);router['put'](_0x357d('0x12'),auth[_0x357d('0xb')](),controller['update']);router[_0x357d('0x13')](_0x357d('0x12'),auth[_0x357d('0xb')](),controller[_0x357d('0x14')]);module[_0x357d('0x15')]=router;
\ No newline at end of file
index 9e2e9a7..f1a8775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25b2=['STRING','DATE','exports'];(function(_0x2a7817,_0x531c96){var _0x193308=function(_0x382553){while(--_0x382553){_0x2a7817['push'](_0x2a7817['shift']());}};_0x193308(++_0x531c96);}(_0x25b2,0x12e));var _0x225b=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x25b2[_0x110c3d];return _0x226d67;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x225b('0x0')]={'uniqueid':{'type':Sequelize[_0x225b('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x225b('0x1')]},'joinAt':{'type':Sequelize[_0x225b('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x225b('0x2')]},'exitAt':{'type':Sequelize[_0x225b('0x2')]},'reason':{'type':Sequelize[_0x225b('0x1')]}};
\ No newline at end of file
+var _0x75aa=['exports','STRING','DATE','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x75aa,0xef));var _0xa75a=function(_0x3c2df0,_0x5ac96a){_0x3c2df0=_0x3c2df0-0x0;var _0x2e3bf3=_0x75aa[_0x3c2df0];return _0x2e3bf3;};'use strict';var moment=require(_0xa75a('0x0'));var Sequelize=require('sequelize');module[_0xa75a('0x1')]={'uniqueid':{'type':Sequelize[_0xa75a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xa75a('0x2')]},'joinAt':{'type':Sequelize[_0xa75a('0x3')]},'leaveAt':{'type':Sequelize[_0xa75a('0x3')]},'acceptAt':{'type':Sequelize[_0xa75a('0x3')]},'exitAt':{'type':Sequelize[_0xa75a('0x3')]},'reason':{'type':Sequelize[_0xa75a('0x2')]}};
\ No newline at end of file
index 9ce690c..c199300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['reject','update','then','destroy','error','name','send','index','map','MailQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply'];(function(_0x16a4c6,_0x173e6d){var _0x5a3dbc=function(_0x26bd0e){while(--_0x26bd0e){_0x16a4c6['push'](_0x16a4c6['shift']());}};_0x5a3dbc(++_0x173e6d);}(_0x955f,0x1eb));var _0xf955=function(_0x3ab90d,_0x3c7876){_0x3ab90d=_0x3ab90d-0x0;var _0x5a2aad=_0x955f[_0x3ab90d];return _0x5a2aad;};'use strict';var emlformat=require(_0xf955('0x0'));var rimraf=require(_0xf955('0x1'));var zipdir=require(_0xf955('0x2'));var jsonpatch=require(_0xf955('0x3'));var rp=require(_0xf955('0x4'));var moment=require('moment');var BPromise=require(_0xf955('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf955('0x6'));var sox=require('sox');var csv=require(_0xf955('0x7'));var ejs=require(_0xf955('0x8'));var fs=require('fs');var fs_extra=require(_0xf955('0x9'));var _=require('lodash');var squel=require(_0xf955('0xa'));var crypto=require(_0xf955('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf955('0xc'));var toCsv=require(_0xf955('0x7'));var querystring=require(_0xf955('0xd'));var Papa=require(_0xf955('0xe'));var Redis=require(_0xf955('0xf'));var authService=require(_0xf955('0x10'));var qs=require(_0xf955('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf955('0x12'));var logger=require('../../config/logger')(_0xf955('0x13'));var utils=require(_0xf955('0x14'));var config=require(_0xf955('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf955('0x16'))['db'];function respondWithStatusCode(_0x542347,_0x23e0c6){_0x23e0c6=_0x23e0c6||0xcc;return function(_0x50d9a9){if(_0x50d9a9){return _0x542347[_0xf955('0x17')](_0x23e0c6);}return _0x542347[_0xf955('0x18')](_0x23e0c6)[_0xf955('0x19')]();};}function respondWithResult(_0x109bc5,_0x2080c4){_0x2080c4=_0x2080c4||0xc8;return function(_0x341b8c){if(_0x341b8c){return _0x109bc5[_0xf955('0x18')](_0x2080c4)[_0xf955('0x1a')](_0x341b8c);}};}function respondWithFilteredResult(_0x3c6af7,_0x24e75c){return function(_0x5350e4){if(_0x5350e4){var _0xc29b35=typeof _0x24e75c['offset']===_0xf955('0x1b')&&typeof _0x24e75c[_0xf955('0x1c')]===_0xf955('0x1b');var _0x15c07c=_0x5350e4['count'];var _0x5ac6cb=_0xc29b35?0x0:_0x24e75c[_0xf955('0x1d')];var _0xe6de5c=_0xc29b35?_0x5350e4[_0xf955('0x1e')]:_0x24e75c['offset']+_0x24e75c[_0xf955('0x1c')];var _0x3576fa;if(_0xe6de5c>=_0x15c07c){_0xe6de5c=_0x15c07c;_0x3576fa=0xc8;}else{_0x3576fa=0xce;}_0x3c6af7[_0xf955('0x18')](_0x3576fa);return _0x3c6af7[_0xf955('0x1f')](_0xf955('0x20'),_0x5ac6cb+'-'+_0xe6de5c+'/'+_0x15c07c)['json'](_0x5350e4);}return null;};}function patchUpdates(_0x17d86a){return function(_0x3dbbe8){try{jsonpatch[_0xf955('0x21')](_0x3dbbe8,_0x17d86a,!![]);}catch(_0x488d04){return BPromise[_0xf955('0x22')](_0x488d04);}return _0x3dbbe8['save']();};}function saveUpdates(_0x21ae24,_0x43b078){return function(_0x37143d){if(_0x37143d){return _0x37143d[_0xf955('0x23')](_0x21ae24)[_0xf955('0x24')](function(_0x565641){return _0x565641;});}return null;};}function removeEntity(_0x25f4f2,_0x5fab1c){return function(_0x3585c7){if(_0x3585c7){return _0x3585c7[_0xf955('0x25')]()[_0xf955('0x24')](function(){_0x25f4f2[_0xf955('0x18')](0xcc)[_0xf955('0x19')]();});}};}function handleEntityNotFound(_0x552cf3,_0x18f435){return function(_0x1acf33){if(!_0x1acf33){_0x552cf3[_0xf955('0x17')](0x194);}return _0x1acf33;};}function handleError(_0x406632,_0x2dcd55){_0x2dcd55=_0x2dcd55||0x1f4;return function(_0x13a86d){logger[_0xf955('0x26')](_0x13a86d['stack']);if(_0x13a86d[_0xf955('0x27')]){delete _0x13a86d[_0xf955('0x27')];}_0x406632[_0xf955('0x18')](_0x2dcd55)[_0xf955('0x28')](_0x13a86d);};}exports[_0xf955('0x29')]=function(_0x264f6d,_0x4d4af0){var _0x2232a7={},_0x1e5d37={},_0x4ec3e8={'count':0x0,'rows':[]};var _0x256df5=_[_0xf955('0x2a')](db[_0xf955('0x2b')][_0xf955('0x2c')],function(_0x59bfb5){return{'name':_0x59bfb5[_0xf955('0x2d')],'type':_0x59bfb5['type'][_0xf955('0x2e')]};});_0x1e5d37[_0xf955('0x2f')]=_[_0xf955('0x2a')](_0x256df5,_0xf955('0x27'));_0x1e5d37[_0xf955('0x30')]=_[_0xf955('0x31')](_0x264f6d[_0xf955('0x30')]);_0x1e5d37[_0xf955('0x32')]=_['intersection'](_0x1e5d37[_0xf955('0x2f')],_0x1e5d37[_0xf955('0x30')]);_0x2232a7[_0xf955('0x33')]=_[_0xf955('0x34')](_0x1e5d37['model'],qs[_0xf955('0x35')](_0x264f6d[_0xf955('0x30')][_0xf955('0x35')]));_0x2232a7[_0xf955('0x33')]=_0x2232a7[_0xf955('0x33')]['length']?_0x2232a7['attributes']:_0x1e5d37['model'];if(!_0x264f6d[_0xf955('0x30')][_0xf955('0x36')](_0xf955('0x37'))){_0x2232a7[_0xf955('0x1c')]=qs[_0xf955('0x1c')](_0x264f6d[_0xf955('0x30')]['limit']);_0x2232a7[_0xf955('0x1d')]=qs['offset'](_0x264f6d[_0xf955('0x30')][_0xf955('0x1d')]);}_0x2232a7[_0xf955('0x38')]=qs['sort'](_0x264f6d[_0xf955('0x30')]['sort']);_0x2232a7[_0xf955('0x39')]=qs[_0xf955('0x32')](_[_0xf955('0x3a')](_0x264f6d[_0xf955('0x30')],_0x1e5d37['filters']),_0x256df5);if(_0x264f6d[_0xf955('0x30')][_0xf955('0x3b')]){_0x2232a7['where']=_[_0xf955('0x3c')](_0x2232a7[_0xf955('0x39')],{'$or':_[_0xf955('0x2a')](_0x256df5,function(_0x547ed9){if(_0x547ed9[_0xf955('0x3d')]!==_0xf955('0x3e')){var _0x11b7e2={};_0x11b7e2[_0x547ed9['name']]={'$like':'%'+_0x264f6d[_0xf955('0x30')][_0xf955('0x3b')]+'%'};return _0x11b7e2;}})});}_0x2232a7=_[_0xf955('0x3c')]({},_0x2232a7,_0x264f6d[_0xf955('0x3f')]);var _0x2bfbe4={'where':_0x2232a7[_0xf955('0x39')]};return db[_0xf955('0x2b')][_0xf955('0x1e')](_0x2bfbe4)['then'](function(_0x8fa41b){_0x4ec3e8[_0xf955('0x1e')]=_0x8fa41b;if(_0x264f6d[_0xf955('0x30')][_0xf955('0x40')]){_0x2232a7[_0xf955('0x41')]=[{'all':!![]}];}return db[_0xf955('0x2b')][_0xf955('0x42')](_0x2232a7);})[_0xf955('0x24')](function(_0x47651b){_0x4ec3e8[_0xf955('0x43')]=_0x47651b;return _0x4ec3e8;})[_0xf955('0x24')](respondWithFilteredResult(_0x4d4af0,_0x2232a7))[_0xf955('0x44')](handleError(_0x4d4af0,null));};exports[_0xf955('0x45')]=function(_0x159ae3,_0x3557b5){var _0x248f60={'raw':!![],'where':{'id':_0x159ae3[_0xf955('0x46')]['id']}},_0x356ec2={};_0x356ec2[_0xf955('0x2f')]=_['keys'](db[_0xf955('0x2b')][_0xf955('0x2c')]);_0x356ec2[_0xf955('0x30')]=_['keys'](_0x159ae3[_0xf955('0x30')]);_0x356ec2['filters']=_[_0xf955('0x34')](_0x356ec2['model'],_0x356ec2[_0xf955('0x30')]);_0x248f60[_0xf955('0x33')]=_[_0xf955('0x34')](_0x356ec2[_0xf955('0x2f')],qs['fields'](_0x159ae3[_0xf955('0x30')][_0xf955('0x35')]));_0x248f60[_0xf955('0x33')]=_0x248f60['attributes']['length']?_0x248f60[_0xf955('0x33')]:_0x356ec2[_0xf955('0x2f')];if(_0x159ae3[_0xf955('0x30')][_0xf955('0x40')]){_0x248f60['include']=[{'all':!![]}];}_0x248f60=_[_0xf955('0x3c')]({},_0x248f60,_0x159ae3[_0xf955('0x3f')]);return db[_0xf955('0x2b')]['find'](_0x248f60)[_0xf955('0x24')](handleEntityNotFound(_0x3557b5,null))['then'](respondWithResult(_0x3557b5,null))[_0xf955('0x44')](handleError(_0x3557b5,null));};exports[_0xf955('0x47')]=function(_0x2c867f,_0x4dd592){return db[_0xf955('0x2b')][_0xf955('0x47')](_0x2c867f[_0xf955('0x48')],{})[_0xf955('0x24')](respondWithResult(_0x4dd592,0xc9))['catch'](handleError(_0x4dd592,null));};exports[_0xf955('0x23')]=function(_0x4ff0f1,_0x1c6d76){if(_0x4ff0f1[_0xf955('0x48')]['id']){delete _0x4ff0f1[_0xf955('0x48')]['id'];}return db['MailQueueReport'][_0xf955('0x49')]({'where':{'id':_0x4ff0f1['params']['id']}})[_0xf955('0x24')](handleEntityNotFound(_0x1c6d76,null))['then'](saveUpdates(_0x4ff0f1[_0xf955('0x48')],null))['then'](respondWithResult(_0x1c6d76,null))['catch'](handleError(_0x1c6d76,null));};exports[_0xf955('0x25')]=function(_0x45c7fe,_0x4961cc){return db[_0xf955('0x2b')]['find']({'where':{'id':_0x45c7fe['params']['id']}})['then'](handleEntityNotFound(_0x4961cc,null))['then'](removeEntity(_0x4961cc,null))[_0xf955('0x44')](handleError(_0x4961cc,null));};exports[_0xf955('0x4a')]=function(_0x4a7aee,_0x4c4b6d){return db[_0xf955('0x2b')][_0xf955('0x4a')]()[_0xf955('0x24')](respondWithResult(_0x4c4b6d,null))[_0xf955('0x44')](handleError(_0x4c4b6d,null));};
\ No newline at end of file
+var _0x77d4=['save','update','then','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','filter','options','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','describe','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','reject'];(function(_0x213721,_0xc41653){var _0x6435ee=function(_0x6b1fe){while(--_0x6b1fe){_0x213721['push'](_0x213721['shift']());}};_0x6435ee(++_0xc41653);}(_0x77d4,0x108));var _0x477d=function(_0xe468cf,_0x41e5cb){_0xe468cf=_0xe468cf-0x0;var _0xc81800=_0x77d4[_0xe468cf];return _0xc81800;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x477d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x477d('0x1'));var rp=require('request-promise');var moment=require(_0x477d('0x2'));var BPromise=require(_0x477d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x477d('0x4'));var sox=require(_0x477d('0x5'));var csv=require(_0x477d('0x6'));var ejs=require(_0x477d('0x7'));var fs=require('fs');var fs_extra=require(_0x477d('0x8'));var _=require(_0x477d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x477d('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x477d('0xb'));var Papa=require(_0x477d('0xc'));var Redis=require(_0x477d('0xd'));var authService=require(_0x477d('0xe'));var qs=require(_0x477d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x477d('0x10'));var logger=require('../../config/logger')(_0x477d('0x11'));var utils=require(_0x477d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x477d('0x13'));var db=require(_0x477d('0x14'))['db'];function respondWithStatusCode(_0x5a190c,_0x5dd33c){_0x5dd33c=_0x5dd33c||0xcc;return function(_0x6ff724){if(_0x6ff724){return _0x5a190c[_0x477d('0x15')](_0x5dd33c);}return _0x5a190c['status'](_0x5dd33c)[_0x477d('0x16')]();};}function respondWithResult(_0x1d5699,_0x48c73a){_0x48c73a=_0x48c73a||0xc8;return function(_0x4b2021){if(_0x4b2021){return _0x1d5699[_0x477d('0x17')](_0x48c73a)['json'](_0x4b2021);}};}function respondWithFilteredResult(_0x30481f,_0x234b99){return function(_0x25fc02){if(_0x25fc02){var _0x5985b5=typeof _0x234b99[_0x477d('0x18')]===_0x477d('0x19')&&typeof _0x234b99[_0x477d('0x1a')]===_0x477d('0x19');var _0x57b38e=_0x25fc02[_0x477d('0x1b')];var _0x5d5553=_0x5985b5?0x0:_0x234b99[_0x477d('0x18')];var _0x1399d7=_0x5985b5?_0x25fc02[_0x477d('0x1b')]:_0x234b99[_0x477d('0x18')]+_0x234b99[_0x477d('0x1a')];var _0x2145ce;if(_0x1399d7>=_0x57b38e){_0x1399d7=_0x57b38e;_0x2145ce=0xc8;}else{_0x2145ce=0xce;}_0x30481f['status'](_0x2145ce);return _0x30481f[_0x477d('0x1c')]('Content-Range',_0x5d5553+'-'+_0x1399d7+'/'+_0x57b38e)[_0x477d('0x1d')](_0x25fc02);}return null;};}function patchUpdates(_0x24a6d5){return function(_0x40256e){try{jsonpatch[_0x477d('0x1e')](_0x40256e,_0x24a6d5,!![]);}catch(_0x27b3aa){return BPromise[_0x477d('0x1f')](_0x27b3aa);}return _0x40256e[_0x477d('0x20')]();};}function saveUpdates(_0x17154d,_0x45a8bd){return function(_0x5981a){if(_0x5981a){return _0x5981a[_0x477d('0x21')](_0x17154d)[_0x477d('0x22')](function(_0x43c845){return _0x43c845;});}return null;};}function removeEntity(_0x1f3868,_0x4e6a44){return function(_0x4481b0){if(_0x4481b0){return _0x4481b0['destroy']()[_0x477d('0x22')](function(){_0x1f3868[_0x477d('0x17')](0xcc)[_0x477d('0x16')]();});}};}function handleEntityNotFound(_0x2287b4,_0x4bb50e){return function(_0xd6dca5){if(!_0xd6dca5){_0x2287b4[_0x477d('0x15')](0x194);}return _0xd6dca5;};}function handleError(_0x1ca4fe,_0x48ee5e){_0x48ee5e=_0x48ee5e||0x1f4;return function(_0x585648){logger[_0x477d('0x23')](_0x585648[_0x477d('0x24')]);if(_0x585648[_0x477d('0x25')]){delete _0x585648['name'];}_0x1ca4fe[_0x477d('0x17')](_0x48ee5e)[_0x477d('0x26')](_0x585648);};}exports[_0x477d('0x27')]=function(_0xe4dd40,_0x37b332){var _0x537fc4={},_0x2fc959={},_0xeb02f5={'count':0x0,'rows':[]};var _0x17dd16=_[_0x477d('0x28')](db[_0x477d('0x29')][_0x477d('0x2a')],function(_0x180046){return{'name':_0x180046[_0x477d('0x2b')],'type':_0x180046[_0x477d('0x2c')][_0x477d('0x2d')]};});_0x2fc959[_0x477d('0x2e')]=_[_0x477d('0x28')](_0x17dd16,_0x477d('0x25'));_0x2fc959[_0x477d('0x2f')]=_[_0x477d('0x30')](_0xe4dd40[_0x477d('0x2f')]);_0x2fc959[_0x477d('0x31')]=_[_0x477d('0x32')](_0x2fc959[_0x477d('0x2e')],_0x2fc959[_0x477d('0x2f')]);_0x537fc4['attributes']=_[_0x477d('0x32')](_0x2fc959['model'],qs[_0x477d('0x33')](_0xe4dd40[_0x477d('0x2f')][_0x477d('0x33')]));_0x537fc4['attributes']=_0x537fc4[_0x477d('0x34')][_0x477d('0x35')]?_0x537fc4[_0x477d('0x34')]:_0x2fc959[_0x477d('0x2e')];if(!_0xe4dd40[_0x477d('0x2f')][_0x477d('0x36')](_0x477d('0x37'))){_0x537fc4[_0x477d('0x1a')]=qs[_0x477d('0x1a')](_0xe4dd40[_0x477d('0x2f')]['limit']);_0x537fc4[_0x477d('0x18')]=qs[_0x477d('0x18')](_0xe4dd40[_0x477d('0x2f')]['offset']);}_0x537fc4[_0x477d('0x38')]=qs[_0x477d('0x39')](_0xe4dd40[_0x477d('0x2f')]['sort']);_0x537fc4['where']=qs[_0x477d('0x31')](_[_0x477d('0x3a')](_0xe4dd40[_0x477d('0x2f')],_0x2fc959[_0x477d('0x31')]),_0x17dd16);if(_0xe4dd40[_0x477d('0x2f')]['filter']){_0x537fc4[_0x477d('0x3b')]=_['merge'](_0x537fc4[_0x477d('0x3b')],{'$or':_[_0x477d('0x28')](_0x17dd16,function(_0x356f41){if(_0x356f41['type']!=='VIRTUAL'){var _0x184d50={};_0x184d50[_0x356f41[_0x477d('0x25')]]={'$like':'%'+_0xe4dd40[_0x477d('0x2f')][_0x477d('0x3c')]+'%'};return _0x184d50;}})});}_0x537fc4=_['merge']({},_0x537fc4,_0xe4dd40[_0x477d('0x3d')]);var _0xc091e={'where':_0x537fc4[_0x477d('0x3b')]};return db[_0x477d('0x29')][_0x477d('0x1b')](_0xc091e)['then'](function(_0x472149){_0xeb02f5[_0x477d('0x1b')]=_0x472149;if(_0xe4dd40['query'][_0x477d('0x3e')]){_0x537fc4['include']=[{'all':!![]}];}return db[_0x477d('0x29')][_0x477d('0x3f')](_0x537fc4);})[_0x477d('0x22')](function(_0x335b2a){_0xeb02f5[_0x477d('0x40')]=_0x335b2a;return _0xeb02f5;})[_0x477d('0x22')](respondWithFilteredResult(_0x37b332,_0x537fc4))[_0x477d('0x41')](handleError(_0x37b332,null));};exports[_0x477d('0x42')]=function(_0x43ffd1,_0x4c22f5){var _0x5759f={'raw':!![],'where':{'id':_0x43ffd1[_0x477d('0x43')]['id']}},_0x31c9a1={};_0x31c9a1[_0x477d('0x2e')]=_['keys'](db['MailQueueReport'][_0x477d('0x2a')]);_0x31c9a1[_0x477d('0x2f')]=_['keys'](_0x43ffd1[_0x477d('0x2f')]);_0x31c9a1['filters']=_['intersection'](_0x31c9a1[_0x477d('0x2e')],_0x31c9a1[_0x477d('0x2f')]);_0x5759f[_0x477d('0x34')]=_[_0x477d('0x32')](_0x31c9a1[_0x477d('0x2e')],qs[_0x477d('0x33')](_0x43ffd1['query'][_0x477d('0x33')]));_0x5759f[_0x477d('0x34')]=_0x5759f[_0x477d('0x34')][_0x477d('0x35')]?_0x5759f[_0x477d('0x34')]:_0x31c9a1['model'];if(_0x43ffd1['query'][_0x477d('0x3e')]){_0x5759f[_0x477d('0x44')]=[{'all':!![]}];}_0x5759f=_[_0x477d('0x45')]({},_0x5759f,_0x43ffd1['options']);return db[_0x477d('0x29')][_0x477d('0x46')](_0x5759f)[_0x477d('0x22')](handleEntityNotFound(_0x4c22f5,null))[_0x477d('0x22')](respondWithResult(_0x4c22f5,null))[_0x477d('0x41')](handleError(_0x4c22f5,null));};exports[_0x477d('0x47')]=function(_0x13f606,_0x4d4e19){return db[_0x477d('0x29')][_0x477d('0x47')](_0x13f606[_0x477d('0x48')],{})[_0x477d('0x22')](respondWithResult(_0x4d4e19,0xc9))[_0x477d('0x41')](handleError(_0x4d4e19,null));};exports[_0x477d('0x21')]=function(_0x2aad84,_0x30e474){if(_0x2aad84[_0x477d('0x48')]['id']){delete _0x2aad84[_0x477d('0x48')]['id'];}return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x2aad84[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x30e474,null))[_0x477d('0x22')](saveUpdates(_0x2aad84['body'],null))[_0x477d('0x22')](respondWithResult(_0x30e474,null))[_0x477d('0x41')](handleError(_0x30e474,null));};exports['destroy']=function(_0x566ba0,_0x5cb3ca){return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x566ba0[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x5cb3ca,null))[_0x477d('0x22')](removeEntity(_0x5cb3ca,null))[_0x477d('0x41')](handleError(_0x5cb3ca,null));};exports[_0x477d('0x49')]=function(_0x342f18,_0x593faf){return db[_0x477d('0x29')][_0x477d('0x49')]()[_0x477d('0x22')](respondWithResult(_0x593faf,null))[_0x477d('0x41')](handleError(_0x593faf,null));};
\ No newline at end of file
index 806640e..d4f579f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b43=['report_mail_queue','uniqueid','util','api','moment','bluebird','path','../../config/environment','exports','define','MailQueueReport'];(function(_0x51e8ec,_0x4b2daa){var _0x161e56=function(_0x39ec30){while(--_0x39ec30){_0x51e8ec['push'](_0x51e8ec['shift']());}};_0x161e56(++_0x4b2daa);}(_0x3b43,0xbd));var _0x33b4=function(_0x5a685c,_0x4409c0){_0x5a685c=_0x5a685c-0x0;var _0x40fd46=_0x3b43[_0x5a685c];return _0x40fd46;};'use strict';var _=require('lodash');var util=require(_0x33b4('0x0'));var logger=require('../../config/logger')(_0x33b4('0x1'));var moment=require(_0x33b4('0x2'));var BPromise=require(_0x33b4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x33b4('0x4'));var rimraf=require('rimraf');var config=require(_0x33b4('0x5'));var attributes=require('./mailQueueReport.attributes');module[_0x33b4('0x6')]=function(_0x148f91,_0x13915c){return _0x148f91[_0x33b4('0x7')](_0x33b4('0x8'),attributes,{'tableName':_0x33b4('0x9'),'paranoid':![],'indexes':[{'name':_0x33b4('0xa'),'fields':[_0x33b4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xabb5=['bluebird','rimraf','./mailQueueReport.attributes','define','uniqueid','lodash','util','../../config/logger','api'];(function(_0x5ddaac,_0x2697a8){var _0x2a9c58=function(_0x851032){while(--_0x851032){_0x5ddaac['push'](_0x5ddaac['shift']());}};_0x2a9c58(++_0x2697a8);}(_0xabb5,0x1e2));var _0x5abb=function(_0x3cd79b,_0x38d3e9){_0x3cd79b=_0x3cd79b-0x0;var _0x458e61=_0xabb5[_0x3cd79b];return _0x458e61;};'use strict';var _=require(_0x5abb('0x0'));var util=require(_0x5abb('0x1'));var logger=require(_0x5abb('0x2'))(_0x5abb('0x3'));var moment=require('moment');var BPromise=require(_0x5abb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5abb('0x5'));var config=require('../../config/environment');var attributes=require(_0x5abb('0x6'));module['exports']=function(_0x27fca0,_0x5bf9e5){return _0x27fca0[_0x5abb('0x7')]('MailQueueReport',attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x5abb('0x8'),'fields':[_0x5abb('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 165895a..2a43aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5496a3,_0x173939){var _0x2cdbad=function(_0x33be00){while(--_0x33be00){_0x5496a3['push'](_0x5496a3['shift']());}};_0x2cdbad(++_0x173939);}(_0x326f,0xd1));var _0xf326=function(_0x43bc9d,_0x3eff17){_0x43bc9d=_0x43bc9d-0x0;var _0x3be6f1=_0x326f[_0x43bc9d];return _0x3be6f1;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x4e49dc,_0x19c088){var _0x2974bb=function(_0x2bbcc7){while(--_0x2bbcc7){_0x4e49dc['push'](_0x4e49dc['shift']());}};_0x2974bb(++_0x19c088);}(_0x7a54,0x106));var _0x47a5=function(_0x15d0f4,_0x1e2213){_0x15d0f4=_0x15d0f4-0x0;var _0x5e997b=_0x7a54[_0x15d0f4];return _0x5e997b;};'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')]('MailQueueReport,\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['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 5d7206b..5a50c02 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(_0x5e6903,_0x44ca85){var _0x274849=function(_0x575658){while(--_0x575658){_0x5e6903['push'](_0x5e6903['shift']());}};_0x274849(++_0x44ca85);}(_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(_0x18ca9d,_0x46db4c){var _0x4421bf=function(_0x486059){while(--_0x486059){_0x18ca9d['push'](_0x18ca9d['shift']());}};_0x4421bf(++_0x46db4c);}(_0xe706,0xa3));var _0x6e70=function(_0xa41818,_0x346292){_0xa41818=_0xa41818-0x0;var _0x2e8ae6=_0xe706[_0xa41818];return _0x2e8ae6;};'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 f0e38d8..e4a13ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b2a=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x7b2a,0xa1));var _0xa7b2=function(_0x429514,_0x46dc31){_0x429514=_0x429514-0x0;var _0x221b37=_0x7b2a[_0x429514];return _0x221b37;};'use strict';var Sequelize=require(_0xa7b2('0x0'));module[_0xa7b2('0x1')]={'description':{'type':Sequelize[_0xa7b2('0x2')]},'host':{'type':Sequelize[_0xa7b2('0x2')]},'authentication':{'type':Sequelize[_0xa7b2('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0xa7b2('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xa7b2('0x4')]},'tls':{'type':Sequelize[_0xa7b2('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xa7b2('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xa7b2('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xa7b2('0x2')]},'modernAuthentication':{'type':Sequelize[_0xa7b2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5fdc=['INBOX','sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0x55fd95,_0x449efa){var _0x4308fe=function(_0x56e82b){while(--_0x56e82b){_0x55fd95['push'](_0x55fd95['shift']());}};_0x4308fe(++_0x449efa);}(_0x5fdc,0x127));var _0xc5fd=function(_0x276dff,_0x2b509c){_0x276dff=_0x276dff-0x0;var _0x188b3b=_0x5fdc[_0x276dff];return _0x188b3b;};'use strict';var Sequelize=require(_0xc5fd('0x0'));module[_0xc5fd('0x1')]={'description':{'type':Sequelize[_0xc5fd('0x2')]},'host':{'type':Sequelize[_0xc5fd('0x2')]},'authentication':{'type':Sequelize[_0xc5fd('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0xc5fd('0x2')]},'password':{'type':Sequelize[_0xc5fd('0x2')]},'port':{'type':Sequelize[_0xc5fd('0x4')]},'tls':{'type':Sequelize[_0xc5fd('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xc5fd('0x2')],'defaultValue':_0xc5fd('0x5')},'connTimeout':{'type':Sequelize[_0xc5fd('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xc5fd('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0xc5fd('0x2')]},'modernAuthentication':{'type':Sequelize[_0xc5fd('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 4eb013f..6ef66f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbf=['define','MailServerIn','mail_servers_in','util','api','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7dbf,0x157));var _0xf7db=function(_0x3bfa22,_0x39b4c3){_0x3bfa22=_0x3bfa22-0x0;var _0xc0b6a9=_0x7dbf[_0x3bfa22];return _0xc0b6a9;};'use strict';var _=require('lodash');var util=require(_0xf7db('0x0'));var logger=require('../../config/logger')(_0xf7db('0x1'));var moment=require('moment');var BPromise=require(_0xf7db('0x2'));var rp=require(_0xf7db('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf7db('0x4'));var config=require(_0xf7db('0x5'));var attributes=require('./mailServerIn.attributes');module[_0xf7db('0x6')]=function(_0x20cd89,_0x3ff78b){return _0x20cd89[_0xf7db('0x7')](_0xf7db('0x8'),attributes,{'tableName':_0xf7db('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xecb6=['exports','MailServerIn','mail_servers_in','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./mailServerIn.attributes'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xecb6,0x1a7));var _0x6ecb=function(_0x29e132,_0x54de2d){_0x29e132=_0x29e132-0x0;var _0x2b51ea=_0xecb6[_0x29e132];return _0x2b51ea;};'use strict';var _=require(_0x6ecb('0x0'));var util=require(_0x6ecb('0x1'));var logger=require(_0x6ecb('0x2'))(_0x6ecb('0x3'));var moment=require(_0x6ecb('0x4'));var BPromise=require(_0x6ecb('0x5'));var rp=require(_0x6ecb('0x6'));var fs=require('fs');var path=require(_0x6ecb('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6ecb('0x8'));module[_0x6ecb('0x9')]=function(_0x21250e,_0x227758){return _0x21250e['define'](_0x6ecb('0xa'),attributes,{'tableName':_0x6ecb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 530a16f..cbeb645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60e6=['limit','include','map','model','then','GetMailServerIn','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','raw','where','attributes'];(function(_0x491be8,_0xc516a5){var _0x5dedb7=function(_0x26537b){while(--_0x26537b){_0x491be8['push'](_0x491be8['shift']());}};_0x5dedb7(++_0xc516a5);}(_0x60e6,0xd2));var _0x660e=function(_0x2b91c5,_0x3b6db5){_0x2b91c5=_0x2b91c5-0x0;var _0xbd5531=_0x60e6[_0x2b91c5];return _0xbd5531;};'use strict';var _=require(_0x660e('0x0'));var util=require(_0x660e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x660e('0x2'));var fs=require('fs');var Redis=require(_0x660e('0x3'));var db=require(_0x660e('0x4'))['db'];var utils=require(_0x660e('0x5'));var logger=require(_0x660e('0x6'))(_0x660e('0x7'));var config=require(_0x660e('0x8'));var jayson=require(_0x660e('0x9'));var client=jayson[_0x660e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x183678,_0x240a6f,_0xffb701){return new BPromise(function(_0x4c873a,_0x40643f){return client[_0x660e('0xb')](_0x183678,_0xffb701)['then'](function(_0x46db1a){logger[_0x660e('0xc')](_0x660e('0xd'),_0x240a6f,_0x660e('0xe'));logger[_0x660e('0xf')](_0x660e('0x10'),_0x240a6f,_0x660e('0xe'),JSON[_0x660e('0x11')](_0x46db1a));if(_0x46db1a[_0x660e('0x12')]){if(_0x46db1a[_0x660e('0x12')][_0x660e('0x13')]===0x1f4){logger[_0x660e('0x12')](_0x660e('0xd'),_0x240a6f,_0x46db1a['error'][_0x660e('0x14')]);return _0x40643f(_0x46db1a[_0x660e('0x12')][_0x660e('0x14')]);}logger[_0x660e('0x12')](_0x660e('0xd'),_0x240a6f,_0x46db1a[_0x660e('0x12')][_0x660e('0x14')]);return _0x4c873a(_0x46db1a[_0x660e('0x12')][_0x660e('0x14')]);}else{logger[_0x660e('0xc')](_0x660e('0xd'),_0x240a6f,_0x660e('0xe'));_0x4c873a(_0x46db1a[_0x660e('0x15')][_0x660e('0x14')]);}})[_0x660e('0x16')](function(_0x184353){logger[_0x660e('0x12')](_0x660e('0xd'),_0x240a6f,_0x184353);_0x40643f(_0x184353);});});}exports['GetMailServerIn']=function(_0x3a406b){var _0x484907=this;return new Promise(function(_0x26d85e,_0x6d8852){return db['MailServerIn'][_0x660e('0x17')]({'raw':_0x3a406b[_0x660e('0x18')]?_0x3a406b[_0x660e('0x18')][_0x660e('0x19')]===undefined?!![]:![]:!![],'where':_0x3a406b['options']?_0x3a406b['options'][_0x660e('0x1a')]||null:null,'attributes':_0x3a406b[_0x660e('0x18')]?_0x3a406b[_0x660e('0x18')][_0x660e('0x1b')]||null:null,'limit':_0x3a406b[_0x660e('0x18')]?_0x3a406b[_0x660e('0x18')][_0x660e('0x1c')]||null:null,'include':_0x3a406b[_0x660e('0x18')]?_0x3a406b[_0x660e('0x18')][_0x660e('0x1d')]?_[_0x660e('0x1e')](_0x3a406b['options'][_0x660e('0x1d')],function(_0x54e151){return{'model':db[_0x54e151[_0x660e('0x1f')]],'as':_0x54e151['as'],'attributes':_0x54e151[_0x660e('0x1b')],'include':_0x54e151[_0x660e('0x1d')]?_[_0x660e('0x1e')](_0x54e151[_0x660e('0x1d')],function(_0x343523){return{'model':db[_0x343523[_0x660e('0x1f')]],'as':_0x343523['as'],'attributes':_0x343523[_0x660e('0x1b')],'include':_0x343523[_0x660e('0x1d')]?_['map'](_0x343523[_0x660e('0x1d')],function(_0x39512c){return{'model':db[_0x39512c[_0x660e('0x1f')]],'as':_0x39512c['as'],'attributes':_0x39512c['attributes']};}):[]};}):[]};}):[]:[]})[_0x660e('0x20')](function(_0x6485b6){logger[_0x660e('0xc')](_0x660e('0x21'),_0x3a406b);logger['debug']('GetMailServerIn',_0x3a406b,JSON[_0x660e('0x11')](_0x6485b6));_0x26d85e(_0x6485b6);})[_0x660e('0x16')](function(_0x4ed401){logger[_0x660e('0x12')](_0x660e('0x21'),_0x4ed401[_0x660e('0x14')],_0x3a406b);_0x6d8852(_0x484907[_0x660e('0x12')](0x1f4,_0x4ed401[_0x660e('0x14')]));});});};
\ No newline at end of file
+var _0x7aad=['info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','raw','attributes','limit','map','include','model','then','stringify','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request'];(function(_0x272638,_0x42b993){var _0x19d027=function(_0x27ac44){while(--_0x27ac44){_0x272638['push'](_0x272638['shift']());}};_0x19d027(++_0x42b993);}(_0x7aad,0x160));var _0xd7aa=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0x7aad[_0xf0bcac];return _0x4e4c65;};'use strict';var _=require(_0xd7aa('0x0'));var util=require('util');var moment=require(_0xd7aa('0x1'));var BPromise=require(_0xd7aa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd7aa('0x3'));var db=require(_0xd7aa('0x4'))['db'];var utils=require(_0xd7aa('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xd7aa('0x6'));var jayson=require(_0xd7aa('0x7'));var client=jayson[_0xd7aa('0x8')][_0xd7aa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4df120,_0x59023c,_0x2613dd){return new BPromise(function(_0x4bc884,_0x1e4dea){return client[_0xd7aa('0xa')](_0x4df120,_0x2613dd)['then'](function(_0x31d416){logger[_0xd7aa('0xb')](_0xd7aa('0xc'),_0x59023c,_0xd7aa('0xd'));logger[_0xd7aa('0xe')](_0xd7aa('0xf'),_0x59023c,'request\x20sent',JSON['stringify'](_0x31d416));if(_0x31d416[_0xd7aa('0x10')]){if(_0x31d416[_0xd7aa('0x10')][_0xd7aa('0x11')]===0x1f4){logger[_0xd7aa('0x10')]('MailServerIn,\x20%s,\x20%s',_0x59023c,_0x31d416[_0xd7aa('0x10')][_0xd7aa('0x12')]);return _0x1e4dea(_0x31d416[_0xd7aa('0x10')][_0xd7aa('0x12')]);}logger[_0xd7aa('0x10')](_0xd7aa('0xc'),_0x59023c,_0x31d416['error'][_0xd7aa('0x12')]);return _0x4bc884(_0x31d416[_0xd7aa('0x10')][_0xd7aa('0x12')]);}else{logger[_0xd7aa('0xb')]('MailServerIn,\x20%s,\x20%s',_0x59023c,_0xd7aa('0xd'));_0x4bc884(_0x31d416[_0xd7aa('0x13')][_0xd7aa('0x12')]);}})[_0xd7aa('0x14')](function(_0x3b23b7){logger[_0xd7aa('0x10')](_0xd7aa('0xc'),_0x59023c,_0x3b23b7);_0x1e4dea(_0x3b23b7);});});}exports[_0xd7aa('0x15')]=function(_0xf43135){var _0x34a232=this;return new Promise(function(_0x4d842,_0x5300b5){return db[_0xd7aa('0x16')][_0xd7aa('0x17')]({'raw':_0xf43135[_0xd7aa('0x18')]?_0xf43135[_0xd7aa('0x18')][_0xd7aa('0x19')]===undefined?!![]:![]:!![],'where':_0xf43135[_0xd7aa('0x18')]?_0xf43135['options']['where']||null:null,'attributes':_0xf43135[_0xd7aa('0x18')]?_0xf43135['options'][_0xd7aa('0x1a')]||null:null,'limit':_0xf43135[_0xd7aa('0x18')]?_0xf43135[_0xd7aa('0x18')][_0xd7aa('0x1b')]||null:null,'include':_0xf43135[_0xd7aa('0x18')]?_0xf43135[_0xd7aa('0x18')]['include']?_[_0xd7aa('0x1c')](_0xf43135[_0xd7aa('0x18')][_0xd7aa('0x1d')],function(_0x1a1828){return{'model':db[_0x1a1828['model']],'as':_0x1a1828['as'],'attributes':_0x1a1828[_0xd7aa('0x1a')],'include':_0x1a1828[_0xd7aa('0x1d')]?_[_0xd7aa('0x1c')](_0x1a1828[_0xd7aa('0x1d')],function(_0x20ee4a){return{'model':db[_0x20ee4a[_0xd7aa('0x1e')]],'as':_0x20ee4a['as'],'attributes':_0x20ee4a[_0xd7aa('0x1a')],'include':_0x20ee4a[_0xd7aa('0x1d')]?_[_0xd7aa('0x1c')](_0x20ee4a[_0xd7aa('0x1d')],function(_0x52cfb7){return{'model':db[_0x52cfb7['model']],'as':_0x52cfb7['as'],'attributes':_0x52cfb7[_0xd7aa('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd7aa('0x1f')](function(_0x22e843){logger['info'](_0xd7aa('0x15'),_0xf43135);logger[_0xd7aa('0xe')](_0xd7aa('0x15'),_0xf43135,JSON[_0xd7aa('0x20')](_0x22e843));_0x4d842(_0x22e843);})[_0xd7aa('0x14')](function(_0x1a1fd2){logger[_0xd7aa('0x10')](_0xd7aa('0x15'),_0x1a1fd2[_0xd7aa('0x12')],_0xf43135);_0x5300b5(_0x34a232[_0xd7aa('0x10')](0x1f4,_0x1a1fd2[_0xd7aa('0x12')]));});});};
\ No newline at end of file
index 8dff545..b544925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+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(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x7a54,0x106));var _0x47a5=function(_0x2031e0,_0x8fe513){_0x2031e0=_0x2031e0-0x0;var _0x123b09=_0x7a54[_0x2031e0];return _0x123b09;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index 3c52474..6d60e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['STRING','INTEGER','BOOLEAN','exports'];(function(_0x203e7a,_0x1a0115){var _0xc0c14a=function(_0x261a53){while(--_0x261a53){_0x203e7a['push'](_0x203e7a['shift']());}};_0xc0c14a(++_0x1a0115);}(_0x878f,0x173));var _0xf878=function(_0x455e3c,_0xa34ef9){_0x455e3c=_0x455e3c-0x0;var _0x1bc6ed=_0x878f[_0x455e3c];return _0x1bc6ed;};'use strict';var Sequelize=require('sequelize');module[_0xf878('0x0')]={'description':{'type':Sequelize[_0xf878('0x1')]},'host':{'type':Sequelize[_0xf878('0x1')]},'user':{'type':Sequelize[_0xf878('0x1')]},'pass':{'type':Sequelize[_0xf878('0x1')]},'port':{'type':Sequelize[_0xf878('0x2')]},'secure':{'type':Sequelize[_0xf878('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0xf878('0x1')]},'authentication':{'type':Sequelize[_0xf878('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xf878('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbfcc=['sequelize','STRING','INTEGER'];(function(_0x6033b7,_0x2c4f43){var _0x22323d=function(_0x5603f3){while(--_0x5603f3){_0x6033b7['push'](_0x6033b7['shift']());}};_0x22323d(++_0x2c4f43);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x1bb58c,_0x2c8a4d){_0x1bb58c=_0x1bb58c-0x0;var _0x277586=_0xbfcc[_0x1bb58c];return _0x277586;};'use strict';var Sequelize=require(_0xcbfc('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xcbfc('0x1')]},'user':{'type':Sequelize[_0xcbfc('0x1')]},'pass':{'type':Sequelize[_0xcbfc('0x1')]},'port':{'type':Sequelize[_0xcbfc('0x2')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 23251d3..f8ac2f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc080=['name','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','filters','pick','filter','merge','where','VIRTUAL','options','MailServerOut','includeAll','include','findAll','rows','catch','params','rawAttributes','length','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error'];(function(_0xeebe6b,_0x13aee2){var _0x2e7f3e=function(_0x7a8f8a){while(--_0x7a8f8a){_0xeebe6b['push'](_0xeebe6b['shift']());}};_0x2e7f3e(++_0x13aee2);}(_0xc080,0x67));var _0x0c08=function(_0x37390c,_0x1c17c5){_0x37390c=_0x37390c-0x0;var _0x21b8e7=_0xc080[_0x37390c];return _0x21b8e7;};'use strict';var emlformat=require(_0x0c08('0x0'));var rimraf=require(_0x0c08('0x1'));var zipdir=require(_0x0c08('0x2'));var jsonpatch=require(_0x0c08('0x3'));var rp=require('request-promise');var moment=require(_0x0c08('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0c08('0x5'));var util=require(_0x0c08('0x6'));var path=require(_0x0c08('0x7'));var sox=require(_0x0c08('0x8'));var csv=require(_0x0c08('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x0c08('0xa'));var jsforce=require(_0x0c08('0xb'));var deskjs=require(_0x0c08('0xc'));var toCsv=require('to-csv');var querystring=require(_0x0c08('0xd'));var Papa=require(_0x0c08('0xe'));var Redis=require('ioredis');var authService=require(_0x0c08('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0c08('0x10'));var hardwareService=require(_0x0c08('0x11'));var logger=require(_0x0c08('0x12'))('api');var utils=require(_0x0c08('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x0c08('0x14'));var db=require(_0x0c08('0x15'))['db'];function respondWithStatusCode(_0x349580,_0x5f1da3){_0x5f1da3=_0x5f1da3||0xcc;return function(_0x2773c3){if(_0x2773c3){return _0x349580[_0x0c08('0x16')](_0x5f1da3);}return _0x349580[_0x0c08('0x17')](_0x5f1da3)['end']();};}function respondWithResult(_0x21b3ba,_0x4e65cc){_0x4e65cc=_0x4e65cc||0xc8;return function(_0x4dce4e){if(_0x4dce4e){return _0x21b3ba[_0x0c08('0x17')](_0x4e65cc)[_0x0c08('0x18')](_0x4dce4e);}};}function respondWithFilteredResult(_0x15a71a,_0x1d95e3){return function(_0x412dbc){if(_0x412dbc){var _0x5d2410=typeof _0x1d95e3['offset']===_0x0c08('0x19')&&typeof _0x1d95e3[_0x0c08('0x1a')]===_0x0c08('0x19');var _0x35afd6=_0x412dbc[_0x0c08('0x1b')];var _0x3e1323=_0x5d2410?0x0:_0x1d95e3['offset'];var _0x57705f=_0x5d2410?_0x412dbc['count']:_0x1d95e3[_0x0c08('0x1c')]+_0x1d95e3[_0x0c08('0x1a')];var _0x1e86b6;if(_0x57705f>=_0x35afd6){_0x57705f=_0x35afd6;_0x1e86b6=0xc8;}else{_0x1e86b6=0xce;}_0x15a71a['status'](_0x1e86b6);return _0x15a71a[_0x0c08('0x1d')](_0x0c08('0x1e'),_0x3e1323+'-'+_0x57705f+'/'+_0x35afd6)[_0x0c08('0x18')](_0x412dbc);}return null;};}function patchUpdates(_0x42a381){return function(_0x75dcc0){try{jsonpatch[_0x0c08('0x1f')](_0x75dcc0,_0x42a381,!![]);}catch(_0x4c05e2){return BPromise[_0x0c08('0x20')](_0x4c05e2);}return _0x75dcc0[_0x0c08('0x21')]();};}function saveUpdates(_0x7af696,_0x3a7072){return function(_0x313cab){if(_0x313cab){return _0x313cab[_0x0c08('0x22')](_0x7af696)[_0x0c08('0x23')](function(_0x4f95ad){return _0x4f95ad;});}return null;};}function removeEntity(_0x5b43ce,_0x1d0c1e){return function(_0x46f74d){if(_0x46f74d){return _0x46f74d[_0x0c08('0x24')]()[_0x0c08('0x23')](function(){_0x5b43ce[_0x0c08('0x17')](0xcc)[_0x0c08('0x25')]();});}};}function handleEntityNotFound(_0x56bb73,_0x5845fd){return function(_0x37fc4c){if(!_0x37fc4c){_0x56bb73[_0x0c08('0x16')](0x194);}return _0x37fc4c;};}function handleError(_0xc728e2,_0x41e1fa){_0x41e1fa=_0x41e1fa||0x1f4;return function(_0x1d8a3b){logger[_0x0c08('0x26')](_0x1d8a3b['stack']);if(_0x1d8a3b[_0x0c08('0x27')]){delete _0x1d8a3b[_0x0c08('0x27')];}_0xc728e2[_0x0c08('0x17')](_0x41e1fa)['send'](_0x1d8a3b);};}exports[_0x0c08('0x28')]=function(_0x4215d4,_0x5593ee){var _0x47b141={},_0x36eeb0={},_0x3db290={'count':0x0,'rows':[]};var _0x13b4c3=_[_0x0c08('0x29')](db['MailServerOut']['rawAttributes'],function(_0x575258){return{'name':_0x575258[_0x0c08('0x2a')],'type':_0x575258[_0x0c08('0x2b')][_0x0c08('0x2c')]};});_0x36eeb0[_0x0c08('0x2d')]=_[_0x0c08('0x29')](_0x13b4c3,_0x0c08('0x27'));_0x36eeb0[_0x0c08('0x2e')]=_[_0x0c08('0x2f')](_0x4215d4[_0x0c08('0x2e')]);_0x36eeb0['filters']=_[_0x0c08('0x30')](_0x36eeb0[_0x0c08('0x2d')],_0x36eeb0[_0x0c08('0x2e')]);_0x47b141[_0x0c08('0x31')]=_[_0x0c08('0x30')](_0x36eeb0['model'],qs[_0x0c08('0x32')](_0x4215d4[_0x0c08('0x2e')]['fields']));_0x47b141[_0x0c08('0x31')]=_0x47b141[_0x0c08('0x31')]['length']?_0x47b141[_0x0c08('0x31')]:_0x36eeb0[_0x0c08('0x2d')];if(!_0x4215d4[_0x0c08('0x2e')]['hasOwnProperty'](_0x0c08('0x33'))){_0x47b141[_0x0c08('0x1a')]=qs['limit'](_0x4215d4[_0x0c08('0x2e')]['limit']);_0x47b141[_0x0c08('0x1c')]=qs['offset'](_0x4215d4[_0x0c08('0x2e')][_0x0c08('0x1c')]);}_0x47b141['order']=qs['sort'](_0x4215d4['query']['sort']);_0x47b141['where']=qs[_0x0c08('0x34')](_[_0x0c08('0x35')](_0x4215d4[_0x0c08('0x2e')],_0x36eeb0[_0x0c08('0x34')]),_0x13b4c3);if(_0x4215d4[_0x0c08('0x2e')][_0x0c08('0x36')]){_0x47b141['where']=_[_0x0c08('0x37')](_0x47b141[_0x0c08('0x38')],{'$or':_[_0x0c08('0x29')](_0x13b4c3,function(_0xdd6657){if(_0xdd6657[_0x0c08('0x2b')]!==_0x0c08('0x39')){var _0x4cf72a={};_0x4cf72a[_0xdd6657[_0x0c08('0x27')]]={'$like':'%'+_0x4215d4[_0x0c08('0x2e')]['filter']+'%'};return _0x4cf72a;}})});}_0x47b141=_[_0x0c08('0x37')]({},_0x47b141,_0x4215d4[_0x0c08('0x3a')]);var _0x5f08a7={'where':_0x47b141[_0x0c08('0x38')]};return db[_0x0c08('0x3b')][_0x0c08('0x1b')](_0x5f08a7)[_0x0c08('0x23')](function(_0x5c2d1f){_0x3db290[_0x0c08('0x1b')]=_0x5c2d1f;if(_0x4215d4[_0x0c08('0x2e')][_0x0c08('0x3c')]){_0x47b141[_0x0c08('0x3d')]=[{'all':!![]}];}return db[_0x0c08('0x3b')][_0x0c08('0x3e')](_0x47b141);})[_0x0c08('0x23')](function(_0x2dfdcc){_0x3db290[_0x0c08('0x3f')]=_0x2dfdcc;return _0x3db290;})['then'](respondWithFilteredResult(_0x5593ee,_0x47b141))[_0x0c08('0x40')](handleError(_0x5593ee,null));};exports['show']=function(_0x6cc8d8,_0x4ff80d){var _0x30e6cb={'raw':!![],'where':{'id':_0x6cc8d8[_0x0c08('0x41')]['id']}},_0x1cf55c={};_0x1cf55c[_0x0c08('0x2d')]=_[_0x0c08('0x2f')](db[_0x0c08('0x3b')][_0x0c08('0x42')]);_0x1cf55c[_0x0c08('0x2e')]=_['keys'](_0x6cc8d8[_0x0c08('0x2e')]);_0x1cf55c[_0x0c08('0x34')]=_['intersection'](_0x1cf55c[_0x0c08('0x2d')],_0x1cf55c[_0x0c08('0x2e')]);_0x30e6cb[_0x0c08('0x31')]=_[_0x0c08('0x30')](_0x1cf55c[_0x0c08('0x2d')],qs[_0x0c08('0x32')](_0x6cc8d8[_0x0c08('0x2e')][_0x0c08('0x32')]));_0x30e6cb[_0x0c08('0x31')]=_0x30e6cb[_0x0c08('0x31')][_0x0c08('0x43')]?_0x30e6cb['attributes']:_0x1cf55c[_0x0c08('0x2d')];if(_0x6cc8d8['query'][_0x0c08('0x3c')]){_0x30e6cb[_0x0c08('0x3d')]=[{'all':!![]}];}_0x30e6cb=_[_0x0c08('0x37')]({},_0x30e6cb,_0x6cc8d8[_0x0c08('0x3a')]);return db['MailServerOut']['find'](_0x30e6cb)['then'](handleEntityNotFound(_0x4ff80d,null))[_0x0c08('0x23')](respondWithResult(_0x4ff80d,null))[_0x0c08('0x40')](handleError(_0x4ff80d,null));};exports[_0x0c08('0x44')]=function(_0x4d420,_0x14f411){return db['MailServerOut'][_0x0c08('0x44')](_0x4d420[_0x0c08('0x45')],{})[_0x0c08('0x23')](respondWithResult(_0x14f411,0xc9))[_0x0c08('0x40')](handleError(_0x14f411,null));};exports[_0x0c08('0x22')]=function(_0x47bb35,_0x8b0e61){if(_0x47bb35['body']['id']){delete _0x47bb35[_0x0c08('0x45')]['id'];}return db['MailServerOut'][_0x0c08('0x46')]({'where':{'id':_0x47bb35['params']['id']}})[_0x0c08('0x23')](handleEntityNotFound(_0x8b0e61,null))[_0x0c08('0x23')](saveUpdates(_0x47bb35[_0x0c08('0x45')],null))[_0x0c08('0x23')](respondWithResult(_0x8b0e61,null))[_0x0c08('0x40')](handleError(_0x8b0e61,null));};exports[_0x0c08('0x24')]=function(_0x312f4b,_0x7c16f8){return db[_0x0c08('0x3b')][_0x0c08('0x46')]({'where':{'id':_0x312f4b['params']['id']}})[_0x0c08('0x23')](handleEntityNotFound(_0x7c16f8,null))['then'](removeEntity(_0x7c16f8,null))[_0x0c08('0x40')](handleError(_0x7c16f8,null));};
\ No newline at end of file
+var _0x98b0=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','set','Content-Range','reject','save','stack','name','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','offset','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','keys','length','find','create','body','update','params','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0xfe4e2e,_0xabf69a){var _0x39534e=function(_0xff90f3){while(--_0xff90f3){_0xfe4e2e['push'](_0xfe4e2e['shift']());}};_0x39534e(++_0xabf69a);}(_0x98b0,0xd9));var _0x098b=function(_0x221b8c,_0x2c7afc){_0x221b8c=_0x221b8c-0x0;var _0x3fab9f=_0x98b0[_0x221b8c];return _0x3fab9f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x098b('0x0'));var rp=require(_0x098b('0x1'));var moment=require(_0x098b('0x2'));var BPromise=require(_0x098b('0x3'));var Mustache=require(_0x098b('0x4'));var util=require(_0x098b('0x5'));var path=require(_0x098b('0x6'));var sox=require(_0x098b('0x7'));var csv=require(_0x098b('0x8'));var ejs=require(_0x098b('0x9'));var fs=require('fs');var fs_extra=require(_0x098b('0xa'));var _=require(_0x098b('0xb'));var squel=require(_0x098b('0xc'));var crypto=require(_0x098b('0xd'));var jsforce=require(_0x098b('0xe'));var deskjs=require(_0x098b('0xf'));var toCsv=require(_0x098b('0x8'));var querystring=require(_0x098b('0x10'));var Papa=require(_0x098b('0x11'));var Redis=require(_0x098b('0x12'));var authService=require(_0x098b('0x13'));var qs=require(_0x098b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x098b('0x15'));var logger=require(_0x098b('0x16'))(_0x098b('0x17'));var utils=require('../../config/utils');var config=require(_0x098b('0x18'));var licenseUtil=require(_0x098b('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38e1ae,_0xd34846){_0xd34846=_0xd34846||0xcc;return function(_0x267e84){if(_0x267e84){return _0x38e1ae[_0x098b('0x1a')](_0xd34846);}return _0x38e1ae[_0x098b('0x1b')](_0xd34846)[_0x098b('0x1c')]();};}function respondWithResult(_0x38c37a,_0x11ad51){_0x11ad51=_0x11ad51||0xc8;return function(_0xbce7b7){if(_0xbce7b7){return _0x38c37a[_0x098b('0x1b')](_0x11ad51)[_0x098b('0x1d')](_0xbce7b7);}};}function respondWithFilteredResult(_0x3febd0,_0x1a44d0){return function(_0x519125){if(_0x519125){var _0x5e8566=typeof _0x1a44d0['offset']==='undefined'&&typeof _0x1a44d0[_0x098b('0x1e')]===_0x098b('0x1f');var _0x54b8a4=_0x519125[_0x098b('0x20')];var _0x1552ca=_0x5e8566?0x0:_0x1a44d0['offset'];var _0x1f6e49=_0x5e8566?_0x519125[_0x098b('0x20')]:_0x1a44d0['offset']+_0x1a44d0[_0x098b('0x1e')];var _0x1b76c0;if(_0x1f6e49>=_0x54b8a4){_0x1f6e49=_0x54b8a4;_0x1b76c0=0xc8;}else{_0x1b76c0=0xce;}_0x3febd0[_0x098b('0x1b')](_0x1b76c0);return _0x3febd0[_0x098b('0x21')](_0x098b('0x22'),_0x1552ca+'-'+_0x1f6e49+'/'+_0x54b8a4)[_0x098b('0x1d')](_0x519125);}return null;};}function patchUpdates(_0x558fb9){return function(_0x28592a){try{jsonpatch['apply'](_0x28592a,_0x558fb9,!![]);}catch(_0x422031){return BPromise[_0x098b('0x23')](_0x422031);}return _0x28592a[_0x098b('0x24')]();};}function saveUpdates(_0x4d2356,_0x5356b8){return function(_0x520cf2){if(_0x520cf2){return _0x520cf2['update'](_0x4d2356)['then'](function(_0xfef1b3){return _0xfef1b3;});}return null;};}function removeEntity(_0x52a2d3,_0x59dd8d){return function(_0x3b884c){if(_0x3b884c){return _0x3b884c['destroy']()['then'](function(){_0x52a2d3[_0x098b('0x1b')](0xcc)[_0x098b('0x1c')]();});}};}function handleEntityNotFound(_0x468135,_0x3ed98c){return function(_0xa6c7c0){if(!_0xa6c7c0){_0x468135[_0x098b('0x1a')](0x194);}return _0xa6c7c0;};}function handleError(_0x397ee1,_0x4a8337){_0x4a8337=_0x4a8337||0x1f4;return function(_0x145ad8){logger['error'](_0x145ad8[_0x098b('0x25')]);if(_0x145ad8[_0x098b('0x26')]){delete _0x145ad8['name'];}_0x397ee1[_0x098b('0x1b')](_0x4a8337)['send'](_0x145ad8);};}exports[_0x098b('0x27')]=function(_0x191176,_0x5b77b4){var _0x748d20={},_0x3cc683={},_0x551aa2={'count':0x0,'rows':[]};var _0x41d991=_[_0x098b('0x28')](db[_0x098b('0x29')][_0x098b('0x2a')],function(_0x64b5bb){return{'name':_0x64b5bb[_0x098b('0x2b')],'type':_0x64b5bb[_0x098b('0x2c')][_0x098b('0x2d')]};});_0x3cc683[_0x098b('0x2e')]=_[_0x098b('0x28')](_0x41d991,_0x098b('0x26'));_0x3cc683[_0x098b('0x2f')]=_['keys'](_0x191176['query']);_0x3cc683[_0x098b('0x30')]=_[_0x098b('0x31')](_0x3cc683[_0x098b('0x2e')],_0x3cc683[_0x098b('0x2f')]);_0x748d20['attributes']=_['intersection'](_0x3cc683['model'],qs[_0x098b('0x32')](_0x191176[_0x098b('0x2f')][_0x098b('0x32')]));_0x748d20[_0x098b('0x33')]=_0x748d20[_0x098b('0x33')]['length']?_0x748d20[_0x098b('0x33')]:_0x3cc683[_0x098b('0x2e')];if(!_0x191176[_0x098b('0x2f')][_0x098b('0x34')](_0x098b('0x35'))){_0x748d20['limit']=qs[_0x098b('0x1e')](_0x191176[_0x098b('0x2f')][_0x098b('0x1e')]);_0x748d20[_0x098b('0x36')]=qs[_0x098b('0x36')](_0x191176['query']['offset']);}_0x748d20['order']=qs['sort'](_0x191176[_0x098b('0x2f')]['sort']);_0x748d20[_0x098b('0x37')]=qs['filters'](_[_0x098b('0x38')](_0x191176[_0x098b('0x2f')],_0x3cc683[_0x098b('0x30')]),_0x41d991);if(_0x191176[_0x098b('0x2f')][_0x098b('0x39')]){_0x748d20[_0x098b('0x37')]=_[_0x098b('0x3a')](_0x748d20['where'],{'$or':_[_0x098b('0x28')](_0x41d991,function(_0x5e6818){if(_0x5e6818[_0x098b('0x2c')]!==_0x098b('0x3b')){var _0x3b16fc={};_0x3b16fc[_0x5e6818[_0x098b('0x26')]]={'$like':'%'+_0x191176[_0x098b('0x2f')][_0x098b('0x39')]+'%'};return _0x3b16fc;}})});}_0x748d20=_[_0x098b('0x3a')]({},_0x748d20,_0x191176[_0x098b('0x3c')]);var _0x2fb4a2={'where':_0x748d20[_0x098b('0x37')]};return db[_0x098b('0x29')]['count'](_0x2fb4a2)[_0x098b('0x3d')](function(_0x43fbd1){_0x551aa2[_0x098b('0x20')]=_0x43fbd1;if(_0x191176[_0x098b('0x2f')][_0x098b('0x3e')]){_0x748d20[_0x098b('0x3f')]=[{'all':!![]}];}return db[_0x098b('0x29')][_0x098b('0x40')](_0x748d20);})['then'](function(_0x436290){_0x551aa2[_0x098b('0x41')]=_0x436290;return _0x551aa2;})[_0x098b('0x3d')](respondWithFilteredResult(_0x5b77b4,_0x748d20))[_0x098b('0x42')](handleError(_0x5b77b4,null));};exports['show']=function(_0x526d6c,_0x13804a){var _0x4d2f34={'raw':!![],'where':{'id':_0x526d6c['params']['id']}},_0x17bd1c={};_0x17bd1c[_0x098b('0x2e')]=_[_0x098b('0x43')](db[_0x098b('0x29')][_0x098b('0x2a')]);_0x17bd1c[_0x098b('0x2f')]=_[_0x098b('0x43')](_0x526d6c[_0x098b('0x2f')]);_0x17bd1c[_0x098b('0x30')]=_[_0x098b('0x31')](_0x17bd1c[_0x098b('0x2e')],_0x17bd1c[_0x098b('0x2f')]);_0x4d2f34['attributes']=_[_0x098b('0x31')](_0x17bd1c[_0x098b('0x2e')],qs[_0x098b('0x32')](_0x526d6c[_0x098b('0x2f')][_0x098b('0x32')]));_0x4d2f34[_0x098b('0x33')]=_0x4d2f34[_0x098b('0x33')][_0x098b('0x44')]?_0x4d2f34[_0x098b('0x33')]:_0x17bd1c[_0x098b('0x2e')];if(_0x526d6c['query'][_0x098b('0x3e')]){_0x4d2f34['include']=[{'all':!![]}];}_0x4d2f34=_['merge']({},_0x4d2f34,_0x526d6c[_0x098b('0x3c')]);return db[_0x098b('0x29')][_0x098b('0x45')](_0x4d2f34)[_0x098b('0x3d')](handleEntityNotFound(_0x13804a,null))['then'](respondWithResult(_0x13804a,null))[_0x098b('0x42')](handleError(_0x13804a,null));};exports[_0x098b('0x46')]=function(_0x42f1d2,_0x160532){return db[_0x098b('0x29')][_0x098b('0x46')](_0x42f1d2[_0x098b('0x47')],{})[_0x098b('0x3d')](respondWithResult(_0x160532,0xc9))[_0x098b('0x42')](handleError(_0x160532,null));};exports[_0x098b('0x48')]=function(_0x5b720d,_0x5a77fc){if(_0x5b720d[_0x098b('0x47')]['id']){delete _0x5b720d['body']['id'];}return db[_0x098b('0x29')][_0x098b('0x45')]({'where':{'id':_0x5b720d[_0x098b('0x49')]['id']}})[_0x098b('0x3d')](handleEntityNotFound(_0x5a77fc,null))[_0x098b('0x3d')](saveUpdates(_0x5b720d[_0x098b('0x47')],null))[_0x098b('0x3d')](respondWithResult(_0x5a77fc,null))[_0x098b('0x42')](handleError(_0x5a77fc,null));};exports['destroy']=function(_0x464a8b,_0x34e7ec){return db[_0x098b('0x29')]['find']({'where':{'id':_0x464a8b['params']['id']}})[_0x098b('0x3d')](handleEntityNotFound(_0x34e7ec,null))[_0x098b('0x3d')](removeEntity(_0x34e7ec,null))[_0x098b('0x42')](handleError(_0x34e7ec,null));};
\ No newline at end of file
index e489dd5..d684473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x317f=['MailServerOut','mail_servers_out','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./mailServerOut.attributes','exports','define'];(function(_0x3ff79c,_0x25a565){var _0xfd9de1=function(_0x2d1e5b){while(--_0x2d1e5b){_0x3ff79c['push'](_0x3ff79c['shift']());}};_0xfd9de1(++_0x25a565);}(_0x317f,0x152));var _0xf317=function(_0x3f0a71,_0x55785a){_0x3f0a71=_0x3f0a71-0x0;var _0x2a25d0=_0x317f[_0x3f0a71];return _0x2a25d0;};'use strict';var _=require(_0xf317('0x0'));var util=require(_0xf317('0x1'));var logger=require('../../config/logger')(_0xf317('0x2'));var moment=require(_0xf317('0x3'));var BPromise=require(_0xf317('0x4'));var rp=require(_0xf317('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf317('0x6'));var attributes=require(_0xf317('0x7'));module[_0xf317('0x8')]=function(_0x38e6c0,_0x4efd77){return _0x38e6c0[_0xf317('0x9')](_0xf317('0xa'),attributes,{'tableName':_0xf317('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x065c=['./mailServerOut.attributes','exports','define','mail_servers_out','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x5b7ce0,_0x144145){var _0x39d49e=function(_0x52fe11){while(--_0x52fe11){_0x5b7ce0['push'](_0x5b7ce0['shift']());}};_0x39d49e(++_0x144145);}(_0x065c,0x138));var _0xc065=function(_0x1ebb10,_0x156b3e){_0x1ebb10=_0x1ebb10-0x0;var _0x20d709=_0x065c[_0x1ebb10];return _0x20d709;};'use strict';var _=require(_0xc065('0x0'));var util=require('util');var logger=require(_0xc065('0x1'))('api');var moment=require(_0xc065('0x2'));var BPromise=require(_0xc065('0x3'));var rp=require(_0xc065('0x4'));var fs=require('fs');var path=require(_0xc065('0x5'));var rimraf=require('rimraf');var config=require(_0xc065('0x6'));var attributes=require(_0xc065('0x7'));module[_0xc065('0x8')]=function(_0xcf0f38,_0x23a69f){return _0xcf0f38[_0xc065('0x9')]('MailServerOut',attributes,{'tableName':_0xc065('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 247b051..88f1d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x376076,_0x302497){var _0x292e86=function(_0x4a739c){while(--_0x4a739c){_0x376076['push'](_0x376076['shift']());}};_0x292e86(++_0x302497);}(_0x1261,0x144));var _0x1126=function(_0x5837a4,_0x15c0f7){_0x5837a4=_0x5837a4-0x0;var _0x1feb62=_0x1261[_0x5837a4];return _0x1feb62;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _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(_0x253e2a,_0x1f67bf){_0x253e2a=_0x253e2a-0x0;var _0x3541d3=_0x7a54[_0x253e2a];return _0x3541d3;};'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 671e569..5b8107b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8152=['show','post','create','put','update','delete','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x5bcdf7,_0x588bff){var _0x9f89d5=function(_0x5dea77){while(--_0x5dea77){_0x5bcdf7['push'](_0x5bcdf7['shift']());}};_0x9f89d5(++_0x588bff);}(_0x8152,0x126));var _0x2815=function(_0x59cc72,_0xd368b0){_0x59cc72=_0x59cc72-0x0;var _0x15d099=_0x8152[_0x59cc72];return _0x15d099;};'use strict';var multer=require(_0x2815('0x0'));var util=require(_0x2815('0x1'));var path=require(_0x2815('0x2'));var timeout=require(_0x2815('0x3'));var express=require(_0x2815('0x4'));var router=express[_0x2815('0x5')]();var fs_extra=require(_0x2815('0x6'));var auth=require(_0x2815('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x2815('0x8'));var controller=require('./mailSubstatus.controller');router[_0x2815('0x9')]('/',auth[_0x2815('0xa')](),controller[_0x2815('0xb')]);router[_0x2815('0x9')](_0x2815('0xc'),auth['isAuthenticated'](),controller[_0x2815('0xd')]);router['get']('/:id',auth[_0x2815('0xa')](),controller[_0x2815('0xe')]);router[_0x2815('0xf')]('/',auth[_0x2815('0xa')](),controller[_0x2815('0x10')]);router[_0x2815('0x11')]('/:id',auth[_0x2815('0xa')](),controller[_0x2815('0x12')]);router[_0x2815('0x13')](_0x2815('0x14'),auth[_0x2815('0xa')](),controller['destroy']);module[_0x2815('0x15')]=router;
\ No newline at end of file
+var _0x2071=['exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0x2071,0x1a5));var _0x1207=function(_0x3f993e,_0x2d5757){_0x3f993e=_0x3f993e-0x0;var _0x39c135=_0x2071[_0x3f993e];return _0x39c135;};'use strict';var multer=require(_0x1207('0x0'));var util=require(_0x1207('0x1'));var path=require(_0x1207('0x2'));var timeout=require('connect-timeout');var express=require(_0x1207('0x3'));var router=express['Router']();var fs_extra=require(_0x1207('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1207('0x5'));var config=require(_0x1207('0x6'));var controller=require(_0x1207('0x7'));router[_0x1207('0x8')]('/',auth[_0x1207('0x9')](),controller[_0x1207('0xa')]);router['get'](_0x1207('0xb'),auth['isAuthenticated'](),controller[_0x1207('0xc')]);router[_0x1207('0x8')](_0x1207('0xd'),auth[_0x1207('0x9')](),controller[_0x1207('0xe')]);router[_0x1207('0xf')]('/',auth[_0x1207('0x9')](),controller[_0x1207('0x10')]);router['put'](_0x1207('0xd'),auth[_0x1207('0x9')](),controller[_0x1207('0x11')]);router[_0x1207('0x12')](_0x1207('0xd'),auth[_0x1207('0x9')](),controller['destroy']);module[_0x1207('0x13')]=router;
\ No newline at end of file
index 7045609..cdec7a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eed=['exports','STRING','name','sequelize'];(function(_0xf6e75d,_0xc70967){var _0x27514d=function(_0xc2c6dd){while(--_0xc2c6dd){_0xf6e75d['push'](_0xf6e75d['shift']());}};_0x27514d(++_0xc70967);}(_0x6eed,0xff));var _0xd6ee=function(_0x4e09ee,_0x298beb){_0x4e09ee=_0x4e09ee-0x0;var _0x181f56=_0x6eed[_0x4e09ee];return _0x181f56;};'use strict';var Sequelize=require(_0xd6ee('0x0'));module[_0xd6ee('0x1')]={'name':{'type':Sequelize[_0xd6ee('0x2')],'unique':_0xd6ee('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd6ee('0x2')]}};
\ No newline at end of file
+var _0x199c=['STRING','name'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x199c,0x1d8));var _0xc199=function(_0x3a664e,_0x31b92a){_0x3a664e=_0x3a664e-0x0;var _0x57940f=_0x199c[_0x3a664e];return _0x57940f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc199('0x0')],'unique':_0xc199('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xc199('0x0')]}};
\ No newline at end of file
index 9008d64..41bafcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a60=['end','json','offset','limit','undefined','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','MailSubstatus','rawAttributes','fieldName','type','key','map','query','filters','model','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','update','describe','eml-format','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0x6a60,0x168));var _0x06a6=function(_0x581ff0,_0x2772c5){_0x581ff0=_0x581ff0-0x0;var _0x146b15=_0x6a60[_0x581ff0];return _0x146b15;};'use strict';var emlformat=require(_0x06a6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x06a6('0x1'));var moment=require(_0x06a6('0x2'));var BPromise=require(_0x06a6('0x3'));var Mustache=require(_0x06a6('0x4'));var util=require(_0x06a6('0x5'));var path=require(_0x06a6('0x6'));var sox=require('sox');var csv=require(_0x06a6('0x7'));var ejs=require(_0x06a6('0x8'));var fs=require('fs');var fs_extra=require(_0x06a6('0x9'));var _=require(_0x06a6('0xa'));var squel=require(_0x06a6('0xb'));var crypto=require(_0x06a6('0xc'));var jsforce=require(_0x06a6('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x06a6('0x7'));var querystring=require('querystring');var Papa=require(_0x06a6('0xe'));var Redis=require('ioredis');var authService=require(_0x06a6('0xf'));var qs=require(_0x06a6('0x10'));var as=require(_0x06a6('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x06a6('0x12'))(_0x06a6('0x13'));var utils=require(_0x06a6('0x14'));var config=require(_0x06a6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x06a6('0x16'))['db'];function respondWithStatusCode(_0x2b38c6,_0x4c775e){_0x4c775e=_0x4c775e||0xcc;return function(_0x10c623){if(_0x10c623){return _0x2b38c6[_0x06a6('0x17')](_0x4c775e);}return _0x2b38c6[_0x06a6('0x18')](_0x4c775e)[_0x06a6('0x19')]();};}function respondWithResult(_0x3b408b,_0x3abaa4){_0x3abaa4=_0x3abaa4||0xc8;return function(_0x12faf9){if(_0x12faf9){return _0x3b408b[_0x06a6('0x18')](_0x3abaa4)[_0x06a6('0x1a')](_0x12faf9);}};}function respondWithFilteredResult(_0x4b2a3d,_0x4d020b){return function(_0x543244){if(_0x543244){var _0x5ca1fa=typeof _0x4d020b[_0x06a6('0x1b')]==='undefined'&&typeof _0x4d020b[_0x06a6('0x1c')]===_0x06a6('0x1d');var _0x6878ff=_0x543244[_0x06a6('0x1e')];var _0x381e1f=_0x5ca1fa?0x0:_0x4d020b[_0x06a6('0x1b')];var _0x4f8545=_0x5ca1fa?_0x543244[_0x06a6('0x1e')]:_0x4d020b[_0x06a6('0x1b')]+_0x4d020b['limit'];var _0x2ac3b0;if(_0x4f8545>=_0x6878ff){_0x4f8545=_0x6878ff;_0x2ac3b0=0xc8;}else{_0x2ac3b0=0xce;}_0x4b2a3d['status'](_0x2ac3b0);return _0x4b2a3d[_0x06a6('0x1f')]('Content-Range',_0x381e1f+'-'+_0x4f8545+'/'+_0x6878ff)['json'](_0x543244);}return null;};}function patchUpdates(_0x5ca724){return function(_0x3d60ef){try{jsonpatch[_0x06a6('0x20')](_0x3d60ef,_0x5ca724,!![]);}catch(_0x27c472){return BPromise[_0x06a6('0x21')](_0x27c472);}return _0x3d60ef[_0x06a6('0x22')]();};}function saveUpdates(_0x141b5e,_0x352843){return function(_0x3eefd8){if(_0x3eefd8){return _0x3eefd8['update'](_0x141b5e)[_0x06a6('0x23')](function(_0x5dd4cb){return _0x5dd4cb;});}return null;};}function removeEntity(_0x508bf6,_0x2ea01b){return function(_0x4506fa){if(_0x4506fa){return _0x4506fa[_0x06a6('0x24')]()['then'](function(){_0x508bf6['status'](0xcc)[_0x06a6('0x19')]();});}};}function handleEntityNotFound(_0x253688,_0x59c592){return function(_0x460058){if(!_0x460058){_0x253688[_0x06a6('0x17')](0x194);}return _0x460058;};}function handleError(_0xc5289b,_0x590790){_0x590790=_0x590790||0x1f4;return function(_0x163674){logger[_0x06a6('0x25')](_0x163674[_0x06a6('0x26')]);if(_0x163674[_0x06a6('0x27')]){delete _0x163674['name'];}_0xc5289b[_0x06a6('0x18')](_0x590790)[_0x06a6('0x28')](_0x163674);};}exports[_0x06a6('0x29')]=function(_0x1eca3e,_0x2f048c){var _0x520cec={},_0x5eae09={},_0x42f686={'count':0x0,'rows':[]};var _0x305525=_['map'](db[_0x06a6('0x2a')][_0x06a6('0x2b')],function(_0x2e9af1){return{'name':_0x2e9af1[_0x06a6('0x2c')],'type':_0x2e9af1[_0x06a6('0x2d')][_0x06a6('0x2e')]};});_0x5eae09['model']=_[_0x06a6('0x2f')](_0x305525,_0x06a6('0x27'));_0x5eae09[_0x06a6('0x30')]=_['keys'](_0x1eca3e[_0x06a6('0x30')]);_0x5eae09[_0x06a6('0x31')]=_['intersection'](_0x5eae09[_0x06a6('0x32')],_0x5eae09[_0x06a6('0x30')]);_0x520cec['attributes']=_[_0x06a6('0x33')](_0x5eae09[_0x06a6('0x32')],qs[_0x06a6('0x34')](_0x1eca3e[_0x06a6('0x30')]['fields']));_0x520cec[_0x06a6('0x35')]=_0x520cec[_0x06a6('0x35')][_0x06a6('0x36')]?_0x520cec[_0x06a6('0x35')]:_0x5eae09[_0x06a6('0x32')];if(!_0x1eca3e[_0x06a6('0x30')]['hasOwnProperty'](_0x06a6('0x37'))){_0x520cec[_0x06a6('0x1c')]=qs['limit'](_0x1eca3e[_0x06a6('0x30')][_0x06a6('0x1c')]);_0x520cec[_0x06a6('0x1b')]=qs[_0x06a6('0x1b')](_0x1eca3e[_0x06a6('0x30')]['offset']);}_0x520cec[_0x06a6('0x38')]=qs[_0x06a6('0x39')](_0x1eca3e[_0x06a6('0x30')]['sort']);_0x520cec['where']=qs['filters'](_[_0x06a6('0x3a')](_0x1eca3e[_0x06a6('0x30')],_0x5eae09['filters']),_0x305525);if(_0x1eca3e['query'][_0x06a6('0x3b')]){_0x520cec[_0x06a6('0x3c')]=_[_0x06a6('0x3d')](_0x520cec[_0x06a6('0x3c')],{'$or':_[_0x06a6('0x2f')](_0x305525,function(_0x5b1c40){if(_0x5b1c40['type']!==_0x06a6('0x3e')){var _0x193254={};_0x193254[_0x5b1c40[_0x06a6('0x27')]]={'$like':'%'+_0x1eca3e[_0x06a6('0x30')][_0x06a6('0x3b')]+'%'};return _0x193254;}})});}_0x520cec=_[_0x06a6('0x3d')]({},_0x520cec,_0x1eca3e['options']);var _0x202e3f={'where':_0x520cec['where']};return db[_0x06a6('0x2a')][_0x06a6('0x1e')](_0x202e3f)['then'](function(_0x2ffda6){_0x42f686['count']=_0x2ffda6;if(_0x1eca3e[_0x06a6('0x30')][_0x06a6('0x3f')]){_0x520cec[_0x06a6('0x40')]=[{'all':!![]}];}return db[_0x06a6('0x2a')][_0x06a6('0x41')](_0x520cec);})[_0x06a6('0x23')](function(_0x41bdb3){_0x42f686[_0x06a6('0x42')]=_0x41bdb3;return _0x42f686;})[_0x06a6('0x23')](respondWithFilteredResult(_0x2f048c,_0x520cec))[_0x06a6('0x43')](handleError(_0x2f048c,null));};exports[_0x06a6('0x44')]=function(_0x6f7c63,_0x48fcfd){var _0x4d09e0={'raw':!![],'where':{'id':_0x6f7c63[_0x06a6('0x45')]['id']}},_0x151150={};_0x151150['model']=_[_0x06a6('0x46')](db[_0x06a6('0x2a')]['rawAttributes']);_0x151150[_0x06a6('0x30')]=_[_0x06a6('0x46')](_0x6f7c63[_0x06a6('0x30')]);_0x151150['filters']=_[_0x06a6('0x33')](_0x151150[_0x06a6('0x32')],_0x151150[_0x06a6('0x30')]);_0x4d09e0['attributes']=_[_0x06a6('0x33')](_0x151150[_0x06a6('0x32')],qs[_0x06a6('0x34')](_0x6f7c63[_0x06a6('0x30')][_0x06a6('0x34')]));_0x4d09e0[_0x06a6('0x35')]=_0x4d09e0[_0x06a6('0x35')][_0x06a6('0x36')]?_0x4d09e0[_0x06a6('0x35')]:_0x151150[_0x06a6('0x32')];if(_0x6f7c63[_0x06a6('0x30')][_0x06a6('0x3f')]){_0x4d09e0[_0x06a6('0x40')]=[{'all':!![]}];}_0x4d09e0=_[_0x06a6('0x3d')]({},_0x4d09e0,_0x6f7c63[_0x06a6('0x47')]);return db[_0x06a6('0x2a')][_0x06a6('0x48')](_0x4d09e0)[_0x06a6('0x23')](handleEntityNotFound(_0x48fcfd,null))[_0x06a6('0x23')](respondWithResult(_0x48fcfd,null))[_0x06a6('0x43')](handleError(_0x48fcfd,null));};exports[_0x06a6('0x49')]=function(_0x236da6,_0x451cba){return db[_0x06a6('0x2a')][_0x06a6('0x49')](_0x236da6[_0x06a6('0x4a')],{})[_0x06a6('0x23')](respondWithResult(_0x451cba,0xc9))[_0x06a6('0x43')](handleError(_0x451cba,null));};exports[_0x06a6('0x4b')]=function(_0x5508d7,_0x4d12c0){if(_0x5508d7[_0x06a6('0x4a')]['id']){delete _0x5508d7[_0x06a6('0x4a')]['id'];}return db[_0x06a6('0x2a')][_0x06a6('0x48')]({'where':{'id':_0x5508d7[_0x06a6('0x45')]['id']}})[_0x06a6('0x23')](handleEntityNotFound(_0x4d12c0,null))[_0x06a6('0x23')](saveUpdates(_0x5508d7[_0x06a6('0x4a')],null))[_0x06a6('0x23')](respondWithResult(_0x4d12c0,null))['catch'](handleError(_0x4d12c0,null));};exports['destroy']=function(_0x5edf1f,_0x4a02e6){return db[_0x06a6('0x2a')][_0x06a6('0x48')]({'where':{'id':_0x5edf1f[_0x06a6('0x45')]['id']}})[_0x06a6('0x23')](handleEntityNotFound(_0x4a02e6,null))[_0x06a6('0x23')](removeEntity(_0x4a02e6,null))[_0x06a6('0x43')](handleError(_0x4a02e6,null));};exports[_0x06a6('0x4c')]=function(_0x30b770,_0x4026c2){return db[_0x06a6('0x2a')][_0x06a6('0x4c')]()[_0x06a6('0x23')](respondWithResult(_0x4026c2,null))['catch'](handleError(_0x4026c2,null));};
\ No newline at end of file
+var _0xd146=['util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','name','send','index','map','MailSubstatus','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','catch','show','keys','rawAttributes','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache'];(function(_0x189d3b,_0x4034d4){var _0x9f95d4=function(_0x53011a){while(--_0x53011a){_0x189d3b['push'](_0x189d3b['shift']());}};_0x9f95d4(++_0x4034d4);}(_0xd146,0x1eb));var _0x6d14=function(_0xbcd359,_0x4c9108){_0xbcd359=_0xbcd359-0x0;var _0x1323ae=_0xd146[_0xbcd359];return _0x1323ae;};'use strict';var emlformat=require(_0x6d14('0x0'));var rimraf=require(_0x6d14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6d14('0x2'));var rp=require(_0x6d14('0x3'));var moment=require(_0x6d14('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6d14('0x5'));var util=require(_0x6d14('0x6'));var path=require(_0x6d14('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6d14('0x8'));var fs=require('fs');var fs_extra=require(_0x6d14('0x9'));var _=require(_0x6d14('0xa'));var squel=require(_0x6d14('0xb'));var crypto=require(_0x6d14('0xc'));var jsforce=require(_0x6d14('0xd'));var deskjs=require(_0x6d14('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6d14('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6d14('0x10'));var as=require(_0x6d14('0x11'));var hardwareService=require(_0x6d14('0x12'));var logger=require(_0x6d14('0x13'))(_0x6d14('0x14'));var utils=require('../../config/utils');var config=require(_0x6d14('0x15'));var licenseUtil=require(_0x6d14('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b5848,_0x41a8df){_0x41a8df=_0x41a8df||0xcc;return function(_0x3879b7){if(_0x3879b7){return _0x3b5848[_0x6d14('0x17')](_0x41a8df);}return _0x3b5848[_0x6d14('0x18')](_0x41a8df)['end']();};}function respondWithResult(_0x29124c,_0x49ee8d){_0x49ee8d=_0x49ee8d||0xc8;return function(_0x1be43d){if(_0x1be43d){return _0x29124c[_0x6d14('0x18')](_0x49ee8d)[_0x6d14('0x19')](_0x1be43d);}};}function respondWithFilteredResult(_0xc4ef15,_0x437916){return function(_0x175226){if(_0x175226){var _0xbce228=typeof _0x437916[_0x6d14('0x1a')]===_0x6d14('0x1b')&&typeof _0x437916[_0x6d14('0x1c')]===_0x6d14('0x1b');var _0x50e5fa=_0x175226[_0x6d14('0x1d')];var _0x24b36a=_0xbce228?0x0:_0x437916[_0x6d14('0x1a')];var _0x4c8f10=_0xbce228?_0x175226['count']:_0x437916[_0x6d14('0x1a')]+_0x437916[_0x6d14('0x1c')];var _0x32b633;if(_0x4c8f10>=_0x50e5fa){_0x4c8f10=_0x50e5fa;_0x32b633=0xc8;}else{_0x32b633=0xce;}_0xc4ef15[_0x6d14('0x18')](_0x32b633);return _0xc4ef15[_0x6d14('0x1e')](_0x6d14('0x1f'),_0x24b36a+'-'+_0x4c8f10+'/'+_0x50e5fa)[_0x6d14('0x19')](_0x175226);}return null;};}function patchUpdates(_0xdcf65a){return function(_0x557019){try{jsonpatch[_0x6d14('0x20')](_0x557019,_0xdcf65a,!![]);}catch(_0x3938de){return BPromise[_0x6d14('0x21')](_0x3938de);}return _0x557019[_0x6d14('0x22')]();};}function saveUpdates(_0x24c90,_0x53fb0c){return function(_0x130cd1){if(_0x130cd1){return _0x130cd1[_0x6d14('0x23')](_0x24c90)[_0x6d14('0x24')](function(_0x8ef8f1){return _0x8ef8f1;});}return null;};}function removeEntity(_0x3c7020,_0x143a00){return function(_0x24f347){if(_0x24f347){return _0x24f347[_0x6d14('0x25')]()['then'](function(){_0x3c7020[_0x6d14('0x18')](0xcc)[_0x6d14('0x26')]();});}};}function handleEntityNotFound(_0x20e305,_0x272c43){return function(_0x29a0ed){if(!_0x29a0ed){_0x20e305[_0x6d14('0x17')](0x194);}return _0x29a0ed;};}function handleError(_0x505821,_0x54db9d){_0x54db9d=_0x54db9d||0x1f4;return function(_0x424a17){logger['error'](_0x424a17['stack']);if(_0x424a17['name']){delete _0x424a17[_0x6d14('0x27')];}_0x505821[_0x6d14('0x18')](_0x54db9d)[_0x6d14('0x28')](_0x424a17);};}exports[_0x6d14('0x29')]=function(_0xe65e29,_0x5a46ca){var _0x1adf91={},_0x30a8f9={},_0x62749d={'count':0x0,'rows':[]};var _0x630dc=_[_0x6d14('0x2a')](db[_0x6d14('0x2b')]['rawAttributes'],function(_0x46880d){return{'name':_0x46880d['fieldName'],'type':_0x46880d[_0x6d14('0x2c')]['key']};});_0x30a8f9['model']=_[_0x6d14('0x2a')](_0x630dc,_0x6d14('0x27'));_0x30a8f9[_0x6d14('0x2d')]=_['keys'](_0xe65e29[_0x6d14('0x2d')]);_0x30a8f9[_0x6d14('0x2e')]=_[_0x6d14('0x2f')](_0x30a8f9[_0x6d14('0x30')],_0x30a8f9['query']);_0x1adf91[_0x6d14('0x31')]=_['intersection'](_0x30a8f9[_0x6d14('0x30')],qs[_0x6d14('0x32')](_0xe65e29[_0x6d14('0x2d')][_0x6d14('0x32')]));_0x1adf91[_0x6d14('0x31')]=_0x1adf91[_0x6d14('0x31')][_0x6d14('0x33')]?_0x1adf91[_0x6d14('0x31')]:_0x30a8f9[_0x6d14('0x30')];if(!_0xe65e29[_0x6d14('0x2d')][_0x6d14('0x34')]('nolimit')){_0x1adf91[_0x6d14('0x1c')]=qs[_0x6d14('0x1c')](_0xe65e29['query'][_0x6d14('0x1c')]);_0x1adf91[_0x6d14('0x1a')]=qs['offset'](_0xe65e29[_0x6d14('0x2d')][_0x6d14('0x1a')]);}_0x1adf91[_0x6d14('0x35')]=qs[_0x6d14('0x36')](_0xe65e29[_0x6d14('0x2d')]['sort']);_0x1adf91[_0x6d14('0x37')]=qs['filters'](_[_0x6d14('0x38')](_0xe65e29[_0x6d14('0x2d')],_0x30a8f9[_0x6d14('0x2e')]),_0x630dc);if(_0xe65e29[_0x6d14('0x2d')][_0x6d14('0x39')]){_0x1adf91[_0x6d14('0x37')]=_[_0x6d14('0x3a')](_0x1adf91['where'],{'$or':_[_0x6d14('0x2a')](_0x630dc,function(_0x535e6f){if(_0x535e6f[_0x6d14('0x2c')]!=='VIRTUAL'){var _0x1ca079={};_0x1ca079[_0x535e6f['name']]={'$like':'%'+_0xe65e29['query'][_0x6d14('0x39')]+'%'};return _0x1ca079;}})});}_0x1adf91=_['merge']({},_0x1adf91,_0xe65e29[_0x6d14('0x3b')]);var _0x4b2b48={'where':_0x1adf91[_0x6d14('0x37')]};return db['MailSubstatus'][_0x6d14('0x1d')](_0x4b2b48)[_0x6d14('0x24')](function(_0x45cee9){_0x62749d[_0x6d14('0x1d')]=_0x45cee9;if(_0xe65e29[_0x6d14('0x2d')][_0x6d14('0x3c')]){_0x1adf91['include']=[{'all':!![]}];}return db[_0x6d14('0x2b')]['findAll'](_0x1adf91);})[_0x6d14('0x24')](function(_0x78b1f7){_0x62749d[_0x6d14('0x3d')]=_0x78b1f7;return _0x62749d;})[_0x6d14('0x24')](respondWithFilteredResult(_0x5a46ca,_0x1adf91))[_0x6d14('0x3e')](handleError(_0x5a46ca,null));};exports[_0x6d14('0x3f')]=function(_0x4f75d3,_0x569a57){var _0x39a552={'raw':!![],'where':{'id':_0x4f75d3['params']['id']}},_0x2d7e09={};_0x2d7e09[_0x6d14('0x30')]=_[_0x6d14('0x40')](db['MailSubstatus'][_0x6d14('0x41')]);_0x2d7e09['query']=_[_0x6d14('0x40')](_0x4f75d3[_0x6d14('0x2d')]);_0x2d7e09[_0x6d14('0x2e')]=_['intersection'](_0x2d7e09[_0x6d14('0x30')],_0x2d7e09[_0x6d14('0x2d')]);_0x39a552[_0x6d14('0x31')]=_['intersection'](_0x2d7e09[_0x6d14('0x30')],qs[_0x6d14('0x32')](_0x4f75d3[_0x6d14('0x2d')]['fields']));_0x39a552['attributes']=_0x39a552[_0x6d14('0x31')][_0x6d14('0x33')]?_0x39a552['attributes']:_0x2d7e09[_0x6d14('0x30')];if(_0x4f75d3[_0x6d14('0x2d')][_0x6d14('0x3c')]){_0x39a552['include']=[{'all':!![]}];}_0x39a552=_[_0x6d14('0x3a')]({},_0x39a552,_0x4f75d3['options']);return db['MailSubstatus'][_0x6d14('0x42')](_0x39a552)[_0x6d14('0x24')](handleEntityNotFound(_0x569a57,null))['then'](respondWithResult(_0x569a57,null))[_0x6d14('0x3e')](handleError(_0x569a57,null));};exports[_0x6d14('0x43')]=function(_0x41dde2,_0x53d78d){return db[_0x6d14('0x2b')][_0x6d14('0x43')](_0x41dde2[_0x6d14('0x44')],{})['then'](respondWithResult(_0x53d78d,0xc9))[_0x6d14('0x3e')](handleError(_0x53d78d,null));};exports[_0x6d14('0x23')]=function(_0x55c378,_0x274171){if(_0x55c378[_0x6d14('0x44')]['id']){delete _0x55c378[_0x6d14('0x44')]['id'];}return db[_0x6d14('0x2b')][_0x6d14('0x42')]({'where':{'id':_0x55c378[_0x6d14('0x45')]['id']}})[_0x6d14('0x24')](handleEntityNotFound(_0x274171,null))[_0x6d14('0x24')](saveUpdates(_0x55c378[_0x6d14('0x44')],null))['then'](respondWithResult(_0x274171,null))[_0x6d14('0x3e')](handleError(_0x274171,null));};exports['destroy']=function(_0x1afe88,_0x279230){return db[_0x6d14('0x2b')]['find']({'where':{'id':_0x1afe88[_0x6d14('0x45')]['id']}})[_0x6d14('0x24')](handleEntityNotFound(_0x279230,null))[_0x6d14('0x24')](removeEntity(_0x279230,null))['catch'](handleError(_0x279230,null));};exports[_0x6d14('0x46')]=function(_0x20e8fd,_0x5ecaf8){return db[_0x6d14('0x2b')][_0x6d14('0x46')]()[_0x6d14('0x24')](respondWithResult(_0x5ecaf8,null))[_0x6d14('0x3e')](handleError(_0x5ecaf8,null));};
\ No newline at end of file
index 331bf20..e8293a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde50=['../../mysqldb','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x42bb17,_0x19b2e9){var _0x483153=function(_0xb62c9f){while(--_0xb62c9f){_0x42bb17['push'](_0x42bb17['shift']());}};_0x483153(++_0x19b2e9);}(_0xde50,0x155));var _0x0de5=function(_0x8c4157,_0x139607){_0x8c4157=_0x8c4157-0x0;var _0x470423=_0xde50[_0x8c4157];return _0x470423;};'use strict';var EventEmitter=require(_0x0de5('0x0'));var MailSubstatus=require(_0x0de5('0x1'))['db'][_0x0de5('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x0de5('0x3')](0x0);var events={'afterUpdate':_0x0de5('0x4')};function emitEvent(_0x3d8ba4){return function(_0x2a5745,_0x11b2db,_0x5aa54b){MailSubstatusEvents[_0x0de5('0x5')](_0x3d8ba4+':'+_0x2a5745['id'],_0x2a5745);MailSubstatusEvents[_0x0de5('0x5')](_0x3d8ba4,_0x2a5745);_0x5aa54b(null);};}for(var e in events){if(events[_0x0de5('0x6')](e)){var event=events[e];MailSubstatus[_0x0de5('0x7')](e,emitEvent(event));}}module[_0x0de5('0x8')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x7f87=['emit','hasOwnProperty','exports','events','../../mysqldb','update'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x7f87,0xe1));var _0x77f8=function(_0x38034a,_0x183d36){_0x38034a=_0x38034a-0x0;var _0x181c58=_0x7f87[_0x38034a];return _0x181c58;};'use strict';var EventEmitter=require(_0x77f8('0x0'));var MailSubstatus=require(_0x77f8('0x1'))['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents['setMaxListeners'](0x0);var events={'afterUpdate':_0x77f8('0x2')};function emitEvent(_0x45db1d){return function(_0x24089a,_0x2eea1e,_0x1aab1f){MailSubstatusEvents[_0x77f8('0x3')](_0x45db1d+':'+_0x24089a['id'],_0x24089a);MailSubstatusEvents[_0x77f8('0x3')](_0x45db1d,_0x24089a);_0x1aab1f(null);};}for(var e in events){if(events[_0x77f8('0x4')](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0x77f8('0x5')]=MailSubstatusEvents;
\ No newline at end of file
index c858313..ebb710d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cbc=['then','catch','./mailSubstatus.attributes','models','define','MailSubstatus','mail_substatuses','Condition','update','name','_previousDataValues'];(function(_0xcbc137,_0x30d15d){var _0x17b619=function(_0x427260){while(--_0x427260){_0xcbc137['push'](_0xcbc137['shift']());}};_0x17b619(++_0x30d15d);}(_0x1cbc,0xf4));var _0xc1cb=function(_0x151002,_0x1c9af6){_0x151002=_0x151002-0x0;var _0x1a7a58=_0x1cbc[_0x151002];return _0x1a7a58;};'use strict';var attributes=require(_0xc1cb('0x0'));module['exports']=function(_0x219e0){var _0x277751=_0x219e0[_0xc1cb('0x1')];return _0x219e0[_0xc1cb('0x2')](_0xc1cb('0x3'),attributes,{'tableName':_0xc1cb('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x13a9a0,_0x71a222,_0xf92511){return _0x277751[_0xc1cb('0x5')][_0xc1cb('0x6')]({'value':_0x13a9a0[_0xc1cb('0x7')]},{'where':{'field':'mailSubstatus','value':_0x13a9a0[_0xc1cb('0x8')]['name']}})[_0xc1cb('0x9')](function(){_0xf92511();})[_0xc1cb('0xa')](function(_0x483839){_0xf92511(_0x483839);});}}});};
\ No newline at end of file
+var _0xf273=['update','name','exports','models','MailSubstatus','Condition'];(function(_0x478984,_0x3c1e96){var _0x599f33=function(_0xf3abce){while(--_0xf3abce){_0x478984['push'](_0x478984['shift']());}};_0x599f33(++_0x3c1e96);}(_0xf273,0xce));var _0x3f27=function(_0x28db86,_0x21d621){_0x28db86=_0x28db86-0x0;var _0x30dcfd=_0xf273[_0x28db86];return _0x30dcfd;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0x3f27('0x0')]=function(_0x51c783){var _0x465366=_0x51c783[_0x3f27('0x1')];return _0x51c783['define'](_0x3f27('0x2'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0xd1c800,_0x5301a5,_0x279a8b){return _0x465366[_0x3f27('0x3')][_0x3f27('0x4')]({'value':_0xd1c800[_0x3f27('0x5')]},{'where':{'field':'mailSubstatus','value':_0xd1c800['_previousDataValues']['name']}})['then'](function(){_0x279a8b();})['catch'](function(_0x4e5095){_0x279a8b(_0x4e5095);});}}});};
\ No newline at end of file
index 0388639..10149c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafd8=['moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code','MailSubstatus,\x20%s,\x20%s','message','result','catch','util'];(function(_0x102376,_0x16c6a2){var _0x29bc9c=function(_0x5fe5b1){while(--_0x5fe5b1){_0x102376['push'](_0x102376['shift']());}};_0x29bc9c(++_0x16c6a2);}(_0xafd8,0x18e));var _0x8afd=function(_0x5da8e9,_0x3beb32){_0x5da8e9=_0x5da8e9-0x0;var _0x24a605=_0xafd8[_0x5da8e9];return _0x24a605;};'use strict';var _=require('lodash');var util=require(_0x8afd('0x0'));var moment=require(_0x8afd('0x1'));var BPromise=require('bluebird');var rs=require(_0x8afd('0x2'));var fs=require('fs');var Redis=require(_0x8afd('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8afd('0x4'));var logger=require(_0x8afd('0x5'))('rpc');var config=require(_0x8afd('0x6'));var jayson=require(_0x8afd('0x7'));var client=jayson[_0x8afd('0x8')][_0x8afd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x10d081,_0x1d70f4,_0x27a21e){return new BPromise(function(_0x3dd302,_0xe7f828){return client[_0x8afd('0xa')](_0x10d081,_0x27a21e)[_0x8afd('0xb')](function(_0x126db1){logger[_0x8afd('0xc')]('MailSubstatus,\x20%s,\x20%s',_0x1d70f4,_0x8afd('0xd'));logger['debug']('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x1d70f4,'request\x20sent',JSON[_0x8afd('0xe')](_0x126db1));if(_0x126db1[_0x8afd('0xf')]){if(_0x126db1[_0x8afd('0xf')][_0x8afd('0x10')]===0x1f4){logger['error'](_0x8afd('0x11'),_0x1d70f4,_0x126db1['error'][_0x8afd('0x12')]);return _0xe7f828(_0x126db1[_0x8afd('0xf')][_0x8afd('0x12')]);}logger[_0x8afd('0xf')](_0x8afd('0x11'),_0x1d70f4,_0x126db1[_0x8afd('0xf')]['message']);return _0x3dd302(_0x126db1[_0x8afd('0xf')][_0x8afd('0x12')]);}else{logger[_0x8afd('0xc')](_0x8afd('0x11'),_0x1d70f4,'request\x20sent');_0x3dd302(_0x126db1[_0x8afd('0x13')][_0x8afd('0x12')]);}})[_0x8afd('0x14')](function(_0x3be378){logger[_0x8afd('0xf')]('MailSubstatus,\x20%s,\x20%s',_0x1d70f4,_0x3be378);_0xe7f828(_0x3be378);});});}
\ No newline at end of file
+var _0x4fea=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','MailSubstatus,\x20%s,\x20%s','result','catch','lodash','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4fea,0xad));var _0xa4fe=function(_0x3b7edb,_0x574bc9){_0x3b7edb=_0x3b7edb-0x0;var _0x58a925=_0x4fea[_0x3b7edb];return _0x58a925;};'use strict';var _=require(_0xa4fe('0x0'));var util=require(_0xa4fe('0x1'));var moment=require(_0xa4fe('0x2'));var BPromise=require(_0xa4fe('0x3'));var rs=require(_0xa4fe('0x4'));var fs=require('fs');var Redis=require(_0xa4fe('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa4fe('0x6'));var logger=require(_0xa4fe('0x7'))(_0xa4fe('0x8'));var config=require(_0xa4fe('0x9'));var jayson=require(_0xa4fe('0xa'));var client=jayson[_0xa4fe('0xb')][_0xa4fe('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1ea9e1,_0x37946a,_0x5116cd){return new BPromise(function(_0x447bee,_0x1f8a21){return client[_0xa4fe('0xd')](_0x1ea9e1,_0x5116cd)[_0xa4fe('0xe')](function(_0x2c273d){logger[_0xa4fe('0xf')]('MailSubstatus,\x20%s,\x20%s',_0x37946a,'request\x20sent');logger['debug'](_0xa4fe('0x10'),_0x37946a,_0xa4fe('0x11'),JSON[_0xa4fe('0x12')](_0x2c273d));if(_0x2c273d[_0xa4fe('0x13')]){if(_0x2c273d['error'][_0xa4fe('0x14')]===0x1f4){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x37946a,_0x2c273d['error']['message']);return _0x1f8a21(_0x2c273d[_0xa4fe('0x13')][_0xa4fe('0x15')]);}logger[_0xa4fe('0x13')](_0xa4fe('0x16'),_0x37946a,_0x2c273d[_0xa4fe('0x13')][_0xa4fe('0x15')]);return _0x447bee(_0x2c273d['error']['message']);}else{logger[_0xa4fe('0xf')]('MailSubstatus,\x20%s,\x20%s',_0x37946a,_0xa4fe('0x11'));_0x447bee(_0x2c273d[_0xa4fe('0x17')]['message']);}})[_0xa4fe('0x18')](function(_0x57f9ad){logger[_0xa4fe('0x13')](_0xa4fe('0x16'),_0x37946a,_0x57f9ad);_0x1f8a21(_0x57f9ad);});});}
\ No newline at end of file
index 0e07ffc..eb32bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeecd=['isAuthenticated','/describe','show','post','create','put','update','delete','/:id','destroy','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0xeecd,0x106));var _0xdeec=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeecd[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xdeec('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdeec('0x1'));var express=require('express');var router=express[_0xdeec('0x2')]();var fs_extra=require(_0xdeec('0x3'));var auth=require(_0xdeec('0x4'));var interaction=require(_0xdeec('0x5'));var config=require(_0xdeec('0x6'));var controller=require('./mailTransferReport.controller');router[_0xdeec('0x7')]('/',auth[_0xdeec('0x8')](),controller['index']);router[_0xdeec('0x7')](_0xdeec('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0xdeec('0x7')]('/:id',auth[_0xdeec('0x8')](),controller[_0xdeec('0xa')]);router[_0xdeec('0xb')]('/',auth[_0xdeec('0x8')](),controller[_0xdeec('0xc')]);router[_0xdeec('0xd')]('/:id',auth[_0xdeec('0x8')](),controller[_0xdeec('0xe')]);router[_0xdeec('0xf')](_0xdeec('0x10'),auth[_0xdeec('0x8')](),controller[_0xdeec('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xb979=['post','create','update','delete','exports','multer','util','path','express','../../components/auth/service','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x454365,_0x49c0c6){var _0x5ade95=function(_0x1c9556){while(--_0x1c9556){_0x454365['push'](_0x454365['shift']());}};_0x5ade95(++_0x49c0c6);}(_0xb979,0xf5));var _0x9b97=function(_0x3c6c02,_0x49ce8a){_0x3c6c02=_0x3c6c02-0x0;var _0x4c50e8=_0xb979[_0x3c6c02];return _0x4c50e8;};'use strict';var multer=require(_0x9b97('0x0'));var util=require(_0x9b97('0x1'));var path=require(_0x9b97('0x2'));var timeout=require('connect-timeout');var express=require(_0x9b97('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9b97('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./mailTransferReport.controller');router[_0x9b97('0x5')]('/',auth[_0x9b97('0x6')](),controller[_0x9b97('0x7')]);router['get'](_0x9b97('0x8'),auth[_0x9b97('0x6')](),controller['describe']);router[_0x9b97('0x5')](_0x9b97('0x9'),auth[_0x9b97('0x6')](),controller[_0x9b97('0xa')]);router[_0x9b97('0xb')]('/',auth[_0x9b97('0x6')](),controller[_0x9b97('0xc')]);router['put'](_0x9b97('0x9'),auth['isAuthenticated'](),controller[_0x9b97('0xd')]);router[_0x9b97('0xe')](_0x9b97('0x9'),auth[_0x9b97('0x6')](),controller['destroy']);module[_0x9b97('0xf')]=router;
\ No newline at end of file
index e297341..cf21e94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x1cd71f,_0x2a9d19){var _0x33d362=function(_0x2ecb41){while(--_0x2ecb41){_0x1cd71f['push'](_0x1cd71f['shift']());}};_0x33d362(++_0x2a9d19);}(_0x34e8,0x12c));var _0x834e=function(_0x36d549,_0x3f2318){_0x36d549=_0x36d549-0x0;var _0x5220b7=_0x34e8[_0x36d549];return _0x5220b7;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x727f82,_0x29531d){var _0x324e51=function(_0x2f90a5){while(--_0x2f90a5){_0x727f82['push'](_0x727f82['shift']());}};_0x324e51(++_0x29531d);}(_0x54ef,0x112));var _0xf54e=function(_0x557869,_0xb39dad){_0x557869=_0x557869-0x0;var _0x2df7d4=_0x54ef[_0x557869];return _0x2df7d4;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index 5cf7bb0..063b706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f05=['key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','then','include','findAll','catch','show','includeAll','find','create','body','update','params','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','end','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName'];(function(_0x38482a,_0x24915e){var _0x1bf611=function(_0x43cb00){while(--_0x43cb00){_0x38482a['push'](_0x38482a['shift']());}};_0x1bf611(++_0x24915e);}(_0x3f05,0x1e0));var _0x53f0=function(_0x1cd14a,_0x29c941){_0x1cd14a=_0x1cd14a-0x0;var _0x500189=_0x3f05[_0x1cd14a];return _0x500189;};'use strict';var emlformat=require(_0x53f0('0x0'));var rimraf=require(_0x53f0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x53f0('0x2'));var rp=require(_0x53f0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x53f0('0x4'));var util=require(_0x53f0('0x5'));var path=require('path');var sox=require(_0x53f0('0x6'));var csv=require(_0x53f0('0x7'));var ejs=require(_0x53f0('0x8'));var fs=require('fs');var fs_extra=require(_0x53f0('0x9'));var _=require(_0x53f0('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x53f0('0xb'));var toCsv=require(_0x53f0('0x7'));var querystring=require(_0x53f0('0xc'));var Papa=require(_0x53f0('0xd'));var Redis=require('ioredis');var authService=require(_0x53f0('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x53f0('0xf'));var hardwareService=require(_0x53f0('0x10'));var logger=require(_0x53f0('0x11'))('api');var utils=require(_0x53f0('0x12'));var config=require(_0x53f0('0x13'));var licenseUtil=require(_0x53f0('0x14'));var db=require(_0x53f0('0x15'))['db'];function respondWithStatusCode(_0x2470ad,_0x2f4516){_0x2f4516=_0x2f4516||0xcc;return function(_0x31ea86){if(_0x31ea86){return _0x2470ad[_0x53f0('0x16')](_0x2f4516);}return _0x2470ad['status'](_0x2f4516)['end']();};}function respondWithResult(_0x4f22c6,_0x5af4c1){_0x5af4c1=_0x5af4c1||0xc8;return function(_0x2ec999){if(_0x2ec999){return _0x4f22c6[_0x53f0('0x17')](_0x5af4c1)[_0x53f0('0x18')](_0x2ec999);}};}function respondWithFilteredResult(_0x480e58,_0xf68e15){return function(_0x5e9b6f){if(_0x5e9b6f){var _0x3f3eed=typeof _0xf68e15[_0x53f0('0x19')]===_0x53f0('0x1a')&&typeof _0xf68e15[_0x53f0('0x1b')]===_0x53f0('0x1a');var _0x144a65=_0x5e9b6f['count'];var _0x486934=_0x3f3eed?0x0:_0xf68e15[_0x53f0('0x19')];var _0x20e1aa=_0x3f3eed?_0x5e9b6f[_0x53f0('0x1c')]:_0xf68e15[_0x53f0('0x19')]+_0xf68e15[_0x53f0('0x1b')];var _0x2a3d96;if(_0x20e1aa>=_0x144a65){_0x20e1aa=_0x144a65;_0x2a3d96=0xc8;}else{_0x2a3d96=0xce;}_0x480e58['status'](_0x2a3d96);return _0x480e58[_0x53f0('0x1d')](_0x53f0('0x1e'),_0x486934+'-'+_0x20e1aa+'/'+_0x144a65)[_0x53f0('0x18')](_0x5e9b6f);}return null;};}function patchUpdates(_0x68366){return function(_0x3635a5){try{jsonpatch[_0x53f0('0x1f')](_0x3635a5,_0x68366,!![]);}catch(_0xd2cfe5){return BPromise[_0x53f0('0x20')](_0xd2cfe5);}return _0x3635a5[_0x53f0('0x21')]();};}function saveUpdates(_0x493697,_0x4b5eb9){return function(_0x439e5a){if(_0x439e5a){return _0x439e5a['update'](_0x493697)['then'](function(_0xa48fdd){return _0xa48fdd;});}return null;};}function removeEntity(_0x111a4d,_0x1872da){return function(_0x41c8dc){if(_0x41c8dc){return _0x41c8dc[_0x53f0('0x22')]()['then'](function(){_0x111a4d[_0x53f0('0x17')](0xcc)[_0x53f0('0x23')]();});}};}function handleEntityNotFound(_0x5c8937,_0x2725ef){return function(_0x4bcdbe){if(!_0x4bcdbe){_0x5c8937[_0x53f0('0x16')](0x194);}return _0x4bcdbe;};}function handleError(_0x2a9ca1,_0x16d102){_0x16d102=_0x16d102||0x1f4;return function(_0x3a5ff6){logger[_0x53f0('0x24')](_0x3a5ff6[_0x53f0('0x25')]);if(_0x3a5ff6[_0x53f0('0x26')]){delete _0x3a5ff6[_0x53f0('0x26')];}_0x2a9ca1[_0x53f0('0x17')](_0x16d102)[_0x53f0('0x27')](_0x3a5ff6);};}exports[_0x53f0('0x28')]=function(_0x50f598,_0x1cd83d){var _0x87cb2={},_0x16e88f={},_0x393132={'count':0x0,'rows':[]};var _0x30e0a6=_[_0x53f0('0x29')](db[_0x53f0('0x2a')][_0x53f0('0x2b')],function(_0x24ac43){return{'name':_0x24ac43[_0x53f0('0x2c')],'type':_0x24ac43['type'][_0x53f0('0x2d')]};});_0x16e88f[_0x53f0('0x2e')]=_[_0x53f0('0x29')](_0x30e0a6,_0x53f0('0x26'));_0x16e88f['query']=_[_0x53f0('0x2f')](_0x50f598[_0x53f0('0x30')]);_0x16e88f[_0x53f0('0x31')]=_[_0x53f0('0x32')](_0x16e88f['model'],_0x16e88f['query']);_0x87cb2[_0x53f0('0x33')]=_[_0x53f0('0x32')](_0x16e88f[_0x53f0('0x2e')],qs[_0x53f0('0x34')](_0x50f598[_0x53f0('0x30')][_0x53f0('0x34')]));_0x87cb2[_0x53f0('0x33')]=_0x87cb2[_0x53f0('0x33')][_0x53f0('0x35')]?_0x87cb2[_0x53f0('0x33')]:_0x16e88f[_0x53f0('0x2e')];if(!_0x50f598[_0x53f0('0x30')][_0x53f0('0x36')](_0x53f0('0x37'))){_0x87cb2[_0x53f0('0x1b')]=qs[_0x53f0('0x1b')](_0x50f598['query'][_0x53f0('0x1b')]);_0x87cb2['offset']=qs['offset'](_0x50f598[_0x53f0('0x30')]['offset']);}_0x87cb2['order']=qs['sort'](_0x50f598[_0x53f0('0x30')][_0x53f0('0x38')]);_0x87cb2[_0x53f0('0x39')]=qs[_0x53f0('0x31')](_[_0x53f0('0x3a')](_0x50f598['query'],_0x16e88f[_0x53f0('0x31')]),_0x30e0a6);if(_0x50f598[_0x53f0('0x30')][_0x53f0('0x3b')]){_0x87cb2['where']=_[_0x53f0('0x3c')](_0x87cb2[_0x53f0('0x39')],{'$or':_['map'](_0x30e0a6,function(_0x8432f8){if(_0x8432f8[_0x53f0('0x3d')]!==_0x53f0('0x3e')){var _0x45d1a8={};_0x45d1a8[_0x8432f8[_0x53f0('0x26')]]={'$like':'%'+_0x50f598['query']['filter']+'%'};return _0x45d1a8;}})});}_0x87cb2=_[_0x53f0('0x3c')]({},_0x87cb2,_0x50f598[_0x53f0('0x3f')]);var _0x4c2427={'where':_0x87cb2[_0x53f0('0x39')]};return db[_0x53f0('0x2a')][_0x53f0('0x1c')](_0x4c2427)[_0x53f0('0x40')](function(_0x3437b1){_0x393132[_0x53f0('0x1c')]=_0x3437b1;if(_0x50f598[_0x53f0('0x30')]['includeAll']){_0x87cb2[_0x53f0('0x41')]=[{'all':!![]}];}return db[_0x53f0('0x2a')][_0x53f0('0x42')](_0x87cb2);})[_0x53f0('0x40')](function(_0x25a48d){_0x393132['rows']=_0x25a48d;return _0x393132;})[_0x53f0('0x40')](respondWithFilteredResult(_0x1cd83d,_0x87cb2))[_0x53f0('0x43')](handleError(_0x1cd83d,null));};exports[_0x53f0('0x44')]=function(_0x396db1,_0x48c486){var _0x74e17f={'raw':!![],'where':{'id':_0x396db1['params']['id']}},_0x411b4d={};_0x411b4d[_0x53f0('0x2e')]=_[_0x53f0('0x2f')](db['MailTransferReport']['rawAttributes']);_0x411b4d[_0x53f0('0x30')]=_['keys'](_0x396db1[_0x53f0('0x30')]);_0x411b4d['filters']=_[_0x53f0('0x32')](_0x411b4d[_0x53f0('0x2e')],_0x411b4d[_0x53f0('0x30')]);_0x74e17f[_0x53f0('0x33')]=_['intersection'](_0x411b4d[_0x53f0('0x2e')],qs[_0x53f0('0x34')](_0x396db1[_0x53f0('0x30')][_0x53f0('0x34')]));_0x74e17f['attributes']=_0x74e17f[_0x53f0('0x33')][_0x53f0('0x35')]?_0x74e17f[_0x53f0('0x33')]:_0x411b4d[_0x53f0('0x2e')];if(_0x396db1[_0x53f0('0x30')][_0x53f0('0x45')]){_0x74e17f[_0x53f0('0x41')]=[{'all':!![]}];}_0x74e17f=_[_0x53f0('0x3c')]({},_0x74e17f,_0x396db1[_0x53f0('0x3f')]);return db[_0x53f0('0x2a')][_0x53f0('0x46')](_0x74e17f)[_0x53f0('0x40')](handleEntityNotFound(_0x48c486,null))[_0x53f0('0x40')](respondWithResult(_0x48c486,null))[_0x53f0('0x43')](handleError(_0x48c486,null));};exports[_0x53f0('0x47')]=function(_0x467ab6,_0x5e8bc4){return db[_0x53f0('0x2a')][_0x53f0('0x47')](_0x467ab6[_0x53f0('0x48')],{})[_0x53f0('0x40')](respondWithResult(_0x5e8bc4,0xc9))[_0x53f0('0x43')](handleError(_0x5e8bc4,null));};exports[_0x53f0('0x49')]=function(_0x2d9b91,_0x357d49){if(_0x2d9b91[_0x53f0('0x48')]['id']){delete _0x2d9b91['body']['id'];}return db[_0x53f0('0x2a')][_0x53f0('0x46')]({'where':{'id':_0x2d9b91['params']['id']}})[_0x53f0('0x40')](handleEntityNotFound(_0x357d49,null))[_0x53f0('0x40')](saveUpdates(_0x2d9b91['body'],null))[_0x53f0('0x40')](respondWithResult(_0x357d49,null))[_0x53f0('0x43')](handleError(_0x357d49,null));};exports[_0x53f0('0x22')]=function(_0x35b4a7,_0x599d63){return db[_0x53f0('0x2a')][_0x53f0('0x46')]({'where':{'id':_0x35b4a7[_0x53f0('0x4a')]['id']}})[_0x53f0('0x40')](handleEntityNotFound(_0x599d63,null))['then'](removeEntity(_0x599d63,null))[_0x53f0('0x43')](handleError(_0x599d63,null));};exports['describe']=function(_0x50f4c6,_0xff64e3){return db['MailTransferReport']['describe']()[_0x53f0('0x40')](respondWithResult(_0xff64e3,null))['catch'](handleError(_0xff64e3,null));};
\ No newline at end of file
+var _0x4ce0=['apply','save','update','then','destroy','error','name','send','index','map','MailTransferReport','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','findAll','rows','show','params','includeAll','find','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json'];(function(_0x3566de,_0x1bec4d){var _0x256439=function(_0xffc93d){while(--_0xffc93d){_0x3566de['push'](_0x3566de['shift']());}};_0x256439(++_0x1bec4d);}(_0x4ce0,0x113));var _0x04ce=function(_0x46c4e3,_0x236922){_0x46c4e3=_0x46c4e3-0x0;var _0x23629c=_0x4ce0[_0x46c4e3];return _0x23629c;};'use strict';var emlformat=require(_0x04ce('0x0'));var rimraf=require(_0x04ce('0x1'));var zipdir=require(_0x04ce('0x2'));var jsonpatch=require(_0x04ce('0x3'));var rp=require('request-promise');var moment=require(_0x04ce('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x04ce('0x5'));var util=require(_0x04ce('0x6'));var path=require(_0x04ce('0x7'));var sox=require(_0x04ce('0x8'));var csv=require(_0x04ce('0x9'));var ejs=require(_0x04ce('0xa'));var fs=require('fs');var fs_extra=require(_0x04ce('0xb'));var _=require(_0x04ce('0xc'));var squel=require(_0x04ce('0xd'));var crypto=require(_0x04ce('0xe'));var jsforce=require(_0x04ce('0xf'));var deskjs=require(_0x04ce('0x10'));var toCsv=require(_0x04ce('0x9'));var querystring=require(_0x04ce('0x11'));var Papa=require(_0x04ce('0x12'));var Redis=require('ioredis');var authService=require(_0x04ce('0x13'));var qs=require(_0x04ce('0x14'));var as=require(_0x04ce('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x04ce('0x16'))(_0x04ce('0x17'));var utils=require(_0x04ce('0x18'));var config=require(_0x04ce('0x19'));var licenseUtil=require(_0x04ce('0x1a'));var db=require(_0x04ce('0x1b'))['db'];function respondWithStatusCode(_0x349e9c,_0x4e5c32){_0x4e5c32=_0x4e5c32||0xcc;return function(_0x1edba0){if(_0x1edba0){return _0x349e9c[_0x04ce('0x1c')](_0x4e5c32);}return _0x349e9c[_0x04ce('0x1d')](_0x4e5c32)[_0x04ce('0x1e')]();};}function respondWithResult(_0x67fb14,_0x8219cb){_0x8219cb=_0x8219cb||0xc8;return function(_0xb79cd9){if(_0xb79cd9){return _0x67fb14[_0x04ce('0x1d')](_0x8219cb)['json'](_0xb79cd9);}};}function respondWithFilteredResult(_0x3da1d9,_0xd6752c){return function(_0x57e42e){if(_0x57e42e){var _0xe79505=typeof _0xd6752c[_0x04ce('0x1f')]===_0x04ce('0x20')&&typeof _0xd6752c[_0x04ce('0x21')]===_0x04ce('0x20');var _0x23e24a=_0x57e42e[_0x04ce('0x22')];var _0x4ede3f=_0xe79505?0x0:_0xd6752c[_0x04ce('0x1f')];var _0x4b23f7=_0xe79505?_0x57e42e[_0x04ce('0x22')]:_0xd6752c['offset']+_0xd6752c[_0x04ce('0x21')];var _0x51de28;if(_0x4b23f7>=_0x23e24a){_0x4b23f7=_0x23e24a;_0x51de28=0xc8;}else{_0x51de28=0xce;}_0x3da1d9[_0x04ce('0x1d')](_0x51de28);return _0x3da1d9['set'](_0x04ce('0x23'),_0x4ede3f+'-'+_0x4b23f7+'/'+_0x23e24a)[_0x04ce('0x24')](_0x57e42e);}return null;};}function patchUpdates(_0xdd504a){return function(_0x3d01d9){try{jsonpatch[_0x04ce('0x25')](_0x3d01d9,_0xdd504a,!![]);}catch(_0x4988a9){return BPromise['reject'](_0x4988a9);}return _0x3d01d9[_0x04ce('0x26')]();};}function saveUpdates(_0x1780eb,_0xc83fe){return function(_0x17f581){if(_0x17f581){return _0x17f581[_0x04ce('0x27')](_0x1780eb)[_0x04ce('0x28')](function(_0x5eeb7c){return _0x5eeb7c;});}return null;};}function removeEntity(_0x38b409,_0x140375){return function(_0xa88dce){if(_0xa88dce){return _0xa88dce[_0x04ce('0x29')]()[_0x04ce('0x28')](function(){_0x38b409[_0x04ce('0x1d')](0xcc)[_0x04ce('0x1e')]();});}};}function handleEntityNotFound(_0x596d35,_0x263e83){return function(_0xf9b3ab){if(!_0xf9b3ab){_0x596d35[_0x04ce('0x1c')](0x194);}return _0xf9b3ab;};}function handleError(_0x23c907,_0x58da8a){_0x58da8a=_0x58da8a||0x1f4;return function(_0x17c57c){logger[_0x04ce('0x2a')](_0x17c57c['stack']);if(_0x17c57c[_0x04ce('0x2b')]){delete _0x17c57c[_0x04ce('0x2b')];}_0x23c907[_0x04ce('0x1d')](_0x58da8a)[_0x04ce('0x2c')](_0x17c57c);};}exports[_0x04ce('0x2d')]=function(_0x10d236,_0x50478c){var _0x57e955={},_0x27c393={},_0x3fe938={'count':0x0,'rows':[]};var _0x1394ab=_[_0x04ce('0x2e')](db[_0x04ce('0x2f')][_0x04ce('0x30')],function(_0x3aa432){return{'name':_0x3aa432[_0x04ce('0x31')],'type':_0x3aa432['type'][_0x04ce('0x32')]};});_0x27c393[_0x04ce('0x33')]=_[_0x04ce('0x2e')](_0x1394ab,_0x04ce('0x2b'));_0x27c393[_0x04ce('0x34')]=_[_0x04ce('0x35')](_0x10d236['query']);_0x27c393['filters']=_[_0x04ce('0x36')](_0x27c393[_0x04ce('0x33')],_0x27c393[_0x04ce('0x34')]);_0x57e955[_0x04ce('0x37')]=_['intersection'](_0x27c393['model'],qs[_0x04ce('0x38')](_0x10d236[_0x04ce('0x34')]['fields']));_0x57e955[_0x04ce('0x37')]=_0x57e955[_0x04ce('0x37')][_0x04ce('0x39')]?_0x57e955['attributes']:_0x27c393[_0x04ce('0x33')];if(!_0x10d236['query'][_0x04ce('0x3a')](_0x04ce('0x3b'))){_0x57e955[_0x04ce('0x21')]=qs['limit'](_0x10d236['query'][_0x04ce('0x21')]);_0x57e955['offset']=qs[_0x04ce('0x1f')](_0x10d236[_0x04ce('0x34')][_0x04ce('0x1f')]);}_0x57e955[_0x04ce('0x3c')]=qs[_0x04ce('0x3d')](_0x10d236[_0x04ce('0x34')][_0x04ce('0x3d')]);_0x57e955['where']=qs[_0x04ce('0x3e')](_[_0x04ce('0x3f')](_0x10d236[_0x04ce('0x34')],_0x27c393[_0x04ce('0x3e')]),_0x1394ab);if(_0x10d236['query'][_0x04ce('0x40')]){_0x57e955[_0x04ce('0x41')]=_[_0x04ce('0x42')](_0x57e955[_0x04ce('0x41')],{'$or':_[_0x04ce('0x2e')](_0x1394ab,function(_0x25054d){if(_0x25054d['type']!==_0x04ce('0x43')){var _0x2e22c0={};_0x2e22c0[_0x25054d[_0x04ce('0x2b')]]={'$like':'%'+_0x10d236[_0x04ce('0x34')][_0x04ce('0x40')]+'%'};return _0x2e22c0;}})});}_0x57e955=_[_0x04ce('0x42')]({},_0x57e955,_0x10d236[_0x04ce('0x44')]);var _0x4e246a={'where':_0x57e955['where']};return db[_0x04ce('0x2f')][_0x04ce('0x22')](_0x4e246a)[_0x04ce('0x28')](function(_0xade041){_0x3fe938[_0x04ce('0x22')]=_0xade041;if(_0x10d236[_0x04ce('0x34')]['includeAll']){_0x57e955['include']=[{'all':!![]}];}return db[_0x04ce('0x2f')][_0x04ce('0x45')](_0x57e955);})[_0x04ce('0x28')](function(_0x31c3fe){_0x3fe938[_0x04ce('0x46')]=_0x31c3fe;return _0x3fe938;})['then'](respondWithFilteredResult(_0x50478c,_0x57e955))['catch'](handleError(_0x50478c,null));};exports[_0x04ce('0x47')]=function(_0x27f937,_0x4f85b3){var _0x3444c7={'raw':!![],'where':{'id':_0x27f937[_0x04ce('0x48')]['id']}},_0x3d7cfb={};_0x3d7cfb[_0x04ce('0x33')]=_[_0x04ce('0x35')](db['MailTransferReport'][_0x04ce('0x30')]);_0x3d7cfb[_0x04ce('0x34')]=_[_0x04ce('0x35')](_0x27f937['query']);_0x3d7cfb['filters']=_[_0x04ce('0x36')](_0x3d7cfb[_0x04ce('0x33')],_0x3d7cfb[_0x04ce('0x34')]);_0x3444c7[_0x04ce('0x37')]=_[_0x04ce('0x36')](_0x3d7cfb[_0x04ce('0x33')],qs['fields'](_0x27f937[_0x04ce('0x34')]['fields']));_0x3444c7[_0x04ce('0x37')]=_0x3444c7[_0x04ce('0x37')][_0x04ce('0x39')]?_0x3444c7['attributes']:_0x3d7cfb[_0x04ce('0x33')];if(_0x27f937[_0x04ce('0x34')][_0x04ce('0x49')]){_0x3444c7['include']=[{'all':!![]}];}_0x3444c7=_['merge']({},_0x3444c7,_0x27f937['options']);return db['MailTransferReport'][_0x04ce('0x4a')](_0x3444c7)[_0x04ce('0x28')](handleEntityNotFound(_0x4f85b3,null))[_0x04ce('0x28')](respondWithResult(_0x4f85b3,null))['catch'](handleError(_0x4f85b3,null));};exports['create']=function(_0x45ccdd,_0x3bda23){return db[_0x04ce('0x2f')]['create'](_0x45ccdd[_0x04ce('0x4b')],{})[_0x04ce('0x28')](respondWithResult(_0x3bda23,0xc9))[_0x04ce('0x4c')](handleError(_0x3bda23,null));};exports[_0x04ce('0x27')]=function(_0x5a748f,_0x5553f4){if(_0x5a748f[_0x04ce('0x4b')]['id']){delete _0x5a748f[_0x04ce('0x4b')]['id'];}return db[_0x04ce('0x2f')][_0x04ce('0x4a')]({'where':{'id':_0x5a748f['params']['id']}})['then'](handleEntityNotFound(_0x5553f4,null))['then'](saveUpdates(_0x5a748f[_0x04ce('0x4b')],null))[_0x04ce('0x28')](respondWithResult(_0x5553f4,null))['catch'](handleError(_0x5553f4,null));};exports[_0x04ce('0x29')]=function(_0xf08e9b,_0x15cc8d){return db[_0x04ce('0x2f')][_0x04ce('0x4a')]({'where':{'id':_0xf08e9b['params']['id']}})[_0x04ce('0x28')](handleEntityNotFound(_0x15cc8d,null))[_0x04ce('0x28')](removeEntity(_0x15cc8d,null))[_0x04ce('0x4c')](handleError(_0x15cc8d,null));};exports[_0x04ce('0x4d')]=function(_0x5bdfd0,_0x1052d0){return db['MailTransferReport'][_0x04ce('0x4d')]()[_0x04ce('0x28')](respondWithResult(_0x1052d0,null))['catch'](handleError(_0x1052d0,null));};
\ No newline at end of file
index 62ab34e..f09ccaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfda=['exports','MailTransferReport','uniqueid','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x1464d0,_0x593d5c){var _0x26d30c=function(_0xc89c6c){while(--_0xc89c6c){_0x1464d0['push'](_0x1464d0['shift']());}};_0x26d30c(++_0x593d5c);}(_0xbfda,0x1dc));var _0xabfd=function(_0x2c2980,_0x34282a){_0x2c2980=_0x2c2980-0x0;var _0x2a20a9=_0xbfda[_0x2c2980];return _0x2a20a9;};'use strict';var _=require(_0xabfd('0x0'));var util=require(_0xabfd('0x1'));var logger=require(_0xabfd('0x2'))('api');var moment=require(_0xabfd('0x3'));var BPromise=require('bluebird');var rp=require(_0xabfd('0x4'));var fs=require('fs');var path=require(_0xabfd('0x5'));var rimraf=require(_0xabfd('0x6'));var config=require(_0xabfd('0x7'));var attributes=require('./mailTransferReport.attributes');module[_0xabfd('0x8')]=function(_0x4c306b,_0x1dbf70){return _0x4c306b['define'](_0xabfd('0x9'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0xabfd('0xa'),'fields':[_0xabfd('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x61df=['moment','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','report_mail_transfer','uniqueid','api'];(function(_0x319860,_0x42f0cc){var _0x1d351e=function(_0x34daf8){while(--_0x34daf8){_0x319860['push'](_0x319860['shift']());}};_0x1d351e(++_0x42f0cc);}(_0x61df,0xbd));var _0xf61d=function(_0x325b20,_0x3ad26c){_0x325b20=_0x325b20-0x0;var _0x23cf99=_0x61df[_0x325b20];return _0x23cf99;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xf61d('0x0'));var moment=require(_0xf61d('0x1'));var BPromise=require('bluebird');var rp=require(_0xf61d('0x2'));var fs=require('fs');var path=require(_0xf61d('0x3'));var rimraf=require('rimraf');var config=require(_0xf61d('0x4'));var attributes=require(_0xf61d('0x5'));module[_0xf61d('0x6')]=function(_0x458eb9,_0x2d0791){return _0x458eb9[_0xf61d('0x7')]('MailTransferReport',attributes,{'tableName':_0xf61d('0x8'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xf61d('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 0872666..3ae0df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb714=['code','message','result','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x19d45c,_0xb207b1){var _0x4a80dc=function(_0x4c299f){while(--_0x4c299f){_0x19d45c['push'](_0x19d45c['shift']());}};_0x4a80dc(++_0xb207b1);}(_0xb714,0x1a7));var _0x4b71=function(_0x4e7cc3,_0x47ff4){_0x4e7cc3=_0x4e7cc3-0x0;var _0x42e46d=_0xb714[_0x4e7cc3];return _0x42e46d;};'use strict';var _=require('lodash');var util=require(_0x4b71('0x0'));var moment=require(_0x4b71('0x1'));var BPromise=require(_0x4b71('0x2'));var rs=require(_0x4b71('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4b71('0x4'))(_0x4b71('0x5'));var config=require(_0x4b71('0x6'));var jayson=require(_0x4b71('0x7'));var client=jayson['client'][_0x4b71('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x27689f,_0x3a20cb,_0x1e95cb){return new BPromise(function(_0x182441,_0x464147){return client[_0x4b71('0x9')](_0x27689f,_0x1e95cb)[_0x4b71('0xa')](function(_0x303bdb){logger[_0x4b71('0xb')](_0x4b71('0xc'),_0x3a20cb,_0x4b71('0xd'));logger[_0x4b71('0xe')](_0x4b71('0xf'),_0x3a20cb,_0x4b71('0xd'),JSON[_0x4b71('0x10')](_0x303bdb));if(_0x303bdb[_0x4b71('0x11')]){if(_0x303bdb[_0x4b71('0x11')][_0x4b71('0x12')]===0x1f4){logger[_0x4b71('0x11')](_0x4b71('0xc'),_0x3a20cb,_0x303bdb[_0x4b71('0x11')][_0x4b71('0x13')]);return _0x464147(_0x303bdb[_0x4b71('0x11')][_0x4b71('0x13')]);}logger[_0x4b71('0x11')](_0x4b71('0xc'),_0x3a20cb,_0x303bdb[_0x4b71('0x11')][_0x4b71('0x13')]);return _0x182441(_0x303bdb[_0x4b71('0x11')]['message']);}else{logger[_0x4b71('0xb')](_0x4b71('0xc'),_0x3a20cb,'request\x20sent');_0x182441(_0x303bdb[_0x4b71('0x14')][_0x4b71('0x13')]);}})['catch'](function(_0x53f908){logger[_0x4b71('0x11')](_0x4b71('0xc'),_0x3a20cb,_0x53f908);_0x464147(_0x53f908);});});}
\ No newline at end of file
+var _0xdf6c=['info','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','then','MailTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x4bd864,_0x45d924){var _0x51672a=function(_0x2690f0){while(--_0x2690f0){_0x4bd864['push'](_0x4bd864['shift']());}};_0x51672a(++_0x45d924);}(_0xdf6c,0x111));var _0xcdf6=function(_0x4f03df,_0x438cc1){_0x4f03df=_0x4f03df-0x0;var _0x3d7db8=_0xdf6c[_0x4f03df];return _0x3d7db8;};'use strict';var _=require(_0xcdf6('0x0'));var util=require(_0xcdf6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcdf6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcdf6('0x3'))['db'];var utils=require(_0xcdf6('0x4'));var logger=require(_0xcdf6('0x5'))(_0xcdf6('0x6'));var config=require('../../config/environment');var jayson=require(_0xcdf6('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x52290d,_0x480ce9,_0x439073){return new BPromise(function(_0x3af3e9,_0xc451d4){return client['request'](_0x52290d,_0x439073)[_0xcdf6('0x8')](function(_0x42ddbc){logger['info'](_0xcdf6('0x9'),_0x480ce9,_0xcdf6('0xa'));logger['debug']('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x480ce9,_0xcdf6('0xa'),JSON[_0xcdf6('0xb')](_0x42ddbc));if(_0x42ddbc[_0xcdf6('0xc')]){if(_0x42ddbc['error'][_0xcdf6('0xd')]===0x1f4){logger[_0xcdf6('0xc')](_0xcdf6('0x9'),_0x480ce9,_0x42ddbc[_0xcdf6('0xc')][_0xcdf6('0xe')]);return _0xc451d4(_0x42ddbc[_0xcdf6('0xc')][_0xcdf6('0xe')]);}logger['error'](_0xcdf6('0x9'),_0x480ce9,_0x42ddbc[_0xcdf6('0xc')][_0xcdf6('0xe')]);return _0x3af3e9(_0x42ddbc[_0xcdf6('0xc')]['message']);}else{logger[_0xcdf6('0xf')]('MailTransferReport,\x20%s,\x20%s',_0x480ce9,'request\x20sent');_0x3af3e9(_0x42ddbc[_0xcdf6('0x10')][_0xcdf6('0xe')]);}})[_0xcdf6('0x11')](function(_0x3bf97f){logger[_0xcdf6('0xc')]('MailTransferReport,\x20%s,\x20%s',_0x480ce9,_0x3bf97f);_0xc451d4(_0x3bf97f);});});}
\ No newline at end of file
index 6ebd9bd..36d1dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ceb=['show','post','create','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x3ceb,0x6b));var _0xb3ce=function(_0x13e35e,_0x21ea1a){_0x13e35e=_0x13e35e-0x0;var _0x3030ea=_0x3ceb[_0x13e35e];return _0x3030ea;};'use strict';var multer=require(_0xb3ce('0x0'));var util=require(_0xb3ce('0x1'));var path=require('path');var timeout=require(_0xb3ce('0x2'));var express=require(_0xb3ce('0x3'));var router=express['Router']();var fs_extra=require(_0xb3ce('0x4'));var auth=require(_0xb3ce('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb3ce('0x6'));var controller=require(_0xb3ce('0x7'));router[_0xb3ce('0x8')]('/',auth[_0xb3ce('0x9')](),controller[_0xb3ce('0xa')]);router['get'](_0xb3ce('0xb'),auth[_0xb3ce('0x9')](),controller['describe']);router['get'](_0xb3ce('0xc'),auth['isAuthenticated'](),controller[_0xb3ce('0xd')]);router[_0xb3ce('0xe')]('/',auth[_0xb3ce('0x9')](),controller[_0xb3ce('0xf')]);router['put']('/:id',auth[_0xb3ce('0x9')](),controller[_0xb3ce('0x10')]);router[_0xb3ce('0x11')](_0xb3ce('0xc'),auth[_0xb3ce('0x9')](),controller[_0xb3ce('0x12')]);module[_0xb3ce('0x13')]=router;
\ No newline at end of file
+var _0x56a5=['show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated','index','describe','get','/:id'];(function(_0x57bd3c,_0x455b57){var _0x2480b7=function(_0x17fc27){while(--_0x17fc27){_0x57bd3c['push'](_0x57bd3c['shift']());}};_0x2480b7(++_0x455b57);}(_0x56a5,0x168));var _0x556a=function(_0x425cd3,_0x22f09c){_0x425cd3=_0x425cd3-0x0;var _0x15e88a=_0x56a5[_0x425cd3];return _0x15e88a;};'use strict';var multer=require('multer');var util=require(_0x556a('0x0'));var path=require('path');var timeout=require(_0x556a('0x1'));var express=require(_0x556a('0x2'));var router=express[_0x556a('0x3')]();var fs_extra=require(_0x556a('0x4'));var auth=require(_0x556a('0x5'));var interaction=require(_0x556a('0x6'));var config=require(_0x556a('0x7'));var controller=require(_0x556a('0x8'));router['get']('/',auth[_0x556a('0x9')](),controller[_0x556a('0xa')]);router['get']('/describe',auth[_0x556a('0x9')](),controller[_0x556a('0xb')]);router[_0x556a('0xc')](_0x556a('0xd'),auth[_0x556a('0x9')](),controller[_0x556a('0xe')]);router[_0x556a('0xf')]('/',auth['isAuthenticated'](),controller[_0x556a('0x10')]);router[_0x556a('0x11')](_0x556a('0xd'),auth[_0x556a('0x9')](),controller[_0x556a('0x12')]);router[_0x556a('0x13')](_0x556a('0xd'),auth[_0x556a('0x9')](),controller[_0x556a('0x14')]);module[_0x556a('0x15')]=router;
\ No newline at end of file
index 81160e0..196f429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x123d=['talk:[start]','moment','exports','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','seconds','setDataValue'];(function(_0x38eeda,_0x221781){var _0xecdae8=function(_0x34e768){while(--_0x34e768){_0x38eeda['push'](_0x38eeda['shift']());}};_0xecdae8(++_0x221781);}(_0x123d,0x133));var _0xd123=function(_0xcc902e,_0x100e4d){_0xcc902e=_0xcc902e-0x0;var _0x5670af=_0x123d[_0xcc902e];return _0x5670af;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xd123('0x0'));module[_0xd123('0x1')]={'channel':{'type':Sequelize[_0xd123('0x2')]},'membername':{'type':Sequelize[_0xd123('0x2')]},'interface':{'type':Sequelize[_0xd123('0x2')]},'type':{'type':Sequelize[_0xd123('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xd123('0x3')},'duration':{'type':Sequelize[_0xd123('0x4')]},'enterAt':{'type':Sequelize[_0xd123('0x5')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x3173f3){var _0x10625f=moment(_0x3173f3);var _0x2d9eed=moment(this['getDataValue']('enterAt'));var _0x62d10e=_0x10625f['diff'](_0x2d9eed,_0xd123('0x6'));this[_0xd123('0x7')]('exitAt',_0x3173f3);this[_0xd123('0x7')]('duration',_0x62d10e>=0x0?_0x62d10e:null);}},'data1':{'type':Sequelize[_0xd123('0x2')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xd123('0x2')],'comment':_0xd123('0x8')},'data3':{'type':Sequelize[_0xd123('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xd123('0x2')]},'internal':{'type':Sequelize[_0xd123('0x4')]},'uniqueid':{'type':Sequelize[_0xd123('0x2')]}};
\ No newline at end of file
+var _0x87ac=['talk:[start]','talk:[destination]','talk:[dial\x20string]','INTEGER','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','enterAt','diff','seconds','setDataValue','duration'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x87ac,0x10e));var _0xc87a=function(_0x466247,_0x5d69e3){_0x466247=_0x466247-0x0;var _0x4b352e=_0x87ac[_0x466247];return _0x4b352e;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xc87a('0x0')]={'channel':{'type':Sequelize[_0xc87a('0x1')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xc87a('0x1')]},'type':{'type':Sequelize[_0xc87a('0x1')],'defaultValue':_0xc87a('0x2'),'comment':_0xc87a('0x3')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xc87a('0x4')]},'exitAt':{'type':Sequelize[_0xc87a('0x4')],'set':function(_0x32f3e8){var _0x1fa84b=moment(_0x32f3e8);var _0x437e7b=moment(this['getDataValue'](_0xc87a('0x5')));var _0x1c0321=_0x1fa84b[_0xc87a('0x6')](_0x437e7b,_0xc87a('0x7'));this[_0xc87a('0x8')]('exitAt',_0x32f3e8);this[_0xc87a('0x8')](_0xc87a('0x9'),_0x1c0321>=0x0?_0x1c0321:null);}},'data1':{'type':Sequelize[_0xc87a('0x1')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xc87a('0x1')],'comment':_0xc87a('0xa')},'data3':{'type':Sequelize[_0xc87a('0x1')],'comment':_0xc87a('0xb')},'data4':{'type':Sequelize[_0xc87a('0x1')],'comment':_0xc87a('0xc')},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xc87a('0x1')]},'internal':{'type':Sequelize[_0xc87a('0xd')]},'uniqueid':{'type':Sequelize[_0xc87a('0x1')]}};
\ No newline at end of file
index ac7eeb1..2a85e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['merge','filter','includeAll','include','findAll','rawAttributes','options','create','body','find','params','catch','destroy','describe','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','MemberReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x55ca,0x126));var _0xa55c=function(_0x3c40f4,_0x500b8a){_0x3c40f4=_0x3c40f4-0x0;var _0x1209d=_0x55ca[_0x3c40f4];return _0x1209d;};'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 _0x34e8=['path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','MemberReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x126fb9,_0x122c59){var _0xc8a3b1=function(_0x355744){while(--_0x355744){_0x126fb9['push'](_0x126fb9['shift']());}};_0xc8a3b1(++_0x122c59);}(_0x34e8,0x12c));var _0x834e=function(_0x255079,_0x4acab6){_0x255079=_0x255079-0x0;var _0x4f414a=_0x34e8[_0x255079];return _0x4f414a;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e5b6d,_0x6cd9b9){_0x6cd9b9=_0x6cd9b9||0xcc;return function(_0x58a27e){if(_0x58a27e){return _0x5e5b6d[_0x834e('0x1c')](_0x6cd9b9);}return _0x5e5b6d[_0x834e('0x1d')](_0x6cd9b9)[_0x834e('0x1e')]();};}function respondWithResult(_0x21cc0a,_0x50e860){_0x50e860=_0x50e860||0xc8;return function(_0x43156c){if(_0x43156c){return _0x21cc0a[_0x834e('0x1d')](_0x50e860)['json'](_0x43156c);}};}function respondWithFilteredResult(_0x316205,_0x4a9cdc){return function(_0x38a8cd){if(_0x38a8cd){var _0x36d443=typeof _0x4a9cdc['offset']===_0x834e('0x1f')&&typeof _0x4a9cdc[_0x834e('0x20')]===_0x834e('0x1f');var _0x50b3f6=_0x38a8cd[_0x834e('0x21')];var _0x211e9a=_0x36d443?0x0:_0x4a9cdc[_0x834e('0x22')];var _0xb993a1=_0x36d443?_0x38a8cd[_0x834e('0x21')]:_0x4a9cdc[_0x834e('0x22')]+_0x4a9cdc[_0x834e('0x20')];var _0x595515;if(_0xb993a1>=_0x50b3f6){_0xb993a1=_0x50b3f6;_0x595515=0xc8;}else{_0x595515=0xce;}_0x316205[_0x834e('0x1d')](_0x595515);return _0x316205[_0x834e('0x23')](_0x834e('0x24'),_0x211e9a+'-'+_0xb993a1+'/'+_0x50b3f6)[_0x834e('0x25')](_0x38a8cd);}return null;};}function patchUpdates(_0x4ab05d){return function(_0x45a630){try{jsonpatch[_0x834e('0x26')](_0x45a630,_0x4ab05d,!![]);}catch(_0x5a05c0){return BPromise[_0x834e('0x27')](_0x5a05c0);}return _0x45a630[_0x834e('0x28')]();};}function saveUpdates(_0x8d406e,_0x5c55ca){return function(_0x4e3f48){if(_0x4e3f48){return _0x4e3f48[_0x834e('0x29')](_0x8d406e)[_0x834e('0x2a')](function(_0x589dde){return _0x589dde;});}return null;};}function removeEntity(_0x25ee1d,_0x1dc1e0){return function(_0x58f4fd){if(_0x58f4fd){return _0x58f4fd[_0x834e('0x2b')]()[_0x834e('0x2a')](function(){_0x25ee1d[_0x834e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fcf7,_0x3e310f){return function(_0x5e1cc5){if(!_0x5e1cc5){_0x24fcf7['sendStatus'](0x194);}return _0x5e1cc5;};}function handleError(_0x1e713a,_0x508a1d){_0x508a1d=_0x508a1d||0x1f4;return function(_0x2826ec){logger[_0x834e('0x2c')](_0x2826ec[_0x834e('0x2d')]);if(_0x2826ec[_0x834e('0x2e')]){delete _0x2826ec[_0x834e('0x2e')];}_0x1e713a[_0x834e('0x1d')](_0x508a1d)['send'](_0x2826ec);};}exports['index']=function(_0x4dc64a,_0x58c1d7){var _0x2c7a8d={},_0x567cea={},_0x106d6a={'count':0x0,'rows':[]};var _0x5dacc1=_[_0x834e('0x2f')](db[_0x834e('0x30')][_0x834e('0x31')],function(_0x1e026a){return{'name':_0x1e026a[_0x834e('0x32')],'type':_0x1e026a[_0x834e('0x33')][_0x834e('0x34')]};});_0x567cea[_0x834e('0x35')]=_[_0x834e('0x2f')](_0x5dacc1,'name');_0x567cea[_0x834e('0x36')]=_['keys'](_0x4dc64a[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],_0x567cea[_0x834e('0x36')]);_0x2c7a8d[_0x834e('0x39')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x4dc64a[_0x834e('0x36')]['fields']));_0x2c7a8d[_0x834e('0x39')]=_0x2c7a8d[_0x834e('0x39')][_0x834e('0x3b')]?_0x2c7a8d[_0x834e('0x39')]:_0x567cea['model'];if(!_0x4dc64a[_0x834e('0x36')][_0x834e('0x3c')]('nolimit')){_0x2c7a8d['limit']=qs['limit'](_0x4dc64a[_0x834e('0x36')][_0x834e('0x20')]);_0x2c7a8d[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4dc64a[_0x834e('0x36')][_0x834e('0x22')]);}_0x2c7a8d['order']=qs[_0x834e('0x3d')](_0x4dc64a['query'][_0x834e('0x3d')]);_0x2c7a8d[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x4dc64a[_0x834e('0x36')],_0x567cea['filters']),_0x5dacc1);if(_0x4dc64a['query'][_0x834e('0x40')]){_0x2c7a8d[_0x834e('0x3e')]=_[_0x834e('0x41')](_0x2c7a8d[_0x834e('0x3e')],{'$or':_[_0x834e('0x2f')](_0x5dacc1,function(_0x4ca43c){if(_0x4ca43c[_0x834e('0x33')]!=='VIRTUAL'){var _0x50c243={};_0x50c243[_0x4ca43c[_0x834e('0x2e')]]={'$like':'%'+_0x4dc64a['query'][_0x834e('0x40')]+'%'};return _0x50c243;}})});}_0x2c7a8d=_[_0x834e('0x41')]({},_0x2c7a8d,_0x4dc64a[_0x834e('0x42')]);var _0x3c59af={'where':_0x2c7a8d[_0x834e('0x3e')]};return db['MemberReport'][_0x834e('0x21')](_0x3c59af)[_0x834e('0x2a')](function(_0x38f266){_0x106d6a['count']=_0x38f266;if(_0x4dc64a[_0x834e('0x36')][_0x834e('0x43')]){_0x2c7a8d['include']=[{'all':!![]}];}return db[_0x834e('0x30')]['findAll'](_0x2c7a8d);})[_0x834e('0x2a')](function(_0x585335){_0x106d6a['rows']=_0x585335;return _0x106d6a;})['then'](respondWithFilteredResult(_0x58c1d7,_0x2c7a8d))[_0x834e('0x44')](handleError(_0x58c1d7,null));};exports[_0x834e('0x45')]=function(_0x3bcbf4,_0xbc1571){var _0x8ad264={'raw':!![],'where':{'id':_0x3bcbf4[_0x834e('0x46')]['id']}},_0x23feea={};_0x23feea['model']=_[_0x834e('0x47')](db['MemberReport'][_0x834e('0x31')]);_0x23feea['query']=_[_0x834e('0x47')](_0x3bcbf4['query']);_0x23feea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x23feea['model'],_0x23feea[_0x834e('0x36')]);_0x8ad264[_0x834e('0x39')]=_[_0x834e('0x38')](_0x23feea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x3bcbf4[_0x834e('0x36')][_0x834e('0x3a')]));_0x8ad264[_0x834e('0x39')]=_0x8ad264[_0x834e('0x39')][_0x834e('0x3b')]?_0x8ad264['attributes']:_0x23feea[_0x834e('0x35')];if(_0x3bcbf4[_0x834e('0x36')]['includeAll']){_0x8ad264[_0x834e('0x48')]=[{'all':!![]}];}_0x8ad264=_[_0x834e('0x41')]({},_0x8ad264,_0x3bcbf4[_0x834e('0x42')]);return db[_0x834e('0x30')][_0x834e('0x49')](_0x8ad264)[_0x834e('0x2a')](handleEntityNotFound(_0xbc1571,null))['then'](respondWithResult(_0xbc1571,null))['catch'](handleError(_0xbc1571,null));};exports[_0x834e('0x4a')]=function(_0x1a5444,_0x30568e){return db[_0x834e('0x30')][_0x834e('0x4a')](_0x1a5444[_0x834e('0x4b')],{})[_0x834e('0x2a')](respondWithResult(_0x30568e,0xc9))[_0x834e('0x44')](handleError(_0x30568e,null));};exports[_0x834e('0x29')]=function(_0x390c45,_0xf02f0d){if(_0x390c45[_0x834e('0x4b')]['id']){delete _0x390c45[_0x834e('0x4b')]['id'];}return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x390c45[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0xf02f0d,null))[_0x834e('0x2a')](saveUpdates(_0x390c45[_0x834e('0x4b')],null))[_0x834e('0x2a')](respondWithResult(_0xf02f0d,null))['catch'](handleError(_0xf02f0d,null));};exports[_0x834e('0x2b')]=function(_0x1f08b9,_0x4e73e0){return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x1f08b9['params']['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x4e73e0,null))[_0x834e('0x2a')](removeEntity(_0x4e73e0,null))[_0x834e('0x44')](handleError(_0x4e73e0,null));};exports[_0x834e('0x4c')]=function(_0x4288e4,_0xb77aab){return db[_0x834e('0x30')]['describe']()[_0x834e('0x2a')](respondWithResult(_0xb77aab,null))[_0x834e('0x44')](handleError(_0xb77aab,null));};
\ No newline at end of file
index 2176466..3b6f7b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e50=['request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','MemberReport','report_member','membername','interface','util','../../config/logger','api','moment'];(function(_0x4b0a01,_0x52d11f){var _0x5a0ac6=function(_0x5cb8d7){while(--_0x5cb8d7){_0x4b0a01['push'](_0x4b0a01['shift']());}};_0x5a0ac6(++_0x52d11f);}(_0x8e50,0x1ae));var _0x08e5=function(_0x27ebdb,_0x222493){_0x27ebdb=_0x27ebdb-0x0;var _0x4eb237=_0x8e50[_0x27ebdb];return _0x4eb237;};'use strict';var _=require('lodash');var util=require(_0x08e5('0x0'));var logger=require(_0x08e5('0x1'))(_0x08e5('0x2'));var moment=require(_0x08e5('0x3'));var BPromise=require('bluebird');var rp=require(_0x08e5('0x4'));var fs=require('fs');var path=require(_0x08e5('0x5'));var rimraf=require(_0x08e5('0x6'));var config=require(_0x08e5('0x7'));var attributes=require(_0x08e5('0x8'));module[_0x08e5('0x9')]=function(_0x1ebdf1,_0x5794c1){return _0x1ebdf1['define'](_0x08e5('0xa'),attributes,{'tableName':_0x08e5('0xb'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0x08e5('0xc'),_0x08e5('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb6dc=['membername','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','MemberReport','report_member','membername_interface'];(function(_0xce2fda,_0xc872c4){var _0x20ef6b=function(_0x555107){while(--_0x555107){_0xce2fda['push'](_0xce2fda['shift']());}};_0x20ef6b(++_0xc872c4);}(_0xb6dc,0xaa));var _0xcb6d=function(_0x5ae211,_0x4982c5){_0x5ae211=_0x5ae211-0x0;var _0x2d89e5=_0xb6dc[_0x5ae211];return _0x2d89e5;};'use strict';var _=require('lodash');var util=require(_0xcb6d('0x0'));var logger=require(_0xcb6d('0x1'))(_0xcb6d('0x2'));var moment=require(_0xcb6d('0x3'));var BPromise=require(_0xcb6d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcb6d('0x5'));var rimraf=require(_0xcb6d('0x6'));var config=require(_0xcb6d('0x7'));var attributes=require('./memberReport.attributes');module[_0xcb6d('0x8')]=function(_0x23b055,_0x4df1f6){return _0x23b055['define'](_0xcb6d('0x9'),attributes,{'tableName':_0xcb6d('0xa'),'paranoid':![],'indexes':[{'name':_0xcb6d('0xb'),'fields':[_0xcb6d('0xc'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index 179ecd7..245ec85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcf6=['model','include','map','stringify','CreateMemberReport','create','UpdateMemberReport','update','body','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','MemberReport,\x20%s,\x20%s','message','info','result','catch','GetMemberReport','MemberReport','options','raw','where','attributes','limit'];(function(_0x4521e3,_0x10a8a4){var _0x46a272=function(_0x2f4c64){while(--_0x2f4c64){_0x4521e3['push'](_0x4521e3['shift']());}};_0x46a272(++_0x10a8a4);}(_0xdcf6,0x1b6));var _0x6dcf=function(_0x208ff7,_0x12129a){_0x208ff7=_0x208ff7-0x0;var _0x266751=_0xdcf6[_0x208ff7];return _0x266751;};'use strict';var _=require('lodash');var util=require(_0x6dcf('0x0'));var moment=require(_0x6dcf('0x1'));var BPromise=require(_0x6dcf('0x2'));var rs=require(_0x6dcf('0x3'));var fs=require('fs');var Redis=require(_0x6dcf('0x4'));var db=require(_0x6dcf('0x5'))['db'];var utils=require(_0x6dcf('0x6'));var logger=require('../../config/logger')(_0x6dcf('0x7'));var config=require(_0x6dcf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6dcf('0x9')][_0x6dcf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5abd79,_0x56fdb2,_0x5766db){return new BPromise(function(_0x34517a,_0x4e2877){return client[_0x6dcf('0xb')](_0x5abd79,_0x5766db)[_0x6dcf('0xc')](function(_0x304a75){logger['info']('MemberReport,\x20%s,\x20%s',_0x56fdb2,'request\x20sent');logger[_0x6dcf('0xd')](_0x6dcf('0xe'),_0x56fdb2,_0x6dcf('0xf'),JSON['stringify'](_0x304a75));if(_0x304a75[_0x6dcf('0x10')]){if(_0x304a75[_0x6dcf('0x10')][_0x6dcf('0x11')]===0x1f4){logger[_0x6dcf('0x10')](_0x6dcf('0x12'),_0x56fdb2,_0x304a75[_0x6dcf('0x10')][_0x6dcf('0x13')]);return _0x4e2877(_0x304a75[_0x6dcf('0x10')][_0x6dcf('0x13')]);}logger[_0x6dcf('0x10')](_0x6dcf('0x12'),_0x56fdb2,_0x304a75[_0x6dcf('0x10')][_0x6dcf('0x13')]);return _0x34517a(_0x304a75[_0x6dcf('0x10')][_0x6dcf('0x13')]);}else{logger[_0x6dcf('0x14')](_0x6dcf('0x12'),_0x56fdb2,'request\x20sent');_0x34517a(_0x304a75[_0x6dcf('0x15')][_0x6dcf('0x13')]);}})[_0x6dcf('0x16')](function(_0x4874ff){logger[_0x6dcf('0x10')](_0x6dcf('0x12'),_0x56fdb2,_0x4874ff);_0x4e2877(_0x4874ff);});});}exports[_0x6dcf('0x17')]=function(_0x40b6ac){var _0x821c86=this;return new Promise(function(_0x83da87,_0x1bed56){return db[_0x6dcf('0x18')]['findAll']({'raw':_0x40b6ac[_0x6dcf('0x19')]?_0x40b6ac[_0x6dcf('0x19')][_0x6dcf('0x1a')]===undefined?!![]:![]:!![],'where':_0x40b6ac[_0x6dcf('0x19')]?_0x40b6ac[_0x6dcf('0x19')][_0x6dcf('0x1b')]||null:null,'attributes':_0x40b6ac[_0x6dcf('0x19')]?_0x40b6ac['options'][_0x6dcf('0x1c')]||null:null,'limit':_0x40b6ac['options']?_0x40b6ac[_0x6dcf('0x19')][_0x6dcf('0x1d')]||null:null,'include':_0x40b6ac[_0x6dcf('0x19')]?_0x40b6ac[_0x6dcf('0x19')]['include']?_['map'](_0x40b6ac[_0x6dcf('0x19')]['include'],function(_0x1df874){return{'model':db[_0x1df874[_0x6dcf('0x1e')]],'as':_0x1df874['as'],'attributes':_0x1df874[_0x6dcf('0x1c')],'include':_0x1df874[_0x6dcf('0x1f')]?_['map'](_0x1df874[_0x6dcf('0x1f')],function(_0x2b6dbe){return{'model':db[_0x2b6dbe[_0x6dcf('0x1e')]],'as':_0x2b6dbe['as'],'attributes':_0x2b6dbe[_0x6dcf('0x1c')],'include':_0x2b6dbe['include']?_[_0x6dcf('0x20')](_0x2b6dbe[_0x6dcf('0x1f')],function(_0x2dc909){return{'model':db[_0x2dc909[_0x6dcf('0x1e')]],'as':_0x2dc909['as'],'attributes':_0x2dc909[_0x6dcf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6dcf('0xc')](function(_0x3fad7e){logger[_0x6dcf('0x14')](_0x6dcf('0x17'),_0x40b6ac);logger[_0x6dcf('0xd')](_0x6dcf('0x17'),_0x40b6ac,JSON[_0x6dcf('0x21')](_0x3fad7e));_0x83da87(_0x3fad7e);})['catch'](function(_0x3a4356){logger[_0x6dcf('0x10')]('GetMemberReport',_0x3a4356['message'],_0x40b6ac);_0x1bed56(_0x821c86['error'](0x1f4,_0x3a4356['message']));});});};exports[_0x6dcf('0x22')]=function(_0x356ad1){var _0x4c106c=this;return new Promise(function(_0x3d4615,_0x271c8e){return db[_0x6dcf('0x18')][_0x6dcf('0x23')](_0x356ad1['body'],{'raw':_0x356ad1[_0x6dcf('0x19')]?_0x356ad1[_0x6dcf('0x19')][_0x6dcf('0x1a')]===undefined?!![]:![]:!![]})[_0x6dcf('0xc')](function(_0x1dd58c){logger[_0x6dcf('0x14')](_0x6dcf('0x22'),_0x356ad1);logger[_0x6dcf('0xd')](_0x6dcf('0x22'),_0x356ad1,JSON[_0x6dcf('0x21')](_0x1dd58c));_0x3d4615(_0x1dd58c);})[_0x6dcf('0x16')](function(_0x20f59d){logger[_0x6dcf('0x10')]('CreateMemberReport',_0x20f59d[_0x6dcf('0x13')],_0x356ad1);_0x271c8e(_0x4c106c[_0x6dcf('0x10')](0x1f4,_0x20f59d['message']));});});};exports[_0x6dcf('0x24')]=function(_0x212475){var _0x40587e=this;return new Promise(function(_0x9ed57e,_0x2d9d12){return db[_0x6dcf('0x18')][_0x6dcf('0x25')](_0x212475[_0x6dcf('0x26')],{'raw':_0x212475['options']?_0x212475[_0x6dcf('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x212475[_0x6dcf('0x19')]?_0x212475[_0x6dcf('0x19')][_0x6dcf('0x1b')]||null:null,'attributes':_0x212475[_0x6dcf('0x19')]?_0x212475[_0x6dcf('0x19')][_0x6dcf('0x1c')]||null:null,'limit':_0x212475['options']?_0x212475[_0x6dcf('0x19')]['limit']||null:null})[_0x6dcf('0xc')](function(_0x59f505){logger[_0x6dcf('0x14')](_0x6dcf('0x24'),_0x212475);logger[_0x6dcf('0xd')]('UpdateMemberReport',_0x212475,JSON[_0x6dcf('0x21')](_0x59f505));_0x9ed57e(_0x59f505);})['catch'](function(_0x310c79){logger['error'](_0x6dcf('0x24'),_0x310c79['message'],_0x212475);_0x2d9d12(_0x40587e[_0x6dcf('0x10')](0x1f4,_0x310c79[_0x6dcf('0x13')]));});});};
\ No newline at end of file
+var _0x5d58=['CreateMemberReport','create','body','then','UpdateMemberReport','update','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','MemberReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','map','include','model','debug'];(function(_0xea089d,_0x26a88d){var _0x3950e6=function(_0x156b6e){while(--_0x156b6e){_0xea089d['push'](_0xea089d['shift']());}};_0x3950e6(++_0x26a88d);}(_0x5d58,0x187));var _0x85d5=function(_0x2020da,_0x202707){_0x2020da=_0x2020da-0x0;var _0x39a71f=_0x5d58[_0x2020da];return _0x39a71f;};'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(_0x85d5('0x0'));var db=require(_0x85d5('0x1'))['db'];var utils=require('../../config/utils');var logger=require(_0x85d5('0x2'))(_0x85d5('0x3'));var config=require('../../config/environment');var jayson=require(_0x85d5('0x4'));var client=jayson[_0x85d5('0x5')][_0x85d5('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x46e7b4,_0x5f47ec,_0x98c963){return new BPromise(function(_0x3fecca,_0x4ca293){return client[_0x85d5('0x7')](_0x46e7b4,_0x98c963)['then'](function(_0x1098be){logger[_0x85d5('0x8')](_0x85d5('0x9'),_0x5f47ec,'request\x20sent');logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x5f47ec,_0x85d5('0xa'),JSON[_0x85d5('0xb')](_0x1098be));if(_0x1098be[_0x85d5('0xc')]){if(_0x1098be[_0x85d5('0xc')][_0x85d5('0xd')]===0x1f4){logger[_0x85d5('0xc')](_0x85d5('0x9'),_0x5f47ec,_0x1098be['error']['message']);return _0x4ca293(_0x1098be['error'][_0x85d5('0xe')]);}logger[_0x85d5('0xc')](_0x85d5('0x9'),_0x5f47ec,_0x1098be[_0x85d5('0xc')][_0x85d5('0xe')]);return _0x3fecca(_0x1098be[_0x85d5('0xc')][_0x85d5('0xe')]);}else{logger['info'](_0x85d5('0x9'),_0x5f47ec,_0x85d5('0xa'));_0x3fecca(_0x1098be[_0x85d5('0xf')][_0x85d5('0xe')]);}})[_0x85d5('0x10')](function(_0x3dc83c){logger[_0x85d5('0xc')](_0x85d5('0x9'),_0x5f47ec,_0x3dc83c);_0x4ca293(_0x3dc83c);});});}exports[_0x85d5('0x11')]=function(_0x17acb0){var _0x3eab37=this;return new Promise(function(_0x432bd6,_0x34b981){return db[_0x85d5('0x12')][_0x85d5('0x13')]({'raw':_0x17acb0[_0x85d5('0x14')]?_0x17acb0[_0x85d5('0x14')][_0x85d5('0x15')]===undefined?!![]:![]:!![],'where':_0x17acb0['options']?_0x17acb0[_0x85d5('0x14')][_0x85d5('0x16')]||null:null,'attributes':_0x17acb0['options']?_0x17acb0[_0x85d5('0x14')][_0x85d5('0x17')]||null:null,'limit':_0x17acb0['options']?_0x17acb0['options'][_0x85d5('0x18')]||null:null,'include':_0x17acb0['options']?_0x17acb0[_0x85d5('0x14')]['include']?_[_0x85d5('0x19')](_0x17acb0[_0x85d5('0x14')]['include'],function(_0x4e11c4){return{'model':db[_0x4e11c4['model']],'as':_0x4e11c4['as'],'attributes':_0x4e11c4['attributes'],'include':_0x4e11c4[_0x85d5('0x1a')]?_[_0x85d5('0x19')](_0x4e11c4[_0x85d5('0x1a')],function(_0x466bbd){return{'model':db[_0x466bbd[_0x85d5('0x1b')]],'as':_0x466bbd['as'],'attributes':_0x466bbd[_0x85d5('0x17')],'include':_0x466bbd['include']?_[_0x85d5('0x19')](_0x466bbd['include'],function(_0x1b3fae){return{'model':db[_0x1b3fae[_0x85d5('0x1b')]],'as':_0x1b3fae['as'],'attributes':_0x1b3fae[_0x85d5('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d0497){logger[_0x85d5('0x8')](_0x85d5('0x11'),_0x17acb0);logger[_0x85d5('0x1c')](_0x85d5('0x11'),_0x17acb0,JSON['stringify'](_0x2d0497));_0x432bd6(_0x2d0497);})[_0x85d5('0x10')](function(_0x476c8b){logger[_0x85d5('0xc')](_0x85d5('0x11'),_0x476c8b[_0x85d5('0xe')],_0x17acb0);_0x34b981(_0x3eab37['error'](0x1f4,_0x476c8b['message']));});});};exports[_0x85d5('0x1d')]=function(_0x24a0a3){var _0x2d1157=this;return new Promise(function(_0x176dd3,_0x5cc30c){return db['MemberReport'][_0x85d5('0x1e')](_0x24a0a3[_0x85d5('0x1f')],{'raw':_0x24a0a3['options']?_0x24a0a3['options'][_0x85d5('0x15')]===undefined?!![]:![]:!![]})[_0x85d5('0x20')](function(_0x5a442c){logger[_0x85d5('0x8')]('CreateMemberReport',_0x24a0a3);logger[_0x85d5('0x1c')](_0x85d5('0x1d'),_0x24a0a3,JSON['stringify'](_0x5a442c));_0x176dd3(_0x5a442c);})[_0x85d5('0x10')](function(_0x10449e){logger[_0x85d5('0xc')](_0x85d5('0x1d'),_0x10449e['message'],_0x24a0a3);_0x5cc30c(_0x2d1157['error'](0x1f4,_0x10449e[_0x85d5('0xe')]));});});};exports[_0x85d5('0x21')]=function(_0xbb5d60){var _0x3546d6=this;return new Promise(function(_0x228bf2,_0x5fb7f4){return db[_0x85d5('0x12')][_0x85d5('0x22')](_0xbb5d60[_0x85d5('0x1f')],{'raw':_0xbb5d60['options']?_0xbb5d60['options'][_0x85d5('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xbb5d60[_0x85d5('0x14')]?_0xbb5d60[_0x85d5('0x14')][_0x85d5('0x16')]||null:null,'attributes':_0xbb5d60[_0x85d5('0x14')]?_0xbb5d60[_0x85d5('0x14')][_0x85d5('0x17')]||null:null,'limit':_0xbb5d60[_0x85d5('0x14')]?_0xbb5d60['options'][_0x85d5('0x18')]||null:null})[_0x85d5('0x20')](function(_0x11ed28){logger[_0x85d5('0x8')]('UpdateMemberReport',_0xbb5d60);logger[_0x85d5('0x1c')](_0x85d5('0x21'),_0xbb5d60,JSON[_0x85d5('0xb')](_0x11ed28));_0x228bf2(_0x11ed28);})[_0x85d5('0x10')](function(_0x4d4c12){logger[_0x85d5('0xc')]('UpdateMemberReport',_0x4d4c12['message'],_0xbb5d60);_0x5fb7f4(_0x3546d6[_0x85d5('0xc')](0x1f4,_0x4d4c12['message']));});});};
\ No newline at end of file
index 11ebe86..27296fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a4=['../../components/interaction/service','../../config/environment','./migration.controller','get','index','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x72a4,0x191));var _0x472a=function(_0x7cb905,_0x5c2772){_0x7cb905=_0x7cb905-0x0;var _0x411552=_0x72a4[_0x7cb905];return _0x411552;};'use strict';var multer=require('multer');var util=require(_0x472a('0x0'));var path=require(_0x472a('0x1'));var timeout=require(_0x472a('0x2'));var express=require('express');var router=express[_0x472a('0x3')]();var fs_extra=require(_0x472a('0x4'));var auth=require(_0x472a('0x5'));var interaction=require(_0x472a('0x6'));var config=require(_0x472a('0x7'));var controller=require(_0x472a('0x8'));router[_0x472a('0x9')]('/',controller[_0x472a('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0xb1d3=['Router','fs-extra','../../components/auth/service','../../config/environment','./migration.controller','get','index','multer','express'];(function(_0xe93148,_0x559f9a){var _0x280d28=function(_0x1f15f0){while(--_0x1f15f0){_0xe93148['push'](_0xe93148['shift']());}};_0x280d28(++_0x559f9a);}(_0xb1d3,0xe8));var _0x3b1d=function(_0x535a1f,_0x563e7d){_0x535a1f=_0x535a1f-0x0;var _0x3516d3=_0xb1d3[_0x535a1f];return _0x3516d3;};'use strict';var multer=require(_0x3b1d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3b1d('0x1'));var router=express[_0x3b1d('0x2')]();var fs_extra=require(_0x3b1d('0x3'));var auth=require(_0x3b1d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3b1d('0x5'));var controller=require(_0x3b1d('0x6'));router[_0x3b1d('0x7')]('/',controller[_0x3b1d('0x8')]);module['exports']=router;
\ No newline at end of file
index 839ad6a..430ffe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf767=['sequelize','exports','STRING'];(function(_0x23cc65,_0x577f17){var _0x277f5f=function(_0x5df966){while(--_0x5df966){_0x23cc65['push'](_0x23cc65['shift']());}};_0x277f5f(++_0x577f17);}(_0xf767,0xb1));var _0x7f76=function(_0x343e44,_0x519af9){_0x343e44=_0x343e44-0x0;var _0xa5130e=_0xf767[_0x343e44];return _0xa5130e;};'use strict';var Sequelize=require(_0x7f76('0x0'));module[_0x7f76('0x1')]={'version':{'type':Sequelize[_0x7f76('0x2')],'unique':'version'}};
\ No newline at end of file
+var _0x01ed=['sequelize','exports','STRING','version'];(function(_0x571508,_0x242763){var _0x502dfc=function(_0x5bd4c1){while(--_0x5bd4c1){_0x571508['push'](_0x571508['shift']());}};_0x502dfc(++_0x242763);}(_0x01ed,0x14c));var _0xd01e=function(_0x14a1f4,_0x3f556e){_0x14a1f4=_0x14a1f4-0x0;var _0x3060fa=_0x01ed[_0x14a1f4];return _0x3060fa;};'use strict';var Sequelize=require(_0xd01e('0x0'));module[_0xd01e('0x1')]={'version':{'type':Sequelize[_0xd01e('0x2')],'unique':_0xd01e('0x3')}};
\ No newline at end of file
index 6633dfa..97c0167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c51=['lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Migration','include','rows','catch','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra'];(function(_0x3c8e5c,_0x58aec2){var _0x36e66f=function(_0x52079b){while(--_0x52079b){_0x3c8e5c['push'](_0x3c8e5c['shift']());}};_0x36e66f(++_0x58aec2);}(_0x6c51,0x19a));var _0x16c5=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6c51[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x16c5('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x16c5('0x1'));var moment=require(_0x16c5('0x2'));var BPromise=require(_0x16c5('0x3'));var Mustache=require(_0x16c5('0x4'));var util=require(_0x16c5('0x5'));var path=require(_0x16c5('0x6'));var sox=require(_0x16c5('0x7'));var csv=require('to-csv');var ejs=require(_0x16c5('0x8'));var fs=require('fs');var fs_extra=require(_0x16c5('0x9'));var _=require(_0x16c5('0xa'));var squel=require(_0x16c5('0xb'));var crypto=require(_0x16c5('0xc'));var jsforce=require(_0x16c5('0xd'));var deskjs=require(_0x16c5('0xe'));var toCsv=require(_0x16c5('0xf'));var querystring=require(_0x16c5('0x10'));var Papa=require(_0x16c5('0x11'));var Redis=require(_0x16c5('0x12'));var authService=require(_0x16c5('0x13'));var qs=require(_0x16c5('0x14'));var as=require(_0x16c5('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x16c5('0x16'))(_0x16c5('0x17'));var utils=require(_0x16c5('0x18'));var config=require(_0x16c5('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35d2c9,_0x51d924){_0x51d924=_0x51d924||0xcc;return function(_0x3fb8ce){if(_0x3fb8ce){return _0x35d2c9[_0x16c5('0x1a')](_0x51d924);}return _0x35d2c9[_0x16c5('0x1b')](_0x51d924)[_0x16c5('0x1c')]();};}function respondWithResult(_0x51e03d,_0x20f652){_0x20f652=_0x20f652||0xc8;return function(_0x224d18){if(_0x224d18){return _0x51e03d[_0x16c5('0x1b')](_0x20f652)[_0x16c5('0x1d')](_0x224d18);}};}function respondWithFilteredResult(_0x1603ab,_0x2a6ae6){return function(_0x12bb4b){if(_0x12bb4b){var _0x2f3c1f=typeof _0x2a6ae6[_0x16c5('0x1e')]===_0x16c5('0x1f')&&typeof _0x2a6ae6['limit']===_0x16c5('0x1f');var _0x3a10ed=_0x12bb4b[_0x16c5('0x20')];var _0x16d096=_0x2f3c1f?0x0:_0x2a6ae6[_0x16c5('0x1e')];var _0x3ff97b=_0x2f3c1f?_0x12bb4b[_0x16c5('0x20')]:_0x2a6ae6[_0x16c5('0x1e')]+_0x2a6ae6['limit'];var _0x342f62;if(_0x3ff97b>=_0x3a10ed){_0x3ff97b=_0x3a10ed;_0x342f62=0xc8;}else{_0x342f62=0xce;}_0x1603ab['status'](_0x342f62);return _0x1603ab['set'](_0x16c5('0x21'),_0x16d096+'-'+_0x3ff97b+'/'+_0x3a10ed)[_0x16c5('0x1d')](_0x12bb4b);}return null;};}function patchUpdates(_0x18973a){return function(_0x5e2509){try{jsonpatch[_0x16c5('0x22')](_0x5e2509,_0x18973a,!![]);}catch(_0x491ae9){return BPromise['reject'](_0x491ae9);}return _0x5e2509[_0x16c5('0x23')]();};}function saveUpdates(_0x3385b2,_0x1ce8da){return function(_0xf8f4b0){if(_0xf8f4b0){return _0xf8f4b0[_0x16c5('0x24')](_0x3385b2)['then'](function(_0x4b73d8){return _0x4b73d8;});}return null;};}function removeEntity(_0x5acd20,_0x518281){return function(_0x2c597e){if(_0x2c597e){return _0x2c597e[_0x16c5('0x25')]()[_0x16c5('0x26')](function(){_0x5acd20[_0x16c5('0x1b')](0xcc)[_0x16c5('0x1c')]();});}};}function handleEntityNotFound(_0xcfcc7,_0x1750d1){return function(_0x3e95c9){if(!_0x3e95c9){_0xcfcc7[_0x16c5('0x1a')](0x194);}return _0x3e95c9;};}function handleError(_0x1b3da1,_0x22bd2f){_0x22bd2f=_0x22bd2f||0x1f4;return function(_0x5a71ef){logger[_0x16c5('0x27')](_0x5a71ef[_0x16c5('0x28')]);if(_0x5a71ef['name']){delete _0x5a71ef[_0x16c5('0x29')];}_0x1b3da1[_0x16c5('0x1b')](_0x22bd2f)[_0x16c5('0x2a')](_0x5a71ef);};}exports['index']=function(_0x18ad83,_0x2998fb){var _0xa7a0d6={},_0x37a583={},_0x2f028d={'count':0x0,'rows':[]};var _0x17b895=_[_0x16c5('0x2b')](db['Migration'][_0x16c5('0x2c')],function(_0x30ff36){return{'name':_0x30ff36[_0x16c5('0x2d')],'type':_0x30ff36['type'][_0x16c5('0x2e')]};});_0x37a583['model']=_[_0x16c5('0x2b')](_0x17b895,_0x16c5('0x29'));_0x37a583[_0x16c5('0x2f')]=_[_0x16c5('0x30')](_0x18ad83[_0x16c5('0x2f')]);_0x37a583[_0x16c5('0x31')]=_[_0x16c5('0x32')](_0x37a583[_0x16c5('0x33')],_0x37a583[_0x16c5('0x2f')]);_0xa7a0d6[_0x16c5('0x34')]=_['intersection'](_0x37a583[_0x16c5('0x33')],qs['fields'](_0x18ad83[_0x16c5('0x2f')][_0x16c5('0x35')]));_0xa7a0d6['attributes']=_0xa7a0d6[_0x16c5('0x34')][_0x16c5('0x36')]?_0xa7a0d6[_0x16c5('0x34')]:_0x37a583[_0x16c5('0x33')];if(!_0x18ad83[_0x16c5('0x2f')][_0x16c5('0x37')](_0x16c5('0x38'))){_0xa7a0d6['limit']=qs['limit'](_0x18ad83[_0x16c5('0x2f')]['limit']);_0xa7a0d6['offset']=qs['offset'](_0x18ad83[_0x16c5('0x2f')]['offset']);}_0xa7a0d6[_0x16c5('0x39')]=qs[_0x16c5('0x3a')](_0x18ad83['query'][_0x16c5('0x3a')]);_0xa7a0d6[_0x16c5('0x3b')]=qs[_0x16c5('0x31')](_[_0x16c5('0x3c')](_0x18ad83[_0x16c5('0x2f')],_0x37a583['filters']),_0x17b895);if(_0x18ad83['query'][_0x16c5('0x3d')]){_0xa7a0d6['where']=_[_0x16c5('0x3e')](_0xa7a0d6[_0x16c5('0x3b')],{'$or':_['map'](_0x17b895,function(_0x42f8d3){if(_0x42f8d3[_0x16c5('0x3f')]!==_0x16c5('0x40')){var _0x5ab539={};_0x5ab539[_0x42f8d3[_0x16c5('0x29')]]={'$like':'%'+_0x18ad83[_0x16c5('0x2f')][_0x16c5('0x3d')]+'%'};return _0x5ab539;}})});}_0xa7a0d6=_[_0x16c5('0x3e')]({},_0xa7a0d6,_0x18ad83[_0x16c5('0x41')]);var _0x3c0b6b={'where':_0xa7a0d6[_0x16c5('0x3b')]};return db[_0x16c5('0x42')][_0x16c5('0x20')](_0x3c0b6b)[_0x16c5('0x26')](function(_0x2baed4){_0x2f028d[_0x16c5('0x20')]=_0x2baed4;if(_0x18ad83[_0x16c5('0x2f')]['includeAll']){_0xa7a0d6[_0x16c5('0x43')]=[{'all':!![]}];}return db[_0x16c5('0x42')]['findAll'](_0xa7a0d6);})['then'](function(_0x2a6747){_0x2f028d[_0x16c5('0x44')]=_0x2a6747;return _0x2f028d;})[_0x16c5('0x26')](respondWithFilteredResult(_0x2998fb,_0xa7a0d6))[_0x16c5('0x45')](handleError(_0x2998fb,null));};
\ No newline at end of file
+var _0xfb75=['save','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filters','filter','VIRTUAL','merge','options','Migration','includeAll','include','rows','catch','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x218019,_0x590156){var _0x185097=function(_0x1a3705){while(--_0x1a3705){_0x218019['push'](_0x218019['shift']());}};_0x185097(++_0x590156);}(_0xfb75,0xad));var _0x5fb7=function(_0x3210cf,_0x471962){_0x3210cf=_0x3210cf-0x0;var _0x3c3b90=_0xfb75[_0x3210cf];return _0x3c3b90;};'use strict';var emlformat=require(_0x5fb7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5fb7('0x1'));var jsonpatch=require(_0x5fb7('0x2'));var rp=require(_0x5fb7('0x3'));var moment=require('moment');var BPromise=require(_0x5fb7('0x4'));var Mustache=require(_0x5fb7('0x5'));var util=require('util');var path=require('path');var sox=require(_0x5fb7('0x6'));var csv=require(_0x5fb7('0x7'));var ejs=require(_0x5fb7('0x8'));var fs=require('fs');var fs_extra=require(_0x5fb7('0x9'));var _=require(_0x5fb7('0xa'));var squel=require(_0x5fb7('0xb'));var crypto=require(_0x5fb7('0xc'));var jsforce=require(_0x5fb7('0xd'));var deskjs=require(_0x5fb7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5fb7('0xf'));var Papa=require(_0x5fb7('0x10'));var Redis=require(_0x5fb7('0x11'));var authService=require(_0x5fb7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5fb7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5fb7('0x14'))('api');var utils=require(_0x5fb7('0x15'));var config=require(_0x5fb7('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x5fb7('0x17'))['db'];function respondWithStatusCode(_0x2b3d3b,_0x19a780){_0x19a780=_0x19a780||0xcc;return function(_0x1d7a5){if(_0x1d7a5){return _0x2b3d3b['sendStatus'](_0x19a780);}return _0x2b3d3b[_0x5fb7('0x18')](_0x19a780)[_0x5fb7('0x19')]();};}function respondWithResult(_0x338769,_0x137da7){_0x137da7=_0x137da7||0xc8;return function(_0x1a6725){if(_0x1a6725){return _0x338769[_0x5fb7('0x18')](_0x137da7)[_0x5fb7('0x1a')](_0x1a6725);}};}function respondWithFilteredResult(_0x2d3625,_0x2fbe70){return function(_0x5f0220){if(_0x5f0220){var _0xa1b297=typeof _0x2fbe70[_0x5fb7('0x1b')]===_0x5fb7('0x1c')&&typeof _0x2fbe70[_0x5fb7('0x1d')]===_0x5fb7('0x1c');var _0x12e63e=_0x5f0220['count'];var _0x4436f8=_0xa1b297?0x0:_0x2fbe70[_0x5fb7('0x1b')];var _0x4acf88=_0xa1b297?_0x5f0220[_0x5fb7('0x1e')]:_0x2fbe70[_0x5fb7('0x1b')]+_0x2fbe70[_0x5fb7('0x1d')];var _0x1f05ab;if(_0x4acf88>=_0x12e63e){_0x4acf88=_0x12e63e;_0x1f05ab=0xc8;}else{_0x1f05ab=0xce;}_0x2d3625['status'](_0x1f05ab);return _0x2d3625[_0x5fb7('0x1f')]('Content-Range',_0x4436f8+'-'+_0x4acf88+'/'+_0x12e63e)[_0x5fb7('0x1a')](_0x5f0220);}return null;};}function patchUpdates(_0xdea4e6){return function(_0x4173c2){try{jsonpatch[_0x5fb7('0x20')](_0x4173c2,_0xdea4e6,!![]);}catch(_0x37e9e4){return BPromise[_0x5fb7('0x21')](_0x37e9e4);}return _0x4173c2[_0x5fb7('0x22')]();};}function saveUpdates(_0xd1b044,_0x77af14){return function(_0x1704e4){if(_0x1704e4){return _0x1704e4['update'](_0xd1b044)[_0x5fb7('0x23')](function(_0x136024){return _0x136024;});}return null;};}function removeEntity(_0x834b0f,_0x40523d){return function(_0x485f46){if(_0x485f46){return _0x485f46[_0x5fb7('0x24')]()[_0x5fb7('0x23')](function(){_0x834b0f[_0x5fb7('0x18')](0xcc)[_0x5fb7('0x19')]();});}};}function handleEntityNotFound(_0x33bba8,_0x1bab15){return function(_0x16f9b4){if(!_0x16f9b4){_0x33bba8[_0x5fb7('0x25')](0x194);}return _0x16f9b4;};}function handleError(_0x27e529,_0x21fc18){_0x21fc18=_0x21fc18||0x1f4;return function(_0xaff294){logger['error'](_0xaff294[_0x5fb7('0x26')]);if(_0xaff294[_0x5fb7('0x27')]){delete _0xaff294['name'];}_0x27e529[_0x5fb7('0x18')](_0x21fc18)[_0x5fb7('0x28')](_0xaff294);};}exports[_0x5fb7('0x29')]=function(_0x3bb5f8,_0x25fdc8){var _0x365ced={},_0x3ba087={},_0x59782d={'count':0x0,'rows':[]};var _0x3f1a76=_[_0x5fb7('0x2a')](db['Migration'][_0x5fb7('0x2b')],function(_0x503a0e){return{'name':_0x503a0e[_0x5fb7('0x2c')],'type':_0x503a0e[_0x5fb7('0x2d')][_0x5fb7('0x2e')]};});_0x3ba087[_0x5fb7('0x2f')]=_[_0x5fb7('0x2a')](_0x3f1a76,_0x5fb7('0x27'));_0x3ba087[_0x5fb7('0x30')]=_[_0x5fb7('0x31')](_0x3bb5f8[_0x5fb7('0x30')]);_0x3ba087['filters']=_[_0x5fb7('0x32')](_0x3ba087[_0x5fb7('0x2f')],_0x3ba087[_0x5fb7('0x30')]);_0x365ced['attributes']=_[_0x5fb7('0x32')](_0x3ba087[_0x5fb7('0x2f')],qs['fields'](_0x3bb5f8[_0x5fb7('0x30')][_0x5fb7('0x33')]));_0x365ced[_0x5fb7('0x34')]=_0x365ced[_0x5fb7('0x34')][_0x5fb7('0x35')]?_0x365ced['attributes']:_0x3ba087[_0x5fb7('0x2f')];if(!_0x3bb5f8['query'][_0x5fb7('0x36')](_0x5fb7('0x37'))){_0x365ced[_0x5fb7('0x1d')]=qs[_0x5fb7('0x1d')](_0x3bb5f8['query'][_0x5fb7('0x1d')]);_0x365ced[_0x5fb7('0x1b')]=qs[_0x5fb7('0x1b')](_0x3bb5f8[_0x5fb7('0x30')][_0x5fb7('0x1b')]);}_0x365ced[_0x5fb7('0x38')]=qs['sort'](_0x3bb5f8['query']['sort']);_0x365ced[_0x5fb7('0x39')]=qs['filters'](_[_0x5fb7('0x3a')](_0x3bb5f8[_0x5fb7('0x30')],_0x3ba087[_0x5fb7('0x3b')]),_0x3f1a76);if(_0x3bb5f8['query'][_0x5fb7('0x3c')]){_0x365ced[_0x5fb7('0x39')]=_['merge'](_0x365ced[_0x5fb7('0x39')],{'$or':_[_0x5fb7('0x2a')](_0x3f1a76,function(_0x486f4d){if(_0x486f4d[_0x5fb7('0x2d')]!==_0x5fb7('0x3d')){var _0x42fec7={};_0x42fec7[_0x486f4d[_0x5fb7('0x27')]]={'$like':'%'+_0x3bb5f8[_0x5fb7('0x30')][_0x5fb7('0x3c')]+'%'};return _0x42fec7;}})});}_0x365ced=_[_0x5fb7('0x3e')]({},_0x365ced,_0x3bb5f8[_0x5fb7('0x3f')]);var _0x2d439e={'where':_0x365ced[_0x5fb7('0x39')]};return db[_0x5fb7('0x40')][_0x5fb7('0x1e')](_0x2d439e)['then'](function(_0x13ea6e){_0x59782d[_0x5fb7('0x1e')]=_0x13ea6e;if(_0x3bb5f8['query'][_0x5fb7('0x41')]){_0x365ced[_0x5fb7('0x42')]=[{'all':!![]}];}return db[_0x5fb7('0x40')]['findAll'](_0x365ced);})['then'](function(_0x485703){_0x59782d[_0x5fb7('0x43')]=_0x485703;return _0x59782d;})[_0x5fb7('0x23')](respondWithFilteredResult(_0x25fdc8,_0x365ced))[_0x5fb7('0x44')](handleError(_0x25fdc8,null));};
\ No newline at end of file
index a868c9a..58e3927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x739b=['path','rimraf','./migration.attributes','Migration','migrations','lodash','util','api','moment'];(function(_0x32e0f5,_0x3fd406){var _0x3c4f68=function(_0x2479d8){while(--_0x2479d8){_0x32e0f5['push'](_0x32e0f5['shift']());}};_0x3c4f68(++_0x3fd406);}(_0x739b,0x15b));var _0xb739=function(_0x53df19,_0x545a53){_0x53df19=_0x53df19-0x0;var _0x10a63d=_0x739b[_0x53df19];return _0x10a63d;};'use strict';var _=require(_0xb739('0x0'));var util=require(_0xb739('0x1'));var logger=require('../../config/logger')(_0xb739('0x2'));var moment=require(_0xb739('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb739('0x4'));var rimraf=require(_0xb739('0x5'));var config=require('../../config/environment');var attributes=require(_0xb739('0x6'));module['exports']=function(_0x56302c,_0x41c8b8){return _0x56302c['define'](_0xb739('0x7'),attributes,{'tableName':_0xb739('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc556=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','define','Migration','lodash'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xc556,0xe9));var _0x6c55=function(_0x2e02ae,_0x4a4623){_0x2e02ae=_0x2e02ae-0x0;var _0x375a6b=_0xc556[_0x2e02ae];return _0x375a6b;};'use strict';var _=require(_0x6c55('0x0'));var util=require(_0x6c55('0x1'));var logger=require(_0x6c55('0x2'))(_0x6c55('0x3'));var moment=require(_0x6c55('0x4'));var BPromise=require(_0x6c55('0x5'));var rp=require(_0x6c55('0x6'));var fs=require('fs');var path=require(_0x6c55('0x7'));var rimraf=require(_0x6c55('0x8'));var config=require(_0x6c55('0x9'));var attributes=require(_0x6c55('0xa'));module['exports']=function(_0x26055b,_0x577f06){return _0x26055b[_0x6c55('0xb')](_0x6c55('0xc'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 680a355..c22aec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b1=['catch','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','Migration,\x20%s,\x20%s','message','info','result'];(function(_0x92477f,_0x461766){var _0x3da00d=function(_0x28b698){while(--_0x28b698){_0x92477f['push'](_0x92477f['shift']());}};_0x3da00d(++_0x461766);}(_0xb6b1,0x17b));var _0x1b6b=function(_0x5cbf0e,_0x4cd140){_0x5cbf0e=_0x5cbf0e-0x0;var _0x1c76f8=_0xb6b1[_0x5cbf0e];return _0x1c76f8;};'use strict';var _=require(_0x1b6b('0x0'));var util=require('util');var moment=require(_0x1b6b('0x1'));var BPromise=require('bluebird');var rs=require(_0x1b6b('0x2'));var fs=require('fs');var Redis=require(_0x1b6b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b6b('0x4'));var logger=require('../../config/logger')(_0x1b6b('0x5'));var config=require(_0x1b6b('0x6'));var jayson=require(_0x1b6b('0x7'));var client=jayson[_0x1b6b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41d09e,_0x51cfed,_0xae4115){return new BPromise(function(_0x5042f7,_0x21f403){return client[_0x1b6b('0x9')](_0x41d09e,_0xae4115)[_0x1b6b('0xa')](function(_0x29258a){logger['info']('Migration,\x20%s,\x20%s',_0x51cfed,_0x1b6b('0xb'));logger[_0x1b6b('0xc')](_0x1b6b('0xd'),_0x51cfed,_0x1b6b('0xb'),JSON[_0x1b6b('0xe')](_0x29258a));if(_0x29258a[_0x1b6b('0xf')]){if(_0x29258a[_0x1b6b('0xf')]['code']===0x1f4){logger[_0x1b6b('0xf')](_0x1b6b('0x10'),_0x51cfed,_0x29258a[_0x1b6b('0xf')]['message']);return _0x21f403(_0x29258a[_0x1b6b('0xf')]['message']);}logger['error'](_0x1b6b('0x10'),_0x51cfed,_0x29258a[_0x1b6b('0xf')][_0x1b6b('0x11')]);return _0x5042f7(_0x29258a[_0x1b6b('0xf')][_0x1b6b('0x11')]);}else{logger[_0x1b6b('0x12')](_0x1b6b('0x10'),_0x51cfed,'request\x20sent');_0x5042f7(_0x29258a[_0x1b6b('0x13')][_0x1b6b('0x11')]);}})[_0x1b6b('0x14')](function(_0x33dc7e){logger['error'](_0x1b6b('0x10'),_0x51cfed,_0x33dc7e);_0x21f403(_0x33dc7e);});});}
\ No newline at end of file
+var _0xbfcc=['Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','request','info'];(function(_0x1ab327,_0x424250){var _0x5e43cf=function(_0xec4983){while(--_0xec4983){_0x1ab327['push'](_0x1ab327['shift']());}};_0x5e43cf(++_0x424250);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x2b4448,_0x5bcc69){_0x2b4448=_0x2b4448-0x0;var _0xb4b465=_0xbfcc[_0x2b4448];return _0xb4b465;};'use strict';var _=require(_0xcbfc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcbfc('0x1'));var rs=require(_0xcbfc('0x2'));var fs=require('fs');var Redis=require(_0xcbfc('0x3'));var db=require(_0xcbfc('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xcbfc('0x5'));var client=jayson[_0xcbfc('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b3917,_0x5a2be0,_0x2ea130){return new BPromise(function(_0x1f8b71,_0x1b1377){return client[_0xcbfc('0x7')](_0x1b3917,_0x2ea130)['then'](function(_0x2e7097){logger[_0xcbfc('0x8')](_0xcbfc('0x9'),_0x5a2be0,_0xcbfc('0xa'));logger[_0xcbfc('0xb')](_0xcbfc('0xc'),_0x5a2be0,'request\x20sent',JSON[_0xcbfc('0xd')](_0x2e7097));if(_0x2e7097[_0xcbfc('0xe')]){if(_0x2e7097[_0xcbfc('0xe')][_0xcbfc('0xf')]===0x1f4){logger[_0xcbfc('0xe')]('Migration,\x20%s,\x20%s',_0x5a2be0,_0x2e7097[_0xcbfc('0xe')][_0xcbfc('0x10')]);return _0x1b1377(_0x2e7097[_0xcbfc('0xe')]['message']);}logger[_0xcbfc('0xe')](_0xcbfc('0x9'),_0x5a2be0,_0x2e7097[_0xcbfc('0xe')][_0xcbfc('0x10')]);return _0x1f8b71(_0x2e7097[_0xcbfc('0xe')]['message']);}else{logger[_0xcbfc('0x8')](_0xcbfc('0x9'),_0x5a2be0,_0xcbfc('0xa'));_0x1f8b71(_0x2e7097[_0xcbfc('0x11')]['message']);}})['catch'](function(_0x418f18){logger[_0xcbfc('0xe')](_0xcbfc('0x9'),_0x5a2be0,_0x418f18);_0x1b1377(_0x418f18);});});}
\ No newline at end of file
index 59dcbfd..1d9bccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x431b=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','isAuthenticated','get','show','create','put','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x431b,0x18d));var _0xb431=function(_0x1f707f,_0xb97d26){_0x1f707f=_0x1f707f-0x0;var _0x30368b=_0x431b[_0x1f707f];return _0x30368b;};'use strict';var multer=require(_0xb431('0x0'));var util=require(_0xb431('0x1'));var path=require(_0xb431('0x2'));var timeout=require('connect-timeout');var express=require(_0xb431('0x3'));var router=express[_0xb431('0x4')]();var fs_extra=require(_0xb431('0x5'));var auth=require(_0xb431('0x6'));var interaction=require(_0xb431('0x7'));var config=require(_0xb431('0x8'));var controller=require(_0xb431('0x9'));router['get']('/',auth[_0xb431('0xa')](),controller['index']);router[_0xb431('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xb431('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb431('0xd')]);router[_0xb431('0xe')](_0xb431('0xf'),auth[_0xb431('0xa')](),controller[_0xb431('0x10')]);router[_0xb431('0x11')](_0xb431('0xf'),auth['isAuthenticated'](),controller[_0xb431('0x12')]);module[_0xb431('0x13')]=router;
\ No newline at end of file
+var _0x41d0=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','index','/:id','show','create','update','destroy','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x41d0,0x1c6));var _0x041d=function(_0x20f3a3,_0xe879a){_0x20f3a3=_0x20f3a3-0x0;var _0x4ecd05=_0x41d0[_0x20f3a3];return _0x4ecd05;};'use strict';var multer=require(_0x041d('0x0'));var util=require(_0x041d('0x1'));var path=require(_0x041d('0x2'));var timeout=require(_0x041d('0x3'));var express=require('express');var router=express[_0x041d('0x4')]();var fs_extra=require(_0x041d('0x5'));var auth=require(_0x041d('0x6'));var interaction=require(_0x041d('0x7'));var config=require(_0x041d('0x8'));var controller=require(_0x041d('0x9'));router[_0x041d('0xa')]('/',auth[_0x041d('0xb')](),controller[_0x041d('0xc')]);router['get'](_0x041d('0xd'),auth['isAuthenticated'](),controller[_0x041d('0xe')]);router['post']('/',auth[_0x041d('0xb')](),controller[_0x041d('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x041d('0x10')]);router['delete'](_0x041d('0xd'),auth['isAuthenticated'](),controller[_0x041d('0x11')]);module[_0x041d('0x12')]=router;
\ No newline at end of file
index d51e181..4e2060d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7edf=['turn','STRING','sequelize','ENUM','externip','stun'];(function(_0x51377e,_0x41a015){var _0x549a81=function(_0x3c3a4f){while(--_0x3c3a4f){_0x51377e['push'](_0x51377e['shift']());}};_0x549a81(++_0x41a015);}(_0x7edf,0x18e));var _0xf7ed=function(_0x22cc16,_0x1f4fa2){_0x22cc16=_0x22cc16-0x0;var _0x399b70=_0x7edf[_0x22cc16];return _0x399b70;};'use strict';var Sequelize=require(_0xf7ed('0x0'));module['exports']={'type':{'type':Sequelize[_0xf7ed('0x1')]('localnet',_0xf7ed('0x2'),_0xf7ed('0x3'),_0xf7ed('0x4'))},'value':{'type':Sequelize[_0xf7ed('0x5')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xf7ed('0x5')]}};
\ No newline at end of file
+var _0xc9ce=['STRING','sequelize','exports','localnet','externip','stun'];(function(_0x4e0b8c,_0x443f31){var _0x633ecc=function(_0x1f1f36){while(--_0x1f1f36){_0x4e0b8c['push'](_0x4e0b8c['shift']());}};_0x633ecc(++_0x443f31);}(_0xc9ce,0xd3));var _0xec9c=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc9ce[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0xec9c('0x0'));module[_0xec9c('0x1')]={'type':{'type':Sequelize['ENUM'](_0xec9c('0x2'),_0xec9c('0x3'),_0xec9c('0x4'),'turn')},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xec9c('0x5')]}};
\ No newline at end of file
index e1842d9..50f9d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a17=['server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','root','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','Reload','chan_sip.so','update','/etc/asterisk/stun_xcally.conf','util','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','status','json','limit','undefined','count','offset','set','Content-Range','destroy','end','sendStatus','stack','name','send','map','Network','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','find','create','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','TURN'];(function(_0x300fe0,_0x4e03fe){var _0x288eda=function(_0x575b03){while(--_0x575b03){_0x300fe0['push'](_0x300fe0['shift']());}};_0x288eda(++_0x4e03fe);}(_0x6a17,0x1b5));var _0x76a1=function(_0x2de667,_0xd0668a){_0x2de667=_0x2de667-0x0;var _0x16a11d=_0x6a17[_0x2de667];return _0x16a11d;};'use strict';var util=require(_0x76a1('0x0'));var path=require('path');var ejs=require(_0x76a1('0x1'));var fs=require('fs');var _=require(_0x76a1('0x2'));var qs=require(_0x76a1('0x3'));var logger=require(_0x76a1('0x4'))(_0x76a1('0x5'));var config=require(_0x76a1('0x6'));var db=require('../../mysqldb')['db'];var jayson=require(_0x76a1('0x7'));var client=jayson[_0x76a1('0x8')][_0x76a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1a38aa,_0x2a08f1,_0x5eda08,_0x57fa82){return new Promise(function(_0x3a2345,_0x1e6d9a){var _0x326142=_0x57fa82||client;return _0x326142[_0x76a1('0xa')](_0x1a38aa,_0x5eda08)[_0x76a1('0xb')](function(_0x153269){logger[_0x76a1('0xc')](_0x76a1('0xd'),_0x2a08f1,'request\x20sent');logger[_0x76a1('0xe')]('Network,\x20%s,\x20%s,\x20%s',_0x2a08f1,_0x76a1('0xf'),JSON[_0x76a1('0x10')](_0x153269));if(_0x153269[_0x76a1('0x11')]){if(_0x153269[_0x76a1('0x11')]['code']===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x2a08f1,_0x153269[_0x76a1('0x11')]['message']);return _0x1e6d9a(_0x153269[_0x76a1('0x11')][_0x76a1('0x12')]);}logger[_0x76a1('0x11')]('Network,\x20%s,\x20%s',_0x2a08f1,_0x153269[_0x76a1('0x11')]['message']);return _0x3a2345(_0x153269['error'][_0x76a1('0x12')]);}else{logger[_0x76a1('0xc')]('Network,\x20%s,\x20%s',_0x2a08f1,_0x76a1('0xf'));_0x3a2345(_0x153269[_0x76a1('0x13')][_0x76a1('0x12')]);}})[_0x76a1('0x14')](function(_0x592553){logger[_0x76a1('0x11')](_0x76a1('0xd'),_0x2a08f1,_0x592553);_0x1e6d9a(_0x592553);});});}function respondWithResult(_0x45c3b3,_0x28ae96){_0x28ae96=_0x28ae96||0xc8;return function(_0x29860a){if(_0x29860a){return _0x45c3b3[_0x76a1('0x15')](_0x28ae96)[_0x76a1('0x16')](_0x29860a);}};}function respondWithFilteredResult(_0x1c5f0d,_0x22a180){return function(_0x3ddd68){if(_0x3ddd68){var _0x29af7f=typeof _0x22a180['offset']==='undefined'&&typeof _0x22a180[_0x76a1('0x17')]===_0x76a1('0x18');var _0x39378d=_0x3ddd68[_0x76a1('0x19')];var _0x37938c=_0x29af7f?0x0:_0x22a180[_0x76a1('0x1a')];var _0x103585=_0x29af7f?_0x3ddd68[_0x76a1('0x19')]:_0x22a180[_0x76a1('0x1a')]+_0x22a180[_0x76a1('0x17')];var _0x1a3d94;if(_0x103585>=_0x39378d){_0x103585=_0x39378d;_0x1a3d94=0xc8;}else{_0x1a3d94=0xce;}_0x1c5f0d[_0x76a1('0x15')](_0x1a3d94);return _0x1c5f0d[_0x76a1('0x1b')](_0x76a1('0x1c'),_0x37938c+'-'+_0x103585+'/'+_0x39378d)[_0x76a1('0x16')](_0x3ddd68);}return null;};}function saveUpdates(_0x55c520){return function(_0x280d27){if(_0x280d27){return _0x280d27['update'](_0x55c520)[_0x76a1('0xb')](function(_0x1b36b0){return _0x1b36b0;});}return null;};}function removeEntity(_0x5a4e50){return function(_0x2c5223){if(_0x2c5223){return _0x2c5223[_0x76a1('0x1d')]()['then'](function(){_0x5a4e50['status'](0xcc)[_0x76a1('0x1e')]();});}};}function handleEntityNotFound(_0x5bb7e3){return function(_0x42207e){if(!_0x42207e){_0x5bb7e3[_0x76a1('0x1f')](0x194);}return _0x42207e;};}function handleError(_0x4f2da9,_0xa5ff86){_0xa5ff86=_0xa5ff86||0x1f4;return function(_0x3f6d7c){logger['error'](_0x3f6d7c[_0x76a1('0x20')]);if(_0x3f6d7c[_0x76a1('0x21')]){delete _0x3f6d7c['name'];}_0x4f2da9[_0x76a1('0x15')](_0xa5ff86)[_0x76a1('0x22')](_0x3f6d7c);};}exports['index']=function(_0x419707,_0x2f0497){var _0x44a6e7={},_0x26979d={},_0x506c53={'count':0x0,'rows':[]};var _0xb6bb87=_[_0x76a1('0x23')](db[_0x76a1('0x24')][_0x76a1('0x25')],function(_0x15a8e0){return{'name':_0x15a8e0[_0x76a1('0x26')],'type':_0x15a8e0[_0x76a1('0x27')][_0x76a1('0x28')]};});_0x26979d['model']=_[_0x76a1('0x23')](_0xb6bb87,_0x76a1('0x21'));_0x26979d['query']=_[_0x76a1('0x29')](_0x419707[_0x76a1('0x2a')]);_0x26979d[_0x76a1('0x2b')]=_[_0x76a1('0x2c')](_0x26979d[_0x76a1('0x2d')],_0x26979d[_0x76a1('0x2a')]);_0x44a6e7[_0x76a1('0x2e')]=_[_0x76a1('0x2c')](_0x26979d['model'],qs[_0x76a1('0x2f')](_0x419707[_0x76a1('0x2a')][_0x76a1('0x2f')]));_0x44a6e7[_0x76a1('0x2e')]=_0x44a6e7['attributes'][_0x76a1('0x30')]?_0x44a6e7[_0x76a1('0x2e')]:_0x26979d['model'];if(!_0x419707[_0x76a1('0x2a')]['hasOwnProperty']('nolimit')){_0x44a6e7[_0x76a1('0x17')]=qs[_0x76a1('0x17')](_0x419707[_0x76a1('0x2a')][_0x76a1('0x17')]);_0x44a6e7[_0x76a1('0x1a')]=qs[_0x76a1('0x1a')](_0x419707[_0x76a1('0x2a')][_0x76a1('0x1a')]);}_0x44a6e7[_0x76a1('0x31')]=qs['sort'](_0x419707[_0x76a1('0x2a')][_0x76a1('0x32')]);_0x44a6e7[_0x76a1('0x33')]=qs[_0x76a1('0x2b')](_['pick'](_0x419707[_0x76a1('0x2a')],_0x26979d[_0x76a1('0x2b')]),_0xb6bb87);if(_0x419707[_0x76a1('0x2a')]['filter']){_0x44a6e7[_0x76a1('0x33')]=_[_0x76a1('0x34')](_0x44a6e7[_0x76a1('0x33')],{'$or':_[_0x76a1('0x23')](_0xb6bb87,function(_0x4e67ff){if(_0x4e67ff[_0x76a1('0x27')]!==_0x76a1('0x35')){var _0x2e137e={};_0x2e137e[_0x4e67ff[_0x76a1('0x21')]]={'$like':'%'+_0x419707[_0x76a1('0x2a')][_0x76a1('0x36')]+'%'};return _0x2e137e;}})});}_0x44a6e7=_[_0x76a1('0x34')]({},_0x44a6e7,_0x419707[_0x76a1('0x37')]);var _0x360190={'where':_0x44a6e7['where']};return db[_0x76a1('0x24')][_0x76a1('0x19')](_0x360190)[_0x76a1('0xb')](function(_0x54a49c){_0x506c53[_0x76a1('0x19')]=_0x54a49c;if(_0x419707[_0x76a1('0x2a')][_0x76a1('0x38')]){_0x44a6e7[_0x76a1('0x39')]=[{'all':!![]}];}return db[_0x76a1('0x24')][_0x76a1('0x3a')](_0x44a6e7);})[_0x76a1('0xb')](function(_0x5d2f8b){_0x506c53['rows']=_0x5d2f8b;return _0x506c53;})[_0x76a1('0xb')](respondWithFilteredResult(_0x2f0497,_0x44a6e7))[_0x76a1('0x14')](handleError(_0x2f0497,null));};exports[_0x76a1('0x3b')]=function(_0x40ce77,_0x1c7b6d){var _0x455548={'raw':!![],'where':{'id':_0x40ce77[_0x76a1('0x3c')]['id']}},_0xf87282={};_0xf87282[_0x76a1('0x2d')]=_[_0x76a1('0x29')](db[_0x76a1('0x24')][_0x76a1('0x25')]);_0xf87282[_0x76a1('0x2a')]=_[_0x76a1('0x29')](_0x40ce77[_0x76a1('0x2a')]);_0xf87282[_0x76a1('0x2b')]=_[_0x76a1('0x2c')](_0xf87282['model'],_0xf87282['query']);_0x455548[_0x76a1('0x2e')]=_[_0x76a1('0x2c')](_0xf87282['model'],qs[_0x76a1('0x2f')](_0x40ce77['query'][_0x76a1('0x2f')]));_0x455548[_0x76a1('0x2e')]=_0x455548['attributes'][_0x76a1('0x30')]?_0x455548[_0x76a1('0x2e')]:_0xf87282['model'];if(_0x40ce77[_0x76a1('0x2a')]['includeAll']){_0x455548[_0x76a1('0x39')]=[{'all':!![]}];}_0x455548=_[_0x76a1('0x34')]({},_0x455548,_0x40ce77['options']);return db['Network'][_0x76a1('0x3d')](_0x455548)[_0x76a1('0xb')](handleEntityNotFound(_0x1c7b6d,null))['then'](respondWithResult(_0x1c7b6d,null))['catch'](handleError(_0x1c7b6d,null));};exports[_0x76a1('0x3e')]=function(_0x2195fd,_0x2397cf){var _0x12d5a5;return db['Network'][_0x76a1('0x3e')](_0x2195fd[_0x76a1('0x3f')],{'raw':!![]})[_0x76a1('0xb')](function(_0x1bbfbb){_0x12d5a5=_0x1bbfbb;return db[_0x76a1('0x24')]['findAll']({'where':{'type':_0x2195fd[_0x76a1('0x3f')][_0x76a1('0x27')]},'raw':!![]});})[_0x76a1('0xb')](function(_0x1c770e){if(_0x12d5a5['type'][_0x76a1('0x40')]()==_0x76a1('0x41')){var _0x1815db=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config['root'],_0x76a1('0x44')),_0x76a1('0x45'));var _0x12c5fe=ejs[_0x76a1('0x46')](_0x1815db,{'networks':_0x1c770e||[]});fs[_0x76a1('0x47')]('/etc/asterisk/stun_xcally.conf',_0x12c5fe);return respondWithRpcPromise('Reload',_0x76a1('0x3e'),{'module':'res_stun_monitor.so'});}else if(_0x12d5a5[_0x76a1('0x27')][_0x76a1('0x40')]()==_0x76a1('0x48')){var _0x4eaa22=fs['readFileSync'](path['join'](config['root'],_0x76a1('0x49')),_0x76a1('0x45'));var _0x16b7a7=ejs['render'](_0x4eaa22,{'networks':_0x1c770e||[]});fs['writeFileSync'](_0x76a1('0x4a'),_0x16b7a7);return respondWithRpcPromise('Reload',_0x76a1('0x3e'),{'module':_0x76a1('0x4b')});}else{var _0x88acd0=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config[_0x76a1('0x4c')],_0x76a1('0x4d')),'utf8');var _0x38ef78=ejs[_0x76a1('0x46')](_0x88acd0,{'networks':_0x1c770e||[]});fs['writeFileSync'](util[_0x76a1('0x4e')](_0x76a1('0x4f'),_0x2195fd[_0x76a1('0x3f')]['type'][_0x76a1('0x50')]()),_0x38ef78);return respondWithRpcPromise(_0x76a1('0x51'),'create',{'module':_0x76a1('0x52')});}})[_0x76a1('0xb')](function(){return _0x12d5a5;})[_0x76a1('0xb')](respondWithResult(_0x2397cf,0xc9))[_0x76a1('0x14')](handleError(_0x2397cf,null));};exports[_0x76a1('0x53')]=function(_0x57e796,_0x4e77bf){var _0x19ead9;return db['Network']['find']({'where':{'id':_0x57e796[_0x76a1('0x3c')]['id']}})[_0x76a1('0xb')](handleEntityNotFound(_0x4e77bf,null))[_0x76a1('0xb')](saveUpdates(_0x57e796[_0x76a1('0x3f')],null))[_0x76a1('0xb')](function(_0x34f3e0){if(_0x34f3e0){_0x19ead9=_0x34f3e0;return db['Network'][_0x76a1('0x3a')]({'where':{'type':_0x19ead9['type']},'raw':!![]});}return null;})['then'](function(_0x316e48){if(_0x19ead9[_0x76a1('0x27')][_0x76a1('0x40')]()=='STUN'){var _0xcf6e1d=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config[_0x76a1('0x4c')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x3037e8=ejs[_0x76a1('0x46')](_0xcf6e1d,{'networks':_0x316e48||[]});fs[_0x76a1('0x47')]('/etc/asterisk/stun_xcally.conf',_0x3037e8);return respondWithRpcPromise(_0x76a1('0x51'),_0x76a1('0x53'),{'module':'res_stun_monitor.so'});}else if(_0x19ead9['type'][_0x76a1('0x40')]()==_0x76a1('0x48')){var _0x3cb4f2=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config[_0x76a1('0x4c')],_0x76a1('0x49')),_0x76a1('0x45'));var _0xfcf7b9=ejs[_0x76a1('0x46')](_0x3cb4f2,{'networks':_0x316e48||[]});fs[_0x76a1('0x47')]('/etc/asterisk/turn_xcally.conf',_0xfcf7b9);return respondWithRpcPromise('Reload',_0x76a1('0x53'),{'module':_0x76a1('0x4b')});}else{var _0x5ae3d8=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config[_0x76a1('0x4c')],_0x76a1('0x4d')),_0x76a1('0x45'));var _0x3f7bdd=ejs[_0x76a1('0x46')](_0x5ae3d8,{'networks':_0x316e48||[]});fs[_0x76a1('0x47')](util['format'](_0x76a1('0x4f'),_0x57e796[_0x76a1('0x3f')][_0x76a1('0x27')][_0x76a1('0x50')]()),_0x3f7bdd);return respondWithRpcPromise(_0x76a1('0x51'),_0x76a1('0x53'),{'module':'chan_sip.so'});}})['then'](function(_0x105241){if(_0x105241){return _0x19ead9;}return null;})[_0x76a1('0xb')](respondWithResult(_0x4e77bf,null))['catch'](handleError(_0x4e77bf,null));};exports[_0x76a1('0x1d')]=function(_0x442a99,_0xc7f7cd){var _0x2781a0;return db[_0x76a1('0x24')]['find']({'where':{'id':_0x442a99[_0x76a1('0x3c')]['id']}})[_0x76a1('0xb')](function(_0xbb1292){_0x2781a0=_0xbb1292;return _0xbb1292;})[_0x76a1('0xb')](handleEntityNotFound(_0xc7f7cd,null))[_0x76a1('0xb')](removeEntity(_0xc7f7cd,null))[_0x76a1('0xb')](function(){if(_0x2781a0){return db['Network'][_0x76a1('0x3a')]({'where':{'type':_0x2781a0[_0x76a1('0x27')]},'raw':!![]});}})[_0x76a1('0xb')](function(_0x43eb66){if(_0x2781a0[_0x76a1('0x27')][_0x76a1('0x40')]()==_0x76a1('0x41')){var _0x19bc74=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config['root'],'server/files/templates/stun_multiple.ejs'),_0x76a1('0x45'));var _0x2d0d45=ejs[_0x76a1('0x46')](_0x19bc74,{'networks':_0x43eb66||[]});fs[_0x76a1('0x47')](_0x76a1('0x54'),_0x2d0d45);return respondWithRpcPromise(_0x76a1('0x51'),_0x76a1('0x1d'),{'module':_0x76a1('0x4b')});}else if(_0x2781a0[_0x76a1('0x27')][_0x76a1('0x40')]()==_0x76a1('0x48')){var _0x8ea6c1=fs[_0x76a1('0x42')](path[_0x76a1('0x43')](config[_0x76a1('0x4c')],'server/files/templates/turn_multiple.ejs'),_0x76a1('0x45'));var _0x502688=ejs[_0x76a1('0x46')](_0x8ea6c1,{'networks':_0x43eb66||[]});fs[_0x76a1('0x47')]('/etc/asterisk/turn_xcally.conf',_0x502688);return respondWithRpcPromise(_0x76a1('0x51'),'destroy',{'module':_0x76a1('0x4b')});}else{var _0x475abc=fs['readFileSync'](path[_0x76a1('0x43')](config['root'],_0x76a1('0x4d')),_0x76a1('0x45'));var _0x23a58e=ejs[_0x76a1('0x46')](_0x475abc,{'networks':_0x43eb66||[]});fs['writeFileSync'](util['format'](_0x76a1('0x4f'),_0x2781a0[_0x76a1('0x27')][_0x76a1('0x50')]()),_0x23a58e);return respondWithRpcPromise(_0x76a1('0x51'),_0x76a1('0x1d'),{'module':_0x76a1('0x52')});}})['catch'](handleError(_0xc7f7cd,null));};
\ No newline at end of file
+var _0x47d5=['Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','status','json','offset','undefined','limit','count','update','destroy','end','sendStatus','stack','name','send','map','Network','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','findAll','rows','show','includeAll','find','create','body','readFileSync','join','root','server/files/templates/stun_multiple.ejs','writeFileSync','Reload','res_stun_monitor.so','toUpperCase','TURN','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','utf8','format','chan_sip.so','params','STUN','render','/etc/asterisk/stun_xcally.conf','/etc/asterisk/turn_xcally.conf','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x47d5,0x14b));var _0x547d=function(_0x4e0e26,_0x13a029){_0x4e0e26=_0x4e0e26-0x0;var _0x53b093=_0x47d5[_0x4e0e26];return _0x53b093;};'use strict';var util=require(_0x547d('0x0'));var path=require(_0x547d('0x1'));var ejs=require(_0x547d('0x2'));var fs=require('fs');var _=require(_0x547d('0x3'));var qs=require(_0x547d('0x4'));var logger=require(_0x547d('0x5'))(_0x547d('0x6'));var config=require(_0x547d('0x7'));var db=require('../../mysqldb')['db'];var jayson=require(_0x547d('0x8'));var client=jayson[_0x547d('0x9')][_0x547d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ff726,_0x1f7e46,_0x1bbc3e,_0xe67eac){return new Promise(function(_0x5d6013,_0x18a191){var _0x22455a=_0xe67eac||client;return _0x22455a[_0x547d('0xb')](_0x4ff726,_0x1bbc3e)[_0x547d('0xc')](function(_0x410a13){logger['info'](_0x547d('0xd'),_0x1f7e46,'request\x20sent');logger[_0x547d('0xe')](_0x547d('0xf'),_0x1f7e46,_0x547d('0x10'),JSON[_0x547d('0x11')](_0x410a13));if(_0x410a13['error']){if(_0x410a13[_0x547d('0x12')][_0x547d('0x13')]===0x1f4){logger[_0x547d('0x12')](_0x547d('0xd'),_0x1f7e46,_0x410a13[_0x547d('0x12')][_0x547d('0x14')]);return _0x18a191(_0x410a13[_0x547d('0x12')]['message']);}logger[_0x547d('0x12')]('Network,\x20%s,\x20%s',_0x1f7e46,_0x410a13['error'][_0x547d('0x14')]);return _0x5d6013(_0x410a13[_0x547d('0x12')][_0x547d('0x14')]);}else{logger[_0x547d('0x15')](_0x547d('0xd'),_0x1f7e46,_0x547d('0x10'));_0x5d6013(_0x410a13['result'][_0x547d('0x14')]);}})[_0x547d('0x16')](function(_0x1b4985){logger[_0x547d('0x12')]('Network,\x20%s,\x20%s',_0x1f7e46,_0x1b4985);_0x18a191(_0x1b4985);});});}function respondWithResult(_0xba0cdf,_0x2c0e72){_0x2c0e72=_0x2c0e72||0xc8;return function(_0xc9545){if(_0xc9545){return _0xba0cdf[_0x547d('0x17')](_0x2c0e72)[_0x547d('0x18')](_0xc9545);}};}function respondWithFilteredResult(_0x5af49f,_0xbea297){return function(_0x3a8865){if(_0x3a8865){var _0x17479b=typeof _0xbea297[_0x547d('0x19')]===_0x547d('0x1a')&&typeof _0xbea297[_0x547d('0x1b')]===_0x547d('0x1a');var _0x171131=_0x3a8865[_0x547d('0x1c')];var _0x333b99=_0x17479b?0x0:_0xbea297[_0x547d('0x19')];var _0x45809d=_0x17479b?_0x3a8865[_0x547d('0x1c')]:_0xbea297['offset']+_0xbea297[_0x547d('0x1b')];var _0x362709;if(_0x45809d>=_0x171131){_0x45809d=_0x171131;_0x362709=0xc8;}else{_0x362709=0xce;}_0x5af49f['status'](_0x362709);return _0x5af49f['set']('Content-Range',_0x333b99+'-'+_0x45809d+'/'+_0x171131)[_0x547d('0x18')](_0x3a8865);}return null;};}function saveUpdates(_0x5bc65c){return function(_0x17cb7c){if(_0x17cb7c){return _0x17cb7c[_0x547d('0x1d')](_0x5bc65c)[_0x547d('0xc')](function(_0x50539b){return _0x50539b;});}return null;};}function removeEntity(_0x100df7){return function(_0x5b0a83){if(_0x5b0a83){return _0x5b0a83[_0x547d('0x1e')]()[_0x547d('0xc')](function(){_0x100df7[_0x547d('0x17')](0xcc)[_0x547d('0x1f')]();});}};}function handleEntityNotFound(_0x6b8a9b){return function(_0x1c6142){if(!_0x1c6142){_0x6b8a9b[_0x547d('0x20')](0x194);}return _0x1c6142;};}function handleError(_0x95f115,_0xbac0e4){_0xbac0e4=_0xbac0e4||0x1f4;return function(_0x3a2749){logger[_0x547d('0x12')](_0x3a2749[_0x547d('0x21')]);if(_0x3a2749[_0x547d('0x22')]){delete _0x3a2749[_0x547d('0x22')];}_0x95f115[_0x547d('0x17')](_0xbac0e4)[_0x547d('0x23')](_0x3a2749);};}exports['index']=function(_0x8ee50f,_0x53da92){var _0x4074e5={},_0x4fdf14={},_0x1c52e1={'count':0x0,'rows':[]};var _0x133956=_[_0x547d('0x24')](db[_0x547d('0x25')][_0x547d('0x26')],function(_0x2ee8c5){return{'name':_0x2ee8c5['fieldName'],'type':_0x2ee8c5[_0x547d('0x27')][_0x547d('0x28')]};});_0x4fdf14[_0x547d('0x29')]=_['map'](_0x133956,_0x547d('0x22'));_0x4fdf14[_0x547d('0x2a')]=_[_0x547d('0x2b')](_0x8ee50f[_0x547d('0x2a')]);_0x4fdf14[_0x547d('0x2c')]=_[_0x547d('0x2d')](_0x4fdf14[_0x547d('0x29')],_0x4fdf14[_0x547d('0x2a')]);_0x4074e5[_0x547d('0x2e')]=_[_0x547d('0x2d')](_0x4fdf14[_0x547d('0x29')],qs[_0x547d('0x2f')](_0x8ee50f['query']['fields']));_0x4074e5[_0x547d('0x2e')]=_0x4074e5[_0x547d('0x2e')][_0x547d('0x30')]?_0x4074e5['attributes']:_0x4fdf14[_0x547d('0x29')];if(!_0x8ee50f['query'][_0x547d('0x31')](_0x547d('0x32'))){_0x4074e5[_0x547d('0x1b')]=qs['limit'](_0x8ee50f[_0x547d('0x2a')]['limit']);_0x4074e5['offset']=qs[_0x547d('0x19')](_0x8ee50f[_0x547d('0x2a')]['offset']);}_0x4074e5['order']=qs[_0x547d('0x33')](_0x8ee50f['query'][_0x547d('0x33')]);_0x4074e5[_0x547d('0x34')]=qs[_0x547d('0x2c')](_[_0x547d('0x35')](_0x8ee50f[_0x547d('0x2a')],_0x4fdf14[_0x547d('0x2c')]),_0x133956);if(_0x8ee50f['query'][_0x547d('0x36')]){_0x4074e5['where']=_[_0x547d('0x37')](_0x4074e5[_0x547d('0x34')],{'$or':_['map'](_0x133956,function(_0x9f22a0){if(_0x9f22a0[_0x547d('0x27')]!=='VIRTUAL'){var _0x269bd8={};_0x269bd8[_0x9f22a0[_0x547d('0x22')]]={'$like':'%'+_0x8ee50f['query'][_0x547d('0x36')]+'%'};return _0x269bd8;}})});}_0x4074e5=_[_0x547d('0x37')]({},_0x4074e5,_0x8ee50f[_0x547d('0x38')]);var _0x46fe73={'where':_0x4074e5[_0x547d('0x34')]};return db['Network'][_0x547d('0x1c')](_0x46fe73)['then'](function(_0x198af7){_0x1c52e1['count']=_0x198af7;if(_0x8ee50f[_0x547d('0x2a')]['includeAll']){_0x4074e5[_0x547d('0x39')]=[{'all':!![]}];}return db['Network'][_0x547d('0x3a')](_0x4074e5);})['then'](function(_0x11e7f2){_0x1c52e1[_0x547d('0x3b')]=_0x11e7f2;return _0x1c52e1;})['then'](respondWithFilteredResult(_0x53da92,_0x4074e5))[_0x547d('0x16')](handleError(_0x53da92,null));};exports[_0x547d('0x3c')]=function(_0x939ae9,_0x7832aa){var _0x3a584e={'raw':!![],'where':{'id':_0x939ae9['params']['id']}},_0x4ab931={};_0x4ab931[_0x547d('0x29')]=_[_0x547d('0x2b')](db[_0x547d('0x25')]['rawAttributes']);_0x4ab931[_0x547d('0x2a')]=_[_0x547d('0x2b')](_0x939ae9['query']);_0x4ab931[_0x547d('0x2c')]=_[_0x547d('0x2d')](_0x4ab931['model'],_0x4ab931[_0x547d('0x2a')]);_0x3a584e[_0x547d('0x2e')]=_[_0x547d('0x2d')](_0x4ab931[_0x547d('0x29')],qs['fields'](_0x939ae9[_0x547d('0x2a')]['fields']));_0x3a584e['attributes']=_0x3a584e[_0x547d('0x2e')]['length']?_0x3a584e[_0x547d('0x2e')]:_0x4ab931[_0x547d('0x29')];if(_0x939ae9['query'][_0x547d('0x3d')]){_0x3a584e[_0x547d('0x39')]=[{'all':!![]}];}_0x3a584e=_['merge']({},_0x3a584e,_0x939ae9['options']);return db['Network'][_0x547d('0x3e')](_0x3a584e)[_0x547d('0xc')](handleEntityNotFound(_0x7832aa,null))[_0x547d('0xc')](respondWithResult(_0x7832aa,null))[_0x547d('0x16')](handleError(_0x7832aa,null));};exports['create']=function(_0x56a68f,_0x293068){var _0x254443;return db[_0x547d('0x25')][_0x547d('0x3f')](_0x56a68f['body'],{'raw':!![]})[_0x547d('0xc')](function(_0x412338){_0x254443=_0x412338;return db[_0x547d('0x25')][_0x547d('0x3a')]({'where':{'type':_0x56a68f[_0x547d('0x40')]['type']},'raw':!![]});})[_0x547d('0xc')](function(_0x3ca8bf){if(_0x254443[_0x547d('0x27')]['toUpperCase']()=='STUN'){var _0x32021a=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],_0x547d('0x44')),'utf8');var _0x5a44cc=ejs['render'](_0x32021a,{'networks':_0x3ca8bf||[]});fs[_0x547d('0x45')]('/etc/asterisk/stun_xcally.conf',_0x5a44cc);return respondWithRpcPromise(_0x547d('0x46'),_0x547d('0x3f'),{'module':_0x547d('0x47')});}else if(_0x254443[_0x547d('0x27')][_0x547d('0x48')]()==_0x547d('0x49')){var _0x5b1fa5=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],_0x547d('0x4a')),'utf8');var _0x30a4fa=ejs['render'](_0x5b1fa5,{'networks':_0x3ca8bf||[]});fs[_0x547d('0x45')]('/etc/asterisk/turn_xcally.conf',_0x30a4fa);return respondWithRpcPromise('Reload','create',{'module':_0x547d('0x47')});}else{var _0xe8b109=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],_0x547d('0x4b')),_0x547d('0x4c'));var _0x22ac13=ejs['render'](_0xe8b109,{'networks':_0x3ca8bf||[]});fs['writeFileSync'](util[_0x547d('0x4d')]('/etc/asterisk/sip_xcally_%s.conf',_0x56a68f[_0x547d('0x40')][_0x547d('0x27')]['toLowerCase']()),_0x22ac13);return respondWithRpcPromise('Reload',_0x547d('0x3f'),{'module':_0x547d('0x4e')});}})[_0x547d('0xc')](function(){return _0x254443;})[_0x547d('0xc')](respondWithResult(_0x293068,0xc9))['catch'](handleError(_0x293068,null));};exports['update']=function(_0x148bbb,_0x2ae10c){var _0x8e74d8;return db[_0x547d('0x25')][_0x547d('0x3e')]({'where':{'id':_0x148bbb[_0x547d('0x4f')]['id']}})[_0x547d('0xc')](handleEntityNotFound(_0x2ae10c,null))[_0x547d('0xc')](saveUpdates(_0x148bbb[_0x547d('0x40')],null))['then'](function(_0x4ecc6d){if(_0x4ecc6d){_0x8e74d8=_0x4ecc6d;return db['Network'][_0x547d('0x3a')]({'where':{'type':_0x8e74d8[_0x547d('0x27')]},'raw':!![]});}return null;})[_0x547d('0xc')](function(_0x14e151){if(_0x8e74d8[_0x547d('0x27')][_0x547d('0x48')]()==_0x547d('0x50')){var _0x2e8cbb=fs[_0x547d('0x41')](path[_0x547d('0x42')](config['root'],_0x547d('0x44')),'utf8');var _0x4dd0bc=ejs[_0x547d('0x51')](_0x2e8cbb,{'networks':_0x14e151||[]});fs['writeFileSync'](_0x547d('0x52'),_0x4dd0bc);return respondWithRpcPromise('Reload',_0x547d('0x1d'),{'module':_0x547d('0x47')});}else if(_0x8e74d8[_0x547d('0x27')][_0x547d('0x48')]()==_0x547d('0x49')){var _0x1883f8=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],_0x547d('0x4a')),_0x547d('0x4c'));var _0x1eec70=ejs[_0x547d('0x51')](_0x1883f8,{'networks':_0x14e151||[]});fs['writeFileSync'](_0x547d('0x53'),_0x1eec70);return respondWithRpcPromise(_0x547d('0x46'),_0x547d('0x1d'),{'module':'res_stun_monitor.so'});}else{var _0x25c225=fs['readFileSync'](path[_0x547d('0x42')](config[_0x547d('0x43')],_0x547d('0x4b')),_0x547d('0x4c'));var _0x94f01d=ejs['render'](_0x25c225,{'networks':_0x14e151||[]});fs[_0x547d('0x45')](util[_0x547d('0x4d')](_0x547d('0x54'),_0x148bbb['body'][_0x547d('0x27')][_0x547d('0x55')]()),_0x94f01d);return respondWithRpcPromise('Reload',_0x547d('0x1d'),{'module':'chan_sip.so'});}})[_0x547d('0xc')](function(_0x388100){if(_0x388100){return _0x8e74d8;}return null;})[_0x547d('0xc')](respondWithResult(_0x2ae10c,null))[_0x547d('0x16')](handleError(_0x2ae10c,null));};exports[_0x547d('0x1e')]=function(_0x5371ca,_0x1dce03){var _0x2bc839;return db[_0x547d('0x25')][_0x547d('0x3e')]({'where':{'id':_0x5371ca[_0x547d('0x4f')]['id']}})['then'](function(_0x601394){_0x2bc839=_0x601394;return _0x601394;})['then'](handleEntityNotFound(_0x1dce03,null))[_0x547d('0xc')](removeEntity(_0x1dce03,null))['then'](function(){if(_0x2bc839){return db[_0x547d('0x25')][_0x547d('0x3a')]({'where':{'type':_0x2bc839['type']},'raw':!![]});}})[_0x547d('0xc')](function(_0x409cde){if(_0x2bc839[_0x547d('0x27')][_0x547d('0x48')]()==_0x547d('0x50')){var _0x1d3b29=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],_0x547d('0x44')),_0x547d('0x4c'));var _0x254535=ejs[_0x547d('0x51')](_0x1d3b29,{'networks':_0x409cde||[]});fs[_0x547d('0x45')](_0x547d('0x52'),_0x254535);return respondWithRpcPromise(_0x547d('0x46'),_0x547d('0x1e'),{'module':'res_stun_monitor.so'});}else if(_0x2bc839['type']['toUpperCase']()==_0x547d('0x49')){var _0x316beb=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],'server/files/templates/turn_multiple.ejs'),_0x547d('0x4c'));var _0x1fbf59=ejs[_0x547d('0x51')](_0x316beb,{'networks':_0x409cde||[]});fs[_0x547d('0x45')](_0x547d('0x53'),_0x1fbf59);return respondWithRpcPromise(_0x547d('0x46'),_0x547d('0x1e'),{'module':_0x547d('0x47')});}else{var _0x449954=fs[_0x547d('0x41')](path[_0x547d('0x42')](config[_0x547d('0x43')],'server/files/templates/network.ejs'),_0x547d('0x4c'));var _0x224da8=ejs[_0x547d('0x51')](_0x449954,{'networks':_0x409cde||[]});fs['writeFileSync'](util[_0x547d('0x4d')]('/etc/asterisk/sip_xcally_%s.conf',_0x2bc839['type'][_0x547d('0x55')]()),_0x224da8);return respondWithRpcPromise('Reload',_0x547d('0x1e'),{'module':_0x547d('0x4e')});}})[_0x547d('0x16')](handleError(_0x1dce03,null));};
\ No newline at end of file
index 5a2856c..f50b4bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f8=['Network','network','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define'];(function(_0x1f4b18,_0x4e777c){var _0xde3957=function(_0x1dcbbc){while(--_0x1dcbbc){_0x1f4b18['push'](_0x1f4b18['shift']());}};_0xde3957(++_0x4e777c);}(_0x57f8,0x198));var _0x857f=function(_0x546f9f,_0xcce640){_0x546f9f=_0x546f9f-0x0;var _0x3513dd=_0x57f8[_0x546f9f];return _0x3513dd;};'use strict';var _=require('lodash');var util=require(_0x857f('0x0'));var logger=require(_0x857f('0x1'))(_0x857f('0x2'));var moment=require(_0x857f('0x3'));var BPromise=require(_0x857f('0x4'));var rp=require(_0x857f('0x5'));var fs=require('fs');var path=require(_0x857f('0x6'));var rimraf=require(_0x857f('0x7'));var config=require(_0x857f('0x8'));var attributes=require(_0x857f('0x9'));module[_0x857f('0xa')]=function(_0x369c40,_0x5d22e4){return _0x369c40[_0x857f('0xb')](_0x857f('0xc'),attributes,{'tableName':_0x857f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x153f=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./network.attributes','exports','define','network','lodash'];(function(_0x3a5a74,_0x527204){var _0x599883=function(_0x15a1ba){while(--_0x15a1ba){_0x3a5a74['push'](_0x3a5a74['shift']());}};_0x599883(++_0x527204);}(_0x153f,0x15b));var _0xf153=function(_0xfe5075,_0x331a38){_0xfe5075=_0xfe5075-0x0;var _0x27de27=_0x153f[_0xfe5075];return _0x27de27;};'use strict';var _=require(_0xf153('0x0'));var util=require(_0xf153('0x1'));var logger=require(_0xf153('0x2'))(_0xf153('0x3'));var moment=require(_0xf153('0x4'));var BPromise=require(_0xf153('0x5'));var rp=require(_0xf153('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf153('0x7'));var config=require('../../config/environment');var attributes=require(_0xf153('0x8'));module[_0xf153('0x9')]=function(_0x342a45,_0xafd987){return _0x342a45[_0xf153('0xa')]('Network',attributes,{'tableName':_0xf153('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 359cbb3..f75e3b5 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(_0x119b4f,_0x52f382){var _0x463edb=function(_0x16c16d){while(--_0x16c16d){_0x119b4f['push'](_0x119b4f['shift']());}};_0x463edb(++_0x52f382);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1223be,_0xf1e876){var _0x359cf4=function(_0x2242d1){while(--_0x2242d1){_0x1223be['push'](_0x1223be['shift']());}};_0x359cf4(++_0xf1e876);}(_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 moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 0be5b24..5017ea7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaa1=['/:id/canned_answers','addAnswer','/:id/notify','addApplications','addAgents','/:id/send','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','getDispositions','/:id/applications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','/:id/dispositions','addDisposition'];(function(_0x965d45,_0x2b94e5){var _0x4d422c=function(_0x53f05d){while(--_0x53f05d){_0x965d45['push'](_0x965d45['shift']());}};_0x4d422c(++_0x2b94e5);}(_0xdaa1,0x1d5));var _0x1daa=function(_0x56164d,_0x19f8d4){_0x56164d=_0x56164d-0x0;var _0x3ffaca=_0xdaa1[_0x56164d];return _0x3ffaca;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1daa('0x0'));var timeout=require(_0x1daa('0x1'));var express=require(_0x1daa('0x2'));var router=express[_0x1daa('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1daa('0x4'));var interaction=require(_0x1daa('0x5'));var config=require(_0x1daa('0x6'));var controller=require(_0x1daa('0x7'));router[_0x1daa('0x8')]('/',auth['isAuthenticated'](),controller[_0x1daa('0x9')]);router[_0x1daa('0x8')](_0x1daa('0xa'),auth[_0x1daa('0xb')](),controller[_0x1daa('0xc')]);router[_0x1daa('0x8')](_0x1daa('0xd'),auth[_0x1daa('0xb')](),controller[_0x1daa('0xe')]);router['get']('/:id/dispositions',auth[_0x1daa('0xb')](),controller[_0x1daa('0xf')]);router[_0x1daa('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router[_0x1daa('0x8')](_0x1daa('0x10'),auth[_0x1daa('0xb')](),controller['getApplications']);router[_0x1daa('0x8')](_0x1daa('0x11'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x12')]);router[_0x1daa('0x8')](_0x1daa('0x13'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x14')]);router['post']('/',auth[_0x1daa('0xb')](),controller[_0x1daa('0x15')]);router[_0x1daa('0x16')](_0x1daa('0x17'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x18')]);router[_0x1daa('0x16')](_0x1daa('0x19'),auth['isAuthenticated'](),controller[_0x1daa('0x1a')]);router[_0x1daa('0x16')](_0x1daa('0x1b'),controller['notify']);router[_0x1daa('0x16')](_0x1daa('0x10'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x1c')]);router[_0x1daa('0x16')]('/:id/users',auth[_0x1daa('0xb')](),controller[_0x1daa('0x1d')]);router[_0x1daa('0x16')](_0x1daa('0x1e'),auth[_0x1daa('0xb')](),controller['send']);router['put'](_0x1daa('0xd'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x1f')]);router['delete'](_0x1daa('0xd'),auth['isAuthenticated'](),controller[_0x1daa('0x20')]);router[_0x1daa('0x21')](_0x1daa('0x17'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x22')]);router['delete'](_0x1daa('0x19'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x23')]);router[_0x1daa('0x21')](_0x1daa('0x13'),auth[_0x1daa('0xb')](),controller[_0x1daa('0x24')]);module[_0x1daa('0x25')]=router;
\ No newline at end of file
+var _0x5d81=['delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','isAuthenticated','index','get','/describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions','/:id/users','post','addDisposition','/:id/canned_answers','notify','addApplications','/:id/send','update'];(function(_0x2288b3,_0x29beb0){var _0x571524=function(_0x2e4897){while(--_0x2e4897){_0x2288b3['push'](_0x2288b3['shift']());}};_0x571524(++_0x29beb0);}(_0x5d81,0x141));var _0x15d8=function(_0x86b219,_0x43038f){_0x86b219=_0x86b219-0x0;var _0x1f320c=_0x5d81[_0x86b219];return _0x1f320c;};'use strict';var multer=require(_0x15d8('0x0'));var util=require(_0x15d8('0x1'));var path=require(_0x15d8('0x2'));var timeout=require(_0x15d8('0x3'));var express=require(_0x15d8('0x4'));var router=express['Router']();var fs_extra=require(_0x15d8('0x5'));var auth=require(_0x15d8('0x6'));var interaction=require(_0x15d8('0x7'));var config=require('../../config/environment');var controller=require(_0x15d8('0x8'));router['get']('/',auth[_0x15d8('0x9')](),controller[_0x15d8('0xa')]);router[_0x15d8('0xb')](_0x15d8('0xc'),auth[_0x15d8('0x9')](),controller['describe']);router['get'](_0x15d8('0xd'),auth[_0x15d8('0x9')](),controller[_0x15d8('0xe')]);router[_0x15d8('0xb')](_0x15d8('0xf'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x10')]);router[_0x15d8('0xb')]('/:id/canned_answers',auth[_0x15d8('0x9')](),controller[_0x15d8('0x11')]);router[_0x15d8('0xb')](_0x15d8('0x12'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x13')]);router['get'](_0x15d8('0x14'),auth[_0x15d8('0x9')](),controller['getInteractions']);router['get'](_0x15d8('0x15'),auth[_0x15d8('0x9')](),controller['getAgents']);router[_0x15d8('0x16')]('/',auth['isAuthenticated'](),controller['create']);router[_0x15d8('0x16')](_0x15d8('0xf'),auth['isAuthenticated'](),controller[_0x15d8('0x17')]);router['post'](_0x15d8('0x18'),auth['isAuthenticated'](),controller['addAnswer']);router[_0x15d8('0x16')]('/:id/notify',controller[_0x15d8('0x19')]);router['post'](_0x15d8('0x12'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x1a')]);router['post'](_0x15d8('0x15'),auth[_0x15d8('0x9')](),controller['addAgents']);router[_0x15d8('0x16')](_0x15d8('0x1b'),auth[_0x15d8('0x9')](),controller['send']);router['put'](_0x15d8('0xd'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x1c')]);router[_0x15d8('0x1d')](_0x15d8('0xd'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x1e')]);router['delete']('/:id/dispositions',auth[_0x15d8('0x9')](),controller[_0x15d8('0x1f')]);router['delete'](_0x15d8('0x18'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x20')]);router[_0x15d8('0x1d')](_0x15d8('0x15'),auth[_0x15d8('0x9')](),controller[_0x15d8('0x21')]);module[_0x15d8('0x22')]=router;
\ No newline at end of file
index 2814b89..26888b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3db=['generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','STRING','name'];(function(_0x464044,_0x4e7a50){var _0x11ed97=function(_0x36a062){while(--_0x36a062){_0x464044['push'](_0x464044['shift']());}};_0x11ed97(++_0x4e7a50);}(_0xe3db,0xbd));var _0xbe3d=function(_0x10bbb3,_0x1145a4){_0x10bbb3=_0x10bbb3-0x0;var _0x35b43f=_0xe3db[_0x10bbb3];return _0x35b43f;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xbe3d('0x0'));module['exports']={'name':{'type':Sequelize[_0xbe3d('0x1')],'unique':_0xbe3d('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xbe3d('0x1')]},'token':{'type':Sequelize[_0xbe3d('0x1')],'defaultValue':function(){return rs[_0xbe3d('0x3')]();}},'replyUri':{'type':Sequelize[_0xbe3d('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xbe3d('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xbe3d('0x4')],'defaultValue':function(){return _0xbe3d('0x5');}},'notificationSound':{'type':Sequelize[_0xbe3d('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbe3d('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xbe3d('0x1')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbe3d('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbe3d('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xbe3d('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbe3d('0x7')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xbe3d('0x6')],'defaultValue':![],'comment':_0xbe3d('0x8'),'set':function(_0xefe7b3){if(!_0xefe7b3)this[_0xbe3d('0x9')](_0xbe3d('0xa'),null);this[_0xbe3d('0x9')](_0xbe3d('0xb'),_0xefe7b3);}}};
\ No newline at end of file
+var _0x896d=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','name','STRING','generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x1d9ed3,_0x197560){var _0x46190b=function(_0x21383b){while(--_0x21383b){_0x1d9ed3['push'](_0x1d9ed3['shift']());}};_0x46190b(++_0x197560);}(_0x896d,0x196));var _0xd896=function(_0xc411d0,_0x118c9c){_0xc411d0=_0xc411d0-0x0;var _0xf9f573=_0x896d[_0xc411d0];return _0xf9f573;};'use strict';var Sequelize=require(_0xd896('0x0'));var rs=require(_0xd896('0x1'));module[_0xd896('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0xd896('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xd896('0x4')]},'token':{'type':Sequelize[_0xd896('0x4')],'defaultValue':function(){return rs[_0xd896('0x5')]();}},'replyUri':{'type':Sequelize[_0xd896('0x4')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xd896('0x4')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xd896('0x6');}},'notificationSound':{'type':Sequelize[_0xd896('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd896('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xd896('0x4')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd896('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd896('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0xd896('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xd896('0x7')],'defaultValue':![],'comment':_0xd896('0xa'),'set':function(_0x2545ba){if(!_0x2545ba)this[_0xd896('0xb')](_0xd896('0xc'),null);this[_0xd896('0xb')]('mandatoryDisposition',_0x2545ba);}}};
\ No newline at end of file
index 559d128..a513e6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa952=['info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','merge','type','filter','options','OpenchannelAccount','includeAll','include','findAll','rows','show','params','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','OpenchannelAccounts','userProfileId','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','Disposition','hasOwnProperty','order','removeDispositions','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','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','DESC','Applications','account','applications','list','orderBy','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','unshift','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','addApplications','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','OpenchannelApplication','bulkCreate','priority','finally','getApplications','pick','getInteractions','Contact','Owner','fullname','Tags','color','tag','addAgents','ids','omit','spread','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','defaults','localhost','socket.io-emitter','redis','./openchannelAccount.socket','register','client','http','request','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x188057,_0x12f362){var _0x2bca0c=function(_0xf56b63){while(--_0xf56b63){_0x188057['push'](_0x188057['shift']());}};_0x2bca0c(++_0x12f362);}(_0xa952,0x98));var _0x2a95=function(_0x3ea488,_0x3dd43e){_0x3ea488=_0x3ea488-0x0;var _0xb08fe1=_0xa952[_0x3ea488];return _0xb08fe1;};'use strict';var emlformat=require(_0x2a95('0x0'));var rimraf=require(_0x2a95('0x1'));var zipdir=require(_0x2a95('0x2'));var jsonpatch=require(_0x2a95('0x3'));var rp=require(_0x2a95('0x4'));var moment=require('moment');var BPromise=require(_0x2a95('0x5'));var Mustache=require('mustache');var util=require(_0x2a95('0x6'));var path=require(_0x2a95('0x7'));var sox=require(_0x2a95('0x8'));var csv=require(_0x2a95('0x9'));var ejs=require(_0x2a95('0xa'));var fs=require('fs');var fs_extra=require(_0x2a95('0xb'));var _=require(_0x2a95('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2a95('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2a95('0x9'));var querystring=require(_0x2a95('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2a95('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x2a95('0x10'));var hardwareService=require(_0x2a95('0x11'));var logger=require(_0x2a95('0x12'))('api');var utils=require(_0x2a95('0x13'));var config=require(_0x2a95('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x2a95('0x15')](config['redis'],{'host':_0x2a95('0x16'),'port':0x18eb});var socket=require(_0x2a95('0x17'))(new Redis(config[_0x2a95('0x18')]));require(_0x2a95('0x19'))[_0x2a95('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2a95('0x1b')]['http']({'port':0x232c});var client9002=jayson[_0x2a95('0x1b')][_0x2a95('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x691a1,_0x101150,_0xfef268,_0x16a8d3){return new BPromise(function(_0x1c3e8a,_0x1d8eb1){var _0x45f70e=_0x16a8d3||client;return _0x45f70e[_0x2a95('0x1d')](_0x691a1,_0xfef268)['then'](function(_0x33cb10){logger['info'](_0x2a95('0x1e'),_0x101150,_0x2a95('0x1f'));logger[_0x2a95('0x20')](_0x2a95('0x21'),_0x101150,_0x2a95('0x1f'),JSON[_0x2a95('0x22')](_0x33cb10));if(_0x33cb10[_0x2a95('0x23')]){if(_0x33cb10['error']['code']===0x1f4){logger['error'](_0x2a95('0x1e'),_0x101150,_0x33cb10[_0x2a95('0x23')]['message']);return _0x1d8eb1(_0x33cb10[_0x2a95('0x23')]['message']);}logger[_0x2a95('0x23')](_0x2a95('0x1e'),_0x101150,_0x33cb10[_0x2a95('0x23')][_0x2a95('0x24')]);return _0x1c3e8a(_0x33cb10[_0x2a95('0x23')]['message']);}else{logger[_0x2a95('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x101150,_0x2a95('0x1f'));_0x1c3e8a(_0x33cb10[_0x2a95('0x26')][_0x2a95('0x24')]);}})[_0x2a95('0x27')](function(_0x2f6044){logger['error'](_0x2a95('0x1e'),_0x101150,_0x2f6044);_0x1d8eb1(_0x2f6044);});});}function respondWithStatusCode(_0x335f52,_0x3bec5f){_0x3bec5f=_0x3bec5f||0xcc;return function(_0x232ab0){if(_0x232ab0){return _0x335f52[_0x2a95('0x28')](_0x3bec5f);}return _0x335f52[_0x2a95('0x29')](_0x3bec5f)[_0x2a95('0x2a')]();};}function respondWithResult(_0x4c85d0,_0x2119eb){_0x2119eb=_0x2119eb||0xc8;return function(_0x7957be){if(_0x7957be){return _0x4c85d0[_0x2a95('0x29')](_0x2119eb)[_0x2a95('0x2b')](_0x7957be);}};}function respondWithFilteredResult(_0x3659e4,_0x119bd9){return function(_0x4dd4f0){if(_0x4dd4f0){var _0x928139=typeof _0x119bd9[_0x2a95('0x2c')]===_0x2a95('0x2d')&&typeof _0x119bd9[_0x2a95('0x2e')]===_0x2a95('0x2d');var _0x2023eb=_0x4dd4f0[_0x2a95('0x2f')];var _0xd4347f=_0x928139?0x0:_0x119bd9['offset'];var _0x2221c9=_0x928139?_0x4dd4f0[_0x2a95('0x2f')]:_0x119bd9[_0x2a95('0x2c')]+_0x119bd9['limit'];var _0x56ca87;if(_0x2221c9>=_0x2023eb){_0x2221c9=_0x2023eb;_0x56ca87=0xc8;}else{_0x56ca87=0xce;}_0x3659e4[_0x2a95('0x29')](_0x56ca87);return _0x3659e4['set'](_0x2a95('0x30'),_0xd4347f+'-'+_0x2221c9+'/'+_0x2023eb)[_0x2a95('0x2b')](_0x4dd4f0);}return null;};}function patchUpdates(_0x5dc199){return function(_0x508443){try{jsonpatch[_0x2a95('0x31')](_0x508443,_0x5dc199,!![]);}catch(_0x3f1c5d){return BPromise[_0x2a95('0x32')](_0x3f1c5d);}return _0x508443['save']();};}function saveUpdates(_0x14cea9,_0x225980){return function(_0x3d422a){if(_0x3d422a){return _0x3d422a[_0x2a95('0x33')](_0x14cea9)['then'](function(_0x27cdd4){return _0x27cdd4;});}return null;};}function removeEntity(_0x549c0b,_0x5c94ba){return function(_0x478a8e){if(_0x478a8e){return _0x478a8e[_0x2a95('0x34')]()[_0x2a95('0x35')](function(){var _0x360e1d=_0x478a8e[_0x2a95('0x36')]({'plain':!![]});var _0x37bae7='OpenchannelAccounts';return db[_0x2a95('0x37')][_0x2a95('0x34')]({'where':{'type':_0x37bae7,'resourceId':_0x360e1d['id']}})[_0x2a95('0x35')](function(){return _0x478a8e;});})[_0x2a95('0x35')](function(){_0x549c0b[_0x2a95('0x29')](0xcc)[_0x2a95('0x2a')]();});}};}function handleEntityNotFound(_0xf48ba1,_0x459c13){return function(_0x4eedc7){if(!_0x4eedc7){_0xf48ba1[_0x2a95('0x28')](0x194);}return _0x4eedc7;};}function handleError(_0x1c0965,_0x35f21e){_0x35f21e=_0x35f21e||0x1f4;return function(_0x5e639f){logger[_0x2a95('0x23')](_0x5e639f[_0x2a95('0x38')]);if(_0x5e639f[_0x2a95('0x39')]){delete _0x5e639f['name'];}_0x1c0965['status'](_0x35f21e)[_0x2a95('0x3a')](_0x5e639f);};}exports[_0x2a95('0x3b')]=function(_0x470bcb,_0x4e6065){var _0x2ec9ab={'include':[{'model':db[_0x2a95('0x3c')],'as':_0x2a95('0x3d')}]},_0x49118e={},_0x1f7ab3={'count':0x0,'rows':[]};var _0x2f06b5=_[_0x2a95('0x3e')](db['OpenchannelAccount'][_0x2a95('0x3f')],function(_0x1e772d){return{'name':_0x1e772d[_0x2a95('0x40')],'type':_0x1e772d['type'][_0x2a95('0x41')]};});_0x49118e[_0x2a95('0x42')]=_[_0x2a95('0x3e')](_0x2f06b5,_0x2a95('0x39'));_0x49118e[_0x2a95('0x43')]=_[_0x2a95('0x44')](_0x470bcb[_0x2a95('0x43')]);_0x49118e[_0x2a95('0x45')]=_[_0x2a95('0x46')](_0x49118e[_0x2a95('0x42')],_0x49118e[_0x2a95('0x43')]);_0x2ec9ab[_0x2a95('0x47')]=_[_0x2a95('0x46')](_0x49118e[_0x2a95('0x42')],qs[_0x2a95('0x48')](_0x470bcb[_0x2a95('0x43')][_0x2a95('0x48')]));_0x2ec9ab[_0x2a95('0x47')]=_0x2ec9ab[_0x2a95('0x47')][_0x2a95('0x49')]?_0x2ec9ab[_0x2a95('0x47')]:_0x49118e['model'];if(!_0x470bcb[_0x2a95('0x43')]['hasOwnProperty'](_0x2a95('0x4a'))){_0x2ec9ab[_0x2a95('0x2e')]=qs['limit'](_0x470bcb[_0x2a95('0x43')]['limit']);_0x2ec9ab['offset']=qs[_0x2a95('0x2c')](_0x470bcb['query']['offset']);}_0x2ec9ab['order']=qs[_0x2a95('0x4b')](_0x470bcb['query'][_0x2a95('0x4b')]);_0x2ec9ab['where']=qs[_0x2a95('0x45')](_['pick'](_0x470bcb['query'],_0x49118e[_0x2a95('0x45')]),_0x2f06b5);if(_0x470bcb[_0x2a95('0x43')]['filter']){_0x2ec9ab[_0x2a95('0x4c')]=_[_0x2a95('0x4d')](_0x2ec9ab[_0x2a95('0x4c')],{'$or':_['map'](_0x2f06b5,function(_0x2c96bd){if(_0x2c96bd[_0x2a95('0x4e')]!=='VIRTUAL'){var _0xd581e2={};_0xd581e2[_0x2c96bd[_0x2a95('0x39')]]={'$like':'%'+_0x470bcb[_0x2a95('0x43')][_0x2a95('0x4f')]+'%'};return _0xd581e2;}})});}_0x2ec9ab=_['merge']({},_0x2ec9ab,_0x470bcb[_0x2a95('0x50')]);var _0x55f899={'where':_0x2ec9ab['where']};return db[_0x2a95('0x51')]['count'](_0x55f899)['then'](function(_0xdf4e09){_0x1f7ab3[_0x2a95('0x2f')]=_0xdf4e09;if(_0x470bcb['query'][_0x2a95('0x52')]){_0x2ec9ab[_0x2a95('0x53')]=[{'all':!![]}];}return db[_0x2a95('0x51')][_0x2a95('0x54')](_0x2ec9ab);})[_0x2a95('0x35')](function(_0x4e56cd){_0x1f7ab3[_0x2a95('0x55')]=_0x4e56cd;return _0x1f7ab3;})['then'](respondWithFilteredResult(_0x4e6065,_0x2ec9ab))[_0x2a95('0x27')](handleError(_0x4e6065,null));};exports[_0x2a95('0x56')]=function(_0xe5fbb5,_0x3a8560){var _0x3e61a7={'raw':![],'where':{'id':_0xe5fbb5[_0x2a95('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0x2a95('0x3d')}]},_0x3bcbd9={};_0x3bcbd9[_0x2a95('0x42')]=_[_0x2a95('0x44')](db['OpenchannelAccount'][_0x2a95('0x3f')]);_0x3bcbd9[_0x2a95('0x43')]=_[_0x2a95('0x44')](_0xe5fbb5[_0x2a95('0x43')]);_0x3bcbd9[_0x2a95('0x45')]=_[_0x2a95('0x46')](_0x3bcbd9['model'],_0x3bcbd9['query']);_0x3e61a7[_0x2a95('0x47')]=_['intersection'](_0x3bcbd9[_0x2a95('0x42')],qs[_0x2a95('0x48')](_0xe5fbb5[_0x2a95('0x43')][_0x2a95('0x48')]));_0x3e61a7[_0x2a95('0x47')]=_0x3e61a7[_0x2a95('0x47')]['length']?_0x3e61a7[_0x2a95('0x47')]:_0x3bcbd9[_0x2a95('0x42')];if(_0xe5fbb5[_0x2a95('0x43')]['includeAll']){_0x3e61a7[_0x2a95('0x53')]=[{'all':!![]}];}_0x3e61a7=_['merge']({},_0x3e61a7,_0xe5fbb5[_0x2a95('0x50')]);return db[_0x2a95('0x51')][_0x2a95('0x58')](_0x3e61a7)[_0x2a95('0x35')](handleEntityNotFound(_0x3a8560,null))[_0x2a95('0x35')](respondWithResult(_0x3a8560,null))[_0x2a95('0x27')](handleError(_0x3a8560,null));};exports['create']=function(_0x3e2d1e,_0x374d63){return db[_0x2a95('0x51')]['create'](_0x3e2d1e[_0x2a95('0x59')],{})[_0x2a95('0x35')](function(_0x5cc721){var _0x5a8fb7=_0x3e2d1e[_0x2a95('0x5a')][_0x2a95('0x36')]({'plain':!![]});if(!_0x5a8fb7)throw new Error(_0x2a95('0x5b'));if(_0x5a8fb7['role']===_0x2a95('0x5a')){var _0x486eca=_0x5cc721[_0x2a95('0x36')]({'plain':!![]});var _0x42fc38=_0x2a95('0x5c');return db['UserProfileSection'][_0x2a95('0x58')]({'where':{'name':_0x42fc38,'userProfileId':_0x5a8fb7[_0x2a95('0x5d')]},'raw':!![]})[_0x2a95('0x35')](function(_0x2c13ab){if(_0x2c13ab&&_0x2c13ab['autoAssociation']===0x0){return db[_0x2a95('0x37')][_0x2a95('0x5e')]({'name':_0x486eca[_0x2a95('0x39')],'resourceId':_0x486eca['id'],'type':_0x2c13ab[_0x2a95('0x39')],'sectionId':_0x2c13ab['id']},{})['then'](function(){return _0x5cc721;});}else{return _0x5cc721;}})[_0x2a95('0x27')](function(_0x938d2e){logger[_0x2a95('0x23')](_0x2a95('0x5f'),_0x938d2e);throw _0x938d2e;});}return _0x5cc721;})[_0x2a95('0x35')](respondWithResult(_0x374d63,0xc9))[_0x2a95('0x27')](handleError(_0x374d63,null));};exports['update']=function(_0x4a415f,_0x313cb8){if(_0x4a415f[_0x2a95('0x59')]['id']){delete _0x4a415f['body']['id'];}return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x4a415f[_0x2a95('0x57')]['id']},'include':[{'model':db[_0x2a95('0x3c')],'as':_0x2a95('0x3d')}]})[_0x2a95('0x35')](handleEntityNotFound(_0x313cb8,null))[_0x2a95('0x35')](saveUpdates(_0x4a415f[_0x2a95('0x59')],null))[_0x2a95('0x35')](respondWithResult(_0x313cb8,null))['catch'](handleError(_0x313cb8,null));};exports[_0x2a95('0x34')]=function(_0x53bf68,_0x1d1101){return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x53bf68[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x1d1101,null))[_0x2a95('0x35')](removeEntity(_0x1d1101,null))[_0x2a95('0x27')](handleError(_0x1d1101,null));};exports[_0x2a95('0x60')]=function(_0x43ce87,_0x526025){return db[_0x2a95('0x51')][_0x2a95('0x60')]()[_0x2a95('0x35')](respondWithResult(_0x526025,null))[_0x2a95('0x27')](handleError(_0x526025,null));};exports[_0x2a95('0x61')]=function(_0x9ec544,_0x4bb121,_0x27cfe5){if(_0x9ec544[_0x2a95('0x59')]['id']){delete _0x9ec544[_0x2a95('0x59')]['id'];}return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x9ec544[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x4bb121,null))[_0x2a95('0x35')](function(_0x319856){if(_0x319856){_0x9ec544[_0x2a95('0x59')][_0x2a95('0x62')]=_0x319856['id'];return db['Disposition'][_0x2a95('0x5e')](_0x9ec544[_0x2a95('0x59')]);}})['then'](respondWithResult(_0x4bb121,null))['catch'](handleError(_0x4bb121,null));};exports[_0x2a95('0x63')]=function(_0x5cbdfb,_0x28a0f0,_0x349bf2){var _0x110dc2={'raw':![],'where':{}};var _0x2b631e={};var _0xbb88d7={'count':0x0,'rows':[]};return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x5cbdfb[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x28a0f0,null))[_0x2a95('0x35')](function(_0x3ed164){if(_0x3ed164){_0x2b631e[_0x2a95('0x42')]=_['keys'](db[_0x2a95('0x65')][_0x2a95('0x3f')]);_0x2b631e[_0x2a95('0x43')]=_[_0x2a95('0x44')](_0x5cbdfb[_0x2a95('0x43')]);_0x2b631e[_0x2a95('0x45')]=_[_0x2a95('0x46')](_0x2b631e[_0x2a95('0x42')],_0x2b631e[_0x2a95('0x43')]);_0x110dc2[_0x2a95('0x47')]=_['intersection'](_0x2b631e[_0x2a95('0x42')],qs[_0x2a95('0x48')](_0x5cbdfb[_0x2a95('0x43')][_0x2a95('0x48')]));_0x110dc2[_0x2a95('0x47')]=_0x110dc2['attributes'][_0x2a95('0x49')]?_0x110dc2[_0x2a95('0x47')]:_0x2b631e['model'];if(!_0x5cbdfb[_0x2a95('0x43')][_0x2a95('0x66')](_0x2a95('0x4a'))){_0x110dc2[_0x2a95('0x2e')]=qs['limit'](_0x5cbdfb[_0x2a95('0x43')][_0x2a95('0x2e')]);_0x110dc2[_0x2a95('0x2c')]=qs[_0x2a95('0x2c')](_0x5cbdfb[_0x2a95('0x43')][_0x2a95('0x2c')]);}_0x110dc2[_0x2a95('0x67')]=qs[_0x2a95('0x4b')](_0x5cbdfb[_0x2a95('0x43')]['sort']);_0x110dc2[_0x2a95('0x4c')]=qs[_0x2a95('0x45')](_['pick'](_0x5cbdfb[_0x2a95('0x43')],_0x2b631e[_0x2a95('0x45')]));_0x110dc2[_0x2a95('0x4c')]['OpenchannelAccountId']=_0x3ed164['id'];if(_0x5cbdfb[_0x2a95('0x43')][_0x2a95('0x4f')]){_0x110dc2[_0x2a95('0x4c')]=_[_0x2a95('0x4d')](_0x110dc2[_0x2a95('0x4c')],{'$or':_['map'](_0x110dc2['attributes'],function(_0x4da06c){var _0x515e6f={};_0x515e6f[_0x4da06c]={'$like':'%'+_0x5cbdfb['query']['filter']+'%'};return _0x515e6f;})});}_0x110dc2=_['merge']({},_0x110dc2,_0x5cbdfb['options']);return db['Disposition'][_0x2a95('0x2f')]({'where':_0x110dc2[_0x2a95('0x4c')]})[_0x2a95('0x35')](function(_0x45f654){_0xbb88d7[_0x2a95('0x2f')]=_0x45f654;if(_0x5cbdfb[_0x2a95('0x43')]['includeAll']){_0x110dc2['include']=[{'all':!![]}];}return db[_0x2a95('0x65')][_0x2a95('0x54')](_0x110dc2);})['then'](function(_0x308b40){_0xbb88d7['rows']=_0x308b40;return _0xbb88d7;});}})[_0x2a95('0x35')](respondWithFilteredResult(_0x28a0f0,_0x110dc2))[_0x2a95('0x27')](handleError(_0x28a0f0,null));};exports['removeDispositions']=function(_0x3811e6,_0x8e16e2,_0x2a830a){return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x3811e6[_0x2a95('0x57')]['id']}})['then'](handleEntityNotFound(_0x8e16e2,null))[_0x2a95('0x35')](function(_0x2548fc){if(_0x2548fc){return _0x2548fc[_0x2a95('0x68')](_0x3811e6[_0x2a95('0x43')]['ids']);}})[_0x2a95('0x35')](respondWithStatusCode(_0x8e16e2,null))[_0x2a95('0x27')](handleError(_0x8e16e2,null));};exports['addAnswer']=function(_0x297610,_0x31ee33,_0x1f3508){if(_0x297610['body']['id']){delete _0x297610[_0x2a95('0x59')]['id'];}return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x297610[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x31ee33,null))['then'](function(_0x14fa78){if(_0x14fa78){_0x297610['body']['OpenchannelAccountId']=_0x14fa78['id'];return db[_0x2a95('0x69')]['create'](_0x297610['body']);}})[_0x2a95('0x35')](respondWithResult(_0x31ee33,null))[_0x2a95('0x27')](handleError(_0x31ee33,null));};exports['getAnswers']=function(_0x1689c2,_0x1b176e,_0x4b2c42){var _0x372ba5={'raw':![],'where':{}};var _0x4905b6={};var _0x5004b8={'count':0x0,'rows':[]};return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x1689c2[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x1b176e,null))[_0x2a95('0x35')](function(_0x2e06c6){if(_0x2e06c6){_0x4905b6[_0x2a95('0x42')]=_[_0x2a95('0x44')](db[_0x2a95('0x69')][_0x2a95('0x3f')]);_0x4905b6[_0x2a95('0x43')]=_['keys'](_0x1689c2[_0x2a95('0x43')]);_0x4905b6[_0x2a95('0x45')]=_['intersection'](_0x4905b6[_0x2a95('0x42')],_0x4905b6['query']);_0x372ba5[_0x2a95('0x47')]=_[_0x2a95('0x46')](_0x4905b6[_0x2a95('0x42')],qs[_0x2a95('0x48')](_0x1689c2[_0x2a95('0x43')][_0x2a95('0x48')]));_0x372ba5[_0x2a95('0x47')]=_0x372ba5[_0x2a95('0x47')][_0x2a95('0x49')]?_0x372ba5[_0x2a95('0x47')]:_0x4905b6[_0x2a95('0x42')];if(!_0x1689c2[_0x2a95('0x43')][_0x2a95('0x66')](_0x2a95('0x4a'))){_0x372ba5[_0x2a95('0x2e')]=qs[_0x2a95('0x2e')](_0x1689c2[_0x2a95('0x43')][_0x2a95('0x2e')]);_0x372ba5['offset']=qs[_0x2a95('0x2c')](_0x1689c2[_0x2a95('0x43')][_0x2a95('0x2c')]);}_0x372ba5['order']=qs[_0x2a95('0x4b')](_0x1689c2[_0x2a95('0x43')][_0x2a95('0x4b')]);_0x372ba5[_0x2a95('0x4c')]=qs[_0x2a95('0x45')](_['pick'](_0x1689c2['query'],_0x4905b6[_0x2a95('0x45')]));_0x372ba5[_0x2a95('0x4c')][_0x2a95('0x62')]=_0x2e06c6['id'];if(_0x1689c2['query'][_0x2a95('0x4f')]){_0x372ba5[_0x2a95('0x4c')]=_['merge'](_0x372ba5[_0x2a95('0x4c')],{'$or':_[_0x2a95('0x3e')](_0x372ba5[_0x2a95('0x47')],function(_0x27eb04){var _0x3427c9={};_0x3427c9[_0x27eb04]={'$like':'%'+_0x1689c2[_0x2a95('0x43')]['filter']+'%'};return _0x3427c9;})});}_0x372ba5=_['merge']({},_0x372ba5,_0x1689c2[_0x2a95('0x50')]);return db['CannedAnswer'][_0x2a95('0x2f')]({'where':_0x372ba5[_0x2a95('0x4c')]})['then'](function(_0x16c853){_0x5004b8['count']=_0x16c853;if(_0x1689c2[_0x2a95('0x43')][_0x2a95('0x52')]){_0x372ba5['include']=[{'all':!![]}];}return db[_0x2a95('0x69')][_0x2a95('0x54')](_0x372ba5);})[_0x2a95('0x35')](function(_0xbf47b9){_0x5004b8['rows']=_0xbf47b9;return _0x5004b8;});}})['then'](respondWithFilteredResult(_0x1b176e,_0x372ba5))['catch'](handleError(_0x1b176e,null));};exports[_0x2a95('0x6a')]=function(_0x1638dd,_0x4b5fed,_0x5eaa47){return db[_0x2a95('0x51')]['find']({'where':{'id':_0x1638dd['params']['id']}})['then'](handleEntityNotFound(_0x4b5fed,null))[_0x2a95('0x35')](function(_0x3fba39){if(_0x3fba39){return _0x3fba39[_0x2a95('0x6a')](_0x1638dd[_0x2a95('0x43')]['ids']);}})[_0x2a95('0x35')](respondWithStatusCode(_0x4b5fed,null))[_0x2a95('0x27')](handleError(_0x4b5fed,null));};exports[_0x2a95('0x6b')]=function(_0x39d41c,_0x1a89ac,_0x5b8a28){var _0x47c2d2={'body':_0x39d41c[_0x2a95('0x59')],'channel':_0x2a95('0x6c')};var _0x11ba49=[];var _0x4b84e9=[];var _0x1fa146={};var _0x522485=![];return db[_0x2a95('0x6d')][_0x2a95('0x60')]()[_0x2a95('0x35')](function(_0x4c272e){if(!_0x4c272e){throw new db[(_0x2a95('0x6e'))][(_0x2a95('0x6f'))]('no\x20available\x20attributes');}_0x11ba49=_[_0x2a95('0x70')](_[_0x2a95('0x44')](_0x4c272e),[_0x2a95('0x71'),_0x2a95('0x72')]);_0x4b84e9=_[_0x2a95('0x70')](_[_0x2a95('0x44')](_0x4c272e),['createdAt',_0x2a95('0x72'),_0x2a95('0x73'),_0x2a95('0x74')]);if(_0x39d41c[_0x2a95('0x59')]['id']){delete _0x39d41c[_0x2a95('0x59')]['id'];}if(_['isNil'](_0x39d41c[_0x2a95('0x59')][_0x2a95('0x75')])){throw new db[(_0x2a95('0x6e'))][(_0x2a95('0x6f'))](_0x2a95('0x76'));}if(_[_0x2a95('0x77')](_0x39d41c[_0x2a95('0x59')][_0x2a95('0x59')])||_0x39d41c['body'][_0x2a95('0x59')]===''){throw new db['Sequelize'][(_0x2a95('0x6f'))](_0x2a95('0x78'));}if(_[_0x2a95('0x77')](_0x39d41c[_0x2a95('0x59')][_0x2a95('0x79')])){throw new db[(_0x2a95('0x6e'))][(_0x2a95('0x6f'))](_0x2a95('0x7a')+_0x4b84e9);}if(!_[_0x2a95('0x7b')](_0x4b84e9,_0x39d41c[_0x2a95('0x59')][_0x2a95('0x79')])){throw new db[(_0x2a95('0x6e'))]['ValidationError'](_0x2a95('0x7c')+_0x4b84e9);}_0x1fa146[_0x39d41c[_0x2a95('0x59')][_0x2a95('0x79')]]=_0x39d41c[_0x2a95('0x59')][_0x2a95('0x75')];})['then'](function(){return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x39d41c[_0x2a95('0x57')]['id']},'include':[{'model':db[_0x2a95('0x7d')],'as':_0x2a95('0x7e'),'include':[{'model':db[_0x2a95('0x6d')],'as':_0x2a95('0x7f'),'where':_0x1fa146,'limit':0x1,'order':[['updatedAt',_0x2a95('0x80')]]}]},{'model':db['OpenchannelApplication'],'as':_0x2a95('0x81')}]});})[_0x2a95('0x35')](handleEntityNotFound(_0x1a89ac,null))[_0x2a95('0x35')](function(_0x32ac8c){if(_0x32ac8c&&_0x32ac8c[_0x2a95('0x7e')]){_0x47c2d2[_0x2a95('0x82')]=_0x32ac8c;_0x47c2d2[_0x2a95('0x83')]=_0x32ac8c[_0x2a95('0x81')];_0x47c2d2[_0x2a95('0x84')]=_0x32ac8c[_0x2a95('0x7e')];_0x47c2d2[_0x2a95('0x83')]=_[_0x2a95('0x85')](_0x47c2d2[_0x2a95('0x83')],['priority'],['asc']);if(_0x47c2d2[_0x2a95('0x82')][_0x2a95('0x81')]){delete _0x47c2d2[_0x2a95('0x82')][_0x2a95('0x81')];}if(_0x47c2d2[_0x2a95('0x82')][_0x2a95('0x7e')]&&_0x47c2d2[_0x2a95('0x82')]['List'][_0x2a95('0x7f')]['length']){return _0x47c2d2['account']['List'][_0x2a95('0x7f')][0x0];}var _0x218629=_['defaults'](_0x39d41c[_0x2a95('0x59')],{'firstName':_0x39d41c[_0x2a95('0x59')][_0x2a95('0x75')],'ListId':_0x32ac8c[_0x2a95('0x74')]});_0x218629[_0x39d41c[_0x2a95('0x59')][_0x2a95('0x79')]]=_0x39d41c[_0x2a95('0x59')][_0x2a95('0x75')];return db[_0x2a95('0x6d')][_0x2a95('0x5e')](_0x218629,{'fields':_0x11ba49,'raw':!![]});}})[_0x2a95('0x35')](handleEntityNotFound(_0x1a89ac,null))['then'](function(_0x492283){_0x47c2d2[_0x2a95('0x86')]=_0x492283;if(_0x492283){var _0x2df9f3={'ContactId':_0x492283['id'],'OpenchannelAccountId':_0x39d41c[_0x2a95('0x57')]['id'],'from':(_0x492283[_0x2a95('0x87')]||'')+'\x20'+(_0x492283[_0x2a95('0x88')]||'')};var _0x3e5788={'OpenchannelAccountId':_0x39d41c[_0x2a95('0x57')]['id'],'closed':![]};if(_0x39d41c[_0x2a95('0x59')][_0x2a95('0x89')]){_0x3e5788[_0x2a95('0x89')]=_0x39d41c['body'][_0x2a95('0x89')];return db[_0x2a95('0x8a')][_0x2a95('0x58')]({'where':_0x3e5788})[_0x2a95('0x35')](function(_0xfad9f4){if(_0xfad9f4){return[_0xfad9f4,![]];}_0x2df9f3[_0x2a95('0x89')]=_0x39d41c['body'][_0x2a95('0x89')];_0x2df9f3[_0x2a95('0x8b')]=_0x39d41c[_0x2a95('0x59')][_0x2a95('0x8b')];return db['OpenchannelInteraction'][_0x2a95('0x5e')](_0x2df9f3)[_0x2a95('0x35')](function(_0x9d2153){return[_0x9d2153,!![]];});});}else{_0x3e5788[_0x2a95('0x89')]=null;}_0x3e5788[_0x2a95('0x8c')]=_0x492283['id'];return db[_0x2a95('0x8a')][_0x2a95('0x58')]({'where':_0x3e5788})[_0x2a95('0x35')](function(_0x41fde6){if(_0x41fde6){return[_0x41fde6,![]];}return db['OpenchannelInteraction']['create'](_0x2df9f3)[_0x2a95('0x35')](function(_0x4ce7dc){return[_0x4ce7dc,!![]];});});}})['spread'](function(_0x28c532,_0x5a2744){if(_0x28c532){_0x522485=_0x5a2744;if(!_0x5a2744){var _0xdd5baa={'from':(_0x47c2d2[_0x2a95('0x86')]['firstName']||'')+'\x20'+(_0x47c2d2[_0x2a95('0x86')][_0x2a95('0x88')]||'')};if(_0x39d41c[_0x2a95('0x59')]['threadId']&&_0x39d41c[_0x2a95('0x59')][_0x2a95('0x8d')]&&_0x39d41c[_0x2a95('0x59')][_0x2a95('0x89')]!=_0x39d41c[_0x2a95('0x59')][_0x2a95('0x8d')]){_0xdd5baa[_0x2a95('0x89')]=_0x39d41c[_0x2a95('0x59')][_0x2a95('0x8d')];}return _0x28c532[_0x2a95('0x33')](_0xdd5baa);}else{return _0x28c532;}}})['then'](function(_0x33fc50){_0x47c2d2['interaction']=_0x33fc50[_0x2a95('0x36')]({'plain':!![]});_0x47c2d2[_0x2a95('0x8e')][_0x2a95('0x8f')]=_0x522485;if(_0x47c2d2[_0x2a95('0x8e')]['created']){if(_0x47c2d2[_0x2a95('0x82')][_0x2a95('0x90')]){_0x47c2d2['applications'][_0x2a95('0x91')]({'id':0x0,'priority':_0x47c2d2[_0x2a95('0x83')][_0x2a95('0x49')]+0x1,'app':_0x2a95('0x92'),'appdata':_0x2a95('0x93'),'interval':_0x2a95('0x94')});}}return db['OpenchannelMessage'][_0x2a95('0x5e')]({'body':_0x39d41c[_0x2a95('0x59')][_0x2a95('0x59')],'OpenchannelAccountId':_0x39d41c[_0x2a95('0x57')]['id'],'OpenchannelInteractionId':_0x33fc50['id'],'direction':'in','ContactId':_0x47c2d2[_0x2a95('0x86')]['id'],'AttachmentId':_0x39d41c[_0x2a95('0x59')][_0x2a95('0x95')]});})[_0x2a95('0x35')](function(_0x442d28){_0x47c2d2['message']=_0x442d28;if(_0x47c2d2[_0x2a95('0x8e')]['UserId']){return db['User'][_0x2a95('0x58')]({'attributes':['id',_0x2a95('0x39')],'where':{'id':_0x47c2d2[_0x2a95('0x8e')][_0x2a95('0x96')]}})['then'](function(_0x39d935){if(_0x39d935){_0x47c2d2[_0x2a95('0x83')][_0x2a95('0x97')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x39d935[_0x2a95('0x39')]+','+(_0x47c2d2[_0x2a95('0x82')][_0x2a95('0x98')]||0xa),'interval':'*,*,*,*'});_0x47c2d2[_0x2a95('0x99')]=![];}return respondWithRpcPromise('Start',_0x2a95('0x9a'),_0x47c2d2);});}return respondWithRpcPromise(_0x2a95('0x9b'),'startRouting',_0x47c2d2);})[_0x2a95('0x35')](function(_0x34d08a){respondWithRpcPromise(_0x2a95('0x9c'),_0x2a95('0x9c'),{'event':'notify','message':_0x34d08a},client9002);return _0x34d08a;})['then'](respondWithResult(_0x1a89ac,null))[_0x2a95('0x27')](handleError(_0x1a89ac,null));};exports[_0x2a95('0x9d')]=function(_0x28c465,_0x2f01fe){var _0x5542ab=_0x28c465[_0x2a95('0x57')]['id'];var _0x5c580c=_0x28c465['body'];var _0xed058f=0xc8;var _0x4059c9=null;return db['sequelize'][_0x2a95('0x9e')]({'isolationLevel':db['sequelize'][_0x2a95('0x9f')][_0x2a95('0xa0')][_0x2a95('0xa1')]},function(_0x1d4fd8){return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x5542ab},'transaction':_0x1d4fd8})[_0x2a95('0x35')](function(_0x51dc3f){if(_0x51dc3f){return db[_0x2a95('0xa2')][_0x2a95('0x34')]({'where':{'OpenchannelAccountId':_0x5542ab},'transaction':_0x1d4fd8})['then'](function(){var _0x3fabcd=_[_0x2a95('0x3e')](_0x5c580c,function(_0x1ebd5d){_0x1ebd5d['OpenchannelAccountId']=_0x5542ab;return _0x1ebd5d;});return db[_0x2a95('0xa2')][_0x2a95('0xa3')](_0x3fabcd,{'transaction':_0x1d4fd8});});}else{_0xed058f=0x194;_0x4059c9=[];}});})[_0x2a95('0x35')](function(){if(_0xed058f!==0x194){return db[_0x2a95('0xa2')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x5542ab},'order':_0x2a95('0xa4')})['then'](function(_0x513b73){_0x4059c9=_0x513b73;});}})['catch'](function(_0x2f61bc){_0xed058f=0x1f4;logger['error'](_0x2f61bc['stack']);if(_0x2f61bc[_0x2a95('0x39')]){delete _0x2f61bc[_0x2a95('0x39')];}_0x4059c9=_0x2f61bc;})[_0x2a95('0xa5')](function(){if(_0x4059c9===null){_0x2f01fe[_0x2a95('0x28')](_0xed058f);}else{if(_0xed058f===0x1f4){_0x2f01fe[_0x2a95('0x29')](_0xed058f)['send'](_0x4059c9);}else{_0x2f01fe[_0x2a95('0x29')](_0xed058f)[_0x2a95('0x2b')](_0x4059c9);}}});};exports[_0x2a95('0xa6')]=function(_0x28491f,_0x116d36,_0x548ca2){var _0x3e54f6={};var _0xaa60f9={};var _0x1fc21c;var _0x31d336;return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x28491f['params']['id']}})['then'](handleEntityNotFound(_0x116d36,null))[_0x2a95('0x35')](function(_0x1f0954){if(_0x1f0954){_0x1fc21c=_0x1f0954;_0xaa60f9[_0x2a95('0x42')]=_[_0x2a95('0x44')](db[_0x2a95('0xa2')][_0x2a95('0x3f')]);_0xaa60f9[_0x2a95('0x43')]=_[_0x2a95('0x44')](_0x28491f[_0x2a95('0x43')]);_0xaa60f9[_0x2a95('0x45')]=_[_0x2a95('0x46')](_0xaa60f9['model'],_0xaa60f9[_0x2a95('0x43')]);_0x3e54f6[_0x2a95('0x47')]=_[_0x2a95('0x46')](_0xaa60f9[_0x2a95('0x42')],qs[_0x2a95('0x48')](_0x28491f['query']['fields']));_0x3e54f6['attributes']=_0x3e54f6[_0x2a95('0x47')][_0x2a95('0x49')]?_0x3e54f6[_0x2a95('0x47')]:_0xaa60f9['model'];_0x3e54f6['order']=qs[_0x2a95('0x4b')](_0x28491f[_0x2a95('0x43')]['sort']);_0x3e54f6['where']=qs['filters'](_[_0x2a95('0xa7')](_0x28491f[_0x2a95('0x43')],_0xaa60f9['filters']));if(_0x28491f[_0x2a95('0x43')][_0x2a95('0x4f')]){_0x3e54f6['where']=_[_0x2a95('0x4d')](_0x3e54f6[_0x2a95('0x4c')],{'$or':_['map'](_0x3e54f6[_0x2a95('0x47')],function(_0x2fe5b5){var _0x4dfefe={};_0x4dfefe[_0x2fe5b5]={'$like':'%'+_0x28491f['query'][_0x2a95('0x4f')]+'%'};return _0x4dfefe;})});}_0x3e54f6=_['merge']({},_0x3e54f6,_0x28491f[_0x2a95('0x50')]);return _0x1fc21c[_0x2a95('0xa6')](_0x3e54f6);}})[_0x2a95('0x35')](function(_0x5d6e41){if(_0x5d6e41){_0x31d336=_0x5d6e41['length'];if(!_0x28491f[_0x2a95('0x43')][_0x2a95('0x66')](_0x2a95('0x4a'))){_0x3e54f6[_0x2a95('0x2e')]=qs[_0x2a95('0x2e')](_0x28491f[_0x2a95('0x43')][_0x2a95('0x2e')]);_0x3e54f6[_0x2a95('0x2c')]=qs[_0x2a95('0x2c')](_0x28491f[_0x2a95('0x43')][_0x2a95('0x2c')]);}return _0x1fc21c[_0x2a95('0xa6')](_0x3e54f6);}})[_0x2a95('0x35')](function(_0x577e1e){if(_0x577e1e){return _0x577e1e?{'count':_0x31d336,'rows':_0x577e1e}:null;}})[_0x2a95('0x35')](respondWithResult(_0x116d36,null))[_0x2a95('0x27')](handleError(_0x116d36,null));};exports[_0x2a95('0xa8')]=function(_0x31a082,_0x6d5789,_0x405c54){var _0x3ff4c6={'raw':![],'where':{}};var _0x4ba718={};var _0x5aec0c={'count':0x0,'rows':[]};return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x31a082[_0x2a95('0x57')]['id']}})['then'](handleEntityNotFound(_0x6d5789,null))[_0x2a95('0x35')](function(_0x3a14e8){if(_0x3a14e8){_0x4ba718[_0x2a95('0x42')]=_[_0x2a95('0x44')](db[_0x2a95('0x8a')][_0x2a95('0x3f')]);_0x4ba718[_0x2a95('0x43')]=_[_0x2a95('0x44')](_0x31a082[_0x2a95('0x43')]);_0x4ba718[_0x2a95('0x45')]=_[_0x2a95('0x46')](_0x4ba718[_0x2a95('0x42')],_0x4ba718['query']);_0x3ff4c6[_0x2a95('0x47')]=_[_0x2a95('0x46')](_0x4ba718['model'],qs['fields'](_0x31a082[_0x2a95('0x43')][_0x2a95('0x48')]));_0x3ff4c6['attributes']=_0x3ff4c6[_0x2a95('0x47')][_0x2a95('0x49')]?_0x3ff4c6[_0x2a95('0x47')]:_0x4ba718[_0x2a95('0x42')];if(!_0x31a082[_0x2a95('0x43')][_0x2a95('0x66')](_0x2a95('0x4a'))){_0x3ff4c6[_0x2a95('0x2e')]=qs[_0x2a95('0x2e')](_0x31a082[_0x2a95('0x43')][_0x2a95('0x2e')]);_0x3ff4c6['offset']=qs[_0x2a95('0x2c')](_0x31a082[_0x2a95('0x43')][_0x2a95('0x2c')]);}_0x3ff4c6[_0x2a95('0x67')]=qs[_0x2a95('0x4b')](_0x31a082[_0x2a95('0x43')][_0x2a95('0x4b')]);_0x3ff4c6[_0x2a95('0x4c')]=qs[_0x2a95('0x45')](_[_0x2a95('0xa7')](_0x31a082[_0x2a95('0x43')],_0x4ba718[_0x2a95('0x45')]));_0x3ff4c6[_0x2a95('0x4c')][_0x2a95('0x62')]=_0x3a14e8['id'];if(_0x31a082[_0x2a95('0x43')]['filter']){_0x3ff4c6[_0x2a95('0x4c')]=_[_0x2a95('0x4d')](_0x3ff4c6[_0x2a95('0x4c')],{'$or':_[_0x2a95('0x3e')](_0x3ff4c6[_0x2a95('0x47')],function(_0x293aa9){var _0x5475dd={};_0x5475dd[_0x293aa9]={'$like':'%'+_0x31a082[_0x2a95('0x43')]['filter']+'%'};return _0x5475dd;})});}_0x3ff4c6=_[_0x2a95('0x4d')]({},_0x3ff4c6,_0x31a082[_0x2a95('0x50')]);return db[_0x2a95('0x8a')]['count']({'where':_0x3ff4c6[_0x2a95('0x4c')]})[_0x2a95('0x35')](function(_0x364ed2){_0x5aec0c[_0x2a95('0x2f')]=_0x364ed2;if(_0x31a082[_0x2a95('0x43')][_0x2a95('0x52')]){_0x3ff4c6[_0x2a95('0x53')]=[{'model':db[_0x2a95('0x6d')],'as':_0x2a95('0xa9'),'required':![]},{'model':db['User'],'as':_0x2a95('0xaa'),'attributes':[_0x2a95('0x39'),_0x2a95('0xab'),'internal'],'required':![]},{'model':db['Tag'],'as':_0x2a95('0xac'),'attributes':['id',_0x2a95('0x39'),_0x2a95('0xad')],'where':_0x31a082[_0x2a95('0x43')][_0x2a95('0xae')]?{'id':_0x31a082['query'][_0x2a95('0xae')]}:undefined,'required':_0x31a082['query'][_0x2a95('0xae')]?!![]:![]}];}return db[_0x2a95('0x8a')][_0x2a95('0x54')](_0x3ff4c6);})[_0x2a95('0x35')](function(_0x424803){_0x5aec0c[_0x2a95('0x55')]=_0x424803;return _0x5aec0c;});}})['then'](respondWithFilteredResult(_0x6d5789,_0x3ff4c6))['catch'](handleError(_0x6d5789,null));};exports[_0x2a95('0xaf')]=function(_0x2aab56,_0x686d27,_0x270e86){return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x2aab56[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x686d27,null))[_0x2a95('0x35')](function(_0x5eed24){if(_0x5eed24){return _0x5eed24[_0x2a95('0xaf')](_0x2aab56[_0x2a95('0x59')][_0x2a95('0xb0')],_[_0x2a95('0xb1')](_0x2aab56[_0x2a95('0x59')],[_0x2a95('0xb0'),'id'])||{})[_0x2a95('0xb2')](function(_0x50a81a){for(var _0x3fa1d1=0x0;_0x3fa1d1<_0x2aab56[_0x2a95('0x59')][_0x2a95('0xb0')][_0x2a95('0x49')];_0x3fa1d1+=0x1){socket[_0x2a95('0xb3')](_0x2a95('0xb4'),{'UserId':Number(_0x2aab56[_0x2a95('0x59')][_0x2a95('0xb0')][_0x3fa1d1]),'OpenchannelAccountId':Number(_0x2aab56['params']['id'])});}return _0x50a81a;});}})[_0x2a95('0x35')](respondWithResult(_0x686d27,null))[_0x2a95('0x27')](handleError(_0x686d27,null));};exports[_0x2a95('0xb5')]=function(_0x4966e9,_0x4dbe81,_0x22199a){return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x4966e9[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x4dbe81,null))[_0x2a95('0x35')](function(_0x9a41df){if(_0x9a41df){return _0x9a41df[_0x2a95('0xb5')](_0x4966e9[_0x2a95('0x43')][_0x2a95('0xb0')])[_0x2a95('0x35')](function(){if(_[_0x2a95('0xb6')](_0x4966e9[_0x2a95('0x43')]['ids'])){for(var _0x4a689e=0x0;_0x4a689e<_0x4966e9[_0x2a95('0x43')][_0x2a95('0xb0')][_0x2a95('0x49')];_0x4a689e+=0x1){socket[_0x2a95('0xb3')](_0x2a95('0xb7'),{'UserId':Number(_0x4966e9[_0x2a95('0x43')][_0x2a95('0xb0')][_0x4a689e]),'OpenchannelAccountId':Number(_0x4966e9['params']['id'])});}}else{socket[_0x2a95('0xb3')]('userOpenchannelAccount:remove',{'UserId':Number(_0x4966e9[_0x2a95('0x43')][_0x2a95('0xb0')]),'OpenchannelAccountId':Number(_0x4966e9[_0x2a95('0x57')]['id'])});}});}})[_0x2a95('0x35')](respondWithStatusCode(_0x4dbe81,null))[_0x2a95('0x27')](handleError(_0x4dbe81,null));};exports[_0x2a95('0xb8')]=function(_0x20e951,_0x560dc3,_0x3e2181){var _0xa6f365={};var _0x2fa8ec={};var _0x26da01;var _0x36936f;return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x20e951[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x560dc3,null))[_0x2a95('0x35')](function(_0x1582be){if(_0x1582be){_0x26da01=_0x1582be;_0x2fa8ec[_0x2a95('0x42')]=_[_0x2a95('0x44')](db['User'][_0x2a95('0x3f')]);_0x2fa8ec[_0x2a95('0x43')]=_[_0x2a95('0x44')](_0x20e951[_0x2a95('0x43')]);_0x2fa8ec[_0x2a95('0x45')]=_[_0x2a95('0x46')](_0x2fa8ec['model'],_0x2fa8ec[_0x2a95('0x43')]);_0xa6f365['attributes']=_[_0x2a95('0x46')](_0x2fa8ec['model'],qs[_0x2a95('0x48')](_0x20e951[_0x2a95('0x43')]['fields']));_0xa6f365[_0x2a95('0x47')]=_0xa6f365[_0x2a95('0x47')]['length']?_0xa6f365[_0x2a95('0x47')]:_0x2fa8ec[_0x2a95('0x42')];_0xa6f365['order']=qs[_0x2a95('0x4b')](_0x20e951[_0x2a95('0x43')][_0x2a95('0x4b')]);_0xa6f365[_0x2a95('0x4c')]=qs[_0x2a95('0x45')](_['pick'](_0x20e951[_0x2a95('0x43')],_0x2fa8ec[_0x2a95('0x45')]));if(_0x20e951[_0x2a95('0x43')][_0x2a95('0x4f')]){_0xa6f365[_0x2a95('0x4c')]=_['merge'](_0xa6f365[_0x2a95('0x4c')],{'$or':_[_0x2a95('0x3e')](_0xa6f365[_0x2a95('0x47')],function(_0x2264c7){var _0x33ac1a={};_0x33ac1a[_0x2264c7]={'$like':'%'+_0x20e951[_0x2a95('0x43')]['filter']+'%'};return _0x33ac1a;})});}_0xa6f365=_[_0x2a95('0x4d')]({},_0xa6f365,_0x20e951['options']);return _0x26da01[_0x2a95('0xb8')](_0xa6f365);}})['then'](function(_0x38e2b5){if(_0x38e2b5){_0x36936f=_0x38e2b5[_0x2a95('0x49')];if(!_0x20e951[_0x2a95('0x43')][_0x2a95('0x66')]('nolimit')){_0xa6f365[_0x2a95('0x2e')]=qs[_0x2a95('0x2e')](_0x20e951['query']['limit']);_0xa6f365[_0x2a95('0x2c')]=qs[_0x2a95('0x2c')](_0x20e951[_0x2a95('0x43')][_0x2a95('0x2c')]);}return _0x26da01[_0x2a95('0xb8')](_0xa6f365);}})[_0x2a95('0x35')](function(_0x3a7ee7){if(_0x3a7ee7){return _0x3a7ee7?{'count':_0x36936f,'rows':_0x3a7ee7}:null;}})[_0x2a95('0x35')](respondWithResult(_0x560dc3,null))[_0x2a95('0x27')](handleError(_0x560dc3,null));};exports[_0x2a95('0x3a')]=function(_0x26809d,_0x29bc5c,_0x93ce05){var _0x5daf0e,_0x48a969,_0x3ae72d;if(_[_0x2a95('0x77')](_0x26809d['body'][_0x2a95('0x59')])||_0x26809d[_0x2a95('0x59')][_0x2a95('0x59')]===''){throw new db[(_0x2a95('0x6e'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x26809d[_0x2a95('0x59')]['to'])){}_0x5daf0e=_0x26809d[_0x2a95('0x59')]['to'];return db[_0x2a95('0x51')][_0x2a95('0x64')]({'where':{'id':_0x26809d[_0x2a95('0x57')]['id']}})[_0x2a95('0x35')](handleEntityNotFound(_0x29bc5c,null))['then'](function(_0x3e19d6){if(_0x3e19d6){return db[_0x2a95('0x51')][_0x2a95('0x58')]({'where':{'id':_0x3e19d6['id']},'include':[{'model':db[_0x2a95('0x7d')],'as':_0x2a95('0x7e'),'include':[{'model':db['CmContact'],'as':_0x2a95('0x7f'),'where':{[_0x3e19d6[_0x2a95('0x79')]]:_0x5daf0e},'limit':0x1,'order':[[_0x2a95('0x72'),_0x2a95('0x80')]]}]}]})['then'](handleEntityNotFound(_0x29bc5c,null))[_0x2a95('0x35')](function(_0x325cd0){if(_0x325cd0&&_0x325cd0['List']){_0x48a969=_0x325cd0[_0x2a95('0x36')]({'plain':!![]});if(_0x48a969[_0x2a95('0x7e')]&&_0x48a969[_0x2a95('0x7e')][_0x2a95('0x7f')][_0x2a95('0x49')]){return _0x48a969[_0x2a95('0x7e')][_0x2a95('0x7f')][0x0];}return db[_0x2a95('0x6d')][_0x2a95('0x5e')](_[_0x2a95('0x15')](_0x26809d[_0x2a95('0x59')],{'firstName':_0x5daf0e,[_0x325cd0[_0x2a95('0x79')]]:_0x5daf0e,'phone':_0x5daf0e,'ListId':_0x48a969['ListId']}));}})['then'](handleEntityNotFound(_0x29bc5c,null))['then'](function(_0x2fa554){if(_0x2fa554){_0x3ae72d=_0x2fa554;return db[_0x2a95('0x8a')][_0x2a95('0x58')]({'where':{'ContactId':_0x3ae72d['id'],'closed':![],'OpenchannelAccountId':_0x48a969['id']}})[_0x2a95('0x35')](function(_0x121c6e){if(_0x121c6e){return[_0x121c6e,![]];}return db['OpenchannelInteraction'][_0x2a95('0x5e')]({'UserId':_0x26809d[_0x2a95('0x5a')]['id'],'ContactId':_0x3ae72d['id'],'OpenchannelAccountId':_0x48a969['id'],'lastMsgDirection':'out','firstMsgDirection':_0x2a95('0xb9'),'Messages':[_[_0x2a95('0x4d')](_0x26809d[_0x2a95('0x59')],{'read':![],'body':_0x26809d[_0x2a95('0x59')][_0x2a95('0x59')],'OpenchannelAccountId':_0x48a969['id'],'UserId':_0x26809d['user']['id'],'ContactId':_0x3ae72d['id']})]},{'include':[{'model':db[_0x2a95('0xba')],'as':_0x2a95('0xbb')}]})[_0x2a95('0x35')](function(_0xf52eb3){return[_0xf52eb3,!![]];});});}})[_0x2a95('0xb2')](function(_0x2d5fa2,_0x470617){if(_0x470617){return _0x2d5fa2;}return db['OpenchannelMessage'][_0x2a95('0x5e')](_[_0x2a95('0x4d')](_0x26809d[_0x2a95('0x59')],{'read':![],'body':_0x26809d['body'][_0x2a95('0x59')],'OpenchannelAccountId':_0x48a969['id'],'OpenchannelInteractionId':_0x2d5fa2['id'],'UserId':_0x26809d['user']['id'],'ContactId':_0x3ae72d['id']}))['then'](function(_0x1f8679){_0x2d5fa2[_0x2a95('0xbc')][_0x2a95('0xbb')]=[];_0x2d5fa2[_0x2a95('0xbc')][_0x2a95('0xbb')][_0x2a95('0x91')](_0x1f8679[_0x2a95('0xbc')]);return _0x2d5fa2;});});}})['then'](respondWithResult(_0x29bc5c,null))['catch'](handleError(_0x29bc5c,null));};
\ No newline at end of file
+var _0xcf4c=['addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','CmList','mapKey','out','OpenchannelMessage','Messages','dataValues','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','rawAttributes','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','describe','addDisposition','getDispositions','findOne','pick','Disposition','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','OpenchannelAccountId','removeAnswers','notify','openchannel','Sequelize','difference','updatedAt','createdAt','CompanyId','isNil','from','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','OpenchannelApplication','account','applications','Applications','list','orderBy','asc','Contacts','defaults','ListId','CmContact','contact','firstName','lastName','threadId','externalUrl','ContactId','OpenchannelInteraction','spread','messageId','interaction','created','push','close','unmanaged','AttachmentId','UserId','User','unshift','agent','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','priority','finally','sendStatus','getApplications','Contact','Owner','fullname','internal','Tags','color','tag'];(function(_0x57532c,_0x2c75cf){var _0x5cb9a6=function(_0x3a4dea){while(--_0x3a4dea){_0x57532c['push'](_0x57532c['shift']());}};_0x5cb9a6(++_0x2c75cf);}(_0xcf4c,0x19a));var _0xccf4=function(_0x30e6a4,_0x2aa318){_0x30e6a4=_0x30e6a4-0x0;var _0x1effd3=_0xcf4c[_0x30e6a4];return _0x1effd3;};'use strict';var emlformat=require(_0xccf4('0x0'));var rimraf=require(_0xccf4('0x1'));var zipdir=require(_0xccf4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xccf4('0x3'));var moment=require(_0xccf4('0x4'));var BPromise=require(_0xccf4('0x5'));var Mustache=require(_0xccf4('0x6'));var util=require(_0xccf4('0x7'));var path=require(_0xccf4('0x8'));var sox=require(_0xccf4('0x9'));var csv=require(_0xccf4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xccf4('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xccf4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xccf4('0xa'));var querystring=require(_0xccf4('0xd'));var Papa=require('papaparse');var Redis=require(_0xccf4('0xe'));var authService=require(_0xccf4('0xf'));var qs=require(_0xccf4('0x10'));var as=require(_0xccf4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xccf4('0x12'))(_0xccf4('0x13'));var utils=require('../../config/utils');var config=require(_0xccf4('0x14'));var licenseUtil=require(_0xccf4('0x15'));var db=require(_0xccf4('0x16'))['db'];config[_0xccf4('0x17')]=_['defaults'](config[_0xccf4('0x17')],{'host':_0xccf4('0x18'),'port':0x18eb});var socket=require(_0xccf4('0x19'))(new Redis(config['redis']));require(_0xccf4('0x1a'))['register'](socket);var jayson=require(_0xccf4('0x1b'));var client=jayson[_0xccf4('0x1c')][_0xccf4('0x1d')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x10e2ec,_0x2dc2b7,_0xd324a0,_0x551c86){return new BPromise(function(_0x495b86,_0x5c84f1){var _0x3be26a=_0x551c86||client;return _0x3be26a[_0xccf4('0x1e')](_0x10e2ec,_0xd324a0)['then'](function(_0x204b51){logger[_0xccf4('0x1f')](_0xccf4('0x20'),_0x2dc2b7,_0xccf4('0x21'));logger[_0xccf4('0x22')](_0xccf4('0x23'),_0x2dc2b7,_0xccf4('0x21'),JSON[_0xccf4('0x24')](_0x204b51));if(_0x204b51[_0xccf4('0x25')]){if(_0x204b51[_0xccf4('0x25')][_0xccf4('0x26')]===0x1f4){logger[_0xccf4('0x25')](_0xccf4('0x20'),_0x2dc2b7,_0x204b51[_0xccf4('0x25')][_0xccf4('0x27')]);return _0x5c84f1(_0x204b51[_0xccf4('0x25')][_0xccf4('0x27')]);}logger['error'](_0xccf4('0x20'),_0x2dc2b7,_0x204b51[_0xccf4('0x25')][_0xccf4('0x27')]);return _0x495b86(_0x204b51[_0xccf4('0x25')][_0xccf4('0x27')]);}else{logger[_0xccf4('0x1f')]('OpenchannelAccount,\x20%s,\x20%s',_0x2dc2b7,_0xccf4('0x21'));_0x495b86(_0x204b51[_0xccf4('0x28')][_0xccf4('0x27')]);}})[_0xccf4('0x29')](function(_0x23fd67){logger[_0xccf4('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x2dc2b7,_0x23fd67);_0x5c84f1(_0x23fd67);});});}function respondWithStatusCode(_0x325275,_0x171e30){_0x171e30=_0x171e30||0xcc;return function(_0x244593){if(_0x244593){return _0x325275['sendStatus'](_0x171e30);}return _0x325275[_0xccf4('0x2a')](_0x171e30)[_0xccf4('0x2b')]();};}function respondWithResult(_0x181c7e,_0x92cafa){_0x92cafa=_0x92cafa||0xc8;return function(_0x253d34){if(_0x253d34){return _0x181c7e[_0xccf4('0x2a')](_0x92cafa)[_0xccf4('0x2c')](_0x253d34);}};}function respondWithFilteredResult(_0xe024e0,_0x40ddff){return function(_0x1910af){if(_0x1910af){var _0x241734=typeof _0x40ddff[_0xccf4('0x2d')]===_0xccf4('0x2e')&&typeof _0x40ddff[_0xccf4('0x2f')]===_0xccf4('0x2e');var _0xf7dbd2=_0x1910af[_0xccf4('0x30')];var _0x3924d8=_0x241734?0x0:_0x40ddff[_0xccf4('0x2d')];var _0x46c68a=_0x241734?_0x1910af[_0xccf4('0x30')]:_0x40ddff[_0xccf4('0x2d')]+_0x40ddff['limit'];var _0x2d914e;if(_0x46c68a>=_0xf7dbd2){_0x46c68a=_0xf7dbd2;_0x2d914e=0xc8;}else{_0x2d914e=0xce;}_0xe024e0['status'](_0x2d914e);return _0xe024e0[_0xccf4('0x31')](_0xccf4('0x32'),_0x3924d8+'-'+_0x46c68a+'/'+_0xf7dbd2)[_0xccf4('0x2c')](_0x1910af);}return null;};}function patchUpdates(_0x5b0ae2){return function(_0x2bed51){try{jsonpatch[_0xccf4('0x33')](_0x2bed51,_0x5b0ae2,!![]);}catch(_0xde9e74){return BPromise['reject'](_0xde9e74);}return _0x2bed51[_0xccf4('0x34')]();};}function saveUpdates(_0x5f1567,_0x2e6a85){return function(_0x27000f){if(_0x27000f){return _0x27000f[_0xccf4('0x35')](_0x5f1567)[_0xccf4('0x36')](function(_0x3f9f82){return _0x3f9f82;});}return null;};}function removeEntity(_0x346def,_0x21c2f9){return function(_0x27499a){if(_0x27499a){return _0x27499a[_0xccf4('0x37')]()[_0xccf4('0x36')](function(){var _0x130cc3=_0x27499a[_0xccf4('0x38')]({'plain':!![]});var _0x58ff74=_0xccf4('0x39');return db['UserProfileResource'][_0xccf4('0x37')]({'where':{'type':_0x58ff74,'resourceId':_0x130cc3['id']}})['then'](function(){return _0x27499a;});})[_0xccf4('0x36')](function(){_0x346def[_0xccf4('0x2a')](0xcc)[_0xccf4('0x2b')]();});}};}function handleEntityNotFound(_0x1beb6f,_0x167992){return function(_0x405af7){if(!_0x405af7){_0x1beb6f['sendStatus'](0x194);}return _0x405af7;};}function handleError(_0xdab8d2,_0x2dce20){_0x2dce20=_0x2dce20||0x1f4;return function(_0x1c39cf){logger[_0xccf4('0x25')](_0x1c39cf[_0xccf4('0x3a')]);if(_0x1c39cf[_0xccf4('0x3b')]){delete _0x1c39cf[_0xccf4('0x3b')];}_0xdab8d2[_0xccf4('0x2a')](_0x2dce20)[_0xccf4('0x3c')](_0x1c39cf);};}exports[_0xccf4('0x3d')]=function(_0x4df804,_0x3d664b){var _0x5a3a53={'include':[{'model':db[_0xccf4('0x3e')],'as':_0xccf4('0x3f')}]},_0x1ddd42={},_0x344eff={'count':0x0,'rows':[]};var _0x3bebe3=_['map'](db[_0xccf4('0x40')]['rawAttributes'],function(_0x4ebaec){return{'name':_0x4ebaec[_0xccf4('0x41')],'type':_0x4ebaec[_0xccf4('0x42')][_0xccf4('0x43')]};});_0x1ddd42[_0xccf4('0x44')]=_[_0xccf4('0x45')](_0x3bebe3,_0xccf4('0x3b'));_0x1ddd42[_0xccf4('0x46')]=_[_0xccf4('0x47')](_0x4df804['query']);_0x1ddd42[_0xccf4('0x48')]=_[_0xccf4('0x49')](_0x1ddd42[_0xccf4('0x44')],_0x1ddd42['query']);_0x5a3a53[_0xccf4('0x4a')]=_[_0xccf4('0x49')](_0x1ddd42[_0xccf4('0x44')],qs['fields'](_0x4df804[_0xccf4('0x46')][_0xccf4('0x4b')]));_0x5a3a53['attributes']=_0x5a3a53[_0xccf4('0x4a')][_0xccf4('0x4c')]?_0x5a3a53[_0xccf4('0x4a')]:_0x1ddd42['model'];if(!_0x4df804[_0xccf4('0x46')][_0xccf4('0x4d')](_0xccf4('0x4e'))){_0x5a3a53[_0xccf4('0x2f')]=qs[_0xccf4('0x2f')](_0x4df804[_0xccf4('0x46')][_0xccf4('0x2f')]);_0x5a3a53['offset']=qs[_0xccf4('0x2d')](_0x4df804[_0xccf4('0x46')][_0xccf4('0x2d')]);}_0x5a3a53[_0xccf4('0x4f')]=qs[_0xccf4('0x50')](_0x4df804['query'][_0xccf4('0x50')]);_0x5a3a53[_0xccf4('0x51')]=qs[_0xccf4('0x48')](_['pick'](_0x4df804[_0xccf4('0x46')],_0x1ddd42[_0xccf4('0x48')]),_0x3bebe3);if(_0x4df804['query'][_0xccf4('0x52')]){_0x5a3a53[_0xccf4('0x51')]=_['merge'](_0x5a3a53[_0xccf4('0x51')],{'$or':_['map'](_0x3bebe3,function(_0x28e370){if(_0x28e370[_0xccf4('0x42')]!==_0xccf4('0x53')){var _0x4db28c={};_0x4db28c[_0x28e370[_0xccf4('0x3b')]]={'$like':'%'+_0x4df804[_0xccf4('0x46')][_0xccf4('0x52')]+'%'};return _0x4db28c;}})});}_0x5a3a53=_[_0xccf4('0x54')]({},_0x5a3a53,_0x4df804['options']);var _0x330d79={'where':_0x5a3a53[_0xccf4('0x51')]};return db[_0xccf4('0x40')][_0xccf4('0x30')](_0x330d79)[_0xccf4('0x36')](function(_0x251d23){_0x344eff[_0xccf4('0x30')]=_0x251d23;if(_0x4df804[_0xccf4('0x46')][_0xccf4('0x55')]){_0x5a3a53[_0xccf4('0x56')]=[{'all':!![]}];}return db[_0xccf4('0x40')][_0xccf4('0x57')](_0x5a3a53);})[_0xccf4('0x36')](function(_0x210a4d){_0x344eff[_0xccf4('0x58')]=_0x210a4d;return _0x344eff;})[_0xccf4('0x36')](respondWithFilteredResult(_0x3d664b,_0x5a3a53))[_0xccf4('0x29')](handleError(_0x3d664b,null));};exports[_0xccf4('0x59')]=function(_0x182271,_0x434c1b){var _0x3227a6={'raw':![],'where':{'id':_0x182271[_0xccf4('0x5a')]['id']},'include':[{'model':db[_0xccf4('0x3e')],'as':_0xccf4('0x3f')}]},_0x6b92e1={};_0x6b92e1[_0xccf4('0x44')]=_[_0xccf4('0x47')](db[_0xccf4('0x40')][_0xccf4('0x5b')]);_0x6b92e1['query']=_[_0xccf4('0x47')](_0x182271['query']);_0x6b92e1[_0xccf4('0x48')]=_[_0xccf4('0x49')](_0x6b92e1[_0xccf4('0x44')],_0x6b92e1[_0xccf4('0x46')]);_0x3227a6[_0xccf4('0x4a')]=_[_0xccf4('0x49')](_0x6b92e1[_0xccf4('0x44')],qs[_0xccf4('0x4b')](_0x182271[_0xccf4('0x46')]['fields']));_0x3227a6[_0xccf4('0x4a')]=_0x3227a6['attributes'][_0xccf4('0x4c')]?_0x3227a6[_0xccf4('0x4a')]:_0x6b92e1[_0xccf4('0x44')];if(_0x182271[_0xccf4('0x46')][_0xccf4('0x55')]){_0x3227a6['include']=[{'all':!![]}];}_0x3227a6=_['merge']({},_0x3227a6,_0x182271[_0xccf4('0x5c')]);return db[_0xccf4('0x40')][_0xccf4('0x5d')](_0x3227a6)[_0xccf4('0x36')](handleEntityNotFound(_0x434c1b,null))[_0xccf4('0x36')](respondWithResult(_0x434c1b,null))['catch'](handleError(_0x434c1b,null));};exports[_0xccf4('0x5e')]=function(_0x19a645,_0x31abe5){return db['OpenchannelAccount'][_0xccf4('0x5e')](_0x19a645[_0xccf4('0x5f')],{})['then'](function(_0x36b75a){var _0x23f264=_0x19a645[_0xccf4('0x60')][_0xccf4('0x38')]({'plain':!![]});if(!_0x23f264)throw new Error(_0xccf4('0x61'));if(_0x23f264['role']==='user'){var _0x3bdc22=_0x36b75a[_0xccf4('0x38')]({'plain':!![]});var _0x435d08=_0xccf4('0x39');return db[_0xccf4('0x62')][_0xccf4('0x5d')]({'where':{'name':_0x435d08,'userProfileId':_0x23f264[_0xccf4('0x63')]},'raw':!![]})[_0xccf4('0x36')](function(_0x24c728){if(_0x24c728&&_0x24c728[_0xccf4('0x64')]===0x0){return db['UserProfileResource'][_0xccf4('0x5e')]({'name':_0x3bdc22['name'],'resourceId':_0x3bdc22['id'],'type':_0x24c728['name'],'sectionId':_0x24c728['id']},{})[_0xccf4('0x36')](function(){return _0x36b75a;});}else{return _0x36b75a;}})['catch'](function(_0xde9ae8){logger[_0xccf4('0x25')](_0xccf4('0x65'),_0xde9ae8);throw _0xde9ae8;});}return _0x36b75a;})[_0xccf4('0x36')](respondWithResult(_0x31abe5,0xc9))['catch'](handleError(_0x31abe5,null));};exports[_0xccf4('0x35')]=function(_0x6485fe,_0x616e73){if(_0x6485fe[_0xccf4('0x5f')]['id']){delete _0x6485fe[_0xccf4('0x5f')]['id'];}return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x6485fe['params']['id']},'include':[{'model':db[_0xccf4('0x3e')],'as':'mandatoryDispositionPause'}]})[_0xccf4('0x36')](handleEntityNotFound(_0x616e73,null))[_0xccf4('0x36')](saveUpdates(_0x6485fe[_0xccf4('0x5f')],null))[_0xccf4('0x36')](respondWithResult(_0x616e73,null))['catch'](handleError(_0x616e73,null));};exports['destroy']=function(_0x26c0a1,_0x492f01){return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x26c0a1['params']['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x492f01,null))[_0xccf4('0x36')](removeEntity(_0x492f01,null))[_0xccf4('0x29')](handleError(_0x492f01,null));};exports[_0xccf4('0x66')]=function(_0x17b4c7,_0xcb398d){return db[_0xccf4('0x40')][_0xccf4('0x66')]()['then'](respondWithResult(_0xcb398d,null))[_0xccf4('0x29')](handleError(_0xcb398d,null));};exports[_0xccf4('0x67')]=function(_0x34beff,_0x5f489a,_0x2f75e0){if(_0x34beff['body']['id']){delete _0x34beff[_0xccf4('0x5f')]['id'];}return db[_0xccf4('0x40')]['find']({'where':{'id':_0x34beff[_0xccf4('0x5a')]['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x5f489a,null))['then'](function(_0x48383a){if(_0x48383a){_0x34beff[_0xccf4('0x5f')]['OpenchannelAccountId']=_0x48383a['id'];return db['Disposition'][_0xccf4('0x5e')](_0x34beff[_0xccf4('0x5f')]);}})[_0xccf4('0x36')](respondWithResult(_0x5f489a,null))[_0xccf4('0x29')](handleError(_0x5f489a,null));};exports[_0xccf4('0x68')]=function(_0x1ce64d,_0x32b512,_0x5e5124){var _0x3dd670={'raw':![],'where':{}};var _0x280898={};var _0x3f75b9={'count':0x0,'rows':[]};return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0x1ce64d[_0xccf4('0x5a')]['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x32b512,null))[_0xccf4('0x36')](function(_0x149e05){if(_0x149e05){_0x280898[_0xccf4('0x44')]=_[_0xccf4('0x47')](db['Disposition'][_0xccf4('0x5b')]);_0x280898[_0xccf4('0x46')]=_[_0xccf4('0x47')](_0x1ce64d[_0xccf4('0x46')]);_0x280898['filters']=_[_0xccf4('0x49')](_0x280898[_0xccf4('0x44')],_0x280898[_0xccf4('0x46')]);_0x3dd670[_0xccf4('0x4a')]=_[_0xccf4('0x49')](_0x280898[_0xccf4('0x44')],qs['fields'](_0x1ce64d['query'][_0xccf4('0x4b')]));_0x3dd670[_0xccf4('0x4a')]=_0x3dd670[_0xccf4('0x4a')][_0xccf4('0x4c')]?_0x3dd670['attributes']:_0x280898['model'];if(!_0x1ce64d[_0xccf4('0x46')][_0xccf4('0x4d')](_0xccf4('0x4e'))){_0x3dd670[_0xccf4('0x2f')]=qs[_0xccf4('0x2f')](_0x1ce64d[_0xccf4('0x46')][_0xccf4('0x2f')]);_0x3dd670[_0xccf4('0x2d')]=qs['offset'](_0x1ce64d[_0xccf4('0x46')]['offset']);}_0x3dd670[_0xccf4('0x4f')]=qs[_0xccf4('0x50')](_0x1ce64d[_0xccf4('0x46')][_0xccf4('0x50')]);_0x3dd670['where']=qs['filters'](_[_0xccf4('0x6a')](_0x1ce64d['query'],_0x280898[_0xccf4('0x48')]));_0x3dd670[_0xccf4('0x51')]['OpenchannelAccountId']=_0x149e05['id'];if(_0x1ce64d[_0xccf4('0x46')][_0xccf4('0x52')]){_0x3dd670['where']=_[_0xccf4('0x54')](_0x3dd670[_0xccf4('0x51')],{'$or':_[_0xccf4('0x45')](_0x3dd670[_0xccf4('0x4a')],function(_0x2d82dd){var _0x4489e4={};_0x4489e4[_0x2d82dd]={'$like':'%'+_0x1ce64d['query'][_0xccf4('0x52')]+'%'};return _0x4489e4;})});}_0x3dd670=_[_0xccf4('0x54')]({},_0x3dd670,_0x1ce64d[_0xccf4('0x5c')]);return db[_0xccf4('0x6b')][_0xccf4('0x30')]({'where':_0x3dd670[_0xccf4('0x51')]})['then'](function(_0x415ad9){_0x3f75b9[_0xccf4('0x30')]=_0x415ad9;if(_0x1ce64d[_0xccf4('0x46')][_0xccf4('0x55')]){_0x3dd670[_0xccf4('0x56')]=[{'all':!![]}];}return db[_0xccf4('0x6b')][_0xccf4('0x57')](_0x3dd670);})['then'](function(_0xd1e504){_0x3f75b9[_0xccf4('0x58')]=_0xd1e504;return _0x3f75b9;});}})['then'](respondWithFilteredResult(_0x32b512,_0x3dd670))['catch'](handleError(_0x32b512,null));};exports[_0xccf4('0x6c')]=function(_0x5132f1,_0x2dcd5d,_0x58c901){return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x5132f1[_0xccf4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2dcd5d,null))[_0xccf4('0x36')](function(_0x5ec96){if(_0x5ec96){return _0x5ec96[_0xccf4('0x6c')](_0x5132f1['query'][_0xccf4('0x6d')]);}})[_0xccf4('0x36')](respondWithStatusCode(_0x2dcd5d,null))['catch'](handleError(_0x2dcd5d,null));};exports[_0xccf4('0x6e')]=function(_0x48c20b,_0x28dd11,_0x25d25b){if(_0x48c20b[_0xccf4('0x5f')]['id']){delete _0x48c20b['body']['id'];}return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x48c20b[_0xccf4('0x5a')]['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x28dd11,null))[_0xccf4('0x36')](function(_0x1992d4){if(_0x1992d4){_0x48c20b[_0xccf4('0x5f')]['OpenchannelAccountId']=_0x1992d4['id'];return db['CannedAnswer'][_0xccf4('0x5e')](_0x48c20b[_0xccf4('0x5f')]);}})[_0xccf4('0x36')](respondWithResult(_0x28dd11,null))[_0xccf4('0x29')](handleError(_0x28dd11,null));};exports[_0xccf4('0x6f')]=function(_0x5805a5,_0x546021,_0x527317){var _0x31555b={'raw':![],'where':{}};var _0x557754={};var _0x443248={'count':0x0,'rows':[]};return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0x5805a5[_0xccf4('0x5a')]['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x546021,null))['then'](function(_0x50f407){if(_0x50f407){_0x557754[_0xccf4('0x44')]=_['keys'](db[_0xccf4('0x70')][_0xccf4('0x5b')]);_0x557754[_0xccf4('0x46')]=_['keys'](_0x5805a5[_0xccf4('0x46')]);_0x557754['filters']=_[_0xccf4('0x49')](_0x557754[_0xccf4('0x44')],_0x557754[_0xccf4('0x46')]);_0x31555b[_0xccf4('0x4a')]=_[_0xccf4('0x49')](_0x557754[_0xccf4('0x44')],qs['fields'](_0x5805a5['query']['fields']));_0x31555b['attributes']=_0x31555b[_0xccf4('0x4a')][_0xccf4('0x4c')]?_0x31555b[_0xccf4('0x4a')]:_0x557754['model'];if(!_0x5805a5['query']['hasOwnProperty']('nolimit')){_0x31555b[_0xccf4('0x2f')]=qs[_0xccf4('0x2f')](_0x5805a5[_0xccf4('0x46')][_0xccf4('0x2f')]);_0x31555b[_0xccf4('0x2d')]=qs['offset'](_0x5805a5[_0xccf4('0x46')][_0xccf4('0x2d')]);}_0x31555b[_0xccf4('0x4f')]=qs['sort'](_0x5805a5['query']['sort']);_0x31555b['where']=qs[_0xccf4('0x48')](_['pick'](_0x5805a5['query'],_0x557754['filters']));_0x31555b[_0xccf4('0x51')][_0xccf4('0x71')]=_0x50f407['id'];if(_0x5805a5[_0xccf4('0x46')][_0xccf4('0x52')]){_0x31555b[_0xccf4('0x51')]=_[_0xccf4('0x54')](_0x31555b[_0xccf4('0x51')],{'$or':_['map'](_0x31555b[_0xccf4('0x4a')],function(_0x5433dd){var _0x5a1c47={};_0x5a1c47[_0x5433dd]={'$like':'%'+_0x5805a5[_0xccf4('0x46')][_0xccf4('0x52')]+'%'};return _0x5a1c47;})});}_0x31555b=_[_0xccf4('0x54')]({},_0x31555b,_0x5805a5[_0xccf4('0x5c')]);return db[_0xccf4('0x70')]['count']({'where':_0x31555b[_0xccf4('0x51')]})['then'](function(_0x2e9c2b){_0x443248[_0xccf4('0x30')]=_0x2e9c2b;if(_0x5805a5[_0xccf4('0x46')][_0xccf4('0x55')]){_0x31555b[_0xccf4('0x56')]=[{'all':!![]}];}return db[_0xccf4('0x70')][_0xccf4('0x57')](_0x31555b);})[_0xccf4('0x36')](function(_0x46263){_0x443248[_0xccf4('0x58')]=_0x46263;return _0x443248;});}})[_0xccf4('0x36')](respondWithFilteredResult(_0x546021,_0x31555b))['catch'](handleError(_0x546021,null));};exports['removeAnswers']=function(_0x3ac5b6,_0x416174,_0x308cd0){return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x3ac5b6['params']['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x416174,null))[_0xccf4('0x36')](function(_0x283f5e){if(_0x283f5e){return _0x283f5e[_0xccf4('0x72')](_0x3ac5b6[_0xccf4('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x416174,null))[_0xccf4('0x29')](handleError(_0x416174,null));};exports[_0xccf4('0x73')]=function(_0x4a76cb,_0xb75803,_0x5b3878){var _0x541c19={'body':_0x4a76cb[_0xccf4('0x5f')],'channel':_0xccf4('0x74')};var _0x2f3c6e=[];var _0xc8167b=[];var _0x1adffa={};var _0x144acf=![];return db['CmContact']['describe']()['then'](function(_0x497f66){if(!_0x497f66){throw new db[(_0xccf4('0x75'))]['ValidationError']('no\x20available\x20attributes');}_0x2f3c6e=_[_0xccf4('0x76')](_[_0xccf4('0x47')](_0x497f66),['createdAt',_0xccf4('0x77')]);_0xc8167b=_['difference'](_['keys'](_0x497f66),[_0xccf4('0x78'),_0xccf4('0x77'),_0xccf4('0x79'),'ListId']);if(_0x4a76cb[_0xccf4('0x5f')]['id']){delete _0x4a76cb[_0xccf4('0x5f')]['id'];}if(_[_0xccf4('0x7a')](_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x7b')])){throw new db[(_0xccf4('0x75'))][(_0xccf4('0x7c'))]('from\x20is\x20mandatory');}if(_[_0xccf4('0x7a')](_0x4a76cb['body'][_0xccf4('0x5f')])||_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x5f')]===''){throw new db[(_0xccf4('0x75'))]['ValidationError'](_0xccf4('0x7d'));}if(_['isNil'](_0x4a76cb[_0xccf4('0x5f')]['mapKey'])){throw new db[(_0xccf4('0x75'))][(_0xccf4('0x7c'))](_0xccf4('0x7e')+_0xc8167b);}if(!_[_0xccf4('0x7f')](_0xc8167b,_0x4a76cb[_0xccf4('0x5f')]['mapKey'])){throw new db[(_0xccf4('0x75'))][(_0xccf4('0x7c'))](_0xccf4('0x80')+_0xc8167b);}_0x1adffa[_0x4a76cb[_0xccf4('0x5f')]['mapKey']]=_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x7b')];})[_0xccf4('0x36')](function(){return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x4a76cb[_0xccf4('0x5a')]['id']},'include':[{'model':db['CmList'],'as':_0xccf4('0x81'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x1adffa,'limit':0x1,'order':[[_0xccf4('0x77'),_0xccf4('0x82')]]}]},{'model':db[_0xccf4('0x83')],'as':'Applications'}]});})[_0xccf4('0x36')](handleEntityNotFound(_0xb75803,null))[_0xccf4('0x36')](function(_0x27eb39){if(_0x27eb39&&_0x27eb39[_0xccf4('0x81')]){_0x541c19[_0xccf4('0x84')]=_0x27eb39;_0x541c19[_0xccf4('0x85')]=_0x27eb39[_0xccf4('0x86')];_0x541c19[_0xccf4('0x87')]=_0x27eb39[_0xccf4('0x81')];_0x541c19['applications']=_[_0xccf4('0x88')](_0x541c19[_0xccf4('0x85')],['priority'],[_0xccf4('0x89')]);if(_0x541c19[_0xccf4('0x84')][_0xccf4('0x86')]){delete _0x541c19[_0xccf4('0x84')][_0xccf4('0x86')];}if(_0x541c19['account'][_0xccf4('0x81')]&&_0x541c19[_0xccf4('0x84')][_0xccf4('0x81')][_0xccf4('0x8a')][_0xccf4('0x4c')]){return _0x541c19[_0xccf4('0x84')][_0xccf4('0x81')][_0xccf4('0x8a')][0x0];}var _0x52e6ea=_[_0xccf4('0x8b')](_0x4a76cb[_0xccf4('0x5f')],{'firstName':_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x7b')],'ListId':_0x27eb39[_0xccf4('0x8c')]});_0x52e6ea[_0x4a76cb['body']['mapKey']]=_0x4a76cb['body']['from'];return db[_0xccf4('0x8d')][_0xccf4('0x5e')](_0x52e6ea,{'fields':_0x2f3c6e,'raw':!![]});}})['then'](handleEntityNotFound(_0xb75803,null))[_0xccf4('0x36')](function(_0x15f963){_0x541c19[_0xccf4('0x8e')]=_0x15f963;if(_0x15f963){var _0x1960c2={'ContactId':_0x15f963['id'],'OpenchannelAccountId':_0x4a76cb['params']['id'],'from':(_0x15f963[_0xccf4('0x8f')]||'')+'\x20'+(_0x15f963[_0xccf4('0x90')]||'')};var _0x58f52b={'OpenchannelAccountId':_0x4a76cb[_0xccf4('0x5a')]['id'],'closed':![]};if(_0x4a76cb[_0xccf4('0x5f')]['threadId']){_0x58f52b[_0xccf4('0x91')]=_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x91')];return db['OpenchannelInteraction'][_0xccf4('0x5d')]({'where':_0x58f52b})['then'](function(_0x5022a9){if(_0x5022a9){return[_0x5022a9,![]];}_0x1960c2[_0xccf4('0x91')]=_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x91')];_0x1960c2[_0xccf4('0x92')]=_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x92')];return db['OpenchannelInteraction'][_0xccf4('0x5e')](_0x1960c2)[_0xccf4('0x36')](function(_0x371e5f){return[_0x371e5f,!![]];});});}else{_0x58f52b['threadId']=null;}_0x58f52b[_0xccf4('0x93')]=_0x15f963['id'];return db[_0xccf4('0x94')][_0xccf4('0x5d')]({'where':_0x58f52b})[_0xccf4('0x36')](function(_0x2411f0){if(_0x2411f0){return[_0x2411f0,![]];}return db[_0xccf4('0x94')][_0xccf4('0x5e')](_0x1960c2)[_0xccf4('0x36')](function(_0x3041e7){return[_0x3041e7,!![]];});});}})[_0xccf4('0x95')](function(_0xadb881,_0x3ab179){if(_0xadb881){_0x144acf=_0x3ab179;if(!_0x3ab179){var _0x1ef343={'from':(_0x541c19[_0xccf4('0x8e')][_0xccf4('0x8f')]||'')+'\x20'+(_0x541c19[_0xccf4('0x8e')][_0xccf4('0x90')]||'')};if(_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x91')]&&_0x4a76cb['body'][_0xccf4('0x96')]&&_0x4a76cb[_0xccf4('0x5f')]['threadId']!=_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x96')]){_0x1ef343[_0xccf4('0x91')]=_0x4a76cb[_0xccf4('0x5f')]['messageId'];}return _0xadb881[_0xccf4('0x35')](_0x1ef343);}else{return _0xadb881;}}})[_0xccf4('0x36')](function(_0x53f1f3){_0x541c19[_0xccf4('0x97')]=_0x53f1f3[_0xccf4('0x38')]({'plain':!![]});_0x541c19['interaction'][_0xccf4('0x98')]=_0x144acf;if(_0x541c19[_0xccf4('0x97')][_0xccf4('0x98')]){if(_0x541c19[_0xccf4('0x84')]['autoclose']){_0x541c19['applications'][_0xccf4('0x99')]({'id':0x0,'priority':_0x541c19[_0xccf4('0x85')][_0xccf4('0x4c')]+0x1,'app':_0xccf4('0x9a'),'appdata':_0xccf4('0x9b'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0xccf4('0x5e')]({'body':_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x5f')],'OpenchannelAccountId':_0x4a76cb[_0xccf4('0x5a')]['id'],'OpenchannelInteractionId':_0x53f1f3['id'],'direction':'in','ContactId':_0x541c19[_0xccf4('0x8e')]['id'],'AttachmentId':_0x4a76cb[_0xccf4('0x5f')][_0xccf4('0x9c')]});})[_0xccf4('0x36')](function(_0x340fb0){_0x541c19['message']=_0x340fb0;if(_0x541c19['interaction'][_0xccf4('0x9d')]){return db[_0xccf4('0x9e')][_0xccf4('0x5d')]({'attributes':['id',_0xccf4('0x3b')],'where':{'id':_0x541c19['interaction'][_0xccf4('0x9d')]}})[_0xccf4('0x36')](function(_0xda8210){if(_0xda8210){_0x541c19[_0xccf4('0x85')][_0xccf4('0x9f')]({'id':0x0,'priority':0x0,'app':_0xccf4('0xa0'),'appdata':_0xda8210[_0xccf4('0x3b')]+','+(_0x541c19[_0xccf4('0x84')]['waitForTheAssignedAgent']||0xa),'interval':_0xccf4('0xa1')});_0x541c19[_0xccf4('0xa2')]=![];}return respondWithRpcPromise(_0xccf4('0xa3'),_0xccf4('0xa4'),_0x541c19);});}return respondWithRpcPromise(_0xccf4('0xa3'),_0xccf4('0xa4'),_0x541c19);})[_0xccf4('0x36')](function(_0x14ab16){respondWithRpcPromise(_0xccf4('0xa5'),_0xccf4('0xa5'),{'event':_0xccf4('0x73'),'message':_0x14ab16},client9002);return _0x14ab16;})[_0xccf4('0x36')](respondWithResult(_0xb75803,null))['catch'](handleError(_0xb75803,null));};exports[_0xccf4('0xa6')]=function(_0x16f326,_0x50a333){var _0x4b1271=_0x16f326[_0xccf4('0x5a')]['id'];var _0x3c0760=_0x16f326[_0xccf4('0x5f')];var _0x1955d4=0xc8;var _0x485749=null;return db[_0xccf4('0xa7')][_0xccf4('0xa8')]({'isolationLevel':db[_0xccf4('0xa7')]['Transaction'][_0xccf4('0xa9')][_0xccf4('0xaa')]},function(_0x53f727){return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0x4b1271},'transaction':_0x53f727})[_0xccf4('0x36')](function(_0x2c061c){if(_0x2c061c){return db[_0xccf4('0x83')][_0xccf4('0x37')]({'where':{'OpenchannelAccountId':_0x4b1271},'transaction':_0x53f727})[_0xccf4('0x36')](function(){var _0x3d832f=_[_0xccf4('0x45')](_0x3c0760,function(_0x23293a){_0x23293a[_0xccf4('0x71')]=_0x4b1271;return _0x23293a;});return db[_0xccf4('0x83')][_0xccf4('0xab')](_0x3d832f,{'transaction':_0x53f727});});}else{_0x1955d4=0x194;_0x485749=[];}});})['then'](function(){if(_0x1955d4!==0x194){return db[_0xccf4('0x83')][_0xccf4('0xac')]({'where':{'OpenchannelAccountId':_0x4b1271},'order':_0xccf4('0xad')})[_0xccf4('0x36')](function(_0x292957){_0x485749=_0x292957;});}})[_0xccf4('0x29')](function(_0x3b7bc7){_0x1955d4=0x1f4;logger[_0xccf4('0x25')](_0x3b7bc7[_0xccf4('0x3a')]);if(_0x3b7bc7[_0xccf4('0x3b')]){delete _0x3b7bc7[_0xccf4('0x3b')];}_0x485749=_0x3b7bc7;})[_0xccf4('0xae')](function(){if(_0x485749===null){_0x50a333[_0xccf4('0xaf')](_0x1955d4);}else{if(_0x1955d4===0x1f4){_0x50a333[_0xccf4('0x2a')](_0x1955d4)[_0xccf4('0x3c')](_0x485749);}else{_0x50a333[_0xccf4('0x2a')](_0x1955d4)['json'](_0x485749);}}});};exports[_0xccf4('0xb0')]=function(_0x289c7b,_0x4530b2,_0x5583bf){var _0x18d6d1={};var _0x3bb888={};var _0x41c543;var _0x40c2f5;return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0x289c7b[_0xccf4('0x5a')]['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x4530b2,null))[_0xccf4('0x36')](function(_0x28bc12){if(_0x28bc12){_0x41c543=_0x28bc12;_0x3bb888[_0xccf4('0x44')]=_[_0xccf4('0x47')](db[_0xccf4('0x83')][_0xccf4('0x5b')]);_0x3bb888[_0xccf4('0x46')]=_[_0xccf4('0x47')](_0x289c7b[_0xccf4('0x46')]);_0x3bb888['filters']=_[_0xccf4('0x49')](_0x3bb888[_0xccf4('0x44')],_0x3bb888['query']);_0x18d6d1['attributes']=_['intersection'](_0x3bb888[_0xccf4('0x44')],qs[_0xccf4('0x4b')](_0x289c7b['query'][_0xccf4('0x4b')]));_0x18d6d1['attributes']=_0x18d6d1[_0xccf4('0x4a')]['length']?_0x18d6d1[_0xccf4('0x4a')]:_0x3bb888[_0xccf4('0x44')];_0x18d6d1[_0xccf4('0x4f')]=qs['sort'](_0x289c7b['query']['sort']);_0x18d6d1[_0xccf4('0x51')]=qs['filters'](_['pick'](_0x289c7b['query'],_0x3bb888[_0xccf4('0x48')]));if(_0x289c7b['query']['filter']){_0x18d6d1[_0xccf4('0x51')]=_[_0xccf4('0x54')](_0x18d6d1[_0xccf4('0x51')],{'$or':_[_0xccf4('0x45')](_0x18d6d1[_0xccf4('0x4a')],function(_0x697c2){var _0x877f1f={};_0x877f1f[_0x697c2]={'$like':'%'+_0x289c7b[_0xccf4('0x46')][_0xccf4('0x52')]+'%'};return _0x877f1f;})});}_0x18d6d1=_[_0xccf4('0x54')]({},_0x18d6d1,_0x289c7b[_0xccf4('0x5c')]);return _0x41c543[_0xccf4('0xb0')](_0x18d6d1);}})[_0xccf4('0x36')](function(_0x593e04){if(_0x593e04){_0x40c2f5=_0x593e04[_0xccf4('0x4c')];if(!_0x289c7b['query']['hasOwnProperty'](_0xccf4('0x4e'))){_0x18d6d1[_0xccf4('0x2f')]=qs[_0xccf4('0x2f')](_0x289c7b[_0xccf4('0x46')]['limit']);_0x18d6d1[_0xccf4('0x2d')]=qs[_0xccf4('0x2d')](_0x289c7b[_0xccf4('0x46')][_0xccf4('0x2d')]);}return _0x41c543['getApplications'](_0x18d6d1);}})[_0xccf4('0x36')](function(_0x4a7f49){if(_0x4a7f49){return _0x4a7f49?{'count':_0x40c2f5,'rows':_0x4a7f49}:null;}})[_0xccf4('0x36')](respondWithResult(_0x4530b2,null))[_0xccf4('0x29')](handleError(_0x4530b2,null));};exports['getInteractions']=function(_0xad621f,_0x20f587,_0x45b41a){var _0x18982e={'raw':![],'where':{}};var _0x4d64cb={};var _0x1e8ec4={'count':0x0,'rows':[]};return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0xad621f[_0xccf4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x20f587,null))[_0xccf4('0x36')](function(_0x88d748){if(_0x88d748){_0x4d64cb[_0xccf4('0x44')]=_[_0xccf4('0x47')](db[_0xccf4('0x94')]['rawAttributes']);_0x4d64cb['query']=_[_0xccf4('0x47')](_0xad621f[_0xccf4('0x46')]);_0x4d64cb[_0xccf4('0x48')]=_[_0xccf4('0x49')](_0x4d64cb[_0xccf4('0x44')],_0x4d64cb['query']);_0x18982e[_0xccf4('0x4a')]=_['intersection'](_0x4d64cb[_0xccf4('0x44')],qs[_0xccf4('0x4b')](_0xad621f['query']['fields']));_0x18982e[_0xccf4('0x4a')]=_0x18982e[_0xccf4('0x4a')][_0xccf4('0x4c')]?_0x18982e[_0xccf4('0x4a')]:_0x4d64cb[_0xccf4('0x44')];if(!_0xad621f[_0xccf4('0x46')][_0xccf4('0x4d')](_0xccf4('0x4e'))){_0x18982e[_0xccf4('0x2f')]=qs[_0xccf4('0x2f')](_0xad621f[_0xccf4('0x46')][_0xccf4('0x2f')]);_0x18982e[_0xccf4('0x2d')]=qs['offset'](_0xad621f[_0xccf4('0x46')][_0xccf4('0x2d')]);}_0x18982e[_0xccf4('0x4f')]=qs['sort'](_0xad621f[_0xccf4('0x46')][_0xccf4('0x50')]);_0x18982e[_0xccf4('0x51')]=qs['filters'](_[_0xccf4('0x6a')](_0xad621f[_0xccf4('0x46')],_0x4d64cb[_0xccf4('0x48')]));_0x18982e[_0xccf4('0x51')][_0xccf4('0x71')]=_0x88d748['id'];if(_0xad621f[_0xccf4('0x46')][_0xccf4('0x52')]){_0x18982e[_0xccf4('0x51')]=_[_0xccf4('0x54')](_0x18982e['where'],{'$or':_[_0xccf4('0x45')](_0x18982e[_0xccf4('0x4a')],function(_0x34511e){var _0x48d9b9={};_0x48d9b9[_0x34511e]={'$like':'%'+_0xad621f['query'][_0xccf4('0x52')]+'%'};return _0x48d9b9;})});}_0x18982e=_[_0xccf4('0x54')]({},_0x18982e,_0xad621f[_0xccf4('0x5c')]);return db[_0xccf4('0x94')][_0xccf4('0x30')]({'where':_0x18982e[_0xccf4('0x51')]})['then'](function(_0x196b38){_0x1e8ec4[_0xccf4('0x30')]=_0x196b38;if(_0xad621f[_0xccf4('0x46')][_0xccf4('0x55')]){_0x18982e[_0xccf4('0x56')]=[{'model':db[_0xccf4('0x8d')],'as':_0xccf4('0xb1'),'required':![]},{'model':db[_0xccf4('0x9e')],'as':_0xccf4('0xb2'),'attributes':['name',_0xccf4('0xb3'),_0xccf4('0xb4')],'required':![]},{'model':db['Tag'],'as':_0xccf4('0xb5'),'attributes':['id','name',_0xccf4('0xb6')],'where':_0xad621f['query'][_0xccf4('0xb7')]?{'id':_0xad621f[_0xccf4('0x46')]['tag']}:undefined,'required':_0xad621f[_0xccf4('0x46')][_0xccf4('0xb7')]?!![]:![]}];}return db['OpenchannelInteraction'][_0xccf4('0x57')](_0x18982e);})[_0xccf4('0x36')](function(_0x24c593){_0x1e8ec4[_0xccf4('0x58')]=_0x24c593;return _0x1e8ec4;});}})[_0xccf4('0x36')](respondWithFilteredResult(_0x20f587,_0x18982e))[_0xccf4('0x29')](handleError(_0x20f587,null));};exports[_0xccf4('0xb8')]=function(_0x3cd3a1,_0x45bfc7,_0xfda5d2){return db['OpenchannelAccount'][_0xccf4('0x5d')]({'where':{'id':_0x3cd3a1['params']['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x45bfc7,null))[_0xccf4('0x36')](function(_0x5b8653){if(_0x5b8653){return _0x5b8653[_0xccf4('0xb8')](_0x3cd3a1[_0xccf4('0x5f')][_0xccf4('0x6d')],_[_0xccf4('0xb9')](_0x3cd3a1['body'],[_0xccf4('0x6d'),'id'])||{})[_0xccf4('0x95')](function(_0x4da0df){for(var _0x11ae8c=0x0;_0x11ae8c<_0x3cd3a1[_0xccf4('0x5f')][_0xccf4('0x6d')][_0xccf4('0x4c')];_0x11ae8c+=0x1){socket[_0xccf4('0xba')](_0xccf4('0xbb'),{'UserId':Number(_0x3cd3a1[_0xccf4('0x5f')][_0xccf4('0x6d')][_0x11ae8c]),'OpenchannelAccountId':Number(_0x3cd3a1['params']['id'])});}return _0x4da0df;});}})[_0xccf4('0x36')](respondWithResult(_0x45bfc7,null))[_0xccf4('0x29')](handleError(_0x45bfc7,null));};exports[_0xccf4('0xbc')]=function(_0x16be12,_0x9fede6,_0x5992f3){return db[_0xccf4('0x40')][_0xccf4('0x5d')]({'where':{'id':_0x16be12[_0xccf4('0x5a')]['id']}})[_0xccf4('0x36')](handleEntityNotFound(_0x9fede6,null))[_0xccf4('0x36')](function(_0x230684){if(_0x230684){return _0x230684[_0xccf4('0xbc')](_0x16be12[_0xccf4('0x46')]['ids'])[_0xccf4('0x36')](function(){if(_[_0xccf4('0xbd')](_0x16be12['query'][_0xccf4('0x6d')])){for(var _0x2cd637=0x0;_0x2cd637<_0x16be12['query'][_0xccf4('0x6d')][_0xccf4('0x4c')];_0x2cd637+=0x1){socket[_0xccf4('0xba')](_0xccf4('0xbe'),{'UserId':Number(_0x16be12[_0xccf4('0x46')][_0xccf4('0x6d')][_0x2cd637]),'OpenchannelAccountId':Number(_0x16be12['params']['id'])});}}else{socket[_0xccf4('0xba')](_0xccf4('0xbe'),{'UserId':Number(_0x16be12[_0xccf4('0x46')][_0xccf4('0x6d')]),'OpenchannelAccountId':Number(_0x16be12[_0xccf4('0x5a')]['id'])});}});}})[_0xccf4('0x36')](respondWithStatusCode(_0x9fede6,null))[_0xccf4('0x29')](handleError(_0x9fede6,null));};exports[_0xccf4('0xbf')]=function(_0x3c9a23,_0x41ce4b,_0x2f1dc8){var _0x6fdaab={};var _0x511ab9={};var _0x1be0c8;var _0x33ff40;return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0x3c9a23[_0xccf4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x41ce4b,null))[_0xccf4('0x36')](function(_0x1183e6){if(_0x1183e6){_0x1be0c8=_0x1183e6;_0x511ab9[_0xccf4('0x44')]=_[_0xccf4('0x47')](db['User'][_0xccf4('0x5b')]);_0x511ab9['query']=_['keys'](_0x3c9a23[_0xccf4('0x46')]);_0x511ab9['filters']=_[_0xccf4('0x49')](_0x511ab9[_0xccf4('0x44')],_0x511ab9[_0xccf4('0x46')]);_0x6fdaab[_0xccf4('0x4a')]=_['intersection'](_0x511ab9[_0xccf4('0x44')],qs[_0xccf4('0x4b')](_0x3c9a23['query'][_0xccf4('0x4b')]));_0x6fdaab['attributes']=_0x6fdaab[_0xccf4('0x4a')][_0xccf4('0x4c')]?_0x6fdaab['attributes']:_0x511ab9[_0xccf4('0x44')];_0x6fdaab['order']=qs[_0xccf4('0x50')](_0x3c9a23['query'][_0xccf4('0x50')]);_0x6fdaab[_0xccf4('0x51')]=qs['filters'](_['pick'](_0x3c9a23[_0xccf4('0x46')],_0x511ab9['filters']));if(_0x3c9a23['query'][_0xccf4('0x52')]){_0x6fdaab[_0xccf4('0x51')]=_[_0xccf4('0x54')](_0x6fdaab[_0xccf4('0x51')],{'$or':_[_0xccf4('0x45')](_0x6fdaab['attributes'],function(_0x126743){var _0x303d6a={};_0x303d6a[_0x126743]={'$like':'%'+_0x3c9a23[_0xccf4('0x46')][_0xccf4('0x52')]+'%'};return _0x303d6a;})});}_0x6fdaab=_['merge']({},_0x6fdaab,_0x3c9a23[_0xccf4('0x5c')]);return _0x1be0c8['getAgents'](_0x6fdaab);}})['then'](function(_0x15ed68){if(_0x15ed68){_0x33ff40=_0x15ed68[_0xccf4('0x4c')];if(!_0x3c9a23[_0xccf4('0x46')][_0xccf4('0x4d')]('nolimit')){_0x6fdaab[_0xccf4('0x2f')]=qs[_0xccf4('0x2f')](_0x3c9a23[_0xccf4('0x46')][_0xccf4('0x2f')]);_0x6fdaab[_0xccf4('0x2d')]=qs[_0xccf4('0x2d')](_0x3c9a23[_0xccf4('0x46')]['offset']);}return _0x1be0c8[_0xccf4('0xbf')](_0x6fdaab);}})['then'](function(_0x31b592){if(_0x31b592){return _0x31b592?{'count':_0x33ff40,'rows':_0x31b592}:null;}})['then'](respondWithResult(_0x41ce4b,null))[_0xccf4('0x29')](handleError(_0x41ce4b,null));};exports[_0xccf4('0x3c')]=function(_0x2bbcb4,_0x486fe2,_0x5337ca){var _0x2dad12,_0x460f86,_0x25eab7;if(_[_0xccf4('0x7a')](_0x2bbcb4[_0xccf4('0x5f')][_0xccf4('0x5f')])||_0x2bbcb4[_0xccf4('0x5f')][_0xccf4('0x5f')]===''){throw new db['Sequelize']['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xccf4('0x7a')](_0x2bbcb4[_0xccf4('0x5f')]['to'])){}_0x2dad12=_0x2bbcb4[_0xccf4('0x5f')]['to'];return db[_0xccf4('0x40')][_0xccf4('0x69')]({'where':{'id':_0x2bbcb4['params']['id']}})['then'](handleEntityNotFound(_0x486fe2,null))['then'](function(_0x33c50f){if(_0x33c50f){return db['OpenchannelAccount'][_0xccf4('0x5d')]({'where':{'id':_0x33c50f['id']},'include':[{'model':db[_0xccf4('0xc0')],'as':'List','include':[{'model':db[_0xccf4('0x8d')],'as':_0xccf4('0x8a'),'where':{[_0x33c50f[_0xccf4('0xc1')]]:_0x2dad12},'limit':0x1,'order':[[_0xccf4('0x77'),_0xccf4('0x82')]]}]}]})[_0xccf4('0x36')](handleEntityNotFound(_0x486fe2,null))[_0xccf4('0x36')](function(_0x568b1e){if(_0x568b1e&&_0x568b1e[_0xccf4('0x81')]){_0x460f86=_0x568b1e['get']({'plain':!![]});if(_0x460f86[_0xccf4('0x81')]&&_0x460f86[_0xccf4('0x81')]['Contacts'][_0xccf4('0x4c')]){return _0x460f86[_0xccf4('0x81')][_0xccf4('0x8a')][0x0];}return db[_0xccf4('0x8d')][_0xccf4('0x5e')](_[_0xccf4('0x8b')](_0x2bbcb4[_0xccf4('0x5f')],{'firstName':_0x2dad12,[_0x568b1e['mapKey']]:_0x2dad12,'phone':_0x2dad12,'ListId':_0x460f86[_0xccf4('0x8c')]}));}})[_0xccf4('0x36')](handleEntityNotFound(_0x486fe2,null))['then'](function(_0x17d1c3){if(_0x17d1c3){_0x25eab7=_0x17d1c3;return db[_0xccf4('0x94')][_0xccf4('0x5d')]({'where':{'ContactId':_0x25eab7['id'],'closed':![],'OpenchannelAccountId':_0x460f86['id']}})[_0xccf4('0x36')](function(_0x4010dc){if(_0x4010dc){return[_0x4010dc,![]];}return db[_0xccf4('0x94')][_0xccf4('0x5e')]({'UserId':_0x2bbcb4['user']['id'],'ContactId':_0x25eab7['id'],'OpenchannelAccountId':_0x460f86['id'],'lastMsgDirection':_0xccf4('0xc2'),'firstMsgDirection':'out','Messages':[_[_0xccf4('0x54')](_0x2bbcb4[_0xccf4('0x5f')],{'read':![],'body':_0x2bbcb4['body'][_0xccf4('0x5f')],'OpenchannelAccountId':_0x460f86['id'],'UserId':_0x2bbcb4[_0xccf4('0x60')]['id'],'ContactId':_0x25eab7['id']})]},{'include':[{'model':db[_0xccf4('0xc3')],'as':_0xccf4('0xc4')}]})[_0xccf4('0x36')](function(_0x33849a){return[_0x33849a,!![]];});});}})[_0xccf4('0x95')](function(_0x1d8a2f,_0x4db7ac){if(_0x4db7ac){return _0x1d8a2f;}return db['OpenchannelMessage'][_0xccf4('0x5e')](_[_0xccf4('0x54')](_0x2bbcb4[_0xccf4('0x5f')],{'read':![],'body':_0x2bbcb4[_0xccf4('0x5f')][_0xccf4('0x5f')],'OpenchannelAccountId':_0x460f86['id'],'OpenchannelInteractionId':_0x1d8a2f['id'],'UserId':_0x2bbcb4[_0xccf4('0x60')]['id'],'ContactId':_0x25eab7['id']}))[_0xccf4('0x36')](function(_0x210f4f){_0x1d8a2f[_0xccf4('0xc5')][_0xccf4('0xc4')]=[];_0x1d8a2f['dataValues'][_0xccf4('0xc4')][_0xccf4('0x99')](_0x210f4f[_0xccf4('0xc5')]);return _0x1d8a2f;});});}})[_0xccf4('0x36')](respondWithResult(_0x486fe2,null))[_0xccf4('0x29')](handleError(_0x486fe2,null));};
\ No newline at end of file
index daade19..99a3cff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['events','../../mysqldb','save','update','remove','emit','hook','exports'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0x0bb5,0x148));var _0x50bb=function(_0x2169bf,_0x3408a4){_0x2169bf=_0x2169bf-0x0;var _0x47d1f6=_0x0bb5[_0x2169bf];return _0x47d1f6;};'use strict';var EventEmitter=require(_0x50bb('0x0'));var OpenchannelAccount=require(_0x50bb('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x50bb('0x2'),'afterUpdate':_0x50bb('0x3'),'afterDestroy':_0x50bb('0x4')};function emitEvent(_0x117e36){return function(_0x29c72b,_0xfdc9d4,_0x451b4c){OpenchannelAccountEvents[_0x50bb('0x5')](_0x117e36+':'+_0x29c72b['id'],_0x29c72b);OpenchannelAccountEvents['emit'](_0x117e36,_0x29c72b);_0x451b4c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x50bb('0x6')](e,emitEvent(event));}}module[_0x50bb('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x96cc=['remove','emit','hook','exports','events','OpenchannelAccount','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x96cc,0x16c));var _0xc96c=function(_0x35e290,_0x1156b1){_0x35e290=_0x35e290-0x0;var _0x19dd62=_0x96cc[_0x35e290];return _0x19dd62;};'use strict';var EventEmitter=require(_0xc96c('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xc96c('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc96c('0x2'),'afterUpdate':_0xc96c('0x3'),'afterDestroy':_0xc96c('0x4')};function emitEvent(_0x421701){return function(_0x71140d,_0x29b6f1,_0x377e6c){OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701+':'+_0x71140d['id'],_0x71140d);OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701,_0x71140d);_0x377e6c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xc96c('0x6')](e,emitEvent(event));}}module[_0xc96c('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 5e01191..fdf2818 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(_0x3c5b9c,_0xd04a7f){var _0xacb6cd=function(_0x1b341b){while(--_0x1b341b){_0x3c5b9c['push'](_0x3c5b9c['shift']());}};_0xacb6cd(++_0xd04a7f);}(_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':'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(_0x49c97b,_0x1d2c57){var _0x2b75b6=function(_0x3e2997){while(--_0x3e2997){_0x49c97b['push'](_0x49c97b['shift']());}};_0x2b75b6(++_0x1d2c57);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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 36dbbaf..96a25e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94df=['register','request','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelAccount.socket'];(function(_0x3f1885,_0x3aa3ff){var _0x459832=function(_0x1f1ff2){while(--_0x1f1ff2){_0x3f1885['push'](_0x3f1885['shift']());}};_0x459832(++_0x3aa3ff);}(_0x94df,0xa3));var _0xf94d=function(_0x1a6c2c,_0x421e96){_0x1a6c2c=_0x1a6c2c-0x0;var _0x349855=_0x94df[_0x1a6c2c];return _0x349855;};'use strict';var _=require(_0xf94d('0x0'));var util=require(_0xf94d('0x1'));var moment=require(_0xf94d('0x2'));var BPromise=require(_0xf94d('0x3'));var rs=require(_0xf94d('0x4'));var fs=require('fs');var Redis=require(_0xf94d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf94d('0x6'));var logger=require(_0xf94d('0x7'))(_0xf94d('0x8'));var config=require(_0xf94d('0x9'));var jayson=require(_0xf94d('0xa'));var client=jayson[_0xf94d('0xb')][_0xf94d('0xc')]({'port':0x232a});config[_0xf94d('0xd')]=_[_0xf94d('0xe')](config[_0xf94d('0xd')],{'host':_0xf94d('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf94d('0xd')]));require(_0xf94d('0x10'))[_0xf94d('0x11')](socket);function respondWithRpcPromise(_0x1bde05,_0xdaa8d6,_0x45739c){return new BPromise(function(_0x47efc6,_0x25c68e){return client[_0xf94d('0x12')](_0x1bde05,_0x45739c)[_0xf94d('0x13')](function(_0x19b1de){logger[_0xf94d('0x14')]('OpenchannelAccount,\x20%s,\x20%s',_0xdaa8d6,'request\x20sent');logger[_0xf94d('0x15')](_0xf94d('0x16'),_0xdaa8d6,_0xf94d('0x17'),JSON[_0xf94d('0x18')](_0x19b1de));if(_0x19b1de[_0xf94d('0x19')]){if(_0x19b1de[_0xf94d('0x19')]['code']===0x1f4){logger[_0xf94d('0x19')](_0xf94d('0x1a'),_0xdaa8d6,_0x19b1de[_0xf94d('0x19')][_0xf94d('0x1b')]);return _0x25c68e(_0x19b1de[_0xf94d('0x19')][_0xf94d('0x1b')]);}logger[_0xf94d('0x19')](_0xf94d('0x1a'),_0xdaa8d6,_0x19b1de['error'][_0xf94d('0x1b')]);return _0x47efc6(_0x19b1de['error'][_0xf94d('0x1b')]);}else{logger['info'](_0xf94d('0x1a'),_0xdaa8d6,'request\x20sent');_0x47efc6(_0x19b1de[_0xf94d('0x1c')][_0xf94d('0x1b')]);}})[_0xf94d('0x1d')](function(_0x349de5){logger['error'](_0xf94d('0x1a'),_0xdaa8d6,_0x349de5);_0x25c68e(_0x349de5);});});}
\ No newline at end of file
+var _0x84a0=['redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','request','then','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http'];(function(_0x12ca16,_0x281fd9){var _0x56fb78=function(_0x3479b2){while(--_0x3479b2){_0x12ca16['push'](_0x12ca16['shift']());}};_0x56fb78(++_0x281fd9);}(_0x84a0,0x66));var _0x084a=function(_0x79b649,_0x2115b3){_0x79b649=_0x79b649-0x0;var _0x1af9b1=_0x84a0[_0x79b649];return _0x1af9b1;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var moment=require(_0x084a('0x2'));var BPromise=require(_0x084a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x084a('0x4'));var db=require(_0x084a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x084a('0x6'));var config=require(_0x084a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x084a('0x8')][_0x084a('0x9')]({'port':0x232a});config[_0x084a('0xa')]=_[_0x084a('0xb')](config[_0x084a('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x084a('0xc'))(new Redis(config[_0x084a('0xa')]));require(_0x084a('0xd'))[_0x084a('0xe')](socket);function respondWithRpcPromise(_0x142127,_0x4c1e29,_0x4dd423){return new BPromise(function(_0x3d9dc6,_0x853df){return client[_0x084a('0xf')](_0x142127,_0x4dd423)[_0x084a('0x10')](function(_0x2d7c90){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x4c1e29,_0x084a('0x11'));logger[_0x084a('0x12')](_0x084a('0x13'),_0x4c1e29,_0x084a('0x11'),JSON[_0x084a('0x14')](_0x2d7c90));if(_0x2d7c90[_0x084a('0x15')]){if(_0x2d7c90[_0x084a('0x15')][_0x084a('0x16')]===0x1f4){logger['error'](_0x084a('0x17'),_0x4c1e29,_0x2d7c90['error'][_0x084a('0x18')]);return _0x853df(_0x2d7c90[_0x084a('0x15')][_0x084a('0x18')]);}logger[_0x084a('0x15')](_0x084a('0x17'),_0x4c1e29,_0x2d7c90['error'][_0x084a('0x18')]);return _0x3d9dc6(_0x2d7c90['error'][_0x084a('0x18')]);}else{logger[_0x084a('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x4c1e29,_0x084a('0x11'));_0x3d9dc6(_0x2d7c90[_0x084a('0x1a')][_0x084a('0x18')]);}})[_0x084a('0x1b')](function(_0x33d3a6){logger[_0x084a('0x15')](_0x084a('0x17'),_0x4c1e29,_0x33d3a6);_0x853df(_0x33d3a6);});});}
\ No newline at end of file
index f222a9c..2148793 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f1=['register','length','./openchannelAccount.events','remove','emit','removeListener'];(function(_0x18c8dc,_0x510c11){var _0x5b1272=function(_0xd359a3){while(--_0xd359a3){_0x18c8dc['push'](_0x18c8dc['shift']());}};_0x5b1272(++_0x510c11);}(_0x36f1,0xb0));var _0x136f=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x36f1[_0x6c993a];return _0x27f547;};'use strict';var OpenchannelAccountEvents=require(_0x136f('0x0'));var events=['save',_0x136f('0x1'),'update'];function createListener(_0x338a88,_0x31045f){return function(_0x5a7bbe){_0x31045f[_0x136f('0x2')](_0x338a88,_0x5a7bbe);};}function removeListener(_0x3c8abd,_0x46dc4d){return function(){OpenchannelAccountEvents[_0x136f('0x3')](_0x3c8abd,_0x46dc4d);};}exports[_0x136f('0x4')]=function(_0x5b00b5){for(var _0x430433=0x0,_0x525663=events[_0x136f('0x5')];_0x430433<_0x525663;_0x430433++){var _0x29e9c5=events[_0x430433];var _0x3c7a1c=createListener('openchannelAccount:'+_0x29e9c5,_0x5b00b5);OpenchannelAccountEvents['on'](_0x29e9c5,_0x3c7a1c);}};
\ No newline at end of file
+var _0x0fec=['removeListener','openchannelAccount:','./openchannelAccount.events','save','remove','emit'];(function(_0x268b51,_0x24e494){var _0x3306c0=function(_0x3bd1db){while(--_0x3bd1db){_0x268b51['push'](_0x268b51['shift']());}};_0x3306c0(++_0x24e494);}(_0x0fec,0x1ca));var _0xc0fe=function(_0x1b10b1,_0x511690){_0x1b10b1=_0x1b10b1-0x0;var _0x1e1f24=_0x0fec[_0x1b10b1];return _0x1e1f24;};'use strict';var OpenchannelAccountEvents=require(_0xc0fe('0x0'));var events=[_0xc0fe('0x1'),_0xc0fe('0x2'),'update'];function createListener(_0x5b0e31,_0x36377d){return function(_0x53dc4d){_0x36377d[_0xc0fe('0x3')](_0x5b0e31,_0x53dc4d);};}function removeListener(_0x28af46,_0x4d1088){return function(){OpenchannelAccountEvents[_0xc0fe('0x4')](_0x28af46,_0x4d1088);};}exports['register']=function(_0x3fce36){for(var _0x1073f0=0x0,_0x4cc359=events['length'];_0x1073f0<_0x4cc359;_0x1073f0++){var _0x5b3f5a=events[_0x1073f0];var _0x326ab7=createListener(_0xc0fe('0x5')+_0x5b3f5a,_0x3fce36);OpenchannelAccountEvents['on'](_0x5b3f5a,_0x326ab7);}};
\ No newline at end of file
index 703d8b0..4fc672f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24f1=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post','put','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x2d5b68,_0x5c43df){var _0x20615f=function(_0x1f8cf8){while(--_0x1f8cf8){_0x2d5b68['push'](_0x2d5b68['shift']());}};_0x20615f(++_0x5c43df);}(_0x24f1,0x1b4));var _0x124f=function(_0x34288e,_0xd85134){_0x34288e=_0x34288e-0x0;var _0xd78212=_0x24f1[_0x34288e];return _0xd78212;};'use strict';var multer=require(_0x124f('0x0'));var util=require(_0x124f('0x1'));var path=require(_0x124f('0x2'));var timeout=require(_0x124f('0x3'));var express=require(_0x124f('0x4'));var router=express['Router']();var fs_extra=require(_0x124f('0x5'));var auth=require(_0x124f('0x6'));var interaction=require(_0x124f('0x7'));var config=require(_0x124f('0x8'));var controller=require('./openchannelApplication.controller');router[_0x124f('0x9')]('/',auth[_0x124f('0xa')](),controller['index']);router[_0x124f('0x9')](_0x124f('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x124f('0xc')]('/',auth[_0x124f('0xa')](),controller['create']);router[_0x124f('0xd')](_0x124f('0xb'),auth[_0x124f('0xa')](),controller[_0x124f('0xe')]);router[_0x124f('0xf')]('/:id',auth[_0x124f('0xa')](),controller[_0x124f('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x0be3=['/:id','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','post','create','put'];(function(_0x557185,_0x1db1e7){var _0x37e4a3=function(_0x3e3b5e){while(--_0x3e3b5e){_0x557185['push'](_0x557185['shift']());}};_0x37e4a3(++_0x1db1e7);}(_0x0be3,0x191));var _0x30be=function(_0x59b439,_0x14ae7b){_0x59b439=_0x59b439-0x0;var _0x521ea3=_0x0be3[_0x59b439];return _0x521ea3;};'use strict';var multer=require('multer');var util=require(_0x30be('0x0'));var path=require(_0x30be('0x1'));var timeout=require('connect-timeout');var express=require(_0x30be('0x2'));var router=express[_0x30be('0x3')]();var fs_extra=require(_0x30be('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x30be('0x5'));var config=require(_0x30be('0x6'));var controller=require('./openchannelApplication.controller');router[_0x30be('0x7')]('/',auth[_0x30be('0x8')](),controller[_0x30be('0x9')]);router[_0x30be('0x7')]('/:id',auth[_0x30be('0x8')](),controller['show']);router[_0x30be('0xa')]('/',auth[_0x30be('0x8')](),controller[_0x30be('0xb')]);router[_0x30be('0xc')](_0x30be('0xd'),auth[_0x30be('0x8')](),controller[_0x30be('0xe')]);router[_0x30be('0xf')](_0x30be('0xd'),auth[_0x30be('0x8')](),controller[_0x30be('0x10')]);module[_0x30be('0x11')]=router;
\ No newline at end of file
index b6ee37f..6b20513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb643=['exports','INTEGER','STRING','TEXT','*,*,*,*','sequelize'];(function(_0x272632,_0x4ca650){var _0x10b8ec=function(_0x5b78e9){while(--_0x5b78e9){_0x272632['push'](_0x272632['shift']());}};_0x10b8ec(++_0x4ca650);}(_0xb643,0xc5));var _0x3b64=function(_0x5c9cd1,_0x52d423){_0x5c9cd1=_0x5c9cd1-0x0;var _0x1c20c6=_0xb643[_0x5c9cd1];return _0x1c20c6;};'use strict';var Sequelize=require(_0x3b64('0x0'));module[_0x3b64('0x1')]={'priority':{'type':Sequelize[_0x3b64('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x3b64('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x3b64('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x3b64('0x5')}};
\ No newline at end of file
+var _0xb530=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x471faf,_0x29dd83){var _0x4ab1ad=function(_0x101416){while(--_0x101416){_0x471faf['push'](_0x471faf['shift']());}};_0x4ab1ad(++_0x29dd83);}(_0xb530,0xcc));var _0x0b53=function(_0x50d8f4,_0x1350cc){_0x50d8f4=_0x50d8f4-0x0;var _0x59ea00=_0xb530[_0x50d8f4];return _0x59ea00;};'use strict';var Sequelize=require(_0x0b53('0x0'));module[_0x0b53('0x1')]={'priority':{'type':Sequelize[_0x0b53('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x0b53('0x3')],'allowNull':![],'defaultValue':_0x0b53('0x4')},'appdata':{'type':Sequelize[_0x0b53('0x5')]()},'description':{'type':Sequelize[_0x0b53('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x0b53('0x6')}};
\ No newline at end of file
index afbfd1b..5369966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a0b=['merge','VIRTUAL','options','includeAll','show','include','find','catch','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','status','end','json','undefined','count','offset','limit','set','Content-Range','update','destroy','then','sendStatus','error','stack','name','index','map','OpenchannelApplication','rawAttributes','type','key','keys','query','filters','model','attributes','intersection','fields','length','sort','where','pick','filter'];(function(_0x5768b6,_0x130cf5){var _0x5c1924=function(_0x4185ac){while(--_0x4185ac){_0x5768b6['push'](_0x5768b6['shift']());}};_0x5c1924(++_0x130cf5);}(_0x1a0b,0x1ee));var _0xb1a0=function(_0x9e1256,_0x4be98b){_0x9e1256=_0x9e1256-0x0;var _0x4e179e=_0x1a0b[_0x9e1256];return _0x4e179e;};'use strict';var emlformat=require(_0xb1a0('0x0'));var rimraf=require(_0xb1a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb1a0('0x2'));var rp=require(_0xb1a0('0x3'));var moment=require('moment');var BPromise=require(_0xb1a0('0x4'));var Mustache=require(_0xb1a0('0x5'));var util=require(_0xb1a0('0x6'));var path=require(_0xb1a0('0x7'));var sox=require(_0xb1a0('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb1a0('0x9'));var _=require(_0xb1a0('0xa'));var squel=require(_0xb1a0('0xb'));var crypto=require(_0xb1a0('0xc'));var jsforce=require(_0xb1a0('0xd'));var deskjs=require(_0xb1a0('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb1a0('0xf'));var Papa=require(_0xb1a0('0x10'));var Redis=require(_0xb1a0('0x11'));var authService=require(_0xb1a0('0x12'));var qs=require(_0xb1a0('0x13'));var as=require(_0xb1a0('0x14'));var hardwareService=require(_0xb1a0('0x15'));var logger=require(_0xb1a0('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb1a0('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x148ffd,_0x31853d){_0x31853d=_0x31853d||0xcc;return function(_0x31daa0){if(_0x31daa0){return _0x148ffd['sendStatus'](_0x31853d);}return _0x148ffd[_0xb1a0('0x18')](_0x31853d)[_0xb1a0('0x19')]();};}function respondWithResult(_0x2b3079,_0x1db3d5){_0x1db3d5=_0x1db3d5||0xc8;return function(_0x344573){if(_0x344573){return _0x2b3079[_0xb1a0('0x18')](_0x1db3d5)[_0xb1a0('0x1a')](_0x344573);}};}function respondWithFilteredResult(_0x2353e3,_0x334a16){return function(_0x44f91a){if(_0x44f91a){var _0x56a644=typeof _0x334a16['offset']===_0xb1a0('0x1b')&&typeof _0x334a16['limit']===_0xb1a0('0x1b');var _0x532672=_0x44f91a[_0xb1a0('0x1c')];var _0x379060=_0x56a644?0x0:_0x334a16['offset'];var _0x1cf050=_0x56a644?_0x44f91a[_0xb1a0('0x1c')]:_0x334a16[_0xb1a0('0x1d')]+_0x334a16[_0xb1a0('0x1e')];var _0x21b690;if(_0x1cf050>=_0x532672){_0x1cf050=_0x532672;_0x21b690=0xc8;}else{_0x21b690=0xce;}_0x2353e3['status'](_0x21b690);return _0x2353e3[_0xb1a0('0x1f')](_0xb1a0('0x20'),_0x379060+'-'+_0x1cf050+'/'+_0x532672)[_0xb1a0('0x1a')](_0x44f91a);}return null;};}function patchUpdates(_0xe3c354){return function(_0x8b1a62){try{jsonpatch['apply'](_0x8b1a62,_0xe3c354,!![]);}catch(_0x5a8e7f){return BPromise['reject'](_0x5a8e7f);}return _0x8b1a62['save']();};}function saveUpdates(_0x25ee0d,_0x3249df){return function(_0x3c6e4c){if(_0x3c6e4c){return _0x3c6e4c[_0xb1a0('0x21')](_0x25ee0d)['then'](function(_0x249d0f){return _0x249d0f;});}return null;};}function removeEntity(_0x347959,_0x3b6892){return function(_0x457ba4){if(_0x457ba4){return _0x457ba4[_0xb1a0('0x22')]()[_0xb1a0('0x23')](function(){_0x347959[_0xb1a0('0x18')](0xcc)[_0xb1a0('0x19')]();});}};}function handleEntityNotFound(_0xfa9ca6,_0xafe671){return function(_0x57dca5){if(!_0x57dca5){_0xfa9ca6[_0xb1a0('0x24')](0x194);}return _0x57dca5;};}function handleError(_0x2b476d,_0x5bbf0f){_0x5bbf0f=_0x5bbf0f||0x1f4;return function(_0x10d1cc){logger[_0xb1a0('0x25')](_0x10d1cc[_0xb1a0('0x26')]);if(_0x10d1cc[_0xb1a0('0x27')]){delete _0x10d1cc[_0xb1a0('0x27')];}_0x2b476d[_0xb1a0('0x18')](_0x5bbf0f)['send'](_0x10d1cc);};}exports[_0xb1a0('0x28')]=function(_0x41d686,_0x5b55c9){var _0x41989b={},_0x287adc={},_0x270576={'count':0x0,'rows':[]};var _0x190518=_[_0xb1a0('0x29')](db[_0xb1a0('0x2a')][_0xb1a0('0x2b')],function(_0x3f7aa4){return{'name':_0x3f7aa4['fieldName'],'type':_0x3f7aa4[_0xb1a0('0x2c')][_0xb1a0('0x2d')]};});_0x287adc['model']=_['map'](_0x190518,'name');_0x287adc['query']=_[_0xb1a0('0x2e')](_0x41d686[_0xb1a0('0x2f')]);_0x287adc[_0xb1a0('0x30')]=_['intersection'](_0x287adc[_0xb1a0('0x31')],_0x287adc['query']);_0x41989b[_0xb1a0('0x32')]=_[_0xb1a0('0x33')](_0x287adc[_0xb1a0('0x31')],qs['fields'](_0x41d686['query'][_0xb1a0('0x34')]));_0x41989b[_0xb1a0('0x32')]=_0x41989b[_0xb1a0('0x32')][_0xb1a0('0x35')]?_0x41989b[_0xb1a0('0x32')]:_0x287adc[_0xb1a0('0x31')];if(!_0x41d686[_0xb1a0('0x2f')]['hasOwnProperty']('nolimit')){_0x41989b[_0xb1a0('0x1e')]=qs['limit'](_0x41d686[_0xb1a0('0x2f')][_0xb1a0('0x1e')]);_0x41989b['offset']=qs[_0xb1a0('0x1d')](_0x41d686[_0xb1a0('0x2f')][_0xb1a0('0x1d')]);}_0x41989b['order']=qs[_0xb1a0('0x36')](_0x41d686[_0xb1a0('0x2f')][_0xb1a0('0x36')]);_0x41989b[_0xb1a0('0x37')]=qs['filters'](_[_0xb1a0('0x38')](_0x41d686[_0xb1a0('0x2f')],_0x287adc[_0xb1a0('0x30')]),_0x190518);if(_0x41d686[_0xb1a0('0x2f')][_0xb1a0('0x39')]){_0x41989b[_0xb1a0('0x37')]=_[_0xb1a0('0x3a')](_0x41989b['where'],{'$or':_[_0xb1a0('0x29')](_0x190518,function(_0x48683d){if(_0x48683d[_0xb1a0('0x2c')]!==_0xb1a0('0x3b')){var _0x8eb4f7={};_0x8eb4f7[_0x48683d['name']]={'$like':'%'+_0x41d686[_0xb1a0('0x2f')]['filter']+'%'};return _0x8eb4f7;}})});}_0x41989b=_[_0xb1a0('0x3a')]({},_0x41989b,_0x41d686[_0xb1a0('0x3c')]);var _0x962e36={'where':_0x41989b[_0xb1a0('0x37')]};return db[_0xb1a0('0x2a')][_0xb1a0('0x1c')](_0x962e36)[_0xb1a0('0x23')](function(_0x16c20a){_0x270576[_0xb1a0('0x1c')]=_0x16c20a;if(_0x41d686[_0xb1a0('0x2f')][_0xb1a0('0x3d')]){_0x41989b['include']=[{'all':!![]}];}return db[_0xb1a0('0x2a')]['findAll'](_0x41989b);})[_0xb1a0('0x23')](function(_0x41dc96){_0x270576['rows']=_0x41dc96;return _0x270576;})['then'](respondWithFilteredResult(_0x5b55c9,_0x41989b))['catch'](handleError(_0x5b55c9,null));};exports[_0xb1a0('0x3e')]=function(_0x557da2,_0xc778aa){var _0x2aaf0d={'raw':!![],'where':{'id':_0x557da2['params']['id']}},_0x2979bb={};_0x2979bb[_0xb1a0('0x31')]=_[_0xb1a0('0x2e')](db[_0xb1a0('0x2a')][_0xb1a0('0x2b')]);_0x2979bb[_0xb1a0('0x2f')]=_[_0xb1a0('0x2e')](_0x557da2['query']);_0x2979bb[_0xb1a0('0x30')]=_[_0xb1a0('0x33')](_0x2979bb['model'],_0x2979bb[_0xb1a0('0x2f')]);_0x2aaf0d['attributes']=_[_0xb1a0('0x33')](_0x2979bb[_0xb1a0('0x31')],qs[_0xb1a0('0x34')](_0x557da2[_0xb1a0('0x2f')][_0xb1a0('0x34')]));_0x2aaf0d['attributes']=_0x2aaf0d['attributes'][_0xb1a0('0x35')]?_0x2aaf0d['attributes']:_0x2979bb[_0xb1a0('0x31')];if(_0x557da2[_0xb1a0('0x2f')]['includeAll']){_0x2aaf0d[_0xb1a0('0x3f')]=[{'all':!![]}];}_0x2aaf0d=_[_0xb1a0('0x3a')]({},_0x2aaf0d,_0x557da2[_0xb1a0('0x3c')]);return db['OpenchannelApplication'][_0xb1a0('0x40')](_0x2aaf0d)['then'](handleEntityNotFound(_0xc778aa,null))[_0xb1a0('0x23')](respondWithResult(_0xc778aa,null))[_0xb1a0('0x41')](handleError(_0xc778aa,null));};exports[_0xb1a0('0x42')]=function(_0xb91627,_0x460bf2){return db['OpenchannelApplication'][_0xb1a0('0x42')](_0xb91627['body'],{})[_0xb1a0('0x23')](respondWithResult(_0x460bf2,0xc9))[_0xb1a0('0x41')](handleError(_0x460bf2,null));};exports['update']=function(_0xe19068,_0x167617){if(_0xe19068[_0xb1a0('0x43')]['id']){delete _0xe19068[_0xb1a0('0x43')]['id'];}return db[_0xb1a0('0x2a')]['find']({'where':{'id':_0xe19068[_0xb1a0('0x44')]['id']}})[_0xb1a0('0x23')](handleEntityNotFound(_0x167617,null))['then'](saveUpdates(_0xe19068[_0xb1a0('0x43')],null))[_0xb1a0('0x23')](respondWithResult(_0x167617,null))[_0xb1a0('0x41')](handleError(_0x167617,null));};exports['destroy']=function(_0x281446,_0x3cdee0){return db[_0xb1a0('0x2a')][_0xb1a0('0x40')]({'where':{'id':_0x281446[_0xb1a0('0x44')]['id']}})[_0xb1a0('0x23')](handleEntityNotFound(_0x3cdee0,null))['then'](removeEntity(_0x3cdee0,null))[_0xb1a0('0x41')](handleError(_0x3cdee0,null));};
\ No newline at end of file
+var _0x887f=['../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','end','error','stack','name','send','map','OpenchannelApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','then','includeAll','findAll','rows','show','length','merge','find','catch','create','body','destroy','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x13b88a,_0x5bb82d){var _0x36f679=function(_0x119b40){while(--_0x119b40){_0x13b88a['push'](_0x13b88a['shift']());}};_0x36f679(++_0x5bb82d);}(_0x887f,0xc6));var _0xf887=function(_0x17c31a,_0x16ea46){_0x17c31a=_0x17c31a-0x0;var _0x4bf344=_0x887f[_0x17c31a];return _0x4bf344;};'use strict';var emlformat=require(_0xf887('0x0'));var rimraf=require(_0xf887('0x1'));var zipdir=require(_0xf887('0x2'));var jsonpatch=require(_0xf887('0x3'));var rp=require(_0xf887('0x4'));var moment=require(_0xf887('0x5'));var BPromise=require(_0xf887('0x6'));var Mustache=require(_0xf887('0x7'));var util=require('util');var path=require(_0xf887('0x8'));var sox=require(_0xf887('0x9'));var csv=require(_0xf887('0xa'));var ejs=require(_0xf887('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf887('0xc'));var squel=require(_0xf887('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf887('0xe'));var toCsv=require(_0xf887('0xa'));var querystring=require('querystring');var Papa=require(_0xf887('0xf'));var Redis=require(_0xf887('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf887('0x11'));var as=require(_0xf887('0x12'));var hardwareService=require(_0xf887('0x13'));var logger=require('../../config/logger')(_0xf887('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf887('0x15'));var db=require(_0xf887('0x16'))['db'];function respondWithStatusCode(_0x41afdd,_0x298d25){_0x298d25=_0x298d25||0xcc;return function(_0xc29340){if(_0xc29340){return _0x41afdd[_0xf887('0x17')](_0x298d25);}return _0x41afdd[_0xf887('0x18')](_0x298d25)['end']();};}function respondWithResult(_0x2fb6c3,_0x48ac88){_0x48ac88=_0x48ac88||0xc8;return function(_0x54b567){if(_0x54b567){return _0x2fb6c3[_0xf887('0x18')](_0x48ac88)[_0xf887('0x19')](_0x54b567);}};}function respondWithFilteredResult(_0x53f4a2,_0x4cb1e4){return function(_0x1eb6e2){if(_0x1eb6e2){var _0x9ec28b=typeof _0x4cb1e4[_0xf887('0x1a')]===_0xf887('0x1b')&&typeof _0x4cb1e4[_0xf887('0x1c')]===_0xf887('0x1b');var _0x2fd594=_0x1eb6e2[_0xf887('0x1d')];var _0x1c1c7e=_0x9ec28b?0x0:_0x4cb1e4['offset'];var _0x1950d0=_0x9ec28b?_0x1eb6e2[_0xf887('0x1d')]:_0x4cb1e4[_0xf887('0x1a')]+_0x4cb1e4[_0xf887('0x1c')];var _0x3e04af;if(_0x1950d0>=_0x2fd594){_0x1950d0=_0x2fd594;_0x3e04af=0xc8;}else{_0x3e04af=0xce;}_0x53f4a2[_0xf887('0x18')](_0x3e04af);return _0x53f4a2[_0xf887('0x1e')](_0xf887('0x1f'),_0x1c1c7e+'-'+_0x1950d0+'/'+_0x2fd594)[_0xf887('0x19')](_0x1eb6e2);}return null;};}function patchUpdates(_0x2121a7){return function(_0x3efe4c){try{jsonpatch[_0xf887('0x20')](_0x3efe4c,_0x2121a7,!![]);}catch(_0x3bb1f1){return BPromise['reject'](_0x3bb1f1);}return _0x3efe4c[_0xf887('0x21')]();};}function saveUpdates(_0x38c34a,_0x5ade94){return function(_0x5a12b9){if(_0x5a12b9){return _0x5a12b9[_0xf887('0x22')](_0x38c34a)['then'](function(_0x2c8d46){return _0x2c8d46;});}return null;};}function removeEntity(_0x4d5856,_0x33a338){return function(_0x38469c){if(_0x38469c){return _0x38469c['destroy']()['then'](function(){_0x4d5856[_0xf887('0x18')](0xcc)[_0xf887('0x23')]();});}};}function handleEntityNotFound(_0x4880fd,_0x8520f4){return function(_0xc6ae0c){if(!_0xc6ae0c){_0x4880fd[_0xf887('0x17')](0x194);}return _0xc6ae0c;};}function handleError(_0x3009cd,_0x502ad2){_0x502ad2=_0x502ad2||0x1f4;return function(_0x1bbf07){logger[_0xf887('0x24')](_0x1bbf07[_0xf887('0x25')]);if(_0x1bbf07['name']){delete _0x1bbf07[_0xf887('0x26')];}_0x3009cd[_0xf887('0x18')](_0x502ad2)[_0xf887('0x27')](_0x1bbf07);};}exports['index']=function(_0x16de83,_0x2af9b1){var _0x37708c={},_0xc34df1={},_0x1b64ec={'count':0x0,'rows':[]};var _0x37e6cb=_[_0xf887('0x28')](db[_0xf887('0x29')][_0xf887('0x2a')],function(_0xd8d2e4){return{'name':_0xd8d2e4[_0xf887('0x2b')],'type':_0xd8d2e4[_0xf887('0x2c')]['key']};});_0xc34df1[_0xf887('0x2d')]=_[_0xf887('0x28')](_0x37e6cb,_0xf887('0x26'));_0xc34df1[_0xf887('0x2e')]=_[_0xf887('0x2f')](_0x16de83[_0xf887('0x2e')]);_0xc34df1[_0xf887('0x30')]=_[_0xf887('0x31')](_0xc34df1[_0xf887('0x2d')],_0xc34df1[_0xf887('0x2e')]);_0x37708c[_0xf887('0x32')]=_['intersection'](_0xc34df1[_0xf887('0x2d')],qs['fields'](_0x16de83['query'][_0xf887('0x33')]));_0x37708c['attributes']=_0x37708c['attributes']['length']?_0x37708c[_0xf887('0x32')]:_0xc34df1[_0xf887('0x2d')];if(!_0x16de83[_0xf887('0x2e')][_0xf887('0x34')]('nolimit')){_0x37708c[_0xf887('0x1c')]=qs['limit'](_0x16de83[_0xf887('0x2e')][_0xf887('0x1c')]);_0x37708c[_0xf887('0x1a')]=qs[_0xf887('0x1a')](_0x16de83[_0xf887('0x2e')][_0xf887('0x1a')]);}_0x37708c[_0xf887('0x35')]=qs[_0xf887('0x36')](_0x16de83[_0xf887('0x2e')][_0xf887('0x36')]);_0x37708c[_0xf887('0x37')]=qs[_0xf887('0x30')](_[_0xf887('0x38')](_0x16de83['query'],_0xc34df1['filters']),_0x37e6cb);if(_0x16de83['query'][_0xf887('0x39')]){_0x37708c[_0xf887('0x37')]=_['merge'](_0x37708c[_0xf887('0x37')],{'$or':_[_0xf887('0x28')](_0x37e6cb,function(_0x54b739){if(_0x54b739[_0xf887('0x2c')]!==_0xf887('0x3a')){var _0x252ad4={};_0x252ad4[_0x54b739[_0xf887('0x26')]]={'$like':'%'+_0x16de83[_0xf887('0x2e')]['filter']+'%'};return _0x252ad4;}})});}_0x37708c=_['merge']({},_0x37708c,_0x16de83[_0xf887('0x3b')]);var _0x5c325b={'where':_0x37708c[_0xf887('0x37')]};return db[_0xf887('0x29')][_0xf887('0x1d')](_0x5c325b)[_0xf887('0x3c')](function(_0x3b4d32){_0x1b64ec['count']=_0x3b4d32;if(_0x16de83['query'][_0xf887('0x3d')]){_0x37708c['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0xf887('0x3e')](_0x37708c);})['then'](function(_0x4c1016){_0x1b64ec[_0xf887('0x3f')]=_0x4c1016;return _0x1b64ec;})[_0xf887('0x3c')](respondWithFilteredResult(_0x2af9b1,_0x37708c))['catch'](handleError(_0x2af9b1,null));};exports[_0xf887('0x40')]=function(_0x55a32a,_0x1fdb33){var _0x5dc893={'raw':!![],'where':{'id':_0x55a32a['params']['id']}},_0x2ef9a8={};_0x2ef9a8[_0xf887('0x2d')]=_[_0xf887('0x2f')](db[_0xf887('0x29')]['rawAttributes']);_0x2ef9a8[_0xf887('0x2e')]=_[_0xf887('0x2f')](_0x55a32a['query']);_0x2ef9a8['filters']=_['intersection'](_0x2ef9a8['model'],_0x2ef9a8[_0xf887('0x2e')]);_0x5dc893['attributes']=_['intersection'](_0x2ef9a8[_0xf887('0x2d')],qs[_0xf887('0x33')](_0x55a32a['query'][_0xf887('0x33')]));_0x5dc893['attributes']=_0x5dc893[_0xf887('0x32')][_0xf887('0x41')]?_0x5dc893['attributes']:_0x2ef9a8[_0xf887('0x2d')];if(_0x55a32a['query'][_0xf887('0x3d')]){_0x5dc893['include']=[{'all':!![]}];}_0x5dc893=_[_0xf887('0x42')]({},_0x5dc893,_0x55a32a['options']);return db['OpenchannelApplication'][_0xf887('0x43')](_0x5dc893)[_0xf887('0x3c')](handleEntityNotFound(_0x1fdb33,null))[_0xf887('0x3c')](respondWithResult(_0x1fdb33,null))[_0xf887('0x44')](handleError(_0x1fdb33,null));};exports[_0xf887('0x45')]=function(_0x5c1aed,_0x315f09){return db['OpenchannelApplication'][_0xf887('0x45')](_0x5c1aed[_0xf887('0x46')],{})['then'](respondWithResult(_0x315f09,0xc9))['catch'](handleError(_0x315f09,null));};exports[_0xf887('0x22')]=function(_0x47bd3f,_0x5bc45c){if(_0x47bd3f[_0xf887('0x46')]['id']){delete _0x47bd3f[_0xf887('0x46')]['id'];}return db['OpenchannelApplication'][_0xf887('0x43')]({'where':{'id':_0x47bd3f['params']['id']}})[_0xf887('0x3c')](handleEntityNotFound(_0x5bc45c,null))[_0xf887('0x3c')](saveUpdates(_0x47bd3f[_0xf887('0x46')],null))['then'](respondWithResult(_0x5bc45c,null))[_0xf887('0x44')](handleError(_0x5bc45c,null));};exports[_0xf887('0x47')]=function(_0x241ae1,_0x5b0638){return db[_0xf887('0x29')][_0xf887('0x43')]({'where':{'id':_0x241ae1[_0xf887('0x48')]['id']}})[_0xf887('0x3c')](handleEntityNotFound(_0x5b0638,null))[_0xf887('0x3c')](removeEntity(_0x5b0638,null))['catch'](handleError(_0x5b0638,null));};
\ No newline at end of file
index 561f40c..229f146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342e=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','lodash','util','api','moment'];(function(_0x5aa560,_0x5c1922){var _0x2d75a2=function(_0xfcb700){while(--_0xfcb700){_0x5aa560['push'](_0x5aa560['shift']());}};_0x2d75a2(++_0x5c1922);}(_0x342e,0x1d8));var _0xe342=function(_0x478414,_0xcf142d){_0x478414=_0x478414-0x0;var _0x5eb6b9=_0x342e[_0x478414];return _0x5eb6b9;};'use strict';var _=require(_0xe342('0x0'));var util=require(_0xe342('0x1'));var logger=require('../../config/logger')(_0xe342('0x2'));var moment=require(_0xe342('0x3'));var BPromise=require(_0xe342('0x4'));var rp=require(_0xe342('0x5'));var fs=require('fs');var path=require(_0xe342('0x6'));var rimraf=require(_0xe342('0x7'));var config=require(_0xe342('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0xe342('0x9')]=function(_0x542ecf,_0x486ac2){return _0x542ecf[_0xe342('0xa')](_0xe342('0xb'),attributes,{'tableName':_0xe342('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe342('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4915=['request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','openchannel_applications','utf8mb4','lodash','util','../../config/logger','moment'];(function(_0x2850c0,_0x1363a7){var _0x21e830=function(_0x3ec70a){while(--_0x3ec70a){_0x2850c0['push'](_0x2850c0['shift']());}};_0x21e830(++_0x1363a7);}(_0x4915,0x71));var _0x5491=function(_0x2a7298,_0x54b9df){_0x2a7298=_0x2a7298-0x0;var _0xbc7a81=_0x4915[_0x2a7298];return _0xbc7a81;};'use strict';var _=require(_0x5491('0x0'));var util=require(_0x5491('0x1'));var logger=require(_0x5491('0x2'))('api');var moment=require(_0x5491('0x3'));var BPromise=require('bluebird');var rp=require(_0x5491('0x4'));var fs=require('fs');var path=require(_0x5491('0x5'));var rimraf=require(_0x5491('0x6'));var config=require(_0x5491('0x7'));var attributes=require(_0x5491('0x8'));module[_0x5491('0x9')]=function(_0x2459de,_0x5df957){return _0x2459de[_0x5491('0xa')]('OpenchannelApplication',attributes,{'tableName':_0x5491('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5491('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 40aae03..a43a0a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53a2=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','options','raw','where','attributes','limit','lodash','util','bluebird','ioredis'];(function(_0x2874cc,_0x3579f1){var _0x20a574=function(_0x3d0ad9){while(--_0x3d0ad9){_0x2874cc['push'](_0x2874cc['shift']());}};_0x20a574(++_0x3579f1);}(_0x53a2,0x170));var _0x253a=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x53a2[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x253a('0x0'));var util=require(_0x253a('0x1'));var moment=require('moment');var BPromise=require(_0x253a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x253a('0x3'));var db=require(_0x253a('0x4'))['db'];var utils=require(_0x253a('0x5'));var logger=require(_0x253a('0x6'))(_0x253a('0x7'));var config=require('../../config/environment');var jayson=require(_0x253a('0x8'));var client=jayson['client'][_0x253a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3283b4,_0x57ecb3,_0x1fac10){return new BPromise(function(_0x5d06b6,_0x4b8e3c){return client[_0x253a('0xa')](_0x3283b4,_0x1fac10)[_0x253a('0xb')](function(_0x4146bc){logger[_0x253a('0xc')](_0x253a('0xd'),_0x57ecb3,'request\x20sent');logger[_0x253a('0xe')](_0x253a('0xf'),_0x57ecb3,'request\x20sent',JSON[_0x253a('0x10')](_0x4146bc));if(_0x4146bc['error']){if(_0x4146bc[_0x253a('0x11')][_0x253a('0x12')]===0x1f4){logger[_0x253a('0x11')](_0x253a('0xd'),_0x57ecb3,_0x4146bc[_0x253a('0x11')]['message']);return _0x4b8e3c(_0x4146bc['error'][_0x253a('0x13')]);}logger[_0x253a('0x11')](_0x253a('0xd'),_0x57ecb3,_0x4146bc[_0x253a('0x11')][_0x253a('0x13')]);return _0x5d06b6(_0x4146bc[_0x253a('0x11')]['message']);}else{logger[_0x253a('0xc')](_0x253a('0xd'),_0x57ecb3,_0x253a('0x14'));_0x5d06b6(_0x4146bc[_0x253a('0x15')][_0x253a('0x13')]);}})[_0x253a('0x16')](function(_0x34193e){logger[_0x253a('0x11')](_0x253a('0xd'),_0x57ecb3,_0x34193e);_0x4b8e3c(_0x34193e);});});}exports[_0x253a('0x17')]=function(_0x39e3d4){var _0x88e893=this;return new Promise(function(_0x39e312,_0x587df9){return db[_0x253a('0x18')][_0x253a('0x19')](_0x39e3d4['body'],{'raw':_0x39e3d4[_0x253a('0x1a')]?_0x39e3d4['options'][_0x253a('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39e3d4[_0x253a('0x1a')]?_0x39e3d4[_0x253a('0x1a')][_0x253a('0x1c')]||null:null,'attributes':_0x39e3d4[_0x253a('0x1a')]?_0x39e3d4['options'][_0x253a('0x1d')]||null:null,'limit':_0x39e3d4[_0x253a('0x1a')]?_0x39e3d4[_0x253a('0x1a')][_0x253a('0x1e')]||null:null})[_0x253a('0xb')](function(_0x2fcedb){logger[_0x253a('0xc')]('UpdateOpenchannelApplication',_0x39e3d4);logger['debug'](_0x253a('0x17'),_0x39e3d4,JSON[_0x253a('0x10')](_0x2fcedb));_0x39e312(_0x2fcedb);})[_0x253a('0x16')](function(_0x14f147){logger[_0x253a('0x11')]('UpdateOpenchannelApplication',_0x14f147['message'],_0x39e3d4);_0x587df9(_0x88e893[_0x253a('0x11')](0x1f4,_0x14f147[_0x253a('0x13')]));});});};
\ No newline at end of file
+var _0xa9bd=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','code','message','catch','OpenchannelApplication','body','options','raw','where','attributes','limit','UpdateOpenchannelApplication','stringify','lodash','util','moment','bluebird','randomstring'];(function(_0x4c5356,_0x53e8a2){var _0xe6903d=function(_0x1ab823){while(--_0x1ab823){_0x4c5356['push'](_0x4c5356['shift']());}};_0xe6903d(++_0x53e8a2);}(_0xa9bd,0x1cc));var _0xda9b=function(_0x5f00ee,_0x46a13e){_0x5f00ee=_0x5f00ee-0x0;var _0x5cc9b9=_0xa9bd[_0x5f00ee];return _0x5cc9b9;};'use strict';var _=require(_0xda9b('0x0'));var util=require(_0xda9b('0x1'));var moment=require(_0xda9b('0x2'));var BPromise=require(_0xda9b('0x3'));var rs=require(_0xda9b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xda9b('0x5'))['db'];var utils=require(_0xda9b('0x6'));var logger=require(_0xda9b('0x7'))('rpc');var config=require(_0xda9b('0x8'));var jayson=require(_0xda9b('0x9'));var client=jayson[_0xda9b('0xa')][_0xda9b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xaf228,_0x387b27,_0x18f293){return new BPromise(function(_0x187be2,_0x32aebb){return client[_0xda9b('0xc')](_0xaf228,_0x18f293)[_0xda9b('0xd')](function(_0x9a4eb2){logger[_0xda9b('0xe')](_0xda9b('0xf'),_0x387b27,_0xda9b('0x10'));logger['debug'](_0xda9b('0x11'),_0x387b27,_0xda9b('0x10'),JSON['stringify'](_0x9a4eb2));if(_0x9a4eb2['error']){if(_0x9a4eb2[_0xda9b('0x12')][_0xda9b('0x13')]===0x1f4){logger[_0xda9b('0x12')](_0xda9b('0xf'),_0x387b27,_0x9a4eb2[_0xda9b('0x12')][_0xda9b('0x14')]);return _0x32aebb(_0x9a4eb2[_0xda9b('0x12')][_0xda9b('0x14')]);}logger[_0xda9b('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x387b27,_0x9a4eb2[_0xda9b('0x12')]['message']);return _0x187be2(_0x9a4eb2[_0xda9b('0x12')]['message']);}else{logger[_0xda9b('0xe')](_0xda9b('0xf'),_0x387b27,_0xda9b('0x10'));_0x187be2(_0x9a4eb2['result'][_0xda9b('0x14')]);}})[_0xda9b('0x15')](function(_0x2acacb){logger[_0xda9b('0x12')](_0xda9b('0xf'),_0x387b27,_0x2acacb);_0x32aebb(_0x2acacb);});});}exports['UpdateOpenchannelApplication']=function(_0x542fff){var _0x5a65d7=this;return new Promise(function(_0x42a5b1,_0x35ac27){return db[_0xda9b('0x16')]['update'](_0x542fff[_0xda9b('0x17')],{'raw':_0x542fff[_0xda9b('0x18')]?_0x542fff[_0xda9b('0x18')][_0xda9b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x542fff[_0xda9b('0x18')]?_0x542fff[_0xda9b('0x18')][_0xda9b('0x1a')]||null:null,'attributes':_0x542fff['options']?_0x542fff[_0xda9b('0x18')][_0xda9b('0x1b')]||null:null,'limit':_0x542fff['options']?_0x542fff[_0xda9b('0x18')][_0xda9b('0x1c')]||null:null})[_0xda9b('0xd')](function(_0xbd106c){logger[_0xda9b('0xe')](_0xda9b('0x1d'),_0x542fff);logger['debug'](_0xda9b('0x1d'),_0x542fff,JSON[_0xda9b('0x1e')](_0xbd106c));_0x42a5b1(_0xbd106c);})[_0xda9b('0x15')](function(_0x3edf2c){logger[_0xda9b('0x12')](_0xda9b('0x1d'),_0x3edf2c[_0xda9b('0x14')],_0x542fff);_0x35ac27(_0x5a65d7[_0xda9b('0x12')](0x1f4,_0x3edf2c[_0xda9b('0x14')]));});});};
\ No newline at end of file
index 32bd93d..cbd08f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf2=['put','/:id','openchannelinteraction:update','delete','openchannel','openchannelinteraction:destroy','destroy','removeTags','multer','path','connect-timeout','fs-extra','../../components/interaction/service','./openchannelInteraction.controller','get','index','/describe','isAuthenticated','describe','show','/:id/messages','/:id/download','download','post','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags'];(function(_0x4574c8,_0x2dd90e){var _0x23279e=function(_0xe80014){while(--_0xe80014){_0x4574c8['push'](_0x4574c8['shift']());}};_0x23279e(++_0x2dd90e);}(_0x1cf2,0x10d));var _0x21cf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1cf2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x21cf('0x0'));var util=require('util');var path=require(_0x21cf('0x1'));var timeout=require(_0x21cf('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x21cf('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x21cf('0x4'));var config=require('../../config/environment');var controller=require(_0x21cf('0x5'));router[_0x21cf('0x6')]('/',auth['isAuthenticated'](),controller[_0x21cf('0x7')]);router[_0x21cf('0x6')](_0x21cf('0x8'),auth[_0x21cf('0x9')](),controller[_0x21cf('0xa')]);router[_0x21cf('0x6')]('/:id',auth[_0x21cf('0x9')](),controller[_0x21cf('0xb')]);router['get'](_0x21cf('0xc'),auth[_0x21cf('0x9')](),controller['getMessages']);router['get'](_0x21cf('0xd'),auth[_0x21cf('0x9')](),controller[_0x21cf('0xe')]);router[_0x21cf('0xf')]('/',auth[_0x21cf('0x9')](),controller['create']);router['post']('/:id/messages',auth[_0x21cf('0x9')](),controller[_0x21cf('0x10')]);router[_0x21cf('0xf')](_0x21cf('0x11'),auth['isAuthenticated'](),interaction[_0x21cf('0x12')]('openchannel',_0x21cf('0x13')),controller[_0x21cf('0x14')]);router[_0x21cf('0x15')](_0x21cf('0x16'),auth[_0x21cf('0x9')](),interaction[_0x21cf('0x12')]('openchannel',_0x21cf('0x17')),controller['update']);router[_0x21cf('0x18')](_0x21cf('0x16'),auth[_0x21cf('0x9')](),interaction[_0x21cf('0x12')](_0x21cf('0x19'),_0x21cf('0x1a')),controller[_0x21cf('0x1b')]);router[_0x21cf('0x18')](_0x21cf('0x11'),auth[_0x21cf('0x9')](),controller[_0x21cf('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0xd442=['openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','getMessages','download','post','create','/:id/messages','addMessage','/:id/tags','openchannel','openchannelinteraction:addtags','addTags','put','tracked','openchannelinteraction:update','update','delete'];(function(_0x244d04,_0x19a423){var _0xa863db=function(_0x34cbbe){while(--_0x34cbbe){_0x244d04['push'](_0x244d04['shift']());}};_0xa863db(++_0x19a423);}(_0xd442,0xca));var _0x2d44=function(_0x8afcd4,_0x15c552){_0x8afcd4=_0x8afcd4-0x0;var _0x4a9a95=_0xd442[_0x8afcd4];return _0x4a9a95;};'use strict';var multer=require(_0x2d44('0x0'));var util=require(_0x2d44('0x1'));var path=require(_0x2d44('0x2'));var timeout=require(_0x2d44('0x3'));var express=require(_0x2d44('0x4'));var router=express[_0x2d44('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2d44('0x6'));var interaction=require(_0x2d44('0x7'));var config=require(_0x2d44('0x8'));var controller=require('./openchannelInteraction.controller');router[_0x2d44('0x9')]('/',auth[_0x2d44('0xa')](),controller['index']);router[_0x2d44('0x9')]('/describe',auth[_0x2d44('0xa')](),controller[_0x2d44('0xb')]);router[_0x2d44('0x9')](_0x2d44('0xc'),auth[_0x2d44('0xa')](),controller[_0x2d44('0xd')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller[_0x2d44('0xe')]);router[_0x2d44('0x9')]('/:id/download',auth[_0x2d44('0xa')](),controller[_0x2d44('0xf')]);router[_0x2d44('0x10')]('/',auth[_0x2d44('0xa')](),controller[_0x2d44('0x11')]);router[_0x2d44('0x10')](_0x2d44('0x12'),auth[_0x2d44('0xa')](),controller[_0x2d44('0x13')]);router[_0x2d44('0x10')](_0x2d44('0x14'),auth[_0x2d44('0xa')](),interaction['tracked'](_0x2d44('0x15'),_0x2d44('0x16')),controller[_0x2d44('0x17')]);router[_0x2d44('0x18')](_0x2d44('0xc'),auth['isAuthenticated'](),interaction[_0x2d44('0x19')](_0x2d44('0x15'),_0x2d44('0x1a')),controller[_0x2d44('0x1b')]);router[_0x2d44('0x1c')](_0x2d44('0xc'),auth[_0x2d44('0xa')](),interaction[_0x2d44('0x19')](_0x2d44('0x15'),_0x2d44('0x1d')),controller[_0x2d44('0x1e')]);router[_0x2d44('0x1c')](_0x2d44('0x14'),auth['isAuthenticated'](),controller[_0x2d44('0x1f')]);module[_0x2d44('0x20')]=router;
\ No newline at end of file
index 7b5b989..781768d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f88=['STRING','ENUM','out','sequelize','exports','DATE'];(function(_0x488acf,_0x1676de){var _0x2da661=function(_0x34ab20){while(--_0x34ab20){_0x488acf['push'](_0x488acf['shift']());}};_0x2da661(++_0x1676de);}(_0x4f88,0xf3));var _0x84f8=function(_0x582f72,_0x886d8){_0x582f72=_0x582f72-0x0;var _0x4cd5fe=_0x4f88[_0x582f72];return _0x4cd5fe;};'use strict';var Sequelize=require(_0x84f8('0x0'));module[_0x84f8('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x84f8('0x2')]},'disposition':{'type':Sequelize[_0x84f8('0x3')]},'secondDisposition':{'type':Sequelize[_0x84f8('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x84f8('0x2')]},'threadId':{'type':Sequelize[_0x84f8('0x3')]},'externalUrl':{'type':Sequelize[_0x84f8('0x3')]},'lastMsgAt':{'type':Sequelize[_0x84f8('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x84f8('0x4')]('in',_0x84f8('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x84f8('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x84f8('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x4b8a=['out','exports','DATE','STRING','ENUM'];(function(_0x4115c7,_0xc4e67a){var _0xbc8b30=function(_0x488f1d){while(--_0x488f1d){_0x4115c7['push'](_0x4115c7['shift']());}};_0xbc8b30(++_0xc4e67a);}(_0x4b8a,0xd3));var _0xa4b8=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x4b8a[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require('sequelize');module[_0xa4b8('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa4b8('0x1')]},'disposition':{'type':Sequelize[_0xa4b8('0x2')]},'secondDisposition':{'type':Sequelize[_0xa4b8('0x2')]},'thirdDisposition':{'type':Sequelize[_0xa4b8('0x2')]},'note':{'type':Sequelize[_0xa4b8('0x2')]},'read1stAt':{'type':Sequelize[_0xa4b8('0x1')]},'threadId':{'type':Sequelize[_0xa4b8('0x2')]},'externalUrl':{'type':Sequelize[_0xa4b8('0x2')]},'lastMsgAt':{'type':Sequelize[_0xa4b8('0x1')]},'firstMsgDirection':{'type':Sequelize[_0xa4b8('0x3')]('in',_0xa4b8('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xa4b8('0x3')]('in',_0xa4b8('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xa4b8('0x2')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index d0af3c4..cc0f432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9be=['existsSync','createReadStream','createWriteStream','direction','out','System','Contact','firstName','lastName','value','renderFile','views','downloadInteraction.ejs','unlinkSync','zip-dir','moment','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','api','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','error','name','send','OpenchannelInteraction','rawAttributes','fieldName','type','key','findAll','openchannel','query','user','catch','from','params','model','keys','intersection','fields','attributes','length','includeAll','include','merge','options','find','create','body','describe','addMessage','OpenchannelMessage','ids','findOne','filters','hasOwnProperty','nolimit','order','sort','pick','where','OpenchannelInteractionId','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','omit','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','toString','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Attachment','Messages','createdAt','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closed','closedAt','threadId','basename'];(function(_0x9641f8,_0x5c2372){var _0x3881b4=function(_0x45b7d9){while(--_0x45b7d9){_0x9641f8['push'](_0x9641f8['shift']());}};_0x3881b4(++_0x5c2372);}(_0xc9be,0x8a));var _0xec9b=function(_0x2e0731,_0x580bc8){_0x2e0731=_0x2e0731-0x0;var _0x19e7e6=_0xc9be[_0x2e0731];return _0x19e7e6;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xec9b('0x0'));var moment=require(_0xec9b('0x1'));var util=require('util');var path=require(_0xec9b('0x2'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xec9b('0x3'));var Redis=require('ioredis');var interaction=require(_0xec9b('0x4'));var qs=require(_0xec9b('0x5'));var pdf=require(_0xec9b('0x6'));var logger=require('../../config/logger')(_0xec9b('0x7'));var config=require('../../config/environment');var db=require(_0xec9b('0x8'))['db'];config[_0xec9b('0x9')]=_[_0xec9b('0xa')](config[_0xec9b('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xec9b('0xb'))(new Redis(config[_0xec9b('0x9')]));require(_0xec9b('0xc'))[_0xec9b('0xd')](socket);function respondWithStatusCode(_0x57ca71,_0x51cd09){_0x51cd09=_0x51cd09||0xcc;return function(_0x449f10){if(_0x449f10){return _0x57ca71[_0xec9b('0xe')](_0x51cd09);}return _0x57ca71['status'](_0x51cd09)[_0xec9b('0xf')]();};}function respondWithResult(_0x5728bd,_0xe6766e){_0xe6766e=_0xe6766e||0xc8;return function(_0x10a573){if(_0x10a573){return _0x5728bd[_0xec9b('0x10')](_0xe6766e)[_0xec9b('0x11')](_0x10a573);}};}function respondWithFilteredResult(_0xce7909,_0x5c6591){return function(_0x4833a2){if(_0x4833a2){var _0x4f1c7d=typeof _0x5c6591[_0xec9b('0x12')]===_0xec9b('0x13')&&typeof _0x5c6591[_0xec9b('0x14')]===_0xec9b('0x13');var _0x579f9d=_0x4833a2[_0xec9b('0x15')];var _0x24fcc6=_0x4f1c7d?0x0:_0x5c6591['offset'];var _0x3b28d9=_0x4f1c7d?_0x4833a2[_0xec9b('0x15')]:_0x5c6591[_0xec9b('0x12')]+_0x5c6591[_0xec9b('0x14')];var _0x201d96;if(_0x3b28d9>=_0x579f9d){_0x3b28d9=_0x579f9d;_0x201d96=0xc8;}else{_0x201d96=0xce;}_0xce7909[_0xec9b('0x10')](_0x201d96);return _0xce7909[_0xec9b('0x16')](_0xec9b('0x17'),_0x24fcc6+'-'+_0x3b28d9+'/'+_0x579f9d)['json'](_0x4833a2);}return null;};}function saveUpdates(_0x51fcda){return function(_0x34ff6b){if(_0x34ff6b){return _0x34ff6b['update'](_0x51fcda)[_0xec9b('0x18')](function(_0x3d18ab){return _0x3d18ab;});}return null;};}function removeEntity(_0x583739){return function(_0x12f3bf){if(_0x12f3bf){return _0x12f3bf[_0xec9b('0x19')]()['then'](function(){_0x583739[_0xec9b('0x10')](0xcc)[_0xec9b('0xf')]();});}};}function handleEntityNotFound(_0x2df431){return function(_0x5ef6f1){if(!_0x5ef6f1){_0x2df431['sendStatus'](0x194);}return _0x5ef6f1;};}function handleError(_0xaa2849,_0x43e758){_0x43e758=_0x43e758||0x1f4;return function(_0x5781b4){logger[_0xec9b('0x1a')](_0x5781b4['stack']);if(_0x5781b4[_0xec9b('0x1b')]){delete _0x5781b4[_0xec9b('0x1b')];}_0xaa2849[_0xec9b('0x10')](_0x43e758)[_0xec9b('0x1c')](_0x5781b4);};}exports['index']=function(_0x291db9,_0x5152c2){var _0x5e4296={};var _0x383231=_['map'](db[_0xec9b('0x1d')][_0xec9b('0x1e')],function(_0xdee613){return{'name':_0xdee613[_0xec9b('0x1f')],'type':_0xdee613[_0xec9b('0x20')][_0xec9b('0x21')]};});_0x5e4296=qs['getOptions'](_0x383231,_0x291db9);return interaction[_0xec9b('0x22')](_0xec9b('0x23'),_0x291db9[_0xec9b('0x24')],_0x291db9[_0xec9b('0x25')],_0x5e4296,_0x383231)[_0xec9b('0x18')](respondWithFilteredResult(_0x5152c2,_0x5e4296))[_0xec9b('0x26')](handleError(_0x5152c2,null));};exports['show']=function(_0x95baeb,_0x528e9a){var _0xdb3458={};if(_0x95baeb[_0xec9b('0x24')][_0xec9b('0x20')]&&_0x95baeb[_0xec9b('0x24')][_0xec9b('0x20')]===_0xec9b('0x27')){_0xdb3458[_0xec9b('0x27')]=_0x95baeb[_0xec9b('0x28')]['id'];}else{_0xdb3458['id']=_0x95baeb['params']['id'];}var _0x43667d={'raw':![],'where':_0xdb3458},_0x359228={};_0x359228[_0xec9b('0x29')]=_[_0xec9b('0x2a')](db[_0xec9b('0x1d')][_0xec9b('0x1e')]);_0x359228[_0xec9b('0x24')]=_[_0xec9b('0x2a')](_0x95baeb[_0xec9b('0x24')]);_0x359228['filters']=_[_0xec9b('0x2b')](_0x359228[_0xec9b('0x29')],_0x359228['query']);_0x43667d['attributes']=_[_0xec9b('0x2b')](_0x359228[_0xec9b('0x29')],qs[_0xec9b('0x2c')](_0x95baeb[_0xec9b('0x24')]['fields']));_0x43667d['attributes']=_0x43667d[_0xec9b('0x2d')][_0xec9b('0x2e')]?_0x43667d[_0xec9b('0x2d')]:_0x359228[_0xec9b('0x29')];if(_0x95baeb[_0xec9b('0x24')][_0xec9b('0x2f')]){_0x43667d[_0xec9b('0x30')]=[{'all':!![]}];}_0x43667d=_[_0xec9b('0x31')]({},_0x43667d,_0x95baeb[_0xec9b('0x32')]);return db['OpenchannelInteraction'][_0xec9b('0x33')](_0x43667d)[_0xec9b('0x18')](handleEntityNotFound(_0x528e9a,null))[_0xec9b('0x18')](respondWithResult(_0x528e9a,null))['catch'](handleError(_0x528e9a,null));};exports[_0xec9b('0x34')]=function(_0x212986,_0x42f382){return db[_0xec9b('0x1d')][_0xec9b('0x34')](_0x212986[_0xec9b('0x35')],{})[_0xec9b('0x18')](respondWithResult(_0x42f382,0xc9))[_0xec9b('0x26')](handleError(_0x42f382,null));};exports['update']=function(_0x400192,_0x55189e){if(_0x400192[_0xec9b('0x35')]['id']){delete _0x400192[_0xec9b('0x35')]['id'];}return db['OpenchannelInteraction'][_0xec9b('0x33')]({'where':{'id':_0x400192[_0xec9b('0x28')]['id']}})['then'](handleEntityNotFound(_0x55189e,null))[_0xec9b('0x18')](saveUpdates(_0x400192[_0xec9b('0x35')],null))[_0xec9b('0x18')](respondWithResult(_0x55189e,null))[_0xec9b('0x26')](handleError(_0x55189e,null));};exports[_0xec9b('0x19')]=function(_0x1b46b8,_0x1a9835){return db[_0xec9b('0x1d')]['find']({'where':{'id':_0x1b46b8[_0xec9b('0x28')]['id']}})[_0xec9b('0x18')](handleEntityNotFound(_0x1a9835,null))['then'](removeEntity(_0x1a9835,null))[_0xec9b('0x26')](handleError(_0x1a9835,null));};exports[_0xec9b('0x36')]=function(_0x3370ee,_0x13d580){return db[_0xec9b('0x1d')][_0xec9b('0x36')]()[_0xec9b('0x18')](respondWithResult(_0x13d580,null))['catch'](handleError(_0x13d580,null));};exports[_0xec9b('0x37')]=function(_0x307347,_0x4a31ca){return db[_0xec9b('0x38')]['find']({'where':{'id':_0x307347[_0xec9b('0x28')]['id']}})[_0xec9b('0x18')](handleEntityNotFound(_0x4a31ca,null))[_0xec9b('0x18')](function(_0xd4b6b9){if(_0xd4b6b9){return _0xd4b6b9[_0xec9b('0x37')](_0x307347['body'][_0xec9b('0x39')],_['omit'](_0x307347['body'],[_0xec9b('0x39'),'id'])||{});}})[_0xec9b('0x18')](respondWithResult(_0x4a31ca,null))[_0xec9b('0x26')](handleError(_0x4a31ca,null));};exports['getMessages']=function(_0x3738fb,_0x180b8c){var _0x196889={'raw':![],'where':{}};var _0x2530bc={};var _0x2ec771={'count':0x0,'rows':[]};return db[_0xec9b('0x1d')][_0xec9b('0x3a')]({'where':{'id':_0x3738fb[_0xec9b('0x28')]['id']}})['then'](handleEntityNotFound(_0x180b8c,null))[_0xec9b('0x18')](function(_0x432eeb){if(_0x432eeb){_0x2530bc[_0xec9b('0x29')]=_[_0xec9b('0x2a')](db[_0xec9b('0x38')]['rawAttributes']);_0x2530bc['query']=_[_0xec9b('0x2a')](_0x3738fb[_0xec9b('0x24')]);_0x2530bc[_0xec9b('0x3b')]=_[_0xec9b('0x2b')](_0x2530bc[_0xec9b('0x29')],_0x2530bc[_0xec9b('0x24')]);_0x196889[_0xec9b('0x2d')]=_[_0xec9b('0x2b')](_0x2530bc[_0xec9b('0x29')],qs[_0xec9b('0x2c')](_0x3738fb[_0xec9b('0x24')][_0xec9b('0x2c')]));_0x196889[_0xec9b('0x2d')]=_0x196889['attributes'][_0xec9b('0x2e')]?_0x196889[_0xec9b('0x2d')]:_0x2530bc[_0xec9b('0x29')];if(!_0x3738fb['query'][_0xec9b('0x3c')](_0xec9b('0x3d'))){_0x196889[_0xec9b('0x14')]=qs[_0xec9b('0x14')](_0x3738fb[_0xec9b('0x24')]['limit']);_0x196889['offset']=qs['offset'](_0x3738fb['query'][_0xec9b('0x12')]);}_0x196889[_0xec9b('0x3e')]=qs['sort'](_0x3738fb[_0xec9b('0x24')][_0xec9b('0x3f')]);_0x196889['where']=qs['filters'](_[_0xec9b('0x40')](_0x3738fb['query'],_0x2530bc[_0xec9b('0x3b')]));_0x196889[_0xec9b('0x41')][_0xec9b('0x42')]=_0x432eeb['id'];if(_0x3738fb[_0xec9b('0x24')][_0xec9b('0x43')]){_0x196889[_0xec9b('0x41')]=_[_0xec9b('0x31')](_0x196889[_0xec9b('0x41')],{'$or':_[_0xec9b('0x44')](_0x196889[_0xec9b('0x2d')],function(_0x4e84fc){var _0x1dd4e1={};_0x1dd4e1[_0x4e84fc]={'$like':'%'+_0x3738fb[_0xec9b('0x24')][_0xec9b('0x43')]+'%'};return _0x1dd4e1;})});}if(_0x3738fb[_0xec9b('0x24')]['$gte']){var _0x58943d=_0x3738fb[_0xec9b('0x24')][_0xec9b('0x45')][_0xec9b('0x46')](',');var _0x450299={};_0x450299[_0x58943d[0x0]]={'$gte':moment(_0x58943d[0x1])[_0xec9b('0x47')](_0xec9b('0x48'))};_0x196889[_0xec9b('0x41')]=_[_0xec9b('0x31')](_0x196889['where'],_0x450299);}_0x196889=_['merge']({},_0x196889,_0x3738fb['options']);return db[_0xec9b('0x38')][_0xec9b('0x15')]({'where':_0x196889['where']})[_0xec9b('0x18')](function(_0xbec95b){_0x2ec771['count']=_0xbec95b;if(_0x3738fb[_0xec9b('0x24')][_0xec9b('0x2f')]){_0x196889[_0xec9b('0x30')]=[{'all':!![]}];}return db[_0xec9b('0x38')][_0xec9b('0x22')](_0x196889);})['then'](function(_0x23583e){_0x2ec771[_0xec9b('0x49')]=_0x23583e;return _0x2ec771;});}})[_0xec9b('0x18')](respondWithFilteredResult(_0x180b8c,_0x196889))[_0xec9b('0x26')](handleError(_0x180b8c,null));};exports[_0xec9b('0x4a')]=function(_0x4ff875,_0x1e3682){return db[_0xec9b('0x1d')][_0xec9b('0x33')]({'where':{'id':_0x4ff875[_0xec9b('0x28')]['id']}})['then'](handleEntityNotFound(_0x1e3682,null))[_0xec9b('0x18')](function(_0x562a1d){if(_0x562a1d){return _0x562a1d['setTags'](_0x4ff875[_0xec9b('0x35')][_0xec9b('0x39')],_[_0xec9b('0x4b')](_0x4ff875[_0xec9b('0x35')],[_0xec9b('0x39'),'id'])||{})[_0xec9b('0x4c')](function(){return db[_0xec9b('0x4d')][_0xec9b('0x22')]({'attributes':['id',_0xec9b('0x1b'),_0xec9b('0x4e')],'where':{'id':_0x4ff875['body']['ids']}});})[_0xec9b('0x18')](function(_0x1646d8){socket[_0xec9b('0x4f')](_0xec9b('0x50'),{'id':Number(_0x4ff875[_0xec9b('0x28')]['id']),'tags':_0x1646d8||[]});return{'id':Number(_0x4ff875['params']['id']),'tags':_0x1646d8||[]};});}})[_0xec9b('0x18')](respondWithResult(_0x1e3682,null))['catch'](handleError(_0x1e3682,null));};exports[_0xec9b('0x51')]=function(_0x28c122,_0x483dad){return db[_0xec9b('0x1d')][_0xec9b('0x33')]({'where':{'id':_0x28c122[_0xec9b('0x28')]['id']}})[_0xec9b('0x18')](handleEntityNotFound(_0x483dad,null))[_0xec9b('0x18')](function(_0x14b56d){if(_0x14b56d){return _0x14b56d[_0xec9b('0x51')](_0x28c122['query'][_0xec9b('0x39')]);}})[_0xec9b('0x18')](respondWithStatusCode(_0x483dad,null))[_0xec9b('0x26')](handleError(_0x483dad,null));};exports[_0xec9b('0x52')]=function(_0x100ac8,_0x1aa0fb){var _0x2a9d97=moment()['unix']()[_0xec9b('0x53')]();var _0x5f59ce=path[_0xec9b('0x54')](config[_0xec9b('0x55')],_0xec9b('0x56'),'files',_0xec9b('0x57'));var _0x474ff2=path['join'](config[_0xec9b('0x55')],_0xec9b('0x56'),_0xec9b('0x58'),_0xec9b('0x59'));var _0x11b452=path[_0xec9b('0x54')](_0x5f59ce,_0x2a9d97);var _0x31c279=util[_0xec9b('0x47')](_0xec9b('0x5a'),_0x100ac8[_0xec9b('0x28')]['id'],_0x2a9d97);var _0x29994a=path['join'](_0x5f59ce,_0x31c279);var _0x16c891=[];_0x16c891[_0xec9b('0x5b')]({'model':db[_0xec9b('0x5c')],'as':_0xec9b('0x5c'),'attributes':['id',_0xec9b('0x5d')],'raw':!![]});_0x16c891[_0xec9b('0x5b')]({'model':db[_0xec9b('0x5e')],'as':'Contact','attributes':['id','firstName','lastName'],'raw':!![]});if(_0x100ac8[_0xec9b('0x24')]['attachments']){_0x16c891[_0xec9b('0x5b')]({'model':db[_0xec9b('0x5f')],'as':_0xec9b('0x5f'),'raw':!![]});}var _0x12892c=[{'model':db[_0xec9b('0x38')],'as':_0xec9b('0x60'),'attributes':['id',_0xec9b('0x35'),_0xec9b('0x61'),'direction',_0xec9b('0x62'),'read'],'include':_0x16c891}];_0x12892c['push']({'model':db[_0xec9b('0x63')],'as':_0xec9b('0x64'),'attributes':['id',_0xec9b('0x1b')]});_0x12892c[_0xec9b('0x5b')]({'model':db[_0xec9b('0x5c')],'as':_0xec9b('0x65'),'attributes':['id',_0xec9b('0x5d')]});return db[_0xec9b('0x1d')][_0xec9b('0x33')]({'where':{'id':_0x100ac8['params']['id']},'include':_0x12892c})[_0xec9b('0x18')](handleEntityNotFound(_0x1aa0fb,null))[_0xec9b('0x18')](function(_0x4bc36b){if(_0x4bc36b){var _0x3832e5=_0x4bc36b[_0xec9b('0x66')]({'plain':!![]});fs[_0xec9b('0x67')](_0x11b452);var _0x445c07={'channel':_0xec9b('0x68'),'account':_0x3832e5[_0xec9b('0x64')][_0xec9b('0x1b')],'agent':_0x3832e5[_0xec9b('0x65')]?_0x3832e5[_0xec9b('0x65')]['fullname']:_0xec9b('0x69'),'createdAt':moment(_0x3832e5[_0xec9b('0x61')])['format'](_0xec9b('0x48'))[_0xec9b('0x53')](),'closedAt':_0x3832e5[_0xec9b('0x6a')]?moment(_0x3832e5[_0xec9b('0x6b')])[_0xec9b('0x47')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x3832e5['disposition'],'visibility':_0x3832e5[_0xec9b('0x6c')]?'Public':'Private','messages':_(_0x3832e5['Messages'])['filter']({'secret':![]})[_0xec9b('0x44')](function(_0x305fd1){if(_0x305fd1['Attachment']){var _0x22ba1e=path[_0xec9b('0x54')](_0x474ff2,_0x305fd1[_0xec9b('0x5f')][_0xec9b('0x6d')]);if(fs[_0xec9b('0x6e')](_0x22ba1e)){fs[_0xec9b('0x6f')](_0x22ba1e)['pipe'](fs[_0xec9b('0x70')](path[_0xec9b('0x54')](_0x11b452,_0x305fd1[_0xec9b('0x5f')][_0xec9b('0x6d')])));}}return{'date':moment(_0x305fd1[_0xec9b('0x61')])[_0xec9b('0x47')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x305fd1[_0xec9b('0x71')]===_0xec9b('0x72')?_0x305fd1[_0xec9b('0x5c')]?_0x305fd1[_0xec9b('0x5c')][_0xec9b('0x5d')]:_0xec9b('0x73'):_0x305fd1[_0xec9b('0x74')][_0xec9b('0x75')]+(_0x305fd1[_0xec9b('0x74')][_0xec9b('0x76')]?'\x20'+_0x305fd1[_0xec9b('0x74')][_0xec9b('0x76')]:''),'body':_0x305fd1[_0xec9b('0x5f')]?_0x305fd1['Attachment'][_0xec9b('0x6d')]:_0x305fd1[_0xec9b('0x35')],'direction':_0x305fd1[_0xec9b('0x71')]===_0xec9b('0x72')?'A':'C','secret':_0x305fd1['secret'],'read':_0x305fd1['read'],'attachment':_0x305fd1[_0xec9b('0x5f')]};})[_0xec9b('0x77')]()};return ejs[_0xec9b('0x78')](path[_0xec9b('0x54')](config[_0xec9b('0x55')],_0xec9b('0x56'),_0xec9b('0x79'),_0xec9b('0x7a')),{'interaction':_0x445c07})[_0xec9b('0x18')](function(_0x805864){var _0x570a33=path['join'](_0x11b452,'transcript-'+_0x3832e5['id']+'-'+_0x2a9d97+'.pdf');var _0x329f8c={'path':_0x570a33,'channel':_0xec9b('0x68'),'interactionId':_0x3832e5['id']};return pdf['createPdfFromHTML'](_0x805864,_0x329f8c);})['then'](function(){return new Promise(function(_0xaac67a,_0x2207f0){zipdir(_0x11b452,{'saveTo':_0x29994a},function(_0x343897,_0xa59abe){if(_0x343897)return _0x2207f0(_0x343897);return _0xaac67a(_0xa59abe);});})[_0xec9b('0x18')](function(){return new Promise(function(_0x26ce2e,_0x138cd3){rimraf(_0x11b452,function(_0x1685b8){if(_0x1685b8)_0x138cd3(_0x1685b8);return _0x26ce2e();});});})[_0xec9b('0x18')](function(){return _0x1aa0fb[_0xec9b('0x52')](_0x29994a,_0x31c279,function(_0x4d272a){if(_0x4d272a){logger['error']('Unable\x20to\x20delete\x20zip\x20file',_0x4d272a);}else{fs[_0xec9b('0x7b')](_0x29994a);}});});});}else{return _0x1aa0fb[_0xec9b('0xe')](0xc8);}})[_0xec9b('0x26')](handleError(_0x1aa0fb,null));};
\ No newline at end of file
+var _0x04ca=['redis','localhost','socket.io-emitter','register','status','offset','undefined','limit','count','set','Content-Range','json','then','end','sendStatus','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','findAll','openchannel','query','user','catch','show','from','params','model','keys','filters','attributes','fields','includeAll','include','merge','options','find','create','body','destroy','describe','addMessage','OpenchannelMessage','ids','getMessages','findOne','intersection','nolimit','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','omit','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','root','server','files','tmp','attachments','transcript-%d-%s.zip','join','push','User','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','secret','read','OpenchannelAccount','Account','Owner','fullname','get','N.A.','createdAt','closed','closedAt','disposition','threadId','basename','existsSync','pipe','createWriteStream','out','System','renderFile','views','Openchannel','createPdfFromHTML','unlinkSync','rimraf','zip-dir','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x04ca,0xee));var _0xa04c=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x04ca[_0x42cae2];return _0x5f256f;};'use strict';var rimraf=require(_0xa04c('0x0'));var zipdir=require(_0xa04c('0x1'));var moment=require('moment');var util=require(_0xa04c('0x2'));var path=require(_0xa04c('0x3'));var ejs=require(_0xa04c('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xa04c('0x5'));var interaction=require(_0xa04c('0x6'));var qs=require(_0xa04c('0x7'));var pdf=require(_0xa04c('0x8'));var logger=require(_0xa04c('0x9'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xa04c('0xa')]=_['defaults'](config[_0xa04c('0xa')],{'host':_0xa04c('0xb'),'port':0x18eb});var socket=require(_0xa04c('0xc'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0xa04c('0xd')](socket);function respondWithStatusCode(_0x2d2288,_0x4b080f){_0x4b080f=_0x4b080f||0xcc;return function(_0x3cb90f){if(_0x3cb90f){return _0x2d2288['sendStatus'](_0x4b080f);}return _0x2d2288[_0xa04c('0xe')](_0x4b080f)['end']();};}function respondWithResult(_0x298070,_0x3f5c08){_0x3f5c08=_0x3f5c08||0xc8;return function(_0x4967eb){if(_0x4967eb){return _0x298070[_0xa04c('0xe')](_0x3f5c08)['json'](_0x4967eb);}};}function respondWithFilteredResult(_0x47472f,_0x435ce0){return function(_0x31ee18){if(_0x31ee18){var _0xe8a536=typeof _0x435ce0[_0xa04c('0xf')]===_0xa04c('0x10')&&typeof _0x435ce0[_0xa04c('0x11')]===_0xa04c('0x10');var _0x58da45=_0x31ee18['count'];var _0x21dbb=_0xe8a536?0x0:_0x435ce0[_0xa04c('0xf')];var _0x3acfd1=_0xe8a536?_0x31ee18[_0xa04c('0x12')]:_0x435ce0['offset']+_0x435ce0[_0xa04c('0x11')];var _0x116180;if(_0x3acfd1>=_0x58da45){_0x3acfd1=_0x58da45;_0x116180=0xc8;}else{_0x116180=0xce;}_0x47472f[_0xa04c('0xe')](_0x116180);return _0x47472f[_0xa04c('0x13')](_0xa04c('0x14'),_0x21dbb+'-'+_0x3acfd1+'/'+_0x58da45)[_0xa04c('0x15')](_0x31ee18);}return null;};}function saveUpdates(_0x453d28){return function(_0x184fc0){if(_0x184fc0){return _0x184fc0['update'](_0x453d28)[_0xa04c('0x16')](function(_0x3f3bda){return _0x3f3bda;});}return null;};}function removeEntity(_0x1bf21c){return function(_0x45f4a7){if(_0x45f4a7){return _0x45f4a7['destroy']()[_0xa04c('0x16')](function(){_0x1bf21c[_0xa04c('0xe')](0xcc)[_0xa04c('0x17')]();});}};}function handleEntityNotFound(_0x1437e3){return function(_0xe20d59){if(!_0xe20d59){_0x1437e3[_0xa04c('0x18')](0x194);}return _0xe20d59;};}function handleError(_0x2eea5b,_0x6f9a7d){_0x6f9a7d=_0x6f9a7d||0x1f4;return function(_0x5947f4){logger[_0xa04c('0x19')](_0x5947f4[_0xa04c('0x1a')]);if(_0x5947f4[_0xa04c('0x1b')]){delete _0x5947f4[_0xa04c('0x1b')];}_0x2eea5b['status'](_0x6f9a7d)[_0xa04c('0x1c')](_0x5947f4);};}exports[_0xa04c('0x1d')]=function(_0x419fa5,_0x4b2e30){var _0x4dc896={};var _0x33b326=_[_0xa04c('0x1e')](db[_0xa04c('0x1f')][_0xa04c('0x20')],function(_0x3537f9){return{'name':_0x3537f9[_0xa04c('0x21')],'type':_0x3537f9[_0xa04c('0x22')][_0xa04c('0x23')]};});_0x4dc896=qs['getOptions'](_0x33b326,_0x419fa5);return interaction[_0xa04c('0x24')](_0xa04c('0x25'),_0x419fa5[_0xa04c('0x26')],_0x419fa5[_0xa04c('0x27')],_0x4dc896,_0x33b326)[_0xa04c('0x16')](respondWithFilteredResult(_0x4b2e30,_0x4dc896))[_0xa04c('0x28')](handleError(_0x4b2e30,null));};exports[_0xa04c('0x29')]=function(_0x5a93fc,_0x4a5c68){var _0x3ae08a={};if(_0x5a93fc[_0xa04c('0x26')][_0xa04c('0x22')]&&_0x5a93fc['query'][_0xa04c('0x22')]===_0xa04c('0x2a')){_0x3ae08a[_0xa04c('0x2a')]=_0x5a93fc[_0xa04c('0x2b')]['id'];}else{_0x3ae08a['id']=_0x5a93fc[_0xa04c('0x2b')]['id'];}var _0x3d5fea={'raw':![],'where':_0x3ae08a},_0x4ada0d={};_0x4ada0d[_0xa04c('0x2c')]=_[_0xa04c('0x2d')](db[_0xa04c('0x1f')][_0xa04c('0x20')]);_0x4ada0d[_0xa04c('0x26')]=_['keys'](_0x5a93fc[_0xa04c('0x26')]);_0x4ada0d[_0xa04c('0x2e')]=_['intersection'](_0x4ada0d['model'],_0x4ada0d['query']);_0x3d5fea[_0xa04c('0x2f')]=_['intersection'](_0x4ada0d['model'],qs[_0xa04c('0x30')](_0x5a93fc['query'][_0xa04c('0x30')]));_0x3d5fea['attributes']=_0x3d5fea[_0xa04c('0x2f')]['length']?_0x3d5fea[_0xa04c('0x2f')]:_0x4ada0d['model'];if(_0x5a93fc[_0xa04c('0x26')][_0xa04c('0x31')]){_0x3d5fea[_0xa04c('0x32')]=[{'all':!![]}];}_0x3d5fea=_[_0xa04c('0x33')]({},_0x3d5fea,_0x5a93fc[_0xa04c('0x34')]);return db[_0xa04c('0x1f')][_0xa04c('0x35')](_0x3d5fea)[_0xa04c('0x16')](handleEntityNotFound(_0x4a5c68,null))[_0xa04c('0x16')](respondWithResult(_0x4a5c68,null))[_0xa04c('0x28')](handleError(_0x4a5c68,null));};exports[_0xa04c('0x36')]=function(_0x484a36,_0x48f943){return db[_0xa04c('0x1f')][_0xa04c('0x36')](_0x484a36[_0xa04c('0x37')],{})[_0xa04c('0x16')](respondWithResult(_0x48f943,0xc9))[_0xa04c('0x28')](handleError(_0x48f943,null));};exports['update']=function(_0x11b2fc,_0x576b16){if(_0x11b2fc[_0xa04c('0x37')]['id']){delete _0x11b2fc[_0xa04c('0x37')]['id'];}return db['OpenchannelInteraction'][_0xa04c('0x35')]({'where':{'id':_0x11b2fc[_0xa04c('0x2b')]['id']}})[_0xa04c('0x16')](handleEntityNotFound(_0x576b16,null))['then'](saveUpdates(_0x11b2fc[_0xa04c('0x37')],null))[_0xa04c('0x16')](respondWithResult(_0x576b16,null))[_0xa04c('0x28')](handleError(_0x576b16,null));};exports[_0xa04c('0x38')]=function(_0x264a34,_0x33aee4){return db[_0xa04c('0x1f')][_0xa04c('0x35')]({'where':{'id':_0x264a34[_0xa04c('0x2b')]['id']}})[_0xa04c('0x16')](handleEntityNotFound(_0x33aee4,null))[_0xa04c('0x16')](removeEntity(_0x33aee4,null))[_0xa04c('0x28')](handleError(_0x33aee4,null));};exports['describe']=function(_0xa5349a,_0x414f77){return db[_0xa04c('0x1f')][_0xa04c('0x39')]()[_0xa04c('0x16')](respondWithResult(_0x414f77,null))[_0xa04c('0x28')](handleError(_0x414f77,null));};exports[_0xa04c('0x3a')]=function(_0x1d5ceb,_0x3cbf27){return db[_0xa04c('0x3b')]['find']({'where':{'id':_0x1d5ceb['params']['id']}})['then'](handleEntityNotFound(_0x3cbf27,null))[_0xa04c('0x16')](function(_0x5e1e4f){if(_0x5e1e4f){return _0x5e1e4f[_0xa04c('0x3a')](_0x1d5ceb[_0xa04c('0x37')][_0xa04c('0x3c')],_['omit'](_0x1d5ceb[_0xa04c('0x37')],[_0xa04c('0x3c'),'id'])||{});}})[_0xa04c('0x16')](respondWithResult(_0x3cbf27,null))[_0xa04c('0x28')](handleError(_0x3cbf27,null));};exports[_0xa04c('0x3d')]=function(_0x1b98dc,_0x5ed8bf){var _0x2b0538={'raw':![],'where':{}};var _0x384f6e={};var _0x5cfaa2={'count':0x0,'rows':[]};return db[_0xa04c('0x1f')][_0xa04c('0x3e')]({'where':{'id':_0x1b98dc[_0xa04c('0x2b')]['id']}})[_0xa04c('0x16')](handleEntityNotFound(_0x5ed8bf,null))[_0xa04c('0x16')](function(_0x5cdbca){if(_0x5cdbca){_0x384f6e[_0xa04c('0x2c')]=_['keys'](db[_0xa04c('0x3b')]['rawAttributes']);_0x384f6e[_0xa04c('0x26')]=_[_0xa04c('0x2d')](_0x1b98dc['query']);_0x384f6e[_0xa04c('0x2e')]=_[_0xa04c('0x3f')](_0x384f6e['model'],_0x384f6e[_0xa04c('0x26')]);_0x2b0538[_0xa04c('0x2f')]=_[_0xa04c('0x3f')](_0x384f6e[_0xa04c('0x2c')],qs[_0xa04c('0x30')](_0x1b98dc['query'][_0xa04c('0x30')]));_0x2b0538['attributes']=_0x2b0538[_0xa04c('0x2f')]['length']?_0x2b0538[_0xa04c('0x2f')]:_0x384f6e['model'];if(!_0x1b98dc[_0xa04c('0x26')]['hasOwnProperty'](_0xa04c('0x40'))){_0x2b0538[_0xa04c('0x11')]=qs[_0xa04c('0x11')](_0x1b98dc['query'][_0xa04c('0x11')]);_0x2b0538[_0xa04c('0xf')]=qs[_0xa04c('0xf')](_0x1b98dc[_0xa04c('0x26')][_0xa04c('0xf')]);}_0x2b0538[_0xa04c('0x41')]=qs[_0xa04c('0x42')](_0x1b98dc['query'][_0xa04c('0x42')]);_0x2b0538[_0xa04c('0x43')]=qs['filters'](_[_0xa04c('0x44')](_0x1b98dc['query'],_0x384f6e[_0xa04c('0x2e')]));_0x2b0538[_0xa04c('0x43')][_0xa04c('0x45')]=_0x5cdbca['id'];if(_0x1b98dc[_0xa04c('0x26')]['filter']){_0x2b0538[_0xa04c('0x43')]=_[_0xa04c('0x33')](_0x2b0538[_0xa04c('0x43')],{'$or':_[_0xa04c('0x1e')](_0x2b0538[_0xa04c('0x2f')],function(_0x3e97f6){var _0x2d3396={};_0x2d3396[_0x3e97f6]={'$like':'%'+_0x1b98dc[_0xa04c('0x26')][_0xa04c('0x46')]+'%'};return _0x2d3396;})});}if(_0x1b98dc[_0xa04c('0x26')][_0xa04c('0x47')]){var _0x253e1d=_0x1b98dc['query'][_0xa04c('0x47')]['split'](',');var _0x2fa6b6={};_0x2fa6b6[_0x253e1d[0x0]]={'$gte':moment(_0x253e1d[0x1])[_0xa04c('0x48')](_0xa04c('0x49'))};_0x2b0538[_0xa04c('0x43')]=_[_0xa04c('0x33')](_0x2b0538['where'],_0x2fa6b6);}_0x2b0538=_[_0xa04c('0x33')]({},_0x2b0538,_0x1b98dc[_0xa04c('0x34')]);return db[_0xa04c('0x3b')][_0xa04c('0x12')]({'where':_0x2b0538[_0xa04c('0x43')]})[_0xa04c('0x16')](function(_0x454cb0){_0x5cfaa2['count']=_0x454cb0;if(_0x1b98dc[_0xa04c('0x26')][_0xa04c('0x31')]){_0x2b0538[_0xa04c('0x32')]=[{'all':!![]}];}return db[_0xa04c('0x3b')][_0xa04c('0x24')](_0x2b0538);})['then'](function(_0x3e2f77){_0x5cfaa2[_0xa04c('0x4a')]=_0x3e2f77;return _0x5cfaa2;});}})[_0xa04c('0x16')](respondWithFilteredResult(_0x5ed8bf,_0x2b0538))[_0xa04c('0x28')](handleError(_0x5ed8bf,null));};exports['addTags']=function(_0x12e4aa,_0x247557){return db[_0xa04c('0x1f')]['find']({'where':{'id':_0x12e4aa[_0xa04c('0x2b')]['id']}})['then'](handleEntityNotFound(_0x247557,null))['then'](function(_0x48fedf){if(_0x48fedf){return _0x48fedf['setTags'](_0x12e4aa['body'][_0xa04c('0x3c')],_[_0xa04c('0x4b')](_0x12e4aa[_0xa04c('0x37')],[_0xa04c('0x3c'),'id'])||{})['spread'](function(){return db[_0xa04c('0x4c')][_0xa04c('0x24')]({'attributes':['id','name',_0xa04c('0x4d')],'where':{'id':_0x12e4aa['body'][_0xa04c('0x3c')]}});})[_0xa04c('0x16')](function(_0x41b580){socket[_0xa04c('0x4e')](_0xa04c('0x4f'),{'id':Number(_0x12e4aa[_0xa04c('0x2b')]['id']),'tags':_0x41b580||[]});return{'id':Number(_0x12e4aa[_0xa04c('0x2b')]['id']),'tags':_0x41b580||[]};});}})[_0xa04c('0x16')](respondWithResult(_0x247557,null))[_0xa04c('0x28')](handleError(_0x247557,null));};exports[_0xa04c('0x50')]=function(_0x46c1b4,_0x211b29){return db['OpenchannelInteraction']['find']({'where':{'id':_0x46c1b4[_0xa04c('0x2b')]['id']}})[_0xa04c('0x16')](handleEntityNotFound(_0x211b29,null))[_0xa04c('0x16')](function(_0x21790e){if(_0x21790e){return _0x21790e['removeTags'](_0x46c1b4[_0xa04c('0x26')][_0xa04c('0x3c')]);}})[_0xa04c('0x16')](respondWithStatusCode(_0x211b29,null))[_0xa04c('0x28')](handleError(_0x211b29,null));};exports[_0xa04c('0x51')]=function(_0x1ee85f,_0xcb5467){var _0x5ce1d7=moment()[_0xa04c('0x52')]()[_0xa04c('0x53')]();var _0x77e1ef=path['join'](config[_0xa04c('0x54')],_0xa04c('0x55'),_0xa04c('0x56'),_0xa04c('0x57'));var _0x28fd1d=path['join'](config[_0xa04c('0x54')],_0xa04c('0x55'),_0xa04c('0x56'),_0xa04c('0x58'));var _0x497492=path['join'](_0x77e1ef,_0x5ce1d7);var _0x9e3a1a=util['format'](_0xa04c('0x59'),_0x1ee85f[_0xa04c('0x2b')]['id'],_0x5ce1d7);var _0x463f26=path[_0xa04c('0x5a')](_0x77e1ef,_0x9e3a1a);var _0x2bd7f7=[];_0x2bd7f7[_0xa04c('0x5b')]({'model':db[_0xa04c('0x5c')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x2bd7f7[_0xa04c('0x5b')]({'model':db[_0xa04c('0x5d')],'as':_0xa04c('0x5e'),'attributes':['id',_0xa04c('0x5f'),_0xa04c('0x60')],'raw':!![]});if(_0x1ee85f['query'][_0xa04c('0x58')]){_0x2bd7f7['push']({'model':db[_0xa04c('0x61')],'as':'Attachment','raw':!![]});}var _0xe975e3=[{'model':db['OpenchannelMessage'],'as':_0xa04c('0x62'),'attributes':['id',_0xa04c('0x37'),'createdAt',_0xa04c('0x63'),_0xa04c('0x64'),_0xa04c('0x65')],'include':_0x2bd7f7}];_0xe975e3[_0xa04c('0x5b')]({'model':db[_0xa04c('0x66')],'as':_0xa04c('0x67'),'attributes':['id','name']});_0xe975e3['push']({'model':db[_0xa04c('0x5c')],'as':_0xa04c('0x68'),'attributes':['id',_0xa04c('0x69')]});return db[_0xa04c('0x1f')]['find']({'where':{'id':_0x1ee85f['params']['id']},'include':_0xe975e3})[_0xa04c('0x16')](handleEntityNotFound(_0xcb5467,null))['then'](function(_0x5b70ae){if(_0x5b70ae){var _0x66f33b=_0x5b70ae[_0xa04c('0x6a')]({'plain':!![]});fs['mkdirSync'](_0x497492);var _0x280b14={'channel':'Openchannel','account':_0x66f33b[_0xa04c('0x67')][_0xa04c('0x1b')],'agent':_0x66f33b['Owner']?_0x66f33b[_0xa04c('0x68')][_0xa04c('0x69')]:_0xa04c('0x6b'),'createdAt':moment(_0x66f33b[_0xa04c('0x6c')])['format'](_0xa04c('0x49'))[_0xa04c('0x53')](),'closedAt':_0x66f33b[_0xa04c('0x6d')]?moment(_0x66f33b[_0xa04c('0x6e')])[_0xa04c('0x48')](_0xa04c('0x49'))[_0xa04c('0x53')]():'','disposition':_0x66f33b[_0xa04c('0x6f')],'visibility':_0x66f33b[_0xa04c('0x70')]?'Public':'Private','messages':_(_0x66f33b['Messages'])[_0xa04c('0x46')]({'secret':![]})[_0xa04c('0x1e')](function(_0x3e1a10){if(_0x3e1a10[_0xa04c('0x61')]){var _0x1f0b1b=path[_0xa04c('0x5a')](_0x28fd1d,_0x3e1a10[_0xa04c('0x61')][_0xa04c('0x71')]);if(fs[_0xa04c('0x72')](_0x1f0b1b)){fs['createReadStream'](_0x1f0b1b)[_0xa04c('0x73')](fs[_0xa04c('0x74')](path['join'](_0x497492,_0x3e1a10[_0xa04c('0x61')][_0xa04c('0x71')])));}}return{'date':moment(_0x3e1a10[_0xa04c('0x6c')])['format'](_0xa04c('0x49'))['toString'](),'sender':_0x3e1a10[_0xa04c('0x63')]===_0xa04c('0x75')?_0x3e1a10[_0xa04c('0x5c')]?_0x3e1a10['User'][_0xa04c('0x69')]:_0xa04c('0x76'):_0x3e1a10[_0xa04c('0x5e')][_0xa04c('0x5f')]+(_0x3e1a10['Contact'][_0xa04c('0x60')]?'\x20'+_0x3e1a10['Contact'][_0xa04c('0x60')]:''),'body':_0x3e1a10[_0xa04c('0x61')]?_0x3e1a10[_0xa04c('0x61')]['basename']:_0x3e1a10[_0xa04c('0x37')],'direction':_0x3e1a10['direction']===_0xa04c('0x75')?'A':'C','secret':_0x3e1a10['secret'],'read':_0x3e1a10['read'],'attachment':_0x3e1a10['Attachment']};})['value']()};return ejs[_0xa04c('0x77')](path[_0xa04c('0x5a')](config[_0xa04c('0x54')],_0xa04c('0x55'),_0xa04c('0x78'),'downloadInteraction.ejs'),{'interaction':_0x280b14})[_0xa04c('0x16')](function(_0x2b4d8a){var _0x25241f=path[_0xa04c('0x5a')](_0x497492,'transcript-'+_0x66f33b['id']+'-'+_0x5ce1d7+'.pdf');var _0x5bf7d7={'path':_0x25241f,'channel':_0xa04c('0x79'),'interactionId':_0x66f33b['id']};return pdf[_0xa04c('0x7a')](_0x2b4d8a,_0x5bf7d7);})['then'](function(){return new Promise(function(_0x5a29c1,_0x20a918){zipdir(_0x497492,{'saveTo':_0x463f26},function(_0x3385f7,_0x3c797f){if(_0x3385f7)return _0x20a918(_0x3385f7);return _0x5a29c1(_0x3c797f);});})[_0xa04c('0x16')](function(){return new Promise(function(_0x745301,_0x4e2981){rimraf(_0x497492,function(_0x53d3a8){if(_0x53d3a8)_0x4e2981(_0x53d3a8);return _0x745301();});});})[_0xa04c('0x16')](function(){return _0xcb5467[_0xa04c('0x51')](_0x463f26,_0x9e3a1a,function(_0x4ed2c4){if(_0x4ed2c4){logger[_0xa04c('0x19')]('Unable\x20to\x20delete\x20zip\x20file',_0x4ed2c4);}else{fs[_0xa04c('0x7b')](_0x463f26);}});});});}else{return _0xcb5467[_0xa04c('0x18')](0xc8);}})[_0xa04c('0x28')](handleError(_0xcb5467,null));};
\ No newline at end of file
index a5b34e6..c8c0ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f06=['getUsers','then','setDataValue','Users','findAll','length','emit','hook','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','update','remove'];(function(_0x2f302c,_0x22c0df){var _0x3fe910=function(_0x26d919){while(--_0x26d919){_0x2f302c['push'](_0x2f302c['shift']());}};_0x3fe910(++_0x22c0df);}(_0x7f06,0xf8));var _0x67f0=function(_0x129987,_0x1ba53a){_0x129987=_0x129987-0x0;var _0x310b57=_0x7f06[_0x129987];return _0x310b57;};'use strict';var EventEmitter=require(_0x67f0('0x0'));var OpenchannelInteraction=require(_0x67f0('0x1'))['db'][_0x67f0('0x2')];var OpenchannelMessage=require(_0x67f0('0x1'))['db'][_0x67f0('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x67f0('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x67f0('0x5'),'afterDestroy':_0x67f0('0x6')};function emitEvent(_0x305423){return function(_0x495534,_0x315546,_0x333ffb){_0x495534[_0x67f0('0x7')]({'attributes':['id'],'raw':!![]})[_0x67f0('0x8')](function(_0x4b3b4d){_0x495534[_0x67f0('0x9')](_0x67f0('0xa'),_0x4b3b4d['map'](function(_0x2c5a83){return{'id':_0x2c5a83['id']};}));return OpenchannelMessage[_0x67f0('0xb')]({'where':{'OpenchannelInteractionId':_0x495534['id'],'direction':'in','read':![]},'raw':!![]});})[_0x67f0('0x8')](function(_0x2dc9b0){_0x495534[_0x67f0('0x9')]('unreadMessages',_0x2dc9b0[_0x67f0('0xc')]);OpenchannelInteractionEvents[_0x67f0('0xd')](_0x305423+':'+_0x495534['id'],_0x495534);OpenchannelInteractionEvents['emit'](_0x305423,_0x495534);_0x333ffb(null);})['catch'](_0x333ffb(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x67f0('0xe')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x8870=['emit','catch','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelInteraction','setMaxListeners','save','remove','then','setDataValue','Users','findAll','unreadMessages','length'];(function(_0x111321,_0x536435){var _0x21f37c=function(_0x1b45c9){while(--_0x1b45c9){_0x111321['push'](_0x111321['shift']());}};_0x21f37c(++_0x536435);}(_0x8870,0x195));var _0x0887=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x8870[_0x42cae2];return _0x5f256f;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x0887('0x0'))['db'][_0x0887('0x1')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x0887('0x2')](0x0);var events={'afterCreate':_0x0887('0x3'),'afterUpdate':'update','afterDestroy':_0x0887('0x4')};function emitEvent(_0x2aa633){return function(_0xfdf156,_0x169a11,_0x590563){_0xfdf156['getUsers']({'attributes':['id'],'raw':!![]})[_0x0887('0x5')](function(_0x946cc8){_0xfdf156[_0x0887('0x6')](_0x0887('0x7'),_0x946cc8['map'](function(_0x2c3acc){return{'id':_0x2c3acc['id']};}));return OpenchannelMessage[_0x0887('0x8')]({'where':{'OpenchannelInteractionId':_0xfdf156['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0887('0x5')](function(_0x2fb90e){_0xfdf156[_0x0887('0x6')](_0x0887('0x9'),_0x2fb90e[_0x0887('0xa')]);OpenchannelInteractionEvents[_0x0887('0xb')](_0x2aa633+':'+_0xfdf156['id'],_0xfdf156);OpenchannelInteractionEvents[_0x0887('0xb')](_0x2aa633,_0xfdf156);_0x590563(null);})[_0x0887('0xc')](_0x590563(null));};}for(var e in events){if(events[_0x0887('0xd')](e)){var event=events[e];OpenchannelInteraction[_0x0887('0xe')](e,emitEvent(event));}}module[_0x0887('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
index a031188..5efe9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8c6=['utf8mb4','changed','closed','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','openchannel_interactions'];(function(_0x5c6022,_0x5cd10b){var _0x4ab5af=function(_0x988aff){while(--_0x988aff){_0x5c6022['push'](_0x5c6022['shift']());}};_0x4ab5af(++_0x5cd10b);}(_0xe8c6,0x16b));var _0x6e8c=function(_0x381850,_0x42040b){_0x381850=_0x381850-0x0;var _0x2e03be=_0xe8c6[_0x381850];return _0x2e03be;};'use strict';var _=require(_0x6e8c('0x0'));var util=require(_0x6e8c('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6e8c('0x2'));var BPromise=require(_0x6e8c('0x3'));var rp=require(_0x6e8c('0x4'));var fs=require('fs');var path=require(_0x6e8c('0x5'));var rimraf=require(_0x6e8c('0x6'));var config=require(_0x6e8c('0x7'));var attributes=require(_0x6e8c('0x8'));module[_0x6e8c('0x9')]=function(_0x169bf0,_0x39fd17){return _0x169bf0[_0x6e8c('0xa')]('OpenchannelInteraction',attributes,{'tableName':_0x6e8c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6e8c('0xc'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x5befdd,_0x50152e,_0xa0ce48){if(_0x5befdd[_0x6e8c('0xd')](_0x6e8c('0xe'))){_0x5befdd['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0xa0ce48(null,_0x5befdd);}}});};
\ No newline at end of file
+var _0x8c03=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','changed','closed'];(function(_0x44bc60,_0x1008b6){var _0xb7de99=function(_0x1b8fa2){while(--_0x1b8fa2){_0x44bc60['push'](_0x44bc60['shift']());}};_0xb7de99(++_0x1008b6);}(_0x8c03,0x152));var _0x38c0=function(_0x363703,_0x5556f6){_0x363703=_0x363703-0x0;var _0x385009=_0x8c03[_0x363703];return _0x385009;};'use strict';var _=require(_0x38c0('0x0'));var util=require('util');var logger=require(_0x38c0('0x1'))('api');var moment=require('moment');var BPromise=require(_0x38c0('0x2'));var rp=require(_0x38c0('0x3'));var fs=require('fs');var path=require(_0x38c0('0x4'));var rimraf=require(_0x38c0('0x5'));var config=require(_0x38c0('0x6'));var attributes=require('./openchannelInteraction.attributes');module[_0x38c0('0x7')]=function(_0x3a8c22,_0x4cacc8){return _0x3a8c22[_0x38c0('0x8')](_0x38c0('0x9'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x38c0('0xa'),'collate':_0x38c0('0xb'),'hooks':{'beforeUpdate':function(_0x35b2ef,_0x35bc36,_0xb7ffcf){if(_0x35b2ef[_0x38c0('0xc')](_0x38c0('0xd'))){_0x35b2ef['closedAt']=moment()[_0x38c0('0xe')](_0x38c0('0xf'));}_0xb7ffcf(null,_0x35b2ef);}}});};
\ No newline at end of file
index c44fabd..d8b2185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59e9=['redis','defaults','localhost','./openchannelInteraction.socket','register','request','then','OpenchannelInteraction,\x20%s,\x20%s','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','UpdateOpenchannelInteraction','OpenchannelInteraction','update','options','raw','where','attributes','catch','AddTagsToOpenchannelInteraction','find','ids','omit','body','AddTags','debug','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','http'];(function(_0x4b5ea5,_0x567ed2){var _0x54ccb0=function(_0x2fa68d){while(--_0x2fa68d){_0x4b5ea5['push'](_0x4b5ea5['shift']());}};_0x54ccb0(++_0x567ed2);}(_0x59e9,0x1e5));var _0x959e=function(_0x52e0fc,_0x313d1a){_0x52e0fc=_0x52e0fc-0x0;var _0xce2ba4=_0x59e9[_0x52e0fc];return _0xce2ba4;};'use strict';var _=require(_0x959e('0x0'));var util=require(_0x959e('0x1'));var moment=require(_0x959e('0x2'));var BPromise=require(_0x959e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x959e('0x4'));var logger=require(_0x959e('0x5'))(_0x959e('0x6'));var config=require(_0x959e('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x959e('0x8')]({'port':0x232a});config[_0x959e('0x9')]=_[_0x959e('0xa')](config[_0x959e('0x9')],{'host':_0x959e('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x959e('0x9')]));require(_0x959e('0xc'))[_0x959e('0xd')](socket);function respondWithRpcPromise(_0x181b7f,_0x458aa7,_0x362ca8){return new BPromise(function(_0x3a187a,_0x147765){return client[_0x959e('0xe')](_0x181b7f,_0x362ca8)[_0x959e('0xf')](function(_0x2a5673){logger['info'](_0x959e('0x10'),_0x458aa7,'request\x20sent');logger['debug'](_0x959e('0x11'),_0x458aa7,'request\x20sent',JSON[_0x959e('0x12')](_0x2a5673));if(_0x2a5673[_0x959e('0x13')]){if(_0x2a5673[_0x959e('0x13')][_0x959e('0x14')]===0x1f4){logger[_0x959e('0x13')](_0x959e('0x10'),_0x458aa7,_0x2a5673[_0x959e('0x13')][_0x959e('0x15')]);return _0x147765(_0x2a5673[_0x959e('0x13')][_0x959e('0x15')]);}logger[_0x959e('0x13')](_0x959e('0x10'),_0x458aa7,_0x2a5673[_0x959e('0x13')][_0x959e('0x15')]);return _0x3a187a(_0x2a5673['error']['message']);}else{logger[_0x959e('0x16')]('OpenchannelInteraction,\x20%s,\x20%s',_0x458aa7,'request\x20sent');_0x3a187a(_0x2a5673['result'][_0x959e('0x15')]);}})['catch'](function(_0x5cba96){logger['error'](_0x959e('0x10'),_0x458aa7,_0x5cba96);_0x147765(_0x5cba96);});});}exports[_0x959e('0x17')]=function(_0x5ed88c){var _0xe79206=this;return new Promise(function(_0x2cda57,_0x46f5f9){return db[_0x959e('0x18')][_0x959e('0x19')](_0x5ed88c['body'],{'raw':_0x5ed88c[_0x959e('0x1a')]?_0x5ed88c[_0x959e('0x1a')][_0x959e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ed88c[_0x959e('0x1a')]?_0x5ed88c[_0x959e('0x1a')][_0x959e('0x1c')]||null:null,'attributes':_0x5ed88c[_0x959e('0x1a')]?_0x5ed88c[_0x959e('0x1a')][_0x959e('0x1d')]||null:null,'limit':_0x5ed88c['options']?_0x5ed88c[_0x959e('0x1a')]['limit']||null:null})['then'](function(_0x1a554a){logger[_0x959e('0x16')](_0x959e('0x17'),_0x5ed88c);logger['debug'](_0x959e('0x17'),_0x5ed88c,JSON[_0x959e('0x12')](_0x1a554a));_0x2cda57(_0x1a554a);})[_0x959e('0x1e')](function(_0x6cb1d3){logger[_0x959e('0x13')](_0x959e('0x17'),_0x6cb1d3['message'],_0x5ed88c);_0x46f5f9(_0xe79206[_0x959e('0x13')](0x1f4,_0x6cb1d3[_0x959e('0x15')]));});});};exports[_0x959e('0x1f')]=function(_0x2333f6){return new Promise(function(_0x3bcb2a,_0x41895b){return db[_0x959e('0x18')][_0x959e('0x20')]({'where':_0x2333f6[_0x959e('0x1a')]?_0x2333f6[_0x959e('0x1a')][_0x959e('0x1c')]||null:null})['then'](function(_0xe1945e){if(_0xe1945e){return _0xe1945e['addTags'](_0x2333f6['body'][_0x959e('0x21')],_[_0x959e('0x22')](_0x2333f6[_0x959e('0x23')],[_0x959e('0x21'),'id'])||{});}})['spread'](function(_0x2af58f){logger[_0x959e('0x16')](_0x959e('0x24'),_0x2333f6);logger[_0x959e('0x25')](_0x959e('0x24'),_0x2333f6,JSON[_0x959e('0x12')](_0x2af58f));_0x3bcb2a(_0x2af58f);})[_0x959e('0x1e')](function(_0x36e613){logger[_0x959e('0x13')]('AddTags',_0x36e613[_0x959e('0x15')],_0x2333f6);_0x41895b(_this['error'](0x1f4,_0x36e613[_0x959e('0x15')]));});});};
\ No newline at end of file
+var _0x3c47=['message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','AddTagsToOpenchannelInteraction','find','omit','ids','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','then','info','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelInteraction,\x20%s,\x20%s'];(function(_0x2960b8,_0x57f2d8){var _0xd841dc=function(_0x4547c7){while(--_0x4547c7){_0x2960b8['push'](_0x2960b8['shift']());}};_0xd841dc(++_0x57f2d8);}(_0x3c47,0x1a0));var _0x73c4=function(_0x13318c,_0x18997b){_0x13318c=_0x13318c-0x0;var _0x45a9de=_0x3c47[_0x13318c];return _0x45a9de;};'use strict';var _=require(_0x73c4('0x0'));var util=require('util');var moment=require(_0x73c4('0x1'));var BPromise=require(_0x73c4('0x2'));var rs=require(_0x73c4('0x3'));var fs=require('fs');var Redis=require(_0x73c4('0x4'));var db=require(_0x73c4('0x5'))['db'];var utils=require(_0x73c4('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x73c4('0x7'));var jayson=require(_0x73c4('0x8'));var client=jayson[_0x73c4('0x9')][_0x73c4('0xa')]({'port':0x232a});config[_0x73c4('0xb')]=_[_0x73c4('0xc')](config[_0x73c4('0xb')],{'host':_0x73c4('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x73c4('0xb')]));require('./openchannelInteraction.socket')[_0x73c4('0xe')](socket);function respondWithRpcPromise(_0x4d9708,_0x50eb13,_0x44f485){return new BPromise(function(_0x34a7ce,_0x4cdcff){return client[_0x73c4('0xf')](_0x4d9708,_0x44f485)[_0x73c4('0x10')](function(_0x388f89){logger[_0x73c4('0x11')]('OpenchannelInteraction,\x20%s,\x20%s',_0x50eb13,_0x73c4('0x12'));logger[_0x73c4('0x13')](_0x73c4('0x14'),_0x50eb13,_0x73c4('0x12'),JSON[_0x73c4('0x15')](_0x388f89));if(_0x388f89[_0x73c4('0x16')]){if(_0x388f89['error']['code']===0x1f4){logger[_0x73c4('0x16')](_0x73c4('0x17'),_0x50eb13,_0x388f89[_0x73c4('0x16')][_0x73c4('0x18')]);return _0x4cdcff(_0x388f89['error'][_0x73c4('0x18')]);}logger[_0x73c4('0x16')](_0x73c4('0x17'),_0x50eb13,_0x388f89[_0x73c4('0x16')][_0x73c4('0x18')]);return _0x34a7ce(_0x388f89[_0x73c4('0x16')][_0x73c4('0x18')]);}else{logger['info'](_0x73c4('0x17'),_0x50eb13,_0x73c4('0x12'));_0x34a7ce(_0x388f89['result'][_0x73c4('0x18')]);}})[_0x73c4('0x19')](function(_0x3cd220){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x50eb13,_0x3cd220);_0x4cdcff(_0x3cd220);});});}exports[_0x73c4('0x1a')]=function(_0x40165b){var _0x44e491=this;return new Promise(function(_0x21253e,_0x5048ba){return db[_0x73c4('0x1b')][_0x73c4('0x1c')](_0x40165b[_0x73c4('0x1d')],{'raw':_0x40165b[_0x73c4('0x1e')]?_0x40165b[_0x73c4('0x1e')][_0x73c4('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40165b[_0x73c4('0x1e')]?_0x40165b[_0x73c4('0x1e')][_0x73c4('0x20')]||null:null,'attributes':_0x40165b[_0x73c4('0x1e')]?_0x40165b[_0x73c4('0x1e')][_0x73c4('0x21')]||null:null,'limit':_0x40165b[_0x73c4('0x1e')]?_0x40165b[_0x73c4('0x1e')][_0x73c4('0x22')]||null:null})[_0x73c4('0x10')](function(_0x3f2a54){logger[_0x73c4('0x11')](_0x73c4('0x1a'),_0x40165b);logger[_0x73c4('0x13')](_0x73c4('0x1a'),_0x40165b,JSON[_0x73c4('0x15')](_0x3f2a54));_0x21253e(_0x3f2a54);})[_0x73c4('0x19')](function(_0x299fe7){logger[_0x73c4('0x16')]('UpdateOpenchannelInteraction',_0x299fe7[_0x73c4('0x18')],_0x40165b);_0x5048ba(_0x44e491[_0x73c4('0x16')](0x1f4,_0x299fe7[_0x73c4('0x18')]));});});};exports[_0x73c4('0x23')]=function(_0x2e7b6f){return new Promise(function(_0x4c4f19,_0x3ca306){return db[_0x73c4('0x1b')][_0x73c4('0x24')]({'where':_0x2e7b6f[_0x73c4('0x1e')]?_0x2e7b6f[_0x73c4('0x1e')]['where']||null:null})[_0x73c4('0x10')](function(_0x30e3df){if(_0x30e3df){return _0x30e3df['addTags'](_0x2e7b6f['body']['ids'],_[_0x73c4('0x25')](_0x2e7b6f['body'],[_0x73c4('0x26'),'id'])||{});}})['spread'](function(_0x3b9c2e){logger[_0x73c4('0x11')]('AddTags',_0x2e7b6f);logger['debug'](_0x73c4('0x27'),_0x2e7b6f,JSON[_0x73c4('0x15')](_0x3b9c2e));_0x4c4f19(_0x3b9c2e);})[_0x73c4('0x19')](function(_0x549391){logger[_0x73c4('0x16')](_0x73c4('0x27'),_0x549391[_0x73c4('0x18')],_0x2e7b6f);_0x3ca306(_this[_0x73c4('0x16')](0x1f4,_0x549391['message']));});});};
\ No newline at end of file
index b1df923..a4c0cb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba0=['update','emit','register','length','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x4b6319,_0x301e32){var _0x4c9f8c=function(_0x57adbe){while(--_0x57adbe){_0x4b6319['push'](_0x4b6319['shift']());}};_0x4c9f8c(++_0x301e32);}(_0x7ba0,0xad));var _0x07ba=function(_0x4a81e9,_0x24ea24){_0x4a81e9=_0x4a81e9-0x0;var _0x4f4f88=_0x7ba0[_0x4a81e9];return _0x4f4f88;};'use strict';var OpenchannelInteractionEvents=require(_0x07ba('0x0'));var events=[_0x07ba('0x1'),'remove',_0x07ba('0x2')];function createListener(_0xead047,_0x53a13a){return function(_0x30ab6f){_0x53a13a[_0x07ba('0x3')](_0xead047,_0x30ab6f);};}function removeListener(_0x42ec4e,_0x47c7ea){return function(){OpenchannelInteractionEvents['removeListener'](_0x42ec4e,_0x47c7ea);};}exports[_0x07ba('0x4')]=function(_0x35303b){for(var _0x5dbe5b=0x0,_0x390147=events[_0x07ba('0x5')];_0x5dbe5b<_0x390147;_0x5dbe5b++){var _0x373c26=events[_0x5dbe5b];var _0x272896=createListener(_0x07ba('0x6')+_0x373c26,_0x35303b);OpenchannelInteractionEvents['on'](_0x373c26,_0x272896);}};
\ No newline at end of file
+var _0x15bb=['register','openchannelInteraction:','./openchannelInteraction.events','update','removeListener'];(function(_0x582ccd,_0xa9ab43){var _0x11545d=function(_0x4010fa){while(--_0x4010fa){_0x582ccd['push'](_0x582ccd['shift']());}};_0x11545d(++_0xa9ab43);}(_0x15bb,0x1a1));var _0xb15b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x15bb[_0x3dd15e];return _0x231fd0;};'use strict';var OpenchannelInteractionEvents=require(_0xb15b('0x0'));var events=['save','remove',_0xb15b('0x1')];function createListener(_0x3cc797,_0xdea6df){return function(_0x911a0d){_0xdea6df['emit'](_0x3cc797,_0x911a0d);};}function removeListener(_0x4eb220,_0x542e6e){return function(){OpenchannelInteractionEvents[_0xb15b('0x2')](_0x4eb220,_0x542e6e);};}exports[_0xb15b('0x3')]=function(_0x219a78){for(var _0x5a3687=0x0,_0x421f8a=events['length'];_0x5a3687<_0x421f8a;_0x5a3687++){var _0x5332fa=events[_0x5a3687];var _0x451c88=createListener(_0xb15b('0x4')+_0x5332fa,_0x219a78);OpenchannelInteractionEvents['on'](_0x5332fa,_0x451c88);}};
\ No newline at end of file
index 918892b..5ae72e3 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','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x522ae8,_0x3b637e){var _0x3189b9=function(_0x3115d4){while(--_0x3115d4){_0x522ae8['push'](_0x522ae8['shift']());}};_0x3189b9(++_0x3b637e);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x41094d,_0x4ca21d){var _0x503ee1=function(_0x7e4dac){while(--_0x7e4dac){_0x41094d['push'](_0x41094d['shift']());}};_0x503ee1(++_0x4ca21d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x533528,_0x409d05){_0x533528=_0x533528-0x0;var _0x3189f1=_0xcb91[_0x533528];return _0x3189f1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index 2db84f5..67abae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c1=['exports','medium','ENUM','out','DATE','STRING','sequelize'];(function(_0xf152c2,_0x3fd78f){var _0x2e7ffb=function(_0xb618ef){while(--_0xb618ef){_0xf152c2['push'](_0xf152c2['shift']());}};_0x2e7ffb(++_0x3fd78f);}(_0x97c1,0xdf));var _0x197c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x97c1[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x197c('0x0'));module[_0x197c('0x1')]={'body':{'type':Sequelize['TEXT'](_0x197c('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x197c('0x3')]('in',_0x197c('0x4')),'defaultValue':_0x197c('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x197c('0x5')]},'providerName':{'type':Sequelize[_0x197c('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x20df=['BOOLEAN','ENUM','out','DATE','sequelize','exports','TEXT','medium'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x20df,0x7c));var _0xf20d=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0x20df[_0x2a55f8];return _0x245efd;};'use strict';var Sequelize=require(_0xf20d('0x0'));module[_0xf20d('0x1')]={'body':{'type':Sequelize[_0xf20d('0x2')](_0xf20d('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xf20d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf20d('0x5')]('in',_0xf20d('0x6')),'defaultValue':_0xf20d('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xf20d('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xf20d('0x2')]}};
\ No newline at end of file
index 76d931b..5ecc397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdfe=['openchannel-interactions','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','OpenchannelInteraction','OpenchannelInteractionId','isNil','format','get','user','role','interaction','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','agent','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','../../config/logger','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','User','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./openchannelMessage.socket','register','jayson/promise','http','client','request','info','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','sendStatus','name','send','index','OpenchannelMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','fields','includeAll','find','create','body','update','describe'];(function(_0x208cc8,_0x3a993e){var _0x45d557=function(_0x21f030){while(--_0x21f030){_0x208cc8['push'](_0x208cc8['shift']());}};_0x45d557(++_0x3a993e);}(_0xcdfe,0xae));var _0xecdf=function(_0xb9bf14,_0x4e7f83){_0xb9bf14=_0xb9bf14-0x0;var _0x54dcb2=_0xcdfe[_0xb9bf14];return _0x54dcb2;};'use strict';var emlformat=require(_0xecdf('0x0'));var rimraf=require(_0xecdf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xecdf('0x2'));var rp=require(_0xecdf('0x3'));var moment=require(_0xecdf('0x4'));var BPromise=require(_0xecdf('0x5'));var Mustache=require(_0xecdf('0x6'));var util=require(_0xecdf('0x7'));var path=require('path');var sox=require(_0xecdf('0x8'));var csv=require(_0xecdf('0x9'));var ejs=require(_0xecdf('0xa'));var fs=require('fs');var fs_extra=require(_0xecdf('0xb'));var _=require(_0xecdf('0xc'));var squel=require(_0xecdf('0xd'));var crypto=require(_0xecdf('0xe'));var jsforce=require(_0xecdf('0xf'));var deskjs=require(_0xecdf('0x10'));var toCsv=require(_0xecdf('0x9'));var querystring=require(_0xecdf('0x11'));var Papa=require(_0xecdf('0x12'));var Redis=require(_0xecdf('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xecdf('0x14'));var as=require(_0xecdf('0x15'));var hardwareService=require(_0xecdf('0x16'));var logger=require('../../config/logger')(_0xecdf('0x17'));var utils=require(_0xecdf('0x18'));var config=require(_0xecdf('0x19'));var licenseUtil=require(_0xecdf('0x1a'));var db=require(_0xecdf('0x1b'))['db'];config[_0xecdf('0x1c')]=_[_0xecdf('0x1d')](config[_0xecdf('0x1c')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xecdf('0x1c')]));require(_0xecdf('0x1e'))[_0xecdf('0x1f')](socket);var jayson=require(_0xecdf('0x20'));var client=jayson['client'][_0xecdf('0x21')]({'port':0x232c});var client9002=jayson[_0xecdf('0x22')][_0xecdf('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x419b18,_0x4d101d,_0x4ad84d,_0x5d83d0){return new BPromise(function(_0xc6605,_0x4ad19d){var _0x311dbb=_0x5d83d0||client;return _0x311dbb[_0xecdf('0x23')](_0x419b18,_0x4ad84d)['then'](function(_0x4c0858){logger[_0xecdf('0x24')](_0xecdf('0x25'),_0x4d101d,'request\x20sent');logger[_0xecdf('0x26')](_0xecdf('0x27'),_0x4d101d,_0xecdf('0x28'),JSON[_0xecdf('0x29')](_0x4c0858));if(_0x4c0858[_0xecdf('0x2a')]){if(_0x4c0858[_0xecdf('0x2a')][_0xecdf('0x2b')]===0x1f4){logger[_0xecdf('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x4d101d,_0x4c0858[_0xecdf('0x2a')][_0xecdf('0x2c')]);return _0x4ad19d(_0x4c0858[_0xecdf('0x2a')][_0xecdf('0x2c')]);}logger['error'](_0xecdf('0x25'),_0x4d101d,_0x4c0858[_0xecdf('0x2a')][_0xecdf('0x2c')]);return _0xc6605(_0x4c0858['error'][_0xecdf('0x2c')]);}else{logger['info'](_0xecdf('0x25'),_0x4d101d,_0xecdf('0x28'));_0xc6605(_0x4c0858['result'][_0xecdf('0x2c')]);}})['catch'](function(_0x31de83){logger[_0xecdf('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x4d101d,_0x31de83);_0x4ad19d(_0x31de83);});});}function respondWithStatusCode(_0x125ee7,_0xf63d52){_0xf63d52=_0xf63d52||0xcc;return function(_0x1aa11f){if(_0x1aa11f){return _0x125ee7['sendStatus'](_0xf63d52);}return _0x125ee7[_0xecdf('0x2d')](_0xf63d52)[_0xecdf('0x2e')]();};}function respondWithResult(_0x27ae6d,_0xe88fee){_0xe88fee=_0xe88fee||0xc8;return function(_0x252f1c){if(_0x252f1c){return _0x27ae6d[_0xecdf('0x2d')](_0xe88fee)[_0xecdf('0x2f')](_0x252f1c);}};}function respondWithFilteredResult(_0x3dbe28,_0x297b52){return function(_0x1478c8){if(_0x1478c8){var _0x213fcf=typeof _0x297b52[_0xecdf('0x30')]===_0xecdf('0x31')&&typeof _0x297b52['limit']==='undefined';var _0x4e5673=_0x1478c8['count'];var _0x1dfdb2=_0x213fcf?0x0:_0x297b52[_0xecdf('0x30')];var _0x14af00=_0x213fcf?_0x1478c8[_0xecdf('0x32')]:_0x297b52[_0xecdf('0x30')]+_0x297b52[_0xecdf('0x33')];var _0x3c1004;if(_0x14af00>=_0x4e5673){_0x14af00=_0x4e5673;_0x3c1004=0xc8;}else{_0x3c1004=0xce;}_0x3dbe28[_0xecdf('0x2d')](_0x3c1004);return _0x3dbe28[_0xecdf('0x34')](_0xecdf('0x35'),_0x1dfdb2+'-'+_0x14af00+'/'+_0x4e5673)[_0xecdf('0x2f')](_0x1478c8);}return null;};}function patchUpdates(_0x102229){return function(_0xb2697f){try{jsonpatch[_0xecdf('0x36')](_0xb2697f,_0x102229,!![]);}catch(_0x1197ac){return BPromise[_0xecdf('0x37')](_0x1197ac);}return _0xb2697f['save']();};}function saveUpdates(_0xcb7a6f,_0x38a795){return function(_0x51798b){if(_0x51798b){return _0x51798b['update'](_0xcb7a6f)[_0xecdf('0x38')](function(_0x2f3e3b){return _0x2f3e3b;});}return null;};}function removeEntity(_0x1b5ef7,_0x4e78a1){return function(_0x758f4a){if(_0x758f4a){return _0x758f4a['destroy']()[_0xecdf('0x38')](function(){_0x1b5ef7[_0xecdf('0x2d')](0xcc)[_0xecdf('0x2e')]();});}};}function handleEntityNotFound(_0x8566b9,_0x3c1f96){return function(_0x2355c0){if(!_0x2355c0){_0x8566b9[_0xecdf('0x39')](0x194);}return _0x2355c0;};}function handleError(_0xdc0b1b,_0x307666){_0x307666=_0x307666||0x1f4;return function(_0xe1e62f){logger[_0xecdf('0x2a')](_0xe1e62f['stack']);if(_0xe1e62f[_0xecdf('0x3a')]){delete _0xe1e62f[_0xecdf('0x3a')];}_0xdc0b1b[_0xecdf('0x2d')](_0x307666)[_0xecdf('0x3b')](_0xe1e62f);};}exports[_0xecdf('0x3c')]=function(_0x57afb0,_0x2062e7){var _0x4ad269={},_0x53afa7={},_0x5bbf05={'count':0x0,'rows':[]};var _0x169896=_['map'](db[_0xecdf('0x3d')][_0xecdf('0x3e')],function(_0x2d9295){return{'name':_0x2d9295[_0xecdf('0x3f')],'type':_0x2d9295[_0xecdf('0x40')][_0xecdf('0x41')]};});_0x53afa7[_0xecdf('0x42')]=_[_0xecdf('0x43')](_0x169896,_0xecdf('0x3a'));_0x53afa7[_0xecdf('0x44')]=_[_0xecdf('0x45')](_0x57afb0[_0xecdf('0x44')]);_0x53afa7[_0xecdf('0x46')]=_[_0xecdf('0x47')](_0x53afa7[_0xecdf('0x42')],_0x53afa7[_0xecdf('0x44')]);_0x4ad269[_0xecdf('0x48')]=_[_0xecdf('0x47')](_0x53afa7['model'],qs['fields'](_0x57afb0[_0xecdf('0x44')]['fields']));_0x4ad269[_0xecdf('0x48')]=_0x4ad269[_0xecdf('0x48')][_0xecdf('0x49')]?_0x4ad269['attributes']:_0x53afa7[_0xecdf('0x42')];if(!_0x57afb0[_0xecdf('0x44')][_0xecdf('0x4a')](_0xecdf('0x4b'))){_0x4ad269[_0xecdf('0x33')]=qs['limit'](_0x57afb0[_0xecdf('0x44')][_0xecdf('0x33')]);_0x4ad269[_0xecdf('0x30')]=qs[_0xecdf('0x30')](_0x57afb0[_0xecdf('0x44')][_0xecdf('0x30')]);}_0x4ad269[_0xecdf('0x4c')]=qs['sort'](_0x57afb0[_0xecdf('0x44')][_0xecdf('0x4d')]);_0x4ad269[_0xecdf('0x4e')]=qs[_0xecdf('0x46')](_[_0xecdf('0x4f')](_0x57afb0[_0xecdf('0x44')],_0x53afa7[_0xecdf('0x46')]),_0x169896);if(_0x57afb0[_0xecdf('0x44')][_0xecdf('0x50')]){_0x4ad269[_0xecdf('0x4e')]=_[_0xecdf('0x51')](_0x4ad269[_0xecdf('0x4e')],{'$or':_['map'](_0x169896,function(_0xd0edc2){if(_0xd0edc2['type']!=='VIRTUAL'){var _0x1bc686={};_0x1bc686[_0xd0edc2[_0xecdf('0x3a')]]={'$like':'%'+_0x57afb0[_0xecdf('0x44')][_0xecdf('0x50')]+'%'};return _0x1bc686;}})});}_0x4ad269=_[_0xecdf('0x51')]({},_0x4ad269,_0x57afb0[_0xecdf('0x52')]);var _0xb48d57={'where':_0x4ad269[_0xecdf('0x4e')]};return db[_0xecdf('0x3d')][_0xecdf('0x32')](_0xb48d57)['then'](function(_0x1eaf72){_0x5bbf05[_0xecdf('0x32')]=_0x1eaf72;if(_0x57afb0[_0xecdf('0x44')]['includeAll']){_0x4ad269[_0xecdf('0x53')]=[{'all':!![]}];}return db[_0xecdf('0x3d')][_0xecdf('0x54')](_0x4ad269);})[_0xecdf('0x38')](function(_0x2656b4){_0x5bbf05[_0xecdf('0x55')]=_0x2656b4;return _0x5bbf05;})[_0xecdf('0x38')](respondWithFilteredResult(_0x2062e7,_0x4ad269))[_0xecdf('0x56')](handleError(_0x2062e7,null));};exports[_0xecdf('0x57')]=function(_0x30555c,_0x5183ec){var _0x3e632d={'raw':!![],'where':{'id':_0x30555c[_0xecdf('0x58')]['id']}},_0x435712={};_0x435712[_0xecdf('0x42')]=_[_0xecdf('0x45')](db[_0xecdf('0x3d')][_0xecdf('0x3e')]);_0x435712[_0xecdf('0x44')]=_[_0xecdf('0x45')](_0x30555c[_0xecdf('0x44')]);_0x435712[_0xecdf('0x46')]=_[_0xecdf('0x47')](_0x435712['model'],_0x435712[_0xecdf('0x44')]);_0x3e632d['attributes']=_[_0xecdf('0x47')](_0x435712[_0xecdf('0x42')],qs[_0xecdf('0x59')](_0x30555c[_0xecdf('0x44')][_0xecdf('0x59')]));_0x3e632d['attributes']=_0x3e632d[_0xecdf('0x48')][_0xecdf('0x49')]?_0x3e632d[_0xecdf('0x48')]:_0x435712[_0xecdf('0x42')];if(_0x30555c[_0xecdf('0x44')][_0xecdf('0x5a')]){_0x3e632d[_0xecdf('0x53')]=[{'all':!![]}];}_0x3e632d=_[_0xecdf('0x51')]({},_0x3e632d,_0x30555c[_0xecdf('0x52')]);return db[_0xecdf('0x3d')][_0xecdf('0x5b')](_0x3e632d)[_0xecdf('0x38')](handleEntityNotFound(_0x5183ec,null))[_0xecdf('0x38')](respondWithResult(_0x5183ec,null))[_0xecdf('0x56')](handleError(_0x5183ec,null));};exports[_0xecdf('0x5c')]=function(_0x350625,_0x501c52){return db[_0xecdf('0x3d')]['create'](_0x350625[_0xecdf('0x5d')],{})['then'](respondWithResult(_0x501c52,0xc9))[_0xecdf('0x56')](handleError(_0x501c52,null));};exports[_0xecdf('0x5e')]=function(_0x50a10d,_0xe5d691){if(_0x50a10d[_0xecdf('0x5d')]['id']){delete _0x50a10d[_0xecdf('0x5d')]['id'];}return db[_0xecdf('0x3d')][_0xecdf('0x5b')]({'where':{'id':_0x50a10d[_0xecdf('0x58')]['id']}})[_0xecdf('0x38')](handleEntityNotFound(_0xe5d691,null))[_0xecdf('0x38')](saveUpdates(_0x50a10d['body'],null))[_0xecdf('0x38')](respondWithResult(_0xe5d691,null))[_0xecdf('0x56')](handleError(_0xe5d691,null));};exports['destroy']=function(_0x29f529,_0x44c46c){return db['OpenchannelMessage'][_0xecdf('0x5b')]({'where':{'id':_0x29f529['params']['id']}})[_0xecdf('0x38')](handleEntityNotFound(_0x44c46c,null))[_0xecdf('0x38')](removeEntity(_0x44c46c,null))['catch'](handleError(_0x44c46c,null));};exports[_0xecdf('0x5f')]=function(_0x3dcecd,_0x4e583a){return db[_0xecdf('0x3d')][_0xecdf('0x5f')]()[_0xecdf('0x38')](respondWithResult(_0x4e583a,null))[_0xecdf('0x56')](handleError(_0x4e583a,null));};var interaction_log=require('../../config/logger')(_0xecdf('0x60'));exports[_0xecdf('0x61')]=function(_0x5eb421,_0x1ec126,_0x2dd2e6){var _0x22eaba={'agent':{},'channel':'openchannel'};if(_0x5eb421[_0xecdf('0x5d')]['id']){delete _0x5eb421[_0xecdf('0x5d')]['id'];}_0x5eb421['body'][_0xecdf('0x62')]=!![];_0x5eb421[_0xecdf('0x5d')][_0xecdf('0x63')]=moment()['format'](_0xecdf('0x64'));_0x5eb421['body'][_0xecdf('0x65')]=_0x5eb421['body'][_0xecdf('0x65')]||_0x5eb421['user']['id'];_0x22eaba['agent']['id']=_0x5eb421[_0xecdf('0x5d')][_0xecdf('0x65')];return db['OpenchannelMessage'][_0xecdf('0x5b')]({'where':{'id':_0x5eb421['params']['id'],'UserId':null}})[_0xecdf('0x38')](handleEntityNotFound(_0x1ec126,null))['then'](saveUpdates(_0x5eb421[_0xecdf('0x5d')],null))[_0xecdf('0x38')](function(_0x3b8c3b){if(_0x3b8c3b){_0x22eaba[_0xecdf('0x2c')]=_0x3b8c3b['get']({'plain':!![]});return db[_0xecdf('0x66')]['find']({'where':{'id':_0x3b8c3b[_0xecdf('0x67')]}});}return null;})[_0xecdf('0x38')](handleEntityNotFound(_0x1ec126,null))['then'](function(_0x3ebacf){if(_0x3ebacf){return _0x3ebacf[_0xecdf('0x5e')]({'UserId':_0x5eb421['body']['UserId'],'read1stAt':_[_0xecdf('0x68')](_0x3ebacf['read1stAt'])?moment()[_0xecdf('0x69')](_0xecdf('0x64')):undefined});}return null;})[_0xecdf('0x38')](function(_0x134f00){if(_0x134f00){_0x22eaba['interaction']=_0x134f00[_0xecdf('0x6a')]({'plain':!![]});interaction_log[_0xecdf('0x24')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5eb421['user']['id'],_0x5eb421[_0xecdf('0x6b')][_0xecdf('0x3a')],_0x5eb421['user'][_0xecdf('0x6c')],_0x22eaba[_0xecdf('0x6d')]['id'],_0x5eb421[_0xecdf('0x5d')]?JSON[_0xecdf('0x29')](_0x5eb421[_0xecdf('0x5d')]):'null');return respondWithRpcPromise(_0xecdf('0x6e'),'acceptMessage',_0x22eaba);}return null;})[_0xecdf('0x38')](function(_0x31d6d5){var _0x47f7cf=_0xecdf('0x6f')+_0x31d6d5['message']['ContactId'];return db[_0xecdf('0x70')][_0xecdf('0x44')](_0x47f7cf,{'type':db[_0xecdf('0x71')][_0xecdf('0x72')][_0xecdf('0x73')],'raw':!![]})[_0xecdf('0x38')](function(_0x3193b3){return _0x3193b3;});})[_0xecdf('0x38')](function(_0x334a22){if(_0x334a22){_0x22eaba[_0xecdf('0x2c')][_0xecdf('0x74')]=_0x334a22[0x0];if(!_0x5eb421['body'][_0xecdf('0x65')])return;return db['User']['find']({'where':{'id':_0x5eb421[_0xecdf('0x5d')]['UserId'],'role':_0xecdf('0x75')},'attributes':['id',_0xecdf('0x3a'),_0xecdf('0x76'),_0xecdf('0x77'),_0xecdf('0x78')],'raw':!![]});}return null;})[_0xecdf('0x38')](function(_0xc7724b){if(!_0xc7724b)return null;_0x22eaba[_0xecdf('0x2c')][_0xecdf('0x75')]=_0xc7724b;return _0x22eaba;})[_0xecdf('0x38')](function(_0x3155da){if(_0x3155da){if(_0x5eb421[_0xecdf('0x5d')][_0xecdf('0x79')]){_0x22eaba[_0xecdf('0x2c')][_0xecdf('0x7a')]=util[_0xecdf('0x69')](_0xecdf('0x7b'),_0x5eb421[_0xecdf('0x6b')]['name']);_0x22eaba['message'][_0xecdf('0x7c')]=_0x22eaba[_0xecdf('0x7c')];_0x22eaba[_0xecdf('0x2c')][_0xecdf('0x7d')]=_0x22eaba['channel'];_0x22eaba['message'][_0xecdf('0x7e')]=_0xecdf('0x61');return respondWithRpcPromise(_0xecdf('0x7f'),'EventManager',{'event':_0xecdf('0x80'),'message':_0x22eaba[_0xecdf('0x2c')]},client9002)[_0xecdf('0x38')](function(){return _0x22eaba;});}return _0x22eaba;}return null;})[_0xecdf('0x38')](respondWithResult(_0x1ec126,null))[_0xecdf('0x56')](handleError(_0x1ec126,null));};var interaction_log=require(_0xecdf('0x81'))('openchannel-interactions');exports[_0xecdf('0x37')]=function(_0x134436,_0x497ae2,_0x5d1c5c){var _0x44c3e6={'agent':{},'channel':'openchannel'};if(_0x134436[_0xecdf('0x5d')]['id']){delete _0x134436[_0xecdf('0x5d')]['id'];}_0x134436[_0xecdf('0x5d')][_0xecdf('0x65')]=_0x134436['body'][_0xecdf('0x65')]||_0x134436[_0xecdf('0x6b')]['id'];_0x44c3e6[_0xecdf('0x75')]['id']=_0x134436[_0xecdf('0x5d')][_0xecdf('0x65')];return db[_0xecdf('0x3d')][_0xecdf('0x5b')]({'where':{'id':_0x134436[_0xecdf('0x58')]['id'],'UserId':null}})[_0xecdf('0x38')](handleEntityNotFound(_0x497ae2,null))[_0xecdf('0x38')](function(_0x36daf9){if(_0x36daf9){_0x44c3e6[_0xecdf('0x2c')]=_0x36daf9[_0xecdf('0x6a')]({'plain':!![]});return db[_0xecdf('0x66')][_0xecdf('0x5b')]({'where':{'id':_0x36daf9[_0xecdf('0x67')]}});}return null;})[_0xecdf('0x38')](handleEntityNotFound(_0x497ae2,null))['then'](function(_0x48e6ae){if(_0x48e6ae){_0x44c3e6['interaction']=_0x48e6ae[_0xecdf('0x6a')]({'plain':!![]});interaction_log[_0xecdf('0x24')](_0xecdf('0x82'),_0x134436['user']['id'],_0x134436[_0xecdf('0x6b')][_0xecdf('0x3a')],_0x134436[_0xecdf('0x6b')][_0xecdf('0x6c')],_0x44c3e6[_0xecdf('0x6d')]['id'],_0x134436[_0xecdf('0x5d')]?JSON[_0xecdf('0x29')](_0x134436[_0xecdf('0x5d')]):'null');return respondWithRpcPromise(_0xecdf('0x83'),_0xecdf('0x84'),_0x44c3e6);}return null;})[_0xecdf('0x38')](function(_0x6fdf0a){var _0x5a6bf3=_0xecdf('0x6f')+_0x6fdf0a[_0xecdf('0x2c')]['ContactId'];return db[_0xecdf('0x70')][_0xecdf('0x44')](_0x5a6bf3,{'type':db['Sequelize'][_0xecdf('0x72')][_0xecdf('0x73')],'raw':!![]})[_0xecdf('0x38')](function(_0x3b454c){return _0x3b454c;});})[_0xecdf('0x38')](function(_0x7ee1c7){if(_0x7ee1c7){_0x44c3e6['message']['contact']=_0x7ee1c7[0x0];if(!_0x134436[_0xecdf('0x5d')][_0xecdf('0x65')])return;return db[_0xecdf('0x85')][_0xecdf('0x5b')]({'where':{'id':_0x134436['body'][_0xecdf('0x65')],'role':_0xecdf('0x75')},'attributes':['id',_0xecdf('0x3a'),_0xecdf('0x76'),_0xecdf('0x77'),_0xecdf('0x78')],'raw':!![]});}return null;})[_0xecdf('0x38')](function(_0x509dd6){if(!_0x509dd6)return null;_0x44c3e6[_0xecdf('0x2c')][_0xecdf('0x75')]=_0x509dd6;return _0x44c3e6;})[_0xecdf('0x38')](function(_0x22124b){if(_0x22124b){_0x22124b[_0xecdf('0x2c')][_0xecdf('0x7a')]=util[_0xecdf('0x69')](_0xecdf('0x7b'),_0x134436[_0xecdf('0x6b')][_0xecdf('0x3a')]);_0x22124b[_0xecdf('0x2c')][_0xecdf('0x7c')]=_0x44c3e6[_0xecdf('0x7c')];_0x22124b[_0xecdf('0x2c')][_0xecdf('0x7d')]=_0x44c3e6[_0xecdf('0x7c')];_0x22124b[_0xecdf('0x2c')][_0xecdf('0x7e')]=_0xecdf('0x37');respondWithRpcPromise(_0xecdf('0x7f'),'EventManager',{'event':_0xecdf('0x86'),'message':_0x22124b[_0xecdf('0x2c')]},client9002);return _0x44c3e6;}return null;})[_0xecdf('0x38')](respondWithResult(_0x497ae2,null))[_0xecdf('0x56')](handleError(_0x497ae2,null));};
\ No newline at end of file
+var _0x07b6=['params','keys','rawAttributes','includeAll','find','create','body','destroy','describe','openchannel-interactions','accept','openchannel','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','OpenchannelInteractionId','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','contact','reject','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','update','then','stack','name','send','index','OpenchannelMessage','fieldName','type','key','map','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','sort','where','pick','filter','merge','options','include','findAll','rows','show'];(function(_0x3c957d,_0x40d8f3){var _0x46ab64=function(_0x470663){while(--_0x470663){_0x3c957d['push'](_0x3c957d['shift']());}};_0x46ab64(++_0x40d8f3);}(_0x07b6,0xb5));var _0x607b=function(_0x3d7811,_0x59daeb){_0x3d7811=_0x3d7811-0x0;var _0x927cfa=_0x07b6[_0x3d7811];return _0x927cfa;};'use strict';var emlformat=require(_0x607b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x607b('0x1'));var jsonpatch=require(_0x607b('0x2'));var rp=require(_0x607b('0x3'));var moment=require(_0x607b('0x4'));var BPromise=require(_0x607b('0x5'));var Mustache=require(_0x607b('0x6'));var util=require('util');var path=require(_0x607b('0x7'));var sox=require(_0x607b('0x8'));var csv=require('to-csv');var ejs=require(_0x607b('0x9'));var fs=require('fs');var fs_extra=require(_0x607b('0xa'));var _=require('lodash');var squel=require(_0x607b('0xb'));var crypto=require(_0x607b('0xc'));var jsforce=require(_0x607b('0xd'));var deskjs=require(_0x607b('0xe'));var toCsv=require(_0x607b('0xf'));var querystring=require(_0x607b('0x10'));var Papa=require(_0x607b('0x11'));var Redis=require(_0x607b('0x12'));var authService=require(_0x607b('0x13'));var qs=require(_0x607b('0x14'));var as=require(_0x607b('0x15'));var hardwareService=require(_0x607b('0x16'));var logger=require(_0x607b('0x17'))(_0x607b('0x18'));var utils=require(_0x607b('0x19'));var config=require(_0x607b('0x1a'));var licenseUtil=require(_0x607b('0x1b'));var db=require(_0x607b('0x1c'))['db'];config[_0x607b('0x1d')]=_[_0x607b('0x1e')](config[_0x607b('0x1d')],{'host':_0x607b('0x1f'),'port':0x18eb});var socket=require(_0x607b('0x20'))(new Redis(config[_0x607b('0x1d')]));require(_0x607b('0x21'))['register'](socket);var jayson=require(_0x607b('0x22'));var client=jayson[_0x607b('0x23')][_0x607b('0x24')]({'port':0x232c});var client9002=jayson['client'][_0x607b('0x24')]({'port':0x232a});function respondWithRpcPromise(_0xeb4707,_0x57948f,_0x226437,_0x20686e){return new BPromise(function(_0x422ed6,_0x5bda44){var _0x3d1a2e=_0x20686e||client;return _0x3d1a2e[_0x607b('0x25')](_0xeb4707,_0x226437)['then'](function(_0x138c42){logger[_0x607b('0x26')](_0x607b('0x27'),_0x57948f,_0x607b('0x28'));logger[_0x607b('0x29')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x57948f,_0x607b('0x28'),JSON[_0x607b('0x2a')](_0x138c42));if(_0x138c42[_0x607b('0x2b')]){if(_0x138c42[_0x607b('0x2b')][_0x607b('0x2c')]===0x1f4){logger['error'](_0x607b('0x27'),_0x57948f,_0x138c42[_0x607b('0x2b')][_0x607b('0x2d')]);return _0x5bda44(_0x138c42['error'][_0x607b('0x2d')]);}logger[_0x607b('0x2b')]('OpenchannelMessage,\x20%s,\x20%s',_0x57948f,_0x138c42[_0x607b('0x2b')]['message']);return _0x422ed6(_0x138c42[_0x607b('0x2b')][_0x607b('0x2d')]);}else{logger[_0x607b('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0x57948f,_0x607b('0x28'));_0x422ed6(_0x138c42['result'][_0x607b('0x2d')]);}})[_0x607b('0x2e')](function(_0x574c7c){logger[_0x607b('0x2b')]('OpenchannelMessage,\x20%s,\x20%s',_0x57948f,_0x574c7c);_0x5bda44(_0x574c7c);});});}function respondWithStatusCode(_0x2ecb44,_0x12947c){_0x12947c=_0x12947c||0xcc;return function(_0x282950){if(_0x282950){return _0x2ecb44[_0x607b('0x2f')](_0x12947c);}return _0x2ecb44[_0x607b('0x30')](_0x12947c)[_0x607b('0x31')]();};}function respondWithResult(_0xfd4c52,_0x18d8fd){_0x18d8fd=_0x18d8fd||0xc8;return function(_0x307ada){if(_0x307ada){return _0xfd4c52[_0x607b('0x30')](_0x18d8fd)[_0x607b('0x32')](_0x307ada);}};}function respondWithFilteredResult(_0x96c078,_0x7d2f51){return function(_0x36abae){if(_0x36abae){var _0x478478=typeof _0x7d2f51['offset']===_0x607b('0x33')&&typeof _0x7d2f51[_0x607b('0x34')]==='undefined';var _0x31f660=_0x36abae[_0x607b('0x35')];var _0x5f4860=_0x478478?0x0:_0x7d2f51[_0x607b('0x36')];var _0x2c5bec=_0x478478?_0x36abae[_0x607b('0x35')]:_0x7d2f51[_0x607b('0x36')]+_0x7d2f51[_0x607b('0x34')];var _0x48ee97;if(_0x2c5bec>=_0x31f660){_0x2c5bec=_0x31f660;_0x48ee97=0xc8;}else{_0x48ee97=0xce;}_0x96c078[_0x607b('0x30')](_0x48ee97);return _0x96c078['set'](_0x607b('0x37'),_0x5f4860+'-'+_0x2c5bec+'/'+_0x31f660)[_0x607b('0x32')](_0x36abae);}return null;};}function patchUpdates(_0x3db3fc){return function(_0x43c077){try{jsonpatch['apply'](_0x43c077,_0x3db3fc,!![]);}catch(_0x4af6a9){return BPromise['reject'](_0x4af6a9);}return _0x43c077['save']();};}function saveUpdates(_0x13ea0d,_0x40bf58){return function(_0x436e42){if(_0x436e42){return _0x436e42[_0x607b('0x38')](_0x13ea0d)[_0x607b('0x39')](function(_0x329065){return _0x329065;});}return null;};}function removeEntity(_0x1b0ad4,_0x4619ce){return function(_0x5506c1){if(_0x5506c1){return _0x5506c1['destroy']()[_0x607b('0x39')](function(){_0x1b0ad4[_0x607b('0x30')](0xcc)[_0x607b('0x31')]();});}};}function handleEntityNotFound(_0x3f6979,_0xe9825){return function(_0x2ddb88){if(!_0x2ddb88){_0x3f6979[_0x607b('0x2f')](0x194);}return _0x2ddb88;};}function handleError(_0x590faa,_0x4c61f8){_0x4c61f8=_0x4c61f8||0x1f4;return function(_0xa31dc2){logger[_0x607b('0x2b')](_0xa31dc2[_0x607b('0x3a')]);if(_0xa31dc2[_0x607b('0x3b')]){delete _0xa31dc2['name'];}_0x590faa['status'](_0x4c61f8)[_0x607b('0x3c')](_0xa31dc2);};}exports[_0x607b('0x3d')]=function(_0x549bee,_0x4032e3){var _0x228e2e={},_0x1f6859={},_0x1f86ac={'count':0x0,'rows':[]};var _0x2739cc=_['map'](db[_0x607b('0x3e')]['rawAttributes'],function(_0x3b1893){return{'name':_0x3b1893[_0x607b('0x3f')],'type':_0x3b1893[_0x607b('0x40')][_0x607b('0x41')]};});_0x1f6859['model']=_[_0x607b('0x42')](_0x2739cc,_0x607b('0x3b'));_0x1f6859['query']=_['keys'](_0x549bee[_0x607b('0x43')]);_0x1f6859[_0x607b('0x44')]=_[_0x607b('0x45')](_0x1f6859['model'],_0x1f6859['query']);_0x228e2e[_0x607b('0x46')]=_[_0x607b('0x45')](_0x1f6859['model'],qs['fields'](_0x549bee[_0x607b('0x43')][_0x607b('0x47')]));_0x228e2e['attributes']=_0x228e2e[_0x607b('0x46')][_0x607b('0x48')]?_0x228e2e['attributes']:_0x1f6859[_0x607b('0x49')];if(!_0x549bee[_0x607b('0x43')][_0x607b('0x4a')]('nolimit')){_0x228e2e['limit']=qs[_0x607b('0x34')](_0x549bee['query']['limit']);_0x228e2e[_0x607b('0x36')]=qs[_0x607b('0x36')](_0x549bee['query'][_0x607b('0x36')]);}_0x228e2e['order']=qs[_0x607b('0x4b')](_0x549bee[_0x607b('0x43')][_0x607b('0x4b')]);_0x228e2e[_0x607b('0x4c')]=qs['filters'](_[_0x607b('0x4d')](_0x549bee[_0x607b('0x43')],_0x1f6859[_0x607b('0x44')]),_0x2739cc);if(_0x549bee[_0x607b('0x43')][_0x607b('0x4e')]){_0x228e2e['where']=_[_0x607b('0x4f')](_0x228e2e[_0x607b('0x4c')],{'$or':_[_0x607b('0x42')](_0x2739cc,function(_0x1d9731){if(_0x1d9731[_0x607b('0x40')]!=='VIRTUAL'){var _0x3a26f3={};_0x3a26f3[_0x1d9731[_0x607b('0x3b')]]={'$like':'%'+_0x549bee['query'][_0x607b('0x4e')]+'%'};return _0x3a26f3;}})});}_0x228e2e=_[_0x607b('0x4f')]({},_0x228e2e,_0x549bee[_0x607b('0x50')]);var _0x5863ee={'where':_0x228e2e[_0x607b('0x4c')]};return db[_0x607b('0x3e')][_0x607b('0x35')](_0x5863ee)[_0x607b('0x39')](function(_0x365610){_0x1f86ac['count']=_0x365610;if(_0x549bee[_0x607b('0x43')]['includeAll']){_0x228e2e[_0x607b('0x51')]=[{'all':!![]}];}return db[_0x607b('0x3e')][_0x607b('0x52')](_0x228e2e);})[_0x607b('0x39')](function(_0x54eece){_0x1f86ac[_0x607b('0x53')]=_0x54eece;return _0x1f86ac;})[_0x607b('0x39')](respondWithFilteredResult(_0x4032e3,_0x228e2e))[_0x607b('0x2e')](handleError(_0x4032e3,null));};exports[_0x607b('0x54')]=function(_0x3c5a8f,_0x4e1e0a){var _0x39d57f={'raw':!![],'where':{'id':_0x3c5a8f[_0x607b('0x55')]['id']}},_0x1073bd={};_0x1073bd[_0x607b('0x49')]=_[_0x607b('0x56')](db[_0x607b('0x3e')][_0x607b('0x57')]);_0x1073bd[_0x607b('0x43')]=_[_0x607b('0x56')](_0x3c5a8f[_0x607b('0x43')]);_0x1073bd[_0x607b('0x44')]=_[_0x607b('0x45')](_0x1073bd[_0x607b('0x49')],_0x1073bd[_0x607b('0x43')]);_0x39d57f['attributes']=_[_0x607b('0x45')](_0x1073bd[_0x607b('0x49')],qs[_0x607b('0x47')](_0x3c5a8f[_0x607b('0x43')][_0x607b('0x47')]));_0x39d57f[_0x607b('0x46')]=_0x39d57f[_0x607b('0x46')][_0x607b('0x48')]?_0x39d57f[_0x607b('0x46')]:_0x1073bd[_0x607b('0x49')];if(_0x3c5a8f[_0x607b('0x43')][_0x607b('0x58')]){_0x39d57f[_0x607b('0x51')]=[{'all':!![]}];}_0x39d57f=_[_0x607b('0x4f')]({},_0x39d57f,_0x3c5a8f[_0x607b('0x50')]);return db['OpenchannelMessage'][_0x607b('0x59')](_0x39d57f)[_0x607b('0x39')](handleEntityNotFound(_0x4e1e0a,null))[_0x607b('0x39')](respondWithResult(_0x4e1e0a,null))[_0x607b('0x2e')](handleError(_0x4e1e0a,null));};exports['create']=function(_0x4628f5,_0x4c64a){return db[_0x607b('0x3e')][_0x607b('0x5a')](_0x4628f5[_0x607b('0x5b')],{})['then'](respondWithResult(_0x4c64a,0xc9))[_0x607b('0x2e')](handleError(_0x4c64a,null));};exports['update']=function(_0x2ee57d,_0x5e8d99){if(_0x2ee57d['body']['id']){delete _0x2ee57d['body']['id'];}return db[_0x607b('0x3e')][_0x607b('0x59')]({'where':{'id':_0x2ee57d[_0x607b('0x55')]['id']}})[_0x607b('0x39')](handleEntityNotFound(_0x5e8d99,null))['then'](saveUpdates(_0x2ee57d[_0x607b('0x5b')],null))[_0x607b('0x39')](respondWithResult(_0x5e8d99,null))[_0x607b('0x2e')](handleError(_0x5e8d99,null));};exports[_0x607b('0x5c')]=function(_0x402a73,_0x559d48){return db[_0x607b('0x3e')][_0x607b('0x59')]({'where':{'id':_0x402a73[_0x607b('0x55')]['id']}})[_0x607b('0x39')](handleEntityNotFound(_0x559d48,null))[_0x607b('0x39')](removeEntity(_0x559d48,null))[_0x607b('0x2e')](handleError(_0x559d48,null));};exports[_0x607b('0x5d')]=function(_0x1c8c28,_0x5a171e){return db[_0x607b('0x3e')][_0x607b('0x5d')]()['then'](respondWithResult(_0x5a171e,null))[_0x607b('0x2e')](handleError(_0x5a171e,null));};var interaction_log=require(_0x607b('0x17'))(_0x607b('0x5e'));exports[_0x607b('0x5f')]=function(_0x3287e9,_0x40db29,_0x39b0ea){var _0x115165={'agent':{},'channel':_0x607b('0x60')};if(_0x3287e9['body']['id']){delete _0x3287e9[_0x607b('0x5b')]['id'];}_0x3287e9['body'][_0x607b('0x61')]=!![];_0x3287e9['body']['readAt']=moment()[_0x607b('0x62')](_0x607b('0x63'));_0x3287e9[_0x607b('0x5b')][_0x607b('0x64')]=_0x3287e9['body'][_0x607b('0x64')]||_0x3287e9['user']['id'];_0x115165[_0x607b('0x65')]['id']=_0x3287e9[_0x607b('0x5b')][_0x607b('0x64')];return db[_0x607b('0x3e')][_0x607b('0x59')]({'where':{'id':_0x3287e9[_0x607b('0x55')]['id'],'UserId':null}})[_0x607b('0x39')](handleEntityNotFound(_0x40db29,null))['then'](saveUpdates(_0x3287e9[_0x607b('0x5b')],null))[_0x607b('0x39')](function(_0x438501){if(_0x438501){_0x115165[_0x607b('0x2d')]=_0x438501['get']({'plain':!![]});return db['OpenchannelInteraction'][_0x607b('0x59')]({'where':{'id':_0x438501[_0x607b('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x40db29,null))[_0x607b('0x39')](function(_0x5898d7){if(_0x5898d7){return _0x5898d7[_0x607b('0x38')]({'UserId':_0x3287e9[_0x607b('0x5b')]['UserId'],'read1stAt':_[_0x607b('0x67')](_0x5898d7[_0x607b('0x68')])?moment()[_0x607b('0x62')](_0x607b('0x63')):undefined});}return null;})['then'](function(_0x94f61d){if(_0x94f61d){_0x115165[_0x607b('0x69')]=_0x94f61d[_0x607b('0x6a')]({'plain':!![]});interaction_log[_0x607b('0x26')](_0x607b('0x6b'),_0x3287e9[_0x607b('0x6c')]['id'],_0x3287e9[_0x607b('0x6c')][_0x607b('0x3b')],_0x3287e9[_0x607b('0x6c')][_0x607b('0x6d')],_0x115165[_0x607b('0x69')]['id'],_0x3287e9[_0x607b('0x5b')]?JSON[_0x607b('0x2a')](_0x3287e9[_0x607b('0x5b')]):_0x607b('0x6e'));return respondWithRpcPromise(_0x607b('0x6f'),_0x607b('0x70'),_0x115165);}return null;})[_0x607b('0x39')](function(_0x412ec7){var _0x5a4938=_0x607b('0x71')+_0x412ec7['message'][_0x607b('0x72')];return db[_0x607b('0x73')][_0x607b('0x43')](_0x5a4938,{'type':db[_0x607b('0x74')][_0x607b('0x75')][_0x607b('0x76')],'raw':!![]})[_0x607b('0x39')](function(_0x58cf0a){return _0x58cf0a;});})[_0x607b('0x39')](function(_0x3fd1a7){if(_0x3fd1a7){_0x115165[_0x607b('0x2d')]['contact']=_0x3fd1a7[0x0];if(!_0x3287e9[_0x607b('0x5b')][_0x607b('0x64')])return;return db[_0x607b('0x77')][_0x607b('0x59')]({'where':{'id':_0x3287e9[_0x607b('0x5b')]['UserId'],'role':_0x607b('0x65')},'attributes':['id','name','fullname',_0x607b('0x78'),_0x607b('0x79')],'raw':!![]});}return null;})['then'](function(_0x332994){if(!_0x332994)return null;_0x115165[_0x607b('0x2d')][_0x607b('0x65')]=_0x332994;return _0x115165;})[_0x607b('0x39')](function(_0x1c5770){if(_0x1c5770){if(_0x3287e9[_0x607b('0x5b')][_0x607b('0x7a')]){_0x115165[_0x607b('0x2d')]['interface']=util[_0x607b('0x62')](_0x607b('0x7b'),_0x3287e9[_0x607b('0x6c')]['name']);_0x115165['message'][_0x607b('0x7c')]=_0x115165[_0x607b('0x7c')];_0x115165['message'][_0x607b('0x7d')]=_0x115165[_0x607b('0x7c')];_0x115165[_0x607b('0x2d')][_0x607b('0x7e')]=_0x607b('0x5f');return respondWithRpcPromise(_0x607b('0x7f'),_0x607b('0x7f'),{'event':_0x607b('0x80'),'message':_0x115165[_0x607b('0x2d')]},client9002)[_0x607b('0x39')](function(){return _0x115165;});}return _0x115165;}return null;})[_0x607b('0x39')](respondWithResult(_0x40db29,null))[_0x607b('0x2e')](handleError(_0x40db29,null));};var interaction_log=require('../../config/logger')(_0x607b('0x5e'));exports['reject']=function(_0x4c7dce,_0x5443ef,_0x480ef7){var _0x573f1c={'agent':{},'channel':_0x607b('0x60')};if(_0x4c7dce[_0x607b('0x5b')]['id']){delete _0x4c7dce[_0x607b('0x5b')]['id'];}_0x4c7dce[_0x607b('0x5b')][_0x607b('0x64')]=_0x4c7dce[_0x607b('0x5b')]['UserId']||_0x4c7dce[_0x607b('0x6c')]['id'];_0x573f1c[_0x607b('0x65')]['id']=_0x4c7dce[_0x607b('0x5b')]['UserId'];return db[_0x607b('0x3e')][_0x607b('0x59')]({'where':{'id':_0x4c7dce[_0x607b('0x55')]['id'],'UserId':null}})[_0x607b('0x39')](handleEntityNotFound(_0x5443ef,null))[_0x607b('0x39')](function(_0x1ff72a){if(_0x1ff72a){_0x573f1c['message']=_0x1ff72a[_0x607b('0x6a')]({'plain':!![]});return db['OpenchannelInteraction'][_0x607b('0x59')]({'where':{'id':_0x1ff72a['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x5443ef,null))['then'](function(_0x6a597b){if(_0x6a597b){_0x573f1c[_0x607b('0x69')]=_0x6a597b[_0x607b('0x6a')]({'plain':!![]});interaction_log[_0x607b('0x26')](_0x607b('0x81'),_0x4c7dce[_0x607b('0x6c')]['id'],_0x4c7dce[_0x607b('0x6c')][_0x607b('0x3b')],_0x4c7dce['user'][_0x607b('0x6d')],_0x573f1c['interaction']['id'],_0x4c7dce[_0x607b('0x5b')]?JSON['stringify'](_0x4c7dce[_0x607b('0x5b')]):_0x607b('0x6e'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x573f1c);}return null;})[_0x607b('0x39')](function(_0x103e42){var _0xf83b69='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x103e42[_0x607b('0x2d')]['ContactId'];return db[_0x607b('0x73')]['query'](_0xf83b69,{'type':db[_0x607b('0x74')][_0x607b('0x75')][_0x607b('0x76')],'raw':!![]})['then'](function(_0x4e54d1){return _0x4e54d1;});})[_0x607b('0x39')](function(_0x3d9ec3){if(_0x3d9ec3){_0x573f1c[_0x607b('0x2d')][_0x607b('0x82')]=_0x3d9ec3[0x0];if(!_0x4c7dce[_0x607b('0x5b')]['UserId'])return;return db[_0x607b('0x77')][_0x607b('0x59')]({'where':{'id':_0x4c7dce[_0x607b('0x5b')][_0x607b('0x64')],'role':_0x607b('0x65')},'attributes':['id',_0x607b('0x3b'),'fullname',_0x607b('0x78'),_0x607b('0x79')],'raw':!![]});}return null;})['then'](function(_0x273265){if(!_0x273265)return null;_0x573f1c['message']['agent']=_0x273265;return _0x573f1c;})['then'](function(_0x32f56f){if(_0x32f56f){_0x32f56f[_0x607b('0x2d')]['interface']=util[_0x607b('0x62')](_0x607b('0x7b'),_0x4c7dce[_0x607b('0x6c')][_0x607b('0x3b')]);_0x32f56f[_0x607b('0x2d')][_0x607b('0x7c')]=_0x573f1c[_0x607b('0x7c')];_0x32f56f[_0x607b('0x2d')][_0x607b('0x7d')]=_0x573f1c[_0x607b('0x7c')];_0x32f56f['message'][_0x607b('0x7e')]=_0x607b('0x83');respondWithRpcPromise(_0x607b('0x7f'),_0x607b('0x7f'),{'event':_0x607b('0x84'),'message':_0x32f56f[_0x607b('0x2d')]},client9002);return _0x573f1c;}return null;})['then'](respondWithResult(_0x5443ef,null))[_0x607b('0x2e')](handleError(_0x5443ef,null));};
\ No newline at end of file
index 6166935..3a02d78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7fd=['events','../../mysqldb','OpenchannelMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x6ea3d3,_0x458ef6){var _0x15682f=function(_0x4e56d3){while(--_0x4e56d3){_0x6ea3d3['push'](_0x6ea3d3['shift']());}};_0x15682f(++_0x458ef6);}(_0xa7fd,0xfa));var _0xda7f=function(_0x1ed794,_0x3ac52e){_0x1ed794=_0x1ed794-0x0;var _0x374866=_0xa7fd[_0x1ed794];return _0x374866;};'use strict';var EventEmitter=require(_0xda7f('0x0'));var OpenchannelMessage=require(_0xda7f('0x1'))['db'][_0xda7f('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xda7f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xda7f('0x4'),'afterDestroy':_0xda7f('0x5')};function emitEvent(_0x2a86b3){return function(_0x3055dd,_0x45b805,_0x6e75fb){OpenchannelMessageEvents[_0xda7f('0x6')](_0x2a86b3+':'+_0x3055dd['id'],_0x3055dd);OpenchannelMessageEvents[_0xda7f('0x6')](_0x2a86b3,_0x3055dd);_0x6e75fb(null);};}for(var e in events){if(events[_0xda7f('0x7')](e)){var event=events[e];OpenchannelMessage[_0xda7f('0x8')](e,emitEvent(event));}}module[_0xda7f('0x9')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xdeed=['update','remove','emit','hasOwnProperty','hook','exports','OpenchannelMessage','setMaxListeners'];(function(_0x371ad1,_0x1692fa){var _0x3f2005=function(_0x4379e4){while(--_0x4379e4){_0x371ad1['push'](_0x371ad1['shift']());}};_0x3f2005(++_0x1692fa);}(_0xdeed,0x106));var _0xddee=function(_0x2d6ebe,_0x18680c){_0x2d6ebe=_0x2d6ebe-0x0;var _0x2497ad=_0xdeed[_0x2d6ebe];return _0x2497ad;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db'][_0xddee('0x0')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xddee('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xddee('0x2'),'afterDestroy':_0xddee('0x3')};function emitEvent(_0x3a008b){return function(_0x5742b0,_0x144b72,_0x50022f){OpenchannelMessageEvents['emit'](_0x3a008b+':'+_0x5742b0['id'],_0x5742b0);OpenchannelMessageEvents[_0xddee('0x4')](_0x3a008b,_0x5742b0);_0x50022f(null);};}for(var e in events){if(events[_0xddee('0x5')](e)){var event=events[e];OpenchannelMessage[_0xddee('0x6')](e,emitEvent(event));}}module[_0xddee('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index ce55234..49b09a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9497=['POST','method','GET','body','replyUri','threadId','error','inspect','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','openchannel_messages','fti_openchannel_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','describe','OpenchannelAccount','find','Interactions','Contact','keys','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction'];(function(_0x2fac4a,_0x52fbfc){var _0x486079=function(_0x760296){while(--_0x760296){_0x2fac4a['push'](_0x2fac4a['shift']());}};_0x486079(++_0x52fbfc);}(_0x9497,0xda));var _0x7949=function(_0x1d9537,_0x1fbfea){_0x1d9537=_0x1d9537-0x0;var _0x945fa4=_0x9497[_0x1d9537];return _0x945fa4;};'use strict';var _=require(_0x7949('0x0'));var util=require(_0x7949('0x1'));var logger=require(_0x7949('0x2'))(_0x7949('0x3'));var moment=require(_0x7949('0x4'));var BPromise=require('bluebird');var rp=require(_0x7949('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7949('0x6'));var config=require(_0x7949('0x7'));var attributes=require(_0x7949('0x8'));module[_0x7949('0x9')]=function(_0x3058b1,_0x285449){return _0x3058b1[_0x7949('0xa')]('OpenchannelMessage',attributes,{'tableName':_0x7949('0xb'),'paranoid':![],'indexes':[{'name':_0x7949('0xc'),'fields':['body'],'type':_0x7949('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x176e4e,_0x3968fa,_0x5d27d6){var _0x31d26e=_0x3058b1[_0x7949('0xe')];var _0x8aca4e=_0x176e4e[_0x7949('0xf')]({'plain':!![]});if(_0x8aca4e[_0x7949('0x10')]['toLowerCase']()==='in'||_0x8aca4e[_0x7949('0x10')][_0x7949('0x11')]()===_0x7949('0x12')&&!_0x8aca4e[_0x7949('0x13')]&&!_[_0x7949('0x14')](_0x8aca4e[_0x7949('0x15')])){_0x31d26e[_0x7949('0x16')][_0x7949('0x17')]({'where':{'id':_0x8aca4e[_0x7949('0x18')]}})[_0x7949('0x19')](function(_0x1b0f81){if(_0x1b0f81){_0x1b0f81[_0x7949('0x1a')]({'lastMsgAt':_0x8aca4e[_0x7949('0x1b')],'lastMsgDirection':_0x8aca4e[_0x7949('0x10')][_0x7949('0x11')]()});}})[_0x7949('0x1c')](function(_0x1cd8bc){console['error'](_0x1cd8bc);});}if(_0x8aca4e['direction']===_0x7949('0x12')&&!_0x8aca4e[_0x7949('0x13')]){var _0x238e8c;_0x31d26e['CmContact'][_0x7949('0x1d')]()[_0x7949('0x19')](function(_0x24d17d){return _0x31d26e[_0x7949('0x1e')][_0x7949('0x1f')]({'where':{'id':_0x8aca4e['OpenchannelAccountId']},'include':[{'model':_0x31d26e[_0x7949('0x16')],'as':_0x7949('0x20'),'where':{'id':_0x8aca4e['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x31d26e['CmContact'],'as':_0x7949('0x21'),'attributes':_[_0x7949('0x22')](_0x24d17d)}]}]});})[_0x7949('0x19')](function(_0x188abb){_0x238e8c=_0x188abb['get']({'plain':!![]});if(_0x238e8c&&_0x238e8c['replyUri']){logger[_0x7949('0x23')](_0x7949('0x24'),_0x7949('0x25'),util[_0x7949('0x26')](_0x7949('0x27'),_0x8aca4e['id'],_0x238e8c['replyUri']));if(_0x238e8c[_0x7949('0x20')]&&_0x238e8c[_0x7949('0x20')][_0x7949('0x28')]){_0x8aca4e[_0x7949('0x29')]=_['omit'](_0x238e8c[_0x7949('0x20')][0x0],_0x7949('0x21'));_0x8aca4e[_0x7949('0x21')]=_0x238e8c[_0x7949('0x20')][0x0][_0x7949('0x21')];}var _0x3968fa={'method':_0x7949('0x2a'),'uri':encodeURI(_0x238e8c['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x3968fa[_0x7949('0x2b')]){case _0x7949('0x2c'):_0x3968fa['qs']=_0x8aca4e;break;case _0x7949('0x2a'):_0x3968fa[_0x7949('0x2d')]=_0x8aca4e;break;}return rp(_0x3968fa)[_0x7949('0x19')](function(_0x4f9cb2){logger[_0x7949('0x23')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0x7949('0x26')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x8aca4e['id'],_0x238e8c[_0x7949('0x2e')]));if(_0x4f9cb2[_0x7949('0x2d')][_0x7949('0x2f')]&&_0x4f9cb2['body'][_0x7949('0x2f')]!=_0x8aca4e[_0x7949('0x29')][_0x7949('0x2f')]){return _0x31d26e[_0x7949('0x16')][_0x7949('0x1a')]({'threadId':_0x4f9cb2[_0x7949('0x2d')][_0x7949('0x2f')]},{'where':{'id':_0x8aca4e['Interaction']['id']}});}else{return;}})['then'](function(){return _0x176e4e['update']({'read':!![]});})['catch'](function(_0x3c065c){logger[_0x7949('0x30')](_0x7949('0x24'),_0x7949('0x25'),util[_0x7949('0x31')](_0x3c065c,{'showHidden':![],'depth':null}));_0x5d27d6();});}else{_0x5d27d6();}})['finally'](function(){_0x5d27d6();});}else{_0x5d27d6();}}},'charset':_0x7949('0x32'),'collate':_0x7949('0x33')});};
\ No newline at end of file
+var _0x95f2=['Interaction','inspect','finally','utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird','rimraf','../../config/environment','./openchannelMessage.attributes','define','openchannel_messages','fti_openchannel_messages','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','findOne','OpenchannelInteractionId','createdAt','catch','error','secret','CmContact','describe','then','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','omit','POST','method','body','Message\x20%d\x20forwarded\x20to\x20%s','threadId'];(function(_0x8b01a5,_0x5d4e95){var _0x207c5f=function(_0x83cf17){while(--_0x83cf17){_0x8b01a5['push'](_0x8b01a5['shift']());}};_0x207c5f(++_0x5d4e95);}(_0x95f2,0x6d));var _0x295f=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0x95f2[_0x209ec9];return _0x129b1b;};'use strict';var _=require('lodash');var util=require(_0x295f('0x0'));var logger=require('../../config/logger')(_0x295f('0x1'));var moment=require(_0x295f('0x2'));var BPromise=require(_0x295f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x295f('0x4'));var config=require(_0x295f('0x5'));var attributes=require(_0x295f('0x6'));module['exports']=function(_0x60d088,_0x14d3b9){return _0x60d088[_0x295f('0x7')]('OpenchannelMessage',attributes,{'tableName':_0x295f('0x8'),'paranoid':![],'indexes':[{'name':_0x295f('0x9'),'fields':['body'],'type':_0x295f('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c8900,_0x82f44c,_0x195da0){var _0x593557=_0x60d088[_0x295f('0xb')];var _0x56cea7=_0x3c8900[_0x295f('0xc')]({'plain':!![]});if(_0x56cea7[_0x295f('0xd')][_0x295f('0xe')]()==='in'||_0x56cea7[_0x295f('0xd')][_0x295f('0xe')]()===_0x295f('0xf')&&!_0x56cea7['secret']&&!_[_0x295f('0x10')](_0x56cea7[_0x295f('0x11')])){_0x593557['OpenchannelInteraction'][_0x295f('0x12')]({'where':{'id':_0x56cea7[_0x295f('0x13')]}})['then'](function(_0x1a71ec){if(_0x1a71ec){_0x1a71ec['update']({'lastMsgAt':_0x56cea7[_0x295f('0x14')],'lastMsgDirection':_0x56cea7[_0x295f('0xd')]['toLowerCase']()});}})[_0x295f('0x15')](function(_0x5c0bc2){console[_0x295f('0x16')](_0x5c0bc2);});}if(_0x56cea7[_0x295f('0xd')]===_0x295f('0xf')&&!_0x56cea7[_0x295f('0x17')]){var _0x45f1cb;_0x593557[_0x295f('0x18')][_0x295f('0x19')]()[_0x295f('0x1a')](function(_0xa9465d){return _0x593557[_0x295f('0x1b')][_0x295f('0x1c')]({'where':{'id':_0x56cea7[_0x295f('0x1d')]},'include':[{'model':_0x593557[_0x295f('0x1e')],'as':_0x295f('0x1f'),'where':{'id':_0x56cea7[_0x295f('0x13')]},'limit':0x1,'include':[{'model':_0x593557['CmContact'],'as':_0x295f('0x20'),'attributes':_[_0x295f('0x21')](_0xa9465d)}]}]});})[_0x295f('0x1a')](function(_0x55d33b){_0x45f1cb=_0x55d33b[_0x295f('0xc')]({'plain':!![]});if(_0x45f1cb&&_0x45f1cb[_0x295f('0x22')]){logger[_0x295f('0x23')](_0x295f('0x24'),_0x295f('0x25'),util[_0x295f('0x26')](_0x295f('0x27'),_0x56cea7['id'],_0x45f1cb['replyUri']));if(_0x45f1cb['Interactions']&&_0x45f1cb['Interactions'][_0x295f('0x28')]){_0x56cea7['Interaction']=_[_0x295f('0x29')](_0x45f1cb[_0x295f('0x1f')][0x0],_0x295f('0x20'));_0x56cea7[_0x295f('0x20')]=_0x45f1cb[_0x295f('0x1f')][0x0][_0x295f('0x20')];}var _0x82f44c={'method':_0x295f('0x2a'),'uri':encodeURI(_0x45f1cb['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x82f44c[_0x295f('0x2b')]){case'GET':_0x82f44c['qs']=_0x56cea7;break;case _0x295f('0x2a'):_0x82f44c[_0x295f('0x2c')]=_0x56cea7;break;}return rp(_0x82f44c)[_0x295f('0x1a')](function(_0x2ffcc9){logger[_0x295f('0x23')](_0x295f('0x24'),_0x295f('0x25'),util[_0x295f('0x26')](_0x295f('0x2d'),_0x56cea7['id'],_0x45f1cb[_0x295f('0x22')]));if(_0x2ffcc9[_0x295f('0x2c')][_0x295f('0x2e')]&&_0x2ffcc9[_0x295f('0x2c')]['threadId']!=_0x56cea7[_0x295f('0x2f')]['threadId']){return _0x593557[_0x295f('0x1e')]['update']({'threadId':_0x2ffcc9[_0x295f('0x2c')][_0x295f('0x2e')]},{'where':{'id':_0x56cea7[_0x295f('0x2f')]['id']}});}else{return;}})[_0x295f('0x1a')](function(){return _0x3c8900['update']({'read':!![]});})[_0x295f('0x15')](function(_0x499daa){logger[_0x295f('0x16')](_0x295f('0x24'),'afterCreate',util[_0x295f('0x30')](_0x499daa,{'showHidden':![],'depth':null}));_0x195da0();});}else{_0x195da0();}})[_0x295f('0x31')](function(){_0x195da0();});}else{_0x195da0();}}},'charset':_0x295f('0x32'),'collate':_0x295f('0x33')});};
\ No newline at end of file
index 6ba537e..71f1fbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x366776,_0x11ce2b){var _0x1476fa=function(_0x35acca){while(--_0x35acca){_0x366776['push'](_0x366776['shift']());}};_0x1476fa(++_0x11ce2b);}(_0x0b0e,0x187));var _0xe0b0=function(_0x487496,_0x249683){_0x487496=_0x487496-0x0;var _0x539dc8=_0x0b0e[_0x487496];return _0x539dc8;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
+var _0x5f66=['stringify','error','code','message','info','result','OpenchannelMessage','create','body','options','raw','CreateOpenchannelMessage','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x173062,_0x1d09bd){var _0x3b2cdd=function(_0x5d748b){while(--_0x5d748b){_0x173062['push'](_0x173062['shift']());}};_0x3b2cdd(++_0x1d09bd);}(_0x5f66,0x1a0));var _0x65f6=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5f66[_0x432682];return _0x463d05;};'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});config['redis']=_[_0x65f6('0x9')](config[_0x65f6('0xa')],{'host':_0x65f6('0xb'),'port':0x18eb});var socket=require(_0x65f6('0xc'))(new Redis(config[_0x65f6('0xa')]));require(_0x65f6('0xd'))['register'](socket);function respondWithRpcPromise(_0x5123ee,_0x18fea1,_0x2f6d5b){return new BPromise(function(_0x264647,_0x25c416){return client['request'](_0x5123ee,_0x2f6d5b)[_0x65f6('0xe')](function(_0x571436){logger['info'](_0x65f6('0xf'),_0x18fea1,'request\x20sent');logger[_0x65f6('0x10')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x18fea1,_0x65f6('0x11'),JSON[_0x65f6('0x12')](_0x571436));if(_0x571436[_0x65f6('0x13')]){if(_0x571436[_0x65f6('0x13')][_0x65f6('0x14')]===0x1f4){logger[_0x65f6('0x13')](_0x65f6('0xf'),_0x18fea1,_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);return _0x25c416(_0x571436[_0x65f6('0x13')]['message']);}logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x571436['error'][_0x65f6('0x15')]);return _0x264647(_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);}else{logger[_0x65f6('0x16')](_0x65f6('0xf'),_0x18fea1,_0x65f6('0x11'));_0x264647(_0x571436[_0x65f6('0x17')][_0x65f6('0x15')]);}})['catch'](function(_0x4d79a1){logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x4d79a1);_0x25c416(_0x4d79a1);});});}exports['CreateOpenchannelMessage']=function(_0x5c5b91){var _0x365159=this;return new Promise(function(_0x21ea88,_0x5114a4){return db[_0x65f6('0x18')][_0x65f6('0x19')](_0x5c5b91[_0x65f6('0x1a')],{'raw':_0x5c5b91[_0x65f6('0x1b')]?_0x5c5b91[_0x65f6('0x1b')][_0x65f6('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x197a49){logger['info']('CreateOpenchannelMessage',_0x5c5b91);logger[_0x65f6('0x10')](_0x65f6('0x1d'),_0x5c5b91,JSON['stringify'](_0x197a49));_0x21ea88(_0x197a49);})[_0x65f6('0x1e')](function(_0x471a33){logger[_0x65f6('0x13')](_0x65f6('0x1d'),_0x471a33['message'],_0x5c5b91);_0x5114a4(_0x365159[_0x65f6('0x13')](0x1f4,_0x471a33[_0x65f6('0x15')]));});});};
\ No newline at end of file
index c77fbdd..f5ac3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['save','remove','update','emit','removeListener','register','openchannelMessage:','./openchannelMessage.events'];(function(_0x5a7618,_0x3f44c2){var _0x12dc65=function(_0x3cc4cd){while(--_0x3cc4cd){_0x5a7618['push'](_0x5a7618['shift']());}};_0x12dc65(++_0x3f44c2);}(_0x4745,0x1e7));var _0x5474=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x4745[_0xbe200f];return _0x192597;};'use strict';var OpenchannelMessageEvents=require(_0x5474('0x0'));var events=[_0x5474('0x1'),_0x5474('0x2'),_0x5474('0x3')];function createListener(_0x9ba40a,_0xa40879){return function(_0x4bd69d){_0xa40879[_0x5474('0x4')](_0x9ba40a,_0x4bd69d);};}function removeListener(_0x28d8aa,_0x39fb9b){return function(){OpenchannelMessageEvents[_0x5474('0x5')](_0x28d8aa,_0x39fb9b);};}exports[_0x5474('0x6')]=function(_0x4e7ce7){for(var _0x3d1e1=0x0,_0x431f81=events['length'];_0x3d1e1<_0x431f81;_0x3d1e1++){var _0x13929f=events[_0x3d1e1];var _0x5d778b=createListener(_0x5474('0x7')+_0x13929f,_0x4e7ce7);OpenchannelMessageEvents['on'](_0x13929f,_0x5d778b);}};
\ No newline at end of file
+var _0x2353=['update','removeListener','register','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x268ad0,_0x50c35b){var _0x4619ea=function(_0x51b35f){while(--_0x51b35f){_0x268ad0['push'](_0x268ad0['shift']());}};_0x4619ea(++_0x50c35b);}(_0x2353,0xe3));var _0x3235=function(_0x5c1d31,_0x346643){_0x5c1d31=_0x5c1d31-0x0;var _0x5edf2c=_0x2353[_0x5c1d31];return _0x5edf2c;};'use strict';var OpenchannelMessageEvents=require(_0x3235('0x0'));var events=['save','remove',_0x3235('0x1')];function createListener(_0x1a446d,_0x1960c6){return function(_0x1c5b30){_0x1960c6['emit'](_0x1a446d,_0x1c5b30);};}function removeListener(_0x26e442,_0x378df4){return function(){OpenchannelMessageEvents[_0x3235('0x2')](_0x26e442,_0x378df4);};}exports[_0x3235('0x3')]=function(_0x22e9b8){for(var _0x513570=0x0,_0x2ee681=events[_0x3235('0x4')];_0x513570<_0x2ee681;_0x513570++){var _0x36d66a=events[_0x513570];var _0x34c975=createListener(_0x3235('0x5')+_0x36d66a,_0x22e9b8);OpenchannelMessageEvents['on'](_0x36d66a,_0x34c975);}};
\ No newline at end of file
index 2e4feca..142cdb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79b0=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./openchannelQueue.controller','index','isAuthenticated','describe','get','/:id','show','/:id/members','/:id/teams','getAgents','post','create','addAgents','update','delete','removeTeams','/:id/users','removeAgents','exports'];(function(_0x492aad,_0x431bf6){var _0x5f0b58=function(_0x186f02){while(--_0x186f02){_0x492aad['push'](_0x492aad['shift']());}};_0x5f0b58(++_0x431bf6);}(_0x79b0,0x16c));var _0x079b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x79b0[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x079b('0x0'));var path=require(_0x079b('0x1'));var timeout=require(_0x079b('0x2'));var express=require(_0x079b('0x3'));var router=express[_0x079b('0x4')]();var fs_extra=require(_0x079b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x079b('0x6'));var config=require('../../config/environment');var controller=require(_0x079b('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x079b('0x8')]);router['get']('/describe',auth[_0x079b('0x9')](),controller[_0x079b('0xa')]);router[_0x079b('0xb')](_0x079b('0xc'),auth[_0x079b('0x9')](),controller[_0x079b('0xd')]);router['get'](_0x079b('0xe'),auth[_0x079b('0x9')](),controller['getMembers']);router['get'](_0x079b('0xf'),auth[_0x079b('0x9')](),controller['getTeams']);router[_0x079b('0xb')]('/:id/users',auth[_0x079b('0x9')](),controller[_0x079b('0x10')]);router[_0x079b('0x11')]('/',auth[_0x079b('0x9')](),controller[_0x079b('0x12')]);router['post'](_0x079b('0xf'),auth[_0x079b('0x9')](),controller['addTeams']);router[_0x079b('0x11')]('/:id/users',auth[_0x079b('0x9')](),controller[_0x079b('0x13')]);router['put']('/:id',auth[_0x079b('0x9')](),controller[_0x079b('0x14')]);router[_0x079b('0x15')](_0x079b('0xc'),auth[_0x079b('0x9')](),controller['destroy']);router[_0x079b('0x15')]('/:id/teams',auth[_0x079b('0x9')](),controller[_0x079b('0x16')]);router['delete'](_0x079b('0x17'),auth[_0x079b('0x9')](),controller[_0x079b('0x18')]);module[_0x079b('0x19')]=router;
\ No newline at end of file
+var _0xe7eb=['update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put'];(function(_0x171942,_0x2ab0aa){var _0x21fdb5=function(_0x2bd74b){while(--_0x2bd74b){_0x171942['push'](_0x171942['shift']());}};_0x21fdb5(++_0x2ab0aa);}(_0xe7eb,0xf6));var _0xbe7e=function(_0x487fe6,_0x551302){_0x487fe6=_0x487fe6-0x0;var _0xd5f992=_0xe7eb[_0x487fe6];return _0xd5f992;};'use strict';var multer=require(_0xbe7e('0x0'));var util=require('util');var path=require(_0xbe7e('0x1'));var timeout=require(_0xbe7e('0x2'));var express=require(_0xbe7e('0x3'));var router=express['Router']();var fs_extra=require(_0xbe7e('0x4'));var auth=require(_0xbe7e('0x5'));var interaction=require(_0xbe7e('0x6'));var config=require(_0xbe7e('0x7'));var controller=require('./openchannelQueue.controller');router[_0xbe7e('0x8')]('/',auth[_0xbe7e('0x9')](),controller['index']);router[_0xbe7e('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xbe7e('0xa')]);router[_0xbe7e('0x8')](_0xbe7e('0xb'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0xc')]);router['get'](_0xbe7e('0xd'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0xe')]);router['get'](_0xbe7e('0xf'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x10')]);router[_0xbe7e('0x8')](_0xbe7e('0x11'),auth['isAuthenticated'](),controller[_0xbe7e('0x12')]);router[_0xbe7e('0x13')]('/',auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x14')]);router[_0xbe7e('0x13')](_0xbe7e('0xf'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x15')]);router[_0xbe7e('0x13')](_0xbe7e('0x11'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x16')]);router[_0xbe7e('0x17')](_0xbe7e('0xb'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x18')]);router[_0xbe7e('0x19')]('/:id',auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x1a')]);router[_0xbe7e('0x19')](_0xbe7e('0xf'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x1b')]);router[_0xbe7e('0x19')](_0xbe7e('0x11'),auth[_0xbe7e('0x9')](),controller[_0xbe7e('0x1c')]);module[_0xbe7e('0x1d')]=router;
\ No newline at end of file
index 1f05f3a..9b5dd30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b73=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x123953,_0x30ced1){var _0x307d9c=function(_0x29f28d){while(--_0x29f28d){_0x123953['push'](_0x123953['shift']());}};_0x307d9c(++_0x30ced1);}(_0x6b73,0xdb));var _0x36b7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6b73[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x36b7('0x0'));module[_0x36b7('0x1')]={'name':{'type':Sequelize[_0x36b7('0x2')],'unique':_0x36b7('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x36b7('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x36b7('0x5')](_0x36b7('0x6'),_0x36b7('0x7'),_0x36b7('0x8'))}};
\ No newline at end of file
+var _0xdece=['exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x4677f3,_0x107835){var _0x1ad1a3=function(_0x5a26ee){while(--_0x5a26ee){_0x4677f3['push'](_0x4677f3['shift']());}};_0x1ad1a3(++_0x107835);}(_0xdece,0x18b));var _0xedec=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xdece[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0xedec('0x0'));module[_0xedec('0x1')]={'name':{'type':Sequelize[_0xedec('0x2')],'unique':_0xedec('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xedec('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xedec('0x5')](_0xedec('0x6'),_0xedec('0x7'),_0xedec('0x8'))}};
\ No newline at end of file
index 09b1983..fbd3d81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd2f=['limit','count','set','Content-Range','apply','save','update','then','get','OpenchannelQueues','UserProfileResource','destroy','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','keys','filters','intersection','query','model','fields','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','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','getMembers','findOne','hasOwnProperty','OpenchannelQueueId','findAll','User','findAndCountAll','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','all','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','undefined'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xdd2f,0x6e));var _0xfdd2=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xdd2f[_0x565c49];return _0x20ca34;};'use strict';var emlformat=require(_0xfdd2('0x0'));var rimraf=require(_0xfdd2('0x1'));var zipdir=require(_0xfdd2('0x2'));var jsonpatch=require(_0xfdd2('0x3'));var rp=require(_0xfdd2('0x4'));var moment=require(_0xfdd2('0x5'));var BPromise=require(_0xfdd2('0x6'));var Mustache=require(_0xfdd2('0x7'));var util=require(_0xfdd2('0x8'));var path=require(_0xfdd2('0x9'));var sox=require(_0xfdd2('0xa'));var csv=require(_0xfdd2('0xb'));var ejs=require(_0xfdd2('0xc'));var fs=require('fs');var fs_extra=require(_0xfdd2('0xd'));var _=require(_0xfdd2('0xe'));var squel=require(_0xfdd2('0xf'));var crypto=require(_0xfdd2('0x10'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfdd2('0x11'));var Papa=require(_0xfdd2('0x12'));var Redis=require(_0xfdd2('0x13'));var authService=require(_0xfdd2('0x14'));var qs=require(_0xfdd2('0x15'));var as=require(_0xfdd2('0x16'));var hardwareService=require(_0xfdd2('0x17'));var logger=require(_0xfdd2('0x18'))('api');var utils=require(_0xfdd2('0x19'));var config=require(_0xfdd2('0x1a'));var licenseUtil=require(_0xfdd2('0x1b'));var db=require('../../mysqldb')['db'];config[_0xfdd2('0x1c')]=_['defaults'](config[_0xfdd2('0x1c')],{'host':_0xfdd2('0x1d'),'port':0x18eb});var socket=require(_0xfdd2('0x1e'))(new Redis(config[_0xfdd2('0x1c')]));require(_0xfdd2('0x1f'))[_0xfdd2('0x20')](socket);function respondWithStatusCode(_0x4b1963,_0x3fb75f){_0x3fb75f=_0x3fb75f||0xcc;return function(_0x50731a){if(_0x50731a){return _0x4b1963[_0xfdd2('0x21')](_0x3fb75f);}return _0x4b1963[_0xfdd2('0x22')](_0x3fb75f)[_0xfdd2('0x23')]();};}function respondWithResult(_0x245459,_0x54d797){_0x54d797=_0x54d797||0xc8;return function(_0x5b340b){if(_0x5b340b){return _0x245459[_0xfdd2('0x22')](_0x54d797)[_0xfdd2('0x24')](_0x5b340b);}};}function respondWithFilteredResult(_0x136991,_0x58c634){return function(_0x3992a9){if(_0x3992a9){var _0x43caca=typeof _0x58c634[_0xfdd2('0x25')]===_0xfdd2('0x26')&&typeof _0x58c634[_0xfdd2('0x27')]===_0xfdd2('0x26');var _0x5c87f9=_0x3992a9[_0xfdd2('0x28')];var _0x2c8f53=_0x43caca?0x0:_0x58c634[_0xfdd2('0x25')];var _0x2f44f0=_0x43caca?_0x3992a9[_0xfdd2('0x28')]:_0x58c634[_0xfdd2('0x25')]+_0x58c634[_0xfdd2('0x27')];var _0x38ed41;if(_0x2f44f0>=_0x5c87f9){_0x2f44f0=_0x5c87f9;_0x38ed41=0xc8;}else{_0x38ed41=0xce;}_0x136991[_0xfdd2('0x22')](_0x38ed41);return _0x136991[_0xfdd2('0x29')](_0xfdd2('0x2a'),_0x2c8f53+'-'+_0x2f44f0+'/'+_0x5c87f9)[_0xfdd2('0x24')](_0x3992a9);}return null;};}function patchUpdates(_0x356ea4){return function(_0xe8109){try{jsonpatch[_0xfdd2('0x2b')](_0xe8109,_0x356ea4,!![]);}catch(_0x2b777b){return BPromise['reject'](_0x2b777b);}return _0xe8109[_0xfdd2('0x2c')]();};}function saveUpdates(_0x403670,_0x12c376){return function(_0x23f441){if(_0x23f441){return _0x23f441[_0xfdd2('0x2d')](_0x403670)[_0xfdd2('0x2e')](function(_0x494a04){return _0x494a04;});}return null;};}function removeEntity(_0x1ab90a,_0x3c8182){return function(_0xf2527){if(_0xf2527){return _0xf2527['destroy']()[_0xfdd2('0x2e')](function(){var _0x2d123d=_0xf2527[_0xfdd2('0x2f')]({'plain':!![]});var _0x11859a=_0xfdd2('0x30');return db[_0xfdd2('0x31')][_0xfdd2('0x32')]({'where':{'type':_0x11859a,'resourceId':_0x2d123d['id']}})[_0xfdd2('0x2e')](function(){return _0xf2527;});})[_0xfdd2('0x2e')](function(){_0x1ab90a[_0xfdd2('0x22')](0xcc)[_0xfdd2('0x23')]();});}};}function handleEntityNotFound(_0x698177,_0x5145c4){return function(_0x2d3bcd){if(!_0x2d3bcd){_0x698177['sendStatus'](0x194);}return _0x2d3bcd;};}function handleError(_0x16dee2,_0x26b9c1){_0x26b9c1=_0x26b9c1||0x1f4;return function(_0x359da7){logger[_0xfdd2('0x33')](_0x359da7[_0xfdd2('0x34')]);if(_0x359da7['name']){delete _0x359da7[_0xfdd2('0x35')];}_0x16dee2['status'](_0x26b9c1)[_0xfdd2('0x36')](_0x359da7);};}exports[_0xfdd2('0x37')]=function(_0x5d9b22,_0x22008f){var _0x2bdad6={},_0x3ca77e={},_0x561090={'count':0x0,'rows':[]};var _0x256497=_[_0xfdd2('0x38')](db[_0xfdd2('0x39')][_0xfdd2('0x3a')],function(_0x306652){return{'name':_0x306652[_0xfdd2('0x3b')],'type':_0x306652[_0xfdd2('0x3c')][_0xfdd2('0x3d')]};});_0x3ca77e['model']=_[_0xfdd2('0x38')](_0x256497,_0xfdd2('0x35'));_0x3ca77e['query']=_[_0xfdd2('0x3e')](_0x5d9b22['query']);_0x3ca77e[_0xfdd2('0x3f')]=_[_0xfdd2('0x40')](_0x3ca77e['model'],_0x3ca77e[_0xfdd2('0x41')]);_0x2bdad6['attributes']=_[_0xfdd2('0x40')](_0x3ca77e[_0xfdd2('0x42')],qs[_0xfdd2('0x43')](_0x5d9b22['query']['fields']));_0x2bdad6[_0xfdd2('0x44')]=_0x2bdad6[_0xfdd2('0x44')]['length']?_0x2bdad6[_0xfdd2('0x44')]:_0x3ca77e[_0xfdd2('0x42')];if(!_0x5d9b22['query']['hasOwnProperty']('nolimit')){_0x2bdad6['limit']=qs[_0xfdd2('0x27')](_0x5d9b22[_0xfdd2('0x41')][_0xfdd2('0x27')]);_0x2bdad6[_0xfdd2('0x25')]=qs[_0xfdd2('0x25')](_0x5d9b22[_0xfdd2('0x41')]['offset']);}_0x2bdad6[_0xfdd2('0x45')]=qs[_0xfdd2('0x46')](_0x5d9b22[_0xfdd2('0x41')][_0xfdd2('0x46')]);_0x2bdad6[_0xfdd2('0x47')]=qs[_0xfdd2('0x3f')](_[_0xfdd2('0x48')](_0x5d9b22[_0xfdd2('0x41')],_0x3ca77e[_0xfdd2('0x3f')]),_0x256497);if(_0x5d9b22[_0xfdd2('0x41')][_0xfdd2('0x49')]){_0x2bdad6['where']=_[_0xfdd2('0x4a')](_0x2bdad6[_0xfdd2('0x47')],{'$or':_['map'](_0x256497,function(_0x223cbb){if(_0x223cbb[_0xfdd2('0x3c')]!==_0xfdd2('0x4b')){var _0x5f574a={};_0x5f574a[_0x223cbb[_0xfdd2('0x35')]]={'$like':'%'+_0x5d9b22['query']['filter']+'%'};return _0x5f574a;}})});}_0x2bdad6=_[_0xfdd2('0x4a')]({},_0x2bdad6,_0x5d9b22[_0xfdd2('0x4c')]);var _0x302528={'where':_0x2bdad6[_0xfdd2('0x47')]};return db[_0xfdd2('0x39')][_0xfdd2('0x28')](_0x302528)[_0xfdd2('0x2e')](function(_0x10ad9e){_0x561090['count']=_0x10ad9e;if(_0x5d9b22['query'][_0xfdd2('0x4d')]){_0x2bdad6[_0xfdd2('0x4e')]=[{'all':!![]}];}return db[_0xfdd2('0x39')]['findAll'](_0x2bdad6);})[_0xfdd2('0x2e')](function(_0x565ab7){_0x561090[_0xfdd2('0x4f')]=_0x565ab7;return _0x561090;})[_0xfdd2('0x2e')](respondWithFilteredResult(_0x22008f,_0x2bdad6))[_0xfdd2('0x50')](handleError(_0x22008f,null));};exports[_0xfdd2('0x51')]=function(_0x7e8898,_0x5b1e34){var _0x53c253={'raw':!![],'where':{'id':_0x7e8898[_0xfdd2('0x52')]['id']}},_0x1736a2={};_0x1736a2[_0xfdd2('0x42')]=_[_0xfdd2('0x3e')](db['OpenchannelQueue'][_0xfdd2('0x3a')]);_0x1736a2[_0xfdd2('0x41')]=_['keys'](_0x7e8898[_0xfdd2('0x41')]);_0x1736a2['filters']=_[_0xfdd2('0x40')](_0x1736a2[_0xfdd2('0x42')],_0x1736a2[_0xfdd2('0x41')]);_0x53c253[_0xfdd2('0x44')]=_['intersection'](_0x1736a2[_0xfdd2('0x42')],qs[_0xfdd2('0x43')](_0x7e8898['query'][_0xfdd2('0x43')]));_0x53c253[_0xfdd2('0x44')]=_0x53c253[_0xfdd2('0x44')][_0xfdd2('0x53')]?_0x53c253[_0xfdd2('0x44')]:_0x1736a2[_0xfdd2('0x42')];if(_0x7e8898[_0xfdd2('0x41')]['includeAll']){_0x53c253['include']=[{'all':!![]}];}_0x53c253=_[_0xfdd2('0x4a')]({},_0x53c253,_0x7e8898[_0xfdd2('0x4c')]);return db['OpenchannelQueue'][_0xfdd2('0x54')](_0x53c253)[_0xfdd2('0x2e')](handleEntityNotFound(_0x5b1e34,null))[_0xfdd2('0x2e')](respondWithResult(_0x5b1e34,null))[_0xfdd2('0x50')](handleError(_0x5b1e34,null));};exports[_0xfdd2('0x55')]=function(_0x9f0095,_0x4ec57c){return db['OpenchannelQueue'][_0xfdd2('0x55')](_0x9f0095[_0xfdd2('0x56')],{})[_0xfdd2('0x2e')](function(_0x41c3b0){var _0x1bfba7=_0x9f0095[_0xfdd2('0x57')][_0xfdd2('0x2f')]({'plain':!![]});if(!_0x1bfba7)throw new Error(_0xfdd2('0x58'));if(_0x1bfba7[_0xfdd2('0x59')]===_0xfdd2('0x57')){var _0x347652=_0x41c3b0[_0xfdd2('0x2f')]({'plain':!![]});var _0x59d972=_0xfdd2('0x30');return db[_0xfdd2('0x5a')]['find']({'where':{'name':_0x59d972,'userProfileId':_0x1bfba7[_0xfdd2('0x5b')]},'raw':!![]})['then'](function(_0x196d5a){if(_0x196d5a&&_0x196d5a[_0xfdd2('0x5c')]===0x0){return db[_0xfdd2('0x31')][_0xfdd2('0x55')]({'name':_0x347652['name'],'resourceId':_0x347652['id'],'type':_0x196d5a[_0xfdd2('0x35')],'sectionId':_0x196d5a['id']},{})['then'](function(){return _0x41c3b0;});}else{return _0x41c3b0;}})[_0xfdd2('0x50')](function(_0x305ce2){logger[_0xfdd2('0x33')](_0xfdd2('0x5d'),_0x305ce2);throw _0x305ce2;});}return _0x41c3b0;})[_0xfdd2('0x2e')](respondWithResult(_0x4ec57c,0xc9))[_0xfdd2('0x50')](handleError(_0x4ec57c,null));};exports[_0xfdd2('0x2d')]=function(_0x2ed9c0,_0x5cb117){if(_0x2ed9c0['body']['id']){delete _0x2ed9c0[_0xfdd2('0x56')]['id'];}return db[_0xfdd2('0x39')][_0xfdd2('0x54')]({'where':{'id':_0x2ed9c0[_0xfdd2('0x52')]['id']}})[_0xfdd2('0x2e')](handleEntityNotFound(_0x5cb117,null))[_0xfdd2('0x2e')](saveUpdates(_0x2ed9c0[_0xfdd2('0x56')],null))[_0xfdd2('0x2e')](respondWithResult(_0x5cb117,null))[_0xfdd2('0x50')](handleError(_0x5cb117,null));};exports[_0xfdd2('0x32')]=function(_0x1df932,_0xa4f33b){return db[_0xfdd2('0x39')][_0xfdd2('0x54')]({'where':{'id':_0x1df932['params']['id']}})[_0xfdd2('0x2e')](handleEntityNotFound(_0xa4f33b,null))[_0xfdd2('0x2e')](removeEntity(_0xa4f33b,null))[_0xfdd2('0x50')](handleError(_0xa4f33b,null));};exports['describe']=function(_0x372c9f,_0x3f87a9){return db['OpenchannelQueue'][_0xfdd2('0x5e')]()['then'](respondWithResult(_0x3f87a9,null))[_0xfdd2('0x50')](handleError(_0x3f87a9,null));};exports[_0xfdd2('0x5f')]=function(_0x1a3261,_0x1a5acc,_0xda64b1){var _0x3f8fbd={'raw':!![],'where':{}},_0x3db50b={},_0x2a00a9;return db['OpenchannelQueue'][_0xfdd2('0x60')]({'where':{'id':_0x1a3261[_0xfdd2('0x52')]['id']}})['then'](handleEntityNotFound(_0x1a5acc,null))['then'](function(_0x1561e1){if(_0x1561e1){_0x2a00a9=_0x1561e1[_0xfdd2('0x2f')]({'plain':!![]});_0x3db50b[_0xfdd2('0x42')]=_[_0xfdd2('0x3e')](db['UserOpenchannelQueue'][_0xfdd2('0x3a')]);_0x3db50b[_0xfdd2('0x41')]=_['keys'](_0x1a3261['query']);_0x3db50b[_0xfdd2('0x3f')]=_[_0xfdd2('0x40')](_0x3db50b[_0xfdd2('0x42')],_0x3db50b['query']);_0x3f8fbd['attributes']=_[_0xfdd2('0x40')](_0x3db50b['model'],qs[_0xfdd2('0x43')](_0x1a3261[_0xfdd2('0x41')]['fields']));_0x3f8fbd['attributes']=_0x3f8fbd['attributes'][_0xfdd2('0x53')]?_0x3f8fbd['attributes']:_0x3db50b['model'];if(!_0x1a3261[_0xfdd2('0x41')][_0xfdd2('0x61')]('nolimit')){_0x3f8fbd[_0xfdd2('0x27')]=qs[_0xfdd2('0x27')](_0x1a3261[_0xfdd2('0x41')][_0xfdd2('0x27')]);_0x3f8fbd['offset']=qs[_0xfdd2('0x25')](_0x1a3261[_0xfdd2('0x41')][_0xfdd2('0x25')]);}_0x3f8fbd[_0xfdd2('0x45')]=qs[_0xfdd2('0x46')](_0x1a3261['query'][_0xfdd2('0x46')]);_0x3f8fbd[_0xfdd2('0x47')]=qs[_0xfdd2('0x3f')](_['pick'](_0x1a3261[_0xfdd2('0x41')],_0x3db50b[_0xfdd2('0x3f')]));_0x3f8fbd[_0xfdd2('0x47')][_0xfdd2('0x62')]=_0x1561e1['id'];if(_0x1a3261[_0xfdd2('0x41')]['filter']){_0x3f8fbd[_0xfdd2('0x47')]=_['merge'](_0x3f8fbd['where'],{'$or':_[_0xfdd2('0x38')](_0x3f8fbd[_0xfdd2('0x44')],function(_0x5b298f){var _0x1f8d6e={};_0x1f8d6e[_0x5b298f]={'$like':'%'+_0x1a3261['query'][_0xfdd2('0x49')]+'%'};return _0x1f8d6e;})});}_0x3f8fbd=_[_0xfdd2('0x4a')]({},_0x3f8fbd,_0x1a3261[_0xfdd2('0x4c')]);return db['UserOpenchannelQueue'][_0xfdd2('0x63')](_0x3f8fbd);}})[_0xfdd2('0x2e')](function(_0x5dbded){if(_0x5dbded){return db[_0xfdd2('0x64')][_0xfdd2('0x65')]({'where':{'id':_[_0xfdd2('0x38')](_0x5dbded,'UserId'),'role':_0xfdd2('0x66')},'attributes':['id','name',_0xfdd2('0x67'),_0xfdd2('0x68'),_0xfdd2('0x69')]});}})[_0xfdd2('0x2e')](function(_0x3cdc6c){if(_0x3cdc6c){return{'count':_0x3cdc6c[_0xfdd2('0x28')],'rows':_[_0xfdd2('0x38')](_0x3cdc6c[_0xfdd2('0x4f')],function(_0x4e61f2){return{'membername':_0x4e61f2['name'],'UserId':_0x4e61f2['id'],'queue_name':_0x2a00a9[_0xfdd2('0x35')],'OpenchannelQueueId':_0x2a00a9['id'],'interface':util[_0xfdd2('0x6a')](_0xfdd2('0x6b'),_0xfdd2('0x6c'),_0x4e61f2[_0xfdd2('0x35')]),'penalty':0x0,'paused':_0x4e61f2[_0xfdd2('0x67')],'createdAt':_0x4e61f2[_0xfdd2('0x69')],'updatedAt':_0x4e61f2[_0xfdd2('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xfdd2('0x2e')](respondWithFilteredResult(_0x1a5acc,_0x3f8fbd))['catch'](handleError(_0x1a5acc,null));};exports[_0xfdd2('0x6d')]=function(_0xc00e04,_0x36b582,_0x49e962){var _0x168bd8={};var _0xf5a8dd={};var _0x2c26f5;var _0x5c26c6;return db['OpenchannelQueue'][_0xfdd2('0x60')]({'where':{'id':_0xc00e04[_0xfdd2('0x52')]['id']}})['then'](handleEntityNotFound(_0x36b582,null))[_0xfdd2('0x2e')](function(_0x3de1ca){if(_0x3de1ca){_0x2c26f5=_0x3de1ca;_0xf5a8dd[_0xfdd2('0x42')]=_[_0xfdd2('0x3e')](db[_0xfdd2('0x6e')][_0xfdd2('0x3a')]);_0xf5a8dd[_0xfdd2('0x41')]=_[_0xfdd2('0x3e')](_0xc00e04['query']);_0xf5a8dd[_0xfdd2('0x3f')]=_['intersection'](_0xf5a8dd[_0xfdd2('0x42')],_0xf5a8dd['query']);_0x168bd8[_0xfdd2('0x44')]=_[_0xfdd2('0x40')](_0xf5a8dd[_0xfdd2('0x42')],qs[_0xfdd2('0x43')](_0xc00e04['query'][_0xfdd2('0x43')]));_0x168bd8['attributes']=_0x168bd8[_0xfdd2('0x44')]['length']?_0x168bd8[_0xfdd2('0x44')]:_0xf5a8dd[_0xfdd2('0x42')];_0x168bd8[_0xfdd2('0x45')]=qs[_0xfdd2('0x46')](_0xc00e04[_0xfdd2('0x41')][_0xfdd2('0x46')]);_0x168bd8[_0xfdd2('0x47')]=qs[_0xfdd2('0x3f')](_[_0xfdd2('0x48')](_0xc00e04[_0xfdd2('0x41')],_0xf5a8dd[_0xfdd2('0x3f')]));if(_0xc00e04[_0xfdd2('0x41')][_0xfdd2('0x49')]){_0x168bd8['where']=_[_0xfdd2('0x4a')](_0x168bd8[_0xfdd2('0x47')],{'$or':_[_0xfdd2('0x38')](_0x168bd8['attributes'],function(_0x1905f6){var _0x113602={};_0x113602[_0x1905f6]={'$like':'%'+_0xc00e04[_0xfdd2('0x41')][_0xfdd2('0x49')]+'%'};return _0x113602;})});}_0x168bd8=_['merge']({},_0x168bd8,_0xc00e04['options']);return _0x2c26f5['getTeams'](_0x168bd8);}})[_0xfdd2('0x2e')](function(_0x1564ee){if(_0x1564ee){_0x5c26c6=_0x1564ee['length'];if(!_0xc00e04['query']['hasOwnProperty']('nolimit')){_0x168bd8[_0xfdd2('0x27')]=qs['limit'](_0xc00e04[_0xfdd2('0x41')][_0xfdd2('0x27')]);_0x168bd8[_0xfdd2('0x25')]=qs['offset'](_0xc00e04[_0xfdd2('0x41')][_0xfdd2('0x25')]);}return _0x2c26f5[_0xfdd2('0x6d')](_0x168bd8);}})[_0xfdd2('0x2e')](function(_0x1c0d0b){if(_0x1c0d0b){return _0x1c0d0b?{'count':_0x5c26c6,'rows':_0x1c0d0b}:null;}})[_0xfdd2('0x2e')](respondWithResult(_0x36b582,null))['catch'](handleError(_0x36b582,null));};exports[_0xfdd2('0x6f')]=function(_0x1d1f18,_0x361a90,_0x423737){var _0x539c74=_0x1d1f18[_0xfdd2('0x56')][_0xfdd2('0x70')];return db[_0xfdd2('0x6e')][_0xfdd2('0x63')]({'where':{'id':_0x539c74},'attributes':['id'],'include':[{'model':db[_0xfdd2('0x64')],'as':_0xfdd2('0x71'),'attributes':['id',_0xfdd2('0x35'),_0xfdd2('0x72'),_0xfdd2('0x73'),_0xfdd2('0x74')],'raw':!![]}]})[_0xfdd2('0x2e')](function(_0x58eb74){if(_0x58eb74){var _0x2cb1d0=_[_0xfdd2('0x75')](_0x58eb74,function(_0x32c9b7){var _0x5acf14=_0x32c9b7[_0xfdd2('0x2f')]({'plain':!![]});return _0x5acf14[_0xfdd2('0x71')];});return db['OpenchannelQueue'][_0xfdd2('0x54')]({'where':{'id':_0x1d1f18['params']['id']}})[_0xfdd2('0x2e')](function(_0xaf845e){return db[_0xfdd2('0x76')]['transaction'](function(_0x504893){return _0xaf845e[_0xfdd2('0x6f')](_0x539c74,{'transaction':_0x504893})[_0xfdd2('0x2e')](function(){return BPromise[_0xfdd2('0x77')](_0x2cb1d0,function(_0x55063a){return db['UserOpenchannelQueue'][_0xfdd2('0x78')]({'where':{'UserId':_0x55063a['id'],'OpenchannelQueueId':_0x1d1f18[_0xfdd2('0x52')]['id']},'transaction':_0x504893});});})[_0xfdd2('0x2e')](function(){_0x2cb1d0['forEach'](function(_0x1f18e1){socket[_0xfdd2('0x79')](_0xfdd2('0x7a'),{'UserId':_0x1f18e1['id'],'OpenchannelQueueId':_0xaf845e['id']});});});});});}})['then'](respondWithStatusCode(_0x361a90,null))[_0xfdd2('0x50')](handleError(_0x361a90,null));};exports[_0xfdd2('0x7b')]=function(_0x55c3d4,_0x195eba,_0x24c952){return db['Team']['findAll']({'where':{'id':_0x55c3d4[_0xfdd2('0x41')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xfdd2('0x71'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x195eba,null))[_0xfdd2('0x2e')](function(_0x5501ee){var _0x15c13b=_[_0xfdd2('0x38')](_0x5501ee,'id');var _0x433598=[];var _0x597e0c=[];var _0x4a0b41=squel[_0xfdd2('0x7c')]();_0x4a0b41['field'](_0xfdd2('0x7d'))[_0xfdd2('0x7e')](_0xfdd2('0x7f'),'tq')[_0xfdd2('0x80')](_0xfdd2('0x81'),'ut',_0xfdd2('0x82'))[_0xfdd2('0x47')](_0xfdd2('0x83'),_0x55c3d4[_0xfdd2('0x52')]['id']);for(var _0x305595=0x0;_0x305595<_0x5501ee[_0xfdd2('0x53')];_0x305595+=0x1){let _0x37b6ef=_0x5501ee[_0x305595];for(var _0x4a6e6c=0x0;_0x4a6e6c<_0x37b6ef[_0xfdd2('0x71')][_0xfdd2('0x53')];_0x4a6e6c+=0x1){let _0x30b855=_0x37b6ef['Agents'][_0x4a6e6c];var _0x2b72e5=_0x4a0b41['clone']();_0x2b72e5['where'](_0xfdd2('0x84'),_0x30b855['id']);_0x597e0c[_0xfdd2('0x85')](db[_0xfdd2('0x76')][_0xfdd2('0x41')](_0x2b72e5[_0xfdd2('0x86')](),{'type':db[_0xfdd2('0x76')]['QueryTypes'][_0xfdd2('0x87')]})[_0xfdd2('0x2e')](function(_0x5e97f1){if(_0x5e97f1[_0xfdd2('0x53')]===0x1){return _0x30b855['id'];}else{var _0x4a69f8=_[_0xfdd2('0x88')](_[_0xfdd2('0x38')](_0x5e97f1,_0xfdd2('0x89')),function(_0x8eddd5){return _[_0xfdd2('0x8a')](_0x15c13b,_0x8eddd5);});if(_0x4a69f8){return _0x30b855['id'];}}}));}}return BPromise[_0xfdd2('0x8b')](_0x597e0c)[_0xfdd2('0x2e')](function(_0x2b23d2){_0x433598=_(_0x433598)['union'](_0x2b23d2)['compact']()['value']();return db[_0xfdd2('0x39')][_0xfdd2('0x54')]({'where':{'id':_0x55c3d4[_0xfdd2('0x52')]['id']}})[_0xfdd2('0x2e')](function(_0x46090c){return db[_0xfdd2('0x76')]['transaction'](function(_0x36f3fe){return _0x46090c[_0xfdd2('0x7b')](_0x55c3d4['query'][_0xfdd2('0x70')],{'transaction':_0x36f3fe})['then'](function(){if(!_[_0xfdd2('0x8c')](_0x433598)){return _0x46090c[_0xfdd2('0x8d')](_0x433598,{'transaction':_0x36f3fe});}})[_0xfdd2('0x2e')](function(){_0x433598['forEach'](function(_0x4e43ff){socket[_0xfdd2('0x79')](_0xfdd2('0x8e'),{'UserId':_0x4e43ff,'OpenchannelQueueId':_0x46090c['id']});});});});});});})[_0xfdd2('0x2e')](respondWithStatusCode(_0x195eba,null))[_0xfdd2('0x50')](handleError(_0x195eba,null));};exports[_0xfdd2('0x8f')]=function(_0x30bc5f,_0x29a5e4,_0x1fff00){return db['OpenchannelQueue'][_0xfdd2('0x54')]({'where':{'id':_0x30bc5f[_0xfdd2('0x52')]['id']}})[_0xfdd2('0x2e')](handleEntityNotFound(_0x29a5e4,null))[_0xfdd2('0x2e')](function(_0x2d3582){if(_0x2d3582){return _0x2d3582[_0xfdd2('0x8f')](_0x30bc5f[_0xfdd2('0x56')][_0xfdd2('0x70')],_[_0xfdd2('0x90')](_0x30bc5f[_0xfdd2('0x56')],[_0xfdd2('0x70'),'id'])||{})[_0xfdd2('0x91')](function(_0x149399){for(var _0x571b51=0x0;_0x571b51<_0x30bc5f['body'][_0xfdd2('0x70')]['length'];_0x571b51+=0x1){socket[_0xfdd2('0x79')](_0xfdd2('0x7a'),{'UserId':Number(_0x30bc5f[_0xfdd2('0x56')][_0xfdd2('0x70')][_0x571b51]),'OpenchannelQueueId':Number(_0x30bc5f[_0xfdd2('0x52')]['id'])});}return _0x149399;});}})[_0xfdd2('0x2e')](respondWithResult(_0x29a5e4,null))['catch'](handleError(_0x29a5e4,null));};exports[_0xfdd2('0x8d')]=function(_0x50254f,_0x42c344,_0x3176c8){return db[_0xfdd2('0x39')][_0xfdd2('0x54')]({'where':{'id':_0x50254f[_0xfdd2('0x52')]['id']}})['then'](handleEntityNotFound(_0x42c344,null))[_0xfdd2('0x2e')](function(_0x58ede8){if(_0x58ede8){return _0x58ede8[_0xfdd2('0x8d')](_0x50254f[_0xfdd2('0x41')][_0xfdd2('0x70')])[_0xfdd2('0x2e')](function(){if(_[_0xfdd2('0x92')](_0x50254f[_0xfdd2('0x41')]['ids'])){for(var _0x1bba0c=0x0;_0x1bba0c<_0x50254f['query']['ids'][_0xfdd2('0x53')];_0x1bba0c+=0x1){socket[_0xfdd2('0x79')]('userOpenchannelQueue:remove',{'UserId':Number(_0x50254f[_0xfdd2('0x41')]['ids'][_0x1bba0c]),'OpenchannelQueueId':Number(_0x50254f[_0xfdd2('0x52')]['id'])});}}else{socket[_0xfdd2('0x79')](_0xfdd2('0x8e'),{'UserId':Number(_0x50254f[_0xfdd2('0x41')]['ids']),'OpenchannelQueueId':Number(_0x50254f[_0xfdd2('0x52')]['id'])});}});}})[_0xfdd2('0x2e')](respondWithStatusCode(_0x42c344,null))[_0xfdd2('0x50')](handleError(_0x42c344,null));};exports['getAgents']=function(_0x24e0c5,_0x304db7,_0x5905e5){var _0x1399ac={};var _0x11b43f={};var _0x411a74;var _0x416693;return db[_0xfdd2('0x39')][_0xfdd2('0x60')]({'where':{'id':_0x24e0c5[_0xfdd2('0x52')]['id']}})[_0xfdd2('0x2e')](handleEntityNotFound(_0x304db7,null))[_0xfdd2('0x2e')](function(_0x5a11fc){if(_0x5a11fc){_0x411a74=_0x5a11fc;_0x11b43f[_0xfdd2('0x42')]=_['keys'](db[_0xfdd2('0x64')][_0xfdd2('0x3a')]);_0x11b43f[_0xfdd2('0x41')]=_['keys'](_0x24e0c5[_0xfdd2('0x41')]);_0x11b43f[_0xfdd2('0x3f')]=_[_0xfdd2('0x40')](_0x11b43f['model'],_0x11b43f[_0xfdd2('0x41')]);_0x1399ac['attributes']=_[_0xfdd2('0x40')](_0x11b43f[_0xfdd2('0x42')],qs[_0xfdd2('0x43')](_0x24e0c5[_0xfdd2('0x41')][_0xfdd2('0x43')]));_0x1399ac[_0xfdd2('0x44')]=_0x1399ac[_0xfdd2('0x44')][_0xfdd2('0x53')]?_0x1399ac['attributes']:_0x11b43f['model'];_0x1399ac['order']=qs['sort'](_0x24e0c5[_0xfdd2('0x41')][_0xfdd2('0x46')]);_0x1399ac[_0xfdd2('0x47')]=qs[_0xfdd2('0x3f')](_[_0xfdd2('0x48')](_0x24e0c5[_0xfdd2('0x41')],_0x11b43f[_0xfdd2('0x3f')]));if(_0x24e0c5['query'][_0xfdd2('0x49')]){_0x1399ac[_0xfdd2('0x47')]=_[_0xfdd2('0x4a')](_0x1399ac['where'],{'$or':_[_0xfdd2('0x38')](_0x1399ac[_0xfdd2('0x44')],function(_0x2158fe){var _0x4a932b={};_0x4a932b[_0x2158fe]={'$like':'%'+_0x24e0c5[_0xfdd2('0x41')]['filter']+'%'};return _0x4a932b;})});}_0x1399ac=_['merge']({},_0x1399ac,_0x24e0c5['options']);return _0x411a74[_0xfdd2('0x93')](_0x1399ac);}})[_0xfdd2('0x2e')](function(_0x34da2b){if(_0x34da2b){_0x416693=_0x34da2b[_0xfdd2('0x53')];if(!_0x24e0c5['query'][_0xfdd2('0x61')](_0xfdd2('0x94'))){_0x1399ac[_0xfdd2('0x27')]=qs[_0xfdd2('0x27')](_0x24e0c5[_0xfdd2('0x41')][_0xfdd2('0x27')]);_0x1399ac[_0xfdd2('0x25')]=qs[_0xfdd2('0x25')](_0x24e0c5[_0xfdd2('0x41')][_0xfdd2('0x25')]);}return _0x411a74[_0xfdd2('0x93')](_0x1399ac);}})[_0xfdd2('0x2e')](function(_0x3aced9){if(_0x3aced9){return _0x3aced9?{'count':_0x416693,'rows':_0x3aced9}:null;}})[_0xfdd2('0x2e')](respondWithResult(_0x304db7,null))['catch'](handleError(_0x304db7,null));};
\ No newline at end of file
+var _0xd0be=['includes','all','union','value','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','userOpenchannelQueue:save','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','json','offset','count','limit','set','reject','save','then','get','OpenchannelQueues','UserProfileResource','destroy','error','stack','name','send','map','OpenchannelQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','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','describe','getMembers','findOne','UserOpenchannelQueue','hasOwnProperty','OpenchannelQueueId','findAll','User','findAndCountAll','UserId','agent','openchannelPause','format','%s/%s','getTeams','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','ids','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xd0be,0x92));var _0xed0b=function(_0xac9d1e,_0x318d05){_0xac9d1e=_0xac9d1e-0x0;var _0x2a22d3=_0xd0be[_0xac9d1e];return _0x2a22d3;};'use strict';var emlformat=require(_0xed0b('0x0'));var rimraf=require(_0xed0b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed0b('0x2'));var rp=require(_0xed0b('0x3'));var moment=require('moment');var BPromise=require(_0xed0b('0x4'));var Mustache=require('mustache');var util=require(_0xed0b('0x5'));var path=require(_0xed0b('0x6'));var sox=require(_0xed0b('0x7'));var csv=require(_0xed0b('0x8'));var ejs=require(_0xed0b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xed0b('0xa'));var squel=require(_0xed0b('0xb'));var crypto=require(_0xed0b('0xc'));var jsforce=require(_0xed0b('0xd'));var deskjs=require(_0xed0b('0xe'));var toCsv=require('to-csv');var querystring=require(_0xed0b('0xf'));var Papa=require(_0xed0b('0x10'));var Redis=require(_0xed0b('0x11'));var authService=require(_0xed0b('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed0b('0x13'));var logger=require(_0xed0b('0x14'))('api');var utils=require(_0xed0b('0x15'));var config=require(_0xed0b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xed0b('0x17'))['db'];config[_0xed0b('0x18')]=_[_0xed0b('0x19')](config[_0xed0b('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xed0b('0x1a'))(new Redis(config[_0xed0b('0x18')]));require(_0xed0b('0x1b'))['register'](socket);function respondWithStatusCode(_0x8ca2ed,_0x2be0ba){_0x2be0ba=_0x2be0ba||0xcc;return function(_0x2d925e){if(_0x2d925e){return _0x8ca2ed[_0xed0b('0x1c')](_0x2be0ba);}return _0x8ca2ed[_0xed0b('0x1d')](_0x2be0ba)[_0xed0b('0x1e')]();};}function respondWithResult(_0xf131f5,_0x323bcf){_0x323bcf=_0x323bcf||0xc8;return function(_0x5344d7){if(_0x5344d7){return _0xf131f5[_0xed0b('0x1d')](_0x323bcf)[_0xed0b('0x1f')](_0x5344d7);}};}function respondWithFilteredResult(_0x15e192,_0x16a26c){return function(_0x4722e9){if(_0x4722e9){var _0x35a229=typeof _0x16a26c[_0xed0b('0x20')]==='undefined'&&typeof _0x16a26c['limit']==='undefined';var _0x5bf013=_0x4722e9[_0xed0b('0x21')];var _0x34daa7=_0x35a229?0x0:_0x16a26c[_0xed0b('0x20')];var _0x4bd840=_0x35a229?_0x4722e9[_0xed0b('0x21')]:_0x16a26c['offset']+_0x16a26c[_0xed0b('0x22')];var _0x25d2b2;if(_0x4bd840>=_0x5bf013){_0x4bd840=_0x5bf013;_0x25d2b2=0xc8;}else{_0x25d2b2=0xce;}_0x15e192[_0xed0b('0x1d')](_0x25d2b2);return _0x15e192[_0xed0b('0x23')]('Content-Range',_0x34daa7+'-'+_0x4bd840+'/'+_0x5bf013)['json'](_0x4722e9);}return null;};}function patchUpdates(_0x3e6e15){return function(_0x5346c0){try{jsonpatch['apply'](_0x5346c0,_0x3e6e15,!![]);}catch(_0x36caac){return BPromise[_0xed0b('0x24')](_0x36caac);}return _0x5346c0[_0xed0b('0x25')]();};}function saveUpdates(_0x2cddbd,_0x4661ad){return function(_0x1c4cf7){if(_0x1c4cf7){return _0x1c4cf7['update'](_0x2cddbd)[_0xed0b('0x26')](function(_0x570a9d){return _0x570a9d;});}return null;};}function removeEntity(_0x47691c,_0x22d2e5){return function(_0x3875c6){if(_0x3875c6){return _0x3875c6['destroy']()[_0xed0b('0x26')](function(){var _0x1bd08b=_0x3875c6[_0xed0b('0x27')]({'plain':!![]});var _0x259ef8=_0xed0b('0x28');return db[_0xed0b('0x29')][_0xed0b('0x2a')]({'where':{'type':_0x259ef8,'resourceId':_0x1bd08b['id']}})[_0xed0b('0x26')](function(){return _0x3875c6;});})['then'](function(){_0x47691c[_0xed0b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1104e3,_0x2f8105){return function(_0x53a979){if(!_0x53a979){_0x1104e3[_0xed0b('0x1c')](0x194);}return _0x53a979;};}function handleError(_0x3f03b1,_0x3a7c53){_0x3a7c53=_0x3a7c53||0x1f4;return function(_0x1d3879){logger[_0xed0b('0x2b')](_0x1d3879[_0xed0b('0x2c')]);if(_0x1d3879[_0xed0b('0x2d')]){delete _0x1d3879['name'];}_0x3f03b1[_0xed0b('0x1d')](_0x3a7c53)[_0xed0b('0x2e')](_0x1d3879);};}exports['index']=function(_0xb94894,_0x15eba8){var _0x10ba77={},_0x5760de={},_0x186080={'count':0x0,'rows':[]};var _0x126d6c=_[_0xed0b('0x2f')](db[_0xed0b('0x30')][_0xed0b('0x31')],function(_0x23bbb9){return{'name':_0x23bbb9[_0xed0b('0x32')],'type':_0x23bbb9['type'][_0xed0b('0x33')]};});_0x5760de[_0xed0b('0x34')]=_[_0xed0b('0x2f')](_0x126d6c,_0xed0b('0x2d'));_0x5760de[_0xed0b('0x35')]=_[_0xed0b('0x36')](_0xb94894[_0xed0b('0x35')]);_0x5760de[_0xed0b('0x37')]=_[_0xed0b('0x38')](_0x5760de[_0xed0b('0x34')],_0x5760de['query']);_0x10ba77[_0xed0b('0x39')]=_['intersection'](_0x5760de[_0xed0b('0x34')],qs[_0xed0b('0x3a')](_0xb94894[_0xed0b('0x35')][_0xed0b('0x3a')]));_0x10ba77['attributes']=_0x10ba77[_0xed0b('0x39')][_0xed0b('0x3b')]?_0x10ba77['attributes']:_0x5760de['model'];if(!_0xb94894[_0xed0b('0x35')]['hasOwnProperty'](_0xed0b('0x3c'))){_0x10ba77[_0xed0b('0x22')]=qs['limit'](_0xb94894[_0xed0b('0x35')][_0xed0b('0x22')]);_0x10ba77[_0xed0b('0x20')]=qs[_0xed0b('0x20')](_0xb94894[_0xed0b('0x35')][_0xed0b('0x20')]);}_0x10ba77[_0xed0b('0x3d')]=qs[_0xed0b('0x3e')](_0xb94894[_0xed0b('0x35')][_0xed0b('0x3e')]);_0x10ba77[_0xed0b('0x3f')]=qs['filters'](_[_0xed0b('0x40')](_0xb94894[_0xed0b('0x35')],_0x5760de[_0xed0b('0x37')]),_0x126d6c);if(_0xb94894[_0xed0b('0x35')][_0xed0b('0x41')]){_0x10ba77[_0xed0b('0x3f')]=_[_0xed0b('0x42')](_0x10ba77[_0xed0b('0x3f')],{'$or':_['map'](_0x126d6c,function(_0x5c348f){if(_0x5c348f['type']!==_0xed0b('0x43')){var _0x48b705={};_0x48b705[_0x5c348f['name']]={'$like':'%'+_0xb94894[_0xed0b('0x35')][_0xed0b('0x41')]+'%'};return _0x48b705;}})});}_0x10ba77=_[_0xed0b('0x42')]({},_0x10ba77,_0xb94894[_0xed0b('0x44')]);var _0x10963f={'where':_0x10ba77[_0xed0b('0x3f')]};return db[_0xed0b('0x30')][_0xed0b('0x21')](_0x10963f)[_0xed0b('0x26')](function(_0x3bab5b){_0x186080['count']=_0x3bab5b;if(_0xb94894[_0xed0b('0x35')]['includeAll']){_0x10ba77[_0xed0b('0x45')]=[{'all':!![]}];}return db[_0xed0b('0x30')]['findAll'](_0x10ba77);})[_0xed0b('0x26')](function(_0x49d2b3){_0x186080[_0xed0b('0x46')]=_0x49d2b3;return _0x186080;})[_0xed0b('0x26')](respondWithFilteredResult(_0x15eba8,_0x10ba77))[_0xed0b('0x47')](handleError(_0x15eba8,null));};exports[_0xed0b('0x48')]=function(_0x2d3d44,_0x4c1c25){var _0x4915d7={'raw':!![],'where':{'id':_0x2d3d44[_0xed0b('0x49')]['id']}},_0x376d63={};_0x376d63[_0xed0b('0x34')]=_['keys'](db['OpenchannelQueue'][_0xed0b('0x31')]);_0x376d63[_0xed0b('0x35')]=_[_0xed0b('0x36')](_0x2d3d44[_0xed0b('0x35')]);_0x376d63[_0xed0b('0x37')]=_[_0xed0b('0x38')](_0x376d63[_0xed0b('0x34')],_0x376d63['query']);_0x4915d7[_0xed0b('0x39')]=_['intersection'](_0x376d63['model'],qs[_0xed0b('0x3a')](_0x2d3d44[_0xed0b('0x35')][_0xed0b('0x3a')]));_0x4915d7['attributes']=_0x4915d7[_0xed0b('0x39')]['length']?_0x4915d7[_0xed0b('0x39')]:_0x376d63[_0xed0b('0x34')];if(_0x2d3d44[_0xed0b('0x35')][_0xed0b('0x4a')]){_0x4915d7[_0xed0b('0x45')]=[{'all':!![]}];}_0x4915d7=_[_0xed0b('0x42')]({},_0x4915d7,_0x2d3d44[_0xed0b('0x44')]);return db[_0xed0b('0x30')][_0xed0b('0x4b')](_0x4915d7)[_0xed0b('0x26')](handleEntityNotFound(_0x4c1c25,null))[_0xed0b('0x26')](respondWithResult(_0x4c1c25,null))[_0xed0b('0x47')](handleError(_0x4c1c25,null));};exports[_0xed0b('0x4c')]=function(_0x1f2228,_0xd91632){return db[_0xed0b('0x30')]['create'](_0x1f2228[_0xed0b('0x4d')],{})['then'](function(_0x3029eb){var _0x38d26a=_0x1f2228[_0xed0b('0x4e')][_0xed0b('0x27')]({'plain':!![]});if(!_0x38d26a)throw new Error(_0xed0b('0x4f'));if(_0x38d26a[_0xed0b('0x50')]==='user'){var _0x335a13=_0x3029eb[_0xed0b('0x27')]({'plain':!![]});var _0x39b03c=_0xed0b('0x28');return db['UserProfileSection'][_0xed0b('0x4b')]({'where':{'name':_0x39b03c,'userProfileId':_0x38d26a[_0xed0b('0x51')]},'raw':!![]})[_0xed0b('0x26')](function(_0x338962){if(_0x338962&&_0x338962['autoAssociation']===0x0){return db[_0xed0b('0x29')][_0xed0b('0x4c')]({'name':_0x335a13['name'],'resourceId':_0x335a13['id'],'type':_0x338962[_0xed0b('0x2d')],'sectionId':_0x338962['id']},{})[_0xed0b('0x26')](function(){return _0x3029eb;});}else{return _0x3029eb;}})[_0xed0b('0x47')](function(_0x7db7c6){logger[_0xed0b('0x2b')](_0xed0b('0x52'),_0x7db7c6);throw _0x7db7c6;});}return _0x3029eb;})[_0xed0b('0x26')](respondWithResult(_0xd91632,0xc9))[_0xed0b('0x47')](handleError(_0xd91632,null));};exports[_0xed0b('0x53')]=function(_0x3a73b4,_0x1ea0da){if(_0x3a73b4['body']['id']){delete _0x3a73b4['body']['id'];}return db['OpenchannelQueue'][_0xed0b('0x4b')]({'where':{'id':_0x3a73b4[_0xed0b('0x49')]['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0x1ea0da,null))['then'](saveUpdates(_0x3a73b4[_0xed0b('0x4d')],null))['then'](respondWithResult(_0x1ea0da,null))['catch'](handleError(_0x1ea0da,null));};exports[_0xed0b('0x2a')]=function(_0x1e6296,_0xe073f9){return db['OpenchannelQueue'][_0xed0b('0x4b')]({'where':{'id':_0x1e6296['params']['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0xe073f9,null))['then'](removeEntity(_0xe073f9,null))[_0xed0b('0x47')](handleError(_0xe073f9,null));};exports[_0xed0b('0x54')]=function(_0x2e9c71,_0x211b42){return db[_0xed0b('0x30')]['describe']()[_0xed0b('0x26')](respondWithResult(_0x211b42,null))[_0xed0b('0x47')](handleError(_0x211b42,null));};exports[_0xed0b('0x55')]=function(_0x51f656,_0x51d0c7,_0x243cc0){var _0x256c2d={'raw':!![],'where':{}},_0x57a15c={},_0x56f20d;return db[_0xed0b('0x30')][_0xed0b('0x56')]({'where':{'id':_0x51f656['params']['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0x51d0c7,null))[_0xed0b('0x26')](function(_0x13d9c4){if(_0x13d9c4){_0x56f20d=_0x13d9c4[_0xed0b('0x27')]({'plain':!![]});_0x57a15c[_0xed0b('0x34')]=_[_0xed0b('0x36')](db[_0xed0b('0x57')][_0xed0b('0x31')]);_0x57a15c[_0xed0b('0x35')]=_[_0xed0b('0x36')](_0x51f656[_0xed0b('0x35')]);_0x57a15c[_0xed0b('0x37')]=_[_0xed0b('0x38')](_0x57a15c['model'],_0x57a15c[_0xed0b('0x35')]);_0x256c2d[_0xed0b('0x39')]=_[_0xed0b('0x38')](_0x57a15c[_0xed0b('0x34')],qs[_0xed0b('0x3a')](_0x51f656[_0xed0b('0x35')][_0xed0b('0x3a')]));_0x256c2d[_0xed0b('0x39')]=_0x256c2d['attributes'][_0xed0b('0x3b')]?_0x256c2d[_0xed0b('0x39')]:_0x57a15c[_0xed0b('0x34')];if(!_0x51f656[_0xed0b('0x35')][_0xed0b('0x58')](_0xed0b('0x3c'))){_0x256c2d['limit']=qs[_0xed0b('0x22')](_0x51f656[_0xed0b('0x35')][_0xed0b('0x22')]);_0x256c2d['offset']=qs['offset'](_0x51f656[_0xed0b('0x35')][_0xed0b('0x20')]);}_0x256c2d[_0xed0b('0x3d')]=qs[_0xed0b('0x3e')](_0x51f656[_0xed0b('0x35')][_0xed0b('0x3e')]);_0x256c2d[_0xed0b('0x3f')]=qs[_0xed0b('0x37')](_[_0xed0b('0x40')](_0x51f656[_0xed0b('0x35')],_0x57a15c[_0xed0b('0x37')]));_0x256c2d[_0xed0b('0x3f')][_0xed0b('0x59')]=_0x13d9c4['id'];if(_0x51f656[_0xed0b('0x35')][_0xed0b('0x41')]){_0x256c2d[_0xed0b('0x3f')]=_['merge'](_0x256c2d[_0xed0b('0x3f')],{'$or':_[_0xed0b('0x2f')](_0x256c2d[_0xed0b('0x39')],function(_0x11bcea){var _0x3aa620={};_0x3aa620[_0x11bcea]={'$like':'%'+_0x51f656[_0xed0b('0x35')][_0xed0b('0x41')]+'%'};return _0x3aa620;})});}_0x256c2d=_[_0xed0b('0x42')]({},_0x256c2d,_0x51f656['options']);return db[_0xed0b('0x57')][_0xed0b('0x5a')](_0x256c2d);}})[_0xed0b('0x26')](function(_0x5b3819){if(_0x5b3819){return db[_0xed0b('0x5b')][_0xed0b('0x5c')]({'where':{'id':_[_0xed0b('0x2f')](_0x5b3819,_0xed0b('0x5d')),'role':_0xed0b('0x5e')},'attributes':['id','name',_0xed0b('0x5f'),'updatedAt','createdAt']});}})[_0xed0b('0x26')](function(_0xf0f3fe){if(_0xf0f3fe){return{'count':_0xf0f3fe['count'],'rows':_['map'](_0xf0f3fe[_0xed0b('0x46')],function(_0x211a23){return{'membername':_0x211a23[_0xed0b('0x2d')],'UserId':_0x211a23['id'],'queue_name':_0x56f20d[_0xed0b('0x2d')],'OpenchannelQueueId':_0x56f20d['id'],'interface':util[_0xed0b('0x60')](_0xed0b('0x61'),'SIP',_0x211a23['name']),'penalty':0x0,'paused':_0x211a23[_0xed0b('0x5f')],'createdAt':_0x211a23['createdAt'],'updatedAt':_0x211a23['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x51d0c7,_0x256c2d))[_0xed0b('0x47')](handleError(_0x51d0c7,null));};exports[_0xed0b('0x62')]=function(_0x2425e5,_0x12519e,_0x3b0fdb){var _0x3d8c2c={};var _0x197d42={};var _0x5701b1;var _0x488f90;return db[_0xed0b('0x30')][_0xed0b('0x56')]({'where':{'id':_0x2425e5['params']['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0x12519e,null))[_0xed0b('0x26')](function(_0x1851e1){if(_0x1851e1){_0x5701b1=_0x1851e1;_0x197d42['model']=_[_0xed0b('0x36')](db['Team'][_0xed0b('0x31')]);_0x197d42['query']=_['keys'](_0x2425e5['query']);_0x197d42[_0xed0b('0x37')]=_[_0xed0b('0x38')](_0x197d42[_0xed0b('0x34')],_0x197d42['query']);_0x3d8c2c[_0xed0b('0x39')]=_[_0xed0b('0x38')](_0x197d42[_0xed0b('0x34')],qs['fields'](_0x2425e5['query']['fields']));_0x3d8c2c[_0xed0b('0x39')]=_0x3d8c2c['attributes']['length']?_0x3d8c2c[_0xed0b('0x39')]:_0x197d42[_0xed0b('0x34')];_0x3d8c2c[_0xed0b('0x3d')]=qs['sort'](_0x2425e5[_0xed0b('0x35')]['sort']);_0x3d8c2c[_0xed0b('0x3f')]=qs[_0xed0b('0x37')](_['pick'](_0x2425e5['query'],_0x197d42[_0xed0b('0x37')]));if(_0x2425e5[_0xed0b('0x35')][_0xed0b('0x41')]){_0x3d8c2c[_0xed0b('0x3f')]=_[_0xed0b('0x42')](_0x3d8c2c[_0xed0b('0x3f')],{'$or':_[_0xed0b('0x2f')](_0x3d8c2c['attributes'],function(_0x571758){var _0x225c47={};_0x225c47[_0x571758]={'$like':'%'+_0x2425e5[_0xed0b('0x35')][_0xed0b('0x41')]+'%'};return _0x225c47;})});}_0x3d8c2c=_[_0xed0b('0x42')]({},_0x3d8c2c,_0x2425e5[_0xed0b('0x44')]);return _0x5701b1[_0xed0b('0x62')](_0x3d8c2c);}})[_0xed0b('0x26')](function(_0x3ed95a){if(_0x3ed95a){_0x488f90=_0x3ed95a[_0xed0b('0x3b')];if(!_0x2425e5[_0xed0b('0x35')][_0xed0b('0x58')](_0xed0b('0x3c'))){_0x3d8c2c[_0xed0b('0x22')]=qs[_0xed0b('0x22')](_0x2425e5[_0xed0b('0x35')][_0xed0b('0x22')]);_0x3d8c2c[_0xed0b('0x20')]=qs[_0xed0b('0x20')](_0x2425e5[_0xed0b('0x35')][_0xed0b('0x20')]);}return _0x5701b1['getTeams'](_0x3d8c2c);}})[_0xed0b('0x26')](function(_0x1f4b9f){if(_0x1f4b9f){return _0x1f4b9f?{'count':_0x488f90,'rows':_0x1f4b9f}:null;}})[_0xed0b('0x26')](respondWithResult(_0x12519e,null))[_0xed0b('0x47')](handleError(_0x12519e,null));};exports['addTeams']=function(_0x59e018,_0x3e4862,_0x3f357f){var _0x2a3fa3=_0x59e018[_0xed0b('0x4d')]['ids'];return db['Team'][_0xed0b('0x5a')]({'where':{'id':_0x2a3fa3},'attributes':['id'],'include':[{'model':db[_0xed0b('0x5b')],'as':_0xed0b('0x63'),'attributes':['id',_0xed0b('0x2d'),_0xed0b('0x64'),_0xed0b('0x65'),_0xed0b('0x66')],'raw':!![]}]})['then'](function(_0x1eab1e){if(_0x1eab1e){var _0x2ccba0=_['flatMap'](_0x1eab1e,function(_0xdd9798){var _0x3c5956=_0xdd9798[_0xed0b('0x27')]({'plain':!![]});return _0x3c5956[_0xed0b('0x63')];});return db[_0xed0b('0x30')][_0xed0b('0x4b')]({'where':{'id':_0x59e018['params']['id']}})[_0xed0b('0x26')](function(_0x5c4f5f){return db[_0xed0b('0x67')][_0xed0b('0x68')](function(_0x3420a2){return _0x5c4f5f['addTeams'](_0x2a3fa3,{'transaction':_0x3420a2})['then'](function(){return BPromise[_0xed0b('0x69')](_0x2ccba0,function(_0x3bb232){return db[_0xed0b('0x57')][_0xed0b('0x6a')]({'where':{'UserId':_0x3bb232['id'],'OpenchannelQueueId':_0x59e018[_0xed0b('0x49')]['id']},'transaction':_0x3420a2});});})[_0xed0b('0x26')](function(){_0x2ccba0[_0xed0b('0x6b')](function(_0x57b5f8){socket[_0xed0b('0x6c')]('userOpenchannelQueue:save',{'UserId':_0x57b5f8['id'],'OpenchannelQueueId':_0x5c4f5f['id']});});});});});}})[_0xed0b('0x26')](respondWithStatusCode(_0x3e4862,null))[_0xed0b('0x47')](handleError(_0x3e4862,null));};exports[_0xed0b('0x6d')]=function(_0x4d645e,_0x26f2b5,_0x5073a9){return db['Team'][_0xed0b('0x5a')]({'where':{'id':_0x4d645e[_0xed0b('0x35')][_0xed0b('0x6e')]},'attributes':['id'],'include':[{'model':db[_0xed0b('0x5b')],'as':_0xed0b('0x63'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x26f2b5,null))[_0xed0b('0x26')](function(_0x332ab4){var _0x3146d0=_[_0xed0b('0x2f')](_0x332ab4,'id');var _0x4a318a=[];var _0x1ab7d9=[];var _0x6a8d9=squel['select']();_0x6a8d9[_0xed0b('0x6f')](_0xed0b('0x70'))['from']('team_has_openchannel_queues','tq')[_0xed0b('0x71')](_0xed0b('0x72'),'ut',_0xed0b('0x73'))[_0xed0b('0x3f')](_0xed0b('0x74'),_0x4d645e[_0xed0b('0x49')]['id']);for(var _0x11ea56=0x0;_0x11ea56<_0x332ab4['length'];_0x11ea56+=0x1){let _0x50ba5b=_0x332ab4[_0x11ea56];for(var _0x32ecff=0x0;_0x32ecff<_0x50ba5b[_0xed0b('0x63')][_0xed0b('0x3b')];_0x32ecff+=0x1){let _0x5b2fec=_0x50ba5b['Agents'][_0x32ecff];var _0x401b49=_0x6a8d9[_0xed0b('0x75')]();_0x401b49[_0xed0b('0x3f')](_0xed0b('0x76'),_0x5b2fec['id']);_0x1ab7d9['push'](db[_0xed0b('0x67')][_0xed0b('0x35')](_0x401b49[_0xed0b('0x77')](),{'type':db[_0xed0b('0x67')][_0xed0b('0x78')][_0xed0b('0x79')]})[_0xed0b('0x26')](function(_0x36b531){if(_0x36b531['length']===0x1){return _0x5b2fec['id'];}else{var _0x5eda93=_[_0xed0b('0x7a')](_[_0xed0b('0x2f')](_0x36b531,_0xed0b('0x7b')),function(_0x7115d8){return _[_0xed0b('0x7c')](_0x3146d0,_0x7115d8);});if(_0x5eda93){return _0x5b2fec['id'];}}}));}}return BPromise[_0xed0b('0x7d')](_0x1ab7d9)[_0xed0b('0x26')](function(_0x434bc2){_0x4a318a=_(_0x4a318a)[_0xed0b('0x7e')](_0x434bc2)['compact']()[_0xed0b('0x7f')]();return db[_0xed0b('0x30')][_0xed0b('0x4b')]({'where':{'id':_0x4d645e[_0xed0b('0x49')]['id']}})['then'](function(_0x1159f9){return db['sequelize'][_0xed0b('0x68')](function(_0x2238b4){return _0x1159f9['removeTeams'](_0x4d645e[_0xed0b('0x35')][_0xed0b('0x6e')],{'transaction':_0x2238b4})[_0xed0b('0x26')](function(){if(!_[_0xed0b('0x80')](_0x4a318a)){return _0x1159f9[_0xed0b('0x81')](_0x4a318a,{'transaction':_0x2238b4});}})[_0xed0b('0x26')](function(){_0x4a318a[_0xed0b('0x6b')](function(_0x4af40a){socket[_0xed0b('0x6c')](_0xed0b('0x82'),{'UserId':_0x4af40a,'OpenchannelQueueId':_0x1159f9['id']});});});});});});})[_0xed0b('0x26')](respondWithStatusCode(_0x26f2b5,null))[_0xed0b('0x47')](handleError(_0x26f2b5,null));};exports[_0xed0b('0x83')]=function(_0x5cd68d,_0x181f46,_0x2e60c4){return db[_0xed0b('0x30')][_0xed0b('0x4b')]({'where':{'id':_0x5cd68d['params']['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0x181f46,null))[_0xed0b('0x26')](function(_0x27bd86){if(_0x27bd86){return _0x27bd86[_0xed0b('0x83')](_0x5cd68d[_0xed0b('0x4d')][_0xed0b('0x6e')],_[_0xed0b('0x84')](_0x5cd68d['body'],[_0xed0b('0x6e'),'id'])||{})['spread'](function(_0x371409){for(var _0x48deb7=0x0;_0x48deb7<_0x5cd68d['body'][_0xed0b('0x6e')]['length'];_0x48deb7+=0x1){socket[_0xed0b('0x6c')](_0xed0b('0x85'),{'UserId':Number(_0x5cd68d[_0xed0b('0x4d')][_0xed0b('0x6e')][_0x48deb7]),'OpenchannelQueueId':Number(_0x5cd68d[_0xed0b('0x49')]['id'])});}return _0x371409;});}})[_0xed0b('0x26')](respondWithResult(_0x181f46,null))[_0xed0b('0x47')](handleError(_0x181f46,null));};exports[_0xed0b('0x81')]=function(_0x325e91,_0x2e8301,_0x33d03c){return db[_0xed0b('0x30')][_0xed0b('0x4b')]({'where':{'id':_0x325e91['params']['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0x2e8301,null))['then'](function(_0x5770fe){if(_0x5770fe){return _0x5770fe[_0xed0b('0x81')](_0x325e91[_0xed0b('0x35')][_0xed0b('0x6e')])[_0xed0b('0x26')](function(){if(_['isArray'](_0x325e91[_0xed0b('0x35')][_0xed0b('0x6e')])){for(var _0x2acb4d=0x0;_0x2acb4d<_0x325e91[_0xed0b('0x35')][_0xed0b('0x6e')][_0xed0b('0x3b')];_0x2acb4d+=0x1){socket[_0xed0b('0x6c')](_0xed0b('0x82'),{'UserId':Number(_0x325e91[_0xed0b('0x35')][_0xed0b('0x6e')][_0x2acb4d]),'OpenchannelQueueId':Number(_0x325e91[_0xed0b('0x49')]['id'])});}}else{socket[_0xed0b('0x6c')](_0xed0b('0x82'),{'UserId':Number(_0x325e91[_0xed0b('0x35')][_0xed0b('0x6e')]),'OpenchannelQueueId':Number(_0x325e91[_0xed0b('0x49')]['id'])});}});}})[_0xed0b('0x26')](respondWithStatusCode(_0x2e8301,null))[_0xed0b('0x47')](handleError(_0x2e8301,null));};exports[_0xed0b('0x86')]=function(_0x5c20aa,_0xef2759,_0x41c78c){var _0x36e6c6={};var _0x3d8097={};var _0x3b467f;var _0x39e8af;return db[_0xed0b('0x30')][_0xed0b('0x56')]({'where':{'id':_0x5c20aa[_0xed0b('0x49')]['id']}})[_0xed0b('0x26')](handleEntityNotFound(_0xef2759,null))[_0xed0b('0x26')](function(_0x1c1539){if(_0x1c1539){_0x3b467f=_0x1c1539;_0x3d8097[_0xed0b('0x34')]=_['keys'](db[_0xed0b('0x5b')][_0xed0b('0x31')]);_0x3d8097[_0xed0b('0x35')]=_[_0xed0b('0x36')](_0x5c20aa['query']);_0x3d8097[_0xed0b('0x37')]=_['intersection'](_0x3d8097[_0xed0b('0x34')],_0x3d8097[_0xed0b('0x35')]);_0x36e6c6['attributes']=_[_0xed0b('0x38')](_0x3d8097[_0xed0b('0x34')],qs[_0xed0b('0x3a')](_0x5c20aa[_0xed0b('0x35')][_0xed0b('0x3a')]));_0x36e6c6['attributes']=_0x36e6c6[_0xed0b('0x39')][_0xed0b('0x3b')]?_0x36e6c6[_0xed0b('0x39')]:_0x3d8097['model'];_0x36e6c6[_0xed0b('0x3d')]=qs[_0xed0b('0x3e')](_0x5c20aa['query'][_0xed0b('0x3e')]);_0x36e6c6[_0xed0b('0x3f')]=qs[_0xed0b('0x37')](_[_0xed0b('0x40')](_0x5c20aa['query'],_0x3d8097[_0xed0b('0x37')]));if(_0x5c20aa[_0xed0b('0x35')]['filter']){_0x36e6c6[_0xed0b('0x3f')]=_[_0xed0b('0x42')](_0x36e6c6[_0xed0b('0x3f')],{'$or':_[_0xed0b('0x2f')](_0x36e6c6[_0xed0b('0x39')],function(_0xb970ea){var _0x16151c={};_0x16151c[_0xb970ea]={'$like':'%'+_0x5c20aa[_0xed0b('0x35')]['filter']+'%'};return _0x16151c;})});}_0x36e6c6=_[_0xed0b('0x42')]({},_0x36e6c6,_0x5c20aa[_0xed0b('0x44')]);return _0x3b467f[_0xed0b('0x86')](_0x36e6c6);}})[_0xed0b('0x26')](function(_0x3c5c65){if(_0x3c5c65){_0x39e8af=_0x3c5c65[_0xed0b('0x3b')];if(!_0x5c20aa['query'][_0xed0b('0x58')](_0xed0b('0x3c'))){_0x36e6c6[_0xed0b('0x22')]=qs[_0xed0b('0x22')](_0x5c20aa[_0xed0b('0x35')][_0xed0b('0x22')]);_0x36e6c6[_0xed0b('0x20')]=qs['offset'](_0x5c20aa['query'][_0xed0b('0x20')]);}return _0x3b467f[_0xed0b('0x86')](_0x36e6c6);}})[_0xed0b('0x26')](function(_0x8c4b2d){if(_0x8c4b2d){return _0x8c4b2d?{'count':_0x39e8af,'rows':_0x8c4b2d}:null;}})[_0xed0b('0x26')](respondWithResult(_0xef2759,null))[_0xed0b('0x47')](handleError(_0xef2759,null));};
\ No newline at end of file
index e7e408b..1c4bc1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a08=['emit','hasOwnProperty','hook','exports','setMaxListeners','save','remove'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x5a08,0xc1));var _0x85a0=function(_0x5262bb,_0x473282){_0x5262bb=_0x5262bb-0x0;var _0x830bb6=_0x5a08[_0x5262bb];return _0x830bb6;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x85a0('0x0')](0x0);var events={'afterCreate':_0x85a0('0x1'),'afterUpdate':'update','afterDestroy':_0x85a0('0x2')};function emitEvent(_0x5da100){return function(_0x2a5f0f,_0x1b9ba8,_0x2c68eb){OpenchannelQueueEvents[_0x85a0('0x3')](_0x5da100+':'+_0x2a5f0f['id'],_0x2a5f0f);OpenchannelQueueEvents[_0x85a0('0x3')](_0x5da100,_0x2a5f0f);_0x2c68eb(null);};}for(var e in events){if(events[_0x85a0('0x4')](e)){var event=events[e];OpenchannelQueue[_0x85a0('0x5')](e,emitEvent(event));}}module[_0x85a0('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x8c00=['exports','events','../../mysqldb','OpenchannelQueue','setMaxListeners','save','update','hasOwnProperty','hook'];(function(_0x1c9f76,_0x5762b0){var _0x2d2ddc=function(_0x20628b){while(--_0x20628b){_0x1c9f76['push'](_0x1c9f76['shift']());}};_0x2d2ddc(++_0x5762b0);}(_0x8c00,0x1de));var _0x08c0=function(_0x460dae,_0x3a907f){_0x460dae=_0x460dae-0x0;var _0x36e6d0=_0x8c00[_0x460dae];return _0x36e6d0;};'use strict';var EventEmitter=require(_0x08c0('0x0'));var OpenchannelQueue=require(_0x08c0('0x1'))['db'][_0x08c0('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x08c0('0x3')](0x0);var events={'afterCreate':_0x08c0('0x4'),'afterUpdate':_0x08c0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x155eee){return function(_0x4880b6,_0x30c3dd,_0xce9ee7){OpenchannelQueueEvents['emit'](_0x155eee+':'+_0x4880b6['id'],_0x4880b6);OpenchannelQueueEvents['emit'](_0x155eee,_0x4880b6);_0xce9ee7(null);};}for(var e in events){if(events[_0x08c0('0x6')](e)){var event=events[e];OpenchannelQueue[_0x08c0('0x7')](e,emitEvent(event));}}module[_0x08c0('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
index 0a0939d..44b9fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ba=['path','../../config/environment','exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x526437,_0x179956){var _0x4e7a94=function(_0x55198d){while(--_0x55198d){_0x526437['push'](_0x526437['shift']());}};_0x4e7a94(++_0x179956);}(_0xa3ba,0x159));var _0xaa3b=function(_0x5e77db,_0x356d1c){_0x5e77db=_0x5e77db-0x0;var _0x34b675=_0xa3ba[_0x5e77db];return _0x34b675;};'use strict';var _=require(_0xaa3b('0x0'));var util=require(_0xaa3b('0x1'));var logger=require(_0xaa3b('0x2'))(_0xaa3b('0x3'));var moment=require(_0xaa3b('0x4'));var BPromise=require(_0xaa3b('0x5'));var rp=require(_0xaa3b('0x6'));var fs=require('fs');var path=require(_0xaa3b('0x7'));var rimraf=require('rimraf');var config=require(_0xaa3b('0x8'));var attributes=require('./openchannelQueue.attributes');module[_0xaa3b('0x9')]=function(_0x825437,_0x523eb4){return _0x825437[_0xaa3b('0xa')]('OpenchannelQueue',attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa518=['./openchannelQueue.attributes','exports','define','openchannel_queues','lodash','util','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x5495de,_0x52404f){var _0x1e10c4=function(_0x1aba7b){while(--_0x1aba7b){_0x5495de['push'](_0x5495de['shift']());}};_0x1e10c4(++_0x52404f);}(_0xa518,0x9e));var _0x8a51=function(_0x4605dc,_0x3f7ae5){_0x4605dc=_0x4605dc-0x0;var _0x5d3e81=_0xa518[_0x4605dc];return _0x5d3e81;};'use strict';var _=require(_0x8a51('0x0'));var util=require(_0x8a51('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8a51('0x2'));var BPromise=require(_0x8a51('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8a51('0x4'));var rimraf=require(_0x8a51('0x5'));var config=require(_0x8a51('0x6'));var attributes=require(_0x8a51('0x7'));module[_0x8a51('0x8')]=function(_0x5cd3bc,_0x2047f9){return _0x5cd3bc[_0x8a51('0x9')]('OpenchannelQueue',attributes,{'tableName':_0x8a51('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b09fa1f..6d07696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9126=['OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','limit','map','include','model','attributes','ShowOpenchannelQueue','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info'];(function(_0x2fc8a0,_0x3cb528){var _0x500b32=function(_0x4d7021){while(--_0x4d7021){_0x2fc8a0['push'](_0x2fc8a0['shift']());}};_0x500b32(++_0x3cb528);}(_0x9126,0x68));var _0x6912=function(_0x53c889,_0x9a3069){_0x53c889=_0x53c889-0x0;var _0x4257a8=_0x9126[_0x53c889];return _0x4257a8;};'use strict';var _=require(_0x6912('0x0'));var util=require('util');var moment=require(_0x6912('0x1'));var BPromise=require('bluebird');var rs=require(_0x6912('0x2'));var fs=require('fs');var Redis=require(_0x6912('0x3'));var db=require(_0x6912('0x4'))['db'];var utils=require(_0x6912('0x5'));var logger=require('../../config/logger')(_0x6912('0x6'));var config=require(_0x6912('0x7'));var jayson=require(_0x6912('0x8'));var client=jayson[_0x6912('0x9')][_0x6912('0xa')]({'port':0x232a});config[_0x6912('0xb')]=_[_0x6912('0xc')](config[_0x6912('0xb')],{'host':_0x6912('0xd'),'port':0x18eb});var socket=require(_0x6912('0xe'))(new Redis(config[_0x6912('0xb')]));require('./openchannelQueue.socket')[_0x6912('0xf')](socket);function respondWithRpcPromise(_0x4b5b11,_0x44da17,_0x235915){return new BPromise(function(_0x2a8bb5,_0x4f540d){return client[_0x6912('0x10')](_0x4b5b11,_0x235915)[_0x6912('0x11')](function(_0x4bebf7){logger[_0x6912('0x12')](_0x6912('0x13'),_0x44da17,_0x6912('0x14'));logger[_0x6912('0x15')](_0x6912('0x16'),_0x44da17,'request\x20sent',JSON[_0x6912('0x17')](_0x4bebf7));if(_0x4bebf7[_0x6912('0x18')]){if(_0x4bebf7[_0x6912('0x18')][_0x6912('0x19')]===0x1f4){logger['error'](_0x6912('0x13'),_0x44da17,_0x4bebf7[_0x6912('0x18')][_0x6912('0x1a')]);return _0x4f540d(_0x4bebf7['error'][_0x6912('0x1a')]);}logger[_0x6912('0x18')](_0x6912('0x13'),_0x44da17,_0x4bebf7[_0x6912('0x18')][_0x6912('0x1a')]);return _0x2a8bb5(_0x4bebf7[_0x6912('0x18')]['message']);}else{logger[_0x6912('0x12')](_0x6912('0x13'),_0x44da17,_0x6912('0x14'));_0x2a8bb5(_0x4bebf7[_0x6912('0x1b')][_0x6912('0x1a')]);}})[_0x6912('0x1c')](function(_0x48235d){logger[_0x6912('0x18')]('OpenchannelQueue,\x20%s,\x20%s',_0x44da17,_0x48235d);_0x4f540d(_0x48235d);});});}exports[_0x6912('0x1d')]=function(_0xea4208){var _0x39313a=this;return new Promise(function(_0x342a73,_0x2be487){return db[_0x6912('0x1e')][_0x6912('0x1f')]({'raw':_0xea4208[_0x6912('0x20')]?_0xea4208[_0x6912('0x20')][_0x6912('0x21')]===undefined?!![]:![]:!![],'where':_0xea4208[_0x6912('0x20')]?_0xea4208[_0x6912('0x20')][_0x6912('0x22')]||null:null,'attributes':_0xea4208[_0x6912('0x20')]?_0xea4208[_0x6912('0x20')]['attributes']||null:null,'limit':_0xea4208['options']?_0xea4208[_0x6912('0x20')][_0x6912('0x23')]||null:null,'include':_0xea4208['options']?_0xea4208[_0x6912('0x20')]['include']?_[_0x6912('0x24')](_0xea4208[_0x6912('0x20')][_0x6912('0x25')],function(_0x493e0c){return{'model':db[_0x493e0c[_0x6912('0x26')]],'as':_0x493e0c['as'],'attributes':_0x493e0c[_0x6912('0x27')],'include':_0x493e0c[_0x6912('0x25')]?_[_0x6912('0x24')](_0x493e0c['include'],function(_0x18f74c){return{'model':db[_0x18f74c[_0x6912('0x26')]],'as':_0x18f74c['as'],'attributes':_0x18f74c['attributes'],'include':_0x18f74c['include']?_[_0x6912('0x24')](_0x18f74c['include'],function(_0x56dc7a){return{'model':db[_0x56dc7a['model']],'as':_0x56dc7a['as'],'attributes':_0x56dc7a[_0x6912('0x27')]};}):[]};}):[]};}):[]:[]})[_0x6912('0x11')](function(_0x236f66){logger[_0x6912('0x12')](_0x6912('0x1d'),_0xea4208);logger[_0x6912('0x15')](_0x6912('0x1d'),_0xea4208,JSON['stringify'](_0x236f66));_0x342a73(_0x236f66);})[_0x6912('0x1c')](function(_0x2a3f46){logger[_0x6912('0x18')](_0x6912('0x1d'),_0x2a3f46['message'],_0xea4208);_0x2be487(_0x39313a['error'](0x1f4,_0x2a3f46['message']));});});};exports[_0x6912('0x28')]=function(_0x2d76da){var _0x42496b=this;return new Promise(function(_0x2b9eb2,_0x219b4a){return db['OpenchannelQueue']['find']({'raw':_0x2d76da[_0x6912('0x20')]?_0x2d76da['options'][_0x6912('0x21')]===undefined?!![]:![]:!![],'where':_0x2d76da[_0x6912('0x20')]?_0x2d76da[_0x6912('0x20')]['where']||null:null,'attributes':_0x2d76da[_0x6912('0x20')]?_0x2d76da[_0x6912('0x20')]['attributes']||null:null,'include':_0x2d76da[_0x6912('0x20')]?_0x2d76da['options']['include']?_[_0x6912('0x24')](_0x2d76da[_0x6912('0x20')]['include'],function(_0x5acbf7){return{'model':db[_0x5acbf7[_0x6912('0x26')]],'as':_0x5acbf7['as'],'attributes':_0x5acbf7['attributes'],'include':_0x5acbf7['include']?_[_0x6912('0x24')](_0x5acbf7['include'],function(_0x3d2876){return{'model':db[_0x3d2876[_0x6912('0x26')]],'as':_0x3d2876['as'],'attributes':_0x3d2876[_0x6912('0x27')],'include':_0x3d2876['include']?_[_0x6912('0x24')](_0x3d2876[_0x6912('0x25')],function(_0x45099b){return{'model':db[_0x45099b['model']],'as':_0x45099b['as'],'attributes':_0x45099b['attributes']};}):[]};}):[]};}):[]:[]})[_0x6912('0x11')](function(_0x3263a9){logger['info'](_0x6912('0x28'),_0x2d76da);logger[_0x6912('0x15')](_0x6912('0x28'),_0x2d76da,JSON[_0x6912('0x17')](_0x3263a9));_0x2b9eb2(_0x3263a9);})[_0x6912('0x1c')](function(_0x135733){logger[_0x6912('0x18')](_0x6912('0x28'),_0x135733[_0x6912('0x1a')],_0x2d76da);_0x219b4a(_0x42496b[_0x6912('0x18')](0x1f4,_0x135733[_0x6912('0x1a')]));});});};
\ No newline at end of file
+var _0x0c6a=['GetOpenchannelQueue','debug','ShowOpenchannelQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','request\x20sent','result','catch','OpenchannelQueue','findAll','options','raw','where','attributes','limit','model','include','map'];(function(_0x36258a,_0x55bbee){var _0x2a6756=function(_0x23910f){while(--_0x23910f){_0x36258a['push'](_0x36258a['shift']());}};_0x2a6756(++_0x55bbee);}(_0x0c6a,0x19d));var _0xa0c6=function(_0x359bdd,_0x5a32a3){_0x359bdd=_0x359bdd-0x0;var _0x5805b9=_0x0c6a[_0x359bdd];return _0x5805b9;};'use strict';var _=require(_0xa0c6('0x0'));var util=require(_0xa0c6('0x1'));var moment=require(_0xa0c6('0x2'));var BPromise=require(_0xa0c6('0x3'));var rs=require(_0xa0c6('0x4'));var fs=require('fs');var Redis=require(_0xa0c6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0c6('0x6'));var logger=require('../../config/logger')(_0xa0c6('0x7'));var config=require(_0xa0c6('0x8'));var jayson=require(_0xa0c6('0x9'));var client=jayson[_0xa0c6('0xa')][_0xa0c6('0xb')]({'port':0x232a});config[_0xa0c6('0xc')]=_['defaults'](config[_0xa0c6('0xc')],{'host':_0xa0c6('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa0c6('0xe'))[_0xa0c6('0xf')](socket);function respondWithRpcPromise(_0xf786d,_0x2f2541,_0x36a73d){return new BPromise(function(_0x13929c,_0x58cd11){return client[_0xa0c6('0x10')](_0xf786d,_0x36a73d)[_0xa0c6('0x11')](function(_0x3761ed){logger[_0xa0c6('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x2f2541,'request\x20sent');logger['debug'](_0xa0c6('0x13'),_0x2f2541,'request\x20sent',JSON[_0xa0c6('0x14')](_0x3761ed));if(_0x3761ed[_0xa0c6('0x15')]){if(_0x3761ed[_0xa0c6('0x15')][_0xa0c6('0x16')]===0x1f4){logger[_0xa0c6('0x15')](_0xa0c6('0x17'),_0x2f2541,_0x3761ed[_0xa0c6('0x15')]['message']);return _0x58cd11(_0x3761ed[_0xa0c6('0x15')][_0xa0c6('0x18')]);}logger[_0xa0c6('0x15')](_0xa0c6('0x17'),_0x2f2541,_0x3761ed[_0xa0c6('0x15')][_0xa0c6('0x18')]);return _0x13929c(_0x3761ed[_0xa0c6('0x15')][_0xa0c6('0x18')]);}else{logger[_0xa0c6('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x2f2541,_0xa0c6('0x19'));_0x13929c(_0x3761ed[_0xa0c6('0x1a')][_0xa0c6('0x18')]);}})[_0xa0c6('0x1b')](function(_0x6626ae){logger[_0xa0c6('0x15')](_0xa0c6('0x17'),_0x2f2541,_0x6626ae);_0x58cd11(_0x6626ae);});});}exports['GetOpenchannelQueue']=function(_0x144090){var _0x4af81a=this;return new Promise(function(_0x19bc72,_0x496cb6){return db[_0xa0c6('0x1c')][_0xa0c6('0x1d')]({'raw':_0x144090[_0xa0c6('0x1e')]?_0x144090[_0xa0c6('0x1e')][_0xa0c6('0x1f')]===undefined?!![]:![]:!![],'where':_0x144090[_0xa0c6('0x1e')]?_0x144090[_0xa0c6('0x1e')][_0xa0c6('0x20')]||null:null,'attributes':_0x144090[_0xa0c6('0x1e')]?_0x144090[_0xa0c6('0x1e')][_0xa0c6('0x21')]||null:null,'limit':_0x144090['options']?_0x144090[_0xa0c6('0x1e')][_0xa0c6('0x22')]||null:null,'include':_0x144090[_0xa0c6('0x1e')]?_0x144090[_0xa0c6('0x1e')]['include']?_['map'](_0x144090[_0xa0c6('0x1e')]['include'],function(_0x1ec50b){return{'model':db[_0x1ec50b[_0xa0c6('0x23')]],'as':_0x1ec50b['as'],'attributes':_0x1ec50b[_0xa0c6('0x21')],'include':_0x1ec50b[_0xa0c6('0x24')]?_[_0xa0c6('0x25')](_0x1ec50b[_0xa0c6('0x24')],function(_0xa51c1c){return{'model':db[_0xa51c1c['model']],'as':_0xa51c1c['as'],'attributes':_0xa51c1c[_0xa0c6('0x21')],'include':_0xa51c1c[_0xa0c6('0x24')]?_[_0xa0c6('0x25')](_0xa51c1c[_0xa0c6('0x24')],function(_0x56ca2d){return{'model':db[_0x56ca2d[_0xa0c6('0x23')]],'as':_0x56ca2d['as'],'attributes':_0x56ca2d['attributes']};}):[]};}):[]};}):[]:[]})[_0xa0c6('0x11')](function(_0x3901c5){logger[_0xa0c6('0x12')](_0xa0c6('0x26'),_0x144090);logger[_0xa0c6('0x27')](_0xa0c6('0x26'),_0x144090,JSON[_0xa0c6('0x14')](_0x3901c5));_0x19bc72(_0x3901c5);})['catch'](function(_0x146e16){logger[_0xa0c6('0x15')](_0xa0c6('0x26'),_0x146e16[_0xa0c6('0x18')],_0x144090);_0x496cb6(_0x4af81a[_0xa0c6('0x15')](0x1f4,_0x146e16['message']));});});};exports[_0xa0c6('0x28')]=function(_0x5678b6){var _0x32267a=this;return new Promise(function(_0x4c8df3,_0x300862){return db[_0xa0c6('0x1c')]['find']({'raw':_0x5678b6[_0xa0c6('0x1e')]?_0x5678b6[_0xa0c6('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x5678b6['options']?_0x5678b6[_0xa0c6('0x1e')][_0xa0c6('0x20')]||null:null,'attributes':_0x5678b6[_0xa0c6('0x1e')]?_0x5678b6[_0xa0c6('0x1e')][_0xa0c6('0x21')]||null:null,'include':_0x5678b6[_0xa0c6('0x1e')]?_0x5678b6[_0xa0c6('0x1e')][_0xa0c6('0x24')]?_['map'](_0x5678b6[_0xa0c6('0x1e')][_0xa0c6('0x24')],function(_0x268462){return{'model':db[_0x268462[_0xa0c6('0x23')]],'as':_0x268462['as'],'attributes':_0x268462[_0xa0c6('0x21')],'include':_0x268462[_0xa0c6('0x24')]?_['map'](_0x268462[_0xa0c6('0x24')],function(_0x5b1a85){return{'model':db[_0x5b1a85[_0xa0c6('0x23')]],'as':_0x5b1a85['as'],'attributes':_0x5b1a85[_0xa0c6('0x21')],'include':_0x5b1a85[_0xa0c6('0x24')]?_[_0xa0c6('0x25')](_0x5b1a85[_0xa0c6('0x24')],function(_0x515235){return{'model':db[_0x515235[_0xa0c6('0x23')]],'as':_0x515235['as'],'attributes':_0x515235[_0xa0c6('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa0c6('0x11')](function(_0x1d00fd){logger[_0xa0c6('0x12')](_0xa0c6('0x28'),_0x5678b6);logger[_0xa0c6('0x27')](_0xa0c6('0x28'),_0x5678b6,JSON[_0xa0c6('0x14')](_0x1d00fd));_0x4c8df3(_0x1d00fd);})['catch'](function(_0x2b18de){logger[_0xa0c6('0x15')](_0xa0c6('0x28'),_0x2b18de['message'],_0x5678b6);_0x300862(_0x32267a[_0xa0c6('0x15')](0x1f4,_0x2b18de[_0xa0c6('0x18')]));});});};
\ No newline at end of file
index 7711959..384b7f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b6a=['remove','emit','removeListener','register','openchannelQueue:','./openchannelQueue.events','save'];(function(_0x5e74b9,_0x2fc49d){var _0x5792df=function(_0x30ea48){while(--_0x30ea48){_0x5e74b9['push'](_0x5e74b9['shift']());}};_0x5792df(++_0x2fc49d);}(_0x6b6a,0xe5));var _0xa6b6=function(_0x19cce8,_0x23a814){_0x19cce8=_0x19cce8-0x0;var _0x575f93=_0x6b6a[_0x19cce8];return _0x575f93;};'use strict';var OpenchannelQueueEvents=require(_0xa6b6('0x0'));var events=[_0xa6b6('0x1'),_0xa6b6('0x2'),'update'];function createListener(_0x45138d,_0x516110){return function(_0x5e4a22){_0x516110[_0xa6b6('0x3')](_0x45138d,_0x5e4a22);};}function removeListener(_0x2196ed,_0x14ff1f){return function(){OpenchannelQueueEvents[_0xa6b6('0x4')](_0x2196ed,_0x14ff1f);};}exports[_0xa6b6('0x5')]=function(_0xe5e446){for(var _0x1d512f=0x0,_0x109218=events['length'];_0x1d512f<_0x109218;_0x1d512f++){var _0x473ad7=events[_0x1d512f];var _0x471c33=createListener(_0xa6b6('0x6')+_0x473ad7,_0xe5e446);OpenchannelQueueEvents['on'](_0x473ad7,_0x471c33);}};
\ No newline at end of file
+var _0x9def=['update','emit','register','length','openchannelQueue:','./openchannelQueue.events','save'];(function(_0x4727b7,_0x585a61){var _0xce9394=function(_0x179df4){while(--_0x179df4){_0x4727b7['push'](_0x4727b7['shift']());}};_0xce9394(++_0x585a61);}(_0x9def,0x18d));var _0xf9de=function(_0x30e982,_0x331e4d){_0x30e982=_0x30e982-0x0;var _0x1fc0c7=_0x9def[_0x30e982];return _0x1fc0c7;};'use strict';var OpenchannelQueueEvents=require(_0xf9de('0x0'));var events=[_0xf9de('0x1'),'remove',_0xf9de('0x2')];function createListener(_0xb47e4c,_0x57728d){return function(_0x1d98ec){_0x57728d[_0xf9de('0x3')](_0xb47e4c,_0x1d98ec);};}function removeListener(_0x3350ed,_0x22ab6c){return function(){OpenchannelQueueEvents['removeListener'](_0x3350ed,_0x22ab6c);};}exports[_0xf9de('0x4')]=function(_0x3b8313){for(var _0x261334=0x0,_0x2a4cc6=events[_0xf9de('0x5')];_0x261334<_0x2a4cc6;_0x261334++){var _0x449765=events[_0x261334];var _0x428941=createListener(_0xf9de('0x6')+_0x449765,_0x3b8313);OpenchannelQueueEvents['on'](_0x449765,_0x428941);}};
\ No newline at end of file
index dd2de9c..6599323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ef=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','index','/describe','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x42921a,_0xa0c379){var _0x557bfb=function(_0x4a35bf){while(--_0x4a35bf){_0x42921a['push'](_0x42921a['shift']());}};_0x557bfb(++_0xa0c379);}(_0xa6ef,0x97));var _0xfa6e=function(_0x3785ff,_0x234bc1){_0x3785ff=_0x3785ff-0x0;var _0x59faf=_0xa6ef[_0x3785ff];return _0x59faf;};'use strict';var multer=require('multer');var util=require(_0xfa6e('0x0'));var path=require(_0xfa6e('0x1'));var timeout=require(_0xfa6e('0x2'));var express=require(_0xfa6e('0x3'));var router=express[_0xfa6e('0x4')]();var fs_extra=require(_0xfa6e('0x5'));var auth=require(_0xfa6e('0x6'));var interaction=require(_0xfa6e('0x7'));var config=require(_0xfa6e('0x8'));var controller=require(_0xfa6e('0x9'));router[_0xfa6e('0xa')]('/',auth['isAuthenticated'](),controller[_0xfa6e('0xb')]);router[_0xfa6e('0xa')](_0xfa6e('0xc'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xfa6e('0xd'),auth[_0xfa6e('0xe')](),controller[_0xfa6e('0xf')]);router[_0xfa6e('0x10')]('/',auth[_0xfa6e('0xe')](),controller[_0xfa6e('0x11')]);router['put'](_0xfa6e('0xd'),auth[_0xfa6e('0xe')](),controller[_0xfa6e('0x12')]);router[_0xfa6e('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xfa6e('0x14')]);module[_0xfa6e('0x15')]=router;
\ No newline at end of file
+var _0x8512=['update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x3dde13,_0x225788){var _0x497844=function(_0x3cc0dc){while(--_0x3cc0dc){_0x3dde13['push'](_0x3dde13['shift']());}};_0x497844(++_0x225788);}(_0x8512,0x11c));var _0x2851=function(_0x4b3005,_0x2ac653){_0x4b3005=_0x4b3005-0x0;var _0x3f811f=_0x8512[_0x4b3005];return _0x3f811f;};'use strict';var multer=require('multer');var util=require(_0x2851('0x0'));var path=require(_0x2851('0x1'));var timeout=require(_0x2851('0x2'));var express=require(_0x2851('0x3'));var router=express['Router']();var fs_extra=require(_0x2851('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2851('0x5'));router[_0x2851('0x6')]('/',auth[_0x2851('0x7')](),controller[_0x2851('0x8')]);router[_0x2851('0x6')](_0x2851('0x9'),auth[_0x2851('0x7')](),controller[_0x2851('0xa')]);router[_0x2851('0x6')](_0x2851('0xb'),auth[_0x2851('0x7')](),controller[_0x2851('0xc')]);router[_0x2851('0xd')]('/',auth['isAuthenticated'](),controller[_0x2851('0xe')]);router[_0x2851('0xf')](_0x2851('0xb'),auth[_0x2851('0x7')](),controller[_0x2851('0x10')]);router[_0x2851('0x11')](_0x2851('0xb'),auth[_0x2851('0x7')](),controller[_0x2851('0x12')]);module[_0x2851('0x13')]=router;
\ No newline at end of file
index 89fc41f..02d3d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd6=['DATE','moment','exports','STRING'];(function(_0x2d8885,_0x4695a4){var _0x4c72bb=function(_0x9f0c7d){while(--_0x9f0c7d){_0x2d8885['push'](_0x2d8885['shift']());}};_0x4c72bb(++_0x4695a4);}(_0xcbd6,0xc5));var _0x6cbd=function(_0xa188e3,_0x356a44){_0xa188e3=_0xa188e3-0x0;var _0x195441=_0xcbd6[_0xa188e3];return _0x195441;};'use strict';var moment=require(_0x6cbd('0x0'));var Sequelize=require('sequelize');module[_0x6cbd('0x1')]={'uniqueid':{'type':Sequelize[_0x6cbd('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6cbd('0x2')]},'joinAt':{'type':Sequelize[_0x6cbd('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6cbd('0x3')]},'exitAt':{'type':Sequelize[_0x6cbd('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7250=['DATE','moment','sequelize','STRING'];(function(_0x1a011e,_0x2902c8){var _0x3a4735=function(_0xbcbec8){while(--_0xbcbec8){_0x1a011e['push'](_0x1a011e['shift']());}};_0x3a4735(++_0x2902c8);}(_0x7250,0x1b1));var _0x0725=function(_0x20ed13,_0x5c885f){_0x20ed13=_0x20ed13-0x0;var _0x30fba3=_0x7250[_0x20ed13];return _0x30fba3;};'use strict';var moment=require(_0x0725('0x0'));var Sequelize=require(_0x0725('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x0725('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x0725('0x2')]},'joinAt':{'type':Sequelize[_0x0725('0x3')]},'leaveAt':{'type':Sequelize[_0x0725('0x3')]},'acceptAt':{'type':Sequelize[_0x0725('0x3')]},'exitAt':{'type':Sequelize[_0x0725('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4c7d05a..7275241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a0b=['limit','set','Content-Range','json','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','catch','show','options','find','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','status','offset','undefined','count'];(function(_0x20a6d0,_0x38ad3e){var _0x36753a=function(_0x27879f){while(--_0x27879f){_0x20a6d0['push'](_0x20a6d0['shift']());}};_0x36753a(++_0x38ad3e);}(_0x2a0b,0xce));var _0xb2a0=function(_0x150dea,_0x2eb3dc){_0x150dea=_0x150dea-0x0;var _0x186f2c=_0x2a0b[_0x150dea];return _0x186f2c;};'use strict';var emlformat=require(_0xb2a0('0x0'));var rimraf=require(_0xb2a0('0x1'));var zipdir=require(_0xb2a0('0x2'));var jsonpatch=require(_0xb2a0('0x3'));var rp=require(_0xb2a0('0x4'));var moment=require(_0xb2a0('0x5'));var BPromise=require(_0xb2a0('0x6'));var Mustache=require(_0xb2a0('0x7'));var util=require(_0xb2a0('0x8'));var path=require(_0xb2a0('0x9'));var sox=require(_0xb2a0('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb2a0('0xb'));var _=require(_0xb2a0('0xc'));var squel=require(_0xb2a0('0xd'));var crypto=require(_0xb2a0('0xe'));var jsforce=require(_0xb2a0('0xf'));var deskjs=require(_0xb2a0('0x10'));var toCsv=require(_0xb2a0('0x11'));var querystring=require(_0xb2a0('0x12'));var Papa=require(_0xb2a0('0x13'));var Redis=require(_0xb2a0('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xb2a0('0x15'));var as=require(_0xb2a0('0x16'));var hardwareService=require(_0xb2a0('0x17'));var logger=require(_0xb2a0('0x18'))('api');var utils=require(_0xb2a0('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xb2a0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b4dad,_0x37cb35){_0x37cb35=_0x37cb35||0xcc;return function(_0x400410){if(_0x400410){return _0x2b4dad['sendStatus'](_0x37cb35);}return _0x2b4dad[_0xb2a0('0x1b')](_0x37cb35)['end']();};}function respondWithResult(_0x516e93,_0x3eff13){_0x3eff13=_0x3eff13||0xc8;return function(_0x142d09){if(_0x142d09){return _0x516e93['status'](_0x3eff13)['json'](_0x142d09);}};}function respondWithFilteredResult(_0x42d1bf,_0x15728b){return function(_0x5c4546){if(_0x5c4546){var _0x32a184=typeof _0x15728b[_0xb2a0('0x1c')]==='undefined'&&typeof _0x15728b['limit']===_0xb2a0('0x1d');var _0xf92c47=_0x5c4546[_0xb2a0('0x1e')];var _0x19bb5e=_0x32a184?0x0:_0x15728b[_0xb2a0('0x1c')];var _0x3efe06=_0x32a184?_0x5c4546[_0xb2a0('0x1e')]:_0x15728b[_0xb2a0('0x1c')]+_0x15728b[_0xb2a0('0x1f')];var _0x30a9d7;if(_0x3efe06>=_0xf92c47){_0x3efe06=_0xf92c47;_0x30a9d7=0xc8;}else{_0x30a9d7=0xce;}_0x42d1bf[_0xb2a0('0x1b')](_0x30a9d7);return _0x42d1bf[_0xb2a0('0x20')](_0xb2a0('0x21'),_0x19bb5e+'-'+_0x3efe06+'/'+_0xf92c47)[_0xb2a0('0x22')](_0x5c4546);}return null;};}function patchUpdates(_0x11d503){return function(_0x4801b0){try{jsonpatch[_0xb2a0('0x23')](_0x4801b0,_0x11d503,!![]);}catch(_0x45d8c5){return BPromise[_0xb2a0('0x24')](_0x45d8c5);}return _0x4801b0[_0xb2a0('0x25')]();};}function saveUpdates(_0x486e65,_0x147ec1){return function(_0x204009){if(_0x204009){return _0x204009['update'](_0x486e65)[_0xb2a0('0x26')](function(_0x13f75b){return _0x13f75b;});}return null;};}function removeEntity(_0x4d6a55,_0x5d45ab){return function(_0x229397){if(_0x229397){return _0x229397[_0xb2a0('0x27')]()['then'](function(){_0x4d6a55[_0xb2a0('0x1b')](0xcc)[_0xb2a0('0x28')]();});}};}function handleEntityNotFound(_0x35efce,_0x372651){return function(_0x57f667){if(!_0x57f667){_0x35efce[_0xb2a0('0x29')](0x194);}return _0x57f667;};}function handleError(_0x395e0c,_0x33ceda){_0x33ceda=_0x33ceda||0x1f4;return function(_0x51a56e){logger[_0xb2a0('0x2a')](_0x51a56e[_0xb2a0('0x2b')]);if(_0x51a56e[_0xb2a0('0x2c')]){delete _0x51a56e[_0xb2a0('0x2c')];}_0x395e0c['status'](_0x33ceda)[_0xb2a0('0x2d')](_0x51a56e);};}exports[_0xb2a0('0x2e')]=function(_0x3a0844,_0x5a1733){var _0x1f3fa5={},_0x554a0c={},_0x28aa8b={'count':0x0,'rows':[]};var _0x1b3634=_[_0xb2a0('0x2f')](db[_0xb2a0('0x30')][_0xb2a0('0x31')],function(_0x193122){return{'name':_0x193122['fieldName'],'type':_0x193122[_0xb2a0('0x32')]['key']};});_0x554a0c[_0xb2a0('0x33')]=_[_0xb2a0('0x2f')](_0x1b3634,_0xb2a0('0x2c'));_0x554a0c[_0xb2a0('0x34')]=_[_0xb2a0('0x35')](_0x3a0844[_0xb2a0('0x34')]);_0x554a0c['filters']=_[_0xb2a0('0x36')](_0x554a0c['model'],_0x554a0c[_0xb2a0('0x34')]);_0x1f3fa5['attributes']=_['intersection'](_0x554a0c[_0xb2a0('0x33')],qs['fields'](_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x37')]));_0x1f3fa5[_0xb2a0('0x38')]=_0x1f3fa5['attributes'][_0xb2a0('0x39')]?_0x1f3fa5['attributes']:_0x554a0c['model'];if(!_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x3a')](_0xb2a0('0x3b'))){_0x1f3fa5[_0xb2a0('0x1f')]=qs[_0xb2a0('0x1f')](_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x1f')]);_0x1f3fa5[_0xb2a0('0x1c')]=qs['offset'](_0x3a0844[_0xb2a0('0x34')]['offset']);}_0x1f3fa5[_0xb2a0('0x3c')]=qs[_0xb2a0('0x3d')](_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x3d')]);_0x1f3fa5['where']=qs[_0xb2a0('0x3e')](_[_0xb2a0('0x3f')](_0x3a0844[_0xb2a0('0x34')],_0x554a0c[_0xb2a0('0x3e')]),_0x1b3634);if(_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x40')]){_0x1f3fa5[_0xb2a0('0x41')]=_[_0xb2a0('0x42')](_0x1f3fa5[_0xb2a0('0x41')],{'$or':_[_0xb2a0('0x2f')](_0x1b3634,function(_0x391366){if(_0x391366[_0xb2a0('0x32')]!==_0xb2a0('0x43')){var _0x4b3f32={};_0x4b3f32[_0x391366[_0xb2a0('0x2c')]]={'$like':'%'+_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x40')]+'%'};return _0x4b3f32;}})});}_0x1f3fa5=_['merge']({},_0x1f3fa5,_0x3a0844['options']);var _0x4771b7={'where':_0x1f3fa5[_0xb2a0('0x41')]};return db[_0xb2a0('0x30')][_0xb2a0('0x1e')](_0x4771b7)[_0xb2a0('0x26')](function(_0x59e12c){_0x28aa8b[_0xb2a0('0x1e')]=_0x59e12c;if(_0x3a0844[_0xb2a0('0x34')][_0xb2a0('0x44')]){_0x1f3fa5['include']=[{'all':!![]}];}return db[_0xb2a0('0x30')][_0xb2a0('0x45')](_0x1f3fa5);})[_0xb2a0('0x26')](function(_0xd532ce){_0x28aa8b[_0xb2a0('0x46')]=_0xd532ce;return _0x28aa8b;})[_0xb2a0('0x26')](respondWithFilteredResult(_0x5a1733,_0x1f3fa5))[_0xb2a0('0x47')](handleError(_0x5a1733,null));};exports[_0xb2a0('0x48')]=function(_0x569372,_0x170119){var _0xaf64a={'raw':!![],'where':{'id':_0x569372['params']['id']}},_0x2d5f7f={};_0x2d5f7f[_0xb2a0('0x33')]=_[_0xb2a0('0x35')](db[_0xb2a0('0x30')]['rawAttributes']);_0x2d5f7f[_0xb2a0('0x34')]=_[_0xb2a0('0x35')](_0x569372['query']);_0x2d5f7f[_0xb2a0('0x3e')]=_[_0xb2a0('0x36')](_0x2d5f7f[_0xb2a0('0x33')],_0x2d5f7f[_0xb2a0('0x34')]);_0xaf64a[_0xb2a0('0x38')]=_[_0xb2a0('0x36')](_0x2d5f7f[_0xb2a0('0x33')],qs[_0xb2a0('0x37')](_0x569372[_0xb2a0('0x34')][_0xb2a0('0x37')]));_0xaf64a[_0xb2a0('0x38')]=_0xaf64a['attributes']['length']?_0xaf64a[_0xb2a0('0x38')]:_0x2d5f7f[_0xb2a0('0x33')];if(_0x569372['query'][_0xb2a0('0x44')]){_0xaf64a['include']=[{'all':!![]}];}_0xaf64a=_['merge']({},_0xaf64a,_0x569372[_0xb2a0('0x49')]);return db['OpenchannelQueueReport'][_0xb2a0('0x4a')](_0xaf64a)[_0xb2a0('0x26')](handleEntityNotFound(_0x170119,null))[_0xb2a0('0x26')](respondWithResult(_0x170119,null))[_0xb2a0('0x47')](handleError(_0x170119,null));};exports['create']=function(_0x13a4b5,_0x2b090d){return db['OpenchannelQueueReport']['create'](_0x13a4b5[_0xb2a0('0x4b')],{})[_0xb2a0('0x26')](respondWithResult(_0x2b090d,0xc9))[_0xb2a0('0x47')](handleError(_0x2b090d,null));};exports[_0xb2a0('0x4c')]=function(_0x4f6e81,_0x3c1958){if(_0x4f6e81[_0xb2a0('0x4b')]['id']){delete _0x4f6e81['body']['id'];}return db[_0xb2a0('0x30')][_0xb2a0('0x4a')]({'where':{'id':_0x4f6e81[_0xb2a0('0x4d')]['id']}})[_0xb2a0('0x26')](handleEntityNotFound(_0x3c1958,null))[_0xb2a0('0x26')](saveUpdates(_0x4f6e81[_0xb2a0('0x4b')],null))['then'](respondWithResult(_0x3c1958,null))['catch'](handleError(_0x3c1958,null));};exports['destroy']=function(_0x26de1a,_0x47d18a){return db[_0xb2a0('0x30')][_0xb2a0('0x4a')]({'where':{'id':_0x26de1a[_0xb2a0('0x4d')]['id']}})[_0xb2a0('0x26')](handleEntityNotFound(_0x47d18a,null))[_0xb2a0('0x26')](removeEntity(_0x47d18a,null))['catch'](handleError(_0x47d18a,null));};exports[_0xb2a0('0x4e')]=function(_0x1ed2a1,_0x2e897a){return db['OpenchannelQueueReport']['describe']()[_0xb2a0('0x26')](respondWithResult(_0x2e897a,null))[_0xb2a0('0x47')](handleError(_0x2e897a,null));};
\ No newline at end of file
+var _0x0e81=['offset','limit','undefined','count','set','apply','save','then','destroy','stack','send','map','OpenchannelQueueReport','rawAttributes','type','key','model','name','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','keys','create','body','update','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json'];(function(_0x18b41a,_0x332f09){var _0x4ad8d6=function(_0x4cb67b){while(--_0x4cb67b){_0x18b41a['push'](_0x18b41a['shift']());}};_0x4ad8d6(++_0x332f09);}(_0x0e81,0x1cf));var _0x10e8=function(_0x53056c,_0x1d56a9){_0x53056c=_0x53056c-0x0;var _0x5cec88=_0x0e81[_0x53056c];return _0x5cec88;};'use strict';var emlformat=require(_0x10e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x10e8('0x1'));var jsonpatch=require(_0x10e8('0x2'));var rp=require(_0x10e8('0x3'));var moment=require('moment');var BPromise=require(_0x10e8('0x4'));var Mustache=require(_0x10e8('0x5'));var util=require(_0x10e8('0x6'));var path=require('path');var sox=require(_0x10e8('0x7'));var csv=require(_0x10e8('0x8'));var ejs=require(_0x10e8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x10e8('0xa'));var squel=require('squel');var crypto=require(_0x10e8('0xb'));var jsforce=require(_0x10e8('0xc'));var deskjs=require(_0x10e8('0xd'));var toCsv=require(_0x10e8('0x8'));var querystring=require(_0x10e8('0xe'));var Papa=require(_0x10e8('0xf'));var Redis=require('ioredis');var authService=require(_0x10e8('0x10'));var qs=require(_0x10e8('0x11'));var as=require(_0x10e8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x10e8('0x13'))(_0x10e8('0x14'));var utils=require('../../config/utils');var config=require(_0x10e8('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x10e8('0x16'))['db'];function respondWithStatusCode(_0x544750,_0x21b42c){_0x21b42c=_0x21b42c||0xcc;return function(_0x8723c){if(_0x8723c){return _0x544750[_0x10e8('0x17')](_0x21b42c);}return _0x544750['status'](_0x21b42c)[_0x10e8('0x18')]();};}function respondWithResult(_0x2674b7,_0x16c5f5){_0x16c5f5=_0x16c5f5||0xc8;return function(_0x37ad58){if(_0x37ad58){return _0x2674b7[_0x10e8('0x19')](_0x16c5f5)[_0x10e8('0x1a')](_0x37ad58);}};}function respondWithFilteredResult(_0x1fd794,_0x3e3bce){return function(_0x4a1887){if(_0x4a1887){var _0x3bcd34=typeof _0x3e3bce[_0x10e8('0x1b')]==='undefined'&&typeof _0x3e3bce[_0x10e8('0x1c')]===_0x10e8('0x1d');var _0x4427be=_0x4a1887[_0x10e8('0x1e')];var _0x54d5b5=_0x3bcd34?0x0:_0x3e3bce[_0x10e8('0x1b')];var _0x138073=_0x3bcd34?_0x4a1887['count']:_0x3e3bce[_0x10e8('0x1b')]+_0x3e3bce['limit'];var _0x1351a1;if(_0x138073>=_0x4427be){_0x138073=_0x4427be;_0x1351a1=0xc8;}else{_0x1351a1=0xce;}_0x1fd794[_0x10e8('0x19')](_0x1351a1);return _0x1fd794[_0x10e8('0x1f')]('Content-Range',_0x54d5b5+'-'+_0x138073+'/'+_0x4427be)[_0x10e8('0x1a')](_0x4a1887);}return null;};}function patchUpdates(_0x3e7c29){return function(_0x59df82){try{jsonpatch[_0x10e8('0x20')](_0x59df82,_0x3e7c29,!![]);}catch(_0x1c103c){return BPromise['reject'](_0x1c103c);}return _0x59df82[_0x10e8('0x21')]();};}function saveUpdates(_0xb9ce60,_0x43a5b5){return function(_0x149cd1){if(_0x149cd1){return _0x149cd1['update'](_0xb9ce60)[_0x10e8('0x22')](function(_0x58e58f){return _0x58e58f;});}return null;};}function removeEntity(_0xdcfa28,_0x5e034f){return function(_0x5afc6c){if(_0x5afc6c){return _0x5afc6c[_0x10e8('0x23')]()[_0x10e8('0x22')](function(){_0xdcfa28[_0x10e8('0x19')](0xcc)[_0x10e8('0x18')]();});}};}function handleEntityNotFound(_0x100836,_0x192b03){return function(_0x396204){if(!_0x396204){_0x100836[_0x10e8('0x17')](0x194);}return _0x396204;};}function handleError(_0x4dd201,_0x547a98){_0x547a98=_0x547a98||0x1f4;return function(_0x4d26e5){logger['error'](_0x4d26e5[_0x10e8('0x24')]);if(_0x4d26e5['name']){delete _0x4d26e5['name'];}_0x4dd201[_0x10e8('0x19')](_0x547a98)[_0x10e8('0x25')](_0x4d26e5);};}exports['index']=function(_0xa71315,_0xbaa883){var _0x3bf183={},_0x2a910d={},_0x4fba4e={'count':0x0,'rows':[]};var _0x55c428=_[_0x10e8('0x26')](db[_0x10e8('0x27')][_0x10e8('0x28')],function(_0x1c2e14){return{'name':_0x1c2e14['fieldName'],'type':_0x1c2e14[_0x10e8('0x29')][_0x10e8('0x2a')]};});_0x2a910d[_0x10e8('0x2b')]=_[_0x10e8('0x26')](_0x55c428,_0x10e8('0x2c'));_0x2a910d[_0x10e8('0x2d')]=_['keys'](_0xa71315['query']);_0x2a910d[_0x10e8('0x2e')]=_['intersection'](_0x2a910d[_0x10e8('0x2b')],_0x2a910d['query']);_0x3bf183[_0x10e8('0x2f')]=_[_0x10e8('0x30')](_0x2a910d[_0x10e8('0x2b')],qs[_0x10e8('0x31')](_0xa71315[_0x10e8('0x2d')][_0x10e8('0x31')]));_0x3bf183[_0x10e8('0x2f')]=_0x3bf183[_0x10e8('0x2f')][_0x10e8('0x32')]?_0x3bf183[_0x10e8('0x2f')]:_0x2a910d[_0x10e8('0x2b')];if(!_0xa71315[_0x10e8('0x2d')][_0x10e8('0x33')]('nolimit')){_0x3bf183[_0x10e8('0x1c')]=qs[_0x10e8('0x1c')](_0xa71315[_0x10e8('0x2d')]['limit']);_0x3bf183['offset']=qs[_0x10e8('0x1b')](_0xa71315['query'][_0x10e8('0x1b')]);}_0x3bf183['order']=qs[_0x10e8('0x34')](_0xa71315[_0x10e8('0x2d')][_0x10e8('0x34')]);_0x3bf183[_0x10e8('0x35')]=qs[_0x10e8('0x2e')](_[_0x10e8('0x36')](_0xa71315[_0x10e8('0x2d')],_0x2a910d[_0x10e8('0x2e')]),_0x55c428);if(_0xa71315[_0x10e8('0x2d')][_0x10e8('0x37')]){_0x3bf183[_0x10e8('0x35')]=_['merge'](_0x3bf183['where'],{'$or':_[_0x10e8('0x26')](_0x55c428,function(_0x5dabbd){if(_0x5dabbd[_0x10e8('0x29')]!=='VIRTUAL'){var _0x3784e3={};_0x3784e3[_0x5dabbd['name']]={'$like':'%'+_0xa71315['query'][_0x10e8('0x37')]+'%'};return _0x3784e3;}})});}_0x3bf183=_[_0x10e8('0x38')]({},_0x3bf183,_0xa71315[_0x10e8('0x39')]);var _0x2bcf4a={'where':_0x3bf183[_0x10e8('0x35')]};return db['OpenchannelQueueReport'][_0x10e8('0x1e')](_0x2bcf4a)['then'](function(_0x54760b){_0x4fba4e['count']=_0x54760b;if(_0xa71315[_0x10e8('0x2d')][_0x10e8('0x3a')]){_0x3bf183[_0x10e8('0x3b')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x10e8('0x3c')](_0x3bf183);})['then'](function(_0x20c0d8){_0x4fba4e['rows']=_0x20c0d8;return _0x4fba4e;})['then'](respondWithFilteredResult(_0xbaa883,_0x3bf183))[_0x10e8('0x3d')](handleError(_0xbaa883,null));};exports[_0x10e8('0x3e')]=function(_0x52cc38,_0x397d47){var _0x3fb0b6={'raw':!![],'where':{'id':_0x52cc38[_0x10e8('0x3f')]['id']}},_0x425206={};_0x425206['model']=_[_0x10e8('0x40')](db['OpenchannelQueueReport']['rawAttributes']);_0x425206['query']=_[_0x10e8('0x40')](_0x52cc38[_0x10e8('0x2d')]);_0x425206['filters']=_[_0x10e8('0x30')](_0x425206[_0x10e8('0x2b')],_0x425206[_0x10e8('0x2d')]);_0x3fb0b6['attributes']=_[_0x10e8('0x30')](_0x425206[_0x10e8('0x2b')],qs[_0x10e8('0x31')](_0x52cc38[_0x10e8('0x2d')][_0x10e8('0x31')]));_0x3fb0b6[_0x10e8('0x2f')]=_0x3fb0b6[_0x10e8('0x2f')][_0x10e8('0x32')]?_0x3fb0b6[_0x10e8('0x2f')]:_0x425206[_0x10e8('0x2b')];if(_0x52cc38[_0x10e8('0x2d')]['includeAll']){_0x3fb0b6[_0x10e8('0x3b')]=[{'all':!![]}];}_0x3fb0b6=_[_0x10e8('0x38')]({},_0x3fb0b6,_0x52cc38[_0x10e8('0x39')]);return db[_0x10e8('0x27')]['find'](_0x3fb0b6)[_0x10e8('0x22')](handleEntityNotFound(_0x397d47,null))['then'](respondWithResult(_0x397d47,null))['catch'](handleError(_0x397d47,null));};exports['create']=function(_0x4192fc,_0x437290){return db[_0x10e8('0x27')][_0x10e8('0x41')](_0x4192fc[_0x10e8('0x42')],{})[_0x10e8('0x22')](respondWithResult(_0x437290,0xc9))[_0x10e8('0x3d')](handleError(_0x437290,null));};exports[_0x10e8('0x43')]=function(_0x305b0c,_0x45c135){if(_0x305b0c[_0x10e8('0x42')]['id']){delete _0x305b0c[_0x10e8('0x42')]['id'];}return db[_0x10e8('0x27')]['find']({'where':{'id':_0x305b0c[_0x10e8('0x3f')]['id']}})[_0x10e8('0x22')](handleEntityNotFound(_0x45c135,null))[_0x10e8('0x22')](saveUpdates(_0x305b0c[_0x10e8('0x42')],null))[_0x10e8('0x22')](respondWithResult(_0x45c135,null))[_0x10e8('0x3d')](handleError(_0x45c135,null));};exports[_0x10e8('0x23')]=function(_0x18cdb6,_0x112412){return db[_0x10e8('0x27')][_0x10e8('0x44')]({'where':{'id':_0x18cdb6['params']['id']}})[_0x10e8('0x22')](handleEntityNotFound(_0x112412,null))[_0x10e8('0x22')](removeEntity(_0x112412,null))['catch'](handleError(_0x112412,null));};exports[_0x10e8('0x45')]=function(_0x21bea1,_0x1cb309){return db[_0x10e8('0x27')][_0x10e8('0x45')]()['then'](respondWithResult(_0x1cb309,null))[_0x10e8('0x3d')](handleError(_0x1cb309,null));};
\ No newline at end of file
index eb894e9..98daa0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x289f01,_0x3ed50f){var _0x51b08b=function(_0x17ae04){while(--_0x17ae04){_0x289f01['push'](_0x289f01['shift']());}};_0x51b08b(++_0x3ed50f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0xc4aa[_0xaa1b3e];return _0x454d7d;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x26aad0,_0x2e8b56){var _0x73547f=function(_0x42d786){while(--_0x42d786){_0x26aad0['push'](_0x26aad0['shift']());}};_0x73547f(++_0x2e8b56);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xc4aa[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b50526d..6a5d127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','raw','debug','stringify','UpdateOpenchannelQueueReport','update','options','where','attributes','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x119d5a,_0x19b457){_0x119d5a=_0x119d5a-0x0;var _0x15bff4=_0xeb3b[_0x119d5a];return _0x15bff4;};'use strict';var _=require(_0xbeb3('0x0'));var util=require(_0xbeb3('0x1'));var moment=require(_0xbeb3('0x2'));var BPromise=require(_0xbeb3('0x3'));var rs=require(_0xbeb3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbeb3('0x5'));var logger=require('../../config/logger')(_0xbeb3('0x6'));var config=require('../../config/environment');var jayson=require(_0xbeb3('0x7'));var client=jayson[_0xbeb3('0x8')][_0xbeb3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x294cc9,_0x406927,_0x143255){return new BPromise(function(_0x5a6a06,_0x241dbb){return client[_0xbeb3('0xa')](_0x294cc9,_0x143255)[_0xbeb3('0xb')](function(_0x3b61ac){logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,_0xbeb3('0xe'));logger['debug'](_0xbeb3('0xf'),_0x406927,_0xbeb3('0xe'),JSON['stringify'](_0x3b61ac));if(_0x3b61ac[_0xbeb3('0x10')]){if(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x11')]===0x1f4){logger[_0xbeb3('0x10')](_0xbeb3('0xd'),_0x406927,_0x3b61ac[_0xbeb3('0x10')]['message']);return _0x241dbb(_0x3b61ac['error'][_0xbeb3('0x12')]);}logger[_0xbeb3('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x406927,_0x3b61ac['error'][_0xbeb3('0x12')]);return _0x5a6a06(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x12')]);}else{logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,'request\x20sent');_0x5a6a06(_0x3b61ac[_0xbeb3('0x13')]['message']);}})[_0xbeb3('0x14')](function(_0x4e7d99){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x406927,_0x4e7d99);_0x241dbb(_0x4e7d99);});});}exports[_0xbeb3('0x15')]=function(_0x44a4bb){var _0x32275b=this;return new Promise(function(_0x10b15d,_0x5d0689){return db[_0xbeb3('0x16')][_0xbeb3('0x17')](_0x44a4bb[_0xbeb3('0x18')],{'raw':_0x44a4bb['options']?_0x44a4bb['options'][_0xbeb3('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1d917b){logger['info']('CreateOpenchannelQueueReport',_0x44a4bb);logger[_0xbeb3('0x1a')](_0xbeb3('0x15'),_0x44a4bb,JSON[_0xbeb3('0x1b')](_0x1d917b));_0x10b15d(_0x1d917b);})['catch'](function(_0x301899){logger[_0xbeb3('0x10')]('CreateOpenchannelQueueReport',_0x301899[_0xbeb3('0x12')],_0x44a4bb);_0x5d0689(_0x32275b[_0xbeb3('0x10')](0x1f4,_0x301899['message']));});});};exports[_0xbeb3('0x1c')]=function(_0x278fe4){var _0x16b079=this;return new Promise(function(_0x42c6c3,_0x2bc188){return db[_0xbeb3('0x16')][_0xbeb3('0x1d')](_0x278fe4[_0xbeb3('0x18')],{'raw':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4['options'][_0xbeb3('0x1f')]||null:null,'attributes':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4[_0xbeb3('0x1e')][_0xbeb3('0x20')]||null:null,'limit':_0x278fe4['options']?_0x278fe4[_0xbeb3('0x1e')]['limit']||null:null})[_0xbeb3('0xb')](function(_0xab301c){logger['info']('UpdateOpenchannelQueueReport',_0x278fe4);logger[_0xbeb3('0x1a')]('UpdateOpenchannelQueueReport',_0x278fe4,JSON['stringify'](_0xab301c));_0x42c6c3(_0xab301c);})['catch'](function(_0x5bfef7){logger[_0xbeb3('0x10')]('UpdateOpenchannelQueueReport',_0x5bfef7[_0xbeb3('0x12')],_0x278fe4);_0x2bc188(_0x16b079[_0xbeb3('0x10')](0x1f4,_0x5bfef7[_0xbeb3('0x12')]));});});};
\ No newline at end of file
+var _0xae60=['rpc','jayson/promise','client','http','then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xae60,0x1c7));var _0x0ae6=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xae60[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0ae6('0x0'));var util=require(_0x0ae6('0x1'));var moment=require(_0x0ae6('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ae6('0x3'));var fs=require('fs');var Redis=require(_0x0ae6('0x4'));var db=require(_0x0ae6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0ae6('0x6'))(_0x0ae6('0x7'));var config=require('../../config/environment');var jayson=require(_0x0ae6('0x8'));var client=jayson[_0x0ae6('0x9')][_0x0ae6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46fed4,_0xbb596c,_0x447a1d){return new BPromise(function(_0x120910,_0x1b5e80){return client['request'](_0x46fed4,_0x447a1d)[_0x0ae6('0xb')](function(_0x36a5e0){logger[_0x0ae6('0xc')](_0x0ae6('0xd'),_0xbb596c,'request\x20sent');logger[_0x0ae6('0xe')](_0x0ae6('0xf'),_0xbb596c,_0x0ae6('0x10'),JSON[_0x0ae6('0x11')](_0x36a5e0));if(_0x36a5e0[_0x0ae6('0x12')]){if(_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x13')]===0x1f4){logger[_0x0ae6('0x12')](_0x0ae6('0xd'),_0xbb596c,_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);return _0x1b5e80(_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);}logger[_0x0ae6('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xbb596c,_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);return _0x120910(_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);}else{logger[_0x0ae6('0xc')](_0x0ae6('0xd'),_0xbb596c,_0x0ae6('0x10'));_0x120910(_0x36a5e0[_0x0ae6('0x15')][_0x0ae6('0x14')]);}})[_0x0ae6('0x16')](function(_0x8a4c9a){logger[_0x0ae6('0x12')](_0x0ae6('0xd'),_0xbb596c,_0x8a4c9a);_0x1b5e80(_0x8a4c9a);});});}exports[_0x0ae6('0x17')]=function(_0xda4f01){var _0x3f5c41=this;return new Promise(function(_0x2fdf25,_0x1735ba){return db[_0x0ae6('0x18')][_0x0ae6('0x19')](_0xda4f01[_0x0ae6('0x1a')],{'raw':_0xda4f01[_0x0ae6('0x1b')]?_0xda4f01['options'][_0x0ae6('0x1c')]===undefined?!![]:![]:!![]})[_0x0ae6('0xb')](function(_0x140a3b){logger[_0x0ae6('0xc')](_0x0ae6('0x17'),_0xda4f01);logger[_0x0ae6('0xe')](_0x0ae6('0x17'),_0xda4f01,JSON[_0x0ae6('0x11')](_0x140a3b));_0x2fdf25(_0x140a3b);})['catch'](function(_0x39b22e){logger[_0x0ae6('0x12')](_0x0ae6('0x17'),_0x39b22e[_0x0ae6('0x14')],_0xda4f01);_0x1735ba(_0x3f5c41[_0x0ae6('0x12')](0x1f4,_0x39b22e['message']));});});};exports[_0x0ae6('0x1d')]=function(_0x4e1242){var _0xccd1c5=this;return new Promise(function(_0x3955d8,_0x3c43d8){return db[_0x0ae6('0x18')]['update'](_0x4e1242[_0x0ae6('0x1a')],{'raw':_0x4e1242[_0x0ae6('0x1b')]?_0x4e1242['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e1242[_0x0ae6('0x1b')]?_0x4e1242[_0x0ae6('0x1b')][_0x0ae6('0x1e')]||null:null,'attributes':_0x4e1242['options']?_0x4e1242[_0x0ae6('0x1b')][_0x0ae6('0x1f')]||null:null,'limit':_0x4e1242[_0x0ae6('0x1b')]?_0x4e1242['options'][_0x0ae6('0x20')]||null:null})[_0x0ae6('0xb')](function(_0x449c33){logger[_0x0ae6('0xc')](_0x0ae6('0x1d'),_0x4e1242);logger[_0x0ae6('0xe')]('UpdateOpenchannelQueueReport',_0x4e1242,JSON['stringify'](_0x449c33));_0x3955d8(_0x449c33);})[_0x0ae6('0x16')](function(_0x419384){logger['error']('UpdateOpenchannelQueueReport',_0x419384[_0x0ae6('0x14')],_0x4e1242);_0x3c43d8(_0xccd1c5[_0x0ae6('0x12')](0x1f4,_0x419384[_0x0ae6('0x14')]));});});};
\ No newline at end of file
index ed5beb5..c6e8e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4633=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','describe','show','post','create','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x38987f,_0xc79720){var _0x4cb697=function(_0x1af5ae){while(--_0x1af5ae){_0x38987f['push'](_0x38987f['shift']());}};_0x4cb697(++_0xc79720);}(_0x4633,0x9b));var _0x3463=function(_0xe2c6cb,_0x52824f){_0xe2c6cb=_0xe2c6cb-0x0;var _0x547d5a=_0x4633[_0xe2c6cb];return _0x547d5a;};'use strict';var multer=require(_0x3463('0x0'));var util=require(_0x3463('0x1'));var path=require(_0x3463('0x2'));var timeout=require(_0x3463('0x3'));var express=require(_0x3463('0x4'));var router=express[_0x3463('0x5')]();var fs_extra=require(_0x3463('0x6'));var auth=require(_0x3463('0x7'));var interaction=require(_0x3463('0x8'));var config=require(_0x3463('0x9'));var controller=require(_0x3463('0xa'));router[_0x3463('0xb')]('/',auth[_0x3463('0xc')](),controller[_0x3463('0xd')]);router[_0x3463('0xb')]('/describe',auth[_0x3463('0xc')](),controller[_0x3463('0xe')]);router[_0x3463('0xb')]('/:id',auth[_0x3463('0xc')](),controller[_0x3463('0xf')]);router[_0x3463('0x10')]('/',auth['isAuthenticated'](),controller[_0x3463('0x11')]);router[_0x3463('0x12')](_0x3463('0x13'),auth[_0x3463('0xc')](),controller[_0x3463('0x14')]);router[_0x3463('0x15')](_0x3463('0x13'),auth[_0x3463('0xc')](),controller[_0x3463('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x05cf=['create','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x05cf,0xb7));var _0xf05c=function(_0x140c11,_0x50db01){_0x140c11=_0x140c11-0x0;var _0xabe146=_0x05cf[_0x140c11];return _0xabe146;};'use strict';var multer=require(_0xf05c('0x0'));var util=require(_0xf05c('0x1'));var path=require(_0xf05c('0x2'));var timeout=require(_0xf05c('0x3'));var express=require(_0xf05c('0x4'));var router=express[_0xf05c('0x5')]();var fs_extra=require(_0xf05c('0x6'));var auth=require(_0xf05c('0x7'));var interaction=require(_0xf05c('0x8'));var config=require('../../config/environment');var controller=require(_0xf05c('0x9'));router[_0xf05c('0xa')]('/',auth[_0xf05c('0xb')](),controller[_0xf05c('0xc')]);router['get'](_0xf05c('0xd'),auth['isAuthenticated'](),controller[_0xf05c('0xe')]);router['get'](_0xf05c('0xf'),auth[_0xf05c('0xb')](),controller['show']);router[_0xf05c('0x10')]('/',auth[_0xf05c('0xb')](),controller[_0xf05c('0x11')]);router[_0xf05c('0x12')]('/:id',auth[_0xf05c('0xb')](),controller['update']);router['delete'](_0xf05c('0xf'),auth[_0xf05c('0xb')](),controller['destroy']);module[_0xf05c('0x13')]=router;
\ No newline at end of file
index da2db1d..d453f6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0xfadc1a,_0xc6a189){var _0x1be3a4=function(_0x1a9107){while(--_0x1a9107){_0xfadc1a['push'](_0xfadc1a['shift']());}};_0x1be3a4(++_0xc6a189);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x38a211,_0x1c21ff){var _0x78f594=function(_0x2cd0f3){while(--_0x2cd0f3){_0x38a211['push'](_0x38a211['shift']());}};_0x78f594(++_0x1c21ff);}(_0x9c44,0x178));var _0x49c4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9c44[_0x3bf83f];return _0x22c4a9;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 3d6a26c..5afcff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfde2=['options','includeAll','include','findAll','params','find','create','body','catch','describe','rimraf','fast-json-patch','moment','bluebird','mustache','sox','ejs','lodash','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','OpenchannelTransferReport','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','merge','type','VIRTUAL','filter'];(function(_0x4be491,_0x1c7dbc){var _0x372821=function(_0x5698ac){while(--_0x5698ac){_0x4be491['push'](_0x4be491['shift']());}};_0x372821(++_0x1c7dbc);}(_0xfde2,0x1a2));var _0x2fde=function(_0x122ca8,_0x49391a){_0x122ca8=_0x122ca8-0x0;var _0x59ecd3=_0xfde2[_0x122ca8];return _0x59ecd3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2fde('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2fde('0x1'));var rp=require('request-promise');var moment=require(_0x2fde('0x2'));var BPromise=require(_0x2fde('0x3'));var Mustache=require(_0x2fde('0x4'));var util=require('util');var path=require('path');var sox=require(_0x2fde('0x5'));var csv=require('to-csv');var ejs=require(_0x2fde('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2fde('0x7'));var squel=require('squel');var crypto=require(_0x2fde('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x2fde('0x9'));var toCsv=require(_0x2fde('0xa'));var querystring=require(_0x2fde('0xb'));var Papa=require(_0x2fde('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2fde('0xd'));var as=require(_0x2fde('0xe'));var hardwareService=require(_0x2fde('0xf'));var logger=require(_0x2fde('0x10'))(_0x2fde('0x11'));var utils=require(_0x2fde('0x12'));var config=require(_0x2fde('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fde('0x14'))['db'];function respondWithStatusCode(_0x276c79,_0xfe3583){_0xfe3583=_0xfe3583||0xcc;return function(_0x5ef6dd){if(_0x5ef6dd){return _0x276c79['sendStatus'](_0xfe3583);}return _0x276c79[_0x2fde('0x15')](_0xfe3583)[_0x2fde('0x16')]();};}function respondWithResult(_0x330f17,_0x1e42b1){_0x1e42b1=_0x1e42b1||0xc8;return function(_0x30057e){if(_0x30057e){return _0x330f17['status'](_0x1e42b1)[_0x2fde('0x17')](_0x30057e);}};}function respondWithFilteredResult(_0x343550,_0x2050c8){return function(_0x157b18){if(_0x157b18){var _0x57f583=typeof _0x2050c8[_0x2fde('0x18')]==='undefined'&&typeof _0x2050c8[_0x2fde('0x19')]===_0x2fde('0x1a');var _0x5973d2=_0x157b18['count'];var _0x2abe56=_0x57f583?0x0:_0x2050c8[_0x2fde('0x18')];var _0x22069c=_0x57f583?_0x157b18[_0x2fde('0x1b')]:_0x2050c8['offset']+_0x2050c8[_0x2fde('0x19')];var _0x5f1743;if(_0x22069c>=_0x5973d2){_0x22069c=_0x5973d2;_0x5f1743=0xc8;}else{_0x5f1743=0xce;}_0x343550['status'](_0x5f1743);return _0x343550['set'](_0x2fde('0x1c'),_0x2abe56+'-'+_0x22069c+'/'+_0x5973d2)['json'](_0x157b18);}return null;};}function patchUpdates(_0x582677){return function(_0x2ed220){try{jsonpatch['apply'](_0x2ed220,_0x582677,!![]);}catch(_0x19ba0a){return BPromise[_0x2fde('0x1d')](_0x19ba0a);}return _0x2ed220['save']();};}function saveUpdates(_0x534387,_0xfbda58){return function(_0x4fda2d){if(_0x4fda2d){return _0x4fda2d[_0x2fde('0x1e')](_0x534387)[_0x2fde('0x1f')](function(_0x71e126){return _0x71e126;});}return null;};}function removeEntity(_0x4fb028,_0x2f7cc0){return function(_0x5482d7){if(_0x5482d7){return _0x5482d7[_0x2fde('0x20')]()['then'](function(){_0x4fb028[_0x2fde('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a2b0d,_0x368ced){return function(_0x24b373){if(!_0x24b373){_0x4a2b0d[_0x2fde('0x21')](0x194);}return _0x24b373;};}function handleError(_0x16a215,_0x116425){_0x116425=_0x116425||0x1f4;return function(_0x595c03){logger[_0x2fde('0x22')](_0x595c03[_0x2fde('0x23')]);if(_0x595c03[_0x2fde('0x24')]){delete _0x595c03['name'];}_0x16a215[_0x2fde('0x15')](_0x116425)[_0x2fde('0x25')](_0x595c03);};}exports[_0x2fde('0x26')]=function(_0x1767c7,_0x235493){var _0x4a48a2={},_0x590a75={},_0x2292f9={'count':0x0,'rows':[]};var _0x389d43=_[_0x2fde('0x27')](db[_0x2fde('0x28')]['rawAttributes'],function(_0x23b7a6){return{'name':_0x23b7a6['fieldName'],'type':_0x23b7a6['type'][_0x2fde('0x29')]};});_0x590a75[_0x2fde('0x2a')]=_[_0x2fde('0x27')](_0x389d43,_0x2fde('0x24'));_0x590a75[_0x2fde('0x2b')]=_[_0x2fde('0x2c')](_0x1767c7[_0x2fde('0x2b')]);_0x590a75['filters']=_[_0x2fde('0x2d')](_0x590a75[_0x2fde('0x2a')],_0x590a75[_0x2fde('0x2b')]);_0x4a48a2['attributes']=_[_0x2fde('0x2d')](_0x590a75['model'],qs[_0x2fde('0x2e')](_0x1767c7[_0x2fde('0x2b')][_0x2fde('0x2e')]));_0x4a48a2[_0x2fde('0x2f')]=_0x4a48a2[_0x2fde('0x2f')][_0x2fde('0x30')]?_0x4a48a2[_0x2fde('0x2f')]:_0x590a75[_0x2fde('0x2a')];if(!_0x1767c7[_0x2fde('0x2b')][_0x2fde('0x31')]('nolimit')){_0x4a48a2[_0x2fde('0x19')]=qs[_0x2fde('0x19')](_0x1767c7[_0x2fde('0x2b')][_0x2fde('0x19')]);_0x4a48a2[_0x2fde('0x18')]=qs[_0x2fde('0x18')](_0x1767c7[_0x2fde('0x2b')][_0x2fde('0x18')]);}_0x4a48a2['order']=qs[_0x2fde('0x32')](_0x1767c7['query'][_0x2fde('0x32')]);_0x4a48a2[_0x2fde('0x33')]=qs[_0x2fde('0x34')](_[_0x2fde('0x35')](_0x1767c7['query'],_0x590a75['filters']),_0x389d43);if(_0x1767c7[_0x2fde('0x2b')]['filter']){_0x4a48a2[_0x2fde('0x33')]=_[_0x2fde('0x36')](_0x4a48a2['where'],{'$or':_[_0x2fde('0x27')](_0x389d43,function(_0xe9045a){if(_0xe9045a[_0x2fde('0x37')]!==_0x2fde('0x38')){var _0x268881={};_0x268881[_0xe9045a[_0x2fde('0x24')]]={'$like':'%'+_0x1767c7[_0x2fde('0x2b')][_0x2fde('0x39')]+'%'};return _0x268881;}})});}_0x4a48a2=_[_0x2fde('0x36')]({},_0x4a48a2,_0x1767c7[_0x2fde('0x3a')]);var _0x469b88={'where':_0x4a48a2[_0x2fde('0x33')]};return db[_0x2fde('0x28')][_0x2fde('0x1b')](_0x469b88)['then'](function(_0x1daa0c){_0x2292f9['count']=_0x1daa0c;if(_0x1767c7['query'][_0x2fde('0x3b')]){_0x4a48a2[_0x2fde('0x3c')]=[{'all':!![]}];}return db[_0x2fde('0x28')][_0x2fde('0x3d')](_0x4a48a2);})[_0x2fde('0x1f')](function(_0x59c827){_0x2292f9['rows']=_0x59c827;return _0x2292f9;})[_0x2fde('0x1f')](respondWithFilteredResult(_0x235493,_0x4a48a2))['catch'](handleError(_0x235493,null));};exports['show']=function(_0x31a52f,_0x3ee60d){var _0xec9338={'raw':!![],'where':{'id':_0x31a52f[_0x2fde('0x3e')]['id']}},_0x634705={};_0x634705[_0x2fde('0x2a')]=_[_0x2fde('0x2c')](db[_0x2fde('0x28')]['rawAttributes']);_0x634705['query']=_[_0x2fde('0x2c')](_0x31a52f[_0x2fde('0x2b')]);_0x634705['filters']=_[_0x2fde('0x2d')](_0x634705['model'],_0x634705[_0x2fde('0x2b')]);_0xec9338['attributes']=_[_0x2fde('0x2d')](_0x634705[_0x2fde('0x2a')],qs['fields'](_0x31a52f[_0x2fde('0x2b')][_0x2fde('0x2e')]));_0xec9338[_0x2fde('0x2f')]=_0xec9338[_0x2fde('0x2f')][_0x2fde('0x30')]?_0xec9338[_0x2fde('0x2f')]:_0x634705[_0x2fde('0x2a')];if(_0x31a52f['query'][_0x2fde('0x3b')]){_0xec9338[_0x2fde('0x3c')]=[{'all':!![]}];}_0xec9338=_[_0x2fde('0x36')]({},_0xec9338,_0x31a52f[_0x2fde('0x3a')]);return db[_0x2fde('0x28')][_0x2fde('0x3f')](_0xec9338)['then'](handleEntityNotFound(_0x3ee60d,null))[_0x2fde('0x1f')](respondWithResult(_0x3ee60d,null))['catch'](handleError(_0x3ee60d,null));};exports[_0x2fde('0x40')]=function(_0x1f0a57,_0x1f826f){return db[_0x2fde('0x28')][_0x2fde('0x40')](_0x1f0a57[_0x2fde('0x41')],{})[_0x2fde('0x1f')](respondWithResult(_0x1f826f,0xc9))[_0x2fde('0x42')](handleError(_0x1f826f,null));};exports[_0x2fde('0x1e')]=function(_0x4966e6,_0x235336){if(_0x4966e6[_0x2fde('0x41')]['id']){delete _0x4966e6[_0x2fde('0x41')]['id'];}return db[_0x2fde('0x28')][_0x2fde('0x3f')]({'where':{'id':_0x4966e6['params']['id']}})[_0x2fde('0x1f')](handleEntityNotFound(_0x235336,null))['then'](saveUpdates(_0x4966e6['body'],null))[_0x2fde('0x1f')](respondWithResult(_0x235336,null))[_0x2fde('0x42')](handleError(_0x235336,null));};exports[_0x2fde('0x20')]=function(_0x59a759,_0x44b9e5){return db['OpenchannelTransferReport'][_0x2fde('0x3f')]({'where':{'id':_0x59a759['params']['id']}})[_0x2fde('0x1f')](handleEntityNotFound(_0x44b9e5,null))[_0x2fde('0x1f')](removeEntity(_0x44b9e5,null))[_0x2fde('0x42')](handleError(_0x44b9e5,null));};exports[_0x2fde('0x43')]=function(_0x52e9f6,_0x407756){return db[_0x2fde('0x28')][_0x2fde('0x43')]()['then'](respondWithResult(_0x407756,null))[_0x2fde('0x42')](handleError(_0x407756,null));};
\ No newline at end of file
+var _0xaea1=['stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','OpenchannelTransferReport','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x13ec0a,_0x235612){var _0x4d8a50=function(_0x3637f7){while(--_0x3637f7){_0x13ec0a['push'](_0x13ec0a['shift']());}};_0x4d8a50(++_0x235612);}(_0xaea1,0x150));var _0x1aea=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xaea1[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x1aea('0x0'));var rimraf=require(_0x1aea('0x1'));var zipdir=require(_0x1aea('0x2'));var jsonpatch=require(_0x1aea('0x3'));var rp=require('request-promise');var moment=require(_0x1aea('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1aea('0x5'));var util=require(_0x1aea('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1aea('0x7'));var fs=require('fs');var fs_extra=require(_0x1aea('0x8'));var _=require(_0x1aea('0x9'));var squel=require(_0x1aea('0xa'));var crypto=require(_0x1aea('0xb'));var jsforce=require(_0x1aea('0xc'));var deskjs=require(_0x1aea('0xd'));var toCsv=require(_0x1aea('0xe'));var querystring=require('querystring');var Papa=require(_0x1aea('0xf'));var Redis=require('ioredis');var authService=require(_0x1aea('0x10'));var qs=require(_0x1aea('0x11'));var as=require(_0x1aea('0x12'));var hardwareService=require(_0x1aea('0x13'));var logger=require(_0x1aea('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x1aea('0x15'));var licenseUtil=require(_0x1aea('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13e2bd,_0x18be18){_0x18be18=_0x18be18||0xcc;return function(_0x126cc3){if(_0x126cc3){return _0x13e2bd[_0x1aea('0x17')](_0x18be18);}return _0x13e2bd[_0x1aea('0x18')](_0x18be18)[_0x1aea('0x19')]();};}function respondWithResult(_0x57d87c,_0x38b379){_0x38b379=_0x38b379||0xc8;return function(_0x1fff6f){if(_0x1fff6f){return _0x57d87c['status'](_0x38b379)[_0x1aea('0x1a')](_0x1fff6f);}};}function respondWithFilteredResult(_0x257453,_0x29e3eb){return function(_0x4112a1){if(_0x4112a1){var _0x14a69e=typeof _0x29e3eb[_0x1aea('0x1b')]===_0x1aea('0x1c')&&typeof _0x29e3eb[_0x1aea('0x1d')]===_0x1aea('0x1c');var _0x40cc35=_0x4112a1[_0x1aea('0x1e')];var _0x446814=_0x14a69e?0x0:_0x29e3eb[_0x1aea('0x1b')];var _0x289b1a=_0x14a69e?_0x4112a1[_0x1aea('0x1e')]:_0x29e3eb[_0x1aea('0x1b')]+_0x29e3eb[_0x1aea('0x1d')];var _0x4be629;if(_0x289b1a>=_0x40cc35){_0x289b1a=_0x40cc35;_0x4be629=0xc8;}else{_0x4be629=0xce;}_0x257453[_0x1aea('0x18')](_0x4be629);return _0x257453[_0x1aea('0x1f')](_0x1aea('0x20'),_0x446814+'-'+_0x289b1a+'/'+_0x40cc35)['json'](_0x4112a1);}return null;};}function patchUpdates(_0x177db8){return function(_0x32f5b0){try{jsonpatch[_0x1aea('0x21')](_0x32f5b0,_0x177db8,!![]);}catch(_0x468c52){return BPromise[_0x1aea('0x22')](_0x468c52);}return _0x32f5b0[_0x1aea('0x23')]();};}function saveUpdates(_0x1dc496,_0xb3944c){return function(_0x1d1a2a){if(_0x1d1a2a){return _0x1d1a2a[_0x1aea('0x24')](_0x1dc496)[_0x1aea('0x25')](function(_0x3d6985){return _0x3d6985;});}return null;};}function removeEntity(_0x214c63,_0x562681){return function(_0xd19ef){if(_0xd19ef){return _0xd19ef[_0x1aea('0x26')]()[_0x1aea('0x25')](function(){_0x214c63[_0x1aea('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47f3e0,_0x8524a0){return function(_0x4dbebd){if(!_0x4dbebd){_0x47f3e0['sendStatus'](0x194);}return _0x4dbebd;};}function handleError(_0x371db8,_0x1409ec){_0x1409ec=_0x1409ec||0x1f4;return function(_0x264486){logger['error'](_0x264486[_0x1aea('0x27')]);if(_0x264486['name']){delete _0x264486[_0x1aea('0x28')];}_0x371db8['status'](_0x1409ec)['send'](_0x264486);};}exports[_0x1aea('0x29')]=function(_0x246c15,_0x559b63){var _0x149543={},_0x35f1a2={},_0x2f125e={'count':0x0,'rows':[]};var _0x5bc882=_[_0x1aea('0x2a')](db['OpenchannelTransferReport'][_0x1aea('0x2b')],function(_0x5697a6){return{'name':_0x5697a6[_0x1aea('0x2c')],'type':_0x5697a6[_0x1aea('0x2d')][_0x1aea('0x2e')]};});_0x35f1a2[_0x1aea('0x2f')]=_[_0x1aea('0x2a')](_0x5bc882,'name');_0x35f1a2[_0x1aea('0x30')]=_[_0x1aea('0x31')](_0x246c15['query']);_0x35f1a2['filters']=_[_0x1aea('0x32')](_0x35f1a2[_0x1aea('0x2f')],_0x35f1a2[_0x1aea('0x30')]);_0x149543[_0x1aea('0x33')]=_['intersection'](_0x35f1a2[_0x1aea('0x2f')],qs[_0x1aea('0x34')](_0x246c15['query']['fields']));_0x149543[_0x1aea('0x33')]=_0x149543[_0x1aea('0x33')]['length']?_0x149543[_0x1aea('0x33')]:_0x35f1a2[_0x1aea('0x2f')];if(!_0x246c15['query'][_0x1aea('0x35')](_0x1aea('0x36'))){_0x149543[_0x1aea('0x1d')]=qs[_0x1aea('0x1d')](_0x246c15[_0x1aea('0x30')][_0x1aea('0x1d')]);_0x149543[_0x1aea('0x1b')]=qs[_0x1aea('0x1b')](_0x246c15['query']['offset']);}_0x149543[_0x1aea('0x37')]=qs[_0x1aea('0x38')](_0x246c15[_0x1aea('0x30')][_0x1aea('0x38')]);_0x149543[_0x1aea('0x39')]=qs[_0x1aea('0x3a')](_['pick'](_0x246c15['query'],_0x35f1a2[_0x1aea('0x3a')]),_0x5bc882);if(_0x246c15[_0x1aea('0x30')][_0x1aea('0x3b')]){_0x149543['where']=_['merge'](_0x149543[_0x1aea('0x39')],{'$or':_[_0x1aea('0x2a')](_0x5bc882,function(_0x3e4028){if(_0x3e4028['type']!==_0x1aea('0x3c')){var _0x15a6fd={};_0x15a6fd[_0x3e4028[_0x1aea('0x28')]]={'$like':'%'+_0x246c15['query'][_0x1aea('0x3b')]+'%'};return _0x15a6fd;}})});}_0x149543=_[_0x1aea('0x3d')]({},_0x149543,_0x246c15[_0x1aea('0x3e')]);var _0x49c5cc={'where':_0x149543['where']};return db[_0x1aea('0x3f')][_0x1aea('0x1e')](_0x49c5cc)[_0x1aea('0x25')](function(_0x440689){_0x2f125e[_0x1aea('0x1e')]=_0x440689;if(_0x246c15[_0x1aea('0x30')][_0x1aea('0x40')]){_0x149543['include']=[{'all':!![]}];}return db[_0x1aea('0x3f')][_0x1aea('0x41')](_0x149543);})['then'](function(_0x924a59){_0x2f125e[_0x1aea('0x42')]=_0x924a59;return _0x2f125e;})[_0x1aea('0x25')](respondWithFilteredResult(_0x559b63,_0x149543))[_0x1aea('0x43')](handleError(_0x559b63,null));};exports[_0x1aea('0x44')]=function(_0x467858,_0x4ff6ab){var _0x3f8d74={'raw':!![],'where':{'id':_0x467858[_0x1aea('0x45')]['id']}},_0x208a41={};_0x208a41[_0x1aea('0x2f')]=_[_0x1aea('0x31')](db[_0x1aea('0x3f')]['rawAttributes']);_0x208a41['query']=_[_0x1aea('0x31')](_0x467858[_0x1aea('0x30')]);_0x208a41['filters']=_[_0x1aea('0x32')](_0x208a41['model'],_0x208a41[_0x1aea('0x30')]);_0x3f8d74[_0x1aea('0x33')]=_[_0x1aea('0x32')](_0x208a41[_0x1aea('0x2f')],qs['fields'](_0x467858['query'][_0x1aea('0x34')]));_0x3f8d74['attributes']=_0x3f8d74['attributes'][_0x1aea('0x46')]?_0x3f8d74[_0x1aea('0x33')]:_0x208a41['model'];if(_0x467858['query'][_0x1aea('0x40')]){_0x3f8d74[_0x1aea('0x47')]=[{'all':!![]}];}_0x3f8d74=_['merge']({},_0x3f8d74,_0x467858[_0x1aea('0x3e')]);return db['OpenchannelTransferReport'][_0x1aea('0x48')](_0x3f8d74)[_0x1aea('0x25')](handleEntityNotFound(_0x4ff6ab,null))['then'](respondWithResult(_0x4ff6ab,null))[_0x1aea('0x43')](handleError(_0x4ff6ab,null));};exports[_0x1aea('0x49')]=function(_0x21a1d4,_0x41b9d8){return db['OpenchannelTransferReport']['create'](_0x21a1d4[_0x1aea('0x4a')],{})[_0x1aea('0x25')](respondWithResult(_0x41b9d8,0xc9))[_0x1aea('0x43')](handleError(_0x41b9d8,null));};exports[_0x1aea('0x24')]=function(_0x59c3fa,_0x56828b){if(_0x59c3fa[_0x1aea('0x4a')]['id']){delete _0x59c3fa[_0x1aea('0x4a')]['id'];}return db[_0x1aea('0x3f')][_0x1aea('0x48')]({'where':{'id':_0x59c3fa['params']['id']}})[_0x1aea('0x25')](handleEntityNotFound(_0x56828b,null))['then'](saveUpdates(_0x59c3fa['body'],null))[_0x1aea('0x25')](respondWithResult(_0x56828b,null))['catch'](handleError(_0x56828b,null));};exports['destroy']=function(_0x102ecd,_0x4c3e17){return db['OpenchannelTransferReport'][_0x1aea('0x48')]({'where':{'id':_0x102ecd[_0x1aea('0x45')]['id']}})['then'](handleEntityNotFound(_0x4c3e17,null))[_0x1aea('0x25')](removeEntity(_0x4c3e17,null))[_0x1aea('0x43')](handleError(_0x4c3e17,null));};exports['describe']=function(_0x24e57d,_0xe3d8ae){return db['OpenchannelTransferReport']['describe']()[_0x1aea('0x25')](respondWithResult(_0xe3d8ae,null))[_0x1aea('0x43')](handleError(_0xe3d8ae,null));};
\ No newline at end of file
index 0a9dde7..a4fc8e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08c4=['../../config/logger','bluebird','path','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x08c4,0x13d));var _0x408c=function(_0xae13c4,_0x2f6608){_0xae13c4=_0xae13c4-0x0;var _0x2949e8=_0x08c4[_0xae13c4];return _0x2949e8;};'use strict';var _=require(_0x408c('0x0'));var util=require(_0x408c('0x1'));var logger=require(_0x408c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x408c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x408c('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x408c('0x5'));module[_0x408c('0x6')]=function(_0x37ff0f,_0x2c2c27){return _0x37ff0f[_0x408c('0x7')](_0x408c('0x8'),attributes,{'tableName':_0x408c('0x9'),'paranoid':![],'indexes':[{'name':_0x408c('0xa'),'fields':[_0x408c('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d27=['define','report_openchannel_transfer','uniqueid','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelTransferReport.attributes'];(function(_0x42aa95,_0xdcf2db){var _0x3beaa9=function(_0x3bf369){while(--_0x3bf369){_0x42aa95['push'](_0x42aa95['shift']());}};_0x3beaa9(++_0xdcf2db);}(_0x5d27,0x1cb));var _0x75d2=function(_0x4cd846,_0x4a0f50){_0x4cd846=_0x4cd846-0x0;var _0x2f2a7d=_0x5d27[_0x4cd846];return _0x2f2a7d;};'use strict';var _=require(_0x75d2('0x0'));var util=require(_0x75d2('0x1'));var logger=require('../../config/logger')(_0x75d2('0x2'));var moment=require(_0x75d2('0x3'));var BPromise=require(_0x75d2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x75d2('0x5'));var rimraf=require(_0x75d2('0x6'));var config=require(_0x75d2('0x7'));var attributes=require(_0x75d2('0x8'));module['exports']=function(_0x2d0eab,_0x52b417){return _0x2d0eab[_0x75d2('0x9')]('OpenchannelTransferReport',attributes,{'tableName':_0x75d2('0xa'),'paranoid':![],'indexes':[{'name':_0x75d2('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ca9a79a..a109840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2d=['../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelTransferReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc'];(function(_0x57bb3a,_0x237ede){var _0x5decaa=function(_0x262a8f){while(--_0x262a8f){_0x57bb3a['push'](_0x57bb3a['shift']());}};_0x5decaa(++_0x237ede);}(_0x7a2d,0x142));var _0xd7a2=function(_0xbf0d15,_0xef2a48){_0xbf0d15=_0xbf0d15-0x0;var _0x2bfc1f=_0x7a2d[_0xbf0d15];return _0x2bfc1f;};'use strict';var _=require(_0xd7a2('0x0'));var util=require(_0xd7a2('0x1'));var moment=require(_0xd7a2('0x2'));var BPromise=require(_0xd7a2('0x3'));var rs=require(_0xd7a2('0x4'));var fs=require('fs');var Redis=require(_0xd7a2('0x5'));var db=require(_0xd7a2('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd7a2('0x7'));var config=require(_0xd7a2('0x8'));var jayson=require(_0xd7a2('0x9'));var client=jayson[_0xd7a2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x210a06,_0x209189,_0x1e3fc8){return new BPromise(function(_0x69f732,_0x1ea591){return client[_0xd7a2('0xb')](_0x210a06,_0x1e3fc8)[_0xd7a2('0xc')](function(_0x1c0b49){logger[_0xd7a2('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x209189,_0xd7a2('0xe'));logger[_0xd7a2('0xf')](_0xd7a2('0x10'),_0x209189,_0xd7a2('0xe'),JSON[_0xd7a2('0x11')](_0x1c0b49));if(_0x1c0b49[_0xd7a2('0x12')]){if(_0x1c0b49[_0xd7a2('0x12')]['code']===0x1f4){logger['error'](_0xd7a2('0x13'),_0x209189,_0x1c0b49['error'][_0xd7a2('0x14')]);return _0x1ea591(_0x1c0b49[_0xd7a2('0x12')][_0xd7a2('0x14')]);}logger[_0xd7a2('0x12')](_0xd7a2('0x13'),_0x209189,_0x1c0b49[_0xd7a2('0x12')][_0xd7a2('0x14')]);return _0x69f732(_0x1c0b49[_0xd7a2('0x12')][_0xd7a2('0x14')]);}else{logger[_0xd7a2('0xd')](_0xd7a2('0x13'),_0x209189,'request\x20sent');_0x69f732(_0x1c0b49[_0xd7a2('0x15')]['message']);}})['catch'](function(_0x26763e){logger[_0xd7a2('0x12')](_0xd7a2('0x13'),_0x209189,_0x26763e);_0x1ea591(_0x26763e);});});}
\ No newline at end of file
+var _0x0689=['catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x470fb2,_0x7b62f0){var _0x39d45d=function(_0x533a){while(--_0x533a){_0x470fb2['push'](_0x470fb2['shift']());}};_0x39d45d(++_0x7b62f0);}(_0x0689,0x161));var _0x9068=function(_0xf6b8e7,_0xaea5cd){_0xf6b8e7=_0xf6b8e7-0x0;var _0x5b7563=_0x0689[_0xf6b8e7];return _0x5b7563;};'use strict';var _=require('lodash');var util=require(_0x9068('0x0'));var moment=require('moment');var BPromise=require(_0x9068('0x1'));var rs=require(_0x9068('0x2'));var fs=require('fs');var Redis=require(_0x9068('0x3'));var db=require(_0x9068('0x4'))['db'];var utils=require(_0x9068('0x5'));var logger=require(_0x9068('0x6'))(_0x9068('0x7'));var config=require(_0x9068('0x8'));var jayson=require(_0x9068('0x9'));var client=jayson[_0x9068('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34cb67,_0x5c833f,_0x4bdd1b){return new BPromise(function(_0x17bc63,_0x184746){return client[_0x9068('0xb')](_0x34cb67,_0x4bdd1b)[_0x9068('0xc')](function(_0x1c63d2){logger[_0x9068('0xd')](_0x9068('0xe'),_0x5c833f,_0x9068('0xf'));logger[_0x9068('0x10')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x5c833f,_0x9068('0xf'),JSON[_0x9068('0x11')](_0x1c63d2));if(_0x1c63d2[_0x9068('0x12')]){if(_0x1c63d2[_0x9068('0x12')]['code']===0x1f4){logger[_0x9068('0x12')](_0x9068('0xe'),_0x5c833f,_0x1c63d2[_0x9068('0x12')]['message']);return _0x184746(_0x1c63d2[_0x9068('0x12')][_0x9068('0x13')]);}logger[_0x9068('0x12')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x5c833f,_0x1c63d2[_0x9068('0x12')][_0x9068('0x13')]);return _0x17bc63(_0x1c63d2['error'][_0x9068('0x13')]);}else{logger[_0x9068('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x5c833f,_0x9068('0xf'));_0x17bc63(_0x1c63d2[_0x9068('0x14')][_0x9068('0x13')]);}})[_0x9068('0x15')](function(_0x576b34){logger[_0x9068('0x12')](_0x9068('0xe'),_0x5c833f,_0x576b34);_0x184746(_0x576b34);});});}
\ No newline at end of file
index 3fda69a..d2d4022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528e=['isAuthenticated','index','/:id','show','put','update','delete','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./pause.controller','get'];(function(_0x1d53cd,_0x24bf78){var _0x3a3bb4=function(_0x156975){while(--_0x156975){_0x1d53cd['push'](_0x1d53cd['shift']());}};_0x3a3bb4(++_0x24bf78);}(_0x528e,0x157));var _0xe528=function(_0xccbfb,_0x2bc867){_0xccbfb=_0xccbfb-0x0;var _0x300599=_0x528e[_0xccbfb];return _0x300599;};'use strict';var multer=require(_0xe528('0x0'));var util=require(_0xe528('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xe528('0x2'));var auth=require(_0xe528('0x3'));var interaction=require(_0xe528('0x4'));var config=require('../../config/environment');var controller=require(_0xe528('0x5'));router[_0xe528('0x6')]('/',auth[_0xe528('0x7')](),controller[_0xe528('0x8')]);router[_0xe528('0x6')](_0xe528('0x9'),auth[_0xe528('0x7')](),controller[_0xe528('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xe528('0xb')](_0xe528('0x9'),auth[_0xe528('0x7')](),controller[_0xe528('0xc')]);router[_0xe528('0xd')](_0xe528('0x9'),auth[_0xe528('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7a35=['/:id','update','delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','show','post','isAuthenticated','create','put'];(function(_0x50cd2e,_0xc5460){var _0x55036c=function(_0x3ce87f){while(--_0x3ce87f){_0x50cd2e['push'](_0x50cd2e['shift']());}};_0x55036c(++_0xc5460);}(_0x7a35,0x17f));var _0x57a3=function(_0x25e761,_0xe5c435){_0x25e761=_0x25e761-0x0;var _0x2740af=_0x7a35[_0x25e761];return _0x2740af;};'use strict';var multer=require('multer');var util=require(_0x57a3('0x0'));var path=require(_0x57a3('0x1'));var timeout=require(_0x57a3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x57a3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x57a3('0x4'));var config=require(_0x57a3('0x5'));var controller=require(_0x57a3('0x6'));router[_0x57a3('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x57a3('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x57a3('0x8')]);router[_0x57a3('0x9')]('/',auth[_0x57a3('0xa')](),controller[_0x57a3('0xb')]);router[_0x57a3('0xc')](_0x57a3('0xd'),auth[_0x57a3('0xa')](),controller[_0x57a3('0xe')]);router[_0x57a3('0xf')](_0x57a3('0xd'),auth[_0x57a3('0xa')](),controller[_0x57a3('0x10')]);module[_0x57a3('0x11')]=router;
\ No newline at end of file
index 20ee0e7..2e9d640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9250=['exports','STRING','name','sequelize'];(function(_0x4473d7,_0x49c766){var _0x1414e7=function(_0x276ee7){while(--_0x276ee7){_0x4473d7['push'](_0x4473d7['shift']());}};_0x1414e7(++_0x49c766);}(_0x9250,0x11b));var _0x0925=function(_0x2643b5,_0x3a511b){_0x2643b5=_0x2643b5-0x0;var _0x1576bf=_0x9250[_0x2643b5];return _0x1576bf;};'use strict';var Sequelize=require(_0x0925('0x0'));module[_0x0925('0x1')]={'name':{'type':Sequelize[_0x0925('0x2')],'unique':_0x0925('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7197=['name','sequelize','STRING'];(function(_0x22300b,_0x216d20){var _0x3d84be=function(_0x22873a){while(--_0x22873a){_0x22300b['push'](_0x22300b['shift']());}};_0x3d84be(++_0x216d20);}(_0x7197,0x16f));var _0x7719=function(_0x318ae5,_0x240a56){_0x318ae5=_0x318ae5-0x0;var _0xf56ddb=_0x7197[_0x318ae5];return _0xf56ddb;};'use strict';var Sequelize=require(_0x7719('0x0'));module['exports']={'name':{'type':Sequelize[_0x7719('0x1')],'unique':_0x7719('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x7719('0x1')]}};
\ No newline at end of file
index 6ff2cab..c0acd0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0fb=['mustache','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','Pauses','UserProfileResource','end','error','stack','name','send','map','Pause','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x13dbbd,_0x2855fc){var _0x2da1da=function(_0x350b56){while(--_0x350b56){_0x13dbbd['push'](_0x13dbbd['shift']());}};_0x2da1da(++_0x2855fc);}(_0xd0fb,0xa1));var _0xbd0f=function(_0x19a931,_0xed2e27){_0x19a931=_0x19a931-0x0;var _0x463fc3=_0xd0fb[_0x19a931];return _0x463fc3;};'use strict';var emlformat=require(_0xbd0f('0x0'));var rimraf=require(_0xbd0f('0x1'));var zipdir=require(_0xbd0f('0x2'));var jsonpatch=require(_0xbd0f('0x3'));var rp=require(_0xbd0f('0x4'));var moment=require(_0xbd0f('0x5'));var BPromise=require(_0xbd0f('0x6'));var Mustache=require(_0xbd0f('0x7'));var util=require('util');var path=require('path');var sox=require(_0xbd0f('0x8'));var csv=require(_0xbd0f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbd0f('0xa'));var crypto=require('crypto');var jsforce=require(_0xbd0f('0xb'));var deskjs=require(_0xbd0f('0xc'));var toCsv=require('to-csv');var querystring=require(_0xbd0f('0xd'));var Papa=require('papaparse');var Redis=require(_0xbd0f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xbd0f('0xf'));var as=require(_0xbd0f('0x10'));var hardwareService=require(_0xbd0f('0x11'));var logger=require(_0xbd0f('0x12'))(_0xbd0f('0x13'));var utils=require('../../config/utils');var config=require(_0xbd0f('0x14'));var licenseUtil=require(_0xbd0f('0x15'));var db=require(_0xbd0f('0x16'))['db'];function respondWithStatusCode(_0x3520d5,_0x1989a0){_0x1989a0=_0x1989a0||0xcc;return function(_0x2e1671){if(_0x2e1671){return _0x3520d5[_0xbd0f('0x17')](_0x1989a0);}return _0x3520d5['status'](_0x1989a0)['end']();};}function respondWithResult(_0x351463,_0x148932){_0x148932=_0x148932||0xc8;return function(_0x495429){if(_0x495429){return _0x351463[_0xbd0f('0x18')](_0x148932)[_0xbd0f('0x19')](_0x495429);}};}function respondWithFilteredResult(_0x7d52e7,_0x3e2da4){return function(_0x5d00a9){if(_0x5d00a9){var _0x49a507=typeof _0x3e2da4[_0xbd0f('0x1a')]==='undefined'&&typeof _0x3e2da4[_0xbd0f('0x1b')]===_0xbd0f('0x1c');var _0x104ba3=_0x5d00a9[_0xbd0f('0x1d')];var _0x3e7692=_0x49a507?0x0:_0x3e2da4[_0xbd0f('0x1a')];var _0x51cd69=_0x49a507?_0x5d00a9[_0xbd0f('0x1d')]:_0x3e2da4['offset']+_0x3e2da4[_0xbd0f('0x1b')];var _0x10f281;if(_0x51cd69>=_0x104ba3){_0x51cd69=_0x104ba3;_0x10f281=0xc8;}else{_0x10f281=0xce;}_0x7d52e7[_0xbd0f('0x18')](_0x10f281);return _0x7d52e7[_0xbd0f('0x1e')](_0xbd0f('0x1f'),_0x3e7692+'-'+_0x51cd69+'/'+_0x104ba3)[_0xbd0f('0x19')](_0x5d00a9);}return null;};}function patchUpdates(_0x24d66c){return function(_0xa6ca15){try{jsonpatch[_0xbd0f('0x20')](_0xa6ca15,_0x24d66c,!![]);}catch(_0x4280fa){return BPromise[_0xbd0f('0x21')](_0x4280fa);}return _0xa6ca15['save']();};}function saveUpdates(_0x33e8bd,_0x2f4194){return function(_0x1bb80b){if(_0x1bb80b){return _0x1bb80b[_0xbd0f('0x22')](_0x33e8bd)[_0xbd0f('0x23')](function(_0x1c617f){return _0x1c617f;});}return null;};}function removeEntity(_0x15f24b,_0x340610){return function(_0x5a5b83){if(_0x5a5b83){return _0x5a5b83[_0xbd0f('0x24')]()['then'](function(){var _0x330771=_0x5a5b83[_0xbd0f('0x25')]({'plain':!![]});var _0x5dab42=_0xbd0f('0x26');return db[_0xbd0f('0x27')][_0xbd0f('0x24')]({'where':{'type':_0x5dab42,'resourceId':_0x330771['id']}})['then'](function(){return _0x5a5b83;});})[_0xbd0f('0x23')](function(){_0x15f24b['status'](0xcc)[_0xbd0f('0x28')]();});}};}function handleEntityNotFound(_0x3cb48f,_0x17cfab){return function(_0x1f1bb1){if(!_0x1f1bb1){_0x3cb48f[_0xbd0f('0x17')](0x194);}return _0x1f1bb1;};}function handleError(_0x11947f,_0xf8724e){_0xf8724e=_0xf8724e||0x1f4;return function(_0x1870de){logger[_0xbd0f('0x29')](_0x1870de[_0xbd0f('0x2a')]);if(_0x1870de[_0xbd0f('0x2b')]){delete _0x1870de[_0xbd0f('0x2b')];}_0x11947f['status'](_0xf8724e)[_0xbd0f('0x2c')](_0x1870de);};}exports['index']=function(_0x3caee1,_0x42c7d5){var _0x307c7a={},_0x53d6f0={},_0x1e8920={'count':0x0,'rows':[]};var _0x1db01a=_[_0xbd0f('0x2d')](db[_0xbd0f('0x2e')]['rawAttributes'],function(_0xde5484){return{'name':_0xde5484[_0xbd0f('0x2f')],'type':_0xde5484[_0xbd0f('0x30')][_0xbd0f('0x31')]};});_0x53d6f0[_0xbd0f('0x32')]=_['map'](_0x1db01a,_0xbd0f('0x2b'));_0x53d6f0[_0xbd0f('0x33')]=_[_0xbd0f('0x34')](_0x3caee1['query']);_0x53d6f0[_0xbd0f('0x35')]=_[_0xbd0f('0x36')](_0x53d6f0[_0xbd0f('0x32')],_0x53d6f0[_0xbd0f('0x33')]);_0x307c7a['attributes']=_[_0xbd0f('0x36')](_0x53d6f0[_0xbd0f('0x32')],qs[_0xbd0f('0x37')](_0x3caee1[_0xbd0f('0x33')][_0xbd0f('0x37')]));_0x307c7a[_0xbd0f('0x38')]=_0x307c7a['attributes'][_0xbd0f('0x39')]?_0x307c7a[_0xbd0f('0x38')]:_0x53d6f0['model'];if(!_0x3caee1['query'][_0xbd0f('0x3a')](_0xbd0f('0x3b'))){_0x307c7a[_0xbd0f('0x1b')]=qs[_0xbd0f('0x1b')](_0x3caee1[_0xbd0f('0x33')][_0xbd0f('0x1b')]);_0x307c7a[_0xbd0f('0x1a')]=qs[_0xbd0f('0x1a')](_0x3caee1[_0xbd0f('0x33')]['offset']);}_0x307c7a[_0xbd0f('0x3c')]=qs[_0xbd0f('0x3d')](_0x3caee1[_0xbd0f('0x33')][_0xbd0f('0x3d')]);_0x307c7a[_0xbd0f('0x3e')]=qs[_0xbd0f('0x35')](_[_0xbd0f('0x3f')](_0x3caee1[_0xbd0f('0x33')],_0x53d6f0['filters']),_0x1db01a);if(_0x3caee1[_0xbd0f('0x33')]['filter']){_0x307c7a['where']=_[_0xbd0f('0x40')](_0x307c7a[_0xbd0f('0x3e')],{'$or':_['map'](_0x1db01a,function(_0x52f3f5){if(_0x52f3f5[_0xbd0f('0x30')]!==_0xbd0f('0x41')){var _0x4fa020={};_0x4fa020[_0x52f3f5['name']]={'$like':'%'+_0x3caee1[_0xbd0f('0x33')][_0xbd0f('0x42')]+'%'};return _0x4fa020;}})});}_0x307c7a=_[_0xbd0f('0x40')]({},_0x307c7a,_0x3caee1[_0xbd0f('0x43')]);var _0x2f4fce={'where':_0x307c7a[_0xbd0f('0x3e')]};return db[_0xbd0f('0x2e')][_0xbd0f('0x1d')](_0x2f4fce)[_0xbd0f('0x23')](function(_0x9e4e76){_0x1e8920['count']=_0x9e4e76;if(_0x3caee1[_0xbd0f('0x33')][_0xbd0f('0x44')]){_0x307c7a[_0xbd0f('0x45')]=[{'all':!![]}];}return db['Pause'][_0xbd0f('0x46')](_0x307c7a);})['then'](function(_0x39de5d){_0x1e8920[_0xbd0f('0x47')]=_0x39de5d;return _0x1e8920;})['then'](respondWithFilteredResult(_0x42c7d5,_0x307c7a))[_0xbd0f('0x48')](handleError(_0x42c7d5,null));};exports[_0xbd0f('0x49')]=function(_0x528186,_0xbc1710){var _0x35e051={'raw':!![],'where':{'id':_0x528186[_0xbd0f('0x4a')]['id']}},_0x38f0d7={};_0x38f0d7[_0xbd0f('0x32')]=_['keys'](db[_0xbd0f('0x2e')][_0xbd0f('0x4b')]);_0x38f0d7['query']=_[_0xbd0f('0x34')](_0x528186[_0xbd0f('0x33')]);_0x38f0d7['filters']=_[_0xbd0f('0x36')](_0x38f0d7[_0xbd0f('0x32')],_0x38f0d7[_0xbd0f('0x33')]);_0x35e051[_0xbd0f('0x38')]=_[_0xbd0f('0x36')](_0x38f0d7[_0xbd0f('0x32')],qs[_0xbd0f('0x37')](_0x528186[_0xbd0f('0x33')]['fields']));_0x35e051['attributes']=_0x35e051[_0xbd0f('0x38')][_0xbd0f('0x39')]?_0x35e051['attributes']:_0x38f0d7[_0xbd0f('0x32')];if(_0x528186[_0xbd0f('0x33')][_0xbd0f('0x44')]){_0x35e051[_0xbd0f('0x45')]=[{'all':!![]}];}_0x35e051=_['merge']({},_0x35e051,_0x528186[_0xbd0f('0x43')]);return db['Pause'][_0xbd0f('0x4c')](_0x35e051)[_0xbd0f('0x23')](handleEntityNotFound(_0xbc1710,null))['then'](respondWithResult(_0xbc1710,null))[_0xbd0f('0x48')](handleError(_0xbc1710,null));};exports[_0xbd0f('0x4d')]=function(_0x5e57a0,_0x12c453){return db[_0xbd0f('0x2e')][_0xbd0f('0x4d')](_0x5e57a0[_0xbd0f('0x4e')],{})[_0xbd0f('0x23')](function(_0x3e11de){var _0xecfb8=_0x5e57a0['user'][_0xbd0f('0x25')]({'plain':!![]});if(!_0xecfb8)throw new Error(_0xbd0f('0x4f'));if(_0xecfb8[_0xbd0f('0x50')]===_0xbd0f('0x51')){var _0x45fab6=_0x3e11de['get']({'plain':!![]});var _0x3308c2=_0xbd0f('0x26');return db[_0xbd0f('0x52')][_0xbd0f('0x4c')]({'where':{'name':_0x3308c2,'userProfileId':_0xecfb8[_0xbd0f('0x53')]},'raw':!![]})[_0xbd0f('0x23')](function(_0x50c97d){if(_0x50c97d&&_0x50c97d['autoAssociation']===0x0){return db[_0xbd0f('0x27')][_0xbd0f('0x4d')]({'name':_0x45fab6[_0xbd0f('0x2b')],'resourceId':_0x45fab6['id'],'type':_0x50c97d[_0xbd0f('0x2b')],'sectionId':_0x50c97d['id']},{})[_0xbd0f('0x23')](function(){return _0x3e11de;});}else{return _0x3e11de;}})[_0xbd0f('0x48')](function(_0xfd3c5b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfd3c5b);throw _0xfd3c5b;});}return _0x3e11de;})[_0xbd0f('0x23')](respondWithResult(_0x12c453,0xc9))['catch'](handleError(_0x12c453,null));};exports[_0xbd0f('0x22')]=function(_0x59655d,_0x39f2ab){if(_0x59655d[_0xbd0f('0x4e')]['id']){delete _0x59655d[_0xbd0f('0x4e')]['id'];}return db['Pause']['find']({'where':{'id':_0x59655d[_0xbd0f('0x4a')]['id']}})[_0xbd0f('0x23')](handleEntityNotFound(_0x39f2ab,null))[_0xbd0f('0x23')](saveUpdates(_0x59655d[_0xbd0f('0x4e')],null))[_0xbd0f('0x23')](respondWithResult(_0x39f2ab,null))[_0xbd0f('0x48')](handleError(_0x39f2ab,null));};exports['destroy']=function(_0x5e6792,_0xa9fab){return db[_0xbd0f('0x2e')][_0xbd0f('0x4c')]({'where':{'id':_0x5e6792[_0xbd0f('0x4a')]['id']}})[_0xbd0f('0x23')](handleEntityNotFound(_0xa9fab,null))[_0xbd0f('0x23')](removeEntity(_0xa9fab,null))[_0xbd0f('0x48')](handleError(_0xa9fab,null));};
\ No newline at end of file
+var _0xd869=['attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','catch','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','get','Pauses','UserProfileResource','error','stack','name','send','index','map','Pause','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x2e9e27,_0x4c317d){var _0x12f484=function(_0x1845e7){while(--_0x1845e7){_0x2e9e27['push'](_0x2e9e27['shift']());}};_0x12f484(++_0x4c317d);}(_0xd869,0x184));var _0x9d86=function(_0x167211,_0x52c558){_0x167211=_0x167211-0x0;var _0x395f67=_0xd869[_0x167211];return _0x395f67;};'use strict';var emlformat=require(_0x9d86('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9d86('0x1'));var rp=require(_0x9d86('0x2'));var moment=require(_0x9d86('0x3'));var BPromise=require(_0x9d86('0x4'));var Mustache=require(_0x9d86('0x5'));var util=require(_0x9d86('0x6'));var path=require(_0x9d86('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9d86('0x8'));var fs=require('fs');var fs_extra=require(_0x9d86('0x9'));var _=require('lodash');var squel=require(_0x9d86('0xa'));var crypto=require('crypto');var jsforce=require(_0x9d86('0xb'));var deskjs=require(_0x9d86('0xc'));var toCsv=require(_0x9d86('0xd'));var querystring=require(_0x9d86('0xe'));var Papa=require(_0x9d86('0xf'));var Redis=require(_0x9d86('0x10'));var authService=require(_0x9d86('0x11'));var qs=require(_0x9d86('0x12'));var as=require(_0x9d86('0x13'));var hardwareService=require(_0x9d86('0x14'));var logger=require(_0x9d86('0x15'))(_0x9d86('0x16'));var utils=require('../../config/utils');var config=require(_0x9d86('0x17'));var licenseUtil=require(_0x9d86('0x18'));var db=require(_0x9d86('0x19'))['db'];function respondWithStatusCode(_0x4a74a5,_0x47842d){_0x47842d=_0x47842d||0xcc;return function(_0x4458c7){if(_0x4458c7){return _0x4a74a5[_0x9d86('0x1a')](_0x47842d);}return _0x4a74a5[_0x9d86('0x1b')](_0x47842d)[_0x9d86('0x1c')]();};}function respondWithResult(_0x5ab708,_0x534591){_0x534591=_0x534591||0xc8;return function(_0x11eafb){if(_0x11eafb){return _0x5ab708[_0x9d86('0x1b')](_0x534591)[_0x9d86('0x1d')](_0x11eafb);}};}function respondWithFilteredResult(_0x2b68eb,_0x3af2be){return function(_0x1cd78d){if(_0x1cd78d){var _0x384362=typeof _0x3af2be[_0x9d86('0x1e')]===_0x9d86('0x1f')&&typeof _0x3af2be['limit']===_0x9d86('0x1f');var _0x21da40=_0x1cd78d[_0x9d86('0x20')];var _0x56009f=_0x384362?0x0:_0x3af2be[_0x9d86('0x1e')];var _0xcd6ef0=_0x384362?_0x1cd78d[_0x9d86('0x20')]:_0x3af2be[_0x9d86('0x1e')]+_0x3af2be[_0x9d86('0x21')];var _0x1908ee;if(_0xcd6ef0>=_0x21da40){_0xcd6ef0=_0x21da40;_0x1908ee=0xc8;}else{_0x1908ee=0xce;}_0x2b68eb['status'](_0x1908ee);return _0x2b68eb['set']('Content-Range',_0x56009f+'-'+_0xcd6ef0+'/'+_0x21da40)['json'](_0x1cd78d);}return null;};}function patchUpdates(_0x511b1f){return function(_0x4b16ae){try{jsonpatch[_0x9d86('0x22')](_0x4b16ae,_0x511b1f,!![]);}catch(_0x90d3d0){return BPromise[_0x9d86('0x23')](_0x90d3d0);}return _0x4b16ae[_0x9d86('0x24')]();};}function saveUpdates(_0xab4270,_0x157049){return function(_0x4105c5){if(_0x4105c5){return _0x4105c5[_0x9d86('0x25')](_0xab4270)[_0x9d86('0x26')](function(_0x1280da){return _0x1280da;});}return null;};}function removeEntity(_0x21f657,_0x14b295){return function(_0x4307dc){if(_0x4307dc){return _0x4307dc[_0x9d86('0x27')]()['then'](function(){var _0x594013=_0x4307dc[_0x9d86('0x28')]({'plain':!![]});var _0x100de1=_0x9d86('0x29');return db[_0x9d86('0x2a')][_0x9d86('0x27')]({'where':{'type':_0x100de1,'resourceId':_0x594013['id']}})[_0x9d86('0x26')](function(){return _0x4307dc;});})[_0x9d86('0x26')](function(){_0x21f657[_0x9d86('0x1b')](0xcc)[_0x9d86('0x1c')]();});}};}function handleEntityNotFound(_0x5a9e63,_0x10d6d9){return function(_0x575381){if(!_0x575381){_0x5a9e63['sendStatus'](0x194);}return _0x575381;};}function handleError(_0x56ad4d,_0x497167){_0x497167=_0x497167||0x1f4;return function(_0x389a02){logger[_0x9d86('0x2b')](_0x389a02[_0x9d86('0x2c')]);if(_0x389a02[_0x9d86('0x2d')]){delete _0x389a02[_0x9d86('0x2d')];}_0x56ad4d[_0x9d86('0x1b')](_0x497167)[_0x9d86('0x2e')](_0x389a02);};}exports[_0x9d86('0x2f')]=function(_0x2272de,_0xb6dcf9){var _0x19cd75={},_0x493c56={},_0x454ec4={'count':0x0,'rows':[]};var _0x5b89b6=_[_0x9d86('0x30')](db[_0x9d86('0x31')][_0x9d86('0x32')],function(_0x30ae8f){return{'name':_0x30ae8f[_0x9d86('0x33')],'type':_0x30ae8f[_0x9d86('0x34')][_0x9d86('0x35')]};});_0x493c56[_0x9d86('0x36')]=_[_0x9d86('0x30')](_0x5b89b6,_0x9d86('0x2d'));_0x493c56[_0x9d86('0x37')]=_[_0x9d86('0x38')](_0x2272de[_0x9d86('0x37')]);_0x493c56['filters']=_['intersection'](_0x493c56['model'],_0x493c56[_0x9d86('0x37')]);_0x19cd75[_0x9d86('0x39')]=_[_0x9d86('0x3a')](_0x493c56[_0x9d86('0x36')],qs['fields'](_0x2272de[_0x9d86('0x37')][_0x9d86('0x3b')]));_0x19cd75[_0x9d86('0x39')]=_0x19cd75[_0x9d86('0x39')][_0x9d86('0x3c')]?_0x19cd75[_0x9d86('0x39')]:_0x493c56[_0x9d86('0x36')];if(!_0x2272de[_0x9d86('0x37')][_0x9d86('0x3d')](_0x9d86('0x3e'))){_0x19cd75['limit']=qs['limit'](_0x2272de[_0x9d86('0x37')][_0x9d86('0x21')]);_0x19cd75[_0x9d86('0x1e')]=qs[_0x9d86('0x1e')](_0x2272de[_0x9d86('0x37')][_0x9d86('0x1e')]);}_0x19cd75[_0x9d86('0x3f')]=qs[_0x9d86('0x40')](_0x2272de[_0x9d86('0x37')][_0x9d86('0x40')]);_0x19cd75[_0x9d86('0x41')]=qs[_0x9d86('0x42')](_[_0x9d86('0x43')](_0x2272de[_0x9d86('0x37')],_0x493c56[_0x9d86('0x42')]),_0x5b89b6);if(_0x2272de[_0x9d86('0x37')][_0x9d86('0x44')]){_0x19cd75[_0x9d86('0x41')]=_[_0x9d86('0x45')](_0x19cd75[_0x9d86('0x41')],{'$or':_[_0x9d86('0x30')](_0x5b89b6,function(_0x5671b7){if(_0x5671b7[_0x9d86('0x34')]!==_0x9d86('0x46')){var _0x806d66={};_0x806d66[_0x5671b7[_0x9d86('0x2d')]]={'$like':'%'+_0x2272de['query']['filter']+'%'};return _0x806d66;}})});}_0x19cd75=_[_0x9d86('0x45')]({},_0x19cd75,_0x2272de[_0x9d86('0x47')]);var _0x4ee30d={'where':_0x19cd75[_0x9d86('0x41')]};return db[_0x9d86('0x31')][_0x9d86('0x20')](_0x4ee30d)[_0x9d86('0x26')](function(_0x49f8ac){_0x454ec4['count']=_0x49f8ac;if(_0x2272de['query'][_0x9d86('0x48')]){_0x19cd75[_0x9d86('0x49')]=[{'all':!![]}];}return db[_0x9d86('0x31')][_0x9d86('0x4a')](_0x19cd75);})[_0x9d86('0x26')](function(_0x2e311b){_0x454ec4[_0x9d86('0x4b')]=_0x2e311b;return _0x454ec4;})['then'](respondWithFilteredResult(_0xb6dcf9,_0x19cd75))['catch'](handleError(_0xb6dcf9,null));};exports[_0x9d86('0x4c')]=function(_0x11ec64,_0x3e6470){var _0x402230={'raw':!![],'where':{'id':_0x11ec64['params']['id']}},_0x50b104={};_0x50b104[_0x9d86('0x36')]=_[_0x9d86('0x38')](db['Pause']['rawAttributes']);_0x50b104[_0x9d86('0x37')]=_[_0x9d86('0x38')](_0x11ec64[_0x9d86('0x37')]);_0x50b104['filters']=_['intersection'](_0x50b104[_0x9d86('0x36')],_0x50b104[_0x9d86('0x37')]);_0x402230[_0x9d86('0x39')]=_[_0x9d86('0x3a')](_0x50b104[_0x9d86('0x36')],qs['fields'](_0x11ec64[_0x9d86('0x37')][_0x9d86('0x3b')]));_0x402230[_0x9d86('0x39')]=_0x402230[_0x9d86('0x39')][_0x9d86('0x3c')]?_0x402230['attributes']:_0x50b104[_0x9d86('0x36')];if(_0x11ec64[_0x9d86('0x37')][_0x9d86('0x48')]){_0x402230[_0x9d86('0x49')]=[{'all':!![]}];}_0x402230=_[_0x9d86('0x45')]({},_0x402230,_0x11ec64[_0x9d86('0x47')]);return db['Pause'][_0x9d86('0x4d')](_0x402230)['then'](handleEntityNotFound(_0x3e6470,null))['then'](respondWithResult(_0x3e6470,null))['catch'](handleError(_0x3e6470,null));};exports[_0x9d86('0x4e')]=function(_0x5240aa,_0x55db64){return db['Pause'][_0x9d86('0x4e')](_0x5240aa[_0x9d86('0x4f')],{})[_0x9d86('0x26')](function(_0x355a8c){var _0x2053fb=_0x5240aa[_0x9d86('0x50')][_0x9d86('0x28')]({'plain':!![]});if(!_0x2053fb)throw new Error(_0x9d86('0x51'));if(_0x2053fb[_0x9d86('0x52')]===_0x9d86('0x50')){var _0x128795=_0x355a8c['get']({'plain':!![]});var _0xca0d84='Pauses';return db[_0x9d86('0x53')][_0x9d86('0x4d')]({'where':{'name':_0xca0d84,'userProfileId':_0x2053fb[_0x9d86('0x54')]},'raw':!![]})['then'](function(_0x117c6e){if(_0x117c6e&&_0x117c6e[_0x9d86('0x55')]===0x0){return db['UserProfileResource'][_0x9d86('0x4e')]({'name':_0x128795['name'],'resourceId':_0x128795['id'],'type':_0x117c6e[_0x9d86('0x2d')],'sectionId':_0x117c6e['id']},{})['then'](function(){return _0x355a8c;});}else{return _0x355a8c;}})['catch'](function(_0x336874){logger[_0x9d86('0x2b')](_0x9d86('0x56'),_0x336874);throw _0x336874;});}return _0x355a8c;})['then'](respondWithResult(_0x55db64,0xc9))['catch'](handleError(_0x55db64,null));};exports[_0x9d86('0x25')]=function(_0x27a6b1,_0x3f44d5){if(_0x27a6b1['body']['id']){delete _0x27a6b1['body']['id'];}return db['Pause'][_0x9d86('0x4d')]({'where':{'id':_0x27a6b1[_0x9d86('0x57')]['id']}})[_0x9d86('0x26')](handleEntityNotFound(_0x3f44d5,null))[_0x9d86('0x26')](saveUpdates(_0x27a6b1['body'],null))[_0x9d86('0x26')](respondWithResult(_0x3f44d5,null))['catch'](handleError(_0x3f44d5,null));};exports[_0x9d86('0x27')]=function(_0x345667,_0x296f45){return db[_0x9d86('0x31')][_0x9d86('0x4d')]({'where':{'id':_0x345667['params']['id']}})[_0x9d86('0x26')](handleEntityNotFound(_0x296f45,null))[_0x9d86('0x26')](removeEntity(_0x296f45,null))[_0x9d86('0x58')](handleError(_0x296f45,null));};
\ No newline at end of file
index 10a2c33..b828959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','moment'];(function(_0x117069,_0x684e8d){var _0x398a08=function(_0x2450d4){while(--_0x2450d4){_0x117069['push'](_0x117069['shift']());}};_0x398a08(++_0x684e8d);}(_0xe14b,0x93));var _0xbe14=function(_0x1f422c,_0x1453cd){_0x1f422c=_0x1f422c-0x0;var _0x28f767=_0xe14b[_0x1f422c];return _0x28f767;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6aa7=['Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6aa7,0x178));var _0x76aa=function(_0x5e4eba,_0x1f8c36){_0x5e4eba=_0x5e4eba-0x0;var _0x13ce9e=_0x6aa7[_0x5e4eba];return _0x13ce9e;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var logger=require(_0x76aa('0x1'))(_0x76aa('0x2'));var moment=require(_0x76aa('0x3'));var BPromise=require(_0x76aa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x76aa('0x5'));var rimraf=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1aceaa,_0x4d53f6){return _0x1aceaa[_0x76aa('0x8')](_0x76aa('0x9'),attributes,{'tableName':_0x76aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 80d3ccc..67b557e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2cf17d,_0x48845d){var _0x105480=function(_0x1232ea){while(--_0x1232ea){_0x2cf17d['push'](_0x2cf17d['shift']());}};_0x105480(++_0x48845d);}(_0x7a54,0x106));var _0x47a5=function(_0x3a7014,_0x93a67c){_0x3a7014=_0x3a7014-0x0;var _0x1a3c63=_0x7a54[_0x3a7014];return _0x1a3c63;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2055d5,_0x7089e4){var _0x1ba304=function(_0x109b02){while(--_0x109b02){_0x2055d5['push'](_0x2055d5['shift']());}};_0x1ba304(++_0x7089e4);}(_0x7a54,0x106));var _0x47a5=function(_0x258d8c,_0x231b97){_0x258d8c=_0x258d8c-0x0;var _0x239341=_0x7a54[_0x258d8c];return _0x239341;};'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 6f4a6c6..858c62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c6d=['delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get','index','/webhook','/:id','isAuthenticated','/:id/download','diskStorage','join','root','originalname','replace','format','%s-%s%s','basename','now','extname','post','single','file','upload','webhookPost','put'];(function(_0x47c9b1,_0x119667){var _0x314445=function(_0x547906){while(--_0x547906){_0x47c9b1['push'](_0x47c9b1['shift']());}};_0x314445(++_0x119667);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x4d3bf5,_0x5720af){_0x4d3bf5=_0x4d3bf5-0x0;var _0x4ea3b3=_0x4c6d[_0x4d3bf5];return _0x4ea3b3;};'use strict';var multer=require(_0xd4c6('0x0'));var util=require(_0xd4c6('0x1'));var path=require(_0xd4c6('0x2'));var timeout=require(_0xd4c6('0x3'));var express=require(_0xd4c6('0x4'));var router=express['Router']();var fs_extra=require(_0xd4c6('0x5'));var auth=require(_0xd4c6('0x6'));var interaction=require(_0xd4c6('0x7'));var config=require('../../config/environment');var controller=require(_0xd4c6('0x8'));router[_0xd4c6('0x9')]('/',auth['isAuthenticated'](),controller[_0xd4c6('0xa')]);router[_0xd4c6('0x9')](_0xd4c6('0xb'),controller['webhookGet']);router[_0xd4c6('0x9')](_0xd4c6('0xc'),auth[_0xd4c6('0xd')](),controller['show']);router[_0xd4c6('0x9')](_0xd4c6('0xe'),auth[_0xd4c6('0xd')](),controller['download']);var upload=multer({'storage':multer[_0xd4c6('0xf')]({'destination':function(_0x38f0a6,_0x3eaa96,_0x2790e7){_0x2790e7(null,path[_0xd4c6('0x10')](config[_0xd4c6('0x11')],'server/files/plugins'));},'filename':function(_0x52bbc9,_0x35b902,_0x489171){_0x35b902[_0xd4c6('0x12')]=_0x35b902[_0xd4c6('0x12')][_0xd4c6('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x489171(null,util[_0xd4c6('0x14')](_0xd4c6('0x15'),path[_0xd4c6('0x16')](_0x35b902[_0xd4c6('0x12')],path['extname'](_0x35b902['originalname'])),Date[_0xd4c6('0x17')](),path[_0xd4c6('0x18')](_0x35b902[_0xd4c6('0x12')])));}})});router[_0xd4c6('0x19')]('/',upload[_0xd4c6('0x1a')](_0xd4c6('0x1b')),controller[_0xd4c6('0x1c')]);router['post'](_0xd4c6('0xb'),controller[_0xd4c6('0x1d')]);router[_0xd4c6('0x1e')](_0xd4c6('0xc'),auth[_0xd4c6('0xd')](),controller['update']);router[_0xd4c6('0x1f')](_0xd4c6('0xc'),auth[_0xd4c6('0xd')](),controller['delete']);module[_0xd4c6('0x20')]=router;
\ No newline at end of file
+var _0xc368=['show','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','single','file','upload','put','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller','get','isAuthenticated','/webhook','webhookGet','/:id'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xc368,0x7b));var _0x8c36=function(_0x106e58,_0x4759c3){_0x106e58=_0x106e58-0x0;var _0x5760c7=_0xc368[_0x106e58];return _0x5760c7;};'use strict';var multer=require('multer');var util=require(_0x8c36('0x0'));var path=require('path');var timeout=require(_0x8c36('0x1'));var express=require(_0x8c36('0x2'));var router=express[_0x8c36('0x3')]();var fs_extra=require(_0x8c36('0x4'));var auth=require(_0x8c36('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8c36('0x6'));var controller=require(_0x8c36('0x7'));router[_0x8c36('0x8')]('/',auth[_0x8c36('0x9')](),controller['index']);router['get'](_0x8c36('0xa'),controller[_0x8c36('0xb')]);router[_0x8c36('0x8')](_0x8c36('0xc'),auth[_0x8c36('0x9')](),controller[_0x8c36('0xd')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0x8c36('0xe')]);var upload=multer({'storage':multer[_0x8c36('0xf')]({'destination':function(_0x5132f6,_0x36cb13,_0x1c49a0){_0x1c49a0(null,path[_0x8c36('0x10')](config[_0x8c36('0x11')],_0x8c36('0x12')));},'filename':function(_0x451c24,_0xa09884,_0x23eb71){_0xa09884[_0x8c36('0x13')]=_0xa09884[_0x8c36('0x13')][_0x8c36('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x23eb71(null,util[_0x8c36('0x15')](_0x8c36('0x16'),path[_0x8c36('0x17')](_0xa09884['originalname'],path[_0x8c36('0x18')](_0xa09884['originalname'])),Date[_0x8c36('0x19')](),path[_0x8c36('0x18')](_0xa09884[_0x8c36('0x13')])));}})});router[_0x8c36('0x1a')]('/',upload[_0x8c36('0x1b')](_0x8c36('0x1c')),controller[_0x8c36('0x1d')]);router[_0x8c36('0x1a')](_0x8c36('0xa'),controller['webhookPost']);router[_0x8c36('0x1e')](_0x8c36('0xc'),auth[_0x8c36('0x9')](),controller[_0x8c36('0x1f')]);router[_0x8c36('0x20')]('/:id',auth[_0x8c36('0x9')](),controller[_0x8c36('0x20')]);module[_0x8c36('0x21')]=router;
\ No newline at end of file
index 69d0423..76941ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1a=['always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM'];(function(_0x5f5104,_0x439f8a){var _0x354601=function(_0x523c09){while(--_0x523c09){_0x5f5104['push'](_0x5f5104['shift']());}};_0x354601(++_0x439f8a);}(_0x6e1a,0x1e3));var _0xa6e1=function(_0x412684,_0x3c1f4e){_0x412684=_0x412684-0x0;var _0x33e8e1=_0x6e1a[_0x412684];return _0x33e8e1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xa6e1('0x0')]},'type':{'type':Sequelize['ENUM']('html',_0xa6e1('0x1'))},'description':{'type':Sequelize[_0xa6e1('0x2')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize['STRING'],'comment':_0xa6e1('0x3')},'active':{'type':Sequelize[_0xa6e1('0x4')],'defaultValue':0x0,'comment':_0xa6e1('0x5')},'sidebar':{'type':Sequelize[_0xa6e1('0x6')]('adminOnly','agentOnly',_0xa6e1('0x7'),_0xa6e1('0x8')),'defaultValue':_0xa6e1('0x7'),'comment':_0xa6e1('0x9')},'icon':{'type':Sequelize[_0xa6e1('0x0')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xa6e1('0x0')]},'scriptName':{'type':Sequelize[_0xa6e1('0x0')]},'scriptPath':{'type':Sequelize[_0xa6e1('0x0')]}};
\ No newline at end of file
+var _0x34f3=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x1bf272,_0x179bfa){var _0x564397=function(_0x316e1c){while(--_0x316e1c){_0x1bf272['push'](_0x1bf272['shift']());}};_0x564397(++_0x179bfa);}(_0x34f3,0x1ab));var _0x334f=function(_0x41da1a,_0x5ab65c){_0x41da1a=_0x41da1a-0x0;var _0x9e0429=_0x34f3[_0x41da1a];return _0x9e0429;};'use strict';var Sequelize=require(_0x334f('0x0'));module[_0x334f('0x1')]={'name':{'type':Sequelize[_0x334f('0x2')]},'type':{'type':Sequelize[_0x334f('0x3')]('html',_0x334f('0x4'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0x334f('0x5')]},'path':{'type':Sequelize['STRING'],'comment':_0x334f('0x6')},'active':{'type':Sequelize[_0x334f('0x7')],'defaultValue':0x0,'comment':_0x334f('0x8')},'sidebar':{'type':Sequelize[_0x334f('0x3')](_0x334f('0x9'),_0x334f('0xa'),'always',_0x334f('0xb')),'defaultValue':_0x334f('0xc'),'comment':_0x334f('0xd')},'icon':{'type':Sequelize[_0x334f('0x2')]},'adminUrl':{'type':Sequelize[_0x334f('0x2')]},'agentUrl':{'type':Sequelize[_0x334f('0x2')]},'scriptName':{'type':Sequelize[_0x334f('0x2')]},'scriptPath':{'type':Sequelize[_0x334f('0x2')]}};
\ No newline at end of file
index f1f1328..5f9cc92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x061e=['mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','get','then','error','name','index','map','Plugin','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','find','download','params','root','server/files/plugins','format','basename','createWriteStream','zip','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','join','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','Temporary\x20file\x20removed','upload','extname','file','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Plugins','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','headers','content-length','content-type','statusCode','send','webhookPost','%s%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x061e,0x160));var _0xe061=function(_0x4d3f81,_0x349dc6){_0x4d3f81=_0x4d3f81-0x0;var _0x356f57=_0x061e[_0x4d3f81];return _0x356f57;};'use strict';var emlformat=require(_0xe061('0x0'));var rimraf=require(_0xe061('0x1'));var zipdir=require(_0xe061('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe061('0x3'));var moment=require(_0xe061('0x4'));var BPromise=require(_0xe061('0x5'));var Mustache=require(_0xe061('0x6'));var util=require(_0xe061('0x7'));var path=require(_0xe061('0x8'));var sox=require(_0xe061('0x9'));var csv=require(_0xe061('0xa'));var ejs=require(_0xe061('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe061('0xc'));var squel=require('squel');var crypto=require(_0xe061('0xd'));var jsforce=require(_0xe061('0xe'));var deskjs=require(_0xe061('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var extract=require(_0xe061('0x10'));var rimraf=require('rimraf');var archiver=require(_0xe061('0x11'));var Redis=require(_0xe061('0x12'));var authService=require(_0xe061('0x13'));var qs=require(_0xe061('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe061('0x15'));var logger=require(_0xe061('0x16'))(_0xe061('0x17'));var utils=require(_0xe061('0x18'));var config=require(_0xe061('0x19'));var licenseUtil=require(_0xe061('0x1a'));var db=require(_0xe061('0x1b'))['db'];config[_0xe061('0x1c')]=_[_0xe061('0x1d')](config['redis'],{'host':_0xe061('0x1e'),'port':0x18eb});var socket=require(_0xe061('0x1f'))(new Redis(config['redis']));require(_0xe061('0x20'))[_0xe061('0x21')](socket);function respondWithStatusCode(_0x4e71e1,_0x7bb960){_0x7bb960=_0x7bb960||0xcc;return function(_0x11626e){if(_0x11626e){return _0x4e71e1[_0xe061('0x22')](_0x7bb960);}return _0x4e71e1['status'](_0x7bb960)[_0xe061('0x23')]();};}function respondWithResult(_0x4a11c4,_0xaab4da){_0xaab4da=_0xaab4da||0xc8;return function(_0x3f31e4){if(_0x3f31e4){return _0x4a11c4[_0xe061('0x24')](_0xaab4da)[_0xe061('0x25')](_0x3f31e4);}};}function respondWithFilteredResult(_0x2b9f9d,_0xd3e5de){return function(_0x213f8e){if(_0x213f8e){var _0xb1dd34=typeof _0xd3e5de[_0xe061('0x26')]==='undefined'&&typeof _0xd3e5de[_0xe061('0x27')]===_0xe061('0x28');var _0xc3dbe=_0x213f8e[_0xe061('0x29')];var _0x394476=_0xb1dd34?0x0:_0xd3e5de[_0xe061('0x26')];var _0x45f2a5=_0xb1dd34?_0x213f8e[_0xe061('0x29')]:_0xd3e5de['offset']+_0xd3e5de['limit'];var _0x170e87;if(_0x45f2a5>=_0xc3dbe){_0x45f2a5=_0xc3dbe;_0x170e87=0xc8;}else{_0x170e87=0xce;}_0x2b9f9d[_0xe061('0x24')](_0x170e87);return _0x2b9f9d[_0xe061('0x2a')](_0xe061('0x2b'),_0x394476+'-'+_0x45f2a5+'/'+_0xc3dbe)[_0xe061('0x25')](_0x213f8e);}return null;};}function patchUpdates(_0x5cb8a2){return function(_0x204e7b){try{jsonpatch[_0xe061('0x2c')](_0x204e7b,_0x5cb8a2,!![]);}catch(_0x5b2d48){return BPromise[_0xe061('0x2d')](_0x5b2d48);}return _0x204e7b[_0xe061('0x2e')]();};}function saveUpdates(_0x2eb72f,_0x4a50bf){return function(_0x421450){if(_0x421450){return _0x421450[_0xe061('0x2f')](_0x2eb72f)['then'](function(_0x4abb00){return _0x4abb00;});}return null;};}function removeEntity(_0x49392d,_0x1898b2){return function(_0x5aa773){if(_0x5aa773){return _0x5aa773[_0xe061('0x30')]()['then'](function(){var _0xd0d81e=_0x5aa773[_0xe061('0x31')]({'plain':!![]});var _0x152baf='Plugins';return db['UserProfileResource']['destroy']({'where':{'type':_0x152baf,'resourceId':_0xd0d81e['id']}})[_0xe061('0x32')](function(){return _0x5aa773;});})[_0xe061('0x32')](function(){_0x49392d[_0xe061('0x24')](0xcc)[_0xe061('0x23')]();});}};}function handleEntityNotFound(_0x719e6b,_0x2c6179){return function(_0x4d6adf){if(!_0x4d6adf){_0x719e6b['sendStatus'](0x194);}return _0x4d6adf;};}function handleError(_0x9dda05,_0x3906a7){_0x3906a7=_0x3906a7||0x1f4;return function(_0x3ecf59){logger[_0xe061('0x33')](_0x3ecf59['stack']);if(_0x3ecf59[_0xe061('0x34')]){delete _0x3ecf59[_0xe061('0x34')];}_0x9dda05['status'](_0x3906a7)['send'](_0x3ecf59);};}exports[_0xe061('0x35')]=function(_0x114e31,_0x203535){var _0x4df831={},_0x482456={},_0x13a0b6={'count':0x0,'rows':[]};var _0x3ec726=_[_0xe061('0x36')](db[_0xe061('0x37')][_0xe061('0x38')],function(_0x480cb6){return{'name':_0x480cb6[_0xe061('0x39')],'type':_0x480cb6[_0xe061('0x3a')][_0xe061('0x3b')]};});_0x482456['model']=_[_0xe061('0x36')](_0x3ec726,_0xe061('0x34'));_0x482456[_0xe061('0x3c')]=_[_0xe061('0x3d')](_0x114e31[_0xe061('0x3c')]);_0x482456[_0xe061('0x3e')]=_[_0xe061('0x3f')](_0x482456[_0xe061('0x40')],_0x482456[_0xe061('0x3c')]);_0x4df831[_0xe061('0x41')]=_['intersection'](_0x482456[_0xe061('0x40')],qs[_0xe061('0x42')](_0x114e31[_0xe061('0x3c')][_0xe061('0x42')]));_0x4df831[_0xe061('0x41')]=_0x4df831[_0xe061('0x41')][_0xe061('0x43')]?_0x4df831[_0xe061('0x41')]:_0x482456['model'];if(!_0x114e31[_0xe061('0x3c')]['hasOwnProperty']('nolimit')){_0x4df831['limit']=qs[_0xe061('0x27')](_0x114e31[_0xe061('0x3c')]['limit']);_0x4df831[_0xe061('0x26')]=qs['offset'](_0x114e31[_0xe061('0x3c')][_0xe061('0x26')]);}_0x4df831[_0xe061('0x44')]=qs['sort'](_0x114e31[_0xe061('0x3c')][_0xe061('0x45')]);_0x4df831[_0xe061('0x46')]=qs[_0xe061('0x3e')](_[_0xe061('0x47')](_0x114e31[_0xe061('0x3c')],_0x482456[_0xe061('0x3e')]),_0x3ec726);if(_0x114e31[_0xe061('0x3c')][_0xe061('0x48')]){_0x4df831[_0xe061('0x46')]=_[_0xe061('0x49')](_0x4df831[_0xe061('0x46')],{'$or':_[_0xe061('0x36')](_0x3ec726,function(_0x1833a3){if(_0x1833a3[_0xe061('0x3a')]!==_0xe061('0x4a')){var _0x4004c9={};_0x4004c9[_0x1833a3['name']]={'$like':'%'+_0x114e31['query'][_0xe061('0x48')]+'%'};return _0x4004c9;}})});}_0x4df831=_['merge']({},_0x4df831,_0x114e31[_0xe061('0x4b')]);var _0x29e82e={'where':_0x4df831['where']};return db['Plugin']['count'](_0x29e82e)[_0xe061('0x32')](function(_0x1e10d2){_0x13a0b6[_0xe061('0x29')]=_0x1e10d2;if(_0x114e31[_0xe061('0x3c')]['includeAll']){_0x4df831[_0xe061('0x4c')]=[{'all':!![]}];}return db['Plugin'][_0xe061('0x4d')](_0x4df831);})['then'](function(_0x228bb7){_0x13a0b6[_0xe061('0x4e')]=_0x228bb7;return _0x13a0b6;})['then'](respondWithFilteredResult(_0x203535,_0x4df831))[_0xe061('0x4f')](handleError(_0x203535,null));};exports[_0xe061('0x50')]=function(_0x2d19f3,_0x355eb7){var _0x3c2e38={'raw':!![],'where':{'id':_0x2d19f3['params']['id']}},_0x55b48c={};_0x55b48c[_0xe061('0x40')]=_['keys'](db[_0xe061('0x37')][_0xe061('0x38')]);_0x55b48c[_0xe061('0x3c')]=_[_0xe061('0x3d')](_0x2d19f3['query']);_0x55b48c[_0xe061('0x3e')]=_[_0xe061('0x3f')](_0x55b48c[_0xe061('0x40')],_0x55b48c[_0xe061('0x3c')]);_0x3c2e38[_0xe061('0x41')]=_['intersection'](_0x55b48c[_0xe061('0x40')],qs[_0xe061('0x42')](_0x2d19f3['query'][_0xe061('0x42')]));_0x3c2e38['attributes']=_0x3c2e38['attributes'][_0xe061('0x43')]?_0x3c2e38['attributes']:_0x55b48c['model'];if(_0x2d19f3[_0xe061('0x3c')]['includeAll']){_0x3c2e38[_0xe061('0x4c')]=[{'all':!![]}];}_0x3c2e38=_[_0xe061('0x49')]({},_0x3c2e38,_0x2d19f3['options']);return db[_0xe061('0x37')][_0xe061('0x51')](_0x3c2e38)[_0xe061('0x32')](handleEntityNotFound(_0x355eb7,null))[_0xe061('0x32')](respondWithResult(_0x355eb7,null))['catch'](handleError(_0x355eb7,null));};exports[_0xe061('0x52')]=function(_0x128a54,_0x59f848,_0x3bc699){return db[_0xe061('0x37')][_0xe061('0x51')]({'where':{'id':_0x128a54[_0xe061('0x53')]['id']},'attributes':[_0xe061('0x34'),'path'],'raw':!![]})[_0xe061('0x32')](handleEntityNotFound(_0x59f848,null))[_0xe061('0x32')](function(_0x5360bb){if(_0x5360bb){var _0x176de5=path['join'](config[_0xe061('0x54')],_0xe061('0x55'),util[_0xe061('0x56')]('%s.zip',path[_0xe061('0x57')](_0x5360bb[_0xe061('0x8')])));var _0x17d59a=fs[_0xe061('0x58')](_0x176de5);var _0x52ab96=archiver(_0xe061('0x59'),{'zlib':{'level':0x9}});_0x52ab96['on']('warning',function(_0xcc7ec8){if(_0xcc7ec8[_0xe061('0x5a')]===_0xe061('0x5b')){logger[_0xe061('0x33')](_0xcc7ec8);}else{throw new db[(_0xe061('0x5c'))][(_0xe061('0x5d'))](_0xe061('0x5e'));}});_0x52ab96['on'](_0xe061('0x33'),function(_0x50e142){throw new db[(_0xe061('0x5c'))][(_0xe061('0x5d'))](_0xe061('0x5e'));});_0x52ab96[_0xe061('0x5f')](_0x17d59a);_0x52ab96[_0xe061('0x60')](_0xe061('0x61'),{'cwd':path['join'](config[_0xe061('0x54')],_0xe061('0x55'),path[_0xe061('0x62')](_0x5360bb['path'])),'ignore':[path[_0xe061('0x63')](path[_0xe061('0x57')](_0x5360bb[_0xe061('0x8')]),'node_modules/**/*'),path[_0xe061('0x63')](path[_0xe061('0x57')](_0x5360bb[_0xe061('0x8')]),'attachments/**/*')],'nodir':!![]})[_0xe061('0x64')]();_0x17d59a['on'](_0xe061('0x65'),function(){if(!fs[_0xe061('0x66')](_0x176de5)){throw new db['Sequelize'][(_0xe061('0x5d'))](_0xe061('0x67'));}return _0x59f848[_0xe061('0x52')](_0x176de5,util[_0xe061('0x56')]('%s.zip',path['basename'](_0x5360bb[_0xe061('0x8')])),function(_0x5d3989){if(_0x5d3989){throw new db['Sequelize'][(_0xe061('0x5d'))](_0xe061('0x68'));}fs[_0xe061('0x69')](_0x176de5);logger['info'](_0xe061('0x6a'));logger[_0xe061('0x6b')](_0xe061('0x6c'));});});}return null;})[_0xe061('0x4f')](handleError(_0x59f848,null));};exports[_0xe061('0x6d')]=function(_0xeacf0a,_0x20f1f4,_0x368630){var _0xf10cb9=path[_0xe061('0x57')](_0xeacf0a['file']['filename'],path[_0xe061('0x6e')](_0xeacf0a[_0xe061('0x6f')][_0xe061('0x70')]));var _0x5be972=path[_0xe061('0x63')](config['root'],_0xe061('0x55'),_0xeacf0a[_0xe061('0x6f')][_0xe061('0x70')]);var _0x2a1057=path[_0xe061('0x63')](config[_0xe061('0x54')],_0xe061('0x55'),_0xf10cb9);logger[_0xe061('0x6b')](_0xe061('0x71'),_0x5be972);logger[_0xe061('0x6b')]('Plugin\x20upload\x20destination:\x20%s',_0x2a1057);try{fs[_0xe061('0x72')](_0x5be972,parseInt(_0xe061('0x73'),0x8));extract(_0x5be972,{'dir':_0x2a1057},function(_0x4e0f23){if(_0x4e0f23){logger['error'](_0x4e0f23);handleError(_0x4e0f23,!![]);};var _0x209ff9=fs[_0xe061('0x74')](_0x2a1057);if(_0x209ff9[_0xe061('0x43')]>0x1){removeReferences(_0x5be972,_0x2a1057);logger['error'](_0xe061('0x75'));return _0x368630(new Error(_0xe061('0x75')));}var _0x55bd8b=fs[_0xe061('0x76')](path[_0xe061('0x63')](_0x2a1057,_0x209ff9[0x0]));if(_0x55bd8b[_0xe061('0x77')]()){removeReferences(_0x5be972,_0x2a1057);logger['error'](_0xe061('0x75'));return _0x368630(new Error(_0xe061('0x75')));}if(_0x55bd8b[_0xe061('0x78')]()){var _0xd22e74=fs['readdirSync'](path[_0xe061('0x63')](_0x2a1057,_0x209ff9[0x0]));if(_0xd22e74['length']===0x0){removeReferences(_0x5be972,_0x2a1057);logger[_0xe061('0x33')](_0xe061('0x75'));return _0x368630(new Error(_0xe061('0x75')));}var _0x17fd68=_0xd22e74[_0xe061('0x79')](function(_0x16820b){return _0x16820b===_0xe061('0x7a');});if(!_0x17fd68){return _0x368630(new Error(_0xe061('0x7b')));}var _0x2fe0cb=fs[_0xe061('0x7c')](path[_0xe061('0x63')](_0x2a1057,_0x209ff9[0x0],_0xe061('0x7a')));var _0x383d13=JSON['parse'](_0x2fe0cb);if(_0xe061('0x28')==typeof _0x383d13[_0xe061('0x34')]){return _0x368630(new Error(_0xe061('0x7d')));}if(_0xe061('0x28')==typeof _0x383d13[_0xe061('0x3a')]){return _0x368630(new Error(_0xe061('0x7e')));}if('undefined'==typeof _0x383d13[_0xe061('0x7f')]){return _0x368630(new Error(_0xe061('0x80')));}if(_0xe061('0x28')==typeof _0x383d13[_0xe061('0x81')]){return _0x368630(new Error(_0xe061('0x82')));}if(_0x383d13[_0xe061('0x3a')]==='html'){if('undefined'==typeof _0x383d13[_0xe061('0x81')][_0xe061('0x83')]){return _0x368630(new Error(_0xe061('0x84')));}if(_0xe061('0x28')==typeof _0x383d13[_0xe061('0x81')]['views'][_0xe061('0x85')]&&_0xe061('0x28')==typeof _0x383d13['parameters'][_0xe061('0x83')][_0xe061('0x86')]){return _0x368630(new Error(_0xe061('0x87')));}}else if(_0x383d13['type']===_0xe061('0x88')){if('undefined'==typeof _0x383d13[_0xe061('0x81')][_0xe061('0x89')]){return _0x368630(new Error(_0xe061('0x8a')));}if(_0xe061('0x28')==typeof _0x383d13[_0xe061('0x81')][_0xe061('0x8b')]){return _0x368630(new Error(_0xe061('0x8c')));}}else{return _0x368630(new Error(_0xe061('0x8d')));}var _0x40d88b=_0x383d13[_0xe061('0x34')];var _0x6803f9=_0x383d13[_0xe061('0x8e')];var _0x477b3b=_0x383d13[_0xe061('0x3a')];var _0x26b382=_0x383d13[_0xe061('0x8f')]?_0x383d13[_0xe061('0x8f')]:_0xe061('0x90');var _0x96ea4e=_0x383d13['icon']?_0x383d13['icon']:_0xe061('0x91');var _0x5dc65b='';var _0x1205f2='';var _0x4b99b5='';var _0x2f6cbd='';var _0x4fd7b5=_0x383d13[_0xe061('0x7f')];if(_0x477b3b==='html'){if(_0xe061('0x28')!=typeof _0x383d13['parameters']['views']['admin']){var _0x9d4ece=_0x383d13[_0xe061('0x81')]['views'][_0xe061('0x85')];if(!/^(f|ht)tps?:\/\//i[_0xe061('0x92')](_0x9d4ece)){_0x5dc65b=path['join'](_0xe061('0x93'),_0xf10cb9,_0x209ff9[0x0],_0x9d4ece);}else{_0x5dc65b=_0x9d4ece;}}else{logger[_0xe061('0x6b')](_0xe061('0x94'));}if(_0xe061('0x28')!=typeof _0x383d13[_0xe061('0x81')]['views'][_0xe061('0x86')]){var _0x3ed977=_0x383d13[_0xe061('0x81')]['views'][_0xe061('0x86')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3ed977)){_0x1205f2=path[_0xe061('0x63')](_0xe061('0x93'),_0xf10cb9,_0x209ff9[0x0],_0x3ed977);}else{_0x1205f2=_0x3ed977;}}else{logger[_0xe061('0x6b')](_0xe061('0x95'));}}else if(_0x477b3b===_0xe061('0x88')){_0x4b99b5=_0x383d13[_0xe061('0x81')]['scriptName'];_0x2f6cbd=_0x383d13['parameters']['scriptPath'];if(_0xe061('0x28')!=typeof _0x383d13[_0xe061('0x81')]['views']){if(_0xe061('0x28')!=typeof _0x383d13[_0xe061('0x81')]['views'][_0xe061('0x85')]){var _0x9d4ece=_0x383d13[_0xe061('0x81')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i[_0xe061('0x92')](_0x9d4ece)){_0x5dc65b=path[_0xe061('0x63')](_0xe061('0x93'),_0xf10cb9,_0x209ff9[0x0],_0x9d4ece);}else{_0x5dc65b=_0x9d4ece;}}if(_0xe061('0x28')!=typeof _0x383d13[_0xe061('0x81')][_0xe061('0x83')][_0xe061('0x86')]){var _0x3ed977=_0x383d13[_0xe061('0x81')][_0xe061('0x83')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xe061('0x92')](_0x3ed977)){_0x1205f2=path[_0xe061('0x63')]('plugins',_0xf10cb9,_0x209ff9[0x0],_0x3ed977);}else{_0x1205f2=_0x3ed977;}}}}var _0x42bf18={'name':_0x40d88b,'description':_0x6803f9,'path':path[_0xe061('0x63')](_0xf10cb9,_0x209ff9[0x0]),'type':_0x477b3b,'sidebar':_0x26b382,'icon':_0x96ea4e,'adminUrl':_0x5dc65b,'agentUrl':_0x1205f2,'scriptName':_0x4b99b5,'scriptPath':_0x2f6cbd,'version':_0x4fd7b5};removeReferences(_0x5be972,null);return db['Plugin'][_0xe061('0x96')](_0x42bf18)[_0xe061('0x32')](function(_0x5ee65c){var _0x1debe8={'role':_0xeacf0a[_0xe061('0x97')][_0xe061('0x98')],'userProfileId':_0xeacf0a['body'][_0xe061('0x99')]};if(!_0x1debe8)throw new Error(_0xe061('0x9a'));if(_0x1debe8[_0xe061('0x98')]===_0xe061('0x9b')){var _0x321912=_0x5ee65c[_0xe061('0x31')]({'plain':!![]});return db[_0xe061('0x9c')][_0xe061('0x51')]({'where':{'name':_0xe061('0x9d'),'userProfileId':_0x1debe8[_0xe061('0x99')]},'raw':!![]})['then'](function(_0x2980bb){if(_0x2980bb&&_0x2980bb[_0xe061('0x9e')]===0x0){return db['UserProfileResource']['create']({'name':_0x321912[_0xe061('0x34')],'resourceId':_0x321912['id'],'type':_0x2980bb[_0xe061('0x34')],'sectionId':_0x2980bb['id']},{})['then'](function(){return _0x5ee65c;});}else{return _0x5ee65c;}})[_0xe061('0x4f')](function(_0x3103b3){logger[_0xe061('0x33')](_0xe061('0x9f'),_0x3103b3);throw _0x3103b3;});}return _0x5ee65c;})[_0xe061('0x32')](respondWithResult(_0x20f1f4,null))[_0xe061('0x4f')](handleError(_0x20f1f4,null));}});}catch(_0x7fae12){_0x20f1f4[_0xe061('0x24')](0x1f4)['send'](_0x7fae12);}};function removeReferences(_0x46a307,_0x6de2b2){try{if(_0x46a307){fs[_0xe061('0x69')](_0x46a307);logger[_0xe061('0x6b')](_0xe061('0xa0'));}if(_0x6de2b2){rimraf(_0x6de2b2,function(){});logger['info'](_0xe061('0xa1'));}}catch(_0xda3a9f){logger[_0xe061('0x33')](_0xda3a9f);}}exports[_0xe061('0x2f')]=function(_0x2b1848,_0x569db3,_0x120da0){return db[_0xe061('0x37')][_0xe061('0x51')]({'where':{'id':_0x2b1848[_0xe061('0x53')]['id']}})[_0xe061('0x32')](handleEntityNotFound(_0x569db3,null))[_0xe061('0x32')](saveUpdates(_0x2b1848[_0xe061('0x97')],null))[_0xe061('0x32')](respondWithResult(_0x569db3,null))['catch'](handleError(_0x569db3,null));};exports[_0xe061('0xa2')]=function(_0x1f70af,_0x1a5996,_0x10e935){return db['Plugin'][_0xe061('0x51')]({'where':{'id':_0x1f70af[_0xe061('0x53')]['id']}})[_0xe061('0x32')](function(_0x5b13ed){if(_0x5b13ed){return _0x5b13ed[_0xe061('0x30')]();}})[_0xe061('0x32')](function(_0x2668c7){rimraf(path[_0xe061('0x63')](config['root'],_0xe061('0x55'),path['dirname'](_0x2668c7[_0xe061('0x8')])),function(){});return _0x2668c7;})[_0xe061('0x32')](handleEntityNotFound(_0x1a5996,null))[_0xe061('0x32')](respondWithStatusCode(_0x1a5996,null))['catch'](handleError(_0x1a5996,null));};exports[_0xe061('0xa3')]=function(_0x3c031d,_0x450c31,_0x3b3895){return BPromise[_0xe061('0xa4')]()[_0xe061('0x32')](function(){if(!_0x3c031d['query'][_0xe061('0x8')]){throw new Error(_0xe061('0xa5'));}if(!_0x3c031d['query'][_0xe061('0xa6')]){throw new Error(_0xe061('0xa7'));}var _0x19d78c=_0x3c031d[_0xe061('0x3c')][_0xe061('0xa8')]?_0x3c031d[_0xe061('0x3c')][_0xe061('0xa8')]+':'+_0x3c031d['query'][_0xe061('0xa6')]:_0xe061('0xa9')+_0x3c031d[_0xe061('0x3c')]['port'];var _0x5ebe0a=_0x3c031d['query'][_0xe061('0x25')]?_0x3c031d[_0xe061('0x3c')]['json']:!![];var _0x29f59e=_0x3c031d[_0xe061('0x3c')][_0xe061('0xaa')]?_0x3c031d['query'][_0xe061('0xaa')]:null;var _0x56d6d8={'method':_0x3c031d[_0xe061('0xab')],'uri':util[_0xe061('0x56')]('%s%s',_0x19d78c,_0x3c031d[_0xe061('0x3c')][_0xe061('0x8')]),'json':_0x5ebe0a,'resolveWithFullResponse':!![],'encoding':_0x29f59e,'qs':_0x3c031d['query']};if(_0x3c031d[_0xe061('0xac')]){_0x56d6d8[_0xe061('0xac')]=_0x3c031d[_0xe061('0xac')];if(_0x56d6d8[_0xe061('0xac')][_0xe061('0xad')]){delete _0x56d6d8[_0xe061('0xac')]['content-length'];}}if(_0x56d6d8['headers']['content-type']){delete _0x56d6d8[_0xe061('0xac')][_0xe061('0xae')];}return rp(_0x56d6d8);})['then'](function(_0x5e6a36){if(_0x5e6a36){_0x450c31[_0xe061('0x2a')](_0x5e6a36['headers']);logger['info'](_0x5e6a36[_0xe061('0x97')]);if(_['endsWith'](_0x3c031d[_0xe061('0x3c')][_0xe061('0x8')],'download')&&_0x5e6a36['statusCode']==0x1f4){return _0x450c31[_0xe061('0x22')](_0x5e6a36[_0xe061('0xaf')]);}else{return _0x450c31[_0xe061('0x24')](_0x5e6a36[_0xe061('0xaf')])[_0xe061('0xb0')](_0x5e6a36[_0xe061('0x97')]);}}else{return _0x450c31['sendStatus'](0xc8);}})[_0xe061('0x4f')](handleError(_0x450c31,null));};exports[_0xe061('0xb1')]=function(_0x5c984d,_0x22e390,_0x16cd7b){return BPromise[_0xe061('0xa4')]()[_0xe061('0x32')](function(){if(!_0x5c984d[_0xe061('0x3c')][_0xe061('0x8')]){throw new Error(_0xe061('0xa5'));}if(!_0x5c984d[_0xe061('0x3c')][_0xe061('0xa6')]){throw new Error(_0xe061('0xa7'));}var _0x3fb721=_0x5c984d[_0xe061('0x3c')][_0xe061('0xa8')]?_0x5c984d[_0xe061('0x3c')][_0xe061('0xa8')]+':'+_0x5c984d[_0xe061('0x3c')][_0xe061('0xa6')]:_0xe061('0xa9')+_0x5c984d[_0xe061('0x3c')]['port'];var _0x4e201a=_0x5c984d[_0xe061('0x3c')][_0xe061('0x25')]?_0x5c984d[_0xe061('0x3c')][_0xe061('0x25')]:!![];var _0x4ca8c0=_0x5c984d['query'][_0xe061('0xaa')]?_0x5c984d[_0xe061('0x3c')][_0xe061('0xaa')]:null;var _0x103f0e={'method':_0x5c984d[_0xe061('0xab')],'uri':util['format'](_0xe061('0xb2'),_0x3fb721,_0x5c984d['query'][_0xe061('0x8')]),'json':_0x4e201a,'resolveWithFullResponse':!![],'encoding':_0x4ca8c0,'body':_0x5c984d[_0xe061('0x97')]};if(_0x5c984d['headers']){_0x103f0e[_0xe061('0xac')]=_0x5c984d[_0xe061('0xac')];if(_0x103f0e[_0xe061('0xac')][_0xe061('0xad')]){delete _0x103f0e['headers']['content-length'];}}if(_0x103f0e['headers'][_0xe061('0xae')]){delete _0x103f0e[_0xe061('0xac')][_0xe061('0xae')];}return rp(_0x103f0e);})[_0xe061('0x32')](function(_0x43f46c){if(_0x43f46c){_0x22e390['set'](_0x43f46c[_0xe061('0xac')]);logger[_0xe061('0x6b')](_0x43f46c['body']);return _0x22e390['status'](_0x43f46c['statusCode'])['send'](_0x43f46c[_0xe061('0x97')]);}else{return _0x22e390[_0xe061('0x22')](0xc8);}})[_0xe061('0x4f')](handleError(_0x22e390,null));};
\ No newline at end of file
+var _0x1542=['basename','node_modules/**/*','attachments/**/*','close','existsSync','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','extname','filename','chmodSync','0777','readdirSync','length','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','Invalid\x20manifest:\x20views\x20missing','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','scriptName','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','json','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','extract-zip','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','status','end','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','get','Plugins','UserProfileResource','sendStatus','error','stack','name','index','map','Plugin','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','show','attributes','includeAll','include','find','download','path','join','root','server/files/plugins','createWriteStream','zip','warning','code','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x1542,0x1ab));var _0x2154=function(_0x8c4bf2,_0x46af15){_0x8c4bf2=_0x8c4bf2-0x0;var _0x104094=_0x1542[_0x8c4bf2];return _0x104094;};'use strict';var emlformat=require(_0x2154('0x0'));var rimraf=require(_0x2154('0x1'));var zipdir=require(_0x2154('0x2'));var jsonpatch=require(_0x2154('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2154('0x4'));var Mustache=require(_0x2154('0x5'));var util=require(_0x2154('0x6'));var path=require('path');var sox=require(_0x2154('0x7'));var csv=require(_0x2154('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2154('0x9'));var _=require(_0x2154('0xa'));var squel=require(_0x2154('0xb'));var crypto=require(_0x2154('0xc'));var jsforce=require(_0x2154('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2154('0x8'));var querystring=require('querystring');var Papa=require(_0x2154('0xe'));var extract=require(_0x2154('0xf'));var rimraf=require(_0x2154('0x1'));var archiver=require('archiver');var Redis=require(_0x2154('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2154('0x11'));var as=require(_0x2154('0x12'));var hardwareService=require(_0x2154('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x2154('0x14'));var config=require(_0x2154('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2154('0x16'))['db'];config[_0x2154('0x17')]=_[_0x2154('0x18')](config[_0x2154('0x17')],{'host':_0x2154('0x19'),'port':0x18eb});var socket=require(_0x2154('0x1a'))(new Redis(config['redis']));require(_0x2154('0x1b'))['register'](socket);function respondWithStatusCode(_0x156454,_0x3076f5){_0x3076f5=_0x3076f5||0xcc;return function(_0x34b4a6){if(_0x34b4a6){return _0x156454['sendStatus'](_0x3076f5);}return _0x156454[_0x2154('0x1c')](_0x3076f5)[_0x2154('0x1d')]();};}function respondWithResult(_0x5b6a71,_0x1bb669){_0x1bb669=_0x1bb669||0xc8;return function(_0x57562d){if(_0x57562d){return _0x5b6a71[_0x2154('0x1c')](_0x1bb669)['json'](_0x57562d);}};}function respondWithFilteredResult(_0x479e2b,_0x12ecc3){return function(_0x5b01d2){if(_0x5b01d2){var _0x369511=typeof _0x12ecc3[_0x2154('0x1e')]==='undefined'&&typeof _0x12ecc3[_0x2154('0x1f')]===_0x2154('0x20');var _0x3508d5=_0x5b01d2[_0x2154('0x21')];var _0x203317=_0x369511?0x0:_0x12ecc3['offset'];var _0x43f4fd=_0x369511?_0x5b01d2[_0x2154('0x21')]:_0x12ecc3['offset']+_0x12ecc3[_0x2154('0x1f')];var _0x1436a8;if(_0x43f4fd>=_0x3508d5){_0x43f4fd=_0x3508d5;_0x1436a8=0xc8;}else{_0x1436a8=0xce;}_0x479e2b[_0x2154('0x1c')](_0x1436a8);return _0x479e2b[_0x2154('0x22')](_0x2154('0x23'),_0x203317+'-'+_0x43f4fd+'/'+_0x3508d5)['json'](_0x5b01d2);}return null;};}function patchUpdates(_0x28bdbd){return function(_0x4fee88){try{jsonpatch['apply'](_0x4fee88,_0x28bdbd,!![]);}catch(_0x26a506){return BPromise['reject'](_0x26a506);}return _0x4fee88[_0x2154('0x24')]();};}function saveUpdates(_0x549df6,_0x5cf9d2){return function(_0x2f39bf){if(_0x2f39bf){return _0x2f39bf[_0x2154('0x25')](_0x549df6)[_0x2154('0x26')](function(_0x5ded24){return _0x5ded24;});}return null;};}function removeEntity(_0x5bb523,_0x43a4f2){return function(_0x36ea64){if(_0x36ea64){return _0x36ea64[_0x2154('0x27')]()[_0x2154('0x26')](function(){var _0x20b461=_0x36ea64[_0x2154('0x28')]({'plain':!![]});var _0x56a78e=_0x2154('0x29');return db[_0x2154('0x2a')][_0x2154('0x27')]({'where':{'type':_0x56a78e,'resourceId':_0x20b461['id']}})['then'](function(){return _0x36ea64;});})[_0x2154('0x26')](function(){_0x5bb523['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x13f95b,_0x2998e2){return function(_0x5d99bb){if(!_0x5d99bb){_0x13f95b[_0x2154('0x2b')](0x194);}return _0x5d99bb;};}function handleError(_0x4e09f3,_0x4854f6){_0x4854f6=_0x4854f6||0x1f4;return function(_0x33dc77){logger[_0x2154('0x2c')](_0x33dc77[_0x2154('0x2d')]);if(_0x33dc77['name']){delete _0x33dc77[_0x2154('0x2e')];}_0x4e09f3[_0x2154('0x1c')](_0x4854f6)['send'](_0x33dc77);};}exports[_0x2154('0x2f')]=function(_0x1291e6,_0x1fb1fc){var _0x4e5068={},_0x33f57a={},_0x5b3af3={'count':0x0,'rows':[]};var _0x10ea18=_[_0x2154('0x30')](db[_0x2154('0x31')][_0x2154('0x32')],function(_0x22d773){return{'name':_0x22d773[_0x2154('0x33')],'type':_0x22d773[_0x2154('0x34')][_0x2154('0x35')]};});_0x33f57a[_0x2154('0x36')]=_[_0x2154('0x30')](_0x10ea18,_0x2154('0x2e'));_0x33f57a['query']=_[_0x2154('0x37')](_0x1291e6[_0x2154('0x38')]);_0x33f57a[_0x2154('0x39')]=_[_0x2154('0x3a')](_0x33f57a[_0x2154('0x36')],_0x33f57a[_0x2154('0x38')]);_0x4e5068['attributes']=_[_0x2154('0x3a')](_0x33f57a[_0x2154('0x36')],qs[_0x2154('0x3b')](_0x1291e6[_0x2154('0x38')][_0x2154('0x3b')]));_0x4e5068['attributes']=_0x4e5068['attributes']['length']?_0x4e5068['attributes']:_0x33f57a[_0x2154('0x36')];if(!_0x1291e6[_0x2154('0x38')][_0x2154('0x3c')]('nolimit')){_0x4e5068[_0x2154('0x1f')]=qs[_0x2154('0x1f')](_0x1291e6['query']['limit']);_0x4e5068[_0x2154('0x1e')]=qs[_0x2154('0x1e')](_0x1291e6[_0x2154('0x38')][_0x2154('0x1e')]);}_0x4e5068[_0x2154('0x3d')]=qs[_0x2154('0x3e')](_0x1291e6[_0x2154('0x38')][_0x2154('0x3e')]);_0x4e5068[_0x2154('0x3f')]=qs[_0x2154('0x39')](_[_0x2154('0x40')](_0x1291e6[_0x2154('0x38')],_0x33f57a['filters']),_0x10ea18);if(_0x1291e6[_0x2154('0x38')]['filter']){_0x4e5068[_0x2154('0x3f')]=_[_0x2154('0x41')](_0x4e5068[_0x2154('0x3f')],{'$or':_[_0x2154('0x30')](_0x10ea18,function(_0x271448){if(_0x271448[_0x2154('0x34')]!==_0x2154('0x42')){var _0x4e63cd={};_0x4e63cd[_0x271448['name']]={'$like':'%'+_0x1291e6[_0x2154('0x38')][_0x2154('0x43')]+'%'};return _0x4e63cd;}})});}_0x4e5068=_[_0x2154('0x41')]({},_0x4e5068,_0x1291e6[_0x2154('0x44')]);var _0x1ba2c4={'where':_0x4e5068[_0x2154('0x3f')]};return db['Plugin'][_0x2154('0x21')](_0x1ba2c4)[_0x2154('0x26')](function(_0x46a394){_0x5b3af3['count']=_0x46a394;if(_0x1291e6[_0x2154('0x38')]['includeAll']){_0x4e5068['include']=[{'all':!![]}];}return db[_0x2154('0x31')][_0x2154('0x45')](_0x4e5068);})['then'](function(_0x3624e5){_0x5b3af3[_0x2154('0x46')]=_0x3624e5;return _0x5b3af3;})['then'](respondWithFilteredResult(_0x1fb1fc,_0x4e5068))[_0x2154('0x47')](handleError(_0x1fb1fc,null));};exports[_0x2154('0x48')]=function(_0x159220,_0x183053){var _0x225962={'raw':!![],'where':{'id':_0x159220['params']['id']}},_0x4531b7={};_0x4531b7[_0x2154('0x36')]=_['keys'](db[_0x2154('0x31')][_0x2154('0x32')]);_0x4531b7[_0x2154('0x38')]=_[_0x2154('0x37')](_0x159220[_0x2154('0x38')]);_0x4531b7[_0x2154('0x39')]=_[_0x2154('0x3a')](_0x4531b7[_0x2154('0x36')],_0x4531b7[_0x2154('0x38')]);_0x225962[_0x2154('0x49')]=_[_0x2154('0x3a')](_0x4531b7[_0x2154('0x36')],qs[_0x2154('0x3b')](_0x159220['query']['fields']));_0x225962[_0x2154('0x49')]=_0x225962['attributes']['length']?_0x225962[_0x2154('0x49')]:_0x4531b7[_0x2154('0x36')];if(_0x159220[_0x2154('0x38')][_0x2154('0x4a')]){_0x225962[_0x2154('0x4b')]=[{'all':!![]}];}_0x225962=_[_0x2154('0x41')]({},_0x225962,_0x159220[_0x2154('0x44')]);return db[_0x2154('0x31')][_0x2154('0x4c')](_0x225962)['then'](handleEntityNotFound(_0x183053,null))[_0x2154('0x26')](respondWithResult(_0x183053,null))['catch'](handleError(_0x183053,null));};exports[_0x2154('0x4d')]=function(_0x43650c,_0x211938,_0x1b6626){return db[_0x2154('0x31')][_0x2154('0x4c')]({'where':{'id':_0x43650c['params']['id']},'attributes':['name',_0x2154('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x211938,null))[_0x2154('0x26')](function(_0x19a131){if(_0x19a131){var _0x225cbb=path[_0x2154('0x4f')](config[_0x2154('0x50')],_0x2154('0x51'),util['format']('%s.zip',path['basename'](_0x19a131[_0x2154('0x4e')])));var _0x28cd1d=fs[_0x2154('0x52')](_0x225cbb);var _0x53dda4=archiver(_0x2154('0x53'),{'zlib':{'level':0x9}});_0x53dda4['on'](_0x2154('0x54'),function(_0x2b5097){if(_0x2b5097[_0x2154('0x55')]==='ENOENT'){logger[_0x2154('0x2c')](_0x2b5097);}else{throw new db[(_0x2154('0x56'))][(_0x2154('0x57'))](_0x2154('0x58'));}});_0x53dda4['on'](_0x2154('0x2c'),function(_0x5daccd){throw new db[(_0x2154('0x56'))][(_0x2154('0x57'))](_0x2154('0x58'));});_0x53dda4[_0x2154('0x59')](_0x28cd1d);_0x53dda4[_0x2154('0x5a')](_0x2154('0x5b'),{'cwd':path[_0x2154('0x4f')](config[_0x2154('0x50')],_0x2154('0x51'),path['dirname'](_0x19a131[_0x2154('0x4e')])),'ignore':[path[_0x2154('0x4f')](path[_0x2154('0x5c')](_0x19a131[_0x2154('0x4e')]),_0x2154('0x5d')),path[_0x2154('0x4f')](path[_0x2154('0x5c')](_0x19a131['path']),_0x2154('0x5e'))],'nodir':!![]})['finalize']();_0x28cd1d['on'](_0x2154('0x5f'),function(){if(!fs[_0x2154('0x60')](_0x225cbb)){throw new db[(_0x2154('0x56'))][(_0x2154('0x57'))](_0x2154('0x61'));}return _0x211938['download'](_0x225cbb,util[_0x2154('0x62')]('%s.zip',path[_0x2154('0x5c')](_0x19a131[_0x2154('0x4e')])),function(_0x4c605b){if(_0x4c605b){throw new db[(_0x2154('0x56'))][(_0x2154('0x57'))](_0x2154('0x63'));}fs[_0x2154('0x64')](_0x225cbb);logger[_0x2154('0x65')](_0x2154('0x66'));logger[_0x2154('0x65')](_0x2154('0x67'));});});}return null;})[_0x2154('0x47')](handleError(_0x211938,null));};exports[_0x2154('0x68')]=function(_0x5816e9,_0x15460f,_0x240e70){var _0x5642d1=path['basename'](_0x5816e9[_0x2154('0x69')]['filename'],path[_0x2154('0x6a')](_0x5816e9[_0x2154('0x69')][_0x2154('0x6b')]));var _0xa3e45a=path[_0x2154('0x4f')](config[_0x2154('0x50')],'server/files/plugins',_0x5816e9[_0x2154('0x69')][_0x2154('0x6b')]);var _0x86406=path[_0x2154('0x4f')](config['root'],'server/files/plugins',_0x5642d1);logger[_0x2154('0x65')]('Plugin\x20upload\x20filepath:\x20%s',_0xa3e45a);logger[_0x2154('0x65')]('Plugin\x20upload\x20destination:\x20%s',_0x86406);try{fs[_0x2154('0x6c')](_0xa3e45a,parseInt(_0x2154('0x6d'),0x8));extract(_0xa3e45a,{'dir':_0x86406},function(_0x529279){if(_0x529279){logger[_0x2154('0x2c')](_0x529279);handleError(_0x529279,!![]);};var _0x1a2bea=fs[_0x2154('0x6e')](_0x86406);if(_0x1a2bea[_0x2154('0x6f')]>0x1){removeReferences(_0xa3e45a,_0x86406);logger[_0x2154('0x2c')](_0x2154('0x70'));return _0x240e70(new Error(_0x2154('0x70')));}var _0x3f164f=fs[_0x2154('0x71')](path[_0x2154('0x4f')](_0x86406,_0x1a2bea[0x0]));if(_0x3f164f[_0x2154('0x72')]()){removeReferences(_0xa3e45a,_0x86406);logger[_0x2154('0x2c')](_0x2154('0x70'));return _0x240e70(new Error(_0x2154('0x70')));}if(_0x3f164f[_0x2154('0x73')]()){var _0x145d69=fs[_0x2154('0x6e')](path['join'](_0x86406,_0x1a2bea[0x0]));if(_0x145d69['length']===0x0){removeReferences(_0xa3e45a,_0x86406);logger['error'](_0x2154('0x70'));return _0x240e70(new Error('Invalid\x20plugin\x20structure'));}var _0x48c385=_0x145d69[_0x2154('0x74')](function(_0x1997c5){return _0x1997c5===_0x2154('0x75');});if(!_0x48c385){return _0x240e70(new Error(_0x2154('0x76')));}var _0x4569f5=fs[_0x2154('0x77')](path[_0x2154('0x4f')](_0x86406,_0x1a2bea[0x0],_0x2154('0x75')));var _0x5211d0=JSON[_0x2154('0x78')](_0x4569f5);if('undefined'==typeof _0x5211d0[_0x2154('0x2e')]){return _0x240e70(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x2154('0x20')==typeof _0x5211d0[_0x2154('0x34')]){return _0x240e70(new Error(_0x2154('0x79')));}if(_0x2154('0x20')==typeof _0x5211d0[_0x2154('0x7a')]){return _0x240e70(new Error(_0x2154('0x7b')));}if(_0x2154('0x20')==typeof _0x5211d0[_0x2154('0x7c')]){return _0x240e70(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x5211d0['type']===_0x2154('0x7d')){if(_0x2154('0x20')==typeof _0x5211d0['parameters']['views']){return _0x240e70(new Error(_0x2154('0x7e')));}if(_0x2154('0x20')==typeof _0x5211d0['parameters'][_0x2154('0x7f')][_0x2154('0x80')]&&_0x2154('0x20')==typeof _0x5211d0[_0x2154('0x7c')]['views'][_0x2154('0x81')]){return _0x240e70(new Error(_0x2154('0x82')));}}else if(_0x5211d0[_0x2154('0x34')]==='script'){if('undefined'==typeof _0x5211d0[_0x2154('0x7c')]['scriptName']){return _0x240e70(new Error(_0x2154('0x83')));}if('undefined'==typeof _0x5211d0[_0x2154('0x7c')][_0x2154('0x84')]){return _0x240e70(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x240e70(new Error(_0x2154('0x85')));}var _0x1e2521=_0x5211d0[_0x2154('0x2e')];var _0x59b805=_0x5211d0[_0x2154('0x86')];var _0x44e446=_0x5211d0['type'];var _0x5aa076=_0x5211d0[_0x2154('0x87')]?_0x5211d0[_0x2154('0x87')]:'always';var _0x3fb30d=_0x5211d0[_0x2154('0x88')]?_0x5211d0[_0x2154('0x88')]:_0x2154('0x89');var _0x2a7d96='';var _0x3da082='';var _0x4c36ae='';var _0x2108f5='';var _0x4b4de9=_0x5211d0[_0x2154('0x7a')];if(_0x44e446===_0x2154('0x7d')){if(_0x2154('0x20')!=typeof _0x5211d0['parameters'][_0x2154('0x7f')][_0x2154('0x80')]){var _0x452401=_0x5211d0[_0x2154('0x7c')][_0x2154('0x7f')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x2154('0x8a')](_0x452401)){_0x2a7d96=path[_0x2154('0x4f')](_0x2154('0x8b'),_0x5642d1,_0x1a2bea[0x0],_0x452401);}else{_0x2a7d96=_0x452401;}}else{logger[_0x2154('0x65')](_0x2154('0x8c'));}if(_0x2154('0x20')!=typeof _0x5211d0['parameters'][_0x2154('0x7f')][_0x2154('0x81')]){var _0x1c1567=_0x5211d0[_0x2154('0x7c')]['views'][_0x2154('0x81')];if(!/^(f|ht)tps?:\/\//i['test'](_0x1c1567)){_0x3da082=path['join'](_0x2154('0x8b'),_0x5642d1,_0x1a2bea[0x0],_0x1c1567);}else{_0x3da082=_0x1c1567;}}else{logger['info'](_0x2154('0x8d'));}}else if(_0x44e446===_0x2154('0x8e')){_0x4c36ae=_0x5211d0[_0x2154('0x7c')][_0x2154('0x8f')];_0x2108f5=_0x5211d0[_0x2154('0x7c')]['scriptPath'];if(_0x2154('0x20')!=typeof _0x5211d0[_0x2154('0x7c')][_0x2154('0x7f')]){if(_0x2154('0x20')!=typeof _0x5211d0[_0x2154('0x7c')]['views'][_0x2154('0x80')]){var _0x452401=_0x5211d0['parameters'][_0x2154('0x7f')][_0x2154('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x2154('0x8a')](_0x452401)){_0x2a7d96=path[_0x2154('0x4f')]('plugins',_0x5642d1,_0x1a2bea[0x0],_0x452401);}else{_0x2a7d96=_0x452401;}}if(_0x2154('0x20')!=typeof _0x5211d0[_0x2154('0x7c')][_0x2154('0x7f')][_0x2154('0x81')]){var _0x1c1567=_0x5211d0[_0x2154('0x7c')]['views'][_0x2154('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x2154('0x8a')](_0x1c1567)){_0x3da082=path[_0x2154('0x4f')](_0x2154('0x8b'),_0x5642d1,_0x1a2bea[0x0],_0x1c1567);}else{_0x3da082=_0x1c1567;}}}}var _0x3ffb90={'name':_0x1e2521,'description':_0x59b805,'path':path[_0x2154('0x4f')](_0x5642d1,_0x1a2bea[0x0]),'type':_0x44e446,'sidebar':_0x5aa076,'icon':_0x3fb30d,'adminUrl':_0x2a7d96,'agentUrl':_0x3da082,'scriptName':_0x4c36ae,'scriptPath':_0x2108f5,'version':_0x4b4de9};removeReferences(_0xa3e45a,null);return db[_0x2154('0x31')][_0x2154('0x90')](_0x3ffb90)[_0x2154('0x26')](function(_0x5f9689){var _0x5c2643={'role':_0x5816e9[_0x2154('0x91')][_0x2154('0x92')],'userProfileId':_0x5816e9[_0x2154('0x91')][_0x2154('0x93')]};if(!_0x5c2643)throw new Error(_0x2154('0x94'));if(_0x5c2643['role']==='user'){var _0x802f46=_0x5f9689[_0x2154('0x28')]({'plain':!![]});return db[_0x2154('0x95')][_0x2154('0x4c')]({'where':{'name':_0x2154('0x29'),'userProfileId':_0x5c2643[_0x2154('0x93')]},'raw':!![]})[_0x2154('0x26')](function(_0x439a3a){if(_0x439a3a&&_0x439a3a[_0x2154('0x96')]===0x0){return db[_0x2154('0x2a')][_0x2154('0x90')]({'name':_0x802f46[_0x2154('0x2e')],'resourceId':_0x802f46['id'],'type':_0x439a3a['name'],'sectionId':_0x439a3a['id']},{})[_0x2154('0x26')](function(){return _0x5f9689;});}else{return _0x5f9689;}})[_0x2154('0x47')](function(_0x458769){logger[_0x2154('0x2c')](_0x2154('0x97'),_0x458769);throw _0x458769;});}return _0x5f9689;})[_0x2154('0x26')](respondWithResult(_0x15460f,null))['catch'](handleError(_0x15460f,null));}});}catch(_0x4528d1){_0x15460f[_0x2154('0x1c')](0x1f4)[_0x2154('0x98')](_0x4528d1);}};function removeReferences(_0x529bf2,_0xdb5d6c){try{if(_0x529bf2){fs['unlinkSync'](_0x529bf2);logger[_0x2154('0x65')](_0x2154('0x99'));}if(_0xdb5d6c){rimraf(_0xdb5d6c,function(){});logger[_0x2154('0x65')](_0x2154('0x9a'));}}catch(_0xb74885){logger[_0x2154('0x2c')](_0xb74885);}}exports[_0x2154('0x25')]=function(_0x1c5b80,_0x530195,_0xf2e711){return db[_0x2154('0x31')]['find']({'where':{'id':_0x1c5b80['params']['id']}})[_0x2154('0x26')](handleEntityNotFound(_0x530195,null))[_0x2154('0x26')](saveUpdates(_0x1c5b80['body'],null))[_0x2154('0x26')](respondWithResult(_0x530195,null))['catch'](handleError(_0x530195,null));};exports[_0x2154('0x9b')]=function(_0x2f94cb,_0x3665b7,_0x2462f3){return db['Plugin'][_0x2154('0x4c')]({'where':{'id':_0x2f94cb['params']['id']}})['then'](function(_0x48f908){if(_0x48f908){return _0x48f908[_0x2154('0x27')]();}})[_0x2154('0x26')](function(_0x4bf906){rimraf(path[_0x2154('0x4f')](config['root'],_0x2154('0x51'),path[_0x2154('0x9c')](_0x4bf906['path'])),function(){});return _0x4bf906;})['then'](handleEntityNotFound(_0x3665b7,null))[_0x2154('0x26')](respondWithStatusCode(_0x3665b7,null))[_0x2154('0x47')](handleError(_0x3665b7,null));};exports[_0x2154('0x9d')]=function(_0x5da986,_0x1a19aa,_0x2adae0){return BPromise[_0x2154('0x9e')]()['then'](function(){if(!_0x5da986[_0x2154('0x38')]['path']){throw new Error(_0x2154('0x9f'));}if(!_0x5da986[_0x2154('0x38')][_0x2154('0xa0')]){throw new Error(_0x2154('0xa1'));}var _0x36199d=_0x5da986[_0x2154('0x38')][_0x2154('0xa2')]?_0x5da986[_0x2154('0x38')]['hostname']+':'+_0x5da986[_0x2154('0x38')][_0x2154('0xa0')]:_0x2154('0xa3')+_0x5da986['query']['port'];var _0x29c4d1=_0x5da986[_0x2154('0x38')][_0x2154('0xa4')]?_0x5da986['query'][_0x2154('0xa4')]:!![];var _0x37c827=_0x5da986[_0x2154('0x38')]['encoding']?_0x5da986[_0x2154('0x38')][_0x2154('0xa5')]:null;var _0x3ddf6b={'method':_0x5da986[_0x2154('0xa6')],'uri':util[_0x2154('0x62')](_0x2154('0xa7'),_0x36199d,_0x5da986[_0x2154('0x38')][_0x2154('0x4e')]),'json':_0x29c4d1,'resolveWithFullResponse':!![],'encoding':_0x37c827,'qs':_0x5da986[_0x2154('0x38')]};if(_0x5da986[_0x2154('0xa8')]){_0x3ddf6b[_0x2154('0xa8')]=_0x5da986['headers'];if(_0x3ddf6b[_0x2154('0xa8')][_0x2154('0xa9')]){delete _0x3ddf6b[_0x2154('0xa8')][_0x2154('0xa9')];}}if(_0x3ddf6b['headers']['content-type']){delete _0x3ddf6b[_0x2154('0xa8')][_0x2154('0xaa')];}return rp(_0x3ddf6b);})[_0x2154('0x26')](function(_0x170b32){if(_0x170b32){_0x1a19aa['set'](_0x170b32['headers']);logger[_0x2154('0x65')](_0x170b32[_0x2154('0x91')]);if(_[_0x2154('0xab')](_0x5da986[_0x2154('0x38')][_0x2154('0x4e')],_0x2154('0x4d'))&&_0x170b32[_0x2154('0xac')]==0x1f4){return _0x1a19aa[_0x2154('0x2b')](_0x170b32[_0x2154('0xac')]);}else{return _0x1a19aa[_0x2154('0x1c')](_0x170b32[_0x2154('0xac')])['send'](_0x170b32[_0x2154('0x91')]);}}else{return _0x1a19aa[_0x2154('0x2b')](0xc8);}})[_0x2154('0x47')](handleError(_0x1a19aa,null));};exports['webhookPost']=function(_0x3b2971,_0x2ed517,_0x12ccc6){return BPromise[_0x2154('0x9e')]()[_0x2154('0x26')](function(){if(!_0x3b2971[_0x2154('0x38')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x3b2971[_0x2154('0x38')]['port']){throw new Error(_0x2154('0xa1'));}var _0x2f9c2f=_0x3b2971[_0x2154('0x38')][_0x2154('0xa2')]?_0x3b2971[_0x2154('0x38')][_0x2154('0xa2')]+':'+_0x3b2971[_0x2154('0x38')][_0x2154('0xa0')]:'http://localhost:'+_0x3b2971[_0x2154('0x38')]['port'];var _0x194df3=_0x3b2971[_0x2154('0x38')][_0x2154('0xa4')]?_0x3b2971[_0x2154('0x38')][_0x2154('0xa4')]:!![];var _0x306bfe=_0x3b2971['query']['encoding']?_0x3b2971[_0x2154('0x38')][_0x2154('0xa5')]:null;var _0x4e5b7e={'method':_0x3b2971[_0x2154('0xa6')],'uri':util[_0x2154('0x62')](_0x2154('0xa7'),_0x2f9c2f,_0x3b2971[_0x2154('0x38')][_0x2154('0x4e')]),'json':_0x194df3,'resolveWithFullResponse':!![],'encoding':_0x306bfe,'body':_0x3b2971['body']};if(_0x3b2971[_0x2154('0xa8')]){_0x4e5b7e[_0x2154('0xa8')]=_0x3b2971['headers'];if(_0x4e5b7e[_0x2154('0xa8')]['content-length']){delete _0x4e5b7e[_0x2154('0xa8')]['content-length'];}}if(_0x4e5b7e['headers'][_0x2154('0xaa')]){delete _0x4e5b7e[_0x2154('0xa8')][_0x2154('0xaa')];}return rp(_0x4e5b7e);})[_0x2154('0x26')](function(_0xcc509d){if(_0xcc509d){_0x2ed517[_0x2154('0x22')](_0xcc509d[_0x2154('0xa8')]);logger[_0x2154('0x65')](_0xcc509d[_0x2154('0x91')]);return _0x2ed517['status'](_0xcc509d[_0x2154('0xac')])[_0x2154('0x98')](_0xcc509d[_0x2154('0x91')]);}else{return _0x2ed517['sendStatus'](0xc8);}})[_0x2154('0x47')](handleError(_0x2ed517,null));};
\ No newline at end of file
index f08a194..0fa2791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018c=['hook','exports','events','../../mysqldb','Plugin','update','emit','hasOwnProperty'];(function(_0x16f915,_0x4cc35b){var _0x46bc39=function(_0x5cd5ec){while(--_0x5cd5ec){_0x16f915['push'](_0x16f915['shift']());}};_0x46bc39(++_0x4cc35b);}(_0x018c,0xda));var _0xc018=function(_0x1d2020,_0x3b601e){_0x1d2020=_0x1d2020-0x0;var _0x5ca16a=_0x018c[_0x1d2020];return _0x5ca16a;};'use strict';var EventEmitter=require(_0xc018('0x0'));var Plugin=require(_0xc018('0x1'))['db'][_0xc018('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc018('0x3'),'afterDestroy':'remove'};function emitEvent(_0x197c30){return function(_0x263935,_0x455c37,_0x210679){PluginEvents['emit'](_0x197c30+':'+_0x263935['id'],_0x263935);PluginEvents[_0xc018('0x4')](_0x197c30,_0x263935);_0x210679(null);};}for(var e in events){if(events[_0xc018('0x5')](e)){var event=events[e];Plugin[_0xc018('0x6')](e,emitEvent(event));}}module[_0xc018('0x7')]=PluginEvents;
\ No newline at end of file
+var _0x0967=['update','remove','emit','hasOwnProperty','hook','exports','events','Plugin','setMaxListeners','save'];(function(_0x19500a,_0x317e84){var _0x21f791=function(_0x437e7d){while(--_0x437e7d){_0x19500a['push'](_0x19500a['shift']());}};_0x21f791(++_0x317e84);}(_0x0967,0x100));var _0x7096=function(_0x212053,_0x1dbd9a){_0x212053=_0x212053-0x0;var _0x38729a=_0x0967[_0x212053];return _0x38729a;};'use strict';var EventEmitter=require(_0x7096('0x0'));var Plugin=require('../../mysqldb')['db'][_0x7096('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x7096('0x2')](0x0);var events={'afterCreate':_0x7096('0x3'),'afterUpdate':_0x7096('0x4'),'afterDestroy':_0x7096('0x5')};function emitEvent(_0xe41170){return function(_0x4106a2,_0x2a50e2,_0x4eba77){PluginEvents[_0x7096('0x6')](_0xe41170+':'+_0x4106a2['id'],_0x4106a2);PluginEvents[_0x7096('0x6')](_0xe41170,_0x4106a2);_0x4eba77(null);};}for(var e in events){if(events[_0x7096('0x7')](e)){var event=events[e];Plugin[_0x7096('0x8')](e,emitEvent(event));}}module[_0x7096('0x9')]=PluginEvents;
\ No newline at end of file
index 0c3ecb5..9a54741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8109=['./plugin.attributes','define','Plugin','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x204b81,_0x1414a3){var _0x1c72fe=function(_0x345516){while(--_0x345516){_0x204b81['push'](_0x204b81['shift']());}};_0x1c72fe(++_0x1414a3);}(_0x8109,0xff));var _0x9810=function(_0x4015ac,_0x3a2529){_0x4015ac=_0x4015ac-0x0;var _0x5a7de7=_0x8109[_0x4015ac];return _0x5a7de7;};'use strict';var _=require(_0x9810('0x0'));var util=require('util');var logger=require(_0x9810('0x1'))(_0x9810('0x2'));var moment=require(_0x9810('0x3'));var BPromise=require(_0x9810('0x4'));var rp=require(_0x9810('0x5'));var fs=require('fs');var path=require(_0x9810('0x6'));var rimraf=require(_0x9810('0x7'));var config=require(_0x9810('0x8'));var attributes=require(_0x9810('0x9'));module['exports']=function(_0x3f641b,_0x194d26){return _0x3f641b[_0x9810('0xa')](_0x9810('0xb'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c42=['plugins','util','api','bluebird','path','../../config/environment','exports','define','Plugin'];(function(_0x93f75f,_0x330974){var _0x277e1f=function(_0x50ae53){while(--_0x50ae53){_0x93f75f['push'](_0x93f75f['shift']());}};_0x277e1f(++_0x330974);}(_0x6c42,0xd0));var _0x26c4=function(_0xb725be,_0x45bd01){_0xb725be=_0xb725be-0x0;var _0x2f2424=_0x6c42[_0xb725be];return _0x2f2424;};'use strict';var _=require('lodash');var util=require(_0x26c4('0x0'));var logger=require('../../config/logger')(_0x26c4('0x1'));var moment=require('moment');var BPromise=require(_0x26c4('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x26c4('0x3'));var rimraf=require('rimraf');var config=require(_0x26c4('0x4'));var attributes=require('./plugin.attributes');module[_0x26c4('0x5')]=function(_0x3ffe3c,_0x26e1ca){return _0x3ffe3c[_0x26c4('0x6')](_0x26c4('0x7'),attributes,{'tableName':_0x26c4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb5f175..cab00f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb63b=['info','result','catch','CreatePlugin','Plugin','create','body','options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x52423b,_0x55b87f){var _0x2e2b34=function(_0x129344){while(--_0x129344){_0x52423b['push'](_0x52423b['shift']());}};_0x2e2b34(++_0x55b87f);}(_0xb63b,0x106));var _0xbb63=function(_0x1401be,_0x542364){_0x1401be=_0x1401be-0x0;var _0x32f604=_0xb63b[_0x1401be];return _0x32f604;};'use strict';var _=require(_0xbb63('0x0'));var util=require(_0xbb63('0x1'));var moment=require(_0xbb63('0x2'));var BPromise=require(_0xbb63('0x3'));var rs=require(_0xbb63('0x4'));var fs=require('fs');var Redis=require(_0xbb63('0x5'));var db=require(_0xbb63('0x6'))['db'];var utils=require(_0xbb63('0x7'));var logger=require(_0xbb63('0x8'))('rpc');var config=require(_0xbb63('0x9'));var jayson=require(_0xbb63('0xa'));var client=jayson[_0xbb63('0xb')]['http']({'port':0x232a});config[_0xbb63('0xc')]=_[_0xbb63('0xd')](config[_0xbb63('0xc')],{'host':_0xbb63('0xe'),'port':0x18eb});var socket=require(_0xbb63('0xf'))(new Redis(config[_0xbb63('0xc')]));require(_0xbb63('0x10'))[_0xbb63('0x11')](socket);function respondWithRpcPromise(_0x4447da,_0x3f576a,_0x2a843d){return new BPromise(function(_0x17fa64,_0x121295){return client['request'](_0x4447da,_0x2a843d)['then'](function(_0x1e71eb){logger['info'](_0xbb63('0x12'),_0x3f576a,_0xbb63('0x13'));logger[_0xbb63('0x14')](_0xbb63('0x15'),_0x3f576a,_0xbb63('0x13'),JSON[_0xbb63('0x16')](_0x1e71eb));if(_0x1e71eb[_0xbb63('0x17')]){if(_0x1e71eb[_0xbb63('0x17')][_0xbb63('0x18')]===0x1f4){logger[_0xbb63('0x17')](_0xbb63('0x12'),_0x3f576a,_0x1e71eb[_0xbb63('0x17')]['message']);return _0x121295(_0x1e71eb['error'][_0xbb63('0x19')]);}logger[_0xbb63('0x17')](_0xbb63('0x12'),_0x3f576a,_0x1e71eb['error'][_0xbb63('0x19')]);return _0x17fa64(_0x1e71eb[_0xbb63('0x17')][_0xbb63('0x19')]);}else{logger[_0xbb63('0x1a')](_0xbb63('0x12'),_0x3f576a,_0xbb63('0x13'));_0x17fa64(_0x1e71eb[_0xbb63('0x1b')][_0xbb63('0x19')]);}})[_0xbb63('0x1c')](function(_0x559a29){logger[_0xbb63('0x17')]('Plugin,\x20%s,\x20%s',_0x3f576a,_0x559a29);_0x121295(_0x559a29);});});}exports[_0xbb63('0x1d')]=function(_0x41c7d2){var _0x330fce=this;return new Promise(function(_0x5999fd,_0x216da3){return db[_0xbb63('0x1e')][_0xbb63('0x1f')](_0x41c7d2[_0xbb63('0x20')],{'raw':_0x41c7d2[_0xbb63('0x21')]?_0x41c7d2[_0xbb63('0x21')][_0xbb63('0x22')]===undefined?!![]:![]:!![]})[_0xbb63('0x23')](function(_0xcb2650){logger[_0xbb63('0x1a')](_0xbb63('0x1d'),_0x41c7d2);logger[_0xbb63('0x14')](_0xbb63('0x1d'),_0x41c7d2,JSON[_0xbb63('0x16')](_0xcb2650));_0x5999fd(_0xcb2650);})[_0xbb63('0x1c')](function(_0x14f94a){logger[_0xbb63('0x17')](_0xbb63('0x1d'),_0x14f94a[_0xbb63('0x19')],_0x41c7d2);_0x216da3(_0x330fce[_0xbb63('0x17')](0x1f4,_0x14f94a['message']));});});};
\ No newline at end of file
+var _0x65c9=['raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreatePlugin','Plugin','create','body','options'];(function(_0x319c54,_0x549dcf){var _0x450a37=function(_0x596c3a){while(--_0x596c3a){_0x319c54['push'](_0x319c54['shift']());}};_0x450a37(++_0x549dcf);}(_0x65c9,0x182));var _0x965c=function(_0x3fd832,_0xf84818){_0x3fd832=_0x3fd832-0x0;var _0x145a1e=_0x65c9[_0x3fd832];return _0x145a1e;};'use strict';var _=require(_0x965c('0x0'));var util=require(_0x965c('0x1'));var moment=require('moment');var BPromise=require(_0x965c('0x2'));var rs=require(_0x965c('0x3'));var fs=require('fs');var Redis=require(_0x965c('0x4'));var db=require(_0x965c('0x5'))['db'];var utils=require(_0x965c('0x6'));var logger=require(_0x965c('0x7'))(_0x965c('0x8'));var config=require(_0x965c('0x9'));var jayson=require(_0x965c('0xa'));var client=jayson[_0x965c('0xb')][_0x965c('0xc')]({'port':0x232a});config[_0x965c('0xd')]=_['defaults'](config[_0x965c('0xd')],{'host':_0x965c('0xe'),'port':0x18eb});var socket=require(_0x965c('0xf'))(new Redis(config[_0x965c('0xd')]));require(_0x965c('0x10'))[_0x965c('0x11')](socket);function respondWithRpcPromise(_0x2e8aa7,_0x4c6853,_0x198aaa){return new BPromise(function(_0x1ab28e,_0x3cf622){return client[_0x965c('0x12')](_0x2e8aa7,_0x198aaa)[_0x965c('0x13')](function(_0x2cc0ae){logger[_0x965c('0x14')](_0x965c('0x15'),_0x4c6853,_0x965c('0x16'));logger[_0x965c('0x17')](_0x965c('0x18'),_0x4c6853,_0x965c('0x16'),JSON[_0x965c('0x19')](_0x2cc0ae));if(_0x2cc0ae[_0x965c('0x1a')]){if(_0x2cc0ae['error'][_0x965c('0x1b')]===0x1f4){logger[_0x965c('0x1a')](_0x965c('0x15'),_0x4c6853,_0x2cc0ae['error'][_0x965c('0x1c')]);return _0x3cf622(_0x2cc0ae[_0x965c('0x1a')][_0x965c('0x1c')]);}logger['error'](_0x965c('0x15'),_0x4c6853,_0x2cc0ae['error']['message']);return _0x1ab28e(_0x2cc0ae['error'][_0x965c('0x1c')]);}else{logger[_0x965c('0x14')](_0x965c('0x15'),_0x4c6853,_0x965c('0x16'));_0x1ab28e(_0x2cc0ae['result']['message']);}})['catch'](function(_0x39c663){logger[_0x965c('0x1a')](_0x965c('0x15'),_0x4c6853,_0x39c663);_0x3cf622(_0x39c663);});});}exports[_0x965c('0x1d')]=function(_0x23aa21){var _0x354a45=this;return new Promise(function(_0x2e41e5,_0x3f5ec9){return db[_0x965c('0x1e')][_0x965c('0x1f')](_0x23aa21[_0x965c('0x20')],{'raw':_0x23aa21['options']?_0x23aa21[_0x965c('0x21')][_0x965c('0x22')]===undefined?!![]:![]:!![]})['then'](function(_0x490626){logger[_0x965c('0x14')]('CreatePlugin',_0x23aa21);logger[_0x965c('0x17')](_0x965c('0x1d'),_0x23aa21,JSON[_0x965c('0x19')](_0x490626));_0x2e41e5(_0x490626);})['catch'](function(_0x11d518){logger[_0x965c('0x1a')](_0x965c('0x1d'),_0x11d518[_0x965c('0x1c')],_0x23aa21);_0x3f5ec9(_0x354a45['error'](0x1f4,_0x11d518[_0x965c('0x1c')]));});});};
\ No newline at end of file
index 146ecd3..3fb0e3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba26=['emit','removeListener','register','length','./plugin.events','save','remove','update'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xba26,0x164));var _0x6ba2=function(_0x4a9e90,_0x517ad5){_0x4a9e90=_0x4a9e90-0x0;var _0x83f0a9=_0xba26[_0x4a9e90];return _0x83f0a9;};'use strict';var PluginEvents=require(_0x6ba2('0x0'));var events=[_0x6ba2('0x1'),_0x6ba2('0x2'),_0x6ba2('0x3')];function createListener(_0x4e0aaf,_0x4eb90a){return function(_0x2716f1){_0x4eb90a[_0x6ba2('0x4')](_0x4e0aaf,_0x2716f1);};}function removeListener(_0x9eafbc,_0x91b858){return function(){PluginEvents[_0x6ba2('0x5')](_0x9eafbc,_0x91b858);};}exports[_0x6ba2('0x6')]=function(_0x2ab581){for(var _0xd8e65e=0x0,_0x2e00cd=events[_0x6ba2('0x7')];_0xd8e65e<_0x2e00cd;_0xd8e65e++){var _0x111185=events[_0xd8e65e];var _0x55a602=createListener('plugin:'+_0x111185,_0x2ab581);PluginEvents['on'](_0x111185,_0x55a602);}};
\ No newline at end of file
+var _0x212d=['./plugin.events','remove','update','emit','removeListener','register','plugin:'];(function(_0x40303a,_0x115643){var _0x24ad7f=function(_0x383fd2){while(--_0x383fd2){_0x40303a['push'](_0x40303a['shift']());}};_0x24ad7f(++_0x115643);}(_0x212d,0x85));var _0xd212=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x212d[_0x3dd15e];return _0x231fd0;};'use strict';var PluginEvents=require(_0xd212('0x0'));var events=['save',_0xd212('0x1'),_0xd212('0x2')];function createListener(_0x3223c7,_0x5e3588){return function(_0x2eac30){_0x5e3588[_0xd212('0x3')](_0x3223c7,_0x2eac30);};}function removeListener(_0x2b3eee,_0x5687b9){return function(){PluginEvents[_0xd212('0x4')](_0x2b3eee,_0x5687b9);};}exports[_0xd212('0x5')]=function(_0x1524ec){for(var _0x61736=0x0,_0x10fbf7=events['length'];_0x61736<_0x10fbf7;_0x61736++){var _0x44b62d=events[_0x61736];var _0x47c3c6=createListener(_0xd212('0x6')+_0x44b62d,_0x1524ec);PluginEvents['on'](_0x44b62d,_0x47c3c6);}};
\ No newline at end of file
index 5b0ca9b..b1795cb 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(_0x579f4d,_0x328a85){var _0xd51656=function(_0x3ea06e){while(--_0x3ea06e){_0x579f4d['push'](_0x579f4d['shift']());}};_0xd51656(++_0x328a85);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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(_0x1020ed,_0x15dced){var _0x936b9c=function(_0x26729c){while(--_0x26729c){_0x1020ed['push'](_0x1020ed['shift']());}};_0x936b9c(++_0x15dced);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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 4f2aeb3..64e13d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['../../config/pm2','../../config/logger','api','path','exec','bluebird','sendStatus','status','error','stack','name','send','npm\x20install','info','index','list','then','reject','express','motion2','length','catch','show','params','create','body','join','../../files/plugins','script','cwd','chdir','start','dump','Missing\x20name\x20and/or\x20path','restart','stop','hasOwnProperty','destroy','delete','Unknown\x20id','lodash'];(function(_0x339eaa,_0xbc2f72){var _0x4985b6=function(_0x10e65b){while(--_0x10e65b){_0x339eaa['push'](_0x339eaa['shift']());}};_0x4985b6(++_0xbc2f72);}(_0x702d,0x147));var _0xd702=function(_0x2b5420,_0x4f74a0){_0x2b5420=_0x2b5420-0x0;var _0x3b3d49=_0x702d[_0x2b5420];return _0x3b3d49;};'use strict';var _=require(_0xd702('0x0'));var pm2=require(_0xd702('0x1'));var logger=require(_0xd702('0x2'))(_0xd702('0x3'));var path=require(_0xd702('0x4'));var exec=require('child_process')[_0xd702('0x5')];var BPromise=require(_0xd702('0x6'));function handleEntityNotFound(_0x27b260,_0x1c5a32){return function(_0x481ee0){if(!_0x481ee0){_0x27b260[_0xd702('0x7')](0x194);;}return _0x481ee0;};}function respondWithResult(_0x544e94,_0x1aecfc){_0x1aecfc=_0x1aecfc||0xc8;return function(_0x3a2c03){if(_0x3a2c03){return _0x544e94[_0xd702('0x8')](_0x1aecfc)['json'](_0x3a2c03);}return null;};}function handleError(_0x12bb75,_0x53bd02){_0x53bd02=_0x53bd02||0x1f4;return function(_0x39c49e){logger[_0xd702('0x9')](_0x39c49e[_0xd702('0xa')]);if(_0x39c49e[_0xd702('0xb')]){delete _0x39c49e[_0xd702('0xb')];}_0x12bb75[_0xd702('0x8')](_0x53bd02)[_0xd702('0xc')](_0x39c49e);};}function execChildProcess(){return new BPromise(function(_0x1988eb,_0x5907cf){exec(_0xd702('0xd'),function(_0x58805a,_0x4a3439,_0x3e9439){logger[_0xd702('0xe')](_0x4a3439);logger[_0xd702('0xe')](_0x3e9439);if(_0x58805a){logger['error'](_0x58805a);return _0x5907cf(_0x58805a);}return _0x1988eb(_0x4a3439);});});}exports[_0xd702('0xf')]=function(_0x128add,_0x1ed8a3){return pm2[_0xd702('0x10')]()[_0xd702('0x11')](function(_0x181ff2){if(_0x181ff2){var _0x59dd33=_[_0xd702('0x12')](_0x181ff2,function(_0x3ea0ab){return _0x3ea0ab['name']===_0xd702('0x13')||_0x3ea0ab['name']===_0xd702('0x14');});return{'rows':_0x59dd33,'count':_0x59dd33[_0xd702('0x15')]};}return null;})['then'](respondWithResult(_0x1ed8a3,null))[_0xd702('0x16')](handleError(_0x1ed8a3,null));};exports[_0xd702('0x17')]=function(_0x2a87f2,_0x4fdbbd){return pm2['describe'](_0x2a87f2[_0xd702('0x18')]['id'])['then'](respondWithResult(_0x4fdbbd,null))[_0xd702('0x11')](handleEntityNotFound(_0x4fdbbd,null))[_0xd702('0x16')](handleError(_0x4fdbbd,null));};exports[_0xd702('0x19')]=function(_0x265b1b,_0x4cf326){if(_0x265b1b[_0xd702('0x1a')][_0xd702('0xb')]&&_0x265b1b['body']['script']){var _0x536ca8=path[_0xd702('0x1b')](__dirname,_0xd702('0x1c'),_0x265b1b['body'][_0xd702('0x1d')]);var _0x5d91fd=process[_0xd702('0x1e')]();process['chdir'](path['dirname'](_0x536ca8));return execChildProcess()['then'](function(_0x21c00e){process[_0xd702('0x1f')](_0x5d91fd);return pm2[_0xd702('0x20')]({'name':_0x265b1b['body'][_0xd702('0xb')],'script':_0x536ca8});})[_0xd702('0x11')](function(_0x10599a){pm2[_0xd702('0x21')]();return _0x10599a[0x0];})[_0xd702('0x11')](respondWithResult(_0x4cf326,0xc9))[_0xd702('0x16')](handleError(_0x4cf326,null));}else{return _0x4cf326[_0xd702('0x8')](0x1f4)[_0xd702('0xc')]({'message':_0xd702('0x22')});}};exports['update']=function(_0x116b2f,_0x322cb8){if(_0x116b2f[_0xd702('0x1a')]['id']){delete _0x116b2f[_0xd702('0x1a')]['id'];}var _0xbe4518={'online':_0xd702('0x23'),'stopped':_0xd702('0x24')};if(_0xbe4518[_0xd702('0x25')](_0x116b2f['body']['status'])){return pm2[_0xbe4518[_0x116b2f[_0xd702('0x1a')][_0xd702('0x8')]]](_0x116b2f['params']['id'])[_0xd702('0x11')](respondWithResult(_0x322cb8,0xc8))[_0xd702('0x16')](handleError(_0x322cb8,null));}else{return _0x322cb8[_0xd702('0x8')](0x1f4)[_0xd702('0xc')]({'message':'Unknown\x20status'});}};exports[_0xd702('0x26')]=function(_0x313281,_0x1630ed){if(_0x313281[_0xd702('0x1a')]['id']){delete _0x313281[_0xd702('0x1a')]['id'];}if(_0x313281['params']['id']){return pm2[_0xd702('0x27')](_0x313281[_0xd702('0x18')]['id'])[_0xd702('0x11')](function(_0x5abfea){pm2[_0xd702('0x21')]();return _0x5abfea[0x0];})['then'](respondWithResult(_0x1630ed,null))['catch'](handleError(_0x1630ed,null));}else{return _0x1630ed[_0xd702('0x8')](0x1f4)[_0xd702('0xc')]({'message':_0xd702('0x28')});}};
\ No newline at end of file
+var _0x6e6c=['script','join','cwd','dirname','chdir','start','dump','update','restart','hasOwnProperty','params','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','api','path','bluebird','sendStatus','status','error','name','send','npm\x20install','info','index','then','reject','express','length','catch','describe','create','body'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6e6c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc6e6('0x0'));var pm2=require(_0xc6e6('0x1'));var logger=require('../../config/logger')(_0xc6e6('0x2'));var path=require(_0xc6e6('0x3'));var exec=require('child_process')['exec'];var BPromise=require(_0xc6e6('0x4'));function handleEntityNotFound(_0x5a9e2b,_0x40b7e1){return function(_0x4b13f0){if(!_0x4b13f0){_0x5a9e2b[_0xc6e6('0x5')](0x194);;}return _0x4b13f0;};}function respondWithResult(_0x1182c7,_0x4bf906){_0x4bf906=_0x4bf906||0xc8;return function(_0x301f55){if(_0x301f55){return _0x1182c7[_0xc6e6('0x6')](_0x4bf906)['json'](_0x301f55);}return null;};}function handleError(_0x324706,_0x15d268){_0x15d268=_0x15d268||0x1f4;return function(_0x5a7ef3){logger[_0xc6e6('0x7')](_0x5a7ef3['stack']);if(_0x5a7ef3[_0xc6e6('0x8')]){delete _0x5a7ef3[_0xc6e6('0x8')];}_0x324706[_0xc6e6('0x6')](_0x15d268)[_0xc6e6('0x9')](_0x5a7ef3);};}function execChildProcess(){return new BPromise(function(_0x12596b,_0xbf9ffc){exec(_0xc6e6('0xa'),function(_0x10aae5,_0x2c205d,_0x58540d){logger[_0xc6e6('0xb')](_0x2c205d);logger['info'](_0x58540d);if(_0x10aae5){logger[_0xc6e6('0x7')](_0x10aae5);return _0xbf9ffc(_0x10aae5);}return _0x12596b(_0x2c205d);});});}exports[_0xc6e6('0xc')]=function(_0x33aea0,_0x13c8d5){return pm2['list']()[_0xc6e6('0xd')](function(_0x2bfe7d){if(_0x2bfe7d){var _0x13be73=_[_0xc6e6('0xe')](_0x2bfe7d,function(_0x102673){return _0x102673['name']===_0xc6e6('0xf')||_0x102673[_0xc6e6('0x8')]==='motion2';});return{'rows':_0x13be73,'count':_0x13be73[_0xc6e6('0x10')]};}return null;})[_0xc6e6('0xd')](respondWithResult(_0x13c8d5,null))[_0xc6e6('0x11')](handleError(_0x13c8d5,null));};exports['show']=function(_0x51fd7c,_0x5867bf){return pm2[_0xc6e6('0x12')](_0x51fd7c['params']['id'])[_0xc6e6('0xd')](respondWithResult(_0x5867bf,null))[_0xc6e6('0xd')](handleEntityNotFound(_0x5867bf,null))[_0xc6e6('0x11')](handleError(_0x5867bf,null));};exports[_0xc6e6('0x13')]=function(_0x19e1e4,_0x3a0d83){if(_0x19e1e4[_0xc6e6('0x14')][_0xc6e6('0x8')]&&_0x19e1e4[_0xc6e6('0x14')][_0xc6e6('0x15')]){var _0x4a36b6=path[_0xc6e6('0x16')](__dirname,'../../files/plugins',_0x19e1e4[_0xc6e6('0x14')][_0xc6e6('0x15')]);var _0x2be6fc=process[_0xc6e6('0x17')]();process['chdir'](path[_0xc6e6('0x18')](_0x4a36b6));return execChildProcess()[_0xc6e6('0xd')](function(_0x3a96df){process[_0xc6e6('0x19')](_0x2be6fc);return pm2[_0xc6e6('0x1a')]({'name':_0x19e1e4['body'][_0xc6e6('0x8')],'script':_0x4a36b6});})['then'](function(_0x266786){pm2[_0xc6e6('0x1b')]();return _0x266786[0x0];})[_0xc6e6('0xd')](respondWithResult(_0x3a0d83,0xc9))[_0xc6e6('0x11')](handleError(_0x3a0d83,null));}else{return _0x3a0d83['status'](0x1f4)[_0xc6e6('0x9')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0xc6e6('0x1c')]=function(_0x534745,_0x267c6a){if(_0x534745[_0xc6e6('0x14')]['id']){delete _0x534745[_0xc6e6('0x14')]['id'];}var _0x41e7c2={'online':_0xc6e6('0x1d'),'stopped':'stop'};if(_0x41e7c2[_0xc6e6('0x1e')](_0x534745[_0xc6e6('0x14')][_0xc6e6('0x6')])){return pm2[_0x41e7c2[_0x534745[_0xc6e6('0x14')]['status']]](_0x534745[_0xc6e6('0x1f')]['id'])['then'](respondWithResult(_0x267c6a,0xc8))[_0xc6e6('0x11')](handleError(_0x267c6a,null));}else{return _0x267c6a[_0xc6e6('0x6')](0x1f4)[_0xc6e6('0x9')]({'message':_0xc6e6('0x20')});}};exports[_0xc6e6('0x21')]=function(_0x402598,_0x43ff9c){if(_0x402598[_0xc6e6('0x14')]['id']){delete _0x402598[_0xc6e6('0x14')]['id'];}if(_0x402598[_0xc6e6('0x1f')]['id']){return pm2[_0xc6e6('0x22')](_0x402598[_0xc6e6('0x1f')]['id'])[_0xc6e6('0xd')](function(_0x410ba5){pm2[_0xc6e6('0x1b')]();return _0x410ba5[0x0];})[_0xc6e6('0xd')](respondWithResult(_0x43ff9c,null))[_0xc6e6('0x11')](handleError(_0x43ff9c,null));}else{return _0x43ff9c['status'](0x1f4)[_0xc6e6('0x9')]({'message':_0xc6e6('0x23')});}};
\ No newline at end of file
index 9d5084f..c48302d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cdc=['get','/agents','getAgents','isAuthenticated','express','Router','../../components/auth/service','./realtime.controller'];(function(_0x4bf1c8,_0x3359c1){var _0x23368f=function(_0x13ca07){while(--_0x13ca07){_0x4bf1c8['push'](_0x4bf1c8['shift']());}};_0x23368f(++_0x3359c1);}(_0x7cdc,0xbc));var _0xc7cd=function(_0x196854,_0x16fd15){_0x196854=_0x196854-0x0;var _0x35e631=_0x7cdc[_0x196854];return _0x35e631;};'use strict';var express=require(_0xc7cd('0x0'));var router=express[_0xc7cd('0x1')]();var auth=require(_0xc7cd('0x2'));var controller=require(_0xc7cd('0x3'));router[_0xc7cd('0x4')](_0xc7cd('0x5'),auth['isAuthenticated'](),controller[_0xc7cd('0x6')]);router[_0xc7cd('0x4')]('/queues',auth[_0xc7cd('0x7')](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
+var _0xfb1a=['getAgents','/queues','getQueues','exports','Router','../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfb1a,0x11c));var _0xafb1=function(_0x1d676a,_0x33f975){_0x1d676a=_0x1d676a-0x0;var _0x5b8d76=_0xfb1a[_0x1d676a];return _0x5b8d76;};'use strict';var express=require('express');var router=express[_0xafb1('0x0')]();var auth=require(_0xafb1('0x1'));var controller=require(_0xafb1('0x2'));router[_0xafb1('0x3')](_0xafb1('0x4'),auth[_0xafb1('0x5')](),controller[_0xafb1('0x6')]);router[_0xafb1('0x3')](_0xafb1('0x7'),auth[_0xafb1('0x5')](),controller[_0xafb1('0x8')]);module[_0xafb1('0x9')]=router;
\ No newline at end of file
index 5540bb8..2b7c44e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x061c=['User','rawAttributes','fieldName','key','agent','getOptions','push','sequelize','literal','FIELD(id,','forEach','Pause','where','merge','user','userProfileId','Agents','extraQueryConditions','UserProfile','getResources','findAndCountAll','find','filterAgentAttributes','getAgentStatus','Status','sortAgentsByStatus','split','map','pick','getQueues','startCase','Queue','type','name','voice','outbound','dialActive','dialMethod','role','QueueCampaigns','Queues','filter','getRealtimeQueues','catch','util','../../components/realtime/queues','../../config/utils','../../errors/api','APIBadRequestError','handleError','offset','undefined','count','limit','status','Content-Range','getAgents','getChannels','query','globalStatusFilter','pause','*pause','resolve','then','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','channel','toLowerCase','sort','includes','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length'];(function(_0x4b174a,_0x33a017){var _0x3cd7bf=function(_0x44ccd9){while(--_0x44ccd9){_0x4b174a['push'](_0x4b174a['shift']());}};_0x3cd7bf(++_0x33a017);}(_0x061c,0x174));var _0xc061=function(_0x44fbdf,_0x2cad6a){_0x44fbdf=_0x44fbdf-0x0;var _0x4afc4a=_0x061c[_0x44fbdf];return _0x4afc4a;};'use strict';var _=require('lodash');var util=require(_0xc061('0x0'));var rta=require('../../components/realtime/agents');var rtq=require(_0xc061('0x1'));var qs=require('../../components/parsers/qs');var utils=require(_0xc061('0x2'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0xc061('0x3'))[_0xc061('0x4')];var APIHandleError=require(_0xc061('0x3'))[_0xc061('0x5')];function respondWithFilteredResult(_0x1886cd,_0x3a630e){return function(_0x3665aa){if(_0x3665aa){var _0xcd096e=typeof _0x3a630e[_0xc061('0x6')]===_0xc061('0x7')&&typeof _0x3a630e['limit']===_0xc061('0x7');var _0x58c485=_0x3665aa['count'];var _0x4b5b0f=_0xcd096e?0x0:_0x3a630e[_0xc061('0x6')];var _0x277158=_0xcd096e?_0x3665aa[_0xc061('0x8')]:_0x3a630e[_0xc061('0x6')]+_0x3a630e[_0xc061('0x9')];var _0x46474b;if(_0x277158>=_0x58c485){_0x277158=_0x58c485;_0x46474b=0xc8;}else{_0x46474b=0xce;}_0x1886cd[_0xc061('0xa')](_0x46474b);return _0x1886cd['set'](_0xc061('0xb'),_0x4b5b0f+'-'+_0x277158+'/'+_0x58c485)['json'](_0x3665aa);}return null;};}exports[_0xc061('0xc')]=function(_0x2a7773,_0x589563){var _0x3c67c5={'count':0x0,'rows':[]};var _0x13c9a1={};var _0x1388db;var _0x6e1910=utils[_0xc061('0xd')]();var _0x467349;var _0x3741c9;var _0x442f2d=_0x2a7773[_0xc061('0xe')]['globalQueueFilter'];var _0x2b75b1=_0x2a7773[_0xc061('0xe')][_0xc061('0xf')];var _0x24bf9d=_0x2a7773['query']['pauseTypeFilter'];var _0x4e172a=_0x2b75b1===_0xc061('0x10')||_0x2b75b1===_0xc061('0x11')?!![]:![];var _0x53bb86=[];var _0x5b80f5;var _0x3129c8;Promise[_0xc061('0x12')]()[_0xc061('0x13')](function(){if(_0x2a7773[_0xc061('0xe')]['channel']){if(!utils[_0xc061('0x14')](_0x2a7773[_0xc061('0xe')]['channel'])){throw new APIBadRequestError(util[_0xc061('0x15')](_0xc061('0x16'),_0x2a7773[_0xc061('0xe')][_0xc061('0x17')]));}_0x1388db=_0x2a7773[_0xc061('0xe')][_0xc061('0x17')][_0xc061('0x18')]();}if(!_0x2a7773[_0xc061('0xe')][_0xc061('0x19')]||!_0x2a7773[_0xc061('0xe')]['sort'][_0xc061('0x1a')](_0xc061('0x1b'))){_0x2a7773[_0xc061('0xe')][_0xc061('0x19')]=rta[_0xc061('0x1c')](_0x2a7773[_0xc061('0xe')][_0xc061('0x19')]);return;}var _0x2217c0=rta[_0xc061('0x1d')](_0x2a7773[_0xc061('0xe')][_0xc061('0x19')]);_0x2a7773['query'][_0xc061('0x19')]=_0x2217c0[_0xc061('0x1e')]['join'](',');_0x5b80f5=_0x2217c0[_0xc061('0x1f')];})['then'](function(){if(!_0x442f2d){return[];}return rta[_0xc061('0x20')](_0x442f2d,_0x1388db);})[_0xc061('0x13')](function(_0x567e70){_0x53bb86=_0x567e70;return rta[_0xc061('0x21')]();})['then'](function(_0x38360e){_0x3741c9=_0x38360e[_0xc061('0x22')];if((!_0x2b75b1||_0x4e172a)&&!_0x5b80f5){return _0x53bb86;}if(_0x5b80f5&&!_0x2b75b1){return rta[_0xc061('0x23')](_0x3741c9,_0x53bb86,_0x5b80f5);}else{return rta[_0xc061('0x24')](_0x3741c9,_0x53bb86,_0x2b75b1);}})[_0xc061('0x13')](function(_0x45ae9a){_0x53bb86=_0x45ae9a;var _0x5f0051=![];if(_0x53bb86[_0xc061('0x25')]===0x0){if(_0x442f2d||_0x2b75b1){_0x5f0051=!![];}if(_0x4e172a){_0x5f0051=![];}}if(_0x5f0051){return _0x3c67c5;}var _0x1510e2=_['map'](db[_0xc061('0x26')][_0xc061('0x27')],function(_0x2401a2){return{'name':_0x2401a2[_0xc061('0x28')],'type':_0x2401a2['type'][_0xc061('0x29')]};});_0x2a7773[_0xc061('0xe')]['role']=_0xc061('0x2a');_0x2a7773[_0xc061('0xe')]['online']=!![];_0x13c9a1=qs[_0xc061('0x2b')](_0x1510e2,_0x2a7773);_0x13c9a1['raw']=!![];var _0x207cc6=[];if(_0x53bb86[_0xc061('0x25')]>0x0){_0x207cc6[_0xc061('0x2c')]({'id':{'$in':_0x53bb86}});if(_0x5b80f5&&!_0x2b75b1){_0x3129c8=[db[_0xc061('0x2d')][_0xc061('0x2e')](_0xc061('0x2f')+_0x53bb86+')')];_0x13c9a1['order']=_0x3129c8;}}if(_0x4e172a){_0x6e1910[_0xc061('0x30')](function(_0x3a143a){var _0x10899f=!![];if(_0x2b75b1===_0xc061('0x11')&&_0x1388db!==_0x3a143a){_0x10899f=![];}_0x207cc6['push']({[_0x3a143a+_0xc061('0x31')]:_0x10899f});});if(_0x24bf9d){_0x207cc6[_0xc061('0x2c')]({'pauseType':_0x24bf9d});}}else if(_0x2b75b1){_0x6e1910[_0xc061('0x30')](function(_0x894beb){_0x207cc6[_0xc061('0x2c')]({[_0x894beb+_0xc061('0x31')]:![]});});}_0x13c9a1[_0xc061('0x32')]=_[_0xc061('0x33')](_0x13c9a1[_0xc061('0x32')],{'$and':_0x207cc6});if(_0x2a7773['user']['role']==='user'){var _0x3f15cc={'params':{'id':_0x2a7773[_0xc061('0x34')][_0xc061('0x35')]},'query':{'section':_0xc061('0x36'),'role':_0xc061('0x2a'),'online':!![],'raw':!![],'ids':_0x53bb86,'customSorting':_0x3129c8}};if(_0x4e172a){_0x3f15cc[_0xc061('0xe')][_0xc061('0x37')]=_0x207cc6;}_0x3f15cc['query']=Object['assign'](_0x3f15cc[_0xc061('0xe')],_0x2a7773['query']);delete _0x3f15cc[_0xc061('0xe')]['id'];return db[_0xc061('0x38')][_0xc061('0x39')](_0x3f15cc);}return db[_0xc061('0x26')][_0xc061('0x3a')](_0x13c9a1);})[_0xc061('0x13')](function(_0x2d1ed0){_0x3c67c5[_0xc061('0x8')]=_0x2d1ed0[_0xc061('0x8')];_0x467349=_0x2d1ed0[_0xc061('0x22')];return _0x467349['map'](function(_0xc65749){var _0x20695e=_[_0xc061('0x3b')](_0x3741c9,['id',_0xc65749['id']]);if(_0x20695e){var _0x5a2b19=rta[_0xc061('0x3c')](_0x20695e);_['merge'](_0xc65749,_0x5a2b19);}_0xc65749['globalStatus']=rta[_0xc061('0x3d')](_0xc65749);if(_0xc65749[_0xc061('0x1b')][_0xc061('0x1a')](_0xc061('0x10'))){_0x6e1910[_0xc061('0x30')](function(_0x31e42e){if(_0xc65749[_0x31e42e+'Pause']){_0xc65749[_0x31e42e+_0xc061('0x3e')]=_0xc061('0x10');}});}return _0xc65749;});})[_0xc061('0x13')](function(_0x335990){if(!_0x5b80f5||_0x3129c8){return _0x335990;}return rta[_0xc061('0x3f')](_0x335990,_0x5b80f5);})[_0xc061('0x13')](function(_0xf6e959){var _0x442bdf=null;if(_0x2a7773[_0xc061('0xe')]['fields']){var _0x3b0693=_0x2a7773['query'][_0xc061('0x1e')][_0xc061('0x40')](',');_0x442bdf=_0xf6e959[_0xc061('0x41')](function(_0x1c2af6){return _[_0xc061('0x42')](_0x1c2af6,_0x3b0693);});}_0x3c67c5[_0xc061('0x22')]=_0x442bdf||_0xf6e959;return _0x3c67c5;})[_0xc061('0x13')](respondWithFilteredResult(_0x589563,_0x13c9a1))['catch'](APIHandleError(_0x589563));};exports[_0xc061('0x43')]=function(_0xa22063,_0x538615){var _0x2a39cb={'count':0x0,'rows':[]};var _0x35588c={};var _0x2da0d2;var _0x9fb14e;var _0x4f28cb;Promise[_0xc061('0x12')]()[_0xc061('0x13')](function(){if(_0xa22063[_0xc061('0xe')]['channel']){if(!utils['isValidChannel'](_0xa22063['query'][_0xc061('0x17')])){throw new APIBadRequestError(util['format'](_0xc061('0x16'),_0xa22063[_0xc061('0xe')]['channel']));}_0x2da0d2=_0xa22063[_0xc061('0xe')][_0xc061('0x17')][_0xc061('0x18')]();}var _0x10234=_[_0xc061('0x44')](_0x2da0d2)+_0xc061('0x45');var _0x57f4f7=_[_0xc061('0x41')](db[_0x10234][_0xc061('0x27')],function(_0x4b1d21){return{'name':_0x4b1d21[_0xc061('0x28')],'type':_0x4b1d21[_0xc061('0x46')][_0xc061('0x29')]};});if(!_0xa22063[_0xc061('0xe')][_0xc061('0x1e')]){var _0x4d95d4=['id',_0xc061('0x47')];if(_0x2da0d2===_0xc061('0x48')){_0x4d95d4[_0xc061('0x2c')]('type');if(_0xa22063[_0xc061('0xe')][_0xc061('0x46')]===_0xc061('0x49')){_0x4d95d4[_0xc061('0x2c')]([_0xc061('0x4a'),_0xc061('0x4b')]);}}_0xa22063['query'][_0xc061('0x1e')]=_0x4d95d4['join'](',');}_0x35588c=qs['getOptions'](_0x57f4f7,_0xa22063);if(_0xa22063[_0xc061('0x34')][_0xc061('0x4c')]===_0xc061('0x34')){var _0x4e2943={'params':{'id':_0xa22063[_0xc061('0x34')][_0xc061('0x35')]},'query':{'section':_0x2da0d2==='voice'&&_0xa22063[_0xc061('0xe')][_0xc061('0x46')]===_0xc061('0x49')?_0xc061('0x4d'):_[_0xc061('0x44')](_0x2da0d2)+_0xc061('0x4e'),'type':_0xa22063[_0xc061('0xe')][_0xc061('0x46')],'nolimit':!![],'sort':_0xc061('0x47'),'filter':_0xa22063['query'][_0xc061('0x4f')]}};return db['UserProfile'][_0xc061('0x39')](_0x4e2943);}return db[_0x10234]['findAndCountAll'](_0x35588c);})['then'](function(_0xd1077e){_0x2a39cb['count']=_0xd1077e[_0xc061('0x8')];_0x9fb14e=_0xd1077e[_0xc061('0x22')];return rtq[_0xc061('0x50')](_0xa22063,_0x2da0d2);})['then'](function(_0x5f717d){_0x4f28cb=_0x5f717d[_0xc061('0x22')];return rtq['initializeQueues'](_0x9fb14e,_0x4f28cb,_0x2da0d2,_0xa22063[_0xc061('0xe')][_0xc061('0x46')]);})['then'](function(_0x5ff148){_0x2a39cb[_0xc061('0x22')]=_0x5ff148;return _0x2a39cb;})[_0xc061('0x13')](respondWithFilteredResult(_0x538615,_0x35588c))[_0xc061('0x51')](APIHandleError(_0x538615));};
\ No newline at end of file
+var _0xae24=['map','find','getAgentStatus','Status','split','pick','catch','toLowerCase','startCase','voice','outbound','dialActive','QueueCampaigns','Queues','filter','getRealtimeQueues','lodash','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','APIBadRequestError','handleError','offset','undefined','count','limit','set','Content-Range','json','getChannels','query','pauseTypeFilter','pause','*pause','resolve','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','sort','includes','globalStatus','fields','join','getAgentIdsByQueues','then','getRealtimeAgents','getAgentIdsByStatus','length','User','rawAttributes','fieldName','type','key','role','agent','online','getOptions','raw','push','sequelize','FIELD(id,','forEach','Pause','where','merge','user','Agents','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','rows'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xae24,0x182));var _0x4ae2=function(_0x3ffc12,_0x2d6076){_0x3ffc12=_0x3ffc12-0x0;var _0x495832=_0xae24[_0x3ffc12];return _0x495832;};'use strict';var _=require(_0x4ae2('0x0'));var util=require('util');var rta=require(_0x4ae2('0x1'));var rtq=require('../../components/realtime/queues');var qs=require(_0x4ae2('0x2'));var utils=require(_0x4ae2('0x3'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require('../../errors/api')[_0x4ae2('0x4')];var APIHandleError=require('../../errors/api')[_0x4ae2('0x5')];function respondWithFilteredResult(_0xf26f45,_0x20c85c){return function(_0x3e6055){if(_0x3e6055){var _0x428054=typeof _0x20c85c[_0x4ae2('0x6')]==='undefined'&&typeof _0x20c85c['limit']===_0x4ae2('0x7');var _0x4d3d8a=_0x3e6055['count'];var _0xb5587a=_0x428054?0x0:_0x20c85c[_0x4ae2('0x6')];var _0x5c32b7=_0x428054?_0x3e6055[_0x4ae2('0x8')]:_0x20c85c[_0x4ae2('0x6')]+_0x20c85c[_0x4ae2('0x9')];var _0xb70265;if(_0x5c32b7>=_0x4d3d8a){_0x5c32b7=_0x4d3d8a;_0xb70265=0xc8;}else{_0xb70265=0xce;}_0xf26f45['status'](_0xb70265);return _0xf26f45[_0x4ae2('0xa')](_0x4ae2('0xb'),_0xb5587a+'-'+_0x5c32b7+'/'+_0x4d3d8a)[_0x4ae2('0xc')](_0x3e6055);}return null;};}exports['getAgents']=function(_0x25d2b4,_0x22ac1e){var _0x30d6c4={'count':0x0,'rows':[]};var _0x3c70bd={};var _0x24de98;var _0x40954f=utils[_0x4ae2('0xd')]();var _0x3cabc9;var _0xd527a0;var _0x5e2bfd=_0x25d2b4['query']['globalQueueFilter'];var _0x2f3936=_0x25d2b4[_0x4ae2('0xe')]['globalStatusFilter'];var _0x463765=_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0xf')];var _0x1d5a78=_0x2f3936===_0x4ae2('0x10')||_0x2f3936===_0x4ae2('0x11')?!![]:![];var _0x3d4259=[];var _0xdc8798;var _0x41b672;Promise[_0x4ae2('0x12')]()['then'](function(){if(_0x25d2b4['query'][_0x4ae2('0x13')]){if(!utils[_0x4ae2('0x14')](_0x25d2b4['query'][_0x4ae2('0x13')])){throw new APIBadRequestError(util[_0x4ae2('0x15')](_0x4ae2('0x16'),_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x13')]));}_0x24de98=_0x25d2b4['query'][_0x4ae2('0x13')]['toLowerCase']();}if(!_0x25d2b4['query'][_0x4ae2('0x17')]||!_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x17')][_0x4ae2('0x18')](_0x4ae2('0x19'))){_0x25d2b4['query'][_0x4ae2('0x17')]=rta['validateSortParameter'](_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x17')]);return;}var _0x130239=rta['getUpdatedSortOptions'](_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x17')]);_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x17')]=_0x130239[_0x4ae2('0x1a')][_0x4ae2('0x1b')](',');_0xdc8798=_0x130239['order'];})['then'](function(){if(!_0x5e2bfd){return[];}return rta[_0x4ae2('0x1c')](_0x5e2bfd,_0x24de98);})[_0x4ae2('0x1d')](function(_0x3fa514){_0x3d4259=_0x3fa514;return rta[_0x4ae2('0x1e')]();})[_0x4ae2('0x1d')](function(_0x20ef44){_0xd527a0=_0x20ef44['rows'];if((!_0x2f3936||_0x1d5a78)&&!_0xdc8798){return _0x3d4259;}if(_0xdc8798&&!_0x2f3936){return rta['getSortedAgentsIdsByStatus'](_0xd527a0,_0x3d4259,_0xdc8798);}else{return rta[_0x4ae2('0x1f')](_0xd527a0,_0x3d4259,_0x2f3936);}})['then'](function(_0x554cff){_0x3d4259=_0x554cff;var _0x5e9f03=![];if(_0x3d4259[_0x4ae2('0x20')]===0x0){if(_0x5e2bfd||_0x2f3936){_0x5e9f03=!![];}if(_0x1d5a78){_0x5e9f03=![];}}if(_0x5e9f03){return _0x30d6c4;}var _0x28bedd=_['map'](db[_0x4ae2('0x21')][_0x4ae2('0x22')],function(_0x3d56ea){return{'name':_0x3d56ea[_0x4ae2('0x23')],'type':_0x3d56ea[_0x4ae2('0x24')][_0x4ae2('0x25')]};});_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x26')]=_0x4ae2('0x27');_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x28')]=!![];_0x3c70bd=qs[_0x4ae2('0x29')](_0x28bedd,_0x25d2b4);_0x3c70bd[_0x4ae2('0x2a')]=!![];var _0x27c6d4=[];if(_0x3d4259[_0x4ae2('0x20')]>0x0){_0x27c6d4[_0x4ae2('0x2b')]({'id':{'$in':_0x3d4259}});if(_0xdc8798&&!_0x2f3936){_0x41b672=[db[_0x4ae2('0x2c')]['literal'](_0x4ae2('0x2d')+_0x3d4259+')')];_0x3c70bd['order']=_0x41b672;}}if(_0x1d5a78){_0x40954f[_0x4ae2('0x2e')](function(_0x233e02){var _0x5f5d73=!![];if(_0x2f3936===_0x4ae2('0x11')&&_0x24de98!==_0x233e02){_0x5f5d73=![];}_0x27c6d4[_0x4ae2('0x2b')]({[_0x233e02+_0x4ae2('0x2f')]:_0x5f5d73});});if(_0x463765){_0x27c6d4[_0x4ae2('0x2b')]({'pauseType':_0x463765});}}else if(_0x2f3936){_0x40954f['forEach'](function(_0x349c84){_0x27c6d4[_0x4ae2('0x2b')]({[_0x349c84+_0x4ae2('0x2f')]:![]});});}_0x3c70bd[_0x4ae2('0x30')]=_[_0x4ae2('0x31')](_0x3c70bd[_0x4ae2('0x30')],{'$and':_0x27c6d4});if(_0x25d2b4[_0x4ae2('0x32')][_0x4ae2('0x26')]===_0x4ae2('0x32')){var _0x5c5c7d={'params':{'id':_0x25d2b4[_0x4ae2('0x32')]['userProfileId']},'query':{'section':_0x4ae2('0x33'),'role':_0x4ae2('0x27'),'online':!![],'raw':!![],'ids':_0x3d4259,'customSorting':_0x41b672}};if(_0x1d5a78){_0x5c5c7d[_0x4ae2('0xe')][_0x4ae2('0x34')]=_0x27c6d4;}_0x5c5c7d[_0x4ae2('0xe')]=Object[_0x4ae2('0x35')](_0x5c5c7d['query'],_0x25d2b4[_0x4ae2('0xe')]);delete _0x5c5c7d[_0x4ae2('0xe')]['id'];return db[_0x4ae2('0x36')][_0x4ae2('0x37')](_0x5c5c7d);}return db['User'][_0x4ae2('0x38')](_0x3c70bd);})[_0x4ae2('0x1d')](function(_0x2f0d83){_0x30d6c4[_0x4ae2('0x8')]=_0x2f0d83[_0x4ae2('0x8')];_0x3cabc9=_0x2f0d83[_0x4ae2('0x39')];return _0x3cabc9[_0x4ae2('0x3a')](function(_0x1b04ee){var _0x1d5888=_[_0x4ae2('0x3b')](_0xd527a0,['id',_0x1b04ee['id']]);if(_0x1d5888){var _0x2aaef1=rta['filterAgentAttributes'](_0x1d5888);_[_0x4ae2('0x31')](_0x1b04ee,_0x2aaef1);}_0x1b04ee[_0x4ae2('0x19')]=rta[_0x4ae2('0x3c')](_0x1b04ee);if(_0x1b04ee[_0x4ae2('0x19')]['includes']('pause')){_0x40954f[_0x4ae2('0x2e')](function(_0x45527a){if(_0x1b04ee[_0x45527a+_0x4ae2('0x2f')]){_0x1b04ee[_0x45527a+_0x4ae2('0x3d')]='pause';}});}return _0x1b04ee;});})[_0x4ae2('0x1d')](function(_0x178898){if(!_0xdc8798||_0x41b672){return _0x178898;}return rta['sortAgentsByStatus'](_0x178898,_0xdc8798);})[_0x4ae2('0x1d')](function(_0x2a85eb){var _0x11a5d9=null;if(_0x25d2b4['query'][_0x4ae2('0x1a')]){var _0x29e12c=_0x25d2b4[_0x4ae2('0xe')][_0x4ae2('0x1a')][_0x4ae2('0x3e')](',');_0x11a5d9=_0x2a85eb[_0x4ae2('0x3a')](function(_0x33f4f2){return _[_0x4ae2('0x3f')](_0x33f4f2,_0x29e12c);});}_0x30d6c4['rows']=_0x11a5d9||_0x2a85eb;return _0x30d6c4;})[_0x4ae2('0x1d')](respondWithFilteredResult(_0x22ac1e,_0x3c70bd))[_0x4ae2('0x40')](APIHandleError(_0x22ac1e));};exports['getQueues']=function(_0x3d5015,_0x25e0ca){var _0x578b0e={'count':0x0,'rows':[]};var _0x1a1d93={};var _0x30ac85;var _0x4e30ab;var _0x21baf4;Promise[_0x4ae2('0x12')]()[_0x4ae2('0x1d')](function(){if(_0x3d5015['query']['channel']){if(!utils[_0x4ae2('0x14')](_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x13')])){throw new APIBadRequestError(util[_0x4ae2('0x15')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x13')]));}_0x30ac85=_0x3d5015[_0x4ae2('0xe')]['channel'][_0x4ae2('0x41')]();}var _0x2906b2=_[_0x4ae2('0x42')](_0x30ac85)+'Queue';var _0x16bf0b=_[_0x4ae2('0x3a')](db[_0x2906b2][_0x4ae2('0x22')],function(_0x39d365){return{'name':_0x39d365[_0x4ae2('0x23')],'type':_0x39d365[_0x4ae2('0x24')][_0x4ae2('0x25')]};});if(!_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x1a')]){var _0xf6d12a=['id','name'];if(_0x30ac85===_0x4ae2('0x43')){_0xf6d12a[_0x4ae2('0x2b')](_0x4ae2('0x24'));if(_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x24')]===_0x4ae2('0x44')){_0xf6d12a[_0x4ae2('0x2b')]([_0x4ae2('0x45'),'dialMethod']);}}_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x1a')]=_0xf6d12a['join'](',');}_0x1a1d93=qs[_0x4ae2('0x29')](_0x16bf0b,_0x3d5015);if(_0x3d5015[_0x4ae2('0x32')]['role']===_0x4ae2('0x32')){var _0x4d6560={'params':{'id':_0x3d5015[_0x4ae2('0x32')]['userProfileId']},'query':{'section':_0x30ac85===_0x4ae2('0x43')&&_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x24')]===_0x4ae2('0x44')?_0x4ae2('0x46'):_[_0x4ae2('0x42')](_0x30ac85)+_0x4ae2('0x47'),'type':_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x24')],'nolimit':!![],'sort':'name','filter':_0x3d5015[_0x4ae2('0xe')][_0x4ae2('0x48')]}};_0x4d6560[_0x4ae2('0xe')]=Object[_0x4ae2('0x35')](_0x4d6560['query'],_0x3d5015[_0x4ae2('0xe')]);delete _0x4d6560[_0x4ae2('0xe')]['id'];return db[_0x4ae2('0x36')]['getResources'](_0x4d6560);}return db[_0x2906b2]['findAndCountAll'](_0x1a1d93);})[_0x4ae2('0x1d')](function(_0x1be528){_0x578b0e[_0x4ae2('0x8')]=_0x1be528[_0x4ae2('0x8')];_0x4e30ab=_0x1be528[_0x4ae2('0x39')];return rtq[_0x4ae2('0x49')](_0x3d5015,_0x30ac85);})[_0x4ae2('0x1d')](function(_0x390c1f){_0x21baf4=_0x390c1f[_0x4ae2('0x39')];return rtq['initializeQueues'](_0x4e30ab,_0x21baf4,_0x30ac85,_0x3d5015[_0x4ae2('0xe')]['type']);})[_0x4ae2('0x1d')](function(_0x2e5899){_0x578b0e[_0x4ae2('0x39')]=_0x2e5899;return _0x578b0e;})[_0x4ae2('0x1d')](respondWithFilteredResult(_0x25e0ca,_0x1a1d93))[_0x4ae2('0x40')](APIHandleError(_0x25e0ca));};
\ No newline at end of file
index e476d25..4ca678c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x542d80,_0x150561){var _0x1f4492=function(_0x542215){while(--_0x542215){_0x542d80['push'](_0x542d80['shift']());}};_0x1f4492(++_0x150561);}(_0x9c44,0x178));var _0x49c4=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x9c44[_0x4fde08];return _0x12e725;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x18dfea,_0x43d571){var _0x5222e3=function(_0x3484ae){while(--_0x3484ae){_0x18dfea['push'](_0x18dfea['shift']());}};_0x5222e3(++_0x43d571);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 700e7f9..61c8e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0619=['exports','INTEGER','STRING','DATE','sequelize'];(function(_0xcd78c4,_0x16b275){var _0x212231=function(_0x53261a){while(--_0x53261a){_0xcd78c4['push'](_0xcd78c4['shift']());}};_0x212231(++_0x16b275);}(_0x0619,0x90));var _0x9061=function(_0x224139,_0x3383d7){_0x224139=_0x224139-0x0;var _0x302cc2=_0x0619[_0x224139];return _0x302cc2;};'use strict';var Sequelize=require(_0x9061('0x0'));module[_0x9061('0x1')]={'state':{'type':Sequelize[_0x9061('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x9061('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x9061('0x3')]},'starttime':{'type':Sequelize[_0x9061('0x4')]},'responsetime':{'type':Sequelize[_0x9061('0x4')]},'ringtime':{'type':Sequelize[_0x9061('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x9061('0x3')]},'campaigntype':{'type':Sequelize[_0x9061('0x3')]},'membername':{'type':Sequelize[_0x9061('0x3')]}};
\ No newline at end of file
+var _0x6dc0=['sequelize','INTEGER','STRING','DATE'];(function(_0x1bdf18,_0x2a3ff0){var _0x18a792=function(_0x307da9){while(--_0x307da9){_0x1bdf18['push'](_0x1bdf18['shift']());}};_0x18a792(++_0x2a3ff0);}(_0x6dc0,0x18c));var _0x06dc=function(_0x165e1e,_0x37665c){_0x165e1e=_0x165e1e-0x0;var _0x2b7ff6=_0x6dc0[_0x165e1e];return _0x2b7ff6;};'use strict';var Sequelize=require(_0x06dc('0x0'));module['exports']={'state':{'type':Sequelize[_0x06dc('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x06dc('0x2')]},'scheduledat':{'type':Sequelize[_0x06dc('0x3')]},'uniqueid':{'type':Sequelize[_0x06dc('0x2')]},'starttime':{'type':Sequelize[_0x06dc('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x06dc('0x2')]},'campaigntype':{'type':Sequelize[_0x06dc('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3789641..b50ad07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa379=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview'];(function(_0x5903c0,_0x84bfd4){var _0x402756=function(_0x85f0cd){while(--_0x85f0cd){_0x5903c0['push'](_0x5903c0['shift']());}};_0x402756(++_0x84bfd4);}(_0xa379,0x179));var _0x9a37=function(_0x13e434,_0x16abd6){_0x13e434=_0x13e434-0x0;var _0x55b1f1=_0xa379[_0x13e434];return _0x55b1f1;};'use strict';var _=require('lodash');var util=require(_0x9a37('0x0'));var logger=require(_0x9a37('0x1'))(_0x9a37('0x2'));var moment=require(_0x9a37('0x3'));var BPromise=require('bluebird');var rp=require(_0x9a37('0x4'));var fs=require('fs');var path=require(_0x9a37('0x5'));var rimraf=require(_0x9a37('0x6'));var config=require(_0x9a37('0x7'));var attributes=require(_0x9a37('0x8'));module[_0x9a37('0x9')]=function(_0x55deb5,_0x1d97ad){return _0x55deb5[_0x9a37('0xa')](_0x9a37('0xb'),attributes,{'tableName':_0x9a37('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbecd=['moment','bluebird','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','lodash','../../config/logger','api'];(function(_0x1ef303,_0x4e11d3){var _0x1e4268=function(_0x56daa8){while(--_0x56daa8){_0x1ef303['push'](_0x1ef303['shift']());}};_0x1e4268(++_0x4e11d3);}(_0xbecd,0x1aa));var _0xdbec=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbecd[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xdbec('0x0'));var util=require('util');var logger=require(_0xdbec('0x1'))(_0xdbec('0x2'));var moment=require(_0xdbec('0x3'));var BPromise=require(_0xdbec('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdbec('0x5'));var rimraf=require(_0xdbec('0x6'));var config=require(_0xdbec('0x7'));var attributes=require(_0xdbec('0x8'));module[_0xdbec('0x9')]=function(_0x3da691,_0xbe5c85){return _0x3da691[_0xdbec('0xa')]('ReportAgentPreview',attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55465e9..aba011a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e29=['ReportAgentPreview','body','options','raw','CreateReportAgentPreview','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result'];(function(_0x2d0657,_0x3e5499){var _0x3580a2=function(_0xcec776){while(--_0xcec776){_0x2d0657['push'](_0x2d0657['shift']());}};_0x3580a2(++_0x3e5499);}(_0x8e29,0xf9));var _0x98e2=function(_0x202a31,_0x2ac980){_0x202a31=_0x202a31-0x0;var _0x49a80c=_0x8e29[_0x202a31];return _0x49a80c;};'use strict';var _=require(_0x98e2('0x0'));var util=require(_0x98e2('0x1'));var moment=require(_0x98e2('0x2'));var BPromise=require('bluebird');var rs=require(_0x98e2('0x3'));var fs=require('fs');var Redis=require(_0x98e2('0x4'));var db=require(_0x98e2('0x5'))['db'];var utils=require(_0x98e2('0x6'));var logger=require(_0x98e2('0x7'))('rpc');var config=require(_0x98e2('0x8'));var jayson=require(_0x98e2('0x9'));var client=jayson[_0x98e2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5cd313,_0x43bbc4,_0x431e28){return new BPromise(function(_0x3633b5,_0x4528c1){return client[_0x98e2('0xb')](_0x5cd313,_0x431e28)[_0x98e2('0xc')](function(_0x558f9c){logger[_0x98e2('0xd')](_0x98e2('0xe'),_0x43bbc4,'request\x20sent');logger[_0x98e2('0xf')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x43bbc4,_0x98e2('0x10'),JSON['stringify'](_0x558f9c));if(_0x558f9c[_0x98e2('0x11')]){if(_0x558f9c[_0x98e2('0x11')][_0x98e2('0x12')]===0x1f4){logger['error'](_0x98e2('0xe'),_0x43bbc4,_0x558f9c[_0x98e2('0x11')][_0x98e2('0x13')]);return _0x4528c1(_0x558f9c[_0x98e2('0x11')][_0x98e2('0x13')]);}logger[_0x98e2('0x11')](_0x98e2('0xe'),_0x43bbc4,_0x558f9c[_0x98e2('0x11')][_0x98e2('0x13')]);return _0x3633b5(_0x558f9c[_0x98e2('0x11')][_0x98e2('0x13')]);}else{logger[_0x98e2('0xd')](_0x98e2('0xe'),_0x43bbc4,_0x98e2('0x10'));_0x3633b5(_0x558f9c[_0x98e2('0x14')][_0x98e2('0x13')]);}})['catch'](function(_0x251b01){logger[_0x98e2('0x11')](_0x98e2('0xe'),_0x43bbc4,_0x251b01);_0x4528c1(_0x251b01);});});}exports['CreateReportAgentPreview']=function(_0x56801e){var _0x281944=this;return new Promise(function(_0x429d56,_0x17e201){return db[_0x98e2('0x15')]['create'](_0x56801e[_0x98e2('0x16')],{'raw':_0x56801e[_0x98e2('0x17')]?_0x56801e['options'][_0x98e2('0x18')]===undefined?!![]:![]:!![]})[_0x98e2('0xc')](function(_0x36fd79){logger[_0x98e2('0xd')](_0x98e2('0x19'),_0x56801e);logger[_0x98e2('0xf')](_0x98e2('0x19'),_0x56801e,JSON['stringify'](_0x36fd79));_0x429d56(_0x36fd79);})[_0x98e2('0x1a')](function(_0x565de8){logger[_0x98e2('0x11')](_0x98e2('0x19'),_0x565de8[_0x98e2('0x13')],_0x56801e);_0x17e201(_0x281944[_0x98e2('0x11')](0x1f4,_0x565de8[_0x98e2('0x13')]));});});};
\ No newline at end of file
+var _0x321f=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','message','catch','ReportAgentPreview','create','body','raw','CreateReportAgentPreview','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x60a593,_0x4d6e6c){var _0x5b761b=function(_0xd105d8){while(--_0xd105d8){_0x60a593['push'](_0x60a593['shift']());}};_0x5b761b(++_0x4d6e6c);}(_0x321f,0x91));var _0xf321=function(_0xe336e0,_0x18f796){_0xe336e0=_0xe336e0-0x0;var _0x19d2c6=_0x321f[_0xe336e0];return _0x19d2c6;};'use strict';var _=require(_0xf321('0x0'));var util=require('util');var moment=require(_0xf321('0x1'));var BPromise=require('bluebird');var rs=require(_0xf321('0x2'));var fs=require('fs');var Redis=require(_0xf321('0x3'));var db=require(_0xf321('0x4'))['db'];var utils=require(_0xf321('0x5'));var logger=require(_0xf321('0x6'))(_0xf321('0x7'));var config=require(_0xf321('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf321('0x9')][_0xf321('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c5664,_0x4e6a4c,_0xb1f1d1){return new BPromise(function(_0x3dac5b,_0x5beaa4){return client[_0xf321('0xb')](_0x3c5664,_0xb1f1d1)[_0xf321('0xc')](function(_0x4839a4){logger[_0xf321('0xd')](_0xf321('0xe'),_0x4e6a4c,_0xf321('0xf'));logger['debug'](_0xf321('0x10'),_0x4e6a4c,_0xf321('0xf'),JSON['stringify'](_0x4839a4));if(_0x4839a4[_0xf321('0x11')]){if(_0x4839a4[_0xf321('0x11')]['code']===0x1f4){logger[_0xf321('0x11')](_0xf321('0xe'),_0x4e6a4c,_0x4839a4[_0xf321('0x11')][_0xf321('0x12')]);return _0x5beaa4(_0x4839a4[_0xf321('0x11')][_0xf321('0x12')]);}logger[_0xf321('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x4e6a4c,_0x4839a4[_0xf321('0x11')]['message']);return _0x3dac5b(_0x4839a4[_0xf321('0x11')][_0xf321('0x12')]);}else{logger['info'](_0xf321('0xe'),_0x4e6a4c,_0xf321('0xf'));_0x3dac5b(_0x4839a4['result'][_0xf321('0x12')]);}})[_0xf321('0x13')](function(_0x53ae7a){logger['error'](_0xf321('0xe'),_0x4e6a4c,_0x53ae7a);_0x5beaa4(_0x53ae7a);});});}exports['CreateReportAgentPreview']=function(_0x5d38ad){var _0x459348=this;return new Promise(function(_0xe15a4b,_0x43b485){return db[_0xf321('0x14')][_0xf321('0x15')](_0x5d38ad[_0xf321('0x16')],{'raw':_0x5d38ad['options']?_0x5d38ad['options'][_0xf321('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x1db7a1){logger[_0xf321('0xd')](_0xf321('0x18'),_0x5d38ad);logger['debug']('CreateReportAgentPreview',_0x5d38ad,JSON['stringify'](_0x1db7a1));_0xe15a4b(_0x1db7a1);})[_0xf321('0x13')](function(_0x4f91e1){logger[_0xf321('0x11')]('CreateReportAgentPreview',_0x4f91e1['message'],_0x5d38ad);_0x43b485(_0x459348[_0xf321('0x11')](0x1f4,_0x4f91e1[_0xf321('0x12')]));});});};
\ No newline at end of file
index 8762b78..21baafc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0701=['trunks','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','queueNotify','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','voiceChannelMixMonitor','isAuthenticated','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','chatQueues','mailQueues','/mail/accounts','/sms/queues','smsQueues','whatsappQueues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','put','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks'];(function(_0x5ee958,_0x5536a9){var _0x1d2346=function(_0x56a220){while(--_0x56a220){_0x5ee958['push'](_0x5ee958['shift']());}};_0x1d2346(++_0x5536a9);}(_0x0701,0x166));var _0x1070=function(_0x87235e,_0x517961){_0x87235e=_0x87235e-0x0;var _0x12f6d4=_0x0701[_0x87235e];return _0x12f6d4;};'use strict';var multer=require(_0x1070('0x0'));var util=require(_0x1070('0x1'));var path=require('path');var express=require(_0x1070('0x2'));var router=express[_0x1070('0x3')]();var auth=require(_0x1070('0x4'));var controller=require(_0x1070('0x5'));router[_0x1070('0x6')](_0x1070('0x7'),auth['isAuthenticated'](),controller['voiceChannels']);router[_0x1070('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth['isAuthenticated'](),controller[_0x1070('0x8')]);router[_0x1070('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0x1070('0x9')](),controller[_0x1070('0xa')]);router[_0x1070('0x6')](_0x1070('0xb'),auth['isAuthenticated'](),controller['voiceQueues']);router[_0x1070('0x6')](_0x1070('0xc'),auth['isAuthenticated'](),controller[_0x1070('0xd')]);router[_0x1070('0x6')]('/mail/queues',auth[_0x1070('0x9')](),controller[_0x1070('0xe')]);router[_0x1070('0x6')](_0x1070('0xf'),auth[_0x1070('0x9')](),controller['mailAccounts']);router[_0x1070('0x6')]('/openchannel/queues',auth['isAuthenticated'](),controller['openchannelQueues']);router[_0x1070('0x6')](_0x1070('0x10'),auth[_0x1070('0x9')](),controller[_0x1070('0x11')]);router['get']('/whatsapp/queues',auth[_0x1070('0x9')](),controller[_0x1070('0x12')]);router[_0x1070('0x6')]('/fax/queues',auth[_0x1070('0x9')](),controller[_0x1070('0x13')]);router['get'](_0x1070('0x14'),auth[_0x1070('0x9')](),controller[_0x1070('0x15')]);router[_0x1070('0x6')](_0x1070('0x16'),auth['isAuthenticated'](),controller[_0x1070('0x17')]);router['get']('/voice/queues/channels/:uniqueid',auth['isAuthenticated'](),controller[_0x1070('0x18')]);router[_0x1070('0x6')]('/voice/queues/channels/:uniqueid/hangup',auth[_0x1070('0x9')](),controller[_0x1070('0x19')]);router['get'](_0x1070('0x1a'),auth[_0x1070('0x9')](),controller[_0x1070('0x1b')]);router[_0x1070('0x6')](_0x1070('0x1c'),auth[_0x1070('0x9')](),controller[_0x1070('0x1d')]);router['put']('/voice/queues/:id',auth[_0x1070('0x9')](),controller['updateVoiceQueue']);router[_0x1070('0x6')](_0x1070('0x1e'),auth[_0x1070('0x9')](),controller[_0x1070('0x1f')]);router[_0x1070('0x6')](_0x1070('0x20'),auth['isAuthenticated'](),controller[_0x1070('0x21')]);router[_0x1070('0x6')](_0x1070('0x22'),auth[_0x1070('0x9')](),controller[_0x1070('0x23')]);router[_0x1070('0x24')](_0x1070('0x25'),auth[_0x1070('0x9')](),controller[_0x1070('0x26')]);router['get'](_0x1070('0x27'),auth[_0x1070('0x9')](),controller[_0x1070('0x28')]);router[_0x1070('0x6')](_0x1070('0x29'),auth[_0x1070('0x9')](),controller[_0x1070('0x2a')]);router['get']('/campaigns',auth[_0x1070('0x9')](),controller['campaigns']);router['get'](_0x1070('0x2b'),auth['isAuthenticated'](),controller[_0x1070('0x2c')]);router[_0x1070('0x6')](_0x1070('0x2d'),auth[_0x1070('0x9')](),controller[_0x1070('0x2e')]);router['get'](_0x1070('0x2f'),auth[_0x1070('0x9')](),controller[_0x1070('0x30')]);router[_0x1070('0x6')](_0x1070('0x31'),auth[_0x1070('0x9')](),controller[_0x1070('0x32')]);router['get']('/openchannel/queues/:id/waitinginteractions',auth[_0x1070('0x9')](),controller[_0x1070('0x33')]);router[_0x1070('0x6')](_0x1070('0x34'),auth[_0x1070('0x9')](),controller[_0x1070('0x35')]);router['get'](_0x1070('0x36'),auth[_0x1070('0x9')](),controller[_0x1070('0x37')]);router[_0x1070('0x6')](_0x1070('0x38'),auth['isAuthenticated'](),controller[_0x1070('0x39')]);router[_0x1070('0x3a')](_0x1070('0x3b'),auth['isAuthenticated'](),controller['queueNotify'](_0x1070('0x3c')));router['get'](_0x1070('0x3d'),auth[_0x1070('0x9')](),controller[_0x1070('0x3e')]);router[_0x1070('0x3a')](_0x1070('0x3f'),auth[_0x1070('0x9')](),controller[_0x1070('0x40')]('chat'));router[_0x1070('0x6')]('/chat/queues/:id',auth[_0x1070('0x9')](),controller[_0x1070('0x41')]);router[_0x1070('0x3a')](_0x1070('0x42'),auth[_0x1070('0x9')](),controller[_0x1070('0x40')]('fax'));router[_0x1070('0x6')](_0x1070('0x43'),auth[_0x1070('0x9')](),controller[_0x1070('0x44')]);router[_0x1070('0x3a')](_0x1070('0x45'),auth[_0x1070('0x9')](),controller['queueNotify']('openchannel'));router[_0x1070('0x6')]('/openchannel/queues/:id',auth[_0x1070('0x9')](),controller[_0x1070('0x46')]);router[_0x1070('0x3a')](_0x1070('0x47'),auth[_0x1070('0x9')](),controller['queueNotify'](_0x1070('0x48')));router[_0x1070('0x3a')](_0x1070('0x49'),auth['isAuthenticated'](),controller[_0x1070('0x40')]('whatsapp'));router['get'](_0x1070('0x4a'),auth[_0x1070('0x9')](),controller[_0x1070('0x4b')]);router['get']('/whatsapp/queues/:id',auth['isAuthenticated'](),controller[_0x1070('0x4c')]);router[_0x1070('0x3a')](_0x1070('0x4d'),auth[_0x1070('0x9')](),controller[_0x1070('0x4e')]);module[_0x1070('0x4f')]=router;
\ No newline at end of file
+var _0x7932=['/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceQueues','chatQueues','mailQueues','/mail/accounts','mailAccounts','openchannelQueues','whatsappQueues','/fax/queues','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','agents','telephones','/trunks','trunks','/campaigns','campaigns','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','/openchannel/queues/:id/notify','openchannel'];(function(_0x307fbd,_0x307aa6){var _0x36fbaf=function(_0x3dde0e){while(--_0x3dde0e){_0x307fbd['push'](_0x307fbd['shift']());}};_0x36fbaf(++_0x307aa6);}(_0x7932,0xf0));var _0x2793=function(_0x2a057d,_0xbee306){_0x2a057d=_0x2a057d-0x0;var _0x517126=_0x7932[_0x2a057d];return _0x517126;};'use strict';var multer=require(_0x2793('0x0'));var util=require(_0x2793('0x1'));var path=require('path');var express=require(_0x2793('0x2'));var router=express[_0x2793('0x3')]();var auth=require(_0x2793('0x4'));var controller=require(_0x2793('0x5'));router[_0x2793('0x6')](_0x2793('0x7'),auth[_0x2793('0x8')](),controller['voiceChannels']);router[_0x2793('0x6')](_0x2793('0x9'),auth[_0x2793('0x8')](),controller[_0x2793('0xa')]);router[_0x2793('0x6')](_0x2793('0xb'),auth['isAuthenticated'](),controller['voiceChannelStopMixMonitor']);router[_0x2793('0x6')]('/voice/queues',auth['isAuthenticated'](),controller[_0x2793('0xc')]);router[_0x2793('0x6')]('/chat/queues',auth[_0x2793('0x8')](),controller[_0x2793('0xd')]);router['get']('/mail/queues',auth[_0x2793('0x8')](),controller[_0x2793('0xe')]);router[_0x2793('0x6')](_0x2793('0xf'),auth['isAuthenticated'](),controller[_0x2793('0x10')]);router[_0x2793('0x6')]('/openchannel/queues',auth[_0x2793('0x8')](),controller[_0x2793('0x11')]);router[_0x2793('0x6')]('/sms/queues',auth[_0x2793('0x8')](),controller['smsQueues']);router[_0x2793('0x6')]('/whatsapp/queues',auth['isAuthenticated'](),controller[_0x2793('0x12')]);router[_0x2793('0x6')](_0x2793('0x13'),auth[_0x2793('0x8')](),controller['faxQueues']);router[_0x2793('0x6')]('/voice/queues/preview/:id',auth[_0x2793('0x8')](),controller[_0x2793('0x14')]);router[_0x2793('0x6')](_0x2793('0x15'),auth[_0x2793('0x8')](),controller['voiceQueuesChannels']);router[_0x2793('0x6')](_0x2793('0x16'),auth[_0x2793('0x8')](),controller['voiceQueuesChannel']);router[_0x2793('0x6')]('/voice/queues/channels/:uniqueid/hangup',auth[_0x2793('0x8')](),controller[_0x2793('0x17')]);router['get']('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x2793('0x8')](),controller[_0x2793('0x18')]);router[_0x2793('0x6')](_0x2793('0x19'),auth[_0x2793('0x8')](),controller[_0x2793('0x1a')]);router[_0x2793('0x1b')](_0x2793('0x19'),auth[_0x2793('0x8')](),controller[_0x2793('0x1c')]);router[_0x2793('0x6')](_0x2793('0x1d'),auth['isAuthenticated'](),controller[_0x2793('0x1e')]);router['get'](_0x2793('0x1f'),auth['isAuthenticated'](),controller[_0x2793('0x20')]);router[_0x2793('0x6')]('/agents',auth[_0x2793('0x8')](),controller[_0x2793('0x21')]);router[_0x2793('0x1b')]('/agents/:id/capacity',auth[_0x2793('0x8')](),controller['agentCapacity']);router[_0x2793('0x6')]('/telephones',auth[_0x2793('0x8')](),controller[_0x2793('0x22')]);router[_0x2793('0x6')](_0x2793('0x23'),auth[_0x2793('0x8')](),controller[_0x2793('0x24')]);router[_0x2793('0x6')](_0x2793('0x25'),auth[_0x2793('0x8')](),controller[_0x2793('0x26')]);router['get']('/fax/accounts',auth[_0x2793('0x8')](),controller['faxAccounts']);router[_0x2793('0x6')](_0x2793('0x27'),auth['isAuthenticated'](),controller[_0x2793('0x28')]);router[_0x2793('0x6')](_0x2793('0x29'),auth['isAuthenticated'](),controller[_0x2793('0x2a')]);router['get']('/openchannel/queues/waitinginteractions',auth[_0x2793('0x8')](),controller[_0x2793('0x2b')]);router[_0x2793('0x6')](_0x2793('0x2c'),auth[_0x2793('0x8')](),controller[_0x2793('0x2d')]);router[_0x2793('0x6')](_0x2793('0x2e'),auth[_0x2793('0x8')](),controller[_0x2793('0x2f')]);router['get'](_0x2793('0x30'),auth[_0x2793('0x8')](),controller[_0x2793('0x31')]);router[_0x2793('0x6')](_0x2793('0x32'),auth[_0x2793('0x8')](),controller[_0x2793('0x33')]);router[_0x2793('0x34')](_0x2793('0x35'),auth['isAuthenticated'](),controller[_0x2793('0x36')]('mail'));router[_0x2793('0x6')](_0x2793('0x37'),auth[_0x2793('0x8')](),controller[_0x2793('0x38')]);router[_0x2793('0x34')](_0x2793('0x39'),auth[_0x2793('0x8')](),controller[_0x2793('0x36')]('chat'));router[_0x2793('0x6')](_0x2793('0x3a'),auth[_0x2793('0x8')](),controller[_0x2793('0x3b')]);router['post'](_0x2793('0x3c'),auth[_0x2793('0x8')](),controller['queueNotify']('fax'));router[_0x2793('0x6')](_0x2793('0x3d'),auth['isAuthenticated'](),controller['showFaxQueues']);router[_0x2793('0x34')](_0x2793('0x3e'),auth[_0x2793('0x8')](),controller['queueNotify'](_0x2793('0x3f')));router[_0x2793('0x6')](_0x2793('0x40'),auth[_0x2793('0x8')](),controller[_0x2793('0x41')]);router[_0x2793('0x34')](_0x2793('0x42'),auth[_0x2793('0x8')](),controller[_0x2793('0x36')]('sms'));router[_0x2793('0x34')](_0x2793('0x43'),auth[_0x2793('0x8')](),controller[_0x2793('0x36')](_0x2793('0x44')));router[_0x2793('0x6')](_0x2793('0x45'),auth[_0x2793('0x8')](),controller[_0x2793('0x46')]);router[_0x2793('0x6')](_0x2793('0x47'),auth['isAuthenticated'](),controller[_0x2793('0x48')]);router['post'](_0x2793('0x49'),auth['isAuthenticated'](),controller[_0x2793('0x4a')]);module[_0x2793('0x4b')]=router;
\ No newline at end of file
index 5e96e1d..f2dd0d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['YYYY-MM-DD\x20HH:mm:ss','MemberReport','findOrCreate','interface','SIP/%s','capacity','telephones','Telephones','trunks','Trunks','chatQueues','ChatQueues','MailQueues','showMailQueues','MailAccounts','OpenchannelQueues','smsQueues','SmsQueues','showWhatsappQueues','faxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','map','uniq','value','filter','indexOf','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Website','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','InteractionId','From','create','Start','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','chat','agent','Agent\x20not\x20found','MessageId','TransferReport','agentTransferTimeout','bluebird','lodash','../../mysqldb','../../config/logger','api','jayson/promise','http','client','then','error','code','message','result','catch','status','sendStatus','name','send','isNil','rows','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format'];(function(_0x57c4ec,_0xfb1ad0){var _0x157f3c=function(_0x283be4){while(--_0x283be4){_0x57c4ec['push'](_0x57c4ec['shift']());}};_0x157f3c(++_0xfb1ad0);}(_0x31f0,0xb7));var _0x031f=function(_0x47d973,_0x8cebcd){_0x47d973=_0x47d973-0x0;var _0x1a3eaa=_0x31f0[_0x47d973];return _0x1a3eaa;};'use strict';var BPromise=require(_0x031f('0x0'));var moment=require('moment');var _=require(_0x031f('0x1'));var util=require('util');var db=require(_0x031f('0x2'))['db'];var logger=require(_0x031f('0x3'))(_0x031f('0x4'));var jayson=require(_0x031f('0x5'));var amiClient=jayson['client'][_0x031f('0x6')]({'port':0x232a});var mailClient=jayson[_0x031f('0x7')]['http']({'port':0x232b});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x3dc98e,_0x487e65,_0x365f59){return new BPromise(function(_0x4300b4,_0x2569b6){var _0x3e41ed=_0x365f59?_0x365f59:amiClient;return _0x3e41ed['request'](_0x3dc98e,_0x487e65)[_0x031f('0x8')](function(_0x24145f){if(_0x24145f[_0x031f('0x9')]){if(_0x24145f[_0x031f('0x9')][_0x031f('0xa')]===0x1f4){return _0x2569b6(_0x24145f[_0x031f('0x9')][_0x031f('0xb')]);}return _0x4300b4(_0x24145f[_0x031f('0x9')]['message']);}else{_0x4300b4(_0x24145f[_0x031f('0xc')]);}})[_0x031f('0xd')](function(_0x28da6e){_0x2569b6(_0x28da6e);});});}function respondWithResult(_0x351052,_0x3819bb){_0x3819bb=_0x3819bb||0xc8;return function(_0x405896){if(_0x405896){return _0x351052[_0x031f('0xe')](_0x3819bb)['json'](_0x405896);}return _0x351052[_0x031f('0xf')](0x194);};}function handleError(_0x23b40c,_0x17a699){_0x17a699=_0x17a699||0x1f4;return function(_0x2e3dfe){logger[_0x031f('0x9')](_0x2e3dfe['stack']);if(_0x2e3dfe['name']){delete _0x2e3dfe[_0x031f('0x10')];}_0x23b40c[_0x031f('0xe')](_0x17a699)[_0x031f('0x11')](_0x2e3dfe);};}function findById(_0x286177){return function(_0x5196b1){if(!_[_0x031f('0x12')](_0x286177)&&!_[_0x031f('0x12')](_0x5196b1)&&!_['isNil'](_0x5196b1[_0x031f('0x13')])){return _['find'](_0x5196b1[_0x031f('0x13')],function(_0x5f2199){return _0x5f2199['id']==_0x286177;});}return null;};}exports[_0x031f('0x14')]=function(_0xaa155,_0x1ceddc){return respondWithRpcPromise(_0x031f('0x15'),_0xaa155[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x1ceddc,null))[_0x031f('0xd')](handleError(_0x1ceddc,null));};exports[_0x031f('0x17')]=function(_0x29dd6e,_0x48a76e){return respondWithRpcPromise(_0x031f('0x18'),_[_0x031f('0x19')](_0x29dd6e[_0x031f('0x16')],_0x29dd6e['params']))['then'](respondWithResult(_0x48a76e,null))[_0x031f('0xd')](handleError(_0x48a76e,null));};exports['voiceChannelStopMixMonitor']=function(_0x3472a2,_0x57f6c4){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_['merge'](_0x3472a2[_0x031f('0x16')],_0x3472a2[_0x031f('0x1a')]))[_0x031f('0x8')](respondWithResult(_0x57f6c4,null))[_0x031f('0xd')](handleError(_0x57f6c4,null));};exports['voiceQueues']=function(_0x374b65,_0x5a64c0){return respondWithRpcPromise(_0x031f('0x1b'),_0x374b65[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x5a64c0,null))['catch'](handleError(_0x5a64c0,null));};exports[_0x031f('0x1c')]=function(_0x3b2a51,_0x54b44e){return respondWithRpcPromise(_0x031f('0x1b'),_0x3b2a51[_0x031f('0x16')])[_0x031f('0x8')](findById(_0x3b2a51['params']['id']))[_0x031f('0x8')](respondWithResult(_0x54b44e,null))[_0x031f('0xd')](handleError(_0x54b44e,null));};exports[_0x031f('0x1d')]=function(_0xaf5bea,_0xfaa36){return respondWithRpcPromise(_0x031f('0x1e'),_['merge'](_0xaf5bea[_0x031f('0x1f')],_0xaf5bea[_0x031f('0x1a')]))[_0x031f('0x8')](respondWithResult(_0xfaa36,null))[_0x031f('0xd')](handleError(_0xfaa36,null));};exports[_0x031f('0x20')]=function(_0x2d24f0,_0x378692){return respondWithRpcPromise(_0x031f('0x21'),_[_0x031f('0x19')](_0x2d24f0[_0x031f('0x16')],_0x2d24f0[_0x031f('0x1a')]))['then'](respondWithResult(_0x378692,null))[_0x031f('0xd')](handleError(_0x378692,null));};exports[_0x031f('0x22')]=function(_0xb3a6bd,_0x2f2616){return respondWithRpcPromise(_0x031f('0x23'),_0xb3a6bd[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x2f2616,null))[_0x031f('0xd')](handleError(_0x2f2616,null));};exports[_0x031f('0x24')]=function(_0xb7284d,_0x12bd77){return respondWithRpcPromise(_0x031f('0x25'),_[_0x031f('0x19')](_0xb7284d['query'],_0xb7284d[_0x031f('0x1a')]))[_0x031f('0x8')](respondWithResult(_0x12bd77,null))['catch'](handleError(_0x12bd77,null));};exports[_0x031f('0x26')]=function(_0x1fde6b,_0x4ec696){return respondWithRpcPromise(_0x031f('0x27'),_[_0x031f('0x19')](_0x1fde6b[_0x031f('0x16')],_0x1fde6b[_0x031f('0x1a')]))['then'](respondWithResult(_0x4ec696,null))['catch'](handleError(_0x4ec696,null));};exports[_0x031f('0x28')]=function(_0x555b89,_0x43ab76){return respondWithRpcPromise(_0x031f('0x29'),_[_0x031f('0x19')](_0x555b89['query'],_0x555b89['params']))[_0x031f('0x8')](respondWithResult(_0x43ab76,null))['catch'](handleError(_0x43ab76,null));};exports['outbound']=function(_0x2d489a,_0x45e3a4){return respondWithRpcPromise(_0x031f('0x2a'),_0x2d489a[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x45e3a4,null))[_0x031f('0xd')](handleError(_0x45e3a4,null));};exports[_0x031f('0x2b')]=function(_0x55c85f,_0x17a970){return respondWithRpcPromise(_0x031f('0x2c'),_0x55c85f[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x17a970,null))['catch'](handleError(_0x17a970,null));};exports[_0x031f('0x2d')]=function(_0x10f590,_0x2dba8b){var _0x5895f6;return respondWithRpcPromise(_0x031f('0x2e'),_0x10f590[_0x031f('0x16')])['then'](function(_0x36bafa){_0x5895f6=_0x36bafa;return respondWithRpcPromise(_0x031f('0x2e'),_0x10f590['query'],routingClient);})['then'](function(_0x178135){return _[_0x031f('0x19')]({},_0x178135,_0x5895f6);})[_0x031f('0x8')](respondWithResult(_0x2dba8b,null))[_0x031f('0xd')](handleError(_0x2dba8b,null));};exports[_0x031f('0x2f')]=function(_0xf0fb95,_0xe07087){if(_0xf0fb95['body']&&_0xf0fb95[_0x031f('0x1f')][_0x031f('0x30')]&&_0xf0fb95['user']&&_0xf0fb95[_0x031f('0x31')]['name']){for(var _0x456a98 in _0xf0fb95[_0x031f('0x1f')]['interaction']){if(_0xf0fb95[_0x031f('0x1f')][_0x031f('0x30')][_0x031f('0x32')](_0x456a98)){db['MemberReport'][_0x031f('0x33')]({'where':{'channel':_0x456a98,'membername':_0xf0fb95[_0x031f('0x31')][_0x031f('0x10')],'type':_0x031f('0x34'),'exitAt':null,'uniqueid':_0xf0fb95[_0x031f('0x1f')][_0x031f('0x30')][_0x456a98]&&_0xf0fb95[_0x031f('0x1f')][_0x031f('0x30')][_0x456a98][_0x031f('0x35')]?{'$notIn':_0xf0fb95['body'][_0x031f('0x30')][_0x456a98]}:{'$ne':null}}})[_0x031f('0x8')](function(_0x28f2b3){var _0x3205ce=moment()[_0x031f('0x36')](_0x031f('0x37'));for(var _0x2111c5=0x0,_0x33d24b=_0x28f2b3[_0x031f('0x35')];_0x2111c5<_0x33d24b;_0x2111c5+=0x1){_0x28f2b3[_0x2111c5]['updateAttributes']({'exitAt':_0x3205ce});}});for(var _0x38539a=0x0;_0x38539a<_0xf0fb95['body']['interaction'][_0x456a98][_0x031f('0x35')];_0x38539a+=0x1){db[_0x031f('0x38')][_0x031f('0x39')]({'where':{'channel':_0x456a98,'membername':_0xf0fb95[_0x031f('0x31')][_0x031f('0x10')],'type':'INTERACTION','uniqueid':_0xf0fb95[_0x031f('0x1f')][_0x031f('0x30')][_0x456a98][_0x38539a],'exitAt':null},'defaults':{'channel':_0x456a98,'membername':_0xf0fb95[_0x031f('0x31')]['name'],'interface':_[_0x031f('0x12')](_0xf0fb95[_0x031f('0x31')][_0x031f('0x3a')])?util[_0x031f('0x36')](_0x031f('0x3b'),_0xf0fb95[_0x031f('0x31')]['name']):_0xf0fb95['user'][_0x031f('0x3a')],'type':'INTERACTION','enterAt':moment()[_0x031f('0x36')](_0x031f('0x37')),'role':'agent','internal':_0xf0fb95[_0x031f('0x31')]['internal'],'uniqueid':_0xf0fb95['body'][_0x031f('0x30')][_0x456a98][_0x38539a]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0xf0fb95[_0x031f('0x1a')]['id'],'capacity':_0xf0fb95['body'][_0x031f('0x3c')]},routingClient)[_0x031f('0x8')](respondWithResult(_0xe07087,null))['catch'](handleError(_0xe07087,null));};exports[_0x031f('0x3d')]=function(_0x2e7abe,_0x57e32d){return respondWithRpcPromise(_0x031f('0x3e'),_0x2e7abe['query'])[_0x031f('0x8')](respondWithResult(_0x57e32d,null))['catch'](handleError(_0x57e32d,null));};exports[_0x031f('0x3f')]=function(_0x24848b,_0x393807){return respondWithRpcPromise(_0x031f('0x40'),_0x24848b[_0x031f('0x16')])['then'](respondWithResult(_0x393807,null))[_0x031f('0xd')](handleError(_0x393807,null));};exports['campaigns']=function(_0x186957,_0x414350){return respondWithRpcPromise('Campaigns',_0x186957[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x414350,null))['catch'](handleError(_0x414350,null));};exports[_0x031f('0x41')]=function(_0x154ad2,_0x22a547){return respondWithRpcPromise('ChatQueues',_0x154ad2[_0x031f('0x16')],routingClient)['then'](respondWithResult(_0x22a547,null))[_0x031f('0xd')](handleError(_0x22a547,null));};exports['showChatQueues']=function(_0x3bd6f4,_0x561a2b){return respondWithRpcPromise(_0x031f('0x42'),_0x3bd6f4[_0x031f('0x16')],routingClient)['then'](findById(_0x3bd6f4['params']['id']))[_0x031f('0x8')](respondWithResult(_0x561a2b,null))[_0x031f('0xd')](handleError(_0x561a2b,null));};exports['mailQueues']=function(_0x434c0f,_0xb44c73){return respondWithRpcPromise(_0x031f('0x43'),_0x434c0f[_0x031f('0x16')],routingClient)[_0x031f('0x8')](respondWithResult(_0xb44c73,null))[_0x031f('0xd')](handleError(_0xb44c73,null));};exports[_0x031f('0x44')]=function(_0x405398,_0x4b25e5){return respondWithRpcPromise(_0x031f('0x43'),_0x405398[_0x031f('0x16')],routingClient)[_0x031f('0x8')](findById(_0x405398['params']['id']))[_0x031f('0x8')](respondWithResult(_0x4b25e5,null))[_0x031f('0xd')](handleError(_0x4b25e5,null));};exports['mailAccounts']=function(_0xb86dcd,_0x14506b){return respondWithRpcPromise(_0x031f('0x45'),_0xb86dcd[_0x031f('0x16')],mailClient)['then'](respondWithResult(_0x14506b,null))['catch'](handleError(_0x14506b,null));};exports['openchannelQueues']=function(_0x4e2d0d,_0x9f76f3){return respondWithRpcPromise(_0x031f('0x46'),_0x4e2d0d['query'],routingClient)[_0x031f('0x8')](respondWithResult(_0x9f76f3,null))[_0x031f('0xd')](handleError(_0x9f76f3,null));};exports['showOpenchannelQueues']=function(_0x110495,_0x26ecb0){return respondWithRpcPromise(_0x031f('0x46'),_0x110495[_0x031f('0x16')],routingClient)[_0x031f('0x8')](findById(_0x110495[_0x031f('0x1a')]['id']))[_0x031f('0x8')](respondWithResult(_0x26ecb0,null))[_0x031f('0xd')](handleError(_0x26ecb0,null));};exports[_0x031f('0x47')]=function(_0x557a32,_0x138e0d){return respondWithRpcPromise('SmsQueues',_0x557a32[_0x031f('0x16')],routingClient)[_0x031f('0x8')](respondWithResult(_0x138e0d,null))[_0x031f('0xd')](handleError(_0x138e0d,null));};exports['showSmsQueues']=function(_0x4c1b74,_0xdb3d45){return respondWithRpcPromise(_0x031f('0x48'),_0x4c1b74[_0x031f('0x16')],routingClient)[_0x031f('0x8')](findById(_0x4c1b74['params']['id']))[_0x031f('0x8')](respondWithResult(_0xdb3d45,null))['catch'](handleError(_0xdb3d45,null));};exports['whatsappQueues']=function(_0x2179ee,_0x534bae){return respondWithRpcPromise('WhatsappQueues',_0x2179ee[_0x031f('0x16')],routingClient)[_0x031f('0x8')](respondWithResult(_0x534bae,null))[_0x031f('0xd')](handleError(_0x534bae,null));};exports[_0x031f('0x49')]=function(_0xe125d9,_0x584899){return respondWithRpcPromise('WhatsappQueues',_0xe125d9[_0x031f('0x16')],routingClient)['then'](findById(_0xe125d9[_0x031f('0x1a')]['id']))[_0x031f('0x8')](respondWithResult(_0x584899,null))['catch'](handleError(_0x584899,null));};exports[_0x031f('0x4a')]=function(_0xee136c,_0x439095){return respondWithRpcPromise(_0x031f('0x4b'),_0xee136c[_0x031f('0x16')],routingClient)[_0x031f('0x8')](respondWithResult(_0x439095,null))['catch'](handleError(_0x439095,null));};exports['showFaxQueues']=function(_0x3bcc7e,_0x232b62){return respondWithRpcPromise(_0x031f('0x4b'),_0x3bcc7e[_0x031f('0x16')],routingClient)[_0x031f('0x8')](findById(_0x3bcc7e[_0x031f('0x1a')]['id']))[_0x031f('0x8')](respondWithResult(_0x232b62,null))['catch'](handleError(_0x232b62,null));};exports['faxAccounts']=function(_0x4bd283,_0x5ddf46){return respondWithRpcPromise(_0x031f('0x4c'),_0x4bd283[_0x031f('0x16')])[_0x031f('0x8')](respondWithResult(_0x5ddf46,null))['catch'](handleError(_0x5ddf46,null));};exports[_0x031f('0x4d')]=function(_0x2e56e3,_0x5133a6){return respondWithRpcPromise(_0x031f('0x4e'),_0x2e56e3[_0x031f('0x16')],routingClient)[_0x031f('0x8')](respondWithResult(_0x5133a6,null))[_0x031f('0xd')](handleError(_0x5133a6,null));};exports[_0x031f('0x4f')]=function(_0x1e10f6,_0x982c1b){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x1e10f6['query'],routingClient)[_0x031f('0x8')](respondWithResult(_0x982c1b,null))['catch'](handleError(_0x982c1b,null));};exports[_0x031f('0x50')]=function(_0x523f69,_0x13251c){return respondWithRpcPromise(_0x031f('0x51'),_0x523f69[_0x031f('0x16')],routingClient)['then'](respondWithResult(_0x13251c,null))[_0x031f('0xd')](handleError(_0x13251c,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0xa31a3,_0xffb00){return respondWithRpcPromise(_0x031f('0x51'),_0xa31a3['query'],routingClient)[_0x031f('0x8')](function(_0x398e7c){if(_0xa31a3[_0x031f('0x16')][_0x031f('0x52')]!==undefined){var _0x45330f=_(_0x398e7c['rows'])['filter']([_0xa31a3[_0x031f('0x16')][_0x031f('0x52')],_0xa31a3['params']['id']])[_0x031f('0x53')]('queue_id')[_0x031f('0x54')]()[_0x031f('0x55')]();return _0x398e7c[_0x031f('0x13')][_0x031f('0x56')](function(_0x52bb92){return _0x45330f[_0x031f('0x57')](_0x52bb92[_0x031f('0x58')])>-0x1;});}else{return _0x398e7c[_0x031f('0x13')]['filter'](function(_0x1328ba){return _0x1328ba[_0x031f('0x58')]===parseInt(_0xa31a3['params']['id']);});}})[_0x031f('0x8')](respondWithResult(_0xffb00,null))[_0x031f('0xd')](handleError(_0xffb00,null));};exports[_0x031f('0x59')]=function(_0x2fb2a8,_0x104025){return respondWithRpcPromise(_0x031f('0x5a'),_0x2fb2a8[_0x031f('0x16')],routingClient)['then'](respondWithResult(_0x104025,null))[_0x031f('0xd')](handleError(_0x104025,null));};exports[_0x031f('0x5b')]=function(_0x23cc40,_0x5b19c1){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x23cc40[_0x031f('0x16')],routingClient)['then'](respondWithResult(_0x5b19c1,null))['catch'](handleError(_0x5b19c1,null));};exports[_0x031f('0x5c')]=function(_0x184bbd,_0x1c8055){return respondWithRpcPromise(_0x031f('0x5d'),_0x184bbd[_0x031f('0x16')],routingClient)[_0x031f('0x8')](respondWithResult(_0x1c8055,null))[_0x031f('0xd')](handleError(_0x1c8055,null));};exports[_0x031f('0x5e')]=function(_0xecbfed){return function(_0x30a3ea,_0x3166bb){var _0x49505e,_0x1a5fd2;var _0x2d867f=_[_0x031f('0x5f')](_0xecbfed);var _0x8290bf=_0xecbfed==='chat'?_0x031f('0x60'):'Account';return db[_0x2d867f+'Queue'][_0x031f('0x61')]({'raw':!![],'where':{'id':_0x30a3ea[_0x031f('0x1a')]['id']}})['then'](function(_0x510bb6){if(_[_0x031f('0x12')](_0x510bb6)){throw new Error(_0x2d867f+_0x031f('0x62'));}_0x49505e=_0x510bb6;return db[_0x2d867f+_0x031f('0x63')][_0x031f('0x61')]({'where':{'id':_0x30a3ea[_0x031f('0x1f')][_0x031f('0x64')]},'include':[{'model':db[_0x2d867f+'Interaction'],'as':_0x031f('0x65')},{'model':db[_0x2d867f+_0x8290bf],'as':_0x031f('0x66')}]});})['then'](function(_0x25ea89){if(_[_0x031f('0x12')](_0x25ea89)){throw new Error(_0x2d867f+_0x031f('0x67'));}_0x1a5fd2=_0x25ea89;return _0x25ea89[_0x031f('0x68')]({'read':0x0,'readAt':null,'UserId':null});})[_0x031f('0x8')](function(){var _0x20a8c6={'uniqueid':_0xecbfed+'.'+_0x1a5fd2['id']+'.'+_0x1a5fd2[_0x031f('0x65')]['id'],'FromUserId':_0x30a3ea['user']['id'],'type':_0x031f('0x69')};_0x20a8c6[_0x2d867f+'MessageId']=_0x1a5fd2['id'];_0x20a8c6[_0x2d867f+_0x031f('0x6a')]=_0x1a5fd2[_0x031f('0x65')]['id'];_0x20a8c6[_0x031f('0x6b')+_0x2d867f+_0x8290bf+'Id']=_0x1a5fd2['Account']['id'];_0x20a8c6['To'+_0x2d867f+'QueueId']=_0x49505e['id'];return db[_0x2d867f+'TransferReport'][_0x031f('0x6c')](_0x20a8c6);})[_0x031f('0x8')](function(){return respondWithRpcPromise(_0x031f('0x6d'),{'channel':_0xecbfed,'interaction':_0x1a5fd2[_0x031f('0x65')],'message':_0x1a5fd2,'account':_0x1a5fd2[_0x031f('0x66')],'applications':[{'id':0x0,'priority':0x1,'app':_0x031f('0x69'),'appdata':_0x49505e[_0x031f('0x10')]+','+(_0x1a5fd2['Account']['queueTransferTimeout']||0x12c),'interval':_0x031f('0x6e')}]},routingClient);})[_0x031f('0x8')](respondWithResult(_0x3166bb,null))['catch'](handleError(_0x3166bb,null));};};exports[_0x031f('0x6f')]=function(_0x4afad0,_0x1c31d5){var _0x20d85a,_0x5a6db6;if(_[_0x031f('0x12')](_0x4afad0[_0x031f('0x1f')]['channel'])){throw new Error(_0x031f('0x70'));}var _0x3c7dee=_0x4afad0[_0x031f('0x1f')]['channel'];var _0xa9b5e2=_[_0x031f('0x5f')](_0x3c7dee);var _0x1f6f71=_0x3c7dee===_0x031f('0x71')?_0x031f('0x60'):_0x031f('0x66');return db['User'][_0x031f('0x61')]({'raw':!![],'where':{'id':_0x4afad0[_0x031f('0x1a')]['id'],'role':_0x031f('0x72')}})[_0x031f('0x8')](function(_0x4ef395){if(_[_0x031f('0x12')](_0x4ef395)){throw new Error(_0x031f('0x73'));}_0x20d85a=_0x4ef395;return db[_0xa9b5e2+'Message'][_0x031f('0x61')]({'where':{'id':_0x4afad0[_0x031f('0x1f')][_0x031f('0x64')]},'include':[{'model':db[_0xa9b5e2+_0x031f('0x65')],'as':_0x031f('0x65')},{'model':db[_0xa9b5e2+_0x1f6f71],'as':_0x031f('0x66')}]});})[_0x031f('0x8')](function(_0xb35eef){if(_[_0x031f('0x12')](_0xb35eef)){throw new Error(_0xa9b5e2+_0x031f('0x67'));}_0x5a6db6=_0xb35eef;return _0xb35eef[_0x031f('0x68')]({'read':0x0,'readAt':null,'UserId':null});})[_0x031f('0x8')](function(){var _0x4b077c={'uniqueid':_0x3c7dee+'.'+_0x5a6db6['id']+'.'+_0x5a6db6[_0x031f('0x65')]['id'],'FromUserId':_0x4afad0[_0x031f('0x31')]['id'],'type':'queue','ToUserId':_0x20d85a['id']};_0x4b077c[_0xa9b5e2+_0x031f('0x74')]=_0x5a6db6['id'];_0x4b077c[_0xa9b5e2+_0x031f('0x6a')]=_0x5a6db6[_0x031f('0x65')]['id'];_0x4b077c[_0x031f('0x6b')+_0xa9b5e2+_0x1f6f71+'Id']=_0x5a6db6[_0x031f('0x66')]['id'];return db[_0xa9b5e2+_0x031f('0x75')]['create'](_0x4b077c);})['then'](function(){return respondWithRpcPromise('Start',{'channel':_0x3c7dee,'interaction':_0x5a6db6[_0x031f('0x65')],'message':_0x5a6db6,'account':_0x5a6db6[_0x031f('0x66')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x20d85a[_0x031f('0x10')]+','+(_0x5a6db6[_0x031f('0x66')][_0x031f('0x76')]||0x12c),'interval':_0x031f('0x6e')}]},routingClient);})['then'](respondWithResult(_0x1c31d5,null))[_0x031f('0xd')](handleError(_0x1c31d5,null));};
\ No newline at end of file
+var _0x24ee=['VoiceChannels','query','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','params','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','MemberReport','findOrCreate','interface','format','agent','AgentCapacity','capacity','telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','faxAccounts','FaxAccounts','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','map','uniq','value','filter','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Account','\x20Message\x20not\x20found','update','MessageId','Interaction','QueueId','queue','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','chat','User','Agent\x20not\x20found','TransferReport','create','Start','agentTransferTimeout','bluebird','moment','lodash','util','../../config/logger','api','jayson/promise','client','http','request','then','error','code','message','result','status','json','sendStatus','stack','name','send','isNil','rows','find'];(function(_0x23ae1c,_0x73321e){var _0x2fd0c=function(_0x3081c){while(--_0x3081c){_0x23ae1c['push'](_0x23ae1c['shift']());}};_0x2fd0c(++_0x73321e);}(_0x24ee,0x6d));var _0xe24e=function(_0x57dff9,_0x37bd67){_0x57dff9=_0x57dff9-0x0;var _0x346ae6=_0x24ee[_0x57dff9];return _0x346ae6;};'use strict';var BPromise=require(_0xe24e('0x0'));var moment=require(_0xe24e('0x1'));var _=require(_0xe24e('0x2'));var util=require(_0xe24e('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xe24e('0x4'))(_0xe24e('0x5'));var jayson=require(_0xe24e('0x6'));var amiClient=jayson[_0xe24e('0x7')]['http']({'port':0x232a});var mailClient=jayson[_0xe24e('0x7')][_0xe24e('0x8')]({'port':0x232b});var routingClient=jayson[_0xe24e('0x7')][_0xe24e('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x24dca9,_0x14b711,_0x37d052){return new BPromise(function(_0x5e59ac,_0x1111b4){var _0x4c3b4a=_0x37d052?_0x37d052:amiClient;return _0x4c3b4a[_0xe24e('0x9')](_0x24dca9,_0x14b711)[_0xe24e('0xa')](function(_0x4f4237){if(_0x4f4237[_0xe24e('0xb')]){if(_0x4f4237['error'][_0xe24e('0xc')]===0x1f4){return _0x1111b4(_0x4f4237[_0xe24e('0xb')][_0xe24e('0xd')]);}return _0x5e59ac(_0x4f4237[_0xe24e('0xb')][_0xe24e('0xd')]);}else{_0x5e59ac(_0x4f4237[_0xe24e('0xe')]);}})['catch'](function(_0x4a2d86){_0x1111b4(_0x4a2d86);});});}function respondWithResult(_0x141fe1,_0x3a3225){_0x3a3225=_0x3a3225||0xc8;return function(_0x34e6c3){if(_0x34e6c3){return _0x141fe1[_0xe24e('0xf')](_0x3a3225)[_0xe24e('0x10')](_0x34e6c3);}return _0x141fe1[_0xe24e('0x11')](0x194);};}function handleError(_0x40ac39,_0x293918){_0x293918=_0x293918||0x1f4;return function(_0x4e4e57){logger['error'](_0x4e4e57[_0xe24e('0x12')]);if(_0x4e4e57[_0xe24e('0x13')]){delete _0x4e4e57['name'];}_0x40ac39['status'](_0x293918)[_0xe24e('0x14')](_0x4e4e57);};}function findById(_0xa7c63d){return function(_0x3c24b3){if(!_[_0xe24e('0x15')](_0xa7c63d)&&!_[_0xe24e('0x15')](_0x3c24b3)&&!_[_0xe24e('0x15')](_0x3c24b3[_0xe24e('0x16')])){return _[_0xe24e('0x17')](_0x3c24b3[_0xe24e('0x16')],function(_0x2fdc24){return _0x2fdc24['id']==_0xa7c63d;});}return null;};}exports['voiceChannels']=function(_0x3e1927,_0x1e0d67){return respondWithRpcPromise(_0xe24e('0x18'),_0x3e1927[_0xe24e('0x19')])[_0xe24e('0xa')](respondWithResult(_0x1e0d67,null))[_0xe24e('0x1a')](handleError(_0x1e0d67,null));};exports[_0xe24e('0x1b')]=function(_0xb02d9d,_0x23b49e){return respondWithRpcPromise(_0xe24e('0x1c'),_[_0xe24e('0x1d')](_0xb02d9d[_0xe24e('0x19')],_0xb02d9d['params']))[_0xe24e('0xa')](respondWithResult(_0x23b49e,null))['catch'](handleError(_0x23b49e,null));};exports[_0xe24e('0x1e')]=function(_0x2f9c81,_0x4fba0c){return respondWithRpcPromise(_0xe24e('0x1f'),_['merge'](_0x2f9c81['query'],_0x2f9c81['params']))['then'](respondWithResult(_0x4fba0c,null))['catch'](handleError(_0x4fba0c,null));};exports['voiceQueues']=function(_0x493633,_0x1733c0){return respondWithRpcPromise(_0xe24e('0x20'),_0x493633['query'])[_0xe24e('0xa')](respondWithResult(_0x1733c0,null))['catch'](handleError(_0x1733c0,null));};exports[_0xe24e('0x21')]=function(_0x39f84a,_0x3b15be){return respondWithRpcPromise(_0xe24e('0x20'),_0x39f84a[_0xe24e('0x19')])[_0xe24e('0xa')](findById(_0x39f84a[_0xe24e('0x22')]['id']))[_0xe24e('0xa')](respondWithResult(_0x3b15be,null))[_0xe24e('0x1a')](handleError(_0x3b15be,null));};exports[_0xe24e('0x23')]=function(_0x7a1369,_0x1a165a){return respondWithRpcPromise(_0xe24e('0x24'),_[_0xe24e('0x1d')](_0x7a1369['body'],_0x7a1369[_0xe24e('0x22')]))[_0xe24e('0xa')](respondWithResult(_0x1a165a,null))[_0xe24e('0x1a')](handleError(_0x1a165a,null));};exports[_0xe24e('0x25')]=function(_0x2f4093,_0x1e260a){return respondWithRpcPromise('VoiceQueuesPreview',_['merge'](_0x2f4093[_0xe24e('0x19')],_0x2f4093[_0xe24e('0x22')]))[_0xe24e('0xa')](respondWithResult(_0x1e260a,null))[_0xe24e('0x1a')](handleError(_0x1e260a,null));};exports[_0xe24e('0x26')]=function(_0x22afdc,_0x32021c){return respondWithRpcPromise(_0xe24e('0x27'),_0x22afdc[_0xe24e('0x19')])[_0xe24e('0xa')](respondWithResult(_0x32021c,null))[_0xe24e('0x1a')](handleError(_0x32021c,null));};exports[_0xe24e('0x28')]=function(_0x208d2e,_0x32398b){return respondWithRpcPromise('VoiceQueuesChannel',_[_0xe24e('0x1d')](_0x208d2e[_0xe24e('0x19')],_0x208d2e['params']))[_0xe24e('0xa')](respondWithResult(_0x32398b,null))[_0xe24e('0x1a')](handleError(_0x32398b,null));};exports[_0xe24e('0x29')]=function(_0x5280e5,_0x9b3cf7){return respondWithRpcPromise(_0xe24e('0x2a'),_[_0xe24e('0x1d')](_0x5280e5[_0xe24e('0x19')],_0x5280e5['params']))[_0xe24e('0xa')](respondWithResult(_0x9b3cf7,null))[_0xe24e('0x1a')](handleError(_0x9b3cf7,null));};exports['voiceQueuesChannelRedirect']=function(_0x377f41,_0x4bd24a){return respondWithRpcPromise(_0xe24e('0x2b'),_[_0xe24e('0x1d')](_0x377f41[_0xe24e('0x19')],_0x377f41[_0xe24e('0x22')]))[_0xe24e('0xa')](respondWithResult(_0x4bd24a,null))[_0xe24e('0x1a')](handleError(_0x4bd24a,null));};exports[_0xe24e('0x2c')]=function(_0x22a462,_0x1cfef1){return respondWithRpcPromise('Outbound',_0x22a462[_0xe24e('0x19')])['then'](respondWithResult(_0x1cfef1,null))[_0xe24e('0x1a')](handleError(_0x1cfef1,null));};exports['outboundChannels']=function(_0x1cd78e,_0x1f6ddf){return respondWithRpcPromise(_0xe24e('0x2d'),_0x1cd78e[_0xe24e('0x19')])[_0xe24e('0xa')](respondWithResult(_0x1f6ddf,null))[_0xe24e('0x1a')](handleError(_0x1f6ddf,null));};exports[_0xe24e('0x2e')]=function(_0x5e98a6,_0x229372){var _0x1c0e8a;return respondWithRpcPromise(_0xe24e('0x2f'),_0x5e98a6[_0xe24e('0x19')])[_0xe24e('0xa')](function(_0x2dafad){_0x1c0e8a=_0x2dafad;return respondWithRpcPromise('Agents',_0x5e98a6[_0xe24e('0x19')],routingClient);})[_0xe24e('0xa')](function(_0x3b9424){return _[_0xe24e('0x1d')]({},_0x3b9424,_0x1c0e8a);})[_0xe24e('0xa')](respondWithResult(_0x229372,null))[_0xe24e('0x1a')](handleError(_0x229372,null));};exports[_0xe24e('0x30')]=function(_0xee8135,_0x4afcd4){if(_0xee8135[_0xe24e('0x31')]&&_0xee8135[_0xe24e('0x31')][_0xe24e('0x32')]&&_0xee8135['user']&&_0xee8135[_0xe24e('0x33')][_0xe24e('0x13')]){for(var _0x9bb3bf in _0xee8135[_0xe24e('0x31')][_0xe24e('0x32')]){if(_0xee8135[_0xe24e('0x31')][_0xe24e('0x32')]['hasOwnProperty'](_0x9bb3bf)){db['MemberReport'][_0xe24e('0x34')]({'where':{'channel':_0x9bb3bf,'membername':_0xee8135[_0xe24e('0x33')][_0xe24e('0x13')],'type':_0xe24e('0x35'),'exitAt':null,'uniqueid':_0xee8135[_0xe24e('0x31')][_0xe24e('0x32')][_0x9bb3bf]&&_0xee8135['body'][_0xe24e('0x32')][_0x9bb3bf][_0xe24e('0x36')]?{'$notIn':_0xee8135['body'][_0xe24e('0x32')][_0x9bb3bf]}:{'$ne':null}}})[_0xe24e('0xa')](function(_0x5894dd){var _0xdf352=moment()['format'](_0xe24e('0x37'));for(var _0x21af52=0x0,_0x4e1223=_0x5894dd[_0xe24e('0x36')];_0x21af52<_0x4e1223;_0x21af52+=0x1){_0x5894dd[_0x21af52][_0xe24e('0x38')]({'exitAt':_0xdf352});}});for(var _0x4f6252=0x0;_0x4f6252<_0xee8135['body'][_0xe24e('0x32')][_0x9bb3bf]['length'];_0x4f6252+=0x1){db[_0xe24e('0x39')][_0xe24e('0x3a')]({'where':{'channel':_0x9bb3bf,'membername':_0xee8135[_0xe24e('0x33')]['name'],'type':'INTERACTION','uniqueid':_0xee8135['body'][_0xe24e('0x32')][_0x9bb3bf][_0x4f6252],'exitAt':null},'defaults':{'channel':_0x9bb3bf,'membername':_0xee8135[_0xe24e('0x33')][_0xe24e('0x13')],'interface':_[_0xe24e('0x15')](_0xee8135[_0xe24e('0x33')]['interface'])?util['format']('SIP/%s',_0xee8135['user'][_0xe24e('0x13')]):_0xee8135['user'][_0xe24e('0x3b')],'type':_0xe24e('0x35'),'enterAt':moment()[_0xe24e('0x3c')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xe24e('0x3d'),'internal':_0xee8135[_0xe24e('0x33')]['internal'],'uniqueid':_0xee8135['body'][_0xe24e('0x32')][_0x9bb3bf][_0x4f6252]}});}}}}return respondWithRpcPromise(_0xe24e('0x3e'),{'id':_0xee8135[_0xe24e('0x22')]['id'],'capacity':_0xee8135[_0xe24e('0x31')][_0xe24e('0x3f')]},routingClient)[_0xe24e('0xa')](respondWithResult(_0x4afcd4,null))[_0xe24e('0x1a')](handleError(_0x4afcd4,null));};exports[_0xe24e('0x40')]=function(_0x42b5df,_0x3ab3e6){return respondWithRpcPromise('Telephones',_0x42b5df[_0xe24e('0x19')])[_0xe24e('0xa')](respondWithResult(_0x3ab3e6,null))[_0xe24e('0x1a')](handleError(_0x3ab3e6,null));};exports[_0xe24e('0x41')]=function(_0x39de0f,_0x41fca5){return respondWithRpcPromise(_0xe24e('0x42'),_0x39de0f[_0xe24e('0x19')])[_0xe24e('0xa')](respondWithResult(_0x41fca5,null))['catch'](handleError(_0x41fca5,null));};exports[_0xe24e('0x43')]=function(_0x22161f,_0x5b5c7a){return respondWithRpcPromise(_0xe24e('0x44'),_0x22161f[_0xe24e('0x19')])['then'](respondWithResult(_0x5b5c7a,null))['catch'](handleError(_0x5b5c7a,null));};exports[_0xe24e('0x45')]=function(_0xadd5ce,_0x40693d){return respondWithRpcPromise(_0xe24e('0x46'),_0xadd5ce[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](respondWithResult(_0x40693d,null))['catch'](handleError(_0x40693d,null));};exports[_0xe24e('0x47')]=function(_0x51967b,_0x24eacd){return respondWithRpcPromise(_0xe24e('0x46'),_0x51967b[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](findById(_0x51967b[_0xe24e('0x22')]['id']))['then'](respondWithResult(_0x24eacd,null))[_0xe24e('0x1a')](handleError(_0x24eacd,null));};exports[_0xe24e('0x48')]=function(_0xb4afde,_0x6a4109){return respondWithRpcPromise(_0xe24e('0x49'),_0xb4afde[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](respondWithResult(_0x6a4109,null))[_0xe24e('0x1a')](handleError(_0x6a4109,null));};exports[_0xe24e('0x4a')]=function(_0x17f707,_0x24d434){return respondWithRpcPromise(_0xe24e('0x49'),_0x17f707[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](findById(_0x17f707[_0xe24e('0x22')]['id']))[_0xe24e('0xa')](respondWithResult(_0x24d434,null))[_0xe24e('0x1a')](handleError(_0x24d434,null));};exports[_0xe24e('0x4b')]=function(_0x242912,_0x4d31c9){return respondWithRpcPromise(_0xe24e('0x4c'),_0x242912['query'],mailClient)[_0xe24e('0xa')](respondWithResult(_0x4d31c9,null))[_0xe24e('0x1a')](handleError(_0x4d31c9,null));};exports[_0xe24e('0x4d')]=function(_0x5d4b29,_0x2e7cb6){return respondWithRpcPromise(_0xe24e('0x4e'),_0x5d4b29[_0xe24e('0x19')],routingClient)['then'](respondWithResult(_0x2e7cb6,null))[_0xe24e('0x1a')](handleError(_0x2e7cb6,null));};exports[_0xe24e('0x4f')]=function(_0x5db55a,_0x245c54){return respondWithRpcPromise(_0xe24e('0x4e'),_0x5db55a['query'],routingClient)[_0xe24e('0xa')](findById(_0x5db55a['params']['id']))[_0xe24e('0xa')](respondWithResult(_0x245c54,null))[_0xe24e('0x1a')](handleError(_0x245c54,null));};exports[_0xe24e('0x50')]=function(_0x3d2e8f,_0x252e67){return respondWithRpcPromise(_0xe24e('0x51'),_0x3d2e8f[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](respondWithResult(_0x252e67,null))['catch'](handleError(_0x252e67,null));};exports[_0xe24e('0x52')]=function(_0x42eb6c,_0xd29bd7){return respondWithRpcPromise(_0xe24e('0x51'),_0x42eb6c[_0xe24e('0x19')],routingClient)['then'](findById(_0x42eb6c['params']['id']))[_0xe24e('0xa')](respondWithResult(_0xd29bd7,null))[_0xe24e('0x1a')](handleError(_0xd29bd7,null));};exports[_0xe24e('0x53')]=function(_0x1b5201,_0x391c6f){return respondWithRpcPromise(_0xe24e('0x54'),_0x1b5201[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](respondWithResult(_0x391c6f,null))[_0xe24e('0x1a')](handleError(_0x391c6f,null));};exports[_0xe24e('0x55')]=function(_0x34b906,_0x5b0ccb){return respondWithRpcPromise('WhatsappQueues',_0x34b906[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](findById(_0x34b906[_0xe24e('0x22')]['id']))[_0xe24e('0xa')](respondWithResult(_0x5b0ccb,null))[_0xe24e('0x1a')](handleError(_0x5b0ccb,null));};exports[_0xe24e('0x56')]=function(_0x2506a4,_0x45e1da){return respondWithRpcPromise('FaxQueues',_0x2506a4[_0xe24e('0x19')],routingClient)['then'](respondWithResult(_0x45e1da,null))[_0xe24e('0x1a')](handleError(_0x45e1da,null));};exports['showFaxQueues']=function(_0x35cd85,_0x43d6b1){return respondWithRpcPromise(_0xe24e('0x57'),_0x35cd85[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](findById(_0x35cd85[_0xe24e('0x22')]['id']))[_0xe24e('0xa')](respondWithResult(_0x43d6b1,null))['catch'](handleError(_0x43d6b1,null));};exports[_0xe24e('0x58')]=function(_0x3eb160,_0x2c375){return respondWithRpcPromise(_0xe24e('0x59'),_0x3eb160[_0xe24e('0x19')])[_0xe24e('0xa')](respondWithResult(_0x2c375,null))[_0xe24e('0x1a')](handleError(_0x2c375,null));};exports['chatQueuesWaitingInteractions']=function(_0x405030,_0x30141e){return respondWithRpcPromise(_0xe24e('0x5a'),_0x405030['query'],routingClient)[_0xe24e('0xa')](respondWithResult(_0x30141e,null))[_0xe24e('0x1a')](handleError(_0x30141e,null));};exports[_0xe24e('0x5b')]=function(_0x516872,_0x53daf5){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x516872[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](respondWithResult(_0x53daf5,null))[_0xe24e('0x1a')](handleError(_0x53daf5,null));};exports[_0xe24e('0x5c')]=function(_0x2a8825,_0xb51f5){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x2a8825[_0xe24e('0x19')],routingClient)[_0xe24e('0xa')](respondWithResult(_0xb51f5,null))[_0xe24e('0x1a')](handleError(_0xb51f5,null));};exports[_0xe24e('0x5d')]=function(_0x26ee10,_0x3f0c5d){return respondWithRpcPromise(_0xe24e('0x5e'),_0x26ee10['query'],routingClient)['then'](function(_0x5ed41){if(_0x26ee10[_0xe24e('0x19')]['type']!==undefined){var _0x505722=_(_0x5ed41[_0xe24e('0x16')])['filter']([_0x26ee10[_0xe24e('0x19')][_0xe24e('0x5f')],_0x26ee10['params']['id']])[_0xe24e('0x60')]('queue_id')[_0xe24e('0x61')]()[_0xe24e('0x62')]();return _0x5ed41['rows'][_0xe24e('0x63')](function(_0x1e5f29){return _0x505722['indexOf'](_0x1e5f29[_0xe24e('0x64')])>-0x1;});}else{return _0x5ed41[_0xe24e('0x16')]['filter'](function(_0x2c3b2e){return _0x2c3b2e['queue_id']===parseInt(_0x26ee10[_0xe24e('0x22')]['id']);});}})[_0xe24e('0xa')](respondWithResult(_0x3f0c5d,null))[_0xe24e('0x1a')](handleError(_0x3f0c5d,null));};exports[_0xe24e('0x65')]=function(_0x55eaa2,_0x565834){return respondWithRpcPromise(_0xe24e('0x66'),_0x55eaa2[_0xe24e('0x19')],routingClient)['then'](respondWithResult(_0x565834,null))['catch'](handleError(_0x565834,null));};exports[_0xe24e('0x67')]=function(_0x359025,_0x569e27){return respondWithRpcPromise(_0xe24e('0x68'),_0x359025['query'],routingClient)[_0xe24e('0xa')](respondWithResult(_0x569e27,null))['catch'](handleError(_0x569e27,null));};exports[_0xe24e('0x69')]=function(_0x4f9591,_0x27681c){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x4f9591[_0xe24e('0x19')],routingClient)['then'](respondWithResult(_0x27681c,null))['catch'](handleError(_0x27681c,null));};exports[_0xe24e('0x6a')]=function(_0x390a8d){return function(_0x3b1099,_0x14e62b){var _0x5d41a2,_0x400e22;var _0x82da01=_[_0xe24e('0x6b')](_0x390a8d);var _0xbe4629=_0x390a8d==='chat'?_0xe24e('0x6c'):'Account';return db[_0x82da01+_0xe24e('0x6d')][_0xe24e('0x6e')]({'raw':!![],'where':{'id':_0x3b1099['params']['id']}})[_0xe24e('0xa')](function(_0x10cf28){if(_[_0xe24e('0x15')](_0x10cf28)){throw new Error(_0x82da01+_0xe24e('0x6f'));}_0x5d41a2=_0x10cf28;return db[_0x82da01+_0xe24e('0x70')][_0xe24e('0x6e')]({'where':{'id':_0x3b1099['body'][_0xe24e('0x71')]},'include':[{'model':db[_0x82da01+'Interaction'],'as':'Interaction'},{'model':db[_0x82da01+_0xbe4629],'as':_0xe24e('0x72')}]});})[_0xe24e('0xa')](function(_0x13e525){if(_['isNil'](_0x13e525)){throw new Error(_0x82da01+_0xe24e('0x73'));}_0x400e22=_0x13e525;return _0x13e525[_0xe24e('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xe24e('0xa')](function(){var _0x261ee9={'uniqueid':_0x390a8d+'.'+_0x400e22['id']+'.'+_0x400e22['Interaction']['id'],'FromUserId':_0x3b1099[_0xe24e('0x33')]['id'],'type':'queue'};_0x261ee9[_0x82da01+_0xe24e('0x75')]=_0x400e22['id'];_0x261ee9[_0x82da01+'InteractionId']=_0x400e22[_0xe24e('0x76')]['id'];_0x261ee9['From'+_0x82da01+_0xbe4629+'Id']=_0x400e22[_0xe24e('0x72')]['id'];_0x261ee9['To'+_0x82da01+_0xe24e('0x77')]=_0x5d41a2['id'];return db[_0x82da01+'TransferReport']['create'](_0x261ee9);})[_0xe24e('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x390a8d,'interaction':_0x400e22[_0xe24e('0x76')],'message':_0x400e22,'account':_0x400e22[_0xe24e('0x72')],'applications':[{'id':0x0,'priority':0x1,'app':_0xe24e('0x78'),'appdata':_0x5d41a2[_0xe24e('0x13')]+','+(_0x400e22[_0xe24e('0x72')][_0xe24e('0x79')]||0x12c),'interval':_0xe24e('0x7a')}]},routingClient);})[_0xe24e('0xa')](respondWithResult(_0x14e62b,null))[_0xe24e('0x1a')](handleError(_0x14e62b,null));};};exports[_0xe24e('0x7b')]=function(_0x2cec64,_0x29c7bb){var _0x425b62,_0x57b863;if(_['isNil'](_0x2cec64[_0xe24e('0x31')][_0xe24e('0x7c')])){throw new Error(_0xe24e('0x7d'));}var _0x785e3d=_0x2cec64[_0xe24e('0x31')][_0xe24e('0x7c')];var _0x368472=_[_0xe24e('0x6b')](_0x785e3d);var _0x5883a4=_0x785e3d===_0xe24e('0x7e')?'Website':_0xe24e('0x72');return db[_0xe24e('0x7f')][_0xe24e('0x6e')]({'raw':!![],'where':{'id':_0x2cec64[_0xe24e('0x22')]['id'],'role':_0xe24e('0x3d')}})[_0xe24e('0xa')](function(_0x451491){if(_[_0xe24e('0x15')](_0x451491)){throw new Error(_0xe24e('0x80'));}_0x425b62=_0x451491;return db[_0x368472+_0xe24e('0x70')][_0xe24e('0x6e')]({'where':{'id':_0x2cec64[_0xe24e('0x31')][_0xe24e('0x71')]},'include':[{'model':db[_0x368472+_0xe24e('0x76')],'as':'Interaction'},{'model':db[_0x368472+_0x5883a4],'as':_0xe24e('0x72')}]});})[_0xe24e('0xa')](function(_0x88dfa9){if(_['isNil'](_0x88dfa9)){throw new Error(_0x368472+_0xe24e('0x73'));}_0x57b863=_0x88dfa9;return _0x88dfa9['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x37cfc4={'uniqueid':_0x785e3d+'.'+_0x57b863['id']+'.'+_0x57b863['Interaction']['id'],'FromUserId':_0x2cec64[_0xe24e('0x33')]['id'],'type':_0xe24e('0x3d'),'ToUserId':_0x425b62['id']};_0x37cfc4[_0x368472+'MessageId']=_0x57b863['id'];_0x37cfc4[_0x368472+'InteractionId']=_0x57b863['Interaction']['id'];_0x37cfc4['From'+_0x368472+_0x5883a4+'Id']=_0x57b863[_0xe24e('0x72')]['id'];return db[_0x368472+_0xe24e('0x81')][_0xe24e('0x82')](_0x37cfc4);})[_0xe24e('0xa')](function(){return respondWithRpcPromise(_0xe24e('0x83'),{'channel':_0x785e3d,'interaction':_0x57b863[_0xe24e('0x76')],'message':_0x57b863,'account':_0x57b863[_0xe24e('0x72')],'applications':[{'id':0x0,'priority':0x1,'app':_0xe24e('0x3d'),'appdata':_0x425b62[_0xe24e('0x13')]+','+(_0x57b863['Account'][_0xe24e('0x84')]||0x12c),'interval':_0xe24e('0x7a')}]},routingClient);})[_0xe24e('0xa')](respondWithResult(_0x29c7bb,null))['catch'](handleError(_0x29c7bb,null));};
\ No newline at end of file
index 28f94ed..fe58014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb08e=['express','fs-extra','../../components/auth/service','./schedule.controller','isAuthenticated','index','get','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x591a7c,_0x41238a){var _0x4ef9c6=function(_0x566317){while(--_0x566317){_0x591a7c['push'](_0x591a7c['shift']());}};_0x4ef9c6(++_0x41238a);}(_0xb08e,0x8f));var _0xeb08=function(_0x250904,_0x217bb3){_0x250904=_0x250904-0x0;var _0x3df27c=_0xb08e[_0x250904];return _0x3df27c;};'use strict';var multer=require(_0xeb08('0x0'));var util=require(_0xeb08('0x1'));var path=require(_0xeb08('0x2'));var timeout=require(_0xeb08('0x3'));var express=require(_0xeb08('0x4'));var router=express['Router']();var fs_extra=require(_0xeb08('0x5'));var auth=require(_0xeb08('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xeb08('0x7'));router['get']('/',auth[_0xeb08('0x8')](),controller[_0xeb08('0x9')]);router[_0xeb08('0xa')](_0xeb08('0xb'),auth[_0xeb08('0x8')](),controller[_0xeb08('0xc')]);router[_0xeb08('0xa')](_0xeb08('0xd'),auth[_0xeb08('0x8')](),controller[_0xeb08('0xe')]);router[_0xeb08('0xf')]('/',auth[_0xeb08('0x8')](),controller[_0xeb08('0x10')]);router[_0xeb08('0x11')](_0xeb08('0xb'),auth[_0xeb08('0x8')](),controller[_0xeb08('0x12')]);router[_0xeb08('0x13')](_0xeb08('0xb'),auth[_0xeb08('0x8')](),controller[_0xeb08('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xfb0a=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','run','post','create','put','exports','multer'];(function(_0x221246,_0x168ceb){var _0x13e1ea=function(_0x17ee22){while(--_0x17ee22){_0x221246['push'](_0x221246['shift']());}};_0x13e1ea(++_0x168ceb);}(_0xfb0a,0x13a));var _0xafb0=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0xfb0a[_0x3aaf0a];return _0x33e6bc;};'use strict';var multer=require(_0xafb0('0x0'));var util=require(_0xafb0('0x1'));var path=require(_0xafb0('0x2'));var timeout=require('connect-timeout');var express=require(_0xafb0('0x3'));var router=express[_0xafb0('0x4')]();var fs_extra=require(_0xafb0('0x5'));var auth=require(_0xafb0('0x6'));var interaction=require(_0xafb0('0x7'));var config=require(_0xafb0('0x8'));var controller=require(_0xafb0('0x9'));router[_0xafb0('0xa')]('/',auth[_0xafb0('0xb')](),controller[_0xafb0('0xc')]);router[_0xafb0('0xa')](_0xafb0('0xd'),auth[_0xafb0('0xb')](),controller[_0xafb0('0xe')]);router[_0xafb0('0xa')](_0xafb0('0xf'),auth[_0xafb0('0xb')](),controller[_0xafb0('0x10')]);router[_0xafb0('0x11')]('/',auth[_0xafb0('0xb')](),controller[_0xafb0('0x12')]);router[_0xafb0('0x13')]('/:id',auth[_0xafb0('0xb')](),controller['update']);router['delete'](_0xafb0('0xd'),auth[_0xafb0('0xb')](),controller['destroy']);module[_0xafb0('0x14')]=router;
\ No newline at end of file
index e2debda..25b6b71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6422=['TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','years','weeks','minutes','pdf','xlsx','csv','default','custom'];(function(_0x40b2ed,_0x2b1765){var _0x18397d=function(_0xc6a86f){while(--_0xc6a86f){_0x40b2ed['push'](_0x40b2ed['shift']());}};_0x18397d(++_0x2b1765);}(_0x6422,0x141));var _0x2642=function(_0x12fcd8,_0x2857b1){_0x12fcd8=_0x12fcd8-0x0;var _0x3d46ef=_0x6422[_0x12fcd8];return _0x3d46ef;};'use strict';var Sequelize=require(_0x2642('0x0'));module[_0x2642('0x1')]={'name':{'type':Sequelize[_0x2642('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2642('0x2')]},'active':{'type':Sequelize[_0x2642('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x2642('0x2')],'allowNull':![],'defaultValue':_0x2642('0x4')},'startAt':{'type':Sequelize[_0x2642('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x2642('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x2642('0x6')](_0x2642('0x7'),'quarters','months',_0x2642('0x8'),'days','hours',_0x2642('0x9')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x2642('0x6')]('csv',_0x2642('0xa'),_0x2642('0xb')),'allowNull':![],'defaultValue':_0x2642('0xc')},'type':{'type':Sequelize[_0x2642('0x6')]('custom',_0x2642('0xd')),'allowNull':![],'defaultValue':_0x2642('0xe')},'sendMail':{'type':Sequelize[_0x2642('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x2642('0x2')]},'cc':{'type':Sequelize[_0x2642('0xf')]},'bcc':{'type':Sequelize[_0x2642('0xf')]},'sendIfEmpty':{'type':Sequelize[_0x2642('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf4ac=['ENUM','years','months','weeks','hours','pdf','xlsx','csv','default','custom','TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0x11e870,_0x49d6b1){var _0x2820ce=function(_0x46571b){while(--_0x46571b){_0x11e870['push'](_0x11e870['shift']());}};_0x2820ce(++_0x49d6b1);}(_0xf4ac,0x16b));var _0xcf4a=function(_0x9981b7,_0x34460d){_0x9981b7=_0x9981b7-0x0;var _0x2520c4=_0xf4ac[_0x9981b7];return _0x2520c4;};'use strict';var Sequelize=require('sequelize');module[_0xcf4a('0x0')]={'name':{'type':Sequelize[_0xcf4a('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xcf4a('0x1')]},'active':{'type':Sequelize[_0xcf4a('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xcf4a('0x1')],'allowNull':![],'defaultValue':_0xcf4a('0x3')},'startAt':{'type':Sequelize[_0xcf4a('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xcf4a('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xcf4a('0x5')](_0xcf4a('0x6'),'quarters',_0xcf4a('0x7'),_0xcf4a('0x8'),'days',_0xcf4a('0x9'),'minutes'),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xcf4a('0x5')]('csv',_0xcf4a('0xa'),_0xcf4a('0xb')),'allowNull':![],'defaultValue':_0xcf4a('0xc')},'type':{'type':Sequelize[_0xcf4a('0x5')]('custom',_0xcf4a('0xd')),'allowNull':![],'defaultValue':_0xcf4a('0xe')},'sendMail':{'type':Sequelize[_0xcf4a('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xcf4a('0x1')]},'cc':{'type':Sequelize[_0xcf4a('0xf')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index a95d1f8..7590711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4047=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','fast-json-patch','moment','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/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','get','Scheduler','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','Schedule','findAll','catch','params','intersection','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x1d607b,_0xbd6802){var _0x350044=function(_0x45b164){while(--_0x45b164){_0x1d607b['push'](_0x1d607b['shift']());}};_0x350044(++_0xbd6802);}(_0x4047,0xfa));var _0x7404=function(_0xf1976a,_0x318e87){_0xf1976a=_0xf1976a-0x0;var _0x48db3c=_0x4047[_0xf1976a];return _0x48db3c;};'use strict';var emlformat=require(_0x7404('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7404('0x1'));var rp=require('request-promise');var moment=require(_0x7404('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x7404('0x3'));var util=require(_0x7404('0x4'));var path=require(_0x7404('0x5'));var sox=require('sox');var csv=require(_0x7404('0x6'));var ejs=require(_0x7404('0x7'));var fs=require('fs');var fs_extra=require(_0x7404('0x8'));var _=require(_0x7404('0x9'));var squel=require('squel');var crypto=require(_0x7404('0xa'));var jsforce=require(_0x7404('0xb'));var deskjs=require(_0x7404('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7404('0xd'));var Redis=require(_0x7404('0xe'));var authService=require(_0x7404('0xf'));var qs=require(_0x7404('0x10'));var as=require(_0x7404('0x11'));var hardwareService=require(_0x7404('0x12'));var logger=require('../../config/logger')(_0x7404('0x13'));var utils=require('../../config/utils');var config=require(_0x7404('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x7404('0x15'))['db'];function respondWithStatusCode(_0x47ea5c,_0x310477){_0x310477=_0x310477||0xcc;return function(_0x4b14ec){if(_0x4b14ec){return _0x47ea5c[_0x7404('0x16')](_0x310477);}return _0x47ea5c[_0x7404('0x17')](_0x310477)[_0x7404('0x18')]();};}function respondWithResult(_0x31b3b3,_0x8febf6){_0x8febf6=_0x8febf6||0xc8;return function(_0x5e07af){if(_0x5e07af){return _0x31b3b3[_0x7404('0x17')](_0x8febf6)[_0x7404('0x19')](_0x5e07af);}};}function respondWithFilteredResult(_0x43eee4,_0x5d2e17){return function(_0x315029){if(_0x315029){var _0x424c9d=typeof _0x5d2e17[_0x7404('0x1a')]==='undefined'&&typeof _0x5d2e17[_0x7404('0x1b')]==='undefined';var _0x139ea6=_0x315029[_0x7404('0x1c')];var _0x207764=_0x424c9d?0x0:_0x5d2e17[_0x7404('0x1a')];var _0x527bae=_0x424c9d?_0x315029[_0x7404('0x1c')]:_0x5d2e17[_0x7404('0x1a')]+_0x5d2e17[_0x7404('0x1b')];var _0x14bd84;if(_0x527bae>=_0x139ea6){_0x527bae=_0x139ea6;_0x14bd84=0xc8;}else{_0x14bd84=0xce;}_0x43eee4[_0x7404('0x17')](_0x14bd84);return _0x43eee4[_0x7404('0x1d')](_0x7404('0x1e'),_0x207764+'-'+_0x527bae+'/'+_0x139ea6)[_0x7404('0x19')](_0x315029);}return null;};}function patchUpdates(_0x477af7){return function(_0x69f74c){try{jsonpatch[_0x7404('0x1f')](_0x69f74c,_0x477af7,!![]);}catch(_0x2717a8){return BPromise[_0x7404('0x20')](_0x2717a8);}return _0x69f74c[_0x7404('0x21')]();};}function saveUpdates(_0xe80d73,_0x22c8a2){return function(_0x2612e0){if(_0x2612e0){return _0x2612e0[_0x7404('0x22')](_0xe80d73)['then'](function(_0x2f177a){return _0x2f177a;});}return null;};}function removeEntity(_0x1e695d,_0x25fd4f){return function(_0x14212c){if(_0x14212c){return _0x14212c['destroy']()[_0x7404('0x23')](function(){var _0x1ca3bd=_0x14212c[_0x7404('0x24')]({'plain':!![]});var _0x1bbbb5=_0x7404('0x25');return db[_0x7404('0x26')][_0x7404('0x27')]({'where':{'type':_0x1bbbb5,'resourceId':_0x1ca3bd['id']}})['then'](function(){return _0x14212c;});})[_0x7404('0x23')](function(){_0x1e695d[_0x7404('0x17')](0xcc)[_0x7404('0x18')]();});}};}function handleEntityNotFound(_0x10d6c5,_0x49a197){return function(_0x84e3e6){if(!_0x84e3e6){_0x10d6c5[_0x7404('0x16')](0x194);}return _0x84e3e6;};}function handleError(_0x41c64a,_0x82082f){_0x82082f=_0x82082f||0x1f4;return function(_0x4badac){logger[_0x7404('0x28')](_0x4badac[_0x7404('0x29')]);if(_0x4badac[_0x7404('0x2a')]){delete _0x4badac[_0x7404('0x2a')];}_0x41c64a[_0x7404('0x17')](_0x82082f)[_0x7404('0x2b')](_0x4badac);};}exports[_0x7404('0x2c')]=function(_0x30f5ce,_0x48ecac){var _0x6f1590={},_0x3dc9aa={},_0x88dff4={'count':0x0,'rows':[]};var _0x4f2124=_[_0x7404('0x2d')](db['Schedule'][_0x7404('0x2e')],function(_0x2fc619){return{'name':_0x2fc619[_0x7404('0x2f')],'type':_0x2fc619[_0x7404('0x30')]['key']};});_0x3dc9aa[_0x7404('0x31')]=_[_0x7404('0x2d')](_0x4f2124,_0x7404('0x2a'));_0x3dc9aa[_0x7404('0x32')]=_[_0x7404('0x33')](_0x30f5ce[_0x7404('0x32')]);_0x3dc9aa[_0x7404('0x34')]=_['intersection'](_0x3dc9aa[_0x7404('0x31')],_0x3dc9aa[_0x7404('0x32')]);_0x6f1590['attributes']=_['intersection'](_0x3dc9aa[_0x7404('0x31')],qs['fields'](_0x30f5ce['query']['fields']));_0x6f1590[_0x7404('0x35')]=_0x6f1590[_0x7404('0x35')][_0x7404('0x36')]?_0x6f1590['attributes']:_0x3dc9aa['model'];if(!_0x30f5ce['query'][_0x7404('0x37')](_0x7404('0x38'))){_0x6f1590['limit']=qs['limit'](_0x30f5ce['query'][_0x7404('0x1b')]);_0x6f1590[_0x7404('0x1a')]=qs['offset'](_0x30f5ce[_0x7404('0x32')][_0x7404('0x1a')]);}_0x6f1590[_0x7404('0x39')]=qs[_0x7404('0x3a')](_0x30f5ce['query'][_0x7404('0x3a')]);_0x6f1590[_0x7404('0x3b')]=qs[_0x7404('0x34')](_['pick'](_0x30f5ce['query'],_0x3dc9aa[_0x7404('0x34')]),_0x4f2124);if(_0x30f5ce[_0x7404('0x32')][_0x7404('0x3c')]){_0x6f1590[_0x7404('0x3b')]=_['merge'](_0x6f1590[_0x7404('0x3b')],{'$or':_[_0x7404('0x2d')](_0x4f2124,function(_0x501657){if(_0x501657[_0x7404('0x30')]!==_0x7404('0x3d')){var _0x4e8a1e={};_0x4e8a1e[_0x501657['name']]={'$like':'%'+_0x30f5ce[_0x7404('0x32')][_0x7404('0x3c')]+'%'};return _0x4e8a1e;}})});}_0x6f1590=_[_0x7404('0x3e')]({},_0x6f1590,_0x30f5ce[_0x7404('0x3f')]);var _0x4d9de8={'where':_0x6f1590[_0x7404('0x3b')]};return db[_0x7404('0x40')]['count'](_0x4d9de8)[_0x7404('0x23')](function(_0x54830e){_0x88dff4[_0x7404('0x1c')]=_0x54830e;if(_0x30f5ce[_0x7404('0x32')]['includeAll']){_0x6f1590['include']=[{'all':!![]}];}return db[_0x7404('0x40')][_0x7404('0x41')](_0x6f1590);})['then'](function(_0x218d82){_0x88dff4['rows']=_0x218d82;return _0x88dff4;})['then'](respondWithFilteredResult(_0x48ecac,_0x6f1590))[_0x7404('0x42')](handleError(_0x48ecac,null));};exports['show']=function(_0x411bdb,_0xcb23ea){var _0x10e0ed={'raw':![],'where':{'id':_0x411bdb[_0x7404('0x43')]['id']}},_0x2de13b={};_0x2de13b[_0x7404('0x31')]=_[_0x7404('0x33')](db[_0x7404('0x40')][_0x7404('0x2e')]);_0x2de13b['query']=_[_0x7404('0x33')](_0x411bdb[_0x7404('0x32')]);_0x2de13b[_0x7404('0x34')]=_['intersection'](_0x2de13b['model'],_0x2de13b[_0x7404('0x32')]);_0x10e0ed['attributes']=_[_0x7404('0x44')](_0x2de13b[_0x7404('0x31')],qs['fields'](_0x411bdb[_0x7404('0x32')]['fields']));_0x10e0ed['attributes']=_0x10e0ed[_0x7404('0x35')][_0x7404('0x36')]?_0x10e0ed[_0x7404('0x35')]:_0x2de13b['model'];if(_0x411bdb['query']['includeAll']){_0x10e0ed[_0x7404('0x45')]=[{'all':!![]}];}_0x10e0ed=_[_0x7404('0x3e')]({},_0x10e0ed,_0x411bdb['options']);return db[_0x7404('0x40')][_0x7404('0x46')](_0x10e0ed)[_0x7404('0x23')](handleEntityNotFound(_0xcb23ea,null))[_0x7404('0x23')](respondWithResult(_0xcb23ea,null))['catch'](handleError(_0xcb23ea,null));};exports[_0x7404('0x47')]=function(_0x34b095,_0x302974){return db[_0x7404('0x40')]['create'](_0x34b095[_0x7404('0x48')],{})[_0x7404('0x23')](function(_0x1f5ee2){var _0x941867=_0x34b095[_0x7404('0x49')]['get']({'plain':!![]});if(!_0x941867)throw new Error(_0x7404('0x4a'));if(_0x941867[_0x7404('0x4b')]===_0x7404('0x49')){var _0x58ca8f=_0x1f5ee2[_0x7404('0x24')]({'plain':!![]});var _0x1f5084=_0x7404('0x25');return db[_0x7404('0x4c')][_0x7404('0x46')]({'where':{'name':_0x1f5084,'userProfileId':_0x941867[_0x7404('0x4d')]},'raw':!![]})[_0x7404('0x23')](function(_0x13f0d6){if(_0x13f0d6&&_0x13f0d6[_0x7404('0x4e')]===0x0){return db[_0x7404('0x26')]['create']({'name':_0x58ca8f[_0x7404('0x2a')],'resourceId':_0x58ca8f['id'],'type':_0x13f0d6['name'],'sectionId':_0x13f0d6['id']},{})[_0x7404('0x23')](function(){return _0x1f5ee2;});}else{return _0x1f5ee2;}})[_0x7404('0x42')](function(_0x1ea8e4){logger[_0x7404('0x28')](_0x7404('0x4f'),_0x1ea8e4);throw _0x1ea8e4;});}return _0x1f5ee2;})[_0x7404('0x23')](respondWithResult(_0x302974,0xc9))[_0x7404('0x42')](handleError(_0x302974,null));};exports[_0x7404('0x22')]=function(_0x52d766,_0x2eb528){if(_0x52d766[_0x7404('0x48')]['id']){delete _0x52d766[_0x7404('0x48')]['id'];}return db[_0x7404('0x40')]['find']({'where':{'id':_0x52d766[_0x7404('0x43')]['id']}})[_0x7404('0x23')](handleEntityNotFound(_0x2eb528,null))[_0x7404('0x23')](saveUpdates(_0x52d766['body'],null))[_0x7404('0x23')](respondWithResult(_0x2eb528,null))[_0x7404('0x42')](handleError(_0x2eb528,null));};exports[_0x7404('0x27')]=function(_0x5bd9d5,_0x365367){return db[_0x7404('0x40')][_0x7404('0x46')]({'where':{'id':_0x5bd9d5[_0x7404('0x43')]['id']}})[_0x7404('0x23')](handleEntityNotFound(_0x365367,null))[_0x7404('0x23')](removeEntity(_0x365367,null))['catch'](handleError(_0x365367,null));};exports[_0x7404('0x50')]=function(_0x54320e,_0x15f795,_0xa6993d){var _0x24db41=require(_0x7404('0x51'));return db['Schedule'][_0x7404('0x46')]({'where':{'id':_0x54320e[_0x7404('0x43')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x15f795,null))[_0x7404('0x23')](function(){_0x24db41[_0x7404('0x50')](_0x54320e[_0x7404('0x43')]['id']);})[_0x7404('0x23')](respondWithStatusCode(_0x15f795,null))[_0x7404('0x42')](handleError(_0x15f795,null));};
\ No newline at end of file
+var _0x1a8c=['findAll','rows','catch','show','length','find','create','user','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','run','../../config/schedule','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','Scheduler','UserProfileResource','end','stack','name','index','Schedule','rawAttributes','fieldName','key','model','map','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include'];(function(_0x28dfff,_0x2aeb6c){var _0x364131=function(_0x43abcb){while(--_0x43abcb){_0x28dfff['push'](_0x28dfff['shift']());}};_0x364131(++_0x2aeb6c);}(_0x1a8c,0xb9));var _0xc1a8=function(_0x51761e,_0x12dc81){_0x51761e=_0x51761e-0x0;var _0x5baed7=_0x1a8c[_0x51761e];return _0x5baed7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc1a8('0x0'));var rp=require('request-promise');var moment=require(_0xc1a8('0x1'));var BPromise=require(_0xc1a8('0x2'));var Mustache=require(_0xc1a8('0x3'));var util=require('util');var path=require(_0xc1a8('0x4'));var sox=require(_0xc1a8('0x5'));var csv=require(_0xc1a8('0x6'));var ejs=require(_0xc1a8('0x7'));var fs=require('fs');var fs_extra=require(_0xc1a8('0x8'));var _=require(_0xc1a8('0x9'));var squel=require(_0xc1a8('0xa'));var crypto=require(_0xc1a8('0xb'));var jsforce=require(_0xc1a8('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc1a8('0x6'));var querystring=require('querystring');var Papa=require(_0xc1a8('0xd'));var Redis=require(_0xc1a8('0xe'));var authService=require(_0xc1a8('0xf'));var qs=require(_0xc1a8('0x10'));var as=require(_0xc1a8('0x11'));var hardwareService=require(_0xc1a8('0x12'));var logger=require(_0xc1a8('0x13'))(_0xc1a8('0x14'));var utils=require(_0xc1a8('0x15'));var config=require(_0xc1a8('0x16'));var licenseUtil=require(_0xc1a8('0x17'));var db=require(_0xc1a8('0x18'))['db'];function respondWithStatusCode(_0x26dab3,_0x345c89){_0x345c89=_0x345c89||0xcc;return function(_0x1061e4){if(_0x1061e4){return _0x26dab3[_0xc1a8('0x19')](_0x345c89);}return _0x26dab3[_0xc1a8('0x1a')](_0x345c89)['end']();};}function respondWithResult(_0x16fb40,_0x58605c){_0x58605c=_0x58605c||0xc8;return function(_0x3fb1d0){if(_0x3fb1d0){return _0x16fb40['status'](_0x58605c)['json'](_0x3fb1d0);}};}function respondWithFilteredResult(_0x23865a,_0x4c54e7){return function(_0x147149){if(_0x147149){var _0x2344fa=typeof _0x4c54e7[_0xc1a8('0x1b')]===_0xc1a8('0x1c')&&typeof _0x4c54e7[_0xc1a8('0x1d')]===_0xc1a8('0x1c');var _0x4e3b8b=_0x147149[_0xc1a8('0x1e')];var _0xfb3145=_0x2344fa?0x0:_0x4c54e7[_0xc1a8('0x1b')];var _0x366faa=_0x2344fa?_0x147149[_0xc1a8('0x1e')]:_0x4c54e7[_0xc1a8('0x1b')]+_0x4c54e7['limit'];var _0x76997f;if(_0x366faa>=_0x4e3b8b){_0x366faa=_0x4e3b8b;_0x76997f=0xc8;}else{_0x76997f=0xce;}_0x23865a[_0xc1a8('0x1a')](_0x76997f);return _0x23865a['set'](_0xc1a8('0x1f'),_0xfb3145+'-'+_0x366faa+'/'+_0x4e3b8b)[_0xc1a8('0x20')](_0x147149);}return null;};}function patchUpdates(_0x239267){return function(_0x441b04){try{jsonpatch[_0xc1a8('0x21')](_0x441b04,_0x239267,!![]);}catch(_0x13e694){return BPromise[_0xc1a8('0x22')](_0x13e694);}return _0x441b04['save']();};}function saveUpdates(_0x58cd19,_0x30a3b1){return function(_0x4dd012){if(_0x4dd012){return _0x4dd012[_0xc1a8('0x23')](_0x58cd19)[_0xc1a8('0x24')](function(_0x416c06){return _0x416c06;});}return null;};}function removeEntity(_0xcd1968,_0x12bc46){return function(_0x137bc6){if(_0x137bc6){return _0x137bc6['destroy']()[_0xc1a8('0x24')](function(){var _0x26c19c=_0x137bc6['get']({'plain':!![]});var _0xdeddcb=_0xc1a8('0x25');return db[_0xc1a8('0x26')]['destroy']({'where':{'type':_0xdeddcb,'resourceId':_0x26c19c['id']}})[_0xc1a8('0x24')](function(){return _0x137bc6;});})['then'](function(){_0xcd1968['status'](0xcc)[_0xc1a8('0x27')]();});}};}function handleEntityNotFound(_0x593b53,_0x364017){return function(_0x2202e6){if(!_0x2202e6){_0x593b53[_0xc1a8('0x19')](0x194);}return _0x2202e6;};}function handleError(_0x2fb57c,_0x32aa98){_0x32aa98=_0x32aa98||0x1f4;return function(_0x144c3b){logger['error'](_0x144c3b[_0xc1a8('0x28')]);if(_0x144c3b[_0xc1a8('0x29')]){delete _0x144c3b[_0xc1a8('0x29')];}_0x2fb57c[_0xc1a8('0x1a')](_0x32aa98)['send'](_0x144c3b);};}exports[_0xc1a8('0x2a')]=function(_0x28a7c1,_0x368730){var _0x4baed6={},_0x2cff40={},_0x25545c={'count':0x0,'rows':[]};var _0x574fa7=_['map'](db[_0xc1a8('0x2b')][_0xc1a8('0x2c')],function(_0x276b09){return{'name':_0x276b09[_0xc1a8('0x2d')],'type':_0x276b09['type'][_0xc1a8('0x2e')]};});_0x2cff40[_0xc1a8('0x2f')]=_[_0xc1a8('0x30')](_0x574fa7,_0xc1a8('0x29'));_0x2cff40[_0xc1a8('0x31')]=_[_0xc1a8('0x32')](_0x28a7c1[_0xc1a8('0x31')]);_0x2cff40['filters']=_[_0xc1a8('0x33')](_0x2cff40[_0xc1a8('0x2f')],_0x2cff40[_0xc1a8('0x31')]);_0x4baed6['attributes']=_[_0xc1a8('0x33')](_0x2cff40['model'],qs[_0xc1a8('0x34')](_0x28a7c1[_0xc1a8('0x31')][_0xc1a8('0x34')]));_0x4baed6[_0xc1a8('0x35')]=_0x4baed6[_0xc1a8('0x35')]['length']?_0x4baed6[_0xc1a8('0x35')]:_0x2cff40[_0xc1a8('0x2f')];if(!_0x28a7c1[_0xc1a8('0x31')][_0xc1a8('0x36')](_0xc1a8('0x37'))){_0x4baed6[_0xc1a8('0x1d')]=qs[_0xc1a8('0x1d')](_0x28a7c1[_0xc1a8('0x31')][_0xc1a8('0x1d')]);_0x4baed6[_0xc1a8('0x1b')]=qs[_0xc1a8('0x1b')](_0x28a7c1[_0xc1a8('0x31')][_0xc1a8('0x1b')]);}_0x4baed6[_0xc1a8('0x38')]=qs[_0xc1a8('0x39')](_0x28a7c1[_0xc1a8('0x31')]['sort']);_0x4baed6['where']=qs[_0xc1a8('0x3a')](_[_0xc1a8('0x3b')](_0x28a7c1[_0xc1a8('0x31')],_0x2cff40['filters']),_0x574fa7);if(_0x28a7c1[_0xc1a8('0x31')][_0xc1a8('0x3c')]){_0x4baed6['where']=_[_0xc1a8('0x3d')](_0x4baed6[_0xc1a8('0x3e')],{'$or':_['map'](_0x574fa7,function(_0x1953d3){if(_0x1953d3['type']!==_0xc1a8('0x3f')){var _0x14e307={};_0x14e307[_0x1953d3[_0xc1a8('0x29')]]={'$like':'%'+_0x28a7c1[_0xc1a8('0x31')]['filter']+'%'};return _0x14e307;}})});}_0x4baed6=_['merge']({},_0x4baed6,_0x28a7c1[_0xc1a8('0x40')]);var _0x492ddd={'where':_0x4baed6[_0xc1a8('0x3e')]};return db[_0xc1a8('0x2b')][_0xc1a8('0x1e')](_0x492ddd)['then'](function(_0x30eda2){_0x25545c[_0xc1a8('0x1e')]=_0x30eda2;if(_0x28a7c1[_0xc1a8('0x31')][_0xc1a8('0x41')]){_0x4baed6[_0xc1a8('0x42')]=[{'all':!![]}];}return db[_0xc1a8('0x2b')][_0xc1a8('0x43')](_0x4baed6);})[_0xc1a8('0x24')](function(_0x4b2c54){_0x25545c[_0xc1a8('0x44')]=_0x4b2c54;return _0x25545c;})[_0xc1a8('0x24')](respondWithFilteredResult(_0x368730,_0x4baed6))[_0xc1a8('0x45')](handleError(_0x368730,null));};exports[_0xc1a8('0x46')]=function(_0x7a5af9,_0x29ac4b){var _0x5e1df4={'raw':![],'where':{'id':_0x7a5af9['params']['id']}},_0x3b949a={};_0x3b949a[_0xc1a8('0x2f')]=_[_0xc1a8('0x32')](db['Schedule'][_0xc1a8('0x2c')]);_0x3b949a['query']=_[_0xc1a8('0x32')](_0x7a5af9['query']);_0x3b949a[_0xc1a8('0x3a')]=_[_0xc1a8('0x33')](_0x3b949a[_0xc1a8('0x2f')],_0x3b949a[_0xc1a8('0x31')]);_0x5e1df4[_0xc1a8('0x35')]=_[_0xc1a8('0x33')](_0x3b949a['model'],qs[_0xc1a8('0x34')](_0x7a5af9[_0xc1a8('0x31')][_0xc1a8('0x34')]));_0x5e1df4['attributes']=_0x5e1df4[_0xc1a8('0x35')][_0xc1a8('0x47')]?_0x5e1df4[_0xc1a8('0x35')]:_0x3b949a[_0xc1a8('0x2f')];if(_0x7a5af9[_0xc1a8('0x31')]['includeAll']){_0x5e1df4['include']=[{'all':!![]}];}_0x5e1df4=_[_0xc1a8('0x3d')]({},_0x5e1df4,_0x7a5af9['options']);return db['Schedule'][_0xc1a8('0x48')](_0x5e1df4)[_0xc1a8('0x24')](handleEntityNotFound(_0x29ac4b,null))[_0xc1a8('0x24')](respondWithResult(_0x29ac4b,null))[_0xc1a8('0x45')](handleError(_0x29ac4b,null));};exports[_0xc1a8('0x49')]=function(_0x4175f1,_0x31d09d){return db['Schedule']['create'](_0x4175f1['body'],{})[_0xc1a8('0x24')](function(_0x332229){var _0x2cd800=_0x4175f1[_0xc1a8('0x4a')][_0xc1a8('0x4b')]({'plain':!![]});if(!_0x2cd800)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2cd800[_0xc1a8('0x4c')]===_0xc1a8('0x4a')){var _0x185b18=_0x332229[_0xc1a8('0x4b')]({'plain':!![]});var _0x16ea64=_0xc1a8('0x25');return db[_0xc1a8('0x4d')]['find']({'where':{'name':_0x16ea64,'userProfileId':_0x2cd800[_0xc1a8('0x4e')]},'raw':!![]})[_0xc1a8('0x24')](function(_0x24fb80){if(_0x24fb80&&_0x24fb80['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x185b18[_0xc1a8('0x29')],'resourceId':_0x185b18['id'],'type':_0x24fb80['name'],'sectionId':_0x24fb80['id']},{})[_0xc1a8('0x24')](function(){return _0x332229;});}else{return _0x332229;}})[_0xc1a8('0x45')](function(_0x2229d4){logger['error'](_0xc1a8('0x4f'),_0x2229d4);throw _0x2229d4;});}return _0x332229;})[_0xc1a8('0x24')](respondWithResult(_0x31d09d,0xc9))[_0xc1a8('0x45')](handleError(_0x31d09d,null));};exports[_0xc1a8('0x23')]=function(_0x7f62b,_0x5e565a){if(_0x7f62b['body']['id']){delete _0x7f62b['body']['id'];}return db[_0xc1a8('0x2b')]['find']({'where':{'id':_0x7f62b[_0xc1a8('0x50')]['id']}})[_0xc1a8('0x24')](handleEntityNotFound(_0x5e565a,null))['then'](saveUpdates(_0x7f62b['body'],null))['then'](respondWithResult(_0x5e565a,null))[_0xc1a8('0x45')](handleError(_0x5e565a,null));};exports[_0xc1a8('0x51')]=function(_0x5a8a2d,_0x1e7e0e){return db[_0xc1a8('0x2b')]['find']({'where':{'id':_0x5a8a2d[_0xc1a8('0x50')]['id']}})['then'](handleEntityNotFound(_0x1e7e0e,null))[_0xc1a8('0x24')](removeEntity(_0x1e7e0e,null))['catch'](handleError(_0x1e7e0e,null));};exports[_0xc1a8('0x52')]=function(_0x144654,_0x349d86,_0x5bf119){var _0x454fc5=require(_0xc1a8('0x53'));return db['Schedule'][_0xc1a8('0x48')]({'where':{'id':_0x144654[_0xc1a8('0x50')]['id']},'raw':!![]})[_0xc1a8('0x24')](handleEntityNotFound(_0x349d86,null))[_0xc1a8('0x24')](function(){_0x454fc5[_0xc1a8('0x52')](_0x144654[_0xc1a8('0x50')]['id']);})[_0xc1a8('0x24')](respondWithStatusCode(_0x349d86,null))[_0xc1a8('0x45')](handleError(_0x349d86,null));};
\ No newline at end of file
index b0cdbaa..b0dd5c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6943=['bluebird','request-promise','rimraf','../../config/environment','exports','define','tools_schedules','lodash','util','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6943,0xf7));var _0x3694=function(_0x105e3e,_0x4cb667){_0x105e3e=_0x105e3e-0x0;var _0x5b0125=_0x6943[_0x105e3e];return _0x5b0125;};'use strict';var _=require(_0x3694('0x0'));var util=require(_0x3694('0x1'));var logger=require('../../config/logger')(_0x3694('0x2'));var moment=require('moment');var BPromise=require(_0x3694('0x3'));var rp=require(_0x3694('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3694('0x5'));var config=require(_0x3694('0x6'));var attributes=require('./schedule.attributes');module[_0x3694('0x7')]=function(_0x236d93,_0x440512){return _0x236d93[_0x3694('0x8')]('Schedule',attributes,{'tableName':_0x3694('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa634=['define','Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x46dc20,_0x381a06){var _0x4a3ad6=function(_0x3cadfa){while(--_0x3cadfa){_0x46dc20['push'](_0x46dc20['shift']());}};_0x4a3ad6(++_0x381a06);}(_0xa634,0xcf));var _0x4a63=function(_0x1bad49,_0x1a4792){_0x1bad49=_0x1bad49-0x0;var _0x17d067=_0xa634[_0x1bad49];return _0x17d067;};'use strict';var _=require(_0x4a63('0x0'));var util=require(_0x4a63('0x1'));var logger=require(_0x4a63('0x2'))(_0x4a63('0x3'));var moment=require(_0x4a63('0x4'));var BPromise=require(_0x4a63('0x5'));var rp=require(_0x4a63('0x6'));var fs=require('fs');var path=require(_0x4a63('0x7'));var rimraf=require('rimraf');var config=require(_0x4a63('0x8'));var attributes=require('./schedule.attributes');module['exports']=function(_0x2c36c2,_0x1eccf1){return _0x2c36c2[_0x4a63('0x9')](_0x4a63('0xa'),attributes,{'tableName':_0x4a63('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2756e53..5e971ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3adb=['moment','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','Schedule,\x20%s,\x20%s','request\x20sent','error','message','result','lodash','util'];(function(_0x38ff1e,_0x3b9385){var _0x3755d4=function(_0x6e6692){while(--_0x6e6692){_0x38ff1e['push'](_0x38ff1e['shift']());}};_0x3755d4(++_0x3b9385);}(_0x3adb,0x75));var _0xb3ad=function(_0x51e323,_0x12ede4){_0x51e323=_0x51e323-0x0;var _0x4bef7e=_0x3adb[_0x51e323];return _0x4bef7e;};'use strict';var _=require(_0xb3ad('0x0'));var util=require(_0xb3ad('0x1'));var moment=require(_0xb3ad('0x2'));var BPromise=require('bluebird');var rs=require(_0xb3ad('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb3ad('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3ad('0x5'))(_0xb3ad('0x6'));var config=require('../../config/environment');var jayson=require(_0xb3ad('0x7'));var client=jayson[_0xb3ad('0x8')][_0xb3ad('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x26cb48,_0x1bbe3e,_0x39f7e1){return new BPromise(function(_0x3bca9e,_0x1d6e82){return client[_0xb3ad('0xa')](_0x26cb48,_0x39f7e1)['then'](function(_0x280493){logger[_0xb3ad('0xb')](_0xb3ad('0xc'),_0x1bbe3e,_0xb3ad('0xd'));logger['debug']('Schedule,\x20%s,\x20%s,\x20%s',_0x1bbe3e,'request\x20sent',JSON['stringify'](_0x280493));if(_0x280493[_0xb3ad('0xe')]){if(_0x280493[_0xb3ad('0xe')]['code']===0x1f4){logger[_0xb3ad('0xe')](_0xb3ad('0xc'),_0x1bbe3e,_0x280493[_0xb3ad('0xe')][_0xb3ad('0xf')]);return _0x1d6e82(_0x280493['error'][_0xb3ad('0xf')]);}logger['error'](_0xb3ad('0xc'),_0x1bbe3e,_0x280493[_0xb3ad('0xe')]['message']);return _0x3bca9e(_0x280493['error'][_0xb3ad('0xf')]);}else{logger[_0xb3ad('0xb')](_0xb3ad('0xc'),_0x1bbe3e,'request\x20sent');_0x3bca9e(_0x280493[_0xb3ad('0x10')][_0xb3ad('0xf')]);}})['catch'](function(_0x501de7){logger['error'](_0xb3ad('0xc'),_0x1bbe3e,_0x501de7);_0x1d6e82(_0x501de7);});});}
\ No newline at end of file
+var _0x3e9b=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x491f99,_0x43123c){var _0x511683=function(_0x2286e5){while(--_0x2286e5){_0x491f99['push'](_0x491f99['shift']());}};_0x511683(++_0x43123c);}(_0x3e9b,0x142));var _0xb3e9=function(_0xd9f247,_0x279777){_0xd9f247=_0xd9f247-0x0;var _0x1f364c=_0x3e9b[_0xd9f247];return _0x1f364c;};'use strict';var _=require(_0xb3e9('0x0'));var util=require(_0xb3e9('0x1'));var moment=require(_0xb3e9('0x2'));var BPromise=require('bluebird');var rs=require(_0xb3e9('0x3'));var fs=require('fs');var Redis=require(_0xb3e9('0x4'));var db=require(_0xb3e9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3e9('0x6'))(_0xb3e9('0x7'));var config=require(_0xb3e9('0x8'));var jayson=require(_0xb3e9('0x9'));var client=jayson[_0xb3e9('0xa')][_0xb3e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x320b4d,_0x45d878,_0x297476){return new BPromise(function(_0x329691,_0x2d5489){return client[_0xb3e9('0xc')](_0x320b4d,_0x297476)['then'](function(_0xf990ae){logger[_0xb3e9('0xd')](_0xb3e9('0xe'),_0x45d878,_0xb3e9('0xf'));logger[_0xb3e9('0x10')](_0xb3e9('0x11'),_0x45d878,_0xb3e9('0xf'),JSON['stringify'](_0xf990ae));if(_0xf990ae['error']){if(_0xf990ae[_0xb3e9('0x12')][_0xb3e9('0x13')]===0x1f4){logger[_0xb3e9('0x12')]('Schedule,\x20%s,\x20%s',_0x45d878,_0xf990ae[_0xb3e9('0x12')][_0xb3e9('0x14')]);return _0x2d5489(_0xf990ae[_0xb3e9('0x12')]['message']);}logger[_0xb3e9('0x12')](_0xb3e9('0xe'),_0x45d878,_0xf990ae['error'][_0xb3e9('0x14')]);return _0x329691(_0xf990ae[_0xb3e9('0x12')]['message']);}else{logger[_0xb3e9('0xd')](_0xb3e9('0xe'),_0x45d878,_0xb3e9('0xf'));_0x329691(_0xf990ae[_0xb3e9('0x15')]['message']);}})[_0xb3e9('0x16')](function(_0x5ce0f9){logger[_0xb3e9('0x12')]('Schedule,\x20%s,\x20%s',_0x45d878,_0x5ce0f9);_0x2d5489(_0x5ce0f9);});});}
\ No newline at end of file
index 12cd91d..a65e0c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb23a=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','describe','/:id','/:id/download','download','update','destroy','exports','multer','connect-timeout'];(function(_0x4362d0,_0x1a1990){var _0x198e3a=function(_0x169fd4){while(--_0x169fd4){_0x4362d0['push'](_0x4362d0['shift']());}};_0x198e3a(++_0x1a1990);}(_0xb23a,0xcf));var _0xab23=function(_0x13cf64,_0xa97300){_0x13cf64=_0x13cf64-0x0;var _0x40716c=_0xb23a[_0x13cf64];return _0x40716c;};'use strict';var multer=require(_0xab23('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xab23('0x1'));var express=require(_0xab23('0x2'));var router=express[_0xab23('0x3')]();var fs_extra=require(_0xab23('0x4'));var auth=require(_0xab23('0x5'));var interaction=require(_0xab23('0x6'));var config=require(_0xab23('0x7'));var controller=require(_0xab23('0x8'));router[_0xab23('0x9')]('/',auth[_0xab23('0xa')](),controller[_0xab23('0xb')]);router['get']('/describe',auth[_0xab23('0xa')](),controller[_0xab23('0xc')]);router['get'](_0xab23('0xd'),auth[_0xab23('0xa')](),controller['show']);router['get'](_0xab23('0xe'),auth[_0xab23('0xa')](),controller[_0xab23('0xf')]);router['post']('/',auth[_0xab23('0xa')](),controller['create']);router['put'](_0xab23('0xd'),auth[_0xab23('0xa')](),controller[_0xab23('0x10')]);router['delete'](_0xab23('0xd'),auth[_0xab23('0xa')](),controller[_0xab23('0x11')]);module[_0xab23('0x12')]=router;
\ No newline at end of file
+var _0x9f4d=['download','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./screenRecording.controller','isAuthenticated','index','get','/describe','describe','/:id/download'];(function(_0x1b717d,_0xec5590){var _0x513071=function(_0x27ca28){while(--_0x27ca28){_0x1b717d['push'](_0x1b717d['shift']());}};_0x513071(++_0xec5590);}(_0x9f4d,0xb0));var _0xd9f4=function(_0x43d79c,_0x531a55){_0x43d79c=_0x43d79c-0x0;var _0x4866b0=_0x9f4d[_0x43d79c];return _0x4866b0;};'use strict';var multer=require(_0xd9f4('0x0'));var util=require(_0xd9f4('0x1'));var path=require(_0xd9f4('0x2'));var timeout=require(_0xd9f4('0x3'));var express=require(_0xd9f4('0x4'));var router=express[_0xd9f4('0x5')]();var fs_extra=require(_0xd9f4('0x6'));var auth=require(_0xd9f4('0x7'));var interaction=require(_0xd9f4('0x8'));var config=require('../../config/environment');var controller=require(_0xd9f4('0x9'));router['get']('/',auth[_0xd9f4('0xa')](),controller[_0xd9f4('0xb')]);router[_0xd9f4('0xc')](_0xd9f4('0xd'),auth['isAuthenticated'](),controller[_0xd9f4('0xe')]);router[_0xd9f4('0xc')]('/:id',auth[_0xd9f4('0xa')](),controller['show']);router[_0xd9f4('0xc')](_0xd9f4('0xf'),auth[_0xd9f4('0xa')](),controller[_0xd9f4('0x10')]);router[_0xd9f4('0x11')]('/',auth['isAuthenticated'](),controller[_0xd9f4('0x12')]);router[_0xd9f4('0x13')](_0xd9f4('0x14'),auth[_0xd9f4('0xa')](),controller[_0xd9f4('0x15')]);router[_0xd9f4('0x16')](_0xd9f4('0x14'),auth[_0xd9f4('0xa')](),controller['destroy']);module[_0xd9f4('0x17')]=router;
\ No newline at end of file
index fed2709..8819fbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6017=['MM-DD-YYYY\x20HH:mm','toString','createdAt','sequelize','moment','path','exports','VIRTUAL','value','getDataValue','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE','format'];(function(_0x3507e4,_0x2f5fb2){var _0x1538db=function(_0x4049d0){while(--_0x4049d0){_0x3507e4['push'](_0x3507e4['shift']());}};_0x1538db(++_0x2f5fb2);}(_0x6017,0xae));var _0x7601=function(_0x1443a6,_0x523c55){_0x1443a6=_0x1443a6-0x0;var _0x234bd4=_0x6017[_0x1443a6];return _0x234bd4;};'use strict';var Sequelize=require(_0x7601('0x0'));var moment=require(_0x7601('0x1'));var path=require(_0x7601('0x2'));var config=require('../../config/environment');module[_0x7601('0x3')]={'format':{'type':Sequelize[_0x7601('0x4')],'get':function(){return this['getDataValue'](_0x7601('0x5'))?path['extname'](this[_0x7601('0x6')]('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x7601('0x7')]},'value':{'type':Sequelize[_0x7601('0x7')],'set':function(_0xcb5ed9){var _0x34a36d=_0xcb5ed9[_0x7601('0x8')](/\\/g,'/');this[_0x7601('0x9')]('value',_0x34a36d);}},'rating':{'type':Sequelize[_0x7601('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x7601('0xa')],'set':function(_0xd3a338){this['setDataValue'](_0x7601('0xb'),moment()[_0x7601('0xc')](_0xd3a338,'ms'));this[_0x7601('0x9')]('closedAt',moment());this[_0x7601('0x9')](_0x7601('0xd'),_0xd3a338);}},'startedAt':{'type':Sequelize[_0x7601('0xe')],'get':function(){return moment(this[_0x7601('0x6')](_0x7601('0xb')))[_0x7601('0xf')](_0x7601('0x10'))[_0x7601('0x11')]();}},'closedAt':{'type':Sequelize[_0x7601('0xe')],'get':function(){return moment(this[_0x7601('0x6')]('closedAt'))[_0x7601('0xf')]('MM-DD-YYYY\x20HH:mm')[_0x7601('0x11')]();}},'createdAt':{'type':Sequelize[_0x7601('0xe')],'get':function(){return moment(this[_0x7601('0x6')](_0x7601('0x12')))[_0x7601('0xf')](_0x7601('0x10'))[_0x7601('0x11')]();}},'updatedAt':{'type':Sequelize[_0x7601('0xe')],'get':function(){return moment(this[_0x7601('0x6')]('updatedAt'))[_0x7601('0xf')](_0x7601('0x10'))['toString']();}}};
\ No newline at end of file
+var _0xd5a2=['closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','moment','path','../../config/environment','exports','VIRTUAL','value','extname','getDataValue','STRING','replace','setDataValue','INTEGER','startedAt'];(function(_0x581f34,_0x4f26c0){var _0x31d925=function(_0x7c24a1){while(--_0x7c24a1){_0x581f34['push'](_0x581f34['shift']());}};_0x31d925(++_0x4f26c0);}(_0xd5a2,0x1eb));var _0x2d5a=function(_0x359df6,_0x22441f){_0x359df6=_0x359df6-0x0;var _0x2cd4b3=_0xd5a2[_0x359df6];return _0x2cd4b3;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x2d5a('0x0'));var path=require(_0x2d5a('0x1'));var config=require(_0x2d5a('0x2'));module[_0x2d5a('0x3')]={'format':{'type':Sequelize[_0x2d5a('0x4')],'get':function(){return this['getDataValue'](_0x2d5a('0x5'))?path[_0x2d5a('0x6')](this[_0x2d5a('0x7')](_0x2d5a('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0x2d5a('0x8')]},'channel':{'type':Sequelize[_0x2d5a('0x8')]},'value':{'type':Sequelize[_0x2d5a('0x8')],'set':function(_0x1ae103){var _0x1cdfc4=_0x1ae103[_0x2d5a('0x9')](/\\/g,'/');this[_0x2d5a('0xa')]('value',_0x1cdfc4);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x2d5a('0xb')],'set':function(_0x562b6a){this[_0x2d5a('0xa')](_0x2d5a('0xc'),moment()['subtract'](_0x562b6a,'ms'));this[_0x2d5a('0xa')](_0x2d5a('0xd'),moment());this[_0x2d5a('0xa')](_0x2d5a('0xe'),_0x562b6a);}},'startedAt':{'type':Sequelize[_0x2d5a('0xf')],'get':function(){return moment(this['getDataValue'](_0x2d5a('0xc')))[_0x2d5a('0x10')](_0x2d5a('0x11'))[_0x2d5a('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x2d5a('0xd')))[_0x2d5a('0x10')](_0x2d5a('0x11'))[_0x2d5a('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x2d5a('0x7')](_0x2d5a('0x13')))[_0x2d5a('0x10')](_0x2d5a('0x11'))[_0x2d5a('0x12')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x2d5a('0x7')](_0x2d5a('0x14')))[_0x2d5a('0x10')](_0x2d5a('0x11'))[_0x2d5a('0x12')]();}}};
\ No newline at end of file
index ed1c063..78d8b43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','findAll','catch','find','create','body','duration','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','Entity\x20not\x20found','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','isNil','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x34bc27,_0x206e24){var _0x44843d=function(_0x24e364){while(--_0x24e364){_0x34bc27['push'](_0x34bc27['shift']());}};_0x44843d(++_0x206e24);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x55822a,_0x5c2ee1){_0x55822a=_0x55822a-0x0;var _0x1651de=_0xd6d6[_0x55822a];return _0x1651de;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];function respondWithStatusCode(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xcc;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0x19')](_0xe61c36);}return _0x32146d[_0x6d6d('0x1a')](_0xe61c36)[_0x6d6d('0x1b')]();};}function respondWithResult(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0xc8;return function(_0xd09ea7){if(_0xd09ea7){return _0x2cb2dd[_0x6d6d('0x1a')](_0x5f4154)[_0x6d6d('0x1c')](_0xd09ea7);}};}function respondWithFilteredResult(_0xa3b05d,_0x29cbd8){return function(_0x5d80c0){if(_0x5d80c0){var _0x2e6fdb=typeof _0x29cbd8['offset']===_0x6d6d('0x1d')&&typeof _0x29cbd8[_0x6d6d('0x1e')]===_0x6d6d('0x1d');var _0x4bb3d1=_0x5d80c0['count'];var _0x9e1e18=_0x2e6fdb?0x0:_0x29cbd8[_0x6d6d('0x1f')];var _0x2b59d4=_0x2e6fdb?_0x5d80c0[_0x6d6d('0x20')]:_0x29cbd8['offset']+_0x29cbd8['limit'];var _0x474873;if(_0x2b59d4>=_0x4bb3d1){_0x2b59d4=_0x4bb3d1;_0x474873=0xc8;}else{_0x474873=0xce;}_0xa3b05d['status'](_0x474873);return _0xa3b05d[_0x6d6d('0x21')](_0x6d6d('0x22'),_0x9e1e18+'-'+_0x2b59d4+'/'+_0x4bb3d1)[_0x6d6d('0x1c')](_0x5d80c0);}return null;};}function patchUpdates(_0x450352){return function(_0x40d35b){try{jsonpatch[_0x6d6d('0x23')](_0x40d35b,_0x450352,!![]);}catch(_0x164c67){return BPromise[_0x6d6d('0x24')](_0x164c67);}return _0x40d35b[_0x6d6d('0x25')]();};}function saveUpdates(_0x6f64e3,_0x24b10d){return function(_0x6e58e3){if(_0x6e58e3){return _0x6e58e3[_0x6d6d('0x26')](_0x6f64e3)[_0x6d6d('0x27')](function(_0x1f7f88){return _0x1f7f88;});}return null;};}function removeEntity(_0x25a02e,_0xced622){return function(_0x583b10){if(_0x583b10){return _0x583b10[_0x6d6d('0x28')]()[_0x6d6d('0x27')](function(){_0x25a02e[_0x6d6d('0x1a')](0xcc)[_0x6d6d('0x1b')]();});}};}function handleEntityNotFound(_0xf0df7f,_0x12fab2){return function(_0x554f8e){if(!_0x554f8e){_0xf0df7f[_0x6d6d('0x19')](0x194);}return _0x554f8e;};}function handleError(_0x2b5e31,_0x235451){_0x235451=_0x235451||0x1f4;return function(_0x126ac8){logger[_0x6d6d('0x29')](_0x126ac8[_0x6d6d('0x2a')]);if(_0x126ac8[_0x6d6d('0x2b')]){delete _0x126ac8['name'];}_0x2b5e31[_0x6d6d('0x1a')](_0x235451)[_0x6d6d('0x2c')](_0x126ac8);};}exports['index']=function(_0x553645,_0x3edcce){var _0x5273cd={},_0x8a9a84={},_0x57341f={'count':0x0,'rows':[]};var _0xde3272=_[_0x6d6d('0x2d')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')],function(_0x64d1f7){return{'name':_0x64d1f7[_0x6d6d('0x30')],'type':_0x64d1f7[_0x6d6d('0x31')][_0x6d6d('0x32')]};});_0x8a9a84[_0x6d6d('0x33')]=_[_0x6d6d('0x34')](_['map'](_0xde3272,_0x6d6d('0x2b')),['format']);_0x8a9a84[_0x6d6d('0x35')]=_[_0x6d6d('0x36')](_0x553645[_0x6d6d('0x35')]);_0x8a9a84[_0x6d6d('0x37')]=_['intersection'](_0x8a9a84[_0x6d6d('0x33')],_0x8a9a84['query']);_0x5273cd[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x8a9a84['model'],qs[_0x6d6d('0x3a')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3a')]));_0x5273cd[_0x6d6d('0x38')]=_0x5273cd[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x5273cd[_0x6d6d('0x38')]:_0x8a9a84[_0x6d6d('0x33')];if(!_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3c')](_0x6d6d('0x3d'))){_0x5273cd[_0x6d6d('0x1e')]=qs[_0x6d6d('0x1e')](_0x553645[_0x6d6d('0x35')]['limit']);_0x5273cd[_0x6d6d('0x1f')]=qs[_0x6d6d('0x1f')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x1f')]);}_0x5273cd['order']=qs['sort'](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3e')]);_0x5273cd[_0x6d6d('0x3f')]=qs['filters'](_[_0x6d6d('0x40')](_0x553645[_0x6d6d('0x35')],_0x8a9a84[_0x6d6d('0x37')]),_0xde3272);if(_0x553645[_0x6d6d('0x35')]['filter']){_0x5273cd['where']=_['merge'](_0x5273cd[_0x6d6d('0x3f')],{'$or':_[_0x6d6d('0x2d')](_0xde3272,function(_0x33c8f2){if(_0x33c8f2[_0x6d6d('0x31')]!=='VIRTUAL'){var _0x253416={};_0x253416[_0x33c8f2[_0x6d6d('0x2b')]]={'$like':'%'+_0x553645[_0x6d6d('0x35')][_0x6d6d('0x41')]+'%'};return _0x253416;}})});}_0x5273cd=_[_0x6d6d('0x42')]({},_0x5273cd,_0x553645[_0x6d6d('0x43')]);var _0x4b457d={'where':_0x5273cd[_0x6d6d('0x3f')]};return db[_0x6d6d('0x2e')][_0x6d6d('0x20')](_0x4b457d)[_0x6d6d('0x27')](function(_0x32275b){_0x57341f[_0x6d6d('0x20')]=_0x32275b;if(_0x553645[_0x6d6d('0x35')]['includeAll']){_0x5273cd[_0x6d6d('0x44')]=[{'all':!![]}];}return db[_0x6d6d('0x2e')][_0x6d6d('0x45')](_0x5273cd);})[_0x6d6d('0x27')](function(_0xe1aa77){_0x57341f['rows']=_0xe1aa77;return _0x57341f;})[_0x6d6d('0x27')](respondWithFilteredResult(_0x3edcce,_0x5273cd))[_0x6d6d('0x46')](handleError(_0x3edcce,null));};exports['show']=function(_0x452de2,_0x50dc17){var _0x15bf62={'raw':![],'where':{'id':_0x452de2['params']['id']}},_0x43c03c={};_0x43c03c[_0x6d6d('0x33')]=_[_0x6d6d('0x36')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')]);_0x43c03c[_0x6d6d('0x35')]=_['keys'](_0x452de2['query']);_0x43c03c[_0x6d6d('0x37')]=_['intersection'](_0x43c03c['model'],_0x43c03c[_0x6d6d('0x35')]);_0x15bf62[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x43c03c['model'],qs[_0x6d6d('0x3a')](_0x452de2['query'][_0x6d6d('0x3a')]));_0x15bf62[_0x6d6d('0x38')]=_0x15bf62[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x15bf62[_0x6d6d('0x38')]:_0x43c03c[_0x6d6d('0x33')];if(_0x452de2[_0x6d6d('0x35')]['includeAll']){_0x15bf62[_0x6d6d('0x44')]=[{'all':!![]}];}_0x15bf62=_[_0x6d6d('0x42')]({},_0x15bf62,_0x452de2[_0x6d6d('0x43')]);return db[_0x6d6d('0x2e')][_0x6d6d('0x47')](_0x15bf62)[_0x6d6d('0x27')](handleEntityNotFound(_0x50dc17,null))[_0x6d6d('0x27')](respondWithResult(_0x50dc17,null))[_0x6d6d('0x46')](handleError(_0x50dc17,null));};exports[_0x6d6d('0x48')]=function(_0x5e4c04,_0x4d78bb){return db[_0x6d6d('0x2e')][_0x6d6d('0x48')](_0x5e4c04[_0x6d6d('0x49')],{})[_0x6d6d('0x27')](respondWithResult(_0x4d78bb,0xc9))[_0x6d6d('0x46')](handleError(_0x4d78bb,null));};exports['update']=function(_0x47170d,_0x27b396){if(_0x47170d[_0x6d6d('0x49')]['id']){delete _0x47170d[_0x6d6d('0x49')]['id'];}delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4a')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4b')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4c')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4d')];return db['ScreenRecording'][_0x6d6d('0x47')]({'where':{'id':_0x47170d[_0x6d6d('0x4e')]['id']}})[_0x6d6d('0x27')](handleEntityNotFound(_0x27b396,null))[_0x6d6d('0x27')](saveUpdates(_0x47170d[_0x6d6d('0x49')],null))['then'](respondWithResult(_0x27b396,null))[_0x6d6d('0x46')](handleError(_0x27b396,null));};exports[_0x6d6d('0x4f')]=function(_0x45340b,_0x4e4c3e){return db['ScreenRecording'][_0x6d6d('0x4f')]()['then'](respondWithResult(_0x4e4c3e,null))[_0x6d6d('0x46')](handleError(_0x4e4c3e,null));};exports[_0x6d6d('0x50')]=function(_0x32aaae,_0x268361,_0x4777a5){var _0x18e2de=require(_0x6d6d('0x51'));var _0x26c23a=![];var _0x1a8f33={};if(_0x32aaae[_0x6d6d('0x35')]['type']&&_0x32aaae[_0x6d6d('0x35')][_0x6d6d('0x31')]===_0x6d6d('0x52')){_0x1a8f33[_0x6d6d('0x52')]=_0x32aaae[_0x6d6d('0x4e')]['id'];}else{_0x1a8f33['id']=_0x32aaae[_0x6d6d('0x4e')]['id'];}return db[_0x6d6d('0x2e')]['find']({'where':_0x1a8f33,'attributes':['id','value'],'raw':!![]})[_0x6d6d('0x27')](handleEntityNotFound(_0x268361,null))[_0x6d6d('0x27')](function(_0x5cc644){if(_0x5cc644){var _0x3e98a0=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x5cc644[_0x6d6d('0x4d')]);var _0xc6b96e=util[_0x6d6d('0x56')](_0x6d6d('0x57'),_0x3e98a0);if(fs[_0x6d6d('0x58')](_0xc6b96e)){_0x26c23a=!![];return _0x18e2de[_0x6d6d('0x59')](_0xc6b96e,_0x3e98a0,config[_0x6d6d('0x5a')][_0x6d6d('0x5b')])[_0x6d6d('0x27')](function(){return _0x5cc644;});}return _0x5cc644;}})[_0x6d6d('0x27')](function(_0x3065ea){if(_0x3065ea){var _0x50d8dd=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],'server/files/screen_recordings',_0x3065ea[_0x6d6d('0x4d')]);if(!fs[_0x6d6d('0x58')](_0x50d8dd)){throw new db[(_0x6d6d('0x5c'))][(_0x6d6d('0x5d'))](_0x6d6d('0x5e'));}if(_0x3065ea[_0x6d6d('0x5f')]){return _0x268361[_0x6d6d('0x50')](_0x50d8dd,_0x3065ea[_0x6d6d('0x5f')]+path[_0x6d6d('0x60')](_0x50d8dd),function(){if(_0x26c23a){fs['unlink'](_0x50d8dd);}});}else{return _0x268361['download'](_0x50d8dd,function(_0x22c3a1){if(_0x26c23a){fs[_0x6d6d('0x61')](_0x50d8dd);}});}}})[_0x6d6d('0x46')](function(_0x5de33f){if(_0x5de33f['message']===_0x6d6d('0x5e')){_0x268361['status'](0x194)[_0x6d6d('0x2c')]('Not\x20found');}else{return handleError(_0x268361,null);}});};exports[_0x6d6d('0x28')]=function(_0x367a6f,_0x21f14c){return db[_0x6d6d('0x2e')][_0x6d6d('0x47')]({'where':{'id':_0x367a6f[_0x6d6d('0x4e')]['id']}})['then'](function(_0x41e576){if(_['isNil'](_0x41e576)){throw new ReferenceError(_0x6d6d('0x62'));}return _0x41e576;})['then'](function(_0x2a21d8){var _0x3e48f7=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x2a21d8[_0x6d6d('0x4d')]);logger[_0x6d6d('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x3e48f7);if(!_['isNil'](_0x2a21d8[_0x6d6d('0x4d')])&&fs['existsSync'](_0x3e48f7)){logger[_0x6d6d('0x63')]('File:\x20\x22'+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}_0x3e48f7=_0x3e48f7+_0x6d6d('0x66');if(!_[_0x6d6d('0x67')](_0x2a21d8[_0x6d6d('0x4d')])&&fs[_0x6d6d('0x58')](_0x3e48f7)){logger['info'](_0x6d6d('0x68')+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}return _0x2a21d8;})[_0x6d6d('0x27')](function(_0x1ba731){if(!_0x1ba731)throw new InternalError();return _0x1ba731[_0x6d6d('0x28')]();})[_0x6d6d('0x27')](function(){_0x21f14c['status'](0xcc)[_0x6d6d('0x1b')]();})[_0x6d6d('0x46')](handleError(_0x21f14c,null));};
\ No newline at end of file
+var _0xdc97=['join','root','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','destroy','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','sendStatus','error','name','send','index','map','format','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','options','ScreenRecording','includeAll','rows','catch','show','params','include','find','create','body','duration','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid'];(function(_0x46d613,_0xf6aa29){var _0x3494e1=function(_0x2b2c06){while(--_0x2b2c06){_0x46d613['push'](_0x46d613['shift']());}};_0x3494e1(++_0xf6aa29);}(_0xdc97,0x13b));var _0x7dc9=function(_0x845026,_0x28cc71){_0x845026=_0x845026-0x0;var _0x4e0dc7=_0xdc97[_0x845026];return _0x4e0dc7;};'use strict';var emlformat=require(_0x7dc9('0x0'));var rimraf=require(_0x7dc9('0x1'));var zipdir=require(_0x7dc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7dc9('0x3'));var moment=require('moment');var BPromise=require(_0x7dc9('0x4'));var Mustache=require(_0x7dc9('0x5'));var util=require('util');var path=require(_0x7dc9('0x6'));var sox=require(_0x7dc9('0x7'));var csv=require(_0x7dc9('0x8'));var ejs=require(_0x7dc9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7dc9('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7dc9('0xb'));var deskjs=require(_0x7dc9('0xc'));var toCsv=require(_0x7dc9('0x8'));var querystring=require(_0x7dc9('0xd'));var Papa=require(_0x7dc9('0xe'));var Redis=require('ioredis');var authService=require(_0x7dc9('0xf'));var qs=require(_0x7dc9('0x10'));var as=require(_0x7dc9('0x11'));var hardwareService=require(_0x7dc9('0x12'));var logger=require(_0x7dc9('0x13'))(_0x7dc9('0x14'));var utils=require(_0x7dc9('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x599ef1,_0x94c75a){_0x94c75a=_0x94c75a||0xcc;return function(_0x14e5db){if(_0x14e5db){return _0x599ef1['sendStatus'](_0x94c75a);}return _0x599ef1[_0x7dc9('0x16')](_0x94c75a)[_0x7dc9('0x17')]();};}function respondWithResult(_0xaadf2,_0xf37bc7){_0xf37bc7=_0xf37bc7||0xc8;return function(_0x31d43d){if(_0x31d43d){return _0xaadf2[_0x7dc9('0x16')](_0xf37bc7)['json'](_0x31d43d);}};}function respondWithFilteredResult(_0x3a54f2,_0x278191){return function(_0x1b0aa1){if(_0x1b0aa1){var _0x442819=typeof _0x278191[_0x7dc9('0x18')]===_0x7dc9('0x19')&&typeof _0x278191[_0x7dc9('0x1a')]===_0x7dc9('0x19');var _0x4778d5=_0x1b0aa1['count'];var _0x22577e=_0x442819?0x0:_0x278191['offset'];var _0x1f5906=_0x442819?_0x1b0aa1[_0x7dc9('0x1b')]:_0x278191['offset']+_0x278191[_0x7dc9('0x1a')];var _0x3b738a;if(_0x1f5906>=_0x4778d5){_0x1f5906=_0x4778d5;_0x3b738a=0xc8;}else{_0x3b738a=0xce;}_0x3a54f2[_0x7dc9('0x16')](_0x3b738a);return _0x3a54f2[_0x7dc9('0x1c')](_0x7dc9('0x1d'),_0x22577e+'-'+_0x1f5906+'/'+_0x4778d5)[_0x7dc9('0x1e')](_0x1b0aa1);}return null;};}function patchUpdates(_0x2dad65){return function(_0x2895f5){try{jsonpatch[_0x7dc9('0x1f')](_0x2895f5,_0x2dad65,!![]);}catch(_0x2b38d6){return BPromise['reject'](_0x2b38d6);}return _0x2895f5['save']();};}function saveUpdates(_0x12954f,_0x5981e2){return function(_0x596e0f){if(_0x596e0f){return _0x596e0f[_0x7dc9('0x20')](_0x12954f)[_0x7dc9('0x21')](function(_0x5e9525){return _0x5e9525;});}return null;};}function removeEntity(_0xffc080,_0x43d31f){return function(_0x41110a){if(_0x41110a){return _0x41110a['destroy']()[_0x7dc9('0x21')](function(){_0xffc080[_0x7dc9('0x16')](0xcc)[_0x7dc9('0x17')]();});}};}function handleEntityNotFound(_0x55a482,_0x48c6bc){return function(_0x4b9ba6){if(!_0x4b9ba6){_0x55a482[_0x7dc9('0x22')](0x194);}return _0x4b9ba6;};}function handleError(_0x32d032,_0x5843bf){_0x5843bf=_0x5843bf||0x1f4;return function(_0x585eef){logger[_0x7dc9('0x23')](_0x585eef['stack']);if(_0x585eef[_0x7dc9('0x24')]){delete _0x585eef[_0x7dc9('0x24')];}_0x32d032[_0x7dc9('0x16')](_0x5843bf)[_0x7dc9('0x25')](_0x585eef);};}exports[_0x7dc9('0x26')]=function(_0x450124,_0x236d42){var _0x229f8e={},_0x1fcf0e={},_0x3c4379={'count':0x0,'rows':[]};var _0x14083d=_[_0x7dc9('0x27')](db['ScreenRecording']['rawAttributes'],function(_0x513dd6){return{'name':_0x513dd6['fieldName'],'type':_0x513dd6['type']['key']};});_0x1fcf0e['model']=_['differenceBy'](_[_0x7dc9('0x27')](_0x14083d,_0x7dc9('0x24')),[_0x7dc9('0x28')]);_0x1fcf0e[_0x7dc9('0x29')]=_[_0x7dc9('0x2a')](_0x450124[_0x7dc9('0x29')]);_0x1fcf0e['filters']=_['intersection'](_0x1fcf0e['model'],_0x1fcf0e[_0x7dc9('0x29')]);_0x229f8e['attributes']=_[_0x7dc9('0x2b')](_0x1fcf0e[_0x7dc9('0x2c')],qs[_0x7dc9('0x2d')](_0x450124[_0x7dc9('0x29')][_0x7dc9('0x2d')]));_0x229f8e[_0x7dc9('0x2e')]=_0x229f8e[_0x7dc9('0x2e')][_0x7dc9('0x2f')]?_0x229f8e['attributes']:_0x1fcf0e[_0x7dc9('0x2c')];if(!_0x450124['query'][_0x7dc9('0x30')](_0x7dc9('0x31'))){_0x229f8e[_0x7dc9('0x1a')]=qs[_0x7dc9('0x1a')](_0x450124['query'][_0x7dc9('0x1a')]);_0x229f8e['offset']=qs[_0x7dc9('0x18')](_0x450124['query']['offset']);}_0x229f8e[_0x7dc9('0x32')]=qs[_0x7dc9('0x33')](_0x450124[_0x7dc9('0x29')][_0x7dc9('0x33')]);_0x229f8e['where']=qs[_0x7dc9('0x34')](_[_0x7dc9('0x35')](_0x450124[_0x7dc9('0x29')],_0x1fcf0e[_0x7dc9('0x34')]),_0x14083d);if(_0x450124[_0x7dc9('0x29')][_0x7dc9('0x36')]){_0x229f8e[_0x7dc9('0x37')]=_[_0x7dc9('0x38')](_0x229f8e[_0x7dc9('0x37')],{'$or':_[_0x7dc9('0x27')](_0x14083d,function(_0x452aed){if(_0x452aed[_0x7dc9('0x39')]!=='VIRTUAL'){var _0x34b5c9={};_0x34b5c9[_0x452aed[_0x7dc9('0x24')]]={'$like':'%'+_0x450124[_0x7dc9('0x29')][_0x7dc9('0x36')]+'%'};return _0x34b5c9;}})});}_0x229f8e=_['merge']({},_0x229f8e,_0x450124[_0x7dc9('0x3a')]);var _0x89db0e={'where':_0x229f8e[_0x7dc9('0x37')]};return db[_0x7dc9('0x3b')][_0x7dc9('0x1b')](_0x89db0e)[_0x7dc9('0x21')](function(_0x5a1201){_0x3c4379['count']=_0x5a1201;if(_0x450124[_0x7dc9('0x29')][_0x7dc9('0x3c')]){_0x229f8e['include']=[{'all':!![]}];}return db[_0x7dc9('0x3b')]['findAll'](_0x229f8e);})[_0x7dc9('0x21')](function(_0x2a91fe){_0x3c4379[_0x7dc9('0x3d')]=_0x2a91fe;return _0x3c4379;})['then'](respondWithFilteredResult(_0x236d42,_0x229f8e))[_0x7dc9('0x3e')](handleError(_0x236d42,null));};exports[_0x7dc9('0x3f')]=function(_0x1929b6,_0x95513c){var _0x28ffc0={'raw':![],'where':{'id':_0x1929b6[_0x7dc9('0x40')]['id']}},_0x23499a={};_0x23499a['model']=_[_0x7dc9('0x2a')](db['ScreenRecording']['rawAttributes']);_0x23499a[_0x7dc9('0x29')]=_[_0x7dc9('0x2a')](_0x1929b6[_0x7dc9('0x29')]);_0x23499a[_0x7dc9('0x34')]=_[_0x7dc9('0x2b')](_0x23499a[_0x7dc9('0x2c')],_0x23499a[_0x7dc9('0x29')]);_0x28ffc0[_0x7dc9('0x2e')]=_[_0x7dc9('0x2b')](_0x23499a['model'],qs[_0x7dc9('0x2d')](_0x1929b6[_0x7dc9('0x29')][_0x7dc9('0x2d')]));_0x28ffc0[_0x7dc9('0x2e')]=_0x28ffc0[_0x7dc9('0x2e')][_0x7dc9('0x2f')]?_0x28ffc0['attributes']:_0x23499a[_0x7dc9('0x2c')];if(_0x1929b6[_0x7dc9('0x29')]['includeAll']){_0x28ffc0[_0x7dc9('0x41')]=[{'all':!![]}];}_0x28ffc0=_[_0x7dc9('0x38')]({},_0x28ffc0,_0x1929b6[_0x7dc9('0x3a')]);return db['ScreenRecording'][_0x7dc9('0x42')](_0x28ffc0)['then'](handleEntityNotFound(_0x95513c,null))['then'](respondWithResult(_0x95513c,null))[_0x7dc9('0x3e')](handleError(_0x95513c,null));};exports[_0x7dc9('0x43')]=function(_0x36d591,_0x5e0dc5){return db['ScreenRecording'][_0x7dc9('0x43')](_0x36d591['body'],{})[_0x7dc9('0x21')](respondWithResult(_0x5e0dc5,0xc9))[_0x7dc9('0x3e')](handleError(_0x5e0dc5,null));};exports['update']=function(_0x24ccce,_0x1d6c0a){if(_0x24ccce[_0x7dc9('0x44')]['id']){delete _0x24ccce[_0x7dc9('0x44')]['id'];}delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x45')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x46')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x47')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x48')];return db[_0x7dc9('0x3b')]['find']({'where':{'id':_0x24ccce[_0x7dc9('0x40')]['id']}})['then'](handleEntityNotFound(_0x1d6c0a,null))['then'](saveUpdates(_0x24ccce[_0x7dc9('0x44')],null))[_0x7dc9('0x21')](respondWithResult(_0x1d6c0a,null))[_0x7dc9('0x3e')](handleError(_0x1d6c0a,null));};exports[_0x7dc9('0x49')]=function(_0x346d27,_0x510e2a){return db[_0x7dc9('0x3b')][_0x7dc9('0x49')]()[_0x7dc9('0x21')](respondWithResult(_0x510e2a,null))['catch'](handleError(_0x510e2a,null));};exports[_0x7dc9('0x4a')]=function(_0x3fc164,_0x2cf133,_0x32bc31){var _0xf41b8c=require(_0x7dc9('0x4b'));var _0x593132=![];var _0x366b8b={};if(_0x3fc164[_0x7dc9('0x29')][_0x7dc9('0x39')]&&_0x3fc164[_0x7dc9('0x29')][_0x7dc9('0x39')]===_0x7dc9('0x4c')){_0x366b8b[_0x7dc9('0x4c')]=_0x3fc164[_0x7dc9('0x40')]['id'];}else{_0x366b8b['id']=_0x3fc164[_0x7dc9('0x40')]['id'];}return db[_0x7dc9('0x3b')][_0x7dc9('0x42')]({'where':_0x366b8b,'attributes':['id',_0x7dc9('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x2cf133,null))[_0x7dc9('0x21')](function(_0x39be46){if(_0x39be46){var _0x38df9a=path[_0x7dc9('0x4d')](config[_0x7dc9('0x4e')],'server/files/screen_recordings',_0x39be46[_0x7dc9('0x48')]);var _0xd8d327=util[_0x7dc9('0x28')](_0x7dc9('0x4f'),_0x38df9a);if(fs[_0x7dc9('0x50')](_0xd8d327)){_0x593132=!![];return _0xf41b8c[_0x7dc9('0x51')](_0xd8d327,_0x38df9a,config['secrets']['recording'])['then'](function(){return _0x39be46;});}return _0x39be46;}})[_0x7dc9('0x21')](function(_0x3daf33){if(_0x3daf33){var _0x32a64f=path[_0x7dc9('0x4d')](config['root'],'server/files/screen_recordings',_0x3daf33[_0x7dc9('0x48')]);if(!fs[_0x7dc9('0x50')](_0x32a64f)){throw new db[(_0x7dc9('0x52'))][(_0x7dc9('0x53'))](_0x7dc9('0x54'));}if(_0x3daf33[_0x7dc9('0x55')]){return _0x2cf133[_0x7dc9('0x4a')](_0x32a64f,_0x3daf33['filename']+path[_0x7dc9('0x56')](_0x32a64f),function(){if(_0x593132){fs[_0x7dc9('0x57')](_0x32a64f);}});}else{return _0x2cf133[_0x7dc9('0x4a')](_0x32a64f,function(_0x1dad95){if(_0x593132){fs[_0x7dc9('0x57')](_0x32a64f);}});}}})['catch'](function(_0x175858){if(_0x175858[_0x7dc9('0x58')]===_0x7dc9('0x54')){_0x2cf133[_0x7dc9('0x16')](0x194)[_0x7dc9('0x25')](_0x7dc9('0x59'));}else{return handleError(_0x2cf133,null);}});};exports[_0x7dc9('0x5a')]=function(_0x2a02ed,_0x3463e4){return db[_0x7dc9('0x3b')][_0x7dc9('0x42')]({'where':{'id':_0x2a02ed[_0x7dc9('0x40')]['id']}})[_0x7dc9('0x21')](function(_0x5eee27){if(_[_0x7dc9('0x5b')](_0x5eee27)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5eee27;})[_0x7dc9('0x21')](function(_0x15cf19){var _0x48ea37=path[_0x7dc9('0x4d')](config[_0x7dc9('0x4e')],'server/files/screen_recordings',_0x15cf19[_0x7dc9('0x48')]);logger[_0x7dc9('0x5c')](_0x7dc9('0x5d'),_0x48ea37);if(!_['isNil'](_0x15cf19['value'])&&fs[_0x7dc9('0x50')](_0x48ea37)){logger[_0x7dc9('0x5c')](_0x7dc9('0x5e')+_0x48ea37+_0x7dc9('0x5f'));fs[_0x7dc9('0x60')](_0x48ea37);}_0x48ea37=_0x48ea37+_0x7dc9('0x61');if(!_[_0x7dc9('0x5b')](_0x15cf19[_0x7dc9('0x48')])&&fs[_0x7dc9('0x50')](_0x48ea37)){logger['info'](_0x7dc9('0x5e')+_0x48ea37+_0x7dc9('0x5f'));fs[_0x7dc9('0x60')](_0x48ea37);}return _0x15cf19;})['then'](function(_0x4f80bd){if(!_0x4f80bd)throw new InternalError();return _0x4f80bd[_0x7dc9('0x5a')]();})[_0x7dc9('0x21')](function(){_0x3463e4[_0x7dc9('0x16')](0xcc)[_0x7dc9('0x17')]();})['catch'](handleError(_0x3463e4,null));};
\ No newline at end of file
index 78f00fa..11d7f0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eee=['../../config/environment','./screenRecording.attributes','exports','screen_recordings','interactionid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1633ef,_0x5bb4d6){var _0x194fb4=function(_0x5755fe){while(--_0x5755fe){_0x1633ef['push'](_0x1633ef['shift']());}};_0x194fb4(++_0x5bb4d6);}(_0x6eee,0xe2));var _0xe6ee=function(_0x2d1d70,_0x4b61dc){_0x2d1d70=_0x2d1d70-0x0;var _0x48e486=_0x6eee[_0x2d1d70];return _0x48e486;};'use strict';var _=require(_0xe6ee('0x0'));var util=require(_0xe6ee('0x1'));var logger=require('../../config/logger')(_0xe6ee('0x2'));var moment=require(_0xe6ee('0x3'));var BPromise=require(_0xe6ee('0x4'));var rp=require(_0xe6ee('0x5'));var fs=require('fs');var path=require(_0xe6ee('0x6'));var rimraf=require(_0xe6ee('0x7'));var config=require(_0xe6ee('0x8'));var attributes=require(_0xe6ee('0x9'));module[_0xe6ee('0xa')]=function(_0x328d39,_0x5e03c7){return _0x328d39['define']('ScreenRecording',attributes,{'tableName':_0xe6ee('0xb'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xe6ee('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x30cc=['ScreenRecording','screen_recordings','interactionid','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2c3416,_0x488f22){var _0x38c4d6=function(_0x241b6a){while(--_0x241b6a){_0x2c3416['push'](_0x2c3416['shift']());}};_0x38c4d6(++_0x488f22);}(_0x30cc,0x142));var _0xc30c=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x30cc[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0xc30c('0x0'));var util=require('util');var logger=require(_0xc30c('0x1'))('api');var moment=require(_0xc30c('0x2'));var BPromise=require(_0xc30c('0x3'));var rp=require(_0xc30c('0x4'));var fs=require('fs');var path=require(_0xc30c('0x5'));var rimraf=require(_0xc30c('0x6'));var config=require(_0xc30c('0x7'));var attributes=require('./screenRecording.attributes');module['exports']=function(_0x3f4a0d,_0x28f76d){return _0x3f4a0d['define'](_0xc30c('0x8'),attributes,{'tableName':_0xc30c('0x9'),'paranoid':![],'indexes':[{'name':_0xc30c('0xa'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index d21a7e4..66aa728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6779=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','then','info','request\x20sent','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','ScreenRecording,\x20%s,\x20%s','message','result','catch','lodash'];(function(_0x1c251a,_0x5e0ed2){var _0x153ac8=function(_0x1bd56b){while(--_0x1bd56b){_0x1c251a['push'](_0x1c251a['shift']());}};_0x153ac8(++_0x5e0ed2);}(_0x6779,0x117));var _0x9677=function(_0xcce097,_0x34c5dd){_0xcce097=_0xcce097-0x0;var _0x2c339f=_0x6779[_0xcce097];return _0x2c339f;};'use strict';var _=require(_0x9677('0x0'));var util=require('util');var moment=require(_0x9677('0x1'));var BPromise=require(_0x9677('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9677('0x3'));var db=require(_0x9677('0x4'))['db'];var utils=require(_0x9677('0x5'));var logger=require(_0x9677('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9677('0x7'));var client=jayson[_0x9677('0x8')][_0x9677('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3cf2f5,_0x1d0058,_0x37dca0){return new BPromise(function(_0x183b63,_0x3005a3){return client['request'](_0x3cf2f5,_0x37dca0)[_0x9677('0xa')](function(_0x273726){logger[_0x9677('0xb')]('ScreenRecording,\x20%s,\x20%s',_0x1d0058,_0x9677('0xc'));logger['debug'](_0x9677('0xd'),_0x1d0058,_0x9677('0xc'),JSON[_0x9677('0xe')](_0x273726));if(_0x273726[_0x9677('0xf')]){if(_0x273726[_0x9677('0xf')]['code']===0x1f4){logger[_0x9677('0xf')](_0x9677('0x10'),_0x1d0058,_0x273726['error'][_0x9677('0x11')]);return _0x3005a3(_0x273726[_0x9677('0xf')][_0x9677('0x11')]);}logger['error']('ScreenRecording,\x20%s,\x20%s',_0x1d0058,_0x273726[_0x9677('0xf')]['message']);return _0x183b63(_0x273726['error']['message']);}else{logger[_0x9677('0xb')](_0x9677('0x10'),_0x1d0058,'request\x20sent');_0x183b63(_0x273726[_0x9677('0x12')]['message']);}})[_0x9677('0x13')](function(_0x1b6fde){logger[_0x9677('0xf')](_0x9677('0x10'),_0x1d0058,_0x1b6fde);_0x3005a3(_0x1b6fde);});});}
\ No newline at end of file
+var _0xdd26=['jayson/promise','client','http','request','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xdd26,0x151));var _0x6dd2=function(_0x29d8b9,_0x226fc8){_0x29d8b9=_0x29d8b9-0x0;var _0x4a10c3=_0xdd26[_0x29d8b9];return _0x4a10c3;};'use strict';var _=require(_0x6dd2('0x0'));var util=require(_0x6dd2('0x1'));var moment=require(_0x6dd2('0x2'));var BPromise=require(_0x6dd2('0x3'));var rs=require(_0x6dd2('0x4'));var fs=require('fs');var Redis=require(_0x6dd2('0x5'));var db=require(_0x6dd2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6dd2('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6dd2('0x8'));var client=jayson[_0x6dd2('0x9')][_0x6dd2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x19ca1c,_0x1a2a81,_0x282424){return new BPromise(function(_0x39268d,_0x538934){return client[_0x6dd2('0xb')](_0x19ca1c,_0x282424)['then'](function(_0x1a0e53){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x1a2a81,_0x6dd2('0xc'));logger[_0x6dd2('0xd')](_0x6dd2('0xe'),_0x1a2a81,_0x6dd2('0xc'),JSON[_0x6dd2('0xf')](_0x1a0e53));if(_0x1a0e53[_0x6dd2('0x10')]){if(_0x1a0e53['error'][_0x6dd2('0x11')]===0x1f4){logger[_0x6dd2('0x10')](_0x6dd2('0x12'),_0x1a2a81,_0x1a0e53[_0x6dd2('0x10')][_0x6dd2('0x13')]);return _0x538934(_0x1a0e53[_0x6dd2('0x10')][_0x6dd2('0x13')]);}logger['error'](_0x6dd2('0x12'),_0x1a2a81,_0x1a0e53[_0x6dd2('0x10')][_0x6dd2('0x13')]);return _0x39268d(_0x1a0e53[_0x6dd2('0x10')]['message']);}else{logger[_0x6dd2('0x14')](_0x6dd2('0x12'),_0x1a2a81,_0x6dd2('0xc'));_0x39268d(_0x1a0e53[_0x6dd2('0x15')][_0x6dd2('0x13')]);}})[_0x6dd2('0x16')](function(_0x12072a){logger[_0x6dd2('0x10')]('ScreenRecording,\x20%s,\x20%s',_0x1a2a81,_0x12072a);_0x538934(_0x12072a);});});}
\ No newline at end of file
index 7a9da4f..21f040d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe225=['getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','originalname','post','/:id/logo','single','file','extname','addLogoLogin','preferred','addFavicon','/:id','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','getDate','show','getLogo','/:id/logo_login'];(function(_0x261e29,_0x10fffd){var _0x25ef43=function(_0x21b8e7){while(--_0x21b8e7){_0x261e29['push'](_0x261e29['shift']());}};_0x25ef43(++_0x10fffd);}(_0xe225,0x19e));var _0x5e22=function(_0x1e4d78,_0x4460cd){_0x1e4d78=_0x1e4d78-0x0;var _0x595a6b=_0xe225[_0x1e4d78];return _0x595a6b;};'use strict';var multer=require(_0x5e22('0x0'));var util=require('util');var path=require(_0x5e22('0x1'));var timeout=require(_0x5e22('0x2'));var express=require('express');var router=express[_0x5e22('0x3')]();var fs_extra=require(_0x5e22('0x4'));var auth=require(_0x5e22('0x5'));var interaction=require(_0x5e22('0x6'));var config=require(_0x5e22('0x7'));var controller=require(_0x5e22('0x8'));router[_0x5e22('0x9')]('/',auth[_0x5e22('0xa')](),controller['index']);router[_0x5e22('0x9')]('/now',controller[_0x5e22('0xb')]);router[_0x5e22('0x9')]('/:id',controller[_0x5e22('0xc')]);router[_0x5e22('0x9')]('/:id/logo',controller[_0x5e22('0xd')]);router[_0x5e22('0x9')](_0x5e22('0xe'),controller[_0x5e22('0xf')]);router['get'](_0x5e22('0x10'),controller[_0x5e22('0x11')]);router[_0x5e22('0x9')](_0x5e22('0x12'),controller[_0x5e22('0x13')]);router[_0x5e22('0x9')](_0x5e22('0x14'),controller['getFavicon']);var upload=multer({'storage':multer[_0x5e22('0x15')]({'destination':function(_0xf779eb,_0x15ee25,_0x342116){_0x342116(null,path[_0x5e22('0x16')](config[_0x5e22('0x17')],_0x5e22('0x18')));},'filename':function(_0x5b6a51,_0x3943fa,_0x1e2f8e){_0x1e2f8e(null,util[_0x5e22('0x19')](_0x5e22('0x1a'),_0x5e22('0x1b'),path['extname'](_0x3943fa[_0x5e22('0x1c')])));}})});router[_0x5e22('0x1d')](_0x5e22('0x1e'),upload[_0x5e22('0x1f')](_0x5e22('0x20')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5d9f00,_0x4a030a,_0x3e7e5e){_0x3e7e5e(null,path[_0x5e22('0x16')](config[_0x5e22('0x17')],_0x5e22('0x18')));},'filename':function(_0x562364,_0x6e59bd,_0x23a9b7){_0x23a9b7(null,util[_0x5e22('0x19')](_0x5e22('0x1a'),'logologin',path[_0x5e22('0x21')](_0x6e59bd[_0x5e22('0x1c')])));}})});router[_0x5e22('0x1d')](_0x5e22('0xe'),upload['single'](_0x5e22('0x20')),controller[_0x5e22('0x22')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3e0ea1,_0x34e364,_0x4ed24a){_0x4ed24a(null,path[_0x5e22('0x16')](config[_0x5e22('0x17')],_0x5e22('0x18')));},'filename':function(_0x16c969,_0x2861fd,_0x89648){_0x89648(null,util['format'](_0x5e22('0x1a'),_0x5e22('0x23'),path['extname'](_0x2861fd[_0x5e22('0x1c')])));}})});router[_0x5e22('0x1d')](_0x5e22('0x12'),upload[_0x5e22('0x1f')](_0x5e22('0x20')),controller['addPreferred']);var upload=multer({'storage':multer[_0x5e22('0x15')]({'destination':function(_0x3d245f,_0x47fac5,_0x973a81){_0x973a81(null,path[_0x5e22('0x16')](config[_0x5e22('0x17')],_0x5e22('0x18')));},'filename':function(_0x1d6049,_0x1d30cf,_0x2f601d){_0x2f601d(null,util[_0x5e22('0x19')](_0x5e22('0x1a'),'favicon',path[_0x5e22('0x21')](_0x1d30cf[_0x5e22('0x1c')])));}})});router[_0x5e22('0x1d')]('/:id/favicon',upload['single'](_0x5e22('0x20')),controller[_0x5e22('0x24')]);router['put'](_0x5e22('0x25'),auth[_0x5e22('0xa')](),controller['update']);module[_0x5e22('0x26')]=router;
\ No newline at end of file
+var _0xc197=['gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','server/files/images/logos/','format','%s%s','extname','post','file','addLogo','logologin','originalname','single','root','preferred','/:id/preferred','addPreferred','favicon','addFavicon','put','isAuthenticated','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./setting.controller','get','index','/now','/:id','show','/:id/logo','/:id/logo_login','/:id/gdpr'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xc197,0x147));var _0x7c19=function(_0xa400e9,_0x39235d){_0xa400e9=_0xa400e9-0x0;var _0x4cf139=_0xc197[_0xa400e9];return _0x4cf139;};'use strict';var multer=require(_0x7c19('0x0'));var util=require('util');var path=require(_0x7c19('0x1'));var timeout=require(_0x7c19('0x2'));var express=require(_0x7c19('0x3'));var router=express[_0x7c19('0x4')]();var fs_extra=require(_0x7c19('0x5'));var auth=require(_0x7c19('0x6'));var interaction=require(_0x7c19('0x7'));var config=require('../../config/environment');var controller=require(_0x7c19('0x8'));router[_0x7c19('0x9')]('/',auth['isAuthenticated'](),controller[_0x7c19('0xa')]);router[_0x7c19('0x9')](_0x7c19('0xb'),controller['getDate']);router[_0x7c19('0x9')](_0x7c19('0xc'),controller[_0x7c19('0xd')]);router[_0x7c19('0x9')](_0x7c19('0xe'),controller['getLogo']);router[_0x7c19('0x9')](_0x7c19('0xf'),controller['getLogoLogin']);router[_0x7c19('0x9')](_0x7c19('0x10'),controller[_0x7c19('0x11')]);router['get']('/:id/preferred',controller[_0x7c19('0x12')]);router[_0x7c19('0x9')](_0x7c19('0x13'),controller[_0x7c19('0x14')]);var upload=multer({'storage':multer[_0x7c19('0x15')]({'destination':function(_0x56323b,_0x344f0a,_0x1bfd95){_0x1bfd95(null,path[_0x7c19('0x16')](config['root'],_0x7c19('0x17')));},'filename':function(_0x2abb26,_0x2d7018,_0x31f35d){_0x31f35d(null,util[_0x7c19('0x18')](_0x7c19('0x19'),'logo',path[_0x7c19('0x1a')](_0x2d7018['originalname'])));}})});router[_0x7c19('0x1b')](_0x7c19('0xe'),upload['single'](_0x7c19('0x1c')),controller[_0x7c19('0x1d')]);var upload=multer({'storage':multer[_0x7c19('0x15')]({'destination':function(_0x21f3ec,_0x34ecc5,_0x23bdfb){_0x23bdfb(null,path['join'](config['root'],_0x7c19('0x17')));},'filename':function(_0x158a20,_0x4e32e9,_0x1725c6){_0x1725c6(null,util[_0x7c19('0x18')]('%s%s',_0x7c19('0x1e'),path[_0x7c19('0x1a')](_0x4e32e9[_0x7c19('0x1f')])));}})});router[_0x7c19('0x1b')](_0x7c19('0xf'),upload[_0x7c19('0x20')](_0x7c19('0x1c')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x7c19('0x15')]({'destination':function(_0xf59fce,_0x313b8c,_0x3d720e){_0x3d720e(null,path['join'](config[_0x7c19('0x21')],_0x7c19('0x17')));},'filename':function(_0x494cc2,_0x5e23eb,_0x48bfd6){_0x48bfd6(null,util[_0x7c19('0x18')](_0x7c19('0x19'),_0x7c19('0x22'),path[_0x7c19('0x1a')](_0x5e23eb[_0x7c19('0x1f')])));}})});router[_0x7c19('0x1b')](_0x7c19('0x23'),upload[_0x7c19('0x20')](_0x7c19('0x1c')),controller[_0x7c19('0x24')]);var upload=multer({'storage':multer[_0x7c19('0x15')]({'destination':function(_0xce896,_0x19548f,_0x326344){_0x326344(null,path['join'](config[_0x7c19('0x21')],_0x7c19('0x17')));},'filename':function(_0x40ba92,_0x438abe,_0x5c1f14){_0x5c1f14(null,util[_0x7c19('0x18')]('%s%s',_0x7c19('0x25'),path[_0x7c19('0x1a')](_0x438abe['originalname'])));}})});router[_0x7c19('0x1b')](_0x7c19('0x13'),upload[_0x7c19('0x20')](_0x7c19('0x1c')),controller[_0x7c19('0x26')]);router[_0x7c19('0x27')](_0x7c19('0xc'),auth[_0x7c19('0x28')](),controller[_0x7c19('0x29')]);module[_0x7c19('0x2a')]=router;
\ No newline at end of file
index ae1cf35..4c30fff 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(_0x2d4f59,_0x4e63de){var _0x2527a1=function(_0x3e0898){while(--_0x3e0898){_0x2d4f59['push'](_0x2d4f59['shift']());}};_0x2527a1(++_0x4e63de);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0x5acf09,_0x326ee4){var _0x3cf6b6=function(_0x443df2){while(--_0x443df2){_0x5acf09['push'](_0x5acf09['shift']());}};_0x3cf6b6(++_0x326ee4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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 2e898be..2ab8c70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['eml-format','rimraf','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','request','info','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','set','Content-Range','json','apply','save','then','destroy','sendStatus','stack','name','index','map','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','pick','filter','VIRTUAL','merge','Setting','count','includeAll','include','findAll','rows','show','params','rawAttributes','length','options','find','body','addLogo','file','addLogoLogin','loginLogo','filename','server/files/images/logos','getLicense','logo','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','toLower','root','default','upperFirst','custom','default_logo.svg','Sequelize','ValidationError','\x20not\x20found','download','../../config/license/util','preferred','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','send'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x0e85,0x7c));var _0x50e8=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x0e85[_0x5f3f88];return _0xd08119;};'use strict';var emlformat=require(_0x50e8('0x0'));var rimraf=require(_0x50e8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50e8('0x2'));var rp=require(_0x50e8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x50e8('0x4'));var path=require('path');var sox=require(_0x50e8('0x5'));var csv=require(_0x50e8('0x6'));var ejs=require(_0x50e8('0x7'));var fs=require('fs');var fs_extra=require(_0x50e8('0x8'));var _=require('lodash');var squel=require(_0x50e8('0x9'));var crypto=require(_0x50e8('0xa'));var jsforce=require(_0x50e8('0xb'));var deskjs=require(_0x50e8('0xc'));var toCsv=require(_0x50e8('0x6'));var querystring=require(_0x50e8('0xd'));var Papa=require('papaparse');var Redis=require(_0x50e8('0xe'));var authService=require(_0x50e8('0xf'));var qs=require(_0x50e8('0x10'));var as=require(_0x50e8('0x11'));var hardwareService=require(_0x50e8('0x12'));var logger=require(_0x50e8('0x13'))(_0x50e8('0x14'));var utils=require(_0x50e8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x50e8('0x16'))['db'];var jayson=require(_0x50e8('0x17'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3cb45c,_0x2abda1,_0x1a4c85,_0x473aa7){return new BPromise(function(_0x54efd3,_0x18596f){var _0x3149d4=_0x473aa7||client;return _0x3149d4[_0x50e8('0x18')](_0x3cb45c,_0x1a4c85)['then'](function(_0x5524a3){logger[_0x50e8('0x19')](_0x50e8('0x1a'),_0x2abda1,_0x50e8('0x1b'));logger[_0x50e8('0x1c')](_0x50e8('0x1d'),_0x2abda1,_0x50e8('0x1b'),JSON['stringify'](_0x5524a3));if(_0x5524a3['error']){if(_0x5524a3[_0x50e8('0x1e')][_0x50e8('0x1f')]===0x1f4){logger[_0x50e8('0x1e')](_0x50e8('0x1a'),_0x2abda1,_0x5524a3[_0x50e8('0x1e')][_0x50e8('0x20')]);return _0x18596f(_0x5524a3[_0x50e8('0x1e')]['message']);}logger[_0x50e8('0x1e')]('Setting,\x20%s,\x20%s',_0x2abda1,_0x5524a3[_0x50e8('0x1e')][_0x50e8('0x20')]);return _0x54efd3(_0x5524a3[_0x50e8('0x1e')][_0x50e8('0x20')]);}else{logger[_0x50e8('0x19')]('Setting,\x20%s,\x20%s',_0x2abda1,_0x50e8('0x1b'));_0x54efd3(_0x5524a3[_0x50e8('0x21')]['message']);}})[_0x50e8('0x22')](function(_0x41500f){logger['error'](_0x50e8('0x1a'),_0x2abda1,_0x41500f);_0x18596f(_0x41500f);});});}function respondWithStatusCode(_0xe7e56c,_0x4f56b7){_0x4f56b7=_0x4f56b7||0xcc;return function(_0x47a3d8){if(_0x47a3d8){return _0xe7e56c['sendStatus'](_0x4f56b7);}return _0xe7e56c[_0x50e8('0x23')](_0x4f56b7)[_0x50e8('0x24')]();};}function respondWithResult(_0x124402,_0x371a1f){_0x371a1f=_0x371a1f||0xc8;return function(_0xc2f832){if(_0xc2f832){return _0x124402[_0x50e8('0x23')](_0x371a1f)['json'](_0xc2f832);}};}function respondWithFilteredResult(_0x3a6442,_0x396611){return function(_0x4b3a09){if(_0x4b3a09){var _0x177201=typeof _0x396611[_0x50e8('0x25')]===_0x50e8('0x26')&&typeof _0x396611[_0x50e8('0x27')]==='undefined';var _0x1f5a6c=_0x4b3a09['count'];var _0x30fedf=_0x177201?0x0:_0x396611[_0x50e8('0x25')];var _0x42bbef=_0x177201?_0x4b3a09['count']:_0x396611[_0x50e8('0x25')]+_0x396611[_0x50e8('0x27')];var _0x1bed48;if(_0x42bbef>=_0x1f5a6c){_0x42bbef=_0x1f5a6c;_0x1bed48=0xc8;}else{_0x1bed48=0xce;}_0x3a6442[_0x50e8('0x23')](_0x1bed48);return _0x3a6442[_0x50e8('0x28')](_0x50e8('0x29'),_0x30fedf+'-'+_0x42bbef+'/'+_0x1f5a6c)[_0x50e8('0x2a')](_0x4b3a09);}return null;};}function patchUpdates(_0x54d81d){return function(_0x290fd2){try{jsonpatch[_0x50e8('0x2b')](_0x290fd2,_0x54d81d,!![]);}catch(_0x535c24){return BPromise['reject'](_0x535c24);}return _0x290fd2[_0x50e8('0x2c')]();};}function saveUpdates(_0x3543b2,_0x32db93){return function(_0x47ace2){if(_0x47ace2){return _0x47ace2['update'](_0x3543b2)[_0x50e8('0x2d')](function(_0x19e3cc){return _0x19e3cc;});}return null;};}function removeEntity(_0x5c2e04,_0x26b974){return function(_0x17c6a5){if(_0x17c6a5){return _0x17c6a5[_0x50e8('0x2e')]()[_0x50e8('0x2d')](function(){_0x5c2e04['status'](0xcc)[_0x50e8('0x24')]();});}};}function handleEntityNotFound(_0x4ec6ad,_0x3aec30){return function(_0x33fc5b){if(!_0x33fc5b){_0x4ec6ad[_0x50e8('0x2f')](0x194);}return _0x33fc5b;};}function handleError(_0x5e2c30,_0x306816){_0x306816=_0x306816||0x1f4;return function(_0x40f566){logger['error'](_0x40f566[_0x50e8('0x30')]);if(_0x40f566[_0x50e8('0x31')]){delete _0x40f566[_0x50e8('0x31')];}_0x5e2c30[_0x50e8('0x23')](_0x306816)['send'](_0x40f566);};}exports[_0x50e8('0x32')]=function(_0x40dbe8,_0x24d3ea){var _0x4e2a37={},_0x5e556c={},_0x3c7778={'count':0x0,'rows':[]};var _0x2d0ccf=_[_0x50e8('0x33')](db['Setting']['rawAttributes'],function(_0x5dff99){return{'name':_0x5dff99[_0x50e8('0x34')],'type':_0x5dff99[_0x50e8('0x35')][_0x50e8('0x36')]};});_0x5e556c[_0x50e8('0x37')]=_[_0x50e8('0x33')](_0x2d0ccf,_0x50e8('0x31'));_0x5e556c[_0x50e8('0x38')]=_[_0x50e8('0x39')](_0x40dbe8[_0x50e8('0x38')]);_0x5e556c[_0x50e8('0x3a')]=_['intersection'](_0x5e556c[_0x50e8('0x37')],_0x5e556c[_0x50e8('0x38')]);_0x4e2a37[_0x50e8('0x3b')]=_[_0x50e8('0x3c')](_0x5e556c['model'],qs[_0x50e8('0x3d')](_0x40dbe8[_0x50e8('0x38')][_0x50e8('0x3d')]));_0x4e2a37[_0x50e8('0x3b')]=_0x4e2a37[_0x50e8('0x3b')]['length']?_0x4e2a37['attributes']:_0x5e556c[_0x50e8('0x37')];if(!_0x40dbe8[_0x50e8('0x38')]['hasOwnProperty'](_0x50e8('0x3e'))){_0x4e2a37[_0x50e8('0x27')]=qs[_0x50e8('0x27')](_0x40dbe8[_0x50e8('0x38')][_0x50e8('0x27')]);_0x4e2a37[_0x50e8('0x25')]=qs[_0x50e8('0x25')](_0x40dbe8[_0x50e8('0x38')]['offset']);}_0x4e2a37[_0x50e8('0x3f')]=qs[_0x50e8('0x40')](_0x40dbe8[_0x50e8('0x38')][_0x50e8('0x40')]);_0x4e2a37['where']=qs[_0x50e8('0x3a')](_[_0x50e8('0x41')](_0x40dbe8[_0x50e8('0x38')],_0x5e556c[_0x50e8('0x3a')]),_0x2d0ccf);if(_0x40dbe8['query'][_0x50e8('0x42')]){_0x4e2a37['where']=_['merge'](_0x4e2a37['where'],{'$or':_[_0x50e8('0x33')](_0x2d0ccf,function(_0x30077f){if(_0x30077f['type']!==_0x50e8('0x43')){var _0x2007c4={};_0x2007c4[_0x30077f[_0x50e8('0x31')]]={'$like':'%'+_0x40dbe8[_0x50e8('0x38')][_0x50e8('0x42')]+'%'};return _0x2007c4;}})});}_0x4e2a37=_[_0x50e8('0x44')]({},_0x4e2a37,_0x40dbe8['options']);var _0x16fdf6={'where':_0x4e2a37['where']};return db[_0x50e8('0x45')][_0x50e8('0x46')](_0x16fdf6)['then'](function(_0xcac7c2){_0x3c7778['count']=_0xcac7c2;if(_0x40dbe8[_0x50e8('0x38')][_0x50e8('0x47')]){_0x4e2a37[_0x50e8('0x48')]=[{'all':!![]}];}return db[_0x50e8('0x45')][_0x50e8('0x49')](_0x4e2a37);})[_0x50e8('0x2d')](function(_0x229d60){_0x3c7778[_0x50e8('0x4a')]=_0x229d60;return _0x3c7778;})[_0x50e8('0x2d')](respondWithFilteredResult(_0x24d3ea,_0x4e2a37))[_0x50e8('0x22')](handleError(_0x24d3ea,null));};exports[_0x50e8('0x4b')]=function(_0x49bfa8,_0x179f6b){var _0x275a1b={'raw':![],'where':{'id':_0x49bfa8[_0x50e8('0x4c')]['id']}},_0x479431={};_0x479431['model']=_[_0x50e8('0x39')](db['Setting'][_0x50e8('0x4d')]);_0x479431[_0x50e8('0x38')]=_[_0x50e8('0x39')](_0x49bfa8[_0x50e8('0x38')]);_0x479431[_0x50e8('0x3a')]=_[_0x50e8('0x3c')](_0x479431[_0x50e8('0x37')],_0x479431['query']);_0x275a1b[_0x50e8('0x3b')]=_[_0x50e8('0x3c')](_0x479431[_0x50e8('0x37')],qs[_0x50e8('0x3d')](_0x49bfa8[_0x50e8('0x38')][_0x50e8('0x3d')]));_0x275a1b['attributes']=_0x275a1b[_0x50e8('0x3b')][_0x50e8('0x4e')]?_0x275a1b[_0x50e8('0x3b')]:_0x479431[_0x50e8('0x37')];if(_0x49bfa8['query'][_0x50e8('0x47')]){_0x275a1b[_0x50e8('0x48')]=[{'all':!![]}];}_0x275a1b=_[_0x50e8('0x44')]({},_0x275a1b,_0x49bfa8[_0x50e8('0x4f')]);return db[_0x50e8('0x45')][_0x50e8('0x50')](_0x275a1b)[_0x50e8('0x2d')](handleEntityNotFound(_0x179f6b,null))['then'](respondWithResult(_0x179f6b,null))['catch'](handleError(_0x179f6b,null));};exports['update']=function(_0x2b54ad,_0x1400e7){if(_0x2b54ad[_0x50e8('0x51')]['id']){delete _0x2b54ad[_0x50e8('0x51')]['id'];}return db[_0x50e8('0x45')][_0x50e8('0x50')]({'where':{'id':_0x2b54ad['params']['id']}})[_0x50e8('0x2d')](handleEntityNotFound(_0x1400e7,null))[_0x50e8('0x2d')](saveUpdates(_0x2b54ad[_0x50e8('0x51')],null))[_0x50e8('0x2d')](respondWithResult(_0x1400e7,null))['catch'](handleError(_0x1400e7,null));};exports[_0x50e8('0x52')]=function(_0xf773fd,_0x373b41,_0x1cc5ba){if(_0xf773fd[_0x50e8('0x53')]&&_0xf773fd[_0x50e8('0x53')]['filename']){_0xf773fd[_0x50e8('0x51')]['logo']=_0xf773fd['file']['filename'];}return db[_0x50e8('0x45')]['find']({'where':{'id':_0xf773fd[_0x50e8('0x4c')]['id']}})[_0x50e8('0x2d')](handleEntityNotFound(_0x373b41,null))[_0x50e8('0x2d')](saveUpdates(_0xf773fd[_0x50e8('0x51')],null))[_0x50e8('0x2d')](respondWithResult(_0x373b41,null))[_0x50e8('0x22')](handleError(_0x373b41,null));};exports[_0x50e8('0x54')]=function(_0x59cdf2,_0x26ab46,_0x42f1ed){if(_0x59cdf2[_0x50e8('0x53')]&&_0x59cdf2['file']['filename']){_0x59cdf2['body'][_0x50e8('0x55')]=_0x59cdf2[_0x50e8('0x53')][_0x50e8('0x56')];}return db[_0x50e8('0x45')][_0x50e8('0x50')]({'where':{'id':_0x59cdf2[_0x50e8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x26ab46,null))[_0x50e8('0x2d')](saveUpdates(_0x59cdf2['body'],null))[_0x50e8('0x2d')](respondWithResult(_0x26ab46,null))[_0x50e8('0x22')](handleError(_0x26ab46,null));};var utilLicense=require('../../config/license/util');exports['getLogo']=function(_0x51775a,_0x2eed72,_0x3588f0){var _0x5d1fc8=_0x50e8('0x57');var _0xb2d01a={'custom':![]};return utilLicense[_0x50e8('0x58')]()[_0x50e8('0x2d')](function(_0x71bf27){if(_0x71bf27){_0xb2d01a=_0x71bf27;}return db['Setting'][_0x50e8('0x50')]({'where':{'id':_0x51775a[_0x50e8('0x4c')]['id']},'attributes':[_0x50e8('0x59'),'loginLogo','preferred',_0x50e8('0x5a'),_0x50e8('0x5b'),_0x50e8('0x5c'),_0x50e8('0x5d'),_0x50e8('0x5e')],'raw':!![]});})[_0x50e8('0x2d')](handleEntityNotFound(_0x2eed72,null))['then'](function(_0x51ffae){if(_0x51ffae){var _0x127190=_0x51ffae['logo']&&fs[_0x50e8('0x5f')](path[_0x50e8('0x60')](config['root'],_0x5d1fc8,_[_0x50e8('0x61')](_0x51ffae['logo'])))?path['join'](config['root'],_0x5d1fc8,_[_0x50e8('0x61')](_0x51ffae[_0x50e8('0x59')])):path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x5d1fc8,_['toLower']('default_logo.svg'));var _0x25d89e=_0x50e8('0x63')+_[_0x50e8('0x64')](_0x50e8('0x59'));if(_0x51ffae[_0x25d89e]||!_0xb2d01a[_0x50e8('0x65')]){_0x127190=path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x5d1fc8,_[_0x50e8('0x61')](_0x50e8('0x66')));}if(!fs[_0x50e8('0x5f')](_0x127190)){throw new db[(_0x50e8('0x67'))][(_0x50e8('0x68'))](_[_0x50e8('0x64')](_0x50e8('0x59'))+_0x50e8('0x69'));}return _0x2eed72[_0x50e8('0x6a')](_0x127190);}})[_0x50e8('0x22')](handleError(_0x2eed72,null));};var utilLicense=require(_0x50e8('0x6b'));exports['getLogoLogin']=function(_0x35a382,_0x474978,_0xd9e82e){var _0x2359c2='server/files/images/logos';var _0x2e6992={'custom':![]};return utilLicense[_0x50e8('0x58')]()[_0x50e8('0x2d')](function(_0x161a07){if(_0x161a07){_0x2e6992=_0x161a07;}return db[_0x50e8('0x45')][_0x50e8('0x50')]({'where':{'id':_0x35a382['params']['id']},'attributes':[_0x50e8('0x59'),_0x50e8('0x55'),_0x50e8('0x6c'),_0x50e8('0x5a'),'defaultLogo',_0x50e8('0x5c'),'defaultPreferred',_0x50e8('0x5e')],'raw':!![]});})[_0x50e8('0x2d')](handleEntityNotFound(_0x474978,null))[_0x50e8('0x2d')](function(_0x1637b2){if(_0x1637b2){var _0x3b1aea=_0x1637b2['loginLogo']&&fs[_0x50e8('0x5f')](path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x2359c2,_[_0x50e8('0x61')](_0x1637b2[_0x50e8('0x55')])))?path[_0x50e8('0x60')](config['root'],_0x2359c2,_[_0x50e8('0x61')](_0x1637b2[_0x50e8('0x55')])):path['join'](config[_0x50e8('0x62')],_0x2359c2,_[_0x50e8('0x61')]('default_loginLogo.svg'));var _0x3d56e7='default'+_[_0x50e8('0x64')](_0x50e8('0x55'));if(_0x1637b2[_0x3d56e7]||!_0x2e6992['custom']){_0x3b1aea=path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x2359c2,_[_0x50e8('0x61')](_0x50e8('0x6d')));}if(!fs['existsSync'](_0x3b1aea)){throw new db[(_0x50e8('0x67'))]['ValidationError'](_[_0x50e8('0x64')](_0x50e8('0x55'))+'\x20not\x20found');}return _0x474978[_0x50e8('0x6a')](_0x3b1aea);}})[_0x50e8('0x22')](handleError(_0x474978,null));};exports[_0x50e8('0x6e')]=function(_0x2ea86b,_0x223355){return db[_0x50e8('0x45')][_0x50e8('0x50')]({'where':{'id':_0x2ea86b[_0x50e8('0x4c')]['id']},'attributes':[_0x50e8('0x6f')]})['then'](respondWithResult(_0x223355,null))[_0x50e8('0x22')](handleError(_0x223355,null));};exports[_0x50e8('0x70')]=function(_0x38c8ef,_0x5a79c4,_0x7d64e0){if(_0x38c8ef[_0x50e8('0x53')]&&_0x38c8ef[_0x50e8('0x53')]['filename']){_0x38c8ef['body'][_0x50e8('0x6c')]=_0x38c8ef[_0x50e8('0x53')]['filename'];}return db[_0x50e8('0x45')]['find']({'where':{'id':_0x38c8ef[_0x50e8('0x4c')]['id']}})[_0x50e8('0x2d')](handleEntityNotFound(_0x5a79c4,null))[_0x50e8('0x2d')](saveUpdates(_0x38c8ef[_0x50e8('0x51')],null))['then'](respondWithResult(_0x5a79c4,null))[_0x50e8('0x22')](handleError(_0x5a79c4,null));};var utilLicense=require('../../config/license/util');exports[_0x50e8('0x71')]=function(_0x51ea2a,_0x55d39f,_0x368d17){var _0x37429f='server/files/images/logos';var _0x18c2af={'custom':![]};return utilLicense['getLicense']()[_0x50e8('0x2d')](function(_0x585a79){if(_0x585a79){_0x18c2af=_0x585a79;}return db['Setting'][_0x50e8('0x50')]({'where':{'id':_0x51ea2a[_0x50e8('0x4c')]['id']},'attributes':[_0x50e8('0x59'),_0x50e8('0x55'),'preferred',_0x50e8('0x5a'),'defaultLogo','defaultLoginLogo',_0x50e8('0x5d'),_0x50e8('0x5e')],'raw':!![]});})[_0x50e8('0x2d')](handleEntityNotFound(_0x55d39f,null))['then'](function(_0x4f6906){if(_0x4f6906){var _0x4fe69f=_0x4f6906[_0x50e8('0x6c')]&&fs[_0x50e8('0x5f')](path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x37429f,_[_0x50e8('0x61')](_0x4f6906[_0x50e8('0x6c')])))?path['join'](config['root'],_0x37429f,_[_0x50e8('0x61')](_0x4f6906[_0x50e8('0x6c')])):path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x37429f,_[_0x50e8('0x61')]('default_preferred.png'));var _0x38a3da=_0x50e8('0x63')+_[_0x50e8('0x64')]('preferred');if(_0x4f6906[_0x38a3da]||!_0x18c2af['custom']||!_0x18c2af[_0x50e8('0x6c')]){_0x4fe69f=path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x37429f,_['toLower'](_0x50e8('0x72')));}if(!fs[_0x50e8('0x5f')](_0x4fe69f)){throw new db['Sequelize'][(_0x50e8('0x68'))](_['upperFirst'](_0x50e8('0x6c'))+_0x50e8('0x69'));}return _0x55d39f[_0x50e8('0x6a')](_0x4fe69f);}})[_0x50e8('0x22')](handleError(_0x55d39f,null));};exports[_0x50e8('0x73')]=function(_0x2f6815,_0x1c4f8f,_0x323e9f){if(_0x2f6815[_0x50e8('0x53')]&&_0x2f6815['file'][_0x50e8('0x56')]){_0x2f6815['body'][_0x50e8('0x5a')]=_0x2f6815[_0x50e8('0x53')][_0x50e8('0x56')];}return db[_0x50e8('0x45')][_0x50e8('0x50')]({'where':{'id':_0x2f6815[_0x50e8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1c4f8f,null))[_0x50e8('0x2d')](saveUpdates(_0x2f6815[_0x50e8('0x51')],null))[_0x50e8('0x2d')](respondWithResult(_0x1c4f8f,null))[_0x50e8('0x22')](handleError(_0x1c4f8f,null));};var utilLicense=require(_0x50e8('0x6b'));exports[_0x50e8('0x74')]=function(_0x4182f2,_0x5e399c,_0x1f576a){var _0x4253e8=_0x50e8('0x57');var _0xc55fb5={'custom':![]};return utilLicense[_0x50e8('0x58')]()[_0x50e8('0x2d')](function(_0x2cec01){if(_0x2cec01){_0xc55fb5=_0x2cec01;}return db[_0x50e8('0x45')]['find']({'where':{'id':_0x4182f2['params']['id']},'attributes':['logo',_0x50e8('0x55'),'preferred',_0x50e8('0x5a'),_0x50e8('0x5b'),_0x50e8('0x5c'),_0x50e8('0x5d'),_0x50e8('0x5e')],'raw':!![]});})[_0x50e8('0x2d')](handleEntityNotFound(_0x5e399c,null))[_0x50e8('0x2d')](function(_0x101d46){if(_0x101d46){var _0x351ece=_0x101d46[_0x50e8('0x5a')]&&fs[_0x50e8('0x5f')](path['join'](config[_0x50e8('0x62')],_0x4253e8,_[_0x50e8('0x61')](_0x101d46['favicon'])))?path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x4253e8,_[_0x50e8('0x61')](_0x101d46[_0x50e8('0x5a')])):path['join'](config[_0x50e8('0x62')],_0x4253e8,_[_0x50e8('0x61')]('default_favicon.ico'));var _0x20cdb1='default'+_[_0x50e8('0x64')](_0x50e8('0x5a'));if(_0x101d46[_0x20cdb1]||!_0xc55fb5[_0x50e8('0x65')]){_0x351ece=path[_0x50e8('0x60')](config[_0x50e8('0x62')],_0x4253e8,_[_0x50e8('0x61')](_0x50e8('0x75')));}if(!fs[_0x50e8('0x5f')](_0x351ece)){throw new db[(_0x50e8('0x67'))]['ValidationError'](_[_0x50e8('0x64')](_0x50e8('0x5a'))+_0x50e8('0x69'));}return _0x5e399c['download'](_0x351ece);}})[_0x50e8('0x22')](handleError(_0x5e399c,null));};exports[_0x50e8('0x76')]=function(_0xa8c6b2,_0x2850a1){var _0x5a4e02={'offset':moment()['utcOffset']()};_0x5a4e02[_0x50e8('0x77')]=moment()[_0x50e8('0x78')](_0x5a4e02[_0x50e8('0x25')])[_0x50e8('0x79')](_0x50e8('0x7a'));return _0x2850a1['status'](0xc8)[_0x50e8('0x7b')](_0x5a4e02);};
\ No newline at end of file
+var _0x1caa=['crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','Setting,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','reject','destroy','end','stack','name','send','index','map','Setting','fieldName','keys','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','includeAll','include','findAll','show','rawAttributes','find','update','body','params','addLogo','file','logo','addLogoLogin','filename','getLogo','server/files/images/logos','getLicense','loginLogo','favicon','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','custom','Sequelize','ValidationError','upperFirst','\x20not\x20found','download','getLogoLogin','defaultLogo','gdpr','securePassword','addPreferred','preferred','getPreferred','default','default_preferred.png','addFavicon','default_favicon.ico','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash'];(function(_0x266663,_0x508761){var _0x5b41ae=function(_0x1fa922){while(--_0x1fa922){_0x266663['push'](_0x266663['shift']());}};_0x5b41ae(++_0x508761);}(_0x1caa,0x15a));var _0xa1ca=function(_0x307099,_0x56471d){_0x307099=_0x307099-0x0;var _0x479a21=_0x1caa[_0x307099];return _0x479a21;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa1ca('0x0'));var zipdir=require(_0xa1ca('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa1ca('0x2'));var moment=require(_0xa1ca('0x3'));var BPromise=require(_0xa1ca('0x4'));var Mustache=require('mustache');var util=require(_0xa1ca('0x5'));var path=require(_0xa1ca('0x6'));var sox=require(_0xa1ca('0x7'));var csv=require('to-csv');var ejs=require(_0xa1ca('0x8'));var fs=require('fs');var fs_extra=require(_0xa1ca('0x9'));var _=require(_0xa1ca('0xa'));var squel=require('squel');var crypto=require(_0xa1ca('0xb'));var jsforce=require(_0xa1ca('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa1ca('0xd'));var Papa=require(_0xa1ca('0xe'));var Redis=require(_0xa1ca('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa1ca('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa1ca('0x11'))(_0xa1ca('0x12'));var utils=require(_0xa1ca('0x13'));var config=require(_0xa1ca('0x14'));var licenseUtil=require(_0xa1ca('0x15'));var db=require('../../mysqldb')['db'];var jayson=require(_0xa1ca('0x16'));var client=jayson[_0xa1ca('0x17')][_0xa1ca('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x3e0f20,_0x35d345,_0x32f5e8,_0x2bf2dd){return new BPromise(function(_0x134096,_0x2a36b1){var _0x18082b=_0x2bf2dd||client;return _0x18082b[_0xa1ca('0x19')](_0x3e0f20,_0x32f5e8)[_0xa1ca('0x1a')](function(_0x3899ef){logger[_0xa1ca('0x1b')](_0xa1ca('0x1c'),_0x35d345,'request\x20sent');logger['debug'](_0xa1ca('0x1d'),_0x35d345,'request\x20sent',JSON['stringify'](_0x3899ef));if(_0x3899ef[_0xa1ca('0x1e')]){if(_0x3899ef['error'][_0xa1ca('0x1f')]===0x1f4){logger['error'](_0xa1ca('0x1c'),_0x35d345,_0x3899ef['error']['message']);return _0x2a36b1(_0x3899ef['error'][_0xa1ca('0x20')]);}logger[_0xa1ca('0x1e')](_0xa1ca('0x1c'),_0x35d345,_0x3899ef['error']['message']);return _0x134096(_0x3899ef['error'][_0xa1ca('0x20')]);}else{logger[_0xa1ca('0x1b')]('Setting,\x20%s,\x20%s',_0x35d345,_0xa1ca('0x21'));_0x134096(_0x3899ef[_0xa1ca('0x22')][_0xa1ca('0x20')]);}})[_0xa1ca('0x23')](function(_0x13e425){logger[_0xa1ca('0x1e')]('Setting,\x20%s,\x20%s',_0x35d345,_0x13e425);_0x2a36b1(_0x13e425);});});}function respondWithStatusCode(_0x288689,_0x59ea00){_0x59ea00=_0x59ea00||0xcc;return function(_0x99d03c){if(_0x99d03c){return _0x288689[_0xa1ca('0x24')](_0x59ea00);}return _0x288689['status'](_0x59ea00)['end']();};}function respondWithResult(_0x4f014c,_0x420a0f){_0x420a0f=_0x420a0f||0xc8;return function(_0x239cdf){if(_0x239cdf){return _0x4f014c[_0xa1ca('0x25')](_0x420a0f)[_0xa1ca('0x26')](_0x239cdf);}};}function respondWithFilteredResult(_0x4e4550,_0x43abd7){return function(_0x169d7f){if(_0x169d7f){var _0x32c493=typeof _0x43abd7[_0xa1ca('0x27')]==='undefined'&&typeof _0x43abd7[_0xa1ca('0x28')]==='undefined';var _0x39070c=_0x169d7f[_0xa1ca('0x29')];var _0x48637c=_0x32c493?0x0:_0x43abd7[_0xa1ca('0x27')];var _0x1da9cf=_0x32c493?_0x169d7f[_0xa1ca('0x29')]:_0x43abd7[_0xa1ca('0x27')]+_0x43abd7[_0xa1ca('0x28')];var _0x1e7824;if(_0x1da9cf>=_0x39070c){_0x1da9cf=_0x39070c;_0x1e7824=0xc8;}else{_0x1e7824=0xce;}_0x4e4550[_0xa1ca('0x25')](_0x1e7824);return _0x4e4550[_0xa1ca('0x2a')](_0xa1ca('0x2b'),_0x48637c+'-'+_0x1da9cf+'/'+_0x39070c)[_0xa1ca('0x26')](_0x169d7f);}return null;};}function patchUpdates(_0x3c4737){return function(_0x3055d7){try{jsonpatch[_0xa1ca('0x2c')](_0x3055d7,_0x3c4737,!![]);}catch(_0x729096){return BPromise[_0xa1ca('0x2d')](_0x729096);}return _0x3055d7['save']();};}function saveUpdates(_0x358e9f,_0x29c5d1){return function(_0x2f7712){if(_0x2f7712){return _0x2f7712['update'](_0x358e9f)[_0xa1ca('0x1a')](function(_0xc435be){return _0xc435be;});}return null;};}function removeEntity(_0x54fb0f,_0x860060){return function(_0x991fae){if(_0x991fae){return _0x991fae[_0xa1ca('0x2e')]()[_0xa1ca('0x1a')](function(){_0x54fb0f[_0xa1ca('0x25')](0xcc)[_0xa1ca('0x2f')]();});}};}function handleEntityNotFound(_0xd8603f,_0xf22d2b){return function(_0x51454a){if(!_0x51454a){_0xd8603f[_0xa1ca('0x24')](0x194);}return _0x51454a;};}function handleError(_0x306670,_0x18ee29){_0x18ee29=_0x18ee29||0x1f4;return function(_0x34b630){logger[_0xa1ca('0x1e')](_0x34b630[_0xa1ca('0x30')]);if(_0x34b630[_0xa1ca('0x31')]){delete _0x34b630[_0xa1ca('0x31')];}_0x306670[_0xa1ca('0x25')](_0x18ee29)[_0xa1ca('0x32')](_0x34b630);};}exports[_0xa1ca('0x33')]=function(_0x3d7d16,_0x1cfc0d){var _0x3eaa55={},_0x5b418b={},_0x13653a={'count':0x0,'rows':[]};var _0x189a37=_[_0xa1ca('0x34')](db[_0xa1ca('0x35')]['rawAttributes'],function(_0x3b8035){return{'name':_0x3b8035[_0xa1ca('0x36')],'type':_0x3b8035['type']['key']};});_0x5b418b['model']=_[_0xa1ca('0x34')](_0x189a37,_0xa1ca('0x31'));_0x5b418b['query']=_[_0xa1ca('0x37')](_0x3d7d16[_0xa1ca('0x38')]);_0x5b418b[_0xa1ca('0x39')]=_['intersection'](_0x5b418b['model'],_0x5b418b[_0xa1ca('0x38')]);_0x3eaa55[_0xa1ca('0x3a')]=_[_0xa1ca('0x3b')](_0x5b418b[_0xa1ca('0x3c')],qs[_0xa1ca('0x3d')](_0x3d7d16[_0xa1ca('0x38')][_0xa1ca('0x3d')]));_0x3eaa55['attributes']=_0x3eaa55[_0xa1ca('0x3a')][_0xa1ca('0x3e')]?_0x3eaa55[_0xa1ca('0x3a')]:_0x5b418b['model'];if(!_0x3d7d16[_0xa1ca('0x38')][_0xa1ca('0x3f')](_0xa1ca('0x40'))){_0x3eaa55[_0xa1ca('0x28')]=qs[_0xa1ca('0x28')](_0x3d7d16[_0xa1ca('0x38')][_0xa1ca('0x28')]);_0x3eaa55['offset']=qs[_0xa1ca('0x27')](_0x3d7d16[_0xa1ca('0x38')]['offset']);}_0x3eaa55[_0xa1ca('0x41')]=qs[_0xa1ca('0x42')](_0x3d7d16['query'][_0xa1ca('0x42')]);_0x3eaa55['where']=qs[_0xa1ca('0x39')](_[_0xa1ca('0x43')](_0x3d7d16[_0xa1ca('0x38')],_0x5b418b[_0xa1ca('0x39')]),_0x189a37);if(_0x3d7d16['query']['filter']){_0x3eaa55[_0xa1ca('0x44')]=_[_0xa1ca('0x45')](_0x3eaa55[_0xa1ca('0x44')],{'$or':_[_0xa1ca('0x34')](_0x189a37,function(_0x419219){if(_0x419219['type']!=='VIRTUAL'){var _0x33a022={};_0x33a022[_0x419219[_0xa1ca('0x31')]]={'$like':'%'+_0x3d7d16[_0xa1ca('0x38')][_0xa1ca('0x46')]+'%'};return _0x33a022;}})});}_0x3eaa55=_['merge']({},_0x3eaa55,_0x3d7d16[_0xa1ca('0x47')]);var _0x3ceda5={'where':_0x3eaa55[_0xa1ca('0x44')]};return db[_0xa1ca('0x35')][_0xa1ca('0x29')](_0x3ceda5)['then'](function(_0x2c8f11){_0x13653a[_0xa1ca('0x29')]=_0x2c8f11;if(_0x3d7d16[_0xa1ca('0x38')][_0xa1ca('0x48')]){_0x3eaa55[_0xa1ca('0x49')]=[{'all':!![]}];}return db[_0xa1ca('0x35')][_0xa1ca('0x4a')](_0x3eaa55);})[_0xa1ca('0x1a')](function(_0x5dfa21){_0x13653a['rows']=_0x5dfa21;return _0x13653a;})[_0xa1ca('0x1a')](respondWithFilteredResult(_0x1cfc0d,_0x3eaa55))[_0xa1ca('0x23')](handleError(_0x1cfc0d,null));};exports[_0xa1ca('0x4b')]=function(_0x30c4e9,_0x41c7f3){var _0x1eb724={'raw':![],'where':{'id':_0x30c4e9['params']['id']}},_0x466c1c={};_0x466c1c[_0xa1ca('0x3c')]=_[_0xa1ca('0x37')](db['Setting'][_0xa1ca('0x4c')]);_0x466c1c[_0xa1ca('0x38')]=_[_0xa1ca('0x37')](_0x30c4e9[_0xa1ca('0x38')]);_0x466c1c[_0xa1ca('0x39')]=_[_0xa1ca('0x3b')](_0x466c1c['model'],_0x466c1c['query']);_0x1eb724[_0xa1ca('0x3a')]=_[_0xa1ca('0x3b')](_0x466c1c[_0xa1ca('0x3c')],qs[_0xa1ca('0x3d')](_0x30c4e9[_0xa1ca('0x38')][_0xa1ca('0x3d')]));_0x1eb724['attributes']=_0x1eb724[_0xa1ca('0x3a')][_0xa1ca('0x3e')]?_0x1eb724[_0xa1ca('0x3a')]:_0x466c1c['model'];if(_0x30c4e9['query'][_0xa1ca('0x48')]){_0x1eb724[_0xa1ca('0x49')]=[{'all':!![]}];}_0x1eb724=_[_0xa1ca('0x45')]({},_0x1eb724,_0x30c4e9[_0xa1ca('0x47')]);return db[_0xa1ca('0x35')][_0xa1ca('0x4d')](_0x1eb724)[_0xa1ca('0x1a')](handleEntityNotFound(_0x41c7f3,null))[_0xa1ca('0x1a')](respondWithResult(_0x41c7f3,null))[_0xa1ca('0x23')](handleError(_0x41c7f3,null));};exports[_0xa1ca('0x4e')]=function(_0x55fb1b,_0x48f470){if(_0x55fb1b['body']['id']){delete _0x55fb1b[_0xa1ca('0x4f')]['id'];}return db[_0xa1ca('0x35')][_0xa1ca('0x4d')]({'where':{'id':_0x55fb1b[_0xa1ca('0x50')]['id']}})[_0xa1ca('0x1a')](handleEntityNotFound(_0x48f470,null))['then'](saveUpdates(_0x55fb1b[_0xa1ca('0x4f')],null))[_0xa1ca('0x1a')](respondWithResult(_0x48f470,null))['catch'](handleError(_0x48f470,null));};exports[_0xa1ca('0x51')]=function(_0x438f20,_0x35b5eb,_0x4576b8){if(_0x438f20[_0xa1ca('0x52')]&&_0x438f20[_0xa1ca('0x52')]['filename']){_0x438f20[_0xa1ca('0x4f')][_0xa1ca('0x53')]=_0x438f20[_0xa1ca('0x52')]['filename'];}return db[_0xa1ca('0x35')]['find']({'where':{'id':_0x438f20[_0xa1ca('0x50')]['id']}})[_0xa1ca('0x1a')](handleEntityNotFound(_0x35b5eb,null))[_0xa1ca('0x1a')](saveUpdates(_0x438f20[_0xa1ca('0x4f')],null))[_0xa1ca('0x1a')](respondWithResult(_0x35b5eb,null))['catch'](handleError(_0x35b5eb,null));};exports[_0xa1ca('0x54')]=function(_0x163e67,_0x2a0c7a,_0x37d46a){if(_0x163e67['file']&&_0x163e67[_0xa1ca('0x52')]['filename']){_0x163e67['body']['loginLogo']=_0x163e67[_0xa1ca('0x52')][_0xa1ca('0x55')];}return db[_0xa1ca('0x35')][_0xa1ca('0x4d')]({'where':{'id':_0x163e67[_0xa1ca('0x50')]['id']}})[_0xa1ca('0x1a')](handleEntityNotFound(_0x2a0c7a,null))[_0xa1ca('0x1a')](saveUpdates(_0x163e67[_0xa1ca('0x4f')],null))[_0xa1ca('0x1a')](respondWithResult(_0x2a0c7a,null))[_0xa1ca('0x23')](handleError(_0x2a0c7a,null));};var utilLicense=require(_0xa1ca('0x15'));exports[_0xa1ca('0x56')]=function(_0x2e975e,_0x2748e9,_0x57fedd){var _0x3fbadc=_0xa1ca('0x57');var _0xe19002={'custom':![]};return utilLicense[_0xa1ca('0x58')]()[_0xa1ca('0x1a')](function(_0x4b5f25){if(_0x4b5f25){_0xe19002=_0x4b5f25;}return db[_0xa1ca('0x35')][_0xa1ca('0x4d')]({'where':{'id':_0x2e975e[_0xa1ca('0x50')]['id']},'attributes':[_0xa1ca('0x53'),_0xa1ca('0x59'),'preferred',_0xa1ca('0x5a'),'defaultLogo',_0xa1ca('0x5b'),_0xa1ca('0x5c'),_0xa1ca('0x5d')],'raw':!![]});})['then'](handleEntityNotFound(_0x2748e9,null))['then'](function(_0x1d8885){if(_0x1d8885){var _0x5482df=_0x1d8885['logo']&&fs[_0xa1ca('0x5e')](path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x3fbadc,_['toLower'](_0x1d8885[_0xa1ca('0x53')])))?path[_0xa1ca('0x5f')](config['root'],_0x3fbadc,_['toLower'](_0x1d8885[_0xa1ca('0x53')])):path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x3fbadc,_[_0xa1ca('0x61')](_0xa1ca('0x62')));var _0x3f414a='default'+_['upperFirst'](_0xa1ca('0x53'));if(_0x1d8885[_0x3f414a]||!_0xe19002[_0xa1ca('0x63')]){_0x5482df=path['join'](config[_0xa1ca('0x60')],_0x3fbadc,_[_0xa1ca('0x61')]('default_logo.svg'));}if(!fs[_0xa1ca('0x5e')](_0x5482df)){throw new db[(_0xa1ca('0x64'))][(_0xa1ca('0x65'))](_[_0xa1ca('0x66')]('logo')+_0xa1ca('0x67'));}return _0x2748e9[_0xa1ca('0x68')](_0x5482df);}})[_0xa1ca('0x23')](handleError(_0x2748e9,null));};var utilLicense=require('../../config/license/util');exports[_0xa1ca('0x69')]=function(_0x21cdf4,_0x207629,_0x4236b5){var _0x509542=_0xa1ca('0x57');var _0x146c98={'custom':![]};return utilLicense[_0xa1ca('0x58')]()['then'](function(_0x462d74){if(_0x462d74){_0x146c98=_0x462d74;}return db[_0xa1ca('0x35')][_0xa1ca('0x4d')]({'where':{'id':_0x21cdf4[_0xa1ca('0x50')]['id']},'attributes':[_0xa1ca('0x53'),_0xa1ca('0x59'),'preferred',_0xa1ca('0x5a'),_0xa1ca('0x6a'),_0xa1ca('0x5b'),'defaultPreferred',_0xa1ca('0x5d')],'raw':!![]});})['then'](handleEntityNotFound(_0x207629,null))['then'](function(_0x53a383){if(_0x53a383){var _0x2a3db8=_0x53a383[_0xa1ca('0x59')]&&fs[_0xa1ca('0x5e')](path['join'](config[_0xa1ca('0x60')],_0x509542,_['toLower'](_0x53a383[_0xa1ca('0x59')])))?path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x509542,_[_0xa1ca('0x61')](_0x53a383[_0xa1ca('0x59')])):path['join'](config[_0xa1ca('0x60')],_0x509542,_[_0xa1ca('0x61')]('default_loginLogo.svg'));var _0x1e749a='default'+_['upperFirst']('loginLogo');if(_0x53a383[_0x1e749a]||!_0x146c98[_0xa1ca('0x63')]){_0x2a3db8=path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x509542,_[_0xa1ca('0x61')]('default_loginLogo.svg'));}if(!fs[_0xa1ca('0x5e')](_0x2a3db8)){throw new db[(_0xa1ca('0x64'))]['ValidationError'](_[_0xa1ca('0x66')]('loginLogo')+_0xa1ca('0x67'));}return _0x207629['download'](_0x2a3db8);}})[_0xa1ca('0x23')](handleError(_0x207629,null));};exports[_0xa1ca('0x6b')]=function(_0x472eac,_0x3a16c4){return db[_0xa1ca('0x35')][_0xa1ca('0x4d')]({'where':{'id':_0x472eac['params']['id']},'attributes':[_0xa1ca('0x6c')]})[_0xa1ca('0x1a')](respondWithResult(_0x3a16c4,null))[_0xa1ca('0x23')](handleError(_0x3a16c4,null));};exports[_0xa1ca('0x6d')]=function(_0x2e5083,_0x354472,_0x423f9d){if(_0x2e5083['file']&&_0x2e5083[_0xa1ca('0x52')][_0xa1ca('0x55')]){_0x2e5083[_0xa1ca('0x4f')][_0xa1ca('0x6e')]=_0x2e5083[_0xa1ca('0x52')]['filename'];}return db['Setting'][_0xa1ca('0x4d')]({'where':{'id':_0x2e5083[_0xa1ca('0x50')]['id']}})[_0xa1ca('0x1a')](handleEntityNotFound(_0x354472,null))[_0xa1ca('0x1a')](saveUpdates(_0x2e5083[_0xa1ca('0x4f')],null))[_0xa1ca('0x1a')](respondWithResult(_0x354472,null))[_0xa1ca('0x23')](handleError(_0x354472,null));};var utilLicense=require(_0xa1ca('0x15'));exports[_0xa1ca('0x6f')]=function(_0x1fff7c,_0x5ce572,_0x2548e5){var _0x4ee10b='server/files/images/logos';var _0x4eb135={'custom':![]};return utilLicense['getLicense']()[_0xa1ca('0x1a')](function(_0x1b68e5){if(_0x1b68e5){_0x4eb135=_0x1b68e5;}return db[_0xa1ca('0x35')]['find']({'where':{'id':_0x1fff7c[_0xa1ca('0x50')]['id']},'attributes':[_0xa1ca('0x53'),_0xa1ca('0x59'),_0xa1ca('0x6e'),_0xa1ca('0x5a'),'defaultLogo',_0xa1ca('0x5b'),_0xa1ca('0x5c'),_0xa1ca('0x5d')],'raw':!![]});})[_0xa1ca('0x1a')](handleEntityNotFound(_0x5ce572,null))['then'](function(_0x203815){if(_0x203815){var _0x49f9ab=_0x203815[_0xa1ca('0x6e')]&&fs['existsSync'](path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x4ee10b,_[_0xa1ca('0x61')](_0x203815['preferred'])))?path[_0xa1ca('0x5f')](config['root'],_0x4ee10b,_[_0xa1ca('0x61')](_0x203815[_0xa1ca('0x6e')])):path['join'](config['root'],_0x4ee10b,_[_0xa1ca('0x61')]('default_preferred.png'));var _0x5218d6=_0xa1ca('0x70')+_['upperFirst'](_0xa1ca('0x6e'));if(_0x203815[_0x5218d6]||!_0x4eb135[_0xa1ca('0x63')]||!_0x4eb135[_0xa1ca('0x6e')]){_0x49f9ab=path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x4ee10b,_[_0xa1ca('0x61')](_0xa1ca('0x71')));}if(!fs[_0xa1ca('0x5e')](_0x49f9ab)){throw new db[(_0xa1ca('0x64'))][(_0xa1ca('0x65'))](_[_0xa1ca('0x66')](_0xa1ca('0x6e'))+_0xa1ca('0x67'));}return _0x5ce572['download'](_0x49f9ab);}})[_0xa1ca('0x23')](handleError(_0x5ce572,null));};exports[_0xa1ca('0x72')]=function(_0x189e3a,_0x27fd64,_0x17b9f3){if(_0x189e3a[_0xa1ca('0x52')]&&_0x189e3a[_0xa1ca('0x52')]['filename']){_0x189e3a[_0xa1ca('0x4f')][_0xa1ca('0x5a')]=_0x189e3a[_0xa1ca('0x52')][_0xa1ca('0x55')];}return db[_0xa1ca('0x35')]['find']({'where':{'id':_0x189e3a[_0xa1ca('0x50')]['id']}})['then'](handleEntityNotFound(_0x27fd64,null))['then'](saveUpdates(_0x189e3a[_0xa1ca('0x4f')],null))[_0xa1ca('0x1a')](respondWithResult(_0x27fd64,null))['catch'](handleError(_0x27fd64,null));};var utilLicense=require(_0xa1ca('0x15'));exports['getFavicon']=function(_0x3493d6,_0x18480a,_0x16c7a3){var _0x3f115e='server/files/images/logos';var _0x14ab4a={'custom':![]};return utilLicense['getLicense']()[_0xa1ca('0x1a')](function(_0x4ba047){if(_0x4ba047){_0x14ab4a=_0x4ba047;}return db[_0xa1ca('0x35')][_0xa1ca('0x4d')]({'where':{'id':_0x3493d6[_0xa1ca('0x50')]['id']},'attributes':[_0xa1ca('0x53'),_0xa1ca('0x59'),'preferred','favicon',_0xa1ca('0x6a'),'defaultLoginLogo',_0xa1ca('0x5c'),_0xa1ca('0x5d')],'raw':!![]});})[_0xa1ca('0x1a')](handleEntityNotFound(_0x18480a,null))[_0xa1ca('0x1a')](function(_0x50ed17){if(_0x50ed17){var _0x4d3887=_0x50ed17[_0xa1ca('0x5a')]&&fs[_0xa1ca('0x5e')](path['join'](config[_0xa1ca('0x60')],_0x3f115e,_[_0xa1ca('0x61')](_0x50ed17[_0xa1ca('0x5a')])))?path['join'](config['root'],_0x3f115e,_[_0xa1ca('0x61')](_0x50ed17['favicon'])):path[_0xa1ca('0x5f')](config[_0xa1ca('0x60')],_0x3f115e,_[_0xa1ca('0x61')](_0xa1ca('0x73')));var _0x589f14=_0xa1ca('0x70')+_[_0xa1ca('0x66')](_0xa1ca('0x5a'));if(_0x50ed17[_0x589f14]||!_0x14ab4a[_0xa1ca('0x63')]){_0x4d3887=path['join'](config[_0xa1ca('0x60')],_0x3f115e,_['toLower'](_0xa1ca('0x73')));}if(!fs['existsSync'](_0x4d3887)){throw new db[(_0xa1ca('0x64'))][(_0xa1ca('0x65'))](_[_0xa1ca('0x66')](_0xa1ca('0x5a'))+_0xa1ca('0x67'));}return _0x18480a[_0xa1ca('0x68')](_0x4d3887);}})[_0xa1ca('0x23')](handleError(_0x18480a,null));};exports['getDate']=function(_0x3a29df,_0x219af3){var _0x3692f3={'offset':moment()[_0xa1ca('0x74')]()};_0x3692f3[_0xa1ca('0x75')]=moment()[_0xa1ca('0x74')](_0x3692f3[_0xa1ca('0x27')])['format'](_0xa1ca('0x76'));return _0x219af3['status'](0xc8)[_0xa1ca('0x32')](_0x3692f3);};
\ No newline at end of file
index ff3b681..cb344ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x2390e5,_0x369025){var _0xa6038f=function(_0x2e74a3){while(--_0x2e74a3){_0x2390e5['push'](_0x2390e5['shift']());}};_0xa6038f(++_0x369025);}(_0x008c,0x188));var _0xc008=function(_0x246119,_0x30a4f3){_0x246119=_0x246119-0x0;var _0x59c74f=_0x008c[_0x246119];return _0x59c74f;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('Setting',attributes,{'tableName':_0xc008('0xc'),'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(_0x3a2e86,_0x466485){var _0xe4deec=function(_0x131f4e){while(--_0x131f4e){_0x3a2e86['push'](_0x3a2e86['shift']());}};_0xe4deec(++_0x466485);}(_0xedd9,0xfc));var _0x9edd=function(_0x33f2e9,_0x3eecbb){_0x33f2e9=_0x33f2e9-0x0;var _0x4ced94=_0xedd9[_0x33f2e9];return _0x4ced94;};'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 e3560f4..4f76e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc52a=['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','find','options','where','include','map','model','attributes','ShowSetting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x48bab2,_0x4f3b53){var _0xf41d3c=function(_0x57fecc){while(--_0x57fecc){_0x48bab2['push'](_0x48bab2['shift']());}};_0xf41d3c(++_0x4f3b53);}(_0xc52a,0x149));var _0xac52=function(_0x102470,_0x199a01){_0x102470=_0x102470-0x0;var _0x558eaa=_0xc52a[_0x102470];return _0x558eaa;};'use strict';var _=require('lodash');var util=require(_0xac52('0x0'));var moment=require(_0xac52('0x1'));var BPromise=require(_0xac52('0x2'));var rs=require(_0xac52('0x3'));var fs=require('fs');var Redis=require(_0xac52('0x4'));var db=require(_0xac52('0x5'))['db'];var utils=require(_0xac52('0x6'));var logger=require(_0xac52('0x7'))(_0xac52('0x8'));var config=require(_0xac52('0x9'));var jayson=require(_0xac52('0xa'));var client=jayson[_0xac52('0xb')][_0xac52('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x27aafd,_0x4aa6a8,_0x4b84be){return new BPromise(function(_0x5c0c0d,_0x5347b8){return client[_0xac52('0xd')](_0x27aafd,_0x4b84be)[_0xac52('0xe')](function(_0x41b281){logger[_0xac52('0xf')](_0xac52('0x10'),_0x4aa6a8,_0xac52('0x11'));logger[_0xac52('0x12')](_0xac52('0x13'),_0x4aa6a8,_0xac52('0x11'),JSON[_0xac52('0x14')](_0x41b281));if(_0x41b281[_0xac52('0x15')]){if(_0x41b281[_0xac52('0x15')][_0xac52('0x16')]===0x1f4){logger[_0xac52('0x15')]('Setting,\x20%s,\x20%s',_0x4aa6a8,_0x41b281['error'][_0xac52('0x17')]);return _0x5347b8(_0x41b281[_0xac52('0x15')][_0xac52('0x17')]);}logger[_0xac52('0x15')](_0xac52('0x10'),_0x4aa6a8,_0x41b281[_0xac52('0x15')][_0xac52('0x17')]);return _0x5c0c0d(_0x41b281[_0xac52('0x15')]['message']);}else{logger[_0xac52('0xf')]('Setting,\x20%s,\x20%s',_0x4aa6a8,_0xac52('0x11'));_0x5c0c0d(_0x41b281[_0xac52('0x18')][_0xac52('0x17')]);}})[_0xac52('0x19')](function(_0x54478d){logger[_0xac52('0x15')](_0xac52('0x10'),_0x4aa6a8,_0x54478d);_0x5347b8(_0x54478d);});});}exports['ShowSetting']=function(_0x39bcb2){var _0x37a5ca=this;return new Promise(function(_0x2bd2c2,_0xbd0c1a){return db['Setting'][_0xac52('0x1a')]({'raw':_0x39bcb2[_0xac52('0x1b')]?_0x39bcb2['options']['raw']===undefined?!![]:![]:!![],'where':_0x39bcb2['options']?_0x39bcb2['options'][_0xac52('0x1c')]||null:null,'attributes':_0x39bcb2['options']?_0x39bcb2[_0xac52('0x1b')]['attributes']||null:null,'include':_0x39bcb2[_0xac52('0x1b')]?_0x39bcb2[_0xac52('0x1b')][_0xac52('0x1d')]?_[_0xac52('0x1e')](_0x39bcb2['options'][_0xac52('0x1d')],function(_0x1ff8e8){return{'model':db[_0x1ff8e8[_0xac52('0x1f')]],'as':_0x1ff8e8['as'],'attributes':_0x1ff8e8[_0xac52('0x20')],'include':_0x1ff8e8[_0xac52('0x1d')]?_[_0xac52('0x1e')](_0x1ff8e8[_0xac52('0x1d')],function(_0x2bd967){return{'model':db[_0x2bd967[_0xac52('0x1f')]],'as':_0x2bd967['as'],'attributes':_0x2bd967['attributes'],'include':_0x2bd967[_0xac52('0x1d')]?_[_0xac52('0x1e')](_0x2bd967[_0xac52('0x1d')],function(_0x19e838){return{'model':db[_0x19e838['model']],'as':_0x19e838['as'],'attributes':_0x19e838[_0xac52('0x20')]};}):[]};}):[]};}):[]:[]})[_0xac52('0xe')](function(_0x3594c9){logger['info']('ShowSetting',_0x39bcb2);logger[_0xac52('0x12')](_0xac52('0x21'),_0x39bcb2,JSON['stringify'](_0x3594c9));_0x2bd2c2(_0x3594c9);})[_0xac52('0x19')](function(_0x4658c4){logger[_0xac52('0x15')](_0xac52('0x21'),_0x4658c4[_0xac52('0x17')],_0x39bcb2);_0xbd0c1a(_0x37a5ca['error'](0x1f4,_0x4658c4[_0xac52('0x17')]));});});};
\ No newline at end of file
+var _0xde1a=['include','map','model','attributes','then','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowSetting','Setting','find','options','raw','where'];(function(_0x55ecaa,_0x350787){var _0x1b0afa=function(_0x4760ca){while(--_0x4760ca){_0x55ecaa['push'](_0x55ecaa['shift']());}};_0x1b0afa(++_0x350787);}(_0xde1a,0x89));var _0xade1=function(_0x2b4037,_0x45ee55){_0x2b4037=_0x2b4037-0x0;var _0x1df2da=_0xde1a[_0x2b4037];return _0x1df2da;};'use strict';var _=require(_0xade1('0x0'));var util=require(_0xade1('0x1'));var moment=require('moment');var BPromise=require(_0xade1('0x2'));var rs=require(_0xade1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xade1('0x4'))['db'];var utils=require(_0xade1('0x5'));var logger=require(_0xade1('0x6'))('rpc');var config=require(_0xade1('0x7'));var jayson=require(_0xade1('0x8'));var client=jayson[_0xade1('0x9')][_0xade1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28c204,_0x5aeb83,_0xe23662){return new BPromise(function(_0x2a8290,_0x238683){return client[_0xade1('0xb')](_0x28c204,_0xe23662)['then'](function(_0x56aa9a){logger[_0xade1('0xc')](_0xade1('0xd'),_0x5aeb83,'request\x20sent');logger[_0xade1('0xe')](_0xade1('0xf'),_0x5aeb83,_0xade1('0x10'),JSON[_0xade1('0x11')](_0x56aa9a));if(_0x56aa9a[_0xade1('0x12')]){if(_0x56aa9a[_0xade1('0x12')]['code']===0x1f4){logger[_0xade1('0x12')]('Setting,\x20%s,\x20%s',_0x5aeb83,_0x56aa9a[_0xade1('0x12')][_0xade1('0x13')]);return _0x238683(_0x56aa9a['error'][_0xade1('0x13')]);}logger[_0xade1('0x12')](_0xade1('0xd'),_0x5aeb83,_0x56aa9a[_0xade1('0x12')][_0xade1('0x13')]);return _0x2a8290(_0x56aa9a[_0xade1('0x12')][_0xade1('0x13')]);}else{logger['info'](_0xade1('0xd'),_0x5aeb83,_0xade1('0x10'));_0x2a8290(_0x56aa9a[_0xade1('0x14')][_0xade1('0x13')]);}})[_0xade1('0x15')](function(_0x49458d){logger[_0xade1('0x12')](_0xade1('0xd'),_0x5aeb83,_0x49458d);_0x238683(_0x49458d);});});}exports[_0xade1('0x16')]=function(_0x451768){var _0x34f3d5=this;return new Promise(function(_0x1c04bd,_0x550ffb){return db[_0xade1('0x17')][_0xade1('0x18')]({'raw':_0x451768[_0xade1('0x19')]?_0x451768[_0xade1('0x19')][_0xade1('0x1a')]===undefined?!![]:![]:!![],'where':_0x451768[_0xade1('0x19')]?_0x451768[_0xade1('0x19')][_0xade1('0x1b')]||null:null,'attributes':_0x451768[_0xade1('0x19')]?_0x451768[_0xade1('0x19')]['attributes']||null:null,'include':_0x451768[_0xade1('0x19')]?_0x451768[_0xade1('0x19')][_0xade1('0x1c')]?_[_0xade1('0x1d')](_0x451768[_0xade1('0x19')][_0xade1('0x1c')],function(_0x5a86d8){return{'model':db[_0x5a86d8['model']],'as':_0x5a86d8['as'],'attributes':_0x5a86d8['attributes'],'include':_0x5a86d8['include']?_[_0xade1('0x1d')](_0x5a86d8[_0xade1('0x1c')],function(_0x21f103){return{'model':db[_0x21f103[_0xade1('0x1e')]],'as':_0x21f103['as'],'attributes':_0x21f103[_0xade1('0x1f')],'include':_0x21f103[_0xade1('0x1c')]?_[_0xade1('0x1d')](_0x21f103['include'],function(_0x4e1e3c){return{'model':db[_0x4e1e3c['model']],'as':_0x4e1e3c['as'],'attributes':_0x4e1e3c[_0xade1('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xade1('0x20')](function(_0x4ca110){logger[_0xade1('0xc')](_0xade1('0x16'),_0x451768);logger[_0xade1('0xe')](_0xade1('0x16'),_0x451768,JSON[_0xade1('0x11')](_0x4ca110));_0x1c04bd(_0x4ca110);})[_0xade1('0x15')](function(_0x2b9b38){logger[_0xade1('0x12')](_0xade1('0x16'),_0x2b9b38[_0xade1('0x13')],_0x451768);_0x550ffb(_0x34f3d5[_0xade1('0x12')](0x1f4,_0x2b9b38[_0xade1('0x13')]));});});};
\ No newline at end of file
index 852383d..f936de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x4cb855,_0x36011f){var _0x38b428=function(_0x436363){while(--_0x436363){_0x4cb855['push'](_0x4cb855['shift']());}};_0x38b428(++_0x36011f);}(_0x53ec,0x192));var _0xc53e=function(_0x547e20,_0x284545){_0x547e20=_0x547e20-0x0;var _0x359171=_0x53ec[_0x547e20];return _0x359171;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
+var _0x6aa7=['create','addDisposition','addAnswer','addApplications','/:id/send','send','status','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','/:id/users','getAgents','post'];(function(_0x2a75a6,_0x232798){var _0x4d1b79=function(_0x1e4050){while(--_0x1e4050){_0x2a75a6['push'](_0x2a75a6['shift']());}};_0x4d1b79(++_0x232798);}(_0x6aa7,0x178));var _0x76aa=function(_0x2948dd,_0x38b7e8){_0x2948dd=_0x2948dd-0x0;var _0x30f6cb=_0x6aa7[_0x2948dd];return _0x30f6cb;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0x76aa('0x8')](),controller['index']);router[_0x76aa('0x9')](_0x76aa('0xa'),auth[_0x76aa('0x8')](),controller['describe']);router[_0x76aa('0x9')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller['show']);router[_0x76aa('0x9')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xd')]);router[_0x76aa('0x9')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xf')]);router[_0x76aa('0x9')](_0x76aa('0x10'),auth['isAuthenticated'](),controller[_0x76aa('0x11')]);router['get'](_0x76aa('0x12'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x13')]);router[_0x76aa('0x9')](_0x76aa('0x14'),controller['statusGet']);router['get'](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x16')]);router[_0x76aa('0x17')]('/',auth['isAuthenticated'](),controller[_0x76aa('0x18')]);router['post'](_0x76aa('0xc'),auth['isAuthenticated'](),controller[_0x76aa('0x19')]);router[_0x76aa('0x17')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1a')]);router[_0x76aa('0x17')]('/:id/notify',controller['notify']);router[_0x76aa('0x17')](_0x76aa('0x10'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1b')]);router[_0x76aa('0x17')](_0x76aa('0x1c'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1d')]);router[_0x76aa('0x17')]('/:id/status',controller[_0x76aa('0x1e')]);router[_0x76aa('0x17')](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x1f')]);router[_0x76aa('0x20')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x21')]);router[_0x76aa('0x22')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x23')]);router[_0x76aa('0x22')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x24')]);router['delete'](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x25')]);router[_0x76aa('0x22')](_0x76aa('0x15'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x26')]);module[_0x76aa('0x27')]=router;
\ No newline at end of file
index ad0d6de..6a83048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5362=['BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate','skebby','clicksend','clickatell','bandwidth','csc','infobip','ENUM'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5362,0x87));var _0x2536=function(_0x1c9477,_0x5b4029){_0x1c9477=_0x1c9477-0x0;var _0x4c31d6=_0x5362[_0x1c9477];return _0x4c31d6;};'use strict';var Sequelize=require(_0x2536('0x0'));var rs=require(_0x2536('0x1'));module[_0x2536('0x2')]={'name':{'type':Sequelize[_0x2536('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x2536('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x2536('0x3')],'defaultValue':function(){return rs[_0x2536('0x4')]();}},'phone':{'type':Sequelize[_0x2536('0x3')]},'type':{'type':Sequelize['ENUM']('twilio',_0x2536('0x5'),'connectel',_0x2536('0x6'),'plivo',_0x2536('0x7'),_0x2536('0x8'),_0x2536('0x9'),_0x2536('0xa'),'intelepeer')},'accountSid':{'type':Sequelize[_0x2536('0x3')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x2536('0x3')]},'smsMethod':{'type':Sequelize[_0x2536('0xb')]('SI','TI','GP')},'username':{'type':Sequelize[_0x2536('0x3')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x2536('0x3')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x2536('0x3')]},'deliveryReport':{'type':Sequelize[_0x2536('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x2536('0x3')]},'notificationTemplate':{'type':Sequelize[_0x2536('0xd')],'defaultValue':function(){return _0x2536('0xe');}},'notificationSound':{'type':Sequelize[_0x2536('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2536('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2536('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2536('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2536('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x2536('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2536('0xf')],'comment':_0x2536('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x2536('0xc')],'defaultValue':![],'comment':_0x2536('0x11'),'set':function(_0x2d9e73){if(!_0x2d9e73)this['setDataValue'](_0x2536('0x12'),null);this[_0x2536('0x13')](_0x2536('0x14'),_0x2d9e73);}}};
\ No newline at end of file
+var _0xb5be=['infobip','intelepeer','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','STRING','name','generate','ENUM','twilio','skebby','clicksend','clickatell','bandwidth'];(function(_0x5371d7,_0x1f197e){var _0x46bc0c=function(_0x29749){while(--_0x29749){_0x5371d7['push'](_0x5371d7['shift']());}};_0x46bc0c(++_0x1f197e);}(_0xb5be,0x171));var _0xeb5b=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb5be[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xeb5b('0x0'));module[_0xeb5b('0x1')]={'name':{'type':Sequelize[_0xeb5b('0x2')],'unique':_0xeb5b('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xeb5b('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0xeb5b('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0xeb5b('0x2')],'defaultValue':function(){return rs[_0xeb5b('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xeb5b('0x5')](_0xeb5b('0x6'),_0xeb5b('0x7'),'connectel',_0xeb5b('0x8'),'plivo',_0xeb5b('0x9'),_0xeb5b('0xa'),'csc',_0xeb5b('0xb'),_0xeb5b('0xc'))},'accountSid':{'type':Sequelize[_0xeb5b('0x2')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xeb5b('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0xeb5b('0x2')]},'password':{'type':Sequelize[_0xeb5b('0x2')]},'apiKey':{'type':Sequelize[_0xeb5b('0x2')]},'applicationId':{'type':Sequelize[_0xeb5b('0x2')]},'accountId':{'type':Sequelize[_0xeb5b('0x2')]},'senderString':{'type':Sequelize[_0xeb5b('0x2')]},'deliveryReport':{'type':Sequelize[_0xeb5b('0xd')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xeb5b('0xe');}},'notificationSound':{'type':Sequelize[_0xeb5b('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xeb5b('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xeb5b('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xeb5b('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xeb5b('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xeb5b('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xeb5b('0xd')],'defaultValue':![],'comment':_0xeb5b('0x10'),'set':function(_0x6564f){if(!_0x6564f)this[_0xeb5b('0x11')](_0xeb5b('0x12'),null);this[_0xeb5b('0x11')](_0xeb5b('0x13'),_0x6564f);}}};
\ No newline at end of file
index 0d87272..8d00bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe933=['CompanyId','ListId','mobile','twilio','from','Body','messageId','MessageSid','skebby','sender','text','message_id','From','Text','MessageUUID','infobip','results','csc','originatingAddress','clickatell','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','contact','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','SmsApplication','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','defaults','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','requestid','statusInt','status_code','groupName','redif','DELIVERED','clicksend','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','message-id','state','addAgents','omit','emit','userSmsAccount:save','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsAccount,\x20%s,\x20%s','catch','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','update','destroy','then','get','SmsAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','SmsAccount','fieldName','type','key','map','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','getDispositions','sort','include','Disposition','removeDispositions','ids','CannedAnswer','findOne','rawAttributes','removeAnswers','notify','sms','Applications','account','applications','orderBy','priority','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt'];(function(_0x7dd7a4,_0x278c26){var _0x3b8961=function(_0x3ae0d2){while(--_0x3ae0d2){_0x7dd7a4['push'](_0x7dd7a4['shift']());}};_0x3b8961(++_0x278c26);}(_0xe933,0x67));var _0x3e93=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0xe933[_0x565ed7];return _0x183ad7;};'use strict';var emlformat=require(_0x3e93('0x0'));var rimraf=require(_0x3e93('0x1'));var zipdir=require(_0x3e93('0x2'));var jsonpatch=require(_0x3e93('0x3'));var rp=require('request-promise');var moment=require(_0x3e93('0x4'));var BPromise=require(_0x3e93('0x5'));var Mustache=require(_0x3e93('0x6'));var util=require(_0x3e93('0x7'));var path=require(_0x3e93('0x8'));var sox=require(_0x3e93('0x9'));var csv=require(_0x3e93('0xa'));var ejs=require(_0x3e93('0xb'));var fs=require('fs');var fs_extra=require(_0x3e93('0xc'));var _=require('lodash');var squel=require(_0x3e93('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3e93('0xe'));var toCsv=require(_0x3e93('0xa'));var querystring=require(_0x3e93('0xf'));var Papa=require('papaparse');var Redis=require(_0x3e93('0x10'));var authService=require(_0x3e93('0x11'));var qs=require(_0x3e93('0x12'));var as=require(_0x3e93('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3e93('0x14'))(_0x3e93('0x15'));var utils=require(_0x3e93('0x16'));var config=require(_0x3e93('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3e93('0x18'))['db'];config[_0x3e93('0x19')]=_['defaults'](config['redis'],{'host':_0x3e93('0x1a'),'port':0x18eb});var socket=require(_0x3e93('0x1b'))(new Redis(config[_0x3e93('0x19')]));require(_0x3e93('0x1c'))[_0x3e93('0x1d')](socket);var jayson=require(_0x3e93('0x1e'));var client=jayson[_0x3e93('0x1f')][_0x3e93('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x4f9b31,_0x3e82cb,_0x537c57,_0x3b1c4b){return new BPromise(function(_0x38aa61,_0x99d549){var _0x372a14=_0x3b1c4b||client;return _0x372a14[_0x3e93('0x21')](_0x4f9b31,_0x537c57)['then'](function(_0x23fc96){logger[_0x3e93('0x22')]('SmsAccount,\x20%s,\x20%s',_0x3e82cb,_0x3e93('0x23'));logger[_0x3e93('0x24')](_0x3e93('0x25'),_0x3e82cb,_0x3e93('0x23'),JSON[_0x3e93('0x26')](_0x23fc96));if(_0x23fc96[_0x3e93('0x27')]){if(_0x23fc96[_0x3e93('0x27')][_0x3e93('0x28')]===0x1f4){logger[_0x3e93('0x27')]('SmsAccount,\x20%s,\x20%s',_0x3e82cb,_0x23fc96['error'][_0x3e93('0x29')]);return _0x99d549(_0x23fc96['error']['message']);}logger['error'](_0x3e93('0x2a'),_0x3e82cb,_0x23fc96['error'][_0x3e93('0x29')]);return _0x38aa61(_0x23fc96['error'][_0x3e93('0x29')]);}else{logger[_0x3e93('0x22')](_0x3e93('0x2a'),_0x3e82cb,_0x3e93('0x23'));_0x38aa61(_0x23fc96['result'][_0x3e93('0x29')]);}})[_0x3e93('0x2b')](function(_0x4d8d3e){logger[_0x3e93('0x27')]('SmsAccount,\x20%s,\x20%s',_0x3e82cb,_0x4d8d3e);_0x99d549(_0x4d8d3e);});});}function respondWithStatusCode(_0x126731,_0x10e63a){_0x10e63a=_0x10e63a||0xcc;return function(_0x5d4349){if(_0x5d4349){return _0x126731[_0x3e93('0x2c')](_0x10e63a);}return _0x126731[_0x3e93('0x2d')](_0x10e63a)[_0x3e93('0x2e')]();};}function respondWithResult(_0x55e7b0,_0x1642a2){_0x1642a2=_0x1642a2||0xc8;return function(_0x55eaa7){if(_0x55eaa7){return _0x55e7b0[_0x3e93('0x2d')](_0x1642a2)[_0x3e93('0x2f')](_0x55eaa7);}};}function respondWithFilteredResult(_0x5f5855,_0x414dc2){return function(_0x2a8f14){if(_0x2a8f14){var _0x526c31=typeof _0x414dc2['offset']==='undefined'&&typeof _0x414dc2[_0x3e93('0x30')]===_0x3e93('0x31');var _0x108565=_0x2a8f14['count'];var _0x2db718=_0x526c31?0x0:_0x414dc2[_0x3e93('0x32')];var _0x19b1c9=_0x526c31?_0x2a8f14[_0x3e93('0x33')]:_0x414dc2[_0x3e93('0x32')]+_0x414dc2[_0x3e93('0x30')];var _0x4d95b3;if(_0x19b1c9>=_0x108565){_0x19b1c9=_0x108565;_0x4d95b3=0xc8;}else{_0x4d95b3=0xce;}_0x5f5855['status'](_0x4d95b3);return _0x5f5855[_0x3e93('0x34')](_0x3e93('0x35'),_0x2db718+'-'+_0x19b1c9+'/'+_0x108565)['json'](_0x2a8f14);}return null;};}function patchUpdates(_0x32b094){return function(_0x337e8f){try{jsonpatch[_0x3e93('0x36')](_0x337e8f,_0x32b094,!![]);}catch(_0x161926){return BPromise['reject'](_0x161926);}return _0x337e8f['save']();};}function saveUpdates(_0x50a4d1,_0x93f4d3){return function(_0x4d1f9b){if(_0x4d1f9b){return _0x4d1f9b[_0x3e93('0x37')](_0x50a4d1)['then'](function(_0x2b1512){return _0x2b1512;});}return null;};}function removeEntity(_0x5b6020,_0x3edc75){return function(_0xaf4e8e){if(_0xaf4e8e){return _0xaf4e8e[_0x3e93('0x38')]()[_0x3e93('0x39')](function(){var _0x2d57a0=_0xaf4e8e[_0x3e93('0x3a')]({'plain':!![]});var _0x3d1a76=_0x3e93('0x3b');return db[_0x3e93('0x3c')]['destroy']({'where':{'type':_0x3d1a76,'resourceId':_0x2d57a0['id']}})[_0x3e93('0x39')](function(){return _0xaf4e8e;});})[_0x3e93('0x39')](function(){_0x5b6020['status'](0xcc)[_0x3e93('0x2e')]();});}};}function handleEntityNotFound(_0x50bfe1,_0x15a950){return function(_0x440a88){if(!_0x440a88){_0x50bfe1['sendStatus'](0x194);}return _0x440a88;};}function handleError(_0x25e910,_0x317540){_0x317540=_0x317540||0x1f4;return function(_0x570401){logger[_0x3e93('0x27')](_0x570401[_0x3e93('0x3d')]);if(_0x570401['name']){delete _0x570401[_0x3e93('0x3e')];}_0x25e910['status'](_0x317540)[_0x3e93('0x3f')](_0x570401);};}exports[_0x3e93('0x40')]=function(_0x149291,_0x4f5798){var _0x289420={'include':[{'model':db[_0x3e93('0x41')],'as':_0x3e93('0x42')}]},_0x23fac9={},_0x502019={'count':0x0,'rows':[]};var _0x4d7a08=_['map'](db[_0x3e93('0x43')]['rawAttributes'],function(_0x1d18ed){return{'name':_0x1d18ed[_0x3e93('0x44')],'type':_0x1d18ed[_0x3e93('0x45')][_0x3e93('0x46')]};});_0x23fac9['model']=_[_0x3e93('0x47')](_0x4d7a08,_0x3e93('0x3e'));_0x23fac9['query']=_[_0x3e93('0x48')](_0x149291['query']);_0x23fac9[_0x3e93('0x49')]=_[_0x3e93('0x4a')](_0x23fac9[_0x3e93('0x4b')],_0x23fac9[_0x3e93('0x4c')]);_0x289420[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x23fac9[_0x3e93('0x4b')],qs[_0x3e93('0x4e')](_0x149291[_0x3e93('0x4c')][_0x3e93('0x4e')]));_0x289420['attributes']=_0x289420['attributes']['length']?_0x289420[_0x3e93('0x4d')]:_0x23fac9[_0x3e93('0x4b')];if(!_0x149291[_0x3e93('0x4c')][_0x3e93('0x4f')](_0x3e93('0x50'))){_0x289420[_0x3e93('0x30')]=qs['limit'](_0x149291['query']['limit']);_0x289420[_0x3e93('0x32')]=qs[_0x3e93('0x32')](_0x149291['query'][_0x3e93('0x32')]);}_0x289420[_0x3e93('0x51')]=qs['sort'](_0x149291[_0x3e93('0x4c')]['sort']);_0x289420[_0x3e93('0x52')]=qs[_0x3e93('0x49')](_[_0x3e93('0x53')](_0x149291[_0x3e93('0x4c')],_0x23fac9[_0x3e93('0x49')]),_0x4d7a08);if(_0x149291[_0x3e93('0x4c')][_0x3e93('0x54')]){_0x289420[_0x3e93('0x52')]=_[_0x3e93('0x55')](_0x289420[_0x3e93('0x52')],{'$or':_['map'](_0x4d7a08,function(_0xd2ab8c){if(_0xd2ab8c[_0x3e93('0x45')]!==_0x3e93('0x56')){var _0x328ced={};_0x328ced[_0xd2ab8c[_0x3e93('0x3e')]]={'$like':'%'+_0x149291[_0x3e93('0x4c')][_0x3e93('0x54')]+'%'};return _0x328ced;}})});}_0x289420=_[_0x3e93('0x55')]({},_0x289420,_0x149291[_0x3e93('0x57')]);var _0x570eb9={'where':_0x289420[_0x3e93('0x52')]};return db[_0x3e93('0x43')][_0x3e93('0x33')](_0x570eb9)[_0x3e93('0x39')](function(_0x37500b){_0x502019['count']=_0x37500b;if(_0x149291[_0x3e93('0x4c')][_0x3e93('0x58')]){_0x289420['include']=[{'all':!![]}];}return db[_0x3e93('0x43')][_0x3e93('0x59')](_0x289420);})[_0x3e93('0x39')](function(_0x55f4ec){_0x502019[_0x3e93('0x5a')]=_0x55f4ec;return _0x502019;})[_0x3e93('0x39')](respondWithFilteredResult(_0x4f5798,_0x289420))[_0x3e93('0x2b')](handleError(_0x4f5798,null));};exports[_0x3e93('0x5b')]=function(_0x1ce342,_0x2134af){var _0xf64909={'raw':![],'where':{'id':_0x1ce342[_0x3e93('0x5c')]['id']},'include':[{'model':db[_0x3e93('0x41')],'as':'mandatoryDispositionPause'}]},_0x1a3955={};_0x1a3955[_0x3e93('0x4b')]=_[_0x3e93('0x48')](db[_0x3e93('0x43')]['rawAttributes']);_0x1a3955[_0x3e93('0x4c')]=_['keys'](_0x1ce342[_0x3e93('0x4c')]);_0x1a3955[_0x3e93('0x49')]=_[_0x3e93('0x4a')](_0x1a3955['model'],_0x1a3955['query']);_0xf64909[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x1a3955[_0x3e93('0x4b')],qs[_0x3e93('0x4e')](_0x1ce342['query'][_0x3e93('0x4e')]));_0xf64909[_0x3e93('0x4d')]=_0xf64909['attributes'][_0x3e93('0x5d')]?_0xf64909[_0x3e93('0x4d')]:_0x1a3955['model'];if(_0x1ce342[_0x3e93('0x4c')][_0x3e93('0x58')]){_0xf64909['include']=[{'all':!![]}];}_0xf64909=_[_0x3e93('0x55')]({},_0xf64909,_0x1ce342[_0x3e93('0x57')]);return db[_0x3e93('0x43')][_0x3e93('0x5e')](_0xf64909)[_0x3e93('0x39')](handleEntityNotFound(_0x2134af,null))[_0x3e93('0x39')](respondWithResult(_0x2134af,null))[_0x3e93('0x2b')](handleError(_0x2134af,null));};exports['create']=function(_0x21ca12,_0x4a2e9b){return db[_0x3e93('0x43')][_0x3e93('0x5f')](_0x21ca12[_0x3e93('0x60')],{})[_0x3e93('0x39')](function(_0x5d877f){var _0x203467=_0x21ca12[_0x3e93('0x61')][_0x3e93('0x3a')]({'plain':!![]});if(!_0x203467)throw new Error(_0x3e93('0x62'));if(_0x203467[_0x3e93('0x63')]===_0x3e93('0x61')){var _0x5eef64=_0x5d877f[_0x3e93('0x3a')]({'plain':!![]});var _0x40b8b5='SmsAccounts';return db['UserProfileSection'][_0x3e93('0x5e')]({'where':{'name':_0x40b8b5,'userProfileId':_0x203467[_0x3e93('0x64')]},'raw':!![]})['then'](function(_0x609633){if(_0x609633&&_0x609633[_0x3e93('0x65')]===0x0){return db[_0x3e93('0x3c')][_0x3e93('0x5f')]({'name':_0x5eef64[_0x3e93('0x3e')],'resourceId':_0x5eef64['id'],'type':_0x609633['name'],'sectionId':_0x609633['id']},{})[_0x3e93('0x39')](function(){return _0x5d877f;});}else{return _0x5d877f;}})[_0x3e93('0x2b')](function(_0x22bd5b){logger[_0x3e93('0x27')](_0x3e93('0x66'),_0x22bd5b);throw _0x22bd5b;});}return _0x5d877f;})[_0x3e93('0x39')](respondWithResult(_0x4a2e9b,0xc9))[_0x3e93('0x2b')](handleError(_0x4a2e9b,null));};exports[_0x3e93('0x37')]=function(_0xb250bb,_0x1d1bc7){if(_0xb250bb[_0x3e93('0x60')]['id']){delete _0xb250bb[_0x3e93('0x60')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0xb250bb[_0x3e93('0x5c')]['id']},'include':[{'model':db[_0x3e93('0x41')],'as':_0x3e93('0x42')}]})[_0x3e93('0x39')](handleEntityNotFound(_0x1d1bc7,null))[_0x3e93('0x39')](saveUpdates(_0xb250bb[_0x3e93('0x60')],null))[_0x3e93('0x39')](respondWithResult(_0x1d1bc7,null))[_0x3e93('0x2b')](handleError(_0x1d1bc7,null));};exports[_0x3e93('0x38')]=function(_0x2d7165,_0x541d83){return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x2d7165['params']['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x541d83,null))[_0x3e93('0x39')](removeEntity(_0x541d83,null))['catch'](handleError(_0x541d83,null));};exports[_0x3e93('0x67')]=function(_0x5ef7e5,_0x1dabe6){return db[_0x3e93('0x43')][_0x3e93('0x67')]()[_0x3e93('0x39')](respondWithResult(_0x1dabe6,null))[_0x3e93('0x2b')](handleError(_0x1dabe6,null));};exports[_0x3e93('0x68')]=function(_0x321445,_0x36483b,_0x59965e){if(_0x321445[_0x3e93('0x60')]['id']){delete _0x321445['body']['id'];}return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x321445['params']['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x36483b,null))['then'](function(_0x441ccb){if(_0x441ccb){_0x321445[_0x3e93('0x60')][_0x3e93('0x69')]=_0x441ccb['id'];return db['Disposition'][_0x3e93('0x5f')](_0x321445['body']);}})[_0x3e93('0x39')](respondWithResult(_0x36483b,null))['catch'](handleError(_0x36483b,null));};exports[_0x3e93('0x6a')]=function(_0x3c9e6c,_0x1256ff,_0x301dde){var _0x470e97={'raw':![],'where':{}};var _0x20a063={};var _0x58336c={'count':0x0,'rows':[]};return db[_0x3e93('0x43')]['findOne']({'where':{'id':_0x3c9e6c[_0x3e93('0x5c')]['id']}})['then'](handleEntityNotFound(_0x1256ff,null))[_0x3e93('0x39')](function(_0x2b3cd4){if(_0x2b3cd4){_0x20a063[_0x3e93('0x4b')]=_['keys'](db['Disposition']['rawAttributes']);_0x20a063['query']=_[_0x3e93('0x48')](_0x3c9e6c['query']);_0x20a063[_0x3e93('0x49')]=_['intersection'](_0x20a063[_0x3e93('0x4b')],_0x20a063['query']);_0x470e97[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x20a063[_0x3e93('0x4b')],qs[_0x3e93('0x4e')](_0x3c9e6c[_0x3e93('0x4c')][_0x3e93('0x4e')]));_0x470e97[_0x3e93('0x4d')]=_0x470e97['attributes'][_0x3e93('0x5d')]?_0x470e97['attributes']:_0x20a063[_0x3e93('0x4b')];if(!_0x3c9e6c[_0x3e93('0x4c')][_0x3e93('0x4f')]('nolimit')){_0x470e97[_0x3e93('0x30')]=qs[_0x3e93('0x30')](_0x3c9e6c[_0x3e93('0x4c')]['limit']);_0x470e97[_0x3e93('0x32')]=qs[_0x3e93('0x32')](_0x3c9e6c['query'][_0x3e93('0x32')]);}_0x470e97['order']=qs[_0x3e93('0x6b')](_0x3c9e6c[_0x3e93('0x4c')]['sort']);_0x470e97[_0x3e93('0x52')]=qs[_0x3e93('0x49')](_[_0x3e93('0x53')](_0x3c9e6c[_0x3e93('0x4c')],_0x20a063[_0x3e93('0x49')]));_0x470e97[_0x3e93('0x52')]['SmsAccountId']=_0x2b3cd4['id'];if(_0x3c9e6c[_0x3e93('0x4c')]['filter']){_0x470e97[_0x3e93('0x52')]=_[_0x3e93('0x55')](_0x470e97[_0x3e93('0x52')],{'$or':_[_0x3e93('0x47')](_0x470e97['attributes'],function(_0x247ab8){var _0xf8f9e3={};_0xf8f9e3[_0x247ab8]={'$like':'%'+_0x3c9e6c[_0x3e93('0x4c')]['filter']+'%'};return _0xf8f9e3;})});}_0x470e97=_[_0x3e93('0x55')]({},_0x470e97,_0x3c9e6c[_0x3e93('0x57')]);return db['Disposition']['count']({'where':_0x470e97[_0x3e93('0x52')]})[_0x3e93('0x39')](function(_0x1aea2f){_0x58336c[_0x3e93('0x33')]=_0x1aea2f;if(_0x3c9e6c[_0x3e93('0x4c')][_0x3e93('0x58')]){_0x470e97[_0x3e93('0x6c')]=[{'all':!![]}];}return db[_0x3e93('0x6d')][_0x3e93('0x59')](_0x470e97);})[_0x3e93('0x39')](function(_0x2c4ba4){_0x58336c[_0x3e93('0x5a')]=_0x2c4ba4;return _0x58336c;});}})[_0x3e93('0x39')](respondWithFilteredResult(_0x1256ff,_0x470e97))[_0x3e93('0x2b')](handleError(_0x1256ff,null));};exports[_0x3e93('0x6e')]=function(_0x1965af,_0xf80266,_0x235383){return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x1965af['params']['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0xf80266,null))['then'](function(_0xe981fc){if(_0xe981fc){return _0xe981fc['removeDispositions'](_0x1965af[_0x3e93('0x4c')][_0x3e93('0x6f')]);}})[_0x3e93('0x39')](respondWithStatusCode(_0xf80266,null))[_0x3e93('0x2b')](handleError(_0xf80266,null));};exports['addAnswer']=function(_0x1b21b6,_0x195ae6,_0x2112ec){if(_0x1b21b6[_0x3e93('0x60')]['id']){delete _0x1b21b6[_0x3e93('0x60')]['id'];}return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x1b21b6['params']['id']}})['then'](handleEntityNotFound(_0x195ae6,null))['then'](function(_0x514f19){if(_0x514f19){_0x1b21b6[_0x3e93('0x60')][_0x3e93('0x69')]=_0x514f19['id'];return db[_0x3e93('0x70')][_0x3e93('0x5f')](_0x1b21b6['body']);}})[_0x3e93('0x39')](respondWithResult(_0x195ae6,null))['catch'](handleError(_0x195ae6,null));};exports['getAnswers']=function(_0x5fa6bf,_0x4c254c,_0x35bff3){var _0xe13058={'raw':![],'where':{}};var _0x4b3581={};var _0x16a891={'count':0x0,'rows':[]};return db['SmsAccount'][_0x3e93('0x71')]({'where':{'id':_0x5fa6bf[_0x3e93('0x5c')]['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x4c254c,null))['then'](function(_0x36934e){if(_0x36934e){_0x4b3581[_0x3e93('0x4b')]=_['keys'](db[_0x3e93('0x70')][_0x3e93('0x72')]);_0x4b3581[_0x3e93('0x4c')]=_['keys'](_0x5fa6bf[_0x3e93('0x4c')]);_0x4b3581[_0x3e93('0x49')]=_[_0x3e93('0x4a')](_0x4b3581[_0x3e93('0x4b')],_0x4b3581[_0x3e93('0x4c')]);_0xe13058[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x4b3581[_0x3e93('0x4b')],qs[_0x3e93('0x4e')](_0x5fa6bf[_0x3e93('0x4c')]['fields']));_0xe13058['attributes']=_0xe13058['attributes'][_0x3e93('0x5d')]?_0xe13058[_0x3e93('0x4d')]:_0x4b3581[_0x3e93('0x4b')];if(!_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x4f')]('nolimit')){_0xe13058[_0x3e93('0x30')]=qs[_0x3e93('0x30')](_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x30')]);_0xe13058[_0x3e93('0x32')]=qs[_0x3e93('0x32')](_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x32')]);}_0xe13058[_0x3e93('0x51')]=qs[_0x3e93('0x6b')](_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x6b')]);_0xe13058['where']=qs[_0x3e93('0x49')](_[_0x3e93('0x53')](_0x5fa6bf[_0x3e93('0x4c')],_0x4b3581[_0x3e93('0x49')]));_0xe13058[_0x3e93('0x52')][_0x3e93('0x69')]=_0x36934e['id'];if(_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x54')]){_0xe13058[_0x3e93('0x52')]=_['merge'](_0xe13058[_0x3e93('0x52')],{'$or':_[_0x3e93('0x47')](_0xe13058[_0x3e93('0x4d')],function(_0x3d65a0){var _0x5c754d={};_0x5c754d[_0x3d65a0]={'$like':'%'+_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x54')]+'%'};return _0x5c754d;})});}_0xe13058=_['merge']({},_0xe13058,_0x5fa6bf[_0x3e93('0x57')]);return db[_0x3e93('0x70')][_0x3e93('0x33')]({'where':_0xe13058[_0x3e93('0x52')]})[_0x3e93('0x39')](function(_0x3c3a63){_0x16a891[_0x3e93('0x33')]=_0x3c3a63;if(_0x5fa6bf[_0x3e93('0x4c')][_0x3e93('0x58')]){_0xe13058[_0x3e93('0x6c')]=[{'all':!![]}];}return db[_0x3e93('0x70')][_0x3e93('0x59')](_0xe13058);})['then'](function(_0x4501e8){_0x16a891[_0x3e93('0x5a')]=_0x4501e8;return _0x16a891;});}})[_0x3e93('0x39')](respondWithFilteredResult(_0x4c254c,_0xe13058))[_0x3e93('0x2b')](handleError(_0x4c254c,null));};exports[_0x3e93('0x73')]=function(_0x4f268f,_0x3434bf,_0x1f94f3){return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x4f268f[_0x3e93('0x5c')]['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x3434bf,null))[_0x3e93('0x39')](function(_0x54c11c){if(_0x54c11c){return _0x54c11c[_0x3e93('0x73')](_0x4f268f[_0x3e93('0x4c')][_0x3e93('0x6f')]);}})[_0x3e93('0x39')](respondWithStatusCode(_0x3434bf,null))['catch'](handleError(_0x3434bf,null));};exports[_0x3e93('0x74')]=function(_0x374c70,_0x36834e,_0x27cde7){var _0x246681={'channel':_0x3e93('0x75')};var _0xcdf925=[];var _0x434046=[];var _0x499d99={};return db['SmsAccount'][_0x3e93('0x5e')]({'where':{'id':_0x374c70[_0x3e93('0x5c')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x3e93('0x76')}]})[_0x3e93('0x39')](handleEntityNotFound(_0x36834e,null))[_0x3e93('0x39')](function(_0x44d6bc){_0x246681[_0x3e93('0x77')]=_0x44d6bc;_0x246681[_0x3e93('0x78')]=_[_0x3e93('0x79')](_0x44d6bc[_0x3e93('0x76')],[_0x3e93('0x7a')],['asc']);if(_0x246681['account'][_0x3e93('0x76')]){delete _0x246681['account']['Applications'];}return db[_0x3e93('0x7b')][_0x3e93('0x67')]();})[_0x3e93('0x39')](function(_0x4611bf){if(!_0x4611bf){throw new db[(_0x3e93('0x7c'))][(_0x3e93('0x7d'))](_0x3e93('0x7e'));}_0xcdf925=_[_0x3e93('0x7f')](_['keys'](_0x4611bf),[_0x3e93('0x80'),_0x3e93('0x81')]);_0x434046=_[_0x3e93('0x7f')](_[_0x3e93('0x48')](_0x4611bf),[_0x3e93('0x80'),_0x3e93('0x81'),_0x3e93('0x82'),_0x3e93('0x83')]);_0x246681[_0x3e93('0x60')]={'mapKey':_0x3e93('0x84')};if(_0x246681[_0x3e93('0x77')][_0x3e93('0x45')]){switch(_0x246681['account']['type']){case _0x3e93('0x85'):_0x246681[_0x3e93('0x60')][_0x3e93('0x86')]=_0x374c70[_0x3e93('0x60')]['From'];_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]=_0x374c70['body'][_0x3e93('0x87')];_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70['body'][_0x3e93('0x89')];break;case _0x3e93('0x8a'):_0x246681['body']['from']='+'+_0x374c70['body'][_0x3e93('0x8b')];_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x8c')];break;case'connectel':_0x246681[_0x3e93('0x60')][_0x3e93('0x86')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x86')];_0x246681['body'][_0x3e93('0x60')]=_0x374c70['body'][_0x3e93('0x29')];break;case'clicksend':_0x246681[_0x3e93('0x60')][_0x3e93('0x86')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x86')];_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')]['body'];_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x8d')];break;case'plivo':_0x246681[_0x3e93('0x60')][_0x3e93('0x86')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x8e')];_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x8f')];_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x90')];break;case _0x3e93('0x91'):_0x246681['body'][_0x3e93('0x86')]='+'+_0x374c70[_0x3e93('0x60')]['results'][0x0][_0x3e93('0x86')];_0x246681['body'][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x92')][0x0][_0x3e93('0x8c')];_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x92')][0x0][_0x3e93('0x88')];break;case _0x3e93('0x93'):_0x246681['body'][_0x3e93('0x86')]=_0x374c70['body'][_0x3e93('0x94')];_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')]['segmentedMessage'][_0x3e93('0x29')];break;case _0x3e93('0x95'):_0x246681[_0x3e93('0x60')][_0x3e93('0x86')]=_0x374c70[_0x3e93('0x60')]['fromNumber'];_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x8c')];_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x96')];break;case _0x3e93('0x97'):_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70['body'][0x0][_0x3e93('0x29')]['id'];_0x246681[_0x3e93('0x60')][_0x3e93('0x86')]=_0x374c70[_0x3e93('0x60')][0x0][_0x3e93('0x29')][_0x3e93('0x86')];_0x246681[_0x3e93('0x60')]['body']=_0x374c70[_0x3e93('0x60')][0x0][_0x3e93('0x29')][_0x3e93('0x8c')];break;case _0x3e93('0x98'):_0x246681[_0x3e93('0x60')]['from']=_0x374c70[_0x3e93('0x60')][_0x3e93('0x86')];_0x246681['body'][_0x3e93('0x60')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x29')];_0x246681[_0x3e93('0x60')][_0x3e93('0x88')]=_0x374c70[_0x3e93('0x60')][_0x3e93('0x99')];break;}}if(_0x246681['body']['id']){delete _0x246681[_0x3e93('0x60')]['id'];}if(_[_0x3e93('0x9a')](_0x246681['body'][_0x3e93('0x86')])){throw new db['Sequelize'][(_0x3e93('0x7d'))](_0x3e93('0x9b'));}if(_[_0x3e93('0x9a')](_0x246681[_0x3e93('0x60')]['body'])||_0x246681[_0x3e93('0x60')][_0x3e93('0x60')]===''){throw new db[(_0x3e93('0x7c'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x3e93('0x9a')](_0x246681[_0x3e93('0x60')][_0x3e93('0x9c')])){throw new db[(_0x3e93('0x7c'))][(_0x3e93('0x7d'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x434046);}if(!_[_0x3e93('0x9d')](_0x434046,_0x246681[_0x3e93('0x60')][_0x3e93('0x9c')])){throw new db['Sequelize'][(_0x3e93('0x7d'))](_0x3e93('0x9e')+_0x434046);}_0x499d99[_0x246681[_0x3e93('0x60')][_0x3e93('0x9c')]]=_0x246681[_0x3e93('0x60')][_0x3e93('0x86')];return db[_0x3e93('0x9f')][_0x3e93('0x5e')]({'where':{'id':_0x246681['account'][_0x3e93('0x83')]},'include':[{'model':db[_0x3e93('0x7b')],'as':_0x3e93('0xa0'),'where':_0x499d99,'limit':0x1,'order':[[_0x3e93('0x81'),_0x3e93('0xa1')]]}]});})[_0x3e93('0x39')](handleEntityNotFound(_0x36834e,null))['then'](function(_0x20ddaa){if(_0x20ddaa){_0x246681[_0x3e93('0xa2')]=_['omit'](_0x20ddaa,[_0x3e93('0xa0')]);if(_0x20ddaa[_0x3e93('0xa0')][_0x3e93('0x5d')]){return _0x20ddaa[_0x3e93('0xa0')][0x0];}var _0x5709d7=_['defaults'](_0x246681[_0x3e93('0x60')],{'firstName':_0x246681[_0x3e93('0x60')][_0x3e93('0x86')],'ListId':_0x20ddaa['id']});_0x5709d7[_0x246681[_0x3e93('0x60')][_0x3e93('0x9c')]]=_0x246681[_0x3e93('0x60')][_0x3e93('0x86')];return db[_0x3e93('0x7b')]['create'](_0x5709d7,{'fields':_0xcdf925,'raw':!![]});}})[_0x3e93('0x39')](handleEntityNotFound(_0x36834e,null))[_0x3e93('0x39')](function(_0x6922ef){if(_0x6922ef){_0x246681[_0x3e93('0xa3')]=_0x6922ef;var _0x3a44d5={'ContactId':_0x6922ef['id'],'phone':_0x246681[_0x3e93('0x60')][_0x3e93('0x86')],'SmsAccountId':_0x374c70[_0x3e93('0x5c')]['id']};var _0x48c2b4={'ContactId':_0x6922ef['id'],'SmsAccountId':_0x374c70[_0x3e93('0x5c')]['id'],'closed':![]};return db[_0x3e93('0xa4')][_0x3e93('0x5e')]({'where':_0x48c2b4})['then'](function(_0x573f4b){if(_0x573f4b){return[_0x573f4b,![]];}return db[_0x3e93('0xa4')][_0x3e93('0x5f')](_0x3a44d5)[_0x3e93('0x39')](function(_0x2feb99){return[_0x2feb99,!![]];});});}})[_0x3e93('0xa5')](function(_0x2ab2d2,_0x5477e3){_0x246681[_0x3e93('0xa6')]=_0x2ab2d2[_0x3e93('0x3a')]({'plain':!![]});_0x246681['interaction'][_0x3e93('0xa7')]=![];if(_0x5477e3){if(_0x246681[_0x3e93('0x77')][_0x3e93('0xa8')]){_0x246681[_0x3e93('0x78')]['push']({'id':0x0,'priority':_0x246681[_0x3e93('0x78')]['length']+0x1,'app':_0x3e93('0xa9'),'appdata':_0x3e93('0xaa'),'interval':_0x3e93('0xab')});}_0x246681[_0x3e93('0xa6')]['created']=!![];}return db[_0x3e93('0xac')]['create']({'phone':_0x246681[_0x3e93('0x60')][_0x3e93('0x86')],'messageId':_0x246681[_0x3e93('0x60')][_0x3e93('0x88')],'body':_0x246681[_0x3e93('0x60')]['body'],'SmsAccountId':_0x374c70[_0x3e93('0x5c')]['id'],'SmsInteractionId':_0x2ab2d2['id'],'direction':'in','ContactId':_0x2ab2d2['ContactId'],'AttachmentId':_0x246681[_0x3e93('0x60')]['AttachmentId']});})[_0x3e93('0x39')](function(_0x106294){_0x246681['message']=_0x106294;if(_0x246681[_0x3e93('0xa6')][_0x3e93('0xad')]){return db[_0x3e93('0xae')][_0x3e93('0x5e')]({'attributes':['id',_0x3e93('0x3e')],'where':{'id':_0x246681[_0x3e93('0xa6')][_0x3e93('0xad')]}})['then'](function(_0xc9775){if(_0xc9775){_0x246681[_0x3e93('0x78')][_0x3e93('0xaf')]({'id':0x0,'priority':0x0,'app':_0x3e93('0xb0'),'appdata':_0xc9775[_0x3e93('0x3e')]+','+(_0x246681[_0x3e93('0x77')][_0x3e93('0xb1')]||0xa),'interval':_0x3e93('0xab')});}return respondWithRpcPromise(_0x3e93('0xb2'),'startRouting',_0x246681);});}return respondWithRpcPromise('Start',_0x3e93('0xb3'),_0x246681);})[_0x3e93('0x39')](function(_0x21a2c2){if(_0x21a2c2){var _0xe2c8aa=0xc8;var _0x59a6d4='receiveMessage';logger[_0x3e93('0x22')](_0x3e93('0x25'),_0x59a6d4,_0xe2c8aa,_0x3e93('0xb4'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x59a6d4,_0xe2c8aa,_0x3e93('0xb4'),JSON['stringify'](_0x21a2c2));if(_0x246681[_0x3e93('0x77')]['type']==='twilio'){return _0x36834e[_0x3e93('0x2d')](_0xe2c8aa)['set'](_0x3e93('0xb5'),'text/xml')[_0x3e93('0x3f')](_0x3e93('0xb6'));}else{return _0x36834e[_0x3e93('0x2d')](_0xe2c8aa)[_0x3e93('0x2f')](_0x21a2c2);}}})[_0x3e93('0x2b')](handleError(_0x36834e,null));};exports[_0x3e93('0xb7')]=function(_0x44371a,_0x3673b4){var _0x389e51=_0x44371a[_0x3e93('0x5c')]['id'];var _0x28b36d=_0x44371a['body'];var _0x53112d=0xc8;var _0x4173ad=null;return db[_0x3e93('0xb8')][_0x3e93('0xb9')]({'isolationLevel':db[_0x3e93('0xb8')][_0x3e93('0xba')][_0x3e93('0xbb')][_0x3e93('0xbc')]},function(_0x8f8778){return db[_0x3e93('0x43')][_0x3e93('0x71')]({'where':{'id':_0x389e51},'transaction':_0x8f8778})[_0x3e93('0x39')](function(_0x52cf9a){if(_0x52cf9a){return db[_0x3e93('0xbd')][_0x3e93('0x38')]({'where':{'SmsAccountId':_0x389e51},'transaction':_0x8f8778})['then'](function(){var _0x209fd9=_['map'](_0x28b36d,function(_0x5205ed){_0x5205ed['SmsAccountId']=_0x389e51;return _0x5205ed;});return db[_0x3e93('0xbd')][_0x3e93('0xbe')](_0x209fd9,{'transaction':_0x8f8778});});}else{_0x53112d=0x194;_0x4173ad=[];}});})[_0x3e93('0x39')](function(){if(_0x53112d!==0x194){return db['SmsApplication'][_0x3e93('0xbf')]({'where':{'SmsAccountId':_0x389e51},'order':_0x3e93('0x7a')})['then'](function(_0x406258){_0x4173ad=_0x406258;});}})['catch'](function(_0x2f59dd){_0x53112d=0x1f4;logger[_0x3e93('0x27')](_0x2f59dd[_0x3e93('0x3d')]);if(_0x2f59dd[_0x3e93('0x3e')]){delete _0x2f59dd[_0x3e93('0x3e')];}_0x4173ad=_0x2f59dd;})[_0x3e93('0xc0')](function(){if(_0x4173ad===null){_0x3673b4[_0x3e93('0x2c')](_0x53112d);}else{if(_0x53112d===0x1f4){_0x3673b4['status'](_0x53112d)[_0x3e93('0x3f')](_0x4173ad);}else{_0x3673b4[_0x3e93('0x2d')](_0x53112d)[_0x3e93('0x2f')](_0x4173ad);}}});};exports['getApplications']=function(_0x1e2551,_0x51dc1b,_0x2227e8){var _0xf6f896={};var _0x40cf32={};var _0x4d9e45;var _0x358b80;return db[_0x3e93('0x43')]['findOne']({'where':{'id':_0x1e2551[_0x3e93('0x5c')]['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x51dc1b,null))[_0x3e93('0x39')](function(_0x5eb837){if(_0x5eb837){_0x4d9e45=_0x5eb837;_0x40cf32[_0x3e93('0x4b')]=_[_0x3e93('0x48')](db[_0x3e93('0xbd')][_0x3e93('0x72')]);_0x40cf32['query']=_[_0x3e93('0x48')](_0x1e2551[_0x3e93('0x4c')]);_0x40cf32[_0x3e93('0x49')]=_[_0x3e93('0x4a')](_0x40cf32[_0x3e93('0x4b')],_0x40cf32[_0x3e93('0x4c')]);_0xf6f896[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x40cf32[_0x3e93('0x4b')],qs['fields'](_0x1e2551[_0x3e93('0x4c')]['fields']));_0xf6f896[_0x3e93('0x4d')]=_0xf6f896[_0x3e93('0x4d')][_0x3e93('0x5d')]?_0xf6f896[_0x3e93('0x4d')]:_0x40cf32[_0x3e93('0x4b')];_0xf6f896[_0x3e93('0x51')]=qs[_0x3e93('0x6b')](_0x1e2551[_0x3e93('0x4c')]['sort']);_0xf6f896[_0x3e93('0x52')]=qs[_0x3e93('0x49')](_['pick'](_0x1e2551['query'],_0x40cf32[_0x3e93('0x49')]));if(_0x1e2551[_0x3e93('0x4c')]['filter']){_0xf6f896['where']=_[_0x3e93('0x55')](_0xf6f896[_0x3e93('0x52')],{'$or':_[_0x3e93('0x47')](_0xf6f896[_0x3e93('0x4d')],function(_0x190cff){var _0x4c2ea7={};_0x4c2ea7[_0x190cff]={'$like':'%'+_0x1e2551[_0x3e93('0x4c')]['filter']+'%'};return _0x4c2ea7;})});}_0xf6f896=_[_0x3e93('0x55')]({},_0xf6f896,_0x1e2551[_0x3e93('0x57')]);return _0x4d9e45[_0x3e93('0xc1')](_0xf6f896);}})[_0x3e93('0x39')](function(_0xe0b8e6){if(_0xe0b8e6){_0x358b80=_0xe0b8e6['length'];if(!_0x1e2551['query']['hasOwnProperty'](_0x3e93('0x50'))){_0xf6f896[_0x3e93('0x30')]=qs[_0x3e93('0x30')](_0x1e2551['query'][_0x3e93('0x30')]);_0xf6f896[_0x3e93('0x32')]=qs[_0x3e93('0x32')](_0x1e2551[_0x3e93('0x4c')][_0x3e93('0x32')]);}return _0x4d9e45['getApplications'](_0xf6f896);}})[_0x3e93('0x39')](function(_0x13471e){if(_0x13471e){return _0x13471e?{'count':_0x358b80,'rows':_0x13471e}:null;}})[_0x3e93('0x39')](respondWithResult(_0x51dc1b,null))[_0x3e93('0x2b')](handleError(_0x51dc1b,null));};exports[_0x3e93('0xc2')]=function(_0x542770,_0x1b865d,_0x34fdf4){var _0x110485={'raw':![],'where':{}};var _0x570c1f={};var _0x5eda65={'count':0x0,'rows':[]};return db[_0x3e93('0x43')][_0x3e93('0x71')]({'where':{'id':_0x542770['params']['id']}})['then'](handleEntityNotFound(_0x1b865d,null))[_0x3e93('0x39')](function(_0x45c6d8){if(_0x45c6d8){_0x570c1f[_0x3e93('0x4b')]=_['keys'](db[_0x3e93('0xa4')][_0x3e93('0x72')]);_0x570c1f[_0x3e93('0x4c')]=_[_0x3e93('0x48')](_0x542770[_0x3e93('0x4c')]);_0x570c1f[_0x3e93('0x49')]=_[_0x3e93('0x4a')](_0x570c1f[_0x3e93('0x4b')],_0x570c1f[_0x3e93('0x4c')]);_0x110485[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x570c1f[_0x3e93('0x4b')],qs[_0x3e93('0x4e')](_0x542770[_0x3e93('0x4c')][_0x3e93('0x4e')]));_0x110485[_0x3e93('0x4d')]=_0x110485[_0x3e93('0x4d')][_0x3e93('0x5d')]?_0x110485[_0x3e93('0x4d')]:_0x570c1f[_0x3e93('0x4b')];if(!_0x542770[_0x3e93('0x4c')][_0x3e93('0x4f')](_0x3e93('0x50'))){_0x110485[_0x3e93('0x30')]=qs['limit'](_0x542770[_0x3e93('0x4c')]['limit']);_0x110485[_0x3e93('0x32')]=qs[_0x3e93('0x32')](_0x542770['query']['offset']);}_0x110485['order']=qs['sort'](_0x542770['query'][_0x3e93('0x6b')]);_0x110485[_0x3e93('0x52')]=qs['filters'](_[_0x3e93('0x53')](_0x542770['query'],_0x570c1f[_0x3e93('0x49')]));_0x110485[_0x3e93('0x52')]['SmsAccountId']=_0x45c6d8['id'];if(_0x542770['query'][_0x3e93('0x54')]){_0x110485[_0x3e93('0x52')]=_[_0x3e93('0x55')](_0x110485['where'],{'$or':_[_0x3e93('0x47')](_0x110485['attributes'],function(_0x3efebc){var _0xde511d={};_0xde511d[_0x3efebc]={'$like':'%'+_0x542770[_0x3e93('0x4c')][_0x3e93('0x54')]+'%'};return _0xde511d;})});}_0x110485=_[_0x3e93('0x55')]({},_0x110485,_0x542770[_0x3e93('0x57')]);return db[_0x3e93('0xa4')]['count']({'where':_0x110485[_0x3e93('0x52')]})[_0x3e93('0x39')](function(_0x74cb4){_0x5eda65[_0x3e93('0x33')]=_0x74cb4;if(_0x542770['query'][_0x3e93('0x58')]){_0x110485[_0x3e93('0x6c')]=[{'model':db['CmContact'],'as':_0x3e93('0xc3'),'required':![]},{'model':db[_0x3e93('0xae')],'as':_0x3e93('0xc4'),'attributes':['name',_0x3e93('0xc5'),_0x3e93('0xc6')],'required':![]},{'model':db[_0x3e93('0xc7')],'as':_0x3e93('0xc8'),'attributes':['id','name',_0x3e93('0xc9')],'where':_0x542770[_0x3e93('0x4c')]['tag']?{'id':_0x542770['query'][_0x3e93('0xca')]}:undefined,'required':_0x542770['query'][_0x3e93('0xca')]?!![]:![]}];}return db['SmsInteraction'][_0x3e93('0x59')](_0x110485);})[_0x3e93('0x39')](function(_0x4f8a41){_0x5eda65[_0x3e93('0x5a')]=_0x4f8a41;return _0x5eda65;});}})[_0x3e93('0x39')](respondWithFilteredResult(_0x1b865d,_0x110485))[_0x3e93('0x2b')](handleError(_0x1b865d,null));};exports[_0x3e93('0x3f')]=function(_0x552a5a,_0x323d2f,_0x4eee15){var _0x171564,_0x3ec14a,_0x18e943;if(_[_0x3e93('0x9a')](_0x552a5a[_0x3e93('0x60')][_0x3e93('0x60')])||_0x552a5a[_0x3e93('0x60')][_0x3e93('0x60')]===''){throw new db[(_0x3e93('0x7c'))]['ValidationError'](_0x3e93('0xcb'));}if(_['isNil'](_0x552a5a[_0x3e93('0x60')]['to'])){throw new db['Sequelize'][(_0x3e93('0x7d'))](_0x3e93('0xcc'));}_0x171564=_0x552a5a[_0x3e93('0x60')]['to'];return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x552a5a[_0x3e93('0x5c')]['id']},'include':[{'model':db[_0x3e93('0x9f')],'as':'List','include':[{'model':db['CmContact'],'as':_0x3e93('0xa0'),'where':{'mobile':_0x171564},'limit':0x1,'order':[[_0x3e93('0x81'),_0x3e93('0xa1')]]}]}]})[_0x3e93('0x39')](handleEntityNotFound(_0x323d2f,null))[_0x3e93('0x39')](function(_0x3d6cc5){if(_0x3d6cc5&&_0x3d6cc5[_0x3e93('0xcd')]){_0x3ec14a=_0x3d6cc5['get']({'plain':!![]});if(_0x3ec14a['List']&&_0x3ec14a['List'][_0x3e93('0xa0')][_0x3e93('0x5d')]){return _0x3ec14a[_0x3e93('0xcd')][_0x3e93('0xa0')][0x0];}return db[_0x3e93('0x7b')][_0x3e93('0x5f')](_[_0x3e93('0xce')](_0x552a5a['body'],{'firstName':_0x171564,'mobile':_0x171564,'phone':_0x171564,'ListId':_0x3ec14a[_0x3e93('0x83')]}));}})[_0x3e93('0x39')](handleEntityNotFound(_0x323d2f,null))[_0x3e93('0x39')](function(_0x4a8ff1){if(_0x4a8ff1){_0x18e943=_0x4a8ff1;return db[_0x3e93('0xa4')]['find']({'where':{'ContactId':_0x18e943['id'],'closed':![],'SmsAccountId':_0x3ec14a['id']}})[_0x3e93('0x39')](function(_0x37d073){if(_0x37d073){return[_0x37d073,![]];}return db[_0x3e93('0xa4')]['create']({'UserId':_0x552a5a['user']['id'],'ContactId':_0x18e943['id'],'SmsAccountId':_0x3ec14a['id'],'phone':_0x171564,'firstMsgDirection':'out','Messages':[_[_0x3e93('0x55')](_0x552a5a[_0x3e93('0x60')],{'read':![],'body':_0x552a5a['body'][_0x3e93('0x60')],'phone':_0x171564,'SmsAccountId':_0x3ec14a['id'],'UserId':_0x552a5a[_0x3e93('0x61')]['id'],'ContactId':_0x18e943['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x3e93('0xcf')}]})[_0x3e93('0x39')](function(_0x48256b){return[_0x48256b,!![]];});});}})[_0x3e93('0xa5')](function(_0x4daf49,_0x58f795){if(_0x58f795){return _0x4daf49;}return db[_0x3e93('0xac')][_0x3e93('0x5f')](_[_0x3e93('0x55')](_0x552a5a['body'],{'read':![],'body':_0x552a5a[_0x3e93('0x60')][_0x3e93('0x60')],'phone':_0x171564,'SmsAccountId':_0x3ec14a['id'],'SmsInteractionId':_0x4daf49['id'],'UserId':_0x552a5a[_0x3e93('0x61')]['id'],'ContactId':_0x18e943['id']}))[_0x3e93('0x39')](function(_0x274197){_0x4daf49[_0x3e93('0xd0')][_0x3e93('0xcf')]=[];_0x4daf49['dataValues'][_0x3e93('0xcf')][_0x3e93('0xd1')](_0x274197['dataValues']);return _0x4daf49;});})[_0x3e93('0x39')](respondWithResult(_0x323d2f,null))[_0x3e93('0x2b')](handleError(_0x323d2f,null));};exports[_0x3e93('0x2d')]=function(_0x2eb2c7,_0xce8121,_0x19a879){if(_0x2eb2c7[_0x3e93('0x60')]['id']){delete _0x2eb2c7['body']['id'];}var _0x36d7ab,_0x3b32e0,_0x5ce361;return db[_0x3e93('0x43')]['find']({'where':{'id':_0x2eb2c7[_0x3e93('0x5c')]['id']}})['then'](handleEntityNotFound(_0xce8121,null))[_0x3e93('0x39')](function(_0x2db882){if(_0x2db882){_0x5ce361=_0x2db882;logger[_0x3e93('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3e93('0x2d'),_0x3e93('0xd2'),_0x2db882[_0x3e93('0x45')],util[_0x3e93('0xd3')](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));switch(_0x2db882['type']){case _0x3e93('0x8a'):if(_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0xd4')]&&_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x2d')]){_0x3b32e0=_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x2d')];return db[_0x3e93('0xac')][_0x3e93('0x5e')]({'where':{'messageId':_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0xd4')]}});}break;case _0x3e93('0xd5'):if(_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0xd6')]&&_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0xd7')]){_0x3b32e0=_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0xd7')];return db['SmsMessage'][_0x3e93('0x5e')]({'where':{'messageId':_0x2eb2c7[_0x3e93('0x60')]['requestid']}});}break;case'clicksend':if(_0x2eb2c7['body'][_0x3e93('0x8d')]&&_0x2eb2c7['body'][_0x3e93('0xd8')]){_0x3b32e0=_0x2eb2c7[_0x3e93('0x60')]['status_code'];return db['SmsMessage'][_0x3e93('0x5e')]({'where':{'messageId':_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x8d')]}});}break;case'infobip':var _0xd5f32c=_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x92')][0x0];if(_0xd5f32c[_0x3e93('0x88')]&&_0xd5f32c[_0x3e93('0x2d')][_0x3e93('0xd9')]==='DELIVERED'){_0x3b32e0=_0xd5f32c[_0x3e93('0x2d')][_0x3e93('0xd9')];return db[_0x3e93('0xac')][_0x3e93('0x5e')]({'where':{'messageId':_0xd5f32c['messageId']}});}break;case _0x3e93('0x95'):if(_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x88')]&&_0x2eb2c7['body'][_0x3e93('0x2d')]){_0x3b32e0=_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x2d')];return db['SmsMessage'][_0x3e93('0x5e')]({'where':{'messageId':_0x2eb2c7['body']['messageId']}});}break;case _0x3e93('0x97'):if(_0x2eb2c7['body'][0x0][_0x3e93('0x29')]['id']){_0x3b32e0=_0x2eb2c7[_0x3e93('0x60')][0x0]['type'];return db[_0x3e93('0xac')][_0x3e93('0x5e')]({'where':{'messageId':_0x2eb2c7[_0x3e93('0x60')][0x0]['message']['id']}});}break;case _0x3e93('0x98'):if(_0x2eb2c7[_0x3e93('0x60')]['redif']&&_0x2eb2c7[_0x3e93('0x60')]['status']){_0x3b32e0=_0x2eb2c7['body'][_0x3e93('0x2d')];return db[_0x3e93('0xac')][_0x3e93('0x5e')]({'where':{'messageId':_0x2eb2c7['body'][_0x3e93('0xda')]}});}break;}}})['then'](handleEntityNotFound(_0xce8121,null))[_0x3e93('0x39')](function(_0x568ae6){if(_0x568ae6){_0x36d7ab=_0x568ae6;switch(_0x5ce361[_0x3e93('0x45')]){case _0x3e93('0x8a'):if(_0x3b32e0===_0x3e93('0xdb')){return _0x36d7ab[_0x3e93('0x37')]({'read':!![]});}else{logger[_0x3e93('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','skebby',util[_0x3e93('0xd3')](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));}break;case _0x3e93('0xd5'):if(_0x3b32e0==='1'){return _0x36d7ab['update']({'read':!![]});}else{logger[_0x3e93('0x27')](_0x3e93('0x25'),_0x3e93('0x2d'),'skebby',util[_0x3e93('0xd3')](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));}break;case _0x3e93('0xdc'):if(!_0x2eb2c7[_0x3e93('0x60')]['error_code']&&_0x3b32e0>=0xc8&&_0x3b32e0<=0xce){return _0x36d7ab[_0x3e93('0x37')]({'read':!![]});}else{logger['error'](_0x3e93('0x25'),_0x3e93('0x2d'),_0x3e93('0xdc'),util[_0x3e93('0xd3')](_0x2eb2c7['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x298c57=_0x2eb2c7[_0x3e93('0x60')][_0x3e93('0x92')][0x0];if(_0x298c57[_0x3e93('0x2d')][_0x3e93('0xd9')]===_0x3e93('0xdb')){return _0x36d7ab[_0x3e93('0x37')]({'read':!![]});}else{logger[_0x3e93('0x27')](_0x3e93('0x25'),_0x3e93('0x2d'),_0x3e93('0x91'),util[_0x3e93('0xd3')](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));}break;case _0x3e93('0x95'):if(_0x3b32e0==_0x3e93('0xdd')||_0x3b32e0==_0x3e93('0xde')){return _0x36d7ab[_0x3e93('0x37')]({'read':!![]});}else{logger[_0x3e93('0x27')](_0x3e93('0x25'),_0x3e93('0x2d'),_0x3e93('0x95'),util['inspect'](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x3b32e0=='message-delivered'){return _0x36d7ab['update']({'read':!![]});}else{logger[_0x3e93('0x27')](_0x3e93('0x25'),_0x3e93('0x2d'),_0x3e93('0x97'),util[_0x3e93('0xd3')](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));}break;case _0x3e93('0x98'):if(_0x3b32e0===_0x3e93('0xdf')||_0x3b32e0==='ACCEPTD'){return _0x36d7ab[_0x3e93('0x37')]({'read':!![]});}else{logger[_0x3e93('0x27')](_0x3e93('0x25'),_0x3e93('0x2d'),_0x3e93('0x98'),util[_0x3e93('0xd3')](_0x2eb2c7[_0x3e93('0x60')],{'showHidden':![],'depth':null}));}break;}return _0x36d7ab;}})[_0x3e93('0x39')](respondWithResult(_0xce8121,null))[_0x3e93('0x2b')](handleError(_0xce8121,null));};exports['statusGet']=function(_0x4be2bc,_0x2de91b,_0x35ed50){var _0x1594ef,_0x46ecb7,_0x2af057;return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x4be2bc[_0x3e93('0x5c')]['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x2de91b,null))['then'](function(_0x465a97){if(_0x465a97){_0x2af057=_0x465a97;logger[_0x3e93('0x24')](_0x3e93('0x25'),'status',_0x3e93('0xd2'),_0x465a97[_0x3e93('0x45')],util[_0x3e93('0xd3')](_0x4be2bc[_0x3e93('0x4c')],{'showHidden':![],'depth':null}));switch(_0x465a97[_0x3e93('0x45')]){case _0x3e93('0x93'):if(_0x4be2bc['query'][_0x3e93('0xe0')]&&_0x4be2bc['query'][_0x3e93('0xe1')]){_0x46ecb7=_0x4be2bc[_0x3e93('0x4c')][_0x3e93('0xe1')];return db[_0x3e93('0xac')][_0x3e93('0x5e')]({'where':{'messageId':_0x4be2bc[_0x3e93('0x4c')]['message-id']}});}break;}}})['then'](handleEntityNotFound(_0x2de91b,null))[_0x3e93('0x39')](function(_0x1422bd){if(_0x1422bd){_0x1594ef=_0x1422bd;switch(_0x2af057['type']){case _0x3e93('0x93'):if(_0x46ecb7==='2'||_0x46ecb7==='6'){return _0x1594ef[_0x3e93('0x37')]({'read':!![]});}else{logger['error'](_0x3e93('0x25'),_0x3e93('0x2d'),_0x3e93('0x93'),util[_0x3e93('0xd3')](_0x4be2bc[_0x3e93('0x4c')],{'showHidden':![],'depth':null}));};break;}return _0x1594ef;}})['then'](respondWithResult(_0x2de91b,null))[_0x3e93('0x2b')](handleError(_0x2de91b,null));};exports[_0x3e93('0xe2')]=function(_0x5dc9b2,_0x5568f0,_0x3c9c29){return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x5dc9b2[_0x3e93('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5568f0,null))['then'](function(_0x5178e5){if(_0x5178e5){return _0x5178e5['addAgents'](_0x5dc9b2[_0x3e93('0x60')][_0x3e93('0x6f')],_[_0x3e93('0xe3')](_0x5dc9b2[_0x3e93('0x60')],[_0x3e93('0x6f'),'id'])||{})['spread'](function(_0x27d5bd){for(var _0x344ef5=0x0;_0x344ef5<_0x5dc9b2[_0x3e93('0x60')]['ids'][_0x3e93('0x5d')];_0x344ef5+=0x1){socket[_0x3e93('0xe4')](_0x3e93('0xe5'),{'UserId':Number(_0x5dc9b2['body'][_0x3e93('0x6f')][_0x344ef5]),'SmsAccountId':Number(_0x5dc9b2['params']['id'])});}return _0x27d5bd;});}})['then'](respondWithResult(_0x5568f0,null))[_0x3e93('0x2b')](handleError(_0x5568f0,null));};exports['removeAgents']=function(_0x29e066,_0x1a90a6,_0x3196a4){return db[_0x3e93('0x43')][_0x3e93('0x5e')]({'where':{'id':_0x29e066['params']['id']}})[_0x3e93('0x39')](handleEntityNotFound(_0x1a90a6,null))['then'](function(_0x551f5f){if(_0x551f5f){return _0x551f5f['removeAgents'](_0x29e066['query'][_0x3e93('0x6f')])[_0x3e93('0x39')](function(){if(_[_0x3e93('0xe6')](_0x29e066['query'][_0x3e93('0x6f')])){for(var _0x55c55d=0x0;_0x55c55d<_0x29e066[_0x3e93('0x4c')]['ids'][_0x3e93('0x5d')];_0x55c55d+=0x1){socket[_0x3e93('0xe4')](_0x3e93('0xe7'),{'UserId':Number(_0x29e066[_0x3e93('0x4c')]['ids'][_0x55c55d]),'SmsAccountId':Number(_0x29e066['params']['id'])});}}else{socket[_0x3e93('0xe4')]('userSmsAccount:remove',{'UserId':Number(_0x29e066['query']['ids']),'SmsAccountId':Number(_0x29e066['params']['id'])});}});}})[_0x3e93('0x39')](respondWithStatusCode(_0x1a90a6,null))[_0x3e93('0x2b')](handleError(_0x1a90a6,null));};exports['getAgents']=function(_0x3868b2,_0x4dad7f,_0x44e6d6){var _0x120dbf={};var _0x4f445a={};var _0x5ec7fc;var _0x4e7ab0;return db['SmsAccount']['findOne']({'where':{'id':_0x3868b2[_0x3e93('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4dad7f,null))[_0x3e93('0x39')](function(_0xd6c90f){if(_0xd6c90f){_0x5ec7fc=_0xd6c90f;_0x4f445a[_0x3e93('0x4b')]=_['keys'](db['User'][_0x3e93('0x72')]);_0x4f445a['query']=_[_0x3e93('0x48')](_0x3868b2[_0x3e93('0x4c')]);_0x4f445a[_0x3e93('0x49')]=_[_0x3e93('0x4a')](_0x4f445a[_0x3e93('0x4b')],_0x4f445a[_0x3e93('0x4c')]);_0x120dbf[_0x3e93('0x4d')]=_[_0x3e93('0x4a')](_0x4f445a[_0x3e93('0x4b')],qs[_0x3e93('0x4e')](_0x3868b2[_0x3e93('0x4c')][_0x3e93('0x4e')]));_0x120dbf[_0x3e93('0x4d')]=_0x120dbf[_0x3e93('0x4d')]['length']?_0x120dbf[_0x3e93('0x4d')]:_0x4f445a[_0x3e93('0x4b')];_0x120dbf[_0x3e93('0x51')]=qs[_0x3e93('0x6b')](_0x3868b2[_0x3e93('0x4c')][_0x3e93('0x6b')]);_0x120dbf['where']=qs[_0x3e93('0x49')](_[_0x3e93('0x53')](_0x3868b2[_0x3e93('0x4c')],_0x4f445a[_0x3e93('0x49')]));if(_0x3868b2['query'][_0x3e93('0x54')]){_0x120dbf[_0x3e93('0x52')]=_[_0x3e93('0x55')](_0x120dbf[_0x3e93('0x52')],{'$or':_['map'](_0x120dbf['attributes'],function(_0x40cb27){var _0x13d0c2={};_0x13d0c2[_0x40cb27]={'$like':'%'+_0x3868b2[_0x3e93('0x4c')][_0x3e93('0x54')]+'%'};return _0x13d0c2;})});}_0x120dbf=_['merge']({},_0x120dbf,_0x3868b2[_0x3e93('0x57')]);return _0x5ec7fc[_0x3e93('0xe8')](_0x120dbf);}})[_0x3e93('0x39')](function(_0x46ffd5){if(_0x46ffd5){_0x4e7ab0=_0x46ffd5['length'];if(!_0x3868b2['query'][_0x3e93('0x4f')]('nolimit')){_0x120dbf[_0x3e93('0x30')]=qs[_0x3e93('0x30')](_0x3868b2[_0x3e93('0x4c')]['limit']);_0x120dbf['offset']=qs['offset'](_0x3868b2[_0x3e93('0x4c')][_0x3e93('0x32')]);}return _0x5ec7fc['getAgents'](_0x120dbf);}})['then'](function(_0x4bdd1f){if(_0x4bdd1f){return _0x4bdd1f?{'count':_0x4e7ab0,'rows':_0x4bdd1f}:null;}})[_0x3e93('0x39')](respondWithResult(_0x4dad7f,null))[_0x3e93('0x2b')](handleError(_0x4dad7f,null));};
\ No newline at end of file
+var _0xe088=['result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','get','SmsAccounts','UserProfileResource','name','send','index','Pause','SmsAccount','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','length','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','params','mandatoryDispositionPause','fields','options','create','user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','Disposition','getDispositions','findOne','hasOwnProperty','SmsAccountId','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','notify','SmsApplication','Applications','applications','priority','asc','account','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','mobile','from','messageId','MessageSid','skebby','connectel','clicksend','message_id','plivo','From','Text','MessageUUID','infobip','results','csc','segmentedMessage','fromNumber','text','bandwidth','intelepeer','refid','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','list','omit','Contacts','CmContact','contact','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','sequelize','Transaction','READ_COMMITTED','bulkCreate','stack','finally','getApplications','getInteractions','Contact','Owner','fullname','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','DELIVERED','groupName','clickatell','redif','error_code','DELIVERED_TO_GATEWAY','message-delivered','DELIVRD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','request-promise','moment','bluebird','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./smsAccount.socket','register','jayson/promise','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xe088,0xb6));var _0x8e08=function(_0x1abb11,_0xd68915){_0x1abb11=_0x1abb11-0x0;var _0x149a9f=_0xe088[_0x1abb11];return _0x149a9f;};'use strict';var emlformat=require(_0x8e08('0x0'));var rimraf=require(_0x8e08('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8e08('0x2'));var moment=require(_0x8e08('0x3'));var BPromise=require(_0x8e08('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x8e08('0x5'));var csv=require('to-csv');var ejs=require(_0x8e08('0x6'));var fs=require('fs');var fs_extra=require(_0x8e08('0x7'));var _=require(_0x8e08('0x8'));var squel=require(_0x8e08('0x9'));var crypto=require(_0x8e08('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x8e08('0xb'));var toCsv=require('to-csv');var querystring=require(_0x8e08('0xc'));var Papa=require(_0x8e08('0xd'));var Redis=require(_0x8e08('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8e08('0xf'));var hardwareService=require(_0x8e08('0x10'));var logger=require(_0x8e08('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x8e08('0x12'));var licenseUtil=require(_0x8e08('0x13'));var db=require('../../mysqldb')['db'];config[_0x8e08('0x14')]=_[_0x8e08('0x15')](config[_0x8e08('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x8e08('0x16'))(new Redis(config[_0x8e08('0x14')]));require(_0x8e08('0x17'))[_0x8e08('0x18')](socket);var jayson=require(_0x8e08('0x19'));var client=jayson['client'][_0x8e08('0x1a')]({'port':0x232c});function respondWithRpcPromise(_0x446e74,_0x3389f8,_0x50cec4,_0x1edc4b){return new BPromise(function(_0x1c7c24,_0x3f3252){var _0x2f37b7=_0x1edc4b||client;return _0x2f37b7[_0x8e08('0x1b')](_0x446e74,_0x50cec4)[_0x8e08('0x1c')](function(_0x5250c7){logger[_0x8e08('0x1d')](_0x8e08('0x1e'),_0x3389f8,_0x8e08('0x1f'));logger[_0x8e08('0x20')](_0x8e08('0x21'),_0x3389f8,_0x8e08('0x1f'),JSON[_0x8e08('0x22')](_0x5250c7));if(_0x5250c7[_0x8e08('0x23')]){if(_0x5250c7[_0x8e08('0x23')][_0x8e08('0x24')]===0x1f4){logger['error'](_0x8e08('0x1e'),_0x3389f8,_0x5250c7[_0x8e08('0x23')]['message']);return _0x3f3252(_0x5250c7['error'][_0x8e08('0x25')]);}logger[_0x8e08('0x23')]('SmsAccount,\x20%s,\x20%s',_0x3389f8,_0x5250c7[_0x8e08('0x23')][_0x8e08('0x25')]);return _0x1c7c24(_0x5250c7[_0x8e08('0x23')]['message']);}else{logger[_0x8e08('0x1d')](_0x8e08('0x1e'),_0x3389f8,_0x8e08('0x1f'));_0x1c7c24(_0x5250c7[_0x8e08('0x26')]['message']);}})[_0x8e08('0x27')](function(_0x370ff5){logger['error'](_0x8e08('0x1e'),_0x3389f8,_0x370ff5);_0x3f3252(_0x370ff5);});});}function respondWithStatusCode(_0x5a16de,_0x4d908a){_0x4d908a=_0x4d908a||0xcc;return function(_0x3f752b){if(_0x3f752b){return _0x5a16de[_0x8e08('0x28')](_0x4d908a);}return _0x5a16de['status'](_0x4d908a)['end']();};}function respondWithResult(_0xb94a81,_0x424f16){_0x424f16=_0x424f16||0xc8;return function(_0x4f428b){if(_0x4f428b){return _0xb94a81[_0x8e08('0x29')](_0x424f16)[_0x8e08('0x2a')](_0x4f428b);}};}function respondWithFilteredResult(_0x20e5b0,_0x4c0864){return function(_0x5a64da){if(_0x5a64da){var _0x36d15d=typeof _0x4c0864[_0x8e08('0x2b')]===_0x8e08('0x2c')&&typeof _0x4c0864[_0x8e08('0x2d')]===_0x8e08('0x2c');var _0x11d305=_0x5a64da[_0x8e08('0x2e')];var _0x56dbe1=_0x36d15d?0x0:_0x4c0864[_0x8e08('0x2b')];var _0x2951b1=_0x36d15d?_0x5a64da[_0x8e08('0x2e')]:_0x4c0864[_0x8e08('0x2b')]+_0x4c0864[_0x8e08('0x2d')];var _0x38630a;if(_0x2951b1>=_0x11d305){_0x2951b1=_0x11d305;_0x38630a=0xc8;}else{_0x38630a=0xce;}_0x20e5b0[_0x8e08('0x29')](_0x38630a);return _0x20e5b0['set'](_0x8e08('0x2f'),_0x56dbe1+'-'+_0x2951b1+'/'+_0x11d305)[_0x8e08('0x2a')](_0x5a64da);}return null;};}function patchUpdates(_0x595710){return function(_0x11d027){try{jsonpatch[_0x8e08('0x30')](_0x11d027,_0x595710,!![]);}catch(_0x722e51){return BPromise['reject'](_0x722e51);}return _0x11d027['save']();};}function saveUpdates(_0x2a56c8,_0x3eb4db){return function(_0x272c2b){if(_0x272c2b){return _0x272c2b[_0x8e08('0x31')](_0x2a56c8)[_0x8e08('0x1c')](function(_0x54da2e){return _0x54da2e;});}return null;};}function removeEntity(_0x52b04e,_0x4ec075){return function(_0xefd591){if(_0xefd591){return _0xefd591[_0x8e08('0x32')]()[_0x8e08('0x1c')](function(){var _0x4c6c85=_0xefd591[_0x8e08('0x33')]({'plain':!![]});var _0x47562f=_0x8e08('0x34');return db[_0x8e08('0x35')][_0x8e08('0x32')]({'where':{'type':_0x47562f,'resourceId':_0x4c6c85['id']}})[_0x8e08('0x1c')](function(){return _0xefd591;});})[_0x8e08('0x1c')](function(){_0x52b04e[_0x8e08('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e3feb,_0x5a4929){return function(_0x20fafe){if(!_0x20fafe){_0x5e3feb[_0x8e08('0x28')](0x194);}return _0x20fafe;};}function handleError(_0x66ca79,_0x11584a){_0x11584a=_0x11584a||0x1f4;return function(_0x2b66e1){logger[_0x8e08('0x23')](_0x2b66e1['stack']);if(_0x2b66e1[_0x8e08('0x36')]){delete _0x2b66e1[_0x8e08('0x36')];}_0x66ca79['status'](_0x11584a)[_0x8e08('0x37')](_0x2b66e1);};}exports[_0x8e08('0x38')]=function(_0x4eb411,_0x3ce227){var _0x3234a4={'include':[{'model':db[_0x8e08('0x39')],'as':'mandatoryDispositionPause'}]},_0x40cde4={},_0x31cab4={'count':0x0,'rows':[]};var _0x41fd37=_['map'](db[_0x8e08('0x3a')][_0x8e08('0x3b')],function(_0x56b285){return{'name':_0x56b285[_0x8e08('0x3c')],'type':_0x56b285[_0x8e08('0x3d')]['key']};});_0x40cde4['model']=_[_0x8e08('0x3e')](_0x41fd37,_0x8e08('0x36'));_0x40cde4[_0x8e08('0x3f')]=_[_0x8e08('0x40')](_0x4eb411[_0x8e08('0x3f')]);_0x40cde4[_0x8e08('0x41')]=_[_0x8e08('0x42')](_0x40cde4[_0x8e08('0x43')],_0x40cde4[_0x8e08('0x3f')]);_0x3234a4['attributes']=_[_0x8e08('0x42')](_0x40cde4['model'],qs['fields'](_0x4eb411[_0x8e08('0x3f')]['fields']));_0x3234a4[_0x8e08('0x44')]=_0x3234a4[_0x8e08('0x44')][_0x8e08('0x45')]?_0x3234a4[_0x8e08('0x44')]:_0x40cde4['model'];if(!_0x4eb411[_0x8e08('0x3f')]['hasOwnProperty'](_0x8e08('0x46'))){_0x3234a4[_0x8e08('0x2d')]=qs['limit'](_0x4eb411[_0x8e08('0x3f')][_0x8e08('0x2d')]);_0x3234a4['offset']=qs[_0x8e08('0x2b')](_0x4eb411[_0x8e08('0x3f')][_0x8e08('0x2b')]);}_0x3234a4[_0x8e08('0x47')]=qs[_0x8e08('0x48')](_0x4eb411['query']['sort']);_0x3234a4[_0x8e08('0x49')]=qs[_0x8e08('0x41')](_[_0x8e08('0x4a')](_0x4eb411[_0x8e08('0x3f')],_0x40cde4[_0x8e08('0x41')]),_0x41fd37);if(_0x4eb411[_0x8e08('0x3f')][_0x8e08('0x4b')]){_0x3234a4[_0x8e08('0x49')]=_['merge'](_0x3234a4[_0x8e08('0x49')],{'$or':_['map'](_0x41fd37,function(_0x175fff){if(_0x175fff[_0x8e08('0x3d')]!=='VIRTUAL'){var _0x264138={};_0x264138[_0x175fff['name']]={'$like':'%'+_0x4eb411[_0x8e08('0x3f')]['filter']+'%'};return _0x264138;}})});}_0x3234a4=_[_0x8e08('0x4c')]({},_0x3234a4,_0x4eb411['options']);var _0x101bfe={'where':_0x3234a4[_0x8e08('0x49')]};return db['SmsAccount'][_0x8e08('0x2e')](_0x101bfe)['then'](function(_0x2eeb71){_0x31cab4['count']=_0x2eeb71;if(_0x4eb411[_0x8e08('0x3f')][_0x8e08('0x4d')]){_0x3234a4[_0x8e08('0x4e')]=[{'all':!![]}];}return db['SmsAccount'][_0x8e08('0x4f')](_0x3234a4);})[_0x8e08('0x1c')](function(_0x468243){_0x31cab4[_0x8e08('0x50')]=_0x468243;return _0x31cab4;})[_0x8e08('0x1c')](respondWithFilteredResult(_0x3ce227,_0x3234a4))['catch'](handleError(_0x3ce227,null));};exports['show']=function(_0x49d16d,_0x4937a3){var _0x3d742c={'raw':![],'where':{'id':_0x49d16d[_0x8e08('0x51')]['id']},'include':[{'model':db['Pause'],'as':_0x8e08('0x52')}]},_0x2df0fa={};_0x2df0fa[_0x8e08('0x43')]=_['keys'](db[_0x8e08('0x3a')]['rawAttributes']);_0x2df0fa[_0x8e08('0x3f')]=_['keys'](_0x49d16d[_0x8e08('0x3f')]);_0x2df0fa['filters']=_[_0x8e08('0x42')](_0x2df0fa['model'],_0x2df0fa['query']);_0x3d742c[_0x8e08('0x44')]=_[_0x8e08('0x42')](_0x2df0fa[_0x8e08('0x43')],qs[_0x8e08('0x53')](_0x49d16d[_0x8e08('0x3f')][_0x8e08('0x53')]));_0x3d742c['attributes']=_0x3d742c[_0x8e08('0x44')][_0x8e08('0x45')]?_0x3d742c[_0x8e08('0x44')]:_0x2df0fa[_0x8e08('0x43')];if(_0x49d16d[_0x8e08('0x3f')]['includeAll']){_0x3d742c[_0x8e08('0x4e')]=[{'all':!![]}];}_0x3d742c=_[_0x8e08('0x4c')]({},_0x3d742c,_0x49d16d[_0x8e08('0x54')]);return db[_0x8e08('0x3a')]['find'](_0x3d742c)[_0x8e08('0x1c')](handleEntityNotFound(_0x4937a3,null))['then'](respondWithResult(_0x4937a3,null))[_0x8e08('0x27')](handleError(_0x4937a3,null));};exports['create']=function(_0x3529db,_0x166513){return db[_0x8e08('0x3a')][_0x8e08('0x55')](_0x3529db['body'],{})[_0x8e08('0x1c')](function(_0x1fe7e6){var _0x415d61=_0x3529db[_0x8e08('0x56')][_0x8e08('0x33')]({'plain':!![]});if(!_0x415d61)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x415d61[_0x8e08('0x57')]===_0x8e08('0x56')){var _0x2785d0=_0x1fe7e6[_0x8e08('0x33')]({'plain':!![]});var _0x37f109=_0x8e08('0x34');return db[_0x8e08('0x58')][_0x8e08('0x59')]({'where':{'name':_0x37f109,'userProfileId':_0x415d61[_0x8e08('0x5a')]},'raw':!![]})[_0x8e08('0x1c')](function(_0x49351d){if(_0x49351d&&_0x49351d[_0x8e08('0x5b')]===0x0){return db['UserProfileResource'][_0x8e08('0x55')]({'name':_0x2785d0['name'],'resourceId':_0x2785d0['id'],'type':_0x49351d['name'],'sectionId':_0x49351d['id']},{})[_0x8e08('0x1c')](function(){return _0x1fe7e6;});}else{return _0x1fe7e6;}})[_0x8e08('0x27')](function(_0x19931f){logger[_0x8e08('0x23')](_0x8e08('0x5c'),_0x19931f);throw _0x19931f;});}return _0x1fe7e6;})[_0x8e08('0x1c')](respondWithResult(_0x166513,0xc9))['catch'](handleError(_0x166513,null));};exports[_0x8e08('0x31')]=function(_0x4a59b7,_0x454210){if(_0x4a59b7[_0x8e08('0x5d')]['id']){delete _0x4a59b7['body']['id'];}return db['SmsAccount'][_0x8e08('0x59')]({'where':{'id':_0x4a59b7[_0x8e08('0x51')]['id']},'include':[{'model':db[_0x8e08('0x39')],'as':_0x8e08('0x52')}]})['then'](handleEntityNotFound(_0x454210,null))[_0x8e08('0x1c')](saveUpdates(_0x4a59b7['body'],null))[_0x8e08('0x1c')](respondWithResult(_0x454210,null))['catch'](handleError(_0x454210,null));};exports['destroy']=function(_0x2844bb,_0x5c791b){return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x2844bb['params']['id']}})['then'](handleEntityNotFound(_0x5c791b,null))[_0x8e08('0x1c')](removeEntity(_0x5c791b,null))[_0x8e08('0x27')](handleError(_0x5c791b,null));};exports['describe']=function(_0x30200b,_0xb66757){return db['SmsAccount'][_0x8e08('0x5e')]()['then'](respondWithResult(_0xb66757,null))[_0x8e08('0x27')](handleError(_0xb66757,null));};exports['addDisposition']=function(_0x1d9bf5,_0x3593a6,_0x5046c0){if(_0x1d9bf5[_0x8e08('0x5d')]['id']){delete _0x1d9bf5[_0x8e08('0x5d')]['id'];}return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x1d9bf5[_0x8e08('0x51')]['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x3593a6,null))[_0x8e08('0x1c')](function(_0x2f6250){if(_0x2f6250){_0x1d9bf5[_0x8e08('0x5d')]['SmsAccountId']=_0x2f6250['id'];return db[_0x8e08('0x5f')][_0x8e08('0x55')](_0x1d9bf5['body']);}})[_0x8e08('0x1c')](respondWithResult(_0x3593a6,null))[_0x8e08('0x27')](handleError(_0x3593a6,null));};exports[_0x8e08('0x60')]=function(_0x5275a9,_0x3a8964,_0xbe07b2){var _0x4ecf06={'raw':![],'where':{}};var _0x48af15={};var _0x4949d7={'count':0x0,'rows':[]};return db['SmsAccount'][_0x8e08('0x61')]({'where':{'id':_0x5275a9[_0x8e08('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a8964,null))['then'](function(_0x268857){if(_0x268857){_0x48af15[_0x8e08('0x43')]=_['keys'](db[_0x8e08('0x5f')][_0x8e08('0x3b')]);_0x48af15['query']=_[_0x8e08('0x40')](_0x5275a9[_0x8e08('0x3f')]);_0x48af15[_0x8e08('0x41')]=_[_0x8e08('0x42')](_0x48af15[_0x8e08('0x43')],_0x48af15[_0x8e08('0x3f')]);_0x4ecf06[_0x8e08('0x44')]=_[_0x8e08('0x42')](_0x48af15['model'],qs['fields'](_0x5275a9[_0x8e08('0x3f')][_0x8e08('0x53')]));_0x4ecf06[_0x8e08('0x44')]=_0x4ecf06['attributes']['length']?_0x4ecf06[_0x8e08('0x44')]:_0x48af15[_0x8e08('0x43')];if(!_0x5275a9[_0x8e08('0x3f')][_0x8e08('0x62')](_0x8e08('0x46'))){_0x4ecf06[_0x8e08('0x2d')]=qs[_0x8e08('0x2d')](_0x5275a9['query'][_0x8e08('0x2d')]);_0x4ecf06[_0x8e08('0x2b')]=qs['offset'](_0x5275a9[_0x8e08('0x3f')][_0x8e08('0x2b')]);}_0x4ecf06[_0x8e08('0x47')]=qs[_0x8e08('0x48')](_0x5275a9[_0x8e08('0x3f')][_0x8e08('0x48')]);_0x4ecf06['where']=qs['filters'](_[_0x8e08('0x4a')](_0x5275a9[_0x8e08('0x3f')],_0x48af15[_0x8e08('0x41')]));_0x4ecf06[_0x8e08('0x49')][_0x8e08('0x63')]=_0x268857['id'];if(_0x5275a9[_0x8e08('0x3f')]['filter']){_0x4ecf06['where']=_[_0x8e08('0x4c')](_0x4ecf06[_0x8e08('0x49')],{'$or':_['map'](_0x4ecf06[_0x8e08('0x44')],function(_0x532f64){var _0x2cdeed={};_0x2cdeed[_0x532f64]={'$like':'%'+_0x5275a9[_0x8e08('0x3f')][_0x8e08('0x4b')]+'%'};return _0x2cdeed;})});}_0x4ecf06=_[_0x8e08('0x4c')]({},_0x4ecf06,_0x5275a9[_0x8e08('0x54')]);return db[_0x8e08('0x5f')][_0x8e08('0x2e')]({'where':_0x4ecf06['where']})[_0x8e08('0x1c')](function(_0x343be9){_0x4949d7[_0x8e08('0x2e')]=_0x343be9;if(_0x5275a9[_0x8e08('0x3f')][_0x8e08('0x4d')]){_0x4ecf06[_0x8e08('0x4e')]=[{'all':!![]}];}return db['Disposition'][_0x8e08('0x4f')](_0x4ecf06);})[_0x8e08('0x1c')](function(_0x319033){_0x4949d7['rows']=_0x319033;return _0x4949d7;});}})['then'](respondWithFilteredResult(_0x3a8964,_0x4ecf06))[_0x8e08('0x27')](handleError(_0x3a8964,null));};exports[_0x8e08('0x64')]=function(_0x310cfd,_0x181111,_0xb22e54){return db[_0x8e08('0x3a')]['find']({'where':{'id':_0x310cfd[_0x8e08('0x51')]['id']}})['then'](handleEntityNotFound(_0x181111,null))[_0x8e08('0x1c')](function(_0x5a8bca){if(_0x5a8bca){return _0x5a8bca[_0x8e08('0x64')](_0x310cfd['query']['ids']);}})['then'](respondWithStatusCode(_0x181111,null))[_0x8e08('0x27')](handleError(_0x181111,null));};exports[_0x8e08('0x65')]=function(_0x2a031d,_0x2bbfad,_0x399028){if(_0x2a031d['body']['id']){delete _0x2a031d[_0x8e08('0x5d')]['id'];}return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x2a031d[_0x8e08('0x51')]['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x2bbfad,null))['then'](function(_0x3c3279){if(_0x3c3279){_0x2a031d[_0x8e08('0x5d')][_0x8e08('0x63')]=_0x3c3279['id'];return db[_0x8e08('0x66')]['create'](_0x2a031d[_0x8e08('0x5d')]);}})['then'](respondWithResult(_0x2bbfad,null))[_0x8e08('0x27')](handleError(_0x2bbfad,null));};exports[_0x8e08('0x67')]=function(_0x1444ec,_0x2efaad,_0x38a017){var _0x2aac99={'raw':![],'where':{}};var _0x16420a={};var _0x3469a5={'count':0x0,'rows':[]};return db[_0x8e08('0x3a')]['findOne']({'where':{'id':_0x1444ec[_0x8e08('0x51')]['id']}})['then'](handleEntityNotFound(_0x2efaad,null))['then'](function(_0x3c96be){if(_0x3c96be){_0x16420a['model']=_[_0x8e08('0x40')](db[_0x8e08('0x66')][_0x8e08('0x3b')]);_0x16420a['query']=_[_0x8e08('0x40')](_0x1444ec[_0x8e08('0x3f')]);_0x16420a[_0x8e08('0x41')]=_[_0x8e08('0x42')](_0x16420a['model'],_0x16420a['query']);_0x2aac99[_0x8e08('0x44')]=_[_0x8e08('0x42')](_0x16420a[_0x8e08('0x43')],qs[_0x8e08('0x53')](_0x1444ec['query'][_0x8e08('0x53')]));_0x2aac99[_0x8e08('0x44')]=_0x2aac99['attributes'][_0x8e08('0x45')]?_0x2aac99[_0x8e08('0x44')]:_0x16420a['model'];if(!_0x1444ec[_0x8e08('0x3f')][_0x8e08('0x62')]('nolimit')){_0x2aac99[_0x8e08('0x2d')]=qs[_0x8e08('0x2d')](_0x1444ec[_0x8e08('0x3f')][_0x8e08('0x2d')]);_0x2aac99['offset']=qs[_0x8e08('0x2b')](_0x1444ec[_0x8e08('0x3f')][_0x8e08('0x2b')]);}_0x2aac99[_0x8e08('0x47')]=qs[_0x8e08('0x48')](_0x1444ec[_0x8e08('0x3f')]['sort']);_0x2aac99[_0x8e08('0x49')]=qs[_0x8e08('0x41')](_[_0x8e08('0x4a')](_0x1444ec['query'],_0x16420a['filters']));_0x2aac99[_0x8e08('0x49')][_0x8e08('0x63')]=_0x3c96be['id'];if(_0x1444ec['query'][_0x8e08('0x4b')]){_0x2aac99[_0x8e08('0x49')]=_[_0x8e08('0x4c')](_0x2aac99[_0x8e08('0x49')],{'$or':_[_0x8e08('0x3e')](_0x2aac99[_0x8e08('0x44')],function(_0x43755a){var _0x1f535e={};_0x1f535e[_0x43755a]={'$like':'%'+_0x1444ec[_0x8e08('0x3f')][_0x8e08('0x4b')]+'%'};return _0x1f535e;})});}_0x2aac99=_[_0x8e08('0x4c')]({},_0x2aac99,_0x1444ec[_0x8e08('0x54')]);return db[_0x8e08('0x66')]['count']({'where':_0x2aac99[_0x8e08('0x49')]})[_0x8e08('0x1c')](function(_0x6cd3a9){_0x3469a5[_0x8e08('0x2e')]=_0x6cd3a9;if(_0x1444ec[_0x8e08('0x3f')][_0x8e08('0x4d')]){_0x2aac99[_0x8e08('0x4e')]=[{'all':!![]}];}return db[_0x8e08('0x66')][_0x8e08('0x4f')](_0x2aac99);})[_0x8e08('0x1c')](function(_0x1a31d8){_0x3469a5[_0x8e08('0x50')]=_0x1a31d8;return _0x3469a5;});}})[_0x8e08('0x1c')](respondWithFilteredResult(_0x2efaad,_0x2aac99))[_0x8e08('0x27')](handleError(_0x2efaad,null));};exports[_0x8e08('0x68')]=function(_0x1fff9d,_0x1603f6,_0x3a09b4){return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x1fff9d[_0x8e08('0x51')]['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x1603f6,null))[_0x8e08('0x1c')](function(_0x17eb2c){if(_0x17eb2c){return _0x17eb2c[_0x8e08('0x68')](_0x1fff9d[_0x8e08('0x3f')][_0x8e08('0x69')]);}})[_0x8e08('0x1c')](respondWithStatusCode(_0x1603f6,null))['catch'](handleError(_0x1603f6,null));};exports[_0x8e08('0x6a')]=function(_0x867a3f,_0x5d5a10,_0x4a5bc8){var _0x2a8b7f={'channel':'sms'};var _0x20f3af=[];var _0x5f4266=[];var _0x5aa59b={};return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x867a3f[_0x8e08('0x51')]['id']},'include':[{'model':db[_0x8e08('0x6b')],'as':_0x8e08('0x6c')}]})['then'](handleEntityNotFound(_0x5d5a10,null))[_0x8e08('0x1c')](function(_0x12dca2){_0x2a8b7f['account']=_0x12dca2;_0x2a8b7f[_0x8e08('0x6d')]=_['orderBy'](_0x12dca2[_0x8e08('0x6c')],[_0x8e08('0x6e')],[_0x8e08('0x6f')]);if(_0x2a8b7f['account'][_0x8e08('0x6c')]){delete _0x2a8b7f[_0x8e08('0x70')][_0x8e08('0x6c')];}return db['CmContact'][_0x8e08('0x5e')]();})[_0x8e08('0x1c')](function(_0x53ac7a){if(!_0x53ac7a){throw new db[(_0x8e08('0x71'))][(_0x8e08('0x72'))](_0x8e08('0x73'));}_0x20f3af=_[_0x8e08('0x74')](_[_0x8e08('0x40')](_0x53ac7a),['createdAt',_0x8e08('0x75')]);_0x5f4266=_[_0x8e08('0x74')](_[_0x8e08('0x40')](_0x53ac7a),[_0x8e08('0x76'),_0x8e08('0x75'),_0x8e08('0x77'),'ListId']);_0x2a8b7f[_0x8e08('0x5d')]={'mapKey':_0x8e08('0x78')};if(_0x2a8b7f['account']['type']){switch(_0x2a8b7f['account']['type']){case'twilio':_0x2a8b7f['body'][_0x8e08('0x79')]=_0x867a3f[_0x8e08('0x5d')]['From'];_0x2a8b7f['body'][_0x8e08('0x5d')]=_0x867a3f[_0x8e08('0x5d')]['Body'];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x7a')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x7b')];break;case _0x8e08('0x7c'):_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')]='+'+_0x867a3f[_0x8e08('0x5d')]['sender'];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x5d')]=_0x867a3f[_0x8e08('0x5d')]['text'];break;case _0x8e08('0x7d'):_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')]=_0x867a3f['body'][_0x8e08('0x79')];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x5d')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x25')];break;case _0x8e08('0x7e'):_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x79')];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x5d')]=_0x867a3f['body'][_0x8e08('0x5d')];_0x2a8b7f['body'][_0x8e08('0x7a')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x7f')];break;case _0x8e08('0x80'):_0x2a8b7f['body']['from']=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x81')];_0x2a8b7f[_0x8e08('0x5d')]['body']=_0x867a3f['body'][_0x8e08('0x82')];_0x2a8b7f[_0x8e08('0x5d')]['messageId']=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x83')];break;case _0x8e08('0x84'):_0x2a8b7f[_0x8e08('0x5d')]['from']='+'+_0x867a3f['body'][_0x8e08('0x85')][0x0][_0x8e08('0x79')];_0x2a8b7f['body'][_0x8e08('0x5d')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x85')][0x0]['text'];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x7a')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x85')][0x0]['messageId'];break;case _0x8e08('0x86'):_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')]=_0x867a3f['body']['originatingAddress'];_0x2a8b7f['body'][_0x8e08('0x5d')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x87')][_0x8e08('0x25')];break;case'clickatell':_0x2a8b7f['body']['from']=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x88')];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x5d')]=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x89')];_0x2a8b7f[_0x8e08('0x5d')]['messageId']=_0x867a3f[_0x8e08('0x5d')]['replyMessageId'];break;case _0x8e08('0x8a'):_0x2a8b7f[_0x8e08('0x5d')]['messageId']=_0x867a3f[_0x8e08('0x5d')][0x0]['message']['id'];_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')]=_0x867a3f[_0x8e08('0x5d')][0x0][_0x8e08('0x25')][_0x8e08('0x79')];_0x2a8b7f[_0x8e08('0x5d')]['body']=_0x867a3f[_0x8e08('0x5d')][0x0][_0x8e08('0x25')][_0x8e08('0x89')];break;case _0x8e08('0x8b'):_0x2a8b7f['body']['from']=_0x867a3f['body'][_0x8e08('0x79')];_0x2a8b7f[_0x8e08('0x5d')]['body']=_0x867a3f['body']['message'];_0x2a8b7f[_0x8e08('0x5d')]['messageId']=_0x867a3f[_0x8e08('0x5d')][_0x8e08('0x8c')];break;}}if(_0x2a8b7f['body']['id']){delete _0x2a8b7f[_0x8e08('0x5d')]['id'];}if(_['isNil'](_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')])){throw new db[(_0x8e08('0x71'))][(_0x8e08('0x72'))]('from\x20is\x20mandatory');}if(_[_0x8e08('0x8d')](_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x5d')])||_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x5d')]===''){throw new db[(_0x8e08('0x71'))][(_0x8e08('0x72'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x8e')])){throw new db[(_0x8e08('0x71'))][(_0x8e08('0x72'))](_0x8e08('0x8f')+_0x5f4266);}if(!_[_0x8e08('0x90')](_0x5f4266,_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x8e')])){throw new db[(_0x8e08('0x71'))][(_0x8e08('0x72'))](_0x8e08('0x91')+_0x5f4266);}_0x5aa59b[_0x2a8b7f['body'][_0x8e08('0x8e')]]=_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')];return db[_0x8e08('0x92')][_0x8e08('0x59')]({'where':{'id':_0x2a8b7f[_0x8e08('0x70')]['ListId']},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x5aa59b,'limit':0x1,'order':[[_0x8e08('0x75'),_0x8e08('0x93')]]}]});})[_0x8e08('0x1c')](handleEntityNotFound(_0x5d5a10,null))['then'](function(_0x28cd70){if(_0x28cd70){_0x2a8b7f[_0x8e08('0x94')]=_[_0x8e08('0x95')](_0x28cd70,[_0x8e08('0x96')]);if(_0x28cd70['Contacts'][_0x8e08('0x45')]){return _0x28cd70['Contacts'][0x0];}var _0x48d86c=_[_0x8e08('0x15')](_0x2a8b7f[_0x8e08('0x5d')],{'firstName':_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x79')],'ListId':_0x28cd70['id']});_0x48d86c[_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0x8e')]]=_0x2a8b7f['body'][_0x8e08('0x79')];return db[_0x8e08('0x97')][_0x8e08('0x55')](_0x48d86c,{'fields':_0x20f3af,'raw':!![]});}})['then'](handleEntityNotFound(_0x5d5a10,null))[_0x8e08('0x1c')](function(_0x41642c){if(_0x41642c){_0x2a8b7f[_0x8e08('0x98')]=_0x41642c;var _0x43557a={'ContactId':_0x41642c['id'],'phone':_0x2a8b7f['body'][_0x8e08('0x79')],'SmsAccountId':_0x867a3f['params']['id']};var _0x33247={'ContactId':_0x41642c['id'],'SmsAccountId':_0x867a3f['params']['id'],'closed':![]};return db[_0x8e08('0x99')]['find']({'where':_0x33247})['then'](function(_0x2056a8){if(_0x2056a8){return[_0x2056a8,![]];}return db[_0x8e08('0x99')]['create'](_0x43557a)[_0x8e08('0x1c')](function(_0x2767fc){return[_0x2767fc,!![]];});});}})[_0x8e08('0x9a')](function(_0x271c20,_0x22f393){_0x2a8b7f[_0x8e08('0x9b')]=_0x271c20[_0x8e08('0x33')]({'plain':!![]});_0x2a8b7f['interaction'][_0x8e08('0x9c')]=![];if(_0x22f393){if(_0x2a8b7f[_0x8e08('0x70')][_0x8e08('0x9d')]){_0x2a8b7f['applications']['push']({'id':0x0,'priority':_0x2a8b7f['applications'][_0x8e08('0x45')]+0x1,'app':_0x8e08('0x9e'),'appdata':_0x8e08('0x9f'),'interval':_0x8e08('0xa0')});}_0x2a8b7f[_0x8e08('0x9b')][_0x8e08('0x9c')]=!![];}return db[_0x8e08('0xa1')]['create']({'phone':_0x2a8b7f[_0x8e08('0x5d')]['from'],'messageId':_0x2a8b7f['body'][_0x8e08('0x7a')],'body':_0x2a8b7f[_0x8e08('0x5d')]['body'],'SmsAccountId':_0x867a3f[_0x8e08('0x51')]['id'],'SmsInteractionId':_0x271c20['id'],'direction':'in','ContactId':_0x271c20[_0x8e08('0xa2')],'AttachmentId':_0x2a8b7f[_0x8e08('0x5d')][_0x8e08('0xa3')]});})[_0x8e08('0x1c')](function(_0x5a1f72){_0x2a8b7f['message']=_0x5a1f72;if(_0x2a8b7f[_0x8e08('0x9b')][_0x8e08('0xa4')]){return db[_0x8e08('0xa5')]['find']({'attributes':['id',_0x8e08('0x36')],'where':{'id':_0x2a8b7f[_0x8e08('0x9b')][_0x8e08('0xa4')]}})[_0x8e08('0x1c')](function(_0x39b5e3){if(_0x39b5e3){_0x2a8b7f[_0x8e08('0x6d')]['unshift']({'id':0x0,'priority':0x0,'app':_0x8e08('0xa6'),'appdata':_0x39b5e3[_0x8e08('0x36')]+','+(_0x2a8b7f[_0x8e08('0x70')][_0x8e08('0xa7')]||0xa),'interval':_0x8e08('0xa0')});}return respondWithRpcPromise(_0x8e08('0xa8'),_0x8e08('0xa9'),_0x2a8b7f);});}return respondWithRpcPromise(_0x8e08('0xa8'),_0x8e08('0xa9'),_0x2a8b7f);})['then'](function(_0x13082e){if(_0x13082e){var _0x5cf7e3=0xc8;var _0x565d98=_0x8e08('0xaa');logger[_0x8e08('0x1d')](_0x8e08('0x21'),_0x565d98,_0x5cf7e3,_0x8e08('0xab'));logger['debug'](_0x8e08('0xac'),_0x565d98,_0x5cf7e3,'entity\x20found',JSON[_0x8e08('0x22')](_0x13082e));if(_0x2a8b7f[_0x8e08('0x70')][_0x8e08('0x3d')]==='twilio'){return _0x5d5a10[_0x8e08('0x29')](_0x5cf7e3)[_0x8e08('0xad')]('Content-Type','text/xml')[_0x8e08('0x37')](_0x8e08('0xae'));}else{return _0x5d5a10['status'](_0x5cf7e3)[_0x8e08('0x2a')](_0x13082e);}}})['catch'](handleError(_0x5d5a10,null));};exports[_0x8e08('0xaf')]=function(_0x59368d,_0x4be73b){var _0x1e13cc=_0x59368d[_0x8e08('0x51')]['id'];var _0xef5eeb=_0x59368d[_0x8e08('0x5d')];var _0x494eea=0xc8;var _0x410210=null;return db['sequelize'][_0x8e08('0xb0')]({'isolationLevel':db[_0x8e08('0xb1')][_0x8e08('0xb2')]['ISOLATION_LEVELS'][_0x8e08('0xb3')]},function(_0x47d5e1){return db[_0x8e08('0x3a')][_0x8e08('0x61')]({'where':{'id':_0x1e13cc},'transaction':_0x47d5e1})[_0x8e08('0x1c')](function(_0x1616cd){if(_0x1616cd){return db[_0x8e08('0x6b')][_0x8e08('0x32')]({'where':{'SmsAccountId':_0x1e13cc},'transaction':_0x47d5e1})[_0x8e08('0x1c')](function(){var _0x436f00=_[_0x8e08('0x3e')](_0xef5eeb,function(_0x5e0565){_0x5e0565['SmsAccountId']=_0x1e13cc;return _0x5e0565;});return db['SmsApplication'][_0x8e08('0xb4')](_0x436f00,{'transaction':_0x47d5e1});});}else{_0x494eea=0x194;_0x410210=[];}});})['then'](function(){if(_0x494eea!==0x194){return db[_0x8e08('0x6b')]['findAndCountAll']({'where':{'SmsAccountId':_0x1e13cc},'order':'priority'})[_0x8e08('0x1c')](function(_0x472ae6){_0x410210=_0x472ae6;});}})[_0x8e08('0x27')](function(_0x1db2fa){_0x494eea=0x1f4;logger['error'](_0x1db2fa[_0x8e08('0xb5')]);if(_0x1db2fa[_0x8e08('0x36')]){delete _0x1db2fa[_0x8e08('0x36')];}_0x410210=_0x1db2fa;})[_0x8e08('0xb6')](function(){if(_0x410210===null){_0x4be73b[_0x8e08('0x28')](_0x494eea);}else{if(_0x494eea===0x1f4){_0x4be73b[_0x8e08('0x29')](_0x494eea)[_0x8e08('0x37')](_0x410210);}else{_0x4be73b[_0x8e08('0x29')](_0x494eea)['json'](_0x410210);}}});};exports[_0x8e08('0xb7')]=function(_0x1b1dd6,_0x4defb9,_0x3a832b){var _0x8724d9={};var _0xe3ab4d={};var _0x2508ed;var _0x494b1f;return db[_0x8e08('0x3a')][_0x8e08('0x61')]({'where':{'id':_0x1b1dd6['params']['id']}})['then'](handleEntityNotFound(_0x4defb9,null))['then'](function(_0x51ad0d){if(_0x51ad0d){_0x2508ed=_0x51ad0d;_0xe3ab4d[_0x8e08('0x43')]=_['keys'](db[_0x8e08('0x6b')][_0x8e08('0x3b')]);_0xe3ab4d[_0x8e08('0x3f')]=_['keys'](_0x1b1dd6[_0x8e08('0x3f')]);_0xe3ab4d[_0x8e08('0x41')]=_[_0x8e08('0x42')](_0xe3ab4d[_0x8e08('0x43')],_0xe3ab4d['query']);_0x8724d9[_0x8e08('0x44')]=_['intersection'](_0xe3ab4d[_0x8e08('0x43')],qs[_0x8e08('0x53')](_0x1b1dd6['query'][_0x8e08('0x53')]));_0x8724d9[_0x8e08('0x44')]=_0x8724d9[_0x8e08('0x44')][_0x8e08('0x45')]?_0x8724d9[_0x8e08('0x44')]:_0xe3ab4d[_0x8e08('0x43')];_0x8724d9[_0x8e08('0x47')]=qs[_0x8e08('0x48')](_0x1b1dd6[_0x8e08('0x3f')][_0x8e08('0x48')]);_0x8724d9[_0x8e08('0x49')]=qs[_0x8e08('0x41')](_[_0x8e08('0x4a')](_0x1b1dd6[_0x8e08('0x3f')],_0xe3ab4d['filters']));if(_0x1b1dd6[_0x8e08('0x3f')][_0x8e08('0x4b')]){_0x8724d9['where']=_[_0x8e08('0x4c')](_0x8724d9[_0x8e08('0x49')],{'$or':_[_0x8e08('0x3e')](_0x8724d9[_0x8e08('0x44')],function(_0x49a388){var _0x9943a4={};_0x9943a4[_0x49a388]={'$like':'%'+_0x1b1dd6['query'][_0x8e08('0x4b')]+'%'};return _0x9943a4;})});}_0x8724d9=_[_0x8e08('0x4c')]({},_0x8724d9,_0x1b1dd6[_0x8e08('0x54')]);return _0x2508ed[_0x8e08('0xb7')](_0x8724d9);}})[_0x8e08('0x1c')](function(_0x197b4a){if(_0x197b4a){_0x494b1f=_0x197b4a[_0x8e08('0x45')];if(!_0x1b1dd6[_0x8e08('0x3f')][_0x8e08('0x62')](_0x8e08('0x46'))){_0x8724d9[_0x8e08('0x2d')]=qs['limit'](_0x1b1dd6[_0x8e08('0x3f')][_0x8e08('0x2d')]);_0x8724d9[_0x8e08('0x2b')]=qs['offset'](_0x1b1dd6[_0x8e08('0x3f')]['offset']);}return _0x2508ed[_0x8e08('0xb7')](_0x8724d9);}})[_0x8e08('0x1c')](function(_0x9300d2){if(_0x9300d2){return _0x9300d2?{'count':_0x494b1f,'rows':_0x9300d2}:null;}})[_0x8e08('0x1c')](respondWithResult(_0x4defb9,null))[_0x8e08('0x27')](handleError(_0x4defb9,null));};exports[_0x8e08('0xb8')]=function(_0x416498,_0x5701c7,_0x1bffb8){var _0x440d1a={'raw':![],'where':{}};var _0x3b13f6={};var _0x2d0831={'count':0x0,'rows':[]};return db[_0x8e08('0x3a')][_0x8e08('0x61')]({'where':{'id':_0x416498[_0x8e08('0x51')]['id']}})['then'](handleEntityNotFound(_0x5701c7,null))['then'](function(_0x503e79){if(_0x503e79){_0x3b13f6[_0x8e08('0x43')]=_['keys'](db['SmsInteraction'][_0x8e08('0x3b')]);_0x3b13f6[_0x8e08('0x3f')]=_[_0x8e08('0x40')](_0x416498[_0x8e08('0x3f')]);_0x3b13f6[_0x8e08('0x41')]=_[_0x8e08('0x42')](_0x3b13f6[_0x8e08('0x43')],_0x3b13f6[_0x8e08('0x3f')]);_0x440d1a[_0x8e08('0x44')]=_[_0x8e08('0x42')](_0x3b13f6[_0x8e08('0x43')],qs[_0x8e08('0x53')](_0x416498[_0x8e08('0x3f')][_0x8e08('0x53')]));_0x440d1a[_0x8e08('0x44')]=_0x440d1a[_0x8e08('0x44')][_0x8e08('0x45')]?_0x440d1a[_0x8e08('0x44')]:_0x3b13f6[_0x8e08('0x43')];if(!_0x416498['query'][_0x8e08('0x62')](_0x8e08('0x46'))){_0x440d1a[_0x8e08('0x2d')]=qs[_0x8e08('0x2d')](_0x416498['query'][_0x8e08('0x2d')]);_0x440d1a['offset']=qs[_0x8e08('0x2b')](_0x416498[_0x8e08('0x3f')][_0x8e08('0x2b')]);}_0x440d1a[_0x8e08('0x47')]=qs['sort'](_0x416498[_0x8e08('0x3f')][_0x8e08('0x48')]);_0x440d1a[_0x8e08('0x49')]=qs[_0x8e08('0x41')](_[_0x8e08('0x4a')](_0x416498['query'],_0x3b13f6[_0x8e08('0x41')]));_0x440d1a[_0x8e08('0x49')][_0x8e08('0x63')]=_0x503e79['id'];if(_0x416498[_0x8e08('0x3f')]['filter']){_0x440d1a[_0x8e08('0x49')]=_[_0x8e08('0x4c')](_0x440d1a['where'],{'$or':_[_0x8e08('0x3e')](_0x440d1a[_0x8e08('0x44')],function(_0x59f0f5){var _0x449b42={};_0x449b42[_0x59f0f5]={'$like':'%'+_0x416498['query']['filter']+'%'};return _0x449b42;})});}_0x440d1a=_[_0x8e08('0x4c')]({},_0x440d1a,_0x416498[_0x8e08('0x54')]);return db[_0x8e08('0x99')][_0x8e08('0x2e')]({'where':_0x440d1a[_0x8e08('0x49')]})[_0x8e08('0x1c')](function(_0x53aa75){_0x2d0831[_0x8e08('0x2e')]=_0x53aa75;if(_0x416498[_0x8e08('0x3f')][_0x8e08('0x4d')]){_0x440d1a[_0x8e08('0x4e')]=[{'model':db[_0x8e08('0x97')],'as':_0x8e08('0xb9'),'required':![]},{'model':db[_0x8e08('0xa5')],'as':_0x8e08('0xba'),'attributes':[_0x8e08('0x36'),_0x8e08('0xbb'),'internal'],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x8e08('0x36'),_0x8e08('0xbc')],'where':_0x416498[_0x8e08('0x3f')][_0x8e08('0xbd')]?{'id':_0x416498['query']['tag']}:undefined,'required':_0x416498[_0x8e08('0x3f')][_0x8e08('0xbd')]?!![]:![]}];}return db[_0x8e08('0x99')][_0x8e08('0x4f')](_0x440d1a);})[_0x8e08('0x1c')](function(_0x3bcb80){_0x2d0831[_0x8e08('0x50')]=_0x3bcb80;return _0x2d0831;});}})['then'](respondWithFilteredResult(_0x5701c7,_0x440d1a))[_0x8e08('0x27')](handleError(_0x5701c7,null));};exports[_0x8e08('0x37')]=function(_0x1a1671,_0x49440b,_0x34231e){var _0x40afc7,_0x52a587,_0x15a840;if(_['isNil'](_0x1a1671[_0x8e08('0x5d')]['body'])||_0x1a1671[_0x8e08('0x5d')][_0x8e08('0x5d')]===''){throw new db['Sequelize'][(_0x8e08('0x72'))](_0x8e08('0xbe'));}if(_[_0x8e08('0x8d')](_0x1a1671[_0x8e08('0x5d')]['to'])){throw new db['Sequelize'][(_0x8e08('0x72'))](_0x8e08('0xbf'));}_0x40afc7=_0x1a1671[_0x8e08('0x5d')]['to'];return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x1a1671[_0x8e08('0x51')]['id']},'include':[{'model':db[_0x8e08('0x92')],'as':_0x8e08('0xc0'),'include':[{'model':db[_0x8e08('0x97')],'as':_0x8e08('0x96'),'where':{'mobile':_0x40afc7},'limit':0x1,'order':[[_0x8e08('0x75'),_0x8e08('0x93')]]}]}]})[_0x8e08('0x1c')](handleEntityNotFound(_0x49440b,null))[_0x8e08('0x1c')](function(_0x3a9459){if(_0x3a9459&&_0x3a9459[_0x8e08('0xc0')]){_0x52a587=_0x3a9459['get']({'plain':!![]});if(_0x52a587[_0x8e08('0xc0')]&&_0x52a587[_0x8e08('0xc0')][_0x8e08('0x96')][_0x8e08('0x45')]){return _0x52a587[_0x8e08('0xc0')][_0x8e08('0x96')][0x0];}return db[_0x8e08('0x97')][_0x8e08('0x55')](_[_0x8e08('0x15')](_0x1a1671[_0x8e08('0x5d')],{'firstName':_0x40afc7,'mobile':_0x40afc7,'phone':_0x40afc7,'ListId':_0x52a587['ListId']}));}})[_0x8e08('0x1c')](handleEntityNotFound(_0x49440b,null))[_0x8e08('0x1c')](function(_0x35e3f7){if(_0x35e3f7){_0x15a840=_0x35e3f7;return db['SmsInteraction'][_0x8e08('0x59')]({'where':{'ContactId':_0x15a840['id'],'closed':![],'SmsAccountId':_0x52a587['id']}})['then'](function(_0x4c0378){if(_0x4c0378){return[_0x4c0378,![]];}return db[_0x8e08('0x99')][_0x8e08('0x55')]({'UserId':_0x1a1671[_0x8e08('0x56')]['id'],'ContactId':_0x15a840['id'],'SmsAccountId':_0x52a587['id'],'phone':_0x40afc7,'firstMsgDirection':_0x8e08('0xc1'),'Messages':[_['merge'](_0x1a1671[_0x8e08('0x5d')],{'read':![],'body':_0x1a1671[_0x8e08('0x5d')][_0x8e08('0x5d')],'phone':_0x40afc7,'SmsAccountId':_0x52a587['id'],'UserId':_0x1a1671[_0x8e08('0x56')]['id'],'ContactId':_0x15a840['id']})]},{'include':[{'model':db[_0x8e08('0xa1')],'as':'Messages'}]})[_0x8e08('0x1c')](function(_0x4b7ce6){return[_0x4b7ce6,!![]];});});}})[_0x8e08('0x9a')](function(_0x27bdb8,_0x9ee12a){if(_0x9ee12a){return _0x27bdb8;}return db[_0x8e08('0xa1')][_0x8e08('0x55')](_[_0x8e08('0x4c')](_0x1a1671[_0x8e08('0x5d')],{'read':![],'body':_0x1a1671[_0x8e08('0x5d')][_0x8e08('0x5d')],'phone':_0x40afc7,'SmsAccountId':_0x52a587['id'],'SmsInteractionId':_0x27bdb8['id'],'UserId':_0x1a1671[_0x8e08('0x56')]['id'],'ContactId':_0x15a840['id']}))[_0x8e08('0x1c')](function(_0x357b6){_0x27bdb8['dataValues'][_0x8e08('0xc2')]=[];_0x27bdb8[_0x8e08('0xc3')][_0x8e08('0xc2')]['push'](_0x357b6[_0x8e08('0xc3')]);return _0x27bdb8;});})[_0x8e08('0x1c')](respondWithResult(_0x49440b,null))['catch'](handleError(_0x49440b,null));};exports[_0x8e08('0x29')]=function(_0xe48c94,_0x4c9289,_0xb5746){if(_0xe48c94[_0x8e08('0x5d')]['id']){delete _0xe48c94['body']['id'];}var _0xac743b,_0x479970,_0x52d67b;return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0xe48c94['params']['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x4c9289,null))[_0x8e08('0x1c')](function(_0x174956){if(_0x174956){_0x52d67b=_0x174956;logger[_0x8e08('0x20')](_0x8e08('0x21'),_0x8e08('0x29'),_0x8e08('0xc4'),_0x174956[_0x8e08('0x3d')],util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));switch(_0x174956[_0x8e08('0x3d')]){case'skebby':if(_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc6')]&&_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x29')]){_0x479970=_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x29')];return db[_0x8e08('0xa1')][_0x8e08('0x59')]({'where':{'messageId':_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc6')]}});}break;case _0x8e08('0x7d'):if(_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc7')]&&_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc8')]){_0x479970=_0xe48c94['body'][_0x8e08('0xc8')];return db[_0x8e08('0xa1')][_0x8e08('0x59')]({'where':{'messageId':_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc7')]}});}break;case _0x8e08('0x7e'):if(_0xe48c94[_0x8e08('0x5d')]['message_id']&&_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc9')]){_0x479970=_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xc9')];return db[_0x8e08('0xa1')][_0x8e08('0x59')]({'where':{'messageId':_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x7f')]}});}break;case _0x8e08('0x84'):var _0x29cb73=_0xe48c94['body'][_0x8e08('0x85')][0x0];if(_0x29cb73[_0x8e08('0x7a')]&&_0x29cb73['status']['groupName']===_0x8e08('0xca')){_0x479970=_0x29cb73[_0x8e08('0x29')][_0x8e08('0xcb')];return db[_0x8e08('0xa1')]['find']({'where':{'messageId':_0x29cb73[_0x8e08('0x7a')]}});}break;case _0x8e08('0xcc'):if(_0xe48c94['body']['messageId']&&_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x29')]){_0x479970=_0xe48c94['body'][_0x8e08('0x29')];return db[_0x8e08('0xa1')]['find']({'where':{'messageId':_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x7a')]}});}break;case'bandwidth':if(_0xe48c94[_0x8e08('0x5d')][0x0][_0x8e08('0x25')]['id']){_0x479970=_0xe48c94['body'][0x0]['type'];return db[_0x8e08('0xa1')]['find']({'where':{'messageId':_0xe48c94[_0x8e08('0x5d')][0x0][_0x8e08('0x25')]['id']}});}break;case _0x8e08('0x8b'):if(_0xe48c94['body']['redif']&&_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x29')]){_0x479970=_0xe48c94[_0x8e08('0x5d')][_0x8e08('0x29')];return db[_0x8e08('0xa1')][_0x8e08('0x59')]({'where':{'messageId':_0xe48c94[_0x8e08('0x5d')][_0x8e08('0xcd')]}});}break;}}})[_0x8e08('0x1c')](handleEntityNotFound(_0x4c9289,null))[_0x8e08('0x1c')](function(_0x449062){if(_0x449062){_0xac743b=_0x449062;switch(_0x52d67b[_0x8e08('0x3d')]){case _0x8e08('0x7c'):if(_0x479970===_0x8e08('0xca')){return _0xac743b[_0x8e08('0x31')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8e08('0x29'),_0x8e08('0x7c'),util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x479970==='1'){return _0xac743b[_0x8e08('0x31')]({'read':!![]});}else{logger[_0x8e08('0x23')](_0x8e08('0x21'),_0x8e08('0x29'),_0x8e08('0x7c'),util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x8e08('0x7e'):if(!_0xe48c94['body'][_0x8e08('0xce')]&&_0x479970>=0xc8&&_0x479970<=0xce){return _0xac743b[_0x8e08('0x31')]({'read':!![]});}else{logger[_0x8e08('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x8e08('0x7e'),util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x8e08('0x84'):var _0x5948cd=_0xe48c94['body'][_0x8e08('0x85')][0x0];if(_0x5948cd[_0x8e08('0x29')][_0x8e08('0xcb')]===_0x8e08('0xca')){return _0xac743b['update']({'read':!![]});}else{logger['error'](_0x8e08('0x21'),_0x8e08('0x29'),_0x8e08('0x84'),util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x8e08('0xcc'):if(_0x479970==_0x8e08('0xcf')||_0x479970=='RECEIVED_BY_RECIPIENT'){return _0xac743b[_0x8e08('0x31')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8e08('0x29'),'clickatell',util['inspect'](_0xe48c94['body'],{'showHidden':![],'depth':null}));}break;case _0x8e08('0x8a'):if(_0x479970==_0x8e08('0xd0')){return _0xac743b[_0x8e08('0x31')]({'read':!![]});}else{logger[_0x8e08('0x23')](_0x8e08('0x21'),'status',_0x8e08('0x8a'),util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x8e08('0x8b'):if(_0x479970===_0x8e08('0xd1')||_0x479970==='ACCEPTD'){return _0xac743b['update']({'read':!![]});}else{logger['error'](_0x8e08('0x21'),_0x8e08('0x29'),_0x8e08('0x8b'),util[_0x8e08('0xc5')](_0xe48c94[_0x8e08('0x5d')],{'showHidden':![],'depth':null}));}break;}return _0xac743b;}})[_0x8e08('0x1c')](respondWithResult(_0x4c9289,null))[_0x8e08('0x27')](handleError(_0x4c9289,null));};exports[_0x8e08('0xd2')]=function(_0x3f7078,_0x5932b1,_0x28923b){var _0x4c3d3b,_0x9bb454,_0x42011b;return db[_0x8e08('0x3a')][_0x8e08('0x59')]({'where':{'id':_0x3f7078[_0x8e08('0x51')]['id']}})['then'](handleEntityNotFound(_0x5932b1,null))['then'](function(_0x15e042){if(_0x15e042){_0x42011b=_0x15e042;logger['debug'](_0x8e08('0x21'),_0x8e08('0x29'),'received\x20delivery\x20report\x20from',_0x15e042[_0x8e08('0x3d')],util[_0x8e08('0xc5')](_0x3f7078[_0x8e08('0x3f')],{'showHidden':![],'depth':null}));switch(_0x15e042['type']){case'csc':if(_0x3f7078['query'][_0x8e08('0xd3')]&&_0x3f7078[_0x8e08('0x3f')][_0x8e08('0xd4')]){_0x9bb454=_0x3f7078[_0x8e08('0x3f')]['state'];return db['SmsMessage'][_0x8e08('0x59')]({'where':{'messageId':_0x3f7078['query']['message-id']}});}break;}}})[_0x8e08('0x1c')](handleEntityNotFound(_0x5932b1,null))['then'](function(_0x200c23){if(_0x200c23){_0x4c3d3b=_0x200c23;switch(_0x42011b['type']){case _0x8e08('0x86'):if(_0x9bb454==='2'||_0x9bb454==='6'){return _0x4c3d3b['update']({'read':!![]});}else{logger[_0x8e08('0x23')](_0x8e08('0x21'),'status','csc',util['inspect'](_0x3f7078['query'],{'showHidden':![],'depth':null}));};break;}return _0x4c3d3b;}})[_0x8e08('0x1c')](respondWithResult(_0x5932b1,null))[_0x8e08('0x27')](handleError(_0x5932b1,null));};exports[_0x8e08('0xd5')]=function(_0x23e06b,_0x1682ce,_0x1b116a){return db[_0x8e08('0x3a')]['find']({'where':{'id':_0x23e06b['params']['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x1682ce,null))[_0x8e08('0x1c')](function(_0x3ed340){if(_0x3ed340){return _0x3ed340[_0x8e08('0xd5')](_0x23e06b['body'][_0x8e08('0x69')],_[_0x8e08('0x95')](_0x23e06b[_0x8e08('0x5d')],[_0x8e08('0x69'),'id'])||{})[_0x8e08('0x9a')](function(_0x1b6bf8){for(var _0x58f487=0x0;_0x58f487<_0x23e06b[_0x8e08('0x5d')][_0x8e08('0x69')][_0x8e08('0x45')];_0x58f487+=0x1){socket[_0x8e08('0xd6')](_0x8e08('0xd7'),{'UserId':Number(_0x23e06b['body'][_0x8e08('0x69')][_0x58f487]),'SmsAccountId':Number(_0x23e06b[_0x8e08('0x51')]['id'])});}return _0x1b6bf8;});}})[_0x8e08('0x1c')](respondWithResult(_0x1682ce,null))[_0x8e08('0x27')](handleError(_0x1682ce,null));};exports['removeAgents']=function(_0x51d298,_0x1e6120,_0x3564c6){return db['SmsAccount'][_0x8e08('0x59')]({'where':{'id':_0x51d298[_0x8e08('0x51')]['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x1e6120,null))['then'](function(_0x48a740){if(_0x48a740){return _0x48a740[_0x8e08('0xd8')](_0x51d298[_0x8e08('0x3f')][_0x8e08('0x69')])[_0x8e08('0x1c')](function(){if(_[_0x8e08('0xd9')](_0x51d298[_0x8e08('0x3f')][_0x8e08('0x69')])){for(var _0x1f1980=0x0;_0x1f1980<_0x51d298[_0x8e08('0x3f')]['ids']['length'];_0x1f1980+=0x1){socket['emit'](_0x8e08('0xda'),{'UserId':Number(_0x51d298[_0x8e08('0x3f')]['ids'][_0x1f1980]),'SmsAccountId':Number(_0x51d298[_0x8e08('0x51')]['id'])});}}else{socket[_0x8e08('0xd6')]('userSmsAccount:remove',{'UserId':Number(_0x51d298['query'][_0x8e08('0x69')]),'SmsAccountId':Number(_0x51d298['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1e6120,null))[_0x8e08('0x27')](handleError(_0x1e6120,null));};exports[_0x8e08('0xdb')]=function(_0x2f9e60,_0x149538,_0x3ac348){var _0x41ce6e={};var _0x44fdb6={};var _0x4bb7b0;var _0x935b48;return db[_0x8e08('0x3a')][_0x8e08('0x61')]({'where':{'id':_0x2f9e60['params']['id']}})[_0x8e08('0x1c')](handleEntityNotFound(_0x149538,null))[_0x8e08('0x1c')](function(_0x47cf12){if(_0x47cf12){_0x4bb7b0=_0x47cf12;_0x44fdb6[_0x8e08('0x43')]=_[_0x8e08('0x40')](db[_0x8e08('0xa5')][_0x8e08('0x3b')]);_0x44fdb6[_0x8e08('0x3f')]=_['keys'](_0x2f9e60['query']);_0x44fdb6[_0x8e08('0x41')]=_['intersection'](_0x44fdb6[_0x8e08('0x43')],_0x44fdb6[_0x8e08('0x3f')]);_0x41ce6e['attributes']=_[_0x8e08('0x42')](_0x44fdb6[_0x8e08('0x43')],qs[_0x8e08('0x53')](_0x2f9e60[_0x8e08('0x3f')][_0x8e08('0x53')]));_0x41ce6e[_0x8e08('0x44')]=_0x41ce6e[_0x8e08('0x44')]['length']?_0x41ce6e[_0x8e08('0x44')]:_0x44fdb6[_0x8e08('0x43')];_0x41ce6e[_0x8e08('0x47')]=qs['sort'](_0x2f9e60['query'][_0x8e08('0x48')]);_0x41ce6e['where']=qs['filters'](_[_0x8e08('0x4a')](_0x2f9e60[_0x8e08('0x3f')],_0x44fdb6['filters']));if(_0x2f9e60['query'][_0x8e08('0x4b')]){_0x41ce6e[_0x8e08('0x49')]=_[_0x8e08('0x4c')](_0x41ce6e['where'],{'$or':_[_0x8e08('0x3e')](_0x41ce6e[_0x8e08('0x44')],function(_0x25dd76){var _0x266f09={};_0x266f09[_0x25dd76]={'$like':'%'+_0x2f9e60[_0x8e08('0x3f')][_0x8e08('0x4b')]+'%'};return _0x266f09;})});}_0x41ce6e=_[_0x8e08('0x4c')]({},_0x41ce6e,_0x2f9e60[_0x8e08('0x54')]);return _0x4bb7b0[_0x8e08('0xdb')](_0x41ce6e);}})['then'](function(_0x2625f9){if(_0x2625f9){_0x935b48=_0x2625f9[_0x8e08('0x45')];if(!_0x2f9e60[_0x8e08('0x3f')][_0x8e08('0x62')]('nolimit')){_0x41ce6e[_0x8e08('0x2d')]=qs[_0x8e08('0x2d')](_0x2f9e60[_0x8e08('0x3f')][_0x8e08('0x2d')]);_0x41ce6e[_0x8e08('0x2b')]=qs[_0x8e08('0x2b')](_0x2f9e60['query']['offset']);}return _0x4bb7b0[_0x8e08('0xdb')](_0x41ce6e);}})[_0x8e08('0x1c')](function(_0x4f2b3d){if(_0x4f2b3d){return _0x4f2b3d?{'count':_0x935b48,'rows':_0x4f2b3d}:null;}})[_0x8e08('0x1c')](respondWithResult(_0x149538,null))[_0x8e08('0x27')](handleError(_0x149538,null));};
\ No newline at end of file
index 5ca9c19..deab517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238a=['../../mysqldb','SmsAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x392dc7,_0x2b5c91){var _0x440de9=function(_0xddb25b){while(--_0xddb25b){_0x392dc7['push'](_0x392dc7['shift']());}};_0x440de9(++_0x2b5c91);}(_0x238a,0x140));var _0xa238=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x238a[_0x3511d3];return _0x5d6321;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xa238('0x0'))['db'][_0xa238('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xa238('0x2')](0x0);var events={'afterCreate':_0xa238('0x3'),'afterUpdate':_0xa238('0x4'),'afterDestroy':_0xa238('0x5')};function emitEvent(_0x1492ac){return function(_0x5c684f,_0x2f0129,_0x142c45){SmsAccountEvents[_0xa238('0x6')](_0x1492ac+':'+_0x5c684f['id'],_0x5c684f);SmsAccountEvents[_0xa238('0x6')](_0x1492ac,_0x5c684f);_0x142c45(null);};}for(var e in events){if(events[_0xa238('0x7')](e)){var event=events[e];SmsAccount[_0xa238('0x8')](e,emitEvent(event));}}module[_0xa238('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0x1d77=['SmsAccount','update','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x252ccc,_0x404960){var _0xd5e0aa=function(_0x1fd162){while(--_0x1fd162){_0x252ccc['push'](_0x252ccc['shift']());}};_0xd5e0aa(++_0x404960);}(_0x1d77,0x124));var _0x71d7=function(_0xe1a3a5,_0xd3e341){_0xe1a3a5=_0xe1a3a5-0x0;var _0x362646=_0x1d77[_0xe1a3a5];return _0x362646;};'use strict';var EventEmitter=require(_0x71d7('0x0'));var SmsAccount=require(_0x71d7('0x1'))['db'][_0x71d7('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x71d7('0x3'),'afterDestroy':'remove'};function emitEvent(_0x534946){return function(_0x454563,_0x44c5b6,_0xad799f){SmsAccountEvents['emit'](_0x534946+':'+_0x454563['id'],_0x454563);SmsAccountEvents[_0x71d7('0x4')](_0x534946,_0x454563);_0xad799f(null);};}for(var e in events){if(events[_0x71d7('0x5')](e)){var event=events[e];SmsAccount[_0x71d7('0x6')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index 0a926cd..c0906ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea92=['rimraf','./smsAccount.attributes','define','SmsAccount','sms_accounts','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4544d3,_0x149a72){var _0x36aeca=function(_0x2b3fc8){while(--_0x2b3fc8){_0x4544d3['push'](_0x4544d3['shift']());}};_0x36aeca(++_0x149a72);}(_0xea92,0x95));var _0x2ea9=function(_0x5897a0,_0x54e481){_0x5897a0=_0x5897a0-0x0;var _0x29b886=_0xea92[_0x5897a0];return _0x29b886;};'use strict';var _=require(_0x2ea9('0x0'));var util=require(_0x2ea9('0x1'));var logger=require(_0x2ea9('0x2'))(_0x2ea9('0x3'));var moment=require(_0x2ea9('0x4'));var BPromise=require('bluebird');var rp=require(_0x2ea9('0x5'));var fs=require('fs');var path=require(_0x2ea9('0x6'));var rimraf=require(_0x2ea9('0x7'));var config=require('../../config/environment');var attributes=require(_0x2ea9('0x8'));module['exports']=function(_0x3599d4,_0x4db54c){return _0x3599d4[_0x2ea9('0x9')](_0x2ea9('0xa'),attributes,{'tableName':_0x2ea9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x29e5=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','sms_accounts'];(function(_0x352e09,_0x37a7da){var _0x1b7094=function(_0x561074){while(--_0x561074){_0x352e09['push'](_0x352e09['shift']());}};_0x1b7094(++_0x37a7da);}(_0x29e5,0x8f));var _0x529e=function(_0x5d306e,_0xd44bf4){_0x5d306e=_0x5d306e-0x0;var _0x55131b=_0x29e5[_0x5d306e];return _0x55131b;};'use strict';var _=require(_0x529e('0x0'));var util=require(_0x529e('0x1'));var logger=require(_0x529e('0x2'))(_0x529e('0x3'));var moment=require('moment');var BPromise=require(_0x529e('0x4'));var rp=require(_0x529e('0x5'));var fs=require('fs');var path=require(_0x529e('0x6'));var rimraf=require(_0x529e('0x7'));var config=require(_0x529e('0x8'));var attributes=require(_0x529e('0x9'));module[_0x529e('0xa')]=function(_0x3a6dab,_0xe7a55d){return _0x3a6dab[_0x529e('0xb')]('SmsAccount',attributes,{'tableName':_0x529e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee031f6..3e9ef91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd07=['map','model','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./smsAccount.socket','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','code','error','message','catch','ShowSmsAccount','SmsAccount','find','options','raw','attributes','include'];(function(_0x563287,_0x39887f){var _0x46478c=function(_0x2701f3){while(--_0x2701f3){_0x563287['push'](_0x563287['shift']());}};_0x46478c(++_0x39887f);}(_0xcd07,0x1de));var _0x7cd0=function(_0x563fab,_0x392427){_0x563fab=_0x563fab-0x0;var _0x3bfa49=_0xcd07[_0x563fab];return _0x3bfa49;};'use strict';var _=require(_0x7cd0('0x0'));var util=require(_0x7cd0('0x1'));var moment=require(_0x7cd0('0x2'));var BPromise=require(_0x7cd0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7cd0('0x4'))['db'];var utils=require(_0x7cd0('0x5'));var logger=require(_0x7cd0('0x6'))(_0x7cd0('0x7'));var config=require(_0x7cd0('0x8'));var jayson=require(_0x7cd0('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x7cd0('0xa')]=_[_0x7cd0('0xb')](config[_0x7cd0('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x7cd0('0xc'))(new Redis(config[_0x7cd0('0xa')]));require(_0x7cd0('0xd'))['register'](socket);function respondWithRpcPromise(_0x34fad0,_0x3e4799,_0x41acb3){return new BPromise(function(_0x480efa,_0x29c73f){return client[_0x7cd0('0xe')](_0x34fad0,_0x41acb3)[_0x7cd0('0xf')](function(_0x200aaa){logger[_0x7cd0('0x10')](_0x7cd0('0x11'),_0x3e4799,_0x7cd0('0x12'));logger[_0x7cd0('0x13')](_0x7cd0('0x14'),_0x3e4799,_0x7cd0('0x12'),JSON['stringify'](_0x200aaa));if(_0x200aaa['error']){if(_0x200aaa['error'][_0x7cd0('0x15')]===0x1f4){logger[_0x7cd0('0x16')](_0x7cd0('0x11'),_0x3e4799,_0x200aaa[_0x7cd0('0x16')][_0x7cd0('0x17')]);return _0x29c73f(_0x200aaa[_0x7cd0('0x16')]['message']);}logger[_0x7cd0('0x16')](_0x7cd0('0x11'),_0x3e4799,_0x200aaa['error'][_0x7cd0('0x17')]);return _0x480efa(_0x200aaa[_0x7cd0('0x16')][_0x7cd0('0x17')]);}else{logger['info'](_0x7cd0('0x11'),_0x3e4799,_0x7cd0('0x12'));_0x480efa(_0x200aaa['result'][_0x7cd0('0x17')]);}})[_0x7cd0('0x18')](function(_0x4a7695){logger[_0x7cd0('0x16')](_0x7cd0('0x11'),_0x3e4799,_0x4a7695);_0x29c73f(_0x4a7695);});});}exports[_0x7cd0('0x19')]=function(_0x292daa){var _0x7565b7=this;return new Promise(function(_0x11f928,_0x1fed9d){return db[_0x7cd0('0x1a')][_0x7cd0('0x1b')]({'raw':_0x292daa['options']?_0x292daa[_0x7cd0('0x1c')][_0x7cd0('0x1d')]===undefined?!![]:![]:!![],'where':_0x292daa['options']?_0x292daa[_0x7cd0('0x1c')]['where']||null:null,'attributes':_0x292daa[_0x7cd0('0x1c')]?_0x292daa[_0x7cd0('0x1c')][_0x7cd0('0x1e')]||null:null,'include':_0x292daa[_0x7cd0('0x1c')]?_0x292daa['options'][_0x7cd0('0x1f')]?_[_0x7cd0('0x20')](_0x292daa[_0x7cd0('0x1c')][_0x7cd0('0x1f')],function(_0x1e3002){return{'model':db[_0x1e3002['model']],'as':_0x1e3002['as'],'attributes':_0x1e3002[_0x7cd0('0x1e')],'include':_0x1e3002[_0x7cd0('0x1f')]?_[_0x7cd0('0x20')](_0x1e3002['include'],function(_0x24dd40){return{'model':db[_0x24dd40[_0x7cd0('0x21')]],'as':_0x24dd40['as'],'attributes':_0x24dd40['attributes'],'include':_0x24dd40['include']?_[_0x7cd0('0x20')](_0x24dd40['include'],function(_0xc6478e){return{'model':db[_0xc6478e[_0x7cd0('0x21')]],'as':_0xc6478e['as'],'attributes':_0xc6478e[_0x7cd0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x7cd0('0xf')](function(_0xcd4097){logger[_0x7cd0('0x10')](_0x7cd0('0x19'),_0x292daa);logger['debug'](_0x7cd0('0x19'),_0x292daa,JSON['stringify'](_0xcd4097));_0x11f928(_0xcd4097);})['catch'](function(_0x5a5e2a){logger[_0x7cd0('0x16')](_0x7cd0('0x19'),_0x5a5e2a[_0x7cd0('0x17')],_0x292daa);_0x1fed9d(_0x7565b7[_0x7cd0('0x16')](0x1f4,_0x5a5e2a[_0x7cd0('0x17')]));});});};
\ No newline at end of file
+var _0xe851=['message','result','ShowSmsAccount','SmsAccount','find','options','raw','attributes','include','map','model','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2e5dbd,_0x2080d2){var _0x2734a7=function(_0x574ab8){while(--_0x574ab8){_0x2e5dbd['push'](_0x2e5dbd['shift']());}};_0x2734a7(++_0x2080d2);}(_0xe851,0x11d));var _0x1e85=function(_0x47f50b,_0x598df2){_0x47f50b=_0x47f50b-0x0;var _0x2b619e=_0xe851[_0x47f50b];return _0x2b619e;};'use strict';var _=require('lodash');var util=require(_0x1e85('0x0'));var moment=require(_0x1e85('0x1'));var BPromise=require(_0x1e85('0x2'));var rs=require(_0x1e85('0x3'));var fs=require('fs');var Redis=require(_0x1e85('0x4'));var db=require(_0x1e85('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1e85('0x6'))(_0x1e85('0x7'));var config=require('../../config/environment');var jayson=require(_0x1e85('0x8'));var client=jayson[_0x1e85('0x9')][_0x1e85('0xa')]({'port':0x232a});config[_0x1e85('0xb')]=_[_0x1e85('0xc')](config[_0x1e85('0xb')],{'host':_0x1e85('0xd'),'port':0x18eb});var socket=require(_0x1e85('0xe'))(new Redis(config['redis']));require(_0x1e85('0xf'))[_0x1e85('0x10')](socket);function respondWithRpcPromise(_0x33bbdf,_0xc2744a,_0x3eade9){return new BPromise(function(_0x1bbc3e,_0x4fee7f){return client[_0x1e85('0x11')](_0x33bbdf,_0x3eade9)[_0x1e85('0x12')](function(_0xaf3c57){logger[_0x1e85('0x13')](_0x1e85('0x14'),_0xc2744a,_0x1e85('0x15'));logger[_0x1e85('0x16')](_0x1e85('0x17'),_0xc2744a,_0x1e85('0x15'),JSON[_0x1e85('0x18')](_0xaf3c57));if(_0xaf3c57[_0x1e85('0x19')]){if(_0xaf3c57[_0x1e85('0x19')][_0x1e85('0x1a')]===0x1f4){logger[_0x1e85('0x19')](_0x1e85('0x14'),_0xc2744a,_0xaf3c57['error'][_0x1e85('0x1b')]);return _0x4fee7f(_0xaf3c57[_0x1e85('0x19')][_0x1e85('0x1b')]);}logger[_0x1e85('0x19')]('SmsAccount,\x20%s,\x20%s',_0xc2744a,_0xaf3c57[_0x1e85('0x19')][_0x1e85('0x1b')]);return _0x1bbc3e(_0xaf3c57[_0x1e85('0x19')][_0x1e85('0x1b')]);}else{logger['info'](_0x1e85('0x14'),_0xc2744a,_0x1e85('0x15'));_0x1bbc3e(_0xaf3c57[_0x1e85('0x1c')][_0x1e85('0x1b')]);}})['catch'](function(_0x234c0b){logger[_0x1e85('0x19')](_0x1e85('0x14'),_0xc2744a,_0x234c0b);_0x4fee7f(_0x234c0b);});});}exports[_0x1e85('0x1d')]=function(_0x584499){var _0x145d96=this;return new Promise(function(_0x5c4379,_0xe3e067){return db[_0x1e85('0x1e')][_0x1e85('0x1f')]({'raw':_0x584499[_0x1e85('0x20')]?_0x584499['options'][_0x1e85('0x21')]===undefined?!![]:![]:!![],'where':_0x584499['options']?_0x584499[_0x1e85('0x20')]['where']||null:null,'attributes':_0x584499[_0x1e85('0x20')]?_0x584499[_0x1e85('0x20')][_0x1e85('0x22')]||null:null,'include':_0x584499[_0x1e85('0x20')]?_0x584499[_0x1e85('0x20')][_0x1e85('0x23')]?_[_0x1e85('0x24')](_0x584499['options'][_0x1e85('0x23')],function(_0x58fc10){return{'model':db[_0x58fc10['model']],'as':_0x58fc10['as'],'attributes':_0x58fc10[_0x1e85('0x22')],'include':_0x58fc10[_0x1e85('0x23')]?_[_0x1e85('0x24')](_0x58fc10[_0x1e85('0x23')],function(_0x34dabd){return{'model':db[_0x34dabd[_0x1e85('0x25')]],'as':_0x34dabd['as'],'attributes':_0x34dabd[_0x1e85('0x22')],'include':_0x34dabd[_0x1e85('0x23')]?_['map'](_0x34dabd[_0x1e85('0x23')],function(_0x4e38ce){return{'model':db[_0x4e38ce[_0x1e85('0x25')]],'as':_0x4e38ce['as'],'attributes':_0x4e38ce[_0x1e85('0x22')]};}):[]};}):[]};}):[]:[]})[_0x1e85('0x12')](function(_0x2426cd){logger[_0x1e85('0x13')](_0x1e85('0x1d'),_0x584499);logger[_0x1e85('0x16')]('ShowSmsAccount',_0x584499,JSON[_0x1e85('0x18')](_0x2426cd));_0x5c4379(_0x2426cd);})[_0x1e85('0x26')](function(_0x1c6f92){logger[_0x1e85('0x19')](_0x1e85('0x1d'),_0x1c6f92[_0x1e85('0x1b')],_0x584499);_0xe3e067(_0x145d96[_0x1e85('0x19')](0x1f4,_0x1c6f92[_0x1e85('0x1b')]));});});};
\ No newline at end of file
index bce63a0..4496a14 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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'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 1199460..d3a5990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x28f86d,_0x1cb157){var _0x4561df=function(_0x1fd6df){while(--_0x1fd6df){_0x28f86d['push'](_0x28f86d['shift']());}};_0x4561df(++_0x1cb157);}(_0x55ca,0x126));var _0xa55c=function(_0x41382c,_0xc3ffd1){_0x41382c=_0x41382c-0x0;var _0x4da35b=_0x55ca[_0x41382c];return _0x4da35b;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
+var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x1d95c4,_0xaba2be){var _0x34fb80=function(_0x267265){while(--_0x267265){_0x1d95c4['push'](_0x1d95c4['shift']());}};_0x34fb80(++_0xaba2be);}(_0x7217,0x19e));var _0x7721=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x7217[_0x491a7f];return _0x3d8f44;};'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('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
index 4874989..3066093 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e54=['exports','INTEGER','STRING','*,*,*,*'];(function(_0x174a72,_0x46034c){var _0x32cecd=function(_0x188a47){while(--_0x188a47){_0x174a72['push'](_0x174a72['shift']());}};_0x32cecd(++_0x46034c);}(_0x6e54,0x17c));var _0x46e5=function(_0x26b622,_0x237e9e){_0x26b622=_0x26b622-0x0;var _0x58a028=_0x6e54[_0x26b622];return _0x58a028;};'use strict';var Sequelize=require('sequelize');module[_0x46e5('0x0')]={'priority':{'type':Sequelize[_0x46e5('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x46e5('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x46e5('0x2')],'defaultValue':_0x46e5('0x3')}};
\ No newline at end of file
+var _0x742f=['sequelize','exports','INTEGER','STRING','TEXT','*,*,*,*'];(function(_0x5870c1,_0x173ba3){var _0x344685=function(_0x1984be){while(--_0x1984be){_0x5870c1['push'](_0x5870c1['shift']());}};_0x344685(++_0x173ba3);}(_0x742f,0x156));var _0xf742=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x742f[_0xf71120];return _0xbe2fd3;};'use strict';var Sequelize=require(_0xf742('0x0'));module[_0xf742('0x1')]={'priority':{'type':Sequelize[_0xf742('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xf742('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xf742('0x4')]()},'description':{'type':Sequelize[_0xf742('0x3')]},'interval':{'type':Sequelize[_0xf742('0x3')],'defaultValue':_0xf742('0x5')}};
\ No newline at end of file
index 0588d22..b269730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30e=['../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','name','send','index','map','SmsApplication','rawAttributes','key','model','query','keys','intersection','attributes','sort','where','pick','filters','filter','merge','type','VIRTUAL','count','include','findAll','rows','params','fields','length','includeAll','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa30e,0x107));var _0xea30=function(_0x22e9fe,_0x3d019f){_0x22e9fe=_0x22e9fe-0x0;var _0x47cd19=_0xa30e[_0x22e9fe];return _0x47cd19;};'use strict';var emlformat=require(_0xea30('0x0'));var rimraf=require(_0xea30('0x1'));var zipdir=require(_0xea30('0x2'));var jsonpatch=require(_0xea30('0x3'));var rp=require(_0xea30('0x4'));var moment=require(_0xea30('0x5'));var BPromise=require(_0xea30('0x6'));var Mustache=require(_0xea30('0x7'));var util=require(_0xea30('0x8'));var path=require('path');var sox=require(_0xea30('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xea30('0xa'));var squel=require(_0xea30('0xb'));var crypto=require(_0xea30('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xea30('0xd'));var toCsv=require('to-csv');var querystring=require(_0xea30('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xea30('0xf'));var qs=require(_0xea30('0x10'));var as=require(_0xea30('0x11'));var hardwareService=require(_0xea30('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xea30('0x13'));var config=require(_0xea30('0x14'));var licenseUtil=require(_0xea30('0x15'));var db=require(_0xea30('0x16'))['db'];function respondWithStatusCode(_0x255155,_0x445624){_0x445624=_0x445624||0xcc;return function(_0x21b61c){if(_0x21b61c){return _0x255155[_0xea30('0x17')](_0x445624);}return _0x255155['status'](_0x445624)[_0xea30('0x18')]();};}function respondWithResult(_0x21eac9,_0x5c0dae){_0x5c0dae=_0x5c0dae||0xc8;return function(_0x3a340e){if(_0x3a340e){return _0x21eac9[_0xea30('0x19')](_0x5c0dae)[_0xea30('0x1a')](_0x3a340e);}};}function respondWithFilteredResult(_0x310a6f,_0x1a97ff){return function(_0x1b4aa6){if(_0x1b4aa6){var _0x311d64=typeof _0x1a97ff['offset']===_0xea30('0x1b')&&typeof _0x1a97ff['limit']==='undefined';var _0x2fa36e=_0x1b4aa6['count'];var _0x23b0bb=_0x311d64?0x0:_0x1a97ff[_0xea30('0x1c')];var _0x474ce6=_0x311d64?_0x1b4aa6['count']:_0x1a97ff['offset']+_0x1a97ff[_0xea30('0x1d')];var _0x217520;if(_0x474ce6>=_0x2fa36e){_0x474ce6=_0x2fa36e;_0x217520=0xc8;}else{_0x217520=0xce;}_0x310a6f[_0xea30('0x19')](_0x217520);return _0x310a6f[_0xea30('0x1e')](_0xea30('0x1f'),_0x23b0bb+'-'+_0x474ce6+'/'+_0x2fa36e)['json'](_0x1b4aa6);}return null;};}function patchUpdates(_0x43609d){return function(_0x51b6f7){try{jsonpatch[_0xea30('0x20')](_0x51b6f7,_0x43609d,!![]);}catch(_0x554bb9){return BPromise['reject'](_0x554bb9);}return _0x51b6f7[_0xea30('0x21')]();};}function saveUpdates(_0x40498b,_0x349000){return function(_0x3dff52){if(_0x3dff52){return _0x3dff52[_0xea30('0x22')](_0x40498b)[_0xea30('0x23')](function(_0x34d5ed){return _0x34d5ed;});}return null;};}function removeEntity(_0xeefd3,_0xc54888){return function(_0x5c378c){if(_0x5c378c){return _0x5c378c[_0xea30('0x24')]()['then'](function(){_0xeefd3['status'](0xcc)[_0xea30('0x18')]();});}};}function handleEntityNotFound(_0x144ada,_0x486afb){return function(_0xbe7f54){if(!_0xbe7f54){_0x144ada[_0xea30('0x17')](0x194);}return _0xbe7f54;};}function handleError(_0x9e23a5,_0x5a4d16){_0x5a4d16=_0x5a4d16||0x1f4;return function(_0x1bf006){logger[_0xea30('0x25')](_0x1bf006['stack']);if(_0x1bf006[_0xea30('0x26')]){delete _0x1bf006[_0xea30('0x26')];}_0x9e23a5[_0xea30('0x19')](_0x5a4d16)[_0xea30('0x27')](_0x1bf006);};}exports[_0xea30('0x28')]=function(_0x171e47,_0x33f0b8){var _0xbca189={},_0x3ba7d0={},_0x4b4dcf={'count':0x0,'rows':[]};var _0x4be824=_[_0xea30('0x29')](db[_0xea30('0x2a')][_0xea30('0x2b')],function(_0x50b5f1){return{'name':_0x50b5f1['fieldName'],'type':_0x50b5f1['type'][_0xea30('0x2c')]};});_0x3ba7d0[_0xea30('0x2d')]=_[_0xea30('0x29')](_0x4be824,'name');_0x3ba7d0[_0xea30('0x2e')]=_[_0xea30('0x2f')](_0x171e47[_0xea30('0x2e')]);_0x3ba7d0['filters']=_[_0xea30('0x30')](_0x3ba7d0[_0xea30('0x2d')],_0x3ba7d0['query']);_0xbca189[_0xea30('0x31')]=_[_0xea30('0x30')](_0x3ba7d0[_0xea30('0x2d')],qs['fields'](_0x171e47[_0xea30('0x2e')]['fields']));_0xbca189[_0xea30('0x31')]=_0xbca189[_0xea30('0x31')]['length']?_0xbca189[_0xea30('0x31')]:_0x3ba7d0['model'];if(!_0x171e47[_0xea30('0x2e')]['hasOwnProperty']('nolimit')){_0xbca189['limit']=qs[_0xea30('0x1d')](_0x171e47['query'][_0xea30('0x1d')]);_0xbca189[_0xea30('0x1c')]=qs[_0xea30('0x1c')](_0x171e47['query'][_0xea30('0x1c')]);}_0xbca189['order']=qs['sort'](_0x171e47[_0xea30('0x2e')][_0xea30('0x32')]);_0xbca189[_0xea30('0x33')]=qs['filters'](_[_0xea30('0x34')](_0x171e47['query'],_0x3ba7d0[_0xea30('0x35')]),_0x4be824);if(_0x171e47['query'][_0xea30('0x36')]){_0xbca189['where']=_[_0xea30('0x37')](_0xbca189[_0xea30('0x33')],{'$or':_[_0xea30('0x29')](_0x4be824,function(_0x4189d2){if(_0x4189d2[_0xea30('0x38')]!==_0xea30('0x39')){var _0x9204d8={};_0x9204d8[_0x4189d2['name']]={'$like':'%'+_0x171e47[_0xea30('0x2e')][_0xea30('0x36')]+'%'};return _0x9204d8;}})});}_0xbca189=_['merge']({},_0xbca189,_0x171e47['options']);var _0x140a57={'where':_0xbca189['where']};return db[_0xea30('0x2a')][_0xea30('0x3a')](_0x140a57)[_0xea30('0x23')](function(_0x84ac38){_0x4b4dcf[_0xea30('0x3a')]=_0x84ac38;if(_0x171e47[_0xea30('0x2e')]['includeAll']){_0xbca189[_0xea30('0x3b')]=[{'all':!![]}];}return db[_0xea30('0x2a')][_0xea30('0x3c')](_0xbca189);})[_0xea30('0x23')](function(_0x32af91){_0x4b4dcf[_0xea30('0x3d')]=_0x32af91;return _0x4b4dcf;})[_0xea30('0x23')](respondWithFilteredResult(_0x33f0b8,_0xbca189))['catch'](handleError(_0x33f0b8,null));};exports['show']=function(_0x3cb53c,_0x2f8475){var _0x100852={'raw':!![],'where':{'id':_0x3cb53c[_0xea30('0x3e')]['id']}},_0x12b50f={};_0x12b50f['model']=_[_0xea30('0x2f')](db[_0xea30('0x2a')][_0xea30('0x2b')]);_0x12b50f[_0xea30('0x2e')]=_['keys'](_0x3cb53c['query']);_0x12b50f[_0xea30('0x35')]=_[_0xea30('0x30')](_0x12b50f[_0xea30('0x2d')],_0x12b50f[_0xea30('0x2e')]);_0x100852[_0xea30('0x31')]=_[_0xea30('0x30')](_0x12b50f[_0xea30('0x2d')],qs[_0xea30('0x3f')](_0x3cb53c[_0xea30('0x2e')][_0xea30('0x3f')]));_0x100852['attributes']=_0x100852[_0xea30('0x31')][_0xea30('0x40')]?_0x100852[_0xea30('0x31')]:_0x12b50f[_0xea30('0x2d')];if(_0x3cb53c[_0xea30('0x2e')][_0xea30('0x41')]){_0x100852['include']=[{'all':!![]}];}_0x100852=_['merge']({},_0x100852,_0x3cb53c[_0xea30('0x42')]);return db[_0xea30('0x2a')][_0xea30('0x43')](_0x100852)['then'](handleEntityNotFound(_0x2f8475,null))['then'](respondWithResult(_0x2f8475,null))[_0xea30('0x44')](handleError(_0x2f8475,null));};exports[_0xea30('0x45')]=function(_0x531c0d,_0x5663e1){return db[_0xea30('0x2a')]['create'](_0x531c0d[_0xea30('0x46')],{})[_0xea30('0x23')](respondWithResult(_0x5663e1,0xc9))[_0xea30('0x44')](handleError(_0x5663e1,null));};exports[_0xea30('0x22')]=function(_0x4f901f,_0x95daad){if(_0x4f901f[_0xea30('0x46')]['id']){delete _0x4f901f[_0xea30('0x46')]['id'];}return db['SmsApplication'][_0xea30('0x43')]({'where':{'id':_0x4f901f[_0xea30('0x3e')]['id']}})[_0xea30('0x23')](handleEntityNotFound(_0x95daad,null))['then'](saveUpdates(_0x4f901f[_0xea30('0x46')],null))[_0xea30('0x23')](respondWithResult(_0x95daad,null))[_0xea30('0x44')](handleError(_0x95daad,null));};exports['destroy']=function(_0x131e5a,_0x1ce323){return db['SmsApplication'][_0xea30('0x43')]({'where':{'id':_0x131e5a[_0xea30('0x3e')]['id']}})[_0xea30('0x23')](handleEntityNotFound(_0x1ce323,null))[_0xea30('0x23')](removeEntity(_0x1ce323,null))['catch'](handleError(_0x1ce323,null));};
\ No newline at end of file
+var _0xb62c=['offset','limit','undefined','count','status','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SmsApplication','rawAttributes','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','merge','options','includeAll','include','catch','params','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end'];(function(_0xc14e9b,_0x5c3047){var _0x48f298=function(_0x3ddc68){while(--_0x3ddc68){_0xc14e9b['push'](_0xc14e9b['shift']());}};_0x48f298(++_0x5c3047);}(_0xb62c,0x15a));var _0xcb62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb62c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xcb62('0x0'));var rimraf=require(_0xcb62('0x1'));var zipdir=require(_0xcb62('0x2'));var jsonpatch=require(_0xcb62('0x3'));var rp=require('request-promise');var moment=require(_0xcb62('0x4'));var BPromise=require(_0xcb62('0x5'));var Mustache=require(_0xcb62('0x6'));var util=require('util');var path=require(_0xcb62('0x7'));var sox=require(_0xcb62('0x8'));var csv=require('to-csv');var ejs=require(_0xcb62('0x9'));var fs=require('fs');var fs_extra=require(_0xcb62('0xa'));var _=require(_0xcb62('0xb'));var squel=require(_0xcb62('0xc'));var crypto=require(_0xcb62('0xd'));var jsforce=require(_0xcb62('0xe'));var deskjs=require(_0xcb62('0xf'));var toCsv=require(_0xcb62('0x10'));var querystring=require(_0xcb62('0x11'));var Papa=require(_0xcb62('0x12'));var Redis=require(_0xcb62('0x13'));var authService=require(_0xcb62('0x14'));var qs=require(_0xcb62('0x15'));var as=require(_0xcb62('0x16'));var hardwareService=require(_0xcb62('0x17'));var logger=require(_0xcb62('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xcb62('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xcb62('0x1a'))['db'];function respondWithStatusCode(_0x54d337,_0x3b2a78){_0x3b2a78=_0x3b2a78||0xcc;return function(_0x3395e3){if(_0x3395e3){return _0x54d337[_0xcb62('0x1b')](_0x3b2a78);}return _0x54d337['status'](_0x3b2a78)[_0xcb62('0x1c')]();};}function respondWithResult(_0xc432c7,_0x4ec648){_0x4ec648=_0x4ec648||0xc8;return function(_0x528d96){if(_0x528d96){return _0xc432c7['status'](_0x4ec648)['json'](_0x528d96);}};}function respondWithFilteredResult(_0x39b0c3,_0x1008ca){return function(_0x4f2255){if(_0x4f2255){var _0x3cdc27=typeof _0x1008ca[_0xcb62('0x1d')]==='undefined'&&typeof _0x1008ca[_0xcb62('0x1e')]===_0xcb62('0x1f');var _0xa6ff9c=_0x4f2255[_0xcb62('0x20')];var _0x1fdb82=_0x3cdc27?0x0:_0x1008ca['offset'];var _0x1e807f=_0x3cdc27?_0x4f2255['count']:_0x1008ca[_0xcb62('0x1d')]+_0x1008ca[_0xcb62('0x1e')];var _0x5befa4;if(_0x1e807f>=_0xa6ff9c){_0x1e807f=_0xa6ff9c;_0x5befa4=0xc8;}else{_0x5befa4=0xce;}_0x39b0c3[_0xcb62('0x21')](_0x5befa4);return _0x39b0c3['set']('Content-Range',_0x1fdb82+'-'+_0x1e807f+'/'+_0xa6ff9c)[_0xcb62('0x22')](_0x4f2255);}return null;};}function patchUpdates(_0x594b4b){return function(_0x33d38a){try{jsonpatch[_0xcb62('0x23')](_0x33d38a,_0x594b4b,!![]);}catch(_0x13df64){return BPromise[_0xcb62('0x24')](_0x13df64);}return _0x33d38a[_0xcb62('0x25')]();};}function saveUpdates(_0x5d4d58,_0x3cbf37){return function(_0x2523c0){if(_0x2523c0){return _0x2523c0[_0xcb62('0x26')](_0x5d4d58)[_0xcb62('0x27')](function(_0x3d0909){return _0x3d0909;});}return null;};}function removeEntity(_0x52c1ef,_0x313d4){return function(_0x522a75){if(_0x522a75){return _0x522a75[_0xcb62('0x28')]()[_0xcb62('0x27')](function(){_0x52c1ef[_0xcb62('0x21')](0xcc)[_0xcb62('0x1c')]();});}};}function handleEntityNotFound(_0xc4e88,_0x3b3de9){return function(_0x2d7acf){if(!_0x2d7acf){_0xc4e88[_0xcb62('0x1b')](0x194);}return _0x2d7acf;};}function handleError(_0x2f4acc,_0x5ee301){_0x5ee301=_0x5ee301||0x1f4;return function(_0x319185){logger[_0xcb62('0x29')](_0x319185[_0xcb62('0x2a')]);if(_0x319185[_0xcb62('0x2b')]){delete _0x319185[_0xcb62('0x2b')];}_0x2f4acc[_0xcb62('0x21')](_0x5ee301)[_0xcb62('0x2c')](_0x319185);};}exports[_0xcb62('0x2d')]=function(_0x524a97,_0x379416){var _0x2e4f88={},_0x973082={},_0x134757={'count':0x0,'rows':[]};var _0x3b0d24=_[_0xcb62('0x2e')](db[_0xcb62('0x2f')][_0xcb62('0x30')],function(_0x48b30b){return{'name':_0x48b30b['fieldName'],'type':_0x48b30b['type'][_0xcb62('0x31')]};});_0x973082[_0xcb62('0x32')]=_['map'](_0x3b0d24,_0xcb62('0x2b'));_0x973082[_0xcb62('0x33')]=_[_0xcb62('0x34')](_0x524a97['query']);_0x973082[_0xcb62('0x35')]=_[_0xcb62('0x36')](_0x973082[_0xcb62('0x32')],_0x973082['query']);_0x2e4f88['attributes']=_[_0xcb62('0x36')](_0x973082['model'],qs[_0xcb62('0x37')](_0x524a97[_0xcb62('0x33')]['fields']));_0x2e4f88['attributes']=_0x2e4f88['attributes'][_0xcb62('0x38')]?_0x2e4f88[_0xcb62('0x39')]:_0x973082[_0xcb62('0x32')];if(!_0x524a97[_0xcb62('0x33')][_0xcb62('0x3a')](_0xcb62('0x3b'))){_0x2e4f88[_0xcb62('0x1e')]=qs[_0xcb62('0x1e')](_0x524a97[_0xcb62('0x33')][_0xcb62('0x1e')]);_0x2e4f88['offset']=qs['offset'](_0x524a97[_0xcb62('0x33')][_0xcb62('0x1d')]);}_0x2e4f88[_0xcb62('0x3c')]=qs[_0xcb62('0x3d')](_0x524a97[_0xcb62('0x33')][_0xcb62('0x3d')]);_0x2e4f88[_0xcb62('0x3e')]=qs['filters'](_[_0xcb62('0x3f')](_0x524a97[_0xcb62('0x33')],_0x973082[_0xcb62('0x35')]),_0x3b0d24);if(_0x524a97[_0xcb62('0x33')]['filter']){_0x2e4f88[_0xcb62('0x3e')]=_['merge'](_0x2e4f88['where'],{'$or':_[_0xcb62('0x2e')](_0x3b0d24,function(_0x553924){if(_0x553924[_0xcb62('0x40')]!==_0xcb62('0x41')){var _0x399aab={};_0x399aab[_0x553924[_0xcb62('0x2b')]]={'$like':'%'+_0x524a97[_0xcb62('0x33')]['filter']+'%'};return _0x399aab;}})});}_0x2e4f88=_[_0xcb62('0x42')]({},_0x2e4f88,_0x524a97[_0xcb62('0x43')]);var _0x17050b={'where':_0x2e4f88[_0xcb62('0x3e')]};return db[_0xcb62('0x2f')]['count'](_0x17050b)[_0xcb62('0x27')](function(_0x18c7a9){_0x134757['count']=_0x18c7a9;if(_0x524a97['query'][_0xcb62('0x44')]){_0x2e4f88[_0xcb62('0x45')]=[{'all':!![]}];}return db[_0xcb62('0x2f')]['findAll'](_0x2e4f88);})[_0xcb62('0x27')](function(_0x380268){_0x134757['rows']=_0x380268;return _0x134757;})[_0xcb62('0x27')](respondWithFilteredResult(_0x379416,_0x2e4f88))[_0xcb62('0x46')](handleError(_0x379416,null));};exports['show']=function(_0x475d8b,_0x445f7f){var _0x7a894d={'raw':!![],'where':{'id':_0x475d8b[_0xcb62('0x47')]['id']}},_0xd316fc={};_0xd316fc[_0xcb62('0x32')]=_[_0xcb62('0x34')](db[_0xcb62('0x2f')][_0xcb62('0x30')]);_0xd316fc[_0xcb62('0x33')]=_[_0xcb62('0x34')](_0x475d8b[_0xcb62('0x33')]);_0xd316fc[_0xcb62('0x35')]=_[_0xcb62('0x36')](_0xd316fc[_0xcb62('0x32')],_0xd316fc['query']);_0x7a894d[_0xcb62('0x39')]=_[_0xcb62('0x36')](_0xd316fc[_0xcb62('0x32')],qs[_0xcb62('0x37')](_0x475d8b[_0xcb62('0x33')]['fields']));_0x7a894d[_0xcb62('0x39')]=_0x7a894d[_0xcb62('0x39')][_0xcb62('0x38')]?_0x7a894d['attributes']:_0xd316fc[_0xcb62('0x32')];if(_0x475d8b[_0xcb62('0x33')][_0xcb62('0x44')]){_0x7a894d[_0xcb62('0x45')]=[{'all':!![]}];}_0x7a894d=_[_0xcb62('0x42')]({},_0x7a894d,_0x475d8b[_0xcb62('0x43')]);return db[_0xcb62('0x2f')]['find'](_0x7a894d)[_0xcb62('0x27')](handleEntityNotFound(_0x445f7f,null))[_0xcb62('0x27')](respondWithResult(_0x445f7f,null))[_0xcb62('0x46')](handleError(_0x445f7f,null));};exports[_0xcb62('0x48')]=function(_0x3c58f7,_0x22f92d){return db[_0xcb62('0x2f')][_0xcb62('0x48')](_0x3c58f7[_0xcb62('0x49')],{})['then'](respondWithResult(_0x22f92d,0xc9))[_0xcb62('0x46')](handleError(_0x22f92d,null));};exports[_0xcb62('0x26')]=function(_0x31616d,_0x59e282){if(_0x31616d[_0xcb62('0x49')]['id']){delete _0x31616d[_0xcb62('0x49')]['id'];}return db['SmsApplication'][_0xcb62('0x4a')]({'where':{'id':_0x31616d['params']['id']}})[_0xcb62('0x27')](handleEntityNotFound(_0x59e282,null))[_0xcb62('0x27')](saveUpdates(_0x31616d[_0xcb62('0x49')],null))['then'](respondWithResult(_0x59e282,null))[_0xcb62('0x46')](handleError(_0x59e282,null));};exports[_0xcb62('0x28')]=function(_0x34aea1,_0xb86f34){return db[_0xcb62('0x2f')]['find']({'where':{'id':_0x34aea1[_0xcb62('0x47')]['id']}})[_0xcb62('0x27')](handleEntityNotFound(_0xb86f34,null))[_0xcb62('0x27')](removeEntity(_0xb86f34,null))['catch'](handleError(_0xb86f34,null));};
\ No newline at end of file
index 2435993..f61ef8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e57=['../../config/logger','api','request-promise','path','../../config/environment','./smsApplication.attributes','exports','SmsApplication','utf8mb4','util'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x2e57,0x1ad));var _0x72e5=function(_0x2f2a95,_0x309c90){_0x2f2a95=_0x2f2a95-0x0;var _0x46012e=_0x2e57[_0x2f2a95];return _0x46012e;};'use strict';var _=require('lodash');var util=require(_0x72e5('0x0'));var logger=require(_0x72e5('0x1'))(_0x72e5('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x72e5('0x3'));var fs=require('fs');var path=require(_0x72e5('0x4'));var rimraf=require('rimraf');var config=require(_0x72e5('0x5'));var attributes=require(_0x72e5('0x6'));module[_0x72e5('0x7')]=function(_0x2f60da,_0x4d3ec4){return _0x2f60da['define'](_0x72e5('0x8'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x72e5('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x785d=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./smsApplication.attributes','exports','define','utf8mb4'];(function(_0x104521,_0x302c13){var _0xe9ae46=function(_0x4d80e6){while(--_0x4d80e6){_0x104521['push'](_0x104521['shift']());}};_0xe9ae46(++_0x302c13);}(_0x785d,0x90));var _0xd785=function(_0x187fa0,_0x373e03){_0x187fa0=_0x187fa0-0x0;var _0x3ff6e7=_0x785d[_0x187fa0];return _0x3ff6e7;};'use strict';var _=require(_0xd785('0x0'));var util=require(_0xd785('0x1'));var logger=require(_0xd785('0x2'))(_0xd785('0x3'));var moment=require(_0xd785('0x4'));var BPromise=require('bluebird');var rp=require(_0xd785('0x5'));var fs=require('fs');var path=require(_0xd785('0x6'));var rimraf=require('rimraf');var config=require(_0xd785('0x7'));var attributes=require(_0xd785('0x8'));module[_0xd785('0x9')]=function(_0x6369a7,_0x28bcda){return _0x6369a7[_0xd785('0xa')]('SmsApplication',attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd785('0xb'),'collate':_0xd785('0xc')});};
\ No newline at end of file
index 6807a4a..f31a200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f83=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f83,0x72));var _0x36f8=function(_0x5cfec0,_0x232d14){_0x5cfec0=_0x5cfec0-0x0;var _0x737a0b=_0x6f83[_0x5cfec0];return _0x737a0b;};'use strict';var _=require('lodash');var util=require(_0x36f8('0x0'));var moment=require(_0x36f8('0x1'));var BPromise=require('bluebird');var rs=require(_0x36f8('0x2'));var fs=require('fs');var Redis=require(_0x36f8('0x3'));var db=require(_0x36f8('0x4'))['db'];var utils=require(_0x36f8('0x5'));var logger=require(_0x36f8('0x6'))(_0x36f8('0x7'));var config=require(_0x36f8('0x8'));var jayson=require(_0x36f8('0x9'));var client=jayson[_0x36f8('0xa')][_0x36f8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27d94b,_0x2c0367,_0x370a97){return new BPromise(function(_0x3fe644,_0x22b992){return client[_0x36f8('0xc')](_0x27d94b,_0x370a97)['then'](function(_0x48c7b2){logger['info'](_0x36f8('0xd'),_0x2c0367,_0x36f8('0xe'));logger[_0x36f8('0xf')](_0x36f8('0x10'),_0x2c0367,_0x36f8('0xe'),JSON[_0x36f8('0x11')](_0x48c7b2));if(_0x48c7b2[_0x36f8('0x12')]){if(_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x13')]===0x1f4){logger['error'](_0x36f8('0xd'),_0x2c0367,_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x14')]);return _0x22b992(_0x48c7b2[_0x36f8('0x12')]['message']);}logger[_0x36f8('0x12')](_0x36f8('0xd'),_0x2c0367,_0x48c7b2[_0x36f8('0x12')]['message']);return _0x3fe644(_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x14')]);}else{logger[_0x36f8('0x15')]('SmsApplication,\x20%s,\x20%s',_0x2c0367,_0x36f8('0xe'));_0x3fe644(_0x48c7b2[_0x36f8('0x16')][_0x36f8('0x14')]);}})[_0x36f8('0x17')](function(_0x5ec545){logger['error'](_0x36f8('0xd'),_0x2c0367,_0x5ec545);_0x22b992(_0x5ec545);});});}
\ No newline at end of file
+var _0xc6a2=['info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x346caa,_0x46888d){var _0x1f4548=function(_0x3e7c1b){while(--_0x3e7c1b){_0x346caa['push'](_0x346caa['shift']());}};_0x1f4548(++_0x46888d);}(_0xc6a2,0x69));var _0x2c6a=function(_0x1e26b,_0x527cba){_0x1e26b=_0x1e26b-0x0;var _0x19883e=_0xc6a2[_0x1e26b];return _0x19883e;};'use strict';var _=require(_0x2c6a('0x0'));var util=require(_0x2c6a('0x1'));var moment=require('moment');var BPromise=require(_0x2c6a('0x2'));var rs=require(_0x2c6a('0x3'));var fs=require('fs');var Redis=require(_0x2c6a('0x4'));var db=require(_0x2c6a('0x5'))['db'];var utils=require(_0x2c6a('0x6'));var logger=require(_0x2c6a('0x7'))(_0x2c6a('0x8'));var config=require(_0x2c6a('0x9'));var jayson=require(_0x2c6a('0xa'));var client=jayson[_0x2c6a('0xb')][_0x2c6a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x33cdf9,_0x9c5133,_0x2b006a){return new BPromise(function(_0x4e45fa,_0x36f800){return client[_0x2c6a('0xd')](_0x33cdf9,_0x2b006a)[_0x2c6a('0xe')](function(_0x2290ed){logger[_0x2c6a('0xf')](_0x2c6a('0x10'),_0x9c5133,_0x2c6a('0x11'));logger[_0x2c6a('0x12')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x9c5133,'request\x20sent',JSON[_0x2c6a('0x13')](_0x2290ed));if(_0x2290ed[_0x2c6a('0x14')]){if(_0x2290ed[_0x2c6a('0x14')][_0x2c6a('0x15')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x9c5133,_0x2290ed[_0x2c6a('0x14')][_0x2c6a('0x16')]);return _0x36f800(_0x2290ed[_0x2c6a('0x14')]['message']);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x9c5133,_0x2290ed[_0x2c6a('0x14')][_0x2c6a('0x16')]);return _0x4e45fa(_0x2290ed[_0x2c6a('0x14')][_0x2c6a('0x16')]);}else{logger[_0x2c6a('0xf')](_0x2c6a('0x10'),_0x9c5133,_0x2c6a('0x11'));_0x4e45fa(_0x2290ed[_0x2c6a('0x17')][_0x2c6a('0x16')]);}})['catch'](function(_0x41f830){logger[_0x2c6a('0x14')]('SmsApplication,\x20%s,\x20%s',_0x9c5133,_0x41f830);_0x36f800(_0x41f830);});});}
\ No newline at end of file
index 3c1163d..8744884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['/describe','describe','/:id','show','getMessages','/:id/download','post','/:id/messages','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','destroy','exports','multer','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index'];(function(_0x14d942,_0x5caf07){var _0x1890a5=function(_0x4110e4){while(--_0x4110e4){_0x14d942['push'](_0x14d942['shift']());}};_0x1890a5(++_0x5caf07);}(_0xf7b4,0x152));var _0x4f7b=function(_0xa016f6,_0x3a8863){_0xa016f6=_0xa016f6-0x0;var _0x313949=_0xf7b4[_0xa016f6];return _0x313949;};'use strict';var multer=require(_0x4f7b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4f7b('0x1'));var express=require(_0x4f7b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4f7b('0x3'));var interaction=require(_0x4f7b('0x4'));var config=require(_0x4f7b('0x5'));var controller=require(_0x4f7b('0x6'));router[_0x4f7b('0x7')]('/',auth[_0x4f7b('0x8')](),controller[_0x4f7b('0x9')]);router[_0x4f7b('0x7')](_0x4f7b('0xa'),auth[_0x4f7b('0x8')](),controller[_0x4f7b('0xb')]);router[_0x4f7b('0x7')](_0x4f7b('0xc'),auth['isAuthenticated'](),controller[_0x4f7b('0xd')]);router[_0x4f7b('0x7')]('/:id/messages',auth[_0x4f7b('0x8')](),controller[_0x4f7b('0xe')]);router[_0x4f7b('0x7')](_0x4f7b('0xf'),auth[_0x4f7b('0x8')](),controller['download']);router[_0x4f7b('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4f7b('0x10')](_0x4f7b('0x11'),auth[_0x4f7b('0x8')](),controller[_0x4f7b('0x12')]);router['post'](_0x4f7b('0x13'),auth[_0x4f7b('0x8')](),interaction[_0x4f7b('0x14')](_0x4f7b('0x15'),_0x4f7b('0x16')),controller[_0x4f7b('0x17')]);router[_0x4f7b('0x18')](_0x4f7b('0xc'),auth[_0x4f7b('0x8')](),interaction[_0x4f7b('0x14')](_0x4f7b('0x15'),_0x4f7b('0x19')),controller['update']);router[_0x4f7b('0x1a')]('/:id',auth['isAuthenticated'](),interaction[_0x4f7b('0x14')](_0x4f7b('0x15'),'smsinteraction:destroy'),controller[_0x4f7b('0x1b')]);router[_0x4f7b('0x1a')](_0x4f7b('0x13'),auth[_0x4f7b('0x8')](),controller['removeTags']);module[_0x4f7b('0x1c')]=router;
\ No newline at end of file
+var _0xd8b0=['util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer'];(function(_0x1da6b2,_0x3a9d0c){var _0x228c53=function(_0x112726){while(--_0x112726){_0x1da6b2['push'](_0x1da6b2['shift']());}};_0x228c53(++_0x3a9d0c);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./smsInteraction.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('0x9')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0x9')]('/:id/download',auth[_0x0d8b('0x7')](),controller['download']);router[_0x0d8b('0xf')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x10')]);router[_0x0d8b('0xf')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);router[_0x0d8b('0xf')](_0x0d8b('0x12'),auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0x13')](_0x0d8b('0x14'),_0x0d8b('0x15')),controller[_0x0d8b('0x16')]);router['put'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0x13')](_0x0d8b('0x14'),_0x0d8b('0x17')),controller['update']);router[_0x0d8b('0x18')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0x13')](_0x0d8b('0x14'),_0x0d8b('0x19')),controller[_0x0d8b('0x1a')]);router[_0x0d8b('0x18')]('/:id/tags',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x1b')]);module[_0x0d8b('0x1c')]=router;
\ No newline at end of file
index 4cd7b69..8569ea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea31=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x29a2c1,_0x3ad9b3){var _0x4e58d5=function(_0x4e72f5){while(--_0x4e72f5){_0x29a2c1['push'](_0x29a2c1['shift']());}};_0x4e58d5(++_0x3ad9b3);}(_0xea31,0x6b));var _0x1ea3=function(_0x3faacd,_0x2cd0d2){_0x3faacd=_0x3faacd-0x0;var _0x285109=_0xea31[_0x3faacd];return _0x285109;};'use strict';var Sequelize=require(_0x1ea3('0x0'));var moment=require('moment');module[_0x1ea3('0x1')]={'closed':{'type':Sequelize[_0x1ea3('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1ea3('0x3')]},'disposition':{'type':Sequelize[_0x1ea3('0x4')]},'secondDisposition':{'type':Sequelize[_0x1ea3('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1ea3('0x4')]},'note':{'type':Sequelize[_0x1ea3('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1ea3('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x1ea3('0x5')]('in',_0x1ea3('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1ea3('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x1ea3('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1ea3('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9432=['sequelize','moment','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0xf91841,_0x182ae3){var _0x4b9c44=function(_0x2e216e){while(--_0x2e216e){_0xf91841['push'](_0xf91841['shift']());}};_0x4b9c44(++_0x182ae3);}(_0x9432,0x1e3));var _0x2943=function(_0x91ca8c,_0x1f953e){_0x91ca8c=_0x91ca8c-0x0;var _0x1f03af=_0x9432[_0x91ca8c];return _0x1f03af;};'use strict';var Sequelize=require(_0x2943('0x0'));var moment=require(_0x2943('0x1'));module['exports']={'closed':{'type':Sequelize[_0x2943('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2943('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2943('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x2943('0x4')]},'read1stAt':{'type':Sequelize[_0x2943('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x2943('0x5')]('in',_0x2943('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2943('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x2943('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2943('0x2')],'defaultValue':![]}};
\ No newline at end of file
index c3157a3..e249a1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6def=['offset','set','Content-Range','update','then','destroy','sendStatus','error','name','send','index','SmsInteraction','fieldName','type','key','getOptions','findAll','query','user','catch','show','model','keys','rawAttributes','filters','intersection','fields','length','attributes','includeAll','include','merge','options','find','create','body','params','describe','addMessage','ids','omit','getMessages','findOne','SmsMessage','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','map','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','root','server','tmp','join','transcript-%d-%s.zip','push','User','fullname','CmContact','lastName','Messages','createdAt','direction','secret','read','SmsAccount','get','mkdirSync','Sms','Owner','N.A.','closedAt','disposition','out','System','Contact','firstName','value','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','err','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','status','end','json','limit','undefined','count'];(function(_0x2b2f38,_0x33b0a2){var _0x44ab76=function(_0x335f8d){while(--_0x335f8d){_0x2b2f38['push'](_0x2b2f38['shift']());}};_0x44ab76(++_0x33b0a2);}(_0x6def,0x67));var _0xf6de=function(_0x2dc323,_0x2f4775){_0x2dc323=_0x2dc323-0x0;var _0x53239d=_0x6def[_0x2dc323];return _0x53239d;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xf6de('0x0'));var moment=require(_0xf6de('0x1'));var BPromise=require(_0xf6de('0x2'));var util=require(_0xf6de('0x3'));var path=require(_0xf6de('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xf6de('0x5'));var Redis=require(_0xf6de('0x6'));var interaction=require(_0xf6de('0x7'));var qs=require(_0xf6de('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0xf6de('0x9'))('api');var config=require(_0xf6de('0xa'));var db=require('../../mysqldb')['db'];config[_0xf6de('0xb')]=_['defaults'](config[_0xf6de('0xb')],{'host':_0xf6de('0xc'),'port':0x18eb});var socket=require(_0xf6de('0xd'))(new Redis(config[_0xf6de('0xb')]));require(_0xf6de('0xe'))[_0xf6de('0xf')](socket);function respondWithStatusCode(_0x1b2479,_0x5a4a56){_0x5a4a56=_0x5a4a56||0xcc;return function(_0x3cf545){if(_0x3cf545){return _0x1b2479['sendStatus'](_0x5a4a56);}return _0x1b2479[_0xf6de('0x10')](_0x5a4a56)[_0xf6de('0x11')]();};}function respondWithResult(_0x240d3b,_0x47339b){_0x47339b=_0x47339b||0xc8;return function(_0x33ce89){if(_0x33ce89){return _0x240d3b[_0xf6de('0x10')](_0x47339b)[_0xf6de('0x12')](_0x33ce89);}};}function respondWithFilteredResult(_0x51e074,_0xaf7706){return function(_0x22e722){if(_0x22e722){var _0x198c3d=typeof _0xaf7706['offset']==='undefined'&&typeof _0xaf7706[_0xf6de('0x13')]===_0xf6de('0x14');var _0x3f7fa7=_0x22e722[_0xf6de('0x15')];var _0x5a24ec=_0x198c3d?0x0:_0xaf7706[_0xf6de('0x16')];var _0x2c7daf=_0x198c3d?_0x22e722['count']:_0xaf7706[_0xf6de('0x16')]+_0xaf7706['limit'];var _0x22b286;if(_0x2c7daf>=_0x3f7fa7){_0x2c7daf=_0x3f7fa7;_0x22b286=0xc8;}else{_0x22b286=0xce;}_0x51e074[_0xf6de('0x10')](_0x22b286);return _0x51e074[_0xf6de('0x17')](_0xf6de('0x18'),_0x5a24ec+'-'+_0x2c7daf+'/'+_0x3f7fa7)['json'](_0x22e722);}return null;};}function saveUpdates(_0xbc871c){return function(_0x3b6d37){if(_0x3b6d37){return _0x3b6d37[_0xf6de('0x19')](_0xbc871c)[_0xf6de('0x1a')](function(_0x54ce3c){return _0x54ce3c;});}return null;};}function removeEntity(_0x21aee3){return function(_0x12ff60){if(_0x12ff60){return _0x12ff60[_0xf6de('0x1b')]()[_0xf6de('0x1a')](function(){_0x21aee3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2848ad){return function(_0x5dfcb5){if(!_0x5dfcb5){_0x2848ad[_0xf6de('0x1c')](0x194);}return _0x5dfcb5;};}function handleError(_0x3c5a60,_0x119d59){_0x119d59=_0x119d59||0x1f4;return function(_0x54de64){logger[_0xf6de('0x1d')](_0x54de64['stack']);if(_0x54de64['name']){delete _0x54de64[_0xf6de('0x1e')];}_0x3c5a60[_0xf6de('0x10')](_0x119d59)[_0xf6de('0x1f')](_0x54de64);};}exports[_0xf6de('0x20')]=function(_0x153f1b,_0x2651fb){var _0x34a0c4={};var _0x5cd2ae=_['map'](db[_0xf6de('0x21')]['rawAttributes'],function(_0x50a096){return{'name':_0x50a096[_0xf6de('0x22')],'type':_0x50a096[_0xf6de('0x23')][_0xf6de('0x24')]};});_0x34a0c4=qs[_0xf6de('0x25')](_0x5cd2ae,_0x153f1b);return interaction[_0xf6de('0x26')]('sms',_0x153f1b[_0xf6de('0x27')],_0x153f1b[_0xf6de('0x28')],_0x34a0c4,_0x5cd2ae)[_0xf6de('0x1a')](respondWithFilteredResult(_0x2651fb,_0x34a0c4))[_0xf6de('0x29')](handleError(_0x2651fb,null));};exports[_0xf6de('0x2a')]=function(_0x2ae79c,_0x2a67f7){var _0x1c244b={'raw':![],'where':{'id':_0x2ae79c['params']['id']}},_0x41bbac={};_0x41bbac[_0xf6de('0x2b')]=_[_0xf6de('0x2c')](db[_0xf6de('0x21')][_0xf6de('0x2d')]);_0x41bbac[_0xf6de('0x27')]=_[_0xf6de('0x2c')](_0x2ae79c[_0xf6de('0x27')]);_0x41bbac[_0xf6de('0x2e')]=_[_0xf6de('0x2f')](_0x41bbac[_0xf6de('0x2b')],_0x41bbac[_0xf6de('0x27')]);_0x1c244b['attributes']=_['intersection'](_0x41bbac[_0xf6de('0x2b')],qs[_0xf6de('0x30')](_0x2ae79c[_0xf6de('0x27')][_0xf6de('0x30')]));_0x1c244b['attributes']=_0x1c244b['attributes'][_0xf6de('0x31')]?_0x1c244b[_0xf6de('0x32')]:_0x41bbac['model'];if(_0x2ae79c['query'][_0xf6de('0x33')]){_0x1c244b[_0xf6de('0x34')]=[{'all':!![]}];}_0x1c244b=_[_0xf6de('0x35')]({},_0x1c244b,_0x2ae79c[_0xf6de('0x36')]);return db['SmsInteraction'][_0xf6de('0x37')](_0x1c244b)[_0xf6de('0x1a')](handleEntityNotFound(_0x2a67f7,null))[_0xf6de('0x1a')](respondWithResult(_0x2a67f7,null))[_0xf6de('0x29')](handleError(_0x2a67f7,null));};exports[_0xf6de('0x38')]=function(_0x4ed5e2,_0x456eb2){return db[_0xf6de('0x21')]['create'](_0x4ed5e2[_0xf6de('0x39')],{})[_0xf6de('0x1a')](respondWithResult(_0x456eb2,0xc9))[_0xf6de('0x29')](handleError(_0x456eb2,null));};exports[_0xf6de('0x19')]=function(_0x2ded2d,_0xccbd29){if(_0x2ded2d[_0xf6de('0x39')]['id']){delete _0x2ded2d['body']['id'];}return db[_0xf6de('0x21')][_0xf6de('0x37')]({'where':{'id':_0x2ded2d[_0xf6de('0x3a')]['id']}})[_0xf6de('0x1a')](handleEntityNotFound(_0xccbd29,null))[_0xf6de('0x1a')](saveUpdates(_0x2ded2d[_0xf6de('0x39')],null))[_0xf6de('0x1a')](respondWithResult(_0xccbd29,null))[_0xf6de('0x29')](handleError(_0xccbd29,null));};exports[_0xf6de('0x1b')]=function(_0x4d7256,_0x484e7f){return db[_0xf6de('0x21')][_0xf6de('0x37')]({'where':{'id':_0x4d7256[_0xf6de('0x3a')]['id']}})[_0xf6de('0x1a')](handleEntityNotFound(_0x484e7f,null))['then'](removeEntity(_0x484e7f,null))['catch'](handleError(_0x484e7f,null));};exports[_0xf6de('0x3b')]=function(_0x52d032,_0x3b5408){return db['SmsInteraction'][_0xf6de('0x3b')]()['then'](respondWithResult(_0x3b5408,null))['catch'](handleError(_0x3b5408,null));};exports[_0xf6de('0x3c')]=function(_0x12ab99,_0x127f35){return db['SmsMessage'][_0xf6de('0x37')]({'where':{'id':_0x12ab99[_0xf6de('0x3a')]['id']}})[_0xf6de('0x1a')](handleEntityNotFound(_0x127f35,null))[_0xf6de('0x1a')](function(_0x16ba85){if(_0x16ba85){return _0x16ba85[_0xf6de('0x3c')](_0x12ab99[_0xf6de('0x39')][_0xf6de('0x3d')],_[_0xf6de('0x3e')](_0x12ab99['body'],[_0xf6de('0x3d'),'id'])||{});}})[_0xf6de('0x1a')](respondWithResult(_0x127f35,null))[_0xf6de('0x29')](handleError(_0x127f35,null));};exports[_0xf6de('0x3f')]=function(_0x38087e,_0x4a18e4){var _0x4cf6c6={'raw':![],'where':{}};var _0x2c5aa4={};var _0x4361f1={'count':0x0,'rows':[]};return db[_0xf6de('0x21')][_0xf6de('0x40')]({'where':{'id':_0x38087e[_0xf6de('0x3a')]['id']}})['then'](handleEntityNotFound(_0x4a18e4,null))[_0xf6de('0x1a')](function(_0x50cbd2){if(_0x50cbd2){_0x2c5aa4[_0xf6de('0x2b')]=_['keys'](db[_0xf6de('0x41')]['rawAttributes']);_0x2c5aa4['query']=_['keys'](_0x38087e[_0xf6de('0x27')]);_0x2c5aa4[_0xf6de('0x2e')]=_[_0xf6de('0x2f')](_0x2c5aa4[_0xf6de('0x2b')],_0x2c5aa4[_0xf6de('0x27')]);_0x4cf6c6['attributes']=_[_0xf6de('0x2f')](_0x2c5aa4[_0xf6de('0x2b')],qs[_0xf6de('0x30')](_0x38087e[_0xf6de('0x27')][_0xf6de('0x30')]));_0x4cf6c6[_0xf6de('0x32')]=_0x4cf6c6[_0xf6de('0x32')][_0xf6de('0x31')]?_0x4cf6c6['attributes']:_0x2c5aa4[_0xf6de('0x2b')];if(!_0x38087e[_0xf6de('0x27')][_0xf6de('0x42')](_0xf6de('0x43'))){_0x4cf6c6[_0xf6de('0x13')]=qs['limit'](_0x38087e['query']['limit']);_0x4cf6c6['offset']=qs[_0xf6de('0x16')](_0x38087e[_0xf6de('0x27')][_0xf6de('0x16')]);}_0x4cf6c6[_0xf6de('0x44')]=qs[_0xf6de('0x45')](_0x38087e[_0xf6de('0x27')][_0xf6de('0x45')]);_0x4cf6c6[_0xf6de('0x46')]=qs[_0xf6de('0x2e')](_[_0xf6de('0x47')](_0x38087e['query'],_0x2c5aa4[_0xf6de('0x2e')]));_0x4cf6c6[_0xf6de('0x46')][_0xf6de('0x48')]=_0x50cbd2['id'];if(_0x38087e['query']['filter']){_0x4cf6c6[_0xf6de('0x46')]=_['merge'](_0x4cf6c6[_0xf6de('0x46')],{'$or':_[_0xf6de('0x49')](_0x4cf6c6['attributes'],function(_0x1018fb){var _0x1c916f={};_0x1c916f[_0x1018fb]={'$like':'%'+_0x38087e[_0xf6de('0x27')][_0xf6de('0x4a')]+'%'};return _0x1c916f;})});}if(_0x38087e[_0xf6de('0x27')][_0xf6de('0x4b')]){var _0x44c89e=_0x38087e['query'][_0xf6de('0x4b')]['split'](',');var _0x306598={};_0x306598[_0x44c89e[0x0]]={'$gte':moment(_0x44c89e[0x1])[_0xf6de('0x4c')](_0xf6de('0x4d'))};_0x4cf6c6['where']=_['merge'](_0x4cf6c6[_0xf6de('0x46')],_0x306598);}_0x4cf6c6=_[_0xf6de('0x35')]({},_0x4cf6c6,_0x38087e[_0xf6de('0x36')]);return db['SmsMessage']['count']({'where':_0x4cf6c6[_0xf6de('0x46')]})[_0xf6de('0x1a')](function(_0x11d888){_0x4361f1[_0xf6de('0x15')]=_0x11d888;if(_0x38087e[_0xf6de('0x27')][_0xf6de('0x33')]){_0x4cf6c6[_0xf6de('0x34')]=[{'all':!![]}];}return db['SmsMessage'][_0xf6de('0x26')](_0x4cf6c6);})[_0xf6de('0x1a')](function(_0x2ef64a){_0x4361f1[_0xf6de('0x4e')]=_0x2ef64a;return _0x4361f1;});}})[_0xf6de('0x1a')](respondWithFilteredResult(_0x4a18e4,_0x4cf6c6))[_0xf6de('0x29')](handleError(_0x4a18e4,null));};exports[_0xf6de('0x4f')]=function(_0x1d8392,_0x5b8379){return db[_0xf6de('0x21')]['find']({'where':{'id':_0x1d8392['params']['id']}})['then'](handleEntityNotFound(_0x5b8379,null))[_0xf6de('0x1a')](function(_0x998b2c){if(_0x998b2c){return _0x998b2c[_0xf6de('0x50')](_0x1d8392['body'][_0xf6de('0x3d')],_[_0xf6de('0x3e')](_0x1d8392[_0xf6de('0x39')],[_0xf6de('0x3d'),'id'])||{})[_0xf6de('0x51')](function(){return db[_0xf6de('0x52')][_0xf6de('0x26')]({'attributes':['id',_0xf6de('0x1e'),_0xf6de('0x53')],'where':{'id':_0x1d8392[_0xf6de('0x39')][_0xf6de('0x3d')]}});})[_0xf6de('0x1a')](function(_0x309af9){socket[_0xf6de('0x54')](_0xf6de('0x55'),{'id':Number(_0x1d8392[_0xf6de('0x3a')]['id']),'tags':_0x309af9||[]});return{'id':Number(_0x1d8392[_0xf6de('0x3a')]['id']),'tags':_0x309af9||[]};});}})[_0xf6de('0x1a')](respondWithResult(_0x5b8379,null))[_0xf6de('0x29')](handleError(_0x5b8379,null));};exports['removeTags']=function(_0x34639c,_0x547489){return db[_0xf6de('0x21')][_0xf6de('0x37')]({'where':{'id':_0x34639c['params']['id']}})[_0xf6de('0x1a')](handleEntityNotFound(_0x547489,null))[_0xf6de('0x1a')](function(_0x2b8034){if(_0x2b8034){return _0x2b8034[_0xf6de('0x56')](_0x34639c[_0xf6de('0x27')][_0xf6de('0x3d')]);}})[_0xf6de('0x1a')](respondWithStatusCode(_0x547489,null))[_0xf6de('0x29')](handleError(_0x547489,null));};exports[_0xf6de('0x57')]=function(_0x206eb5,_0x33e33e){var _0x2ab5a9=moment()[_0xf6de('0x58')]()[_0xf6de('0x59')]();var _0x4277e6=path['join'](config[_0xf6de('0x5a')],_0xf6de('0x5b'),'files',_0xf6de('0x5c'));var _0x51d098=path[_0xf6de('0x5d')](_0x4277e6,_0x2ab5a9);var _0x3a45b7=util[_0xf6de('0x4c')](_0xf6de('0x5e'),_0x206eb5[_0xf6de('0x3a')]['id'],_0x2ab5a9);var _0x53731f=path[_0xf6de('0x5d')](_0x4277e6,_0x3a45b7);var _0x18586d=[];_0x18586d[_0xf6de('0x5f')]({'model':db[_0xf6de('0x60')],'as':'User','attributes':['id',_0xf6de('0x61')],'raw':!![]});_0x18586d[_0xf6de('0x5f')]({'model':db[_0xf6de('0x62')],'as':'Contact','attributes':['id','firstName',_0xf6de('0x63')],'raw':!![]});var _0x4cb252=[{'model':db['SmsMessage'],'as':_0xf6de('0x64'),'attributes':['id','body',_0xf6de('0x65'),_0xf6de('0x66'),_0xf6de('0x67'),_0xf6de('0x68')],'include':_0x18586d}];_0x4cb252[_0xf6de('0x5f')]({'model':db[_0xf6de('0x69')],'as':'Account','attributes':['id',_0xf6de('0x1e')]});_0x4cb252['push']({'model':db[_0xf6de('0x60')],'as':'Owner','attributes':['id',_0xf6de('0x61')]});return db[_0xf6de('0x21')][_0xf6de('0x37')]({'where':{'id':_0x206eb5[_0xf6de('0x3a')]['id']},'include':_0x4cb252})[_0xf6de('0x1a')](handleEntityNotFound(_0x33e33e,null))[_0xf6de('0x1a')](function(_0x828df1){if(_0x828df1){var _0x21b4c0=_0x828df1[_0xf6de('0x6a')]({'plain':!![]});fs[_0xf6de('0x6b')](_0x51d098);var _0x44da58={'channel':_0xf6de('0x6c'),'account':_0x21b4c0['Account'][_0xf6de('0x1e')],'agent':_0x21b4c0[_0xf6de('0x6d')]?_0x21b4c0[_0xf6de('0x6d')][_0xf6de('0x61')]:_0xf6de('0x6e'),'createdAt':moment(_0x21b4c0[_0xf6de('0x65')])[_0xf6de('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf6de('0x59')](),'closedAt':_0x21b4c0['closed']?moment(_0x21b4c0[_0xf6de('0x6f')])[_0xf6de('0x4c')](_0xf6de('0x4d'))[_0xf6de('0x59')]():'','disposition':_0x21b4c0[_0xf6de('0x70')],'messages':_(_0x21b4c0[_0xf6de('0x64')])[_0xf6de('0x4a')]({'secret':![]})[_0xf6de('0x49')](function(_0x343636){return{'date':moment(_0x343636[_0xf6de('0x65')])['format'](_0xf6de('0x4d'))[_0xf6de('0x59')](),'sender':_0x343636[_0xf6de('0x66')]===_0xf6de('0x71')?_0x343636['User']?_0x343636[_0xf6de('0x60')][_0xf6de('0x61')]:_0xf6de('0x72'):_0x343636[_0xf6de('0x73')][_0xf6de('0x74')]+(_0x343636[_0xf6de('0x73')]['lastName']?'\x20'+_0x343636[_0xf6de('0x73')]['lastName']:''),'body':_0x343636[_0xf6de('0x39')],'direction':_0x343636[_0xf6de('0x66')]===_0xf6de('0x71')?'A':'C','secret':_0x343636['secret'],'read':_0x343636[_0xf6de('0x68')]};})[_0xf6de('0x75')]()};return ejs[_0xf6de('0x76')](path[_0xf6de('0x5d')](config[_0xf6de('0x5a')],_0xf6de('0x5b'),_0xf6de('0x77'),'downloadInteraction.ejs'),{'interaction':_0x44da58})[_0xf6de('0x1a')](function(_0x481dc8){var _0x175b44=path['join'](_0x51d098,_0xf6de('0x78')+_0x21b4c0['id']+'-'+_0x2ab5a9+_0xf6de('0x79'));var _0x177e05={'path':_0x175b44,'channel':_0xf6de('0x6c'),'interactionId':_0x21b4c0['id']};return pdf[_0xf6de('0x7a')](_0x481dc8,_0x177e05);})[_0xf6de('0x1a')](function(){return new BPromise(function(_0x128037,_0x393cfa){zipdir(_0x51d098,{'saveTo':_0x53731f},function(_0x1ae51f,_0x4dbc1c){if(_0x1ae51f)return _0x393cfa(_0x1ae51f);return _0x128037(_0x4dbc1c);});})[_0xf6de('0x1a')](function(){return new BPromise(function(_0x57e033,_0x3655b7){rimraf(_0x51d098,function(_0x31db08){if(_0x31db08)_0x3655b7(_0x31db08);return _0x57e033();});});})['then'](function(){return _0x33e33e[_0xf6de('0x57')](_0x53731f,_0x3a45b7,function(_0x643373){if(_0x643373){console[_0xf6de('0x7b')](_0xf6de('0x7c'),_0x643373);}else{fs['unlinkSync'](_0x53731f);}});});});}else{return _0x33e33e['sendStatus'](0xc8);}})[_0xf6de('0x29')](handleError(_0x33e33e,null));};
\ No newline at end of file
+var _0x635e=['lastName','secret','value','renderFile','root','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','update','destroy','then','stack','name','send','index','SmsInteraction','rawAttributes','fieldName','key','sms','query','catch','params','model','keys','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','SmsMessage','ids','omit','getMessages','hasOwnProperty','order','sort','where','filters','pick','SmsInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','setTags','spread','emit','smsInteractionTags:save','removeTags','unix','toString','join','server','files','tmp','push','User','fullname','CmContact','Contact','firstName','Messages','createdAt','direction','Account','Owner','get','Sms','N.A.','closed','disposition','map','out'];(function(_0x32d216,_0x19043){var _0x4533f1=function(_0x5f074){while(--_0x5f074){_0x32d216['push'](_0x32d216['shift']());}};_0x4533f1(++_0x19043);}(_0x635e,0xf6));var _0xe635=function(_0x168316,_0x4285e4){_0x168316=_0x168316-0x0;var _0x484452=_0x635e[_0x168316];return _0x484452;};'use strict';var rimraf=require(_0xe635('0x0'));var zipdir=require(_0xe635('0x1'));var moment=require(_0xe635('0x2'));var BPromise=require(_0xe635('0x3'));var util=require(_0xe635('0x4'));var path=require(_0xe635('0x5'));var ejs=require(_0xe635('0x6'));var fs=require('fs');var _=require(_0xe635('0x7'));var Redis=require(_0xe635('0x8'));var interaction=require('../../components/interaction/service');var qs=require(_0xe635('0x9'));var pdf=require(_0xe635('0xa'));var logger=require('../../config/logger')(_0xe635('0xb'));var config=require(_0xe635('0xc'));var db=require(_0xe635('0xd'))['db'];config[_0xe635('0xe')]=_[_0xe635('0xf')](config[_0xe635('0xe')],{'host':_0xe635('0x10'),'port':0x18eb});var socket=require(_0xe635('0x11'))(new Redis(config['redis']));require(_0xe635('0x12'))[_0xe635('0x13')](socket);function respondWithStatusCode(_0x1a81ad,_0x4620ca){_0x4620ca=_0x4620ca||0xcc;return function(_0x23d6aa){if(_0x23d6aa){return _0x1a81ad[_0xe635('0x14')](_0x4620ca);}return _0x1a81ad[_0xe635('0x15')](_0x4620ca)[_0xe635('0x16')]();};}function respondWithResult(_0x2a81c1,_0x1a17bf){_0x1a17bf=_0x1a17bf||0xc8;return function(_0x2115e1){if(_0x2115e1){return _0x2a81c1[_0xe635('0x15')](_0x1a17bf)['json'](_0x2115e1);}};}function respondWithFilteredResult(_0x2063c6,_0x42b6bc){return function(_0x589f45){if(_0x589f45){var _0x4848e6=typeof _0x42b6bc[_0xe635('0x17')]===_0xe635('0x18')&&typeof _0x42b6bc['limit']===_0xe635('0x18');var _0x49b041=_0x589f45[_0xe635('0x19')];var _0x4d4863=_0x4848e6?0x0:_0x42b6bc[_0xe635('0x17')];var _0x4899c5=_0x4848e6?_0x589f45[_0xe635('0x19')]:_0x42b6bc['offset']+_0x42b6bc[_0xe635('0x1a')];var _0x179a4f;if(_0x4899c5>=_0x49b041){_0x4899c5=_0x49b041;_0x179a4f=0xc8;}else{_0x179a4f=0xce;}_0x2063c6['status'](_0x179a4f);return _0x2063c6['set'](_0xe635('0x1b'),_0x4d4863+'-'+_0x4899c5+'/'+_0x49b041)[_0xe635('0x1c')](_0x589f45);}return null;};}function saveUpdates(_0x266ed2){return function(_0x27e221){if(_0x27e221){return _0x27e221[_0xe635('0x1d')](_0x266ed2)['then'](function(_0x2c6056){return _0x2c6056;});}return null;};}function removeEntity(_0x41e6bd){return function(_0x5e2782){if(_0x5e2782){return _0x5e2782[_0xe635('0x1e')]()[_0xe635('0x1f')](function(){_0x41e6bd[_0xe635('0x15')](0xcc)[_0xe635('0x16')]();});}};}function handleEntityNotFound(_0x44f079){return function(_0x1bea77){if(!_0x1bea77){_0x44f079['sendStatus'](0x194);}return _0x1bea77;};}function handleError(_0x113be2,_0x4ecc98){_0x4ecc98=_0x4ecc98||0x1f4;return function(_0x18577d){logger['error'](_0x18577d[_0xe635('0x20')]);if(_0x18577d[_0xe635('0x21')]){delete _0x18577d[_0xe635('0x21')];}_0x113be2[_0xe635('0x15')](_0x4ecc98)[_0xe635('0x22')](_0x18577d);};}exports[_0xe635('0x23')]=function(_0x1a0d23,_0x24c9e2){var _0x44a6ae={};var _0x2dbf80=_['map'](db[_0xe635('0x24')][_0xe635('0x25')],function(_0x596ea0){return{'name':_0x596ea0[_0xe635('0x26')],'type':_0x596ea0['type'][_0xe635('0x27')]};});_0x44a6ae=qs['getOptions'](_0x2dbf80,_0x1a0d23);return interaction['findAll'](_0xe635('0x28'),_0x1a0d23[_0xe635('0x29')],_0x1a0d23['user'],_0x44a6ae,_0x2dbf80)['then'](respondWithFilteredResult(_0x24c9e2,_0x44a6ae))[_0xe635('0x2a')](handleError(_0x24c9e2,null));};exports['show']=function(_0x4ef136,_0x455226){var _0xcf0926={'raw':![],'where':{'id':_0x4ef136[_0xe635('0x2b')]['id']}},_0x47037e={};_0x47037e[_0xe635('0x2c')]=_[_0xe635('0x2d')](db[_0xe635('0x24')][_0xe635('0x25')]);_0x47037e[_0xe635('0x29')]=_[_0xe635('0x2d')](_0x4ef136['query']);_0x47037e['filters']=_[_0xe635('0x2e')](_0x47037e[_0xe635('0x2c')],_0x47037e[_0xe635('0x29')]);_0xcf0926[_0xe635('0x2f')]=_[_0xe635('0x2e')](_0x47037e[_0xe635('0x2c')],qs['fields'](_0x4ef136['query'][_0xe635('0x30')]));_0xcf0926['attributes']=_0xcf0926['attributes'][_0xe635('0x31')]?_0xcf0926[_0xe635('0x2f')]:_0x47037e[_0xe635('0x2c')];if(_0x4ef136[_0xe635('0x29')][_0xe635('0x32')]){_0xcf0926[_0xe635('0x33')]=[{'all':!![]}];}_0xcf0926=_[_0xe635('0x34')]({},_0xcf0926,_0x4ef136[_0xe635('0x35')]);return db[_0xe635('0x24')][_0xe635('0x36')](_0xcf0926)[_0xe635('0x1f')](handleEntityNotFound(_0x455226,null))[_0xe635('0x1f')](respondWithResult(_0x455226,null))['catch'](handleError(_0x455226,null));};exports['create']=function(_0x4c27b5,_0x4ef582){return db[_0xe635('0x24')][_0xe635('0x37')](_0x4c27b5['body'],{})['then'](respondWithResult(_0x4ef582,0xc9))[_0xe635('0x2a')](handleError(_0x4ef582,null));};exports[_0xe635('0x1d')]=function(_0x17b618,_0x4c9966){if(_0x17b618['body']['id']){delete _0x17b618['body']['id'];}return db['SmsInteraction'][_0xe635('0x36')]({'where':{'id':_0x17b618['params']['id']}})[_0xe635('0x1f')](handleEntityNotFound(_0x4c9966,null))[_0xe635('0x1f')](saveUpdates(_0x17b618[_0xe635('0x38')],null))['then'](respondWithResult(_0x4c9966,null))[_0xe635('0x2a')](handleError(_0x4c9966,null));};exports[_0xe635('0x1e')]=function(_0x389922,_0x32005c){return db[_0xe635('0x24')]['find']({'where':{'id':_0x389922['params']['id']}})['then'](handleEntityNotFound(_0x32005c,null))['then'](removeEntity(_0x32005c,null))['catch'](handleError(_0x32005c,null));};exports['describe']=function(_0x50a29b,_0x17bd3b){return db['SmsInteraction'][_0xe635('0x39')]()['then'](respondWithResult(_0x17bd3b,null))[_0xe635('0x2a')](handleError(_0x17bd3b,null));};exports[_0xe635('0x3a')]=function(_0x390b48,_0x16afac){return db[_0xe635('0x3b')][_0xe635('0x36')]({'where':{'id':_0x390b48[_0xe635('0x2b')]['id']}})[_0xe635('0x1f')](handleEntityNotFound(_0x16afac,null))['then'](function(_0x33d987){if(_0x33d987){return _0x33d987['addMessage'](_0x390b48[_0xe635('0x38')][_0xe635('0x3c')],_[_0xe635('0x3d')](_0x390b48[_0xe635('0x38')],['ids','id'])||{});}})[_0xe635('0x1f')](respondWithResult(_0x16afac,null))[_0xe635('0x2a')](handleError(_0x16afac,null));};exports[_0xe635('0x3e')]=function(_0xd4549b,_0x1650a8){var _0x438196={'raw':![],'where':{}};var _0x5ccb9b={};var _0xb9af7d={'count':0x0,'rows':[]};return db[_0xe635('0x24')]['findOne']({'where':{'id':_0xd4549b[_0xe635('0x2b')]['id']}})[_0xe635('0x1f')](handleEntityNotFound(_0x1650a8,null))[_0xe635('0x1f')](function(_0x436c57){if(_0x436c57){_0x5ccb9b[_0xe635('0x2c')]=_[_0xe635('0x2d')](db[_0xe635('0x3b')]['rawAttributes']);_0x5ccb9b['query']=_[_0xe635('0x2d')](_0xd4549b['query']);_0x5ccb9b['filters']=_[_0xe635('0x2e')](_0x5ccb9b[_0xe635('0x2c')],_0x5ccb9b[_0xe635('0x29')]);_0x438196['attributes']=_[_0xe635('0x2e')](_0x5ccb9b[_0xe635('0x2c')],qs[_0xe635('0x30')](_0xd4549b['query'][_0xe635('0x30')]));_0x438196[_0xe635('0x2f')]=_0x438196[_0xe635('0x2f')][_0xe635('0x31')]?_0x438196['attributes']:_0x5ccb9b[_0xe635('0x2c')];if(!_0xd4549b[_0xe635('0x29')][_0xe635('0x3f')]('nolimit')){_0x438196['limit']=qs[_0xe635('0x1a')](_0xd4549b[_0xe635('0x29')][_0xe635('0x1a')]);_0x438196['offset']=qs['offset'](_0xd4549b[_0xe635('0x29')][_0xe635('0x17')]);}_0x438196[_0xe635('0x40')]=qs[_0xe635('0x41')](_0xd4549b['query']['sort']);_0x438196[_0xe635('0x42')]=qs[_0xe635('0x43')](_[_0xe635('0x44')](_0xd4549b[_0xe635('0x29')],_0x5ccb9b[_0xe635('0x43')]));_0x438196[_0xe635('0x42')][_0xe635('0x45')]=_0x436c57['id'];if(_0xd4549b[_0xe635('0x29')][_0xe635('0x46')]){_0x438196['where']=_['merge'](_0x438196[_0xe635('0x42')],{'$or':_['map'](_0x438196['attributes'],function(_0x38e3fc){var _0x4b4f0a={};_0x4b4f0a[_0x38e3fc]={'$like':'%'+_0xd4549b[_0xe635('0x29')][_0xe635('0x46')]+'%'};return _0x4b4f0a;})});}if(_0xd4549b[_0xe635('0x29')][_0xe635('0x47')]){var _0x39794e=_0xd4549b[_0xe635('0x29')]['$gte']['split'](',');var _0x37b2ad={};_0x37b2ad[_0x39794e[0x0]]={'$gte':moment(_0x39794e[0x1])[_0xe635('0x48')](_0xe635('0x49'))};_0x438196[_0xe635('0x42')]=_[_0xe635('0x34')](_0x438196[_0xe635('0x42')],_0x37b2ad);}_0x438196=_['merge']({},_0x438196,_0xd4549b[_0xe635('0x35')]);return db['SmsMessage'][_0xe635('0x19')]({'where':_0x438196['where']})[_0xe635('0x1f')](function(_0x50162b){_0xb9af7d[_0xe635('0x19')]=_0x50162b;if(_0xd4549b[_0xe635('0x29')]['includeAll']){_0x438196[_0xe635('0x33')]=[{'all':!![]}];}return db[_0xe635('0x3b')][_0xe635('0x4a')](_0x438196);})[_0xe635('0x1f')](function(_0x5786aa){_0xb9af7d[_0xe635('0x4b')]=_0x5786aa;return _0xb9af7d;});}})['then'](respondWithFilteredResult(_0x1650a8,_0x438196))[_0xe635('0x2a')](handleError(_0x1650a8,null));};exports['addTags']=function(_0x47e368,_0x257175){return db[_0xe635('0x24')]['find']({'where':{'id':_0x47e368[_0xe635('0x2b')]['id']}})[_0xe635('0x1f')](handleEntityNotFound(_0x257175,null))['then'](function(_0x1e01e9){if(_0x1e01e9){return _0x1e01e9[_0xe635('0x4c')](_0x47e368[_0xe635('0x38')][_0xe635('0x3c')],_[_0xe635('0x3d')](_0x47e368['body'],[_0xe635('0x3c'),'id'])||{})[_0xe635('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id',_0xe635('0x21'),'color'],'where':{'id':_0x47e368[_0xe635('0x38')][_0xe635('0x3c')]}});})['then'](function(_0x45f2d9){socket[_0xe635('0x4e')](_0xe635('0x4f'),{'id':Number(_0x47e368[_0xe635('0x2b')]['id']),'tags':_0x45f2d9||[]});return{'id':Number(_0x47e368[_0xe635('0x2b')]['id']),'tags':_0x45f2d9||[]};});}})['then'](respondWithResult(_0x257175,null))[_0xe635('0x2a')](handleError(_0x257175,null));};exports[_0xe635('0x50')]=function(_0x3fe6aa,_0x2f8705){return db['SmsInteraction'][_0xe635('0x36')]({'where':{'id':_0x3fe6aa['params']['id']}})['then'](handleEntityNotFound(_0x2f8705,null))[_0xe635('0x1f')](function(_0x45ecef){if(_0x45ecef){return _0x45ecef[_0xe635('0x50')](_0x3fe6aa[_0xe635('0x29')]['ids']);}})[_0xe635('0x1f')](respondWithStatusCode(_0x2f8705,null))[_0xe635('0x2a')](handleError(_0x2f8705,null));};exports['download']=function(_0x3e79da,_0x17a4d3){var _0x1c0389=moment()[_0xe635('0x51')]()[_0xe635('0x52')]();var _0x5c4290=path[_0xe635('0x53')](config['root'],_0xe635('0x54'),_0xe635('0x55'),_0xe635('0x56'));var _0x52dd78=path['join'](_0x5c4290,_0x1c0389);var _0x472d73=util['format']('transcript-%d-%s.zip',_0x3e79da[_0xe635('0x2b')]['id'],_0x1c0389);var _0x1ec8d9=path[_0xe635('0x53')](_0x5c4290,_0x472d73);var _0x206154=[];_0x206154[_0xe635('0x57')]({'model':db[_0xe635('0x58')],'as':_0xe635('0x58'),'attributes':['id',_0xe635('0x59')],'raw':!![]});_0x206154[_0xe635('0x57')]({'model':db[_0xe635('0x5a')],'as':_0xe635('0x5b'),'attributes':['id',_0xe635('0x5c'),'lastName'],'raw':!![]});var _0xc32548=[{'model':db['SmsMessage'],'as':_0xe635('0x5d'),'attributes':['id',_0xe635('0x38'),_0xe635('0x5e'),_0xe635('0x5f'),'secret','read'],'include':_0x206154}];_0xc32548['push']({'model':db['SmsAccount'],'as':_0xe635('0x60'),'attributes':['id',_0xe635('0x21')]});_0xc32548[_0xe635('0x57')]({'model':db[_0xe635('0x58')],'as':_0xe635('0x61'),'attributes':['id','fullname']});return db[_0xe635('0x24')][_0xe635('0x36')]({'where':{'id':_0x3e79da[_0xe635('0x2b')]['id']},'include':_0xc32548})['then'](handleEntityNotFound(_0x17a4d3,null))[_0xe635('0x1f')](function(_0x2f8369){if(_0x2f8369){var _0x529aca=_0x2f8369[_0xe635('0x62')]({'plain':!![]});fs['mkdirSync'](_0x52dd78);var _0x2c401e={'channel':_0xe635('0x63'),'account':_0x529aca['Account'][_0xe635('0x21')],'agent':_0x529aca[_0xe635('0x61')]?_0x529aca['Owner'][_0xe635('0x59')]:_0xe635('0x64'),'createdAt':moment(_0x529aca[_0xe635('0x5e')])['format'](_0xe635('0x49'))[_0xe635('0x52')](),'closedAt':_0x529aca[_0xe635('0x65')]?moment(_0x529aca['closedAt'])['format'](_0xe635('0x49'))[_0xe635('0x52')]():'','disposition':_0x529aca[_0xe635('0x66')],'messages':_(_0x529aca[_0xe635('0x5d')])[_0xe635('0x46')]({'secret':![]})[_0xe635('0x67')](function(_0x134b47){return{'date':moment(_0x134b47[_0xe635('0x5e')])['format'](_0xe635('0x49'))['toString'](),'sender':_0x134b47[_0xe635('0x5f')]===_0xe635('0x68')?_0x134b47[_0xe635('0x58')]?_0x134b47[_0xe635('0x58')][_0xe635('0x59')]:'System':_0x134b47[_0xe635('0x5b')][_0xe635('0x5c')]+(_0x134b47[_0xe635('0x5b')][_0xe635('0x69')]?'\x20'+_0x134b47['Contact'][_0xe635('0x69')]:''),'body':_0x134b47[_0xe635('0x38')],'direction':_0x134b47[_0xe635('0x5f')]===_0xe635('0x68')?'A':'C','secret':_0x134b47[_0xe635('0x6a')],'read':_0x134b47['read']};})[_0xe635('0x6b')]()};return ejs[_0xe635('0x6c')](path[_0xe635('0x53')](config[_0xe635('0x6d')],_0xe635('0x54'),_0xe635('0x6e'),_0xe635('0x6f')),{'interaction':_0x2c401e})[_0xe635('0x1f')](function(_0xa74af){var _0x4b621f=path[_0xe635('0x53')](_0x52dd78,_0xe635('0x70')+_0x529aca['id']+'-'+_0x1c0389+_0xe635('0x71'));var _0x2754de={'path':_0x4b621f,'channel':_0xe635('0x63'),'interactionId':_0x529aca['id']};return pdf[_0xe635('0x72')](_0xa74af,_0x2754de);})['then'](function(){return new BPromise(function(_0x24c91a,_0x1c12da){zipdir(_0x52dd78,{'saveTo':_0x1ec8d9},function(_0x3feb29,_0x35a6a2){if(_0x3feb29)return _0x1c12da(_0x3feb29);return _0x24c91a(_0x35a6a2);});})[_0xe635('0x1f')](function(){return new BPromise(function(_0x592134,_0x30b257){rimraf(_0x52dd78,function(_0x288179){if(_0x288179)_0x30b257(_0x288179);return _0x592134();});});})[_0xe635('0x1f')](function(){return _0x17a4d3['download'](_0x1ec8d9,_0x472d73,function(_0x3c8f3e){if(_0x3c8f3e){console[_0xe635('0x73')]('err',_0x3c8f3e);}else{fs[_0xe635('0x74')](_0x1ec8d9);}});});});}else{return _0x17a4d3[_0xe635('0x14')](0xc8);}})['catch'](handleError(_0x17a4d3,null));};
\ No newline at end of file
index e7b911a..af9cb51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a95=['save','getUsers','then','map','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners'];(function(_0x334672,_0x42f550){var _0x7cb6dc=function(_0x212934){while(--_0x212934){_0x334672['push'](_0x334672['shift']());}};_0x7cb6dc(++_0x42f550);}(_0x6a95,0x1db));var _0x56a9=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6a95[_0x3bf83f];return _0x22c4a9;};'use strict';var EventEmitter=require(_0x56a9('0x0'));var SmsInteraction=require(_0x56a9('0x1'))['db'][_0x56a9('0x2')];var SmsMessage=require(_0x56a9('0x1'))['db'][_0x56a9('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x56a9('0x4')](0x0);var events={'afterCreate':_0x56a9('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x12cd60){return function(_0x83f534,_0x1b42ac,_0x2eb132){_0x83f534[_0x56a9('0x6')]({'attributes':['id'],'raw':!![]})[_0x56a9('0x7')](function(_0xd8aa7c){_0x83f534['setDataValue']('Users',_0xd8aa7c[_0x56a9('0x8')](function(_0x15f2ff){return{'id':_0x15f2ff['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x83f534['id'],'direction':'in','read':![]},'raw':!![]});})[_0x56a9('0x7')](function(_0x1eddfd){_0x83f534[_0x56a9('0x9')](_0x56a9('0xa'),_0x1eddfd[_0x56a9('0xb')]);SmsInteractionEvents[_0x56a9('0xc')](_0x12cd60+':'+_0x83f534['id'],_0x83f534);SmsInteractionEvents[_0x56a9('0xc')](_0x12cd60,_0x83f534);_0x2eb132(null);})[_0x56a9('0xd')](_0x2eb132(null));};}for(var e in events){if(events[_0x56a9('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x56a9('0xf')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x1eba=['remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','SmsMessage','update'];(function(_0x1b599d,_0x1d1dd3){var _0x4fb36d=function(_0x9f144d){while(--_0x9f144d){_0x1b599d['push'](_0x1b599d['shift']());}};_0x4fb36d(++_0x1d1dd3);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x456bd2,_0x156c79){_0x456bd2=_0x456bd2-0x0;var _0x2218c1=_0x1eba[_0x456bd2];return _0x2218c1;};'use strict';var EventEmitter=require(_0xa1eb('0x0'));var SmsInteraction=require(_0xa1eb('0x1'))['db'][_0xa1eb('0x2')];var SmsMessage=require(_0xa1eb('0x1'))['db'][_0xa1eb('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa1eb('0x4'),'afterDestroy':_0xa1eb('0x5')};function emitEvent(_0x16a13a){return function(_0xf9d704,_0x138789,_0x2933d0){_0xf9d704[_0xa1eb('0x6')]({'attributes':['id'],'raw':!![]})[_0xa1eb('0x7')](function(_0x39a5a3){_0xf9d704[_0xa1eb('0x8')](_0xa1eb('0x9'),_0x39a5a3[_0xa1eb('0xa')](function(_0x54d235){return{'id':_0x54d235['id']};}));return SmsMessage[_0xa1eb('0xb')]({'where':{'SmsInteractionId':_0xf9d704['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x219802){_0xf9d704['setDataValue'](_0xa1eb('0xc'),_0x219802['length']);SmsInteractionEvents[_0xa1eb('0xd')](_0x16a13a+':'+_0xf9d704['id'],_0xf9d704);SmsInteractionEvents['emit'](_0x16a13a,_0xf9d704);_0x2933d0(null);})[_0xa1eb('0xe')](_0x2933d0(null));};}for(var e in events){if(events[_0xa1eb('0xf')](e)){var event=events[e];SmsInteraction[_0xa1eb('0x10')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index 0417f88..75b5764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de6=['../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','util','../../config/logger','api','moment'];(function(_0x269de4,_0x1b407e){var _0x308fa1=function(_0x243c5f){while(--_0x243c5f){_0x269de4['push'](_0x269de4['shift']());}};_0x308fa1(++_0x1b407e);}(_0x3de6,0x7e));var _0x63de=function(_0x345668,_0x3b4f5c){_0x345668=_0x345668-0x0;var _0x5d22f4=_0x3de6[_0x345668];return _0x5d22f4;};'use strict';var _=require('lodash');var util=require(_0x63de('0x0'));var logger=require(_0x63de('0x1'))(_0x63de('0x2'));var moment=require(_0x63de('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x63de('0x4'));var attributes=require(_0x63de('0x5'));module[_0x63de('0x6')]=function(_0x201d8a,_0x1b89f5){return _0x201d8a[_0x63de('0x7')](_0x63de('0x8'),attributes,{'tableName':_0x63de('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x393301,_0x570006,_0xb4418e){if(_0x393301[_0x63de('0xa')](_0x63de('0xb'))){_0x393301[_0x63de('0xc')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0xb4418e(null,_0x393301);}}});};
\ No newline at end of file
+var _0x3924=['./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','path','../../config/environment'];(function(_0x55ff41,_0x247c9c){var _0x4db6d1=function(_0x2d2d5b){while(--_0x2d2d5b){_0x55ff41['push'](_0x55ff41['shift']());}};_0x4db6d1(++_0x247c9c);}(_0x3924,0x70));var _0x4392=function(_0x2139bb,_0x213a1b){_0x2139bb=_0x2139bb-0x0;var _0x53ccc9=_0x3924[_0x2139bb];return _0x53ccc9;};'use strict';var _=require(_0x4392('0x0'));var util=require(_0x4392('0x1'));var logger=require('../../config/logger')(_0x4392('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4392('0x3'));var rimraf=require('rimraf');var config=require(_0x4392('0x4'));var attributes=require(_0x4392('0x5'));module[_0x4392('0x6')]=function(_0x493468,_0x5cfa76){return _0x493468[_0x4392('0x7')](_0x4392('0x8'),attributes,{'tableName':_0x4392('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x47c0bf,_0x4cb8c8,_0x2836c3){if(_0x47c0bf[_0x4392('0xa')]('closed')){_0x47c0bf['closedAt']=moment()[_0x4392('0xb')](_0x4392('0xc'));}_0x2836c3(null,_0x47c0bf);}}});};
\ No newline at end of file
index bd99c56..f760e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eaa=['omit','spread','AddTags','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','body','options','raw','where','attributes','AddTagsToSmsInteraction','addTags','ids'];(function(_0x3f4dd9,_0xe0b819){var _0x31c54a=function(_0x25e6c6){while(--_0x25e6c6){_0x3f4dd9['push'](_0x3f4dd9['shift']());}};_0x31c54a(++_0xe0b819);}(_0x9eaa,0x1c6));var _0xa9ea=function(_0x59e134,_0x3e2ad4){_0x59e134=_0x59e134-0x0;var _0x551c8e=_0x9eaa[_0x59e134];return _0x551c8e;};'use strict';var _=require(_0xa9ea('0x0'));var util=require(_0xa9ea('0x1'));var moment=require('moment');var BPromise=require(_0xa9ea('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa9ea('0x3'))['db'];var utils=require(_0xa9ea('0x4'));var logger=require(_0xa9ea('0x5'))(_0xa9ea('0x6'));var config=require(_0xa9ea('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa9ea('0x8')][_0xa9ea('0x9')]({'port':0x232a});config[_0xa9ea('0xa')]=_[_0xa9ea('0xb')](config[_0xa9ea('0xa')],{'host':_0xa9ea('0xc'),'port':0x18eb});var socket=require(_0xa9ea('0xd'))(new Redis(config['redis']));require(_0xa9ea('0xe'))[_0xa9ea('0xf')](socket);function respondWithRpcPromise(_0x30b8db,_0x2c224b,_0x188675){return new BPromise(function(_0x99009a,_0x530bc9){return client[_0xa9ea('0x10')](_0x30b8db,_0x188675)[_0xa9ea('0x11')](function(_0x4d75ef){logger[_0xa9ea('0x12')](_0xa9ea('0x13'),_0x2c224b,_0xa9ea('0x14'));logger[_0xa9ea('0x15')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x2c224b,_0xa9ea('0x14'),JSON[_0xa9ea('0x16')](_0x4d75ef));if(_0x4d75ef[_0xa9ea('0x17')]){if(_0x4d75ef[_0xa9ea('0x17')][_0xa9ea('0x18')]===0x1f4){logger[_0xa9ea('0x17')](_0xa9ea('0x13'),_0x2c224b,_0x4d75ef[_0xa9ea('0x17')][_0xa9ea('0x19')]);return _0x530bc9(_0x4d75ef[_0xa9ea('0x17')][_0xa9ea('0x19')]);}logger['error'](_0xa9ea('0x13'),_0x2c224b,_0x4d75ef['error'][_0xa9ea('0x19')]);return _0x99009a(_0x4d75ef[_0xa9ea('0x17')][_0xa9ea('0x19')]);}else{logger[_0xa9ea('0x12')](_0xa9ea('0x13'),_0x2c224b,_0xa9ea('0x14'));_0x99009a(_0x4d75ef[_0xa9ea('0x1a')][_0xa9ea('0x19')]);}})[_0xa9ea('0x1b')](function(_0x8ea69f){logger[_0xa9ea('0x17')](_0xa9ea('0x13'),_0x2c224b,_0x8ea69f);_0x530bc9(_0x8ea69f);});});}exports[_0xa9ea('0x1c')]=function(_0x231e22){var _0x2c4fd8=this;return new Promise(function(_0x4d23e2,_0x3ea887){return db[_0xa9ea('0x1d')]['update'](_0x231e22[_0xa9ea('0x1e')],{'raw':_0x231e22[_0xa9ea('0x1f')]?_0x231e22[_0xa9ea('0x1f')][_0xa9ea('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x231e22[_0xa9ea('0x1f')]?_0x231e22[_0xa9ea('0x1f')][_0xa9ea('0x21')]||null:null,'attributes':_0x231e22[_0xa9ea('0x1f')]?_0x231e22[_0xa9ea('0x1f')][_0xa9ea('0x22')]||null:null,'limit':_0x231e22[_0xa9ea('0x1f')]?_0x231e22[_0xa9ea('0x1f')]['limit']||null:null})[_0xa9ea('0x11')](function(_0x2b56ec){logger[_0xa9ea('0x12')](_0xa9ea('0x1c'),_0x231e22);logger[_0xa9ea('0x15')]('UpdateSmsInteraction',_0x231e22,JSON[_0xa9ea('0x16')](_0x2b56ec));_0x4d23e2(_0x2b56ec);})[_0xa9ea('0x1b')](function(_0x42209){logger['error'](_0xa9ea('0x1c'),_0x42209['message'],_0x231e22);_0x3ea887(_0x2c4fd8[_0xa9ea('0x17')](0x1f4,_0x42209['message']));});});};exports[_0xa9ea('0x23')]=function(_0x5f1553){return new Promise(function(_0x14d8de,_0x3008d1){return db[_0xa9ea('0x1d')]['find']({'where':_0x5f1553[_0xa9ea('0x1f')]?_0x5f1553[_0xa9ea('0x1f')][_0xa9ea('0x21')]||null:null})[_0xa9ea('0x11')](function(_0x7aa873){if(_0x7aa873){return _0x7aa873[_0xa9ea('0x24')](_0x5f1553[_0xa9ea('0x1e')][_0xa9ea('0x25')],_[_0xa9ea('0x26')](_0x5f1553[_0xa9ea('0x1e')],[_0xa9ea('0x25'),'id'])||{});}})[_0xa9ea('0x27')](function(_0x4e71cd){logger['info'](_0xa9ea('0x28'),_0x5f1553);logger[_0xa9ea('0x15')](_0xa9ea('0x28'),_0x5f1553,JSON[_0xa9ea('0x16')](_0x4e71cd));_0x14d8de(_0x4e71cd);})[_0xa9ea('0x1b')](function(_0x3d00b0){logger[_0xa9ea('0x17')](_0xa9ea('0x28'),_0x3d00b0[_0xa9ea('0x19')],_0x5f1553);_0x3008d1(_this[_0xa9ea('0x17')](0x1f4,_0x3d00b0['message']));});});};
\ No newline at end of file
+var _0xe79e=['SmsInteraction','update','body','options','raw','where','attributes','limit','debug','find','addTags','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateSmsInteraction'];(function(_0x5736e8,_0x2f933f){var _0xd092d4=function(_0x19228f){while(--_0x19228f){_0x5736e8['push'](_0x5736e8['shift']());}};_0xd092d4(++_0x2f933f);}(_0xe79e,0x1f3));var _0xee79=function(_0x414f68,_0x102633){_0x414f68=_0x414f68-0x0;var _0x53b6e1=_0xe79e[_0x414f68];return _0x53b6e1;};'use strict';var _=require('lodash');var util=require(_0xee79('0x0'));var moment=require(_0xee79('0x1'));var BPromise=require(_0xee79('0x2'));var rs=require(_0xee79('0x3'));var fs=require('fs');var Redis=require(_0xee79('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xee79('0x5'));var logger=require(_0xee79('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xee79('0x7'));var client=jayson[_0xee79('0x8')][_0xee79('0x9')]({'port':0x232a});config[_0xee79('0xa')]=_[_0xee79('0xb')](config[_0xee79('0xa')],{'host':_0xee79('0xc'),'port':0x18eb});var socket=require(_0xee79('0xd'))(new Redis(config['redis']));require(_0xee79('0xe'))[_0xee79('0xf')](socket);function respondWithRpcPromise(_0xd69bcc,_0x3c4532,_0x40321b){return new BPromise(function(_0x1606f6,_0x1b2ed0){return client[_0xee79('0x10')](_0xd69bcc,_0x40321b)[_0xee79('0x11')](function(_0x34a382){logger[_0xee79('0x12')](_0xee79('0x13'),_0x3c4532,'request\x20sent');logger['debug'](_0xee79('0x14'),_0x3c4532,_0xee79('0x15'),JSON[_0xee79('0x16')](_0x34a382));if(_0x34a382[_0xee79('0x17')]){if(_0x34a382[_0xee79('0x17')][_0xee79('0x18')]===0x1f4){logger['error'](_0xee79('0x13'),_0x3c4532,_0x34a382['error'][_0xee79('0x19')]);return _0x1b2ed0(_0x34a382[_0xee79('0x17')]['message']);}logger[_0xee79('0x17')](_0xee79('0x13'),_0x3c4532,_0x34a382[_0xee79('0x17')]['message']);return _0x1606f6(_0x34a382[_0xee79('0x17')][_0xee79('0x19')]);}else{logger[_0xee79('0x12')](_0xee79('0x13'),_0x3c4532,'request\x20sent');_0x1606f6(_0x34a382[_0xee79('0x1a')][_0xee79('0x19')]);}})[_0xee79('0x1b')](function(_0x506efc){logger[_0xee79('0x17')]('SmsInteraction,\x20%s,\x20%s',_0x3c4532,_0x506efc);_0x1b2ed0(_0x506efc);});});}exports[_0xee79('0x1c')]=function(_0x291882){var _0x45a1dd=this;return new Promise(function(_0x22ecd2,_0x482464){return db[_0xee79('0x1d')][_0xee79('0x1e')](_0x291882[_0xee79('0x1f')],{'raw':_0x291882['options']?_0x291882[_0xee79('0x20')][_0xee79('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x291882[_0xee79('0x20')]?_0x291882[_0xee79('0x20')][_0xee79('0x22')]||null:null,'attributes':_0x291882[_0xee79('0x20')]?_0x291882[_0xee79('0x20')][_0xee79('0x23')]||null:null,'limit':_0x291882['options']?_0x291882['options'][_0xee79('0x24')]||null:null})[_0xee79('0x11')](function(_0x1891ae){logger[_0xee79('0x12')]('UpdateSmsInteraction',_0x291882);logger[_0xee79('0x25')](_0xee79('0x1c'),_0x291882,JSON[_0xee79('0x16')](_0x1891ae));_0x22ecd2(_0x1891ae);})['catch'](function(_0x3f564c){logger[_0xee79('0x17')](_0xee79('0x1c'),_0x3f564c['message'],_0x291882);_0x482464(_0x45a1dd[_0xee79('0x17')](0x1f4,_0x3f564c[_0xee79('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x41f40a){return new Promise(function(_0x26bafa,_0x359876){return db[_0xee79('0x1d')][_0xee79('0x26')]({'where':_0x41f40a[_0xee79('0x20')]?_0x41f40a[_0xee79('0x20')]['where']||null:null})[_0xee79('0x11')](function(_0x126062){if(_0x126062){return _0x126062[_0xee79('0x27')](_0x41f40a[_0xee79('0x1f')][_0xee79('0x28')],_[_0xee79('0x29')](_0x41f40a[_0xee79('0x1f')],[_0xee79('0x28'),'id'])||{});}})[_0xee79('0x2a')](function(_0x1ded8c){logger[_0xee79('0x12')](_0xee79('0x2b'),_0x41f40a);logger[_0xee79('0x25')]('AddTags',_0x41f40a,JSON[_0xee79('0x16')](_0x1ded8c));_0x26bafa(_0x1ded8c);})['catch'](function(_0x3c4522){logger[_0xee79('0x17')](_0xee79('0x2b'),_0x3c4522[_0xee79('0x19')],_0x41f40a);_0x359876(_this[_0xee79('0x17')](0x1f4,_0x3c4522['message']));});});};
\ No newline at end of file
index b21076b..40f8560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd255=['smsInteraction:','save','remove','update','emit','removeListener'];(function(_0x5cf3c0,_0x4363c1){var _0x39a680=function(_0x2a10f1){while(--_0x2a10f1){_0x5cf3c0['push'](_0x5cf3c0['shift']());}};_0x39a680(++_0x4363c1);}(_0xd255,0x7f));var _0x5d25=function(_0x323881,_0x273207){_0x323881=_0x323881-0x0;var _0x5c99f6=_0xd255[_0x323881];return _0x5c99f6;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x5d25('0x0'),_0x5d25('0x1'),_0x5d25('0x2')];function createListener(_0x2f67a1,_0x252c68){return function(_0x3d7e57){_0x252c68[_0x5d25('0x3')](_0x2f67a1,_0x3d7e57);};}function removeListener(_0x2354f9,_0x5b4099){return function(){SmsInteractionEvents[_0x5d25('0x4')](_0x2354f9,_0x5b4099);};}exports['register']=function(_0x636b7e){for(var _0x2570a7=0x0,_0x42a845=events['length'];_0x2570a7<_0x42a845;_0x2570a7++){var _0x351ec3=events[_0x2570a7];var _0x5e6c14=createListener(_0x5d25('0x5')+_0x351ec3,_0x636b7e);SmsInteractionEvents['on'](_0x351ec3,_0x5e6c14);}};
\ No newline at end of file
+var _0x5a95=['emit','removeListener','length','smsInteraction:','./smsInteraction.events','remove','update'];(function(_0x4c4ca0,_0x462d2d){var _0x4b7af=function(_0x5ea567){while(--_0x5ea567){_0x4c4ca0['push'](_0x4c4ca0['shift']());}};_0x4b7af(++_0x462d2d);}(_0x5a95,0x82));var _0x55a9=function(_0x4a3186,_0x1f39b6){_0x4a3186=_0x4a3186-0x0;var _0x35d419=_0x5a95[_0x4a3186];return _0x35d419;};'use strict';var SmsInteractionEvents=require(_0x55a9('0x0'));var events=['save',_0x55a9('0x1'),_0x55a9('0x2')];function createListener(_0x57ca74,_0x574412){return function(_0x3d1e4a){_0x574412[_0x55a9('0x3')](_0x57ca74,_0x3d1e4a);};}function removeListener(_0x33a6e5,_0x36b4dd){return function(){SmsInteractionEvents[_0x55a9('0x4')](_0x33a6e5,_0x36b4dd);};}exports['register']=function(_0xa4adc){for(var _0x28bd4f=0x0,_0xfccab1=events[_0x55a9('0x5')];_0x28bd4f<_0xfccab1;_0x28bd4f++){var _0x1e030e=events[_0x28bd4f];var _0x51575d=createListener(_0x55a9('0x6')+_0x1e030e,_0xa4adc);SmsInteractionEvents['on'](_0x1e030e,_0x51575d);}};
\ No newline at end of file
index 5c70f24..ff195f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x139a=['../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','/describe','/:id','show','post','tracked','smsmessage:create','put','accept','/:id/reject','reject','delete','destroy','multer','util','path','fs-extra'];(function(_0x1ba8c6,_0x26321e){var _0x285d92=function(_0xb0425f){while(--_0xb0425f){_0x1ba8c6['push'](_0x1ba8c6['shift']());}};_0x285d92(++_0x26321e);}(_0x139a,0x1a0));var _0xa139=function(_0x154788,_0x50ae91){_0x154788=_0x154788-0x0;var _0x155f42=_0x139a[_0x154788];return _0x155f42;};'use strict';var multer=require(_0xa139('0x0'));var util=require(_0xa139('0x1'));var path=require(_0xa139('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa139('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa139('0x4'));var config=require(_0xa139('0x5'));var controller=require(_0xa139('0x6'));router[_0xa139('0x7')]('/',auth[_0xa139('0x8')](),controller['index']);router['get'](_0xa139('0x9'),auth[_0xa139('0x8')](),controller['describe']);router[_0xa139('0x7')](_0xa139('0xa'),auth[_0xa139('0x8')](),controller[_0xa139('0xb')]);router[_0xa139('0xc')]('/',auth[_0xa139('0x8')](),interaction[_0xa139('0xd')]('sms',_0xa139('0xe')),controller['create']);router[_0xa139('0xc')]('/:id/status',controller['status']);router[_0xa139('0xf')](_0xa139('0xa'),auth['isAuthenticated'](),controller['update']);router['put']('/:id/accept',auth[_0xa139('0x8')](),controller[_0xa139('0x10')]);router[_0xa139('0xf')](_0xa139('0x11'),auth[_0xa139('0x8')](),controller[_0xa139('0x12')]);router[_0xa139('0x13')](_0xa139('0xa'),auth[_0xa139('0x8')](),controller[_0xa139('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x63a2=['put','/:id/accept','accept','/:id/reject','reject','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','post','sms','create','/:id/status','update'];(function(_0x2aad8a,_0x7c0b28){var _0x4ad540=function(_0x5c67e2){while(--_0x5c67e2){_0x2aad8a['push'](_0x2aad8a['shift']());}};_0x4ad540(++_0x7c0b28);}(_0x63a2,0x1e1));var _0x263a=function(_0x10f1d5,_0x894d33){_0x10f1d5=_0x10f1d5-0x0;var _0x4f6a93=_0x63a2[_0x10f1d5];return _0x4f6a93;};'use strict';var multer=require(_0x263a('0x0'));var util=require(_0x263a('0x1'));var path=require('path');var timeout=require(_0x263a('0x2'));var express=require('express');var router=express[_0x263a('0x3')]();var fs_extra=require(_0x263a('0x4'));var auth=require(_0x263a('0x5'));var interaction=require(_0x263a('0x6'));var config=require(_0x263a('0x7'));var controller=require('./smsMessage.controller');router[_0x263a('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x263a('0x8')](_0x263a('0x9'),auth['isAuthenticated'](),controller[_0x263a('0xa')]);router['get'](_0x263a('0xb'),auth[_0x263a('0xc')](),controller[_0x263a('0xd')]);router[_0x263a('0xe')]('/',auth[_0x263a('0xc')](),interaction['tracked'](_0x263a('0xf'),'smsmessage:create'),controller[_0x263a('0x10')]);router['post'](_0x263a('0x11'),controller['status']);router['put']('/:id',auth[_0x263a('0xc')](),controller[_0x263a('0x12')]);router[_0x263a('0x13')](_0x263a('0x14'),auth[_0x263a('0xc')](),controller[_0x263a('0x15')]);router[_0x263a('0x13')](_0x263a('0x16'),auth['isAuthenticated'](),controller[_0x263a('0x17')]);router['delete']('/:id',auth[_0x263a('0xc')](),controller['destroy']);module[_0x263a('0x18')]=router;
\ No newline at end of file
index 45610ea..0df25aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc130=['TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize','exports'];(function(_0x53949a,_0x2ddc5b){var _0xe5c764=function(_0x3ea638){while(--_0x3ea638){_0x53949a['push'](_0x53949a['shift']());}};_0xe5c764(++_0x2ddc5b);}(_0xc130,0x7c));var _0x0c13=function(_0x487fa8,_0x129085){_0x487fa8=_0x487fa8-0x0;var _0x10bd1d=_0xc130[_0x487fa8];return _0x10bd1d;};'use strict';var Sequelize=require(_0x0c13('0x0'));module[_0x0c13('0x1')]={'body':{'type':Sequelize[_0x0c13('0x2')](_0x0c13('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x0c13('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0c13('0x5')]('in',_0x0c13('0x6')),'defaultValue':_0x0c13('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x0c13('0x7')](0xbe)},'phone':{'type':Sequelize[_0x0c13('0x7')]},'readAt':{'type':Sequelize[_0x0c13('0x8')]},'secret':{'type':Sequelize[_0x0c13('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0c13('0x7')]},'providerResponse':{'type':Sequelize[_0x0c13('0x2')]}};
\ No newline at end of file
+var _0x9b69=['STRING','BOOLEAN','sequelize','exports','TEXT','ENUM','out'];(function(_0x4dac50,_0x14e84a){var _0x2d79ec=function(_0x539cd6){while(--_0x539cd6){_0x4dac50['push'](_0x4dac50['shift']());}};_0x2d79ec(++_0x14e84a);}(_0x9b69,0xa3));var _0x99b6=function(_0xf089,_0x1de4cb){_0xf089=_0xf089-0x0;var _0x3a6b61=_0x9b69[_0xf089];return _0x3a6b61;};'use strict';var Sequelize=require(_0x99b6('0x0'));module[_0x99b6('0x1')]={'body':{'type':Sequelize[_0x99b6('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x99b6('0x3')]('in','out'),'defaultValue':_0x99b6('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x99b6('0x5')](0xbe)},'phone':{'type':Sequelize[_0x99b6('0x5')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x99b6('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x99b6('0x2')]}};
\ No newline at end of file
index d492dd6..a3eaef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5a=['desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./smsMessage.socket','register','jayson/promise','http','client','request','then','info','SmsMessage,\x20%s,\x20%s','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','stack','name','index','SmsMessage','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','describe','../../config/logger','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','contact','User','email','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','get','SmsInteraction','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','QueryTypes','SELECT','fullname','internal','rejectmessage','SmsAccount','SmsAccountId','debug','received\x20delivery\x20report\x20from','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','plivo','MessageUUID','sent','delivered','plivio','infobip','groupName','DELIVERED','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaf5a,0x116));var _0xaaf5=function(_0x456a84,_0x46bc0b){_0x456a84=_0x456a84-0x0;var _0x1117d6=_0xaf5a[_0x456a84];return _0x1117d6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaaf5('0x0'));var zipdir=require(_0xaaf5('0x1'));var jsonpatch=require(_0xaaf5('0x2'));var rp=require(_0xaaf5('0x3'));var moment=require(_0xaaf5('0x4'));var BPromise=require(_0xaaf5('0x5'));var Mustache=require(_0xaaf5('0x6'));var util=require(_0xaaf5('0x7'));var path=require('path');var sox=require(_0xaaf5('0x8'));var csv=require(_0xaaf5('0x9'));var ejs=require(_0xaaf5('0xa'));var fs=require('fs');var fs_extra=require(_0xaaf5('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaaf5('0xc'));var jsforce=require(_0xaaf5('0xd'));var deskjs=require(_0xaaf5('0xe'));var toCsv=require(_0xaaf5('0x9'));var querystring=require(_0xaaf5('0xf'));var Papa=require('papaparse');var Redis=require(_0xaaf5('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaaf5('0x11'));var hardwareService=require(_0xaaf5('0x12'));var logger=require('../../config/logger')(_0xaaf5('0x13'));var utils=require(_0xaaf5('0x14'));var config=require(_0xaaf5('0x15'));var licenseUtil=require(_0xaaf5('0x16'));var db=require('../../mysqldb')['db'];config[_0xaaf5('0x17')]=_[_0xaaf5('0x18')](config['redis'],{'host':_0xaaf5('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaaf5('0x17')]));require(_0xaaf5('0x1a'))[_0xaaf5('0x1b')](socket);var jayson=require(_0xaaf5('0x1c'));var client=jayson['client'][_0xaaf5('0x1d')]({'port':0x232c});var client9002=jayson[_0xaaf5('0x1e')][_0xaaf5('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x215007,_0x277f2b,_0x10a50b,_0x27d66f){return new BPromise(function(_0x4b1693,_0x2045df){var _0x14bc84=_0x27d66f||client;return _0x14bc84[_0xaaf5('0x1f')](_0x215007,_0x10a50b)[_0xaaf5('0x20')](function(_0x318d47){logger[_0xaaf5('0x21')](_0xaaf5('0x22'),_0x277f2b,'request\x20sent');logger['debug'](_0xaaf5('0x23'),_0x277f2b,_0xaaf5('0x24'),JSON[_0xaaf5('0x25')](_0x318d47));if(_0x318d47[_0xaaf5('0x26')]){if(_0x318d47[_0xaaf5('0x26')][_0xaaf5('0x27')]===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x277f2b,_0x318d47[_0xaaf5('0x26')][_0xaaf5('0x28')]);return _0x2045df(_0x318d47[_0xaaf5('0x26')][_0xaaf5('0x28')]);}logger[_0xaaf5('0x26')](_0xaaf5('0x22'),_0x277f2b,_0x318d47[_0xaaf5('0x26')][_0xaaf5('0x28')]);return _0x4b1693(_0x318d47[_0xaaf5('0x26')][_0xaaf5('0x28')]);}else{logger[_0xaaf5('0x21')](_0xaaf5('0x22'),_0x277f2b,_0xaaf5('0x24'));_0x4b1693(_0x318d47[_0xaaf5('0x29')]['message']);}})['catch'](function(_0x15a6e4){logger['error'](_0xaaf5('0x22'),_0x277f2b,_0x15a6e4);_0x2045df(_0x15a6e4);});});}function respondWithStatusCode(_0x4d2003,_0x501017){_0x501017=_0x501017||0xcc;return function(_0x236131){if(_0x236131){return _0x4d2003[_0xaaf5('0x2a')](_0x501017);}return _0x4d2003[_0xaaf5('0x2b')](_0x501017)[_0xaaf5('0x2c')]();};}function respondWithResult(_0x11b2a9,_0x459059){_0x459059=_0x459059||0xc8;return function(_0x490bb6){if(_0x490bb6){return _0x11b2a9[_0xaaf5('0x2b')](_0x459059)['json'](_0x490bb6);}};}function respondWithFilteredResult(_0x4beb05,_0x24cd49){return function(_0x461fd9){if(_0x461fd9){var _0x443c1b=typeof _0x24cd49[_0xaaf5('0x2d')]===_0xaaf5('0x2e')&&typeof _0x24cd49[_0xaaf5('0x2f')]==='undefined';var _0x23e7da=_0x461fd9['count'];var _0x39539f=_0x443c1b?0x0:_0x24cd49[_0xaaf5('0x2d')];var _0x535af0=_0x443c1b?_0x461fd9[_0xaaf5('0x30')]:_0x24cd49['offset']+_0x24cd49[_0xaaf5('0x2f')];var _0x380cbb;if(_0x535af0>=_0x23e7da){_0x535af0=_0x23e7da;_0x380cbb=0xc8;}else{_0x380cbb=0xce;}_0x4beb05['status'](_0x380cbb);return _0x4beb05[_0xaaf5('0x31')]('Content-Range',_0x39539f+'-'+_0x535af0+'/'+_0x23e7da)[_0xaaf5('0x32')](_0x461fd9);}return null;};}function patchUpdates(_0x326cb8){return function(_0x4b5074){try{jsonpatch[_0xaaf5('0x33')](_0x4b5074,_0x326cb8,!![]);}catch(_0x4e884a){return BPromise[_0xaaf5('0x34')](_0x4e884a);}return _0x4b5074[_0xaaf5('0x35')]();};}function saveUpdates(_0x5d8a4a,_0x2f405d){return function(_0x5df8a0){if(_0x5df8a0){return _0x5df8a0[_0xaaf5('0x36')](_0x5d8a4a)[_0xaaf5('0x20')](function(_0x3b0b02){return _0x3b0b02;});}return null;};}function removeEntity(_0x310903,_0x2a6f11){return function(_0x2e9f7a){if(_0x2e9f7a){return _0x2e9f7a[_0xaaf5('0x37')]()['then'](function(){_0x310903[_0xaaf5('0x2b')](0xcc)[_0xaaf5('0x2c')]();});}};}function handleEntityNotFound(_0x50ad8c,_0x20b370){return function(_0x3e5eac){if(!_0x3e5eac){_0x50ad8c[_0xaaf5('0x2a')](0x194);}return _0x3e5eac;};}function handleError(_0x302a5c,_0x4a12b1){_0x4a12b1=_0x4a12b1||0x1f4;return function(_0x43f472){logger[_0xaaf5('0x26')](_0x43f472[_0xaaf5('0x38')]);if(_0x43f472[_0xaaf5('0x39')]){delete _0x43f472[_0xaaf5('0x39')];}_0x302a5c[_0xaaf5('0x2b')](_0x4a12b1)['send'](_0x43f472);};}exports[_0xaaf5('0x3a')]=function(_0x28ad39,_0x530a78){var _0x13251c={},_0x20a838={},_0x2d1ef8={'count':0x0,'rows':[]};var _0x3cc83c=_['map'](db[_0xaaf5('0x3b')]['rawAttributes'],function(_0x32b7f4){return{'name':_0x32b7f4[_0xaaf5('0x3c')],'type':_0x32b7f4[_0xaaf5('0x3d')][_0xaaf5('0x3e')]};});_0x20a838[_0xaaf5('0x3f')]=_[_0xaaf5('0x40')](_0x3cc83c,_0xaaf5('0x39'));_0x20a838[_0xaaf5('0x41')]=_[_0xaaf5('0x42')](_0x28ad39[_0xaaf5('0x41')]);_0x20a838[_0xaaf5('0x43')]=_[_0xaaf5('0x44')](_0x20a838['model'],_0x20a838[_0xaaf5('0x41')]);_0x13251c[_0xaaf5('0x45')]=_[_0xaaf5('0x44')](_0x20a838[_0xaaf5('0x3f')],qs[_0xaaf5('0x46')](_0x28ad39[_0xaaf5('0x41')][_0xaaf5('0x46')]));_0x13251c['attributes']=_0x13251c[_0xaaf5('0x45')][_0xaaf5('0x47')]?_0x13251c[_0xaaf5('0x45')]:_0x20a838[_0xaaf5('0x3f')];if(!_0x28ad39[_0xaaf5('0x41')][_0xaaf5('0x48')](_0xaaf5('0x49'))){_0x13251c[_0xaaf5('0x2f')]=qs[_0xaaf5('0x2f')](_0x28ad39[_0xaaf5('0x41')][_0xaaf5('0x2f')]);_0x13251c[_0xaaf5('0x2d')]=qs['offset'](_0x28ad39[_0xaaf5('0x41')][_0xaaf5('0x2d')]);}_0x13251c[_0xaaf5('0x4a')]=qs[_0xaaf5('0x4b')](_0x28ad39[_0xaaf5('0x41')][_0xaaf5('0x4b')]);_0x13251c[_0xaaf5('0x4c')]=qs[_0xaaf5('0x43')](_['pick'](_0x28ad39[_0xaaf5('0x41')],_0x20a838['filters']),_0x3cc83c);if(_0x28ad39['query'][_0xaaf5('0x4d')]){_0x13251c['where']=_[_0xaaf5('0x4e')](_0x13251c[_0xaaf5('0x4c')],{'$or':_['map'](_0x3cc83c,function(_0x235fe8){if(_0x235fe8['type']!=='VIRTUAL'){var _0x1503db={};_0x1503db[_0x235fe8[_0xaaf5('0x39')]]={'$like':'%'+_0x28ad39[_0xaaf5('0x41')]['filter']+'%'};return _0x1503db;}})});}_0x13251c=_[_0xaaf5('0x4e')]({},_0x13251c,_0x28ad39[_0xaaf5('0x4f')]);var _0x8cb195={'where':_0x13251c[_0xaaf5('0x4c')]};return db['SmsMessage'][_0xaaf5('0x30')](_0x8cb195)['then'](function(_0x47f379){_0x2d1ef8[_0xaaf5('0x30')]=_0x47f379;if(_0x28ad39['query'][_0xaaf5('0x50')]){_0x13251c[_0xaaf5('0x51')]=[{'all':!![]}];}return db[_0xaaf5('0x3b')][_0xaaf5('0x52')](_0x13251c);})[_0xaaf5('0x20')](function(_0x1fbf9a){_0x2d1ef8['rows']=_0x1fbf9a;return _0x2d1ef8;})[_0xaaf5('0x20')](respondWithFilteredResult(_0x530a78,_0x13251c))[_0xaaf5('0x53')](handleError(_0x530a78,null));};exports['show']=function(_0x35b4f4,_0x1f6e74){var _0x1e4049={'raw':!![],'where':{'id':_0x35b4f4[_0xaaf5('0x54')]['id']}},_0x22d8a7={};_0x22d8a7[_0xaaf5('0x3f')]=_[_0xaaf5('0x42')](db[_0xaaf5('0x3b')]['rawAttributes']);_0x22d8a7[_0xaaf5('0x41')]=_[_0xaaf5('0x42')](_0x35b4f4[_0xaaf5('0x41')]);_0x22d8a7[_0xaaf5('0x43')]=_[_0xaaf5('0x44')](_0x22d8a7[_0xaaf5('0x3f')],_0x22d8a7['query']);_0x1e4049[_0xaaf5('0x45')]=_[_0xaaf5('0x44')](_0x22d8a7[_0xaaf5('0x3f')],qs[_0xaaf5('0x46')](_0x35b4f4[_0xaaf5('0x41')][_0xaaf5('0x46')]));_0x1e4049[_0xaaf5('0x45')]=_0x1e4049[_0xaaf5('0x45')][_0xaaf5('0x47')]?_0x1e4049[_0xaaf5('0x45')]:_0x22d8a7['model'];if(_0x35b4f4[_0xaaf5('0x41')][_0xaaf5('0x50')]){_0x1e4049['include']=[{'all':!![]}];}_0x1e4049=_['merge']({},_0x1e4049,_0x35b4f4[_0xaaf5('0x4f')]);return db[_0xaaf5('0x3b')][_0xaaf5('0x55')](_0x1e4049)[_0xaaf5('0x20')](handleEntityNotFound(_0x1f6e74,null))['then'](respondWithResult(_0x1f6e74,null))[_0xaaf5('0x53')](handleError(_0x1f6e74,null));};exports[_0xaaf5('0x56')]=function(_0x496dc9,_0x2ce79c){return db[_0xaaf5('0x3b')][_0xaaf5('0x56')](_0x496dc9[_0xaaf5('0x57')],{})[_0xaaf5('0x20')](respondWithResult(_0x2ce79c,0xc9))[_0xaaf5('0x53')](handleError(_0x2ce79c,null));};exports[_0xaaf5('0x36')]=function(_0x1520f6,_0x458cd4){if(_0x1520f6[_0xaaf5('0x57')]['id']){delete _0x1520f6[_0xaaf5('0x57')]['id'];}return db[_0xaaf5('0x3b')][_0xaaf5('0x55')]({'where':{'id':_0x1520f6[_0xaaf5('0x54')]['id']}})[_0xaaf5('0x20')](handleEntityNotFound(_0x458cd4,null))['then'](saveUpdates(_0x1520f6['body'],null))[_0xaaf5('0x20')](respondWithResult(_0x458cd4,null))[_0xaaf5('0x53')](handleError(_0x458cd4,null));};exports[_0xaaf5('0x37')]=function(_0x4d6714,_0xf2cc08){return db['SmsMessage'][_0xaaf5('0x55')]({'where':{'id':_0x4d6714[_0xaaf5('0x54')]['id']}})[_0xaaf5('0x20')](handleEntityNotFound(_0xf2cc08,null))[_0xaaf5('0x20')](removeEntity(_0xf2cc08,null))['catch'](handleError(_0xf2cc08,null));};exports[_0xaaf5('0x58')]=function(_0x241ca8,_0xb2fbd1){return db[_0xaaf5('0x3b')][_0xaaf5('0x58')]()[_0xaaf5('0x20')](respondWithResult(_0xb2fbd1,null))['catch'](handleError(_0xb2fbd1,null));};var interaction_log=require(_0xaaf5('0x59'))(_0xaaf5('0x5a'));exports[_0xaaf5('0x5b')]=function(_0x36b20d,_0x857ae,_0x3bba18){var _0x23d386={'agent':{},'channel':_0xaaf5('0x5c')};if(_0x36b20d[_0xaaf5('0x57')]['id']){delete _0x36b20d[_0xaaf5('0x57')]['id'];}_0x36b20d[_0xaaf5('0x57')][_0xaaf5('0x5d')]=!![];_0x36b20d[_0xaaf5('0x57')]['readAt']=moment()[_0xaaf5('0x5e')](_0xaaf5('0x5f'));_0x36b20d[_0xaaf5('0x57')][_0xaaf5('0x60')]=_0x36b20d[_0xaaf5('0x57')][_0xaaf5('0x60')]||_0x36b20d[_0xaaf5('0x61')]['id'];_0x23d386[_0xaaf5('0x62')]['id']=_0x36b20d[_0xaaf5('0x57')]['UserId'];return db[_0xaaf5('0x3b')]['find']({'where':{'id':_0x36b20d['params']['id'],'UserId':null}})[_0xaaf5('0x20')](handleEntityNotFound(_0x857ae,null))[_0xaaf5('0x20')](saveUpdates(_0x36b20d[_0xaaf5('0x57')],null))['then'](function(_0x4ad947){if(_0x4ad947){_0x23d386[_0xaaf5('0x28')]=_0x4ad947['get']({'plain':!![]});return db['SmsInteraction'][_0xaaf5('0x55')]({'where':{'id':_0x4ad947['SmsInteractionId']}});}return null;})[_0xaaf5('0x20')](handleEntityNotFound(_0x857ae,null))[_0xaaf5('0x20')](function(_0x48ca09){if(_0x48ca09){return _0x48ca09[_0xaaf5('0x36')]({'UserId':_0x36b20d['body'][_0xaaf5('0x60')],'read1stAt':_['isNil'](_0x48ca09[_0xaaf5('0x63')])?moment()['format'](_0xaaf5('0x5f')):undefined});}return null;})[_0xaaf5('0x20')](function(_0x254034){if(_0x254034){_0x23d386[_0xaaf5('0x64')]=_0x254034['get']({'plain':!![]});interaction_log[_0xaaf5('0x21')](_0xaaf5('0x65'),_0x36b20d[_0xaaf5('0x61')]['id'],_0x36b20d[_0xaaf5('0x61')][_0xaaf5('0x39')],_0x36b20d[_0xaaf5('0x61')][_0xaaf5('0x66')],_0x23d386[_0xaaf5('0x64')]['id'],_0x36b20d[_0xaaf5('0x57')]?JSON[_0xaaf5('0x25')](_0x36b20d[_0xaaf5('0x57')]):_0xaaf5('0x67'));return respondWithRpcPromise(_0xaaf5('0x68'),'acceptMessage',_0x23d386);}return null;})[_0xaaf5('0x20')](function(_0x47ca85){var _0x59ccbc=_0xaaf5('0x69')+_0x47ca85[_0xaaf5('0x28')]['ContactId'];return db['sequelize']['query'](_0x59ccbc,{'type':db[_0xaaf5('0x6a')]['QueryTypes']['SELECT'],'raw':!![]})[_0xaaf5('0x20')](function(_0x48dfef){return _0x48dfef;});})[_0xaaf5('0x20')](function(_0x1aaaea){if(_0x1aaaea){_0x23d386[_0xaaf5('0x28')][_0xaaf5('0x6b')]=_0x1aaaea[0x0];if(!_0x36b20d['body'][_0xaaf5('0x60')])return;return db[_0xaaf5('0x6c')][_0xaaf5('0x55')]({'where':{'id':_0x36b20d[_0xaaf5('0x57')][_0xaaf5('0x60')],'role':_0xaaf5('0x62')},'attributes':['id',_0xaaf5('0x39'),'fullname',_0xaaf5('0x6d'),'internal'],'raw':!![]});}return null;})['then'](function(_0x2b6758){if(!_0x2b6758)return null;_0x23d386[_0xaaf5('0x28')][_0xaaf5('0x62')]=_0x2b6758;return _0x23d386;})[_0xaaf5('0x20')](function(_0x14ea99){if(_0x14ea99){if(_0x36b20d['body'][_0xaaf5('0x6e')]){_0x23d386[_0xaaf5('0x28')][_0xaaf5('0x6f')]=util[_0xaaf5('0x5e')](_0xaaf5('0x70'),_0x36b20d[_0xaaf5('0x61')][_0xaaf5('0x39')]);_0x23d386[_0xaaf5('0x28')][_0xaaf5('0x71')]=_0x23d386['channel'];_0x23d386[_0xaaf5('0x28')][_0xaaf5('0x72')]=_0x23d386[_0xaaf5('0x71')];_0x23d386[_0xaaf5('0x28')][_0xaaf5('0x73')]='accept';return respondWithRpcPromise(_0xaaf5('0x74'),'EventManager',{'event':'acceptmessage','message':_0x23d386['message']},client9002)[_0xaaf5('0x20')](function(){return _0x23d386;});}return _0x23d386;}return null;})[_0xaaf5('0x20')](respondWithResult(_0x857ae,null))[_0xaaf5('0x53')](handleError(_0x857ae,null));};var interaction_log=require(_0xaaf5('0x59'))(_0xaaf5('0x5a'));exports[_0xaaf5('0x34')]=function(_0x553810,_0x4d2f95,_0x886a7b){var _0x299330={'agent':{},'channel':'sms'};if(_0x553810[_0xaaf5('0x57')]['id']){delete _0x553810[_0xaaf5('0x57')]['id'];}_0x553810[_0xaaf5('0x57')][_0xaaf5('0x60')]=_0x553810[_0xaaf5('0x57')][_0xaaf5('0x60')]||_0x553810[_0xaaf5('0x61')]['id'];_0x299330[_0xaaf5('0x62')]['id']=_0x553810['body']['UserId'];return db[_0xaaf5('0x3b')][_0xaaf5('0x55')]({'where':{'id':_0x553810[_0xaaf5('0x54')]['id'],'UserId':null}})[_0xaaf5('0x20')](handleEntityNotFound(_0x4d2f95,null))['then'](function(_0x5bc74a){if(_0x5bc74a){_0x299330[_0xaaf5('0x28')]=_0x5bc74a[_0xaaf5('0x75')]({'plain':!![]});return db[_0xaaf5('0x76')]['find']({'where':{'id':_0x5bc74a[_0xaaf5('0x77')]}});}return null;})[_0xaaf5('0x20')](handleEntityNotFound(_0x4d2f95,null))['then'](function(_0x34a89a){if(_0x34a89a){_0x299330[_0xaaf5('0x64')]=_0x34a89a[_0xaaf5('0x75')]({'plain':!![]});interaction_log['info'](_0xaaf5('0x78'),_0x553810[_0xaaf5('0x61')]['id'],_0x553810[_0xaaf5('0x61')][_0xaaf5('0x39')],_0x553810[_0xaaf5('0x61')]['role'],_0x299330['interaction']['id'],_0x553810[_0xaaf5('0x57')]?JSON[_0xaaf5('0x25')](_0x553810[_0xaaf5('0x57')]):_0xaaf5('0x67'));return respondWithRpcPromise(_0xaaf5('0x79'),_0xaaf5('0x7a'),_0x299330);}return null;})[_0xaaf5('0x20')](function(_0x1253ca){var _0x282e63=_0xaaf5('0x69')+_0x1253ca['message'][_0xaaf5('0x7b')];return db['sequelize'][_0xaaf5('0x41')](_0x282e63,{'type':db[_0xaaf5('0x6a')][_0xaaf5('0x7c')][_0xaaf5('0x7d')],'raw':!![]})[_0xaaf5('0x20')](function(_0x11abf3){return _0x11abf3;});})['then'](function(_0x1c4bde){if(_0x1c4bde){_0x299330[_0xaaf5('0x28')][_0xaaf5('0x6b')]=_0x1c4bde[0x0];if(!_0x553810['body'][_0xaaf5('0x60')])return;return db[_0xaaf5('0x6c')][_0xaaf5('0x55')]({'where':{'id':_0x553810['body']['UserId'],'role':_0xaaf5('0x62')},'attributes':['id',_0xaaf5('0x39'),_0xaaf5('0x7e'),_0xaaf5('0x6d'),_0xaaf5('0x7f')],'raw':!![]});}return null;})[_0xaaf5('0x20')](function(_0x4027ec){if(!_0x4027ec)return null;_0x299330[_0xaaf5('0x28')][_0xaaf5('0x62')]=_0x4027ec;return _0x299330;})[_0xaaf5('0x20')](function(_0x3a76cd){if(_0x3a76cd){_0x3a76cd[_0xaaf5('0x28')][_0xaaf5('0x6f')]=util[_0xaaf5('0x5e')](_0xaaf5('0x70'),_0x553810[_0xaaf5('0x61')]['name']);_0x3a76cd[_0xaaf5('0x28')][_0xaaf5('0x71')]=_0x299330[_0xaaf5('0x71')];_0x3a76cd[_0xaaf5('0x28')][_0xaaf5('0x72')]=_0x299330[_0xaaf5('0x71')];_0x3a76cd[_0xaaf5('0x28')]['event']='reject';respondWithRpcPromise('EventManager','EventManager',{'event':_0xaaf5('0x80'),'message':_0x3a76cd[_0xaaf5('0x28')]},client9002);return _0x299330;}return null;})['then'](respondWithResult(_0x4d2f95,null))[_0xaaf5('0x53')](handleError(_0x4d2f95,null));};exports[_0xaaf5('0x2b')]=function(_0x1a00e3,_0x1d995a,_0x3a00cf){if(_0x1a00e3[_0xaaf5('0x57')]['id']){delete _0x1a00e3[_0xaaf5('0x57')]['id'];}var _0x397a0f;return db[_0xaaf5('0x3b')][_0xaaf5('0x55')]({'where':{'id':_0x1a00e3[_0xaaf5('0x54')]['id']}})[_0xaaf5('0x20')](handleEntityNotFound(_0x1d995a,null))[_0xaaf5('0x20')](function(_0x169802){if(_0x169802){_0x397a0f=_0x169802;return db[_0xaaf5('0x81')][_0xaaf5('0x55')]({'where':{'id':_0x169802[_0xaaf5('0x82')]}});}})[_0xaaf5('0x20')](handleEntityNotFound(_0x1d995a,null))[_0xaaf5('0x20')](function(_0x579442){if(_0x579442){logger[_0xaaf5('0x83')](_0xaaf5('0x23'),_0xaaf5('0x2b'),_0xaaf5('0x84'),_0x579442[_0xaaf5('0x3d')],util['inspect'](_0x1a00e3[_0xaaf5('0x57')],{'showHidden':![],'depth':null}));switch(_0x579442[_0xaaf5('0x3d')]){case'twilio':if(_0x1a00e3[_0xaaf5('0x57')]['MessageSid']&&_0x1a00e3['body'][_0xaaf5('0x85')]===_0x397a0f[_0xaaf5('0x86')]){return _0x397a0f[_0xaaf5('0x36')]({'read':!![]});}else{logger[_0xaaf5('0x26')](_0xaaf5('0x87'),_0xaaf5('0x2b'),_0xaaf5('0x88'),util[_0xaaf5('0x89')](_0x1a00e3[_0xaaf5('0x57')],{'showHidden':![],'depth':null}));}break;case _0xaaf5('0x8a'):if(_0x1a00e3['body'][_0xaaf5('0x8b')]&&_0x1a00e3[_0xaaf5('0x57')][_0xaaf5('0x8b')]===_0x397a0f[_0xaaf5('0x86')]&&_['indexOf']([_0xaaf5('0x8c'),_0xaaf5('0x8d')],_0x1a00e3['body']['Status'])>=0x0){return _0x397a0f[_0xaaf5('0x36')]({'read':!![]});}else{logger['error'](_0xaaf5('0x87'),_0xaaf5('0x2b'),_0xaaf5('0x8e'),util[_0xaaf5('0x89')](_0x1a00e3[_0xaaf5('0x57')],{'showHidden':![],'depth':null}));}break;case _0xaaf5('0x8f'):var _0x2a9d8d=_0x1a00e3[_0xaaf5('0x57')]['results'][0x0];if(_0x2a9d8d[_0xaaf5('0x2b')][_0xaaf5('0x90')]===_0xaaf5('0x91')){return _0x397a0f[_0xaaf5('0x36')]({'read':!![]});}else{logger['error'](_0xaaf5('0x87'),_0xaaf5('0x2b'),_0xaaf5('0x8f'),util[_0xaaf5('0x89')](_0x1a00e3['body'],{'showHidden':![],'depth':null}));}break;}return _0x397a0f;}})['then'](respondWithResult(_0x1d995a,null))[_0xaaf5('0x53')](handleError(_0x1d995a,null));};
\ No newline at end of file
+var _0xdf5d=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','sendStatus','status','json','offset','limit','undefined','count','apply','save','then','end','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','query','keys','model','fields','attributes','length','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','show','intersection','include','find','catch','create','body','destroy','params','sms-interactions','accept','sms','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','SmsInteraction','SmsInteractionId','update','read1stAt','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','ContactId','Sequelize','QueryTypes','SELECT','User','interface','SIP/%s','motionChannel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','contact','fullname','email','channel','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','indexOf','Status','plivio','infobip','results','groupName','DELIVERED'];(function(_0x1c6ef2,_0x8d926a){var _0x404b8c=function(_0x4fdf1e){while(--_0x4fdf1e){_0x1c6ef2['push'](_0x1c6ef2['shift']());}};_0x404b8c(++_0x8d926a);}(_0xdf5d,0x126));var _0xddf5=function(_0x2c6a76,_0x160d13){_0x2c6a76=_0x2c6a76-0x0;var _0x5344e2=_0xdf5d[_0x2c6a76];return _0x5344e2;};'use strict';var emlformat=require(_0xddf5('0x0'));var rimraf=require(_0xddf5('0x1'));var zipdir=require(_0xddf5('0x2'));var jsonpatch=require(_0xddf5('0x3'));var rp=require(_0xddf5('0x4'));var moment=require(_0xddf5('0x5'));var BPromise=require(_0xddf5('0x6'));var Mustache=require(_0xddf5('0x7'));var util=require('util');var path=require(_0xddf5('0x8'));var sox=require(_0xddf5('0x9'));var csv=require(_0xddf5('0xa'));var ejs=require(_0xddf5('0xb'));var fs=require('fs');var fs_extra=require(_0xddf5('0xc'));var _=require(_0xddf5('0xd'));var squel=require(_0xddf5('0xe'));var crypto=require(_0xddf5('0xf'));var jsforce=require(_0xddf5('0x10'));var deskjs=require(_0xddf5('0x11'));var toCsv=require(_0xddf5('0xa'));var querystring=require(_0xddf5('0x12'));var Papa=require(_0xddf5('0x13'));var Redis=require(_0xddf5('0x14'));var authService=require(_0xddf5('0x15'));var qs=require(_0xddf5('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xddf5('0x17'));var logger=require(_0xddf5('0x18'))(_0xddf5('0x19'));var utils=require(_0xddf5('0x1a'));var config=require(_0xddf5('0x1b'));var licenseUtil=require(_0xddf5('0x1c'));var db=require(_0xddf5('0x1d'))['db'];config[_0xddf5('0x1e')]=_['defaults'](config['redis'],{'host':_0xddf5('0x1f'),'port':0x18eb});var socket=require(_0xddf5('0x20'))(new Redis(config[_0xddf5('0x1e')]));require(_0xddf5('0x21'))[_0xddf5('0x22')](socket);var jayson=require(_0xddf5('0x23'));var client=jayson[_0xddf5('0x24')][_0xddf5('0x25')]({'port':0x232c});var client9002=jayson['client'][_0xddf5('0x25')]({'port':0x232a});function respondWithRpcPromise(_0x2b2dad,_0x3dd408,_0x1c0c30,_0x19a039){return new BPromise(function(_0x5ef952,_0x3a9263){var _0x53afba=_0x19a039||client;return _0x53afba[_0xddf5('0x26')](_0x2b2dad,_0x1c0c30)['then'](function(_0x4b4f9a){logger[_0xddf5('0x27')](_0xddf5('0x28'),_0x3dd408,_0xddf5('0x29'));logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3dd408,_0xddf5('0x29'),JSON[_0xddf5('0x2a')](_0x4b4f9a));if(_0x4b4f9a[_0xddf5('0x2b')]){if(_0x4b4f9a[_0xddf5('0x2b')]['code']===0x1f4){logger['error'](_0xddf5('0x28'),_0x3dd408,_0x4b4f9a[_0xddf5('0x2b')][_0xddf5('0x2c')]);return _0x3a9263(_0x4b4f9a['error'][_0xddf5('0x2c')]);}logger[_0xddf5('0x2b')](_0xddf5('0x28'),_0x3dd408,_0x4b4f9a[_0xddf5('0x2b')]['message']);return _0x5ef952(_0x4b4f9a[_0xddf5('0x2b')][_0xddf5('0x2c')]);}else{logger['info'](_0xddf5('0x28'),_0x3dd408,_0xddf5('0x29'));_0x5ef952(_0x4b4f9a[_0xddf5('0x2d')][_0xddf5('0x2c')]);}})['catch'](function(_0x497382){logger[_0xddf5('0x2b')](_0xddf5('0x28'),_0x3dd408,_0x497382);_0x3a9263(_0x497382);});});}function respondWithStatusCode(_0x1eca6a,_0x99fd62){_0x99fd62=_0x99fd62||0xcc;return function(_0x4caa12){if(_0x4caa12){return _0x1eca6a[_0xddf5('0x2e')](_0x99fd62);}return _0x1eca6a[_0xddf5('0x2f')](_0x99fd62)['end']();};}function respondWithResult(_0x4821b7,_0x984d22){_0x984d22=_0x984d22||0xc8;return function(_0x45a53f){if(_0x45a53f){return _0x4821b7[_0xddf5('0x2f')](_0x984d22)[_0xddf5('0x30')](_0x45a53f);}};}function respondWithFilteredResult(_0x3be6f4,_0x1a476d){return function(_0x5a3548){if(_0x5a3548){var _0x26f43c=typeof _0x1a476d[_0xddf5('0x31')]==='undefined'&&typeof _0x1a476d[_0xddf5('0x32')]===_0xddf5('0x33');var _0x281307=_0x5a3548['count'];var _0x4b352b=_0x26f43c?0x0:_0x1a476d['offset'];var _0xdc764b=_0x26f43c?_0x5a3548[_0xddf5('0x34')]:_0x1a476d[_0xddf5('0x31')]+_0x1a476d['limit'];var _0x3d1c7a;if(_0xdc764b>=_0x281307){_0xdc764b=_0x281307;_0x3d1c7a=0xc8;}else{_0x3d1c7a=0xce;}_0x3be6f4['status'](_0x3d1c7a);return _0x3be6f4['set']('Content-Range',_0x4b352b+'-'+_0xdc764b+'/'+_0x281307)[_0xddf5('0x30')](_0x5a3548);}return null;};}function patchUpdates(_0x2faf35){return function(_0x2a4b2e){try{jsonpatch[_0xddf5('0x35')](_0x2a4b2e,_0x2faf35,!![]);}catch(_0x11cee5){return BPromise['reject'](_0x11cee5);}return _0x2a4b2e[_0xddf5('0x36')]();};}function saveUpdates(_0x53e916,_0x1434b7){return function(_0x1e4b04){if(_0x1e4b04){return _0x1e4b04['update'](_0x53e916)[_0xddf5('0x37')](function(_0x1fd693){return _0x1fd693;});}return null;};}function removeEntity(_0x22d01f,_0x431e53){return function(_0x141dd8){if(_0x141dd8){return _0x141dd8['destroy']()[_0xddf5('0x37')](function(){_0x22d01f['status'](0xcc)[_0xddf5('0x38')]();});}};}function handleEntityNotFound(_0x45a373,_0x50240c){return function(_0x1be090){if(!_0x1be090){_0x45a373['sendStatus'](0x194);}return _0x1be090;};}function handleError(_0x40bf1f,_0x4ae041){_0x4ae041=_0x4ae041||0x1f4;return function(_0x5982d3){logger[_0xddf5('0x2b')](_0x5982d3['stack']);if(_0x5982d3[_0xddf5('0x39')]){delete _0x5982d3[_0xddf5('0x39')];}_0x40bf1f[_0xddf5('0x2f')](_0x4ae041)[_0xddf5('0x3a')](_0x5982d3);};}exports[_0xddf5('0x3b')]=function(_0x3ff650,_0x10b7a7){var _0xffdecd={},_0x2605a3={},_0x337c87={'count':0x0,'rows':[]};var _0x28c525=_[_0xddf5('0x3c')](db[_0xddf5('0x3d')][_0xddf5('0x3e')],function(_0x485b67){return{'name':_0x485b67[_0xddf5('0x3f')],'type':_0x485b67[_0xddf5('0x40')][_0xddf5('0x41')]};});_0x2605a3['model']=_[_0xddf5('0x3c')](_0x28c525,_0xddf5('0x39'));_0x2605a3[_0xddf5('0x42')]=_[_0xddf5('0x43')](_0x3ff650[_0xddf5('0x42')]);_0x2605a3['filters']=_['intersection'](_0x2605a3['model'],_0x2605a3[_0xddf5('0x42')]);_0xffdecd['attributes']=_['intersection'](_0x2605a3[_0xddf5('0x44')],qs[_0xddf5('0x45')](_0x3ff650[_0xddf5('0x42')][_0xddf5('0x45')]));_0xffdecd[_0xddf5('0x46')]=_0xffdecd[_0xddf5('0x46')][_0xddf5('0x47')]?_0xffdecd[_0xddf5('0x46')]:_0x2605a3[_0xddf5('0x44')];if(!_0x3ff650[_0xddf5('0x42')]['hasOwnProperty']('nolimit')){_0xffdecd[_0xddf5('0x32')]=qs[_0xddf5('0x32')](_0x3ff650['query']['limit']);_0xffdecd[_0xddf5('0x31')]=qs[_0xddf5('0x31')](_0x3ff650[_0xddf5('0x42')][_0xddf5('0x31')]);}_0xffdecd['order']=qs['sort'](_0x3ff650[_0xddf5('0x42')][_0xddf5('0x48')]);_0xffdecd['where']=qs[_0xddf5('0x49')](_[_0xddf5('0x4a')](_0x3ff650['query'],_0x2605a3[_0xddf5('0x49')]),_0x28c525);if(_0x3ff650['query'][_0xddf5('0x4b')]){_0xffdecd[_0xddf5('0x4c')]=_[_0xddf5('0x4d')](_0xffdecd['where'],{'$or':_[_0xddf5('0x3c')](_0x28c525,function(_0x9a845e){if(_0x9a845e[_0xddf5('0x40')]!==_0xddf5('0x4e')){var _0x1127d6={};_0x1127d6[_0x9a845e[_0xddf5('0x39')]]={'$like':'%'+_0x3ff650['query'][_0xddf5('0x4b')]+'%'};return _0x1127d6;}})});}_0xffdecd=_[_0xddf5('0x4d')]({},_0xffdecd,_0x3ff650[_0xddf5('0x4f')]);var _0x4337b9={'where':_0xffdecd['where']};return db[_0xddf5('0x3d')][_0xddf5('0x34')](_0x4337b9)[_0xddf5('0x37')](function(_0x35b4f2){_0x337c87['count']=_0x35b4f2;if(_0x3ff650[_0xddf5('0x42')][_0xddf5('0x50')]){_0xffdecd['include']=[{'all':!![]}];}return db[_0xddf5('0x3d')]['findAll'](_0xffdecd);})[_0xddf5('0x37')](function(_0x2a2ca7){_0x337c87[_0xddf5('0x51')]=_0x2a2ca7;return _0x337c87;})[_0xddf5('0x37')](respondWithFilteredResult(_0x10b7a7,_0xffdecd))['catch'](handleError(_0x10b7a7,null));};exports[_0xddf5('0x52')]=function(_0x2e2844,_0x5e9ad7){var _0x259907={'raw':!![],'where':{'id':_0x2e2844['params']['id']}},_0x535ae4={};_0x535ae4[_0xddf5('0x44')]=_[_0xddf5('0x43')](db[_0xddf5('0x3d')][_0xddf5('0x3e')]);_0x535ae4[_0xddf5('0x42')]=_[_0xddf5('0x43')](_0x2e2844['query']);_0x535ae4[_0xddf5('0x49')]=_[_0xddf5('0x53')](_0x535ae4[_0xddf5('0x44')],_0x535ae4[_0xddf5('0x42')]);_0x259907['attributes']=_[_0xddf5('0x53')](_0x535ae4[_0xddf5('0x44')],qs['fields'](_0x2e2844[_0xddf5('0x42')][_0xddf5('0x45')]));_0x259907['attributes']=_0x259907[_0xddf5('0x46')]['length']?_0x259907[_0xddf5('0x46')]:_0x535ae4['model'];if(_0x2e2844['query']['includeAll']){_0x259907[_0xddf5('0x54')]=[{'all':!![]}];}_0x259907=_[_0xddf5('0x4d')]({},_0x259907,_0x2e2844[_0xddf5('0x4f')]);return db[_0xddf5('0x3d')][_0xddf5('0x55')](_0x259907)[_0xddf5('0x37')](handleEntityNotFound(_0x5e9ad7,null))[_0xddf5('0x37')](respondWithResult(_0x5e9ad7,null))[_0xddf5('0x56')](handleError(_0x5e9ad7,null));};exports[_0xddf5('0x57')]=function(_0x18e068,_0x57f2a4){return db[_0xddf5('0x3d')][_0xddf5('0x57')](_0x18e068[_0xddf5('0x58')],{})[_0xddf5('0x37')](respondWithResult(_0x57f2a4,0xc9))[_0xddf5('0x56')](handleError(_0x57f2a4,null));};exports['update']=function(_0x3d2df0,_0x522dd6){if(_0x3d2df0[_0xddf5('0x58')]['id']){delete _0x3d2df0[_0xddf5('0x58')]['id'];}return db['SmsMessage'][_0xddf5('0x55')]({'where':{'id':_0x3d2df0['params']['id']}})[_0xddf5('0x37')](handleEntityNotFound(_0x522dd6,null))['then'](saveUpdates(_0x3d2df0['body'],null))[_0xddf5('0x37')](respondWithResult(_0x522dd6,null))[_0xddf5('0x56')](handleError(_0x522dd6,null));};exports[_0xddf5('0x59')]=function(_0x45643e,_0xb62de0){return db[_0xddf5('0x3d')]['find']({'where':{'id':_0x45643e[_0xddf5('0x5a')]['id']}})[_0xddf5('0x37')](handleEntityNotFound(_0xb62de0,null))[_0xddf5('0x37')](removeEntity(_0xb62de0,null))[_0xddf5('0x56')](handleError(_0xb62de0,null));};exports['describe']=function(_0x282246,_0x137cd2){return db[_0xddf5('0x3d')]['describe']()[_0xddf5('0x37')](respondWithResult(_0x137cd2,null))[_0xddf5('0x56')](handleError(_0x137cd2,null));};var interaction_log=require(_0xddf5('0x18'))(_0xddf5('0x5b'));exports[_0xddf5('0x5c')]=function(_0x3c108a,_0x1d6ed0,_0x4112a7){var _0xc84b83={'agent':{},'channel':_0xddf5('0x5d')};if(_0x3c108a[_0xddf5('0x58')]['id']){delete _0x3c108a[_0xddf5('0x58')]['id'];}_0x3c108a[_0xddf5('0x58')]['read']=!![];_0x3c108a[_0xddf5('0x58')]['readAt']=moment()[_0xddf5('0x5e')](_0xddf5('0x5f'));_0x3c108a[_0xddf5('0x58')][_0xddf5('0x60')]=_0x3c108a[_0xddf5('0x58')][_0xddf5('0x60')]||_0x3c108a['user']['id'];_0xc84b83[_0xddf5('0x61')]['id']=_0x3c108a[_0xddf5('0x58')][_0xddf5('0x60')];return db[_0xddf5('0x3d')][_0xddf5('0x55')]({'where':{'id':_0x3c108a['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1d6ed0,null))[_0xddf5('0x37')](saveUpdates(_0x3c108a[_0xddf5('0x58')],null))[_0xddf5('0x37')](function(_0x1781a7){if(_0x1781a7){_0xc84b83['message']=_0x1781a7['get']({'plain':!![]});return db[_0xddf5('0x62')][_0xddf5('0x55')]({'where':{'id':_0x1781a7[_0xddf5('0x63')]}});}return null;})[_0xddf5('0x37')](handleEntityNotFound(_0x1d6ed0,null))[_0xddf5('0x37')](function(_0x1a006d){if(_0x1a006d){return _0x1a006d[_0xddf5('0x64')]({'UserId':_0x3c108a['body']['UserId'],'read1stAt':_['isNil'](_0x1a006d[_0xddf5('0x65')])?moment()[_0xddf5('0x5e')](_0xddf5('0x5f')):undefined});}return null;})[_0xddf5('0x37')](function(_0x1d0105){if(_0x1d0105){_0xc84b83[_0xddf5('0x66')]=_0x1d0105[_0xddf5('0x67')]({'plain':!![]});interaction_log['info'](_0xddf5('0x68'),_0x3c108a[_0xddf5('0x69')]['id'],_0x3c108a['user'][_0xddf5('0x39')],_0x3c108a[_0xddf5('0x69')][_0xddf5('0x6a')],_0xc84b83[_0xddf5('0x66')]['id'],_0x3c108a['body']?JSON[_0xddf5('0x2a')](_0x3c108a[_0xddf5('0x58')]):_0xddf5('0x6b'));return respondWithRpcPromise(_0xddf5('0x6c'),_0xddf5('0x6d'),_0xc84b83);}return null;})[_0xddf5('0x37')](function(_0x551666){var _0x20775e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x551666['message'][_0xddf5('0x6e')];return db['sequelize'][_0xddf5('0x42')](_0x20775e,{'type':db[_0xddf5('0x6f')][_0xddf5('0x70')][_0xddf5('0x71')],'raw':!![]})['then'](function(_0x2c58ee){return _0x2c58ee;});})[_0xddf5('0x37')](function(_0x184a49){if(_0x184a49){_0xc84b83[_0xddf5('0x2c')]['contact']=_0x184a49[0x0];if(!_0x3c108a[_0xddf5('0x58')]['UserId'])return;return db[_0xddf5('0x72')]['find']({'where':{'id':_0x3c108a[_0xddf5('0x58')][_0xddf5('0x60')],'role':_0xddf5('0x61')},'attributes':['id',_0xddf5('0x39'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xddf5('0x37')](function(_0x468682){if(!_0x468682)return null;_0xc84b83[_0xddf5('0x2c')][_0xddf5('0x61')]=_0x468682;return _0xc84b83;})[_0xddf5('0x37')](function(_0x441ba8){if(_0x441ba8){if(_0x3c108a[_0xddf5('0x58')]['manual']){_0xc84b83[_0xddf5('0x2c')][_0xddf5('0x73')]=util['format'](_0xddf5('0x74'),_0x3c108a[_0xddf5('0x69')][_0xddf5('0x39')]);_0xc84b83[_0xddf5('0x2c')]['channel']=_0xc84b83['channel'];_0xc84b83['message'][_0xddf5('0x75')]=_0xc84b83['channel'];_0xc84b83['message'][_0xddf5('0x76')]=_0xddf5('0x5c');return respondWithRpcPromise(_0xddf5('0x77'),_0xddf5('0x77'),{'event':_0xddf5('0x78'),'message':_0xc84b83[_0xddf5('0x2c')]},client9002)[_0xddf5('0x37')](function(){return _0xc84b83;});}return _0xc84b83;}return null;})['then'](respondWithResult(_0x1d6ed0,null))['catch'](handleError(_0x1d6ed0,null));};var interaction_log=require(_0xddf5('0x18'))(_0xddf5('0x5b'));exports['reject']=function(_0x1e5481,_0x5962b4,_0x1a3b42){var _0x3bf028={'agent':{},'channel':'sms'};if(_0x1e5481['body']['id']){delete _0x1e5481[_0xddf5('0x58')]['id'];}_0x1e5481[_0xddf5('0x58')][_0xddf5('0x60')]=_0x1e5481[_0xddf5('0x58')][_0xddf5('0x60')]||_0x1e5481[_0xddf5('0x69')]['id'];_0x3bf028[_0xddf5('0x61')]['id']=_0x1e5481['body'][_0xddf5('0x60')];return db[_0xddf5('0x3d')][_0xddf5('0x55')]({'where':{'id':_0x1e5481['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5962b4,null))['then'](function(_0x57a830){if(_0x57a830){_0x3bf028[_0xddf5('0x2c')]=_0x57a830[_0xddf5('0x67')]({'plain':!![]});return db['SmsInteraction'][_0xddf5('0x55')]({'where':{'id':_0x57a830[_0xddf5('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x5962b4,null))[_0xddf5('0x37')](function(_0xedf2d){if(_0xedf2d){_0x3bf028[_0xddf5('0x66')]=_0xedf2d['get']({'plain':!![]});interaction_log[_0xddf5('0x27')](_0xddf5('0x79'),_0x1e5481['user']['id'],_0x1e5481[_0xddf5('0x69')][_0xddf5('0x39')],_0x1e5481[_0xddf5('0x69')][_0xddf5('0x6a')],_0x3bf028[_0xddf5('0x66')]['id'],_0x1e5481['body']?JSON[_0xddf5('0x2a')](_0x1e5481[_0xddf5('0x58')]):_0xddf5('0x6b'));return respondWithRpcPromise(_0xddf5('0x7a'),_0xddf5('0x7b'),_0x3bf028);}return null;})['then'](function(_0x10c8c9){var _0x5eed8b=_0xddf5('0x7c')+_0x10c8c9[_0xddf5('0x2c')][_0xddf5('0x6e')];return db[_0xddf5('0x7d')][_0xddf5('0x42')](_0x5eed8b,{'type':db[_0xddf5('0x6f')][_0xddf5('0x70')][_0xddf5('0x71')],'raw':!![]})[_0xddf5('0x37')](function(_0x1798f3){return _0x1798f3;});})[_0xddf5('0x37')](function(_0x443924){if(_0x443924){_0x3bf028[_0xddf5('0x2c')][_0xddf5('0x7e')]=_0x443924[0x0];if(!_0x1e5481['body'][_0xddf5('0x60')])return;return db['User'][_0xddf5('0x55')]({'where':{'id':_0x1e5481[_0xddf5('0x58')]['UserId'],'role':_0xddf5('0x61')},'attributes':['id','name',_0xddf5('0x7f'),_0xddf5('0x80'),'internal'],'raw':!![]});}return null;})['then'](function(_0x10bea0){if(!_0x10bea0)return null;_0x3bf028[_0xddf5('0x2c')][_0xddf5('0x61')]=_0x10bea0;return _0x3bf028;})[_0xddf5('0x37')](function(_0x25fb41){if(_0x25fb41){_0x25fb41[_0xddf5('0x2c')][_0xddf5('0x73')]=util[_0xddf5('0x5e')](_0xddf5('0x74'),_0x1e5481[_0xddf5('0x69')][_0xddf5('0x39')]);_0x25fb41[_0xddf5('0x2c')][_0xddf5('0x81')]=_0x3bf028[_0xddf5('0x81')];_0x25fb41['message'][_0xddf5('0x75')]=_0x3bf028[_0xddf5('0x81')];_0x25fb41[_0xddf5('0x2c')][_0xddf5('0x76')]='reject';respondWithRpcPromise(_0xddf5('0x77'),_0xddf5('0x77'),{'event':'rejectmessage','message':_0x25fb41[_0xddf5('0x2c')]},client9002);return _0x3bf028;}return null;})[_0xddf5('0x37')](respondWithResult(_0x5962b4,null))[_0xddf5('0x56')](handleError(_0x5962b4,null));};exports[_0xddf5('0x2f')]=function(_0x458cea,_0x46c199,_0x42a041){if(_0x458cea['body']['id']){delete _0x458cea[_0xddf5('0x58')]['id'];}var _0x38b1e4;return db[_0xddf5('0x3d')][_0xddf5('0x55')]({'where':{'id':_0x458cea['params']['id']}})['then'](handleEntityNotFound(_0x46c199,null))[_0xddf5('0x37')](function(_0x42cea6){if(_0x42cea6){_0x38b1e4=_0x42cea6;return db[_0xddf5('0x82')][_0xddf5('0x55')]({'where':{'id':_0x42cea6[_0xddf5('0x83')]}});}})['then'](handleEntityNotFound(_0x46c199,null))[_0xddf5('0x37')](function(_0x564979){if(_0x564979){logger['debug'](_0xddf5('0x84'),'status',_0xddf5('0x85'),_0x564979[_0xddf5('0x40')],util['inspect'](_0x458cea[_0xddf5('0x58')],{'showHidden':![],'depth':null}));switch(_0x564979[_0xddf5('0x40')]){case _0xddf5('0x86'):if(_0x458cea[_0xddf5('0x58')]['MessageSid']&&_0x458cea[_0xddf5('0x58')]['MessageSid']===_0x38b1e4[_0xddf5('0x87')]){return _0x38b1e4[_0xddf5('0x64')]({'read':!![]});}else{logger[_0xddf5('0x2b')](_0xddf5('0x88'),_0xddf5('0x2f'),_0xddf5('0x86'),util[_0xddf5('0x89')](_0x458cea[_0xddf5('0x58')],{'showHidden':![],'depth':null}));}break;case _0xddf5('0x8a'):if(_0x458cea[_0xddf5('0x58')]['MessageUUID']&&_0x458cea[_0xddf5('0x58')][_0xddf5('0x8b')]===_0x38b1e4[_0xddf5('0x87')]&&_[_0xddf5('0x8c')](['sent','delivered'],_0x458cea['body'][_0xddf5('0x8d')])>=0x0){return _0x38b1e4[_0xddf5('0x64')]({'read':!![]});}else{logger[_0xddf5('0x2b')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xddf5('0x2f'),_0xddf5('0x8e'),util[_0xddf5('0x89')](_0x458cea[_0xddf5('0x58')],{'showHidden':![],'depth':null}));}break;case _0xddf5('0x8f'):var _0x18f896=_0x458cea[_0xddf5('0x58')][_0xddf5('0x90')][0x0];if(_0x18f896['status'][_0xddf5('0x91')]===_0xddf5('0x92')){return _0x38b1e4[_0xddf5('0x64')]({'read':!![]});}else{logger['error'](_0xddf5('0x88'),_0xddf5('0x2f'),_0xddf5('0x8f'),util[_0xddf5('0x89')](_0x458cea[_0xddf5('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x38b1e4;}})[_0xddf5('0x37')](respondWithResult(_0x46c199,null))[_0xddf5('0x56')](handleError(_0x46c199,null));};
\ No newline at end of file
index 49fd6a1..bd2b6b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9c4=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','save'];(function(_0x4deff4,_0x493524){var _0x247546=function(_0x5d4d56){while(--_0x5d4d56){_0x4deff4['push'](_0x4deff4['shift']());}};_0x247546(++_0x493524);}(_0xe9c4,0x1d9));var _0x4e9c=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xe9c4[_0x3ab51d];return _0x29a04e;};'use strict';var EventEmitter=require(_0x4e9c('0x0'));var SmsMessage=require(_0x4e9c('0x1'))['db'][_0x4e9c('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4e9c('0x3'),'afterUpdate':_0x4e9c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x108a08){return function(_0x5986a9,_0x22b52b,_0x4669da){SmsMessageEvents[_0x4e9c('0x5')](_0x108a08+':'+_0x5986a9['id'],_0x5986a9);SmsMessageEvents[_0x4e9c('0x5')](_0x108a08,_0x5986a9);_0x4669da(null);};}for(var e in events){if(events[_0x4e9c('0x6')](e)){var event=events[e];SmsMessage[_0x4e9c('0x7')](e,emitEvent(event));}}module[_0x4e9c('0x8')]=SmsMessageEvents;
\ No newline at end of file
+var _0x475e=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','SmsMessage','save'];(function(_0x4de2c7,_0x49ddc2){var _0x4b78c4=function(_0x5c9a7a){while(--_0x5c9a7a){_0x4de2c7['push'](_0x4de2c7['shift']());}};_0x4b78c4(++_0x49ddc2);}(_0x475e,0x191));var _0xe475=function(_0x4eb813,_0x3f54d1){_0x4eb813=_0x4eb813-0x0;var _0x346304=_0x475e[_0x4eb813];return _0x346304;};'use strict';var EventEmitter=require(_0xe475('0x0'));var SmsMessage=require(_0xe475('0x1'))['db'][_0xe475('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe475('0x3'),'afterUpdate':_0xe475('0x4'),'afterDestroy':_0xe475('0x5')};function emitEvent(_0x3d6162){return function(_0x1242ef,_0x52a164,_0x6e5258){SmsMessageEvents['emit'](_0x3d6162+':'+_0x1242ef['id'],_0x1242ef);SmsMessageEvents[_0xe475('0x6')](_0x3d6162,_0x1242ef);_0x6e5258(null);};}for(var e in events){if(events[_0xe475('0x7')](e)){var event=events[e];SmsMessage[_0xe475('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index 9d2b542..98d6431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e7f=['bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','Basic\x20%s','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','intelepeer','utf8mb4','utf8mb4_unicode_ci','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','fti_sms_messages','body','toLowerCase','out','secret','isNil','SmsInteractionId','SmsInteraction','createdAt','catch','error','direction','SmsAccount','find','SmsAccountId','then','type','accountSid','authToken','create','phone','remote','/api/sms/messages/','/status?token=','token','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','username','&password=','GET','sms','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','format','%s:%s','POST','https://rest.clicksend.com/v3/sms/send','toString','base64','http_code','data','queued_count','messages','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','application/json','IBSSO\x20','crypto','apiKey','login','text','keys','sort','length','createHash','md5','digest','signature=','/external/get/send.php?','id_sms','csc','clickatell','uuid','UTF-8','Missing\x20parameters:\x20apiKey'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x6e7f,0xfe));var _0xf6e7=function(_0x1bd1b5,_0x59c92b){_0x1bd1b5=_0x1bd1b5-0x0;var _0x35b903=_0x6e7f[_0x1bd1b5];return _0x35b903;};'use strict';var _=require(_0xf6e7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf6e7('0x1'));var moment=require(_0xf6e7('0x2'));var BPromise=require(_0xf6e7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6e7('0x4'));var rimraf=require(_0xf6e7('0x5'));var config=require(_0xf6e7('0x6'));var attributes=require(_0xf6e7('0x7'));module[_0xf6e7('0x8')]=function(_0x1064ec,_0xd623be){return _0x1064ec[_0xf6e7('0x9')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0xf6e7('0xa'),'fields':[_0xf6e7('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d279c,_0x2d7308,_0x5524a0){var _0x3a2b35=_0x1064ec['models'];var _0x26aa12=_0x4d279c['get']({'plain':!![]});if(_0x26aa12['direction'][_0xf6e7('0xc')]()==='in'||_0x26aa12['direction'][_0xf6e7('0xc')]()===_0xf6e7('0xd')&&!_0x26aa12[_0xf6e7('0xe')]&&!_[_0xf6e7('0xf')](_0x26aa12['UserId'])&&!_['isNil'](_0x26aa12[_0xf6e7('0x10')])){_0x3a2b35[_0xf6e7('0x11')]['findOne']({'where':{'id':_0x26aa12[_0xf6e7('0x10')]}})['then'](function(_0x3db8fe){if(_0x3db8fe){_0x3db8fe['update']({'lastMsgAt':_0x26aa12[_0xf6e7('0x12')],'lastMsgDirection':_0x26aa12['direction']['toLowerCase']()});}})[_0xf6e7('0x13')](function(_0x268c3c){console[_0xf6e7('0x14')](_0x268c3c);});}if(_0x26aa12[_0xf6e7('0x15')]===_0xf6e7('0xd')&&!_0x26aa12[_0xf6e7('0xe')]){var _0x3175fc;_0x3a2b35[_0xf6e7('0x16')][_0xf6e7('0x17')]({'where':{'id':_0x26aa12[_0xf6e7('0x18')]},'raw':!![]})[_0xf6e7('0x19')](function(_0x1dc5a3){_0x3175fc=_0x1dc5a3;if(_0x3175fc&&_0x3175fc[_0xf6e7('0x1a')]){switch(_0x3175fc[_0xf6e7('0x1a')]){case'twilio':var _0x4b32dc=require('twilio');if(_0x3175fc[_0xf6e7('0x1b')]&&_0x3175fc[_0xf6e7('0x1c')]&&_0x3175fc['phone']){var _0x29d0b8=new _0x4b32dc(_0x3175fc[_0xf6e7('0x1b')],_0x3175fc[_0xf6e7('0x1c')]);_0x29d0b8['messages'][_0xf6e7('0x1d')]({'body':_0x26aa12[_0xf6e7('0xb')],'to':_0x26aa12[_0xf6e7('0x1e')],'from':_0x3175fc['phone'],'statusCallback':_0x3175fc[_0xf6e7('0x1f')]+_0xf6e7('0x20')+_0x26aa12['id']+_0xf6e7('0x21')+_0x3175fc[_0xf6e7('0x22')]})[_0xf6e7('0x19')](function(_0x6c035){if(_0x6c035[_0xf6e7('0x23')]){return _0x4d279c[_0xf6e7('0x24')]({'messageId':_0x6c035['sid']});}})[_0xf6e7('0x13')](function(_0x33b734){logger['error'](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x27'),util[_0xf6e7('0x28')](_0x33b734,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x27'),_0xf6e7('0x29'));}break;case _0xf6e7('0x2a'):var _0x35af5c=_0xf6e7('0x2b');if(_0x3175fc['username']&&_0x3175fc[_0xf6e7('0x2c')]){var _0x407822={'recipient':[_0x26aa12[_0xf6e7('0x1e')]],'message':_0x26aa12[_0xf6e7('0xb')],'message_type':_0x3175fc[_0xf6e7('0x2d')]};if(_0x3175fc['smsMethod']&&_0x3175fc[_0xf6e7('0x2d')]!=='SI'){_0x407822[_0xf6e7('0x2e')]=_0x3175fc[_0xf6e7('0x1e')];}var _0x4b2d41={'url':_0x35af5c+_0xf6e7('0x2f')+_0x3175fc[_0xf6e7('0x30')]+_0xf6e7('0x31')+_0x3175fc[_0xf6e7('0x2c')],'method':_0xf6e7('0x32')};rp(_0x4b2d41)[_0xf6e7('0x19')](function(_0x32c139){var _0x1c22dc=_0x32c139['split'](';');var _0x3d47d7={'user_key':_0x1c22dc[0x0],'session_key':_0x1c22dc[0x1]};_0x4b2d41={'url':_0x35af5c+_0xf6e7('0x33'),'method':'POST','headers':{'user_key':_0x3d47d7[_0xf6e7('0x34')],'Session_key':_0x3d47d7[_0xf6e7('0x35')]},'json':!![],'body':_0x407822};return rp(_0x4b2d41);})[_0xf6e7('0x19')](function(_0x212d49){if(_0x212d49[_0xf6e7('0x36')]>=0x1){var _0x1529d9={'messageId':_0x212d49[_0xf6e7('0x37')]};if(_0x3175fc['smsMethod']!=='GP'||!_0x3175fc[_0xf6e7('0x38')]){_0x1529d9[_0xf6e7('0x39')]=!![];}return _0x4d279c[_0xf6e7('0x24')](_0x1529d9);}else{return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x2a'),util[_0xf6e7('0x28')](_0x212d49,{'showHidden':![],'depth':null}));}})[_0xf6e7('0x13')](function(_0x56dbaa){return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x2a'),util['inspect'](_0x56dbaa,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),_0xf6e7('0x2a'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xf6e7('0x3a'):if(_0x3175fc[_0xf6e7('0x1c')]){var _0x29ae56={'recipient':_0x26aa12['phone'],'message':_0x26aa12[_0xf6e7('0xb')],'sender':_0x3175fc[_0xf6e7('0x3b')]||_0x3175fc[_0xf6e7('0x1e')],'authorization':_0x3175fc[_0xf6e7('0x1c')]};var _0x2d7308={'method':'POST','uri':_0xf6e7('0x3c'),'body':_0x29ae56,'json':!![]};rp(_0x2d7308)[_0xf6e7('0x19')](function(_0x8afcaf){var _0x396bbb={'messageId':_0x8afcaf[_0xf6e7('0x3d')]};if(!_0x3175fc[_0xf6e7('0x38')]){_0x396bbb['read']=!![];}return _0x4d279c['update'](_0x396bbb);})[_0xf6e7('0x13')](function(_0x5d2497){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),_0xf6e7('0x3a'),util[_0xf6e7('0x28')](_0x5d2497,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x3a'),'Missing\x20parameters:\x20authToken');}break;case'clicksend':if(_0x3175fc[_0xf6e7('0x30')]&&_0x3175fc['password']){var _0x29ae56={'messages':[{'source':'xCALLY\x20Motion','to':_0x26aa12['phone'],'body':_0x26aa12[_0xf6e7('0xb')],'from':_0x3175fc['senderString']||_0x3175fc[_0xf6e7('0x1e')]}]};var _0x4ec485=util[_0xf6e7('0x3e')](_0xf6e7('0x3f'),_0x3175fc[_0xf6e7('0x30')],_0x3175fc[_0xf6e7('0x2c')]);var _0x2d7308={'method':_0xf6e7('0x40'),'uri':_0xf6e7('0x41'),'body':_0x29ae56,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x4ec485)[_0xf6e7('0x42')](_0xf6e7('0x43')))},'json':!![]};rp(_0x2d7308)['then'](function(_0x2b308f){if(_0x2b308f[_0xf6e7('0x44')]>=0xc8&&_0x2b308f[_0xf6e7('0x44')]<=0xce){if(_0x2b308f[_0xf6e7('0x45')]&&_0x2b308f[_0xf6e7('0x45')][_0xf6e7('0x46')]>0x0){var _0x2b6b9d=_['head'](_0x2b308f['data'][_0xf6e7('0x47')]);var _0x561a0a={'messageId':_0x2b6b9d[_0xf6e7('0x48')]};if(!_0x3175fc[_0xf6e7('0x38')]){_0x561a0a[_0xf6e7('0x39')]=!![];}return _0x4d279c[_0xf6e7('0x24')](_0x561a0a);}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),'clickSend',util[_0xf6e7('0x28')](_0x2b308f,{'showHidden':![],'depth':null}));}}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),'afterCreate',_0xf6e7('0x49'),util[_0xf6e7('0x28')](_0x2b308f,{'showHidden':![],'depth':null}));}})[_0xf6e7('0x13')](function(_0xb67d0e){logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),'clickSend',util[_0xf6e7('0x28')](_0xb67d0e,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),_0xf6e7('0x49'),_0xf6e7('0x4a'));}break;case _0xf6e7('0x4b'):if(_0x3175fc[_0xf6e7('0x4c')]&&_0x3175fc[_0xf6e7('0x1c')]){var _0x29ae56={'dst':_0x26aa12[_0xf6e7('0x1e')],'text':_0x26aa12[_0xf6e7('0xb')],'src':_0x3175fc[_0xf6e7('0x3b')]||_0x3175fc[_0xf6e7('0x1e')],'url':_0x3175fc['remote']+'/api/sms/messages/'+_0x26aa12['id']+_0xf6e7('0x21')+_0x3175fc['token']};var _0x4ec485=util['format'](_0xf6e7('0x3f'),_0x3175fc['authId'],_0x3175fc[_0xf6e7('0x1c')]);var _0x2d7308={'method':_0xf6e7('0x40'),'uri':util[_0xf6e7('0x3e')](_0xf6e7('0x4d'),_0x3175fc[_0xf6e7('0x4c')]),'body':_0x29ae56,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x4ec485)[_0xf6e7('0x42')](_0xf6e7('0x43')))},'json':!![]};rp(_0x2d7308)[_0xf6e7('0x19')](function(_0x5b0cdb){var _0x1b6761={'messageId':_0x5b0cdb[_0xf6e7('0x4e')][0x0]};return _0x4d279c[_0xf6e7('0x24')](_0x1b6761);})['catch'](function(_0x53954d){logger[_0xf6e7('0x14')](_0xf6e7('0x25'),'afterCreate',_0xf6e7('0x4b'),util['inspect'](_0x53954d,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x4b'),_0xf6e7('0x4f'));}break;case _0xf6e7('0x50'):if(_0x3175fc['username']&&_0x3175fc['password']){if(_0x3175fc[_0xf6e7('0x51')]){var _0x26336d={'method':'POST','uri':_0x3175fc[_0xf6e7('0x51')]+_0xf6e7('0x52'),'body':{'username':_0x3175fc['username'],'password':_0x3175fc['password']},'json':!![]};return rp(_0x26336d)[_0xf6e7('0x19')](function(_0x1a94dc){var _0x1ba58d={'method':'POST','uri':_0x3175fc[_0xf6e7('0x51')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x3175fc[_0xf6e7('0x1e')],'destinations':[{'to':_0x26aa12[_0xf6e7('0x1e')]}],'text':_0x26aa12[_0xf6e7('0xb')],'notifyUrl':_0x3175fc[_0xf6e7('0x1f')]+'/api/sms/messages/'+_0x26aa12['id']+_0xf6e7('0x21')+_0x3175fc[_0xf6e7('0x22')],'notifyContentType':_0xf6e7('0x53'),'callbackData':_0x3175fc['phone']+';'+_0x26aa12['body']}]},'headers':{'Authorization':_0xf6e7('0x54')+_0x1a94dc[_0xf6e7('0x22')]},'json':!![]};return rp(_0x1ba58d)[_0xf6e7('0x19')](function(_0x150233){if(_0x150233[_0xf6e7('0x47')]){var _0x4f52e7={'messageId':_0x150233[_0xf6e7('0x47')][0x0]['messageId']};if(!_0x3175fc[_0xf6e7('0x38')]){_0x4f52e7['read']=!![];}return _0x4d279c['update'](_0x4f52e7);}else{return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),'infobip',util[_0xf6e7('0x28')](_0x150233,{'showHidden':![],'depth':null}));}});})[_0xf6e7('0x13')](function(_0x1b86b4){return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x50'),util[_0xf6e7('0x28')](_0x1b86b4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf6e7('0x25'),_0xf6e7('0x26'),'infobip','Missing\x20parameters:\x20base_url');}}else{logger[_0xf6e7('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),_0xf6e7('0x50'),_0xf6e7('0x4a'));}break;case'csc':var _0x1dc3b8=require(_0xf6e7('0x55'));if(_0x3175fc[_0xf6e7('0x56')]){var _0x2c3ea3={};_0x2c3ea3[_0xf6e7('0x57')]=_0x3175fc['username'];_0x2c3ea3[_0xf6e7('0x1e')]=_0x26aa12[_0xf6e7('0x1e')];_0x2c3ea3[_0xf6e7('0x2e')]=_0x3175fc['phone'];_0x2c3ea3[_0xf6e7('0x58')]=_0x26aa12[_0xf6e7('0xb')];_0x2c3ea3['timestamp']=+new Date();var _0x2fcc15='';var _0x4d22a4='';var _0xae68cd=Object[_0xf6e7('0x59')](_0x2c3ea3);_0xae68cd[_0xf6e7('0x5a')]();for(var _0x46f230=0x0;_0x46f230<_0xae68cd[_0xf6e7('0x5b')];_0x46f230++){if(_0x2fcc15!=''){_0x2fcc15+='&';}_0x2fcc15+=_0xae68cd[_0x46f230]+'='+encodeURIComponent(_0x2c3ea3[_0xae68cd[_0x46f230]]);_0x4d22a4+=_0x2c3ea3[_0xae68cd[_0x46f230]];}_0x4d22a4+=_0x3175fc[_0xf6e7('0x56')];_0x4d22a4=_0x1dc3b8[_0xf6e7('0x5c')](_0xf6e7('0x5d'))['update'](_0x4d22a4)[_0xf6e7('0x5e')]('hex');if(_0x2fcc15!==''){_0x2fcc15+='&';}_0x2fcc15+=_0xf6e7('0x5f')+_0x4d22a4;var _0x4b2d41={'method':_0xf6e7('0x32'),'uri':_0x3175fc[_0xf6e7('0x51')]+_0xf6e7('0x60')+_0x2fcc15,'json':!![]};return rp(_0x4b2d41)['then'](function(_0x406c6b){var _0x572f0f=Object[_0xf6e7('0x59')](_0x406c6b);if(_0x406c6b[_0x572f0f[0x0]][_0xf6e7('0x14')]&&parseInt(_0x406c6b[_0x572f0f[0x0]][_0xf6e7('0x14')])===0x0){var _0x35cd1f={'messageId':_0x406c6b[_0x572f0f[0x0]][_0xf6e7('0x61')]};if(!_0x3175fc['deliveryReport']){_0x35cd1f['read']=!![];}return _0x4d279c['update'](_0x35cd1f);}else{return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),'afterCreate','csc',util['inspect'](_0x406c6b[_0xf6e7('0x14')],{'showHidden':![],'depth':null}));}})['catch'](function(_0xd4187a){return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x62'),util[_0xf6e7('0x28')](_0xd4187a,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),_0xf6e7('0x62'),'Missing\x20parameters:\x20apiKey');}break;case _0xf6e7('0x63'):if(_0x3175fc[_0xf6e7('0x56')]){var _0x3f8d20={'method':_0xf6e7('0x40'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x3175fc[_0xf6e7('0x56')]},'body':{'content':_0x26aa12[_0xf6e7('0xb')],'to':[_0x26aa12[_0xf6e7('0x1e')]],'from':_0x3175fc['phone'],'binary':![],'clientMessageId':_0xf6e7('0x64'),'charset':_0xf6e7('0x65')},'json':!![]};rp(_0x3f8d20)['then'](function(_0x3c4947){if(!_0x3c4947[_0xf6e7('0x14')]){var _0x39961d={'messageId':_0x3c4947[_0xf6e7('0x47')][0x0]['apiMessageId']};if(!_0x3175fc['deliveryReport']){_0x39961d[_0xf6e7('0x39')]=!![];}return _0x4d279c[_0xf6e7('0x24')](_0x39961d);}else{return logger['error'](_0xf6e7('0x25'),_0xf6e7('0x26'),'clickatell',util[_0xf6e7('0x28')](_0x3c4947['error'],{'showHidden':![],'depth':null}));}})[_0xf6e7('0x13')](function(_0xf91481){return logger[_0xf6e7('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),_0xf6e7('0x63'),util['inspect'](_0xf91481,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),'clickatell',_0xf6e7('0x66'));}break;case _0xf6e7('0x67'):if(_0x3175fc[_0xf6e7('0x30')]&&_0x3175fc[_0xf6e7('0x2c')]){var _0x4ec485=util['format'](_0xf6e7('0x3f'),_0x3175fc['username'],_0x3175fc['password']);var _0x2d7308={'method':_0xf6e7('0x40'),'uri':_0xf6e7('0x68')+_0x3175fc[_0xf6e7('0x69')]+_0xf6e7('0x6a'),'body':{'to':[_0x26aa12[_0xf6e7('0x1e')]],'text':_0x26aa12['body'],'from':_0x3175fc[_0xf6e7('0x1e')],'applicationId':_0x3175fc[_0xf6e7('0x6b')]},'headers':{'Authorization':util['format'](_0xf6e7('0x6c'),new Buffer(_0x4ec485)['toString'](_0xf6e7('0x43')))},'json':!![]};rp(_0x2d7308)[_0xf6e7('0x19')](function(_0xd05300){if(_0xd05300['id']){var _0x3c33f7={'messageId':_0xd05300['id']};return _0x4d279c['update'](_0x3c33f7);}else{logger[_0xf6e7('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),'bandwidth',util[_0xf6e7('0x28')](_0xd05300,{'showHidden':![],'depth':null}));}})[_0xf6e7('0x13')](function(_0x5e9ae1){logger[_0xf6e7('0x14')](_0xf6e7('0x25'),'afterCreate',_0xf6e7('0x67'),util['inspect'](_0x5e9ae1,{'showHidden':![],'depth':null}));});}else{logger[_0xf6e7('0x14')](_0xf6e7('0x25'),_0xf6e7('0x26'),'bandwidth','Missing\x20parameters:\x20username,\x20password');}break;case'intelepeer':if(_0x3175fc[_0xf6e7('0x56')]){var _0x51bad9={};var _0x4b2d41={'method':'POST','uri':_0xf6e7('0x6d'),'headers':{'Authorization':'Bearer\x20'+_0x3175fc[_0xf6e7('0x56')],'Content-Type':_0xf6e7('0x53')},'body':{'from':_0x3175fc[_0xf6e7('0x1e')],'to':_0x26aa12[_0xf6e7('0x1e')],'text':_0x26aa12[_0xf6e7('0xb')]},'json':!![]};return rp(_0x4b2d41)['then'](function(_0x3dd4d9){if(_0x3dd4d9[_0xf6e7('0x6e')]==0xca){_0x51bad9[_0xf6e7('0x6f')]=_0x3dd4d9;var _0x149274={'method':_0xf6e7('0x40'),'uri':_0xf6e7('0x70'),'headers':{'Authorization':_0xf6e7('0x71')+_0x3175fc['apiKey'],'Content-Type':'application/json'},'body':{'refid':_0x51bad9['message'][_0xf6e7('0x72')]},'json':!![]};return rp(_0x149274)['then'](function(_0x15a919){_0x51bad9[_0xf6e7('0x73')]=_0x15a919;var _0x4c719e={'messageId':_0x51bad9['message']['refid'],'read':!![]};return _0x4d279c[_0xf6e7('0x24')](_0x4c719e);});}else{return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),'afterCreate',_0xf6e7('0x74'),util[_0xf6e7('0x28')](_0x3dd4d9,{'showHidden':![],'depth':null}));}})['catch'](function(_0x1bca42){return logger[_0xf6e7('0x14')](_0xf6e7('0x25'),'afterCreate','intelepeer',util[_0xf6e7('0x28')](_0x1bca42,{'showHidden':![],'depth':null}));});}else{return logger[_0xf6e7('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6e7('0x26'),_0xf6e7('0x74'),'Token\x20not\x20received');}break;}}})['finally'](function(){_0x5524a0();});}else{_0x5524a0();}}},'charset':_0xf6e7('0x75'),'collate':_0xf6e7('0x76')});};
\ No newline at end of file
+var _0xf6a9=['https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','GET','user_key','total_sent','deliveryReport','skebby','inspect','Missing\x20parameters:\x20username,\x20password','connectel','POST','https://smsapi.connectel.se/api/v2/send/','requestid','read','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','toString','base64','http_code','data','queued_count','head','message_id','clickSend','authId','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','plivo','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','remote','application/json','csc','apiKey','login','text','keys','sort','length','md5','digest','hex','signature=','/external/get/send.php?','id_sms','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','Missing\x20parameters:\x20apiKey','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./smsMessage.attributes','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','UserId','isNil','SmsInteractionId','findOne','then','update','secret','SmsAccount','find','SmsAccountId','type','twilio','authToken','phone','accountSid','messages','create','/api/sms/messages/','/status?token=','token','sid','catch','error','afterCreate','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken'];(function(_0x3936c4,_0x59b4bb){var _0x5c2e58=function(_0x35cd52){while(--_0x35cd52){_0x3936c4['push'](_0x3936c4['shift']());}};_0x5c2e58(++_0x59b4bb);}(_0xf6a9,0x1a8));var _0x9f6a=function(_0x2d1b70,_0x3b4edd){_0x2d1b70=_0x2d1b70-0x0;var _0x3d2dde=_0xf6a9[_0x2d1b70];return _0x3d2dde;};'use strict';var _=require(_0x9f6a('0x0'));var util=require('util');var logger=require(_0x9f6a('0x1'))(_0x9f6a('0x2'));var moment=require(_0x9f6a('0x3'));var BPromise=require('bluebird');var rp=require(_0x9f6a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9f6a('0x5'));var config=require(_0x9f6a('0x6'));var attributes=require(_0x9f6a('0x7'));module['exports']=function(_0x549e61,_0x5962b6){return _0x549e61['define']('SmsMessage',attributes,{'tableName':_0x9f6a('0x8'),'paranoid':![],'indexes':[{'name':_0x9f6a('0x9'),'fields':['messageId']},{'name':_0x9f6a('0xa'),'fields':[_0x9f6a('0xb')],'type':_0x9f6a('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xf02334,_0x504028,_0x2667db){var _0x37550d=_0x549e61[_0x9f6a('0xd')];var _0x5aaee0=_0xf02334[_0x9f6a('0xe')]({'plain':!![]});if(_0x5aaee0[_0x9f6a('0xf')][_0x9f6a('0x10')]()==='in'||_0x5aaee0['direction']['toLowerCase']()===_0x9f6a('0x11')&&!_0x5aaee0['secret']&&!_['isNil'](_0x5aaee0[_0x9f6a('0x12')])&&!_[_0x9f6a('0x13')](_0x5aaee0[_0x9f6a('0x14')])){_0x37550d['SmsInteraction'][_0x9f6a('0x15')]({'where':{'id':_0x5aaee0['SmsInteractionId']}})[_0x9f6a('0x16')](function(_0x22633d){if(_0x22633d){_0x22633d[_0x9f6a('0x17')]({'lastMsgAt':_0x5aaee0['createdAt'],'lastMsgDirection':_0x5aaee0[_0x9f6a('0xf')][_0x9f6a('0x10')]()});}})['catch'](function(_0x219478){console['error'](_0x219478);});}if(_0x5aaee0[_0x9f6a('0xf')]===_0x9f6a('0x11')&&!_0x5aaee0[_0x9f6a('0x18')]){var _0x2419a3;_0x37550d[_0x9f6a('0x19')][_0x9f6a('0x1a')]({'where':{'id':_0x5aaee0[_0x9f6a('0x1b')]},'raw':!![]})[_0x9f6a('0x16')](function(_0x3c0af6){_0x2419a3=_0x3c0af6;if(_0x2419a3&&_0x2419a3['type']){switch(_0x2419a3[_0x9f6a('0x1c')]){case'twilio':var _0x18f023=require(_0x9f6a('0x1d'));if(_0x2419a3['accountSid']&&_0x2419a3[_0x9f6a('0x1e')]&&_0x2419a3[_0x9f6a('0x1f')]){var _0x3ddd65=new _0x18f023(_0x2419a3[_0x9f6a('0x20')],_0x2419a3['authToken']);_0x3ddd65[_0x9f6a('0x21')][_0x9f6a('0x22')]({'body':_0x5aaee0[_0x9f6a('0xb')],'to':_0x5aaee0['phone'],'from':_0x2419a3[_0x9f6a('0x1f')],'statusCallback':_0x2419a3['remote']+_0x9f6a('0x23')+_0x5aaee0['id']+_0x9f6a('0x24')+_0x2419a3[_0x9f6a('0x25')]})[_0x9f6a('0x16')](function(_0x582b0c){if(_0x582b0c['sid']){return _0xf02334[_0x9f6a('0x17')]({'messageId':_0x582b0c[_0x9f6a('0x26')]});}})[_0x9f6a('0x27')](function(_0x307842){logger[_0x9f6a('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9f6a('0x29'),'twilio',util['inspect'](_0x307842,{'showHidden':![],'depth':null}));});}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x1d'),_0x9f6a('0x2b'));}break;case'skebby':var _0x1b9c5f=_0x9f6a('0x2c');if(_0x2419a3[_0x9f6a('0x2d')]&&_0x2419a3[_0x9f6a('0x2e')]){var _0x178ce7={'recipient':[_0x5aaee0[_0x9f6a('0x1f')]],'message':_0x5aaee0[_0x9f6a('0xb')],'message_type':_0x2419a3[_0x9f6a('0x2f')]};if(_0x2419a3[_0x9f6a('0x2f')]&&_0x2419a3[_0x9f6a('0x2f')]!=='SI'){_0x178ce7['sender']=_0x2419a3[_0x9f6a('0x1f')];}var _0x2035ce={'url':_0x1b9c5f+'login?username='+_0x2419a3[_0x9f6a('0x2d')]+'&password='+_0x2419a3[_0x9f6a('0x2e')],'method':_0x9f6a('0x30')};rp(_0x2035ce)[_0x9f6a('0x16')](function(_0x5099f6){var _0x17c930=_0x5099f6['split'](';');var _0x30333b={'user_key':_0x17c930[0x0],'session_key':_0x17c930[0x1]};_0x2035ce={'url':_0x1b9c5f+'sms','method':'POST','headers':{'user_key':_0x30333b[_0x9f6a('0x31')],'Session_key':_0x30333b['session_key']},'json':!![],'body':_0x178ce7};return rp(_0x2035ce);})[_0x9f6a('0x16')](function(_0x504fc5){if(_0x504fc5[_0x9f6a('0x32')]>=0x1){var _0x504627={'messageId':_0x504fc5['internal_order_id']};if(_0x2419a3[_0x9f6a('0x2f')]!=='GP'||!_0x2419a3[_0x9f6a('0x33')]){_0x504627['read']=!![];}return _0xf02334[_0x9f6a('0x17')](_0x504627);}else{return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x34'),util[_0x9f6a('0x35')](_0x504fc5,{'showHidden':![],'depth':null}));}})[_0x9f6a('0x27')](function(_0x459b05){return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x34'),util[_0x9f6a('0x35')](_0x459b05,{'showHidden':![],'depth':null}));});}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x34'),_0x9f6a('0x36'));}break;case _0x9f6a('0x37'):if(_0x2419a3['authToken']){var _0x3cfaa0={'recipient':_0x5aaee0[_0x9f6a('0x1f')],'message':_0x5aaee0[_0x9f6a('0xb')],'sender':_0x2419a3['senderString']||_0x2419a3[_0x9f6a('0x1f')],'authorization':_0x2419a3[_0x9f6a('0x1e')]};var _0x504028={'method':_0x9f6a('0x38'),'uri':_0x9f6a('0x39'),'body':_0x3cfaa0,'json':!![]};rp(_0x504028)[_0x9f6a('0x16')](function(_0x13aabb){var _0x1539c4={'messageId':_0x13aabb[_0x9f6a('0x3a')]};if(!_0x2419a3[_0x9f6a('0x33')]){_0x1539c4[_0x9f6a('0x3b')]=!![];}return _0xf02334[_0x9f6a('0x17')](_0x1539c4);})['catch'](function(_0x407fb9){logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),'connectel',util[_0x9f6a('0x35')](_0x407fb9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x37'),_0x9f6a('0x3c'));}break;case _0x9f6a('0x3d'):if(_0x2419a3[_0x9f6a('0x2d')]&&_0x2419a3[_0x9f6a('0x2e')]){var _0x3cfaa0={'messages':[{'source':_0x9f6a('0x3e'),'to':_0x5aaee0[_0x9f6a('0x1f')],'body':_0x5aaee0[_0x9f6a('0xb')],'from':_0x2419a3['senderString']||_0x2419a3['phone']}]};var _0x11d184=util[_0x9f6a('0x3f')]('%s:%s',_0x2419a3[_0x9f6a('0x2d')],_0x2419a3[_0x9f6a('0x2e')]);var _0x504028={'method':_0x9f6a('0x38'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x3cfaa0,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x11d184)[_0x9f6a('0x40')](_0x9f6a('0x41')))},'json':!![]};rp(_0x504028)[_0x9f6a('0x16')](function(_0x27e983){if(_0x27e983[_0x9f6a('0x42')]>=0xc8&&_0x27e983[_0x9f6a('0x42')]<=0xce){if(_0x27e983[_0x9f6a('0x43')]&&_0x27e983[_0x9f6a('0x43')][_0x9f6a('0x44')]>0x0){var _0x5a1da1=_[_0x9f6a('0x45')](_0x27e983['data'][_0x9f6a('0x21')]);var _0x244f3e={'messageId':_0x5a1da1[_0x9f6a('0x46')]};if(!_0x2419a3[_0x9f6a('0x33')]){_0x244f3e[_0x9f6a('0x3b')]=!![];}return _0xf02334['update'](_0x244f3e);}else{logger[_0x9f6a('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9f6a('0x29'),_0x9f6a('0x47'),util[_0x9f6a('0x35')](_0x27e983,{'showHidden':![],'depth':null}));}}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x47'),util[_0x9f6a('0x35')](_0x27e983,{'showHidden':![],'depth':null}));}})[_0x9f6a('0x27')](function(_0x1f0ab5){logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x47'),util['inspect'](_0x1f0ab5,{'showHidden':![],'depth':null}));});}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x47'),_0x9f6a('0x36'));}break;case'plivo':if(_0x2419a3[_0x9f6a('0x48')]&&_0x2419a3[_0x9f6a('0x1e')]){var _0x3cfaa0={'dst':_0x5aaee0['phone'],'text':_0x5aaee0[_0x9f6a('0xb')],'src':_0x2419a3['senderString']||_0x2419a3[_0x9f6a('0x1f')],'url':_0x2419a3['remote']+_0x9f6a('0x23')+_0x5aaee0['id']+_0x9f6a('0x24')+_0x2419a3[_0x9f6a('0x25')]};var _0x11d184=util[_0x9f6a('0x3f')](_0x9f6a('0x49'),_0x2419a3['authId'],_0x2419a3[_0x9f6a('0x1e')]);var _0x504028={'method':_0x9f6a('0x38'),'uri':util[_0x9f6a('0x3f')](_0x9f6a('0x4a'),_0x2419a3[_0x9f6a('0x48')]),'body':_0x3cfaa0,'headers':{'Authorization':util[_0x9f6a('0x3f')](_0x9f6a('0x4b'),new Buffer(_0x11d184)[_0x9f6a('0x40')](_0x9f6a('0x41')))},'json':!![]};rp(_0x504028)['then'](function(_0xe6e367){var _0xc87b54={'messageId':_0xe6e367['message_uuid'][0x0]};return _0xf02334[_0x9f6a('0x17')](_0xc87b54);})[_0x9f6a('0x27')](function(_0x38e2a0){logger['error'](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x4c'),util[_0x9f6a('0x35')](_0x38e2a0,{'showHidden':![],'depth':null}));});}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x4c'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x9f6a('0x4d'):if(_0x2419a3[_0x9f6a('0x2d')]&&_0x2419a3['password']){if(_0x2419a3[_0x9f6a('0x4e')]){var _0x5ed40c={'method':_0x9f6a('0x38'),'uri':_0x2419a3[_0x9f6a('0x4e')]+_0x9f6a('0x4f'),'body':{'username':_0x2419a3[_0x9f6a('0x2d')],'password':_0x2419a3['password']},'json':!![]};return rp(_0x5ed40c)[_0x9f6a('0x16')](function(_0x4e9960){var _0x52eaea={'method':_0x9f6a('0x38'),'uri':_0x2419a3[_0x9f6a('0x4e')]+_0x9f6a('0x50'),'body':{'messages':[{'from':_0x2419a3[_0x9f6a('0x1f')],'destinations':[{'to':_0x5aaee0[_0x9f6a('0x1f')]}],'text':_0x5aaee0[_0x9f6a('0xb')],'notifyUrl':_0x2419a3[_0x9f6a('0x51')]+'/api/sms/messages/'+_0x5aaee0['id']+_0x9f6a('0x24')+_0x2419a3['token'],'notifyContentType':_0x9f6a('0x52'),'callbackData':_0x2419a3[_0x9f6a('0x1f')]+';'+_0x5aaee0[_0x9f6a('0xb')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x4e9960[_0x9f6a('0x25')]},'json':!![]};return rp(_0x52eaea)['then'](function(_0x238140){if(_0x238140[_0x9f6a('0x21')]){var _0x36df48={'messageId':_0x238140[_0x9f6a('0x21')][0x0][_0x9f6a('0x9')]};if(!_0x2419a3[_0x9f6a('0x33')]){_0x36df48[_0x9f6a('0x3b')]=!![];}return _0xf02334[_0x9f6a('0x17')](_0x36df48);}else{return logger['error'](_0x9f6a('0x2a'),'afterCreate','infobip',util[_0x9f6a('0x35')](_0x238140,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x460a47){return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x4d'),util[_0x9f6a('0x35')](_0x460a47,{'showHidden':![],'depth':null}));});}else{logger[_0x9f6a('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x9f6a('0x4d'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x4d'),_0x9f6a('0x36'));}break;case _0x9f6a('0x53'):var _0x516e15=require('crypto');if(_0x2419a3[_0x9f6a('0x54')]){var _0x30d286={};_0x30d286[_0x9f6a('0x55')]=_0x2419a3[_0x9f6a('0x2d')];_0x30d286[_0x9f6a('0x1f')]=_0x5aaee0[_0x9f6a('0x1f')];_0x30d286['sender']=_0x2419a3[_0x9f6a('0x1f')];_0x30d286[_0x9f6a('0x56')]=_0x5aaee0['body'];_0x30d286['timestamp']=+new Date();var _0x30006c='';var _0x313a90='';var _0x3167e1=Object[_0x9f6a('0x57')](_0x30d286);_0x3167e1[_0x9f6a('0x58')]();for(var _0x553024=0x0;_0x553024<_0x3167e1[_0x9f6a('0x59')];_0x553024++){if(_0x30006c!=''){_0x30006c+='&';}_0x30006c+=_0x3167e1[_0x553024]+'='+encodeURIComponent(_0x30d286[_0x3167e1[_0x553024]]);_0x313a90+=_0x30d286[_0x3167e1[_0x553024]];}_0x313a90+=_0x2419a3[_0x9f6a('0x54')];_0x313a90=_0x516e15['createHash'](_0x9f6a('0x5a'))[_0x9f6a('0x17')](_0x313a90)[_0x9f6a('0x5b')](_0x9f6a('0x5c'));if(_0x30006c!==''){_0x30006c+='&';}_0x30006c+=_0x9f6a('0x5d')+_0x313a90;var _0x2035ce={'method':_0x9f6a('0x30'),'uri':_0x2419a3[_0x9f6a('0x4e')]+_0x9f6a('0x5e')+_0x30006c,'json':!![]};return rp(_0x2035ce)[_0x9f6a('0x16')](function(_0x55ebd9){var _0x93da6d=Object[_0x9f6a('0x57')](_0x55ebd9);if(_0x55ebd9[_0x93da6d[0x0]][_0x9f6a('0x28')]&&parseInt(_0x55ebd9[_0x93da6d[0x0]][_0x9f6a('0x28')])===0x0){var _0x2a3708={'messageId':_0x55ebd9[_0x93da6d[0x0]][_0x9f6a('0x5f')]};if(!_0x2419a3['deliveryReport']){_0x2a3708[_0x9f6a('0x3b')]=!![];}return _0xf02334[_0x9f6a('0x17')](_0x2a3708);}else{return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x53'),util[_0x9f6a('0x35')](_0x55ebd9[_0x9f6a('0x28')],{'showHidden':![],'depth':null}));}})[_0x9f6a('0x27')](function(_0x5be41d){return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x53'),util[_0x9f6a('0x35')](_0x5be41d,{'showHidden':![],'depth':null}));});}else{logger[_0x9f6a('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9f6a('0x29'),_0x9f6a('0x53'),'Missing\x20parameters:\x20apiKey');}break;case _0x9f6a('0x60'):if(_0x2419a3[_0x9f6a('0x54')]){var _0x1c097a={'method':_0x9f6a('0x38'),'uri':_0x9f6a('0x61'),'headers':{'Authorization':_0x2419a3[_0x9f6a('0x54')]},'body':{'content':_0x5aaee0[_0x9f6a('0xb')],'to':[_0x5aaee0['phone']],'from':_0x2419a3[_0x9f6a('0x1f')],'binary':![],'clientMessageId':_0x9f6a('0x62'),'charset':_0x9f6a('0x63')},'json':!![]};rp(_0x1c097a)[_0x9f6a('0x16')](function(_0xa46cba){if(!_0xa46cba['error']){var _0x373ad1={'messageId':_0xa46cba[_0x9f6a('0x21')][0x0]['apiMessageId']};if(!_0x2419a3[_0x9f6a('0x33')]){_0x373ad1['read']=!![];}return _0xf02334[_0x9f6a('0x17')](_0x373ad1);}else{return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),'clickatell',util[_0x9f6a('0x35')](_0xa46cba['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x6f6994){return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate','clickatell',util['inspect'](_0x6f6994,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x60'),_0x9f6a('0x64'));}break;case _0x9f6a('0x65'):if(_0x2419a3[_0x9f6a('0x2d')]&&_0x2419a3[_0x9f6a('0x2e')]){var _0x11d184=util[_0x9f6a('0x3f')]('%s:%s',_0x2419a3[_0x9f6a('0x2d')],_0x2419a3['password']);var _0x504028={'method':_0x9f6a('0x38'),'uri':_0x9f6a('0x66')+_0x2419a3[_0x9f6a('0x67')]+_0x9f6a('0x68'),'body':{'to':[_0x5aaee0[_0x9f6a('0x1f')]],'text':_0x5aaee0[_0x9f6a('0xb')],'from':_0x2419a3[_0x9f6a('0x1f')],'applicationId':_0x2419a3[_0x9f6a('0x69')]},'headers':{'Authorization':util[_0x9f6a('0x3f')]('Basic\x20%s',new Buffer(_0x11d184)[_0x9f6a('0x40')](_0x9f6a('0x41')))},'json':!![]};rp(_0x504028)['then'](function(_0x578fa2){if(_0x578fa2['id']){var _0x2017ff={'messageId':_0x578fa2['id']};return _0xf02334[_0x9f6a('0x17')](_0x2017ff);}else{logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x65'),util['inspect'](_0x578fa2,{'showHidden':![],'depth':null}));}})[_0x9f6a('0x27')](function(_0x418d28){logger['error'](_0x9f6a('0x2a'),_0x9f6a('0x29'),'bandwidth',util[_0x9f6a('0x35')](_0x418d28,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x65'),_0x9f6a('0x36'));}break;case'intelepeer':if(_0x2419a3[_0x9f6a('0x54')]){var _0x1b00dc={};var _0x2035ce={'method':_0x9f6a('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x9f6a('0x6a')+_0x2419a3[_0x9f6a('0x54')],'Content-Type':_0x9f6a('0x52')},'body':{'from':_0x2419a3[_0x9f6a('0x1f')],'to':_0x5aaee0[_0x9f6a('0x1f')],'text':_0x5aaee0[_0x9f6a('0xb')]},'json':!![]};return rp(_0x2035ce)[_0x9f6a('0x16')](function(_0x15c91d){if(_0x15c91d[_0x9f6a('0x6b')]==0xca){_0x1b00dc[_0x9f6a('0x6c')]=_0x15c91d;var _0x1fcc03={'method':'POST','uri':_0x9f6a('0x6d'),'headers':{'Authorization':_0x9f6a('0x6a')+_0x2419a3[_0x9f6a('0x54')],'Content-Type':'application/json'},'body':{'refid':_0x1b00dc['message'][_0x9f6a('0x6e')]},'json':!![]};return rp(_0x1fcc03)[_0x9f6a('0x16')](function(_0x2b6fdc){_0x1b00dc[_0x9f6a('0x6f')]=_0x2b6fdc;var _0x2301c3={'messageId':_0x1b00dc[_0x9f6a('0x6c')][_0x9f6a('0x6e')],'read':!![]};return _0xf02334[_0x9f6a('0x17')](_0x2301c3);});}else{return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),_0x9f6a('0x29'),_0x9f6a('0x70'),util[_0x9f6a('0x35')](_0x15c91d,{'showHidden':![],'depth':null}));}})[_0x9f6a('0x27')](function(_0x423b90){return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x70'),util[_0x9f6a('0x35')](_0x423b90,{'showHidden':![],'depth':null}));});}else{return logger[_0x9f6a('0x28')](_0x9f6a('0x2a'),'afterCreate',_0x9f6a('0x70'),_0x9f6a('0x71'));}break;}}})[_0x9f6a('0x72')](function(){_0x2667db();});}else{_0x2667db();}}},'charset':_0x9f6a('0x73'),'collate':_0x9f6a('0x74')});};
\ No newline at end of file
index e32bd18..f0a5934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c42=['client','localhost','socket.io-emitter','redis','./smsMessage.socket','register','request','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','info','result','catch','then','CreateSmsMessage','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x2265fc,_0x5315ff){var _0x15184d=function(_0x1fe4eb){while(--_0x1fe4eb){_0x2265fc['push'](_0x2265fc['shift']());}};_0x15184d(++_0x5315ff);}(_0x7c42,0xc8));var _0x27c4=function(_0x283f4e,_0x42d58a){_0x283f4e=_0x283f4e-0x0;var _0xdf3480=_0x7c42[_0x283f4e];return _0xdf3480;};'use strict';var _=require(_0x27c4('0x0'));var util=require(_0x27c4('0x1'));var moment=require(_0x27c4('0x2'));var BPromise=require(_0x27c4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x27c4('0x4'));var db=require(_0x27c4('0x5'))['db'];var utils=require(_0x27c4('0x6'));var logger=require(_0x27c4('0x7'))('rpc');var config=require(_0x27c4('0x8'));var jayson=require(_0x27c4('0x9'));var client=jayson[_0x27c4('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x27c4('0xb'),'port':0x18eb});var socket=require(_0x27c4('0xc'))(new Redis(config[_0x27c4('0xd')]));require(_0x27c4('0xe'))[_0x27c4('0xf')](socket);function respondWithRpcPromise(_0xee4912,_0x285039,_0x23fc8d){return new BPromise(function(_0x405e65,_0x20ab37){return client[_0x27c4('0x10')](_0xee4912,_0x23fc8d)['then'](function(_0x46c8a1){logger['info']('SmsMessage,\x20%s,\x20%s',_0x285039,_0x27c4('0x11'));logger[_0x27c4('0x12')](_0x27c4('0x13'),_0x285039,_0x27c4('0x11'),JSON[_0x27c4('0x14')](_0x46c8a1));if(_0x46c8a1[_0x27c4('0x15')]){if(_0x46c8a1[_0x27c4('0x15')][_0x27c4('0x16')]===0x1f4){logger[_0x27c4('0x15')](_0x27c4('0x17'),_0x285039,_0x46c8a1['error'][_0x27c4('0x18')]);return _0x20ab37(_0x46c8a1[_0x27c4('0x15')][_0x27c4('0x18')]);}logger[_0x27c4('0x15')]('SmsMessage,\x20%s,\x20%s',_0x285039,_0x46c8a1[_0x27c4('0x15')]['message']);return _0x405e65(_0x46c8a1[_0x27c4('0x15')][_0x27c4('0x18')]);}else{logger[_0x27c4('0x19')]('SmsMessage,\x20%s,\x20%s',_0x285039,'request\x20sent');_0x405e65(_0x46c8a1[_0x27c4('0x1a')]['message']);}})[_0x27c4('0x1b')](function(_0x313b80){logger[_0x27c4('0x15')](_0x27c4('0x17'),_0x285039,_0x313b80);_0x20ab37(_0x313b80);});});}exports['CreateSmsMessage']=function(_0xec6a24){var _0x9e9ca6=this;return new Promise(function(_0x108e54,_0x5a362e){return db['SmsMessage']['create'](_0xec6a24['body'],{'raw':_0xec6a24['options']?_0xec6a24['options']['raw']===undefined?!![]:![]:!![]})[_0x27c4('0x1c')](function(_0x1fae45){logger[_0x27c4('0x19')](_0x27c4('0x1d'),_0xec6a24);logger['debug']('CreateSmsMessage',_0xec6a24,JSON['stringify'](_0x1fae45));_0x108e54(_0x1fae45);})[_0x27c4('0x1b')](function(_0x2c1a67){logger[_0x27c4('0x15')](_0x27c4('0x1d'),_0x2c1a67[_0x27c4('0x18')],_0xec6a24);_0x5a362e(_0x9e9ca6[_0x27c4('0x15')](0x1f4,_0x2c1a67[_0x27c4('0x18')]));});});};
\ No newline at end of file
+var _0xd3eb=['stringify','error','message','catch','CreateSmsMessage','SmsMessage','create','options','raw','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','redis','defaults','localhost','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s'];(function(_0x3e056c,_0x4c63bb){var _0x156942=function(_0x26f846){while(--_0x26f846){_0x3e056c['push'](_0x3e056c['shift']());}};_0x156942(++_0x4c63bb);}(_0xd3eb,0x105));var _0xbd3e=function(_0x3d11be,_0x1b9a8c){_0x3d11be=_0x3d11be-0x0;var _0x4b657b=_0xd3eb[_0x3d11be];return _0x4b657b;};'use strict';var _=require(_0xbd3e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbd3e('0x1'));var fs=require('fs');var Redis=require(_0xbd3e('0x2'));var db=require(_0xbd3e('0x3'))['db'];var utils=require(_0xbd3e('0x4'));var logger=require('../../config/logger')(_0xbd3e('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xbd3e('0x6')]({'port':0x232a});config[_0xbd3e('0x7')]=_[_0xbd3e('0x8')](config['redis'],{'host':_0xbd3e('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbd3e('0x7')]));require(_0xbd3e('0xa'))[_0xbd3e('0xb')](socket);function respondWithRpcPromise(_0x230fa6,_0xc998b2,_0xc05c2b){return new BPromise(function(_0x381e33,_0x4b0e43){return client[_0xbd3e('0xc')](_0x230fa6,_0xc05c2b)[_0xbd3e('0xd')](function(_0x32927d){logger[_0xbd3e('0xe')](_0xbd3e('0xf'),_0xc998b2,_0xbd3e('0x10'));logger[_0xbd3e('0x11')](_0xbd3e('0x12'),_0xc998b2,_0xbd3e('0x10'),JSON[_0xbd3e('0x13')](_0x32927d));if(_0x32927d[_0xbd3e('0x14')]){if(_0x32927d[_0xbd3e('0x14')]['code']===0x1f4){logger[_0xbd3e('0x14')](_0xbd3e('0xf'),_0xc998b2,_0x32927d[_0xbd3e('0x14')][_0xbd3e('0x15')]);return _0x4b0e43(_0x32927d['error'][_0xbd3e('0x15')]);}logger[_0xbd3e('0x14')](_0xbd3e('0xf'),_0xc998b2,_0x32927d[_0xbd3e('0x14')][_0xbd3e('0x15')]);return _0x381e33(_0x32927d[_0xbd3e('0x14')][_0xbd3e('0x15')]);}else{logger[_0xbd3e('0xe')](_0xbd3e('0xf'),_0xc998b2,_0xbd3e('0x10'));_0x381e33(_0x32927d['result'][_0xbd3e('0x15')]);}})[_0xbd3e('0x16')](function(_0x35a4d1){logger[_0xbd3e('0x14')](_0xbd3e('0xf'),_0xc998b2,_0x35a4d1);_0x4b0e43(_0x35a4d1);});});}exports[_0xbd3e('0x17')]=function(_0xe237a4){var _0x124f8e=this;return new Promise(function(_0x4ffe34,_0x52fff7){return db[_0xbd3e('0x18')][_0xbd3e('0x19')](_0xe237a4['body'],{'raw':_0xe237a4['options']?_0xe237a4[_0xbd3e('0x1a')][_0xbd3e('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x399c94){logger['info'](_0xbd3e('0x17'),_0xe237a4);logger[_0xbd3e('0x11')](_0xbd3e('0x17'),_0xe237a4,JSON[_0xbd3e('0x13')](_0x399c94));_0x4ffe34(_0x399c94);})['catch'](function(_0x3ed07f){logger['error'](_0xbd3e('0x17'),_0x3ed07f[_0xbd3e('0x15')],_0xe237a4);_0x52fff7(_0x124f8e[_0xbd3e('0x14')](0x1f4,_0x3ed07f[_0xbd3e('0x15')]));});});};
\ No newline at end of file
index 472d89a..91dd737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ef6=['remove','emit','removeListener','length'];(function(_0x2e5b90,_0x435dc5){var _0x425813=function(_0x8cdd99){while(--_0x8cdd99){_0x2e5b90['push'](_0x2e5b90['shift']());}};_0x425813(++_0x435dc5);}(_0x6ef6,0x114));var _0x66ef=function(_0x2df84e,_0x190b5a){_0x2df84e=_0x2df84e-0x0;var _0x335612=_0x6ef6[_0x2df84e];return _0x335612;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=['save',_0x66ef('0x0'),'update'];function createListener(_0xb5b65f,_0x2ef214){return function(_0x4a8469){_0x2ef214[_0x66ef('0x1')](_0xb5b65f,_0x4a8469);};}function removeListener(_0x58cb24,_0x444f91){return function(){SmsMessageEvents[_0x66ef('0x2')](_0x58cb24,_0x444f91);};}exports['register']=function(_0x458f02){for(var _0x522d9b=0x0,_0x583cfe=events[_0x66ef('0x3')];_0x522d9b<_0x583cfe;_0x522d9b++){var _0x4d3624=events[_0x522d9b];var _0x48ed5b=createListener('smsMessage:'+_0x4d3624,_0x458f02);SmsMessageEvents['on'](_0x4d3624,_0x48ed5b);}};
\ No newline at end of file
+var _0x634c=['length','smsMessage:','./smsMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x15ac88,_0x91463a){var _0xcaab8d=function(_0x4553e5){while(--_0x4553e5){_0x15ac88['push'](_0x15ac88['shift']());}};_0xcaab8d(++_0x91463a);}(_0x634c,0xf5));var _0xc634=function(_0x29b218,_0x755bb9){_0x29b218=_0x29b218-0x0;var _0x5549af=_0x634c[_0x29b218];return _0x5549af;};'use strict';var SmsMessageEvents=require(_0xc634('0x0'));var events=[_0xc634('0x1'),_0xc634('0x2'),_0xc634('0x3')];function createListener(_0x2fac80,_0x40ac6d){return function(_0x8011d4){_0x40ac6d[_0xc634('0x4')](_0x2fac80,_0x8011d4);};}function removeListener(_0x2c46f5,_0x43bf0a){return function(){SmsMessageEvents[_0xc634('0x5')](_0x2c46f5,_0x43bf0a);};}exports[_0xc634('0x6')]=function(_0x353708){for(var _0xb9fda1=0x0,_0x281dad=events[_0xc634('0x7')];_0xb9fda1<_0x281dad;_0xb9fda1++){var _0x4aede3=events[_0xb9fda1];var _0x154063=createListener(_0xc634('0x8')+_0x4aede3,_0x353708);SmsMessageEvents['on'](_0x4aede3,_0x154063);}};
\ No newline at end of file
index eab6e10..68ee67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa890=['create','addAgents','put','delete','removeTeams','removeAgents','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0xa890,0x88));var _0x0a89=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0xa890[_0xc0a3d3];return _0x3386e8;};'use strict';var multer=require(_0x0a89('0x0'));var util=require('util');var path=require(_0x0a89('0x1'));var timeout=require(_0x0a89('0x2'));var express=require(_0x0a89('0x3'));var router=express[_0x0a89('0x4')]();var fs_extra=require(_0x0a89('0x5'));var auth=require(_0x0a89('0x6'));var interaction=require(_0x0a89('0x7'));var config=require(_0x0a89('0x8'));var controller=require(_0x0a89('0x9'));router[_0x0a89('0xa')]('/',auth[_0x0a89('0xb')](),controller[_0x0a89('0xc')]);router[_0x0a89('0xa')]('/describe',auth[_0x0a89('0xb')](),controller['describe']);router[_0x0a89('0xa')](_0x0a89('0xd'),auth[_0x0a89('0xb')](),controller['show']);router['get'](_0x0a89('0xe'),auth[_0x0a89('0xb')](),controller['getMembers']);router[_0x0a89('0xa')](_0x0a89('0xf'),auth[_0x0a89('0xb')](),controller[_0x0a89('0x10')]);router[_0x0a89('0xa')](_0x0a89('0x11'),auth[_0x0a89('0xb')](),controller[_0x0a89('0x12')]);router[_0x0a89('0x13')]('/',auth['isAuthenticated'](),controller[_0x0a89('0x14')]);router[_0x0a89('0x13')](_0x0a89('0xf'),auth['isAuthenticated'](),controller['addTeams']);router[_0x0a89('0x13')](_0x0a89('0x11'),auth[_0x0a89('0xb')](),controller[_0x0a89('0x15')]);router[_0x0a89('0x16')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0a89('0x17')](_0x0a89('0xd'),auth[_0x0a89('0xb')](),controller['destroy']);router['delete'](_0x0a89('0xf'),auth['isAuthenticated'](),controller[_0x0a89('0x18')]);router[_0x0a89('0x17')]('/:id/users',auth[_0x0a89('0xb')](),controller[_0x0a89('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xec53=['destroy','removeAgents','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams','addAgents','put','/:id','delete'];(function(_0x427bc2,_0x130ae2){var _0x4c3a34=function(_0x2a95ec){while(--_0x2a95ec){_0x427bc2['push'](_0x427bc2['shift']());}};_0x4c3a34(++_0x130ae2);}(_0xec53,0xaa));var _0x3ec5=function(_0x4f6954,_0x2b4b88){_0x4f6954=_0x4f6954-0x0;var _0x9ef904=_0xec53[_0x4f6954];return _0x9ef904;};'use strict';var multer=require('multer');var util=require(_0x3ec5('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3ec5('0x1'));var router=express[_0x3ec5('0x2')]();var fs_extra=require(_0x3ec5('0x3'));var auth=require(_0x3ec5('0x4'));var interaction=require(_0x3ec5('0x5'));var config=require(_0x3ec5('0x6'));var controller=require(_0x3ec5('0x7'));router[_0x3ec5('0x8')]('/',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0xa')]);router[_0x3ec5('0x8')]('/describe',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0xb')]);router[_0x3ec5('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3ec5('0xc')]);router[_0x3ec5('0x8')](_0x3ec5('0xd'),auth['isAuthenticated'](),controller[_0x3ec5('0xe')]);router[_0x3ec5('0x8')]('/:id/teams',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0xf')]);router[_0x3ec5('0x8')](_0x3ec5('0x10'),auth['isAuthenticated'](),controller[_0x3ec5('0x11')]);router[_0x3ec5('0x12')]('/',auth[_0x3ec5('0x9')](),controller[_0x3ec5('0x13')]);router[_0x3ec5('0x12')](_0x3ec5('0x14'),auth['isAuthenticated'](),controller[_0x3ec5('0x15')]);router[_0x3ec5('0x12')](_0x3ec5('0x10'),auth['isAuthenticated'](),controller[_0x3ec5('0x16')]);router[_0x3ec5('0x17')](_0x3ec5('0x18'),auth[_0x3ec5('0x9')](),controller['update']);router[_0x3ec5('0x19')](_0x3ec5('0x18'),auth[_0x3ec5('0x9')](),controller[_0x3ec5('0x1a')]);router[_0x3ec5('0x19')](_0x3ec5('0x14'),auth[_0x3ec5('0x9')](),controller['removeTeams']);router[_0x3ec5('0x19')](_0x3ec5('0x10'),auth[_0x3ec5('0x9')](),controller[_0x3ec5('0x1b')]);module['exports']=router;
\ No newline at end of file
index edcfbff..d24ff8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcebc=['INTEGER','rrmemory','beepall','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcebc,0xb2));var _0xcceb=function(_0xf17dc3,_0x44f0cf){_0xf17dc3=_0xf17dc3-0x0;var _0x44bec8=_0xcebc[_0xf17dc3];return _0x44bec8;};'use strict';var Sequelize=require('sequelize');module[_0xcceb('0x0')]={'name':{'type':Sequelize[_0xcceb('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xcceb('0x1')]},'timeout':{'type':Sequelize[_0xcceb('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xcceb('0x3'),_0xcceb('0x4'),'roundrobin')}};
\ No newline at end of file
+var _0x7bd0=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','beepall'];(function(_0x358d90,_0x460a4c){var _0x9c1c05=function(_0x38c1a5){while(--_0x38c1a5){_0x358d90['push'](_0x358d90['shift']());}};_0x9c1c05(++_0x460a4c);}(_0x7bd0,0xd1));var _0x07bd=function(_0x4fc80b,_0xfe1b3d){_0x4fc80b=_0x4fc80b-0x0;var _0x119dba=_0x7bd0[_0x4fc80b];return _0x119dba;};'use strict';var Sequelize=require(_0x07bd('0x0'));module[_0x07bd('0x1')]={'name':{'type':Sequelize[_0x07bd('0x2')],'unique':_0x07bd('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x07bd('0x2')]},'timeout':{'type':Sequelize[_0x07bd('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x07bd('0x5')]('rrmemory',_0x07bd('0x6'),_0x07bd('0x7'))}};
\ No newline at end of file
index 75952eb..9ac401e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c79=['findAndCountAll','UserId','agent','updatedAt','createdAt','%s/%s','getTeams','Team','addTeams','Agents','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','ids','spread','userSmsQueue:save','getAgents','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','get','SmsQueues','UserProfileResource','destroy','end','error','name','map','SmsQueue','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','keys','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','SmsQueueId','User'];(function(_0x11bf17,_0x1f6fc3){var _0x26e010=function(_0x1269f5){while(--_0x1269f5){_0x11bf17['push'](_0x11bf17['shift']());}};_0x26e010(++_0x1f6fc3);}(_0x6c79,0x1d1));var _0x96c7=function(_0xeb1985,_0x32b90f){_0xeb1985=_0xeb1985-0x0;var _0x1f453c=_0x6c79[_0xeb1985];return _0x1f453c;};'use strict';var emlformat=require(_0x96c7('0x0'));var rimraf=require(_0x96c7('0x1'));var zipdir=require(_0x96c7('0x2'));var jsonpatch=require(_0x96c7('0x3'));var rp=require(_0x96c7('0x4'));var moment=require(_0x96c7('0x5'));var BPromise=require(_0x96c7('0x6'));var Mustache=require(_0x96c7('0x7'));var util=require('util');var path=require(_0x96c7('0x8'));var sox=require(_0x96c7('0x9'));var csv=require(_0x96c7('0xa'));var ejs=require(_0x96c7('0xb'));var fs=require('fs');var fs_extra=require(_0x96c7('0xc'));var _=require('lodash');var squel=require(_0x96c7('0xd'));var crypto=require('crypto');var jsforce=require(_0x96c7('0xe'));var deskjs=require(_0x96c7('0xf'));var toCsv=require(_0x96c7('0xa'));var querystring=require('querystring');var Papa=require(_0x96c7('0x10'));var Redis=require(_0x96c7('0x11'));var authService=require(_0x96c7('0x12'));var qs=require(_0x96c7('0x13'));var as=require(_0x96c7('0x14'));var hardwareService=require(_0x96c7('0x15'));var logger=require(_0x96c7('0x16'))(_0x96c7('0x17'));var utils=require(_0x96c7('0x18'));var config=require(_0x96c7('0x19'));var licenseUtil=require(_0x96c7('0x1a'));var db=require(_0x96c7('0x1b'))['db'];config[_0x96c7('0x1c')]=_[_0x96c7('0x1d')](config[_0x96c7('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x96c7('0x1e'))(new Redis(config[_0x96c7('0x1c')]));require('./smsQueue.socket')['register'](socket);function respondWithStatusCode(_0x579c96,_0x1faf9c){_0x1faf9c=_0x1faf9c||0xcc;return function(_0x6978df){if(_0x6978df){return _0x579c96[_0x96c7('0x1f')](_0x1faf9c);}return _0x579c96[_0x96c7('0x20')](_0x1faf9c)['end']();};}function respondWithResult(_0x35db46,_0x4d12a2){_0x4d12a2=_0x4d12a2||0xc8;return function(_0x4896bc){if(_0x4896bc){return _0x35db46['status'](_0x4d12a2)['json'](_0x4896bc);}};}function respondWithFilteredResult(_0x380a7d,_0x16e648){return function(_0x420502){if(_0x420502){var _0x457b6=typeof _0x16e648[_0x96c7('0x21')]===_0x96c7('0x22')&&typeof _0x16e648[_0x96c7('0x23')]===_0x96c7('0x22');var _0x268d50=_0x420502['count'];var _0x230f65=_0x457b6?0x0:_0x16e648['offset'];var _0x2c6874=_0x457b6?_0x420502[_0x96c7('0x24')]:_0x16e648[_0x96c7('0x21')]+_0x16e648[_0x96c7('0x23')];var _0x477bc5;if(_0x2c6874>=_0x268d50){_0x2c6874=_0x268d50;_0x477bc5=0xc8;}else{_0x477bc5=0xce;}_0x380a7d[_0x96c7('0x20')](_0x477bc5);return _0x380a7d[_0x96c7('0x25')](_0x96c7('0x26'),_0x230f65+'-'+_0x2c6874+'/'+_0x268d50)[_0x96c7('0x27')](_0x420502);}return null;};}function patchUpdates(_0x15f947){return function(_0x7e0f40){try{jsonpatch[_0x96c7('0x28')](_0x7e0f40,_0x15f947,!![]);}catch(_0x4abc6e){return BPromise['reject'](_0x4abc6e);}return _0x7e0f40[_0x96c7('0x29')]();};}function saveUpdates(_0x1da35c,_0x443f06){return function(_0x538c67){if(_0x538c67){return _0x538c67[_0x96c7('0x2a')](_0x1da35c)[_0x96c7('0x2b')](function(_0x7110d4){return _0x7110d4;});}return null;};}function removeEntity(_0x5c253b,_0x445a4f){return function(_0x4b7a6c){if(_0x4b7a6c){return _0x4b7a6c['destroy']()['then'](function(){var _0x6437=_0x4b7a6c[_0x96c7('0x2c')]({'plain':!![]});var _0x516311=_0x96c7('0x2d');return db[_0x96c7('0x2e')][_0x96c7('0x2f')]({'where':{'type':_0x516311,'resourceId':_0x6437['id']}})[_0x96c7('0x2b')](function(){return _0x4b7a6c;});})[_0x96c7('0x2b')](function(){_0x5c253b[_0x96c7('0x20')](0xcc)[_0x96c7('0x30')]();});}};}function handleEntityNotFound(_0xbef8bd,_0x6becf5){return function(_0x33fd01){if(!_0x33fd01){_0xbef8bd['sendStatus'](0x194);}return _0x33fd01;};}function handleError(_0x5c3964,_0x5a1975){_0x5a1975=_0x5a1975||0x1f4;return function(_0x564c87){logger[_0x96c7('0x31')](_0x564c87['stack']);if(_0x564c87[_0x96c7('0x32')]){delete _0x564c87['name'];}_0x5c3964[_0x96c7('0x20')](_0x5a1975)['send'](_0x564c87);};}exports['index']=function(_0x16e755,_0x2b3762){var _0x20fa82={},_0x9bf329={},_0x44c2ee={'count':0x0,'rows':[]};var _0x4392f0=_[_0x96c7('0x33')](db[_0x96c7('0x34')][_0x96c7('0x35')],function(_0x29cf8b){return{'name':_0x29cf8b[_0x96c7('0x36')],'type':_0x29cf8b[_0x96c7('0x37')]['key']};});_0x9bf329[_0x96c7('0x38')]=_['map'](_0x4392f0,'name');_0x9bf329[_0x96c7('0x39')]=_['keys'](_0x16e755[_0x96c7('0x39')]);_0x9bf329[_0x96c7('0x3a')]=_[_0x96c7('0x3b')](_0x9bf329[_0x96c7('0x38')],_0x9bf329[_0x96c7('0x39')]);_0x20fa82[_0x96c7('0x3c')]=_[_0x96c7('0x3b')](_0x9bf329[_0x96c7('0x38')],qs[_0x96c7('0x3d')](_0x16e755[_0x96c7('0x39')][_0x96c7('0x3d')]));_0x20fa82['attributes']=_0x20fa82[_0x96c7('0x3c')][_0x96c7('0x3e')]?_0x20fa82[_0x96c7('0x3c')]:_0x9bf329[_0x96c7('0x38')];if(!_0x16e755[_0x96c7('0x39')][_0x96c7('0x3f')](_0x96c7('0x40'))){_0x20fa82['limit']=qs[_0x96c7('0x23')](_0x16e755[_0x96c7('0x39')][_0x96c7('0x23')]);_0x20fa82['offset']=qs['offset'](_0x16e755[_0x96c7('0x39')][_0x96c7('0x21')]);}_0x20fa82[_0x96c7('0x41')]=qs['sort'](_0x16e755['query'][_0x96c7('0x42')]);_0x20fa82[_0x96c7('0x43')]=qs[_0x96c7('0x3a')](_[_0x96c7('0x44')](_0x16e755[_0x96c7('0x39')],_0x9bf329[_0x96c7('0x3a')]),_0x4392f0);if(_0x16e755[_0x96c7('0x39')][_0x96c7('0x45')]){_0x20fa82[_0x96c7('0x43')]=_[_0x96c7('0x46')](_0x20fa82[_0x96c7('0x43')],{'$or':_['map'](_0x4392f0,function(_0x471106){if(_0x471106['type']!==_0x96c7('0x47')){var _0xd11b34={};_0xd11b34[_0x471106[_0x96c7('0x32')]]={'$like':'%'+_0x16e755[_0x96c7('0x39')][_0x96c7('0x45')]+'%'};return _0xd11b34;}})});}_0x20fa82=_['merge']({},_0x20fa82,_0x16e755['options']);var _0x5ce36e={'where':_0x20fa82[_0x96c7('0x43')]};return db['SmsQueue']['count'](_0x5ce36e)['then'](function(_0x1aa2d1){_0x44c2ee[_0x96c7('0x24')]=_0x1aa2d1;if(_0x16e755[_0x96c7('0x39')][_0x96c7('0x48')]){_0x20fa82['include']=[{'all':!![]}];}return db[_0x96c7('0x34')][_0x96c7('0x49')](_0x20fa82);})['then'](function(_0x86053b){_0x44c2ee[_0x96c7('0x4a')]=_0x86053b;return _0x44c2ee;})[_0x96c7('0x2b')](respondWithFilteredResult(_0x2b3762,_0x20fa82))[_0x96c7('0x4b')](handleError(_0x2b3762,null));};exports[_0x96c7('0x4c')]=function(_0x2f718d,_0xc9a89e){var _0x4d3f6e={'raw':!![],'where':{'id':_0x2f718d['params']['id']}},_0xb3429b={};_0xb3429b['model']=_[_0x96c7('0x4d')](db[_0x96c7('0x34')][_0x96c7('0x35')]);_0xb3429b[_0x96c7('0x39')]=_[_0x96c7('0x4d')](_0x2f718d[_0x96c7('0x39')]);_0xb3429b[_0x96c7('0x3a')]=_[_0x96c7('0x3b')](_0xb3429b[_0x96c7('0x38')],_0xb3429b['query']);_0x4d3f6e[_0x96c7('0x3c')]=_[_0x96c7('0x3b')](_0xb3429b[_0x96c7('0x38')],qs['fields'](_0x2f718d[_0x96c7('0x39')][_0x96c7('0x3d')]));_0x4d3f6e[_0x96c7('0x3c')]=_0x4d3f6e[_0x96c7('0x3c')][_0x96c7('0x3e')]?_0x4d3f6e[_0x96c7('0x3c')]:_0xb3429b['model'];if(_0x2f718d[_0x96c7('0x39')][_0x96c7('0x48')]){_0x4d3f6e[_0x96c7('0x4e')]=[{'all':!![]}];}_0x4d3f6e=_['merge']({},_0x4d3f6e,_0x2f718d[_0x96c7('0x4f')]);return db[_0x96c7('0x34')][_0x96c7('0x50')](_0x4d3f6e)[_0x96c7('0x2b')](handleEntityNotFound(_0xc9a89e,null))['then'](respondWithResult(_0xc9a89e,null))[_0x96c7('0x4b')](handleError(_0xc9a89e,null));};exports[_0x96c7('0x51')]=function(_0x181096,_0x551848){return db[_0x96c7('0x34')]['create'](_0x181096[_0x96c7('0x52')],{})[_0x96c7('0x2b')](function(_0x2d9c05){var _0x3728bb=_0x181096[_0x96c7('0x53')][_0x96c7('0x2c')]({'plain':!![]});if(!_0x3728bb)throw new Error(_0x96c7('0x54'));if(_0x3728bb[_0x96c7('0x55')]===_0x96c7('0x53')){var _0x18a075=_0x2d9c05[_0x96c7('0x2c')]({'plain':!![]});var _0xcbfac2='SmsQueues';return db[_0x96c7('0x56')][_0x96c7('0x50')]({'where':{'name':_0xcbfac2,'userProfileId':_0x3728bb[_0x96c7('0x57')]},'raw':!![]})[_0x96c7('0x2b')](function(_0x176461){if(_0x176461&&_0x176461[_0x96c7('0x58')]===0x0){return db[_0x96c7('0x2e')][_0x96c7('0x51')]({'name':_0x18a075[_0x96c7('0x32')],'resourceId':_0x18a075['id'],'type':_0x176461[_0x96c7('0x32')],'sectionId':_0x176461['id']},{})[_0x96c7('0x2b')](function(){return _0x2d9c05;});}else{return _0x2d9c05;}})[_0x96c7('0x4b')](function(_0x3b1e90){logger[_0x96c7('0x31')](_0x96c7('0x59'),_0x3b1e90);throw _0x3b1e90;});}return _0x2d9c05;})[_0x96c7('0x2b')](respondWithResult(_0x551848,0xc9))[_0x96c7('0x4b')](handleError(_0x551848,null));};exports[_0x96c7('0x2a')]=function(_0x115401,_0x4b95e6){if(_0x115401[_0x96c7('0x52')]['id']){delete _0x115401[_0x96c7('0x52')]['id'];}return db[_0x96c7('0x34')][_0x96c7('0x50')]({'where':{'id':_0x115401[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](handleEntityNotFound(_0x4b95e6,null))[_0x96c7('0x2b')](saveUpdates(_0x115401['body'],null))[_0x96c7('0x2b')](respondWithResult(_0x4b95e6,null))[_0x96c7('0x4b')](handleError(_0x4b95e6,null));};exports[_0x96c7('0x2f')]=function(_0x4e1d82,_0x155dbf){return db[_0x96c7('0x34')][_0x96c7('0x50')]({'where':{'id':_0x4e1d82[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](handleEntityNotFound(_0x155dbf,null))[_0x96c7('0x2b')](removeEntity(_0x155dbf,null))[_0x96c7('0x4b')](handleError(_0x155dbf,null));};exports[_0x96c7('0x5b')]=function(_0x4d2dfa,_0x231803){return db[_0x96c7('0x34')][_0x96c7('0x5b')]()[_0x96c7('0x2b')](respondWithResult(_0x231803,null))[_0x96c7('0x4b')](handleError(_0x231803,null));};exports[_0x96c7('0x5c')]=function(_0x4d0e67,_0x390609,_0x3137a4){var _0x4de059={'raw':!![],'where':{}},_0xad9083={},_0x12ae65;return db[_0x96c7('0x34')]['findOne']({'where':{'id':_0x4d0e67[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](handleEntityNotFound(_0x390609,null))['then'](function(_0x1c89c9){if(_0x1c89c9){_0x12ae65=_0x1c89c9['get']({'plain':!![]});_0xad9083[_0x96c7('0x38')]=_[_0x96c7('0x4d')](db['UserSmsQueue'][_0x96c7('0x35')]);_0xad9083[_0x96c7('0x39')]=_['keys'](_0x4d0e67[_0x96c7('0x39')]);_0xad9083['filters']=_[_0x96c7('0x3b')](_0xad9083['model'],_0xad9083[_0x96c7('0x39')]);_0x4de059[_0x96c7('0x3c')]=_[_0x96c7('0x3b')](_0xad9083[_0x96c7('0x38')],qs[_0x96c7('0x3d')](_0x4d0e67[_0x96c7('0x39')][_0x96c7('0x3d')]));_0x4de059[_0x96c7('0x3c')]=_0x4de059[_0x96c7('0x3c')][_0x96c7('0x3e')]?_0x4de059[_0x96c7('0x3c')]:_0xad9083[_0x96c7('0x38')];if(!_0x4d0e67[_0x96c7('0x39')]['hasOwnProperty'](_0x96c7('0x40'))){_0x4de059['limit']=qs[_0x96c7('0x23')](_0x4d0e67[_0x96c7('0x39')][_0x96c7('0x23')]);_0x4de059['offset']=qs['offset'](_0x4d0e67[_0x96c7('0x39')][_0x96c7('0x21')]);}_0x4de059[_0x96c7('0x41')]=qs['sort'](_0x4d0e67['query'][_0x96c7('0x42')]);_0x4de059[_0x96c7('0x43')]=qs['filters'](_[_0x96c7('0x44')](_0x4d0e67[_0x96c7('0x39')],_0xad9083[_0x96c7('0x3a')]));_0x4de059[_0x96c7('0x43')][_0x96c7('0x5d')]=_0x1c89c9['id'];if(_0x4d0e67[_0x96c7('0x39')][_0x96c7('0x45')]){_0x4de059[_0x96c7('0x43')]=_['merge'](_0x4de059[_0x96c7('0x43')],{'$or':_['map'](_0x4de059[_0x96c7('0x3c')],function(_0x2ac6fe){var _0x161bc5={};_0x161bc5[_0x2ac6fe]={'$like':'%'+_0x4d0e67['query']['filter']+'%'};return _0x161bc5;})});}_0x4de059=_[_0x96c7('0x46')]({},_0x4de059,_0x4d0e67['options']);return db['UserSmsQueue']['findAll'](_0x4de059);}})[_0x96c7('0x2b')](function(_0x227717){if(_0x227717){return db[_0x96c7('0x5e')][_0x96c7('0x5f')]({'where':{'id':_[_0x96c7('0x33')](_0x227717,_0x96c7('0x60')),'role':_0x96c7('0x61')},'attributes':['id',_0x96c7('0x32'),'smsPause',_0x96c7('0x62'),_0x96c7('0x63')]});}})['then'](function(_0x4762bb){if(_0x4762bb){return{'count':_0x4762bb[_0x96c7('0x24')],'rows':_[_0x96c7('0x33')](_0x4762bb[_0x96c7('0x4a')],function(_0xbf0d5e){return{'membername':_0xbf0d5e[_0x96c7('0x32')],'UserId':_0xbf0d5e['id'],'queue_name':_0x12ae65['name'],'SmsQueueId':_0x12ae65['id'],'interface':util['format'](_0x96c7('0x64'),'SIP',_0xbf0d5e['name']),'penalty':0x0,'paused':_0xbf0d5e['smsPause'],'createdAt':_0xbf0d5e[_0x96c7('0x63')],'updatedAt':_0xbf0d5e[_0x96c7('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x96c7('0x2b')](respondWithFilteredResult(_0x390609,_0x4de059))[_0x96c7('0x4b')](handleError(_0x390609,null));};exports[_0x96c7('0x65')]=function(_0xe7d0a5,_0x15c26f,_0x4e967c){var _0x1ff982={};var _0x453094={};var _0x2be707;var _0x3fca09;return db[_0x96c7('0x34')]['findOne']({'where':{'id':_0xe7d0a5[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](handleEntityNotFound(_0x15c26f,null))['then'](function(_0x18b74d){if(_0x18b74d){_0x2be707=_0x18b74d;_0x453094['model']=_[_0x96c7('0x4d')](db[_0x96c7('0x66')][_0x96c7('0x35')]);_0x453094[_0x96c7('0x39')]=_['keys'](_0xe7d0a5[_0x96c7('0x39')]);_0x453094[_0x96c7('0x3a')]=_[_0x96c7('0x3b')](_0x453094[_0x96c7('0x38')],_0x453094[_0x96c7('0x39')]);_0x1ff982['attributes']=_['intersection'](_0x453094[_0x96c7('0x38')],qs['fields'](_0xe7d0a5['query'][_0x96c7('0x3d')]));_0x1ff982[_0x96c7('0x3c')]=_0x1ff982[_0x96c7('0x3c')][_0x96c7('0x3e')]?_0x1ff982[_0x96c7('0x3c')]:_0x453094['model'];_0x1ff982[_0x96c7('0x41')]=qs['sort'](_0xe7d0a5[_0x96c7('0x39')][_0x96c7('0x42')]);_0x1ff982[_0x96c7('0x43')]=qs[_0x96c7('0x3a')](_[_0x96c7('0x44')](_0xe7d0a5['query'],_0x453094[_0x96c7('0x3a')]));if(_0xe7d0a5[_0x96c7('0x39')][_0x96c7('0x45')]){_0x1ff982['where']=_[_0x96c7('0x46')](_0x1ff982[_0x96c7('0x43')],{'$or':_['map'](_0x1ff982[_0x96c7('0x3c')],function(_0x1f1712){var _0x44dad8={};_0x44dad8[_0x1f1712]={'$like':'%'+_0xe7d0a5[_0x96c7('0x39')][_0x96c7('0x45')]+'%'};return _0x44dad8;})});}_0x1ff982=_[_0x96c7('0x46')]({},_0x1ff982,_0xe7d0a5[_0x96c7('0x4f')]);return _0x2be707[_0x96c7('0x65')](_0x1ff982);}})[_0x96c7('0x2b')](function(_0x1a2f66){if(_0x1a2f66){_0x3fca09=_0x1a2f66[_0x96c7('0x3e')];if(!_0xe7d0a5[_0x96c7('0x39')][_0x96c7('0x3f')](_0x96c7('0x40'))){_0x1ff982[_0x96c7('0x23')]=qs[_0x96c7('0x23')](_0xe7d0a5[_0x96c7('0x39')]['limit']);_0x1ff982[_0x96c7('0x21')]=qs[_0x96c7('0x21')](_0xe7d0a5['query'][_0x96c7('0x21')]);}return _0x2be707['getTeams'](_0x1ff982);}})[_0x96c7('0x2b')](function(_0x2ec9a9){if(_0x2ec9a9){return _0x2ec9a9?{'count':_0x3fca09,'rows':_0x2ec9a9}:null;}})['then'](respondWithResult(_0x15c26f,null))[_0x96c7('0x4b')](handleError(_0x15c26f,null));};exports[_0x96c7('0x67')]=function(_0x4baa45,_0x26aee9,_0x18d15d){var _0x27a04d=_0x4baa45['body']['ids'];return db[_0x96c7('0x66')]['findAll']({'where':{'id':_0x27a04d},'attributes':['id'],'include':[{'model':db['User'],'as':_0x96c7('0x68'),'attributes':['id',_0x96c7('0x32'),'online',_0x96c7('0x69'),_0x96c7('0x6a')],'raw':!![]}]})[_0x96c7('0x2b')](function(_0x4fbfce){if(_0x4fbfce){var _0x10427a=_[_0x96c7('0x6b')](_0x4fbfce,function(_0x53087b){var _0x178f82=_0x53087b[_0x96c7('0x2c')]({'plain':!![]});return _0x178f82[_0x96c7('0x68')];});return db['SmsQueue'][_0x96c7('0x50')]({'where':{'id':_0x4baa45[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](function(_0x315afa){return db[_0x96c7('0x6c')][_0x96c7('0x6d')](function(_0x4f16aa){return _0x315afa[_0x96c7('0x67')](_0x27a04d,{'transaction':_0x4f16aa})[_0x96c7('0x2b')](function(){return BPromise['each'](_0x10427a,function(_0x442c27){return db['UserSmsQueue'][_0x96c7('0x6e')]({'where':{'UserId':_0x442c27['id'],'SmsQueueId':_0x4baa45[_0x96c7('0x5a')]['id']},'transaction':_0x4f16aa});});})[_0x96c7('0x2b')](function(){_0x10427a[_0x96c7('0x6f')](function(_0x106db9){socket[_0x96c7('0x70')]('userSmsQueue:save',{'UserId':_0x106db9['id'],'SmsQueueId':_0x315afa['id']});});});});});}})[_0x96c7('0x2b')](respondWithStatusCode(_0x26aee9,null))[_0x96c7('0x4b')](handleError(_0x26aee9,null));};exports[_0x96c7('0x71')]=function(_0x5f1fd2,_0x1630e3,_0x3c7f6a){return db[_0x96c7('0x66')][_0x96c7('0x49')]({'where':{'id':_0x5f1fd2['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x96c7('0x5e')],'as':_0x96c7('0x68'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1630e3,null))[_0x96c7('0x2b')](function(_0x4cfbd7){var _0x5488a9=_['map'](_0x4cfbd7,'id');var _0x2e70ea=[];var _0x5e07ed=[];var _0x589eb4=squel[_0x96c7('0x72')]();_0x589eb4[_0x96c7('0x73')](_0x96c7('0x74'))['from'](_0x96c7('0x75'),'tq')[_0x96c7('0x76')](_0x96c7('0x77'),'ut',_0x96c7('0x78'))[_0x96c7('0x43')]('SmsQueueId\x20=\x20?',_0x5f1fd2[_0x96c7('0x5a')]['id']);for(var _0x1665c0=0x0;_0x1665c0<_0x4cfbd7[_0x96c7('0x3e')];_0x1665c0+=0x1){let _0x5bb29d=_0x4cfbd7[_0x1665c0];for(var _0x54100c=0x0;_0x54100c<_0x5bb29d[_0x96c7('0x68')][_0x96c7('0x3e')];_0x54100c+=0x1){let _0xae650b=_0x5bb29d['Agents'][_0x54100c];var _0x4b19c0=_0x589eb4['clone']();_0x4b19c0['where'](_0x96c7('0x79'),_0xae650b['id']);_0x5e07ed[_0x96c7('0x7a')](db['sequelize'][_0x96c7('0x39')](_0x4b19c0[_0x96c7('0x7b')](),{'type':db[_0x96c7('0x6c')][_0x96c7('0x7c')][_0x96c7('0x7d')]})[_0x96c7('0x2b')](function(_0x1f9aeb){if(_0x1f9aeb[_0x96c7('0x3e')]===0x1){return _0xae650b['id'];}else{var _0x3ad058=_['every'](_[_0x96c7('0x33')](_0x1f9aeb,_0x96c7('0x7e')),function(_0x4858eb){return _['includes'](_0x5488a9,_0x4858eb);});if(_0x3ad058){return _0xae650b['id'];}}}));}}return BPromise['all'](_0x5e07ed)[_0x96c7('0x2b')](function(_0x18bb56){_0x2e70ea=_(_0x2e70ea)[_0x96c7('0x7f')](_0x18bb56)[_0x96c7('0x80')]()[_0x96c7('0x81')]();return db[_0x96c7('0x34')][_0x96c7('0x50')]({'where':{'id':_0x5f1fd2[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](function(_0x11f5c2){return db['sequelize'][_0x96c7('0x6d')](function(_0x39e91f){return _0x11f5c2['removeTeams'](_0x5f1fd2[_0x96c7('0x39')]['ids'],{'transaction':_0x39e91f})[_0x96c7('0x2b')](function(){if(!_[_0x96c7('0x82')](_0x2e70ea)){return _0x11f5c2[_0x96c7('0x83')](_0x2e70ea,{'transaction':_0x39e91f});}})['then'](function(){_0x2e70ea['forEach'](function(_0x22d250){socket[_0x96c7('0x70')](_0x96c7('0x84'),{'UserId':_0x22d250,'SmsQueueId':_0x11f5c2['id']});});});});});});})[_0x96c7('0x2b')](respondWithStatusCode(_0x1630e3,null))[_0x96c7('0x4b')](handleError(_0x1630e3,null));};exports[_0x96c7('0x85')]=function(_0x1bdb8e,_0x8f496,_0x1991e0){return db['SmsQueue'][_0x96c7('0x50')]({'where':{'id':_0x1bdb8e[_0x96c7('0x5a')]['id']}})['then'](handleEntityNotFound(_0x8f496,null))[_0x96c7('0x2b')](function(_0x5790e1){if(_0x5790e1){return _0x5790e1[_0x96c7('0x85')](_0x1bdb8e[_0x96c7('0x52')]['ids'],_[_0x96c7('0x86')](_0x1bdb8e[_0x96c7('0x52')],[_0x96c7('0x87'),'id'])||{})[_0x96c7('0x88')](function(_0x4b3496){for(var _0x571150=0x0;_0x571150<_0x1bdb8e[_0x96c7('0x52')][_0x96c7('0x87')][_0x96c7('0x3e')];_0x571150+=0x1){socket[_0x96c7('0x70')](_0x96c7('0x89'),{'UserId':Number(_0x1bdb8e[_0x96c7('0x52')]['ids'][_0x571150]),'SmsQueueId':Number(_0x1bdb8e[_0x96c7('0x5a')]['id'])});}return _0x4b3496;});}})[_0x96c7('0x2b')](respondWithResult(_0x8f496,null))[_0x96c7('0x4b')](handleError(_0x8f496,null));};exports['removeAgents']=function(_0x49aca5,_0x5eca8c,_0x2d29df){return db[_0x96c7('0x34')][_0x96c7('0x50')]({'where':{'id':_0x49aca5['params']['id']}})[_0x96c7('0x2b')](handleEntityNotFound(_0x5eca8c,null))['then'](function(_0x132e76){if(_0x132e76){return _0x132e76[_0x96c7('0x83')](_0x49aca5[_0x96c7('0x39')][_0x96c7('0x87')])[_0x96c7('0x2b')](function(){if(_['isArray'](_0x49aca5[_0x96c7('0x39')][_0x96c7('0x87')])){for(var _0x14832f=0x0;_0x14832f<_0x49aca5[_0x96c7('0x39')]['ids'][_0x96c7('0x3e')];_0x14832f+=0x1){socket['emit'](_0x96c7('0x84'),{'UserId':Number(_0x49aca5[_0x96c7('0x39')]['ids'][_0x14832f]),'SmsQueueId':Number(_0x49aca5[_0x96c7('0x5a')]['id'])});}}else{socket[_0x96c7('0x70')](_0x96c7('0x84'),{'UserId':Number(_0x49aca5[_0x96c7('0x39')]['ids']),'SmsQueueId':Number(_0x49aca5[_0x96c7('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x5eca8c,null))[_0x96c7('0x4b')](handleError(_0x5eca8c,null));};exports[_0x96c7('0x8a')]=function(_0x2a183f,_0x39f275,_0x5aca51){var _0xaee93={};var _0xeb8cc1={};var _0x114df7;var _0xc5a26e;return db[_0x96c7('0x34')][_0x96c7('0x8b')]({'where':{'id':_0x2a183f[_0x96c7('0x5a')]['id']}})[_0x96c7('0x2b')](handleEntityNotFound(_0x39f275,null))['then'](function(_0x4d331e){if(_0x4d331e){_0x114df7=_0x4d331e;_0xeb8cc1[_0x96c7('0x38')]=_['keys'](db[_0x96c7('0x5e')][_0x96c7('0x35')]);_0xeb8cc1[_0x96c7('0x39')]=_['keys'](_0x2a183f[_0x96c7('0x39')]);_0xeb8cc1[_0x96c7('0x3a')]=_[_0x96c7('0x3b')](_0xeb8cc1[_0x96c7('0x38')],_0xeb8cc1[_0x96c7('0x39')]);_0xaee93['attributes']=_[_0x96c7('0x3b')](_0xeb8cc1[_0x96c7('0x38')],qs[_0x96c7('0x3d')](_0x2a183f['query'][_0x96c7('0x3d')]));_0xaee93[_0x96c7('0x3c')]=_0xaee93[_0x96c7('0x3c')]['length']?_0xaee93[_0x96c7('0x3c')]:_0xeb8cc1[_0x96c7('0x38')];_0xaee93['order']=qs['sort'](_0x2a183f['query'][_0x96c7('0x42')]);_0xaee93[_0x96c7('0x43')]=qs[_0x96c7('0x3a')](_['pick'](_0x2a183f[_0x96c7('0x39')],_0xeb8cc1[_0x96c7('0x3a')]));if(_0x2a183f[_0x96c7('0x39')][_0x96c7('0x45')]){_0xaee93['where']=_['merge'](_0xaee93[_0x96c7('0x43')],{'$or':_[_0x96c7('0x33')](_0xaee93[_0x96c7('0x3c')],function(_0x37ccf4){var _0x3326be={};_0x3326be[_0x37ccf4]={'$like':'%'+_0x2a183f['query']['filter']+'%'};return _0x3326be;})});}_0xaee93=_[_0x96c7('0x46')]({},_0xaee93,_0x2a183f[_0x96c7('0x4f')]);return _0x114df7[_0x96c7('0x8a')](_0xaee93);}})[_0x96c7('0x2b')](function(_0x5dc9de){if(_0x5dc9de){_0xc5a26e=_0x5dc9de[_0x96c7('0x3e')];if(!_0x2a183f[_0x96c7('0x39')][_0x96c7('0x3f')](_0x96c7('0x40'))){_0xaee93[_0x96c7('0x23')]=qs[_0x96c7('0x23')](_0x2a183f[_0x96c7('0x39')][_0x96c7('0x23')]);_0xaee93['offset']=qs[_0x96c7('0x21')](_0x2a183f[_0x96c7('0x39')]['offset']);}return _0x114df7[_0x96c7('0x8a')](_0xaee93);}})[_0x96c7('0x2b')](function(_0x141708){if(_0x141708){return _0x141708?{'count':_0xc5a26e,'rows':_0x141708}:null;}})['then'](respondWithResult(_0x39f275,null))[_0x96c7('0x4b')](handleError(_0x39f275,null));};
\ No newline at end of file
+var _0x4b3d=['order','sort','pick','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','Agents','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','ids','select','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','SELECT','every','includes','all','union','compact','value','transaction','removeTeams','isEmpty','userSmsQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','json','undefined','offset','count','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','SmsQueue','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','length','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','body','describe','findOne','UserSmsQueue'];(function(_0x3e226d,_0x3c23bd){var _0x40892c=function(_0x141162){while(--_0x141162){_0x3e226d['push'](_0x3e226d['shift']());}};_0x40892c(++_0x3c23bd);}(_0x4b3d,0x15c));var _0xd4b3=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4b3d[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xd4b3('0x0'));var rimraf=require(_0xd4b3('0x1'));var zipdir=require(_0xd4b3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd4b3('0x3'));var moment=require(_0xd4b3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd4b3('0x5'));var util=require(_0xd4b3('0x6'));var path=require(_0xd4b3('0x7'));var sox=require(_0xd4b3('0x8'));var csv=require(_0xd4b3('0x9'));var ejs=require(_0xd4b3('0xa'));var fs=require('fs');var fs_extra=require(_0xd4b3('0xb'));var _=require(_0xd4b3('0xc'));var squel=require(_0xd4b3('0xd'));var crypto=require(_0xd4b3('0xe'));var jsforce=require(_0xd4b3('0xf'));var deskjs=require(_0xd4b3('0x10'));var toCsv=require(_0xd4b3('0x9'));var querystring=require(_0xd4b3('0x11'));var Papa=require(_0xd4b3('0x12'));var Redis=require(_0xd4b3('0x13'));var authService=require(_0xd4b3('0x14'));var qs=require(_0xd4b3('0x15'));var as=require(_0xd4b3('0x16'));var hardwareService=require(_0xd4b3('0x17'));var logger=require('../../config/logger')(_0xd4b3('0x18'));var utils=require(_0xd4b3('0x19'));var config=require(_0xd4b3('0x1a'));var licenseUtil=require(_0xd4b3('0x1b'));var db=require(_0xd4b3('0x1c'))['db'];config[_0xd4b3('0x1d')]=_[_0xd4b3('0x1e')](config[_0xd4b3('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0xd4b3('0x1f'))(new Redis(config[_0xd4b3('0x1d')]));require(_0xd4b3('0x20'))[_0xd4b3('0x21')](socket);function respondWithStatusCode(_0x11d267,_0x1df170){_0x1df170=_0x1df170||0xcc;return function(_0x22e3a2){if(_0x22e3a2){return _0x11d267[_0xd4b3('0x22')](_0x1df170);}return _0x11d267[_0xd4b3('0x23')](_0x1df170)['end']();};}function respondWithResult(_0x51f961,_0xce5d15){_0xce5d15=_0xce5d15||0xc8;return function(_0xa68ac4){if(_0xa68ac4){return _0x51f961[_0xd4b3('0x23')](_0xce5d15)[_0xd4b3('0x24')](_0xa68ac4);}};}function respondWithFilteredResult(_0x1886ae,_0xdb2a44){return function(_0x4922ca){if(_0x4922ca){var _0x146e54=typeof _0xdb2a44['offset']==='undefined'&&typeof _0xdb2a44['limit']===_0xd4b3('0x25');var _0x2b0d80=_0x4922ca['count'];var _0x17e9d7=_0x146e54?0x0:_0xdb2a44[_0xd4b3('0x26')];var _0x4ecbec=_0x146e54?_0x4922ca[_0xd4b3('0x27')]:_0xdb2a44['offset']+_0xdb2a44['limit'];var _0x3a265e;if(_0x4ecbec>=_0x2b0d80){_0x4ecbec=_0x2b0d80;_0x3a265e=0xc8;}else{_0x3a265e=0xce;}_0x1886ae[_0xd4b3('0x23')](_0x3a265e);return _0x1886ae[_0xd4b3('0x28')](_0xd4b3('0x29'),_0x17e9d7+'-'+_0x4ecbec+'/'+_0x2b0d80)[_0xd4b3('0x24')](_0x4922ca);}return null;};}function patchUpdates(_0x5e8ea8){return function(_0x2bf7cf){try{jsonpatch[_0xd4b3('0x2a')](_0x2bf7cf,_0x5e8ea8,!![]);}catch(_0x592d65){return BPromise[_0xd4b3('0x2b')](_0x592d65);}return _0x2bf7cf[_0xd4b3('0x2c')]();};}function saveUpdates(_0x269001,_0x16a4a){return function(_0x2d7444){if(_0x2d7444){return _0x2d7444['update'](_0x269001)[_0xd4b3('0x2d')](function(_0x40380d){return _0x40380d;});}return null;};}function removeEntity(_0x55b9b0,_0x3b9cc9){return function(_0x1a39be){if(_0x1a39be){return _0x1a39be[_0xd4b3('0x2e')]()['then'](function(){var _0x5c604d=_0x1a39be[_0xd4b3('0x2f')]({'plain':!![]});var _0x21bf7b='SmsQueues';return db[_0xd4b3('0x30')][_0xd4b3('0x2e')]({'where':{'type':_0x21bf7b,'resourceId':_0x5c604d['id']}})[_0xd4b3('0x2d')](function(){return _0x1a39be;});})[_0xd4b3('0x2d')](function(){_0x55b9b0[_0xd4b3('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2093b3,_0x5c5c2a){return function(_0x227dcd){if(!_0x227dcd){_0x2093b3[_0xd4b3('0x22')](0x194);}return _0x227dcd;};}function handleError(_0x5b295e,_0xa5a297){_0xa5a297=_0xa5a297||0x1f4;return function(_0x5df9ce){logger[_0xd4b3('0x31')](_0x5df9ce[_0xd4b3('0x32')]);if(_0x5df9ce[_0xd4b3('0x33')]){delete _0x5df9ce[_0xd4b3('0x33')];}_0x5b295e[_0xd4b3('0x23')](_0xa5a297)[_0xd4b3('0x34')](_0x5df9ce);};}exports[_0xd4b3('0x35')]=function(_0x37431f,_0x3189bd){var _0x3bed6f={},_0x5b421d={},_0x311c7a={'count':0x0,'rows':[]};var _0x3e1994=_[_0xd4b3('0x36')](db[_0xd4b3('0x37')]['rawAttributes'],function(_0x42c571){return{'name':_0x42c571['fieldName'],'type':_0x42c571['type'][_0xd4b3('0x38')]};});_0x5b421d[_0xd4b3('0x39')]=_[_0xd4b3('0x36')](_0x3e1994,_0xd4b3('0x33'));_0x5b421d[_0xd4b3('0x3a')]=_['keys'](_0x37431f['query']);_0x5b421d[_0xd4b3('0x3b')]=_[_0xd4b3('0x3c')](_0x5b421d[_0xd4b3('0x39')],_0x5b421d[_0xd4b3('0x3a')]);_0x3bed6f[_0xd4b3('0x3d')]=_['intersection'](_0x5b421d[_0xd4b3('0x39')],qs[_0xd4b3('0x3e')](_0x37431f[_0xd4b3('0x3a')][_0xd4b3('0x3e')]));_0x3bed6f[_0xd4b3('0x3d')]=_0x3bed6f[_0xd4b3('0x3d')]['length']?_0x3bed6f[_0xd4b3('0x3d')]:_0x5b421d[_0xd4b3('0x39')];if(!_0x37431f['query'][_0xd4b3('0x3f')](_0xd4b3('0x40'))){_0x3bed6f[_0xd4b3('0x41')]=qs[_0xd4b3('0x41')](_0x37431f['query'][_0xd4b3('0x41')]);_0x3bed6f[_0xd4b3('0x26')]=qs['offset'](_0x37431f[_0xd4b3('0x3a')][_0xd4b3('0x26')]);}_0x3bed6f['order']=qs['sort'](_0x37431f[_0xd4b3('0x3a')]['sort']);_0x3bed6f[_0xd4b3('0x42')]=qs[_0xd4b3('0x3b')](_['pick'](_0x37431f[_0xd4b3('0x3a')],_0x5b421d[_0xd4b3('0x3b')]),_0x3e1994);if(_0x37431f[_0xd4b3('0x3a')][_0xd4b3('0x43')]){_0x3bed6f[_0xd4b3('0x42')]=_['merge'](_0x3bed6f[_0xd4b3('0x42')],{'$or':_[_0xd4b3('0x36')](_0x3e1994,function(_0x53a320){if(_0x53a320['type']!=='VIRTUAL'){var _0x55a37b={};_0x55a37b[_0x53a320['name']]={'$like':'%'+_0x37431f[_0xd4b3('0x3a')]['filter']+'%'};return _0x55a37b;}})});}_0x3bed6f=_[_0xd4b3('0x44')]({},_0x3bed6f,_0x37431f['options']);var _0x47455a={'where':_0x3bed6f[_0xd4b3('0x42')]};return db[_0xd4b3('0x37')][_0xd4b3('0x27')](_0x47455a)[_0xd4b3('0x2d')](function(_0x26159c){_0x311c7a[_0xd4b3('0x27')]=_0x26159c;if(_0x37431f['query'][_0xd4b3('0x45')]){_0x3bed6f[_0xd4b3('0x46')]=[{'all':!![]}];}return db[_0xd4b3('0x37')][_0xd4b3('0x47')](_0x3bed6f);})[_0xd4b3('0x2d')](function(_0x5e4630){_0x311c7a[_0xd4b3('0x48')]=_0x5e4630;return _0x311c7a;})[_0xd4b3('0x2d')](respondWithFilteredResult(_0x3189bd,_0x3bed6f))[_0xd4b3('0x49')](handleError(_0x3189bd,null));};exports[_0xd4b3('0x4a')]=function(_0x1b8c7f,_0x2d3685){var _0x3e30e3={'raw':!![],'where':{'id':_0x1b8c7f[_0xd4b3('0x4b')]['id']}},_0x44970a={};_0x44970a[_0xd4b3('0x39')]=_['keys'](db[_0xd4b3('0x37')][_0xd4b3('0x4c')]);_0x44970a[_0xd4b3('0x3a')]=_[_0xd4b3('0x4d')](_0x1b8c7f[_0xd4b3('0x3a')]);_0x44970a[_0xd4b3('0x3b')]=_[_0xd4b3('0x3c')](_0x44970a[_0xd4b3('0x39')],_0x44970a[_0xd4b3('0x3a')]);_0x3e30e3[_0xd4b3('0x3d')]=_[_0xd4b3('0x3c')](_0x44970a[_0xd4b3('0x39')],qs['fields'](_0x1b8c7f[_0xd4b3('0x3a')]['fields']));_0x3e30e3[_0xd4b3('0x3d')]=_0x3e30e3[_0xd4b3('0x3d')][_0xd4b3('0x4e')]?_0x3e30e3[_0xd4b3('0x3d')]:_0x44970a[_0xd4b3('0x39')];if(_0x1b8c7f[_0xd4b3('0x3a')][_0xd4b3('0x45')]){_0x3e30e3[_0xd4b3('0x46')]=[{'all':!![]}];}_0x3e30e3=_[_0xd4b3('0x44')]({},_0x3e30e3,_0x1b8c7f[_0xd4b3('0x4f')]);return db[_0xd4b3('0x37')][_0xd4b3('0x50')](_0x3e30e3)[_0xd4b3('0x2d')](handleEntityNotFound(_0x2d3685,null))[_0xd4b3('0x2d')](respondWithResult(_0x2d3685,null))[_0xd4b3('0x49')](handleError(_0x2d3685,null));};exports[_0xd4b3('0x51')]=function(_0x15ce94,_0x560a1f){return db['SmsQueue'][_0xd4b3('0x51')](_0x15ce94['body'],{})[_0xd4b3('0x2d')](function(_0x315de0){var _0x4fb0e2=_0x15ce94[_0xd4b3('0x52')][_0xd4b3('0x2f')]({'plain':!![]});if(!_0x4fb0e2)throw new Error(_0xd4b3('0x53'));if(_0x4fb0e2[_0xd4b3('0x54')]===_0xd4b3('0x52')){var _0x2dce82=_0x315de0['get']({'plain':!![]});var _0x3fcacd='SmsQueues';return db[_0xd4b3('0x55')][_0xd4b3('0x50')]({'where':{'name':_0x3fcacd,'userProfileId':_0x4fb0e2[_0xd4b3('0x56')]},'raw':!![]})[_0xd4b3('0x2d')](function(_0x218655){if(_0x218655&&_0x218655[_0xd4b3('0x57')]===0x0){return db['UserProfileResource'][_0xd4b3('0x51')]({'name':_0x2dce82[_0xd4b3('0x33')],'resourceId':_0x2dce82['id'],'type':_0x218655['name'],'sectionId':_0x218655['id']},{})[_0xd4b3('0x2d')](function(){return _0x315de0;});}else{return _0x315de0;}})[_0xd4b3('0x49')](function(_0x47ede9){logger[_0xd4b3('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47ede9);throw _0x47ede9;});}return _0x315de0;})[_0xd4b3('0x2d')](respondWithResult(_0x560a1f,0xc9))['catch'](handleError(_0x560a1f,null));};exports[_0xd4b3('0x58')]=function(_0x1d4565,_0x381508){if(_0x1d4565['body']['id']){delete _0x1d4565[_0xd4b3('0x59')]['id'];}return db[_0xd4b3('0x37')][_0xd4b3('0x50')]({'where':{'id':_0x1d4565[_0xd4b3('0x4b')]['id']}})[_0xd4b3('0x2d')](handleEntityNotFound(_0x381508,null))[_0xd4b3('0x2d')](saveUpdates(_0x1d4565[_0xd4b3('0x59')],null))[_0xd4b3('0x2d')](respondWithResult(_0x381508,null))[_0xd4b3('0x49')](handleError(_0x381508,null));};exports['destroy']=function(_0x21f39e,_0xedd5ca){return db[_0xd4b3('0x37')][_0xd4b3('0x50')]({'where':{'id':_0x21f39e[_0xd4b3('0x4b')]['id']}})[_0xd4b3('0x2d')](handleEntityNotFound(_0xedd5ca,null))[_0xd4b3('0x2d')](removeEntity(_0xedd5ca,null))['catch'](handleError(_0xedd5ca,null));};exports[_0xd4b3('0x5a')]=function(_0x1f92f5,_0x34ccad){return db[_0xd4b3('0x37')][_0xd4b3('0x5a')]()[_0xd4b3('0x2d')](respondWithResult(_0x34ccad,null))[_0xd4b3('0x49')](handleError(_0x34ccad,null));};exports['getMembers']=function(_0x557bc2,_0x3911c8,_0x30b8ab){var _0xf452b2={'raw':!![],'where':{}},_0x33a528={},_0x215b6a;return db[_0xd4b3('0x37')][_0xd4b3('0x5b')]({'where':{'id':_0x557bc2[_0xd4b3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3911c8,null))['then'](function(_0x2530a4){if(_0x2530a4){_0x215b6a=_0x2530a4[_0xd4b3('0x2f')]({'plain':!![]});_0x33a528[_0xd4b3('0x39')]=_['keys'](db[_0xd4b3('0x5c')][_0xd4b3('0x4c')]);_0x33a528['query']=_[_0xd4b3('0x4d')](_0x557bc2[_0xd4b3('0x3a')]);_0x33a528[_0xd4b3('0x3b')]=_['intersection'](_0x33a528[_0xd4b3('0x39')],_0x33a528[_0xd4b3('0x3a')]);_0xf452b2[_0xd4b3('0x3d')]=_[_0xd4b3('0x3c')](_0x33a528['model'],qs[_0xd4b3('0x3e')](_0x557bc2[_0xd4b3('0x3a')][_0xd4b3('0x3e')]));_0xf452b2[_0xd4b3('0x3d')]=_0xf452b2[_0xd4b3('0x3d')]['length']?_0xf452b2[_0xd4b3('0x3d')]:_0x33a528[_0xd4b3('0x39')];if(!_0x557bc2['query'][_0xd4b3('0x3f')]('nolimit')){_0xf452b2[_0xd4b3('0x41')]=qs['limit'](_0x557bc2[_0xd4b3('0x3a')][_0xd4b3('0x41')]);_0xf452b2[_0xd4b3('0x26')]=qs[_0xd4b3('0x26')](_0x557bc2['query'][_0xd4b3('0x26')]);}_0xf452b2[_0xd4b3('0x5d')]=qs[_0xd4b3('0x5e')](_0x557bc2[_0xd4b3('0x3a')][_0xd4b3('0x5e')]);_0xf452b2[_0xd4b3('0x42')]=qs[_0xd4b3('0x3b')](_[_0xd4b3('0x5f')](_0x557bc2[_0xd4b3('0x3a')],_0x33a528['filters']));_0xf452b2['where'][_0xd4b3('0x60')]=_0x2530a4['id'];if(_0x557bc2[_0xd4b3('0x3a')]['filter']){_0xf452b2[_0xd4b3('0x42')]=_[_0xd4b3('0x44')](_0xf452b2['where'],{'$or':_[_0xd4b3('0x36')](_0xf452b2[_0xd4b3('0x3d')],function(_0x54f587){var _0x162c40={};_0x162c40[_0x54f587]={'$like':'%'+_0x557bc2[_0xd4b3('0x3a')][_0xd4b3('0x43')]+'%'};return _0x162c40;})});}_0xf452b2=_[_0xd4b3('0x44')]({},_0xf452b2,_0x557bc2[_0xd4b3('0x4f')]);return db[_0xd4b3('0x5c')][_0xd4b3('0x47')](_0xf452b2);}})['then'](function(_0x4c2f72){if(_0x4c2f72){return db[_0xd4b3('0x61')][_0xd4b3('0x62')]({'where':{'id':_['map'](_0x4c2f72,_0xd4b3('0x63')),'role':_0xd4b3('0x64')},'attributes':['id',_0xd4b3('0x33'),_0xd4b3('0x65'),'updatedAt',_0xd4b3('0x66')]});}})[_0xd4b3('0x2d')](function(_0x1e6246){if(_0x1e6246){return{'count':_0x1e6246[_0xd4b3('0x27')],'rows':_[_0xd4b3('0x36')](_0x1e6246[_0xd4b3('0x48')],function(_0xc5ca4b){return{'membername':_0xc5ca4b[_0xd4b3('0x33')],'UserId':_0xc5ca4b['id'],'queue_name':_0x215b6a[_0xd4b3('0x33')],'SmsQueueId':_0x215b6a['id'],'interface':util[_0xd4b3('0x67')](_0xd4b3('0x68'),_0xd4b3('0x69'),_0xc5ca4b['name']),'penalty':0x0,'paused':_0xc5ca4b['smsPause'],'createdAt':_0xc5ca4b[_0xd4b3('0x66')],'updatedAt':_0xc5ca4b[_0xd4b3('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd4b3('0x2d')](respondWithFilteredResult(_0x3911c8,_0xf452b2))[_0xd4b3('0x49')](handleError(_0x3911c8,null));};exports[_0xd4b3('0x6b')]=function(_0x5b83d6,_0x45193c,_0x564e78){var _0x118c47={};var _0x1b5692={};var _0x1af5d3;var _0x39ddf4;return db[_0xd4b3('0x37')][_0xd4b3('0x5b')]({'where':{'id':_0x5b83d6[_0xd4b3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x45193c,null))['then'](function(_0x162a3c){if(_0x162a3c){_0x1af5d3=_0x162a3c;_0x1b5692[_0xd4b3('0x39')]=_[_0xd4b3('0x4d')](db[_0xd4b3('0x6c')][_0xd4b3('0x4c')]);_0x1b5692[_0xd4b3('0x3a')]=_[_0xd4b3('0x4d')](_0x5b83d6[_0xd4b3('0x3a')]);_0x1b5692[_0xd4b3('0x3b')]=_[_0xd4b3('0x3c')](_0x1b5692[_0xd4b3('0x39')],_0x1b5692['query']);_0x118c47[_0xd4b3('0x3d')]=_[_0xd4b3('0x3c')](_0x1b5692[_0xd4b3('0x39')],qs[_0xd4b3('0x3e')](_0x5b83d6[_0xd4b3('0x3a')][_0xd4b3('0x3e')]));_0x118c47[_0xd4b3('0x3d')]=_0x118c47[_0xd4b3('0x3d')]['length']?_0x118c47[_0xd4b3('0x3d')]:_0x1b5692[_0xd4b3('0x39')];_0x118c47[_0xd4b3('0x5d')]=qs[_0xd4b3('0x5e')](_0x5b83d6[_0xd4b3('0x3a')][_0xd4b3('0x5e')]);_0x118c47[_0xd4b3('0x42')]=qs[_0xd4b3('0x3b')](_[_0xd4b3('0x5f')](_0x5b83d6[_0xd4b3('0x3a')],_0x1b5692[_0xd4b3('0x3b')]));if(_0x5b83d6['query'][_0xd4b3('0x43')]){_0x118c47[_0xd4b3('0x42')]=_[_0xd4b3('0x44')](_0x118c47[_0xd4b3('0x42')],{'$or':_[_0xd4b3('0x36')](_0x118c47[_0xd4b3('0x3d')],function(_0x23f1c7){var _0xdd38d6={};_0xdd38d6[_0x23f1c7]={'$like':'%'+_0x5b83d6[_0xd4b3('0x3a')][_0xd4b3('0x43')]+'%'};return _0xdd38d6;})});}_0x118c47=_[_0xd4b3('0x44')]({},_0x118c47,_0x5b83d6[_0xd4b3('0x4f')]);return _0x1af5d3['getTeams'](_0x118c47);}})[_0xd4b3('0x2d')](function(_0x1eb483){if(_0x1eb483){_0x39ddf4=_0x1eb483[_0xd4b3('0x4e')];if(!_0x5b83d6[_0xd4b3('0x3a')]['hasOwnProperty']('nolimit')){_0x118c47[_0xd4b3('0x41')]=qs[_0xd4b3('0x41')](_0x5b83d6['query']['limit']);_0x118c47[_0xd4b3('0x26')]=qs[_0xd4b3('0x26')](_0x5b83d6[_0xd4b3('0x3a')][_0xd4b3('0x26')]);}return _0x1af5d3['getTeams'](_0x118c47);}})['then'](function(_0x5c1a12){if(_0x5c1a12){return _0x5c1a12?{'count':_0x39ddf4,'rows':_0x5c1a12}:null;}})['then'](respondWithResult(_0x45193c,null))[_0xd4b3('0x49')](handleError(_0x45193c,null));};exports[_0xd4b3('0x6d')]=function(_0x40385a,_0x4ce89c,_0x4afe2f){var _0x26277d=_0x40385a[_0xd4b3('0x59')]['ids'];return db[_0xd4b3('0x6c')]['findAll']({'where':{'id':_0x26277d},'attributes':['id'],'include':[{'model':db[_0xd4b3('0x61')],'as':_0xd4b3('0x6e'),'attributes':['id',_0xd4b3('0x33'),'online','voicePause','interface'],'raw':!![]}]})['then'](function(_0x15d626){if(_0x15d626){var _0x51a67c=_['flatMap'](_0x15d626,function(_0x17ccb3){var _0x555a61=_0x17ccb3[_0xd4b3('0x2f')]({'plain':!![]});return _0x555a61[_0xd4b3('0x6e')];});return db[_0xd4b3('0x37')]['find']({'where':{'id':_0x40385a[_0xd4b3('0x4b')]['id']}})[_0xd4b3('0x2d')](function(_0xd45142){return db[_0xd4b3('0x6f')]['transaction'](function(_0x3e6274){return _0xd45142['addTeams'](_0x26277d,{'transaction':_0x3e6274})[_0xd4b3('0x2d')](function(){return BPromise[_0xd4b3('0x70')](_0x51a67c,function(_0x325719){return db[_0xd4b3('0x5c')][_0xd4b3('0x71')]({'where':{'UserId':_0x325719['id'],'SmsQueueId':_0x40385a[_0xd4b3('0x4b')]['id']},'transaction':_0x3e6274});});})[_0xd4b3('0x2d')](function(){_0x51a67c[_0xd4b3('0x72')](function(_0xb2b44f){socket[_0xd4b3('0x73')](_0xd4b3('0x74'),{'UserId':_0xb2b44f['id'],'SmsQueueId':_0xd45142['id']});});});});});}})[_0xd4b3('0x2d')](respondWithStatusCode(_0x4ce89c,null))['catch'](handleError(_0x4ce89c,null));};exports['removeTeams']=function(_0x4b736d,_0x4ff7fe,_0x136f9d){return db[_0xd4b3('0x6c')][_0xd4b3('0x47')]({'where':{'id':_0x4b736d['query'][_0xd4b3('0x75')]},'attributes':['id'],'include':[{'model':db[_0xd4b3('0x61')],'as':_0xd4b3('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xd4b3('0x2d')](handleEntityNotFound(_0x4ff7fe,null))['then'](function(_0x59af34){var _0x1ab3e9=_[_0xd4b3('0x36')](_0x59af34,'id');var _0x1103c0=[];var _0x43b505=[];var _0x1c733f=squel[_0xd4b3('0x76')]();_0x1c733f[_0xd4b3('0x77')](_0xd4b3('0x78'))[_0xd4b3('0x79')](_0xd4b3('0x7a'),'tq')[_0xd4b3('0x7b')](_0xd4b3('0x7c'),'ut',_0xd4b3('0x7d'))[_0xd4b3('0x42')](_0xd4b3('0x7e'),_0x4b736d[_0xd4b3('0x4b')]['id']);for(var _0x93d3c8=0x0;_0x93d3c8<_0x59af34['length'];_0x93d3c8+=0x1){let _0x2577a6=_0x59af34[_0x93d3c8];for(var _0x20a803=0x0;_0x20a803<_0x2577a6[_0xd4b3('0x6e')]['length'];_0x20a803+=0x1){let _0x1db13f=_0x2577a6[_0xd4b3('0x6e')][_0x20a803];var _0x4a3c18=_0x1c733f[_0xd4b3('0x7f')]();_0x4a3c18['where'](_0xd4b3('0x80'),_0x1db13f['id']);_0x43b505[_0xd4b3('0x81')](db[_0xd4b3('0x6f')]['query'](_0x4a3c18['toString'](),{'type':db[_0xd4b3('0x6f')]['QueryTypes'][_0xd4b3('0x82')]})['then'](function(_0x41542e){if(_0x41542e['length']===0x1){return _0x1db13f['id'];}else{var _0x3e816a=_[_0xd4b3('0x83')](_[_0xd4b3('0x36')](_0x41542e,'TeamId'),function(_0x5ae48d){return _[_0xd4b3('0x84')](_0x1ab3e9,_0x5ae48d);});if(_0x3e816a){return _0x1db13f['id'];}}}));}}return BPromise[_0xd4b3('0x85')](_0x43b505)[_0xd4b3('0x2d')](function(_0x6e34ad){_0x1103c0=_(_0x1103c0)[_0xd4b3('0x86')](_0x6e34ad)[_0xd4b3('0x87')]()[_0xd4b3('0x88')]();return db['SmsQueue'][_0xd4b3('0x50')]({'where':{'id':_0x4b736d['params']['id']}})[_0xd4b3('0x2d')](function(_0x244b76){return db[_0xd4b3('0x6f')][_0xd4b3('0x89')](function(_0x54b407){return _0x244b76[_0xd4b3('0x8a')](_0x4b736d['query'][_0xd4b3('0x75')],{'transaction':_0x54b407})[_0xd4b3('0x2d')](function(){if(!_[_0xd4b3('0x8b')](_0x1103c0)){return _0x244b76['removeAgents'](_0x1103c0,{'transaction':_0x54b407});}})['then'](function(){_0x1103c0[_0xd4b3('0x72')](function(_0x17b09c){socket[_0xd4b3('0x73')](_0xd4b3('0x8c'),{'UserId':_0x17b09c,'SmsQueueId':_0x244b76['id']});});});});});});})[_0xd4b3('0x2d')](respondWithStatusCode(_0x4ff7fe,null))[_0xd4b3('0x49')](handleError(_0x4ff7fe,null));};exports[_0xd4b3('0x8d')]=function(_0x57a89b,_0x555d16,_0x41a17c){return db[_0xd4b3('0x37')][_0xd4b3('0x50')]({'where':{'id':_0x57a89b[_0xd4b3('0x4b')]['id']}})[_0xd4b3('0x2d')](handleEntityNotFound(_0x555d16,null))[_0xd4b3('0x2d')](function(_0x1e7b3f){if(_0x1e7b3f){return _0x1e7b3f[_0xd4b3('0x8d')](_0x57a89b[_0xd4b3('0x59')]['ids'],_[_0xd4b3('0x8e')](_0x57a89b[_0xd4b3('0x59')],['ids','id'])||{})[_0xd4b3('0x8f')](function(_0x1633c2){for(var _0x276ed2=0x0;_0x276ed2<_0x57a89b['body']['ids'][_0xd4b3('0x4e')];_0x276ed2+=0x1){socket['emit'](_0xd4b3('0x74'),{'UserId':Number(_0x57a89b[_0xd4b3('0x59')][_0xd4b3('0x75')][_0x276ed2]),'SmsQueueId':Number(_0x57a89b[_0xd4b3('0x4b')]['id'])});}return _0x1633c2;});}})[_0xd4b3('0x2d')](respondWithResult(_0x555d16,null))[_0xd4b3('0x49')](handleError(_0x555d16,null));};exports[_0xd4b3('0x90')]=function(_0x36134e,_0x4aa586,_0x4fa66c){return db[_0xd4b3('0x37')][_0xd4b3('0x50')]({'where':{'id':_0x36134e[_0xd4b3('0x4b')]['id']}})[_0xd4b3('0x2d')](handleEntityNotFound(_0x4aa586,null))['then'](function(_0x201a0e){if(_0x201a0e){return _0x201a0e[_0xd4b3('0x90')](_0x36134e[_0xd4b3('0x3a')][_0xd4b3('0x75')])['then'](function(){if(_[_0xd4b3('0x91')](_0x36134e[_0xd4b3('0x3a')][_0xd4b3('0x75')])){for(var _0x9c76a7=0x0;_0x9c76a7<_0x36134e['query'][_0xd4b3('0x75')][_0xd4b3('0x4e')];_0x9c76a7+=0x1){socket['emit'](_0xd4b3('0x8c'),{'UserId':Number(_0x36134e[_0xd4b3('0x3a')][_0xd4b3('0x75')][_0x9c76a7]),'SmsQueueId':Number(_0x36134e[_0xd4b3('0x4b')]['id'])});}}else{socket[_0xd4b3('0x73')](_0xd4b3('0x8c'),{'UserId':Number(_0x36134e[_0xd4b3('0x3a')][_0xd4b3('0x75')]),'SmsQueueId':Number(_0x36134e[_0xd4b3('0x4b')]['id'])});}});}})[_0xd4b3('0x2d')](respondWithStatusCode(_0x4aa586,null))[_0xd4b3('0x49')](handleError(_0x4aa586,null));};exports[_0xd4b3('0x92')]=function(_0x337808,_0x518db9,_0x136a35){var _0x513b1a={};var _0x32b6b={};var _0x1e8b1e;var _0x3f9bf6;return db[_0xd4b3('0x37')][_0xd4b3('0x5b')]({'where':{'id':_0x337808[_0xd4b3('0x4b')]['id']}})[_0xd4b3('0x2d')](handleEntityNotFound(_0x518db9,null))[_0xd4b3('0x2d')](function(_0x48f0b4){if(_0x48f0b4){_0x1e8b1e=_0x48f0b4;_0x32b6b[_0xd4b3('0x39')]=_[_0xd4b3('0x4d')](db[_0xd4b3('0x61')][_0xd4b3('0x4c')]);_0x32b6b[_0xd4b3('0x3a')]=_['keys'](_0x337808['query']);_0x32b6b[_0xd4b3('0x3b')]=_[_0xd4b3('0x3c')](_0x32b6b[_0xd4b3('0x39')],_0x32b6b[_0xd4b3('0x3a')]);_0x513b1a[_0xd4b3('0x3d')]=_[_0xd4b3('0x3c')](_0x32b6b['model'],qs[_0xd4b3('0x3e')](_0x337808[_0xd4b3('0x3a')]['fields']));_0x513b1a[_0xd4b3('0x3d')]=_0x513b1a['attributes'][_0xd4b3('0x4e')]?_0x513b1a[_0xd4b3('0x3d')]:_0x32b6b['model'];_0x513b1a[_0xd4b3('0x5d')]=qs['sort'](_0x337808[_0xd4b3('0x3a')]['sort']);_0x513b1a[_0xd4b3('0x42')]=qs['filters'](_[_0xd4b3('0x5f')](_0x337808[_0xd4b3('0x3a')],_0x32b6b['filters']));if(_0x337808[_0xd4b3('0x3a')][_0xd4b3('0x43')]){_0x513b1a[_0xd4b3('0x42')]=_[_0xd4b3('0x44')](_0x513b1a['where'],{'$or':_[_0xd4b3('0x36')](_0x513b1a[_0xd4b3('0x3d')],function(_0x526a4b){var _0x4ac384={};_0x4ac384[_0x526a4b]={'$like':'%'+_0x337808[_0xd4b3('0x3a')][_0xd4b3('0x43')]+'%'};return _0x4ac384;})});}_0x513b1a=_[_0xd4b3('0x44')]({},_0x513b1a,_0x337808['options']);return _0x1e8b1e[_0xd4b3('0x92')](_0x513b1a);}})['then'](function(_0x18ebde){if(_0x18ebde){_0x3f9bf6=_0x18ebde[_0xd4b3('0x4e')];if(!_0x337808[_0xd4b3('0x3a')][_0xd4b3('0x3f')](_0xd4b3('0x40'))){_0x513b1a[_0xd4b3('0x41')]=qs[_0xd4b3('0x41')](_0x337808[_0xd4b3('0x3a')][_0xd4b3('0x41')]);_0x513b1a['offset']=qs[_0xd4b3('0x26')](_0x337808[_0xd4b3('0x3a')][_0xd4b3('0x26')]);}return _0x1e8b1e[_0xd4b3('0x92')](_0x513b1a);}})['then'](function(_0x57cbdd){if(_0x57cbdd){return _0x57cbdd?{'count':_0x3f9bf6,'rows':_0x57cbdd}:null;}})[_0xd4b3('0x2d')](respondWithResult(_0x518db9,null))['catch'](handleError(_0x518db9,null));};
\ No newline at end of file
index cb27680..03595fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3972=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4d0054,_0x543be4){var _0x28bcad=function(_0x32f890){while(--_0x32f890){_0x4d0054['push'](_0x4d0054['shift']());}};_0x28bcad(++_0x543be4);}(_0x3972,0x100));var _0x2397=function(_0xed405,_0x3fa3c4){_0xed405=_0xed405-0x0;var _0x47566c=_0x3972[_0xed405];return _0x47566c;};'use strict';var EventEmitter=require(_0x2397('0x0'));var SmsQueue=require(_0x2397('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x2397('0x2')](0x0);var events={'afterCreate':_0x2397('0x3'),'afterUpdate':_0x2397('0x4'),'afterDestroy':_0x2397('0x5')};function emitEvent(_0x4f3689){return function(_0x9a1aa6,_0x2662fd,_0xd3198b){SmsQueueEvents[_0x2397('0x6')](_0x4f3689+':'+_0x9a1aa6['id'],_0x9a1aa6);SmsQueueEvents[_0x2397('0x6')](_0x4f3689,_0x9a1aa6);_0xd3198b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x2397('0x7')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x4f75=['emit','hasOwnProperty','hook','events','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove'];(function(_0x46c7c8,_0x1d62c9){var _0x3b7db4=function(_0x3f387b){while(--_0x3f387b){_0x46c7c8['push'](_0x46c7c8['shift']());}};_0x3b7db4(++_0x1d62c9);}(_0x4f75,0xfd));var _0x54f7=function(_0x3eaa19,_0x54e8e8){_0x3eaa19=_0x3eaa19-0x0;var _0x139d02=_0x4f75[_0x3eaa19];return _0x139d02;};'use strict';var EventEmitter=require(_0x54f7('0x0'));var SmsQueue=require(_0x54f7('0x1'))['db'][_0x54f7('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x54f7('0x3')](0x0);var events={'afterCreate':_0x54f7('0x4'),'afterUpdate':_0x54f7('0x5'),'afterDestroy':_0x54f7('0x6')};function emitEvent(_0x1ba3fa){return function(_0x443d20,_0x20aa61,_0x507abe){SmsQueueEvents['emit'](_0x1ba3fa+':'+_0x443d20['id'],_0x443d20);SmsQueueEvents[_0x54f7('0x7')](_0x1ba3fa,_0x443d20);_0x507abe(null);};}for(var e in events){if(events[_0x54f7('0x8')](e)){var event=events[e];SmsQueue[_0x54f7('0x9')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index cb4e703..1817f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c1=['define','SmsQueue','sms_queues','util','api','bluebird','request-promise','path','../../config/environment'];(function(_0x5a3af1,_0x397a79){var _0xbaa54c=function(_0x589b72){while(--_0x589b72){_0x5a3af1['push'](_0x5a3af1['shift']());}};_0xbaa54c(++_0x397a79);}(_0x47c1,0xa5));var _0x147c=function(_0x429f52,_0x1dc067){_0x429f52=_0x429f52-0x0;var _0x20f80b=_0x47c1[_0x429f52];return _0x20f80b;};'use strict';var _=require('lodash');var util=require(_0x147c('0x0'));var logger=require('../../config/logger')(_0x147c('0x1'));var moment=require('moment');var BPromise=require(_0x147c('0x2'));var rp=require(_0x147c('0x3'));var fs=require('fs');var path=require(_0x147c('0x4'));var rimraf=require('rimraf');var config=require(_0x147c('0x5'));var attributes=require('./smsQueue.attributes');module['exports']=function(_0x495207,_0x2c3b11){return _0x495207[_0x147c('0x6')](_0x147c('0x7'),attributes,{'tableName':_0x147c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x32ac=['bluebird','path','rimraf','../../config/environment','exports','define','sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0x32ac,0x73));var _0xc32a=function(_0x1a157f,_0xfd6ee6){_0x1a157f=_0x1a157f-0x0;var _0x539479=_0x32ac[_0x1a157f];return _0x539479;};'use strict';var _=require(_0xc32a('0x0'));var util=require(_0xc32a('0x1'));var logger=require(_0xc32a('0x2'))(_0xc32a('0x3'));var moment=require(_0xc32a('0x4'));var BPromise=require(_0xc32a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc32a('0x6'));var rimraf=require(_0xc32a('0x7'));var config=require(_0xc32a('0x8'));var attributes=require('./smsQueue.attributes');module[_0xc32a('0x9')]=function(_0x955460,_0x20fcdd){return _0x955460[_0xc32a('0xa')]('SmsQueue',attributes,{'tableName':_0xc32a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c453dc3..c18dcc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b4=['redis','localhost','socket.io-emitter','request','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','SmsQueue,\x20%s,\x20%s','message','info','result','GetSmsQueue','SmsQueue','findAll','options','raw','limit','include','map','model','attributes','catch','ShowSmsQueue','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x59cefb,_0x3cdd8e){var _0x5b42ab=function(_0x2b683b){while(--_0x2b683b){_0x59cefb['push'](_0x59cefb['shift']());}};_0x5b42ab(++_0x3cdd8e);}(_0x14b4,0xe2));var _0x414b=function(_0x174961,_0x45ad0f){_0x174961=_0x174961-0x0;var _0x948066=_0x14b4[_0x174961];return _0x948066;};'use strict';var _=require(_0x414b('0x0'));var util=require(_0x414b('0x1'));var moment=require(_0x414b('0x2'));var BPromise=require(_0x414b('0x3'));var rs=require(_0x414b('0x4'));var fs=require('fs');var Redis=require(_0x414b('0x5'));var db=require(_0x414b('0x6'))['db'];var utils=require(_0x414b('0x7'));var logger=require(_0x414b('0x8'))(_0x414b('0x9'));var config=require(_0x414b('0xa'));var jayson=require(_0x414b('0xb'));var client=jayson[_0x414b('0xc')][_0x414b('0xd')]({'port':0x232a});config[_0x414b('0xe')]=_['defaults'](config[_0x414b('0xe')],{'host':_0x414b('0xf'),'port':0x18eb});var socket=require(_0x414b('0x10'))(new Redis(config['redis']));require('./smsQueue.socket')['register'](socket);function respondWithRpcPromise(_0x19c913,_0x13a427,_0x4470f5){return new BPromise(function(_0x4905e5,_0x346131){return client[_0x414b('0x11')](_0x19c913,_0x4470f5)['then'](function(_0x53d671){logger['info']('SmsQueue,\x20%s,\x20%s',_0x13a427,_0x414b('0x12'));logger[_0x414b('0x13')](_0x414b('0x14'),_0x13a427,_0x414b('0x12'),JSON[_0x414b('0x15')](_0x53d671));if(_0x53d671['error']){if(_0x53d671['error']['code']===0x1f4){logger[_0x414b('0x16')](_0x414b('0x17'),_0x13a427,_0x53d671['error'][_0x414b('0x18')]);return _0x346131(_0x53d671[_0x414b('0x16')][_0x414b('0x18')]);}logger[_0x414b('0x16')](_0x414b('0x17'),_0x13a427,_0x53d671['error'][_0x414b('0x18')]);return _0x4905e5(_0x53d671['error'][_0x414b('0x18')]);}else{logger[_0x414b('0x19')](_0x414b('0x17'),_0x13a427,_0x414b('0x12'));_0x4905e5(_0x53d671[_0x414b('0x1a')][_0x414b('0x18')]);}})['catch'](function(_0x2d22e8){logger[_0x414b('0x16')](_0x414b('0x17'),_0x13a427,_0x2d22e8);_0x346131(_0x2d22e8);});});}exports[_0x414b('0x1b')]=function(_0xc6f8a5){var _0x1d6d1c=this;return new Promise(function(_0x2c0b5f,_0x3471d9){return db[_0x414b('0x1c')][_0x414b('0x1d')]({'raw':_0xc6f8a5[_0x414b('0x1e')]?_0xc6f8a5[_0x414b('0x1e')][_0x414b('0x1f')]===undefined?!![]:![]:!![],'where':_0xc6f8a5[_0x414b('0x1e')]?_0xc6f8a5[_0x414b('0x1e')]['where']||null:null,'attributes':_0xc6f8a5[_0x414b('0x1e')]?_0xc6f8a5['options']['attributes']||null:null,'limit':_0xc6f8a5[_0x414b('0x1e')]?_0xc6f8a5[_0x414b('0x1e')][_0x414b('0x20')]||null:null,'include':_0xc6f8a5[_0x414b('0x1e')]?_0xc6f8a5[_0x414b('0x1e')][_0x414b('0x21')]?_[_0x414b('0x22')](_0xc6f8a5[_0x414b('0x1e')][_0x414b('0x21')],function(_0x5e6b65){return{'model':db[_0x5e6b65[_0x414b('0x23')]],'as':_0x5e6b65['as'],'attributes':_0x5e6b65[_0x414b('0x24')],'include':_0x5e6b65[_0x414b('0x21')]?_[_0x414b('0x22')](_0x5e6b65['include'],function(_0x4b8ce7){return{'model':db[_0x4b8ce7['model']],'as':_0x4b8ce7['as'],'attributes':_0x4b8ce7['attributes'],'include':_0x4b8ce7[_0x414b('0x21')]?_['map'](_0x4b8ce7[_0x414b('0x21')],function(_0x21dfc8){return{'model':db[_0x21dfc8[_0x414b('0x23')]],'as':_0x21dfc8['as'],'attributes':_0x21dfc8[_0x414b('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x261148){logger['info'](_0x414b('0x1b'),_0xc6f8a5);logger[_0x414b('0x13')](_0x414b('0x1b'),_0xc6f8a5,JSON[_0x414b('0x15')](_0x261148));_0x2c0b5f(_0x261148);})[_0x414b('0x25')](function(_0x5309a1){logger[_0x414b('0x16')](_0x414b('0x1b'),_0x5309a1[_0x414b('0x18')],_0xc6f8a5);_0x3471d9(_0x1d6d1c['error'](0x1f4,_0x5309a1[_0x414b('0x18')]));});});};exports[_0x414b('0x26')]=function(_0x46b407){var _0x5835=this;return new Promise(function(_0x52dc25,_0x18782f){return db[_0x414b('0x1c')]['find']({'raw':_0x46b407['options']?_0x46b407[_0x414b('0x1e')][_0x414b('0x1f')]===undefined?!![]:![]:!![],'where':_0x46b407['options']?_0x46b407['options']['where']||null:null,'attributes':_0x46b407[_0x414b('0x1e')]?_0x46b407[_0x414b('0x1e')]['attributes']||null:null,'include':_0x46b407[_0x414b('0x1e')]?_0x46b407[_0x414b('0x1e')][_0x414b('0x21')]?_[_0x414b('0x22')](_0x46b407[_0x414b('0x1e')]['include'],function(_0x2c2572){return{'model':db[_0x2c2572[_0x414b('0x23')]],'as':_0x2c2572['as'],'attributes':_0x2c2572[_0x414b('0x24')],'include':_0x2c2572[_0x414b('0x21')]?_[_0x414b('0x22')](_0x2c2572[_0x414b('0x21')],function(_0x5a04b9){return{'model':db[_0x5a04b9[_0x414b('0x23')]],'as':_0x5a04b9['as'],'attributes':_0x5a04b9['attributes'],'include':_0x5a04b9[_0x414b('0x21')]?_[_0x414b('0x22')](_0x5a04b9[_0x414b('0x21')],function(_0x324a69){return{'model':db[_0x324a69[_0x414b('0x23')]],'as':_0x324a69['as'],'attributes':_0x324a69[_0x414b('0x24')]};}):[]};}):[]};}):[]:[]})[_0x414b('0x27')](function(_0x204ebe){logger[_0x414b('0x19')]('ShowSmsQueue',_0x46b407);logger[_0x414b('0x13')]('ShowSmsQueue',_0x46b407,JSON[_0x414b('0x15')](_0x204ebe));_0x52dc25(_0x204ebe);})[_0x414b('0x25')](function(_0x182160){logger[_0x414b('0x16')](_0x414b('0x26'),_0x182160[_0x414b('0x18')],_0x46b407);_0x18782f(_0x5835[_0x414b('0x16')](0x1f4,_0x182160[_0x414b('0x18')]));});});};
\ No newline at end of file
+var _0x49d9=['message','result','catch','GetSmsQueue','SmsQueue','options','raw','where','attributes','limit','include','map','model','then','ShowSmsQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','defaults','redis','./smsQueue.socket','register','request','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','code','error'];(function(_0x2a26e5,_0x30ed6f){var _0x5233da=function(_0x4f15ce){while(--_0x4f15ce){_0x2a26e5['push'](_0x2a26e5['shift']());}};_0x5233da(++_0x30ed6f);}(_0x49d9,0x100));var _0x949d=function(_0x1224f6,_0xcb1f7a){_0x1224f6=_0x1224f6-0x0;var _0x5beadc=_0x49d9[_0x1224f6];return _0x5beadc;};'use strict';var _=require('lodash');var util=require(_0x949d('0x0'));var moment=require(_0x949d('0x1'));var BPromise=require(_0x949d('0x2'));var rs=require(_0x949d('0x3'));var fs=require('fs');var Redis=require(_0x949d('0x4'));var db=require(_0x949d('0x5'))['db'];var utils=require(_0x949d('0x6'));var logger=require(_0x949d('0x7'))('rpc');var config=require(_0x949d('0x8'));var jayson=require(_0x949d('0x9'));var client=jayson[_0x949d('0xa')]['http']({'port':0x232a});config['redis']=_[_0x949d('0xb')](config[_0x949d('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x949d('0xd'))[_0x949d('0xe')](socket);function respondWithRpcPromise(_0x5145cd,_0x2af3d2,_0x3998ad){return new BPromise(function(_0x2627b5,_0x2288bd){return client[_0x949d('0xf')](_0x5145cd,_0x3998ad)['then'](function(_0x1ac412){logger[_0x949d('0x10')](_0x949d('0x11'),_0x2af3d2,_0x949d('0x12'));logger[_0x949d('0x13')](_0x949d('0x14'),_0x2af3d2,'request\x20sent',JSON[_0x949d('0x15')](_0x1ac412));if(_0x1ac412['error']){if(_0x1ac412['error'][_0x949d('0x16')]===0x1f4){logger['error'](_0x949d('0x11'),_0x2af3d2,_0x1ac412[_0x949d('0x17')]['message']);return _0x2288bd(_0x1ac412[_0x949d('0x17')][_0x949d('0x18')]);}logger['error'](_0x949d('0x11'),_0x2af3d2,_0x1ac412[_0x949d('0x17')][_0x949d('0x18')]);return _0x2627b5(_0x1ac412['error'][_0x949d('0x18')]);}else{logger['info']('SmsQueue,\x20%s,\x20%s',_0x2af3d2,'request\x20sent');_0x2627b5(_0x1ac412[_0x949d('0x19')]['message']);}})[_0x949d('0x1a')](function(_0x42f15b){logger[_0x949d('0x17')](_0x949d('0x11'),_0x2af3d2,_0x42f15b);_0x2288bd(_0x42f15b);});});}exports[_0x949d('0x1b')]=function(_0x56cc89){var _0x5d11fd=this;return new Promise(function(_0xb610cb,_0x550373){return db[_0x949d('0x1c')]['findAll']({'raw':_0x56cc89[_0x949d('0x1d')]?_0x56cc89[_0x949d('0x1d')][_0x949d('0x1e')]===undefined?!![]:![]:!![],'where':_0x56cc89[_0x949d('0x1d')]?_0x56cc89[_0x949d('0x1d')][_0x949d('0x1f')]||null:null,'attributes':_0x56cc89[_0x949d('0x1d')]?_0x56cc89[_0x949d('0x1d')][_0x949d('0x20')]||null:null,'limit':_0x56cc89[_0x949d('0x1d')]?_0x56cc89[_0x949d('0x1d')][_0x949d('0x21')]||null:null,'include':_0x56cc89['options']?_0x56cc89[_0x949d('0x1d')][_0x949d('0x22')]?_[_0x949d('0x23')](_0x56cc89['options'][_0x949d('0x22')],function(_0x2d24f3){return{'model':db[_0x2d24f3[_0x949d('0x24')]],'as':_0x2d24f3['as'],'attributes':_0x2d24f3[_0x949d('0x20')],'include':_0x2d24f3[_0x949d('0x22')]?_[_0x949d('0x23')](_0x2d24f3[_0x949d('0x22')],function(_0x5c660b){return{'model':db[_0x5c660b[_0x949d('0x24')]],'as':_0x5c660b['as'],'attributes':_0x5c660b[_0x949d('0x20')],'include':_0x5c660b[_0x949d('0x22')]?_[_0x949d('0x23')](_0x5c660b[_0x949d('0x22')],function(_0x241bf5){return{'model':db[_0x241bf5[_0x949d('0x24')]],'as':_0x241bf5['as'],'attributes':_0x241bf5[_0x949d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x949d('0x25')](function(_0x58ff97){logger['info'](_0x949d('0x1b'),_0x56cc89);logger[_0x949d('0x13')]('GetSmsQueue',_0x56cc89,JSON[_0x949d('0x15')](_0x58ff97));_0xb610cb(_0x58ff97);})[_0x949d('0x1a')](function(_0x59be04){logger[_0x949d('0x17')](_0x949d('0x1b'),_0x59be04[_0x949d('0x18')],_0x56cc89);_0x550373(_0x5d11fd[_0x949d('0x17')](0x1f4,_0x59be04[_0x949d('0x18')]));});});};exports[_0x949d('0x26')]=function(_0x4273dd){var _0x383b6f=this;return new Promise(function(_0x16dc75,_0x349c8c){return db[_0x949d('0x1c')][_0x949d('0x27')]({'raw':_0x4273dd[_0x949d('0x1d')]?_0x4273dd[_0x949d('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x4273dd[_0x949d('0x1d')]?_0x4273dd[_0x949d('0x1d')][_0x949d('0x1f')]||null:null,'attributes':_0x4273dd[_0x949d('0x1d')]?_0x4273dd['options'][_0x949d('0x20')]||null:null,'include':_0x4273dd[_0x949d('0x1d')]?_0x4273dd[_0x949d('0x1d')]['include']?_[_0x949d('0x23')](_0x4273dd[_0x949d('0x1d')]['include'],function(_0x50fa03){return{'model':db[_0x50fa03['model']],'as':_0x50fa03['as'],'attributes':_0x50fa03[_0x949d('0x20')],'include':_0x50fa03[_0x949d('0x22')]?_[_0x949d('0x23')](_0x50fa03[_0x949d('0x22')],function(_0x518ead){return{'model':db[_0x518ead['model']],'as':_0x518ead['as'],'attributes':_0x518ead[_0x949d('0x20')],'include':_0x518ead['include']?_[_0x949d('0x23')](_0x518ead[_0x949d('0x22')],function(_0x45ac57){return{'model':db[_0x45ac57[_0x949d('0x24')]],'as':_0x45ac57['as'],'attributes':_0x45ac57[_0x949d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x949d('0x25')](function(_0x12c886){logger[_0x949d('0x10')](_0x949d('0x26'),_0x4273dd);logger['debug'](_0x949d('0x26'),_0x4273dd,JSON[_0x949d('0x15')](_0x12c886));_0x16dc75(_0x12c886);})[_0x949d('0x1a')](function(_0x4798f6){logger[_0x949d('0x17')](_0x949d('0x26'),_0x4798f6[_0x949d('0x18')],_0x4273dd);_0x349c8c(_0x383b6f['error'](0x1f4,_0x4798f6[_0x949d('0x18')]));});});};
\ No newline at end of file
index b1c274b..b3e9175 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd4=['smsQueue:','./smsQueue.events','save','remove','update','removeListener','register','length'];(function(_0x449139,_0x2dbbfe){var _0x117ff9=function(_0x52100b){while(--_0x52100b){_0x449139['push'](_0x449139['shift']());}};_0x117ff9(++_0x2dbbfe);}(_0xfdd4,0xe9));var _0x4fdd=function(_0x15b580,_0x343baf){_0x15b580=_0x15b580-0x0;var _0x47cd5e=_0xfdd4[_0x15b580];return _0x47cd5e;};'use strict';var SmsQueueEvents=require(_0x4fdd('0x0'));var events=[_0x4fdd('0x1'),_0x4fdd('0x2'),_0x4fdd('0x3')];function createListener(_0x4908ce,_0x30aabf){return function(_0x4c7a35){_0x30aabf['emit'](_0x4908ce,_0x4c7a35);};}function removeListener(_0x4f2904,_0x55d4d4){return function(){SmsQueueEvents[_0x4fdd('0x4')](_0x4f2904,_0x55d4d4);};}exports[_0x4fdd('0x5')]=function(_0x5e1bb0){for(var _0x1bf6f1=0x0,_0x4852c0=events[_0x4fdd('0x6')];_0x1bf6f1<_0x4852c0;_0x1bf6f1++){var _0x42c09c=events[_0x1bf6f1];var _0x34d990=createListener(_0x4fdd('0x7')+_0x42c09c,_0x5e1bb0);SmsQueueEvents['on'](_0x42c09c,_0x34d990);}};
\ No newline at end of file
+var _0x6d28=['./smsQueue.events','update','emit','removeListener','length'];(function(_0x1fddfd,_0x153a74){var _0x595b32=function(_0x2512d4){while(--_0x2512d4){_0x1fddfd['push'](_0x1fddfd['shift']());}};_0x595b32(++_0x153a74);}(_0x6d28,0x186));var _0x86d2=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x6d28[_0xa148b7];return _0x51efd3;};'use strict';var SmsQueueEvents=require(_0x86d2('0x0'));var events=['save','remove',_0x86d2('0x1')];function createListener(_0x5534ba,_0x3518fc){return function(_0x38f6a1){_0x3518fc[_0x86d2('0x2')](_0x5534ba,_0x38f6a1);};}function removeListener(_0x545491,_0x3fa10d){return function(){SmsQueueEvents[_0x86d2('0x3')](_0x545491,_0x3fa10d);};}exports['register']=function(_0x4dcbad){for(var _0x3d825c=0x0,_0x325b3c=events[_0x86d2('0x4')];_0x3d825c<_0x325b3c;_0x3d825c++){var _0x394c74=events[_0x3d825c];var _0x518746=createListener('smsQueue:'+_0x394c74,_0x4dcbad);SmsQueueEvents['on'](_0x394c74,_0x518746);}};
\ No newline at end of file
index a20ad2d..0901e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e7=['create','put','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post'];(function(_0x37354e,_0x17b490){var _0x23eba6=function(_0x2a9004){while(--_0x2a9004){_0x37354e['push'](_0x37354e['shift']());}};_0x23eba6(++_0x17b490);}(_0x34e7,0x1be));var _0x734e=function(_0x5cd2a0,_0x284c78){_0x5cd2a0=_0x5cd2a0-0x0;var _0x260959=_0x34e7[_0x5cd2a0];return _0x260959;};'use strict';var multer=require('multer');var util=require(_0x734e('0x0'));var path=require('path');var timeout=require(_0x734e('0x1'));var express=require(_0x734e('0x2'));var router=express[_0x734e('0x3')]();var fs_extra=require(_0x734e('0x4'));var auth=require(_0x734e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x734e('0x6'));var controller=require(_0x734e('0x7'));router['get']('/',auth[_0x734e('0x8')](),controller[_0x734e('0x9')]);router[_0x734e('0xa')](_0x734e('0xb'),auth[_0x734e('0x8')](),controller[_0x734e('0xc')]);router[_0x734e('0xa')](_0x734e('0xd'),auth[_0x734e('0x8')](),controller[_0x734e('0xe')]);router[_0x734e('0xf')]('/',auth[_0x734e('0x8')](),controller[_0x734e('0x10')]);router[_0x734e('0x11')](_0x734e('0xd'),auth[_0x734e('0x8')](),controller['update']);router[_0x734e('0x12')](_0x734e('0xd'),auth[_0x734e('0x8')](),controller[_0x734e('0x13')]);module[_0x734e('0x14')]=router;
\ No newline at end of file
+var _0x7824=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','put'];(function(_0x1146f7,_0x475356){var _0x2e5725=function(_0x44f2a2){while(--_0x44f2a2){_0x1146f7['push'](_0x1146f7['shift']());}};_0x2e5725(++_0x475356);}(_0x7824,0x72));var _0x4782=function(_0x59b5c8,_0x5e7d76){_0x59b5c8=_0x59b5c8-0x0;var _0xbdb639=_0x7824[_0x59b5c8];return _0xbdb639;};'use strict';var multer=require(_0x4782('0x0'));var util=require(_0x4782('0x1'));var path=require(_0x4782('0x2'));var timeout=require(_0x4782('0x3'));var express=require(_0x4782('0x4'));var router=express[_0x4782('0x5')]();var fs_extra=require(_0x4782('0x6'));var auth=require(_0x4782('0x7'));var interaction=require(_0x4782('0x8'));var config=require('../../config/environment');var controller=require(_0x4782('0x9'));router[_0x4782('0xa')]('/',auth['isAuthenticated'](),controller[_0x4782('0xb')]);router['get'](_0x4782('0xc'),auth[_0x4782('0xd')](),controller[_0x4782('0xe')]);router[_0x4782('0xa')](_0x4782('0xf'),auth[_0x4782('0xd')](),controller[_0x4782('0x10')]);router['post']('/',auth[_0x4782('0xd')](),controller['create']);router[_0x4782('0x11')](_0x4782('0xf'),auth['isAuthenticated'](),controller[_0x4782('0x12')]);router[_0x4782('0x13')]('/:id',auth[_0x4782('0xd')](),controller[_0x4782('0x14')]);module[_0x4782('0x15')]=router;
\ No newline at end of file
index 210ff41..aae0164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4573=['DATE','moment','STRING'];(function(_0x4d5071,_0x421e62){var _0x5be91a=function(_0x344447){while(--_0x344447){_0x4d5071['push'](_0x4d5071['shift']());}};_0x5be91a(++_0x421e62);}(_0x4573,0x12a));var _0x3457=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4573[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x3457('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x3457('0x1')]},'joinAt':{'type':Sequelize[_0x3457('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x3457('0x2')]},'exitAt':{'type':Sequelize[_0x3457('0x2')]},'reason':{'type':Sequelize[_0x3457('0x1')]}};
\ No newline at end of file
+var _0xb2c5=['moment','sequelize','exports','DATE'];(function(_0x2cebf1,_0x1cee4e){var _0x572ac4=function(_0x281c4c){while(--_0x281c4c){_0x2cebf1['push'](_0x2cebf1['shift']());}};_0x572ac4(++_0x1cee4e);}(_0xb2c5,0x114));var _0x5b2c=function(_0x53577d,_0x4c7f85){_0x53577d=_0x53577d-0x0;var _0x381c01=_0xb2c5[_0x53577d];return _0x381c01;};'use strict';var moment=require(_0x5b2c('0x0'));var Sequelize=require(_0x5b2c('0x1'));module[_0x5b2c('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x5b2c('0x3')]},'leaveAt':{'type':Sequelize[_0x5b2c('0x3')]},'acceptAt':{'type':Sequelize[_0x5b2c('0x3')]},'exitAt':{'type':Sequelize[_0x5b2c('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 759b6ee..1323216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5a6=['stack','name','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','options','include','findAll','catch','show','params','find','create','body','update','describe','eml-format','zip-dir','moment','to-csv','fs-extra','squel','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','save','then','destroy','error'];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0xc5a6,0x65));var _0x6c5a=function(_0x2911a1,_0x30d718){_0x2911a1=_0x2911a1-0x0;var _0x455573=_0xc5a6[_0x2911a1];return _0x455573;};'use strict';var emlformat=require(_0x6c5a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6c5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6c5a('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6c5a('0x3'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c5a('0x4'));var _=require('lodash');var squel=require(_0x6c5a('0x5'));var crypto=require('crypto');var jsforce=require(_0x6c5a('0x6'));var deskjs=require(_0x6c5a('0x7'));var toCsv=require(_0x6c5a('0x3'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6c5a('0x8'));var qs=require(_0x6c5a('0x9'));var as=require(_0x6c5a('0xa'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6c5a('0xb'))('api');var utils=require(_0x6c5a('0xc'));var config=require(_0x6c5a('0xd'));var licenseUtil=require(_0x6c5a('0xe'));var db=require(_0x6c5a('0xf'))['db'];function respondWithStatusCode(_0x26c3f0,_0x140033){_0x140033=_0x140033||0xcc;return function(_0x956c29){if(_0x956c29){return _0x26c3f0[_0x6c5a('0x10')](_0x140033);}return _0x26c3f0['status'](_0x140033)[_0x6c5a('0x11')]();};}function respondWithResult(_0x4f01cb,_0x109de1){_0x109de1=_0x109de1||0xc8;return function(_0x471d9e){if(_0x471d9e){return _0x4f01cb['status'](_0x109de1)[_0x6c5a('0x12')](_0x471d9e);}};}function respondWithFilteredResult(_0x1f7117,_0x3427b6){return function(_0x4b49ab){if(_0x4b49ab){var _0xf1cb97=typeof _0x3427b6[_0x6c5a('0x13')]===_0x6c5a('0x14')&&typeof _0x3427b6[_0x6c5a('0x15')]===_0x6c5a('0x14');var _0x5cbe77=_0x4b49ab[_0x6c5a('0x16')];var _0x3256de=_0xf1cb97?0x0:_0x3427b6[_0x6c5a('0x13')];var _0x1a55d4=_0xf1cb97?_0x4b49ab[_0x6c5a('0x16')]:_0x3427b6[_0x6c5a('0x13')]+_0x3427b6[_0x6c5a('0x15')];var _0x5380d8;if(_0x1a55d4>=_0x5cbe77){_0x1a55d4=_0x5cbe77;_0x5380d8=0xc8;}else{_0x5380d8=0xce;}_0x1f7117[_0x6c5a('0x17')](_0x5380d8);return _0x1f7117[_0x6c5a('0x18')]('Content-Range',_0x3256de+'-'+_0x1a55d4+'/'+_0x5cbe77)[_0x6c5a('0x12')](_0x4b49ab);}return null;};}function patchUpdates(_0x535dc1){return function(_0x13ff89){try{jsonpatch[_0x6c5a('0x19')](_0x13ff89,_0x535dc1,!![]);}catch(_0x21e006){return BPromise[_0x6c5a('0x1a')](_0x21e006);}return _0x13ff89[_0x6c5a('0x1b')]();};}function saveUpdates(_0x54e0a3,_0x53ad1c){return function(_0x49941d){if(_0x49941d){return _0x49941d['update'](_0x54e0a3)[_0x6c5a('0x1c')](function(_0x9192b2){return _0x9192b2;});}return null;};}function removeEntity(_0x2814e7,_0x159cf3){return function(_0x9092ea){if(_0x9092ea){return _0x9092ea[_0x6c5a('0x1d')]()['then'](function(){_0x2814e7[_0x6c5a('0x17')](0xcc)[_0x6c5a('0x11')]();});}};}function handleEntityNotFound(_0x239fdd,_0x423da8){return function(_0x1be8d3){if(!_0x1be8d3){_0x239fdd[_0x6c5a('0x10')](0x194);}return _0x1be8d3;};}function handleError(_0x2b0216,_0x134f48){_0x134f48=_0x134f48||0x1f4;return function(_0x3b7cd6){logger[_0x6c5a('0x1e')](_0x3b7cd6[_0x6c5a('0x1f')]);if(_0x3b7cd6[_0x6c5a('0x20')]){delete _0x3b7cd6[_0x6c5a('0x20')];}_0x2b0216['status'](_0x134f48)['send'](_0x3b7cd6);};}exports[_0x6c5a('0x21')]=function(_0x3ae2e8,_0x18a6b7){var _0x59883f={},_0x2e5761={},_0x59b81d={'count':0x0,'rows':[]};var _0x172692=_[_0x6c5a('0x22')](db[_0x6c5a('0x23')][_0x6c5a('0x24')],function(_0x362ae8){return{'name':_0x362ae8[_0x6c5a('0x25')],'type':_0x362ae8[_0x6c5a('0x26')][_0x6c5a('0x27')]};});_0x2e5761[_0x6c5a('0x28')]=_[_0x6c5a('0x22')](_0x172692,'name');_0x2e5761[_0x6c5a('0x29')]=_[_0x6c5a('0x2a')](_0x3ae2e8[_0x6c5a('0x29')]);_0x2e5761['filters']=_[_0x6c5a('0x2b')](_0x2e5761[_0x6c5a('0x28')],_0x2e5761[_0x6c5a('0x29')]);_0x59883f['attributes']=_[_0x6c5a('0x2b')](_0x2e5761[_0x6c5a('0x28')],qs[_0x6c5a('0x2c')](_0x3ae2e8[_0x6c5a('0x29')]['fields']));_0x59883f[_0x6c5a('0x2d')]=_0x59883f['attributes'][_0x6c5a('0x2e')]?_0x59883f[_0x6c5a('0x2d')]:_0x2e5761[_0x6c5a('0x28')];if(!_0x3ae2e8['query'][_0x6c5a('0x2f')]('nolimit')){_0x59883f[_0x6c5a('0x15')]=qs[_0x6c5a('0x15')](_0x3ae2e8['query'][_0x6c5a('0x15')]);_0x59883f[_0x6c5a('0x13')]=qs[_0x6c5a('0x13')](_0x3ae2e8[_0x6c5a('0x29')][_0x6c5a('0x13')]);}_0x59883f[_0x6c5a('0x30')]=qs[_0x6c5a('0x31')](_0x3ae2e8[_0x6c5a('0x29')][_0x6c5a('0x31')]);_0x59883f[_0x6c5a('0x32')]=qs['filters'](_[_0x6c5a('0x33')](_0x3ae2e8[_0x6c5a('0x29')],_0x2e5761[_0x6c5a('0x34')]),_0x172692);if(_0x3ae2e8[_0x6c5a('0x29')][_0x6c5a('0x35')]){_0x59883f[_0x6c5a('0x32')]=_['merge'](_0x59883f[_0x6c5a('0x32')],{'$or':_[_0x6c5a('0x22')](_0x172692,function(_0x10d1d8){if(_0x10d1d8['type']!=='VIRTUAL'){var _0x231c13={};_0x231c13[_0x10d1d8['name']]={'$like':'%'+_0x3ae2e8['query']['filter']+'%'};return _0x231c13;}})});}_0x59883f=_[_0x6c5a('0x36')]({},_0x59883f,_0x3ae2e8[_0x6c5a('0x37')]);var _0x4fb868={'where':_0x59883f['where']};return db[_0x6c5a('0x23')][_0x6c5a('0x16')](_0x4fb868)[_0x6c5a('0x1c')](function(_0x5bc1b3){_0x59b81d[_0x6c5a('0x16')]=_0x5bc1b3;if(_0x3ae2e8[_0x6c5a('0x29')]['includeAll']){_0x59883f[_0x6c5a('0x38')]=[{'all':!![]}];}return db[_0x6c5a('0x23')][_0x6c5a('0x39')](_0x59883f);})[_0x6c5a('0x1c')](function(_0x2562e9){_0x59b81d['rows']=_0x2562e9;return _0x59b81d;})['then'](respondWithFilteredResult(_0x18a6b7,_0x59883f))[_0x6c5a('0x3a')](handleError(_0x18a6b7,null));};exports[_0x6c5a('0x3b')]=function(_0x5de03b,_0x26e8da){var _0xe9b760={'raw':!![],'where':{'id':_0x5de03b[_0x6c5a('0x3c')]['id']}},_0xd772fd={};_0xd772fd[_0x6c5a('0x28')]=_[_0x6c5a('0x2a')](db[_0x6c5a('0x23')][_0x6c5a('0x24')]);_0xd772fd['query']=_[_0x6c5a('0x2a')](_0x5de03b[_0x6c5a('0x29')]);_0xd772fd[_0x6c5a('0x34')]=_[_0x6c5a('0x2b')](_0xd772fd['model'],_0xd772fd[_0x6c5a('0x29')]);_0xe9b760[_0x6c5a('0x2d')]=_[_0x6c5a('0x2b')](_0xd772fd[_0x6c5a('0x28')],qs[_0x6c5a('0x2c')](_0x5de03b['query']['fields']));_0xe9b760[_0x6c5a('0x2d')]=_0xe9b760[_0x6c5a('0x2d')][_0x6c5a('0x2e')]?_0xe9b760['attributes']:_0xd772fd[_0x6c5a('0x28')];if(_0x5de03b['query']['includeAll']){_0xe9b760[_0x6c5a('0x38')]=[{'all':!![]}];}_0xe9b760=_[_0x6c5a('0x36')]({},_0xe9b760,_0x5de03b['options']);return db[_0x6c5a('0x23')][_0x6c5a('0x3d')](_0xe9b760)[_0x6c5a('0x1c')](handleEntityNotFound(_0x26e8da,null))[_0x6c5a('0x1c')](respondWithResult(_0x26e8da,null))['catch'](handleError(_0x26e8da,null));};exports[_0x6c5a('0x3e')]=function(_0x7afb36,_0x5ee276){return db['SmsQueueReport']['create'](_0x7afb36[_0x6c5a('0x3f')],{})[_0x6c5a('0x1c')](respondWithResult(_0x5ee276,0xc9))[_0x6c5a('0x3a')](handleError(_0x5ee276,null));};exports[_0x6c5a('0x40')]=function(_0x24bdea,_0x4f611b){if(_0x24bdea[_0x6c5a('0x3f')]['id']){delete _0x24bdea['body']['id'];}return db[_0x6c5a('0x23')][_0x6c5a('0x3d')]({'where':{'id':_0x24bdea[_0x6c5a('0x3c')]['id']}})[_0x6c5a('0x1c')](handleEntityNotFound(_0x4f611b,null))[_0x6c5a('0x1c')](saveUpdates(_0x24bdea[_0x6c5a('0x3f')],null))[_0x6c5a('0x1c')](respondWithResult(_0x4f611b,null))[_0x6c5a('0x3a')](handleError(_0x4f611b,null));};exports['destroy']=function(_0x9cb15c,_0x5926cc){return db[_0x6c5a('0x23')][_0x6c5a('0x3d')]({'where':{'id':_0x9cb15c[_0x6c5a('0x3c')]['id']}})[_0x6c5a('0x1c')](handleEntityNotFound(_0x5926cc,null))['then'](removeEntity(_0x5926cc,null))[_0x6c5a('0x3a')](handleError(_0x5926cc,null));};exports[_0x6c5a('0x41')]=function(_0x4faa36,_0x4f8d56){return db[_0x6c5a('0x23')][_0x6c5a('0x41')]()[_0x6c5a('0x1c')](respondWithResult(_0x4f8d56,null))['catch'](handleError(_0x4f8d56,null));};
\ No newline at end of file
+var _0xda0c=['../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','stack','name','index','SmsQueueReport','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x58ae8a,_0x3c619e){var _0x2f0b6b=function(_0x6db940){while(--_0x6db940){_0x58ae8a['push'](_0x58ae8a['shift']());}};_0x2f0b6b(++_0x3c619e);}(_0xda0c,0x111));var _0xcda0=function(_0x4bddcc,_0x44599f){_0x4bddcc=_0x4bddcc-0x0;var _0x5383aa=_0xda0c[_0x4bddcc];return _0x5383aa;};'use strict';var emlformat=require(_0xcda0('0x0'));var rimraf=require(_0xcda0('0x1'));var zipdir=require(_0xcda0('0x2'));var jsonpatch=require(_0xcda0('0x3'));var rp=require(_0xcda0('0x4'));var moment=require(_0xcda0('0x5'));var BPromise=require(_0xcda0('0x6'));var Mustache=require('mustache');var util=require(_0xcda0('0x7'));var path=require(_0xcda0('0x8'));var sox=require('sox');var csv=require(_0xcda0('0x9'));var ejs=require(_0xcda0('0xa'));var fs=require('fs');var fs_extra=require(_0xcda0('0xb'));var _=require(_0xcda0('0xc'));var squel=require('squel');var crypto=require(_0xcda0('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xcda0('0xe'));var toCsv=require(_0xcda0('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xcda0('0xf'));var authService=require(_0xcda0('0x10'));var qs=require(_0xcda0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcda0('0x12'));var logger=require(_0xcda0('0x13'))('api');var utils=require(_0xcda0('0x14'));var config=require(_0xcda0('0x15'));var licenseUtil=require(_0xcda0('0x16'));var db=require(_0xcda0('0x17'))['db'];function respondWithStatusCode(_0x430a07,_0x506be7){_0x506be7=_0x506be7||0xcc;return function(_0x16235c){if(_0x16235c){return _0x430a07[_0xcda0('0x18')](_0x506be7);}return _0x430a07['status'](_0x506be7)[_0xcda0('0x19')]();};}function respondWithResult(_0x1b08f0,_0x598fc9){_0x598fc9=_0x598fc9||0xc8;return function(_0x2744b2){if(_0x2744b2){return _0x1b08f0[_0xcda0('0x1a')](_0x598fc9)[_0xcda0('0x1b')](_0x2744b2);}};}function respondWithFilteredResult(_0x579047,_0x4dc151){return function(_0x5aba9e){if(_0x5aba9e){var _0x2f2c80=typeof _0x4dc151[_0xcda0('0x1c')]==='undefined'&&typeof _0x4dc151[_0xcda0('0x1d')]===_0xcda0('0x1e');var _0x4076ef=_0x5aba9e[_0xcda0('0x1f')];var _0x2166c1=_0x2f2c80?0x0:_0x4dc151['offset'];var _0x15cbf2=_0x2f2c80?_0x5aba9e[_0xcda0('0x1f')]:_0x4dc151[_0xcda0('0x1c')]+_0x4dc151['limit'];var _0x1bfe3e;if(_0x15cbf2>=_0x4076ef){_0x15cbf2=_0x4076ef;_0x1bfe3e=0xc8;}else{_0x1bfe3e=0xce;}_0x579047[_0xcda0('0x1a')](_0x1bfe3e);return _0x579047[_0xcda0('0x20')](_0xcda0('0x21'),_0x2166c1+'-'+_0x15cbf2+'/'+_0x4076ef)[_0xcda0('0x1b')](_0x5aba9e);}return null;};}function patchUpdates(_0x491d84){return function(_0x1c6c78){try{jsonpatch['apply'](_0x1c6c78,_0x491d84,!![]);}catch(_0x565034){return BPromise['reject'](_0x565034);}return _0x1c6c78[_0xcda0('0x22')]();};}function saveUpdates(_0xfaaf6d,_0x559aea){return function(_0x20c9c9){if(_0x20c9c9){return _0x20c9c9[_0xcda0('0x23')](_0xfaaf6d)[_0xcda0('0x24')](function(_0x4f1a5e){return _0x4f1a5e;});}return null;};}function removeEntity(_0x2cdf35,_0x5e091d){return function(_0x258c51){if(_0x258c51){return _0x258c51[_0xcda0('0x25')]()[_0xcda0('0x24')](function(){_0x2cdf35[_0xcda0('0x1a')](0xcc)[_0xcda0('0x19')]();});}};}function handleEntityNotFound(_0x338bb8,_0x32676e){return function(_0xf55ce3){if(!_0xf55ce3){_0x338bb8[_0xcda0('0x18')](0x194);}return _0xf55ce3;};}function handleError(_0x296dea,_0x197fb8){_0x197fb8=_0x197fb8||0x1f4;return function(_0x2b64e8){logger['error'](_0x2b64e8[_0xcda0('0x26')]);if(_0x2b64e8[_0xcda0('0x27')]){delete _0x2b64e8[_0xcda0('0x27')];}_0x296dea['status'](_0x197fb8)['send'](_0x2b64e8);};}exports[_0xcda0('0x28')]=function(_0xa585f9,_0x23bd13){var _0x1efb4d={},_0x5e3e90={},_0x120724={'count':0x0,'rows':[]};var _0xbbe951=_['map'](db[_0xcda0('0x29')][_0xcda0('0x2a')],function(_0x499fa3){return{'name':_0x499fa3[_0xcda0('0x2b')],'type':_0x499fa3[_0xcda0('0x2c')][_0xcda0('0x2d')]};});_0x5e3e90[_0xcda0('0x2e')]=_[_0xcda0('0x2f')](_0xbbe951,_0xcda0('0x27'));_0x5e3e90[_0xcda0('0x30')]=_['keys'](_0xa585f9[_0xcda0('0x30')]);_0x5e3e90[_0xcda0('0x31')]=_['intersection'](_0x5e3e90[_0xcda0('0x2e')],_0x5e3e90[_0xcda0('0x30')]);_0x1efb4d[_0xcda0('0x32')]=_[_0xcda0('0x33')](_0x5e3e90['model'],qs[_0xcda0('0x34')](_0xa585f9[_0xcda0('0x30')][_0xcda0('0x34')]));_0x1efb4d[_0xcda0('0x32')]=_0x1efb4d[_0xcda0('0x32')][_0xcda0('0x35')]?_0x1efb4d[_0xcda0('0x32')]:_0x5e3e90[_0xcda0('0x2e')];if(!_0xa585f9[_0xcda0('0x30')][_0xcda0('0x36')](_0xcda0('0x37'))){_0x1efb4d['limit']=qs['limit'](_0xa585f9[_0xcda0('0x30')][_0xcda0('0x1d')]);_0x1efb4d[_0xcda0('0x1c')]=qs['offset'](_0xa585f9['query']['offset']);}_0x1efb4d[_0xcda0('0x38')]=qs['sort'](_0xa585f9[_0xcda0('0x30')][_0xcda0('0x39')]);_0x1efb4d['where']=qs['filters'](_['pick'](_0xa585f9[_0xcda0('0x30')],_0x5e3e90[_0xcda0('0x31')]),_0xbbe951);if(_0xa585f9['query'][_0xcda0('0x3a')]){_0x1efb4d[_0xcda0('0x3b')]=_[_0xcda0('0x3c')](_0x1efb4d[_0xcda0('0x3b')],{'$or':_[_0xcda0('0x2f')](_0xbbe951,function(_0x3f13cf){if(_0x3f13cf[_0xcda0('0x2c')]!=='VIRTUAL'){var _0x264206={};_0x264206[_0x3f13cf['name']]={'$like':'%'+_0xa585f9['query'][_0xcda0('0x3a')]+'%'};return _0x264206;}})});}_0x1efb4d=_['merge']({},_0x1efb4d,_0xa585f9[_0xcda0('0x3d')]);var _0x1038e9={'where':_0x1efb4d[_0xcda0('0x3b')]};return db[_0xcda0('0x29')][_0xcda0('0x1f')](_0x1038e9)['then'](function(_0x346e3d){_0x120724['count']=_0x346e3d;if(_0xa585f9['query'][_0xcda0('0x3e')]){_0x1efb4d[_0xcda0('0x3f')]=[{'all':!![]}];}return db[_0xcda0('0x29')][_0xcda0('0x40')](_0x1efb4d);})[_0xcda0('0x24')](function(_0x57bb24){_0x120724['rows']=_0x57bb24;return _0x120724;})[_0xcda0('0x24')](respondWithFilteredResult(_0x23bd13,_0x1efb4d))[_0xcda0('0x41')](handleError(_0x23bd13,null));};exports[_0xcda0('0x42')]=function(_0x5aebba,_0x2b6b4f){var _0x10b1d6={'raw':!![],'where':{'id':_0x5aebba[_0xcda0('0x43')]['id']}},_0x1a999e={};_0x1a999e['model']=_[_0xcda0('0x44')](db[_0xcda0('0x29')][_0xcda0('0x2a')]);_0x1a999e[_0xcda0('0x30')]=_[_0xcda0('0x44')](_0x5aebba[_0xcda0('0x30')]);_0x1a999e['filters']=_[_0xcda0('0x33')](_0x1a999e[_0xcda0('0x2e')],_0x1a999e[_0xcda0('0x30')]);_0x10b1d6['attributes']=_[_0xcda0('0x33')](_0x1a999e[_0xcda0('0x2e')],qs[_0xcda0('0x34')](_0x5aebba[_0xcda0('0x30')][_0xcda0('0x34')]));_0x10b1d6['attributes']=_0x10b1d6[_0xcda0('0x32')][_0xcda0('0x35')]?_0x10b1d6[_0xcda0('0x32')]:_0x1a999e[_0xcda0('0x2e')];if(_0x5aebba['query'][_0xcda0('0x3e')]){_0x10b1d6['include']=[{'all':!![]}];}_0x10b1d6=_[_0xcda0('0x3c')]({},_0x10b1d6,_0x5aebba[_0xcda0('0x3d')]);return db[_0xcda0('0x29')][_0xcda0('0x45')](_0x10b1d6)['then'](handleEntityNotFound(_0x2b6b4f,null))[_0xcda0('0x24')](respondWithResult(_0x2b6b4f,null))[_0xcda0('0x41')](handleError(_0x2b6b4f,null));};exports[_0xcda0('0x46')]=function(_0x5f3259,_0x2c83fa){return db[_0xcda0('0x29')][_0xcda0('0x46')](_0x5f3259[_0xcda0('0x47')],{})[_0xcda0('0x24')](respondWithResult(_0x2c83fa,0xc9))[_0xcda0('0x41')](handleError(_0x2c83fa,null));};exports[_0xcda0('0x23')]=function(_0xa10005,_0x5a51c8){if(_0xa10005[_0xcda0('0x47')]['id']){delete _0xa10005[_0xcda0('0x47')]['id'];}return db['SmsQueueReport'][_0xcda0('0x45')]({'where':{'id':_0xa10005['params']['id']}})[_0xcda0('0x24')](handleEntityNotFound(_0x5a51c8,null))['then'](saveUpdates(_0xa10005[_0xcda0('0x47')],null))['then'](respondWithResult(_0x5a51c8,null))[_0xcda0('0x41')](handleError(_0x5a51c8,null));};exports['destroy']=function(_0x58d4e3,_0x1762fc){return db[_0xcda0('0x29')][_0xcda0('0x45')]({'where':{'id':_0x58d4e3[_0xcda0('0x43')]['id']}})[_0xcda0('0x24')](handleEntityNotFound(_0x1762fc,null))[_0xcda0('0x24')](removeEntity(_0x1762fc,null))[_0xcda0('0x41')](handleError(_0x1762fc,null));};exports[_0xcda0('0x48')]=function(_0x3fad87,_0x4c61c1){return db[_0xcda0('0x29')][_0xcda0('0x48')]()['then'](respondWithResult(_0x4c61c1,null))[_0xcda0('0x41')](handleError(_0x4c61c1,null));};
\ No newline at end of file
index d077709..f1192ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x17037a,_0x1312df){var _0x525ad0=function(_0x2a144a){while(--_0x2a144a){_0x17037a['push'](_0x17037a['shift']());}};_0x525ad0(++_0x1312df);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2338fa,_0x80579a){_0x2338fa=_0x2338fa-0x0;var _0x42df9b=_0xcb91[_0x2338fa];return _0x42df9b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x593176,_0x495218){var _0x502e2a=function(_0x30d9e8){while(--_0x30d9e8){_0x593176['push'](_0x593176['shift']());}};_0x502e2a(++_0x495218);}(_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
index 73dbd0f..54893ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09ed=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','UpdateSmsQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring'];(function(_0x112175,_0x534cb3){var _0x3c77f4=function(_0x2b7474){while(--_0x2b7474){_0x112175['push'](_0x112175['shift']());}};_0x3c77f4(++_0x534cb3);}(_0x09ed,0x1c2));var _0xd09e=function(_0xe49451,_0x9bbf29){_0xe49451=_0xe49451-0x0;var _0x20c5d0=_0x09ed[_0xe49451];return _0x20c5d0;};'use strict';var _=require(_0xd09e('0x0'));var util=require(_0xd09e('0x1'));var moment=require(_0xd09e('0x2'));var BPromise=require(_0xd09e('0x3'));var rs=require(_0xd09e('0x4'));var fs=require('fs');var Redis=require(_0xd09e('0x5'));var db=require(_0xd09e('0x6'))['db'];var utils=require(_0xd09e('0x7'));var logger=require(_0xd09e('0x8'))(_0xd09e('0x9'));var config=require(_0xd09e('0xa'));var jayson=require(_0xd09e('0xb'));var client=jayson[_0xd09e('0xc')][_0xd09e('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3b8299,_0x62f147,_0x399c89){return new BPromise(function(_0x473c07,_0x1b2e30){return client['request'](_0x3b8299,_0x399c89)[_0xd09e('0xe')](function(_0x481098){logger['info'](_0xd09e('0xf'),_0x62f147,_0xd09e('0x10'));logger[_0xd09e('0x11')](_0xd09e('0x12'),_0x62f147,_0xd09e('0x10'),JSON[_0xd09e('0x13')](_0x481098));if(_0x481098[_0xd09e('0x14')]){if(_0x481098[_0xd09e('0x14')]['code']===0x1f4){logger['error'](_0xd09e('0xf'),_0x62f147,_0x481098[_0xd09e('0x14')][_0xd09e('0x15')]);return _0x1b2e30(_0x481098[_0xd09e('0x14')][_0xd09e('0x15')]);}logger[_0xd09e('0x14')](_0xd09e('0xf'),_0x62f147,_0x481098['error'][_0xd09e('0x15')]);return _0x473c07(_0x481098[_0xd09e('0x14')]['message']);}else{logger[_0xd09e('0x16')](_0xd09e('0xf'),_0x62f147,_0xd09e('0x10'));_0x473c07(_0x481098['result'][_0xd09e('0x15')]);}})[_0xd09e('0x17')](function(_0x3791fc){logger[_0xd09e('0x14')](_0xd09e('0xf'),_0x62f147,_0x3791fc);_0x1b2e30(_0x3791fc);});});}exports[_0xd09e('0x18')]=function(_0x57b628){var _0x45fa85=this;return new Promise(function(_0x5d35f4,_0x47d777){return db[_0xd09e('0x19')][_0xd09e('0x1a')](_0x57b628[_0xd09e('0x1b')],{'raw':_0x57b628[_0xd09e('0x1c')]?_0x57b628[_0xd09e('0x1c')][_0xd09e('0x1d')]===undefined?!![]:![]:!![]})[_0xd09e('0xe')](function(_0x18c18c){logger[_0xd09e('0x16')](_0xd09e('0x18'),_0x57b628);logger[_0xd09e('0x11')](_0xd09e('0x18'),_0x57b628,JSON[_0xd09e('0x13')](_0x18c18c));_0x5d35f4(_0x18c18c);})[_0xd09e('0x17')](function(_0x397b66){logger[_0xd09e('0x14')](_0xd09e('0x18'),_0x397b66[_0xd09e('0x15')],_0x57b628);_0x47d777(_0x45fa85[_0xd09e('0x14')](0x1f4,_0x397b66[_0xd09e('0x15')]));});});};exports[_0xd09e('0x1e')]=function(_0x328388){var _0xaf660e=this;return new Promise(function(_0x265d7d,_0x4407ef){return db['SmsQueueReport'][_0xd09e('0x1f')](_0x328388[_0xd09e('0x1b')],{'raw':_0x328388[_0xd09e('0x1c')]?_0x328388['options'][_0xd09e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x328388[_0xd09e('0x1c')]?_0x328388[_0xd09e('0x1c')][_0xd09e('0x20')]||null:null,'attributes':_0x328388[_0xd09e('0x1c')]?_0x328388[_0xd09e('0x1c')][_0xd09e('0x21')]||null:null,'limit':_0x328388[_0xd09e('0x1c')]?_0x328388[_0xd09e('0x1c')][_0xd09e('0x22')]||null:null})['then'](function(_0x3dcc2f){logger[_0xd09e('0x16')](_0xd09e('0x1e'),_0x328388);logger['debug'](_0xd09e('0x1e'),_0x328388,JSON[_0xd09e('0x13')](_0x3dcc2f));_0x265d7d(_0x3dcc2f);})[_0xd09e('0x17')](function(_0x4f9bc0){logger[_0xd09e('0x14')](_0xd09e('0x1e'),_0x4f9bc0[_0xd09e('0x15')],_0x328388);_0x4407ef(_0xaf660e[_0xd09e('0x14')](0x1f4,_0x4f9bc0[_0xd09e('0x15')]));});});};
\ No newline at end of file
+var _0xfa93=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','info','debug','UpdateSmsQueueReport','update','body','where','attributes','limit','util','moment','bluebird'];(function(_0x80598,_0x122c89){var _0x45bbc9=function(_0x23ff8d){while(--_0x23ff8d){_0x80598['push'](_0x80598['shift']());}};_0x45bbc9(++_0x122c89);}(_0xfa93,0x195));var _0x3fa9=function(_0x4e6275,_0x247228){_0x4e6275=_0x4e6275-0x0;var _0x1d1bf2=_0xfa93[_0x4e6275];return _0x1d1bf2;};'use strict';var _=require('lodash');var util=require(_0x3fa9('0x0'));var moment=require(_0x3fa9('0x1'));var BPromise=require(_0x3fa9('0x2'));var rs=require(_0x3fa9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3fa9('0x4'))['db'];var utils=require(_0x3fa9('0x5'));var logger=require(_0x3fa9('0x6'))(_0x3fa9('0x7'));var config=require(_0x3fa9('0x8'));var jayson=require(_0x3fa9('0x9'));var client=jayson[_0x3fa9('0xa')][_0x3fa9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x19d20b,_0x1e88fc,_0x21b51d){return new BPromise(function(_0x1335fa,_0x142e79){return client['request'](_0x19d20b,_0x21b51d)[_0x3fa9('0xc')](function(_0x19570e){logger['info'](_0x3fa9('0xd'),_0x1e88fc,_0x3fa9('0xe'));logger['debug'](_0x3fa9('0xf'),_0x1e88fc,_0x3fa9('0xe'),JSON[_0x3fa9('0x10')](_0x19570e));if(_0x19570e['error']){if(_0x19570e[_0x3fa9('0x11')]['code']===0x1f4){logger[_0x3fa9('0x11')](_0x3fa9('0xd'),_0x1e88fc,_0x19570e[_0x3fa9('0x11')]['message']);return _0x142e79(_0x19570e['error']['message']);}logger['error'](_0x3fa9('0xd'),_0x1e88fc,_0x19570e[_0x3fa9('0x11')]['message']);return _0x1335fa(_0x19570e[_0x3fa9('0x11')][_0x3fa9('0x12')]);}else{logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x1e88fc,'request\x20sent');_0x1335fa(_0x19570e[_0x3fa9('0x13')]['message']);}})[_0x3fa9('0x14')](function(_0x3a95b3){logger['error'](_0x3fa9('0xd'),_0x1e88fc,_0x3a95b3);_0x142e79(_0x3a95b3);});});}exports[_0x3fa9('0x15')]=function(_0x4d9808){var _0x4bc3d6=this;return new Promise(function(_0x55b775,_0x5df881){return db[_0x3fa9('0x16')][_0x3fa9('0x17')](_0x4d9808['body'],{'raw':_0x4d9808[_0x3fa9('0x18')]?_0x4d9808['options'][_0x3fa9('0x19')]===undefined?!![]:![]:!![]})[_0x3fa9('0xc')](function(_0x544d5b){logger[_0x3fa9('0x1a')](_0x3fa9('0x15'),_0x4d9808);logger[_0x3fa9('0x1b')](_0x3fa9('0x15'),_0x4d9808,JSON[_0x3fa9('0x10')](_0x544d5b));_0x55b775(_0x544d5b);})[_0x3fa9('0x14')](function(_0x3cda9f){logger[_0x3fa9('0x11')](_0x3fa9('0x15'),_0x3cda9f[_0x3fa9('0x12')],_0x4d9808);_0x5df881(_0x4bc3d6[_0x3fa9('0x11')](0x1f4,_0x3cda9f[_0x3fa9('0x12')]));});});};exports[_0x3fa9('0x1c')]=function(_0x315a38){var _0x559dab=this;return new Promise(function(_0x1cbb1c,_0x2cbbd3){return db[_0x3fa9('0x16')][_0x3fa9('0x1d')](_0x315a38[_0x3fa9('0x1e')],{'raw':_0x315a38[_0x3fa9('0x18')]?_0x315a38['options'][_0x3fa9('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x315a38[_0x3fa9('0x18')]?_0x315a38[_0x3fa9('0x18')][_0x3fa9('0x1f')]||null:null,'attributes':_0x315a38[_0x3fa9('0x18')]?_0x315a38['options'][_0x3fa9('0x20')]||null:null,'limit':_0x315a38[_0x3fa9('0x18')]?_0x315a38[_0x3fa9('0x18')][_0x3fa9('0x21')]||null:null})[_0x3fa9('0xc')](function(_0x1edc7f){logger[_0x3fa9('0x1a')](_0x3fa9('0x1c'),_0x315a38);logger[_0x3fa9('0x1b')](_0x3fa9('0x1c'),_0x315a38,JSON[_0x3fa9('0x10')](_0x1edc7f));_0x1cbb1c(_0x1edc7f);})[_0x3fa9('0x14')](function(_0x4168e8){logger[_0x3fa9('0x11')]('UpdateSmsQueueReport',_0x4168e8['message'],_0x315a38);_0x2cbbd3(_0x559dab[_0x3fa9('0x11')](0x1f4,_0x4168e8[_0x3fa9('0x12')]));});});};
\ No newline at end of file
index 3641dbc..94b131e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf006=['post','create','put','update','destroy','exports','path','connect-timeout','Router','../../components/auth/service','./smsTransferReport.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x240eee,_0x249118){var _0x411632=function(_0x99d99f){while(--_0x99d99f){_0x240eee['push'](_0x240eee['shift']());}};_0x411632(++_0x249118);}(_0xf006,0x146));var _0x6f00=function(_0x1a5aab,_0x519982){_0x1a5aab=_0x1a5aab-0x0;var _0x3ddb08=_0xf006[_0x1a5aab];return _0x3ddb08;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6f00('0x0'));var timeout=require(_0x6f00('0x1'));var express=require('express');var router=express[_0x6f00('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6f00('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6f00('0x4'));router[_0x6f00('0x5')]('/',auth[_0x6f00('0x6')](),controller['index']);router[_0x6f00('0x5')]('/describe',auth[_0x6f00('0x6')](),controller[_0x6f00('0x7')]);router[_0x6f00('0x5')](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0x9')]);router[_0x6f00('0xa')]('/',auth[_0x6f00('0x6')](),controller[_0x6f00('0xb')]);router[_0x6f00('0xc')](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xd')]);router['delete'](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xe')]);module[_0x6f00('0xf')]=router;
\ No newline at end of file
+var _0xabce=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x31af3b,_0x9319fd){var _0x544cfd=function(_0x67007c){while(--_0x67007c){_0x31af3b['push'](_0x31af3b['shift']());}};_0x544cfd(++_0x9319fd);}(_0xabce,0x103));var _0xeabc=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xabce[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/describe',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0xc')]('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0xe')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x10')]);router[_0xeabc('0x11')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x12')]);module[_0xeabc('0x13')]=router;
\ No newline at end of file
index da4937c..0fd83d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x598706,_0x20ea80){var _0xc31af1=function(_0x2497af){while(--_0x2497af){_0x598706['push'](_0x598706['shift']());}};_0xc31af1(++_0x20ea80);}(_0x00bb,0x1d8));var _0xb00b=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x00bb[_0x47a7d0];return _0xb9bd08;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x3bb21a,_0x353b56){var _0x5f3983=function(_0x334b13){while(--_0x334b13){_0x3bb21a['push'](_0x3bb21a['shift']());}};_0x5f3983(++_0x353b56);}(_0x008c,0x188));var _0xc008=function(_0x46b7ed,_0x211e80){_0x46b7ed=_0x46b7ed-0x0;var _0x25ffb4=_0x008c[_0x46b7ed];return _0x25ffb4;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index b91b32b..a4c1a88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa904=['util','path','sox','to-csv','ejs','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','order','sort','pick','where','merge','VIRTUAL','filter','options','SmsTransferReport','includeAll','include','rows','catch','show','params','keys','length','find','create','body','describe','rimraf','zip-dir','moment','mustache'];(function(_0x15f852,_0x530d85){var _0x387460=function(_0x4aa3df){while(--_0x4aa3df){_0x15f852['push'](_0x15f852['shift']());}};_0x387460(++_0x530d85);}(_0xa904,0x194));var _0x4a90=function(_0x310eb9,_0x1aed15){_0x310eb9=_0x310eb9-0x0;var _0x28915c=_0xa904[_0x310eb9];return _0x28915c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a90('0x0'));var zipdir=require(_0x4a90('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4a90('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x4a90('0x3'));var util=require(_0x4a90('0x4'));var path=require(_0x4a90('0x5'));var sox=require(_0x4a90('0x6'));var csv=require(_0x4a90('0x7'));var ejs=require(_0x4a90('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4a90('0x9'));var squel=require('squel');var crypto=require(_0x4a90('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4a90('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4a90('0xc'));var authService=require(_0x4a90('0xd'));var qs=require(_0x4a90('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x4a90('0xf'));var licenseUtil=require(_0x4a90('0x10'));var db=require(_0x4a90('0x11'))['db'];function respondWithStatusCode(_0x4e1754,_0x31935e){_0x31935e=_0x31935e||0xcc;return function(_0x2ca0a8){if(_0x2ca0a8){return _0x4e1754[_0x4a90('0x12')](_0x31935e);}return _0x4e1754[_0x4a90('0x13')](_0x31935e)[_0x4a90('0x14')]();};}function respondWithResult(_0x4cfe4f,_0x1f82c0){_0x1f82c0=_0x1f82c0||0xc8;return function(_0x37e01){if(_0x37e01){return _0x4cfe4f[_0x4a90('0x13')](_0x1f82c0)['json'](_0x37e01);}};}function respondWithFilteredResult(_0x1f3ded,_0x31d8b1){return function(_0xc49d88){if(_0xc49d88){var _0x1bc991=typeof _0x31d8b1[_0x4a90('0x15')]==='undefined'&&typeof _0x31d8b1[_0x4a90('0x16')]===_0x4a90('0x17');var _0x4ae42e=_0xc49d88[_0x4a90('0x18')];var _0x49e448=_0x1bc991?0x0:_0x31d8b1[_0x4a90('0x15')];var _0x1b35a3=_0x1bc991?_0xc49d88[_0x4a90('0x18')]:_0x31d8b1[_0x4a90('0x15')]+_0x31d8b1[_0x4a90('0x16')];var _0x545f2a;if(_0x1b35a3>=_0x4ae42e){_0x1b35a3=_0x4ae42e;_0x545f2a=0xc8;}else{_0x545f2a=0xce;}_0x1f3ded[_0x4a90('0x13')](_0x545f2a);return _0x1f3ded['set'](_0x4a90('0x19'),_0x49e448+'-'+_0x1b35a3+'/'+_0x4ae42e)[_0x4a90('0x1a')](_0xc49d88);}return null;};}function patchUpdates(_0x7e39ea){return function(_0x33d5d2){try{jsonpatch[_0x4a90('0x1b')](_0x33d5d2,_0x7e39ea,!![]);}catch(_0x302d90){return BPromise[_0x4a90('0x1c')](_0x302d90);}return _0x33d5d2[_0x4a90('0x1d')]();};}function saveUpdates(_0x2356a5,_0x87a5f9){return function(_0xca96d0){if(_0xca96d0){return _0xca96d0[_0x4a90('0x1e')](_0x2356a5)[_0x4a90('0x1f')](function(_0x18d586){return _0x18d586;});}return null;};}function removeEntity(_0x2eb324,_0x4a752f){return function(_0x10f7cd){if(_0x10f7cd){return _0x10f7cd[_0x4a90('0x20')]()[_0x4a90('0x1f')](function(){_0x2eb324['status'](0xcc)[_0x4a90('0x14')]();});}};}function handleEntityNotFound(_0x37f3e0,_0x2f3038){return function(_0xd31b55){if(!_0xd31b55){_0x37f3e0['sendStatus'](0x194);}return _0xd31b55;};}function handleError(_0x509e02,_0x548a6d){_0x548a6d=_0x548a6d||0x1f4;return function(_0x2951a3){logger[_0x4a90('0x21')](_0x2951a3['stack']);if(_0x2951a3[_0x4a90('0x22')]){delete _0x2951a3['name'];}_0x509e02['status'](_0x548a6d)[_0x4a90('0x23')](_0x2951a3);};}exports['index']=function(_0x1508b5,_0x108b53){var _0x4135e2={},_0x3a8f14={},_0xd65b52={'count':0x0,'rows':[]};var _0x1bf508=_[_0x4a90('0x24')](db['SmsTransferReport'][_0x4a90('0x25')],function(_0x4ded11){return{'name':_0x4ded11[_0x4a90('0x26')],'type':_0x4ded11[_0x4a90('0x27')][_0x4a90('0x28')]};});_0x3a8f14[_0x4a90('0x29')]=_['map'](_0x1bf508,'name');_0x3a8f14[_0x4a90('0x2a')]=_['keys'](_0x1508b5[_0x4a90('0x2a')]);_0x3a8f14[_0x4a90('0x2b')]=_[_0x4a90('0x2c')](_0x3a8f14[_0x4a90('0x29')],_0x3a8f14[_0x4a90('0x2a')]);_0x4135e2[_0x4a90('0x2d')]=_[_0x4a90('0x2c')](_0x3a8f14[_0x4a90('0x29')],qs['fields'](_0x1508b5['query'][_0x4a90('0x2e')]));_0x4135e2[_0x4a90('0x2d')]=_0x4135e2[_0x4a90('0x2d')]['length']?_0x4135e2[_0x4a90('0x2d')]:_0x3a8f14['model'];if(!_0x1508b5[_0x4a90('0x2a')]['hasOwnProperty']('nolimit')){_0x4135e2[_0x4a90('0x16')]=qs[_0x4a90('0x16')](_0x1508b5[_0x4a90('0x2a')][_0x4a90('0x16')]);_0x4135e2[_0x4a90('0x15')]=qs[_0x4a90('0x15')](_0x1508b5[_0x4a90('0x2a')]['offset']);}_0x4135e2[_0x4a90('0x2f')]=qs[_0x4a90('0x30')](_0x1508b5[_0x4a90('0x2a')][_0x4a90('0x30')]);_0x4135e2['where']=qs[_0x4a90('0x2b')](_[_0x4a90('0x31')](_0x1508b5['query'],_0x3a8f14[_0x4a90('0x2b')]),_0x1bf508);if(_0x1508b5[_0x4a90('0x2a')]['filter']){_0x4135e2[_0x4a90('0x32')]=_[_0x4a90('0x33')](_0x4135e2[_0x4a90('0x32')],{'$or':_[_0x4a90('0x24')](_0x1bf508,function(_0x47f9b2){if(_0x47f9b2[_0x4a90('0x27')]!==_0x4a90('0x34')){var _0xdfa8bb={};_0xdfa8bb[_0x47f9b2[_0x4a90('0x22')]]={'$like':'%'+_0x1508b5[_0x4a90('0x2a')][_0x4a90('0x35')]+'%'};return _0xdfa8bb;}})});}_0x4135e2=_[_0x4a90('0x33')]({},_0x4135e2,_0x1508b5[_0x4a90('0x36')]);var _0x2f6979={'where':_0x4135e2[_0x4a90('0x32')]};return db[_0x4a90('0x37')][_0x4a90('0x18')](_0x2f6979)[_0x4a90('0x1f')](function(_0xf443d9){_0xd65b52[_0x4a90('0x18')]=_0xf443d9;if(_0x1508b5[_0x4a90('0x2a')][_0x4a90('0x38')]){_0x4135e2[_0x4a90('0x39')]=[{'all':!![]}];}return db[_0x4a90('0x37')]['findAll'](_0x4135e2);})[_0x4a90('0x1f')](function(_0x2e3e32){_0xd65b52[_0x4a90('0x3a')]=_0x2e3e32;return _0xd65b52;})[_0x4a90('0x1f')](respondWithFilteredResult(_0x108b53,_0x4135e2))[_0x4a90('0x3b')](handleError(_0x108b53,null));};exports[_0x4a90('0x3c')]=function(_0x14006e,_0x185d7){var _0x1d68ce={'raw':!![],'where':{'id':_0x14006e[_0x4a90('0x3d')]['id']}},_0x1b07db={};_0x1b07db[_0x4a90('0x29')]=_[_0x4a90('0x3e')](db[_0x4a90('0x37')][_0x4a90('0x25')]);_0x1b07db[_0x4a90('0x2a')]=_['keys'](_0x14006e[_0x4a90('0x2a')]);_0x1b07db[_0x4a90('0x2b')]=_[_0x4a90('0x2c')](_0x1b07db[_0x4a90('0x29')],_0x1b07db[_0x4a90('0x2a')]);_0x1d68ce[_0x4a90('0x2d')]=_['intersection'](_0x1b07db[_0x4a90('0x29')],qs[_0x4a90('0x2e')](_0x14006e[_0x4a90('0x2a')][_0x4a90('0x2e')]));_0x1d68ce[_0x4a90('0x2d')]=_0x1d68ce['attributes'][_0x4a90('0x3f')]?_0x1d68ce['attributes']:_0x1b07db[_0x4a90('0x29')];if(_0x14006e[_0x4a90('0x2a')][_0x4a90('0x38')]){_0x1d68ce[_0x4a90('0x39')]=[{'all':!![]}];}_0x1d68ce=_['merge']({},_0x1d68ce,_0x14006e[_0x4a90('0x36')]);return db[_0x4a90('0x37')][_0x4a90('0x40')](_0x1d68ce)[_0x4a90('0x1f')](handleEntityNotFound(_0x185d7,null))[_0x4a90('0x1f')](respondWithResult(_0x185d7,null))[_0x4a90('0x3b')](handleError(_0x185d7,null));};exports[_0x4a90('0x41')]=function(_0x1012ef,_0x3f4841){return db[_0x4a90('0x37')][_0x4a90('0x41')](_0x1012ef[_0x4a90('0x42')],{})[_0x4a90('0x1f')](respondWithResult(_0x3f4841,0xc9))['catch'](handleError(_0x3f4841,null));};exports[_0x4a90('0x1e')]=function(_0x1af5d5,_0x5aec61){if(_0x1af5d5['body']['id']){delete _0x1af5d5['body']['id'];}return db[_0x4a90('0x37')]['find']({'where':{'id':_0x1af5d5[_0x4a90('0x3d')]['id']}})[_0x4a90('0x1f')](handleEntityNotFound(_0x5aec61,null))[_0x4a90('0x1f')](saveUpdates(_0x1af5d5[_0x4a90('0x42')],null))[_0x4a90('0x1f')](respondWithResult(_0x5aec61,null))[_0x4a90('0x3b')](handleError(_0x5aec61,null));};exports['destroy']=function(_0x506c7f,_0x4e53ee){return db[_0x4a90('0x37')][_0x4a90('0x40')]({'where':{'id':_0x506c7f[_0x4a90('0x3d')]['id']}})[_0x4a90('0x1f')](handleEntityNotFound(_0x4e53ee,null))[_0x4a90('0x1f')](removeEntity(_0x4e53ee,null))[_0x4a90('0x3b')](handleError(_0x4e53ee,null));};exports[_0x4a90('0x43')]=function(_0x7e8ba6,_0x3b9bc4){return db[_0x4a90('0x37')][_0x4a90('0x43')]()[_0x4a90('0x1f')](respondWithResult(_0x3b9bc4,null))[_0x4a90('0x3b')](handleError(_0x3b9bc4,null));};
\ No newline at end of file
+var _0xf5e5=['rows','catch','show','params','rawAttributes','find','create','body','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','then','destroy','end','sendStatus','error','name','send','index','map','SmsTransferReport','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0xf5e5,0xf3));var _0x5f5e=function(_0x57cf37,_0x149b89){_0x57cf37=_0x57cf37-0x0;var _0x2df46f=_0xf5e5[_0x57cf37];return _0x2df46f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5f5e('0x0'));var zipdir=require(_0x5f5e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5f5e('0x2'));var moment=require('moment');var BPromise=require(_0x5f5e('0x3'));var Mustache=require(_0x5f5e('0x4'));var util=require(_0x5f5e('0x5'));var path=require(_0x5f5e('0x6'));var sox=require(_0x5f5e('0x7'));var csv=require(_0x5f5e('0x8'));var ejs=require(_0x5f5e('0x9'));var fs=require('fs');var fs_extra=require(_0x5f5e('0xa'));var _=require(_0x5f5e('0xb'));var squel=require(_0x5f5e('0xc'));var crypto=require(_0x5f5e('0xd'));var jsforce=require(_0x5f5e('0xe'));var deskjs=require(_0x5f5e('0xf'));var toCsv=require(_0x5f5e('0x8'));var querystring=require(_0x5f5e('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5f5e('0x11'));var qs=require(_0x5f5e('0x12'));var as=require(_0x5f5e('0x13'));var hardwareService=require(_0x5f5e('0x14'));var logger=require(_0x5f5e('0x15'))(_0x5f5e('0x16'));var utils=require(_0x5f5e('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5f5e('0x18'));var db=require(_0x5f5e('0x19'))['db'];function respondWithStatusCode(_0x3581db,_0xd3bd3a){_0xd3bd3a=_0xd3bd3a||0xcc;return function(_0x571974){if(_0x571974){return _0x3581db['sendStatus'](_0xd3bd3a);}return _0x3581db[_0x5f5e('0x1a')](_0xd3bd3a)['end']();};}function respondWithResult(_0x22e7be,_0x370214){_0x370214=_0x370214||0xc8;return function(_0x597627){if(_0x597627){return _0x22e7be[_0x5f5e('0x1a')](_0x370214)['json'](_0x597627);}};}function respondWithFilteredResult(_0x485eb6,_0x2ca536){return function(_0x41274e){if(_0x41274e){var _0x45110f=typeof _0x2ca536[_0x5f5e('0x1b')]==='undefined'&&typeof _0x2ca536[_0x5f5e('0x1c')]===_0x5f5e('0x1d');var _0x3330c5=_0x41274e[_0x5f5e('0x1e')];var _0x480ed2=_0x45110f?0x0:_0x2ca536['offset'];var _0xc33d28=_0x45110f?_0x41274e['count']:_0x2ca536[_0x5f5e('0x1b')]+_0x2ca536[_0x5f5e('0x1c')];var _0x59aeac;if(_0xc33d28>=_0x3330c5){_0xc33d28=_0x3330c5;_0x59aeac=0xc8;}else{_0x59aeac=0xce;}_0x485eb6[_0x5f5e('0x1a')](_0x59aeac);return _0x485eb6[_0x5f5e('0x1f')](_0x5f5e('0x20'),_0x480ed2+'-'+_0xc33d28+'/'+_0x3330c5)[_0x5f5e('0x21')](_0x41274e);}return null;};}function patchUpdates(_0xe7bb67){return function(_0x56365c){try{jsonpatch['apply'](_0x56365c,_0xe7bb67,!![]);}catch(_0x233c04){return BPromise[_0x5f5e('0x22')](_0x233c04);}return _0x56365c[_0x5f5e('0x23')]();};}function saveUpdates(_0x9e6e20,_0x16a01d){return function(_0x29aac2){if(_0x29aac2){return _0x29aac2[_0x5f5e('0x24')](_0x9e6e20)[_0x5f5e('0x25')](function(_0xbf0b9d){return _0xbf0b9d;});}return null;};}function removeEntity(_0x4acc29,_0x422fc3){return function(_0x2cafc0){if(_0x2cafc0){return _0x2cafc0[_0x5f5e('0x26')]()[_0x5f5e('0x25')](function(){_0x4acc29['status'](0xcc)[_0x5f5e('0x27')]();});}};}function handleEntityNotFound(_0x5a97d5,_0x6b3207){return function(_0x3014af){if(!_0x3014af){_0x5a97d5[_0x5f5e('0x28')](0x194);}return _0x3014af;};}function handleError(_0x16a38d,_0x2faa8a){_0x2faa8a=_0x2faa8a||0x1f4;return function(_0x125473){logger[_0x5f5e('0x29')](_0x125473['stack']);if(_0x125473[_0x5f5e('0x2a')]){delete _0x125473[_0x5f5e('0x2a')];}_0x16a38d[_0x5f5e('0x1a')](_0x2faa8a)[_0x5f5e('0x2b')](_0x125473);};}exports[_0x5f5e('0x2c')]=function(_0x2b2b86,_0x3b7aec){var _0x3241b1={},_0x3807c7={},_0x1a4e1f={'count':0x0,'rows':[]};var _0x595f14=_[_0x5f5e('0x2d')](db[_0x5f5e('0x2e')]['rawAttributes'],function(_0x17ee0e){return{'name':_0x17ee0e[_0x5f5e('0x2f')],'type':_0x17ee0e['type'][_0x5f5e('0x30')]};});_0x3807c7[_0x5f5e('0x31')]=_['map'](_0x595f14,_0x5f5e('0x2a'));_0x3807c7[_0x5f5e('0x32')]=_[_0x5f5e('0x33')](_0x2b2b86[_0x5f5e('0x32')]);_0x3807c7['filters']=_['intersection'](_0x3807c7['model'],_0x3807c7[_0x5f5e('0x32')]);_0x3241b1[_0x5f5e('0x34')]=_[_0x5f5e('0x35')](_0x3807c7[_0x5f5e('0x31')],qs[_0x5f5e('0x36')](_0x2b2b86['query'][_0x5f5e('0x36')]));_0x3241b1['attributes']=_0x3241b1[_0x5f5e('0x34')][_0x5f5e('0x37')]?_0x3241b1[_0x5f5e('0x34')]:_0x3807c7[_0x5f5e('0x31')];if(!_0x2b2b86[_0x5f5e('0x32')][_0x5f5e('0x38')]('nolimit')){_0x3241b1[_0x5f5e('0x1c')]=qs['limit'](_0x2b2b86[_0x5f5e('0x32')]['limit']);_0x3241b1['offset']=qs['offset'](_0x2b2b86[_0x5f5e('0x32')][_0x5f5e('0x1b')]);}_0x3241b1['order']=qs[_0x5f5e('0x39')](_0x2b2b86[_0x5f5e('0x32')][_0x5f5e('0x39')]);_0x3241b1['where']=qs[_0x5f5e('0x3a')](_[_0x5f5e('0x3b')](_0x2b2b86['query'],_0x3807c7['filters']),_0x595f14);if(_0x2b2b86['query'][_0x5f5e('0x3c')]){_0x3241b1[_0x5f5e('0x3d')]=_[_0x5f5e('0x3e')](_0x3241b1[_0x5f5e('0x3d')],{'$or':_[_0x5f5e('0x2d')](_0x595f14,function(_0x12e32e){if(_0x12e32e[_0x5f5e('0x3f')]!==_0x5f5e('0x40')){var _0x442f88={};_0x442f88[_0x12e32e[_0x5f5e('0x2a')]]={'$like':'%'+_0x2b2b86[_0x5f5e('0x32')][_0x5f5e('0x3c')]+'%'};return _0x442f88;}})});}_0x3241b1=_['merge']({},_0x3241b1,_0x2b2b86[_0x5f5e('0x41')]);var _0x15b8c3={'where':_0x3241b1[_0x5f5e('0x3d')]};return db[_0x5f5e('0x2e')]['count'](_0x15b8c3)[_0x5f5e('0x25')](function(_0x9430a0){_0x1a4e1f[_0x5f5e('0x1e')]=_0x9430a0;if(_0x2b2b86[_0x5f5e('0x32')][_0x5f5e('0x42')]){_0x3241b1[_0x5f5e('0x43')]=[{'all':!![]}];}return db[_0x5f5e('0x2e')][_0x5f5e('0x44')](_0x3241b1);})['then'](function(_0x5d2c86){_0x1a4e1f[_0x5f5e('0x45')]=_0x5d2c86;return _0x1a4e1f;})[_0x5f5e('0x25')](respondWithFilteredResult(_0x3b7aec,_0x3241b1))[_0x5f5e('0x46')](handleError(_0x3b7aec,null));};exports[_0x5f5e('0x47')]=function(_0x1f8b68,_0x4b8eae){var _0x3816bc={'raw':!![],'where':{'id':_0x1f8b68[_0x5f5e('0x48')]['id']}},_0x147d59={};_0x147d59[_0x5f5e('0x31')]=_[_0x5f5e('0x33')](db[_0x5f5e('0x2e')][_0x5f5e('0x49')]);_0x147d59[_0x5f5e('0x32')]=_[_0x5f5e('0x33')](_0x1f8b68[_0x5f5e('0x32')]);_0x147d59['filters']=_['intersection'](_0x147d59[_0x5f5e('0x31')],_0x147d59[_0x5f5e('0x32')]);_0x3816bc[_0x5f5e('0x34')]=_[_0x5f5e('0x35')](_0x147d59[_0x5f5e('0x31')],qs[_0x5f5e('0x36')](_0x1f8b68[_0x5f5e('0x32')][_0x5f5e('0x36')]));_0x3816bc[_0x5f5e('0x34')]=_0x3816bc[_0x5f5e('0x34')]['length']?_0x3816bc[_0x5f5e('0x34')]:_0x147d59[_0x5f5e('0x31')];if(_0x1f8b68['query'][_0x5f5e('0x42')]){_0x3816bc[_0x5f5e('0x43')]=[{'all':!![]}];}_0x3816bc=_[_0x5f5e('0x3e')]({},_0x3816bc,_0x1f8b68[_0x5f5e('0x41')]);return db[_0x5f5e('0x2e')][_0x5f5e('0x4a')](_0x3816bc)[_0x5f5e('0x25')](handleEntityNotFound(_0x4b8eae,null))['then'](respondWithResult(_0x4b8eae,null))[_0x5f5e('0x46')](handleError(_0x4b8eae,null));};exports['create']=function(_0x396c63,_0x24ccd8){return db[_0x5f5e('0x2e')][_0x5f5e('0x4b')](_0x396c63[_0x5f5e('0x4c')],{})[_0x5f5e('0x25')](respondWithResult(_0x24ccd8,0xc9))[_0x5f5e('0x46')](handleError(_0x24ccd8,null));};exports['update']=function(_0x1a8c4c,_0x258ebf){if(_0x1a8c4c[_0x5f5e('0x4c')]['id']){delete _0x1a8c4c[_0x5f5e('0x4c')]['id'];}return db[_0x5f5e('0x2e')][_0x5f5e('0x4a')]({'where':{'id':_0x1a8c4c[_0x5f5e('0x48')]['id']}})[_0x5f5e('0x25')](handleEntityNotFound(_0x258ebf,null))['then'](saveUpdates(_0x1a8c4c[_0x5f5e('0x4c')],null))[_0x5f5e('0x25')](respondWithResult(_0x258ebf,null))[_0x5f5e('0x46')](handleError(_0x258ebf,null));};exports[_0x5f5e('0x26')]=function(_0xae92c1,_0x5c35ca){return db[_0x5f5e('0x2e')][_0x5f5e('0x4a')]({'where':{'id':_0xae92c1[_0x5f5e('0x48')]['id']}})['then'](handleEntityNotFound(_0x5c35ca,null))['then'](removeEntity(_0x5c35ca,null))[_0x5f5e('0x46')](handleError(_0x5c35ca,null));};exports[_0x5f5e('0x4d')]=function(_0x80a590,_0x49d0b8){return db['SmsTransferReport'][_0x5f5e('0x4d')]()[_0x5f5e('0x25')](respondWithResult(_0x49d0b8,null))[_0x5f5e('0x46')](handleError(_0x49d0b8,null));};
\ No newline at end of file
index 4af6b50..2110198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23fc=['define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./smsTransferReport.attributes','exports'];(function(_0x4ce4bb,_0x4997f4){var _0x1a3aad=function(_0x555bad){while(--_0x555bad){_0x4ce4bb['push'](_0x4ce4bb['shift']());}};_0x1a3aad(++_0x4997f4);}(_0x23fc,0x10e));var _0xc23f=function(_0x80f51a,_0x32e95e){_0x80f51a=_0x80f51a-0x0;var _0x327148=_0x23fc[_0x80f51a];return _0x327148;};'use strict';var _=require(_0xc23f('0x0'));var util=require(_0xc23f('0x1'));var logger=require(_0xc23f('0x2'))(_0xc23f('0x3'));var moment=require('moment');var BPromise=require(_0xc23f('0x4'));var rp=require(_0xc23f('0x5'));var fs=require('fs');var path=require(_0xc23f('0x6'));var rimraf=require(_0xc23f('0x7'));var config=require('../../config/environment');var attributes=require(_0xc23f('0x8'));module[_0xc23f('0x9')]=function(_0x3ebad6,_0x53d32b){return _0x3ebad6[_0xc23f('0xa')](_0xc23f('0xb'),attributes,{'tableName':_0xc23f('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc23f('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x84cf=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','report_sms_transfer','uniqueid','lodash','../../config/logger','api'];(function(_0x189752,_0x1669e7){var _0x33fc1d=function(_0x5400f8){while(--_0x5400f8){_0x189752['push'](_0x189752['shift']());}};_0x33fc1d(++_0x1669e7);}(_0x84cf,0x176));var _0xf84c=function(_0x79ebfc,_0x24519a){_0x79ebfc=_0x79ebfc-0x0;var _0x3d22a9=_0x84cf[_0x79ebfc];return _0x3d22a9;};'use strict';var _=require(_0xf84c('0x0'));var util=require('util');var logger=require(_0xf84c('0x1'))(_0xf84c('0x2'));var moment=require(_0xf84c('0x3'));var BPromise=require(_0xf84c('0x4'));var rp=require(_0xf84c('0x5'));var fs=require('fs');var path=require(_0xf84c('0x6'));var rimraf=require(_0xf84c('0x7'));var config=require(_0xf84c('0x8'));var attributes=require('./smsTransferReport.attributes');module[_0xf84c('0x9')]=function(_0x1520f0,_0x43af8c){return _0x1520f0[_0xf84c('0xa')]('SmsTransferReport',attributes,{'tableName':_0xf84c('0xb'),'paranoid':![],'indexes':[{'name':_0xf84c('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 93ed8f1..d82e406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56da=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','SmsTransferReport,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x56da,0x119));var _0xa56d=function(_0x324645,_0xdc9c60){_0x324645=_0x324645-0x0;var _0x518909=_0x56da[_0x324645];return _0x518909;};'use strict';var _=require(_0xa56d('0x0'));var util=require('util');var moment=require(_0xa56d('0x1'));var BPromise=require(_0xa56d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa56d('0x3'));var db=require(_0xa56d('0x4'))['db'];var utils=require(_0xa56d('0x5'));var logger=require(_0xa56d('0x6'))(_0xa56d('0x7'));var config=require(_0xa56d('0x8'));var jayson=require(_0xa56d('0x9'));var client=jayson[_0xa56d('0xa')][_0xa56d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x107e9b,_0xf696b6,_0x53f682){return new BPromise(function(_0x577926,_0xeeca5f){return client[_0xa56d('0xc')](_0x107e9b,_0x53f682)[_0xa56d('0xd')](function(_0x100015){logger[_0xa56d('0xe')]('SmsTransferReport,\x20%s,\x20%s',_0xf696b6,'request\x20sent');logger[_0xa56d('0xf')](_0xa56d('0x10'),_0xf696b6,_0xa56d('0x11'),JSON['stringify'](_0x100015));if(_0x100015[_0xa56d('0x12')]){if(_0x100015[_0xa56d('0x12')][_0xa56d('0x13')]===0x1f4){logger['error'](_0xa56d('0x14'),_0xf696b6,_0x100015[_0xa56d('0x12')][_0xa56d('0x15')]);return _0xeeca5f(_0x100015[_0xa56d('0x12')][_0xa56d('0x15')]);}logger[_0xa56d('0x12')](_0xa56d('0x14'),_0xf696b6,_0x100015[_0xa56d('0x12')]['message']);return _0x577926(_0x100015[_0xa56d('0x12')][_0xa56d('0x15')]);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0xf696b6,_0xa56d('0x11'));_0x577926(_0x100015[_0xa56d('0x16')][_0xa56d('0x15')]);}})[_0xa56d('0x17')](function(_0x23c01f){logger['error'](_0xa56d('0x14'),_0xf696b6,_0x23c01f);_0xeeca5f(_0x23c01f);});});}
\ No newline at end of file
+var _0x6e12=['stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','SmsTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x49c519,_0x1d6bbe){var _0x3d1a05=function(_0x20ea4b){while(--_0x20ea4b){_0x49c519['push'](_0x49c519['shift']());}};_0x3d1a05(++_0x1d6bbe);}(_0x6e12,0x154));var _0x26e1=function(_0x573862,_0xed03cb){_0x573862=_0x573862-0x0;var _0x439da5=_0x6e12[_0x573862];return _0x439da5;};'use strict';var _=require(_0x26e1('0x0'));var util=require(_0x26e1('0x1'));var moment=require(_0x26e1('0x2'));var BPromise=require(_0x26e1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x26e1('0x4'));var db=require(_0x26e1('0x5'))['db'];var utils=require(_0x26e1('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x26e1('0x7'));var jayson=require(_0x26e1('0x8'));var client=jayson[_0x26e1('0x9')][_0x26e1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb8941a,_0x4b4fd5,_0x3d543a){return new BPromise(function(_0x3e594f,_0xdabd67){return client[_0x26e1('0xb')](_0xb8941a,_0x3d543a)[_0x26e1('0xc')](function(_0x52fc56){logger[_0x26e1('0xd')](_0x26e1('0xe'),_0x4b4fd5,_0x26e1('0xf'));logger['debug'](_0x26e1('0x10'),_0x4b4fd5,_0x26e1('0xf'),JSON[_0x26e1('0x11')](_0x52fc56));if(_0x52fc56[_0x26e1('0x12')]){if(_0x52fc56[_0x26e1('0x12')]['code']===0x1f4){logger[_0x26e1('0x12')](_0x26e1('0xe'),_0x4b4fd5,_0x52fc56[_0x26e1('0x12')]['message']);return _0xdabd67(_0x52fc56[_0x26e1('0x12')][_0x26e1('0x13')]);}logger[_0x26e1('0x12')](_0x26e1('0xe'),_0x4b4fd5,_0x52fc56['error']['message']);return _0x3e594f(_0x52fc56[_0x26e1('0x12')][_0x26e1('0x13')]);}else{logger[_0x26e1('0xd')](_0x26e1('0xe'),_0x4b4fd5,_0x26e1('0xf'));_0x3e594f(_0x52fc56['result'][_0x26e1('0x13')]);}})[_0x26e1('0x14')](function(_0x545727){logger[_0x26e1('0x12')](_0x26e1('0xe'),_0x4b4fd5,_0x545727);_0xdabd67(_0x545727);});});}
\ No newline at end of file
index ace1e0a..57edb22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30b=['delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./sound.controller','isAuthenticated','index','get','show','download','join','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single','file','create','put','/:id','update'];(function(_0x5ca453,_0x52531a){var _0x1661d5=function(_0x5e9681){while(--_0x5e9681){_0x5ca453['push'](_0x5ca453['shift']());}};_0x1661d5(++_0x52531a);}(_0xd30b,0x157));var _0xbd30=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0xd30b[_0xa8883];return _0x479426;};'use strict';var multer=require(_0xbd30('0x0'));var util=require('util');var path=require(_0xbd30('0x1'));var timeout=require(_0xbd30('0x2'));var express=require(_0xbd30('0x3'));var router=express[_0xbd30('0x4')]();var fs_extra=require(_0xbd30('0x5'));var auth=require(_0xbd30('0x6'));var interaction=require(_0xbd30('0x7'));var config=require('../../config/environment');var controller=require(_0xbd30('0x8'));router['get']('/',auth[_0xbd30('0x9')](),controller[_0xbd30('0xa')]);router[_0xbd30('0xb')]('/:id',auth[_0xbd30('0x9')](),controller[_0xbd30('0xc')]);router[_0xbd30('0xb')]('/:id/download',auth['isAuthenticated'](),controller[_0xbd30('0xd')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1908ac,_0x246e0b,_0x1ea501){_0x1ea501(null,path[_0xbd30('0xe')](config['root'],_0xbd30('0xf')));},'filename':function(_0x58c2b1,_0x4a2474,_0x1b5386){_0x4a2474[_0xbd30('0x10')]=_0x4a2474[_0xbd30('0x10')][_0xbd30('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1b5386(null,util[_0xbd30('0x12')](_0xbd30('0x13'),path['basename'](_0x4a2474[_0xbd30('0x10')],path[_0xbd30('0x14')](_0x4a2474[_0xbd30('0x10')])),Date[_0xbd30('0x15')](),path['extname'](_0x4a2474['originalname'])));}})});router[_0xbd30('0x16')]('/',upload[_0xbd30('0x17')](_0xbd30('0x18')),controller[_0xbd30('0x19')]);router[_0xbd30('0x1a')](_0xbd30('0x1b'),auth[_0xbd30('0x9')](),controller[_0xbd30('0x1c')]);router[_0xbd30('0x1d')](_0xbd30('0x1b'),auth[_0xbd30('0x9')](),controller['delete']);module[_0xbd30('0x1e')]=router;
\ No newline at end of file
+var _0x26bc=['update','delete','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','%s-%s%s','basename','extname','post','single'];(function(_0x6ce0f8,_0x4386e8){var _0x57aa13=function(_0x32edd0){while(--_0x32edd0){_0x6ce0f8['push'](_0x6ce0f8['shift']());}};_0x57aa13(++_0x4386e8);}(_0x26bc,0x1d7));var _0xc26b=function(_0x5e8dc2,_0x44ceb4){_0x5e8dc2=_0x5e8dc2-0x0;var _0x4cd709=_0x26bc[_0x5e8dc2];return _0x4cd709;};'use strict';var multer=require(_0xc26b('0x0'));var util=require(_0xc26b('0x1'));var path=require(_0xc26b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc26b('0x3')]();var fs_extra=require(_0xc26b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc26b('0x5'));var config=require('../../config/environment');var controller=require(_0xc26b('0x6'));router[_0xc26b('0x7')]('/',auth[_0xc26b('0x8')](),controller[_0xc26b('0x9')]);router[_0xc26b('0x7')](_0xc26b('0xa'),auth[_0xc26b('0x8')](),controller[_0xc26b('0xb')]);router[_0xc26b('0x7')](_0xc26b('0xc'),auth['isAuthenticated'](),controller[_0xc26b('0xd')]);var upload=multer({'storage':multer[_0xc26b('0xe')]({'destination':function(_0xb13933,_0x55ce3b,_0x41494f){_0x41494f(null,path[_0xc26b('0xf')](config['root'],_0xc26b('0x10')));},'filename':function(_0x27e1eb,_0x2cf5a7,_0x5a912a){_0x2cf5a7[_0xc26b('0x11')]=_0x2cf5a7[_0xc26b('0x11')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5a912a(null,util['format'](_0xc26b('0x12'),path[_0xc26b('0x13')](_0x2cf5a7[_0xc26b('0x11')],path[_0xc26b('0x14')](_0x2cf5a7['originalname'])),Date['now'](),path[_0xc26b('0x14')](_0x2cf5a7[_0xc26b('0x11')])));}})});router[_0xc26b('0x15')]('/',upload[_0xc26b('0x16')]('file'),controller['create']);router['put']('/:id',auth[_0xc26b('0x8')](),controller[_0xc26b('0x17')]);router[_0xc26b('0x18')](_0xc26b('0xa'),auth[_0xc26b('0x8')](),controller['delete']);module[_0xc26b('0x19')]=router;
\ No newline at end of file
index 48f4cc0..c34f51e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24d1=['sequelize','exports','STRING','BIGINT','INTEGER'];(function(_0x572613,_0x39eb0f){var _0x1afa69=function(_0x1b14d4){while(--_0x1b14d4){_0x572613['push'](_0x572613['shift']());}};_0x1afa69(++_0x39eb0f);}(_0x24d1,0x1a4));var _0x124d=function(_0x4a5cac,_0x7a52cf){_0x4a5cac=_0x4a5cac-0x0;var _0x14dc35=_0x24d1[_0x4a5cac];return _0x14dc35;};'use strict';var Sequelize=require(_0x124d('0x0'));module[_0x124d('0x1')]={'name':{'type':Sequelize[_0x124d('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0x124d('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x124d('0x3')]},'original_channelCount':{'type':Sequelize[_0x124d('0x4')]},'original_bitRate':{'type':Sequelize[_0x124d('0x3')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x124d('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x124d('0x4')]},'converted_bitRate':{'type':Sequelize[_0x124d('0x3')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x7029=['STRING','name','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x17997a,_0x5e19a1){var _0x53ca34=function(_0x1aee6d){while(--_0x1aee6d){_0x17997a['push'](_0x17997a['shift']());}};_0x53ca34(++_0x5e19a1);}(_0x7029,0x101));var _0x9702=function(_0x11aed0,_0x4089f3){_0x11aed0=_0x11aed0-0x0;var _0x8d889d=_0x7029[_0x11aed0];return _0x8d889d;};'use strict';var Sequelize=require(_0x9702('0x0'));module['exports']={'name':{'type':Sequelize[_0x9702('0x1')],'unique':_0x9702('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x9702('0x1')]},'display_name':{'type':Sequelize[_0x9702('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x9702('0x1')]},'original_format':{'type':Sequelize[_0x9702('0x1')]},'original_duration':{'type':Sequelize[_0x9702('0x3')]},'original_sampleCount':{'type':Sequelize[_0x9702('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0x9702('0x4')]},'original_sampleRate':{'type':Sequelize[_0x9702('0x5')]},'converted_format':{'type':Sequelize[_0x9702('0x1')]},'converted_duration':{'type':Sequelize[_0x9702('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x9702('0x4')]},'converted_channelCount':{'type':Sequelize[_0x9702('0x5')]},'converted_bitRate':{'type':Sequelize[_0x9702('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 0d52e13..c9d91f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x148c=['UserProfileResource','sendStatus','stack','name','send','index','map','Sound','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','type','merge','options','includeAll','include','findAll','rows','show','params','catch','download','find','save_name','join','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','format','%s.%s','converted_format','create','basename','originalname','file','filename','extname','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_sampleRate','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','description','delete','original_format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','Sounds'];(function(_0x3b4493,_0x106e71){var _0x28fc72=function(_0x1c6ec5){while(--_0x1c6ec5){_0x3b4493['push'](_0x3b4493['shift']());}};_0x28fc72(++_0x106e71);}(_0x148c,0x15a));var _0xc148=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x148c[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc148('0x0'));var zipdir=require(_0xc148('0x1'));var jsonpatch=require(_0xc148('0x2'));var rp=require('request-promise');var moment=require(_0xc148('0x3'));var BPromise=require(_0xc148('0x4'));var Mustache=require(_0xc148('0x5'));var util=require('util');var path=require(_0xc148('0x6'));var sox=require(_0xc148('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc148('0x8'));var _=require(_0xc148('0x9'));var squel=require(_0xc148('0xa'));var crypto=require(_0xc148('0xb'));var jsforce=require(_0xc148('0xc'));var deskjs=require(_0xc148('0xd'));var toCsv=require(_0xc148('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc148('0xf'));var authService=require(_0xc148('0x10'));var qs=require(_0xc148('0x11'));var as=require(_0xc148('0x12'));var hardwareService=require(_0xc148('0x13'));var logger=require(_0xc148('0x14'))('api');var utils=require(_0xc148('0x15'));var config=require(_0xc148('0x16'));var licenseUtil=require(_0xc148('0x17'));var db=require(_0xc148('0x18'))['db'];function respondWithStatusCode(_0x19fd62,_0x36413c){_0x36413c=_0x36413c||0xcc;return function(_0x2be779){if(_0x2be779){return _0x19fd62['sendStatus'](_0x36413c);}return _0x19fd62[_0xc148('0x19')](_0x36413c)[_0xc148('0x1a')]();};}function respondWithResult(_0x3f4a23,_0x403d79){_0x403d79=_0x403d79||0xc8;return function(_0x1f58a8){if(_0x1f58a8){return _0x3f4a23[_0xc148('0x19')](_0x403d79)[_0xc148('0x1b')](_0x1f58a8);}};}function respondWithFilteredResult(_0x15b2c8,_0x54004b){return function(_0x3b7287){if(_0x3b7287){var _0x264305=typeof _0x54004b[_0xc148('0x1c')]===_0xc148('0x1d')&&typeof _0x54004b[_0xc148('0x1e')]===_0xc148('0x1d');var _0x4a2f56=_0x3b7287[_0xc148('0x1f')];var _0xe9b65b=_0x264305?0x0:_0x54004b['offset'];var _0x58311b=_0x264305?_0x3b7287[_0xc148('0x1f')]:_0x54004b[_0xc148('0x1c')]+_0x54004b['limit'];var _0x5cc335;if(_0x58311b>=_0x4a2f56){_0x58311b=_0x4a2f56;_0x5cc335=0xc8;}else{_0x5cc335=0xce;}_0x15b2c8[_0xc148('0x19')](_0x5cc335);return _0x15b2c8['set'](_0xc148('0x20'),_0xe9b65b+'-'+_0x58311b+'/'+_0x4a2f56)[_0xc148('0x1b')](_0x3b7287);}return null;};}function patchUpdates(_0x28d58b){return function(_0x312722){try{jsonpatch[_0xc148('0x21')](_0x312722,_0x28d58b,!![]);}catch(_0xf3f709){return BPromise[_0xc148('0x22')](_0xf3f709);}return _0x312722[_0xc148('0x23')]();};}function saveUpdates(_0x2c59a6,_0x467323){return function(_0x4501b6){if(_0x4501b6){return _0x4501b6[_0xc148('0x24')](_0x2c59a6)[_0xc148('0x25')](function(_0x4aaef9){return _0x4aaef9;});}return null;};}function removeEntity(_0x3d29ff,_0x19994d){return function(_0xd28771){if(_0xd28771){return _0xd28771[_0xc148('0x26')]()[_0xc148('0x25')](function(){var _0x2b9139=_0xd28771[_0xc148('0x27')]({'plain':!![]});var _0x5906b1=_0xc148('0x28');return db[_0xc148('0x29')][_0xc148('0x26')]({'where':{'type':_0x5906b1,'resourceId':_0x2b9139['id']}})[_0xc148('0x25')](function(){return _0xd28771;});})[_0xc148('0x25')](function(){_0x3d29ff[_0xc148('0x19')](0xcc)[_0xc148('0x1a')]();});}};}function handleEntityNotFound(_0x2c2f6c,_0x25a3a4){return function(_0x43a499){if(!_0x43a499){_0x2c2f6c[_0xc148('0x2a')](0x194);}return _0x43a499;};}function handleError(_0x1846fa,_0x37614e){_0x37614e=_0x37614e||0x1f4;return function(_0xdd2842){logger['error'](_0xdd2842[_0xc148('0x2b')]);if(_0xdd2842[_0xc148('0x2c')]){delete _0xdd2842[_0xc148('0x2c')];}_0x1846fa[_0xc148('0x19')](_0x37614e)[_0xc148('0x2d')](_0xdd2842);};}exports[_0xc148('0x2e')]=function(_0x33a790,_0x4cece0){var _0x53b7b9={},_0x44381d={},_0x21849d={'count':0x0,'rows':[]};var _0x1bfedb=_[_0xc148('0x2f')](db[_0xc148('0x30')][_0xc148('0x31')],function(_0x2bb4de){return{'name':_0x2bb4de[_0xc148('0x32')],'type':_0x2bb4de['type'][_0xc148('0x33')]};});_0x44381d['model']=_[_0xc148('0x2f')](_0x1bfedb,_0xc148('0x2c'));_0x44381d[_0xc148('0x34')]=_[_0xc148('0x35')](_0x33a790[_0xc148('0x34')]);_0x44381d[_0xc148('0x36')]=_[_0xc148('0x37')](_0x44381d[_0xc148('0x38')],_0x44381d[_0xc148('0x34')]);_0x53b7b9[_0xc148('0x39')]=_[_0xc148('0x37')](_0x44381d['model'],qs[_0xc148('0x3a')](_0x33a790[_0xc148('0x34')][_0xc148('0x3a')]));_0x53b7b9[_0xc148('0x39')]=_0x53b7b9[_0xc148('0x39')][_0xc148('0x3b')]?_0x53b7b9[_0xc148('0x39')]:_0x44381d['model'];if(!_0x33a790[_0xc148('0x34')][_0xc148('0x3c')](_0xc148('0x3d'))){_0x53b7b9[_0xc148('0x1e')]=qs['limit'](_0x33a790[_0xc148('0x34')][_0xc148('0x1e')]);_0x53b7b9[_0xc148('0x1c')]=qs[_0xc148('0x1c')](_0x33a790[_0xc148('0x34')]['offset']);}_0x53b7b9['order']=qs['sort'](_0x33a790[_0xc148('0x34')][_0xc148('0x3e')]);_0x53b7b9[_0xc148('0x3f')]=qs[_0xc148('0x36')](_['pick'](_0x33a790['query'],_0x44381d['filters']),_0x1bfedb);if(_0x33a790[_0xc148('0x34')][_0xc148('0x40')]){_0x53b7b9['where']=_['merge'](_0x53b7b9[_0xc148('0x3f')],{'$or':_[_0xc148('0x2f')](_0x1bfedb,function(_0x51f7bb){if(_0x51f7bb[_0xc148('0x41')]!=='VIRTUAL'){var _0x5a5a49={};_0x5a5a49[_0x51f7bb['name']]={'$like':'%'+_0x33a790[_0xc148('0x34')]['filter']+'%'};return _0x5a5a49;}})});}_0x53b7b9=_[_0xc148('0x42')]({},_0x53b7b9,_0x33a790[_0xc148('0x43')]);var _0xf56b5e={'where':_0x53b7b9[_0xc148('0x3f')]};return db[_0xc148('0x30')][_0xc148('0x1f')](_0xf56b5e)[_0xc148('0x25')](function(_0x2f1f41){_0x21849d[_0xc148('0x1f')]=_0x2f1f41;if(_0x33a790['query'][_0xc148('0x44')]){_0x53b7b9[_0xc148('0x45')]=[{'all':!![]}];}return db[_0xc148('0x30')][_0xc148('0x46')](_0x53b7b9);})[_0xc148('0x25')](function(_0xccaac1){_0x21849d[_0xc148('0x47')]=_0xccaac1;return _0x21849d;})['then'](respondWithFilteredResult(_0x4cece0,_0x53b7b9))['catch'](handleError(_0x4cece0,null));};exports[_0xc148('0x48')]=function(_0x43b72f,_0x4c60e5){var _0xb7329a={'raw':!![],'where':{'id':_0x43b72f[_0xc148('0x49')]['id']}},_0x253482={};_0x253482[_0xc148('0x38')]=_[_0xc148('0x35')](db['Sound'][_0xc148('0x31')]);_0x253482[_0xc148('0x34')]=_['keys'](_0x43b72f[_0xc148('0x34')]);_0x253482['filters']=_[_0xc148('0x37')](_0x253482[_0xc148('0x38')],_0x253482[_0xc148('0x34')]);_0xb7329a[_0xc148('0x39')]=_[_0xc148('0x37')](_0x253482[_0xc148('0x38')],qs[_0xc148('0x3a')](_0x43b72f['query'][_0xc148('0x3a')]));_0xb7329a[_0xc148('0x39')]=_0xb7329a[_0xc148('0x39')]['length']?_0xb7329a[_0xc148('0x39')]:_0x253482['model'];if(_0x43b72f[_0xc148('0x34')][_0xc148('0x44')]){_0xb7329a['include']=[{'all':!![]}];}_0xb7329a=_[_0xc148('0x42')]({},_0xb7329a,_0x43b72f[_0xc148('0x43')]);return db[_0xc148('0x30')]['find'](_0xb7329a)[_0xc148('0x25')](handleEntityNotFound(_0x4c60e5,null))['then'](respondWithResult(_0x4c60e5,null))[_0xc148('0x4a')](handleError(_0x4c60e5,null));};exports[_0xc148('0x4b')]=function(_0x1ed06d,_0x518655,_0x506f20){return db['Sound'][_0xc148('0x4c')]({'where':{'id':_0x1ed06d[_0xc148('0x49')]['id']},'attributes':[_0xc148('0x2c'),_0xc148('0x4d'),'converted_format'],'raw':!![]})[_0xc148('0x25')](handleEntityNotFound(_0x518655,null))[_0xc148('0x25')](function(_0x4e8327){if(_0x4e8327){if(!fs['existsSync'](path[_0xc148('0x4e')](config[_0xc148('0x4f')],_0xc148('0x50'),_0x4e8327[_0xc148('0x4d')]+'.'+_0x4e8327['converted_format']))){throw new db[(_0xc148('0x51'))][(_0xc148('0x52'))](_0xc148('0x53'));}return _0x518655[_0xc148('0x4b')](path[_0xc148('0x4e')](config[_0xc148('0x4f')],_0xc148('0x50'),util[_0xc148('0x54')](_0xc148('0x55'),_0x4e8327[_0xc148('0x4d')],_0x4e8327[_0xc148('0x56')])),util[_0xc148('0x54')](_0xc148('0x55'),_0x4e8327[_0xc148('0x2c')],_0x4e8327['converted_format']));}return null;})['catch'](handleError(_0x518655,null));};exports[_0xc148('0x57')]=function(_0x3146bc,_0xf870b,_0x4dbb32){var _0x2bbee8={'name':path[_0xc148('0x58')](_0x3146bc['file'][_0xc148('0x59')],path['extname'](_0x3146bc[_0xc148('0x5a')][_0xc148('0x59')])),'save_name':path[_0xc148('0x58')](_0x3146bc['file'][_0xc148('0x5b')],path[_0xc148('0x5c')](_0x3146bc[_0xc148('0x5a')][_0xc148('0x5b')])),'original_format':path['extname'](_0x3146bc[_0xc148('0x5a')]['originalname'])[_0xc148('0x5d')](0x1),'converted_format':_0xc148('0x5e')};var _0x3ddd56=path[_0xc148('0x4e')](config[_0xc148('0x4f')],_0xc148('0x5f'),_0x3146bc['file'][_0xc148('0x5b')]);var _0x5dfe46=path[_0xc148('0x4e')](config[_0xc148('0x4f')],_0xc148('0x50'),util[_0xc148('0x54')](_0xc148('0x55'),path['basename'](_0x3146bc['file'][_0xc148('0x5b')],path[_0xc148('0x5c')](_0x3146bc[_0xc148('0x5a')]['filename'])),_0x2bbee8[_0xc148('0x56')]));logger[_0xc148('0x60')](_0xc148('0x61'),_0x3ddd56);logger[_0xc148('0x60')](_0xc148('0x62'),_0x5dfe46);try{fs[_0xc148('0x63')](_0x3ddd56,parseInt(_0xc148('0x64'),0x8));var _0x6b8c3c=sox['transcode'](_0x3ddd56,_0x5dfe46,{'sampleRate':0x1f40,'format':_0xc148('0x5e'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x6b8c3c['on'](_0xc148('0x65'),function(_0x5c15b3){fs[_0xc148('0x66')](_0x3ddd56);_0xf870b['status'](0x1f4)['send'](_0x5c15b3);});_0x6b8c3c['on'](_0xc148('0x67'),function(_0x38dc1f){_0x2bbee8[_0xc148('0x68')]=isNaN(_0x38dc1f[_0xc148('0x69')])?null:_0x38dc1f[_0xc148('0x69')]*0x3e8;_0x2bbee8[_0xc148('0x6a')]=isNaN(_0x38dc1f['sampleCount'])?null:_0x38dc1f[_0xc148('0x6b')];_0x2bbee8[_0xc148('0x6c')]=isNaN(_0x38dc1f[_0xc148('0x6d')])?null:_0x38dc1f[_0xc148('0x6d')];_0x2bbee8[_0xc148('0x6e')]=isNaN(_0x38dc1f[_0xc148('0x6f')])?null:_0x38dc1f[_0xc148('0x6f')];_0x2bbee8[_0xc148('0x70')]=isNaN(_0x38dc1f['sampleRate'])?null:_0x38dc1f[_0xc148('0x71')];});_0x6b8c3c['on']('dest',function(_0x382f4c){_0x2bbee8[_0xc148('0x72')]=isNaN(_0x382f4c[_0xc148('0x69')])?null:_0x382f4c[_0xc148('0x69')]*0x3e8;_0x2bbee8[_0xc148('0x73')]=isNaN(_0x382f4c[_0xc148('0x6b')])?null:_0x382f4c[_0xc148('0x6b')];_0x2bbee8['converted_channelCount']=isNaN(_0x382f4c[_0xc148('0x6d')])?null:_0x382f4c[_0xc148('0x6d')];_0x2bbee8['converted_bitRate']=isNaN(_0x382f4c[_0xc148('0x6f')])?null:_0x382f4c[_0xc148('0x6f')];_0x2bbee8[_0xc148('0x74')]=isNaN(_0x382f4c[_0xc148('0x71')])?null:_0x382f4c[_0xc148('0x71')];});_0x6b8c3c['on'](_0xc148('0x1a'),function(){fs[_0xc148('0x63')](_0x5dfe46,parseInt(_0xc148('0x64'),0x8));return db[_0xc148('0x30')]['create'](_0x2bbee8)['then'](function(_0xe20ca9){var _0x3f9c90={'role':_0x3146bc[_0xc148('0x75')][_0xc148('0x76')],'userProfileId':_0x3146bc[_0xc148('0x75')]['userProfileId']};if(!_0x3f9c90)throw new Error(_0xc148('0x77'));if(_0x3f9c90[_0xc148('0x76')]===_0xc148('0x78')){var _0x4ea9ca=_0xe20ca9[_0xc148('0x27')]({'plain':!![]});return db[_0xc148('0x79')][_0xc148('0x4c')]({'where':{'name':'Sounds','userProfileId':_0x3f9c90[_0xc148('0x7a')]},'raw':!![]})['then'](function(_0x57ef7c){if(_0x57ef7c&&_0x57ef7c[_0xc148('0x7b')]===0x0){return db['UserProfileResource']['create']({'name':_0x4ea9ca['name'],'resourceId':_0x4ea9ca['id'],'type':_0x57ef7c[_0xc148('0x2c')],'sectionId':_0x57ef7c['id']},{})[_0xc148('0x25')](function(){return _0xe20ca9;});}else{return _0xe20ca9;}})['catch'](function(_0x3832f4){logger['error'](_0xc148('0x7c'),_0x3832f4);throw _0x3832f4;});}return _0xe20ca9;})['then'](respondWithResult(_0xf870b,null))[_0xc148('0x4a')](handleError(_0xf870b,null));});_0x6b8c3c['start']();}catch(_0xe14d3c){_0xf870b[_0xc148('0x19')](0x1f4)[_0xc148('0x2d')](_0xe14d3c);}};exports[_0xc148('0x24')]=function(_0x26000f,_0x549d56,_0x334fde){return db[_0xc148('0x30')]['find']({'where':{'id':_0x26000f['params']['id']}})[_0xc148('0x25')](handleEntityNotFound(_0x549d56,null))['then'](saveUpdates(_[_0xc148('0x7d')](_0x26000f[_0xc148('0x75')],[_0xc148('0x2c'),_0xc148('0x7e')]),null))[_0xc148('0x25')](respondWithResult(_0x549d56,null))[_0xc148('0x4a')](handleError(_0x549d56,null));};exports[_0xc148('0x7f')]=function(_0x202d35,_0x1442d8,_0xa17de){return db[_0xc148('0x30')][_0xc148('0x4c')]({'where':{'id':_0x202d35['params']['id']}})[_0xc148('0x25')](function(_0x5c1163){if(_0x5c1163){return _0x5c1163['destroy']();}})['then'](function(_0x1416b2){var _0x165dc8=path[_0xc148('0x4e')](config[_0xc148('0x4f')],_0xc148('0x5f'),util['format'](_0xc148('0x55'),_0x1416b2[_0xc148('0x4d')],_0x1416b2[_0xc148('0x80')]));var _0x55685a=path['join'](config[_0xc148('0x4f')],'server/files/sounds/converted',util['format']('%s.%s',_0x1416b2[_0xc148('0x4d')],_0x1416b2[_0xc148('0x56')]));fs[_0xc148('0x66')](_0x165dc8);fs[_0xc148('0x66')](_0x55685a);return _0x1416b2;})[_0xc148('0x25')](function(_0x291912){if(_0x291912){return _0x1442d8[_0xc148('0x19')](0xcc)[_0xc148('0x1a')]();}})['then'](handleEntityNotFound(_0x1442d8,null))[_0xc148('0x4a')](handleError(_0x1442d8,null));};
\ No newline at end of file
+var _0x944c=['set','Content-Range','reject','update','then','destroy','get','Sounds','UserProfileResource','stack','name','send','map','Sound','rawAttributes','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','findAll','catch','show','keys','length','download','find','params','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','Sound\x20not\x20found','format','%s.%s','basename','file','extname','originalname','filename','substring','wav','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','transcode','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_channelCount','converted_sampleRate','chmodSync','create','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','start','delete','server/files/sounds/original','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit'];(function(_0x13df00,_0x550e9){var _0x8b1cd3=function(_0xea586f){while(--_0xea586f){_0x13df00['push'](_0x13df00['shift']());}};_0x8b1cd3(++_0x550e9);}(_0x944c,0x156));var _0xc944=function(_0x44c768,_0x552a5e){_0x44c768=_0x44c768-0x0;var _0x55daf5=_0x944c[_0x44c768];return _0x55daf5;};'use strict';var emlformat=require(_0xc944('0x0'));var rimraf=require(_0xc944('0x1'));var zipdir=require(_0xc944('0x2'));var jsonpatch=require(_0xc944('0x3'));var rp=require(_0xc944('0x4'));var moment=require('moment');var BPromise=require(_0xc944('0x5'));var Mustache=require(_0xc944('0x6'));var util=require(_0xc944('0x7'));var path=require(_0xc944('0x8'));var sox=require(_0xc944('0x9'));var csv=require(_0xc944('0xa'));var ejs=require(_0xc944('0xb'));var fs=require('fs');var fs_extra=require(_0xc944('0xc'));var _=require(_0xc944('0xd'));var squel=require(_0xc944('0xe'));var crypto=require(_0xc944('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc944('0x10'));var Papa=require('papaparse');var Redis=require(_0xc944('0x11'));var authService=require(_0xc944('0x12'));var qs=require(_0xc944('0x13'));var as=require(_0xc944('0x14'));var hardwareService=require(_0xc944('0x15'));var logger=require(_0xc944('0x16'))(_0xc944('0x17'));var utils=require(_0xc944('0x18'));var config=require(_0xc944('0x19'));var licenseUtil=require(_0xc944('0x1a'));var db=require(_0xc944('0x1b'))['db'];function respondWithStatusCode(_0x506206,_0x2c3acf){_0x2c3acf=_0x2c3acf||0xcc;return function(_0x1cde29){if(_0x1cde29){return _0x506206[_0xc944('0x1c')](_0x2c3acf);}return _0x506206[_0xc944('0x1d')](_0x2c3acf)[_0xc944('0x1e')]();};}function respondWithResult(_0x550a12,_0x1c2570){_0x1c2570=_0x1c2570||0xc8;return function(_0x2c9857){if(_0x2c9857){return _0x550a12[_0xc944('0x1d')](_0x1c2570)[_0xc944('0x1f')](_0x2c9857);}};}function respondWithFilteredResult(_0x18c17c,_0x49c82c){return function(_0x21bff1){if(_0x21bff1){var _0x573c96=typeof _0x49c82c['offset']==='undefined'&&typeof _0x49c82c['limit']===_0xc944('0x20');var _0x167da1=_0x21bff1['count'];var _0x4b75b2=_0x573c96?0x0:_0x49c82c[_0xc944('0x21')];var _0x10e4d9=_0x573c96?_0x21bff1[_0xc944('0x22')]:_0x49c82c[_0xc944('0x21')]+_0x49c82c[_0xc944('0x23')];var _0x193526;if(_0x10e4d9>=_0x167da1){_0x10e4d9=_0x167da1;_0x193526=0xc8;}else{_0x193526=0xce;}_0x18c17c[_0xc944('0x1d')](_0x193526);return _0x18c17c[_0xc944('0x24')](_0xc944('0x25'),_0x4b75b2+'-'+_0x10e4d9+'/'+_0x167da1)[_0xc944('0x1f')](_0x21bff1);}return null;};}function patchUpdates(_0x3b7ff3){return function(_0x4273fb){try{jsonpatch['apply'](_0x4273fb,_0x3b7ff3,!![]);}catch(_0x33708b){return BPromise[_0xc944('0x26')](_0x33708b);}return _0x4273fb['save']();};}function saveUpdates(_0x1c738f,_0x4c87a2){return function(_0x2f910d){if(_0x2f910d){return _0x2f910d[_0xc944('0x27')](_0x1c738f)[_0xc944('0x28')](function(_0x52698f){return _0x52698f;});}return null;};}function removeEntity(_0x385e87,_0x2a2f34){return function(_0x2f8d87){if(_0x2f8d87){return _0x2f8d87[_0xc944('0x29')]()[_0xc944('0x28')](function(){var _0x3caaa2=_0x2f8d87[_0xc944('0x2a')]({'plain':!![]});var _0xd5c23a=_0xc944('0x2b');return db[_0xc944('0x2c')][_0xc944('0x29')]({'where':{'type':_0xd5c23a,'resourceId':_0x3caaa2['id']}})['then'](function(){return _0x2f8d87;});})[_0xc944('0x28')](function(){_0x385e87[_0xc944('0x1d')](0xcc)[_0xc944('0x1e')]();});}};}function handleEntityNotFound(_0x43c94f,_0x40b997){return function(_0x55f434){if(!_0x55f434){_0x43c94f[_0xc944('0x1c')](0x194);}return _0x55f434;};}function handleError(_0x1bf6a4,_0x32e623){_0x32e623=_0x32e623||0x1f4;return function(_0x8f1231){logger['error'](_0x8f1231[_0xc944('0x2d')]);if(_0x8f1231[_0xc944('0x2e')]){delete _0x8f1231[_0xc944('0x2e')];}_0x1bf6a4[_0xc944('0x1d')](_0x32e623)[_0xc944('0x2f')](_0x8f1231);};}exports['index']=function(_0x2aa9f3,_0x15b91b){var _0x53e7f1={},_0x3a82fc={},_0x11e6d0={'count':0x0,'rows':[]};var _0x29429e=_[_0xc944('0x30')](db[_0xc944('0x31')][_0xc944('0x32')],function(_0x5918c5){return{'name':_0x5918c5['fieldName'],'type':_0x5918c5[_0xc944('0x33')][_0xc944('0x34')]};});_0x3a82fc[_0xc944('0x35')]=_[_0xc944('0x30')](_0x29429e,_0xc944('0x2e'));_0x3a82fc['query']=_['keys'](_0x2aa9f3[_0xc944('0x36')]);_0x3a82fc['filters']=_[_0xc944('0x37')](_0x3a82fc['model'],_0x3a82fc[_0xc944('0x36')]);_0x53e7f1[_0xc944('0x38')]=_[_0xc944('0x37')](_0x3a82fc[_0xc944('0x35')],qs['fields'](_0x2aa9f3[_0xc944('0x36')][_0xc944('0x39')]));_0x53e7f1[_0xc944('0x38')]=_0x53e7f1[_0xc944('0x38')]['length']?_0x53e7f1['attributes']:_0x3a82fc[_0xc944('0x35')];if(!_0x2aa9f3[_0xc944('0x36')][_0xc944('0x3a')](_0xc944('0x3b'))){_0x53e7f1[_0xc944('0x23')]=qs[_0xc944('0x23')](_0x2aa9f3[_0xc944('0x36')][_0xc944('0x23')]);_0x53e7f1[_0xc944('0x21')]=qs[_0xc944('0x21')](_0x2aa9f3['query'][_0xc944('0x21')]);}_0x53e7f1[_0xc944('0x3c')]=qs[_0xc944('0x3d')](_0x2aa9f3[_0xc944('0x36')][_0xc944('0x3d')]);_0x53e7f1[_0xc944('0x3e')]=qs[_0xc944('0x3f')](_[_0xc944('0x40')](_0x2aa9f3[_0xc944('0x36')],_0x3a82fc['filters']),_0x29429e);if(_0x2aa9f3[_0xc944('0x36')]['filter']){_0x53e7f1[_0xc944('0x3e')]=_[_0xc944('0x41')](_0x53e7f1[_0xc944('0x3e')],{'$or':_['map'](_0x29429e,function(_0x4683ea){if(_0x4683ea['type']!==_0xc944('0x42')){var _0x2a9edc={};_0x2a9edc[_0x4683ea[_0xc944('0x2e')]]={'$like':'%'+_0x2aa9f3['query'][_0xc944('0x43')]+'%'};return _0x2a9edc;}})});}_0x53e7f1=_[_0xc944('0x41')]({},_0x53e7f1,_0x2aa9f3[_0xc944('0x44')]);var _0x85a5ec={'where':_0x53e7f1[_0xc944('0x3e')]};return db[_0xc944('0x31')]['count'](_0x85a5ec)['then'](function(_0x95ab55){_0x11e6d0['count']=_0x95ab55;if(_0x2aa9f3[_0xc944('0x36')]['includeAll']){_0x53e7f1[_0xc944('0x45')]=[{'all':!![]}];}return db[_0xc944('0x31')][_0xc944('0x46')](_0x53e7f1);})[_0xc944('0x28')](function(_0x3024b4){_0x11e6d0['rows']=_0x3024b4;return _0x11e6d0;})[_0xc944('0x28')](respondWithFilteredResult(_0x15b91b,_0x53e7f1))[_0xc944('0x47')](handleError(_0x15b91b,null));};exports[_0xc944('0x48')]=function(_0x38a1e4,_0x3c1e49){var _0x2755a9={'raw':!![],'where':{'id':_0x38a1e4['params']['id']}},_0x54796e={};_0x54796e[_0xc944('0x35')]=_[_0xc944('0x49')](db[_0xc944('0x31')][_0xc944('0x32')]);_0x54796e[_0xc944('0x36')]=_[_0xc944('0x49')](_0x38a1e4['query']);_0x54796e['filters']=_[_0xc944('0x37')](_0x54796e[_0xc944('0x35')],_0x54796e['query']);_0x2755a9[_0xc944('0x38')]=_[_0xc944('0x37')](_0x54796e[_0xc944('0x35')],qs[_0xc944('0x39')](_0x38a1e4['query'][_0xc944('0x39')]));_0x2755a9['attributes']=_0x2755a9[_0xc944('0x38')][_0xc944('0x4a')]?_0x2755a9['attributes']:_0x54796e[_0xc944('0x35')];if(_0x38a1e4[_0xc944('0x36')]['includeAll']){_0x2755a9[_0xc944('0x45')]=[{'all':!![]}];}_0x2755a9=_[_0xc944('0x41')]({},_0x2755a9,_0x38a1e4[_0xc944('0x44')]);return db[_0xc944('0x31')]['find'](_0x2755a9)[_0xc944('0x28')](handleEntityNotFound(_0x3c1e49,null))[_0xc944('0x28')](respondWithResult(_0x3c1e49,null))[_0xc944('0x47')](handleError(_0x3c1e49,null));};exports[_0xc944('0x4b')]=function(_0x255245,_0x5d82a5,_0x2786d3){return db[_0xc944('0x31')][_0xc944('0x4c')]({'where':{'id':_0x255245[_0xc944('0x4d')]['id']},'attributes':[_0xc944('0x2e'),_0xc944('0x4e'),_0xc944('0x4f')],'raw':!![]})[_0xc944('0x28')](handleEntityNotFound(_0x5d82a5,null))['then'](function(_0x3d363a){if(_0x3d363a){if(!fs[_0xc944('0x50')](path[_0xc944('0x51')](config[_0xc944('0x52')],_0xc944('0x53'),_0x3d363a[_0xc944('0x4e')]+'.'+_0x3d363a['converted_format']))){throw new db[(_0xc944('0x54'))]['ValidationError'](_0xc944('0x55'));}return _0x5d82a5[_0xc944('0x4b')](path['join'](config['root'],_0xc944('0x53'),util[_0xc944('0x56')](_0xc944('0x57'),_0x3d363a[_0xc944('0x4e')],_0x3d363a[_0xc944('0x4f')])),util[_0xc944('0x56')](_0xc944('0x57'),_0x3d363a[_0xc944('0x2e')],_0x3d363a[_0xc944('0x4f')]));}return null;})['catch'](handleError(_0x5d82a5,null));};exports['create']=function(_0x2d8c42,_0x23b90d,_0x5e9ca3){var _0x55877f={'name':path[_0xc944('0x58')](_0x2d8c42[_0xc944('0x59')]['originalname'],path[_0xc944('0x5a')](_0x2d8c42[_0xc944('0x59')][_0xc944('0x5b')])),'save_name':path[_0xc944('0x58')](_0x2d8c42[_0xc944('0x59')][_0xc944('0x5c')],path[_0xc944('0x5a')](_0x2d8c42['file'][_0xc944('0x5c')])),'original_format':path[_0xc944('0x5a')](_0x2d8c42[_0xc944('0x59')][_0xc944('0x5b')])[_0xc944('0x5d')](0x1),'converted_format':_0xc944('0x5e')};var _0x193d56=path[_0xc944('0x51')](config[_0xc944('0x52')],'server/files/sounds/original',_0x2d8c42[_0xc944('0x59')][_0xc944('0x5c')]);var _0x56a79a=path[_0xc944('0x51')](config[_0xc944('0x52')],_0xc944('0x53'),util[_0xc944('0x56')](_0xc944('0x57'),path[_0xc944('0x58')](_0x2d8c42[_0xc944('0x59')][_0xc944('0x5c')],path[_0xc944('0x5a')](_0x2d8c42[_0xc944('0x59')]['filename'])),_0x55877f[_0xc944('0x4f')]));logger[_0xc944('0x5f')](_0xc944('0x60'),_0x193d56);logger['info'](_0xc944('0x61'),_0x56a79a);try{fs['chmodSync'](_0x193d56,parseInt('0777',0x8));var _0x244d55=sox[_0xc944('0x62')](_0x193d56,_0x56a79a,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x244d55['on'](_0xc944('0x63'),function(_0x25437f){fs[_0xc944('0x64')](_0x193d56);_0x23b90d['status'](0x1f4)['send'](_0x25437f);});_0x244d55['on'](_0xc944('0x65'),function(_0x1eebda){_0x55877f[_0xc944('0x66')]=isNaN(_0x1eebda[_0xc944('0x67')])?null:_0x1eebda[_0xc944('0x67')]*0x3e8;_0x55877f[_0xc944('0x68')]=isNaN(_0x1eebda[_0xc944('0x69')])?null:_0x1eebda[_0xc944('0x69')];_0x55877f['original_channelCount']=isNaN(_0x1eebda[_0xc944('0x6a')])?null:_0x1eebda[_0xc944('0x6a')];_0x55877f[_0xc944('0x6b')]=isNaN(_0x1eebda[_0xc944('0x6c')])?null:_0x1eebda[_0xc944('0x6c')];_0x55877f[_0xc944('0x6d')]=isNaN(_0x1eebda[_0xc944('0x6e')])?null:_0x1eebda[_0xc944('0x6e')];});_0x244d55['on'](_0xc944('0x6f'),function(_0xa10531){_0x55877f[_0xc944('0x70')]=isNaN(_0xa10531[_0xc944('0x67')])?null:_0xa10531[_0xc944('0x67')]*0x3e8;_0x55877f['converted_sampleCount']=isNaN(_0xa10531['sampleCount'])?null:_0xa10531[_0xc944('0x69')];_0x55877f[_0xc944('0x71')]=isNaN(_0xa10531[_0xc944('0x6a')])?null:_0xa10531[_0xc944('0x6a')];_0x55877f['converted_bitRate']=isNaN(_0xa10531[_0xc944('0x6c')])?null:_0xa10531[_0xc944('0x6c')];_0x55877f[_0xc944('0x72')]=isNaN(_0xa10531[_0xc944('0x6e')])?null:_0xa10531['sampleRate'];});_0x244d55['on'](_0xc944('0x1e'),function(){fs[_0xc944('0x73')](_0x56a79a,parseInt('0777',0x8));return db[_0xc944('0x31')][_0xc944('0x74')](_0x55877f)[_0xc944('0x28')](function(_0x5e5d2a){var _0x3eb4e1={'role':_0x2d8c42['body'][_0xc944('0x75')],'userProfileId':_0x2d8c42[_0xc944('0x76')][_0xc944('0x77')]};if(!_0x3eb4e1)throw new Error(_0xc944('0x78'));if(_0x3eb4e1[_0xc944('0x75')]==='user'){var _0x3e4ade=_0x5e5d2a[_0xc944('0x2a')]({'plain':!![]});return db['UserProfileSection'][_0xc944('0x4c')]({'where':{'name':_0xc944('0x2b'),'userProfileId':_0x3eb4e1[_0xc944('0x77')]},'raw':!![]})[_0xc944('0x28')](function(_0x2aa77d){if(_0x2aa77d&&_0x2aa77d[_0xc944('0x79')]===0x0){return db[_0xc944('0x2c')]['create']({'name':_0x3e4ade[_0xc944('0x2e')],'resourceId':_0x3e4ade['id'],'type':_0x2aa77d['name'],'sectionId':_0x2aa77d['id']},{})[_0xc944('0x28')](function(){return _0x5e5d2a;});}else{return _0x5e5d2a;}})[_0xc944('0x47')](function(_0x5e8f1f){logger[_0xc944('0x63')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e8f1f);throw _0x5e8f1f;});}return _0x5e5d2a;})[_0xc944('0x28')](respondWithResult(_0x23b90d,null))['catch'](handleError(_0x23b90d,null));});_0x244d55[_0xc944('0x7a')]();}catch(_0x30e487){_0x23b90d[_0xc944('0x1d')](0x1f4)[_0xc944('0x2f')](_0x30e487);}};exports[_0xc944('0x27')]=function(_0x57a8bf,_0x42a60d,_0x1bafe7){return db[_0xc944('0x31')][_0xc944('0x4c')]({'where':{'id':_0x57a8bf[_0xc944('0x4d')]['id']}})[_0xc944('0x28')](handleEntityNotFound(_0x42a60d,null))[_0xc944('0x28')](saveUpdates(_[_0xc944('0x40')](_0x57a8bf[_0xc944('0x76')],[_0xc944('0x2e'),'description']),null))[_0xc944('0x28')](respondWithResult(_0x42a60d,null))[_0xc944('0x47')](handleError(_0x42a60d,null));};exports[_0xc944('0x7b')]=function(_0x2c9031,_0x1cf105,_0x4b0940){return db[_0xc944('0x31')][_0xc944('0x4c')]({'where':{'id':_0x2c9031['params']['id']}})[_0xc944('0x28')](function(_0x263608){if(_0x263608){return _0x263608['destroy']();}})[_0xc944('0x28')](function(_0x2bd124){var _0x28033f=path['join'](config[_0xc944('0x52')],_0xc944('0x7c'),util['format']('%s.%s',_0x2bd124[_0xc944('0x4e')],_0x2bd124[_0xc944('0x7d')]));var _0x5adcee=path[_0xc944('0x51')](config[_0xc944('0x52')],_0xc944('0x53'),util[_0xc944('0x56')](_0xc944('0x57'),_0x2bd124[_0xc944('0x4e')],_0x2bd124['converted_format']));fs[_0xc944('0x64')](_0x28033f);fs['unlinkSync'](_0x5adcee);return _0x2bd124;})[_0xc944('0x28')](function(_0x1cd9ca){if(_0x1cd9ca){return _0x1cf105[_0xc944('0x1d')](0xcc)[_0xc944('0x1e')]();}})[_0xc944('0x28')](handleEntityNotFound(_0x1cf105,null))[_0xc944('0x47')](handleError(_0x1cf105,null));};
\ No newline at end of file
index 55f1497..5b46de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9821=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util'];(function(_0x25d2fb,_0x18a774){var _0x1ded53=function(_0x4c0715){while(--_0x4c0715){_0x25d2fb['push'](_0x25d2fb['shift']());}};_0x1ded53(++_0x18a774);}(_0x9821,0x6e));var _0x1982=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x9821[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0x1982('0x0'));var util=require(_0x1982('0x1'));var logger=require(_0x1982('0x2'))(_0x1982('0x3'));var moment=require(_0x1982('0x4'));var BPromise=require(_0x1982('0x5'));var rp=require(_0x1982('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1982('0x7'));var config=require(_0x1982('0x8'));var attributes=require(_0x1982('0x9'));module[_0x1982('0xa')]=function(_0x38f1ca,_0x35f2be){return _0x38f1ca[_0x1982('0xb')](_0x1982('0xc'),attributes,{'tableName':_0x1982('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe43b=['request-promise','path','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xb8d67f,_0x2eccb9){var _0x1f441d=function(_0x283f3e){while(--_0x283f3e){_0xb8d67f['push'](_0xb8d67f['shift']());}};_0x1f441d(++_0x2eccb9);}(_0xe43b,0xfe));var _0xbe43=function(_0x37d225,_0x2ed664){_0x37d225=_0x37d225-0x0;var _0x26834b=_0xe43b[_0x37d225];return _0x26834b;};'use strict';var _=require(_0xbe43('0x0'));var util=require(_0xbe43('0x1'));var logger=require(_0xbe43('0x2'))(_0xbe43('0x3'));var moment=require(_0xbe43('0x4'));var BPromise=require(_0xbe43('0x5'));var rp=require(_0xbe43('0x6'));var fs=require('fs');var path=require(_0xbe43('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe43('0x8'));module[_0xbe43('0x9')]=function(_0x32953a,_0x213236){return _0x32953a[_0xbe43('0xa')](_0xbe43('0xb'),attributes,{'tableName':_0xbe43('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d201c9..7e2c1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd600=['../../config/environment','http','then','Sound,\x20%s,\x20%s','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','Sound','find','options','attributes','include','map','model','info','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x103f59,_0x352c30){var _0x6e759d=function(_0x69ae8e){while(--_0x69ae8e){_0x103f59['push'](_0x103f59['shift']());}};_0x6e759d(++_0x352c30);}(_0xd600,0x92));var _0x0d60=function(_0xd8b208,_0x43ae28){_0xd8b208=_0xd8b208-0x0;var _0x1e1521=_0xd600[_0xd8b208];return _0x1e1521;};'use strict';var _=require(_0x0d60('0x0'));var util=require(_0x0d60('0x1'));var moment=require(_0x0d60('0x2'));var BPromise=require(_0x0d60('0x3'));var rs=require(_0x0d60('0x4'));var fs=require('fs');var Redis=require(_0x0d60('0x5'));var db=require(_0x0d60('0x6'))['db'];var utils=require(_0x0d60('0x7'));var logger=require('../../config/logger')(_0x0d60('0x8'));var config=require(_0x0d60('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0d60('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x310bc7,_0xa13c05,_0x4748e9){return new BPromise(function(_0x374d6e,_0x5e373b){return client['request'](_0x310bc7,_0x4748e9)[_0x0d60('0xb')](function(_0x3ace63){logger['info'](_0x0d60('0xc'),_0xa13c05,_0x0d60('0xd'));logger['debug'](_0x0d60('0xe'),_0xa13c05,_0x0d60('0xd'),JSON[_0x0d60('0xf')](_0x3ace63));if(_0x3ace63['error']){if(_0x3ace63[_0x0d60('0x10')][_0x0d60('0x11')]===0x1f4){logger['error'](_0x0d60('0xc'),_0xa13c05,_0x3ace63[_0x0d60('0x10')][_0x0d60('0x12')]);return _0x5e373b(_0x3ace63['error'][_0x0d60('0x12')]);}logger[_0x0d60('0x10')]('Sound,\x20%s,\x20%s',_0xa13c05,_0x3ace63['error'][_0x0d60('0x12')]);return _0x374d6e(_0x3ace63[_0x0d60('0x10')][_0x0d60('0x12')]);}else{logger['info']('Sound,\x20%s,\x20%s',_0xa13c05,_0x0d60('0xd'));_0x374d6e(_0x3ace63[_0x0d60('0x13')][_0x0d60('0x12')]);}})[_0x0d60('0x14')](function(_0x29e308){logger[_0x0d60('0x10')](_0x0d60('0xc'),_0xa13c05,_0x29e308);_0x5e373b(_0x29e308);});});}exports[_0x0d60('0x15')]=function(_0x496d14){var _0x33015c=this;return new Promise(function(_0x479ddd,_0x3c393f){return db[_0x0d60('0x16')][_0x0d60('0x17')]({'raw':_0x496d14[_0x0d60('0x18')]?_0x496d14[_0x0d60('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x496d14[_0x0d60('0x18')]?_0x496d14[_0x0d60('0x18')]['where']||null:null,'attributes':_0x496d14[_0x0d60('0x18')]?_0x496d14[_0x0d60('0x18')][_0x0d60('0x19')]||null:null,'include':_0x496d14[_0x0d60('0x18')]?_0x496d14[_0x0d60('0x18')][_0x0d60('0x1a')]?_[_0x0d60('0x1b')](_0x496d14[_0x0d60('0x18')][_0x0d60('0x1a')],function(_0x4c749d){return{'model':db[_0x4c749d[_0x0d60('0x1c')]],'as':_0x4c749d['as'],'attributes':_0x4c749d[_0x0d60('0x19')],'include':_0x4c749d[_0x0d60('0x1a')]?_[_0x0d60('0x1b')](_0x4c749d[_0x0d60('0x1a')],function(_0x5bece0){return{'model':db[_0x5bece0[_0x0d60('0x1c')]],'as':_0x5bece0['as'],'attributes':_0x5bece0['attributes'],'include':_0x5bece0[_0x0d60('0x1a')]?_[_0x0d60('0x1b')](_0x5bece0[_0x0d60('0x1a')],function(_0x5b2d76){return{'model':db[_0x5b2d76[_0x0d60('0x1c')]],'as':_0x5b2d76['as'],'attributes':_0x5b2d76[_0x0d60('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0d60('0xb')](function(_0x520065){logger[_0x0d60('0x1d')]('ShowSound',_0x496d14);logger[_0x0d60('0x1e')](_0x0d60('0x15'),_0x496d14,JSON[_0x0d60('0xf')](_0x520065));_0x479ddd(_0x520065);})[_0x0d60('0x14')](function(_0x1adfed){logger['error'](_0x0d60('0x15'),_0x1adfed[_0x0d60('0x12')],_0x496d14);_0x3c393f(_0x33015c[_0x0d60('0x10')](0x1f4,_0x1adfed[_0x0d60('0x12')]));});});};
\ No newline at end of file
+var _0x49d8=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ShowSound','Sound','options','raw','where','attributes','include','model','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x4ca0da,_0x127827){var _0x1b5440=function(_0x5dbe0b){while(--_0x5dbe0b){_0x4ca0da['push'](_0x4ca0da['shift']());}};_0x1b5440(++_0x127827);}(_0x49d8,0x16e));var _0x849d=function(_0xd62ed7,_0x6e19ba){_0xd62ed7=_0xd62ed7-0x0;var _0x2a61a4=_0x49d8[_0xd62ed7];return _0x2a61a4;};'use strict';var _=require(_0x849d('0x0'));var util=require('util');var moment=require(_0x849d('0x1'));var BPromise=require(_0x849d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x849d('0x3'));var db=require(_0x849d('0x4'))['db'];var utils=require(_0x849d('0x5'));var logger=require('../../config/logger')(_0x849d('0x6'));var config=require(_0x849d('0x7'));var jayson=require(_0x849d('0x8'));var client=jayson[_0x849d('0x9')][_0x849d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7fd1a,_0x334c1c,_0x6c5af9){return new BPromise(function(_0x2fbe15,_0x4ad379){return client[_0x849d('0xb')](_0x7fd1a,_0x6c5af9)[_0x849d('0xc')](function(_0x3aa185){logger[_0x849d('0xd')](_0x849d('0xe'),_0x334c1c,_0x849d('0xf'));logger[_0x849d('0x10')](_0x849d('0x11'),_0x334c1c,_0x849d('0xf'),JSON[_0x849d('0x12')](_0x3aa185));if(_0x3aa185[_0x849d('0x13')]){if(_0x3aa185[_0x849d('0x13')][_0x849d('0x14')]===0x1f4){logger[_0x849d('0x13')](_0x849d('0xe'),_0x334c1c,_0x3aa185[_0x849d('0x13')][_0x849d('0x15')]);return _0x4ad379(_0x3aa185[_0x849d('0x13')][_0x849d('0x15')]);}logger[_0x849d('0x13')]('Sound,\x20%s,\x20%s',_0x334c1c,_0x3aa185['error'][_0x849d('0x15')]);return _0x2fbe15(_0x3aa185[_0x849d('0x13')]['message']);}else{logger[_0x849d('0xd')](_0x849d('0xe'),_0x334c1c,_0x849d('0xf'));_0x2fbe15(_0x3aa185['result'][_0x849d('0x15')]);}})['catch'](function(_0x11c6e3){logger[_0x849d('0x13')](_0x849d('0xe'),_0x334c1c,_0x11c6e3);_0x4ad379(_0x11c6e3);});});}exports[_0x849d('0x16')]=function(_0x3b3271){var _0x481e0d=this;return new Promise(function(_0x329042,_0x173426){return db[_0x849d('0x17')]['find']({'raw':_0x3b3271['options']?_0x3b3271[_0x849d('0x18')][_0x849d('0x19')]===undefined?!![]:![]:!![],'where':_0x3b3271[_0x849d('0x18')]?_0x3b3271[_0x849d('0x18')][_0x849d('0x1a')]||null:null,'attributes':_0x3b3271[_0x849d('0x18')]?_0x3b3271[_0x849d('0x18')][_0x849d('0x1b')]||null:null,'include':_0x3b3271[_0x849d('0x18')]?_0x3b3271[_0x849d('0x18')][_0x849d('0x1c')]?_['map'](_0x3b3271[_0x849d('0x18')][_0x849d('0x1c')],function(_0x15fa80){return{'model':db[_0x15fa80[_0x849d('0x1d')]],'as':_0x15fa80['as'],'attributes':_0x15fa80[_0x849d('0x1b')],'include':_0x15fa80[_0x849d('0x1c')]?_['map'](_0x15fa80[_0x849d('0x1c')],function(_0x40b168){return{'model':db[_0x40b168[_0x849d('0x1d')]],'as':_0x40b168['as'],'attributes':_0x40b168['attributes'],'include':_0x40b168[_0x849d('0x1c')]?_['map'](_0x40b168['include'],function(_0x474792){return{'model':db[_0x474792[_0x849d('0x1d')]],'as':_0x474792['as'],'attributes':_0x474792[_0x849d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x849d('0xc')](function(_0x565cf9){logger[_0x849d('0xd')](_0x849d('0x16'),_0x3b3271);logger[_0x849d('0x10')](_0x849d('0x16'),_0x3b3271,JSON[_0x849d('0x12')](_0x565cf9));_0x329042(_0x565cf9);})[_0x849d('0x1e')](function(_0x1da656){logger[_0x849d('0x13')](_0x849d('0x16'),_0x1da656[_0x849d('0x15')],_0x3b3271);_0x173426(_0x481e0d[_0x849d('0x13')](0x1f4,_0x1da656['message']));});});};
\ No newline at end of file
index 80717c9..0d9fd76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x3ecf65,_0x3bac13){var _0x1907df=function(_0x247dd9){while(--_0x247dd9){_0x3ecf65['push'](_0x3ecf65['shift']());}};_0x1907df(++_0x3bac13);}(_0x2032,0xd9));var _0x2203=function(_0x40c6b5,_0x37d195){_0x40c6b5=_0x40c6b5-0x0;var _0x131a12=_0x2032[_0x40c6b5];return _0x131a12;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
+var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x7d0412,_0x5a7a0d){var _0x3baf99=function(_0x41afef){while(--_0x41afef){_0x7d0412['push'](_0x7d0412['shift']());}};_0x3baf99(++_0x5a7a0d);}(_0x2032,0xd9));var _0x2203=function(_0x173ab1,_0x2de537){_0x173ab1=_0x173ab1-0x0;var _0x2c1513=_0x2032[_0x173ab1];return _0x2c1513;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
index d175d0b..69c2f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f01=['out','sequelize','exports','STRING','TEXT','ENUM'];(function(_0x3917ad,_0x2caf3e){var _0x26c3ec=function(_0x4583d1){while(--_0x4583d1){_0x3917ad['push'](_0x3917ad['shift']());}};_0x26c3ec(++_0x2caf3e);}(_0x1f01,0x67));var _0x11f0=function(_0x3a22c0,_0x2ecb98){_0x3a22c0=_0x3a22c0-0x0;var _0x42a134=_0x1f01[_0x3a22c0];return _0x42a134;};'use strict';var Sequelize=require(_0x11f0('0x0'));module[_0x11f0('0x1')]={'uniqueid':{'type':Sequelize[_0x11f0('0x2')]},'body':{'type':Sequelize[_0x11f0('0x3')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x11f0('0x4')]('in',_0x11f0('0x5')),'defaultValue':_0x11f0('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x11f0('0x2')]},'providerResponse':{'type':Sequelize[_0x11f0('0x3')]}};
\ No newline at end of file
+var _0x6cbf=['medium','ENUM','out','TEXT','sequelize','exports','STRING'];(function(_0x22ad0c,_0x56e8a1){var _0x3787a9=function(_0x1d87a9){while(--_0x1d87a9){_0x22ad0c['push'](_0x22ad0c['shift']());}};_0x3787a9(++_0x56e8a1);}(_0x6cbf,0x1d2));var _0xf6cb=function(_0x293790,_0x4224cd){_0x293790=_0x293790-0x0;var _0x257a33=_0x6cbf[_0x293790];return _0x257a33;};'use strict';var Sequelize=require(_0xf6cb('0x0'));module[_0xf6cb('0x1')]={'uniqueid':{'type':Sequelize[_0xf6cb('0x2')]},'body':{'type':Sequelize['TEXT'](_0xf6cb('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0xf6cb('0x4')]('in','out'),'defaultValue':_0xf6cb('0x5'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xf6cb('0x6')]}};
\ No newline at end of file
index 06457f3..630c94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ea8=['squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','update','destroy','then','name','send','index','map','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','SquareMessage','includeAll','include','findAll','rows','catch','show','params','create','body','find','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','lodash'];(function(_0x311666,_0x17b07d){var _0x2bc692=function(_0x200073){while(--_0x200073){_0x311666['push'](_0x311666['shift']());}};_0x2bc692(++_0x17b07d);}(_0x8ea8,0x193));var _0x88ea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ea8[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x88ea('0x0'));var zipdir=require(_0x88ea('0x1'));var jsonpatch=require(_0x88ea('0x2'));var rp=require('request-promise');var moment=require(_0x88ea('0x3'));var BPromise=require(_0x88ea('0x4'));var Mustache=require(_0x88ea('0x5'));var util=require(_0x88ea('0x6'));var path=require(_0x88ea('0x7'));var sox=require(_0x88ea('0x8'));var csv=require(_0x88ea('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x88ea('0xa'));var squel=require(_0x88ea('0xb'));var crypto=require(_0x88ea('0xc'));var jsforce=require(_0x88ea('0xd'));var deskjs=require(_0x88ea('0xe'));var toCsv=require(_0x88ea('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x88ea('0xf'));var authService=require(_0x88ea('0x10'));var qs=require(_0x88ea('0x11'));var as=require(_0x88ea('0x12'));var hardwareService=require(_0x88ea('0x13'));var logger=require('../../config/logger')(_0x88ea('0x14'));var utils=require('../../config/utils');var config=require(_0x88ea('0x15'));var licenseUtil=require(_0x88ea('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf1fa9f,_0xa2c62f){_0xa2c62f=_0xa2c62f||0xcc;return function(_0x26fb20){if(_0x26fb20){return _0xf1fa9f[_0x88ea('0x17')](_0xa2c62f);}return _0xf1fa9f[_0x88ea('0x18')](_0xa2c62f)[_0x88ea('0x19')]();};}function respondWithResult(_0x56e54f,_0x504849){_0x504849=_0x504849||0xc8;return function(_0x1e85b9){if(_0x1e85b9){return _0x56e54f[_0x88ea('0x18')](_0x504849)['json'](_0x1e85b9);}};}function respondWithFilteredResult(_0x5c13c9,_0x29e121){return function(_0x183f38){if(_0x183f38){var _0x4b8ee2=typeof _0x29e121[_0x88ea('0x1a')]===_0x88ea('0x1b')&&typeof _0x29e121[_0x88ea('0x1c')]===_0x88ea('0x1b');var _0x47c125=_0x183f38['count'];var _0x1da598=_0x4b8ee2?0x0:_0x29e121['offset'];var _0x35f9aa=_0x4b8ee2?_0x183f38[_0x88ea('0x1d')]:_0x29e121[_0x88ea('0x1a')]+_0x29e121[_0x88ea('0x1c')];var _0xad918b;if(_0x35f9aa>=_0x47c125){_0x35f9aa=_0x47c125;_0xad918b=0xc8;}else{_0xad918b=0xce;}_0x5c13c9[_0x88ea('0x18')](_0xad918b);return _0x5c13c9['set'](_0x88ea('0x1e'),_0x1da598+'-'+_0x35f9aa+'/'+_0x47c125)[_0x88ea('0x1f')](_0x183f38);}return null;};}function patchUpdates(_0xbb3ac7){return function(_0x2ec4ae){try{jsonpatch['apply'](_0x2ec4ae,_0xbb3ac7,!![]);}catch(_0x7a8c59){return BPromise[_0x88ea('0x20')](_0x7a8c59);}return _0x2ec4ae['save']();};}function saveUpdates(_0x2c7370,_0xef02c7){return function(_0xa7fc6a){if(_0xa7fc6a){return _0xa7fc6a[_0x88ea('0x21')](_0x2c7370)['then'](function(_0x2f64d6){return _0x2f64d6;});}return null;};}function removeEntity(_0x5ce0b7,_0x565dfb){return function(_0x396c12){if(_0x396c12){return _0x396c12[_0x88ea('0x22')]()[_0x88ea('0x23')](function(){_0x5ce0b7[_0x88ea('0x18')](0xcc)[_0x88ea('0x19')]();});}};}function handleEntityNotFound(_0x32af8d,_0x5edee4){return function(_0x1a3955){if(!_0x1a3955){_0x32af8d[_0x88ea('0x17')](0x194);}return _0x1a3955;};}function handleError(_0x18d2e8,_0x59d9e1){_0x59d9e1=_0x59d9e1||0x1f4;return function(_0x2e297d){logger['error'](_0x2e297d['stack']);if(_0x2e297d[_0x88ea('0x24')]){delete _0x2e297d[_0x88ea('0x24')];}_0x18d2e8['status'](_0x59d9e1)[_0x88ea('0x25')](_0x2e297d);};}exports[_0x88ea('0x26')]=function(_0x264174,_0x1a3b81){var _0x909ca9={},_0x1dc6e8={},_0x1bd905={'count':0x0,'rows':[]};var _0x4a4a9c=_[_0x88ea('0x27')](db['SquareMessage'][_0x88ea('0x28')],function(_0x2f7bef){return{'name':_0x2f7bef['fieldName'],'type':_0x2f7bef['type'][_0x88ea('0x29')]};});_0x1dc6e8[_0x88ea('0x2a')]=_[_0x88ea('0x27')](_0x4a4a9c,_0x88ea('0x24'));_0x1dc6e8['query']=_[_0x88ea('0x2b')](_0x264174[_0x88ea('0x2c')]);_0x1dc6e8[_0x88ea('0x2d')]=_[_0x88ea('0x2e')](_0x1dc6e8[_0x88ea('0x2a')],_0x1dc6e8[_0x88ea('0x2c')]);_0x909ca9[_0x88ea('0x2f')]=_['intersection'](_0x1dc6e8['model'],qs['fields'](_0x264174[_0x88ea('0x2c')][_0x88ea('0x30')]));_0x909ca9[_0x88ea('0x2f')]=_0x909ca9[_0x88ea('0x2f')][_0x88ea('0x31')]?_0x909ca9[_0x88ea('0x2f')]:_0x1dc6e8[_0x88ea('0x2a')];if(!_0x264174[_0x88ea('0x2c')]['hasOwnProperty'](_0x88ea('0x32'))){_0x909ca9[_0x88ea('0x1c')]=qs[_0x88ea('0x1c')](_0x264174[_0x88ea('0x2c')][_0x88ea('0x1c')]);_0x909ca9[_0x88ea('0x1a')]=qs['offset'](_0x264174[_0x88ea('0x2c')][_0x88ea('0x1a')]);}_0x909ca9['order']=qs[_0x88ea('0x33')](_0x264174[_0x88ea('0x2c')][_0x88ea('0x33')]);_0x909ca9['where']=qs[_0x88ea('0x2d')](_[_0x88ea('0x34')](_0x264174[_0x88ea('0x2c')],_0x1dc6e8[_0x88ea('0x2d')]),_0x4a4a9c);if(_0x264174[_0x88ea('0x2c')][_0x88ea('0x35')]){_0x909ca9[_0x88ea('0x36')]=_[_0x88ea('0x37')](_0x909ca9['where'],{'$or':_[_0x88ea('0x27')](_0x4a4a9c,function(_0x5cc855){if(_0x5cc855['type']!==_0x88ea('0x38')){var _0x3840c4={};_0x3840c4[_0x5cc855[_0x88ea('0x24')]]={'$like':'%'+_0x264174[_0x88ea('0x2c')][_0x88ea('0x35')]+'%'};return _0x3840c4;}})});}_0x909ca9=_[_0x88ea('0x37')]({},_0x909ca9,_0x264174[_0x88ea('0x39')]);var _0x89eaf9={'where':_0x909ca9[_0x88ea('0x36')]};return db[_0x88ea('0x3a')][_0x88ea('0x1d')](_0x89eaf9)[_0x88ea('0x23')](function(_0x2539af){_0x1bd905[_0x88ea('0x1d')]=_0x2539af;if(_0x264174[_0x88ea('0x2c')][_0x88ea('0x3b')]){_0x909ca9[_0x88ea('0x3c')]=[{'all':!![]}];}return db[_0x88ea('0x3a')][_0x88ea('0x3d')](_0x909ca9);})[_0x88ea('0x23')](function(_0x4c85bf){_0x1bd905[_0x88ea('0x3e')]=_0x4c85bf;return _0x1bd905;})[_0x88ea('0x23')](respondWithFilteredResult(_0x1a3b81,_0x909ca9))[_0x88ea('0x3f')](handleError(_0x1a3b81,null));};exports[_0x88ea('0x40')]=function(_0x33a3d6,_0xc216b2){var _0x1b837e={'raw':!![],'where':{'id':_0x33a3d6[_0x88ea('0x41')]['id']}},_0xa33c01={};_0xa33c01[_0x88ea('0x2a')]=_[_0x88ea('0x2b')](db[_0x88ea('0x3a')]['rawAttributes']);_0xa33c01[_0x88ea('0x2c')]=_[_0x88ea('0x2b')](_0x33a3d6[_0x88ea('0x2c')]);_0xa33c01['filters']=_['intersection'](_0xa33c01['model'],_0xa33c01['query']);_0x1b837e['attributes']=_[_0x88ea('0x2e')](_0xa33c01[_0x88ea('0x2a')],qs['fields'](_0x33a3d6[_0x88ea('0x2c')][_0x88ea('0x30')]));_0x1b837e[_0x88ea('0x2f')]=_0x1b837e[_0x88ea('0x2f')][_0x88ea('0x31')]?_0x1b837e['attributes']:_0xa33c01[_0x88ea('0x2a')];if(_0x33a3d6['query'][_0x88ea('0x3b')]){_0x1b837e[_0x88ea('0x3c')]=[{'all':!![]}];}_0x1b837e=_['merge']({},_0x1b837e,_0x33a3d6[_0x88ea('0x39')]);return db[_0x88ea('0x3a')]['find'](_0x1b837e)['then'](handleEntityNotFound(_0xc216b2,null))[_0x88ea('0x23')](respondWithResult(_0xc216b2,null))['catch'](handleError(_0xc216b2,null));};exports['create']=function(_0x5c787f,_0x5f0dca){return db[_0x88ea('0x3a')][_0x88ea('0x42')](_0x5c787f[_0x88ea('0x43')],{})['then'](respondWithResult(_0x5f0dca,0xc9))[_0x88ea('0x3f')](handleError(_0x5f0dca,null));};exports[_0x88ea('0x21')]=function(_0x293f75,_0x3a8305){if(_0x293f75[_0x88ea('0x43')]['id']){delete _0x293f75[_0x88ea('0x43')]['id'];}return db[_0x88ea('0x3a')]['find']({'where':{'id':_0x293f75[_0x88ea('0x41')]['id']}})[_0x88ea('0x23')](handleEntityNotFound(_0x3a8305,null))['then'](saveUpdates(_0x293f75[_0x88ea('0x43')],null))[_0x88ea('0x23')](respondWithResult(_0x3a8305,null))[_0x88ea('0x3f')](handleError(_0x3a8305,null));};exports[_0x88ea('0x22')]=function(_0x35ed9a,_0x43ee8e){return db[_0x88ea('0x3a')][_0x88ea('0x44')]({'where':{'id':_0x35ed9a[_0x88ea('0x41')]['id']}})[_0x88ea('0x23')](handleEntityNotFound(_0x43ee8e,null))[_0x88ea('0x23')](removeEntity(_0x43ee8e,null))[_0x88ea('0x3f')](handleError(_0x43ee8e,null));};
\ No newline at end of file
+var _0x88f8=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','reject','save','update','destroy','then','sendStatus','error','name','index','map','SquareMessage','rawAttributes','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','rimraf','fast-json-patch','request-promise','bluebird'];(function(_0x29b068,_0x5c5300){var _0x5ced6c=function(_0x1a221b){while(--_0x1a221b){_0x29b068['push'](_0x29b068['shift']());}};_0x5ced6c(++_0x5c5300);}(_0x88f8,0xd4));var _0x888f=function(_0x47e971,_0x4a99fb){_0x47e971=_0x47e971-0x0;var _0x427668=_0x88f8[_0x47e971];return _0x427668;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x888f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x888f('0x1'));var rp=require(_0x888f('0x2'));var moment=require('moment');var BPromise=require(_0x888f('0x3'));var Mustache=require(_0x888f('0x4'));var util=require(_0x888f('0x5'));var path=require(_0x888f('0x6'));var sox=require(_0x888f('0x7'));var csv=require(_0x888f('0x8'));var ejs=require(_0x888f('0x9'));var fs=require('fs');var fs_extra=require(_0x888f('0xa'));var _=require(_0x888f('0xb'));var squel=require('squel');var crypto=require(_0x888f('0xc'));var jsforce=require(_0x888f('0xd'));var deskjs=require(_0x888f('0xe'));var toCsv=require(_0x888f('0x8'));var querystring=require(_0x888f('0xf'));var Papa=require(_0x888f('0x10'));var Redis=require(_0x888f('0x11'));var authService=require(_0x888f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x888f('0x13'));var logger=require('../../config/logger')(_0x888f('0x14'));var utils=require(_0x888f('0x15'));var config=require(_0x888f('0x16'));var licenseUtil=require(_0x888f('0x17'));var db=require(_0x888f('0x18'))['db'];function respondWithStatusCode(_0x687edc,_0x402fd0){_0x402fd0=_0x402fd0||0xcc;return function(_0x2ec174){if(_0x2ec174){return _0x687edc['sendStatus'](_0x402fd0);}return _0x687edc[_0x888f('0x19')](_0x402fd0)[_0x888f('0x1a')]();};}function respondWithResult(_0x3ddc87,_0x353b8f){_0x353b8f=_0x353b8f||0xc8;return function(_0x2f709a){if(_0x2f709a){return _0x3ddc87['status'](_0x353b8f)[_0x888f('0x1b')](_0x2f709a);}};}function respondWithFilteredResult(_0x4d7085,_0x41c38e){return function(_0x44175e){if(_0x44175e){var _0xa79f4f=typeof _0x41c38e[_0x888f('0x1c')]==='undefined'&&typeof _0x41c38e['limit']===_0x888f('0x1d');var _0x37cf98=_0x44175e[_0x888f('0x1e')];var _0x149d26=_0xa79f4f?0x0:_0x41c38e[_0x888f('0x1c')];var _0x19b03c=_0xa79f4f?_0x44175e['count']:_0x41c38e[_0x888f('0x1c')]+_0x41c38e[_0x888f('0x1f')];var _0xf382fa;if(_0x19b03c>=_0x37cf98){_0x19b03c=_0x37cf98;_0xf382fa=0xc8;}else{_0xf382fa=0xce;}_0x4d7085[_0x888f('0x19')](_0xf382fa);return _0x4d7085['set']('Content-Range',_0x149d26+'-'+_0x19b03c+'/'+_0x37cf98)[_0x888f('0x1b')](_0x44175e);}return null;};}function patchUpdates(_0x106566){return function(_0x298b3c){try{jsonpatch['apply'](_0x298b3c,_0x106566,!![]);}catch(_0x48f5b3){return BPromise[_0x888f('0x20')](_0x48f5b3);}return _0x298b3c[_0x888f('0x21')]();};}function saveUpdates(_0x490826,_0x16fe8a){return function(_0x1e7fd7){if(_0x1e7fd7){return _0x1e7fd7[_0x888f('0x22')](_0x490826)['then'](function(_0x2629be){return _0x2629be;});}return null;};}function removeEntity(_0x5c71cd,_0xff58a1){return function(_0x5ea843){if(_0x5ea843){return _0x5ea843[_0x888f('0x23')]()[_0x888f('0x24')](function(){_0x5c71cd[_0x888f('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x209e63,_0x5f1dc2){return function(_0x3d9886){if(!_0x3d9886){_0x209e63[_0x888f('0x25')](0x194);}return _0x3d9886;};}function handleError(_0x596926,_0x32e439){_0x32e439=_0x32e439||0x1f4;return function(_0x1a0e92){logger[_0x888f('0x26')](_0x1a0e92['stack']);if(_0x1a0e92[_0x888f('0x27')]){delete _0x1a0e92[_0x888f('0x27')];}_0x596926[_0x888f('0x19')](_0x32e439)['send'](_0x1a0e92);};}exports[_0x888f('0x28')]=function(_0x12eb87,_0x586a9b){var _0x1e2ca2={},_0x379c04={},_0x3d1e15={'count':0x0,'rows':[]};var _0x3c1386=_[_0x888f('0x29')](db[_0x888f('0x2a')][_0x888f('0x2b')],function(_0x3e2dfe){return{'name':_0x3e2dfe['fieldName'],'type':_0x3e2dfe[_0x888f('0x2c')][_0x888f('0x2d')]};});_0x379c04[_0x888f('0x2e')]=_[_0x888f('0x29')](_0x3c1386,_0x888f('0x27'));_0x379c04[_0x888f('0x2f')]=_[_0x888f('0x30')](_0x12eb87[_0x888f('0x2f')]);_0x379c04['filters']=_[_0x888f('0x31')](_0x379c04[_0x888f('0x2e')],_0x379c04[_0x888f('0x2f')]);_0x1e2ca2['attributes']=_[_0x888f('0x31')](_0x379c04['model'],qs['fields'](_0x12eb87[_0x888f('0x2f')][_0x888f('0x32')]));_0x1e2ca2[_0x888f('0x33')]=_0x1e2ca2[_0x888f('0x33')][_0x888f('0x34')]?_0x1e2ca2[_0x888f('0x33')]:_0x379c04[_0x888f('0x2e')];if(!_0x12eb87[_0x888f('0x2f')][_0x888f('0x35')]('nolimit')){_0x1e2ca2[_0x888f('0x1f')]=qs[_0x888f('0x1f')](_0x12eb87['query']['limit']);_0x1e2ca2[_0x888f('0x1c')]=qs[_0x888f('0x1c')](_0x12eb87[_0x888f('0x2f')][_0x888f('0x1c')]);}_0x1e2ca2['order']=qs[_0x888f('0x36')](_0x12eb87['query'][_0x888f('0x36')]);_0x1e2ca2['where']=qs[_0x888f('0x37')](_[_0x888f('0x38')](_0x12eb87[_0x888f('0x2f')],_0x379c04[_0x888f('0x37')]),_0x3c1386);if(_0x12eb87[_0x888f('0x2f')][_0x888f('0x39')]){_0x1e2ca2[_0x888f('0x3a')]=_[_0x888f('0x3b')](_0x1e2ca2[_0x888f('0x3a')],{'$or':_[_0x888f('0x29')](_0x3c1386,function(_0x374b2e){if(_0x374b2e['type']!==_0x888f('0x3c')){var _0x333029={};_0x333029[_0x374b2e[_0x888f('0x27')]]={'$like':'%'+_0x12eb87[_0x888f('0x2f')][_0x888f('0x39')]+'%'};return _0x333029;}})});}_0x1e2ca2=_[_0x888f('0x3b')]({},_0x1e2ca2,_0x12eb87[_0x888f('0x3d')]);var _0x27951d={'where':_0x1e2ca2[_0x888f('0x3a')]};return db[_0x888f('0x2a')]['count'](_0x27951d)[_0x888f('0x24')](function(_0x5c4c70){_0x3d1e15[_0x888f('0x1e')]=_0x5c4c70;if(_0x12eb87[_0x888f('0x2f')][_0x888f('0x3e')]){_0x1e2ca2['include']=[{'all':!![]}];}return db[_0x888f('0x2a')][_0x888f('0x3f')](_0x1e2ca2);})[_0x888f('0x24')](function(_0xc6d5f9){_0x3d1e15[_0x888f('0x40')]=_0xc6d5f9;return _0x3d1e15;})['then'](respondWithFilteredResult(_0x586a9b,_0x1e2ca2))[_0x888f('0x41')](handleError(_0x586a9b,null));};exports[_0x888f('0x42')]=function(_0x23890b,_0xfd79ec){var _0x32f6d1={'raw':!![],'where':{'id':_0x23890b[_0x888f('0x43')]['id']}},_0x3bdc7c={};_0x3bdc7c['model']=_[_0x888f('0x30')](db[_0x888f('0x2a')][_0x888f('0x2b')]);_0x3bdc7c[_0x888f('0x2f')]=_[_0x888f('0x30')](_0x23890b[_0x888f('0x2f')]);_0x3bdc7c[_0x888f('0x37')]=_['intersection'](_0x3bdc7c['model'],_0x3bdc7c['query']);_0x32f6d1[_0x888f('0x33')]=_['intersection'](_0x3bdc7c[_0x888f('0x2e')],qs['fields'](_0x23890b[_0x888f('0x2f')][_0x888f('0x32')]));_0x32f6d1[_0x888f('0x33')]=_0x32f6d1['attributes'][_0x888f('0x34')]?_0x32f6d1[_0x888f('0x33')]:_0x3bdc7c[_0x888f('0x2e')];if(_0x23890b[_0x888f('0x2f')][_0x888f('0x3e')]){_0x32f6d1[_0x888f('0x44')]=[{'all':!![]}];}_0x32f6d1=_[_0x888f('0x3b')]({},_0x32f6d1,_0x23890b[_0x888f('0x3d')]);return db[_0x888f('0x2a')][_0x888f('0x45')](_0x32f6d1)[_0x888f('0x24')](handleEntityNotFound(_0xfd79ec,null))['then'](respondWithResult(_0xfd79ec,null))[_0x888f('0x41')](handleError(_0xfd79ec,null));};exports['create']=function(_0x4633cc,_0x865fe6){return db[_0x888f('0x2a')][_0x888f('0x46')](_0x4633cc['body'],{})[_0x888f('0x24')](respondWithResult(_0x865fe6,0xc9))['catch'](handleError(_0x865fe6,null));};exports[_0x888f('0x22')]=function(_0x4c45ec,_0x2717dc){if(_0x4c45ec[_0x888f('0x47')]['id']){delete _0x4c45ec[_0x888f('0x47')]['id'];}return db[_0x888f('0x2a')][_0x888f('0x45')]({'where':{'id':_0x4c45ec[_0x888f('0x43')]['id']}})[_0x888f('0x24')](handleEntityNotFound(_0x2717dc,null))[_0x888f('0x24')](saveUpdates(_0x4c45ec[_0x888f('0x47')],null))['then'](respondWithResult(_0x2717dc,null))['catch'](handleError(_0x2717dc,null));};exports[_0x888f('0x23')]=function(_0xe520d1,_0x15b374){return db['SquareMessage'][_0x888f('0x45')]({'where':{'id':_0xe520d1[_0x888f('0x43')]['id']}})[_0x888f('0x24')](handleEntityNotFound(_0x15b374,null))[_0x888f('0x24')](removeEntity(_0x15b374,null))[_0x888f('0x41')](handleError(_0x15b374,null));};
\ No newline at end of file
index d4176e6..3c6d5dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22cb=['../../config/environment','./squareMessage.attributes','define','SquareMessage','square_messages','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x29693e,_0x4f51ce){var _0x3ccfc2=function(_0x520623){while(--_0x520623){_0x29693e['push'](_0x29693e['shift']());}};_0x3ccfc2(++_0x4f51ce);}(_0x22cb,0x149));var _0xb22c=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x22cb[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xb22c('0x0'));var util=require(_0xb22c('0x1'));var logger=require(_0xb22c('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb22c('0x3'));var rp=require(_0xb22c('0x4'));var fs=require('fs');var path=require(_0xb22c('0x5'));var rimraf=require(_0xb22c('0x6'));var config=require(_0xb22c('0x7'));var attributes=require(_0xb22c('0x8'));module['exports']=function(_0x5da13f,_0x2e12e6){return _0x5da13f[_0xb22c('0x9')](_0xb22c('0xa'),attributes,{'tableName':_0xb22c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3233=['path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','lodash','util','../../config/logger','moment','bluebird'];(function(_0xc0e2c4,_0xa4c81e){var _0x3e378c=function(_0x18bc29){while(--_0x18bc29){_0xc0e2c4['push'](_0xc0e2c4['shift']());}};_0x3e378c(++_0xa4c81e);}(_0x3233,0x67));var _0x3323=function(_0x357490,_0x59dcf6){_0x357490=_0x357490-0x0;var _0x577733=_0x3233[_0x357490];return _0x577733;};'use strict';var _=require(_0x3323('0x0'));var util=require(_0x3323('0x1'));var logger=require(_0x3323('0x2'))('api');var moment=require(_0x3323('0x3'));var BPromise=require(_0x3323('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3323('0x5'));var rimraf=require(_0x3323('0x6'));var config=require(_0x3323('0x7'));var attributes=require(_0x3323('0x8'));module[_0x3323('0x9')]=function(_0x41956c,_0x30898a){return _0x41956c[_0x3323('0xa')](_0x3323('0xb'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9fe7bc2..0b45591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ed6=['../../config/logger','rpc','../../config/environment','client','http','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','error','message','result','CreateSquareMessage','SquareMessage','create','body','options','raw','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4ed6,0x7c));var _0x64ed=function(_0x3fc18e,_0x4e7d93){_0x3fc18e=_0x3fc18e-0x0;var _0x46999c=_0x4ed6[_0x3fc18e];return _0x46999c;};'use strict';var _=require(_0x64ed('0x0'));var util=require(_0x64ed('0x1'));var moment=require(_0x64ed('0x2'));var BPromise=require(_0x64ed('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x64ed('0x4'))['db'];var utils=require(_0x64ed('0x5'));var logger=require(_0x64ed('0x6'))(_0x64ed('0x7'));var config=require(_0x64ed('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x64ed('0x9')][_0x64ed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26b81e,_0x4950a6,_0x501971){return new BPromise(function(_0x42b55,_0x296ad6){return client['request'](_0x26b81e,_0x501971)[_0x64ed('0xb')](function(_0x4682e5){logger[_0x64ed('0xc')](_0x64ed('0xd'),_0x4950a6,_0x64ed('0xe'));logger['debug'](_0x64ed('0xf'),_0x4950a6,_0x64ed('0xe'),JSON['stringify'](_0x4682e5));if(_0x4682e5[_0x64ed('0x10')]){if(_0x4682e5['error']['code']===0x1f4){logger[_0x64ed('0x10')](_0x64ed('0xd'),_0x4950a6,_0x4682e5[_0x64ed('0x10')][_0x64ed('0x11')]);return _0x296ad6(_0x4682e5[_0x64ed('0x10')][_0x64ed('0x11')]);}logger[_0x64ed('0x10')](_0x64ed('0xd'),_0x4950a6,_0x4682e5[_0x64ed('0x10')][_0x64ed('0x11')]);return _0x42b55(_0x4682e5[_0x64ed('0x10')][_0x64ed('0x11')]);}else{logger[_0x64ed('0xc')](_0x64ed('0xd'),_0x4950a6,_0x64ed('0xe'));_0x42b55(_0x4682e5[_0x64ed('0x12')]['message']);}})['catch'](function(_0xa860af){logger[_0x64ed('0x10')]('SquareMessage,\x20%s,\x20%s',_0x4950a6,_0xa860af);_0x296ad6(_0xa860af);});});}exports[_0x64ed('0x13')]=function(_0x353d89){var _0x3560da=this;return new Promise(function(_0x5d4b32,_0x464868){return db[_0x64ed('0x14')][_0x64ed('0x15')](_0x353d89[_0x64ed('0x16')],{'raw':_0x353d89[_0x64ed('0x17')]?_0x353d89['options'][_0x64ed('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x34b333){logger[_0x64ed('0xc')]('CreateSquareMessage',_0x353d89);logger['debug'](_0x64ed('0x13'),_0x353d89,JSON['stringify'](_0x34b333));_0x5d4b32(_0x34b333);})[_0x64ed('0x19')](function(_0x4662f7){logger[_0x64ed('0x10')](_0x64ed('0x13'),_0x4662f7['message'],_0x353d89);_0x464868(_0x3560da[_0x64ed('0x10')](0x1f4,_0x4662f7[_0x64ed('0x11')]));});});};
\ No newline at end of file
+var _0xbd5c=['stringify','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateSquareMessage','SquareMessage','options','raw','then','debug'];(function(_0x34b87f,_0x28aef2){var _0x449805=function(_0x3735b7){while(--_0x3735b7){_0x34b87f['push'](_0x34b87f['shift']());}};_0x449805(++_0x28aef2);}(_0xbd5c,0x105));var _0xcbd5=function(_0x1335b6,_0x130a94){_0x1335b6=_0x1335b6-0x0;var _0x52f307=_0xbd5c[_0x1335b6];return _0x52f307;};'use strict';var _=require(_0xcbd5('0x0'));var util=require('util');var moment=require(_0xcbd5('0x1'));var BPromise=require(_0xcbd5('0x2'));var rs=require(_0xcbd5('0x3'));var fs=require('fs');var Redis=require(_0xcbd5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcbd5('0x5'));var logger=require(_0xcbd5('0x6'))('rpc');var config=require(_0xcbd5('0x7'));var jayson=require(_0xcbd5('0x8'));var client=jayson[_0xcbd5('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x428c4a,_0x1d4e15,_0x1f0bb7){return new BPromise(function(_0x381f05,_0x4705d1){return client[_0xcbd5('0xa')](_0x428c4a,_0x1f0bb7)['then'](function(_0x418695){logger[_0xcbd5('0xb')](_0xcbd5('0xc'),_0x1d4e15,_0xcbd5('0xd'));logger['debug'](_0xcbd5('0xe'),_0x1d4e15,_0xcbd5('0xd'),JSON['stringify'](_0x418695));if(_0x418695['error']){if(_0x418695[_0xcbd5('0xf')][_0xcbd5('0x10')]===0x1f4){logger[_0xcbd5('0xf')](_0xcbd5('0xc'),_0x1d4e15,_0x418695[_0xcbd5('0xf')][_0xcbd5('0x11')]);return _0x4705d1(_0x418695[_0xcbd5('0xf')][_0xcbd5('0x11')]);}logger['error'](_0xcbd5('0xc'),_0x1d4e15,_0x418695[_0xcbd5('0xf')][_0xcbd5('0x11')]);return _0x381f05(_0x418695['error'][_0xcbd5('0x11')]);}else{logger[_0xcbd5('0xb')](_0xcbd5('0xc'),_0x1d4e15,_0xcbd5('0xd'));_0x381f05(_0x418695['result'][_0xcbd5('0x11')]);}})[_0xcbd5('0x12')](function(_0x57252c){logger[_0xcbd5('0xf')]('SquareMessage,\x20%s,\x20%s',_0x1d4e15,_0x57252c);_0x4705d1(_0x57252c);});});}exports[_0xcbd5('0x13')]=function(_0x5e3153){var _0x98ad74=this;return new Promise(function(_0x472d75,_0xfca29a){return db[_0xcbd5('0x14')]['create'](_0x5e3153['body'],{'raw':_0x5e3153[_0xcbd5('0x15')]?_0x5e3153[_0xcbd5('0x15')][_0xcbd5('0x16')]===undefined?!![]:![]:!![]})[_0xcbd5('0x17')](function(_0x412849){logger['info']('CreateSquareMessage',_0x5e3153);logger[_0xcbd5('0x18')]('CreateSquareMessage',_0x5e3153,JSON[_0xcbd5('0x19')](_0x412849));_0x472d75(_0x412849);})[_0xcbd5('0x12')](function(_0x1cd0c7){logger['error']('CreateSquareMessage',_0x1cd0c7[_0xcbd5('0x11')],_0x5e3153);_0xfca29a(_0x98ad74[_0xcbd5('0xf')](0x1f4,_0x1cd0c7[_0xcbd5('0x11')]));});});};
\ No newline at end of file
index eb6f34d..1787247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfef=['Router','fs-extra','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','15s','post','put','update','delete','exports','util','express'];(function(_0x4a2217,_0x9c653a){var _0x24cb1c=function(_0x35155e){while(--_0x35155e){_0x4a2217['push'](_0x4a2217['shift']());}};_0x24cb1c(++_0x9c653a);}(_0xbfef,0xe2));var _0xfbfe=function(_0x56853d,_0x25130f){_0x56853d=_0x56853d-0x0;var _0x491530=_0xbfef[_0x56853d];return _0x491530;};'use strict';var multer=require('multer');var util=require(_0xfbfe('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfbfe('0x1'));var router=express[_0xfbfe('0x2')]();var fs_extra=require(_0xfbfe('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xfbfe('0x4'));var config=require(_0xfbfe('0x5'));var controller=require(_0xfbfe('0x6'));router[_0xfbfe('0x7')]('/',auth[_0xfbfe('0x8')](),controller[_0xfbfe('0x9')]);router[_0xfbfe('0x7')](_0xfbfe('0xa'),auth['isAuthenticated'](),controller[_0xfbfe('0xb')]);router['get'](_0xfbfe('0xc'),auth['isAuthenticated'](),timeout(_0xfbfe('0xd')),controller['test']);router[_0xfbfe('0xe')]('/',auth[_0xfbfe('0x8')](),controller['create']);router[_0xfbfe('0xf')]('/:id',auth[_0xfbfe('0x8')](),controller[_0xfbfe('0x10')]);router[_0xfbfe('0x11')](_0xfbfe('0xa'),auth[_0xfbfe('0x8')](),controller['destroy']);module[_0xfbfe('0x12')]=router;
\ No newline at end of file
+var _0x5962=['./squareOdbc.controller','get','isAuthenticated','index','show','/:id/test','test','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x54e444,_0x45063b){var _0x345702=function(_0x4b8864){while(--_0x4b8864){_0x54e444['push'](_0x54e444['shift']());}};_0x345702(++_0x45063b);}(_0x5962,0x8b));var _0x2596=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0x5962[_0x47fd36];return _0x21a0fc;};'use strict';var multer=require(_0x2596('0x0'));var util=require(_0x2596('0x1'));var path=require(_0x2596('0x2'));var timeout=require(_0x2596('0x3'));var express=require(_0x2596('0x4'));var router=express['Router']();var fs_extra=require(_0x2596('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2596('0x6'));var config=require(_0x2596('0x7'));var controller=require(_0x2596('0x8'));router[_0x2596('0x9')]('/',auth[_0x2596('0xa')](),controller[_0x2596('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x2596('0xc')]);router[_0x2596('0x9')](_0x2596('0xd'),auth['isAuthenticated'](),timeout('15s'),controller[_0x2596('0xe')]);router['post']('/',auth[_0x2596('0xa')](),controller[_0x2596('0xf')]);router[_0x2596('0x10')](_0x2596('0x11'),auth['isAuthenticated'](),controller[_0x2596('0x12')]);router[_0x2596('0x13')](_0x2596('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x2596('0x14')]=router;
\ No newline at end of file
index 96a9037..77ff4ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91dc=['STRING','sequelize','exports'];(function(_0x397df0,_0x2d0fc3){var _0x3c56ea=function(_0x140b4f){while(--_0x140b4f){_0x397df0['push'](_0x397df0['shift']());}};_0x3c56ea(++_0x2d0fc3);}(_0x91dc,0x1f3));var _0xc91d=function(_0x2a7a9c,_0xb0b385){_0x2a7a9c=_0x2a7a9c-0x0;var _0x3b13ea=_0x91dc[_0x2a7a9c];return _0x3b13ea;};'use strict';var Sequelize=require(_0xc91d('0x0'));module[_0xc91d('0x1')]={'name':{'type':Sequelize[_0xc91d('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xc91d('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcdb8=['sequelize','exports','STRING','name'];(function(_0x5365d5,_0x51aa66){var _0x1d3d0e=function(_0x3d1e01){while(--_0x3d1e01){_0x5365d5['push'](_0x5365d5['shift']());}};_0x1d3d0e(++_0x51aa66);}(_0xcdb8,0x1b8));var _0x8cdb=function(_0x342ca3,_0x31db47){_0x342ca3=_0x342ca3-0x0;var _0x580f2d=_0xcdb8[_0x342ca3];return _0x580f2d;};'use strict';var Sequelize=require(_0x8cdb('0x0'));module[_0x8cdb('0x1')]={'name':{'type':Sequelize[_0x8cdb('0x2')],'unique':_0x8cdb('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x8cdb('0x2')]},'description':{'type':Sequelize[_0x8cdb('0x2')]}};
\ No newline at end of file
index aefb716..527b45c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e9b=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','test','dsn','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','ODBC','UserProfileResource','destroy','stack','name','send','index','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','merge','map','VIRTUAL','filter','includeAll','SquareOdbc','findAll','rows','show','params','include','options','find','catch','create'];(function(_0x120376,_0x571898){var _0x28c529=function(_0x4f130c){while(--_0x4f130c){_0x120376['push'](_0x120376['shift']());}};_0x28c529(++_0x571898);}(_0x0e9b,0x16f));var _0xb0e9=function(_0xb5efef,_0x597816){_0xb5efef=_0xb5efef-0x0;var _0x41ba65=_0x0e9b[_0xb5efef];return _0x41ba65;};'use strict';var emlformat=require(_0xb0e9('0x0'));var rimraf=require(_0xb0e9('0x1'));var zipdir=require(_0xb0e9('0x2'));var jsonpatch=require(_0xb0e9('0x3'));var rp=require(_0xb0e9('0x4'));var moment=require(_0xb0e9('0x5'));var BPromise=require(_0xb0e9('0x6'));var Mustache=require(_0xb0e9('0x7'));var util=require(_0xb0e9('0x8'));var path=require(_0xb0e9('0x9'));var sox=require(_0xb0e9('0xa'));var csv=require('to-csv');var ejs=require(_0xb0e9('0xb'));var fs=require('fs');var fs_extra=require(_0xb0e9('0xc'));var _=require(_0xb0e9('0xd'));var squel=require(_0xb0e9('0xe'));var crypto=require('crypto');var jsforce=require(_0xb0e9('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb0e9('0x10'));var Papa=require(_0xb0e9('0x11'));var Redis=require(_0xb0e9('0x12'));var authService=require(_0xb0e9('0x13'));var qs=require(_0xb0e9('0x14'));var as=require(_0xb0e9('0x15'));var hardwareService=require(_0xb0e9('0x16'));var logger=require(_0xb0e9('0x17'))(_0xb0e9('0x18'));var utils=require('../../config/utils');var config=require(_0xb0e9('0x19'));var licenseUtil=require(_0xb0e9('0x1a'));var db=require(_0xb0e9('0x1b'))['db'];function respondWithStatusCode(_0xa218d8,_0x3bc7c7){_0x3bc7c7=_0x3bc7c7||0xcc;return function(_0x2ab234){if(_0x2ab234){return _0xa218d8['sendStatus'](_0x3bc7c7);}return _0xa218d8[_0xb0e9('0x1c')](_0x3bc7c7)[_0xb0e9('0x1d')]();};}function respondWithResult(_0x4e05ff,_0x503fd0){_0x503fd0=_0x503fd0||0xc8;return function(_0x5a8de3){if(_0x5a8de3){return _0x4e05ff[_0xb0e9('0x1c')](_0x503fd0)[_0xb0e9('0x1e')](_0x5a8de3);}};}function respondWithFilteredResult(_0x5c2878,_0xe7a6fc){return function(_0x4974f3){if(_0x4974f3){var _0x12a50b=typeof _0xe7a6fc[_0xb0e9('0x1f')]===_0xb0e9('0x20')&&typeof _0xe7a6fc[_0xb0e9('0x21')]===_0xb0e9('0x20');var _0x4c2e6c=_0x4974f3[_0xb0e9('0x22')];var _0x517eeb=_0x12a50b?0x0:_0xe7a6fc[_0xb0e9('0x1f')];var _0x335da1=_0x12a50b?_0x4974f3[_0xb0e9('0x22')]:_0xe7a6fc[_0xb0e9('0x1f')]+_0xe7a6fc[_0xb0e9('0x21')];var _0x1e4b6f;if(_0x335da1>=_0x4c2e6c){_0x335da1=_0x4c2e6c;_0x1e4b6f=0xc8;}else{_0x1e4b6f=0xce;}_0x5c2878['status'](_0x1e4b6f);return _0x5c2878['set'](_0xb0e9('0x23'),_0x517eeb+'-'+_0x335da1+'/'+_0x4c2e6c)['json'](_0x4974f3);}return null;};}function patchUpdates(_0x56f5bb){return function(_0x9d4ff3){try{jsonpatch[_0xb0e9('0x24')](_0x9d4ff3,_0x56f5bb,!![]);}catch(_0x27b8b5){return BPromise[_0xb0e9('0x25')](_0x27b8b5);}return _0x9d4ff3[_0xb0e9('0x26')]();};}function saveUpdates(_0x5a6b31,_0x28ffe6){return function(_0x4b007f){if(_0x4b007f){return _0x4b007f[_0xb0e9('0x27')](_0x5a6b31)[_0xb0e9('0x28')](function(_0xa1dc6d){return _0xa1dc6d;});}return null;};}function removeEntity(_0x4b6622,_0x13f7a0){return function(_0x42fd98){if(_0x42fd98){return _0x42fd98['destroy']()[_0xb0e9('0x28')](function(){var _0x11fbc3=_0x42fd98[_0xb0e9('0x29')]({'plain':!![]});var _0x5d4a6a=_0xb0e9('0x2a');return db[_0xb0e9('0x2b')][_0xb0e9('0x2c')]({'where':{'type':_0x5d4a6a,'resourceId':_0x11fbc3['id']}})[_0xb0e9('0x28')](function(){return _0x42fd98;});})[_0xb0e9('0x28')](function(){_0x4b6622[_0xb0e9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32775d,_0x10dd81){return function(_0x5ecddb){if(!_0x5ecddb){_0x32775d['sendStatus'](0x194);}return _0x5ecddb;};}function handleError(_0x3bf20f,_0x236b5a){_0x236b5a=_0x236b5a||0x1f4;return function(_0x52968b){logger['error'](_0x52968b[_0xb0e9('0x2d')]);if(_0x52968b[_0xb0e9('0x2e')]){delete _0x52968b[_0xb0e9('0x2e')];}_0x3bf20f['status'](_0x236b5a)[_0xb0e9('0x2f')](_0x52968b);};}exports[_0xb0e9('0x30')]=function(_0x38fd21,_0x34ca3f){var _0x771c1d={},_0x5943cf={},_0x306947={'count':0x0,'rows':[]};var _0x2122c1=_['map'](db['SquareOdbc'][_0xb0e9('0x31')],function(_0x31bce2){return{'name':_0x31bce2[_0xb0e9('0x32')],'type':_0x31bce2[_0xb0e9('0x33')]['key']};});_0x5943cf[_0xb0e9('0x34')]=_['map'](_0x2122c1,_0xb0e9('0x2e'));_0x5943cf[_0xb0e9('0x35')]=_[_0xb0e9('0x36')](_0x38fd21[_0xb0e9('0x35')]);_0x5943cf[_0xb0e9('0x37')]=_[_0xb0e9('0x38')](_0x5943cf[_0xb0e9('0x34')],_0x5943cf[_0xb0e9('0x35')]);_0x771c1d[_0xb0e9('0x39')]=_[_0xb0e9('0x38')](_0x5943cf[_0xb0e9('0x34')],qs[_0xb0e9('0x3a')](_0x38fd21[_0xb0e9('0x35')][_0xb0e9('0x3a')]));_0x771c1d[_0xb0e9('0x39')]=_0x771c1d[_0xb0e9('0x39')][_0xb0e9('0x3b')]?_0x771c1d[_0xb0e9('0x39')]:_0x5943cf[_0xb0e9('0x34')];if(!_0x38fd21[_0xb0e9('0x35')]['hasOwnProperty'](_0xb0e9('0x3c'))){_0x771c1d[_0xb0e9('0x21')]=qs['limit'](_0x38fd21['query'][_0xb0e9('0x21')]);_0x771c1d[_0xb0e9('0x1f')]=qs['offset'](_0x38fd21[_0xb0e9('0x35')][_0xb0e9('0x1f')]);}_0x771c1d['order']=qs[_0xb0e9('0x3d')](_0x38fd21[_0xb0e9('0x35')]['sort']);_0x771c1d[_0xb0e9('0x3e')]=qs[_0xb0e9('0x37')](_['pick'](_0x38fd21[_0xb0e9('0x35')],_0x5943cf[_0xb0e9('0x37')]),_0x2122c1);if(_0x38fd21['query']['filter']){_0x771c1d['where']=_[_0xb0e9('0x3f')](_0x771c1d['where'],{'$or':_[_0xb0e9('0x40')](_0x2122c1,function(_0x6269e4){if(_0x6269e4['type']!==_0xb0e9('0x41')){var _0x2a343f={};_0x2a343f[_0x6269e4[_0xb0e9('0x2e')]]={'$like':'%'+_0x38fd21['query'][_0xb0e9('0x42')]+'%'};return _0x2a343f;}})});}_0x771c1d=_[_0xb0e9('0x3f')]({},_0x771c1d,_0x38fd21['options']);var _0x1e5d2b={'where':_0x771c1d['where']};return db['SquareOdbc'][_0xb0e9('0x22')](_0x1e5d2b)[_0xb0e9('0x28')](function(_0x1730ab){_0x306947['count']=_0x1730ab;if(_0x38fd21['query'][_0xb0e9('0x43')]){_0x771c1d['include']=[{'all':!![]}];}return db[_0xb0e9('0x44')][_0xb0e9('0x45')](_0x771c1d);})[_0xb0e9('0x28')](function(_0x16df88){_0x306947[_0xb0e9('0x46')]=_0x16df88;return _0x306947;})['then'](respondWithFilteredResult(_0x34ca3f,_0x771c1d))['catch'](handleError(_0x34ca3f,null));};exports[_0xb0e9('0x47')]=function(_0x153b65,_0x39de78){var _0x517b36={'raw':!![],'where':{'id':_0x153b65[_0xb0e9('0x48')]['id']}},_0x3b8c09={};_0x3b8c09['model']=_[_0xb0e9('0x36')](db[_0xb0e9('0x44')][_0xb0e9('0x31')]);_0x3b8c09[_0xb0e9('0x35')]=_[_0xb0e9('0x36')](_0x153b65[_0xb0e9('0x35')]);_0x3b8c09[_0xb0e9('0x37')]=_[_0xb0e9('0x38')](_0x3b8c09['model'],_0x3b8c09[_0xb0e9('0x35')]);_0x517b36['attributes']=_[_0xb0e9('0x38')](_0x3b8c09[_0xb0e9('0x34')],qs[_0xb0e9('0x3a')](_0x153b65[_0xb0e9('0x35')][_0xb0e9('0x3a')]));_0x517b36[_0xb0e9('0x39')]=_0x517b36[_0xb0e9('0x39')][_0xb0e9('0x3b')]?_0x517b36[_0xb0e9('0x39')]:_0x3b8c09[_0xb0e9('0x34')];if(_0x153b65[_0xb0e9('0x35')]['includeAll']){_0x517b36[_0xb0e9('0x49')]=[{'all':!![]}];}_0x517b36=_[_0xb0e9('0x3f')]({},_0x517b36,_0x153b65[_0xb0e9('0x4a')]);return db['SquareOdbc'][_0xb0e9('0x4b')](_0x517b36)['then'](handleEntityNotFound(_0x39de78,null))[_0xb0e9('0x28')](respondWithResult(_0x39de78,null))[_0xb0e9('0x4c')](handleError(_0x39de78,null));};exports[_0xb0e9('0x4d')]=function(_0x42ce7a,_0x1d8b04){return db[_0xb0e9('0x44')][_0xb0e9('0x4d')](_0x42ce7a['body'],{})[_0xb0e9('0x28')](function(_0x3fb531){var _0x380486=_0x42ce7a[_0xb0e9('0x4e')][_0xb0e9('0x29')]({'plain':!![]});if(!_0x380486)throw new Error(_0xb0e9('0x4f'));if(_0x380486[_0xb0e9('0x50')]==='user'){var _0x4bcf87=_0x3fb531[_0xb0e9('0x29')]({'plain':!![]});var _0x292cb2=_0xb0e9('0x2a');return db[_0xb0e9('0x51')][_0xb0e9('0x4b')]({'where':{'name':_0x292cb2,'userProfileId':_0x380486[_0xb0e9('0x52')]},'raw':!![]})[_0xb0e9('0x28')](function(_0x2de4a5){if(_0x2de4a5&&_0x2de4a5['autoAssociation']===0x0){return db['UserProfileResource'][_0xb0e9('0x4d')]({'name':_0x4bcf87[_0xb0e9('0x2e')],'resourceId':_0x4bcf87['id'],'type':_0x2de4a5['name'],'sectionId':_0x2de4a5['id']},{})['then'](function(){return _0x3fb531;});}else{return _0x3fb531;}})[_0xb0e9('0x4c')](function(_0x52a221){logger['error'](_0xb0e9('0x53'),_0x52a221);throw _0x52a221;});}return _0x3fb531;})[_0xb0e9('0x28')](respondWithResult(_0x1d8b04,0xc9))[_0xb0e9('0x4c')](handleError(_0x1d8b04,null));};exports[_0xb0e9('0x27')]=function(_0x2b1810,_0x2a3205){if(_0x2b1810[_0xb0e9('0x54')]['id']){delete _0x2b1810['body']['id'];}return db[_0xb0e9('0x44')][_0xb0e9('0x4b')]({'where':{'id':_0x2b1810[_0xb0e9('0x48')]['id']}})['then'](handleEntityNotFound(_0x2a3205,null))[_0xb0e9('0x28')](saveUpdates(_0x2b1810['body'],null))[_0xb0e9('0x28')](respondWithResult(_0x2a3205,null))['catch'](handleError(_0x2a3205,null));};exports[_0xb0e9('0x2c')]=function(_0x1a7cbb,_0x278942){return db['SquareOdbc'][_0xb0e9('0x4b')]({'where':{'id':_0x1a7cbb[_0xb0e9('0x48')]['id']}})[_0xb0e9('0x28')](handleEntityNotFound(_0x278942,null))[_0xb0e9('0x28')](removeEntity(_0x278942,null))[_0xb0e9('0x4c')](handleError(_0x278942,null));};exports[_0xb0e9('0x55')]=function(_0x5e2595,_0x40174c,_0x3f86db){var _0x101ae2;return db[_0xb0e9('0x44')][_0xb0e9('0x4b')]({'where':{'id':_0x5e2595['params']['id']},'attributes':['id',_0xb0e9('0x56')]})[_0xb0e9('0x28')](handleEntityNotFound(_0x40174c,null))[_0xb0e9('0x28')](function(_0x3ff087){if(_0x3ff087){var _0x121403=require('odbc')();_0x121403[_0xb0e9('0x57')](_0x3ff087[_0xb0e9('0x56')]);_0x121403[_0xb0e9('0x58')]();return _0x3ff087;}})[_0xb0e9('0x28')](respondWithResult(_0x40174c,null))['catch'](handleError(_0x40174c,null));};
\ No newline at end of file
+var _0x6ab8=['order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','status','set','save','update','then','destroy','ODBC','UserProfileResource','error','name','send','index','map','SquareOdbc','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','nolimit'];(function(_0x4d8666,_0x2ff19d){var _0x37175b=function(_0x1b8de6){while(--_0x1b8de6){_0x4d8666['push'](_0x4d8666['shift']());}};_0x37175b(++_0x2ff19d);}(_0x6ab8,0xc2));var _0x86ab=function(_0x5c02a6,_0x26a596){_0x5c02a6=_0x5c02a6-0x0;var _0x29d2a2=_0x6ab8[_0x5c02a6];return _0x29d2a2;};'use strict';var emlformat=require(_0x86ab('0x0'));var rimraf=require(_0x86ab('0x1'));var zipdir=require(_0x86ab('0x2'));var jsonpatch=require(_0x86ab('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86ab('0x4'));var Mustache=require(_0x86ab('0x5'));var util=require(_0x86ab('0x6'));var path=require(_0x86ab('0x7'));var sox=require(_0x86ab('0x8'));var csv=require(_0x86ab('0x9'));var ejs=require(_0x86ab('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x86ab('0xb'));var squel=require(_0x86ab('0xc'));var crypto=require(_0x86ab('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x86ab('0xe'));var toCsv=require(_0x86ab('0x9'));var querystring=require('querystring');var Papa=require(_0x86ab('0xf'));var Redis=require('ioredis');var authService=require(_0x86ab('0x10'));var qs=require(_0x86ab('0x11'));var as=require(_0x86ab('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x86ab('0x13'))('api');var utils=require(_0x86ab('0x14'));var config=require(_0x86ab('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x86ab('0x16'))['db'];function respondWithStatusCode(_0x598942,_0x14cf40){_0x14cf40=_0x14cf40||0xcc;return function(_0x43f186){if(_0x43f186){return _0x598942[_0x86ab('0x17')](_0x14cf40);}return _0x598942['status'](_0x14cf40)[_0x86ab('0x18')]();};}function respondWithResult(_0x49dcc0,_0x57824a){_0x57824a=_0x57824a||0xc8;return function(_0x217ea4){if(_0x217ea4){return _0x49dcc0['status'](_0x57824a)[_0x86ab('0x19')](_0x217ea4);}};}function respondWithFilteredResult(_0x4f50cc,_0xc9e662){return function(_0x8b534f){if(_0x8b534f){var _0x39a75e=typeof _0xc9e662['offset']===_0x86ab('0x1a')&&typeof _0xc9e662[_0x86ab('0x1b')]===_0x86ab('0x1a');var _0x52e89a=_0x8b534f[_0x86ab('0x1c')];var _0x583808=_0x39a75e?0x0:_0xc9e662[_0x86ab('0x1d')];var _0x338e0a=_0x39a75e?_0x8b534f[_0x86ab('0x1c')]:_0xc9e662['offset']+_0xc9e662[_0x86ab('0x1b')];var _0x5207e8;if(_0x338e0a>=_0x52e89a){_0x338e0a=_0x52e89a;_0x5207e8=0xc8;}else{_0x5207e8=0xce;}_0x4f50cc[_0x86ab('0x1e')](_0x5207e8);return _0x4f50cc[_0x86ab('0x1f')]('Content-Range',_0x583808+'-'+_0x338e0a+'/'+_0x52e89a)[_0x86ab('0x19')](_0x8b534f);}return null;};}function patchUpdates(_0x44cdf4){return function(_0x305bfc){try{jsonpatch['apply'](_0x305bfc,_0x44cdf4,!![]);}catch(_0x2a207e){return BPromise['reject'](_0x2a207e);}return _0x305bfc[_0x86ab('0x20')]();};}function saveUpdates(_0x4e805f,_0x4265c3){return function(_0x183ed0){if(_0x183ed0){return _0x183ed0[_0x86ab('0x21')](_0x4e805f)[_0x86ab('0x22')](function(_0xe4a127){return _0xe4a127;});}return null;};}function removeEntity(_0x446f27,_0x4f137d){return function(_0x509af5){if(_0x509af5){return _0x509af5[_0x86ab('0x23')]()[_0x86ab('0x22')](function(){var _0x22e8ca=_0x509af5['get']({'plain':!![]});var _0x394f34=_0x86ab('0x24');return db[_0x86ab('0x25')][_0x86ab('0x23')]({'where':{'type':_0x394f34,'resourceId':_0x22e8ca['id']}})[_0x86ab('0x22')](function(){return _0x509af5;});})[_0x86ab('0x22')](function(){_0x446f27[_0x86ab('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20dd85,_0x1a46b8){return function(_0x3f3644){if(!_0x3f3644){_0x20dd85['sendStatus'](0x194);}return _0x3f3644;};}function handleError(_0x545fcf,_0x585e06){_0x585e06=_0x585e06||0x1f4;return function(_0x317155){logger[_0x86ab('0x26')](_0x317155['stack']);if(_0x317155[_0x86ab('0x27')]){delete _0x317155['name'];}_0x545fcf[_0x86ab('0x1e')](_0x585e06)[_0x86ab('0x28')](_0x317155);};}exports[_0x86ab('0x29')]=function(_0x36dbc8,_0x165c26){var _0x2feb1e={},_0x21837d={},_0x8d3024={'count':0x0,'rows':[]};var _0x29a16d=_[_0x86ab('0x2a')](db[_0x86ab('0x2b')][_0x86ab('0x2c')],function(_0xf89071){return{'name':_0xf89071['fieldName'],'type':_0xf89071[_0x86ab('0x2d')][_0x86ab('0x2e')]};});_0x21837d[_0x86ab('0x2f')]=_['map'](_0x29a16d,_0x86ab('0x27'));_0x21837d[_0x86ab('0x30')]=_['keys'](_0x36dbc8[_0x86ab('0x30')]);_0x21837d[_0x86ab('0x31')]=_[_0x86ab('0x32')](_0x21837d['model'],_0x21837d['query']);_0x2feb1e[_0x86ab('0x33')]=_[_0x86ab('0x32')](_0x21837d[_0x86ab('0x2f')],qs[_0x86ab('0x34')](_0x36dbc8[_0x86ab('0x30')][_0x86ab('0x34')]));_0x2feb1e[_0x86ab('0x33')]=_0x2feb1e['attributes'][_0x86ab('0x35')]?_0x2feb1e[_0x86ab('0x33')]:_0x21837d[_0x86ab('0x2f')];if(!_0x36dbc8[_0x86ab('0x30')]['hasOwnProperty'](_0x86ab('0x36'))){_0x2feb1e[_0x86ab('0x1b')]=qs[_0x86ab('0x1b')](_0x36dbc8['query']['limit']);_0x2feb1e[_0x86ab('0x1d')]=qs[_0x86ab('0x1d')](_0x36dbc8['query'][_0x86ab('0x1d')]);}_0x2feb1e[_0x86ab('0x37')]=qs[_0x86ab('0x38')](_0x36dbc8[_0x86ab('0x30')]['sort']);_0x2feb1e[_0x86ab('0x39')]=qs['filters'](_[_0x86ab('0x3a')](_0x36dbc8[_0x86ab('0x30')],_0x21837d['filters']),_0x29a16d);if(_0x36dbc8[_0x86ab('0x30')]['filter']){_0x2feb1e[_0x86ab('0x39')]=_[_0x86ab('0x3b')](_0x2feb1e[_0x86ab('0x39')],{'$or':_['map'](_0x29a16d,function(_0x402577){if(_0x402577[_0x86ab('0x2d')]!==_0x86ab('0x3c')){var _0x46bd1f={};_0x46bd1f[_0x402577['name']]={'$like':'%'+_0x36dbc8[_0x86ab('0x30')][_0x86ab('0x3d')]+'%'};return _0x46bd1f;}})});}_0x2feb1e=_[_0x86ab('0x3b')]({},_0x2feb1e,_0x36dbc8[_0x86ab('0x3e')]);var _0x173ef4={'where':_0x2feb1e['where']};return db[_0x86ab('0x2b')][_0x86ab('0x1c')](_0x173ef4)[_0x86ab('0x22')](function(_0x314b77){_0x8d3024[_0x86ab('0x1c')]=_0x314b77;if(_0x36dbc8[_0x86ab('0x30')][_0x86ab('0x3f')]){_0x2feb1e[_0x86ab('0x40')]=[{'all':!![]}];}return db[_0x86ab('0x2b')][_0x86ab('0x41')](_0x2feb1e);})['then'](function(_0x263529){_0x8d3024[_0x86ab('0x42')]=_0x263529;return _0x8d3024;})[_0x86ab('0x22')](respondWithFilteredResult(_0x165c26,_0x2feb1e))[_0x86ab('0x43')](handleError(_0x165c26,null));};exports[_0x86ab('0x44')]=function(_0x2dd362,_0x4be26e){var _0x543bcb={'raw':!![],'where':{'id':_0x2dd362[_0x86ab('0x45')]['id']}},_0x90da0d={};_0x90da0d['model']=_[_0x86ab('0x46')](db[_0x86ab('0x2b')][_0x86ab('0x2c')]);_0x90da0d[_0x86ab('0x30')]=_[_0x86ab('0x46')](_0x2dd362[_0x86ab('0x30')]);_0x90da0d['filters']=_['intersection'](_0x90da0d[_0x86ab('0x2f')],_0x90da0d['query']);_0x543bcb[_0x86ab('0x33')]=_[_0x86ab('0x32')](_0x90da0d[_0x86ab('0x2f')],qs[_0x86ab('0x34')](_0x2dd362[_0x86ab('0x30')][_0x86ab('0x34')]));_0x543bcb[_0x86ab('0x33')]=_0x543bcb['attributes']['length']?_0x543bcb[_0x86ab('0x33')]:_0x90da0d[_0x86ab('0x2f')];if(_0x2dd362[_0x86ab('0x30')][_0x86ab('0x3f')]){_0x543bcb['include']=[{'all':!![]}];}_0x543bcb=_[_0x86ab('0x3b')]({},_0x543bcb,_0x2dd362[_0x86ab('0x3e')]);return db[_0x86ab('0x2b')]['find'](_0x543bcb)[_0x86ab('0x22')](handleEntityNotFound(_0x4be26e,null))[_0x86ab('0x22')](respondWithResult(_0x4be26e,null))[_0x86ab('0x43')](handleError(_0x4be26e,null));};exports[_0x86ab('0x47')]=function(_0x315664,_0x22261d){return db[_0x86ab('0x2b')]['create'](_0x315664['body'],{})[_0x86ab('0x22')](function(_0x2538f3){var _0x45b9c4=_0x315664[_0x86ab('0x48')][_0x86ab('0x49')]({'plain':!![]});if(!_0x45b9c4)throw new Error(_0x86ab('0x4a'));if(_0x45b9c4['role']===_0x86ab('0x48')){var _0x58a2ac=_0x2538f3[_0x86ab('0x49')]({'plain':!![]});var _0x38c51d=_0x86ab('0x24');return db[_0x86ab('0x4b')][_0x86ab('0x4c')]({'where':{'name':_0x38c51d,'userProfileId':_0x45b9c4[_0x86ab('0x4d')]},'raw':!![]})[_0x86ab('0x22')](function(_0x201129){if(_0x201129&&_0x201129[_0x86ab('0x4e')]===0x0){return db[_0x86ab('0x25')][_0x86ab('0x47')]({'name':_0x58a2ac[_0x86ab('0x27')],'resourceId':_0x58a2ac['id'],'type':_0x201129[_0x86ab('0x27')],'sectionId':_0x201129['id']},{})[_0x86ab('0x22')](function(){return _0x2538f3;});}else{return _0x2538f3;}})[_0x86ab('0x43')](function(_0x19c167){logger['error'](_0x86ab('0x4f'),_0x19c167);throw _0x19c167;});}return _0x2538f3;})[_0x86ab('0x22')](respondWithResult(_0x22261d,0xc9))['catch'](handleError(_0x22261d,null));};exports[_0x86ab('0x21')]=function(_0x121c72,_0x21920c){if(_0x121c72['body']['id']){delete _0x121c72['body']['id'];}return db['SquareOdbc'][_0x86ab('0x4c')]({'where':{'id':_0x121c72[_0x86ab('0x45')]['id']}})['then'](handleEntityNotFound(_0x21920c,null))['then'](saveUpdates(_0x121c72['body'],null))[_0x86ab('0x22')](respondWithResult(_0x21920c,null))[_0x86ab('0x43')](handleError(_0x21920c,null));};exports[_0x86ab('0x23')]=function(_0x26d56a,_0x3d03fe){return db[_0x86ab('0x2b')][_0x86ab('0x4c')]({'where':{'id':_0x26d56a['params']['id']}})[_0x86ab('0x22')](handleEntityNotFound(_0x3d03fe,null))[_0x86ab('0x22')](removeEntity(_0x3d03fe,null))[_0x86ab('0x43')](handleError(_0x3d03fe,null));};exports[_0x86ab('0x50')]=function(_0x3aab62,_0x3225f5,_0x35c7e8){var _0x1c4f8c;return db[_0x86ab('0x2b')][_0x86ab('0x4c')]({'where':{'id':_0x3aab62['params']['id']},'attributes':['id',_0x86ab('0x51')]})[_0x86ab('0x22')](handleEntityNotFound(_0x3225f5,null))[_0x86ab('0x22')](function(_0x4d7cd3){if(_0x4d7cd3){var _0x5efeee=require('odbc')();_0x5efeee['openSync'](_0x4d7cd3[_0x86ab('0x51')]);_0x5efeee[_0x86ab('0x52')]();return _0x4d7cd3;}})[_0x86ab('0x22')](respondWithResult(_0x3225f5,null))[_0x86ab('0x43')](handleError(_0x3225f5,null));};
\ No newline at end of file
index e5cb04e..4ac280a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26d1=['SquareOdbc','util','../../config/logger','api','moment','request-promise','path','./squareOdbc.attributes','define'];(function(_0x48430c,_0x26fb97){var _0x3880ba=function(_0x32f78b){while(--_0x32f78b){_0x48430c['push'](_0x48430c['shift']());}};_0x3880ba(++_0x26fb97);}(_0x26d1,0x1e7));var _0x126d=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x26d1[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var util=require(_0x126d('0x0'));var logger=require(_0x126d('0x1'))(_0x126d('0x2'));var moment=require(_0x126d('0x3'));var BPromise=require('bluebird');var rp=require(_0x126d('0x4'));var fs=require('fs');var path=require(_0x126d('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x126d('0x6'));module['exports']=function(_0x26a3ae,_0x4f1e23){return _0x26a3ae[_0x126d('0x7')](_0x126d('0x8'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf55=['../../config/logger','api','moment','request-promise','../../config/environment','./squareOdbc.attributes','exports','SquareOdbc','square_odbc','lodash','util'];(function(_0x388550,_0x3fd74b){var _0x735860=function(_0x50783c){while(--_0x50783c){_0x388550['push'](_0x388550['shift']());}};_0x735860(++_0x3fd74b);}(_0xbf55,0x6c));var _0x5bf5=function(_0x6ed942,_0x3aa028){_0x6ed942=_0x6ed942-0x0;var _0x1be18b=_0xbf55[_0x6ed942];return _0x1be18b;};'use strict';var _=require(_0x5bf5('0x0'));var util=require(_0x5bf5('0x1'));var logger=require(_0x5bf5('0x2'))(_0x5bf5('0x3'));var moment=require(_0x5bf5('0x4'));var BPromise=require('bluebird');var rp=require(_0x5bf5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5bf5('0x6'));var attributes=require(_0x5bf5('0x7'));module[_0x5bf5('0x8')]=function(_0xbfd438,_0x1a4f71){return _0xbfd438['define'](_0x5bf5('0x9'),attributes,{'tableName':_0x5bf5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 25a83b4..3eb1dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a73=['then','info','request\x20sent','code','SquareOdbc,\x20%s,\x20%s','error','message','ShowSquareOdbc','find','options','raw','include','model','attributes','map','debug','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x1318de,_0x356ece){var _0x534f3d=function(_0x422fbe){while(--_0x422fbe){_0x1318de['push'](_0x1318de['shift']());}};_0x534f3d(++_0x356ece);}(_0x5a73,0x1f2));var _0x35a7=function(_0x11795c,_0x53e382){_0x11795c=_0x11795c-0x0;var _0x217981=_0x5a73[_0x11795c];return _0x217981;};'use strict';var _=require(_0x35a7('0x0'));var util=require(_0x35a7('0x1'));var moment=require(_0x35a7('0x2'));var BPromise=require(_0x35a7('0x3'));var rs=require(_0x35a7('0x4'));var fs=require('fs');var Redis=require(_0x35a7('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x35a7('0x6'));var config=require(_0x35a7('0x7'));var jayson=require(_0x35a7('0x8'));var client=jayson[_0x35a7('0x9')][_0x35a7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x266221,_0x238790,_0x86e2d8){return new BPromise(function(_0x2d0bcb,_0x3ca194){return client[_0x35a7('0xb')](_0x266221,_0x86e2d8)[_0x35a7('0xc')](function(_0x1f6149){logger[_0x35a7('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x238790,_0x35a7('0xe'));logger['debug']('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x238790,_0x35a7('0xe'),JSON['stringify'](_0x1f6149));if(_0x1f6149['error']){if(_0x1f6149['error'][_0x35a7('0xf')]===0x1f4){logger['error'](_0x35a7('0x10'),_0x238790,_0x1f6149['error']['message']);return _0x3ca194(_0x1f6149[_0x35a7('0x11')][_0x35a7('0x12')]);}logger['error'](_0x35a7('0x10'),_0x238790,_0x1f6149[_0x35a7('0x11')][_0x35a7('0x12')]);return _0x2d0bcb(_0x1f6149['error'][_0x35a7('0x12')]);}else{logger[_0x35a7('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x238790,_0x35a7('0xe'));_0x2d0bcb(_0x1f6149['result']['message']);}})['catch'](function(_0x44b8c5){logger[_0x35a7('0x11')](_0x35a7('0x10'),_0x238790,_0x44b8c5);_0x3ca194(_0x44b8c5);});});}exports[_0x35a7('0x13')]=function(_0x405d15){var _0x1e7846=this;return new Promise(function(_0x5b2308,_0x42f09b){return db['SquareOdbc'][_0x35a7('0x14')]({'raw':_0x405d15['options']?_0x405d15[_0x35a7('0x15')][_0x35a7('0x16')]===undefined?!![]:![]:!![],'where':_0x405d15[_0x35a7('0x15')]?_0x405d15[_0x35a7('0x15')]['where']||null:null,'attributes':_0x405d15[_0x35a7('0x15')]?_0x405d15['options']['attributes']||null:null,'include':_0x405d15[_0x35a7('0x15')]?_0x405d15[_0x35a7('0x15')][_0x35a7('0x17')]?_['map'](_0x405d15['options'][_0x35a7('0x17')],function(_0x2f87f0){return{'model':db[_0x2f87f0[_0x35a7('0x18')]],'as':_0x2f87f0['as'],'attributes':_0x2f87f0[_0x35a7('0x19')],'include':_0x2f87f0[_0x35a7('0x17')]?_['map'](_0x2f87f0[_0x35a7('0x17')],function(_0x5126fc){return{'model':db[_0x5126fc[_0x35a7('0x18')]],'as':_0x5126fc['as'],'attributes':_0x5126fc[_0x35a7('0x19')],'include':_0x5126fc['include']?_[_0x35a7('0x1a')](_0x5126fc['include'],function(_0xd88cae){return{'model':db[_0xd88cae[_0x35a7('0x18')]],'as':_0xd88cae['as'],'attributes':_0xd88cae[_0x35a7('0x19')]};}):[]};}):[]};}):[]:[]})[_0x35a7('0xc')](function(_0x561831){logger[_0x35a7('0xd')]('ShowSquareOdbc',_0x405d15);logger[_0x35a7('0x1b')](_0x35a7('0x13'),_0x405d15,JSON[_0x35a7('0x1c')](_0x561831));_0x5b2308(_0x561831);})[_0x35a7('0x1d')](function(_0x74239d){logger['error'](_0x35a7('0x13'),_0x74239d[_0x35a7('0x12')],_0x405d15);_0x42f09b(_0x1e7846['error'](0x1f4,_0x74239d['message']));});});};
\ No newline at end of file
+var _0x6d14=['ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','then','info','SquareOdbc,\x20%s,\x20%s','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','model','attributes','map','debug','lodash','util','moment','bluebird','randomstring'];(function(_0x230b71,_0x11c801){var _0x3c20f2=function(_0x20af9a){while(--_0x20af9a){_0x230b71['push'](_0x230b71['shift']());}};_0x3c20f2(++_0x11c801);}(_0x6d14,0x1db));var _0x46d1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6d14[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x46d1('0x0'));var util=require(_0x46d1('0x1'));var moment=require(_0x46d1('0x2'));var BPromise=require(_0x46d1('0x3'));var rs=require(_0x46d1('0x4'));var fs=require('fs');var Redis=require(_0x46d1('0x5'));var db=require(_0x46d1('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x46d1('0x7'))(_0x46d1('0x8'));var config=require('../../config/environment');var jayson=require(_0x46d1('0x9'));var client=jayson['client'][_0x46d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45a590,_0x3f0f02,_0x20de92){return new BPromise(function(_0x5dbca5,_0x4a9ea5){return client['request'](_0x45a590,_0x20de92)[_0x46d1('0xb')](function(_0x9035b1){logger[_0x46d1('0xc')](_0x46d1('0xd'),_0x3f0f02,'request\x20sent');logger['debug'](_0x46d1('0xe'),_0x3f0f02,_0x46d1('0xf'),JSON[_0x46d1('0x10')](_0x9035b1));if(_0x9035b1['error']){if(_0x9035b1['error']['code']===0x1f4){logger[_0x46d1('0x11')]('SquareOdbc,\x20%s,\x20%s',_0x3f0f02,_0x9035b1[_0x46d1('0x11')]['message']);return _0x4a9ea5(_0x9035b1['error']['message']);}logger['error'](_0x46d1('0xd'),_0x3f0f02,_0x9035b1[_0x46d1('0x11')][_0x46d1('0x12')]);return _0x5dbca5(_0x9035b1['error'][_0x46d1('0x12')]);}else{logger['info']('SquareOdbc,\x20%s,\x20%s',_0x3f0f02,'request\x20sent');_0x5dbca5(_0x9035b1[_0x46d1('0x13')][_0x46d1('0x12')]);}})[_0x46d1('0x14')](function(_0x590178){logger[_0x46d1('0x11')]('SquareOdbc,\x20%s,\x20%s',_0x3f0f02,_0x590178);_0x4a9ea5(_0x590178);});});}exports[_0x46d1('0x15')]=function(_0x68bca6){var _0x4df7b8=this;return new Promise(function(_0x19b292,_0x2e5450){return db[_0x46d1('0x16')][_0x46d1('0x17')]({'raw':_0x68bca6[_0x46d1('0x18')]?_0x68bca6[_0x46d1('0x18')][_0x46d1('0x19')]===undefined?!![]:![]:!![],'where':_0x68bca6['options']?_0x68bca6[_0x46d1('0x18')][_0x46d1('0x1a')]||null:null,'attributes':_0x68bca6['options']?_0x68bca6[_0x46d1('0x18')]['attributes']||null:null,'include':_0x68bca6[_0x46d1('0x18')]?_0x68bca6[_0x46d1('0x18')][_0x46d1('0x1b')]?_['map'](_0x68bca6[_0x46d1('0x18')]['include'],function(_0x80350b){return{'model':db[_0x80350b[_0x46d1('0x1c')]],'as':_0x80350b['as'],'attributes':_0x80350b[_0x46d1('0x1d')],'include':_0x80350b['include']?_[_0x46d1('0x1e')](_0x80350b[_0x46d1('0x1b')],function(_0x5e63ac){return{'model':db[_0x5e63ac[_0x46d1('0x1c')]],'as':_0x5e63ac['as'],'attributes':_0x5e63ac[_0x46d1('0x1d')],'include':_0x5e63ac['include']?_[_0x46d1('0x1e')](_0x5e63ac[_0x46d1('0x1b')],function(_0x32a54f){return{'model':db[_0x32a54f[_0x46d1('0x1c')]],'as':_0x32a54f['as'],'attributes':_0x32a54f[_0x46d1('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4f7001){logger[_0x46d1('0xc')](_0x46d1('0x15'),_0x68bca6);logger[_0x46d1('0x1f')](_0x46d1('0x15'),_0x68bca6,JSON[_0x46d1('0x10')](_0x4f7001));_0x19b292(_0x4f7001);})[_0x46d1('0x14')](function(_0x54371d){logger[_0x46d1('0x11')](_0x46d1('0x15'),_0x54371d[_0x46d1('0x12')],_0x68bca6);_0x2e5450(_0x4df7b8[_0x46d1('0x11')](0x1f4,_0x54371d[_0x46d1('0x12')]));});});};
\ No newline at end of file
index 5c3a687..b4ba4c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ca=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','/:id','isAuthenticated','show','create','put','update'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x26ca,0x6f));var _0xa26c=function(_0x40b3f2,_0x2c4f5f){_0x40b3f2=_0x40b3f2-0x0;var _0x4ce90c=_0x26ca[_0x40b3f2];return _0x4ce90c;};'use strict';var multer=require('multer');var util=require(_0xa26c('0x0'));var path=require(_0xa26c('0x1'));var timeout=require(_0xa26c('0x2'));var express=require(_0xa26c('0x3'));var router=express[_0xa26c('0x4')]();var fs_extra=require(_0xa26c('0x5'));var auth=require(_0xa26c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa26c('0x7'));var controller=require('./squareProject.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xa26c('0x8')]);router['get'](_0xa26c('0x9'),auth[_0xa26c('0xa')](),controller[_0xa26c('0xb')]);router['post']('/',auth[_0xa26c('0xa')](),controller[_0xa26c('0xc')]);router[_0xa26c('0xd')](_0xa26c('0x9'),auth[_0xa26c('0xa')](),controller[_0xa26c('0xe')]);router[_0xa26c('0xf')](_0xa26c('0x9'),auth[_0xa26c('0xa')](),controller[_0xa26c('0x10')]);module[_0xa26c('0x11')]=router;
\ No newline at end of file
+var _0x8d15=['put','update','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','post','create'];(function(_0x34a2e7,_0x4af176){var _0x269c98=function(_0xc47b81){while(--_0xc47b81){_0x34a2e7['push'](_0x34a2e7['shift']());}};_0x269c98(++_0x4af176);}(_0x8d15,0x16a));var _0x58d1=function(_0x4bc3e3,_0x450b7a){_0x4bc3e3=_0x4bc3e3-0x0;var _0x214f75=_0x8d15[_0x4bc3e3];return _0x214f75;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x58d1('0x0'));var express=require(_0x58d1('0x1'));var router=express['Router']();var fs_extra=require(_0x58d1('0x2'));var auth=require(_0x58d1('0x3'));var interaction=require(_0x58d1('0x4'));var config=require(_0x58d1('0x5'));var controller=require(_0x58d1('0x6'));router['get']('/',auth[_0x58d1('0x7')](),controller[_0x58d1('0x8')]);router[_0x58d1('0x9')](_0x58d1('0xa'),auth[_0x58d1('0x7')](),controller['show']);router[_0x58d1('0xb')]('/',auth[_0x58d1('0x7')](),controller[_0x58d1('0xc')]);router[_0x58d1('0xd')]('/:id',auth[_0x58d1('0x7')](),controller[_0x58d1('0xe')]);router['delete'](_0x58d1('0xa'),auth[_0x58d1('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 0c1d430..4e8d3e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb397=['DATE','STRING','name','BLOB','long','preproduction','getDataValue','toString','utf8','production'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xb397,0x1af));var _0x7b39=function(_0x1132b1,_0x1b253c){_0x1132b1=_0x1132b1-0x0;var _0x180d63=_0xb397[_0x1132b1];return _0x180d63;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7b39('0x0')],'unique':_0x7b39('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x7b39('0x0')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x7b39('0x2')](_0x7b39('0x3')),'get':function(){if(this['getDataValue'](_0x7b39('0x4'))){return this[_0x7b39('0x5')]('preproduction')[_0x7b39('0x6')](_0x7b39('0x7'));}}},'production':{'type':Sequelize[_0x7b39('0x2')](_0x7b39('0x3')),'get':function(){if(this[_0x7b39('0x5')]('production')){return this[_0x7b39('0x5')](_0x7b39('0x8'))[_0x7b39('0x6')](_0x7b39('0x7'));}}},'savedAt':{'type':Sequelize[_0x7b39('0x9')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x3e0c=['BLOB','long','getDataValue','production','DATE','sequelize','exports','STRING','TEXT'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0x3e0c,0x16d));var _0xc3e0=function(_0x18fec8,_0x31d0cd){_0x18fec8=_0x18fec8-0x0;var _0x5e400c=_0x3e0c[_0x18fec8];return _0x5e400c;};'use strict';var Sequelize=require(_0xc3e0('0x0'));module[_0xc3e0('0x1')]={'name':{'type':Sequelize[_0xc3e0('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xc3e0('0x2')]},'notes':{'type':Sequelize[_0xc3e0('0x3')]},'preproduction':{'type':Sequelize[_0xc3e0('0x4')](_0xc3e0('0x5')),'get':function(){if(this[_0xc3e0('0x6')]('preproduction')){return this[_0xc3e0('0x6')]('preproduction')['toString']('utf8');}}},'production':{'type':Sequelize['BLOB'](_0xc3e0('0x5')),'get':function(){if(this[_0xc3e0('0x6')](_0xc3e0('0x7'))){return this['getDataValue']('production')['toString']('utf8');}}},'savedAt':{'type':Sequelize[_0xc3e0('0x8')]},'publishedAt':{'type':Sequelize[_0xc3e0('0x8')]}};
\ No newline at end of file
index cf79d49..f86ab74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72d7=['type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','map','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','production','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','register','status','json','limit','undefined','count','offset','set','Content-Range','then','destroy','get','SquareProjects','agi','stringify','end','sendStatus','stack','name','send','index','SquareProject','rawAttributes','fieldName'];(function(_0x38ff2b,_0x3a0316){var _0x341f5e=function(_0x346368){while(--_0x346368){_0x38ff2b['push'](_0x38ff2b['shift']());}};_0x341f5e(++_0x3a0316);}(_0x72d7,0x19b));var _0x772d=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x72d7[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0x772d('0x0'));var Redis=require(_0x772d('0x1'));var qs=require(_0x772d('0x2'));var logger=require(_0x772d('0x3'))(_0x772d('0x4'));var config=require(_0x772d('0x5'));var db=require('../../mysqldb')['db'];config[_0x772d('0x6')]=_['defaults'](config['redis'],{'host':_0x772d('0x7'),'port':0x18eb});var socket=require(_0x772d('0x8'))(new Redis(config[_0x772d('0x6')]));require('./squareProject.socket')[_0x772d('0x9')](socket);function respondWithResult(_0x141516,_0x1daa77){_0x1daa77=_0x1daa77||0xc8;return function(_0x36d077){if(_0x36d077){return _0x141516[_0x772d('0xa')](_0x1daa77)[_0x772d('0xb')](_0x36d077);}};}function respondWithFilteredResult(_0x25ba39,_0x5e8a53){return function(_0x10563f){if(_0x10563f){var _0x4bd553=typeof _0x5e8a53['offset']==='undefined'&&typeof _0x5e8a53[_0x772d('0xc')]===_0x772d('0xd');var _0xbce25b=_0x10563f[_0x772d('0xe')];var _0x1b8237=_0x4bd553?0x0:_0x5e8a53[_0x772d('0xf')];var _0x3bae09=_0x4bd553?_0x10563f[_0x772d('0xe')]:_0x5e8a53['offset']+_0x5e8a53[_0x772d('0xc')];var _0x2f7faf;if(_0x3bae09>=_0xbce25b){_0x3bae09=_0xbce25b;_0x2f7faf=0xc8;}else{_0x2f7faf=0xce;}_0x25ba39[_0x772d('0xa')](_0x2f7faf);return _0x25ba39[_0x772d('0x10')](_0x772d('0x11'),_0x1b8237+'-'+_0x3bae09+'/'+_0xbce25b)['json'](_0x10563f);}return null;};}function saveUpdates(_0x38fbed){return function(_0x5d2221){if(_0x5d2221){return _0x5d2221['update'](_0x38fbed)[_0x772d('0x12')](function(_0x3fc786){return _0x3fc786;});}return null;};}function removeEntity(_0x54457d){return function(_0x5880f0){if(_0x5880f0){return _0x5880f0[_0x772d('0x13')]()[_0x772d('0x12')](function(){var _0x53a421=_0x5880f0[_0x772d('0x14')]({'plain':!![]});var _0x281577=_0x772d('0x15');return db['UserProfileResource'][_0x772d('0x13')]({'where':{'type':_0x281577,'resourceId':_0x53a421['id']}})[_0x772d('0x12')](function(){return _0x5880f0;});})[_0x772d('0x12')](function(){var _0x443b83=new Redis(config['redis']);_0x443b83['publish'](_0x772d('0x16'),JSON[_0x772d('0x17')]({'id':_0x5880f0['id'],'deleted':!![]}));})[_0x772d('0x12')](function(){_0x54457d[_0x772d('0xa')](0xcc)[_0x772d('0x18')]();});}};}function handleEntityNotFound(_0x491b22){return function(_0x4c596b){if(!_0x4c596b){_0x491b22[_0x772d('0x19')](0x194);}return _0x4c596b;};}function handleError(_0x597be6,_0x1c98e2){_0x1c98e2=_0x1c98e2||0x1f4;return function(_0x54c0ac){logger['error'](_0x54c0ac[_0x772d('0x1a')]);if(_0x54c0ac[_0x772d('0x1b')]){delete _0x54c0ac[_0x772d('0x1b')];}_0x597be6['status'](_0x1c98e2)[_0x772d('0x1c')](_0x54c0ac);};}exports[_0x772d('0x1d')]=function(_0x28f4a0,_0x1ba5b9){var _0x22850a={},_0x8c3f0={},_0x46ee17={'count':0x0,'rows':[]};var _0x2f4587=_['map'](db[_0x772d('0x1e')][_0x772d('0x1f')],function(_0x51cbd6){return{'name':_0x51cbd6[_0x772d('0x20')],'type':_0x51cbd6[_0x772d('0x21')][_0x772d('0x22')]};});_0x8c3f0[_0x772d('0x23')]=_['map'](_0x2f4587,_0x772d('0x1b'));_0x8c3f0[_0x772d('0x24')]=_[_0x772d('0x25')](_0x28f4a0['query']);_0x8c3f0['filters']=_[_0x772d('0x26')](_0x8c3f0[_0x772d('0x23')],_0x8c3f0[_0x772d('0x24')]);_0x22850a[_0x772d('0x27')]=_[_0x772d('0x26')](_0x8c3f0[_0x772d('0x23')],qs[_0x772d('0x28')](_0x28f4a0['query'][_0x772d('0x28')]));_0x22850a['attributes']=_0x22850a[_0x772d('0x27')][_0x772d('0x29')]?_0x22850a[_0x772d('0x27')]:_0x8c3f0[_0x772d('0x23')];if(!_0x28f4a0[_0x772d('0x24')][_0x772d('0x2a')](_0x772d('0x2b'))){_0x22850a[_0x772d('0xc')]=qs[_0x772d('0xc')](_0x28f4a0[_0x772d('0x24')][_0x772d('0xc')]);_0x22850a['offset']=qs[_0x772d('0xf')](_0x28f4a0['query'][_0x772d('0xf')]);}_0x22850a[_0x772d('0x2c')]=qs[_0x772d('0x2d')](_0x28f4a0[_0x772d('0x24')][_0x772d('0x2d')]);_0x22850a['where']=qs[_0x772d('0x2e')](_['pick'](_0x28f4a0['query'],_0x8c3f0[_0x772d('0x2e')]),_0x2f4587);if(_0x28f4a0[_0x772d('0x24')][_0x772d('0x2f')]){_0x22850a['where']=_['merge'](_0x22850a[_0x772d('0x30')],{'$or':_[_0x772d('0x31')](_0x2f4587,function(_0x244cee){if(_0x244cee[_0x772d('0x21')]!==_0x772d('0x32')){var _0x39b315={};_0x39b315[_0x244cee[_0x772d('0x1b')]]={'$like':'%'+_0x28f4a0[_0x772d('0x24')][_0x772d('0x2f')]+'%'};return _0x39b315;}})});}_0x22850a=_[_0x772d('0x33')]({},_0x22850a,_0x28f4a0[_0x772d('0x34')]);var _0x2862c2={'where':_0x22850a[_0x772d('0x30')]};return db[_0x772d('0x1e')]['count'](_0x2862c2)['then'](function(_0x437012){_0x46ee17['count']=_0x437012;if(_0x28f4a0[_0x772d('0x24')][_0x772d('0x35')]){_0x22850a['include']=[{'all':!![]}];}return db[_0x772d('0x1e')][_0x772d('0x36')](_0x22850a);})['then'](function(_0x3a0f97){_0x46ee17[_0x772d('0x37')]=_0x3a0f97;return _0x46ee17;})[_0x772d('0x12')](respondWithFilteredResult(_0x1ba5b9,_0x22850a))[_0x772d('0x38')](handleError(_0x1ba5b9,null));};exports[_0x772d('0x39')]=function(_0x5bfdbd,_0x5ab75c){var _0x46b03b={'raw':![],'where':{'id':_0x5bfdbd[_0x772d('0x3a')]['id']}},_0x27144d={};_0x27144d['model']=_['keys'](db[_0x772d('0x1e')][_0x772d('0x1f')]);_0x27144d[_0x772d('0x24')]=_[_0x772d('0x25')](_0x5bfdbd[_0x772d('0x24')]);_0x27144d['filters']=_[_0x772d('0x26')](_0x27144d[_0x772d('0x23')],_0x27144d[_0x772d('0x24')]);_0x46b03b[_0x772d('0x27')]=_['intersection'](_0x27144d['model'],qs['fields'](_0x5bfdbd[_0x772d('0x24')][_0x772d('0x28')]));_0x46b03b[_0x772d('0x27')]=_0x46b03b[_0x772d('0x27')][_0x772d('0x29')]?_0x46b03b[_0x772d('0x27')]:_0x27144d['model'];if(_0x5bfdbd[_0x772d('0x24')][_0x772d('0x35')]){_0x46b03b[_0x772d('0x3b')]=[{'all':!![]}];}_0x46b03b=_[_0x772d('0x33')]({},_0x46b03b,_0x5bfdbd[_0x772d('0x34')]);return db[_0x772d('0x1e')][_0x772d('0x3c')](_0x46b03b)[_0x772d('0x12')](handleEntityNotFound(_0x5ab75c,null))[_0x772d('0x12')](respondWithResult(_0x5ab75c,null))[_0x772d('0x38')](handleError(_0x5ab75c,null));};exports[_0x772d('0x3d')]=function(_0x5b79c2,_0x2a9415){return db[_0x772d('0x1e')][_0x772d('0x3d')](_0x5b79c2[_0x772d('0x3e')],{})['then'](function(_0x338e5d){var _0x46a2b7=_0x5b79c2[_0x772d('0x3f')][_0x772d('0x14')]({'plain':!![]});if(!_0x46a2b7)throw new Error(_0x772d('0x40'));if(_0x46a2b7['role']===_0x772d('0x3f')){var _0xb0c0e7=_0x338e5d[_0x772d('0x14')]({'plain':!![]});var _0xedc94e=_0x772d('0x15');return db[_0x772d('0x41')][_0x772d('0x3c')]({'where':{'name':_0xedc94e,'userProfileId':_0x46a2b7[_0x772d('0x42')]},'raw':!![]})[_0x772d('0x12')](function(_0x7cdb7c){if(_0x7cdb7c&&_0x7cdb7c[_0x772d('0x43')]===0x0){return db[_0x772d('0x44')][_0x772d('0x3d')]({'name':_0xb0c0e7[_0x772d('0x1b')],'resourceId':_0xb0c0e7['id'],'type':_0x7cdb7c['name'],'sectionId':_0x7cdb7c['id']},{})[_0x772d('0x12')](function(){return _0x338e5d;});}else{return _0x338e5d;}})[_0x772d('0x38')](function(_0x4d2f50){logger[_0x772d('0x45')](_0x772d('0x46'),_0x4d2f50);throw _0x4d2f50;});}return _0x338e5d;})[_0x772d('0x12')](respondWithResult(_0x2a9415,0xc9))[_0x772d('0x38')](handleError(_0x2a9415,null));};exports[_0x772d('0x47')]=function(_0x5696c8,_0x30dee8){if(_0x5696c8[_0x772d('0x3e')]['id']){delete _0x5696c8['body']['id'];}return db[_0x772d('0x1e')][_0x772d('0x3c')]({'where':{'id':_0x5696c8[_0x772d('0x3a')]['id']}})[_0x772d('0x12')](handleEntityNotFound(_0x30dee8,null))['then'](saveUpdates(_0x5696c8[_0x772d('0x3e')],null))[_0x772d('0x12')](function(_0x30dd3e){if(!_0x30dd3e)return;var _0x50e1cd=_0x30dd3e[_0x772d('0x14')]({'plain':!![]});return _0x50e1cd;})[_0x772d('0x12')](function(_0x3dd440){var _0x54e669=new Redis(config[_0x772d('0x6')]);_0x54e669['publish'](_0x772d('0x16'),JSON[_0x772d('0x17')](_[_0x772d('0x48')](_0x3dd440,['id','name',_0x772d('0x49')])));return _0x3dd440;})[_0x772d('0x12')](respondWithResult(_0x30dee8,null))[_0x772d('0x38')](handleError(_0x30dee8,null));};exports[_0x772d('0x13')]=function(_0x1d8084,_0x3d5505){return db[_0x772d('0x1e')][_0x772d('0x3c')]({'where':{'id':_0x1d8084[_0x772d('0x3a')]['id']}})[_0x772d('0x12')](handleEntityNotFound(_0x3d5505,null))[_0x772d('0x12')](removeEntity(_0x3d5505,null))[_0x772d('0x38')](handleError(_0x3d5505,null));};
\ No newline at end of file
+var _0xcf88=['findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','stringify','lodash','ioredis','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','status','json','offset','undefined','limit','set','Content-Range','update','then','get','SquareProjects','UserProfileResource','destroy','publish','agi','sendStatus','error','stack','name','map','SquareProject','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','type','merge','options','count','includeAll','include'];(function(_0x596480,_0xb6d7f8){var _0xb62361=function(_0x5e87d8){while(--_0x5e87d8){_0x596480['push'](_0x596480['shift']());}};_0xb62361(++_0xb6d7f8);}(_0xcf88,0x1b4));var _0x8cf8=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xcf88[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x8cf8('0x0'));var Redis=require(_0x8cf8('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x8cf8('0x2'))(_0x8cf8('0x3'));var config=require('../../config/environment');var db=require(_0x8cf8('0x4'))['db'];config[_0x8cf8('0x5')]=_[_0x8cf8('0x6')](config['redis'],{'host':_0x8cf8('0x7'),'port':0x18eb});var socket=require(_0x8cf8('0x8'))(new Redis(config[_0x8cf8('0x5')]));require(_0x8cf8('0x9'))[_0x8cf8('0xa')](socket);function respondWithResult(_0x4a679f,_0x2cf508){_0x2cf508=_0x2cf508||0xc8;return function(_0x5aeb44){if(_0x5aeb44){return _0x4a679f[_0x8cf8('0xb')](_0x2cf508)[_0x8cf8('0xc')](_0x5aeb44);}};}function respondWithFilteredResult(_0x14dfe2,_0x53b65e){return function(_0xc76d43){if(_0xc76d43){var _0x3b8310=typeof _0x53b65e[_0x8cf8('0xd')]===_0x8cf8('0xe')&&typeof _0x53b65e[_0x8cf8('0xf')]===_0x8cf8('0xe');var _0x55f6ce=_0xc76d43['count'];var _0x17eaaf=_0x3b8310?0x0:_0x53b65e[_0x8cf8('0xd')];var _0xd1239a=_0x3b8310?_0xc76d43['count']:_0x53b65e['offset']+_0x53b65e[_0x8cf8('0xf')];var _0x3e2b89;if(_0xd1239a>=_0x55f6ce){_0xd1239a=_0x55f6ce;_0x3e2b89=0xc8;}else{_0x3e2b89=0xce;}_0x14dfe2['status'](_0x3e2b89);return _0x14dfe2[_0x8cf8('0x10')](_0x8cf8('0x11'),_0x17eaaf+'-'+_0xd1239a+'/'+_0x55f6ce)[_0x8cf8('0xc')](_0xc76d43);}return null;};}function saveUpdates(_0x11f880){return function(_0x13e51e){if(_0x13e51e){return _0x13e51e[_0x8cf8('0x12')](_0x11f880)[_0x8cf8('0x13')](function(_0x628d87){return _0x628d87;});}return null;};}function removeEntity(_0x3ac79e){return function(_0x2d05be){if(_0x2d05be){return _0x2d05be['destroy']()['then'](function(){var _0x395dfc=_0x2d05be[_0x8cf8('0x14')]({'plain':!![]});var _0x3758f8=_0x8cf8('0x15');return db[_0x8cf8('0x16')][_0x8cf8('0x17')]({'where':{'type':_0x3758f8,'resourceId':_0x395dfc['id']}})['then'](function(){return _0x2d05be;});})[_0x8cf8('0x13')](function(){var _0x21eab8=new Redis(config['redis']);_0x21eab8[_0x8cf8('0x18')](_0x8cf8('0x19'),JSON['stringify']({'id':_0x2d05be['id'],'deleted':!![]}));})[_0x8cf8('0x13')](function(){_0x3ac79e[_0x8cf8('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbde470){return function(_0x4f7c97){if(!_0x4f7c97){_0xbde470[_0x8cf8('0x1a')](0x194);}return _0x4f7c97;};}function handleError(_0x46f07e,_0x189b94){_0x189b94=_0x189b94||0x1f4;return function(_0x45c141){logger[_0x8cf8('0x1b')](_0x45c141[_0x8cf8('0x1c')]);if(_0x45c141[_0x8cf8('0x1d')]){delete _0x45c141['name'];}_0x46f07e['status'](_0x189b94)['send'](_0x45c141);};}exports['index']=function(_0x511ded,_0x6630a1){var _0x161978={},_0x23bb3a={},_0x193603={'count':0x0,'rows':[]};var _0x117c0a=_[_0x8cf8('0x1e')](db[_0x8cf8('0x1f')][_0x8cf8('0x20')],function(_0x38b9ec){return{'name':_0x38b9ec[_0x8cf8('0x21')],'type':_0x38b9ec['type'][_0x8cf8('0x22')]};});_0x23bb3a[_0x8cf8('0x23')]=_[_0x8cf8('0x1e')](_0x117c0a,_0x8cf8('0x1d'));_0x23bb3a['query']=_[_0x8cf8('0x24')](_0x511ded[_0x8cf8('0x25')]);_0x23bb3a[_0x8cf8('0x26')]=_[_0x8cf8('0x27')](_0x23bb3a[_0x8cf8('0x23')],_0x23bb3a[_0x8cf8('0x25')]);_0x161978['attributes']=_[_0x8cf8('0x27')](_0x23bb3a['model'],qs[_0x8cf8('0x28')](_0x511ded[_0x8cf8('0x25')][_0x8cf8('0x28')]));_0x161978[_0x8cf8('0x29')]=_0x161978[_0x8cf8('0x29')]['length']?_0x161978[_0x8cf8('0x29')]:_0x23bb3a['model'];if(!_0x511ded['query']['hasOwnProperty'](_0x8cf8('0x2a'))){_0x161978[_0x8cf8('0xf')]=qs['limit'](_0x511ded[_0x8cf8('0x25')]['limit']);_0x161978[_0x8cf8('0xd')]=qs[_0x8cf8('0xd')](_0x511ded[_0x8cf8('0x25')]['offset']);}_0x161978[_0x8cf8('0x2b')]=qs[_0x8cf8('0x2c')](_0x511ded[_0x8cf8('0x25')][_0x8cf8('0x2c')]);_0x161978['where']=qs['filters'](_[_0x8cf8('0x2d')](_0x511ded[_0x8cf8('0x25')],_0x23bb3a[_0x8cf8('0x26')]),_0x117c0a);if(_0x511ded[_0x8cf8('0x25')][_0x8cf8('0x2e')]){_0x161978[_0x8cf8('0x2f')]=_['merge'](_0x161978[_0x8cf8('0x2f')],{'$or':_[_0x8cf8('0x1e')](_0x117c0a,function(_0x16f838){if(_0x16f838[_0x8cf8('0x30')]!=='VIRTUAL'){var _0x4c19d3={};_0x4c19d3[_0x16f838[_0x8cf8('0x1d')]]={'$like':'%'+_0x511ded[_0x8cf8('0x25')][_0x8cf8('0x2e')]+'%'};return _0x4c19d3;}})});}_0x161978=_[_0x8cf8('0x31')]({},_0x161978,_0x511ded[_0x8cf8('0x32')]);var _0x32ae80={'where':_0x161978['where']};return db[_0x8cf8('0x1f')][_0x8cf8('0x33')](_0x32ae80)[_0x8cf8('0x13')](function(_0xadfbaf){_0x193603[_0x8cf8('0x33')]=_0xadfbaf;if(_0x511ded[_0x8cf8('0x25')][_0x8cf8('0x34')]){_0x161978[_0x8cf8('0x35')]=[{'all':!![]}];}return db[_0x8cf8('0x1f')][_0x8cf8('0x36')](_0x161978);})[_0x8cf8('0x13')](function(_0x143c3f){_0x193603[_0x8cf8('0x37')]=_0x143c3f;return _0x193603;})['then'](respondWithFilteredResult(_0x6630a1,_0x161978))[_0x8cf8('0x38')](handleError(_0x6630a1,null));};exports[_0x8cf8('0x39')]=function(_0x3c93d8,_0x6f75d7){var _0x3f4d9a={'raw':![],'where':{'id':_0x3c93d8[_0x8cf8('0x3a')]['id']}},_0x1bacac={};_0x1bacac['model']=_[_0x8cf8('0x24')](db[_0x8cf8('0x1f')][_0x8cf8('0x20')]);_0x1bacac[_0x8cf8('0x25')]=_['keys'](_0x3c93d8[_0x8cf8('0x25')]);_0x1bacac['filters']=_['intersection'](_0x1bacac['model'],_0x1bacac['query']);_0x3f4d9a[_0x8cf8('0x29')]=_[_0x8cf8('0x27')](_0x1bacac[_0x8cf8('0x23')],qs[_0x8cf8('0x28')](_0x3c93d8[_0x8cf8('0x25')]['fields']));_0x3f4d9a[_0x8cf8('0x29')]=_0x3f4d9a['attributes'][_0x8cf8('0x3b')]?_0x3f4d9a['attributes']:_0x1bacac[_0x8cf8('0x23')];if(_0x3c93d8['query'][_0x8cf8('0x34')]){_0x3f4d9a[_0x8cf8('0x35')]=[{'all':!![]}];}_0x3f4d9a=_[_0x8cf8('0x31')]({},_0x3f4d9a,_0x3c93d8['options']);return db[_0x8cf8('0x1f')][_0x8cf8('0x3c')](_0x3f4d9a)[_0x8cf8('0x13')](handleEntityNotFound(_0x6f75d7,null))['then'](respondWithResult(_0x6f75d7,null))[_0x8cf8('0x38')](handleError(_0x6f75d7,null));};exports[_0x8cf8('0x3d')]=function(_0x20eac3,_0x145686){return db[_0x8cf8('0x1f')][_0x8cf8('0x3d')](_0x20eac3[_0x8cf8('0x3e')],{})[_0x8cf8('0x13')](function(_0x2e3f8a){var _0x3df1da=_0x20eac3[_0x8cf8('0x3f')]['get']({'plain':!![]});if(!_0x3df1da)throw new Error(_0x8cf8('0x40'));if(_0x3df1da[_0x8cf8('0x41')]===_0x8cf8('0x3f')){var _0x206537=_0x2e3f8a[_0x8cf8('0x14')]({'plain':!![]});var _0x3b0529=_0x8cf8('0x15');return db['UserProfileSection'][_0x8cf8('0x3c')]({'where':{'name':_0x3b0529,'userProfileId':_0x3df1da[_0x8cf8('0x42')]},'raw':!![]})['then'](function(_0x3a100c){if(_0x3a100c&&_0x3a100c[_0x8cf8('0x43')]===0x0){return db[_0x8cf8('0x16')][_0x8cf8('0x3d')]({'name':_0x206537['name'],'resourceId':_0x206537['id'],'type':_0x3a100c[_0x8cf8('0x1d')],'sectionId':_0x3a100c['id']},{})[_0x8cf8('0x13')](function(){return _0x2e3f8a;});}else{return _0x2e3f8a;}})[_0x8cf8('0x38')](function(_0x10b70e){logger[_0x8cf8('0x1b')](_0x8cf8('0x44'),_0x10b70e);throw _0x10b70e;});}return _0x2e3f8a;})[_0x8cf8('0x13')](respondWithResult(_0x145686,0xc9))[_0x8cf8('0x38')](handleError(_0x145686,null));};exports[_0x8cf8('0x12')]=function(_0x1e8559,_0x5bba73){if(_0x1e8559['body']['id']){delete _0x1e8559[_0x8cf8('0x3e')]['id'];}return db[_0x8cf8('0x1f')]['find']({'where':{'id':_0x1e8559[_0x8cf8('0x3a')]['id']}})['then'](handleEntityNotFound(_0x5bba73,null))[_0x8cf8('0x13')](saveUpdates(_0x1e8559[_0x8cf8('0x3e')],null))[_0x8cf8('0x13')](function(_0x57d2b5){if(!_0x57d2b5)return;var _0x57c710=_0x57d2b5[_0x8cf8('0x14')]({'plain':!![]});return _0x57c710;})[_0x8cf8('0x13')](function(_0x35e0b7){var _0xe37006=new Redis(config[_0x8cf8('0x5')]);_0xe37006[_0x8cf8('0x18')]('agi',JSON[_0x8cf8('0x45')](_[_0x8cf8('0x2d')](_0x35e0b7,['id',_0x8cf8('0x1d'),'production'])));return _0x35e0b7;})[_0x8cf8('0x13')](respondWithResult(_0x5bba73,null))[_0x8cf8('0x38')](handleError(_0x5bba73,null));};exports[_0x8cf8('0x17')]=function(_0x418553,_0x55fca2){return db[_0x8cf8('0x1f')]['find']({'where':{'id':_0x418553[_0x8cf8('0x3a')]['id']}})[_0x8cf8('0x13')](handleEntityNotFound(_0x55fca2,null))[_0x8cf8('0x13')](removeEntity(_0x55fca2,null))[_0x8cf8('0x38')](handleError(_0x55fca2,null));};
\ No newline at end of file
index 370722d..1d15aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36e7=['emit','hasOwnProperty','hook','exports','events','setMaxListeners','save','update','remove'];(function(_0x4c5643,_0x1ba496){var _0xfedf8a=function(_0x10c8f4){while(--_0x10c8f4){_0x4c5643['push'](_0x4c5643['shift']());}};_0xfedf8a(++_0x1ba496);}(_0x36e7,0x1ea));var _0x736e=function(_0xe047c5,_0x442c10){_0xe047c5=_0xe047c5-0x0;var _0xb67e84=_0x36e7[_0xe047c5];return _0xb67e84;};'use strict';var EventEmitter=require(_0x736e('0x0'));var SquareProject=require('../../mysqldb')['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x736e('0x1')](0x0);var events={'afterCreate':_0x736e('0x2'),'afterUpdate':_0x736e('0x3'),'afterDestroy':_0x736e('0x4')};function emitEvent(_0x571717){return function(_0x5a742e,_0x235cda,_0x4806e5){SquareProjectEvents[_0x736e('0x5')](_0x571717+':'+_0x5a742e['id'],_0x5a742e);SquareProjectEvents[_0x736e('0x5')](_0x571717,_0x5a742e);_0x4806e5(null);};}for(var e in events){if(events[_0x736e('0x6')](e)){var event=events[e];SquareProject[_0x736e('0x7')](e,emitEvent(event));}}module[_0x736e('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xb7c9=['exports','../../mysqldb','SquareProject','setMaxListeners','save','update','hasOwnProperty'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb7c9,0x166));var _0x9b7c=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xb7c9[_0x4a53d];return _0x27410e;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x9b7c('0x0'))['db'][_0x9b7c('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x9b7c('0x2')](0x0);var events={'afterCreate':_0x9b7c('0x3'),'afterUpdate':_0x9b7c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x57e4dc){return function(_0x5dffaf,_0x579724,_0x49a373){SquareProjectEvents['emit'](_0x57e4dc+':'+_0x5dffaf['id'],_0x5dffaf);SquareProjectEvents['emit'](_0x57e4dc,_0x5dffaf);_0x49a373(null);};}for(var e in events){if(events[_0x9b7c('0x5')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x9b7c('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 60a1bdf..723840f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x114b=['changed','preproduction','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define','square_projects'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x114b,0x8e));var _0xb114=function(_0x4f1fe4,_0x2c2af7){_0x4f1fe4=_0x4f1fe4-0x0;var _0xb8a3e9=_0x114b[_0x4f1fe4];return _0xb8a3e9;};'use strict';var _=require(_0xb114('0x0'));var util=require(_0xb114('0x1'));var logger=require(_0xb114('0x2'))(_0xb114('0x3'));var moment=require(_0xb114('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb114('0x5'));var rimraf=require(_0xb114('0x6'));var config=require(_0xb114('0x7'));var attributes=require('./squareProject.attributes');module[_0xb114('0x8')]=function(_0x432e3e,_0x39b0ae){return _0x432e3e[_0xb114('0x9')]('SquareProject',attributes,{'tableName':_0xb114('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x406d64,_0x5358ca,_0x216a02){if(_0x406d64[_0xb114('0xb')](_0xb114('0xc'))){_0x406d64['savedAt']=moment()[_0xb114('0xd')](_0xb114('0xe'));}if(_0x406d64[_0xb114('0xb')](_0xb114('0xf'))){_0x406d64[_0xb114('0x10')]=moment()[_0xb114('0xd')](_0xb114('0xe'));}_0x216a02(null,_0x406d64);}}});};
\ No newline at end of file
+var _0x2570=['define','changed','preproduction','YYYY-MM-DD\x20HH:mm:ss','production','util','../../config/logger','api','moment','request-promise','rimraf','exports'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x2570,0x65));var _0x0257=function(_0x3fb391,_0x539bd5){_0x3fb391=_0x3fb391-0x0;var _0x3dd627=_0x2570[_0x3fb391];return _0x3dd627;};'use strict';var _=require('lodash');var util=require(_0x0257('0x0'));var logger=require(_0x0257('0x1'))(_0x0257('0x2'));var moment=require(_0x0257('0x3'));var BPromise=require('bluebird');var rp=require(_0x0257('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0257('0x5'));var config=require('../../config/environment');var attributes=require('./squareProject.attributes');module[_0x0257('0x6')]=function(_0x503347,_0x3a5aa3){return _0x503347[_0x0257('0x7')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x323c8f,_0x484091,_0x3ffd61){if(_0x323c8f[_0x0257('0x8')](_0x0257('0x9'))){_0x323c8f['savedAt']=moment()['format'](_0x0257('0xa'));}if(_0x323c8f[_0x0257('0x8')](_0x0257('0xb'))){_0x323c8f['publishedAt']=moment()['format'](_0x0257('0xa'));}_0x3ffd61(null,_0x323c8f);}}});};
\ No newline at end of file
index c435985..3175ce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd44d=['attributes','map','then','info','GetSquareProjects','debug','stringify','error','message','ShowSquareProject','find','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','./squareProject.socket','register','SquareProject','findAll','raw','where','options','limit','include','model'];(function(_0x22f8a2,_0x2c6908){var _0x586c6e=function(_0xb3358b){while(--_0xb3358b){_0x22f8a2['push'](_0x22f8a2['shift']());}};_0x586c6e(++_0x2c6908);}(_0xd44d,0x1db));var _0xdd44=function(_0x4c3fe7,_0x12dc5f){_0x4c3fe7=_0x4c3fe7-0x0;var _0x420692=_0xd44d[_0x4c3fe7];return _0x420692;};'use strict';var _=require('lodash');var Redis=require(_0xdd44('0x0'));var db=require(_0xdd44('0x1'))['db'];var logger=require(_0xdd44('0x2'))(_0xdd44('0x3'));var config=require(_0xdd44('0x4'));config[_0xdd44('0x5')]=_[_0xdd44('0x6')](config[_0xdd44('0x5')],{'host':_0xdd44('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdd44('0x5')]));require(_0xdd44('0x8'))[_0xdd44('0x9')](socket);exports['GetSquareProjects']=function(_0xb9060d){var _0x3d7ec2=this;return new Promise(function(_0x49d791,_0x147846){return db[_0xdd44('0xa')][_0xdd44('0xb')]({'raw':_0xb9060d['options']?_0xb9060d['options'][_0xdd44('0xc')]===undefined?!![]:![]:!![],'where':_0xb9060d['options']?_0xb9060d['options'][_0xdd44('0xd')]||null:null,'attributes':_0xb9060d['options']?_0xb9060d[_0xdd44('0xe')]['attributes']||null:null,'limit':_0xb9060d[_0xdd44('0xe')]?_0xb9060d['options'][_0xdd44('0xf')]||null:null,'include':_0xb9060d['options']?_0xb9060d['options']['include']?_['map'](_0xb9060d[_0xdd44('0xe')][_0xdd44('0x10')],function(_0x5cd37f){return{'model':db[_0x5cd37f[_0xdd44('0x11')]],'as':_0x5cd37f['as'],'attributes':_0x5cd37f[_0xdd44('0x12')],'include':_0x5cd37f[_0xdd44('0x10')]?_[_0xdd44('0x13')](_0x5cd37f[_0xdd44('0x10')],function(_0x370219){return{'model':db[_0x370219[_0xdd44('0x11')]],'as':_0x370219['as'],'attributes':_0x370219[_0xdd44('0x12')],'include':_0x370219[_0xdd44('0x10')]?_['map'](_0x370219[_0xdd44('0x10')],function(_0xfd9fb6){return{'model':db[_0xfd9fb6[_0xdd44('0x11')]],'as':_0xfd9fb6['as'],'attributes':_0xfd9fb6[_0xdd44('0x12')]};}):[]};}):[]};}):[]:[]})[_0xdd44('0x14')](function(_0xdbfb69){logger[_0xdd44('0x15')](_0xdd44('0x16'),_0xb9060d);logger[_0xdd44('0x17')](_0xdd44('0x16'),_0xb9060d,JSON[_0xdd44('0x18')](_0xdbfb69));_0x49d791(_0xdbfb69);})['catch'](function(_0x555462){logger[_0xdd44('0x19')](_0xdd44('0x16'),_0x555462[_0xdd44('0x1a')],_0xb9060d);_0x147846(_0x3d7ec2['error'](0x1f4,_0x555462['message']));});});};exports[_0xdd44('0x1b')]=function(_0x1609af){var _0x10db1f=this;return new Promise(function(_0xf38d68,_0x228b31){return db[_0xdd44('0xa')][_0xdd44('0x1c')]({'raw':_0x1609af[_0xdd44('0xe')]?_0x1609af[_0xdd44('0xe')][_0xdd44('0xc')]===undefined?!![]:![]:!![],'where':_0x1609af['options']?_0x1609af[_0xdd44('0xe')][_0xdd44('0xd')]||null:null,'attributes':_0x1609af[_0xdd44('0xe')]?_0x1609af['options'][_0xdd44('0x12')]||null:null,'include':_0x1609af['options']?_0x1609af[_0xdd44('0xe')][_0xdd44('0x10')]?_[_0xdd44('0x13')](_0x1609af[_0xdd44('0xe')][_0xdd44('0x10')],function(_0x1cde2d){return{'model':db[_0x1cde2d['model']],'as':_0x1cde2d['as'],'attributes':_0x1cde2d['attributes'],'include':_0x1cde2d['include']?_[_0xdd44('0x13')](_0x1cde2d['include'],function(_0x19e9df){return{'model':db[_0x19e9df['model']],'as':_0x19e9df['as'],'attributes':_0x19e9df[_0xdd44('0x12')],'include':_0x19e9df[_0xdd44('0x10')]?_[_0xdd44('0x13')](_0x19e9df[_0xdd44('0x10')],function(_0x12ce6a){return{'model':db[_0x12ce6a['model']],'as':_0x12ce6a['as'],'attributes':_0x12ce6a['attributes']};}):[]};}):[]};}):[]:[]})[_0xdd44('0x14')](function(_0xe34ae3){logger['info'](_0xdd44('0x1b'),_0x1609af);logger[_0xdd44('0x17')](_0xdd44('0x1b'),_0x1609af,JSON[_0xdd44('0x18')](_0xe34ae3));_0xf38d68(_0xe34ae3);})['catch'](function(_0x4255d3){logger[_0xdd44('0x19')](_0xdd44('0x1b'),_0x4255d3['message'],_0x1609af);_0x228b31(_0x10db1f[_0xdd44('0x19')](0x1f4,_0x4255d3[_0xdd44('0x1a')]));});});};
\ No newline at end of file
+var _0x7736=['error','ShowSquareProject','find','info','lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','SquareProject','findAll','options','where','attributes','limit','include','map','model','then','debug','GetSquareProjects','stringify','catch','message'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x7736,0x112));var _0x6773=function(_0x364454,_0x2d5819){_0x364454=_0x364454-0x0;var _0xb5169f=_0x7736[_0x364454];return _0xb5169f;};'use strict';var _=require(_0x6773('0x0'));var Redis=require(_0x6773('0x1'));var db=require(_0x6773('0x2'))['db'];var logger=require(_0x6773('0x3'))(_0x6773('0x4'));var config=require(_0x6773('0x5'));config[_0x6773('0x6')]=_[_0x6773('0x7')](config[_0x6773('0x6')],{'host':_0x6773('0x8'),'port':0x18eb});var socket=require(_0x6773('0x9'))(new Redis(config['redis']));require('./squareProject.socket')[_0x6773('0xa')](socket);exports['GetSquareProjects']=function(_0x40848c){var _0x38e2d8=this;return new Promise(function(_0x394752,_0xfee569){return db[_0x6773('0xb')][_0x6773('0xc')]({'raw':_0x40848c[_0x6773('0xd')]?_0x40848c['options']['raw']===undefined?!![]:![]:!![],'where':_0x40848c[_0x6773('0xd')]?_0x40848c[_0x6773('0xd')][_0x6773('0xe')]||null:null,'attributes':_0x40848c['options']?_0x40848c[_0x6773('0xd')][_0x6773('0xf')]||null:null,'limit':_0x40848c['options']?_0x40848c[_0x6773('0xd')][_0x6773('0x10')]||null:null,'include':_0x40848c['options']?_0x40848c[_0x6773('0xd')][_0x6773('0x11')]?_[_0x6773('0x12')](_0x40848c['options'][_0x6773('0x11')],function(_0x3c83af){return{'model':db[_0x3c83af['model']],'as':_0x3c83af['as'],'attributes':_0x3c83af[_0x6773('0xf')],'include':_0x3c83af[_0x6773('0x11')]?_['map'](_0x3c83af[_0x6773('0x11')],function(_0x3ea7d7){return{'model':db[_0x3ea7d7[_0x6773('0x13')]],'as':_0x3ea7d7['as'],'attributes':_0x3ea7d7['attributes'],'include':_0x3ea7d7[_0x6773('0x11')]?_[_0x6773('0x12')](_0x3ea7d7[_0x6773('0x11')],function(_0x305a1e){return{'model':db[_0x305a1e[_0x6773('0x13')]],'as':_0x305a1e['as'],'attributes':_0x305a1e['attributes']};}):[]};}):[]};}):[]:[]})[_0x6773('0x14')](function(_0x4cbe9d){logger['info']('GetSquareProjects',_0x40848c);logger[_0x6773('0x15')](_0x6773('0x16'),_0x40848c,JSON[_0x6773('0x17')](_0x4cbe9d));_0x394752(_0x4cbe9d);})[_0x6773('0x18')](function(_0x20fbe9){logger['error'](_0x6773('0x16'),_0x20fbe9[_0x6773('0x19')],_0x40848c);_0xfee569(_0x38e2d8[_0x6773('0x1a')](0x1f4,_0x20fbe9['message']));});});};exports[_0x6773('0x1b')]=function(_0x2c6a1f){var _0x2be3a2=this;return new Promise(function(_0xbec436,_0x216110){return db[_0x6773('0xb')][_0x6773('0x1c')]({'raw':_0x2c6a1f['options']?_0x2c6a1f[_0x6773('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x2c6a1f[_0x6773('0xd')]?_0x2c6a1f['options'][_0x6773('0xe')]||null:null,'attributes':_0x2c6a1f['options']?_0x2c6a1f['options'][_0x6773('0xf')]||null:null,'include':_0x2c6a1f[_0x6773('0xd')]?_0x2c6a1f[_0x6773('0xd')][_0x6773('0x11')]?_[_0x6773('0x12')](_0x2c6a1f['options'][_0x6773('0x11')],function(_0x2333e9){return{'model':db[_0x2333e9['model']],'as':_0x2333e9['as'],'attributes':_0x2333e9[_0x6773('0xf')],'include':_0x2333e9['include']?_['map'](_0x2333e9[_0x6773('0x11')],function(_0x44e51c){return{'model':db[_0x44e51c[_0x6773('0x13')]],'as':_0x44e51c['as'],'attributes':_0x44e51c[_0x6773('0xf')],'include':_0x44e51c['include']?_[_0x6773('0x12')](_0x44e51c['include'],function(_0x314442){return{'model':db[_0x314442[_0x6773('0x13')]],'as':_0x314442['as'],'attributes':_0x314442[_0x6773('0xf')]};}):[]};}):[]};}):[]:[]})[_0x6773('0x14')](function(_0x41ed76){logger[_0x6773('0x1d')](_0x6773('0x1b'),_0x2c6a1f);logger[_0x6773('0x15')](_0x6773('0x1b'),_0x2c6a1f,JSON[_0x6773('0x17')](_0x41ed76));_0xbec436(_0x41ed76);})[_0x6773('0x18')](function(_0x18c8b6){logger[_0x6773('0x1a')](_0x6773('0x1b'),_0x18c8b6[_0x6773('0x19')],_0x2c6a1f);_0x216110(_0x2be3a2[_0x6773('0x1a')](0x1f4,_0x18c8b6[_0x6773('0x19')]));});});};
\ No newline at end of file
index 85054ca..17fbffd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe916=['remove','emit','removeListener','register','length','squareProject:','./squareProject.events'];(function(_0x54448a,_0x25689f){var _0x565419=function(_0x231ff5){while(--_0x231ff5){_0x54448a['push'](_0x54448a['shift']());}};_0x565419(++_0x25689f);}(_0xe916,0xb5));var _0x6e91=function(_0x4a0663,_0x9cd2fa){_0x4a0663=_0x4a0663-0x0;var _0x25bdff=_0xe916[_0x4a0663];return _0x25bdff;};'use strict';var SquareProjectEvents=require(_0x6e91('0x0'));var events=['save',_0x6e91('0x1'),'update'];function createListener(_0x590208,_0x468adf){return function(_0x3da9b2){_0x468adf[_0x6e91('0x2')](_0x590208,_0x3da9b2);};}function removeListener(_0x9fcdc2,_0x4dfd01){return function(){SquareProjectEvents[_0x6e91('0x3')](_0x9fcdc2,_0x4dfd01);};}exports[_0x6e91('0x4')]=function(_0x133b96){for(var _0x386db5=0x0,_0x56c090=events[_0x6e91('0x5')];_0x386db5<_0x56c090;_0x386db5++){var _0x241571=events[_0x386db5];var _0x24e088=createListener(_0x6e91('0x6')+_0x241571,_0x133b96);SquareProjectEvents['on'](_0x241571,_0x24e088);}};
\ No newline at end of file
+var _0x7377=['register','squareProject:','./squareProject.events','remove','update','emit','removeListener'];(function(_0x313bc5,_0x7e47f5){var _0x2ac71f=function(_0x4a7535){while(--_0x4a7535){_0x313bc5['push'](_0x313bc5['shift']());}};_0x2ac71f(++_0x7e47f5);}(_0x7377,0x136));var _0x7737=function(_0x5451e7,_0x52ebfc){_0x5451e7=_0x5451e7-0x0;var _0x409d46=_0x7377[_0x5451e7];return _0x409d46;};'use strict';var SquareProjectEvents=require(_0x7737('0x0'));var events=['save',_0x7737('0x1'),_0x7737('0x2')];function createListener(_0x1cb548,_0x266cd7){return function(_0x2129d2){_0x266cd7[_0x7737('0x3')](_0x1cb548,_0x2129d2);};}function removeListener(_0x3327cb,_0xa7f8bb){return function(){SquareProjectEvents[_0x7737('0x4')](_0x3327cb,_0xa7f8bb);};}exports[_0x7737('0x5')]=function(_0x508166){for(var _0x48c1c1=0x0,_0x132f00=events['length'];_0x48c1c1<_0x132f00;_0x48c1c1++){var _0x4232f4=events[_0x48c1c1];var _0x496d9e=createListener(_0x7737('0x6')+_0x4232f4,_0x508166);SquareProjectEvents['on'](_0x4232f4,_0x496d9e);}};
\ No newline at end of file
index 4bfddc8..7d78952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','post','put','update','delete','destroy','exports','multer','util','path','express'];(function(_0x9ed833,_0x2e09cb){var _0x181842=function(_0x1efd19){while(--_0x1efd19){_0x9ed833['push'](_0x9ed833['shift']());}};_0x181842(++_0x2e09cb);}(_0x7a54,0x106));var _0x47a5=function(_0x52c37b,_0x51f575){_0x52c37b=_0x52c37b-0x0;var _0x23b704=_0x7a54[_0x52c37b];return _0x23b704;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x47a5('0xd')]('/',auth[_0x47a5('0xc')](),controller['create']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);module[_0x47a5('0x12')]=router;
\ No newline at end of file
+var _0x5fab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0xbdb65e,_0x31c3e6){var _0x41d36b=function(_0x1524d5){while(--_0x1524d5){_0xbdb65e['push'](_0xbdb65e['shift']());}};_0x41d36b(++_0x31c3e6);}(_0x5fab,0x177));var _0xb5fa=function(_0x56e711,_0x5917c8){_0x56e711=_0x56e711-0x0;var _0x1cf38f=_0x5fab[_0x56e711];return _0x1cf38f;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0x11')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0x13')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x14')]);module['exports']=router;
\ No newline at end of file
index a1771a0..0b5feed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['getDataValue','savePath','lastIndexOf','sequelize','exports','STRING','VIRTUAL'];(function(_0x53c889,_0xef2db8){var _0x274fa6=function(_0x393754){while(--_0x393754){_0x53c889['push'](_0x53c889['shift']());}};_0x274fa6(++_0xef2db8);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x4d7ddb,_0x473813){_0x4d7ddb=_0x4d7ddb-0x0;var _0x10a7ca=_0x9c5a[_0x4d7ddb];return _0x10a7ca;};'use strict';var Sequelize=require(_0xa9c5('0x0'));module[_0xa9c5('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xa9c5('0x2')]},'calleridname':{'type':Sequelize[_0xa9c5('0x2')]},'context':{'type':Sequelize[_0xa9c5('0x2')]},'extension':{'type':Sequelize[_0xa9c5('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xa9c5('0x2')]},'dnid':{'type':Sequelize[_0xa9c5('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0xa9c5('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0xa9c5('0x2')]},'format':{'type':Sequelize[_0xa9c5('0x3')],'get':function(){var _0x4cb597='';var _0x4b6db6=this[_0xa9c5('0x4')](_0xa9c5('0x5'));if(_0x4b6db6){_0x4cb597=_0x4b6db6['substring'](_0x4b6db6[_0xa9c5('0x6')]('.'));}return _0x4cb597;}}};
\ No newline at end of file
+var _0x8ef6=['VIRTUAL','savePath','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x1d211b,_0x475f3b){var _0x47c88b=function(_0x3126f5){while(--_0x3126f5){_0x1d211b['push'](_0x1d211b['shift']());}};_0x47c88b(++_0x475f3b);}(_0x8ef6,0xf2));var _0x68ef=function(_0x43141e,_0x5dc093){_0x43141e=_0x43141e-0x0;var _0x579e5e=_0x8ef6[_0x43141e];return _0x579e5e;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'callerid':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize[_0x68ef('0x2')]},'extension':{'type':Sequelize[_0x68ef('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'dnid':{'type':Sequelize[_0x68ef('0x2')]},'projectName':{'type':Sequelize[_0x68ef('0x2')]},'saveName':{'type':Sequelize[_0x68ef('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x68ef('0x3')],'get':function(){var _0x4740e8='';var _0x2de776=this['getDataValue'](_0x68ef('0x4'));if(_0x2de776){_0x4740e8=_0x2de776[_0x68ef('0x5')](_0x2de776[_0x68ef('0x6')]('.'));}return _0x4740e8;}}};
\ No newline at end of file
index 33e0f07..3d28296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76b2=['Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','set','apply','reject','save','then','destroy','send','index','map','SquareRecording','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','limit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','catch','create','body','update','params','download','../../components/encryptor','uniqueid','filename','savePath','format','%s.cypher','existsSync','secrets','SquareRecording\x20not\x20found','extname','unlink','message'];(function(_0x290c9b,_0x579542){var _0x27b71c=function(_0x801a7a){while(--_0x801a7a){_0x290c9b['push'](_0x290c9b['shift']());}};_0x27b71c(++_0x579542);}(_0x76b2,0x68));var _0x276b=function(_0x1b4dfe,_0x2cc35a){_0x1b4dfe=_0x1b4dfe-0x0;var _0x575a12=_0x76b2[_0x1b4dfe];return _0x575a12;};'use strict';var emlformat=require(_0x276b('0x0'));var rimraf=require(_0x276b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x276b('0x2'));var rp=require(_0x276b('0x3'));var moment=require('moment');var BPromise=require(_0x276b('0x4'));var Mustache=require('mustache');var util=require(_0x276b('0x5'));var path=require(_0x276b('0x6'));var sox=require(_0x276b('0x7'));var csv=require('to-csv');var ejs=require(_0x276b('0x8'));var fs=require('fs');var fs_extra=require(_0x276b('0x9'));var _=require(_0x276b('0xa'));var squel=require('squel');var crypto=require(_0x276b('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x276b('0xc'));var querystring=require(_0x276b('0xd'));var Papa=require(_0x276b('0xe'));var Redis=require(_0x276b('0xf'));var authService=require(_0x276b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x276b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x276b('0x12'))(_0x276b('0x13'));var utils=require(_0x276b('0x14'));var config=require(_0x276b('0x15'));var licenseUtil=require(_0x276b('0x16'));var db=require(_0x276b('0x17'))['db'];function respondWithStatusCode(_0x24670d,_0x1ead80){_0x1ead80=_0x1ead80||0xcc;return function(_0x909b35){if(_0x909b35){return _0x24670d[_0x276b('0x18')](_0x1ead80);}return _0x24670d[_0x276b('0x19')](_0x1ead80)[_0x276b('0x1a')]();};}function respondWithResult(_0x18bb6b,_0x58be50){_0x58be50=_0x58be50||0xc8;return function(_0x36034d){if(_0x36034d){return _0x18bb6b[_0x276b('0x19')](_0x58be50)[_0x276b('0x1b')](_0x36034d);}};}function respondWithFilteredResult(_0x403893,_0x3d87f9){return function(_0x51c6d5){if(_0x51c6d5){var _0x1ef7a7=typeof _0x3d87f9[_0x276b('0x1c')]==='undefined'&&typeof _0x3d87f9['limit']==='undefined';var _0x479429=_0x51c6d5[_0x276b('0x1d')];var _0x2b9e58=_0x1ef7a7?0x0:_0x3d87f9[_0x276b('0x1c')];var _0x58ebfa=_0x1ef7a7?_0x51c6d5['count']:_0x3d87f9[_0x276b('0x1c')]+_0x3d87f9['limit'];var _0x48fc35;if(_0x58ebfa>=_0x479429){_0x58ebfa=_0x479429;_0x48fc35=0xc8;}else{_0x48fc35=0xce;}_0x403893[_0x276b('0x19')](_0x48fc35);return _0x403893[_0x276b('0x1e')]('Content-Range',_0x2b9e58+'-'+_0x58ebfa+'/'+_0x479429)[_0x276b('0x1b')](_0x51c6d5);}return null;};}function patchUpdates(_0x2d4df6){return function(_0x2a8bb6){try{jsonpatch[_0x276b('0x1f')](_0x2a8bb6,_0x2d4df6,!![]);}catch(_0x18996f){return BPromise[_0x276b('0x20')](_0x18996f);}return _0x2a8bb6[_0x276b('0x21')]();};}function saveUpdates(_0x52ff31,_0x112695){return function(_0x2bdfdb){if(_0x2bdfdb){return _0x2bdfdb['update'](_0x52ff31)[_0x276b('0x22')](function(_0x31c201){return _0x31c201;});}return null;};}function removeEntity(_0x55f62f,_0x1a6eff){return function(_0x6ba882){if(_0x6ba882){return _0x6ba882[_0x276b('0x23')]()['then'](function(){_0x55f62f[_0x276b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30d648,_0x5193e1){return function(_0x519e36){if(!_0x519e36){_0x30d648[_0x276b('0x18')](0x194);}return _0x519e36;};}function handleError(_0x3288ac,_0x36c534){_0x36c534=_0x36c534||0x1f4;return function(_0xac8163){logger['error'](_0xac8163['stack']);if(_0xac8163['name']){delete _0xac8163['name'];}_0x3288ac[_0x276b('0x19')](_0x36c534)[_0x276b('0x24')](_0xac8163);};}exports[_0x276b('0x25')]=function(_0x26bfd6,_0x5026b2){var _0x1d69d9={},_0x2e89ab={},_0x520858={'count':0x0,'rows':[]};var _0x195021=_[_0x276b('0x26')](db[_0x276b('0x27')][_0x276b('0x28')],function(_0x5bdcdd){return{'name':_0x5bdcdd[_0x276b('0x29')],'type':_0x5bdcdd[_0x276b('0x2a')][_0x276b('0x2b')]};});_0x2e89ab[_0x276b('0x2c')]=_[_0x276b('0x26')](_0x195021,_0x276b('0x2d'));_0x2e89ab['query']=_[_0x276b('0x2e')](_0x26bfd6[_0x276b('0x2f')]);_0x2e89ab[_0x276b('0x30')]=_[_0x276b('0x31')](_0x2e89ab[_0x276b('0x2c')],_0x2e89ab['query']);_0x1d69d9[_0x276b('0x32')]=_[_0x276b('0x31')](_0x2e89ab[_0x276b('0x2c')],qs[_0x276b('0x33')](_0x26bfd6[_0x276b('0x2f')][_0x276b('0x33')]));_0x1d69d9[_0x276b('0x32')]=_0x1d69d9[_0x276b('0x32')][_0x276b('0x34')]?_0x1d69d9['attributes']:_0x2e89ab['model'];if(!_0x26bfd6['query']['hasOwnProperty']('nolimit')){_0x1d69d9[_0x276b('0x35')]=qs[_0x276b('0x35')](_0x26bfd6[_0x276b('0x2f')][_0x276b('0x35')]);_0x1d69d9[_0x276b('0x1c')]=qs[_0x276b('0x1c')](_0x26bfd6[_0x276b('0x2f')][_0x276b('0x1c')]);}_0x1d69d9[_0x276b('0x36')]=qs[_0x276b('0x37')](_0x26bfd6['query'][_0x276b('0x37')]);_0x1d69d9['where']=qs[_0x276b('0x30')](_[_0x276b('0x38')](_0x26bfd6['query'],_0x2e89ab[_0x276b('0x30')]),_0x195021);if(_0x26bfd6[_0x276b('0x2f')][_0x276b('0x39')]){_0x1d69d9[_0x276b('0x3a')]=_[_0x276b('0x3b')](_0x1d69d9[_0x276b('0x3a')],{'$or':_[_0x276b('0x26')](_0x195021,function(_0x4ebb8b){if(_0x4ebb8b[_0x276b('0x2a')]!==_0x276b('0x3c')){var _0x4372f9={};_0x4372f9[_0x4ebb8b['name']]={'$like':'%'+_0x26bfd6['query'][_0x276b('0x39')]+'%'};return _0x4372f9;}})});}_0x1d69d9=_[_0x276b('0x3b')]({},_0x1d69d9,_0x26bfd6[_0x276b('0x3d')]);var _0x426500={'where':_0x1d69d9[_0x276b('0x3a')]};return db[_0x276b('0x27')][_0x276b('0x1d')](_0x426500)['then'](function(_0x28e5ca){_0x520858[_0x276b('0x1d')]=_0x28e5ca;if(_0x26bfd6[_0x276b('0x2f')][_0x276b('0x3e')]){_0x1d69d9[_0x276b('0x3f')]=[{'all':!![]}];}return db['SquareRecording'][_0x276b('0x40')](_0x1d69d9);})[_0x276b('0x22')](function(_0x5b5146){_0x520858[_0x276b('0x41')]=_0x5b5146;return _0x520858;})[_0x276b('0x22')](respondWithFilteredResult(_0x5026b2,_0x1d69d9))['catch'](handleError(_0x5026b2,null));};exports[_0x276b('0x42')]=function(_0x35d4f0,_0x5e4aa){var _0x59f131={'raw':!![],'where':{'id':_0x35d4f0['params']['id']}},_0x327130={};_0x327130[_0x276b('0x2c')]=_[_0x276b('0x2e')](db[_0x276b('0x27')][_0x276b('0x28')]);_0x327130['query']=_[_0x276b('0x2e')](_0x35d4f0[_0x276b('0x2f')]);_0x327130[_0x276b('0x30')]=_[_0x276b('0x31')](_0x327130[_0x276b('0x2c')],_0x327130[_0x276b('0x2f')]);_0x59f131['attributes']=_['intersection'](_0x327130[_0x276b('0x2c')],qs['fields'](_0x35d4f0[_0x276b('0x2f')][_0x276b('0x33')]));_0x59f131[_0x276b('0x32')]=_0x59f131[_0x276b('0x32')]['length']?_0x59f131[_0x276b('0x32')]:_0x327130['model'];if(_0x35d4f0[_0x276b('0x2f')][_0x276b('0x3e')]){_0x59f131[_0x276b('0x3f')]=[{'all':!![]}];}_0x59f131=_['merge']({},_0x59f131,_0x35d4f0[_0x276b('0x3d')]);return db['SquareRecording'][_0x276b('0x43')](_0x59f131)[_0x276b('0x22')](handleEntityNotFound(_0x5e4aa,null))[_0x276b('0x22')](respondWithResult(_0x5e4aa,null))[_0x276b('0x44')](handleError(_0x5e4aa,null));};exports['create']=function(_0x3bc56a,_0x43d74f){return db[_0x276b('0x27')][_0x276b('0x45')](_0x3bc56a[_0x276b('0x46')],{})['then'](respondWithResult(_0x43d74f,0xc9))['catch'](handleError(_0x43d74f,null));};exports[_0x276b('0x47')]=function(_0x8fe5f5,_0x59d823){if(_0x8fe5f5[_0x276b('0x46')]['id']){delete _0x8fe5f5[_0x276b('0x46')]['id'];}return db[_0x276b('0x27')][_0x276b('0x43')]({'where':{'id':_0x8fe5f5[_0x276b('0x48')]['id']}})[_0x276b('0x22')](handleEntityNotFound(_0x59d823,null))['then'](saveUpdates(_0x8fe5f5[_0x276b('0x46')],null))[_0x276b('0x22')](respondWithResult(_0x59d823,null))[_0x276b('0x44')](handleError(_0x59d823,null));};exports[_0x276b('0x49')]=function(_0x391012,_0x52eedb,_0x5473aa){var _0x4d7eb4=require(_0x276b('0x4a'));var _0x3bc128=![];var _0x29c33c={};if(_0x391012['query'][_0x276b('0x2a')]&&_0x391012[_0x276b('0x2f')][_0x276b('0x2a')]===_0x276b('0x4b')){_0x29c33c[_0x276b('0x4b')]=_0x391012['params']['id'];}else{_0x29c33c['id']=_0x391012['params']['id'];}return db[_0x276b('0x27')][_0x276b('0x43')]({'where':_0x29c33c,'attributes':['id','savePath',_0x276b('0x4c')],'raw':!![]})[_0x276b('0x22')](handleEntityNotFound(_0x52eedb,null))[_0x276b('0x22')](function(_0x40f46f){if(_0x40f46f){var _0x5ec3fd=_0x40f46f[_0x276b('0x4d')];var _0x44b809=util[_0x276b('0x4e')](_0x276b('0x4f'),_0x5ec3fd);if(fs[_0x276b('0x50')](_0x44b809)){_0x3bc128=!![];return _0x4d7eb4['decryptFile'](_0x44b809,_0x5ec3fd,config[_0x276b('0x51')]['recording'])[_0x276b('0x22')](function(){return _0x40f46f;});}return _0x40f46f;}})[_0x276b('0x22')](function(_0x345a12){if(_0x345a12){var _0x123778=_0x345a12[_0x276b('0x4d')];if(!fs[_0x276b('0x50')](_0x123778)){throw new db['Sequelize']['ValidationError'](_0x276b('0x52'));}if(_0x345a12[_0x276b('0x4c')]){return _0x52eedb[_0x276b('0x49')](_0x123778,_0x345a12[_0x276b('0x4c')]+path[_0x276b('0x53')](_0x123778),function(){if(_0x3bc128){fs[_0x276b('0x54')](_0x123778);}});}else{return _0x52eedb['download'](_0x123778,function(_0x118df2){if(_0x3bc128){fs[_0x276b('0x54')](_0x123778);}});}}})[_0x276b('0x44')](function(_0x133f65){if(_0x133f65[_0x276b('0x55')]===_0x276b('0x52')){_0x52eedb[_0x276b('0x19')](0x194)[_0x276b('0x24')](_0x276b('0x56'));}else{return handleError(_0x52eedb,null);}});};exports[_0x276b('0x23')]=function(_0x1d6ebc,_0x458d41){return db[_0x276b('0x27')]['find']({'where':{'id':_0x1d6ebc[_0x276b('0x48')]['id']}})[_0x276b('0x22')](function(_0x5a92ab){if(_[_0x276b('0x57')](_0x5a92ab)){throw new ReferenceError(_0x276b('0x58'));}return _0x5a92ab;})[_0x276b('0x22')](function(_0x50ef40){var _0x2fb869=_0x50ef40['savePath'];logger[_0x276b('0x59')](_0x276b('0x5a'),_0x2fb869);if(!_[_0x276b('0x57')](_0x50ef40['savePath'])&&fs[_0x276b('0x50')](_0x2fb869)){logger[_0x276b('0x59')](_0x276b('0x5b')+_0x2fb869+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x2fb869);}_0x2fb869=_0x2fb869+_0x276b('0x5c');if(!_[_0x276b('0x57')](_0x50ef40[_0x276b('0x4d')])&&fs[_0x276b('0x50')](_0x2fb869)){logger[_0x276b('0x59')](_0x276b('0x5b')+_0x2fb869+_0x276b('0x5d'));fs[_0x276b('0x5e')](_0x2fb869);}return _0x50ef40;})['then'](function(_0x528e80){if(!_0x528e80)throw new InternalError();return _0x528e80['destroy']();})[_0x276b('0x22')](function(){_0x458d41[_0x276b('0x19')](0xcc)[_0x276b('0x1a')]();})[_0x276b('0x44')](handleError(_0x458d41,null));};
\ No newline at end of file
+var _0xcecc=['../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','count','set','json','apply','update','destroy','then','end','name','send','index','SquareRecording','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','limit','sort','where','filters','pick','merge','includeAll','include','findAll','rows','catch','show','rawAttributes','options','create','body','find','params','download','../../components/encryptor','uniqueid','savePath','existsSync','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','unlink','message','Not\x20found','info','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x2b70a0,_0x375e6b){var _0x350df4=function(_0x580d73){while(--_0x580d73){_0x2b70a0['push'](_0x2b70a0['shift']());}};_0x350df4(++_0x375e6b);}(_0xcecc,0xf0));var _0xccec=function(_0x3909ca,_0x3c2bf9){_0x3909ca=_0x3909ca-0x0;var _0x4a669d=_0xcecc[_0x3909ca];return _0x4a669d;};'use strict';var emlformat=require(_0xccec('0x0'));var rimraf=require(_0xccec('0x1'));var zipdir=require(_0xccec('0x2'));var jsonpatch=require(_0xccec('0x3'));var rp=require('request-promise');var moment=require(_0xccec('0x4'));var BPromise=require(_0xccec('0x5'));var Mustache=require(_0xccec('0x6'));var util=require('util');var path=require(_0xccec('0x7'));var sox=require(_0xccec('0x8'));var csv=require(_0xccec('0x9'));var ejs=require(_0xccec('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xccec('0xb'));var squel=require(_0xccec('0xc'));var crypto=require('crypto');var jsforce=require(_0xccec('0xd'));var deskjs=require(_0xccec('0xe'));var toCsv=require(_0xccec('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xccec('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xccec('0x10'));var as=require(_0xccec('0x11'));var hardwareService=require(_0xccec('0x12'));var logger=require(_0xccec('0x13'))(_0xccec('0x14'));var utils=require('../../config/utils');var config=require(_0xccec('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xccec('0x16'))['db'];function respondWithStatusCode(_0x43044c,_0x4f7fe2){_0x4f7fe2=_0x4f7fe2||0xcc;return function(_0x46a126){if(_0x46a126){return _0x43044c[_0xccec('0x17')](_0x4f7fe2);}return _0x43044c[_0xccec('0x18')](_0x4f7fe2)['end']();};}function respondWithResult(_0x48f37c,_0x1c47e8){_0x1c47e8=_0x1c47e8||0xc8;return function(_0x1ab1e5){if(_0x1ab1e5){return _0x48f37c[_0xccec('0x18')](_0x1c47e8)['json'](_0x1ab1e5);}};}function respondWithFilteredResult(_0x5e6e3a,_0x21e1f4){return function(_0x29f6ad){if(_0x29f6ad){var _0x1310ba=typeof _0x21e1f4[_0xccec('0x19')]===_0xccec('0x1a')&&typeof _0x21e1f4['limit']===_0xccec('0x1a');var _0x53bfa0=_0x29f6ad[_0xccec('0x1b')];var _0x592f5e=_0x1310ba?0x0:_0x21e1f4[_0xccec('0x19')];var _0xbcdca4=_0x1310ba?_0x29f6ad['count']:_0x21e1f4[_0xccec('0x19')]+_0x21e1f4['limit'];var _0x1c1768;if(_0xbcdca4>=_0x53bfa0){_0xbcdca4=_0x53bfa0;_0x1c1768=0xc8;}else{_0x1c1768=0xce;}_0x5e6e3a[_0xccec('0x18')](_0x1c1768);return _0x5e6e3a[_0xccec('0x1c')]('Content-Range',_0x592f5e+'-'+_0xbcdca4+'/'+_0x53bfa0)[_0xccec('0x1d')](_0x29f6ad);}return null;};}function patchUpdates(_0x29e2ac){return function(_0x3df7a0){try{jsonpatch[_0xccec('0x1e')](_0x3df7a0,_0x29e2ac,!![]);}catch(_0x2de0b0){return BPromise['reject'](_0x2de0b0);}return _0x3df7a0['save']();};}function saveUpdates(_0x39ee14,_0x32b2c7){return function(_0x54b3f7){if(_0x54b3f7){return _0x54b3f7[_0xccec('0x1f')](_0x39ee14)['then'](function(_0x4a93ed){return _0x4a93ed;});}return null;};}function removeEntity(_0x8550ad,_0x2d2076){return function(_0x1bfeba){if(_0x1bfeba){return _0x1bfeba[_0xccec('0x20')]()[_0xccec('0x21')](function(){_0x8550ad[_0xccec('0x18')](0xcc)[_0xccec('0x22')]();});}};}function handleEntityNotFound(_0x1289a9,_0x183996){return function(_0x494282){if(!_0x494282){_0x1289a9[_0xccec('0x17')](0x194);}return _0x494282;};}function handleError(_0x3d42d3,_0x44c3b9){_0x44c3b9=_0x44c3b9||0x1f4;return function(_0x2f9c71){logger['error'](_0x2f9c71['stack']);if(_0x2f9c71[_0xccec('0x23')]){delete _0x2f9c71[_0xccec('0x23')];}_0x3d42d3[_0xccec('0x18')](_0x44c3b9)[_0xccec('0x24')](_0x2f9c71);};}exports[_0xccec('0x25')]=function(_0x390cce,_0x5ab1d2){var _0x5b5c56={},_0x25a2f1={},_0x194225={'count':0x0,'rows':[]};var _0x123612=_['map'](db[_0xccec('0x26')]['rawAttributes'],function(_0x843825){return{'name':_0x843825[_0xccec('0x27')],'type':_0x843825[_0xccec('0x28')]['key']};});_0x25a2f1[_0xccec('0x29')]=_[_0xccec('0x2a')](_0x123612,'name');_0x25a2f1[_0xccec('0x2b')]=_[_0xccec('0x2c')](_0x390cce['query']);_0x25a2f1['filters']=_[_0xccec('0x2d')](_0x25a2f1[_0xccec('0x29')],_0x25a2f1[_0xccec('0x2b')]);_0x5b5c56[_0xccec('0x2e')]=_[_0xccec('0x2d')](_0x25a2f1[_0xccec('0x29')],qs[_0xccec('0x2f')](_0x390cce[_0xccec('0x2b')][_0xccec('0x2f')]));_0x5b5c56[_0xccec('0x2e')]=_0x5b5c56[_0xccec('0x2e')][_0xccec('0x30')]?_0x5b5c56['attributes']:_0x25a2f1[_0xccec('0x29')];if(!_0x390cce['query']['hasOwnProperty']('nolimit')){_0x5b5c56[_0xccec('0x31')]=qs['limit'](_0x390cce[_0xccec('0x2b')][_0xccec('0x31')]);_0x5b5c56['offset']=qs[_0xccec('0x19')](_0x390cce[_0xccec('0x2b')][_0xccec('0x19')]);}_0x5b5c56['order']=qs['sort'](_0x390cce[_0xccec('0x2b')][_0xccec('0x32')]);_0x5b5c56[_0xccec('0x33')]=qs[_0xccec('0x34')](_[_0xccec('0x35')](_0x390cce[_0xccec('0x2b')],_0x25a2f1[_0xccec('0x34')]),_0x123612);if(_0x390cce[_0xccec('0x2b')]['filter']){_0x5b5c56[_0xccec('0x33')]=_[_0xccec('0x36')](_0x5b5c56[_0xccec('0x33')],{'$or':_[_0xccec('0x2a')](_0x123612,function(_0x34eb14){if(_0x34eb14['type']!=='VIRTUAL'){var _0x472aa3={};_0x472aa3[_0x34eb14[_0xccec('0x23')]]={'$like':'%'+_0x390cce['query']['filter']+'%'};return _0x472aa3;}})});}_0x5b5c56=_[_0xccec('0x36')]({},_0x5b5c56,_0x390cce['options']);var _0x31d46e={'where':_0x5b5c56[_0xccec('0x33')]};return db[_0xccec('0x26')][_0xccec('0x1b')](_0x31d46e)[_0xccec('0x21')](function(_0x350182){_0x194225[_0xccec('0x1b')]=_0x350182;if(_0x390cce['query'][_0xccec('0x37')]){_0x5b5c56[_0xccec('0x38')]=[{'all':!![]}];}return db['SquareRecording'][_0xccec('0x39')](_0x5b5c56);})[_0xccec('0x21')](function(_0x4dadea){_0x194225[_0xccec('0x3a')]=_0x4dadea;return _0x194225;})['then'](respondWithFilteredResult(_0x5ab1d2,_0x5b5c56))[_0xccec('0x3b')](handleError(_0x5ab1d2,null));};exports[_0xccec('0x3c')]=function(_0x38becb,_0x7f29fa){var _0x1e88aa={'raw':!![],'where':{'id':_0x38becb['params']['id']}},_0x10d29a={};_0x10d29a[_0xccec('0x29')]=_[_0xccec('0x2c')](db['SquareRecording'][_0xccec('0x3d')]);_0x10d29a[_0xccec('0x2b')]=_[_0xccec('0x2c')](_0x38becb[_0xccec('0x2b')]);_0x10d29a[_0xccec('0x34')]=_['intersection'](_0x10d29a['model'],_0x10d29a[_0xccec('0x2b')]);_0x1e88aa['attributes']=_[_0xccec('0x2d')](_0x10d29a['model'],qs[_0xccec('0x2f')](_0x38becb['query']['fields']));_0x1e88aa[_0xccec('0x2e')]=_0x1e88aa['attributes'][_0xccec('0x30')]?_0x1e88aa[_0xccec('0x2e')]:_0x10d29a[_0xccec('0x29')];if(_0x38becb[_0xccec('0x2b')][_0xccec('0x37')]){_0x1e88aa['include']=[{'all':!![]}];}_0x1e88aa=_[_0xccec('0x36')]({},_0x1e88aa,_0x38becb[_0xccec('0x3e')]);return db[_0xccec('0x26')]['find'](_0x1e88aa)['then'](handleEntityNotFound(_0x7f29fa,null))[_0xccec('0x21')](respondWithResult(_0x7f29fa,null))[_0xccec('0x3b')](handleError(_0x7f29fa,null));};exports[_0xccec('0x3f')]=function(_0x3f6a60,_0x5adb08){return db[_0xccec('0x26')][_0xccec('0x3f')](_0x3f6a60[_0xccec('0x40')],{})[_0xccec('0x21')](respondWithResult(_0x5adb08,0xc9))['catch'](handleError(_0x5adb08,null));};exports['update']=function(_0x469018,_0x7846b5){if(_0x469018[_0xccec('0x40')]['id']){delete _0x469018[_0xccec('0x40')]['id'];}return db['SquareRecording'][_0xccec('0x41')]({'where':{'id':_0x469018[_0xccec('0x42')]['id']}})['then'](handleEntityNotFound(_0x7846b5,null))['then'](saveUpdates(_0x469018[_0xccec('0x40')],null))[_0xccec('0x21')](respondWithResult(_0x7846b5,null))['catch'](handleError(_0x7846b5,null));};exports[_0xccec('0x43')]=function(_0x3d7bc2,_0x35834e,_0x58dc80){var _0x138873=require(_0xccec('0x44'));var _0x25e124=![];var _0x30e217={};if(_0x3d7bc2[_0xccec('0x2b')][_0xccec('0x28')]&&_0x3d7bc2[_0xccec('0x2b')][_0xccec('0x28')]==='uniqueid'){_0x30e217[_0xccec('0x45')]=_0x3d7bc2[_0xccec('0x42')]['id'];}else{_0x30e217['id']=_0x3d7bc2[_0xccec('0x42')]['id'];}return db['SquareRecording'][_0xccec('0x41')]({'where':_0x30e217,'attributes':['id',_0xccec('0x46'),'filename'],'raw':!![]})[_0xccec('0x21')](handleEntityNotFound(_0x35834e,null))[_0xccec('0x21')](function(_0xd550be){if(_0xd550be){var _0x53fd9f=_0xd550be[_0xccec('0x46')];var _0x121cd9=util['format']('%s.cypher',_0x53fd9f);if(fs[_0xccec('0x47')](_0x121cd9)){_0x25e124=!![];return _0x138873['decryptFile'](_0x121cd9,_0x53fd9f,config[_0xccec('0x48')][_0xccec('0x49')])[_0xccec('0x21')](function(){return _0xd550be;});}return _0xd550be;}})[_0xccec('0x21')](function(_0x5b768d){if(_0x5b768d){var _0x1a205f=_0x5b768d['savePath'];if(!fs[_0xccec('0x47')](_0x1a205f)){throw new db[(_0xccec('0x4a'))][(_0xccec('0x4b'))](_0xccec('0x4c'));}if(_0x5b768d[_0xccec('0x4d')]){return _0x35834e[_0xccec('0x43')](_0x1a205f,_0x5b768d[_0xccec('0x4d')]+path['extname'](_0x1a205f),function(){if(_0x25e124){fs[_0xccec('0x4e')](_0x1a205f);}});}else{return _0x35834e['download'](_0x1a205f,function(_0x3faa80){if(_0x25e124){fs[_0xccec('0x4e')](_0x1a205f);}});}}})[_0xccec('0x3b')](function(_0x523917){if(_0x523917[_0xccec('0x4f')]==='SquareRecording\x20not\x20found'){_0x35834e[_0xccec('0x18')](0x194)[_0xccec('0x24')](_0xccec('0x50'));}else{return handleError(_0x35834e,null);}});};exports[_0xccec('0x20')]=function(_0x6fa2cd,_0x38663f){return db[_0xccec('0x26')]['find']({'where':{'id':_0x6fa2cd[_0xccec('0x42')]['id']}})['then'](function(_0x1b837c){if(_['isNil'](_0x1b837c)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1b837c;})['then'](function(_0x1cd053){var _0x163f57=_0x1cd053[_0xccec('0x46')];logger[_0xccec('0x51')]('cancellazione\x20fisica\x20documento\x20%s',_0x163f57);if(!_[_0xccec('0x52')](_0x1cd053[_0xccec('0x46')])&&fs['existsSync'](_0x163f57)){logger[_0xccec('0x51')]('File:\x20\x22'+_0x163f57+_0xccec('0x53'));fs[_0xccec('0x54')](_0x163f57);}_0x163f57=_0x163f57+'.cypher';if(!_[_0xccec('0x52')](_0x1cd053[_0xccec('0x46')])&&fs[_0xccec('0x47')](_0x163f57)){logger['info'](_0xccec('0x55')+_0x163f57+_0xccec('0x53'));fs[_0xccec('0x54')](_0x163f57);}return _0x1cd053;})[_0xccec('0x21')](function(_0x497c97){if(!_0x497c97)throw new InternalError();return _0x497c97[_0xccec('0x20')]();})[_0xccec('0x21')](function(){_0x38663f[_0xccec('0x18')](0xcc)[_0xccec('0x22')]();})[_0xccec('0x3b')](handleError(_0x38663f,null));};
\ No newline at end of file
index 04265ff..f14dced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078a=['SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x835367,_0x133cc4){var _0xf7969e=function(_0x152b3d){while(--_0x152b3d){_0x835367['push'](_0x835367['shift']());}};_0xf7969e(++_0x133cc4);}(_0x078a,0x12d));var _0xa078=function(_0x15f625,_0x3b60c5){_0x15f625=_0x15f625-0x0;var _0x12a348=_0x078a[_0x15f625];return _0x12a348;};'use strict';var _=require(_0xa078('0x0'));var util=require(_0xa078('0x1'));var logger=require(_0xa078('0x2'))(_0xa078('0x3'));var moment=require(_0xa078('0x4'));var BPromise=require(_0xa078('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa078('0x6'));var rimraf=require(_0xa078('0x7'));var config=require(_0xa078('0x8'));var attributes=require('./squareRecording.attributes');module[_0xa078('0x9')]=function(_0x4a65f2,_0x453616){return _0x4a65f2[_0xa078('0xa')](_0xa078('0xb'),attributes,{'tableName':_0xa078('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdfb1=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','define','square_recordings'];(function(_0x46cf00,_0x457a43){var _0x3974dc=function(_0x4b5d0a){while(--_0x4b5d0a){_0x46cf00['push'](_0x46cf00['shift']());}};_0x3974dc(++_0x457a43);}(_0xdfb1,0x8c));var _0x1dfb=function(_0x46fd06,_0x35b8a5){_0x46fd06=_0x46fd06-0x0;var _0xf2b766=_0xdfb1[_0x46fd06];return _0xf2b766;};'use strict';var _=require(_0x1dfb('0x0'));var util=require(_0x1dfb('0x1'));var logger=require(_0x1dfb('0x2'))(_0x1dfb('0x3'));var moment=require('moment');var BPromise=require(_0x1dfb('0x4'));var rp=require(_0x1dfb('0x5'));var fs=require('fs');var path=require(_0x1dfb('0x6'));var rimraf=require(_0x1dfb('0x7'));var config=require('../../config/environment');var attributes=require('./squareRecording.attributes');module['exports']=function(_0x31f0ff,_0x36bf77){return _0x31f0ff[_0x1dfb('0x8')]('SquareRecording',attributes,{'tableName':_0x1dfb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 720cf88..61616db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7327=['result','SquareRecording','create','body','options','raw','CreateSquareRecording','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x248c51,_0xdf9962){var _0x28c4ce=function(_0xfd6d44){while(--_0xfd6d44){_0x248c51['push'](_0x248c51['shift']());}};_0x28c4ce(++_0xdf9962);}(_0x7327,0x1e8));var _0x7732=function(_0x5cfa68,_0x510070){_0x5cfa68=_0x5cfa68-0x0;var _0x1c1fe4=_0x7327[_0x5cfa68];return _0x1c1fe4;};'use strict';var _=require('lodash');var util=require(_0x7732('0x0'));var moment=require('moment');var BPromise=require(_0x7732('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7732('0x2'));var db=require(_0x7732('0x3'))['db'];var utils=require(_0x7732('0x4'));var logger=require(_0x7732('0x5'))(_0x7732('0x6'));var config=require(_0x7732('0x7'));var jayson=require(_0x7732('0x8'));var client=jayson[_0x7732('0x9')][_0x7732('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x266a84,_0x407501,_0x4bf9a9){return new BPromise(function(_0x412bd9,_0x3a9282){return client[_0x7732('0xb')](_0x266a84,_0x4bf9a9)[_0x7732('0xc')](function(_0x25c396){logger[_0x7732('0xd')](_0x7732('0xe'),_0x407501,'request\x20sent');logger[_0x7732('0xf')](_0x7732('0x10'),_0x407501,_0x7732('0x11'),JSON[_0x7732('0x12')](_0x25c396));if(_0x25c396[_0x7732('0x13')]){if(_0x25c396[_0x7732('0x13')][_0x7732('0x14')]===0x1f4){logger[_0x7732('0x13')]('SquareRecording,\x20%s,\x20%s',_0x407501,_0x25c396[_0x7732('0x13')][_0x7732('0x15')]);return _0x3a9282(_0x25c396[_0x7732('0x13')][_0x7732('0x15')]);}logger[_0x7732('0x13')](_0x7732('0xe'),_0x407501,_0x25c396[_0x7732('0x13')][_0x7732('0x15')]);return _0x412bd9(_0x25c396[_0x7732('0x13')][_0x7732('0x15')]);}else{logger[_0x7732('0xd')](_0x7732('0xe'),_0x407501,_0x7732('0x11'));_0x412bd9(_0x25c396[_0x7732('0x16')]['message']);}})['catch'](function(_0x26bc9f){logger['error'](_0x7732('0xe'),_0x407501,_0x26bc9f);_0x3a9282(_0x26bc9f);});});}exports['CreateSquareRecording']=function(_0x25f2c2){var _0x1c431f=this;return new Promise(function(_0x34e815,_0x574472){return db[_0x7732('0x17')][_0x7732('0x18')](_0x25f2c2[_0x7732('0x19')],{'raw':_0x25f2c2[_0x7732('0x1a')]?_0x25f2c2[_0x7732('0x1a')][_0x7732('0x1b')]===undefined?!![]:![]:!![]})[_0x7732('0xc')](function(_0x721136){logger[_0x7732('0xd')]('CreateSquareRecording',_0x25f2c2);logger[_0x7732('0xf')](_0x7732('0x1c'),_0x25f2c2,JSON[_0x7732('0x12')](_0x721136));_0x34e815(_0x721136);})[_0x7732('0x1d')](function(_0x378d0d){logger['error'](_0x7732('0x1c'),_0x378d0d['message'],_0x25f2c2);_0x574472(_0x1c431f['error'](0x1f4,_0x378d0d[_0x7732('0x15')]));});});};
\ No newline at end of file
+var _0x0cb1=['raw','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','then','info','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SquareRecording,\x20%s,\x20%s','catch','CreateSquareRecording','create','body'];(function(_0x1c446a,_0x3b3ad2){var _0x899e24=function(_0x579843){while(--_0x579843){_0x1c446a['push'](_0x1c446a['shift']());}};_0x899e24(++_0x3b3ad2);}(_0x0cb1,0xa9));var _0x10cb=function(_0x30cf11,_0x26ff17){_0x30cf11=_0x30cf11-0x0;var _0x177d72=_0x0cb1[_0x30cf11];return _0x177d72;};'use strict';var _=require(_0x10cb('0x0'));var util=require(_0x10cb('0x1'));var moment=require('moment');var BPromise=require(_0x10cb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x10cb('0x3'));var db=require(_0x10cb('0x4'))['db'];var utils=require(_0x10cb('0x5'));var logger=require(_0x10cb('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x10cb('0x7'));var client=jayson[_0x10cb('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x373106,_0x29f246,_0x44a0e3){return new BPromise(function(_0x4f3684,_0x1f005f){return client['request'](_0x373106,_0x44a0e3)[_0x10cb('0x9')](function(_0x4aaf31){logger[_0x10cb('0xa')]('SquareRecording,\x20%s,\x20%s',_0x29f246,_0x10cb('0xb'));logger[_0x10cb('0xc')](_0x10cb('0xd'),_0x29f246,'request\x20sent',JSON[_0x10cb('0xe')](_0x4aaf31));if(_0x4aaf31[_0x10cb('0xf')]){if(_0x4aaf31['error'][_0x10cb('0x10')]===0x1f4){logger[_0x10cb('0xf')]('SquareRecording,\x20%s,\x20%s',_0x29f246,_0x4aaf31[_0x10cb('0xf')]['message']);return _0x1f005f(_0x4aaf31[_0x10cb('0xf')]['message']);}logger['error']('SquareRecording,\x20%s,\x20%s',_0x29f246,_0x4aaf31[_0x10cb('0xf')][_0x10cb('0x11')]);return _0x4f3684(_0x4aaf31['error'][_0x10cb('0x11')]);}else{logger[_0x10cb('0xa')](_0x10cb('0x12'),_0x29f246,_0x10cb('0xb'));_0x4f3684(_0x4aaf31['result'][_0x10cb('0x11')]);}})[_0x10cb('0x13')](function(_0x1234ad){logger[_0x10cb('0xf')](_0x10cb('0x12'),_0x29f246,_0x1234ad);_0x1f005f(_0x1234ad);});});}exports[_0x10cb('0x14')]=function(_0x22a59b){var _0x484eb0=this;return new Promise(function(_0x588e4f,_0x270dd1){return db['SquareRecording'][_0x10cb('0x15')](_0x22a59b[_0x10cb('0x16')],{'raw':_0x22a59b['options']?_0x22a59b['options'][_0x10cb('0x17')]===undefined?!![]:![]:!![]})[_0x10cb('0x9')](function(_0x36b2c6){logger[_0x10cb('0xa')](_0x10cb('0x14'),_0x22a59b);logger[_0x10cb('0xc')](_0x10cb('0x14'),_0x22a59b,JSON[_0x10cb('0xe')](_0x36b2c6));_0x588e4f(_0x36b2c6);})[_0x10cb('0x13')](function(_0xf33a1c){logger['error'](_0x10cb('0x14'),_0xf33a1c[_0x10cb('0x11')],_0x22a59b);_0x270dd1(_0x484eb0[_0x10cb('0xf')](0x1f4,_0xf33a1c[_0x10cb('0x11')]));});});};
\ No newline at end of file
index 91579a0..bd257a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x4d28ca,_0x44aa80){var _0x130e0d=function(_0x290b01){while(--_0x290b01){_0x4d28ca['push'](_0x4d28ca['shift']());}};_0x130e0d(++_0x44aa80);}(_0xe706,0xa3));var _0x6e70=function(_0x578c1f,_0x5c52fc){_0x578c1f=_0x578c1f-0x0;var _0x39bef2=_0xe706[_0x578c1f];return _0x39bef2;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0xcfeff4,_0x3f2e19){var _0xb2fadc=function(_0x4cd013){while(--_0x4cd013){_0xcfeff4['push'](_0xcfeff4['shift']());}};_0xb2fadc(++_0x3f2e19);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 50e425e..21bb2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf74c=['DATE','BOOLEAN','sequelize','exports','STRING'];(function(_0x216e07,_0x59581a){var _0x73b29f=function(_0xa26b7f){while(--_0xa26b7f){_0x216e07['push'](_0x216e07['shift']());}};_0x73b29f(++_0x59581a);}(_0xf74c,0x129));var _0xcf74=function(_0x1aef24,_0x3f29d4){_0x1aef24=_0x1aef24-0x0;var _0x28324b=_0xf74c[_0x1aef24];return _0x28324b;};'use strict';var Sequelize=require(_0xcf74('0x0'));module[_0xcf74('0x1')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0xcf74('0x2')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xcf74('0x2')]},'language':{'type':Sequelize[_0xcf74('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xcf74('0x2')]},'version':{'type':Sequelize[_0xcf74('0x2')]},'callerid':{'type':Sequelize[_0xcf74('0x2')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0xcf74('0x2')]},'callingani2':{'type':Sequelize[_0xcf74('0x2')]},'callington':{'type':Sequelize[_0xcf74('0x2')]},'callingtns':{'type':Sequelize[_0xcf74('0x2')]},'dnid':{'type':Sequelize[_0xcf74('0x2')]},'rdnis':{'type':Sequelize[_0xcf74('0x2')]},'context':{'type':Sequelize[_0xcf74('0x2')]},'extension':{'type':Sequelize[_0xcf74('0x2')]},'priority':{'type':Sequelize[_0xcf74('0x2')]},'enhanced':{'type':Sequelize[_0xcf74('0x2')]},'accountcode':{'type':Sequelize[_0xcf74('0x2')]},'threadid':{'type':Sequelize[_0xcf74('0x2')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xcf74('0x3')]},'leaveAt':{'type':Sequelize[_0xcf74('0x3')]},'bot':{'type':Sequelize[_0xcf74('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc121=['BOOLEAN','sequelize','STRING','DATE'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xc121,0x18d));var _0x1c12=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0xc121[_0x1762b4];return _0x29beda;};'use strict';var Sequelize=require(_0x1c12('0x0'));module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x1c12('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x1c12('0x1')]},'language':{'type':Sequelize[_0x1c12('0x1')]},'type':{'type':Sequelize[_0x1c12('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x1c12('0x1')]},'callerid':{'type':Sequelize[_0x1c12('0x1')]},'calleridname':{'type':Sequelize[_0x1c12('0x1')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x1c12('0x1')]},'callington':{'type':Sequelize[_0x1c12('0x1')]},'callingtns':{'type':Sequelize[_0x1c12('0x1')]},'dnid':{'type':Sequelize[_0x1c12('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x1c12('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x1c12('0x1')]},'accountcode':{'type':Sequelize[_0x1c12('0x1')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x1c12('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x1c12('0x2')]},'bot':{'type':Sequelize[_0x1c12('0x3')],'defaultValue':![]}};
\ No newline at end of file
index e01ae97..8d9147a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x560a=['order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','error','stack','name','send','index','SquareReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length'];(function(_0x4fa9b8,_0x15bba1){var _0x2aa54c=function(_0x235870){while(--_0x235870){_0x4fa9b8['push'](_0x4fa9b8['shift']());}};_0x2aa54c(++_0x15bba1);}(_0x560a,0x1c8));var _0xa560=function(_0x1d0009,_0x10959e){_0x1d0009=_0x1d0009-0x0;var _0x2c95c9=_0x560a[_0x1d0009];return _0x2c95c9;};'use strict';var emlformat=require(_0xa560('0x0'));var rimraf=require(_0xa560('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa560('0x2'));var rp=require(_0xa560('0x3'));var moment=require(_0xa560('0x4'));var BPromise=require(_0xa560('0x5'));var Mustache=require(_0xa560('0x6'));var util=require(_0xa560('0x7'));var path=require(_0xa560('0x8'));var sox=require('sox');var csv=require(_0xa560('0x9'));var ejs=require(_0xa560('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa560('0xb'));var squel=require(_0xa560('0xc'));var crypto=require(_0xa560('0xd'));var jsforce=require(_0xa560('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa560('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa560('0xf'));var authService=require(_0xa560('0x10'));var qs=require(_0xa560('0x11'));var as=require(_0xa560('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa560('0x13'))(_0xa560('0x14'));var utils=require(_0xa560('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa560('0x16'))['db'];function respondWithStatusCode(_0x5e2024,_0xb28fd8){_0xb28fd8=_0xb28fd8||0xcc;return function(_0x383e09){if(_0x383e09){return _0x5e2024[_0xa560('0x17')](_0xb28fd8);}return _0x5e2024[_0xa560('0x18')](_0xb28fd8)[_0xa560('0x19')]();};}function respondWithResult(_0x42a4c0,_0x1a9232){_0x1a9232=_0x1a9232||0xc8;return function(_0x109e23){if(_0x109e23){return _0x42a4c0[_0xa560('0x18')](_0x1a9232)['json'](_0x109e23);}};}function respondWithFilteredResult(_0x1c4199,_0x250a59){return function(_0x17479c){if(_0x17479c){var _0x4cddb0=typeof _0x250a59[_0xa560('0x1a')]===_0xa560('0x1b')&&typeof _0x250a59[_0xa560('0x1c')]===_0xa560('0x1b');var _0x139ce0=_0x17479c[_0xa560('0x1d')];var _0x402a13=_0x4cddb0?0x0:_0x250a59[_0xa560('0x1a')];var _0x50132f=_0x4cddb0?_0x17479c[_0xa560('0x1d')]:_0x250a59[_0xa560('0x1a')]+_0x250a59[_0xa560('0x1c')];var _0x46a334;if(_0x50132f>=_0x139ce0){_0x50132f=_0x139ce0;_0x46a334=0xc8;}else{_0x46a334=0xce;}_0x1c4199[_0xa560('0x18')](_0x46a334);return _0x1c4199[_0xa560('0x1e')](_0xa560('0x1f'),_0x402a13+'-'+_0x50132f+'/'+_0x139ce0)[_0xa560('0x20')](_0x17479c);}return null;};}function patchUpdates(_0x67b5dd){return function(_0x3dcbb6){try{jsonpatch['apply'](_0x3dcbb6,_0x67b5dd,!![]);}catch(_0x17bad5){return BPromise['reject'](_0x17bad5);}return _0x3dcbb6[_0xa560('0x21')]();};}function saveUpdates(_0x521d4d,_0x506671){return function(_0x228d9f){if(_0x228d9f){return _0x228d9f[_0xa560('0x22')](_0x521d4d)[_0xa560('0x23')](function(_0x21ddca){return _0x21ddca;});}return null;};}function removeEntity(_0x343cf1,_0x240bdf){return function(_0x51743e){if(_0x51743e){return _0x51743e[_0xa560('0x24')]()[_0xa560('0x23')](function(){_0x343cf1[_0xa560('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa4ccbe,_0x20af71){return function(_0x524509){if(!_0x524509){_0xa4ccbe['sendStatus'](0x194);}return _0x524509;};}function handleError(_0x419931,_0xf03e8b){_0xf03e8b=_0xf03e8b||0x1f4;return function(_0x22f493){logger[_0xa560('0x25')](_0x22f493[_0xa560('0x26')]);if(_0x22f493[_0xa560('0x27')]){delete _0x22f493[_0xa560('0x27')];}_0x419931[_0xa560('0x18')](_0xf03e8b)[_0xa560('0x28')](_0x22f493);};}exports[_0xa560('0x29')]=function(_0x38576b,_0x3894b8){var _0x2d1746={},_0x3a05f5={},_0xcb6146={'count':0x0,'rows':[]};var _0x46d518=_['map'](db[_0xa560('0x2a')][_0xa560('0x2b')],function(_0x49c1c1){return{'name':_0x49c1c1['fieldName'],'type':_0x49c1c1[_0xa560('0x2c')][_0xa560('0x2d')]};});_0x3a05f5[_0xa560('0x2e')]=_[_0xa560('0x2f')](_0x46d518,'name');_0x3a05f5[_0xa560('0x30')]=_[_0xa560('0x31')](_0x38576b[_0xa560('0x30')]);_0x3a05f5[_0xa560('0x32')]=_[_0xa560('0x33')](_0x3a05f5[_0xa560('0x2e')],_0x3a05f5[_0xa560('0x30')]);_0x2d1746[_0xa560('0x34')]=_['intersection'](_0x3a05f5['model'],qs[_0xa560('0x35')](_0x38576b[_0xa560('0x30')][_0xa560('0x35')]));_0x2d1746[_0xa560('0x34')]=_0x2d1746['attributes'][_0xa560('0x36')]?_0x2d1746[_0xa560('0x34')]:_0x3a05f5[_0xa560('0x2e')];if(!_0x38576b[_0xa560('0x30')]['hasOwnProperty']('nolimit')){_0x2d1746[_0xa560('0x1c')]=qs[_0xa560('0x1c')](_0x38576b['query']['limit']);_0x2d1746[_0xa560('0x1a')]=qs[_0xa560('0x1a')](_0x38576b[_0xa560('0x30')]['offset']);}_0x2d1746[_0xa560('0x37')]=qs[_0xa560('0x38')](_0x38576b[_0xa560('0x30')][_0xa560('0x38')]);_0x2d1746[_0xa560('0x39')]=qs[_0xa560('0x32')](_[_0xa560('0x3a')](_0x38576b[_0xa560('0x30')],_0x3a05f5[_0xa560('0x32')]),_0x46d518);if(_0x38576b[_0xa560('0x30')]['filter']){_0x2d1746[_0xa560('0x39')]=_[_0xa560('0x3b')](_0x2d1746['where'],{'$or':_['map'](_0x46d518,function(_0x50c6a0){if(_0x50c6a0[_0xa560('0x2c')]!==_0xa560('0x3c')){var _0x171ad0={};_0x171ad0[_0x50c6a0['name']]={'$like':'%'+_0x38576b[_0xa560('0x30')]['filter']+'%'};return _0x171ad0;}})});}_0x2d1746=_['merge']({},_0x2d1746,_0x38576b[_0xa560('0x3d')]);var _0x36dbae={'where':_0x2d1746['where']};return db[_0xa560('0x2a')][_0xa560('0x1d')](_0x36dbae)[_0xa560('0x23')](function(_0x257312){_0xcb6146[_0xa560('0x1d')]=_0x257312;if(_0x38576b[_0xa560('0x30')][_0xa560('0x3e')]){_0x2d1746[_0xa560('0x3f')]=[{'all':!![]}];}return db['SquareReport'][_0xa560('0x40')](_0x2d1746);})[_0xa560('0x23')](function(_0x291bd7){_0xcb6146[_0xa560('0x41')]=_0x291bd7;return _0xcb6146;})['then'](respondWithFilteredResult(_0x3894b8,_0x2d1746))[_0xa560('0x42')](handleError(_0x3894b8,null));};exports[_0xa560('0x43')]=function(_0xce1dc1,_0x4e70b0){var _0x4d46ae={'raw':!![],'where':{'id':_0xce1dc1[_0xa560('0x44')]['id']}},_0x404edc={};_0x404edc[_0xa560('0x2e')]=_[_0xa560('0x31')](db[_0xa560('0x2a')]['rawAttributes']);_0x404edc[_0xa560('0x30')]=_[_0xa560('0x31')](_0xce1dc1[_0xa560('0x30')]);_0x404edc[_0xa560('0x32')]=_[_0xa560('0x33')](_0x404edc[_0xa560('0x2e')],_0x404edc['query']);_0x4d46ae[_0xa560('0x34')]=_[_0xa560('0x33')](_0x404edc[_0xa560('0x2e')],qs[_0xa560('0x35')](_0xce1dc1[_0xa560('0x30')][_0xa560('0x35')]));_0x4d46ae[_0xa560('0x34')]=_0x4d46ae[_0xa560('0x34')][_0xa560('0x36')]?_0x4d46ae[_0xa560('0x34')]:_0x404edc[_0xa560('0x2e')];if(_0xce1dc1[_0xa560('0x30')][_0xa560('0x3e')]){_0x4d46ae['include']=[{'all':!![]}];}_0x4d46ae=_['merge']({},_0x4d46ae,_0xce1dc1['options']);return db[_0xa560('0x2a')][_0xa560('0x45')](_0x4d46ae)[_0xa560('0x23')](handleEntityNotFound(_0x4e70b0,null))[_0xa560('0x23')](respondWithResult(_0x4e70b0,null))[_0xa560('0x42')](handleError(_0x4e70b0,null));};exports[_0xa560('0x46')]=function(_0x3de480,_0x36c6fb){return db['SquareReport'][_0xa560('0x46')](_0x3de480[_0xa560('0x47')],{})['then'](respondWithResult(_0x36c6fb,0xc9))[_0xa560('0x42')](handleError(_0x36c6fb,null));};exports[_0xa560('0x22')]=function(_0x4e3f4a,_0x4e146c){if(_0x4e3f4a[_0xa560('0x47')]['id']){delete _0x4e3f4a[_0xa560('0x47')]['id'];}return db[_0xa560('0x2a')]['find']({'where':{'id':_0x4e3f4a[_0xa560('0x44')]['id']}})[_0xa560('0x23')](handleEntityNotFound(_0x4e146c,null))[_0xa560('0x23')](saveUpdates(_0x4e3f4a[_0xa560('0x47')],null))[_0xa560('0x23')](respondWithResult(_0x4e146c,null))[_0xa560('0x42')](handleError(_0x4e146c,null));};exports[_0xa560('0x24')]=function(_0x27213c,_0xfbe27a){return db[_0xa560('0x2a')][_0xa560('0x45')]({'where':{'id':_0x27213c[_0xa560('0x44')]['id']}})[_0xa560('0x23')](handleEntityNotFound(_0xfbe27a,null))[_0xa560('0x23')](removeEntity(_0xfbe27a,null))[_0xa560('0x42')](handleError(_0xfbe27a,null));};exports[_0xa560('0x48')]=function(_0x29d035,_0x1f6831){return db[_0xa560('0x2a')][_0xa560('0x48')]()[_0xa560('0x23')](respondWithResult(_0x1f6831,null))[_0xa560('0x42')](handleError(_0x1f6831,null));};
\ No newline at end of file
+var _0xe927=['lodash','squel','desk.js','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','end','stack','name','index','map','rawAttributes','fieldName','model','query','keys','intersection','fields','attributes','length','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','SquareReport','includeAll','include','findAll','rows','catch','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','to-csv','ejs','fs-extra'];(function(_0x1ab4d5,_0x4e37a0){var _0x147a75=function(_0x4b3a8b){while(--_0x4b3a8b){_0x1ab4d5['push'](_0x1ab4d5['shift']());}};_0x147a75(++_0x4e37a0);}(_0xe927,0xbf));var _0x7e92=function(_0x21e79a,_0x5a7990){_0x21e79a=_0x21e79a-0x0;var _0x506c02=_0xe927[_0x21e79a];return _0x506c02;};'use strict';var emlformat=require(_0x7e92('0x0'));var rimraf=require(_0x7e92('0x1'));var zipdir=require(_0x7e92('0x2'));var jsonpatch=require(_0x7e92('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7e92('0x4'));var Mustache=require('mustache');var util=require(_0x7e92('0x5'));var path=require(_0x7e92('0x6'));var sox=require('sox');var csv=require(_0x7e92('0x7'));var ejs=require(_0x7e92('0x8'));var fs=require('fs');var fs_extra=require(_0x7e92('0x9'));var _=require(_0x7e92('0xa'));var squel=require(_0x7e92('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7e92('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7e92('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7e92('0xe'))(_0x7e92('0xf'));var utils=require(_0x7e92('0x10'));var config=require(_0x7e92('0x11'));var licenseUtil=require(_0x7e92('0x12'));var db=require(_0x7e92('0x13'))['db'];function respondWithStatusCode(_0x4bc15b,_0x489b56){_0x489b56=_0x489b56||0xcc;return function(_0x459f3c){if(_0x459f3c){return _0x4bc15b[_0x7e92('0x14')](_0x489b56);}return _0x4bc15b[_0x7e92('0x15')](_0x489b56)['end']();};}function respondWithResult(_0x23b2d1,_0x2672b3){_0x2672b3=_0x2672b3||0xc8;return function(_0x27a585){if(_0x27a585){return _0x23b2d1[_0x7e92('0x15')](_0x2672b3)[_0x7e92('0x16')](_0x27a585);}};}function respondWithFilteredResult(_0x2c7a23,_0x3be43b){return function(_0x4833c6){if(_0x4833c6){var _0x260edd=typeof _0x3be43b[_0x7e92('0x17')]===_0x7e92('0x18')&&typeof _0x3be43b['limit']===_0x7e92('0x18');var _0x111db8=_0x4833c6[_0x7e92('0x19')];var _0x2145bb=_0x260edd?0x0:_0x3be43b['offset'];var _0x4e636f=_0x260edd?_0x4833c6[_0x7e92('0x19')]:_0x3be43b[_0x7e92('0x17')]+_0x3be43b[_0x7e92('0x1a')];var _0x2cab64;if(_0x4e636f>=_0x111db8){_0x4e636f=_0x111db8;_0x2cab64=0xc8;}else{_0x2cab64=0xce;}_0x2c7a23[_0x7e92('0x15')](_0x2cab64);return _0x2c7a23[_0x7e92('0x1b')](_0x7e92('0x1c'),_0x2145bb+'-'+_0x4e636f+'/'+_0x111db8)[_0x7e92('0x16')](_0x4833c6);}return null;};}function patchUpdates(_0xa3cfab){return function(_0x2b4e2d){try{jsonpatch['apply'](_0x2b4e2d,_0xa3cfab,!![]);}catch(_0x30ffab){return BPromise[_0x7e92('0x1d')](_0x30ffab);}return _0x2b4e2d[_0x7e92('0x1e')]();};}function saveUpdates(_0x51dc79,_0x4dcea5){return function(_0x5885c7){if(_0x5885c7){return _0x5885c7[_0x7e92('0x1f')](_0x51dc79)[_0x7e92('0x20')](function(_0x573e9d){return _0x573e9d;});}return null;};}function removeEntity(_0x3626b8,_0xeced62){return function(_0x13c27c){if(_0x13c27c){return _0x13c27c['destroy']()[_0x7e92('0x20')](function(){_0x3626b8[_0x7e92('0x15')](0xcc)[_0x7e92('0x21')]();});}};}function handleEntityNotFound(_0x14312e,_0x4e4cfb){return function(_0x1508a6){if(!_0x1508a6){_0x14312e[_0x7e92('0x14')](0x194);}return _0x1508a6;};}function handleError(_0x2c0c5a,_0x3ae66b){_0x3ae66b=_0x3ae66b||0x1f4;return function(_0x35b275){logger['error'](_0x35b275[_0x7e92('0x22')]);if(_0x35b275[_0x7e92('0x23')]){delete _0x35b275[_0x7e92('0x23')];}_0x2c0c5a[_0x7e92('0x15')](_0x3ae66b)['send'](_0x35b275);};}exports[_0x7e92('0x24')]=function(_0x53a3e7,_0x3e46e9){var _0x5f4116={},_0x33827f={},_0x3c1438={'count':0x0,'rows':[]};var _0x1518e9=_[_0x7e92('0x25')](db['SquareReport'][_0x7e92('0x26')],function(_0x2301c7){return{'name':_0x2301c7[_0x7e92('0x27')],'type':_0x2301c7['type']['key']};});_0x33827f[_0x7e92('0x28')]=_[_0x7e92('0x25')](_0x1518e9,'name');_0x33827f[_0x7e92('0x29')]=_[_0x7e92('0x2a')](_0x53a3e7[_0x7e92('0x29')]);_0x33827f['filters']=_[_0x7e92('0x2b')](_0x33827f[_0x7e92('0x28')],_0x33827f[_0x7e92('0x29')]);_0x5f4116['attributes']=_[_0x7e92('0x2b')](_0x33827f['model'],qs[_0x7e92('0x2c')](_0x53a3e7[_0x7e92('0x29')][_0x7e92('0x2c')]));_0x5f4116[_0x7e92('0x2d')]=_0x5f4116[_0x7e92('0x2d')][_0x7e92('0x2e')]?_0x5f4116[_0x7e92('0x2d')]:_0x33827f[_0x7e92('0x28')];if(!_0x53a3e7[_0x7e92('0x29')]['hasOwnProperty'](_0x7e92('0x2f'))){_0x5f4116[_0x7e92('0x1a')]=qs[_0x7e92('0x1a')](_0x53a3e7[_0x7e92('0x29')][_0x7e92('0x1a')]);_0x5f4116[_0x7e92('0x17')]=qs[_0x7e92('0x17')](_0x53a3e7[_0x7e92('0x29')][_0x7e92('0x17')]);}_0x5f4116['order']=qs[_0x7e92('0x30')](_0x53a3e7['query'][_0x7e92('0x30')]);_0x5f4116[_0x7e92('0x31')]=qs['filters'](_['pick'](_0x53a3e7[_0x7e92('0x29')],_0x33827f[_0x7e92('0x32')]),_0x1518e9);if(_0x53a3e7[_0x7e92('0x29')][_0x7e92('0x33')]){_0x5f4116['where']=_[_0x7e92('0x34')](_0x5f4116['where'],{'$or':_[_0x7e92('0x25')](_0x1518e9,function(_0x1e10de){if(_0x1e10de['type']!==_0x7e92('0x35')){var _0x1bb23d={};_0x1bb23d[_0x1e10de[_0x7e92('0x23')]]={'$like':'%'+_0x53a3e7[_0x7e92('0x29')]['filter']+'%'};return _0x1bb23d;}})});}_0x5f4116=_[_0x7e92('0x34')]({},_0x5f4116,_0x53a3e7[_0x7e92('0x36')]);var _0x37a167={'where':_0x5f4116[_0x7e92('0x31')]};return db[_0x7e92('0x37')][_0x7e92('0x19')](_0x37a167)[_0x7e92('0x20')](function(_0x4e2547){_0x3c1438[_0x7e92('0x19')]=_0x4e2547;if(_0x53a3e7['query'][_0x7e92('0x38')]){_0x5f4116[_0x7e92('0x39')]=[{'all':!![]}];}return db['SquareReport'][_0x7e92('0x3a')](_0x5f4116);})[_0x7e92('0x20')](function(_0x12e0ea){_0x3c1438[_0x7e92('0x3b')]=_0x12e0ea;return _0x3c1438;})[_0x7e92('0x20')](respondWithFilteredResult(_0x3e46e9,_0x5f4116))[_0x7e92('0x3c')](handleError(_0x3e46e9,null));};exports['show']=function(_0x8575e3,_0x2d4cc1){var _0x3f9f3d={'raw':!![],'where':{'id':_0x8575e3['params']['id']}},_0x5a5fb7={};_0x5a5fb7[_0x7e92('0x28')]=_[_0x7e92('0x2a')](db[_0x7e92('0x37')][_0x7e92('0x26')]);_0x5a5fb7['query']=_[_0x7e92('0x2a')](_0x8575e3[_0x7e92('0x29')]);_0x5a5fb7[_0x7e92('0x32')]=_[_0x7e92('0x2b')](_0x5a5fb7[_0x7e92('0x28')],_0x5a5fb7[_0x7e92('0x29')]);_0x3f9f3d['attributes']=_['intersection'](_0x5a5fb7[_0x7e92('0x28')],qs[_0x7e92('0x2c')](_0x8575e3[_0x7e92('0x29')][_0x7e92('0x2c')]));_0x3f9f3d[_0x7e92('0x2d')]=_0x3f9f3d[_0x7e92('0x2d')][_0x7e92('0x2e')]?_0x3f9f3d[_0x7e92('0x2d')]:_0x5a5fb7[_0x7e92('0x28')];if(_0x8575e3[_0x7e92('0x29')][_0x7e92('0x38')]){_0x3f9f3d['include']=[{'all':!![]}];}_0x3f9f3d=_[_0x7e92('0x34')]({},_0x3f9f3d,_0x8575e3[_0x7e92('0x36')]);return db[_0x7e92('0x37')][_0x7e92('0x3d')](_0x3f9f3d)[_0x7e92('0x20')](handleEntityNotFound(_0x2d4cc1,null))[_0x7e92('0x20')](respondWithResult(_0x2d4cc1,null))[_0x7e92('0x3c')](handleError(_0x2d4cc1,null));};exports[_0x7e92('0x3e')]=function(_0x3e2837,_0x32073e){return db[_0x7e92('0x37')][_0x7e92('0x3e')](_0x3e2837['body'],{})[_0x7e92('0x20')](respondWithResult(_0x32073e,0xc9))[_0x7e92('0x3c')](handleError(_0x32073e,null));};exports[_0x7e92('0x1f')]=function(_0x35e9e3,_0x40a3e9){if(_0x35e9e3[_0x7e92('0x3f')]['id']){delete _0x35e9e3[_0x7e92('0x3f')]['id'];}return db[_0x7e92('0x37')]['find']({'where':{'id':_0x35e9e3[_0x7e92('0x40')]['id']}})[_0x7e92('0x20')](handleEntityNotFound(_0x40a3e9,null))[_0x7e92('0x20')](saveUpdates(_0x35e9e3[_0x7e92('0x3f')],null))[_0x7e92('0x20')](respondWithResult(_0x40a3e9,null))[_0x7e92('0x3c')](handleError(_0x40a3e9,null));};exports[_0x7e92('0x41')]=function(_0x306067,_0x536234){return db[_0x7e92('0x37')]['find']({'where':{'id':_0x306067[_0x7e92('0x40')]['id']}})[_0x7e92('0x20')](handleEntityNotFound(_0x536234,null))['then'](removeEntity(_0x536234,null))[_0x7e92('0x3c')](handleError(_0x536234,null));};exports[_0x7e92('0x42')]=function(_0x30e772,_0x35ecdc){return db[_0x7e92('0x37')][_0x7e92('0x42')]()[_0x7e92('0x20')](respondWithResult(_0x35ecdc,null))[_0x7e92('0x3c')](handleError(_0x35ecdc,null));};
\ No newline at end of file
index e9093d1..b1060d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd85a=['../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name','leaveAt','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x4d0e7b,_0x621f88){var _0x4d9359=function(_0x26efdd){while(--_0x26efdd){_0x4d0e7b['push'](_0x4d0e7b['shift']());}};_0x4d9359(++_0x621f88);}(_0xd85a,0x109));var _0xad85=function(_0x3a1fd6,_0x2a707a){_0x3a1fd6=_0x3a1fd6-0x0;var _0x12316c=_0xd85a[_0x3a1fd6];return _0x12316c;};'use strict';var _=require('lodash');var util=require(_0xad85('0x0'));var logger=require(_0xad85('0x1'))('api');var moment=require(_0xad85('0x2'));var BPromise=require(_0xad85('0x3'));var rp=require(_0xad85('0x4'));var fs=require('fs');var path=require(_0xad85('0x5'));var rimraf=require(_0xad85('0x6'));var config=require(_0xad85('0x7'));var attributes=require(_0xad85('0x8'));module[_0xad85('0x9')]=function(_0x5e4b2b,_0x172e4d){return _0x5e4b2b[_0xad85('0xa')](_0xad85('0xb'),attributes,{'tableName':_0xad85('0xc'),'paranoid':![],'indexes':[{'name':_0xad85('0xd'),'fields':['uniqueid',_0xad85('0xe')]},{'name':_0xad85('0xf'),'fields':[_0xad85('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x62e9=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./squareReport.attributes','exports','define','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util'];(function(_0x52c61b,_0x1eeb5f){var _0xb2026d=function(_0x3af192){while(--_0x3af192){_0x52c61b['push'](_0x52c61b['shift']());}};_0xb2026d(++_0x1eeb5f);}(_0x62e9,0x11e));var _0x962e=function(_0x5ef30f,_0x62b91c){_0x5ef30f=_0x5ef30f-0x0;var _0x56277d=_0x62e9[_0x5ef30f];return _0x56277d;};'use strict';var _=require(_0x962e('0x0'));var util=require(_0x962e('0x1'));var logger=require(_0x962e('0x2'))('api');var moment=require(_0x962e('0x3'));var BPromise=require(_0x962e('0x4'));var rp=require(_0x962e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x962e('0x6'));var config=require(_0x962e('0x7'));var attributes=require(_0x962e('0x8'));module[_0x962e('0x9')]=function(_0x324558,_0x15db87){return _0x324558[_0x962e('0xa')]('SquareReport',attributes,{'tableName':_0x962e('0xb'),'paranoid':![],'indexes':[{'name':_0x962e('0xc'),'fields':[_0x962e('0xd'),_0x962e('0xe')]},{'name':'leaveAt','fields':[_0x962e('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 529dc8f..6716f56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6310=['SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw','where','attributes','UpdateSquareReport','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','request','then','info'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6310,0x17a));var _0x0631=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x6310[_0x243b59];return _0x3e1676;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0631('0x0'));var BPromise=require(_0x0631('0x1'));var rs=require(_0x0631('0x2'));var fs=require('fs');var Redis=require(_0x0631('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0631('0x4'));var logger=require('../../config/logger')(_0x0631('0x5'));var config=require('../../config/environment');var jayson=require(_0x0631('0x6'));var client=jayson[_0x0631('0x7')][_0x0631('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1012cb,_0x4a5e1a,_0x38255b){return new BPromise(function(_0x47393b,_0x53fb9f){return client[_0x0631('0x9')](_0x1012cb,_0x38255b)[_0x0631('0xa')](function(_0x3ca861){logger[_0x0631('0xb')](_0x0631('0xc'),_0x4a5e1a,_0x0631('0xd'));logger[_0x0631('0xe')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x4a5e1a,_0x0631('0xd'),JSON[_0x0631('0xf')](_0x3ca861));if(_0x3ca861[_0x0631('0x10')]){if(_0x3ca861[_0x0631('0x10')][_0x0631('0x11')]===0x1f4){logger[_0x0631('0x10')](_0x0631('0xc'),_0x4a5e1a,_0x3ca861[_0x0631('0x10')][_0x0631('0x12')]);return _0x53fb9f(_0x3ca861['error']['message']);}logger['error'](_0x0631('0xc'),_0x4a5e1a,_0x3ca861[_0x0631('0x10')][_0x0631('0x12')]);return _0x47393b(_0x3ca861[_0x0631('0x10')][_0x0631('0x12')]);}else{logger[_0x0631('0xb')](_0x0631('0xc'),_0x4a5e1a,'request\x20sent');_0x47393b(_0x3ca861[_0x0631('0x13')][_0x0631('0x12')]);}})[_0x0631('0x14')](function(_0x4ab136){logger[_0x0631('0x10')](_0x0631('0xc'),_0x4a5e1a,_0x4ab136);_0x53fb9f(_0x4ab136);});});}exports[_0x0631('0x15')]=function(_0x33909){var _0x24a0b9=this;return new Promise(function(_0x26b175,_0x1182db){return db[_0x0631('0x16')][_0x0631('0x17')](_0x33909[_0x0631('0x18')],{'raw':_0x33909[_0x0631('0x19')]?_0x33909[_0x0631('0x19')][_0x0631('0x1a')]===undefined?!![]:![]:!![]})[_0x0631('0xa')](function(_0x47acca){logger[_0x0631('0xb')](_0x0631('0x15'),_0x33909);logger[_0x0631('0xe')](_0x0631('0x15'),_0x33909,JSON[_0x0631('0xf')](_0x47acca));_0x26b175(_0x47acca);})[_0x0631('0x14')](function(_0x9aaedc){logger[_0x0631('0x10')](_0x0631('0x15'),_0x9aaedc[_0x0631('0x12')],_0x33909);_0x1182db(_0x24a0b9[_0x0631('0x10')](0x1f4,_0x9aaedc['message']));});});};exports['UpdateSquareReport']=function(_0x5d7169){var _0x21c805=this;return new Promise(function(_0x4e6995,_0x3ae7bf){return db[_0x0631('0x16')]['update'](_0x5d7169['body'],{'raw':_0x5d7169[_0x0631('0x19')]?_0x5d7169[_0x0631('0x19')][_0x0631('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d7169['options']?_0x5d7169['options'][_0x0631('0x1b')]||null:null,'attributes':_0x5d7169['options']?_0x5d7169[_0x0631('0x19')][_0x0631('0x1c')]||null:null,'limit':_0x5d7169[_0x0631('0x19')]?_0x5d7169[_0x0631('0x19')]['limit']||null:null})[_0x0631('0xa')](function(_0x5adc14){logger['info']('UpdateSquareReport',_0x5d7169);logger[_0x0631('0xe')](_0x0631('0x1d'),_0x5d7169,JSON['stringify'](_0x5adc14));_0x4e6995(_0x5adc14);})[_0x0631('0x14')](function(_0x351da5){logger[_0x0631('0x10')]('UpdateSquareReport',_0x351da5[_0x0631('0x12')],_0x5d7169);_0x3ae7bf(_0x21c805[_0x0631('0x10')](0x1f4,_0x351da5[_0x0631('0x12')]));});});};
\ No newline at end of file
+var _0x501e=['where','attributes','limit','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','CreateSquareReport','SquareReport','create','options','raw','UpdateSquareReport','update','body'];(function(_0x5ce566,_0x347a9d){var _0x297835=function(_0x576cef){while(--_0x576cef){_0x5ce566['push'](_0x5ce566['shift']());}};_0x297835(++_0x347a9d);}(_0x501e,0x1d1));var _0xe501=function(_0x3d754f,_0x2751fd){_0x3d754f=_0x3d754f-0x0;var _0x381166=_0x501e[_0x3d754f];return _0x381166;};'use strict';var _=require(_0xe501('0x0'));var util=require('util');var moment=require(_0xe501('0x1'));var BPromise=require('bluebird');var rs=require(_0xe501('0x2'));var fs=require('fs');var Redis=require(_0xe501('0x3'));var db=require(_0xe501('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe501('0x5'))(_0xe501('0x6'));var config=require(_0xe501('0x7'));var jayson=require(_0xe501('0x8'));var client=jayson[_0xe501('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a6344,_0x468a23,_0x5650e1){return new BPromise(function(_0x3910dd,_0x148d1f){return client['request'](_0x5a6344,_0x5650e1)[_0xe501('0xa')](function(_0x510142){logger[_0xe501('0xb')](_0xe501('0xc'),_0x468a23,'request\x20sent');logger[_0xe501('0xd')](_0xe501('0xe'),_0x468a23,'request\x20sent',JSON[_0xe501('0xf')](_0x510142));if(_0x510142[_0xe501('0x10')]){if(_0x510142[_0xe501('0x10')][_0xe501('0x11')]===0x1f4){logger[_0xe501('0x10')](_0xe501('0xc'),_0x468a23,_0x510142[_0xe501('0x10')][_0xe501('0x12')]);return _0x148d1f(_0x510142['error'][_0xe501('0x12')]);}logger[_0xe501('0x10')](_0xe501('0xc'),_0x468a23,_0x510142['error'][_0xe501('0x12')]);return _0x3910dd(_0x510142[_0xe501('0x10')][_0xe501('0x12')]);}else{logger[_0xe501('0xb')]('SquareReport,\x20%s,\x20%s',_0x468a23,_0xe501('0x13'));_0x3910dd(_0x510142[_0xe501('0x14')][_0xe501('0x12')]);}})[_0xe501('0x15')](function(_0x2d8c06){logger[_0xe501('0x10')](_0xe501('0xc'),_0x468a23,_0x2d8c06);_0x148d1f(_0x2d8c06);});});}exports[_0xe501('0x16')]=function(_0x31cd60){var _0x12f3e8=this;return new Promise(function(_0x2ef141,_0x317078){return db[_0xe501('0x17')][_0xe501('0x18')](_0x31cd60['body'],{'raw':_0x31cd60[_0xe501('0x19')]?_0x31cd60[_0xe501('0x19')][_0xe501('0x1a')]===undefined?!![]:![]:!![]})[_0xe501('0xa')](function(_0x461ae2){logger[_0xe501('0xb')](_0xe501('0x16'),_0x31cd60);logger[_0xe501('0xd')](_0xe501('0x16'),_0x31cd60,JSON[_0xe501('0xf')](_0x461ae2));_0x2ef141(_0x461ae2);})[_0xe501('0x15')](function(_0x20d6f8){logger[_0xe501('0x10')](_0xe501('0x16'),_0x20d6f8[_0xe501('0x12')],_0x31cd60);_0x317078(_0x12f3e8[_0xe501('0x10')](0x1f4,_0x20d6f8[_0xe501('0x12')]));});});};exports[_0xe501('0x1b')]=function(_0x22535a){var _0x1bc61c=this;return new Promise(function(_0x22680a,_0x2329dd){return db[_0xe501('0x17')][_0xe501('0x1c')](_0x22535a[_0xe501('0x1d')],{'raw':_0x22535a[_0xe501('0x19')]?_0x22535a[_0xe501('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22535a[_0xe501('0x19')]?_0x22535a[_0xe501('0x19')][_0xe501('0x1e')]||null:null,'attributes':_0x22535a[_0xe501('0x19')]?_0x22535a[_0xe501('0x19')][_0xe501('0x1f')]||null:null,'limit':_0x22535a[_0xe501('0x19')]?_0x22535a[_0xe501('0x19')][_0xe501('0x20')]||null:null})['then'](function(_0x2fbc5e){logger[_0xe501('0xb')](_0xe501('0x1b'),_0x22535a);logger[_0xe501('0xd')](_0xe501('0x1b'),_0x22535a,JSON['stringify'](_0x2fbc5e));_0x22680a(_0x2fbc5e);})[_0xe501('0x15')](function(_0x360c12){logger['error']('UpdateSquareReport',_0x360c12[_0xe501('0x12')],_0x22535a);_0x2329dd(_0x1bc61c['error'](0x1f4,_0x360c12['message']));});});};
\ No newline at end of file
index 57941ce..9e3eb41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1000=['get','/describe','describe','/:id','create','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','isAuthenticated','index'];(function(_0x415e13,_0x19623a){var _0xa3a89=function(_0x43149b){while(--_0x43149b){_0x415e13['push'](_0x415e13['shift']());}};_0xa3a89(++_0x19623a);}(_0x1000,0x9f));var _0x0100=function(_0x2710d4,_0x115fc7){_0x2710d4=_0x2710d4-0x0;var _0x3ca220=_0x1000[_0x2710d4];return _0x3ca220;};'use strict';var multer=require(_0x0100('0x0'));var util=require('util');var path=require(_0x0100('0x1'));var timeout=require(_0x0100('0x2'));var express=require(_0x0100('0x3'));var router=express['Router']();var fs_extra=require(_0x0100('0x4'));var auth=require(_0x0100('0x5'));var interaction=require(_0x0100('0x6'));var config=require(_0x0100('0x7'));var controller=require(_0x0100('0x8'));router['get']('/',auth[_0x0100('0x9')](),controller[_0x0100('0xa')]);router[_0x0100('0xb')](_0x0100('0xc'),auth[_0x0100('0x9')](),controller[_0x0100('0xd')]);router['get'](_0x0100('0xe'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x0100('0x9')](),controller[_0x0100('0xf')]);router['put'](_0x0100('0xe'),auth[_0x0100('0x9')](),controller['update']);router['delete'](_0x0100('0xe'),auth[_0x0100('0x9')](),controller['destroy']);module[_0x0100('0x10')]=router;
\ No newline at end of file
+var _0xdf86=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x4235b3,_0x4295b9){var _0x5a6cc9=function(_0x3cd80d){while(--_0x3cd80d){_0x4235b3['push'](_0x4235b3['shift']());}};_0x5a6cc9(++_0x4295b9);}(_0xdf86,0x104));var _0x6df8=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0xdf86[_0x5c619e];return _0x445cf8;};'use strict';var multer=require(_0x6df8('0x0'));var util=require(_0x6df8('0x1'));var path=require(_0x6df8('0x2'));var timeout=require(_0x6df8('0x3'));var express=require(_0x6df8('0x4'));var router=express[_0x6df8('0x5')]();var fs_extra=require(_0x6df8('0x6'));var auth=require(_0x6df8('0x7'));var interaction=require(_0x6df8('0x8'));var config=require(_0x6df8('0x9'));var controller=require(_0x6df8('0xa'));router[_0x6df8('0xb')]('/',auth[_0x6df8('0xc')](),controller[_0x6df8('0xd')]);router[_0x6df8('0xb')](_0x6df8('0xe'),auth[_0x6df8('0xc')](),controller[_0x6df8('0xf')]);router[_0x6df8('0xb')](_0x6df8('0x10'),auth[_0x6df8('0xc')](),controller[_0x6df8('0x11')]);router['post']('/',auth[_0x6df8('0xc')](),controller[_0x6df8('0x12')]);router['put'](_0x6df8('0x10'),auth['isAuthenticated'](),controller[_0x6df8('0x13')]);router['delete'](_0x6df8('0x10'),auth[_0x6df8('0xc')](),controller[_0x6df8('0x14')]);module[_0x6df8('0x15')]=router;
\ No newline at end of file
index 9c8c139..1154bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b65=['sequelize','exports','STRING','TEXT'];(function(_0x142beb,_0x552967){var _0x5136e7=function(_0x4a0db3){while(--_0x4a0db3){_0x142beb['push'](_0x142beb['shift']());}};_0x5136e7(++_0x552967);}(_0x5b65,0x80));var _0x55b6=function(_0x535d38,_0x27173b){_0x535d38=_0x535d38-0x0;var _0x8ae3ba=_0x5b65[_0x535d38];return _0x8ae3ba;};'use strict';var Sequelize=require(_0x55b6('0x0'));module[_0x55b6('0x1')]={'uniqueid':{'type':Sequelize[_0x55b6('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x55b6('0x2')]},'data':{'type':Sequelize[_0x55b6('0x3')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x55b6('0x2')]}};
\ No newline at end of file
+var _0x885e=['sequelize','exports','STRING','TEXT'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x885e,0xe4));var _0xe885=function(_0x98a3e1,_0x5b3011){_0x98a3e1=_0x98a3e1-0x0;var _0x25cec4=_0x885e[_0x98a3e1];return _0x25cec4;};'use strict';var Sequelize=require(_0xe885('0x0'));module[_0xe885('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0xe885('0x2')]},'application':{'type':Sequelize[_0xe885('0x2')]},'data':{'type':Sequelize[_0xe885('0x3')]},'project_name':{'type':Sequelize[_0xe885('0x2')]},'callerid':{'type':Sequelize[_0xe885('0x2')]}};
\ No newline at end of file
index 4260c37..d07e220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c4=['options','create','body','destroy','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','reject','save','update','then','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','SquareDetailsReport','includeAll','include','findAll','catch','show','params'];(function(_0x2c6ba2,_0x22e9c3){var _0x19f7ca=function(_0x5a7c38){while(--_0x5a7c38){_0x2c6ba2['push'](_0x2c6ba2['shift']());}};_0x19f7ca(++_0x22e9c3);}(_0xc6c4,0x195));var _0x4c6c=function(_0x84ff9a,_0x4f94d0){_0x84ff9a=_0x84ff9a-0x0;var _0x13b23c=_0xc6c4[_0x84ff9a];return _0x13b23c;};'use strict';var emlformat=require(_0x4c6c('0x0'));var rimraf=require(_0x4c6c('0x1'));var zipdir=require(_0x4c6c('0x2'));var jsonpatch=require(_0x4c6c('0x3'));var rp=require(_0x4c6c('0x4'));var moment=require('moment');var BPromise=require(_0x4c6c('0x5'));var Mustache=require('mustache');var util=require(_0x4c6c('0x6'));var path=require(_0x4c6c('0x7'));var sox=require(_0x4c6c('0x8'));var csv=require(_0x4c6c('0x9'));var ejs=require(_0x4c6c('0xa'));var fs=require('fs');var fs_extra=require(_0x4c6c('0xb'));var _=require(_0x4c6c('0xc'));var squel=require(_0x4c6c('0xd'));var crypto=require(_0x4c6c('0xe'));var jsforce=require(_0x4c6c('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x4c6c('0x9'));var querystring=require(_0x4c6c('0x10'));var Papa=require(_0x4c6c('0x11'));var Redis=require(_0x4c6c('0x12'));var authService=require(_0x4c6c('0x13'));var qs=require(_0x4c6c('0x14'));var as=require(_0x4c6c('0x15'));var hardwareService=require(_0x4c6c('0x16'));var logger=require(_0x4c6c('0x17'))(_0x4c6c('0x18'));var utils=require(_0x4c6c('0x19'));var config=require(_0x4c6c('0x1a'));var licenseUtil=require(_0x4c6c('0x1b'));var db=require(_0x4c6c('0x1c'))['db'];function respondWithStatusCode(_0x4b4c8c,_0x2d9073){_0x2d9073=_0x2d9073||0xcc;return function(_0x462fc1){if(_0x462fc1){return _0x4b4c8c[_0x4c6c('0x1d')](_0x2d9073);}return _0x4b4c8c[_0x4c6c('0x1e')](_0x2d9073)['end']();};}function respondWithResult(_0x761588,_0x5102fc){_0x5102fc=_0x5102fc||0xc8;return function(_0xbbae33){if(_0xbbae33){return _0x761588['status'](_0x5102fc)[_0x4c6c('0x1f')](_0xbbae33);}};}function respondWithFilteredResult(_0x5a5a3f,_0x26583a){return function(_0x1f1636){if(_0x1f1636){var _0x1d4863=typeof _0x26583a['offset']==='undefined'&&typeof _0x26583a[_0x4c6c('0x20')]===_0x4c6c('0x21');var _0xa59ca9=_0x1f1636[_0x4c6c('0x22')];var _0x2d8427=_0x1d4863?0x0:_0x26583a[_0x4c6c('0x23')];var _0x5061e5=_0x1d4863?_0x1f1636[_0x4c6c('0x22')]:_0x26583a[_0x4c6c('0x23')]+_0x26583a['limit'];var _0x489663;if(_0x5061e5>=_0xa59ca9){_0x5061e5=_0xa59ca9;_0x489663=0xc8;}else{_0x489663=0xce;}_0x5a5a3f[_0x4c6c('0x1e')](_0x489663);return _0x5a5a3f[_0x4c6c('0x24')]('Content-Range',_0x2d8427+'-'+_0x5061e5+'/'+_0xa59ca9)[_0x4c6c('0x1f')](_0x1f1636);}return null;};}function patchUpdates(_0x183633){return function(_0x301711){try{jsonpatch['apply'](_0x301711,_0x183633,!![]);}catch(_0xf9e82b){return BPromise[_0x4c6c('0x25')](_0xf9e82b);}return _0x301711[_0x4c6c('0x26')]();};}function saveUpdates(_0x466987,_0x464956){return function(_0x17e915){if(_0x17e915){return _0x17e915[_0x4c6c('0x27')](_0x466987)[_0x4c6c('0x28')](function(_0x3864fc){return _0x3864fc;});}return null;};}function removeEntity(_0x23e08d,_0x2391d2){return function(_0x103d0b){if(_0x103d0b){return _0x103d0b['destroy']()[_0x4c6c('0x28')](function(){_0x23e08d[_0x4c6c('0x1e')](0xcc)[_0x4c6c('0x29')]();});}};}function handleEntityNotFound(_0x28e5cd,_0x33c7b9){return function(_0x6b86f6){if(!_0x6b86f6){_0x28e5cd[_0x4c6c('0x1d')](0x194);}return _0x6b86f6;};}function handleError(_0x4f1ec8,_0x4d6153){_0x4d6153=_0x4d6153||0x1f4;return function(_0xd7e703){logger['error'](_0xd7e703[_0x4c6c('0x2a')]);if(_0xd7e703[_0x4c6c('0x2b')]){delete _0xd7e703['name'];}_0x4f1ec8['status'](_0x4d6153)[_0x4c6c('0x2c')](_0xd7e703);};}exports[_0x4c6c('0x2d')]=function(_0x1ca095,_0x4359ad){var _0x2bd6dd={},_0x4f02fc={},_0x19e7d9={'count':0x0,'rows':[]};var _0x495abb=_[_0x4c6c('0x2e')](db['SquareDetailsReport'][_0x4c6c('0x2f')],function(_0x4f439c){return{'name':_0x4f439c[_0x4c6c('0x30')],'type':_0x4f439c[_0x4c6c('0x31')][_0x4c6c('0x32')]};});_0x4f02fc['model']=_[_0x4c6c('0x2e')](_0x495abb,_0x4c6c('0x2b'));_0x4f02fc[_0x4c6c('0x33')]=_[_0x4c6c('0x34')](_0x1ca095[_0x4c6c('0x33')]);_0x4f02fc[_0x4c6c('0x35')]=_[_0x4c6c('0x36')](_0x4f02fc[_0x4c6c('0x37')],_0x4f02fc[_0x4c6c('0x33')]);_0x2bd6dd[_0x4c6c('0x38')]=_['intersection'](_0x4f02fc[_0x4c6c('0x37')],qs[_0x4c6c('0x39')](_0x1ca095[_0x4c6c('0x33')][_0x4c6c('0x39')]));_0x2bd6dd[_0x4c6c('0x38')]=_0x2bd6dd['attributes'][_0x4c6c('0x3a')]?_0x2bd6dd['attributes']:_0x4f02fc[_0x4c6c('0x37')];if(!_0x1ca095[_0x4c6c('0x33')][_0x4c6c('0x3b')](_0x4c6c('0x3c'))){_0x2bd6dd['limit']=qs[_0x4c6c('0x20')](_0x1ca095[_0x4c6c('0x33')][_0x4c6c('0x20')]);_0x2bd6dd['offset']=qs['offset'](_0x1ca095[_0x4c6c('0x33')][_0x4c6c('0x23')]);}_0x2bd6dd[_0x4c6c('0x3d')]=qs['sort'](_0x1ca095['query'][_0x4c6c('0x3e')]);_0x2bd6dd[_0x4c6c('0x3f')]=qs[_0x4c6c('0x35')](_[_0x4c6c('0x40')](_0x1ca095[_0x4c6c('0x33')],_0x4f02fc[_0x4c6c('0x35')]),_0x495abb);if(_0x1ca095[_0x4c6c('0x33')]['filter']){_0x2bd6dd[_0x4c6c('0x3f')]=_[_0x4c6c('0x41')](_0x2bd6dd[_0x4c6c('0x3f')],{'$or':_[_0x4c6c('0x2e')](_0x495abb,function(_0x42af20){if(_0x42af20[_0x4c6c('0x31')]!==_0x4c6c('0x42')){var _0x8381f4={};_0x8381f4[_0x42af20[_0x4c6c('0x2b')]]={'$like':'%'+_0x1ca095[_0x4c6c('0x33')][_0x4c6c('0x43')]+'%'};return _0x8381f4;}})});}_0x2bd6dd=_[_0x4c6c('0x41')]({},_0x2bd6dd,_0x1ca095['options']);var _0x534da8={'where':_0x2bd6dd[_0x4c6c('0x3f')]};return db[_0x4c6c('0x44')][_0x4c6c('0x22')](_0x534da8)[_0x4c6c('0x28')](function(_0x5bb96d){_0x19e7d9[_0x4c6c('0x22')]=_0x5bb96d;if(_0x1ca095[_0x4c6c('0x33')][_0x4c6c('0x45')]){_0x2bd6dd[_0x4c6c('0x46')]=[{'all':!![]}];}return db[_0x4c6c('0x44')][_0x4c6c('0x47')](_0x2bd6dd);})[_0x4c6c('0x28')](function(_0x3f2a67){_0x19e7d9['rows']=_0x3f2a67;return _0x19e7d9;})[_0x4c6c('0x28')](respondWithFilteredResult(_0x4359ad,_0x2bd6dd))[_0x4c6c('0x48')](handleError(_0x4359ad,null));};exports[_0x4c6c('0x49')]=function(_0x1153bb,_0x14bb36){var _0x18b8cd={'raw':!![],'where':{'id':_0x1153bb[_0x4c6c('0x4a')]['id']}},_0x4ef0f8={};_0x4ef0f8['model']=_[_0x4c6c('0x34')](db['SquareDetailsReport'][_0x4c6c('0x2f')]);_0x4ef0f8['query']=_[_0x4c6c('0x34')](_0x1153bb[_0x4c6c('0x33')]);_0x4ef0f8[_0x4c6c('0x35')]=_[_0x4c6c('0x36')](_0x4ef0f8[_0x4c6c('0x37')],_0x4ef0f8[_0x4c6c('0x33')]);_0x18b8cd[_0x4c6c('0x38')]=_[_0x4c6c('0x36')](_0x4ef0f8[_0x4c6c('0x37')],qs[_0x4c6c('0x39')](_0x1153bb['query'][_0x4c6c('0x39')]));_0x18b8cd[_0x4c6c('0x38')]=_0x18b8cd[_0x4c6c('0x38')]['length']?_0x18b8cd[_0x4c6c('0x38')]:_0x4ef0f8[_0x4c6c('0x37')];if(_0x1153bb['query']['includeAll']){_0x18b8cd['include']=[{'all':!![]}];}_0x18b8cd=_['merge']({},_0x18b8cd,_0x1153bb[_0x4c6c('0x4b')]);return db[_0x4c6c('0x44')]['find'](_0x18b8cd)[_0x4c6c('0x28')](handleEntityNotFound(_0x14bb36,null))['then'](respondWithResult(_0x14bb36,null))[_0x4c6c('0x48')](handleError(_0x14bb36,null));};exports[_0x4c6c('0x4c')]=function(_0x4df7a4,_0x544a20){return db[_0x4c6c('0x44')][_0x4c6c('0x4c')](_0x4df7a4[_0x4c6c('0x4d')],{})['then'](respondWithResult(_0x544a20,0xc9))[_0x4c6c('0x48')](handleError(_0x544a20,null));};exports[_0x4c6c('0x27')]=function(_0x10f045,_0x45299a){if(_0x10f045[_0x4c6c('0x4d')]['id']){delete _0x10f045[_0x4c6c('0x4d')]['id'];}return db[_0x4c6c('0x44')]['find']({'where':{'id':_0x10f045[_0x4c6c('0x4a')]['id']}})[_0x4c6c('0x28')](handleEntityNotFound(_0x45299a,null))['then'](saveUpdates(_0x10f045[_0x4c6c('0x4d')],null))[_0x4c6c('0x28')](respondWithResult(_0x45299a,null))[_0x4c6c('0x48')](handleError(_0x45299a,null));};exports[_0x4c6c('0x4e')]=function(_0x512d5c,_0x2ea045){return db[_0x4c6c('0x44')][_0x4c6c('0x4f')]({'where':{'id':_0x512d5c[_0x4c6c('0x4a')]['id']}})[_0x4c6c('0x28')](handleEntityNotFound(_0x2ea045,null))['then'](removeEntity(_0x2ea045,null))[_0x4c6c('0x48')](handleError(_0x2ea045,null));};exports['describe']=function(_0x4b97d5,_0x2c4eda){return db[_0x4c6c('0x44')]['describe']()['then'](respondWithResult(_0x2c4eda,null))['catch'](handleError(_0x2c4eda,null));};
\ No newline at end of file
+var _0x37e9=['limit','count','set','reject','save','update','then','destroy','error','stack','name','send','index','SquareDetailsReport','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','show','length','includeAll','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined'];(function(_0x132ffa,_0x4a0b41){var _0x88e58=function(_0x2b8a82){while(--_0x2b8a82){_0x132ffa['push'](_0x132ffa['shift']());}};_0x88e58(++_0x4a0b41);}(_0x37e9,0x14d));var _0x937e=function(_0x5cdbc4,_0x15abdf){_0x5cdbc4=_0x5cdbc4-0x0;var _0x225498=_0x37e9[_0x5cdbc4];return _0x225498;};'use strict';var emlformat=require(_0x937e('0x0'));var rimraf=require(_0x937e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x937e('0x2'));var rp=require(_0x937e('0x3'));var moment=require(_0x937e('0x4'));var BPromise=require(_0x937e('0x5'));var Mustache=require('mustache');var util=require(_0x937e('0x6'));var path=require(_0x937e('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x937e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x937e('0x9'));var squel=require(_0x937e('0xa'));var crypto=require('crypto');var jsforce=require(_0x937e('0xb'));var deskjs=require(_0x937e('0xc'));var toCsv=require(_0x937e('0xd'));var querystring=require('querystring');var Papa=require(_0x937e('0xe'));var Redis=require(_0x937e('0xf'));var authService=require(_0x937e('0x10'));var qs=require(_0x937e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x937e('0x12'));var logger=require(_0x937e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x937e('0x14'));var licenseUtil=require(_0x937e('0x15'));var db=require(_0x937e('0x16'))['db'];function respondWithStatusCode(_0x283a33,_0x48d76e){_0x48d76e=_0x48d76e||0xcc;return function(_0x3e436a){if(_0x3e436a){return _0x283a33['sendStatus'](_0x48d76e);}return _0x283a33[_0x937e('0x17')](_0x48d76e)['end']();};}function respondWithResult(_0x3b60a3,_0x455420){_0x455420=_0x455420||0xc8;return function(_0x6ac8e3){if(_0x6ac8e3){return _0x3b60a3[_0x937e('0x17')](_0x455420)[_0x937e('0x18')](_0x6ac8e3);}};}function respondWithFilteredResult(_0x4f8fa4,_0x192d0d){return function(_0x4efc1b){if(_0x4efc1b){var _0x143fdb=typeof _0x192d0d[_0x937e('0x19')]===_0x937e('0x1a')&&typeof _0x192d0d[_0x937e('0x1b')]===_0x937e('0x1a');var _0xff0253=_0x4efc1b[_0x937e('0x1c')];var _0x2d7791=_0x143fdb?0x0:_0x192d0d['offset'];var _0x354a33=_0x143fdb?_0x4efc1b[_0x937e('0x1c')]:_0x192d0d[_0x937e('0x19')]+_0x192d0d[_0x937e('0x1b')];var _0x5a3109;if(_0x354a33>=_0xff0253){_0x354a33=_0xff0253;_0x5a3109=0xc8;}else{_0x5a3109=0xce;}_0x4f8fa4[_0x937e('0x17')](_0x5a3109);return _0x4f8fa4[_0x937e('0x1d')]('Content-Range',_0x2d7791+'-'+_0x354a33+'/'+_0xff0253)[_0x937e('0x18')](_0x4efc1b);}return null;};}function patchUpdates(_0x2a7773){return function(_0xb4f99c){try{jsonpatch['apply'](_0xb4f99c,_0x2a7773,!![]);}catch(_0xb3c932){return BPromise[_0x937e('0x1e')](_0xb3c932);}return _0xb4f99c[_0x937e('0x1f')]();};}function saveUpdates(_0x51dc8e,_0x476bd1){return function(_0x4e6a80){if(_0x4e6a80){return _0x4e6a80[_0x937e('0x20')](_0x51dc8e)[_0x937e('0x21')](function(_0x4fa6ab){return _0x4fa6ab;});}return null;};}function removeEntity(_0x20a7b1,_0x1b580e){return function(_0x51d3b8){if(_0x51d3b8){return _0x51d3b8[_0x937e('0x22')]()[_0x937e('0x21')](function(){_0x20a7b1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3458d0,_0x3aae60){return function(_0x48d557){if(!_0x48d557){_0x3458d0['sendStatus'](0x194);}return _0x48d557;};}function handleError(_0x2e8fd9,_0x3592fd){_0x3592fd=_0x3592fd||0x1f4;return function(_0x5560b7){logger[_0x937e('0x23')](_0x5560b7[_0x937e('0x24')]);if(_0x5560b7[_0x937e('0x25')]){delete _0x5560b7[_0x937e('0x25')];}_0x2e8fd9[_0x937e('0x17')](_0x3592fd)[_0x937e('0x26')](_0x5560b7);};}exports[_0x937e('0x27')]=function(_0x3f8f20,_0xd4c31){var _0xab7927={},_0x4e1f7b={},_0x41e8f0={'count':0x0,'rows':[]};var _0x5ab191=_['map'](db[_0x937e('0x28')][_0x937e('0x29')],function(_0x529c88){return{'name':_0x529c88['fieldName'],'type':_0x529c88[_0x937e('0x2a')][_0x937e('0x2b')]};});_0x4e1f7b[_0x937e('0x2c')]=_[_0x937e('0x2d')](_0x5ab191,_0x937e('0x25'));_0x4e1f7b[_0x937e('0x2e')]=_[_0x937e('0x2f')](_0x3f8f20[_0x937e('0x2e')]);_0x4e1f7b[_0x937e('0x30')]=_['intersection'](_0x4e1f7b[_0x937e('0x2c')],_0x4e1f7b[_0x937e('0x2e')]);_0xab7927[_0x937e('0x31')]=_[_0x937e('0x32')](_0x4e1f7b[_0x937e('0x2c')],qs[_0x937e('0x33')](_0x3f8f20['query'][_0x937e('0x33')]));_0xab7927[_0x937e('0x31')]=_0xab7927[_0x937e('0x31')]['length']?_0xab7927[_0x937e('0x31')]:_0x4e1f7b[_0x937e('0x2c')];if(!_0x3f8f20[_0x937e('0x2e')]['hasOwnProperty'](_0x937e('0x34'))){_0xab7927['limit']=qs['limit'](_0x3f8f20[_0x937e('0x2e')][_0x937e('0x1b')]);_0xab7927[_0x937e('0x19')]=qs[_0x937e('0x19')](_0x3f8f20[_0x937e('0x2e')][_0x937e('0x19')]);}_0xab7927[_0x937e('0x35')]=qs[_0x937e('0x36')](_0x3f8f20[_0x937e('0x2e')]['sort']);_0xab7927[_0x937e('0x37')]=qs['filters'](_[_0x937e('0x38')](_0x3f8f20[_0x937e('0x2e')],_0x4e1f7b[_0x937e('0x30')]),_0x5ab191);if(_0x3f8f20['query']['filter']){_0xab7927[_0x937e('0x37')]=_[_0x937e('0x39')](_0xab7927['where'],{'$or':_[_0x937e('0x2d')](_0x5ab191,function(_0x112df1){if(_0x112df1[_0x937e('0x2a')]!==_0x937e('0x3a')){var _0x1443a6={};_0x1443a6[_0x112df1[_0x937e('0x25')]]={'$like':'%'+_0x3f8f20[_0x937e('0x2e')][_0x937e('0x3b')]+'%'};return _0x1443a6;}})});}_0xab7927=_[_0x937e('0x39')]({},_0xab7927,_0x3f8f20[_0x937e('0x3c')]);var _0x17decd={'where':_0xab7927[_0x937e('0x37')]};return db[_0x937e('0x28')][_0x937e('0x1c')](_0x17decd)[_0x937e('0x21')](function(_0x3457f0){_0x41e8f0[_0x937e('0x1c')]=_0x3457f0;if(_0x3f8f20[_0x937e('0x2e')]['includeAll']){_0xab7927['include']=[{'all':!![]}];}return db[_0x937e('0x28')][_0x937e('0x3d')](_0xab7927);})['then'](function(_0x31e9cb){_0x41e8f0[_0x937e('0x3e')]=_0x31e9cb;return _0x41e8f0;})[_0x937e('0x21')](respondWithFilteredResult(_0xd4c31,_0xab7927))[_0x937e('0x3f')](handleError(_0xd4c31,null));};exports[_0x937e('0x40')]=function(_0x226c16,_0x18b6fc){var _0x4c5236={'raw':!![],'where':{'id':_0x226c16['params']['id']}},_0x80a976={};_0x80a976[_0x937e('0x2c')]=_[_0x937e('0x2f')](db[_0x937e('0x28')]['rawAttributes']);_0x80a976[_0x937e('0x2e')]=_[_0x937e('0x2f')](_0x226c16[_0x937e('0x2e')]);_0x80a976[_0x937e('0x30')]=_[_0x937e('0x32')](_0x80a976['model'],_0x80a976[_0x937e('0x2e')]);_0x4c5236[_0x937e('0x31')]=_[_0x937e('0x32')](_0x80a976[_0x937e('0x2c')],qs[_0x937e('0x33')](_0x226c16['query'][_0x937e('0x33')]));_0x4c5236[_0x937e('0x31')]=_0x4c5236[_0x937e('0x31')][_0x937e('0x41')]?_0x4c5236[_0x937e('0x31')]:_0x80a976['model'];if(_0x226c16[_0x937e('0x2e')][_0x937e('0x42')]){_0x4c5236['include']=[{'all':!![]}];}_0x4c5236=_[_0x937e('0x39')]({},_0x4c5236,_0x226c16[_0x937e('0x3c')]);return db[_0x937e('0x28')][_0x937e('0x43')](_0x4c5236)[_0x937e('0x21')](handleEntityNotFound(_0x18b6fc,null))[_0x937e('0x21')](respondWithResult(_0x18b6fc,null))[_0x937e('0x3f')](handleError(_0x18b6fc,null));};exports[_0x937e('0x44')]=function(_0x3c84e4,_0x5da33f){return db['SquareDetailsReport'][_0x937e('0x44')](_0x3c84e4[_0x937e('0x45')],{})[_0x937e('0x21')](respondWithResult(_0x5da33f,0xc9))[_0x937e('0x3f')](handleError(_0x5da33f,null));};exports[_0x937e('0x20')]=function(_0x5d452e,_0x4ba4bc){if(_0x5d452e[_0x937e('0x45')]['id']){delete _0x5d452e[_0x937e('0x45')]['id'];}return db[_0x937e('0x28')][_0x937e('0x43')]({'where':{'id':_0x5d452e[_0x937e('0x46')]['id']}})['then'](handleEntityNotFound(_0x4ba4bc,null))[_0x937e('0x21')](saveUpdates(_0x5d452e[_0x937e('0x45')],null))[_0x937e('0x21')](respondWithResult(_0x4ba4bc,null))[_0x937e('0x3f')](handleError(_0x4ba4bc,null));};exports[_0x937e('0x22')]=function(_0x2539cd,_0x143c91){return db['SquareDetailsReport'][_0x937e('0x43')]({'where':{'id':_0x2539cd[_0x937e('0x46')]['id']}})[_0x937e('0x21')](handleEntityNotFound(_0x143c91,null))[_0x937e('0x21')](removeEntity(_0x143c91,null))['catch'](handleError(_0x143c91,null));};exports[_0x937e('0x47')]=function(_0x5b2014,_0x41dfde){return db[_0x937e('0x28')][_0x937e('0x47')]()['then'](respondWithResult(_0x41dfde,null))[_0x937e('0x3f')](handleError(_0x41dfde,null));};
\ No newline at end of file
index 65f2ed3..722a46d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x126a=['rimraf','../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','lodash','util','api','bluebird','request-promise'];(function(_0x53534a,_0x53eaad){var _0x391a69=function(_0x2e73e0){while(--_0x2e73e0){_0x53534a['push'](_0x53534a['shift']());}};_0x391a69(++_0x53eaad);}(_0x126a,0xed));var _0xa126=function(_0x68951f,_0x2c13c0){_0x68951f=_0x68951f-0x0;var _0x576e42=_0x126a[_0x68951f];return _0x576e42;};'use strict';var _=require(_0xa126('0x0'));var util=require(_0xa126('0x1'));var logger=require('../../config/logger')(_0xa126('0x2'));var moment=require('moment');var BPromise=require(_0xa126('0x3'));var rp=require(_0xa126('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa126('0x5'));var config=require(_0xa126('0x6'));var attributes=require(_0xa126('0x7'));module[_0xa126('0x8')]=function(_0x3adcdc,_0x5e25b6){return _0x3adcdc['define'](_0xa126('0x9'),attributes,{'tableName':_0xa126('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe145=['moment','request-promise','rimraf','../../config/environment','define','report_square_details','util','api'];(function(_0x557e0d,_0x389bf2){var _0xef7ed=function(_0x42a9b3){while(--_0x42a9b3){_0x557e0d['push'](_0x557e0d['shift']());}};_0xef7ed(++_0x389bf2);}(_0xe145,0x1ce));var _0x5e14=function(_0x1b0ad5,_0x504a3b){_0x1b0ad5=_0x1b0ad5-0x0;var _0x124a2c=_0xe145[_0x1b0ad5];return _0x124a2c;};'use strict';var _=require('lodash');var util=require(_0x5e14('0x0'));var logger=require('../../config/logger')(_0x5e14('0x1'));var moment=require(_0x5e14('0x2'));var BPromise=require('bluebird');var rp=require(_0x5e14('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5e14('0x4'));var config=require(_0x5e14('0x5'));var attributes=require('./squareReportDetail.attributes');module['exports']=function(_0x587bb3,_0x1c6d96){return _0x587bb3[_0x5e14('0x6')]('SquareDetailsReport',attributes,{'tableName':_0x5e14('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62ba42b..d63b4d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac35=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SquareDetailsReport,\x20%s,\x20%s','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x27c021,_0x190f72){var _0x1d0700=function(_0x8b02b4){while(--_0x8b02b4){_0x27c021['push'](_0x27c021['shift']());}};_0x1d0700(++_0x190f72);}(_0xac35,0x141));var _0x5ac3=function(_0x2f1c54,_0x3321ac){_0x2f1c54=_0x2f1c54-0x0;var _0x28e88c=_0xac35[_0x2f1c54];return _0x28e88c;};'use strict';var _=require(_0x5ac3('0x0'));var util=require(_0x5ac3('0x1'));var moment=require(_0x5ac3('0x2'));var BPromise=require(_0x5ac3('0x3'));var rs=require(_0x5ac3('0x4'));var fs=require('fs');var Redis=require(_0x5ac3('0x5'));var db=require(_0x5ac3('0x6'))['db'];var utils=require(_0x5ac3('0x7'));var logger=require(_0x5ac3('0x8'))(_0x5ac3('0x9'));var config=require(_0x5ac3('0xa'));var jayson=require(_0x5ac3('0xb'));var client=jayson[_0x5ac3('0xc')][_0x5ac3('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4c9a16,_0x77dc9f,_0x5e96cb){return new BPromise(function(_0x2a19b9,_0x1754d2){return client[_0x5ac3('0xe')](_0x4c9a16,_0x5e96cb)[_0x5ac3('0xf')](function(_0x378900){logger[_0x5ac3('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x77dc9f,_0x5ac3('0x11'));logger['debug'](_0x5ac3('0x12'),_0x77dc9f,_0x5ac3('0x11'),JSON[_0x5ac3('0x13')](_0x378900));if(_0x378900[_0x5ac3('0x14')]){if(_0x378900[_0x5ac3('0x14')][_0x5ac3('0x15')]===0x1f4){logger[_0x5ac3('0x14')]('SquareDetailsReport,\x20%s,\x20%s',_0x77dc9f,_0x378900[_0x5ac3('0x14')][_0x5ac3('0x16')]);return _0x1754d2(_0x378900[_0x5ac3('0x14')][_0x5ac3('0x16')]);}logger[_0x5ac3('0x14')](_0x5ac3('0x17'),_0x77dc9f,_0x378900[_0x5ac3('0x14')][_0x5ac3('0x16')]);return _0x2a19b9(_0x378900['error']['message']);}else{logger[_0x5ac3('0x10')](_0x5ac3('0x17'),_0x77dc9f,'request\x20sent');_0x2a19b9(_0x378900[_0x5ac3('0x18')]['message']);}})[_0x5ac3('0x19')](function(_0x18cad4){logger[_0x5ac3('0x14')]('SquareDetailsReport,\x20%s,\x20%s',_0x77dc9f,_0x18cad4);_0x1754d2(_0x18cad4);});});}exports[_0x5ac3('0x1a')]=function(_0x1c2566){var _0x200eca=this;return new Promise(function(_0x141128,_0x5aab00){return db[_0x5ac3('0x1b')][_0x5ac3('0x1c')](_0x1c2566[_0x5ac3('0x1d')],{'raw':_0x1c2566[_0x5ac3('0x1e')]?_0x1c2566[_0x5ac3('0x1e')][_0x5ac3('0x1f')]===undefined?!![]:![]:!![]})[_0x5ac3('0xf')](function(_0x2fcc26){logger[_0x5ac3('0x10')](_0x5ac3('0x1a'),_0x1c2566);logger[_0x5ac3('0x20')](_0x5ac3('0x1a'),_0x1c2566,JSON['stringify'](_0x2fcc26));_0x141128(_0x2fcc26);})[_0x5ac3('0x19')](function(_0x3cbb52){logger[_0x5ac3('0x14')](_0x5ac3('0x1a'),_0x3cbb52['message'],_0x1c2566);_0x5aab00(_0x200eca[_0x5ac3('0x14')](0x1f4,_0x3cbb52[_0x5ac3('0x16')]));});});};
\ No newline at end of file
+var _0x253d=['create','options','catch','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','request\x20sent','stringify','error','code','message','result','SquareDetailsReport,\x20%s,\x20%s','CreateSquareDetailsReport'];(function(_0x3b3dcb,_0x5c873f){var _0x4054b4=function(_0xe22238){while(--_0xe22238){_0x3b3dcb['push'](_0x3b3dcb['shift']());}};_0x4054b4(++_0x5c873f);}(_0x253d,0x1b3));var _0xd253=function(_0x260fce,_0x5de149){_0x260fce=_0x260fce-0x0;var _0x186cc3=_0x253d[_0x260fce];return _0x186cc3;};'use strict';var _=require(_0xd253('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd253('0x1'));var db=require(_0xd253('0x2'))['db'];var utils=require(_0xd253('0x3'));var logger=require(_0xd253('0x4'))(_0xd253('0x5'));var config=require('../../config/environment');var jayson=require(_0xd253('0x6'));var client=jayson[_0xd253('0x7')][_0xd253('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17589a,_0xf4b457,_0x487f4e){return new BPromise(function(_0x2c4de4,_0x712c81){return client[_0xd253('0x9')](_0x17589a,_0x487f4e)[_0xd253('0xa')](function(_0x351047){logger[_0xd253('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0xf4b457,'request\x20sent');logger[_0xd253('0xc')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0xf4b457,_0xd253('0xd'),JSON[_0xd253('0xe')](_0x351047));if(_0x351047[_0xd253('0xf')]){if(_0x351047[_0xd253('0xf')][_0xd253('0x10')]===0x1f4){logger[_0xd253('0xf')]('SquareDetailsReport,\x20%s,\x20%s',_0xf4b457,_0x351047['error'][_0xd253('0x11')]);return _0x712c81(_0x351047[_0xd253('0xf')][_0xd253('0x11')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xf4b457,_0x351047[_0xd253('0xf')][_0xd253('0x11')]);return _0x2c4de4(_0x351047[_0xd253('0xf')]['message']);}else{logger[_0xd253('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0xf4b457,_0xd253('0xd'));_0x2c4de4(_0x351047[_0xd253('0x12')][_0xd253('0x11')]);}})['catch'](function(_0x1b7ed1){logger['error'](_0xd253('0x13'),_0xf4b457,_0x1b7ed1);_0x712c81(_0x1b7ed1);});});}exports[_0xd253('0x14')]=function(_0x5e4051){var _0x2496cb=this;return new Promise(function(_0x2a2adc,_0x5b24ff){return db['SquareDetailsReport'][_0xd253('0x15')](_0x5e4051['body'],{'raw':_0x5e4051['options']?_0x5e4051[_0xd253('0x16')]['raw']===undefined?!![]:![]:!![]})[_0xd253('0xa')](function(_0x1e48c3){logger[_0xd253('0xb')](_0xd253('0x14'),_0x5e4051);logger['debug'](_0xd253('0x14'),_0x5e4051,JSON['stringify'](_0x1e48c3));_0x2a2adc(_0x1e48c3);})[_0xd253('0x17')](function(_0x50f8b5){logger[_0xd253('0xf')](_0xd253('0x14'),_0x50f8b5[_0xd253('0x11')],_0x5e4051);_0x5b24ff(_0x2496cb[_0xd253('0xf')](0x1f4,_0x50f8b5['message']));});});};
\ No newline at end of file
index e63d1fe..1e950a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1538=['../../components/auth/service','./system.controller','get','isAuthenticated','index','killProcess','exports','express','Router'];(function(_0x1a0daa,_0x2a4634){var _0x1dbe15=function(_0xa8ab22){while(--_0xa8ab22){_0x1a0daa['push'](_0x1a0daa['shift']());}};_0x1dbe15(++_0x2a4634);}(_0x1538,0x1db));var _0x8153=function(_0x585d09,_0x1274bc){_0x585d09=_0x585d09-0x0;var _0x7d9a14=_0x1538[_0x585d09];return _0x7d9a14;};'use strict';var express=require(_0x8153('0x0'));var router=express[_0x8153('0x1')]();var auth=require(_0x8153('0x2'));var controller=require(_0x8153('0x3'));router[_0x8153('0x4')]('/',auth[_0x8153('0x5')](),controller[_0x8153('0x6')]);router[_0x8153('0x4')]('/process/:pid/kill',auth[_0x8153('0x5')](),controller[_0x8153('0x7')]);module[_0x8153('0x8')]=router;
\ No newline at end of file
+var _0x026b=['./system.controller','get','isAuthenticated','/process/:pid/kill','killProcess','exports','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x026b,0x76));var _0xb026=function(_0x173452,_0x3aa870){_0x173452=_0x173452-0x0;var _0xee3fd0=_0x026b[_0x173452];return _0xee3fd0;};'use strict';var express=require(_0xb026('0x0'));var router=express[_0xb026('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xb026('0x2'));router[_0xb026('0x3')]('/',auth[_0xb026('0x4')](),controller['index']);router['get'](_0xb026('0x5'),auth[_0xb026('0x4')](),controller[_0xb026('0x6')]);module[_0xb026('0x7')]=router;
\ No newline at end of file
index 6f4268c..37318ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f95=['systeminformation','exec','../../config/logger','api','util','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','send','index','getAllData','status','json','catch','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','then','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','kill','killProcess'];(function(_0x434257,_0x5d24d2){var _0xf824c1=function(_0x49b97a){while(--_0x49b97a){_0x434257['push'](_0x434257['shift']());}};_0xf824c1(++_0x5d24d2);}(_0x2f95,0x1e0));var _0x52f9=function(_0x1eb5eb,_0x76a07a){_0x1eb5eb=_0x1eb5eb-0x0;var _0x356b3c=_0x2f95[_0x1eb5eb];return _0x356b3c;};'use strict';var info=require(_0x52f9('0x0'));var exec=require('child_process')[_0x52f9('0x1')];var logger=require(_0x52f9('0x2'))(_0x52f9('0x3'));var util=require(_0x52f9('0x4'));var BPromise=require('bluebird');var _=require(_0x52f9('0x5'));function handleError(_0x3872fd,_0x2f15f9,_0x3f9fca){_0x2f15f9=_0x2f15f9||0x1f4;return function(_0x405f61){logger[_0x52f9('0x6')](_0x52f9('0x7'),_0x3f9fca,_0x2f15f9,util['inspect'](_0x405f61,{'showHidden':![],'depth':null}));delete _0x405f61['name'];_0x3872fd['status'](_0x2f15f9)[_0x52f9('0x8')](_0x405f61);};}exports[_0x52f9('0x9')]=function(_0xb3dd9d,_0x1696fe){return info[_0x52f9('0xa')]()['then'](function(_0xb96afd){return _0x1696fe[_0x52f9('0xb')](0xc8)[_0x52f9('0xc')](_0xb96afd);})[_0x52f9('0xd')](function(_0x272b7a){return _0x1696fe[_0x52f9('0xb')](0x1f4)[_0x52f9('0xc')](_0x272b7a);});};exports['killProcess']=function(_0x3e2626,_0x567a22){var _0xedd6a2=[_0x52f9('0xe')];return new BPromise(function(_0x379226,_0x34651c){return exec(util[_0x52f9('0xf')](_0x52f9('0x10'),_0x3e2626[_0x52f9('0x11')]['pid']),function(_0x2dda99,_0x13b621,_0x1de21e){if(_0x2dda99){return _0x34651c(_0x2dda99);}return _0x379226(_0x13b621);});})[_0x52f9('0x12')](function(_0x5be72f){var _0x428da0=![];var _0x5ee54e=_0x5be72f['split'](/\n/);for(var _0x5ebfff=0x0,_0x581411=_0xedd6a2['length'];_0x5ebfff<_0x581411,_0x428da0===![];_0x5ebfff+=0x1){if(_0x5be72f[_0x52f9('0x13')](_0xedd6a2[_0x5ebfff])>=0x0){_0x428da0=!![];}}if(!_0x428da0){throw new Error(util[_0x52f9('0xf')](_0x52f9('0x14'),_0x3e2626[_0x52f9('0x11')][_0x52f9('0x15')]));}process[_0x52f9('0x16')](_0x3e2626[_0x52f9('0x11')][_0x52f9('0x15')],'SIGINT');return _0x567a22['status'](0xc8)[_0x52f9('0xc')]({'message':util[_0x52f9('0xf')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x3e2626[_0x52f9('0x11')]['pid'])});})[_0x52f9('0xd')](handleError(_0x567a22,null,_0x52f9('0x17')));};
\ No newline at end of file
+var _0x5179=['Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','getAllData','then','status','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','length'];(function(_0x4b0d59,_0x2ad289){var _0x29b75d=function(_0x8fdb00){while(--_0x8fdb00){_0x4b0d59['push'](_0x4b0d59['shift']());}};_0x29b75d(++_0x2ad289);}(_0x5179,0x87));var _0x9517=function(_0x34eb31,_0x8f0f70){_0x34eb31=_0x34eb31-0x0;var _0x254994=_0x5179[_0x34eb31];return _0x254994;};'use strict';var info=require('systeminformation');var exec=require('child_process')['exec'];var logger=require(_0x9517('0x0'))(_0x9517('0x1'));var util=require(_0x9517('0x2'));var BPromise=require(_0x9517('0x3'));var _=require(_0x9517('0x4'));function handleError(_0x3a111b,_0x32d665,_0x27d223){_0x32d665=_0x32d665||0x1f4;return function(_0x1e7aa6){logger[_0x9517('0x5')](_0x9517('0x6'),_0x27d223,_0x32d665,util[_0x9517('0x7')](_0x1e7aa6,{'showHidden':![],'depth':null}));delete _0x1e7aa6[_0x9517('0x8')];_0x3a111b['status'](_0x32d665)[_0x9517('0x9')](_0x1e7aa6);};}exports['index']=function(_0x4178e1,_0x494061){return info[_0x9517('0xa')]()[_0x9517('0xb')](function(_0x1921b6){return _0x494061[_0x9517('0xc')](0xc8)[_0x9517('0xd')](_0x1921b6);})[_0x9517('0xe')](function(_0x5600bd){return _0x494061['status'](0x1f4)[_0x9517('0xd')](_0x5600bd);});};exports[_0x9517('0xf')]=function(_0x237b5d,_0x16a9b3){var _0x4ad5bd=[_0x9517('0x10')];return new BPromise(function(_0x7915c8,_0x133f86){return exec(util[_0x9517('0x11')](_0x9517('0x12'),_0x237b5d['params'][_0x9517('0x13')]),function(_0x2672cb,_0x2984b2,_0x205c4b){if(_0x2672cb){return _0x133f86(_0x2672cb);}return _0x7915c8(_0x2984b2);});})[_0x9517('0xb')](function(_0x4a8f21){var _0x112640=![];var _0x4af9e5=_0x4a8f21['split'](/\n/);for(var _0x1ec289=0x0,_0x308b33=_0x4ad5bd[_0x9517('0x14')];_0x1ec289<_0x308b33,_0x112640===![];_0x1ec289+=0x1){if(_0x4a8f21['indexOf'](_0x4ad5bd[_0x1ec289])>=0x0){_0x112640=!![];}}if(!_0x112640){throw new Error(util['format'](_0x9517('0x15'),_0x237b5d[_0x9517('0x16')]['pid']));}process[_0x9517('0x17')](_0x237b5d[_0x9517('0x16')][_0x9517('0x13')],_0x9517('0x18'));return _0x16a9b3['status'](0xc8)[_0x9517('0xd')]({'message':util['format'](_0x9517('0x19'),_0x237b5d['params'][_0x9517('0x13')])});})[_0x9517('0xe')](handleError(_0x16a9b3,null,_0x9517('0xf')));};
\ No newline at end of file
index fa464ca..2f1ebb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe451=['/:id','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./tag.controller','isAuthenticated','index','get'];(function(_0x3d3d17,_0x2e4153){var _0x508bc5=function(_0x282c9e){while(--_0x282c9e){_0x3d3d17['push'](_0x3d3d17['shift']());}};_0x508bc5(++_0x2e4153);}(_0xe451,0x94));var _0x1e45=function(_0x156638,_0x52ca59){_0x156638=_0x156638-0x0;var _0x1794dc=_0xe451[_0x156638];return _0x1794dc;};'use strict';var multer=require('multer');var util=require(_0x1e45('0x0'));var path=require(_0x1e45('0x1'));var timeout=require(_0x1e45('0x2'));var express=require(_0x1e45('0x3'));var router=express[_0x1e45('0x4')]();var fs_extra=require(_0x1e45('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1e45('0x6'));var config=require(_0x1e45('0x7'));var controller=require(_0x1e45('0x8'));router['get']('/',auth[_0x1e45('0x9')](),controller[_0x1e45('0xa')]);router[_0x1e45('0xb')](_0x1e45('0xc'),auth[_0x1e45('0x9')](),controller['show']);router['post']('/',auth[_0x1e45('0x9')](),controller[_0x1e45('0xd')]);router['put'](_0x1e45('0xc'),auth[_0x1e45('0x9')](),controller['update']);router[_0x1e45('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x1e45('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xa6d1=['exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./tag.controller','isAuthenticated','/:id','post','create','put','update','delete','destroy'];(function(_0x16a5aa,_0x235b58){var _0x2b25f3=function(_0x44336d){while(--_0x44336d){_0x16a5aa['push'](_0x16a5aa['shift']());}};_0x2b25f3(++_0x235b58);}(_0xa6d1,0x1e1));var _0x1a6d=function(_0x55d251,_0x1325af){_0x55d251=_0x55d251-0x0;var _0x1f359b=_0xa6d1[_0x55d251];return _0x1f359b;};'use strict';var multer=require(_0x1a6d('0x0'));var util=require(_0x1a6d('0x1'));var path=require(_0x1a6d('0x2'));var timeout=require(_0x1a6d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1a6d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1a6d('0x5'));var controller=require(_0x1a6d('0x6'));router['get']('/',auth[_0x1a6d('0x7')](),controller['index']);router['get'](_0x1a6d('0x8'),auth[_0x1a6d('0x7')](),controller['show']);router[_0x1a6d('0x9')]('/',auth['isAuthenticated'](),controller[_0x1a6d('0xa')]);router[_0x1a6d('0xb')](_0x1a6d('0x8'),auth[_0x1a6d('0x7')](),controller[_0x1a6d('0xc')]);router[_0x1a6d('0xd')](_0x1a6d('0x8'),auth[_0x1a6d('0x7')](),controller[_0x1a6d('0xe')]);module[_0x1a6d('0xf')]=router;
\ No newline at end of file
index 1a930c9..6cee294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47fd=['#0091EA','sequelize','exports','STRING','name'];(function(_0x16ce18,_0x4c67b9){var _0x4f3b2e=function(_0x1dfff3){while(--_0x1dfff3){_0x16ce18['push'](_0x16ce18['shift']());}};_0x4f3b2e(++_0x4c67b9);}(_0x47fd,0x13c));var _0xd47f=function(_0x57ae71,_0x4f793f){_0x57ae71=_0x57ae71-0x0;var _0xdab35d=_0x47fd[_0x57ae71];return _0xdab35d;};'use strict';var Sequelize=require(_0xd47f('0x0'));module[_0xd47f('0x1')]={'name':{'type':Sequelize[_0xd47f('0x2')],'unique':_0xd47f('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd47f('0x2')],'defaultValue':_0xd47f('0x4')},'description':{'type':Sequelize[_0xd47f('0x2')]}};
\ No newline at end of file
+var _0x3266=['#0091EA','sequelize','exports','STRING','name'];(function(_0x19a93b,_0x2c6ca3){var _0x56efc2=function(_0x1b98e2){while(--_0x1b98e2){_0x19a93b['push'](_0x19a93b['shift']());}};_0x56efc2(++_0x2c6ca3);}(_0x3266,0x6a));var _0x6326=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x3266[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require(_0x6326('0x0'));module[_0x6326('0x1')]={'name':{'type':Sequelize[_0x6326('0x2')],'unique':_0x6326('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x6326('0x2')],'defaultValue':_0x6326('0x4')},'description':{'type':Sequelize[_0x6326('0x2')]}};
\ No newline at end of file
index 8e50273..2af7299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','get','Tags','UserProfileResource','name','send','index','map','Tag','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x38979b,_0x520083){var _0x52fdad=function(_0x31ac9f){while(--_0x31ac9f){_0x38979b['push'](_0x38979b['shift']());}};_0x52fdad(++_0x520083);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2f5411,_0x5059c8){_0x2f5411=_0x2f5411-0x0;var _0xf4e0ae=_0x9bde[_0x2f5411];return _0xf4e0ae;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];function respondWithStatusCode(_0x5e022a,_0x2c1d98){_0x2c1d98=_0x2c1d98||0xcc;return function(_0x4ac319){if(_0x4ac319){return _0x5e022a[_0xe9bd('0x19')](_0x2c1d98);}return _0x5e022a[_0xe9bd('0x1a')](_0x2c1d98)[_0xe9bd('0x1b')]();};}function respondWithResult(_0x51109f,_0x47ba5e){_0x47ba5e=_0x47ba5e||0xc8;return function(_0x46a95e){if(_0x46a95e){return _0x51109f[_0xe9bd('0x1a')](_0x47ba5e)[_0xe9bd('0x1c')](_0x46a95e);}};}function respondWithFilteredResult(_0x46a59b,_0x3360bd){return function(_0x389e7b){if(_0x389e7b){var _0x45a9f2=typeof _0x3360bd['offset']===_0xe9bd('0x1d')&&typeof _0x3360bd[_0xe9bd('0x1e')]===_0xe9bd('0x1d');var _0x494b27=_0x389e7b[_0xe9bd('0x1f')];var _0x3bae08=_0x45a9f2?0x0:_0x3360bd[_0xe9bd('0x20')];var _0x330733=_0x45a9f2?_0x389e7b['count']:_0x3360bd[_0xe9bd('0x20')]+_0x3360bd['limit'];var _0xc6b661;if(_0x330733>=_0x494b27){_0x330733=_0x494b27;_0xc6b661=0xc8;}else{_0xc6b661=0xce;}_0x46a59b['status'](_0xc6b661);return _0x46a59b[_0xe9bd('0x21')](_0xe9bd('0x22'),_0x3bae08+'-'+_0x330733+'/'+_0x494b27)[_0xe9bd('0x1c')](_0x389e7b);}return null;};}function patchUpdates(_0x3dda13){return function(_0x1acb82){try{jsonpatch[_0xe9bd('0x23')](_0x1acb82,_0x3dda13,!![]);}catch(_0x6593ce){return BPromise['reject'](_0x6593ce);}return _0x1acb82[_0xe9bd('0x24')]();};}function saveUpdates(_0x28cd17,_0x4ecaf5){return function(_0x37aec1){if(_0x37aec1){return _0x37aec1['update'](_0x28cd17)[_0xe9bd('0x25')](function(_0x1b9cc9){return _0x1b9cc9;});}return null;};}function removeEntity(_0x36f8c0,_0xf02209){return function(_0x5bc4bf){if(_0x5bc4bf){return _0x5bc4bf[_0xe9bd('0x26')]()[_0xe9bd('0x25')](function(){var _0x2c9a57=_0x5bc4bf[_0xe9bd('0x27')]({'plain':!![]});var _0x2641be=_0xe9bd('0x28');return db[_0xe9bd('0x29')][_0xe9bd('0x26')]({'where':{'type':_0x2641be,'resourceId':_0x2c9a57['id']}})[_0xe9bd('0x25')](function(){return _0x5bc4bf;});})['then'](function(){_0x36f8c0[_0xe9bd('0x1a')](0xcc)[_0xe9bd('0x1b')]();});}};}function handleEntityNotFound(_0x5ba1d6,_0x3b13b7){return function(_0xc25248){if(!_0xc25248){_0x5ba1d6[_0xe9bd('0x19')](0x194);}return _0xc25248;};}function handleError(_0x429055,_0x141b95){_0x141b95=_0x141b95||0x1f4;return function(_0x183601){logger['error'](_0x183601['stack']);if(_0x183601[_0xe9bd('0x2a')]){delete _0x183601['name'];}_0x429055[_0xe9bd('0x1a')](_0x141b95)[_0xe9bd('0x2b')](_0x183601);};}exports[_0xe9bd('0x2c')]=function(_0x36aa80,_0x4057df){var _0x509e36={},_0x4b7bc2={},_0x7f2c5={'count':0x0,'rows':[]};var _0x3b6682=_[_0xe9bd('0x2d')](db[_0xe9bd('0x2e')][_0xe9bd('0x2f')],function(_0x1f0f9e){return{'name':_0x1f0f9e[_0xe9bd('0x30')],'type':_0x1f0f9e[_0xe9bd('0x31')][_0xe9bd('0x32')]};});_0x4b7bc2['model']=_[_0xe9bd('0x2d')](_0x3b6682,_0xe9bd('0x2a'));_0x4b7bc2[_0xe9bd('0x33')]=_['keys'](_0x36aa80['query']);_0x4b7bc2[_0xe9bd('0x34')]=_[_0xe9bd('0x35')](_0x4b7bc2[_0xe9bd('0x36')],_0x4b7bc2[_0xe9bd('0x33')]);_0x509e36[_0xe9bd('0x37')]=_[_0xe9bd('0x35')](_0x4b7bc2[_0xe9bd('0x36')],qs[_0xe9bd('0x38')](_0x36aa80[_0xe9bd('0x33')][_0xe9bd('0x38')]));_0x509e36[_0xe9bd('0x37')]=_0x509e36[_0xe9bd('0x37')][_0xe9bd('0x39')]?_0x509e36[_0xe9bd('0x37')]:_0x4b7bc2[_0xe9bd('0x36')];if(!_0x36aa80[_0xe9bd('0x33')][_0xe9bd('0x3a')](_0xe9bd('0x3b'))){_0x509e36['limit']=qs[_0xe9bd('0x1e')](_0x36aa80[_0xe9bd('0x33')]['limit']);_0x509e36[_0xe9bd('0x20')]=qs[_0xe9bd('0x20')](_0x36aa80['query']['offset']);}_0x509e36[_0xe9bd('0x3c')]=qs[_0xe9bd('0x3d')](_0x36aa80['query'][_0xe9bd('0x3d')]);_0x509e36[_0xe9bd('0x3e')]=qs[_0xe9bd('0x34')](_['pick'](_0x36aa80[_0xe9bd('0x33')],_0x4b7bc2['filters']),_0x3b6682);if(_0x36aa80[_0xe9bd('0x33')][_0xe9bd('0x3f')]){_0x509e36[_0xe9bd('0x3e')]=_[_0xe9bd('0x40')](_0x509e36['where'],{'$or':_[_0xe9bd('0x2d')](_0x3b6682,function(_0x3f0f87){if(_0x3f0f87[_0xe9bd('0x31')]!==_0xe9bd('0x41')){var _0x253359={};_0x253359[_0x3f0f87[_0xe9bd('0x2a')]]={'$like':'%'+_0x36aa80[_0xe9bd('0x33')][_0xe9bd('0x3f')]+'%'};return _0x253359;}})});}_0x509e36=_[_0xe9bd('0x40')]({},_0x509e36,_0x36aa80[_0xe9bd('0x42')]);var _0x4e8565={'where':_0x509e36['where']};return db[_0xe9bd('0x2e')]['count'](_0x4e8565)[_0xe9bd('0x25')](function(_0x340819){_0x7f2c5[_0xe9bd('0x1f')]=_0x340819;if(_0x36aa80['query'][_0xe9bd('0x43')]){_0x509e36[_0xe9bd('0x44')]=[{'all':!![]}];}return db[_0xe9bd('0x2e')]['findAll'](_0x509e36);})[_0xe9bd('0x25')](function(_0x3a5703){_0x7f2c5[_0xe9bd('0x45')]=_0x3a5703;return _0x7f2c5;})[_0xe9bd('0x25')](respondWithFilteredResult(_0x4057df,_0x509e36))[_0xe9bd('0x46')](handleError(_0x4057df,null));};exports[_0xe9bd('0x47')]=function(_0x221be7,_0x3c4482){var _0xe3f0c0={'raw':!![],'where':{'id':_0x221be7[_0xe9bd('0x48')]['id']}},_0x300e07={};_0x300e07[_0xe9bd('0x36')]=_[_0xe9bd('0x49')](db[_0xe9bd('0x2e')][_0xe9bd('0x2f')]);_0x300e07['query']=_['keys'](_0x221be7[_0xe9bd('0x33')]);_0x300e07[_0xe9bd('0x34')]=_[_0xe9bd('0x35')](_0x300e07['model'],_0x300e07['query']);_0xe3f0c0[_0xe9bd('0x37')]=_[_0xe9bd('0x35')](_0x300e07[_0xe9bd('0x36')],qs[_0xe9bd('0x38')](_0x221be7[_0xe9bd('0x33')][_0xe9bd('0x38')]));_0xe3f0c0[_0xe9bd('0x37')]=_0xe3f0c0['attributes'][_0xe9bd('0x39')]?_0xe3f0c0['attributes']:_0x300e07[_0xe9bd('0x36')];if(_0x221be7[_0xe9bd('0x33')][_0xe9bd('0x43')]){_0xe3f0c0[_0xe9bd('0x44')]=[{'all':!![]}];}_0xe3f0c0=_[_0xe9bd('0x40')]({},_0xe3f0c0,_0x221be7['options']);return db[_0xe9bd('0x2e')][_0xe9bd('0x4a')](_0xe3f0c0)[_0xe9bd('0x25')](handleEntityNotFound(_0x3c4482,null))['then'](respondWithResult(_0x3c4482,null))[_0xe9bd('0x46')](handleError(_0x3c4482,null));};exports[_0xe9bd('0x4b')]=function(_0x34f787,_0x5a466b){return db[_0xe9bd('0x2e')][_0xe9bd('0x4b')](_0x34f787[_0xe9bd('0x4c')],{})[_0xe9bd('0x25')](function(_0x1ee09c){var _0x579d26=_0x34f787[_0xe9bd('0x4d')]['get']({'plain':!![]});if(!_0x579d26)throw new Error(_0xe9bd('0x4e'));if(_0x579d26[_0xe9bd('0x4f')]===_0xe9bd('0x4d')){var _0x14b06b=_0x1ee09c[_0xe9bd('0x27')]({'plain':!![]});var _0x4944e3=_0xe9bd('0x28');return db['UserProfileSection'][_0xe9bd('0x4a')]({'where':{'name':_0x4944e3,'userProfileId':_0x579d26[_0xe9bd('0x50')]},'raw':!![]})['then'](function(_0x59d5cb){if(_0x59d5cb&&_0x59d5cb[_0xe9bd('0x51')]===0x0){return db['UserProfileResource'][_0xe9bd('0x4b')]({'name':_0x14b06b['name'],'resourceId':_0x14b06b['id'],'type':_0x59d5cb[_0xe9bd('0x2a')],'sectionId':_0x59d5cb['id']},{})[_0xe9bd('0x25')](function(){return _0x1ee09c;});}else{return _0x1ee09c;}})['catch'](function(_0x55f619){logger['error'](_0xe9bd('0x52'),_0x55f619);throw _0x55f619;});}return _0x1ee09c;})[_0xe9bd('0x25')](respondWithResult(_0x5a466b,0xc9))[_0xe9bd('0x46')](handleError(_0x5a466b,null));};exports['update']=function(_0xa2ef49,_0x1d703f){if(_0xa2ef49[_0xe9bd('0x4c')]['id']){delete _0xa2ef49[_0xe9bd('0x4c')]['id'];}return db['Tag']['find']({'where':{'id':_0xa2ef49[_0xe9bd('0x48')]['id']}})['then'](handleEntityNotFound(_0x1d703f,null))[_0xe9bd('0x25')](saveUpdates(_0xa2ef49[_0xe9bd('0x4c')],null))[_0xe9bd('0x25')](respondWithResult(_0x1d703f,null))[_0xe9bd('0x46')](handleError(_0x1d703f,null));};exports[_0xe9bd('0x26')]=function(_0x145ea3,_0x373057){return db[_0xe9bd('0x2e')][_0xe9bd('0x4a')]({'where':{'id':_0x145ea3[_0xe9bd('0x48')]['id']}})[_0xe9bd('0x25')](handleEntityNotFound(_0x373057,null))[_0xe9bd('0x25')](removeEntity(_0x373057,null))['catch'](handleError(_0x373057,null));};
\ No newline at end of file
+var _0xaa7c=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Tags','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','Tag','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','moment','bluebird','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x43071b,_0x1ce820){var _0x5553ff=function(_0x1727b4){while(--_0x1727b4){_0x43071b['push'](_0x43071b['shift']());}};_0x5553ff(++_0x1ce820);}(_0xaa7c,0x1ec));var _0xcaa7=function(_0xb0e466,_0x510dcd){_0xb0e466=_0xb0e466-0x0;var _0x27689e=_0xaa7c[_0xb0e466];return _0x27689e;};'use strict';var emlformat=require(_0xcaa7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcaa7('0x1'));var BPromise=require(_0xcaa7('0x2'));var Mustache=require('mustache');var util=require(_0xcaa7('0x3'));var path=require(_0xcaa7('0x4'));var sox=require(_0xcaa7('0x5'));var csv=require(_0xcaa7('0x6'));var ejs=require(_0xcaa7('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcaa7('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xcaa7('0x9'));var deskjs=require(_0xcaa7('0xa'));var toCsv=require(_0xcaa7('0x6'));var querystring=require('querystring');var Papa=require(_0xcaa7('0xb'));var Redis=require(_0xcaa7('0xc'));var authService=require(_0xcaa7('0xd'));var qs=require(_0xcaa7('0xe'));var as=require(_0xcaa7('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcaa7('0x10'))(_0xcaa7('0x11'));var utils=require(_0xcaa7('0x12'));var config=require(_0xcaa7('0x13'));var licenseUtil=require(_0xcaa7('0x14'));var db=require(_0xcaa7('0x15'))['db'];function respondWithStatusCode(_0x563f57,_0x24d3b0){_0x24d3b0=_0x24d3b0||0xcc;return function(_0x128cfb){if(_0x128cfb){return _0x563f57[_0xcaa7('0x16')](_0x24d3b0);}return _0x563f57[_0xcaa7('0x17')](_0x24d3b0)[_0xcaa7('0x18')]();};}function respondWithResult(_0x2eb4ff,_0x299490){_0x299490=_0x299490||0xc8;return function(_0x4a1d5a){if(_0x4a1d5a){return _0x2eb4ff['status'](_0x299490)[_0xcaa7('0x19')](_0x4a1d5a);}};}function respondWithFilteredResult(_0x1c1286,_0x1155fb){return function(_0x1b2c4f){if(_0x1b2c4f){var _0x49a218=typeof _0x1155fb[_0xcaa7('0x1a')]===_0xcaa7('0x1b')&&typeof _0x1155fb[_0xcaa7('0x1c')]===_0xcaa7('0x1b');var _0x46d9b4=_0x1b2c4f[_0xcaa7('0x1d')];var _0x20ede0=_0x49a218?0x0:_0x1155fb['offset'];var _0x53e1cb=_0x49a218?_0x1b2c4f[_0xcaa7('0x1d')]:_0x1155fb[_0xcaa7('0x1a')]+_0x1155fb[_0xcaa7('0x1c')];var _0x3bc53b;if(_0x53e1cb>=_0x46d9b4){_0x53e1cb=_0x46d9b4;_0x3bc53b=0xc8;}else{_0x3bc53b=0xce;}_0x1c1286[_0xcaa7('0x17')](_0x3bc53b);return _0x1c1286[_0xcaa7('0x1e')](_0xcaa7('0x1f'),_0x20ede0+'-'+_0x53e1cb+'/'+_0x46d9b4)['json'](_0x1b2c4f);}return null;};}function patchUpdates(_0x89e8a0){return function(_0x3650ac){try{jsonpatch[_0xcaa7('0x20')](_0x3650ac,_0x89e8a0,!![]);}catch(_0x11cbbf){return BPromise[_0xcaa7('0x21')](_0x11cbbf);}return _0x3650ac[_0xcaa7('0x22')]();};}function saveUpdates(_0x3119d5,_0x4259b7){return function(_0x2a9a79){if(_0x2a9a79){return _0x2a9a79[_0xcaa7('0x23')](_0x3119d5)[_0xcaa7('0x24')](function(_0x140c5a){return _0x140c5a;});}return null;};}function removeEntity(_0x24a18c,_0x56ee3a){return function(_0x97a507){if(_0x97a507){return _0x97a507[_0xcaa7('0x25')]()['then'](function(){var _0x3f0eb2=_0x97a507[_0xcaa7('0x26')]({'plain':!![]});var _0x146e6f=_0xcaa7('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x146e6f,'resourceId':_0x3f0eb2['id']}})[_0xcaa7('0x24')](function(){return _0x97a507;});})[_0xcaa7('0x24')](function(){_0x24a18c[_0xcaa7('0x17')](0xcc)[_0xcaa7('0x18')]();});}};}function handleEntityNotFound(_0x4391a9,_0x4ec9e9){return function(_0x1a2577){if(!_0x1a2577){_0x4391a9['sendStatus'](0x194);}return _0x1a2577;};}function handleError(_0x5b4914,_0x3f9833){_0x3f9833=_0x3f9833||0x1f4;return function(_0x492362){logger[_0xcaa7('0x28')](_0x492362[_0xcaa7('0x29')]);if(_0x492362[_0xcaa7('0x2a')]){delete _0x492362[_0xcaa7('0x2a')];}_0x5b4914[_0xcaa7('0x17')](_0x3f9833)[_0xcaa7('0x2b')](_0x492362);};}exports[_0xcaa7('0x2c')]=function(_0x3b9cea,_0x492843){var _0x19d02c={},_0x27cfd0={},_0x24b192={'count':0x0,'rows':[]};var _0x3b2c4c=_[_0xcaa7('0x2d')](db['Tag'][_0xcaa7('0x2e')],function(_0x394da5){return{'name':_0x394da5[_0xcaa7('0x2f')],'type':_0x394da5[_0xcaa7('0x30')][_0xcaa7('0x31')]};});_0x27cfd0['model']=_[_0xcaa7('0x2d')](_0x3b2c4c,'name');_0x27cfd0[_0xcaa7('0x32')]=_[_0xcaa7('0x33')](_0x3b9cea[_0xcaa7('0x32')]);_0x27cfd0['filters']=_[_0xcaa7('0x34')](_0x27cfd0[_0xcaa7('0x35')],_0x27cfd0[_0xcaa7('0x32')]);_0x19d02c[_0xcaa7('0x36')]=_[_0xcaa7('0x34')](_0x27cfd0[_0xcaa7('0x35')],qs['fields'](_0x3b9cea[_0xcaa7('0x32')][_0xcaa7('0x37')]));_0x19d02c['attributes']=_0x19d02c[_0xcaa7('0x36')][_0xcaa7('0x38')]?_0x19d02c[_0xcaa7('0x36')]:_0x27cfd0[_0xcaa7('0x35')];if(!_0x3b9cea['query'][_0xcaa7('0x39')](_0xcaa7('0x3a'))){_0x19d02c[_0xcaa7('0x1c')]=qs[_0xcaa7('0x1c')](_0x3b9cea[_0xcaa7('0x32')][_0xcaa7('0x1c')]);_0x19d02c[_0xcaa7('0x1a')]=qs[_0xcaa7('0x1a')](_0x3b9cea[_0xcaa7('0x32')][_0xcaa7('0x1a')]);}_0x19d02c[_0xcaa7('0x3b')]=qs[_0xcaa7('0x3c')](_0x3b9cea['query'][_0xcaa7('0x3c')]);_0x19d02c[_0xcaa7('0x3d')]=qs[_0xcaa7('0x3e')](_[_0xcaa7('0x3f')](_0x3b9cea[_0xcaa7('0x32')],_0x27cfd0['filters']),_0x3b2c4c);if(_0x3b9cea[_0xcaa7('0x32')][_0xcaa7('0x40')]){_0x19d02c[_0xcaa7('0x3d')]=_['merge'](_0x19d02c[_0xcaa7('0x3d')],{'$or':_[_0xcaa7('0x2d')](_0x3b2c4c,function(_0x320b46){if(_0x320b46[_0xcaa7('0x30')]!=='VIRTUAL'){var _0x3b7884={};_0x3b7884[_0x320b46['name']]={'$like':'%'+_0x3b9cea[_0xcaa7('0x32')]['filter']+'%'};return _0x3b7884;}})});}_0x19d02c=_[_0xcaa7('0x41')]({},_0x19d02c,_0x3b9cea['options']);var _0x4b03de={'where':_0x19d02c[_0xcaa7('0x3d')]};return db[_0xcaa7('0x42')]['count'](_0x4b03de)[_0xcaa7('0x24')](function(_0xce58ab){_0x24b192[_0xcaa7('0x1d')]=_0xce58ab;if(_0x3b9cea[_0xcaa7('0x32')][_0xcaa7('0x43')]){_0x19d02c[_0xcaa7('0x44')]=[{'all':!![]}];}return db[_0xcaa7('0x42')][_0xcaa7('0x45')](_0x19d02c);})['then'](function(_0x23aa22){_0x24b192[_0xcaa7('0x46')]=_0x23aa22;return _0x24b192;})[_0xcaa7('0x24')](respondWithFilteredResult(_0x492843,_0x19d02c))[_0xcaa7('0x47')](handleError(_0x492843,null));};exports[_0xcaa7('0x48')]=function(_0x3d6c26,_0x571bf8){var _0xe39729={'raw':!![],'where':{'id':_0x3d6c26[_0xcaa7('0x49')]['id']}},_0x3da46d={};_0x3da46d[_0xcaa7('0x35')]=_[_0xcaa7('0x33')](db['Tag'][_0xcaa7('0x2e')]);_0x3da46d[_0xcaa7('0x32')]=_[_0xcaa7('0x33')](_0x3d6c26['query']);_0x3da46d[_0xcaa7('0x3e')]=_['intersection'](_0x3da46d[_0xcaa7('0x35')],_0x3da46d[_0xcaa7('0x32')]);_0xe39729[_0xcaa7('0x36')]=_[_0xcaa7('0x34')](_0x3da46d[_0xcaa7('0x35')],qs[_0xcaa7('0x37')](_0x3d6c26[_0xcaa7('0x32')]['fields']));_0xe39729['attributes']=_0xe39729[_0xcaa7('0x36')]['length']?_0xe39729[_0xcaa7('0x36')]:_0x3da46d['model'];if(_0x3d6c26[_0xcaa7('0x32')]['includeAll']){_0xe39729[_0xcaa7('0x44')]=[{'all':!![]}];}_0xe39729=_[_0xcaa7('0x41')]({},_0xe39729,_0x3d6c26[_0xcaa7('0x4a')]);return db[_0xcaa7('0x42')][_0xcaa7('0x4b')](_0xe39729)[_0xcaa7('0x24')](handleEntityNotFound(_0x571bf8,null))['then'](respondWithResult(_0x571bf8,null))['catch'](handleError(_0x571bf8,null));};exports[_0xcaa7('0x4c')]=function(_0x3a5f1f,_0x4f162c){return db[_0xcaa7('0x42')][_0xcaa7('0x4c')](_0x3a5f1f[_0xcaa7('0x4d')],{})[_0xcaa7('0x24')](function(_0x14da9e){var _0x2ca644=_0x3a5f1f[_0xcaa7('0x4e')][_0xcaa7('0x26')]({'plain':!![]});if(!_0x2ca644)throw new Error(_0xcaa7('0x4f'));if(_0x2ca644[_0xcaa7('0x50')]===_0xcaa7('0x4e')){var _0x3cc7ae=_0x14da9e[_0xcaa7('0x26')]({'plain':!![]});var _0x3e77a9=_0xcaa7('0x27');return db[_0xcaa7('0x51')]['find']({'where':{'name':_0x3e77a9,'userProfileId':_0x2ca644[_0xcaa7('0x52')]},'raw':!![]})['then'](function(_0x3e1828){if(_0x3e1828&&_0x3e1828[_0xcaa7('0x53')]===0x0){return db[_0xcaa7('0x54')][_0xcaa7('0x4c')]({'name':_0x3cc7ae[_0xcaa7('0x2a')],'resourceId':_0x3cc7ae['id'],'type':_0x3e1828[_0xcaa7('0x2a')],'sectionId':_0x3e1828['id']},{})[_0xcaa7('0x24')](function(){return _0x14da9e;});}else{return _0x14da9e;}})[_0xcaa7('0x47')](function(_0x8a27a7){logger[_0xcaa7('0x28')](_0xcaa7('0x55'),_0x8a27a7);throw _0x8a27a7;});}return _0x14da9e;})['then'](respondWithResult(_0x4f162c,0xc9))[_0xcaa7('0x47')](handleError(_0x4f162c,null));};exports[_0xcaa7('0x23')]=function(_0x467fb5,_0x50e918){if(_0x467fb5[_0xcaa7('0x4d')]['id']){delete _0x467fb5['body']['id'];}return db[_0xcaa7('0x42')][_0xcaa7('0x4b')]({'where':{'id':_0x467fb5[_0xcaa7('0x49')]['id']}})[_0xcaa7('0x24')](handleEntityNotFound(_0x50e918,null))['then'](saveUpdates(_0x467fb5[_0xcaa7('0x4d')],null))[_0xcaa7('0x24')](respondWithResult(_0x50e918,null))[_0xcaa7('0x47')](handleError(_0x50e918,null));};exports[_0xcaa7('0x25')]=function(_0x1300c3,_0x2d219a){return db[_0xcaa7('0x42')][_0xcaa7('0x4b')]({'where':{'id':_0x1300c3['params']['id']}})[_0xcaa7('0x24')](handleEntityNotFound(_0x2d219a,null))[_0xcaa7('0x24')](removeEntity(_0x2d219a,null))[_0xcaa7('0x47')](handleError(_0x2d219a,null));};
\ No newline at end of file
index b887192..1214604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x612d=['api','moment','request-promise','path','rimraf','./tag.attributes','exports','define','Tag','tools_tags','lodash','util','../../config/logger'];(function(_0x37ea89,_0x19b9e5){var _0x4c0d05=function(_0x5cfc42){while(--_0x5cfc42){_0x37ea89['push'](_0x37ea89['shift']());}};_0x4c0d05(++_0x19b9e5);}(_0x612d,0x176));var _0xd612=function(_0x582df7,_0x3d02cf){_0x582df7=_0x582df7-0x0;var _0x5081fd=_0x612d[_0x582df7];return _0x5081fd;};'use strict';var _=require(_0xd612('0x0'));var util=require(_0xd612('0x1'));var logger=require(_0xd612('0x2'))(_0xd612('0x3'));var moment=require(_0xd612('0x4'));var BPromise=require('bluebird');var rp=require(_0xd612('0x5'));var fs=require('fs');var path=require(_0xd612('0x6'));var rimraf=require(_0xd612('0x7'));var config=require('../../config/environment');var attributes=require(_0xd612('0x8'));module[_0xd612('0x9')]=function(_0x2e498d,_0x36c51d){return _0x2e498d[_0xd612('0xa')](_0xd612('0xb'),attributes,{'tableName':_0xd612('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x66db=['rimraf','./tag.attributes','exports','define','Tag','tools_tags','util','bluebird','request-promise','path'];(function(_0x557394,_0x1c5bfb){var _0x5aba92=function(_0x6747b1){while(--_0x6747b1){_0x557394['push'](_0x557394['shift']());}};_0x5aba92(++_0x1c5bfb);}(_0x66db,0x1be));var _0xb66d=function(_0x4bc5a1,_0x37c38f){_0x4bc5a1=_0x4bc5a1-0x0;var _0x78b87d=_0x66db[_0x4bc5a1];return _0x78b87d;};'use strict';var _=require('lodash');var util=require(_0xb66d('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xb66d('0x1'));var rp=require(_0xb66d('0x2'));var fs=require('fs');var path=require(_0xb66d('0x3'));var rimraf=require(_0xb66d('0x4'));var config=require('../../config/environment');var attributes=require(_0xb66d('0x5'));module[_0xb66d('0x6')]=function(_0x16e3fe,_0xdb94ee){return _0x16e3fe[_0xb66d('0x7')](_0xb66d('0x8'),attributes,{'tableName':_0xb66d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8681e2e..e6d3d84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c3=['jayson/promise','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x89c3,0xff));var _0x389c=function(_0x174a1,_0x5b9db4){_0x174a1=_0x174a1-0x0;var _0xb9eddc=_0x89c3[_0x174a1];return _0xb9eddc;};'use strict';var _=require(_0x389c('0x0'));var util=require(_0x389c('0x1'));var moment=require(_0x389c('0x2'));var BPromise=require(_0x389c('0x3'));var rs=require(_0x389c('0x4'));var fs=require('fs');var Redis=require(_0x389c('0x5'));var db=require(_0x389c('0x6'))['db'];var utils=require(_0x389c('0x7'));var logger=require('../../config/logger')(_0x389c('0x8'));var config=require('../../config/environment');var jayson=require(_0x389c('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2f3e3f,_0x4a83ab,_0x58bf11){return new BPromise(function(_0x33cb72,_0x41b63b){return client[_0x389c('0xa')](_0x2f3e3f,_0x58bf11)[_0x389c('0xb')](function(_0x41c92b){logger[_0x389c('0xc')](_0x389c('0xd'),_0x4a83ab,_0x389c('0xe'));logger[_0x389c('0xf')]('Tag,\x20%s,\x20%s,\x20%s',_0x4a83ab,_0x389c('0xe'),JSON[_0x389c('0x10')](_0x41c92b));if(_0x41c92b[_0x389c('0x11')]){if(_0x41c92b[_0x389c('0x11')][_0x389c('0x12')]===0x1f4){logger['error']('Tag,\x20%s,\x20%s',_0x4a83ab,_0x41c92b[_0x389c('0x11')][_0x389c('0x13')]);return _0x41b63b(_0x41c92b[_0x389c('0x11')]['message']);}logger[_0x389c('0x11')]('Tag,\x20%s,\x20%s',_0x4a83ab,_0x41c92b[_0x389c('0x11')][_0x389c('0x13')]);return _0x33cb72(_0x41c92b['error'][_0x389c('0x13')]);}else{logger[_0x389c('0xc')](_0x389c('0xd'),_0x4a83ab,'request\x20sent');_0x33cb72(_0x41c92b[_0x389c('0x14')][_0x389c('0x13')]);}})[_0x389c('0x15')](function(_0x3d6099){logger[_0x389c('0x11')]('Tag,\x20%s,\x20%s',_0x4a83ab,_0x3d6099);_0x41b63b(_0x3d6099);});});}
\ No newline at end of file
+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(_0x4dc542,_0x4cb925){var _0x2face3=function(_0x3bde09){while(--_0x3bde09){_0x4dc542['push'](_0x4dc542['shift']());}};_0x2face3(++_0x4cb925);}(_0x34e8,0x12c));var _0x834e=function(_0x5e0b1d,_0x23b2e4){_0x5e0b1d=_0x5e0b1d-0x0;var _0x223ce7=_0x34e8[_0x5e0b1d];return _0x223ce7;};'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
index bf5de51..1b0b159 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(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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 32aa8b0..6f186e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['STRING','sequelize','exports'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xe706,0xa3));var _0x6e70=function(_0x2f5a22,_0x5e9f03){_0x2f5a22=_0x2f5a22-0x0;var _0x326b70=_0xe706[_0x2f5a22];return _0x326b70;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x528fdf,_0x51fb08){var _0x47093d=function(_0x49763f){while(--_0x49763f){_0x528fdf['push'](_0x528fdf['shift']());}};_0x47093d(++_0x51fb08);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index 68a353e..225c056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe18e=['./team.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','error','name','send','index','map','Team','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','keys','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','transaction','sequelize','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','UserVoiceQueue','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','UserProfileResource','Teams','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queues','addQueues','add','removeQueues','ids','addAgents','isArray','Voice','Chat','Openchannel','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','Queue','findOrCreate','emit','Queue:save','UserVoiceQueueRt','upsert','interface','format','SIP/%s','voicePause','all','spread','removeAgents','Mail','Sms','Fax','Queue:remove','getAgents','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter'];(function(_0x3081e2,_0x3a5881){var _0x624489=function(_0x398ca8){while(--_0x398ca8){_0x3081e2['push'](_0x3081e2['shift']());}};_0x624489(++_0x3a5881);}(_0xe18e,0x7e));var _0xee18=function(_0x56d246,_0x4c7bb5){_0x56d246=_0x56d246-0x0;var _0xc8d3b5=_0xe18e[_0x56d246];return _0xc8d3b5;};'use strict';var emlformat=require(_0xee18('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xee18('0x1'));var jsonpatch=require(_0xee18('0x2'));var rp=require(_0xee18('0x3'));var moment=require('moment');var BPromise=require(_0xee18('0x4'));var Mustache=require(_0xee18('0x5'));var util=require(_0xee18('0x6'));var path=require(_0xee18('0x7'));var sox=require('sox');var csv=require(_0xee18('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xee18('0x9'));var squel=require(_0xee18('0xa'));var crypto=require(_0xee18('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xee18('0xc'));var toCsv=require(_0xee18('0x8'));var querystring=require(_0xee18('0xd'));var Papa=require('papaparse');var Redis=require(_0xee18('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xee18('0xf'));var as=require(_0xee18('0x10'));var hardwareService=require(_0xee18('0x11'));var logger=require(_0xee18('0x12'))(_0xee18('0x13'));var utils=require(_0xee18('0x14'));var config=require(_0xee18('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xee18('0x16'))['db'];config['redis']=_[_0xee18('0x17')](config[_0xee18('0x18')],{'host':_0xee18('0x19'),'port':0x18eb});var socket=require(_0xee18('0x1a'))(new Redis(config[_0xee18('0x18')]));require(_0xee18('0x1b'))['register'](socket);function respondWithStatusCode(_0x1aab26,_0x26a36e){_0x26a36e=_0x26a36e||0xcc;return function(_0x40d6a2){if(_0x40d6a2){return _0x1aab26[_0xee18('0x1c')](_0x26a36e);}return _0x1aab26[_0xee18('0x1d')](_0x26a36e)[_0xee18('0x1e')]();};}function respondWithResult(_0x1abeac,_0x1e3b14){_0x1e3b14=_0x1e3b14||0xc8;return function(_0x10c731){if(_0x10c731){return _0x1abeac[_0xee18('0x1d')](_0x1e3b14)[_0xee18('0x1f')](_0x10c731);}};}function respondWithFilteredResult(_0xf5d3c8,_0x501403){return function(_0x173baf){if(_0x173baf){var _0x84cc2e=typeof _0x501403[_0xee18('0x20')]===_0xee18('0x21')&&typeof _0x501403['limit']==='undefined';var _0x2fc462=_0x173baf[_0xee18('0x22')];var _0x4622d6=_0x84cc2e?0x0:_0x501403[_0xee18('0x20')];var _0x46e7fd=_0x84cc2e?_0x173baf[_0xee18('0x22')]:_0x501403[_0xee18('0x20')]+_0x501403[_0xee18('0x23')];var _0x23cd8f;if(_0x46e7fd>=_0x2fc462){_0x46e7fd=_0x2fc462;_0x23cd8f=0xc8;}else{_0x23cd8f=0xce;}_0xf5d3c8[_0xee18('0x1d')](_0x23cd8f);return _0xf5d3c8[_0xee18('0x24')](_0xee18('0x25'),_0x4622d6+'-'+_0x46e7fd+'/'+_0x2fc462)[_0xee18('0x1f')](_0x173baf);}return null;};}function patchUpdates(_0xaef5d0){return function(_0x518707){try{jsonpatch[_0xee18('0x26')](_0x518707,_0xaef5d0,!![]);}catch(_0x4a4248){return BPromise['reject'](_0x4a4248);}return _0x518707['save']();};}function saveUpdates(_0x1e0ee1,_0x34c997){return function(_0x5978b9){if(_0x5978b9){return _0x5978b9[_0xee18('0x27')](_0x1e0ee1)[_0xee18('0x28')](function(_0x21bb6b){return _0x21bb6b;});}return null;};}function handleEntityNotFound(_0x57b889,_0x1c03ee){return function(_0x4b21fa){if(!_0x4b21fa){_0x57b889[_0xee18('0x1c')](0x194);}return _0x4b21fa;};}function handleError(_0x27212d,_0x3fe145){_0x3fe145=_0x3fe145||0x1f4;return function(_0x578b73){logger[_0xee18('0x29')](_0x578b73['stack']);if(_0x578b73[_0xee18('0x2a')]){delete _0x578b73[_0xee18('0x2a')];}_0x27212d['status'](_0x3fe145)[_0xee18('0x2b')](_0x578b73);};}exports[_0xee18('0x2c')]=function(_0x31f976,_0x2a1c5b){var _0x50bc7b={},_0x519875={},_0x3324cd={'count':0x0,'rows':[]};var _0x315031=_[_0xee18('0x2d')](db[_0xee18('0x2e')]['rawAttributes'],function(_0x46f8a0){return{'name':_0x46f8a0[_0xee18('0x2f')],'type':_0x46f8a0[_0xee18('0x30')][_0xee18('0x31')]};});_0x519875[_0xee18('0x32')]=_[_0xee18('0x2d')](_0x315031,'name');_0x519875[_0xee18('0x33')]=_['keys'](_0x31f976[_0xee18('0x33')]);_0x519875[_0xee18('0x34')]=_[_0xee18('0x35')](_0x519875[_0xee18('0x32')],_0x519875[_0xee18('0x33')]);_0x50bc7b[_0xee18('0x36')]=_[_0xee18('0x35')](_0x519875['model'],qs[_0xee18('0x37')](_0x31f976[_0xee18('0x33')][_0xee18('0x37')]));_0x50bc7b[_0xee18('0x36')]=_0x50bc7b['attributes'][_0xee18('0x38')]?_0x50bc7b[_0xee18('0x36')]:_0x519875[_0xee18('0x32')];if(!_0x31f976[_0xee18('0x33')][_0xee18('0x39')]('nolimit')){_0x50bc7b['limit']=qs[_0xee18('0x23')](_0x31f976[_0xee18('0x33')][_0xee18('0x23')]);_0x50bc7b[_0xee18('0x20')]=qs[_0xee18('0x20')](_0x31f976['query'][_0xee18('0x20')]);}_0x50bc7b[_0xee18('0x3a')]=qs['sort'](_0x31f976['query'][_0xee18('0x3b')]);_0x50bc7b[_0xee18('0x3c')]=qs[_0xee18('0x34')](_[_0xee18('0x3d')](_0x31f976[_0xee18('0x33')],_0x519875[_0xee18('0x34')]),_0x315031);if(_0x31f976['query'][_0xee18('0x3e')]){_0x50bc7b['where']=_[_0xee18('0x3f')](_0x50bc7b[_0xee18('0x3c')],{'$or':_[_0xee18('0x2d')](_0x315031,function(_0x2e7f32){if(_0x2e7f32[_0xee18('0x30')]!==_0xee18('0x40')){var _0x297dfb={};_0x297dfb[_0x2e7f32['name']]={'$like':'%'+_0x31f976[_0xee18('0x33')]['filter']+'%'};return _0x297dfb;}})});}_0x50bc7b=_[_0xee18('0x3f')]({},_0x50bc7b,_0x31f976[_0xee18('0x41')]);var _0x401e7c={'where':_0x50bc7b[_0xee18('0x3c')]};return db[_0xee18('0x2e')][_0xee18('0x22')](_0x401e7c)[_0xee18('0x28')](function(_0xf382f3){_0x3324cd[_0xee18('0x22')]=_0xf382f3;if(_0x31f976[_0xee18('0x33')][_0xee18('0x42')]){_0x50bc7b[_0xee18('0x43')]=[{'all':!![]}];}return db['Team'][_0xee18('0x44')](_0x50bc7b);})[_0xee18('0x28')](function(_0x22bc4b){_0x3324cd[_0xee18('0x45')]=_0x22bc4b;return _0x3324cd;})[_0xee18('0x28')](respondWithFilteredResult(_0x2a1c5b,_0x50bc7b))['catch'](handleError(_0x2a1c5b,null));};exports[_0xee18('0x46')]=function(_0x1e10cf,_0x4542c5){var _0x308667={'raw':![],'where':{'id':_0x1e10cf[_0xee18('0x47')]['id']}},_0x17c396={};_0x17c396[_0xee18('0x32')]=_['keys'](db['Team'][_0xee18('0x48')]);_0x17c396[_0xee18('0x33')]=_[_0xee18('0x49')](_0x1e10cf[_0xee18('0x33')]);_0x17c396['filters']=_[_0xee18('0x35')](_0x17c396[_0xee18('0x32')],_0x17c396[_0xee18('0x33')]);_0x308667[_0xee18('0x36')]=_['intersection'](_0x17c396['model'],qs[_0xee18('0x37')](_0x1e10cf['query'][_0xee18('0x37')]));_0x308667[_0xee18('0x36')]=_0x308667[_0xee18('0x36')][_0xee18('0x38')]?_0x308667['attributes']:_0x17c396[_0xee18('0x32')];if(_0x1e10cf['query'][_0xee18('0x42')]){_0x308667[_0xee18('0x43')]=[{'all':!![]}];}_0x308667=_[_0xee18('0x3f')]({},_0x308667,_0x1e10cf[_0xee18('0x41')]);return db[_0xee18('0x2e')]['find'](_0x308667)[_0xee18('0x28')](handleEntityNotFound(_0x4542c5,null))['then'](respondWithResult(_0x4542c5,null))[_0xee18('0x4a')](handleError(_0x4542c5,null));};exports[_0xee18('0x4b')]=function(_0x5820d5,_0x191cb8){return db[_0xee18('0x2e')][_0xee18('0x4b')](_0x5820d5[_0xee18('0x4c')],{})[_0xee18('0x28')](function(_0x1ce798){var _0x476368=_0x5820d5[_0xee18('0x4d')][_0xee18('0x4e')]({'plain':!![]});if(!_0x476368)throw new Error(_0xee18('0x4f'));if(_0x476368['role']===_0xee18('0x4d')){var _0x2e0852=_0x1ce798[_0xee18('0x4e')]({'plain':!![]});var _0x4a0e42='Teams';return db['UserProfileSection'][_0xee18('0x50')]({'where':{'name':_0x4a0e42,'userProfileId':_0x476368['userProfileId']},'raw':!![]})[_0xee18('0x28')](function(_0x519747){if(_0x519747&&_0x519747['autoAssociation']===0x0){return db['UserProfileResource'][_0xee18('0x4b')]({'name':_0x2e0852[_0xee18('0x2a')],'resourceId':_0x2e0852['id'],'type':_0x519747['name'],'sectionId':_0x519747['id']},{})[_0xee18('0x28')](function(){return _0x1ce798;});}else{return _0x1ce798;}})[_0xee18('0x4a')](function(_0x1ed2c2){logger[_0xee18('0x29')](_0xee18('0x51'),_0x1ed2c2);throw _0x1ed2c2;});}return _0x1ce798;})['then'](respondWithResult(_0x191cb8,0xc9))[_0xee18('0x4a')](handleError(_0x191cb8,null));};exports[_0xee18('0x27')]=function(_0x109ead,_0x18e968){if(_0x109ead[_0xee18('0x4c')]['id']){delete _0x109ead[_0xee18('0x4c')]['id'];}return db['Team'][_0xee18('0x50')]({'where':{'id':_0x109ead['params']['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x18e968,null))[_0xee18('0x28')](saveUpdates(_0x109ead[_0xee18('0x4c')],null))['then'](respondWithResult(_0x18e968,null))[_0xee18('0x4a')](handleError(_0x18e968,null));};exports[_0xee18('0x52')]=function(_0x245419,_0x19b657){var _0x39de2a=_0x245419['params']['id'];var _0x1615ca=[];return db['sequelize'][_0xee18('0x53')](function(_0x420336){var _0x76cbd5='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x39de2a;return db[_0xee18('0x54')]['query'](_0x76cbd5,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336})['then'](function(_0x46fada){_0x1615ca=_[_0xee18('0x2d')](_0x46fada,function(_0x1b53e0){return Number(_0x1b53e0[_0xee18('0x58')]);});})[_0xee18('0x28')](function(){var _0x108435=_0xee18('0x59')+_0x39de2a;return db[_0xee18('0x54')]['query'](_0x108435,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x396d60){var _0x93735c=_[_0xee18('0x2d')](_0x396d60,function(_0x228f4a){return Number(_0x228f4a['VoiceQueueId']);});return db[_0xee18('0x5a')][_0xee18('0x52')]({'where':{'UserId':{'$in':_0x1615ca},'VoiceQueueId':{'$in':_0x93735c}},'transaction':_0x420336});})[_0xee18('0x28')](function(){var _0x111091='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x39de2a;return db[_0xee18('0x54')][_0xee18('0x33')](_0x111091,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x459cb9){var _0x539d2c=_['map'](_0x459cb9,function(_0x1f2fee){return Number(_0x1f2fee[_0xee18('0x5b')]);});return db[_0xee18('0x5c')][_0xee18('0x52')]({'where':{'UserId':{'$in':_0x1615ca},'MailQueueId':{'$in':_0x539d2c}},'transaction':_0x420336});})[_0xee18('0x28')](function(){var _0x173955=_0xee18('0x5d')+_0x39de2a;return db[_0xee18('0x54')][_0xee18('0x33')](_0x173955,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x54cbee){var _0x1c5161=_[_0xee18('0x2d')](_0x54cbee,function(_0x30ff5c){return Number(_0x30ff5c[_0xee18('0x5e')]);});return db[_0xee18('0x5f')][_0xee18('0x52')]({'where':{'UserId':{'$in':_0x1615ca},'SmsQueueId':{'$in':_0x1c5161}},'transaction':_0x420336});})['then'](function(){var _0x50aa8f=_0xee18('0x60')+_0x39de2a;return db[_0xee18('0x54')][_0xee18('0x33')](_0x50aa8f,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x5c3e1b){var _0x51cfe6=_[_0xee18('0x2d')](_0x5c3e1b,function(_0x18fcb2){return Number(_0x18fcb2['ChatQueueId']);});return db[_0xee18('0x61')]['destroy']({'where':{'UserId':{'$in':_0x1615ca},'ChatQueueId':{'$in':_0x51cfe6}},'transaction':_0x420336});})[_0xee18('0x28')](function(){var _0x552585=_0xee18('0x62')+_0x39de2a;return db[_0xee18('0x54')][_0xee18('0x33')](_0x552585,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x451ef7){var _0xdcb9f5=_[_0xee18('0x2d')](_0x451ef7,function(_0x4b78ba){return Number(_0x4b78ba[_0xee18('0x63')]);});return db['UserFaxQueue'][_0xee18('0x52')]({'where':{'UserId':{'$in':_0x1615ca},'FaxQueueId':{'$in':_0xdcb9f5}},'transaction':_0x420336});})[_0xee18('0x28')](function(){var _0x3eb41f=_0xee18('0x64')+_0x39de2a;return db[_0xee18('0x54')]['query'](_0x3eb41f,{'type':db[_0xee18('0x55')][_0xee18('0x56')]['SELECT'],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x28685e){var _0x17d4db=_['map'](_0x28685e,function(_0x11cf04){return Number(_0x11cf04[_0xee18('0x65')]);});return db[_0xee18('0x66')][_0xee18('0x52')]({'where':{'UserId':{'$in':_0x1615ca},'OpenchannelQueueId':{'$in':_0x17d4db}},'transaction':_0x420336});})[_0xee18('0x28')](function(){var _0x576798='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x39de2a;return db['sequelize']['query'](_0x576798,{'type':db[_0xee18('0x55')][_0xee18('0x56')][_0xee18('0x57')],'raw':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x359741){var _0x2670ce=_['map'](_0x359741,function(_0x55ae2a){return Number(_0x55ae2a[_0xee18('0x67')]);});return db[_0xee18('0x68')][_0xee18('0x52')]({'where':{'UserId':{'$in':_0x1615ca},'WhatsappQueueId':{'$in':_0x2670ce}},'transaction':_0x420336});})[_0xee18('0x28')](function(){return db[_0xee18('0x69')]['find']({'where':{'TeamId':_0x39de2a}});})['then'](function(_0x4a3bda){if(_0x4a3bda===null){return;}return db[_0xee18('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x1615ca},'VoicePrefixId':_0x4a3bda[_0xee18('0x6b')]},'transaction':_0x420336});})[_0xee18('0x28')](function(){return db[_0xee18('0x2e')][_0xee18('0x52')]({'where':{'id':_0x39de2a},'cascade':!![],'transaction':_0x420336});})[_0xee18('0x28')](function(_0x4e3e9a){if(_0x4e3e9a===0x0){_0x19b657['sendStatus'](0x194);}else{return db[_0xee18('0x6c')][_0xee18('0x52')]({'where':{'type':_0xee18('0x6d'),'resourceId':_0x39de2a},'cascade':!![],'transaction':_0x420336})[_0xee18('0x28')](function(){_0x19b657['status'](0xcc)[_0xee18('0x1e')]();});}})['catch'](function(_0x3437a9){_0x19b657[_0xee18('0x1d')](0x1f4)['send'](_0x3437a9);});});};exports[_0xee18('0x6e')]=function(_0xa753de,_0x46a6ba,_0x101279){return db['Team'][_0xee18('0x6f')]({'where':{'id':_0xa753de[_0xee18('0x47')]['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x46a6ba,null))[_0xee18('0x28')](function(_0x36e975){if(!_0xa753de[_0xee18('0x33')][_0xee18('0x70')]||!utils[_0xee18('0x71')](_0xa753de[_0xee18('0x33')][_0xee18('0x70')])){throw new db[(_0xee18('0x55'))][(_0xee18('0x72'))](_0xee18('0x73'));}var _0x514f4f={};var _0x12a5eb={};_0x12a5eb['model']=_[_0xee18('0x49')](db[_[_0xee18('0x74')](_0xa753de[_0xee18('0x33')][_0xee18('0x70')][_0xee18('0x75')]())+'Queue'][_0xee18('0x48')]);_0x12a5eb[_0xee18('0x33')]=_[_0xee18('0x49')](_0xa753de['query']);_0x12a5eb[_0xee18('0x34')]=_[_0xee18('0x35')](_0x12a5eb[_0xee18('0x32')],_0x12a5eb[_0xee18('0x33')]);_0x514f4f['attributes']=_['intersection'](_0x12a5eb[_0xee18('0x32')],qs[_0xee18('0x37')](_0xa753de[_0xee18('0x33')][_0xee18('0x37')]));_0x514f4f['attributes']=_0x514f4f['attributes']['length']?_0x514f4f[_0xee18('0x36')]:_0x12a5eb['model'];_0x514f4f[_0xee18('0x23')]=qs[_0xee18('0x23')](_0xa753de[_0xee18('0x33')][_0xee18('0x23')]);_0x514f4f['offset']=qs[_0xee18('0x20')](_0xa753de['query'][_0xee18('0x20')]);_0x514f4f['order']=qs[_0xee18('0x3b')](_0xa753de[_0xee18('0x33')][_0xee18('0x3b')]);_0x514f4f[_0xee18('0x3c')]=qs[_0xee18('0x34')](_['pick'](_0xa753de['query'],_0x12a5eb[_0xee18('0x34')]));_0x514f4f=_[_0xee18('0x3f')]({},_0x514f4f,_0xa753de[_0xee18('0x41')]);return _0x36e975[_0xee18('0x4e')+_[_0xee18('0x74')](_0xa753de[_0xee18('0x33')][_0xee18('0x70')][_0xee18('0x75')]())+_0xee18('0x76')](_0x514f4f);})[_0xee18('0x28')](respondWithResult(_0x46a6ba,null))[_0xee18('0x4a')](handleError(_0x46a6ba,null));};exports[_0xee18('0x77')]=function(_0x58a4a4,_0x39a418,_0x5f0f05){return db[_0xee18('0x2e')][_0xee18('0x6f')]({'where':{'id':_0x58a4a4['params']['id']}})[_0xee18('0x28')](function(_0x442f1f){if(_0x442f1f){if(!_0x58a4a4[_0xee18('0x4c')][_0xee18('0x70')]||!utils['isValidChannel'](_0x58a4a4['body'][_0xee18('0x70')])){throw new db[(_0xee18('0x55'))][(_0xee18('0x72'))](_0xee18('0x73'));}return _0x442f1f[_0xee18('0x78')+_['capitalize'](_0x58a4a4[_0xee18('0x4c')][_0xee18('0x70')]['toLowerCase']())+'Queues'](_0x58a4a4[_0xee18('0x4c')]['ids']);}return null;})['then'](handleEntityNotFound(_0x39a418,null))[_0xee18('0x28')](respondWithStatusCode(_0x39a418,null))[_0xee18('0x4a')](handleError(_0x39a418,null));};exports[_0xee18('0x79')]=function(_0xfdd8a,_0x10e256,_0x36f5fb){return db[_0xee18('0x2e')]['findOne']({'where':{'id':_0xfdd8a[_0xee18('0x47')]['id']}})[_0xee18('0x28')](function(_0x16ace9){if(_0x16ace9){if(!_0xfdd8a[_0xee18('0x33')]['channel']||!utils[_0xee18('0x71')](_0xfdd8a[_0xee18('0x33')][_0xee18('0x70')])){throw new db[(_0xee18('0x55'))]['ValidationError'](_0xee18('0x73'));}return _0x16ace9['remove'+_[_0xee18('0x74')](_0xfdd8a[_0xee18('0x33')][_0xee18('0x70')][_0xee18('0x75')]())+_0xee18('0x76')](_0xfdd8a[_0xee18('0x33')][_0xee18('0x7a')]);}return null;})['then'](handleEntityNotFound(_0x10e256,null))['then'](respondWithStatusCode(_0x10e256,null))[_0xee18('0x4a')](handleError(_0x10e256,null));};exports[_0xee18('0x7b')]=function(_0x59fbfc,_0x1a0cf3){var _0x3275fa=_[_0xee18('0x7c')](_0x59fbfc[_0xee18('0x4c')]['ids'])?_0x59fbfc[_0xee18('0x4c')][_0xee18('0x7a')]:[_0x59fbfc['body'][_0xee18('0x7a')]];var _0x3ee613=_0x59fbfc[_0xee18('0x47')]['id'];return db['Team'][_0xee18('0x50')]({'where':{'id':_0x3ee613}})[_0xee18('0x28')](handleEntityNotFound(_0x1a0cf3,null))[_0xee18('0x28')](function(_0x1a1376){if(_0x1a1376){var _0x20c4a9=[_0xee18('0x7d'),_0xee18('0x7e'),'Mail','Sms','Fax',_0xee18('0x7f'),_0xee18('0x80')];return db[_0xee18('0x54')][_0xee18('0x53')](function(_0x4c40f2){var _0x570779=_[_0xee18('0x2d')](_0x20c4a9,function(_0x1ab8c7){var _0x4fb026={'attributes':['id',_0xee18('0x2a')]};if(_0x1ab8c7==='Voice'){_0x4fb026[_0xee18('0x81')]={'attributes':[_0xee18('0x82')]};}return _0x1a1376[_0xee18('0x4e')+_0x1ab8c7+'Queues'](_0x4fb026)[_0xee18('0x28')](function(_0xb2efad){var _0x2817bf=_['map'](_0xb2efad,function(_0x5d53e6){var _0x257738=_[_0xee18('0x2d')](_0x3275fa,function(_0x4086f5){var _0x2226c0={'where':{'UserId':_0x4086f5,[_0x1ab8c7+_0xee18('0x83')]:_0x5d53e6['id']},'transaction':_0x4c40f2};if(_0x1ab8c7==='Voice'){_0x2226c0['defaults']={'penalty':_0x5d53e6[_0xee18('0x84')][_0xee18('0x82')]};}return db[_0xee18('0x85')+_0x1ab8c7+_0xee18('0x86')][_0xee18('0x87')](_0x2226c0)[_0xee18('0x28')](function(){socket[_0xee18('0x88')](_0xee18('0x4d')+_0x1ab8c7+_0xee18('0x89'),{'UserId':_0x4086f5,[_0x1ab8c7+_0xee18('0x83')]:_0x5d53e6['id']});if(_0x1ab8c7!=='Voice'){return;}return db[_0xee18('0x85')][_0xee18('0x44')]({'where':{'id':_0x3275fa,'online':0x1},'attributes':['id',_0xee18('0x2a'),'online','voicePause','interface'],'raw':!![]})[_0xee18('0x28')](function(_0x30e5ef){var _0x546bc5=_['map'](_0x30e5ef,function(_0x4c907a){return db[_0xee18('0x8a')][_0xee18('0x8b')]({'membername':_0x4c907a[_0xee18('0x2a')],'UserId':_0x4c907a['id'],'queue_name':_0x5d53e6['name'],'VoiceQueueId':_0x5d53e6['id'],'interface':_['isNil'](_0x4c907a[_0xee18('0x8c')])?util[_0xee18('0x8d')](_0xee18('0x8e'),_0x4c907a[_0xee18('0x2a')]):_0x4c907a[_0xee18('0x8c')],'paused':_0x4c907a[_0xee18('0x8f')]||![],'penalty':_0x5d53e6[_0xee18('0x84')]['penalty']},{'transaction':_0x4c40f2});});return Promise[_0xee18('0x90')](_0x546bc5);});});});return Promise[_0xee18('0x90')](_0x257738);});return Promise[_0xee18('0x90')](_0x2817bf);})[_0xee18('0x28')](function(){return db['TeamVoicePrefix'][_0xee18('0x6f')]({'where':{'teamId':_0x3ee613}})[_0xee18('0x28')](function(_0x386aae){if(_0x386aae){var _0x13efdc=_['map'](_0x3275fa,function(_0x429fc6){db[_0xee18('0x6a')][_0xee18('0x8b')]({'UserId':_0x429fc6,'VoicePrefixId':_0x386aae[_0xee18('0x6b')]});});return Promise[_0xee18('0x90')](_0x13efdc);}});});});return Promise[_0xee18('0x90')](_0x570779)['then'](function(){return _0x1a1376['addAgents'](_0x3275fa,{'transaction':_0x4c40f2})[_0xee18('0x91')](function(_0x4823ae){return _0x4823ae;});});});}})[_0xee18('0x28')](respondWithResult(_0x1a0cf3,null))[_0xee18('0x4a')](handleError(_0x1a0cf3,null));};exports[_0xee18('0x92')]=function(_0x54b8de,_0x3345e8){var _0x2f4fb3=_[_0xee18('0x7c')](_0x54b8de[_0xee18('0x33')][_0xee18('0x7a')])?_0x54b8de[_0xee18('0x33')]['ids']:[_0x54b8de[_0xee18('0x33')][_0xee18('0x7a')]];var _0x3e1c63=_0x54b8de[_0xee18('0x47')]['id'];return db[_0xee18('0x2e')][_0xee18('0x50')]({'where':{'id':_0x3e1c63}})[_0xee18('0x28')](handleEntityNotFound(_0x3345e8,null))[_0xee18('0x28')](function(_0x532859){if(_0x532859){var _0x306ff0=['Voice',_0xee18('0x7e'),_0xee18('0x93'),_0xee18('0x94'),_0xee18('0x95'),_0xee18('0x7f'),_0xee18('0x80')];return db[_0xee18('0x54')][_0xee18('0x53')](function(_0x4656f2){var _0x1b6eb4=_[_0xee18('0x2d')](_0x306ff0,function(_0x532773){var _0x53528e={'attributes':['id',_0xee18('0x2a')]};return _0x532859[_0xee18('0x4e')+_0x532773+_0xee18('0x76')](_0x53528e)[_0xee18('0x28')](function(_0x4f8fd4){var _0x9e893e=_['map'](_0x4f8fd4,function(_0x45cba5){return _0x45cba5[_0xee18('0x92')](_0x2f4fb3,{'transaction':_0x4656f2})['then'](function(){var _0x4fc615=_[_0xee18('0x2d')](_0x2f4fb3,function(_0x263c30){socket[_0xee18('0x88')](_0xee18('0x4d')+_0x532773+_0xee18('0x96'),{'UserId':Number(_0x263c30),[_0x532773+_0xee18('0x83')]:_0x45cba5['id']});if(_0x532773!=='Voice'){return;}return db[_0xee18('0x8a')][_0xee18('0x52')]({'where':{'VoiceQueueId':_0x45cba5['id'],'UserId':_0x263c30},'transaction':_0x4656f2});});return Promise[_0xee18('0x90')](_0x4fc615);});});return Promise[_0xee18('0x90')](_0x9e893e);});});return Promise[_0xee18('0x90')](_0x1b6eb4)[_0xee18('0x28')](function(){return _0x532859[_0xee18('0x92')](_0x2f4fb3,{'transaction':_0x4656f2});})[_0xee18('0x28')](function(){return db[_0xee18('0x69')]['findOne']({'where':{'teamId':_0x3e1c63}})[_0xee18('0x28')](function(_0x24a834){if(_0x24a834){var _0x568ccb=_[_0xee18('0x2d')](_0x2f4fb3,function(_0xab684d){db[_0xee18('0x6a')]['destroy']({'where':{'UserId':_0xab684d,'VoicePrefixId':_0x24a834[_0xee18('0x6b')]}});});return Promise[_0xee18('0x90')](_0x568ccb);}});});});}})['then'](respondWithStatusCode(_0x3345e8,null))[_0xee18('0x4a')](handleError(_0x3345e8,null));};exports['getAgents']=function(_0x474cfa,_0x4a53c3,_0x223e6c){var _0x18cc32={};var _0x17c80b={};var _0x553867;var _0x2bd6a9;return db[_0xee18('0x2e')][_0xee18('0x6f')]({'where':{'id':_0x474cfa[_0xee18('0x47')]['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x4a53c3,null))[_0xee18('0x28')](function(_0x457e8f){if(_0x457e8f){_0x553867=_0x457e8f;_0x17c80b['model']=_[_0xee18('0x49')](db[_0xee18('0x85')][_0xee18('0x48')]);_0x17c80b['query']=_[_0xee18('0x49')](_0x474cfa['query']);_0x17c80b[_0xee18('0x34')]=_[_0xee18('0x35')](_0x17c80b[_0xee18('0x32')],_0x17c80b[_0xee18('0x33')]);_0x18cc32[_0xee18('0x36')]=_[_0xee18('0x35')](_0x17c80b[_0xee18('0x32')],qs[_0xee18('0x37')](_0x474cfa['query'][_0xee18('0x37')]));_0x18cc32[_0xee18('0x36')]=_0x18cc32['attributes'][_0xee18('0x38')]?_0x18cc32[_0xee18('0x36')]:_0x17c80b[_0xee18('0x32')];_0x18cc32['order']=qs['sort'](_0x474cfa[_0xee18('0x33')][_0xee18('0x3b')]);_0x18cc32['where']=qs[_0xee18('0x34')](_['pick'](_0x474cfa[_0xee18('0x33')],_0x17c80b['filters']));if(_0x474cfa['query']['filter']){_0x18cc32[_0xee18('0x3c')]=_[_0xee18('0x3f')](_0x18cc32[_0xee18('0x3c')],{'$or':_['map'](_0x18cc32[_0xee18('0x36')],function(_0x34e063){var _0x14537b={};_0x14537b[_0x34e063]={'$like':'%'+_0x474cfa[_0xee18('0x33')]['filter']+'%'};return _0x14537b;})});}_0x18cc32=_[_0xee18('0x3f')]({},_0x18cc32,_0x474cfa[_0xee18('0x41')]);return _0x553867[_0xee18('0x97')](_0x18cc32);}})['then'](function(_0x38a409){if(_0x38a409){_0x2bd6a9=_0x38a409[_0xee18('0x38')];if(!_0x474cfa[_0xee18('0x33')][_0xee18('0x39')](_0xee18('0x98'))){_0x18cc32['limit']=qs['limit'](_0x474cfa[_0xee18('0x33')][_0xee18('0x23')]);_0x18cc32[_0xee18('0x20')]=qs[_0xee18('0x20')](_0x474cfa[_0xee18('0x33')][_0xee18('0x20')]);}return _0x553867[_0xee18('0x97')](_0x18cc32);}})[_0xee18('0x28')](function(_0x530a8f){if(_0x530a8f){return _0x530a8f?{'count':_0x2bd6a9,'rows':_0x530a8f}:null;}})[_0xee18('0x28')](respondWithResult(_0x4a53c3,null))[_0xee18('0x4a')](handleError(_0x4a53c3,null));};
\ No newline at end of file
+var _0x404f=['OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserVoicePrefix','VoicePrefixId','end','getQueues','findOne','channel','isValidChannel','ValidationError','capitalize','Queue','toLowerCase','addQueues','Unknown\x20channel','Queues','ids','remove','addAgents','Voice','Chat','Mail','Sms','Whatsapp','transaction','through','defaults','TeamVoiceQueue','penalty','User','emit','Queue:save','QueueId','online','interface','UserVoiceQueueRt','upsert','isNil','SIP/%s','voicePause','all','TeamVoicePrefix','spread','removeAgents','isArray','Fax','Queue:remove','getAgents','pick','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./team.socket','sendStatus','status','json','offset','undefined','limit','set','apply','then','stack','name','send','index','Team','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','count','include','findAll','catch','includeAll','options','find','create','body','user','get','role','Teams','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','destroy','sequelize','Sequelize','QueryTypes','SELECT','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','SmsQueueId','UserSmsQueue','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'];(function(_0x26d2c4,_0x3223a9){var _0x355254=function(_0x73f13d){while(--_0x73f13d){_0x26d2c4['push'](_0x26d2c4['shift']());}};_0x355254(++_0x3223a9);}(_0x404f,0x1ec));var _0xf404=function(_0x25af27,_0x43a40a){_0x25af27=_0x25af27-0x0;var _0x43d8cc=_0x404f[_0x25af27];return _0x43d8cc;};'use strict';var emlformat=require(_0xf404('0x0'));var rimraf=require(_0xf404('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf404('0x2'));var rp=require(_0xf404('0x3'));var moment=require(_0xf404('0x4'));var BPromise=require(_0xf404('0x5'));var Mustache=require(_0xf404('0x6'));var util=require(_0xf404('0x7'));var path=require('path');var sox=require(_0xf404('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf404('0x9'));var _=require(_0xf404('0xa'));var squel=require(_0xf404('0xb'));var crypto=require(_0xf404('0xc'));var jsforce=require(_0xf404('0xd'));var deskjs=require(_0xf404('0xe'));var toCsv=require(_0xf404('0xf'));var querystring=require('querystring');var Papa=require(_0xf404('0x10'));var Redis=require(_0xf404('0x11'));var authService=require(_0xf404('0x12'));var qs=require(_0xf404('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf404('0x14'));var logger=require('../../config/logger')(_0xf404('0x15'));var utils=require(_0xf404('0x16'));var config=require(_0xf404('0x17'));var licenseUtil=require(_0xf404('0x18'));var db=require(_0xf404('0x19'))['db'];config[_0xf404('0x1a')]=_['defaults'](config[_0xf404('0x1a')],{'host':_0xf404('0x1b'),'port':0x18eb});var socket=require(_0xf404('0x1c'))(new Redis(config[_0xf404('0x1a')]));require(_0xf404('0x1d'))['register'](socket);function respondWithStatusCode(_0x561ba1,_0x1a337f){_0x1a337f=_0x1a337f||0xcc;return function(_0x4ab0ac){if(_0x4ab0ac){return _0x561ba1[_0xf404('0x1e')](_0x1a337f);}return _0x561ba1[_0xf404('0x1f')](_0x1a337f)['end']();};}function respondWithResult(_0x1e4e2f,_0xa05673){_0xa05673=_0xa05673||0xc8;return function(_0x460019){if(_0x460019){return _0x1e4e2f['status'](_0xa05673)[_0xf404('0x20')](_0x460019);}};}function respondWithFilteredResult(_0x488bbe,_0x277bd8){return function(_0x54e196){if(_0x54e196){var _0x467c22=typeof _0x277bd8[_0xf404('0x21')]===_0xf404('0x22')&&typeof _0x277bd8['limit']===_0xf404('0x22');var _0x136bc7=_0x54e196['count'];var _0x44c526=_0x467c22?0x0:_0x277bd8[_0xf404('0x21')];var _0x2f4e12=_0x467c22?_0x54e196['count']:_0x277bd8[_0xf404('0x21')]+_0x277bd8[_0xf404('0x23')];var _0x437c31;if(_0x2f4e12>=_0x136bc7){_0x2f4e12=_0x136bc7;_0x437c31=0xc8;}else{_0x437c31=0xce;}_0x488bbe[_0xf404('0x1f')](_0x437c31);return _0x488bbe[_0xf404('0x24')]('Content-Range',_0x44c526+'-'+_0x2f4e12+'/'+_0x136bc7)[_0xf404('0x20')](_0x54e196);}return null;};}function patchUpdates(_0x1e8dbb){return function(_0x5be1df){try{jsonpatch[_0xf404('0x25')](_0x5be1df,_0x1e8dbb,!![]);}catch(_0x123b0e){return BPromise['reject'](_0x123b0e);}return _0x5be1df['save']();};}function saveUpdates(_0x59ddd9,_0x2b8d64){return function(_0xa2b58e){if(_0xa2b58e){return _0xa2b58e['update'](_0x59ddd9)[_0xf404('0x26')](function(_0x391e3d){return _0x391e3d;});}return null;};}function handleEntityNotFound(_0x717a16,_0x26c466){return function(_0x4d21a3){if(!_0x4d21a3){_0x717a16[_0xf404('0x1e')](0x194);}return _0x4d21a3;};}function handleError(_0x46fb03,_0x7ba8b7){_0x7ba8b7=_0x7ba8b7||0x1f4;return function(_0x594e11){logger['error'](_0x594e11[_0xf404('0x27')]);if(_0x594e11[_0xf404('0x28')]){delete _0x594e11['name'];}_0x46fb03[_0xf404('0x1f')](_0x7ba8b7)[_0xf404('0x29')](_0x594e11);};}exports[_0xf404('0x2a')]=function(_0x44c5e9,_0x11e8c1){var _0x56c844={},_0x8006d2={},_0x447fbe={'count':0x0,'rows':[]};var _0x3f890b=_['map'](db[_0xf404('0x2b')][_0xf404('0x2c')],function(_0x4bdad0){return{'name':_0x4bdad0[_0xf404('0x2d')],'type':_0x4bdad0['type'][_0xf404('0x2e')]};});_0x8006d2[_0xf404('0x2f')]=_[_0xf404('0x30')](_0x3f890b,_0xf404('0x28'));_0x8006d2[_0xf404('0x31')]=_[_0xf404('0x32')](_0x44c5e9['query']);_0x8006d2[_0xf404('0x33')]=_[_0xf404('0x34')](_0x8006d2[_0xf404('0x2f')],_0x8006d2[_0xf404('0x31')]);_0x56c844[_0xf404('0x35')]=_['intersection'](_0x8006d2['model'],qs['fields'](_0x44c5e9[_0xf404('0x31')][_0xf404('0x36')]));_0x56c844[_0xf404('0x35')]=_0x56c844['attributes'][_0xf404('0x37')]?_0x56c844[_0xf404('0x35')]:_0x8006d2['model'];if(!_0x44c5e9['query'][_0xf404('0x38')](_0xf404('0x39'))){_0x56c844[_0xf404('0x23')]=qs[_0xf404('0x23')](_0x44c5e9[_0xf404('0x31')][_0xf404('0x23')]);_0x56c844[_0xf404('0x21')]=qs[_0xf404('0x21')](_0x44c5e9[_0xf404('0x31')][_0xf404('0x21')]);}_0x56c844[_0xf404('0x3a')]=qs[_0xf404('0x3b')](_0x44c5e9[_0xf404('0x31')][_0xf404('0x3b')]);_0x56c844[_0xf404('0x3c')]=qs[_0xf404('0x33')](_['pick'](_0x44c5e9[_0xf404('0x31')],_0x8006d2['filters']),_0x3f890b);if(_0x44c5e9[_0xf404('0x31')][_0xf404('0x3d')]){_0x56c844[_0xf404('0x3c')]=_[_0xf404('0x3e')](_0x56c844[_0xf404('0x3c')],{'$or':_['map'](_0x3f890b,function(_0x2fb580){if(_0x2fb580[_0xf404('0x3f')]!=='VIRTUAL'){var _0x2496ba={};_0x2496ba[_0x2fb580[_0xf404('0x28')]]={'$like':'%'+_0x44c5e9['query'][_0xf404('0x3d')]+'%'};return _0x2496ba;}})});}_0x56c844=_[_0xf404('0x3e')]({},_0x56c844,_0x44c5e9['options']);var _0x31e8e8={'where':_0x56c844[_0xf404('0x3c')]};return db[_0xf404('0x2b')][_0xf404('0x40')](_0x31e8e8)[_0xf404('0x26')](function(_0x2e615d){_0x447fbe[_0xf404('0x40')]=_0x2e615d;if(_0x44c5e9[_0xf404('0x31')]['includeAll']){_0x56c844[_0xf404('0x41')]=[{'all':!![]}];}return db[_0xf404('0x2b')][_0xf404('0x42')](_0x56c844);})[_0xf404('0x26')](function(_0x35b539){_0x447fbe['rows']=_0x35b539;return _0x447fbe;})['then'](respondWithFilteredResult(_0x11e8c1,_0x56c844))[_0xf404('0x43')](handleError(_0x11e8c1,null));};exports['show']=function(_0x4d997b,_0x9c74b){var _0x2634a2={'raw':![],'where':{'id':_0x4d997b['params']['id']}},_0x40a5e5={};_0x40a5e5[_0xf404('0x2f')]=_[_0xf404('0x32')](db['Team'][_0xf404('0x2c')]);_0x40a5e5[_0xf404('0x31')]=_[_0xf404('0x32')](_0x4d997b[_0xf404('0x31')]);_0x40a5e5[_0xf404('0x33')]=_[_0xf404('0x34')](_0x40a5e5['model'],_0x40a5e5[_0xf404('0x31')]);_0x2634a2['attributes']=_[_0xf404('0x34')](_0x40a5e5[_0xf404('0x2f')],qs[_0xf404('0x36')](_0x4d997b[_0xf404('0x31')][_0xf404('0x36')]));_0x2634a2[_0xf404('0x35')]=_0x2634a2[_0xf404('0x35')]['length']?_0x2634a2['attributes']:_0x40a5e5[_0xf404('0x2f')];if(_0x4d997b[_0xf404('0x31')][_0xf404('0x44')]){_0x2634a2[_0xf404('0x41')]=[{'all':!![]}];}_0x2634a2=_[_0xf404('0x3e')]({},_0x2634a2,_0x4d997b[_0xf404('0x45')]);return db[_0xf404('0x2b')][_0xf404('0x46')](_0x2634a2)[_0xf404('0x26')](handleEntityNotFound(_0x9c74b,null))[_0xf404('0x26')](respondWithResult(_0x9c74b,null))['catch'](handleError(_0x9c74b,null));};exports[_0xf404('0x47')]=function(_0x148827,_0x4b68b3){return db[_0xf404('0x2b')]['create'](_0x148827[_0xf404('0x48')],{})['then'](function(_0xd7e21){var _0x3e2b4d=_0x148827[_0xf404('0x49')][_0xf404('0x4a')]({'plain':!![]});if(!_0x3e2b4d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3e2b4d[_0xf404('0x4b')]===_0xf404('0x49')){var _0x540a57=_0xd7e21[_0xf404('0x4a')]({'plain':!![]});var _0x55ccfb=_0xf404('0x4c');return db['UserProfileSection'][_0xf404('0x46')]({'where':{'name':_0x55ccfb,'userProfileId':_0x3e2b4d[_0xf404('0x4d')]},'raw':!![]})[_0xf404('0x26')](function(_0x2a21d7){if(_0x2a21d7&&_0x2a21d7[_0xf404('0x4e')]===0x0){return db['UserProfileResource'][_0xf404('0x47')]({'name':_0x540a57['name'],'resourceId':_0x540a57['id'],'type':_0x2a21d7[_0xf404('0x28')],'sectionId':_0x2a21d7['id']},{})[_0xf404('0x26')](function(){return _0xd7e21;});}else{return _0xd7e21;}})[_0xf404('0x43')](function(_0x3337eb){logger[_0xf404('0x4f')](_0xf404('0x50'),_0x3337eb);throw _0x3337eb;});}return _0xd7e21;})['then'](respondWithResult(_0x4b68b3,0xc9))[_0xf404('0x43')](handleError(_0x4b68b3,null));};exports[_0xf404('0x51')]=function(_0x12639a,_0x36c771){if(_0x12639a['body']['id']){delete _0x12639a['body']['id'];}return db[_0xf404('0x2b')]['find']({'where':{'id':_0x12639a[_0xf404('0x52')]['id']}})['then'](handleEntityNotFound(_0x36c771,null))[_0xf404('0x26')](saveUpdates(_0x12639a[_0xf404('0x48')],null))[_0xf404('0x26')](respondWithResult(_0x36c771,null))[_0xf404('0x43')](handleError(_0x36c771,null));};exports[_0xf404('0x53')]=function(_0x4606e8,_0x1b74a0){var _0x3475f9=_0x4606e8[_0xf404('0x52')]['id'];var _0x597ef4=[];return db[_0xf404('0x54')]['transaction'](function(_0x8d7bd3){var _0x3728af='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x3475f9;return db[_0xf404('0x54')]['query'](_0x3728af,{'type':db[_0xf404('0x55')][_0xf404('0x56')][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3})[_0xf404('0x26')](function(_0x1480ff){_0x597ef4=_['map'](_0x1480ff,function(_0x57c490){return Number(_0x57c490['UserId']);});})[_0xf404('0x26')](function(){var _0x2befbc=_0xf404('0x58')+_0x3475f9;return db[_0xf404('0x54')][_0xf404('0x31')](_0x2befbc,{'type':db[_0xf404('0x55')][_0xf404('0x56')][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(_0x9f7423){var _0x28c7cd=_[_0xf404('0x30')](_0x9f7423,function(_0xd6f5e8){return Number(_0xd6f5e8[_0xf404('0x59')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x597ef4},'VoiceQueueId':{'$in':_0x28c7cd}},'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(){var _0x225d64='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3475f9;return db[_0xf404('0x54')]['query'](_0x225d64,{'type':db['Sequelize'][_0xf404('0x56')][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(_0xe23c07){var _0x4c50d2=_['map'](_0xe23c07,function(_0x7747a2){return Number(_0x7747a2['MailQueueId']);});return db['UserMailQueue']['destroy']({'where':{'UserId':{'$in':_0x597ef4},'MailQueueId':{'$in':_0x4c50d2}},'transaction':_0x8d7bd3});})['then'](function(){var _0x5a68f8='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3475f9;return db[_0xf404('0x54')][_0xf404('0x31')](_0x5a68f8,{'type':db['Sequelize'][_0xf404('0x56')][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3});})['then'](function(_0x4f5b8c){var _0xe5b497=_[_0xf404('0x30')](_0x4f5b8c,function(_0x32cbf0){return Number(_0x32cbf0[_0xf404('0x5a')]);});return db[_0xf404('0x5b')][_0xf404('0x53')]({'where':{'UserId':{'$in':_0x597ef4},'SmsQueueId':{'$in':_0xe5b497}},'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(){var _0x12e51a='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3475f9;return db['sequelize'][_0xf404('0x31')](_0x12e51a,{'type':db['Sequelize'][_0xf404('0x56')][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(_0x48428){var _0x1ce15e=_['map'](_0x48428,function(_0x5870c4){return Number(_0x5870c4['ChatQueueId']);});return db[_0xf404('0x5c')][_0xf404('0x53')]({'where':{'UserId':{'$in':_0x597ef4},'ChatQueueId':{'$in':_0x1ce15e}},'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(){var _0x5f8e68=_0xf404('0x5d')+_0x3475f9;return db['sequelize']['query'](_0x5f8e68,{'type':db[_0xf404('0x55')]['QueryTypes'][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3});})['then'](function(_0x33787f){var _0x451c84=_[_0xf404('0x30')](_0x33787f,function(_0x1a3af5){return Number(_0x1a3af5['FaxQueueId']);});return db[_0xf404('0x5e')]['destroy']({'where':{'UserId':{'$in':_0x597ef4},'FaxQueueId':{'$in':_0x451c84}},'transaction':_0x8d7bd3});})['then'](function(){var _0xac01ef=_0xf404('0x5f')+_0x3475f9;return db[_0xf404('0x54')]['query'](_0xac01ef,{'type':db[_0xf404('0x55')][_0xf404('0x56')][_0xf404('0x57')],'raw':!![],'transaction':_0x8d7bd3});})['then'](function(_0x4064ba){var _0xa13048=_[_0xf404('0x30')](_0x4064ba,function(_0x4f9000){return Number(_0x4f9000[_0xf404('0x60')]);});return db[_0xf404('0x61')][_0xf404('0x53')]({'where':{'UserId':{'$in':_0x597ef4},'OpenchannelQueueId':{'$in':_0xa13048}},'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(){var _0x2a4d66=_0xf404('0x62')+_0x3475f9;return db[_0xf404('0x54')][_0xf404('0x31')](_0x2a4d66,{'type':db[_0xf404('0x55')][_0xf404('0x56')]['SELECT'],'raw':!![],'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(_0x52fb55){var _0x2fd552=_[_0xf404('0x30')](_0x52fb55,function(_0x16dbcc){return Number(_0x16dbcc[_0xf404('0x63')]);});return db['UserWhatsappQueue'][_0xf404('0x53')]({'where':{'UserId':{'$in':_0x597ef4},'WhatsappQueueId':{'$in':_0x2fd552}},'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(){return db['TeamVoicePrefix']['find']({'where':{'TeamId':_0x3475f9}});})[_0xf404('0x26')](function(_0x318a80){if(_0x318a80===null){return;}return db[_0xf404('0x64')][_0xf404('0x53')]({'where':{'UserId':{'$in':_0x597ef4},'VoicePrefixId':_0x318a80[_0xf404('0x65')]},'transaction':_0x8d7bd3});})[_0xf404('0x26')](function(){return db['Team']['destroy']({'where':{'id':_0x3475f9},'cascade':!![],'transaction':_0x8d7bd3});})['then'](function(_0x24bbbc){if(_0x24bbbc===0x0){_0x1b74a0['sendStatus'](0x194);}else{return db['UserProfileResource'][_0xf404('0x53')]({'where':{'type':'Teams','resourceId':_0x3475f9},'cascade':!![],'transaction':_0x8d7bd3})[_0xf404('0x26')](function(){_0x1b74a0['status'](0xcc)[_0xf404('0x66')]();});}})['catch'](function(_0x585ad6){_0x1b74a0[_0xf404('0x1f')](0x1f4)[_0xf404('0x29')](_0x585ad6);});});};exports[_0xf404('0x67')]=function(_0x2b984f,_0x27ab6a,_0x282ee8){return db[_0xf404('0x2b')][_0xf404('0x68')]({'where':{'id':_0x2b984f[_0xf404('0x52')]['id']}})[_0xf404('0x26')](handleEntityNotFound(_0x27ab6a,null))[_0xf404('0x26')](function(_0x1f58a8){if(!_0x2b984f[_0xf404('0x31')][_0xf404('0x69')]||!utils[_0xf404('0x6a')](_0x2b984f[_0xf404('0x31')]['channel'])){throw new db[(_0xf404('0x55'))][(_0xf404('0x6b'))]('Unknown\x20channel');}var _0x9c17be={};var _0xd37dc={};_0xd37dc['model']=_['keys'](db[_[_0xf404('0x6c')](_0x2b984f[_0xf404('0x31')][_0xf404('0x69')]['toLowerCase']())+_0xf404('0x6d')][_0xf404('0x2c')]);_0xd37dc[_0xf404('0x31')]=_[_0xf404('0x32')](_0x2b984f[_0xf404('0x31')]);_0xd37dc['filters']=_['intersection'](_0xd37dc[_0xf404('0x2f')],_0xd37dc[_0xf404('0x31')]);_0x9c17be[_0xf404('0x35')]=_[_0xf404('0x34')](_0xd37dc[_0xf404('0x2f')],qs['fields'](_0x2b984f['query'][_0xf404('0x36')]));_0x9c17be[_0xf404('0x35')]=_0x9c17be[_0xf404('0x35')]['length']?_0x9c17be['attributes']:_0xd37dc[_0xf404('0x2f')];_0x9c17be['limit']=qs['limit'](_0x2b984f[_0xf404('0x31')][_0xf404('0x23')]);_0x9c17be['offset']=qs[_0xf404('0x21')](_0x2b984f[_0xf404('0x31')][_0xf404('0x21')]);_0x9c17be['order']=qs[_0xf404('0x3b')](_0x2b984f[_0xf404('0x31')]['sort']);_0x9c17be['where']=qs['filters'](_['pick'](_0x2b984f[_0xf404('0x31')],_0xd37dc[_0xf404('0x33')]));_0x9c17be=_[_0xf404('0x3e')]({},_0x9c17be,_0x2b984f[_0xf404('0x45')]);return _0x1f58a8['get'+_['capitalize'](_0x2b984f[_0xf404('0x31')][_0xf404('0x69')][_0xf404('0x6e')]())+'Queues'](_0x9c17be);})['then'](respondWithResult(_0x27ab6a,null))[_0xf404('0x43')](handleError(_0x27ab6a,null));};exports[_0xf404('0x6f')]=function(_0x12aa1e,_0x2bd35b,_0x2fd81){return db[_0xf404('0x2b')]['findOne']({'where':{'id':_0x12aa1e['params']['id']}})['then'](function(_0x379566){if(_0x379566){if(!_0x12aa1e['body'][_0xf404('0x69')]||!utils[_0xf404('0x6a')](_0x12aa1e['body']['channel'])){throw new db[(_0xf404('0x55'))][(_0xf404('0x6b'))](_0xf404('0x70'));}return _0x379566['add'+_[_0xf404('0x6c')](_0x12aa1e[_0xf404('0x48')]['channel'][_0xf404('0x6e')]())+_0xf404('0x71')](_0x12aa1e[_0xf404('0x48')][_0xf404('0x72')]);}return null;})['then'](handleEntityNotFound(_0x2bd35b,null))[_0xf404('0x26')](respondWithStatusCode(_0x2bd35b,null))[_0xf404('0x43')](handleError(_0x2bd35b,null));};exports['removeQueues']=function(_0x14f8b7,_0x1f33de,_0x4a6b55){return db[_0xf404('0x2b')][_0xf404('0x68')]({'where':{'id':_0x14f8b7[_0xf404('0x52')]['id']}})[_0xf404('0x26')](function(_0x348683){if(_0x348683){if(!_0x14f8b7[_0xf404('0x31')][_0xf404('0x69')]||!utils[_0xf404('0x6a')](_0x14f8b7['query'][_0xf404('0x69')])){throw new db[(_0xf404('0x55'))][(_0xf404('0x6b'))](_0xf404('0x70'));}return _0x348683[_0xf404('0x73')+_[_0xf404('0x6c')](_0x14f8b7[_0xf404('0x31')][_0xf404('0x69')][_0xf404('0x6e')]())+'Queues'](_0x14f8b7['query'][_0xf404('0x72')]);}return null;})[_0xf404('0x26')](handleEntityNotFound(_0x1f33de,null))[_0xf404('0x26')](respondWithStatusCode(_0x1f33de,null))[_0xf404('0x43')](handleError(_0x1f33de,null));};exports[_0xf404('0x74')]=function(_0xdd8c22,_0x43ec3e){var _0x3544af=_['isArray'](_0xdd8c22[_0xf404('0x48')][_0xf404('0x72')])?_0xdd8c22[_0xf404('0x48')][_0xf404('0x72')]:[_0xdd8c22[_0xf404('0x48')][_0xf404('0x72')]];var _0x2fccc4=_0xdd8c22[_0xf404('0x52')]['id'];return db['Team'][_0xf404('0x46')]({'where':{'id':_0x2fccc4}})['then'](handleEntityNotFound(_0x43ec3e,null))[_0xf404('0x26')](function(_0x41db9f){if(_0x41db9f){var _0x3e6429=[_0xf404('0x75'),_0xf404('0x76'),_0xf404('0x77'),_0xf404('0x78'),'Fax','Openchannel',_0xf404('0x79')];return db[_0xf404('0x54')][_0xf404('0x7a')](function(_0x2abe15){var _0x539d24=_[_0xf404('0x30')](_0x3e6429,function(_0x12c8fc){var _0xd3ebb={'attributes':['id',_0xf404('0x28')]};if(_0x12c8fc===_0xf404('0x75')){_0xd3ebb[_0xf404('0x7b')]={'attributes':['penalty']};}return _0x41db9f[_0xf404('0x4a')+_0x12c8fc+'Queues'](_0xd3ebb)[_0xf404('0x26')](function(_0x37883d){var _0x3ba67a=_['map'](_0x37883d,function(_0x54d0c5){var _0x25c0fd=_['map'](_0x3544af,function(_0x4eedb3){var _0x2b591b={'where':{'UserId':_0x4eedb3,[_0x12c8fc+'QueueId']:_0x54d0c5['id']},'transaction':_0x2abe15};if(_0x12c8fc===_0xf404('0x75')){_0x2b591b[_0xf404('0x7c')]={'penalty':_0x54d0c5[_0xf404('0x7d')][_0xf404('0x7e')]};}return db[_0xf404('0x7f')+_0x12c8fc+_0xf404('0x6d')]['findOrCreate'](_0x2b591b)[_0xf404('0x26')](function(){socket[_0xf404('0x80')](_0xf404('0x49')+_0x12c8fc+_0xf404('0x81'),{'UserId':_0x4eedb3,[_0x12c8fc+_0xf404('0x82')]:_0x54d0c5['id']});if(_0x12c8fc!==_0xf404('0x75')){return;}return db['User'][_0xf404('0x42')]({'where':{'id':_0x3544af,'online':0x1},'attributes':['id',_0xf404('0x28'),_0xf404('0x83'),'voicePause',_0xf404('0x84')],'raw':!![]})[_0xf404('0x26')](function(_0x46b43e){var _0x389492=_[_0xf404('0x30')](_0x46b43e,function(_0x233433){return db[_0xf404('0x85')][_0xf404('0x86')]({'membername':_0x233433['name'],'UserId':_0x233433['id'],'queue_name':_0x54d0c5[_0xf404('0x28')],'VoiceQueueId':_0x54d0c5['id'],'interface':_[_0xf404('0x87')](_0x233433[_0xf404('0x84')])?util['format'](_0xf404('0x88'),_0x233433[_0xf404('0x28')]):_0x233433[_0xf404('0x84')],'paused':_0x233433[_0xf404('0x89')]||![],'penalty':_0x54d0c5[_0xf404('0x7d')][_0xf404('0x7e')]},{'transaction':_0x2abe15});});return Promise[_0xf404('0x8a')](_0x389492);});});});return Promise[_0xf404('0x8a')](_0x25c0fd);});return Promise[_0xf404('0x8a')](_0x3ba67a);})[_0xf404('0x26')](function(){return db[_0xf404('0x8b')][_0xf404('0x68')]({'where':{'teamId':_0x2fccc4}})['then'](function(_0x4c17d0){if(_0x4c17d0){var _0x3465c2=_['map'](_0x3544af,function(_0x1a34b1){db[_0xf404('0x64')]['upsert']({'UserId':_0x1a34b1,'VoicePrefixId':_0x4c17d0[_0xf404('0x65')]});});return Promise['all'](_0x3465c2);}});});});return Promise['all'](_0x539d24)[_0xf404('0x26')](function(){return _0x41db9f[_0xf404('0x74')](_0x3544af,{'transaction':_0x2abe15})[_0xf404('0x8c')](function(_0xeda6b4){return _0xeda6b4;});});});}})[_0xf404('0x26')](respondWithResult(_0x43ec3e,null))[_0xf404('0x43')](handleError(_0x43ec3e,null));};exports[_0xf404('0x8d')]=function(_0x3c7344,_0xf35056){var _0xdc7c6c=_[_0xf404('0x8e')](_0x3c7344[_0xf404('0x31')][_0xf404('0x72')])?_0x3c7344[_0xf404('0x31')][_0xf404('0x72')]:[_0x3c7344['query'][_0xf404('0x72')]];var _0xb1b1c1=_0x3c7344[_0xf404('0x52')]['id'];return db[_0xf404('0x2b')]['find']({'where':{'id':_0xb1b1c1}})[_0xf404('0x26')](handleEntityNotFound(_0xf35056,null))[_0xf404('0x26')](function(_0x1b1f2f){if(_0x1b1f2f){var _0x22de53=[_0xf404('0x75'),_0xf404('0x76'),_0xf404('0x77'),'Sms',_0xf404('0x8f'),'Openchannel',_0xf404('0x79')];return db[_0xf404('0x54')][_0xf404('0x7a')](function(_0x495f50){var _0x3df13d=_[_0xf404('0x30')](_0x22de53,function(_0x499328){var _0x465e0a={'attributes':['id',_0xf404('0x28')]};return _0x1b1f2f['get'+_0x499328+'Queues'](_0x465e0a)[_0xf404('0x26')](function(_0x2339a8){var _0x5d28c8=_[_0xf404('0x30')](_0x2339a8,function(_0x56e2d0){return _0x56e2d0[_0xf404('0x8d')](_0xdc7c6c,{'transaction':_0x495f50})[_0xf404('0x26')](function(){var _0x3064cf=_['map'](_0xdc7c6c,function(_0x501422){socket[_0xf404('0x80')](_0xf404('0x49')+_0x499328+_0xf404('0x90'),{'UserId':Number(_0x501422),[_0x499328+_0xf404('0x82')]:_0x56e2d0['id']});if(_0x499328!==_0xf404('0x75')){return;}return db[_0xf404('0x85')][_0xf404('0x53')]({'where':{'VoiceQueueId':_0x56e2d0['id'],'UserId':_0x501422},'transaction':_0x495f50});});return Promise[_0xf404('0x8a')](_0x3064cf);});});return Promise[_0xf404('0x8a')](_0x5d28c8);});});return Promise[_0xf404('0x8a')](_0x3df13d)[_0xf404('0x26')](function(){return _0x1b1f2f[_0xf404('0x8d')](_0xdc7c6c,{'transaction':_0x495f50});})[_0xf404('0x26')](function(){return db[_0xf404('0x8b')]['findOne']({'where':{'teamId':_0xb1b1c1}})[_0xf404('0x26')](function(_0x3098d6){if(_0x3098d6){var _0x40989f=_[_0xf404('0x30')](_0xdc7c6c,function(_0x1eb0b6){db[_0xf404('0x64')]['destroy']({'where':{'UserId':_0x1eb0b6,'VoicePrefixId':_0x3098d6[_0xf404('0x65')]}});});return Promise['all'](_0x40989f);}});});});}})[_0xf404('0x26')](respondWithStatusCode(_0xf35056,null))[_0xf404('0x43')](handleError(_0xf35056,null));};exports[_0xf404('0x91')]=function(_0x2883af,_0x5ec760,_0x456002){var _0x275951={};var _0x243981={};var _0x698b7b;var _0xf2ffd3;return db[_0xf404('0x2b')][_0xf404('0x68')]({'where':{'id':_0x2883af[_0xf404('0x52')]['id']}})['then'](handleEntityNotFound(_0x5ec760,null))['then'](function(_0x56c60c){if(_0x56c60c){_0x698b7b=_0x56c60c;_0x243981[_0xf404('0x2f')]=_[_0xf404('0x32')](db[_0xf404('0x7f')][_0xf404('0x2c')]);_0x243981[_0xf404('0x31')]=_[_0xf404('0x32')](_0x2883af[_0xf404('0x31')]);_0x243981[_0xf404('0x33')]=_[_0xf404('0x34')](_0x243981[_0xf404('0x2f')],_0x243981['query']);_0x275951[_0xf404('0x35')]=_[_0xf404('0x34')](_0x243981[_0xf404('0x2f')],qs['fields'](_0x2883af[_0xf404('0x31')][_0xf404('0x36')]));_0x275951[_0xf404('0x35')]=_0x275951['attributes'][_0xf404('0x37')]?_0x275951['attributes']:_0x243981[_0xf404('0x2f')];_0x275951[_0xf404('0x3a')]=qs[_0xf404('0x3b')](_0x2883af[_0xf404('0x31')]['sort']);_0x275951[_0xf404('0x3c')]=qs['filters'](_[_0xf404('0x92')](_0x2883af['query'],_0x243981[_0xf404('0x33')]));if(_0x2883af[_0xf404('0x31')][_0xf404('0x3d')]){_0x275951[_0xf404('0x3c')]=_[_0xf404('0x3e')](_0x275951[_0xf404('0x3c')],{'$or':_[_0xf404('0x30')](_0x275951[_0xf404('0x35')],function(_0x195ed2){var _0x471ba2={};_0x471ba2[_0x195ed2]={'$like':'%'+_0x2883af[_0xf404('0x31')][_0xf404('0x3d')]+'%'};return _0x471ba2;})});}_0x275951=_[_0xf404('0x3e')]({},_0x275951,_0x2883af[_0xf404('0x45')]);return _0x698b7b[_0xf404('0x91')](_0x275951);}})[_0xf404('0x26')](function(_0x2bbc0f){if(_0x2bbc0f){_0xf2ffd3=_0x2bbc0f[_0xf404('0x37')];if(!_0x2883af[_0xf404('0x31')][_0xf404('0x38')](_0xf404('0x39'))){_0x275951[_0xf404('0x23')]=qs[_0xf404('0x23')](_0x2883af[_0xf404('0x31')]['limit']);_0x275951[_0xf404('0x21')]=qs[_0xf404('0x21')](_0x2883af[_0xf404('0x31')][_0xf404('0x21')]);}return _0x698b7b[_0xf404('0x91')](_0x275951);}})['then'](function(_0x37097a){if(_0x37097a){return _0x37097a?{'count':_0xf2ffd3,'rows':_0x37097a}:null;}})[_0xf404('0x26')](respondWithResult(_0x5ec760,null))[_0xf404('0x43')](handleError(_0x5ec760,null));};
\ No newline at end of file
index 574eb07..37f169f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173c=['exports','events','../../mysqldb','Team','save','update','remove','emit','hook'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x173c,0xf4));var _0xc173=function(_0x443304,_0x1d8107){_0x443304=_0x443304-0x0;var _0x374f7e=_0x173c[_0x443304];return _0x374f7e;};'use strict';var EventEmitter=require(_0xc173('0x0'));var Team=require(_0xc173('0x1'))['db'][_0xc173('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc173('0x3'),'afterUpdate':_0xc173('0x4'),'afterDestroy':_0xc173('0x5')};function emitEvent(_0x1b6fbd){return function(_0x2ab847,_0x21ba7b,_0x591671){TeamEvents[_0xc173('0x6')](_0x1b6fbd+':'+_0x2ab847['id'],_0x2ab847);TeamEvents[_0xc173('0x6')](_0x1b6fbd,_0x2ab847);_0x591671(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0xc173('0x7')](e,emitEvent(event));}}module[_0xc173('0x8')]=TeamEvents;
\ No newline at end of file
+var _0x5f58=['exports','events','../../mysqldb','Team','save','update','hasOwnProperty','hook'];(function(_0x155e04,_0x28cd61){var _0x4590d0=function(_0x3f685b){while(--_0x3f685b){_0x155e04['push'](_0x155e04['shift']());}};_0x4590d0(++_0x28cd61);}(_0x5f58,0x129));var _0x85f5=function(_0x4738b7,_0x9096f0){_0x4738b7=_0x4738b7-0x0;var _0x47cb9e=_0x5f58[_0x4738b7];return _0x47cb9e;};'use strict';var EventEmitter=require(_0x85f5('0x0'));var Team=require(_0x85f5('0x1'))['db'][_0x85f5('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x85f5('0x3'),'afterUpdate':_0x85f5('0x4'),'afterDestroy':'remove'};function emitEvent(_0x42e0ab){return function(_0x2fb66d,_0x50ccdd,_0x4d7e0e){TeamEvents['emit'](_0x42e0ab+':'+_0x2fb66d['id'],_0x2fb66d);TeamEvents['emit'](_0x42e0ab,_0x2fb66d);_0x4d7e0e(null);};}for(var e in events){if(events[_0x85f5('0x5')](e)){var event=events[e];Team[_0x85f5('0x6')](e,emitEvent(event));}}module[_0x85f5('0x7')]=TeamEvents;
\ No newline at end of file
index 55cc86f..2019101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fb8=['all','lodash','./team.attributes','get','then','map','setDataValue','channel','catch','teams','Chat','Fax','Mail','Voice','Whatsapp','resolve'];(function(_0x40df5f,_0x8fd59f){var _0x1573f1=function(_0x57b8b8){while(--_0x57b8b8){_0x40df5f['push'](_0x40df5f['shift']());}};_0x1573f1(++_0x8fd59f);}(_0x2fb8,0xb1));var _0x82fb=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x2fb8[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x82fb('0x0'));var attributes=require(_0x82fb('0x1'));function getQueuesByChannel(_0x51a46e,_0x4c37c1){var _0x5469dc=_0x82fb('0x2')+_0x4c37c1+'Queues';return _0x51a46e[_0x5469dc]()[_0x82fb('0x3')](function(_0x982384){return _[_0x82fb('0x4')](_0x982384,function(_0x39f713){_0x39f713[_0x82fb('0x5')](_0x82fb('0x6'),_0x4c37c1);return _0x39f713;});})[_0x82fb('0x7')](function(_0x852510){throw _0x852510;});}module['exports']=function(_0x12daff){return _0x12daff['define']('Team',attributes,{'tableName':_0x82fb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x335636=this;var _0x2d1944=[_0x82fb('0x9'),_0x82fb('0xa'),_0x82fb('0xb'),'Openchannel','Sms',_0x82fb('0xc'),_0x82fb('0xd')];return Promise[_0x82fb('0xe')]()[_0x82fb('0x3')](function(){var _0x4b780b=_[_0x82fb('0x4')](_0x2d1944,function(_0x15310d){return getQueuesByChannel(_0x335636,_0x15310d);});return Promise[_0x82fb('0xf')](_0x4b780b);})[_0x82fb('0x7')](function(_0x2f1423){throw _0x2f1423;});}}});};
\ No newline at end of file
+var _0xcb65=['setDataValue','channel','catch','define','Team','teams','Chat','Fax','Mail','Openchannel','Voice','Whatsapp','map','all','lodash','./team.attributes','get','Queues','then'];(function(_0x5c5f93,_0x1525ac){var _0xb5ade5=function(_0x17be19){while(--_0x17be19){_0x5c5f93['push'](_0x5c5f93['shift']());}};_0xb5ade5(++_0x1525ac);}(_0xcb65,0x1c3));var _0x5cb6=function(_0x4c71b8,_0x2c4af2){_0x4c71b8=_0x4c71b8-0x0;var _0xe5ec01=_0xcb65[_0x4c71b8];return _0xe5ec01;};'use strict';var _=require(_0x5cb6('0x0'));var attributes=require(_0x5cb6('0x1'));function getQueuesByChannel(_0x44c2c0,_0x304470){var _0x2f0dec=_0x5cb6('0x2')+_0x304470+_0x5cb6('0x3');return _0x44c2c0[_0x2f0dec]()[_0x5cb6('0x4')](function(_0x487117){return _['map'](_0x487117,function(_0x2b3a9d){_0x2b3a9d[_0x5cb6('0x5')](_0x5cb6('0x6'),_0x304470);return _0x2b3a9d;});})[_0x5cb6('0x7')](function(_0x1e6811){throw _0x1e6811;});}module['exports']=function(_0x42ecfc){return _0x42ecfc[_0x5cb6('0x8')](_0x5cb6('0x9'),attributes,{'tableName':_0x5cb6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x56216c=this;var _0x26dd21=[_0x5cb6('0xb'),_0x5cb6('0xc'),_0x5cb6('0xd'),_0x5cb6('0xe'),'Sms',_0x5cb6('0xf'),_0x5cb6('0x10')];return Promise['resolve']()['then'](function(){var _0x3803b6=_[_0x5cb6('0x11')](_0x26dd21,function(_0x5c5766){return getQueuesByChannel(_0x56216c,_0x5c5766);});return Promise[_0x5cb6('0x12')](_0x3803b6);})[_0x5cb6('0x7')](function(_0x219110){throw _0x219110;});}}});};
\ No newline at end of file
index e6f4ecf..4eb124d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7c2=['ioredis','../../config/utils','rpc','jayson/promise','http','defaults','localhost','redis','./team.socket','register','request','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Team,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x4ed32d,_0x327695){var _0xf624df=function(_0x29518c){while(--_0x29518c){_0x4ed32d['push'](_0x4ed32d['shift']());}};_0xf624df(++_0x327695);}(_0xe7c2,0x19c));var _0x2e7c=function(_0x42ad74,_0x50320b){_0x42ad74=_0x42ad74-0x0;var _0x3fa7eb=_0xe7c2[_0x42ad74];return _0x3fa7eb;};'use strict';var _=require(_0x2e7c('0x0'));var util=require('util');var moment=require(_0x2e7c('0x1'));var BPromise=require(_0x2e7c('0x2'));var rs=require(_0x2e7c('0x3'));var fs=require('fs');var Redis=require(_0x2e7c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e7c('0x5'));var logger=require('../../config/logger')(_0x2e7c('0x6'));var config=require('../../config/environment');var jayson=require(_0x2e7c('0x7'));var client=jayson['client'][_0x2e7c('0x8')]({'port':0x232a});config['redis']=_[_0x2e7c('0x9')](config['redis'],{'host':_0x2e7c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2e7c('0xb')]));require(_0x2e7c('0xc'))[_0x2e7c('0xd')](socket);function respondWithRpcPromise(_0x32417e,_0x639630,_0x23fbdc){return new BPromise(function(_0x54654c,_0x12ffd4){return client[_0x2e7c('0xe')](_0x32417e,_0x23fbdc)['then'](function(_0x275801){logger[_0x2e7c('0xf')]('Team,\x20%s,\x20%s',_0x639630,_0x2e7c('0x10'));logger[_0x2e7c('0x11')](_0x2e7c('0x12'),_0x639630,_0x2e7c('0x10'),JSON[_0x2e7c('0x13')](_0x275801));if(_0x275801['error']){if(_0x275801[_0x2e7c('0x14')][_0x2e7c('0x15')]===0x1f4){logger['error']('Team,\x20%s,\x20%s',_0x639630,_0x275801[_0x2e7c('0x14')][_0x2e7c('0x16')]);return _0x12ffd4(_0x275801[_0x2e7c('0x14')][_0x2e7c('0x16')]);}logger['error'](_0x2e7c('0x17'),_0x639630,_0x275801[_0x2e7c('0x14')][_0x2e7c('0x16')]);return _0x54654c(_0x275801[_0x2e7c('0x14')][_0x2e7c('0x16')]);}else{logger['info'](_0x2e7c('0x17'),_0x639630,_0x2e7c('0x10'));_0x54654c(_0x275801[_0x2e7c('0x18')][_0x2e7c('0x16')]);}})[_0x2e7c('0x19')](function(_0x502d4e){logger[_0x2e7c('0x14')](_0x2e7c('0x17'),_0x639630,_0x502d4e);_0x12ffd4(_0x502d4e);});});}
\ No newline at end of file
+var _0x965f=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x15a2e4,_0x326abf){var _0xffaa67=function(_0x48438d){while(--_0x48438d){_0x15a2e4['push'](_0x15a2e4['shift']());}};_0xffaa67(++_0x326abf);}(_0x965f,0x6b));var _0xf965=function(_0x5f0c05,_0x557081){_0x5f0c05=_0x5f0c05-0x0;var _0x2f279d=_0x965f[_0x5f0c05];return _0x2f279d;};'use strict';var _=require(_0xf965('0x0'));var util=require(_0xf965('0x1'));var moment=require(_0xf965('0x2'));var BPromise=require(_0xf965('0x3'));var rs=require(_0xf965('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf965('0x5'))['db'];var utils=require(_0xf965('0x6'));var logger=require(_0xf965('0x7'))(_0xf965('0x8'));var config=require(_0xf965('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf965('0xa')]['http']({'port':0x232a});config['redis']=_[_0xf965('0xb')](config[_0xf965('0xc')],{'host':_0xf965('0xd'),'port':0x18eb});var socket=require(_0xf965('0xe'))(new Redis(config[_0xf965('0xc')]));require(_0xf965('0xf'))[_0xf965('0x10')](socket);function respondWithRpcPromise(_0x156f8e,_0x1126c1,_0x597369){return new BPromise(function(_0x23524e,_0xba9d4d){return client[_0xf965('0x11')](_0x156f8e,_0x597369)[_0xf965('0x12')](function(_0x43fdf4){logger[_0xf965('0x13')](_0xf965('0x14'),_0x1126c1,_0xf965('0x15'));logger[_0xf965('0x16')](_0xf965('0x17'),_0x1126c1,'request\x20sent',JSON['stringify'](_0x43fdf4));if(_0x43fdf4['error']){if(_0x43fdf4[_0xf965('0x18')][_0xf965('0x19')]===0x1f4){logger[_0xf965('0x18')](_0xf965('0x14'),_0x1126c1,_0x43fdf4[_0xf965('0x18')][_0xf965('0x1a')]);return _0xba9d4d(_0x43fdf4[_0xf965('0x18')][_0xf965('0x1a')]);}logger['error'](_0xf965('0x14'),_0x1126c1,_0x43fdf4[_0xf965('0x18')][_0xf965('0x1a')]);return _0x23524e(_0x43fdf4['error'][_0xf965('0x1a')]);}else{logger[_0xf965('0x13')]('Team,\x20%s,\x20%s',_0x1126c1,_0xf965('0x15'));_0x23524e(_0x43fdf4['result']['message']);}})[_0xf965('0x1b')](function(_0x56567b){logger[_0xf965('0x18')](_0xf965('0x14'),_0x1126c1,_0x56567b);_0xba9d4d(_0x56567b);});});}
\ No newline at end of file
index 21c8f8e..c040d9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fee=['length','team:','./team.events','remove','emit','removeListener','register'];(function(_0x5e4563,_0x3ff918){var _0x8d1bf5=function(_0x3bf7a9){while(--_0x3bf7a9){_0x5e4563['push'](_0x5e4563['shift']());}};_0x8d1bf5(++_0x3ff918);}(_0x2fee,0x11a));var _0xe2fe=function(_0x1da42f,_0x23dc53){_0x1da42f=_0x1da42f-0x0;var _0x458c83=_0x2fee[_0x1da42f];return _0x458c83;};'use strict';var TeamEvents=require(_0xe2fe('0x0'));var events=['save',_0xe2fe('0x1'),'update'];function createListener(_0x1d5e13,_0x5dd7b6){return function(_0x35d241){_0x5dd7b6[_0xe2fe('0x2')](_0x1d5e13,_0x35d241);};}function removeListener(_0x4ca9af,_0x15f1a2){return function(){TeamEvents[_0xe2fe('0x3')](_0x4ca9af,_0x15f1a2);};}exports[_0xe2fe('0x4')]=function(_0x4d4ac4){for(var _0x20d031=0x0,_0x361d40=events[_0xe2fe('0x5')];_0x20d031<_0x361d40;_0x20d031++){var _0xe0f512=events[_0x20d031];var _0x39a31c=createListener(_0xe2fe('0x6')+_0xe0f512,_0x4d4ac4);TeamEvents['on'](_0xe0f512,_0x39a31c);}};
\ No newline at end of file
+var _0xf1f9=['update','emit','removeListener','register','length','./team.events','save','remove'];(function(_0x67a81e,_0xbf09f4){var _0x399065=function(_0x204fb4){while(--_0x204fb4){_0x67a81e['push'](_0x67a81e['shift']());}};_0x399065(++_0xbf09f4);}(_0xf1f9,0x1cd));var _0x9f1f=function(_0x5b456e,_0x5a24a7){_0x5b456e=_0x5b456e-0x0;var _0x5f07b1=_0xf1f9[_0x5b456e];return _0x5f07b1;};'use strict';var TeamEvents=require(_0x9f1f('0x0'));var events=[_0x9f1f('0x1'),_0x9f1f('0x2'),_0x9f1f('0x3')];function createListener(_0x383ca5,_0x4d0a84){return function(_0x123324){_0x4d0a84[_0x9f1f('0x4')](_0x383ca5,_0x123324);};}function removeListener(_0x37eebc,_0x360fae){return function(){TeamEvents[_0x9f1f('0x5')](_0x37eebc,_0x360fae);};}exports[_0x9f1f('0x6')]=function(_0x5e4f05){for(var _0x5e4150=0x0,_0x363d26=events[_0x9f1f('0x7')];_0x5e4150<_0x363d26;_0x5e4150++){var _0x117fa5=events[_0x5e4150];var _0x12309e=createListener('team:'+_0x117fa5,_0x5e4f05);TeamEvents['on'](_0x117fa5,_0x12309e);}};
\ No newline at end of file
index 2449fc6..e89847c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3402=['sequelize','INTEGER'];(function(_0x4da4ea,_0x2875d3){var _0x3cc102=function(_0x5549c2){while(--_0x5549c2){_0x4da4ea['push'](_0x4da4ea['shift']());}};_0x3cc102(++_0x2875d3);}(_0x3402,0x1f0));var _0x2340=function(_0x55fe37,_0xb746a5){_0x55fe37=_0x55fe37-0x0;var _0x49f017=_0x3402[_0x55fe37];return _0x49f017;};'use strict';var Sequelize=require(_0x2340('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x2340('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x2340('0x1')]}};
\ No newline at end of file
+var _0x331c=['sequelize','INTEGER'];(function(_0x3a21c0,_0x348451){var _0x411e84=function(_0xdd7b02){while(--_0xdd7b02){_0x3a21c0['push'](_0x3a21c0['shift']());}};_0x411e84(++_0x348451);}(_0x331c,0xf0));var _0xc331=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x331c[_0x484e36];return _0xafc85d;};'use strict';var Sequelize=require(_0xc331('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xc331('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index cfb99ee..1ff00ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe1=['rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','lodash','util','api','bluebird','path'];(function(_0x379080,_0x313343){var _0x13768b=function(_0x2557d2){while(--_0x2557d2){_0x379080['push'](_0x379080['shift']());}};_0x13768b(++_0x313343);}(_0xffe1,0x187));var _0x1ffe=function(_0x2d8c28,_0x5d9f0b){_0x2d8c28=_0x2d8c28-0x0;var _0x38e030=_0xffe1[_0x2d8c28];return _0x38e030;};'use strict';var _=require(_0x1ffe('0x0'));var util=require(_0x1ffe('0x1'));var logger=require('../../config/logger')(_0x1ffe('0x2'));var moment=require('moment');var BPromise=require(_0x1ffe('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1ffe('0x4'));var rimraf=require(_0x1ffe('0x5'));var config=require(_0x1ffe('0x6'));var attributes=require(_0x1ffe('0x7'));module[_0x1ffe('0x8')]=function(_0x378bbc,_0xb5517d){return _0x378bbc[_0x1ffe('0x9')](_0x1ffe('0xa'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x878f=['path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x878f,0x173));var _0xf878=function(_0xaa6d89,_0x458605){_0xaa6d89=_0xaa6d89-0x0;var _0x290734=_0x878f[_0xaa6d89];return _0x290734;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var logger=require(_0xf878('0x1'))(_0xf878('0x2'));var moment=require(_0xf878('0x3'));var BPromise=require(_0xf878('0x4'));var rp=require(_0xf878('0x5'));var fs=require('fs');var path=require(_0xf878('0x6'));var rimraf=require(_0xf878('0x7'));var config=require(_0xf878('0x8'));var attributes=require(_0xf878('0x9'));module[_0xf878('0xa')]=function(_0x4bc9aa,_0x4ac8d8){return _0x4bc9aa[_0xf878('0xb')](_0xf878('0xc'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d939c9..4fe5b43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x264d4d,_0x118fb5){var _0xc917e2=function(_0x21b9dc){while(--_0x21b9dc){_0x264d4d['push'](_0x264d4d['shift']());}};_0xc917e2(++_0x118fb5);}(_0x9c44,0x178));var _0x49c4=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x9c44[_0x6cf19c];return _0xce14f3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3c0291,_0x37ac17){var _0x17e074=function(_0x58af74){while(--_0x58af74){_0x3c0291['push'](_0x3c0291['shift']());}};_0x17e074(++_0x37ac17);}(_0xe706,0xa3));var _0x6e70=function(_0x4cce8,_0x22d1fe){_0x4cce8=_0x4cce8-0x0;var _0x458440=_0xe706[_0x4cce8];return _0x458440;};'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 7d853dc..d20bac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe93b=['exports','INTEGER','sequelize'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0xe93b,0x16a));var _0xbe93=function(_0xef4397,_0x168d4a){_0xef4397=_0xef4397-0x0;var _0x5158b2=_0xe93b[_0xef4397];return _0x5158b2;};'use strict';var Sequelize=require(_0xbe93('0x0'));module[_0xbe93('0x1')]={'penalty':{'type':Sequelize[_0xbe93('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1530=['INTEGER','sequelize'];(function(_0x4da11b,_0x28c0ab){var _0x2fa89d=function(_0x56c766){while(--_0x56c766){_0x4da11b['push'](_0x4da11b['shift']());}};_0x2fa89d(++_0x28c0ab);}(_0x1530,0x103));var _0x0153=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x1530[_0x1caf6a];return _0x1bf493;};'use strict';var Sequelize=require(_0x0153('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x0153('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index e5e6153..fa5fdec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1159=['define','TeamVoiceQueue','team_has_voice_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x3bd1ca,_0x272c0e){var _0x563090=function(_0x49578e){while(--_0x49578e){_0x3bd1ca['push'](_0x3bd1ca['shift']());}};_0x563090(++_0x272c0e);}(_0x1159,0xf3));var _0x9115=function(_0x2dc0b6,_0x284c27){_0x2dc0b6=_0x2dc0b6-0x0;var _0x20eff3=_0x1159[_0x2dc0b6];return _0x20eff3;};'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':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e35=['exports','team_has_voice_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x2a44a9,_0x460518){var _0x2ec769=function(_0x26970f){while(--_0x26970f){_0x2a44a9['push'](_0x2a44a9['shift']());}};_0x2ec769(++_0x460518);}(_0x2e35,0x1d0));var _0x52e3=function(_0x4f2ce1,_0x556972){_0x4f2ce1=_0x4f2ce1-0x0;var _0x33f9e9=_0x2e35[_0x4f2ce1];return _0x33f9e9;};'use strict';var _=require(_0x52e3('0x0'));var util=require(_0x52e3('0x1'));var logger=require(_0x52e3('0x2'))('api');var moment=require(_0x52e3('0x3'));var BPromise=require(_0x52e3('0x4'));var rp=require(_0x52e3('0x5'));var fs=require('fs');var path=require(_0x52e3('0x6'));var rimraf=require('rimraf');var config=require(_0x52e3('0x7'));var attributes=require(_0x52e3('0x8'));module[_0x52e3('0x9')]=function(_0x20d1bc,_0x5f117a){return _0x20d1bc['define']('TeamVoiceQueue',attributes,{'tableName':_0x52e3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a1f99c..57b660a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eed=['catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4256e5,_0x5de329){var _0x4bacd2=function(_0x231952){while(--_0x231952){_0x4256e5['push'](_0x4256e5['shift']());}};_0x4bacd2(++_0x5de329);}(_0x3eed,0x1b9));var _0xd3ee=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3eed[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0xd3ee('0x0'));var moment=require('moment');var BPromise=require(_0xd3ee('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd3ee('0x2'));var db=require(_0xd3ee('0x3'))['db'];var utils=require(_0xd3ee('0x4'));var logger=require(_0xd3ee('0x5'))(_0xd3ee('0x6'));var config=require('../../config/environment');var jayson=require(_0xd3ee('0x7'));var client=jayson[_0xd3ee('0x8')][_0xd3ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57c0a8,_0x8f655e,_0x2512ec){return new BPromise(function(_0x540ecc,_0x54c91d){return client[_0xd3ee('0xa')](_0x57c0a8,_0x2512ec)[_0xd3ee('0xb')](function(_0x5d110a){logger[_0xd3ee('0xc')](_0xd3ee('0xd'),_0x8f655e,_0xd3ee('0xe'));logger[_0xd3ee('0xf')](_0xd3ee('0x10'),_0x8f655e,'request\x20sent',JSON[_0xd3ee('0x11')](_0x5d110a));if(_0x5d110a[_0xd3ee('0x12')]){if(_0x5d110a[_0xd3ee('0x12')][_0xd3ee('0x13')]===0x1f4){logger[_0xd3ee('0x12')](_0xd3ee('0xd'),_0x8f655e,_0x5d110a[_0xd3ee('0x12')][_0xd3ee('0x14')]);return _0x54c91d(_0x5d110a[_0xd3ee('0x12')][_0xd3ee('0x14')]);}logger['error'](_0xd3ee('0xd'),_0x8f655e,_0x5d110a[_0xd3ee('0x12')][_0xd3ee('0x14')]);return _0x540ecc(_0x5d110a[_0xd3ee('0x12')][_0xd3ee('0x14')]);}else{logger['info'](_0xd3ee('0xd'),_0x8f655e,'request\x20sent');_0x540ecc(_0x5d110a['result'][_0xd3ee('0x14')]);}})[_0xd3ee('0x15')](function(_0x53929c){logger[_0xd3ee('0x12')](_0xd3ee('0xd'),_0x8f655e,_0x53929c);_0x54c91d(_0x53929c);});});}
\ No newline at end of file
+var _0xe306=['TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x259cad,_0x3dae11){var _0x4e6a68=function(_0x1669dc){while(--_0x1669dc){_0x259cad['push'](_0x259cad['shift']());}};_0x4e6a68(++_0x3dae11);}(_0xe306,0x180));var _0x6e30=function(_0x515afd,_0x1a1e91){_0x515afd=_0x515afd-0x0;var _0x536d53=_0xe306[_0x515afd];return _0x536d53;};'use strict';var _=require(_0x6e30('0x0'));var util=require(_0x6e30('0x1'));var moment=require(_0x6e30('0x2'));var BPromise=require(_0x6e30('0x3'));var rs=require(_0x6e30('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6e30('0x5'));var logger=require(_0x6e30('0x6'))('rpc');var config=require(_0x6e30('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6e30('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x42dffb,_0x5e13eb,_0x5680d6){return new BPromise(function(_0x380c26,_0x124958){return client[_0x6e30('0x9')](_0x42dffb,_0x5680d6)[_0x6e30('0xa')](function(_0x40415b){logger[_0x6e30('0xb')](_0x6e30('0xc'),_0x5e13eb,_0x6e30('0xd'));logger[_0x6e30('0xe')](_0x6e30('0xf'),_0x5e13eb,_0x6e30('0xd'),JSON['stringify'](_0x40415b));if(_0x40415b[_0x6e30('0x10')]){if(_0x40415b[_0x6e30('0x10')][_0x6e30('0x11')]===0x1f4){logger[_0x6e30('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5e13eb,_0x40415b[_0x6e30('0x10')]['message']);return _0x124958(_0x40415b[_0x6e30('0x10')][_0x6e30('0x12')]);}logger[_0x6e30('0x10')](_0x6e30('0xc'),_0x5e13eb,_0x40415b['error'][_0x6e30('0x12')]);return _0x380c26(_0x40415b[_0x6e30('0x10')][_0x6e30('0x12')]);}else{logger[_0x6e30('0xb')](_0x6e30('0xc'),_0x5e13eb,_0x6e30('0xd'));_0x380c26(_0x40415b[_0x6e30('0x13')]['message']);}})[_0x6e30('0x14')](function(_0x56cd37){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x5e13eb,_0x56cd37);_0x124958(_0x56cd37);});});}
\ No newline at end of file
index 32920bc..4c50240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0954=['put','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','/:id','isAuthenticated','show','post'];(function(_0x37b1d3,_0x5cbe9a){var _0x3f5d4d=function(_0x151e4c){while(--_0x151e4c){_0x37b1d3['push'](_0x37b1d3['shift']());}};_0x3f5d4d(++_0x5cbe9a);}(_0x0954,0x135));var _0x4095=function(_0x49ad79,_0x48ee93){_0x49ad79=_0x49ad79-0x0;var _0xa4e38a=_0x0954[_0x49ad79];return _0xa4e38a;};'use strict';var multer=require(_0x4095('0x0'));var util=require('util');var path=require(_0x4095('0x1'));var timeout=require(_0x4095('0x2'));var express=require('express');var router=express[_0x4095('0x3')]();var fs_extra=require(_0x4095('0x4'));var auth=require(_0x4095('0x5'));var interaction=require(_0x4095('0x6'));var config=require(_0x4095('0x7'));var controller=require(_0x4095('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x4095('0x9')](_0x4095('0xa'),auth[_0x4095('0xb')](),controller[_0x4095('0xc')]);router[_0x4095('0xd')]('/',auth[_0x4095('0xb')](),controller['create']);router[_0x4095('0xe')](_0x4095('0xa'),auth[_0x4095('0xb')](),controller['update']);router[_0x4095('0xf')](_0x4095('0xa'),auth[_0x4095('0xb')](),controller['destroy']);module[_0x4095('0x10')]=router;
\ No newline at end of file
+var _0x4744=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','index','get','/:id','isAuthenticated','show','post','put','update','delete','multer','util','connect-timeout'];(function(_0x3523b1,_0x5b1762){var _0x3f7d89=function(_0x2648e6){while(--_0x2648e6){_0x3523b1['push'](_0x3523b1['shift']());}};_0x3f7d89(++_0x5b1762);}(_0x4744,0x107));var _0x4474=function(_0x4ce579,_0x3636a1){_0x4ce579=_0x4ce579-0x0;var _0xf37d2e=_0x4744[_0x4ce579];return _0xf37d2e;};'use strict';var multer=require(_0x4474('0x0'));var util=require(_0x4474('0x1'));var path=require('path');var timeout=require(_0x4474('0x2'));var express=require(_0x4474('0x3'));var router=express[_0x4474('0x4')]();var fs_extra=require(_0x4474('0x5'));var auth=require(_0x4474('0x6'));var interaction=require(_0x4474('0x7'));var config=require(_0x4474('0x8'));var controller=require(_0x4474('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x4474('0xa')]);router[_0x4474('0xb')](_0x4474('0xc'),auth[_0x4474('0xd')](),controller[_0x4474('0xe')]);router[_0x4474('0xf')]('/',auth[_0x4474('0xd')](),controller['create']);router[_0x4474('0x10')](_0x4474('0xc'),auth[_0x4474('0xd')](),controller[_0x4474('0x11')]);router[_0x4474('0x12')](_0x4474('0xc'),auth[_0x4474('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 0736117..2c1871a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4907=['sequelize','exports','STRING','TEXT'];(function(_0xd1cc8c,_0x300806){var _0x33ac8c=function(_0x368404){while(--_0x368404){_0xd1cc8c['push'](_0xd1cc8c['shift']());}};_0x33ac8c(++_0x300806);}(_0x4907,0x1c4));var _0x7490=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4907[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x7490('0x0'));module[_0x7490('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7490('0x2')]},'html':{'type':Sequelize[_0x7490('0x3')]}};
\ No newline at end of file
+var _0xeb58=['STRING','sequelize','exports'];(function(_0x47623f,_0x148f3a){var _0x282ce8=function(_0x35bca1){while(--_0x35bca1){_0x47623f['push'](_0x47623f['shift']());}};_0x282ce8(++_0x148f3a);}(_0xeb58,0x7f));var _0x8eb5=function(_0x3624c3,_0x484a64){_0x3624c3=_0x3624c3-0x0;var _0x1ac029=_0xeb58[_0x3624c3];return _0x1ac029;};'use strict';var Sequelize=require(_0x8eb5('0x0'));module[_0x8eb5('0x1')]={'name':{'type':Sequelize[_0x8eb5('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 8801d2d..6526b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718e=['attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','VIRTUAL','includeAll','findAll','catch','params','keys','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','get','Templates','UserProfileResource','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','key','model','query','intersection'];(function(_0x111b23,_0x13eb7d){var _0x5a7262=function(_0x389334){while(--_0x389334){_0x111b23['push'](_0x111b23['shift']());}};_0x5a7262(++_0x13eb7d);}(_0x718e,0xbd));var _0xe718=function(_0x32ecf5,_0x345f85){_0x32ecf5=_0x32ecf5-0x0;var _0xb8b77b=_0x718e[_0x32ecf5];return _0xb8b77b;};'use strict';var emlformat=require(_0xe718('0x0'));var rimraf=require(_0xe718('0x1'));var zipdir=require(_0xe718('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe718('0x3'));var moment=require(_0xe718('0x4'));var BPromise=require(_0xe718('0x5'));var Mustache=require(_0xe718('0x6'));var util=require('util');var path=require(_0xe718('0x7'));var sox=require(_0xe718('0x8'));var csv=require(_0xe718('0x9'));var ejs=require(_0xe718('0xa'));var fs=require('fs');var fs_extra=require(_0xe718('0xb'));var _=require(_0xe718('0xc'));var squel=require(_0xe718('0xd'));var crypto=require(_0xe718('0xe'));var jsforce=require(_0xe718('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe718('0x9'));var querystring=require(_0xe718('0x10'));var Papa=require(_0xe718('0x11'));var Redis=require('ioredis');var authService=require(_0xe718('0x12'));var qs=require(_0xe718('0x13'));var as=require(_0xe718('0x14'));var hardwareService=require(_0xe718('0x15'));var logger=require('../../config/logger')(_0xe718('0x16'));var utils=require('../../config/utils');var config=require(_0xe718('0x17'));var licenseUtil=require(_0xe718('0x18'));var db=require(_0xe718('0x19'))['db'];function respondWithStatusCode(_0x464494,_0x2764a9){_0x2764a9=_0x2764a9||0xcc;return function(_0x2ce2ab){if(_0x2ce2ab){return _0x464494[_0xe718('0x1a')](_0x2764a9);}return _0x464494[_0xe718('0x1b')](_0x2764a9)[_0xe718('0x1c')]();};}function respondWithResult(_0x223cd2,_0x3ff2df){_0x3ff2df=_0x3ff2df||0xc8;return function(_0x4f8bf3){if(_0x4f8bf3){return _0x223cd2[_0xe718('0x1b')](_0x3ff2df)[_0xe718('0x1d')](_0x4f8bf3);}};}function respondWithFilteredResult(_0x393e68,_0x357b){return function(_0x315f34){if(_0x315f34){var _0x22a656=typeof _0x357b[_0xe718('0x1e')]===_0xe718('0x1f')&&typeof _0x357b[_0xe718('0x20')]===_0xe718('0x1f');var _0x4106ed=_0x315f34['count'];var _0x537a8d=_0x22a656?0x0:_0x357b[_0xe718('0x1e')];var _0x20729d=_0x22a656?_0x315f34[_0xe718('0x21')]:_0x357b[_0xe718('0x1e')]+_0x357b['limit'];var _0x2daf11;if(_0x20729d>=_0x4106ed){_0x20729d=_0x4106ed;_0x2daf11=0xc8;}else{_0x2daf11=0xce;}_0x393e68['status'](_0x2daf11);return _0x393e68[_0xe718('0x22')]('Content-Range',_0x537a8d+'-'+_0x20729d+'/'+_0x4106ed)[_0xe718('0x1d')](_0x315f34);}return null;};}function patchUpdates(_0x56175d){return function(_0x12c608){try{jsonpatch[_0xe718('0x23')](_0x12c608,_0x56175d,!![]);}catch(_0x21c5af){return BPromise['reject'](_0x21c5af);}return _0x12c608[_0xe718('0x24')]();};}function saveUpdates(_0x2859a0,_0x4b2a0f){return function(_0x5b5353){if(_0x5b5353){return _0x5b5353[_0xe718('0x25')](_0x2859a0)['then'](function(_0x4f1468){return _0x4f1468;});}return null;};}function removeEntity(_0x40961d,_0x4f1164){return function(_0x27bc4a){if(_0x27bc4a){return _0x27bc4a[_0xe718('0x26')]()[_0xe718('0x27')](function(){var _0x134b94=_0x27bc4a[_0xe718('0x28')]({'plain':!![]});var _0x1b8fa7=_0xe718('0x29');return db[_0xe718('0x2a')][_0xe718('0x26')]({'where':{'type':_0x1b8fa7,'resourceId':_0x134b94['id']}})['then'](function(){return _0x27bc4a;});})['then'](function(){_0x40961d[_0xe718('0x1b')](0xcc)[_0xe718('0x1c')]();});}};}function handleEntityNotFound(_0x4f5b35,_0x5b49ec){return function(_0x454c67){if(!_0x454c67){_0x4f5b35[_0xe718('0x1a')](0x194);}return _0x454c67;};}function handleError(_0x51d42d,_0xc528b4){_0xc528b4=_0xc528b4||0x1f4;return function(_0x3aa33a){logger[_0xe718('0x2b')](_0x3aa33a[_0xe718('0x2c')]);if(_0x3aa33a[_0xe718('0x2d')]){delete _0x3aa33a['name'];}_0x51d42d[_0xe718('0x1b')](_0xc528b4)[_0xe718('0x2e')](_0x3aa33a);};}exports[_0xe718('0x2f')]=function(_0x4e23c3,_0x1889de){var _0x11de3c={},_0x2b5b99={},_0x2b354d={'count':0x0,'rows':[]};var _0xb48210=_[_0xe718('0x30')](db[_0xe718('0x31')][_0xe718('0x32')],function(_0x192d21){return{'name':_0x192d21[_0xe718('0x33')],'type':_0x192d21[_0xe718('0x34')][_0xe718('0x35')]};});_0x2b5b99[_0xe718('0x36')]=_['map'](_0xb48210,_0xe718('0x2d'));_0x2b5b99[_0xe718('0x37')]=_['keys'](_0x4e23c3[_0xe718('0x37')]);_0x2b5b99['filters']=_[_0xe718('0x38')](_0x2b5b99['model'],_0x2b5b99[_0xe718('0x37')]);_0x11de3c[_0xe718('0x39')]=_['intersection'](_0x2b5b99[_0xe718('0x36')],qs[_0xe718('0x3a')](_0x4e23c3[_0xe718('0x37')][_0xe718('0x3a')]));_0x11de3c['attributes']=_0x11de3c[_0xe718('0x39')][_0xe718('0x3b')]?_0x11de3c[_0xe718('0x39')]:_0x2b5b99['model'];if(!_0x4e23c3['query'][_0xe718('0x3c')](_0xe718('0x3d'))){_0x11de3c[_0xe718('0x20')]=qs[_0xe718('0x20')](_0x4e23c3[_0xe718('0x37')][_0xe718('0x20')]);_0x11de3c['offset']=qs[_0xe718('0x1e')](_0x4e23c3['query']['offset']);}_0x11de3c['order']=qs['sort'](_0x4e23c3[_0xe718('0x37')][_0xe718('0x3e')]);_0x11de3c['where']=qs[_0xe718('0x3f')](_['pick'](_0x4e23c3[_0xe718('0x37')],_0x2b5b99[_0xe718('0x3f')]),_0xb48210);if(_0x4e23c3[_0xe718('0x37')][_0xe718('0x40')]){_0x11de3c[_0xe718('0x41')]=_[_0xe718('0x42')](_0x11de3c[_0xe718('0x41')],{'$or':_[_0xe718('0x30')](_0xb48210,function(_0x2144e3){if(_0x2144e3[_0xe718('0x34')]!==_0xe718('0x43')){var _0x460866={};_0x460866[_0x2144e3[_0xe718('0x2d')]]={'$like':'%'+_0x4e23c3['query']['filter']+'%'};return _0x460866;}})});}_0x11de3c=_[_0xe718('0x42')]({},_0x11de3c,_0x4e23c3['options']);var _0x3f1270={'where':_0x11de3c[_0xe718('0x41')]};return db[_0xe718('0x31')][_0xe718('0x21')](_0x3f1270)[_0xe718('0x27')](function(_0x1ad9e7){_0x2b354d['count']=_0x1ad9e7;if(_0x4e23c3[_0xe718('0x37')][_0xe718('0x44')]){_0x11de3c['include']=[{'all':!![]}];}return db['Template'][_0xe718('0x45')](_0x11de3c);})[_0xe718('0x27')](function(_0x50ce4f){_0x2b354d['rows']=_0x50ce4f;return _0x2b354d;})['then'](respondWithFilteredResult(_0x1889de,_0x11de3c))[_0xe718('0x46')](handleError(_0x1889de,null));};exports['show']=function(_0x597c76,_0x346faf){var _0x50e676={'raw':!![],'where':{'id':_0x597c76[_0xe718('0x47')]['id']}},_0x5e66eb={};_0x5e66eb[_0xe718('0x36')]=_[_0xe718('0x48')](db[_0xe718('0x31')][_0xe718('0x32')]);_0x5e66eb['query']=_[_0xe718('0x48')](_0x597c76[_0xe718('0x37')]);_0x5e66eb[_0xe718('0x3f')]=_['intersection'](_0x5e66eb['model'],_0x5e66eb['query']);_0x50e676['attributes']=_['intersection'](_0x5e66eb[_0xe718('0x36')],qs[_0xe718('0x3a')](_0x597c76[_0xe718('0x37')][_0xe718('0x3a')]));_0x50e676[_0xe718('0x39')]=_0x50e676['attributes']['length']?_0x50e676[_0xe718('0x39')]:_0x5e66eb[_0xe718('0x36')];if(_0x597c76[_0xe718('0x37')][_0xe718('0x44')]){_0x50e676[_0xe718('0x49')]=[{'all':!![]}];}_0x50e676=_[_0xe718('0x42')]({},_0x50e676,_0x597c76['options']);return db[_0xe718('0x31')]['find'](_0x50e676)[_0xe718('0x27')](handleEntityNotFound(_0x346faf,null))[_0xe718('0x27')](respondWithResult(_0x346faf,null))[_0xe718('0x46')](handleError(_0x346faf,null));};exports[_0xe718('0x4a')]=function(_0x1055e6,_0x582b56){return db['Template']['create'](_0x1055e6[_0xe718('0x4b')],{})[_0xe718('0x27')](function(_0x45390b){var _0x306e90=_0x1055e6[_0xe718('0x4c')][_0xe718('0x28')]({'plain':!![]});if(!_0x306e90)throw new Error(_0xe718('0x4d'));if(_0x306e90['role']===_0xe718('0x4c')){var _0x33a4c6=_0x45390b[_0xe718('0x28')]({'plain':!![]});var _0x44fca7='Templates';return db[_0xe718('0x4e')][_0xe718('0x4f')]({'where':{'name':_0x44fca7,'userProfileId':_0x306e90[_0xe718('0x50')]},'raw':!![]})[_0xe718('0x27')](function(_0x5b0c76){if(_0x5b0c76&&_0x5b0c76['autoAssociation']===0x0){return db[_0xe718('0x2a')]['create']({'name':_0x33a4c6['name'],'resourceId':_0x33a4c6['id'],'type':_0x5b0c76[_0xe718('0x2d')],'sectionId':_0x5b0c76['id']},{})[_0xe718('0x27')](function(){return _0x45390b;});}else{return _0x45390b;}})['catch'](function(_0x351159){logger[_0xe718('0x2b')](_0xe718('0x51'),_0x351159);throw _0x351159;});}return _0x45390b;})[_0xe718('0x27')](respondWithResult(_0x582b56,0xc9))[_0xe718('0x46')](handleError(_0x582b56,null));};exports[_0xe718('0x25')]=function(_0x991bbf,_0x492a9d){if(_0x991bbf[_0xe718('0x4b')]['id']){delete _0x991bbf['body']['id'];}return db[_0xe718('0x31')][_0xe718('0x4f')]({'where':{'id':_0x991bbf[_0xe718('0x47')]['id']}})[_0xe718('0x27')](handleEntityNotFound(_0x492a9d,null))[_0xe718('0x27')](saveUpdates(_0x991bbf[_0xe718('0x4b')],null))[_0xe718('0x27')](respondWithResult(_0x492a9d,null))[_0xe718('0x46')](handleError(_0x492a9d,null));};exports[_0xe718('0x26')]=function(_0x2f30b5,_0x53b0b5){return db[_0xe718('0x31')]['find']({'where':{'id':_0x2f30b5[_0xe718('0x47')]['id']}})[_0xe718('0x27')](handleEntityNotFound(_0x53b0b5,null))[_0xe718('0x27')](removeEntity(_0x53b0b5,null))['catch'](handleError(_0x53b0b5,null));};
\ No newline at end of file
+var _0x1ccf=['set','Content-Range','apply','reject','update','then','destroy','Templates','error','stack','name','send','index','map','Template','rawAttributes','fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','filters','pick','where','type','VIRTUAL','filter','merge','options','includeAll','include','catch','show','params','keys','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','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','count','offset','limit'];(function(_0x506e71,_0x4f0fe7){var _0xb6aa45=function(_0x3b9aad){while(--_0x3b9aad){_0x506e71['push'](_0x506e71['shift']());}};_0xb6aa45(++_0x4f0fe7);}(_0x1ccf,0x12e));var _0xf1cc=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x1ccf[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0xf1cc('0x0'));var rimraf=require(_0xf1cc('0x1'));var zipdir=require(_0xf1cc('0x2'));var jsonpatch=require(_0xf1cc('0x3'));var rp=require(_0xf1cc('0x4'));var moment=require(_0xf1cc('0x5'));var BPromise=require(_0xf1cc('0x6'));var Mustache=require(_0xf1cc('0x7'));var util=require(_0xf1cc('0x8'));var path=require(_0xf1cc('0x9'));var sox=require(_0xf1cc('0xa'));var csv=require(_0xf1cc('0xb'));var ejs=require(_0xf1cc('0xc'));var fs=require('fs');var fs_extra=require(_0xf1cc('0xd'));var _=require('lodash');var squel=require(_0xf1cc('0xe'));var crypto=require('crypto');var jsforce=require(_0xf1cc('0xf'));var deskjs=require(_0xf1cc('0x10'));var toCsv=require(_0xf1cc('0xb'));var querystring=require(_0xf1cc('0x11'));var Papa=require('papaparse');var Redis=require(_0xf1cc('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf1cc('0x13'));var as=require(_0xf1cc('0x14'));var hardwareService=require(_0xf1cc('0x15'));var logger=require(_0xf1cc('0x16'))(_0xf1cc('0x17'));var utils=require(_0xf1cc('0x18'));var config=require(_0xf1cc('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xf1cc('0x1a'))['db'];function respondWithStatusCode(_0xc3a4a,_0x3b234b){_0x3b234b=_0x3b234b||0xcc;return function(_0x12fcb3){if(_0x12fcb3){return _0xc3a4a[_0xf1cc('0x1b')](_0x3b234b);}return _0xc3a4a[_0xf1cc('0x1c')](_0x3b234b)[_0xf1cc('0x1d')]();};}function respondWithResult(_0x42b253,_0x1a34f7){_0x1a34f7=_0x1a34f7||0xc8;return function(_0x16d1b5){if(_0x16d1b5){return _0x42b253['status'](_0x1a34f7)[_0xf1cc('0x1e')](_0x16d1b5);}};}function respondWithFilteredResult(_0x369177,_0x7eeb22){return function(_0x8991c4){if(_0x8991c4){var _0x292045=typeof _0x7eeb22['offset']==='undefined'&&typeof _0x7eeb22['limit']==='undefined';var _0x1651d3=_0x8991c4[_0xf1cc('0x1f')];var _0x318cca=_0x292045?0x0:_0x7eeb22[_0xf1cc('0x20')];var _0x254bc1=_0x292045?_0x8991c4[_0xf1cc('0x1f')]:_0x7eeb22['offset']+_0x7eeb22[_0xf1cc('0x21')];var _0x31d628;if(_0x254bc1>=_0x1651d3){_0x254bc1=_0x1651d3;_0x31d628=0xc8;}else{_0x31d628=0xce;}_0x369177[_0xf1cc('0x1c')](_0x31d628);return _0x369177[_0xf1cc('0x22')](_0xf1cc('0x23'),_0x318cca+'-'+_0x254bc1+'/'+_0x1651d3)[_0xf1cc('0x1e')](_0x8991c4);}return null;};}function patchUpdates(_0x583925){return function(_0x27e1f0){try{jsonpatch[_0xf1cc('0x24')](_0x27e1f0,_0x583925,!![]);}catch(_0x14db24){return BPromise[_0xf1cc('0x25')](_0x14db24);}return _0x27e1f0['save']();};}function saveUpdates(_0x58d010,_0x1d64f8){return function(_0xe9a69){if(_0xe9a69){return _0xe9a69[_0xf1cc('0x26')](_0x58d010)[_0xf1cc('0x27')](function(_0x33d890){return _0x33d890;});}return null;};}function removeEntity(_0x1445f8,_0xc4297e){return function(_0x41b9d0){if(_0x41b9d0){return _0x41b9d0[_0xf1cc('0x28')]()[_0xf1cc('0x27')](function(){var _0x445d61=_0x41b9d0['get']({'plain':!![]});var _0x457f11=_0xf1cc('0x29');return db['UserProfileResource'][_0xf1cc('0x28')]({'where':{'type':_0x457f11,'resourceId':_0x445d61['id']}})[_0xf1cc('0x27')](function(){return _0x41b9d0;});})[_0xf1cc('0x27')](function(){_0x1445f8[_0xf1cc('0x1c')](0xcc)[_0xf1cc('0x1d')]();});}};}function handleEntityNotFound(_0x58f7ed,_0x424c09){return function(_0x4bb371){if(!_0x4bb371){_0x58f7ed['sendStatus'](0x194);}return _0x4bb371;};}function handleError(_0x3e79d2,_0x3f754e){_0x3f754e=_0x3f754e||0x1f4;return function(_0xa7f4c){logger[_0xf1cc('0x2a')](_0xa7f4c[_0xf1cc('0x2b')]);if(_0xa7f4c[_0xf1cc('0x2c')]){delete _0xa7f4c[_0xf1cc('0x2c')];}_0x3e79d2[_0xf1cc('0x1c')](_0x3f754e)[_0xf1cc('0x2d')](_0xa7f4c);};}exports[_0xf1cc('0x2e')]=function(_0x1c7b28,_0x173e2a){var _0x32cdfc={},_0x14d689={},_0x385b97={'count':0x0,'rows':[]};var _0x330fc6=_[_0xf1cc('0x2f')](db[_0xf1cc('0x30')][_0xf1cc('0x31')],function(_0x1de4d0){return{'name':_0x1de4d0[_0xf1cc('0x32')],'type':_0x1de4d0['type'][_0xf1cc('0x33')]};});_0x14d689[_0xf1cc('0x34')]=_['map'](_0x330fc6,_0xf1cc('0x2c'));_0x14d689[_0xf1cc('0x35')]=_['keys'](_0x1c7b28['query']);_0x14d689['filters']=_['intersection'](_0x14d689[_0xf1cc('0x34')],_0x14d689['query']);_0x32cdfc[_0xf1cc('0x36')]=_[_0xf1cc('0x37')](_0x14d689[_0xf1cc('0x34')],qs[_0xf1cc('0x38')](_0x1c7b28[_0xf1cc('0x35')][_0xf1cc('0x38')]));_0x32cdfc[_0xf1cc('0x36')]=_0x32cdfc['attributes'][_0xf1cc('0x39')]?_0x32cdfc['attributes']:_0x14d689[_0xf1cc('0x34')];if(!_0x1c7b28[_0xf1cc('0x35')][_0xf1cc('0x3a')](_0xf1cc('0x3b'))){_0x32cdfc[_0xf1cc('0x21')]=qs['limit'](_0x1c7b28[_0xf1cc('0x35')][_0xf1cc('0x21')]);_0x32cdfc[_0xf1cc('0x20')]=qs[_0xf1cc('0x20')](_0x1c7b28[_0xf1cc('0x35')][_0xf1cc('0x20')]);}_0x32cdfc['order']=qs[_0xf1cc('0x3c')](_0x1c7b28['query'][_0xf1cc('0x3c')]);_0x32cdfc['where']=qs[_0xf1cc('0x3d')](_[_0xf1cc('0x3e')](_0x1c7b28[_0xf1cc('0x35')],_0x14d689[_0xf1cc('0x3d')]),_0x330fc6);if(_0x1c7b28[_0xf1cc('0x35')]['filter']){_0x32cdfc['where']=_['merge'](_0x32cdfc[_0xf1cc('0x3f')],{'$or':_[_0xf1cc('0x2f')](_0x330fc6,function(_0x48949a){if(_0x48949a[_0xf1cc('0x40')]!==_0xf1cc('0x41')){var _0x41a7f6={};_0x41a7f6[_0x48949a[_0xf1cc('0x2c')]]={'$like':'%'+_0x1c7b28['query'][_0xf1cc('0x42')]+'%'};return _0x41a7f6;}})});}_0x32cdfc=_[_0xf1cc('0x43')]({},_0x32cdfc,_0x1c7b28[_0xf1cc('0x44')]);var _0x726bc7={'where':_0x32cdfc[_0xf1cc('0x3f')]};return db[_0xf1cc('0x30')]['count'](_0x726bc7)['then'](function(_0x1c84c3){_0x385b97[_0xf1cc('0x1f')]=_0x1c84c3;if(_0x1c7b28[_0xf1cc('0x35')][_0xf1cc('0x45')]){_0x32cdfc[_0xf1cc('0x46')]=[{'all':!![]}];}return db['Template']['findAll'](_0x32cdfc);})[_0xf1cc('0x27')](function(_0x1dd34a){_0x385b97['rows']=_0x1dd34a;return _0x385b97;})[_0xf1cc('0x27')](respondWithFilteredResult(_0x173e2a,_0x32cdfc))[_0xf1cc('0x47')](handleError(_0x173e2a,null));};exports[_0xf1cc('0x48')]=function(_0x3e1100,_0x56b1a6){var _0x398fef={'raw':!![],'where':{'id':_0x3e1100[_0xf1cc('0x49')]['id']}},_0x3ee275={};_0x3ee275[_0xf1cc('0x34')]=_[_0xf1cc('0x4a')](db[_0xf1cc('0x30')][_0xf1cc('0x31')]);_0x3ee275[_0xf1cc('0x35')]=_[_0xf1cc('0x4a')](_0x3e1100[_0xf1cc('0x35')]);_0x3ee275[_0xf1cc('0x3d')]=_[_0xf1cc('0x37')](_0x3ee275['model'],_0x3ee275[_0xf1cc('0x35')]);_0x398fef[_0xf1cc('0x36')]=_['intersection'](_0x3ee275[_0xf1cc('0x34')],qs[_0xf1cc('0x38')](_0x3e1100[_0xf1cc('0x35')][_0xf1cc('0x38')]));_0x398fef['attributes']=_0x398fef[_0xf1cc('0x36')][_0xf1cc('0x39')]?_0x398fef[_0xf1cc('0x36')]:_0x3ee275[_0xf1cc('0x34')];if(_0x3e1100[_0xf1cc('0x35')][_0xf1cc('0x45')]){_0x398fef[_0xf1cc('0x46')]=[{'all':!![]}];}_0x398fef=_[_0xf1cc('0x43')]({},_0x398fef,_0x3e1100['options']);return db[_0xf1cc('0x30')][_0xf1cc('0x4b')](_0x398fef)[_0xf1cc('0x27')](handleEntityNotFound(_0x56b1a6,null))[_0xf1cc('0x27')](respondWithResult(_0x56b1a6,null))[_0xf1cc('0x47')](handleError(_0x56b1a6,null));};exports[_0xf1cc('0x4c')]=function(_0x393d00,_0x265935){return db[_0xf1cc('0x30')][_0xf1cc('0x4c')](_0x393d00[_0xf1cc('0x4d')],{})[_0xf1cc('0x27')](function(_0x402fd1){var _0x2578c0=_0x393d00[_0xf1cc('0x4e')][_0xf1cc('0x4f')]({'plain':!![]});if(!_0x2578c0)throw new Error(_0xf1cc('0x50'));if(_0x2578c0['role']==='user'){var _0x57492f=_0x402fd1['get']({'plain':!![]});var _0x3dbe59=_0xf1cc('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x3dbe59,'userProfileId':_0x2578c0[_0xf1cc('0x51')]},'raw':!![]})[_0xf1cc('0x27')](function(_0x56becf){if(_0x56becf&&_0x56becf[_0xf1cc('0x52')]===0x0){return db['UserProfileResource'][_0xf1cc('0x4c')]({'name':_0x57492f[_0xf1cc('0x2c')],'resourceId':_0x57492f['id'],'type':_0x56becf[_0xf1cc('0x2c')],'sectionId':_0x56becf['id']},{})[_0xf1cc('0x27')](function(){return _0x402fd1;});}else{return _0x402fd1;}})[_0xf1cc('0x47')](function(_0x32bcdf){logger[_0xf1cc('0x2a')](_0xf1cc('0x53'),_0x32bcdf);throw _0x32bcdf;});}return _0x402fd1;})[_0xf1cc('0x27')](respondWithResult(_0x265935,0xc9))[_0xf1cc('0x47')](handleError(_0x265935,null));};exports[_0xf1cc('0x26')]=function(_0xba1e72,_0x42cffd){if(_0xba1e72[_0xf1cc('0x4d')]['id']){delete _0xba1e72[_0xf1cc('0x4d')]['id'];}return db[_0xf1cc('0x30')]['find']({'where':{'id':_0xba1e72[_0xf1cc('0x49')]['id']}})[_0xf1cc('0x27')](handleEntityNotFound(_0x42cffd,null))[_0xf1cc('0x27')](saveUpdates(_0xba1e72[_0xf1cc('0x4d')],null))[_0xf1cc('0x27')](respondWithResult(_0x42cffd,null))[_0xf1cc('0x47')](handleError(_0x42cffd,null));};exports[_0xf1cc('0x28')]=function(_0xb55859,_0x1557cf){return db[_0xf1cc('0x30')][_0xf1cc('0x4b')]({'where':{'id':_0xb55859[_0xf1cc('0x49')]['id']}})[_0xf1cc('0x27')](handleEntityNotFound(_0x1557cf,null))[_0xf1cc('0x27')](removeEntity(_0x1557cf,null))['catch'](handleError(_0x1557cf,null));};
\ No newline at end of file
index ac11156..e66f2d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc765=['request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define','Template','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x551063,_0x3bee1d){var _0x53d42f=function(_0x50506f){while(--_0x50506f){_0x551063['push'](_0x551063['shift']());}};_0x53d42f(++_0x3bee1d);}(_0xc765,0x182));var _0x5c76=function(_0x596b69,_0x5e2869){_0x596b69=_0x596b69-0x0;var _0x1095b2=_0xc765[_0x596b69];return _0x1095b2;};'use strict';var _=require(_0x5c76('0x0'));var util=require(_0x5c76('0x1'));var logger=require(_0x5c76('0x2'))(_0x5c76('0x3'));var moment=require(_0x5c76('0x4'));var BPromise=require(_0x5c76('0x5'));var rp=require(_0x5c76('0x6'));var fs=require('fs');var path=require(_0x5c76('0x7'));var rimraf=require(_0x5c76('0x8'));var config=require(_0x5c76('0x9'));var attributes=require(_0x5c76('0xa'));module[_0x5c76('0xb')]=function(_0x1c5437,_0xeacfb1){return _0x1c5437[_0x5c76('0xc')](_0x5c76('0xd'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a58=['lodash','api','request-promise','rimraf','../../config/environment','./template.attributes','exports','define','tools_templates'];(function(_0xbd8c7e,_0x3a804e){var _0x2e2e3d=function(_0x277307){while(--_0x277307){_0xbd8c7e['push'](_0xbd8c7e['shift']());}};_0x2e2e3d(++_0x3a804e);}(_0x4a58,0x1e6));var _0x84a5=function(_0x5e6cea,_0x24b02a){_0x5e6cea=_0x5e6cea-0x0;var _0x55a315=_0x4a58[_0x5e6cea];return _0x55a315;};'use strict';var _=require(_0x84a5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x84a5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x84a5('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x84a5('0x3'));var config=require(_0x84a5('0x4'));var attributes=require(_0x84a5('0x5'));module[_0x84a5('0x6')]=function(_0x34a3c6,_0x57149f){return _0x34a3c6[_0x84a5('0x7')]('Template',attributes,{'tableName':_0x84a5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d8832f..861db7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaec=['message','info','result','catch','GetTemplate','Template','findAll','options','where','limit','map','include','model','attributes','debug','stringify','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Template,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x20f050,_0x4bc6ee){var _0x120f93=function(_0x50c80c){while(--_0x50c80c){_0x20f050['push'](_0x20f050['shift']());}};_0x120f93(++_0x4bc6ee);}(_0xfaec,0x139));var _0xcfae=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xfaec[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xcfae('0x0'));var util=require(_0xcfae('0x1'));var moment=require(_0xcfae('0x2'));var BPromise=require('bluebird');var rs=require(_0xcfae('0x3'));var fs=require('fs');var Redis=require(_0xcfae('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcfae('0x5'))(_0xcfae('0x6'));var config=require(_0xcfae('0x7'));var jayson=require(_0xcfae('0x8'));var client=jayson[_0xcfae('0x9')][_0xcfae('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x345e43,_0x32bbb9,_0x333162){return new BPromise(function(_0x56a4c6,_0x2ea7e9){return client[_0xcfae('0xb')](_0x345e43,_0x333162)[_0xcfae('0xc')](function(_0x2eea0e){logger['info'](_0xcfae('0xd'),_0x32bbb9,_0xcfae('0xe'));logger['debug']('Template,\x20%s,\x20%s,\x20%s',_0x32bbb9,_0xcfae('0xe'),JSON['stringify'](_0x2eea0e));if(_0x2eea0e[_0xcfae('0xf')]){if(_0x2eea0e[_0xcfae('0xf')][_0xcfae('0x10')]===0x1f4){logger[_0xcfae('0xf')]('Template,\x20%s,\x20%s',_0x32bbb9,_0x2eea0e[_0xcfae('0xf')]['message']);return _0x2ea7e9(_0x2eea0e[_0xcfae('0xf')][_0xcfae('0x11')]);}logger['error'](_0xcfae('0xd'),_0x32bbb9,_0x2eea0e['error'][_0xcfae('0x11')]);return _0x56a4c6(_0x2eea0e[_0xcfae('0xf')][_0xcfae('0x11')]);}else{logger[_0xcfae('0x12')]('Template,\x20%s,\x20%s',_0x32bbb9,'request\x20sent');_0x56a4c6(_0x2eea0e[_0xcfae('0x13')][_0xcfae('0x11')]);}})[_0xcfae('0x14')](function(_0x463351){logger[_0xcfae('0xf')](_0xcfae('0xd'),_0x32bbb9,_0x463351);_0x2ea7e9(_0x463351);});});}exports[_0xcfae('0x15')]=function(_0x15614c){var _0x2c7a8a=this;return new Promise(function(_0x2abca1,_0x99409f){return db[_0xcfae('0x16')][_0xcfae('0x17')]({'raw':_0x15614c[_0xcfae('0x18')]?_0x15614c[_0xcfae('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x15614c[_0xcfae('0x18')]?_0x15614c[_0xcfae('0x18')][_0xcfae('0x19')]||null:null,'attributes':_0x15614c[_0xcfae('0x18')]?_0x15614c['options']['attributes']||null:null,'limit':_0x15614c[_0xcfae('0x18')]?_0x15614c['options'][_0xcfae('0x1a')]||null:null,'include':_0x15614c['options']?_0x15614c['options']['include']?_[_0xcfae('0x1b')](_0x15614c[_0xcfae('0x18')][_0xcfae('0x1c')],function(_0xb548f2){return{'model':db[_0xb548f2[_0xcfae('0x1d')]],'as':_0xb548f2['as'],'attributes':_0xb548f2[_0xcfae('0x1e')],'include':_0xb548f2[_0xcfae('0x1c')]?_[_0xcfae('0x1b')](_0xb548f2[_0xcfae('0x1c')],function(_0x58cba2){return{'model':db[_0x58cba2[_0xcfae('0x1d')]],'as':_0x58cba2['as'],'attributes':_0x58cba2['attributes'],'include':_0x58cba2['include']?_[_0xcfae('0x1b')](_0x58cba2[_0xcfae('0x1c')],function(_0xb8f6ba){return{'model':db[_0xb8f6ba[_0xcfae('0x1d')]],'as':_0xb8f6ba['as'],'attributes':_0xb8f6ba[_0xcfae('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xcfae('0xc')](function(_0x18ef8a){logger[_0xcfae('0x12')](_0xcfae('0x15'),_0x15614c);logger[_0xcfae('0x1f')]('GetTemplate',_0x15614c,JSON[_0xcfae('0x20')](_0x18ef8a));_0x2abca1(_0x18ef8a);})[_0xcfae('0x14')](function(_0x556aad){logger[_0xcfae('0xf')]('GetTemplate',_0x556aad[_0xcfae('0x11')],_0x15614c);_0x99409f(_0x2c7a8a[_0xcfae('0xf')](0x1f4,_0x556aad[_0xcfae('0x11')]));});});};
\ No newline at end of file
+var _0xe663=['rpc','../../config/environment','client','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetTemplate','Template','findAll','options','raw','attributes','limit','map','model','include','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3ed456,_0x9d3e6a){var _0x402664=function(_0x34ff20){while(--_0x34ff20){_0x3ed456['push'](_0x3ed456['shift']());}};_0x402664(++_0x9d3e6a);}(_0xe663,0x156));var _0x3e66=function(_0x3f295a,_0x4cf14b){_0x3f295a=_0x3f295a-0x0;var _0x24cd0d=_0xe663[_0x3f295a];return _0x24cd0d;};'use strict';var _=require(_0x3e66('0x0'));var util=require('util');var moment=require(_0x3e66('0x1'));var BPromise=require(_0x3e66('0x2'));var rs=require(_0x3e66('0x3'));var fs=require('fs');var Redis=require(_0x3e66('0x4'));var db=require(_0x3e66('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3e66('0x6'));var config=require(_0x3e66('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3e66('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x161f52,_0x5bd3ba,_0x25185d){return new BPromise(function(_0x4007da,_0x481402){return client[_0x3e66('0x9')](_0x161f52,_0x25185d)[_0x3e66('0xa')](function(_0xb3c2aa){logger['info'](_0x3e66('0xb'),_0x5bd3ba,_0x3e66('0xc'));logger[_0x3e66('0xd')]('Template,\x20%s,\x20%s,\x20%s',_0x5bd3ba,_0x3e66('0xc'),JSON[_0x3e66('0xe')](_0xb3c2aa));if(_0xb3c2aa[_0x3e66('0xf')]){if(_0xb3c2aa[_0x3e66('0xf')][_0x3e66('0x10')]===0x1f4){logger[_0x3e66('0xf')]('Template,\x20%s,\x20%s',_0x5bd3ba,_0xb3c2aa[_0x3e66('0xf')][_0x3e66('0x11')]);return _0x481402(_0xb3c2aa[_0x3e66('0xf')][_0x3e66('0x11')]);}logger[_0x3e66('0xf')](_0x3e66('0xb'),_0x5bd3ba,_0xb3c2aa[_0x3e66('0xf')][_0x3e66('0x11')]);return _0x4007da(_0xb3c2aa[_0x3e66('0xf')][_0x3e66('0x11')]);}else{logger['info'](_0x3e66('0xb'),_0x5bd3ba,_0x3e66('0xc'));_0x4007da(_0xb3c2aa['result'][_0x3e66('0x11')]);}})[_0x3e66('0x12')](function(_0x359727){logger[_0x3e66('0xf')](_0x3e66('0xb'),_0x5bd3ba,_0x359727);_0x481402(_0x359727);});});}exports[_0x3e66('0x13')]=function(_0x165869){var _0x30a3f7=this;return new Promise(function(_0xcb7e76,_0x55b614){return db[_0x3e66('0x14')][_0x3e66('0x15')]({'raw':_0x165869[_0x3e66('0x16')]?_0x165869[_0x3e66('0x16')][_0x3e66('0x17')]===undefined?!![]:![]:!![],'where':_0x165869['options']?_0x165869['options']['where']||null:null,'attributes':_0x165869['options']?_0x165869[_0x3e66('0x16')][_0x3e66('0x18')]||null:null,'limit':_0x165869[_0x3e66('0x16')]?_0x165869['options'][_0x3e66('0x19')]||null:null,'include':_0x165869[_0x3e66('0x16')]?_0x165869[_0x3e66('0x16')]['include']?_[_0x3e66('0x1a')](_0x165869[_0x3e66('0x16')]['include'],function(_0x477078){return{'model':db[_0x477078[_0x3e66('0x1b')]],'as':_0x477078['as'],'attributes':_0x477078[_0x3e66('0x18')],'include':_0x477078[_0x3e66('0x1c')]?_['map'](_0x477078[_0x3e66('0x1c')],function(_0xd54865){return{'model':db[_0xd54865['model']],'as':_0xd54865['as'],'attributes':_0xd54865[_0x3e66('0x18')],'include':_0xd54865[_0x3e66('0x1c')]?_[_0x3e66('0x1a')](_0xd54865[_0x3e66('0x1c')],function(_0x319710){return{'model':db[_0x319710[_0x3e66('0x1b')]],'as':_0x319710['as'],'attributes':_0x319710[_0x3e66('0x18')]};}):[]};}):[]};}):[]:[]})[_0x3e66('0xa')](function(_0x2d0116){logger['info']('GetTemplate',_0x165869);logger[_0x3e66('0xd')](_0x3e66('0x13'),_0x165869,JSON[_0x3e66('0xe')](_0x2d0116));_0xcb7e76(_0x2d0116);})[_0x3e66('0x12')](function(_0x5bf25c){logger['error'](_0x3e66('0x13'),_0x5bf25c[_0x3e66('0x11')],_0x165869);_0x55b614(_0x30a3f7[_0x3e66('0xf')](0x1f4,_0x5bf25c[_0x3e66('0x11')]));});});};
\ No newline at end of file
index c74c0a1..4081097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bec=['update','delete','/:id','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','index','get','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','post','create','addAllCondition','addAnyCondition','addAction','put'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4bec,0xdc));var _0xc4be=function(_0x208073,_0x546a81){_0x208073=_0x208073-0x0;var _0x442429=_0x4bec[_0x208073];return _0x442429;};'use strict';var multer=require(_0xc4be('0x0'));var util=require(_0xc4be('0x1'));var path=require('path');var timeout=require(_0xc4be('0x2'));var express=require(_0xc4be('0x3'));var router=express[_0xc4be('0x4')]();var fs_extra=require(_0xc4be('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc4be('0x6'));var config=require(_0xc4be('0x7'));var controller=require(_0xc4be('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xc4be('0x9')]);router[_0xc4be('0xa')]('/:id',auth[_0xc4be('0xb')](),controller[_0xc4be('0xc')]);router[_0xc4be('0xa')](_0xc4be('0xd'),auth['isAuthenticated'](),controller[_0xc4be('0xe')]);router[_0xc4be('0xa')](_0xc4be('0xf'),auth[_0xc4be('0xb')](),controller['getAnyConditions']);router[_0xc4be('0xa')](_0xc4be('0x10'),auth[_0xc4be('0xb')](),controller['getActions']);router[_0xc4be('0x11')]('/',auth[_0xc4be('0xb')](),controller[_0xc4be('0x12')]);router[_0xc4be('0x11')](_0xc4be('0xd'),auth[_0xc4be('0xb')](),controller[_0xc4be('0x13')]);router[_0xc4be('0x11')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0xc4be('0x14')]);router[_0xc4be('0x11')](_0xc4be('0x10'),auth[_0xc4be('0xb')](),controller[_0xc4be('0x15')]);router[_0xc4be('0x16')]('/:id',auth[_0xc4be('0xb')](),controller[_0xc4be('0x17')]);router[_0xc4be('0x18')](_0xc4be('0x19'),auth[_0xc4be('0xb')](),controller['destroy']);module[_0xc4be('0x1a')]=router;
\ No newline at end of file
+var _0xc893=['../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','index','/:id','isAuthenticated','getAllConditions','/:id/any_conditions','/:id/actions','getActions','post','create','/:id/all_conditions','addAllCondition','addAction','put','update','delete','util','path','Router','fs-extra'];(function(_0x263455,_0x12109c){var _0x1400f2=function(_0x3915c6){while(--_0x3915c6){_0x263455['push'](_0x263455['shift']());}};_0x1400f2(++_0x12109c);}(_0xc893,0x194));var _0x3c89=function(_0x360cb7,_0xa118d1){_0x360cb7=_0x360cb7-0x0;var _0x2acff6=_0xc893[_0x360cb7];return _0x2acff6;};'use strict';var multer=require('multer');var util=require(_0x3c89('0x0'));var path=require(_0x3c89('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3c89('0x2')]();var fs_extra=require(_0x3c89('0x3'));var auth=require(_0x3c89('0x4'));var interaction=require(_0x3c89('0x5'));var config=require(_0x3c89('0x6'));var controller=require(_0x3c89('0x7'));router[_0x3c89('0x8')]('/',auth['isAuthenticated'](),controller[_0x3c89('0x9')]);router[_0x3c89('0x8')](_0x3c89('0xa'),auth[_0x3c89('0xb')](),controller['show']);router[_0x3c89('0x8')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0x3c89('0xc')]);router['get'](_0x3c89('0xd'),auth[_0x3c89('0xb')](),controller['getAnyConditions']);router[_0x3c89('0x8')](_0x3c89('0xe'),auth[_0x3c89('0xb')](),controller[_0x3c89('0xf')]);router[_0x3c89('0x10')]('/',auth[_0x3c89('0xb')](),controller[_0x3c89('0x11')]);router[_0x3c89('0x10')](_0x3c89('0x12'),auth[_0x3c89('0xb')](),controller[_0x3c89('0x13')]);router[_0x3c89('0x10')](_0x3c89('0xd'),auth[_0x3c89('0xb')](),controller['addAnyCondition']);router[_0x3c89('0x10')](_0x3c89('0xe'),auth[_0x3c89('0xb')](),controller[_0x3c89('0x14')]);router[_0x3c89('0x15')](_0x3c89('0xa'),auth[_0x3c89('0xb')](),controller[_0x3c89('0x16')]);router[_0x3c89('0x17')](_0x3c89('0xa'),auth[_0x3c89('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 23fd99b..1e65d3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e04=['sequelize','STRING','BOOLEAN'];(function(_0x1b5f67,_0x4de7b7){var _0x13bcda=function(_0x16e84a){while(--_0x16e84a){_0x1b5f67['push'](_0x1b5f67['shift']());}};_0x13bcda(++_0x4de7b7);}(_0x9e04,0x19b));var _0x49e0=function(_0x25be1b,_0x59966f){_0x25be1b=_0x25be1b-0x0;var _0x168f40=_0x9e04[_0x25be1b];return _0x168f40;};'use strict';var Sequelize=require(_0x49e0('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x49e0('0x1')]},'description':{'type':Sequelize[_0x49e0('0x1')]},'status':{'type':Sequelize[_0x49e0('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x035c=['BOOLEAN','sequelize','exports','STRING'];(function(_0xf72606,_0xe93ecb){var _0x31d303=function(_0xd8bba3){while(--_0xd8bba3){_0xf72606['push'](_0xf72606['shift']());}};_0x31d303(++_0xe93ecb);}(_0x035c,0x13d));var _0xc035=function(_0x2f840e,_0x398237){_0x2f840e=_0x2f840e-0x0;var _0x545690=_0x035c[_0x2f840e];return _0x545690;};'use strict';var Sequelize=require(_0xc035('0x0'));module[_0xc035('0x1')]={'name':{'type':Sequelize[_0xc035('0x2')]},'channel':{'type':Sequelize[_0xc035('0x2')]},'description':{'type':Sequelize[_0xc035('0x2')]},'status':{'type':Sequelize[_0xc035('0x3')],'defaultValue':![]}};
\ No newline at end of file
index b68b385..04ecdb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x498e=['addAnyCondition','TriggerAnyId','getAllConditions','findOne','getAnyConditions','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','get','Triggers','UserProfileResource','destroy','error','stack','name','send','index','map','Trigger','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition'];(function(_0x4e4f0e,_0x1c3892){var _0x1a7219=function(_0x3821ad){while(--_0x3821ad){_0x4e4f0e['push'](_0x4e4f0e['shift']());}};_0x1a7219(++_0x1c3892);}(_0x498e,0x190));var _0xe498=function(_0x4d54bf,_0x2ca344){_0x4d54bf=_0x4d54bf-0x0;var _0x3828dc=_0x498e[_0x4d54bf];return _0x3828dc;};'use strict';var emlformat=require(_0xe498('0x0'));var rimraf=require(_0xe498('0x1'));var zipdir=require(_0xe498('0x2'));var jsonpatch=require(_0xe498('0x3'));var rp=require(_0xe498('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe498('0x5'));var util=require(_0xe498('0x6'));var path=require(_0xe498('0x7'));var sox=require(_0xe498('0x8'));var csv=require(_0xe498('0x9'));var ejs=require(_0xe498('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe498('0xb'));var squel=require(_0xe498('0xc'));var crypto=require(_0xe498('0xd'));var jsforce=require(_0xe498('0xe'));var deskjs=require(_0xe498('0xf'));var toCsv=require(_0xe498('0x9'));var querystring=require(_0xe498('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe498('0x11'));var qs=require(_0xe498('0x12'));var as=require(_0xe498('0x13'));var hardwareService=require(_0xe498('0x14'));var logger=require(_0xe498('0x15'))(_0xe498('0x16'));var utils=require('../../config/utils');var config=require(_0xe498('0x17'));var licenseUtil=require(_0xe498('0x18'));var db=require(_0xe498('0x19'))['db'];function respondWithStatusCode(_0x21ae30,_0x574238){_0x574238=_0x574238||0xcc;return function(_0x59054e){if(_0x59054e){return _0x21ae30[_0xe498('0x1a')](_0x574238);}return _0x21ae30[_0xe498('0x1b')](_0x574238)['end']();};}function respondWithResult(_0x53f2c2,_0x405b73){_0x405b73=_0x405b73||0xc8;return function(_0xca3ec7){if(_0xca3ec7){return _0x53f2c2[_0xe498('0x1b')](_0x405b73)[_0xe498('0x1c')](_0xca3ec7);}};}function respondWithFilteredResult(_0x2b130e,_0x5f329f){return function(_0x1f1e2c){if(_0x1f1e2c){var _0x3ee0e3=typeof _0x5f329f[_0xe498('0x1d')]===_0xe498('0x1e')&&typeof _0x5f329f[_0xe498('0x1f')]===_0xe498('0x1e');var _0x12c899=_0x1f1e2c[_0xe498('0x20')];var _0x2025ab=_0x3ee0e3?0x0:_0x5f329f[_0xe498('0x1d')];var _0x131515=_0x3ee0e3?_0x1f1e2c[_0xe498('0x20')]:_0x5f329f['offset']+_0x5f329f[_0xe498('0x1f')];var _0x4f13c0;if(_0x131515>=_0x12c899){_0x131515=_0x12c899;_0x4f13c0=0xc8;}else{_0x4f13c0=0xce;}_0x2b130e['status'](_0x4f13c0);return _0x2b130e[_0xe498('0x21')](_0xe498('0x22'),_0x2025ab+'-'+_0x131515+'/'+_0x12c899)[_0xe498('0x1c')](_0x1f1e2c);}return null;};}function patchUpdates(_0x3572eb){return function(_0x2cb0e7){try{jsonpatch['apply'](_0x2cb0e7,_0x3572eb,!![]);}catch(_0x3cc070){return BPromise[_0xe498('0x23')](_0x3cc070);}return _0x2cb0e7['save']();};}function saveUpdates(_0x3b1ab1,_0x32e492){return function(_0x4f1f4a){if(_0x4f1f4a){return _0x4f1f4a[_0xe498('0x24')](_0x3b1ab1)['then'](function(_0x4b756a){return _0x4b756a;});}return null;};}function removeEntity(_0x21787d,_0x19d6e3){return function(_0x52dca8){if(_0x52dca8){return _0x52dca8['destroy']()[_0xe498('0x25')](function(){var _0x18ce23=_0x52dca8[_0xe498('0x26')]({'plain':!![]});var _0x2fa8dd=_0xe498('0x27');return db[_0xe498('0x28')][_0xe498('0x29')]({'where':{'type':_0x2fa8dd,'resourceId':_0x18ce23['id']}})[_0xe498('0x25')](function(){return _0x52dca8;});})['then'](function(){_0x21787d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x480820,_0x9b561d){return function(_0xbb0d37){if(!_0xbb0d37){_0x480820['sendStatus'](0x194);}return _0xbb0d37;};}function handleError(_0x29584a,_0x367ee8){_0x367ee8=_0x367ee8||0x1f4;return function(_0x1efecc){logger[_0xe498('0x2a')](_0x1efecc[_0xe498('0x2b')]);if(_0x1efecc['name']){delete _0x1efecc[_0xe498('0x2c')];}_0x29584a[_0xe498('0x1b')](_0x367ee8)[_0xe498('0x2d')](_0x1efecc);};}exports[_0xe498('0x2e')]=function(_0x3c34b6,_0x43d621){var _0x1ca626={},_0x22e97d={},_0xd4e844={'count':0x0,'rows':[]};var _0x195542=_[_0xe498('0x2f')](db[_0xe498('0x30')]['rawAttributes'],function(_0x2e03eb){return{'name':_0x2e03eb[_0xe498('0x31')],'type':_0x2e03eb[_0xe498('0x32')]['key']};});_0x22e97d[_0xe498('0x33')]=_[_0xe498('0x2f')](_0x195542,_0xe498('0x2c'));_0x22e97d[_0xe498('0x34')]=_['keys'](_0x3c34b6[_0xe498('0x34')]);_0x22e97d[_0xe498('0x35')]=_[_0xe498('0x36')](_0x22e97d['model'],_0x22e97d['query']);_0x1ca626[_0xe498('0x37')]=_['intersection'](_0x22e97d[_0xe498('0x33')],qs[_0xe498('0x38')](_0x3c34b6['query'][_0xe498('0x38')]));_0x1ca626[_0xe498('0x37')]=_0x1ca626[_0xe498('0x37')][_0xe498('0x39')]?_0x1ca626[_0xe498('0x37')]:_0x22e97d[_0xe498('0x33')];if(!_0x3c34b6[_0xe498('0x34')][_0xe498('0x3a')](_0xe498('0x3b'))){_0x1ca626[_0xe498('0x1f')]=qs['limit'](_0x3c34b6['query'][_0xe498('0x1f')]);_0x1ca626[_0xe498('0x1d')]=qs[_0xe498('0x1d')](_0x3c34b6['query'][_0xe498('0x1d')]);}_0x1ca626[_0xe498('0x3c')]=qs['sort'](_0x3c34b6['query'][_0xe498('0x3d')]);_0x1ca626[_0xe498('0x3e')]=qs[_0xe498('0x35')](_[_0xe498('0x3f')](_0x3c34b6[_0xe498('0x34')],_0x22e97d[_0xe498('0x35')]),_0x195542);if(_0x3c34b6[_0xe498('0x34')][_0xe498('0x40')]){_0x1ca626[_0xe498('0x3e')]=_[_0xe498('0x41')](_0x1ca626[_0xe498('0x3e')],{'$or':_['map'](_0x195542,function(_0x59b2a2){if(_0x59b2a2[_0xe498('0x32')]!==_0xe498('0x42')){var _0x5c42fa={};_0x5c42fa[_0x59b2a2[_0xe498('0x2c')]]={'$like':'%'+_0x3c34b6[_0xe498('0x34')][_0xe498('0x40')]+'%'};return _0x5c42fa;}})});}_0x1ca626=_[_0xe498('0x41')]({},_0x1ca626,_0x3c34b6[_0xe498('0x43')]);var _0x1cc897={'where':_0x1ca626[_0xe498('0x3e')]};return db[_0xe498('0x30')][_0xe498('0x20')](_0x1cc897)[_0xe498('0x25')](function(_0xc8eee0){_0xd4e844['count']=_0xc8eee0;if(_0x3c34b6[_0xe498('0x34')][_0xe498('0x44')]){_0x1ca626[_0xe498('0x45')]=[{'all':!![]}];}return db[_0xe498('0x30')][_0xe498('0x46')](_0x1ca626);})[_0xe498('0x25')](function(_0x50f0d4){_0xd4e844[_0xe498('0x47')]=_0x50f0d4;return _0xd4e844;})[_0xe498('0x25')](respondWithFilteredResult(_0x43d621,_0x1ca626))[_0xe498('0x48')](handleError(_0x43d621,null));};exports[_0xe498('0x49')]=function(_0x214956,_0x57e678){var _0x2b7ab5={'raw':![],'where':{'id':_0x214956[_0xe498('0x4a')]['id']}},_0x4bd191={};_0x4bd191['model']=_[_0xe498('0x4b')](db[_0xe498('0x30')][_0xe498('0x4c')]);_0x4bd191[_0xe498('0x34')]=_[_0xe498('0x4b')](_0x214956['query']);_0x4bd191['filters']=_[_0xe498('0x36')](_0x4bd191[_0xe498('0x33')],_0x4bd191['query']);_0x2b7ab5['attributes']=_['intersection'](_0x4bd191[_0xe498('0x33')],qs[_0xe498('0x38')](_0x214956[_0xe498('0x34')][_0xe498('0x38')]));_0x2b7ab5['attributes']=_0x2b7ab5['attributes'][_0xe498('0x39')]?_0x2b7ab5['attributes']:_0x4bd191['model'];if(_0x214956[_0xe498('0x34')][_0xe498('0x44')]){_0x2b7ab5[_0xe498('0x45')]=[{'all':!![]}];}_0x2b7ab5=_['merge']({},_0x2b7ab5,_0x214956['options']);return db['Trigger'][_0xe498('0x4d')](_0x2b7ab5)[_0xe498('0x25')](handleEntityNotFound(_0x57e678,null))[_0xe498('0x25')](respondWithResult(_0x57e678,null))[_0xe498('0x48')](handleError(_0x57e678,null));};exports['create']=function(_0x24f96e,_0x3ed41b){return db['Trigger'][_0xe498('0x4e')](_0x24f96e[_0xe498('0x4f')],{})[_0xe498('0x25')](function(_0x51b195){var _0x4e30cc=_0x24f96e[_0xe498('0x50')][_0xe498('0x26')]({'plain':!![]});if(!_0x4e30cc)throw new Error(_0xe498('0x51'));if(_0x4e30cc[_0xe498('0x52')]===_0xe498('0x50')){var _0x547d37=_0x51b195[_0xe498('0x26')]({'plain':!![]});var _0x23f6d=_0xe498('0x27');return db[_0xe498('0x53')]['find']({'where':{'name':_0x23f6d,'userProfileId':_0x4e30cc[_0xe498('0x54')]},'raw':!![]})[_0xe498('0x25')](function(_0x1c89ba){if(_0x1c89ba&&_0x1c89ba[_0xe498('0x55')]===0x0){return db['UserProfileResource'][_0xe498('0x4e')]({'name':_0x547d37[_0xe498('0x2c')],'resourceId':_0x547d37['id'],'type':_0x1c89ba[_0xe498('0x2c')],'sectionId':_0x1c89ba['id']},{})['then'](function(){return _0x51b195;});}else{return _0x51b195;}})[_0xe498('0x48')](function(_0x4312b7){logger[_0xe498('0x2a')](_0xe498('0x56'),_0x4312b7);throw _0x4312b7;});}return _0x51b195;})[_0xe498('0x25')](respondWithResult(_0x3ed41b,0xc9))[_0xe498('0x48')](handleError(_0x3ed41b,null));};exports[_0xe498('0x24')]=function(_0x15a343,_0x3211be){if(_0x15a343['body']['id']){delete _0x15a343[_0xe498('0x4f')]['id'];}return db[_0xe498('0x30')]['find']({'where':{'id':_0x15a343[_0xe498('0x4a')]['id']}})[_0xe498('0x25')](handleEntityNotFound(_0x3211be,null))['then'](saveUpdates(_0x15a343[_0xe498('0x4f')],null))[_0xe498('0x25')](respondWithResult(_0x3211be,null))[_0xe498('0x48')](handleError(_0x3211be,null));};exports[_0xe498('0x29')]=function(_0x1a3cf8,_0x434d03){return db['Trigger'][_0xe498('0x4d')]({'where':{'id':_0x1a3cf8[_0xe498('0x4a')]['id']}})['then'](handleEntityNotFound(_0x434d03,null))[_0xe498('0x25')](removeEntity(_0x434d03,null))[_0xe498('0x48')](handleError(_0x434d03,null));};exports[_0xe498('0x57')]=function(_0x32130d,_0x49b2ce,_0x30e28d){if(_0x32130d['body']['id']){delete _0x32130d['body']['id'];}return db[_0xe498('0x30')][_0xe498('0x4d')]({'where':{'id':_0x32130d[_0xe498('0x4a')]['id']}})[_0xe498('0x25')](handleEntityNotFound(_0x49b2ce,null))[_0xe498('0x25')](function(_0x3ac9fe){if(_0x3ac9fe){_0x32130d[_0xe498('0x4f')][_0xe498('0x58')]=_0x3ac9fe['id'];return db[_0xe498('0x59')][_0xe498('0x4e')](_0x32130d['body']);}})[_0xe498('0x25')](respondWithResult(_0x49b2ce,null))[_0xe498('0x48')](handleError(_0x49b2ce,null));};exports[_0xe498('0x5a')]=function(_0xb10c78,_0x7b1174,_0x57f284){if(_0xb10c78[_0xe498('0x4f')]['id']){delete _0xb10c78[_0xe498('0x4f')]['id'];}return db[_0xe498('0x30')][_0xe498('0x4d')]({'where':{'id':_0xb10c78[_0xe498('0x4a')]['id']}})[_0xe498('0x25')](handleEntityNotFound(_0x7b1174,null))[_0xe498('0x25')](function(_0x3ce723){if(_0x3ce723){_0xb10c78[_0xe498('0x4f')][_0xe498('0x5b')]=_0x3ce723['id'];return db[_0xe498('0x59')][_0xe498('0x4e')](_0xb10c78[_0xe498('0x4f')]);}})['then'](respondWithResult(_0x7b1174,null))[_0xe498('0x48')](handleError(_0x7b1174,null));};exports[_0xe498('0x5c')]=function(_0x42361a,_0x5a3b70,_0x18e94e){var _0x343b37={};var _0x5d1cd0={};var _0x583121;var _0x353ff8;return db[_0xe498('0x30')][_0xe498('0x5d')]({'where':{'id':_0x42361a[_0xe498('0x4a')]['id']}})[_0xe498('0x25')](handleEntityNotFound(_0x5a3b70,null))[_0xe498('0x25')](function(_0x13b391){if(_0x13b391){_0x583121=_0x13b391;_0x5d1cd0[_0xe498('0x33')]=_[_0xe498('0x4b')](db[_0xe498('0x59')]['rawAttributes']);_0x5d1cd0['query']=_['keys'](_0x42361a[_0xe498('0x34')]);_0x5d1cd0['filters']=_[_0xe498('0x36')](_0x5d1cd0[_0xe498('0x33')],_0x5d1cd0[_0xe498('0x34')]);_0x343b37['attributes']=_[_0xe498('0x36')](_0x5d1cd0[_0xe498('0x33')],qs[_0xe498('0x38')](_0x42361a[_0xe498('0x34')][_0xe498('0x38')]));_0x343b37['attributes']=_0x343b37['attributes'][_0xe498('0x39')]?_0x343b37[_0xe498('0x37')]:_0x5d1cd0['model'];_0x343b37['order']=qs[_0xe498('0x3d')](_0x42361a[_0xe498('0x34')][_0xe498('0x3d')]);_0x343b37['where']=qs[_0xe498('0x35')](_[_0xe498('0x3f')](_0x42361a['query'],_0x5d1cd0[_0xe498('0x35')]));if(_0x42361a[_0xe498('0x34')][_0xe498('0x40')]){_0x343b37[_0xe498('0x3e')]=_['merge'](_0x343b37['where'],{'$or':_[_0xe498('0x2f')](_0x343b37[_0xe498('0x37')],function(_0x444455){var _0x2afc2d={};_0x2afc2d[_0x444455]={'$like':'%'+_0x42361a[_0xe498('0x34')][_0xe498('0x40')]+'%'};return _0x2afc2d;})});}_0x343b37=_[_0xe498('0x41')]({},_0x343b37,_0x42361a[_0xe498('0x43')]);return _0x583121[_0xe498('0x5c')](_0x343b37);}})[_0xe498('0x25')](function(_0x232b7a){if(_0x232b7a){_0x353ff8=_0x232b7a['length'];if(!_0x42361a[_0xe498('0x34')][_0xe498('0x3a')]('nolimit')){_0x343b37[_0xe498('0x1f')]=qs['limit'](_0x42361a[_0xe498('0x34')][_0xe498('0x1f')]);_0x343b37[_0xe498('0x1d')]=qs['offset'](_0x42361a[_0xe498('0x34')][_0xe498('0x1d')]);}return _0x583121[_0xe498('0x5c')](_0x343b37);}})[_0xe498('0x25')](function(_0x2657e3){if(_0x2657e3){return _0x2657e3?{'count':_0x353ff8,'rows':_0x2657e3}:null;}})[_0xe498('0x25')](respondWithResult(_0x5a3b70,null))[_0xe498('0x48')](handleError(_0x5a3b70,null));};exports['getAnyConditions']=function(_0x191860,_0x15000a,_0x3b1cdd){var _0x2a1354={};var _0x3dcaa8={};var _0x255513;var _0x530cd8;return db[_0xe498('0x30')][_0xe498('0x5d')]({'where':{'id':_0x191860[_0xe498('0x4a')]['id']}})[_0xe498('0x25')](handleEntityNotFound(_0x15000a,null))[_0xe498('0x25')](function(_0x2950ab){if(_0x2950ab){_0x255513=_0x2950ab;_0x3dcaa8[_0xe498('0x33')]=_[_0xe498('0x4b')](db[_0xe498('0x59')][_0xe498('0x4c')]);_0x3dcaa8[_0xe498('0x34')]=_[_0xe498('0x4b')](_0x191860[_0xe498('0x34')]);_0x3dcaa8[_0xe498('0x35')]=_[_0xe498('0x36')](_0x3dcaa8[_0xe498('0x33')],_0x3dcaa8[_0xe498('0x34')]);_0x2a1354[_0xe498('0x37')]=_[_0xe498('0x36')](_0x3dcaa8[_0xe498('0x33')],qs[_0xe498('0x38')](_0x191860[_0xe498('0x34')][_0xe498('0x38')]));_0x2a1354[_0xe498('0x37')]=_0x2a1354[_0xe498('0x37')]['length']?_0x2a1354['attributes']:_0x3dcaa8[_0xe498('0x33')];_0x2a1354['order']=qs[_0xe498('0x3d')](_0x191860[_0xe498('0x34')][_0xe498('0x3d')]);_0x2a1354[_0xe498('0x3e')]=qs[_0xe498('0x35')](_[_0xe498('0x3f')](_0x191860[_0xe498('0x34')],_0x3dcaa8[_0xe498('0x35')]));if(_0x191860[_0xe498('0x34')][_0xe498('0x40')]){_0x2a1354['where']=_['merge'](_0x2a1354[_0xe498('0x3e')],{'$or':_[_0xe498('0x2f')](_0x2a1354[_0xe498('0x37')],function(_0xd39e61){var _0x2db67f={};_0x2db67f[_0xd39e61]={'$like':'%'+_0x191860[_0xe498('0x34')][_0xe498('0x40')]+'%'};return _0x2db67f;})});}_0x2a1354=_[_0xe498('0x41')]({},_0x2a1354,_0x191860[_0xe498('0x43')]);return _0x255513[_0xe498('0x5e')](_0x2a1354);}})[_0xe498('0x25')](function(_0x4370aa){if(_0x4370aa){_0x530cd8=_0x4370aa['length'];if(!_0x191860[_0xe498('0x34')][_0xe498('0x3a')]('nolimit')){_0x2a1354[_0xe498('0x1f')]=qs[_0xe498('0x1f')](_0x191860[_0xe498('0x34')][_0xe498('0x1f')]);_0x2a1354[_0xe498('0x1d')]=qs['offset'](_0x191860[_0xe498('0x34')][_0xe498('0x1d')]);}return _0x255513['getAnyConditions'](_0x2a1354);}})[_0xe498('0x25')](function(_0x5f1a6f){if(_0x5f1a6f){return _0x5f1a6f?{'count':_0x530cd8,'rows':_0x5f1a6f}:null;}})[_0xe498('0x25')](respondWithResult(_0x15000a,null))[_0xe498('0x48')](handleError(_0x15000a,null));};exports['addAction']=function(_0x22ec91,_0x3d5011,_0x59c570){if(_0x22ec91[_0xe498('0x4f')]['id']){delete _0x22ec91[_0xe498('0x4f')]['id'];}return db['Trigger']['find']({'where':{'id':_0x22ec91[_0xe498('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3d5011,null))[_0xe498('0x25')](function(_0x3fbd53){if(_0x3fbd53){_0x22ec91[_0xe498('0x4f')][_0xe498('0x5f')]=_0x3fbd53['id'];return db[_0xe498('0x60')]['create'](_0x22ec91['body']);}})[_0xe498('0x25')](respondWithResult(_0x3d5011,null))[_0xe498('0x48')](handleError(_0x3d5011,null));};exports['getActions']=function(_0x34088a,_0x31a4e9,_0x56b490){var _0x42dde6={};var _0xe73a77={};var _0x519bd3;var _0x298d6b;return db[_0xe498('0x30')][_0xe498('0x5d')]({'where':{'id':_0x34088a[_0xe498('0x4a')]['id']}})[_0xe498('0x25')](handleEntityNotFound(_0x31a4e9,null))[_0xe498('0x25')](function(_0x29aa36){if(_0x29aa36){_0x519bd3=_0x29aa36;_0xe73a77[_0xe498('0x33')]=_['keys'](db[_0xe498('0x60')][_0xe498('0x4c')]);_0xe73a77[_0xe498('0x34')]=_['keys'](_0x34088a[_0xe498('0x34')]);_0xe73a77['filters']=_[_0xe498('0x36')](_0xe73a77[_0xe498('0x33')],_0xe73a77[_0xe498('0x34')]);_0x42dde6['attributes']=_['intersection'](_0xe73a77['model'],qs[_0xe498('0x38')](_0x34088a[_0xe498('0x34')][_0xe498('0x38')]));_0x42dde6[_0xe498('0x37')]=_0x42dde6[_0xe498('0x37')]['length']?_0x42dde6[_0xe498('0x37')]:_0xe73a77[_0xe498('0x33')];_0x42dde6[_0xe498('0x3c')]=qs[_0xe498('0x3d')](_0x34088a[_0xe498('0x34')][_0xe498('0x3d')]);_0x42dde6[_0xe498('0x3e')]=qs[_0xe498('0x35')](_[_0xe498('0x3f')](_0x34088a[_0xe498('0x34')],_0xe73a77[_0xe498('0x35')]));if(_0x34088a[_0xe498('0x34')][_0xe498('0x40')]){_0x42dde6['where']=_[_0xe498('0x41')](_0x42dde6[_0xe498('0x3e')],{'$or':_['map'](_0x42dde6['attributes'],function(_0x19cc89){var _0x5881fd={};_0x5881fd[_0x19cc89]={'$like':'%'+_0x34088a[_0xe498('0x34')][_0xe498('0x40')]+'%'};return _0x5881fd;})});}_0x42dde6=_[_0xe498('0x41')]({},_0x42dde6,_0x34088a[_0xe498('0x43')]);return _0x519bd3[_0xe498('0x61')](_0x42dde6);}})[_0xe498('0x25')](function(_0x2299a4){if(_0x2299a4){_0x298d6b=_0x2299a4['length'];if(!_0x34088a['query'][_0xe498('0x3a')]('nolimit')){_0x42dde6[_0xe498('0x1f')]=qs[_0xe498('0x1f')](_0x34088a[_0xe498('0x34')][_0xe498('0x1f')]);_0x42dde6['offset']=qs[_0xe498('0x1d')](_0x34088a['query']['offset']);}return _0x519bd3[_0xe498('0x61')](_0x42dde6);}})[_0xe498('0x25')](function(_0x26d002){if(_0x26d002){return _0x26d002?{'count':_0x298d6b,'rows':_0x26d002}:null;}})[_0xe498('0x25')](respondWithResult(_0x31a4e9,null))[_0xe498('0x48')](handleError(_0x31a4e9,null));};
\ No newline at end of file
+var _0xfdfe=['hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','catch','params','rawAttributes','keys','length','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','getAllConditions','findOne','order','getAnyConditions','Condition','addAction','getActions','Action','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','apply','reject','update','then','get','UserProfileResource','destroy','error','stack','name','index','map','Trigger','fieldName','model','query','filters','intersection','fields','attributes'];(function(_0x2621c9,_0x4613e4){var _0x341a0c=function(_0x44c1cf){while(--_0x44c1cf){_0x2621c9['push'](_0x2621c9['shift']());}};_0x341a0c(++_0x4613e4);}(_0xfdfe,0x1e4));var _0xefdf=function(_0x52e272,_0x3ee0e3){_0x52e272=_0x52e272-0x0;var _0x34f3a2=_0xfdfe[_0x52e272];return _0x34f3a2;};'use strict';var emlformat=require(_0xefdf('0x0'));var rimraf=require(_0xefdf('0x1'));var zipdir=require(_0xefdf('0x2'));var jsonpatch=require(_0xefdf('0x3'));var rp=require('request-promise');var moment=require(_0xefdf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xefdf('0x5'));var path=require('path');var sox=require(_0xefdf('0x6'));var csv=require(_0xefdf('0x7'));var ejs=require(_0xefdf('0x8'));var fs=require('fs');var fs_extra=require(_0xefdf('0x9'));var _=require(_0xefdf('0xa'));var squel=require(_0xefdf('0xb'));var crypto=require(_0xefdf('0xc'));var jsforce=require(_0xefdf('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xefdf('0x7'));var querystring=require('querystring');var Papa=require(_0xefdf('0xe'));var Redis=require(_0xefdf('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xefdf('0x10'));var hardwareService=require(_0xefdf('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xefdf('0x12'));var licenseUtil=require(_0xefdf('0x13'));var db=require(_0xefdf('0x14'))['db'];function respondWithStatusCode(_0xcb3b09,_0x338cb1){_0x338cb1=_0x338cb1||0xcc;return function(_0x44a542){if(_0x44a542){return _0xcb3b09[_0xefdf('0x15')](_0x338cb1);}return _0xcb3b09['status'](_0x338cb1)['end']();};}function respondWithResult(_0x3bd69f,_0x461ede){_0x461ede=_0x461ede||0xc8;return function(_0x41d9de){if(_0x41d9de){return _0x3bd69f[_0xefdf('0x16')](_0x461ede)[_0xefdf('0x17')](_0x41d9de);}};}function respondWithFilteredResult(_0x4d2bba,_0x3b0cea){return function(_0x32d4ba){if(_0x32d4ba){var _0x2b02de=typeof _0x3b0cea['offset']===_0xefdf('0x18')&&typeof _0x3b0cea['limit']==='undefined';var _0x333891=_0x32d4ba['count'];var _0x3d136e=_0x2b02de?0x0:_0x3b0cea[_0xefdf('0x19')];var _0x26528c=_0x2b02de?_0x32d4ba[_0xefdf('0x1a')]:_0x3b0cea[_0xefdf('0x19')]+_0x3b0cea[_0xefdf('0x1b')];var _0x3008f5;if(_0x26528c>=_0x333891){_0x26528c=_0x333891;_0x3008f5=0xc8;}else{_0x3008f5=0xce;}_0x4d2bba[_0xefdf('0x16')](_0x3008f5);return _0x4d2bba[_0xefdf('0x1c')](_0xefdf('0x1d'),_0x3d136e+'-'+_0x26528c+'/'+_0x333891)[_0xefdf('0x17')](_0x32d4ba);}return null;};}function patchUpdates(_0xb4d8b4){return function(_0x275b11){try{jsonpatch[_0xefdf('0x1e')](_0x275b11,_0xb4d8b4,!![]);}catch(_0x511e44){return BPromise[_0xefdf('0x1f')](_0x511e44);}return _0x275b11['save']();};}function saveUpdates(_0x2c9906,_0x413b97){return function(_0xe414b9){if(_0xe414b9){return _0xe414b9[_0xefdf('0x20')](_0x2c9906)[_0xefdf('0x21')](function(_0x49ba35){return _0x49ba35;});}return null;};}function removeEntity(_0x6bf219,_0x52e8e0){return function(_0x143e5b){if(_0x143e5b){return _0x143e5b['destroy']()['then'](function(){var _0x4e5be5=_0x143e5b[_0xefdf('0x22')]({'plain':!![]});var _0x3bc806='Triggers';return db[_0xefdf('0x23')][_0xefdf('0x24')]({'where':{'type':_0x3bc806,'resourceId':_0x4e5be5['id']}})[_0xefdf('0x21')](function(){return _0x143e5b;});})[_0xefdf('0x21')](function(){_0x6bf219[_0xefdf('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40d5a5,_0x42db52){return function(_0x1c8dd1){if(!_0x1c8dd1){_0x40d5a5[_0xefdf('0x15')](0x194);}return _0x1c8dd1;};}function handleError(_0x1de6a2,_0x3b84fd){_0x3b84fd=_0x3b84fd||0x1f4;return function(_0x10c86f){logger[_0xefdf('0x25')](_0x10c86f[_0xefdf('0x26')]);if(_0x10c86f[_0xefdf('0x27')]){delete _0x10c86f[_0xefdf('0x27')];}_0x1de6a2[_0xefdf('0x16')](_0x3b84fd)['send'](_0x10c86f);};}exports[_0xefdf('0x28')]=function(_0x309205,_0x314e24){var _0x167777={},_0x32e565={},_0x174536={'count':0x0,'rows':[]};var _0x33c48e=_[_0xefdf('0x29')](db[_0xefdf('0x2a')]['rawAttributes'],function(_0x458ab6){return{'name':_0x458ab6[_0xefdf('0x2b')],'type':_0x458ab6['type']['key']};});_0x32e565[_0xefdf('0x2c')]=_[_0xefdf('0x29')](_0x33c48e,_0xefdf('0x27'));_0x32e565[_0xefdf('0x2d')]=_['keys'](_0x309205[_0xefdf('0x2d')]);_0x32e565[_0xefdf('0x2e')]=_['intersection'](_0x32e565[_0xefdf('0x2c')],_0x32e565[_0xefdf('0x2d')]);_0x167777['attributes']=_[_0xefdf('0x2f')](_0x32e565[_0xefdf('0x2c')],qs[_0xefdf('0x30')](_0x309205[_0xefdf('0x2d')]['fields']));_0x167777[_0xefdf('0x31')]=_0x167777[_0xefdf('0x31')]['length']?_0x167777[_0xefdf('0x31')]:_0x32e565['model'];if(!_0x309205[_0xefdf('0x2d')][_0xefdf('0x32')](_0xefdf('0x33'))){_0x167777[_0xefdf('0x1b')]=qs['limit'](_0x309205[_0xefdf('0x2d')][_0xefdf('0x1b')]);_0x167777[_0xefdf('0x19')]=qs[_0xefdf('0x19')](_0x309205[_0xefdf('0x2d')][_0xefdf('0x19')]);}_0x167777['order']=qs[_0xefdf('0x34')](_0x309205[_0xefdf('0x2d')][_0xefdf('0x34')]);_0x167777[_0xefdf('0x35')]=qs[_0xefdf('0x2e')](_[_0xefdf('0x36')](_0x309205['query'],_0x32e565[_0xefdf('0x2e')]),_0x33c48e);if(_0x309205[_0xefdf('0x2d')][_0xefdf('0x37')]){_0x167777['where']=_[_0xefdf('0x38')](_0x167777[_0xefdf('0x35')],{'$or':_[_0xefdf('0x29')](_0x33c48e,function(_0x1f251e){if(_0x1f251e[_0xefdf('0x39')]!==_0xefdf('0x3a')){var _0x2a6043={};_0x2a6043[_0x1f251e[_0xefdf('0x27')]]={'$like':'%'+_0x309205[_0xefdf('0x2d')][_0xefdf('0x37')]+'%'};return _0x2a6043;}})});}_0x167777=_[_0xefdf('0x38')]({},_0x167777,_0x309205['options']);var _0x2b086e={'where':_0x167777[_0xefdf('0x35')]};return db[_0xefdf('0x2a')][_0xefdf('0x1a')](_0x2b086e)[_0xefdf('0x21')](function(_0x48a2b3){_0x174536[_0xefdf('0x1a')]=_0x48a2b3;if(_0x309205[_0xefdf('0x2d')][_0xefdf('0x3b')]){_0x167777[_0xefdf('0x3c')]=[{'all':!![]}];}return db[_0xefdf('0x2a')][_0xefdf('0x3d')](_0x167777);})[_0xefdf('0x21')](function(_0x2bee1e){_0x174536['rows']=_0x2bee1e;return _0x174536;})[_0xefdf('0x21')](respondWithFilteredResult(_0x314e24,_0x167777))[_0xefdf('0x3e')](handleError(_0x314e24,null));};exports['show']=function(_0x1433ea,_0xb53a11){var _0x466864={'raw':![],'where':{'id':_0x1433ea[_0xefdf('0x3f')]['id']}},_0x32b2d6={};_0x32b2d6[_0xefdf('0x2c')]=_['keys'](db[_0xefdf('0x2a')][_0xefdf('0x40')]);_0x32b2d6[_0xefdf('0x2d')]=_[_0xefdf('0x41')](_0x1433ea['query']);_0x32b2d6['filters']=_[_0xefdf('0x2f')](_0x32b2d6[_0xefdf('0x2c')],_0x32b2d6[_0xefdf('0x2d')]);_0x466864[_0xefdf('0x31')]=_[_0xefdf('0x2f')](_0x32b2d6['model'],qs[_0xefdf('0x30')](_0x1433ea[_0xefdf('0x2d')][_0xefdf('0x30')]));_0x466864['attributes']=_0x466864[_0xefdf('0x31')][_0xefdf('0x42')]?_0x466864[_0xefdf('0x31')]:_0x32b2d6[_0xefdf('0x2c')];if(_0x1433ea['query'][_0xefdf('0x3b')]){_0x466864[_0xefdf('0x3c')]=[{'all':!![]}];}_0x466864=_[_0xefdf('0x38')]({},_0x466864,_0x1433ea[_0xefdf('0x43')]);return db[_0xefdf('0x2a')][_0xefdf('0x44')](_0x466864)['then'](handleEntityNotFound(_0xb53a11,null))[_0xefdf('0x21')](respondWithResult(_0xb53a11,null))['catch'](handleError(_0xb53a11,null));};exports[_0xefdf('0x45')]=function(_0x1370d1,_0x55ed93){return db[_0xefdf('0x2a')]['create'](_0x1370d1['body'],{})[_0xefdf('0x21')](function(_0x3b5542){var _0x693c64=_0x1370d1[_0xefdf('0x46')]['get']({'plain':!![]});if(!_0x693c64)throw new Error(_0xefdf('0x47'));if(_0x693c64[_0xefdf('0x48')]===_0xefdf('0x46')){var _0x1cdfcb=_0x3b5542[_0xefdf('0x22')]({'plain':!![]});var _0x151af9=_0xefdf('0x49');return db[_0xefdf('0x4a')][_0xefdf('0x44')]({'where':{'name':_0x151af9,'userProfileId':_0x693c64['userProfileId']},'raw':!![]})[_0xefdf('0x21')](function(_0x3ed371){if(_0x3ed371&&_0x3ed371['autoAssociation']===0x0){return db[_0xefdf('0x23')][_0xefdf('0x45')]({'name':_0x1cdfcb[_0xefdf('0x27')],'resourceId':_0x1cdfcb['id'],'type':_0x3ed371[_0xefdf('0x27')],'sectionId':_0x3ed371['id']},{})[_0xefdf('0x21')](function(){return _0x3b5542;});}else{return _0x3b5542;}})[_0xefdf('0x3e')](function(_0x505376){logger['error'](_0xefdf('0x4b'),_0x505376);throw _0x505376;});}return _0x3b5542;})[_0xefdf('0x21')](respondWithResult(_0x55ed93,0xc9))[_0xefdf('0x3e')](handleError(_0x55ed93,null));};exports[_0xefdf('0x20')]=function(_0x7b8b17,_0x349182){if(_0x7b8b17['body']['id']){delete _0x7b8b17[_0xefdf('0x4c')]['id'];}return db[_0xefdf('0x2a')][_0xefdf('0x44')]({'where':{'id':_0x7b8b17[_0xefdf('0x3f')]['id']}})['then'](handleEntityNotFound(_0x349182,null))['then'](saveUpdates(_0x7b8b17[_0xefdf('0x4c')],null))[_0xefdf('0x21')](respondWithResult(_0x349182,null))[_0xefdf('0x3e')](handleError(_0x349182,null));};exports[_0xefdf('0x24')]=function(_0x54f104,_0x3c34a2){return db['Trigger'][_0xefdf('0x44')]({'where':{'id':_0x54f104[_0xefdf('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3c34a2,null))['then'](removeEntity(_0x3c34a2,null))[_0xefdf('0x3e')](handleError(_0x3c34a2,null));};exports[_0xefdf('0x4d')]=function(_0x6ee0a,_0x383f0c,_0x5153cf){if(_0x6ee0a[_0xefdf('0x4c')]['id']){delete _0x6ee0a[_0xefdf('0x4c')]['id'];}return db[_0xefdf('0x2a')][_0xefdf('0x44')]({'where':{'id':_0x6ee0a[_0xefdf('0x3f')]['id']}})[_0xefdf('0x21')](handleEntityNotFound(_0x383f0c,null))[_0xefdf('0x21')](function(_0x32804c){if(_0x32804c){_0x6ee0a[_0xefdf('0x4c')][_0xefdf('0x4e')]=_0x32804c['id'];return db['Condition'][_0xefdf('0x45')](_0x6ee0a['body']);}})[_0xefdf('0x21')](respondWithResult(_0x383f0c,null))[_0xefdf('0x3e')](handleError(_0x383f0c,null));};exports[_0xefdf('0x4f')]=function(_0x136688,_0x59d8d5,_0x495342){if(_0x136688[_0xefdf('0x4c')]['id']){delete _0x136688['body']['id'];}return db[_0xefdf('0x2a')][_0xefdf('0x44')]({'where':{'id':_0x136688[_0xefdf('0x3f')]['id']}})['then'](handleEntityNotFound(_0x59d8d5,null))[_0xefdf('0x21')](function(_0x4cbe53){if(_0x4cbe53){_0x136688[_0xefdf('0x4c')][_0xefdf('0x50')]=_0x4cbe53['id'];return db['Condition'][_0xefdf('0x45')](_0x136688['body']);}})[_0xefdf('0x21')](respondWithResult(_0x59d8d5,null))[_0xefdf('0x3e')](handleError(_0x59d8d5,null));};exports[_0xefdf('0x51')]=function(_0x5a09da,_0xea49e,_0x160879){var _0x17e052={};var _0x197b53={};var _0x38c09f;var _0x4b7e6b;return db[_0xefdf('0x2a')][_0xefdf('0x52')]({'where':{'id':_0x5a09da['params']['id']}})[_0xefdf('0x21')](handleEntityNotFound(_0xea49e,null))[_0xefdf('0x21')](function(_0x9296a5){if(_0x9296a5){_0x38c09f=_0x9296a5;_0x197b53[_0xefdf('0x2c')]=_[_0xefdf('0x41')](db['Condition'][_0xefdf('0x40')]);_0x197b53['query']=_[_0xefdf('0x41')](_0x5a09da[_0xefdf('0x2d')]);_0x197b53['filters']=_[_0xefdf('0x2f')](_0x197b53[_0xefdf('0x2c')],_0x197b53[_0xefdf('0x2d')]);_0x17e052[_0xefdf('0x31')]=_[_0xefdf('0x2f')](_0x197b53[_0xefdf('0x2c')],qs[_0xefdf('0x30')](_0x5a09da[_0xefdf('0x2d')]['fields']));_0x17e052['attributes']=_0x17e052[_0xefdf('0x31')][_0xefdf('0x42')]?_0x17e052[_0xefdf('0x31')]:_0x197b53[_0xefdf('0x2c')];_0x17e052[_0xefdf('0x53')]=qs['sort'](_0x5a09da[_0xefdf('0x2d')][_0xefdf('0x34')]);_0x17e052[_0xefdf('0x35')]=qs[_0xefdf('0x2e')](_['pick'](_0x5a09da[_0xefdf('0x2d')],_0x197b53[_0xefdf('0x2e')]));if(_0x5a09da['query'][_0xefdf('0x37')]){_0x17e052[_0xefdf('0x35')]=_['merge'](_0x17e052[_0xefdf('0x35')],{'$or':_[_0xefdf('0x29')](_0x17e052[_0xefdf('0x31')],function(_0x48e174){var _0x3f3595={};_0x3f3595[_0x48e174]={'$like':'%'+_0x5a09da[_0xefdf('0x2d')][_0xefdf('0x37')]+'%'};return _0x3f3595;})});}_0x17e052=_[_0xefdf('0x38')]({},_0x17e052,_0x5a09da[_0xefdf('0x43')]);return _0x38c09f['getAllConditions'](_0x17e052);}})['then'](function(_0x190f6e){if(_0x190f6e){_0x4b7e6b=_0x190f6e[_0xefdf('0x42')];if(!_0x5a09da[_0xefdf('0x2d')][_0xefdf('0x32')]('nolimit')){_0x17e052[_0xefdf('0x1b')]=qs[_0xefdf('0x1b')](_0x5a09da[_0xefdf('0x2d')][_0xefdf('0x1b')]);_0x17e052[_0xefdf('0x19')]=qs[_0xefdf('0x19')](_0x5a09da['query'][_0xefdf('0x19')]);}return _0x38c09f['getAllConditions'](_0x17e052);}})['then'](function(_0x1afecb){if(_0x1afecb){return _0x1afecb?{'count':_0x4b7e6b,'rows':_0x1afecb}:null;}})[_0xefdf('0x21')](respondWithResult(_0xea49e,null))[_0xefdf('0x3e')](handleError(_0xea49e,null));};exports[_0xefdf('0x54')]=function(_0x25e477,_0x274503,_0x859d61){var _0x2d3c22={};var _0x10d1bc={};var _0x28adc8;var _0x3c128d;return db[_0xefdf('0x2a')]['findOne']({'where':{'id':_0x25e477[_0xefdf('0x3f')]['id']}})[_0xefdf('0x21')](handleEntityNotFound(_0x274503,null))[_0xefdf('0x21')](function(_0x1e1d2a){if(_0x1e1d2a){_0x28adc8=_0x1e1d2a;_0x10d1bc['model']=_[_0xefdf('0x41')](db[_0xefdf('0x55')]['rawAttributes']);_0x10d1bc['query']=_[_0xefdf('0x41')](_0x25e477[_0xefdf('0x2d')]);_0x10d1bc[_0xefdf('0x2e')]=_[_0xefdf('0x2f')](_0x10d1bc[_0xefdf('0x2c')],_0x10d1bc[_0xefdf('0x2d')]);_0x2d3c22['attributes']=_['intersection'](_0x10d1bc['model'],qs[_0xefdf('0x30')](_0x25e477[_0xefdf('0x2d')][_0xefdf('0x30')]));_0x2d3c22[_0xefdf('0x31')]=_0x2d3c22[_0xefdf('0x31')][_0xefdf('0x42')]?_0x2d3c22[_0xefdf('0x31')]:_0x10d1bc[_0xefdf('0x2c')];_0x2d3c22[_0xefdf('0x53')]=qs['sort'](_0x25e477[_0xefdf('0x2d')][_0xefdf('0x34')]);_0x2d3c22[_0xefdf('0x35')]=qs['filters'](_[_0xefdf('0x36')](_0x25e477[_0xefdf('0x2d')],_0x10d1bc[_0xefdf('0x2e')]));if(_0x25e477[_0xefdf('0x2d')][_0xefdf('0x37')]){_0x2d3c22[_0xefdf('0x35')]=_[_0xefdf('0x38')](_0x2d3c22[_0xefdf('0x35')],{'$or':_[_0xefdf('0x29')](_0x2d3c22[_0xefdf('0x31')],function(_0x4717b4){var _0x24f3e1={};_0x24f3e1[_0x4717b4]={'$like':'%'+_0x25e477[_0xefdf('0x2d')][_0xefdf('0x37')]+'%'};return _0x24f3e1;})});}_0x2d3c22=_[_0xefdf('0x38')]({},_0x2d3c22,_0x25e477['options']);return _0x28adc8[_0xefdf('0x54')](_0x2d3c22);}})[_0xefdf('0x21')](function(_0x44ef58){if(_0x44ef58){_0x3c128d=_0x44ef58['length'];if(!_0x25e477['query']['hasOwnProperty']('nolimit')){_0x2d3c22[_0xefdf('0x1b')]=qs['limit'](_0x25e477[_0xefdf('0x2d')][_0xefdf('0x1b')]);_0x2d3c22[_0xefdf('0x19')]=qs[_0xefdf('0x19')](_0x25e477[_0xefdf('0x2d')]['offset']);}return _0x28adc8[_0xefdf('0x54')](_0x2d3c22);}})[_0xefdf('0x21')](function(_0x5eda87){if(_0x5eda87){return _0x5eda87?{'count':_0x3c128d,'rows':_0x5eda87}:null;}})[_0xefdf('0x21')](respondWithResult(_0x274503,null))['catch'](handleError(_0x274503,null));};exports[_0xefdf('0x56')]=function(_0x5555dd,_0xaee707,_0x50977d){if(_0x5555dd['body']['id']){delete _0x5555dd[_0xefdf('0x4c')]['id'];}return db[_0xefdf('0x2a')][_0xefdf('0x44')]({'where':{'id':_0x5555dd[_0xefdf('0x3f')]['id']}})[_0xefdf('0x21')](handleEntityNotFound(_0xaee707,null))['then'](function(_0x359310){if(_0x359310){_0x5555dd['body']['TriggerId']=_0x359310['id'];return db['Action']['create'](_0x5555dd[_0xefdf('0x4c')]);}})[_0xefdf('0x21')](respondWithResult(_0xaee707,null))[_0xefdf('0x3e')](handleError(_0xaee707,null));};exports[_0xefdf('0x57')]=function(_0x27ae1a,_0x464016,_0x29807b){var _0x47de46={};var _0x37e950={};var _0x2d2ec8;var _0x5cbda0;return db[_0xefdf('0x2a')][_0xefdf('0x52')]({'where':{'id':_0x27ae1a['params']['id']}})[_0xefdf('0x21')](handleEntityNotFound(_0x464016,null))[_0xefdf('0x21')](function(_0x2ee564){if(_0x2ee564){_0x2d2ec8=_0x2ee564;_0x37e950[_0xefdf('0x2c')]=_['keys'](db[_0xefdf('0x58')][_0xefdf('0x40')]);_0x37e950[_0xefdf('0x2d')]=_[_0xefdf('0x41')](_0x27ae1a['query']);_0x37e950[_0xefdf('0x2e')]=_['intersection'](_0x37e950[_0xefdf('0x2c')],_0x37e950[_0xefdf('0x2d')]);_0x47de46[_0xefdf('0x31')]=_[_0xefdf('0x2f')](_0x37e950[_0xefdf('0x2c')],qs[_0xefdf('0x30')](_0x27ae1a[_0xefdf('0x2d')][_0xefdf('0x30')]));_0x47de46['attributes']=_0x47de46[_0xefdf('0x31')][_0xefdf('0x42')]?_0x47de46[_0xefdf('0x31')]:_0x37e950[_0xefdf('0x2c')];_0x47de46[_0xefdf('0x53')]=qs['sort'](_0x27ae1a[_0xefdf('0x2d')][_0xefdf('0x34')]);_0x47de46[_0xefdf('0x35')]=qs['filters'](_['pick'](_0x27ae1a[_0xefdf('0x2d')],_0x37e950[_0xefdf('0x2e')]));if(_0x27ae1a[_0xefdf('0x2d')][_0xefdf('0x37')]){_0x47de46[_0xefdf('0x35')]=_[_0xefdf('0x38')](_0x47de46[_0xefdf('0x35')],{'$or':_['map'](_0x47de46[_0xefdf('0x31')],function(_0x2a9273){var _0x3295ae={};_0x3295ae[_0x2a9273]={'$like':'%'+_0x27ae1a[_0xefdf('0x2d')]['filter']+'%'};return _0x3295ae;})});}_0x47de46=_[_0xefdf('0x38')]({},_0x47de46,_0x27ae1a[_0xefdf('0x43')]);return _0x2d2ec8[_0xefdf('0x57')](_0x47de46);}})[_0xefdf('0x21')](function(_0x380982){if(_0x380982){_0x5cbda0=_0x380982[_0xefdf('0x42')];if(!_0x27ae1a[_0xefdf('0x2d')][_0xefdf('0x32')](_0xefdf('0x33'))){_0x47de46[_0xefdf('0x1b')]=qs[_0xefdf('0x1b')](_0x27ae1a[_0xefdf('0x2d')][_0xefdf('0x1b')]);_0x47de46[_0xefdf('0x19')]=qs[_0xefdf('0x19')](_0x27ae1a[_0xefdf('0x2d')][_0xefdf('0x19')]);}return _0x2d2ec8[_0xefdf('0x57')](_0x47de46);}})['then'](function(_0x47347b){if(_0x47347b){return _0x47347b?{'count':_0x5cbda0,'rows':_0x47347b}:null;}})[_0xefdf('0x21')](respondWithResult(_0x464016,null))['catch'](handleError(_0x464016,null));};
\ No newline at end of file
index 4feff77..ee48d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe94a=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Trigger','lodash'];(function(_0x3a3a86,_0xdf7460){var _0x1918f8=function(_0x34fed8){while(--_0x34fed8){_0x3a3a86['push'](_0x3a3a86['shift']());}};_0x1918f8(++_0xdf7460);}(_0xe94a,0x1c7));var _0xae94=function(_0x308374,_0x550e85){_0x308374=_0x308374-0x0;var _0x1f71e0=_0xe94a[_0x308374];return _0x1f71e0;};'use strict';var _=require(_0xae94('0x0'));var util=require(_0xae94('0x1'));var logger=require(_0xae94('0x2'))('api');var moment=require(_0xae94('0x3'));var BPromise=require(_0xae94('0x4'));var rp=require(_0xae94('0x5'));var fs=require('fs');var path=require(_0xae94('0x6'));var rimraf=require(_0xae94('0x7'));var config=require(_0xae94('0x8'));var attributes=require('./trigger.attributes');module[_0xae94('0x9')]=function(_0x1f836b,_0x1f587d){return _0x1f836b[_0xae94('0xa')](_0xae94('0xb'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf8de=['util','../../config/logger','moment','request-promise','path','rimraf','./trigger.attributes','exports','tools_triggers'];(function(_0x2693ce,_0x4a9a17){var _0x5bc0f0=function(_0x4f78a5){while(--_0x4f78a5){_0x2693ce['push'](_0x2693ce['shift']());}};_0x5bc0f0(++_0x4a9a17);}(_0xf8de,0x1d4));var _0xef8d=function(_0x5481b8,_0x1ea945){_0x5481b8=_0x5481b8-0x0;var _0x3765d9=_0xf8de[_0x5481b8];return _0x3765d9;};'use strict';var _=require('lodash');var util=require(_0xef8d('0x0'));var logger=require(_0xef8d('0x1'))('api');var moment=require(_0xef8d('0x2'));var BPromise=require('bluebird');var rp=require(_0xef8d('0x3'));var fs=require('fs');var path=require(_0xef8d('0x4'));var rimraf=require(_0xef8d('0x5'));var config=require('../../config/environment');var attributes=require(_0xef8d('0x6'));module[_0xef8d('0x7')]=function(_0x586e39,_0x2ba6b9){return _0x586e39['define']('Trigger',attributes,{'tableName':_0xef8d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88ee58d..26b042c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6609=['raw','ShowTrigger','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetTrigger','Trigger','findAll','options','where','attributes','limit','map','include','model','then','find'];(function(_0x17c3d8,_0x9056f2){var _0x3e9ff1=function(_0x2a1a48){while(--_0x2a1a48){_0x17c3d8['push'](_0x17c3d8['shift']());}};_0x3e9ff1(++_0x9056f2);}(_0x6609,0xfe));var _0x9660=function(_0x535575,_0x2fe6a2){_0x535575=_0x535575-0x0;var _0x249dad=_0x6609[_0x535575];return _0x249dad;};'use strict';var _=require(_0x9660('0x0'));var util=require('util');var moment=require(_0x9660('0x1'));var BPromise=require(_0x9660('0x2'));var rs=require(_0x9660('0x3'));var fs=require('fs');var Redis=require(_0x9660('0x4'));var db=require(_0x9660('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9660('0x6'))(_0x9660('0x7'));var config=require(_0x9660('0x8'));var jayson=require(_0x9660('0x9'));var client=jayson['client'][_0x9660('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2264f9,_0x16bc89,_0x3f257b){return new BPromise(function(_0x47f8d8,_0xc8dc53){return client[_0x9660('0xb')](_0x2264f9,_0x3f257b)['then'](function(_0x2687c1){logger[_0x9660('0xc')](_0x9660('0xd'),_0x16bc89,'request\x20sent');logger[_0x9660('0xe')](_0x9660('0xf'),_0x16bc89,_0x9660('0x10'),JSON[_0x9660('0x11')](_0x2687c1));if(_0x2687c1[_0x9660('0x12')]){if(_0x2687c1[_0x9660('0x12')]['code']===0x1f4){logger[_0x9660('0x12')](_0x9660('0xd'),_0x16bc89,_0x2687c1[_0x9660('0x12')][_0x9660('0x13')]);return _0xc8dc53(_0x2687c1['error'][_0x9660('0x13')]);}logger[_0x9660('0x12')]('Trigger,\x20%s,\x20%s',_0x16bc89,_0x2687c1['error'][_0x9660('0x13')]);return _0x47f8d8(_0x2687c1['error'][_0x9660('0x13')]);}else{logger[_0x9660('0xc')](_0x9660('0xd'),_0x16bc89,_0x9660('0x10'));_0x47f8d8(_0x2687c1[_0x9660('0x14')][_0x9660('0x13')]);}})[_0x9660('0x15')](function(_0x4529de){logger[_0x9660('0x12')](_0x9660('0xd'),_0x16bc89,_0x4529de);_0xc8dc53(_0x4529de);});});}exports[_0x9660('0x16')]=function(_0x18d702){var _0x596863=this;return new Promise(function(_0x1b851e,_0x21c92e){return db[_0x9660('0x17')][_0x9660('0x18')]({'raw':_0x18d702[_0x9660('0x19')]?_0x18d702[_0x9660('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x18d702[_0x9660('0x19')]?_0x18d702[_0x9660('0x19')][_0x9660('0x1a')]||null:null,'attributes':_0x18d702[_0x9660('0x19')]?_0x18d702[_0x9660('0x19')][_0x9660('0x1b')]||null:null,'limit':_0x18d702[_0x9660('0x19')]?_0x18d702[_0x9660('0x19')][_0x9660('0x1c')]||null:null,'include':_0x18d702[_0x9660('0x19')]?_0x18d702[_0x9660('0x19')]['include']?_[_0x9660('0x1d')](_0x18d702[_0x9660('0x19')][_0x9660('0x1e')],function(_0x6eb48){return{'model':db[_0x6eb48[_0x9660('0x1f')]],'as':_0x6eb48['as'],'attributes':_0x6eb48[_0x9660('0x1b')],'include':_0x6eb48['include']?_[_0x9660('0x1d')](_0x6eb48[_0x9660('0x1e')],function(_0x11b823){return{'model':db[_0x11b823['model']],'as':_0x11b823['as'],'attributes':_0x11b823[_0x9660('0x1b')],'include':_0x11b823[_0x9660('0x1e')]?_['map'](_0x11b823[_0x9660('0x1e')],function(_0x3a626f){return{'model':db[_0x3a626f['model']],'as':_0x3a626f['as'],'attributes':_0x3a626f[_0x9660('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x9660('0x20')](function(_0x3f3a4f){logger[_0x9660('0xc')](_0x9660('0x16'),_0x18d702);logger[_0x9660('0xe')](_0x9660('0x16'),_0x18d702,JSON[_0x9660('0x11')](_0x3f3a4f));_0x1b851e(_0x3f3a4f);})[_0x9660('0x15')](function(_0xfde256){logger[_0x9660('0x12')]('GetTrigger',_0xfde256[_0x9660('0x13')],_0x18d702);_0x21c92e(_0x596863[_0x9660('0x12')](0x1f4,_0xfde256[_0x9660('0x13')]));});});};exports['ShowTrigger']=function(_0x1f31e2){var _0x5295ef=this;return new Promise(function(_0xb57095,_0x251739){return db[_0x9660('0x17')][_0x9660('0x21')]({'raw':_0x1f31e2[_0x9660('0x19')]?_0x1f31e2[_0x9660('0x19')][_0x9660('0x22')]===undefined?!![]:![]:!![],'where':_0x1f31e2[_0x9660('0x19')]?_0x1f31e2['options']['where']||null:null,'attributes':_0x1f31e2['options']?_0x1f31e2['options']['attributes']||null:null,'include':_0x1f31e2[_0x9660('0x19')]?_0x1f31e2[_0x9660('0x19')][_0x9660('0x1e')]?_[_0x9660('0x1d')](_0x1f31e2[_0x9660('0x19')][_0x9660('0x1e')],function(_0x283057){return{'model':db[_0x283057[_0x9660('0x1f')]],'as':_0x283057['as'],'attributes':_0x283057['attributes'],'include':_0x283057[_0x9660('0x1e')]?_['map'](_0x283057[_0x9660('0x1e')],function(_0x34e41a){return{'model':db[_0x34e41a[_0x9660('0x1f')]],'as':_0x34e41a['as'],'attributes':_0x34e41a['attributes'],'include':_0x34e41a[_0x9660('0x1e')]?_[_0x9660('0x1d')](_0x34e41a[_0x9660('0x1e')],function(_0x3046df){return{'model':db[_0x3046df[_0x9660('0x1f')]],'as':_0x3046df['as'],'attributes':_0x3046df[_0x9660('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x9660('0x20')](function(_0x5a38b7){logger['info'](_0x9660('0x23'),_0x1f31e2);logger[_0x9660('0xe')](_0x9660('0x23'),_0x1f31e2,JSON[_0x9660('0x11')](_0x5a38b7));_0xb57095(_0x5a38b7);})[_0x9660('0x15')](function(_0x4af43e){logger[_0x9660('0x12')](_0x9660('0x23'),_0x4af43e['message'],_0x1f31e2);_0x251739(_0x5295ef[_0x9660('0x12')](0x1f4,_0x4af43e[_0x9660('0x13')]));});});};
\ No newline at end of file
+var _0x90c3=['bluebird','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','info','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetTrigger','Trigger','findAll','options','raw','attributes','map','include','model','then','debug','find','where','ShowTrigger','lodash'];(function(_0x2f9828,_0x6651f3){var _0x1116e3=function(_0x36588c){while(--_0x36588c){_0x2f9828['push'](_0x2f9828['shift']());}};_0x1116e3(++_0x6651f3);}(_0x90c3,0x15f));var _0x390c=function(_0x385e52,_0x414afd){_0x385e52=_0x385e52-0x0;var _0x3af1bc=_0x90c3[_0x385e52];return _0x3af1bc;};'use strict';var _=require(_0x390c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x390c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x390c('0x2'));var db=require(_0x390c('0x3'))['db'];var utils=require(_0x390c('0x4'));var logger=require('../../config/logger')(_0x390c('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x390c('0x6')][_0x390c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x118825,_0xd54cb,_0x27bc35){return new BPromise(function(_0x51062c,_0x59483e){return client[_0x390c('0x8')](_0x118825,_0x27bc35)['then'](function(_0x8064f7){logger[_0x390c('0x9')](_0x390c('0xa'),_0xd54cb,_0x390c('0xb'));logger['debug'](_0x390c('0xc'),_0xd54cb,'request\x20sent',JSON[_0x390c('0xd')](_0x8064f7));if(_0x8064f7[_0x390c('0xe')]){if(_0x8064f7[_0x390c('0xe')]['code']===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0xd54cb,_0x8064f7[_0x390c('0xe')]['message']);return _0x59483e(_0x8064f7[_0x390c('0xe')][_0x390c('0xf')]);}logger[_0x390c('0xe')](_0x390c('0xa'),_0xd54cb,_0x8064f7[_0x390c('0xe')][_0x390c('0xf')]);return _0x51062c(_0x8064f7[_0x390c('0xe')][_0x390c('0xf')]);}else{logger[_0x390c('0x9')](_0x390c('0xa'),_0xd54cb,_0x390c('0xb'));_0x51062c(_0x8064f7[_0x390c('0x10')][_0x390c('0xf')]);}})[_0x390c('0x11')](function(_0x53e8a1){logger[_0x390c('0xe')](_0x390c('0xa'),_0xd54cb,_0x53e8a1);_0x59483e(_0x53e8a1);});});}exports[_0x390c('0x12')]=function(_0x126083){var _0x1283ed=this;return new Promise(function(_0x2090e7,_0x47eaf2){return db[_0x390c('0x13')][_0x390c('0x14')]({'raw':_0x126083[_0x390c('0x15')]?_0x126083[_0x390c('0x15')][_0x390c('0x16')]===undefined?!![]:![]:!![],'where':_0x126083[_0x390c('0x15')]?_0x126083[_0x390c('0x15')]['where']||null:null,'attributes':_0x126083[_0x390c('0x15')]?_0x126083[_0x390c('0x15')][_0x390c('0x17')]||null:null,'limit':_0x126083[_0x390c('0x15')]?_0x126083['options']['limit']||null:null,'include':_0x126083[_0x390c('0x15')]?_0x126083[_0x390c('0x15')]['include']?_[_0x390c('0x18')](_0x126083[_0x390c('0x15')][_0x390c('0x19')],function(_0x1a58ab){return{'model':db[_0x1a58ab['model']],'as':_0x1a58ab['as'],'attributes':_0x1a58ab[_0x390c('0x17')],'include':_0x1a58ab[_0x390c('0x19')]?_[_0x390c('0x18')](_0x1a58ab[_0x390c('0x19')],function(_0x161b49){return{'model':db[_0x161b49[_0x390c('0x1a')]],'as':_0x161b49['as'],'attributes':_0x161b49['attributes'],'include':_0x161b49[_0x390c('0x19')]?_['map'](_0x161b49[_0x390c('0x19')],function(_0x33dc69){return{'model':db[_0x33dc69['model']],'as':_0x33dc69['as'],'attributes':_0x33dc69[_0x390c('0x17')]};}):[]};}):[]};}):[]:[]})[_0x390c('0x1b')](function(_0x4afc35){logger[_0x390c('0x9')]('GetTrigger',_0x126083);logger[_0x390c('0x1c')](_0x390c('0x12'),_0x126083,JSON[_0x390c('0xd')](_0x4afc35));_0x2090e7(_0x4afc35);})['catch'](function(_0x2e3aa5){logger[_0x390c('0xe')](_0x390c('0x12'),_0x2e3aa5['message'],_0x126083);_0x47eaf2(_0x1283ed[_0x390c('0xe')](0x1f4,_0x2e3aa5[_0x390c('0xf')]));});});};exports['ShowTrigger']=function(_0x6b65a2){var _0x4cf546=this;return new Promise(function(_0x3a4cca,_0x3d467e){return db['Trigger'][_0x390c('0x1d')]({'raw':_0x6b65a2[_0x390c('0x15')]?_0x6b65a2[_0x390c('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x6b65a2['options']?_0x6b65a2[_0x390c('0x15')][_0x390c('0x1e')]||null:null,'attributes':_0x6b65a2[_0x390c('0x15')]?_0x6b65a2[_0x390c('0x15')][_0x390c('0x17')]||null:null,'include':_0x6b65a2[_0x390c('0x15')]?_0x6b65a2[_0x390c('0x15')][_0x390c('0x19')]?_[_0x390c('0x18')](_0x6b65a2['options'][_0x390c('0x19')],function(_0x1f3765){return{'model':db[_0x1f3765[_0x390c('0x1a')]],'as':_0x1f3765['as'],'attributes':_0x1f3765['attributes'],'include':_0x1f3765[_0x390c('0x19')]?_['map'](_0x1f3765[_0x390c('0x19')],function(_0x5d5ea4){return{'model':db[_0x5d5ea4[_0x390c('0x1a')]],'as':_0x5d5ea4['as'],'attributes':_0x5d5ea4['attributes'],'include':_0x5d5ea4[_0x390c('0x19')]?_[_0x390c('0x18')](_0x5d5ea4[_0x390c('0x19')],function(_0x543af3){return{'model':db[_0x543af3[_0x390c('0x1a')]],'as':_0x543af3['as'],'attributes':_0x543af3[_0x390c('0x17')]};}):[]};}):[]};}):[]:[]})[_0x390c('0x1b')](function(_0x55c13e){logger['info'](_0x390c('0x1f'),_0x6b65a2);logger[_0x390c('0x1c')](_0x390c('0x1f'),_0x6b65a2,JSON['stringify'](_0x55c13e));_0x3a4cca(_0x55c13e);})[_0x390c('0x11')](function(_0x366c29){logger[_0x390c('0xe')](_0x390c('0x1f'),_0x366c29['message'],_0x6b65a2);_0x3d467e(_0x4cf546[_0x390c('0xe')](0x1f4,_0x366c29[_0x390c('0xf')]));});});};
\ No newline at end of file
index bf58f57..19fa6d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b23=['util','path','connect-timeout','express','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','post','/:id/clone','clone','put','update','delete','destroy'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x5b23,0xb4));var _0x35b2=function(_0x59c2cb,_0x671ebb){_0x59c2cb=_0x59c2cb-0x0;var _0x4d2910=_0x5b23[_0x59c2cb];return _0x4d2910;};'use strict';var multer=require('multer');var util=require(_0x35b2('0x0'));var path=require(_0x35b2('0x1'));var timeout=require(_0x35b2('0x2'));var express=require(_0x35b2('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(_0x35b2('0x4'));var controller=require(_0x35b2('0x5'));router[_0x35b2('0x6')]('/',auth[_0x35b2('0x7')](),controller[_0x35b2('0x8')]);router[_0x35b2('0x6')](_0x35b2('0x9'),auth[_0x35b2('0x7')](),controller[_0x35b2('0xa')]);router[_0x35b2('0xb')](_0x35b2('0xc'),auth[_0x35b2('0x7')](),controller[_0x35b2('0xd')]);router['post']('/',auth[_0x35b2('0x7')](),controller['create']);router[_0x35b2('0xe')](_0x35b2('0x9'),auth['isAuthenticated'](),controller[_0x35b2('0xf')]);router[_0x35b2('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x35b2('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xf8f2=['../../config/environment','./trunk.controller','get','index','/:id','isAuthenticated','show','post','/:id/clone','clone','put','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service'];(function(_0x264c69,_0x3f4936){var _0x400492=function(_0x3485bd){while(--_0x3485bd){_0x264c69['push'](_0x264c69['shift']());}};_0x400492(++_0x3f4936);}(_0xf8f2,0x9a));var _0x2f8f=function(_0x49119a,_0x2fe2be){_0x49119a=_0x49119a-0x0;var _0x1fe250=_0xf8f2[_0x49119a];return _0x1fe250;};'use strict';var multer=require(_0x2f8f('0x0'));var util=require('util');var path=require(_0x2f8f('0x1'));var timeout=require(_0x2f8f('0x2'));var express=require(_0x2f8f('0x3'));var router=express['Router']();var fs_extra=require(_0x2f8f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2f8f('0x5'));var config=require(_0x2f8f('0x6'));var controller=require(_0x2f8f('0x7'));router[_0x2f8f('0x8')]('/',auth['isAuthenticated'](),controller[_0x2f8f('0x9')]);router[_0x2f8f('0x8')](_0x2f8f('0xa'),auth[_0x2f8f('0xb')](),controller[_0x2f8f('0xc')]);router[_0x2f8f('0xd')](_0x2f8f('0xe'),auth[_0x2f8f('0xb')](),controller[_0x2f8f('0xf')]);router[_0x2f8f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2f8f('0x10')](_0x2f8f('0xa'),auth['isAuthenticated'](),controller[_0x2f8f('0x11')]);router['delete'](_0x2f8f('0xa'),auth['isAuthenticated'](),controller[_0x2f8f('0x12')]);module[_0x2f8f('0x13')]=router;
\ No newline at end of file
index bbf4211..efca0a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fff=['String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','nonat','yes','force_rport,comedia','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never','INTEGER','refuse','originate','uac','uas','pai','fingerprint','certificate','active','dynamic','update','BOOLEAN','exports','STRING','name','ENUM','user','friend','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','join','getDataValue','transport'];(function(_0x26da89,_0x264785){var _0xc95b7b=function(_0x230e5b){while(--_0x230e5b){_0x26da89['push'](_0x26da89['shift']());}};_0xc95b7b(++_0x264785);}(_0x3fff,0x166));var _0xf3ff=function(_0x7d7b53,_0x29cba6){_0x7d7b53=_0x7d7b53-0x0;var _0x4f6595=_0x3fff[_0x7d7b53];return _0x4f6595;};'use strict';var Sequelize=require('sequelize');module[_0xf3ff('0x0')]={'name':{'type':Sequelize[_0xf3ff('0x1')],'allowNull':![],'unique':_0xf3ff('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xf3ff('0x3')]('friend',_0xf3ff('0x4'),'peer'),'allowNull':![],'defaultValue':_0xf3ff('0x5')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf3ff('0x6')},'callingpres':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x7'),'ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN',_0xf3ff('0x8'),_0xf3ff('0x9'),_0xf3ff('0xa'),_0xf3ff('0xb'),_0xf3ff('0xc'))},'deny':{'type':Sequelize[_0xf3ff('0x1')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xf3ff('0x1')]},'md5secret':{'type':Sequelize[_0xf3ff('0x1')]},'remotesecret':{'type':Sequelize[_0xf3ff('0x1')]},'transport':{'type':Sequelize[_0xf3ff('0x1')],'defaultValue':_0xf3ff('0xd'),'set':function(_0x2edf6a){this[_0xf3ff('0xe')]('transport',_0x2edf6a?_0x2edf6a[_0xf3ff('0xf')](','):null);},'get':function(){return this[_0xf3ff('0x10')]('transport')?this[_0xf3ff('0x10')](_0xf3ff('0x11'))['split'](','):null;},'comment':_0xf3ff('0x12')},'dtmfmode':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x13'),_0xf3ff('0x14'),'shortinfo',_0xf3ff('0x15'),_0xf3ff('0x16')),'defaultValue':_0xf3ff('0x13')},'directmedia':{'type':Sequelize[_0xf3ff('0x3')]('yes','no',_0xf3ff('0x17'),'update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xf3ff('0x1')]},'directmediadeny':{'type':Sequelize[_0xf3ff('0x1')]},'nat':{'type':Sequelize[_0xf3ff('0x1')],'defaultValue':_0xf3ff('0x19'),'set':function(_0x46349f){this[_0xf3ff('0xe')](_0xf3ff('0x1a'),_0x46349f?_0x46349f[_0xf3ff('0xf')](','):null);},'get':function(){return this[_0xf3ff('0x10')](_0xf3ff('0x1a'))?this['getDataValue'](_0xf3ff('0x1a'))[_0xf3ff('0x1b')](','):null;},'comment':_0xf3ff('0x1c')},'callgroup':{'type':Sequelize[_0xf3ff('0x1')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xf3ff('0x1')]},'namedpickupgroup':{'type':Sequelize[_0xf3ff('0x1')]},'language':{'type':Sequelize[_0xf3ff('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xf3ff('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':'all'},'allow':{'type':Sequelize[_0xf3ff('0x1')],'allowNull':![],'defaultValue':_0xf3ff('0x1d'),'set':function(_0x5c054f){this[_0xf3ff('0xe')]('allow',_0x5c054f?_0x5c054f['join'](';'):_0xf3ff('0x1d'));},'get':function(){return this[_0xf3ff('0x10')]('allow')?this[_0xf3ff('0x10')](_0xf3ff('0x1e'))[_0xf3ff('0x1b')](';'):null;},'comment':_0xf3ff('0x1f')},'autoframing':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0xf3ff('0x20'),'set':function(_0x1d1f9f){this[_0xf3ff('0xe')](_0xf3ff('0x21'),_0x1d1f9f?_0x1d1f9f[_0xf3ff('0xf')](','):null);},'get':function(){return this[_0xf3ff('0x10')](_0xf3ff('0x21'))?this[_0xf3ff('0x10')](_0xf3ff('0x21'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xf3ff('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no',_0xf3ff('0x22'))},'promiscredir':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'useclientcode':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'accountcode':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'setvar':{'type':Sequelize[_0xf3ff('0x1')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0xf3ff('0x3')]('yes','no'),'defaultValue':_0xf3ff('0x18')},'busylevel':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'allowoverlap':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'allowtransfer':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'ignoresdpversion':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'subscribecontext':{'type':Sequelize[_0xf3ff('0x1')]},'template':{'type':Sequelize[_0xf3ff('0x1')]},'videosupport':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xf3ff('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0xf3ff('0x1')]},'session_timers':{'type':Sequelize[_0xf3ff('0x3')]('accept',_0xf3ff('0x24'),_0xf3ff('0x25'))},'session_expires':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'session_minse':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'session_refresher':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x26'),_0xf3ff('0x27')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xf3ff('0x1')]},'regexten':{'type':Sequelize[_0xf3ff('0x1')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xf3ff('0x1')]},'port':{'type':Sequelize[_0xf3ff('0x23')](0x5)},'qualify':{'type':Sequelize[_0xf3ff('0x3')]('yes','no'),'defaultValue':_0xf3ff('0x18')},'keepalive':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'defaultip':{'type':Sequelize[_0xf3ff('0x1')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'sendrpid':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no',_0xf3ff('0x28')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xf3ff('0x1')]},'timert1':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'timerb':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xf3ff('0x1')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0xf3ff('0x1')]},'use_q850_reason':{'type':Sequelize[_0xf3ff('0x1')]},'maxforwards':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'encryption':{'type':Sequelize[_0xf3ff('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'force_avp':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'icesupport':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'dtlsenable':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no')},'dtlsverify':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no',_0xf3ff('0x29'),_0xf3ff('0x2a'))},'dtlsrekey':{'type':Sequelize[_0xf3ff('0x23')](0xb)},'dtlscertfile':{'type':Sequelize[_0xf3ff('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xf3ff('0x1')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x2b'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xf3ff('0x1')]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xf3ff('0x1')]},'recordofffeature':{'type':Sequelize[_0xf3ff('0x1')]},'call_limit':{'type':Sequelize[_0xf3ff('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0xf3ff('0x18'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0xf3ff('0x1')]},'mohinterpret':{'type':Sequelize[_0xf3ff('0x1')]},'mohsuggest':{'type':Sequelize[_0xf3ff('0x1')]},'parkinglot':{'type':Sequelize[_0xf3ff('0x1')]},'description':{'type':Sequelize[_0xf3ff('0x1')]},'host':{'type':Sequelize[_0xf3ff('0x1')],'defaultValue':_0xf3ff('0x2c')},'canreinvite':{'type':Sequelize[_0xf3ff('0x3')](_0xf3ff('0x18'),'no',_0xf3ff('0x17'),_0xf3ff('0x2d'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0xf3ff('0x1')]},'otherFields':{'type':Sequelize[_0xf3ff('0x1')]},'active':{'type':Sequelize[_0xf3ff('0x2e')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xf3ff('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xb47d=['passive','actpass','dynamic','BOOLEAN','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','rfc2833','auto','yes','nonat','outgoing','force_rport,comedia','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','INTEGER','always','refuse','originate','uac','uas','pai','fingerprint','active'];(function(_0x1a91c4,_0xcf6102){var _0x173a4c=function(_0x1cd3f7){while(--_0x1cd3f7){_0x1a91c4['push'](_0x1a91c4['shift']());}};_0x173a4c(++_0xcf6102);}(_0xb47d,0x16c));var _0xdb47=function(_0x40d96f,_0x1dacf7){_0x40d96f=_0x40d96f-0x0;var _0x185c05=_0xb47d[_0x40d96f];return _0x185c05;};'use strict';var Sequelize=require('sequelize');module[_0xdb47('0x0')]={'name':{'type':Sequelize[_0xdb47('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x3'),_0xdb47('0x4'),_0xdb47('0x5')),'allowNull':![],'defaultValue':_0xdb47('0x3')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xdb47('0x6')},'callingpres':{'type':Sequelize['ENUM'](_0xdb47('0x7'),_0xdb47('0x8'),_0xdb47('0x9'),'ALLOWED',_0xdb47('0xa'),'PROHIB_PASSED_SCREEN',_0xdb47('0xb'),_0xdb47('0xc'))},'deny':{'type':Sequelize[_0xdb47('0x1')]},'permit':{'type':Sequelize[_0xdb47('0x1')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0xdb47('0x1')]},'transport':{'type':Sequelize[_0xdb47('0x1')],'defaultValue':_0xdb47('0xd'),'set':function(_0x32cda8){this[_0xdb47('0xe')](_0xdb47('0xf'),_0x32cda8?_0x32cda8[_0xdb47('0x10')](','):null);},'get':function(){return this[_0xdb47('0x11')](_0xdb47('0xf'))?this[_0xdb47('0x11')](_0xdb47('0xf'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x12'),'info','shortinfo','inband',_0xdb47('0x13')),'defaultValue':_0xdb47('0x12')},'directmedia':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no',_0xdb47('0x15'),'update',_0xdb47('0x16')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xdb47('0x2')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xdb47('0x1')]},'directmediadeny':{'type':Sequelize[_0xdb47('0x1')]},'nat':{'type':Sequelize[_0xdb47('0x1')],'defaultValue':_0xdb47('0x17'),'set':function(_0x5a2c99){this[_0xdb47('0xe')]('nat',_0x5a2c99?_0x5a2c99['join'](','):null);},'get':function(){return this[_0xdb47('0x11')](_0xdb47('0x18'))?this[_0xdb47('0x11')](_0xdb47('0x18'))[_0xdb47('0x19')](','):null;},'comment':_0xdb47('0x1a')},'callgroup':{'type':Sequelize[_0xdb47('0x1')]},'namedcallgroup':{'type':Sequelize[_0xdb47('0x1')]},'pickupgroup':{'type':Sequelize[_0xdb47('0x1')]},'namedpickupgroup':{'type':Sequelize[_0xdb47('0x1')]},'language':{'type':Sequelize[_0xdb47('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xdb47('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xdb47('0x1')],'defaultValue':_0xdb47('0x1b')},'allow':{'type':Sequelize[_0xdb47('0x1')],'allowNull':![],'defaultValue':_0xdb47('0x1c'),'set':function(_0x38e422){this[_0xdb47('0xe')]('allow',_0x38e422?_0x38e422['join'](';'):_0xdb47('0x1c'));},'get':function(){return this[_0xdb47('0x11')](_0xdb47('0x1d'))?this[_0xdb47('0x11')]('allow')[_0xdb47('0x19')](';'):null;},'comment':_0xdb47('0x1e')},'autoframing':{'type':Sequelize[_0xdb47('0x2')]('yes','no')},'insecure':{'type':Sequelize[_0xdb47('0x1')],'defaultValue':'port,invite','set':function(_0x4a2fb3){this[_0xdb47('0xe')](_0xdb47('0x1f'),_0x4a2fb3?_0x4a2fb3[_0xdb47('0x10')](','):null);},'get':function(){return this[_0xdb47('0x11')](_0xdb47('0x1f'))?this[_0xdb47('0x11')](_0xdb47('0x1f'))[_0xdb47('0x19')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no','never')},'promiscredir':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no')},'useclientcode':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xdb47('0x1')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no'),'defaultValue':_0xdb47('0x14')},'busylevel':{'type':Sequelize[_0xdb47('0x20')](0xb)},'allowoverlap':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no')},'allowsubscribe':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no')},'allowtransfer':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no')},'ignoresdpversion':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no',_0xdb47('0x21')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xdb47('0x20')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xdb47('0x2')]('accept',_0xdb47('0x22'),_0xdb47('0x23'))},'session_expires':{'type':Sequelize[_0xdb47('0x20')](0xb)},'session_minse':{'type':Sequelize[_0xdb47('0x20')](0xb)},'session_refresher':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x24'),'uas'),'defaultValue':_0xdb47('0x25')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0xdb47('0x1')]},'fromdomain':{'type':Sequelize[_0xdb47('0x1')]},'fromuser':{'type':Sequelize[_0xdb47('0x1')]},'port':{'type':Sequelize[_0xdb47('0x20')](0x5)},'qualify':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xdb47('0x20')](0xb)},'defaultip':{'type':Sequelize[_0xdb47('0x1')]},'defaultuser':{'type':Sequelize[_0xdb47('0x1')]},'rtptimeout':{'type':Sequelize[_0xdb47('0x20')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xdb47('0x20')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xdb47('0x20')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no',_0xdb47('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xdb47('0x1')]},'timert1':{'type':Sequelize[_0xdb47('0x20')](0xb)},'timerb':{'type':Sequelize[_0xdb47('0x20')](0xb)},'qualifyfreq':{'type':Sequelize[_0xdb47('0x20')](0xb)},'contactpermit':{'type':Sequelize[_0xdb47('0x1')]},'contactdeny':{'type':Sequelize[_0xdb47('0x1')]},'contactacl':{'type':Sequelize[_0xdb47('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0xdb47('0x1')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0xdb47('0x20')](0xb)},'encryption':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xdb47('0x2')]('yes','no')},'force_avp':{'type':Sequelize[_0xdb47('0x2')]('yes','no')},'icesupport':{'type':Sequelize[_0xdb47('0x2')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xdb47('0x2')]('yes','no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0xdb47('0x27'),'certificate')},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xdb47('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0xdb47('0x1')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xdb47('0x1')]},'dtlscapath':{'type':Sequelize[_0xdb47('0x1')]},'dtlssetup':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x28'),_0xdb47('0x29'),_0xdb47('0x2a')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xdb47('0x1')]},'usereqphone':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xdb47('0x1')]},'recordofffeature':{'type':Sequelize[_0xdb47('0x1')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0xdb47('0x14'),'no')},'subscribemwi':{'type':Sequelize[_0xdb47('0x2')]('yes','no')},'vmexten':{'type':Sequelize[_0xdb47('0x1')]},'mohinterpret':{'type':Sequelize[_0xdb47('0x1')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xdb47('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xdb47('0x1')],'defaultValue':_0xdb47('0x2b')},'canreinvite':{'type':Sequelize[_0xdb47('0x2')](_0xdb47('0x14'),'no','nonat','update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0xdb47('0x1')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xdb47('0x2c')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 957852d..ebcb417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['userProfileId','autoAssociation','UserProfileResource','readFileSync','join','root','server/files/templates/trunk.ejs','server/files/templates/registry.ejs','utf8','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','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/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','update','destroy','Trunks','stack','name','send','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','options','Trunk','includeAll','include','findAll','rows','show','params','rawAttributes','merge','find','catch','clone','omit','createdAt','updatedAt','create','body','get','role','UserProfileSection'];(function(_0x3096c4,_0x5554af){var _0x2d831f=function(_0x55ef76){while(--_0x55ef76){_0x3096c4['push'](_0x3096c4['shift']());}};_0x2d831f(++_0x5554af);}(_0x8ef6,0xf2));var _0x68ef=function(_0x4f82af,_0x4d4afb){_0x4f82af=_0x4f82af-0x0;var _0x4563ac=_0x8ef6[_0x4f82af];return _0x4563ac;};'use strict';var emlformat=require(_0x68ef('0x0'));var rimraf=require(_0x68ef('0x1'));var zipdir=require(_0x68ef('0x2'));var jsonpatch=require(_0x68ef('0x3'));var rp=require(_0x68ef('0x4'));var moment=require(_0x68ef('0x5'));var BPromise=require(_0x68ef('0x6'));var Mustache=require('mustache');var util=require(_0x68ef('0x7'));var path=require(_0x68ef('0x8'));var sox=require(_0x68ef('0x9'));var csv=require(_0x68ef('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x68ef('0xb'));var squel=require(_0x68ef('0xc'));var crypto=require(_0x68ef('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x68ef('0xe'));var toCsv=require(_0x68ef('0xa'));var querystring=require(_0x68ef('0xf'));var Papa=require(_0x68ef('0x10'));var Redis=require(_0x68ef('0x11'));var authService=require(_0x68ef('0x12'));var qs=require(_0x68ef('0x13'));var as=require(_0x68ef('0x14'));var hardwareService=require(_0x68ef('0x15'));var logger=require(_0x68ef('0x16'))(_0x68ef('0x17'));var utils=require(_0x68ef('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x68ef('0x19'));var db=require(_0x68ef('0x1a'))['db'];var jayson=require(_0x68ef('0x1b'));var client=jayson[_0x68ef('0x1c')][_0x68ef('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x288cc9,_0x508671,_0x3b48dd,_0xc50cce){return new BPromise(function(_0x2657c5,_0x47fbb5){var _0x22fe96=_0xc50cce||client;return _0x22fe96[_0x68ef('0x1e')](_0x288cc9,_0x3b48dd)[_0x68ef('0x1f')](function(_0x5005ba){logger[_0x68ef('0x20')](_0x68ef('0x21'),_0x508671,_0x68ef('0x22'));logger[_0x68ef('0x23')]('Trunk,\x20%s,\x20%s,\x20%s',_0x508671,_0x68ef('0x22'),JSON['stringify'](_0x5005ba));if(_0x5005ba['error']){if(_0x5005ba[_0x68ef('0x24')][_0x68ef('0x25')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x508671,_0x5005ba[_0x68ef('0x24')][_0x68ef('0x26')]);return _0x47fbb5(_0x5005ba[_0x68ef('0x24')]['message']);}logger[_0x68ef('0x24')](_0x68ef('0x21'),_0x508671,_0x5005ba[_0x68ef('0x24')]['message']);return _0x2657c5(_0x5005ba[_0x68ef('0x24')][_0x68ef('0x26')]);}else{logger['info'](_0x68ef('0x21'),_0x508671,_0x68ef('0x22'));_0x2657c5(_0x5005ba[_0x68ef('0x27')]['message']);}})['catch'](function(_0x59bebc){logger[_0x68ef('0x24')](_0x68ef('0x21'),_0x508671,_0x59bebc);_0x47fbb5(_0x59bebc);});});}function respondWithStatusCode(_0x312cc9,_0x2e6e39){_0x2e6e39=_0x2e6e39||0xcc;return function(_0x438b4c){if(_0x438b4c){return _0x312cc9[_0x68ef('0x28')](_0x2e6e39);}return _0x312cc9[_0x68ef('0x29')](_0x2e6e39)[_0x68ef('0x2a')]();};}function respondWithResult(_0x65fd09,_0x13280b){_0x13280b=_0x13280b||0xc8;return function(_0x5e4dbe){if(_0x5e4dbe){return _0x65fd09[_0x68ef('0x29')](_0x13280b)['json'](_0x5e4dbe);}};}function respondWithFilteredResult(_0x599243,_0x55d8b0){return function(_0x1a7ce1){if(_0x1a7ce1){var _0x268f32=typeof _0x55d8b0[_0x68ef('0x2b')]===_0x68ef('0x2c')&&typeof _0x55d8b0['limit']==='undefined';var _0x1cbe4f=_0x1a7ce1[_0x68ef('0x2d')];var _0x7bf96=_0x268f32?0x0:_0x55d8b0[_0x68ef('0x2b')];var _0x22ef25=_0x268f32?_0x1a7ce1[_0x68ef('0x2d')]:_0x55d8b0[_0x68ef('0x2b')]+_0x55d8b0[_0x68ef('0x2e')];var _0x5a6dfd;if(_0x22ef25>=_0x1cbe4f){_0x22ef25=_0x1cbe4f;_0x5a6dfd=0xc8;}else{_0x5a6dfd=0xce;}_0x599243[_0x68ef('0x29')](_0x5a6dfd);return _0x599243[_0x68ef('0x2f')](_0x68ef('0x30'),_0x7bf96+'-'+_0x22ef25+'/'+_0x1cbe4f)['json'](_0x1a7ce1);}return null;};}function patchUpdates(_0x370a8f){return function(_0x523120){try{jsonpatch[_0x68ef('0x31')](_0x523120,_0x370a8f,!![]);}catch(_0x17588a){return BPromise['reject'](_0x17588a);}return _0x523120['save']();};}function saveUpdates(_0x159395,_0x5fa72a){return function(_0x4b8fc8){if(_0x4b8fc8){return _0x4b8fc8[_0x68ef('0x32')](_0x159395)[_0x68ef('0x1f')](function(_0x2d67be){return _0x2d67be;});}return null;};}function removeEntity(_0x2d1e9f,_0x59e9fb){return function(_0x2c8bd0){if(_0x2c8bd0){return _0x2c8bd0[_0x68ef('0x33')]()['then'](function(){var _0x2f8de2=_0x2c8bd0['get']({'plain':!![]});var _0x14581d=_0x68ef('0x34');return db['UserProfileResource'][_0x68ef('0x33')]({'where':{'type':_0x14581d,'resourceId':_0x2f8de2['id']}})['then'](function(){return _0x2c8bd0;});})[_0x68ef('0x1f')](function(){_0x2d1e9f['status'](0xcc)[_0x68ef('0x2a')]();});}};}function handleEntityNotFound(_0x1444e0,_0x798276){return function(_0x569949){if(!_0x569949){_0x1444e0[_0x68ef('0x28')](0x194);}return _0x569949;};}function handleError(_0x485dc3,_0x476938){_0x476938=_0x476938||0x1f4;return function(_0x4c9506){logger[_0x68ef('0x24')](_0x4c9506[_0x68ef('0x35')]);if(_0x4c9506[_0x68ef('0x36')]){delete _0x4c9506[_0x68ef('0x36')];}_0x485dc3[_0x68ef('0x29')](_0x476938)[_0x68ef('0x37')](_0x4c9506);};}exports['index']=function(_0x294fba,_0x15a6ab){var _0x32074a={},_0x52a8b9={},_0x32eddd={'count':0x0,'rows':[]};var _0x3c5de6=_[_0x68ef('0x38')](db['Trunk']['rawAttributes'],function(_0x14f0fc){return{'name':_0x14f0fc[_0x68ef('0x39')],'type':_0x14f0fc[_0x68ef('0x3a')][_0x68ef('0x3b')]};});_0x52a8b9[_0x68ef('0x3c')]=_[_0x68ef('0x38')](_0x3c5de6,_0x68ef('0x36'));_0x52a8b9['query']=_[_0x68ef('0x3d')](_0x294fba[_0x68ef('0x3e')]);_0x52a8b9[_0x68ef('0x3f')]=_[_0x68ef('0x40')](_0x52a8b9['model'],_0x52a8b9[_0x68ef('0x3e')]);_0x32074a[_0x68ef('0x41')]=_[_0x68ef('0x40')](_0x52a8b9[_0x68ef('0x3c')],qs[_0x68ef('0x42')](_0x294fba[_0x68ef('0x3e')]['fields']));_0x32074a[_0x68ef('0x41')]=_0x32074a[_0x68ef('0x41')][_0x68ef('0x43')]?_0x32074a[_0x68ef('0x41')]:_0x52a8b9[_0x68ef('0x3c')];if(!_0x294fba[_0x68ef('0x3e')][_0x68ef('0x44')](_0x68ef('0x45'))){_0x32074a[_0x68ef('0x2e')]=qs['limit'](_0x294fba[_0x68ef('0x3e')][_0x68ef('0x2e')]);_0x32074a[_0x68ef('0x2b')]=qs[_0x68ef('0x2b')](_0x294fba[_0x68ef('0x3e')][_0x68ef('0x2b')]);}_0x32074a[_0x68ef('0x46')]=qs['sort'](_0x294fba[_0x68ef('0x3e')]['sort']);_0x32074a[_0x68ef('0x47')]=qs[_0x68ef('0x3f')](_[_0x68ef('0x48')](_0x294fba[_0x68ef('0x3e')],_0x52a8b9['filters']),_0x3c5de6);if(_0x294fba[_0x68ef('0x3e')]['filter']){_0x32074a[_0x68ef('0x47')]=_['merge'](_0x32074a[_0x68ef('0x47')],{'$or':_[_0x68ef('0x38')](_0x3c5de6,function(_0x105e8c){if(_0x105e8c['type']!=='VIRTUAL'){var _0x4044d5={};_0x4044d5[_0x105e8c[_0x68ef('0x36')]]={'$like':'%'+_0x294fba['query']['filter']+'%'};return _0x4044d5;}})});}_0x32074a=_['merge']({},_0x32074a,_0x294fba[_0x68ef('0x49')]);var _0x15c753={'where':_0x32074a[_0x68ef('0x47')]};return db[_0x68ef('0x4a')][_0x68ef('0x2d')](_0x15c753)['then'](function(_0x55f385){_0x32eddd[_0x68ef('0x2d')]=_0x55f385;if(_0x294fba[_0x68ef('0x3e')][_0x68ef('0x4b')]){_0x32074a[_0x68ef('0x4c')]=[{'all':!![]}];}return db['Trunk'][_0x68ef('0x4d')](_0x32074a);})[_0x68ef('0x1f')](function(_0x1c9b6f){_0x32eddd[_0x68ef('0x4e')]=_0x1c9b6f;return _0x32eddd;})['then'](respondWithFilteredResult(_0x15a6ab,_0x32074a))['catch'](handleError(_0x15a6ab,null));};exports[_0x68ef('0x4f')]=function(_0x3c3074,_0x566e7c){var _0xfc7a74={'raw':![],'where':{'id':_0x3c3074[_0x68ef('0x50')]['id']}},_0x12fff3={};_0x12fff3[_0x68ef('0x3c')]=_[_0x68ef('0x3d')](db['Trunk'][_0x68ef('0x51')]);_0x12fff3[_0x68ef('0x3e')]=_[_0x68ef('0x3d')](_0x3c3074['query']);_0x12fff3[_0x68ef('0x3f')]=_[_0x68ef('0x40')](_0x12fff3[_0x68ef('0x3c')],_0x12fff3['query']);_0xfc7a74[_0x68ef('0x41')]=_['intersection'](_0x12fff3['model'],qs[_0x68ef('0x42')](_0x3c3074['query'][_0x68ef('0x42')]));_0xfc7a74[_0x68ef('0x41')]=_0xfc7a74[_0x68ef('0x41')][_0x68ef('0x43')]?_0xfc7a74[_0x68ef('0x41')]:_0x12fff3[_0x68ef('0x3c')];if(_0x3c3074[_0x68ef('0x3e')][_0x68ef('0x4b')]){_0xfc7a74[_0x68ef('0x4c')]=[{'all':!![]}];}_0xfc7a74=_[_0x68ef('0x52')]({},_0xfc7a74,_0x3c3074['options']);return db['Trunk'][_0x68ef('0x53')](_0xfc7a74)[_0x68ef('0x1f')](handleEntityNotFound(_0x566e7c,null))[_0x68ef('0x1f')](respondWithResult(_0x566e7c,null))[_0x68ef('0x54')](handleError(_0x566e7c,null));};exports[_0x68ef('0x55')]=function(_0x1d11d7,_0x15400c){var _0x300a64={'where':{'id':_0x1d11d7['params']['id']}},_0x40c784={};_0x40c784['model']=_[_0x68ef('0x3d')](db['Trunk'][_0x68ef('0x51')]);_0x300a64['attributes']=_[_0x68ef('0x40')](_0x40c784[_0x68ef('0x3c')],qs['fields'](_0x1d11d7[_0x68ef('0x3e')]['fields']));_0x300a64[_0x68ef('0x41')]=_0x300a64[_0x68ef('0x41')][_0x68ef('0x43')]?_0x300a64[_0x68ef('0x41')]:_0x40c784[_0x68ef('0x3c')];if(_0x1d11d7[_0x68ef('0x3e')]['includeAll']){_0x300a64[_0x68ef('0x4c')]=[{'all':!![]}];}_0x300a64=_[_0x68ef('0x52')]({},_0x300a64,_0x1d11d7[_0x68ef('0x49')]);return db[_0x68ef('0x4a')][_0x68ef('0x53')](_0x300a64)[_0x68ef('0x1f')](handleEntityNotFound(_0x15400c,null))['then'](function(_0x9a978f){if(_0x9a978f){var _0x42d2a3=_0x9a978f['get']({'plain':!![]});_0x42d2a3=qs[_0x68ef('0x56')](_0x42d2a3,['id',_0x68ef('0x57'),_0x68ef('0x58')]);_0x1d11d7['body']=_[_0x68ef('0x56')](_0x1d11d7['body'],['id','createdAt',_0x68ef('0x58')]);return db['Trunk'][_0x68ef('0x59')](_['merge'](_0x42d2a3,_0x1d11d7[_0x68ef('0x5a')]),{'include':_0x1d11d7[_0x68ef('0x3e')][_0x68ef('0x4b')]?[{'all':!![]}]:undefined})[_0x68ef('0x1f')](function(_0x19ce17){var _0x19a9c4=_0x1d11d7['user'][_0x68ef('0x5b')]({'plain':!![]});if(!_0x19a9c4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x19a9c4[_0x68ef('0x5c')]==='user'){var _0x2f97c5=_0x19ce17[_0x68ef('0x5b')]({'plain':!![]});var _0x212ec4=_0x68ef('0x34');return db[_0x68ef('0x5d')][_0x68ef('0x53')]({'where':{'name':_0x212ec4,'userProfileId':_0x19a9c4[_0x68ef('0x5e')]},'raw':!![]})['then'](function(_0x3ea4e7){if(_0x3ea4e7&&_0x3ea4e7[_0x68ef('0x5f')]===0x0){return db[_0x68ef('0x60')][_0x68ef('0x59')]({'name':_0x2f97c5[_0x68ef('0x36')],'resourceId':_0x2f97c5['id'],'type':_0x3ea4e7['name'],'sectionId':_0x3ea4e7['id']},{})[_0x68ef('0x1f')](function(){return _0x19ce17;});}else{return _0x19ce17;}})['catch'](function(_0x1ed172){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ed172);throw _0x1ed172;});}return _0x19ce17;});}})[_0x68ef('0x1f')](respondWithResult(_0x15400c,0xc9))[_0x68ef('0x54')](handleError(_0x15400c,null));};exports[_0x68ef('0x59')]=function(_0x21b2ce,_0x51f905,_0x124b49){var _0x570e0c;return db[_0x68ef('0x4a')][_0x68ef('0x59')](_0x21b2ce[_0x68ef('0x5a')],{'raw':!![]})['then'](function(_0x541e35){_0x570e0c=_0x541e35;return db[_0x68ef('0x4a')][_0x68ef('0x4d')]({'raw':!![]});})[_0x68ef('0x1f')](function(_0x454c6f){var _0x5b41e1=fs[_0x68ef('0x61')](path[_0x68ef('0x62')](config[_0x68ef('0x63')],_0x68ef('0x64')),'utf8');var _0x3f56a7=fs['readFileSync'](path[_0x68ef('0x62')](config[_0x68ef('0x63')],_0x68ef('0x65')),_0x68ef('0x66'));var _0xed16d1=ejs['render'](_0x5b41e1,{'trunks':_0x454c6f||[]});fs[_0x68ef('0x67')](_0x68ef('0x68'),_0xed16d1);if(_0x570e0c[_0x68ef('0x69')]){var _0x595e79=ejs[_0x68ef('0x6a')](_0x3f56a7,{'trunks':_0x454c6f||[]});fs['writeFileSync'](_0x68ef('0x6b'),_0x595e79);}})['then'](function(){return respondWithRpcPromise('Reload',_0x68ef('0x59'),{'module':_0x68ef('0x6c')});})[_0x68ef('0x1f')](function(){var _0x405971=_0x21b2ce['user'][_0x68ef('0x5b')]({'plain':!![]});if(!_0x405971)throw new Error(_0x68ef('0x6d'));if(_0x405971[_0x68ef('0x5c')]==='user'){var _0x3e14a4=_0x570e0c[_0x68ef('0x5b')]({'plain':!![]});return db[_0x68ef('0x5d')][_0x68ef('0x53')]({'where':{'name':_0x68ef('0x34'),'userProfileId':_0x405971[_0x68ef('0x5e')]},'raw':!![]})[_0x68ef('0x1f')](function(_0xfe72dc){if(_0xfe72dc&&_0xfe72dc[_0x68ef('0x5f')]===0x0){return db[_0x68ef('0x60')][_0x68ef('0x59')]({'name':_0x3e14a4[_0x68ef('0x36')],'resourceId':_0x3e14a4['id'],'type':_0xfe72dc['name'],'sectionId':_0xfe72dc['id']},{})[_0x68ef('0x1f')](function(){return _0x570e0c;});}else{return _0x570e0c;}})[_0x68ef('0x54')](function(_0x5db443){logger['error'](_0x68ef('0x6e'),_0x5db443);throw _0x5db443;});}return _0x570e0c;})['then'](respondWithResult(_0x51f905,0xc9))[_0x68ef('0x54')](handleError(_0x51f905,null));};exports[_0x68ef('0x32')]=function(_0x5f1b12,_0x4e0874,_0x31a336){var _0x5c500c;return db[_0x68ef('0x4a')]['find']({'where':{'id':_0x5f1b12[_0x68ef('0x50')]['id']}})['then'](handleEntityNotFound(_0x4e0874,null))[_0x68ef('0x1f')](saveUpdates(_0x5f1b12[_0x68ef('0x5a')],null))['then'](function(_0x3c5e35){if(_0x3c5e35){_0x5c500c=_0x3c5e35;return db[_0x68ef('0x4a')][_0x68ef('0x4d')]({'raw':!![]});}})[_0x68ef('0x1f')](function(_0x50c308){if(_0x50c308){var _0x2bebdc=fs[_0x68ef('0x61')](path['join'](config[_0x68ef('0x63')],_0x68ef('0x64')),_0x68ef('0x66'));var _0x4de1d1=fs[_0x68ef('0x61')](path['join'](config[_0x68ef('0x63')],_0x68ef('0x65')),'utf8');var _0x4b0fb4=ejs['render'](_0x2bebdc,{'trunks':_0x50c308||[]});fs['writeFileSync'](_0x68ef('0x68'),_0x4b0fb4);var _0x28ad22=ejs[_0x68ef('0x6a')](_0x4de1d1,{'trunks':_0x50c308||[]});fs[_0x68ef('0x67')](_0x68ef('0x6b'),_0x28ad22);return respondWithRpcPromise(_0x68ef('0x6f'),_0x68ef('0x32'),{'module':_0x68ef('0x6c')});}return null;})[_0x68ef('0x1f')](function(_0x3ae3e9){if(_0x3ae3e9){return _0x5c500c;}})[_0x68ef('0x1f')](respondWithResult(_0x4e0874,null))[_0x68ef('0x54')](handleError(_0x4e0874,null));};exports[_0x68ef('0x33')]=function(_0x4bd5c3,_0x2b20dc,_0x556dfc){var _0x791181;return db['Trunk']['find']({'where':{'id':_0x4bd5c3[_0x68ef('0x50')]['id']}})[_0x68ef('0x1f')](handleEntityNotFound(_0x2b20dc,null))[_0x68ef('0x1f')](removeEntity(_0x2b20dc,null))[_0x68ef('0x1f')](function(){return db['Trunk']['findAll']({'raw':!![]});})[_0x68ef('0x1f')](function(_0x308997){var _0x1f1dfd=fs['readFileSync'](path[_0x68ef('0x62')](config[_0x68ef('0x63')],_0x68ef('0x64')),_0x68ef('0x66'));var _0x4dc885=fs[_0x68ef('0x61')](path[_0x68ef('0x62')](config[_0x68ef('0x63')],_0x68ef('0x65')),_0x68ef('0x66'));var _0x346049=ejs['render'](_0x1f1dfd,{'trunks':_0x308997});var _0x2a72e8=ejs['render'](_0x4dc885,{'trunks':_0x308997});fs[_0x68ef('0x67')](_0x68ef('0x68'),_0x346049);fs[_0x68ef('0x67')](_0x68ef('0x6b'),_0x2a72e8);return respondWithRpcPromise('Reload',_0x68ef('0x33'),{'module':'chan_sip.so'});})[_0x68ef('0x54')](handleError(_0x2b20dc,null));};
\ No newline at end of file
+var _0x008c=['update','destroy','get','Trunks','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','Trunk','findAll','show','params','includeAll','include','options','clone','find','omit','createdAt','updatedAt','body','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','root','utf8','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','Reload','chan_sip.so','server/files/templates/trunk.ejs','join','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','apply','reject','save'];(function(_0x521e26,_0x20250e){var _0x3162f5=function(_0x19e5b6){while(--_0x19e5b6){_0x521e26['push'](_0x521e26['shift']());}};_0x3162f5(++_0x20250e);}(_0x008c,0x188));var _0xc008=function(_0x5756f8,_0x22b6d5){_0x5756f8=_0x5756f8-0x0;var _0x3bb749=_0x008c[_0x5756f8];return _0x3bb749;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];var jayson=require(_0xc008('0x18'));var client=jayson[_0xc008('0x19')][_0xc008('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x593f7a,_0x560e28,_0x33f44c,_0x50c1ab){return new BPromise(function(_0x25e13f,_0x4584e1){var _0x2073ef=_0x50c1ab||client;return _0x2073ef[_0xc008('0x1b')](_0x593f7a,_0x33f44c)[_0xc008('0x1c')](function(_0x5ee00b){logger['info']('Trunk,\x20%s,\x20%s',_0x560e28,_0xc008('0x1d'));logger[_0xc008('0x1e')](_0xc008('0x1f'),_0x560e28,_0xc008('0x1d'),JSON['stringify'](_0x5ee00b));if(_0x5ee00b['error']){if(_0x5ee00b['error']['code']===0x1f4){logger[_0xc008('0x20')](_0xc008('0x21'),_0x560e28,_0x5ee00b['error'][_0xc008('0x22')]);return _0x4584e1(_0x5ee00b['error']['message']);}logger['error']('Trunk,\x20%s,\x20%s',_0x560e28,_0x5ee00b[_0xc008('0x20')]['message']);return _0x25e13f(_0x5ee00b['error']['message']);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x560e28,_0xc008('0x1d'));_0x25e13f(_0x5ee00b[_0xc008('0x23')][_0xc008('0x22')]);}})[_0xc008('0x24')](function(_0x11cc75){logger[_0xc008('0x20')]('Trunk,\x20%s,\x20%s',_0x560e28,_0x11cc75);_0x4584e1(_0x11cc75);});});}function respondWithStatusCode(_0x459fd9,_0x5c85f2){_0x5c85f2=_0x5c85f2||0xcc;return function(_0x58a6ea){if(_0x58a6ea){return _0x459fd9[_0xc008('0x25')](_0x5c85f2);}return _0x459fd9[_0xc008('0x26')](_0x5c85f2)[_0xc008('0x27')]();};}function respondWithResult(_0x3cb28c,_0x5410f5){_0x5410f5=_0x5410f5||0xc8;return function(_0x48582b){if(_0x48582b){return _0x3cb28c['status'](_0x5410f5)[_0xc008('0x28')](_0x48582b);}};}function respondWithFilteredResult(_0x15dade,_0x92c582){return function(_0x2e31c2){if(_0x2e31c2){var _0x5bebd9=typeof _0x92c582['offset']==='undefined'&&typeof _0x92c582['limit']==='undefined';var _0x3865c0=_0x2e31c2[_0xc008('0x29')];var _0x25eae4=_0x5bebd9?0x0:_0x92c582['offset'];var _0x24c14c=_0x5bebd9?_0x2e31c2[_0xc008('0x29')]:_0x92c582[_0xc008('0x2a')]+_0x92c582[_0xc008('0x2b')];var _0x4c5dec;if(_0x24c14c>=_0x3865c0){_0x24c14c=_0x3865c0;_0x4c5dec=0xc8;}else{_0x4c5dec=0xce;}_0x15dade[_0xc008('0x26')](_0x4c5dec);return _0x15dade[_0xc008('0x2c')]('Content-Range',_0x25eae4+'-'+_0x24c14c+'/'+_0x3865c0)['json'](_0x2e31c2);}return null;};}function patchUpdates(_0x539766){return function(_0x1032b2){try{jsonpatch[_0xc008('0x2d')](_0x1032b2,_0x539766,!![]);}catch(_0xf831f2){return BPromise[_0xc008('0x2e')](_0xf831f2);}return _0x1032b2[_0xc008('0x2f')]();};}function saveUpdates(_0xceebc3,_0x294f97){return function(_0x22d8e8){if(_0x22d8e8){return _0x22d8e8[_0xc008('0x30')](_0xceebc3)[_0xc008('0x1c')](function(_0x2f4b6b){return _0x2f4b6b;});}return null;};}function removeEntity(_0x1ac7c8,_0x596ee8){return function(_0x334a09){if(_0x334a09){return _0x334a09[_0xc008('0x31')]()['then'](function(){var _0xaf4b84=_0x334a09[_0xc008('0x32')]({'plain':!![]});var _0x383be7=_0xc008('0x33');return db[_0xc008('0x34')][_0xc008('0x31')]({'where':{'type':_0x383be7,'resourceId':_0xaf4b84['id']}})[_0xc008('0x1c')](function(){return _0x334a09;});})[_0xc008('0x1c')](function(){_0x1ac7c8[_0xc008('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x415b87,_0x389a40){return function(_0x459df4){if(!_0x459df4){_0x415b87[_0xc008('0x25')](0x194);}return _0x459df4;};}function handleError(_0x40002f,_0x315562){_0x315562=_0x315562||0x1f4;return function(_0x1667a0){logger['error'](_0x1667a0[_0xc008('0x35')]);if(_0x1667a0[_0xc008('0x36')]){delete _0x1667a0['name'];}_0x40002f[_0xc008('0x26')](_0x315562)[_0xc008('0x37')](_0x1667a0);};}exports['index']=function(_0x263473,_0x2e4ae1){var _0x280e9b={},_0x55ff48={},_0x53b353={'count':0x0,'rows':[]};var _0x478810=_[_0xc008('0x38')](db['Trunk'][_0xc008('0x39')],function(_0x3884dd){return{'name':_0x3884dd[_0xc008('0x3a')],'type':_0x3884dd[_0xc008('0x3b')][_0xc008('0x3c')]};});_0x55ff48[_0xc008('0x3d')]=_[_0xc008('0x38')](_0x478810,_0xc008('0x36'));_0x55ff48[_0xc008('0x3e')]=_[_0xc008('0x3f')](_0x263473[_0xc008('0x3e')]);_0x55ff48[_0xc008('0x40')]=_[_0xc008('0x41')](_0x55ff48[_0xc008('0x3d')],_0x55ff48['query']);_0x280e9b[_0xc008('0x42')]=_[_0xc008('0x41')](_0x55ff48[_0xc008('0x3d')],qs[_0xc008('0x43')](_0x263473['query'][_0xc008('0x43')]));_0x280e9b[_0xc008('0x42')]=_0x280e9b[_0xc008('0x42')][_0xc008('0x44')]?_0x280e9b[_0xc008('0x42')]:_0x55ff48['model'];if(!_0x263473[_0xc008('0x3e')][_0xc008('0x45')](_0xc008('0x46'))){_0x280e9b[_0xc008('0x2b')]=qs[_0xc008('0x2b')](_0x263473['query'][_0xc008('0x2b')]);_0x280e9b[_0xc008('0x2a')]=qs[_0xc008('0x2a')](_0x263473[_0xc008('0x3e')]['offset']);}_0x280e9b[_0xc008('0x47')]=qs[_0xc008('0x48')](_0x263473[_0xc008('0x3e')]['sort']);_0x280e9b[_0xc008('0x49')]=qs['filters'](_[_0xc008('0x4a')](_0x263473['query'],_0x55ff48[_0xc008('0x40')]),_0x478810);if(_0x263473[_0xc008('0x3e')]['filter']){_0x280e9b[_0xc008('0x49')]=_[_0xc008('0x4b')](_0x280e9b[_0xc008('0x49')],{'$or':_['map'](_0x478810,function(_0x1cec64){if(_0x1cec64[_0xc008('0x3b')]!==_0xc008('0x4c')){var _0x44fc5d={};_0x44fc5d[_0x1cec64[_0xc008('0x36')]]={'$like':'%'+_0x263473[_0xc008('0x3e')]['filter']+'%'};return _0x44fc5d;}})});}_0x280e9b=_['merge']({},_0x280e9b,_0x263473['options']);var _0x4552ed={'where':_0x280e9b[_0xc008('0x49')]};return db[_0xc008('0x4d')][_0xc008('0x29')](_0x4552ed)[_0xc008('0x1c')](function(_0x24f6a4){_0x53b353[_0xc008('0x29')]=_0x24f6a4;if(_0x263473[_0xc008('0x3e')]['includeAll']){_0x280e9b['include']=[{'all':!![]}];}return db['Trunk'][_0xc008('0x4e')](_0x280e9b);})[_0xc008('0x1c')](function(_0x158eae){_0x53b353['rows']=_0x158eae;return _0x53b353;})[_0xc008('0x1c')](respondWithFilteredResult(_0x2e4ae1,_0x280e9b))[_0xc008('0x24')](handleError(_0x2e4ae1,null));};exports[_0xc008('0x4f')]=function(_0x1c2c50,_0x4981b4){var _0x56e4ac={'raw':![],'where':{'id':_0x1c2c50[_0xc008('0x50')]['id']}},_0x17ec90={};_0x17ec90[_0xc008('0x3d')]=_[_0xc008('0x3f')](db['Trunk']['rawAttributes']);_0x17ec90[_0xc008('0x3e')]=_['keys'](_0x1c2c50[_0xc008('0x3e')]);_0x17ec90[_0xc008('0x40')]=_[_0xc008('0x41')](_0x17ec90['model'],_0x17ec90[_0xc008('0x3e')]);_0x56e4ac[_0xc008('0x42')]=_[_0xc008('0x41')](_0x17ec90[_0xc008('0x3d')],qs[_0xc008('0x43')](_0x1c2c50['query'][_0xc008('0x43')]));_0x56e4ac[_0xc008('0x42')]=_0x56e4ac['attributes'][_0xc008('0x44')]?_0x56e4ac[_0xc008('0x42')]:_0x17ec90['model'];if(_0x1c2c50['query'][_0xc008('0x51')]){_0x56e4ac[_0xc008('0x52')]=[{'all':!![]}];}_0x56e4ac=_[_0xc008('0x4b')]({},_0x56e4ac,_0x1c2c50[_0xc008('0x53')]);return db[_0xc008('0x4d')]['find'](_0x56e4ac)['then'](handleEntityNotFound(_0x4981b4,null))[_0xc008('0x1c')](respondWithResult(_0x4981b4,null))['catch'](handleError(_0x4981b4,null));};exports[_0xc008('0x54')]=function(_0x25d351,_0xf94fcb){var _0x2f1105={'where':{'id':_0x25d351[_0xc008('0x50')]['id']}},_0x44f42d={};_0x44f42d['model']=_[_0xc008('0x3f')](db[_0xc008('0x4d')][_0xc008('0x39')]);_0x2f1105[_0xc008('0x42')]=_[_0xc008('0x41')](_0x44f42d['model'],qs[_0xc008('0x43')](_0x25d351['query']['fields']));_0x2f1105['attributes']=_0x2f1105[_0xc008('0x42')][_0xc008('0x44')]?_0x2f1105[_0xc008('0x42')]:_0x44f42d['model'];if(_0x25d351[_0xc008('0x3e')][_0xc008('0x51')]){_0x2f1105[_0xc008('0x52')]=[{'all':!![]}];}_0x2f1105=_['merge']({},_0x2f1105,_0x25d351[_0xc008('0x53')]);return db[_0xc008('0x4d')][_0xc008('0x55')](_0x2f1105)[_0xc008('0x1c')](handleEntityNotFound(_0xf94fcb,null))['then'](function(_0x4022dd){if(_0x4022dd){var _0x4eaa6d=_0x4022dd[_0xc008('0x32')]({'plain':!![]});_0x4eaa6d=qs[_0xc008('0x56')](_0x4eaa6d,['id',_0xc008('0x57'),_0xc008('0x58')]);_0x25d351[_0xc008('0x59')]=_[_0xc008('0x56')](_0x25d351['body'],['id',_0xc008('0x57'),'updatedAt']);return db['Trunk'][_0xc008('0x5a')](_[_0xc008('0x4b')](_0x4eaa6d,_0x25d351['body']),{'include':_0x25d351[_0xc008('0x3e')][_0xc008('0x51')]?[{'all':!![]}]:undefined})[_0xc008('0x1c')](function(_0x4517c0){var _0x21ee6d=_0x25d351[_0xc008('0x5b')][_0xc008('0x32')]({'plain':!![]});if(!_0x21ee6d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x21ee6d[_0xc008('0x5c')]===_0xc008('0x5b')){var _0x3bfb15=_0x4517c0[_0xc008('0x32')]({'plain':!![]});var _0xb3ca0f=_0xc008('0x33');return db[_0xc008('0x5d')][_0xc008('0x55')]({'where':{'name':_0xb3ca0f,'userProfileId':_0x21ee6d[_0xc008('0x5e')]},'raw':!![]})[_0xc008('0x1c')](function(_0x1bef66){if(_0x1bef66&&_0x1bef66[_0xc008('0x5f')]===0x0){return db[_0xc008('0x34')][_0xc008('0x5a')]({'name':_0x3bfb15['name'],'resourceId':_0x3bfb15['id'],'type':_0x1bef66[_0xc008('0x36')],'sectionId':_0x1bef66['id']},{})[_0xc008('0x1c')](function(){return _0x4517c0;});}else{return _0x4517c0;}})[_0xc008('0x24')](function(_0x566dea){logger[_0xc008('0x20')](_0xc008('0x60'),_0x566dea);throw _0x566dea;});}return _0x4517c0;});}})['then'](respondWithResult(_0xf94fcb,0xc9))['catch'](handleError(_0xf94fcb,null));};exports[_0xc008('0x5a')]=function(_0x2a4c2b,_0x7bad14,_0x39083c){var _0x1a2ce7;return db[_0xc008('0x4d')][_0xc008('0x5a')](_0x2a4c2b[_0xc008('0x59')],{'raw':!![]})[_0xc008('0x1c')](function(_0x1b059b){_0x1a2ce7=_0x1b059b;return db[_0xc008('0x4d')]['findAll']({'raw':!![]});})[_0xc008('0x1c')](function(_0x25a52b){var _0xfdb5e3=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],'server/files/templates/trunk.ejs'),_0xc008('0x63'));var _0x46fa7b=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],_0xc008('0x64')),_0xc008('0x63'));var _0x553f5c=ejs[_0xc008('0x65')](_0xfdb5e3,{'trunks':_0x25a52b||[]});fs['writeFileSync'](_0xc008('0x66'),_0x553f5c);if(_0x1a2ce7[_0xc008('0x67')]){var _0x23012c=ejs[_0xc008('0x65')](_0x46fa7b,{'trunks':_0x25a52b||[]});fs[_0xc008('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x23012c);}})[_0xc008('0x1c')](function(){return respondWithRpcPromise(_0xc008('0x69'),'create',{'module':_0xc008('0x6a')});})['then'](function(){var _0x278cbe=_0x2a4c2b['user'][_0xc008('0x32')]({'plain':!![]});if(!_0x278cbe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x278cbe[_0xc008('0x5c')]===_0xc008('0x5b')){var _0x33d8e4=_0x1a2ce7[_0xc008('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xc008('0x55')]({'where':{'name':_0xc008('0x33'),'userProfileId':_0x278cbe[_0xc008('0x5e')]},'raw':!![]})[_0xc008('0x1c')](function(_0x321500){if(_0x321500&&_0x321500[_0xc008('0x5f')]===0x0){return db[_0xc008('0x34')][_0xc008('0x5a')]({'name':_0x33d8e4['name'],'resourceId':_0x33d8e4['id'],'type':_0x321500[_0xc008('0x36')],'sectionId':_0x321500['id']},{})['then'](function(){return _0x1a2ce7;});}else{return _0x1a2ce7;}})['catch'](function(_0x4c84da){logger[_0xc008('0x20')](_0xc008('0x60'),_0x4c84da);throw _0x4c84da;});}return _0x1a2ce7;})[_0xc008('0x1c')](respondWithResult(_0x7bad14,0xc9))[_0xc008('0x24')](handleError(_0x7bad14,null));};exports[_0xc008('0x30')]=function(_0x2e9646,_0x23ef42,_0x519328){var _0x127bdf;return db['Trunk'][_0xc008('0x55')]({'where':{'id':_0x2e9646[_0xc008('0x50')]['id']}})[_0xc008('0x1c')](handleEntityNotFound(_0x23ef42,null))[_0xc008('0x1c')](saveUpdates(_0x2e9646[_0xc008('0x59')],null))[_0xc008('0x1c')](function(_0x23d4ff){if(_0x23d4ff){_0x127bdf=_0x23d4ff;return db[_0xc008('0x4d')][_0xc008('0x4e')]({'raw':!![]});}})[_0xc008('0x1c')](function(_0x334ed8){if(_0x334ed8){var _0x1dd9fe=fs['readFileSync'](path['join'](config[_0xc008('0x62')],_0xc008('0x6b')),_0xc008('0x63'));var _0x572d93=fs[_0xc008('0x61')](path[_0xc008('0x6c')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x3fc44f=ejs[_0xc008('0x65')](_0x1dd9fe,{'trunks':_0x334ed8||[]});fs[_0xc008('0x68')](_0xc008('0x66'),_0x3fc44f);var _0x1101b8=ejs[_0xc008('0x65')](_0x572d93,{'trunks':_0x334ed8||[]});fs[_0xc008('0x68')](_0xc008('0x6d'),_0x1101b8);return respondWithRpcPromise(_0xc008('0x69'),_0xc008('0x30'),{'module':'chan_sip.so'});}return null;})['then'](function(_0xc644fe){if(_0xc644fe){return _0x127bdf;}})[_0xc008('0x1c')](respondWithResult(_0x23ef42,null))[_0xc008('0x24')](handleError(_0x23ef42,null));};exports[_0xc008('0x31')]=function(_0x2b94b2,_0x37fc2c,_0x4b434f){var _0x5794fe;return db[_0xc008('0x4d')][_0xc008('0x55')]({'where':{'id':_0x2b94b2[_0xc008('0x50')]['id']}})['then'](handleEntityNotFound(_0x37fc2c,null))['then'](removeEntity(_0x37fc2c,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})['then'](function(_0x276de2){var _0x52bf60=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],_0xc008('0x6b')),_0xc008('0x63'));var _0x5bc8b0=fs['readFileSync'](path[_0xc008('0x6c')](config['root'],_0xc008('0x64')),_0xc008('0x63'));var _0x544519=ejs[_0xc008('0x65')](_0x52bf60,{'trunks':_0x276de2});var _0x4db90b=ejs['render'](_0x5bc8b0,{'trunks':_0x276de2});fs[_0xc008('0x68')](_0xc008('0x66'),_0x544519);fs['writeFileSync'](_0xc008('0x6d'),_0x4db90b);return respondWithRpcPromise(_0xc008('0x69'),_0xc008('0x31'),{'module':'chan_sip.so'});})[_0xc008('0x24')](handleError(_0x37fc2c,null));};
\ No newline at end of file
index 3b853ca..ab43d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf935=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./trunk.attributes','exports','define','Trunk','tools_trunks'];(function(_0x3c30a4,_0x152fd6){var _0x4f3e14=function(_0x28d11e){while(--_0x28d11e){_0x3c30a4['push'](_0x3c30a4['shift']());}};_0x4f3e14(++_0x152fd6);}(_0xf935,0xd2));var _0x5f93=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf935[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x5f93('0x0'));var util=require(_0x5f93('0x1'));var logger=require(_0x5f93('0x2'))(_0x5f93('0x3'));var moment=require(_0x5f93('0x4'));var BPromise=require(_0x5f93('0x5'));var rp=require(_0x5f93('0x6'));var fs=require('fs');var path=require(_0x5f93('0x7'));var rimraf=require(_0x5f93('0x8'));var config=require('../../config/environment');var attributes=require(_0x5f93('0x9'));module[_0x5f93('0xa')]=function(_0x4ce685,_0x412db0){return _0x4ce685[_0x5f93('0xb')](_0x5f93('0xc'),attributes,{'tableName':_0x5f93('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62e4=['../../config/environment','exports','Trunk','tools_trunks','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x62e4,0x160));var _0x462e=function(_0x4b58cc,_0x386427){_0x4b58cc=_0x4b58cc-0x0;var _0x3eeb93=_0x62e4[_0x4b58cc];return _0x3eeb93;};'use strict';var _=require('lodash');var util=require(_0x462e('0x0'));var logger=require(_0x462e('0x1'))(_0x462e('0x2'));var moment=require(_0x462e('0x3'));var BPromise=require(_0x462e('0x4'));var rp=require(_0x462e('0x5'));var fs=require('fs');var path=require(_0x462e('0x6'));var rimraf=require(_0x462e('0x7'));var config=require(_0x462e('0x8'));var attributes=require('./trunk.attributes');module[_0x462e('0x9')]=function(_0x2925c0,_0x4ad315){return _0x2925c0['define'](_0x462e('0xa'),attributes,{'tableName':_0x462e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca27a59..b6089b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x273c=['where','ShowTrunk','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','GetTrunk','findAll','options','attributes','limit','include','map','model','Trunk','find','raw'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x273c,0x1a7));var _0xc273=function(_0x3b3750,_0x28f3b8){_0x3b3750=_0x3b3750-0x0;var _0x1b9e8b=_0x273c[_0x3b3750];return _0x1b9e8b;};'use strict';var _=require('lodash');var util=require(_0xc273('0x0'));var moment=require(_0xc273('0x1'));var BPromise=require(_0xc273('0x2'));var rs=require(_0xc273('0x3'));var fs=require('fs');var Redis=require(_0xc273('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc273('0x5'));var logger=require(_0xc273('0x6'))(_0xc273('0x7'));var config=require(_0xc273('0x8'));var jayson=require(_0xc273('0x9'));var client=jayson['client'][_0xc273('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2826a7,_0x15348a,_0x2d9733){return new BPromise(function(_0x178fe4,_0x5d4e3a){return client[_0xc273('0xb')](_0x2826a7,_0x2d9733)[_0xc273('0xc')](function(_0x27c983){logger[_0xc273('0xd')](_0xc273('0xe'),_0x15348a,'request\x20sent');logger[_0xc273('0xf')](_0xc273('0x10'),_0x15348a,_0xc273('0x11'),JSON[_0xc273('0x12')](_0x27c983));if(_0x27c983[_0xc273('0x13')]){if(_0x27c983['error']['code']===0x1f4){logger['error'](_0xc273('0xe'),_0x15348a,_0x27c983[_0xc273('0x13')][_0xc273('0x14')]);return _0x5d4e3a(_0x27c983[_0xc273('0x13')]['message']);}logger[_0xc273('0x13')](_0xc273('0xe'),_0x15348a,_0x27c983['error'][_0xc273('0x14')]);return _0x178fe4(_0x27c983[_0xc273('0x13')][_0xc273('0x14')]);}else{logger[_0xc273('0xd')](_0xc273('0xe'),_0x15348a,'request\x20sent');_0x178fe4(_0x27c983['result'][_0xc273('0x14')]);}})['catch'](function(_0x195a61){logger[_0xc273('0x13')]('Trunk,\x20%s,\x20%s',_0x15348a,_0x195a61);_0x5d4e3a(_0x195a61);});});}exports[_0xc273('0x15')]=function(_0x54f8a5){var _0x2d6c9d=this;return new Promise(function(_0x2528c3,_0x3c10cf){return db['Trunk'][_0xc273('0x16')]({'raw':_0x54f8a5[_0xc273('0x17')]?_0x54f8a5[_0xc273('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x54f8a5[_0xc273('0x17')]?_0x54f8a5[_0xc273('0x17')]['where']||null:null,'attributes':_0x54f8a5[_0xc273('0x17')]?_0x54f8a5[_0xc273('0x17')][_0xc273('0x18')]||null:null,'limit':_0x54f8a5['options']?_0x54f8a5['options'][_0xc273('0x19')]||null:null,'include':_0x54f8a5[_0xc273('0x17')]?_0x54f8a5[_0xc273('0x17')][_0xc273('0x1a')]?_[_0xc273('0x1b')](_0x54f8a5[_0xc273('0x17')]['include'],function(_0x131da1){return{'model':db[_0x131da1[_0xc273('0x1c')]],'as':_0x131da1['as'],'attributes':_0x131da1[_0xc273('0x18')],'include':_0x131da1[_0xc273('0x1a')]?_[_0xc273('0x1b')](_0x131da1[_0xc273('0x1a')],function(_0x421c84){return{'model':db[_0x421c84[_0xc273('0x1c')]],'as':_0x421c84['as'],'attributes':_0x421c84[_0xc273('0x18')],'include':_0x421c84[_0xc273('0x1a')]?_[_0xc273('0x1b')](_0x421c84[_0xc273('0x1a')],function(_0x331028){return{'model':db[_0x331028[_0xc273('0x1c')]],'as':_0x331028['as'],'attributes':_0x331028[_0xc273('0x18')]};}):[]};}):[]};}):[]:[]})[_0xc273('0xc')](function(_0x2fd2c1){logger[_0xc273('0xd')](_0xc273('0x15'),_0x54f8a5);logger[_0xc273('0xf')](_0xc273('0x15'),_0x54f8a5,JSON[_0xc273('0x12')](_0x2fd2c1));_0x2528c3(_0x2fd2c1);})['catch'](function(_0x5b8568){logger['error'](_0xc273('0x15'),_0x5b8568[_0xc273('0x14')],_0x54f8a5);_0x3c10cf(_0x2d6c9d[_0xc273('0x13')](0x1f4,_0x5b8568['message']));});});};exports['ShowTrunk']=function(_0x4bfe9f){var _0xa2d87b=this;return new Promise(function(_0x28582a,_0x2dd6b8){return db[_0xc273('0x1d')][_0xc273('0x1e')]({'raw':_0x4bfe9f[_0xc273('0x17')]?_0x4bfe9f[_0xc273('0x17')][_0xc273('0x1f')]===undefined?!![]:![]:!![],'where':_0x4bfe9f[_0xc273('0x17')]?_0x4bfe9f['options'][_0xc273('0x20')]||null:null,'attributes':_0x4bfe9f[_0xc273('0x17')]?_0x4bfe9f['options'][_0xc273('0x18')]||null:null,'include':_0x4bfe9f[_0xc273('0x17')]?_0x4bfe9f[_0xc273('0x17')][_0xc273('0x1a')]?_['map'](_0x4bfe9f[_0xc273('0x17')][_0xc273('0x1a')],function(_0x395284){return{'model':db[_0x395284['model']],'as':_0x395284['as'],'attributes':_0x395284[_0xc273('0x18')],'include':_0x395284['include']?_[_0xc273('0x1b')](_0x395284[_0xc273('0x1a')],function(_0x3928ff){return{'model':db[_0x3928ff[_0xc273('0x1c')]],'as':_0x3928ff['as'],'attributes':_0x3928ff['attributes'],'include':_0x3928ff[_0xc273('0x1a')]?_['map'](_0x3928ff[_0xc273('0x1a')],function(_0x1fe6c6){return{'model':db[_0x1fe6c6[_0xc273('0x1c')]],'as':_0x1fe6c6['as'],'attributes':_0x1fe6c6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4c584c){logger[_0xc273('0xd')](_0xc273('0x21'),_0x4bfe9f);logger[_0xc273('0xf')](_0xc273('0x21'),_0x4bfe9f,JSON[_0xc273('0x12')](_0x4c584c));_0x28582a(_0x4c584c);})[_0xc273('0x22')](function(_0xbfb1ba){logger[_0xc273('0x13')]('ShowTrunk',_0xbfb1ba['message'],_0x4bfe9f);_0x2dd6b8(_0xa2d87b['error'](0x1f4,_0xbfb1ba[_0xc273('0x14')]));});});};
\ No newline at end of file
+var _0xc91e=['request\x20sent','debug','stringify','error','code','Trunk,\x20%s,\x20%s','message','info','result','catch','GetTrunk','Trunk','options','raw','where','attributes','include','map','model','ShowTrunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then'];(function(_0x2586ad,_0x3a2816){var _0x4128db=function(_0x209119){while(--_0x209119){_0x2586ad['push'](_0x2586ad['shift']());}};_0x4128db(++_0x3a2816);}(_0xc91e,0xa1));var _0xec91=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc91e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xec91('0x0'));var util=require(_0xec91('0x1'));var moment=require(_0xec91('0x2'));var BPromise=require(_0xec91('0x3'));var rs=require(_0xec91('0x4'));var fs=require('fs');var Redis=require(_0xec91('0x5'));var db=require(_0xec91('0x6'))['db'];var utils=require(_0xec91('0x7'));var logger=require(_0xec91('0x8'))(_0xec91('0x9'));var config=require(_0xec91('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xec91('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x654f04,_0x171ad9,_0x12fbdf){return new BPromise(function(_0x14619e,_0x2a683b){return client[_0xec91('0xc')](_0x654f04,_0x12fbdf)[_0xec91('0xd')](function(_0x55e251){logger['info']('Trunk,\x20%s,\x20%s',_0x171ad9,_0xec91('0xe'));logger[_0xec91('0xf')]('Trunk,\x20%s,\x20%s,\x20%s',_0x171ad9,_0xec91('0xe'),JSON[_0xec91('0x10')](_0x55e251));if(_0x55e251[_0xec91('0x11')]){if(_0x55e251[_0xec91('0x11')][_0xec91('0x12')]===0x1f4){logger[_0xec91('0x11')](_0xec91('0x13'),_0x171ad9,_0x55e251[_0xec91('0x11')][_0xec91('0x14')]);return _0x2a683b(_0x55e251[_0xec91('0x11')][_0xec91('0x14')]);}logger[_0xec91('0x11')]('Trunk,\x20%s,\x20%s',_0x171ad9,_0x55e251['error'][_0xec91('0x14')]);return _0x14619e(_0x55e251[_0xec91('0x11')]['message']);}else{logger[_0xec91('0x15')](_0xec91('0x13'),_0x171ad9,_0xec91('0xe'));_0x14619e(_0x55e251[_0xec91('0x16')]['message']);}})[_0xec91('0x17')](function(_0x6e3cc7){logger['error'](_0xec91('0x13'),_0x171ad9,_0x6e3cc7);_0x2a683b(_0x6e3cc7);});});}exports[_0xec91('0x18')]=function(_0x1ac78b){var _0x10944e=this;return new Promise(function(_0x7f41d8,_0x215930){return db[_0xec91('0x19')]['findAll']({'raw':_0x1ac78b[_0xec91('0x1a')]?_0x1ac78b[_0xec91('0x1a')][_0xec91('0x1b')]===undefined?!![]:![]:!![],'where':_0x1ac78b[_0xec91('0x1a')]?_0x1ac78b[_0xec91('0x1a')][_0xec91('0x1c')]||null:null,'attributes':_0x1ac78b[_0xec91('0x1a')]?_0x1ac78b[_0xec91('0x1a')][_0xec91('0x1d')]||null:null,'limit':_0x1ac78b[_0xec91('0x1a')]?_0x1ac78b[_0xec91('0x1a')]['limit']||null:null,'include':_0x1ac78b[_0xec91('0x1a')]?_0x1ac78b[_0xec91('0x1a')][_0xec91('0x1e')]?_[_0xec91('0x1f')](_0x1ac78b[_0xec91('0x1a')]['include'],function(_0x10eaaf){return{'model':db[_0x10eaaf[_0xec91('0x20')]],'as':_0x10eaaf['as'],'attributes':_0x10eaaf[_0xec91('0x1d')],'include':_0x10eaaf[_0xec91('0x1e')]?_[_0xec91('0x1f')](_0x10eaaf[_0xec91('0x1e')],function(_0x101b54){return{'model':db[_0x101b54[_0xec91('0x20')]],'as':_0x101b54['as'],'attributes':_0x101b54[_0xec91('0x1d')],'include':_0x101b54['include']?_['map'](_0x101b54[_0xec91('0x1e')],function(_0x2290bc){return{'model':db[_0x2290bc[_0xec91('0x20')]],'as':_0x2290bc['as'],'attributes':_0x2290bc[_0xec91('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8154a9){logger['info']('GetTrunk',_0x1ac78b);logger[_0xec91('0xf')](_0xec91('0x18'),_0x1ac78b,JSON[_0xec91('0x10')](_0x8154a9));_0x7f41d8(_0x8154a9);})[_0xec91('0x17')](function(_0x1ce965){logger['error'](_0xec91('0x18'),_0x1ce965[_0xec91('0x14')],_0x1ac78b);_0x215930(_0x10944e[_0xec91('0x11')](0x1f4,_0x1ce965['message']));});});};exports[_0xec91('0x21')]=function(_0xe81d9a){var _0x124dde=this;return new Promise(function(_0x1a417e,_0x332b5a){return db[_0xec91('0x19')][_0xec91('0x22')]({'raw':_0xe81d9a['options']?_0xe81d9a['options'][_0xec91('0x1b')]===undefined?!![]:![]:!![],'where':_0xe81d9a[_0xec91('0x1a')]?_0xe81d9a[_0xec91('0x1a')][_0xec91('0x1c')]||null:null,'attributes':_0xe81d9a[_0xec91('0x1a')]?_0xe81d9a['options']['attributes']||null:null,'include':_0xe81d9a['options']?_0xe81d9a['options']['include']?_[_0xec91('0x1f')](_0xe81d9a['options'][_0xec91('0x1e')],function(_0x452f5c){return{'model':db[_0x452f5c[_0xec91('0x20')]],'as':_0x452f5c['as'],'attributes':_0x452f5c[_0xec91('0x1d')],'include':_0x452f5c[_0xec91('0x1e')]?_[_0xec91('0x1f')](_0x452f5c['include'],function(_0x98f22b){return{'model':db[_0x98f22b[_0xec91('0x20')]],'as':_0x98f22b['as'],'attributes':_0x98f22b['attributes'],'include':_0x98f22b[_0xec91('0x1e')]?_[_0xec91('0x1f')](_0x98f22b[_0xec91('0x1e')],function(_0x3c4ae8){return{'model':db[_0x3c4ae8[_0xec91('0x20')]],'as':_0x3c4ae8['as'],'attributes':_0x3c4ae8['attributes']};}):[]};}):[]};}):[]:[]})[_0xec91('0xd')](function(_0x1a06fa){logger[_0xec91('0x15')](_0xec91('0x21'),_0xe81d9a);logger[_0xec91('0xf')]('ShowTrunk',_0xe81d9a,JSON[_0xec91('0x10')](_0x1a06fa));_0x1a417e(_0x1a06fa);})['catch'](function(_0x416fd3){logger['error'](_0xec91('0x21'),_0x416fd3[_0xec91('0x14')],_0xe81d9a);_0x332b5a(_0x124dde[_0xec91('0x11')](0x1f4,_0x416fd3[_0xec91('0x14')]));});});};
\ No newline at end of file
index 25ad788..798c5c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa073=['Router','../../components/auth/service','./user-setting.controller','/:id','isAuthenticated','exports','express'];(function(_0x4aca84,_0x5f56c9){var _0x1e3cd9=function(_0x25a0fe){while(--_0x25a0fe){_0x4aca84['push'](_0x4aca84['shift']());}};_0x1e3cd9(++_0x5f56c9);}(_0xa073,0xe6));var _0x3a07=function(_0x369f58,_0x2455d1){_0x369f58=_0x369f58-0x0;var _0x38ab7c=_0xa073[_0x369f58];return _0x38ab7c;};'use strict';var express=require(_0x3a07('0x0'));var router=express[_0x3a07('0x1')]();var auth=require(_0x3a07('0x2'));var controller=require(_0x3a07('0x3'));router['put'](_0x3a07('0x4'),auth[_0x3a07('0x5')](),controller['update']);module[_0x3a07('0x6')]=router;
\ No newline at end of file
+var _0xc556=['../../components/auth/service','./user-setting.controller','put','/:id','update','exports','express'];(function(_0x2c5594,_0x3c6a36){var _0x1825fb=function(_0x3850fe){while(--_0x3850fe){_0x2c5594['push'](_0x2c5594['shift']());}};_0x1825fb(++_0x3c6a36);}(_0xc556,0xe6));var _0x6c55=function(_0x38077a,_0x7da0ed){_0x38077a=_0x38077a-0x0;var _0xbbd4c=_0xc556[_0x38077a];return _0xbbd4c;};'use strict';var express=require(_0x6c55('0x0'));var router=express['Router']();var auth=require(_0x6c55('0x1'));var controller=require(_0x6c55('0x2'));router[_0x6c55('0x3')](_0x6c55('0x4'),auth['isAuthenticated'](),controller[_0x6c55('0x5')]);module[_0x6c55('0x6')]=router;
\ No newline at end of file
index d6c67ba..29e745e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf028=['ENUM','BOOLEAN','DATE','UserId','sequelize','error','warning','exports'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xf028,0xbc));var _0x8f02=function(_0x4b0911,_0x267154){_0x4b0911=_0x4b0911-0x0;var _0x3056d0=_0xf028[_0x4b0911];return _0x3056d0;};'use strict';var Sequelize=require(_0x8f02('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x8f02('0x1'),_0x8f02('0x2'),'info','debug'];module[_0x8f02('0x3')]={'clientSideLoggingLevel':{'type':Sequelize[_0x8f02('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x8f02('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x8f02('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x8f02('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':_0x8f02('0x7')}};
\ No newline at end of file
+var _0x0610=['debug','error','TEXT','DATE','INTEGER','UserId','sequelize','warning'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0610,0xf6));var _0x0061=function(_0x2157e9,_0x592098){_0x2157e9=_0x2157e9-0x0;var _0x371f57=_0x0610[_0x2157e9];return _0x371f57;};'use strict';var Sequelize=require(_0x0061('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error',_0x0061('0x1'),'info',_0x0061('0x2')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize['ENUM'](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x0061('0x3'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x0061('0x4')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x0061('0x5')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x0061('0x6')],'unique':_0x0061('0x7')}};
\ No newline at end of file
index c144b0d..df14efe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1280=['socket.io-emitter','redis','./user-setting.socket','defaults','status','update','error','stack','name','user','role','admin','Unauthorized','params','UserSetting','find','then','catch','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb'];(function(_0x3f88bc,_0xe38cf5){var _0x4df1c4=function(_0x111de1){while(--_0x111de1){_0x3f88bc['push'](_0x3f88bc['shift']());}};_0x4df1c4(++_0xe38cf5);}(_0x1280,0xba));var _0x0128=function(_0x316904,_0x1e8b77){_0x316904=_0x316904-0x0;var _0xfa9a21=_0x1280[_0x316904];return _0xfa9a21;};'use strict';var _=require(_0x0128('0x0'));var Redis=require(_0x0128('0x1'));var logger=require(_0x0128('0x2'))(_0x0128('0x3'));var config=require(_0x0128('0x4'));var db=require(_0x0128('0x5'))['db'];var socket=require(_0x0128('0x6'))(new Redis(config[_0x0128('0x7')]));require(_0x0128('0x8'))['register'](socket);config[_0x0128('0x7')]=_[_0x0128('0x9')](config['redis'],{'host':'localhost','port':0x18eb});function respondWithResult(_0x34dd09,_0x175932){_0x175932=_0x175932||0xc8;return function(_0x79484c){if(_0x79484c){return _0x34dd09[_0x0128('0xa')](_0x175932)['json'](_0x79484c);}};}function saveUpdates(_0x5d8263){return function(_0x1ae719){if(_0x1ae719){return _0x1ae719[_0x0128('0xb')](_0x5d8263)['then'](function(_0x233cb9){return _0x233cb9;});}return null;};}function handleEntityNotFound(_0x283be2){return function(_0x3b4d4c){if(!_0x3b4d4c){_0x283be2['sendStatus'](0x194);}return _0x3b4d4c;};}function handleError(_0x1b1234,_0x32d5d2){_0x32d5d2=_0x32d5d2||0x1f4;return function(_0x1faf8c){logger[_0x0128('0xc')](_0x1faf8c[_0x0128('0xd')]);if(_0x1faf8c[_0x0128('0xe')]){delete _0x1faf8c[_0x0128('0xe')];}_0x1b1234[_0x0128('0xa')](_0x32d5d2)['send'](_0x1faf8c);};}exports[_0x0128('0xb')]=function(_0x53af5d,_0x4d3c1e){if(_0x53af5d[_0x0128('0xf')][_0x0128('0x10')]!==_0x0128('0x11'))throw new Error(_0x0128('0x12'));if(isNaN(Number(_0x53af5d[_0x0128('0x13')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0x0128('0x14')][_0x0128('0x15')]({'where':{'id':_0x53af5d[_0x0128('0x13')]['id']}})['then'](handleEntityNotFound(_0x4d3c1e,null))['then'](saveUpdates(_0x53af5d['body'],null))[_0x0128('0x16')](respondWithResult(_0x4d3c1e,null))[_0x0128('0x17')](handleError(_0x4d3c1e,null));};
\ No newline at end of file
+var _0x8bdf=['stack','name','user','role','admin','UserSetting','find','then','body','lodash','ioredis','../../config/logger','api','../../config/environment','socket.io-emitter','redis','./user-setting.socket','register','defaults','status','json','update','sendStatus'];(function(_0xce5ed0,_0x1a8206){var _0x42820c=function(_0x300bfd){while(--_0x300bfd){_0xce5ed0['push'](_0xce5ed0['shift']());}};_0x42820c(++_0x1a8206);}(_0x8bdf,0x1a7));var _0xf8bd=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x8bdf[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0xf8bd('0x0'));var Redis=require(_0xf8bd('0x1'));var logger=require(_0xf8bd('0x2'))(_0xf8bd('0x3'));var config=require(_0xf8bd('0x4'));var db=require('../../mysqldb')['db'];var socket=require(_0xf8bd('0x5'))(new Redis(config[_0xf8bd('0x6')]));require(_0xf8bd('0x7'))[_0xf8bd('0x8')](socket);config[_0xf8bd('0x6')]=_[_0xf8bd('0x9')](config['redis'],{'host':'localhost','port':0x18eb});function respondWithResult(_0x504c82,_0x3ee99e){_0x3ee99e=_0x3ee99e||0xc8;return function(_0x22a277){if(_0x22a277){return _0x504c82[_0xf8bd('0xa')](_0x3ee99e)[_0xf8bd('0xb')](_0x22a277);}};}function saveUpdates(_0x4a44c3){return function(_0x1e94b9){if(_0x1e94b9){return _0x1e94b9[_0xf8bd('0xc')](_0x4a44c3)['then'](function(_0x1d1c53){return _0x1d1c53;});}return null;};}function handleEntityNotFound(_0x249ace){return function(_0x53cbc3){if(!_0x53cbc3){_0x249ace[_0xf8bd('0xd')](0x194);}return _0x53cbc3;};}function handleError(_0x2c99a6,_0x20a3f7){_0x20a3f7=_0x20a3f7||0x1f4;return function(_0x37e0db){logger['error'](_0x37e0db[_0xf8bd('0xe')]);if(_0x37e0db[_0xf8bd('0xf')]){delete _0x37e0db['name'];}_0x2c99a6[_0xf8bd('0xa')](_0x20a3f7)['send'](_0x37e0db);};}exports[_0xf8bd('0xc')]=function(_0x26513e,_0x1ac69b){if(_0x26513e[_0xf8bd('0x10')][_0xf8bd('0x11')]!==_0xf8bd('0x12'))throw new Error('Unauthorized');if(isNaN(Number(_0x26513e['params']['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0xf8bd('0x13')][_0xf8bd('0x14')]({'where':{'id':_0x26513e['params']['id']}})[_0xf8bd('0x15')](handleEntityNotFound(_0x1ac69b,null))[_0xf8bd('0x15')](saveUpdates(_0x26513e[_0xf8bd('0x16')],null))[_0xf8bd('0x15')](respondWithResult(_0x1ac69b,null))['catch'](handleError(_0x1ac69b,null));};
\ No newline at end of file
index e4eee46..9822d3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ed9=['setMaxListeners','update','remove','emit','hook','exports','events','../../mysqldb','UserSetting'];(function(_0x4ad5d7,_0x707692){var _0x5300a6=function(_0x51ffc4){while(--_0x51ffc4){_0x4ad5d7['push'](_0x4ad5d7['shift']());}};_0x5300a6(++_0x707692);}(_0x2ed9,0x72));var _0x92ed=function(_0x361933,_0x22b5b7){_0x361933=_0x361933-0x0;var _0x1d1b30=_0x2ed9[_0x361933];return _0x1d1b30;};'use strict';var EventEmitter=require(_0x92ed('0x0'));var UserSetting=require(_0x92ed('0x1'))['db'][_0x92ed('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x92ed('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x92ed('0x4'),'afterDestroy':_0x92ed('0x5')};function emitEvent(_0x1a56f2){return function(_0x3d2d4f,_0x505aa8,_0x1e959c){UserSettingEvents['emit'](_0x1a56f2+':'+_0x3d2d4f['id'],_0x3d2d4f);UserSettingEvents[_0x92ed('0x6')](_0x1a56f2,_0x3d2d4f);_0x1e959c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0x92ed('0x7')](e,emitEvent(event));}}module[_0x92ed('0x8')]=UserSettingEvents;
\ No newline at end of file
+var _0xafaf=['UserSetting','setMaxListeners','save','update','remove','emit','hook','exports','../../mysqldb'];(function(_0x49babc,_0x4ab594){var _0x21dfd6=function(_0x191891){while(--_0x191891){_0x49babc['push'](_0x49babc['shift']());}};_0x21dfd6(++_0x4ab594);}(_0xafaf,0xd7));var _0xfafa=function(_0x3dd456,_0x20bf09){_0x3dd456=_0x3dd456-0x0;var _0x2df8c3=_0xafaf[_0x3dd456];return _0x2df8c3;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0xfafa('0x0'))['db'][_0xfafa('0x1')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xfafa('0x2')](0x0);var events={'afterCreate':_0xfafa('0x3'),'afterUpdate':_0xfafa('0x4'),'afterDestroy':_0xfafa('0x5')};function emitEvent(_0x399444){return function(_0x2513ae,_0x5bff0b,_0x2f38dd){UserSettingEvents[_0xfafa('0x6')](_0x399444+':'+_0x2513ae['id'],_0x2513ae);UserSettingEvents[_0xfafa('0x6')](_0x399444,_0x2513ae);_0x2f38dd(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0xfafa('0x7')](e,emitEvent(event));}}module[_0xfafa('0x8')]=UserSettingEvents;
\ No newline at end of file
index 8fc851a..bd3dd51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceb0=['clientSideLoggingEnabled','clientSideLoggingEnabledSince','UserSetting'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0xceb0,0x173));var _0x0ceb=function(_0x57f7d3,_0x4fe51f){_0x57f7d3=_0x57f7d3-0x0;var _0x174618=_0xceb0[_0x57f7d3];return _0x174618;};'use strict';var attributes=require('./user-setting.attributes');module['exports']=function(_0x54382b){return _0x54382b['define'](_0x0ceb('0x0'),attributes,{'tableName':'user_settings','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1659e3){if(!_0x1659e3[_0x0ceb('0x1')])_0x1659e3[_0x0ceb('0x2')]=null;else if(_0x1659e3['clientSideLoggingEnabledSince']===null)_0x1659e3['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
+var _0x89c4=['./user-setting.attributes','exports','define','clientSideLoggingEnabled','clientSideLoggingEnabledSince'];(function(_0x3d131a,_0x2ee691){var _0x44c22d=function(_0xa7a9fe){while(--_0xa7a9fe){_0x3d131a['push'](_0x3d131a['shift']());}};_0x44c22d(++_0x2ee691);}(_0x89c4,0x82));var _0x489c=function(_0x41e8aa,_0x6a2694){_0x41e8aa=_0x41e8aa-0x0;var _0x26be32=_0x89c4[_0x41e8aa];return _0x26be32;};'use strict';var attributes=require(_0x489c('0x0'));module[_0x489c('0x1')]=function(_0x55c4f5){return _0x55c4f5[_0x489c('0x2')]('UserSetting',attributes,{'tableName':'user_settings','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x165089){if(!_0x165089[_0x489c('0x3')])_0x165089[_0x489c('0x4')]=null;else if(_0x165089[_0x489c('0x4')]===null)_0x165089[_0x489c('0x4')]=new Date();}}});};
\ No newline at end of file
index b699b21..7866917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5815=['emit','user-setting:update','UserId','register','length','user-setting:','./user-setting.events','save','update'];(function(_0x3e8ef0,_0x2630ce){var _0x12abd5=function(_0x133947){while(--_0x133947){_0x3e8ef0['push'](_0x3e8ef0['shift']());}};_0x12abd5(++_0x2630ce);}(_0x5815,0x15c));var _0x5581=function(_0x511e3f,_0xb2c5a8){_0x511e3f=_0x511e3f-0x0;var _0x50060e=_0x5815[_0x511e3f];return _0x50060e;};'use strict';var UserSettingEvents=require(_0x5581('0x0'));var events=[_0x5581('0x1'),'remove',_0x5581('0x2')];function createListener(_0x3269e9,_0x4e1dad){return function(_0x530079){_0x4e1dad[_0x5581('0x3')](_0x3269e9,_0x530079);if(_0x3269e9===_0x5581('0x4')){_0x4e1dad['emit']('user-setting:update:user-'+_0x530079[_0x5581('0x5')],_0x530079);}};}exports[_0x5581('0x6')]=function(_0x1350e0){for(var _0x5567b1=0x0,_0x1c6731=events[_0x5581('0x7')];_0x5567b1<_0x1c6731;_0x5567b1++){var _0x59b159=events[_0x5567b1];var _0x37b95f=createListener(_0x5581('0x8')+_0x59b159,_0x1350e0);UserSettingEvents['on'](_0x59b159,_0x37b95f);}};
\ No newline at end of file
+var _0x8e13=['UserId','register','length','user-setting:','./user-setting.events','save','remove','update','user-setting:update','emit','user-setting:update:user-'];(function(_0x4dddd4,_0x309ae8){var _0x16219e=function(_0x3d1853){while(--_0x3d1853){_0x4dddd4['push'](_0x4dddd4['shift']());}};_0x16219e(++_0x309ae8);}(_0x8e13,0x164));var _0x38e1=function(_0x42c306,_0x368ef7){_0x42c306=_0x42c306-0x0;var _0x4f2aeb=_0x8e13[_0x42c306];return _0x4f2aeb;};'use strict';var UserSettingEvents=require(_0x38e1('0x0'));var events=[_0x38e1('0x1'),_0x38e1('0x2'),_0x38e1('0x3')];function createListener(_0xde8104,_0x4e0875){return function(_0x395a5a){_0x4e0875['emit'](_0xde8104,_0x395a5a);if(_0xde8104===_0x38e1('0x4')){_0x4e0875[_0x38e1('0x5')](_0x38e1('0x6')+_0x395a5a[_0x38e1('0x7')],_0x395a5a);}};}exports[_0x38e1('0x8')]=function(_0x55dc28){for(var _0x28f886=0x0,_0x322699=events[_0x38e1('0x9')];_0x28f886<_0x322699;_0x28f886++){var _0x437f49=events[_0x28f886];var _0x4678fe=createListener(_0x38e1('0xa')+_0x437f49,_0x55dc28);UserSettingEvents['on'](_0x437f49,_0x4678fe);}};
\ No newline at end of file
index c11619a..f38d5ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3451=['%s-%s','now','originalname','single','file','addAvatar','/:id/login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','addSmsAccounts','createApiKey','/:id','put','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','describe','/whoami','getPresence','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getContacts','/: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','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','/create_many','bulkCreate','addQueues','diskStorage','format'];(function(_0xd04611,_0x6f7365){var _0x72e2db=function(_0x349948){while(--_0x349948){_0xd04611['push'](_0xd04611['shift']());}};_0x72e2db(++_0x6f7365);}(_0x3451,0x19a));var _0x1345=function(_0x1458c7,_0x29eee6){_0x1458c7=_0x1458c7-0x0;var _0x7e708b=_0x3451[_0x1458c7];return _0x7e708b;};'use strict';var multer=require(_0x1345('0x0'));var util=require(_0x1345('0x1'));var path=require('path');var timeout=require(_0x1345('0x2'));var express=require(_0x1345('0x3'));var router=express[_0x1345('0x4')]();var fs_extra=require(_0x1345('0x5'));var auth=require(_0x1345('0x6'));var interaction=require(_0x1345('0x7'));var config=require(_0x1345('0x8'));var controller=require(_0x1345('0x9'));router[_0x1345('0xa')]('/',auth[_0x1345('0xb')](),controller[_0x1345('0xc')]);router[_0x1345('0xa')]('/describe',auth[_0x1345('0xb')](),controller[_0x1345('0xd')]);router['get'](_0x1345('0xe'),auth['isAuthenticated'](),controller['whoami']);router[_0x1345('0xa')]('/presence',auth[_0x1345('0xb')](),controller[_0x1345('0xf')]);router['get']('/:id',auth[_0x1345('0xb')](),controller['show']);router[_0x1345('0xa')](_0x1345('0x10'),controller[_0x1345('0x11')]);router[_0x1345('0xa')]('/:id/open_tabs',auth[_0x1345('0xb')](),controller[_0x1345('0x12')]);router[_0x1345('0xa')](_0x1345('0x13'),auth['isAuthenticated'](),controller[_0x1345('0x14')]);router[_0x1345('0xa')](_0x1345('0x15'),auth[_0x1345('0xb')](),controller[_0x1345('0x16')]);router[_0x1345('0xa')](_0x1345('0x17'),auth[_0x1345('0xb')](),controller[_0x1345('0x18')]);router[_0x1345('0xa')](_0x1345('0x19'),auth['isAuthenticated'](),controller['getGroups']);router[_0x1345('0xa')](_0x1345('0x1a'),auth[_0x1345('0xb')](),controller[_0x1345('0x1b')]);router['get'](_0x1345('0x1c'),auth[_0x1345('0xb')](),controller[_0x1345('0x1d')]);router[_0x1345('0xa')](_0x1345('0x1e'),auth[_0x1345('0xb')](),controller[_0x1345('0x1f')]);router[_0x1345('0xa')](_0x1345('0x20'),auth[_0x1345('0xb')](),controller[_0x1345('0x21')]);router['get'](_0x1345('0x22'),auth[_0x1345('0xb')](),controller[_0x1345('0x23')]);router[_0x1345('0xa')](_0x1345('0x24'),auth[_0x1345('0xb')](),controller[_0x1345('0x25')]);router[_0x1345('0xa')](_0x1345('0x26'),auth[_0x1345('0xb')](),controller[_0x1345('0x27')]);router[_0x1345('0xa')](_0x1345('0x28'),auth['isAuthenticated'](),controller[_0x1345('0x29')]);router['get'](_0x1345('0x2a'),auth[_0x1345('0xb')](),controller[_0x1345('0x2b')]);router[_0x1345('0xa')](_0x1345('0x2c'),auth[_0x1345('0xb')](),controller[_0x1345('0x2d')]);router[_0x1345('0xa')](_0x1345('0x2e'),auth[_0x1345('0xb')](),controller[_0x1345('0x2f')]);router[_0x1345('0xa')]('/:id/prefixes',auth[_0x1345('0xb')](),controller['getVoicePrefixes']);router['get'](_0x1345('0x30'),auth[_0x1345('0xb')](),controller[_0x1345('0x31')]);router[_0x1345('0xa')](_0x1345('0x32'),auth['isAuthenticated'](),controller[_0x1345('0x33')]);router[_0x1345('0xa')](_0x1345('0x34'),auth['isAuthenticated'](),controller[_0x1345('0x35')]);router['get']('/:id/sms_accounts',auth[_0x1345('0xb')](),controller[_0x1345('0x36')]);router[_0x1345('0xa')](_0x1345('0x37'),auth['isAuthenticated'](),controller[_0x1345('0x38')]);router[_0x1345('0xa')](_0x1345('0x39'),auth[_0x1345('0xb')](),controller[_0x1345('0x3a')]);router[_0x1345('0xa')](_0x1345('0x3b'),auth[_0x1345('0xb')](),controller[_0x1345('0x3c')]);router[_0x1345('0xa')](_0x1345('0x3d'),auth['isAuthenticated'](),controller[_0x1345('0x3e')]);router[_0x1345('0x3f')](_0x1345('0x13'),auth[_0x1345('0xb')](),controller[_0x1345('0x40')]);router['post']('/',auth[_0x1345('0xb')](),controller['create']);router['post'](_0x1345('0x41'),auth[_0x1345('0xb')](),controller[_0x1345('0x42')]);router['post'](_0x1345('0x15'),auth[_0x1345('0xb')](),controller[_0x1345('0x43')]);var upload=multer({'storage':multer[_0x1345('0x44')]({'destination':function(_0x3cf188,_0x358e97,_0x7ca9c8){_0x7ca9c8(null,path['join'](config['root'],'server/files/images/'));},'filename':function(_0x4e235b,_0x518ef2,_0x30baac){_0x30baac(null,util[_0x1345('0x45')](_0x1345('0x46'),Date[_0x1345('0x47')](),_0x518ef2[_0x1345('0x48')]));}})});router['post']('/:id/avatar',upload[_0x1345('0x49')](_0x1345('0x4a')),controller[_0x1345('0x4b')]);router[_0x1345('0x3f')](_0x1345('0x4c'),auth[_0x1345('0xb')](),controller['login']);router[_0x1345('0x3f')](_0x1345('0x4d'),auth[_0x1345('0xb')](),controller[_0x1345('0x4e')]);router['post'](_0x1345('0x4f'),auth[_0x1345('0xb')](),controller[_0x1345('0x50')]);router['post'](_0x1345('0x51'),auth[_0x1345('0xb')](),controller[_0x1345('0x52')]);router['post'](_0x1345('0x2a'),auth[_0x1345('0xb')](),controller[_0x1345('0x53')]);router[_0x1345('0x3f')](_0x1345('0x54'),auth['isAuthenticated'](),controller[_0x1345('0x55')]);router[_0x1345('0x3f')](_0x1345('0x56'),auth[_0x1345('0xb')](),controller['addMailInteractions']);router[_0x1345('0x3f')](_0x1345('0x57'),auth[_0x1345('0xb')](),controller[_0x1345('0x58')]);router[_0x1345('0x3f')](_0x1345('0x59'),auth[_0x1345('0xb')](),controller[_0x1345('0x5a')]);router[_0x1345('0x3f')](_0x1345('0x5b'),auth[_0x1345('0xb')](),controller[_0x1345('0x5c')]);router[_0x1345('0x3f')](_0x1345('0x5d'),auth[_0x1345('0xb')](),controller[_0x1345('0x5e')]);router['post'](_0x1345('0x30'),auth[_0x1345('0xb')](),controller[_0x1345('0x5f')]);router[_0x1345('0x3f')](_0x1345('0x32'),auth[_0x1345('0xb')](),controller[_0x1345('0x60')]);router[_0x1345('0x3f')](_0x1345('0x34'),auth[_0x1345('0xb')](),controller[_0x1345('0x61')]);router[_0x1345('0x3f')](_0x1345('0x62'),auth['isAuthenticated'](),controller[_0x1345('0x63')]);router['post'](_0x1345('0x37'),auth[_0x1345('0xb')](),controller['addChatWebsites']);router[_0x1345('0x3f')](_0x1345('0x39'),auth[_0x1345('0xb')](),controller['addWhatsappAccounts']);router['post']('/:id/api_key',auth[_0x1345('0xb')](),controller[_0x1345('0x64')]);router['put'](_0x1345('0x65'),auth[_0x1345('0xb')](),controller['update']);router[_0x1345('0x66')]('/:id/password',auth[_0x1345('0xb')](),controller['changePassword']);router[_0x1345('0x67')](_0x1345('0x15'),auth['isAuthenticated'](),controller[_0x1345('0x68')]);router[_0x1345('0x67')]('/:id/teams',auth['isAuthenticated'](),controller[_0x1345('0x69')]);router['delete'](_0x1345('0x65'),auth[_0x1345('0xb')](),controller[_0x1345('0x6a')]);router['delete']('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0x1345('0x6b')]);router[_0x1345('0x67')](_0x1345('0x56'),auth[_0x1345('0xb')](),controller['removeMailInteractions']);router[_0x1345('0x67')]('/:id/fax_interactions',auth[_0x1345('0xb')](),controller[_0x1345('0x6c')]);router[_0x1345('0x67')](_0x1345('0x59'),auth[_0x1345('0xb')](),controller[_0x1345('0x6d')]);router[_0x1345('0x67')](_0x1345('0x5b'),auth[_0x1345('0xb')](),controller[_0x1345('0x6e')]);router['delete'](_0x1345('0x5d'),auth[_0x1345('0xb')](),controller[_0x1345('0x6f')]);router[_0x1345('0x67')](_0x1345('0x30'),auth[_0x1345('0xb')](),controller[_0x1345('0x70')]);router[_0x1345('0x67')](_0x1345('0x32'),auth[_0x1345('0xb')](),controller[_0x1345('0x71')]);router[_0x1345('0x67')](_0x1345('0x34'),auth[_0x1345('0xb')](),controller[_0x1345('0x72')]);router[_0x1345('0x67')]('/:id/sms_accounts',auth[_0x1345('0xb')](),controller[_0x1345('0x73')]);router['delete'](_0x1345('0x37'),auth[_0x1345('0xb')](),controller[_0x1345('0x74')]);router['delete'](_0x1345('0x39'),auth[_0x1345('0xb')](),controller[_0x1345('0x75')]);router[_0x1345('0x67')](_0x1345('0x3d'),auth[_0x1345('0xb')](),controller[_0x1345('0x76')]);module[_0x1345('0x77')]=router;
\ No newline at end of file
+var _0x6599=['getOpenchannelAccounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','addWhatsappAccounts','put','/:id','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','/:id/mail_accounts','removeChatWebsites','removeWhatsappAccounts','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe','/whoami','whoami','getPresence','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','/:id/groups','getGroups','/:id/recordings','getRecordings','getScreenRecordings','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','getLists','/:id/fax_accounts','getMailAccounts','/:id/openchannel_accounts'];(function(_0x3ddb4e,_0x5d9ecf){var _0x16202e=function(_0x505a25){while(--_0x505a25){_0x3ddb4e['push'](_0x3ddb4e['shift']());}};_0x16202e(++_0x5d9ecf);}(_0x6599,0xb0));var _0x9659=function(_0x10dfdf,_0x36b623){_0x10dfdf=_0x10dfdf-0x0;var _0x4d857d=_0x6599[_0x10dfdf];return _0x4d857d;};'use strict';var multer=require('multer');var util=require(_0x9659('0x0'));var path=require(_0x9659('0x1'));var timeout=require(_0x9659('0x2'));var express=require(_0x9659('0x3'));var router=express[_0x9659('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9659('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9659('0x6'));var controller=require('./user.controller');router[_0x9659('0x7')]('/',auth[_0x9659('0x8')](),controller[_0x9659('0x9')]);router['get']('/describe',auth[_0x9659('0x8')](),controller[_0x9659('0xa')]);router['get'](_0x9659('0xb'),auth['isAuthenticated'](),controller[_0x9659('0xc')]);router[_0x9659('0x7')]('/presence',auth[_0x9659('0x8')](),controller[_0x9659('0xd')]);router[_0x9659('0x7')]('/:id',auth[_0x9659('0x8')](),controller['show']);router[_0x9659('0x7')](_0x9659('0xe'),controller[_0x9659('0xf')]);router['get'](_0x9659('0x10'),auth[_0x9659('0x8')](),controller[_0x9659('0x11')]);router[_0x9659('0x7')](_0x9659('0x12'),auth[_0x9659('0x8')](),controller[_0x9659('0x13')]);router[_0x9659('0x7')](_0x9659('0x14'),auth[_0x9659('0x8')](),controller[_0x9659('0x15')]);router[_0x9659('0x7')](_0x9659('0x16'),auth[_0x9659('0x8')](),controller['getVoiceQueuesRt']);router[_0x9659('0x7')](_0x9659('0x17'),auth[_0x9659('0x8')](),controller[_0x9659('0x18')]);router[_0x9659('0x7')](_0x9659('0x19'),auth[_0x9659('0x8')](),controller[_0x9659('0x1a')]);router[_0x9659('0x7')]('/:id/screen_recordings',auth[_0x9659('0x8')](),controller[_0x9659('0x1b')]);router[_0x9659('0x7')]('/:id/chat/interactions',auth[_0x9659('0x8')](),controller['getChatInteractions']);router[_0x9659('0x7')](_0x9659('0x1c'),auth[_0x9659('0x8')](),controller[_0x9659('0x1d')]);router[_0x9659('0x7')](_0x9659('0x1e'),auth['isAuthenticated'](),controller[_0x9659('0x1f')]);router[_0x9659('0x7')]('/:id/sms/interactions',auth[_0x9659('0x8')](),controller[_0x9659('0x20')]);router[_0x9659('0x7')]('/:id/fax/interactions',auth[_0x9659('0x8')](),controller[_0x9659('0x21')]);router[_0x9659('0x7')](_0x9659('0x22'),auth[_0x9659('0x8')](),controller['getWhatsappInteractions']);router[_0x9659('0x7')](_0x9659('0x23'),auth[_0x9659('0x8')](),controller[_0x9659('0x24')]);router['get'](_0x9659('0x25'),auth[_0x9659('0x8')](),controller[_0x9659('0x26')]);router[_0x9659('0x7')]('/:id/agents',auth[_0x9659('0x8')](),controller['getAgents']);router[_0x9659('0x7')]('/:id/prefixes',auth[_0x9659('0x8')](),controller['getVoicePrefixes']);router['get'](_0x9659('0x27'),auth[_0x9659('0x8')](),controller['getFaxAccounts']);router[_0x9659('0x7')]('/:id/mail_accounts',auth[_0x9659('0x8')](),controller[_0x9659('0x28')]);router[_0x9659('0x7')](_0x9659('0x29'),auth[_0x9659('0x8')](),controller[_0x9659('0x2a')]);router[_0x9659('0x7')]('/:id/sms_accounts',auth[_0x9659('0x8')](),controller[_0x9659('0x2b')]);router[_0x9659('0x7')]('/:id/chat_websites',auth[_0x9659('0x8')](),controller[_0x9659('0x2c')]);router['get'](_0x9659('0x2d'),auth[_0x9659('0x8')](),controller['getWhatsappAccounts']);router[_0x9659('0x7')](_0x9659('0x2e'),auth['isAuthenticated'](),controller[_0x9659('0x2f')]);router[_0x9659('0x7')](_0x9659('0x30'),auth[_0x9659('0x8')](),controller[_0x9659('0x31')]);router[_0x9659('0x32')](_0x9659('0x12'),auth[_0x9659('0x8')](),controller[_0x9659('0x33')]);router[_0x9659('0x32')]('/',auth[_0x9659('0x8')](),controller[_0x9659('0x34')]);router[_0x9659('0x32')](_0x9659('0x35'),auth[_0x9659('0x8')](),controller['bulkCreate']);router[_0x9659('0x32')](_0x9659('0x14'),auth['isAuthenticated'](),controller[_0x9659('0x36')]);var upload=multer({'storage':multer[_0x9659('0x37')]({'destination':function(_0x10c771,_0x88357e,_0x43af78){_0x43af78(null,path[_0x9659('0x38')](config[_0x9659('0x39')],_0x9659('0x3a')));},'filename':function(_0xf4b28c,_0x2bcdfa,_0x4ae3ce){_0x4ae3ce(null,util[_0x9659('0x3b')](_0x9659('0x3c'),Date[_0x9659('0x3d')](),_0x2bcdfa[_0x9659('0x3e')]));}})});router[_0x9659('0x32')](_0x9659('0xe'),upload[_0x9659('0x3f')](_0x9659('0x40')),controller[_0x9659('0x41')]);router[_0x9659('0x32')](_0x9659('0x42'),auth[_0x9659('0x8')](),controller[_0x9659('0x43')]);router['post'](_0x9659('0x44'),auth[_0x9659('0x8')](),controller[_0x9659('0x45')]);router['post'](_0x9659('0x46'),auth[_0x9659('0x8')](),controller[_0x9659('0x47')]);router[_0x9659('0x32')](_0x9659('0x48'),auth[_0x9659('0x8')](),controller[_0x9659('0x49')]);router[_0x9659('0x32')]('/:id/teams',auth[_0x9659('0x8')](),controller[_0x9659('0x4a')]);router[_0x9659('0x32')]('/:id/chat_interactions',auth[_0x9659('0x8')](),controller[_0x9659('0x4b')]);router[_0x9659('0x32')](_0x9659('0x4c'),auth[_0x9659('0x8')](),controller[_0x9659('0x4d')]);router[_0x9659('0x32')](_0x9659('0x4e'),auth[_0x9659('0x8')](),controller['addFaxInteractions']);router[_0x9659('0x32')](_0x9659('0x4f'),auth[_0x9659('0x8')](),controller[_0x9659('0x50')]);router[_0x9659('0x32')](_0x9659('0x51'),auth[_0x9659('0x8')](),controller[_0x9659('0x52')]);router['post'](_0x9659('0x53'),auth[_0x9659('0x8')](),controller['addWhatsappInteractions']);router['post'](_0x9659('0x27'),auth[_0x9659('0x8')](),controller['addFaxAccounts']);router['post']('/:id/mail_accounts',auth[_0x9659('0x8')](),controller[_0x9659('0x54')]);router[_0x9659('0x32')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x9659('0x55')]);router[_0x9659('0x32')](_0x9659('0x56'),auth[_0x9659('0x8')](),controller['addSmsAccounts']);router[_0x9659('0x32')](_0x9659('0x57'),auth[_0x9659('0x8')](),controller['addChatWebsites']);router[_0x9659('0x32')](_0x9659('0x2d'),auth[_0x9659('0x8')](),controller[_0x9659('0x58')]);router[_0x9659('0x32')](_0x9659('0x30'),auth[_0x9659('0x8')](),controller['createApiKey']);router[_0x9659('0x59')](_0x9659('0x5a'),auth[_0x9659('0x8')](),controller[_0x9659('0x5b')]);router[_0x9659('0x59')](_0x9659('0x5c'),auth[_0x9659('0x8')](),controller[_0x9659('0x5d')]);router[_0x9659('0x5e')]('/:id/queues',auth[_0x9659('0x8')](),controller[_0x9659('0x5f')]);router['delete'](_0x9659('0x23'),auth[_0x9659('0x8')](),controller[_0x9659('0x60')]);router[_0x9659('0x5e')](_0x9659('0x5a'),auth[_0x9659('0x8')](),controller[_0x9659('0x61')]);router[_0x9659('0x5e')](_0x9659('0x62'),auth['isAuthenticated'](),controller[_0x9659('0x63')]);router[_0x9659('0x5e')](_0x9659('0x4c'),auth[_0x9659('0x8')](),controller[_0x9659('0x64')]);router[_0x9659('0x5e')]('/:id/fax_interactions',auth[_0x9659('0x8')](),controller[_0x9659('0x65')]);router[_0x9659('0x5e')](_0x9659('0x4f'),auth[_0x9659('0x8')](),controller[_0x9659('0x66')]);router[_0x9659('0x5e')](_0x9659('0x51'),auth[_0x9659('0x8')](),controller[_0x9659('0x67')]);router[_0x9659('0x5e')](_0x9659('0x53'),auth['isAuthenticated'](),controller[_0x9659('0x68')]);router[_0x9659('0x5e')](_0x9659('0x27'),auth[_0x9659('0x8')](),controller[_0x9659('0x69')]);router['delete'](_0x9659('0x6a'),auth[_0x9659('0x8')](),controller['removeMailAccounts']);router[_0x9659('0x5e')](_0x9659('0x29'),auth[_0x9659('0x8')](),controller['removeOpenchannelAccounts']);router[_0x9659('0x5e')](_0x9659('0x56'),auth[_0x9659('0x8')](),controller['removeSmsAccounts']);router[_0x9659('0x5e')]('/:id/chat_websites',auth[_0x9659('0x8')](),controller[_0x9659('0x6b')]);router[_0x9659('0x5e')](_0x9659('0x2d'),auth['isAuthenticated'](),controller[_0x9659('0x6c')]);router[_0x9659('0x5e')](_0x9659('0x30'),auth['isAuthenticated'](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
index 4a541a0..5463645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['all','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','refuse','originate','uac','uas','fingerprint','certificate','active','actpass','update,nonat','TEXT','get','isArray','encryption','avpf','force_avp','icesupport','dtlsenable','dtlssetup','dtlsprivatekey','wss','dtlsverify','dtlscertfile','/etc/pki/tls/private/motion.key','rtcp_mux','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','UNSIGNED','sequelize','moment','util','lodash','exports','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','STRING','fullname','callerid','getDataValue','internal','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','accountcode','\x22%s\x22\x20<%s>','BOOLEAN','DATE','dynamic','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'];(function(_0x42dc23,_0xb012ff){var _0xc4629f=function(_0xbce527){while(--_0xbce527){_0x42dc23['push'](_0x42dc23['shift']());}};_0xc4629f(++_0xb012ff);}(_0x008c,0x188));var _0xc008=function(_0xea1bcd,_0x465e08){_0xea1bcd=_0xea1bcd-0x0;var _0xfbe4c6=_0x008c[_0xea1bcd];return _0xfbe4c6;};'use strict';var Sequelize=require(_0xc008('0x0'));var moment=require(_0xc008('0x1'));var util=require(_0xc008('0x2'));var _=require(_0xc008('0x3'));module[_0xc008('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc008('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x47063f){this[_0xc008('0x6')](_0xc008('0x5'),_0x47063f);this[_0xc008('0x6')](_0xc008('0x7'),_0x47063f);},'comment':_0xc008('0x8')},'fullname':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'set':function(_0x9c8cb2){this['setDataValue'](_0xc008('0xa'),_0x9c8cb2);this['setDataValue'](_0xc008('0xb'),util['format']('\x22%s\x22\x20<%s>',_0x9c8cb2,this[_0xc008('0xc')](_0xc008('0xd'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x1eacfa){if(_0x1eacfa){this[_0xc008('0x6')]('email',_0x1eacfa[_0xc008('0xe')]());}}},'role':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x10'),_0xc008('0x11'),_0xc008('0x12'),_0xc008('0x13')),'allowNull':![]},'password':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':![],'unique':'internal','set':function(_0x25e13f){this[_0xc008('0x6')](_0xc008('0xd'),_0x25e13f);this[_0xc008('0x6')](_0xc008('0x15'),_0x25e13f);this['setDataValue']('callerid',util['format'](_0xc008('0x16'),this[_0xc008('0xc')](_0xc008('0xa')),_0x25e13f));}},'salt':{'type':Sequelize[_0xc008('0x9')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0xc008('0x9')]},'city':{'type':Sequelize[_0xc008('0x9')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0xc008('0x18')]},'chatCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xc008('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':_0xc008('0x19')},'ipaddr':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'port':{'type':Sequelize[_0xc008('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x1a'),_0xc008('0x11'),'peer'),'allowNull':!![],'defaultValue':_0xc008('0x1a')},'context':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':_0xc008('0x1b')},'callingpres':{'type':Sequelize[_0xc008('0xf')]('ALLOWED_NOT_SCREENED',_0xc008('0x1c'),_0xc008('0x1d'),'ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0xc008('0x1e'),_0xc008('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'permit':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'secret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'transport':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':_0xc008('0x20'),'set':function(_0x2b862d){this[_0xc008('0x6')](_0xc008('0x21'),_0x2b862d?_0x2b862d['join'](','):null);},'get':function(){return this[_0xc008('0xc')](_0xc008('0x21'))?this['getDataValue'](_0xc008('0x21'))[_0xc008('0x22')](','):null;},'comment':_0xc008('0x23')},'dtmfmode':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x24'),_0xc008('0x25'),_0xc008('0x26'),_0xc008('0x27'),_0xc008('0x28')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x2a'),_0xc008('0x2b'),_0xc008('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'nat':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x399b64){this[_0xc008('0x6')]('nat',_0x399b64?_0x399b64[_0xc008('0x2d')](','):null);},'get':function(){return this[_0xc008('0xc')](_0xc008('0x2e'))?this['getDataValue']('nat')['split'](','):null;},'comment':_0xc008('0x2f')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xc008('0x9')]},'pickupgroup':{'type':Sequelize[_0xc008('0x9')]},'namedpickupgroup':{'type':Sequelize[_0xc008('0x9')]},'language':{'type':Sequelize[_0xc008('0x9')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xc008('0x9')]},'disallow':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'defaultValue':_0xc008('0x30')},'allow':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'defaultValue':_0xc008('0x31'),'set':function(_0x387dfd){this[_0xc008('0x6')](_0xc008('0x32'),_0x387dfd?_0x387dfd[_0xc008('0x2d')](';'):_0xc008('0x31'));},'get':function(){return this['getDataValue'](_0xc008('0x32'))?this[_0xc008('0xc')](_0xc008('0x32'))[_0xc008('0x22')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'set':function(_0x36e7ae){this[_0xc008('0x6')]('insecure',_0x36e7ae?_0x36e7ae[_0xc008('0x2d')](','):null);},'get':function(){return this[_0xc008('0xc')](_0xc008('0x33'))?this[_0xc008('0xc')](_0xc008('0x33'))['split'](','):null;},'comment':_0xc008('0x34')},'trustrpid':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'template':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM']('accept',_0xc008('0x37'),_0xc008('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x39'),_0xc008('0x3a')),'allowNull':!![],'defaultValue':_0xc008('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x3b'),_0xc008('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x3d'),'passive',_0xc008('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xc008('0xf')]('yes','no',_0xc008('0x2a'),'update',_0xc008('0x3f')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xc008('0x9')]},'resetPasswordExpires':{'type':Sequelize[_0xc008('0x18')]},'passwordResetAt':{'type':Sequelize[_0xc008('0x18')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xc008('0x40')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x375e71){this['setDataValue']('showWebBar',_0x375e71);var _0x37ce5e=this[_0xc008('0x41')]({'plain':!![]});switch(_0x375e71){case 0x0:case 0x1:var _0x56e755=_0x37ce5e[_0xc008('0x21')]?_[_0xc008('0x42')](_0x37ce5e[_0xc008('0x21')])?_0x37ce5e[_0xc008('0x21')][_0xc008('0x2d')]():_0x37ce5e[_0xc008('0x21')]:_0xc008('0x20');if(_0x56e755==='wss'){_0x56e755=_0xc008('0x20');}this[_0xc008('0x6')](_0xc008('0x21'),_0x56e755);this[_0xc008('0x6')](_0xc008('0x43'),'no');this[_0xc008('0x6')](_0xc008('0x44'),null);this[_0xc008('0x6')](_0xc008('0x45'),null);this[_0xc008('0x6')](_0xc008('0x46'),null);this[_0xc008('0x6')](_0xc008('0x47'),null);this[_0xc008('0x6')]('dtlsverify',null);this[_0xc008('0x6')](_0xc008('0x48'),null);this[_0xc008('0x6')]('dtlscertfile',null);this[_0xc008('0x6')](_0xc008('0x49'),null);this['setDataValue']('rtcp_mux','no');break;case 0x2:this[_0xc008('0x6')](_0xc008('0x21'),_0xc008('0x4a'));this[_0xc008('0x6')](_0xc008('0x43'),_0xc008('0x29'));this[_0xc008('0x6')](_0xc008('0x44'),_0xc008('0x29'));this[_0xc008('0x6')](_0xc008('0x45'),'yes');this[_0xc008('0x6')](_0xc008('0x46'),_0xc008('0x29'));this[_0xc008('0x6')]('dtlsenable',_0xc008('0x29'));this['setDataValue'](_0xc008('0x4b'),'no');this[_0xc008('0x6')](_0xc008('0x48'),'actpass');this[_0xc008('0x6')](_0xc008('0x4c'),_0x37ce5e[_0xc008('0x4c')]||'/etc/pki/tls/certs/motion.crt');this[_0xc008('0x6')]('dtlsprivatekey',_0x37ce5e[_0xc008('0x49')]||_0xc008('0x4d'));this[_0xc008('0x6')](_0xc008('0x4e'),_0xc008('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x3c30db){this[_0xc008('0x6')]('permissions',_0x3c30db?_0x3c30db[_0xc008('0x2d')](','):[]);},'get':function(){return this['getDataValue'](_0xc008('0x4f'))?_['map'](this[_0xc008('0xc')]('permissions')[_0xc008('0x22')](','),function(_0x103d75){return parseInt(_0x103d75,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xc008('0x9')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xc008('0x9')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xc008('0x9')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xc008('0x50')],'get':function(){return this[_0xc008('0xc')](_0xc008('0x51'))?this[_0xc008('0xc')](_0xc008('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0xc008('0x9')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![],'set':function(_0x3b2669){if(typeof _0x3b2669===_0xc008('0x52')){var _0x2edb8e=_0x3b2669==='1'?!![]:_0x3b2669==='0'?![]:_0x3b2669===_0xc008('0x53')?!![]:_0x3b2669===_0xc008('0x54')?![]:![];this[_0xc008('0x6')](_0xc008('0x55'),_0x2edb8e);}else{this['setDataValue']('screenrecording',_0x3b2669);}}},'blocked':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![],'set':function(_0x3104cd){this[_0xc008('0x6')]('blocked',_0x3104cd);if(_0x3104cd===!![]){this[_0xc008('0x6')](_0xc008('0x56'),moment());this['setDataValue']('loginAttempts',0x0);}else{this['setDataValue'](_0xc008('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0xc008('0x18')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xc008('0x14')](0x5)[_0xc008('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa9e0=['certificate','passive','nonat','update,nonat','TEXT','showWebBar','wss','encryption','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','rtcp_mux','avpf','dtlsverify','actpass','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','STRING','setDataValue','name','defaultuser','callerid','getDataValue','internal','email','admin','user','agent','telephone','INTEGER','format','fullname','BOOLEAN','DATE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','update','outgoing','force_rport,comedia','nat','split','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas'];(function(_0x19115e,_0x507bab){var _0x45bbd4=function(_0x1308bf){while(--_0x1308bf){_0x19115e['push'](_0x19115e['shift']());}};_0x45bbd4(++_0x507bab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x333808){this[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x333808);this[_0x0a9e('0x4')](_0x0a9e('0x6'),_0x333808);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'set':function(_0x441e3a){this[_0x0a9e('0x4')]('fullname',_0x441e3a);this['setDataValue'](_0x0a9e('0x7'),util['format']('\x22%s\x22\x20<%s>',_0x441e3a,this[_0x0a9e('0x8')](_0x0a9e('0x9'))));}},'alias':{'type':Sequelize[_0x0a9e('0x3')]},'email':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'unique':_0x0a9e('0xa'),'validate':{'isEmail':!![]},'set':function(_0xbd1168){if(_0xbd1168){this['setDataValue']('email',_0xbd1168['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe')),'allowNull':![]},'password':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':![],'unique':_0x0a9e('0x9'),'set':function(_0x2b4227){this[_0x0a9e('0x4')](_0x0a9e('0x9'),_0x2b4227);this[_0x0a9e('0x4')]('accountcode',_0x2b4227);this[_0x0a9e('0x4')]('callerid',util[_0x0a9e('0x10')]('\x22%s\x22\x20<%s>',this[_0x0a9e('0x8')](_0x0a9e('0x11')),_0x2b4227));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0a9e('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x0a9e('0x3')]},'zipcode':{'type':Sequelize[_0x0a9e('0x3')]},'userpic':{'type':Sequelize[_0x0a9e('0x3')]},'city':{'type':Sequelize[_0x0a9e('0x3')]},'country':{'type':Sequelize[_0x0a9e('0x3')]},'online':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x0a9e('0x13')]},'voicePause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x0a9e('0x13')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0a9e('0xf')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0a9e('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x14')},'ipaddr':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x0a9e('0xf')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x16'),_0x0a9e('0xc'),_0x0a9e('0x17')),'allowNull':!![],'defaultValue':_0x0a9e('0x16')},'context':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x18')},'callingpres':{'type':Sequelize[_0x0a9e('0x15')]('ALLOWED_NOT_SCREENED',_0x0a9e('0x19'),_0x0a9e('0x1a'),_0x0a9e('0x1b'),_0x0a9e('0x1c'),'PROHIB_PASSED_SCREEN',_0x0a9e('0x1d'),_0x0a9e('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x1f'),'set':function(_0x540530){this[_0x0a9e('0x4')]('transport',_0x540530?_0x540530[_0x0a9e('0x20')](','):null);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x21'))?this[_0x0a9e('0x8')](_0x0a9e('0x21'))['split'](','):null;},'comment':_0x0a9e('0x22')},'dtmfmode':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x23'),_0x0a9e('0x24'),_0x0a9e('0x25'),_0x0a9e('0x26'),_0x0a9e('0x27')),'allowNull':!![],'defaultValue':_0x0a9e('0x23')},'directmedia':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no','nonat',_0x0a9e('0x29'),_0x0a9e('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x2b'),'set':function(_0x15de0e){this['setDataValue']('nat',_0x15de0e?_0x15de0e[_0x0a9e('0x20')](','):null);},'get':function(){return this['getDataValue'](_0x0a9e('0x2c'))?this[_0x0a9e('0x8')](_0x0a9e('0x2c'))[_0x0a9e('0x2d')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x0a9e('0x3')]},'namedcallgroup':{'type':Sequelize[_0x0a9e('0x3')]},'pickupgroup':{'type':Sequelize[_0x0a9e('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0a9e('0x3')]},'disallow':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0a9e('0x2e'),'set':function(_0x40d766){this['setDataValue'](_0x0a9e('0x2f'),_0x40d766?_0x40d766[_0x0a9e('0x20')](';'):_0x0a9e('0x2e'));},'get':function(){return this[_0x0a9e('0x8')]('allow')?this['getDataValue'](_0x0a9e('0x2f'))[_0x0a9e('0x2d')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'set':function(_0x5b4f5e){this[_0x0a9e('0x4')](_0x0a9e('0x30'),_0x5b4f5e?_0x5b4f5e[_0x0a9e('0x20')](','):null);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x30'))?this[_0x0a9e('0x8')](_0x0a9e('0x30'))[_0x0a9e('0x2d')](','):null;},'comment':_0x0a9e('0x31')},'trustrpid':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x32')},'amaflags':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':_0x0a9e('0x28')},'busylevel':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x0a9e('0x15')]('yes','no',_0x0a9e('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0a9e('0x15')]('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x34'),_0x0a9e('0x35'),_0x0a9e('0x36')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0x0a9e('0x37'),_0x0a9e('0x38')),'allowNull':!![],'defaultValue':_0x0a9e('0x38')},'t38pt_usertpsource':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0a9e('0x15')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no','fingerprint',_0x0a9e('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0a9e('0x15')]('active',_0x0a9e('0x3a'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no',_0x0a9e('0x3b'),_0x0a9e('0x29'),_0x0a9e('0x3c')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0a9e('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x0a9e('0x13')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x0a9e('0x3d')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x3649cc){this['setDataValue'](_0x0a9e('0x3e'),_0x3649cc);var _0x5ba1f9=this['get']({'plain':!![]});switch(_0x3649cc){case 0x0:case 0x1:var _0x5674ee=_0x5ba1f9[_0x0a9e('0x21')]?_['isArray'](_0x5ba1f9[_0x0a9e('0x21')])?_0x5ba1f9[_0x0a9e('0x21')][_0x0a9e('0x20')]():_0x5ba1f9[_0x0a9e('0x21')]:_0x0a9e('0x1f');if(_0x5674ee===_0x0a9e('0x3f')){_0x5674ee='udp';}this[_0x0a9e('0x4')]('transport',_0x5674ee);this[_0x0a9e('0x4')](_0x0a9e('0x40'),'no');this[_0x0a9e('0x4')]('avpf',null);this[_0x0a9e('0x4')](_0x0a9e('0x41'),null);this[_0x0a9e('0x4')](_0x0a9e('0x42'),null);this['setDataValue'](_0x0a9e('0x43'),null);this[_0x0a9e('0x4')]('dtlsverify',null);this[_0x0a9e('0x4')](_0x0a9e('0x44'),null);this[_0x0a9e('0x4')](_0x0a9e('0x45'),null);this[_0x0a9e('0x4')]('dtlsprivatekey',null);this[_0x0a9e('0x4')](_0x0a9e('0x46'),'no');break;case 0x2:this[_0x0a9e('0x4')]('transport',_0x0a9e('0x3f'));this['setDataValue']('encryption',_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x47'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x41'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x42'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x43'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x48'),'no');this[_0x0a9e('0x4')](_0x0a9e('0x44'),_0x0a9e('0x49'));this['setDataValue'](_0x0a9e('0x45'),_0x5ba1f9[_0x0a9e('0x45')]||_0x0a9e('0x4a'));this['setDataValue'](_0x0a9e('0x4b'),_0x5ba1f9[_0x0a9e('0x4b')]||'/etc/pki/tls/private/motion.key');this[_0x0a9e('0x4')](_0x0a9e('0x46'),_0x0a9e('0x28'));break;default:}}},'permissions':{'type':Sequelize[_0x0a9e('0x3d')],'set':function(_0x13b5c0){this['setDataValue']('permissions',_0x13b5c0?_0x13b5c0['join'](','):[]);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x4c'))?_[_0x0a9e('0x4d')](this[_0x0a9e('0x8')](_0x0a9e('0x4c'))[_0x0a9e('0x2d')](','),function(_0xeef20){return parseInt(_0xeef20,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x0a9e('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x0a9e('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0a9e('0x4e')],'get':function(){return this[_0x0a9e('0x8')]('phoneBarEnableScreenRecordingByAgent')?this[_0x0a9e('0x8')](_0x0a9e('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![],'set':function(_0xdb98ca){if(typeof _0xdb98ca===_0x0a9e('0x50')){var _0x3df0e3=_0xdb98ca==='1'?!![]:_0xdb98ca==='0'?![]:_0xdb98ca===_0x0a9e('0x51')?!![]:_0xdb98ca===_0x0a9e('0x52')?![]:![];this[_0x0a9e('0x4')](_0x0a9e('0x53'),_0x3df0e3);}else{this[_0x0a9e('0x4')](_0x0a9e('0x53'),_0xdb98ca);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0xf4120f){this[_0x0a9e('0x4')](_0x0a9e('0x54'),_0xf4120f);if(_0xf4120f===!![]){this['setDataValue'](_0x0a9e('0x55'),moment());this[_0x0a9e('0x4')](_0x0a9e('0x56'),0x0);}else{this[_0x0a9e('0x4')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x0a9e('0xf')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0}};
\ No newline at end of file
index 94b3530..ddb8c12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20f=['getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','sequelize','removeAgent','getLists','values','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','CmHopper','$and','$or','$gt','$gte','$lte','$ne','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$overlap','$contains','$contained','firstName','lastName','CmContact','Contact','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','flatten','getAgents','toString','desc','asc','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','InteractionId','ui.createdAt','ui.UserId\x20=\x20?','OpenTabs','moment','util','path','squel','jayson/promise','../../components/auth/service','../../components/contacts','../../components/parsers/qs','../../config/logger','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','handleError','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','client','http','request','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','error','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','update','then','role','agent','userNotification:recalc:','destroy','get','admin','user','Telephones','telephone','filter','ignore','map','value','includes','name','UserProfileResource','sendStatus','stack','send','index','User','rawAttributes','fieldName','type','key','password','salt','getOptions','where','query','includeAll','userSetting','true','UserSetting','attributes','push','rows','length','chat','dataValues','sms','fax','mail','openchannel','whatsapp','all','show','model','differenceBy','keys','filters','intersection','fields','include','merge','find','openTabs','body','params','describe','addContacts','ids','omit','internal','Setting','securePassword','validatePasswordPattern','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','mailbox','fullname','email','permissions','101','113','110','104','105','106','107','109','111','115','create','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','VoiceMail','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','findAll','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','validatePasswordHistory','previousPasswords','updatePasswordsHistory','addQueues','online','loginInPause','voicePause','interface','Unknown\x20channel','add','capitalize','toLowerCase','Queues','QueueId','emit','Queue:save','voice','VoiceQueue','format','penalty','upsert','removeQueues','isValidChannel','channel','remove','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','filename','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MAIL','SmsOpenTabs','WhatsappOpenTabs','getContacts','User\x20with\x20id\x20%s\x20not\x20found','hasOwnProperty','CmList','List','Tag','color','tag','getQueues','Queue','order','sort','pick','Unknown\x20role','nolimit','getVoiceQueuesRt','options','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','getOpenchannelInteractions','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','SIP/%s','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','LOGIN','device','PAUSE','LOGININPAUSE','concat','isMiddleware','resolve','logout','QueuePause','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','chatPause','faxPause','smsPause','whatsappPause','pauseType','getTeams','addTeams','transaction','Team','getAssociatedQueues','flattenDeep'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xa20f,0x73));var _0xfa20=function(_0x539e85,_0x490d2f){_0x539e85=_0x539e85-0x0;var _0x2fb3fa=_0xa20f[_0x539e85];return _0x2fb3fa;};'use strict';var moment=require(_0xfa20('0x0'));var util=require(_0xfa20('0x1'));var path=require(_0xfa20('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0xfa20('0x3'));var jayson=require(_0xfa20('0x4'));var Redis=require('ioredis');var authService=require(_0xfa20('0x5'));var contacts=require(_0xfa20('0x6'));var qs=require(_0xfa20('0x7'));var logger=require(_0xfa20('0x8'))('api');var utils=require('../../config/utils');var config=require(_0xfa20('0x9'));var licenseUtil=require(_0xfa20('0xa'));var APIBadRequestError=require(_0xfa20('0xb'))[_0xfa20('0xc')];var APINotFoundError=require(_0xfa20('0xb'))['APINotFoundError'];var APIHandleError=require(_0xfa20('0xb'))[_0xfa20('0xd')];var db=require(_0xfa20('0xe'))['db'];var socket=require(_0xfa20('0xf'))(new Redis(config[_0xfa20('0x10')]));require('./user.socket')[_0xfa20('0x11')](socket);config[_0xfa20('0x10')]=_[_0xfa20('0x12')](config['redis'],{'host':_0xfa20('0x13'),'port':0x18eb});var amiClient=jayson[_0xfa20('0x14')][_0xfa20('0x15')]({'port':0x232a});var values;function respondWithRpcPromise(_0x377d73,_0x205328,_0x284e69,_0x44e4aa){return new Promise(function(_0x6adb9f,_0x5ad7a0){var _0x22abfe=_0x44e4aa||amiClient;return _0x22abfe[_0xfa20('0x16')](_0x377d73,_0x284e69)['then'](function(_0x2b96fd){logger[_0xfa20('0x17')](_0xfa20('0x18'),_0x205328,_0xfa20('0x19'));logger['debug'](_0xfa20('0x1a'),_0x205328,_0xfa20('0x19'),JSON['stringify'](_0x2b96fd));if(_0x2b96fd[_0xfa20('0x1b')]){if(_0x2b96fd[_0xfa20('0x1b')]['code']===0x1f4){logger[_0xfa20('0x1b')](_0xfa20('0x18'),_0x205328,_0x2b96fd['error']['message']);return _0x5ad7a0(_0x2b96fd[_0xfa20('0x1b')][_0xfa20('0x1c')]);}logger['error'](_0xfa20('0x18'),_0x205328,_0x2b96fd[_0xfa20('0x1b')][_0xfa20('0x1c')]);return _0x6adb9f(_0x2b96fd[_0xfa20('0x1b')][_0xfa20('0x1c')]);}else{logger[_0xfa20('0x17')](_0xfa20('0x18'),_0x205328,_0xfa20('0x19'));_0x6adb9f(_0x2b96fd[_0xfa20('0x1d')][_0xfa20('0x1c')]);}})[_0xfa20('0x1e')](function(_0x263205){logger[_0xfa20('0x1b')]('User,\x20%s,\x20%s',_0x205328,_0x263205);_0x5ad7a0(_0x263205);});});}function respondWithStatusCode(_0x141ad5,_0x243f74){_0x243f74=_0x243f74||0xcc;return function(_0x35ec72){if(_0x35ec72){return _0x141ad5['sendStatus'](_0x243f74);}return _0x141ad5[_0xfa20('0x1f')](_0x243f74)[_0xfa20('0x20')]();};}function respondWithResult(_0x31dd0b,_0x2d3c27){_0x2d3c27=_0x2d3c27||0xc8;return function(_0x2c98d4){if(_0x2c98d4){return _0x31dd0b[_0xfa20('0x1f')](_0x2d3c27)[_0xfa20('0x21')](_0x2c98d4);}};}function respondWithFilteredResult(_0x4a5d43,_0x2d9f15){return function(_0x259aa9){if(_0x259aa9){var _0x3a9b64=typeof _0x2d9f15[_0xfa20('0x22')]===_0xfa20('0x23')&&typeof _0x2d9f15[_0xfa20('0x24')]===_0xfa20('0x23');var _0x59a023=_0x259aa9[_0xfa20('0x25')];var _0x5c92e1=_0x3a9b64?0x0:_0x2d9f15[_0xfa20('0x22')];var _0x43deda=_0x3a9b64?_0x259aa9[_0xfa20('0x25')]:_0x2d9f15['offset']+_0x2d9f15[_0xfa20('0x24')];var _0x5243c4;if(_0x43deda>=_0x59a023){_0x43deda=_0x59a023;_0x5243c4=0xc8;}else{_0x5243c4=0xce;}_0x4a5d43['status'](_0x5243c4);return _0x4a5d43['set'](_0xfa20('0x26'),_0x5c92e1+'-'+_0x43deda+'/'+_0x59a023)[_0xfa20('0x21')](_0x259aa9);}return null;};}function saveUpdates(_0x416b63){return function(_0x54eac1){if(_0x54eac1){return _0x54eac1[_0xfa20('0x27')](_0x416b63)[_0xfa20('0x28')](function(_0x52e6a7){if(_0x52e6a7[_0xfa20('0x29')]===_0xfa20('0x2a')){socket['emit'](_0xfa20('0x2b')+_0x52e6a7['id'],_0x52e6a7);}return _0x52e6a7;});}return null;};}function removeEntity(_0x1f7fe9){return function(_0x9ab56f){if(_0x9ab56f){return _0x9ab56f[_0xfa20('0x2c')]()['then'](function(){var _0x393460=_0x9ab56f[_0xfa20('0x2d')]({'plain':!![]});if(_0x393460[_0xfa20('0x29')]===_0xfa20('0x2e'))return;var _0x9a1208=[{'name':'Users','value':_0xfa20('0x2f'),'ignore':!![]},{'name':'Agents','value':'agent','ignore':![]},{'name':_0xfa20('0x30'),'value':_0xfa20('0x31'),'ignore':![]}];var _0x57efb9=_(_0x9a1208)[_0xfa20('0x32')](_0xfa20('0x33'))[_0xfa20('0x34')]('value')[_0xfa20('0x35')]();if(_[_0xfa20('0x36')](_0x57efb9,_0x393460[_0xfa20('0x29')])){return;}var _0x48da5c=_['find'](_0x9a1208,[_0xfa20('0x35'),_0x393460[_0xfa20('0x29')]])[_0xfa20('0x37')];return db[_0xfa20('0x38')][_0xfa20('0x2c')]({'where':{'type':_0x48da5c,'resourceId':_0x393460['id']}})[_0xfa20('0x28')](function(){return _0x9ab56f;});})[_0xfa20('0x28')](function(){_0x1f7fe9[_0xfa20('0x1f')](0xcc)[_0xfa20('0x20')]();});}};}function handleEntityNotFound(_0x286737){return function(_0x58f315){if(!_0x58f315){_0x286737[_0xfa20('0x39')](0x194);}return _0x58f315;};}function handleError(_0x2cf2c6,_0x467787){_0x467787=_0x467787||0x1f4;return function(_0xb2c9e8){logger[_0xfa20('0x1b')](_0xb2c9e8[_0xfa20('0x3a')]);if(_0xb2c9e8['name']){delete _0xb2c9e8['name'];}_0x2cf2c6[_0xfa20('0x1f')](_0x467787)[_0xfa20('0x3b')](_0xb2c9e8);};}exports[_0xfa20('0x3c')]=function(_0x2ec36b,_0x4cc3eb){var _0x48a4a1={},_0x992d7c={'count':0x0,'rows':[]};var _0x4b9428=_(db[_0xfa20('0x3d')][_0xfa20('0x3e')])[_0xfa20('0x34')](function(_0x371607){return{'name':_0x371607[_0xfa20('0x3f')],'type':_0x371607[_0xfa20('0x40')][_0xfa20('0x41')]};})['filter'](function(_0x189846){return!_[_0xfa20('0x36')]([_0xfa20('0x42'),_0xfa20('0x43')],_0x189846[_0xfa20('0x37')]);})[_0xfa20('0x35')]();_0x48a4a1=qs[_0xfa20('0x44')](_0x4b9428,_0x2ec36b);var _0x36a12f={'where':_0x48a4a1[_0xfa20('0x45')]};return db['User']['count'](_0x36a12f)['then'](function(_0x26599a){_0x992d7c[_0xfa20('0x25')]=_0x26599a;if(_0x2ec36b[_0xfa20('0x46')][_0xfa20('0x47')]){_0x48a4a1['include']=[{'all':!![]}];}if(_0x2ec36b[_0xfa20('0x46')][_0xfa20('0x48')]===_0xfa20('0x49')){_0x48a4a1['include']=[{'model':db[_0xfa20('0x4a')],'as':_0xfa20('0x48')}];}if(!_[_0xfa20('0x36')](_0x48a4a1[_0xfa20('0x4b')],'id')){_0x48a4a1[_0xfa20('0x4b')][_0xfa20('0x4c')]('id');}return db[_0xfa20('0x3d')]['findAll'](_0x48a4a1);})['then'](function(_0x466ab3){_0x992d7c[_0xfa20('0x4d')]=_0x466ab3;if(_0x2ec36b[_0xfa20('0x46')]['openTabs']===_0xfa20('0x49')){var _0x1014d7=[];for(var _0x4e9bb9=0x0;_0x4e9bb9<_0x992d7c[_0xfa20('0x4d')][_0xfa20('0x4e')];_0x4e9bb9++){_0x1014d7['push'](get_open_tabs(_0xfa20('0x4f'),_0x992d7c[_0xfa20('0x4d')][_0x4e9bb9][_0xfa20('0x50')]));_0x1014d7[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x51'),_0x992d7c[_0xfa20('0x4d')][_0x4e9bb9][_0xfa20('0x50')]));_0x1014d7['push'](get_open_tabs(_0xfa20('0x52'),_0x992d7c[_0xfa20('0x4d')][_0x4e9bb9][_0xfa20('0x50')]));_0x1014d7[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x53'),_0x992d7c[_0xfa20('0x4d')][_0x4e9bb9][_0xfa20('0x50')]));_0x1014d7[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x54'),_0x992d7c[_0xfa20('0x4d')][_0x4e9bb9]['dataValues']));_0x1014d7[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x55'),_0x992d7c[_0xfa20('0x4d')][_0x4e9bb9][_0xfa20('0x50')]));}return Promise[_0xfa20('0x56')](_0x1014d7)['then'](function(){return _0x992d7c;});}else{return _0x992d7c;}})['then'](respondWithFilteredResult(_0x4cc3eb,_0x48a4a1))[_0xfa20('0x1e')](handleError(_0x4cc3eb,null));};exports[_0xfa20('0x57')]=function(_0x2d76e4,_0x13f96e){var _0x14b663={'raw':![],'where':{'id':_0x2d76e4['params']['id']}},_0x45c138={};_0x45c138[_0xfa20('0x58')]=_[_0xfa20('0x59')](_['keys'](db[_0xfa20('0x3d')]['rawAttributes']),['password','salt']);_0x45c138[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x2d76e4['query']);_0x45c138[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x45c138[_0xfa20('0x58')],_0x45c138[_0xfa20('0x46')]);_0x14b663[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x45c138[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x2d76e4[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x14b663[_0xfa20('0x4b')]=_0x14b663[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x14b663[_0xfa20('0x4b')]:_0x45c138[_0xfa20('0x58')];if(_0x2d76e4[_0xfa20('0x46')][_0xfa20('0x47')]){_0x14b663[_0xfa20('0x5e')]=[{'all':!![]}];}if(_0x2d76e4[_0xfa20('0x46')]['userSetting']==='true'){_0x14b663[_0xfa20('0x5e')]=[{'model':db['UserSetting'],'as':'userSetting'}];}_0x14b663=_[_0xfa20('0x5f')]({},_0x14b663,_0x2d76e4['options']);if(!_[_0xfa20('0x36')](_0x14b663[_0xfa20('0x4b')],'id')){_0x14b663[_0xfa20('0x4b')][_0xfa20('0x4c')]('id');}return db[_0xfa20('0x3d')][_0xfa20('0x60')](_0x14b663)['then'](handleEntityNotFound(_0x13f96e,null))[_0xfa20('0x28')](function(_0x47a492){var _0x335021=[];values=_0x47a492;if(_0x2d76e4['query'][_0xfa20('0x61')]===_0xfa20('0x49')){_0x335021['push'](get_open_tabs(_0xfa20('0x4f'),_0x47a492[_0xfa20('0x50')]));_0x335021['push'](get_open_tabs(_0xfa20('0x51'),_0x47a492[_0xfa20('0x50')]));_0x335021[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x54'),_0x47a492['dataValues']));_0x335021[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x55'),_0x47a492[_0xfa20('0x50')]));_0x335021[_0xfa20('0x4c')](get_open_tabs('fax',_0x47a492[_0xfa20('0x50')]));_0x335021[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x53'),_0x47a492[_0xfa20('0x50')]));return Promise['all'](_0x335021);}else{return values;}})[_0xfa20('0x28')](function(){return values;})[_0xfa20('0x28')](respondWithResult(_0x13f96e,null))[_0xfa20('0x1e')](handleError(_0x13f96e,null));};exports['update']=function(_0x178f78,_0x2acd19){if(_0x178f78[_0xfa20('0x62')]['id']){delete _0x178f78[_0xfa20('0x62')]['id'];}delete _0x178f78[_0xfa20('0x62')][_0xfa20('0x29')];return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x178f78[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x2acd19,null))['then'](saveUpdates(_0x178f78[_0xfa20('0x62')],null))[_0xfa20('0x28')](respondWithResult(_0x2acd19,null))[_0xfa20('0x1e')](handleError(_0x2acd19,null));};exports[_0xfa20('0x64')]=function(_0x31d719,_0x244144){return db['User'][_0xfa20('0x64')]()['then'](respondWithResult(_0x244144,null))[_0xfa20('0x1e')](handleError(_0x244144,null));};exports[_0xfa20('0x65')]=function(_0x317106,_0x2a5edf){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x317106[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x2a5edf,null))['then'](function(_0x146d36){if(_0x146d36){return _0x146d36[_0xfa20('0x65')](_0x317106[_0xfa20('0x62')][_0xfa20('0x66')],_[_0xfa20('0x67')](_0x317106[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{});}})['then'](respondWithResult(_0x2a5edf,null))[_0xfa20('0x1e')](handleError(_0x2a5edf,null));};function validateUser(_0x1fe0d4){return new Promise(function(_0x3cec72,_0x12e2e1){if(_0x1fe0d4[_0xfa20('0x68')])return _0x3cec72(_0x1fe0d4);return db[_0xfa20('0x69')]['findById'](0x1)[_0xfa20('0x28')](function(_0x3be30a){if(_0x3be30a[_0xfa20('0x6a')])authService[_0xfa20('0x6b')](_0x1fe0d4[_0xfa20('0x42')]);db[_0xfa20('0x3d')]['max']('internal')[_0xfa20('0x28')](function(_0x2e2c7c){if(_[_0xfa20('0x6c')](_0x2e2c7c)){_0x1fe0d4[_0xfa20('0x68')]=_0x3be30a[_0xfa20('0x6d')]||0x1;return;}if(_[_0xfa20('0x6c')](_0x3be30a[_0xfa20('0x6d')])||_0x3be30a[_0xfa20('0x6d')]===_0x2e2c7c){_0x1fe0d4[_0xfa20('0x68')]=_0x2e2c7c+0x1;return;}if(_0x3be30a[_0xfa20('0x6d')]>_0x2e2c7c){_0x1fe0d4[_0xfa20('0x68')]=_0x3be30a['min_internal'];return;}return db['sequelize'][_0xfa20('0x46')](_0xfa20('0x6e'),{'type':db['sequelize'][_0xfa20('0x6f')][_0xfa20('0x70')]})['then'](function(_0x6f3a43){if(_0x6f3a43&&_0x6f3a43[_0xfa20('0x4e')]){for(var _0xfe4a83=0x0,_0xb7612a=_0x6f3a43[_0xfa20('0x4e')];_0xfe4a83<_0xb7612a&&_[_0xfa20('0x6c')](_0x1fe0d4[_0xfa20('0x68')]);_0xfe4a83++){if(_0x3be30a[_0xfa20('0x6d')]<=_0x6f3a43[_0xfe4a83][_0xfa20('0x71')]){_0x1fe0d4[_0xfa20('0x68')]=_0x6f3a43[_0xfe4a83][_0xfa20('0x71')];}else if(_0x3be30a['min_internal']>_0x6f3a43[_0xfe4a83][_0xfa20('0x71')]&&_0x3be30a[_0xfa20('0x6d')]<=_0x6f3a43[_0xfe4a83]['to']){_0x1fe0d4[_0xfa20('0x68')]=_0x3be30a[_0xfa20('0x6d')];}}}if(_[_0xfa20('0x6c')](_0x1fe0d4[_0xfa20('0x68')])){_0x1fe0d4[_0xfa20('0x68')]=_0x2e2c7c+0x1;}return _0x3cec72(_0x1fe0d4);});});})[_0xfa20('0x1e')](function(_0x5851cb){_0x12e2e1(_0x5851cb);});});}function updateUser(_0x17d871){return new Promise(function(_0x446c0d,_0x1e4b84){try{if(_0x17d871['voicemail']){_0x17d871[_0xfa20('0x72')]=_0x17d871[_0xfa20('0x68')];_0x17d871['VoiceMail']={'mailbox':_0x17d871[_0xfa20('0x68')],'password':_0x17d871[_0xfa20('0x42')],'fullname':_0x17d871[_0xfa20('0x73')],'email':_0x17d871[_0xfa20('0x74')]};}if(_0x17d871['role']===_0xfa20('0x2a')){if(!_0x17d871[_0xfa20('0x75')])_0x17d871[_0xfa20('0x75')]=[_0xfa20('0x76'),'102','103',_0xfa20('0x77'),_0xfa20('0x78'),_0xfa20('0x79'),_0xfa20('0x7a'),_0xfa20('0x7b'),_0xfa20('0x7c'),'108',_0xfa20('0x7d'),'100',_0xfa20('0x7e'),'114',_0xfa20('0x7f')];}_0x446c0d(_0x17d871);}catch(_0x1efba0){_0x1e4b84(_0x1efba0);}});}exports[_0xfa20('0x80')]=function(_0x1e7b44,_0x2fa359){if(_0x1e7b44[_0xfa20('0x2f')][_0xfa20('0x29')]===_0xfa20('0x2a'))throw new Error(_0xfa20('0x81'));if(_0x1e7b44[_0xfa20('0x62')][_0xfa20('0x29')]===_0xfa20('0x2f')&&_0x1e7b44['user']['role']!==_0xfa20('0x2e')){throw new Error(_0xfa20('0x82'));}if(_0x1e7b44['body'][_0xfa20('0x29')]===_0xfa20('0x2e')&&_0x1e7b44[_0xfa20('0x2f')][_0xfa20('0x29')]!=='admin'){throw new Error(_0xfa20('0x83'));}return licenseUtil[_0xfa20('0x84')]([_0x1e7b44[_0xfa20('0x62')]])[_0xfa20('0x28')](function(){return validateUser(_0x1e7b44[_0xfa20('0x62')]);})[_0xfa20('0x28')](function(_0x6c91d4){return updateUser(_0x6c91d4)['then'](function(_0x5166a5){if(_0x5166a5[_0xfa20('0x29')]===_0xfa20('0x2e')){_0x5166a5[_0xfa20('0x85')]=_0x1e7b44[_0xfa20('0x2f')][_0xfa20('0x85')];delete _0x5166a5[_0xfa20('0x86')];}return _0x5166a5;});})['then'](function(_0x495287){return db['User'][_0xfa20('0x80')](_0x495287,{'include':[{'model':db[_0xfa20('0x87')],'as':'VoiceMail'}]});})[_0xfa20('0x28')](function(_0x4bca76){if(_0x1e7b44[_0xfa20('0x62')]['role']===_0xfa20('0x2f'))return _0x4bca76;if(_0x1e7b44['user'][_0xfa20('0x29')]!=='user')return _0x4bca76;return db[_0xfa20('0x88')][_0xfa20('0x60')]({'where':{'name':_0x4bca76[_0xfa20('0x29')]===_0xfa20('0x2a')?_0xfa20('0x89'):_0xfa20('0x30'),'userProfileId':_0x1e7b44[_0xfa20('0x2f')][_0xfa20('0x86')]},'raw':!![]})[_0xfa20('0x28')](function(_0xa03205){if(!_0xa03205||_0xa03205[_0xfa20('0x8a')]!=0x0)return _0x4bca76;return db['UserProfileResource'][_0xfa20('0x80')]({'name':_0x4bca76[_0xfa20('0x37')],'resourceId':_0x4bca76['id'],'type':_0xa03205[_0xfa20('0x37')],'sectionId':_0xa03205['id']},{})['then'](function(){return _0x4bca76;});})[_0xfa20('0x1e')](function(_0x4c70bf){logger[_0xfa20('0x1b')](_0xfa20('0x8b'),_0x4c70bf);throw _0x4c70bf;});})['then'](respondWithResult(_0x2fa359,0xc9))[_0xfa20('0x1e')](handleError(_0x2fa359,null));};exports[_0xfa20('0x8c')]=function(_0x2728ad,_0x4e4112){var _0xc63a52=_0x2728ad[_0xfa20('0x62')];var _0xdf5fa8=[];if(_0x2728ad[_0xfa20('0x2f')][_0xfa20('0x29')]===_0xfa20('0x2a'))throw new Error(_0xfa20('0x81'));if(_['some'](_0xc63a52,[_0xfa20('0x29'),'user'])&&_0x2728ad[_0xfa20('0x2f')][_0xfa20('0x29')]!==_0xfa20('0x2e')){throw new Error(_0xfa20('0x82'));}if(_[_0xfa20('0x8d')](_0xc63a52,['role',_0xfa20('0x2e')])&&_0x2728ad[_0xfa20('0x2f')]['role']!=='admin'){throw new Error(_0xfa20('0x8e'));}return licenseUtil['checkUserLimits'](_0xc63a52)['then'](function(){return validateUser(_0xc63a52[0x0]);})[_0xfa20('0x28')](function(){for(var _0x42828e=0x1;_0x42828e<_0xc63a52[_0xfa20('0x4e')];_0x42828e++){var _0x369855=_0xc63a52[_0x42828e-0x1]['internal'];if(!_0xc63a52[_0x42828e][_0xfa20('0x68')])_0xc63a52[_0x42828e][_0xfa20('0x68')]=_0x369855+0x1;_0xdf5fa8['push'](validateUser(_0xc63a52[_0x42828e]));}return Promise[_0xfa20('0x56')](_0xdf5fa8);})['then'](function(){_0xdf5fa8=[];for(var _0x4987bd=0x0;_0x4987bd<_0xc63a52[_0xfa20('0x4e')];_0x4987bd++){_0xdf5fa8['push'](updateUser(_0xc63a52[_0x4987bd]));}return Promise[_0xfa20('0x56')](_0xdf5fa8);})[_0xfa20('0x28')](function(){_0xdf5fa8=_0xc63a52[_0xfa20('0x34')](function(_0x42ce4e){return db[_0xfa20('0x3d')][_0xfa20('0x80')](_0x42ce4e,{'include':[{'model':db[_0xfa20('0x87')],'as':'VoiceMail'}]})['then'](function(_0x10e665){_0x42ce4e['id']=_0x10e665['id'];return _0x42ce4e;});});return Promise[_0xfa20('0x56')](_0xdf5fa8);})['then'](function(_0x4ce5ec){if(_0x2728ad['body'][_0xfa20('0x29')]===_0xfa20('0x2f'))return _0x4ce5ec;if(_0x2728ad[_0xfa20('0x2f')][_0xfa20('0x29')]!=='user')return _0x4ce5ec;var _0x1535b0=_[_0xfa20('0x8d')](_0x4ce5ec,function(_0xb0de20){return _0xb0de20[_0xfa20('0x29')]==='agent'||_0xb0de20['role']===_0xfa20('0x31');});if(!_0x1535b0)return _0x4ce5ec;return db['UserProfileSection'][_0xfa20('0x8f')]({'where':{'name':{'$or':[_0xfa20('0x89'),_0xfa20('0x30')]},'userProfileId':_0x2728ad[_0xfa20('0x2f')][_0xfa20('0x86')]},'raw':!![]})['then'](function(_0x531f5d){if(_[_0xfa20('0x90')](_0x531f5d)||!_[_0xfa20('0x8d')](_0x531f5d,[_0xfa20('0x8a'),0x0]))return _0x4ce5ec;_0xdf5fa8=[];var _0x12f19b=_(_0x531f5d)['map'](function(_0xce59d3){if(_0xce59d3['autoAssociation']===0x1)return;return _0xce59d3[_0xfa20('0x37')]===_0xfa20('0x89')?_0xfa20('0x2a'):_0xfa20('0x31');})[_0xfa20('0x91')]()[_0xfa20('0x35')]();for(var _0x25bf9c=0x0;_0x25bf9c<_0x4ce5ec[_0xfa20('0x4e')];_0x25bf9c++){if(!_[_0xfa20('0x36')](_0x12f19b,_0x4ce5ec[_0x25bf9c]['role']))return;var _0x554eef=_0x4ce5ec[_0x25bf9c][_0xfa20('0x29')]==='agent'?_0xfa20('0x89'):_0xfa20('0x30');_0xdf5fa8[_0xfa20('0x4c')](db[_0xfa20('0x38')]['create']({'name':_0x4ce5ec[_0x25bf9c][_0xfa20('0x37')],'resourceId':_0x4ce5ec[_0x25bf9c]['id'],'type':_0x554eef,'sectionId':_[_0xfa20('0x60')](_0x531f5d,[_0xfa20('0x37'),_0x554eef])['id']},{}));}return Promise['all'](_0xdf5fa8);});})[_0xfa20('0x28')](respondWithResult(_0x4e4112,0xc9))[_0xfa20('0x1e')](handleError(_0x4e4112,null));};exports[_0xfa20('0x92')]=function(_0x2b8b55,_0x51f402){if(_0x2b8b55[_0xfa20('0x62')]['id']){delete _0x2b8b55[_0xfa20('0x62')]['id'];}return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x2b8b55[_0xfa20('0x63')]['id']}})['then'](function(_0xd23df4){if(!_0xd23df4)return null;if(_0xd23df4['id']===_0x2b8b55[_0xfa20('0x2f')]['id']){if(!_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x93')]||!_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x94')]){throw new db[(_0xfa20('0x95'))][(_0xfa20('0x96'))](_0xfa20('0x97'));}if(!_0xd23df4[_0xfa20('0x98')](_0x2b8b55['body']['oldPassword'])){throw new db[(_0xfa20('0x95'))][(_0xfa20('0x96'))](_0xfa20('0x99'));}if(_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x93')]===_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x94')]){throw new db[(_0xfa20('0x95'))][(_0xfa20('0x96'))](_0xfa20('0x9a'));}}else if(_0x2b8b55['user']['role']===_0xfa20('0x2e')){if(!_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x94')]){throw new db[(_0xfa20('0x95'))][(_0xfa20('0x96'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x2b8b55[_0xfa20('0x2f')][_0xfa20('0x29')]==='user'){if(!_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x94')]){throw new db[(_0xfa20('0x95'))]['ValidationError'](_0xfa20('0x9b'));}if(_0xd23df4[_0xfa20('0x29')]!==_0xfa20('0x2a')){throw new db[(_0xfa20('0x95'))]['ValidationError'](_0xfa20('0x81'));}}else{throw new db[(_0xfa20('0x95'))]['ValidationError'](_0xfa20('0x81'));}return _0xd23df4;})[_0xfa20('0x28')](handleEntityNotFound(_0x51f402,null))[_0xfa20('0x28')](function(_0x5c9a8e){return db[_0xfa20('0x69')][_0xfa20('0x9c')]({'attributes':['id',_0xfa20('0x6a'),_0xfa20('0x9d'),'passwordHistoryLimit']})[_0xfa20('0x28')](function(_0x3599dd){if(_0x3599dd['securePassword'])authService['validatePasswordPattern'](_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x94')]);if(!_0x3599dd[_0xfa20('0x9d')]||!_0x5c9a8e['previousPasswords'])return _0x5c9a8e;authService[_0xfa20('0x9e')](_0x2b8b55['body'][_0xfa20('0x94')],_0x5c9a8e[_0xfa20('0x9f')],_0x3599dd['passwordHistoryLimit']);return _0x5c9a8e;})[_0xfa20('0x28')](saveUpdates({'password':_0x2b8b55[_0xfa20('0x62')]['newPassword'],'passwordResetAt':_0x2b8b55[_0xfa20('0x2f')]['id']==_0x2b8b55[_0xfa20('0x63')]['id']?moment():null,'previousPasswords':authService[_0xfa20('0xa0')](_0x2b8b55[_0xfa20('0x62')][_0xfa20('0x94')],_0x5c9a8e[_0xfa20('0x9f')])},null));})[_0xfa20('0x28')](respondWithResult(_0x51f402,null))[_0xfa20('0x1e')](handleError(_0x51f402,null));};exports[_0xfa20('0xa1')]=function(_0x3b4cfb,_0x1c057e){var _0x1f228e=_0x3b4cfb['body']['channel'];return db[_0xfa20('0x3d')]['find']({'where':{'id':_0x3b4cfb[_0xfa20('0x63')]['id']},'attributes':['id',_0xfa20('0x37'),'role',_0xfa20('0xa2'),_0xfa20('0xa3'),_0xfa20('0xa4'),_0xfa20('0xa5')]})[_0xfa20('0x28')](handleEntityNotFound(_0x1c057e,null))[_0xfa20('0x28')](function(_0x53a98e){if(_0x53a98e){if(!utils['isValidChannel'](_0x1f228e)){throw new db['Sequelize'][(_0xfa20('0x96'))](_0xfa20('0xa6'));}return _0x53a98e[_0xfa20('0xa7')+_[_0xfa20('0xa8')](_0x1f228e[_0xfa20('0xa9')]())+_0xfa20('0xaa')](_0x3b4cfb[_0xfa20('0x62')][_0xfa20('0x66')],{'penalty':_0x3b4cfb[_0xfa20('0x62')]['penalty']||0x0})['spread'](function(_0x3f4cfc){for(var _0x1df56e=0x0;_0x1df56e<_0x3b4cfb[_0xfa20('0x62')][_0xfa20('0x66')][_0xfa20('0x4e')];_0x1df56e+=0x1){var _0x500639={'UserId':Number(_0x3b4cfb[_0xfa20('0x63')]['id'])};_0x500639[_['capitalize'](_0x1f228e[_0xfa20('0xa9')]())+_0xfa20('0xab')]=Number(_0x3b4cfb['body'][_0xfa20('0x66')][_0x1df56e]);socket[_0xfa20('0xac')](_0xfa20('0x2f')+_['capitalize'](_0x1f228e[_0xfa20('0xa9')]())+_0xfa20('0xad'),_0x500639);}return _0x3f4cfc;})[_0xfa20('0x28')](function(){if(_0x1f228e===_0xfa20('0xae')){return db[_0xfa20('0xaf')][_0xfa20('0x8f')]({'where':{'id':_0x3b4cfb[_0xfa20('0x62')]['ids']||[]},'raw':!![],'attributes':['id','name']});}})['then'](function(_0x536caf){var _0x484098=_0x53a98e['get']({'plain':!![]});var _0xfa5954=[];if(_0x1f228e===_0xfa20('0xae')&&_0x484098[_0xfa20('0x29')]===_0xfa20('0x2a')&&_0x484098[_0xfa20('0xa2')]){for(let _0x48f2d7=0x0;_0x48f2d7<_0x536caf[_0xfa20('0x4e')];_0x48f2d7+=0x1){_0xfa5954[_0xfa20('0x4c')]({'membername':_0x484098['name'],'UserId':_0x484098['id'],'queue_name':_0x536caf[_0x48f2d7]['name'],'VoiceQueueId':_0x536caf[_0x48f2d7]['id'],'interface':_[_0xfa20('0x6c')](_0x484098[_0xfa20('0xa5')])?util[_0xfa20('0xb0')]('SIP/%s',_0x484098[_0xfa20('0x37')]):_0x484098[_0xfa20('0xa5')],'paused':_0x484098[_0xfa20('0xa4')]||![],'penalty':_0x3b4cfb[_0xfa20('0x62')][_0xfa20('0xb1')]||0x0});}return Promise[_0xfa20('0x56')](_0xfa5954['map'](function(_0x1a3944){return db['UserVoiceQueueRt'][_0xfa20('0xb2')](_0x1a3944);}));}return _0x53a98e;});}})[_0xfa20('0x28')](respondWithStatusCode(_0x1c057e,null))[_0xfa20('0x1e')](handleError(_0x1c057e,null));};exports[_0xfa20('0xb3')]=function(_0x26f68d,_0x70c827){var _0x5661f1,_0x598e3d;return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x26f68d[_0xfa20('0x63')]['id']},'attributes':['id',_0xfa20('0x37'),_0xfa20('0x29')]})[_0xfa20('0x28')](handleEntityNotFound(_0x70c827,null))[_0xfa20('0x28')](function(_0x3b9aed){if(_0x3b9aed){_0x5661f1=_0x3b9aed;if(!_0x26f68d[_0xfa20('0x46')]['channel']||!utils[_0xfa20('0xb4')](_0x26f68d[_0xfa20('0x46')][_0xfa20('0xb5')])){throw new db[(_0xfa20('0x95'))]['ValidationError'](_0xfa20('0xa6'));}return _0x3b9aed[_0xfa20('0xb6')+_['capitalize'](_0x26f68d[_0xfa20('0x46')][_0xfa20('0xb5')][_0xfa20('0xa9')]())+_0xfa20('0xaa')](_0x26f68d[_0xfa20('0x46')][_0xfa20('0x66')]);}})[_0xfa20('0x28')](function(_0x5b1dd2){if(_[_0xfa20('0xb7')](_0x26f68d['query'][_0xfa20('0x66')])){for(var _0x2883b4=0x0;_0x2883b4<_0x26f68d[_0xfa20('0x46')]['ids'][_0xfa20('0x4e')];_0x2883b4+=0x1){_0x598e3d={'UserId':Number(_0x26f68d[_0xfa20('0x63')]['id'])};_0x598e3d[_[_0xfa20('0xa8')](_0x26f68d[_0xfa20('0x46')][_0xfa20('0xb5')]['toLowerCase']())+_0xfa20('0xab')]=Number(_0x26f68d[_0xfa20('0x46')][_0xfa20('0x66')][_0x2883b4]);socket[_0xfa20('0xac')](_0xfa20('0x2f')+_[_0xfa20('0xa8')](_0x26f68d[_0xfa20('0x46')][_0xfa20('0xb5')][_0xfa20('0xa9')]())+'Queue:remove',_0x598e3d);}}else{_0x598e3d={'UserId':Number(_0x26f68d[_0xfa20('0x63')]['id'])};_0x598e3d[_['capitalize'](_0x26f68d[_0xfa20('0x46')]['channel'][_0xfa20('0xa9')]())+_0xfa20('0xab')]=Number(_0x26f68d[_0xfa20('0x46')]['ids']);socket[_0xfa20('0xac')](_0xfa20('0x2f')+_['capitalize'](_0x26f68d[_0xfa20('0x46')]['channel'][_0xfa20('0xa9')]())+_0xfa20('0xb8'),_0x598e3d);}return _0x5b1dd2;})[_0xfa20('0x28')](function(){if(_0x26f68d[_0xfa20('0x46')]['channel']===_0xfa20('0xae')){return db[_0xfa20('0xb9')][_0xfa20('0x2c')]({'where':{'UserId':_0x26f68d[_0xfa20('0x63')]['id'],'VoiceQueueId':_0x26f68d[_0xfa20('0x46')][_0xfa20('0x66')]},'individualHooks':!![]})[_0xfa20('0x28')](function(){return _0x5661f1;});}return _0x5661f1;})[_0xfa20('0x28')](respondWithStatusCode(_0x70c827,null))[_0xfa20('0x1e')](handleError(_0x70c827,null));};exports[_0xfa20('0xba')]=function(_0x3c8909,_0x1dccdb){_0x3c8909[_0xfa20('0x62')][_0xfa20('0xbb')]=_0x3c8909['file'][_0xfa20('0xbc')];return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x3c8909['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x1dccdb,null))['then'](saveUpdates(_0x3c8909[_0xfa20('0x62')],null))[_0xfa20('0x28')](respondWithResult(_0x1dccdb,null))['catch'](handleError(_0x1dccdb,null));};exports['getAvatar']=function(_0x1356d2,_0x4bc198){var _0x2b0ea0=path[_0xfa20('0xbd')](config[_0xfa20('0xbe')],_0xfa20('0xbf'));return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x1356d2[_0xfa20('0x63')]['id']},'attributes':['id',_0xfa20('0xbb')],'raw':!![]})['then'](handleEntityNotFound(_0x4bc198,null))[_0xfa20('0x28')](function(_0x198429){if(_0x198429){if(_[_0xfa20('0x6c')](_0x198429[_0xfa20('0xbb')])){return _0x4bc198[_0xfa20('0xc0')](_0x2b0ea0);}else{if(!fs[_0xfa20('0xc1')](path[_0xfa20('0xbd')](config[_0xfa20('0xbe')],_0xfa20('0xc2'),_0x198429[_0xfa20('0xbb')]))){return _0x4bc198[_0xfa20('0xc0')](_0x2b0ea0);}return _0x4bc198['download'](path['join'](config[_0xfa20('0xbe')],_0xfa20('0xc2'),_0x198429[_0xfa20('0xbb')]));}}})['catch'](handleError(_0x4bc198,null));};exports['getOpenTabs']=function(_0x5403c4,_0x4bde2d){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x5403c4[_0xfa20('0x63')]['id']},'attributes':['id']})[_0xfa20('0x28')](handleEntityNotFound(_0x4bde2d,null))['then'](function(_0x14147f){var _0x4ed533=[];values=_0x14147f[_0xfa20('0x50')];_0x4ed533[_0xfa20('0x4c')](get_open_tabs(_0xfa20('0x4f'),_0x14147f['dataValues']));_0x4ed533['push'](get_open_tabs(_0xfa20('0x51'),_0x14147f['dataValues']));_0x4ed533['push'](get_open_tabs(_0xfa20('0x54'),_0x14147f[_0xfa20('0x50')]));_0x4ed533['push'](get_open_tabs('whatsapp',_0x14147f['dataValues']));_0x4ed533['push'](get_open_tabs(_0xfa20('0x52'),_0x14147f[_0xfa20('0x50')]));_0x4ed533[_0xfa20('0x4c')](get_open_tabs('mail',_0x14147f[_0xfa20('0x50')]));return Promise['all'](_0x4ed533);})[_0xfa20('0x28')](function(_0x27ef24){if(_0x27ef24){var _0x50548c=_[_0xfa20('0x34')](values['ChatOpenTabs'],function(_0x4e84cc){return{'channel':_0xfa20('0xc3'),'id':_0x4e84cc['id'],'createdAt':_0x4e84cc[_0xfa20('0xc4')]};});var _0x493bc1=_[_0xfa20('0x34')](values[_0xfa20('0xc5')],function(_0x59a7c7){return{'channel':_0xfa20('0xc6'),'id':_0x59a7c7['id'],'createdAt':_0x59a7c7[_0xfa20('0xc4')]};});var _0x344372=_[_0xfa20('0x34')](values[_0xfa20('0xc7')],function(_0x11968d){return{'channel':_0xfa20('0xc8'),'id':_0x11968d['id'],'createdAt':_0x11968d[_0xfa20('0xc4')]};});var _0x5c91f0=_[_0xfa20('0x34')](values['MailOpenTabs'],function(_0x5cc2f2){return{'channel':_0xfa20('0xc9'),'id':_0x5cc2f2['id'],'createdAt':_0x5cc2f2[_0xfa20('0xc4')]};});var _0x4de157=_[_0xfa20('0x34')](values[_0xfa20('0xca')],function(_0x1cd0fa){return{'channel':'SMS','id':_0x1cd0fa['id'],'createdAt':_0x1cd0fa[_0xfa20('0xc4')]};});var _0x295a27=_[_0xfa20('0x34')](values[_0xfa20('0xcb')],function(_0x1b9bb4){return{'channel':'WHATSAPP','id':_0x1b9bb4['id'],'createdAt':_0x1b9bb4['createdAt']};});var _0x174c7a=_['concat'](_0x50548c,_0x493bc1,_0x344372,_0x5c91f0,_0x4de157,_0x295a27);var _0x25043c={'count':_0x174c7a[_0xfa20('0x4e')],'rows':_0x174c7a};return _0x25043c;}else return null;})[_0xfa20('0x28')](respondWithResult(_0x4bde2d,null))[_0xfa20('0x1e')](handleError(_0x4bde2d,null));};exports[_0xfa20('0xcc')]=function(_0x1a53ae,_0x4b808d){var _0x44fd9c={};return db['User'][_0xfa20('0x9c')]({'where':{'id':_0x1a53ae['params']['id']}})[_0xfa20('0x28')](function(_0x3b10e1){if(!_0x3b10e1){throw new APINotFoundError(util[_0xfa20('0xb0')](_0xfa20('0xcd'),_0x1a53ae[_0xfa20('0x63')]['id']));}return contacts['describe']();})['then'](function(_0xff8b1){_0x1a53ae[_0xfa20('0x46')][_0xfa20('0x3d')]=_0x1a53ae[_0xfa20('0x63')]['id'];_0x44fd9c=qs[_0xfa20('0x44')](_0xff8b1,_0x1a53ae);if(_0x1a53ae[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0x47'))){_0x44fd9c[_0xfa20('0x5e')]=[{'model':db[_0xfa20('0xcf')],'as':_0xfa20('0xd0'),'required':![]},{'model':db[_0xfa20('0xd1')],'as':'Tags','attributes':['id',_0xfa20('0x37'),_0xfa20('0xd2')],'where':_0x1a53ae['query'][_0xfa20('0xd3')]?{'id':_0x1a53ae['query'][_0xfa20('0xd3')]}:undefined,'required':_0x1a53ae['query'][_0xfa20('0xd3')]?!![]:![]}];}return contacts[_0xfa20('0x8f')](_0x1a53ae['query'],_0x1a53ae[_0xfa20('0x2f')],_0x44fd9c,_0xff8b1);})[_0xfa20('0x28')](respondWithFilteredResult(_0x4b808d,_0x44fd9c))['catch'](APIHandleError(_0x4b808d));};exports[_0xfa20('0xd4')]=function(_0x24b731,_0x3e396c){var _0x345b3e;var _0x24f59e={};var _0x4455d5;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x24b731[_0xfa20('0x63')]['id']},'attributes':['id',_0xfa20('0x37'),_0xfa20('0x29')]})[_0xfa20('0x28')](handleEntityNotFound(_0x3e396c,null))[_0xfa20('0x28')](function(_0x2fa25f){if(!utils[_0xfa20('0xb4')](_0x24b731[_0xfa20('0x46')][_0xfa20('0xb5')])){throw new db[(_0xfa20('0x95'))][(_0xfa20('0x96'))](_0xfa20('0xa6'));}_0x345b3e=_0x2fa25f;var _0x1b1b91={};_0x1b1b91['model']=_[_0xfa20('0x5a')](db[_['capitalize'](_0x24b731['query'][_0xfa20('0xb5')])+_0xfa20('0xd5')][_0xfa20('0x3e')]);_0x1b1b91[_0xfa20('0x46')]=_['keys'](_0x24b731[_0xfa20('0x46')]);_0x1b1b91[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x1b1b91[_0xfa20('0x58')],_0x1b1b91[_0xfa20('0x46')]);_0x24f59e[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x1b1b91[_0xfa20('0x58')],qs['fields'](_0x24b731['query'][_0xfa20('0x5d')]));_0x24f59e[_0xfa20('0x4b')]=_0x24f59e[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x24f59e[_0xfa20('0x4b')]:_0x1b1b91[_0xfa20('0x58')];_0x24f59e[_0xfa20('0xd6')]=qs['sort'](_0x24b731[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x24f59e['where']=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x24b731[_0xfa20('0x46')],_0x1b1b91[_0xfa20('0x5b')]));if(_0x24b731[_0xfa20('0x46')][_0xfa20('0x32')]){_0x24f59e['where']=_[_0xfa20('0x5f')](_0x24f59e[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x24f59e[_0xfa20('0x4b')],function(_0x37ec1e){var _0x2d1266={};_0x2d1266[_0x37ec1e]={'$like':'%'+_0x24b731[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x2d1266;})});}_0x24f59e=_[_0xfa20('0x5f')]({},_0x24f59e,_0x24b731['options']);switch(_0x345b3e[_0xfa20('0x29')]){case'admin':return db[_[_0xfa20('0xa8')](_0x24b731[_0xfa20('0x46')][_0xfa20('0xb5')])+_0xfa20('0xd5')][_0xfa20('0x8f')](_0x24f59e);case _0xfa20('0x2f'):case _0xfa20('0x2a'):return _0x345b3e[_0xfa20('0x2d')+_[_0xfa20('0xa8')](_0x24b731[_0xfa20('0x46')]['channel'])+'Queues'](_0x24f59e);default:throw new db[(_0xfa20('0x95'))]['ValidationError'](_0xfa20('0xd9'));}})[_0xfa20('0x28')](function(_0x24d440){_0x4455d5=_0x24d440[_0xfa20('0x4e')];if(!_0x24b731[_0xfa20('0x46')]['hasOwnProperty'](_0xfa20('0xda'))){_0x24f59e['limit']=qs['limit'](_0x24b731['query'][_0xfa20('0x24')]);_0x24f59e[_0xfa20('0x22')]=qs['offset'](_0x24b731[_0xfa20('0x46')][_0xfa20('0x22')]);}switch(_0x345b3e[_0xfa20('0x29')]){case _0xfa20('0x2e'):return db[_[_0xfa20('0xa8')](_0x24b731['query'][_0xfa20('0xb5')])+_0xfa20('0xd5')][_0xfa20('0x8f')](_0x24f59e);case'user':case _0xfa20('0x2a'):return _0x345b3e[_0xfa20('0x2d')+_[_0xfa20('0xa8')](_0x24b731[_0xfa20('0x46')][_0xfa20('0xb5')])+'Queues'](_0x24f59e);}})['then'](function(_0xbe217a){return{'count':_0x4455d5,'rows':_0xbe217a};})['then'](respondWithResult(_0x3e396c,null))[_0xfa20('0x1e')](handleError(_0x3e396c,null));};exports[_0xfa20('0xdb')]=function(_0x42971f,_0x564e1d){var _0x46cbe0={};var _0x47ec8d={};var _0x58782e;var _0x437b98;return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x42971f['params']['id']}})['then'](handleEntityNotFound(_0x564e1d,null))[_0xfa20('0x28')](function(_0x50f9bb){if(_0x50f9bb){_0x58782e=_0x50f9bb;_0x47ec8d[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0xb9')][_0xfa20('0x3e')]);_0x47ec8d[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x42971f[_0xfa20('0x46')]);_0x47ec8d[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x47ec8d[_0xfa20('0x58')],_0x47ec8d[_0xfa20('0x46')]);_0x46cbe0[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x47ec8d[_0xfa20('0x58')],qs['fields'](_0x42971f['query']['fields']));_0x46cbe0[_0xfa20('0x4b')]=_0x46cbe0['attributes'][_0xfa20('0x4e')]?_0x46cbe0[_0xfa20('0x4b')]:_0x47ec8d[_0xfa20('0x58')];_0x46cbe0[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x42971f['query']['sort']);_0x46cbe0[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x42971f['query'],_0x47ec8d[_0xfa20('0x5b')]));if(_0x42971f[_0xfa20('0x46')][_0xfa20('0x32')]){_0x46cbe0[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x46cbe0[_0xfa20('0x45')],{'$or':_['map'](_0x46cbe0['attributes'],function(_0x31989e){var _0x979751={};_0x979751[_0x31989e]={'$like':'%'+_0x42971f[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x979751;})});}_0x46cbe0=_['merge']({},_0x46cbe0,_0x42971f[_0xfa20('0xdc')]);return _0x58782e[_0xfa20('0xdb')](_0x46cbe0);}})[_0xfa20('0x28')](function(_0x4238d1){if(_0x4238d1){_0x437b98=_0x4238d1[_0xfa20('0x4e')];if(!_0x42971f[_0xfa20('0x46')][_0xfa20('0xce')]('nolimit')){_0x46cbe0[_0xfa20('0x24')]=qs['limit'](_0x42971f['query'][_0xfa20('0x24')]);_0x46cbe0[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x42971f[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x58782e[_0xfa20('0xdb')](_0x46cbe0);}})[_0xfa20('0x28')](function(_0x1676ba){if(_0x1676ba){return _0x1676ba?{'count':_0x437b98,'rows':_0x1676ba}:null;}})[_0xfa20('0x28')](respondWithResult(_0x564e1d,null))['catch'](handleError(_0x564e1d,null));};exports[_0xfa20('0xdd')]=function(_0xeb5624,_0x2f28d6){var _0x6ccac4={};var _0x3dc674={};var _0x4104e8;var _0x29d786;return db['User'][_0xfa20('0x9c')]({'where':{'id':_0xeb5624[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x2f28d6,null))[_0xfa20('0x28')](function(_0x19ac79){if(_0x19ac79){_0x4104e8=_0x19ac79;_0x3dc674[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0xde')][_0xfa20('0x3e')]);_0x3dc674['query']=_[_0xfa20('0x5a')](_0xeb5624[_0xfa20('0x46')]);_0x3dc674['filters']=_['intersection'](_0x3dc674[_0xfa20('0x58')],_0x3dc674[_0xfa20('0x46')]);_0x6ccac4[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x3dc674['model'],qs[_0xfa20('0x5d')](_0xeb5624[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x6ccac4[_0xfa20('0x4b')]=_0x6ccac4['attributes'][_0xfa20('0x4e')]?_0x6ccac4['attributes']:_0x3dc674[_0xfa20('0x58')];_0x6ccac4[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0xeb5624[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x6ccac4[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0xeb5624[_0xfa20('0x46')],_0x3dc674['filters']));if(_0xeb5624[_0xfa20('0x46')][_0xfa20('0x32')]){_0x6ccac4[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x6ccac4[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x6ccac4[_0xfa20('0x4b')],function(_0x176f0b){var _0x50501a={};_0x50501a[_0x176f0b]={'$like':'%'+_0xeb5624[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x50501a;})});}_0x6ccac4=_['merge']({},_0x6ccac4,_0xeb5624[_0xfa20('0xdc')]);return _0x4104e8[_0xfa20('0xdd')](_0x6ccac4);}})['then'](function(_0x150d71){if(_0x150d71){_0x29d786=_0x150d71[_0xfa20('0x4e')];if(!_0xeb5624[_0xfa20('0x46')][_0xfa20('0xce')]('nolimit')){_0x6ccac4[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0xeb5624[_0xfa20('0x46')][_0xfa20('0x24')]);_0x6ccac4[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0xeb5624[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x4104e8[_0xfa20('0xdd')](_0x6ccac4);}})[_0xfa20('0x28')](function(_0x503609){if(_0x503609){return _0x503609?{'count':_0x29d786,'rows':_0x503609}:null;}})[_0xfa20('0x28')](respondWithResult(_0x2f28d6,null))['catch'](handleError(_0x2f28d6,null));};exports[_0xfa20('0xdf')]=function(_0x6bd740,_0x33733d){var _0x4ea1ad={'raw':!![],'where':{}};var _0x5cc11e={};var _0xc7873e={'count':0x0,'rows':[]};return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x6bd740[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x33733d,null))[_0xfa20('0x28')](function(_0x3f70db){if(_0x3f70db){_0x5cc11e[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0xe0')][_0xfa20('0x3e')]);_0x5cc11e[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x6bd740[_0xfa20('0x46')]);_0x5cc11e['filters']=_[_0xfa20('0x5c')](_0x5cc11e[_0xfa20('0x58')],_0x5cc11e[_0xfa20('0x46')]);_0x4ea1ad[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x5cc11e['model'],qs[_0xfa20('0x5d')](_0x6bd740[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x4ea1ad[_0xfa20('0x4b')]=_0x4ea1ad[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x4ea1ad['attributes']:_0x5cc11e[_0xfa20('0x58')];if(!_0x6bd740[_0xfa20('0x46')][_0xfa20('0xce')]('nolimit')){_0x4ea1ad['limit']=qs[_0xfa20('0x24')](_0x6bd740[_0xfa20('0x46')]['limit']);_0x4ea1ad['offset']=qs[_0xfa20('0x22')](_0x6bd740['query'][_0xfa20('0x22')]);}_0x4ea1ad['order']=qs[_0xfa20('0xd7')](_0x6bd740[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x4ea1ad[_0xfa20('0x45')]=qs['filters'](_[_0xfa20('0xd8')](_0x6bd740[_0xfa20('0x46')],_0x5cc11e[_0xfa20('0x5b')]));_0x4ea1ad[_0xfa20('0x45')]['UserId']=_0x3f70db['id'];if(_0x6bd740[_0xfa20('0x46')]['filter']){_0x4ea1ad[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x4ea1ad['where'],{'$or':_['map'](_0x4ea1ad[_0xfa20('0x4b')],function(_0x95a17f){var _0x35552d={};_0x35552d[_0x95a17f]={'$like':'%'+_0x6bd740['query']['filter']+'%'};return _0x35552d;})});}_0x4ea1ad=_[_0xfa20('0x5f')]({},_0x4ea1ad,_0x6bd740[_0xfa20('0xdc')]);return db['VoiceRecording']['count']({'where':_0x4ea1ad[_0xfa20('0x45')]})['then'](function(_0x2de752){_0xc7873e[_0xfa20('0x25')]=_0x2de752;if(_0x6bd740[_0xfa20('0x46')][_0xfa20('0x47')]){_0x4ea1ad[_0xfa20('0x5e')]=[{'all':!![]}];}return db['VoiceRecording'][_0xfa20('0x8f')](_0x4ea1ad);})[_0xfa20('0x28')](function(_0x12caf3){_0xc7873e[_0xfa20('0x4d')]=_0x12caf3;return _0xc7873e;});}})[_0xfa20('0x28')](respondWithFilteredResult(_0x33733d,_0x4ea1ad))['catch'](handleError(_0x33733d,null));};exports['getScreenRecordings']=function(_0x169151,_0x2ed4c3){var _0x39cb48={'raw':!![],'where':{}};var _0x213dc1={};var _0x1abc7c={'count':0x0,'rows':[]};return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x169151['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x2ed4c3,null))['then'](function(_0x497b52){if(_0x497b52){_0x213dc1[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0xe1')][_0xfa20('0x3e')]);_0x213dc1['query']=_['keys'](_0x169151[_0xfa20('0x46')]);_0x213dc1['filters']=_[_0xfa20('0x5c')](_0x213dc1[_0xfa20('0x58')],_0x213dc1[_0xfa20('0x46')]);_0x39cb48[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x213dc1[_0xfa20('0x58')],qs['fields'](_0x169151[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x39cb48[_0xfa20('0x4b')]=_0x39cb48[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x39cb48[_0xfa20('0x4b')]:_0x213dc1[_0xfa20('0x58')];if(!_0x169151[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x39cb48[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x169151[_0xfa20('0x46')][_0xfa20('0x24')]);_0x39cb48[_0xfa20('0x22')]=qs['offset'](_0x169151[_0xfa20('0x46')][_0xfa20('0x22')]);}_0x39cb48['order']=qs[_0xfa20('0xd7')](_0x169151[_0xfa20('0x46')]['sort']);_0x39cb48[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x169151['query'],_0x213dc1[_0xfa20('0x5b')]));_0x39cb48[_0xfa20('0x45')][_0xfa20('0xe2')]=_0x497b52['id'];if(_0x169151[_0xfa20('0x46')][_0xfa20('0x32')]){_0x39cb48[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x39cb48[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x39cb48[_0xfa20('0x4b')],function(_0x37ad30){var _0x1fc7bc={};_0x1fc7bc[_0x37ad30]={'$like':'%'+_0x169151[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x1fc7bc;})});}_0x39cb48=_[_0xfa20('0x5f')]({},_0x39cb48,_0x169151[_0xfa20('0xdc')]);return db[_0xfa20('0xe1')][_0xfa20('0x25')]({'where':_0x39cb48[_0xfa20('0x45')]})[_0xfa20('0x28')](function(_0x523938){_0x1abc7c[_0xfa20('0x25')]=_0x523938;if(_0x169151[_0xfa20('0x46')]['includeAll']){_0x39cb48[_0xfa20('0x5e')]=[{'all':!![]}];}return db[_0xfa20('0xe1')][_0xfa20('0x8f')](_0x39cb48);})['then'](function(_0x486251){_0x1abc7c[_0xfa20('0x4d')]=_0x486251;return _0x1abc7c;});}})[_0xfa20('0x28')](respondWithFilteredResult(_0x2ed4c3,_0x39cb48))['catch'](handleError(_0x2ed4c3,null));};exports[_0xfa20('0xe3')]=function(_0x5c7e29,_0x275691){var _0x2a07ab={};var _0x4a1eb9={};var _0x518ca6;var _0xdbebc1;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x5c7e29['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x275691,null))[_0xfa20('0x28')](function(_0x17c0de){if(_0x17c0de){_0x518ca6=_0x17c0de;_0x4a1eb9['model']=_['keys'](db['ChatInteraction'][_0xfa20('0x3e')]);_0x4a1eb9['query']=_['keys'](_0x5c7e29[_0xfa20('0x46')]);_0x4a1eb9['filters']=_[_0xfa20('0x5c')](_0x4a1eb9[_0xfa20('0x58')],_0x4a1eb9['query']);_0x2a07ab[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x4a1eb9['model'],qs['fields'](_0x5c7e29[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x2a07ab[_0xfa20('0x4b')]=_0x2a07ab[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x2a07ab[_0xfa20('0x4b')]:_0x4a1eb9['model'];_0x2a07ab[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x5c7e29[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x2a07ab['where']=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x5c7e29[_0xfa20('0x46')],_0x4a1eb9['filters']));if(_0x5c7e29[_0xfa20('0x46')][_0xfa20('0x32')]){_0x2a07ab[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x2a07ab[_0xfa20('0x45')],{'$or':_['map'](_0x2a07ab[_0xfa20('0x4b')],function(_0x27517e){var _0x52ce30={};_0x52ce30[_0x27517e]={'$like':'%'+_0x5c7e29['query'][_0xfa20('0x32')]+'%'};return _0x52ce30;})});}_0x2a07ab=_[_0xfa20('0x5f')]({},_0x2a07ab,_0x5c7e29[_0xfa20('0xdc')]);return _0x518ca6[_0xfa20('0xe3')](_0x2a07ab);}})[_0xfa20('0x28')](function(_0x1505ff){if(_0x1505ff){_0xdbebc1=_0x1505ff[_0xfa20('0x4e')];if(!_0x5c7e29[_0xfa20('0x46')]['hasOwnProperty'](_0xfa20('0xda'))){_0x2a07ab[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x5c7e29['query'][_0xfa20('0x24')]);_0x2a07ab[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x5c7e29[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x518ca6[_0xfa20('0xe3')](_0x2a07ab);}})[_0xfa20('0x28')](function(_0x598ef0){if(_0x598ef0){return _0x598ef0?{'count':_0xdbebc1,'rows':_0x598ef0}:null;}})[_0xfa20('0x28')](respondWithResult(_0x275691,null))[_0xfa20('0x1e')](handleError(_0x275691,null));};exports[_0xfa20('0xe4')]=function(_0x464806,_0x11862e){var _0x77ca={};var _0x2b064d={};var _0x5bf2ce;var _0x38209f;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x464806['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x11862e,null))[_0xfa20('0x28')](function(_0x19de2f){if(_0x19de2f){_0x5bf2ce=_0x19de2f;_0x2b064d[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db['OpenchannelInteraction']['rawAttributes']);_0x2b064d[_0xfa20('0x46')]=_['keys'](_0x464806['query']);_0x2b064d[_0xfa20('0x5b')]=_['intersection'](_0x2b064d[_0xfa20('0x58')],_0x2b064d[_0xfa20('0x46')]);_0x77ca[_0xfa20('0x4b')]=_['intersection'](_0x2b064d[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x464806[_0xfa20('0x46')]['fields']));_0x77ca[_0xfa20('0x4b')]=_0x77ca[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x77ca[_0xfa20('0x4b')]:_0x2b064d[_0xfa20('0x58')];_0x77ca[_0xfa20('0xd6')]=qs['sort'](_0x464806['query'][_0xfa20('0xd7')]);_0x77ca[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x464806[_0xfa20('0x46')],_0x2b064d[_0xfa20('0x5b')]));if(_0x464806[_0xfa20('0x46')][_0xfa20('0x32')]){_0x77ca['where']=_[_0xfa20('0x5f')](_0x77ca['where'],{'$or':_[_0xfa20('0x34')](_0x77ca[_0xfa20('0x4b')],function(_0x2d851f){var _0x1fccb5={};_0x1fccb5[_0x2d851f]={'$like':'%'+_0x464806[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x1fccb5;})});}_0x77ca=_[_0xfa20('0x5f')]({},_0x77ca,_0x464806[_0xfa20('0xdc')]);return _0x5bf2ce['getOpenchannelInteractions'](_0x77ca);}})[_0xfa20('0x28')](function(_0xd6ab76){if(_0xd6ab76){_0x38209f=_0xd6ab76[_0xfa20('0x4e')];if(!_0x464806[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x77ca[_0xfa20('0x24')]=qs['limit'](_0x464806[_0xfa20('0x46')][_0xfa20('0x24')]);_0x77ca[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x464806['query'][_0xfa20('0x22')]);}return _0x5bf2ce[_0xfa20('0xe4')](_0x77ca);}})['then'](function(_0x46b3d5){if(_0x46b3d5){return _0x46b3d5?{'count':_0x38209f,'rows':_0x46b3d5}:null;}})['then'](respondWithResult(_0x11862e,null))[_0xfa20('0x1e')](handleError(_0x11862e,null));};exports[_0xfa20('0xe5')]=function(_0x54507e,_0xdfb238){var _0x503f34={'raw':!![],'where':{}};var _0x2573f0={};var _0x41deb9={'count':0x0,'rows':[]};return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x54507e['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0xdfb238,null))[_0xfa20('0x28')](function(_0x55b999){if(_0x55b999){_0x2573f0[_0xfa20('0x58')]=_['keys'](db[_0xfa20('0xe6')]['rawAttributes']);_0x2573f0[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x54507e['query']);_0x2573f0['filters']=_[_0xfa20('0x5c')](_0x2573f0[_0xfa20('0x58')],_0x2573f0[_0xfa20('0x46')]);_0x503f34['attributes']=_[_0xfa20('0x5c')](_0x2573f0['model'],qs[_0xfa20('0x5d')](_0x54507e[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x503f34['attributes']=_0x503f34[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x503f34[_0xfa20('0x4b')]:_0x2573f0[_0xfa20('0x58')];if(!_0x54507e[_0xfa20('0x46')]['hasOwnProperty'](_0xfa20('0xda'))){_0x503f34[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x54507e[_0xfa20('0x46')]['limit']);_0x503f34[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x54507e[_0xfa20('0x46')][_0xfa20('0x22')]);}_0x503f34[_0xfa20('0xd6')]=qs['sort'](_0x54507e[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x503f34[_0xfa20('0x45')]=qs['filters'](_[_0xfa20('0xd8')](_0x54507e[_0xfa20('0x46')],_0x2573f0[_0xfa20('0x5b')]));_0x503f34[_0xfa20('0x45')][_0xfa20('0xe2')]=_0x55b999['id'];if(_0x54507e['query'][_0xfa20('0x32')]){_0x503f34[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x503f34[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x503f34[_0xfa20('0x4b')],function(_0x194cf1){var _0x4d0e17={};_0x4d0e17[_0x194cf1]={'$like':'%'+_0x54507e['query'][_0xfa20('0x32')]+'%'};return _0x4d0e17;})});}_0x503f34=_[_0xfa20('0x5f')]({},_0x503f34,_0x54507e[_0xfa20('0xdc')]);return db['MailInteraction'][_0xfa20('0x25')]({'where':_0x503f34[_0xfa20('0x45')]})[_0xfa20('0x28')](function(_0x12afac){_0x41deb9[_0xfa20('0x25')]=_0x12afac;if(_0x54507e['query'][_0xfa20('0x47')]){_0x503f34[_0xfa20('0x5e')]=[{'all':!![]}];}return db[_0xfa20('0xe6')][_0xfa20('0x8f')](_0x503f34);})['then'](function(_0x1b5872){_0x41deb9['rows']=_0x1b5872;return _0x41deb9;});}})['then'](respondWithFilteredResult(_0xdfb238,_0x503f34))[_0xfa20('0x1e')](handleError(_0xdfb238,null));};exports['getSmsInteractions']=function(_0x106d4b,_0x338205){var _0x4eac05={};var _0x2afa1a={};var _0x3a5b23;var _0xb9441;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x106d4b[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x338205,null))[_0xfa20('0x28')](function(_0x5d8b39){if(_0x5d8b39){_0x3a5b23=_0x5d8b39;_0x2afa1a[_0xfa20('0x58')]=_['keys'](db[_0xfa20('0xe7')][_0xfa20('0x3e')]);_0x2afa1a['query']=_[_0xfa20('0x5a')](_0x106d4b[_0xfa20('0x46')]);_0x2afa1a[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x2afa1a[_0xfa20('0x58')],_0x2afa1a[_0xfa20('0x46')]);_0x4eac05[_0xfa20('0x4b')]=_['intersection'](_0x2afa1a[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x106d4b[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x4eac05[_0xfa20('0x4b')]=_0x4eac05[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x4eac05['attributes']:_0x2afa1a[_0xfa20('0x58')];_0x4eac05[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x106d4b['query']['sort']);_0x4eac05[_0xfa20('0x45')]=qs['filters'](_[_0xfa20('0xd8')](_0x106d4b[_0xfa20('0x46')],_0x2afa1a[_0xfa20('0x5b')]));if(_0x106d4b['query'][_0xfa20('0x32')]){_0x4eac05[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x4eac05[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x4eac05['attributes'],function(_0x1f8436){var _0x1471d0={};_0x1471d0[_0x1f8436]={'$like':'%'+_0x106d4b[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x1471d0;})});}_0x4eac05=_[_0xfa20('0x5f')]({},_0x4eac05,_0x106d4b['options']);return _0x3a5b23[_0xfa20('0xe8')](_0x4eac05);}})[_0xfa20('0x28')](function(_0x64271f){if(_0x64271f){_0xb9441=_0x64271f[_0xfa20('0x4e')];if(!_0x106d4b['query'][_0xfa20('0xce')](_0xfa20('0xda'))){_0x4eac05[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x106d4b['query'][_0xfa20('0x24')]);_0x4eac05[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x106d4b[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x3a5b23['getSmsInteractions'](_0x4eac05);}})['then'](function(_0x546cd3){if(_0x546cd3){return _0x546cd3?{'count':_0xb9441,'rows':_0x546cd3}:null;}})['then'](respondWithResult(_0x338205,null))['catch'](handleError(_0x338205,null));};exports[_0xfa20('0xe9')]=function(_0x3f3a0d,_0x153539){var _0x52abcf={};var _0x116b36={};var _0x20d36f;var _0x11b899;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x3f3a0d['params']['id']}})['then'](handleEntityNotFound(_0x153539,null))['then'](function(_0x5ed173){if(_0x5ed173){_0x20d36f=_0x5ed173;_0x116b36[_0xfa20('0x58')]=_['keys'](db['FaxInteraction'][_0xfa20('0x3e')]);_0x116b36[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x3f3a0d[_0xfa20('0x46')]);_0x116b36[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x116b36['model'],_0x116b36[_0xfa20('0x46')]);_0x52abcf[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x116b36[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x3f3a0d[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x52abcf[_0xfa20('0x4b')]=_0x52abcf['attributes']['length']?_0x52abcf['attributes']:_0x116b36[_0xfa20('0x58')];_0x52abcf[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x3f3a0d[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x52abcf[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x3f3a0d[_0xfa20('0x46')],_0x116b36[_0xfa20('0x5b')]));if(_0x3f3a0d[_0xfa20('0x46')]['filter']){_0x52abcf[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x52abcf[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x52abcf[_0xfa20('0x4b')],function(_0x1cfee0){var _0x34777f={};_0x34777f[_0x1cfee0]={'$like':'%'+_0x3f3a0d['query'][_0xfa20('0x32')]+'%'};return _0x34777f;})});}_0x52abcf=_['merge']({},_0x52abcf,_0x3f3a0d['options']);return _0x20d36f[_0xfa20('0xe9')](_0x52abcf);}})['then'](function(_0x25c5ec){if(_0x25c5ec){_0x11b899=_0x25c5ec['length'];if(!_0x3f3a0d[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x52abcf[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x3f3a0d[_0xfa20('0x46')][_0xfa20('0x24')]);_0x52abcf[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x3f3a0d['query']['offset']);}return _0x20d36f[_0xfa20('0xe9')](_0x52abcf);}})['then'](function(_0x41b03d){if(_0x41b03d){return _0x41b03d?{'count':_0x11b899,'rows':_0x41b03d}:null;}})[_0xfa20('0x28')](respondWithResult(_0x153539,null))[_0xfa20('0x1e')](handleError(_0x153539,null));};exports['getWhatsappInteractions']=function(_0x51551b,_0x192886){var _0x4774f5={};var _0x1c2375={};var _0x447f86;var _0x332ad2;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x51551b[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x192886,null))[_0xfa20('0x28')](function(_0x189de7){if(_0x189de7){_0x447f86=_0x189de7;_0x1c2375['model']=_[_0xfa20('0x5a')](db['WhatsappInteraction'][_0xfa20('0x3e')]);_0x1c2375['query']=_['keys'](_0x51551b[_0xfa20('0x46')]);_0x1c2375[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x1c2375[_0xfa20('0x58')],_0x1c2375[_0xfa20('0x46')]);_0x4774f5['attributes']=_[_0xfa20('0x5c')](_0x1c2375[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x51551b[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x4774f5[_0xfa20('0x4b')]=_0x4774f5['attributes'][_0xfa20('0x4e')]?_0x4774f5[_0xfa20('0x4b')]:_0x1c2375['model'];_0x4774f5[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x51551b['query'][_0xfa20('0xd7')]);_0x4774f5[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x51551b[_0xfa20('0x46')],_0x1c2375[_0xfa20('0x5b')]));if(_0x51551b[_0xfa20('0x46')][_0xfa20('0x32')]){_0x4774f5[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x4774f5['where'],{'$or':_[_0xfa20('0x34')](_0x4774f5['attributes'],function(_0x21c06e){var _0x27af9a={};_0x27af9a[_0x21c06e]={'$like':'%'+_0x51551b['query'][_0xfa20('0x32')]+'%'};return _0x27af9a;})});}_0x4774f5=_[_0xfa20('0x5f')]({},_0x4774f5,_0x51551b['options']);return _0x447f86[_0xfa20('0xea')](_0x4774f5);}})[_0xfa20('0x28')](function(_0x34a05e){if(_0x34a05e){_0x332ad2=_0x34a05e[_0xfa20('0x4e')];if(!_0x51551b[_0xfa20('0x46')][_0xfa20('0xce')]('nolimit')){_0x4774f5[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x51551b['query'][_0xfa20('0x24')]);_0x4774f5[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x51551b[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x447f86['getWhatsappInteractions'](_0x4774f5);}})[_0xfa20('0x28')](function(_0x2cd0c2){if(_0x2cd0c2){return _0x2cd0c2?{'count':_0x332ad2,'rows':_0x2cd0c2}:null;}})[_0xfa20('0x28')](respondWithResult(_0x192886,null))[_0xfa20('0x1e')](handleError(_0x192886,null));};exports[_0xfa20('0xeb')]=function(_0xcd30e2,_0x53736d,_0x1541d2){var _0x103736;var _0x46f50b;var _0x1cc039;var _0x3c91e6=!_[_0xfa20('0x6c')](_0xcd30e2[_0xfa20('0x63')]['id'])?_0xcd30e2['params']['id']:!_[_0xfa20('0x6c')](_0xcd30e2[_0xfa20('0x2f')]['id'])?_0xcd30e2[_0xfa20('0x2f')]['id']:null;return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x3c91e6,'role':{'$or':[_0xfa20('0x2e'),'user',_0xfa20('0x2a')]}},'attributes':['id','name',_0xfa20('0xec'),_0xfa20('0xed'),_0xfa20('0x29'),'internal','loginInPause']})[_0xfa20('0x28')](function(_0x5417cb){if(_0x5417cb){if(_0x5417cb['role']===_0xfa20('0x2a')){_0x103736=_0x5417cb;if(_0xcd30e2[_0xfa20('0x62')][_0xfa20('0xa5')]){_0x1cc039=util['format'](_0xfa20('0xee'),_0x103736[_0xcd30e2['body'][_0xfa20('0xa5')]]);}else if(_0xcd30e2[_0xfa20('0x62')][_0xfa20('0xef')]){_0x1cc039=util[_0xfa20('0xb0')](_0xfa20('0xf0'),_0xcd30e2[_0xfa20('0x62')][_0xfa20('0xef')]);}else{_0x1cc039=util[_0xfa20('0xb0')](_0xfa20('0xf0'),_0x103736[_0xfa20('0x37')]);}socket['to'](util[_0xfa20('0xb0')](_0xfa20('0xf1'),_0x103736['name']))['emit'](_0xfa20('0xf2'),{'user':{'id':_0x103736['id'],'name':_0x103736[_0xfa20('0x37')]},'ip':_0xcd30e2[_0xfa20('0xf3')][_0xfa20('0xf4')]||_0xcd30e2[_0xfa20('0xf5')][_0xfa20('0xf6')]||_0xcd30e2[_0xfa20('0xf7')][_0xfa20('0xf6')]||_0xcd30e2[_0xfa20('0xf5')][_0xfa20('0xf7')][_0xfa20('0xf6')]});return db['UserVoiceQueueRt'][_0xfa20('0x2c')]({'where':{'membername':_0x103736['name']},'individualHooks':!![]});}}else{throw new db[(_0xfa20('0x95'))][(_0xfa20('0x96'))](_0xfa20('0xf8'));}})['then'](function(){if(_0x103736){return _0x103736[_0xfa20('0xf9')]({'raw':!![]});}})[_0xfa20('0x28')](function(_0xe52993){if(_0x103736){if(_0xe52993){_0x46f50b=_0xe52993;if(_0x46f50b[_0xfa20('0x4e')]){var _0x2445b5=_0x46f50b[_0xfa20('0x34')](function(_0x4972b5){var _0x2e3ba5={'membername':_0x103736[_0xfa20('0x37')],'UserId':_0x103736['id'],'queue_name':_0x4972b5['name'],'VoiceQueueId':_0x4972b5['id'],'interface':_0x1cc039,'paused':_0x103736[_0xfa20('0xa3')]||![],'penalty':_0x4972b5[_0xfa20('0xfa')]||0x0};return db[_0xfa20('0xb9')][_0xfa20('0xb2')](_0x2e3ba5);});return Promise[_0xfa20('0x56')](_0x2445b5);}}}})[_0xfa20('0x28')](function(){if(_0x103736){return db[_0xfa20('0xfb')][_0xfa20('0x8f')]({'where':{'membername':_0x103736[_0xfa20('0x37')],'exitAt':null}});}})[_0xfa20('0x28')](function(_0x2ccfee){if(_0x103736){var _0x1f15f8=[];_0x2ccfee['forEach'](function(_0x3af8e4){_0x1f15f8['push'](_0x3af8e4[_0xfa20('0x27')]({'exitAt':moment()[_0xfa20('0xb0')](_0xfa20('0xfc'))}));});return Promise[_0xfa20('0x56')](_0x1f15f8);}})[_0xfa20('0x28')](function(){if(_0x103736){var _0x2020a7=[];var _0x3051e2=[];var _0x3b2af2=utils[_0xfa20('0xfd')]();var _0x29828d={'membername':_0x103736['name'],'interface':_0x1cc039,'enterAt':moment()['format'](_0xfa20('0xfc')),'role':_0x103736[_0xfa20('0x29')],'internal':_0x103736[_0xfa20('0x68')]};_0x3b2af2[_0xfa20('0xfe')](function(_0x388406){_0x2020a7['push'](_[_0xfa20('0x5f')]({'channel':_0x388406,'type':_0xfa20('0xff'),'data1':_0xcd30e2['body'][_0xfa20('0x100')],'data2':_0x1cc039},_0x29828d));if(_0x103736[_0xfa20('0xa3')]){_0x3051e2[_0xfa20('0x4c')](_[_0xfa20('0x5f')]({'channel':_0x388406,'type':_0xfa20('0x101'),'data1':_0xfa20('0x102')},_0x29828d));}});return db['MemberReport'][_0xfa20('0x8c')](_0x2020a7[_0xfa20('0x103')](_0x3051e2),{'individualHooks':!![]});}})[_0xfa20('0x28')](function(){if(_0x103736){return _0x103736[_0xfa20('0x27')]({'online':!![],'lastLoginAt':moment()[_0xfa20('0xb0')](_0xfa20('0xfc')),'voicePause':_0x103736[_0xfa20('0xa3')]||![],'mailPause':_0x103736[_0xfa20('0xa3')]||![],'chatPause':_0x103736['loginInPause']||![],'faxPause':_0x103736['loginInPause']||![],'smsPause':_0x103736[_0xfa20('0xa3')]||![],'openchannelPause':_0x103736[_0xfa20('0xa3')]||![],'whatsappPause':_0x103736[_0xfa20('0xa3')]||![],'pauseType':_0x103736['loginInPause']?_0xfa20('0x102'):null,'interface':_0x1cc039,'lastPauseAt':moment()[_0xfa20('0xb0')](_0xfa20('0xfc'))});}})['then'](function(_0x4fb622){if(_0xcd30e2[_0xfa20('0x104')]){return _0x1541d2();}else{return Promise[_0xfa20('0x105')](_0x4fb622)[_0xfa20('0x28')](respondWithResult(_0x53736d,null));}})['catch'](handleError(_0x53736d,null));};exports[_0xfa20('0x106')]=function(_0x57a1df,_0x1ab7c5){var _0xfb58c0;return db['User'][_0xfa20('0x60')]({'where':{'id':_0x57a1df[_0xfa20('0x63')]['id'],'role':_0xfa20('0x2a')},'attributes':['id',_0xfa20('0x37'),_0xfa20('0x29')]})[_0xfa20('0x28')](handleEntityNotFound(_0x1ab7c5,null))[_0xfa20('0x28')](function(_0x1d6398){if(_0x1d6398){_0xfb58c0=_0x1d6398;return db[_0xfa20('0xb9')]['destroy']({'where':{'membername':_0xfb58c0[_0xfa20('0x37')]},'individualHooks':!![]});}})[_0xfa20('0x28')](function(){return db[_0xfa20('0xfb')][_0xfa20('0x8f')]({'where':{'membername':_0xfb58c0[_0xfa20('0x37')],'exitAt':null}});})[_0xfa20('0x28')](function(_0x7c9fb5){var _0x320512=[];_0x7c9fb5['forEach'](function(_0x30ed65){_0x320512[_0xfa20('0x4c')](_0x30ed65[_0xfa20('0x27')]({'exitAt':moment()['format'](_0xfa20('0xfc'))}));});return Promise['all'](_0x320512);})[_0xfa20('0x28')](function(){return _0xfb58c0[_0xfa20('0x27')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x1ab7c5,null))[_0xfa20('0x1e')](handleError(_0x1ab7c5,null));};exports['pause']=function(_0x393a8a,_0x240686){var _0xefc9da;return db['UserVoiceQueueRt'][_0xfa20('0x27')]({'paused':0x1},{'where':{'UserId':_0x393a8a[_0xfa20('0x63')]['id']},'individualHooks':!![]})[_0xfa20('0x28')](function(){return db[_0xfa20('0x3d')]['find']({'where':{'id':_0x393a8a[_0xfa20('0x63')]['id'],'role':_0xfa20('0x2a')},'attributes':['id',_0xfa20('0x37'),'role','internal',_0xfa20('0xa5'),_0xfa20('0xa2')]});})[_0xfa20('0x28')](handleEntityNotFound(_0x240686,null))['then'](function(_0x191e06){if(_0x191e06){_0xefc9da=_0x191e06;return respondWithRpcPromise(_0xfa20('0x107'),_0xfa20('0x108'),{'id':_0xefc9da['id'],'name':_0xefc9da[_0xfa20('0x37')],'pause':!![]});}})['then'](function(){if(_0xefc9da){return db[_0xfa20('0xfb')][_0xfa20('0x8f')]({'where':{'membername':_0xefc9da[_0xfa20('0x37')],'type':_0xfa20('0x101'),'exitAt':null}});}})[_0xfa20('0x28')](function(_0x726b44){if(_0x726b44['length']){var _0x23f84b=moment()[_0xfa20('0xb0')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x302eb0=0x0,_0x50f8eb=_0x726b44[_0xfa20('0x4e')];_0x302eb0<_0x50f8eb;_0x302eb0++){_0x726b44[_0x302eb0][_0xfa20('0x109')]({'exitAt':_0x23f84b});}}})[_0xfa20('0x28')](function(){var _0x236e4a=[];var _0x550e7e=utils[_0xfa20('0xfd')]();_0x550e7e[_0xfa20('0xfe')](function(_0x2b5c76){_0x236e4a[_0xfa20('0x4c')]({'channel':_0x2b5c76,'membername':_0xefc9da['name'],'interface':_[_0xfa20('0x6c')](_0xefc9da[_0xfa20('0xa5')])?util[_0xfa20('0xb0')](_0xfa20('0xf0'),_0xefc9da['name']):_0xefc9da[_0xfa20('0xa5')],'type':_0xfa20('0x101'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x393a8a[_0xfa20('0x62')][_0xfa20('0x40')]||_0xfa20('0x10a'),'role':_0xefc9da[_0xfa20('0x29')],'internal':_0xefc9da[_0xfa20('0x68')]});});return db['MemberReport'][_0xfa20('0x8c')](_0x236e4a,{'individualHooks':!![]});})[_0xfa20('0x28')](function(){return _0xefc9da[_0xfa20('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x393a8a['body']['type']||_0xfa20('0x10a'),'lastPauseAt':moment()[_0xfa20('0xb0')](_0xfa20('0xfc'))});})[_0xfa20('0x28')](respondWithResult(_0x240686,null))[_0xfa20('0x1e')](handleError(_0x240686,null));};exports[_0xfa20('0x10b')]=function(_0x47e795,_0x24ed12){if(_0x47e795[_0xfa20('0x62')][_0xfa20('0xb5')]&&!utils[_0xfa20('0xb4')](_0x47e795['body'][_0xfa20('0xb5')])){throw new APIBadRequestError(util[_0xfa20('0xb0')](_0xfa20('0x10c'),_0x47e795['body'][_0xfa20('0xb5')]));}return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x47e795[_0xfa20('0x63')]['id']},'attributes':['id','name',_0xfa20('0x29'),_0xfa20('0x68'),_0xfa20('0xa5'),_0xfa20('0xa2'),_0xfa20('0xa4'),'mailPause',_0xfa20('0x10d'),_0xfa20('0x10e'),'openchannelPause',_0xfa20('0x10f'),_0xfa20('0x110'),_0xfa20('0x111'),'lastPauseAt']})[_0xfa20('0x28')](function(_0x4492f0){if(!_0x4492f0){throw new APINotFoundError(util[_0xfa20('0xb0')](_0xfa20('0xcd'),_0x47e795[_0xfa20('0x63')]['id']));}return _0x4492f0[_0xfa20('0x10b')](_0x47e795[_0xfa20('0x62')][_0xfa20('0xb5')]);})[_0xfa20('0x28')](respondWithResult(_0x24ed12,null))[_0xfa20('0x1e')](APIHandleError(_0x24ed12));};exports[_0xfa20('0x112')]=function(_0x4a8dce,_0x42ebe8){var _0x53b0ab={};var _0x27fc7b={};var _0x4675e2;var _0x52c70a;return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x4a8dce['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x42ebe8,null))[_0xfa20('0x28')](function(_0x466d4d){if(_0x466d4d){_0x4675e2=_0x466d4d;_0x27fc7b[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db['Team'][_0xfa20('0x3e')]);_0x27fc7b[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x4a8dce[_0xfa20('0x46')]);_0x27fc7b[_0xfa20('0x5b')]=_['intersection'](_0x27fc7b[_0xfa20('0x58')],_0x27fc7b[_0xfa20('0x46')]);_0x53b0ab['attributes']=_['intersection'](_0x27fc7b[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x4a8dce[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x53b0ab[_0xfa20('0x4b')]=_0x53b0ab[_0xfa20('0x4b')]['length']?_0x53b0ab['attributes']:_0x27fc7b[_0xfa20('0x58')];_0x53b0ab['order']=qs[_0xfa20('0xd7')](_0x4a8dce[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x53b0ab[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_['pick'](_0x4a8dce[_0xfa20('0x46')],_0x27fc7b[_0xfa20('0x5b')]));if(_0x4a8dce[_0xfa20('0x46')][_0xfa20('0x32')]){_0x53b0ab[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x53b0ab[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x53b0ab['attributes'],function(_0x5375e9){var _0x473f15={};_0x473f15[_0x5375e9]={'$like':'%'+_0x4a8dce[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x473f15;})});}_0x53b0ab=_[_0xfa20('0x5f')]({},_0x53b0ab,_0x4a8dce[_0xfa20('0xdc')]);return _0x4675e2[_0xfa20('0x112')](_0x53b0ab);}})[_0xfa20('0x28')](function(_0x31119a){if(_0x31119a){_0x52c70a=_0x31119a['length'];if(!_0x4a8dce[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x53b0ab['limit']=qs[_0xfa20('0x24')](_0x4a8dce[_0xfa20('0x46')][_0xfa20('0x24')]);_0x53b0ab['offset']=qs[_0xfa20('0x22')](_0x4a8dce[_0xfa20('0x46')]['offset']);}return _0x4675e2['getTeams'](_0x53b0ab);}})[_0xfa20('0x28')](function(_0x3217e7){if(_0x3217e7){return _0x3217e7?{'count':_0x52c70a,'rows':_0x3217e7}:null;}})[_0xfa20('0x28')](respondWithResult(_0x42ebe8,null))['catch'](handleError(_0x42ebe8,null));};exports[_0xfa20('0x113')]=function(_0x4f486d,_0x33a82b){var _0x5dbb20=_0x4f486d['params']['id'];var _0x32493a=_0x4f486d[_0xfa20('0x62')]?_0x4f486d['body'][_0xfa20('0x66')]:null;var _0xb6df3e=[];return Promise[_0xfa20('0x105')]()['then'](function(){if(!_0x32493a)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0xfa20('0x28')](function(){return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x5dbb20}});})[_0xfa20('0x28')](function(_0x2dca69){if(!_0x2dca69)throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x4f486d[_0xfa20('0x63')]['id']));return db['sequelize'][_0xfa20('0x114')](function(_0x54ffaf){return _0x2dca69[_0xfa20('0x113')](_0x32493a,{'transaction':_0x54ffaf})[_0xfa20('0x28')](function(){return db[_0xfa20('0x115')][_0xfa20('0x8f')]({'where':{'id':{'$in':_0x32493a}}});})[_0xfa20('0x28')](function(_0x1ecb0f){var _0x1eb564=_[_0xfa20('0x34')](_0x1ecb0f,function(_0x2892b2){return _0x2892b2[_0xfa20('0x116')]();});return Promise['all'](_0x1eb564);})[_0xfa20('0x28')](function(_0x1b4600){_0xb6df3e=_[_0xfa20('0x117')](_0x1b4600);var _0x5c4dec=_[_0xfa20('0x34')](_0xb6df3e,function(_0x161d3a){return _0x161d3a['addAgent'](_0x2dca69['id'],{'transaction':_0x54ffaf});});return Promise[_0xfa20('0x56')](_0x5c4dec);})[_0xfa20('0x28')](function(){if(!_0x2dca69[_0xfa20('0xa2')])return;var _0x20afd3=_[_0xfa20('0x32')](_0xb6df3e,function(_0x19c196){return _0x19c196[_0xfa20('0x118')]('channel')===_0xfa20('0x119');});var _0x52d24c=_[_0xfa20('0x34')](_0x20afd3,function(_0x299a31){return db[_0xfa20('0xb9')][_0xfa20('0xb2')]({'membername':_0x2dca69['name'],'UserId':_0x2dca69['id'],'queue_name':_0x299a31[_0xfa20('0x37')],'VoiceQueueId':_0x299a31['id'],'interface':_[_0xfa20('0x6c')](_0x2dca69[_0xfa20('0xa5')])?util[_0xfa20('0xb0')](_0xfa20('0xf0'),_0x2dca69[_0xfa20('0x37')]):_0x2dca69['interface'],'paused':_0x2dca69[_0xfa20('0xa4')]||![],'penalty':_0x2dca69[_0xfa20('0xb1')]},{'transaction':_0x54ffaf});});return Promise[_0xfa20('0x56')](_0x52d24c);})[_0xfa20('0x28')](function(){return db[_0xfa20('0x11a')]['findAll']({'where':{'teamId':{'$in':_0x32493a}}});})[_0xfa20('0x28')](function(_0x1dfe0c){var _0x5276dd=_['map'](_0x1dfe0c,function(_0x455ba6){return db[_0xfa20('0x11b')][_0xfa20('0x80')]({'UserId':_0x2dca69['id'],'VoicePrefixId':_0x455ba6[_0xfa20('0x11c')]},{'transaction':_0x54ffaf});});return Promise[_0xfa20('0x56')](_0x5276dd);});});})[_0xfa20('0x28')](function(){for(var _0x12decd=0x0;_0x12decd<_0xb6df3e[_0xfa20('0x4e')];_0x12decd++){var _0x44e451=_0xb6df3e[_0x12decd]['getDataValue'](_0xfa20('0xb5'));var _0xe7a9c4=_0x44e451+_0xfa20('0xab');socket['emit'](_0xfa20('0x2f')+_0x44e451+'Queue:save',{'UserId':_0x5dbb20,['queueField']:_0xb6df3e[_0x12decd]['id']});}})[_0xfa20('0x28')](respondWithStatusCode(_0x33a82b,null))[_0xfa20('0x1e')](APIHandleError(_0x33a82b));};exports[_0xfa20('0x11d')]=function(_0x66680,_0x37a72e){var _0x4e8f4a=_0x66680['params']['id'];var _0x23704b=null;if(_0x66680[_0xfa20('0x46')][_0xfa20('0x66')]){_0x23704b=_[_0xfa20('0xb7')](_0x66680[_0xfa20('0x46')][_0xfa20('0x66')])?_0x66680[_0xfa20('0x46')][_0xfa20('0x66')]:[_0x66680[_0xfa20('0x46')][_0xfa20('0x66')]];}var _0x1e9a19=[];return Promise[_0xfa20('0x105')]()[_0xfa20('0x28')](function(){if(!_0x23704b)throw new APIBadRequestError(_0xfa20('0x11e'));})['then'](function(){return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x4e8f4a}});})[_0xfa20('0x28')](function(_0x2d79e9){if(!_0x2d79e9)throw new APINotFoundError(util[_0xfa20('0xb0')](_0xfa20('0xcd'),_0x66680[_0xfa20('0x63')]['id']));return db[_0xfa20('0x11f')][_0xfa20('0x114')](function(_0xac08e5){return _0x2d79e9[_0xfa20('0x11d')](_0x23704b,{'transaction':_0xac08e5})[_0xfa20('0x28')](function(){return db[_0xfa20('0x115')][_0xfa20('0x8f')]({'where':{'id':{'$in':_0x23704b}}});})[_0xfa20('0x28')](function(_0x5d9424){var _0x145361=_['map'](_0x5d9424,function(_0x52fdec){return _0x52fdec[_0xfa20('0x116')]();});return Promise[_0xfa20('0x56')](_0x145361);})['then'](function(_0x265a82){_0x1e9a19=_[_0xfa20('0x117')](_0x265a82);var _0x283166=_[_0xfa20('0x34')](_0x1e9a19,function(_0x4ee932){return _0x4ee932[_0xfa20('0x120')](_0x2d79e9['id'],{'transaction':_0xac08e5});});return Promise[_0xfa20('0x56')](_0x283166);})[_0xfa20('0x28')](function(){if(!_0x2d79e9[_0xfa20('0xa2')])return;var _0x1220b6=_['filter'](_0x1e9a19,function(_0x25f4bb){return _0x25f4bb[_0xfa20('0x118')](_0xfa20('0xb5'))===_0xfa20('0x119');});var _0x530654=_['map'](_0x1220b6,function(_0x41918f){return db[_0xfa20('0xb9')][_0xfa20('0x2c')]({'where':{'VoiceQueueId':_0x41918f['id'],'UserId':_0x2d79e9['id']},'transaction':_0xac08e5});});return Promise[_0xfa20('0x56')](_0x530654);})[_0xfa20('0x28')](function(){return db['TeamVoicePrefix']['findAll']({'where':{'teamId':{'$in':_0x23704b}}});})[_0xfa20('0x28')](function(_0x4b588d){var _0x3f44da=_['map'](_0x4b588d,function(_0x19db7f){return db[_0xfa20('0x11b')][_0xfa20('0x2c')]({'where':{'UserId':_0x2d79e9['id'],'VoicePrefixId':_0x19db7f[_0xfa20('0x11c')]}},{'transaction':_0xac08e5});});return Promise[_0xfa20('0x56')](_0x3f44da);});});})[_0xfa20('0x28')](function(){for(var _0x4a786b=0x0;_0x4a786b<_0x1e9a19[_0xfa20('0x4e')];_0x4a786b++){var _0xb1541b=_0x1e9a19[_0x4a786b][_0xfa20('0x118')](_0xfa20('0xb5'));var _0x519db9=_0xb1541b+_0xfa20('0xab');socket['emit'](_0xfa20('0x2f')+_0xb1541b+_0xfa20('0xb8'),{'UserId':_0x4e8f4a,['queueField']:_0x1e9a19[_0x4a786b]['id']});}})['then'](respondWithStatusCode(_0x37a72e,null))['catch'](APIHandleError(_0x37a72e));};exports[_0xfa20('0x121')]=function(_0x26cf93,_0x3848df){var _0x1bded3={};var _0x53b99e={};var _0x4ff647;var _0x2b0b19;return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x26cf93[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x3848df,null))[_0xfa20('0x28')](function(_0x50ca1b){if(_0x50ca1b){_0x4ff647=_0x50ca1b;_0x53b99e['model']=_['keys'](db['CmList'][_0xfa20('0x3e')]);_0x53b99e[_0xfa20('0x46')]=_['keys'](_0x26cf93[_0xfa20('0x46')]);_0x53b99e[_0xfa20('0x5b')]=_['intersection'](_0x53b99e[_0xfa20('0x58')],_0x53b99e[_0xfa20('0x46')]);_0x1bded3[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x53b99e[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x26cf93['query'][_0xfa20('0x5d')]));_0x1bded3['attributes']=_0x1bded3['attributes'][_0xfa20('0x4e')]?_0x1bded3[_0xfa20('0x4b')]:_0x53b99e[_0xfa20('0x58')];_0x1bded3[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x26cf93['query']['sort']);_0x1bded3[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x26cf93[_0xfa20('0x46')],_0x53b99e['filters']));if(_0x26cf93[_0xfa20('0x46')][_0xfa20('0x32')]){_0x1bded3[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x1bded3['where'],{'$or':_['map'](_0x1bded3['attributes'],function(_0x2a30b6){var _0x1a8f72={};_0x1a8f72[_0x2a30b6]={'$like':'%'+_0x26cf93[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x1a8f72;})});}_0x1bded3=_[_0xfa20('0x5f')]({},_0x1bded3,_0x26cf93['options']);return _0x4ff647[_0xfa20('0x121')](_0x1bded3);}})[_0xfa20('0x28')](function(_0x5f0494){if(_0x5f0494){_0x2b0b19=_0x5f0494[_0xfa20('0x4e')];if(!_0x26cf93['query']['hasOwnProperty']('nolimit')){_0x1bded3['limit']=qs[_0xfa20('0x24')](_0x26cf93[_0xfa20('0x46')][_0xfa20('0x24')]);_0x1bded3[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x26cf93[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x4ff647[_0xfa20('0x121')](_0x1bded3);}})[_0xfa20('0x28')](function(_0x2a75ba){if(_0x2a75ba){return _0x2a75ba?{'count':_0x2b0b19,'rows':_0x2a75ba}:null;}})[_0xfa20('0x28')](respondWithResult(_0x3848df,null))[_0xfa20('0x1e')](handleError(_0x3848df,null));};exports['getAgents']=function(_0x213a0f,_0x4fabb2){var _0x2356da={};var _0x118cc5={};var _0x324b45;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x213a0f[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x4fabb2,null))[_0xfa20('0x28')](function(_0xc311d7){if(_0xc311d7){_0x324b45=_0xc311d7;_0x118cc5[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db['User'][_0xfa20('0x3e')]);_0x118cc5[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x213a0f['query']);_0x118cc5[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x118cc5[_0xfa20('0x58')],_0x118cc5['query']);_0x2356da[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x118cc5[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x213a0f[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x2356da[_0xfa20('0x4b')]=_0x2356da[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x2356da[_0xfa20('0x4b')]:_0x118cc5[_0xfa20('0x58')];_0x2356da['order']=qs['sort'](_0x213a0f[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x2356da[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_['pick'](_0x213a0f[_0xfa20('0x46')],_0x118cc5[_0xfa20('0x5b')]));if(_0x213a0f[_0xfa20('0x46')][_0xfa20('0x32')]){_0x2356da[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x2356da[_0xfa20('0x45')],{'$or':_['map'](_0x2356da[_0xfa20('0x4b')],function(_0x467860){var _0x175365={};_0x175365[_0x467860]={'$like':'%'+_0x213a0f[_0xfa20('0x46')]['filter']+'%'};return _0x175365;})});}_0x2356da[_0xfa20('0x58')]=db[_0xfa20('0x3d')];_0x2356da['as']=_0xfa20('0x89');_0x2356da=_['merge']({},_0x2356da,_0x213a0f['options']);return _0x324b45[_0xfa20('0xf9')]({'include':[_0x2356da]});}})[_0xfa20('0x28')](function(_0x15d3d8){if(_0x15d3d8){var _0x12ed2f={},_0x501504=[];for(var _0x342f4d=0x0;_0x342f4d<_0x15d3d8[_0xfa20('0x4e')];_0x342f4d+=0x1){for(var _0x13d8ec=0x0,_0x30309d;_0x13d8ec<_0x15d3d8[_0x342f4d]['Agents']['length'];_0x13d8ec+=0x1){_0x30309d=_0x15d3d8[_0x342f4d][_0xfa20('0x89')][_0x13d8ec][_0xfa20('0x2d')]({'plain':!![]});_0x12ed2f[_0x30309d['id']]=_0x30309d;}}_0x12ed2f=_[_0xfa20('0x122')](_0x12ed2f);for(var _0x361f24=qs[_0xfa20('0x22')](_0x213a0f[_0xfa20('0x46')]['offset']);_0x361f24<_0x12ed2f['length']&&_0x501504[_0xfa20('0x4e')]<qs[_0xfa20('0x24')](_0x213a0f[_0xfa20('0x46')]['limit']);_0x361f24+=0x1){if(_0x12ed2f[_0x361f24]){_0x501504[_0xfa20('0x4c')](_0x12ed2f[_0x361f24]);}}return{'count':_0x12ed2f[_0xfa20('0x4e')],'rows':_0x501504};}})[_0xfa20('0x28')](respondWithResult(_0x4fabb2,null))[_0xfa20('0x1e')](handleError(_0x4fabb2,null));};exports[_0xfa20('0x2c')]=function(_0xfaf198,_0x3e7a5e){if(_0xfaf198['user']['id']==_0xfaf198[_0xfa20('0x63')]['id']){return _0x3e7a5e['status'](0x1f4)[_0xfa20('0x3b')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0xfaf198[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x3e7a5e,null))[_0xfa20('0x28')](removeEntity(_0x3e7a5e,null))[_0xfa20('0x1e')](handleError(_0x3e7a5e,null));};exports[_0xfa20('0x123')]=function(_0x414cd1,_0x1a8b7b){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x414cd1['params']['id']}})['then'](handleEntityNotFound(_0x1a8b7b,null))[_0xfa20('0x28')](function(_0xb4c785){if(_0xb4c785){return _0xb4c785[_0xfa20('0x123')](_0x414cd1[_0xfa20('0x62')][_0xfa20('0x66')],_['omit'](_0x414cd1[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{})[_0xfa20('0x124')](function(){for(var _0xddb1f4=0x0;_0xddb1f4<_0x414cd1[_0xfa20('0x62')][_0xfa20('0x66')]['length'];_0xddb1f4+=0x1){socket['emit'](_0xfa20('0x125'),{'ChatInteractionId':Number(_0x414cd1['body'][_0xfa20('0x66')][_0xddb1f4]),'UserId':Number(_0x414cd1['params']['id'])});}return _0x414cd1[_0xfa20('0x62')][_0xfa20('0x66')];});}})[_0xfa20('0x28')](respondWithResult(_0x1a8b7b,null))[_0xfa20('0x1e')](handleError(_0x1a8b7b,null));};exports[_0xfa20('0x126')]=function(_0x426e69,_0xf86d22){return db['User'][_0xfa20('0x60')]({'where':{'id':_0x426e69[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0xf86d22,null))[_0xfa20('0x28')](function(_0x3ec62c){if(_0x3ec62c){return _0x3ec62c[_0xfa20('0x126')](_0x426e69[_0xfa20('0x46')][_0xfa20('0x66')])[_0xfa20('0x28')](function(){if(_['isArray'](_0x426e69[_0xfa20('0x46')][_0xfa20('0x66')])){for(var _0x1f9a10=0x0;_0x1f9a10<_0x426e69[_0xfa20('0x46')][_0xfa20('0x66')][_0xfa20('0x4e')];_0x1f9a10+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x127'),{'ChatInteractionId':Number(_0x426e69[_0xfa20('0x46')]['ids'][_0x1f9a10]),'UserId':Number(_0x426e69['params']['id'])});}}else{socket[_0xfa20('0xac')](_0xfa20('0x127'),{'ChatInteractionId':Number(_0x426e69[_0xfa20('0x46')][_0xfa20('0x66')]),'UserId':Number(_0x426e69[_0xfa20('0x63')]['id'])});}});}})[_0xfa20('0x28')](respondWithStatusCode(_0xf86d22,null))[_0xfa20('0x1e')](handleError(_0xf86d22,null));};exports[_0xfa20('0x128')]=function(_0x3242a3,_0x2c945a){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x3242a3[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x2c945a,null))[_0xfa20('0x28')](function(_0x19d899){if(_0x19d899){return _0x19d899['addMailInteractions'](_0x3242a3[_0xfa20('0x62')][_0xfa20('0x66')],_['omit'](_0x3242a3[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{})['spread'](function(){for(var _0x76b49f=0x0;_0x76b49f<_0x3242a3[_0xfa20('0x62')][_0xfa20('0x66')][_0xfa20('0x4e')];_0x76b49f+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x129'),{'MailInteractionId':Number(_0x3242a3[_0xfa20('0x62')][_0xfa20('0x66')][_0x76b49f]),'UserId':Number(_0x3242a3[_0xfa20('0x63')]['id'])});}return _0x3242a3[_0xfa20('0x62')][_0xfa20('0x66')];});}})[_0xfa20('0x28')](respondWithResult(_0x2c945a,null))['catch'](handleError(_0x2c945a,null));};exports[_0xfa20('0x12a')]=function(_0x4c75b8,_0x4490be){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x4c75b8[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x4490be,null))['then'](function(_0x418e04){if(_0x418e04){return _0x418e04[_0xfa20('0x12a')](_0x4c75b8['query']['ids'])[_0xfa20('0x28')](function(){if(_[_0xfa20('0xb7')](_0x4c75b8[_0xfa20('0x46')]['ids'])){for(var _0x105cdb=0x0;_0x105cdb<_0x4c75b8['query']['ids'][_0xfa20('0x4e')];_0x105cdb+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x12b'),{'MailInteractionId':Number(_0x4c75b8[_0xfa20('0x46')]['ids'][_0x105cdb]),'UserId':Number(_0x4c75b8[_0xfa20('0x63')]['id'])});}}else{socket[_0xfa20('0xac')](_0xfa20('0x12b'),{'MailInteractionId':Number(_0x4c75b8[_0xfa20('0x46')][_0xfa20('0x66')]),'UserId':Number(_0x4c75b8[_0xfa20('0x63')]['id'])});}});}})[_0xfa20('0x28')](respondWithStatusCode(_0x4490be,null))['catch'](handleError(_0x4490be,null));};exports[_0xfa20('0x12c')]=function(_0x4864ac,_0x32d35b){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x4864ac['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x32d35b,null))[_0xfa20('0x28')](function(_0x1c76ed){if(_0x1c76ed){return _0x1c76ed[_0xfa20('0x12c')](_0x4864ac['body'][_0xfa20('0x66')],_['omit'](_0x4864ac[_0xfa20('0x62')],['ids','id'])||{})[_0xfa20('0x124')](function(){for(var _0x2e8ab8=0x0;_0x2e8ab8<_0x4864ac[_0xfa20('0x62')]['ids']['length'];_0x2e8ab8+=0x1){socket['emit'](_0xfa20('0x12d'),{'FaxInteractionId':Number(_0x4864ac[_0xfa20('0x62')][_0xfa20('0x66')][_0x2e8ab8]),'UserId':Number(_0x4864ac[_0xfa20('0x63')]['id'])});}return _0x4864ac[_0xfa20('0x62')][_0xfa20('0x66')];});}})[_0xfa20('0x28')](respondWithResult(_0x32d35b,null))[_0xfa20('0x1e')](handleError(_0x32d35b,null));};exports[_0xfa20('0x12e')]=function(_0x580b47,_0x3bc967){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x580b47['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x3bc967,null))[_0xfa20('0x28')](function(_0x4afb6c){if(_0x4afb6c){return _0x4afb6c[_0xfa20('0x12e')](_0x580b47[_0xfa20('0x46')][_0xfa20('0x66')])[_0xfa20('0x28')](function(){if(_['isArray'](_0x580b47[_0xfa20('0x46')][_0xfa20('0x66')])){for(var _0x223c86=0x0;_0x223c86<_0x580b47[_0xfa20('0x46')][_0xfa20('0x66')][_0xfa20('0x4e')];_0x223c86+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x12f'),{'FaxInteractionId':Number(_0x580b47[_0xfa20('0x46')][_0xfa20('0x66')][_0x223c86]),'UserId':Number(_0x580b47[_0xfa20('0x63')]['id'])});}}else{socket[_0xfa20('0xac')](_0xfa20('0x12f'),{'FaxInteractionId':Number(_0x580b47[_0xfa20('0x46')][_0xfa20('0x66')]),'UserId':Number(_0x580b47[_0xfa20('0x63')]['id'])});}});}})[_0xfa20('0x28')](respondWithStatusCode(_0x3bc967,null))[_0xfa20('0x1e')](handleError(_0x3bc967,null));};exports[_0xfa20('0x130')]=function(_0x54d284,_0x470fa4){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x54d284['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x470fa4,null))[_0xfa20('0x28')](function(_0x16e411){if(_0x16e411){return _0x16e411[_0xfa20('0x130')](_0x54d284[_0xfa20('0x62')][_0xfa20('0x66')],_[_0xfa20('0x67')](_0x54d284[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{})['spread'](function(){for(var _0x3ee5ec=0x0;_0x3ee5ec<_0x54d284[_0xfa20('0x62')][_0xfa20('0x66')]['length'];_0x3ee5ec+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x131'),{'SmsInteractionId':Number(_0x54d284[_0xfa20('0x62')][_0xfa20('0x66')][_0x3ee5ec]),'UserId':Number(_0x54d284[_0xfa20('0x63')]['id'])});}return _0x54d284[_0xfa20('0x62')][_0xfa20('0x66')];});}})[_0xfa20('0x28')](respondWithResult(_0x470fa4,null))[_0xfa20('0x1e')](handleError(_0x470fa4,null));};exports[_0xfa20('0x132')]=function(_0x350d8d,_0x5d6fd3){return db[_0xfa20('0x3d')]['find']({'where':{'id':_0x350d8d[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x5d6fd3,null))[_0xfa20('0x28')](function(_0x1fc015){if(_0x1fc015){return _0x1fc015[_0xfa20('0x132')](_0x350d8d[_0xfa20('0x46')][_0xfa20('0x66')])['then'](function(){if(_[_0xfa20('0xb7')](_0x350d8d['query'][_0xfa20('0x66')])){for(var _0x571657=0x0;_0x571657<_0x350d8d[_0xfa20('0x46')][_0xfa20('0x66')]['length'];_0x571657+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x133'),{'SmsInteractionId':Number(_0x350d8d['query']['ids'][_0x571657]),'UserId':Number(_0x350d8d['params']['id'])});}}else{socket[_0xfa20('0xac')](_0xfa20('0x133'),{'SmsInteractionId':Number(_0x350d8d['query'][_0xfa20('0x66')]),'UserId':Number(_0x350d8d[_0xfa20('0x63')]['id'])});}});}})[_0xfa20('0x28')](respondWithStatusCode(_0x5d6fd3,null))['catch'](handleError(_0x5d6fd3,null));};exports['addOpenchannelInteractions']=function(_0x37d8e3,_0x110f6f){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x37d8e3[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x110f6f,null))[_0xfa20('0x28')](function(_0x264fa7){if(_0x264fa7){return _0x264fa7['addOpenchannelInteractions'](_0x37d8e3[_0xfa20('0x62')][_0xfa20('0x66')],_[_0xfa20('0x67')](_0x37d8e3[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{})[_0xfa20('0x124')](function(){for(var _0x448509=0x0;_0x448509<_0x37d8e3['body'][_0xfa20('0x66')][_0xfa20('0x4e')];_0x448509+=0x1){socket[_0xfa20('0xac')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x37d8e3[_0xfa20('0x62')][_0xfa20('0x66')][_0x448509]),'UserId':Number(_0x37d8e3[_0xfa20('0x63')]['id'])});}return _0x37d8e3[_0xfa20('0x62')][_0xfa20('0x66')];});}})[_0xfa20('0x28')](respondWithResult(_0x110f6f,null))[_0xfa20('0x1e')](handleError(_0x110f6f,null));};exports[_0xfa20('0x134')]=function(_0x5601cc,_0x20b8ea){return db['User'][_0xfa20('0x60')]({'where':{'id':_0x5601cc[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x20b8ea,null))[_0xfa20('0x28')](function(_0x25cd2a){if(_0x25cd2a){return _0x25cd2a[_0xfa20('0x134')](_0x5601cc['query'][_0xfa20('0x66')])[_0xfa20('0x28')](function(){if(_['isArray'](_0x5601cc[_0xfa20('0x46')][_0xfa20('0x66')])){for(var _0x351c3c=0x0;_0x351c3c<_0x5601cc[_0xfa20('0x46')][_0xfa20('0x66')][_0xfa20('0x4e')];_0x351c3c+=0x1){socket['emit'](_0xfa20('0x135'),{'OpenchannelInteractionId':Number(_0x5601cc['query'][_0xfa20('0x66')][_0x351c3c]),'UserId':Number(_0x5601cc[_0xfa20('0x63')]['id'])});}}else{socket[_0xfa20('0xac')](_0xfa20('0x135'),{'OpenchannelInteractionId':Number(_0x5601cc[_0xfa20('0x46')][_0xfa20('0x66')]),'UserId':Number(_0x5601cc[_0xfa20('0x63')]['id'])});}});}})[_0xfa20('0x28')](respondWithStatusCode(_0x20b8ea,null))[_0xfa20('0x1e')](handleError(_0x20b8ea,null));};exports['addWhatsappInteractions']=function(_0x18bb69,_0x2f04a9){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x18bb69[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x2f04a9,null))[_0xfa20('0x28')](function(_0x2682fd){if(_0x2682fd){return _0x2682fd['addWhatsappInteractions'](_0x18bb69[_0xfa20('0x62')][_0xfa20('0x66')],_[_0xfa20('0x67')](_0x18bb69[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{})[_0xfa20('0x124')](function(){for(var _0x3dcca1=0x0;_0x3dcca1<_0x18bb69[_0xfa20('0x62')]['ids'][_0xfa20('0x4e')];_0x3dcca1+=0x1){socket[_0xfa20('0xac')](_0xfa20('0x136'),{'WhatsappInteractionId':Number(_0x18bb69[_0xfa20('0x62')][_0xfa20('0x66')][_0x3dcca1]),'UserId':Number(_0x18bb69['params']['id'])});}return _0x18bb69['body'][_0xfa20('0x66')];});}})[_0xfa20('0x28')](respondWithResult(_0x2f04a9,null))[_0xfa20('0x1e')](handleError(_0x2f04a9,null));};exports['removeWhatsappInteractions']=function(_0x299f60,_0x4d73a8){return db['User'][_0xfa20('0x60')]({'where':{'id':_0x299f60[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x4d73a8,null))[_0xfa20('0x28')](function(_0x14f379){if(_0x14f379){return _0x14f379[_0xfa20('0x137')](_0x299f60[_0xfa20('0x46')][_0xfa20('0x66')]);}})[_0xfa20('0x28')](respondWithStatusCode(_0x4d73a8,null))[_0xfa20('0x1e')](handleError(_0x4d73a8,null));};exports[_0xfa20('0x138')]=function(_0x21b5b1,_0x5b68b0){var _0x4e947f={};var _0x24293a={};var _0x304e5e;var _0x21ad96;return db['User'][_0xfa20('0x9c')]({'where':{'id':_0x21b5b1[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x5b68b0,null))[_0xfa20('0x28')](function(_0x4adfd9){if(_0x4adfd9){_0x304e5e=_0x4adfd9;_0x24293a['model']=_[_0xfa20('0x5a')](db[_0xfa20('0x139')]['rawAttributes']);_0x24293a['query']=_[_0xfa20('0x5a')](_0x21b5b1[_0xfa20('0x46')]);_0x24293a[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x24293a['model'],_0x24293a[_0xfa20('0x46')]);_0x4e947f[_0xfa20('0x4b')]=_['intersection'](_0x24293a[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x21b5b1[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x4e947f['attributes']=_0x4e947f[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x4e947f[_0xfa20('0x4b')]:_0x24293a[_0xfa20('0x58')];_0x4e947f[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x21b5b1[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x4e947f[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_['pick'](_0x21b5b1[_0xfa20('0x46')],_0x24293a[_0xfa20('0x5b')]));if(_0x21b5b1['query'][_0xfa20('0x32')]){_0x4e947f[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x4e947f['where'],{'$or':_[_0xfa20('0x34')](_0x4e947f['attributes'],function(_0x5e8b81){var _0xe943d2={};_0xe943d2[_0x5e8b81]={'$like':'%'+_0x21b5b1['query'][_0xfa20('0x32')]+'%'};return _0xe943d2;})});}_0x4e947f=_[_0xfa20('0x5f')]({},_0x4e947f,_0x21b5b1[_0xfa20('0xdc')]);return _0x304e5e['getVoicePrefixes'](_0x4e947f);}})[_0xfa20('0x28')](function(_0x4fd393){if(_0x4fd393){_0x21ad96=_0x4fd393['length'];if(!_0x21b5b1['query'][_0xfa20('0xce')](_0xfa20('0xda'))){_0x4e947f['limit']=qs[_0xfa20('0x24')](_0x21b5b1[_0xfa20('0x46')][_0xfa20('0x24')]);_0x4e947f[_0xfa20('0x22')]=qs['offset'](_0x21b5b1[_0xfa20('0x46')]['offset']);}return _0x304e5e['getVoicePrefixes'](_0x4e947f);}})[_0xfa20('0x28')](function(_0x35716d){if(_0x35716d){return _0x35716d?{'count':_0x21ad96,'rows':_0x35716d}:null;}})[_0xfa20('0x28')](respondWithResult(_0x5b68b0,null))[_0xfa20('0x1e')](handleError(_0x5b68b0,null));};exports[_0xfa20('0x13a')]=function(_0x39368e,_0x861902){var _0x2df3e3={};var _0x44de7f={};var _0x25b1bb;var _0x9b7dba;return db['User']['findOne']({'where':{'id':_0x39368e[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x861902,null))[_0xfa20('0x28')](function(_0x3f36d6){if(_0x3f36d6){_0x25b1bb=_0x3f36d6;_0x44de7f['model']=_[_0xfa20('0x5a')](db[_0xfa20('0x13b')][_0xfa20('0x3e')]);_0x44de7f[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x39368e[_0xfa20('0x46')]);_0x44de7f['filters']=_[_0xfa20('0x5c')](_0x44de7f['model'],_0x44de7f['query']);_0x2df3e3[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x44de7f[_0xfa20('0x58')],qs['fields'](_0x39368e[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x2df3e3[_0xfa20('0x4b')]=_0x2df3e3[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x2df3e3[_0xfa20('0x4b')]:_0x44de7f[_0xfa20('0x58')];_0x2df3e3[_0xfa20('0xd6')]=qs['sort'](_0x39368e[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x2df3e3['where']=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x39368e['query'],_0x44de7f[_0xfa20('0x5b')]));if(_0x39368e['query'][_0xfa20('0x32')]){_0x2df3e3[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x2df3e3[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x2df3e3[_0xfa20('0x4b')],function(_0x27bbab){var _0x291aa8={};_0x291aa8[_0x27bbab]={'$like':'%'+_0x39368e['query'][_0xfa20('0x32')]+'%'};return _0x291aa8;})});}_0x2df3e3=_[_0xfa20('0x5f')]({},_0x2df3e3,_0x39368e['options']);return _0x25b1bb[_0xfa20('0x13a')](_0x2df3e3);}})[_0xfa20('0x28')](function(_0x151840){if(_0x151840){_0x9b7dba=_0x151840[_0xfa20('0x4e')];if(!_0x39368e[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x2df3e3[_0xfa20('0x24')]=qs['limit'](_0x39368e[_0xfa20('0x46')]['limit']);_0x2df3e3[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x39368e['query']['offset']);}return _0x25b1bb[_0xfa20('0x13a')](_0x2df3e3);}})[_0xfa20('0x28')](function(_0x4622bf){if(_0x4622bf){return _0x4622bf?{'count':_0x9b7dba,'rows':_0x4622bf}:null;}})['then'](respondWithResult(_0x861902,null))[_0xfa20('0x1e')](handleError(_0x861902,null));};exports[_0xfa20('0x13c')]=function(_0x5b9c53,_0x36b333){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x5b9c53[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x36b333,null))[_0xfa20('0x28')](function(_0x465195){if(_0x465195){return _0x465195[_0xfa20('0x13c')](_0x5b9c53['body']['ids'],_['omit'](_0x5b9c53['body'],[_0xfa20('0x66'),'id'])||{});}})['then'](respondWithResult(_0x36b333,null))[_0xfa20('0x1e')](handleError(_0x36b333,null));};exports[_0xfa20('0x13d')]=function(_0x5da064,_0x4ff22c){return db['User'][_0xfa20('0x60')]({'where':{'id':_0x5da064[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x4ff22c,null))['then'](function(_0x32491d){if(_0x32491d){return _0x32491d[_0xfa20('0x13d')](_0x5da064['query'][_0xfa20('0x66')]);}})[_0xfa20('0x28')](respondWithStatusCode(_0x4ff22c,null))[_0xfa20('0x1e')](handleError(_0x4ff22c,null));};exports[_0xfa20('0x13e')]=function(_0x511621,_0x2c748){var _0x34d2fd={};var _0x5f3909={};var _0x5566b5;var _0x1e6bed;return db['User'][_0xfa20('0x9c')]({'where':{'id':_0x511621[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x2c748,null))[_0xfa20('0x28')](function(_0x5b981b){if(_0x5b981b){_0x5566b5=_0x5b981b;_0x5f3909[_0xfa20('0x58')]=_['keys'](db[_0xfa20('0x13f')][_0xfa20('0x3e')]);_0x5f3909[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x511621['query']);_0x5f3909[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x5f3909[_0xfa20('0x58')],_0x5f3909[_0xfa20('0x46')]);_0x34d2fd[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x5f3909[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x511621[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x34d2fd[_0xfa20('0x4b')]=_0x34d2fd[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x34d2fd[_0xfa20('0x4b')]:_0x5f3909[_0xfa20('0x58')];_0x34d2fd['order']=qs['sort'](_0x511621[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x34d2fd['where']=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x511621[_0xfa20('0x46')],_0x5f3909[_0xfa20('0x5b')]));if(_0x511621[_0xfa20('0x46')]['filter']){_0x34d2fd['where']=_[_0xfa20('0x5f')](_0x34d2fd[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x34d2fd[_0xfa20('0x4b')],function(_0x1ab633){var _0x1a932f={};_0x1a932f[_0x1ab633]={'$like':'%'+_0x511621['query'][_0xfa20('0x32')]+'%'};return _0x1a932f;})});}_0x34d2fd=_[_0xfa20('0x5f')]({},_0x34d2fd,_0x511621[_0xfa20('0xdc')]);return _0x5566b5[_0xfa20('0x13e')](_0x34d2fd);}})[_0xfa20('0x28')](function(_0x3ed37e){if(_0x3ed37e){_0x1e6bed=_0x3ed37e[_0xfa20('0x4e')];if(!_0x511621['query'][_0xfa20('0xce')](_0xfa20('0xda'))){_0x34d2fd[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x511621[_0xfa20('0x46')][_0xfa20('0x24')]);_0x34d2fd[_0xfa20('0x22')]=qs['offset'](_0x511621[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x5566b5[_0xfa20('0x13e')](_0x34d2fd);}})[_0xfa20('0x28')](function(_0x43b3a5){if(_0x43b3a5){return _0x43b3a5?{'count':_0x1e6bed,'rows':_0x43b3a5}:null;}})[_0xfa20('0x28')](respondWithResult(_0x2c748,null))[_0xfa20('0x1e')](handleError(_0x2c748,null));};exports[_0xfa20('0x140')]=function(_0x1e689f,_0x751ebe){return db[_0xfa20('0x3d')]['find']({'where':{'id':_0x1e689f[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x751ebe,null))[_0xfa20('0x28')](function(_0x5693a2){if(_0x5693a2){return _0x5693a2[_0xfa20('0x140')](_0x1e689f[_0xfa20('0x62')][_0xfa20('0x66')],_[_0xfa20('0x67')](_0x1e689f[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{});}})[_0xfa20('0x28')](respondWithResult(_0x751ebe,null))[_0xfa20('0x1e')](handleError(_0x751ebe,null));};exports[_0xfa20('0x141')]=function(_0x54ef8c,_0x3d6bc8){return db[_0xfa20('0x3d')]['find']({'where':{'id':_0x54ef8c['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x3d6bc8,null))[_0xfa20('0x28')](function(_0x3e3c43){if(_0x3e3c43){return _0x3e3c43[_0xfa20('0x141')](_0x54ef8c['query'][_0xfa20('0x66')]);}})[_0xfa20('0x28')](respondWithStatusCode(_0x3d6bc8,null))[_0xfa20('0x1e')](handleError(_0x3d6bc8,null));};exports['getOpenchannelAccounts']=function(_0x500564,_0x31fbc2){var _0x216e41={};var _0x4643a5={};var _0x14b240;var _0x2ecb13;return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x500564[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x31fbc2,null))['then'](function(_0x269071){if(_0x269071){_0x14b240=_0x269071;_0x4643a5[_0xfa20('0x58')]=_['keys'](db[_0xfa20('0x142')][_0xfa20('0x3e')]);_0x4643a5[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x500564[_0xfa20('0x46')]);_0x4643a5[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x4643a5[_0xfa20('0x58')],_0x4643a5[_0xfa20('0x46')]);_0x216e41[_0xfa20('0x4b')]=_['intersection'](_0x4643a5[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x500564[_0xfa20('0x46')]['fields']));_0x216e41[_0xfa20('0x4b')]=_0x216e41['attributes'][_0xfa20('0x4e')]?_0x216e41[_0xfa20('0x4b')]:_0x4643a5[_0xfa20('0x58')];_0x216e41[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x500564[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x216e41[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x500564['query'],_0x4643a5['filters']));if(_0x500564[_0xfa20('0x46')][_0xfa20('0x32')]){_0x216e41[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x216e41['where'],{'$or':_[_0xfa20('0x34')](_0x216e41[_0xfa20('0x4b')],function(_0x3c6660){var _0x4d0f37={};_0x4d0f37[_0x3c6660]={'$like':'%'+_0x500564[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x4d0f37;})});}_0x216e41=_[_0xfa20('0x5f')]({},_0x216e41,_0x500564[_0xfa20('0xdc')]);return _0x14b240[_0xfa20('0x143')](_0x216e41);}})[_0xfa20('0x28')](function(_0x308dcf){if(_0x308dcf){_0x2ecb13=_0x308dcf[_0xfa20('0x4e')];if(!_0x500564[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x216e41[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x500564['query'][_0xfa20('0x24')]);_0x216e41[_0xfa20('0x22')]=qs['offset'](_0x500564[_0xfa20('0x46')]['offset']);}return _0x14b240[_0xfa20('0x143')](_0x216e41);}})[_0xfa20('0x28')](function(_0x12b873){if(_0x12b873){return _0x12b873?{'count':_0x2ecb13,'rows':_0x12b873}:null;}})[_0xfa20('0x28')](respondWithResult(_0x31fbc2,null))[_0xfa20('0x1e')](handleError(_0x31fbc2,null));};exports[_0xfa20('0x144')]=function(_0x4dd1bc,_0x57d610){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x4dd1bc['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x57d610,null))[_0xfa20('0x28')](function(_0x489907){if(_0x489907){return _0x489907[_0xfa20('0x144')](_0x4dd1bc['body']['ids'],_['omit'](_0x4dd1bc[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{});}})[_0xfa20('0x28')](respondWithResult(_0x57d610,null))[_0xfa20('0x1e')](handleError(_0x57d610,null));};exports[_0xfa20('0x145')]=function(_0x310fa8,_0x87b21a){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x310fa8['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x87b21a,null))[_0xfa20('0x28')](function(_0x4cf43f){if(_0x4cf43f){return _0x4cf43f[_0xfa20('0x145')](_0x310fa8[_0xfa20('0x46')][_0xfa20('0x66')]);}})[_0xfa20('0x28')](respondWithStatusCode(_0x87b21a,null))[_0xfa20('0x1e')](handleError(_0x87b21a,null));};exports['getSmsAccounts']=function(_0x5ddb03,_0x1375ac){var _0x50c5de={};var _0x5d164c={};var _0x168af6;var _0x4dd89a;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x5ddb03['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x1375ac,null))['then'](function(_0x119b4a){if(_0x119b4a){_0x168af6=_0x119b4a;_0x5d164c[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0x146')]['rawAttributes']);_0x5d164c[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x5ddb03[_0xfa20('0x46')]);_0x5d164c[_0xfa20('0x5b')]=_['intersection'](_0x5d164c[_0xfa20('0x58')],_0x5d164c['query']);_0x50c5de[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x5d164c[_0xfa20('0x58')],qs['fields'](_0x5ddb03[_0xfa20('0x46')]['fields']));_0x50c5de[_0xfa20('0x4b')]=_0x50c5de[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0x50c5de[_0xfa20('0x4b')]:_0x5d164c[_0xfa20('0x58')];_0x50c5de['order']=qs['sort'](_0x5ddb03[_0xfa20('0x46')][_0xfa20('0xd7')]);_0x50c5de[_0xfa20('0x45')]=qs['filters'](_[_0xfa20('0xd8')](_0x5ddb03[_0xfa20('0x46')],_0x5d164c[_0xfa20('0x5b')]));if(_0x5ddb03[_0xfa20('0x46')]['filter']){_0x50c5de[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0x50c5de[_0xfa20('0x45')],{'$or':_['map'](_0x50c5de[_0xfa20('0x4b')],function(_0x28c76a){var _0x2474f4={};_0x2474f4[_0x28c76a]={'$like':'%'+_0x5ddb03['query'][_0xfa20('0x32')]+'%'};return _0x2474f4;})});}_0x50c5de=_[_0xfa20('0x5f')]({},_0x50c5de,_0x5ddb03[_0xfa20('0xdc')]);return _0x168af6['getSmsAccounts'](_0x50c5de);}})[_0xfa20('0x28')](function(_0x1c2057){if(_0x1c2057){_0x4dd89a=_0x1c2057[_0xfa20('0x4e')];if(!_0x5ddb03[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x50c5de[_0xfa20('0x24')]=qs[_0xfa20('0x24')](_0x5ddb03[_0xfa20('0x46')][_0xfa20('0x24')]);_0x50c5de[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x5ddb03[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x168af6[_0xfa20('0x147')](_0x50c5de);}})['then'](function(_0x2d7bd1){if(_0x2d7bd1){return _0x2d7bd1?{'count':_0x4dd89a,'rows':_0x2d7bd1}:null;}})[_0xfa20('0x28')](respondWithResult(_0x1375ac,null))[_0xfa20('0x1e')](handleError(_0x1375ac,null));};exports[_0xfa20('0x148')]=function(_0x255f97,_0x54a00c){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x255f97[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x54a00c,null))[_0xfa20('0x28')](function(_0xf2f86d){if(_0xf2f86d){return _0xf2f86d['addSmsAccounts'](_0x255f97[_0xfa20('0x62')]['ids'],_[_0xfa20('0x67')](_0x255f97['body'],[_0xfa20('0x66'),'id'])||{});}})['then'](respondWithResult(_0x54a00c,null))[_0xfa20('0x1e')](handleError(_0x54a00c,null));};exports[_0xfa20('0x149')]=function(_0x22667a,_0x8edce3){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x22667a[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x8edce3,null))['then'](function(_0x5c4456){if(_0x5c4456){return _0x5c4456[_0xfa20('0x149')](_0x22667a[_0xfa20('0x46')][_0xfa20('0x66')]);}})[_0xfa20('0x28')](respondWithStatusCode(_0x8edce3,null))[_0xfa20('0x1e')](handleError(_0x8edce3,null));};exports[_0xfa20('0x14a')]=function(_0x31cc9c,_0x224c29){var _0xf47719={};var _0x4b30d9={};var _0x531796;var _0x1bca83;return db[_0xfa20('0x3d')]['findOne']({'where':{'id':_0x31cc9c[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x224c29,null))[_0xfa20('0x28')](function(_0x538ac7){if(_0x538ac7){_0x531796=_0x538ac7;_0x4b30d9[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0x14b')][_0xfa20('0x3e')]);_0x4b30d9[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x31cc9c['query']);_0x4b30d9[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x4b30d9['model'],_0x4b30d9['query']);_0xf47719[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x4b30d9[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x31cc9c[_0xfa20('0x46')]['fields']));_0xf47719['attributes']=_0xf47719[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0xf47719[_0xfa20('0x4b')]:_0x4b30d9[_0xfa20('0x58')];_0xf47719[_0xfa20('0xd6')]=qs['sort'](_0x31cc9c['query']['sort']);_0xf47719[_0xfa20('0x45')]=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x31cc9c[_0xfa20('0x46')],_0x4b30d9[_0xfa20('0x5b')]));if(_0x31cc9c[_0xfa20('0x46')][_0xfa20('0x32')]){_0xf47719[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0xf47719[_0xfa20('0x45')],{'$or':_['map'](_0xf47719[_0xfa20('0x4b')],function(_0x3b1280){var _0x5270f9={};_0x5270f9[_0x3b1280]={'$like':'%'+_0x31cc9c[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x5270f9;})});}_0xf47719=_[_0xfa20('0x5f')]({},_0xf47719,_0x31cc9c['options']);return _0x531796[_0xfa20('0x14a')](_0xf47719);}})[_0xfa20('0x28')](function(_0x3869b6){if(_0x3869b6){_0x1bca83=_0x3869b6[_0xfa20('0x4e')];if(!_0x31cc9c[_0xfa20('0x46')]['hasOwnProperty']('nolimit')){_0xf47719['limit']=qs[_0xfa20('0x24')](_0x31cc9c[_0xfa20('0x46')]['limit']);_0xf47719['offset']=qs['offset'](_0x31cc9c[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x531796[_0xfa20('0x14a')](_0xf47719);}})['then'](function(_0x4e8775){if(_0x4e8775){return _0x4e8775?{'count':_0x1bca83,'rows':_0x4e8775}:null;}})[_0xfa20('0x28')](respondWithResult(_0x224c29,null))[_0xfa20('0x1e')](handleError(_0x224c29,null));};exports[_0xfa20('0x14c')]=function(_0x91e41f,_0xbfb42a){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x91e41f[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0xbfb42a,null))['then'](function(_0x16f890){if(_0x16f890){return _0x16f890[_0xfa20('0x14c')](_0x91e41f[_0xfa20('0x62')]['ids'],_[_0xfa20('0x67')](_0x91e41f[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{});}})[_0xfa20('0x28')](respondWithResult(_0xbfb42a,null))['catch'](handleError(_0xbfb42a,null));};exports['removeChatWebsites']=function(_0x2a84b0,_0x2d0771){return db[_0xfa20('0x3d')]['find']({'where':{'id':_0x2a84b0[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x2d0771,null))[_0xfa20('0x28')](function(_0x432ee4){if(_0x432ee4){return _0x432ee4[_0xfa20('0x14d')](_0x2a84b0[_0xfa20('0x46')][_0xfa20('0x66')]);}})[_0xfa20('0x28')](respondWithStatusCode(_0x2d0771,null))['catch'](handleError(_0x2d0771,null));};exports[_0xfa20('0x14e')]=function(_0x168441,_0x4ece88){var _0x3cf329={};var _0x16d5bd={};var _0x237861;var _0x307edf;return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x168441['params']['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x4ece88,null))[_0xfa20('0x28')](function(_0x58e6ed){if(_0x58e6ed){_0x237861=_0x58e6ed;_0x16d5bd[_0xfa20('0x58')]=_[_0xfa20('0x5a')](db[_0xfa20('0x14f')][_0xfa20('0x3e')]);_0x16d5bd['query']=_[_0xfa20('0x5a')](_0x168441['query']);_0x16d5bd[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x16d5bd[_0xfa20('0x58')],_0x16d5bd['query']);_0x3cf329[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x16d5bd[_0xfa20('0x58')],qs[_0xfa20('0x5d')](_0x168441[_0xfa20('0x46')][_0xfa20('0x5d')]));_0x3cf329[_0xfa20('0x4b')]=_0x3cf329[_0xfa20('0x4b')]['length']?_0x3cf329[_0xfa20('0x4b')]:_0x16d5bd[_0xfa20('0x58')];_0x3cf329[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x168441[_0xfa20('0x46')]['sort']);_0x3cf329[_0xfa20('0x45')]=qs['filters'](_[_0xfa20('0xd8')](_0x168441['query'],_0x16d5bd[_0xfa20('0x5b')]));if(_0x168441[_0xfa20('0x46')][_0xfa20('0x32')]){_0x3cf329['where']=_[_0xfa20('0x5f')](_0x3cf329[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0x3cf329[_0xfa20('0x4b')],function(_0xc5d0a3){var _0x997616={};_0x997616[_0xc5d0a3]={'$like':'%'+_0x168441[_0xfa20('0x46')][_0xfa20('0x32')]+'%'};return _0x997616;})});}_0x3cf329=_[_0xfa20('0x5f')]({},_0x3cf329,_0x168441[_0xfa20('0xdc')]);return _0x237861[_0xfa20('0x14e')](_0x3cf329);}})[_0xfa20('0x28')](function(_0xf89934){if(_0xf89934){_0x307edf=_0xf89934[_0xfa20('0x4e')];if(!_0x168441[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x3cf329['limit']=qs[_0xfa20('0x24')](_0x168441['query']['limit']);_0x3cf329['offset']=qs['offset'](_0x168441[_0xfa20('0x46')][_0xfa20('0x22')]);}return _0x237861['getWhatsappAccounts'](_0x3cf329);}})['then'](function(_0x421c20){if(_0x421c20){return _0x421c20?{'count':_0x307edf,'rows':_0x421c20}:null;}})[_0xfa20('0x28')](respondWithResult(_0x4ece88,null))[_0xfa20('0x1e')](handleError(_0x4ece88,null));};exports[_0xfa20('0x150')]=function(_0x1e5991,_0x465bfd){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x1e5991[_0xfa20('0x63')]['id']}})['then'](handleEntityNotFound(_0x465bfd,null))[_0xfa20('0x28')](function(_0xbdf5b7){if(_0xbdf5b7){return _0xbdf5b7[_0xfa20('0x150')](_0x1e5991[_0xfa20('0x62')]['ids'],_[_0xfa20('0x67')](_0x1e5991[_0xfa20('0x62')],[_0xfa20('0x66'),'id'])||{});}})['then'](respondWithResult(_0x465bfd,null))[_0xfa20('0x1e')](handleError(_0x465bfd,null));};exports['removeWhatsappAccounts']=function(_0x5d2162,_0x57ad88){return db['User'][_0xfa20('0x60')]({'where':{'id':_0x5d2162[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x57ad88,null))[_0xfa20('0x28')](function(_0x530f93){if(_0x530f93){return _0x530f93['removeWhatsappAccounts'](_0x5d2162['query']['ids']);}})[_0xfa20('0x28')](respondWithStatusCode(_0x57ad88,null))[_0xfa20('0x1e')](handleError(_0x57ad88,null));};exports['getScheduledCalls']=function(_0x39ab75,_0x5114f8){var _0xd824d8={},_0x4af3f8={},_0x744db={'count':0x0,'rows':[]};var _0x55f0e9=db[_0xfa20('0x151')][_0xfa20('0x3e')];_0x4af3f8[_0xfa20('0x58')]=_[_0xfa20('0x5a')](_0x55f0e9);_0x4af3f8[_0xfa20('0x46')]=_[_0xfa20('0x5a')](_0x39ab75['query']);_0x4af3f8[_0xfa20('0x5b')]=_[_0xfa20('0x5c')](_0x4af3f8[_0xfa20('0x58')],_0x4af3f8['query']);_0x4af3f8['filters']=_[_0xfa20('0x103')](_0x4af3f8[_0xfa20('0x5b')],[_0xfa20('0x152'),_0xfa20('0x153'),_0xfa20('0x154'),_0xfa20('0x155'),'$lt',_0xfa20('0x156'),_0xfa20('0x157'),'$eq','$not',_0xfa20('0x158'),_0xfa20('0x159'),_0xfa20('0x15a'),_0xfa20('0x15b'),_0xfa20('0x15c'),_0xfa20('0x15d'),_0xfa20('0x15e'),'$notILike',_0xfa20('0x15c'),_0xfa20('0x15f'),_0xfa20('0x160'),_0xfa20('0x161'),'$any']);_0xd824d8[_0xfa20('0x4b')]=_[_0xfa20('0x5c')](_0x4af3f8['model'],qs['fields'](_0x39ab75[_0xfa20('0x46')][_0xfa20('0x5d')]));_0xd824d8['attributes']=_0xd824d8[_0xfa20('0x4b')][_0xfa20('0x4e')]?_0xd824d8['attributes']:_0x4af3f8[_0xfa20('0x58')];if(!_0x39ab75['query'][_0xfa20('0xce')](_0xfa20('0xda'))){_0xd824d8['limit']=qs['limit'](_0x39ab75[_0xfa20('0x46')]['limit']);_0xd824d8[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x39ab75[_0xfa20('0x46')][_0xfa20('0x22')]);}_0xd824d8[_0xfa20('0xd6')]=qs[_0xfa20('0xd7')](_0x39ab75['query'][_0xfa20('0xd7')]);_0xd824d8['where']=qs[_0xfa20('0x5b')](_[_0xfa20('0xd8')](_0x39ab75[_0xfa20('0x46')],_0x4af3f8[_0xfa20('0x5b')]));if(_0x39ab75['query'][_0xfa20('0x32')]){_0xd824d8[_0xfa20('0x45')]=_[_0xfa20('0x5f')](_0xd824d8[_0xfa20('0x45')],{'$or':_[_0xfa20('0x34')](_0xd824d8[_0xfa20('0x4b')],function(_0x2007f8){var _0x3b8782={};_0x3b8782[_0x2007f8]={'$like':'%'+_0x39ab75['query'][_0xfa20('0x32')]+'%'};return _0x3b8782;})});}_0xd824d8[_0xfa20('0x45')]={'$and':[_0xd824d8[_0xfa20('0x45')],{'$or':[{'UserId':_0x39ab75['params']['id']},{'OwnerId':_0x39ab75['params']['id']}]}]};_0xd824d8=_[_0xfa20('0x5f')]({},_0xd824d8,_0x39ab75[_0xfa20('0xdc')]);var _0x379234={'where':_0xd824d8[_0xfa20('0x45')]};return db[_0xfa20('0x151')]['count'](_0x379234)[_0xfa20('0x28')](function(_0x5b06ae){_0x744db[_0xfa20('0x25')]=_0x5b06ae;if(_0x39ab75[_0xfa20('0x46')][_0xfa20('0x47')]){_0xd824d8[_0xfa20('0x5e')]=[{'attributes':['id',_0xfa20('0x162'),_0xfa20('0x163'),_0xfa20('0xec')],'model':db[_0xfa20('0x164')],'as':_0xfa20('0x165')},{'attributes':['id',_0xfa20('0x37'),'dialActive'],'model':db[_0xfa20('0xaf')],'as':_0xfa20('0xd5')}];}return db[_0xfa20('0x151')][_0xfa20('0x8f')](_0xd824d8);})[_0xfa20('0x28')](function(_0x579862){_0x744db['rows']=_0x579862;return _0x744db;})[_0xfa20('0x28')](respondWithFilteredResult(_0x5114f8,_0xd824d8))[_0xfa20('0x1e')](handleError(_0x5114f8,null));};exports['getApiKey']=function(_0x16397a,_0x517c85){if(!_[_0xfa20('0x6c')](_0x16397a[_0xfa20('0x2f')]['id'])&&(_0x16397a[_0xfa20('0x2f')][_0xfa20('0x29')]==_0xfa20('0x2e')||_0x16397a[_0xfa20('0x2f')][_0xfa20('0x29')]==_0xfa20('0x2f'))){return db[_0xfa20('0x3d')][_0xfa20('0x9c')]({'where':{'id':_0x16397a[_0xfa20('0x63')]['id']},'raw':!![]})['then'](function(_0x559cc0){return authService[_0xfa20('0x166')](_0x559cc0);})['then'](function(_0xe565b5){if(_0xe565b5){return _0x517c85[_0xfa20('0x1f')](0xc8)[_0xfa20('0x21')]({'api_key':_0xe565b5[_0xfa20('0x167')]});}else{return _0x517c85['status'](0xcc)[_0xfa20('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xfa20('0x1e')](handleError(_0x517c85,0x193));}else{return _0x517c85[_0xfa20('0x1f')](0x191)[_0xfa20('0x21')]({'message':_0xfa20('0x168')});}};exports[_0xfa20('0x169')]=function(_0x5e0cc2,_0x3a8ee1){if(!_[_0xfa20('0x6c')](_0x5e0cc2[_0xfa20('0x2f')]['id'])&&(_0x5e0cc2[_0xfa20('0x2f')][_0xfa20('0x29')]=='admin'||_0x5e0cc2['user'][_0xfa20('0x29')]==_0xfa20('0x2f'))){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x5e0cc2[_0xfa20('0x63')]['id']}})['then'](function(_0x263d48){return authService[_0xfa20('0x16a')](_0x263d48);})[_0xfa20('0x28')](function(_0x15a90e){return db[_0xfa20('0x3d')]['update']({'apiKeyIat':_0x15a90e[_0xfa20('0x16b')],'apiKeyNonce':_0x15a90e[_0xfa20('0x16c')]},{'where':{'id':_0x5e0cc2[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](function(){return _0x3a8ee1[_0xfa20('0x1f')](0xc8)[_0xfa20('0x21')]({'api_key':_0x15a90e['token']});});})[_0xfa20('0x1e')](handleError(_0x3a8ee1,0x193));}else{return _0x3a8ee1[_0xfa20('0x1f')](0x191)[_0xfa20('0x21')]({'message':_0xfa20('0x168')});}};exports['removeApiKey']=function(_0x159da4,_0x3159f7){if(!_[_0xfa20('0x6c')](_0x159da4['user']['id'])&&(_0x159da4[_0xfa20('0x2f')][_0xfa20('0x29')]==_0xfa20('0x2e')||_0x159da4['user']['role']=='user')){return db[_0xfa20('0x3d')][_0xfa20('0x60')]({'where':{'id':_0x159da4[_0xfa20('0x63')]['id']}})[_0xfa20('0x28')](handleEntityNotFound(_0x3159f7,null))[_0xfa20('0x28')](function(_0x1442be){if(_0x1442be&&_0x1442be[_0xfa20('0x16d')]&&_0x1442be[_0xfa20('0x16e')])return _0x1442be;else throw{'message':'API\x20key\x20not\x20available'};})[_0xfa20('0x28')](function(){return db['User'][_0xfa20('0x27')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x159da4[_0xfa20('0x63')]['id']}});})[_0xfa20('0x28')](respondWithStatusCode(_0x3159f7,0xc8))[_0xfa20('0x1e')](handleError(_0x3159f7,0x193));}else{return _0x3159f7['status'](0x191)['json']({'message':_0xfa20('0x168')});}};exports[_0xfa20('0x16f')]=function(_0x511fb1,_0x51d614){var _0x49eac4=_0x511fb1['user']['get']({'plain':!![]});if(!_0x49eac4){return _0x51d614[_0xfa20('0x1f')](0x191)[_0xfa20('0x3b')](_0xfa20('0x170'));}else{Promise[_0xfa20('0x105')]()[_0xfa20('0x28')](function(){if(_0x511fb1[_0xfa20('0x46')][_0xfa20('0x48')]!=='true')return;return _0x511fb1[_0xfa20('0x2f')]['getUserSetting']();})[_0xfa20('0x28')](function(_0x25b6c5){if(!_0x25b6c5)return;return _0x25b6c5[_0xfa20('0x2d')]({'plain':!![]});})[_0xfa20('0x28')](function(_0x3d609d){_0x49eac4['userSetting']=_0x3d609d;return _0x51d614[_0xfa20('0x1f')](0xc8)[_0xfa20('0x21')](_0x49eac4);});}};exports[_0xfa20('0x171')]=function(_0x368d6b,_0x38a58a){var _0x1f3b05={'offset':0x0},_0x2e7366={'count':0x0,'rows':[]};Promise[_0xfa20('0x105')]()['then'](function(){if(!_0x368d6b[_0xfa20('0x46')][_0xfa20('0x32')]&&!_0x368d6b[_0xfa20('0x46')][_0xfa20('0x172')]&&!_0x368d6b['query'][_0xfa20('0x173')])return[];return Promise['resolve']()['then'](function(){var _0x4895e6=[];if(!_[_0xfa20('0x90')](_0x368d6b[_0xfa20('0x46')]['teams'])){_0x4895e6['push'](db[_0xfa20('0x115')][_0xfa20('0x8f')]({'attributes':['id','name'],'where':{'id':_0x368d6b[_0xfa20('0x46')][_0xfa20('0x172')]}}));}if(!_[_0xfa20('0x90')](_0x368d6b[_0xfa20('0x46')]['queues'])){_0x4895e6[_0xfa20('0x4c')](db['VoiceQueue'][_0xfa20('0x8f')]({'attributes':['id',_0xfa20('0x37')],'type':_0xfa20('0x174'),'where':{'id':_0x368d6b[_0xfa20('0x46')][_0xfa20('0x173')]}}));}return Promise[_0xfa20('0x56')](_0x4895e6);})[_0xfa20('0x28')](function(_0x586910){var _0x50cc74=_[_0xfa20('0x175')](_0x586910)[_0xfa20('0x34')](function(_0x5f137b){return _0x5f137b[_0xfa20('0x176')]({'attributes':['id',_0xfa20('0x37'),_0xfa20('0x68'),_0xfa20('0xa2')],'raw':!![]});});return Promise[_0xfa20('0x56')](_0x50cc74);})[_0xfa20('0x28')](function(_0x4ad9d5){var _0x289f5f=_[_0xfa20('0x175')](_0x4ad9d5);if(!_0x368d6b['query'][_0xfa20('0x32')])return _0x289f5f;if(_[_0xfa20('0x90')](_0x289f5f)){return db['User'][_0xfa20('0x8f')]({'attributes':['id',_0xfa20('0x37'),_0xfa20('0x68'),_0xfa20('0xa2')],'where':{'role':'agent','$or':[db[_0xfa20('0x11f')]['where'](db[_0xfa20('0x11f')]['fn']('lower',db[_0xfa20('0x11f')]['col'](_0xfa20('0x37'))),{'$like':'%'+_0x368d6b[_0xfa20('0x46')][_0xfa20('0x32')][_0xfa20('0xa9')]()+'%'}),{'internal':{'$like':'%'+_0x368d6b[_0xfa20('0x46')][_0xfa20('0x32')]+'%'}}]},'raw':!![]});}else{return _(_0x289f5f)['flatten']()[_0xfa20('0x32')](function(_0x3555f0){return _0x3555f0[_0xfa20('0x37')][_0xfa20('0xa9')]()[_0xfa20('0x36')](_0x368d6b[_0xfa20('0x46')][_0xfa20('0x32')][_0xfa20('0xa9')]())||_0x3555f0[_0xfa20('0x68')][_0xfa20('0x177')]()[_0xfa20('0x36')](_0x368d6b[_0xfa20('0x46')][_0xfa20('0x32')]);})[_0xfa20('0x35')]();}})[_0xfa20('0x28')](function(_0x352fea){var _0x1cc808=_0xfa20('0x37');var _0x47ac08='asc';if(_0x368d6b['query']['sort']){_0x47ac08=_0x368d6b[_0xfa20('0x46')]['sort'][0x0]==='-'?_0xfa20('0x178'):_0xfa20('0x179');_0x1cc808=_0x47ac08===_0xfa20('0x179')?_0x368d6b[_0xfa20('0x46')][_0xfa20('0xd7')]:_0x368d6b[_0xfa20('0x46')][_0xfa20('0xd7')]['substring'](0x1);}return _(_0x352fea)['uniqBy']('id')[_0xfa20('0x17a')]([function(_0x64e061){return _0x1cc808===_0xfa20('0x37')?_0x64e061[_0x1cc808]['toLowerCase']():_0x64e061[_0x1cc808];}],[_0x47ac08])[_0xfa20('0x34')](function(_0x49c8fb){return _[_0xfa20('0xd8')](_0x49c8fb,['id',_0xfa20('0x37'),'internal','online']);})[_0xfa20('0x35')]();})[_0xfa20('0x28')](function(_0x157fcf){return amiClient[_0xfa20('0x16')](_0xfa20('0x89'),_0x368d6b)['then'](function(_0x4b298c){if(_0x4b298c[_0xfa20('0x1b')])throw new Error(_0xfa20('0x17b'));var _0x4f6ad4=_0x4b298c[_0xfa20('0x1d')];var _0x47f349=jayson[_0xfa20('0x14')]['http']({'port':0x232c});return _0x47f349[_0xfa20('0x16')]('Agents',_0x368d6b)['then'](function(_0x37c0f6){if(_0x37c0f6[_0xfa20('0x1b')])throw new Error(_0xfa20('0x17c'));var _0x1f32ee=_0x37c0f6[_0xfa20('0x1d')];return _[_0xfa20('0x5f')]({},_0x1f32ee,_0x4f6ad4);});})[_0xfa20('0x28')](function(_0x1c4185){return _[_0xfa20('0x34')](_0x157fcf,function(_0x6d9e54){var _0x1e380f=_[_0xfa20('0x60')](_0x1c4185[_0xfa20('0x4d')],['id',_0x6d9e54['id']]);if(!_0x1e380f||!_0x6d9e54['online']){_0x6d9e54[_0xfa20('0x1f')]=_0xfa20('0x17d');}else if(_0x1e380f[_0xfa20('0xa4')]){_0x6d9e54[_0xfa20('0x1f')]=_0xfa20('0x108');}else{_0x6d9e54[_0xfa20('0x1f')]=_['includes']([_0xfa20('0x17e'),'unknown','unavailable',_0xfa20('0x17f'),null,undefined],_0x1e380f[_0xfa20('0x180')])?_0xfa20('0xa2'):_0xfa20('0x181');}return _0x6d9e54;});});});})[_0xfa20('0x28')](function(_0x5d2c5a){if(!_0x368d6b[_0xfa20('0x46')][_0xfa20('0xce')](_0xfa20('0xda'))){_0x1f3b05[_0xfa20('0x24')]=qs['limit'](_0x368d6b[_0xfa20('0x46')]['limit']||0xa);_0x1f3b05[_0xfa20('0x22')]=qs[_0xfa20('0x22')](_0x368d6b[_0xfa20('0x46')]['offset']);}_0x2e7366[_0xfa20('0x25')]=_0x5d2c5a[_0xfa20('0x4e')];_0x2e7366['rows']=_0x1f3b05[_0xfa20('0x24')]?_0x5d2c5a[_0xfa20('0x182')](_0x1f3b05[_0xfa20('0x22')],_0x1f3b05[_0xfa20('0x22')]+_0x1f3b05[_0xfa20('0x24')]):_0x5d2c5a;return _0x2e7366;})['then'](respondWithFilteredResult(_0x38a58a,_0x1f3b05))[_0xfa20('0x1e')](handleError(_0x38a58a,null));};function get_open_tabs(_0xe2e96f,_0x3c4a47){var _0x3fc9fc=_0xe2e96f[_0xfa20('0x183')](0x0)[_0xfa20('0x184')]()+_0xe2e96f[_0xfa20('0x182')](0x1);var _0x733425={'type':db[_0xfa20('0x95')][_0xfa20('0x6f')][_0xfa20('0x70')],'raw':!![]};return new Promise(function(_0x1867bb,_0x3ea478){var _0x34aea8=squel[_0xfa20('0x185')]()[_0xfa20('0x186')]('ui.'+_0x3fc9fc+_0xfa20('0x187'),'id')['field'](_0xfa20('0x188'))[_0xfa20('0x71')]('user_has_'+_0xe2e96f+'_interactions','ui')['where'](_0xfa20('0x189'),_0x3c4a47['id']);return db['sequelize']['query'](_0x34aea8[_0xfa20('0x177')](),_0x733425)[_0xfa20('0x28')](function(_0x3c8374){_0x3c4a47[_0x3fc9fc+_0xfa20('0x18a')]=_0x3c8374;_0x1867bb(_0x3c8374);})[_0xfa20('0x1e')](function(_0x5755f8){_0x3ea478(_0x5755f8);});});}
\ No newline at end of file
+var _0x5dca=['remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','LOGININPAUSE','resolve','logout','pause','QueuePause','PAUSE','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','getTeams','Team','addTeams','transaction','flattenDeep','addAgent','getDataValue','TeamVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeAgent','Voice','UserVoicePrefix','getLists','CmList','getAgents','getVoiceQueues','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','spread','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','$and','$gt','$lt','$lte','$ne','$not','$notBetween','$in','$like','$notLike','$iLike','$overlap','$contains','$any','CmHopper','firstName','CmContact','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','iat','nonce','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','inbound','lower','col','flatten','asc','desc','substring','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','idle','unknown','ringing','voiceStatus','busy','slice','toUpperCase','QueryTypes','field','InteractionId','user_has_','_interactions','OpenTabs','moment','util','path','squel','jayson/promise','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APINotFoundError','handleError','../../mysqldb','redis','./user.socket','register','defaults','client','request','then','info','User,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','status','end','undefined','count','offset','limit','set','json','update','role','agent','userNotification:recalc:','destroy','admin','user','Agents','telephone','filter','ignore','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','map','fieldName','type','password','getOptions','where','includeAll','include','query','userSetting','UserSetting','attributes','findAll','rows','push','chat','dataValues','sms','mail','openchannel','whatsapp','all','model','differenceBy','keys','filters','intersection','fields','length','true','merge','openTabs','fax','body','params','describe','addContacts','omit','ids','Setting','findById','securePassword','validatePasswordPattern','max','internal','min_internal','isNil','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','SELECT','from','voicemail','VoiceMail','fullname','email','permissions','101','102','103','113','105','106','108','109','100','111','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','settingsEnabled','userProfileId','UserProfileSection','Telephones','autoAssociation','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','isEmpty','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','validatePasswordHistory','updatePasswordsHistory','addQueues','voicePause','interface','isValidChannel','Unknown\x20channel','add','penalty','capitalize','QueueId','emit','toLowerCase','Queue:save','voice','VoiceQueue','online','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','Queues','isArray','channel','Queue:remove','userpic','getAvatar','join','root','server/files/images/logos/default_profile.png','server/files/images/','download','getOpenTabs','ChatOpenTabs','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SMS','concat','getContacts','User\x20with\x20id\x20%s\x20not\x20found','hasOwnProperty','List','Tag','color','tag','getQueues','Queue','order','sort','pick','options','get','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','loginInPause','LOCAL/%s@from-sip/n','intrf','user:forcelogout','x-forwarded-for','connection'];(function(_0x14f22f,_0x52a274){var _0x1271a5=function(_0x1db2ad){while(--_0x1db2ad){_0x14f22f['push'](_0x14f22f['shift']());}};_0x1271a5(++_0x52a274);}(_0x5dca,0x91));var _0xa5dc=function(_0x4ec511,_0x5cbef7){_0x4ec511=_0x4ec511-0x0;var _0x1e02c4=_0x5dca[_0x4ec511];return _0x1e02c4;};'use strict';var moment=require(_0xa5dc('0x0'));var util=require(_0xa5dc('0x1'));var path=require(_0xa5dc('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0xa5dc('0x3'));var jayson=require(_0xa5dc('0x4'));var Redis=require(_0xa5dc('0x5'));var authService=require('../../components/auth/service');var contacts=require('../../components/contacts');var qs=require(_0xa5dc('0x6'));var logger=require(_0xa5dc('0x7'))(_0xa5dc('0x8'));var utils=require(_0xa5dc('0x9'));var config=require(_0xa5dc('0xa'));var licenseUtil=require(_0xa5dc('0xb'));var APIBadRequestError=require(_0xa5dc('0xc'))['APIBadRequestError'];var APINotFoundError=require(_0xa5dc('0xc'))[_0xa5dc('0xd')];var APIHandleError=require('../../errors/api')[_0xa5dc('0xe')];var db=require(_0xa5dc('0xf'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xa5dc('0x10')]));require(_0xa5dc('0x11'))[_0xa5dc('0x12')](socket);config[_0xa5dc('0x10')]=_[_0xa5dc('0x13')](config[_0xa5dc('0x10')],{'host':'localhost','port':0x18eb});var amiClient=jayson[_0xa5dc('0x14')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0xab95d8,_0x1e32ea,_0x3fa467,_0x3e609d){return new Promise(function(_0x4ae684,_0x48aa98){var _0x375807=_0x3e609d||amiClient;return _0x375807[_0xa5dc('0x15')](_0xab95d8,_0x3fa467)[_0xa5dc('0x16')](function(_0x4f5318){logger[_0xa5dc('0x17')](_0xa5dc('0x18'),_0x1e32ea,'request\x20sent');logger[_0xa5dc('0x19')]('User,\x20%s,\x20%s,\x20%s',_0x1e32ea,_0xa5dc('0x1a'),JSON[_0xa5dc('0x1b')](_0x4f5318));if(_0x4f5318['error']){if(_0x4f5318[_0xa5dc('0x1c')][_0xa5dc('0x1d')]===0x1f4){logger[_0xa5dc('0x1c')]('User,\x20%s,\x20%s',_0x1e32ea,_0x4f5318[_0xa5dc('0x1c')][_0xa5dc('0x1e')]);return _0x48aa98(_0x4f5318[_0xa5dc('0x1c')][_0xa5dc('0x1e')]);}logger[_0xa5dc('0x1c')](_0xa5dc('0x18'),_0x1e32ea,_0x4f5318[_0xa5dc('0x1c')][_0xa5dc('0x1e')]);return _0x4ae684(_0x4f5318[_0xa5dc('0x1c')][_0xa5dc('0x1e')]);}else{logger[_0xa5dc('0x17')](_0xa5dc('0x18'),_0x1e32ea,'request\x20sent');_0x4ae684(_0x4f5318[_0xa5dc('0x1f')][_0xa5dc('0x1e')]);}})[_0xa5dc('0x20')](function(_0x3ece29){logger[_0xa5dc('0x1c')](_0xa5dc('0x18'),_0x1e32ea,_0x3ece29);_0x48aa98(_0x3ece29);});});}function respondWithStatusCode(_0x12c07e,_0x16cf47){_0x16cf47=_0x16cf47||0xcc;return function(_0x31a22a){if(_0x31a22a){return _0x12c07e['sendStatus'](_0x16cf47);}return _0x12c07e[_0xa5dc('0x21')](_0x16cf47)[_0xa5dc('0x22')]();};}function respondWithResult(_0xf9736c,_0x2df65a){_0x2df65a=_0x2df65a||0xc8;return function(_0x500b96){if(_0x500b96){return _0xf9736c[_0xa5dc('0x21')](_0x2df65a)['json'](_0x500b96);}};}function respondWithFilteredResult(_0x2b58cf,_0x236ef1){return function(_0x472724){if(_0x472724){var _0x3b94be=typeof _0x236ef1['offset']==='undefined'&&typeof _0x236ef1['limit']===_0xa5dc('0x23');var _0x1f5b47=_0x472724[_0xa5dc('0x24')];var _0x14db33=_0x3b94be?0x0:_0x236ef1[_0xa5dc('0x25')];var _0x2ae2cb=_0x3b94be?_0x472724[_0xa5dc('0x24')]:_0x236ef1[_0xa5dc('0x25')]+_0x236ef1[_0xa5dc('0x26')];var _0x32b0a7;if(_0x2ae2cb>=_0x1f5b47){_0x2ae2cb=_0x1f5b47;_0x32b0a7=0xc8;}else{_0x32b0a7=0xce;}_0x2b58cf['status'](_0x32b0a7);return _0x2b58cf[_0xa5dc('0x27')]('Content-Range',_0x14db33+'-'+_0x2ae2cb+'/'+_0x1f5b47)[_0xa5dc('0x28')](_0x472724);}return null;};}function saveUpdates(_0x23c417){return function(_0x325c5c){if(_0x325c5c){return _0x325c5c[_0xa5dc('0x29')](_0x23c417)['then'](function(_0x1562a7){if(_0x1562a7[_0xa5dc('0x2a')]===_0xa5dc('0x2b')){socket['emit'](_0xa5dc('0x2c')+_0x1562a7['id'],_0x1562a7);}return _0x1562a7;});}return null;};}function removeEntity(_0x3440d0){return function(_0x10d5d5){if(_0x10d5d5){return _0x10d5d5[_0xa5dc('0x2d')]()[_0xa5dc('0x16')](function(){var _0x1c48f2=_0x10d5d5['get']({'plain':!![]});if(_0x1c48f2[_0xa5dc('0x2a')]===_0xa5dc('0x2e'))return;var _0xf12be6=[{'name':'Users','value':_0xa5dc('0x2f'),'ignore':!![]},{'name':_0xa5dc('0x30'),'value':_0xa5dc('0x2b'),'ignore':![]},{'name':'Telephones','value':_0xa5dc('0x31'),'ignore':![]}];var _0x1d5791=_(_0xf12be6)[_0xa5dc('0x32')](_0xa5dc('0x33'))['map'](_0xa5dc('0x34'))['value']();if(_[_0xa5dc('0x35')](_0x1d5791,_0x1c48f2['role'])){return;}var _0x31de27=_[_0xa5dc('0x36')](_0xf12be6,['value',_0x1c48f2['role']])[_0xa5dc('0x37')];return db[_0xa5dc('0x38')]['destroy']({'where':{'type':_0x31de27,'resourceId':_0x1c48f2['id']}})[_0xa5dc('0x16')](function(){return _0x10d5d5;});})[_0xa5dc('0x16')](function(){_0x3440d0[_0xa5dc('0x21')](0xcc)[_0xa5dc('0x22')]();});}};}function handleEntityNotFound(_0x32a774){return function(_0x372d85){if(!_0x372d85){_0x32a774['sendStatus'](0x194);}return _0x372d85;};}function handleError(_0x33900e,_0x4e0784){_0x4e0784=_0x4e0784||0x1f4;return function(_0x43d336){logger['error'](_0x43d336[_0xa5dc('0x39')]);if(_0x43d336[_0xa5dc('0x37')]){delete _0x43d336[_0xa5dc('0x37')];}_0x33900e[_0xa5dc('0x21')](_0x4e0784)[_0xa5dc('0x3a')](_0x43d336);};}exports[_0xa5dc('0x3b')]=function(_0x575a14,_0x464ff0){var _0x47f15f={},_0x50462d={'count':0x0,'rows':[]};var _0x2dc686=_(db[_0xa5dc('0x3c')][_0xa5dc('0x3d')])[_0xa5dc('0x3e')](function(_0x54645f){return{'name':_0x54645f[_0xa5dc('0x3f')],'type':_0x54645f[_0xa5dc('0x40')]['key']};})[_0xa5dc('0x32')](function(_0x2a4932){return!_[_0xa5dc('0x35')]([_0xa5dc('0x41'),'salt'],_0x2a4932['name']);})[_0xa5dc('0x34')]();_0x47f15f=qs[_0xa5dc('0x42')](_0x2dc686,_0x575a14);var _0x31d579={'where':_0x47f15f[_0xa5dc('0x43')]};return db[_0xa5dc('0x3c')][_0xa5dc('0x24')](_0x31d579)[_0xa5dc('0x16')](function(_0x3243ab){_0x50462d[_0xa5dc('0x24')]=_0x3243ab;if(_0x575a14['query'][_0xa5dc('0x44')]){_0x47f15f[_0xa5dc('0x45')]=[{'all':!![]}];}if(_0x575a14[_0xa5dc('0x46')][_0xa5dc('0x47')]==='true'){_0x47f15f[_0xa5dc('0x45')]=[{'model':db[_0xa5dc('0x48')],'as':_0xa5dc('0x47')}];}if(!_['includes'](_0x47f15f['attributes'],'id')){_0x47f15f[_0xa5dc('0x49')]['push']('id');}return db[_0xa5dc('0x3c')][_0xa5dc('0x4a')](_0x47f15f);})[_0xa5dc('0x16')](function(_0x425fc9){_0x50462d[_0xa5dc('0x4b')]=_0x425fc9;if(_0x575a14[_0xa5dc('0x46')]['openTabs']==='true'){var _0x5bdc75=[];for(var _0x4e4ffa=0x0;_0x4e4ffa<_0x50462d[_0xa5dc('0x4b')]['length'];_0x4e4ffa++){_0x5bdc75[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x4d'),_0x50462d[_0xa5dc('0x4b')][_0x4e4ffa][_0xa5dc('0x4e')]));_0x5bdc75['push'](get_open_tabs(_0xa5dc('0x4f'),_0x50462d['rows'][_0x4e4ffa][_0xa5dc('0x4e')]));_0x5bdc75[_0xa5dc('0x4c')](get_open_tabs('fax',_0x50462d[_0xa5dc('0x4b')][_0x4e4ffa][_0xa5dc('0x4e')]));_0x5bdc75[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x50'),_0x50462d['rows'][_0x4e4ffa][_0xa5dc('0x4e')]));_0x5bdc75[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x51'),_0x50462d[_0xa5dc('0x4b')][_0x4e4ffa][_0xa5dc('0x4e')]));_0x5bdc75['push'](get_open_tabs(_0xa5dc('0x52'),_0x50462d[_0xa5dc('0x4b')][_0x4e4ffa][_0xa5dc('0x4e')]));}return Promise[_0xa5dc('0x53')](_0x5bdc75)[_0xa5dc('0x16')](function(){return _0x50462d;});}else{return _0x50462d;}})[_0xa5dc('0x16')](respondWithFilteredResult(_0x464ff0,_0x47f15f))[_0xa5dc('0x20')](handleError(_0x464ff0,null));};exports['show']=function(_0x214aed,_0x3c33dd){var _0x3698e8={'raw':![],'where':{'id':_0x214aed['params']['id']}},_0x116609={};_0x116609[_0xa5dc('0x54')]=_[_0xa5dc('0x55')](_[_0xa5dc('0x56')](db[_0xa5dc('0x3c')]['rawAttributes']),[_0xa5dc('0x41'),'salt']);_0x116609[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x214aed[_0xa5dc('0x46')]);_0x116609[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x116609['model'],_0x116609[_0xa5dc('0x46')]);_0x3698e8['attributes']=_[_0xa5dc('0x58')](_0x116609[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x214aed[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x3698e8[_0xa5dc('0x49')]=_0x3698e8[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x3698e8[_0xa5dc('0x49')]:_0x116609[_0xa5dc('0x54')];if(_0x214aed['query'][_0xa5dc('0x44')]){_0x3698e8[_0xa5dc('0x45')]=[{'all':!![]}];}if(_0x214aed[_0xa5dc('0x46')][_0xa5dc('0x47')]===_0xa5dc('0x5b')){_0x3698e8[_0xa5dc('0x45')]=[{'model':db[_0xa5dc('0x48')],'as':_0xa5dc('0x47')}];}_0x3698e8=_[_0xa5dc('0x5c')]({},_0x3698e8,_0x214aed['options']);if(!_[_0xa5dc('0x35')](_0x3698e8[_0xa5dc('0x49')],'id')){_0x3698e8[_0xa5dc('0x49')][_0xa5dc('0x4c')]('id');}return db['User']['find'](_0x3698e8)[_0xa5dc('0x16')](handleEntityNotFound(_0x3c33dd,null))[_0xa5dc('0x16')](function(_0x48374e){var _0x3c95e0=[];values=_0x48374e;if(_0x214aed[_0xa5dc('0x46')][_0xa5dc('0x5d')]===_0xa5dc('0x5b')){_0x3c95e0[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x4d'),_0x48374e[_0xa5dc('0x4e')]));_0x3c95e0[_0xa5dc('0x4c')](get_open_tabs('sms',_0x48374e[_0xa5dc('0x4e')]));_0x3c95e0['push'](get_open_tabs('openchannel',_0x48374e[_0xa5dc('0x4e')]));_0x3c95e0[_0xa5dc('0x4c')](get_open_tabs('whatsapp',_0x48374e[_0xa5dc('0x4e')]));_0x3c95e0[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x5e'),_0x48374e[_0xa5dc('0x4e')]));_0x3c95e0[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x50'),_0x48374e[_0xa5dc('0x4e')]));return Promise['all'](_0x3c95e0);}else{return values;}})[_0xa5dc('0x16')](function(){return values;})[_0xa5dc('0x16')](respondWithResult(_0x3c33dd,null))[_0xa5dc('0x20')](handleError(_0x3c33dd,null));};exports[_0xa5dc('0x29')]=function(_0x36d5ac,_0x1da7f4){if(_0x36d5ac[_0xa5dc('0x5f')]['id']){delete _0x36d5ac[_0xa5dc('0x5f')]['id'];}delete _0x36d5ac[_0xa5dc('0x5f')][_0xa5dc('0x2a')];return db['User'][_0xa5dc('0x36')]({'where':{'id':_0x36d5ac[_0xa5dc('0x60')]['id']}})['then'](handleEntityNotFound(_0x1da7f4,null))[_0xa5dc('0x16')](saveUpdates(_0x36d5ac[_0xa5dc('0x5f')],null))['then'](respondWithResult(_0x1da7f4,null))['catch'](handleError(_0x1da7f4,null));};exports[_0xa5dc('0x61')]=function(_0x596b2c,_0x4de6db){return db[_0xa5dc('0x3c')][_0xa5dc('0x61')]()[_0xa5dc('0x16')](respondWithResult(_0x4de6db,null))[_0xa5dc('0x20')](handleError(_0x4de6db,null));};exports['addContacts']=function(_0x5cb3e7,_0x481213){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x5cb3e7[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x481213,null))[_0xa5dc('0x16')](function(_0x5cd4f1){if(_0x5cd4f1){return _0x5cd4f1[_0xa5dc('0x62')](_0x5cb3e7['body']['ids'],_[_0xa5dc('0x63')](_0x5cb3e7[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{});}})['then'](respondWithResult(_0x481213,null))[_0xa5dc('0x20')](handleError(_0x481213,null));};function validateUser(_0x147a04){return new Promise(function(_0x2cfefa,_0x52130b){if(_0x147a04['internal'])return _0x2cfefa(_0x147a04);return db[_0xa5dc('0x65')][_0xa5dc('0x66')](0x1)[_0xa5dc('0x16')](function(_0x44dd9a){if(_0x44dd9a[_0xa5dc('0x67')])authService[_0xa5dc('0x68')](_0x147a04[_0xa5dc('0x41')]);db[_0xa5dc('0x3c')][_0xa5dc('0x69')](_0xa5dc('0x6a'))[_0xa5dc('0x16')](function(_0x3614a8){if(_['isNil'](_0x3614a8)){_0x147a04[_0xa5dc('0x6a')]=_0x44dd9a[_0xa5dc('0x6b')]||0x1;return;}if(_[_0xa5dc('0x6c')](_0x44dd9a['min_internal'])||_0x44dd9a[_0xa5dc('0x6b')]===_0x3614a8){_0x147a04[_0xa5dc('0x6a')]=_0x3614a8+0x1;return;}if(_0x44dd9a[_0xa5dc('0x6b')]>_0x3614a8){_0x147a04[_0xa5dc('0x6a')]=_0x44dd9a[_0xa5dc('0x6b')];return;}return db['sequelize'][_0xa5dc('0x46')](_0xa5dc('0x6d'),{'type':db[_0xa5dc('0x6e')]['QueryTypes'][_0xa5dc('0x6f')]})['then'](function(_0x5a96ab){if(_0x5a96ab&&_0x5a96ab['length']){for(var _0x3065a2=0x0,_0x290f40=_0x5a96ab[_0xa5dc('0x5a')];_0x3065a2<_0x290f40&&_[_0xa5dc('0x6c')](_0x147a04['internal']);_0x3065a2++){if(_0x44dd9a[_0xa5dc('0x6b')]<=_0x5a96ab[_0x3065a2][_0xa5dc('0x70')]){_0x147a04[_0xa5dc('0x6a')]=_0x5a96ab[_0x3065a2]['from'];}else if(_0x44dd9a['min_internal']>_0x5a96ab[_0x3065a2]['from']&&_0x44dd9a['min_internal']<=_0x5a96ab[_0x3065a2]['to']){_0x147a04[_0xa5dc('0x6a')]=_0x44dd9a[_0xa5dc('0x6b')];}}}if(_[_0xa5dc('0x6c')](_0x147a04[_0xa5dc('0x6a')])){_0x147a04[_0xa5dc('0x6a')]=_0x3614a8+0x1;}return _0x2cfefa(_0x147a04);});});})[_0xa5dc('0x20')](function(_0x1f9d3d){_0x52130b(_0x1f9d3d);});});}function updateUser(_0x220431){return new Promise(function(_0x27ab76,_0x1e7e8d){try{if(_0x220431[_0xa5dc('0x71')]){_0x220431['mailbox']=_0x220431['internal'];_0x220431[_0xa5dc('0x72')]={'mailbox':_0x220431[_0xa5dc('0x6a')],'password':_0x220431[_0xa5dc('0x41')],'fullname':_0x220431[_0xa5dc('0x73')],'email':_0x220431[_0xa5dc('0x74')]};}if(_0x220431[_0xa5dc('0x2a')]==='agent'){if(!_0x220431[_0xa5dc('0x75')])_0x220431[_0xa5dc('0x75')]=[_0xa5dc('0x76'),_0xa5dc('0x77'),_0xa5dc('0x78'),_0xa5dc('0x79'),'110','104',_0xa5dc('0x7a'),_0xa5dc('0x7b'),'107',_0xa5dc('0x7c'),_0xa5dc('0x7d'),_0xa5dc('0x7e'),_0xa5dc('0x7f'),_0xa5dc('0x80'),_0xa5dc('0x81')];}_0x27ab76(_0x220431);}catch(_0x49f4bc){_0x1e7e8d(_0x49f4bc);}});}exports[_0xa5dc('0x82')]=function(_0x4cfc6f,_0x43f3b7){if(_0x4cfc6f['user'][_0xa5dc('0x2a')]==='agent')throw new Error(_0xa5dc('0x83'));if(_0x4cfc6f[_0xa5dc('0x5f')][_0xa5dc('0x2a')]===_0xa5dc('0x2f')&&_0x4cfc6f['user'][_0xa5dc('0x2a')]!==_0xa5dc('0x2e')){throw new Error(_0xa5dc('0x84'));}if(_0x4cfc6f[_0xa5dc('0x5f')][_0xa5dc('0x2a')]==='admin'&&_0x4cfc6f[_0xa5dc('0x2f')]['role']!==_0xa5dc('0x2e')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil['checkUserLimits']([_0x4cfc6f[_0xa5dc('0x5f')]])[_0xa5dc('0x16')](function(){return validateUser(_0x4cfc6f[_0xa5dc('0x5f')]);})[_0xa5dc('0x16')](function(_0x558367){return updateUser(_0x558367)[_0xa5dc('0x16')](function(_0x107bdf){if(_0x107bdf[_0xa5dc('0x2a')]==='admin'){_0x107bdf[_0xa5dc('0x85')]=_0x4cfc6f[_0xa5dc('0x2f')][_0xa5dc('0x85')];delete _0x107bdf[_0xa5dc('0x86')];}return _0x107bdf;});})[_0xa5dc('0x16')](function(_0x2c0ecb){return db[_0xa5dc('0x3c')][_0xa5dc('0x82')](_0x2c0ecb,{'include':[{'model':db[_0xa5dc('0x72')],'as':'VoiceMail'}]});})[_0xa5dc('0x16')](function(_0x1575ac){if(_0x4cfc6f[_0xa5dc('0x5f')][_0xa5dc('0x2a')]===_0xa5dc('0x2f'))return _0x1575ac;if(_0x4cfc6f['user']['role']!==_0xa5dc('0x2f'))return _0x1575ac;return db[_0xa5dc('0x87')][_0xa5dc('0x36')]({'where':{'name':_0x1575ac[_0xa5dc('0x2a')]==='agent'?_0xa5dc('0x30'):_0xa5dc('0x88'),'userProfileId':_0x4cfc6f[_0xa5dc('0x2f')][_0xa5dc('0x86')]},'raw':!![]})[_0xa5dc('0x16')](function(_0x56708b){if(!_0x56708b||_0x56708b[_0xa5dc('0x89')]!=0x0)return _0x1575ac;return db['UserProfileResource'][_0xa5dc('0x82')]({'name':_0x1575ac['name'],'resourceId':_0x1575ac['id'],'type':_0x56708b[_0xa5dc('0x37')],'sectionId':_0x56708b['id']},{})[_0xa5dc('0x16')](function(){return _0x1575ac;});})[_0xa5dc('0x20')](function(_0x1a1750){logger[_0xa5dc('0x1c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a1750);throw _0x1a1750;});})[_0xa5dc('0x16')](respondWithResult(_0x43f3b7,0xc9))[_0xa5dc('0x20')](handleError(_0x43f3b7,null));};exports[_0xa5dc('0x8a')]=function(_0x33fa28,_0xbe6736){var _0x472e02=_0x33fa28[_0xa5dc('0x5f')];var _0x275931=[];if(_0x33fa28[_0xa5dc('0x2f')][_0xa5dc('0x2a')]===_0xa5dc('0x2b'))throw new Error(_0xa5dc('0x83'));if(_[_0xa5dc('0x8b')](_0x472e02,[_0xa5dc('0x2a'),_0xa5dc('0x2f')])&&_0x33fa28[_0xa5dc('0x2f')][_0xa5dc('0x2a')]!==_0xa5dc('0x2e')){throw new Error(_0xa5dc('0x84'));}if(_[_0xa5dc('0x8b')](_0x472e02,[_0xa5dc('0x2a'),'admin'])&&_0x33fa28[_0xa5dc('0x2f')][_0xa5dc('0x2a')]!==_0xa5dc('0x2e')){throw new Error(_0xa5dc('0x8c'));}return licenseUtil[_0xa5dc('0x8d')](_0x472e02)[_0xa5dc('0x16')](function(){return validateUser(_0x472e02[0x0]);})['then'](function(){for(var _0xf67488=0x1;_0xf67488<_0x472e02[_0xa5dc('0x5a')];_0xf67488++){var _0x57683e=_0x472e02[_0xf67488-0x1]['internal'];if(!_0x472e02[_0xf67488][_0xa5dc('0x6a')])_0x472e02[_0xf67488]['internal']=_0x57683e+0x1;_0x275931[_0xa5dc('0x4c')](validateUser(_0x472e02[_0xf67488]));}return Promise[_0xa5dc('0x53')](_0x275931);})[_0xa5dc('0x16')](function(){_0x275931=[];for(var _0x2d0d92=0x0;_0x2d0d92<_0x472e02['length'];_0x2d0d92++){_0x275931[_0xa5dc('0x4c')](updateUser(_0x472e02[_0x2d0d92]));}return Promise[_0xa5dc('0x53')](_0x275931);})[_0xa5dc('0x16')](function(){_0x275931=_0x472e02[_0xa5dc('0x3e')](function(_0x508231){return db[_0xa5dc('0x3c')][_0xa5dc('0x82')](_0x508231,{'include':[{'model':db[_0xa5dc('0x72')],'as':'VoiceMail'}]})[_0xa5dc('0x16')](function(_0x398f6d){_0x508231['id']=_0x398f6d['id'];return _0x508231;});});return Promise[_0xa5dc('0x53')](_0x275931);})['then'](function(_0x532d23){if(_0x33fa28[_0xa5dc('0x5f')][_0xa5dc('0x2a')]===_0xa5dc('0x2f'))return _0x532d23;if(_0x33fa28[_0xa5dc('0x2f')][_0xa5dc('0x2a')]!==_0xa5dc('0x2f'))return _0x532d23;var _0x4f9c64=_['some'](_0x532d23,function(_0x2f88fc){return _0x2f88fc[_0xa5dc('0x2a')]===_0xa5dc('0x2b')||_0x2f88fc[_0xa5dc('0x2a')]===_0xa5dc('0x31');});if(!_0x4f9c64)return _0x532d23;return db[_0xa5dc('0x87')][_0xa5dc('0x4a')]({'where':{'name':{'$or':['Agents',_0xa5dc('0x88')]},'userProfileId':_0x33fa28[_0xa5dc('0x2f')][_0xa5dc('0x86')]},'raw':!![]})[_0xa5dc('0x16')](function(_0x50dfb8){if(_[_0xa5dc('0x8e')](_0x50dfb8)||!_[_0xa5dc('0x8b')](_0x50dfb8,[_0xa5dc('0x89'),0x0]))return _0x532d23;_0x275931=[];var _0x24650a=_(_0x50dfb8)['map'](function(_0x4aeb0d){if(_0x4aeb0d[_0xa5dc('0x89')]===0x1)return;return _0x4aeb0d[_0xa5dc('0x37')]==='Agents'?_0xa5dc('0x2b'):_0xa5dc('0x31');})['compact']()[_0xa5dc('0x34')]();for(var _0x277f27=0x0;_0x277f27<_0x532d23['length'];_0x277f27++){if(!_[_0xa5dc('0x35')](_0x24650a,_0x532d23[_0x277f27][_0xa5dc('0x2a')]))return;var _0xc14710=_0x532d23[_0x277f27][_0xa5dc('0x2a')]===_0xa5dc('0x2b')?'Agents':'Telephones';_0x275931[_0xa5dc('0x4c')](db['UserProfileResource']['create']({'name':_0x532d23[_0x277f27]['name'],'resourceId':_0x532d23[_0x277f27]['id'],'type':_0xc14710,'sectionId':_[_0xa5dc('0x36')](_0x50dfb8,['name',_0xc14710])['id']},{}));}return Promise['all'](_0x275931);});})['then'](respondWithResult(_0xbe6736,0xc9))[_0xa5dc('0x20')](handleError(_0xbe6736,null));};exports[_0xa5dc('0x8f')]=function(_0x15ad30,_0xad59e6){if(_0x15ad30[_0xa5dc('0x5f')]['id']){delete _0x15ad30['body']['id'];}return db['User'][_0xa5dc('0x36')]({'where':{'id':_0x15ad30[_0xa5dc('0x60')]['id']}})['then'](function(_0x51316e){if(!_0x51316e)return null;if(_0x51316e['id']===_0x15ad30['user']['id']){if(!_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x90')]||!_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')]){throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))](_0xa5dc('0x94'));}if(!_0x51316e[_0xa5dc('0x95')](_0x15ad30['body']['oldPassword'])){throw new db[(_0xa5dc('0x92'))]['ValidationError'](_0xa5dc('0x96'));}if(_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x90')]===_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')]){throw new db['Sequelize'][(_0xa5dc('0x93'))](_0xa5dc('0x97'));}}else if(_0x15ad30[_0xa5dc('0x2f')][_0xa5dc('0x2a')]===_0xa5dc('0x2e')){if(!_0x15ad30['body']['newPassword']){throw new db[(_0xa5dc('0x92'))]['ValidationError'](_0xa5dc('0x98'));}}else if(_0x15ad30['user'][_0xa5dc('0x2a')]===_0xa5dc('0x2f')){if(!_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')]){throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))](_0xa5dc('0x98'));}if(_0x51316e['role']!==_0xa5dc('0x2b')){throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))](_0xa5dc('0x83'));}}else{throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))]('Unauthorized');}return _0x51316e;})[_0xa5dc('0x16')](handleEntityNotFound(_0xad59e6,null))[_0xa5dc('0x16')](function(_0x16529f){return db[_0xa5dc('0x65')][_0xa5dc('0x99')]({'attributes':['id','securePassword',_0xa5dc('0x9a'),_0xa5dc('0x9b')]})[_0xa5dc('0x16')](function(_0x3bbeff){if(_0x3bbeff[_0xa5dc('0x67')])authService[_0xa5dc('0x68')](_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')]);if(!_0x3bbeff[_0xa5dc('0x9a')]||!_0x16529f[_0xa5dc('0x9c')])return _0x16529f;authService[_0xa5dc('0x9d')](_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')],_0x16529f['previousPasswords'],_0x3bbeff['passwordHistoryLimit']);return _0x16529f;})[_0xa5dc('0x16')](saveUpdates({'password':_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')],'passwordResetAt':_0x15ad30['user']['id']==_0x15ad30[_0xa5dc('0x60')]['id']?moment():null,'previousPasswords':authService[_0xa5dc('0x9e')](_0x15ad30[_0xa5dc('0x5f')][_0xa5dc('0x91')],_0x16529f[_0xa5dc('0x9c')])},null));})[_0xa5dc('0x16')](respondWithResult(_0xad59e6,null))[_0xa5dc('0x20')](handleError(_0xad59e6,null));};exports[_0xa5dc('0x9f')]=function(_0x6b4da,_0x4abca6){var _0x1122f2=_0x6b4da[_0xa5dc('0x5f')]['channel'];return db[_0xa5dc('0x3c')]['find']({'where':{'id':_0x6b4da[_0xa5dc('0x60')]['id']},'attributes':['id',_0xa5dc('0x37'),'role','online','loginInPause',_0xa5dc('0xa0'),_0xa5dc('0xa1')]})['then'](handleEntityNotFound(_0x4abca6,null))['then'](function(_0x37d398){if(_0x37d398){if(!utils[_0xa5dc('0xa2')](_0x1122f2)){throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))](_0xa5dc('0xa3'));}return _0x37d398[_0xa5dc('0xa4')+_['capitalize'](_0x1122f2['toLowerCase']())+'Queues'](_0x6b4da['body'][_0xa5dc('0x64')],{'penalty':_0x6b4da[_0xa5dc('0x5f')][_0xa5dc('0xa5')]||0x0})['spread'](function(_0xf75999){for(var _0xf971fd=0x0;_0xf971fd<_0x6b4da[_0xa5dc('0x5f')][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0xf971fd+=0x1){var _0x4c18e5={'UserId':Number(_0x6b4da[_0xa5dc('0x60')]['id'])};_0x4c18e5[_[_0xa5dc('0xa6')](_0x1122f2['toLowerCase']())+_0xa5dc('0xa7')]=Number(_0x6b4da['body']['ids'][_0xf971fd]);socket[_0xa5dc('0xa8')](_0xa5dc('0x2f')+_[_0xa5dc('0xa6')](_0x1122f2[_0xa5dc('0xa9')]())+_0xa5dc('0xaa'),_0x4c18e5);}return _0xf75999;})[_0xa5dc('0x16')](function(){if(_0x1122f2===_0xa5dc('0xab')){return db[_0xa5dc('0xac')][_0xa5dc('0x4a')]({'where':{'id':_0x6b4da['body'][_0xa5dc('0x64')]||[]},'raw':!![],'attributes':['id',_0xa5dc('0x37')]});}})['then'](function(_0x1559cf){var _0x2e525b=_0x37d398['get']({'plain':!![]});var _0x2531e8=[];if(_0x1122f2==='voice'&&_0x2e525b[_0xa5dc('0x2a')]===_0xa5dc('0x2b')&&_0x2e525b[_0xa5dc('0xad')]){for(let _0x56cc2f=0x0;_0x56cc2f<_0x1559cf[_0xa5dc('0x5a')];_0x56cc2f+=0x1){_0x2531e8[_0xa5dc('0x4c')]({'membername':_0x2e525b[_0xa5dc('0x37')],'UserId':_0x2e525b['id'],'queue_name':_0x1559cf[_0x56cc2f][_0xa5dc('0x37')],'VoiceQueueId':_0x1559cf[_0x56cc2f]['id'],'interface':_[_0xa5dc('0x6c')](_0x2e525b[_0xa5dc('0xa1')])?util[_0xa5dc('0xae')](_0xa5dc('0xaf'),_0x2e525b[_0xa5dc('0x37')]):_0x2e525b[_0xa5dc('0xa1')],'paused':_0x2e525b[_0xa5dc('0xa0')]||![],'penalty':_0x6b4da[_0xa5dc('0x5f')]['penalty']||0x0});}return Promise[_0xa5dc('0x53')](_0x2531e8[_0xa5dc('0x3e')](function(_0x3adb96){return db[_0xa5dc('0xb0')][_0xa5dc('0xb1')](_0x3adb96);}));}return _0x37d398;});}})[_0xa5dc('0x16')](respondWithStatusCode(_0x4abca6,null))['catch'](handleError(_0x4abca6,null));};exports[_0xa5dc('0xb2')]=function(_0xfde6f8,_0x5c3058){var _0x5900b4,_0x36a194;return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0xfde6f8[_0xa5dc('0x60')]['id']},'attributes':['id',_0xa5dc('0x37'),_0xa5dc('0x2a')]})['then'](handleEntityNotFound(_0x5c3058,null))[_0xa5dc('0x16')](function(_0x4ee50e){if(_0x4ee50e){_0x5900b4=_0x4ee50e;if(!_0xfde6f8['query']['channel']||!utils[_0xa5dc('0xa2')](_0xfde6f8['query']['channel'])){throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))]('Unknown\x20channel');}return _0x4ee50e[_0xa5dc('0xb3')+_[_0xa5dc('0xa6')](_0xfde6f8[_0xa5dc('0x46')]['channel'][_0xa5dc('0xa9')]())+_0xa5dc('0xb4')](_0xfde6f8['query'][_0xa5dc('0x64')]);}})[_0xa5dc('0x16')](function(_0x3b2f00){if(_[_0xa5dc('0xb5')](_0xfde6f8[_0xa5dc('0x46')][_0xa5dc('0x64')])){for(var _0x13dd0b=0x0;_0x13dd0b<_0xfde6f8['query']['ids'][_0xa5dc('0x5a')];_0x13dd0b+=0x1){_0x36a194={'UserId':Number(_0xfde6f8['params']['id'])};_0x36a194[_[_0xa5dc('0xa6')](_0xfde6f8[_0xa5dc('0x46')]['channel'][_0xa5dc('0xa9')]())+_0xa5dc('0xa7')]=Number(_0xfde6f8[_0xa5dc('0x46')][_0xa5dc('0x64')][_0x13dd0b]);socket[_0xa5dc('0xa8')]('user'+_[_0xa5dc('0xa6')](_0xfde6f8[_0xa5dc('0x46')]['channel'][_0xa5dc('0xa9')]())+'Queue:remove',_0x36a194);}}else{_0x36a194={'UserId':Number(_0xfde6f8[_0xa5dc('0x60')]['id'])};_0x36a194[_['capitalize'](_0xfde6f8[_0xa5dc('0x46')]['channel'][_0xa5dc('0xa9')]())+'QueueId']=Number(_0xfde6f8['query'][_0xa5dc('0x64')]);socket[_0xa5dc('0xa8')](_0xa5dc('0x2f')+_[_0xa5dc('0xa6')](_0xfde6f8[_0xa5dc('0x46')][_0xa5dc('0xb6')][_0xa5dc('0xa9')]())+_0xa5dc('0xb7'),_0x36a194);}return _0x3b2f00;})['then'](function(){if(_0xfde6f8[_0xa5dc('0x46')][_0xa5dc('0xb6')]===_0xa5dc('0xab')){return db[_0xa5dc('0xb0')][_0xa5dc('0x2d')]({'where':{'UserId':_0xfde6f8[_0xa5dc('0x60')]['id'],'VoiceQueueId':_0xfde6f8[_0xa5dc('0x46')][_0xa5dc('0x64')]},'individualHooks':!![]})[_0xa5dc('0x16')](function(){return _0x5900b4;});}return _0x5900b4;})[_0xa5dc('0x16')](respondWithStatusCode(_0x5c3058,null))[_0xa5dc('0x20')](handleError(_0x5c3058,null));};exports['addAvatar']=function(_0x317e01,_0x2ba25f){_0x317e01[_0xa5dc('0x5f')][_0xa5dc('0xb8')]=_0x317e01['file']['filename'];return db['User'][_0xa5dc('0x36')]({'where':{'id':_0x317e01['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x2ba25f,null))[_0xa5dc('0x16')](saveUpdates(_0x317e01[_0xa5dc('0x5f')],null))[_0xa5dc('0x16')](respondWithResult(_0x2ba25f,null))[_0xa5dc('0x20')](handleError(_0x2ba25f,null));};exports[_0xa5dc('0xb9')]=function(_0x2438a9,_0x580a41){var _0x778e6a=path[_0xa5dc('0xba')](config[_0xa5dc('0xbb')],_0xa5dc('0xbc'));return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x2438a9['params']['id']},'attributes':['id',_0xa5dc('0xb8')],'raw':!![]})['then'](handleEntityNotFound(_0x580a41,null))[_0xa5dc('0x16')](function(_0x56204a){if(_0x56204a){if(_[_0xa5dc('0x6c')](_0x56204a[_0xa5dc('0xb8')])){return _0x580a41['download'](_0x778e6a);}else{if(!fs['existsSync'](path[_0xa5dc('0xba')](config[_0xa5dc('0xbb')],_0xa5dc('0xbd'),_0x56204a[_0xa5dc('0xb8')]))){return _0x580a41['download'](_0x778e6a);}return _0x580a41[_0xa5dc('0xbe')](path['join'](config[_0xa5dc('0xbb')],'server/files/images/',_0x56204a['userpic']));}}})[_0xa5dc('0x20')](handleError(_0x580a41,null));};exports[_0xa5dc('0xbf')]=function(_0x2d91d0,_0x1ab7ca){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x2d91d0[_0xa5dc('0x60')]['id']},'attributes':['id']})[_0xa5dc('0x16')](handleEntityNotFound(_0x1ab7ca,null))[_0xa5dc('0x16')](function(_0x59bd8e){var _0x452085=[];values=_0x59bd8e[_0xa5dc('0x4e')];_0x452085[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x4d'),_0x59bd8e[_0xa5dc('0x4e')]));_0x452085['push'](get_open_tabs(_0xa5dc('0x4f'),_0x59bd8e[_0xa5dc('0x4e')]));_0x452085[_0xa5dc('0x4c')](get_open_tabs('openchannel',_0x59bd8e['dataValues']));_0x452085[_0xa5dc('0x4c')](get_open_tabs(_0xa5dc('0x52'),_0x59bd8e['dataValues']));_0x452085['push'](get_open_tabs('fax',_0x59bd8e[_0xa5dc('0x4e')]));_0x452085['push'](get_open_tabs(_0xa5dc('0x50'),_0x59bd8e['dataValues']));return Promise[_0xa5dc('0x53')](_0x452085);})[_0xa5dc('0x16')](function(_0x576e14){if(_0x576e14){var _0x11a18f=_[_0xa5dc('0x3e')](values[_0xa5dc('0xc0')],function(_0x2d515b){return{'channel':'CHAT','id':_0x2d515b['id'],'createdAt':_0x2d515b['createdAt']};});var _0x43ac13=_[_0xa5dc('0x3e')](values[_0xa5dc('0xc1')],function(_0x1c9c51){return{'channel':_0xa5dc('0xc2'),'id':_0x1c9c51['id'],'createdAt':_0x1c9c51[_0xa5dc('0xc3')]};});var _0x4005d6=_[_0xa5dc('0x3e')](values[_0xa5dc('0xc4')],function(_0x532477){return{'channel':_0xa5dc('0xc5'),'id':_0x532477['id'],'createdAt':_0x532477[_0xa5dc('0xc3')]};});var _0x4cd69b=_[_0xa5dc('0x3e')](values[_0xa5dc('0xc6')],function(_0x4a1f7f){return{'channel':_0xa5dc('0xc7'),'id':_0x4a1f7f['id'],'createdAt':_0x4a1f7f[_0xa5dc('0xc3')]};});var _0x51cb44=_[_0xa5dc('0x3e')](values['SmsOpenTabs'],function(_0x89d620){return{'channel':_0xa5dc('0xc8'),'id':_0x89d620['id'],'createdAt':_0x89d620[_0xa5dc('0xc3')]};});var _0x12267f=_[_0xa5dc('0x3e')](values['WhatsappOpenTabs'],function(_0x5e483c){return{'channel':'WHATSAPP','id':_0x5e483c['id'],'createdAt':_0x5e483c['createdAt']};});var _0x35834a=_[_0xa5dc('0xc9')](_0x11a18f,_0x43ac13,_0x4005d6,_0x4cd69b,_0x51cb44,_0x12267f);var _0x5d97ef={'count':_0x35834a[_0xa5dc('0x5a')],'rows':_0x35834a};return _0x5d97ef;}else return null;})[_0xa5dc('0x16')](respondWithResult(_0x1ab7ca,null))[_0xa5dc('0x20')](handleError(_0x1ab7ca,null));};exports[_0xa5dc('0xca')]=function(_0x2ea98c,_0x3f0d00){var _0x558b6c={};return db['User'][_0xa5dc('0x99')]({'where':{'id':_0x2ea98c[_0xa5dc('0x60')]['id']}})['then'](function(_0x491350){if(!_0x491350){throw new APINotFoundError(util['format'](_0xa5dc('0xcb'),_0x2ea98c[_0xa5dc('0x60')]['id']));}return contacts[_0xa5dc('0x61')]();})[_0xa5dc('0x16')](function(_0x11712d){_0x2ea98c[_0xa5dc('0x46')]['User']=_0x2ea98c['params']['id'];_0x558b6c=qs[_0xa5dc('0x42')](_0x11712d,_0x2ea98c);if(_0x2ea98c[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0x44'))){_0x558b6c[_0xa5dc('0x45')]=[{'model':db['CmList'],'as':_0xa5dc('0xcd'),'required':![]},{'model':db[_0xa5dc('0xce')],'as':'Tags','attributes':['id','name',_0xa5dc('0xcf')],'where':_0x2ea98c[_0xa5dc('0x46')]['tag']?{'id':_0x2ea98c[_0xa5dc('0x46')]['tag']}:undefined,'required':_0x2ea98c[_0xa5dc('0x46')][_0xa5dc('0xd0')]?!![]:![]}];}return contacts[_0xa5dc('0x4a')](_0x2ea98c[_0xa5dc('0x46')],_0x2ea98c['user'],_0x558b6c,_0x11712d);})[_0xa5dc('0x16')](respondWithFilteredResult(_0x3f0d00,_0x558b6c))[_0xa5dc('0x20')](APIHandleError(_0x3f0d00));};exports[_0xa5dc('0xd1')]=function(_0x470d38,_0x17d4a8){var _0x80ccb1;var _0x277bc6={};var _0x5991f0;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x470d38[_0xa5dc('0x60')]['id']},'attributes':['id',_0xa5dc('0x37'),'role']})['then'](handleEntityNotFound(_0x17d4a8,null))[_0xa5dc('0x16')](function(_0x3e34e9){if(!utils[_0xa5dc('0xa2')](_0x470d38[_0xa5dc('0x46')][_0xa5dc('0xb6')])){throw new db['Sequelize'][(_0xa5dc('0x93'))](_0xa5dc('0xa3'));}_0x80ccb1=_0x3e34e9;var _0x4de6fd={};_0x4de6fd[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_[_0xa5dc('0xa6')](_0x470d38['query']['channel'])+_0xa5dc('0xd2')][_0xa5dc('0x3d')]);_0x4de6fd[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x470d38[_0xa5dc('0x46')]);_0x4de6fd[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x4de6fd[_0xa5dc('0x54')],_0x4de6fd['query']);_0x277bc6[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x4de6fd[_0xa5dc('0x54')],qs['fields'](_0x470d38[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x277bc6['attributes']=_0x277bc6[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x277bc6[_0xa5dc('0x49')]:_0x4de6fd[_0xa5dc('0x54')];_0x277bc6[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x470d38['query'][_0xa5dc('0xd4')]);_0x277bc6[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x470d38[_0xa5dc('0x46')],_0x4de6fd[_0xa5dc('0x57')]));if(_0x470d38[_0xa5dc('0x46')]['filter']){_0x277bc6[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x277bc6[_0xa5dc('0x43')],{'$or':_['map'](_0x277bc6[_0xa5dc('0x49')],function(_0x4d8fa7){var _0x4e9f6f={};_0x4e9f6f[_0x4d8fa7]={'$like':'%'+_0x470d38[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x4e9f6f;})});}_0x277bc6=_[_0xa5dc('0x5c')]({},_0x277bc6,_0x470d38[_0xa5dc('0xd6')]);switch(_0x80ccb1[_0xa5dc('0x2a')]){case'admin':return db[_[_0xa5dc('0xa6')](_0x470d38[_0xa5dc('0x46')][_0xa5dc('0xb6')])+_0xa5dc('0xd2')][_0xa5dc('0x4a')](_0x277bc6);case _0xa5dc('0x2f'):case _0xa5dc('0x2b'):return _0x80ccb1[_0xa5dc('0xd7')+_[_0xa5dc('0xa6')](_0x470d38['query']['channel'])+_0xa5dc('0xb4')](_0x277bc6);default:throw new db[(_0xa5dc('0x92'))][(_0xa5dc('0x93'))]('Unknown\x20role');}})[_0xa5dc('0x16')](function(_0xcfd7f3){_0x5991f0=_0xcfd7f3[_0xa5dc('0x5a')];if(!_0x470d38['query'][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x277bc6[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x470d38[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x277bc6[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x470d38['query']['offset']);}switch(_0x80ccb1['role']){case _0xa5dc('0x2e'):return db[_['capitalize'](_0x470d38[_0xa5dc('0x46')][_0xa5dc('0xb6')])+_0xa5dc('0xd2')][_0xa5dc('0x4a')](_0x277bc6);case'user':case _0xa5dc('0x2b'):return _0x80ccb1['get'+_['capitalize'](_0x470d38[_0xa5dc('0x46')][_0xa5dc('0xb6')])+'Queues'](_0x277bc6);}})['then'](function(_0x284b4f){return{'count':_0x5991f0,'rows':_0x284b4f};})[_0xa5dc('0x16')](respondWithResult(_0x17d4a8,null))[_0xa5dc('0x20')](handleError(_0x17d4a8,null));};exports[_0xa5dc('0xd9')]=function(_0x3a277b,_0x58bacb){var _0x392f55={};var _0x63dd9d={};var _0x353eb6;var _0x3769d6;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x3a277b['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x58bacb,null))[_0xa5dc('0x16')](function(_0x30f0e7){if(_0x30f0e7){_0x353eb6=_0x30f0e7;_0x63dd9d['model']=_[_0xa5dc('0x56')](db[_0xa5dc('0xb0')][_0xa5dc('0x3d')]);_0x63dd9d[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x3a277b[_0xa5dc('0x46')]);_0x63dd9d[_0xa5dc('0x57')]=_['intersection'](_0x63dd9d[_0xa5dc('0x54')],_0x63dd9d['query']);_0x392f55[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x63dd9d[_0xa5dc('0x54')],qs['fields'](_0x3a277b[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x392f55[_0xa5dc('0x49')]=_0x392f55[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x392f55[_0xa5dc('0x49')]:_0x63dd9d['model'];_0x392f55['order']=qs[_0xa5dc('0xd4')](_0x3a277b[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x392f55[_0xa5dc('0x43')]=qs['filters'](_[_0xa5dc('0xd5')](_0x3a277b[_0xa5dc('0x46')],_0x63dd9d[_0xa5dc('0x57')]));if(_0x3a277b[_0xa5dc('0x46')]['filter']){_0x392f55[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x392f55['where'],{'$or':_[_0xa5dc('0x3e')](_0x392f55[_0xa5dc('0x49')],function(_0x583b8f){var _0x32cac5={};_0x32cac5[_0x583b8f]={'$like':'%'+_0x3a277b[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x32cac5;})});}_0x392f55=_['merge']({},_0x392f55,_0x3a277b[_0xa5dc('0xd6')]);return _0x353eb6['getVoiceQueuesRt'](_0x392f55);}})[_0xa5dc('0x16')](function(_0x6463c2){if(_0x6463c2){_0x3769d6=_0x6463c2[_0xa5dc('0x5a')];if(!_0x3a277b['query']['hasOwnProperty'](_0xa5dc('0xd8'))){_0x392f55[_0xa5dc('0x26')]=qs['limit'](_0x3a277b[_0xa5dc('0x46')]['limit']);_0x392f55[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x3a277b[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x353eb6['getVoiceQueuesRt'](_0x392f55);}})[_0xa5dc('0x16')](function(_0x4a5d24){if(_0x4a5d24){return _0x4a5d24?{'count':_0x3769d6,'rows':_0x4a5d24}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x58bacb,null))[_0xa5dc('0x20')](handleError(_0x58bacb,null));};exports[_0xa5dc('0xda')]=function(_0x294b01,_0x5bd70a){var _0x463a99={};var _0x480003={};var _0x4d3950;var _0x56508d;return db[_0xa5dc('0x3c')]['findOne']({'where':{'id':_0x294b01[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x5bd70a,null))['then'](function(_0x3d0831){if(_0x3d0831){_0x4d3950=_0x3d0831;_0x480003[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0xdb')][_0xa5dc('0x3d')]);_0x480003[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x294b01[_0xa5dc('0x46')]);_0x480003[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x480003[_0xa5dc('0x54')],_0x480003[_0xa5dc('0x46')]);_0x463a99['attributes']=_[_0xa5dc('0x58')](_0x480003[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x294b01['query'][_0xa5dc('0x59')]));_0x463a99['attributes']=_0x463a99[_0xa5dc('0x49')]['length']?_0x463a99[_0xa5dc('0x49')]:_0x480003[_0xa5dc('0x54')];_0x463a99[_0xa5dc('0xd3')]=qs['sort'](_0x294b01[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x463a99['where']=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x294b01['query'],_0x480003[_0xa5dc('0x57')]));if(_0x294b01[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x463a99[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x463a99[_0xa5dc('0x43')],{'$or':_['map'](_0x463a99[_0xa5dc('0x49')],function(_0x4d6b0b){var _0x24693={};_0x24693[_0x4d6b0b]={'$like':'%'+_0x294b01[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x24693;})});}_0x463a99=_[_0xa5dc('0x5c')]({},_0x463a99,_0x294b01[_0xa5dc('0xd6')]);return _0x4d3950[_0xa5dc('0xda')](_0x463a99);}})[_0xa5dc('0x16')](function(_0x2f6e10){if(_0x2f6e10){_0x56508d=_0x2f6e10[_0xa5dc('0x5a')];if(!_0x294b01[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x463a99[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x294b01['query'][_0xa5dc('0x26')]);_0x463a99[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x294b01['query']['offset']);}return _0x4d3950[_0xa5dc('0xda')](_0x463a99);}})[_0xa5dc('0x16')](function(_0x3225ca){if(_0x3225ca){return _0x3225ca?{'count':_0x56508d,'rows':_0x3225ca}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x5bd70a,null))[_0xa5dc('0x20')](handleError(_0x5bd70a,null));};exports[_0xa5dc('0xdc')]=function(_0xecfaf8,_0x30a799){var _0x3049ab={'raw':!![],'where':{}};var _0x46f727={};var _0x41955d={'count':0x0,'rows':[]};return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0xecfaf8[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x30a799,null))[_0xa5dc('0x16')](function(_0xf42da5){if(_0xf42da5){_0x46f727[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0xdd')][_0xa5dc('0x3d')]);_0x46f727[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0xecfaf8[_0xa5dc('0x46')]);_0x46f727[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x46f727[_0xa5dc('0x54')],_0x46f727[_0xa5dc('0x46')]);_0x3049ab[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x46f727[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0xecfaf8[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x3049ab[_0xa5dc('0x49')]=_0x3049ab[_0xa5dc('0x49')]['length']?_0x3049ab[_0xa5dc('0x49')]:_0x46f727['model'];if(!_0xecfaf8[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x3049ab[_0xa5dc('0x26')]=qs['limit'](_0xecfaf8[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x3049ab[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0xecfaf8[_0xa5dc('0x46')]['offset']);}_0x3049ab[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0xecfaf8['query'][_0xa5dc('0xd4')]);_0x3049ab[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0xecfaf8[_0xa5dc('0x46')],_0x46f727[_0xa5dc('0x57')]));_0x3049ab[_0xa5dc('0x43')][_0xa5dc('0xde')]=_0xf42da5['id'];if(_0xecfaf8['query'][_0xa5dc('0x32')]){_0x3049ab[_0xa5dc('0x43')]=_['merge'](_0x3049ab['where'],{'$or':_['map'](_0x3049ab['attributes'],function(_0x3c3025){var _0x4224df={};_0x4224df[_0x3c3025]={'$like':'%'+_0xecfaf8[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x4224df;})});}_0x3049ab=_[_0xa5dc('0x5c')]({},_0x3049ab,_0xecfaf8[_0xa5dc('0xd6')]);return db['VoiceRecording']['count']({'where':_0x3049ab[_0xa5dc('0x43')]})[_0xa5dc('0x16')](function(_0xbc7bd1){_0x41955d['count']=_0xbc7bd1;if(_0xecfaf8[_0xa5dc('0x46')][_0xa5dc('0x44')]){_0x3049ab[_0xa5dc('0x45')]=[{'all':!![]}];}return db['VoiceRecording'][_0xa5dc('0x4a')](_0x3049ab);})[_0xa5dc('0x16')](function(_0x379375){_0x41955d[_0xa5dc('0x4b')]=_0x379375;return _0x41955d;});}})[_0xa5dc('0x16')](respondWithFilteredResult(_0x30a799,_0x3049ab))[_0xa5dc('0x20')](handleError(_0x30a799,null));};exports[_0xa5dc('0xdf')]=function(_0x383416,_0x22bc6f){var _0x124f7d={'raw':!![],'where':{}};var _0x7b5471={};var _0x32f3a8={'count':0x0,'rows':[]};return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x383416['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x22bc6f,null))[_0xa5dc('0x16')](function(_0x2bd136){if(_0x2bd136){_0x7b5471[_0xa5dc('0x54')]=_['keys'](db[_0xa5dc('0xe0')][_0xa5dc('0x3d')]);_0x7b5471[_0xa5dc('0x46')]=_['keys'](_0x383416['query']);_0x7b5471['filters']=_[_0xa5dc('0x58')](_0x7b5471[_0xa5dc('0x54')],_0x7b5471[_0xa5dc('0x46')]);_0x124f7d[_0xa5dc('0x49')]=_['intersection'](_0x7b5471[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x383416[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x124f7d['attributes']=_0x124f7d[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x124f7d[_0xa5dc('0x49')]:_0x7b5471['model'];if(!_0x383416[_0xa5dc('0x46')]['hasOwnProperty'](_0xa5dc('0xd8'))){_0x124f7d[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x383416[_0xa5dc('0x46')]['limit']);_0x124f7d['offset']=qs[_0xa5dc('0x25')](_0x383416[_0xa5dc('0x46')]['offset']);}_0x124f7d[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x383416[_0xa5dc('0x46')]['sort']);_0x124f7d[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_['pick'](_0x383416['query'],_0x7b5471[_0xa5dc('0x57')]));_0x124f7d[_0xa5dc('0x43')][_0xa5dc('0xde')]=_0x2bd136['id'];if(_0x383416[_0xa5dc('0x46')]['filter']){_0x124f7d[_0xa5dc('0x43')]=_['merge'](_0x124f7d['where'],{'$or':_[_0xa5dc('0x3e')](_0x124f7d['attributes'],function(_0x1f78b6){var _0x2a9f73={};_0x2a9f73[_0x1f78b6]={'$like':'%'+_0x383416[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x2a9f73;})});}_0x124f7d=_['merge']({},_0x124f7d,_0x383416[_0xa5dc('0xd6')]);return db[_0xa5dc('0xe0')][_0xa5dc('0x24')]({'where':_0x124f7d['where']})[_0xa5dc('0x16')](function(_0xc86fb){_0x32f3a8[_0xa5dc('0x24')]=_0xc86fb;if(_0x383416[_0xa5dc('0x46')]['includeAll']){_0x124f7d[_0xa5dc('0x45')]=[{'all':!![]}];}return db[_0xa5dc('0xe0')][_0xa5dc('0x4a')](_0x124f7d);})[_0xa5dc('0x16')](function(_0x543bfb){_0x32f3a8[_0xa5dc('0x4b')]=_0x543bfb;return _0x32f3a8;});}})[_0xa5dc('0x16')](respondWithFilteredResult(_0x22bc6f,_0x124f7d))['catch'](handleError(_0x22bc6f,null));};exports[_0xa5dc('0xe1')]=function(_0x10942f,_0x29a150){var _0x224231={};var _0x50222b={};var _0x121502;var _0x13e3fd;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x10942f[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x29a150,null))[_0xa5dc('0x16')](function(_0x181322){if(_0x181322){_0x121502=_0x181322;_0x50222b[_0xa5dc('0x54')]=_['keys'](db[_0xa5dc('0xe2')][_0xa5dc('0x3d')]);_0x50222b['query']=_[_0xa5dc('0x56')](_0x10942f[_0xa5dc('0x46')]);_0x50222b[_0xa5dc('0x57')]=_['intersection'](_0x50222b[_0xa5dc('0x54')],_0x50222b[_0xa5dc('0x46')]);_0x224231[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x50222b[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x10942f[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x224231[_0xa5dc('0x49')]=_0x224231[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x224231[_0xa5dc('0x49')]:_0x50222b[_0xa5dc('0x54')];_0x224231[_0xa5dc('0xd3')]=qs['sort'](_0x10942f[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x224231[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_['pick'](_0x10942f[_0xa5dc('0x46')],_0x50222b[_0xa5dc('0x57')]));if(_0x10942f['query'][_0xa5dc('0x32')]){_0x224231[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x224231[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x224231[_0xa5dc('0x49')],function(_0x21183f){var _0x324ee1={};_0x324ee1[_0x21183f]={'$like':'%'+_0x10942f[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x324ee1;})});}_0x224231=_[_0xa5dc('0x5c')]({},_0x224231,_0x10942f[_0xa5dc('0xd6')]);return _0x121502[_0xa5dc('0xe1')](_0x224231);}})[_0xa5dc('0x16')](function(_0x14afe5){if(_0x14afe5){_0x13e3fd=_0x14afe5[_0xa5dc('0x5a')];if(!_0x10942f[_0xa5dc('0x46')][_0xa5dc('0xcc')]('nolimit')){_0x224231[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x10942f[_0xa5dc('0x46')]['limit']);_0x224231[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x10942f[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x121502[_0xa5dc('0xe1')](_0x224231);}})['then'](function(_0x4e3a60){if(_0x4e3a60){return _0x4e3a60?{'count':_0x13e3fd,'rows':_0x4e3a60}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x29a150,null))[_0xa5dc('0x20')](handleError(_0x29a150,null));};exports[_0xa5dc('0xe3')]=function(_0x59b109,_0x3279ab){var _0x5eaf78={};var _0x682f44={};var _0x280db3;var _0x556de8;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x59b109['params']['id']}})['then'](handleEntityNotFound(_0x3279ab,null))[_0xa5dc('0x16')](function(_0x1f555c){if(_0x1f555c){_0x280db3=_0x1f555c;_0x682f44[_0xa5dc('0x54')]=_['keys'](db[_0xa5dc('0xe4')]['rawAttributes']);_0x682f44[_0xa5dc('0x46')]=_['keys'](_0x59b109['query']);_0x682f44[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x682f44[_0xa5dc('0x54')],_0x682f44[_0xa5dc('0x46')]);_0x5eaf78['attributes']=_[_0xa5dc('0x58')](_0x682f44[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x59b109[_0xa5dc('0x46')]['fields']));_0x5eaf78[_0xa5dc('0x49')]=_0x5eaf78[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x5eaf78[_0xa5dc('0x49')]:_0x682f44[_0xa5dc('0x54')];_0x5eaf78[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x59b109['query'][_0xa5dc('0xd4')]);_0x5eaf78[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x59b109[_0xa5dc('0x46')],_0x682f44[_0xa5dc('0x57')]));if(_0x59b109['query'][_0xa5dc('0x32')]){_0x5eaf78[_0xa5dc('0x43')]=_['merge'](_0x5eaf78[_0xa5dc('0x43')],{'$or':_['map'](_0x5eaf78[_0xa5dc('0x49')],function(_0x1ac0d8){var _0x11cc97={};_0x11cc97[_0x1ac0d8]={'$like':'%'+_0x59b109[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x11cc97;})});}_0x5eaf78=_['merge']({},_0x5eaf78,_0x59b109[_0xa5dc('0xd6')]);return _0x280db3[_0xa5dc('0xe3')](_0x5eaf78);}})[_0xa5dc('0x16')](function(_0x3907ec){if(_0x3907ec){_0x556de8=_0x3907ec['length'];if(!_0x59b109['query']['hasOwnProperty'](_0xa5dc('0xd8'))){_0x5eaf78[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x59b109[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x5eaf78[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x59b109['query']['offset']);}return _0x280db3[_0xa5dc('0xe3')](_0x5eaf78);}})['then'](function(_0x6d46b){if(_0x6d46b){return _0x6d46b?{'count':_0x556de8,'rows':_0x6d46b}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x3279ab,null))[_0xa5dc('0x20')](handleError(_0x3279ab,null));};exports[_0xa5dc('0xe5')]=function(_0x4d8337,_0x21e977){var _0x5f3f7b={'raw':!![],'where':{}};var _0x5b8c60={};var _0x1b3440={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x4d8337['params']['id']}})['then'](handleEntityNotFound(_0x21e977,null))['then'](function(_0x409a05){if(_0x409a05){_0x5b8c60[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0xe6')]['rawAttributes']);_0x5b8c60['query']=_['keys'](_0x4d8337[_0xa5dc('0x46')]);_0x5b8c60[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x5b8c60[_0xa5dc('0x54')],_0x5b8c60[_0xa5dc('0x46')]);_0x5f3f7b[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x5b8c60['model'],qs[_0xa5dc('0x59')](_0x4d8337[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x5f3f7b[_0xa5dc('0x49')]=_0x5f3f7b[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x5f3f7b['attributes']:_0x5b8c60[_0xa5dc('0x54')];if(!_0x4d8337[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x5f3f7b[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x4d8337[_0xa5dc('0x46')]['limit']);_0x5f3f7b[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x4d8337['query'][_0xa5dc('0x25')]);}_0x5f3f7b[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x4d8337[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x5f3f7b[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x4d8337['query'],_0x5b8c60[_0xa5dc('0x57')]));_0x5f3f7b[_0xa5dc('0x43')][_0xa5dc('0xde')]=_0x409a05['id'];if(_0x4d8337[_0xa5dc('0x46')]['filter']){_0x5f3f7b[_0xa5dc('0x43')]=_['merge'](_0x5f3f7b[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x5f3f7b['attributes'],function(_0x55caa8){var _0x3b9710={};_0x3b9710[_0x55caa8]={'$like':'%'+_0x4d8337['query'][_0xa5dc('0x32')]+'%'};return _0x3b9710;})});}_0x5f3f7b=_[_0xa5dc('0x5c')]({},_0x5f3f7b,_0x4d8337['options']);return db[_0xa5dc('0xe6')][_0xa5dc('0x24')]({'where':_0x5f3f7b[_0xa5dc('0x43')]})[_0xa5dc('0x16')](function(_0x2cac86){_0x1b3440[_0xa5dc('0x24')]=_0x2cac86;if(_0x4d8337['query']['includeAll']){_0x5f3f7b['include']=[{'all':!![]}];}return db[_0xa5dc('0xe6')][_0xa5dc('0x4a')](_0x5f3f7b);})['then'](function(_0x563db5){_0x1b3440[_0xa5dc('0x4b')]=_0x563db5;return _0x1b3440;});}})[_0xa5dc('0x16')](respondWithFilteredResult(_0x21e977,_0x5f3f7b))[_0xa5dc('0x20')](handleError(_0x21e977,null));};exports[_0xa5dc('0xe7')]=function(_0x52dd38,_0x411b92){var _0x4b531f={};var _0x19fc4b={};var _0x2d2b86;var _0x3d5304;return db[_0xa5dc('0x3c')]['findOne']({'where':{'id':_0x52dd38['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x411b92,null))['then'](function(_0x59d00b){if(_0x59d00b){_0x2d2b86=_0x59d00b;_0x19fc4b[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db['SmsInteraction'][_0xa5dc('0x3d')]);_0x19fc4b[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x52dd38['query']);_0x19fc4b[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x19fc4b[_0xa5dc('0x54')],_0x19fc4b['query']);_0x4b531f[_0xa5dc('0x49')]=_['intersection'](_0x19fc4b[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x52dd38[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x4b531f['attributes']=_0x4b531f['attributes'][_0xa5dc('0x5a')]?_0x4b531f[_0xa5dc('0x49')]:_0x19fc4b[_0xa5dc('0x54')];_0x4b531f[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x52dd38[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x4b531f[_0xa5dc('0x43')]=qs['filters'](_[_0xa5dc('0xd5')](_0x52dd38[_0xa5dc('0x46')],_0x19fc4b[_0xa5dc('0x57')]));if(_0x52dd38[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x4b531f[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x4b531f[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x4b531f[_0xa5dc('0x49')],function(_0x15c0dc){var _0x280a85={};_0x280a85[_0x15c0dc]={'$like':'%'+_0x52dd38[_0xa5dc('0x46')]['filter']+'%'};return _0x280a85;})});}_0x4b531f=_[_0xa5dc('0x5c')]({},_0x4b531f,_0x52dd38[_0xa5dc('0xd6')]);return _0x2d2b86[_0xa5dc('0xe7')](_0x4b531f);}})[_0xa5dc('0x16')](function(_0xeff1e0){if(_0xeff1e0){_0x3d5304=_0xeff1e0[_0xa5dc('0x5a')];if(!_0x52dd38[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x4b531f[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x52dd38['query']['limit']);_0x4b531f[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x52dd38[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x2d2b86[_0xa5dc('0xe7')](_0x4b531f);}})[_0xa5dc('0x16')](function(_0xdfbfb2){if(_0xdfbfb2){return _0xdfbfb2?{'count':_0x3d5304,'rows':_0xdfbfb2}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x411b92,null))['catch'](handleError(_0x411b92,null));};exports[_0xa5dc('0xe8')]=function(_0x8fcfb3,_0x92c9b0){var _0x320244={};var _0x403396={};var _0x54bf91;var _0x720e93;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x8fcfb3[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x92c9b0,null))['then'](function(_0x145cd4){if(_0x145cd4){_0x54bf91=_0x145cd4;_0x403396['model']=_[_0xa5dc('0x56')](db[_0xa5dc('0xe9')][_0xa5dc('0x3d')]);_0x403396[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x8fcfb3[_0xa5dc('0x46')]);_0x403396['filters']=_[_0xa5dc('0x58')](_0x403396[_0xa5dc('0x54')],_0x403396['query']);_0x320244['attributes']=_['intersection'](_0x403396[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x8fcfb3[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x320244[_0xa5dc('0x49')]=_0x320244[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x320244[_0xa5dc('0x49')]:_0x403396['model'];_0x320244['order']=qs[_0xa5dc('0xd4')](_0x8fcfb3[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x320244[_0xa5dc('0x43')]=qs['filters'](_[_0xa5dc('0xd5')](_0x8fcfb3[_0xa5dc('0x46')],_0x403396[_0xa5dc('0x57')]));if(_0x8fcfb3[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x320244['where']=_[_0xa5dc('0x5c')](_0x320244[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x320244[_0xa5dc('0x49')],function(_0x5ee5ee){var _0x809899={};_0x809899[_0x5ee5ee]={'$like':'%'+_0x8fcfb3[_0xa5dc('0x46')]['filter']+'%'};return _0x809899;})});}_0x320244=_[_0xa5dc('0x5c')]({},_0x320244,_0x8fcfb3[_0xa5dc('0xd6')]);return _0x54bf91[_0xa5dc('0xe8')](_0x320244);}})[_0xa5dc('0x16')](function(_0x112616){if(_0x112616){_0x720e93=_0x112616['length'];if(!_0x8fcfb3[_0xa5dc('0x46')]['hasOwnProperty'](_0xa5dc('0xd8'))){_0x320244[_0xa5dc('0x26')]=qs['limit'](_0x8fcfb3[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x320244[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x8fcfb3[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x54bf91[_0xa5dc('0xe8')](_0x320244);}})['then'](function(_0x254856){if(_0x254856){return _0x254856?{'count':_0x720e93,'rows':_0x254856}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x92c9b0,null))['catch'](handleError(_0x92c9b0,null));};exports['getWhatsappInteractions']=function(_0x260696,_0x461eeb){var _0x121bf0={};var _0x5527c4={};var _0x5c530d;var _0x435f81;return db['User'][_0xa5dc('0x99')]({'where':{'id':_0x260696[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x461eeb,null))[_0xa5dc('0x16')](function(_0x43bbbc){if(_0x43bbbc){_0x5c530d=_0x43bbbc;_0x5527c4[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db['WhatsappInteraction'][_0xa5dc('0x3d')]);_0x5527c4[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x260696[_0xa5dc('0x46')]);_0x5527c4[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x5527c4[_0xa5dc('0x54')],_0x5527c4['query']);_0x121bf0[_0xa5dc('0x49')]=_['intersection'](_0x5527c4['model'],qs['fields'](_0x260696[_0xa5dc('0x46')]['fields']));_0x121bf0[_0xa5dc('0x49')]=_0x121bf0['attributes'][_0xa5dc('0x5a')]?_0x121bf0[_0xa5dc('0x49')]:_0x5527c4[_0xa5dc('0x54')];_0x121bf0[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x260696[_0xa5dc('0x46')]['sort']);_0x121bf0[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x260696[_0xa5dc('0x46')],_0x5527c4[_0xa5dc('0x57')]));if(_0x260696[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x121bf0[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x121bf0[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x121bf0[_0xa5dc('0x49')],function(_0x1af3af){var _0x4c3a92={};_0x4c3a92[_0x1af3af]={'$like':'%'+_0x260696[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x4c3a92;})});}_0x121bf0=_['merge']({},_0x121bf0,_0x260696['options']);return _0x5c530d['getWhatsappInteractions'](_0x121bf0);}})[_0xa5dc('0x16')](function(_0x283b44){if(_0x283b44){_0x435f81=_0x283b44[_0xa5dc('0x5a')];if(!_0x260696[_0xa5dc('0x46')][_0xa5dc('0xcc')]('nolimit')){_0x121bf0[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x260696['query'][_0xa5dc('0x26')]);_0x121bf0[_0xa5dc('0x25')]=qs['offset'](_0x260696[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x5c530d[_0xa5dc('0xea')](_0x121bf0);}})[_0xa5dc('0x16')](function(_0x70e178){if(_0x70e178){return _0x70e178?{'count':_0x435f81,'rows':_0x70e178}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x461eeb,null))['catch'](handleError(_0x461eeb,null));};exports[_0xa5dc('0xeb')]=function(_0x4e6e86,_0x3c69bb,_0x123a0b){var _0x4d3bc4;var _0x4663f9;var _0x535d3e;var _0x304188=!_[_0xa5dc('0x6c')](_0x4e6e86[_0xa5dc('0x60')]['id'])?_0x4e6e86[_0xa5dc('0x60')]['id']:!_[_0xa5dc('0x6c')](_0x4e6e86[_0xa5dc('0x2f')]['id'])?_0x4e6e86['user']['id']:null;return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x304188,'role':{'$or':[_0xa5dc('0x2e'),_0xa5dc('0x2f'),_0xa5dc('0x2b')]}},'attributes':['id',_0xa5dc('0x37'),_0xa5dc('0xec'),'mobile',_0xa5dc('0x2a'),_0xa5dc('0x6a'),_0xa5dc('0xed')]})[_0xa5dc('0x16')](function(_0x3215e4){if(_0x3215e4){if(_0x3215e4[_0xa5dc('0x2a')]===_0xa5dc('0x2b')){_0x4d3bc4=_0x3215e4;if(_0x4e6e86[_0xa5dc('0x5f')][_0xa5dc('0xa1')]){_0x535d3e=util[_0xa5dc('0xae')](_0xa5dc('0xee'),_0x4d3bc4[_0x4e6e86[_0xa5dc('0x5f')][_0xa5dc('0xa1')]]);}else if(_0x4e6e86['body'][_0xa5dc('0xef')]){_0x535d3e=util[_0xa5dc('0xae')](_0xa5dc('0xaf'),_0x4e6e86[_0xa5dc('0x5f')][_0xa5dc('0xef')]);}else{_0x535d3e=util[_0xa5dc('0xae')]('SIP/%s',_0x4d3bc4[_0xa5dc('0x37')]);}socket['to'](util[_0xa5dc('0xae')]('user:%s',_0x4d3bc4[_0xa5dc('0x37')]))[_0xa5dc('0xa8')](_0xa5dc('0xf0'),{'user':{'id':_0x4d3bc4['id'],'name':_0x4d3bc4[_0xa5dc('0x37')]},'ip':_0x4e6e86['headers'][_0xa5dc('0xf1')]||_0x4e6e86[_0xa5dc('0xf2')][_0xa5dc('0xf3')]||_0x4e6e86[_0xa5dc('0xf4')][_0xa5dc('0xf3')]||_0x4e6e86[_0xa5dc('0xf2')]['socket'][_0xa5dc('0xf3')]});return db[_0xa5dc('0xb0')][_0xa5dc('0x2d')]({'where':{'membername':_0x4d3bc4[_0xa5dc('0x37')]},'individualHooks':!![]});}}else{throw new db['Sequelize']['ValidationError'](_0xa5dc('0xf5'));}})[_0xa5dc('0x16')](function(){if(_0x4d3bc4){return _0x4d3bc4['getVoiceQueues']({'raw':!![]});}})[_0xa5dc('0x16')](function(_0x3be466){if(_0x4d3bc4){if(_0x3be466){_0x4663f9=_0x3be466;if(_0x4663f9['length']){var _0x459c49=_0x4663f9['map'](function(_0x5e3c76){var _0x273821={'membername':_0x4d3bc4['name'],'UserId':_0x4d3bc4['id'],'queue_name':_0x5e3c76[_0xa5dc('0x37')],'VoiceQueueId':_0x5e3c76['id'],'interface':_0x535d3e,'paused':_0x4d3bc4[_0xa5dc('0xed')]||![],'penalty':_0x5e3c76[_0xa5dc('0xf6')]||0x0};return db[_0xa5dc('0xb0')][_0xa5dc('0xb1')](_0x273821);});return Promise[_0xa5dc('0x53')](_0x459c49);}}}})[_0xa5dc('0x16')](function(){if(_0x4d3bc4){return db[_0xa5dc('0xf7')]['findAll']({'where':{'membername':_0x4d3bc4[_0xa5dc('0x37')],'exitAt':null}});}})[_0xa5dc('0x16')](function(_0x552ca5){if(_0x4d3bc4){var _0x3de2dd=[];_0x552ca5[_0xa5dc('0xf8')](function(_0x16272d){_0x3de2dd[_0xa5dc('0x4c')](_0x16272d[_0xa5dc('0x29')]({'exitAt':moment()[_0xa5dc('0xae')](_0xa5dc('0xf9'))}));});return Promise[_0xa5dc('0x53')](_0x3de2dd);}})[_0xa5dc('0x16')](function(){if(_0x4d3bc4){var _0x11450c=[];var _0x384c20=[];var _0x4d7a4a=utils[_0xa5dc('0xfa')]();var _0x5eb707={'membername':_0x4d3bc4[_0xa5dc('0x37')],'interface':_0x535d3e,'enterAt':moment()[_0xa5dc('0xae')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x4d3bc4[_0xa5dc('0x2a')],'internal':_0x4d3bc4['internal']};_0x4d7a4a['forEach'](function(_0x1344ed){_0x11450c[_0xa5dc('0x4c')](_[_0xa5dc('0x5c')]({'channel':_0x1344ed,'type':_0xa5dc('0xfb'),'data1':_0x4e6e86[_0xa5dc('0x5f')][_0xa5dc('0xfc')],'data2':_0x535d3e},_0x5eb707));if(_0x4d3bc4[_0xa5dc('0xed')]){_0x384c20['push'](_[_0xa5dc('0x5c')]({'channel':_0x1344ed,'type':'PAUSE','data1':_0xa5dc('0xfd')},_0x5eb707));}});return db[_0xa5dc('0xf7')][_0xa5dc('0x8a')](_0x11450c[_0xa5dc('0xc9')](_0x384c20),{'individualHooks':!![]});}})[_0xa5dc('0x16')](function(){if(_0x4d3bc4){return _0x4d3bc4[_0xa5dc('0x29')]({'online':!![],'lastLoginAt':moment()['format'](_0xa5dc('0xf9')),'voicePause':_0x4d3bc4[_0xa5dc('0xed')]||![],'mailPause':_0x4d3bc4[_0xa5dc('0xed')]||![],'chatPause':_0x4d3bc4[_0xa5dc('0xed')]||![],'faxPause':_0x4d3bc4[_0xa5dc('0xed')]||![],'smsPause':_0x4d3bc4[_0xa5dc('0xed')]||![],'openchannelPause':_0x4d3bc4[_0xa5dc('0xed')]||![],'whatsappPause':_0x4d3bc4['loginInPause']||![],'pauseType':_0x4d3bc4['loginInPause']?_0xa5dc('0xfd'):null,'interface':_0x535d3e,'lastPauseAt':moment()[_0xa5dc('0xae')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xa5dc('0x16')](function(_0x376030){if(_0x4e6e86['isMiddleware']){return _0x123a0b();}else{return Promise[_0xa5dc('0xfe')](_0x376030)[_0xa5dc('0x16')](respondWithResult(_0x3c69bb,null));}})[_0xa5dc('0x20')](handleError(_0x3c69bb,null));};exports[_0xa5dc('0xff')]=function(_0x406e33,_0x53b4ae){var _0xd12d7e;return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x406e33[_0xa5dc('0x60')]['id'],'role':_0xa5dc('0x2b')},'attributes':['id',_0xa5dc('0x37'),_0xa5dc('0x2a')]})[_0xa5dc('0x16')](handleEntityNotFound(_0x53b4ae,null))[_0xa5dc('0x16')](function(_0x34806f){if(_0x34806f){_0xd12d7e=_0x34806f;return db[_0xa5dc('0xb0')]['destroy']({'where':{'membername':_0xd12d7e['name']},'individualHooks':!![]});}})[_0xa5dc('0x16')](function(){return db[_0xa5dc('0xf7')]['findAll']({'where':{'membername':_0xd12d7e[_0xa5dc('0x37')],'exitAt':null}});})['then'](function(_0xd23f7c){var _0x499c6e=[];_0xd23f7c[_0xa5dc('0xf8')](function(_0x5fb0e2){_0x499c6e[_0xa5dc('0x4c')](_0x5fb0e2['update']({'exitAt':moment()[_0xa5dc('0xae')](_0xa5dc('0xf9'))}));});return Promise[_0xa5dc('0x53')](_0x499c6e);})[_0xa5dc('0x16')](function(){return _0xd12d7e[_0xa5dc('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xa5dc('0x16')](respondWithResult(_0x53b4ae,null))['catch'](handleError(_0x53b4ae,null));};exports[_0xa5dc('0x100')]=function(_0x4f6515,_0x54c20f){var _0x5154a3;return db[_0xa5dc('0xb0')][_0xa5dc('0x29')]({'paused':0x1},{'where':{'UserId':_0x4f6515['params']['id']},'individualHooks':!![]})[_0xa5dc('0x16')](function(){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x4f6515[_0xa5dc('0x60')]['id'],'role':_0xa5dc('0x2b')},'attributes':['id',_0xa5dc('0x37'),'role',_0xa5dc('0x6a'),_0xa5dc('0xa1'),'online']});})['then'](handleEntityNotFound(_0x54c20f,null))[_0xa5dc('0x16')](function(_0x438fb4){if(_0x438fb4){_0x5154a3=_0x438fb4;return respondWithRpcPromise(_0xa5dc('0x101'),'pause',{'id':_0x5154a3['id'],'name':_0x5154a3['name'],'pause':!![]});}})[_0xa5dc('0x16')](function(){if(_0x5154a3){return db[_0xa5dc('0xf7')][_0xa5dc('0x4a')]({'where':{'membername':_0x5154a3[_0xa5dc('0x37')],'type':_0xa5dc('0x102'),'exitAt':null}});}})['then'](function(_0x25e280){if(_0x25e280['length']){var _0x22b9ca=moment()[_0xa5dc('0xae')](_0xa5dc('0xf9'));for(var _0x9ece97=0x0,_0x2b4245=_0x25e280[_0xa5dc('0x5a')];_0x9ece97<_0x2b4245;_0x9ece97++){_0x25e280[_0x9ece97]['updateAttributes']({'exitAt':_0x22b9ca});}}})[_0xa5dc('0x16')](function(){var _0x574d84=[];var _0x4a4c48=utils['getChannels']();_0x4a4c48[_0xa5dc('0xf8')](function(_0x328aca){_0x574d84[_0xa5dc('0x4c')]({'channel':_0x328aca,'membername':_0x5154a3['name'],'interface':_['isNil'](_0x5154a3[_0xa5dc('0xa1')])?util['format'](_0xa5dc('0xaf'),_0x5154a3['name']):_0x5154a3[_0xa5dc('0xa1')],'type':_0xa5dc('0x102'),'enterAt':moment()[_0xa5dc('0xae')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x4f6515[_0xa5dc('0x5f')][_0xa5dc('0x40')]||_0xa5dc('0x103'),'role':_0x5154a3[_0xa5dc('0x2a')],'internal':_0x5154a3['internal']});});return db[_0xa5dc('0xf7')][_0xa5dc('0x8a')](_0x574d84,{'individualHooks':!![]});})[_0xa5dc('0x16')](function(){return _0x5154a3[_0xa5dc('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x4f6515[_0xa5dc('0x5f')][_0xa5dc('0x40')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xa5dc('0xae')](_0xa5dc('0xf9'))});})[_0xa5dc('0x16')](respondWithResult(_0x54c20f,null))[_0xa5dc('0x20')](handleError(_0x54c20f,null));};exports[_0xa5dc('0x104')]=function(_0x43d45d,_0x68d46c){if(_0x43d45d[_0xa5dc('0x5f')][_0xa5dc('0xb6')]&&!utils[_0xa5dc('0xa2')](_0x43d45d[_0xa5dc('0x5f')][_0xa5dc('0xb6')])){throw new APIBadRequestError(util[_0xa5dc('0xae')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x43d45d['body'][_0xa5dc('0xb6')]));}return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x43d45d['params']['id']},'attributes':['id','name',_0xa5dc('0x2a'),_0xa5dc('0x6a'),_0xa5dc('0xa1'),_0xa5dc('0xad'),_0xa5dc('0xa0'),_0xa5dc('0x105'),_0xa5dc('0x106'),_0xa5dc('0x107'),_0xa5dc('0x108'),_0xa5dc('0x109'),_0xa5dc('0x10a'),'pauseType','lastPauseAt']})[_0xa5dc('0x16')](function(_0x3f27d5){if(!_0x3f27d5){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x43d45d['params']['id']));}return _0x3f27d5['unpause'](_0x43d45d[_0xa5dc('0x5f')][_0xa5dc('0xb6')]);})[_0xa5dc('0x16')](respondWithResult(_0x68d46c,null))['catch'](APIHandleError(_0x68d46c));};exports[_0xa5dc('0x10b')]=function(_0x818039,_0x57217b){var _0x2d662b={};var _0x4b3ad9={};var _0x2d925a;var _0x5aafd0;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x818039[_0xa5dc('0x60')]['id']}})['then'](handleEntityNotFound(_0x57217b,null))[_0xa5dc('0x16')](function(_0x36be33){if(_0x36be33){_0x2d925a=_0x36be33;_0x4b3ad9[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0x10c')][_0xa5dc('0x3d')]);_0x4b3ad9[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x818039[_0xa5dc('0x46')]);_0x4b3ad9[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x4b3ad9[_0xa5dc('0x54')],_0x4b3ad9[_0xa5dc('0x46')]);_0x2d662b[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x4b3ad9['model'],qs[_0xa5dc('0x59')](_0x818039['query'][_0xa5dc('0x59')]));_0x2d662b[_0xa5dc('0x49')]=_0x2d662b[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x2d662b['attributes']:_0x4b3ad9[_0xa5dc('0x54')];_0x2d662b[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x818039[_0xa5dc('0x46')]['sort']);_0x2d662b[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_['pick'](_0x818039[_0xa5dc('0x46')],_0x4b3ad9[_0xa5dc('0x57')]));if(_0x818039['query'][_0xa5dc('0x32')]){_0x2d662b[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x2d662b[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x2d662b[_0xa5dc('0x49')],function(_0x198666){var _0x2ed83a={};_0x2ed83a[_0x198666]={'$like':'%'+_0x818039[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x2ed83a;})});}_0x2d662b=_[_0xa5dc('0x5c')]({},_0x2d662b,_0x818039[_0xa5dc('0xd6')]);return _0x2d925a[_0xa5dc('0x10b')](_0x2d662b);}})[_0xa5dc('0x16')](function(_0x15622c){if(_0x15622c){_0x5aafd0=_0x15622c[_0xa5dc('0x5a')];if(!_0x818039['query'][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x2d662b[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x818039[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x2d662b['offset']=qs[_0xa5dc('0x25')](_0x818039[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x2d925a['getTeams'](_0x2d662b);}})[_0xa5dc('0x16')](function(_0x398138){if(_0x398138){return _0x398138?{'count':_0x5aafd0,'rows':_0x398138}:null;}})['then'](respondWithResult(_0x57217b,null))[_0xa5dc('0x20')](handleError(_0x57217b,null));};exports[_0xa5dc('0x10d')]=function(_0x5e3469,_0x5e56f9){var _0x19f191=_0x5e3469[_0xa5dc('0x60')]['id'];var _0x1223b2=_0x5e3469[_0xa5dc('0x5f')]?_0x5e3469[_0xa5dc('0x5f')][_0xa5dc('0x64')]:null;var _0x12f7ec=[];return Promise[_0xa5dc('0xfe')]()[_0xa5dc('0x16')](function(){if(!_0x1223b2)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})['then'](function(){return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x19f191}});})[_0xa5dc('0x16')](function(_0x264de2){if(!_0x264de2)throw new APINotFoundError(util[_0xa5dc('0xae')](_0xa5dc('0xcb'),_0x5e3469[_0xa5dc('0x60')]['id']));return db[_0xa5dc('0x6e')][_0xa5dc('0x10e')](function(_0x20baa0){return _0x264de2[_0xa5dc('0x10d')](_0x1223b2,{'transaction':_0x20baa0})[_0xa5dc('0x16')](function(){return db[_0xa5dc('0x10c')][_0xa5dc('0x4a')]({'where':{'id':{'$in':_0x1223b2}}});})[_0xa5dc('0x16')](function(_0x1ff68c){var _0x3dba54=_[_0xa5dc('0x3e')](_0x1ff68c,function(_0x302f0b){return _0x302f0b['getAssociatedQueues']();});return Promise['all'](_0x3dba54);})['then'](function(_0x2cd2ea){_0x12f7ec=_[_0xa5dc('0x10f')](_0x2cd2ea);var _0x19f315=_[_0xa5dc('0x3e')](_0x12f7ec,function(_0x2e576f){return _0x2e576f[_0xa5dc('0x110')](_0x264de2['id'],{'transaction':_0x20baa0});});return Promise[_0xa5dc('0x53')](_0x19f315);})['then'](function(){if(!_0x264de2[_0xa5dc('0xad')])return;var _0xc0289c=_[_0xa5dc('0x32')](_0x12f7ec,function(_0x1fd7e2){return _0x1fd7e2[_0xa5dc('0x111')]('channel')==='Voice';});var _0xb6e76f=_[_0xa5dc('0x3e')](_0xc0289c,function(_0x240e66){return db[_0xa5dc('0xb0')][_0xa5dc('0xb1')]({'membername':_0x264de2[_0xa5dc('0x37')],'UserId':_0x264de2['id'],'queue_name':_0x240e66[_0xa5dc('0x37')],'VoiceQueueId':_0x240e66['id'],'interface':_[_0xa5dc('0x6c')](_0x264de2['interface'])?util[_0xa5dc('0xae')](_0xa5dc('0xaf'),_0x264de2[_0xa5dc('0x37')]):_0x264de2['interface'],'paused':_0x264de2[_0xa5dc('0xa0')]||![],'penalty':_0x264de2[_0xa5dc('0xa5')]},{'transaction':_0x20baa0});});return Promise['all'](_0xb6e76f);})[_0xa5dc('0x16')](function(){return db[_0xa5dc('0x112')][_0xa5dc('0x4a')]({'where':{'teamId':{'$in':_0x1223b2}}});})[_0xa5dc('0x16')](function(_0x593008){var _0x49e3d3=_[_0xa5dc('0x3e')](_0x593008,function(_0x3dc3a1){return db['UserVoicePrefix'][_0xa5dc('0x82')]({'UserId':_0x264de2['id'],'VoicePrefixId':_0x3dc3a1[_0xa5dc('0x113')]},{'transaction':_0x20baa0});});return Promise[_0xa5dc('0x53')](_0x49e3d3);});});})[_0xa5dc('0x16')](function(){for(var _0x299d2e=0x0;_0x299d2e<_0x12f7ec['length'];_0x299d2e++){var _0x3f63ff=_0x12f7ec[_0x299d2e][_0xa5dc('0x111')]('channel');var _0x161e89=_0x3f63ff+'QueueId';socket[_0xa5dc('0xa8')](_0xa5dc('0x2f')+_0x3f63ff+_0xa5dc('0xaa'),{'UserId':_0x19f191,['queueField']:_0x12f7ec[_0x299d2e]['id']});}})[_0xa5dc('0x16')](respondWithStatusCode(_0x5e56f9,null))['catch'](APIHandleError(_0x5e56f9));};exports[_0xa5dc('0x114')]=function(_0x18ca51,_0x18b2f8){var _0x417665=_0x18ca51['params']['id'];var _0x3d1c49=null;if(_0x18ca51[_0xa5dc('0x46')][_0xa5dc('0x64')]){_0x3d1c49=_[_0xa5dc('0xb5')](_0x18ca51['query'][_0xa5dc('0x64')])?_0x18ca51[_0xa5dc('0x46')][_0xa5dc('0x64')]:[_0x18ca51[_0xa5dc('0x46')][_0xa5dc('0x64')]];}var _0x31d058=[];return Promise[_0xa5dc('0xfe')]()['then'](function(){if(!_0x3d1c49)throw new APIBadRequestError(_0xa5dc('0x115'));})[_0xa5dc('0x16')](function(){return db[_0xa5dc('0x3c')]['findOne']({'where':{'id':_0x417665}});})[_0xa5dc('0x16')](function(_0x39ae11){if(!_0x39ae11)throw new APINotFoundError(util['format'](_0xa5dc('0xcb'),_0x18ca51[_0xa5dc('0x60')]['id']));return db[_0xa5dc('0x6e')]['transaction'](function(_0x56c07b){return _0x39ae11[_0xa5dc('0x114')](_0x3d1c49,{'transaction':_0x56c07b})['then'](function(){return db['Team'][_0xa5dc('0x4a')]({'where':{'id':{'$in':_0x3d1c49}}});})[_0xa5dc('0x16')](function(_0x2db5d7){var _0x1c77f9=_[_0xa5dc('0x3e')](_0x2db5d7,function(_0x5482de){return _0x5482de['getAssociatedQueues']();});return Promise[_0xa5dc('0x53')](_0x1c77f9);})[_0xa5dc('0x16')](function(_0x35cbe8){_0x31d058=_['flattenDeep'](_0x35cbe8);var _0x5d2de6=_['map'](_0x31d058,function(_0x3d4140){return _0x3d4140[_0xa5dc('0x116')](_0x39ae11['id'],{'transaction':_0x56c07b});});return Promise[_0xa5dc('0x53')](_0x5d2de6);})[_0xa5dc('0x16')](function(){if(!_0x39ae11[_0xa5dc('0xad')])return;var _0x51db94=_[_0xa5dc('0x32')](_0x31d058,function(_0x47d8b1){return _0x47d8b1[_0xa5dc('0x111')](_0xa5dc('0xb6'))===_0xa5dc('0x117');});var _0x2d861e=_[_0xa5dc('0x3e')](_0x51db94,function(_0x7cdf30){return db['UserVoiceQueueRt'][_0xa5dc('0x2d')]({'where':{'VoiceQueueId':_0x7cdf30['id'],'UserId':_0x39ae11['id']},'transaction':_0x56c07b});});return Promise[_0xa5dc('0x53')](_0x2d861e);})[_0xa5dc('0x16')](function(){return db[_0xa5dc('0x112')][_0xa5dc('0x4a')]({'where':{'teamId':{'$in':_0x3d1c49}}});})[_0xa5dc('0x16')](function(_0x9682c1){var _0x33d688=_[_0xa5dc('0x3e')](_0x9682c1,function(_0x4e7e47){return db[_0xa5dc('0x118')][_0xa5dc('0x2d')]({'where':{'UserId':_0x39ae11['id'],'VoicePrefixId':_0x4e7e47[_0xa5dc('0x113')]}},{'transaction':_0x56c07b});});return Promise['all'](_0x33d688);});});})[_0xa5dc('0x16')](function(){for(var _0x595616=0x0;_0x595616<_0x31d058['length'];_0x595616++){var _0xa61afd=_0x31d058[_0x595616][_0xa5dc('0x111')]('channel');var _0x1205de=_0xa61afd+_0xa5dc('0xa7');socket[_0xa5dc('0xa8')](_0xa5dc('0x2f')+_0xa61afd+_0xa5dc('0xb7'),{'UserId':_0x417665,['queueField']:_0x31d058[_0x595616]['id']});}})[_0xa5dc('0x16')](respondWithStatusCode(_0x18b2f8,null))[_0xa5dc('0x20')](APIHandleError(_0x18b2f8));};exports[_0xa5dc('0x119')]=function(_0x76409d,_0x1765cb){var _0x337027={};var _0x2a7a2c={};var _0x13f52d;var _0x3a930d;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x76409d[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x1765cb,null))['then'](function(_0x19008b){if(_0x19008b){_0x13f52d=_0x19008b;_0x2a7a2c[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0x11a')][_0xa5dc('0x3d')]);_0x2a7a2c[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x76409d[_0xa5dc('0x46')]);_0x2a7a2c['filters']=_[_0xa5dc('0x58')](_0x2a7a2c[_0xa5dc('0x54')],_0x2a7a2c['query']);_0x337027['attributes']=_[_0xa5dc('0x58')](_0x2a7a2c[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x76409d[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x337027[_0xa5dc('0x49')]=_0x337027[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x337027[_0xa5dc('0x49')]:_0x2a7a2c['model'];_0x337027[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x76409d[_0xa5dc('0x46')]['sort']);_0x337027[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x76409d[_0xa5dc('0x46')],_0x2a7a2c[_0xa5dc('0x57')]));if(_0x76409d[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x337027[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x337027[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x337027[_0xa5dc('0x49')],function(_0x493bee){var _0x56aa1d={};_0x56aa1d[_0x493bee]={'$like':'%'+_0x76409d['query'][_0xa5dc('0x32')]+'%'};return _0x56aa1d;})});}_0x337027=_[_0xa5dc('0x5c')]({},_0x337027,_0x76409d[_0xa5dc('0xd6')]);return _0x13f52d['getLists'](_0x337027);}})[_0xa5dc('0x16')](function(_0x295f10){if(_0x295f10){_0x3a930d=_0x295f10[_0xa5dc('0x5a')];if(!_0x76409d['query'][_0xa5dc('0xcc')]('nolimit')){_0x337027[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x76409d['query'][_0xa5dc('0x26')]);_0x337027[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x76409d[_0xa5dc('0x46')]['offset']);}return _0x13f52d['getLists'](_0x337027);}})['then'](function(_0x19d95c){if(_0x19d95c){return _0x19d95c?{'count':_0x3a930d,'rows':_0x19d95c}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x1765cb,null))[_0xa5dc('0x20')](handleError(_0x1765cb,null));};exports[_0xa5dc('0x11b')]=function(_0x3d4fb2,_0xb161d5){var _0x300257={};var _0x55f95e={};var _0x199f24;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x3d4fb2[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0xb161d5,null))[_0xa5dc('0x16')](function(_0x1ff6c8){if(_0x1ff6c8){_0x199f24=_0x1ff6c8;_0x55f95e[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0x3c')][_0xa5dc('0x3d')]);_0x55f95e['query']=_['keys'](_0x3d4fb2[_0xa5dc('0x46')]);_0x55f95e['filters']=_[_0xa5dc('0x58')](_0x55f95e[_0xa5dc('0x54')],_0x55f95e[_0xa5dc('0x46')]);_0x300257[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x55f95e[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x3d4fb2[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x300257['attributes']=_0x300257[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x300257[_0xa5dc('0x49')]:_0x55f95e[_0xa5dc('0x54')];_0x300257[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x3d4fb2[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x300257[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_['pick'](_0x3d4fb2[_0xa5dc('0x46')],_0x55f95e[_0xa5dc('0x57')]));if(_0x3d4fb2[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x300257['where']=_[_0xa5dc('0x5c')](_0x300257[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x300257[_0xa5dc('0x49')],function(_0x2e1c28){var _0x25eb5a={};_0x25eb5a[_0x2e1c28]={'$like':'%'+_0x3d4fb2[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x25eb5a;})});}_0x300257[_0xa5dc('0x54')]=db[_0xa5dc('0x3c')];_0x300257['as']='Agents';_0x300257=_[_0xa5dc('0x5c')]({},_0x300257,_0x3d4fb2[_0xa5dc('0xd6')]);return _0x199f24[_0xa5dc('0x11c')]({'include':[_0x300257]});}})[_0xa5dc('0x16')](function(_0x234e98){if(_0x234e98){var _0xe20fd2={},_0x105697=[];for(var _0xa7d47=0x0;_0xa7d47<_0x234e98['length'];_0xa7d47+=0x1){for(var _0x32d9dd=0x0,_0x3b0c4e;_0x32d9dd<_0x234e98[_0xa7d47][_0xa5dc('0x30')][_0xa5dc('0x5a')];_0x32d9dd+=0x1){_0x3b0c4e=_0x234e98[_0xa7d47][_0xa5dc('0x30')][_0x32d9dd][_0xa5dc('0xd7')]({'plain':!![]});_0xe20fd2[_0x3b0c4e['id']]=_0x3b0c4e;}}_0xe20fd2=_[_0xa5dc('0x11d')](_0xe20fd2);for(var _0xea5055=qs[_0xa5dc('0x25')](_0x3d4fb2[_0xa5dc('0x46')][_0xa5dc('0x25')]);_0xea5055<_0xe20fd2['length']&&_0x105697['length']<qs[_0xa5dc('0x26')](_0x3d4fb2[_0xa5dc('0x46')]['limit']);_0xea5055+=0x1){if(_0xe20fd2[_0xea5055]){_0x105697[_0xa5dc('0x4c')](_0xe20fd2[_0xea5055]);}}return{'count':_0xe20fd2['length'],'rows':_0x105697};}})[_0xa5dc('0x16')](respondWithResult(_0xb161d5,null))[_0xa5dc('0x20')](handleError(_0xb161d5,null));};exports['destroy']=function(_0x5cefac,_0x31fe92){if(_0x5cefac['user']['id']==_0x5cefac['params']['id']){return _0x31fe92[_0xa5dc('0x21')](0x1f4)[_0xa5dc('0x3a')]({'message':_0xa5dc('0x11e')});}return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x5cefac[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x31fe92,null))[_0xa5dc('0x16')](removeEntity(_0x31fe92,null))['catch'](handleError(_0x31fe92,null));};exports[_0xa5dc('0x11f')]=function(_0x4d8dcd,_0x4ba04a){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x4d8dcd['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x4ba04a,null))[_0xa5dc('0x16')](function(_0x3c42a9){if(_0x3c42a9){return _0x3c42a9[_0xa5dc('0x11f')](_0x4d8dcd[_0xa5dc('0x5f')][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x4d8dcd[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{})['spread'](function(){for(var _0x4556fd=0x0;_0x4556fd<_0x4d8dcd[_0xa5dc('0x5f')]['ids'][_0xa5dc('0x5a')];_0x4556fd+=0x1){socket[_0xa5dc('0xa8')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x4d8dcd[_0xa5dc('0x5f')][_0xa5dc('0x64')][_0x4556fd]),'UserId':Number(_0x4d8dcd['params']['id'])});}return _0x4d8dcd[_0xa5dc('0x5f')]['ids'];});}})[_0xa5dc('0x16')](respondWithResult(_0x4ba04a,null))[_0xa5dc('0x20')](handleError(_0x4ba04a,null));};exports['removeChatInteractions']=function(_0x1d7dfa,_0x2cc53d){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x1d7dfa[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x2cc53d,null))[_0xa5dc('0x16')](function(_0xc2a6e){if(_0xc2a6e){return _0xc2a6e[_0xa5dc('0x120')](_0x1d7dfa['query']['ids'])[_0xa5dc('0x16')](function(){if(_[_0xa5dc('0xb5')](_0x1d7dfa['query'][_0xa5dc('0x64')])){for(var _0x2c782=0x0;_0x2c782<_0x1d7dfa[_0xa5dc('0x46')][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x2c782+=0x1){socket[_0xa5dc('0xa8')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1d7dfa[_0xa5dc('0x46')]['ids'][_0x2c782]),'UserId':Number(_0x1d7dfa[_0xa5dc('0x60')]['id'])});}}else{socket[_0xa5dc('0xa8')](_0xa5dc('0x121'),{'ChatInteractionId':Number(_0x1d7dfa[_0xa5dc('0x46')]['ids']),'UserId':Number(_0x1d7dfa[_0xa5dc('0x60')]['id'])});}});}})['then'](respondWithStatusCode(_0x2cc53d,null))['catch'](handleError(_0x2cc53d,null));};exports[_0xa5dc('0x122')]=function(_0x2cb04a,_0x524f43){return db[_0xa5dc('0x3c')]['find']({'where':{'id':_0x2cb04a[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x524f43,null))[_0xa5dc('0x16')](function(_0x2d66b9){if(_0x2d66b9){return _0x2d66b9['addMailInteractions'](_0x2cb04a[_0xa5dc('0x5f')][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x2cb04a[_0xa5dc('0x5f')],['ids','id'])||{})[_0xa5dc('0x123')](function(){for(var _0x3b45dc=0x0;_0x3b45dc<_0x2cb04a[_0xa5dc('0x5f')][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x3b45dc+=0x1){socket[_0xa5dc('0xa8')](_0xa5dc('0x124'),{'MailInteractionId':Number(_0x2cb04a[_0xa5dc('0x5f')]['ids'][_0x3b45dc]),'UserId':Number(_0x2cb04a[_0xa5dc('0x60')]['id'])});}return _0x2cb04a[_0xa5dc('0x5f')][_0xa5dc('0x64')];});}})[_0xa5dc('0x16')](respondWithResult(_0x524f43,null))[_0xa5dc('0x20')](handleError(_0x524f43,null));};exports[_0xa5dc('0x125')]=function(_0x239075,_0x3b13b4){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x239075[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x3b13b4,null))[_0xa5dc('0x16')](function(_0x42cff2){if(_0x42cff2){return _0x42cff2[_0xa5dc('0x125')](_0x239075['query'][_0xa5dc('0x64')])['then'](function(){if(_[_0xa5dc('0xb5')](_0x239075[_0xa5dc('0x46')][_0xa5dc('0x64')])){for(var _0x3c6d8d=0x0;_0x3c6d8d<_0x239075[_0xa5dc('0x46')][_0xa5dc('0x64')]['length'];_0x3c6d8d+=0x1){socket[_0xa5dc('0xa8')](_0xa5dc('0x126'),{'MailInteractionId':Number(_0x239075[_0xa5dc('0x46')][_0xa5dc('0x64')][_0x3c6d8d]),'UserId':Number(_0x239075[_0xa5dc('0x60')]['id'])});}}else{socket[_0xa5dc('0xa8')](_0xa5dc('0x126'),{'MailInteractionId':Number(_0x239075[_0xa5dc('0x46')][_0xa5dc('0x64')]),'UserId':Number(_0x239075[_0xa5dc('0x60')]['id'])});}});}})[_0xa5dc('0x16')](respondWithStatusCode(_0x3b13b4,null))[_0xa5dc('0x20')](handleError(_0x3b13b4,null));};exports[_0xa5dc('0x127')]=function(_0x5a8a2f,_0x45bf1c){return db['User'][_0xa5dc('0x36')]({'where':{'id':_0x5a8a2f[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x45bf1c,null))['then'](function(_0x391a7b){if(_0x391a7b){return _0x391a7b[_0xa5dc('0x127')](_0x5a8a2f['body'][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x5a8a2f[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{})['spread'](function(){for(var _0x4c4b74=0x0;_0x4c4b74<_0x5a8a2f['body'][_0xa5dc('0x64')]['length'];_0x4c4b74+=0x1){socket[_0xa5dc('0xa8')](_0xa5dc('0x128'),{'FaxInteractionId':Number(_0x5a8a2f[_0xa5dc('0x5f')]['ids'][_0x4c4b74]),'UserId':Number(_0x5a8a2f['params']['id'])});}return _0x5a8a2f[_0xa5dc('0x5f')][_0xa5dc('0x64')];});}})[_0xa5dc('0x16')](respondWithResult(_0x45bf1c,null))[_0xa5dc('0x20')](handleError(_0x45bf1c,null));};exports['removeFaxInteractions']=function(_0x399669,_0x2743ab){return db[_0xa5dc('0x3c')]['find']({'where':{'id':_0x399669['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x2743ab,null))[_0xa5dc('0x16')](function(_0x44f1b7){if(_0x44f1b7){return _0x44f1b7[_0xa5dc('0x129')](_0x399669[_0xa5dc('0x46')][_0xa5dc('0x64')])[_0xa5dc('0x16')](function(){if(_[_0xa5dc('0xb5')](_0x399669['query'][_0xa5dc('0x64')])){for(var _0x16734c=0x0;_0x16734c<_0x399669['query'][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x16734c+=0x1){socket[_0xa5dc('0xa8')](_0xa5dc('0x12a'),{'FaxInteractionId':Number(_0x399669[_0xa5dc('0x46')][_0xa5dc('0x64')][_0x16734c]),'UserId':Number(_0x399669['params']['id'])});}}else{socket[_0xa5dc('0xa8')](_0xa5dc('0x12a'),{'FaxInteractionId':Number(_0x399669['query'][_0xa5dc('0x64')]),'UserId':Number(_0x399669[_0xa5dc('0x60')]['id'])});}});}})[_0xa5dc('0x16')](respondWithStatusCode(_0x2743ab,null))['catch'](handleError(_0x2743ab,null));};exports[_0xa5dc('0x12b')]=function(_0x2d3074,_0x15fd47){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x2d3074[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x15fd47,null))[_0xa5dc('0x16')](function(_0x37d1a9){if(_0x37d1a9){return _0x37d1a9['addSmsInteractions'](_0x2d3074[_0xa5dc('0x5f')][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x2d3074[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{})[_0xa5dc('0x123')](function(){for(var _0x1ae58b=0x0;_0x1ae58b<_0x2d3074['body'][_0xa5dc('0x64')]['length'];_0x1ae58b+=0x1){socket[_0xa5dc('0xa8')](_0xa5dc('0x12c'),{'SmsInteractionId':Number(_0x2d3074['body'][_0xa5dc('0x64')][_0x1ae58b]),'UserId':Number(_0x2d3074['params']['id'])});}return _0x2d3074[_0xa5dc('0x5f')][_0xa5dc('0x64')];});}})[_0xa5dc('0x16')](respondWithResult(_0x15fd47,null))['catch'](handleError(_0x15fd47,null));};exports[_0xa5dc('0x12d')]=function(_0x4f364b,_0x2549cf){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x4f364b[_0xa5dc('0x60')]['id']}})['then'](handleEntityNotFound(_0x2549cf,null))[_0xa5dc('0x16')](function(_0x136cd4){if(_0x136cd4){return _0x136cd4[_0xa5dc('0x12d')](_0x4f364b[_0xa5dc('0x46')]['ids'])[_0xa5dc('0x16')](function(){if(_[_0xa5dc('0xb5')](_0x4f364b[_0xa5dc('0x46')]['ids'])){for(var _0x36f64b=0x0;_0x36f64b<_0x4f364b[_0xa5dc('0x46')][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x36f64b+=0x1){socket['emit'](_0xa5dc('0x12e'),{'SmsInteractionId':Number(_0x4f364b['query'][_0xa5dc('0x64')][_0x36f64b]),'UserId':Number(_0x4f364b['params']['id'])});}}else{socket[_0xa5dc('0xa8')](_0xa5dc('0x12e'),{'SmsInteractionId':Number(_0x4f364b[_0xa5dc('0x46')]['ids']),'UserId':Number(_0x4f364b[_0xa5dc('0x60')]['id'])});}});}})[_0xa5dc('0x16')](respondWithStatusCode(_0x2549cf,null))[_0xa5dc('0x20')](handleError(_0x2549cf,null));};exports[_0xa5dc('0x12f')]=function(_0x5d22db,_0x5545af){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x5d22db[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x5545af,null))[_0xa5dc('0x16')](function(_0x3bdd21){if(_0x3bdd21){return _0x3bdd21[_0xa5dc('0x12f')](_0x5d22db[_0xa5dc('0x5f')][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x5d22db[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{})[_0xa5dc('0x123')](function(){for(var _0x3f448c=0x0;_0x3f448c<_0x5d22db[_0xa5dc('0x5f')][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x3f448c+=0x1){socket[_0xa5dc('0xa8')](_0xa5dc('0x130'),{'OpenchannelInteractionId':Number(_0x5d22db[_0xa5dc('0x5f')][_0xa5dc('0x64')][_0x3f448c]),'UserId':Number(_0x5d22db['params']['id'])});}return _0x5d22db[_0xa5dc('0x5f')][_0xa5dc('0x64')];});}})[_0xa5dc('0x16')](respondWithResult(_0x5545af,null))[_0xa5dc('0x20')](handleError(_0x5545af,null));};exports['removeOpenchannelInteractions']=function(_0xd9f314,_0xbeefc6){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0xd9f314['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0xbeefc6,null))['then'](function(_0x10f139){if(_0x10f139){return _0x10f139['removeOpenchannelInteractions'](_0xd9f314[_0xa5dc('0x46')][_0xa5dc('0x64')])['then'](function(){if(_[_0xa5dc('0xb5')](_0xd9f314[_0xa5dc('0x46')]['ids'])){for(var _0x7dc46d=0x0;_0x7dc46d<_0xd9f314['query'][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x7dc46d+=0x1){socket['emit'](_0xa5dc('0x131'),{'OpenchannelInteractionId':Number(_0xd9f314[_0xa5dc('0x46')][_0xa5dc('0x64')][_0x7dc46d]),'UserId':Number(_0xd9f314['params']['id'])});}}else{socket[_0xa5dc('0xa8')](_0xa5dc('0x131'),{'OpenchannelInteractionId':Number(_0xd9f314['query'][_0xa5dc('0x64')]),'UserId':Number(_0xd9f314[_0xa5dc('0x60')]['id'])});}});}})[_0xa5dc('0x16')](respondWithStatusCode(_0xbeefc6,null))['catch'](handleError(_0xbeefc6,null));};exports[_0xa5dc('0x132')]=function(_0x2a267b,_0x2e4893){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x2a267b['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x2e4893,null))[_0xa5dc('0x16')](function(_0x5274d8){if(_0x5274d8){return _0x5274d8[_0xa5dc('0x132')](_0x2a267b[_0xa5dc('0x5f')]['ids'],_['omit'](_0x2a267b[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{})[_0xa5dc('0x123')](function(){for(var _0x5983b7=0x0;_0x5983b7<_0x2a267b[_0xa5dc('0x5f')][_0xa5dc('0x64')][_0xa5dc('0x5a')];_0x5983b7+=0x1){socket['emit'](_0xa5dc('0x133'),{'WhatsappInteractionId':Number(_0x2a267b['body'][_0xa5dc('0x64')][_0x5983b7]),'UserId':Number(_0x2a267b[_0xa5dc('0x60')]['id'])});}return _0x2a267b['body'][_0xa5dc('0x64')];});}})[_0xa5dc('0x16')](respondWithResult(_0x2e4893,null))[_0xa5dc('0x20')](handleError(_0x2e4893,null));};exports['removeWhatsappInteractions']=function(_0x1cf635,_0x3eeff0){return db['User'][_0xa5dc('0x36')]({'where':{'id':_0x1cf635[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x3eeff0,null))[_0xa5dc('0x16')](function(_0x3a4a79){if(_0x3a4a79){return _0x3a4a79['removeWhatsappInteractions'](_0x1cf635[_0xa5dc('0x46')]['ids']);}})[_0xa5dc('0x16')](respondWithStatusCode(_0x3eeff0,null))['catch'](handleError(_0x3eeff0,null));};exports[_0xa5dc('0x134')]=function(_0x1ba38a,_0x2db8ba){var _0x4376e9={};var _0x351496={};var _0x374575;var _0x7f6928;return db['User']['findOne']({'where':{'id':_0x1ba38a[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x2db8ba,null))[_0xa5dc('0x16')](function(_0x164fbd){if(_0x164fbd){_0x374575=_0x164fbd;_0x351496[_0xa5dc('0x54')]=_['keys'](db['VoicePrefix'][_0xa5dc('0x3d')]);_0x351496[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x1ba38a[_0xa5dc('0x46')]);_0x351496[_0xa5dc('0x57')]=_['intersection'](_0x351496[_0xa5dc('0x54')],_0x351496[_0xa5dc('0x46')]);_0x4376e9[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x351496['model'],qs[_0xa5dc('0x59')](_0x1ba38a[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x4376e9['attributes']=_0x4376e9[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x4376e9[_0xa5dc('0x49')]:_0x351496['model'];_0x4376e9['order']=qs['sort'](_0x1ba38a[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x4376e9[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_['pick'](_0x1ba38a[_0xa5dc('0x46')],_0x351496[_0xa5dc('0x57')]));if(_0x1ba38a['query']['filter']){_0x4376e9['where']=_[_0xa5dc('0x5c')](_0x4376e9['where'],{'$or':_['map'](_0x4376e9[_0xa5dc('0x49')],function(_0x434819){var _0x52511f={};_0x52511f[_0x434819]={'$like':'%'+_0x1ba38a[_0xa5dc('0x46')]['filter']+'%'};return _0x52511f;})});}_0x4376e9=_['merge']({},_0x4376e9,_0x1ba38a[_0xa5dc('0xd6')]);return _0x374575[_0xa5dc('0x134')](_0x4376e9);}})[_0xa5dc('0x16')](function(_0x43b9df){if(_0x43b9df){_0x7f6928=_0x43b9df[_0xa5dc('0x5a')];if(!_0x1ba38a['query'][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x4376e9[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x1ba38a['query'][_0xa5dc('0x26')]);_0x4376e9['offset']=qs['offset'](_0x1ba38a[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x374575[_0xa5dc('0x134')](_0x4376e9);}})[_0xa5dc('0x16')](function(_0x32bd1a){if(_0x32bd1a){return _0x32bd1a?{'count':_0x7f6928,'rows':_0x32bd1a}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x2db8ba,null))[_0xa5dc('0x20')](handleError(_0x2db8ba,null));};exports[_0xa5dc('0x135')]=function(_0x1d97ba,_0x4a4cb8){var _0x1d3ebf={};var _0x16b406={};var _0x3c7c30;var _0x1ad1ed;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x1d97ba['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x4a4cb8,null))[_0xa5dc('0x16')](function(_0x19ebb2){if(_0x19ebb2){_0x3c7c30=_0x19ebb2;_0x16b406[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0x136')][_0xa5dc('0x3d')]);_0x16b406[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x1d97ba[_0xa5dc('0x46')]);_0x16b406[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x16b406[_0xa5dc('0x54')],_0x16b406[_0xa5dc('0x46')]);_0x1d3ebf[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x16b406[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x1d97ba[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x1d3ebf[_0xa5dc('0x49')]=_0x1d3ebf['attributes'][_0xa5dc('0x5a')]?_0x1d3ebf[_0xa5dc('0x49')]:_0x16b406[_0xa5dc('0x54')];_0x1d3ebf['order']=qs[_0xa5dc('0xd4')](_0x1d97ba[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x1d3ebf[_0xa5dc('0x43')]=qs['filters'](_[_0xa5dc('0xd5')](_0x1d97ba[_0xa5dc('0x46')],_0x16b406[_0xa5dc('0x57')]));if(_0x1d97ba[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x1d3ebf['where']=_['merge'](_0x1d3ebf[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x1d3ebf['attributes'],function(_0x4286b2){var _0x2cf314={};_0x2cf314[_0x4286b2]={'$like':'%'+_0x1d97ba[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x2cf314;})});}_0x1d3ebf=_[_0xa5dc('0x5c')]({},_0x1d3ebf,_0x1d97ba[_0xa5dc('0xd6')]);return _0x3c7c30['getFaxAccounts'](_0x1d3ebf);}})[_0xa5dc('0x16')](function(_0xef16dd){if(_0xef16dd){_0x1ad1ed=_0xef16dd['length'];if(!_0x1d97ba[_0xa5dc('0x46')]['hasOwnProperty'](_0xa5dc('0xd8'))){_0x1d3ebf['limit']=qs[_0xa5dc('0x26')](_0x1d97ba[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x1d3ebf[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x1d97ba[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x3c7c30[_0xa5dc('0x135')](_0x1d3ebf);}})[_0xa5dc('0x16')](function(_0x4dd64c){if(_0x4dd64c){return _0x4dd64c?{'count':_0x1ad1ed,'rows':_0x4dd64c}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x4a4cb8,null))[_0xa5dc('0x20')](handleError(_0x4a4cb8,null));};exports[_0xa5dc('0x137')]=function(_0x4d9de1,_0x1256ee){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x4d9de1[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x1256ee,null))[_0xa5dc('0x16')](function(_0x47c1a2){if(_0x47c1a2){return _0x47c1a2['addFaxAccounts'](_0x4d9de1[_0xa5dc('0x5f')][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x4d9de1['body'],[_0xa5dc('0x64'),'id'])||{});}})[_0xa5dc('0x16')](respondWithResult(_0x1256ee,null))['catch'](handleError(_0x1256ee,null));};exports[_0xa5dc('0x138')]=function(_0x1273a1,_0x2b73a4){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x1273a1['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x2b73a4,null))[_0xa5dc('0x16')](function(_0xacf048){if(_0xacf048){return _0xacf048['removeFaxAccounts'](_0x1273a1[_0xa5dc('0x46')][_0xa5dc('0x64')]);}})[_0xa5dc('0x16')](respondWithStatusCode(_0x2b73a4,null))[_0xa5dc('0x20')](handleError(_0x2b73a4,null));};exports[_0xa5dc('0x139')]=function(_0x6f8623,_0x3ebd7e){var _0x5f19b8={};var _0x49cb10={};var _0x5dece8;var _0x5b3fe4;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x6f8623[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x3ebd7e,null))[_0xa5dc('0x16')](function(_0x455de1){if(_0x455de1){_0x5dece8=_0x455de1;_0x49cb10[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0x13a')][_0xa5dc('0x3d')]);_0x49cb10[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x6f8623['query']);_0x49cb10['filters']=_['intersection'](_0x49cb10[_0xa5dc('0x54')],_0x49cb10[_0xa5dc('0x46')]);_0x5f19b8['attributes']=_[_0xa5dc('0x58')](_0x49cb10[_0xa5dc('0x54')],qs['fields'](_0x6f8623['query']['fields']));_0x5f19b8[_0xa5dc('0x49')]=_0x5f19b8[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x5f19b8['attributes']:_0x49cb10[_0xa5dc('0x54')];_0x5f19b8['order']=qs[_0xa5dc('0xd4')](_0x6f8623[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x5f19b8[_0xa5dc('0x43')]=qs['filters'](_[_0xa5dc('0xd5')](_0x6f8623[_0xa5dc('0x46')],_0x49cb10[_0xa5dc('0x57')]));if(_0x6f8623['query'][_0xa5dc('0x32')]){_0x5f19b8[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x5f19b8['where'],{'$or':_['map'](_0x5f19b8[_0xa5dc('0x49')],function(_0x537093){var _0x3b40cf={};_0x3b40cf[_0x537093]={'$like':'%'+_0x6f8623[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x3b40cf;})});}_0x5f19b8=_[_0xa5dc('0x5c')]({},_0x5f19b8,_0x6f8623['options']);return _0x5dece8[_0xa5dc('0x139')](_0x5f19b8);}})[_0xa5dc('0x16')](function(_0x4cfe74){if(_0x4cfe74){_0x5b3fe4=_0x4cfe74[_0xa5dc('0x5a')];if(!_0x6f8623[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x5f19b8[_0xa5dc('0x26')]=qs['limit'](_0x6f8623[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x5f19b8[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x6f8623[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x5dece8[_0xa5dc('0x139')](_0x5f19b8);}})['then'](function(_0x4f2ac4){if(_0x4f2ac4){return _0x4f2ac4?{'count':_0x5b3fe4,'rows':_0x4f2ac4}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x3ebd7e,null))[_0xa5dc('0x20')](handleError(_0x3ebd7e,null));};exports[_0xa5dc('0x13b')]=function(_0x3d880e,_0x1f0981){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x3d880e[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x1f0981,null))['then'](function(_0x3ed1f6){if(_0x3ed1f6){return _0x3ed1f6['addMailAccounts'](_0x3d880e['body']['ids'],_[_0xa5dc('0x63')](_0x3d880e[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{});}})[_0xa5dc('0x16')](respondWithResult(_0x1f0981,null))[_0xa5dc('0x20')](handleError(_0x1f0981,null));};exports[_0xa5dc('0x13c')]=function(_0x182932,_0xb171dc){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x182932['params']['id']}})['then'](handleEntityNotFound(_0xb171dc,null))[_0xa5dc('0x16')](function(_0x4ebb4f){if(_0x4ebb4f){return _0x4ebb4f[_0xa5dc('0x13c')](_0x182932[_0xa5dc('0x46')][_0xa5dc('0x64')]);}})[_0xa5dc('0x16')](respondWithStatusCode(_0xb171dc,null))[_0xa5dc('0x20')](handleError(_0xb171dc,null));};exports[_0xa5dc('0x13d')]=function(_0x535cf2,_0x14b4e3){var _0x4e6c6c={};var _0x1c407c={};var _0x15355b;var _0xf7f6a;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x535cf2['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x14b4e3,null))[_0xa5dc('0x16')](function(_0x3ef3aa){if(_0x3ef3aa){_0x15355b=_0x3ef3aa;_0x1c407c[_0xa5dc('0x54')]=_[_0xa5dc('0x56')](db[_0xa5dc('0x13e')][_0xa5dc('0x3d')]);_0x1c407c[_0xa5dc('0x46')]=_['keys'](_0x535cf2[_0xa5dc('0x46')]);_0x1c407c['filters']=_['intersection'](_0x1c407c[_0xa5dc('0x54')],_0x1c407c[_0xa5dc('0x46')]);_0x4e6c6c[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x1c407c[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x535cf2[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x4e6c6c[_0xa5dc('0x49')]=_0x4e6c6c[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x4e6c6c[_0xa5dc('0x49')]:_0x1c407c['model'];_0x4e6c6c[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x535cf2[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x4e6c6c['where']=qs[_0xa5dc('0x57')](_[_0xa5dc('0xd5')](_0x535cf2[_0xa5dc('0x46')],_0x1c407c[_0xa5dc('0x57')]));if(_0x535cf2[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x4e6c6c[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x4e6c6c[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x4e6c6c[_0xa5dc('0x49')],function(_0x5b3712){var _0x157e07={};_0x157e07[_0x5b3712]={'$like':'%'+_0x535cf2[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x157e07;})});}_0x4e6c6c=_['merge']({},_0x4e6c6c,_0x535cf2['options']);return _0x15355b[_0xa5dc('0x13d')](_0x4e6c6c);}})[_0xa5dc('0x16')](function(_0x322ee6){if(_0x322ee6){_0xf7f6a=_0x322ee6[_0xa5dc('0x5a')];if(!_0x535cf2[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x4e6c6c['limit']=qs['limit'](_0x535cf2['query'][_0xa5dc('0x26')]);_0x4e6c6c['offset']=qs[_0xa5dc('0x25')](_0x535cf2[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x15355b[_0xa5dc('0x13d')](_0x4e6c6c);}})[_0xa5dc('0x16')](function(_0x8e32c){if(_0x8e32c){return _0x8e32c?{'count':_0xf7f6a,'rows':_0x8e32c}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x14b4e3,null))[_0xa5dc('0x20')](handleError(_0x14b4e3,null));};exports[_0xa5dc('0x13f')]=function(_0x8f12f6,_0x57f652){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x8f12f6['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x57f652,null))['then'](function(_0x3bde2){if(_0x3bde2){return _0x3bde2[_0xa5dc('0x13f')](_0x8f12f6['body'][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x8f12f6[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{});}})[_0xa5dc('0x16')](respondWithResult(_0x57f652,null))['catch'](handleError(_0x57f652,null));};exports['removeOpenchannelAccounts']=function(_0x5374b0,_0x5e7a12){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x5374b0[_0xa5dc('0x60')]['id']}})['then'](handleEntityNotFound(_0x5e7a12,null))['then'](function(_0x138f06){if(_0x138f06){return _0x138f06[_0xa5dc('0x140')](_0x5374b0[_0xa5dc('0x46')][_0xa5dc('0x64')]);}})[_0xa5dc('0x16')](respondWithStatusCode(_0x5e7a12,null))[_0xa5dc('0x20')](handleError(_0x5e7a12,null));};exports[_0xa5dc('0x141')]=function(_0x5f06b2,_0x471dfc){var _0x4a0ea7={};var _0x4e8cb9={};var _0x3819d6;var _0x18c4c2;return db['User'][_0xa5dc('0x99')]({'where':{'id':_0x5f06b2['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x471dfc,null))[_0xa5dc('0x16')](function(_0x4b2ce5){if(_0x4b2ce5){_0x3819d6=_0x4b2ce5;_0x4e8cb9[_0xa5dc('0x54')]=_['keys'](db[_0xa5dc('0x142')]['rawAttributes']);_0x4e8cb9[_0xa5dc('0x46')]=_[_0xa5dc('0x56')](_0x5f06b2[_0xa5dc('0x46')]);_0x4e8cb9[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x4e8cb9[_0xa5dc('0x54')],_0x4e8cb9[_0xa5dc('0x46')]);_0x4a0ea7['attributes']=_[_0xa5dc('0x58')](_0x4e8cb9[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x5f06b2[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x4a0ea7[_0xa5dc('0x49')]=_0x4a0ea7[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x4a0ea7['attributes']:_0x4e8cb9['model'];_0x4a0ea7[_0xa5dc('0xd3')]=qs['sort'](_0x5f06b2[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x4a0ea7[_0xa5dc('0x43')]=qs['filters'](_[_0xa5dc('0xd5')](_0x5f06b2[_0xa5dc('0x46')],_0x4e8cb9[_0xa5dc('0x57')]));if(_0x5f06b2[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x4a0ea7[_0xa5dc('0x43')]=_['merge'](_0x4a0ea7[_0xa5dc('0x43')],{'$or':_['map'](_0x4a0ea7[_0xa5dc('0x49')],function(_0xf5736a){var _0x5ed357={};_0x5ed357[_0xf5736a]={'$like':'%'+_0x5f06b2[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x5ed357;})});}_0x4a0ea7=_['merge']({},_0x4a0ea7,_0x5f06b2[_0xa5dc('0xd6')]);return _0x3819d6[_0xa5dc('0x141')](_0x4a0ea7);}})[_0xa5dc('0x16')](function(_0x14c9c0){if(_0x14c9c0){_0x18c4c2=_0x14c9c0[_0xa5dc('0x5a')];if(!_0x5f06b2[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x4a0ea7[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x5f06b2[_0xa5dc('0x46')]['limit']);_0x4a0ea7['offset']=qs[_0xa5dc('0x25')](_0x5f06b2[_0xa5dc('0x46')]['offset']);}return _0x3819d6[_0xa5dc('0x141')](_0x4a0ea7);}})[_0xa5dc('0x16')](function(_0x528993){if(_0x528993){return _0x528993?{'count':_0x18c4c2,'rows':_0x528993}:null;}})['then'](respondWithResult(_0x471dfc,null))['catch'](handleError(_0x471dfc,null));};exports[_0xa5dc('0x143')]=function(_0x383d81,_0x130545){return db[_0xa5dc('0x3c')]['find']({'where':{'id':_0x383d81[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x130545,null))[_0xa5dc('0x16')](function(_0x183fc6){if(_0x183fc6){return _0x183fc6['addSmsAccounts'](_0x383d81['body'][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x383d81[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{});}})[_0xa5dc('0x16')](respondWithResult(_0x130545,null))[_0xa5dc('0x20')](handleError(_0x130545,null));};exports[_0xa5dc('0x144')]=function(_0x10446b,_0xd9b655){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x10446b['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0xd9b655,null))[_0xa5dc('0x16')](function(_0x5cb909){if(_0x5cb909){return _0x5cb909[_0xa5dc('0x144')](_0x10446b['query']['ids']);}})[_0xa5dc('0x16')](respondWithStatusCode(_0xd9b655,null))[_0xa5dc('0x20')](handleError(_0xd9b655,null));};exports['getChatWebsites']=function(_0x2ac112,_0x3d4b56){var _0x227788={};var _0x265786={};var _0x5c3a3d;var _0xaf85cd;return db['User'][_0xa5dc('0x99')]({'where':{'id':_0x2ac112[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x3d4b56,null))[_0xa5dc('0x16')](function(_0xb12a52){if(_0xb12a52){_0x5c3a3d=_0xb12a52;_0x265786['model']=_[_0xa5dc('0x56')](db['ChatWebsite']['rawAttributes']);_0x265786['query']=_[_0xa5dc('0x56')](_0x2ac112['query']);_0x265786[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x265786['model'],_0x265786[_0xa5dc('0x46')]);_0x227788[_0xa5dc('0x49')]=_[_0xa5dc('0x58')](_0x265786[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x2ac112[_0xa5dc('0x46')]['fields']));_0x227788[_0xa5dc('0x49')]=_0x227788[_0xa5dc('0x49')]['length']?_0x227788[_0xa5dc('0x49')]:_0x265786['model'];_0x227788[_0xa5dc('0xd3')]=qs['sort'](_0x2ac112[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x227788['where']=qs['filters'](_['pick'](_0x2ac112[_0xa5dc('0x46')],_0x265786[_0xa5dc('0x57')]));if(_0x2ac112[_0xa5dc('0x46')][_0xa5dc('0x32')]){_0x227788[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x227788[_0xa5dc('0x43')],{'$or':_['map'](_0x227788[_0xa5dc('0x49')],function(_0x2ca8c9){var _0x173327={};_0x173327[_0x2ca8c9]={'$like':'%'+_0x2ac112[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x173327;})});}_0x227788=_[_0xa5dc('0x5c')]({},_0x227788,_0x2ac112[_0xa5dc('0xd6')]);return _0x5c3a3d['getChatWebsites'](_0x227788);}})[_0xa5dc('0x16')](function(_0x1a8cf2){if(_0x1a8cf2){_0xaf85cd=_0x1a8cf2[_0xa5dc('0x5a')];if(!_0x2ac112['query'][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x227788[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x2ac112[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x227788[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x2ac112[_0xa5dc('0x46')]['offset']);}return _0x5c3a3d[_0xa5dc('0x145')](_0x227788);}})['then'](function(_0xc18018){if(_0xc18018){return _0xc18018?{'count':_0xaf85cd,'rows':_0xc18018}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x3d4b56,null))[_0xa5dc('0x20')](handleError(_0x3d4b56,null));};exports[_0xa5dc('0x146')]=function(_0x3c79b1,_0x5ec019){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x3c79b1[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x5ec019,null))[_0xa5dc('0x16')](function(_0x277775){if(_0x277775){return _0x277775['addChatWebsites'](_0x3c79b1['body'][_0xa5dc('0x64')],_['omit'](_0x3c79b1[_0xa5dc('0x5f')],[_0xa5dc('0x64'),'id'])||{});}})[_0xa5dc('0x16')](respondWithResult(_0x5ec019,null))[_0xa5dc('0x20')](handleError(_0x5ec019,null));};exports['removeChatWebsites']=function(_0x7c182,_0x278e5f){return db[_0xa5dc('0x3c')]['find']({'where':{'id':_0x7c182['params']['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x278e5f,null))[_0xa5dc('0x16')](function(_0x2c6ef9){if(_0x2c6ef9){return _0x2c6ef9[_0xa5dc('0x147')](_0x7c182[_0xa5dc('0x46')][_0xa5dc('0x64')]);}})[_0xa5dc('0x16')](respondWithStatusCode(_0x278e5f,null))[_0xa5dc('0x20')](handleError(_0x278e5f,null));};exports[_0xa5dc('0x148')]=function(_0x233ed1,_0x1bfa36){var _0x45f844={};var _0x52b30f={};var _0x47653d;var _0x1bbf24;return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x233ed1[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x1bfa36,null))[_0xa5dc('0x16')](function(_0x502109){if(_0x502109){_0x47653d=_0x502109;_0x52b30f['model']=_[_0xa5dc('0x56')](db['WhatsappAccount']['rawAttributes']);_0x52b30f[_0xa5dc('0x46')]=_['keys'](_0x233ed1[_0xa5dc('0x46')]);_0x52b30f[_0xa5dc('0x57')]=_[_0xa5dc('0x58')](_0x52b30f[_0xa5dc('0x54')],_0x52b30f[_0xa5dc('0x46')]);_0x45f844['attributes']=_[_0xa5dc('0x58')](_0x52b30f[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x233ed1['query'][_0xa5dc('0x59')]));_0x45f844['attributes']=_0x45f844[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x45f844[_0xa5dc('0x49')]:_0x52b30f[_0xa5dc('0x54')];_0x45f844[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x233ed1['query'][_0xa5dc('0xd4')]);_0x45f844[_0xa5dc('0x43')]=qs[_0xa5dc('0x57')](_['pick'](_0x233ed1[_0xa5dc('0x46')],_0x52b30f[_0xa5dc('0x57')]));if(_0x233ed1['query'][_0xa5dc('0x32')]){_0x45f844[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x45f844[_0xa5dc('0x43')],{'$or':_['map'](_0x45f844[_0xa5dc('0x49')],function(_0xd496ba){var _0x36c054={};_0x36c054[_0xd496ba]={'$like':'%'+_0x233ed1[_0xa5dc('0x46')][_0xa5dc('0x32')]+'%'};return _0x36c054;})});}_0x45f844=_[_0xa5dc('0x5c')]({},_0x45f844,_0x233ed1[_0xa5dc('0xd6')]);return _0x47653d[_0xa5dc('0x148')](_0x45f844);}})[_0xa5dc('0x16')](function(_0xd8ecda){if(_0xd8ecda){_0x1bbf24=_0xd8ecda[_0xa5dc('0x5a')];if(!_0x233ed1[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x45f844[_0xa5dc('0x26')]=qs[_0xa5dc('0x26')](_0x233ed1['query']['limit']);_0x45f844[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x233ed1[_0xa5dc('0x46')][_0xa5dc('0x25')]);}return _0x47653d[_0xa5dc('0x148')](_0x45f844);}})[_0xa5dc('0x16')](function(_0x5e0f97){if(_0x5e0f97){return _0x5e0f97?{'count':_0x1bbf24,'rows':_0x5e0f97}:null;}})[_0xa5dc('0x16')](respondWithResult(_0x1bfa36,null))[_0xa5dc('0x20')](handleError(_0x1bfa36,null));};exports[_0xa5dc('0x149')]=function(_0x770ea,_0x5d6d65){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x770ea[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x5d6d65,null))['then'](function(_0x96ee1c){if(_0x96ee1c){return _0x96ee1c[_0xa5dc('0x149')](_0x770ea[_0xa5dc('0x5f')][_0xa5dc('0x64')],_[_0xa5dc('0x63')](_0x770ea['body'],['ids','id'])||{});}})[_0xa5dc('0x16')](respondWithResult(_0x5d6d65,null))['catch'](handleError(_0x5d6d65,null));};exports[_0xa5dc('0x14a')]=function(_0x3ee4c6,_0x15233b){return db['User'][_0xa5dc('0x36')]({'where':{'id':_0x3ee4c6[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x15233b,null))['then'](function(_0x20d4d9){if(_0x20d4d9){return _0x20d4d9[_0xa5dc('0x14a')](_0x3ee4c6[_0xa5dc('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x15233b,null))[_0xa5dc('0x20')](handleError(_0x15233b,null));};exports[_0xa5dc('0x14b')]=function(_0x3285e3,_0x2cb627){var _0x32a27e={},_0x398064={},_0x158656={'count':0x0,'rows':[]};var _0x211e38=db['CmHopper'][_0xa5dc('0x3d')];_0x398064['model']=_[_0xa5dc('0x56')](_0x211e38);_0x398064[_0xa5dc('0x46')]=_['keys'](_0x3285e3[_0xa5dc('0x46')]);_0x398064['filters']=_[_0xa5dc('0x58')](_0x398064[_0xa5dc('0x54')],_0x398064[_0xa5dc('0x46')]);_0x398064[_0xa5dc('0x57')]=_[_0xa5dc('0xc9')](_0x398064[_0xa5dc('0x57')],[_0xa5dc('0x14c'),'$or',_0xa5dc('0x14d'),'$gte',_0xa5dc('0x14e'),_0xa5dc('0x14f'),_0xa5dc('0x150'),'$eq',_0xa5dc('0x151'),'$between',_0xa5dc('0x152'),_0xa5dc('0x153'),'$notIn',_0xa5dc('0x154'),_0xa5dc('0x155'),_0xa5dc('0x156'),'$notILike','$like',_0xa5dc('0x157'),_0xa5dc('0x158'),'$contained',_0xa5dc('0x159')]);_0x32a27e['attributes']=_[_0xa5dc('0x58')](_0x398064[_0xa5dc('0x54')],qs[_0xa5dc('0x59')](_0x3285e3[_0xa5dc('0x46')][_0xa5dc('0x59')]));_0x32a27e['attributes']=_0x32a27e[_0xa5dc('0x49')][_0xa5dc('0x5a')]?_0x32a27e[_0xa5dc('0x49')]:_0x398064[_0xa5dc('0x54')];if(!_0x3285e3[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0x32a27e[_0xa5dc('0x26')]=qs['limit'](_0x3285e3[_0xa5dc('0x46')][_0xa5dc('0x26')]);_0x32a27e[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x3285e3[_0xa5dc('0x46')]['offset']);}_0x32a27e[_0xa5dc('0xd3')]=qs[_0xa5dc('0xd4')](_0x3285e3[_0xa5dc('0x46')][_0xa5dc('0xd4')]);_0x32a27e['where']=qs['filters'](_[_0xa5dc('0xd5')](_0x3285e3[_0xa5dc('0x46')],_0x398064[_0xa5dc('0x57')]));if(_0x3285e3['query'][_0xa5dc('0x32')]){_0x32a27e[_0xa5dc('0x43')]=_[_0xa5dc('0x5c')](_0x32a27e[_0xa5dc('0x43')],{'$or':_[_0xa5dc('0x3e')](_0x32a27e[_0xa5dc('0x49')],function(_0x4151de){var _0x1838e6={};_0x1838e6[_0x4151de]={'$like':'%'+_0x3285e3['query'][_0xa5dc('0x32')]+'%'};return _0x1838e6;})});}_0x32a27e[_0xa5dc('0x43')]={'$and':[_0x32a27e[_0xa5dc('0x43')],{'$or':[{'UserId':_0x3285e3[_0xa5dc('0x60')]['id']},{'OwnerId':_0x3285e3[_0xa5dc('0x60')]['id']}]}]};_0x32a27e=_['merge']({},_0x32a27e,_0x3285e3[_0xa5dc('0xd6')]);var _0x1573c3={'where':_0x32a27e[_0xa5dc('0x43')]};return db[_0xa5dc('0x15a')]['count'](_0x1573c3)[_0xa5dc('0x16')](function(_0x564b06){_0x158656[_0xa5dc('0x24')]=_0x564b06;if(_0x3285e3[_0xa5dc('0x46')][_0xa5dc('0x44')]){_0x32a27e[_0xa5dc('0x45')]=[{'attributes':['id',_0xa5dc('0x15b'),'lastName',_0xa5dc('0xec')],'model':db[_0xa5dc('0x15c')],'as':_0xa5dc('0x15d')},{'attributes':['id',_0xa5dc('0x37'),'dialActive'],'model':db[_0xa5dc('0xac')],'as':_0xa5dc('0xd2')}];}return db[_0xa5dc('0x15a')][_0xa5dc('0x4a')](_0x32a27e);})['then'](function(_0x2d09dc){_0x158656[_0xa5dc('0x4b')]=_0x2d09dc;return _0x158656;})[_0xa5dc('0x16')](respondWithFilteredResult(_0x2cb627,_0x32a27e))[_0xa5dc('0x20')](handleError(_0x2cb627,null));};exports[_0xa5dc('0x15e')]=function(_0x2c7ca0,_0x3589d8){if(!_[_0xa5dc('0x6c')](_0x2c7ca0[_0xa5dc('0x2f')]['id'])&&(_0x2c7ca0[_0xa5dc('0x2f')][_0xa5dc('0x2a')]==_0xa5dc('0x2e')||_0x2c7ca0['user'][_0xa5dc('0x2a')]==_0xa5dc('0x2f'))){return db[_0xa5dc('0x3c')][_0xa5dc('0x99')]({'where':{'id':_0x2c7ca0[_0xa5dc('0x60')]['id']},'raw':!![]})[_0xa5dc('0x16')](function(_0x21fd67){return authService[_0xa5dc('0x15f')](_0x21fd67);})[_0xa5dc('0x16')](function(_0xe5bb12){if(_0xe5bb12){return _0x3589d8[_0xa5dc('0x21')](0xc8)[_0xa5dc('0x28')]({'api_key':_0xe5bb12[_0xa5dc('0x160')]});}else{return _0x3589d8[_0xa5dc('0x21')](0xcc)[_0xa5dc('0x28')]({'message':_0xa5dc('0x161')});}})[_0xa5dc('0x20')](handleError(_0x3589d8,0x193));}else{return _0x3589d8[_0xa5dc('0x21')](0x191)['json']({'message':_0xa5dc('0x162')});}};exports['createApiKey']=function(_0x14f0d3,_0x5c1d9b){if(!_[_0xa5dc('0x6c')](_0x14f0d3[_0xa5dc('0x2f')]['id'])&&(_0x14f0d3['user'][_0xa5dc('0x2a')]==_0xa5dc('0x2e')||_0x14f0d3[_0xa5dc('0x2f')][_0xa5dc('0x2a')]=='user')){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x14f0d3[_0xa5dc('0x60')]['id']}})['then'](function(_0x1b51d8){return authService['generateApiKey'](_0x1b51d8);})[_0xa5dc('0x16')](function(_0x5353e0){return db['User'][_0xa5dc('0x29')]({'apiKeyIat':_0x5353e0[_0xa5dc('0x163')],'apiKeyNonce':_0x5353e0[_0xa5dc('0x164')]},{'where':{'id':_0x14f0d3[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](function(){return _0x5c1d9b[_0xa5dc('0x21')](0xc8)[_0xa5dc('0x28')]({'api_key':_0x5353e0[_0xa5dc('0x160')]});});})['catch'](handleError(_0x5c1d9b,0x193));}else{return _0x5c1d9b[_0xa5dc('0x21')](0x191)[_0xa5dc('0x28')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['removeApiKey']=function(_0x31a71f,_0x582eff){if(!_['isNil'](_0x31a71f[_0xa5dc('0x2f')]['id'])&&(_0x31a71f[_0xa5dc('0x2f')][_0xa5dc('0x2a')]==_0xa5dc('0x2e')||_0x31a71f[_0xa5dc('0x2f')][_0xa5dc('0x2a')]=='user')){return db[_0xa5dc('0x3c')][_0xa5dc('0x36')]({'where':{'id':_0x31a71f[_0xa5dc('0x60')]['id']}})[_0xa5dc('0x16')](handleEntityNotFound(_0x582eff,null))[_0xa5dc('0x16')](function(_0x3ed137){if(_0x3ed137&&_0x3ed137[_0xa5dc('0x165')]&&_0x3ed137[_0xa5dc('0x166')])return _0x3ed137;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(){return db['User'][_0xa5dc('0x29')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x31a71f[_0xa5dc('0x60')]['id']}});})['then'](respondWithStatusCode(_0x582eff,0xc8))[_0xa5dc('0x20')](handleError(_0x582eff,0x193));}else{return _0x582eff[_0xa5dc('0x21')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xa5dc('0x167')]=function(_0x4c16ea,_0x14046b){var _0x2f7841=_0x4c16ea[_0xa5dc('0x2f')][_0xa5dc('0xd7')]({'plain':!![]});if(!_0x2f7841){return _0x14046b[_0xa5dc('0x21')](0x191)['send'](_0xa5dc('0x168'));}else{Promise[_0xa5dc('0xfe')]()['then'](function(){if(_0x4c16ea['query'][_0xa5dc('0x47')]!==_0xa5dc('0x5b'))return;return _0x4c16ea[_0xa5dc('0x2f')][_0xa5dc('0x169')]();})['then'](function(_0x398f93){if(!_0x398f93)return;return _0x398f93[_0xa5dc('0xd7')]({'plain':!![]});})[_0xa5dc('0x16')](function(_0x4606e2){_0x2f7841[_0xa5dc('0x47')]=_0x4606e2;return _0x14046b['status'](0xc8)[_0xa5dc('0x28')](_0x2f7841);});}};exports[_0xa5dc('0x16a')]=function(_0x20892f,_0x1b463e){var _0xcc0eb={'offset':0x0},_0x46e03e={'count':0x0,'rows':[]};Promise['resolve']()[_0xa5dc('0x16')](function(){if(!_0x20892f['query'][_0xa5dc('0x32')]&&!_0x20892f[_0xa5dc('0x46')][_0xa5dc('0x16b')]&&!_0x20892f['query'][_0xa5dc('0x16c')])return[];return Promise[_0xa5dc('0xfe')]()['then'](function(){var _0x3dded3=[];if(!_[_0xa5dc('0x8e')](_0x20892f[_0xa5dc('0x46')]['teams'])){_0x3dded3[_0xa5dc('0x4c')](db['Team'][_0xa5dc('0x4a')]({'attributes':['id',_0xa5dc('0x37')],'where':{'id':_0x20892f[_0xa5dc('0x46')][_0xa5dc('0x16b')]}}));}if(!_[_0xa5dc('0x8e')](_0x20892f[_0xa5dc('0x46')][_0xa5dc('0x16c')])){_0x3dded3[_0xa5dc('0x4c')](db[_0xa5dc('0xac')][_0xa5dc('0x4a')]({'attributes':['id',_0xa5dc('0x37')],'type':_0xa5dc('0x16d'),'where':{'id':_0x20892f[_0xa5dc('0x46')][_0xa5dc('0x16c')]}}));}return Promise[_0xa5dc('0x53')](_0x3dded3);})[_0xa5dc('0x16')](function(_0x2d16bf){var _0xd8263f=_['flatten'](_0x2d16bf)['map'](function(_0x29ed27){return _0x29ed27[_0xa5dc('0x11b')]({'attributes':['id','name','internal',_0xa5dc('0xad')],'raw':!![]});});return Promise['all'](_0xd8263f);})[_0xa5dc('0x16')](function(_0x73fa32){var _0x1cdf12=_['flatten'](_0x73fa32);if(!_0x20892f['query'][_0xa5dc('0x32')])return _0x1cdf12;if(_[_0xa5dc('0x8e')](_0x1cdf12)){return db[_0xa5dc('0x3c')]['findAll']({'attributes':['id',_0xa5dc('0x37'),_0xa5dc('0x6a'),_0xa5dc('0xad')],'where':{'role':'agent','$or':[db[_0xa5dc('0x6e')]['where'](db['sequelize']['fn'](_0xa5dc('0x16e'),db[_0xa5dc('0x6e')][_0xa5dc('0x16f')]('name')),{'$like':'%'+_0x20892f[_0xa5dc('0x46')][_0xa5dc('0x32')][_0xa5dc('0xa9')]()+'%'}),{'internal':{'$like':'%'+_0x20892f['query'][_0xa5dc('0x32')]+'%'}}]},'raw':!![]});}else{return _(_0x1cdf12)[_0xa5dc('0x170')]()[_0xa5dc('0x32')](function(_0x255b36){return _0x255b36['name'][_0xa5dc('0xa9')]()[_0xa5dc('0x35')](_0x20892f[_0xa5dc('0x46')][_0xa5dc('0x32')][_0xa5dc('0xa9')]())||_0x255b36[_0xa5dc('0x6a')]['toString']()['includes'](_0x20892f[_0xa5dc('0x46')]['filter']);})[_0xa5dc('0x34')]();}})[_0xa5dc('0x16')](function(_0x385bad){var _0x58bf35=_0xa5dc('0x37');var _0x1251df=_0xa5dc('0x171');if(_0x20892f[_0xa5dc('0x46')][_0xa5dc('0xd4')]){_0x1251df=_0x20892f[_0xa5dc('0x46')][_0xa5dc('0xd4')][0x0]==='-'?_0xa5dc('0x172'):_0xa5dc('0x171');_0x58bf35=_0x1251df===_0xa5dc('0x171')?_0x20892f[_0xa5dc('0x46')][_0xa5dc('0xd4')]:_0x20892f['query']['sort'][_0xa5dc('0x173')](0x1);}return _(_0x385bad)['uniqBy']('id')['orderBy']([function(_0x85d9e){return _0x58bf35===_0xa5dc('0x37')?_0x85d9e[_0x58bf35][_0xa5dc('0xa9')]():_0x85d9e[_0x58bf35];}],[_0x1251df])[_0xa5dc('0x3e')](function(_0xd6c85b){return _[_0xa5dc('0xd5')](_0xd6c85b,['id',_0xa5dc('0x37'),_0xa5dc('0x6a'),_0xa5dc('0xad')]);})[_0xa5dc('0x34')]();})['then'](function(_0x2b5926){return amiClient[_0xa5dc('0x15')](_0xa5dc('0x30'),_0x20892f)[_0xa5dc('0x16')](function(_0x32a929){if(_0x32a929[_0xa5dc('0x1c')])throw new Error(_0xa5dc('0x174'));var _0x3ccf99=_0x32a929[_0xa5dc('0x1f')];var _0x514a3f=jayson[_0xa5dc('0x14')][_0xa5dc('0x175')]({'port':0x232c});return _0x514a3f['request']('Agents',_0x20892f)[_0xa5dc('0x16')](function(_0x35a828){if(_0x35a828[_0xa5dc('0x1c')])throw new Error(_0xa5dc('0x176'));var _0x15fd21=_0x35a828[_0xa5dc('0x1f')];return _['merge']({},_0x15fd21,_0x3ccf99);});})['then'](function(_0x57306a){return _[_0xa5dc('0x3e')](_0x2b5926,function(_0x33f514){var _0x4907dc=_[_0xa5dc('0x36')](_0x57306a[_0xa5dc('0x4b')],['id',_0x33f514['id']]);if(!_0x4907dc||!_0x33f514[_0xa5dc('0xad')]){_0x33f514[_0xa5dc('0x21')]='offline';}else if(_0x4907dc[_0xa5dc('0xa0')]){_0x33f514[_0xa5dc('0x21')]='pause';}else{_0x33f514[_0xa5dc('0x21')]=_[_0xa5dc('0x35')]([_0xa5dc('0x177'),_0xa5dc('0x178'),'unavailable',_0xa5dc('0x179'),null,undefined],_0x4907dc[_0xa5dc('0x17a')])?_0xa5dc('0xad'):_0xa5dc('0x17b');}return _0x33f514;});});});})[_0xa5dc('0x16')](function(_0x5cccfc){if(!_0x20892f[_0xa5dc('0x46')][_0xa5dc('0xcc')](_0xa5dc('0xd8'))){_0xcc0eb[_0xa5dc('0x26')]=qs['limit'](_0x20892f[_0xa5dc('0x46')]['limit']||0xa);_0xcc0eb[_0xa5dc('0x25')]=qs[_0xa5dc('0x25')](_0x20892f['query'][_0xa5dc('0x25')]);}_0x46e03e[_0xa5dc('0x24')]=_0x5cccfc[_0xa5dc('0x5a')];_0x46e03e['rows']=_0xcc0eb['limit']?_0x5cccfc[_0xa5dc('0x17c')](_0xcc0eb[_0xa5dc('0x25')],_0xcc0eb[_0xa5dc('0x25')]+_0xcc0eb[_0xa5dc('0x26')]):_0x5cccfc;return _0x46e03e;})['then'](respondWithFilteredResult(_0x1b463e,_0xcc0eb))[_0xa5dc('0x20')](handleError(_0x1b463e,null));};function get_open_tabs(_0x187f9b,_0x32b106){var _0x3c500b=_0x187f9b['charAt'](0x0)[_0xa5dc('0x17d')]()+_0x187f9b[_0xa5dc('0x17c')](0x1);var _0x68958e={'type':db[_0xa5dc('0x92')][_0xa5dc('0x17e')][_0xa5dc('0x6f')],'raw':!![]};return new Promise(function(_0x277db1,_0x1b8319){var _0x5e9a0d=squel['select']()[_0xa5dc('0x17f')]('ui.'+_0x3c500b+_0xa5dc('0x180'),'id')[_0xa5dc('0x17f')]('ui.createdAt')[_0xa5dc('0x70')](_0xa5dc('0x181')+_0x187f9b+_0xa5dc('0x182'),'ui')[_0xa5dc('0x43')]('ui.UserId\x20=\x20?',_0x32b106['id']);return db[_0xa5dc('0x6e')][_0xa5dc('0x46')](_0x5e9a0d['toString'](),_0x68958e)[_0xa5dc('0x16')](function(_0x2823fb){_0x32b106[_0x3c500b+_0xa5dc('0x183')]=_0x2823fb;_0x277db1(_0x2823fb);})[_0xa5dc('0x20')](function(_0x53ef4c){_0x1b8319(_0x53ef4c);});});}
\ No newline at end of file
index 61b718e..4f6ac16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b03=['../../mysqldb','User','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x1b03,0x1ad));var _0x31b0=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x1b03[_0x40ac5e];return _0x2839d6;};'use strict';var EventEmitter=require(_0x31b0('0x0'));var User=require(_0x31b0('0x1'))['db'][_0x31b0('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x31b0('0x3')](0x0);var events={'afterCreate':_0x31b0('0x4'),'afterUpdate':_0x31b0('0x5'),'afterDestroy':_0x31b0('0x6')};function emitEvent(_0x1204a2){return function(_0x3d214f,_0xe1b8cc,_0x2e6ab6){UserEvents[_0x31b0('0x7')](_0x1204a2+':'+_0x3d214f['id'],_0x3d214f);UserEvents[_0x31b0('0x7')](_0x1204a2,_0x3d214f);_0x2e6ab6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x31b0('0x8')](e,emitEvent(event));}}module[_0x31b0('0x9')]=UserEvents;
\ No newline at end of file
+var _0x5207=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','User'];(function(_0x422082,_0x37ddea){var _0x3d2c3a=function(_0x3ccce8){while(--_0x3ccce8){_0x422082['push'](_0x422082['shift']());}};_0x3d2c3a(++_0x37ddea);}(_0x5207,0xb5));var _0x7520=function(_0x5ac01c,_0x1ada72){_0x5ac01c=_0x5ac01c-0x0;var _0x217fbb=_0x5207[_0x5ac01c];return _0x217fbb;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db'][_0x7520('0x0')];var UserEvents=new EventEmitter();UserEvents[_0x7520('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7520('0x2'),'afterDestroy':'remove'};function emitEvent(_0x2ea9d2){return function(_0x1abbc6,_0x2e5453,_0x49e691){UserEvents[_0x7520('0x3')](_0x2ea9d2+':'+_0x1abbc6['id'],_0x1abbc6);UserEvents['emit'](_0x2ea9d2,_0x1abbc6);_0x49e691(null);};}for(var e in events){if(events[_0x7520('0x4')](e)){var event=events[e];User[_0x7520('0x5')](e,emitEvent(event));}}module[_0x7520('0x6')]=UserEvents;
\ No newline at end of file
index 06add3b..c71eb1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2d6=['find','userProfileId','then','privacyEnabled','catch','changed','updateMd5Password','userSetting','VoiceExtension','bulkCreate','context','destroy','encryptPassword','Missing\x20Callback','randomBytes','toString','salt','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','client','http','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','result','UserVoiceQueueRt','findOne','PAUSE','MemberReport','isArray','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','faxPause','smsPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','Status','setDataValue','update','crypto','util','md5','moment','lodash','jayson/promise','./user.attributes','google','length','from-sip','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','recordingFormat','auth','password','merge','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','gsm','system','CDR(type)=internal','extensionMonitor','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','internal','concat','exports','users','undefined','resolve','UserProfile'];(function(_0x1a05a5,_0x453fba){var _0x65218e=function(_0x137b25){while(--_0x137b25){_0x1a05a5['push'](_0x1a05a5['shift']());}};_0x65218e(++_0x453fba);}(_0xc2d6,0x171));var _0x6c2d=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xc2d6[_0x4baae2];return _0x1a2285;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x6c2d('0x0'));var util=require(_0x6c2d('0x1'));var md5=require(_0x6c2d('0x2'));var moment=require(_0x6c2d('0x3'));var _=require(_0x6c2d('0x4'));var jayson=require(_0x6c2d('0x5'));var attributes=require(_0x6c2d('0x6'));var authTypes=[_0x6c2d('0x7')];var validatePresenceOf=function(_0x47057e){return _0x47057e&&_0x47057e[_0x6c2d('0x8')];};var getChanSpyApplications=function(_0x54539c,_0x1141f7,_0x3cf33f){var _0x33c7a9={'context':_0x54539c['context']||_0x6c2d('0x9'),'type':'system','isApp':![],'UserId':_0x54539c['id']};var _0x5670fb=[];for(var _0xa545c5=0x0,_0x7a1226=0x1;_0xa545c5<_0x3cf33f['length'];_0xa545c5++,_0x7a1226=0x1){var _0x5ed660={'exten':util[_0x6c2d('0xa')](_0x6c2d('0xb'),_0x3cf33f[_0xa545c5][_0x6c2d('0xc')],_0x1141f7),'ChanSpyId':_0x3cf33f[_0xa545c5]['id']};_0x5670fb[_0x6c2d('0xd')](_['merge']({'app':_0x6c2d('0xe'),'appdata':util[_0x6c2d('0xa')](_0x6c2d('0xf'),_0x6c2d('0x10')),'priority':_0x7a1226++},_0x33c7a9,_0x5ed660));if(_0x3cf33f[_0xa545c5][_0x6c2d('0x11')]){_0x5670fb[_0x6c2d('0xd')](_['merge']({'app':'MixMonitor','appdata':util[_0x6c2d('0xa')]('${UNIQUEID}.%s,a',_0x3cf33f[_0xa545c5][_0x6c2d('0x12')]),'priority':_0x7a1226++},_0x33c7a9,_0x5ed660));}if(_0x3cf33f[_0xa545c5][_0x6c2d('0x13')]){_0x5670fb[_0x6c2d('0xd')](_['merge']({'app':'Authenticate','appdata':_0x3cf33f[_0xa545c5][_0x6c2d('0x14')],'priority':_0x7a1226++},_0x33c7a9,_0x5ed660));}_0x5670fb['push'](_[_0x6c2d('0x15')]({'app':_0x6c2d('0x16'),'appdata':util[_0x6c2d('0xa')](_0x6c2d('0x17'),_0x54539c[_0x6c2d('0x18')],_0x3cf33f[_0xa545c5][_0x6c2d('0x19')]?_0x3cf33f[_0xa545c5]['options'][_0x6c2d('0x1a')](''):''),'priority':_0x7a1226++},_0x33c7a9,_0x5ed660));if(_0x3cf33f[_0xa545c5][_0x6c2d('0x11')]){_0x5670fb[_0x6c2d('0xd')](_[_0x6c2d('0x15')]({'app':_0x6c2d('0x1b'),'priority':_0x7a1226++},_0x33c7a9,_0x5ed660));}}return _0x5670fb;};var getUserApplications=function(_0x1f0293,_0x1b3c4e){var _0x2a9d6e=[_0x6c2d('0x1c'),'WAV',_0x6c2d('0x1d')];var _0x2923be={'context':_0x1f0293['context']||_0x6c2d('0x9'),'exten':_0x1b3c4e,'type':_0x6c2d('0x1e'),'isApp':![],'UserId':_0x1f0293['id']};var _0x36a43f=[{'app':'Set','appdata':_0x6c2d('0x1f')}];if(_0x1f0293[_0x6c2d('0x20')]&&_['includes'](_0x2a9d6e,_0x1f0293[_0x6c2d('0x20')])){_0x36a43f[_0x6c2d('0xd')]({'app':_0x6c2d('0xe'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x36a43f[_0x6c2d('0xd')]({'app':_0x6c2d('0xe'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x1f0293[_0x6c2d('0x20')])});_0x36a43f[_0x6c2d('0xd')]({'app':'Dial','appdata':util[_0x6c2d('0xa')](_0x6c2d('0x21'),_0x1f0293['name'])});}else{_0x36a43f[_0x6c2d('0xd')]({'app':'Dial','appdata':util[_0x6c2d('0xa')](_0x6c2d('0x22'),_0x1f0293[_0x6c2d('0x18')])});}_0x36a43f[_0x6c2d('0xd')]({'app':_0x6c2d('0x23')});for(var _0x15920f=0x0;_0x15920f<_0x36a43f[_0x6c2d('0x8')];_0x15920f++){_0x36a43f[_0x15920f][_0x6c2d('0x24')]=_0x15920f+0x1;_0x36a43f[_0x15920f]=_[_0x6c2d('0x25')](_0x36a43f[_0x15920f],_0x2923be);}return _0x36a43f;};var getChanSpyPromise=function(_0x2358b4,_0x3c8d61){return new BPromise(function(_0x3eb54e,_0x5571ba){return _0x2358b4[_0x6c2d('0x26')][_0x6c2d('0x27')]()['then'](function(_0x406b95){if(_0x406b95){var _0x3f48af=getChanSpyApplications(_0x3c8d61,_0x3c8d61[_0x6c2d('0x28')],_0x406b95);if(_0x3c8d61[_0x6c2d('0x28')]!=_0x3c8d61[_0x6c2d('0x18')]){_0x3f48af=_0x3f48af[_0x6c2d('0x29')](getChanSpyApplications(_0x3c8d61,_0x3c8d61['name'],_0x406b95));}return _0x3eb54e(_0x3f48af);}return _0x3eb54e([]);})['catch'](function(_0x4e2e7f){_0x5571ba(_0x4e2e7f);});});};module[_0x6c2d('0x2a')]=function(_0x1b52bc){var _0x18fc52=_0x1b52bc['models'];return _0x1b52bc['define']('User',attributes,{'tableName':_0x6c2d('0x2b'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x4b8dac,_0x1465f8,_0x4927d1){var _0x12a392=typeof _0x4b8dac['userProfileId']===_0x6c2d('0x2c')?BPromise[_0x6c2d('0x2d')](null):_0x18fc52[_0x6c2d('0x2e')][_0x6c2d('0x2f')]({'where':{'id':_0x4b8dac[_0x6c2d('0x30')]}});_0x12a392[_0x6c2d('0x31')](function(_0x2cafd7){if(_0x2cafd7){_0x4b8dac['privacyEnabled']=_0x2cafd7[_0x6c2d('0x32')];}})[_0x6c2d('0x31')](function(){_0x4b8dac['updateMd5Password']();_0x4b8dac['updatePassword'](_0x4927d1);})[_0x6c2d('0x33')](function(_0x426b9b){_0x4927d1(_0x426b9b);});},'beforeUpdate':function(_0x4f26dc,_0x1d7a48,_0x1533f4){Promise[_0x6c2d('0x2d')]()[_0x6c2d('0x31')](function(){if(_0x4f26dc[_0x6c2d('0x34')](_0x6c2d('0x30'))===![])return;return _0x18fc52[_0x6c2d('0x2e')][_0x6c2d('0x2f')]({'where':{'id':_0x4f26dc[_0x6c2d('0x30')]}})[_0x6c2d('0x31')](function(_0x257b0a){if(_0x257b0a)_0x4f26dc['privacyEnabled']=_0x257b0a['privacyEnabled'];return;});})['then'](function(){if(_0x4f26dc[_0x6c2d('0x34')](_0x6c2d('0x14'))){_0x4f26dc[_0x6c2d('0x35')]();return _0x4f26dc['updatePassword'](_0x1533f4);}_0x1533f4();})[_0x6c2d('0x33')](function(_0x20b6d9){_0x1533f4(_0x20b6d9);});},'afterCreate':function(_0x31b43f,_0x10300a,_0x53a8e4){var _0x20cb45=getUserApplications(_0x31b43f,_0x31b43f[_0x6c2d('0x28')]);if(_0x31b43f['internal']!=_0x31b43f[_0x6c2d('0x18')]){_0x20cb45=_0x20cb45[_0x6c2d('0x29')](getUserApplications(_0x31b43f,_0x31b43f['name']));}return Promise['resolve']()['then'](function(){if(!_0x31b43f[_0x6c2d('0x36')]){return _0x31b43f['createUserSetting']({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0x6c2d('0x31')](function(){return _0x18fc52[_0x6c2d('0x37')][_0x6c2d('0x38')](_0x20cb45);})[_0x6c2d('0x31')](function(){if(_0x31b43f[_0x6c2d('0x10')]){return getChanSpyPromise(_0x18fc52,_0x31b43f);}})[_0x6c2d('0x31')](function(_0x5f5010){if(_0x5f5010&&_0x5f5010[_0x6c2d('0x8')]){return _0x18fc52[_0x6c2d('0x37')][_0x6c2d('0x38')](_0x5f5010);}})[_0x6c2d('0x31')](function(){_0x53a8e4();})[_0x6c2d('0x33')](function(_0x43fb66){_0x53a8e4(_0x43fb66);});},'afterUpdate':function(_0x483850,_0x49c4d4,_0xa95e5){return BPromise[_0x6c2d('0x2d')]()[_0x6c2d('0x31')](function(){if(_0x483850['changed'](_0x6c2d('0x10'))||_0x483850[_0x6c2d('0x34')](_0x6c2d('0x39'))){return _0x18fc52[_0x6c2d('0x37')][_0x6c2d('0x3a')]({'where':{'UserId':_0x483850['id'],'type':_0x6c2d('0x1e'),'ChanSpyId':{'$ne':null}}})[_0x6c2d('0x31')](function(){if(_0x483850[_0x6c2d('0x10')]){return getChanSpyPromise(_0x18fc52,_0x483850)[_0x6c2d('0x31')](function(_0x57e38a){if(_0x57e38a&&_0x57e38a[_0x6c2d('0x8')]){return _0x18fc52[_0x6c2d('0x37')][_0x6c2d('0x38')](_0x57e38a);}});}});}})[_0x6c2d('0x31')](function(){if(_0x483850['changed'](_0x6c2d('0x20'))||_0x483850[_0x6c2d('0x34')](_0x6c2d('0x39'))){return _0x18fc52['VoiceExtension'][_0x6c2d('0x3a')]({'where':{'UserId':_0x483850['id'],'type':'system','ChanSpyId':null}})[_0x6c2d('0x31')](function(){var _0x4a7f37=getUserApplications(_0x483850,_0x483850['internal']);if(_0x483850[_0x6c2d('0x28')]!=_0x483850[_0x6c2d('0x18')]){_0x4a7f37=_0x4a7f37[_0x6c2d('0x29')](getUserApplications(_0x483850,_0x483850[_0x6c2d('0x18')]));}return _0x18fc52[_0x6c2d('0x37')][_0x6c2d('0x38')](_0x4a7f37);});}})[_0x6c2d('0x31')](function(){_0xa95e5();})[_0x6c2d('0x33')](function(_0x45ddb4){_0xa95e5(_0x45ddb4);});},'afterDestroy':function(_0x4c0f68){return _0x18fc52[_0x6c2d('0x37')][_0x6c2d('0x3a')]({'where':{'UserId':_0x4c0f68['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x40ae43,_0x2a665a){if(!_0x2a665a){return this['password']===this[_0x6c2d('0x3b')](_0x40ae43);}var _0x24adda=this;this['encryptPassword'](_0x40ae43,function(_0xad3ded,_0x4e1c49){if(_0xad3ded){_0x2a665a(_0xad3ded);}if(_0x24adda[_0x6c2d('0x14')]===_0x4e1c49){_0x2a665a(null,!![]);}else{_0x2a665a(null,![]);}});},'makeSalt':function(_0x3c7895,_0x4f2f9d){var _0x36e938=0x10;if(typeof arguments[0x0]==='function'){_0x4f2f9d=arguments[0x0];_0x3c7895=_0x36e938;}else if(typeof arguments[0x1]==='function'){_0x4f2f9d=arguments[0x1];}else{throw new Error(_0x6c2d('0x3c'));}if(!_0x3c7895){_0x3c7895=_0x36e938;}return crypto[_0x6c2d('0x3d')](_0x3c7895,function(_0x49e34d,_0xa5a5fe){if(_0x49e34d){_0x4f2f9d(_0x49e34d);}return _0x4f2f9d(null,_0xa5a5fe[_0x6c2d('0x3e')]('base64'));});},'encryptPassword':function(_0x538e6d,_0x4d142b){if(!_0x538e6d||!this[_0x6c2d('0x3f')]){return _0x4d142b?_0x4d142b(null):null;}var _0xc8f94e=0x2710;var _0x449111=0x40;var _0x4d0ee4=Buffer['from'](this[_0x6c2d('0x3f')],_0x6c2d('0x40'));if(!_0x4d142b){return crypto[_0x6c2d('0x41')](_0x538e6d,_0x4d0ee4,_0xc8f94e,_0x449111,_0x6c2d('0x42'))['toString'](_0x6c2d('0x40'));}return crypto[_0x6c2d('0x43')](_0x538e6d,_0x4d0ee4,_0xc8f94e,_0x449111,'sha1',function(_0x21a45f,_0x115437){if(_0x21a45f){_0x4d142b(_0x21a45f);}return _0x4d142b(null,_0x115437['toString'](_0x6c2d('0x40')));});},'updatePassword':function(_0x4a53fb){if(!this[_0x6c2d('0x14')]){return _0x4a53fb(null);}if(!validatePresenceOf(this[_0x6c2d('0x14')])&&authTypes[_0x6c2d('0x44')](this[_0x6c2d('0x45')])===-0x1){_0x4a53fb(new Error(_0x6c2d('0x46')));}var _0x4e4e85=this;this[_0x6c2d('0x47')](function(_0x3d762d,_0x48a578){if(_0x3d762d){return _0x4a53fb(_0x3d762d);}_0x4e4e85['salt']=_0x48a578;_0x4e4e85[_0x6c2d('0x3b')](_0x4e4e85[_0x6c2d('0x14')],function(_0x483757,_0x49cc42){if(_0x483757){_0x4a53fb(_0x483757);}_0x4e4e85['password']=_0x49cc42;_0x4a53fb(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x6c2d('0x18')]+_0x6c2d('0x48')+this[_0x6c2d('0x14')]);return this[_0x6c2d('0x49')];},'getRealtimeData':function(){var _0x4469a5={'id':this['id']};var _0x446182=jayson[_0x6c2d('0x4a')]['http']({'port':0x232a});var _0x47db13=jayson['client'][_0x6c2d('0x4b')]({'port':0x232c});var _0x568517={};var _0x8fcf06={};return _0x446182[_0x6c2d('0x4c')](_0x6c2d('0x4d'),_0x4469a5)[_0x6c2d('0x31')](function(_0x36d168){if(_0x36d168[_0x6c2d('0x4e')]){throw new Error(_0x6c2d('0x4f'));}_0x568517=_0x36d168['result'];return _0x47db13[_0x6c2d('0x4c')](_0x6c2d('0x4d'),_0x4469a5);})[_0x6c2d('0x31')](function(_0x34ea69){if(_0x34ea69[_0x6c2d('0x4e')]){throw new Error(_0x6c2d('0x50'));}_0x8fcf06=_0x34ea69['result'];var _0x361dbf=_['merge']({},_0x568517,_0x8fcf06);return _0x361dbf;})[_0x6c2d('0x33')](function(_0x322efd){throw _0x322efd;});},'unpause':function(_0x344337,_0x47122f=_0x6c2d('0x51')){var _0x204d19=this;var _0x45afb7={};return Promise['resolve']()[_0x6c2d('0x31')](function(){if(!_0x344337||_0x344337==='voice'&&_0x47122f===_0x6c2d('0x51')){var _0x591e73=jayson[_0x6c2d('0x4a')][_0x6c2d('0x4b')]({'port':0x232a});return _0x591e73[_0x6c2d('0x4c')](_0x6c2d('0x52'),{'id':_0x204d19['id'],'name':_0x204d19['name'],'pause':![]})[_0x6c2d('0x31')](function(_0x19ef0f){if(_0x19ef0f[_0x6c2d('0x4e')]){throw new Error(util['format'](_0x6c2d('0x53'),_0x204d19['id'],_0x204d19[_0x6c2d('0x18')]));}return _0x19ef0f[_0x6c2d('0x54')]['message'];});}})[_0x6c2d('0x31')](function(){if(!_0x344337||_0x344337==='voice'){return _0x18fc52[_0x6c2d('0x55')]['update']({'paused':0x0},{'where':{'UserId':_0x204d19['id']},'individualHooks':!![]});}})[_0x6c2d('0x31')](function(){var _0x5b4bda=!_0x344337?'findAll':_0x6c2d('0x56');var _0x14d886={'membername':_0x204d19[_0x6c2d('0x18')],'type':_0x6c2d('0x57'),'exitAt':null};if(_0x344337){_0x14d886['channel']=_0x344337;}return _0x18fc52[_0x6c2d('0x58')][_0x5b4bda]({'where':_0x14d886});})[_0x6c2d('0x31')](function(_0x5ecc60){if(_0x5ecc60){var _0x417d0c=Array[_0x6c2d('0x59')](_0x5ecc60)?_0x5ecc60:[_0x5ecc60];var _0x465d6e=_0x417d0c['map'](function(_0x5d4235){return _0x5d4235['update']({'exitAt':moment()[_0x6c2d('0xa')](_0x6c2d('0x5a')),'data2':_0x47122f});});return Promise[_0x6c2d('0x5b')](_0x465d6e);}})['then'](function(){if(!_0x344337){_0x45afb7[_0x6c2d('0x5c')]=![];_0x45afb7[_0x6c2d('0x5d')]=![];_0x45afb7['chatPause']=![];_0x45afb7[_0x6c2d('0x5e')]=![];_0x45afb7[_0x6c2d('0x5f')]=![];_0x45afb7[_0x6c2d('0x60')]=![];_0x45afb7['openchannelPause']=![];}else{_0x45afb7[_0x344337+_0x6c2d('0x61')]=![];}return _0x204d19[_0x6c2d('0x62')]();})['then'](function(_0x32e5eb){var _0x47cd45=require(_0x6c2d('0x63'));var _0x2f287a=_0x47cd45[_0x6c2d('0x64')]();_0x2f287a['forEach'](function(_0xcfe8a3){var _0x3aeb4c=_0xcfe8a3+_0x6c2d('0x65');_0x204d19[_0x6c2d('0x66')]([_0x3aeb4c],_0x32e5eb[_0x3aeb4c]);});return _0x204d19[_0x6c2d('0x67')](_0x45afb7);})[_0x6c2d('0x33')](function(_0x397ddf){throw _0x397ddf;});}}});};
\ No newline at end of file
+var _0x81bd=['all','voicePause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','google','length','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','MixMonitor','recordingFormat','Authenticate','password','ChanSpy','name','options','join','record','StopMixMonitor','wav','WAV','gsm','context','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','internal','concat','catch','models','utf8','utf8_bin','userProfileId','resolve','find','then','privacyEnabled','updateMd5Password','updatePassword','changed','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','client','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findAll','PAUSE','channel','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4c59c6,_0xf02b50){var _0x38ae55=function(_0x34a10e){while(--_0x34a10e){_0x4c59c6['push'](_0x4c59c6['shift']());}};_0x38ae55(++_0xf02b50);}(_0x81bd,0x7c));var _0xd81b=function(_0x439790,_0x2f4e02){_0x439790=_0x439790-0x0;var _0x1275ab=_0x81bd[_0x439790];return _0x1275ab;};'use strict';var BPromise=require(_0xd81b('0x0'));var crypto=require(_0xd81b('0x1'));var util=require(_0xd81b('0x2'));var md5=require(_0xd81b('0x3'));var moment=require(_0xd81b('0x4'));var _=require(_0xd81b('0x5'));var jayson=require(_0xd81b('0x6'));var attributes=require('./user.attributes');var authTypes=[_0xd81b('0x7')];var validatePresenceOf=function(_0x2c3d9e){return _0x2c3d9e&&_0x2c3d9e[_0xd81b('0x8')];};var getChanSpyApplications=function(_0x4d8e7e,_0x42a0aa,_0x34eb73){var _0x1f3f2c={'context':_0x4d8e7e['context']||'from-sip','type':_0xd81b('0x9'),'isApp':![],'UserId':_0x4d8e7e['id']};var _0x5468d5=[];for(var _0x223515=0x0,_0x3ed380=0x1;_0x223515<_0x34eb73[_0xd81b('0x8')];_0x223515++,_0x3ed380=0x1){var _0x86dab6={'exten':util[_0xd81b('0xa')](_0xd81b('0xb'),_0x34eb73[_0x223515][_0xd81b('0xc')],_0x42a0aa),'ChanSpyId':_0x34eb73[_0x223515]['id']};_0x5468d5[_0xd81b('0xd')](_[_0xd81b('0xe')]({'app':_0xd81b('0xf'),'appdata':util[_0xd81b('0xa')](_0xd81b('0x10'),_0xd81b('0x11')),'priority':_0x3ed380++},_0x1f3f2c,_0x86dab6));if(_0x34eb73[_0x223515]['record']){_0x5468d5[_0xd81b('0xd')](_['merge']({'app':_0xd81b('0x12'),'appdata':util[_0xd81b('0xa')]('${UNIQUEID}.%s,a',_0x34eb73[_0x223515][_0xd81b('0x13')]),'priority':_0x3ed380++},_0x1f3f2c,_0x86dab6));}if(_0x34eb73[_0x223515]['auth']){_0x5468d5[_0xd81b('0xd')](_[_0xd81b('0xe')]({'app':_0xd81b('0x14'),'appdata':_0x34eb73[_0x223515][_0xd81b('0x15')],'priority':_0x3ed380++},_0x1f3f2c,_0x86dab6));}_0x5468d5[_0xd81b('0xd')](_['merge']({'app':_0xd81b('0x16'),'appdata':util[_0xd81b('0xa')]('SIP/%s,%s',_0x4d8e7e[_0xd81b('0x17')],_0x34eb73[_0x223515][_0xd81b('0x18')]?_0x34eb73[_0x223515][_0xd81b('0x18')][_0xd81b('0x19')](''):''),'priority':_0x3ed380++},_0x1f3f2c,_0x86dab6));if(_0x34eb73[_0x223515][_0xd81b('0x1a')]){_0x5468d5[_0xd81b('0xd')](_[_0xd81b('0xe')]({'app':_0xd81b('0x1b'),'priority':_0x3ed380++},_0x1f3f2c,_0x86dab6));}}return _0x5468d5;};var getUserApplications=function(_0x1c34c5,_0x285164){var _0x1ff3c6=[_0xd81b('0x1c'),_0xd81b('0x1d'),_0xd81b('0x1e')];var _0x156894={'context':_0x1c34c5[_0xd81b('0x1f')]||'from-sip','exten':_0x285164,'type':'system','isApp':![],'UserId':_0x1c34c5['id']};var _0xc16ad0=[{'app':_0xd81b('0xf'),'appdata':_0xd81b('0x20')}];if(_0x1c34c5['extensionMonitor']&&_[_0xd81b('0x21')](_0x1ff3c6,_0x1c34c5[_0xd81b('0x22')])){_0xc16ad0['push']({'app':_0xd81b('0xf'),'appdata':_0xd81b('0x23')});_0xc16ad0[_0xd81b('0xd')]({'app':_0xd81b('0xf'),'appdata':util[_0xd81b('0xa')](_0xd81b('0x24'),_0x1c34c5[_0xd81b('0x22')])});_0xc16ad0[_0xd81b('0xd')]({'app':_0xd81b('0x25'),'appdata':util[_0xd81b('0xa')](_0xd81b('0x26'),_0x1c34c5[_0xd81b('0x17')])});}else{_0xc16ad0['push']({'app':_0xd81b('0x25'),'appdata':util[_0xd81b('0xa')](_0xd81b('0x27'),_0x1c34c5[_0xd81b('0x17')])});}_0xc16ad0[_0xd81b('0xd')]({'app':_0xd81b('0x28')});for(var _0x3e28dd=0x0;_0x3e28dd<_0xc16ad0[_0xd81b('0x8')];_0x3e28dd++){_0xc16ad0[_0x3e28dd][_0xd81b('0x29')]=_0x3e28dd+0x1;_0xc16ad0[_0x3e28dd]=_['defaults'](_0xc16ad0[_0x3e28dd],_0x156894);}return _0xc16ad0;};var getChanSpyPromise=function(_0x469cc4,_0x4e2eff){return new BPromise(function(_0x5c8aee,_0xb9ff9f){return _0x469cc4[_0xd81b('0x2a')]['findAll']()['then'](function(_0x4093c8){if(_0x4093c8){var _0xf10fe0=getChanSpyApplications(_0x4e2eff,_0x4e2eff[_0xd81b('0x2b')],_0x4093c8);if(_0x4e2eff[_0xd81b('0x2b')]!=_0x4e2eff[_0xd81b('0x17')]){_0xf10fe0=_0xf10fe0[_0xd81b('0x2c')](getChanSpyApplications(_0x4e2eff,_0x4e2eff['name'],_0x4093c8));}return _0x5c8aee(_0xf10fe0);}return _0x5c8aee([]);})[_0xd81b('0x2d')](function(_0x26f629){_0xb9ff9f(_0x26f629);});});};module['exports']=function(_0x56d80b){var _0x165892=_0x56d80b[_0xd81b('0x2e')];return _0x56d80b['define']('User',attributes,{'tableName':'users','charset':_0xd81b('0x2f'),'collate':_0xd81b('0x30'),'hooks':{'beforeCreate':function(_0x1d2f46,_0x1c4cf7,_0xa56339){var _0x12ee8f=typeof _0x1d2f46[_0xd81b('0x31')]==='undefined'?BPromise[_0xd81b('0x32')](null):_0x165892['UserProfile'][_0xd81b('0x33')]({'where':{'id':_0x1d2f46[_0xd81b('0x31')]}});_0x12ee8f[_0xd81b('0x34')](function(_0xcd9e86){if(_0xcd9e86){_0x1d2f46[_0xd81b('0x35')]=_0xcd9e86[_0xd81b('0x35')];}})[_0xd81b('0x34')](function(){_0x1d2f46[_0xd81b('0x36')]();_0x1d2f46[_0xd81b('0x37')](_0xa56339);})[_0xd81b('0x2d')](function(_0x1be4e2){_0xa56339(_0x1be4e2);});},'beforeUpdate':function(_0x3c8371,_0x346038,_0x57bc0c){Promise['resolve']()[_0xd81b('0x34')](function(){if(_0x3c8371[_0xd81b('0x38')](_0xd81b('0x31'))===![])return;return _0x165892['UserProfile'][_0xd81b('0x33')]({'where':{'id':_0x3c8371[_0xd81b('0x31')]}})['then'](function(_0x46f058){if(_0x46f058)_0x3c8371[_0xd81b('0x35')]=_0x46f058['privacyEnabled'];return;});})[_0xd81b('0x34')](function(){if(_0x3c8371['changed'](_0xd81b('0x15'))){_0x3c8371[_0xd81b('0x36')]();return _0x3c8371[_0xd81b('0x37')](_0x57bc0c);}_0x57bc0c();})[_0xd81b('0x2d')](function(_0x573da5){_0x57bc0c(_0x573da5);});},'afterCreate':function(_0x77bec8,_0x3444d4,_0x3e391f){var _0x67fbe5=getUserApplications(_0x77bec8,_0x77bec8[_0xd81b('0x2b')]);if(_0x77bec8[_0xd81b('0x2b')]!=_0x77bec8[_0xd81b('0x17')]){_0x67fbe5=_0x67fbe5['concat'](getUserApplications(_0x77bec8,_0x77bec8[_0xd81b('0x17')]));}return Promise[_0xd81b('0x32')]()[_0xd81b('0x34')](function(){if(!_0x77bec8['userSetting']){return _0x77bec8[_0xd81b('0x39')]({'clientSideLoggingLevel':_0xd81b('0x3a'),'clientSideLoggingEnabled':![]});}})[_0xd81b('0x34')](function(){return _0x165892[_0xd81b('0x3b')][_0xd81b('0x3c')](_0x67fbe5);})['then'](function(){if(_0x77bec8[_0xd81b('0x11')]){return getChanSpyPromise(_0x165892,_0x77bec8);}})[_0xd81b('0x34')](function(_0x448e24){if(_0x448e24&&_0x448e24[_0xd81b('0x8')]){return _0x165892[_0xd81b('0x3b')][_0xd81b('0x3c')](_0x448e24);}})[_0xd81b('0x34')](function(){_0x3e391f();})[_0xd81b('0x2d')](function(_0x4405a8){_0x3e391f(_0x4405a8);});},'afterUpdate':function(_0x3ba339,_0x1e3690,_0x4b8ffc){return BPromise[_0xd81b('0x32')]()[_0xd81b('0x34')](function(){if(_0x3ba339[_0xd81b('0x38')](_0xd81b('0x11'))||_0x3ba339[_0xd81b('0x38')](_0xd81b('0x1f'))){return _0x165892[_0xd81b('0x3b')][_0xd81b('0x3d')]({'where':{'UserId':_0x3ba339['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x3ba339[_0xd81b('0x11')]){return getChanSpyPromise(_0x165892,_0x3ba339)[_0xd81b('0x34')](function(_0x2b1383){if(_0x2b1383&&_0x2b1383[_0xd81b('0x8')]){return _0x165892[_0xd81b('0x3b')][_0xd81b('0x3c')](_0x2b1383);}});}});}})[_0xd81b('0x34')](function(){if(_0x3ba339[_0xd81b('0x38')](_0xd81b('0x22'))||_0x3ba339[_0xd81b('0x38')](_0xd81b('0x1f'))){return _0x165892[_0xd81b('0x3b')]['destroy']({'where':{'UserId':_0x3ba339['id'],'type':_0xd81b('0x9'),'ChanSpyId':null}})[_0xd81b('0x34')](function(){var _0x371730=getUserApplications(_0x3ba339,_0x3ba339[_0xd81b('0x2b')]);if(_0x3ba339[_0xd81b('0x2b')]!=_0x3ba339[_0xd81b('0x17')]){_0x371730=_0x371730[_0xd81b('0x2c')](getUserApplications(_0x3ba339,_0x3ba339[_0xd81b('0x17')]));}return _0x165892[_0xd81b('0x3b')]['bulkCreate'](_0x371730);});}})[_0xd81b('0x34')](function(){_0x4b8ffc();})[_0xd81b('0x2d')](function(_0x1c00b5){_0x4b8ffc(_0x1c00b5);});},'afterDestroy':function(_0x165ea3){return _0x165892['VoiceExtension'][_0xd81b('0x3d')]({'where':{'UserId':_0x165ea3['id'],'type':_0xd81b('0x9')}});}},'instanceMethods':{'authenticate':function(_0x15030b,_0xe874b6){if(!_0xe874b6){return this[_0xd81b('0x15')]===this[_0xd81b('0x3e')](_0x15030b);}var _0x1a2a34=this;this[_0xd81b('0x3e')](_0x15030b,function(_0x133a76,_0x49cba6){if(_0x133a76){_0xe874b6(_0x133a76);}if(_0x1a2a34['password']===_0x49cba6){_0xe874b6(null,!![]);}else{_0xe874b6(null,![]);}});},'makeSalt':function(_0x328fd7,_0x2872d3){var _0x9ad62=0x10;if(typeof arguments[0x0]===_0xd81b('0x3f')){_0x2872d3=arguments[0x0];_0x328fd7=_0x9ad62;}else if(typeof arguments[0x1]===_0xd81b('0x3f')){_0x2872d3=arguments[0x1];}else{throw new Error(_0xd81b('0x40'));}if(!_0x328fd7){_0x328fd7=_0x9ad62;}return crypto[_0xd81b('0x41')](_0x328fd7,function(_0x1f2e10,_0x4e039e){if(_0x1f2e10){_0x2872d3(_0x1f2e10);}return _0x2872d3(null,_0x4e039e[_0xd81b('0x42')](_0xd81b('0x43')));});},'encryptPassword':function(_0x1b523c,_0x3d171a){if(!_0x1b523c||!this[_0xd81b('0x44')]){return _0x3d171a?_0x3d171a(null):null;}var _0x59b13b=0x2710;var _0x647c56=0x40;var _0x44e03b=Buffer['from'](this[_0xd81b('0x44')],_0xd81b('0x43'));if(!_0x3d171a){return crypto[_0xd81b('0x45')](_0x1b523c,_0x44e03b,_0x59b13b,_0x647c56,_0xd81b('0x46'))[_0xd81b('0x42')](_0xd81b('0x43'));}return crypto[_0xd81b('0x47')](_0x1b523c,_0x44e03b,_0x59b13b,_0x647c56,_0xd81b('0x46'),function(_0x3ed626,_0x23bbc5){if(_0x3ed626){_0x3d171a(_0x3ed626);}return _0x3d171a(null,_0x23bbc5[_0xd81b('0x42')]('base64'));});},'updatePassword':function(_0x285e82){if(!this['password']){return _0x285e82(null);}if(!validatePresenceOf(this[_0xd81b('0x15')])&&authTypes[_0xd81b('0x48')](this[_0xd81b('0x49')])===-0x1){_0x285e82(new Error(_0xd81b('0x4a')));}var _0x34d2a2=this;this[_0xd81b('0x4b')](function(_0x5c196a,_0x2d978d){if(_0x5c196a){return _0x285e82(_0x5c196a);}_0x34d2a2[_0xd81b('0x44')]=_0x2d978d;_0x34d2a2['encryptPassword'](_0x34d2a2['password'],function(_0x470d40,_0x59e018){if(_0x470d40){_0x285e82(_0x470d40);}_0x34d2a2[_0xd81b('0x15')]=_0x59e018;_0x285e82(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xd81b('0x17')]+_0xd81b('0x4c')+this[_0xd81b('0x15')]);return this['md5secret'];},'getRealtimeData':function(){var _0x27415d={'id':this['id']};var _0x10ed99=jayson['client'][_0xd81b('0x4d')]({'port':0x232a});var _0x108aaf=jayson['client'][_0xd81b('0x4d')]({'port':0x232c});var _0x5e1cd7={};var _0x3c9264={};return _0x10ed99[_0xd81b('0x4e')](_0xd81b('0x4f'),_0x27415d)[_0xd81b('0x34')](function(_0x4add79){if(_0x4add79[_0xd81b('0x3a')]){throw new Error(_0xd81b('0x50'));}_0x5e1cd7=_0x4add79[_0xd81b('0x51')];return _0x108aaf[_0xd81b('0x4e')](_0xd81b('0x4f'),_0x27415d);})['then'](function(_0x3d278d){if(_0x3d278d[_0xd81b('0x3a')]){throw new Error(_0xd81b('0x52'));}_0x3c9264=_0x3d278d[_0xd81b('0x51')];var _0x1bdf37=_[_0xd81b('0xe')]({},_0x5e1cd7,_0x3c9264);return _0x1bdf37;})[_0xd81b('0x2d')](function(_0x49f90a){throw _0x49f90a;});},'unpause':function(_0x57f0fb,_0x5de22d=_0xd81b('0x53')){var _0x12b0bf=this;var _0x37507e={};return Promise[_0xd81b('0x32')]()[_0xd81b('0x34')](function(){if(!_0x57f0fb||_0x57f0fb===_0xd81b('0x54')&&_0x5de22d===_0xd81b('0x53')){var _0x5afecf=jayson[_0xd81b('0x55')][_0xd81b('0x4d')]({'port':0x232a});return _0x5afecf[_0xd81b('0x4e')](_0xd81b('0x56'),{'id':_0x12b0bf['id'],'name':_0x12b0bf[_0xd81b('0x17')],'pause':![]})[_0xd81b('0x34')](function(_0xb5fca8){if(_0xb5fca8['error']){throw new Error(util[_0xd81b('0xa')](_0xd81b('0x57'),_0x12b0bf['id'],_0x12b0bf[_0xd81b('0x17')]));}return _0xb5fca8[_0xd81b('0x51')][_0xd81b('0x58')];});}})[_0xd81b('0x34')](function(){if(!_0x57f0fb||_0x57f0fb===_0xd81b('0x54')){return _0x165892[_0xd81b('0x59')][_0xd81b('0x5a')]({'paused':0x0},{'where':{'UserId':_0x12b0bf['id']},'individualHooks':!![]});}})[_0xd81b('0x34')](function(){var _0x462d12=!_0x57f0fb?_0xd81b('0x5b'):'findOne';var _0xc45841={'membername':_0x12b0bf['name'],'type':_0xd81b('0x5c'),'exitAt':null};if(_0x57f0fb){_0xc45841[_0xd81b('0x5d')]=_0x57f0fb;}return _0x165892[_0xd81b('0x5e')][_0x462d12]({'where':_0xc45841});})[_0xd81b('0x34')](function(_0xb94a69){if(_0xb94a69){var _0xbde67e=Array[_0xd81b('0x5f')](_0xb94a69)?_0xb94a69:[_0xb94a69];var _0x18f2ac=_0xbde67e[_0xd81b('0x60')](function(_0x36fb7a){return _0x36fb7a['update']({'exitAt':moment()[_0xd81b('0xa')](_0xd81b('0x61')),'data2':_0x5de22d});});return Promise[_0xd81b('0x62')](_0x18f2ac);}})[_0xd81b('0x34')](function(){if(!_0x57f0fb){_0x37507e[_0xd81b('0x63')]=![];_0x37507e['mailPause']=![];_0x37507e['chatPause']=![];_0x37507e[_0xd81b('0x64')]=![];_0x37507e[_0xd81b('0x65')]=![];_0x37507e[_0xd81b('0x66')]=![];_0x37507e[_0xd81b('0x67')]=![];}else{_0x37507e[_0x57f0fb+_0xd81b('0x68')]=![];}return _0x12b0bf[_0xd81b('0x69')]();})[_0xd81b('0x34')](function(_0x539132){var _0x2190df=require(_0xd81b('0x6a'));var _0x9fd6d=_0x2190df[_0xd81b('0x6b')]();_0x9fd6d[_0xd81b('0x6c')](function(_0x21d039){var _0x1e0da3=_0x21d039+_0xd81b('0x6d');_0x12b0bf[_0xd81b('0x6e')]([_0x1e0da3],_0x539132[_0x1e0da3]);});return _0x12b0bf['update'](_0x37507e);})[_0xd81b('0x2d')](function(_0x34d6dc){throw _0x34d6dc;});}}});};
\ No newline at end of file
index 072ffa8..17878aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1fc=['mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','callysquare','concat','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','defaults','redis','register','findAll','options','where','attributes','limit','model','include','map','info','debug','stringify','catch','error','GetUser','message','ShowUser','find','raw','then','PauseUser','User','name','internal','interface','format','UserVoiceQueueRt','MemberReport','PAUSE','length','getChannels','forEach','push','isNil','SIP/%s','type','DEFAULT\x20PAUSE','role','body','bulkCreate','update','YYYY-MM-DD\x20HH:mm:ss','UnpauseUser','resolve','channel','isValidChannel','online','mailPause','smsPause','whatsappPause','pauseType','lastPauseAt','unpause','system','LogoutUser','findOne','destroy','all','LoginUser'];(function(_0x9b3efc,_0x577a0d){var _0x200f05=function(_0x15ad7c){while(--_0x15ad7c){_0x9b3efc['push'](_0x9b3efc['shift']());}};_0x200f05(++_0x577a0d);}(_0xb1fc,0xb3));var _0xcb1f=function(_0x518125,_0x42310c){_0x518125=_0x518125-0x0;var _0x20c282=_0xb1fc[_0x518125];return _0x20c282;};'use strict';var _=require('lodash');var util=require(_0xcb1f('0x0'));var moment=require(_0xcb1f('0x1'));var BPromise=require(_0xcb1f('0x2'));var Redis=require(_0xcb1f('0x3'));var db=require(_0xcb1f('0x4'))['db'];var utils=require(_0xcb1f('0x5'));var logger=require(_0xcb1f('0x6'))(_0xcb1f('0x7'));var config=require(_0xcb1f('0x8'));config['redis']=_[_0xcb1f('0x9')](config[_0xcb1f('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./user.socket')[_0xcb1f('0xb')](socket);exports['GetUser']=function(_0x2eec64){var _0x968760=this;return new Promise(function(_0x3ca038,_0x46115b){return db['User'][_0xcb1f('0xc')]({'raw':_0x2eec64[_0xcb1f('0xd')]?_0x2eec64[_0xcb1f('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x2eec64[_0xcb1f('0xd')]?_0x2eec64[_0xcb1f('0xd')][_0xcb1f('0xe')]||null:null,'attributes':_0x2eec64[_0xcb1f('0xd')]?_0x2eec64[_0xcb1f('0xd')][_0xcb1f('0xf')]||null:null,'limit':_0x2eec64[_0xcb1f('0xd')]?_0x2eec64[_0xcb1f('0xd')][_0xcb1f('0x10')]||null:null,'include':_0x2eec64[_0xcb1f('0xd')]?_0x2eec64[_0xcb1f('0xd')]['include']?_['map'](_0x2eec64[_0xcb1f('0xd')]['include'],function(_0x125c49){return{'model':db[_0x125c49[_0xcb1f('0x11')]],'as':_0x125c49['as'],'attributes':_0x125c49[_0xcb1f('0xf')],'include':_0x125c49[_0xcb1f('0x12')]?_[_0xcb1f('0x13')](_0x125c49[_0xcb1f('0x12')],function(_0x6aa7ab){return{'model':db[_0x6aa7ab['model']],'as':_0x6aa7ab['as'],'attributes':_0x6aa7ab['attributes'],'include':_0x6aa7ab[_0xcb1f('0x12')]?_[_0xcb1f('0x13')](_0x6aa7ab[_0xcb1f('0x12')],function(_0x223fa5){return{'model':db[_0x223fa5[_0xcb1f('0x11')]],'as':_0x223fa5['as'],'attributes':_0x223fa5[_0xcb1f('0xf')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x116613){logger[_0xcb1f('0x14')]('GetUser',_0x2eec64);logger[_0xcb1f('0x15')]('GetUser',_0x2eec64,JSON[_0xcb1f('0x16')](_0x116613));_0x3ca038(_0x116613);})[_0xcb1f('0x17')](function(_0x4b4609){logger[_0xcb1f('0x18')](_0xcb1f('0x19'),_0x4b4609[_0xcb1f('0x1a')],_0x2eec64);_0x46115b(_0x968760[_0xcb1f('0x18')](0x1f4,_0x4b4609[_0xcb1f('0x1a')]));});});};exports[_0xcb1f('0x1b')]=function(_0x1b8265){var _0x2a62ad=this;return new Promise(function(_0x11a450,_0x3af629){return db['User'][_0xcb1f('0x1c')]({'raw':_0x1b8265[_0xcb1f('0xd')]?_0x1b8265['options'][_0xcb1f('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b8265[_0xcb1f('0xd')]?_0x1b8265['options'][_0xcb1f('0xe')]||null:null,'attributes':_0x1b8265[_0xcb1f('0xd')]?_0x1b8265['options'][_0xcb1f('0xf')]||null:null,'include':_0x1b8265['options']?_0x1b8265[_0xcb1f('0xd')]['include']?_['map'](_0x1b8265[_0xcb1f('0xd')]['include'],function(_0x2b6db0){return{'model':db[_0x2b6db0['model']],'as':_0x2b6db0['as'],'attributes':_0x2b6db0[_0xcb1f('0xf')],'include':_0x2b6db0[_0xcb1f('0x12')]?_[_0xcb1f('0x13')](_0x2b6db0[_0xcb1f('0x12')],function(_0x5f279a){return{'model':db[_0x5f279a[_0xcb1f('0x11')]],'as':_0x5f279a['as'],'attributes':_0x5f279a[_0xcb1f('0xf')],'include':_0x5f279a[_0xcb1f('0x12')]?_[_0xcb1f('0x13')](_0x5f279a[_0xcb1f('0x12')],function(_0x3303a5){return{'model':db[_0x3303a5[_0xcb1f('0x11')]],'as':_0x3303a5['as'],'attributes':_0x3303a5['attributes']};}):[]};}):[]};}):[]:[]})[_0xcb1f('0x1e')](function(_0x4b0e0b){logger[_0xcb1f('0x14')](_0xcb1f('0x1b'),_0x1b8265);logger[_0xcb1f('0x15')]('ShowUser',_0x1b8265,JSON[_0xcb1f('0x16')](_0x4b0e0b));_0x11a450(_0x4b0e0b);})[_0xcb1f('0x17')](function(_0x1560a1){logger[_0xcb1f('0x18')](_0xcb1f('0x1b'),_0x1560a1[_0xcb1f('0x1a')],_0x1b8265);_0x3af629(_0x2a62ad[_0xcb1f('0x18')](0x1f4,_0x1560a1[_0xcb1f('0x1a')]));});});};exports[_0xcb1f('0x1f')]=function(_0x250849){var _0x5c922b;return db[_0xcb1f('0x20')][_0xcb1f('0x1c')]({'where':_0x250849[_0xcb1f('0xd')]['where']||{},'attributes':['id',_0xcb1f('0x21'),'role',_0xcb1f('0x22'),_0xcb1f('0x23')]})[_0xcb1f('0x1e')](function(_0x544600){if(!_0x544600){throw new Error(util[_0xcb1f('0x24')]('User\x20with\x20id\x20%s\x20not\x20found',_0x250849['params']['id']));}_0x5c922b=_0x544600;return db[_0xcb1f('0x25')]['update']({'paused':0x1},{'where':{'UserId':_0x5c922b['id']},'individualHooks':!![]});})[_0xcb1f('0x1e')](function(){return db[_0xcb1f('0x26')]['findAll']({'where':{'membername':_0x5c922b['name'],'type':_0xcb1f('0x27'),'exitAt':null}});})[_0xcb1f('0x1e')](function(_0x95b180){if(_0x95b180&&_0x95b180['length']){var _0x3f1734=moment()[_0xcb1f('0x24')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x52fc32=0x0,_0xb5e5e2=_0x95b180[_0xcb1f('0x28')];_0x52fc32<_0xb5e5e2;_0x52fc32++){_0x95b180[_0x52fc32]['updateAttributes']({'exitAt':_0x3f1734});}}})[_0xcb1f('0x1e')](function(){var _0x5e1b0a=[];var _0x28c5cc=utils[_0xcb1f('0x29')]();_0x28c5cc[_0xcb1f('0x2a')](function(_0x57ecce){_0x5e1b0a[_0xcb1f('0x2b')]({'channel':_0x57ecce,'membername':_0x5c922b['name'],'interface':_[_0xcb1f('0x2c')](_0x5c922b[_0xcb1f('0x23')])?util[_0xcb1f('0x24')](_0xcb1f('0x2d'),_0x5c922b[_0xcb1f('0x21')]):_0x5c922b['interface'],'type':'PAUSE','enterAt':moment()[_0xcb1f('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x250849['body'][_0xcb1f('0x2e')]||_0xcb1f('0x2f'),'role':_0x5c922b[_0xcb1f('0x30')],'internal':_0x5c922b['internal'],'uniqueid':_0x250849[_0xcb1f('0x31')]['uniqueid']||null});});return db[_0xcb1f('0x26')][_0xcb1f('0x32')](_0x5e1b0a,{'individualHooks':!![]});})[_0xcb1f('0x1e')](function(){return _0x5c922b[_0xcb1f('0x33')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x250849[_0xcb1f('0x31')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xcb1f('0x24')](_0xcb1f('0x34'))});})['catch'](function(_0x314a63){throw _0x314a63;});};exports[_0xcb1f('0x35')]=function(_0x283902){return Promise[_0xcb1f('0x36')]()[_0xcb1f('0x1e')](function(){if(_0x283902[_0xcb1f('0x31')][_0xcb1f('0x37')]&&!utils[_0xcb1f('0x38')](_0x283902[_0xcb1f('0x31')][_0xcb1f('0x37')])){throw new Error(util['format']('Channel\x20parameter\x20%s\x20is\x20invalid',_0x283902[_0xcb1f('0x31')][_0xcb1f('0x37')]));}return db['User']['findOne']({'where':_0x283902[_0xcb1f('0xd')][_0xcb1f('0xe')]||{},'attributes':['id',_0xcb1f('0x21'),'role',_0xcb1f('0x22'),_0xcb1f('0x23'),_0xcb1f('0x39'),'voicePause',_0xcb1f('0x3a'),'chatPause','faxPause','openchannelPause',_0xcb1f('0x3b'),_0xcb1f('0x3c'),_0xcb1f('0x3d'),_0xcb1f('0x3e')]});})['then'](function(_0x4e1c5f){if(!_0x4e1c5f){throw new Error(util[_0xcb1f('0x24')]('User\x20with\x20id\x20%s\x20not\x20found',_0x283902['params']['id']));}return _0x4e1c5f[_0xcb1f('0x3f')](_0x283902[_0xcb1f('0x31')][_0xcb1f('0x37')],_0xcb1f('0x40'));})['catch'](function(_0x854615){throw _0x854615;});};exports[_0xcb1f('0x41')]=function(_0x567d22){var _0x226f38=this;return new Promise(function(_0x42b3c6,_0xa667e9){var _0xdae78;return db[_0xcb1f('0x20')][_0xcb1f('0x42')]({'where':_0x567d22[_0xcb1f('0xd')][_0xcb1f('0xe')]||{},'attributes':['id',_0xcb1f('0x21')]})[_0xcb1f('0x1e')](function(_0x4525d2){if(_0x4525d2){_0xdae78=_0x4525d2;return db[_0xcb1f('0x25')][_0xcb1f('0x43')]({'where':{'membername':_0xdae78[_0xcb1f('0x21')]},'individualHooks':!![]});}})[_0xcb1f('0x1e')](function(){if(_0xdae78){return db[_0xcb1f('0x26')][_0xcb1f('0xc')]({'where':{'membername':_0xdae78[_0xcb1f('0x21')],'exitAt':null}});}})['then'](function(_0x39668e){if(_0xdae78){if(_0x39668e&&_0x39668e[_0xcb1f('0x28')]){var _0x48f84c=[];_0x39668e[_0xcb1f('0x2a')](function(_0x3303a0){_0x48f84c['push'](_0x3303a0[_0xcb1f('0x33')]({'exitAt':moment()[_0xcb1f('0x24')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xcb1f('0x44')](_0x48f84c);}}})[_0xcb1f('0x1e')](function(){if(_0xdae78){return _0xdae78[_0xcb1f('0x33')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xcb1f('0x1e')](function(_0x7efe08){_0x42b3c6(_0x7efe08);})[_0xcb1f('0x17')](function(_0x46194c){_0xa667e9(_0x226f38[_0xcb1f('0x18')](0x1f4,_0x46194c[_0xcb1f('0x1a')]));});});};exports[_0xcb1f('0x45')]=function(_0x5314c5){var _0x3f762d=this;return new Promise(function(_0x5eb7b3,_0x4949a2){var _0x17b493;var _0x2764d6;var _0x45fc22;var _0x2e5851;return db[_0xcb1f('0x20')][_0xcb1f('0x42')]({'where':_0x5314c5[_0xcb1f('0xd')][_0xcb1f('0xe')]||{},'attributes':['id',_0xcb1f('0x21'),_0xcb1f('0x30'),_0xcb1f('0x46'),_0xcb1f('0x47'),_0xcb1f('0x22'),_0xcb1f('0x48'),_0xcb1f('0x23')]})[_0xcb1f('0x1e')](function(_0x3103f0){if(_0x3103f0){_0x17b493=_0x3103f0;_0x2e5851=_0x5314c5[_0xcb1f('0x31')]['interface']?_0x5314c5[_0xcb1f('0x31')]['interface']:util[_0xcb1f('0x24')](_0xcb1f('0x2d'),_0x17b493[_0xcb1f('0x21')]);return db[_0xcb1f('0x20')][_0xcb1f('0x49')]({'where':{'role':_0xcb1f('0x4a'),'online':!![],'id':{'$ne':_0x17b493['id']}}});}})[_0xcb1f('0x1e')](function(_0x1ee0b8){if(_0x1ee0b8){_0x45fc22=_0x1ee0b8;return require(_0xcb1f('0x4b'))[_0xcb1f('0x4c')]();}})[_0xcb1f('0x1e')](function(_0x462daf){if(_0x462daf&&_0x462daf[_0xcb1f('0x4d')]&&_0x45fc22>=_0x462daf[_0xcb1f('0x4d')]){throw new Error(_0xcb1f('0x4e'));}})[_0xcb1f('0x1e')](function(){if(_0x17b493){return db[_0xcb1f('0x25')][_0xcb1f('0x43')]({'where':{'membername':_0x17b493[_0xcb1f('0x21')]},'individualHooks':!![]});}})[_0xcb1f('0x1e')](function(){if(_0x17b493){return _0x17b493['getVoiceQueues']({'raw':!![]});}})[_0xcb1f('0x1e')](function(_0x3e6b66){if(_0x17b493){if(_0x3e6b66){var _0x4cb8f1=[];_0x2764d6=_0x3e6b66;if(_0x2764d6[_0xcb1f('0x28')]){for(var _0x5ef475=0x0;_0x5ef475<_0x2764d6[_0xcb1f('0x28')];_0x5ef475++){_0x4cb8f1[_0xcb1f('0x2b')](db[_0xcb1f('0x25')][_0xcb1f('0x4f')]({'membername':_0x17b493[_0xcb1f('0x21')],'UserId':_0x17b493['id'],'queue_name':_0x2764d6[_0x5ef475][_0xcb1f('0x21')],'VoiceQueueId':_0x2764d6[_0x5ef475]['id'],'interface':_0x2e5851,'paused':_0x17b493[_0xcb1f('0x48')]||![],'penalty':_0x2764d6[_0x5ef475][_0xcb1f('0x50')]||0x0}));}return BPromise[_0xcb1f('0x44')](_0x4cb8f1);}}}})['then'](function(){if(_0x17b493){return db[_0xcb1f('0x26')][_0xcb1f('0xc')]({'where':{'membername':_0x17b493[_0xcb1f('0x21')],'exitAt':null}});}})[_0xcb1f('0x1e')](function(_0xf2bbf3){if(_0x17b493){if(_0xf2bbf3&&_0xf2bbf3[_0xcb1f('0x28')]){var _0x5b3479=[];_0xf2bbf3[_0xcb1f('0x2a')](function(_0x2bdbd1){_0x5b3479[_0xcb1f('0x2b')](_0x2bdbd1['update']({'exitAt':moment()[_0xcb1f('0x24')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xcb1f('0x44')](_0x5b3479);}}})[_0xcb1f('0x1e')](function(){if(_0x17b493){var _0x4dacd0=[];var _0x252cb8=[];var _0x86c78b=utils[_0xcb1f('0x29')]();var _0x1ff314={'membername':_0x17b493[_0xcb1f('0x21')],'interface':_0x2e5851,'enterAt':moment()[_0xcb1f('0x24')](_0xcb1f('0x34')),'role':_0x17b493['role'],'internal':_0x17b493[_0xcb1f('0x22')]};_0x86c78b['forEach'](function(_0x18a48d){_0x4dacd0['push'](_['merge']({'channel':_0x18a48d,'type':'LOGIN','data1':_0xcb1f('0x51'),'data2':_0x2e5851},_0x1ff314));if(_0x17b493[_0xcb1f('0x48')]){_0x252cb8[_0xcb1f('0x2b')](_['merge']({'channel':_0x18a48d,'type':_0xcb1f('0x27'),'data1':'LOGININPAUSE'},_0x1ff314));}});return db['MemberReport'][_0xcb1f('0x32')](_0x4dacd0[_0xcb1f('0x52')](_0x252cb8),{'individualHooks':!![]});}})[_0xcb1f('0x1e')](function(){if(_0x17b493){return _0x17b493[_0xcb1f('0x33')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x17b493[_0xcb1f('0x48')]||![],'mailPause':_0x17b493[_0xcb1f('0x48')]||![],'chatPause':_0x17b493['loginInPause']||![],'faxPause':_0x17b493[_0xcb1f('0x48')]||![],'smsPause':_0x17b493[_0xcb1f('0x48')]||![],'openchannelPause':_0x17b493[_0xcb1f('0x48')]||![],'pauseType':_0x17b493[_0xcb1f('0x48')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xcb1f('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x2e5851});}})['then'](function(_0x5609ce){_0x5eb7b3(_0x5609ce);})[_0xcb1f('0x17')](function(_0x967461){_0x4949a2(_0x3f762d['error'](0x1f4,_0x967461[_0xcb1f('0x1a')]));});});};
\ No newline at end of file
+var _0xe339=['interface','User\x20with\x20id\x20%s\x20not\x20found','UserVoiceQueueRt','update','MemberReport','name','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','isNil','SIP/%s','body','type','bulkCreate','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','online','mailPause','chatPause','faxPause','smsPause','whatsappPause','pauseType','params','system','LogoutUser','destroy','forEach','push','LoginUser','findOne','mobile','phone','count','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','loginInPause','UserVoiceQueue.penalty','all','callysquare','merge','LOGININPAUSE','concat','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','redis','defaults','localhost','./user.socket','register','GetUser','User','findAll','options','where','attributes','include','map','model','then','info','debug','stringify','catch','error','message','ShowUser','PauseUser','find','role','internal'];(function(_0x463186,_0x487b9f){var _0x24b5af=function(_0x2a3df3){while(--_0x2a3df3){_0x463186['push'](_0x463186['shift']());}};_0x24b5af(++_0x487b9f);}(_0xe339,0x87));var _0x9e33=function(_0x4ec69a,_0x2826de){_0x4ec69a=_0x4ec69a-0x0;var _0x280921=_0xe339[_0x4ec69a];return _0x280921;};'use strict';var _=require(_0x9e33('0x0'));var util=require('util');var moment=require(_0x9e33('0x1'));var BPromise=require('bluebird');var Redis=require(_0x9e33('0x2'));var db=require(_0x9e33('0x3'))['db'];var utils=require(_0x9e33('0x4'));var logger=require(_0x9e33('0x5'))(_0x9e33('0x6'));var config=require('../../config/environment');config[_0x9e33('0x7')]=_[_0x9e33('0x8')](config[_0x9e33('0x7')],{'host':_0x9e33('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9e33('0x7')]));require(_0x9e33('0xa'))[_0x9e33('0xb')](socket);exports[_0x9e33('0xc')]=function(_0x84e306){var _0x5975c7=this;return new Promise(function(_0x320cb4,_0x13a77d){return db[_0x9e33('0xd')][_0x9e33('0xe')]({'raw':_0x84e306[_0x9e33('0xf')]?_0x84e306[_0x9e33('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x84e306[_0x9e33('0xf')]?_0x84e306[_0x9e33('0xf')][_0x9e33('0x10')]||null:null,'attributes':_0x84e306[_0x9e33('0xf')]?_0x84e306[_0x9e33('0xf')][_0x9e33('0x11')]||null:null,'limit':_0x84e306['options']?_0x84e306[_0x9e33('0xf')]['limit']||null:null,'include':_0x84e306['options']?_0x84e306[_0x9e33('0xf')][_0x9e33('0x12')]?_[_0x9e33('0x13')](_0x84e306[_0x9e33('0xf')][_0x9e33('0x12')],function(_0x2ef8dc){return{'model':db[_0x2ef8dc['model']],'as':_0x2ef8dc['as'],'attributes':_0x2ef8dc[_0x9e33('0x11')],'include':_0x2ef8dc[_0x9e33('0x12')]?_[_0x9e33('0x13')](_0x2ef8dc[_0x9e33('0x12')],function(_0x265f32){return{'model':db[_0x265f32[_0x9e33('0x14')]],'as':_0x265f32['as'],'attributes':_0x265f32[_0x9e33('0x11')],'include':_0x265f32[_0x9e33('0x12')]?_[_0x9e33('0x13')](_0x265f32[_0x9e33('0x12')],function(_0x10e2b3){return{'model':db[_0x10e2b3['model']],'as':_0x10e2b3['as'],'attributes':_0x10e2b3['attributes']};}):[]};}):[]};}):[]:[]})[_0x9e33('0x15')](function(_0x2263ff){logger[_0x9e33('0x16')]('GetUser',_0x84e306);logger[_0x9e33('0x17')]('GetUser',_0x84e306,JSON[_0x9e33('0x18')](_0x2263ff));_0x320cb4(_0x2263ff);})[_0x9e33('0x19')](function(_0x6772b3){logger[_0x9e33('0x1a')](_0x9e33('0xc'),_0x6772b3[_0x9e33('0x1b')],_0x84e306);_0x13a77d(_0x5975c7[_0x9e33('0x1a')](0x1f4,_0x6772b3[_0x9e33('0x1b')]));});});};exports[_0x9e33('0x1c')]=function(_0x51924a){var _0x35ea73=this;return new Promise(function(_0x250237,_0x196e4b){return db[_0x9e33('0xd')]['find']({'raw':_0x51924a[_0x9e33('0xf')]?_0x51924a['options']['raw']===undefined?!![]:![]:!![],'where':_0x51924a[_0x9e33('0xf')]?_0x51924a[_0x9e33('0xf')][_0x9e33('0x10')]||null:null,'attributes':_0x51924a['options']?_0x51924a['options']['attributes']||null:null,'include':_0x51924a[_0x9e33('0xf')]?_0x51924a[_0x9e33('0xf')][_0x9e33('0x12')]?_[_0x9e33('0x13')](_0x51924a[_0x9e33('0xf')][_0x9e33('0x12')],function(_0x501df1){return{'model':db[_0x501df1[_0x9e33('0x14')]],'as':_0x501df1['as'],'attributes':_0x501df1['attributes'],'include':_0x501df1[_0x9e33('0x12')]?_[_0x9e33('0x13')](_0x501df1['include'],function(_0x3ad7fb){return{'model':db[_0x3ad7fb[_0x9e33('0x14')]],'as':_0x3ad7fb['as'],'attributes':_0x3ad7fb[_0x9e33('0x11')],'include':_0x3ad7fb['include']?_['map'](_0x3ad7fb['include'],function(_0x364135){return{'model':db[_0x364135['model']],'as':_0x364135['as'],'attributes':_0x364135[_0x9e33('0x11')]};}):[]};}):[]};}):[]:[]})[_0x9e33('0x15')](function(_0x295c0a){logger[_0x9e33('0x16')](_0x9e33('0x1c'),_0x51924a);logger[_0x9e33('0x17')]('ShowUser',_0x51924a,JSON[_0x9e33('0x18')](_0x295c0a));_0x250237(_0x295c0a);})['catch'](function(_0x5707fa){logger['error'](_0x9e33('0x1c'),_0x5707fa[_0x9e33('0x1b')],_0x51924a);_0x196e4b(_0x35ea73[_0x9e33('0x1a')](0x1f4,_0x5707fa[_0x9e33('0x1b')]));});});};exports[_0x9e33('0x1d')]=function(_0x3df31e){var _0x366deb;return db[_0x9e33('0xd')][_0x9e33('0x1e')]({'where':_0x3df31e[_0x9e33('0xf')][_0x9e33('0x10')]||{},'attributes':['id','name',_0x9e33('0x1f'),_0x9e33('0x20'),_0x9e33('0x21')]})[_0x9e33('0x15')](function(_0x4782d4){if(!_0x4782d4){throw new Error(util['format'](_0x9e33('0x22'),_0x3df31e['params']['id']));}_0x366deb=_0x4782d4;return db[_0x9e33('0x23')][_0x9e33('0x24')]({'paused':0x1},{'where':{'UserId':_0x366deb['id']},'individualHooks':!![]});})['then'](function(){return db[_0x9e33('0x25')][_0x9e33('0xe')]({'where':{'membername':_0x366deb[_0x9e33('0x26')],'type':_0x9e33('0x27'),'exitAt':null}});})['then'](function(_0x4f8da5){if(_0x4f8da5&&_0x4f8da5['length']){var _0x43623e=moment()[_0x9e33('0x28')](_0x9e33('0x29'));for(var _0x4100d3=0x0,_0x20e3d8=_0x4f8da5[_0x9e33('0x2a')];_0x4100d3<_0x20e3d8;_0x4100d3++){_0x4f8da5[_0x4100d3][_0x9e33('0x2b')]({'exitAt':_0x43623e});}}})[_0x9e33('0x15')](function(){var _0x568806=[];var _0x5a8861=utils[_0x9e33('0x2c')]();_0x5a8861['forEach'](function(_0x492892){_0x568806['push']({'channel':_0x492892,'membername':_0x366deb[_0x9e33('0x26')],'interface':_[_0x9e33('0x2d')](_0x366deb[_0x9e33('0x21')])?util[_0x9e33('0x28')](_0x9e33('0x2e'),_0x366deb[_0x9e33('0x26')]):_0x366deb['interface'],'type':_0x9e33('0x27'),'enterAt':moment()[_0x9e33('0x28')](_0x9e33('0x29')),'data1':_0x3df31e[_0x9e33('0x2f')][_0x9e33('0x30')]||'DEFAULT\x20PAUSE','role':_0x366deb[_0x9e33('0x1f')],'internal':_0x366deb[_0x9e33('0x20')],'uniqueid':_0x3df31e[_0x9e33('0x2f')]['uniqueid']||null});});return db['MemberReport'][_0x9e33('0x31')](_0x568806,{'individualHooks':!![]});})[_0x9e33('0x15')](function(){return _0x366deb[_0x9e33('0x24')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3df31e[_0x9e33('0x2f')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x9e33('0x28')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x9e33('0x19')](function(_0x3ae29c){throw _0x3ae29c;});};exports['UnpauseUser']=function(_0xd07f3b){return Promise[_0x9e33('0x32')]()[_0x9e33('0x15')](function(){if(_0xd07f3b[_0x9e33('0x2f')][_0x9e33('0x33')]&&!utils[_0x9e33('0x34')](_0xd07f3b[_0x9e33('0x2f')][_0x9e33('0x33')])){throw new Error(util['format'](_0x9e33('0x35'),_0xd07f3b[_0x9e33('0x2f')][_0x9e33('0x33')]));}return db[_0x9e33('0xd')]['findOne']({'where':_0xd07f3b[_0x9e33('0xf')][_0x9e33('0x10')]||{},'attributes':['id',_0x9e33('0x26'),'role','internal',_0x9e33('0x21'),_0x9e33('0x36'),'voicePause',_0x9e33('0x37'),_0x9e33('0x38'),_0x9e33('0x39'),'openchannelPause',_0x9e33('0x3a'),_0x9e33('0x3b'),_0x9e33('0x3c'),'lastPauseAt']});})['then'](function(_0x417f09){if(!_0x417f09){throw new Error(util[_0x9e33('0x28')](_0x9e33('0x22'),_0xd07f3b[_0x9e33('0x3d')]['id']));}return _0x417f09['unpause'](_0xd07f3b[_0x9e33('0x2f')][_0x9e33('0x33')],_0x9e33('0x3e'));})['catch'](function(_0x31782d){throw _0x31782d;});};exports[_0x9e33('0x3f')]=function(_0x4d4062){var _0x4929c7=this;return new Promise(function(_0x338c9a,_0x442703){var _0x4c8b88;return db['User']['findOne']({'where':_0x4d4062[_0x9e33('0xf')][_0x9e33('0x10')]||{},'attributes':['id',_0x9e33('0x26')]})['then'](function(_0x480007){if(_0x480007){_0x4c8b88=_0x480007;return db[_0x9e33('0x23')][_0x9e33('0x40')]({'where':{'membername':_0x4c8b88[_0x9e33('0x26')]},'individualHooks':!![]});}})[_0x9e33('0x15')](function(){if(_0x4c8b88){return db[_0x9e33('0x25')][_0x9e33('0xe')]({'where':{'membername':_0x4c8b88[_0x9e33('0x26')],'exitAt':null}});}})[_0x9e33('0x15')](function(_0x4bb0b5){if(_0x4c8b88){if(_0x4bb0b5&&_0x4bb0b5[_0x9e33('0x2a')]){var _0x4fd4df=[];_0x4bb0b5[_0x9e33('0x41')](function(_0x441849){_0x4fd4df[_0x9e33('0x42')](_0x441849['update']({'exitAt':moment()[_0x9e33('0x28')](_0x9e33('0x29'))}));});return BPromise['all'](_0x4fd4df);}}})[_0x9e33('0x15')](function(){if(_0x4c8b88){return _0x4c8b88[_0x9e33('0x24')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9e33('0x15')](function(_0x577f32){_0x338c9a(_0x577f32);})[_0x9e33('0x19')](function(_0x44f5cc){_0x442703(_0x4929c7[_0x9e33('0x1a')](0x1f4,_0x44f5cc[_0x9e33('0x1b')]));});});};exports[_0x9e33('0x43')]=function(_0x32a139){var _0x611ef7=this;return new Promise(function(_0x5d68e6,_0x4b0ef9){var _0x95504d;var _0x3502bd;var _0x3cf382;var _0x2a3165;return db['User'][_0x9e33('0x44')]({'where':_0x32a139[_0x9e33('0xf')]['where']||{},'attributes':['id','name',_0x9e33('0x1f'),_0x9e33('0x45'),_0x9e33('0x46'),'internal','loginInPause',_0x9e33('0x21')]})['then'](function(_0x496392){if(_0x496392){_0x95504d=_0x496392;_0x2a3165=_0x32a139[_0x9e33('0x2f')][_0x9e33('0x21')]?_0x32a139['body'][_0x9e33('0x21')]:util[_0x9e33('0x28')](_0x9e33('0x2e'),_0x95504d[_0x9e33('0x26')]);return db[_0x9e33('0xd')][_0x9e33('0x47')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x95504d['id']}}});}})[_0x9e33('0x15')](function(_0x366715){if(_0x366715){_0x3cf382=_0x366715;return require('../../config/license/util')[_0x9e33('0x48')]();}})['then'](function(_0x10e124){if(_0x10e124&&_0x10e124[_0x9e33('0x49')]&&_0x3cf382>=_0x10e124[_0x9e33('0x49')]){throw new Error(_0x9e33('0x4a'));}})[_0x9e33('0x15')](function(){if(_0x95504d){return db[_0x9e33('0x23')][_0x9e33('0x40')]({'where':{'membername':_0x95504d['name']},'individualHooks':!![]});}})[_0x9e33('0x15')](function(){if(_0x95504d){return _0x95504d[_0x9e33('0x4b')]({'raw':!![]});}})['then'](function(_0x232859){if(_0x95504d){if(_0x232859){var _0x2315b3=[];_0x3502bd=_0x232859;if(_0x3502bd['length']){for(var _0x3e89ba=0x0;_0x3e89ba<_0x3502bd[_0x9e33('0x2a')];_0x3e89ba++){_0x2315b3[_0x9e33('0x42')](db[_0x9e33('0x23')][_0x9e33('0x4c')]({'membername':_0x95504d[_0x9e33('0x26')],'UserId':_0x95504d['id'],'queue_name':_0x3502bd[_0x3e89ba]['name'],'VoiceQueueId':_0x3502bd[_0x3e89ba]['id'],'interface':_0x2a3165,'paused':_0x95504d[_0x9e33('0x4d')]||![],'penalty':_0x3502bd[_0x3e89ba][_0x9e33('0x4e')]||0x0}));}return BPromise[_0x9e33('0x4f')](_0x2315b3);}}}})[_0x9e33('0x15')](function(){if(_0x95504d){return db[_0x9e33('0x25')][_0x9e33('0xe')]({'where':{'membername':_0x95504d[_0x9e33('0x26')],'exitAt':null}});}})[_0x9e33('0x15')](function(_0x33601f){if(_0x95504d){if(_0x33601f&&_0x33601f[_0x9e33('0x2a')]){var _0x577b45=[];_0x33601f[_0x9e33('0x41')](function(_0x19b37c){_0x577b45[_0x9e33('0x42')](_0x19b37c['update']({'exitAt':moment()[_0x9e33('0x28')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x9e33('0x4f')](_0x577b45);}}})[_0x9e33('0x15')](function(){if(_0x95504d){var _0x3c2786=[];var _0x414a06=[];var _0x1d35ab=utils[_0x9e33('0x2c')]();var _0x4c19ce={'membername':_0x95504d['name'],'interface':_0x2a3165,'enterAt':moment()['format'](_0x9e33('0x29')),'role':_0x95504d['role'],'internal':_0x95504d['internal']};_0x1d35ab['forEach'](function(_0xa9de25){_0x3c2786['push'](_['merge']({'channel':_0xa9de25,'type':'LOGIN','data1':_0x9e33('0x50'),'data2':_0x2a3165},_0x4c19ce));if(_0x95504d[_0x9e33('0x4d')]){_0x414a06[_0x9e33('0x42')](_[_0x9e33('0x51')]({'channel':_0xa9de25,'type':_0x9e33('0x27'),'data1':_0x9e33('0x52')},_0x4c19ce));}});return db[_0x9e33('0x25')][_0x9e33('0x31')](_0x3c2786[_0x9e33('0x53')](_0x414a06),{'individualHooks':!![]});}})[_0x9e33('0x15')](function(){if(_0x95504d){return _0x95504d['update']({'online':!![],'lastLoginAt':moment()['format'](_0x9e33('0x29')),'voicePause':_0x95504d['loginInPause']||![],'mailPause':_0x95504d[_0x9e33('0x4d')]||![],'chatPause':_0x95504d[_0x9e33('0x4d')]||![],'faxPause':_0x95504d[_0x9e33('0x4d')]||![],'smsPause':_0x95504d[_0x9e33('0x4d')]||![],'openchannelPause':_0x95504d[_0x9e33('0x4d')]||![],'pauseType':_0x95504d['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x2a3165});}})[_0x9e33('0x15')](function(_0x31c9cd){_0x5d68e6(_0x31c9cd);})[_0x9e33('0x19')](function(_0x25061a){_0x4b0ef9(_0x611ef7['error'](0x1f4,_0x25061a[_0x9e33('0x1b')]));});});};
\ No newline at end of file
index f805a14..bff5164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1092=['save','emit','removeListener','register','length','user:','./user.events'];(function(_0x3bef8a,_0x1e26fb){var _0x988890=function(_0x3cdfae){while(--_0x3cdfae){_0x3bef8a['push'](_0x3bef8a['shift']());}};_0x988890(++_0x1e26fb);}(_0x1092,0x1b8));var _0x2109=function(_0x5d035b,_0x3dd687){_0x5d035b=_0x5d035b-0x0;var _0xd35dde=_0x1092[_0x5d035b];return _0xd35dde;};'use strict';var UserEvents=require(_0x2109('0x0'));var events=[_0x2109('0x1'),'remove','update'];function createListener(_0x47bc71,_0x1b81ea){return function(_0x4f3a99){_0x1b81ea[_0x2109('0x2')](_0x47bc71,_0x4f3a99);};}function removeListener(_0xd95688,_0x1290b3){return function(){UserEvents[_0x2109('0x3')](_0xd95688,_0x1290b3);};}exports[_0x2109('0x4')]=function(_0x4bd3fd){for(var _0x5034e6=0x0,_0x56444a=events[_0x2109('0x5')];_0x5034e6<_0x56444a;_0x5034e6++){var _0x32fb65=events[_0x5034e6];var _0x1e3285=createListener(_0x2109('0x6')+_0x32fb65,_0x4bd3fd);UserEvents['on'](_0x32fb65,_0x1e3285);}};
\ No newline at end of file
+var _0x6755=['remove','emit','removeListener','register','length','./user.events','save'];(function(_0x1e9dd1,_0x4b8e63){var _0x6fc0b7=function(_0x155325){while(--_0x155325){_0x1e9dd1['push'](_0x1e9dd1['shift']());}};_0x6fc0b7(++_0x4b8e63);}(_0x6755,0xb4));var _0x5675=function(_0x5ae704,_0x19c396){_0x5ae704=_0x5ae704-0x0;var _0x213e00=_0x6755[_0x5ae704];return _0x213e00;};'use strict';var UserEvents=require(_0x5675('0x0'));var events=[_0x5675('0x1'),_0x5675('0x2'),'update'];function createListener(_0x165f4c,_0x455cfa){return function(_0x1db061){_0x455cfa[_0x5675('0x3')](_0x165f4c,_0x1db061);};}function removeListener(_0xe2a8f,_0x46a0ad){return function(){UserEvents[_0x5675('0x4')](_0xe2a8f,_0x46a0ad);};}exports[_0x5675('0x5')]=function(_0x705f0f){for(var _0x45d70d=0x0,_0x21ddc1=events[_0x5675('0x6')];_0x45d70d<_0x21ddc1;_0x45d70d++){var _0x19142c=events[_0x45d70d];var _0x214ea8=createListener('user:'+_0x19142c,_0x705f0f);UserEvents['on'](_0x19142c,_0x214ea8);}};
\ No newline at end of file
index 55ec64e..12e217b 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(_0x2ce044,_0x3dc42d){var _0x1a2653=function(_0x48f7c9){while(--_0x48f7c9){_0x2ce044['push'](_0x2ce044['shift']());}};_0x1a2653(++_0x3dc42d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3ccdf8,_0x584ceb){_0x3ccdf8=_0x3ccdf8-0x0;var _0x243dab=_0xcb91[_0x3ccdf8];return _0x243dab;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x21e828,_0x5e575e){var _0x1f6463=function(_0x16c9f2){while(--_0x16c9f2){_0x21e828['push'](_0x21e828['shift']());}};_0x1f6463(++_0x5e575e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e0dc4,_0x13971b){_0x3e0dc4=_0x3e0dc4-0x0;var _0x586111=_0xcb91[_0x3e0dc4];return _0x586111;};'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 b88ae5e..4a90687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f63=['sequelize','exports'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0x7f63,0x194));var _0x37f6=function(_0x1d30a3,_0x5f428c){_0x1d30a3=_0x1d30a3-0x0;var _0x32bba1=_0x7f63[_0x1d30a3];return _0x32bba1;};'use strict';var Sequelize=require(_0x37f6('0x0'));module[_0x37f6('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x44b0=['exports','INTEGER','sequelize'];(function(_0x4bce3c,_0x34689d){var _0x14f70f=function(_0x158bec){while(--_0x158bec){_0x4bce3c['push'](_0x4bce3c['shift']());}};_0x14f70f(++_0x34689d);}(_0x44b0,0x1a6));var _0x044b=function(_0x4879d6,_0x101ae7){_0x4879d6=_0x4879d6-0x0;var _0x535b8c=_0x44b0[_0x4879d6];return _0x535b8c;};'use strict';var Sequelize=require(_0x044b('0x0'));module[_0x044b('0x1')]={'penalty':{'type':Sequelize[_0x044b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3b59ad8..2f24eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf932=['UserChatQueue','user_has_chat_queues','lodash','api','./userChatQueue.attributes','exports','define'];(function(_0x14f071,_0x57201b){var _0x449ce6=function(_0x3f4087){while(--_0x3f4087){_0x14f071['push'](_0x14f071['shift']());}};_0x449ce6(++_0x57201b);}(_0xf932,0x113));var _0x2f93=function(_0x551dcf,_0x42b59c){_0x551dcf=_0x551dcf-0x0;var _0x154cc5=_0xf932[_0x551dcf];return _0x154cc5;};'use strict';var _=require(_0x2f93('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2f93('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2f93('0x2'));module[_0x2f93('0x3')]=function(_0x36a200,_0xddadea){return _0x36a200[_0x2f93('0x4')](_0x2f93('0x5'),attributes,{'tableName':_0x2f93('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8066=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','UserChatQueue','user_has_chat_queues'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x8066,0xfc));var _0x6806=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x8066[_0x413feb];return _0x40ee88;};'use strict';var _=require('lodash');var util=require(_0x6806('0x0'));var logger=require(_0x6806('0x1'))(_0x6806('0x2'));var moment=require(_0x6806('0x3'));var BPromise=require(_0x6806('0x4'));var rp=require(_0x6806('0x5'));var fs=require('fs');var path=require(_0x6806('0x6'));var rimraf=require(_0x6806('0x7'));var config=require(_0x6806('0x8'));var attributes=require(_0x6806('0x9'));module['exports']=function(_0xcd369,_0x2d8d6d){return _0xcd369['define'](_0x6806('0xa'),attributes,{'tableName':_0x6806('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72bc31a..fcc51b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010d=['debug','UserChatQueue,\x20%s,\x20%s,\x20%s','error','code','UserChatQueue,\x20%s,\x20%s','message','result','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x010d,0x15b));var _0xd010=function(_0x59b054,_0x4a26a9){_0x59b054=_0x59b054-0x0;var _0x38f352=_0x010d[_0x59b054];return _0x38f352;};'use strict';var _=require(_0xd010('0x0'));var util=require(_0xd010('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd010('0x2'));var db=require(_0xd010('0x3'))['db'];var utils=require(_0xd010('0x4'));var logger=require(_0xd010('0x5'))(_0xd010('0x6'));var config=require(_0xd010('0x7'));var jayson=require(_0xd010('0x8'));var client=jayson['client'][_0xd010('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x243f49,_0x20c03c,_0x2b0678){return new BPromise(function(_0x3a7336,_0x4ffd99){return client['request'](_0x243f49,_0x2b0678)[_0xd010('0xa')](function(_0x14c37b){logger[_0xd010('0xb')]('UserChatQueue,\x20%s,\x20%s',_0x20c03c,_0xd010('0xc'));logger[_0xd010('0xd')](_0xd010('0xe'),_0x20c03c,_0xd010('0xc'),JSON['stringify'](_0x14c37b));if(_0x14c37b[_0xd010('0xf')]){if(_0x14c37b['error'][_0xd010('0x10')]===0x1f4){logger[_0xd010('0xf')](_0xd010('0x11'),_0x20c03c,_0x14c37b[_0xd010('0xf')]['message']);return _0x4ffd99(_0x14c37b[_0xd010('0xf')][_0xd010('0x12')]);}logger[_0xd010('0xf')](_0xd010('0x11'),_0x20c03c,_0x14c37b['error'][_0xd010('0x12')]);return _0x3a7336(_0x14c37b[_0xd010('0xf')][_0xd010('0x12')]);}else{logger[_0xd010('0xb')](_0xd010('0x11'),_0x20c03c,'request\x20sent');_0x3a7336(_0x14c37b[_0xd010('0x13')]['message']);}})['catch'](function(_0x27ec80){logger[_0xd010('0xf')](_0xd010('0x11'),_0x20c03c,_0x27ec80);_0x4ffd99(_0x27ec80);});});}
\ No newline at end of file
+var _0x18f8=['request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','UserChatQueue,\x20%s,\x20%s'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x18f8,0x194));var _0x818f=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x18f8[_0x32b542];return _0x554d54;};'use strict';var _=require(_0x818f('0x0'));var util=require('util');var moment=require(_0x818f('0x1'));var BPromise=require(_0x818f('0x2'));var rs=require(_0x818f('0x3'));var fs=require('fs');var Redis=require(_0x818f('0x4'));var db=require(_0x818f('0x5'))['db'];var utils=require(_0x818f('0x6'));var logger=require(_0x818f('0x7'))(_0x818f('0x8'));var config=require(_0x818f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x818f('0xa')][_0x818f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bf66e,_0x39745c,_0x4c34db){return new BPromise(function(_0x4a9c77,_0x1afad3){return client[_0x818f('0xc')](_0x2bf66e,_0x4c34db)['then'](function(_0x8b493f){logger['info'](_0x818f('0xd'),_0x39745c,_0x818f('0xe'));logger[_0x818f('0xf')](_0x818f('0x10'),_0x39745c,_0x818f('0xe'),JSON['stringify'](_0x8b493f));if(_0x8b493f['error']){if(_0x8b493f['error'][_0x818f('0x11')]===0x1f4){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x39745c,_0x8b493f[_0x818f('0x12')]['message']);return _0x1afad3(_0x8b493f[_0x818f('0x12')][_0x818f('0x13')]);}logger[_0x818f('0x12')](_0x818f('0xd'),_0x39745c,_0x8b493f['error'][_0x818f('0x13')]);return _0x4a9c77(_0x8b493f[_0x818f('0x12')][_0x818f('0x13')]);}else{logger['info'](_0x818f('0xd'),_0x39745c,_0x818f('0xe'));_0x4a9c77(_0x8b493f[_0x818f('0x14')][_0x818f('0x13')]);}})[_0x818f('0x15')](function(_0x5051bb){logger[_0x818f('0x12')](_0x818f('0xd'),_0x39745c,_0x5051bb);_0x1afad3(_0x5051bb);});});}
\ No newline at end of file
index aa7c274..089d544 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(_0x247ada,_0x1e4bef){var _0x4c15fa=function(_0x16150e){while(--_0x16150e){_0x247ada['push'](_0x247ada['shift']());}};_0x4c15fa(++_0x1e4bef);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5a538,_0x3e18e9){var _0x1da4f8=function(_0x57a7cb){while(--_0x57a7cb){_0x5a538['push'](_0x5a538['shift']());}};_0x1da4f8(++_0x3e18e9);}(_0xe706,0xa3));var _0x6e70=function(_0xf3f58c,_0x38b821){_0xf3f58c=_0xf3f58c-0x0;var _0x53d7b6=_0xe706[_0xf3f58c];return _0x53d7b6;};'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 fb98a16..8c7d2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58d1=['INTEGER','sequelize'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x58d1,0x1f3));var _0x158d=function(_0xfa2f68,_0x23836e){_0xfa2f68=_0xfa2f68-0x0;var _0x252d9a=_0x58d1[_0xfa2f68];return _0x252d9a;};'use strict';var Sequelize=require(_0x158d('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x158d('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x158d('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf2be=['INTEGER','sequelize'];(function(_0x38b690,_0x1e29d8){var _0x27ec10=function(_0x68f0ce){while(--_0x68f0ce){_0x38b690['push'](_0x38b690['shift']());}};_0x27ec10(++_0x1e29d8);}(_0xf2be,0x18d));var _0xef2b=function(_0x5dbc3f,_0x4aa658){_0x5dbc3f=_0x5dbc3f-0x0;var _0x11ee90=_0xf2be[_0x5dbc3f];return _0x11ee90;};'use strict';var Sequelize=require(_0xef2b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xef2b('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 58205eb..3f1015e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c74=['lodash','util','api','bluebird','path','rimraf','define'];(function(_0x3f2981,_0x22ca63){var _0x5c586e=function(_0x40cb78){while(--_0x40cb78){_0x3f2981['push'](_0x3f2981['shift']());}};_0x5c586e(++_0x22ca63);}(_0x0c74,0xe7));var _0x40c7=function(_0x29bfda,_0x30ad24){_0x29bfda=_0x29bfda-0x0;var _0x3f3db5=_0x0c74[_0x29bfda];return _0x3f3db5;};'use strict';var _=require(_0x40c7('0x0'));var util=require(_0x40c7('0x1'));var logger=require('../../config/logger')(_0x40c7('0x2'));var moment=require('moment');var BPromise=require(_0x40c7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x40c7('0x4'));var rimraf=require(_0x40c7('0x5'));var config=require('../../config/environment');var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x35e9c5,_0xdfe194){return _0x35e9c5[_0x40c7('0x6')]('UserFaxQueue',attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d63=['request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x314ccd,_0xb410af){var _0x27ed35=function(_0x35fd09){while(--_0x35fd09){_0x314ccd['push'](_0x314ccd['shift']());}};_0x27ed35(++_0xb410af);}(_0x7d63,0x1a7));var _0x37d6=function(_0x12e073,_0x4d43db){_0x12e073=_0x12e073-0x0;var _0x267748=_0x7d63[_0x12e073];return _0x267748;};'use strict';var _=require(_0x37d6('0x0'));var util=require(_0x37d6('0x1'));var logger=require(_0x37d6('0x2'))(_0x37d6('0x3'));var moment=require(_0x37d6('0x4'));var BPromise=require(_0x37d6('0x5'));var rp=require(_0x37d6('0x6'));var fs=require('fs');var path=require(_0x37d6('0x7'));var rimraf=require(_0x37d6('0x8'));var config=require(_0x37d6('0x9'));var attributes=require(_0x37d6('0xa'));module[_0x37d6('0xb')]=function(_0x14626f,_0x1723a8){return _0x14626f[_0x37d6('0xc')]('UserFaxQueue',attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f85ba2e..bf67017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbe5=['request\x20sent','debug','error','code','message','result','catch','UserFaxQueue,\x20%s,\x20%s','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x196ac3,_0x41875d){var _0x18ccf9=function(_0x40725f){while(--_0x40725f){_0x196ac3['push'](_0x196ac3['shift']());}};_0x18ccf9(++_0x41875d);}(_0xfbe5,0x14a));var _0x5fbe=function(_0x10599c,_0x5ace03){_0x10599c=_0x10599c-0x0;var _0x3fa26e=_0xfbe5[_0x10599c];return _0x3fa26e;};'use strict';var _=require(_0x5fbe('0x0'));var util=require(_0x5fbe('0x1'));var moment=require(_0x5fbe('0x2'));var BPromise=require(_0x5fbe('0x3'));var rs=require(_0x5fbe('0x4'));var fs=require('fs');var Redis=require(_0x5fbe('0x5'));var db=require(_0x5fbe('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5fbe('0x7'))(_0x5fbe('0x8'));var config=require('../../config/environment');var jayson=require(_0x5fbe('0x9'));var client=jayson[_0x5fbe('0xa')][_0x5fbe('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x568d1e,_0x52190e,_0x1fc191){return new BPromise(function(_0x503f5b,_0x2c219a){return client[_0x5fbe('0xc')](_0x568d1e,_0x1fc191)[_0x5fbe('0xd')](function(_0x3937c2){logger[_0x5fbe('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x52190e,_0x5fbe('0xf'));logger[_0x5fbe('0x10')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x52190e,'request\x20sent',JSON['stringify'](_0x3937c2));if(_0x3937c2[_0x5fbe('0x11')]){if(_0x3937c2[_0x5fbe('0x11')][_0x5fbe('0x12')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x52190e,_0x3937c2[_0x5fbe('0x11')][_0x5fbe('0x13')]);return _0x2c219a(_0x3937c2[_0x5fbe('0x11')]['message']);}logger[_0x5fbe('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x52190e,_0x3937c2[_0x5fbe('0x11')][_0x5fbe('0x13')]);return _0x503f5b(_0x3937c2[_0x5fbe('0x11')][_0x5fbe('0x13')]);}else{logger[_0x5fbe('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x52190e,_0x5fbe('0xf'));_0x503f5b(_0x3937c2[_0x5fbe('0x14')]['message']);}})[_0x5fbe('0x15')](function(_0x286930){logger[_0x5fbe('0x11')](_0x5fbe('0x16'),_0x52190e,_0x286930);_0x2c219a(_0x286930);});});}
\ No newline at end of file
+var _0xbfc5=['message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x270a54,_0x307ff6){var _0x4d07d0=function(_0x59ac5a){while(--_0x59ac5a){_0x270a54['push'](_0x270a54['shift']());}};_0x4d07d0(++_0x307ff6);}(_0xbfc5,0x151));var _0x5bfc=function(_0x446c2f,_0x3908cf){_0x446c2f=_0x446c2f-0x0;var _0x57edfd=_0xbfc5[_0x446c2f];return _0x57edfd;};'use strict';var _=require(_0x5bfc('0x0'));var util=require('util');var moment=require(_0x5bfc('0x1'));var BPromise=require(_0x5bfc('0x2'));var rs=require(_0x5bfc('0x3'));var fs=require('fs');var Redis=require(_0x5bfc('0x4'));var db=require(_0x5bfc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5bfc('0x6'))(_0x5bfc('0x7'));var config=require(_0x5bfc('0x8'));var jayson=require(_0x5bfc('0x9'));var client=jayson[_0x5bfc('0xa')][_0x5bfc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x209d6d,_0x21ea3e,_0x3053ef){return new BPromise(function(_0x1ab2b6,_0x5b4cbf){return client[_0x5bfc('0xc')](_0x209d6d,_0x3053ef)['then'](function(_0x439b47){logger[_0x5bfc('0xd')](_0x5bfc('0xe'),_0x21ea3e,'request\x20sent');logger[_0x5bfc('0xf')](_0x5bfc('0x10'),_0x21ea3e,_0x5bfc('0x11'),JSON[_0x5bfc('0x12')](_0x439b47));if(_0x439b47[_0x5bfc('0x13')]){if(_0x439b47['error']['code']===0x1f4){logger[_0x5bfc('0x13')](_0x5bfc('0xe'),_0x21ea3e,_0x439b47['error'][_0x5bfc('0x14')]);return _0x5b4cbf(_0x439b47[_0x5bfc('0x13')][_0x5bfc('0x14')]);}logger[_0x5bfc('0x13')](_0x5bfc('0xe'),_0x21ea3e,_0x439b47[_0x5bfc('0x13')][_0x5bfc('0x14')]);return _0x1ab2b6(_0x439b47[_0x5bfc('0x13')][_0x5bfc('0x14')]);}else{logger[_0x5bfc('0xd')](_0x5bfc('0xe'),_0x21ea3e,'request\x20sent');_0x1ab2b6(_0x439b47['result'][_0x5bfc('0x14')]);}})['catch'](function(_0x174393){logger[_0x5bfc('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x21ea3e,_0x174393);_0x5b4cbf(_0x174393);});});}
\ No newline at end of file
index 04d38cd..e3b9024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4e5cca,_0x278cf4){var _0x39343b=function(_0x411c7e){while(--_0x411c7e){_0x4e5cca['push'](_0x4e5cca['shift']());}};_0x39343b(++_0x278cf4);}(_0xedd9,0xfc));var _0x9edd=function(_0x3eced7,_0x4d98bd){_0x3eced7=_0x3eced7-0x0;var _0x171afc=_0xedd9[_0x3eced7];return _0x171afc;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3fdbfa,_0x52694c){var _0x30e62a=function(_0x5d8615){while(--_0x5d8615){_0x3fdbfa['push'](_0x3fdbfa['shift']());}};_0x30e62a(++_0x52694c);}(_0xedd9,0xfc));var _0x9edd=function(_0x197f1e,_0x1f25ef){_0x197f1e=_0x197f1e-0x0;var _0x353b04=_0xedd9[_0x197f1e];return _0x353b04;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index 5519572..73b406d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb218=['INTEGER','exports'];(function(_0x3f1a58,_0x47b10b){var _0x1af68f=function(_0x224d90){while(--_0x224d90){_0x3f1a58['push'](_0x3f1a58['shift']());}};_0x1af68f(++_0x47b10b);}(_0xb218,0x1bf));var _0x8b21=function(_0x8583e,_0x1f965c){_0x8583e=_0x8583e-0x0;var _0x1ba58a=_0xb218[_0x8583e];return _0x1ba58a;};'use strict';var Sequelize=require('sequelize');module[_0x8b21('0x0')]={'penalty':{'type':Sequelize[_0x8b21('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x48e0=['sequelize','INTEGER'];(function(_0x3f9631,_0x51ffcb){var _0x242d84=function(_0xfcd4f7){while(--_0xfcd4f7){_0x3f9631['push'](_0x3f9631['shift']());}};_0x242d84(++_0x51ffcb);}(_0x48e0,0xb8));var _0x048e=function(_0x2d284c,_0x59aa64){_0x2d284c=_0x2d284c-0x0;var _0x4f5756=_0x48e0[_0x2d284c];return _0x4f5756;};'use strict';var Sequelize=require(_0x048e('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x048e('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 04e3eec..c0c1df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d93=['UserMailQueue','user_has_mail_queues','lodash','util','api','bluebird','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define'];(function(_0x48e576,_0x4cf357){var _0x1e02bd=function(_0x34d8e8){while(--_0x34d8e8){_0x48e576['push'](_0x48e576['shift']());}};_0x1e02bd(++_0x4cf357);}(_0x0d93,0xaa));var _0x30d9=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x0d93[_0x556bb1];return _0x45455f;};'use strict';var _=require(_0x30d9('0x0'));var util=require(_0x30d9('0x1'));var logger=require('../../config/logger')(_0x30d9('0x2'));var moment=require('moment');var BPromise=require(_0x30d9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x30d9('0x4'));var rimraf=require(_0x30d9('0x5'));var config=require(_0x30d9('0x6'));var attributes=require(_0x30d9('0x7'));module[_0x30d9('0x8')]=function(_0x2fb605,_0x255079){return _0x2fb605[_0x30d9('0x9')](_0x30d9('0xa'),attributes,{'tableName':_0x30d9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb17=['UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x2ee8ce,_0xaa3f58){var _0x2810fb=function(_0x12c0de){while(--_0x12c0de){_0x2ee8ce['push'](_0x2ee8ce['shift']());}};_0x2810fb(++_0xaa3f58);}(_0xbb17,0x1d0));var _0x7bb1=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xbb17[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x7bb1('0x0'));var util=require(_0x7bb1('0x1'));var logger=require(_0x7bb1('0x2'))('api');var moment=require(_0x7bb1('0x3'));var BPromise=require(_0x7bb1('0x4'));var rp=require(_0x7bb1('0x5'));var fs=require('fs');var path=require(_0x7bb1('0x6'));var rimraf=require('rimraf');var config=require(_0x7bb1('0x7'));var attributes=require('./userMailQueue.attributes');module[_0x7bb1('0x8')]=function(_0x100cf9,_0x18dcfe){return _0x100cf9['define'](_0x7bb1('0x9'),attributes,{'tableName':_0x7bb1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4932552..837a7b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['rpc','../../config/environment','client','http','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x391654,_0x4b0289){var _0x4660f3=function(_0x4b7ee3){while(--_0x4b7ee3){_0x391654['push'](_0x391654['shift']());}};_0x4660f3(++_0x4b0289);}(_0xa41a,0x6b));var _0xaa41=function(_0x3ad437,_0x4ff57b){_0x3ad437=_0x3ad437-0x0;var _0x4b4284=_0xa41a[_0x3ad437];return _0x4b4284;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x5de83b,_0x483a11){var _0x399b10=function(_0x4718fe){while(--_0x4718fe){_0x5de83b['push'](_0x5de83b['shift']());}};_0x399b10(++_0x483a11);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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']('UserMailQueue,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index bcf046e..ac77aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1363=['../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x872b02,_0x4f4458){var _0x1a6b24=function(_0x1dfb4e){while(--_0x1dfb4e){_0x872b02['push'](_0x872b02['shift']());}};_0x1a6b24(++_0x4f4458);}(_0x1363,0xf0));var _0x3136=function(_0x10a277,_0x220594){_0x10a277=_0x10a277-0x0;var _0x39e504=_0x1363[_0x10a277];return _0x39e504;};'use strict';var multer=require(_0x3136('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3136('0x1'));var express=require(_0x3136('0x2'));var router=express[_0x3136('0x3')]();var fs_extra=require(_0x3136('0x4'));var auth=require(_0x3136('0x5'));var interaction=require(_0x3136('0x6'));var config=require(_0x3136('0x7'));var controller=require(_0x3136('0x8'));router[_0x3136('0x9')]('/',auth[_0x3136('0xa')](),controller[_0x3136('0xb')]);module[_0x3136('0xc')]=router;
\ No newline at end of file
+var _0x5987=['sendUserNotification','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./userNotification.controller','post','isAuthenticated'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x5987,0xc5));var _0x7598=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5987[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7598('0x0'));var util=require(_0x7598('0x1'));var path=require(_0x7598('0x2'));var timeout=require(_0x7598('0x3'));var express=require(_0x7598('0x4'));var router=express[_0x7598('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7598('0x6'));var interaction=require(_0x7598('0x7'));var config=require('../../config/environment');var controller=require(_0x7598('0x8'));router[_0x7598('0x9')]('/',auth[_0x7598('0xa')](),controller[_0x7598('0xb')]);module[_0x7598('0xc')]=router;
\ No newline at end of file
index f009682..233672e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c00=['STRING','BOOLEAN','exports','TEXT'];(function(_0x109b18,_0x365978){var _0x33e9f3=function(_0x462805){while(--_0x462805){_0x109b18['push'](_0x109b18['shift']());}};_0x33e9f3(++_0x365978);}(_0x2c00,0x8a));var _0x02c0=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x2c00[_0x9df060];return _0x338dfe;};'use strict';var Sequelize=require('sequelize');module[_0x02c0('0x0')]={'body':{'type':Sequelize[_0x02c0('0x1')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x02c0('0x1')]},'recipientsDescription':{'type':Sequelize[_0x02c0('0x2')]},'beep':{'type':Sequelize[_0x02c0('0x3')]}};
\ No newline at end of file
+var _0x810d=['TEXT','STRING','sequelize','exports'];(function(_0x479746,_0x574758){var _0x36d2aa=function(_0x27e29d){while(--_0x27e29d){_0x479746['push'](_0x479746['shift']());}};_0x36d2aa(++_0x574758);}(_0x810d,0x1e6));var _0xd810=function(_0x4d7dab,_0x320ac4){_0x4d7dab=_0x4d7dab-0x0;var _0x2c68e1=_0x810d[_0x4d7dab];return _0x2c68e1;};'use strict';var Sequelize=require(_0xd810('0x0'));module[_0xd810('0x1')]={'body':{'type':Sequelize[_0xd810('0x2')]},'senderName':{'type':Sequelize[_0xd810('0x3')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index 2dc42a1..812512f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94be=['mailqueue','smsqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','recipient','userNotification:send','catch','text','findOne','html','TemplateId','Invalid\x20\x27TemplateId\x27\x20parameter','render','queue','replace','forEach','push','union','flatten','getAgents','map','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','stack','name','sendUserNotification','body','hasOwnProperty','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','error','Invalid\x20\x27recipients\x27\x20object','faxqueue'];(function(_0x2f5392,_0x4baa4c){var _0x27d3f3=function(_0x2e27ab){while(--_0x2e27ab){_0x2f5392['push'](_0x2f5392['shift']());}};_0x27d3f3(++_0x4baa4c);}(_0x94be,0x18f));var _0xe94b=function(_0x5a85f1,_0x36c542){_0x5a85f1=_0x5a85f1-0x0;var _0x10af99=_0x94be[_0x5a85f1];return _0x10af99;};'use strict';var emlformat=require(_0xe94b('0x0'));var rimraf=require(_0xe94b('0x1'));var zipdir=require(_0xe94b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe94b('0x3'));var moment=require(_0xe94b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe94b('0x5'));var util=require('util');var path=require(_0xe94b('0x6'));var sox=require('sox');var csv=require(_0xe94b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe94b('0x8'));var _=require(_0xe94b('0x9'));var squel=require(_0xe94b('0xa'));var crypto=require(_0xe94b('0xb'));var jsforce=require(_0xe94b('0xc'));var deskjs=require(_0xe94b('0xd'));var toCsv=require(_0xe94b('0x7'));var querystring=require(_0xe94b('0xe'));var Papa=require(_0xe94b('0xf'));var Redis=require('ioredis');var authService=require(_0xe94b('0x10'));var qs=require(_0xe94b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe94b('0x12'))(_0xe94b('0x13'));var utils=require(_0xe94b('0x14'));var config=require(_0xe94b('0x15'));var licenseUtil=require(_0xe94b('0x16'));var db=require(_0xe94b('0x17'))['db'];config[_0xe94b('0x18')]=_[_0xe94b('0x19')](config[_0xe94b('0x18')],{'host':_0xe94b('0x1a'),'port':0x18eb});var socket=require(_0xe94b('0x1b'))(new Redis(config['redis']));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0xffdf8c,_0x2e903a){_0x2e903a=_0x2e903a||0xcc;return function(_0x2ea32f){if(_0x2ea32f){return _0xffdf8c[_0xe94b('0x1c')](_0x2e903a);}return _0xffdf8c[_0xe94b('0x1d')](_0x2e903a)[_0xe94b('0x1e')]();};}function respondWithResult(_0x4279ca,_0x2a9c15){_0x2a9c15=_0x2a9c15||0xc8;return function(_0x5977bb){if(_0x5977bb){return _0x4279ca[_0xe94b('0x1d')](_0x2a9c15)[_0xe94b('0x1f')](_0x5977bb);}};}function respondWithFilteredResult(_0x101a7e,_0x313006){return function(_0x4f4e0e){if(_0x4f4e0e){var _0x584ed6=typeof _0x313006[_0xe94b('0x20')]===_0xe94b('0x21')&&typeof _0x313006[_0xe94b('0x22')]===_0xe94b('0x21');var _0x3eebb4=_0x4f4e0e[_0xe94b('0x23')];var _0x37dbd2=_0x584ed6?0x0:_0x313006[_0xe94b('0x20')];var _0x2219ec=_0x584ed6?_0x4f4e0e[_0xe94b('0x23')]:_0x313006[_0xe94b('0x20')]+_0x313006['limit'];var _0x194614;if(_0x2219ec>=_0x3eebb4){_0x2219ec=_0x3eebb4;_0x194614=0xc8;}else{_0x194614=0xce;}_0x101a7e[_0xe94b('0x1d')](_0x194614);return _0x101a7e[_0xe94b('0x24')]('Content-Range',_0x37dbd2+'-'+_0x2219ec+'/'+_0x3eebb4)['json'](_0x4f4e0e);}return null;};}function patchUpdates(_0x1da52f){return function(_0x35a984){try{jsonpatch['apply'](_0x35a984,_0x1da52f,!![]);}catch(_0x535336){return BPromise[_0xe94b('0x25')](_0x535336);}return _0x35a984[_0xe94b('0x26')]();};}function saveUpdates(_0x552786,_0x307dfe){return function(_0x264917){if(_0x264917){return _0x264917[_0xe94b('0x27')](_0x552786)['then'](function(_0x5074f9){return _0x5074f9;});}return null;};}function removeEntity(_0x2c7c33,_0x448952){return function(_0x455860){if(_0x455860){return _0x455860['destroy']()[_0xe94b('0x28')](function(){_0x2c7c33[_0xe94b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dcc39,_0x197aba){return function(_0xf84f9f){if(!_0xf84f9f){_0x5dcc39[_0xe94b('0x1c')](0x194);}return _0xf84f9f;};}function handleError(_0x2a4322,_0x3f8720){_0x3f8720=_0x3f8720||0x1f4;return function(_0x193c10){logger['error'](_0x193c10[_0xe94b('0x29')]);if(_0x193c10['name']){delete _0x193c10[_0xe94b('0x2a')];}_0x2a4322[_0xe94b('0x1d')](_0x3f8720)['send'](_0x193c10);};}exports[_0xe94b('0x2b')]=function(_0x33f991,_0x52acf8,_0x4cee6b){if(!_0x33f991[_0xe94b('0x2c')][_0xe94b('0x2d')]('text')&&!_0x33f991[_0xe94b('0x2c')][_0xe94b('0x2d')]('TemplateId')){throw new db[(_0xe94b('0x2e'))][(_0xe94b('0x2f'))](_0xe94b('0x30'));}else{if(_0x33f991[_0xe94b('0x2c')][_0xe94b('0x2d')]('TemplateId')&&!_0x33f991[_0xe94b('0x2c')][_0xe94b('0x2d')](_0xe94b('0x31'))){throw new db[(_0xe94b('0x2e'))][(_0xe94b('0x2f'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x33f991[_0xe94b('0x2c')][_0xe94b('0x2d')](_0xe94b('0x32'))){throw new db[(_0xe94b('0x2e'))][(_0xe94b('0x2f'))](_0xe94b('0x33'));}else{try{var _0x1d2473=JSON[_0xe94b('0x34')](_0x33f991[_0xe94b('0x2c')][_0xe94b('0x32')]);}catch(_0x3015cb){logger[_0xe94b('0x35')](_0x3015cb);throw new db[(_0xe94b('0x2e'))][(_0xe94b('0x2f'))](_0xe94b('0x36'));}var _0x212a0f=['chatqueue',_0xe94b('0x37'),_0xe94b('0x38'),'openchannelqueue',_0xe94b('0x39'),'voicequeue','whatsappqueue',_0xe94b('0x3a'),_0xe94b('0x3b')];if(_[_0xe94b('0x3c')](_0x1d2473,function(_0x262e31){return!_[_0xe94b('0x3d')](_0x212a0f,_0x262e31[_0xe94b('0x3e')][_0xe94b('0x3f')]());})){throw new db[(_0xe94b('0x2e'))][(_0xe94b('0x2f'))](_0xe94b('0x40'));}}}var _0x1edc19={};_0x1edc19[_0xe94b('0x41')]=_0x33f991[_0xe94b('0x2c')][_0xe94b('0x2d')](_0xe94b('0x41'))?_0x33f991[_0xe94b('0x2c')][_0xe94b('0x41')]:_0x33f991[_0xe94b('0x3b')][_0xe94b('0x42')];_0x1edc19[_0xe94b('0x43')]=_[_0xe94b('0x44')](_0x33f991[_0xe94b('0x2c')][_0xe94b('0x43')])?null:_0x33f991[_0xe94b('0x2c')]['recipientsDescription'];_0x1edc19[_0xe94b('0x45')]=_0x33f991[_0xe94b('0x2c')][_0xe94b('0x45')]||![];_0x1edc19[_0xe94b('0x46')]=_0x33f991['user']['id'];return getContent(_0x33f991[_0xe94b('0x2c')])[_0xe94b('0x28')](function(_0x16877b){_0x1edc19[_0xe94b('0x2c')]=_0x16877b;return getRecipients(_0x1d2473);})[_0xe94b('0x28')](function(_0x2e5817){_0x1edc19[_0xe94b('0x47')]=_[_0xe94b('0x48')](_0x2e5817)[_0xe94b('0x49')](',');return db['sequelize']['transaction'](function(_0x5550e2){return db['UserNotification']['create'](_0x1edc19,{'raw':!![],'transaction':_0x5550e2})[_0xe94b('0x28')](function(_0x1f4ea1){var _0x21491f={'sender':_0x1edc19[_0xe94b('0x41')],'description':_0x1edc19['recipientsDescription'],'content':_0x1edc19['body'],'beep':_0x1edc19[_0xe94b('0x45')]};_0x2e5817['forEach'](function(_0x46ef3f){_0x21491f[_0xe94b('0x4a')]=_0x46ef3f;socket['emit'](_0xe94b('0x4b'),_0x21491f);});return _0x1f4ea1;});});})[_0xe94b('0x28')](respondWithResult(_0x52acf8,0xc9))[_0xe94b('0x4c')](handleError(_0x52acf8,null));};function getContent(_0x4321ea){return new BPromise(function(_0x5a1e75,_0x57fb93){if(_0x4321ea[_0xe94b('0x4d')]){_0x5a1e75(_0x4321ea[_0xe94b('0x4d')]);return;}return db['Template'][_0xe94b('0x4e')]({'attributes':[_0xe94b('0x4f')],'where':{'id':_0x4321ea[_0xe94b('0x50')]},'raw':!![]})[_0xe94b('0x28')](function(_0xfa00ec){if(!_0xfa00ec)throw new db[(_0xe94b('0x2e'))][(_0xe94b('0x2f'))](_0xe94b('0x51'));var _0x152ece=Mustache[_0xe94b('0x52')](_0xfa00ec[_0xe94b('0x4f')],_0x4321ea[_0xe94b('0x31')]);_0x5a1e75(_0x152ece);})[_0xe94b('0x4c')](function(_0x70bf41){_0x57fb93(_0x70bf41);});});}function getRecipients(_0xa2af23){return new BPromise(function(_0x12b58f,_0x3149a0){var _0x3cf429=[];var _0x4781b1=[];_0xa2af23['forEach'](function(_0x2c6ab3){var _0x33e7e2=_['startCase'](_0x2c6ab3[_0xe94b('0x3e')][_0xe94b('0x3f')]());if(_0x33e7e2==='User'){_0x3cf429=_['union'](_0x3cf429,_0x2c6ab3['ids']);}else{if(_[_0xe94b('0x3d')](_0x33e7e2,_0xe94b('0x53')))_0x33e7e2=_0x33e7e2[_0xe94b('0x54')]('queue','Queue');_0x2c6ab3['ids'][_0xe94b('0x55')](function(_0xda07e1){_0x4781b1[_0xe94b('0x56')](getAgents(_0x33e7e2,_0xda07e1));});}});return BPromise['all'](_0x4781b1)['then'](function(_0xb88674){_0x3cf429=_[_0xe94b('0x57')](_0x3cf429,_[_0xe94b('0x58')](_0xb88674));_0x12b58f(_0x3cf429);})[_0xe94b('0x4c')](function(_0x46dabe){_0x3149a0(_0x46dabe);});});}function getAgents(_0x3580e8,_0x3ab3f5){return new BPromise(function(_0x4b13b1,_0x3c5e79){return db[_0x3580e8][_0xe94b('0x4e')]({'where':{'id':_0x3ab3f5}})[_0xe94b('0x28')](function(_0x3ac805){return _0x3ac805[_0xe94b('0x59')]({'attributes':['id'],'raw':!![]})[_0xe94b('0x28')](function(_0x21e9de){var _0x1e4238=_[_0xe94b('0x5a')](_0x21e9de,'id');_0x4b13b1(_0x1e4238);});})['catch'](function(_0x4bfa55){_0x3c5e79(_0x4bfa55);});});}
\ No newline at end of file
+var _0x078c=['push','union','flatten','map','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./userNotification.socket','register','status','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','faxqueue','mailqueue','smsqueue','whatsappqueue','team','user','model','senderName','recipientsDescription','beep','SenderId','recipientsId','join','sequelize','transaction','create','forEach','recipient','userNotification:send','catch','text','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','startCase','toLowerCase','User','ids','queue','replace','Queue'];(function(_0x530f64,_0x4103e8){var _0x581e61=function(_0x5431dd){while(--_0x5431dd){_0x530f64['push'](_0x530f64['shift']());}};_0x581e61(++_0x4103e8);}(_0x078c,0x170));var _0xc078=function(_0x34bc6c,_0x10d089){_0x34bc6c=_0x34bc6c-0x0;var _0x168820=_0x078c[_0x34bc6c];return _0x168820;};'use strict';var emlformat=require(_0xc078('0x0'));var rimraf=require(_0xc078('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc078('0x2'));var rp=require('request-promise');var moment=require(_0xc078('0x3'));var BPromise=require(_0xc078('0x4'));var Mustache=require('mustache');var util=require(_0xc078('0x5'));var path=require(_0xc078('0x6'));var sox=require(_0xc078('0x7'));var csv=require(_0xc078('0x8'));var ejs=require(_0xc078('0x9'));var fs=require('fs');var fs_extra=require(_0xc078('0xa'));var _=require('lodash');var squel=require(_0xc078('0xb'));var crypto=require(_0xc078('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc078('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc078('0xd'));var authService=require(_0xc078('0xe'));var qs=require(_0xc078('0xf'));var as=require(_0xc078('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc078('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc078('0x12'));var db=require(_0xc078('0x13'))['db'];config[_0xc078('0x14')]=_['defaults'](config[_0xc078('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0xc078('0x15'))(new Redis(config[_0xc078('0x14')]));require(_0xc078('0x16'))[_0xc078('0x17')](socket);function respondWithStatusCode(_0x55dae0,_0x5dc2d3){_0x5dc2d3=_0x5dc2d3||0xcc;return function(_0x1246cc){if(_0x1246cc){return _0x55dae0['sendStatus'](_0x5dc2d3);}return _0x55dae0[_0xc078('0x18')](_0x5dc2d3)['end']();};}function respondWithResult(_0x4327d5,_0x45369c){_0x45369c=_0x45369c||0xc8;return function(_0x491ade){if(_0x491ade){return _0x4327d5[_0xc078('0x18')](_0x45369c)[_0xc078('0x19')](_0x491ade);}};}function respondWithFilteredResult(_0x288900,_0xdd3a04){return function(_0x581f44){if(_0x581f44){var _0x32c6b8=typeof _0xdd3a04['offset']==='undefined'&&typeof _0xdd3a04[_0xc078('0x1a')]==='undefined';var _0x10b5ff=_0x581f44[_0xc078('0x1b')];var _0x181489=_0x32c6b8?0x0:_0xdd3a04[_0xc078('0x1c')];var _0x5716be=_0x32c6b8?_0x581f44['count']:_0xdd3a04[_0xc078('0x1c')]+_0xdd3a04[_0xc078('0x1a')];var _0x4a0dea;if(_0x5716be>=_0x10b5ff){_0x5716be=_0x10b5ff;_0x4a0dea=0xc8;}else{_0x4a0dea=0xce;}_0x288900[_0xc078('0x18')](_0x4a0dea);return _0x288900[_0xc078('0x1d')](_0xc078('0x1e'),_0x181489+'-'+_0x5716be+'/'+_0x10b5ff)[_0xc078('0x19')](_0x581f44);}return null;};}function patchUpdates(_0x37270f){return function(_0x494cd0){try{jsonpatch[_0xc078('0x1f')](_0x494cd0,_0x37270f,!![]);}catch(_0x4e0a13){return BPromise[_0xc078('0x20')](_0x4e0a13);}return _0x494cd0[_0xc078('0x21')]();};}function saveUpdates(_0x4d8633,_0x4043b3){return function(_0x483700){if(_0x483700){return _0x483700[_0xc078('0x22')](_0x4d8633)[_0xc078('0x23')](function(_0x29fbc4){return _0x29fbc4;});}return null;};}function removeEntity(_0x594d31,_0x13369c){return function(_0x151319){if(_0x151319){return _0x151319[_0xc078('0x24')]()[_0xc078('0x23')](function(){_0x594d31[_0xc078('0x18')](0xcc)[_0xc078('0x25')]();});}};}function handleEntityNotFound(_0x154671,_0x567323){return function(_0x58d365){if(!_0x58d365){_0x154671[_0xc078('0x26')](0x194);}return _0x58d365;};}function handleError(_0x28cba9,_0x46532a){_0x46532a=_0x46532a||0x1f4;return function(_0x6378d3){logger[_0xc078('0x27')](_0x6378d3[_0xc078('0x28')]);if(_0x6378d3[_0xc078('0x29')]){delete _0x6378d3[_0xc078('0x29')];}_0x28cba9[_0xc078('0x18')](_0x46532a)['send'](_0x6378d3);};}exports[_0xc078('0x2a')]=function(_0x3f9596,_0x3dc63b,_0x51746e){if(!_0x3f9596[_0xc078('0x2b')][_0xc078('0x2c')]('text')&&!_0x3f9596[_0xc078('0x2b')][_0xc078('0x2c')](_0xc078('0x2d'))){throw new db[(_0xc078('0x2e'))][(_0xc078('0x2f'))](_0xc078('0x30'));}else{if(_0x3f9596[_0xc078('0x2b')]['hasOwnProperty']('TemplateId')&&!_0x3f9596[_0xc078('0x2b')][_0xc078('0x2c')](_0xc078('0x31'))){throw new db[(_0xc078('0x2e'))][(_0xc078('0x2f'))](_0xc078('0x32'));}if(!_0x3f9596[_0xc078('0x2b')][_0xc078('0x2c')](_0xc078('0x33'))){throw new db[(_0xc078('0x2e'))][(_0xc078('0x2f'))](_0xc078('0x34'));}else{try{var _0x20b4da=JSON[_0xc078('0x35')](_0x3f9596[_0xc078('0x2b')]['recipients']);}catch(_0x498263){logger[_0xc078('0x27')](_0x498263);throw new db['Sequelize'][(_0xc078('0x2f'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x16731e=[_0xc078('0x36'),_0xc078('0x37'),_0xc078('0x38'),'openchannelqueue',_0xc078('0x39'),'voicequeue',_0xc078('0x3a'),_0xc078('0x3b'),_0xc078('0x3c')];if(_['some'](_0x20b4da,function(_0x4727e5){return!_['includes'](_0x16731e,_0x4727e5[_0xc078('0x3d')]['toLowerCase']());})){throw new db[(_0xc078('0x2e'))]['ValidationError']('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x5e47e9={};_0x5e47e9[_0xc078('0x3e')]=_0x3f9596[_0xc078('0x2b')][_0xc078('0x2c')](_0xc078('0x3e'))?_0x3f9596['body']['senderName']:_0x3f9596[_0xc078('0x3c')]['fullname'];_0x5e47e9[_0xc078('0x3f')]=_['isEmpty'](_0x3f9596[_0xc078('0x2b')]['recipientsDescription'])?null:_0x3f9596[_0xc078('0x2b')][_0xc078('0x3f')];_0x5e47e9[_0xc078('0x40')]=_0x3f9596[_0xc078('0x2b')]['beep']||![];_0x5e47e9[_0xc078('0x41')]=_0x3f9596[_0xc078('0x3c')]['id'];return getContent(_0x3f9596[_0xc078('0x2b')])['then'](function(_0x382be3){_0x5e47e9[_0xc078('0x2b')]=_0x382be3;return getRecipients(_0x20b4da);})[_0xc078('0x23')](function(_0x5d2d4f){_0x5e47e9[_0xc078('0x42')]=_['sortBy'](_0x5d2d4f)[_0xc078('0x43')](',');return db[_0xc078('0x44')][_0xc078('0x45')](function(_0x34c7f3){return db['UserNotification'][_0xc078('0x46')](_0x5e47e9,{'raw':!![],'transaction':_0x34c7f3})['then'](function(_0x35789a){var _0x5ac190={'sender':_0x5e47e9[_0xc078('0x3e')],'description':_0x5e47e9['recipientsDescription'],'content':_0x5e47e9[_0xc078('0x2b')],'beep':_0x5e47e9[_0xc078('0x40')]};_0x5d2d4f[_0xc078('0x47')](function(_0x332bbf){_0x5ac190[_0xc078('0x48')]=_0x332bbf;socket['emit'](_0xc078('0x49'),_0x5ac190);});return _0x35789a;});});})[_0xc078('0x23')](respondWithResult(_0x3dc63b,0xc9))[_0xc078('0x4a')](handleError(_0x3dc63b,null));};function getContent(_0x23eba5){return new BPromise(function(_0x5ae283,_0x730409){if(_0x23eba5[_0xc078('0x4b')]){_0x5ae283(_0x23eba5[_0xc078('0x4b')]);return;}return db[_0xc078('0x4c')][_0xc078('0x4d')]({'attributes':[_0xc078('0x4e')],'where':{'id':_0x23eba5[_0xc078('0x2d')]},'raw':!![]})[_0xc078('0x23')](function(_0x13de31){if(!_0x13de31)throw new db[(_0xc078('0x2e'))][(_0xc078('0x2f'))](_0xc078('0x4f'));var _0x48f2bd=Mustache['render'](_0x13de31[_0xc078('0x4e')],_0x23eba5[_0xc078('0x31')]);_0x5ae283(_0x48f2bd);})[_0xc078('0x4a')](function(_0x253388){_0x730409(_0x253388);});});}function getRecipients(_0x33e79d){return new BPromise(function(_0x1414f5,_0x43ca3e){var _0x4812ed=[];var _0x34e3a5=[];_0x33e79d[_0xc078('0x47')](function(_0x536dc3){var _0x5772bf=_[_0xc078('0x50')](_0x536dc3['model'][_0xc078('0x51')]());if(_0x5772bf===_0xc078('0x52')){_0x4812ed=_['union'](_0x4812ed,_0x536dc3[_0xc078('0x53')]);}else{if(_['includes'](_0x5772bf,_0xc078('0x54')))_0x5772bf=_0x5772bf[_0xc078('0x55')](_0xc078('0x54'),_0xc078('0x56'));_0x536dc3[_0xc078('0x53')][_0xc078('0x47')](function(_0x163160){_0x34e3a5[_0xc078('0x57')](getAgents(_0x5772bf,_0x163160));});}});return BPromise['all'](_0x34e3a5)[_0xc078('0x23')](function(_0x22d0d1){_0x4812ed=_[_0xc078('0x58')](_0x4812ed,_[_0xc078('0x59')](_0x22d0d1));_0x1414f5(_0x4812ed);})[_0xc078('0x4a')](function(_0x1ac59f){_0x43ca3e(_0x1ac59f);});});}function getAgents(_0x1bee10,_0x4adeb8){return new BPromise(function(_0x3e9643,_0x4716c9){return db[_0x1bee10][_0xc078('0x4d')]({'where':{'id':_0x4adeb8}})[_0xc078('0x23')](function(_0x56672d){return _0x56672d['getAgents']({'attributes':['id'],'raw':!![]})[_0xc078('0x23')](function(_0x358f44){var _0x5d5d61=_[_0xc078('0x5a')](_0x358f44,'id');_0x3e9643(_0x5d5d61);});})[_0xc078('0x4a')](function(_0x7d7464){_0x4716c9(_0x7d7464);});});}
\ No newline at end of file
index b9e4ca6..db52c0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe51a=['hook','exports','../../mysqldb','UserNotification','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x34232c,_0x18e61d){var _0x4d4f4e=function(_0x1aeb3d){while(--_0x1aeb3d){_0x34232c['push'](_0x34232c['shift']());}};_0x4d4f4e(++_0x18e61d);}(_0xe51a,0x182));var _0xae51=function(_0x4b80d9,_0x2cbe22){_0x4b80d9=_0x4b80d9-0x0;var _0x4ae071=_0xe51a[_0x4b80d9];return _0x4ae071;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xae51('0x0'))['db'][_0xae51('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xae51('0x2')](0x0);var events={'afterCreate':_0xae51('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x467d63){return function(_0x1ec2c3,_0x4947c1,_0x3fb1a0){UserNotificationEvents[_0xae51('0x4')](_0x467d63+':'+_0x1ec2c3['id'],_0x1ec2c3);UserNotificationEvents[_0xae51('0x4')](_0x467d63,_0x1ec2c3);_0x3fb1a0(null);};}for(var e in events){if(events[_0xae51('0x5')](e)){var event=events[e];UserNotification[_0xae51('0x6')](e,emitEvent(event));}}module[_0xae51('0x7')]=UserNotificationEvents;
\ No newline at end of file
+var _0x4e22=['../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x134dc6,_0x5b619c){var _0x85c021=function(_0x1f1d6b){while(--_0x1f1d6b){_0x134dc6['push'](_0x134dc6['shift']());}};_0x85c021(++_0x5b619c);}(_0x4e22,0x18c));var _0x24e2=function(_0x1a8dac,_0x3fa705){_0x1a8dac=_0x1a8dac-0x0;var _0x1344fc=_0x4e22[_0x1a8dac];return _0x1344fc;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x24e2('0x0'))['db'][_0x24e2('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x24e2('0x2')](0x0);var events={'afterCreate':_0x24e2('0x3'),'afterUpdate':_0x24e2('0x4'),'afterDestroy':_0x24e2('0x5')};function emitEvent(_0x2aac0d){return function(_0x449315,_0x3f94fd,_0x50738f){UserNotificationEvents[_0x24e2('0x6')](_0x2aac0d+':'+_0x449315['id'],_0x449315);UserNotificationEvents[_0x24e2('0x6')](_0x2aac0d,_0x449315);_0x50738f(null);};}for(var e in events){if(events[_0x24e2('0x7')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x24e2('0x8')]=UserNotificationEvents;
\ No newline at end of file
index 028029f..1282e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x700c=['define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x700c,0x83));var _0xc700=function(_0x47a2df,_0x328500){_0x47a2df=_0x47a2df-0x0;var _0x32b443=_0x700c[_0x47a2df];return _0x32b443;};'use strict';var _=require(_0xc700('0x0'));var util=require('util');var logger=require(_0xc700('0x1'))(_0xc700('0x2'));var moment=require(_0xc700('0x3'));var BPromise=require(_0xc700('0x4'));var rp=require(_0xc700('0x5'));var fs=require('fs');var path=require(_0xc700('0x6'));var rimraf=require('rimraf');var config=require(_0xc700('0x7'));var attributes=require('./userNotification.attributes');module[_0xc700('0x8')]=function(_0x3da0ca,_0x199253){return _0x3da0ca[_0xc700('0x9')](_0xc700('0xa'),attributes,{'tableName':_0xc700('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc700('0xc'),'collate':_0xc700('0xd')});};
\ No newline at end of file
+var _0x7bb6=['utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userNotification.attributes','exports','userNotifications'];(function(_0x17d4e5,_0x26ff10){var _0x3491df=function(_0x5e6e3f){while(--_0x5e6e3f){_0x17d4e5['push'](_0x17d4e5['shift']());}};_0x3491df(++_0x26ff10);}(_0x7bb6,0x1bb));var _0x67bb=function(_0x5ba3cf,_0xa037){_0x5ba3cf=_0x5ba3cf-0x0;var _0x4743bc=_0x7bb6[_0x5ba3cf];return _0x4743bc;};'use strict';var _=require(_0x67bb('0x0'));var util=require(_0x67bb('0x1'));var logger=require(_0x67bb('0x2'))(_0x67bb('0x3'));var moment=require(_0x67bb('0x4'));var BPromise=require(_0x67bb('0x5'));var rp=require(_0x67bb('0x6'));var fs=require('fs');var path=require(_0x67bb('0x7'));var rimraf=require('rimraf');var config=require(_0x67bb('0x8'));var attributes=require(_0x67bb('0x9'));module[_0x67bb('0xa')]=function(_0x2fe752,_0x55d3ef){return _0x2fe752['define']('UserNotification',attributes,{'tableName':_0x67bb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x67bb('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 97d7e71..e9bf44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7edc=['ioredis','../../mysqldb','../../config/logger','jayson/promise','localhost','socket.io-emitter','register','request','then','UserNotification,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1da6bb,_0xffe033){var _0x1c46a1=function(_0x59c14f){while(--_0x59c14f){_0x1da6bb['push'](_0x1da6bb['shift']());}};_0x1c46a1(++_0xffe033);}(_0x7edc,0xd3));var _0xc7ed=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x7edc[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0xc7ed('0x0'));var util=require(_0xc7ed('0x1'));var moment=require(_0xc7ed('0x2'));var BPromise=require(_0xc7ed('0x3'));var rs=require(_0xc7ed('0x4'));var fs=require('fs');var Redis=require(_0xc7ed('0x5'));var db=require(_0xc7ed('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc7ed('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc7ed('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xc7ed('0x9'),'port':0x18eb});var socket=require(_0xc7ed('0xa'))(new Redis(config['redis']));require('./userNotification.socket')[_0xc7ed('0xb')](socket);function respondWithRpcPromise(_0x1dc454,_0x1a57c1,_0x361ba7){return new BPromise(function(_0x2c15ea,_0x1d56f9){return client[_0xc7ed('0xc')](_0x1dc454,_0x361ba7)[_0xc7ed('0xd')](function(_0x4a3556){logger['info'](_0xc7ed('0xe'),_0x1a57c1,'request\x20sent');logger[_0xc7ed('0xf')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x1a57c1,_0xc7ed('0x10'),JSON[_0xc7ed('0x11')](_0x4a3556));if(_0x4a3556[_0xc7ed('0x12')]){if(_0x4a3556[_0xc7ed('0x12')][_0xc7ed('0x13')]===0x1f4){logger['error'](_0xc7ed('0xe'),_0x1a57c1,_0x4a3556[_0xc7ed('0x12')][_0xc7ed('0x14')]);return _0x1d56f9(_0x4a3556[_0xc7ed('0x12')][_0xc7ed('0x14')]);}logger[_0xc7ed('0x12')](_0xc7ed('0xe'),_0x1a57c1,_0x4a3556[_0xc7ed('0x12')][_0xc7ed('0x14')]);return _0x2c15ea(_0x4a3556[_0xc7ed('0x12')][_0xc7ed('0x14')]);}else{logger[_0xc7ed('0x15')]('UserNotification,\x20%s,\x20%s',_0x1a57c1,'request\x20sent');_0x2c15ea(_0x4a3556[_0xc7ed('0x16')]['message']);}})[_0xc7ed('0x17')](function(_0x473d28){logger[_0xc7ed('0x12')](_0xc7ed('0xe'),_0x1a57c1,_0x473d28);_0x1d56f9(_0x473d28);});});}
\ No newline at end of file
+var _0x9fd0=['message','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x11c573,_0x9e7c6e){var _0x6b72de=function(_0x2e8a61){while(--_0x2e8a61){_0x11c573['push'](_0x11c573['shift']());}};_0x6b72de(++_0x9e7c6e);}(_0x9fd0,0xca));var _0x09fd=function(_0x2975ce,_0x23f1e1){_0x2975ce=_0x2975ce-0x0;var _0x149918=_0x9fd0[_0x2975ce];return _0x149918;};'use strict';var _=require(_0x09fd('0x0'));var util=require(_0x09fd('0x1'));var moment=require('moment');var BPromise=require(_0x09fd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x09fd('0x3'))['db'];var utils=require(_0x09fd('0x4'));var logger=require(_0x09fd('0x5'))(_0x09fd('0x6'));var config=require(_0x09fd('0x7'));var jayson=require(_0x09fd('0x8'));var client=jayson['client'][_0x09fd('0x9')]({'port':0x232a});config[_0x09fd('0xa')]=_[_0x09fd('0xb')](config[_0x09fd('0xa')],{'host':_0x09fd('0xc'),'port':0x18eb});var socket=require(_0x09fd('0xd'))(new Redis(config[_0x09fd('0xa')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x5b0a91,_0x1d674f,_0x3af14e){return new BPromise(function(_0x272b1d,_0x151cc5){return client[_0x09fd('0xe')](_0x5b0a91,_0x3af14e)[_0x09fd('0xf')](function(_0x3c723d){logger[_0x09fd('0x10')](_0x09fd('0x11'),_0x1d674f,_0x09fd('0x12'));logger[_0x09fd('0x13')](_0x09fd('0x14'),_0x1d674f,'request\x20sent',JSON['stringify'](_0x3c723d));if(_0x3c723d[_0x09fd('0x15')]){if(_0x3c723d['error'][_0x09fd('0x16')]===0x1f4){logger['error']('UserNotification,\x20%s,\x20%s',_0x1d674f,_0x3c723d['error'][_0x09fd('0x17')]);return _0x151cc5(_0x3c723d[_0x09fd('0x15')][_0x09fd('0x17')]);}logger['error'](_0x09fd('0x11'),_0x1d674f,_0x3c723d['error'][_0x09fd('0x17')]);return _0x272b1d(_0x3c723d[_0x09fd('0x15')]['message']);}else{logger['info'](_0x09fd('0x11'),_0x1d674f,_0x09fd('0x12'));_0x272b1d(_0x3c723d['result'][_0x09fd('0x17')]);}})[_0x09fd('0x18')](function(_0x110743){logger[_0x09fd('0x15')](_0x09fd('0x11'),_0x1d674f,_0x110743);_0x151cc5(_0x110743);});});}
\ No newline at end of file
index 7bf195e..79c7551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ae=['./userNotification.events','save','remove','removeListener','register','length','userNotification:'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x13ae,0x1a4));var _0xe13a=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x13ae[_0x465028];return _0xb783d4;};'use strict';var UserNotificationEvents=require(_0xe13a('0x0'));var events=[_0xe13a('0x1'),_0xe13a('0x2'),'update'];function createListener(_0x461576,_0x8ee990){return function(_0x326806){_0x8ee990['emit'](_0x461576,_0x326806);};}function removeListener(_0x4bfdaa,_0x2125d5){return function(){UserNotificationEvents[_0xe13a('0x3')](_0x4bfdaa,_0x2125d5);};}exports[_0xe13a('0x4')]=function(_0x4e38cd){for(var _0x248e5a=0x0,_0x4b0d1e=events[_0xe13a('0x5')];_0x248e5a<_0x4b0d1e;_0x248e5a++){var _0x29a8dc=events[_0x248e5a];var _0xcd3344=createListener(_0xe13a('0x6')+_0x29a8dc,_0x4e38cd);UserNotificationEvents['on'](_0x29a8dc,_0xcd3344);}};
\ No newline at end of file
+var _0x6ca3=['update','removeListener','register','length','userNotification:','./userNotification.events'];(function(_0x31b31b,_0x5f044e){var _0x2c8fc2=function(_0x5438aa){while(--_0x5438aa){_0x31b31b['push'](_0x31b31b['shift']());}};_0x2c8fc2(++_0x5f044e);}(_0x6ca3,0xd1));var _0x36ca=function(_0x1780ec,_0x3af2fa){_0x1780ec=_0x1780ec-0x0;var _0x5c5663=_0x6ca3[_0x1780ec];return _0x5c5663;};'use strict';var UserNotificationEvents=require(_0x36ca('0x0'));var events=['save','remove',_0x36ca('0x1')];function createListener(_0x1e2c7f,_0x375494){return function(_0x53d4e4){_0x375494['emit'](_0x1e2c7f,_0x53d4e4);};}function removeListener(_0x2de8e8,_0x230f6e){return function(){UserNotificationEvents[_0x36ca('0x2')](_0x2de8e8,_0x230f6e);};}exports[_0x36ca('0x3')]=function(_0x3737ee){for(var _0x3c38ef=0x0,_0x4076e5=events[_0x36ca('0x4')];_0x3c38ef<_0x4076e5;_0x3c38ef++){var _0x3c3dc4=events[_0x3c38ef];var _0x3c30d8=createListener(_0x36ca('0x5')+_0x3c3dc4,_0x3737ee);UserNotificationEvents['on'](_0x3c3dc4,_0x3c30d8);}};
\ No newline at end of file
index 9bf1569..f3ca650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x53807d,_0x4a90a8){var _0x501207=function(_0xea7078){while(--_0xea7078){_0x53807d['push'](_0x53807d['shift']());}};_0x501207(++_0x4a90a8);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x3c7a0f,_0x5b00da){var _0x14bdb2=function(_0x21b8a1){while(--_0x21b8a1){_0x3c7a0f['push'](_0x3c7a0f['shift']());}};_0x14bdb2(++_0x5b00da);}(_0x70e0,0x17b));var _0x070e=function(_0x5a207e,_0x1313bc){_0x5a207e=_0x5a207e-0x0;var _0x169931=_0x70e0[_0x5a207e];return _0x169931;};'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 519f46b..3f48b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29ae=['sequelize'];(function(_0x1a2275,_0x228c19){var _0x224cc5=function(_0x300383){while(--_0x300383){_0x1a2275['push'](_0x1a2275['shift']());}};_0x224cc5(++_0x228c19);}(_0x29ae,0x167));var _0xe29a=function(_0x2dd517,_0x2f6226){_0x2dd517=_0x2dd517-0x0;var _0x30d3e4=_0x29ae[_0x2dd517];return _0x30d3e4;};'use strict';var Sequelize=require(_0xe29a('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xce21=['exports','sequelize'];(function(_0x3cb162,_0x5418fb){var _0x53c4f8=function(_0x3517fa){while(--_0x3517fa){_0x3cb162['push'](_0x3cb162['shift']());}};_0x53c4f8(++_0x5418fb);}(_0xce21,0x9f));var _0x1ce2=function(_0x4f2c3a,_0x6bde90){_0x4f2c3a=_0x4f2c3a-0x0;var _0x17d91c=_0xce21[_0x4f2c3a];return _0x17d91c;};'use strict';var Sequelize=require(_0x1ce2('0x0'));module[_0x1ce2('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 601528b..6291e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c8a=['request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','api','moment','bluebird'];(function(_0x3ed049,_0x19da21){var _0x3d9597=function(_0x874e1f){while(--_0x874e1f){_0x3ed049['push'](_0x3ed049['shift']());}};_0x3d9597(++_0x19da21);}(_0x7c8a,0x141));var _0xa7c8=function(_0x4ee261,_0x3e4c5b){_0x4ee261=_0x4ee261-0x0;var _0x2c8dae=_0x7c8a[_0x4ee261];return _0x2c8dae;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xa7c8('0x0'));var moment=require(_0xa7c8('0x1'));var BPromise=require(_0xa7c8('0x2'));var rp=require(_0xa7c8('0x3'));var fs=require('fs');var path=require(_0xa7c8('0x4'));var rimraf=require(_0xa7c8('0x5'));var config=require(_0xa7c8('0x6'));var attributes=require(_0xa7c8('0x7'));module[_0xa7c8('0x8')]=function(_0x41b6fc,_0x2087a8){return _0x41b6fc[_0xa7c8('0x9')](_0xa7c8('0xa'),attributes,{'tableName':_0xa7c8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7fe=['../../config/environment','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','util','moment','bluebird','request-promise','rimraf'];(function(_0x5716fc,_0x29ae04){var _0x21e12a=function(_0x50764c){while(--_0x50764c){_0x5716fc['push'](_0x5716fc['shift']());}};_0x21e12a(++_0x29ae04);}(_0xb7fe,0x11d));var _0xeb7f=function(_0xaccf6d,_0x584ee3){_0xaccf6d=_0xaccf6d-0x0;var _0x5047e1=_0xb7fe[_0xaccf6d];return _0x5047e1;};'use strict';var _=require('lodash');var util=require(_0xeb7f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xeb7f('0x1'));var BPromise=require(_0xeb7f('0x2'));var rp=require(_0xeb7f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeb7f('0x4'));var config=require(_0xeb7f('0x5'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xeb7f('0x6')]=function(_0x3bf40a,_0x2f5668){return _0x3bf40a[_0xeb7f('0x7')](_0xeb7f('0x8'),attributes,{'tableName':_0xeb7f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4a8199..f51c603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa864=['UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa864,0x14b));var _0x4a86=function(_0x15797a,_0x16274f){_0x15797a=_0x15797a-0x0;var _0x3e2618=_0xa864[_0x15797a];return _0x3e2618;};'use strict';var _=require(_0x4a86('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4a86('0x1'));var rs=require(_0x4a86('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a86('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a86('0x4'))('rpc');var config=require(_0x4a86('0x5'));var jayson=require(_0x4a86('0x6'));var client=jayson[_0x4a86('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25eab2,_0x2b43f2,_0x423f7b){return new BPromise(function(_0x3afea6,_0x587e60){return client['request'](_0x25eab2,_0x423f7b)['then'](function(_0x5cf1fb){logger['info'](_0x4a86('0x8'),_0x2b43f2,_0x4a86('0x9'));logger[_0x4a86('0xa')](_0x4a86('0xb'),_0x2b43f2,'request\x20sent',JSON[_0x4a86('0xc')](_0x5cf1fb));if(_0x5cf1fb[_0x4a86('0xd')]){if(_0x5cf1fb[_0x4a86('0xd')][_0x4a86('0xe')]===0x1f4){logger[_0x4a86('0xd')](_0x4a86('0x8'),_0x2b43f2,_0x5cf1fb[_0x4a86('0xd')]['message']);return _0x587e60(_0x5cf1fb['error'][_0x4a86('0xf')]);}logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x2b43f2,_0x5cf1fb[_0x4a86('0xd')]['message']);return _0x3afea6(_0x5cf1fb[_0x4a86('0xd')][_0x4a86('0xf')]);}else{logger[_0x4a86('0x10')](_0x4a86('0x8'),_0x2b43f2,_0x4a86('0x9'));_0x3afea6(_0x5cf1fb[_0x4a86('0x11')][_0x4a86('0xf')]);}})['catch'](function(_0x2d543d){logger[_0x4a86('0xd')](_0x4a86('0x8'),_0x2b43f2,_0x2d543d);_0x587e60(_0x2d543d);});});}
\ No newline at end of file
+var _0x4142=['jayson/promise','client','then','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x276e5e,_0x21f3b5){var _0x55e116=function(_0x10c37f){while(--_0x10c37f){_0x276e5e['push'](_0x276e5e['shift']());}};_0x55e116(++_0x21f3b5);}(_0x4142,0x1d6));var _0x2414=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4142[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2414('0x0'));var util=require(_0x2414('0x1'));var moment=require(_0x2414('0x2'));var BPromise=require(_0x2414('0x3'));var rs=require(_0x2414('0x4'));var fs=require('fs');var Redis=require(_0x2414('0x5'));var db=require(_0x2414('0x6'))['db'];var utils=require(_0x2414('0x7'));var logger=require('../../config/logger')(_0x2414('0x8'));var config=require(_0x2414('0x9'));var jayson=require(_0x2414('0xa'));var client=jayson[_0x2414('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55fb34,_0x48e03d,_0x444e4b){return new BPromise(function(_0x2b0159,_0x6b879e){return client['request'](_0x55fb34,_0x444e4b)[_0x2414('0xc')](function(_0x233f17){logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0x48e03d,'request\x20sent');logger[_0x2414('0xd')](_0x2414('0xe'),_0x48e03d,_0x2414('0xf'),JSON[_0x2414('0x10')](_0x233f17));if(_0x233f17[_0x2414('0x11')]){if(_0x233f17[_0x2414('0x11')][_0x2414('0x12')]===0x1f4){logger[_0x2414('0x11')](_0x2414('0x13'),_0x48e03d,_0x233f17[_0x2414('0x11')]['message']);return _0x6b879e(_0x233f17[_0x2414('0x11')][_0x2414('0x14')]);}logger[_0x2414('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x48e03d,_0x233f17[_0x2414('0x11')][_0x2414('0x14')]);return _0x2b0159(_0x233f17[_0x2414('0x11')][_0x2414('0x14')]);}else{logger[_0x2414('0x15')](_0x2414('0x13'),_0x48e03d,_0x2414('0xf'));_0x2b0159(_0x233f17[_0x2414('0x16')][_0x2414('0x14')]);}})[_0x2414('0x17')](function(_0x32858b){logger[_0x2414('0x11')](_0x2414('0x13'),_0x48e03d,_0x32858b);_0x6b879e(_0x32858b);});});}
\ No newline at end of file
index aa57849..d2d9e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x054b=['/:id/sections','getSections','/:id/resources','post','create','/:id/clone','clone','addSections','put','update','delete','destroy','removeResources','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./userProfile.controller','get','isAuthenticated','index','describe','/:id'];(function(_0xe84ad0,_0x157d0b){var _0x4fc43f=function(_0x4dd448){while(--_0x4dd448){_0xe84ad0['push'](_0xe84ad0['shift']());}};_0x4fc43f(++_0x157d0b);}(_0x054b,0xcb));var _0xb054=function(_0x33dc33,_0x57ea07){_0x33dc33=_0x33dc33-0x0;var _0x575239=_0x054b[_0x33dc33];return _0x575239;};'use strict';var multer=require(_0xb054('0x0'));var util=require(_0xb054('0x1'));var path=require(_0xb054('0x2'));var timeout=require('connect-timeout');var express=require(_0xb054('0x3'));var router=express[_0xb054('0x4')]();var fs_extra=require(_0xb054('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb054('0x6'));var config=require('../../config/environment');var controller=require(_0xb054('0x7'));router[_0xb054('0x8')]('/',auth[_0xb054('0x9')](),controller[_0xb054('0xa')]);router[_0xb054('0x8')]('/describe',auth[_0xb054('0x9')](),controller[_0xb054('0xb')]);router[_0xb054('0x8')](_0xb054('0xc'),auth[_0xb054('0x9')](),controller['show']);router[_0xb054('0x8')](_0xb054('0xd'),auth[_0xb054('0x9')](),controller[_0xb054('0xe')]);router[_0xb054('0x8')](_0xb054('0xf'),auth[_0xb054('0x9')](),controller['getResources']);router[_0xb054('0x10')]('/',auth[_0xb054('0x9')](),controller[_0xb054('0x11')]);router['post'](_0xb054('0x12'),auth['isAuthenticated'](),controller[_0xb054('0x13')]);router['post'](_0xb054('0xd'),auth[_0xb054('0x9')](),controller[_0xb054('0x14')]);router[_0xb054('0x10')]('/:id/resources',auth['isAuthenticated'](),controller['addResources']);router[_0xb054('0x15')](_0xb054('0xc'),auth[_0xb054('0x9')](),controller[_0xb054('0x16')]);router[_0xb054('0x17')](_0xb054('0xc'),auth[_0xb054('0x9')](),controller[_0xb054('0x18')]);router[_0xb054('0x17')](_0xb054('0xd'),auth['isAuthenticated'](),controller['removeSections']);router[_0xb054('0x17')]('/:id/resources',auth[_0xb054('0x9')](),controller[_0xb054('0x19')]);module[_0xb054('0x1a')]=router;
\ No newline at end of file
+var _0x597a=['exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','describe','/:id','show','/:id/sections','/:id/resources','post','create','addSections','addResources','update','delete','destroy','removeSections','removeResources'];(function(_0x54381c,_0x2673ce){var _0xc4f376=function(_0x4e7fff){while(--_0x4e7fff){_0x54381c['push'](_0x54381c['shift']());}};_0xc4f376(++_0x2673ce);}(_0x597a,0x109));var _0xa597=function(_0x5ed71a,_0x555e92){_0x5ed71a=_0x5ed71a-0x0;var _0xc85dd4=_0x597a[_0x5ed71a];return _0xc85dd4;};'use strict';var multer=require(_0xa597('0x0'));var util=require(_0xa597('0x1'));var path=require(_0xa597('0x2'));var timeout=require('connect-timeout');var express=require(_0xa597('0x3'));var router=express['Router']();var fs_extra=require(_0xa597('0x4'));var auth=require(_0xa597('0x5'));var interaction=require(_0xa597('0x6'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0xa597('0x7')]('/',auth[_0xa597('0x8')](),controller['index']);router[_0xa597('0x7')]('/describe',auth[_0xa597('0x8')](),controller[_0xa597('0x9')]);router[_0xa597('0x7')](_0xa597('0xa'),auth[_0xa597('0x8')](),controller[_0xa597('0xb')]);router[_0xa597('0x7')](_0xa597('0xc'),auth['isAuthenticated'](),controller['getSections']);router[_0xa597('0x7')](_0xa597('0xd'),auth[_0xa597('0x8')](),controller['getResources']);router[_0xa597('0xe')]('/',auth['isAuthenticated'](),controller[_0xa597('0xf')]);router[_0xa597('0xe')]('/:id/clone',auth[_0xa597('0x8')](),controller['clone']);router[_0xa597('0xe')](_0xa597('0xc'),auth['isAuthenticated'](),controller[_0xa597('0x10')]);router[_0xa597('0xe')](_0xa597('0xd'),auth[_0xa597('0x8')](),controller[_0xa597('0x11')]);router['put']('/:id',auth[_0xa597('0x8')](),controller[_0xa597('0x12')]);router[_0xa597('0x13')](_0xa597('0xa'),auth['isAuthenticated'](),controller[_0xa597('0x14')]);router['delete'](_0xa597('0xc'),auth[_0xa597('0x8')](),controller[_0xa597('0x15')]);router[_0xa597('0x13')](_0xa597('0xd'),auth['isAuthenticated'](),controller[_0xa597('0x16')]);module[_0xa597('0x17')]=router;
\ No newline at end of file
index 54669c5..429eb91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d92=['getDataValue','split','STRING','BOOLEAN','sequelize','exports','setDataValue','crudPermissions','join'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1d92,0x12d));var _0x21d9=function(_0x483e4a,_0x32aa45){_0x483e4a=_0x483e4a-0x0;var _0x31fba5=_0x1d92[_0x483e4a];return _0x31fba5;};'use strict';var Sequelize=require(_0x21d9('0x0'));module[_0x21d9('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x3d68f7){this[_0x21d9('0x2')](_0x21d9('0x3'),_0x3d68f7?_0x3d68f7[_0x21d9('0x4')](''):[]);},'get':function(){return this[_0x21d9('0x5')](_0x21d9('0x3'))?this['getDataValue'](_0x21d9('0x3'))[_0x21d9('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x21d9('0x7')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x21d9('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x21d9('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x21d9('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x21d9('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x21d9('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe11c=['getDataValue','crudPermissions','split','BOOLEAN','sequelize','exports','STRING','name','join'];(function(_0x9b4cda,_0x206ec1){var _0x1ac6c5=function(_0x4ba0a3){while(--_0x4ba0a3){_0x9b4cda['push'](_0x9b4cda['shift']());}};_0x1ac6c5(++_0x206ec1);}(_0xe11c,0x187));var _0xce11=function(_0x31c48b,_0x4d00d8){_0x31c48b=_0x31c48b-0x0;var _0x39aeed=_0xe11c[_0x31c48b];return _0x39aeed;};'use strict';var Sequelize=require(_0xce11('0x0'));module[_0xce11('0x1')]={'name':{'type':Sequelize[_0xce11('0x2')],'allowNull':![],'unique':_0xce11('0x3')},'crudPermissions':{'type':Sequelize[_0xce11('0x2')],'set':function(_0x5ecb3b){this['setDataValue']('crudPermissions',_0x5ecb3b?_0x5ecb3b[_0xce11('0x4')](''):[]);},'get':function(){return this[_0xce11('0x5')]('crudPermissions')?this['getDataValue'](_0xce11('0x6'))[_0xce11('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xce11('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xce11('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 0335da5..57f1e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6326=['sort','where','pick','filter','merge','VIRTUAL','options','UserProfile','includeAll','findAll','rows','show','params','keys','length','include','catch','create','omit','updatedAt','crudPermissions','body','createdAt','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','update','find','describe','addSections','sequelize','sectionId','userProfileId','Resources','get','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','push','findOne','forEach','Plugin','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x84eb29,_0x497dfe){var _0x4ecb58=function(_0x4f05bf){while(--_0x4f05bf){_0x84eb29['push'](_0x84eb29['shift']());}};_0x4ecb58(++_0x497dfe);}(_0x6326,0xac));var _0x6632=function(_0xb56714,_0x59bb38){_0xb56714=_0xb56714-0x0;var _0x4bd2f7=_0x6326[_0xb56714];return _0x4bd2f7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6632('0x0'));var zipdir=require(_0x6632('0x1'));var jsonpatch=require(_0x6632('0x2'));var rp=require(_0x6632('0x3'));var moment=require(_0x6632('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6632('0x5'));var util=require(_0x6632('0x6'));var path=require('path');var sox=require(_0x6632('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6632('0x8'));var squel=require(_0x6632('0x9'));var crypto=require(_0x6632('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x6632('0xb'));var toCsv=require('to-csv');var querystring=require(_0x6632('0xc'));var Papa=require(_0x6632('0xd'));var Redis=require(_0x6632('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6632('0xf'));var as=require(_0x6632('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6632('0x11'))(_0x6632('0x12'));var utils=require(_0x6632('0x13'));var config=require(_0x6632('0x14'));var licenseUtil=require(_0x6632('0x15'));var db=require(_0x6632('0x16'))['db'];config[_0x6632('0x17')]=_[_0x6632('0x18')](config[_0x6632('0x17')],{'host':_0x6632('0x19'),'port':0x18eb});var socket=require(_0x6632('0x1a'))(new Redis(config[_0x6632('0x17')]));require(_0x6632('0x1b'))[_0x6632('0x1c')](socket);function respondWithStatusCode(_0x15cbdd,_0x3a0104){_0x3a0104=_0x3a0104||0xcc;return function(_0xea1c5){if(_0xea1c5){return _0x15cbdd['sendStatus'](_0x3a0104);}return _0x15cbdd[_0x6632('0x1d')](_0x3a0104)[_0x6632('0x1e')]();};}function respondWithResult(_0x52f989,_0xb195c1){_0xb195c1=_0xb195c1||0xc8;return function(_0x3e8bd2){if(_0x3e8bd2){return _0x52f989['status'](_0xb195c1)[_0x6632('0x1f')](_0x3e8bd2);}};}function respondWithFilteredResult(_0x3e74be,_0x596cc0){return function(_0x2bfa57){if(_0x2bfa57){var _0x2f5c1e=typeof _0x596cc0[_0x6632('0x20')]===_0x6632('0x21')&&typeof _0x596cc0[_0x6632('0x22')]===_0x6632('0x21');var _0xfd04e7=_0x2bfa57[_0x6632('0x23')];var _0x36922f=_0x2f5c1e?0x0:_0x596cc0[_0x6632('0x20')];var _0x1f603b=_0x2f5c1e?_0x2bfa57[_0x6632('0x23')]:_0x596cc0[_0x6632('0x20')]+_0x596cc0['limit'];var _0x117412;if(_0x1f603b>=_0xfd04e7){_0x1f603b=_0xfd04e7;_0x117412=0xc8;}else{_0x117412=0xce;}_0x3e74be[_0x6632('0x1d')](_0x117412);return _0x3e74be['set'](_0x6632('0x24'),_0x36922f+'-'+_0x1f603b+'/'+_0xfd04e7)['json'](_0x2bfa57);}return null;};}function patchUpdates(_0x1e4dcf){return function(_0x498694){try{jsonpatch[_0x6632('0x25')](_0x498694,_0x1e4dcf,!![]);}catch(_0xefc6ea){return BPromise[_0x6632('0x26')](_0xefc6ea);}return _0x498694[_0x6632('0x27')]();};}function saveUpdates(_0x14d5df,_0x31e9f1){return function(_0x53fc8e){if(_0x53fc8e){return _0x53fc8e['update'](_0x14d5df)[_0x6632('0x28')](function(_0x366da1){return _0x366da1;});}return null;};}function removeEntity(_0x33248c,_0x6538ce){return function(_0x320251){if(_0x320251){return _0x320251[_0x6632('0x29')]()[_0x6632('0x28')](function(){_0x33248c[_0x6632('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a04cb,_0x13926c){return function(_0x2f8e47){if(!_0x2f8e47){_0x5a04cb[_0x6632('0x2a')](0x194);}return _0x2f8e47;};}function handleError(_0x23350e,_0x6143f8){_0x6143f8=_0x6143f8||0x1f4;return function(_0x237237){logger[_0x6632('0x2b')](_0x237237[_0x6632('0x2c')]);if(_0x237237[_0x6632('0x2d')]){delete _0x237237[_0x6632('0x2d')];}_0x23350e['status'](_0x6143f8)[_0x6632('0x2e')](_0x237237);};}exports[_0x6632('0x2f')]=function(_0x18d063,_0x2c4169){var _0x2a0337={},_0x3cad54={},_0x3dde2a={'count':0x0,'rows':[]};var _0x17c655=_[_0x6632('0x30')](db['UserProfile'][_0x6632('0x31')],function(_0x314351){return{'name':_0x314351[_0x6632('0x32')],'type':_0x314351[_0x6632('0x33')][_0x6632('0x34')]};});_0x3cad54[_0x6632('0x35')]=_[_0x6632('0x30')](_0x17c655,'name');_0x3cad54['query']=_['keys'](_0x18d063[_0x6632('0x36')]);_0x3cad54[_0x6632('0x37')]=_[_0x6632('0x38')](_0x3cad54[_0x6632('0x35')],_0x3cad54['query']);_0x2a0337[_0x6632('0x39')]=_[_0x6632('0x38')](_0x3cad54['model'],qs[_0x6632('0x3a')](_0x18d063['query'][_0x6632('0x3a')]));_0x2a0337[_0x6632('0x39')]=_0x2a0337['attributes']['length']?_0x2a0337[_0x6632('0x39')]:_0x3cad54[_0x6632('0x35')];if(!_0x18d063[_0x6632('0x36')][_0x6632('0x3b')](_0x6632('0x3c'))){_0x2a0337[_0x6632('0x22')]=qs[_0x6632('0x22')](_0x18d063[_0x6632('0x36')][_0x6632('0x22')]);_0x2a0337['offset']=qs[_0x6632('0x20')](_0x18d063[_0x6632('0x36')][_0x6632('0x20')]);}_0x2a0337[_0x6632('0x3d')]=qs[_0x6632('0x3e')](_0x18d063[_0x6632('0x36')]['sort']);_0x2a0337[_0x6632('0x3f')]=qs[_0x6632('0x37')](_[_0x6632('0x40')](_0x18d063[_0x6632('0x36')],_0x3cad54[_0x6632('0x37')]),_0x17c655);if(_0x18d063[_0x6632('0x36')][_0x6632('0x41')]){_0x2a0337[_0x6632('0x3f')]=_[_0x6632('0x42')](_0x2a0337[_0x6632('0x3f')],{'$or':_['map'](_0x17c655,function(_0xf597b1){if(_0xf597b1['type']!==_0x6632('0x43')){var _0x18998e={};_0x18998e[_0xf597b1[_0x6632('0x2d')]]={'$like':'%'+_0x18d063[_0x6632('0x36')]['filter']+'%'};return _0x18998e;}})});}_0x2a0337=_['merge']({},_0x2a0337,_0x18d063[_0x6632('0x44')]);var _0x104eb4={'where':_0x2a0337['where']};return db[_0x6632('0x45')]['count'](_0x104eb4)[_0x6632('0x28')](function(_0x1ec583){_0x3dde2a[_0x6632('0x23')]=_0x1ec583;if(_0x18d063[_0x6632('0x36')][_0x6632('0x46')]){_0x2a0337['include']=[{'all':!![]}];}return db[_0x6632('0x45')][_0x6632('0x47')](_0x2a0337);})['then'](function(_0x3a4fd5){_0x3dde2a[_0x6632('0x48')]=_0x3a4fd5;return _0x3dde2a;})[_0x6632('0x28')](respondWithFilteredResult(_0x2c4169,_0x2a0337))['catch'](handleError(_0x2c4169,null));};exports[_0x6632('0x49')]=function(_0xd364d8,_0x349893){var _0x29206d={'raw':![],'where':{'id':_0xd364d8[_0x6632('0x4a')]['id']}},_0x285d7a={};_0x285d7a[_0x6632('0x35')]=_[_0x6632('0x4b')](db[_0x6632('0x45')][_0x6632('0x31')]);_0x285d7a[_0x6632('0x36')]=_[_0x6632('0x4b')](_0xd364d8['query']);_0x285d7a[_0x6632('0x37')]=_[_0x6632('0x38')](_0x285d7a['model'],_0x285d7a[_0x6632('0x36')]);_0x29206d[_0x6632('0x39')]=_[_0x6632('0x38')](_0x285d7a[_0x6632('0x35')],qs[_0x6632('0x3a')](_0xd364d8['query'][_0x6632('0x3a')]));_0x29206d[_0x6632('0x39')]=_0x29206d[_0x6632('0x39')][_0x6632('0x4c')]?_0x29206d[_0x6632('0x39')]:_0x285d7a[_0x6632('0x35')];if(_0xd364d8[_0x6632('0x36')][_0x6632('0x46')]){_0x29206d[_0x6632('0x4d')]=[{'all':!![]}];}_0x29206d=_[_0x6632('0x42')]({},_0x29206d,_0xd364d8['options']);return db[_0x6632('0x45')]['find'](_0x29206d)[_0x6632('0x28')](handleEntityNotFound(_0x349893,null))[_0x6632('0x28')](respondWithResult(_0x349893,null))[_0x6632('0x4e')](handleError(_0x349893,null));};exports['create']=function(_0x374e75,_0xc43a78){return db['UserProfile'][_0x6632('0x4f')](_0x374e75['body'],{})[_0x6632('0x28')](respondWithResult(_0xc43a78,0xc9))['catch'](handleError(_0xc43a78,null));};exports['clone']=function(_0x328c41,_0x4e9cd2){var _0x4952d0={'where':{'id':_0x328c41[_0x6632('0x4a')]['id']}},_0x517c92={};_0x517c92['model']=_[_0x6632('0x4b')](db[_0x6632('0x45')][_0x6632('0x31')]);_0x4952d0[_0x6632('0x39')]=_[_0x6632('0x38')](_0x517c92[_0x6632('0x35')],qs['fields'](_0x328c41[_0x6632('0x36')][_0x6632('0x3a')]));_0x4952d0[_0x6632('0x39')]=_0x4952d0[_0x6632('0x39')][_0x6632('0x4c')]?_0x4952d0[_0x6632('0x39')]:_0x517c92['model'];if(_0x328c41['query'][_0x6632('0x46')]){_0x4952d0[_0x6632('0x4d')]=[{'all':!![]}];}_0x4952d0=_[_0x6632('0x42')]({},_0x4952d0,_0x328c41['options']);return db['UserProfile']['find'](_0x4952d0)[_0x6632('0x28')](handleEntityNotFound(_0x4e9cd2,null))[_0x6632('0x28')](function(_0x5b3ec2){if(_0x5b3ec2){var _0x4783d0=_0x5b3ec2['get']({'plain':!![]});_0x4783d0=qs[_0x6632('0x50')](_0x4783d0,['id','createdAt',_0x6632('0x51'),_0x6632('0x52')]);_0x328c41[_0x6632('0x53')]=_[_0x6632('0x50')](_0x328c41[_0x6632('0x53')],['id',_0x6632('0x54'),_0x6632('0x51')]);return db['sequelize'][_0x6632('0x55')](function(_0x5931e6){return db['UserProfile'][_0x6632('0x4f')](_[_0x6632('0x42')](_0x4783d0,_0x328c41[_0x6632('0x53')]),{'include':_0x328c41['query'][_0x6632('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x5931e6})[_0x6632('0x28')](function(_0x5172ff){var _0x585a34=_0x5172ff['get']({'plain':!![]});return db[_0x6632('0x56')]['findAll']({'where':{'userProfileId':_0x328c41[_0x6632('0x4a')]['id']},'raw':!![]})['then'](function(_0x1e7c14){if(_0x1e7c14){return BPromise[_0x6632('0x57')](_0x1e7c14,function(_0x1038ba){return new BPromise(function(_0x2694a1,_0x87fedd){if(_0x1038ba[_0x6632('0x58')]===null||_0x1038ba[_0x6632('0x58')]===0x1)_0x2694a1(null);return db[_0x6632('0x59')][_0x6632('0x47')]({'where':{'sectionId':_0x1038ba['id']},'raw':!![]})[_0x6632('0x28')](function(_0x3a1dd9){var _0x36cb2b=_['map'](_0x3a1dd9,function(_0x46d4c5){return qs[_0x6632('0x50')](_0x46d4c5,['id',_0x6632('0x54'),'updatedAt','sectionId']);});_0x2694a1(_0x36cb2b);})[_0x6632('0x4e')](function(_0x5b6e8a){_0x87fedd(_0x5b6e8a);});})[_0x6632('0x28')](function(_0x26b57a){var _0x928e18=qs[_0x6632('0x50')](_0x1038ba,['id',_0x6632('0x54'),_0x6632('0x51')]);_0x928e18['userProfileId']=_0x585a34['id'];if(_0x26b57a)_0x928e18['Resources']=_0x26b57a;return _0x928e18;})[_0x6632('0x28')](function(_0x39ef36){return db[_0x6632('0x56')]['create'](_0x39ef36,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x5931e6});});})[_0x6632('0x28')](function(){return _0x585a34;});}});});});}})[_0x6632('0x28')](respondWithResult(_0x4e9cd2,0xc9))[_0x6632('0x4e')](handleError(_0x4e9cd2,null));};exports[_0x6632('0x5a')]=function(_0x14416d,_0x176601){if(_0x14416d[_0x6632('0x53')]['id']){delete _0x14416d[_0x6632('0x53')]['id'];}return db[_0x6632('0x45')][_0x6632('0x5b')]({'where':{'id':_0x14416d['params']['id']}})[_0x6632('0x28')](handleEntityNotFound(_0x176601,null))[_0x6632('0x28')](saveUpdates(_0x14416d['body'],null))[_0x6632('0x28')](respondWithResult(_0x176601,null))[_0x6632('0x4e')](handleError(_0x176601,null));};exports[_0x6632('0x29')]=function(_0x192554,_0x2c0302){return db[_0x6632('0x45')][_0x6632('0x5b')]({'where':{'id':_0x192554[_0x6632('0x4a')]['id']}})[_0x6632('0x28')](handleEntityNotFound(_0x2c0302,null))[_0x6632('0x28')](removeEntity(_0x2c0302,null))[_0x6632('0x4e')](handleError(_0x2c0302,null));};exports[_0x6632('0x5c')]=function(_0x3188ba,_0x216672){return db['UserProfile'][_0x6632('0x5c')]()['then'](respondWithResult(_0x216672,null))[_0x6632('0x4e')](handleError(_0x216672,null));};exports[_0x6632('0x5d')]=function(_0x525cfc,_0x46c400){var _0xe13a81=_0x525cfc[_0x6632('0x53')];return db[_0x6632('0x45')][_0x6632('0x5b')]({'where':{'id':_0x525cfc[_0x6632('0x4a')]['id']}})[_0x6632('0x28')](handleEntityNotFound(_0x46c400,null))[_0x6632('0x28')](function(_0x5bb4ba){if(_0x5bb4ba){return db[_0x6632('0x5e')][_0x6632('0x55')](function(_0x393bf1){return db[_0x6632('0x56')][_0x6632('0x29')]({'where':{'userProfileId':_0x525cfc['params']['id'],'sectionId':_[_0x6632('0x30')](_0xe13a81,function(_0x499df5){return _0x499df5[_0x6632('0x5f')];})},'transaction':_0x393bf1})[_0x6632('0x28')](function(){var _0x16de69=_[_0x6632('0x30')](_0xe13a81,function(_0x42320f){_0x42320f[_0x6632('0x60')]=_0x525cfc[_0x6632('0x4a')]['id'];return _0x42320f;});var _0x3b504b=[];return BPromise[_0x6632('0x57')](_0x16de69,function(_0x4057bb){return db['UserProfileSection'][_0x6632('0x4f')](_0x4057bb,{'include':[{'model':db[_0x6632('0x59')],'as':_0x6632('0x61')}],'raw':!![],'transaction':_0x393bf1})[_0x6632('0x28')](function(_0x385d91){_0x3b504b['push'](_0x385d91[_0x6632('0x62')]({'plain':!![]}));});})['then'](function(){return _0x3b504b;});});});}})[_0x6632('0x28')](function(_0x288f1f){return _0x288f1f;})[_0x6632('0x28')](respondWithResult(_0x46c400,null))[_0x6632('0x4e')](handleError(_0x46c400,null));};exports[_0x6632('0x63')]=function(_0x58ffe6,_0x399e85){var _0x4f2858;return db['UserProfile'][_0x6632('0x5b')]({'where':{'id':_0x58ffe6['params']['id']},'attributes':['id',_0x6632('0x2d')]})[_0x6632('0x28')](handleEntityNotFound(_0x399e85,null))[_0x6632('0x28')](function(_0x5cde9d){if(_0x5cde9d){_0x4f2858=_0x5cde9d;return db[_0x6632('0x56')]['destroy']({'where':{'userProfileId':_0x58ffe6[_0x6632('0x4a')]['id'],'sectionId':_0x58ffe6[_0x6632('0x36')][_0x6632('0x64')]}});}})[_0x6632('0x28')](function(){return _0x4f2858;})[_0x6632('0x28')](respondWithStatusCode(_0x399e85,null))[_0x6632('0x4e')](handleError(_0x399e85,null));};exports[_0x6632('0x65')]=function(_0x152259,_0x408d88){var _0x2ea24f=[];var _0x4cff19=[];return db[_0x6632('0x56')][_0x6632('0x47')]({'where':{'userProfileId':_0x152259[_0x6632('0x4a')]['id']},'raw':!![]})[_0x6632('0x28')](function(_0x592884){_0x2ea24f=_['filter'](_0x592884,function(_0x24171d){return _0x24171d[_0x6632('0x66')]===0x1||_[_0x6632('0x67')]([0x3eb,0x709],_0x24171d[_0x6632('0x5f')]);});if(!_[_0x6632('0x68')](_0x2ea24f)){return _[_0x6632('0x30')](_0x2ea24f,function(_0x264ed1){return _0x264ed1[_0x6632('0x5f')];});}else{return;}})[_0x6632('0x28')](function(_0x5f3fd3){if(_0x5f3fd3)_0x4cff19=_0x5f3fd3;if(_['includes'](_0x4cff19,0x64)){var _0x2b361f=_['find'](_0x2ea24f,{'sectionId':0x64});return hasDefaultDashboard(_0x2b361f)[_0x6632('0x28')](function(_0x36008d){return _['map'](_0x2ea24f,function(_0x1e6c36){if(_0x1e6c36[_0x6632('0x5f')]===0x64){_0x1e6c36[_0x6632('0x69')]=_0x36008d;}return _0x1e6c36;});});}else{return;}})[_0x6632('0x28')](function(_0x237421){if(_0x237421)_0x2ea24f=_0x237421;if(_[_0x6632('0x67')](_0x4cff19,0x3eb)){var _0x36daf0=_[_0x6632('0x5b')](_0x2ea24f,{'sectionId':0x3eb});return getCustomDashboards(_0x36daf0)[_0x6632('0x28')](function(_0x2384d0){return _[_0x6632('0x30')](_0x2ea24f,function(_0x1606e0){if(_0x36daf0['enabled']){if(_0x1606e0['sectionId']===0x3eb){_0x1606e0[_0x6632('0x69')]=_0x2384d0;}}else{if(_0x1606e0[_0x6632('0x5f')]===0x64){if(!_0x1606e0[_0x6632('0x69')]){_0x1606e0[_0x6632('0x69')]=[];}_0x1606e0['subsections']=_0x1606e0[_0x6632('0x69')]['concat'](_0x2384d0);}}return _0x1606e0;});});}else{return;}})[_0x6632('0x28')](function(_0xe9769d){if(_0xe9769d)_0x2ea24f=_0xe9769d;if(_[_0x6632('0x67')](_0x4cff19,0x709)){var _0x335a3d=_[_0x6632('0x5b')](_0x2ea24f,{'sectionId':0x709});return getPlugins(_0x335a3d)[_0x6632('0x28')](function(_0x4cd15c){if(_0x335a3d[_0x6632('0x66')]){return _['map'](_0x2ea24f,function(_0x5f1906){if(_0x5f1906['sectionId']===0x709){_0x5f1906[_0x6632('0x69')]=_0x4cd15c;}return _0x5f1906;});}else{var _0x19ed6d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4cd15c};var _0x5915bf=_[_0x6632('0x30')](_0x2ea24f);_0x5915bf[_0x6632('0x6a')](_0x19ed6d);return _0x5915bf;}});}else{return;}})[_0x6632('0x28')](function(_0x33f05c){if(_0x33f05c)_0x2ea24f=_0x33f05c;return _['filter'](_0x2ea24f,['enabled',0x1]);})[_0x6632('0x28')](respondWithResult(_0x408d88,null))[_0x6632('0x4e')](handleError(_0x408d88,null));};function hasDefaultDashboard(_0x2f361e){var _0x48f155=[0x65];return new BPromise(function(_0x4f0862,_0x29cddf){try{if(_0x2f361e[_0x6632('0x58')]){_0x4f0862(_0x48f155);}else{return db[_0x6632('0x59')][_0x6632('0x6b')]({'where':{'sectionId':_0x2f361e['id']},'raw':!![]})[_0x6632('0x28')](function(_0x1f736f){_0x1f736f?_0x4f0862(_0x48f155):_0x4f0862();});}}catch(_0x16327a){_0x29cddf(_0x16327a);}});}function getCustomDashboards(_0x1eeb56){var _0x3b2ade=[];return new BPromise(function(_0x47bddf,_0x453261){try{if(_0x1eeb56[_0x6632('0x58')]){return db['Dashboard'][_0x6632('0x47')]({'raw':!![]})[_0x6632('0x28')](function(_0x2c4792){_0x2c4792[_0x6632('0x6c')](function(_0x2121f4){_0x3b2ade['push'](_0x2121f4['id']+0x1869f);});_0x47bddf(_0x3b2ade);});}else{return db[_0x6632('0x59')][_0x6632('0x47')]({'where':{'sectionId':_0x1eeb56['id']},'raw':!![]})[_0x6632('0x28')](function(_0x2e6d48){_0x2e6d48[_0x6632('0x6c')](function(_0x1102b2){_0x3b2ade[_0x6632('0x6a')](_0x1102b2['resourceId']+0x1869f);});_0x47bddf(_0x3b2ade);});}}catch(_0x22ca15){_0x453261(_0x22ca15);}});}function getPlugins(_0x209c1c){var _0x580680=[];return new BPromise(function(_0x3077e2,_0x1839e3){try{if(_0x209c1c[_0x6632('0x58')]){return db[_0x6632('0x6d')][_0x6632('0x47')]({'raw':!![]})[_0x6632('0x28')](function(_0x39be43){_0x39be43[_0x6632('0x6c')](function(_0x131978){_0x580680[_0x6632('0x6a')](_0x131978['id']+0x15b38);});_0x3077e2(_0x580680);});}else{return db[_0x6632('0x59')][_0x6632('0x47')]({'where':{'sectionId':_0x209c1c['id']},'raw':!![]})[_0x6632('0x28')](function(_0x2171b2){_0x2171b2['forEach'](function(_0x4ac678){_0x580680[_0x6632('0x6a')](_0x4ac678['resourceId']+0x15b38);});_0x3077e2(_0x580680);});}}catch(_0x147573){_0x1839e3(_0x147573);}});}exports[_0x6632('0x6e')]=function(_0x59f673,_0x234ef6){return db['UserProfile']['find']({'where':{'id':_0x59f673[_0x6632('0x4a')]['id']}})[_0x6632('0x28')](handleEntityNotFound(_0x234ef6,null))[_0x6632('0x28')](function(_0x5bf3bf){if(_0x5bf3bf){return db['sequelize'][_0x6632('0x55')](function(_0x2b1350){return db[_0x6632('0x56')][_0x6632('0x47')]({'where':{'userProfileId':_0x59f673['params']['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x1923bd){if(_0x1923bd){return db[_0x6632('0x56')][_0x6632('0x29')]({'where':{'userProfileId':_0x59f673['params']['id'],'id':_[_0x6632('0x30')](_0x1923bd,function(_0xbe6c62){return _0xbe6c62['id'];})},'transaction':_0x2b1350});}})['then'](function(_0x4d720b){var _0x5a8e56=_[_0x6632('0x30')](_0x59f673[_0x6632('0x53')],function(_0x4cfc0e){_0x4cfc0e['userProfileId']=_0x59f673[_0x6632('0x4a')]['id'];return _0x4cfc0e;});return db[_0x6632('0x56')]['bulkCreate'](_0x5a8e56,{'raw':!![],'transaction':_0x2b1350});})[_0x6632('0x28')](function(_0x25c57b){var _0x1aae2a=_[_0x6632('0x41')](_[_0x6632('0x30')](_0x25c57b,function(_0x52876e){return _0x52876e[_0x6632('0x62')]({'plain':!![]});}),{'includeAll':![]});if(_0x1aae2a){return db['UserProfileSection'][_0x6632('0x47')]({'where':{'userProfileId':_0x59f673[_0x6632('0x4a')]['id'],'sectionId':_['map'](_0x1aae2a,function(_0x43e6bf){return _0x43e6bf[_0x6632('0x5f')];})},'attributes':['id',_0x6632('0x5f')],'raw':!![]})['then'](function(_0x31db92){var _0x541a5f=_['map'](_0x59f673[_0x6632('0x53')],function(_0x3b437e){_0x3b437e[_0x6632('0x60')]=_0x59f673[_0x6632('0x4a')]['id'];return _0x3b437e;});return db[_0x6632('0x59')][_0x6632('0x6f')](_0x541a5f,{'raw':!![],'transaction':_0x2b1350});});}})[_0x6632('0x4e')](handleError(_0x234ef6,null));});}})['then'](function(_0x4e4526){var _0x461fb6=_[_0x6632('0x30')](_0x4e4526,function(_0x4a0b8e){return _0x4a0b8e[_0x6632('0x62')]({'plain':!![]});});})[_0x6632('0x28')](respondWithResult(_0x234ef6,null))[_0x6632('0x4e')](handleError(_0x234ef6,null));};exports[_0x6632('0x70')]=function(_0x45196c,_0x28108e,_0x49eb5a){return db[_0x6632('0x45')][_0x6632('0x5b')]({'where':{'id':_0x45196c[_0x6632('0x4a')]['id']}})[_0x6632('0x28')](handleEntityNotFound(_0x28108e,null))[_0x6632('0x28')](function(_0x3ac7a4){if(_0x3ac7a4){return _0x3ac7a4[_0x6632('0x70')](_0x45196c['query'][_0x6632('0x64')]);}})[_0x6632('0x28')](respondWithStatusCode(_0x28108e,null))['catch'](handleError(_0x28108e,null));};exports['getResources']=function(_0x3d2ca9,_0x52a33d){var _0x27a68e={};if(!_0x3d2ca9[_0x6632('0x36')][_0x6632('0x71')])throw new Error(_0x6632('0x72'));if(!_0x3d2ca9['query'][_0x6632('0x3b')](_0x6632('0x3c'))){_0x27a68e[_0x6632('0x22')]=qs[_0x6632('0x22')](_0x3d2ca9['query'][_0x6632('0x22')]);_0x27a68e['offset']=qs['offset'](_0x3d2ca9['query'][_0x6632('0x20')]);}return db[_0x6632('0x45')][_0x6632('0x5b')]({'where':{'id':_0x3d2ca9[_0x6632('0x4a')]['id']}})[_0x6632('0x28')](function(_0x26809d){if(!_0x26809d)throw new Error(_0x6632('0x73')+_0x3d2ca9['params']['id']);return db[_0x6632('0x45')][_0x6632('0x74')](_0x3d2ca9);})[_0x6632('0x28')](respondWithFilteredResult(_0x52a33d,_0x27a68e))[_0x6632('0x4e')](handleError(_0x52a33d,null));};
\ No newline at end of file
+var _0x1ab9=['UserProfileResource','omit','sectionId','userProfileId','Resources','UserProfileSection','describe','addSections','sequelize','push','removeSections','getSections','enabled','includes','subsections','concat','findOne','Dashboard','forEach','resourceId','Plugin','addResources','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','request-promise','moment','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','UserProfile','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','includeAll','findAll','rows','catch','show','rawAttributes','length','include','merge','options','find','create','body','clone','get','updatedAt','crudPermissions','createdAt','transaction','params','autoAssociation'];(function(_0x31282b,_0xa476db){var _0x19c632=function(_0x207214){while(--_0x207214){_0x31282b['push'](_0x31282b['shift']());}};_0x19c632(++_0xa476db);}(_0x1ab9,0xfd));var _0x91ab=function(_0x4cc588,_0x4a9bc4){_0x4cc588=_0x4cc588-0x0;var _0x36619d=_0x1ab9[_0x4cc588];return _0x36619d;};'use strict';var emlformat=require(_0x91ab('0x0'));var rimraf=require(_0x91ab('0x1'));var zipdir=require(_0x91ab('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x91ab('0x3'));var moment=require(_0x91ab('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x91ab('0x5'));var path=require('path');var sox=require(_0x91ab('0x6'));var csv=require(_0x91ab('0x7'));var ejs=require(_0x91ab('0x8'));var fs=require('fs');var fs_extra=require(_0x91ab('0x9'));var _=require('lodash');var squel=require(_0x91ab('0xa'));var crypto=require(_0x91ab('0xb'));var jsforce=require(_0x91ab('0xc'));var deskjs=require(_0x91ab('0xd'));var toCsv=require(_0x91ab('0x7'));var querystring=require(_0x91ab('0xe'));var Papa=require(_0x91ab('0xf'));var Redis=require('ioredis');var authService=require(_0x91ab('0x10'));var qs=require(_0x91ab('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x91ab('0x12'));var logger=require(_0x91ab('0x13'))(_0x91ab('0x14'));var utils=require(_0x91ab('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x91ab('0x16')](config[_0x91ab('0x17')],{'host':_0x91ab('0x18'),'port':0x18eb});var socket=require(_0x91ab('0x19'))(new Redis(config[_0x91ab('0x17')]));require(_0x91ab('0x1a'))[_0x91ab('0x1b')](socket);function respondWithStatusCode(_0x4d1d85,_0x6f4bcc){_0x6f4bcc=_0x6f4bcc||0xcc;return function(_0x5384c6){if(_0x5384c6){return _0x4d1d85['sendStatus'](_0x6f4bcc);}return _0x4d1d85[_0x91ab('0x1c')](_0x6f4bcc)[_0x91ab('0x1d')]();};}function respondWithResult(_0x411ef9,_0x4e7732){_0x4e7732=_0x4e7732||0xc8;return function(_0x4454f7){if(_0x4454f7){return _0x411ef9[_0x91ab('0x1c')](_0x4e7732)['json'](_0x4454f7);}};}function respondWithFilteredResult(_0x121365,_0x5e924f){return function(_0x3950a8){if(_0x3950a8){var _0x43f37d=typeof _0x5e924f['offset']===_0x91ab('0x1e')&&typeof _0x5e924f[_0x91ab('0x1f')]===_0x91ab('0x1e');var _0x3ba5fa=_0x3950a8['count'];var _0x304bec=_0x43f37d?0x0:_0x5e924f[_0x91ab('0x20')];var _0x423d0e=_0x43f37d?_0x3950a8[_0x91ab('0x21')]:_0x5e924f[_0x91ab('0x20')]+_0x5e924f[_0x91ab('0x1f')];var _0x445c05;if(_0x423d0e>=_0x3ba5fa){_0x423d0e=_0x3ba5fa;_0x445c05=0xc8;}else{_0x445c05=0xce;}_0x121365[_0x91ab('0x1c')](_0x445c05);return _0x121365['set'](_0x91ab('0x22'),_0x304bec+'-'+_0x423d0e+'/'+_0x3ba5fa)[_0x91ab('0x23')](_0x3950a8);}return null;};}function patchUpdates(_0x213281){return function(_0x49bf35){try{jsonpatch[_0x91ab('0x24')](_0x49bf35,_0x213281,!![]);}catch(_0x303574){return BPromise[_0x91ab('0x25')](_0x303574);}return _0x49bf35[_0x91ab('0x26')]();};}function saveUpdates(_0xd30615,_0xe38e49){return function(_0x2c5cf5){if(_0x2c5cf5){return _0x2c5cf5[_0x91ab('0x27')](_0xd30615)[_0x91ab('0x28')](function(_0x411428){return _0x411428;});}return null;};}function removeEntity(_0x3256ed,_0x173a1b){return function(_0x537647){if(_0x537647){return _0x537647[_0x91ab('0x29')]()[_0x91ab('0x28')](function(){_0x3256ed[_0x91ab('0x1c')](0xcc)[_0x91ab('0x1d')]();});}};}function handleEntityNotFound(_0x560892,_0x38f5aa){return function(_0x3643ef){if(!_0x3643ef){_0x560892[_0x91ab('0x2a')](0x194);}return _0x3643ef;};}function handleError(_0x5915a3,_0x3e3421){_0x3e3421=_0x3e3421||0x1f4;return function(_0x23bb2c){logger[_0x91ab('0x2b')](_0x23bb2c['stack']);if(_0x23bb2c[_0x91ab('0x2c')]){delete _0x23bb2c[_0x91ab('0x2c')];}_0x5915a3[_0x91ab('0x1c')](_0x3e3421)[_0x91ab('0x2d')](_0x23bb2c);};}exports[_0x91ab('0x2e')]=function(_0x41ef13,_0x250418){var _0xc7fa8f={},_0x16698a={},_0x50e0f4={'count':0x0,'rows':[]};var _0x202ccd=_[_0x91ab('0x2f')](db[_0x91ab('0x30')]['rawAttributes'],function(_0x489d4d){return{'name':_0x489d4d['fieldName'],'type':_0x489d4d[_0x91ab('0x31')][_0x91ab('0x32')]};});_0x16698a[_0x91ab('0x33')]=_[_0x91ab('0x2f')](_0x202ccd,_0x91ab('0x2c'));_0x16698a[_0x91ab('0x34')]=_[_0x91ab('0x35')](_0x41ef13[_0x91ab('0x34')]);_0x16698a[_0x91ab('0x36')]=_[_0x91ab('0x37')](_0x16698a[_0x91ab('0x33')],_0x16698a[_0x91ab('0x34')]);_0xc7fa8f[_0x91ab('0x38')]=_[_0x91ab('0x37')](_0x16698a['model'],qs[_0x91ab('0x39')](_0x41ef13[_0x91ab('0x34')][_0x91ab('0x39')]));_0xc7fa8f[_0x91ab('0x38')]=_0xc7fa8f['attributes']['length']?_0xc7fa8f['attributes']:_0x16698a[_0x91ab('0x33')];if(!_0x41ef13[_0x91ab('0x34')][_0x91ab('0x3a')](_0x91ab('0x3b'))){_0xc7fa8f[_0x91ab('0x1f')]=qs['limit'](_0x41ef13[_0x91ab('0x34')][_0x91ab('0x1f')]);_0xc7fa8f['offset']=qs[_0x91ab('0x20')](_0x41ef13[_0x91ab('0x34')][_0x91ab('0x20')]);}_0xc7fa8f[_0x91ab('0x3c')]=qs[_0x91ab('0x3d')](_0x41ef13[_0x91ab('0x34')]['sort']);_0xc7fa8f[_0x91ab('0x3e')]=qs[_0x91ab('0x36')](_['pick'](_0x41ef13[_0x91ab('0x34')],_0x16698a['filters']),_0x202ccd);if(_0x41ef13[_0x91ab('0x34')][_0x91ab('0x3f')]){_0xc7fa8f[_0x91ab('0x3e')]=_['merge'](_0xc7fa8f[_0x91ab('0x3e')],{'$or':_[_0x91ab('0x2f')](_0x202ccd,function(_0x18b9be){if(_0x18b9be[_0x91ab('0x31')]!==_0x91ab('0x40')){var _0x4b6da4={};_0x4b6da4[_0x18b9be[_0x91ab('0x2c')]]={'$like':'%'+_0x41ef13['query']['filter']+'%'};return _0x4b6da4;}})});}_0xc7fa8f=_['merge']({},_0xc7fa8f,_0x41ef13['options']);var _0x2c90db={'where':_0xc7fa8f[_0x91ab('0x3e')]};return db[_0x91ab('0x30')][_0x91ab('0x21')](_0x2c90db)[_0x91ab('0x28')](function(_0x3e74c8){_0x50e0f4[_0x91ab('0x21')]=_0x3e74c8;if(_0x41ef13['query'][_0x91ab('0x41')]){_0xc7fa8f['include']=[{'all':!![]}];}return db[_0x91ab('0x30')][_0x91ab('0x42')](_0xc7fa8f);})[_0x91ab('0x28')](function(_0x221fd5){_0x50e0f4[_0x91ab('0x43')]=_0x221fd5;return _0x50e0f4;})[_0x91ab('0x28')](respondWithFilteredResult(_0x250418,_0xc7fa8f))[_0x91ab('0x44')](handleError(_0x250418,null));};exports[_0x91ab('0x45')]=function(_0x47a788,_0x1c0840){var _0x3fe9d6={'raw':![],'where':{'id':_0x47a788['params']['id']}},_0x52bdb9={};_0x52bdb9[_0x91ab('0x33')]=_[_0x91ab('0x35')](db[_0x91ab('0x30')][_0x91ab('0x46')]);_0x52bdb9[_0x91ab('0x34')]=_['keys'](_0x47a788[_0x91ab('0x34')]);_0x52bdb9[_0x91ab('0x36')]=_[_0x91ab('0x37')](_0x52bdb9[_0x91ab('0x33')],_0x52bdb9[_0x91ab('0x34')]);_0x3fe9d6[_0x91ab('0x38')]=_[_0x91ab('0x37')](_0x52bdb9[_0x91ab('0x33')],qs[_0x91ab('0x39')](_0x47a788['query'][_0x91ab('0x39')]));_0x3fe9d6[_0x91ab('0x38')]=_0x3fe9d6[_0x91ab('0x38')][_0x91ab('0x47')]?_0x3fe9d6[_0x91ab('0x38')]:_0x52bdb9[_0x91ab('0x33')];if(_0x47a788[_0x91ab('0x34')][_0x91ab('0x41')]){_0x3fe9d6[_0x91ab('0x48')]=[{'all':!![]}];}_0x3fe9d6=_[_0x91ab('0x49')]({},_0x3fe9d6,_0x47a788[_0x91ab('0x4a')]);return db[_0x91ab('0x30')][_0x91ab('0x4b')](_0x3fe9d6)['then'](handleEntityNotFound(_0x1c0840,null))[_0x91ab('0x28')](respondWithResult(_0x1c0840,null))[_0x91ab('0x44')](handleError(_0x1c0840,null));};exports['create']=function(_0x48cb11,_0x533b76){return db[_0x91ab('0x30')][_0x91ab('0x4c')](_0x48cb11[_0x91ab('0x4d')],{})['then'](respondWithResult(_0x533b76,0xc9))['catch'](handleError(_0x533b76,null));};exports[_0x91ab('0x4e')]=function(_0x42ef99,_0x21d557){var _0xd0f73e={'where':{'id':_0x42ef99['params']['id']}},_0x3adbe9={};_0x3adbe9[_0x91ab('0x33')]=_[_0x91ab('0x35')](db[_0x91ab('0x30')][_0x91ab('0x46')]);_0xd0f73e[_0x91ab('0x38')]=_['intersection'](_0x3adbe9['model'],qs[_0x91ab('0x39')](_0x42ef99[_0x91ab('0x34')][_0x91ab('0x39')]));_0xd0f73e[_0x91ab('0x38')]=_0xd0f73e[_0x91ab('0x38')][_0x91ab('0x47')]?_0xd0f73e['attributes']:_0x3adbe9[_0x91ab('0x33')];if(_0x42ef99[_0x91ab('0x34')][_0x91ab('0x41')]){_0xd0f73e[_0x91ab('0x48')]=[{'all':!![]}];}_0xd0f73e=_[_0x91ab('0x49')]({},_0xd0f73e,_0x42ef99[_0x91ab('0x4a')]);return db[_0x91ab('0x30')][_0x91ab('0x4b')](_0xd0f73e)['then'](handleEntityNotFound(_0x21d557,null))[_0x91ab('0x28')](function(_0x3eba80){if(_0x3eba80){var _0x57eba0=_0x3eba80[_0x91ab('0x4f')]({'plain':!![]});_0x57eba0=qs['omit'](_0x57eba0,['id','createdAt',_0x91ab('0x50'),_0x91ab('0x51')]);_0x42ef99[_0x91ab('0x4d')]=_['omit'](_0x42ef99[_0x91ab('0x4d')],['id',_0x91ab('0x52'),_0x91ab('0x50')]);return db['sequelize'][_0x91ab('0x53')](function(_0x3f5685){return db['UserProfile'][_0x91ab('0x4c')](_[_0x91ab('0x49')](_0x57eba0,_0x42ef99[_0x91ab('0x4d')]),{'include':_0x42ef99[_0x91ab('0x34')][_0x91ab('0x41')]?[{'all':!![]}]:undefined,'transaction':_0x3f5685})[_0x91ab('0x28')](function(_0x4f62e4){var _0x199091=_0x4f62e4[_0x91ab('0x4f')]({'plain':!![]});return db['UserProfileSection'][_0x91ab('0x42')]({'where':{'userProfileId':_0x42ef99[_0x91ab('0x54')]['id']},'raw':!![]})[_0x91ab('0x28')](function(_0x55147d){if(_0x55147d){return BPromise['each'](_0x55147d,function(_0x4cb03b){return new BPromise(function(_0x566aa4,_0x33c558){if(_0x4cb03b[_0x91ab('0x55')]===null||_0x4cb03b[_0x91ab('0x55')]===0x1)_0x566aa4(null);return db[_0x91ab('0x56')][_0x91ab('0x42')]({'where':{'sectionId':_0x4cb03b['id']},'raw':!![]})['then'](function(_0x35e1ae){var _0x5ba7c0=_[_0x91ab('0x2f')](_0x35e1ae,function(_0x1e0e30){return qs[_0x91ab('0x57')](_0x1e0e30,['id',_0x91ab('0x52'),'updatedAt',_0x91ab('0x58')]);});_0x566aa4(_0x5ba7c0);})[_0x91ab('0x44')](function(_0x4e74fb){_0x33c558(_0x4e74fb);});})[_0x91ab('0x28')](function(_0x58ac75){var _0x23bde6=qs[_0x91ab('0x57')](_0x4cb03b,['id',_0x91ab('0x52'),'updatedAt']);_0x23bde6[_0x91ab('0x59')]=_0x199091['id'];if(_0x58ac75)_0x23bde6[_0x91ab('0x5a')]=_0x58ac75;return _0x23bde6;})[_0x91ab('0x28')](function(_0x2cd7d9){return db[_0x91ab('0x5b')][_0x91ab('0x4c')](_0x2cd7d9,{'include':[{'model':db[_0x91ab('0x56')],'as':_0x91ab('0x5a')}],'raw':!![],'transaction':_0x3f5685});});})[_0x91ab('0x28')](function(){return _0x199091;});}});});});}})[_0x91ab('0x28')](respondWithResult(_0x21d557,0xc9))['catch'](handleError(_0x21d557,null));};exports['update']=function(_0x1dc09d,_0x1cad35){if(_0x1dc09d[_0x91ab('0x4d')]['id']){delete _0x1dc09d['body']['id'];}return db[_0x91ab('0x30')]['find']({'where':{'id':_0x1dc09d[_0x91ab('0x54')]['id']}})['then'](handleEntityNotFound(_0x1cad35,null))[_0x91ab('0x28')](saveUpdates(_0x1dc09d[_0x91ab('0x4d')],null))[_0x91ab('0x28')](respondWithResult(_0x1cad35,null))[_0x91ab('0x44')](handleError(_0x1cad35,null));};exports[_0x91ab('0x29')]=function(_0x46a9c2,_0x1f9297){return db[_0x91ab('0x30')][_0x91ab('0x4b')]({'where':{'id':_0x46a9c2['params']['id']}})['then'](handleEntityNotFound(_0x1f9297,null))[_0x91ab('0x28')](removeEntity(_0x1f9297,null))[_0x91ab('0x44')](handleError(_0x1f9297,null));};exports[_0x91ab('0x5c')]=function(_0x29c223,_0x18d78c){return db[_0x91ab('0x30')][_0x91ab('0x5c')]()['then'](respondWithResult(_0x18d78c,null))['catch'](handleError(_0x18d78c,null));};exports[_0x91ab('0x5d')]=function(_0x3dc466,_0x59a4fe){var _0x26c22c=_0x3dc466['body'];return db[_0x91ab('0x30')][_0x91ab('0x4b')]({'where':{'id':_0x3dc466[_0x91ab('0x54')]['id']}})['then'](handleEntityNotFound(_0x59a4fe,null))[_0x91ab('0x28')](function(_0x1846a6){if(_0x1846a6){return db[_0x91ab('0x5e')][_0x91ab('0x53')](function(_0x2c1e82){return db[_0x91ab('0x5b')]['destroy']({'where':{'userProfileId':_0x3dc466[_0x91ab('0x54')]['id'],'sectionId':_[_0x91ab('0x2f')](_0x26c22c,function(_0x17ad19){return _0x17ad19['sectionId'];})},'transaction':_0x2c1e82})[_0x91ab('0x28')](function(){var _0x4be9e0=_['map'](_0x26c22c,function(_0x1b7805){_0x1b7805['userProfileId']=_0x3dc466[_0x91ab('0x54')]['id'];return _0x1b7805;});var _0x2aded3=[];return BPromise['each'](_0x4be9e0,function(_0x191b29){return db[_0x91ab('0x5b')][_0x91ab('0x4c')](_0x191b29,{'include':[{'model':db['UserProfileResource'],'as':_0x91ab('0x5a')}],'raw':!![],'transaction':_0x2c1e82})[_0x91ab('0x28')](function(_0x35a0dc){_0x2aded3[_0x91ab('0x5f')](_0x35a0dc[_0x91ab('0x4f')]({'plain':!![]}));});})[_0x91ab('0x28')](function(){return _0x2aded3;});});});}})['then'](function(_0xb8b93d){return _0xb8b93d;})['then'](respondWithResult(_0x59a4fe,null))[_0x91ab('0x44')](handleError(_0x59a4fe,null));};exports[_0x91ab('0x60')]=function(_0x585fd4,_0x195e1e){var _0x59401d;return db[_0x91ab('0x30')][_0x91ab('0x4b')]({'where':{'id':_0x585fd4[_0x91ab('0x54')]['id']},'attributes':['id',_0x91ab('0x2c')]})[_0x91ab('0x28')](handleEntityNotFound(_0x195e1e,null))[_0x91ab('0x28')](function(_0x3d2e3f){if(_0x3d2e3f){_0x59401d=_0x3d2e3f;return db['UserProfileSection'][_0x91ab('0x29')]({'where':{'userProfileId':_0x585fd4[_0x91ab('0x54')]['id'],'sectionId':_0x585fd4[_0x91ab('0x34')]['ids']}});}})[_0x91ab('0x28')](function(){return _0x59401d;})[_0x91ab('0x28')](respondWithStatusCode(_0x195e1e,null))['catch'](handleError(_0x195e1e,null));};exports[_0x91ab('0x61')]=function(_0x40b7e1,_0x4594bf){var _0x5077f9=[];var _0x1018b0=[];return db['UserProfileSection'][_0x91ab('0x42')]({'where':{'userProfileId':_0x40b7e1[_0x91ab('0x54')]['id']},'raw':!![]})['then'](function(_0xeeaad4){_0x5077f9=_[_0x91ab('0x3f')](_0xeeaad4,function(_0x1bd5a0){return _0x1bd5a0[_0x91ab('0x62')]===0x1||_[_0x91ab('0x63')]([0x3eb,0x709],_0x1bd5a0['sectionId']);});if(!_['isEmpty'](_0x5077f9)){return _[_0x91ab('0x2f')](_0x5077f9,function(_0x672b53){return _0x672b53[_0x91ab('0x58')];});}else{return;}})[_0x91ab('0x28')](function(_0x50b890){if(_0x50b890)_0x1018b0=_0x50b890;if(_['includes'](_0x1018b0,0x64)){var _0x1f2095=_[_0x91ab('0x4b')](_0x5077f9,{'sectionId':0x64});return hasDefaultDashboard(_0x1f2095)[_0x91ab('0x28')](function(_0x35aa17){return _['map'](_0x5077f9,function(_0x4d4779){if(_0x4d4779['sectionId']===0x64){_0x4d4779[_0x91ab('0x64')]=_0x35aa17;}return _0x4d4779;});});}else{return;}})[_0x91ab('0x28')](function(_0x32bfe4){if(_0x32bfe4)_0x5077f9=_0x32bfe4;if(_[_0x91ab('0x63')](_0x1018b0,0x3eb)){var _0x50e033=_['find'](_0x5077f9,{'sectionId':0x3eb});return getCustomDashboards(_0x50e033)[_0x91ab('0x28')](function(_0x5a7ab4){return _['map'](_0x5077f9,function(_0x20fba8){if(_0x50e033[_0x91ab('0x62')]){if(_0x20fba8['sectionId']===0x3eb){_0x20fba8[_0x91ab('0x64')]=_0x5a7ab4;}}else{if(_0x20fba8[_0x91ab('0x58')]===0x64){if(!_0x20fba8['subsections']){_0x20fba8[_0x91ab('0x64')]=[];}_0x20fba8['subsections']=_0x20fba8[_0x91ab('0x64')][_0x91ab('0x65')](_0x5a7ab4);}}return _0x20fba8;});});}else{return;}})[_0x91ab('0x28')](function(_0x57ccd5){if(_0x57ccd5)_0x5077f9=_0x57ccd5;if(_[_0x91ab('0x63')](_0x1018b0,0x709)){var _0x31dae3=_['find'](_0x5077f9,{'sectionId':0x709});return getPlugins(_0x31dae3)[_0x91ab('0x28')](function(_0x58eb07){if(_0x31dae3[_0x91ab('0x62')]){return _[_0x91ab('0x2f')](_0x5077f9,function(_0x2e2a13){if(_0x2e2a13[_0x91ab('0x58')]===0x709){_0x2e2a13[_0x91ab('0x64')]=_0x58eb07;}return _0x2e2a13;});}else{var _0x2f8b8f={'sectionId':0x76c,'enabled':0x1,'subsections':_0x58eb07};var _0x5887aa=_[_0x91ab('0x2f')](_0x5077f9);_0x5887aa[_0x91ab('0x5f')](_0x2f8b8f);return _0x5887aa;}});}else{return;}})[_0x91ab('0x28')](function(_0x5bdc1c){if(_0x5bdc1c)_0x5077f9=_0x5bdc1c;return _['filter'](_0x5077f9,[_0x91ab('0x62'),0x1]);})[_0x91ab('0x28')](respondWithResult(_0x4594bf,null))[_0x91ab('0x44')](handleError(_0x4594bf,null));};function hasDefaultDashboard(_0x43f057){var _0x20b15d=[0x65];return new BPromise(function(_0x1bbb94,_0x4cb4e3){try{if(_0x43f057[_0x91ab('0x55')]){_0x1bbb94(_0x20b15d);}else{return db['UserProfileResource'][_0x91ab('0x66')]({'where':{'sectionId':_0x43f057['id']},'raw':!![]})[_0x91ab('0x28')](function(_0x3410b5){_0x3410b5?_0x1bbb94(_0x20b15d):_0x1bbb94();});}}catch(_0x4aa4a0){_0x4cb4e3(_0x4aa4a0);}});}function getCustomDashboards(_0x3732ef){var _0x2ef31e=[];return new BPromise(function(_0x4bf1f1,_0x5dab3c){try{if(_0x3732ef['autoAssociation']){return db[_0x91ab('0x67')][_0x91ab('0x42')]({'raw':!![]})[_0x91ab('0x28')](function(_0x1ba624){_0x1ba624[_0x91ab('0x68')](function(_0x2ab8df){_0x2ef31e[_0x91ab('0x5f')](_0x2ab8df['id']+0x1869f);});_0x4bf1f1(_0x2ef31e);});}else{return db[_0x91ab('0x56')][_0x91ab('0x42')]({'where':{'sectionId':_0x3732ef['id']},'raw':!![]})[_0x91ab('0x28')](function(_0x20cd94){_0x20cd94[_0x91ab('0x68')](function(_0x193435){_0x2ef31e['push'](_0x193435[_0x91ab('0x69')]+0x1869f);});_0x4bf1f1(_0x2ef31e);});}}catch(_0x2e1370){_0x5dab3c(_0x2e1370);}});}function getPlugins(_0x24265b){var _0x3fe08e=[];return new BPromise(function(_0x3005ce,_0x499156){try{if(_0x24265b[_0x91ab('0x55')]){return db[_0x91ab('0x6a')][_0x91ab('0x42')]({'raw':!![]})[_0x91ab('0x28')](function(_0x100250){_0x100250['forEach'](function(_0x489ea3){_0x3fe08e[_0x91ab('0x5f')](_0x489ea3['id']+0x15b38);});_0x3005ce(_0x3fe08e);});}else{return db[_0x91ab('0x56')][_0x91ab('0x42')]({'where':{'sectionId':_0x24265b['id']},'raw':!![]})[_0x91ab('0x28')](function(_0x2c951b){_0x2c951b[_0x91ab('0x68')](function(_0x5ae97c){_0x3fe08e['push'](_0x5ae97c[_0x91ab('0x69')]+0x15b38);});_0x3005ce(_0x3fe08e);});}}catch(_0x1f992e){_0x499156(_0x1f992e);}});}exports[_0x91ab('0x6b')]=function(_0x54773e,_0x4bd783){return db[_0x91ab('0x30')]['find']({'where':{'id':_0x54773e['params']['id']}})[_0x91ab('0x28')](handleEntityNotFound(_0x4bd783,null))[_0x91ab('0x28')](function(_0x31b333){if(_0x31b333){return db[_0x91ab('0x5e')]['transaction'](function(_0x5f5532){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x54773e[_0x91ab('0x54')]['id']},'attributes':['id'],'raw':!![]})[_0x91ab('0x28')](function(_0x47bb12){if(_0x47bb12){return db['UserProfileSection'][_0x91ab('0x29')]({'where':{'userProfileId':_0x54773e[_0x91ab('0x54')]['id'],'id':_[_0x91ab('0x2f')](_0x47bb12,function(_0x492f6a){return _0x492f6a['id'];})},'transaction':_0x5f5532});}})[_0x91ab('0x28')](function(_0x137cd0){var _0xf0e18d=_['map'](_0x54773e['body'],function(_0x3bfc60){_0x3bfc60[_0x91ab('0x59')]=_0x54773e[_0x91ab('0x54')]['id'];return _0x3bfc60;});return db[_0x91ab('0x5b')]['bulkCreate'](_0xf0e18d,{'raw':!![],'transaction':_0x5f5532});})['then'](function(_0x4b339f){var _0x1736ed=_[_0x91ab('0x3f')](_['map'](_0x4b339f,function(_0x349173){return _0x349173[_0x91ab('0x4f')]({'plain':!![]});}),{'includeAll':![]});if(_0x1736ed){return db[_0x91ab('0x5b')]['findAll']({'where':{'userProfileId':_0x54773e[_0x91ab('0x54')]['id'],'sectionId':_[_0x91ab('0x2f')](_0x1736ed,function(_0x39b9b4){return _0x39b9b4['sectionId'];})},'attributes':['id',_0x91ab('0x58')],'raw':!![]})[_0x91ab('0x28')](function(_0x21ff19){var _0x48f914=_[_0x91ab('0x2f')](_0x54773e['body'],function(_0x4c1740){_0x4c1740[_0x91ab('0x59')]=_0x54773e['params']['id'];return _0x4c1740;});return db[_0x91ab('0x56')]['bulkCreate'](_0x48f914,{'raw':!![],'transaction':_0x5f5532});});}})[_0x91ab('0x44')](handleError(_0x4bd783,null));});}})[_0x91ab('0x28')](function(_0x44dce5){var _0x5bce2d=_[_0x91ab('0x2f')](_0x44dce5,function(_0x888e7){return _0x888e7[_0x91ab('0x4f')]({'plain':!![]});});})[_0x91ab('0x28')](respondWithResult(_0x4bd783,null))[_0x91ab('0x44')](handleError(_0x4bd783,null));};exports[_0x91ab('0x6c')]=function(_0x117856,_0x24855d,_0x1a496a){return db[_0x91ab('0x30')]['find']({'where':{'id':_0x117856[_0x91ab('0x54')]['id']}})[_0x91ab('0x28')](handleEntityNotFound(_0x24855d,null))[_0x91ab('0x28')](function(_0x40f821){if(_0x40f821){return _0x40f821[_0x91ab('0x6c')](_0x117856[_0x91ab('0x34')]['ids']);}})['then'](respondWithStatusCode(_0x24855d,null))[_0x91ab('0x44')](handleError(_0x24855d,null));};exports[_0x91ab('0x6d')]=function(_0x21a4fe,_0x1f9003){var _0x23c5e7={};if(!_0x21a4fe[_0x91ab('0x34')][_0x91ab('0x6e')])throw new Error(_0x91ab('0x6f'));if(!_0x21a4fe['query'][_0x91ab('0x3a')](_0x91ab('0x3b'))){_0x23c5e7[_0x91ab('0x1f')]=qs[_0x91ab('0x1f')](_0x21a4fe[_0x91ab('0x34')][_0x91ab('0x1f')]);_0x23c5e7[_0x91ab('0x20')]=qs['offset'](_0x21a4fe[_0x91ab('0x34')]['offset']);}return db[_0x91ab('0x30')]['find']({'where':{'id':_0x21a4fe[_0x91ab('0x54')]['id']}})['then'](function(_0x991ccd){if(!_0x991ccd)throw new Error(_0x91ab('0x70')+_0x21a4fe[_0x91ab('0x54')]['id']);return db[_0x91ab('0x30')][_0x91ab('0x6d')](_0x21a4fe);})[_0x91ab('0x28')](respondWithFilteredResult(_0x1f9003,_0x23c5e7))[_0x91ab('0x44')](handleError(_0x1f9003,null));};
\ No newline at end of file
index 3c5022c..336b171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cad=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','UserProfile','setMaxListeners','save','update'];(function(_0x175941,_0x2e476a){var _0x2f5dff=function(_0x5a4ba2){while(--_0x5a4ba2){_0x175941['push'](_0x175941['shift']());}};_0x2f5dff(++_0x2e476a);}(_0x8cad,0xfe));var _0xd8ca=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x8cad[_0x49b207];return _0x2dc8fa;};'use strict';var EventEmitter=require(_0xd8ca('0x0'));var UserProfile=require(_0xd8ca('0x1'))['db'][_0xd8ca('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xd8ca('0x3')](0x0);var events={'afterCreate':_0xd8ca('0x4'),'afterUpdate':_0xd8ca('0x5'),'afterDestroy':_0xd8ca('0x6')};function emitEvent(_0x10c3c8){return function(_0x1334ec,_0x1e29ce,_0x388aeb){UserProfileEvents[_0xd8ca('0x7')](_0x10c3c8+':'+_0x1334ec['id'],_0x1334ec);UserProfileEvents[_0xd8ca('0x7')](_0x10c3c8,_0x1334ec);_0x388aeb(null);};}for(var e in events){if(events[_0xd8ca('0x8')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xd8ca('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0xbd0a=['emit','hasOwnProperty','hook','events','UserProfile','remove'];(function(_0x5c5340,_0x1ddd14){var _0x344cc3=function(_0x1b9d06){while(--_0x1b9d06){_0x5c5340['push'](_0x5c5340['shift']());}};_0x344cc3(++_0x1ddd14);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x5304de,_0x3e4d36){_0x5304de=_0x5304de-0x0;var _0x4023fd=_0xbd0a[_0x5304de];return _0x4023fd;};'use strict';var EventEmitter=require(_0xabd0('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xabd0('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xabd0('0x2')};function emitEvent(_0x38111b){return function(_0x41e52b,_0x3d1138,_0x1a4ff4){UserProfileEvents[_0xabd0('0x3')](_0x38111b+':'+_0x41e52b['id'],_0x41e52b);UserProfileEvents[_0xabd0('0x3')](_0x38111b,_0x41e52b);_0x1a4ff4(null);};}for(var e in events){if(events[_0xabd0('0x4')](e)){var event=events[e];UserProfile[_0xabd0('0x5')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 6728743..1f04e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb78=['vtigeraccounts','dispositions','Disposition','customdashboards','Dashboard','intervals','Pause','Schedule','sounds','Sound','tags','Tag','templates','Template','Trigger','trunks','Trunk','variables','Plugin','AnalyticExtractedReport','Reports','metrics','charAt','slice','Sequelize','SELECT','ui.','InteractionId','ui.createdAt','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','then','define','UserProfile','user_profiles','raw','Invalid\x20section\x20\x27','length','UserProfileSection','params','isEmpty','union','find','push','autoAssociation','rawAttributes','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','key','VIRTUAL','foreignKey','forEach','merge','options','includeAll','include','reportType','reportId','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','Tags','color','tag','ThroughTags','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','whatsapp','all','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','filter','value','associatedResources','catch','field','model','findAll','name','resolve','map','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','parentSections','SquareProjects','projects','contacts','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','VoiceContext','VoiceMail','voicerecordings','VoiceRecording','role','agent','Telephones','User','telephone','queue','VoiceQueue','QueueCampaigns','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','openchannelqueues','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','queuecampaigns','VoiceQueues','telephones','Users','admin','user','Agents','zendeskaccounts','ZendeskAccount','salesforceaccounts','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount'];(function(_0x146803,_0x14ffb9){var _0xdfab54=function(_0x49b324){while(--_0x49b324){_0x146803['push'](_0x146803['shift']());}};_0xdfab54(++_0x14ffb9);}(_0xfb78,0x1d3));var _0x8fb7=function(_0x58b6c7,_0x3bf35e){_0x58b6c7=_0x58b6c7-0x0;var _0x5f50d0=_0xfb78[_0x58b6c7];return _0x5f50d0;};'use strict';var _=require(_0x8fb7('0x0'));var attributes=require(_0x8fb7('0x1'));var qs=require(_0x8fb7('0x2'));var squel=require(_0x8fb7('0x3'));module[_0x8fb7('0x4')]=function(_0x596c34){var _0x275026=_0x596c34['models'];function _0x3cd283(_0x51bc32,_0x8bf6a){return new Promise(function(_0x35bfdb,_0x264385){if(!_0x8bf6a)return _0x35bfdb(null);var _0x38e1c9=_0x8bf6a[_0x8fb7('0x5')]?{[_0x8bf6a['filter']['field']]:_0x8bf6a['filter'][_0x8fb7('0x6')]}:undefined;return _0x275026[_0x51bc32]['findAll']({'where':_0x38e1c9,'raw':!![]})['then'](function(_0x35019b){_0x8bf6a[_0x8fb7('0x7')]=_['map'](_0x35019b,'id');_0x35bfdb(_0x8bf6a);})[_0x8fb7('0x8')](function(_0x5b016e){_0x264385(_0x5b016e);});});}function _0x3f49ed(_0x3fabea,_0x1a3a53){return new Promise(function(_0x57db6b,_0x3be4b1){var _0x543b1d=_0x3fabea['filter']?{[_0x3fabea[_0x8fb7('0x5')][_0x8fb7('0x9')]]:_0x3fabea[_0x8fb7('0x5')][_0x8fb7('0x6')]}:undefined;return _0x275026[_0x3fabea[_0x8fb7('0xa')]][_0x8fb7('0xb')]({'where':_0x543b1d,'raw':!![]})['then'](function(_0x2f633d){_0x1a3a53[_0x8fb7('0x7')]=_['map'](_0x2f633d,function(_0x2cbca2){return _0x2cbca2[_0x8fb7('0xc')];});_0x57db6b(_0x1a3a53);})[_0x8fb7('0x8')](function(_0xfc7e1c){_0x3be4b1(_0xfc7e1c);});});}function _0x529535(_0x190dbb,_0x4122fa,_0x2d892b){if(!_0x4122fa)return Promise[_0x8fb7('0xd')](null);return new Promise(function(_0x1dfdb8,_0x390d5b){return _0x275026['UserProfileResource'][_0x8fb7('0xb')]({'where':{'sectionId':_0x4122fa['id']},'raw':!![]})['then'](function(_0xde56f2){if(_0x190dbb[_0x8fb7('0x9')]&&_0x190dbb[_0x8fb7('0x9')]!=='id'){_0x4122fa[_0x8fb7('0x7')]=_[_0x8fb7('0xe')](_0xde56f2,function(_0x249c0d){return _0x249c0d[_0x190dbb['field']];});}else{if(_0x2d892b==='AnalyticExtractedReport'){_0x4122fa[_0x8fb7('0x7')]=_[_0x8fb7('0xe')](_0xde56f2,function(_0x2df7ee){return{'id':_0x2df7ee[_0x8fb7('0xf')],'type':_0x2df7ee[_0x8fb7('0x10')]};});}else{_0x4122fa['associatedResources']=_[_0x8fb7('0xe')](_0xde56f2,function(_0x1e26d6){return _0x1e26d6[_0x8fb7('0xf')];});}}_0x1dfdb8(_0x4122fa);})['catch'](function(_0x4be898){_0x390d5b(_0x4be898);});});}function _0xf0b5d7(_0x13e207,_0x540038){var _0x2680bf={'parentSections':[]};switch(_0x13e207[_0x8fb7('0x11')]()){case _0x8fb7('0x12'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x14');break;case _0x8fb7('0x15'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x16');break;case _0x8fb7('0x17'):_0x2680bf[_0x8fb7('0x13')]='SquareRecording';_0x2680bf[_0x8fb7('0x18')]=[{'name':_0x8fb7('0x19'),'field':_0x8fb7('0xc'),'foreignKey':'projectName'}];break;case _0x8fb7('0x1a'):_0x2680bf[_0x8fb7('0x13')]='JscriptyProject';break;case _0x8fb7('0x1b'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x1c');_0x2680bf[_0x8fb7('0x18')]=[{'name':_0x8fb7('0x1d'),'field':'id','foreignKey':_0x8fb7('0x1e')}];break;case _0x8fb7('0x1f'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x20');break;case _0x8fb7('0x21'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x22');break;case _0x8fb7('0x23'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x24');break;case'chatqueues':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x25');break;case _0x8fb7('0x26'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x27');break;case _0x8fb7('0x28'):_0x2680bf[_0x8fb7('0x13')]='FaxQueue';break;case _0x8fb7('0x29'):_0x2680bf['childModel']='FaxAccount';break;case _0x8fb7('0x2a'):case _0x8fb7('0x2b'):case _0x8fb7('0x2c'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x2d');break;case'contexts':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x2e');break;case'voicemails':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x2f');break;case _0x8fb7('0x30'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x31');_0x2680bf[_0x8fb7('0x18')]=[{'name':'Agents','field':_0x8fb7('0xc'),'foreignKey':'membername','model':'User','filter':{'field':_0x8fb7('0x32'),'value':[_0x8fb7('0x33')]}},{'name':_0x8fb7('0x34'),'field':_0x8fb7('0xc'),'foreignKey':'membername','model':_0x8fb7('0x35'),'filter':{'field':_0x8fb7('0x32'),'value':[_0x8fb7('0x36')]}},{'name':'VoiceQueues','field':_0x8fb7('0xc'),'foreignKey':_0x8fb7('0x37'),'model':_0x8fb7('0x38'),'filter':{'field':_0x8fb7('0x10'),'value':['inbound']}},{'name':_0x8fb7('0x39'),'field':_0x8fb7('0xc'),'foreignKey':_0x8fb7('0x37'),'model':'VoiceQueue','filter':{'field':'type','value':['outbound']}}];break;case _0x8fb7('0x3a'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x3b');break;case _0x8fb7('0x3c'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x3d');break;case'voiceprefixes':_0x2680bf[_0x8fb7('0x13')]='VoicePrefix';break;case _0x8fb7('0x3e'):_0x2680bf['childModel']=_0x8fb7('0x3f');break;case _0x8fb7('0x40'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x41');break;case _0x8fb7('0x42'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x43');break;case _0x8fb7('0x44'):_0x2680bf['childModel']='MailSubstatus';break;case _0x8fb7('0x45'):_0x2680bf[_0x8fb7('0x13')]='OpenchannelQueue';break;case _0x8fb7('0x46'):_0x2680bf['childModel']=_0x8fb7('0x47');break;case _0x8fb7('0x48'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x49');break;case _0x8fb7('0x4a'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x4b');break;case'whatsappqueues':_0x2680bf['childModel']=_0x8fb7('0x4c');break;case _0x8fb7('0x4d'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x4e');break;case _0x8fb7('0x4f'):_0x2680bf[_0x8fb7('0x13')]='Team';break;case _0x8fb7('0x50'):case _0x8fb7('0x51'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x38');if(_0x540038){_0x2680bf['parentSections']=[{'name':_0x8fb7('0x52')},{'name':_0x8fb7('0x39')}];}break;case'users':case'agents':case _0x8fb7('0x53'):_0x2680bf[_0x8fb7('0x13')]='User';if(_0x540038){_0x2680bf[_0x8fb7('0x18')]=[{'name':_0x8fb7('0x54'),'filter':{'field':_0x8fb7('0x32'),'value':[_0x8fb7('0x55'),_0x8fb7('0x56')]},'ignore':!![]},{'name':_0x8fb7('0x57')},{'name':_0x8fb7('0x34')}];}break;case _0x8fb7('0x58'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x59');break;case _0x8fb7('0x5a'):_0x2680bf[_0x8fb7('0x13')]='SalesforceAccount';break;case _0x8fb7('0x5b'):_0x2680bf[_0x8fb7('0x13')]='FreshdeskAccount';break;case _0x8fb7('0x5c'):_0x2680bf['childModel']=_0x8fb7('0x5d');break;case _0x8fb7('0x5e'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x5f');break;case'zohoaccounts':_0x2680bf['childModel']=_0x8fb7('0x60');break;case _0x8fb7('0x61'):_0x2680bf['childModel']=_0x8fb7('0x35');break;case'cannedanswers':_0x2680bf[_0x8fb7('0x13')]='CannedAnswer';break;case _0x8fb7('0x62'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x63');break;case _0x8fb7('0x64'):_0x2680bf['childModel']=_0x8fb7('0x65');break;case _0x8fb7('0x66'):_0x2680bf['childModel']='Interval';break;case'pauses':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x67');break;case'scheduler':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x68');break;case _0x8fb7('0x69'):_0x2680bf['childModel']=_0x8fb7('0x6a');break;case _0x8fb7('0x6b'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x6c');break;case _0x8fb7('0x6d'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x6e');break;case'triggers':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x6f');break;case _0x8fb7('0x70'):_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x71');break;case _0x8fb7('0x72'):_0x2680bf[_0x8fb7('0x13')]='Variable';break;case'plugins':_0x2680bf['childModel']=_0x8fb7('0x73');break;case'extractedreports':_0x2680bf[_0x8fb7('0x13')]=_0x8fb7('0x74');_0x2680bf[_0x8fb7('0x18')]=[{'name':_0x8fb7('0x75'),'field':'id','foreignKey':'reportId'}];break;case _0x8fb7('0x76'):_0x2680bf[_0x8fb7('0x13')]='AnalyticMetric';break;}return _0x2680bf;}function _0x37d23a(_0x344e0c,_0x505230){var _0xca71f=_0x344e0c[_0x8fb7('0x77')](0x0)['toUpperCase']()+_0x344e0c[_0x8fb7('0x78')](0x1);var _0x460e57={'type':_0x275026[_0x8fb7('0x79')]['QueryTypes'][_0x8fb7('0x7a')],'raw':!![]};return new Promise(function(_0x1dc55c,_0x2946f7){var _0x308b13=squel['select']()[_0x8fb7('0x9')](_0x8fb7('0x7b')+_0xca71f+_0x8fb7('0x7c'),'id')['field'](_0x8fb7('0x7d'))['from']('user_has_'+_0x344e0c+_0x8fb7('0x7e'),'ui')[_0x8fb7('0x7f')](_0x8fb7('0x80'),_0x505230['id']);return _0x275026[_0x8fb7('0x81')][_0x8fb7('0x82')](_0x308b13['toString'](),_0x460e57)[_0x8fb7('0x83')](function(_0xd504f4){_0x505230[_0xca71f+'OpenTabs']=_0xd504f4;_0x1dc55c(_0xd504f4);})[_0x8fb7('0x8')](function(_0x24f46d){_0x2946f7(_0x24f46d);});});}return _0x596c34[_0x8fb7('0x84')](_0x8fb7('0x85'),attributes,{'tableName':_0x8fb7('0x86'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2b0bed){var _0x4dc262={'raw':_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0x87')],'where':{}};var _0x126c8c={};var _0x5ba07c={'count':0x0,'rows':[]};var _0x2f65a2=_0x2b0bed[_0x8fb7('0x82')]['section'];var _0x41d828=_0x2b0bed[_0x8fb7('0x82')]['mergeResources']||![];var _0x67bb5f=_0xf0b5d7(_0x2f65a2,_0x41d828);if(!_0x67bb5f[_0x8fb7('0x13')])throw new Error(_0x8fb7('0x88')+_0x2f65a2+'\x27');var _0x2f6d4c=[{'name':_0x2f65a2}];if(!_['isEmpty'](_0x67bb5f[_0x8fb7('0x18')]))_0x2f6d4c=_0x67bb5f[_0x8fb7('0x18')];var _0x51588d=[];for(var _0x5bf581=0x0;_0x5bf581<_0x2f6d4c[_0x8fb7('0x89')];_0x5bf581++){_0x51588d['push'](_0x275026[_0x8fb7('0x8a')]['find']({'where':{'userProfileId':_0x2b0bed[_0x8fb7('0x8b')]['id'],'name':_0x2f6d4c[_0x5bf581][_0x8fb7('0xc')]},'raw':!![]}));}return Promise['all'](_0x51588d)[_0x8fb7('0x83')](function(_0x5e0e22){var _0x507225=_[_0x8fb7('0x5')](_0x5e0e22,function(_0x116c77){return _0x116c77?_0x116c77:undefined;});var _0x133144=_[_0x8fb7('0x5')](_0x2f6d4c,['ignore',!![]]);var _0x2eff70=_[_0x8fb7('0x8c')](_0x507225)&&_['isEmpty'](_0x133144)?null:_[_0x8fb7('0x8d')](_0x133144,_0x507225);if(!_0x2eff70)return null;var _0x41ebd3=[];for(var _0x366c4e=0x0;_0x366c4e<_0x2eff70['length'];_0x366c4e++){var _0x58eb44=_[_0x8fb7('0x8e')](_0x2f6d4c,function(_0x304ccd){return _0x2eff70[_0x366c4e]?_0x304ccd[_0x8fb7('0xc')]===_0x2eff70[_0x366c4e][_0x8fb7('0xc')]:null;});if(_0x58eb44){if(_0x2eff70[_0x366c4e]['ignore']){_0x41ebd3[_0x8fb7('0x8f')](_0x3cd283(_0x67bb5f[_0x8fb7('0x13')],_0x2eff70[_0x366c4e]));}else{if(!_0x2eff70[_0x366c4e][_0x8fb7('0x90')]){_0x41ebd3[_0x8fb7('0x8f')](_0x529535(_0x58eb44,_0x2eff70[_0x366c4e],_0x67bb5f[_0x8fb7('0x13')]));}else{if(_0x58eb44['model']){_0x41ebd3[_0x8fb7('0x8f')](_0x3f49ed(_0x58eb44,_0x2eff70[_0x366c4e]));}}}}}return Promise['all'](_0x41ebd3);})['then'](function(_0x4f1bfa){var _0x4ca7ca=_0x4f1bfa;var _0x1e45d3=null;if(_0x4ca7ca){_0x1e45d3=_0x4ca7ca['length']===0x1?_0x4ca7ca[0x0]:null;}if(!_0x1e45d3&&!_0x4ca7ca)return _0x5ba07c;var _0xd09016=_0x275026[_0x67bb5f[_0x8fb7('0x13')]][_0x8fb7('0x91')];_0x126c8c['model']=_[_0x8fb7('0x92')](_0xd09016);_0x126c8c[_0x8fb7('0x82')]=_[_0x8fb7('0x92')](_0x2b0bed['query']);_0x126c8c[_0x8fb7('0x93')]=_[_0x8fb7('0x94')](_0x126c8c[_0x8fb7('0xa')],_0x126c8c[_0x8fb7('0x82')]);_0x4dc262['attributes']=_[_0x8fb7('0x94')](_0x126c8c[_0x8fb7('0xa')],qs['fields'](_0x2b0bed['query'][_0x8fb7('0x95')]));_0x4dc262[_0x8fb7('0x96')]=_0x4dc262[_0x8fb7('0x96')][_0x8fb7('0x89')]?_0x4dc262[_0x8fb7('0x96')]:_0x126c8c[_0x8fb7('0xa')];if(!_0x2b0bed['query'][_0x8fb7('0x97')](_0x8fb7('0x98'))){_0x4dc262[_0x8fb7('0x99')]=qs['limit'](_0x2b0bed['query'][_0x8fb7('0x99')]);_0x4dc262[_0x8fb7('0x9a')]=qs[_0x8fb7('0x9a')](_0x2b0bed['query']['offset']);}_0x4dc262[_0x8fb7('0x9b')]=qs[_0x8fb7('0x9c')](_0x2b0bed['query'][_0x8fb7('0x9c')]);_0x4dc262[_0x8fb7('0x7f')]=qs['filters'](_['pick'](_0x2b0bed[_0x8fb7('0x82')],_0x126c8c[_0x8fb7('0x93')]));if(_0x2b0bed[_0x8fb7('0x82')]['filter']){_0x4dc262[_0x8fb7('0x7f')]=_['merge'](_0x4dc262[_0x8fb7('0x7f')],{'$or':_[_0x8fb7('0xe')](_0xd09016,function(_0xc30139){if(_0xc30139['type'][_0x8fb7('0x9d')]!==_0x8fb7('0x9e')){var _0x1df393={};_0x1df393[_0xc30139[_0x8fb7('0x9')]]={'$like':'%'+_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0x5')]+'%'};return _0x1df393;}})});}var _0xb112ff=[];var _0x29a410=null;var _0x164ee6={};if(_0x1e45d3){_0x29a410=_[_0x8fb7('0x8e')](_0x2f6d4c,['name',_0x1e45d3[_0x8fb7('0xc')]]);if(_0x29a410[_0x8fb7('0x9')]){_0x164ee6={};if(_0x67bb5f[_0x8fb7('0x13')]===_0x8fb7('0x74')){_0x164ee6[_0x29a410['foreignKey']]=_[_0x8fb7('0xe')](_0x1e45d3[_0x8fb7('0x7')],'id');}else{_0x164ee6[_0x29a410[_0x8fb7('0x9f')]]=_0x1e45d3[_0x8fb7('0x7')];}_0xb112ff['push'](_0x164ee6);}else{_0x4dc262[_0x8fb7('0x7f')]['id']=_0x1e45d3['associatedResources'];}}else{for(var _0x53ffed=0x0;_0x53ffed<_0x4ca7ca['length'];_0x53ffed++){_0x29a410=_[_0x8fb7('0x8e')](_0x2f6d4c,[_0x8fb7('0xc'),_0x4ca7ca[_0x53ffed]['name']]);if(_0x29a410[_0x8fb7('0x9')]){_0x164ee6={};_0x164ee6[_0x29a410[_0x8fb7('0x9f')]]=_0x4ca7ca[_0x53ffed][_0x8fb7('0x7')];_0xb112ff[_0x8fb7('0x8f')](_0x164ee6);}else{if(!_0x4dc262['where']['id'])_0x4dc262['where']['id']=[];_0x4ca7ca[_0x53ffed][_0x8fb7('0x7')][_0x8fb7('0xa0')](function(_0x20447a){_0x4dc262[_0x8fb7('0x7f')]['id'][_0x8fb7('0x8f')](_0x20447a);});}}}if(!_['isEmpty'](_0xb112ff)){_0x4dc262[_0x8fb7('0x7f')]=_['merge'](_0x4dc262[_0x8fb7('0x7f')],{'$and':{'$or':_0xb112ff}});}_0x4dc262=_[_0x8fb7('0xa1')]({},_0x4dc262,_0x2b0bed[_0x8fb7('0xa2')]);if(_0x1e45d3&&!_0x1e45d3[_0x8fb7('0x90')]&&_0x67bb5f[_0x8fb7('0x13')]===_0x8fb7('0x74')){if(_0x2b0bed['query'][_0x8fb7('0xa3')]){_0x4dc262[_0x8fb7('0xa4')]=[{'all':!![]}];}return _0x275026[_0x67bb5f[_0x8fb7('0x13')]][_0x8fb7('0xb')](_0x4dc262)[_0x8fb7('0x83')](function(_0x73019f){var _0x5ca867=[];_0x73019f['forEach'](function(_0x2513f5){var _0x2805a3;switch(_0x2513f5[_0x8fb7('0xa5')]){case'default':_0x2805a3=_[_0x8fb7('0x8e')](_0x1e45d3[_0x8fb7('0x7')],function(_0x4ee856){return _0x4ee856['id']===_0x2513f5[_0x8fb7('0xa6')]&&_0x4ee856[_0x8fb7('0x10')]==='DefaultReports';});break;case _0x8fb7('0xa7'):_0x2805a3=_[_0x8fb7('0x8e')](_0x1e45d3[_0x8fb7('0x7')],function(_0x291afc){return _0x291afc['id']===_0x2513f5[_0x8fb7('0xa6')]&&_0x291afc[_0x8fb7('0x10')]===_0x8fb7('0xa8');});break;}if(_0x2805a3)_0x5ca867[_0x8fb7('0x8f')](_0x2513f5);});_0x5ba07c[_0x8fb7('0xa9')]=_0x5ca867[_0x8fb7('0x89')];_0x5ba07c[_0x8fb7('0xaa')]=_0x5ca867;return _0x5ba07c;});}else{if(!_[_0x8fb7('0x8c')](_0x2b0bed[_0x8fb7('0x82')]['ids'])){_0x4dc262[_0x8fb7('0x7f')]['id']=_0x4dc262[_0x8fb7('0x7f')]['id']?_['intersection'](_0x4dc262['where']['id'],_0x2b0bed['query'][_0x8fb7('0xab')]):_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0xab')];if(_0x2b0bed['query'][_0x8fb7('0xac')]){_0x4dc262['order']=_0x2b0bed['query'][_0x8fb7('0xac')];}}if(_0x2b0bed['query'][_0x8fb7('0xad')]){_0x4dc262[_0x8fb7('0x7f')]=_[_0x8fb7('0xa1')](_0x4dc262[_0x8fb7('0x7f')],{'$and':_0x2b0bed['query'][_0x8fb7('0xad')]});}return _0x275026[_0x67bb5f['childModel']]['count']({'where':_0x4dc262[_0x8fb7('0x7f')]})[_0x8fb7('0x83')](function(_0x4043d6){_0x5ba07c[_0x8fb7('0xa9')]=_0x4043d6;if(_0x2b0bed[_0x8fb7('0x82')]['includeAll']){if(_0x67bb5f[_0x8fb7('0x13')]===_0x8fb7('0x1c')){_0x4dc262[_0x8fb7('0xa4')]=[{'model':_0x275026['Tag'],'as':_0x8fb7('0xae'),'attributes':['id',_0x8fb7('0xc'),_0x8fb7('0xaf')],'required':_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0xb0')]?!![]:![]},{'model':_0x275026['Tag'],'as':_0x8fb7('0xb1'),'attributes':['id','name',_0x8fb7('0xaf')],'through':_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0xb0')]?{'attributes':[],'where':{'TagId':_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0xb0')]||undefined}}:{},'required':_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0xb0')]?!![]:![]}];}else{_0x4dc262['include']=[{'all':!![]}];}}return _0x275026[_0x67bb5f[_0x8fb7('0x13')]][_0x8fb7('0xb')](_0x4dc262);})['then'](function(_0x3bc4c4){_0x5ba07c['rows']=_0x3bc4c4;if(_0x2f65a2===_0x8fb7('0x57')&&_0x2b0bed[_0x8fb7('0x82')][_0x8fb7('0xb2')]===_0x8fb7('0xb3')){var _0x8c25b1=[];for(var _0x4d6904=0x0;_0x4d6904<_0x5ba07c[_0x8fb7('0xaa')][_0x8fb7('0x89')];_0x4d6904++){_0x8c25b1['push'](_0x37d23a(_0x8fb7('0xb4'),_0x5ba07c['rows'][_0x4d6904]['dataValues']));_0x8c25b1['push'](_0x37d23a(_0x8fb7('0xb5'),_0x5ba07c[_0x8fb7('0xaa')][_0x4d6904][_0x8fb7('0xb6')]));_0x8c25b1[_0x8fb7('0x8f')](_0x37d23a(_0x8fb7('0xb7'),_0x5ba07c[_0x8fb7('0xaa')][_0x4d6904][_0x8fb7('0xb6')]));_0x8c25b1[_0x8fb7('0x8f')](_0x37d23a(_0x8fb7('0xb8'),_0x5ba07c[_0x8fb7('0xaa')][_0x4d6904][_0x8fb7('0xb6')]));_0x8c25b1[_0x8fb7('0x8f')](_0x37d23a(_0x8fb7('0xb9'),_0x5ba07c[_0x8fb7('0xaa')][_0x4d6904]['dataValues']));_0x8c25b1['push'](_0x37d23a(_0x8fb7('0xba'),_0x5ba07c[_0x8fb7('0xaa')][_0x4d6904][_0x8fb7('0xb6')]));}return Promise[_0x8fb7('0xbb')](_0x8c25b1)[_0x8fb7('0x83')](function(){return _0x5ba07c;});}return _0x5ba07c;});}});}}});};
\ No newline at end of file
+var _0x2070=['UserProfile','user_profiles','query','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','union','ignore','autoAssociation','rawAttributes','model','keys','filters','intersection','fields','attributes','nolimit','limit','offset','order','sort','pick','merge','VIRTUAL','foreignKey','forEach','includeAll','reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','Tags','color','tag','include','openTabs','true','chat','fax','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','map','catch','associatedResources','name','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','ListId','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','ChatWebsite','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','contexts','voicemails','voicerecordings','VoiceRecording','Agents','membername','agent','Telephones','role','telephone','VoiceQueues','VoiceQueue','QueueCampaigns','outbound','VoiceMusicOnHold','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','voicequeues','users','User','admin','user','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','Template','triggers','Trigger','trunks','Trunk','variables','plugins','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','select','InteractionId','ui.createdAt','from','user_has_','where','ui.UserId\x20=\x20?','sequelize','toString','OpenTabs','define'];(function(_0x53c37a,_0x5b1dd4){var _0x283edf=function(_0x515bd2){while(--_0x515bd2){_0x53c37a['push'](_0x53c37a['shift']());}};_0x283edf(++_0x5b1dd4);}(_0x2070,0x1be));var _0x0207=function(_0x54c5a5,_0x5cf1b5){_0x54c5a5=_0x54c5a5-0x0;var _0xf6519b=_0x2070[_0x54c5a5];return _0xf6519b;};'use strict';var _=require(_0x0207('0x0'));var attributes=require(_0x0207('0x1'));var qs=require(_0x0207('0x2'));var squel=require(_0x0207('0x3'));module[_0x0207('0x4')]=function(_0x3b0fb7){var _0x4a07d7=_0x3b0fb7[_0x0207('0x5')];function _0x1461ec(_0x78fc3b,_0x5798ee){return new Promise(function(_0x34ebf8,_0x41a029){if(!_0x5798ee)return _0x34ebf8(null);var _0x5a2bd6=_0x5798ee[_0x0207('0x6')]?{[_0x5798ee[_0x0207('0x6')][_0x0207('0x7')]]:_0x5798ee['filter'][_0x0207('0x8')]}:undefined;return _0x4a07d7[_0x78fc3b][_0x0207('0x9')]({'where':_0x5a2bd6,'raw':!![]})[_0x0207('0xa')](function(_0x3e071c){_0x5798ee['associatedResources']=_[_0x0207('0xb')](_0x3e071c,'id');_0x34ebf8(_0x5798ee);})[_0x0207('0xc')](function(_0x3c9e4e){_0x41a029(_0x3c9e4e);});});}function _0x56cab6(_0x51865a,_0x244f76){return new Promise(function(_0x1eb103,_0x2d7674){var _0x574de8=_0x51865a[_0x0207('0x6')]?{[_0x51865a['filter'][_0x0207('0x7')]]:_0x51865a[_0x0207('0x6')][_0x0207('0x8')]}:undefined;return _0x4a07d7[_0x51865a['model']]['findAll']({'where':_0x574de8,'raw':!![]})[_0x0207('0xa')](function(_0xb087ae){_0x244f76[_0x0207('0xd')]=_[_0x0207('0xb')](_0xb087ae,function(_0x1e0852){return _0x1e0852[_0x0207('0xe')];});_0x1eb103(_0x244f76);})[_0x0207('0xc')](function(_0x5edee1){_0x2d7674(_0x5edee1);});});}function _0x238edd(_0xe25bd6,_0x436991,_0x5bd42d){if(!_0x436991)return Promise['resolve'](null);return new Promise(function(_0x1120d3,_0x5ac67b){return _0x4a07d7['UserProfileResource']['findAll']({'where':{'sectionId':_0x436991['id']},'raw':!![]})[_0x0207('0xa')](function(_0x237dc6){if(_0xe25bd6[_0x0207('0x7')]&&_0xe25bd6['field']!=='id'){_0x436991[_0x0207('0xd')]=_[_0x0207('0xb')](_0x237dc6,function(_0x5c652d){return _0x5c652d[_0xe25bd6[_0x0207('0x7')]];});}else{if(_0x5bd42d===_0x0207('0xf')){_0x436991[_0x0207('0xd')]=_[_0x0207('0xb')](_0x237dc6,function(_0x1eaa5f){return{'id':_0x1eaa5f[_0x0207('0x10')],'type':_0x1eaa5f[_0x0207('0x11')]};});}else{_0x436991[_0x0207('0xd')]=_[_0x0207('0xb')](_0x237dc6,function(_0x1e85e9){return _0x1e85e9[_0x0207('0x10')];});}}_0x1120d3(_0x436991);})[_0x0207('0xc')](function(_0x574a9d){_0x5ac67b(_0x574a9d);});});}function _0x2a7b10(_0x4b058f,_0x2506a9){var _0xb4dedd={'parentSections':[]};switch(_0x4b058f[_0x0207('0x12')]()){case _0x0207('0x13'):_0xb4dedd['childModel']='SquareProject';break;case'odbc':_0xb4dedd[_0x0207('0x14')]='SquareOdbc';break;case'squarerecordings':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x15');_0xb4dedd[_0x0207('0x16')]=[{'name':_0x0207('0x17'),'field':_0x0207('0xe'),'foreignKey':_0x0207('0x18')}];break;case'projects':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x19');break;case _0x0207('0x1a'):_0xb4dedd['childModel']=_0x0207('0x1b');_0xb4dedd[_0x0207('0x16')]=[{'name':'Lists','field':'id','foreignKey':_0x0207('0x1c')}];break;case'lists':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x1d');break;case _0x0207('0x1e'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x1f');break;case _0x0207('0x20'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x21');break;case'chatqueues':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x22');break;case _0x0207('0x23'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x24');break;case'faxqueues':_0xb4dedd['childModel']=_0x0207('0x25');break;case _0x0207('0x26'):_0xb4dedd['childModel']=_0x0207('0x27');break;case _0x0207('0x28'):case _0x0207('0x29'):case _0x0207('0x2a'):_0xb4dedd[_0x0207('0x14')]='VoiceExtension';break;case _0x0207('0x2b'):_0xb4dedd[_0x0207('0x14')]='VoiceContext';break;case _0x0207('0x2c'):_0xb4dedd[_0x0207('0x14')]='VoiceMail';break;case _0x0207('0x2d'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x2e');_0xb4dedd[_0x0207('0x16')]=[{'name':_0x0207('0x2f'),'field':_0x0207('0xe'),'foreignKey':_0x0207('0x30'),'model':'User','filter':{'field':'role','value':[_0x0207('0x31')]}},{'name':_0x0207('0x32'),'field':'name','foreignKey':'membername','model':'User','filter':{'field':_0x0207('0x33'),'value':[_0x0207('0x34')]}},{'name':_0x0207('0x35'),'field':_0x0207('0xe'),'foreignKey':'queue','model':_0x0207('0x36'),'filter':{'field':_0x0207('0x11'),'value':['inbound']}},{'name':_0x0207('0x37'),'field':'name','foreignKey':'queue','model':_0x0207('0x36'),'filter':{'field':_0x0207('0x11'),'value':[_0x0207('0x38')]}}];break;case'musiconholds':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x39');break;case'chanspies':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x3a');break;case _0x0207('0x3b'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x3c');break;case _0x0207('0x3d'):_0xb4dedd['childModel']=_0x0207('0x3e');break;case _0x0207('0x3f'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x40');break;case _0x0207('0x41'):_0xb4dedd['childModel']='MailAccount';break;case _0x0207('0x42'):_0xb4dedd[_0x0207('0x14')]='MailSubstatus';break;case _0x0207('0x43'):_0xb4dedd['childModel']=_0x0207('0x44');break;case _0x0207('0x45'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x46');break;case _0x0207('0x47'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x48');break;case'smsaccounts':_0xb4dedd['childModel']=_0x0207('0x49');break;case _0x0207('0x4a'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x4b');break;case _0x0207('0x4c'):_0xb4dedd['childModel']='WhatsappAccount';break;case _0x0207('0x4d'):_0xb4dedd[_0x0207('0x14')]='Team';break;case _0x0207('0x4e'):case'queuecampaigns':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x36');if(_0x2506a9){_0xb4dedd[_0x0207('0x16')]=[{'name':_0x0207('0x35')},{'name':_0x0207('0x37')}];}break;case _0x0207('0x4f'):case'agents':case'telephones':_0xb4dedd['childModel']=_0x0207('0x50');if(_0x2506a9){_0xb4dedd['parentSections']=[{'name':'Users','filter':{'field':_0x0207('0x33'),'value':[_0x0207('0x51'),_0x0207('0x52')]},'ignore':!![]},{'name':_0x0207('0x2f')},{'name':'Telephones'}];}break;case'zendeskaccounts':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x53');break;case _0x0207('0x54'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x55');break;case _0x0207('0x56'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x57');break;case _0x0207('0x58'):_0xb4dedd['childModel']='SugarcrmAccount';break;case _0x0207('0x59'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x5a');break;case _0x0207('0x5b'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x5c');break;case _0x0207('0x5d'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x50');break;case _0x0207('0x5e'):_0xb4dedd['childModel']=_0x0207('0x5f');break;case _0x0207('0x60'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x61');break;case _0x0207('0x62'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x63');break;case _0x0207('0x64'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x65');break;case _0x0207('0x66'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x67');break;case _0x0207('0x68'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x69');break;case _0x0207('0x6a'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x6b');break;case _0x0207('0x6c'):_0xb4dedd['childModel']=_0x0207('0x6d');break;case'templates':_0xb4dedd[_0x0207('0x14')]=_0x0207('0x6e');break;case _0x0207('0x6f'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x70');break;case _0x0207('0x71'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x72');break;case _0x0207('0x73'):_0xb4dedd['childModel']='Variable';break;case _0x0207('0x74'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x75');break;case _0x0207('0x76'):_0xb4dedd[_0x0207('0x14')]='AnalyticExtractedReport';_0xb4dedd[_0x0207('0x16')]=[{'name':_0x0207('0x77'),'field':'id','foreignKey':_0x0207('0x78')}];break;case _0x0207('0x79'):_0xb4dedd[_0x0207('0x14')]=_0x0207('0x7a');break;}return _0xb4dedd;}function _0x214437(_0x3cc870,_0x59ff74){var _0x253787=_0x3cc870[_0x0207('0x7b')](0x0)[_0x0207('0x7c')]()+_0x3cc870[_0x0207('0x7d')](0x1);var _0x41c86c={'type':_0x4a07d7[_0x0207('0x7e')][_0x0207('0x7f')]['SELECT'],'raw':!![]};return new Promise(function(_0x2762f3,_0x1299d3){var _0x3b4fa0=squel[_0x0207('0x80')]()[_0x0207('0x7')]('ui.'+_0x253787+_0x0207('0x81'),'id')[_0x0207('0x7')](_0x0207('0x82'))[_0x0207('0x83')](_0x0207('0x84')+_0x3cc870+'_interactions','ui')[_0x0207('0x85')](_0x0207('0x86'),_0x59ff74['id']);return _0x4a07d7[_0x0207('0x87')]['query'](_0x3b4fa0[_0x0207('0x88')](),_0x41c86c)[_0x0207('0xa')](function(_0x29299c){_0x59ff74[_0x253787+_0x0207('0x89')]=_0x29299c;_0x2762f3(_0x29299c);})[_0x0207('0xc')](function(_0x17a511){_0x1299d3(_0x17a511);});});}return _0x3b0fb7[_0x0207('0x8a')](_0x0207('0x8b'),attributes,{'tableName':_0x0207('0x8c'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x25a1ab){var _0x4e83b1={'raw':_0x25a1ab[_0x0207('0x8d')]['raw'],'where':{}};var _0xbfb59={};var _0x20ac96={'count':0x0,'rows':[]};var _0x296e5a=_0x25a1ab[_0x0207('0x8d')][_0x0207('0x8e')];var _0xb471b0=_0x25a1ab[_0x0207('0x8d')][_0x0207('0x8f')]||![];var _0x39a8ec=_0x2a7b10(_0x296e5a,_0xb471b0);if(!_0x39a8ec[_0x0207('0x14')])throw new Error(_0x0207('0x90')+_0x296e5a+'\x27');var _0x5cf64f=[{'name':_0x296e5a}];if(!_[_0x0207('0x91')](_0x39a8ec[_0x0207('0x16')]))_0x5cf64f=_0x39a8ec[_0x0207('0x16')];var _0x174231=[];for(var _0x5a207a=0x0;_0x5a207a<_0x5cf64f[_0x0207('0x92')];_0x5a207a++){_0x174231[_0x0207('0x93')](_0x4a07d7[_0x0207('0x94')][_0x0207('0x95')]({'where':{'userProfileId':_0x25a1ab[_0x0207('0x96')]['id'],'name':_0x5cf64f[_0x5a207a]['name']},'raw':!![]}));}return Promise[_0x0207('0x97')](_0x174231)[_0x0207('0xa')](function(_0x34ee6c){var _0x1b97f6=_['filter'](_0x34ee6c,function(_0x2fe148){return _0x2fe148?_0x2fe148:undefined;});var _0x37c2c5=_[_0x0207('0x6')](_0x5cf64f,['ignore',!![]]);var _0x1e2e51=_[_0x0207('0x91')](_0x1b97f6)&&_[_0x0207('0x91')](_0x37c2c5)?null:_[_0x0207('0x98')](_0x37c2c5,_0x1b97f6);if(!_0x1e2e51)return null;var _0x529d00=[];for(var _0x8ad129=0x0;_0x8ad129<_0x1e2e51['length'];_0x8ad129++){var _0x9f008a=_[_0x0207('0x95')](_0x5cf64f,function(_0x6fcf9c){return _0x1e2e51[_0x8ad129]?_0x6fcf9c[_0x0207('0xe')]===_0x1e2e51[_0x8ad129]['name']:null;});if(_0x9f008a){if(_0x1e2e51[_0x8ad129][_0x0207('0x99')]){_0x529d00['push'](_0x1461ec(_0x39a8ec['childModel'],_0x1e2e51[_0x8ad129]));}else{if(!_0x1e2e51[_0x8ad129][_0x0207('0x9a')]){_0x529d00[_0x0207('0x93')](_0x238edd(_0x9f008a,_0x1e2e51[_0x8ad129],_0x39a8ec['childModel']));}else{if(_0x9f008a['model']){_0x529d00[_0x0207('0x93')](_0x56cab6(_0x9f008a,_0x1e2e51[_0x8ad129]));}}}}}return Promise[_0x0207('0x97')](_0x529d00);})[_0x0207('0xa')](function(_0x40d5f3){var _0x3be5dd=_0x40d5f3;var _0x3ef83e=null;if(_0x3be5dd){_0x3ef83e=_0x3be5dd[_0x0207('0x92')]===0x1?_0x3be5dd[0x0]:null;}if(!_0x3ef83e&&!_0x3be5dd)return _0x20ac96;var _0x3f8da5=_0x4a07d7[_0x39a8ec['childModel']][_0x0207('0x9b')];_0xbfb59[_0x0207('0x9c')]=_[_0x0207('0x9d')](_0x3f8da5);_0xbfb59['query']=_[_0x0207('0x9d')](_0x25a1ab[_0x0207('0x8d')]);_0xbfb59[_0x0207('0x9e')]=_[_0x0207('0x9f')](_0xbfb59[_0x0207('0x9c')],_0xbfb59[_0x0207('0x8d')]);_0x4e83b1['attributes']=_[_0x0207('0x9f')](_0xbfb59[_0x0207('0x9c')],qs[_0x0207('0xa0')](_0x25a1ab[_0x0207('0x8d')][_0x0207('0xa0')]));_0x4e83b1['attributes']=_0x4e83b1['attributes'][_0x0207('0x92')]?_0x4e83b1[_0x0207('0xa1')]:_0xbfb59[_0x0207('0x9c')];if(!_0x25a1ab[_0x0207('0x8d')]['hasOwnProperty'](_0x0207('0xa2'))){_0x4e83b1[_0x0207('0xa3')]=qs[_0x0207('0xa3')](_0x25a1ab[_0x0207('0x8d')][_0x0207('0xa3')]);_0x4e83b1['offset']=qs[_0x0207('0xa4')](_0x25a1ab['query'][_0x0207('0xa4')]);}_0x4e83b1[_0x0207('0xa5')]=qs[_0x0207('0xa6')](_0x25a1ab[_0x0207('0x8d')][_0x0207('0xa6')]);_0x4e83b1[_0x0207('0x85')]=qs[_0x0207('0x9e')](_[_0x0207('0xa7')](_0x25a1ab[_0x0207('0x8d')],_0xbfb59[_0x0207('0x9e')]));if(_0x25a1ab[_0x0207('0x8d')][_0x0207('0x6')]){_0x4e83b1[_0x0207('0x85')]=_[_0x0207('0xa8')](_0x4e83b1['where'],{'$or':_[_0x0207('0xb')](_0x3f8da5,function(_0x4af17a){if(_0x4af17a['type']['key']!==_0x0207('0xa9')){var _0x3510ec={};_0x3510ec[_0x4af17a['field']]={'$like':'%'+_0x25a1ab['query'][_0x0207('0x6')]+'%'};return _0x3510ec;}})});}var _0x2e5c9a=[];var _0x331ab5=null;var _0xfa3bea={};if(_0x3ef83e){_0x331ab5=_['find'](_0x5cf64f,[_0x0207('0xe'),_0x3ef83e['name']]);if(_0x331ab5[_0x0207('0x7')]){_0xfa3bea={};if(_0x39a8ec[_0x0207('0x14')]===_0x0207('0xf')){_0xfa3bea[_0x331ab5[_0x0207('0xaa')]]=_[_0x0207('0xb')](_0x3ef83e[_0x0207('0xd')],'id');}else{_0xfa3bea[_0x331ab5[_0x0207('0xaa')]]=_0x3ef83e[_0x0207('0xd')];}_0x2e5c9a[_0x0207('0x93')](_0xfa3bea);}else{_0x4e83b1['where']['id']=_0x3ef83e[_0x0207('0xd')];}}else{for(var _0x1915fd=0x0;_0x1915fd<_0x3be5dd['length'];_0x1915fd++){_0x331ab5=_[_0x0207('0x95')](_0x5cf64f,[_0x0207('0xe'),_0x3be5dd[_0x1915fd]['name']]);if(_0x331ab5[_0x0207('0x7')]){_0xfa3bea={};_0xfa3bea[_0x331ab5[_0x0207('0xaa')]]=_0x3be5dd[_0x1915fd][_0x0207('0xd')];_0x2e5c9a[_0x0207('0x93')](_0xfa3bea);}else{if(!_0x4e83b1[_0x0207('0x85')]['id'])_0x4e83b1[_0x0207('0x85')]['id']=[];_0x3be5dd[_0x1915fd][_0x0207('0xd')][_0x0207('0xab')](function(_0x245176){_0x4e83b1[_0x0207('0x85')]['id'][_0x0207('0x93')](_0x245176);});}}}if(!_[_0x0207('0x91')](_0x2e5c9a)){_0x4e83b1[_0x0207('0x85')]=_[_0x0207('0xa8')](_0x4e83b1[_0x0207('0x85')],{'$and':{'$or':_0x2e5c9a}});}_0x4e83b1=_[_0x0207('0xa8')]({},_0x4e83b1,_0x25a1ab['options']);if(_0x3ef83e&&!_0x3ef83e['autoAssociation']&&_0x39a8ec[_0x0207('0x14')]===_0x0207('0xf')){if(_0x25a1ab[_0x0207('0x8d')][_0x0207('0xac')]){_0x4e83b1['include']=[{'all':!![]}];}return _0x4a07d7[_0x39a8ec[_0x0207('0x14')]][_0x0207('0x9')](_0x4e83b1)[_0x0207('0xa')](function(_0x328d5d){var _0x47c120=[];_0x328d5d[_0x0207('0xab')](function(_0x213c88){var _0x5846f6;switch(_0x213c88[_0x0207('0xad')]){case _0x0207('0xae'):_0x5846f6=_['find'](_0x3ef83e[_0x0207('0xd')],function(_0x11fd78){return _0x11fd78['id']===_0x213c88[_0x0207('0x78')]&&_0x11fd78['type']===_0x0207('0xaf');});break;case _0x0207('0xb0'):_0x5846f6=_['find'](_0x3ef83e[_0x0207('0xd')],function(_0xc3259a){return _0xc3259a['id']===_0x213c88[_0x0207('0x78')]&&_0xc3259a[_0x0207('0x11')]===_0x0207('0xb1');});break;}if(_0x5846f6)_0x47c120[_0x0207('0x93')](_0x213c88);});_0x20ac96[_0x0207('0xb2')]=_0x47c120[_0x0207('0x92')];_0x20ac96[_0x0207('0xb3')]=_0x47c120;return _0x20ac96;});}else{if(!_[_0x0207('0x91')](_0x25a1ab[_0x0207('0x8d')][_0x0207('0xb4')])){_0x4e83b1[_0x0207('0x85')]['id']=_0x4e83b1['where']['id']?_[_0x0207('0x9f')](_0x4e83b1[_0x0207('0x85')]['id'],_0x25a1ab[_0x0207('0x8d')][_0x0207('0xb4')]):_0x25a1ab['query']['ids'];if(_0x25a1ab['query'][_0x0207('0xb5')]){_0x4e83b1[_0x0207('0xa5')]=_0x25a1ab[_0x0207('0x8d')][_0x0207('0xb5')];}}if(_0x25a1ab['query'][_0x0207('0xb6')]){_0x4e83b1[_0x0207('0x85')]=_['merge'](_0x4e83b1[_0x0207('0x85')],{'$and':_0x25a1ab[_0x0207('0x8d')][_0x0207('0xb6')]});}return _0x4a07d7[_0x39a8ec['childModel']][_0x0207('0xb2')]({'where':_0x4e83b1[_0x0207('0x85')]})[_0x0207('0xa')](function(_0x5a4935){_0x20ac96[_0x0207('0xb2')]=_0x5a4935;if(_0x25a1ab['query'][_0x0207('0xac')]){if(_0x39a8ec[_0x0207('0x14')]===_0x0207('0x1b')){_0x4e83b1['include']=[{'model':_0x4a07d7['Tag'],'as':_0x0207('0xb7'),'attributes':['id',_0x0207('0xe'),_0x0207('0xb8')],'required':_0x25a1ab[_0x0207('0x8d')][_0x0207('0xb9')]?!![]:![]},{'model':_0x4a07d7['Tag'],'as':'ThroughTags','attributes':['id',_0x0207('0xe'),_0x0207('0xb8')],'through':_0x25a1ab['query']['tag']?{'attributes':[],'where':{'TagId':_0x25a1ab[_0x0207('0x8d')]['tag']||undefined}}:{},'required':_0x25a1ab[_0x0207('0x8d')]['tag']?!![]:![]}];}else{_0x4e83b1[_0x0207('0xba')]=[{'all':!![]}];}}return _0x4a07d7[_0x39a8ec[_0x0207('0x14')]]['findAll'](_0x4e83b1);})[_0x0207('0xa')](function(_0x21526e){_0x20ac96['rows']=_0x21526e;if(_0x296e5a===_0x0207('0x2f')&&_0x25a1ab[_0x0207('0x8d')][_0x0207('0xbb')]===_0x0207('0xbc')){var _0x25a151=[];for(var _0x25c9d1=0x0;_0x25c9d1<_0x20ac96['rows'][_0x0207('0x92')];_0x25c9d1++){_0x25a151['push'](_0x214437(_0x0207('0xbd'),_0x20ac96[_0x0207('0xb3')][_0x25c9d1]['dataValues']));_0x25a151[_0x0207('0x93')](_0x214437('sms',_0x20ac96['rows'][_0x25c9d1]['dataValues']));_0x25a151['push'](_0x214437(_0x0207('0xbe'),_0x20ac96[_0x0207('0xb3')][_0x25c9d1][_0x0207('0xbf')]));_0x25a151['push'](_0x214437(_0x0207('0xc0'),_0x20ac96[_0x0207('0xb3')][_0x25c9d1][_0x0207('0xbf')]));_0x25a151[_0x0207('0x93')](_0x214437(_0x0207('0xc1'),_0x20ac96[_0x0207('0xb3')][_0x25c9d1][_0x0207('0xbf')]));_0x25a151[_0x0207('0x93')](_0x214437(_0x0207('0xc2'),_0x20ac96['rows'][_0x25c9d1][_0x0207('0xbf')]));}return Promise[_0x0207('0x97')](_0x25a151)[_0x0207('0xa')](function(){return _0x20ac96;});}return _0x20ac96;});}});}}});};
\ No newline at end of file
index df6151e..7546283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf777=['UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./userProfile.socket','register','request','then','info'];(function(_0x2b73ec,_0x200c06){var _0x21e56b=function(_0xb6c578){while(--_0xb6c578){_0x2b73ec['push'](_0x2b73ec['shift']());}};_0x21e56b(++_0x200c06);}(_0xf777,0x1e9));var _0x7f77=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf777[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x7f77('0x0'));var util=require(_0x7f77('0x1'));var moment=require(_0x7f77('0x2'));var BPromise=require(_0x7f77('0x3'));var rs=require(_0x7f77('0x4'));var fs=require('fs');var Redis=require(_0x7f77('0x5'));var db=require(_0x7f77('0x6'))['db'];var utils=require(_0x7f77('0x7'));var logger=require(_0x7f77('0x8'))('rpc');var config=require(_0x7f77('0x9'));var jayson=require(_0x7f77('0xa'));var client=jayson['client'][_0x7f77('0xb')]({'port':0x232a});config['redis']=_[_0x7f77('0xc')](config['redis'],{'host':_0x7f77('0xd'),'port':0x18eb});var socket=require(_0x7f77('0xe'))(new Redis(config[_0x7f77('0xf')]));require(_0x7f77('0x10'))[_0x7f77('0x11')](socket);function respondWithRpcPromise(_0x4abf42,_0x5df686,_0x10ffe9){return new BPromise(function(_0x10fe04,_0x284329){return client[_0x7f77('0x12')](_0x4abf42,_0x10ffe9)[_0x7f77('0x13')](function(_0x4c68f5){logger[_0x7f77('0x14')](_0x7f77('0x15'),_0x5df686,_0x7f77('0x16'));logger[_0x7f77('0x17')](_0x7f77('0x18'),_0x5df686,'request\x20sent',JSON['stringify'](_0x4c68f5));if(_0x4c68f5[_0x7f77('0x19')]){if(_0x4c68f5[_0x7f77('0x19')][_0x7f77('0x1a')]===0x1f4){logger[_0x7f77('0x19')](_0x7f77('0x15'),_0x5df686,_0x4c68f5[_0x7f77('0x19')][_0x7f77('0x1b')]);return _0x284329(_0x4c68f5[_0x7f77('0x19')][_0x7f77('0x1b')]);}logger[_0x7f77('0x19')](_0x7f77('0x15'),_0x5df686,_0x4c68f5[_0x7f77('0x19')][_0x7f77('0x1b')]);return _0x10fe04(_0x4c68f5[_0x7f77('0x19')][_0x7f77('0x1b')]);}else{logger[_0x7f77('0x14')]('UserProfile,\x20%s,\x20%s',_0x5df686,'request\x20sent');_0x10fe04(_0x4c68f5[_0x7f77('0x1c')]['message']);}})[_0x7f77('0x1d')](function(_0x50eb96){logger[_0x7f77('0x19')](_0x7f77('0x15'),_0x5df686,_0x50eb96);_0x284329(_0x50eb96);});});}
\ No newline at end of file
+var _0x5a43=['moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userProfile.socket','register','request','info','UserProfile,\x20%s,\x20%s','debug','UserProfile,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a43,0xf1));var _0x35a4=function(_0x23d862,_0x67d519){_0x23d862=_0x23d862-0x0;var _0x50a403=_0x5a43[_0x23d862];return _0x50a403;};'use strict';var _=require(_0x35a4('0x0'));var util=require(_0x35a4('0x1'));var moment=require(_0x35a4('0x2'));var BPromise=require(_0x35a4('0x3'));var rs=require(_0x35a4('0x4'));var fs=require('fs');var Redis=require(_0x35a4('0x5'));var db=require(_0x35a4('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x35a4('0x7'));var client=jayson[_0x35a4('0x8')][_0x35a4('0x9')]({'port':0x232a});config[_0x35a4('0xa')]=_[_0x35a4('0xb')](config[_0x35a4('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x35a4('0xc'))(new Redis(config[_0x35a4('0xa')]));require(_0x35a4('0xd'))[_0x35a4('0xe')](socket);function respondWithRpcPromise(_0x43df6d,_0x351402,_0x4acf73){return new BPromise(function(_0x501e7e,_0x55910f){return client[_0x35a4('0xf')](_0x43df6d,_0x4acf73)['then'](function(_0x3d777f){logger[_0x35a4('0x10')](_0x35a4('0x11'),_0x351402,'request\x20sent');logger[_0x35a4('0x12')](_0x35a4('0x13'),_0x351402,_0x35a4('0x14'),JSON[_0x35a4('0x15')](_0x3d777f));if(_0x3d777f['error']){if(_0x3d777f[_0x35a4('0x16')][_0x35a4('0x17')]===0x1f4){logger['error'](_0x35a4('0x11'),_0x351402,_0x3d777f['error'][_0x35a4('0x18')]);return _0x55910f(_0x3d777f[_0x35a4('0x16')][_0x35a4('0x18')]);}logger[_0x35a4('0x16')](_0x35a4('0x11'),_0x351402,_0x3d777f[_0x35a4('0x16')][_0x35a4('0x18')]);return _0x501e7e(_0x3d777f[_0x35a4('0x16')][_0x35a4('0x18')]);}else{logger['info'](_0x35a4('0x11'),_0x351402,_0x35a4('0x14'));_0x501e7e(_0x3d777f[_0x35a4('0x19')][_0x35a4('0x18')]);}})[_0x35a4('0x1a')](function(_0x1197b0){logger[_0x35a4('0x16')](_0x35a4('0x11'),_0x351402,_0x1197b0);_0x55910f(_0x1197b0);});});}
\ No newline at end of file
index 809b308..d0ff9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9723=['./userProfile.events','save','remove','update','emit','removeListener','register','userProfile:'];(function(_0x312019,_0x3a7908){var _0x5c635c=function(_0x5c44cb){while(--_0x5c44cb){_0x312019['push'](_0x312019['shift']());}};_0x5c635c(++_0x3a7908);}(_0x9723,0xf0));var _0x3972=function(_0x838813,_0x448f0f){_0x838813=_0x838813-0x0;var _0x2bd32d=_0x9723[_0x838813];return _0x2bd32d;};'use strict';var UserProfileEvents=require(_0x3972('0x0'));var events=[_0x3972('0x1'),_0x3972('0x2'),_0x3972('0x3')];function createListener(_0x1587e8,_0x436301){return function(_0x17c8fc){_0x436301[_0x3972('0x4')](_0x1587e8,_0x17c8fc);};}function removeListener(_0x3db247,_0x3510a8){return function(){UserProfileEvents[_0x3972('0x5')](_0x3db247,_0x3510a8);};}exports[_0x3972('0x6')]=function(_0x483172){for(var _0x280e24=0x0,_0x1eb3b1=events['length'];_0x280e24<_0x1eb3b1;_0x280e24++){var _0x3856c0=events[_0x280e24];var _0x4676fe=createListener(_0x3972('0x7')+_0x3856c0,_0x483172);UserProfileEvents['on'](_0x3856c0,_0x4676fe);}};
\ No newline at end of file
+var _0xc447=['remove','removeListener','register','userProfile:','./userProfile.events','save'];(function(_0x33f96f,_0x1680b1){var _0x3156f2=function(_0x287639){while(--_0x287639){_0x33f96f['push'](_0x33f96f['shift']());}};_0x3156f2(++_0x1680b1);}(_0xc447,0x136));var _0x7c44=function(_0x32573b,_0x27f2be){_0x32573b=_0x32573b-0x0;var _0xe7eb2e=_0xc447[_0x32573b];return _0xe7eb2e;};'use strict';var UserProfileEvents=require(_0x7c44('0x0'));var events=[_0x7c44('0x1'),_0x7c44('0x2'),'update'];function createListener(_0x2bb8e0,_0x2b2e80){return function(_0x501b8f){_0x2b2e80['emit'](_0x2bb8e0,_0x501b8f);};}function removeListener(_0x236c5a,_0x523ef3){return function(){UserProfileEvents[_0x7c44('0x3')](_0x236c5a,_0x523ef3);};}exports[_0x7c44('0x4')]=function(_0x1adcc2){for(var _0x3ced36=0x0,_0x14d846=events['length'];_0x3ced36<_0x14d846;_0x3ced36++){var _0x4e69cc=events[_0x3ced36];var _0x552ddf=createListener(_0x7c44('0x5')+_0x4e69cc,_0x1adcc2);UserProfileEvents['on'](_0x4e69cc,_0x552ddf);}};
\ No newline at end of file
index 29bf066..d2e231c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c45=['util','path','connect-timeout','express','Router','../../config/environment','./userProfileResource.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete','destroy','exports','multer'];(function(_0x537501,_0x1509e4){var _0x54bfc2=function(_0x29bd68){while(--_0x29bd68){_0x537501['push'](_0x537501['shift']());}};_0x54bfc2(++_0x1509e4);}(_0x4c45,0xc7));var _0x54c4=function(_0x501f4d,_0x51b9d9){_0x501f4d=_0x501f4d-0x0;var _0x199d85=_0x4c45[_0x501f4d];return _0x199d85;};'use strict';var multer=require(_0x54c4('0x0'));var util=require(_0x54c4('0x1'));var path=require(_0x54c4('0x2'));var timeout=require(_0x54c4('0x3'));var express=require(_0x54c4('0x4'));var router=express[_0x54c4('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x54c4('0x6'));var controller=require(_0x54c4('0x7'));router['get']('/',auth[_0x54c4('0x8')](),controller[_0x54c4('0x9')]);router[_0x54c4('0xa')](_0x54c4('0xb'),auth[_0x54c4('0x8')](),controller[_0x54c4('0xc')]);router[_0x54c4('0xa')](_0x54c4('0xd'),auth[_0x54c4('0x8')](),controller[_0x54c4('0xe')]);router[_0x54c4('0xf')]('/',auth[_0x54c4('0x8')](),controller['create']);router['put'](_0x54c4('0xd'),auth[_0x54c4('0x8')](),controller[_0x54c4('0x10')]);router[_0x54c4('0x11')](_0x54c4('0xd'),auth['isAuthenticated'](),controller[_0x54c4('0x12')]);module[_0x54c4('0x13')]=router;
\ No newline at end of file
+var _0xe03e=['fs-extra','../../config/environment','./userProfileResource.controller','describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','express','Router'];(function(_0x35fb56,_0x5dadff){var _0x2fd52c=function(_0x97bd3f){while(--_0x97bd3f){_0x35fb56['push'](_0x35fb56['shift']());}};_0x2fd52c(++_0x5dadff);}(_0xe03e,0x162));var _0xee03=function(_0x32d5c7,_0x20af38){_0x32d5c7=_0x32d5c7-0x0;var _0x4cf7e4=_0xe03e[_0x32d5c7];return _0x4cf7e4;};'use strict';var multer=require(_0xee03('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xee03('0x1'));var router=express[_0xee03('0x2')]();var fs_extra=require(_0xee03('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xee03('0x4'));var controller=require(_0xee03('0x5'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0xee03('0x6')]);router['get'](_0xee03('0x7'),auth[_0xee03('0x8')](),controller[_0xee03('0x9')]);router[_0xee03('0xa')]('/',auth[_0xee03('0x8')](),controller[_0xee03('0xb')]);router[_0xee03('0xc')](_0xee03('0x7'),auth[_0xee03('0x8')](),controller[_0xee03('0xd')]);router[_0xee03('0xe')]('/:id',auth[_0xee03('0x8')](),controller[_0xee03('0xf')]);module[_0xee03('0x10')]=router;
\ No newline at end of file
index e6724a7..712ac23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df9=['exports','STRING','INTEGER','sequelize'];(function(_0x423ac0,_0x17d87b){var _0x3e804f=function(_0x6a329){while(--_0x6a329){_0x423ac0['push'](_0x423ac0['shift']());}};_0x3e804f(++_0x17d87b);}(_0x2df9,0x143));var _0x92df=function(_0x305a91,_0x45bc65){_0x305a91=_0x305a91-0x0;var _0x2c32e4=_0x2df9[_0x305a91];return _0x2c32e4;};'use strict';var Sequelize=require(_0x92df('0x0'));module[_0x92df('0x1')]={'name':{'type':Sequelize[_0x92df('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x92df('0x3')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xbe84=['STRING','INTEGER','exports'];(function(_0x266fae,_0x19b3af){var _0x5b97a9=function(_0xa8307f){while(--_0xa8307f){_0x266fae['push'](_0x266fae['shift']());}};_0x5b97a9(++_0x19b3af);}(_0xbe84,0xfe));var _0x4be8=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xbe84[_0x4b7b62];return _0x2280df;};'use strict';var Sequelize=require('sequelize');module[_0x4be8('0x0')]={'name':{'type':Sequelize[_0x4be8('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x4be8('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 2b90361..086434a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','apply','save','update','then','status','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','UserProfileResource','includeAll','include','findAll','rows','show','params','fields','options','find','catch','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel'];(function(_0x5c7a85,_0x41dd19){var _0x35290f=function(_0x26215b){while(--_0x26215b){_0x5c7a85['push'](_0x5c7a85['shift']());}};_0x35290f(++_0x41dd19);}(_0x1967,0x173));var _0x7196=function(_0x21f5f7,_0x5d3188){_0x21f5f7=_0x21f5f7-0x0;var _0xf0e2bd=_0x1967[_0x21f5f7];return _0xf0e2bd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7196('0x0'));var zipdir=require(_0x7196('0x1'));var jsonpatch=require(_0x7196('0x2'));var rp=require(_0x7196('0x3'));var moment=require(_0x7196('0x4'));var BPromise=require(_0x7196('0x5'));var Mustache=require(_0x7196('0x6'));var util=require(_0x7196('0x7'));var path=require(_0x7196('0x8'));var sox=require(_0x7196('0x9'));var csv=require('to-csv');var ejs=require(_0x7196('0xa'));var fs=require('fs');var fs_extra=require(_0x7196('0xb'));var _=require(_0x7196('0xc'));var squel=require(_0x7196('0xd'));var crypto=require(_0x7196('0xe'));var jsforce=require(_0x7196('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7196('0x10'));var querystring=require(_0x7196('0x11'));var Papa=require(_0x7196('0x12'));var Redis=require(_0x7196('0x13'));var authService=require(_0x7196('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7196('0x15'));var logger=require(_0x7196('0x16'))(_0x7196('0x17'));var utils=require(_0x7196('0x18'));var config=require(_0x7196('0x19'));var licenseUtil=require(_0x7196('0x1a'));var db=require(_0x7196('0x1b'))['db'];function respondWithStatusCode(_0x325641,_0x24f1c3){_0x24f1c3=_0x24f1c3||0xcc;return function(_0xba707b){if(_0xba707b){return _0x325641[_0x7196('0x1c')](_0x24f1c3);}return _0x325641['status'](_0x24f1c3)[_0x7196('0x1d')]();};}function respondWithResult(_0x3feccd,_0x3545aa){_0x3545aa=_0x3545aa||0xc8;return function(_0xf098c1){if(_0xf098c1){return _0x3feccd['status'](_0x3545aa)[_0x7196('0x1e')](_0xf098c1);}};}function respondWithFilteredResult(_0x539414,_0xe32933){return function(_0x2590a6){if(_0x2590a6){var _0xf7e97=typeof _0xe32933[_0x7196('0x1f')]===_0x7196('0x20')&&typeof _0xe32933[_0x7196('0x21')]===_0x7196('0x20');var _0x1ed296=_0x2590a6[_0x7196('0x22')];var _0x32fe2b=_0xf7e97?0x0:_0xe32933[_0x7196('0x1f')];var _0x5b716a=_0xf7e97?_0x2590a6['count']:_0xe32933[_0x7196('0x1f')]+_0xe32933[_0x7196('0x21')];var _0x40418d;if(_0x5b716a>=_0x1ed296){_0x5b716a=_0x1ed296;_0x40418d=0xc8;}else{_0x40418d=0xce;}_0x539414['status'](_0x40418d);return _0x539414[_0x7196('0x23')]('Content-Range',_0x32fe2b+'-'+_0x5b716a+'/'+_0x1ed296)['json'](_0x2590a6);}return null;};}function patchUpdates(_0x296e07){return function(_0x627223){try{jsonpatch[_0x7196('0x24')](_0x627223,_0x296e07,!![]);}catch(_0x4ddf78){return BPromise['reject'](_0x4ddf78);}return _0x627223[_0x7196('0x25')]();};}function saveUpdates(_0x3cd8ff,_0x598a26){return function(_0x18649b){if(_0x18649b){return _0x18649b[_0x7196('0x26')](_0x3cd8ff)[_0x7196('0x27')](function(_0x18d389){return _0x18d389;});}return null;};}function removeEntity(_0x38b3d6,_0x549f34){return function(_0x3f8178){if(_0x3f8178){return _0x3f8178['destroy']()[_0x7196('0x27')](function(){_0x38b3d6[_0x7196('0x28')](0xcc)[_0x7196('0x1d')]();});}};}function handleEntityNotFound(_0xa69810,_0x70aa65){return function(_0x43f6a2){if(!_0x43f6a2){_0xa69810['sendStatus'](0x194);}return _0x43f6a2;};}function handleError(_0x57c404,_0x1482e5){_0x1482e5=_0x1482e5||0x1f4;return function(_0x2d284f){logger[_0x7196('0x29')](_0x2d284f['stack']);if(_0x2d284f['name']){delete _0x2d284f[_0x7196('0x2a')];}_0x57c404[_0x7196('0x28')](_0x1482e5)[_0x7196('0x2b')](_0x2d284f);};}exports['index']=function(_0x35eef9,_0x4ecea1){var _0x4fd339={},_0x59d79d={},_0x30151f={'count':0x0,'rows':[]};var _0x985727=_[_0x7196('0x2c')](db['UserProfileResource'][_0x7196('0x2d')],function(_0x45d567){return{'name':_0x45d567[_0x7196('0x2e')],'type':_0x45d567[_0x7196('0x2f')]['key']};});_0x59d79d[_0x7196('0x30')]=_[_0x7196('0x2c')](_0x985727,_0x7196('0x2a'));_0x59d79d[_0x7196('0x31')]=_[_0x7196('0x32')](_0x35eef9[_0x7196('0x31')]);_0x59d79d[_0x7196('0x33')]=_[_0x7196('0x34')](_0x59d79d[_0x7196('0x30')],_0x59d79d[_0x7196('0x31')]);_0x4fd339[_0x7196('0x35')]=_['intersection'](_0x59d79d[_0x7196('0x30')],qs['fields'](_0x35eef9[_0x7196('0x31')]['fields']));_0x4fd339[_0x7196('0x35')]=_0x4fd339[_0x7196('0x35')]['length']?_0x4fd339[_0x7196('0x35')]:_0x59d79d[_0x7196('0x30')];if(!_0x35eef9[_0x7196('0x31')][_0x7196('0x36')](_0x7196('0x37'))){_0x4fd339['limit']=qs[_0x7196('0x21')](_0x35eef9[_0x7196('0x31')][_0x7196('0x21')]);_0x4fd339[_0x7196('0x1f')]=qs[_0x7196('0x1f')](_0x35eef9[_0x7196('0x31')]['offset']);}_0x4fd339[_0x7196('0x38')]=qs[_0x7196('0x39')](_0x35eef9[_0x7196('0x31')]['sort']);_0x4fd339[_0x7196('0x3a')]=qs[_0x7196('0x33')](_[_0x7196('0x3b')](_0x35eef9[_0x7196('0x31')],_0x59d79d[_0x7196('0x33')]),_0x985727);if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3c')]){_0x4fd339[_0x7196('0x3a')]=_[_0x7196('0x3d')](_0x4fd339[_0x7196('0x3a')],{'$or':_['map'](_0x985727,function(_0x257754){if(_0x257754[_0x7196('0x2f')]!=='VIRTUAL'){var _0x186efe={};_0x186efe[_0x257754['name']]={'$like':'%'+_0x35eef9['query'][_0x7196('0x3c')]+'%'};return _0x186efe;}})});}_0x4fd339=_[_0x7196('0x3d')]({},_0x4fd339,_0x35eef9['options']);var _0x587f6f={'where':_0x4fd339[_0x7196('0x3a')]};return db[_0x7196('0x3e')][_0x7196('0x22')](_0x587f6f)['then'](function(_0x36a990){_0x30151f[_0x7196('0x22')]=_0x36a990;if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3f')]){_0x4fd339[_0x7196('0x40')]=[{'all':!![]}];}return db[_0x7196('0x3e')][_0x7196('0x41')](_0x4fd339);})[_0x7196('0x27')](function(_0x5cd903){_0x30151f[_0x7196('0x42')]=_0x5cd903;return _0x30151f;})[_0x7196('0x27')](respondWithFilteredResult(_0x4ecea1,_0x4fd339))['catch'](handleError(_0x4ecea1,null));};exports[_0x7196('0x43')]=function(_0x43d4c0,_0x48178f){var _0x471915={'raw':![],'where':{'id':_0x43d4c0[_0x7196('0x44')]['id']}},_0x471bb2={};_0x471bb2['model']=_[_0x7196('0x32')](db[_0x7196('0x3e')]['rawAttributes']);_0x471bb2[_0x7196('0x31')]=_[_0x7196('0x32')](_0x43d4c0['query']);_0x471bb2[_0x7196('0x33')]=_['intersection'](_0x471bb2['model'],_0x471bb2['query']);_0x471915['attributes']=_['intersection'](_0x471bb2[_0x7196('0x30')],qs['fields'](_0x43d4c0[_0x7196('0x31')][_0x7196('0x45')]));_0x471915[_0x7196('0x35')]=_0x471915[_0x7196('0x35')]['length']?_0x471915[_0x7196('0x35')]:_0x471bb2['model'];if(_0x43d4c0[_0x7196('0x31')][_0x7196('0x3f')]){_0x471915[_0x7196('0x40')]=[{'all':!![]}];}_0x471915=_['merge']({},_0x471915,_0x43d4c0[_0x7196('0x46')]);return db[_0x7196('0x3e')][_0x7196('0x47')](_0x471915)['then'](handleEntityNotFound(_0x48178f,null))['then'](respondWithResult(_0x48178f,null))[_0x7196('0x48')](handleError(_0x48178f,null));};exports['create']=function(_0x29c7e8,_0x582884){return db['UserProfileResource'][_0x7196('0x49')](_0x29c7e8['body'],{})['then'](respondWithResult(_0x582884,0xc9))['catch'](handleError(_0x582884,null));};exports[_0x7196('0x26')]=function(_0x5052ee,_0x48e3b5){if(_0x5052ee[_0x7196('0x4a')]['id']){delete _0x5052ee[_0x7196('0x4a')]['id'];}return db[_0x7196('0x3e')][_0x7196('0x47')]({'where':{'id':_0x5052ee['params']['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x48e3b5,null))['then'](saveUpdates(_0x5052ee[_0x7196('0x4a')],null))[_0x7196('0x27')](respondWithResult(_0x48e3b5,null))['catch'](handleError(_0x48e3b5,null));};exports[_0x7196('0x4b')]=function(_0x2fd056,_0x3fe092){return db['UserProfileResource'][_0x7196('0x47')]({'where':{'id':_0x2fd056['params']['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x3fe092,null))[_0x7196('0x27')](removeEntity(_0x3fe092,null))[_0x7196('0x48')](handleError(_0x3fe092,null));};exports[_0x7196('0x4c')]=function(_0x41a9aa,_0x19733a){return db[_0x7196('0x3e')][_0x7196('0x4c')]()['then'](respondWithResult(_0x19733a,null))['catch'](handleError(_0x19733a,null));};
\ No newline at end of file
+var _0xadb5=['intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','describe','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','UserProfileResource','fieldName','type','key','model','query','keys'];(function(_0x45bc9d,_0x10e9c6){var _0x3cec77=function(_0x491118){while(--_0x491118){_0x45bc9d['push'](_0x45bc9d['shift']());}};_0x3cec77(++_0x10e9c6);}(_0xadb5,0xad));var _0x5adb=function(_0x5d82ea,_0x191584){_0x5d82ea=_0x5d82ea-0x0;var _0xeb5d58=_0xadb5[_0x5d82ea];return _0xeb5d58;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['UserProfileResource']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['UserProfileResource'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['UserProfileResource'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};exports['describe']=function(_0x36b847,_0x3a5703){return db[_0x5adb('0x2a')][_0x5adb('0x49')]()['then'](respondWithResult(_0x3a5703,null))[_0x5adb('0x42')](handleError(_0x3a5703,null));};
\ No newline at end of file
index f6c247c..f19284a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7761=['api','moment','bluebird','request-promise','path','rimraf','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','resourceId','lodash','util','../../config/logger'];(function(_0x57455c,_0x47e9d8){var _0x44e30f=function(_0x56ed25){while(--_0x56ed25){_0x57455c['push'](_0x57455c['shift']());}};_0x44e30f(++_0x47e9d8);}(_0x7761,0x84));var _0x1776=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7761[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x1776('0x0'));var util=require(_0x1776('0x1'));var logger=require(_0x1776('0x2'))(_0x1776('0x3'));var moment=require(_0x1776('0x4'));var BPromise=require(_0x1776('0x5'));var rp=require(_0x1776('0x6'));var fs=require('fs');var path=require(_0x1776('0x7'));var rimraf=require(_0x1776('0x8'));var config=require('../../config/environment');var attributes=require(_0x1776('0x9'));module[_0x1776('0xa')]=function(_0x3d8b86,_0x3fee9c){return _0x3d8b86[_0x1776('0xb')](_0x1776('0xc'),attributes,{'tableName':_0x1776('0xd'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x1776('0xe'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0d56=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash'];(function(_0x5d3fac,_0x2d2bd2){var _0x4bfb18=function(_0x30e05e){while(--_0x30e05e){_0x5d3fac['push'](_0x5d3fac['shift']());}};_0x4bfb18(++_0x2d2bd2);}(_0x0d56,0x125));var _0x60d5=function(_0xb179b5,_0x3601bf){_0xb179b5=_0xb179b5-0x0;var _0x4088a7=_0x0d56[_0xb179b5];return _0x4088a7;};'use strict';var _=require(_0x60d5('0x0'));var util=require('util');var logger=require(_0x60d5('0x1'))('api');var moment=require(_0x60d5('0x2'));var BPromise=require(_0x60d5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x60d5('0x4'));var rimraf=require(_0x60d5('0x5'));var config=require(_0x60d5('0x6'));var attributes=require(_0x60d5('0x7'));module[_0x60d5('0x8')]=function(_0x3c872d,_0x3aafa2){return _0x3c872d[_0x60d5('0x9')]('UserProfileResource',attributes,{'tableName':_0x60d5('0xa'),'paranoid':![],'indexes':[{'name':_0x60d5('0xb'),'fields':[_0x60d5('0xc'),_0x60d5('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 7e19e58..c6378ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb785=['debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','../../config/environment','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent'];(function(_0x1ff575,_0xdba21f){var _0x48fc9e=function(_0x51cf97){while(--_0x51cf97){_0x1ff575['push'](_0x1ff575['shift']());}};_0x48fc9e(++_0xdba21f);}(_0xb785,0x79));var _0x5b78=function(_0xa03b81,_0x50d201){_0xa03b81=_0xa03b81-0x0;var _0x5229ac=_0xb785[_0xa03b81];return _0x5229ac;};'use strict';var _=require(_0x5b78('0x0'));var util=require(_0x5b78('0x1'));var moment=require('moment');var BPromise=require(_0x5b78('0x2'));var rs=require(_0x5b78('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5b78('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x5b78('0x5')][_0x5b78('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x598919,_0x88805f,_0x7d8c7a){return new BPromise(function(_0x1dd808,_0x2d21fe){return client[_0x5b78('0x7')](_0x598919,_0x7d8c7a)[_0x5b78('0x8')](function(_0x390967){logger[_0x5b78('0x9')](_0x5b78('0xa'),_0x88805f,_0x5b78('0xb'));logger[_0x5b78('0xc')](_0x5b78('0xd'),_0x88805f,_0x5b78('0xb'),JSON[_0x5b78('0xe')](_0x390967));if(_0x390967[_0x5b78('0xf')]){if(_0x390967[_0x5b78('0xf')]['code']===0x1f4){logger[_0x5b78('0xf')]('UserProfileResource,\x20%s,\x20%s',_0x88805f,_0x390967[_0x5b78('0xf')]['message']);return _0x2d21fe(_0x390967[_0x5b78('0xf')]['message']);}logger[_0x5b78('0xf')](_0x5b78('0xa'),_0x88805f,_0x390967[_0x5b78('0xf')][_0x5b78('0x10')]);return _0x1dd808(_0x390967['error'][_0x5b78('0x10')]);}else{logger[_0x5b78('0x9')](_0x5b78('0xa'),_0x88805f,'request\x20sent');_0x1dd808(_0x390967[_0x5b78('0x11')][_0x5b78('0x10')]);}})[_0x5b78('0x12')](function(_0x55244a){logger[_0x5b78('0xf')](_0x5b78('0xa'),_0x88805f,_0x55244a);_0x2d21fe(_0x55244a);});});}
\ No newline at end of file
+var _0xae79=['jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc'];(function(_0x31789b,_0x5db4aa){var _0x139efe=function(_0x307476){while(--_0x307476){_0x31789b['push'](_0x31789b['shift']());}};_0x139efe(++_0x5db4aa);}(_0xae79,0x86));var _0x9ae7=function(_0x133e15,_0xc1ab3c){_0x133e15=_0x133e15-0x0;var _0x5a9b41=_0xae79[_0x133e15];return _0x5a9b41;};'use strict';var _=require(_0x9ae7('0x0'));var util=require(_0x9ae7('0x1'));var moment=require('moment');var BPromise=require(_0x9ae7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ae7('0x3'))['db'];var utils=require(_0x9ae7('0x4'));var logger=require('../../config/logger')(_0x9ae7('0x5'));var config=require('../../config/environment');var jayson=require(_0x9ae7('0x6'));var client=jayson[_0x9ae7('0x7')][_0x9ae7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xeca08b,_0x120eb6,_0x54856a){return new BPromise(function(_0x4aa71a,_0x5932a0){return client[_0x9ae7('0x9')](_0xeca08b,_0x54856a)[_0x9ae7('0xa')](function(_0x1c484a){logger[_0x9ae7('0xb')](_0x9ae7('0xc'),_0x120eb6,'request\x20sent');logger[_0x9ae7('0xd')](_0x9ae7('0xe'),_0x120eb6,_0x9ae7('0xf'),JSON['stringify'](_0x1c484a));if(_0x1c484a['error']){if(_0x1c484a['error']['code']===0x1f4){logger[_0x9ae7('0x10')](_0x9ae7('0xc'),_0x120eb6,_0x1c484a[_0x9ae7('0x10')][_0x9ae7('0x11')]);return _0x5932a0(_0x1c484a[_0x9ae7('0x10')]['message']);}logger[_0x9ae7('0x10')](_0x9ae7('0xc'),_0x120eb6,_0x1c484a[_0x9ae7('0x10')][_0x9ae7('0x11')]);return _0x4aa71a(_0x1c484a[_0x9ae7('0x10')]['message']);}else{logger['info']('UserProfileResource,\x20%s,\x20%s',_0x120eb6,'request\x20sent');_0x4aa71a(_0x1c484a[_0x9ae7('0x12')][_0x9ae7('0x11')]);}})[_0x9ae7('0x13')](function(_0x4c0fb7){logger['error']('UserProfileResource,\x20%s,\x20%s',_0x120eb6,_0x4c0fb7);_0x5932a0(_0x4c0fb7);});});}
\ No newline at end of file
index 1d5a8a1..58bd56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1d0=['get','isAuthenticated','/describe','describe','/:id','show','post','create','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller'];(function(_0xb14117,_0x1d5efe){var _0x5692b3=function(_0x184179){while(--_0x184179){_0xb14117['push'](_0xb14117['shift']());}};_0x5692b3(++_0x1d5efe);}(_0xc1d0,0x139));var _0x0c1d=function(_0x65589e,_0x5a5205){_0x65589e=_0x65589e-0x0;var _0x52aec8=_0xc1d0[_0x65589e];return _0x52aec8;};'use strict';var multer=require(_0x0c1d('0x0'));var util=require(_0x0c1d('0x1'));var path=require(_0x0c1d('0x2'));var timeout=require(_0x0c1d('0x3'));var express=require(_0x0c1d('0x4'));var router=express[_0x0c1d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0c1d('0x6'));var interaction=require(_0x0c1d('0x7'));var config=require(_0x0c1d('0x8'));var controller=require(_0x0c1d('0x9'));router[_0x0c1d('0xa')]('/',auth[_0x0c1d('0xb')](),controller['index']);router[_0x0c1d('0xa')](_0x0c1d('0xc'),auth[_0x0c1d('0xb')](),controller[_0x0c1d('0xd')]);router[_0x0c1d('0xa')](_0x0c1d('0xe'),auth[_0x0c1d('0xb')](),controller[_0x0c1d('0xf')]);router[_0x0c1d('0x10')]('/',auth[_0x0c1d('0xb')](),controller[_0x0c1d('0x11')]);router['put'](_0x0c1d('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x0c1d('0xe'),auth[_0x0c1d('0xb')](),controller[_0x0c1d('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x2e5a=['../../components/auth/service','get','index','/describe','isAuthenticated','describe','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x10c9b4,_0x205e03){var _0x4df817=function(_0x6cd1c2){while(--_0x6cd1c2){_0x10c9b4['push'](_0x10c9b4['shift']());}};_0x4df817(++_0x205e03);}(_0x2e5a,0x176));var _0xa2e5=function(_0x5dd4e9,_0x2efb40){_0x5dd4e9=_0x5dd4e9-0x0;var _0x427e39=_0x2e5a[_0x5dd4e9];return _0x427e39;};'use strict';var multer=require(_0xa2e5('0x0'));var util=require(_0xa2e5('0x1'));var path=require(_0xa2e5('0x2'));var timeout=require(_0xa2e5('0x3'));var express=require('express');var router=express[_0xa2e5('0x4')]();var fs_extra=require(_0xa2e5('0x5'));var auth=require(_0xa2e5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userProfileSection.controller');router[_0xa2e5('0x7')]('/',auth['isAuthenticated'](),controller[_0xa2e5('0x8')]);router[_0xa2e5('0x7')](_0xa2e5('0x9'),auth[_0xa2e5('0xa')](),controller[_0xa2e5('0xb')]);router[_0xa2e5('0x7')](_0xa2e5('0xc'),auth[_0xa2e5('0xa')](),controller[_0xa2e5('0xd')]);router['post']('/',auth[_0xa2e5('0xa')](),controller[_0xa2e5('0xe')]);router['put'](_0xa2e5('0xc'),auth[_0xa2e5('0xa')](),controller[_0xa2e5('0xf')]);router[_0xa2e5('0x10')]('/:id',auth[_0xa2e5('0xa')](),controller[_0xa2e5('0x11')]);module[_0xa2e5('0x12')]=router;
\ No newline at end of file
index 3ca96a5..a128981 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['getDataValue','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join'];(function(_0x5e3cbd,_0x2fd5cd){var _0x1ed1ce=function(_0x4bae94){while(--_0x4bae94){_0x5e3cbd['push'](_0x5e3cbd['shift']());}};_0x1ed1ce(++_0x2fd5cd);}(_0x36ee,0xe8));var _0xe36e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x36ee[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe36e('0x0')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xe36e('0x1')],'allowNull':![]},'enabled':{'type':Sequelize[_0xe36e('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xe36e('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xe36e('0x0')],'set':function(_0x567a84){this[_0xe36e('0x3')](_0xe36e('0x4'),_0x567a84?_0x567a84[_0xe36e('0x5')](''):[]);},'get':function(){return this[_0xe36e('0x6')](_0xe36e('0x4'))?this[_0xe36e('0x6')](_0xe36e('0x4'))['split'](''):[];}}};
\ No newline at end of file
+var _0xf7b4=['getDataValue','split','sequelize','STRING','INTEGER','setDataValue','crudPermissions','join'];(function(_0x32fa02,_0x35c560){var _0x4d21de=function(_0x3f5828){while(--_0x3f5828){_0x32fa02['push'](_0x32fa02['shift']());}};_0x4d21de(++_0x35c560);}(_0xf7b4,0x152));var _0x4f7b=function(_0xd02042,_0x571a85){_0xd02042=_0xd02042-0x0;var _0x4cc1fd=_0xf7b4[_0xd02042];return _0x4cc1fd;};'use strict';var Sequelize=require(_0x4f7b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x4f7b('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4f7b('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4f7b('0x1')],'set':function(_0x3e18fd){this[_0x4f7b('0x3')](_0x4f7b('0x4'),_0x3e18fd?_0x3e18fd[_0x4f7b('0x5')](''):[]);},'get':function(){return this[_0x4f7b('0x6')](_0x4f7b('0x4'))?this[_0x4f7b('0x6')](_0x4f7b('0x4'))[_0x4f7b('0x7')](''):[];}}};
\ No newline at end of file
index f275c48..6d08819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5b9=['../../config/license/util','sendStatus','status','end','offset','limit','count','set','json','apply','reject','stack','name','index','map','UserProfileSection','rawAttributes','fieldName','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','then','include','findAll','catch','show','params','includeAll','find','create','update','body','describe','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x17044c,_0x208790){var _0x5e6db0=function(_0x3f5f50){while(--_0x3f5f50){_0x17044c['push'](_0x17044c['shift']());}};_0x5e6db0(++_0x208790);}(_0xf5b9,0xc2));var _0x9f5b=function(_0x1c2d5d,_0x441658){_0x1c2d5d=_0x1c2d5d-0x0;var _0x24f987=_0xf5b9[_0x1c2d5d];return _0x24f987;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9f5b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9f5b('0x1'));var rp=require('request-promise');var moment=require(_0x9f5b('0x2'));var BPromise=require(_0x9f5b('0x3'));var Mustache=require(_0x9f5b('0x4'));var util=require(_0x9f5b('0x5'));var path=require(_0x9f5b('0x6'));var sox=require(_0x9f5b('0x7'));var csv=require('to-csv');var ejs=require(_0x9f5b('0x8'));var fs=require('fs');var fs_extra=require(_0x9f5b('0x9'));var _=require(_0x9f5b('0xa'));var squel=require(_0x9f5b('0xb'));var crypto=require(_0x9f5b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9f5b('0xd'));var toCsv=require(_0x9f5b('0xe'));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(_0x9f5b('0x14'));var hardwareService=require(_0x9f5b('0x15'));var logger=require(_0x9f5b('0x16'))('api');var utils=require(_0x9f5b('0x17'));var config=require(_0x9f5b('0x18'));var licenseUtil=require(_0x9f5b('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x73c123,_0x258860){_0x258860=_0x258860||0xcc;return function(_0x346989){if(_0x346989){return _0x73c123[_0x9f5b('0x1a')](_0x258860);}return _0x73c123[_0x9f5b('0x1b')](_0x258860)[_0x9f5b('0x1c')]();};}function respondWithResult(_0x50990e,_0x579743){_0x579743=_0x579743||0xc8;return function(_0x63ddc5){if(_0x63ddc5){return _0x50990e['status'](_0x579743)['json'](_0x63ddc5);}};}function respondWithFilteredResult(_0x5200af,_0x2ae04b){return function(_0x37b8b5){if(_0x37b8b5){var _0x109312=typeof _0x2ae04b[_0x9f5b('0x1d')]==='undefined'&&typeof _0x2ae04b[_0x9f5b('0x1e')]==='undefined';var _0x287499=_0x37b8b5[_0x9f5b('0x1f')];var _0xae92b3=_0x109312?0x0:_0x2ae04b[_0x9f5b('0x1d')];var _0x14eebb=_0x109312?_0x37b8b5[_0x9f5b('0x1f')]:_0x2ae04b[_0x9f5b('0x1d')]+_0x2ae04b['limit'];var _0x5800a3;if(_0x14eebb>=_0x287499){_0x14eebb=_0x287499;_0x5800a3=0xc8;}else{_0x5800a3=0xce;}_0x5200af['status'](_0x5800a3);return _0x5200af[_0x9f5b('0x20')]('Content-Range',_0xae92b3+'-'+_0x14eebb+'/'+_0x287499)[_0x9f5b('0x21')](_0x37b8b5);}return null;};}function patchUpdates(_0x2b91d4){return function(_0x3b80e2){try{jsonpatch[_0x9f5b('0x22')](_0x3b80e2,_0x2b91d4,!![]);}catch(_0x50cb52){return BPromise[_0x9f5b('0x23')](_0x50cb52);}return _0x3b80e2['save']();};}function saveUpdates(_0x21bfcd,_0xe688aa){return function(_0x3062ae){if(_0x3062ae){return _0x3062ae['update'](_0x21bfcd)['then'](function(_0x582475){return _0x582475;});}return null;};}function removeEntity(_0x27b7a3,_0x3c6fc2){return function(_0xd6f832){if(_0xd6f832){return _0xd6f832['destroy']()['then'](function(){_0x27b7a3[_0x9f5b('0x1b')](0xcc)[_0x9f5b('0x1c')]();});}};}function handleEntityNotFound(_0x42a796,_0x2be133){return function(_0x4d0f27){if(!_0x4d0f27){_0x42a796['sendStatus'](0x194);}return _0x4d0f27;};}function handleError(_0x26f46b,_0x2bc6ed){_0x2bc6ed=_0x2bc6ed||0x1f4;return function(_0x30b192){logger['error'](_0x30b192[_0x9f5b('0x24')]);if(_0x30b192[_0x9f5b('0x25')]){delete _0x30b192[_0x9f5b('0x25')];}_0x26f46b[_0x9f5b('0x1b')](_0x2bc6ed)['send'](_0x30b192);};}exports[_0x9f5b('0x26')]=function(_0x2d8122,_0x2f80da){var _0x9d2260={},_0x12d8f8={},_0xbe5c11={'count':0x0,'rows':[]};var _0x6fc57b=_[_0x9f5b('0x27')](db[_0x9f5b('0x28')][_0x9f5b('0x29')],function(_0x133f1a){return{'name':_0x133f1a[_0x9f5b('0x2a')],'type':_0x133f1a['type'][_0x9f5b('0x2b')]};});_0x12d8f8['model']=_[_0x9f5b('0x27')](_0x6fc57b,_0x9f5b('0x25'));_0x12d8f8[_0x9f5b('0x2c')]=_[_0x9f5b('0x2d')](_0x2d8122[_0x9f5b('0x2c')]);_0x12d8f8[_0x9f5b('0x2e')]=_[_0x9f5b('0x2f')](_0x12d8f8['model'],_0x12d8f8[_0x9f5b('0x2c')]);_0x9d2260[_0x9f5b('0x30')]=_[_0x9f5b('0x2f')](_0x12d8f8[_0x9f5b('0x31')],qs[_0x9f5b('0x32')](_0x2d8122['query'][_0x9f5b('0x32')]));_0x9d2260['attributes']=_0x9d2260[_0x9f5b('0x30')][_0x9f5b('0x33')]?_0x9d2260['attributes']:_0x12d8f8[_0x9f5b('0x31')];if(!_0x2d8122[_0x9f5b('0x2c')][_0x9f5b('0x34')](_0x9f5b('0x35'))){_0x9d2260['limit']=qs[_0x9f5b('0x1e')](_0x2d8122['query'][_0x9f5b('0x1e')]);_0x9d2260['offset']=qs[_0x9f5b('0x1d')](_0x2d8122[_0x9f5b('0x2c')]['offset']);}_0x9d2260[_0x9f5b('0x36')]=qs[_0x9f5b('0x37')](_0x2d8122['query'][_0x9f5b('0x37')]);_0x9d2260[_0x9f5b('0x38')]=qs[_0x9f5b('0x2e')](_[_0x9f5b('0x39')](_0x2d8122['query'],_0x12d8f8[_0x9f5b('0x2e')]),_0x6fc57b);if(_0x2d8122['query']['filter']){_0x9d2260[_0x9f5b('0x38')]=_[_0x9f5b('0x3a')](_0x9d2260[_0x9f5b('0x38')],{'$or':_[_0x9f5b('0x27')](_0x6fc57b,function(_0xb489d4){if(_0xb489d4[_0x9f5b('0x3b')]!=='VIRTUAL'){var _0x31d5ed={};_0x31d5ed[_0xb489d4['name']]={'$like':'%'+_0x2d8122[_0x9f5b('0x2c')][_0x9f5b('0x3c')]+'%'};return _0x31d5ed;}})});}_0x9d2260=_[_0x9f5b('0x3a')]({},_0x9d2260,_0x2d8122['options']);var _0x2ace7a={'where':_0x9d2260[_0x9f5b('0x38')]};return db[_0x9f5b('0x28')][_0x9f5b('0x1f')](_0x2ace7a)[_0x9f5b('0x3d')](function(_0xf7cac2){_0xbe5c11[_0x9f5b('0x1f')]=_0xf7cac2;if(_0x2d8122['query']['includeAll']){_0x9d2260[_0x9f5b('0x3e')]=[{'all':!![]}];}return db['UserProfileSection'][_0x9f5b('0x3f')](_0x9d2260);})['then'](function(_0x3e67de){_0xbe5c11['rows']=_0x3e67de;return _0xbe5c11;})[_0x9f5b('0x3d')](respondWithFilteredResult(_0x2f80da,_0x9d2260))[_0x9f5b('0x40')](handleError(_0x2f80da,null));};exports[_0x9f5b('0x41')]=function(_0x107e20,_0x175bf7){var _0x35a15b={'raw':![],'where':{'id':_0x107e20[_0x9f5b('0x42')]['id']}},_0x1fb3d9={};_0x1fb3d9[_0x9f5b('0x31')]=_[_0x9f5b('0x2d')](db[_0x9f5b('0x28')][_0x9f5b('0x29')]);_0x1fb3d9[_0x9f5b('0x2c')]=_[_0x9f5b('0x2d')](_0x107e20[_0x9f5b('0x2c')]);_0x1fb3d9[_0x9f5b('0x2e')]=_[_0x9f5b('0x2f')](_0x1fb3d9[_0x9f5b('0x31')],_0x1fb3d9[_0x9f5b('0x2c')]);_0x35a15b['attributes']=_[_0x9f5b('0x2f')](_0x1fb3d9['model'],qs['fields'](_0x107e20[_0x9f5b('0x2c')][_0x9f5b('0x32')]));_0x35a15b['attributes']=_0x35a15b[_0x9f5b('0x30')][_0x9f5b('0x33')]?_0x35a15b[_0x9f5b('0x30')]:_0x1fb3d9[_0x9f5b('0x31')];if(_0x107e20['query'][_0x9f5b('0x43')]){_0x35a15b[_0x9f5b('0x3e')]=[{'all':!![]}];}_0x35a15b=_[_0x9f5b('0x3a')]({},_0x35a15b,_0x107e20['options']);return db[_0x9f5b('0x28')][_0x9f5b('0x44')](_0x35a15b)[_0x9f5b('0x3d')](handleEntityNotFound(_0x175bf7,null))[_0x9f5b('0x3d')](respondWithResult(_0x175bf7,null))[_0x9f5b('0x40')](handleError(_0x175bf7,null));};exports[_0x9f5b('0x45')]=function(_0x20a074,_0x1259d3){return db[_0x9f5b('0x28')][_0x9f5b('0x45')](_0x20a074['body'],{})[_0x9f5b('0x3d')](respondWithResult(_0x1259d3,0xc9))['catch'](handleError(_0x1259d3,null));};exports[_0x9f5b('0x46')]=function(_0x153c73,_0x2fcc6a){if(_0x153c73[_0x9f5b('0x47')]['id']){delete _0x153c73[_0x9f5b('0x47')]['id'];}return db[_0x9f5b('0x28')][_0x9f5b('0x44')]({'where':{'id':_0x153c73[_0x9f5b('0x42')]['id']}})['then'](handleEntityNotFound(_0x2fcc6a,null))[_0x9f5b('0x3d')](saveUpdates(_0x153c73[_0x9f5b('0x47')],null))['then'](respondWithResult(_0x2fcc6a,null))['catch'](handleError(_0x2fcc6a,null));};exports['destroy']=function(_0x4e2425,_0x1bc41d){return db[_0x9f5b('0x28')][_0x9f5b('0x44')]({'where':{'id':_0x4e2425[_0x9f5b('0x42')]['id']}})[_0x9f5b('0x3d')](handleEntityNotFound(_0x1bc41d,null))['then'](removeEntity(_0x1bc41d,null))[_0x9f5b('0x40')](handleError(_0x1bc41d,null));};exports[_0x9f5b('0x48')]=function(_0x2aa88f,_0x17336d){return db[_0x9f5b('0x28')]['describe']()['then'](respondWithResult(_0x17336d,null))['catch'](handleError(_0x17336d,null));};
\ No newline at end of file
+var _0xa54c=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','destroy','describe','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','apply','update','then','sendStatus','error','stack','name','map','UserProfileSection','fieldName','type','key','model'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa54c,0x140));var _0xca54=function(_0x1562a2,_0x2e4655){_0x1562a2=_0x1562a2-0x0;var _0x39a636=_0xa54c[_0x1562a2];return _0x39a636;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xca54('0x0'));var rp=require(_0xca54('0x1'));var moment=require('moment');var BPromise=require(_0xca54('0x2'));var Mustache=require(_0xca54('0x3'));var util=require(_0xca54('0x4'));var path=require(_0xca54('0x5'));var sox=require(_0xca54('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xca54('0x7'));var _=require(_0xca54('0x8'));var squel=require(_0xca54('0x9'));var crypto=require(_0xca54('0xa'));var jsforce=require(_0xca54('0xb'));var deskjs=require(_0xca54('0xc'));var toCsv=require(_0xca54('0xd'));var querystring=require(_0xca54('0xe'));var Papa=require(_0xca54('0xf'));var Redis=require(_0xca54('0x10'));var authService=require(_0xca54('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xca54('0x12'));var hardwareService=require(_0xca54('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xca54('0x14'));var config=require(_0xca54('0x15'));var licenseUtil=require(_0xca54('0x16'));var db=require(_0xca54('0x17'))['db'];function respondWithStatusCode(_0x3cf221,_0x17fab2){_0x17fab2=_0x17fab2||0xcc;return function(_0x3fc00c){if(_0x3fc00c){return _0x3cf221['sendStatus'](_0x17fab2);}return _0x3cf221[_0xca54('0x18')](_0x17fab2)[_0xca54('0x19')]();};}function respondWithResult(_0x56fbf0,_0x495a80){_0x495a80=_0x495a80||0xc8;return function(_0x219c66){if(_0x219c66){return _0x56fbf0[_0xca54('0x18')](_0x495a80)[_0xca54('0x1a')](_0x219c66);}};}function respondWithFilteredResult(_0x2502a8,_0x596110){return function(_0x2964cb){if(_0x2964cb){var _0x3c4987=typeof _0x596110[_0xca54('0x1b')]==='undefined'&&typeof _0x596110[_0xca54('0x1c')]===_0xca54('0x1d');var _0xb0b4c=_0x2964cb['count'];var _0x8fbea4=_0x3c4987?0x0:_0x596110[_0xca54('0x1b')];var _0x4bf545=_0x3c4987?_0x2964cb[_0xca54('0x1e')]:_0x596110[_0xca54('0x1b')]+_0x596110[_0xca54('0x1c')];var _0x452542;if(_0x4bf545>=_0xb0b4c){_0x4bf545=_0xb0b4c;_0x452542=0xc8;}else{_0x452542=0xce;}_0x2502a8[_0xca54('0x18')](_0x452542);return _0x2502a8[_0xca54('0x1f')]('Content-Range',_0x8fbea4+'-'+_0x4bf545+'/'+_0xb0b4c)['json'](_0x2964cb);}return null;};}function patchUpdates(_0x1e2d5a){return function(_0x523389){try{jsonpatch[_0xca54('0x20')](_0x523389,_0x1e2d5a,!![]);}catch(_0x3842cd){return BPromise['reject'](_0x3842cd);}return _0x523389['save']();};}function saveUpdates(_0x38720b,_0x4ed412){return function(_0x28564f){if(_0x28564f){return _0x28564f[_0xca54('0x21')](_0x38720b)['then'](function(_0x5cc8f6){return _0x5cc8f6;});}return null;};}function removeEntity(_0x570661,_0x845187){return function(_0x5e7762){if(_0x5e7762){return _0x5e7762['destroy']()[_0xca54('0x22')](function(){_0x570661[_0xca54('0x18')](0xcc)[_0xca54('0x19')]();});}};}function handleEntityNotFound(_0xd5a985,_0x24a55c){return function(_0x4dba58){if(!_0x4dba58){_0xd5a985[_0xca54('0x23')](0x194);}return _0x4dba58;};}function handleError(_0x11ebd6,_0x38c0dd){_0x38c0dd=_0x38c0dd||0x1f4;return function(_0x5c6bb0){logger[_0xca54('0x24')](_0x5c6bb0[_0xca54('0x25')]);if(_0x5c6bb0[_0xca54('0x26')]){delete _0x5c6bb0[_0xca54('0x26')];}_0x11ebd6[_0xca54('0x18')](_0x38c0dd)['send'](_0x5c6bb0);};}exports['index']=function(_0x49efd9,_0x17a3f5){var _0x5a2ae3={},_0x2f38cd={},_0x13c1fc={'count':0x0,'rows':[]};var _0x400b75=_[_0xca54('0x27')](db[_0xca54('0x28')]['rawAttributes'],function(_0x257481){return{'name':_0x257481[_0xca54('0x29')],'type':_0x257481[_0xca54('0x2a')][_0xca54('0x2b')]};});_0x2f38cd[_0xca54('0x2c')]=_[_0xca54('0x27')](_0x400b75,_0xca54('0x26'));_0x2f38cd[_0xca54('0x2d')]=_[_0xca54('0x2e')](_0x49efd9[_0xca54('0x2d')]);_0x2f38cd[_0xca54('0x2f')]=_[_0xca54('0x30')](_0x2f38cd[_0xca54('0x2c')],_0x2f38cd['query']);_0x5a2ae3[_0xca54('0x31')]=_['intersection'](_0x2f38cd[_0xca54('0x2c')],qs['fields'](_0x49efd9[_0xca54('0x2d')][_0xca54('0x32')]));_0x5a2ae3[_0xca54('0x31')]=_0x5a2ae3['attributes'][_0xca54('0x33')]?_0x5a2ae3['attributes']:_0x2f38cd[_0xca54('0x2c')];if(!_0x49efd9[_0xca54('0x2d')][_0xca54('0x34')]('nolimit')){_0x5a2ae3[_0xca54('0x1c')]=qs[_0xca54('0x1c')](_0x49efd9[_0xca54('0x2d')][_0xca54('0x1c')]);_0x5a2ae3['offset']=qs[_0xca54('0x1b')](_0x49efd9[_0xca54('0x2d')]['offset']);}_0x5a2ae3[_0xca54('0x35')]=qs[_0xca54('0x36')](_0x49efd9[_0xca54('0x2d')][_0xca54('0x36')]);_0x5a2ae3[_0xca54('0x37')]=qs[_0xca54('0x2f')](_['pick'](_0x49efd9['query'],_0x2f38cd[_0xca54('0x2f')]),_0x400b75);if(_0x49efd9[_0xca54('0x2d')][_0xca54('0x38')]){_0x5a2ae3[_0xca54('0x37')]=_[_0xca54('0x39')](_0x5a2ae3[_0xca54('0x37')],{'$or':_[_0xca54('0x27')](_0x400b75,function(_0x4ed11f){if(_0x4ed11f[_0xca54('0x2a')]!==_0xca54('0x3a')){var _0x146f1d={};_0x146f1d[_0x4ed11f['name']]={'$like':'%'+_0x49efd9['query'][_0xca54('0x38')]+'%'};return _0x146f1d;}})});}_0x5a2ae3=_[_0xca54('0x39')]({},_0x5a2ae3,_0x49efd9[_0xca54('0x3b')]);var _0x26d642={'where':_0x5a2ae3[_0xca54('0x37')]};return db[_0xca54('0x28')][_0xca54('0x1e')](_0x26d642)['then'](function(_0x3327e7){_0x13c1fc[_0xca54('0x1e')]=_0x3327e7;if(_0x49efd9[_0xca54('0x2d')][_0xca54('0x3c')]){_0x5a2ae3[_0xca54('0x3d')]=[{'all':!![]}];}return db[_0xca54('0x28')][_0xca54('0x3e')](_0x5a2ae3);})[_0xca54('0x22')](function(_0xe32413){_0x13c1fc[_0xca54('0x3f')]=_0xe32413;return _0x13c1fc;})[_0xca54('0x22')](respondWithFilteredResult(_0x17a3f5,_0x5a2ae3))[_0xca54('0x40')](handleError(_0x17a3f5,null));};exports[_0xca54('0x41')]=function(_0x572b1a,_0x4fab32){var _0x5258a1={'raw':![],'where':{'id':_0x572b1a['params']['id']}},_0x4e5a24={};_0x4e5a24[_0xca54('0x2c')]=_['keys'](db['UserProfileSection'][_0xca54('0x42')]);_0x4e5a24[_0xca54('0x2d')]=_['keys'](_0x572b1a[_0xca54('0x2d')]);_0x4e5a24[_0xca54('0x2f')]=_['intersection'](_0x4e5a24[_0xca54('0x2c')],_0x4e5a24[_0xca54('0x2d')]);_0x5258a1['attributes']=_[_0xca54('0x30')](_0x4e5a24['model'],qs[_0xca54('0x32')](_0x572b1a[_0xca54('0x2d')]['fields']));_0x5258a1['attributes']=_0x5258a1[_0xca54('0x31')][_0xca54('0x33')]?_0x5258a1[_0xca54('0x31')]:_0x4e5a24[_0xca54('0x2c')];if(_0x572b1a[_0xca54('0x2d')][_0xca54('0x3c')]){_0x5258a1[_0xca54('0x3d')]=[{'all':!![]}];}_0x5258a1=_[_0xca54('0x39')]({},_0x5258a1,_0x572b1a[_0xca54('0x3b')]);return db[_0xca54('0x28')][_0xca54('0x43')](_0x5258a1)[_0xca54('0x22')](handleEntityNotFound(_0x4fab32,null))[_0xca54('0x22')](respondWithResult(_0x4fab32,null))[_0xca54('0x40')](handleError(_0x4fab32,null));};exports[_0xca54('0x44')]=function(_0x10d695,_0x108214){return db['UserProfileSection']['create'](_0x10d695['body'],{})['then'](respondWithResult(_0x108214,0xc9))['catch'](handleError(_0x108214,null));};exports[_0xca54('0x21')]=function(_0x33f038,_0x549a32){if(_0x33f038[_0xca54('0x45')]['id']){delete _0x33f038[_0xca54('0x45')]['id'];}return db[_0xca54('0x28')]['find']({'where':{'id':_0x33f038[_0xca54('0x46')]['id']}})[_0xca54('0x22')](handleEntityNotFound(_0x549a32,null))['then'](saveUpdates(_0x33f038[_0xca54('0x45')],null))['then'](respondWithResult(_0x549a32,null))[_0xca54('0x40')](handleError(_0x549a32,null));};exports[_0xca54('0x47')]=function(_0x9217c4,_0x3c6255){return db[_0xca54('0x28')][_0xca54('0x43')]({'where':{'id':_0x9217c4[_0xca54('0x46')]['id']}})[_0xca54('0x22')](handleEntityNotFound(_0x3c6255,null))['then'](removeEntity(_0x3c6255,null))['catch'](handleError(_0x3c6255,null));};exports[_0xca54('0x48')]=function(_0x117bdd,_0x214abb){return db[_0xca54('0x28')][_0xca54('0x48')]()[_0xca54('0x22')](respondWithResult(_0x214abb,null))[_0xca54('0x40')](handleError(_0x214abb,null));};
\ No newline at end of file
index 8910979..ca769f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd294=['sectionId','userProfileId','util','moment','bluebird','path','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex'];(function(_0x5482f4,_0x150cac){var _0x42d1ec=function(_0x2d3af5){while(--_0x2d3af5){_0x5482f4['push'](_0x5482f4['shift']());}};_0x42d1ec(++_0x150cac);}(_0xd294,0xaa));var _0x4d29=function(_0x36d219,_0x4c120e){_0x36d219=_0x36d219-0x0;var _0x3dcd8f=_0xd294[_0x36d219];return _0x3dcd8f;};'use strict';var _=require('lodash');var util=require(_0x4d29('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x4d29('0x1'));var BPromise=require(_0x4d29('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d29('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4d29('0x4'));module[_0x4d29('0x5')]=function(_0x4a12c5,_0x2e42ca){return _0x4a12c5[_0x4d29('0x6')](_0x4d29('0x7'),attributes,{'tableName':_0x4d29('0x8'),'paranoid':![],'indexes':[{'name':_0x4d29('0x9'),'fields':[_0x4d29('0xa'),_0x4d29('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xee83=['lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','compositeIndex','userProfileId'];(function(_0x4517b5,_0x5b4f13){var _0x11a4c7=function(_0x120b66){while(--_0x120b66){_0x4517b5['push'](_0x4517b5['shift']());}};_0x11a4c7(++_0x5b4f13);}(_0xee83,0x1a0));var _0x3ee8=function(_0x450d39,_0x58c4ad){_0x450d39=_0x450d39-0x0;var _0x2db190=_0xee83[_0x450d39];return _0x2db190;};'use strict';var _=require(_0x3ee8('0x0'));var util=require(_0x3ee8('0x1'));var logger=require(_0x3ee8('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3ee8('0x3'));var rp=require(_0x3ee8('0x4'));var fs=require('fs');var path=require(_0x3ee8('0x5'));var rimraf=require(_0x3ee8('0x6'));var config=require('../../config/environment');var attributes=require(_0x3ee8('0x7'));module[_0x3ee8('0x8')]=function(_0x1525ae,_0x402630){return _0x1525ae['define'](_0x3ee8('0x9'),attributes,{'tableName':_0x3ee8('0xa'),'paranoid':![],'indexes':[{'name':_0x3ee8('0xb'),'fields':['sectionId',_0x3ee8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 7628e12..ca7f930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ed=['message','util','moment','bluebird','randomstring','../../config/logger','../../config/environment','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x467fbb,_0x432efd){var _0x3cf5e8=function(_0xc893ec){while(--_0xc893ec){_0x467fbb['push'](_0x467fbb['shift']());}};_0x3cf5e8(++_0x432efd);}(_0x91ed,0xb5));var _0xd91e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x91ed[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var util=require(_0xd91e('0x0'));var moment=require(_0xd91e('0x1'));var BPromise=require(_0xd91e('0x2'));var rs=require(_0xd91e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd91e('0x4'))('rpc');var config=require(_0xd91e('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xd91e('0x6')][_0xd91e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4f91a3,_0x295cc6,_0x34ac4c){return new BPromise(function(_0x23918d,_0x25a422){return client[_0xd91e('0x8')](_0x4f91a3,_0x34ac4c)[_0xd91e('0x9')](function(_0x1e64ce){logger[_0xd91e('0xa')](_0xd91e('0xb'),_0x295cc6,_0xd91e('0xc'));logger['debug'](_0xd91e('0xd'),_0x295cc6,_0xd91e('0xc'),JSON[_0xd91e('0xe')](_0x1e64ce));if(_0x1e64ce[_0xd91e('0xf')]){if(_0x1e64ce[_0xd91e('0xf')][_0xd91e('0x10')]===0x1f4){logger[_0xd91e('0xf')](_0xd91e('0xb'),_0x295cc6,_0x1e64ce['error']['message']);return _0x25a422(_0x1e64ce['error'][_0xd91e('0x11')]);}logger[_0xd91e('0xf')](_0xd91e('0xb'),_0x295cc6,_0x1e64ce[_0xd91e('0xf')][_0xd91e('0x11')]);return _0x23918d(_0x1e64ce[_0xd91e('0xf')][_0xd91e('0x11')]);}else{logger['info'](_0xd91e('0xb'),_0x295cc6,_0xd91e('0xc'));_0x23918d(_0x1e64ce['result'][_0xd91e('0x11')]);}})['catch'](function(_0xf204b){logger[_0xd91e('0xf')](_0xd91e('0xb'),_0x295cc6,_0xf204b);_0x25a422(_0xf204b);});});}
\ No newline at end of file
+var _0xc1e6=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','lodash','randomstring'];(function(_0x4d452d,_0x304a04){var _0x545e39=function(_0x5e9af4){while(--_0x5e9af4){_0x4d452d['push'](_0x4d452d['shift']());}};_0x545e39(++_0x304a04);}(_0xc1e6,0x12a));var _0x6c1e=function(_0x138508,_0x1937a7){_0x138508=_0x138508-0x0;var _0x2cb00b=_0xc1e6[_0x138508];return _0x2cb00b;};'use strict';var _=require(_0x6c1e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6c1e('0x1'));var fs=require('fs');var Redis=require(_0x6c1e('0x2'));var db=require(_0x6c1e('0x3'))['db'];var utils=require(_0x6c1e('0x4'));var logger=require(_0x6c1e('0x5'))(_0x6c1e('0x6'));var config=require(_0x6c1e('0x7'));var jayson=require(_0x6c1e('0x8'));var client=jayson['client'][_0x6c1e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1dea63,_0x215dbe,_0x12b6e3){return new BPromise(function(_0x1d1328,_0x42f425){return client[_0x6c1e('0xa')](_0x1dea63,_0x12b6e3)[_0x6c1e('0xb')](function(_0x84bdc2){logger[_0x6c1e('0xc')]('UserProfileSection,\x20%s,\x20%s',_0x215dbe,'request\x20sent');logger['debug'](_0x6c1e('0xd'),_0x215dbe,_0x6c1e('0xe'),JSON[_0x6c1e('0xf')](_0x84bdc2));if(_0x84bdc2[_0x6c1e('0x10')]){if(_0x84bdc2[_0x6c1e('0x10')][_0x6c1e('0x11')]===0x1f4){logger['error'](_0x6c1e('0x12'),_0x215dbe,_0x84bdc2['error'][_0x6c1e('0x13')]);return _0x42f425(_0x84bdc2[_0x6c1e('0x10')][_0x6c1e('0x13')]);}logger[_0x6c1e('0x10')](_0x6c1e('0x12'),_0x215dbe,_0x84bdc2[_0x6c1e('0x10')][_0x6c1e('0x13')]);return _0x1d1328(_0x84bdc2[_0x6c1e('0x10')][_0x6c1e('0x13')]);}else{logger[_0x6c1e('0xc')](_0x6c1e('0x12'),_0x215dbe,'request\x20sent');_0x1d1328(_0x84bdc2['result'][_0x6c1e('0x13')]);}})['catch'](function(_0x104149){logger['error'](_0x6c1e('0x12'),_0x215dbe,_0x104149);_0x42f425(_0x104149);});});}
\ No newline at end of file
index d95c58c..f3cbf07 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(_0x3627bd,_0x1a403c){var _0xcf6d89=function(_0x433b8c){while(--_0x433b8c){_0x3627bd['push'](_0x3627bd['shift']());}};_0xcf6d89(++_0x1a403c);}(_0xe706,0xa3));var _0x6e70=function(_0x3154a3,_0x45d16d){_0x3154a3=_0x3154a3-0x0;var _0x553af5=_0xe706[_0x3154a3];return _0x553af5;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0xc5a490,_0x217ba9){var _0x20e3e5=function(_0x2cb605){while(--_0x2cb605){_0xc5a490['push'](_0xc5a490['shift']());}};_0x20e3e5(++_0x217ba9);}(_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 668813e..cfa1edd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8769=['sequelize','exports','INTEGER'];(function(_0x170772,_0x1f1ee7){var _0x3ef69c=function(_0x4cde12){while(--_0x4cde12){_0x170772['push'](_0x170772['shift']());}};_0x3ef69c(++_0x1f1ee7);}(_0x8769,0x189));var _0x9876=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x8769[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require(_0x9876('0x0'));module[_0x9876('0x1')]={'penalty':{'type':Sequelize[_0x9876('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x80c9=['sequelize','exports','INTEGER'];(function(_0x238b8f,_0x8337f2){var _0x33eb9f=function(_0x1b0886){while(--_0x1b0886){_0x238b8f['push'](_0x238b8f['shift']());}};_0x33eb9f(++_0x8337f2);}(_0x80c9,0xba));var _0x980c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x80c9[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x980c('0x0'));module[_0x980c('0x1')]={'penalty':{'type':Sequelize[_0x980c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index f3ae91a..1fbdad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['user_has_sms_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue'];(function(_0xb4dec4,_0x541399){var _0x3ce587=function(_0x3eb32e){while(--_0x3eb32e){_0xb4dec4['push'](_0xb4dec4['shift']());}};_0x3ce587(++_0x541399);}(_0x326f,0xd1));var _0xf326=function(_0x41f07a,_0x479e16){_0x41f07a=_0x41f07a-0x0;var _0x28d988=_0x326f[_0x41f07a];return _0x28d988;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x77a9=['../../config/environment','./userSmsQueue.attributes','exports','user_has_sms_queues','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x419b11,_0xfd0ea5){var _0x3bb12c=function(_0x48500e){while(--_0x48500e){_0x419b11['push'](_0x419b11['shift']());}};_0x3bb12c(++_0xfd0ea5);}(_0x77a9,0x19e));var _0x977a=function(_0x4d1f10,_0x585dfb){_0x4d1f10=_0x4d1f10-0x0;var _0x358d24=_0x77a9[_0x4d1f10];return _0x358d24;};'use strict';var _=require(_0x977a('0x0'));var util=require('util');var logger=require(_0x977a('0x1'))('api');var moment=require(_0x977a('0x2'));var BPromise=require(_0x977a('0x3'));var rp=require(_0x977a('0x4'));var fs=require('fs');var path=require(_0x977a('0x5'));var rimraf=require('rimraf');var config=require(_0x977a('0x6'));var attributes=require(_0x977a('0x7'));module[_0x977a('0x8')]=function(_0x2b4ba5,_0x261e46){return _0x2b4ba5['define']('UserSmsQueue',attributes,{'tableName':_0x977a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c9d7749..4da4205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20b=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util'];(function(_0x312c74,_0x31451e){var _0x57d58c=function(_0xdc6114){while(--_0xdc6114){_0x312c74['push'](_0x312c74['shift']());}};_0x57d58c(++_0x31451e);}(_0xa20b,0xbe));var _0xba20=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa20b[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xba20('0x0'));var util=require(_0xba20('0x1'));var moment=require(_0xba20('0x2'));var BPromise=require(_0xba20('0x3'));var rs=require(_0xba20('0x4'));var fs=require('fs');var Redis=require(_0xba20('0x5'));var db=require(_0xba20('0x6'))['db'];var utils=require(_0xba20('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xba20('0x8'));var jayson=require(_0xba20('0x9'));var client=jayson[_0xba20('0xa')][_0xba20('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15d2b9,_0x7e308a,_0x21506b){return new BPromise(function(_0x4b7699,_0x3a320e){return client[_0xba20('0xc')](_0x15d2b9,_0x21506b)[_0xba20('0xd')](function(_0x5ed328){logger[_0xba20('0xe')](_0xba20('0xf'),_0x7e308a,_0xba20('0x10'));logger[_0xba20('0x11')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x7e308a,'request\x20sent',JSON[_0xba20('0x12')](_0x5ed328));if(_0x5ed328['error']){if(_0x5ed328[_0xba20('0x13')][_0xba20('0x14')]===0x1f4){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x7e308a,_0x5ed328[_0xba20('0x13')][_0xba20('0x15')]);return _0x3a320e(_0x5ed328[_0xba20('0x13')][_0xba20('0x15')]);}logger[_0xba20('0x13')](_0xba20('0xf'),_0x7e308a,_0x5ed328['error'][_0xba20('0x15')]);return _0x4b7699(_0x5ed328[_0xba20('0x13')][_0xba20('0x15')]);}else{logger[_0xba20('0xe')]('UserSmsQueue,\x20%s,\x20%s',_0x7e308a,'request\x20sent');_0x4b7699(_0x5ed328[_0xba20('0x16')][_0xba20('0x15')]);}})[_0xba20('0x17')](function(_0x5ca9a0){logger[_0xba20('0x13')](_0xba20('0xf'),_0x7e308a,_0x5ca9a0);_0x3a320e(_0x5ca9a0);});});}
\ No newline at end of file
+var _0xb2c4=['rpc','../../config/environment','jayson/promise','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_0xb2c4,0x8c));var _0x4b2c=function(_0x4ca333,_0x1218a3){_0x4ca333=_0x4ca333-0x0;var _0x13b2e1=_0xb2c4[_0x4ca333];return _0x13b2e1;};'use strict';var _=require(_0x4b2c('0x0'));var util=require(_0x4b2c('0x1'));var moment=require(_0x4b2c('0x2'));var BPromise=require(_0x4b2c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4b2c('0x4'));var db=require(_0x4b2c('0x5'))['db'];var utils=require(_0x4b2c('0x6'));var logger=require('../../config/logger')(_0x4b2c('0x7'));var config=require(_0x4b2c('0x8'));var jayson=require(_0x4b2c('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2fee6f,_0x258c38,_0x49e4e1){return new BPromise(function(_0x1c1e4d,_0xbf7f9a){return client[_0x4b2c('0xa')](_0x2fee6f,_0x49e4e1)[_0x4b2c('0xb')](function(_0x285424){logger[_0x4b2c('0xc')](_0x4b2c('0xd'),_0x258c38,_0x4b2c('0xe'));logger[_0x4b2c('0xf')](_0x4b2c('0x10'),_0x258c38,'request\x20sent',JSON['stringify'](_0x285424));if(_0x285424[_0x4b2c('0x11')]){if(_0x285424[_0x4b2c('0x11')]['code']===0x1f4){logger[_0x4b2c('0x11')](_0x4b2c('0xd'),_0x258c38,_0x285424[_0x4b2c('0x11')][_0x4b2c('0x12')]);return _0xbf7f9a(_0x285424[_0x4b2c('0x11')]['message']);}logger[_0x4b2c('0x11')](_0x4b2c('0xd'),_0x258c38,_0x285424[_0x4b2c('0x11')]['message']);return _0x1c1e4d(_0x285424['error'][_0x4b2c('0x12')]);}else{logger['info'](_0x4b2c('0xd'),_0x258c38,'request\x20sent');_0x1c1e4d(_0x285424[_0x4b2c('0x13')][_0x4b2c('0x12')]);}})[_0x4b2c('0x14')](function(_0x3348b5){logger[_0x4b2c('0x11')](_0x4b2c('0xd'),_0x258c38,_0x3348b5);_0xbf7f9a(_0x3348b5);});});}
\ No newline at end of file
index d389ee3..23c1f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda20=['INTEGER','sequelize','exports'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xda20,0x1a8));var _0x0da2=function(_0x2bd554,_0x54ff0d){_0x2bd554=_0x2bd554-0x0;var _0x919983=_0xda20[_0x2bd554];return _0x919983;};'use strict';var Sequelize=require(_0x0da2('0x0'));module[_0x0da2('0x1')]={'UserId':{'type':Sequelize[_0x0da2('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x0da2('0x2')]}};
\ No newline at end of file
+var _0x5da1=['INTEGER','sequelize','exports'];(function(_0x2f3794,_0x3c3bec){var _0x1c9fbe=function(_0x2d2eac){while(--_0x2d2eac){_0x2f3794['push'](_0x2f3794['shift']());}};_0x1c9fbe(++_0x3c3bec);}(_0x5da1,0x16c));var _0x15da=function(_0x342fca,_0x15ded4){_0x342fca=_0x342fca-0x0;var _0xf05d09=_0x5da1[_0x342fca];return _0xf05d09;};'use strict';var Sequelize=require(_0x15da('0x0'));module[_0x15da('0x1')]={'UserId':{'type':Sequelize[_0x15da('0x2')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 510ed5f..aebf4c3 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(_0x3d7877,_0x23e34d){var _0x4eda1e=function(_0x585088){while(--_0x585088){_0x3d7877['push'](_0x3d7877['shift']());}};_0x4eda1e(++_0x23e34d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));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(_0x31da13,_0x18d811){var _0x5b9f7a=function(_0x5260ed){while(--_0x5260ed){_0x31da13['push'](_0x31da13['shift']());}};_0x5b9f7a(++_0x18d811);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'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 a25fe58..a29bc22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x287848,_0x31c120){var _0x162322=function(_0x25b071){while(--_0x25b071){_0x287848['push'](_0x287848['shift']());}};_0x162322(++_0x31c120);}(_0x70e0,0x17b));var _0x070e=function(_0x38819c,_0x37e284){_0x38819c=_0x38819c-0x0;var _0x11220d=_0x70e0[_0x38819c];return _0x11220d;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5e82ae,_0x1bf62f){var _0x2e3d18=function(_0x42dc5b){while(--_0x42dc5b){_0x5e82ae['push'](_0x5e82ae['shift']());}};_0x2e3d18(++_0x1bf62f);}(_0x9c44,0x178));var _0x49c4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9c44[_0x4b369d];return _0x571a98;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 65183aa..74deeda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x215d=['INTEGER'];(function(_0x17a32f,_0x5a51a){var _0x15a293=function(_0x55fbd3){while(--_0x55fbd3){_0x17a32f['push'](_0x17a32f['shift']());}};_0x15a293(++_0x5a51a);}(_0x215d,0xdb));var _0xd215=function(_0x5d94af,_0x4e396b){_0x5d94af=_0x5d94af-0x0;var _0x56aee0=_0x215d[_0x5d94af];return _0x56aee0;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xd215('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1b3d=['INTEGER','sequelize'];(function(_0x512453,_0x4fd6d4){var _0x55060e=function(_0xa08e5a){while(--_0xa08e5a){_0x512453['push'](_0x512453['shift']());}};_0x55060e(++_0x4fd6d4);}(_0x1b3d,0xc5));var _0xd1b3=function(_0x155d98,_0x44c55f){_0x155d98=_0x155d98-0x0;var _0xde00e5=_0x1b3d[_0x155d98];return _0xde00e5;};'use strict';var Sequelize=require(_0xd1b3('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xd1b3('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 1306073..43b778b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f1c=['path','rimraf','./userVoiceQueue.attributes','define','UserVoiceQueue','user_has_voice_queues','util','../../config/logger','api','moment','bluebird'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x2f1c,0x1df));var _0xc2f1=function(_0x597bf3,_0x3a2bd8){_0x597bf3=_0x597bf3-0x0;var _0x4db0db=_0x2f1c[_0x597bf3];return _0x4db0db;};'use strict';var _=require('lodash');var util=require(_0xc2f1('0x0'));var logger=require(_0xc2f1('0x1'))(_0xc2f1('0x2'));var moment=require(_0xc2f1('0x3'));var BPromise=require(_0xc2f1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc2f1('0x5'));var rimraf=require(_0xc2f1('0x6'));var config=require('../../config/environment');var attributes=require(_0xc2f1('0x7'));module['exports']=function(_0x172e9f,_0x4fc41a){return _0x172e9f[_0xc2f1('0x8')](_0xc2f1('0x9'),attributes,{'tableName':_0xc2f1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa4f9=['UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./userVoiceQueue.attributes','define'];(function(_0x254d5a,_0x26adf6){var _0x1c9291=function(_0x6853e4){while(--_0x6853e4){_0x254d5a['push'](_0x254d5a['shift']());}};_0x1c9291(++_0x26adf6);}(_0xa4f9,0xc2));var _0x9a4f=function(_0x278296,_0x2cd37d){_0x278296=_0x278296-0x0;var _0x5c7283=_0xa4f9[_0x278296];return _0x5c7283;};'use strict';var _=require(_0x9a4f('0x0'));var util=require(_0x9a4f('0x1'));var logger=require(_0x9a4f('0x2'))(_0x9a4f('0x3'));var moment=require(_0x9a4f('0x4'));var BPromise=require('bluebird');var rp=require(_0x9a4f('0x5'));var fs=require('fs');var path=require(_0x9a4f('0x6'));var rimraf=require('rimraf');var config=require(_0x9a4f('0x7'));var attributes=require(_0x9a4f('0x8'));module['exports']=function(_0x180c10,_0x41044d){return _0x180c10[_0x9a4f('0x9')](_0x9a4f('0xa'),attributes,{'tableName':_0x9a4f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5e2e03..1619ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a4a=['rpc','jayson/promise','client','http','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','message','info','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x11cbc8,_0x2ee4c1){var _0x495955=function(_0x29fa53){while(--_0x29fa53){_0x11cbc8['push'](_0x11cbc8['shift']());}};_0x495955(++_0x2ee4c1);}(_0x4a4a,0x12c));var _0xa4a4=function(_0x21f966,_0x532a43){_0x21f966=_0x21f966-0x0;var _0x108658=_0x4a4a[_0x21f966];return _0x108658;};'use strict';var _=require('lodash');var util=require(_0xa4a4('0x0'));var moment=require(_0xa4a4('0x1'));var BPromise=require(_0xa4a4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa4a4('0x3'))['db'];var utils=require(_0xa4a4('0x4'));var logger=require(_0xa4a4('0x5'))(_0xa4a4('0x6'));var config=require('../../config/environment');var jayson=require(_0xa4a4('0x7'));var client=jayson[_0xa4a4('0x8')][_0xa4a4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50bb84,_0x4c6d3d,_0xc6e0b9){return new BPromise(function(_0x1c6933,_0x210386){return client['request'](_0x50bb84,_0xc6e0b9)['then'](function(_0x5c7f03){logger['info'](_0xa4a4('0xa'),_0x4c6d3d,_0xa4a4('0xb'));logger[_0xa4a4('0xc')](_0xa4a4('0xd'),_0x4c6d3d,'request\x20sent',JSON['stringify'](_0x5c7f03));if(_0x5c7f03['error']){if(_0x5c7f03['error']['code']===0x1f4){logger[_0xa4a4('0xe')](_0xa4a4('0xa'),_0x4c6d3d,_0x5c7f03[_0xa4a4('0xe')][_0xa4a4('0xf')]);return _0x210386(_0x5c7f03[_0xa4a4('0xe')][_0xa4a4('0xf')]);}logger[_0xa4a4('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x4c6d3d,_0x5c7f03['error']['message']);return _0x1c6933(_0x5c7f03['error'][_0xa4a4('0xf')]);}else{logger[_0xa4a4('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x4c6d3d,_0xa4a4('0xb'));_0x1c6933(_0x5c7f03['result'][_0xa4a4('0xf')]);}})['catch'](function(_0x5ac5f6){logger[_0xa4a4('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x4c6d3d,_0x5ac5f6);_0x210386(_0x5ac5f6);});});}
\ No newline at end of file
+var _0x62dd=['result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserVoiceQueue,\x20%s,\x20%s','message'];(function(_0x474363,_0x359b4b){var _0x5ced04=function(_0x242fea){while(--_0x242fea){_0x474363['push'](_0x474363['shift']());}};_0x5ced04(++_0x359b4b);}(_0x62dd,0x10c));var _0xd62d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x62dd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xd62d('0x0'));var moment=require(_0xd62d('0x1'));var BPromise=require(_0xd62d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd62d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd62d('0x4'));var logger=require(_0xd62d('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd62d('0x6'));var client=jayson['client'][_0xd62d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x266971,_0x1a6268,_0x30909){return new BPromise(function(_0x509ae1,_0xccbb17){return client[_0xd62d('0x8')](_0x266971,_0x30909)[_0xd62d('0x9')](function(_0x338482){logger[_0xd62d('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x1a6268,_0xd62d('0xb'));logger['debug'](_0xd62d('0xc'),_0x1a6268,'request\x20sent',JSON[_0xd62d('0xd')](_0x338482));if(_0x338482[_0xd62d('0xe')]){if(_0x338482[_0xd62d('0xe')]['code']===0x1f4){logger[_0xd62d('0xe')](_0xd62d('0xf'),_0x1a6268,_0x338482[_0xd62d('0xe')][_0xd62d('0x10')]);return _0xccbb17(_0x338482['error'][_0xd62d('0x10')]);}logger[_0xd62d('0xe')](_0xd62d('0xf'),_0x1a6268,_0x338482['error'][_0xd62d('0x10')]);return _0x509ae1(_0x338482['error'][_0xd62d('0x10')]);}else{logger['info'](_0xd62d('0xf'),_0x1a6268,_0xd62d('0xb'));_0x509ae1(_0x338482[_0xd62d('0x11')][_0xd62d('0x10')]);}})[_0xd62d('0x12')](function(_0x2481c9){logger['error'](_0xd62d('0xf'),_0x1a6268,_0x2481c9);_0xccbb17(_0x2481c9);});});}
\ No newline at end of file
index 72e45f8..ebb0f64 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(_0x3dcab,_0x58860f){var _0x517c6a=function(_0x1bcf1f){while(--_0x1bcf1f){_0x3dcab['push'](_0x3dcab['shift']());}};_0x517c6a(++_0x58860f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2c0bde,_0x5dc19e){var _0x26d1d0=function(_0x576c9d){while(--_0x576c9d){_0x2c0bde['push'](_0x2c0bde['shift']());}};_0x26d1d0(++_0x5dc19e);}(_0x70e0,0x17b));var _0x070e=function(_0x1de9f,_0x273355){_0x1de9f=_0x1de9f-0x0;var _0x14e881=_0x70e0[_0x1de9f];return _0x14e881;};'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 795fa42..8866a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a5=['STRING','Required\x20by\x20Asterisk','INTEGER','queue_interface','sequelize'];(function(_0x3bef27,_0x536377){var _0x21bb10=function(_0x436651){while(--_0x436651){_0x3bef27['push'](_0x3bef27['shift']());}};_0x21bb10(++_0x536377);}(_0x00a5,0x19e));var _0x500a=function(_0x53a13d,_0x38f862){_0x53a13d=_0x53a13d-0x0;var _0x16a041=_0x00a5[_0x53a13d];return _0x16a041;};'use strict';var Sequelize=require(_0x500a('0x0'));module['exports']={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x500a('0x1')],'allowNull':![],'comment':_0x500a('0x2')},'UserId':{'type':Sequelize[_0x500a('0x3')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x500a('0x4'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0x500a('0x3')],'allowNull':![]},'interface':{'type':Sequelize[_0x500a('0x1')],'allowNull':![],'unique':_0x500a('0x4'),'comment':_0x500a('0x2')},'penalty':{'type':Sequelize[_0x500a('0x3')](0xb),'defaultValue':0x0,'comment':_0x500a('0x2')},'paused':{'type':Sequelize[_0x500a('0x3')](0xb),'defaultValue':0x0,'comment':_0x500a('0x2')}};
\ No newline at end of file
+var _0x0d71=['INTEGER','exports','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x289e64,_0x5adb3c){var _0x30246c=function(_0x1bf7f6){while(--_0x1bf7f6){_0x289e64['push'](_0x289e64['shift']());}};_0x30246c(++_0x5adb3c);}(_0x0d71,0x74));var _0x10d7=function(_0x2c0750,_0x4288f4){_0x2c0750=_0x2c0750-0x0;var _0x173f0d=_0x0d71[_0x2c0750];return _0x173f0d;};'use strict';var Sequelize=require('sequelize');module[_0x10d7('0x0')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x10d7('0x1')},'membername':{'type':Sequelize[_0x10d7('0x2')],'allowNull':![],'comment':_0x10d7('0x1')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x10d7('0x2')],'allowNull':![],'unique':_0x10d7('0x3'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0x10d7('0x4')],'allowNull':![]},'interface':{'type':Sequelize[_0x10d7('0x2')],'allowNull':![],'unique':_0x10d7('0x3'),'comment':_0x10d7('0x1')},'penalty':{'type':Sequelize[_0x10d7('0x4')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x10d7('0x1')}};
\ No newline at end of file
index d0662bd..05946f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d6=['exports','events','../../mysqldb','UserVoiceQueueRt','remove','emit','hook'];(function(_0x416c58,_0x47c20a){var _0x327e7a=function(_0x3a786f){while(--_0x3a786f){_0x416c58['push'](_0x416c58['shift']());}};_0x327e7a(++_0x47c20a);}(_0x20d6,0xd3));var _0x620d=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x20d6[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require(_0x620d('0x0'));var UserVoiceQueueRt=require(_0x620d('0x1'))['db'][_0x620d('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x620d('0x3')};function emitEvent(_0x52beb1){return function(_0x492076,_0x9378bc,_0xba0f2b){UserVoiceQueueRtEvents['emit'](_0x52beb1+':'+_0x492076['id'],_0x492076);UserVoiceQueueRtEvents[_0x620d('0x4')](_0x52beb1,_0x492076);_0xba0f2b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x620d('0x5')](e,emitEvent(event));}}module[_0x620d('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x2bcf=['exports','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x358b62,_0x3adcf1){var _0x5525d3=function(_0x577028){while(--_0x577028){_0x358b62['push'](_0x358b62['shift']());}};_0x5525d3(++_0x3adcf1);}(_0x2bcf,0x1cd));var _0xf2bc=function(_0x4f219b,_0x841f7e){_0x4f219b=_0x4f219b-0x0;var _0x8a7718=_0x2bcf[_0x4f219b];return _0x8a7718;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xf2bc('0x0'))['db'][_0xf2bc('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xf2bc('0x2')](0x0);var events={'afterCreate':_0xf2bc('0x3'),'afterUpdate':_0xf2bc('0x4'),'afterDestroy':_0xf2bc('0x5')};function emitEvent(_0x1d8eb3){return function(_0x108a7b,_0x269ff4,_0x4318b3){UserVoiceQueueRtEvents[_0xf2bc('0x6')](_0x1d8eb3+':'+_0x108a7b['id'],_0x108a7b);UserVoiceQueueRtEvents[_0xf2bc('0x6')](_0x1d8eb3,_0x108a7b);_0x4318b3(null);};}for(var e in events){if(events[_0xf2bc('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0xf2bc('0x8')](e,emitEvent(event));}}module[_0xf2bc('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 653228c..85288c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb25=['../../config/logger','api','moment','request-promise','rimraf','./userVoiceQueueRt.attributes','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util'];(function(_0x5ee49a,_0x28f731){var _0x552f70=function(_0x1fc7b6){while(--_0x1fc7b6){_0x5ee49a['push'](_0x5ee49a['shift']());}};_0x552f70(++_0x28f731);}(_0xfb25,0x17f));var _0x5fb2=function(_0x2f8d96,_0x19521d){_0x2f8d96=_0x2f8d96-0x0;var _0x4cc41d=_0xfb25[_0x2f8d96];return _0x4cc41d;};'use strict';var _=require(_0x5fb2('0x0'));var util=require(_0x5fb2('0x1'));var logger=require(_0x5fb2('0x2'))(_0x5fb2('0x3'));var moment=require(_0x5fb2('0x4'));var BPromise=require('bluebird');var rp=require(_0x5fb2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5fb2('0x6'));var config=require('../../config/environment');var attributes=require(_0x5fb2('0x7'));module['exports']=function(_0x92e738,_0x3b71e5){return _0x92e738[_0x5fb2('0x8')](_0x5fb2('0x9'),attributes,{'tableName':_0x5fb2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6a2=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','UserVoiceQueueRt','user_has_voice_queues_rt','lodash'];(function(_0x36d374,_0x25194f){var _0x4c4cb9=function(_0x5f013a){while(--_0x5f013a){_0x36d374['push'](_0x36d374['shift']());}};_0x4c4cb9(++_0x25194f);}(_0xd6a2,0x12a));var _0x2d6a=function(_0x3777b8,_0x26abd2){_0x3777b8=_0x3777b8-0x0;var _0x14817b=_0xd6a2[_0x3777b8];return _0x14817b;};'use strict';var _=require(_0x2d6a('0x0'));var util=require(_0x2d6a('0x1'));var logger=require('../../config/logger')(_0x2d6a('0x2'));var moment=require(_0x2d6a('0x3'));var BPromise=require(_0x2d6a('0x4'));var rp=require(_0x2d6a('0x5'));var fs=require('fs');var path=require(_0x2d6a('0x6'));var rimraf=require(_0x2d6a('0x7'));var config=require(_0x2d6a('0x8'));var attributes=require(_0x2d6a('0x9'));module[_0x2d6a('0xa')]=function(_0x51e039,_0xcb89cc){return _0x51e039['define'](_0x2d6a('0xb'),attributes,{'tableName':_0x2d6a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4303a78..a7574f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x527c=['result','catch','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','info','GetVoiceQueueRtPauses','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0xd006b2,_0x300238){var _0xded2ef=function(_0x5e0156){while(--_0x5e0156){_0xd006b2['push'](_0xd006b2['shift']());}};_0xded2ef(++_0x300238);}(_0x527c,0x1bb));var _0xc527=function(_0x20c757,_0xf1f53b){_0x20c757=_0x20c757-0x0;var _0x2720f3=_0x527c[_0x20c757];return _0x2720f3;};'use strict';var _=require(_0xc527('0x0'));var util=require('util');var moment=require(_0xc527('0x1'));var BPromise=require(_0xc527('0x2'));var rs=require(_0xc527('0x3'));var fs=require('fs');var Redis=require(_0xc527('0x4'));var db=require(_0xc527('0x5'))['db'];var utils=require(_0xc527('0x6'));var logger=require(_0xc527('0x7'))(_0xc527('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc527('0x9')]({'port':0x232a});config[_0xc527('0xa')]=_['defaults'](config[_0xc527('0xa')],{'host':_0xc527('0xb'),'port':0x18eb});var socket=require(_0xc527('0xc'))(new Redis(config['redis']));require(_0xc527('0xd'))[_0xc527('0xe')](socket);function respondWithRpcPromise(_0x7c508e,_0x365df5,_0x95ecd0){return new BPromise(function(_0x335945,_0x1aa82a){return client[_0xc527('0xf')](_0x7c508e,_0x95ecd0)[_0xc527('0x10')](function(_0x1cc77b){logger['info'](_0xc527('0x11'),_0x365df5,_0xc527('0x12'));logger[_0xc527('0x13')](_0xc527('0x14'),_0x365df5,_0xc527('0x12'),JSON[_0xc527('0x15')](_0x1cc77b));if(_0x1cc77b['error']){if(_0x1cc77b[_0xc527('0x16')][_0xc527('0x17')]===0x1f4){logger[_0xc527('0x16')](_0xc527('0x11'),_0x365df5,_0x1cc77b[_0xc527('0x16')][_0xc527('0x18')]);return _0x1aa82a(_0x1cc77b[_0xc527('0x16')][_0xc527('0x18')]);}logger[_0xc527('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x365df5,_0x1cc77b[_0xc527('0x16')][_0xc527('0x18')]);return _0x335945(_0x1cc77b[_0xc527('0x16')][_0xc527('0x18')]);}else{logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x365df5,_0xc527('0x12'));_0x335945(_0x1cc77b[_0xc527('0x19')]['message']);}})[_0xc527('0x1a')](function(_0x48c83a){logger['error'](_0xc527('0x11'),_0x365df5,_0x48c83a);_0x1aa82a(_0x48c83a);});});}exports['GetVoiceQueueRtPauses']=function(_0x1fe67a){var _0x18ad6f=this;return new Promise(function(_0x5b39e3,_0x1b8bfc){return db[_0xc527('0x1b')][_0xc527('0x1c')]({'raw':_0x1fe67a['options']?_0x1fe67a[_0xc527('0x1d')][_0xc527('0x1e')]===undefined?!![]:![]:!![],'where':_0x1fe67a[_0xc527('0x1d')]?_0x1fe67a[_0xc527('0x1d')][_0xc527('0x1f')]||null:null,'attributes':[[db[_0xc527('0x20')]['fn'](_0xc527('0x21'),db[_0xc527('0x20')]['fn']('IF',db[_0xc527('0x20')][_0xc527('0x22')](_0xc527('0x23')))),_0xc527('0x24')]]})['then'](function(_0x912987){logger[_0xc527('0x25')](_0xc527('0x26'),_0x1fe67a);logger[_0xc527('0x13')]('GetVoiceQueueRtPauses',_0x1fe67a,JSON['stringify'](_0x912987));_0x5b39e3(_0x912987);})[_0xc527('0x1a')](function(_0x3fff17){logger[_0xc527('0x16')]('GetVoiceQueueRtPauses',_0x3fff17[_0xc527('0x18')],_0x1fe67a);_0x1b8bfc(_0x18ad6f[_0xc527('0x16')](0x1f4,_0x3fff17[_0xc527('0x18')]));});});};
\ No newline at end of file
+var _0xb3b5=['COUNT','sequelize','`paused`\x20=\x201,\x201,\x20null','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where'];(function(_0x5bad8f,_0x3a51ef){var _0x2f643a=function(_0x23e4ed){while(--_0x23e4ed){_0x5bad8f['push'](_0x5bad8f['shift']());}};_0x2f643a(++_0x3a51ef);}(_0xb3b5,0x13e));var _0x5b3b=function(_0x35387d,_0x1ba72f){_0x35387d=_0x35387d-0x0;var _0x3aba56=_0xb3b5[_0x35387d];return _0x3aba56;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5b3b('0x0'));var BPromise=require(_0x5b3b('0x1'));var rs=require(_0x5b3b('0x2'));var fs=require('fs');var Redis=require(_0x5b3b('0x3'));var db=require(_0x5b3b('0x4'))['db'];var utils=require(_0x5b3b('0x5'));var logger=require(_0x5b3b('0x6'))(_0x5b3b('0x7'));var config=require(_0x5b3b('0x8'));var jayson=require(_0x5b3b('0x9'));var client=jayson['client'][_0x5b3b('0xa')]({'port':0x232a});config['redis']=_[_0x5b3b('0xb')](config[_0x5b3b('0xc')],{'host':_0x5b3b('0xd'),'port':0x18eb});var socket=require(_0x5b3b('0xe'))(new Redis(config[_0x5b3b('0xc')]));require(_0x5b3b('0xf'))[_0x5b3b('0x10')](socket);function respondWithRpcPromise(_0x306038,_0x4ea4ae,_0x33c103){return new BPromise(function(_0x4c8070,_0x442fa9){return client[_0x5b3b('0x11')](_0x306038,_0x33c103)['then'](function(_0x25b0a7){logger[_0x5b3b('0x12')](_0x5b3b('0x13'),_0x4ea4ae,_0x5b3b('0x14'));logger[_0x5b3b('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x4ea4ae,_0x5b3b('0x14'),JSON[_0x5b3b('0x16')](_0x25b0a7));if(_0x25b0a7[_0x5b3b('0x17')]){if(_0x25b0a7[_0x5b3b('0x17')]['code']===0x1f4){logger[_0x5b3b('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x4ea4ae,_0x25b0a7[_0x5b3b('0x17')][_0x5b3b('0x18')]);return _0x442fa9(_0x25b0a7[_0x5b3b('0x17')]['message']);}logger[_0x5b3b('0x17')](_0x5b3b('0x13'),_0x4ea4ae,_0x25b0a7[_0x5b3b('0x17')]['message']);return _0x4c8070(_0x25b0a7[_0x5b3b('0x17')][_0x5b3b('0x18')]);}else{logger[_0x5b3b('0x12')](_0x5b3b('0x13'),_0x4ea4ae,_0x5b3b('0x14'));_0x4c8070(_0x25b0a7['result']['message']);}})[_0x5b3b('0x19')](function(_0x104da1){logger['error'](_0x5b3b('0x13'),_0x4ea4ae,_0x104da1);_0x442fa9(_0x104da1);});});}exports[_0x5b3b('0x1a')]=function(_0x2de15c){var _0x4f76fa=this;return new Promise(function(_0x501d9f,_0x4a3ad3){return db[_0x5b3b('0x1b')][_0x5b3b('0x1c')]({'raw':_0x2de15c['options']?_0x2de15c[_0x5b3b('0x1d')][_0x5b3b('0x1e')]===undefined?!![]:![]:!![],'where':_0x2de15c[_0x5b3b('0x1d')]?_0x2de15c[_0x5b3b('0x1d')][_0x5b3b('0x1f')]||null:null,'attributes':[[db['sequelize']['fn'](_0x5b3b('0x20'),db['sequelize']['fn']('IF',db[_0x5b3b('0x21')]['literal'](_0x5b3b('0x22')))),'outboundQueuePauses']]})['then'](function(_0x21c673){logger['info'](_0x5b3b('0x1a'),_0x2de15c);logger[_0x5b3b('0x15')](_0x5b3b('0x1a'),_0x2de15c,JSON[_0x5b3b('0x16')](_0x21c673));_0x501d9f(_0x21c673);})[_0x5b3b('0x19')](function(_0x1c230c){logger[_0x5b3b('0x17')](_0x5b3b('0x1a'),_0x1c230c[_0x5b3b('0x18')],_0x2de15c);_0x4a3ad3(_0x4f76fa[_0x5b3b('0x17')](0x1f4,_0x1c230c['message']));});});};
\ No newline at end of file
index 7d34533..ed5fc8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bfc=['userVoiceQueueRt:','save','remove','update','emit','removeListener','register','length'];(function(_0x406c70,_0x5aa24c){var _0x161e7f=function(_0x424b35){while(--_0x424b35){_0x406c70['push'](_0x406c70['shift']());}};_0x161e7f(++_0x5aa24c);}(_0x6bfc,0x159));var _0xc6bf=function(_0x5169d5,_0x5e9c26){_0x5169d5=_0x5169d5-0x0;var _0x1bf890=_0x6bfc[_0x5169d5];return _0x1bf890;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xc6bf('0x0'),_0xc6bf('0x1'),_0xc6bf('0x2')];function createListener(_0x4d46ea,_0x44f89c){return function(_0x4edec8){_0x44f89c[_0xc6bf('0x3')](_0x4d46ea,_0x4edec8);};}function removeListener(_0x4a6de4,_0x15b991){return function(){UserVoiceQueueRtEvents[_0xc6bf('0x4')](_0x4a6de4,_0x15b991);};}exports[_0xc6bf('0x5')]=function(_0x4a999e){for(var _0x27a5d9=0x0,_0x2c9049=events[_0xc6bf('0x6')];_0x27a5d9<_0x2c9049;_0x27a5d9++){var _0x28d218=events[_0x27a5d9];var _0x250311=createListener(_0xc6bf('0x7')+_0x28d218,_0x4a999e);UserVoiceQueueRtEvents['on'](_0x28d218,_0x250311);}};
\ No newline at end of file
+var _0xc01b=['update','removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xc01b,0x65));var _0xbc01=function(_0x36f614,_0x4331ae){_0x36f614=_0x36f614-0x0;var _0xc32528=_0xc01b[_0x36f614];return _0xc32528;};'use strict';var UserVoiceQueueRtEvents=require(_0xbc01('0x0'));var events=[_0xbc01('0x1'),_0xbc01('0x2'),_0xbc01('0x3')];function createListener(_0x5f1964,_0x2be502){return function(_0x39bff3){_0x2be502['emit'](_0x5f1964,_0x39bff3);};}function removeListener(_0x538b32,_0x52b070){return function(){UserVoiceQueueRtEvents[_0xbc01('0x4')](_0x538b32,_0x52b070);};}exports[_0xbc01('0x5')]=function(_0x53b2e6){for(var _0x525a49=0x0,_0x27f7b7=events[_0xbc01('0x6')];_0x525a49<_0x27f7b7;_0x525a49++){var _0x1244dc=events[_0x525a49];var _0xdedc4e=createListener(_0xbc01('0x7')+_0x1244dc,_0x53b2e6);UserVoiceQueueRtEvents['on'](_0x1244dc,_0xdedc4e);}};
\ No newline at end of file
index 262eba2..73237a9 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(_0x159183,_0xb67a84){var _0x17eca7=function(_0x414087){while(--_0x414087){_0x159183['push'](_0x159183['shift']());}};_0x17eca7(++_0xb67a84);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x28d44b,_0x24328a){var _0xa789bb=function(_0x470423){while(--_0x470423){_0x28d44b['push'](_0x28d44b['shift']());}};_0xa789bb(++_0x24328a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4849f6,_0x104836){_0x4849f6=_0x4849f6-0x0;var _0x1a3dcd=_0xcb91[_0x4849f6];return _0x1a3dcd;};'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 e3cbaff..fca75aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf58b=['sequelize','exports','INTEGER'];(function(_0x3362d0,_0x7923fb){var _0x1c6d66=function(_0x2e635f){while(--_0x2e635f){_0x3362d0['push'](_0x3362d0['shift']());}};_0x1c6d66(++_0x7923fb);}(_0xf58b,0x1bc));var _0xbf58=function(_0x2a723e,_0x61bb43){_0x2a723e=_0x2a723e-0x0;var _0x48a0e1=_0xf58b[_0x2a723e];return _0x48a0e1;};'use strict';var Sequelize=require(_0xbf58('0x0'));module[_0xbf58('0x1')]={'penalty':{'type':Sequelize[_0xbf58('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa855=['exports','INTEGER'];(function(_0x4bed75,_0x211cc7){var _0x2dd8e8=function(_0x6369c7){while(--_0x6369c7){_0x4bed75['push'](_0x4bed75['shift']());}};_0x2dd8e8(++_0x211cc7);}(_0xa855,0x162));var _0x5a85=function(_0xf671c8,_0x275759){_0xf671c8=_0xf671c8-0x0;var _0x2a7d44=_0xa855[_0xf671c8];return _0x2a7d44;};'use strict';var Sequelize=require('sequelize');module[_0x5a85('0x0')]={'penalty':{'type':Sequelize[_0x5a85('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 3d2ee9f..6d1e1d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x492c=['./userWhatsappQueue.attributes','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','api','bluebird','rimraf'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x492c,0x175));var _0xc492=function(_0x112773,_0x10cf55){_0x112773=_0x112773-0x0;var _0x5e7e8b=_0x492c[_0x112773];return _0x5e7e8b;};'use strict';var _=require(_0xc492('0x0'));var util=require(_0xc492('0x1'));var logger=require('../../config/logger')(_0xc492('0x2'));var moment=require('moment');var BPromise=require(_0xc492('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc492('0x4'));var config=require('../../config/environment');var attributes=require(_0xc492('0x5'));module['exports']=function(_0x2a8e1d,_0x3608c8){return _0x2a8e1d[_0xc492('0x6')](_0xc492('0x7'),attributes,{'tableName':_0xc492('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x064d=['exports','define','UserWhatsappQueue','api','moment','bluebird','request-promise','path','./userWhatsappQueue.attributes'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x064d,0x13e));var _0xd064=function(_0x49bb56,_0x234efb){_0x49bb56=_0x49bb56-0x0;var _0x4960a0=_0x064d[_0x49bb56];return _0x4960a0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xd064('0x0'));var moment=require(_0xd064('0x1'));var BPromise=require(_0xd064('0x2'));var rp=require(_0xd064('0x3'));var fs=require('fs');var path=require(_0xd064('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd064('0x5'));module[_0xd064('0x6')]=function(_0x336d68,_0x4bd55a){return _0x336d68[_0xd064('0x7')](_0xd064('0x8'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f11bd7..089c651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77d=['stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s'];(function(_0x96ea30,_0xc0c335){var _0x4da12d=function(_0x3a1771){while(--_0x3a1771){_0x96ea30['push'](_0x96ea30['shift']());}};_0x4da12d(++_0xc0c335);}(_0xe77d,0xbc));var _0xde77=function(_0x1d8a06,_0x3c3804){_0x1d8a06=_0x1d8a06-0x0;var _0x28fa68=_0xe77d[_0x1d8a06];return _0x28fa68;};'use strict';var _=require(_0xde77('0x0'));var util=require(_0xde77('0x1'));var moment=require(_0xde77('0x2'));var BPromise=require(_0xde77('0x3'));var rs=require(_0xde77('0x4'));var fs=require('fs');var Redis=require(_0xde77('0x5'));var db=require(_0xde77('0x6'))['db'];var utils=require(_0xde77('0x7'));var logger=require(_0xde77('0x8'))(_0xde77('0x9'));var config=require(_0xde77('0xa'));var jayson=require(_0xde77('0xb'));var client=jayson[_0xde77('0xc')][_0xde77('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2824b1,_0x244f10,_0x41c395){return new BPromise(function(_0x225383,_0x92c8cb){return client[_0xde77('0xe')](_0x2824b1,_0x41c395)[_0xde77('0xf')](function(_0x471e18){logger[_0xde77('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x244f10,_0xde77('0x11'));logger[_0xde77('0x12')](_0xde77('0x13'),_0x244f10,_0xde77('0x11'),JSON[_0xde77('0x14')](_0x471e18));if(_0x471e18[_0xde77('0x15')]){if(_0x471e18[_0xde77('0x15')][_0xde77('0x16')]===0x1f4){logger[_0xde77('0x15')](_0xde77('0x17'),_0x244f10,_0x471e18[_0xde77('0x15')][_0xde77('0x18')]);return _0x92c8cb(_0x471e18[_0xde77('0x15')]['message']);}logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x244f10,_0x471e18[_0xde77('0x15')][_0xde77('0x18')]);return _0x225383(_0x471e18[_0xde77('0x15')][_0xde77('0x18')]);}else{logger[_0xde77('0x10')](_0xde77('0x17'),_0x244f10,_0xde77('0x11'));_0x225383(_0x471e18[_0xde77('0x19')][_0xde77('0x18')]);}})['catch'](function(_0x5d3311){logger[_0xde77('0x15')](_0xde77('0x17'),_0x244f10,_0x5d3311);_0x92c8cb(_0x5d3311);});});}
\ No newline at end of file
+var _0x4085=['info','UserWhatsappQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x72e107,_0x48a541){var _0x1614ea=function(_0x90bb74){while(--_0x90bb74){_0x72e107['push'](_0x72e107['shift']());}};_0x1614ea(++_0x48a541);}(_0x4085,0x66));var _0x5408=function(_0x3dd01f,_0xb1ae4f){_0x3dd01f=_0x3dd01f-0x0;var _0x1159f0=_0x4085[_0x3dd01f];return _0x1159f0;};'use strict';var _=require(_0x5408('0x0'));var util=require(_0x5408('0x1'));var moment=require(_0x5408('0x2'));var BPromise=require(_0x5408('0x3'));var rs=require(_0x5408('0x4'));var fs=require('fs');var Redis=require(_0x5408('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5408('0x6'));var logger=require('../../config/logger')(_0x5408('0x7'));var config=require(_0x5408('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5408('0x9')][_0x5408('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33d898,_0x4f676d,_0x5473d4){return new BPromise(function(_0x16bed2,_0x44a3ab){return client[_0x5408('0xb')](_0x33d898,_0x5473d4)[_0x5408('0xc')](function(_0x2c5bff){logger[_0x5408('0xd')](_0x5408('0xe'),_0x4f676d,'request\x20sent');logger[_0x5408('0xf')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x4f676d,_0x5408('0x10'),JSON[_0x5408('0x11')](_0x2c5bff));if(_0x2c5bff[_0x5408('0x12')]){if(_0x2c5bff[_0x5408('0x12')][_0x5408('0x13')]===0x1f4){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x4f676d,_0x2c5bff[_0x5408('0x12')][_0x5408('0x14')]);return _0x44a3ab(_0x2c5bff[_0x5408('0x12')][_0x5408('0x14')]);}logger[_0x5408('0x12')](_0x5408('0xe'),_0x4f676d,_0x2c5bff[_0x5408('0x12')][_0x5408('0x14')]);return _0x16bed2(_0x2c5bff[_0x5408('0x12')]['message']);}else{logger[_0x5408('0xd')](_0x5408('0xe'),_0x4f676d,'request\x20sent');_0x16bed2(_0x2c5bff[_0x5408('0x15')][_0x5408('0x14')]);}})[_0x5408('0x16')](function(_0x4013fe){logger[_0x5408('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4f676d,_0x4013fe);_0x44a3ab(_0x4013fe);});});}
\ No newline at end of file
index e341382..2bb4552 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d9b=['put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./variable.controller','get','post','isAuthenticated','create'];(function(_0x46558e,_0x46a7bb){var _0x2ada0c=function(_0x2cfeea){while(--_0x2cfeea){_0x46558e['push'](_0x46558e['shift']());}};_0x2ada0c(++_0x46a7bb);}(_0x8d9b,0x104));var _0xb8d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d9b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb8d9('0x0'));var util=require(_0xb8d9('0x1'));var path=require(_0xb8d9('0x2'));var timeout=require(_0xb8d9('0x3'));var express=require(_0xb8d9('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb8d9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb8d9('0x6'));var controller=require(_0xb8d9('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb8d9('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xb8d9('0x9')]('/',auth[_0xb8d9('0xa')](),controller[_0xb8d9('0xb')]);router[_0xb8d9('0xc')](_0xb8d9('0xd'),auth[_0xb8d9('0xa')](),controller[_0xb8d9('0xe')]);router['delete'](_0xb8d9('0xd'),auth['isAuthenticated'](),controller[_0xb8d9('0xf')]);module[_0xb8d9('0x10')]=router;
\ No newline at end of file
+var _0x2356=['put','/:id','delete','destroy','exports','util','path','Router','fs-extra','../../config/environment','isAuthenticated','index','get','post','create'];(function(_0x4ca95b,_0x34542c){var _0x104189=function(_0x31d554){while(--_0x31d554){_0x4ca95b['push'](_0x4ca95b['shift']());}};_0x104189(++_0x34542c);}(_0x2356,0x14f));var _0x6235=function(_0x226db2,_0x1c1220){_0x226db2=_0x226db2-0x0;var _0xf1ac44=_0x2356[_0x226db2];return _0xf1ac44;};'use strict';var multer=require('multer');var util=require(_0x6235('0x0'));var path=require(_0x6235('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6235('0x2')]();var fs_extra=require(_0x6235('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6235('0x4'));var controller=require('./variable.controller');router['get']('/',auth[_0x6235('0x5')](),controller[_0x6235('0x6')]);router[_0x6235('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x6235('0x8')]('/',auth['isAuthenticated'](),controller[_0x6235('0x9')]);router[_0x6235('0xa')](_0x6235('0xb'),auth[_0x6235('0x5')](),controller['update']);router[_0x6235('0xc')](_0x6235('0xb'),auth[_0x6235('0x5')](),controller[_0x6235('0xd')]);module[_0x6235('0xe')]=router;
\ No newline at end of file
index e26210e..6b851d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e22=['sequelize','exports','STRING','name'];(function(_0x4febcd,_0x141f0c){var _0x253421=function(_0x4768dc){while(--_0x4768dc){_0x4febcd['push'](_0x4febcd['shift']());}};_0x253421(++_0x141f0c);}(_0x3e22,0x104));var _0x23e2=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x3e22[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0x23e2('0x0'));module[_0x23e2('0x1')]={'name':{'type':Sequelize[_0x23e2('0x2')],'unique':_0x23e2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x23e2('0x2')]}};
\ No newline at end of file
+var _0x92e0=['name','sequelize','STRING'];(function(_0xd9eefb,_0x546f15){var _0x465a6f=function(_0x1f532f){while(--_0x1f532f){_0xd9eefb['push'](_0xd9eefb['shift']());}};_0x465a6f(++_0x546f15);}(_0x92e0,0x154));var _0x092e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x92e0[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x092e('0x0'));module['exports']={'name':{'type':Sequelize[_0x092e('0x1')],'unique':_0x092e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x092e('0x1')]}};
\ No newline at end of file
index 7294651..a42d74e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b36=['role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','lodash','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','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','save','destroy','then','Variables','UserProfileResource','error','stack','name','send','index','map','Variable','rawAttributes','fieldName','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3b36,0x152));var _0x63b3=function(_0x2b8ef1,_0x28380f){_0x2b8ef1=_0x2b8ef1-0x0;var _0x262f55=_0x3b36[_0x2b8ef1];return _0x262f55;};'use strict';var emlformat=require(_0x63b3('0x0'));var rimraf=require(_0x63b3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x63b3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x63b3('0x3'));var Mustache=require(_0x63b3('0x4'));var util=require(_0x63b3('0x5'));var path=require(_0x63b3('0x6'));var sox=require('sox');var csv=require(_0x63b3('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x63b3('0x8'));var _=require(_0x63b3('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x63b3('0xa'));var deskjs=require(_0x63b3('0xb'));var toCsv=require('to-csv');var querystring=require(_0x63b3('0xc'));var Papa=require(_0x63b3('0xd'));var Redis=require(_0x63b3('0xe'));var authService=require(_0x63b3('0xf'));var qs=require(_0x63b3('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x63b3('0x11'));var logger=require(_0x63b3('0x12'))(_0x63b3('0x13'));var utils=require(_0x63b3('0x14'));var config=require(_0x63b3('0x15'));var licenseUtil=require(_0x63b3('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40a25e,_0x8d3300){_0x8d3300=_0x8d3300||0xcc;return function(_0x2e0e9a){if(_0x2e0e9a){return _0x40a25e[_0x63b3('0x17')](_0x8d3300);}return _0x40a25e['status'](_0x8d3300)[_0x63b3('0x18')]();};}function respondWithResult(_0x346342,_0x4564ca){_0x4564ca=_0x4564ca||0xc8;return function(_0x291dbe){if(_0x291dbe){return _0x346342[_0x63b3('0x19')](_0x4564ca)[_0x63b3('0x1a')](_0x291dbe);}};}function respondWithFilteredResult(_0x19e2e9,_0x12226e){return function(_0x2d9c11){if(_0x2d9c11){var _0x470d23=typeof _0x12226e[_0x63b3('0x1b')]===_0x63b3('0x1c')&&typeof _0x12226e['limit']==='undefined';var _0x13b7dd=_0x2d9c11[_0x63b3('0x1d')];var _0x34a422=_0x470d23?0x0:_0x12226e[_0x63b3('0x1b')];var _0x4b704d=_0x470d23?_0x2d9c11['count']:_0x12226e[_0x63b3('0x1b')]+_0x12226e['limit'];var _0x390861;if(_0x4b704d>=_0x13b7dd){_0x4b704d=_0x13b7dd;_0x390861=0xc8;}else{_0x390861=0xce;}_0x19e2e9[_0x63b3('0x19')](_0x390861);return _0x19e2e9['set'](_0x63b3('0x1e'),_0x34a422+'-'+_0x4b704d+'/'+_0x13b7dd)[_0x63b3('0x1a')](_0x2d9c11);}return null;};}function patchUpdates(_0x317e84){return function(_0x11265c){try{jsonpatch[_0x63b3('0x1f')](_0x11265c,_0x317e84,!![]);}catch(_0x3de584){return BPromise['reject'](_0x3de584);}return _0x11265c[_0x63b3('0x20')]();};}function saveUpdates(_0x163fe3,_0x3ab405){return function(_0x1b2f8a){if(_0x1b2f8a){return _0x1b2f8a['update'](_0x163fe3)['then'](function(_0x3f1f4e){return _0x3f1f4e;});}return null;};}function removeEntity(_0x30e284,_0x163591){return function(_0xf19889){if(_0xf19889){return _0xf19889[_0x63b3('0x21')]()[_0x63b3('0x22')](function(){var _0x1a0ac6=_0xf19889['get']({'plain':!![]});var _0x425f66=_0x63b3('0x23');return db[_0x63b3('0x24')][_0x63b3('0x21')]({'where':{'type':_0x425f66,'resourceId':_0x1a0ac6['id']}})[_0x63b3('0x22')](function(){return _0xf19889;});})['then'](function(){_0x30e284['status'](0xcc)[_0x63b3('0x18')]();});}};}function handleEntityNotFound(_0x2e2aac,_0x41fc4f){return function(_0x2dc709){if(!_0x2dc709){_0x2e2aac[_0x63b3('0x17')](0x194);}return _0x2dc709;};}function handleError(_0x2f9856,_0x156c80){_0x156c80=_0x156c80||0x1f4;return function(_0x2ddde3){logger[_0x63b3('0x25')](_0x2ddde3[_0x63b3('0x26')]);if(_0x2ddde3[_0x63b3('0x27')]){delete _0x2ddde3[_0x63b3('0x27')];}_0x2f9856[_0x63b3('0x19')](_0x156c80)[_0x63b3('0x28')](_0x2ddde3);};}exports[_0x63b3('0x29')]=function(_0x57deb2,_0x4bc3e9){var _0x3b5202={},_0x469ac8={},_0x42c0e0={'count':0x0,'rows':[]};var _0x372034=_[_0x63b3('0x2a')](db[_0x63b3('0x2b')][_0x63b3('0x2c')],function(_0x5842cd){return{'name':_0x5842cd[_0x63b3('0x2d')],'type':_0x5842cd['type']['key']};});_0x469ac8['model']=_['map'](_0x372034,_0x63b3('0x27'));_0x469ac8[_0x63b3('0x2e')]=_['keys'](_0x57deb2[_0x63b3('0x2e')]);_0x469ac8[_0x63b3('0x2f')]=_['intersection'](_0x469ac8[_0x63b3('0x30')],_0x469ac8['query']);_0x3b5202[_0x63b3('0x31')]=_[_0x63b3('0x32')](_0x469ac8[_0x63b3('0x30')],qs[_0x63b3('0x33')](_0x57deb2[_0x63b3('0x2e')][_0x63b3('0x33')]));_0x3b5202[_0x63b3('0x31')]=_0x3b5202[_0x63b3('0x31')][_0x63b3('0x34')]?_0x3b5202[_0x63b3('0x31')]:_0x469ac8[_0x63b3('0x30')];if(!_0x57deb2[_0x63b3('0x2e')][_0x63b3('0x35')](_0x63b3('0x36'))){_0x3b5202['limit']=qs['limit'](_0x57deb2[_0x63b3('0x2e')]['limit']);_0x3b5202[_0x63b3('0x1b')]=qs['offset'](_0x57deb2[_0x63b3('0x2e')]['offset']);}_0x3b5202[_0x63b3('0x37')]=qs[_0x63b3('0x38')](_0x57deb2[_0x63b3('0x2e')][_0x63b3('0x38')]);_0x3b5202[_0x63b3('0x39')]=qs['filters'](_['pick'](_0x57deb2['query'],_0x469ac8[_0x63b3('0x2f')]),_0x372034);if(_0x57deb2[_0x63b3('0x2e')][_0x63b3('0x3a')]){_0x3b5202['where']=_[_0x63b3('0x3b')](_0x3b5202[_0x63b3('0x39')],{'$or':_[_0x63b3('0x2a')](_0x372034,function(_0x1a52de){if(_0x1a52de[_0x63b3('0x3c')]!==_0x63b3('0x3d')){var _0x3871e2={};_0x3871e2[_0x1a52de[_0x63b3('0x27')]]={'$like':'%'+_0x57deb2['query'][_0x63b3('0x3a')]+'%'};return _0x3871e2;}})});}_0x3b5202=_[_0x63b3('0x3b')]({},_0x3b5202,_0x57deb2[_0x63b3('0x3e')]);var _0x4d8a59={'where':_0x3b5202[_0x63b3('0x39')]};return db['Variable'][_0x63b3('0x1d')](_0x4d8a59)[_0x63b3('0x22')](function(_0x5b1545){_0x42c0e0['count']=_0x5b1545;if(_0x57deb2[_0x63b3('0x2e')][_0x63b3('0x3f')]){_0x3b5202[_0x63b3('0x40')]=[{'all':!![]}];}return db[_0x63b3('0x2b')][_0x63b3('0x41')](_0x3b5202);})[_0x63b3('0x22')](function(_0x4986f0){_0x42c0e0[_0x63b3('0x42')]=_0x4986f0;return _0x42c0e0;})[_0x63b3('0x22')](respondWithFilteredResult(_0x4bc3e9,_0x3b5202))[_0x63b3('0x43')](handleError(_0x4bc3e9,null));};exports[_0x63b3('0x44')]=function(_0x4fd8c5,_0x56c272){var _0x328f04={'raw':!![],'where':{'id':_0x4fd8c5[_0x63b3('0x45')]['id']}},_0x553952={};_0x553952[_0x63b3('0x30')]=_[_0x63b3('0x46')](db[_0x63b3('0x2b')][_0x63b3('0x2c')]);_0x553952[_0x63b3('0x2e')]=_[_0x63b3('0x46')](_0x4fd8c5[_0x63b3('0x2e')]);_0x553952['filters']=_[_0x63b3('0x32')](_0x553952['model'],_0x553952[_0x63b3('0x2e')]);_0x328f04[_0x63b3('0x31')]=_[_0x63b3('0x32')](_0x553952[_0x63b3('0x30')],qs[_0x63b3('0x33')](_0x4fd8c5['query'][_0x63b3('0x33')]));_0x328f04[_0x63b3('0x31')]=_0x328f04[_0x63b3('0x31')][_0x63b3('0x34')]?_0x328f04[_0x63b3('0x31')]:_0x553952[_0x63b3('0x30')];if(_0x4fd8c5['query']['includeAll']){_0x328f04['include']=[{'all':!![]}];}_0x328f04=_[_0x63b3('0x3b')]({},_0x328f04,_0x4fd8c5['options']);return db[_0x63b3('0x2b')][_0x63b3('0x47')](_0x328f04)['then'](handleEntityNotFound(_0x56c272,null))[_0x63b3('0x22')](respondWithResult(_0x56c272,null))[_0x63b3('0x43')](handleError(_0x56c272,null));};exports[_0x63b3('0x48')]=function(_0x454023,_0xae3620){return db[_0x63b3('0x2b')][_0x63b3('0x48')](_0x454023[_0x63b3('0x49')],{})[_0x63b3('0x22')](function(_0x4ae5b5){var _0x7042f9=_0x454023[_0x63b3('0x4a')][_0x63b3('0x4b')]({'plain':!![]});if(!_0x7042f9)throw new Error(_0x63b3('0x4c'));if(_0x7042f9[_0x63b3('0x4d')]===_0x63b3('0x4a')){var _0x55a676=_0x4ae5b5['get']({'plain':!![]});var _0x4c2a45=_0x63b3('0x23');return db[_0x63b3('0x4e')][_0x63b3('0x47')]({'where':{'name':_0x4c2a45,'userProfileId':_0x7042f9[_0x63b3('0x4f')]},'raw':!![]})[_0x63b3('0x22')](function(_0x70647c){if(_0x70647c&&_0x70647c[_0x63b3('0x50')]===0x0){return db[_0x63b3('0x24')][_0x63b3('0x48')]({'name':_0x55a676['name'],'resourceId':_0x55a676['id'],'type':_0x70647c[_0x63b3('0x27')],'sectionId':_0x70647c['id']},{})['then'](function(){return _0x4ae5b5;});}else{return _0x4ae5b5;}})[_0x63b3('0x43')](function(_0x1f6c03){logger[_0x63b3('0x25')](_0x63b3('0x51'),_0x1f6c03);throw _0x1f6c03;});}return _0x4ae5b5;})[_0x63b3('0x22')](respondWithResult(_0xae3620,0xc9))[_0x63b3('0x43')](handleError(_0xae3620,null));};exports[_0x63b3('0x52')]=function(_0x2a0b69,_0x442c2f){if(_0x2a0b69['body']['id']){delete _0x2a0b69[_0x63b3('0x49')]['id'];}return db['Variable'][_0x63b3('0x47')]({'where':{'id':_0x2a0b69['params']['id']}})[_0x63b3('0x22')](handleEntityNotFound(_0x442c2f,null))[_0x63b3('0x22')](saveUpdates(_0x2a0b69[_0x63b3('0x49')],null))[_0x63b3('0x22')](respondWithResult(_0x442c2f,null))[_0x63b3('0x43')](handleError(_0x442c2f,null));};exports['destroy']=function(_0x458393,_0x476c44){return db['Variable'][_0x63b3('0x47')]({'where':{'id':_0x458393[_0x63b3('0x45')]['id']}})['then'](handleEntityNotFound(_0x476c44,null))[_0x63b3('0x22')](removeEntity(_0x476c44,null))[_0x63b3('0x43')](handleError(_0x476c44,null));};
\ No newline at end of file
+var _0xdc3f=['sendStatus','name','send','index','Variable','rawAttributes','fieldName','type','model','map','query','filters','attributes','intersection','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Variables','UserProfileResource','end'];(function(_0x538b69,_0x5cd0eb){var _0x3bebad=function(_0x5e7085){while(--_0x5e7085){_0x538b69['push'](_0x538b69['shift']());}};_0x3bebad(++_0x5cd0eb);}(_0xdc3f,0x160));var _0xfdc3=function(_0x47ec0b,_0x152a7b){_0x47ec0b=_0x47ec0b-0x0;var _0x1d372e=_0xdc3f[_0x47ec0b];return _0x1d372e;};'use strict';var emlformat=require(_0xfdc3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfdc3('0x1'));var jsonpatch=require(_0xfdc3('0x2'));var rp=require(_0xfdc3('0x3'));var moment=require('moment');var BPromise=require(_0xfdc3('0x4'));var Mustache=require(_0xfdc3('0x5'));var util=require('util');var path=require(_0xfdc3('0x6'));var sox=require(_0xfdc3('0x7'));var csv=require('to-csv');var ejs=require(_0xfdc3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfdc3('0x9'));var crypto=require('crypto');var jsforce=require(_0xfdc3('0xa'));var deskjs=require(_0xfdc3('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfdc3('0xc'));var Redis=require(_0xfdc3('0xd'));var authService=require(_0xfdc3('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfdc3('0xf'));var hardwareService=require(_0xfdc3('0x10'));var logger=require('../../config/logger')(_0xfdc3('0x11'));var utils=require(_0xfdc3('0x12'));var config=require(_0xfdc3('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfdc3('0x14'))['db'];function respondWithStatusCode(_0x91a65c,_0x4548d5){_0x4548d5=_0x4548d5||0xcc;return function(_0x3616fa){if(_0x3616fa){return _0x91a65c['sendStatus'](_0x4548d5);}return _0x91a65c[_0xfdc3('0x15')](_0x4548d5)['end']();};}function respondWithResult(_0x1337c3,_0x55faae){_0x55faae=_0x55faae||0xc8;return function(_0x4a1132){if(_0x4a1132){return _0x1337c3['status'](_0x55faae)[_0xfdc3('0x16')](_0x4a1132);}};}function respondWithFilteredResult(_0x1c58ff,_0x4b9d78){return function(_0x1ec6c7){if(_0x1ec6c7){var _0x47147d=typeof _0x4b9d78[_0xfdc3('0x17')]===_0xfdc3('0x18')&&typeof _0x4b9d78[_0xfdc3('0x19')]==='undefined';var _0x12ef29=_0x1ec6c7[_0xfdc3('0x1a')];var _0x36a74e=_0x47147d?0x0:_0x4b9d78[_0xfdc3('0x17')];var _0x308175=_0x47147d?_0x1ec6c7['count']:_0x4b9d78[_0xfdc3('0x17')]+_0x4b9d78['limit'];var _0x58e4b2;if(_0x308175>=_0x12ef29){_0x308175=_0x12ef29;_0x58e4b2=0xc8;}else{_0x58e4b2=0xce;}_0x1c58ff[_0xfdc3('0x15')](_0x58e4b2);return _0x1c58ff[_0xfdc3('0x1b')](_0xfdc3('0x1c'),_0x36a74e+'-'+_0x308175+'/'+_0x12ef29)[_0xfdc3('0x16')](_0x1ec6c7);}return null;};}function patchUpdates(_0x1944f0){return function(_0x18446b){try{jsonpatch[_0xfdc3('0x1d')](_0x18446b,_0x1944f0,!![]);}catch(_0xc56b73){return BPromise['reject'](_0xc56b73);}return _0x18446b[_0xfdc3('0x1e')]();};}function saveUpdates(_0x18a9ee,_0x3081f5){return function(_0x3099b6){if(_0x3099b6){return _0x3099b6[_0xfdc3('0x1f')](_0x18a9ee)[_0xfdc3('0x20')](function(_0x28a7d){return _0x28a7d;});}return null;};}function removeEntity(_0x3a222c,_0x5f7fae){return function(_0x30c6d9){if(_0x30c6d9){return _0x30c6d9[_0xfdc3('0x21')]()[_0xfdc3('0x20')](function(){var _0x4c132a=_0x30c6d9[_0xfdc3('0x22')]({'plain':!![]});var _0x3c21ae=_0xfdc3('0x23');return db[_0xfdc3('0x24')][_0xfdc3('0x21')]({'where':{'type':_0x3c21ae,'resourceId':_0x4c132a['id']}})[_0xfdc3('0x20')](function(){return _0x30c6d9;});})[_0xfdc3('0x20')](function(){_0x3a222c[_0xfdc3('0x15')](0xcc)[_0xfdc3('0x25')]();});}};}function handleEntityNotFound(_0xc468c5,_0x140c8a){return function(_0x577fcb){if(!_0x577fcb){_0xc468c5[_0xfdc3('0x26')](0x194);}return _0x577fcb;};}function handleError(_0x234587,_0x14e99f){_0x14e99f=_0x14e99f||0x1f4;return function(_0x366f01){logger['error'](_0x366f01['stack']);if(_0x366f01[_0xfdc3('0x27')]){delete _0x366f01[_0xfdc3('0x27')];}_0x234587['status'](_0x14e99f)[_0xfdc3('0x28')](_0x366f01);};}exports[_0xfdc3('0x29')]=function(_0x422cfb,_0x23698b){var _0xc7a009={},_0x47af12={},_0x3a3bd0={'count':0x0,'rows':[]};var _0x192020=_['map'](db[_0xfdc3('0x2a')][_0xfdc3('0x2b')],function(_0x3f64c0){return{'name':_0x3f64c0[_0xfdc3('0x2c')],'type':_0x3f64c0[_0xfdc3('0x2d')]['key']};});_0x47af12[_0xfdc3('0x2e')]=_[_0xfdc3('0x2f')](_0x192020,_0xfdc3('0x27'));_0x47af12[_0xfdc3('0x30')]=_['keys'](_0x422cfb[_0xfdc3('0x30')]);_0x47af12[_0xfdc3('0x31')]=_['intersection'](_0x47af12[_0xfdc3('0x2e')],_0x47af12[_0xfdc3('0x30')]);_0xc7a009[_0xfdc3('0x32')]=_[_0xfdc3('0x33')](_0x47af12['model'],qs[_0xfdc3('0x34')](_0x422cfb['query'][_0xfdc3('0x34')]));_0xc7a009['attributes']=_0xc7a009[_0xfdc3('0x32')][_0xfdc3('0x35')]?_0xc7a009[_0xfdc3('0x32')]:_0x47af12[_0xfdc3('0x2e')];if(!_0x422cfb[_0xfdc3('0x30')]['hasOwnProperty'](_0xfdc3('0x36'))){_0xc7a009[_0xfdc3('0x19')]=qs[_0xfdc3('0x19')](_0x422cfb[_0xfdc3('0x30')][_0xfdc3('0x19')]);_0xc7a009[_0xfdc3('0x17')]=qs[_0xfdc3('0x17')](_0x422cfb[_0xfdc3('0x30')][_0xfdc3('0x17')]);}_0xc7a009['order']=qs[_0xfdc3('0x37')](_0x422cfb[_0xfdc3('0x30')][_0xfdc3('0x37')]);_0xc7a009[_0xfdc3('0x38')]=qs[_0xfdc3('0x31')](_['pick'](_0x422cfb[_0xfdc3('0x30')],_0x47af12[_0xfdc3('0x31')]),_0x192020);if(_0x422cfb[_0xfdc3('0x30')][_0xfdc3('0x39')]){_0xc7a009[_0xfdc3('0x38')]=_[_0xfdc3('0x3a')](_0xc7a009['where'],{'$or':_[_0xfdc3('0x2f')](_0x192020,function(_0x458044){if(_0x458044[_0xfdc3('0x2d')]!==_0xfdc3('0x3b')){var _0x545d0b={};_0x545d0b[_0x458044[_0xfdc3('0x27')]]={'$like':'%'+_0x422cfb['query'][_0xfdc3('0x39')]+'%'};return _0x545d0b;}})});}_0xc7a009=_[_0xfdc3('0x3a')]({},_0xc7a009,_0x422cfb['options']);var _0x9dcd1={'where':_0xc7a009[_0xfdc3('0x38')]};return db[_0xfdc3('0x2a')][_0xfdc3('0x1a')](_0x9dcd1)[_0xfdc3('0x20')](function(_0x593908){_0x3a3bd0[_0xfdc3('0x1a')]=_0x593908;if(_0x422cfb['query'][_0xfdc3('0x3c')]){_0xc7a009[_0xfdc3('0x3d')]=[{'all':!![]}];}return db[_0xfdc3('0x2a')][_0xfdc3('0x3e')](_0xc7a009);})[_0xfdc3('0x20')](function(_0x31f233){_0x3a3bd0[_0xfdc3('0x3f')]=_0x31f233;return _0x3a3bd0;})[_0xfdc3('0x20')](respondWithFilteredResult(_0x23698b,_0xc7a009))[_0xfdc3('0x40')](handleError(_0x23698b,null));};exports[_0xfdc3('0x41')]=function(_0x2e0a63,_0x38c0a4){var _0xf39bc0={'raw':!![],'where':{'id':_0x2e0a63[_0xfdc3('0x42')]['id']}},_0x296bee={};_0x296bee[_0xfdc3('0x2e')]=_['keys'](db[_0xfdc3('0x2a')][_0xfdc3('0x2b')]);_0x296bee[_0xfdc3('0x30')]=_['keys'](_0x2e0a63[_0xfdc3('0x30')]);_0x296bee[_0xfdc3('0x31')]=_[_0xfdc3('0x33')](_0x296bee[_0xfdc3('0x2e')],_0x296bee['query']);_0xf39bc0[_0xfdc3('0x32')]=_[_0xfdc3('0x33')](_0x296bee['model'],qs[_0xfdc3('0x34')](_0x2e0a63[_0xfdc3('0x30')][_0xfdc3('0x34')]));_0xf39bc0[_0xfdc3('0x32')]=_0xf39bc0[_0xfdc3('0x32')][_0xfdc3('0x35')]?_0xf39bc0[_0xfdc3('0x32')]:_0x296bee[_0xfdc3('0x2e')];if(_0x2e0a63[_0xfdc3('0x30')][_0xfdc3('0x3c')]){_0xf39bc0[_0xfdc3('0x3d')]=[{'all':!![]}];}_0xf39bc0=_[_0xfdc3('0x3a')]({},_0xf39bc0,_0x2e0a63[_0xfdc3('0x43')]);return db[_0xfdc3('0x2a')][_0xfdc3('0x44')](_0xf39bc0)['then'](handleEntityNotFound(_0x38c0a4,null))[_0xfdc3('0x20')](respondWithResult(_0x38c0a4,null))[_0xfdc3('0x40')](handleError(_0x38c0a4,null));};exports[_0xfdc3('0x45')]=function(_0x1e1bc3,_0x384c36){return db[_0xfdc3('0x2a')][_0xfdc3('0x45')](_0x1e1bc3['body'],{})[_0xfdc3('0x20')](function(_0x42d08a){var _0x4906f8=_0x1e1bc3[_0xfdc3('0x46')][_0xfdc3('0x22')]({'plain':!![]});if(!_0x4906f8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4906f8[_0xfdc3('0x47')]==='user'){var _0x256b30=_0x42d08a['get']({'plain':!![]});var _0x56c209='Variables';return db[_0xfdc3('0x48')][_0xfdc3('0x44')]({'where':{'name':_0x56c209,'userProfileId':_0x4906f8[_0xfdc3('0x49')]},'raw':!![]})[_0xfdc3('0x20')](function(_0x5521a2){if(_0x5521a2&&_0x5521a2[_0xfdc3('0x4a')]===0x0){return db[_0xfdc3('0x24')][_0xfdc3('0x45')]({'name':_0x256b30[_0xfdc3('0x27')],'resourceId':_0x256b30['id'],'type':_0x5521a2[_0xfdc3('0x27')],'sectionId':_0x5521a2['id']},{})[_0xfdc3('0x20')](function(){return _0x42d08a;});}else{return _0x42d08a;}})[_0xfdc3('0x40')](function(_0x2d846f){logger[_0xfdc3('0x4b')](_0xfdc3('0x4c'),_0x2d846f);throw _0x2d846f;});}return _0x42d08a;})[_0xfdc3('0x20')](respondWithResult(_0x384c36,0xc9))[_0xfdc3('0x40')](handleError(_0x384c36,null));};exports['update']=function(_0x424dc1,_0x290c2f){if(_0x424dc1[_0xfdc3('0x4d')]['id']){delete _0x424dc1[_0xfdc3('0x4d')]['id'];}return db[_0xfdc3('0x2a')][_0xfdc3('0x44')]({'where':{'id':_0x424dc1[_0xfdc3('0x42')]['id']}})[_0xfdc3('0x20')](handleEntityNotFound(_0x290c2f,null))[_0xfdc3('0x20')](saveUpdates(_0x424dc1[_0xfdc3('0x4d')],null))[_0xfdc3('0x20')](respondWithResult(_0x290c2f,null))[_0xfdc3('0x40')](handleError(_0x290c2f,null));};exports[_0xfdc3('0x21')]=function(_0x3fa10,_0x2fd6a4){return db[_0xfdc3('0x2a')][_0xfdc3('0x44')]({'where':{'id':_0x3fa10[_0xfdc3('0x42')]['id']}})[_0xfdc3('0x20')](handleEntityNotFound(_0x2fd6a4,null))[_0xfdc3('0x20')](removeEntity(_0x2fd6a4,null))[_0xfdc3('0x40')](handleError(_0x2fd6a4,null));};
\ No newline at end of file
index cb8ab97..9546d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a46=['lodash','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define','Variable'];(function(_0x41affe,_0x5a699d){var _0x3ad137=function(_0x4c9b42){while(--_0x4c9b42){_0x41affe['push'](_0x41affe['shift']());}};_0x3ad137(++_0x5a699d);}(_0x3a46,0xdc));var _0x63a4=function(_0x34c48d,_0x22f696){_0x34c48d=_0x34c48d-0x0;var _0x5151ec=_0x3a46[_0x34c48d];return _0x5151ec;};'use strict';var _=require(_0x63a4('0x0'));var util=require('util');var logger=require(_0x63a4('0x1'))(_0x63a4('0x2'));var moment=require(_0x63a4('0x3'));var BPromise=require(_0x63a4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x63a4('0x5'));var config=require(_0x63a4('0x6'));var attributes=require('./variable.attributes');module[_0x63a4('0x7')]=function(_0x1f53f4,_0x3b8ee7){return _0x1f53f4[_0x63a4('0x8')](_0x63a4('0x9'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeec1=['define','Variable','util','../../config/logger','request-promise','../../config/environment','./variable.attributes','exports'];(function(_0x707f56,_0x530a4c){var _0x543ff7=function(_0x19ae3e){while(--_0x19ae3e){_0x707f56['push'](_0x707f56['shift']());}};_0x543ff7(++_0x530a4c);}(_0xeec1,0x10a));var _0x1eec=function(_0x15e1f6,_0x299462){_0x15e1f6=_0x15e1f6-0x0;var _0xdc39c3=_0xeec1[_0x15e1f6];return _0xdc39c3;};'use strict';var _=require('lodash');var util=require(_0x1eec('0x0'));var logger=require(_0x1eec('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1eec('0x2'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1eec('0x3'));var attributes=require(_0x1eec('0x4'));module[_0x1eec('0x5')]=function(_0xe41641,_0xfe693f){return _0xe41641[_0x1eec('0x6')](_0x1eec('0x7'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a512ef..e7b4e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x259950,_0x11dbb6){var _0x3dc903=function(_0x571a1a){while(--_0x571a1a){_0x259950['push'](_0x259950['shift']());}};_0x3dc903(++_0x11dbb6);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3e6898,_0x25681e){_0x3e6898=_0x3e6898-0x0;var _0x419360=_0x7fbe[_0x3e6898];return _0x419360;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
+var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x5277fc,_0x584d2e){var _0x4d5097=function(_0x540c8b){while(--_0x540c8b){_0x5277fc['push'](_0x5277fc['shift']());}};_0x4d5097(++_0x584d2e);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x13ae89,_0x832c38){_0x13ae89=_0x13ae89-0x0;var _0x1744a0=_0x7fbe[_0x13ae89];return _0x1744a0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
index 873fb85..f1f029f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f79=['/migrations','migrations','exports','Router','./version.controller','get','index','/fetch','fetch','isAuthenticated','/pull','pull','/restart','restart'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x9f79,0x10d));var _0x99f7=function(_0x3c4a30,_0x24a63a){_0x3c4a30=_0x3c4a30-0x0;var _0xb54735=_0x9f79[_0x3c4a30];return _0xb54735;};'use strict';var express=require('express');var router=express[_0x99f7('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x99f7('0x1'));router[_0x99f7('0x2')]('/',controller[_0x99f7('0x3')]);router['get'](_0x99f7('0x4'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x99f7('0x5')]);router['get']('/reset',auth[_0x99f7('0x6')](),auth['canUpdate'](),controller['reset']);router['get'](_0x99f7('0x7'),auth[_0x99f7('0x6')](),auth['canUpdate'](),controller[_0x99f7('0x8')]);router[_0x99f7('0x2')](_0x99f7('0x9'),auth[_0x99f7('0x6')](),controller[_0x99f7('0xa')]);router['get'](_0x99f7('0xb'),controller[_0x99f7('0xc')]);module[_0x99f7('0xd')]=router;
\ No newline at end of file
+var _0x45ba=['canUpdate','fetch','/reset','reset','/pull','/restart','restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated'];(function(_0x481e35,_0x3ec80b){var _0x1dd292=function(_0x51a377){while(--_0x51a377){_0x481e35['push'](_0x481e35['shift']());}};_0x1dd292(++_0x3ec80b);}(_0x45ba,0x172));var _0xa45b=function(_0x5d4d94,_0x4824f9){_0x5d4d94=_0x5d4d94-0x0;var _0x218ed5=_0x45ba[_0x5d4d94];return _0x218ed5;};'use strict';var express=require(_0xa45b('0x0'));var router=express[_0xa45b('0x1')]();var auth=require(_0xa45b('0x2'));var controller=require(_0xa45b('0x3'));router[_0xa45b('0x4')]('/',controller[_0xa45b('0x5')]);router['get'](_0xa45b('0x6'),auth[_0xa45b('0x7')](),auth[_0xa45b('0x8')](),controller[_0xa45b('0x9')]);router[_0xa45b('0x4')](_0xa45b('0xa'),auth[_0xa45b('0x7')](),auth[_0xa45b('0x8')](),controller[_0xa45b('0xb')]);router['get'](_0xa45b('0xc'),auth[_0xa45b('0x7')](),auth['canUpdate'](),controller['pull']);router[_0xa45b('0x4')](_0xa45b('0xd'),auth[_0xa45b('0x7')](),controller[_0xa45b('0xe')]);router[_0xa45b('0x4')](_0xa45b('0xf'),controller[_0xa45b('0x10')]);module[_0xa45b('0x11')]=router;
\ No newline at end of file
index 71e678b..6becc95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5913=['FETCH_HEAD','info','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','server','migrations','replace','.js','length','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.','then','Database\x20migrated\x20successfully\x20from\x20version\x20','last','join','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','pkginfo','version','exec','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','tags','2.0.0','status','fetch','master','error','json','git\x20fetch','reset','--hard'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5913,0x80));var _0x3591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5913[_0x3dd15e];return _0x231fd0;};'use strict';var Umzug=require('umzug');var path=require(_0x3591('0x0'));var fs=require('fs');var _=require(_0x3591('0x1'));var pkginfo=require(_0x3591('0x2'))(module,_0x3591('0x3'));var compareVersions=require('compare-versions');var exec=require('child_process')[_0x3591('0x4')];var db=require('../../mysqldb')['db'];var config=require(_0x3591('0x5'));var pm2=require(_0x3591('0x6'));var logger=require(_0x3591('0x7'))(_0x3591('0x8'));var git=require(_0x3591('0x9'))(config[_0x3591('0xa')]);exports[_0x3591('0xb')]=function(_0x2955c8,_0x2f938e){var _0x1c92ac={'current':module[_0x3591('0xc')][_0x3591('0x3')],'phonebar':0x2};if(_0x2955c8[_0x3591('0xd')]&&_0x2955c8[_0x3591('0xd')][_0x3591('0xe')]){return git['fetch']()[_0x3591('0xf')](function(_0x212399,_0xb0dc91){_0x1c92ac[_0x3591('0xe')]=(_0x212399?module[_0x3591('0xc')][_0x3591('0x3')]:_0xb0dc91[_0x3591('0xe')])||_0x3591('0x10');return _0x2f938e[_0x3591('0x11')](0xc8)['json'](_0x1c92ac);});}else{return _0x2f938e[_0x3591('0x11')](0xc8)['json'](_0x1c92ac);}};exports[_0x3591('0x12')]=function(_0x117e05,_0x1536dc){return git[_0x3591('0x12')](['origin',_0x3591('0x13')],function(_0xac99fb){if(_0xac99fb){logger[_0x3591('0x14')](_0xac99fb);return _0x1536dc['status'](0x1f4)[_0x3591('0x15')](_0xac99fb);}logger['info'](_0x3591('0x16'));return _0x1536dc[_0x3591('0x11')](0xc8)[_0x3591('0x15')]({'output':'git\x20fetch\x20origin\x20master'});});};exports['reset']=function(_0x51f6ad,_0x5e5112){return git[_0x3591('0x17')]([_0x3591('0x18'),_0x3591('0x19')],function(_0x40276b){if(_0x40276b){logger[_0x3591('0x14')](_0x40276b);return _0x5e5112[_0x3591('0x11')](0x1f4)[_0x3591('0x15')](_0x40276b);}logger[_0x3591('0x1a')](_0x3591('0x1b'));return _0x5e5112[_0x3591('0x11')](0xc8)['json']({'output':'git\x20reset\x20--hard'});});};exports[_0x3591('0x1c')]=function(_0x171520,_0x55374d){exec(_0x3591('0x1d'),function(_0x8f20b3,_0x44a4e9,_0x596793){logger[_0x3591('0x1a')](_0x44a4e9);logger['info'](_0x596793);if(_0x8f20b3){logger['error'](_0x8f20b3);return _0x55374d[_0x3591('0x11')](0x1f4)['json'](_0x8f20b3);}return _0x55374d[_0x3591('0x11')](0xc8)[_0x3591('0x15')]({'output':_0x44a4e9});});};exports[_0x3591('0x1e')]=function(_0x1a99af,_0x3f077e){return pm2[_0x3591('0x1e')]('motion2')['then'](function(_0x498180){logger[_0x3591('0x1a')](_0x3591('0x1f'),_0x498180);return _0x3f077e['status'](0xc8)[_0x3591('0x15')]({'output':_0x3591('0x20')});})[_0x3591('0x21')](function(_0x509e0e){logger[_0x3591('0x14')](_0x509e0e);return _0x3f077e[_0x3591('0x11')](0x1f4)['json'](_0x509e0e);});};exports['migrations']=function(_0x398617,_0x4fc45c){var _0x117617=fs[_0x3591('0x22')](path['join'](config['root'],_0x3591('0x23'),_0x3591('0x24')));var _0x2609d0=[];for(var _0x158ff2=0x0;_0x158ff2<_0x117617['length'];_0x158ff2++){var _0x28bbdb=_0x117617[_0x158ff2][_0x3591('0x25')](_0x3591('0x26'),'');if(compareVersions(module['exports'][_0x3591('0x3')],_0x28bbdb)===-0x1){_0x2609d0['push'](_0x28bbdb);}}if(_0x2609d0[_0x3591('0x27')]){var _0x4c29af=_0x2609d0['sort'](compareVersions);var _0xfecce=new Umzug({'storage':_0x3591('0x28'),'storageOptions':{'model':db[_0x3591('0x29')],'modelName':'Migration','columnName':_0x3591('0x3')},'migrations':{'params':[db[_0x3591('0x28')][_0x3591('0x2a')](),db[_0x3591('0x28')][_0x3591('0x2b')],function(){throw new Error(_0x3591('0x2c'));}],'path':path['join'](config[_0x3591('0xa')],_0x3591('0x23'),_0x3591('0x24')),'pattern':/\.js$/}});_0xfecce['up']({'migrations':_['map'](_0x4c29af,function(_0x9590b){return _0x9590b+_0x3591('0x26');})})[_0x3591('0x2d')](function(){return _0x4fc45c[_0x3591('0x11')](0xc8)[_0x3591('0x15')]({'output':_0x3591('0x2e')+module[_0x3591('0xc')][_0x3591('0x3')]+'\x20to\x20'+_[_0x3591('0x2f')](_0x4c29af),'migrations':_[_0x3591('0x30')](_0x4c29af)});})[_0x3591('0x21')](function(_0x3f9ea5){if(_0x3f9ea5 instanceof db[_0x3591('0x28')][_0x3591('0x31')]){return _0x4fc45c[_0x3591('0x11')](0xc8)[_0x3591('0x15')]({'output':_0x3591('0x32')});}else{return _0x4fc45c[_0x3591('0x11')](0x1f4)[_0x3591('0x15')](_0x3f9ea5);}});}else{return _0x4fc45c[_0x3591('0x11')](0xc8)[_0x3591('0x15')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0xb874=['root','index','version','query','latest','tags','exports','2.0.0','status','json','fetch','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','replace','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','Database\x20already\x20up-to-date','umzug','path','pkginfo','child_process','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git'];(function(_0x1ee374,_0x5459a9){var _0x20595b=function(_0x950653){while(--_0x950653){_0x1ee374['push'](_0x1ee374['shift']());}};_0x20595b(++_0x5459a9);}(_0xb874,0x98));var _0x4b87=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xb874[_0x432682];return _0x463d05;};'use strict';var Umzug=require(_0x4b87('0x0'));var path=require(_0x4b87('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x4b87('0x2'))(module,'version');var compareVersions=require('compare-versions');var exec=require(_0x4b87('0x3'))['exec'];var db=require(_0x4b87('0x4'))['db'];var config=require(_0x4b87('0x5'));var pm2=require(_0x4b87('0x6'));var logger=require(_0x4b87('0x7'))(_0x4b87('0x8'));var git=require(_0x4b87('0x9'))(config[_0x4b87('0xa')]);exports[_0x4b87('0xb')]=function(_0x132a62,_0x10dfa3){var _0x1d10bd={'current':module['exports'][_0x4b87('0xc')],'phonebar':0x2};if(_0x132a62['query']&&_0x132a62[_0x4b87('0xd')][_0x4b87('0xe')]){return git['fetch']()[_0x4b87('0xf')](function(_0x18d117,_0x4bd583){_0x1d10bd[_0x4b87('0xe')]=(_0x18d117?module[_0x4b87('0x10')][_0x4b87('0xc')]:_0x4bd583[_0x4b87('0xe')])||_0x4b87('0x11');return _0x10dfa3[_0x4b87('0x12')](0xc8)[_0x4b87('0x13')](_0x1d10bd);});}else{return _0x10dfa3['status'](0xc8)[_0x4b87('0x13')](_0x1d10bd);}};exports[_0x4b87('0x14')]=function(_0x9bfc45,_0x3621b9){return git[_0x4b87('0x14')]([_0x4b87('0x15'),_0x4b87('0x16')],function(_0x4b1722){if(_0x4b1722){logger[_0x4b87('0x17')](_0x4b1722);return _0x3621b9[_0x4b87('0x12')](0x1f4)[_0x4b87('0x13')](_0x4b1722);}logger[_0x4b87('0x18')](_0x4b87('0x19'));return _0x3621b9[_0x4b87('0x12')](0xc8)[_0x4b87('0x13')]({'output':_0x4b87('0x1a')});});};exports[_0x4b87('0x1b')]=function(_0x2cb96b,_0x5e9678){return git[_0x4b87('0x1b')]([_0x4b87('0x1c'),'FETCH_HEAD'],function(_0x33071a){if(_0x33071a){logger['error'](_0x33071a);return _0x5e9678[_0x4b87('0x12')](0x1f4)[_0x4b87('0x13')](_0x33071a);}logger[_0x4b87('0x18')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x5e9678[_0x4b87('0x12')](0xc8)[_0x4b87('0x13')]({'output':_0x4b87('0x1d')});});};exports[_0x4b87('0x1e')]=function(_0x304e5c,_0x93f0a){exec(_0x4b87('0x1f'),function(_0x59055b,_0x5ca8c1,_0x2e55a6){logger[_0x4b87('0x18')](_0x5ca8c1);logger['info'](_0x2e55a6);if(_0x59055b){logger['error'](_0x59055b);return _0x93f0a[_0x4b87('0x12')](0x1f4)['json'](_0x59055b);}return _0x93f0a[_0x4b87('0x12')](0xc8)['json']({'output':_0x5ca8c1});});};exports[_0x4b87('0x20')]=function(_0x53c24f,_0x55f60a){return pm2[_0x4b87('0x20')](_0x4b87('0x21'))[_0x4b87('0x22')](function(_0x55ea3a){logger[_0x4b87('0x18')](_0x4b87('0x23'),_0x55ea3a);return _0x55f60a['status'](0xc8)[_0x4b87('0x13')]({'output':_0x4b87('0x24')});})[_0x4b87('0x25')](function(_0x5d9046){logger[_0x4b87('0x17')](_0x5d9046);return _0x55f60a['status'](0x1f4)[_0x4b87('0x13')](_0x5d9046);});};exports[_0x4b87('0x26')]=function(_0x9a3aa1,_0x3e8ce4){var _0x1ba2cd=fs[_0x4b87('0x27')](path[_0x4b87('0x28')](config[_0x4b87('0xa')],_0x4b87('0x29'),_0x4b87('0x26')));var _0x511c3d=[];for(var _0x138119=0x0;_0x138119<_0x1ba2cd['length'];_0x138119++){var _0x54f1c1=_0x1ba2cd[_0x138119][_0x4b87('0x2a')]('.js','');if(compareVersions(module[_0x4b87('0x10')][_0x4b87('0xc')],_0x54f1c1)===-0x1){_0x511c3d[_0x4b87('0x2b')](_0x54f1c1);}}if(_0x511c3d['length']){var _0xa0d118=_0x511c3d[_0x4b87('0x2c')](compareVersions);var _0xb44c20=new Umzug({'storage':_0x4b87('0x2d'),'storageOptions':{'model':db[_0x4b87('0x2e')],'modelName':_0x4b87('0x2e'),'columnName':_0x4b87('0xc')},'migrations':{'params':[db[_0x4b87('0x2d')][_0x4b87('0x2f')](),db['sequelize'][_0x4b87('0x30')],function(){throw new Error(_0x4b87('0x31'));}],'path':path[_0x4b87('0x28')](config[_0x4b87('0xa')],'server',_0x4b87('0x26')),'pattern':/\.js$/}});_0xb44c20['up']({'migrations':_[_0x4b87('0x32')](_0xa0d118,function(_0x37a27f){return _0x37a27f+'.js';})})[_0x4b87('0x22')](function(){return _0x3e8ce4[_0x4b87('0x12')](0xc8)[_0x4b87('0x13')]({'output':_0x4b87('0x33')+module['exports'][_0x4b87('0xc')]+_0x4b87('0x34')+_['last'](_0xa0d118),'migrations':_[_0x4b87('0x28')](_0xa0d118)});})[_0x4b87('0x25')](function(_0x273005){if(_0x273005 instanceof db[_0x4b87('0x2d')]['UniqueConstraintError']){return _0x3e8ce4[_0x4b87('0x12')](0xc8)[_0x4b87('0x13')]({'output':_0x4b87('0x35')});}else{return _0x3e8ce4['status'](0x1f4)[_0x4b87('0x13')](_0x273005);}});}else{return _0x3e8ce4['status'](0xc8)[_0x4b87('0x13')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index f814e6d..8921354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6224=['isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x6224,0xd3));var _0x4622=function(_0x4dcc2d,_0x422839){_0x4dcc2d=_0x4dcc2d-0x0;var _0x1bbd79=_0x6224[_0x4dcc2d];return _0x1bbd79;};'use strict';var multer=require(_0x4622('0x0'));var util=require(_0x4622('0x1'));var path=require('path');var timeout=require(_0x4622('0x2'));var express=require(_0x4622('0x3'));var router=express['Router']();var fs_extra=require(_0x4622('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4622('0x5'));var config=require(_0x4622('0x6'));var controller=require(_0x4622('0x7'));router[_0x4622('0x8')]('/',auth[_0x4622('0x9')](),controller['index']);router['get'](_0x4622('0xa'),auth['isAuthenticated'](),controller[_0x4622('0xb')]);router[_0x4622('0x8')](_0x4622('0xc'),auth['isAuthenticated'](),controller[_0x4622('0xd')]);router[_0x4622('0xe')]('/',auth[_0x4622('0x9')](),controller[_0x4622('0xf')]);router['put'](_0x4622('0xc'),auth['isAuthenticated'](),controller[_0x4622('0x10')]);router[_0x4622('0x11')](_0x4622('0xc'),auth[_0x4622('0x9')](),controller[_0x4622('0x12')]);module[_0x4622('0x13')]=router;
\ No newline at end of file
+var _0xe9e8=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','exports'];(function(_0x5510a5,_0x5dfbde){var _0x321db2=function(_0x28d75f){while(--_0x28d75f){_0x5510a5['push'](_0x5510a5['shift']());}};_0x321db2(++_0x5dfbde);}(_0xe9e8,0x7e));var _0x8e9e=function(_0x45b9f0,_0x19615b){_0x45b9f0=_0x45b9f0-0x0;var _0x1fff2c=_0xe9e8[_0x45b9f0];return _0x1fff2c;};'use strict';var multer=require(_0x8e9e('0x0'));var util=require(_0x8e9e('0x1'));var path=require('path');var timeout=require(_0x8e9e('0x2'));var express=require(_0x8e9e('0x3'));var router=express[_0x8e9e('0x4')]();var fs_extra=require(_0x8e9e('0x5'));var auth=require(_0x8e9e('0x6'));var interaction=require(_0x8e9e('0x7'));var config=require('../../config/environment');var controller=require(_0x8e9e('0x8'));router[_0x8e9e('0x9')]('/',auth[_0x8e9e('0xa')](),controller[_0x8e9e('0xb')]);router['get'](_0x8e9e('0xc'),auth[_0x8e9e('0xa')](),controller[_0x8e9e('0xd')]);router[_0x8e9e('0x9')](_0x8e9e('0xe'),auth[_0x8e9e('0xa')](),controller['show']);router[_0x8e9e('0xf')]('/',auth[_0x8e9e('0xa')](),controller[_0x8e9e('0x10')]);router[_0x8e9e('0x11')]('/:id',auth[_0x8e9e('0xa')](),controller[_0x8e9e('0x12')]);router[_0x8e9e('0x13')](_0x8e9e('0xe'),auth[_0x8e9e('0xa')](),controller['destroy']);module[_0x8e9e('0x14')]=router;
\ No newline at end of file
index ca2cd10..4657a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['INTEGER','BOOLEAN','STRING','DATE'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x34b7,0x196));var _0x734b=function(_0x37b624,_0x28c3aa){_0x37b624=_0x37b624-0x0;var _0x44abd9=_0x34b7[_0x37b624];return _0x44abd9;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x734b('0x0')]},'uniqueid':{'type':Sequelize[_0x734b('0x0')]},'calleridnum':{'type':Sequelize[_0x734b('0x0')]},'calleridname':{'type':Sequelize[_0x734b('0x0')]},'queue':{'type':Sequelize[_0x734b('0x0')]},'interface':{'type':Sequelize[_0x734b('0x0')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x734b('0x1')]},'agentcompleteAt':{'type':Sequelize[_0x734b('0x1')]},'agentringnoanswerAt':{'type':Sequelize[_0x734b('0x1')]},'agentdumpAt':{'type':Sequelize[_0x734b('0x1')]},'holdtime':{'type':Sequelize[_0x734b('0x2')]},'agentcomplete':{'type':Sequelize[_0x734b('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x734b('0x3')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x734b('0x2')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x734b('0x0')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x734b('0x2')]},'channelstatedesc':{'type':Sequelize[_0x734b('0x0')]},'connectedlinenum':{'type':Sequelize[_0x734b('0x0')]},'connectedlinename':{'type':Sequelize[_0x734b('0x0')]},'language':{'type':Sequelize[_0x734b('0x0')]},'accountcode':{'type':Sequelize[_0x734b('0x0')]},'context':{'type':Sequelize[_0x734b('0x0')]},'exten':{'type':Sequelize[_0x734b('0x0')]},'priority':{'type':Sequelize[_0x734b('0x0')]},'destchannel':{'type':Sequelize[_0x734b('0x0')]},'destchannelstate':{'type':Sequelize[_0x734b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x734b('0x0')]},'destcalleridnum':{'type':Sequelize[_0x734b('0x0')]},'destcalleridname':{'type':Sequelize[_0x734b('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x734b('0x0')]},'destlanguage':{'type':Sequelize[_0x734b('0x0')]},'destaccountcode':{'type':Sequelize[_0x734b('0x0')]},'destcontext':{'type':Sequelize[_0x734b('0x0')]},'destexten':{'type':Sequelize[_0x734b('0x0')]},'destpriority':{'type':Sequelize[_0x734b('0x0')]},'destuniqueid':{'type':Sequelize[_0x734b('0x0')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x734b('0x0')]},'answeredelsewheremembername':{'type':Sequelize[_0x734b('0x0')]},'transfer':{'type':Sequelize[_0x734b('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x734b('0x0')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x734b('0x0')]},'transferuniqueid':{'type':Sequelize[_0x734b('0x0')]},'agententerreason':{'type':Sequelize[_0x734b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4910=['exports','STRING','DATE','INTEGER','BOOLEAN','sequelize'];(function(_0xb9d404,_0x5084e1){var _0x4bead5=function(_0x27e215){while(--_0x27e215){_0xb9d404['push'](_0xb9d404['shift']());}};_0x4bead5(++_0x5084e1);}(_0x4910,0x1d9));var _0x0491=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x4910[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x0491('0x0'));module[_0x0491('0x1')]={'type':{'type':Sequelize[_0x0491('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x0491('0x2')]},'calleridname':{'type':Sequelize[_0x0491('0x2')]},'queue':{'type':Sequelize[_0x0491('0x2')]},'interface':{'type':Sequelize[_0x0491('0x2')]},'membername':{'type':Sequelize[_0x0491('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x0491('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x0491('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x0491('0x3')]},'agentdumpAt':{'type':Sequelize[_0x0491('0x3')]},'holdtime':{'type':Sequelize[_0x0491('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x0491('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x0491('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x0491('0x4')]},'agentacw':{'type':Sequelize[_0x0491('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x0491('0x4')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x0491('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x0491('0x4')]},'channelstatedesc':{'type':Sequelize[_0x0491('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0491('0x2')]},'connectedlinename':{'type':Sequelize[_0x0491('0x2')]},'language':{'type':Sequelize[_0x0491('0x2')]},'accountcode':{'type':Sequelize[_0x0491('0x2')]},'context':{'type':Sequelize[_0x0491('0x2')]},'exten':{'type':Sequelize[_0x0491('0x2')]},'priority':{'type':Sequelize[_0x0491('0x2')]},'destchannel':{'type':Sequelize[_0x0491('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x0491('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x0491('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x0491('0x2')]},'destaccountcode':{'type':Sequelize[_0x0491('0x2')]},'destcontext':{'type':Sequelize[_0x0491('0x2')]},'destexten':{'type':Sequelize[_0x0491('0x2')]},'destpriority':{'type':Sequelize[_0x0491('0x2')]},'destuniqueid':{'type':Sequelize[_0x0491('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x0491('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x0491('0x2')]},'transfer':{'type':Sequelize[_0x0491('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x0491('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x0491('0x2')]},'transferuniqueid':{'type':Sequelize[_0x0491('0x2')]},'agententerreason':{'type':Sequelize[_0x0491('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 0062708..945d012 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(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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(_0x176329,_0x568c84){var _0x31997c=function(_0x3d64df){while(--_0x3d64df){_0x176329['push'](_0x176329['shift']());}};_0x31997c(++_0x568c84);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 ae6fa0a..ef84f13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a5a=['moment','bluebird','path','rimraf','../../config/environment','VoiceAgentReport','report_agent','uniqueid','destuniqueid','util','../../config/logger','api'];(function(_0x262968,_0x16ae30){var _0x371519=function(_0x2220a7){while(--_0x2220a7){_0x262968['push'](_0x262968['shift']());}};_0x371519(++_0x16ae30);}(_0x5a5a,0x1d1));var _0xa5a5=function(_0x17ebb6,_0x465af7){_0x17ebb6=_0x17ebb6-0x0;var _0x32ec22=_0x5a5a[_0x17ebb6];return _0x32ec22;};'use strict';var _=require('lodash');var util=require(_0xa5a5('0x0'));var logger=require(_0xa5a5('0x1'))(_0xa5a5('0x2'));var moment=require(_0xa5a5('0x3'));var BPromise=require(_0xa5a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa5a5('0x5'));var rimraf=require(_0xa5a5('0x6'));var config=require(_0xa5a5('0x7'));var attributes=require('./voiceAgentReport.attributes');module['exports']=function(_0x43943d,_0x1fe96d){return _0x43943d['define'](_0xa5a5('0x8'),attributes,{'tableName':_0xa5a5('0x9'),'paranoid':![],'indexes':[{'fields':[_0xa5a5('0xa'),_0xa5a5('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9879=['../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','report_agent','uniqueid','destuniqueid','lodash','util'];(function(_0x11ec6c,_0x1a8169){var _0xb59506=function(_0x58e31d){while(--_0x58e31d){_0x11ec6c['push'](_0x11ec6c['shift']());}};_0xb59506(++_0x1a8169);}(_0x9879,0x98));var _0x9987=function(_0x251a99,_0x10a98b){_0x251a99=_0x251a99-0x0;var _0x595395=_0x9879[_0x251a99];return _0x595395;};'use strict';var _=require(_0x9987('0x0'));var util=require(_0x9987('0x1'));var logger=require(_0x9987('0x2'))('api');var moment=require(_0x9987('0x3'));var BPromise=require('bluebird');var rp=require(_0x9987('0x4'));var fs=require('fs');var path=require(_0x9987('0x5'));var rimraf=require(_0x9987('0x6'));var config=require(_0x9987('0x7'));var attributes=require(_0x9987('0x8'));module[_0x9987('0x9')]=function(_0x4258df,_0x4d479d){return _0x4258df[_0x9987('0xa')]('VoiceAgentReport',attributes,{'tableName':_0x9987('0xb'),'paranoid':![],'indexes':[{'fields':[_0x9987('0xc'),_0x9987('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 6c862af..fe5c758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdcb=['http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateVoiceAgentReport','create','body','options','raw','stringify','UpdateVoiceAgentReport','VoiceAgentReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4d343c,_0xad6e03){var _0x2b660d=function(_0x153b12){while(--_0x153b12){_0x4d343c['push'](_0x4d343c['shift']());}};_0x2b660d(++_0xad6e03);}(_0xcdcb,0xad));var _0xbcdc=function(_0x2b461a,_0x230a08){_0x2b461a=_0x2b461a-0x0;var _0x2e1dcb=_0xcdcb[_0x2b461a];return _0x2e1dcb;};'use strict';var _=require(_0xbcdc('0x0'));var util=require(_0xbcdc('0x1'));var moment=require('moment');var BPromise=require(_0xbcdc('0x2'));var rs=require(_0xbcdc('0x3'));var fs=require('fs');var Redis=require(_0xbcdc('0x4'));var db=require(_0xbcdc('0x5'))['db'];var utils=require(_0xbcdc('0x6'));var logger=require(_0xbcdc('0x7'))(_0xbcdc('0x8'));var config=require(_0xbcdc('0x9'));var jayson=require(_0xbcdc('0xa'));var client=jayson[_0xbcdc('0xb')][_0xbcdc('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5ad64f,_0xb95ffd,_0x5f2448){return new BPromise(function(_0xf5faf,_0x274a05){return client[_0xbcdc('0xd')](_0x5ad64f,_0x5f2448)[_0xbcdc('0xe')](function(_0x25e746){logger[_0xbcdc('0xf')](_0xbcdc('0x10'),_0xb95ffd,_0xbcdc('0x11'));logger[_0xbcdc('0x12')](_0xbcdc('0x13'),_0xb95ffd,_0xbcdc('0x11'),JSON['stringify'](_0x25e746));if(_0x25e746['error']){if(_0x25e746[_0xbcdc('0x14')][_0xbcdc('0x15')]===0x1f4){logger['error'](_0xbcdc('0x10'),_0xb95ffd,_0x25e746[_0xbcdc('0x14')]['message']);return _0x274a05(_0x25e746[_0xbcdc('0x14')][_0xbcdc('0x16')]);}logger[_0xbcdc('0x14')](_0xbcdc('0x10'),_0xb95ffd,_0x25e746['error']['message']);return _0xf5faf(_0x25e746['error'][_0xbcdc('0x16')]);}else{logger[_0xbcdc('0xf')](_0xbcdc('0x10'),_0xb95ffd,_0xbcdc('0x11'));_0xf5faf(_0x25e746[_0xbcdc('0x17')][_0xbcdc('0x16')]);}})[_0xbcdc('0x18')](function(_0x8930d3){logger[_0xbcdc('0x14')](_0xbcdc('0x10'),_0xb95ffd,_0x8930d3);_0x274a05(_0x8930d3);});});}exports[_0xbcdc('0x19')]=function(_0x4b6a84){var _0x2e4fb9=this;return new Promise(function(_0x2fa5e3,_0x7eb136){return db['VoiceAgentReport'][_0xbcdc('0x1a')](_0x4b6a84[_0xbcdc('0x1b')],{'raw':_0x4b6a84[_0xbcdc('0x1c')]?_0x4b6a84[_0xbcdc('0x1c')][_0xbcdc('0x1d')]===undefined?!![]:![]:!![]})[_0xbcdc('0xe')](function(_0x53d476){logger[_0xbcdc('0xf')](_0xbcdc('0x19'),_0x4b6a84);logger['debug']('CreateVoiceAgentReport',_0x4b6a84,JSON[_0xbcdc('0x1e')](_0x53d476));_0x2fa5e3(_0x53d476);})[_0xbcdc('0x18')](function(_0x5f5d1a){logger['error'](_0xbcdc('0x19'),_0x5f5d1a[_0xbcdc('0x16')],_0x4b6a84);_0x7eb136(_0x2e4fb9['error'](0x1f4,_0x5f5d1a[_0xbcdc('0x16')]));});});};exports[_0xbcdc('0x1f')]=function(_0x20a156){var _0x42d345=this;return new Promise(function(_0x2d7264,_0x316e01){return db[_0xbcdc('0x20')][_0xbcdc('0x21')](_0x20a156['body'],{'raw':_0x20a156[_0xbcdc('0x1c')]?_0x20a156[_0xbcdc('0x1c')][_0xbcdc('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20a156['options']?_0x20a156[_0xbcdc('0x1c')][_0xbcdc('0x22')]||null:null,'attributes':_0x20a156[_0xbcdc('0x1c')]?_0x20a156[_0xbcdc('0x1c')][_0xbcdc('0x23')]||null:null,'limit':_0x20a156[_0xbcdc('0x1c')]?_0x20a156[_0xbcdc('0x1c')][_0xbcdc('0x24')]||null:null})[_0xbcdc('0xe')](function(_0x2af56d){logger[_0xbcdc('0xf')](_0xbcdc('0x1f'),_0x20a156);logger[_0xbcdc('0x12')]('UpdateVoiceAgentReport',_0x20a156,JSON[_0xbcdc('0x1e')](_0x2af56d));_0x2d7264(_0x2af56d);})[_0xbcdc('0x18')](function(_0x160a29){logger[_0xbcdc('0x14')](_0xbcdc('0x1f'),_0x160a29[_0xbcdc('0x16')],_0x20a156);_0x316e01(_0x42d345[_0xbcdc('0x14')](0x1f4,_0x160a29[_0xbcdc('0x16')]));});});};
\ No newline at end of file
+var _0x2c25=['create','options','raw','catch','UpdateVoiceAgentReport','VoiceAgentReport','update','body','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','CreateVoiceAgentReport'];(function(_0x1b82cc,_0x151cf3){var _0x12b938=function(_0x31611d){while(--_0x31611d){_0x1b82cc['push'](_0x1b82cc['shift']());}};_0x12b938(++_0x151cf3);}(_0x2c25,0x1b8));var _0x52c2=function(_0x291aaf,_0x4c6d8d){_0x291aaf=_0x291aaf-0x0;var _0x5571e6=_0x2c25[_0x291aaf];return _0x5571e6;};'use strict';var _=require(_0x52c2('0x0'));var util=require(_0x52c2('0x1'));var moment=require(_0x52c2('0x2'));var BPromise=require(_0x52c2('0x3'));var rs=require(_0x52c2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x52c2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x52c2('0x6'))(_0x52c2('0x7'));var config=require(_0x52c2('0x8'));var jayson=require(_0x52c2('0x9'));var client=jayson['client'][_0x52c2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc14953,_0x673a20,_0x37e50c){return new BPromise(function(_0x555554,_0x1c0149){return client[_0x52c2('0xb')](_0xc14953,_0x37e50c)[_0x52c2('0xc')](function(_0x458c17){logger[_0x52c2('0xd')](_0x52c2('0xe'),_0x673a20,_0x52c2('0xf'));logger[_0x52c2('0x10')](_0x52c2('0x11'),_0x673a20,_0x52c2('0xf'),JSON[_0x52c2('0x12')](_0x458c17));if(_0x458c17[_0x52c2('0x13')]){if(_0x458c17[_0x52c2('0x13')]['code']===0x1f4){logger[_0x52c2('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x673a20,_0x458c17[_0x52c2('0x13')][_0x52c2('0x14')]);return _0x1c0149(_0x458c17[_0x52c2('0x13')]['message']);}logger[_0x52c2('0x13')](_0x52c2('0xe'),_0x673a20,_0x458c17[_0x52c2('0x13')]['message']);return _0x555554(_0x458c17[_0x52c2('0x13')][_0x52c2('0x14')]);}else{logger[_0x52c2('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x673a20,_0x52c2('0xf'));_0x555554(_0x458c17['result'][_0x52c2('0x14')]);}})['catch'](function(_0x2a55c4){logger[_0x52c2('0x13')](_0x52c2('0xe'),_0x673a20,_0x2a55c4);_0x1c0149(_0x2a55c4);});});}exports[_0x52c2('0x15')]=function(_0x34c41){var _0x26aa5b=this;return new Promise(function(_0x47945c,_0x2308d0){return db['VoiceAgentReport'][_0x52c2('0x16')](_0x34c41['body'],{'raw':_0x34c41[_0x52c2('0x17')]?_0x34c41[_0x52c2('0x17')][_0x52c2('0x18')]===undefined?!![]:![]:!![]})[_0x52c2('0xc')](function(_0x2c8f63){logger[_0x52c2('0xd')](_0x52c2('0x15'),_0x34c41);logger['debug'](_0x52c2('0x15'),_0x34c41,JSON[_0x52c2('0x12')](_0x2c8f63));_0x47945c(_0x2c8f63);})[_0x52c2('0x19')](function(_0x423800){logger[_0x52c2('0x13')](_0x52c2('0x15'),_0x423800[_0x52c2('0x14')],_0x34c41);_0x2308d0(_0x26aa5b[_0x52c2('0x13')](0x1f4,_0x423800['message']));});});};exports[_0x52c2('0x1a')]=function(_0x3e39b){var _0x4025c0=this;return new Promise(function(_0x1b6f74,_0x646b4b){return db[_0x52c2('0x1b')][_0x52c2('0x1c')](_0x3e39b[_0x52c2('0x1d')],{'raw':_0x3e39b[_0x52c2('0x17')]?_0x3e39b['options'][_0x52c2('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e39b[_0x52c2('0x17')]?_0x3e39b['options'][_0x52c2('0x1e')]||null:null,'attributes':_0x3e39b[_0x52c2('0x17')]?_0x3e39b[_0x52c2('0x17')][_0x52c2('0x1f')]||null:null,'limit':_0x3e39b['options']?_0x3e39b[_0x52c2('0x17')][_0x52c2('0x20')]||null:null})[_0x52c2('0xc')](function(_0x27edfb){logger[_0x52c2('0xd')](_0x52c2('0x1a'),_0x3e39b);logger[_0x52c2('0x10')](_0x52c2('0x1a'),_0x3e39b,JSON['stringify'](_0x27edfb));_0x1b6f74(_0x27edfb);})['catch'](function(_0x23d72a){logger[_0x52c2('0x13')](_0x52c2('0x1a'),_0x23d72a['message'],_0x3e39b);_0x646b4b(_0x4025c0[_0x52c2('0x13')](0x1f4,_0x23d72a[_0x52c2('0x14')]));});});};
\ No newline at end of file
index 30c2ef6..d975958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['/:id','show','post','isAuthenticated','create','put','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','/describe','describe'];(function(_0x22bdd3,_0x552e50){var _0x44d9d9=function(_0x2b4ab9){while(--_0x2b4ab9){_0x22bdd3['push'](_0x22bdd3['shift']());}};_0x44d9d9(++_0x552e50);}(_0x207c,0x1e8));var _0xc207=function(_0x42d35d,_0x33e6fc){_0x42d35d=_0x42d35d-0x0;var _0x445dbc=_0x207c[_0x42d35d];return _0x445dbc;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./voiceCallReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc207('0x8')]);router[_0xc207('0x9')](_0xc207('0xa'),auth['isAuthenticated'](),controller[_0xc207('0xb')]);router[_0xc207('0x9')](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0xd')]);router[_0xc207('0xe')]('/',auth[_0xc207('0xf')](),controller[_0xc207('0x10')]);router[_0xc207('0x11')](_0xc207('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0x12')]);module[_0xc207('0x13')]=router;
\ No newline at end of file
+var _0x5c12=['./voiceCallReport.controller','isAuthenticated','index','get','describe','/:id','show','create','put','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x5c12,0x188));var _0x25c1=function(_0x2a4095,_0x13f4f0){_0x2a4095=_0x2a4095-0x0;var _0x52eeab=_0x5c12[_0x2a4095];return _0x52eeab;};'use strict';var multer=require('multer');var util=require(_0x25c1('0x0'));var path=require(_0x25c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x25c1('0x2'));var router=express[_0x25c1('0x3')]();var fs_extra=require(_0x25c1('0x4'));var auth=require(_0x25c1('0x5'));var interaction=require(_0x25c1('0x6'));var config=require(_0x25c1('0x7'));var controller=require(_0x25c1('0x8'));router['get']('/',auth[_0x25c1('0x9')](),controller[_0x25c1('0xa')]);router[_0x25c1('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x25c1('0xc')]);router[_0x25c1('0xb')](_0x25c1('0xd'),auth[_0x25c1('0x9')](),controller[_0x25c1('0xe')]);router['post']('/',auth[_0x25c1('0x9')](),controller[_0x25c1('0xf')]);router[_0x25c1('0x10')](_0x25c1('0xd'),auth[_0x25c1('0x9')](),controller['update']);router[_0x25c1('0x11')](_0x25c1('0xd'),auth['isAuthenticated'](),controller[_0x25c1('0x12')]);module[_0x25c1('0x13')]=router;
\ No newline at end of file
index 6adb61b..f860d0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ffe=['internal','inbound-fax','outbound-fax','TEXT','DATE','INTEGER','exports','STRING','ENUM','inbound'];(function(_0x462999,_0x24d200){var _0x4b1366=function(_0x1fa353){while(--_0x1fa353){_0x462999['push'](_0x462999['shift']());}};_0x4b1366(++_0x24d200);}(_0x2ffe,0x6a));var _0xe2ff=function(_0x2bbe4a,_0x4f6850){_0x2bbe4a=_0x2bbe4a-0x0;var _0x5ef3cb=_0x2ffe[_0x2bbe4a];return _0x5ef3cb;};'use strict';var Sequelize=require('sequelize');module[_0xe2ff('0x0')]={'uniqueid':{'type':Sequelize[_0xe2ff('0x1')]},'type':{'type':Sequelize[_0xe2ff('0x2')](_0xe2ff('0x3'),_0xe2ff('0x4'),'outbound',_0xe2ff('0x5'),_0xe2ff('0x6'),'dialer')},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xe2ff('0x1')]},'source':{'type':Sequelize[_0xe2ff('0x1')]},'destination':{'type':Sequelize[_0xe2ff('0x1')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xe2ff('0x1')]},'channel':{'type':Sequelize[_0xe2ff('0x1')]},'destinationchannel':{'type':Sequelize[_0xe2ff('0x1')]},'lastapplication':{'type':Sequelize[_0xe2ff('0x1')]},'lastdata':{'type':Sequelize[_0xe2ff('0x7')]},'starttime':{'type':Sequelize[_0xe2ff('0x8')]},'systemanswertime':{'type':Sequelize[_0xe2ff('0x8')]},'answertime':{'type':Sequelize[_0xe2ff('0x8')]},'endtime':{'type':Sequelize[_0xe2ff('0x8')]},'duration':{'type':Sequelize[_0xe2ff('0x9')]},'billableseconds':{'type':Sequelize[_0xe2ff('0x9')]},'mohtime':{'type':Sequelize[_0xe2ff('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xe2ff('0x1')]},'amaflags':{'type':Sequelize[_0xe2ff('0x1')]},'userfield':{'type':Sequelize[_0xe2ff('0x1')]},'userDisposition':{'type':Sequelize[_0xe2ff('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xe2ff('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xe2ff('0x1')]},'prefix':{'type':Sequelize[_0xe2ff('0x1')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0xe2ff('0x1')]}};
\ No newline at end of file
+var _0x0d90=['outbound','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','inbound','internal'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x0d90,0xa0));var _0x00d9=function(_0x33d371,_0x592416){_0x33d371=_0x33d371-0x0;var _0x6a7836=_0x0d90[_0x33d371];return _0x6a7836;};'use strict';var Sequelize=require(_0x00d9('0x0'));module[_0x00d9('0x1')]={'uniqueid':{'type':Sequelize[_0x00d9('0x2')]},'type':{'type':Sequelize['ENUM'](_0x00d9('0x3'),_0x00d9('0x4'),_0x00d9('0x5'),'inbound-fax',_0x00d9('0x6'),_0x00d9('0x7'))},'tag':{'type':Sequelize[_0x00d9('0x2')]},'accountcode':{'type':Sequelize[_0x00d9('0x2')]},'source':{'type':Sequelize[_0x00d9('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x00d9('0x2')]},'callerid':{'type':Sequelize[_0x00d9('0x2')]},'channel':{'type':Sequelize[_0x00d9('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x00d9('0x2')]},'lastdata':{'type':Sequelize[_0x00d9('0x8')]},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x00d9('0x9')]},'answertime':{'type':Sequelize[_0x00d9('0x9')]},'endtime':{'type':Sequelize[_0x00d9('0x9')]},'duration':{'type':Sequelize[_0x00d9('0xa')]},'billableseconds':{'type':Sequelize[_0x00d9('0xa')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x00d9('0x2')]},'amaflags':{'type':Sequelize[_0x00d9('0x2')]},'userfield':{'type':Sequelize[_0x00d9('0x2')]},'userDisposition':{'type':Sequelize[_0x00d9('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x00d9('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x00d9('0x2')]},'note':{'type':Sequelize[_0x00d9('0x2')]},'prefix':{'type':Sequelize[_0x00d9('0x2')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 658bcc3..f2abedc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x596c43,_0x28647a){var _0x4e1315=function(_0x58e910){while(--_0x58e910){_0x596c43['push'](_0x596c43['shift']());}};_0x4e1315(++_0x28647a);}(_0xadb5,0xad));var _0x5adb=function(_0x35fd04,_0x568ab7){_0x35fd04=_0x35fd04-0x0;var _0x182457=_0xadb5[_0x35fd04];return _0x182457;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
+var _0x0b0e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','VoiceCallReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','fullname','alias','User','findAll','rows','params','find','create','body','catch','describe','update','uniqueid','user','eml-format','zip-dir','request-promise','moment'];(function(_0x18648d,_0xf8f11a){var _0x43efb2=function(_0x3fe1d4){while(--_0x3fe1d4){_0x18648d['push'](_0x18648d['shift']());}};_0x43efb2(++_0xf8f11a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x3e0b8f,_0x1cddeb){_0x3e0b8f=_0x3e0b8f-0x0;var _0x22f742=_0x0b0e[_0x3e0b8f];return _0x22f742;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['VoiceCallReport'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'attributes':['id',_0xe0b0('0x27'),_0xe0b0('0x41'),_0xe0b0('0x42')],'model':db[_0xe0b0('0x43')],'as':_0xe0b0('0x43')}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x44')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x52ffe4){_0x36d137[_0xe0b0('0x45')]=_0x52ffe4;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))['catch'](handleError(_0x5b7a64,null));};exports['show']=function(_0x327fb4,_0x247f8d){var _0x56e7df={'raw':!![],'where':{'id':_0x327fb4[_0xe0b0('0x46')]['id']}},_0x18a59d={};_0x18a59d[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db[_0xe0b0('0x2a')]['rawAttributes']);_0x18a59d['query']=_['keys'](_0x327fb4[_0xe0b0('0x2e')]);_0x18a59d[_0xe0b0('0x39')]=_['intersection'](_0x18a59d[_0xe0b0('0x31')],_0x18a59d[_0xe0b0('0x2e')]);_0x56e7df[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x18a59d[_0xe0b0('0x31')],qs['fields'](_0x327fb4['query'][_0xe0b0('0x33')]));_0x56e7df[_0xe0b0('0x32')]=_0x56e7df[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x56e7df[_0xe0b0('0x32')]:_0x18a59d['model'];if(_0x327fb4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x56e7df['include']=[{'all':!![]}];}_0x56e7df=_['merge']({},_0x56e7df,_0x327fb4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x47')](_0x56e7df)[_0xe0b0('0x23')](handleEntityNotFound(_0x247f8d,null))[_0xe0b0('0x23')](respondWithResult(_0x247f8d,null))['catch'](handleError(_0x247f8d,null));};exports[_0xe0b0('0x48')]=function(_0x87d8f3,_0x483f12){return db['VoiceCallReport'][_0xe0b0('0x48')](_0x87d8f3[_0xe0b0('0x49')],{})['then'](respondWithResult(_0x483f12,0xc9))[_0xe0b0('0x4a')](handleError(_0x483f12,null));};exports[_0xe0b0('0x24')]=function(_0x504284,_0x5cb2b6){return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x504284[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5cb2b6,null))[_0xe0b0('0x23')](removeEntity(_0x5cb2b6,null))[_0xe0b0('0x4a')](handleError(_0x5cb2b6,null));};exports[_0xe0b0('0x4b')]=function(_0xf9e694,_0x5f5486){return db['VoiceCallReport'][_0xe0b0('0x4b')]()['then'](respondWithResult(_0x5f5486,null))['catch'](handleError(_0x5f5486,null));};exports[_0xe0b0('0x4c')]=function(_0x222174,_0x54cf7b){if(_0x222174['body'][_0xe0b0('0x4d')]){delete _0x222174[_0xe0b0('0x49')][_0xe0b0('0x4d')];}return db[_0xe0b0('0x2a')][_0xe0b0('0x47')]({'where':{'uniqueid':_0x222174[_0xe0b0('0x46')]['id'],'UserId':{'$or':[null,_0x222174[_0xe0b0('0x4e')]['id']]}}})['then'](handleEntityNotFound(_0x54cf7b,null))[_0xe0b0('0x23')](saveUpdates(_0x222174['body'],null))[_0xe0b0('0x23')](respondWithResult(_0x54cf7b,null))['catch'](handleError(_0x54cf7b,null));};
\ No newline at end of file
index 7d7e4d5..3586c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1622=['report_call','uniqueid','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1622,0x115));var _0x2162=function(_0x1706f5,_0xdcebbd){_0x1706f5=_0x1706f5-0x0;var _0x1b6ce4=_0x1622[_0x1706f5];return _0x1b6ce4;};'use strict';var _=require(_0x2162('0x0'));var util=require(_0x2162('0x1'));var logger=require(_0x2162('0x2'))(_0x2162('0x3'));var moment=require(_0x2162('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2162('0x5'));var rimraf=require(_0x2162('0x6'));var config=require(_0x2162('0x7'));var attributes=require('./voiceCallReport.attributes');module['exports']=function(_0x4f5311,_0x494833){return _0x4f5311[_0x2162('0x8')]('VoiceCallReport',attributes,{'tableName':_0x2162('0x9'),'paranoid':![],'indexes':[{'fields':[_0x2162('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf1b1=['VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define'];(function(_0x48460d,_0x139a6f){var _0x116d42=function(_0x3400a6){while(--_0x3400a6){_0x48460d['push'](_0x48460d['shift']());}};_0x116d42(++_0x139a6f);}(_0xf1b1,0x189));var _0x1f1b=function(_0x2cdf41,_0x4a277c){_0x2cdf41=_0x2cdf41-0x0;var _0x39a70e=_0xf1b1[_0x2cdf41];return _0x39a70e;};'use strict';var _=require(_0x1f1b('0x0'));var util=require(_0x1f1b('0x1'));var logger=require(_0x1f1b('0x2'))(_0x1f1b('0x3'));var moment=require('moment');var BPromise=require(_0x1f1b('0x4'));var rp=require(_0x1f1b('0x5'));var fs=require('fs');var path=require(_0x1f1b('0x6'));var rimraf=require(_0x1f1b('0x7'));var config=require(_0x1f1b('0x8'));var attributes=require(_0x1f1b('0x9'));module[_0x1f1b('0xa')]=function(_0x52760f,_0x38d106){return _0x52760f[_0x1f1b('0xb')](_0x1f1b('0xc'),attributes,{'tableName':_0x1f1b('0xd'),'paranoid':![],'indexes':[{'fields':[_0x1f1b('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 5a8859e..6cbbab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5367=['limit','map','include','model','then','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes'];(function(_0xb6e4c,_0x42e3bf){var _0x83e9ae=function(_0x5114f3){while(--_0x5114f3){_0xb6e4c['push'](_0xb6e4c['shift']());}};_0x83e9ae(++_0x42e3bf);}(_0x5367,0x1ae));var _0x7536=function(_0x3b0523,_0x3637d6){_0x3b0523=_0x3b0523-0x0;var _0x15996c=_0x5367[_0x3b0523];return _0x15996c;};'use strict';var _=require(_0x7536('0x0'));var util=require(_0x7536('0x1'));var moment=require(_0x7536('0x2'));var BPromise=require(_0x7536('0x3'));var rs=require(_0x7536('0x4'));var fs=require('fs');var Redis=require(_0x7536('0x5'));var db=require(_0x7536('0x6'))['db'];var utils=require(_0x7536('0x7'));var logger=require(_0x7536('0x8'))(_0x7536('0x9'));var config=require(_0x7536('0xa'));var jayson=require(_0x7536('0xb'));var client=jayson[_0x7536('0xc')][_0x7536('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1ebb28,_0xb29a1c,_0x319b03){return new BPromise(function(_0x457c19,_0x26c157){return client[_0x7536('0xe')](_0x1ebb28,_0x319b03)['then'](function(_0x25b8c6){logger[_0x7536('0xf')](_0x7536('0x10'),_0xb29a1c,'request\x20sent');logger[_0x7536('0x11')](_0x7536('0x12'),_0xb29a1c,_0x7536('0x13'),JSON[_0x7536('0x14')](_0x25b8c6));if(_0x25b8c6[_0x7536('0x15')]){if(_0x25b8c6['error']['code']===0x1f4){logger[_0x7536('0x15')](_0x7536('0x10'),_0xb29a1c,_0x25b8c6[_0x7536('0x15')][_0x7536('0x16')]);return _0x26c157(_0x25b8c6[_0x7536('0x15')]['message']);}logger['error'](_0x7536('0x10'),_0xb29a1c,_0x25b8c6['error'][_0x7536('0x16')]);return _0x457c19(_0x25b8c6['error'][_0x7536('0x16')]);}else{logger[_0x7536('0xf')](_0x7536('0x10'),_0xb29a1c,_0x7536('0x13'));_0x457c19(_0x25b8c6[_0x7536('0x17')][_0x7536('0x16')]);}})[_0x7536('0x18')](function(_0x28b6c4){logger[_0x7536('0x15')](_0x7536('0x10'),_0xb29a1c,_0x28b6c4);_0x26c157(_0x28b6c4);});});}exports[_0x7536('0x19')]=function(_0x3db75d){var _0x1321da=this;return new Promise(function(_0xb2452a,_0x53640c){return db[_0x7536('0x1a')][_0x7536('0x1b')]({'raw':_0x3db75d[_0x7536('0x1c')]?_0x3db75d[_0x7536('0x1c')][_0x7536('0x1d')]===undefined?!![]:![]:!![],'where':_0x3db75d[_0x7536('0x1c')]?_0x3db75d[_0x7536('0x1c')][_0x7536('0x1e')]||null:null,'attributes':_0x3db75d[_0x7536('0x1c')]?_0x3db75d['options'][_0x7536('0x1f')]||null:null,'limit':_0x3db75d['options']?_0x3db75d[_0x7536('0x1c')][_0x7536('0x20')]||null:null,'include':_0x3db75d[_0x7536('0x1c')]?_0x3db75d[_0x7536('0x1c')]['include']?_[_0x7536('0x21')](_0x3db75d[_0x7536('0x1c')][_0x7536('0x22')],function(_0x4c8708){return{'model':db[_0x4c8708[_0x7536('0x23')]],'as':_0x4c8708['as'],'attributes':_0x4c8708[_0x7536('0x1f')],'include':_0x4c8708['include']?_['map'](_0x4c8708[_0x7536('0x22')],function(_0x34d594){return{'model':db[_0x34d594[_0x7536('0x23')]],'as':_0x34d594['as'],'attributes':_0x34d594[_0x7536('0x1f')],'include':_0x34d594['include']?_[_0x7536('0x21')](_0x34d594[_0x7536('0x22')],function(_0x3773d1){return{'model':db[_0x3773d1[_0x7536('0x23')]],'as':_0x3773d1['as'],'attributes':_0x3773d1[_0x7536('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7536('0x24')](function(_0xf0cbc5){logger[_0x7536('0xf')](_0x7536('0x19'),_0x3db75d);logger[_0x7536('0x11')](_0x7536('0x19'),_0x3db75d,JSON['stringify'](_0xf0cbc5));_0xb2452a(_0xf0cbc5);})['catch'](function(_0x3fbe09){logger['error'](_0x7536('0x19'),_0x3fbe09[_0x7536('0x16')],_0x3db75d);_0x53640c(_0x1321da[_0x7536('0x15')](0x1f4,_0x3fbe09['message']));});});};exports[_0x7536('0x25')]=function(_0x2ab426){var _0x1460a4=this;return new Promise(function(_0x1285c7,_0x36ed25){return db[_0x7536('0x1a')][_0x7536('0x26')](_0x2ab426[_0x7536('0x27')],{'raw':_0x2ab426[_0x7536('0x1c')]?_0x2ab426[_0x7536('0x1c')][_0x7536('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x40fc5d){logger[_0x7536('0xf')](_0x7536('0x25'),_0x2ab426);logger[_0x7536('0x11')](_0x7536('0x25'),_0x2ab426,JSON[_0x7536('0x14')](_0x40fc5d));_0x1285c7(_0x40fc5d);})[_0x7536('0x18')](function(_0x3a2705){logger[_0x7536('0x15')](_0x7536('0x25'),_0x3a2705[_0x7536('0x16')],_0x2ab426);_0x36ed25(_0x1460a4['error'](0x1f4,_0x3a2705[_0x7536('0x16')]));});});};exports[_0x7536('0x28')]=function(_0x3e10ad){var _0x3bfb70=this;return new Promise(function(_0x37b92d,_0x368b38){return db[_0x7536('0x1a')][_0x7536('0x29')](_0x3e10ad['body'],{'raw':_0x3e10ad[_0x7536('0x1c')]?_0x3e10ad[_0x7536('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e10ad[_0x7536('0x1c')]?_0x3e10ad['options'][_0x7536('0x1e')]||null:null,'attributes':_0x3e10ad[_0x7536('0x1c')]?_0x3e10ad[_0x7536('0x1c')][_0x7536('0x1f')]||null:null,'limit':_0x3e10ad[_0x7536('0x1c')]?_0x3e10ad[_0x7536('0x1c')][_0x7536('0x20')]||null:null})['then'](function(_0x4113cf){logger['info']('UpdateVoiceCallReport',_0x3e10ad);logger[_0x7536('0x11')](_0x7536('0x28'),_0x3e10ad,JSON[_0x7536('0x14')](_0x4113cf));_0x37b92d(_0x4113cf);})[_0x7536('0x18')](function(_0x486733){logger[_0x7536('0x15')](_0x7536('0x28'),_0x486733[_0x7536('0x16')],_0x3e10ad);_0x368b38(_0x3bfb70[_0x7536('0x15')](0x1f4,_0x486733[_0x7536('0x16')]));});});};
\ No newline at end of file
+var _0x3936=['info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','limit','include','map','model','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then'];(function(_0x4f20e5,_0x4976d0){var _0x48c5a1=function(_0x1ea217){while(--_0x1ea217){_0x4f20e5['push'](_0x4f20e5['shift']());}};_0x48c5a1(++_0x4976d0);}(_0x3936,0x1ec));var _0x6393=function(_0x2ad008,_0x45c253){_0x2ad008=_0x2ad008-0x0;var _0x4538cf=_0x3936[_0x2ad008];return _0x4538cf;};'use strict';var _=require(_0x6393('0x0'));var util=require('util');var moment=require(_0x6393('0x1'));var BPromise=require(_0x6393('0x2'));var rs=require(_0x6393('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6393('0x4'))['db'];var utils=require(_0x6393('0x5'));var logger=require(_0x6393('0x6'))(_0x6393('0x7'));var config=require(_0x6393('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6393('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1122db,_0x51b44c,_0x3ac9ee){return new BPromise(function(_0x174b07,_0x4edf1c){return client[_0x6393('0xa')](_0x1122db,_0x3ac9ee)[_0x6393('0xb')](function(_0x23bf82){logger[_0x6393('0xc')](_0x6393('0xd'),_0x51b44c,_0x6393('0xe'));logger['debug'](_0x6393('0xf'),_0x51b44c,'request\x20sent',JSON[_0x6393('0x10')](_0x23bf82));if(_0x23bf82[_0x6393('0x11')]){if(_0x23bf82[_0x6393('0x11')][_0x6393('0x12')]===0x1f4){logger['error'](_0x6393('0xd'),_0x51b44c,_0x23bf82['error']['message']);return _0x4edf1c(_0x23bf82[_0x6393('0x11')][_0x6393('0x13')]);}logger[_0x6393('0x11')](_0x6393('0xd'),_0x51b44c,_0x23bf82[_0x6393('0x11')][_0x6393('0x13')]);return _0x174b07(_0x23bf82['error'][_0x6393('0x13')]);}else{logger[_0x6393('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x51b44c,_0x6393('0xe'));_0x174b07(_0x23bf82['result'][_0x6393('0x13')]);}})[_0x6393('0x14')](function(_0xde58f5){logger['error'](_0x6393('0xd'),_0x51b44c,_0xde58f5);_0x4edf1c(_0xde58f5);});});}exports[_0x6393('0x15')]=function(_0x4e58f5){var _0x24ab0b=this;return new Promise(function(_0xde0b9c,_0x33d9c1){return db[_0x6393('0x16')][_0x6393('0x17')]({'raw':_0x4e58f5['options']?_0x4e58f5[_0x6393('0x18')][_0x6393('0x19')]===undefined?!![]:![]:!![],'where':_0x4e58f5[_0x6393('0x18')]?_0x4e58f5[_0x6393('0x18')]['where']||null:null,'attributes':_0x4e58f5[_0x6393('0x18')]?_0x4e58f5[_0x6393('0x18')][_0x6393('0x1a')]||null:null,'limit':_0x4e58f5[_0x6393('0x18')]?_0x4e58f5['options'][_0x6393('0x1b')]||null:null,'include':_0x4e58f5['options']?_0x4e58f5['options'][_0x6393('0x1c')]?_[_0x6393('0x1d')](_0x4e58f5['options'][_0x6393('0x1c')],function(_0x54cde5){return{'model':db[_0x54cde5['model']],'as':_0x54cde5['as'],'attributes':_0x54cde5[_0x6393('0x1a')],'include':_0x54cde5['include']?_['map'](_0x54cde5['include'],function(_0x5098d8){return{'model':db[_0x5098d8['model']],'as':_0x5098d8['as'],'attributes':_0x5098d8[_0x6393('0x1a')],'include':_0x5098d8[_0x6393('0x1c')]?_[_0x6393('0x1d')](_0x5098d8[_0x6393('0x1c')],function(_0x36a074){return{'model':db[_0x36a074[_0x6393('0x1e')]],'as':_0x36a074['as'],'attributes':_0x36a074[_0x6393('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33b47b){logger['info'](_0x6393('0x15'),_0x4e58f5);logger['debug'](_0x6393('0x15'),_0x4e58f5,JSON['stringify'](_0x33b47b));_0xde0b9c(_0x33b47b);})['catch'](function(_0x5105d6){logger[_0x6393('0x11')](_0x6393('0x15'),_0x5105d6[_0x6393('0x13')],_0x4e58f5);_0x33d9c1(_0x24ab0b[_0x6393('0x11')](0x1f4,_0x5105d6[_0x6393('0x13')]));});});};exports[_0x6393('0x1f')]=function(_0x1649b2){var _0x205350=this;return new Promise(function(_0x2d399c,_0x4f039b){return db['VoiceCallReport'][_0x6393('0x20')](_0x1649b2[_0x6393('0x21')],{'raw':_0x1649b2[_0x6393('0x18')]?_0x1649b2[_0x6393('0x18')][_0x6393('0x19')]===undefined?!![]:![]:!![]})[_0x6393('0xb')](function(_0x30fe6f){logger[_0x6393('0xc')](_0x6393('0x1f'),_0x1649b2);logger['debug'](_0x6393('0x1f'),_0x1649b2,JSON['stringify'](_0x30fe6f));_0x2d399c(_0x30fe6f);})[_0x6393('0x14')](function(_0x2fc64a){logger['error'](_0x6393('0x1f'),_0x2fc64a['message'],_0x1649b2);_0x4f039b(_0x205350[_0x6393('0x11')](0x1f4,_0x2fc64a[_0x6393('0x13')]));});});};exports[_0x6393('0x22')]=function(_0x5bf49c){var _0x17f2fd=this;return new Promise(function(_0x1e2c49,_0x5822f1){return db['VoiceCallReport']['update'](_0x5bf49c[_0x6393('0x21')],{'raw':_0x5bf49c[_0x6393('0x18')]?_0x5bf49c[_0x6393('0x18')][_0x6393('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bf49c[_0x6393('0x18')]?_0x5bf49c[_0x6393('0x18')]['where']||null:null,'attributes':_0x5bf49c[_0x6393('0x18')]?_0x5bf49c[_0x6393('0x18')][_0x6393('0x1a')]||null:null,'limit':_0x5bf49c['options']?_0x5bf49c[_0x6393('0x18')][_0x6393('0x1b')]||null:null})[_0x6393('0xb')](function(_0x37d2d0){logger[_0x6393('0xc')](_0x6393('0x22'),_0x5bf49c);logger[_0x6393('0x23')](_0x6393('0x22'),_0x5bf49c,JSON['stringify'](_0x37d2d0));_0x1e2c49(_0x37d2d0);})[_0x6393('0x14')](function(_0x22e971){logger[_0x6393('0x11')](_0x6393('0x22'),_0x22e971[_0x6393('0x13')],_0x5bf49c);_0x5822f1(_0x17f2fd[_0x6393('0x11')](0x1f4,_0x22e971[_0x6393('0x13')]));});});};
\ No newline at end of file
index 7e635ca..b8dfda5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97dd=['get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x97dd,0x187));var _0xd97d=function(_0x5ae8a7,_0x588a85){_0x5ae8a7=_0x5ae8a7-0x0;var _0x563275=_0x97dd[_0x5ae8a7];return _0x563275;};'use strict';var multer=require(_0xd97d('0x0'));var util=require(_0xd97d('0x1'));var path=require('path');var timeout=require(_0xd97d('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd97d('0x3'));var auth=require(_0xd97d('0x4'));var interaction=require(_0xd97d('0x5'));var config=require(_0xd97d('0x6'));var controller=require(_0xd97d('0x7'));router[_0xd97d('0x8')]('/',auth[_0xd97d('0x9')](),controller[_0xd97d('0xa')]);router[_0xd97d('0x8')](_0xd97d('0xb'),auth[_0xd97d('0x9')](),controller[_0xd97d('0xc')]);router[_0xd97d('0xd')]('/',auth[_0xd97d('0x9')](),controller[_0xd97d('0xe')]);router['put']('/:id',auth[_0xd97d('0x9')](),controller[_0xd97d('0xf')]);router[_0xd97d('0x10')](_0xd97d('0xb'),auth[_0xd97d('0x9')](),controller[_0xd97d('0x11')]);module[_0xd97d('0x12')]=router;
\ No newline at end of file
+var _0x97f5=['/:id','show','post','create','update','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index'];(function(_0x24a7c0,_0x4e2b63){var _0x3c387d=function(_0x377eb3){while(--_0x377eb3){_0x24a7c0['push'](_0x24a7c0['shift']());}};_0x3c387d(++_0x4e2b63);}(_0x97f5,0x72));var _0x597f=function(_0x219539,_0x5f0fbb){_0x219539=_0x219539-0x0;var _0x5030cd=_0x97f5[_0x219539];return _0x5030cd;};'use strict';var multer=require(_0x597f('0x0'));var util=require(_0x597f('0x1'));var path=require(_0x597f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x597f('0x3')]();var fs_extra=require(_0x597f('0x4'));var auth=require(_0x597f('0x5'));var interaction=require(_0x597f('0x6'));var config=require(_0x597f('0x7'));var controller=require(_0x597f('0x8'));router[_0x597f('0x9')]('/',auth[_0x597f('0xa')](),controller[_0x597f('0xb')]);router['get'](_0x597f('0xc'),auth[_0x597f('0xa')](),controller[_0x597f('0xd')]);router[_0x597f('0xe')]('/',auth[_0x597f('0xa')](),controller[_0x597f('0xf')]);router['put'](_0x597f('0xc'),auth[_0x597f('0xa')](),controller[_0x597f('0x10')]);router['delete']('/:id',auth[_0x597f('0xa')](),controller['destroy']);module[_0x597f('0x11')]=router;
\ No newline at end of file
index 505664e..40aa617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0e4=['STRING','name','setDataValue','getDataValue','options','split','BOOLEAN','sequelize'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xc0e4,0x1e7));var _0x4c0e=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0xc0e4[_0x382a62];return _0x490a25;};'use strict';var Sequelize=require(_0x4c0e('0x0'));module['exports']={'name':{'type':Sequelize[_0x4c0e('0x1')]},'prefix':{'type':Sequelize['STRING'],'unique':_0x4c0e('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0x4c0e('0x1')],'set':function(_0x5e61f4){this[_0x4c0e('0x3')]('options',_0x5e61f4?_0x5e61f4['join'](''):[]);},'get':function(){return this[_0x4c0e('0x4')](_0x4c0e('0x5'))?this[_0x4c0e('0x4')](_0x4c0e('0x5'))[_0x4c0e('0x6')](''):[];}},'auth':{'type':Sequelize[_0x4c0e('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x4c0e('0x1')]},'record':{'type':Sequelize[_0x4c0e('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x4c0e('0x1')]},'description':{'type':Sequelize[_0x4c0e('0x1')]}};
\ No newline at end of file
+var _0x59f2=['options','join','getDataValue','split','BOOLEAN','sequelize','exports','STRING'];(function(_0x46a825,_0x415d10){var _0x271633=function(_0x40183c){while(--_0x40183c){_0x46a825['push'](_0x46a825['shift']());}};_0x271633(++_0x415d10);}(_0x59f2,0x115));var _0x259f=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x59f2[_0x16d10f];return _0x50c823;};'use strict';var Sequelize=require(_0x259f('0x0'));module[_0x259f('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x259f('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x259f('0x2')],'set':function(_0x197837){this['setDataValue'](_0x259f('0x3'),_0x197837?_0x197837[_0x259f('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0x259f('0x3'))?this[_0x259f('0x5')](_0x259f('0x3'))[_0x259f('0x6')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x259f('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x259f('0x2')]},'description':{'type':Sequelize[_0x259f('0x2')]}};
\ No newline at end of file
index 59ca436..8f790e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca56=['moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','get','ChanSpies','UserProfileResource','end','stack','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x187b5f,_0x5b3e6a){var _0x2ec20c=function(_0x2c1a96){while(--_0x2c1a96){_0x187b5f['push'](_0x187b5f['shift']());}};_0x2ec20c(++_0x5b3e6a);}(_0xca56,0xee));var _0x6ca5=function(_0x4babfd,_0x25c72c){_0x4babfd=_0x4babfd-0x0;var _0x50e4c9=_0xca56[_0x4babfd];return _0x50e4c9;};'use strict';var emlformat=require(_0x6ca5('0x0'));var rimraf=require(_0x6ca5('0x1'));var zipdir=require(_0x6ca5('0x2'));var jsonpatch=require(_0x6ca5('0x3'));var rp=require(_0x6ca5('0x4'));var moment=require(_0x6ca5('0x5'));var BPromise=require(_0x6ca5('0x6'));var Mustache=require(_0x6ca5('0x7'));var util=require(_0x6ca5('0x8'));var path=require('path');var sox=require(_0x6ca5('0x9'));var csv=require(_0x6ca5('0xa'));var ejs=require(_0x6ca5('0xb'));var fs=require('fs');var fs_extra=require(_0x6ca5('0xc'));var _=require('lodash');var squel=require(_0x6ca5('0xd'));var crypto=require(_0x6ca5('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6ca5('0xa'));var querystring=require(_0x6ca5('0xf'));var Papa=require(_0x6ca5('0x10'));var Redis=require(_0x6ca5('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6ca5('0x12'));var hardwareService=require(_0x6ca5('0x13'));var logger=require(_0x6ca5('0x14'))(_0x6ca5('0x15'));var utils=require(_0x6ca5('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6ca5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2eb3b9,_0x4fb08b){_0x4fb08b=_0x4fb08b||0xcc;return function(_0x5dd594){if(_0x5dd594){return _0x2eb3b9[_0x6ca5('0x18')](_0x4fb08b);}return _0x2eb3b9['status'](_0x4fb08b)['end']();};}function respondWithResult(_0x2a35cf,_0x428419){_0x428419=_0x428419||0xc8;return function(_0x5ba653){if(_0x5ba653){return _0x2a35cf[_0x6ca5('0x19')](_0x428419)[_0x6ca5('0x1a')](_0x5ba653);}};}function respondWithFilteredResult(_0x491a95,_0x40483f){return function(_0x19debd){if(_0x19debd){var _0x1cdfdc=typeof _0x40483f[_0x6ca5('0x1b')]===_0x6ca5('0x1c')&&typeof _0x40483f['limit']===_0x6ca5('0x1c');var _0x38f3db=_0x19debd['count'];var _0x2b3daf=_0x1cdfdc?0x0:_0x40483f[_0x6ca5('0x1b')];var _0x4fefd0=_0x1cdfdc?_0x19debd[_0x6ca5('0x1d')]:_0x40483f[_0x6ca5('0x1b')]+_0x40483f[_0x6ca5('0x1e')];var _0x37e362;if(_0x4fefd0>=_0x38f3db){_0x4fefd0=_0x38f3db;_0x37e362=0xc8;}else{_0x37e362=0xce;}_0x491a95[_0x6ca5('0x19')](_0x37e362);return _0x491a95[_0x6ca5('0x1f')]('Content-Range',_0x2b3daf+'-'+_0x4fefd0+'/'+_0x38f3db)[_0x6ca5('0x1a')](_0x19debd);}return null;};}function patchUpdates(_0xc7c1cb){return function(_0x44df63){try{jsonpatch[_0x6ca5('0x20')](_0x44df63,_0xc7c1cb,!![]);}catch(_0x11fe18){return BPromise[_0x6ca5('0x21')](_0x11fe18);}return _0x44df63[_0x6ca5('0x22')]();};}function saveUpdates(_0x1f8119,_0x23c16b){return function(_0x324881){if(_0x324881){return _0x324881[_0x6ca5('0x23')](_0x1f8119)[_0x6ca5('0x24')](function(_0x3754f5){return _0x3754f5;});}return null;};}function removeEntity(_0x1a23f2,_0x18967e){return function(_0x4e2f36){if(_0x4e2f36){return _0x4e2f36[_0x6ca5('0x25')]()[_0x6ca5('0x24')](function(){var _0x1a7b0f=_0x4e2f36[_0x6ca5('0x26')]({'plain':!![]});var _0x553930=_0x6ca5('0x27');return db[_0x6ca5('0x28')][_0x6ca5('0x25')]({'where':{'type':_0x553930,'resourceId':_0x1a7b0f['id']}})[_0x6ca5('0x24')](function(){return _0x4e2f36;});})[_0x6ca5('0x24')](function(){_0x1a23f2[_0x6ca5('0x19')](0xcc)[_0x6ca5('0x29')]();});}};}function handleEntityNotFound(_0x4934b3,_0x3194df){return function(_0x405979){if(!_0x405979){_0x4934b3[_0x6ca5('0x18')](0x194);}return _0x405979;};}function handleError(_0x150f54,_0x2ce970){_0x2ce970=_0x2ce970||0x1f4;return function(_0x1b1ee9){logger['error'](_0x1b1ee9[_0x6ca5('0x2a')]);if(_0x1b1ee9[_0x6ca5('0x2b')]){delete _0x1b1ee9[_0x6ca5('0x2b')];}_0x150f54[_0x6ca5('0x19')](_0x2ce970)[_0x6ca5('0x2c')](_0x1b1ee9);};}exports[_0x6ca5('0x2d')]=function(_0x441436,_0x451c2d){var _0x360172={},_0x1d6420={},_0x3e30c5={'count':0x0,'rows':[]};var _0x2230d4=_[_0x6ca5('0x2e')](db[_0x6ca5('0x2f')][_0x6ca5('0x30')],function(_0x539454){return{'name':_0x539454[_0x6ca5('0x31')],'type':_0x539454[_0x6ca5('0x32')][_0x6ca5('0x33')]};});_0x1d6420[_0x6ca5('0x34')]=_['map'](_0x2230d4,_0x6ca5('0x2b'));_0x1d6420['query']=_[_0x6ca5('0x35')](_0x441436[_0x6ca5('0x36')]);_0x1d6420[_0x6ca5('0x37')]=_[_0x6ca5('0x38')](_0x1d6420['model'],_0x1d6420[_0x6ca5('0x36')]);_0x360172[_0x6ca5('0x39')]=_[_0x6ca5('0x38')](_0x1d6420[_0x6ca5('0x34')],qs[_0x6ca5('0x3a')](_0x441436[_0x6ca5('0x36')][_0x6ca5('0x3a')]));_0x360172[_0x6ca5('0x39')]=_0x360172[_0x6ca5('0x39')]['length']?_0x360172[_0x6ca5('0x39')]:_0x1d6420[_0x6ca5('0x34')];if(!_0x441436[_0x6ca5('0x36')]['hasOwnProperty'](_0x6ca5('0x3b'))){_0x360172[_0x6ca5('0x1e')]=qs[_0x6ca5('0x1e')](_0x441436[_0x6ca5('0x36')]['limit']);_0x360172[_0x6ca5('0x1b')]=qs[_0x6ca5('0x1b')](_0x441436[_0x6ca5('0x36')][_0x6ca5('0x1b')]);}_0x360172[_0x6ca5('0x3c')]=qs['sort'](_0x441436[_0x6ca5('0x36')][_0x6ca5('0x3d')]);_0x360172[_0x6ca5('0x3e')]=qs[_0x6ca5('0x37')](_['pick'](_0x441436[_0x6ca5('0x36')],_0x1d6420[_0x6ca5('0x37')]),_0x2230d4);if(_0x441436[_0x6ca5('0x36')]['filter']){_0x360172[_0x6ca5('0x3e')]=_[_0x6ca5('0x3f')](_0x360172[_0x6ca5('0x3e')],{'$or':_[_0x6ca5('0x2e')](_0x2230d4,function(_0x525a0c){if(_0x525a0c[_0x6ca5('0x32')]!==_0x6ca5('0x40')){var _0x4de588={};_0x4de588[_0x525a0c[_0x6ca5('0x2b')]]={'$like':'%'+_0x441436[_0x6ca5('0x36')][_0x6ca5('0x41')]+'%'};return _0x4de588;}})});}_0x360172=_[_0x6ca5('0x3f')]({},_0x360172,_0x441436[_0x6ca5('0x42')]);var _0x10f1cd={'where':_0x360172[_0x6ca5('0x3e')]};return db[_0x6ca5('0x2f')][_0x6ca5('0x1d')](_0x10f1cd)[_0x6ca5('0x24')](function(_0x116caf){_0x3e30c5['count']=_0x116caf;if(_0x441436[_0x6ca5('0x36')][_0x6ca5('0x43')]){_0x360172[_0x6ca5('0x44')]=[{'all':!![]}];}return db[_0x6ca5('0x2f')]['findAll'](_0x360172);})[_0x6ca5('0x24')](function(_0x3616b3){_0x3e30c5['rows']=_0x3616b3;return _0x3e30c5;})[_0x6ca5('0x24')](respondWithFilteredResult(_0x451c2d,_0x360172))[_0x6ca5('0x45')](handleError(_0x451c2d,null));};exports['show']=function(_0x2115b5,_0x55f293){var _0x4cd6d0={'raw':![],'where':{'id':_0x2115b5[_0x6ca5('0x46')]['id']}},_0x5d2ae3={};_0x5d2ae3[_0x6ca5('0x34')]=_[_0x6ca5('0x35')](db[_0x6ca5('0x2f')][_0x6ca5('0x30')]);_0x5d2ae3[_0x6ca5('0x36')]=_[_0x6ca5('0x35')](_0x2115b5['query']);_0x5d2ae3['filters']=_[_0x6ca5('0x38')](_0x5d2ae3[_0x6ca5('0x34')],_0x5d2ae3[_0x6ca5('0x36')]);_0x4cd6d0[_0x6ca5('0x39')]=_[_0x6ca5('0x38')](_0x5d2ae3['model'],qs[_0x6ca5('0x3a')](_0x2115b5[_0x6ca5('0x36')][_0x6ca5('0x3a')]));_0x4cd6d0[_0x6ca5('0x39')]=_0x4cd6d0[_0x6ca5('0x39')]['length']?_0x4cd6d0['attributes']:_0x5d2ae3[_0x6ca5('0x34')];if(_0x2115b5['query'][_0x6ca5('0x43')]){_0x4cd6d0[_0x6ca5('0x44')]=[{'all':!![]}];}_0x4cd6d0=_['merge']({},_0x4cd6d0,_0x2115b5[_0x6ca5('0x42')]);return db[_0x6ca5('0x2f')][_0x6ca5('0x47')](_0x4cd6d0)[_0x6ca5('0x24')](handleEntityNotFound(_0x55f293,null))['then'](respondWithResult(_0x55f293,null))[_0x6ca5('0x45')](handleError(_0x55f293,null));};exports[_0x6ca5('0x48')]=function(_0x290c6c,_0x2aa3b1){return db[_0x6ca5('0x2f')][_0x6ca5('0x48')](_0x290c6c[_0x6ca5('0x49')],{})[_0x6ca5('0x24')](function(_0x5c8bd5){var _0x39db63=_0x290c6c['user']['get']({'plain':!![]});if(!_0x39db63)throw new Error(_0x6ca5('0x4a'));if(_0x39db63[_0x6ca5('0x4b')]===_0x6ca5('0x4c')){var _0x555a52=_0x5c8bd5[_0x6ca5('0x26')]({'plain':!![]});var _0x2f991b=_0x6ca5('0x27');return db[_0x6ca5('0x4d')][_0x6ca5('0x47')]({'where':{'name':_0x2f991b,'userProfileId':_0x39db63[_0x6ca5('0x4e')]},'raw':!![]})['then'](function(_0x67e47e){if(_0x67e47e&&_0x67e47e['autoAssociation']===0x0){return db[_0x6ca5('0x28')][_0x6ca5('0x48')]({'name':_0x555a52['name'],'resourceId':_0x555a52['id'],'type':_0x67e47e[_0x6ca5('0x2b')],'sectionId':_0x67e47e['id']},{})['then'](function(){return _0x5c8bd5;});}else{return _0x5c8bd5;}})['catch'](function(_0x355f77){logger[_0x6ca5('0x4f')](_0x6ca5('0x50'),_0x355f77);throw _0x355f77;});}return _0x5c8bd5;})['then'](respondWithResult(_0x2aa3b1,0xc9))[_0x6ca5('0x45')](handleError(_0x2aa3b1,null));};exports[_0x6ca5('0x23')]=function(_0x4b78dd,_0x265c2b){if(_0x4b78dd['body']['id']){delete _0x4b78dd[_0x6ca5('0x49')]['id'];}return db[_0x6ca5('0x2f')]['find']({'where':{'id':_0x4b78dd[_0x6ca5('0x46')]['id']}})['then'](handleEntityNotFound(_0x265c2b,null))[_0x6ca5('0x24')](saveUpdates(_0x4b78dd[_0x6ca5('0x49')],null))[_0x6ca5('0x24')](respondWithResult(_0x265c2b,null))[_0x6ca5('0x45')](handleError(_0x265c2b,null));};exports[_0x6ca5('0x25')]=function(_0x4d7f0c,_0x590860){return db['VoiceChanSpy'][_0x6ca5('0x47')]({'where':{'id':_0x4d7f0c['params']['id']}})[_0x6ca5('0x24')](handleEntityNotFound(_0x590860,null))[_0x6ca5('0x24')](removeEntity(_0x590860,null))[_0x6ca5('0x45')](handleError(_0x590860,null));};
\ No newline at end of file
+var _0x7af2=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','get','ChanSpies','UserProfileResource','error','stack','name','send','index','map','VoiceChanSpy','fieldName','type','model','query','keys','filters','intersection','attributes','fields'];(function(_0x12aa2d,_0x352204){var _0x45a2e3=function(_0x3234bd){while(--_0x3234bd){_0x12aa2d['push'](_0x12aa2d['shift']());}};_0x45a2e3(++_0x352204);}(_0x7af2,0x119));var _0x27af=function(_0x484da6,_0x10686f){_0x484da6=_0x484da6-0x0;var _0x4cbfb7=_0x7af2[_0x484da6];return _0x4cbfb7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x27af('0x0'));var zipdir=require(_0x27af('0x1'));var jsonpatch=require(_0x27af('0x2'));var rp=require(_0x27af('0x3'));var moment=require('moment');var BPromise=require(_0x27af('0x4'));var Mustache=require(_0x27af('0x5'));var util=require(_0x27af('0x6'));var path=require(_0x27af('0x7'));var sox=require(_0x27af('0x8'));var csv=require(_0x27af('0x9'));var ejs=require(_0x27af('0xa'));var fs=require('fs');var fs_extra=require(_0x27af('0xb'));var _=require(_0x27af('0xc'));var squel=require('squel');var crypto=require(_0x27af('0xd'));var jsforce=require(_0x27af('0xe'));var deskjs=require(_0x27af('0xf'));var toCsv=require('to-csv');var querystring=require(_0x27af('0x10'));var Papa=require(_0x27af('0x11'));var Redis=require(_0x27af('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x27af('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x27af('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x27af('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x27af('0x16'))['db'];function respondWithStatusCode(_0x49a883,_0x406340){_0x406340=_0x406340||0xcc;return function(_0x203501){if(_0x203501){return _0x49a883[_0x27af('0x17')](_0x406340);}return _0x49a883[_0x27af('0x18')](_0x406340)[_0x27af('0x19')]();};}function respondWithResult(_0x1edb50,_0x234825){_0x234825=_0x234825||0xc8;return function(_0x3da435){if(_0x3da435){return _0x1edb50[_0x27af('0x18')](_0x234825)[_0x27af('0x1a')](_0x3da435);}};}function respondWithFilteredResult(_0x30f675,_0x9c2d4b){return function(_0x2d7800){if(_0x2d7800){var _0x3102c4=typeof _0x9c2d4b[_0x27af('0x1b')]===_0x27af('0x1c')&&typeof _0x9c2d4b[_0x27af('0x1d')]===_0x27af('0x1c');var _0x58583a=_0x2d7800[_0x27af('0x1e')];var _0x31d702=_0x3102c4?0x0:_0x9c2d4b['offset'];var _0x4e6e2f=_0x3102c4?_0x2d7800[_0x27af('0x1e')]:_0x9c2d4b[_0x27af('0x1b')]+_0x9c2d4b[_0x27af('0x1d')];var _0x31573a;if(_0x4e6e2f>=_0x58583a){_0x4e6e2f=_0x58583a;_0x31573a=0xc8;}else{_0x31573a=0xce;}_0x30f675[_0x27af('0x18')](_0x31573a);return _0x30f675['set'](_0x27af('0x1f'),_0x31d702+'-'+_0x4e6e2f+'/'+_0x58583a)[_0x27af('0x1a')](_0x2d7800);}return null;};}function patchUpdates(_0xcb4b90){return function(_0x5e7c19){try{jsonpatch[_0x27af('0x20')](_0x5e7c19,_0xcb4b90,!![]);}catch(_0x2eec5f){return BPromise[_0x27af('0x21')](_0x2eec5f);}return _0x5e7c19['save']();};}function saveUpdates(_0x2dce2b,_0x2460f4){return function(_0x30720b){if(_0x30720b){return _0x30720b[_0x27af('0x22')](_0x2dce2b)[_0x27af('0x23')](function(_0x396156){return _0x396156;});}return null;};}function removeEntity(_0x43dd9e,_0x35b36d){return function(_0x2e1bb0){if(_0x2e1bb0){return _0x2e1bb0['destroy']()['then'](function(){var _0x4b8fe6=_0x2e1bb0[_0x27af('0x24')]({'plain':!![]});var _0x4feaf1=_0x27af('0x25');return db[_0x27af('0x26')]['destroy']({'where':{'type':_0x4feaf1,'resourceId':_0x4b8fe6['id']}})[_0x27af('0x23')](function(){return _0x2e1bb0;});})[_0x27af('0x23')](function(){_0x43dd9e[_0x27af('0x18')](0xcc)[_0x27af('0x19')]();});}};}function handleEntityNotFound(_0x39b8ee,_0x3ca40e){return function(_0x775d4e){if(!_0x775d4e){_0x39b8ee['sendStatus'](0x194);}return _0x775d4e;};}function handleError(_0x14d5fc,_0x250d5b){_0x250d5b=_0x250d5b||0x1f4;return function(_0xadd38e){logger[_0x27af('0x27')](_0xadd38e[_0x27af('0x28')]);if(_0xadd38e[_0x27af('0x29')]){delete _0xadd38e[_0x27af('0x29')];}_0x14d5fc[_0x27af('0x18')](_0x250d5b)[_0x27af('0x2a')](_0xadd38e);};}exports[_0x27af('0x2b')]=function(_0x205e41,_0x4f4955){var _0x15e867={},_0x14b2e7={},_0x3800a1={'count':0x0,'rows':[]};var _0x575887=_[_0x27af('0x2c')](db[_0x27af('0x2d')]['rawAttributes'],function(_0x51bc97){return{'name':_0x51bc97[_0x27af('0x2e')],'type':_0x51bc97[_0x27af('0x2f')]['key']};});_0x14b2e7[_0x27af('0x30')]=_[_0x27af('0x2c')](_0x575887,_0x27af('0x29'));_0x14b2e7[_0x27af('0x31')]=_[_0x27af('0x32')](_0x205e41[_0x27af('0x31')]);_0x14b2e7[_0x27af('0x33')]=_[_0x27af('0x34')](_0x14b2e7[_0x27af('0x30')],_0x14b2e7[_0x27af('0x31')]);_0x15e867[_0x27af('0x35')]=_['intersection'](_0x14b2e7['model'],qs[_0x27af('0x36')](_0x205e41[_0x27af('0x31')]['fields']));_0x15e867[_0x27af('0x35')]=_0x15e867[_0x27af('0x35')]['length']?_0x15e867[_0x27af('0x35')]:_0x14b2e7[_0x27af('0x30')];if(!_0x205e41[_0x27af('0x31')][_0x27af('0x37')](_0x27af('0x38'))){_0x15e867['limit']=qs[_0x27af('0x1d')](_0x205e41[_0x27af('0x31')]['limit']);_0x15e867['offset']=qs[_0x27af('0x1b')](_0x205e41[_0x27af('0x31')][_0x27af('0x1b')]);}_0x15e867[_0x27af('0x39')]=qs[_0x27af('0x3a')](_0x205e41[_0x27af('0x31')]['sort']);_0x15e867[_0x27af('0x3b')]=qs['filters'](_[_0x27af('0x3c')](_0x205e41[_0x27af('0x31')],_0x14b2e7[_0x27af('0x33')]),_0x575887);if(_0x205e41[_0x27af('0x31')][_0x27af('0x3d')]){_0x15e867['where']=_[_0x27af('0x3e')](_0x15e867[_0x27af('0x3b')],{'$or':_[_0x27af('0x2c')](_0x575887,function(_0x3faebd){if(_0x3faebd[_0x27af('0x2f')]!==_0x27af('0x3f')){var _0x415d9f={};_0x415d9f[_0x3faebd[_0x27af('0x29')]]={'$like':'%'+_0x205e41[_0x27af('0x31')][_0x27af('0x3d')]+'%'};return _0x415d9f;}})});}_0x15e867=_[_0x27af('0x3e')]({},_0x15e867,_0x205e41[_0x27af('0x40')]);var _0x24ee9b={'where':_0x15e867[_0x27af('0x3b')]};return db['VoiceChanSpy'][_0x27af('0x1e')](_0x24ee9b)[_0x27af('0x23')](function(_0x44534b){_0x3800a1[_0x27af('0x1e')]=_0x44534b;if(_0x205e41['query'][_0x27af('0x41')]){_0x15e867['include']=[{'all':!![]}];}return db['VoiceChanSpy'][_0x27af('0x42')](_0x15e867);})[_0x27af('0x23')](function(_0x279f99){_0x3800a1[_0x27af('0x43')]=_0x279f99;return _0x3800a1;})[_0x27af('0x23')](respondWithFilteredResult(_0x4f4955,_0x15e867))[_0x27af('0x44')](handleError(_0x4f4955,null));};exports[_0x27af('0x45')]=function(_0x26eb28,_0x2269e8){var _0x100fcb={'raw':![],'where':{'id':_0x26eb28[_0x27af('0x46')]['id']}},_0x1e3c35={};_0x1e3c35['model']=_[_0x27af('0x32')](db[_0x27af('0x2d')]['rawAttributes']);_0x1e3c35['query']=_[_0x27af('0x32')](_0x26eb28[_0x27af('0x31')]);_0x1e3c35[_0x27af('0x33')]=_[_0x27af('0x34')](_0x1e3c35[_0x27af('0x30')],_0x1e3c35['query']);_0x100fcb[_0x27af('0x35')]=_['intersection'](_0x1e3c35[_0x27af('0x30')],qs[_0x27af('0x36')](_0x26eb28[_0x27af('0x31')][_0x27af('0x36')]));_0x100fcb[_0x27af('0x35')]=_0x100fcb[_0x27af('0x35')][_0x27af('0x47')]?_0x100fcb['attributes']:_0x1e3c35['model'];if(_0x26eb28[_0x27af('0x31')]['includeAll']){_0x100fcb[_0x27af('0x48')]=[{'all':!![]}];}_0x100fcb=_[_0x27af('0x3e')]({},_0x100fcb,_0x26eb28[_0x27af('0x40')]);return db[_0x27af('0x2d')][_0x27af('0x49')](_0x100fcb)[_0x27af('0x23')](handleEntityNotFound(_0x2269e8,null))[_0x27af('0x23')](respondWithResult(_0x2269e8,null))['catch'](handleError(_0x2269e8,null));};exports[_0x27af('0x4a')]=function(_0xc7e2a8,_0x20e180){return db[_0x27af('0x2d')][_0x27af('0x4a')](_0xc7e2a8['body'],{})[_0x27af('0x23')](function(_0x25f960){var _0x28ba64=_0xc7e2a8['user']['get']({'plain':!![]});if(!_0x28ba64)throw new Error(_0x27af('0x4b'));if(_0x28ba64[_0x27af('0x4c')]===_0x27af('0x4d')){var _0x5be44f=_0x25f960['get']({'plain':!![]});var _0x2fad23='ChanSpies';return db[_0x27af('0x4e')][_0x27af('0x49')]({'where':{'name':_0x2fad23,'userProfileId':_0x28ba64[_0x27af('0x4f')]},'raw':!![]})[_0x27af('0x23')](function(_0x38aa14){if(_0x38aa14&&_0x38aa14[_0x27af('0x50')]===0x0){return db[_0x27af('0x26')][_0x27af('0x4a')]({'name':_0x5be44f[_0x27af('0x29')],'resourceId':_0x5be44f['id'],'type':_0x38aa14[_0x27af('0x29')],'sectionId':_0x38aa14['id']},{})[_0x27af('0x23')](function(){return _0x25f960;});}else{return _0x25f960;}})['catch'](function(_0x76ed78){logger[_0x27af('0x27')](_0x27af('0x51'),_0x76ed78);throw _0x76ed78;});}return _0x25f960;})[_0x27af('0x23')](respondWithResult(_0x20e180,0xc9))[_0x27af('0x44')](handleError(_0x20e180,null));};exports[_0x27af('0x22')]=function(_0x20c155,_0x31eaa9){if(_0x20c155['body']['id']){delete _0x20c155[_0x27af('0x52')]['id'];}return db['VoiceChanSpy'][_0x27af('0x49')]({'where':{'id':_0x20c155[_0x27af('0x46')]['id']}})[_0x27af('0x23')](handleEntityNotFound(_0x31eaa9,null))['then'](saveUpdates(_0x20c155[_0x27af('0x52')],null))['then'](respondWithResult(_0x31eaa9,null))[_0x27af('0x44')](handleError(_0x31eaa9,null));};exports[_0x27af('0x53')]=function(_0x4769ff,_0x5bf8b0){return db[_0x27af('0x2d')]['find']({'where':{'id':_0x4769ff[_0x27af('0x46')]['id']}})['then'](handleEntityNotFound(_0x5bf8b0,null))[_0x27af('0x23')](removeEntity(_0x5bf8b0,null))[_0x27af('0x44')](handleError(_0x5bf8b0,null));};
\ No newline at end of file
index e07ae6c..93ac257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37db=['catch','exports','models','define','VoiceChanSpy','length','bulkCreate','VoiceExtension','util','bluebird','context','from-sip','format','%s%s','prefix','system','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','concat','internal','User','agent','then'];(function(_0x3ce4d9,_0x415797){var _0xa01a03=function(_0x2659a4){while(--_0x2659a4){_0x3ce4d9['push'](_0x3ce4d9['shift']());}};_0xa01a03(++_0x415797);}(_0x37db,0x1d0));var _0xb37d=function(_0x25b94c,_0x73d58f){_0x25b94c=_0x25b94c-0x0;var _0x4dd442=_0x37db[_0x25b94c];return _0x4dd442;};'use strict';var _=require('lodash');var util=require(_0xb37d('0x0'));var BPromise=require(_0xb37d('0x1'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x2b7ce4,_0x129775,_0x331cc9){var _0x5b597c=0x1;var _0x4d526c=[];var _0x4905d3={'context':_0x129775[_0xb37d('0x2')]||_0xb37d('0x3'),'exten':util[_0xb37d('0x4')](_0xb37d('0x5'),_0x2b7ce4[_0xb37d('0x6')],_0x331cc9),'type':_0xb37d('0x7'),'isApp':![],'ChanSpyId':_0x2b7ce4['id'],'UserId':_0x129775['id']};_0x4d526c[_0xb37d('0x8')](_[_0xb37d('0x9')]({'app':_0xb37d('0xa'),'appdata':util[_0xb37d('0x4')](_0xb37d('0xb'),_0xb37d('0xc')),'priority':_0x5b597c++},_0x4905d3));if(_0x2b7ce4[_0xb37d('0xd')]){_0x4d526c['push'](_[_0xb37d('0x9')]({'app':_0xb37d('0xe'),'appdata':util[_0xb37d('0x4')](_0xb37d('0xf'),_0x2b7ce4[_0xb37d('0x10')]),'priority':_0x5b597c++},_0x4905d3));}if(_0x2b7ce4[_0xb37d('0x11')]){_0x4d526c[_0xb37d('0x8')](_['merge']({'app':_0xb37d('0x12'),'appdata':_0x2b7ce4[_0xb37d('0x13')],'priority':_0x5b597c++},_0x4905d3));}_0x4d526c[_0xb37d('0x8')](_[_0xb37d('0x9')]({'app':_0xb37d('0x14'),'appdata':util['format'](_0xb37d('0x15'),_0x129775[_0xb37d('0x16')],_0x2b7ce4['options']?_0x2b7ce4[_0xb37d('0x17')]['join'](''):''),'priority':_0x5b597c++},_0x4905d3));if(_0x2b7ce4[_0xb37d('0xd')]){_0x4d526c[_0xb37d('0x8')](_[_0xb37d('0x9')]({'app':_0xb37d('0x18'),'priority':_0x5b597c++},_0x4905d3));}return _0x4d526c;};var getChanSpyApplications=function(_0x257866,_0x325cfa){var _0x56d1ab=[];for(var _0x5ab8aa=0x0,_0x4153c0=0x1;_0x5ab8aa<_0x325cfa['length'];_0x5ab8aa++,_0x4153c0=0x1){_0x56d1ab=_0x56d1ab[_0xb37d('0x19')](getUserApplications(_0x257866,_0x325cfa[_0x5ab8aa],_0x325cfa[_0x5ab8aa][_0xb37d('0x1a')]));if(_0x325cfa[_0x5ab8aa][_0xb37d('0x1a')]!=_0x325cfa[_0x5ab8aa]['name']){_0x56d1ab=_0x56d1ab['concat'](getUserApplications(_0x257866,_0x325cfa[_0x5ab8aa],_0x325cfa[_0x5ab8aa][_0xb37d('0x16')]));}}return _0x56d1ab;};var getChanSpyPromise=function(_0x3dbd9e,_0x31a948){return new BPromise(function(_0x53fdca,_0x195c96){return _0x3dbd9e[_0xb37d('0x1b')]['findAll']({'attributes':['id',_0xb37d('0x16'),_0xb37d('0x1a')],'where':{'role':_0xb37d('0x1c'),'chanspy':!![]},'raw':!![]})[_0xb37d('0x1d')](function(_0x3fc60c){if(_0x3fc60c){return _0x53fdca(getChanSpyApplications(_0x31a948,_0x3fc60c));}return _0x53fdca([]);})[_0xb37d('0x1e')](function(_0x571a23){_0x195c96(_0x571a23);});});};module[_0xb37d('0x1f')]=function(_0x41c817,_0x35a46d){var _0x2a4a79=_0x41c817[_0xb37d('0x20')];return _0x41c817[_0xb37d('0x21')](_0xb37d('0x22'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4368c9,_0x3cf9f4,_0x4cbd86){return getChanSpyPromise(_0x2a4a79,_0x4368c9)[_0xb37d('0x1d')](function(_0x4b3923){if(_0x4b3923&&_0x4b3923[_0xb37d('0x23')]){return _0x2a4a79['VoiceExtension'][_0xb37d('0x24')](_0x4b3923);}})[_0xb37d('0x1d')](function(){_0x4cbd86();})[_0xb37d('0x1e')](function(_0x82d827){_0x4cbd86(_0x82d827);});},'afterUpdate':function(_0x1c9486,_0x1e63c8,_0x5d149d){return _0x2a4a79[_0xb37d('0x25')]['destroy']({'where':{'ChanSpyId':_0x1c9486['id']}})['then'](function(){return getChanSpyPromise(_0x2a4a79,_0x1c9486);})[_0xb37d('0x1d')](function(_0x2e7830){if(_0x2e7830&&_0x2e7830[_0xb37d('0x23')]){return _0x2a4a79['VoiceExtension']['bulkCreate'](_0x2e7830);}})['then'](function(){_0x5d149d();})['catch'](function(_0x43c863){_0x5d149d(_0x43c863);});},'afterDestroy':function(_0x41f752,_0x31cc01,_0x3ea845){return _0x2a4a79[_0xb37d('0x25')]['destroy']({'where':{'ChanSpyId':_0x41f752['id']}})[_0xb37d('0x1d')](function(){_0x3ea845();})[_0xb37d('0x1e')](function(_0x5ca7af){_0x3ea845(_0x5ca7af);});}}});};
\ No newline at end of file
+var _0xe2bf=['lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','prefix','system','push','merge','CDR(type)=%s','chanspy','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','length','concat','internal','User','findAll','agent','then','catch','exports','models','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe2bf,0x1ee));var _0xfe2b=function(_0x4fb931,_0x30e695){_0x4fb931=_0x4fb931-0x0;var _0x1c5f5b=_0xe2bf[_0x4fb931];return _0x1c5f5b;};'use strict';var _=require(_0xfe2b('0x0'));var util=require(_0xfe2b('0x1'));var BPromise=require(_0xfe2b('0x2'));var attributes=require(_0xfe2b('0x3'));var getUserApplications=function(_0x57d366,_0x3a4fa7,_0x486545){var _0x8066de=0x1;var _0x5bea63=[];var _0x324af2={'context':_0x3a4fa7[_0xfe2b('0x4')]||_0xfe2b('0x5'),'exten':util[_0xfe2b('0x6')]('%s%s',_0x57d366[_0xfe2b('0x7')],_0x486545),'type':_0xfe2b('0x8'),'isApp':![],'ChanSpyId':_0x57d366['id'],'UserId':_0x3a4fa7['id']};_0x5bea63[_0xfe2b('0x9')](_[_0xfe2b('0xa')]({'app':'Set','appdata':util['format'](_0xfe2b('0xb'),_0xfe2b('0xc')),'priority':_0x8066de++},_0x324af2));if(_0x57d366['record']){_0x5bea63[_0xfe2b('0x9')](_['merge']({'app':'MixMonitor','appdata':util[_0xfe2b('0x6')](_0xfe2b('0xd'),_0x57d366[_0xfe2b('0xe')]),'priority':_0x8066de++},_0x324af2));}if(_0x57d366[_0xfe2b('0xf')]){_0x5bea63[_0xfe2b('0x9')](_[_0xfe2b('0xa')]({'app':_0xfe2b('0x10'),'appdata':_0x57d366[_0xfe2b('0x11')],'priority':_0x8066de++},_0x324af2));}_0x5bea63['push'](_[_0xfe2b('0xa')]({'app':_0xfe2b('0x12'),'appdata':util['format'](_0xfe2b('0x13'),_0x3a4fa7[_0xfe2b('0x14')],_0x57d366[_0xfe2b('0x15')]?_0x57d366[_0xfe2b('0x15')][_0xfe2b('0x16')](''):''),'priority':_0x8066de++},_0x324af2));if(_0x57d366['record']){_0x5bea63[_0xfe2b('0x9')](_[_0xfe2b('0xa')]({'app':'StopMixMonitor','priority':_0x8066de++},_0x324af2));}return _0x5bea63;};var getChanSpyApplications=function(_0x398789,_0x5c77d3){var _0x23c627=[];for(var _0x316cea=0x0,_0x3f50c9=0x1;_0x316cea<_0x5c77d3[_0xfe2b('0x17')];_0x316cea++,_0x3f50c9=0x1){_0x23c627=_0x23c627[_0xfe2b('0x18')](getUserApplications(_0x398789,_0x5c77d3[_0x316cea],_0x5c77d3[_0x316cea][_0xfe2b('0x19')]));if(_0x5c77d3[_0x316cea][_0xfe2b('0x19')]!=_0x5c77d3[_0x316cea]['name']){_0x23c627=_0x23c627[_0xfe2b('0x18')](getUserApplications(_0x398789,_0x5c77d3[_0x316cea],_0x5c77d3[_0x316cea][_0xfe2b('0x14')]));}}return _0x23c627;};var getChanSpyPromise=function(_0x22f5f2,_0x46fc9b){return new BPromise(function(_0x40ff7b,_0x262a9d){return _0x22f5f2[_0xfe2b('0x1a')][_0xfe2b('0x1b')]({'attributes':['id',_0xfe2b('0x14'),_0xfe2b('0x19')],'where':{'role':_0xfe2b('0x1c'),'chanspy':!![]},'raw':!![]})[_0xfe2b('0x1d')](function(_0x5d96dd){if(_0x5d96dd){return _0x40ff7b(getChanSpyApplications(_0x46fc9b,_0x5d96dd));}return _0x40ff7b([]);})[_0xfe2b('0x1e')](function(_0x3078f1){_0x262a9d(_0x3078f1);});});};module[_0xfe2b('0x1f')]=function(_0x4b586b,_0x27dcc0){var _0xbadabd=_0x4b586b[_0xfe2b('0x20')];return _0x4b586b['define'](_0xfe2b('0x21'),attributes,{'tableName':_0xfe2b('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x54a6d5,_0x176311,_0x4f2139){return getChanSpyPromise(_0xbadabd,_0x54a6d5)[_0xfe2b('0x1d')](function(_0x4cae0c){if(_0x4cae0c&&_0x4cae0c[_0xfe2b('0x17')]){return _0xbadabd[_0xfe2b('0x23')][_0xfe2b('0x24')](_0x4cae0c);}})['then'](function(){_0x4f2139();})[_0xfe2b('0x1e')](function(_0x2d945b){_0x4f2139(_0x2d945b);});},'afterUpdate':function(_0x1daf11,_0x9f5b38,_0x20651e){return _0xbadabd[_0xfe2b('0x23')][_0xfe2b('0x25')]({'where':{'ChanSpyId':_0x1daf11['id']}})[_0xfe2b('0x1d')](function(){return getChanSpyPromise(_0xbadabd,_0x1daf11);})[_0xfe2b('0x1d')](function(_0x458557){if(_0x458557&&_0x458557[_0xfe2b('0x17')]){return _0xbadabd[_0xfe2b('0x23')][_0xfe2b('0x24')](_0x458557);}})['then'](function(){_0x20651e();})[_0xfe2b('0x1e')](function(_0x3574e7){_0x20651e(_0x3574e7);});},'afterDestroy':function(_0x1aab99,_0x282904,_0x579536){return _0xbadabd[_0xfe2b('0x23')][_0xfe2b('0x25')]({'where':{'ChanSpyId':_0x1aab99['id']}})[_0xfe2b('0x1d')](function(){_0x579536();})[_0xfe2b('0x1e')](function(_0x41482d){_0x579536(_0x41482d);});}}});};
\ No newline at end of file
index b600acc..cf2bdfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8a=['../../config/environment','jayson/promise','client','http','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4dab1d,_0x3167cd){var _0x480552=function(_0x2469ed){while(--_0x2469ed){_0x4dab1d['push'](_0x4dab1d['shift']());}};_0x480552(++_0x3167cd);}(_0xad8a,0xb0));var _0xaad8=function(_0x682e9f,_0x28d759){_0x682e9f=_0x682e9f-0x0;var _0x534e33=_0xad8a[_0x682e9f];return _0x534e33;};'use strict';var _=require(_0xaad8('0x0'));var util=require(_0xaad8('0x1'));var moment=require(_0xaad8('0x2'));var BPromise=require(_0xaad8('0x3'));var rs=require(_0xaad8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaad8('0x5'))['db'];var utils=require(_0xaad8('0x6'));var logger=require(_0xaad8('0x7'))('rpc');var config=require(_0xaad8('0x8'));var jayson=require(_0xaad8('0x9'));var client=jayson[_0xaad8('0xa')][_0xaad8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x95aef9,_0x39c599,_0x28f3a1){return new BPromise(function(_0xf3a6c7,_0x11408a){return client[_0xaad8('0xc')](_0x95aef9,_0x28f3a1)['then'](function(_0x52477f){logger[_0xaad8('0xd')](_0xaad8('0xe'),_0x39c599,_0xaad8('0xf'));logger[_0xaad8('0x10')](_0xaad8('0x11'),_0x39c599,_0xaad8('0xf'),JSON[_0xaad8('0x12')](_0x52477f));if(_0x52477f[_0xaad8('0x13')]){if(_0x52477f[_0xaad8('0x13')]['code']===0x1f4){logger[_0xaad8('0x13')](_0xaad8('0xe'),_0x39c599,_0x52477f[_0xaad8('0x13')][_0xaad8('0x14')]);return _0x11408a(_0x52477f[_0xaad8('0x13')][_0xaad8('0x14')]);}logger[_0xaad8('0x13')](_0xaad8('0xe'),_0x39c599,_0x52477f[_0xaad8('0x13')][_0xaad8('0x14')]);return _0xf3a6c7(_0x52477f[_0xaad8('0x13')][_0xaad8('0x14')]);}else{logger[_0xaad8('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x39c599,_0xaad8('0xf'));_0xf3a6c7(_0x52477f[_0xaad8('0x15')]['message']);}})[_0xaad8('0x16')](function(_0x2a8e12){logger[_0xaad8('0x13')](_0xaad8('0xe'),_0x39c599,_0x2a8e12);_0x11408a(_0x2a8e12);});});}
\ No newline at end of file
+var _0x70e0=['code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x12d0e9,_0x48538b){var _0xa0c900=function(_0x24b8d9){while(--_0x24b8d9){_0x12d0e9['push'](_0x12d0e9['shift']());}};_0xa0c900(++_0x48538b);}(_0x70e0,0x17b));var _0x070e=function(_0x2671e6,_0x3d8227){_0x2671e6=_0x2671e6-0x0;var _0x48fd46=_0x70e0[_0x2671e6];return _0x48fd46;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceChanSpy,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index 411899e..5060c06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c9a=['show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','/:id'];(function(_0x234e1a,_0x500d79){var _0x55aad2=function(_0x272396){while(--_0x272396){_0x234e1a['push'](_0x234e1a['shift']());}};_0x55aad2(++_0x500d79);}(_0x9c9a,0x193));var _0xa9c9=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9c9a[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0xa9c9('0x0'));var util=require('util');var path=require(_0xa9c9('0x1'));var timeout=require(_0xa9c9('0x2'));var express=require(_0xa9c9('0x3'));var router=express['Router']();var fs_extra=require(_0xa9c9('0x4'));var auth=require(_0xa9c9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa9c9('0x6'));var controller=require(_0xa9c9('0x7'));router[_0xa9c9('0x8')]('/',auth[_0xa9c9('0x9')](),controller['index']);router[_0xa9c9('0x8')](_0xa9c9('0xa'),auth[_0xa9c9('0x9')](),controller[_0xa9c9('0xb')]);router[_0xa9c9('0xc')]('/',auth[_0xa9c9('0x9')](),controller[_0xa9c9('0xd')]);router[_0xa9c9('0xe')](_0xa9c9('0xa'),auth[_0xa9c9('0x9')](),controller[_0xa9c9('0xf')]);router[_0xa9c9('0x10')](_0xa9c9('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xa9c9('0x11')]=router;
\ No newline at end of file
+var _0xd0fb=['isAuthenticated','index','/:id','create','update','destroy','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceContext.controller','get'];(function(_0x1347f8,_0x233feb){var _0x218368=function(_0x3f4ca3){while(--_0x3f4ca3){_0x1347f8['push'](_0x1347f8['shift']());}};_0x218368(++_0x233feb);}(_0xd0fb,0x1d7));var _0xbd0f=function(_0x18f22c,_0x18e2a2){_0x18f22c=_0x18f22c-0x0;var _0x3351da=_0xd0fb[_0x18f22c];return _0x3351da;};'use strict';var multer=require(_0xbd0f('0x0'));var util=require(_0xbd0f('0x1'));var path=require('path');var timeout=require(_0xbd0f('0x2'));var express=require(_0xbd0f('0x3'));var router=express[_0xbd0f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbd0f('0x5'));var config=require(_0xbd0f('0x6'));var controller=require(_0xbd0f('0x7'));router[_0xbd0f('0x8')]('/',auth[_0xbd0f('0x9')](),controller[_0xbd0f('0xa')]);router['get'](_0xbd0f('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xbd0f('0x9')](),controller[_0xbd0f('0xc')]);router['put'](_0xbd0f('0xb'),auth[_0xbd0f('0x9')](),controller[_0xbd0f('0xd')]);router['delete']('/:id',auth[_0xbd0f('0x9')](),controller[_0xbd0f('0xe')]);module['exports']=router;
\ No newline at end of file
index 5ac7a65..002d25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc560=['exports','name','STRING'];(function(_0xe2794,_0x42caa5){var _0x578b5e=function(_0x3df5dd){while(--_0x3df5dd){_0xe2794['push'](_0xe2794['shift']());}};_0x578b5e(++_0x42caa5);}(_0xc560,0x78));var _0x0c56=function(_0x32738a,_0x3445cc){_0x32738a=_0x32738a-0x0;var _0x3ee315=_0xc560[_0x32738a];return _0x3ee315;};'use strict';var Sequelize=require('sequelize');module[_0x0c56('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x0c56('0x1')},'description':{'type':Sequelize[_0x0c56('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1db3=['name','sequelize','STRING'];(function(_0x305bce,_0x32d100){var _0xe238af=function(_0x547eaa){while(--_0x547eaa){_0x305bce['push'](_0x305bce['shift']());}};_0xe238af(++_0x32d100);}(_0x1db3,0x16c));var _0x31db=function(_0x4eed98,_0x2fe8a4){_0x4eed98=_0x4eed98-0x0;var _0x4ea841=_0x1db3[_0x4eed98];return _0x4ea841;};'use strict';var Sequelize=require(_0x31db('0x0'));module['exports']={'name':{'type':Sequelize[_0x31db('0x1')],'unique':_0x31db('0x2')},'description':{'type':Sequelize[_0x31db('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index d613fd5..2a3f336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x122e=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','get','Contexts','UserProfileResource','destroy','stack','name','send','index','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','VoiceContext','rows','params','includeAll','include','find','server/files/templates/context.ejs','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','create','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','root','render','findAll','readFileSync','join','writeFileSync','eml-format','rimraf'];(function(_0x105f14,_0x2095fb){var _0x4aab49=function(_0x36bab6){while(--_0x36bab6){_0x105f14['push'](_0x105f14['shift']());}};_0x4aab49(++_0x2095fb);}(_0x122e,0x66));var _0xe122=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x122e[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xe122('0x0'));var rimraf=require(_0xe122('0x1'));var zipdir=require(_0xe122('0x2'));var jsonpatch=require(_0xe122('0x3'));var rp=require(_0xe122('0x4'));var moment=require(_0xe122('0x5'));var BPromise=require(_0xe122('0x6'));var Mustache=require('mustache');var util=require(_0xe122('0x7'));var path=require('path');var sox=require(_0xe122('0x8'));var csv=require(_0xe122('0x9'));var ejs=require(_0xe122('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe122('0xb'));var squel=require(_0xe122('0xc'));var crypto=require(_0xe122('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe122('0xe'));var toCsv=require(_0xe122('0x9'));var querystring=require(_0xe122('0xf'));var Papa=require(_0xe122('0x10'));var Redis=require(_0xe122('0x11'));var authService=require(_0xe122('0x12'));var qs=require(_0xe122('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe122('0x14'));var logger=require(_0xe122('0x15'))(_0xe122('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe122('0x17'));var db=require(_0xe122('0x18'))['db'];var jayson=require(_0xe122('0x19'));var client=jayson[_0xe122('0x1a')][_0xe122('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x24a05a,_0x486f32,_0x233ed7,_0x392715){return new BPromise(function(_0x5e7049,_0x42bb1c){var _0x5f3e0c=_0x392715||client;return _0x5f3e0c[_0xe122('0x1c')](_0x24a05a,_0x233ed7)[_0xe122('0x1d')](function(_0x3a2167){logger[_0xe122('0x1e')](_0xe122('0x1f'),_0x486f32,_0xe122('0x20'));logger[_0xe122('0x21')](_0xe122('0x22'),_0x486f32,_0xe122('0x20'),JSON['stringify'](_0x3a2167));if(_0x3a2167[_0xe122('0x23')]){if(_0x3a2167[_0xe122('0x23')][_0xe122('0x24')]===0x1f4){logger[_0xe122('0x23')](_0xe122('0x1f'),_0x486f32,_0x3a2167[_0xe122('0x23')]['message']);return _0x42bb1c(_0x3a2167[_0xe122('0x23')]['message']);}logger[_0xe122('0x23')](_0xe122('0x1f'),_0x486f32,_0x3a2167[_0xe122('0x23')]['message']);return _0x5e7049(_0x3a2167['error'][_0xe122('0x25')]);}else{logger[_0xe122('0x1e')]('VoiceContext,\x20%s,\x20%s',_0x486f32,_0xe122('0x20'));_0x5e7049(_0x3a2167[_0xe122('0x26')]['message']);}})[_0xe122('0x27')](function(_0x528971){logger['error'](_0xe122('0x1f'),_0x486f32,_0x528971);_0x42bb1c(_0x528971);});});}function respondWithStatusCode(_0x39e8d5,_0x1a91fc){_0x1a91fc=_0x1a91fc||0xcc;return function(_0x23ee44){if(_0x23ee44){return _0x39e8d5[_0xe122('0x28')](_0x1a91fc);}return _0x39e8d5[_0xe122('0x29')](_0x1a91fc)[_0xe122('0x2a')]();};}function respondWithResult(_0x2bf171,_0x2c5106){_0x2c5106=_0x2c5106||0xc8;return function(_0x339457){if(_0x339457){return _0x2bf171[_0xe122('0x29')](_0x2c5106)[_0xe122('0x2b')](_0x339457);}};}function respondWithFilteredResult(_0x38a4c4,_0x57abd0){return function(_0x59ec9f){if(_0x59ec9f){var _0x446e4b=typeof _0x57abd0[_0xe122('0x2c')]===_0xe122('0x2d')&&typeof _0x57abd0[_0xe122('0x2e')]===_0xe122('0x2d');var _0x4b5e50=_0x59ec9f[_0xe122('0x2f')];var _0x5265a0=_0x446e4b?0x0:_0x57abd0[_0xe122('0x2c')];var _0x53eeea=_0x446e4b?_0x59ec9f['count']:_0x57abd0[_0xe122('0x2c')]+_0x57abd0[_0xe122('0x2e')];var _0x5235a6;if(_0x53eeea>=_0x4b5e50){_0x53eeea=_0x4b5e50;_0x5235a6=0xc8;}else{_0x5235a6=0xce;}_0x38a4c4[_0xe122('0x29')](_0x5235a6);return _0x38a4c4[_0xe122('0x30')]('Content-Range',_0x5265a0+'-'+_0x53eeea+'/'+_0x4b5e50)['json'](_0x59ec9f);}return null;};}function patchUpdates(_0x38d5c1){return function(_0x2b1593){try{jsonpatch['apply'](_0x2b1593,_0x38d5c1,!![]);}catch(_0x237f1e){return BPromise[_0xe122('0x31')](_0x237f1e);}return _0x2b1593[_0xe122('0x32')]();};}function saveUpdates(_0x5934bd,_0x1b502b){return function(_0x230c0d){if(_0x230c0d){return _0x230c0d[_0xe122('0x33')](_0x5934bd)['then'](function(_0xb7c345){return _0xb7c345;});}return null;};}function removeEntity(_0x2a5179,_0x287c8f){return function(_0x5be268){if(_0x5be268){return _0x5be268['destroy']()[_0xe122('0x1d')](function(){var _0x118a2a=_0x5be268[_0xe122('0x34')]({'plain':!![]});var _0x24ee84=_0xe122('0x35');return db[_0xe122('0x36')][_0xe122('0x37')]({'where':{'type':_0x24ee84,'resourceId':_0x118a2a['id']}})['then'](function(){return _0x5be268;});})[_0xe122('0x1d')](function(){_0x2a5179[_0xe122('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1945a5,_0x51e2ee){return function(_0xf1bcb7){if(!_0xf1bcb7){_0x1945a5[_0xe122('0x28')](0x194);}return _0xf1bcb7;};}function handleError(_0x5b22c8,_0x1a9d84){_0x1a9d84=_0x1a9d84||0x1f4;return function(_0x5034d8){logger[_0xe122('0x23')](_0x5034d8[_0xe122('0x38')]);if(_0x5034d8[_0xe122('0x39')]){delete _0x5034d8[_0xe122('0x39')];}_0x5b22c8[_0xe122('0x29')](_0x1a9d84)[_0xe122('0x3a')](_0x5034d8);};}exports[_0xe122('0x3b')]=function(_0x17e1d9,_0x1498c9){var _0x1080ab={},_0x2602cf={},_0x525ce7={'count':0x0,'rows':[]};var _0xc26728=_['map'](db['VoiceContext'][_0xe122('0x3c')],function(_0x5d8040){return{'name':_0x5d8040[_0xe122('0x3d')],'type':_0x5d8040[_0xe122('0x3e')]['key']};});_0x2602cf[_0xe122('0x3f')]=_[_0xe122('0x40')](_0xc26728,_0xe122('0x39'));_0x2602cf['query']=_[_0xe122('0x41')](_0x17e1d9[_0xe122('0x42')]);_0x2602cf[_0xe122('0x43')]=_[_0xe122('0x44')](_0x2602cf[_0xe122('0x3f')],_0x2602cf[_0xe122('0x42')]);_0x1080ab['attributes']=_['intersection'](_0x2602cf[_0xe122('0x3f')],qs[_0xe122('0x45')](_0x17e1d9[_0xe122('0x42')][_0xe122('0x45')]));_0x1080ab[_0xe122('0x46')]=_0x1080ab['attributes'][_0xe122('0x47')]?_0x1080ab[_0xe122('0x46')]:_0x2602cf[_0xe122('0x3f')];if(!_0x17e1d9[_0xe122('0x42')][_0xe122('0x48')](_0xe122('0x49'))){_0x1080ab[_0xe122('0x2e')]=qs[_0xe122('0x2e')](_0x17e1d9[_0xe122('0x42')]['limit']);_0x1080ab['offset']=qs[_0xe122('0x2c')](_0x17e1d9[_0xe122('0x42')][_0xe122('0x2c')]);}_0x1080ab[_0xe122('0x4a')]=qs[_0xe122('0x4b')](_0x17e1d9[_0xe122('0x42')][_0xe122('0x4b')]);_0x1080ab[_0xe122('0x4c')]=qs['filters'](_[_0xe122('0x4d')](_0x17e1d9[_0xe122('0x42')],_0x2602cf[_0xe122('0x43')]),_0xc26728);if(_0x17e1d9[_0xe122('0x42')][_0xe122('0x4e')]){_0x1080ab[_0xe122('0x4c')]=_['merge'](_0x1080ab[_0xe122('0x4c')],{'$or':_[_0xe122('0x40')](_0xc26728,function(_0x7977f3){if(_0x7977f3[_0xe122('0x3e')]!==_0xe122('0x4f')){var _0x2f1e7c={};_0x2f1e7c[_0x7977f3[_0xe122('0x39')]]={'$like':'%'+_0x17e1d9[_0xe122('0x42')]['filter']+'%'};return _0x2f1e7c;}})});}_0x1080ab=_[_0xe122('0x50')]({},_0x1080ab,_0x17e1d9[_0xe122('0x51')]);var _0x341337={'where':_0x1080ab['where']};return db['VoiceContext'][_0xe122('0x2f')](_0x341337)[_0xe122('0x1d')](function(_0x40c7fd){_0x525ce7[_0xe122('0x2f')]=_0x40c7fd;if(_0x17e1d9[_0xe122('0x42')]['includeAll']){_0x1080ab['include']=[{'all':!![]}];}return db[_0xe122('0x52')]['findAll'](_0x1080ab);})['then'](function(_0x2da248){_0x525ce7[_0xe122('0x53')]=_0x2da248;return _0x525ce7;})[_0xe122('0x1d')](respondWithFilteredResult(_0x1498c9,_0x1080ab))['catch'](handleError(_0x1498c9,null));};exports['show']=function(_0x187e24,_0x380e02){var _0x13698f={'raw':![],'where':{'id':_0x187e24[_0xe122('0x54')]['id']}},_0x3a22da={};_0x3a22da['model']=_['keys'](db[_0xe122('0x52')][_0xe122('0x3c')]);_0x3a22da[_0xe122('0x42')]=_['keys'](_0x187e24[_0xe122('0x42')]);_0x3a22da[_0xe122('0x43')]=_['intersection'](_0x3a22da[_0xe122('0x3f')],_0x3a22da[_0xe122('0x42')]);_0x13698f[_0xe122('0x46')]=_[_0xe122('0x44')](_0x3a22da[_0xe122('0x3f')],qs['fields'](_0x187e24[_0xe122('0x42')][_0xe122('0x45')]));_0x13698f[_0xe122('0x46')]=_0x13698f['attributes'][_0xe122('0x47')]?_0x13698f['attributes']:_0x3a22da['model'];if(_0x187e24[_0xe122('0x42')][_0xe122('0x55')]){_0x13698f[_0xe122('0x56')]=[{'all':!![]}];}_0x13698f=_[_0xe122('0x50')]({},_0x13698f,_0x187e24[_0xe122('0x51')]);return db['VoiceContext'][_0xe122('0x57')](_0x13698f)[_0xe122('0x1d')](handleEntityNotFound(_0x380e02,null))['then'](respondWithResult(_0x380e02,null))[_0xe122('0x27')](handleError(_0x380e02,null));};exports['create']=function(_0x9cb0c8,_0x5aba89,_0x406541){var _0x431842;return db[_0xe122('0x52')]['create'](_0x9cb0c8['body'],{'raw':!![]})[_0xe122('0x1d')](function(_0x1f1828){_0x431842=_0x1f1828;return db[_0xe122('0x52')]['findAll']({'raw':!![]});})[_0xe122('0x1d')](function(_0x4fc1b2){var _0x2d2be0=fs['readFileSync'](path['join'](config['root'],_0xe122('0x58')),_0xe122('0x59'));var _0x1e23e5=ejs['render'](_0x2d2be0,{'contexts':_0x4fc1b2||[]});fs['writeFileSync'](_0xe122('0x5a'),_0x1e23e5);})['then'](function(){return respondWithRpcPromise(_0xe122('0x5b'),_0xe122('0x5c'),{'module':_0xe122('0x5d')});})[_0xe122('0x1d')](function(){var _0x15699d=_0x9cb0c8[_0xe122('0x5e')]['get']({'plain':!![]});if(!_0x15699d)throw new Error(_0xe122('0x5f'));if(_0x15699d[_0xe122('0x60')]==='user'){var _0x43029d=_0x431842['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xe122('0x35'),'userProfileId':_0x15699d[_0xe122('0x61')]},'raw':!![]})[_0xe122('0x1d')](function(_0x251fd5){if(_0x251fd5&&_0x251fd5['autoAssociation']===0x0){return db[_0xe122('0x36')][_0xe122('0x5c')]({'name':_0x43029d[_0xe122('0x39')],'resourceId':_0x43029d['id'],'type':_0x251fd5[_0xe122('0x39')],'sectionId':_0x251fd5['id']},{})[_0xe122('0x1d')](function(){return _0x431842;});}else{return _0x431842;}})[_0xe122('0x27')](function(_0x45defa){logger[_0xe122('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x45defa);throw _0x45defa;});}return _0x431842;})[_0xe122('0x1d')](respondWithResult(_0x5aba89,0xc9))[_0xe122('0x27')](handleError(_0x5aba89,null));};exports['update']=function(_0x275849,_0x53d049,_0x314214){var _0x5415c7;return db[_0xe122('0x52')][_0xe122('0x57')]({'where':{'id':_0x275849[_0xe122('0x54')]['id']}})[_0xe122('0x1d')](handleEntityNotFound(_0x53d049,null))[_0xe122('0x1d')](saveUpdates(_0x275849['body'],null))[_0xe122('0x1d')](function(_0x443094){if(_0x443094){_0x5415c7=_0x443094;return db[_0xe122('0x52')]['findAll']({'raw':!![]});}})[_0xe122('0x1d')](function(_0x82b379){var _0x51f0f2=fs['readFileSync'](path['join'](config[_0xe122('0x62')],_0xe122('0x58')),'utf8');var _0x5d30f2=ejs[_0xe122('0x63')](_0x51f0f2,{'contexts':_0x82b379||[]});fs['writeFileSync']('/etc/asterisk/extensions_xcally_contexts.conf',_0x5d30f2);})[_0xe122('0x1d')](function(){return respondWithRpcPromise(_0xe122('0x5b'),'update',{'module':'chan_sip.so'});})[_0xe122('0x1d')](function(){return _0x5415c7;})[_0xe122('0x1d')](respondWithResult(_0x53d049,null))[_0xe122('0x27')](handleError(_0x53d049,null));};exports[_0xe122('0x37')]=function(_0x1cd0dc,_0x2b42a5,_0x45721b){var _0x68023d;return db[_0xe122('0x52')][_0xe122('0x57')]({'where':{'id':_0x1cd0dc['params']['id']}})['then'](handleEntityNotFound(_0x2b42a5,null))[_0xe122('0x1d')](removeEntity(_0x2b42a5,null))[_0xe122('0x1d')](function(){return db[_0xe122('0x52')][_0xe122('0x64')]({'raw':!![]});})[_0xe122('0x1d')](function(_0x2e76c5){var _0x45416b=fs[_0xe122('0x65')](path[_0xe122('0x66')](config[_0xe122('0x62')],_0xe122('0x58')),_0xe122('0x59'));var _0x1a5ef2=ejs[_0xe122('0x63')](_0x45416b,{'contexts':_0x2e76c5});fs[_0xe122('0x67')](_0xe122('0x5a'),_0x1a5ef2);return respondWithRpcPromise('Reload',_0xe122('0x37'),{'module':_0xe122('0x5d')});})[_0xe122('0x27')](handleError(_0x2b42a5,null));};
\ No newline at end of file
+var _0x1a8e=['root','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','role','UserProfileSection','Contexts','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/context.ejs','eml-format','rimraf','zip-dir','request-promise','bluebird','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','get','destroy','sendStatus','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','length','include','find','create','body','readFileSync'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a8e,0xdc));var _0xe1a8=function(_0xaf573d,_0x2f131d){_0xaf573d=_0xaf573d-0x0;var _0x4bebc2=_0x1a8e[_0xaf573d];return _0x4bebc2;};'use strict';var emlformat=require(_0xe1a8('0x0'));var rimraf=require(_0xe1a8('0x1'));var zipdir=require(_0xe1a8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe1a8('0x3'));var moment=require('moment');var BPromise=require(_0xe1a8('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xe1a8('0x5'));var csv=require(_0xe1a8('0x6'));var ejs=require(_0xe1a8('0x7'));var fs=require('fs');var fs_extra=require(_0xe1a8('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe1a8('0x9'));var deskjs=require(_0xe1a8('0xa'));var toCsv=require(_0xe1a8('0x6'));var querystring=require(_0xe1a8('0xb'));var Papa=require(_0xe1a8('0xc'));var Redis=require('ioredis');var authService=require(_0xe1a8('0xd'));var qs=require(_0xe1a8('0xe'));var as=require(_0xe1a8('0xf'));var hardwareService=require(_0xe1a8('0x10'));var logger=require(_0xe1a8('0x11'))(_0xe1a8('0x12'));var utils=require(_0xe1a8('0x13'));var config=require(_0xe1a8('0x14'));var licenseUtil=require(_0xe1a8('0x15'));var db=require(_0xe1a8('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xe1a8('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x51792e,_0x57f4d6,_0x34d8e7,_0x133f02){return new BPromise(function(_0x3cb464,_0x545c86){var _0x1dba43=_0x133f02||client;return _0x1dba43['request'](_0x51792e,_0x34d8e7)[_0xe1a8('0x18')](function(_0x2bdc06){logger[_0xe1a8('0x19')](_0xe1a8('0x1a'),_0x57f4d6,_0xe1a8('0x1b'));logger[_0xe1a8('0x1c')](_0xe1a8('0x1d'),_0x57f4d6,_0xe1a8('0x1b'),JSON[_0xe1a8('0x1e')](_0x2bdc06));if(_0x2bdc06['error']){if(_0x2bdc06[_0xe1a8('0x1f')][_0xe1a8('0x20')]===0x1f4){logger[_0xe1a8('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x57f4d6,_0x2bdc06[_0xe1a8('0x1f')][_0xe1a8('0x21')]);return _0x545c86(_0x2bdc06[_0xe1a8('0x1f')][_0xe1a8('0x21')]);}logger['error'](_0xe1a8('0x1a'),_0x57f4d6,_0x2bdc06[_0xe1a8('0x1f')][_0xe1a8('0x21')]);return _0x3cb464(_0x2bdc06['error'][_0xe1a8('0x21')]);}else{logger[_0xe1a8('0x19')](_0xe1a8('0x1a'),_0x57f4d6,_0xe1a8('0x1b'));_0x3cb464(_0x2bdc06[_0xe1a8('0x22')][_0xe1a8('0x21')]);}})[_0xe1a8('0x23')](function(_0x56c189){logger[_0xe1a8('0x1f')](_0xe1a8('0x1a'),_0x57f4d6,_0x56c189);_0x545c86(_0x56c189);});});}function respondWithStatusCode(_0x396ffd,_0x43c98e){_0x43c98e=_0x43c98e||0xcc;return function(_0x3b0f06){if(_0x3b0f06){return _0x396ffd['sendStatus'](_0x43c98e);}return _0x396ffd[_0xe1a8('0x24')](_0x43c98e)[_0xe1a8('0x25')]();};}function respondWithResult(_0xc748d8,_0x52015f){_0x52015f=_0x52015f||0xc8;return function(_0x452c84){if(_0x452c84){return _0xc748d8['status'](_0x52015f)[_0xe1a8('0x26')](_0x452c84);}};}function respondWithFilteredResult(_0x19c80e,_0x4cb8ff){return function(_0x478ffc){if(_0x478ffc){var _0x3fb9f4=typeof _0x4cb8ff['offset']===_0xe1a8('0x27')&&typeof _0x4cb8ff[_0xe1a8('0x28')]==='undefined';var _0x2b0d18=_0x478ffc[_0xe1a8('0x29')];var _0x63d196=_0x3fb9f4?0x0:_0x4cb8ff['offset'];var _0x1e2697=_0x3fb9f4?_0x478ffc[_0xe1a8('0x29')]:_0x4cb8ff[_0xe1a8('0x2a')]+_0x4cb8ff[_0xe1a8('0x28')];var _0x4466cd;if(_0x1e2697>=_0x2b0d18){_0x1e2697=_0x2b0d18;_0x4466cd=0xc8;}else{_0x4466cd=0xce;}_0x19c80e[_0xe1a8('0x24')](_0x4466cd);return _0x19c80e[_0xe1a8('0x2b')](_0xe1a8('0x2c'),_0x63d196+'-'+_0x1e2697+'/'+_0x2b0d18)[_0xe1a8('0x26')](_0x478ffc);}return null;};}function patchUpdates(_0x303151){return function(_0x110768){try{jsonpatch[_0xe1a8('0x2d')](_0x110768,_0x303151,!![]);}catch(_0xf90e12){return BPromise['reject'](_0xf90e12);}return _0x110768[_0xe1a8('0x2e')]();};}function saveUpdates(_0x3846d9,_0x25c7e9){return function(_0x2d12ee){if(_0x2d12ee){return _0x2d12ee[_0xe1a8('0x2f')](_0x3846d9)[_0xe1a8('0x18')](function(_0x257ce0){return _0x257ce0;});}return null;};}function removeEntity(_0x5c52e7,_0x579320){return function(_0x1ea51c){if(_0x1ea51c){return _0x1ea51c['destroy']()['then'](function(){var _0x5cb85b=_0x1ea51c[_0xe1a8('0x30')]({'plain':!![]});var _0x5d8bd7='Contexts';return db['UserProfileResource'][_0xe1a8('0x31')]({'where':{'type':_0x5d8bd7,'resourceId':_0x5cb85b['id']}})[_0xe1a8('0x18')](function(){return _0x1ea51c;});})[_0xe1a8('0x18')](function(){_0x5c52e7[_0xe1a8('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x581576,_0x123091){return function(_0x1d628d){if(!_0x1d628d){_0x581576[_0xe1a8('0x32')](0x194);}return _0x1d628d;};}function handleError(_0x385c23,_0x24aa74){_0x24aa74=_0x24aa74||0x1f4;return function(_0x502a7a){logger[_0xe1a8('0x1f')](_0x502a7a[_0xe1a8('0x33')]);if(_0x502a7a[_0xe1a8('0x34')]){delete _0x502a7a[_0xe1a8('0x34')];}_0x385c23['status'](_0x24aa74)[_0xe1a8('0x35')](_0x502a7a);};}exports[_0xe1a8('0x36')]=function(_0x1af976,_0x1b6381){var _0x449f0b={},_0x3fff14={},_0xbbf2c2={'count':0x0,'rows':[]};var _0x2df6df=_[_0xe1a8('0x37')](db[_0xe1a8('0x38')][_0xe1a8('0x39')],function(_0x13560e){return{'name':_0x13560e[_0xe1a8('0x3a')],'type':_0x13560e[_0xe1a8('0x3b')]['key']};});_0x3fff14[_0xe1a8('0x3c')]=_[_0xe1a8('0x37')](_0x2df6df,_0xe1a8('0x34'));_0x3fff14[_0xe1a8('0x3d')]=_[_0xe1a8('0x3e')](_0x1af976[_0xe1a8('0x3d')]);_0x3fff14[_0xe1a8('0x3f')]=_['intersection'](_0x3fff14[_0xe1a8('0x3c')],_0x3fff14[_0xe1a8('0x3d')]);_0x449f0b['attributes']=_[_0xe1a8('0x40')](_0x3fff14[_0xe1a8('0x3c')],qs[_0xe1a8('0x41')](_0x1af976[_0xe1a8('0x3d')][_0xe1a8('0x41')]));_0x449f0b[_0xe1a8('0x42')]=_0x449f0b[_0xe1a8('0x42')]['length']?_0x449f0b[_0xe1a8('0x42')]:_0x3fff14[_0xe1a8('0x3c')];if(!_0x1af976['query'][_0xe1a8('0x43')](_0xe1a8('0x44'))){_0x449f0b[_0xe1a8('0x28')]=qs[_0xe1a8('0x28')](_0x1af976[_0xe1a8('0x3d')][_0xe1a8('0x28')]);_0x449f0b[_0xe1a8('0x2a')]=qs[_0xe1a8('0x2a')](_0x1af976[_0xe1a8('0x3d')]['offset']);}_0x449f0b[_0xe1a8('0x45')]=qs[_0xe1a8('0x46')](_0x1af976[_0xe1a8('0x3d')]['sort']);_0x449f0b[_0xe1a8('0x47')]=qs['filters'](_['pick'](_0x1af976[_0xe1a8('0x3d')],_0x3fff14[_0xe1a8('0x3f')]),_0x2df6df);if(_0x1af976[_0xe1a8('0x3d')][_0xe1a8('0x48')]){_0x449f0b[_0xe1a8('0x47')]=_[_0xe1a8('0x49')](_0x449f0b[_0xe1a8('0x47')],{'$or':_['map'](_0x2df6df,function(_0x5dffae){if(_0x5dffae[_0xe1a8('0x3b')]!==_0xe1a8('0x4a')){var _0x3266c6={};_0x3266c6[_0x5dffae[_0xe1a8('0x34')]]={'$like':'%'+_0x1af976[_0xe1a8('0x3d')]['filter']+'%'};return _0x3266c6;}})});}_0x449f0b=_[_0xe1a8('0x49')]({},_0x449f0b,_0x1af976['options']);var _0x42f1cf={'where':_0x449f0b[_0xe1a8('0x47')]};return db[_0xe1a8('0x38')][_0xe1a8('0x29')](_0x42f1cf)['then'](function(_0x57e526){_0xbbf2c2[_0xe1a8('0x29')]=_0x57e526;if(_0x1af976[_0xe1a8('0x3d')][_0xe1a8('0x4b')]){_0x449f0b['include']=[{'all':!![]}];}return db[_0xe1a8('0x38')][_0xe1a8('0x4c')](_0x449f0b);})[_0xe1a8('0x18')](function(_0x356064){_0xbbf2c2[_0xe1a8('0x4d')]=_0x356064;return _0xbbf2c2;})[_0xe1a8('0x18')](respondWithFilteredResult(_0x1b6381,_0x449f0b))[_0xe1a8('0x23')](handleError(_0x1b6381,null));};exports[_0xe1a8('0x4e')]=function(_0x5cca02,_0x4890da){var _0x5baa04={'raw':![],'where':{'id':_0x5cca02[_0xe1a8('0x4f')]['id']}},_0x5845fe={};_0x5845fe['model']=_['keys'](db['VoiceContext'][_0xe1a8('0x39')]);_0x5845fe[_0xe1a8('0x3d')]=_[_0xe1a8('0x3e')](_0x5cca02[_0xe1a8('0x3d')]);_0x5845fe[_0xe1a8('0x3f')]=_[_0xe1a8('0x40')](_0x5845fe[_0xe1a8('0x3c')],_0x5845fe[_0xe1a8('0x3d')]);_0x5baa04['attributes']=_[_0xe1a8('0x40')](_0x5845fe[_0xe1a8('0x3c')],qs['fields'](_0x5cca02[_0xe1a8('0x3d')][_0xe1a8('0x41')]));_0x5baa04[_0xe1a8('0x42')]=_0x5baa04[_0xe1a8('0x42')][_0xe1a8('0x50')]?_0x5baa04[_0xe1a8('0x42')]:_0x5845fe[_0xe1a8('0x3c')];if(_0x5cca02[_0xe1a8('0x3d')]['includeAll']){_0x5baa04[_0xe1a8('0x51')]=[{'all':!![]}];}_0x5baa04=_['merge']({},_0x5baa04,_0x5cca02['options']);return db['VoiceContext'][_0xe1a8('0x52')](_0x5baa04)[_0xe1a8('0x18')](handleEntityNotFound(_0x4890da,null))['then'](respondWithResult(_0x4890da,null))[_0xe1a8('0x23')](handleError(_0x4890da,null));};exports[_0xe1a8('0x53')]=function(_0x290a68,_0x54b749,_0x1c60e2){var _0x52ce21;return db[_0xe1a8('0x38')][_0xe1a8('0x53')](_0x290a68[_0xe1a8('0x54')],{'raw':!![]})[_0xe1a8('0x18')](function(_0x479c58){_0x52ce21=_0x479c58;return db['VoiceContext'][_0xe1a8('0x4c')]({'raw':!![]});})[_0xe1a8('0x18')](function(_0x4bc841){var _0xbde88f=fs[_0xe1a8('0x55')](path['join'](config[_0xe1a8('0x56')],'server/files/templates/context.ejs'),_0xe1a8('0x57'));var _0x5dc6ea=ejs[_0xe1a8('0x58')](_0xbde88f,{'contexts':_0x4bc841||[]});fs[_0xe1a8('0x59')](_0xe1a8('0x5a'),_0x5dc6ea);})['then'](function(){return respondWithRpcPromise(_0xe1a8('0x5b'),_0xe1a8('0x53'),{'module':_0xe1a8('0x5c')});})[_0xe1a8('0x18')](function(){var _0x281d7b=_0x290a68[_0xe1a8('0x5d')][_0xe1a8('0x30')]({'plain':!![]});if(!_0x281d7b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x281d7b[_0xe1a8('0x5e')]===_0xe1a8('0x5d')){var _0x36d5da=_0x52ce21[_0xe1a8('0x30')]({'plain':!![]});return db[_0xe1a8('0x5f')][_0xe1a8('0x52')]({'where':{'name':_0xe1a8('0x60'),'userProfileId':_0x281d7b[_0xe1a8('0x61')]},'raw':!![]})[_0xe1a8('0x18')](function(_0xdc000e){if(_0xdc000e&&_0xdc000e['autoAssociation']===0x0){return db[_0xe1a8('0x62')]['create']({'name':_0x36d5da[_0xe1a8('0x34')],'resourceId':_0x36d5da['id'],'type':_0xdc000e[_0xe1a8('0x34')],'sectionId':_0xdc000e['id']},{})[_0xe1a8('0x18')](function(){return _0x52ce21;});}else{return _0x52ce21;}})[_0xe1a8('0x23')](function(_0xb07ca1){logger[_0xe1a8('0x1f')](_0xe1a8('0x63'),_0xb07ca1);throw _0xb07ca1;});}return _0x52ce21;})['then'](respondWithResult(_0x54b749,0xc9))[_0xe1a8('0x23')](handleError(_0x54b749,null));};exports['update']=function(_0x39296f,_0x5d4fd7,_0x17dbb9){var _0x22552a;return db[_0xe1a8('0x38')]['find']({'where':{'id':_0x39296f['params']['id']}})[_0xe1a8('0x18')](handleEntityNotFound(_0x5d4fd7,null))['then'](saveUpdates(_0x39296f[_0xe1a8('0x54')],null))[_0xe1a8('0x18')](function(_0x12bdc3){if(_0x12bdc3){_0x22552a=_0x12bdc3;return db[_0xe1a8('0x38')][_0xe1a8('0x4c')]({'raw':!![]});}})['then'](function(_0x15835e){var _0x5e3fc8=fs['readFileSync'](path[_0xe1a8('0x64')](config[_0xe1a8('0x56')],'server/files/templates/context.ejs'),_0xe1a8('0x57'));var _0x9fbaa=ejs[_0xe1a8('0x58')](_0x5e3fc8,{'contexts':_0x15835e||[]});fs[_0xe1a8('0x59')](_0xe1a8('0x5a'),_0x9fbaa);})[_0xe1a8('0x18')](function(){return respondWithRpcPromise('Reload',_0xe1a8('0x2f'),{'module':'chan_sip.so'});})[_0xe1a8('0x18')](function(){return _0x22552a;})[_0xe1a8('0x18')](respondWithResult(_0x5d4fd7,null))[_0xe1a8('0x23')](handleError(_0x5d4fd7,null));};exports['destroy']=function(_0x5121ed,_0x169ab4,_0xc46cc8){var _0xca5d18;return db[_0xe1a8('0x38')][_0xe1a8('0x52')]({'where':{'id':_0x5121ed[_0xe1a8('0x4f')]['id']}})[_0xe1a8('0x18')](handleEntityNotFound(_0x169ab4,null))[_0xe1a8('0x18')](removeEntity(_0x169ab4,null))[_0xe1a8('0x18')](function(){return db[_0xe1a8('0x38')][_0xe1a8('0x4c')]({'raw':!![]});})['then'](function(_0x9d5eb3){var _0xce8fc=fs[_0xe1a8('0x55')](path['join'](config[_0xe1a8('0x56')],_0xe1a8('0x65')),_0xe1a8('0x57'));var _0x10e142=ejs[_0xe1a8('0x58')](_0xce8fc,{'contexts':_0x9d5eb3});fs[_0xe1a8('0x59')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x10e142);return respondWithRpcPromise(_0xe1a8('0x5b'),'destroy',{'module':_0xe1a8('0x5c')});})['catch'](handleError(_0x169ab4,null));};
\ No newline at end of file
index cd679b5..91f032d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da5=['VoiceContext','voice_contexts','lodash','moment','request-promise','path','../../config/environment','exports'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x0da5,0xea));var _0x50da=function(_0x5d67f6,_0x3dfbed){_0x5d67f6=_0x5d67f6-0x0;var _0x36fdf9=_0x0da5[_0x5d67f6];return _0x36fdf9;};'use strict';var _=require(_0x50da('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x50da('0x1'));var BPromise=require('bluebird');var rp=require(_0x50da('0x2'));var fs=require('fs');var path=require(_0x50da('0x3'));var rimraf=require('rimraf');var config=require(_0x50da('0x4'));var attributes=require('./voiceContext.attributes');module[_0x50da('0x5')]=function(_0x3b19c5,_0x467570){return _0x3b19c5['define'](_0x50da('0x6'),attributes,{'tableName':_0x50da('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72d7=['define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','path','./voiceContext.attributes','exports'];(function(_0x17b1f4,_0x1d8f9b){var _0x581a90=function(_0x7be633){while(--_0x7be633){_0x17b1f4['push'](_0x17b1f4['shift']());}};_0x581a90(++_0x1d8f9b);}(_0x72d7,0x19b));var _0x772d=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x72d7[_0x37c22c];return _0x119d79;};'use strict';var _=require(_0x772d('0x0'));var util=require(_0x772d('0x1'));var logger=require(_0x772d('0x2'))(_0x772d('0x3'));var moment=require(_0x772d('0x4'));var BPromise=require(_0x772d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x772d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x772d('0x7'));module[_0x772d('0x8')]=function(_0x2b014d,_0x527450){return _0x2b014d[_0x772d('0x9')](_0x772d('0xa'),attributes,{'tableName':_0x772d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 613fd64..7d6eef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d3=['request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x519378,_0x6bec08){var _0x278456=function(_0x51980e){while(--_0x51980e){_0x519378['push'](_0x519378['shift']());}};_0x278456(++_0x6bec08);}(_0x01d3,0xa2));var _0x301d=function(_0x4b59e7,_0x1667fa){_0x4b59e7=_0x4b59e7-0x0;var _0x3b07d0=_0x01d3[_0x4b59e7];return _0x3b07d0;};'use strict';var _=require(_0x301d('0x0'));var util=require(_0x301d('0x1'));var moment=require(_0x301d('0x2'));var BPromise=require(_0x301d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x301d('0x4'));var db=require(_0x301d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x301d('0x6'))(_0x301d('0x7'));var config=require(_0x301d('0x8'));var jayson=require(_0x301d('0x9'));var client=jayson['client'][_0x301d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d8fc2,_0xe2b2d8,_0x3bbbde){return new BPromise(function(_0x35e760,_0x3ba019){return client[_0x301d('0xb')](_0x2d8fc2,_0x3bbbde)[_0x301d('0xc')](function(_0x35ae14){logger[_0x301d('0xd')]('VoiceContext,\x20%s,\x20%s',_0xe2b2d8,_0x301d('0xe'));logger[_0x301d('0xf')](_0x301d('0x10'),_0xe2b2d8,'request\x20sent',JSON[_0x301d('0x11')](_0x35ae14));if(_0x35ae14[_0x301d('0x12')]){if(_0x35ae14['error']['code']===0x1f4){logger['error'](_0x301d('0x13'),_0xe2b2d8,_0x35ae14[_0x301d('0x12')][_0x301d('0x14')]);return _0x3ba019(_0x35ae14[_0x301d('0x12')][_0x301d('0x14')]);}logger[_0x301d('0x12')](_0x301d('0x13'),_0xe2b2d8,_0x35ae14['error']['message']);return _0x35e760(_0x35ae14[_0x301d('0x12')][_0x301d('0x14')]);}else{logger[_0x301d('0xd')]('VoiceContext,\x20%s,\x20%s',_0xe2b2d8,'request\x20sent');_0x35e760(_0x35ae14['result']['message']);}})[_0x301d('0x15')](function(_0x3deffb){logger[_0x301d('0x12')](_0x301d('0x13'),_0xe2b2d8,_0x3deffb);_0x3ba019(_0x3deffb);});});}
\ No newline at end of file
+var _0xd5a2=['debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s'];(function(_0x30dd87,_0x1d3e6d){var _0x38b422=function(_0x24e7b6){while(--_0x24e7b6){_0x30dd87['push'](_0x30dd87['shift']());}};_0x38b422(++_0x1d3e6d);}(_0xd5a2,0x1eb));var _0x2d5a=function(_0x14ed99,_0x1219a3){_0x14ed99=_0x14ed99-0x0;var _0xb0426c=_0xd5a2[_0x14ed99];return _0xb0426c;};'use strict';var _=require('lodash');var util=require(_0x2d5a('0x0'));var moment=require(_0x2d5a('0x1'));var BPromise=require(_0x2d5a('0x2'));var rs=require(_0x2d5a('0x3'));var fs=require('fs');var Redis=require(_0x2d5a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2d5a('0x5'));var logger=require(_0x2d5a('0x6'))(_0x2d5a('0x7'));var config=require(_0x2d5a('0x8'));var jayson=require(_0x2d5a('0x9'));var client=jayson[_0x2d5a('0xa')][_0x2d5a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ae103,_0x1cdfc4,_0x7eb4c3){return new BPromise(function(_0x79898c,_0x4d5c52){return client['request'](_0x1ae103,_0x7eb4c3)[_0x2d5a('0xc')](function(_0x562b6a){logger[_0x2d5a('0xd')](_0x2d5a('0xe'),_0x1cdfc4,'request\x20sent');logger[_0x2d5a('0xf')](_0x2d5a('0x10'),_0x1cdfc4,_0x2d5a('0x11'),JSON[_0x2d5a('0x12')](_0x562b6a));if(_0x562b6a[_0x2d5a('0x13')]){if(_0x562b6a['error'][_0x2d5a('0x14')]===0x1f4){logger[_0x2d5a('0x13')](_0x2d5a('0xe'),_0x1cdfc4,_0x562b6a[_0x2d5a('0x13')]['message']);return _0x4d5c52(_0x562b6a['error'][_0x2d5a('0x15')]);}logger[_0x2d5a('0x13')](_0x2d5a('0xe'),_0x1cdfc4,_0x562b6a[_0x2d5a('0x13')]['message']);return _0x79898c(_0x562b6a[_0x2d5a('0x13')][_0x2d5a('0x15')]);}else{logger[_0x2d5a('0xd')](_0x2d5a('0xe'),_0x1cdfc4,_0x2d5a('0x11'));_0x79898c(_0x562b6a['result'][_0x2d5a('0x15')]);}})[_0x2d5a('0x16')](function(_0x38de62){logger[_0x2d5a('0x13')](_0x2d5a('0xe'),_0x1cdfc4,_0x38de62);_0x4d5c52(_0x38de62);});});}
\ No newline at end of file
index e361ef8..0359066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x219c=['delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x219c,0x163));var _0xc219=function(_0x3a2208,_0x470966){_0x3a2208=_0x3a2208-0x0;var _0x41f928=_0x219c[_0x3a2208];return _0x41f928;};'use strict';var multer=require(_0xc219('0x0'));var util=require(_0xc219('0x1'));var path=require(_0xc219('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc219('0x3')]();var fs_extra=require(_0xc219('0x4'));var auth=require(_0xc219('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc219('0x6'));var controller=require(_0xc219('0x7'));router[_0xc219('0x8')]('/',auth[_0xc219('0x9')](),controller[_0xc219('0xa')]);router[_0xc219('0x8')](_0xc219('0xb'),auth[_0xc219('0x9')](),controller[_0xc219('0xc')]);router['get'](_0xc219('0xd'),auth[_0xc219('0x9')](),controller[_0xc219('0xe')]);router[_0xc219('0xf')]('/',auth[_0xc219('0x9')](),controller[_0xc219('0x10')]);router[_0xc219('0x11')](_0xc219('0xd'),auth[_0xc219('0x9')](),controller[_0xc219('0x12')]);router[_0xc219('0x13')]('/:id',auth[_0xc219('0x9')](),controller[_0xc219('0x14')]);module[_0xc219('0x15')]=router;
\ No newline at end of file
+var _0x3868=['fs-extra','../../components/auth/service','./voiceDialReport.controller','get','/describe','isAuthenticated','/:id','post','create','put','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x42d403,_0x339b31){var _0x523def=function(_0xe1772d){while(--_0xe1772d){_0x42d403['push'](_0x42d403['shift']());}};_0x523def(++_0x339b31);}(_0x3868,0x1ad));var _0x8386=function(_0x4afc16,_0x460a7c){_0x4afc16=_0x4afc16-0x0;var _0x84b2be=_0x3868[_0x4afc16];return _0x84b2be;};'use strict';var multer=require(_0x8386('0x0'));var util=require('util');var path=require(_0x8386('0x1'));var timeout=require(_0x8386('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8386('0x3'));var auth=require(_0x8386('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8386('0x5'));router[_0x8386('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x8386('0x6')](_0x8386('0x7'),auth[_0x8386('0x8')](),controller['describe']);router[_0x8386('0x6')](_0x8386('0x9'),auth[_0x8386('0x8')](),controller['show']);router[_0x8386('0xa')]('/',auth[_0x8386('0x8')](),controller[_0x8386('0xb')]);router[_0x8386('0xc')](_0x8386('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x8386('0xd')]('/:id',auth[_0x8386('0x8')](),controller[_0x8386('0xe')]);module[_0x8386('0xf')]=router;
\ No newline at end of file
index eab7030..f05ce27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['INTEGER','DATE','sequelize','exports','STRING'];(function(_0x122cc1,_0x5c956e){var _0x1e33af=function(_0x949b75){while(--_0x949b75){_0x122cc1['push'](_0x122cc1['shift']());}};_0x1e33af(++_0x5c956e);}(_0x8ef6,0xf2));var _0x68ef=function(_0x345ee8,_0xcd13e5){_0x345ee8=_0x345ee8-0x0;var _0x36b8ee=_0x8ef6[_0x345ee8];return _0x36b8ee;};'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
+var _0xf3cd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x1e6887,_0x54b0a9){var _0x5d49f2=function(_0xeef84d){while(--_0xeef84d){_0x1e6887['push'](_0x1e6887['shift']());}};_0x5d49f2(++_0x54b0a9);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5bfa44,_0x76dacc){_0x5bfa44=_0x5bfa44-0x0;var _0x43815f=_0xf3cd[_0x5bfa44];return _0x43815f;};'use strict';var Sequelize=require(_0xdf3c('0x0'));module[_0xdf3c('0x1')]={'privilege':{'type':Sequelize[_0xdf3c('0x2')]},'channel':{'type':Sequelize[_0xdf3c('0x2')]},'channelstate':{'type':Sequelize[_0xdf3c('0x3')]},'channelstatedesc':{'type':Sequelize[_0xdf3c('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xdf3c('0x2')]},'connectedlinenum':{'type':Sequelize[_0xdf3c('0x2')]},'connectedlinename':{'type':Sequelize[_0xdf3c('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xdf3c('0x2')]},'context':{'type':Sequelize[_0xdf3c('0x2')]},'exten':{'type':Sequelize[_0xdf3c('0x2')]},'priority':{'type':Sequelize[_0xdf3c('0x3')]},'uniqueid':{'type':Sequelize[_0xdf3c('0x2')]},'linkedid':{'type':Sequelize[_0xdf3c('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xdf3c('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xdf3c('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xdf3c('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xdf3c('0x2')]},'destaccountcode':{'type':Sequelize[_0xdf3c('0x2')]},'destcontext':{'type':Sequelize[_0xdf3c('0x2')]},'destexten':{'type':Sequelize[_0xdf3c('0x2')]},'destpriority':{'type':Sequelize[_0xdf3c('0x3')]},'destuniqueid':{'type':Sequelize[_0xdf3c('0x2')]},'destlinkedid':{'type':Sequelize[_0xdf3c('0x2')]},'dialstring':{'type':Sequelize[_0xdf3c('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xdf3c('0x4')]},'answertime':{'type':Sequelize[_0xdf3c('0x4')]},'endtime':{'type':Sequelize[_0xdf3c('0x4')]},'lastevent':{'type':Sequelize[_0xdf3c('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xdf3c('0x3')]},'duration':{'type':Sequelize[_0xdf3c('0x3')]},'holdtime':{'type':Sequelize[_0xdf3c('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index a955e0d..c28d053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41be=['sort','where','filters','pick','filter','merge','options','rows','catch','show','params','include','find','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','index','map','VoiceDialReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','limit','order'];(function(_0x4931c2,_0x240a8b){var _0x3275d8=function(_0x91febc){while(--_0x91febc){_0x4931c2['push'](_0x4931c2['shift']());}};_0x3275d8(++_0x240a8b);}(_0x41be,0xf1));var _0xe41b=function(_0x1d291d,_0x17314a){_0x1d291d=_0x1d291d-0x0;var _0x44cc4e=_0x41be[_0x1d291d];return _0x44cc4e;};'use strict';var emlformat=require(_0xe41b('0x0'));var rimraf=require(_0xe41b('0x1'));var zipdir=require(_0xe41b('0x2'));var jsonpatch=require(_0xe41b('0x3'));var rp=require('request-promise');var moment=require(_0xe41b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe41b('0x5'));var util=require(_0xe41b('0x6'));var path=require(_0xe41b('0x7'));var sox=require(_0xe41b('0x8'));var csv=require('to-csv');var ejs=require(_0xe41b('0x9'));var fs=require('fs');var fs_extra=require(_0xe41b('0xa'));var _=require(_0xe41b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe41b('0xc'));var deskjs=require(_0xe41b('0xd'));var toCsv=require(_0xe41b('0xe'));var querystring=require(_0xe41b('0xf'));var Papa=require(_0xe41b('0x10'));var Redis=require(_0xe41b('0x11'));var authService=require(_0xe41b('0x12'));var qs=require(_0xe41b('0x13'));var as=require(_0xe41b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe41b('0x15'))('api');var utils=require(_0xe41b('0x16'));var config=require(_0xe41b('0x17'));var licenseUtil=require(_0xe41b('0x18'));var db=require(_0xe41b('0x19'))['db'];function respondWithStatusCode(_0x480d08,_0x336ad1){_0x336ad1=_0x336ad1||0xcc;return function(_0x2be054){if(_0x2be054){return _0x480d08['sendStatus'](_0x336ad1);}return _0x480d08[_0xe41b('0x1a')](_0x336ad1)[_0xe41b('0x1b')]();};}function respondWithResult(_0x3ff810,_0x471d80){_0x471d80=_0x471d80||0xc8;return function(_0x2e5244){if(_0x2e5244){return _0x3ff810[_0xe41b('0x1a')](_0x471d80)[_0xe41b('0x1c')](_0x2e5244);}};}function respondWithFilteredResult(_0x42a26e,_0x3683a4){return function(_0x29720a){if(_0x29720a){var _0x261bed=typeof _0x3683a4[_0xe41b('0x1d')]===_0xe41b('0x1e')&&typeof _0x3683a4['limit']===_0xe41b('0x1e');var _0x5b18a5=_0x29720a[_0xe41b('0x1f')];var _0x494df4=_0x261bed?0x0:_0x3683a4[_0xe41b('0x1d')];var _0x14572d=_0x261bed?_0x29720a[_0xe41b('0x1f')]:_0x3683a4[_0xe41b('0x1d')]+_0x3683a4['limit'];var _0xf0c645;if(_0x14572d>=_0x5b18a5){_0x14572d=_0x5b18a5;_0xf0c645=0xc8;}else{_0xf0c645=0xce;}_0x42a26e[_0xe41b('0x1a')](_0xf0c645);return _0x42a26e[_0xe41b('0x20')](_0xe41b('0x21'),_0x494df4+'-'+_0x14572d+'/'+_0x5b18a5)[_0xe41b('0x1c')](_0x29720a);}return null;};}function patchUpdates(_0x477ab5){return function(_0x428ca8){try{jsonpatch[_0xe41b('0x22')](_0x428ca8,_0x477ab5,!![]);}catch(_0x155e49){return BPromise[_0xe41b('0x23')](_0x155e49);}return _0x428ca8[_0xe41b('0x24')]();};}function saveUpdates(_0x318790,_0x17202c){return function(_0x5ad9db){if(_0x5ad9db){return _0x5ad9db['update'](_0x318790)[_0xe41b('0x25')](function(_0x5378db){return _0x5378db;});}return null;};}function removeEntity(_0x529bda,_0x47fc01){return function(_0x438e83){if(_0x438e83){return _0x438e83[_0xe41b('0x26')]()['then'](function(){_0x529bda[_0xe41b('0x1a')](0xcc)[_0xe41b('0x1b')]();});}};}function handleEntityNotFound(_0x35979d,_0x324c9c){return function(_0x532e05){if(!_0x532e05){_0x35979d[_0xe41b('0x27')](0x194);}return _0x532e05;};}function handleError(_0x314619,_0x1e571d){_0x1e571d=_0x1e571d||0x1f4;return function(_0x417773){logger[_0xe41b('0x28')](_0x417773[_0xe41b('0x29')]);if(_0x417773[_0xe41b('0x2a')]){delete _0x417773[_0xe41b('0x2a')];}_0x314619[_0xe41b('0x1a')](_0x1e571d)['send'](_0x417773);};}exports[_0xe41b('0x2b')]=function(_0x251940,_0x3aa6d1){var _0x5d4ad4={},_0x11b04c={},_0x518d40={'count':0x0,'rows':[]};var _0x4c896d=_[_0xe41b('0x2c')](db[_0xe41b('0x2d')][_0xe41b('0x2e')],function(_0x2fb211){return{'name':_0x2fb211[_0xe41b('0x2f')],'type':_0x2fb211[_0xe41b('0x30')]['key']};});_0x11b04c[_0xe41b('0x31')]=_[_0xe41b('0x2c')](_0x4c896d,_0xe41b('0x2a'));_0x11b04c[_0xe41b('0x32')]=_[_0xe41b('0x33')](_0x251940['query']);_0x11b04c['filters']=_[_0xe41b('0x34')](_0x11b04c[_0xe41b('0x31')],_0x11b04c[_0xe41b('0x32')]);_0x5d4ad4[_0xe41b('0x35')]=_['intersection'](_0x11b04c[_0xe41b('0x31')],qs[_0xe41b('0x36')](_0x251940[_0xe41b('0x32')]['fields']));_0x5d4ad4[_0xe41b('0x35')]=_0x5d4ad4[_0xe41b('0x35')][_0xe41b('0x37')]?_0x5d4ad4[_0xe41b('0x35')]:_0x11b04c[_0xe41b('0x31')];if(!_0x251940[_0xe41b('0x32')][_0xe41b('0x38')]('nolimit')){_0x5d4ad4[_0xe41b('0x39')]=qs[_0xe41b('0x39')](_0x251940[_0xe41b('0x32')][_0xe41b('0x39')]);_0x5d4ad4['offset']=qs[_0xe41b('0x1d')](_0x251940[_0xe41b('0x32')][_0xe41b('0x1d')]);}_0x5d4ad4[_0xe41b('0x3a')]=qs[_0xe41b('0x3b')](_0x251940[_0xe41b('0x32')]['sort']);_0x5d4ad4[_0xe41b('0x3c')]=qs[_0xe41b('0x3d')](_[_0xe41b('0x3e')](_0x251940[_0xe41b('0x32')],_0x11b04c[_0xe41b('0x3d')]),_0x4c896d);if(_0x251940['query'][_0xe41b('0x3f')]){_0x5d4ad4[_0xe41b('0x3c')]=_['merge'](_0x5d4ad4['where'],{'$or':_[_0xe41b('0x2c')](_0x4c896d,function(_0x2d3fe1){if(_0x2d3fe1[_0xe41b('0x30')]!=='VIRTUAL'){var _0x4a943d={};_0x4a943d[_0x2d3fe1[_0xe41b('0x2a')]]={'$like':'%'+_0x251940['query'][_0xe41b('0x3f')]+'%'};return _0x4a943d;}})});}_0x5d4ad4=_[_0xe41b('0x40')]({},_0x5d4ad4,_0x251940[_0xe41b('0x41')]);var _0xf7e6a5={'where':_0x5d4ad4[_0xe41b('0x3c')]};return db[_0xe41b('0x2d')][_0xe41b('0x1f')](_0xf7e6a5)['then'](function(_0xed6f4b){_0x518d40[_0xe41b('0x1f')]=_0xed6f4b;if(_0x251940[_0xe41b('0x32')]['includeAll']){_0x5d4ad4['include']=[{'all':!![]}];}return db[_0xe41b('0x2d')]['findAll'](_0x5d4ad4);})[_0xe41b('0x25')](function(_0x1785f2){_0x518d40[_0xe41b('0x42')]=_0x1785f2;return _0x518d40;})[_0xe41b('0x25')](respondWithFilteredResult(_0x3aa6d1,_0x5d4ad4))[_0xe41b('0x43')](handleError(_0x3aa6d1,null));};exports[_0xe41b('0x44')]=function(_0x10686b,_0x464834){var _0x18024d={'raw':!![],'where':{'id':_0x10686b[_0xe41b('0x45')]['id']}},_0x4df8e8={};_0x4df8e8[_0xe41b('0x31')]=_[_0xe41b('0x33')](db[_0xe41b('0x2d')][_0xe41b('0x2e')]);_0x4df8e8[_0xe41b('0x32')]=_['keys'](_0x10686b[_0xe41b('0x32')]);_0x4df8e8[_0xe41b('0x3d')]=_[_0xe41b('0x34')](_0x4df8e8[_0xe41b('0x31')],_0x4df8e8['query']);_0x18024d['attributes']=_[_0xe41b('0x34')](_0x4df8e8['model'],qs[_0xe41b('0x36')](_0x10686b['query']['fields']));_0x18024d['attributes']=_0x18024d[_0xe41b('0x35')][_0xe41b('0x37')]?_0x18024d['attributes']:_0x4df8e8['model'];if(_0x10686b[_0xe41b('0x32')]['includeAll']){_0x18024d[_0xe41b('0x46')]=[{'all':!![]}];}_0x18024d=_[_0xe41b('0x40')]({},_0x18024d,_0x10686b[_0xe41b('0x41')]);return db[_0xe41b('0x2d')][_0xe41b('0x47')](_0x18024d)[_0xe41b('0x25')](handleEntityNotFound(_0x464834,null))['then'](respondWithResult(_0x464834,null))['catch'](handleError(_0x464834,null));};exports['create']=function(_0x595688,_0x5bec6c){return db['VoiceDialReport']['create'](_0x595688[_0xe41b('0x48')],{})['then'](respondWithResult(_0x5bec6c,0xc9))['catch'](handleError(_0x5bec6c,null));};exports[_0xe41b('0x49')]=function(_0x5f4cad,_0x30b4e0){if(_0x5f4cad[_0xe41b('0x48')]['id']){delete _0x5f4cad[_0xe41b('0x48')]['id'];}return db[_0xe41b('0x2d')][_0xe41b('0x47')]({'where':{'id':_0x5f4cad[_0xe41b('0x45')]['id']}})[_0xe41b('0x25')](handleEntityNotFound(_0x30b4e0,null))[_0xe41b('0x25')](saveUpdates(_0x5f4cad[_0xe41b('0x48')],null))[_0xe41b('0x25')](respondWithResult(_0x30b4e0,null))['catch'](handleError(_0x30b4e0,null));};exports[_0xe41b('0x26')]=function(_0x2c2848,_0x2725c8){return db[_0xe41b('0x2d')][_0xe41b('0x47')]({'where':{'id':_0x2c2848[_0xe41b('0x45')]['id']}})[_0xe41b('0x25')](handleEntityNotFound(_0x2725c8,null))['then'](removeEntity(_0x2725c8,null))[_0xe41b('0x43')](handleError(_0x2725c8,null));};exports[_0xe41b('0x4a')]=function(_0x4bff9b,_0x36d228){return db[_0xe41b('0x2d')][_0xe41b('0x4a')]()[_0xe41b('0x25')](respondWithResult(_0x36d228,null))['catch'](handleError(_0x36d228,null));};
\ No newline at end of file
+var _0x0686=['bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','then','destroy','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','options','includeAll','include','findAll','rows','catch','params','merge','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x1e999f,_0x32204e){var _0x5052ea=function(_0xa358bf){while(--_0xa358bf){_0x1e999f['push'](_0x1e999f['shift']());}};_0x5052ea(++_0x32204e);}(_0x0686,0x1c9));var _0x6068=function(_0x43cf7c,_0x349b58){_0x43cf7c=_0x43cf7c-0x0;var _0x41b501=_0x0686[_0x43cf7c];return _0x41b501;};'use strict';var emlformat=require(_0x6068('0x0'));var rimraf=require(_0x6068('0x1'));var zipdir=require(_0x6068('0x2'));var jsonpatch=require(_0x6068('0x3'));var rp=require(_0x6068('0x4'));var moment=require('moment');var BPromise=require(_0x6068('0x5'));var Mustache=require(_0x6068('0x6'));var util=require(_0x6068('0x7'));var path=require(_0x6068('0x8'));var sox=require(_0x6068('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6068('0xa'));var _=require(_0x6068('0xb'));var squel=require(_0x6068('0xc'));var crypto=require(_0x6068('0xd'));var jsforce=require(_0x6068('0xe'));var deskjs=require(_0x6068('0xf'));var toCsv=require(_0x6068('0x10'));var querystring=require(_0x6068('0x11'));var Papa=require(_0x6068('0x12'));var Redis=require('ioredis');var authService=require(_0x6068('0x13'));var qs=require(_0x6068('0x14'));var as=require(_0x6068('0x15'));var hardwareService=require(_0x6068('0x16'));var logger=require('../../config/logger')(_0x6068('0x17'));var utils=require(_0x6068('0x18'));var config=require(_0x6068('0x19'));var licenseUtil=require(_0x6068('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58a7d6,_0x3665f0){_0x3665f0=_0x3665f0||0xcc;return function(_0x58ade4){if(_0x58ade4){return _0x58a7d6[_0x6068('0x1b')](_0x3665f0);}return _0x58a7d6[_0x6068('0x1c')](_0x3665f0)[_0x6068('0x1d')]();};}function respondWithResult(_0x5c75f4,_0x1cb2b8){_0x1cb2b8=_0x1cb2b8||0xc8;return function(_0x23477c){if(_0x23477c){return _0x5c75f4[_0x6068('0x1c')](_0x1cb2b8)[_0x6068('0x1e')](_0x23477c);}};}function respondWithFilteredResult(_0x1dbfde,_0x509034){return function(_0x2bbec6){if(_0x2bbec6){var _0x2b7f75=typeof _0x509034[_0x6068('0x1f')]===_0x6068('0x20')&&typeof _0x509034['limit']===_0x6068('0x20');var _0x196897=_0x2bbec6[_0x6068('0x21')];var _0x416d81=_0x2b7f75?0x0:_0x509034[_0x6068('0x1f')];var _0x2dd516=_0x2b7f75?_0x2bbec6[_0x6068('0x21')]:_0x509034[_0x6068('0x1f')]+_0x509034[_0x6068('0x22')];var _0x98548;if(_0x2dd516>=_0x196897){_0x2dd516=_0x196897;_0x98548=0xc8;}else{_0x98548=0xce;}_0x1dbfde[_0x6068('0x1c')](_0x98548);return _0x1dbfde[_0x6068('0x23')](_0x6068('0x24'),_0x416d81+'-'+_0x2dd516+'/'+_0x196897)[_0x6068('0x1e')](_0x2bbec6);}return null;};}function patchUpdates(_0x2cddc6){return function(_0xcd908c){try{jsonpatch['apply'](_0xcd908c,_0x2cddc6,!![]);}catch(_0x5c6dcb){return BPromise[_0x6068('0x25')](_0x5c6dcb);}return _0xcd908c['save']();};}function saveUpdates(_0x45f279,_0x1b8666){return function(_0x137321){if(_0x137321){return _0x137321['update'](_0x45f279)[_0x6068('0x26')](function(_0x1a91f7){return _0x1a91f7;});}return null;};}function removeEntity(_0x3b1334,_0x1bafa1){return function(_0x86a73d){if(_0x86a73d){return _0x86a73d[_0x6068('0x27')]()[_0x6068('0x26')](function(){_0x3b1334[_0x6068('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e9c4b,_0x18eaeb){return function(_0x25caa0){if(!_0x25caa0){_0x3e9c4b[_0x6068('0x1b')](0x194);}return _0x25caa0;};}function handleError(_0x2e4a3d,_0xa20563){_0xa20563=_0xa20563||0x1f4;return function(_0x3be9c7){logger[_0x6068('0x28')](_0x3be9c7[_0x6068('0x29')]);if(_0x3be9c7['name']){delete _0x3be9c7[_0x6068('0x2a')];}_0x2e4a3d[_0x6068('0x1c')](_0xa20563)[_0x6068('0x2b')](_0x3be9c7);};}exports[_0x6068('0x2c')]=function(_0x273965,_0x11e600){var _0x3eb1ca={},_0x2f2fee={},_0x24dc8f={'count':0x0,'rows':[]};var _0x381f27=_[_0x6068('0x2d')](db[_0x6068('0x2e')][_0x6068('0x2f')],function(_0x313ce8){return{'name':_0x313ce8[_0x6068('0x30')],'type':_0x313ce8[_0x6068('0x31')][_0x6068('0x32')]};});_0x2f2fee[_0x6068('0x33')]=_[_0x6068('0x2d')](_0x381f27,_0x6068('0x2a'));_0x2f2fee[_0x6068('0x34')]=_[_0x6068('0x35')](_0x273965[_0x6068('0x34')]);_0x2f2fee[_0x6068('0x36')]=_['intersection'](_0x2f2fee['model'],_0x2f2fee[_0x6068('0x34')]);_0x3eb1ca[_0x6068('0x37')]=_[_0x6068('0x38')](_0x2f2fee[_0x6068('0x33')],qs[_0x6068('0x39')](_0x273965[_0x6068('0x34')]['fields']));_0x3eb1ca[_0x6068('0x37')]=_0x3eb1ca[_0x6068('0x37')][_0x6068('0x3a')]?_0x3eb1ca[_0x6068('0x37')]:_0x2f2fee[_0x6068('0x33')];if(!_0x273965[_0x6068('0x34')][_0x6068('0x3b')]('nolimit')){_0x3eb1ca[_0x6068('0x22')]=qs[_0x6068('0x22')](_0x273965[_0x6068('0x34')]['limit']);_0x3eb1ca[_0x6068('0x1f')]=qs[_0x6068('0x1f')](_0x273965['query']['offset']);}_0x3eb1ca[_0x6068('0x3c')]=qs[_0x6068('0x3d')](_0x273965[_0x6068('0x34')]['sort']);_0x3eb1ca[_0x6068('0x3e')]=qs['filters'](_[_0x6068('0x3f')](_0x273965['query'],_0x2f2fee[_0x6068('0x36')]),_0x381f27);if(_0x273965[_0x6068('0x34')][_0x6068('0x40')]){_0x3eb1ca[_0x6068('0x3e')]=_['merge'](_0x3eb1ca[_0x6068('0x3e')],{'$or':_[_0x6068('0x2d')](_0x381f27,function(_0x5927bb){if(_0x5927bb[_0x6068('0x31')]!=='VIRTUAL'){var _0x47ead4={};_0x47ead4[_0x5927bb[_0x6068('0x2a')]]={'$like':'%'+_0x273965[_0x6068('0x34')]['filter']+'%'};return _0x47ead4;}})});}_0x3eb1ca=_['merge']({},_0x3eb1ca,_0x273965[_0x6068('0x41')]);var _0x19a297={'where':_0x3eb1ca[_0x6068('0x3e')]};return db['VoiceDialReport'][_0x6068('0x21')](_0x19a297)[_0x6068('0x26')](function(_0x122b90){_0x24dc8f[_0x6068('0x21')]=_0x122b90;if(_0x273965[_0x6068('0x34')][_0x6068('0x42')]){_0x3eb1ca[_0x6068('0x43')]=[{'all':!![]}];}return db['VoiceDialReport'][_0x6068('0x44')](_0x3eb1ca);})[_0x6068('0x26')](function(_0x2b6350){_0x24dc8f[_0x6068('0x45')]=_0x2b6350;return _0x24dc8f;})[_0x6068('0x26')](respondWithFilteredResult(_0x11e600,_0x3eb1ca))[_0x6068('0x46')](handleError(_0x11e600,null));};exports['show']=function(_0x39bdaa,_0x2319b1){var _0x4c6337={'raw':!![],'where':{'id':_0x39bdaa[_0x6068('0x47')]['id']}},_0x302ec1={};_0x302ec1[_0x6068('0x33')]=_['keys'](db['VoiceDialReport'][_0x6068('0x2f')]);_0x302ec1[_0x6068('0x34')]=_[_0x6068('0x35')](_0x39bdaa['query']);_0x302ec1['filters']=_[_0x6068('0x38')](_0x302ec1[_0x6068('0x33')],_0x302ec1[_0x6068('0x34')]);_0x4c6337[_0x6068('0x37')]=_[_0x6068('0x38')](_0x302ec1[_0x6068('0x33')],qs[_0x6068('0x39')](_0x39bdaa[_0x6068('0x34')][_0x6068('0x39')]));_0x4c6337[_0x6068('0x37')]=_0x4c6337[_0x6068('0x37')][_0x6068('0x3a')]?_0x4c6337['attributes']:_0x302ec1[_0x6068('0x33')];if(_0x39bdaa[_0x6068('0x34')]['includeAll']){_0x4c6337[_0x6068('0x43')]=[{'all':!![]}];}_0x4c6337=_[_0x6068('0x48')]({},_0x4c6337,_0x39bdaa['options']);return db[_0x6068('0x2e')][_0x6068('0x49')](_0x4c6337)['then'](handleEntityNotFound(_0x2319b1,null))[_0x6068('0x26')](respondWithResult(_0x2319b1,null))[_0x6068('0x46')](handleError(_0x2319b1,null));};exports['create']=function(_0x19570f,_0x5da26c){return db[_0x6068('0x2e')][_0x6068('0x4a')](_0x19570f['body'],{})[_0x6068('0x26')](respondWithResult(_0x5da26c,0xc9))[_0x6068('0x46')](handleError(_0x5da26c,null));};exports['update']=function(_0x465490,_0x4e7bfa){if(_0x465490[_0x6068('0x4b')]['id']){delete _0x465490[_0x6068('0x4b')]['id'];}return db[_0x6068('0x2e')]['find']({'where':{'id':_0x465490[_0x6068('0x47')]['id']}})['then'](handleEntityNotFound(_0x4e7bfa,null))[_0x6068('0x26')](saveUpdates(_0x465490[_0x6068('0x4b')],null))['then'](respondWithResult(_0x4e7bfa,null))[_0x6068('0x46')](handleError(_0x4e7bfa,null));};exports[_0x6068('0x27')]=function(_0x51b9ec,_0x129bac){return db[_0x6068('0x2e')][_0x6068('0x49')]({'where':{'id':_0x51b9ec['params']['id']}})[_0x6068('0x26')](handleEntityNotFound(_0x129bac,null))[_0x6068('0x26')](removeEntity(_0x129bac,null))[_0x6068('0x46')](handleError(_0x129bac,null));};exports['describe']=function(_0xb5b302,_0x106fec){return db['VoiceDialReport'][_0x6068('0x4c')]()[_0x6068('0x26')](respondWithResult(_0x106fec,null))[_0x6068('0x46')](handleError(_0x106fec,null));};
\ No newline at end of file
index 58c1941..97b4f0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e9d=['moment','bluebird','request-promise','rimraf','define','VoiceDialReport','report_dial','lodash','../../config/logger','api'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x1e9d,0x1dd));var _0xd1e9=function(_0x36f692,_0x3a162d){_0x36f692=_0x36f692-0x0;var _0x1a53d0=_0x1e9d[_0x36f692];return _0x1a53d0;};'use strict';var _=require(_0xd1e9('0x0'));var util=require('util');var logger=require(_0xd1e9('0x1'))(_0xd1e9('0x2'));var moment=require(_0xd1e9('0x3'));var BPromise=require(_0xd1e9('0x4'));var rp=require(_0xd1e9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd1e9('0x6'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module['exports']=function(_0x51f201,_0x47fa6c){return _0x51f201[_0xd1e9('0x7')](_0xd1e9('0x8'),attributes,{'tableName':_0xd1e9('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x79c3=['report_dial','uniqueid','util','moment','request-promise','rimraf','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport'];(function(_0x5e43d3,_0x4ac566){var _0x374f2e=function(_0x706167){while(--_0x706167){_0x5e43d3['push'](_0x5e43d3['shift']());}};_0x374f2e(++_0x4ac566);}(_0x79c3,0xe8));var _0x379c=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x79c3[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x379c('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x379c('0x1'));var BPromise=require('bluebird');var rp=require(_0x379c('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x379c('0x3'));var config=require(_0x379c('0x4'));var attributes=require(_0x379c('0x5'));module['exports']=function(_0x31258e,_0xddde0e){return _0x31258e[_0x379c('0x6')](_0x379c('0x7'),attributes,{'tableName':_0x379c('0x8'),'paranoid':![],'indexes':[{'fields':[_0x379c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 0bb9c58..6381c6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5240=['result','VoiceDialReport','create','body','options','raw','info','CreateVoiceDialReport','stringify','catch','UpdateVoiceDialReport','update','where','attributes','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x2dda1a,_0x1d9ba8){var _0x33dacb=function(_0x333139){while(--_0x333139){_0x2dda1a['push'](_0x2dda1a['shift']());}};_0x33dacb(++_0x1d9ba8);}(_0x5240,0x126));var _0x0524=function(_0x2a5fa1,_0x1752c5){_0x2a5fa1=_0x2a5fa1-0x0;var _0x134572=_0x5240[_0x2a5fa1];return _0x134572;};'use strict';var _=require(_0x0524('0x0'));var util=require(_0x0524('0x1'));var moment=require('moment');var BPromise=require(_0x0524('0x2'));var rs=require(_0x0524('0x3'));var fs=require('fs');var Redis=require(_0x0524('0x4'));var db=require(_0x0524('0x5'))['db'];var utils=require(_0x0524('0x6'));var logger=require(_0x0524('0x7'))(_0x0524('0x8'));var config=require(_0x0524('0x9'));var jayson=require(_0x0524('0xa'));var client=jayson[_0x0524('0xb')][_0x0524('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12e343,_0x3ed6e6,_0x19c257){return new BPromise(function(_0x13c31e,_0x381da4){return client[_0x0524('0xd')](_0x12e343,_0x19c257)[_0x0524('0xe')](function(_0xfbc138){logger['info'](_0x0524('0xf'),_0x3ed6e6,_0x0524('0x10'));logger[_0x0524('0x11')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x3ed6e6,_0x0524('0x10'),JSON['stringify'](_0xfbc138));if(_0xfbc138[_0x0524('0x12')]){if(_0xfbc138[_0x0524('0x12')][_0x0524('0x13')]===0x1f4){logger['error'](_0x0524('0xf'),_0x3ed6e6,_0xfbc138['error'][_0x0524('0x14')]);return _0x381da4(_0xfbc138[_0x0524('0x12')][_0x0524('0x14')]);}logger[_0x0524('0x12')](_0x0524('0xf'),_0x3ed6e6,_0xfbc138[_0x0524('0x12')][_0x0524('0x14')]);return _0x13c31e(_0xfbc138[_0x0524('0x12')][_0x0524('0x14')]);}else{logger['info'](_0x0524('0xf'),_0x3ed6e6,_0x0524('0x10'));_0x13c31e(_0xfbc138[_0x0524('0x15')][_0x0524('0x14')]);}})['catch'](function(_0x50f7d6){logger[_0x0524('0x12')](_0x0524('0xf'),_0x3ed6e6,_0x50f7d6);_0x381da4(_0x50f7d6);});});}exports['CreateVoiceDialReport']=function(_0x30a5d0){var _0xe0749b=this;return new Promise(function(_0x2561ae,_0x35f67c){return db[_0x0524('0x16')][_0x0524('0x17')](_0x30a5d0[_0x0524('0x18')],{'raw':_0x30a5d0['options']?_0x30a5d0[_0x0524('0x19')][_0x0524('0x1a')]===undefined?!![]:![]:!![]})[_0x0524('0xe')](function(_0x5c3811){logger[_0x0524('0x1b')](_0x0524('0x1c'),_0x30a5d0);logger[_0x0524('0x11')](_0x0524('0x1c'),_0x30a5d0,JSON[_0x0524('0x1d')](_0x5c3811));_0x2561ae(_0x5c3811);})[_0x0524('0x1e')](function(_0x302de7){logger['error'](_0x0524('0x1c'),_0x302de7[_0x0524('0x14')],_0x30a5d0);_0x35f67c(_0xe0749b[_0x0524('0x12')](0x1f4,_0x302de7['message']));});});};exports[_0x0524('0x1f')]=function(_0x233169){var _0x224f06=this;return new Promise(function(_0xe8148b,_0xe5f91d){return db[_0x0524('0x16')][_0x0524('0x20')](_0x233169[_0x0524('0x18')],{'raw':_0x233169['options']?_0x233169[_0x0524('0x19')][_0x0524('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x233169[_0x0524('0x19')]?_0x233169[_0x0524('0x19')][_0x0524('0x21')]||null:null,'attributes':_0x233169[_0x0524('0x19')]?_0x233169[_0x0524('0x19')][_0x0524('0x22')]||null:null,'limit':_0x233169[_0x0524('0x19')]?_0x233169[_0x0524('0x19')]['limit']||null:null})['then'](function(_0x2f82fb){logger[_0x0524('0x1b')](_0x0524('0x1f'),_0x233169);logger[_0x0524('0x11')](_0x0524('0x1f'),_0x233169,JSON['stringify'](_0x2f82fb));_0xe8148b(_0x2f82fb);})[_0x0524('0x1e')](function(_0x2f18c4){logger[_0x0524('0x12')](_0x0524('0x1f'),_0x2f18c4['message'],_0x233169);_0xe5f91d(_0x224f06['error'](0x1f4,_0x2f18c4['message']));});});};
\ No newline at end of file
+var _0x92d6=['info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','options','raw','update','body','where','limit','then','UpdateVoiceDialReport','lodash','util','moment','randomstring','../../config/environment','jayson/promise','client','http'];(function(_0x4c631a,_0x53851b){var _0x12b88c=function(_0x4d117c){while(--_0x4d117c){_0x4c631a['push'](_0x4c631a['shift']());}};_0x12b88c(++_0x53851b);}(_0x92d6,0xe0));var _0x692d=function(_0x5e1491,_0x16ee06){_0x5e1491=_0x5e1491-0x0;var _0x307ccd=_0x92d6[_0x5e1491];return _0x307ccd;};'use strict';var _=require(_0x692d('0x0'));var util=require(_0x692d('0x1'));var moment=require(_0x692d('0x2'));var BPromise=require('bluebird');var rs=require(_0x692d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x692d('0x4'));var jayson=require(_0x692d('0x5'));var client=jayson[_0x692d('0x6')][_0x692d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x9e9b3b,_0x3db837,_0x5248d6){return new BPromise(function(_0x3ec3ff,_0x435409){return client['request'](_0x9e9b3b,_0x5248d6)['then'](function(_0x341321){logger[_0x692d('0x8')](_0x692d('0x9'),_0x3db837,_0x692d('0xa'));logger[_0x692d('0xb')](_0x692d('0xc'),_0x3db837,_0x692d('0xa'),JSON[_0x692d('0xd')](_0x341321));if(_0x341321[_0x692d('0xe')]){if(_0x341321[_0x692d('0xe')]['code']===0x1f4){logger['error'](_0x692d('0x9'),_0x3db837,_0x341321[_0x692d('0xe')][_0x692d('0xf')]);return _0x435409(_0x341321[_0x692d('0xe')][_0x692d('0xf')]);}logger[_0x692d('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x3db837,_0x341321[_0x692d('0xe')][_0x692d('0xf')]);return _0x3ec3ff(_0x341321['error'][_0x692d('0xf')]);}else{logger['info'](_0x692d('0x9'),_0x3db837,_0x692d('0xa'));_0x3ec3ff(_0x341321[_0x692d('0x10')][_0x692d('0xf')]);}})[_0x692d('0x11')](function(_0x588101){logger[_0x692d('0xe')](_0x692d('0x9'),_0x3db837,_0x588101);_0x435409(_0x588101);});});}exports[_0x692d('0x12')]=function(_0x28c2a8){var _0x7cc5da=this;return new Promise(function(_0x54ea82,_0x51f5a8){return db[_0x692d('0x13')][_0x692d('0x14')](_0x28c2a8['body'],{'raw':_0x28c2a8[_0x692d('0x15')]?_0x28c2a8[_0x692d('0x15')][_0x692d('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x228dd5){logger[_0x692d('0x8')](_0x692d('0x12'),_0x28c2a8);logger[_0x692d('0xb')](_0x692d('0x12'),_0x28c2a8,JSON[_0x692d('0xd')](_0x228dd5));_0x54ea82(_0x228dd5);})[_0x692d('0x11')](function(_0x1e3464){logger[_0x692d('0xe')](_0x692d('0x12'),_0x1e3464['message'],_0x28c2a8);_0x51f5a8(_0x7cc5da[_0x692d('0xe')](0x1f4,_0x1e3464[_0x692d('0xf')]));});});};exports['UpdateVoiceDialReport']=function(_0x151724){var _0x50df3d=this;return new Promise(function(_0x446b07,_0x3d3754){return db[_0x692d('0x13')][_0x692d('0x17')](_0x151724[_0x692d('0x18')],{'raw':_0x151724[_0x692d('0x15')]?_0x151724['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x151724['options']?_0x151724[_0x692d('0x15')][_0x692d('0x19')]||null:null,'attributes':_0x151724[_0x692d('0x15')]?_0x151724['options']['attributes']||null:null,'limit':_0x151724[_0x692d('0x15')]?_0x151724[_0x692d('0x15')][_0x692d('0x1a')]||null:null})[_0x692d('0x1b')](function(_0x29edad){logger[_0x692d('0x8')]('UpdateVoiceDialReport',_0x151724);logger[_0x692d('0xb')](_0x692d('0x1c'),_0x151724,JSON[_0x692d('0xd')](_0x29edad));_0x446b07(_0x29edad);})[_0x692d('0x11')](function(_0xd76074){logger[_0x692d('0xe')]('UpdateVoiceDialReport',_0xd76074['message'],_0x151724);_0x3d3754(_0x50df3d[_0x692d('0xe')](0x1f4,_0xd76074[_0x692d('0xf')]));});});};
\ No newline at end of file
index 2422aca..d4de2dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39fb=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','show','post','create','/:id/applications','addApplications','update','delete','/:id','destroy','exports'];(function(_0x1c00ff,_0x59ca16){var _0x3567c1=function(_0x3991bf){while(--_0x3991bf){_0x1c00ff['push'](_0x1c00ff['shift']());}};_0x3567c1(++_0x59ca16);}(_0x39fb,0x1a4));var _0xb39f=function(_0x36f6fb,_0x249aa3){_0x36f6fb=_0x36f6fb-0x0;var _0x39c006=_0x39fb[_0x36f6fb];return _0x39c006;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb39f('0x0'));var express=require(_0xb39f('0x1'));var router=express[_0xb39f('0x2')]();var fs_extra=require(_0xb39f('0x3'));var auth=require(_0xb39f('0x4'));var interaction=require(_0xb39f('0x5'));var config=require(_0xb39f('0x6'));var controller=require(_0xb39f('0x7'));router[_0xb39f('0x8')]('/',auth[_0xb39f('0x9')](),controller[_0xb39f('0xa')]);router[_0xb39f('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb39f('0xb')]);router[_0xb39f('0xc')]('/',auth[_0xb39f('0x9')](),controller[_0xb39f('0xd')]);router[_0xb39f('0xc')](_0xb39f('0xe'),auth[_0xb39f('0x9')](),controller[_0xb39f('0xf')]);router['put']('/:id',auth[_0xb39f('0x9')](),controller[_0xb39f('0x10')]);router[_0xb39f('0x11')](_0xb39f('0x12'),auth[_0xb39f('0x9')](),controller[_0xb39f('0x13')]);module[_0xb39f('0x14')]=router;
\ No newline at end of file
+var _0x7628=['/:id','show','create','post','/:id/applications','put','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','isAuthenticated','index'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x7628,0x10d));var _0x8762=function(_0x168888,_0x1f8123){_0x168888=_0x168888-0x0;var _0x442a72=_0x7628[_0x168888];return _0x442a72;};'use strict';var multer=require(_0x8762('0x0'));var util=require(_0x8762('0x1'));var path=require(_0x8762('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8762('0x3')]();var fs_extra=require(_0x8762('0x4'));var auth=require(_0x8762('0x5'));var interaction=require(_0x8762('0x6'));var config=require(_0x8762('0x7'));var controller=require(_0x8762('0x8'));router['get']('/',auth[_0x8762('0x9')](),controller[_0x8762('0xa')]);router['get'](_0x8762('0xb'),auth[_0x8762('0x9')](),controller[_0x8762('0xc')]);router['post']('/',auth[_0x8762('0x9')](),controller[_0x8762('0xd')]);router[_0x8762('0xe')](_0x8762('0xf'),auth[_0x8762('0x9')](),controller['addApplications']);router[_0x8762('0x10')](_0x8762('0xb'),auth[_0x8762('0x9')](),controller[_0x8762('0x11')]);router[_0x8762('0x12')](_0x8762('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x8762('0x13')]=router;
\ No newline at end of file
index 527d4db..2e8df0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d97=['INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','outbound-fax','system','any','*,*,*,*'];(function(_0x5a070e,_0x427004){var _0xa63288=function(_0xf4e62){while(--_0xf4e62){_0x5a070e['push'](_0x5a070e['shift']());}};_0xa63288(++_0x427004);}(_0x4d97,0x7c));var _0x74d9=function(_0x15464b,_0x44a321){_0x15464b=_0x15464b-0x0;var _0x3a0fcd=_0x4d97[_0x15464b];return _0x3a0fcd;};'use strict';var Sequelize=require('sequelize');module[_0x74d9('0x0')]={'context':{'type':Sequelize[_0x74d9('0x1')],'allowNull':![],'unique':_0x74d9('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x74d9('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x74d9('0x2')},'tag':{'type':Sequelize[_0x74d9('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x74d9('0x1')],'allowNull':![],'defaultValue':_0x74d9('0x3')},'appdata':{'type':Sequelize[_0x74d9('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x74d9('0x4')](_0x74d9('0x5'),_0x74d9('0x6'),_0x74d9('0x7'),'inbound-fax',_0x74d9('0x8'),_0x74d9('0x9'),_0x74d9('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0x74d9('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x74d9('0xb')},'IntervalId':{'type':Sequelize[_0x74d9('0xc')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x74d9('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x74d9('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x74d9('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x74d9('0xc')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x74d9('0xe')},'answer':{'type':Sequelize[_0x74d9('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0x74d9('0xf')],'get':function(_0x35ae21){return this[_0x74d9('0x10')]('exten');}},'alias':{'type':Sequelize[_0x74d9('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x5a0b=['compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports','STRING'];(function(_0x540dcb,_0x4eacb6){var _0x49353c=function(_0x449bb1){while(--_0x449bb1){_0x540dcb['push'](_0x540dcb['shift']());}};_0x49353c(++_0x4eacb6);}(_0x5a0b,0x165));var _0xb5a0=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x5a0b[_0x2ec461];return _0x28603d;};'use strict';var Sequelize=require(_0xb5a0('0x0'));module[_0xb5a0('0x1')]={'context':{'type':Sequelize[_0xb5a0('0x2')],'allowNull':![],'unique':_0xb5a0('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xb5a0('0x2')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xb5a0('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xb5a0('0x3')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb5a0('0x4')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xb5a0('0x5')](_0xb5a0('0x6'),_0xb5a0('0x7'),_0xb5a0('0x8'),_0xb5a0('0x9'),_0xb5a0('0xa'),'system',_0xb5a0('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0xb5a0('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb5a0('0xc')},'IntervalId':{'type':Sequelize[_0xb5a0('0xd')]},'isApp':{'type':Sequelize[_0xb5a0('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xb5a0('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xb5a0('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xb5a0('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xb5a0('0xd')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xb5a0('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0xb5a0('0xf')],'get':function(_0x329487){return this[_0xb5a0('0x10')](_0xb5a0('0x11'));}},'alias':{'type':Sequelize[_0xb5a0('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 4b36668..1757bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c38=['sendStatus','status','end','json','offset','undefined','limit','count','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','ignore','map','value','type','find','name','UserProfileResource','stack','send','VoiceExtension','rawAttributes','fieldName','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','merge','create','body','outbound','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','internal','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','cutdigits','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x498fd7,_0xe9b7e8){var _0x3ed9f2=function(_0x3bcc64){while(--_0x3bcc64){_0x498fd7['push'](_0x498fd7['shift']());}};_0x3ed9f2(++_0xe9b7e8);}(_0x4c38,0xfe));var _0x84c3=function(_0x2426d7,_0x515f06){_0x2426d7=_0x2426d7-0x0;var _0x236709=_0x4c38[_0x2426d7];return _0x236709;};'use strict';var _=require('lodash');var Redis=require(_0x84c3('0x0'));var qs=require(_0x84c3('0x1'));var logger=require(_0x84c3('0x2'))(_0x84c3('0x3'));var config=require('../../config/environment');var db=require(_0x84c3('0x4'))['db'];config[_0x84c3('0x5')]=_[_0x84c3('0x6')](config[_0x84c3('0x5')],{'host':_0x84c3('0x7'),'port':0x18eb});var socket=require(_0x84c3('0x8'))(new Redis(config[_0x84c3('0x5')]));require('./voiceExtension.socket')[_0x84c3('0x9')](socket);function respondWithStatusCode(_0x221a2b,_0xd88c2f){_0xd88c2f=_0xd88c2f||0xcc;return function(_0x449d54){if(_0x449d54){return _0x221a2b[_0x84c3('0xa')](_0xd88c2f);}return _0x221a2b[_0x84c3('0xb')](_0xd88c2f)[_0x84c3('0xc')]();};}function respondWithResult(_0x31bddd,_0x41159c){_0x41159c=_0x41159c||0xc8;return function(_0x4f7138){if(_0x4f7138){return _0x31bddd[_0x84c3('0xb')](_0x41159c)[_0x84c3('0xd')](_0x4f7138);}};}function respondWithFilteredResult(_0x561fd9,_0xc403ba){return function(_0x3a90db){if(_0x3a90db){var _0x45565e=typeof _0xc403ba[_0x84c3('0xe')]===_0x84c3('0xf')&&typeof _0xc403ba[_0x84c3('0x10')]===_0x84c3('0xf');var _0x2c6ec7=_0x3a90db[_0x84c3('0x11')];var _0x3ca6d3=_0x45565e?0x0:_0xc403ba['offset'];var _0x76838c=_0x45565e?_0x3a90db[_0x84c3('0x11')]:_0xc403ba[_0x84c3('0xe')]+_0xc403ba['limit'];var _0x57ba3b;if(_0x76838c>=_0x2c6ec7){_0x76838c=_0x2c6ec7;_0x57ba3b=0xc8;}else{_0x57ba3b=0xce;}_0x561fd9[_0x84c3('0xb')](_0x57ba3b);return _0x561fd9['set']('Content-Range',_0x3ca6d3+'-'+_0x76838c+'/'+_0x2c6ec7)[_0x84c3('0xd')](_0x3a90db);}return null;};}function removeEntity(_0x16b042){return function(_0x2e9814){if(_0x2e9814){return _0x2e9814[_0x84c3('0x12')]()[_0x84c3('0x13')](function(){var _0x42d78d=_0x2e9814[_0x84c3('0x14')]({'plain':!![]});var _0x4cdee9=[{'name':_0x84c3('0x15'),'value':_0x84c3('0x16'),'ignore':![]},{'name':_0x84c3('0x17'),'value':'outbound','ignore':![]},{'name':_0x84c3('0x18'),'value':'internal','ignore':![]}];var _0x290f98=_(_0x4cdee9)['filter'](_0x84c3('0x19'))[_0x84c3('0x1a')]('value')[_0x84c3('0x1b')]();if(_['includes'](_0x290f98,_0x42d78d[_0x84c3('0x1c')])){return;}var _0x2f0564=_[_0x84c3('0x1d')](_0x4cdee9,[_0x84c3('0x1b'),_0x42d78d[_0x84c3('0x1c')]])[_0x84c3('0x1e')];return db[_0x84c3('0x1f')][_0x84c3('0x12')]({'where':{'type':_0x2f0564,'resourceId':_0x42d78d['id']}})['then'](function(){return _0x2e9814;});})[_0x84c3('0x13')](function(){_0x16b042['status'](0xcc)[_0x84c3('0xc')]();});}};}function handleEntityNotFound(_0x24b442){return function(_0x3aecd1){if(!_0x3aecd1){_0x24b442[_0x84c3('0xa')](0x194);}return _0x3aecd1;};}function handleError(_0x32fb64,_0x59ad0a){_0x59ad0a=_0x59ad0a||0x1f4;return function(_0x48adb3){logger['error'](_0x48adb3[_0x84c3('0x20')]);if(_0x48adb3[_0x84c3('0x1e')]){delete _0x48adb3[_0x84c3('0x1e')];}_0x32fb64[_0x84c3('0xb')](_0x59ad0a)[_0x84c3('0x21')](_0x48adb3);};}exports['index']=function(_0x1ecd84,_0x44c0bf){var _0x5e5b13={},_0x4ab555={},_0xeb0116={'count':0x0,'rows':[]};var _0xf3b1c6=_[_0x84c3('0x1a')](db[_0x84c3('0x22')][_0x84c3('0x23')],function(_0x3a6708){return{'name':_0x3a6708[_0x84c3('0x24')],'type':_0x3a6708[_0x84c3('0x1c')]['key']};});_0x4ab555['model']=_['map'](_0xf3b1c6,_0x84c3('0x1e'));_0x4ab555[_0x84c3('0x25')]=_[_0x84c3('0x26')](_0x1ecd84[_0x84c3('0x25')]);_0x4ab555[_0x84c3('0x27')]=_['intersection'](_0x4ab555[_0x84c3('0x28')],_0x4ab555['query']);_0x5e5b13[_0x84c3('0x29')]=_[_0x84c3('0x2a')](_0x4ab555[_0x84c3('0x28')],qs[_0x84c3('0x2b')](_0x1ecd84['query'][_0x84c3('0x2b')]));_0x5e5b13[_0x84c3('0x29')]=_0x5e5b13[_0x84c3('0x29')][_0x84c3('0x2c')]?_0x5e5b13[_0x84c3('0x29')]:_0x4ab555[_0x84c3('0x28')];if(!_0x1ecd84[_0x84c3('0x25')]['hasOwnProperty'](_0x84c3('0x2d'))){_0x5e5b13[_0x84c3('0x10')]=qs[_0x84c3('0x10')](_0x1ecd84[_0x84c3('0x25')][_0x84c3('0x10')]);_0x5e5b13[_0x84c3('0xe')]=qs[_0x84c3('0xe')](_0x1ecd84[_0x84c3('0x25')][_0x84c3('0xe')]);}_0x5e5b13[_0x84c3('0x2e')]=qs[_0x84c3('0x2f')](_0x1ecd84[_0x84c3('0x25')][_0x84c3('0x2f')]);_0x5e5b13['where']=qs[_0x84c3('0x27')](_[_0x84c3('0x30')](_0x1ecd84[_0x84c3('0x25')],_0x4ab555[_0x84c3('0x27')]),_0xf3b1c6);if(_0x1ecd84[_0x84c3('0x25')][_0x84c3('0x31')]){_0x5e5b13[_0x84c3('0x32')]=_['merge'](_0x5e5b13[_0x84c3('0x32')],{'$or':_[_0x84c3('0x1a')](_0xf3b1c6,function(_0x2c42a6){if(_0x2c42a6['type']!==_0x84c3('0x33')){var _0x25b4a8={};_0x25b4a8[_0x2c42a6[_0x84c3('0x1e')]]={'$like':'%'+_0x1ecd84[_0x84c3('0x25')][_0x84c3('0x31')]+'%'};return _0x25b4a8;}})});}_0x5e5b13=_['merge']({},_0x5e5b13,_0x1ecd84[_0x84c3('0x34')]);var _0x176795={'where':_0x5e5b13[_0x84c3('0x32')]};return db[_0x84c3('0x22')][_0x84c3('0x11')](_0x176795)[_0x84c3('0x13')](function(_0x58bf5b){_0xeb0116['count']=_0x58bf5b;if(_0x1ecd84[_0x84c3('0x25')]['includeAll']){_0x5e5b13[_0x84c3('0x35')]=[{'all':!![]}];}return db[_0x84c3('0x22')][_0x84c3('0x36')](_0x5e5b13);})['then'](function(_0x5ed46d){_0xeb0116[_0x84c3('0x37')]=_0x5ed46d;return _0xeb0116;})['then'](respondWithFilteredResult(_0x44c0bf,_0x5e5b13))[_0x84c3('0x38')](handleError(_0x44c0bf,null));};exports['show']=function(_0x5467e3,_0x57b55c){var _0xa49180={'raw':![],'where':{'id':_0x5467e3[_0x84c3('0x39')]['id']}},_0x287b70={};_0x287b70[_0x84c3('0x28')]=_[_0x84c3('0x26')](db['VoiceExtension'][_0x84c3('0x23')]);_0x287b70[_0x84c3('0x25')]=_[_0x84c3('0x26')](_0x5467e3['query']);_0x287b70['filters']=_['intersection'](_0x287b70[_0x84c3('0x28')],_0x287b70[_0x84c3('0x25')]);_0xa49180[_0x84c3('0x29')]=_[_0x84c3('0x2a')](_0x287b70[_0x84c3('0x28')],qs['fields'](_0x5467e3[_0x84c3('0x25')][_0x84c3('0x2b')]));_0xa49180[_0x84c3('0x29')]=_0xa49180[_0x84c3('0x29')][_0x84c3('0x2c')]?_0xa49180[_0x84c3('0x29')]:_0x287b70[_0x84c3('0x28')];if(_0x5467e3[_0x84c3('0x25')][_0x84c3('0x3a')]){_0xa49180[_0x84c3('0x35')]=[{'all':!![]}];}_0xa49180=_[_0x84c3('0x3b')]({},_0xa49180,_0x5467e3[_0x84c3('0x34')]);return db[_0x84c3('0x22')]['find'](_0xa49180)[_0x84c3('0x13')](handleEntityNotFound(_0x57b55c,null))[_0x84c3('0x13')](respondWithResult(_0x57b55c,null))[_0x84c3('0x38')](handleError(_0x57b55c,null));};exports[_0x84c3('0x12')]=function(_0xb2de4b,_0x2e68e4){return db[_0x84c3('0x22')][_0x84c3('0x1d')]({'where':{'id':_0xb2de4b[_0x84c3('0x39')]['id']}})[_0x84c3('0x13')](handleEntityNotFound(_0x2e68e4,null))['then'](removeEntity(_0x2e68e4,null))[_0x84c3('0x38')](handleError(_0x2e68e4,null));};exports[_0x84c3('0x3c')]=function(_0x79e2a2,_0x149313){if(_0x79e2a2[_0x84c3('0x3d')][_0x84c3('0x1c')]===_0x84c3('0x3e')&&!_['startsWith'](_0x79e2a2['body'][_0x84c3('0x3f')],'_')){_0x79e2a2[_0x84c3('0x3d')][_0x84c3('0x3f')]='_'[_0x84c3('0x40')](_0x79e2a2['body']['exten']);}return db['VoiceExtension']['create'](_0x79e2a2[_0x84c3('0x3d')],{'raw':![]})[_0x84c3('0x13')](function(_0x5343da){var _0x1a4103=_0x79e2a2[_0x84c3('0x41')][_0x84c3('0x14')]({'plain':!![]});if(!_0x1a4103)throw new Error(_0x84c3('0x42'));if(_0x1a4103['role']==='user'){var _0x33e42e=_0x5343da[_0x84c3('0x14')]({'plain':!![]});var _0x47b07a=[{'name':_0x84c3('0x15'),'value':_0x84c3('0x16')},{'name':_0x84c3('0x17'),'value':_0x84c3('0x3e')},{'name':_0x84c3('0x18'),'value':_0x84c3('0x43')}];var _0x2e3516=_['find'](_0x47b07a,[_0x84c3('0x1b'),_0x33e42e[_0x84c3('0x1c')]])[_0x84c3('0x1e')];return db[_0x84c3('0x44')][_0x84c3('0x1d')]({'where':{'name':_0x2e3516,'userProfileId':_0x1a4103[_0x84c3('0x45')]},'raw':!![]})[_0x84c3('0x13')](function(_0x378767){if(_0x378767&&_0x378767[_0x84c3('0x46')]===0x0){return db[_0x84c3('0x1f')]['create']({'name':_0x33e42e[_0x84c3('0x1e')],'resourceId':_0x33e42e['id'],'type':_0x378767[_0x84c3('0x1e')],'sectionId':_0x378767['id']},{})[_0x84c3('0x13')](function(){return _0x5343da;});}else{return _0x5343da;}})[_0x84c3('0x38')](function(_0x324521){logger[_0x84c3('0x47')](_0x84c3('0x48'),_0x324521);throw _0x324521;});}return _0x5343da;})[_0x84c3('0x13')](respondWithResult(_0x149313,0xc9))[_0x84c3('0x38')](handleError(_0x149313,null));};exports[_0x84c3('0x49')]=function(_0x5f2d3c,_0x401b37){if(_0x5f2d3c[_0x84c3('0x3d')]['id']){delete _0x5f2d3c[_0x84c3('0x3d')]['id'];}return db[_0x84c3('0x22')][_0x84c3('0x1d')]({'where':{'id':_0x5f2d3c['params']['id']}})[_0x84c3('0x13')](handleEntityNotFound(_0x401b37,null))['then'](function(_0x36a8ef){if(_0x36a8ef){return db[_0x84c3('0x22')][_0x84c3('0x49')](_[_0x84c3('0x30')](_0x5f2d3c[_0x84c3('0x3d')],[_0x84c3('0x3f'),_0x84c3('0x4a'),'description','recordingFormat',_0x84c3('0x4b'),'mandatoryDisposition','alias']),{'where':{'context':_0x36a8ef[_0x84c3('0x4a')],'exten':_0x36a8ef[_0x84c3('0x3f')]},'individualHooks':!![]})[_0x84c3('0x13')](function(_0x45457b){return _0x45457b;});}return null;})[_0x84c3('0x13')](respondWithStatusCode(_0x401b37,null))[_0x84c3('0x38')](handleError(_0x401b37,null));};exports['addApplications']=function(_0x56aac7,_0x1270a1){var _0x56dcfc=_0x56aac7[_0x84c3('0x39')]['id'];var _0xc406ab=_0x56aac7[_0x84c3('0x3d')];var _0x3b2402=0xc8;var _0x4bf384=null;return db[_0x84c3('0x4c')][_0x84c3('0x4d')]({'isolationLevel':db[_0x84c3('0x4c')][_0x84c3('0x4e')][_0x84c3('0x4f')][_0x84c3('0x50')]},function(_0xc4e7e7){return db[_0x84c3('0x22')][_0x84c3('0x51')]({'where':{'id':_0x56dcfc},'transaction':_0xc4e7e7})[_0x84c3('0x13')](function(_0x3a7c85){if(_0x3a7c85){return db[_0x84c3('0x22')]['destroy']({'where':{'VoiceExtensionId':_0x56dcfc},'transaction':_0xc4e7e7})[_0x84c3('0x13')](function(){var _0x3221ce=_[_0x84c3('0x1a')](_0xc406ab,function(_0x18feab){_0x18feab[_0x84c3('0x52')]=_0x56dcfc;_0x18feab[_0x84c3('0x53')]=!![];return _0x18feab;});return _0x3a7c85['createRouting'](_0x3221ce);})[_0x84c3('0x13')](function(_0xcc65ae){return db['VoiceExtension'][_0x84c3('0x54')](_0xcc65ae,{'transaction':_0xc4e7e7});});}else{_0x3b2402=0x194;_0x4bf384=[];}});})[_0x84c3('0x13')](function(){if(_0x3b2402!==0x194){return db[_0x84c3('0x22')][_0x84c3('0x55')]({'where':{'isApp':!![],'VoiceExtensionId':_0x56dcfc},'order':_0x84c3('0x56')})[_0x84c3('0x13')](function(_0x3a85cc){_0x4bf384=_0x3a85cc;});}})[_0x84c3('0x38')](function(_0x23c425){_0x3b2402=0x1f4;logger[_0x84c3('0x47')](_0x23c425[_0x84c3('0x20')]);if(_0x23c425[_0x84c3('0x1e')]){delete _0x23c425[_0x84c3('0x1e')];}_0x4bf384=_0x23c425;})[_0x84c3('0x57')](function(){if(_0x4bf384===null){_0x1270a1['sendStatus'](_0x3b2402);}else{if(_0x3b2402===0x1f4){_0x1270a1[_0x84c3('0xb')](_0x3b2402)[_0x84c3('0x21')](_0x4bf384);}else{_0x1270a1[_0x84c3('0xb')](_0x3b2402)[_0x84c3('0xd')](_0x4bf384);}}});};
\ No newline at end of file
+var _0x0841=['get','InboundRoutes','inbound','outbound','InternalRoutes','filter','ignore','value','includes','type','find','error','name','index','map','VoiceExtension','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','filters','where','VIRTUAL','merge','options','findAll','rows','catch','show','params','includeAll','include','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','OutboundRoutes','UserProfileSection','userProfileId','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context','description','recordingFormat','cutdigits','mandatoryDisposition','addApplications','transaction','sequelize','READ_COMMITTED','VoiceExtensionId','isApp','bulkCreate','stack','send','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','defaults','localhost','./voiceExtension.socket','sendStatus','status','end','json','undefined','count','limit','set','Content-Range','destroy','then'];(function(_0x49d27a,_0x166543){var _0x3f0b62=function(_0x4eb485){while(--_0x4eb485){_0x49d27a['push'](_0x49d27a['shift']());}};_0x3f0b62(++_0x166543);}(_0x0841,0x155));var _0x1084=function(_0x1c2e66,_0x2f41a1){_0x1c2e66=_0x1c2e66-0x0;var _0x339b65=_0x0841[_0x1c2e66];return _0x339b65;};'use strict';var _=require(_0x1084('0x0'));var Redis=require(_0x1084('0x1'));var qs=require(_0x1084('0x2'));var logger=require('../../config/logger')('api');var config=require(_0x1084('0x3'));var db=require(_0x1084('0x4'))['db'];config['redis']=_[_0x1084('0x5')](config['redis'],{'host':_0x1084('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1084('0x7'))['register'](socket);function respondWithStatusCode(_0x545a88,_0x4a7c3a){_0x4a7c3a=_0x4a7c3a||0xcc;return function(_0x479f8c){if(_0x479f8c){return _0x545a88[_0x1084('0x8')](_0x4a7c3a);}return _0x545a88[_0x1084('0x9')](_0x4a7c3a)[_0x1084('0xa')]();};}function respondWithResult(_0x37f01f,_0x58b1d9){_0x58b1d9=_0x58b1d9||0xc8;return function(_0x20a7be){if(_0x20a7be){return _0x37f01f[_0x1084('0x9')](_0x58b1d9)[_0x1084('0xb')](_0x20a7be);}};}function respondWithFilteredResult(_0x2da1e6,_0x3f4525){return function(_0x11de06){if(_0x11de06){var _0x44d35b=typeof _0x3f4525['offset']===_0x1084('0xc')&&typeof _0x3f4525['limit']===_0x1084('0xc');var _0x54b0cb=_0x11de06[_0x1084('0xd')];var _0x47cb86=_0x44d35b?0x0:_0x3f4525['offset'];var _0x268e2e=_0x44d35b?_0x11de06['count']:_0x3f4525['offset']+_0x3f4525[_0x1084('0xe')];var _0x49f136;if(_0x268e2e>=_0x54b0cb){_0x268e2e=_0x54b0cb;_0x49f136=0xc8;}else{_0x49f136=0xce;}_0x2da1e6[_0x1084('0x9')](_0x49f136);return _0x2da1e6[_0x1084('0xf')](_0x1084('0x10'),_0x47cb86+'-'+_0x268e2e+'/'+_0x54b0cb)['json'](_0x11de06);}return null;};}function removeEntity(_0x4e6f57){return function(_0x38085c){if(_0x38085c){return _0x38085c[_0x1084('0x11')]()[_0x1084('0x12')](function(){var _0x48a263=_0x38085c[_0x1084('0x13')]({'plain':!![]});var _0x139ba3=[{'name':_0x1084('0x14'),'value':_0x1084('0x15'),'ignore':![]},{'name':'OutboundRoutes','value':_0x1084('0x16'),'ignore':![]},{'name':_0x1084('0x17'),'value':'internal','ignore':![]}];var _0x140247=_(_0x139ba3)[_0x1084('0x18')](_0x1084('0x19'))['map'](_0x1084('0x1a'))[_0x1084('0x1a')]();if(_[_0x1084('0x1b')](_0x140247,_0x48a263[_0x1084('0x1c')])){return;}var _0x2b85ea=_[_0x1084('0x1d')](_0x139ba3,[_0x1084('0x1a'),_0x48a263[_0x1084('0x1c')]])['name'];return db['UserProfileResource'][_0x1084('0x11')]({'where':{'type':_0x2b85ea,'resourceId':_0x48a263['id']}})['then'](function(){return _0x38085c;});})[_0x1084('0x12')](function(){_0x4e6f57[_0x1084('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dc633){return function(_0x1b447c){if(!_0x1b447c){_0x5dc633[_0x1084('0x8')](0x194);}return _0x1b447c;};}function handleError(_0x527fab,_0x10f2b9){_0x10f2b9=_0x10f2b9||0x1f4;return function(_0xf6c1ed){logger[_0x1084('0x1e')](_0xf6c1ed['stack']);if(_0xf6c1ed['name']){delete _0xf6c1ed[_0x1084('0x1f')];}_0x527fab[_0x1084('0x9')](_0x10f2b9)['send'](_0xf6c1ed);};}exports[_0x1084('0x20')]=function(_0x262ed6,_0x454fed){var _0x40d365={},_0x81bfd3={},_0x1aeed0={'count':0x0,'rows':[]};var _0x5be079=_[_0x1084('0x21')](db[_0x1084('0x22')][_0x1084('0x23')],function(_0x3ea99e){return{'name':_0x3ea99e[_0x1084('0x24')],'type':_0x3ea99e['type'][_0x1084('0x25')]};});_0x81bfd3[_0x1084('0x26')]=_[_0x1084('0x21')](_0x5be079,'name');_0x81bfd3['query']=_[_0x1084('0x27')](_0x262ed6[_0x1084('0x28')]);_0x81bfd3['filters']=_[_0x1084('0x29')](_0x81bfd3[_0x1084('0x26')],_0x81bfd3[_0x1084('0x28')]);_0x40d365[_0x1084('0x2a')]=_[_0x1084('0x29')](_0x81bfd3['model'],qs['fields'](_0x262ed6[_0x1084('0x28')][_0x1084('0x2b')]));_0x40d365[_0x1084('0x2a')]=_0x40d365['attributes'][_0x1084('0x2c')]?_0x40d365['attributes']:_0x81bfd3[_0x1084('0x26')];if(!_0x262ed6[_0x1084('0x28')][_0x1084('0x2d')](_0x1084('0x2e'))){_0x40d365[_0x1084('0xe')]=qs[_0x1084('0xe')](_0x262ed6[_0x1084('0x28')][_0x1084('0xe')]);_0x40d365[_0x1084('0x2f')]=qs[_0x1084('0x2f')](_0x262ed6['query'][_0x1084('0x2f')]);}_0x40d365[_0x1084('0x30')]=qs['sort'](_0x262ed6[_0x1084('0x28')][_0x1084('0x31')]);_0x40d365['where']=qs[_0x1084('0x32')](_['pick'](_0x262ed6['query'],_0x81bfd3[_0x1084('0x32')]),_0x5be079);if(_0x262ed6[_0x1084('0x28')][_0x1084('0x18')]){_0x40d365[_0x1084('0x33')]=_['merge'](_0x40d365[_0x1084('0x33')],{'$or':_[_0x1084('0x21')](_0x5be079,function(_0x4bce83){if(_0x4bce83['type']!==_0x1084('0x34')){var _0x3380c2={};_0x3380c2[_0x4bce83[_0x1084('0x1f')]]={'$like':'%'+_0x262ed6[_0x1084('0x28')][_0x1084('0x18')]+'%'};return _0x3380c2;}})});}_0x40d365=_[_0x1084('0x35')]({},_0x40d365,_0x262ed6[_0x1084('0x36')]);var _0x39e79f={'where':_0x40d365[_0x1084('0x33')]};return db[_0x1084('0x22')]['count'](_0x39e79f)[_0x1084('0x12')](function(_0x5d61a5){_0x1aeed0[_0x1084('0xd')]=_0x5d61a5;if(_0x262ed6['query']['includeAll']){_0x40d365['include']=[{'all':!![]}];}return db['VoiceExtension'][_0x1084('0x37')](_0x40d365);})[_0x1084('0x12')](function(_0x555831){_0x1aeed0[_0x1084('0x38')]=_0x555831;return _0x1aeed0;})[_0x1084('0x12')](respondWithFilteredResult(_0x454fed,_0x40d365))[_0x1084('0x39')](handleError(_0x454fed,null));};exports[_0x1084('0x3a')]=function(_0x142534,_0x3917b6){var _0x24fc02={'raw':![],'where':{'id':_0x142534[_0x1084('0x3b')]['id']}},_0x32b34d={};_0x32b34d[_0x1084('0x26')]=_[_0x1084('0x27')](db['VoiceExtension'][_0x1084('0x23')]);_0x32b34d[_0x1084('0x28')]=_[_0x1084('0x27')](_0x142534['query']);_0x32b34d['filters']=_[_0x1084('0x29')](_0x32b34d['model'],_0x32b34d[_0x1084('0x28')]);_0x24fc02['attributes']=_[_0x1084('0x29')](_0x32b34d['model'],qs[_0x1084('0x2b')](_0x142534[_0x1084('0x28')]['fields']));_0x24fc02[_0x1084('0x2a')]=_0x24fc02['attributes'][_0x1084('0x2c')]?_0x24fc02[_0x1084('0x2a')]:_0x32b34d['model'];if(_0x142534[_0x1084('0x28')][_0x1084('0x3c')]){_0x24fc02[_0x1084('0x3d')]=[{'all':!![]}];}_0x24fc02=_[_0x1084('0x35')]({},_0x24fc02,_0x142534[_0x1084('0x36')]);return db[_0x1084('0x22')][_0x1084('0x1d')](_0x24fc02)['then'](handleEntityNotFound(_0x3917b6,null))['then'](respondWithResult(_0x3917b6,null))['catch'](handleError(_0x3917b6,null));};exports[_0x1084('0x11')]=function(_0x4d2aba,_0x2373c8){return db[_0x1084('0x22')]['find']({'where':{'id':_0x4d2aba[_0x1084('0x3b')]['id']}})['then'](handleEntityNotFound(_0x2373c8,null))['then'](removeEntity(_0x2373c8,null))[_0x1084('0x39')](handleError(_0x2373c8,null));};exports['create']=function(_0x18a826,_0x2c1a4d){if(_0x18a826[_0x1084('0x3e')][_0x1084('0x1c')]===_0x1084('0x16')&&!_[_0x1084('0x3f')](_0x18a826['body'][_0x1084('0x40')],'_')){_0x18a826[_0x1084('0x3e')]['exten']='_'[_0x1084('0x41')](_0x18a826['body'][_0x1084('0x40')]);}return db[_0x1084('0x22')]['create'](_0x18a826[_0x1084('0x3e')],{'raw':![]})[_0x1084('0x12')](function(_0x520c31){var _0x3ac17b=_0x18a826[_0x1084('0x42')]['get']({'plain':!![]});if(!_0x3ac17b)throw new Error(_0x1084('0x43'));if(_0x3ac17b['role']===_0x1084('0x42')){var _0x3771f4=_0x520c31['get']({'plain':!![]});var _0x5e3159=[{'name':_0x1084('0x14'),'value':_0x1084('0x15')},{'name':_0x1084('0x44'),'value':_0x1084('0x16')},{'name':_0x1084('0x17'),'value':'internal'}];var _0x5823cc=_[_0x1084('0x1d')](_0x5e3159,[_0x1084('0x1a'),_0x3771f4[_0x1084('0x1c')]])[_0x1084('0x1f')];return db[_0x1084('0x45')]['find']({'where':{'name':_0x5823cc,'userProfileId':_0x3ac17b[_0x1084('0x46')]},'raw':!![]})[_0x1084('0x12')](function(_0xd6b20b){if(_0xd6b20b&&_0xd6b20b['autoAssociation']===0x0){return db[_0x1084('0x47')][_0x1084('0x48')]({'name':_0x3771f4[_0x1084('0x1f')],'resourceId':_0x3771f4['id'],'type':_0xd6b20b['name'],'sectionId':_0xd6b20b['id']},{})[_0x1084('0x12')](function(){return _0x520c31;});}else{return _0x520c31;}})['catch'](function(_0x41d681){logger[_0x1084('0x1e')](_0x1084('0x49'),_0x41d681);throw _0x41d681;});}return _0x520c31;})[_0x1084('0x12')](respondWithResult(_0x2c1a4d,0xc9))[_0x1084('0x39')](handleError(_0x2c1a4d,null));};exports[_0x1084('0x4a')]=function(_0x291935,_0x129028){if(_0x291935[_0x1084('0x3e')]['id']){delete _0x291935['body']['id'];}return db[_0x1084('0x22')]['find']({'where':{'id':_0x291935[_0x1084('0x3b')]['id']}})['then'](handleEntityNotFound(_0x129028,null))[_0x1084('0x12')](function(_0x598c62){if(_0x598c62){return db[_0x1084('0x22')][_0x1084('0x4a')](_[_0x1084('0x4b')](_0x291935['body'],['exten',_0x1084('0x4c'),_0x1084('0x4d'),_0x1084('0x4e'),_0x1084('0x4f'),_0x1084('0x50'),'alias']),{'where':{'context':_0x598c62[_0x1084('0x4c')],'exten':_0x598c62[_0x1084('0x40')]},'individualHooks':!![]})[_0x1084('0x12')](function(_0x315d7b){return _0x315d7b;});}return null;})[_0x1084('0x12')](respondWithStatusCode(_0x129028,null))[_0x1084('0x39')](handleError(_0x129028,null));};exports[_0x1084('0x51')]=function(_0x314f53,_0x318832){var _0x49c85a=_0x314f53[_0x1084('0x3b')]['id'];var _0x13607c=_0x314f53['body'];var _0x1ef8b6=0xc8;var _0x40e8eb=null;return db['sequelize'][_0x1084('0x52')]({'isolationLevel':db[_0x1084('0x53')]['Transaction']['ISOLATION_LEVELS'][_0x1084('0x54')]},function(_0x148c2c){return db[_0x1084('0x22')]['findOne']({'where':{'id':_0x49c85a},'transaction':_0x148c2c})[_0x1084('0x12')](function(_0x1a1b9a){if(_0x1a1b9a){return db['VoiceExtension'][_0x1084('0x11')]({'where':{'VoiceExtensionId':_0x49c85a},'transaction':_0x148c2c})[_0x1084('0x12')](function(){var _0x4e72a9=_[_0x1084('0x21')](_0x13607c,function(_0x17dc97){_0x17dc97[_0x1084('0x55')]=_0x49c85a;_0x17dc97[_0x1084('0x56')]=!![];return _0x17dc97;});return _0x1a1b9a['createRouting'](_0x4e72a9);})[_0x1084('0x12')](function(_0x2e9385){return db['VoiceExtension'][_0x1084('0x57')](_0x2e9385,{'transaction':_0x148c2c});});}else{_0x1ef8b6=0x194;_0x40e8eb=[];}});})[_0x1084('0x12')](function(){if(_0x1ef8b6!==0x194){return db[_0x1084('0x22')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x49c85a},'order':'cast(priority\x20as\x20unsigned)'})[_0x1084('0x12')](function(_0x481944){_0x40e8eb=_0x481944;});}})[_0x1084('0x39')](function(_0x2bc6bc){_0x1ef8b6=0x1f4;logger[_0x1084('0x1e')](_0x2bc6bc[_0x1084('0x58')]);if(_0x2bc6bc[_0x1084('0x1f')]){delete _0x2bc6bc[_0x1084('0x1f')];}_0x40e8eb=_0x2bc6bc;})['finally'](function(){if(_0x40e8eb===null){_0x318832[_0x1084('0x8')](_0x1ef8b6);}else{if(_0x1ef8b6===0x1f4){_0x318832['status'](_0x1ef8b6)[_0x1084('0x59')](_0x40e8eb);}else{_0x318832[_0x1084('0x9')](_0x1ef8b6)[_0x1084('0xb')](_0x40e8eb);}}});};
\ No newline at end of file
index 048d76a..3b6bd55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7611=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','VoiceExtension'];(function(_0x13843f,_0x50422d){var _0x1063ae=function(_0x12fd6b){while(--_0x12fd6b){_0x13843f['push'](_0x13843f['shift']());}};_0x1063ae(++_0x50422d);}(_0x7611,0x1ab));var _0x1761=function(_0x3f37fb,_0x14d440){_0x3f37fb=_0x3f37fb-0x0;var _0x59cacc=_0x7611[_0x3f37fb];return _0x59cacc;};'use strict';var EventEmitter=require(_0x1761('0x0'));var VoiceExtension=require(_0x1761('0x1'))['db'][_0x1761('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x1761('0x3')](0x0);var events={'afterCreate':_0x1761('0x4'),'afterUpdate':_0x1761('0x5'),'afterDestroy':_0x1761('0x6')};function emitEvent(_0x3fbb15){return function(_0x2aaf7c,_0xf81ae4,_0x352de8){VoiceExtensionEvents[_0x1761('0x7')](_0x3fbb15+':'+_0x2aaf7c['id'],_0x2aaf7c);VoiceExtensionEvents[_0x1761('0x7')](_0x3fbb15,_0x2aaf7c);_0x352de8(null);};}for(var e in events){if(events[_0x1761('0x8')](e)){var event=events[e];VoiceExtension[_0x1761('0x9')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x4efb=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit'];(function(_0x39b457,_0x2b417d){var _0x163025=function(_0x4dae15){while(--_0x4dae15){_0x39b457['push'](_0x39b457['shift']());}};_0x163025(++_0x2b417d);}(_0x4efb,0x116));var _0xb4ef=function(_0x62f73,_0x299e46){_0x62f73=_0x62f73-0x0;var _0x263706=_0x4efb[_0x62f73];return _0x263706;};'use strict';var EventEmitter=require(_0xb4ef('0x0'));var VoiceExtension=require(_0xb4ef('0x1'))['db'][_0xb4ef('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xb4ef('0x3')](0x0);var events={'afterCreate':_0xb4ef('0x4'),'afterUpdate':_0xb4ef('0x5'),'afterDestroy':_0xb4ef('0x6')};function emitEvent(_0xb8eb21){return function(_0x555a4d,_0x50c6a2,_0x49b230){VoiceExtensionEvents[_0xb4ef('0x7')](_0xb8eb21+':'+_0x555a4d['id'],_0x555a4d);VoiceExtensionEvents['emit'](_0xb8eb21,_0x555a4d);_0x49b230(null);};}for(var e in events){if(events[_0xb4ef('0x8')](e)){var event=events[e];VoiceExtension[_0xb4ef('0x9')](e,emitEvent(event));}}module[_0xb4ef('0xa')]=VoiceExtensionEvents;
\ No newline at end of file
index 32705c9..1ef50b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7351=['inbound','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','param','split','prefix','${EXTEN:','SIP','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','filter','toLowerCase','hasOwnProperty','tag','push','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','playback','includes','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','appType','outboundDial','appdata','priority','concat','last','define','VoiceExtension','voice_extensions','Hangup','lodash','./voiceExtension.attributes','exports','type','Set','context','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set'];(function(_0x49f66e,_0x3e2369){var _0x55a1e2=function(_0x50bccd){while(--_0x50bccd){_0x49f66e['push'](_0x49f66e['shift']());}};_0x55a1e2(++_0x3e2369);}(_0x7351,0x139));var _0x1735=function(_0x4d739c,_0x2b52c2){_0x4d739c=_0x4d739c-0x0;var _0x568fbd=_0x7351[_0x4d739c];return _0x568fbd;};'use strict';var _=require(_0x1735('0x0'));var attributes=require(_0x1735('0x1'));module[_0x1735('0x2')]=function(_0x229a56){var _0x538acb=_0x229a56['models'];function _0x2e1e0d(_0x1aa6c0){var _0x182866=0x2;var _0x10d710=[{'type':_0x1aa6c0[_0x1735('0x3')],'app':_0x1735('0x4'),'appdata':'CDR(type)='+_0x1aa6c0[_0x1735('0x3')],'context':_0x1aa6c0[_0x1735('0x5')],'exten':_0x1aa6c0[_0x1735('0x6')],'priority':_0x182866++,'VoiceExtensionId':_0x1aa6c0['id']},{'type':_0x1aa6c0[_0x1735('0x3')],'app':_0x1aa6c0[_0x1735('0x7')]?_0x1735('0x4'):_0x1735('0x8'),'appdata':_0x1aa6c0[_0x1735('0x7')]?_0x1735('0x9')+_0x1aa6c0[_0x1735('0x7')]:_0x1735('0xa'),'context':_0x1aa6c0[_0x1735('0x5')],'exten':_0x1aa6c0[_0x1735('0x6')],'priority':_0x182866++,'VoiceExtensionId':_0x1aa6c0['id']}];if(_0x1aa6c0[_0x1735('0x3')]===_0x1735('0xb')){_0x10d710['push']({'type':_0x1735('0xb'),'app':_0x1735('0x4'),'appdata':_0x1735('0xc')+_0x1aa6c0['id'],'context':_0x1aa6c0['context'],'exten':_0x1aa6c0['exten'],'priority':_0x182866++,'VoiceExtensionId':_0x1aa6c0['id']});}_0x10d710['push']({'type':_0x1aa6c0[_0x1735('0x3')],'app':'Set','appdata':_0x1735('0xd'),'context':_0x1aa6c0['context'],'exten':_0x1aa6c0[_0x1735('0x6')],'priority':_0x182866++,'VoiceExtensionId':_0x1aa6c0['id']},{'type':_0x1aa6c0[_0x1735('0x3')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1aa6c0[_0x1735('0x5')],'exten':_0x1aa6c0[_0x1735('0x6')],'priority':_0x182866++,'VoiceExtensionId':_0x1aa6c0['id']},{'type':_0x1aa6c0[_0x1735('0x3')],'app':_0x1735('0x4'),'appdata':_0x1735('0xe'),'context':_0x1aa6c0[_0x1735('0x5')],'exten':_0x1aa6c0[_0x1735('0x6')],'priority':_0x182866++,'VoiceExtensionId':_0x1aa6c0['id']});return _0x10d710;}function _0x2bebb0(_0x3b4108){var _0xf62990=0x2;var _0x59b946=[{'type':_0x1735('0xf'),'app':'Set','appdata':'CDR(type)=outbound','context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':_0x1735('0xf'),'app':_0x3b4108[_0x1735('0x7')]?_0x1735('0x4'):'NoOp','appdata':_0x3b4108[_0x1735('0x7')]?_0x1735('0x9')+_0x3b4108[_0x1735('0x7')]:'No\x20alias\x20set','context':_0x3b4108['context'],'exten':_0x3b4108['exten'],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':_0x1735('0xf'),'app':'Set','appdata':'CDR(destination)='+(_0x3b4108[_0x1735('0x10')]?'${EXTEN:'+_0x3b4108[_0x1735('0x10')]+'}':_0x1735('0x11')),'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':_0x1735('0xf'),'app':'Set','appdata':_0x1735('0xc')+_0x3b4108['id'],'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':'outbound','app':_0x1735('0x12'),'appdata':_0x1735('0x13')+(_0xf62990+0x2)+_0x1735('0x14')+(_0xf62990+0x1)+')','context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':'outbound','app':_0x1735('0x4'),'appdata':_0x3b4108[_0x1735('0x10')]?_0x1735('0x15')+_0x3b4108['cutdigits']+'}':_0x1735('0x16'),'context':_0x3b4108['context'],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':_0x1735('0xf'),'app':_0x1735('0x4'),'appdata':_0x1735('0xd'),'context':_0x3b4108['context'],'exten':_0x3b4108['exten'],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':_0x1735('0xf'),'app':_0x1735('0x4'),'appdata':_0x1735('0x17'),'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':_0x1735('0xf'),'app':_0x1735('0x4'),'appdata':_0x1735('0xe'),'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':'outbound','app':_0x1735('0x4'),'appdata':'outboundrouteid='+_0x3b4108['id'],'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']}];if(_0x3b4108['hasOwnProperty'](_0x1735('0x18'))&&_0x3b4108[_0x1735('0x18')]!==_0x1735('0x19')){_0x59b946['push']({'type':'outbound','app':'Set','appdata':_0x1735('0x1a'),'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']},{'type':'outbound','app':'Set','appdata':_0x1735('0x1b')+_0x3b4108['recordingFormat']||_0x1735('0x1c'),'context':_0x3b4108[_0x1735('0x5')],'exten':_0x3b4108[_0x1735('0x6')],'priority':_0xf62990++,'VoiceExtensionId':_0x3b4108['id']});}return _0x59b946;}function _0x3a76df(_0x499c03,_0x1b03a2){var _0x261f6c=[{'name':_0x1735('0x1d'),'param':0x0},{'name':_0x1735('0x1e'),'param':0x1},{'name':_0x1735('0x1f'),'param':0x2},{'name':_0x1735('0x20'),'param':0x3}];var _0x51f0a9={};var _0x1bd5f2=_0x1b03a2['split'](',');var _0xd241b9=[];for(var _0x5cafc7=0x0;_0x5cafc7<_0x261f6c[_0x1735('0x21')];_0x5cafc7++){switch(_0x261f6c[_0x5cafc7][_0x1735('0x22')]){case _0x1735('0x1d'):_0x51f0a9[_0x1735('0x1d')]=_0x1bd5f2[_0x261f6c[_0x5cafc7][_0x1735('0x23')]]['split']('/')[0x1];_0x51f0a9['phone']=_0x1bd5f2[_0x261f6c[_0x5cafc7]['param']][_0x1735('0x24')]('/')[0x2];_0x51f0a9['prefix']=_0x51f0a9['phone']?_0x51f0a9['phone'][_0x1735('0x24')]('$')[0x0]:undefined;_0x51f0a9['phone']=_0x499c03[_0x1735('0x10')]?(_0x51f0a9[_0x1735('0x25')]||'')+_0x1735('0x26')+_0x499c03[_0x1735('0x10')]+'}':(_0x51f0a9['prefix']||'')+_0x1735('0x11');_0xd241b9[_0x261f6c[_0x5cafc7][_0x1735('0x23')]]=[_0x1735('0x27'),_0x51f0a9[_0x1735('0x1d')],_0x51f0a9['phone']]['join']('/');break;case _0x1735('0x1f'):_0x51f0a9['options']=_0x1bd5f2[_0x261f6c[_0x5cafc7][_0x1735('0x23')]];if(_0x499c03['recordingFormat']!==_0x1735('0x19')){if(_0x51f0a9[_0x1735('0x1f')][_0x1735('0x28')](_0x1735('0x29'))<0x0){_0x51f0a9[_0x1735('0x1f')]+=_0x1735('0x29');}}else{_0x51f0a9[_0x1735('0x1f')]=_0x51f0a9[_0x1735('0x1f')][_0x1735('0x2a')](_0x1735('0x29'),'');}_0xd241b9[_0x261f6c[_0x5cafc7][_0x1735('0x23')]]=_0x51f0a9[_0x1735('0x1f')];break;default:_0xd241b9[_0x261f6c[_0x5cafc7]['param']]=_0x1bd5f2[_0x261f6c[_0x5cafc7]['param']];}}return _0xd241b9[_0x1735('0x2b')](',');}function _0x297832(_0x295b05,_0x47586e,_0x1d3814){return new Promise(function(_0x379225,_0x13bb51){var _0x34dc6d=[];if(_[_0x1735('0x2c')](_0x47586e))return _0x379225(_0x34dc6d);_0x538acb[_0x1735('0x2d')][_0x1735('0x2e')]({'attributes':['id',_0x1735('0x2f'),_0x1735('0x30')],'raw':!![]})[_0x1735('0x31')](function(_0x4986b9){for(var _0x363ce4=0x0,_0x3cae80=0x0;_0x363ce4<_0x47586e['length'];_0x363ce4++,_0x3cae80=0x0){var _0x5a1e38=_0x47586e[_0x363ce4];var _0x29f320=[];var _0x3b99bc=[];delete _0x5a1e38['id'];if(_0x5a1e38[_0x1735('0x2f')]!==_0x1735('0x32')){_0x5a1e38['intervals']=[_0x5a1e38[_0x1735('0x2f')]];}else{_0x5a1e38[_0x1735('0x33')]=_0x5a1e38[_0x1735('0x30')]?_['map'](_[_0x1735('0x34')](_0x4986b9,{'IntervalId':_0x5a1e38[_0x1735('0x30')]}),_0x1735('0x2f')):[];}_0x5a1e38[_0x1735('0x5')]=_0x295b05[_0x1735('0x5')];_0x5a1e38[_0x1735('0x6')]=_0x295b05[_0x1735('0x6')];if(_0x5a1e38['type'])_0x5a1e38[_0x1735('0x3')]=_0x5a1e38[_0x1735('0x3')][_0x1735('0x35')]();if(_0x295b05['type']===_0x1735('0xf')){if(_0x5a1e38[_0x1735('0x36')](_0x1735('0x37'))&&_0x5a1e38[_0x1735('0x37')]&&_0x5a1e38[_0x1735('0x37')]!=='--'){_0x29f320[_0x1735('0x38')]({'type':_0x5a1e38[_0x1735('0x3')]['toLowerCase'](),'app':'Set','appdata':_0x1735('0x39')+_0x5a1e38[_0x1735('0x37')],'context':_0x295b05[_0x1735('0x5')],'exten':_0x295b05[_0x1735('0x6')],'priority':_0x5a1e38[_0x1735('0x33')][_0x1735('0x21')]+_0x1d3814+_0x3cae80++,'VoiceExtensionId':_0x295b05['id']});}_0x29f320[_0x1735('0x38')]({'type':_0x5a1e38[_0x1735('0x3')]['toLowerCase'](),'app':'ExecIf','appdata':_0x1735('0x3a')+(_0x5a1e38[_0x1735('0x3b')]?_0x1735('0x3c')+_0x5a1e38[_0x1735('0x3b')]+')':'NoOp(No\x20number\x20available)'),'context':_0x295b05[_0x1735('0x5')],'exten':_0x295b05[_0x1735('0x6')],'priority':_0x5a1e38['intervals'][_0x1735('0x21')]+_0x1d3814+_0x3cae80++,'VoiceExtensionId':_0x295b05['id']});}else{if(_0x5a1e38['hasOwnProperty'](_0x1735('0x3d'))){if([_0x1735('0x3e'),_0x1735('0x3f')][_0x1735('0x40')](_0x5a1e38['app'][_0x1735('0x35')]())&&_0x5a1e38['appType']!==_0x1735('0x41')){if(_0x5a1e38[_0x1735('0x3d')]){_0x29f320['push']({'type':_0x5a1e38['type']['toLowerCase'](),'app':'ExecIf','appdata':_0x1735('0x42'),'context':_0x295b05[_0x1735('0x5')],'exten':_0x295b05[_0x1735('0x6')],'priority':_0x5a1e38['intervals'][_0x1735('0x21')]+_0x1d3814+_0x3cae80++,'VoiceExtensionId':_0x295b05['id']});_0x29f320[_0x1735('0x38')]({'type':_0x5a1e38[_0x1735('0x3')]['toLowerCase'](),'app':_0x1735('0x4'),'appdata':_0x1735('0x43'),'context':_0x295b05[_0x1735('0x5')],'exten':_0x295b05['exten'],'priority':_0x5a1e38[_0x1735('0x33')][_0x1735('0x21')]+_0x1d3814+_0x3cae80++,'VoiceExtensionId':_0x295b05['id']});}else{_0x29f320['push']({'type':_0x5a1e38[_0x1735('0x3')]['toLowerCase'](),'app':'ExecIf','appdata':_0x1735('0x44'),'context':_0x295b05[_0x1735('0x5')],'exten':_0x295b05['exten'],'priority':_0x5a1e38['intervals'][_0x1735('0x21')]+_0x1d3814+_0x3cae80++,'VoiceExtensionId':_0x295b05['id']});_0x29f320[_0x1735('0x38')]({'type':_0x5a1e38[_0x1735('0x3')][_0x1735('0x35')](),'app':_0x1735('0x4'),'appdata':_0x1735('0x45'),'context':_0x295b05[_0x1735('0x5')],'exten':_0x295b05[_0x1735('0x6')],'priority':_0x5a1e38[_0x1735('0x33')][_0x1735('0x21')]+_0x1d3814+_0x3cae80++,'VoiceExtensionId':_0x295b05['id']});}}}}for(var _0x50ad14=0x0;_0x50ad14<_0x5a1e38[_0x1735('0x33')]['length'];_0x50ad14++){var _0x5a7f93=_0x1d3814+_0x5a1e38[_0x1735('0x33')][_0x1735('0x21')];var _0x575e60=_0x50ad14===_0x5a1e38['intervals']['length']-0x1?_0x1d3814+_0x29f320[_0x1735('0x21')]+_0x3b99bc[_0x1735('0x21')]+0x2:_0x1d3814+_0x50ad14+0x1;_0x29f320['splice'](_0x50ad14,0x0,{'type':_0x295b05[_0x1735('0x3')],'app':'GotoIfTime','appdata':_0x5a1e38['intervals'][_0x50ad14]+'?'+_0x295b05['context']+_0x1735('0x46')+_0x5a7f93+':'+_0x295b05[_0x1735('0x5')]+_0x1735('0x46')+_0x575e60,'exten':_0x295b05[_0x1735('0x6')],'context':_0x295b05[_0x1735('0x5')],'priority':_0x1d3814+_0x50ad14,'VoiceExtensionId':_0x295b05['id']});}if(_0x5a1e38[_0x1735('0x47')]===_0x1735('0x48'))_0x5a1e38[_0x1735('0x49')]=_0x3a76df(_0x295b05,_0x5a1e38[_0x1735('0x49')]);_0x5a1e38[_0x1735('0x4a')]=_0x29f320[_0x1735('0x21')]?_['last'](_0x29f320)[_0x1735('0x4a')]+0x1:_0x1d3814;_0x34dc6d=_[_0x1735('0x4b')](_0x34dc6d,_0x29f320,[_0x5a1e38],_0x3b99bc);_0x1d3814=_[_0x1735('0x4c')](_0x34dc6d)[_0x1735('0x4a')]+0x1;}return _0x379225(_0x34dc6d);})['catch'](function(_0x93a637){_0x13bb51(_0x93a637);});});}return _0x229a56[_0x1735('0x4d')](_0x1735('0x4e'),attributes,{'tableName':_0x1735('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x29379b){var _0x5215ed=this['get']({'plain':!![]});var _0xa569ee=_0x5215ed['type']===_0x1735('0xf')?_0x2bebb0(_0x5215ed):_0x2e1e0d(_0x5215ed);return _0x297832(_0x5215ed,_0x29379b,_[_0x1735('0x4c')](_0xa569ee)['priority']+0x1)[_0x1735('0x31')](function(_0x12c33f){var _0x1dbac2=_['concat'](_0xa569ee,_0x12c33f);_0x1dbac2[_0x1735('0x38')]({'type':_0x5215ed[_0x1735('0x3')],'app':_0x1735('0x50'),'exten':_0x5215ed[_0x1735('0x6')],'context':_0x5215ed['context'],'priority':_[_0x1735('0x4c')](_0x1dbac2)[_0x1735('0x4a')]+0x1,'VoiceExtensionId':_0x5215ed['id']});return _0x1dbac2;});}}});};
\ No newline at end of file
+var _0x61df=['tag','toLowerCase','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','splice',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','get','Hangup','type','Set','CDR(type)=','context','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','param','split','phone','prefix','join','none','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter'];(function(_0x28509b,_0x5831ff){var _0x1e0b6=function(_0x37d8a2){while(--_0x37d8a2){_0x28509b['push'](_0x28509b['shift']());}};_0x1e0b6(++_0x5831ff);}(_0x61df,0xbd));var _0xf61d=function(_0x5416ee,_0x1f7349){_0x5416ee=_0x5416ee-0x0;var _0x566a7e=_0x61df[_0x5416ee];return _0x566a7e;};'use strict';var _=require('lodash');var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x5cda8a){var _0x449fc=_0x5cda8a['models'];function _0x40127d(_0x380f27){var _0x485a55=0x2;var _0x3170e7=[{'type':_0x380f27[_0xf61d('0x0')],'app':_0xf61d('0x1'),'appdata':_0xf61d('0x2')+_0x380f27[_0xf61d('0x0')],'context':_0x380f27[_0xf61d('0x3')],'exten':_0x380f27['exten'],'priority':_0x485a55++,'VoiceExtensionId':_0x380f27['id']},{'type':_0x380f27[_0xf61d('0x0')],'app':_0x380f27['alias']?_0xf61d('0x1'):_0xf61d('0x4'),'appdata':_0x380f27[_0xf61d('0x5')]?_0xf61d('0x6')+_0x380f27[_0xf61d('0x5')]:_0xf61d('0x7'),'context':_0x380f27[_0xf61d('0x3')],'exten':_0x380f27[_0xf61d('0x8')],'priority':_0x485a55++,'VoiceExtensionId':_0x380f27['id']}];if(_0x380f27[_0xf61d('0x0')]===_0xf61d('0x9')){_0x3170e7[_0xf61d('0xa')]({'type':_0xf61d('0x9'),'app':'Set','appdata':_0xf61d('0xb')+_0x380f27['id'],'context':_0x380f27['context'],'exten':_0x380f27['exten'],'priority':_0x485a55++,'VoiceExtensionId':_0x380f27['id']});}_0x3170e7[_0xf61d('0xa')]({'type':_0x380f27['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x380f27[_0xf61d('0x3')],'exten':_0x380f27['exten'],'priority':_0x485a55++,'VoiceExtensionId':_0x380f27['id']},{'type':_0x380f27['type'],'app':_0xf61d('0x1'),'appdata':_0xf61d('0xc'),'context':_0x380f27[_0xf61d('0x3')],'exten':_0x380f27[_0xf61d('0x8')],'priority':_0x485a55++,'VoiceExtensionId':_0x380f27['id']},{'type':_0x380f27['type'],'app':_0xf61d('0x1'),'appdata':_0xf61d('0xd'),'context':_0x380f27[_0xf61d('0x3')],'exten':_0x380f27[_0xf61d('0x8')],'priority':_0x485a55++,'VoiceExtensionId':_0x380f27['id']});return _0x3170e7;}function _0x51405a(_0x4d229d){var _0x20a048=0x2;var _0x3d5b61=[{'type':_0xf61d('0xe'),'app':_0xf61d('0x1'),'appdata':_0xf61d('0xf'),'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':'outbound','app':_0x4d229d['alias']?_0xf61d('0x1'):_0xf61d('0x4'),'appdata':_0x4d229d[_0xf61d('0x5')]?_0xf61d('0x6')+_0x4d229d[_0xf61d('0x5')]:_0xf61d('0x7'),'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d['exten'],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':_0xf61d('0xe'),'app':'Set','appdata':_0xf61d('0x10')+(_0x4d229d[_0xf61d('0x11')]?_0xf61d('0x12')+_0x4d229d[_0xf61d('0x11')]+'}':_0xf61d('0x13')),'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':_0xf61d('0xe'),'app':'Set','appdata':'CDR(routeid)='+_0x4d229d['id'],'context':_0x4d229d['context'],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':_0xf61d('0xe'),'app':_0xf61d('0x14'),'appdata':_0xf61d('0x15')+(_0x20a048+0x2)+'):Goto('+(_0x20a048+0x1)+')','context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':'outbound','app':'Set','appdata':_0x4d229d[_0xf61d('0x11')]?_0xf61d('0x16')+_0x4d229d['cutdigits']+'}':_0xf61d('0x17'),'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d['exten'],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':_0xf61d('0xe'),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':'outbound','app':_0xf61d('0x1'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d['exten'],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':_0xf61d('0xe'),'app':_0xf61d('0x1'),'appdata':_0xf61d('0xd'),'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d['exten'],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':_0xf61d('0xe'),'app':_0xf61d('0x1'),'appdata':_0xf61d('0x18')+_0x4d229d['id'],'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']}];if(_0x4d229d[_0xf61d('0x19')](_0xf61d('0x1a'))&&_0x4d229d[_0xf61d('0x1a')]!=='none'){_0x3d5b61[_0xf61d('0xa')]({'type':_0xf61d('0xe'),'app':_0xf61d('0x1'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']},{'type':'outbound','app':'Set','appdata':_0xf61d('0x1b')+_0x4d229d[_0xf61d('0x1a')]||_0xf61d('0x1c'),'context':_0x4d229d[_0xf61d('0x3')],'exten':_0x4d229d[_0xf61d('0x8')],'priority':_0x20a048++,'VoiceExtensionId':_0x4d229d['id']});}return _0x3d5b61;}function _0x5224a5(_0x373d86,_0x310b22){var _0x1d308f=[{'name':_0xf61d('0x1d'),'param':0x0},{'name':_0xf61d('0x1e'),'param':0x1},{'name':_0xf61d('0x1f'),'param':0x2},{'name':_0xf61d('0x20'),'param':0x3}];var _0x3cd341={};var _0x353258=_0x310b22['split'](',');var _0x52b296=[];for(var _0x2f170c=0x0;_0x2f170c<_0x1d308f[_0xf61d('0x21')];_0x2f170c++){switch(_0x1d308f[_0x2f170c][_0xf61d('0x22')]){case _0xf61d('0x1d'):_0x3cd341[_0xf61d('0x1d')]=_0x353258[_0x1d308f[_0x2f170c][_0xf61d('0x23')]][_0xf61d('0x24')]('/')[0x1];_0x3cd341[_0xf61d('0x25')]=_0x353258[_0x1d308f[_0x2f170c][_0xf61d('0x23')]][_0xf61d('0x24')]('/')[0x2];_0x3cd341[_0xf61d('0x26')]=_0x3cd341[_0xf61d('0x25')]?_0x3cd341[_0xf61d('0x25')][_0xf61d('0x24')]('$')[0x0]:undefined;_0x3cd341['phone']=_0x373d86[_0xf61d('0x11')]?(_0x3cd341[_0xf61d('0x26')]||'')+'${EXTEN:'+_0x373d86['cutdigits']+'}':(_0x3cd341[_0xf61d('0x26')]||'')+'${EXTEN}';_0x52b296[_0x1d308f[_0x2f170c]['param']]=['SIP',_0x3cd341[_0xf61d('0x1d')],_0x3cd341[_0xf61d('0x25')]][_0xf61d('0x27')]('/');break;case _0xf61d('0x1f'):_0x3cd341['options']=_0x353258[_0x1d308f[_0x2f170c][_0xf61d('0x23')]];if(_0x373d86[_0xf61d('0x1a')]!==_0xf61d('0x28')){if(_0x3cd341[_0xf61d('0x1f')][_0xf61d('0x29')](_0xf61d('0x2a'))<0x0){_0x3cd341['options']+=_0xf61d('0x2a');}}else{_0x3cd341[_0xf61d('0x1f')]=_0x3cd341[_0xf61d('0x1f')][_0xf61d('0x2b')]('U(xcally-mixmonitor-context)','');}_0x52b296[_0x1d308f[_0x2f170c][_0xf61d('0x23')]]=_0x3cd341[_0xf61d('0x1f')];break;default:_0x52b296[_0x1d308f[_0x2f170c][_0xf61d('0x23')]]=_0x353258[_0x1d308f[_0x2f170c][_0xf61d('0x23')]];}}return _0x52b296['join'](',');}function _0xeabb66(_0x4407e6,_0x429188,_0x3bce4c){return new Promise(function(_0x35d118,_0x30b75b){var _0x4c2a67=[];if(_[_0xf61d('0x2c')](_0x429188))return _0x35d118(_0x4c2a67);_0x449fc[_0xf61d('0x2d')][_0xf61d('0x2e')]({'attributes':['id',_0xf61d('0x2f'),_0xf61d('0x30')],'raw':!![]})[_0xf61d('0x31')](function(_0x4a7c94){for(var _0xa2f124=0x0,_0x28a753=0x0;_0xa2f124<_0x429188['length'];_0xa2f124++,_0x28a753=0x0){var _0x5a9c19=_0x429188[_0xa2f124];var _0xc6e1c3=[];var _0x542f7a=[];delete _0x5a9c19['id'];if(_0x5a9c19[_0xf61d('0x2f')]!==_0xf61d('0x32')){_0x5a9c19['intervals']=[_0x5a9c19['interval']];}else{_0x5a9c19[_0xf61d('0x33')]=_0x5a9c19[_0xf61d('0x30')]?_[_0xf61d('0x34')](_[_0xf61d('0x35')](_0x4a7c94,{'IntervalId':_0x5a9c19[_0xf61d('0x30')]}),'interval'):[];}_0x5a9c19['context']=_0x4407e6[_0xf61d('0x3')];_0x5a9c19[_0xf61d('0x8')]=_0x4407e6[_0xf61d('0x8')];if(_0x5a9c19[_0xf61d('0x0')])_0x5a9c19['type']=_0x5a9c19[_0xf61d('0x0')]['toLowerCase']();if(_0x4407e6[_0xf61d('0x0')]==='outbound'){if(_0x5a9c19[_0xf61d('0x19')](_0xf61d('0x36'))&&_0x5a9c19[_0xf61d('0x36')]&&_0x5a9c19['tag']!=='--'){_0xc6e1c3[_0xf61d('0xa')]({'type':_0x5a9c19['type']['toLowerCase'](),'app':_0xf61d('0x1'),'appdata':'CDR(tag)='+_0x5a9c19[_0xf61d('0x36')],'context':_0x4407e6[_0xf61d('0x3')],'exten':_0x4407e6[_0xf61d('0x8')],'priority':_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')]+_0x3bce4c+_0x28a753++,'VoiceExtensionId':_0x4407e6['id']});}_0xc6e1c3[_0xf61d('0xa')]({'type':_0x5a9c19['type'][_0xf61d('0x37')](),'app':_0xf61d('0x14'),'appdata':_0xf61d('0x38')+(_0x5a9c19[_0xf61d('0x39')]?_0xf61d('0x3a')+_0x5a9c19[_0xf61d('0x39')]+')':_0xf61d('0x3b')),'context':_0x4407e6[_0xf61d('0x3')],'exten':_0x4407e6[_0xf61d('0x8')],'priority':_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')]+_0x3bce4c+_0x28a753++,'VoiceExtensionId':_0x4407e6['id']});}else{if(_0x5a9c19[_0xf61d('0x19')](_0xf61d('0x3c'))){if([_0xf61d('0x3d'),_0xf61d('0x3e')][_0xf61d('0x3f')](_0x5a9c19[_0xf61d('0x40')]['toLowerCase']())&&_0x5a9c19[_0xf61d('0x41')]!==_0xf61d('0x42')){if(_0x5a9c19['answer']){_0xc6e1c3[_0xf61d('0xa')]({'type':_0x5a9c19['type'][_0xf61d('0x37')](),'app':_0xf61d('0x14'),'appdata':_0xf61d('0x43'),'context':_0x4407e6['context'],'exten':_0x4407e6[_0xf61d('0x8')],'priority':_0x5a9c19['intervals'][_0xf61d('0x21')]+_0x3bce4c+_0x28a753++,'VoiceExtensionId':_0x4407e6['id']});_0xc6e1c3[_0xf61d('0xa')]({'type':_0x5a9c19[_0xf61d('0x0')][_0xf61d('0x37')](),'app':_0xf61d('0x1'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x4407e6[_0xf61d('0x3')],'exten':_0x4407e6['exten'],'priority':_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')]+_0x3bce4c+_0x28a753++,'VoiceExtensionId':_0x4407e6['id']});}else{_0xc6e1c3[_0xf61d('0xa')]({'type':_0x5a9c19[_0xf61d('0x0')][_0xf61d('0x37')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x4407e6[_0xf61d('0x3')],'exten':_0x4407e6['exten'],'priority':_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')]+_0x3bce4c+_0x28a753++,'VoiceExtensionId':_0x4407e6['id']});_0xc6e1c3['push']({'type':_0x5a9c19['type']['toLowerCase'](),'app':_0xf61d('0x1'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x4407e6[_0xf61d('0x3')],'exten':_0x4407e6[_0xf61d('0x8')],'priority':_0x5a9c19['intervals']['length']+_0x3bce4c+_0x28a753++,'VoiceExtensionId':_0x4407e6['id']});}}}}for(var _0x150824=0x0;_0x150824<_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')];_0x150824++){var _0x51ca8e=_0x3bce4c+_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')];var _0x263d6b=_0x150824===_0x5a9c19[_0xf61d('0x33')][_0xf61d('0x21')]-0x1?_0x3bce4c+_0xc6e1c3[_0xf61d('0x21')]+_0x542f7a[_0xf61d('0x21')]+0x2:_0x3bce4c+_0x150824+0x1;_0xc6e1c3[_0xf61d('0x44')](_0x150824,0x0,{'type':_0x4407e6[_0xf61d('0x0')],'app':'GotoIfTime','appdata':_0x5a9c19[_0xf61d('0x33')][_0x150824]+'?'+_0x4407e6[_0xf61d('0x3')]+_0xf61d('0x45')+_0x51ca8e+':'+_0x4407e6[_0xf61d('0x3')]+',${EXTEN},'+_0x263d6b,'exten':_0x4407e6[_0xf61d('0x8')],'context':_0x4407e6[_0xf61d('0x3')],'priority':_0x3bce4c+_0x150824,'VoiceExtensionId':_0x4407e6['id']});}if(_0x5a9c19['appType']===_0xf61d('0x46'))_0x5a9c19[_0xf61d('0x47')]=_0x5224a5(_0x4407e6,_0x5a9c19[_0xf61d('0x47')]);_0x5a9c19[_0xf61d('0x48')]=_0xc6e1c3[_0xf61d('0x21')]?_[_0xf61d('0x49')](_0xc6e1c3)[_0xf61d('0x48')]+0x1:_0x3bce4c;_0x4c2a67=_[_0xf61d('0x4a')](_0x4c2a67,_0xc6e1c3,[_0x5a9c19],_0x542f7a);_0x3bce4c=_[_0xf61d('0x49')](_0x4c2a67)[_0xf61d('0x48')]+0x1;}return _0x35d118(_0x4c2a67);})[_0xf61d('0x4b')](function(_0x3f33b2){_0x30b75b(_0x3f33b2);});});}return _0x5cda8a[_0xf61d('0x4c')](_0xf61d('0x4d'),attributes,{'tableName':_0xf61d('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x18d44e){var _0x516cc4=this[_0xf61d('0x4f')]({'plain':!![]});var _0x2ae887=_0x516cc4[_0xf61d('0x0')]===_0xf61d('0xe')?_0x51405a(_0x516cc4):_0x40127d(_0x516cc4);return _0xeabb66(_0x516cc4,_0x18d44e,_[_0xf61d('0x49')](_0x2ae887)[_0xf61d('0x48')]+0x1)[_0xf61d('0x31')](function(_0x5de308){var _0x4513ae=_[_0xf61d('0x4a')](_0x2ae887,_0x5de308);_0x4513ae[_0xf61d('0xa')]({'type':_0x516cc4[_0xf61d('0x0')],'app':_0xf61d('0x50'),'exten':_0x516cc4[_0xf61d('0x8')],'context':_0x516cc4[_0xf61d('0x3')],'priority':_[_0xf61d('0x49')](_0x4513ae)[_0xf61d('0x48')]+0x1,'VoiceExtensionId':_0x516cc4['id']});return _0x4513ae;});}}});};
\ No newline at end of file
index c16a528..ad4d23b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['./voiceExtension.socket','register','request','info','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceExtension,\x20%s,\x20%s','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','where','attributes','limit','include','map','model','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x35a9bf,_0xf3ae03){var _0x2e27e0=function(_0x3d6e8c){while(--_0x3d6e8c){_0x35a9bf['push'](_0x35a9bf['shift']());}};_0x2e27e0(++_0xf3ae03);}(_0x2eb2,0x19f));var _0x22eb=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2eb2[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var moment=require(_0x22eb('0x1'));var BPromise=require(_0x22eb('0x2'));var rs=require(_0x22eb('0x3'));var fs=require('fs');var Redis=require(_0x22eb('0x4'));var db=require(_0x22eb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x22eb('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x22eb('0x7'));var client=jayson[_0x22eb('0x8')][_0x22eb('0x9')]({'port':0x232a});config[_0x22eb('0xa')]=_[_0x22eb('0xb')](config[_0x22eb('0xa')],{'host':_0x22eb('0xc'),'port':0x18eb});var socket=require(_0x22eb('0xd'))(new Redis(config[_0x22eb('0xa')]));require(_0x22eb('0xe'))[_0x22eb('0xf')](socket);function respondWithRpcPromise(_0x3008e0,_0x489260,_0x46c197){return new BPromise(function(_0x54342e,_0x4ce9fb){return client[_0x22eb('0x10')](_0x3008e0,_0x46c197)['then'](function(_0x17b668){logger[_0x22eb('0x11')]('VoiceExtension,\x20%s,\x20%s',_0x489260,'request\x20sent');logger[_0x22eb('0x12')](_0x22eb('0x13'),_0x489260,_0x22eb('0x14'),JSON[_0x22eb('0x15')](_0x17b668));if(_0x17b668[_0x22eb('0x16')]){if(_0x17b668['error'][_0x22eb('0x17')]===0x1f4){logger['error'](_0x22eb('0x18'),_0x489260,_0x17b668['error'][_0x22eb('0x19')]);return _0x4ce9fb(_0x17b668[_0x22eb('0x16')]['message']);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x489260,_0x17b668[_0x22eb('0x16')]['message']);return _0x54342e(_0x17b668['error'][_0x22eb('0x19')]);}else{logger['info']('VoiceExtension,\x20%s,\x20%s',_0x489260,_0x22eb('0x14'));_0x54342e(_0x17b668[_0x22eb('0x1a')][_0x22eb('0x19')]);}})[_0x22eb('0x1b')](function(_0x3b0940){logger['error'](_0x22eb('0x18'),_0x489260,_0x3b0940);_0x4ce9fb(_0x3b0940);});});}exports[_0x22eb('0x1c')]=function(_0x10d182){var _0x410c25=this;return new Promise(function(_0x36be50,_0x517313){return db[_0x22eb('0x1d')][_0x22eb('0x1e')]({'raw':_0x10d182[_0x22eb('0x1f')]?_0x10d182['options']['raw']===undefined?!![]:![]:!![],'where':_0x10d182[_0x22eb('0x1f')]?_0x10d182[_0x22eb('0x1f')][_0x22eb('0x20')]||null:null,'attributes':_0x10d182[_0x22eb('0x1f')]?_0x10d182[_0x22eb('0x1f')][_0x22eb('0x21')]||null:null,'limit':_0x10d182[_0x22eb('0x1f')]?_0x10d182['options'][_0x22eb('0x22')]||null:null,'include':_0x10d182[_0x22eb('0x1f')]?_0x10d182[_0x22eb('0x1f')][_0x22eb('0x23')]?_[_0x22eb('0x24')](_0x10d182['options'][_0x22eb('0x23')],function(_0x6f8ff3){return{'model':db[_0x6f8ff3[_0x22eb('0x25')]],'as':_0x6f8ff3['as'],'attributes':_0x6f8ff3['attributes'],'include':_0x6f8ff3[_0x22eb('0x23')]?_[_0x22eb('0x24')](_0x6f8ff3['include'],function(_0x32a4b6){return{'model':db[_0x32a4b6[_0x22eb('0x25')]],'as':_0x32a4b6['as'],'attributes':_0x32a4b6[_0x22eb('0x21')],'include':_0x32a4b6[_0x22eb('0x23')]?_[_0x22eb('0x24')](_0x32a4b6['include'],function(_0x49dd59){return{'model':db[_0x49dd59[_0x22eb('0x25')]],'as':_0x49dd59['as'],'attributes':_0x49dd59[_0x22eb('0x21')]};}):[]};}):[]};}):[]:[]})[_0x22eb('0x26')](function(_0x7c0119){logger[_0x22eb('0x11')](_0x22eb('0x1c'),_0x10d182);logger[_0x22eb('0x12')](_0x22eb('0x1c'),_0x10d182,JSON[_0x22eb('0x15')](_0x7c0119));_0x36be50(_0x7c0119);})[_0x22eb('0x1b')](function(_0x24e9dc){logger[_0x22eb('0x16')]('GetVoiceExtension',_0x24e9dc[_0x22eb('0x19')],_0x10d182);_0x517313(_0x410c25['error'](0x1f4,_0x24e9dc[_0x22eb('0x19')]));});});};
\ No newline at end of file
+var _0xfd6e=['defaults','./voiceExtension.socket','register','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','VoiceExtension','findAll','options','raw','where','limit','include','map','attributes','model','GetVoiceExtension','stringify','lodash','moment','randomstring','ioredis','rpc','client','http','redis'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xfd6e,0x16e));var _0xefd6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfd6e[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xefd6('0x0'));var util=require('util');var moment=require(_0xefd6('0x1'));var BPromise=require('bluebird');var rs=require(_0xefd6('0x2'));var fs=require('fs');var Redis=require(_0xefd6('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xefd6('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xefd6('0x5')][_0xefd6('0x6')]({'port':0x232a});config[_0xefd6('0x7')]=_[_0xefd6('0x8')](config[_0xefd6('0x7')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xefd6('0x7')]));require(_0xefd6('0x9'))[_0xefd6('0xa')](socket);function respondWithRpcPromise(_0x4896c7,_0x19378f,_0x2c4942){return new BPromise(function(_0x10fe07,_0x3aad2b){return client['request'](_0x4896c7,_0x2c4942)[_0xefd6('0xb')](function(_0x298249){logger[_0xefd6('0xc')](_0xefd6('0xd'),_0x19378f,_0xefd6('0xe'));logger[_0xefd6('0xf')](_0xefd6('0x10'),_0x19378f,_0xefd6('0xe'),JSON['stringify'](_0x298249));if(_0x298249[_0xefd6('0x11')]){if(_0x298249[_0xefd6('0x11')][_0xefd6('0x12')]===0x1f4){logger[_0xefd6('0x11')](_0xefd6('0xd'),_0x19378f,_0x298249['error'][_0xefd6('0x13')]);return _0x3aad2b(_0x298249['error'][_0xefd6('0x13')]);}logger['error'](_0xefd6('0xd'),_0x19378f,_0x298249[_0xefd6('0x11')]['message']);return _0x10fe07(_0x298249[_0xefd6('0x11')][_0xefd6('0x13')]);}else{logger[_0xefd6('0xc')](_0xefd6('0xd'),_0x19378f,_0xefd6('0xe'));_0x10fe07(_0x298249[_0xefd6('0x14')][_0xefd6('0x13')]);}})[_0xefd6('0x15')](function(_0x7d7c5d){logger[_0xefd6('0x11')](_0xefd6('0xd'),_0x19378f,_0x7d7c5d);_0x3aad2b(_0x7d7c5d);});});}exports['GetVoiceExtension']=function(_0x46468a){var _0x1a6271=this;return new Promise(function(_0x1e9449,_0x3a26c5){return db[_0xefd6('0x16')][_0xefd6('0x17')]({'raw':_0x46468a['options']?_0x46468a[_0xefd6('0x18')][_0xefd6('0x19')]===undefined?!![]:![]:!![],'where':_0x46468a['options']?_0x46468a[_0xefd6('0x18')][_0xefd6('0x1a')]||null:null,'attributes':_0x46468a[_0xefd6('0x18')]?_0x46468a['options']['attributes']||null:null,'limit':_0x46468a[_0xefd6('0x18')]?_0x46468a[_0xefd6('0x18')][_0xefd6('0x1b')]||null:null,'include':_0x46468a['options']?_0x46468a[_0xefd6('0x18')][_0xefd6('0x1c')]?_[_0xefd6('0x1d')](_0x46468a['options'][_0xefd6('0x1c')],function(_0x3d91b4){return{'model':db[_0x3d91b4['model']],'as':_0x3d91b4['as'],'attributes':_0x3d91b4[_0xefd6('0x1e')],'include':_0x3d91b4[_0xefd6('0x1c')]?_[_0xefd6('0x1d')](_0x3d91b4['include'],function(_0x44b937){return{'model':db[_0x44b937[_0xefd6('0x1f')]],'as':_0x44b937['as'],'attributes':_0x44b937[_0xefd6('0x1e')],'include':_0x44b937[_0xefd6('0x1c')]?_[_0xefd6('0x1d')](_0x44b937[_0xefd6('0x1c')],function(_0x320e4f){return{'model':db[_0x320e4f[_0xefd6('0x1f')]],'as':_0x320e4f['as'],'attributes':_0x320e4f['attributes']};}):[]};}):[]};}):[]:[]})[_0xefd6('0xb')](function(_0x2bbbe5){logger[_0xefd6('0xc')](_0xefd6('0x20'),_0x46468a);logger[_0xefd6('0xf')]('GetVoiceExtension',_0x46468a,JSON[_0xefd6('0x21')](_0x2bbbe5));_0x1e9449(_0x2bbbe5);})[_0xefd6('0x15')](function(_0x171fe7){logger[_0xefd6('0x11')](_0xefd6('0x20'),_0x171fe7[_0xefd6('0x13')],_0x46468a);_0x3a26c5(_0x1a6271['error'](0x1f4,_0x171fe7[_0xefd6('0x13')]));});});};
\ No newline at end of file
index 80a5de6..d6bb71b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['length','voiceExtension:','./voiceExtension.events','save','remove','update','emit','removeListener'];(function(_0x4fc855,_0x47b3d7){var _0x5c7d1b=function(_0x494174){while(--_0x494174){_0x4fc855['push'](_0x4fc855['shift']());}};_0x5c7d1b(++_0x47b3d7);}(_0x53ec,0x192));var _0xc53e=function(_0xe6e3e2,_0x2b01da){_0xe6e3e2=_0xe6e3e2-0x0;var _0x126571=_0x53ec[_0xe6e3e2];return _0x126571;};'use strict';var VoiceExtensionEvents=require(_0xc53e('0x0'));var events=[_0xc53e('0x1'),_0xc53e('0x2'),_0xc53e('0x3')];function createListener(_0x1b04cc,_0xe45c6d){return function(_0x51c435){_0xe45c6d[_0xc53e('0x4')](_0x1b04cc,_0x51c435);};}function removeListener(_0x4e954a,_0x2b90f6){return function(){VoiceExtensionEvents[_0xc53e('0x5')](_0x4e954a,_0x2b90f6);};}exports['register']=function(_0x2f1414){for(var _0x4f989b=0x0,_0x41a9e8=events[_0xc53e('0x6')];_0x4f989b<_0x41a9e8;_0x4f989b++){var _0x5d3b28=events[_0x4f989b];var _0x1616ac=createListener(_0xc53e('0x7')+_0x5d3b28,_0x2f1414);VoiceExtensionEvents['on'](_0x5d3b28,_0x1616ac);}};
\ No newline at end of file
+var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x5235dd,_0x3f91cf){var _0x13059d=function(_0x355a98){while(--_0x355a98){_0x5235dd['push'](_0x5235dd['shift']());}};_0x13059d(++_0x3f91cf);}(_0xe14b,0x93));var _0xbe14=function(_0x1789f2,_0x2f6bcc){_0x1789f2=_0x1789f2-0x0;var _0x58c059=_0xe14b[_0x1789f2];return _0x58c059;};'use strict';var VoiceExtensionEvents=require(_0xbe14('0x0'));var events=[_0xbe14('0x1'),'remove','update'];function createListener(_0x11c3a0,_0x36393a){return function(_0x48a116){_0x36393a[_0xbe14('0x2')](_0x11c3a0,_0x48a116);};}function removeListener(_0x5ce8fb,_0x496c04){return function(){VoiceExtensionEvents[_0xbe14('0x3')](_0x5ce8fb,_0x496c04);};}exports[_0xbe14('0x4')]=function(_0x1fe204){for(var _0x1ff100=0x0,_0x1d9ade=events[_0xbe14('0x5')];_0x1ff100<_0x1d9ade;_0x1ff100++){var _0x196fca=events[_0x1ff100];var _0x566ae7=createListener('voiceExtension:'+_0x196fca,_0x1fe204);VoiceExtensionEvents['on'](_0x196fca,_0x566ae7);}};
\ No newline at end of file
index 779a389..66d4cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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','./voiceMail.controller','get'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x0295,0x1f0));var _0x5029=function(_0x4f9673,_0x4313bd){_0x4f9673=_0x4f9673-0x0;var _0x337e5e=_0x0295[_0x4f9673];return _0x337e5e;};'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/messages',auth[_0x5029('0x8')](),controller['getMessages']);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
+var _0xfdbd=['get','getMessages','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMail.controller','isAuthenticated','index','show'];(function(_0x53b498,_0x13d6c6){var _0x1cc09b=function(_0x1acb80){while(--_0x1acb80){_0x53b498['push'](_0x53b498['shift']());}};_0x1cc09b(++_0x13d6c6);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x143cc6,_0xf94536){_0x143cc6=_0x143cc6-0x0;var _0x2cedba=_0xfdbd[_0x143cc6];return _0x2cedba;};'use strict';var multer=require(_0xdfdb('0x0'));var util=require(_0xdfdb('0x1'));var path=require(_0xdfdb('0x2'));var timeout=require(_0xdfdb('0x3'));var express=require(_0xdfdb('0x4'));var router=express[_0xdfdb('0x5')]();var fs_extra=require(_0xdfdb('0x6'));var auth=require(_0xdfdb('0x7'));var interaction=require(_0xdfdb('0x8'));var config=require('../../config/environment');var controller=require(_0xdfdb('0x9'));router['get']('/',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdfdb('0xc')]);router[_0xdfdb('0xd')]('/:id/messages',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0xe')]);router[_0xdfdb('0xf')]('/',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0x10')]);router[_0xdfdb('0x11')](_0xdfdb('0x12'),auth['isAuthenticated'](),controller[_0xdfdb('0x13')]);router[_0xdfdb('0x14')]('/:id',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0x15')]);module[_0xdfdb('0x16')]=router;
\ No newline at end of file
index bbc6458..4e9f44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe48=['mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','trim','yes','ENUM','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20'];(function(_0x4bc89,_0x4e89b3){var _0x442844=function(_0x478b78){while(--_0x478b78){_0x4bc89['push'](_0x4bc89['shift']());}};_0x442844(++_0x4e89b3);}(_0xbe48,0x9a));var _0x8be4=function(_0x3bef08,_0x481c7a){_0x3bef08=_0x3bef08-0x0;var _0xb0beef=_0xbe48[_0x3bef08];return _0xb0beef;};'use strict';var Sequelize=require(_0x8be4('0x0'));module[_0x8be4('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x8be4('0x2')],'defaultValue':_0x8be4('0x3'),'unique':_0x8be4('0x4')},'mailbox':{'type':Sequelize[_0x8be4('0x2')],'defaultValue':'','allowNull':![],'unique':_0x8be4('0x4')},'password':{'type':Sequelize[_0x8be4('0x2')]},'fullname':{'type':Sequelize[_0x8be4('0x2')]},'email':{'type':Sequelize[_0x8be4('0x2')],'validate':{'isEmail':!![]},'set':function(_0x340548){this[_0x8be4('0x5')]('email',typeof _0x340548==='string'&&_0x340548[_0x8be4('0x6')]()?_0x340548[_0x8be4('0x6')]():null);}},'pager':{'type':Sequelize[_0x8be4('0x2')]},'tz':{'type':Sequelize[_0x8be4('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x8be4('0x7'),'allowNull':![]},'saycid':{'type':Sequelize[_0x8be4('0x8')](_0x8be4('0x7'),'no'),'defaultValue':_0x8be4('0x7'),'allowNull':![]},'dialout':{'type':Sequelize[_0x8be4('0x2')]},'callback':{'type':Sequelize[_0x8be4('0x2')]},'review':{'type':Sequelize[_0x8be4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x8be4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x8be4('0x8')](_0x8be4('0x7'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x8be4('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x8be4('0x7'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x8be4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x8be4('0x8')]('yes','no'),'defaultValue':_0x8be4('0x7'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0x8be4('0x7'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x8be4('0x8')](_0x8be4('0x7'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x8be4('0x8')]('yes','no'),'defaultValue':_0x8be4('0x7'),'allowNull':![]},'stamp':{'type':_0x8be4('0xa')},'emailsubject':{'type':Sequelize[_0x8be4('0x2')]},'emailbody':{'type':Sequelize[_0x8be4('0x2')]},'maxsecs':{'type':Sequelize[_0x8be4('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x8be4('0xc')],'get':function(){return this[_0x8be4('0xd')](_0x8be4('0xe'))+_0x8be4('0xf')+this[_0x8be4('0xd')](_0x8be4('0x10'));}}};
\ No newline at end of file
+var _0x3875=['contest_mailbox','setDataValue','email','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','fullname','\x20-\x20','getDataValue','sequelize','STRING','from-voicemail'];(function(_0x390733,_0x1e3d32){var _0x33beb9=function(_0x4491a3){while(--_0x4491a3){_0x390733['push'](_0x390733['shift']());}};_0x33beb9(++_0x1e3d32);}(_0x3875,0x66));var _0x5387=function(_0x2859f2,_0x1e3102){_0x2859f2=_0x2859f2-0x0;var _0x4974cd=_0x3875[_0x2859f2];return _0x4974cd;};'use strict';var Sequelize=require(_0x5387('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0x5387('0x1')]},'context':{'type':Sequelize[_0x5387('0x1')],'defaultValue':_0x5387('0x2'),'unique':_0x5387('0x3')},'mailbox':{'type':Sequelize[_0x5387('0x1')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x5387('0x1')]},'email':{'type':Sequelize[_0x5387('0x1')],'validate':{'isEmail':!![]},'set':function(_0x548ef6){this[_0x5387('0x4')](_0x5387('0x5'),typeof _0x548ef6==='string'&&_0x548ef6['trim']()?_0x548ef6[_0x5387('0x6')]():null);}},'pager':{'type':Sequelize[_0x5387('0x1')]},'tz':{'type':Sequelize[_0x5387('0x1')],'defaultValue':_0x5387('0x7')},'attach':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':_0x5387('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':_0x5387('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x5387('0x1')]},'callback':{'type':Sequelize[_0x5387('0x1')]},'review':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x5387('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x5387('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x5387('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':_0x5387('0x9'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x5387('0x8')](_0x5387('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x5387('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x5387('0xb')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x5387('0xc'))+_0x5387('0xd')+this[_0x5387('0xe')]('mailbox');}}};
\ No newline at end of file
index 29464f6..ed798f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','length','find','create','user','UserProfileSection','autoAssociation','UserProfileResource','body','params','findOne','VoiceMailMessage','nolimit','mailbox','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails','end','error','stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order'];(function(_0x2cd0fa,_0x39232f){var _0x1acbc4=function(_0x4e7d46){while(--_0x4e7d46){_0x2cd0fa['push'](_0x2cd0fa['shift']());}};_0x1acbc4(++_0x39232f);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6e6c[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0xc6e6('0x0'));var rimraf=require(_0xc6e6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc6e6('0x2'));var rp=require(_0xc6e6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc6e6('0x4'));var util=require('util');var path=require(_0xc6e6('0x5'));var sox=require('sox');var csv=require(_0xc6e6('0x6'));var ejs=require(_0xc6e6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc6e6('0x8'));var squel=require(_0xc6e6('0x9'));var crypto=require('crypto');var jsforce=require(_0xc6e6('0xa'));var deskjs=require(_0xc6e6('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc6e6('0xc'));var Papa=require('papaparse');var Redis=require(_0xc6e6('0xd'));var authService=require(_0xc6e6('0xe'));var qs=require(_0xc6e6('0xf'));var as=require(_0xc6e6('0x10'));var hardwareService=require(_0xc6e6('0x11'));var logger=require(_0xc6e6('0x12'))(_0xc6e6('0x13'));var utils=require(_0xc6e6('0x14'));var config=require(_0xc6e6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc6e6('0x16'))['db'];function respondWithStatusCode(_0x525d60,_0x3a30ce){_0x3a30ce=_0x3a30ce||0xcc;return function(_0x314d0f){if(_0x314d0f){return _0x525d60[_0xc6e6('0x17')](_0x3a30ce);}return _0x525d60[_0xc6e6('0x18')](_0x3a30ce)['end']();};}function respondWithResult(_0x149ac6,_0x2bfe7d){_0x2bfe7d=_0x2bfe7d||0xc8;return function(_0x13be73){if(_0x13be73){return _0x149ac6[_0xc6e6('0x18')](_0x2bfe7d)[_0xc6e6('0x19')](_0x13be73);}};}function respondWithFilteredResult(_0x4cdf15,_0x413cf8){return function(_0x178b34){if(_0x178b34){var _0x569474=typeof _0x413cf8[_0xc6e6('0x1a')]===_0xc6e6('0x1b')&&typeof _0x413cf8[_0xc6e6('0x1c')]==='undefined';var _0x51fd7c=_0x178b34['count'];var _0x3a1ccc=_0x569474?0x0:_0x413cf8['offset'];var _0x46e58f=_0x569474?_0x178b34[_0xc6e6('0x1d')]:_0x413cf8[_0xc6e6('0x1a')]+_0x413cf8[_0xc6e6('0x1c')];var _0x19e1e4;if(_0x46e58f>=_0x51fd7c){_0x46e58f=_0x51fd7c;_0x19e1e4=0xc8;}else{_0x19e1e4=0xce;}_0x4cdf15[_0xc6e6('0x18')](_0x19e1e4);return _0x4cdf15[_0xc6e6('0x1e')](_0xc6e6('0x1f'),_0x3a1ccc+'-'+_0x46e58f+'/'+_0x51fd7c)[_0xc6e6('0x19')](_0x178b34);}return null;};}function patchUpdates(_0x3d734d){return function(_0x4a36b6){try{jsonpatch[_0xc6e6('0x20')](_0x4a36b6,_0x3d734d,!![]);}catch(_0x4ad70e){return BPromise[_0xc6e6('0x21')](_0x4ad70e);}return _0x4a36b6[_0xc6e6('0x22')]();};}function saveUpdates(_0x2be6fc,_0x2f69f1){return function(_0x4f1d68){if(_0x4f1d68){return _0x4f1d68[_0xc6e6('0x23')](_0x2be6fc)[_0xc6e6('0x24')](function(_0x3a96df){return _0x3a96df;});}return null;};}function removeEntity(_0x36ebfa,_0x107561){return function(_0x4c35ae){if(_0x4c35ae){return _0x4c35ae[_0xc6e6('0x25')]()['then'](function(){var _0x266786=_0x4c35ae[_0xc6e6('0x26')]({'plain':!![]});var _0x2e5e0e=_0xc6e6('0x27');return db['UserProfileResource'][_0xc6e6('0x25')]({'where':{'type':_0x2e5e0e,'resourceId':_0x266786['id']}})['then'](function(){return _0x4c35ae;});})[_0xc6e6('0x24')](function(){_0x36ebfa['status'](0xcc)[_0xc6e6('0x28')]();});}};}function handleEntityNotFound(_0x16dcd9,_0x348888){return function(_0x41e7c2){if(!_0x41e7c2){_0x16dcd9[_0xc6e6('0x17')](0x194);}return _0x41e7c2;};}function handleError(_0x5e34f6,_0x346480){_0x346480=_0x346480||0x1f4;return function(_0x1501bd){logger[_0xc6e6('0x29')](_0x1501bd[_0xc6e6('0x2a')]);if(_0x1501bd['name']){delete _0x1501bd[_0xc6e6('0x2b')];}_0x5e34f6['status'](_0x346480)[_0xc6e6('0x2c')](_0x1501bd);};}exports[_0xc6e6('0x2d')]=function(_0x12c616,_0xc578b3){var _0xd3b63={},_0x402598={},_0x43ff9c={'count':0x0,'rows':[]};var _0x337442=_[_0xc6e6('0x2e')](db[_0xc6e6('0x2f')][_0xc6e6('0x30')],function(_0x214d6a){return{'name':_0x214d6a[_0xc6e6('0x31')],'type':_0x214d6a[_0xc6e6('0x32')][_0xc6e6('0x33')]};});_0x402598[_0xc6e6('0x34')]=_[_0xc6e6('0x2e')](_0x337442,'name');_0x402598[_0xc6e6('0x35')]=_[_0xc6e6('0x36')](_0x12c616['query']);_0x402598['filters']=_[_0xc6e6('0x37')](_0x402598[_0xc6e6('0x34')],_0x402598[_0xc6e6('0x35')]);_0xd3b63[_0xc6e6('0x38')]=_[_0xc6e6('0x37')](_0x402598[_0xc6e6('0x34')],qs['fields'](_0x12c616[_0xc6e6('0x35')][_0xc6e6('0x39')]));_0xd3b63[_0xc6e6('0x38')]=_0xd3b63['attributes']['length']?_0xd3b63[_0xc6e6('0x38')]:_0x402598[_0xc6e6('0x34')];if(!_0x12c616[_0xc6e6('0x35')][_0xc6e6('0x3a')]('nolimit')){_0xd3b63['limit']=qs[_0xc6e6('0x1c')](_0x12c616['query'][_0xc6e6('0x1c')]);_0xd3b63['offset']=qs[_0xc6e6('0x1a')](_0x12c616[_0xc6e6('0x35')][_0xc6e6('0x1a')]);}_0xd3b63[_0xc6e6('0x3b')]=qs['sort'](_0x12c616['query'][_0xc6e6('0x3c')]);_0xd3b63[_0xc6e6('0x3d')]=qs[_0xc6e6('0x3e')](_[_0xc6e6('0x3f')](_0x12c616['query'],_0x402598['filters']),_0x337442);if(_0x12c616[_0xc6e6('0x35')][_0xc6e6('0x40')]){_0xd3b63[_0xc6e6('0x3d')]=_[_0xc6e6('0x41')](_0xd3b63['where'],{'$or':_[_0xc6e6('0x2e')](_0x337442,function(_0x46c3ef){if(_0x46c3ef['type']!=='VIRTUAL'){var _0x2b01fd={};_0x2b01fd[_0x46c3ef['name']]={'$like':'%'+_0x12c616[_0xc6e6('0x35')][_0xc6e6('0x40')]+'%'};return _0x2b01fd;}})});}_0xd3b63=_['merge']({},_0xd3b63,_0x12c616[_0xc6e6('0x42')]);var _0x50c96d={'where':_0xd3b63[_0xc6e6('0x3d')]};return db['VoiceMail'][_0xc6e6('0x1d')](_0x50c96d)[_0xc6e6('0x24')](function(_0x247076){_0x43ff9c[_0xc6e6('0x1d')]=_0x247076;if(_0x12c616[_0xc6e6('0x35')][_0xc6e6('0x43')]){_0xd3b63[_0xc6e6('0x44')]=[{'all':!![]}];}return db[_0xc6e6('0x2f')][_0xc6e6('0x45')](_0xd3b63);})['then'](function(_0x3e3da6){_0x43ff9c[_0xc6e6('0x46')]=_0x3e3da6;return _0x43ff9c;})[_0xc6e6('0x24')](respondWithFilteredResult(_0xc578b3,_0xd3b63))[_0xc6e6('0x47')](handleError(_0xc578b3,null));};exports['show']=function(_0xc5f4fb,_0x825640){var _0x3a46ee={'raw':!![],'where':{'id':_0xc5f4fb['params']['id']}},_0x2fa3c5={};_0x2fa3c5[_0xc6e6('0x34')]=_[_0xc6e6('0x36')](db[_0xc6e6('0x2f')][_0xc6e6('0x30')]);_0x2fa3c5[_0xc6e6('0x35')]=_['keys'](_0xc5f4fb[_0xc6e6('0x35')]);_0x2fa3c5['filters']=_[_0xc6e6('0x37')](_0x2fa3c5['model'],_0x2fa3c5[_0xc6e6('0x35')]);_0x3a46ee[_0xc6e6('0x38')]=_[_0xc6e6('0x37')](_0x2fa3c5[_0xc6e6('0x34')],qs[_0xc6e6('0x39')](_0xc5f4fb[_0xc6e6('0x35')][_0xc6e6('0x39')]));_0x3a46ee[_0xc6e6('0x38')]=_0x3a46ee['attributes'][_0xc6e6('0x48')]?_0x3a46ee[_0xc6e6('0x38')]:_0x2fa3c5[_0xc6e6('0x34')];if(_0xc5f4fb['query'][_0xc6e6('0x43')]){_0x3a46ee[_0xc6e6('0x44')]=[{'all':!![]}];}_0x3a46ee=_[_0xc6e6('0x41')]({},_0x3a46ee,_0xc5f4fb[_0xc6e6('0x42')]);return db[_0xc6e6('0x2f')][_0xc6e6('0x49')](_0x3a46ee)[_0xc6e6('0x24')](handleEntityNotFound(_0x825640,null))[_0xc6e6('0x24')](respondWithResult(_0x825640,null))[_0xc6e6('0x47')](handleError(_0x825640,null));};exports[_0xc6e6('0x4a')]=function(_0x3bfe85,_0x470167){return db[_0xc6e6('0x2f')][_0xc6e6('0x4a')](_0x3bfe85['body'],{})[_0xc6e6('0x24')](function(_0x5566df){var _0x2c48e7=_0x3bfe85[_0xc6e6('0x4b')]['get']({'plain':!![]});if(!_0x2c48e7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c48e7['role']==='user'){var _0x531dca=_0x5566df[_0xc6e6('0x26')]({'plain':!![]});var _0x40bbe9=_0xc6e6('0x27');return db[_0xc6e6('0x4c')][_0xc6e6('0x49')]({'where':{'name':_0x40bbe9,'userProfileId':_0x2c48e7['userProfileId']},'raw':!![]})['then'](function(_0x335229){if(_0x335229&&_0x335229[_0xc6e6('0x4d')]===0x0){return db[_0xc6e6('0x4e')][_0xc6e6('0x4a')]({'name':_0x531dca['name'],'resourceId':_0x531dca['id'],'type':_0x335229[_0xc6e6('0x2b')],'sectionId':_0x335229['id']},{})[_0xc6e6('0x24')](function(){return _0x5566df;});}else{return _0x5566df;}})[_0xc6e6('0x47')](function(_0x286dcf){logger[_0xc6e6('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x286dcf);throw _0x286dcf;});}return _0x5566df;})[_0xc6e6('0x24')](respondWithResult(_0x470167,0xc9))[_0xc6e6('0x47')](handleError(_0x470167,null));};exports[_0xc6e6('0x23')]=function(_0x5113e3,_0x3df0db){if(_0x5113e3[_0xc6e6('0x4f')]['id']){delete _0x5113e3[_0xc6e6('0x4f')]['id'];}return db[_0xc6e6('0x2f')][_0xc6e6('0x49')]({'where':{'id':_0x5113e3['params']['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x3df0db,null))[_0xc6e6('0x24')](saveUpdates(_0x5113e3[_0xc6e6('0x4f')],null))[_0xc6e6('0x24')](respondWithResult(_0x3df0db,null))[_0xc6e6('0x47')](handleError(_0x3df0db,null));};exports['destroy']=function(_0x5a7391,_0x58b09b){return db[_0xc6e6('0x2f')][_0xc6e6('0x49')]({'where':{'id':_0x5a7391[_0xc6e6('0x50')]['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x58b09b,null))[_0xc6e6('0x24')](removeEntity(_0x58b09b,null))[_0xc6e6('0x47')](handleError(_0x58b09b,null));};exports['getMessages']=function(_0xcd3d5d,_0x50f52a,_0x26f0e0){return db[_0xc6e6('0x2f')][_0xc6e6('0x51')]({'where':{'id':_0xcd3d5d['params']['id']}})[_0xc6e6('0x24')](handleEntityNotFound(_0x50f52a,null))['then'](function(_0x3b6822){var _0x50ac31;var _0x4a3bb1={},_0x18e101={};_0x18e101['model']=_['keys'](db[_0xc6e6('0x52')][_0xc6e6('0x30')]);_0x18e101[_0xc6e6('0x35')]=_[_0xc6e6('0x36')](_0xcd3d5d[_0xc6e6('0x35')]);_0x18e101[_0xc6e6('0x3e')]=_[_0xc6e6('0x37')](_0x18e101[_0xc6e6('0x34')],_0x18e101['query']);_0x4a3bb1[_0xc6e6('0x38')]=_[_0xc6e6('0x37')](_0x18e101[_0xc6e6('0x34')],qs[_0xc6e6('0x39')](_0xcd3d5d['query'][_0xc6e6('0x39')]));_0x4a3bb1[_0xc6e6('0x38')]=_0x4a3bb1[_0xc6e6('0x38')]['length']?_0x4a3bb1['attributes']:_0x18e101[_0xc6e6('0x34')];if(!_0xcd3d5d['query']['hasOwnProperty'](_0xc6e6('0x53'))){_0x4a3bb1[_0xc6e6('0x1c')]=qs[_0xc6e6('0x1c')](_0xcd3d5d[_0xc6e6('0x35')][_0xc6e6('0x1c')]);_0x4a3bb1[_0xc6e6('0x1a')]=qs[_0xc6e6('0x1a')](_0xcd3d5d[_0xc6e6('0x35')][_0xc6e6('0x1a')]);}_0x4a3bb1[_0xc6e6('0x3b')]=qs[_0xc6e6('0x3c')](_0xcd3d5d['query']['sort']);_0x4a3bb1[_0xc6e6('0x3d')]=qs['filters'](_['pick'](_0xcd3d5d[_0xc6e6('0x35')],_0x18e101[_0xc6e6('0x3e')]));if(_0xcd3d5d[_0xc6e6('0x35')]['filter']){_0x4a3bb1[_0xc6e6('0x3d')]=_[_0xc6e6('0x41')](_0x4a3bb1['where'],{'$or':_['map'](_0x4a3bb1[_0xc6e6('0x38')],function(_0x31329c){var _0x9d69b5={};_0x9d69b5[_0x31329c]={'$like':'%'+_0xcd3d5d[_0xc6e6('0x35')][_0xc6e6('0x40')]+'%'};return _0x9d69b5;})});}_0x4a3bb1[_0xc6e6('0x3d')]=_['merge'](_0x4a3bb1[_0xc6e6('0x3d')],{'mailboxuser':_0x3b6822[_0xc6e6('0x54')]});_0x4a3bb1=_[_0xc6e6('0x41')]({},_0x4a3bb1,_0xcd3d5d[_0xc6e6('0x42')]);return db[_0xc6e6('0x52')]['findAndCountAll'](_0x4a3bb1)[_0xc6e6('0x24')](respondWithFilteredResult(_0x50f52a,_0x4a3bb1));})[_0xc6e6('0x47')](handleError(_0x50f52a,null));};
\ No newline at end of file
+var _0xda3f=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','get','Voicemails','UserProfileResource','destroy','error','stack','name','send','map','VoiceMail','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','rows','show','params','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','length','mailbox','VoiceMailMessage','findAndCountAll','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x40c3e1,_0x599dbb){var _0x3a1f91=function(_0x388b25){while(--_0x388b25){_0x40c3e1['push'](_0x40c3e1['shift']());}};_0x3a1f91(++_0x599dbb);}(_0xda3f,0xec));var _0xfda3=function(_0x4e75b9,_0x359dc3){_0x4e75b9=_0x4e75b9-0x0;var _0x576170=_0xda3f[_0x4e75b9];return _0x576170;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){var _0x2d5b44=_0x16eaa6[_0xfda3('0x24')]({'plain':!![]});var _0x4ae9b9=_0xfda3('0x25');return db[_0xfda3('0x26')][_0xfda3('0x27')]({'where':{'type':_0x4ae9b9,'resourceId':_0x2d5b44['id']}})[_0xfda3('0x23')](function(){return _0x16eaa6;});})[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c6d7d,_0x1e87fe){return function(_0x2bef2b){if(!_0x2bef2b){_0x3c6d7d[_0xfda3('0x17')](0x194);}return _0x2bef2b;};}function handleError(_0x33ffd4,_0x5704c7){_0x5704c7=_0x5704c7||0x1f4;return function(_0x3c1549){logger[_0xfda3('0x28')](_0x3c1549[_0xfda3('0x29')]);if(_0x3c1549[_0xfda3('0x2a')]){delete _0x3c1549[_0xfda3('0x2a')];}_0x33ffd4[_0xfda3('0x18')](_0x5704c7)[_0xfda3('0x2b')](_0x3c1549);};}exports['index']=function(_0x56ca3a,_0x3aef3c){var _0x4fd277={},_0x4b9d90={},_0x16b4a2={'count':0x0,'rows':[]};var _0x2a5971=_[_0xfda3('0x2c')](db[_0xfda3('0x2d')][_0xfda3('0x2e')],function(_0x35ec7a){return{'name':_0x35ec7a[_0xfda3('0x2f')],'type':_0x35ec7a[_0xfda3('0x30')][_0xfda3('0x31')]};});_0x4b9d90['model']=_[_0xfda3('0x2c')](_0x2a5971,_0xfda3('0x2a'));_0x4b9d90[_0xfda3('0x32')]=_[_0xfda3('0x33')](_0x56ca3a[_0xfda3('0x32')]);_0x4b9d90[_0xfda3('0x34')]=_[_0xfda3('0x35')](_0x4b9d90[_0xfda3('0x36')],_0x4b9d90[_0xfda3('0x32')]);_0x4fd277['attributes']=_['intersection'](_0x4b9d90[_0xfda3('0x36')],qs[_0xfda3('0x37')](_0x56ca3a['query'][_0xfda3('0x37')]));_0x4fd277[_0xfda3('0x38')]=_0x4fd277[_0xfda3('0x38')]['length']?_0x4fd277[_0xfda3('0x38')]:_0x4b9d90[_0xfda3('0x36')];if(!_0x56ca3a[_0xfda3('0x32')][_0xfda3('0x39')](_0xfda3('0x3a'))){_0x4fd277['limit']=qs[_0xfda3('0x1b')](_0x56ca3a[_0xfda3('0x32')][_0xfda3('0x1b')]);_0x4fd277['offset']=qs[_0xfda3('0x19')](_0x56ca3a['query'][_0xfda3('0x19')]);}_0x4fd277[_0xfda3('0x3b')]=qs[_0xfda3('0x3c')](_0x56ca3a[_0xfda3('0x32')][_0xfda3('0x3c')]);_0x4fd277[_0xfda3('0x3d')]=qs[_0xfda3('0x34')](_[_0xfda3('0x3e')](_0x56ca3a['query'],_0x4b9d90[_0xfda3('0x34')]),_0x2a5971);if(_0x56ca3a[_0xfda3('0x32')][_0xfda3('0x3f')]){_0x4fd277[_0xfda3('0x3d')]=_['merge'](_0x4fd277[_0xfda3('0x3d')],{'$or':_[_0xfda3('0x2c')](_0x2a5971,function(_0x590ba5){if(_0x590ba5['type']!=='VIRTUAL'){var _0x31b173={};_0x31b173[_0x590ba5[_0xfda3('0x2a')]]={'$like':'%'+_0x56ca3a[_0xfda3('0x32')][_0xfda3('0x3f')]+'%'};return _0x31b173;}})});}_0x4fd277=_[_0xfda3('0x40')]({},_0x4fd277,_0x56ca3a[_0xfda3('0x41')]);var _0x40b814={'where':_0x4fd277[_0xfda3('0x3d')]};return db[_0xfda3('0x2d')][_0xfda3('0x1c')](_0x40b814)['then'](function(_0x27200f){_0x16b4a2[_0xfda3('0x1c')]=_0x27200f;if(_0x56ca3a['query'][_0xfda3('0x42')]){_0x4fd277['include']=[{'all':!![]}];}return db['VoiceMail']['findAll'](_0x4fd277);})[_0xfda3('0x23')](function(_0x107fb1){_0x16b4a2[_0xfda3('0x43')]=_0x107fb1;return _0x16b4a2;})[_0xfda3('0x23')](respondWithFilteredResult(_0x3aef3c,_0x4fd277))['catch'](handleError(_0x3aef3c,null));};exports[_0xfda3('0x44')]=function(_0x25b9a6,_0x154ae7){var _0x2ce504={'raw':!![],'where':{'id':_0x25b9a6[_0xfda3('0x45')]['id']}},_0x564ccd={};_0x564ccd[_0xfda3('0x36')]=_[_0xfda3('0x33')](db['VoiceMail']['rawAttributes']);_0x564ccd[_0xfda3('0x32')]=_[_0xfda3('0x33')](_0x25b9a6[_0xfda3('0x32')]);_0x564ccd[_0xfda3('0x34')]=_[_0xfda3('0x35')](_0x564ccd[_0xfda3('0x36')],_0x564ccd[_0xfda3('0x32')]);_0x2ce504[_0xfda3('0x38')]=_[_0xfda3('0x35')](_0x564ccd[_0xfda3('0x36')],qs[_0xfda3('0x37')](_0x25b9a6[_0xfda3('0x32')][_0xfda3('0x37')]));_0x2ce504[_0xfda3('0x38')]=_0x2ce504['attributes']['length']?_0x2ce504[_0xfda3('0x38')]:_0x564ccd[_0xfda3('0x36')];if(_0x25b9a6[_0xfda3('0x32')][_0xfda3('0x42')]){_0x2ce504[_0xfda3('0x46')]=[{'all':!![]}];}_0x2ce504=_[_0xfda3('0x40')]({},_0x2ce504,_0x25b9a6[_0xfda3('0x41')]);return db[_0xfda3('0x2d')][_0xfda3('0x47')](_0x2ce504)[_0xfda3('0x23')](handleEntityNotFound(_0x154ae7,null))['then'](respondWithResult(_0x154ae7,null))[_0xfda3('0x48')](handleError(_0x154ae7,null));};exports[_0xfda3('0x49')]=function(_0x481356,_0x36aa3a){return db[_0xfda3('0x2d')]['create'](_0x481356[_0xfda3('0x4a')],{})[_0xfda3('0x23')](function(_0x15eb87){var _0x4bcd2b=_0x481356[_0xfda3('0x4b')][_0xfda3('0x24')]({'plain':!![]});if(!_0x4bcd2b)throw new Error(_0xfda3('0x4c'));if(_0x4bcd2b['role']===_0xfda3('0x4b')){var _0x33565d=_0x15eb87[_0xfda3('0x24')]({'plain':!![]});var _0x2f6e62=_0xfda3('0x25');return db['UserProfileSection'][_0xfda3('0x47')]({'where':{'name':_0x2f6e62,'userProfileId':_0x4bcd2b['userProfileId']},'raw':!![]})[_0xfda3('0x23')](function(_0x587eef){if(_0x587eef&&_0x587eef[_0xfda3('0x4d')]===0x0){return db[_0xfda3('0x26')][_0xfda3('0x49')]({'name':_0x33565d[_0xfda3('0x2a')],'resourceId':_0x33565d['id'],'type':_0x587eef['name'],'sectionId':_0x587eef['id']},{})[_0xfda3('0x23')](function(){return _0x15eb87;});}else{return _0x15eb87;}})[_0xfda3('0x48')](function(_0x2f2c32){logger[_0xfda3('0x28')](_0xfda3('0x4e'),_0x2f2c32);throw _0x2f2c32;});}return _0x15eb87;})[_0xfda3('0x23')](respondWithResult(_0x36aa3a,0xc9))[_0xfda3('0x48')](handleError(_0x36aa3a,null));};exports['update']=function(_0x4b1410,_0x4fb214){if(_0x4b1410[_0xfda3('0x4a')]['id']){delete _0x4b1410[_0xfda3('0x4a')]['id'];}return db['VoiceMail']['find']({'where':{'id':_0x4b1410[_0xfda3('0x45')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x4fb214,null))[_0xfda3('0x23')](saveUpdates(_0x4b1410[_0xfda3('0x4a')],null))[_0xfda3('0x23')](respondWithResult(_0x4fb214,null))['catch'](handleError(_0x4fb214,null));};exports[_0xfda3('0x27')]=function(_0x2a30e8,_0x167424){return db[_0xfda3('0x2d')][_0xfda3('0x47')]({'where':{'id':_0x2a30e8[_0xfda3('0x45')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x167424,null))[_0xfda3('0x23')](removeEntity(_0x167424,null))[_0xfda3('0x48')](handleError(_0x167424,null));};exports[_0xfda3('0x4f')]=function(_0x3ed7c1,_0x1fa27a,_0x5b426b){return db[_0xfda3('0x2d')][_0xfda3('0x50')]({'where':{'id':_0x3ed7c1[_0xfda3('0x45')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x1fa27a,null))[_0xfda3('0x23')](function(_0x405d7e){var _0x42c7a1;var _0x4ce31c={},_0x5a3a6f={};_0x5a3a6f[_0xfda3('0x36')]=_[_0xfda3('0x33')](db['VoiceMailMessage'][_0xfda3('0x2e')]);_0x5a3a6f[_0xfda3('0x32')]=_[_0xfda3('0x33')](_0x3ed7c1[_0xfda3('0x32')]);_0x5a3a6f['filters']=_['intersection'](_0x5a3a6f[_0xfda3('0x36')],_0x5a3a6f[_0xfda3('0x32')]);_0x4ce31c[_0xfda3('0x38')]=_['intersection'](_0x5a3a6f[_0xfda3('0x36')],qs['fields'](_0x3ed7c1[_0xfda3('0x32')][_0xfda3('0x37')]));_0x4ce31c[_0xfda3('0x38')]=_0x4ce31c[_0xfda3('0x38')][_0xfda3('0x51')]?_0x4ce31c[_0xfda3('0x38')]:_0x5a3a6f['model'];if(!_0x3ed7c1[_0xfda3('0x32')][_0xfda3('0x39')](_0xfda3('0x3a'))){_0x4ce31c[_0xfda3('0x1b')]=qs[_0xfda3('0x1b')](_0x3ed7c1['query']['limit']);_0x4ce31c[_0xfda3('0x19')]=qs[_0xfda3('0x19')](_0x3ed7c1['query']['offset']);}_0x4ce31c['order']=qs[_0xfda3('0x3c')](_0x3ed7c1[_0xfda3('0x32')]['sort']);_0x4ce31c[_0xfda3('0x3d')]=qs[_0xfda3('0x34')](_[_0xfda3('0x3e')](_0x3ed7c1[_0xfda3('0x32')],_0x5a3a6f['filters']));if(_0x3ed7c1[_0xfda3('0x32')][_0xfda3('0x3f')]){_0x4ce31c[_0xfda3('0x3d')]=_[_0xfda3('0x40')](_0x4ce31c[_0xfda3('0x3d')],{'$or':_[_0xfda3('0x2c')](_0x4ce31c['attributes'],function(_0x4e312d){var _0x31d657={};_0x31d657[_0x4e312d]={'$like':'%'+_0x3ed7c1['query'][_0xfda3('0x3f')]+'%'};return _0x31d657;})});}_0x4ce31c[_0xfda3('0x3d')]=_[_0xfda3('0x40')](_0x4ce31c[_0xfda3('0x3d')],{'mailboxuser':_0x405d7e[_0xfda3('0x52')]});_0x4ce31c=_[_0xfda3('0x40')]({},_0x4ce31c,_0x3ed7c1[_0xfda3('0x41')]);return db[_0xfda3('0x53')][_0xfda3('0x54')](_0x4ce31c)[_0xfda3('0x23')](respondWithFilteredResult(_0x1fa27a,_0x4ce31c));})['catch'](handleError(_0x1fa27a,null));};
\ No newline at end of file
index fcbb793..321b03c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x413b=['lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox','context'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x413b,0xe0));var _0xb413=function(_0x5bf420,_0x2d068d){_0x5bf420=_0x5bf420-0x0;var _0x1c5255=_0x413b[_0x5bf420];return _0x1c5255;};'use strict';var _=require(_0xb413('0x0'));var util=require(_0xb413('0x1'));var logger=require(_0xb413('0x2'))('api');var moment=require(_0xb413('0x3'));var BPromise=require('bluebird');var rp=require(_0xb413('0x4'));var fs=require('fs');var path=require(_0xb413('0x5'));var rimraf=require('rimraf');var config=require(_0xb413('0x6'));var attributes=require(_0xb413('0x7'));module[_0xb413('0x8')]=function(_0x5e25b3,_0x119b26){return _0x5e25b3[_0xb413('0x9')](_0xb413('0xa'),attributes,{'tableName':_0xb413('0xb'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xb413('0xc'),_0xb413('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcca2=['request-promise','path','rimraf','../../config/environment','./voiceMail.attributes','exports','VoiceMail','voice_voicemail','mailbox_context','mailbox','lodash','util','api','moment','bluebird'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xcca2,0x1bd));var _0x2cca=function(_0xc51b18,_0x1b7832){_0xc51b18=_0xc51b18-0x0;var _0x57c74b=_0xcca2[_0xc51b18];return _0x57c74b;};'use strict';var _=require(_0x2cca('0x0'));var util=require(_0x2cca('0x1'));var logger=require('../../config/logger')(_0x2cca('0x2'));var moment=require(_0x2cca('0x3'));var BPromise=require(_0x2cca('0x4'));var rp=require(_0x2cca('0x5'));var fs=require('fs');var path=require(_0x2cca('0x6'));var rimraf=require(_0x2cca('0x7'));var config=require(_0x2cca('0x8'));var attributes=require(_0x2cca('0x9'));module[_0x2cca('0xa')]=function(_0x392c50,_0x3477f4){return _0x392c50['define'](_0x2cca('0xb'),attributes,{'tableName':_0x2cca('0xc'),'paranoid':![],'indexes':[{'name':_0x2cca('0xd'),'fields':[_0x2cca('0xe'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index f0da36c..6686171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e34=['message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error'];(function(_0x5f4be7,_0xc1d854){var _0x5deaeb=function(_0x253ac5){while(--_0x253ac5){_0x5f4be7['push'](_0x5f4be7['shift']());}};_0x5deaeb(++_0xc1d854);}(_0x2e34,0x6c));var _0x42e3=function(_0x5dfd09,_0x521c58){_0x5dfd09=_0x5dfd09-0x0;var _0x12fe61=_0x2e34[_0x5dfd09];return _0x12fe61;};'use strict';var _=require('lodash');var util=require(_0x42e3('0x0'));var moment=require(_0x42e3('0x1'));var BPromise=require(_0x42e3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x42e3('0x3'));var db=require(_0x42e3('0x4'))['db'];var utils=require(_0x42e3('0x5'));var logger=require('../../config/logger')(_0x42e3('0x6'));var config=require('../../config/environment');var jayson=require(_0x42e3('0x7'));var client=jayson[_0x42e3('0x8')][_0x42e3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f3cc8,_0x38c373,_0x2d02e3){return new BPromise(function(_0x241602,_0x459120){return client['request'](_0x3f3cc8,_0x2d02e3)[_0x42e3('0xa')](function(_0x564aa0){logger[_0x42e3('0xb')](_0x42e3('0xc'),_0x38c373,_0x42e3('0xd'));logger[_0x42e3('0xe')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x38c373,_0x42e3('0xd'),JSON[_0x42e3('0xf')](_0x564aa0));if(_0x564aa0['error']){if(_0x564aa0['error'][_0x42e3('0x10')]===0x1f4){logger[_0x42e3('0x11')]('VoiceMail,\x20%s,\x20%s',_0x38c373,_0x564aa0[_0x42e3('0x11')][_0x42e3('0x12')]);return _0x459120(_0x564aa0[_0x42e3('0x11')][_0x42e3('0x12')]);}logger['error']('VoiceMail,\x20%s,\x20%s',_0x38c373,_0x564aa0[_0x42e3('0x11')]['message']);return _0x241602(_0x564aa0[_0x42e3('0x11')][_0x42e3('0x12')]);}else{logger['info']('VoiceMail,\x20%s,\x20%s',_0x38c373,_0x42e3('0xd'));_0x241602(_0x564aa0[_0x42e3('0x13')][_0x42e3('0x12')]);}})[_0x42e3('0x14')](function(_0x2b6a58){logger[_0x42e3('0x11')](_0x42e3('0xc'),_0x38c373,_0x2b6a58);_0x459120(_0x2b6a58);});});}
\ No newline at end of file
+var _0x692a=['moment','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util'];(function(_0x536a72,_0x2b01b5){var _0x3523d4=function(_0x840be8){while(--_0x840be8){_0x536a72['push'](_0x536a72['shift']());}};_0x3523d4(++_0x2b01b5);}(_0x692a,0x8a));var _0xa692=function(_0xdf1f2b,_0x3ad6e4){_0xdf1f2b=_0xdf1f2b-0x0;var _0x49d687=_0x692a[_0xdf1f2b];return _0x49d687;};'use strict';var _=require(_0xa692('0x0'));var util=require(_0xa692('0x1'));var moment=require(_0xa692('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa692('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa692('0x4'));var logger=require(_0xa692('0x5'))(_0xa692('0x6'));var config=require('../../config/environment');var jayson=require(_0xa692('0x7'));var client=jayson[_0xa692('0x8')][_0xa692('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbf64ca,_0x168692,_0x40f803){return new BPromise(function(_0x4b6060,_0x53f706){return client[_0xa692('0xa')](_0xbf64ca,_0x40f803)[_0xa692('0xb')](function(_0x5b1fc7){logger['info'](_0xa692('0xc'),_0x168692,_0xa692('0xd'));logger[_0xa692('0xe')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x168692,_0xa692('0xd'),JSON[_0xa692('0xf')](_0x5b1fc7));if(_0x5b1fc7[_0xa692('0x10')]){if(_0x5b1fc7[_0xa692('0x10')][_0xa692('0x11')]===0x1f4){logger['error'](_0xa692('0xc'),_0x168692,_0x5b1fc7[_0xa692('0x10')]['message']);return _0x53f706(_0x5b1fc7[_0xa692('0x10')]['message']);}logger['error']('VoiceMail,\x20%s,\x20%s',_0x168692,_0x5b1fc7[_0xa692('0x10')][_0xa692('0x12')]);return _0x4b6060(_0x5b1fc7[_0xa692('0x10')][_0xa692('0x12')]);}else{logger['info'](_0xa692('0xc'),_0x168692,_0xa692('0xd'));_0x4b6060(_0x5b1fc7['result']['message']);}})[_0xa692('0x13')](function(_0x486375){logger[_0xa692('0x10')](_0xa692('0xc'),_0x168692,_0x486375);_0x53f706(_0x486375);});});}
\ No newline at end of file
index a3cf76a..3de8ee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f4=['destroy','exports','multer','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','index','/:id','isAuthenticated','show','get','/:id/download','post','put','update'];(function(_0x5f42f7,_0xd5facb){var _0x344856=function(_0x15615c){while(--_0x15615c){_0x5f42f7['push'](_0x5f42f7['shift']());}};_0x344856(++_0xd5facb);}(_0xa5f4,0x110));var _0x4a5f=function(_0x5db03b,_0x1df727){_0x5db03b=_0x5db03b-0x0;var _0x346ba8=_0xa5f4[_0x5db03b];return _0x346ba8;};'use strict';var multer=require(_0x4a5f('0x0'));var util=require(_0x4a5f('0x1'));var path=require(_0x4a5f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4a5f('0x3'));var interaction=require(_0x4a5f('0x4'));var config=require(_0x4a5f('0x5'));var controller=require(_0x4a5f('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x4a5f('0x7')]);router['get'](_0x4a5f('0x8'),auth[_0x4a5f('0x9')](),controller[_0x4a5f('0xa')]);router[_0x4a5f('0xb')](_0x4a5f('0xc'),auth[_0x4a5f('0x9')](),controller['download']);router[_0x4a5f('0xd')]('/',auth[_0x4a5f('0x9')](),controller['create']);router[_0x4a5f('0xe')](_0x4a5f('0x8'),auth[_0x4a5f('0x9')](),controller[_0x4a5f('0xf')]);router['delete'](_0x4a5f('0x8'),auth[_0x4a5f('0x9')](),controller[_0x4a5f('0x10')]);module[_0x4a5f('0x11')]=router;
\ No newline at end of file
+var _0x1db6=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMailMessage.controller','isAuthenticated','index','/:id','get','/:id/download','download','post','create','put','destroy','exports','multer','util','path'];(function(_0x2b1f1c,_0x19f32d){var _0x159df3=function(_0x181173){while(--_0x181173){_0x2b1f1c['push'](_0x2b1f1c['shift']());}};_0x159df3(++_0x19f32d);}(_0x1db6,0xd9));var _0x61db=function(_0x3504a0,_0x5bd568){_0x3504a0=_0x3504a0-0x0;var _0x4cf4e8=_0x1db6[_0x3504a0];return _0x4cf4e8;};'use strict';var multer=require(_0x61db('0x0'));var util=require(_0x61db('0x1'));var path=require(_0x61db('0x2'));var timeout=require(_0x61db('0x3'));var express=require(_0x61db('0x4'));var router=express['Router']();var fs_extra=require(_0x61db('0x5'));var auth=require(_0x61db('0x6'));var interaction=require(_0x61db('0x7'));var config=require('../../config/environment');var controller=require(_0x61db('0x8'));router['get']('/',auth[_0x61db('0x9')](),controller[_0x61db('0xa')]);router['get'](_0x61db('0xb'),auth[_0x61db('0x9')](),controller['show']);router[_0x61db('0xc')](_0x61db('0xd'),auth[_0x61db('0x9')](),controller[_0x61db('0xe')]);router[_0x61db('0xf')]('/',auth['isAuthenticated'](),controller[_0x61db('0x10')]);router[_0x61db('0x11')](_0x61db('0xb'),auth[_0x61db('0x9')](),controller['update']);router['delete'](_0x61db('0xb'),auth[_0x61db('0x9')](),controller[_0x61db('0x12')]);module[_0x61db('0x13')]=router;
\ No newline at end of file
index 49f1091..21a76f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8586=['INTEGER','STRING','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','VIRTUAL'];(function(_0x2c8e3a,_0x582f0f){var _0x414304=function(_0x53dee5){while(--_0x53dee5){_0x2c8e3a['push'](_0x2c8e3a['shift']());}};_0x414304(++_0x582f0f);}(_0x8586,0x15d));var _0x6858=function(_0x4d3187,_0x267c51){_0x4d3187=_0x4d3187-0x0;var _0x107906=_0x8586[_0x4d3187];return _0x107906;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6858('0x0')],'get':function(_0x2b8784){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x6858('0x1')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'context':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'callerid':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'origtime':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'duration':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x6858('0x2')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x6858('0x3')](_0x6858('0x4'))}};
\ No newline at end of file
+var _0x22b9=['exports','VIRTUAL','getDataValue','INTEGER','STRING','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0xb68438,_0x21c2c0){var _0xbb3e85=function(_0x564de7){while(--_0x564de7){_0xb68438['push'](_0xb68438['shift']());}};_0xbb3e85(++_0x21c2c0);}(_0x22b9,0x1ad));var _0x922b=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x22b9[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require(_0x922b('0x0'));module[_0x922b('0x1')]={'name':{'type':Sequelize[_0x922b('0x2')],'get':function(_0x419bd7){return this[_0x922b('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x922b('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x922b('0x5')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x922b('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x922b('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x922b('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x922b('0x5')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0x922b('0x6')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x922b('0x5')],'defaultValue':''},'stamp':{'type':_0x922b('0x7'),'defaultValue':Sequelize[_0x922b('0x8')](_0x922b('0x9'))}};
\ No newline at end of file
index 9cdea5b..a3ec296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa85=['../../config/utils','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','end','stack','send','index','VoiceMailMessage','rawAttributes','fieldName','key','model','differenceBy','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','type','VIRTUAL','options','then','include','rows','catch','show','create','body','find','params','destroy','download','recording','msg_id','Sequelize','ValidationError','audio/wav','attachment','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api'];(function(_0x38d5f7,_0x440f76){var _0x565610=function(_0x41c929){while(--_0x41c929){_0x38d5f7['push'](_0x38d5f7['shift']());}};_0x565610(++_0x440f76);}(_0xaa85,0x8f));var _0x5aa8=function(_0x2ea9e9,_0x2c09ee){_0x2ea9e9=_0x2ea9e9-0x0;var _0x58918b=_0xaa85[_0x2ea9e9];return _0x58918b;};'use strict';var emlformat=require(_0x5aa8('0x0'));var rimraf=require(_0x5aa8('0x1'));var zipdir=require(_0x5aa8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5aa8('0x3'));var moment=require(_0x5aa8('0x4'));var BPromise=require(_0x5aa8('0x5'));var Mustache=require(_0x5aa8('0x6'));var util=require(_0x5aa8('0x7'));var path=require(_0x5aa8('0x8'));var sox=require(_0x5aa8('0x9'));var csv=require('to-csv');var ejs=require(_0x5aa8('0xa'));var fs=require('fs');var fs_extra=require(_0x5aa8('0xb'));var _=require(_0x5aa8('0xc'));var squel=require(_0x5aa8('0xd'));var crypto=require('crypto');var jsforce=require(_0x5aa8('0xe'));var deskjs=require(_0x5aa8('0xf'));var toCsv=require(_0x5aa8('0x10'));var querystring=require(_0x5aa8('0x11'));var Papa=require(_0x5aa8('0x12'));var Redis=require(_0x5aa8('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x5aa8('0x14'));var as=require(_0x5aa8('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5aa8('0x16'));var utils=require(_0x5aa8('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12b7aa,_0x5b4d62){_0x5b4d62=_0x5b4d62||0xcc;return function(_0x6caf68){if(_0x6caf68){return _0x12b7aa[_0x5aa8('0x18')](_0x5b4d62);}return _0x12b7aa[_0x5aa8('0x19')](_0x5b4d62)['end']();};}function respondWithResult(_0x4b26e7,_0x4ef56c){_0x4ef56c=_0x4ef56c||0xc8;return function(_0x11324f){if(_0x11324f){return _0x4b26e7['status'](_0x4ef56c)['json'](_0x11324f);}};}function respondWithFilteredResult(_0x4066c0,_0x2b0346){return function(_0x56858a){if(_0x56858a){var _0x33c6dc=typeof _0x2b0346[_0x5aa8('0x1a')]===_0x5aa8('0x1b')&&typeof _0x2b0346[_0x5aa8('0x1c')]===_0x5aa8('0x1b');var _0x48a92c=_0x56858a['count'];var _0x317b70=_0x33c6dc?0x0:_0x2b0346[_0x5aa8('0x1a')];var _0x53e05b=_0x33c6dc?_0x56858a[_0x5aa8('0x1d')]:_0x2b0346[_0x5aa8('0x1a')]+_0x2b0346[_0x5aa8('0x1c')];var _0x192d31;if(_0x53e05b>=_0x48a92c){_0x53e05b=_0x48a92c;_0x192d31=0xc8;}else{_0x192d31=0xce;}_0x4066c0[_0x5aa8('0x19')](_0x192d31);return _0x4066c0[_0x5aa8('0x1e')](_0x5aa8('0x1f'),_0x317b70+'-'+_0x53e05b+'/'+_0x48a92c)['json'](_0x56858a);}return null;};}function patchUpdates(_0x55ce8c){return function(_0x40c25c){try{jsonpatch[_0x5aa8('0x20')](_0x40c25c,_0x55ce8c,!![]);}catch(_0x4f9543){return BPromise[_0x5aa8('0x21')](_0x4f9543);}return _0x40c25c[_0x5aa8('0x22')]();};}function saveUpdates(_0x5bc212,_0x2a8d22){return function(_0x394b9b){if(_0x394b9b){return _0x394b9b[_0x5aa8('0x23')](_0x5bc212)['then'](function(_0x3279d5){return _0x3279d5;});}return null;};}function removeEntity(_0x3b301f,_0x418f70){return function(_0x597831){if(_0x597831){return _0x597831['destroy']()['then'](function(){_0x3b301f[_0x5aa8('0x19')](0xcc)[_0x5aa8('0x24')]();});}};}function handleEntityNotFound(_0x1a248c,_0x2e630b){return function(_0xb30da6){if(!_0xb30da6){_0x1a248c['sendStatus'](0x194);}return _0xb30da6;};}function handleError(_0x131ef2,_0x19a5a1){_0x19a5a1=_0x19a5a1||0x1f4;return function(_0x45c0d6){logger['error'](_0x45c0d6[_0x5aa8('0x25')]);if(_0x45c0d6['name']){delete _0x45c0d6['name'];}_0x131ef2[_0x5aa8('0x19')](_0x19a5a1)[_0x5aa8('0x26')](_0x45c0d6);};}exports[_0x5aa8('0x27')]=function(_0x5dadee,_0x4f4f4a){var _0x3cde0e={},_0x142d5b={},_0x7b1559={'count':0x0,'rows':[]};var _0x4cf849=_['map'](db[_0x5aa8('0x28')][_0x5aa8('0x29')],function(_0x4d002b){return{'name':_0x4d002b[_0x5aa8('0x2a')],'type':_0x4d002b['type'][_0x5aa8('0x2b')]};});_0x142d5b[_0x5aa8('0x2c')]=_[_0x5aa8('0x2d')](_['map'](_0x4cf849,_0x5aa8('0x2e')),[_0x5aa8('0x2e')]);_0x142d5b[_0x5aa8('0x2f')]=_[_0x5aa8('0x30')](_0x5dadee['query']);_0x142d5b[_0x5aa8('0x31')]=_[_0x5aa8('0x32')](_0x142d5b['model'],_0x142d5b[_0x5aa8('0x2f')]);_0x3cde0e[_0x5aa8('0x33')]=_['intersection'](_0x142d5b[_0x5aa8('0x2c')],qs[_0x5aa8('0x34')](_0x5dadee[_0x5aa8('0x2f')][_0x5aa8('0x34')]));_0x3cde0e[_0x5aa8('0x33')]=_0x3cde0e[_0x5aa8('0x33')][_0x5aa8('0x35')]?_0x3cde0e['attributes']:_0x142d5b[_0x5aa8('0x2c')];if(!_0x5dadee[_0x5aa8('0x2f')][_0x5aa8('0x36')](_0x5aa8('0x37'))){_0x3cde0e['limit']=qs[_0x5aa8('0x1c')](_0x5dadee['query'][_0x5aa8('0x1c')]);_0x3cde0e[_0x5aa8('0x1a')]=qs[_0x5aa8('0x1a')](_0x5dadee[_0x5aa8('0x2f')][_0x5aa8('0x1a')]);}_0x3cde0e['order']=qs[_0x5aa8('0x38')](_0x5dadee[_0x5aa8('0x2f')]['sort']);_0x3cde0e[_0x5aa8('0x39')]=qs[_0x5aa8('0x31')](_['pick'](_0x5dadee[_0x5aa8('0x2f')],_0x142d5b[_0x5aa8('0x31')]),_0x4cf849);if(_0x5dadee[_0x5aa8('0x2f')][_0x5aa8('0x3a')]){_0x3cde0e[_0x5aa8('0x39')]=_[_0x5aa8('0x3b')](_0x3cde0e['where'],{'$or':_[_0x5aa8('0x3c')](_0x4cf849,function(_0x288c61){if(_0x288c61[_0x5aa8('0x3d')]!==_0x5aa8('0x3e')){var _0x201943={};_0x201943[_0x288c61[_0x5aa8('0x2e')]]={'$like':'%'+_0x5dadee['query']['filter']+'%'};return _0x201943;}})});}_0x3cde0e=_[_0x5aa8('0x3b')]({},_0x3cde0e,_0x5dadee[_0x5aa8('0x3f')]);var _0x344de2={'where':_0x3cde0e[_0x5aa8('0x39')]};return db[_0x5aa8('0x28')][_0x5aa8('0x1d')](_0x344de2)[_0x5aa8('0x40')](function(_0x33b805){_0x7b1559[_0x5aa8('0x1d')]=_0x33b805;if(_0x5dadee['query']['includeAll']){_0x3cde0e[_0x5aa8('0x41')]=[{'all':!![]}];}return db[_0x5aa8('0x28')]['findAll'](_0x3cde0e);})[_0x5aa8('0x40')](function(_0x486cb8){_0x7b1559[_0x5aa8('0x42')]=_0x486cb8;return _0x7b1559;})['then'](respondWithFilteredResult(_0x4f4f4a,_0x3cde0e))[_0x5aa8('0x43')](handleError(_0x4f4f4a,null));};exports[_0x5aa8('0x44')]=function(_0x31e92c,_0x58b49c){var _0x5640c6={'raw':!![],'where':{'id':_0x31e92c['params']['id']}},_0x386f96={};_0x386f96[_0x5aa8('0x2c')]=_[_0x5aa8('0x30')](db['VoiceMailMessage']['rawAttributes']);_0x386f96[_0x5aa8('0x2f')]=_[_0x5aa8('0x30')](_0x31e92c[_0x5aa8('0x2f')]);_0x386f96[_0x5aa8('0x31')]=_[_0x5aa8('0x32')](_0x386f96[_0x5aa8('0x2c')],_0x386f96[_0x5aa8('0x2f')]);_0x5640c6[_0x5aa8('0x33')]=_[_0x5aa8('0x32')](_0x386f96[_0x5aa8('0x2c')],qs['fields'](_0x31e92c[_0x5aa8('0x2f')][_0x5aa8('0x34')]));_0x5640c6[_0x5aa8('0x33')]=_0x5640c6[_0x5aa8('0x33')][_0x5aa8('0x35')]?_0x5640c6[_0x5aa8('0x33')]:_0x386f96[_0x5aa8('0x2c')];if(_0x31e92c[_0x5aa8('0x2f')]['includeAll']){_0x5640c6[_0x5aa8('0x41')]=[{'all':!![]}];}_0x5640c6=_[_0x5aa8('0x3b')]({},_0x5640c6,_0x31e92c[_0x5aa8('0x3f')]);return db['VoiceMailMessage']['find'](_0x5640c6)[_0x5aa8('0x40')](handleEntityNotFound(_0x58b49c,null))[_0x5aa8('0x40')](respondWithResult(_0x58b49c,null))[_0x5aa8('0x43')](handleError(_0x58b49c,null));};exports[_0x5aa8('0x45')]=function(_0x4d99c7,_0x13944d){return db[_0x5aa8('0x28')][_0x5aa8('0x45')](_0x4d99c7[_0x5aa8('0x46')],{})[_0x5aa8('0x40')](respondWithResult(_0x13944d,0xc9))['catch'](handleError(_0x13944d,null));};exports[_0x5aa8('0x23')]=function(_0x1bd5e9,_0x10ae7d){if(_0x1bd5e9[_0x5aa8('0x46')]['id']){delete _0x1bd5e9[_0x5aa8('0x46')]['id'];}return db[_0x5aa8('0x28')][_0x5aa8('0x47')]({'where':{'id':_0x1bd5e9[_0x5aa8('0x48')]['id']}})[_0x5aa8('0x40')](handleEntityNotFound(_0x10ae7d,null))[_0x5aa8('0x40')](saveUpdates(_0x1bd5e9[_0x5aa8('0x46')],null))[_0x5aa8('0x40')](respondWithResult(_0x10ae7d,null))[_0x5aa8('0x43')](handleError(_0x10ae7d,null));};exports[_0x5aa8('0x49')]=function(_0x243aee,_0x56a23b){return db[_0x5aa8('0x28')][_0x5aa8('0x47')]({'where':{'id':_0x243aee[_0x5aa8('0x48')]['id']}})[_0x5aa8('0x40')](handleEntityNotFound(_0x56a23b,null))[_0x5aa8('0x40')](removeEntity(_0x56a23b,null))[_0x5aa8('0x43')](handleError(_0x56a23b,null));};exports[_0x5aa8('0x4a')]=function(_0x4a1766,_0x3e1118,_0x289979){return db[_0x5aa8('0x28')]['find']({'where':{'id':_0x4a1766[_0x5aa8('0x48')]['id']},'attributes':['id',_0x5aa8('0x4b'),_0x5aa8('0x4c')]})[_0x5aa8('0x40')](handleEntityNotFound(_0x3e1118,null))[_0x5aa8('0x40')](function(_0x32a052){if(_0x32a052){if(!_0x32a052[_0x5aa8('0x4b')]){throw new db[(_0x5aa8('0x4d'))][(_0x5aa8('0x4e'))]('VoiceMailMessage\x20not\x20found');}var _0x5a711e={'Content-Type':_0x5aa8('0x4f'),'Content-Disposition':_0x5aa8('0x50')};if(_0x32a052['msg_id']){_0x5a711e['Content-Disposition']=_0x5aa8('0x51')+_0x32a052[_0x5aa8('0x4c')]+_0x5aa8('0x52');}_0x3e1118[_0x5aa8('0x1e')](_0x5a711e);return _0x3e1118[_0x5aa8('0x26')](new Buffer(_0x32a052[_0x5aa8('0x4b')]));}})[_0x5aa8('0x43')](handleError(_0x3e1118,null));};
\ No newline at end of file
+var _0xc53c=['sort','where','pick','filter','merge','VIRTUAL','options','VoiceMailMessage','includeAll','findAll','rows','show','params','filters','length','include','find','catch','create','body','download','recording','msg_id','Sequelize','ValidationError','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','set','eml-format','rimraf','zip-dir','fast-json-patch','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','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','then','stack','send','index','rawAttributes','type','key','model','name','query','intersection','attributes','fields','order'];(function(_0x4c578b,_0x2f69a1){var _0x418335=function(_0x1cf429){while(--_0x1cf429){_0x4c578b['push'](_0x4c578b['shift']());}};_0x418335(++_0x2f69a1);}(_0xc53c,0x162));var _0xcc53=function(_0x29efb6,_0xad7ec1){_0x29efb6=_0x29efb6-0x0;var _0x5b5796=_0xc53c[_0x29efb6];return _0x5b5796;};'use strict';var emlformat=require(_0xcc53('0x0'));var rimraf=require(_0xcc53('0x1'));var zipdir=require(_0xcc53('0x2'));var jsonpatch=require(_0xcc53('0x3'));var rp=require('request-promise');var moment=require(_0xcc53('0x4'));var BPromise=require(_0xcc53('0x5'));var Mustache=require(_0xcc53('0x6'));var util=require('util');var path=require(_0xcc53('0x7'));var sox=require('sox');var csv=require(_0xcc53('0x8'));var ejs=require(_0xcc53('0x9'));var fs=require('fs');var fs_extra=require(_0xcc53('0xa'));var _=require(_0xcc53('0xb'));var squel=require(_0xcc53('0xc'));var crypto=require(_0xcc53('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xcc53('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcc53('0xf'));var Papa=require(_0xcc53('0x10'));var Redis=require('ioredis');var authService=require(_0xcc53('0x11'));var qs=require(_0xcc53('0x12'));var as=require(_0xcc53('0x13'));var hardwareService=require(_0xcc53('0x14'));var logger=require(_0xcc53('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xcc53('0x16'));var licenseUtil=require(_0xcc53('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x50bada,_0x24e251){_0x24e251=_0x24e251||0xcc;return function(_0x3bb006){if(_0x3bb006){return _0x50bada['sendStatus'](_0x24e251);}return _0x50bada[_0xcc53('0x18')](_0x24e251)[_0xcc53('0x19')]();};}function respondWithResult(_0x565bd4,_0x545ad4){_0x545ad4=_0x545ad4||0xc8;return function(_0x2682b7){if(_0x2682b7){return _0x565bd4[_0xcc53('0x18')](_0x545ad4)[_0xcc53('0x1a')](_0x2682b7);}};}function respondWithFilteredResult(_0x53f609,_0x3fdbda){return function(_0x3a735b){if(_0x3a735b){var _0x3d8050=typeof _0x3fdbda['offset']===_0xcc53('0x1b')&&typeof _0x3fdbda[_0xcc53('0x1c')]===_0xcc53('0x1b');var _0x3e2193=_0x3a735b[_0xcc53('0x1d')];var _0x1f4242=_0x3d8050?0x0:_0x3fdbda[_0xcc53('0x1e')];var _0x2f6535=_0x3d8050?_0x3a735b['count']:_0x3fdbda['offset']+_0x3fdbda['limit'];var _0x796062;if(_0x2f6535>=_0x3e2193){_0x2f6535=_0x3e2193;_0x796062=0xc8;}else{_0x796062=0xce;}_0x53f609[_0xcc53('0x18')](_0x796062);return _0x53f609['set'](_0xcc53('0x1f'),_0x1f4242+'-'+_0x2f6535+'/'+_0x3e2193)[_0xcc53('0x1a')](_0x3a735b);}return null;};}function patchUpdates(_0x462d2d){return function(_0x29dbcb){try{jsonpatch[_0xcc53('0x20')](_0x29dbcb,_0x462d2d,!![]);}catch(_0x1047ac){return BPromise[_0xcc53('0x21')](_0x1047ac);}return _0x29dbcb[_0xcc53('0x22')]();};}function saveUpdates(_0x54faa8,_0x1a86cd){return function(_0x1d0cf7){if(_0x1d0cf7){return _0x1d0cf7[_0xcc53('0x23')](_0x54faa8)['then'](function(_0x2fd474){return _0x2fd474;});}return null;};}function removeEntity(_0x5839dc,_0x3a65d7){return function(_0x1b77f7){if(_0x1b77f7){return _0x1b77f7[_0xcc53('0x24')]()[_0xcc53('0x25')](function(){_0x5839dc[_0xcc53('0x18')](0xcc)[_0xcc53('0x19')]();});}};}function handleEntityNotFound(_0x2a8c39,_0xbb805e){return function(_0x82a81c){if(!_0x82a81c){_0x2a8c39['sendStatus'](0x194);}return _0x82a81c;};}function handleError(_0x2b8c6c,_0x2744ec){_0x2744ec=_0x2744ec||0x1f4;return function(_0x500c9e){logger['error'](_0x500c9e[_0xcc53('0x26')]);if(_0x500c9e['name']){delete _0x500c9e['name'];}_0x2b8c6c[_0xcc53('0x18')](_0x2744ec)[_0xcc53('0x27')](_0x500c9e);};}exports[_0xcc53('0x28')]=function(_0x3e818f,_0x658826){var _0x2a7ae7={},_0x31e3df={},_0x43201b={'count':0x0,'rows':[]};var _0x12b73e=_['map'](db['VoiceMailMessage'][_0xcc53('0x29')],function(_0x21a432){return{'name':_0x21a432['fieldName'],'type':_0x21a432[_0xcc53('0x2a')][_0xcc53('0x2b')]};});_0x31e3df[_0xcc53('0x2c')]=_['differenceBy'](_['map'](_0x12b73e,_0xcc53('0x2d')),['name']);_0x31e3df[_0xcc53('0x2e')]=_['keys'](_0x3e818f[_0xcc53('0x2e')]);_0x31e3df['filters']=_[_0xcc53('0x2f')](_0x31e3df[_0xcc53('0x2c')],_0x31e3df[_0xcc53('0x2e')]);_0x2a7ae7[_0xcc53('0x30')]=_['intersection'](_0x31e3df[_0xcc53('0x2c')],qs[_0xcc53('0x31')](_0x3e818f[_0xcc53('0x2e')][_0xcc53('0x31')]));_0x2a7ae7[_0xcc53('0x30')]=_0x2a7ae7['attributes']['length']?_0x2a7ae7['attributes']:_0x31e3df[_0xcc53('0x2c')];if(!_0x3e818f[_0xcc53('0x2e')]['hasOwnProperty']('nolimit')){_0x2a7ae7[_0xcc53('0x1c')]=qs[_0xcc53('0x1c')](_0x3e818f[_0xcc53('0x2e')][_0xcc53('0x1c')]);_0x2a7ae7['offset']=qs[_0xcc53('0x1e')](_0x3e818f['query'][_0xcc53('0x1e')]);}_0x2a7ae7[_0xcc53('0x32')]=qs['sort'](_0x3e818f[_0xcc53('0x2e')][_0xcc53('0x33')]);_0x2a7ae7[_0xcc53('0x34')]=qs['filters'](_[_0xcc53('0x35')](_0x3e818f[_0xcc53('0x2e')],_0x31e3df['filters']),_0x12b73e);if(_0x3e818f[_0xcc53('0x2e')][_0xcc53('0x36')]){_0x2a7ae7[_0xcc53('0x34')]=_[_0xcc53('0x37')](_0x2a7ae7[_0xcc53('0x34')],{'$or':_['map'](_0x12b73e,function(_0x5e379c){if(_0x5e379c[_0xcc53('0x2a')]!==_0xcc53('0x38')){var _0x2cbfdb={};_0x2cbfdb[_0x5e379c[_0xcc53('0x2d')]]={'$like':'%'+_0x3e818f['query']['filter']+'%'};return _0x2cbfdb;}})});}_0x2a7ae7=_['merge']({},_0x2a7ae7,_0x3e818f[_0xcc53('0x39')]);var _0x5478bf={'where':_0x2a7ae7[_0xcc53('0x34')]};return db[_0xcc53('0x3a')][_0xcc53('0x1d')](_0x5478bf)[_0xcc53('0x25')](function(_0x15db49){_0x43201b[_0xcc53('0x1d')]=_0x15db49;if(_0x3e818f[_0xcc53('0x2e')][_0xcc53('0x3b')]){_0x2a7ae7['include']=[{'all':!![]}];}return db[_0xcc53('0x3a')][_0xcc53('0x3c')](_0x2a7ae7);})['then'](function(_0xc5eca0){_0x43201b[_0xcc53('0x3d')]=_0xc5eca0;return _0x43201b;})[_0xcc53('0x25')](respondWithFilteredResult(_0x658826,_0x2a7ae7))['catch'](handleError(_0x658826,null));};exports[_0xcc53('0x3e')]=function(_0x238ad3,_0x3ff8f0){var _0x5872b9={'raw':!![],'where':{'id':_0x238ad3[_0xcc53('0x3f')]['id']}},_0x38f25b={};_0x38f25b[_0xcc53('0x2c')]=_['keys'](db[_0xcc53('0x3a')]['rawAttributes']);_0x38f25b[_0xcc53('0x2e')]=_['keys'](_0x238ad3['query']);_0x38f25b[_0xcc53('0x40')]=_[_0xcc53('0x2f')](_0x38f25b[_0xcc53('0x2c')],_0x38f25b[_0xcc53('0x2e')]);_0x5872b9[_0xcc53('0x30')]=_[_0xcc53('0x2f')](_0x38f25b['model'],qs[_0xcc53('0x31')](_0x238ad3['query'][_0xcc53('0x31')]));_0x5872b9[_0xcc53('0x30')]=_0x5872b9['attributes'][_0xcc53('0x41')]?_0x5872b9['attributes']:_0x38f25b['model'];if(_0x238ad3['query'][_0xcc53('0x3b')]){_0x5872b9[_0xcc53('0x42')]=[{'all':!![]}];}_0x5872b9=_['merge']({},_0x5872b9,_0x238ad3[_0xcc53('0x39')]);return db['VoiceMailMessage'][_0xcc53('0x43')](_0x5872b9)[_0xcc53('0x25')](handleEntityNotFound(_0x3ff8f0,null))[_0xcc53('0x25')](respondWithResult(_0x3ff8f0,null))[_0xcc53('0x44')](handleError(_0x3ff8f0,null));};exports[_0xcc53('0x45')]=function(_0x15bfae,_0x54c260){return db[_0xcc53('0x3a')][_0xcc53('0x45')](_0x15bfae[_0xcc53('0x46')],{})['then'](respondWithResult(_0x54c260,0xc9))['catch'](handleError(_0x54c260,null));};exports[_0xcc53('0x23')]=function(_0x11dad5,_0x5564b1){if(_0x11dad5[_0xcc53('0x46')]['id']){delete _0x11dad5[_0xcc53('0x46')]['id'];}return db[_0xcc53('0x3a')][_0xcc53('0x43')]({'where':{'id':_0x11dad5[_0xcc53('0x3f')]['id']}})[_0xcc53('0x25')](handleEntityNotFound(_0x5564b1,null))[_0xcc53('0x25')](saveUpdates(_0x11dad5['body'],null))[_0xcc53('0x25')](respondWithResult(_0x5564b1,null))[_0xcc53('0x44')](handleError(_0x5564b1,null));};exports[_0xcc53('0x24')]=function(_0x4a896e,_0x46bdc6){return db['VoiceMailMessage'][_0xcc53('0x43')]({'where':{'id':_0x4a896e[_0xcc53('0x3f')]['id']}})['then'](handleEntityNotFound(_0x46bdc6,null))[_0xcc53('0x25')](removeEntity(_0x46bdc6,null))['catch'](handleError(_0x46bdc6,null));};exports[_0xcc53('0x47')]=function(_0x187ac1,_0xc6e18b,_0x80b6d){return db['VoiceMailMessage'][_0xcc53('0x43')]({'where':{'id':_0x187ac1[_0xcc53('0x3f')]['id']},'attributes':['id',_0xcc53('0x48'),_0xcc53('0x49')]})['then'](handleEntityNotFound(_0xc6e18b,null))['then'](function(_0x5a5603){if(_0x5a5603){if(!_0x5a5603['recording']){throw new db[(_0xcc53('0x4a'))][(_0xcc53('0x4b'))]('VoiceMailMessage\x20not\x20found');}var _0x2edbfe={'Content-Type':_0xcc53('0x4c'),'Content-Disposition':_0xcc53('0x4d')};if(_0x5a5603['msg_id']){_0x2edbfe[_0xcc53('0x4e')]=_0xcc53('0x4f')+_0x5a5603['msg_id']+'.wav\x22';}_0xc6e18b[_0xcc53('0x50')](_0x2edbfe);return _0xc6e18b[_0xcc53('0x27')](new Buffer(_0x5a5603[_0xcc53('0x48')]));}})[_0xcc53('0x44')](handleError(_0xc6e18b,null));};
\ No newline at end of file
index 87223c8..3f185c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152b=['VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','api','moment','request-promise','path','rimraf','exports','define'];(function(_0x29ff0f,_0xa7dd11){var _0x5995c7=function(_0x21b1b8){while(--_0x21b1b8){_0x29ff0f['push'](_0x29ff0f['shift']());}};_0x5995c7(++_0xa7dd11);}(_0x152b,0x1d7));var _0xb152=function(_0x2a453b,_0x479c50){_0x2a453b=_0x2a453b-0x0;var _0x132f79=_0x152b[_0x2a453b];return _0x132f79;};'use strict';var _=require(_0xb152('0x0'));var util=require(_0xb152('0x1'));var logger=require('../../config/logger')(_0xb152('0x2'));var moment=require(_0xb152('0x3'));var BPromise=require('bluebird');var rp=require(_0xb152('0x4'));var fs=require('fs');var path=require(_0xb152('0x5'));var rimraf=require(_0xb152('0x6'));var config=require('../../config/environment');var attributes=require('./voiceMailMessage.attributes');module[_0xb152('0x7')]=function(_0x25d432,_0x434c8e){return _0x25d432[_0xb152('0x8')](_0xb152('0x9'),attributes,{'tableName':_0xb152('0xa'),'paranoid':![],'indexes':[{'name':_0xb152('0xb'),'fields':[_0xb152('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x65b3=['rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','lodash','util','../../config/logger','api','request-promise'];(function(_0x41bc48,_0x1c3205){var _0x596d17=function(_0x5f2f59){while(--_0x5f2f59){_0x41bc48['push'](_0x41bc48['shift']());}};_0x596d17(++_0x1c3205);}(_0x65b3,0xdf));var _0x365b=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x65b3[_0x166742];return _0xb7814a;};'use strict';var _=require(_0x365b('0x0'));var util=require(_0x365b('0x1'));var logger=require(_0x365b('0x2'))(_0x365b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x365b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x365b('0x5'));var config=require(_0x365b('0x6'));var attributes=require(_0x365b('0x7'));module[_0x365b('0x8')]=function(_0x5a0d4d,_0x4cdaf6){return _0x5a0d4d[_0x365b('0x9')](_0x365b('0xa'),attributes,{'tableName':_0x365b('0xb'),'paranoid':![],'indexes':[{'name':'dir','fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
index ef6dff9..95c401c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ea=['jayson/promise','client','request','then','info','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','VoiceMailMessage,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1836aa,_0x527f4a){var _0x200819=function(_0x1ab3c1){while(--_0x1ab3c1){_0x1836aa['push'](_0x1836aa['shift']());}};_0x200819(++_0x527f4a);}(_0xf8ea,0x80));var _0xaf8e=function(_0x511161,_0x2deb0b){_0x511161=_0x511161-0x0;var _0x18be92=_0xf8ea[_0x511161];return _0x18be92;};'use strict';var _=require(_0xaf8e('0x0'));var util=require(_0xaf8e('0x1'));var moment=require(_0xaf8e('0x2'));var BPromise=require(_0xaf8e('0x3'));var rs=require(_0xaf8e('0x4'));var fs=require('fs');var Redis=require(_0xaf8e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xaf8e('0x6'));var logger=require(_0xaf8e('0x7'))(_0xaf8e('0x8'));var config=require(_0xaf8e('0x9'));var jayson=require(_0xaf8e('0xa'));var client=jayson[_0xaf8e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c8d92,_0x4a87b8,_0x4ad35b){return new BPromise(function(_0x3e6e58,_0x1c65ef){return client[_0xaf8e('0xc')](_0x3c8d92,_0x4ad35b)[_0xaf8e('0xd')](function(_0xbfff0a){logger[_0xaf8e('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x4a87b8,_0xaf8e('0xf'));logger['debug'](_0xaf8e('0x10'),_0x4a87b8,_0xaf8e('0xf'),JSON[_0xaf8e('0x11')](_0xbfff0a));if(_0xbfff0a[_0xaf8e('0x12')]){if(_0xbfff0a[_0xaf8e('0x12')]['code']===0x1f4){logger[_0xaf8e('0x12')](_0xaf8e('0x13'),_0x4a87b8,_0xbfff0a[_0xaf8e('0x12')]['message']);return _0x1c65ef(_0xbfff0a[_0xaf8e('0x12')][_0xaf8e('0x14')]);}logger[_0xaf8e('0x12')](_0xaf8e('0x13'),_0x4a87b8,_0xbfff0a[_0xaf8e('0x12')][_0xaf8e('0x14')]);return _0x3e6e58(_0xbfff0a[_0xaf8e('0x12')][_0xaf8e('0x14')]);}else{logger[_0xaf8e('0xe')](_0xaf8e('0x13'),_0x4a87b8,_0xaf8e('0xf'));_0x3e6e58(_0xbfff0a[_0xaf8e('0x15')][_0xaf8e('0x14')]);}})[_0xaf8e('0x16')](function(_0xd7630e){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x4a87b8,_0xd7630e);_0x1c65ef(_0xd7630e);});});}
\ No newline at end of file
+var _0xe404=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','error','code','VoiceMailMessage,\x20%s,\x20%s','message'];(function(_0x1ddfc2,_0x20a55d){var _0x4279cc=function(_0x2b3690){while(--_0x2b3690){_0x1ddfc2['push'](_0x1ddfc2['shift']());}};_0x4279cc(++_0x20a55d);}(_0xe404,0x1c4));var _0x4e40=function(_0x5c2daf,_0xafe4c8){_0x5c2daf=_0x5c2daf-0x0;var _0x14e6b9=_0xe404[_0x5c2daf];return _0x14e6b9;};'use strict';var _=require(_0x4e40('0x0'));var util=require(_0x4e40('0x1'));var moment=require(_0x4e40('0x2'));var BPromise=require(_0x4e40('0x3'));var rs=require(_0x4e40('0x4'));var fs=require('fs');var Redis=require(_0x4e40('0x5'));var db=require(_0x4e40('0x6'))['db'];var utils=require(_0x4e40('0x7'));var logger=require('../../config/logger')(_0x4e40('0x8'));var config=require(_0x4e40('0x9'));var jayson=require(_0x4e40('0xa'));var client=jayson[_0x4e40('0xb')][_0x4e40('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x504899,_0x55ac06,_0x5109ef){return new BPromise(function(_0x5c0be5,_0x16aef1){return client[_0x4e40('0xd')](_0x504899,_0x5109ef)[_0x4e40('0xe')](function(_0x12e586){logger[_0x4e40('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x55ac06,_0x4e40('0x10'));logger[_0x4e40('0x11')](_0x4e40('0x12'),_0x55ac06,_0x4e40('0x10'),JSON['stringify'](_0x12e586));if(_0x12e586[_0x4e40('0x13')]){if(_0x12e586[_0x4e40('0x13')][_0x4e40('0x14')]===0x1f4){logger['error'](_0x4e40('0x15'),_0x55ac06,_0x12e586['error'][_0x4e40('0x16')]);return _0x16aef1(_0x12e586[_0x4e40('0x13')][_0x4e40('0x16')]);}logger[_0x4e40('0x13')](_0x4e40('0x15'),_0x55ac06,_0x12e586[_0x4e40('0x13')][_0x4e40('0x16')]);return _0x5c0be5(_0x12e586['error'][_0x4e40('0x16')]);}else{logger['info'](_0x4e40('0x15'),_0x55ac06,_0x4e40('0x10'));_0x5c0be5(_0x12e586[_0x4e40('0x17')]['message']);}})[_0x4e40('0x18')](function(_0xb73406){logger[_0x4e40('0x13')](_0x4e40('0x15'),_0x55ac06,_0xb73406);_0x16aef1(_0xb73406);});});}
\ No newline at end of file
index dee58f2..2e30c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1351=['isAuthenticated','index','show','/:id/sounds','getSounds','post','put','/:id','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./voiceMusicOnHold.controller'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1351,0x158));var _0x1135=function(_0x1f07e2,_0x1e353b){_0x1f07e2=_0x1f07e2-0x0;var _0x399ab2=_0x1351[_0x1f07e2];return _0x399ab2;};'use strict';var multer=require(_0x1135('0x0'));var util=require(_0x1135('0x1'));var path=require(_0x1135('0x2'));var timeout=require(_0x1135('0x3'));var express=require('express');var router=express[_0x1135('0x4')]();var fs_extra=require(_0x1135('0x5'));var auth=require(_0x1135('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1135('0x7'));router['get']('/',auth[_0x1135('0x8')](),controller[_0x1135('0x9')]);router['get']('/:id',auth[_0x1135('0x8')](),controller[_0x1135('0xa')]);router['get'](_0x1135('0xb'),auth[_0x1135('0x8')](),controller[_0x1135('0xc')]);router[_0x1135('0xd')]('/',auth[_0x1135('0x8')](),controller['create']);router['post']('/:id/sounds',auth[_0x1135('0x8')](),controller['addSound']);router[_0x1135('0xe')](_0x1135('0xf'),auth[_0x1135('0x8')](),controller[_0x1135('0x10')]);router[_0x1135('0x11')](_0x1135('0xf'),auth[_0x1135('0x8')](),controller[_0x1135('0x12')]);router['delete'](_0x1135('0x13'),auth['isAuthenticated'](),controller[_0x1135('0x14')]);module[_0x1135('0x15')]=router;
\ No newline at end of file
+var _0x0d1f=['../../config/environment','get','isAuthenticated','show','getSounds','post','addSound','put','/:id','update','delete','/:id/sounds/:id2','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x0d1f,0x1d9));var _0xf0d1=function(_0x397afd,_0x3d920e){_0x397afd=_0x397afd-0x0;var _0x553c02=_0x0d1f[_0x397afd];return _0x553c02;};'use strict';var multer=require(_0xf0d1('0x0'));var util=require(_0xf0d1('0x1'));var path=require(_0xf0d1('0x2'));var timeout=require('connect-timeout');var express=require(_0xf0d1('0x3'));var router=express[_0xf0d1('0x4')]();var fs_extra=require(_0xf0d1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf0d1('0x6'));var config=require(_0xf0d1('0x7'));var controller=require('./voiceMusicOnHold.controller');router[_0xf0d1('0x8')]('/',auth[_0xf0d1('0x9')](),controller['index']);router['get']('/:id',auth[_0xf0d1('0x9')](),controller[_0xf0d1('0xa')]);router[_0xf0d1('0x8')]('/:id/sounds',auth['isAuthenticated'](),controller[_0xf0d1('0xb')]);router[_0xf0d1('0xc')]('/',auth[_0xf0d1('0x9')](),controller['create']);router[_0xf0d1('0xc')]('/:id/sounds',auth[_0xf0d1('0x9')](),controller[_0xf0d1('0xd')]);router[_0xf0d1('0xe')](_0xf0d1('0xf'),auth[_0xf0d1('0x9')](),controller[_0xf0d1('0x10')]);router['delete'](_0xf0d1('0xf'),auth[_0xf0d1('0x9')](),controller['destroy']);router[_0xf0d1('0x11')](_0xf0d1('0x12'),auth[_0xf0d1('0x9')](),controller['removeSound']);module[_0xf0d1('0x13')]=router;
\ No newline at end of file
index 41315c1..f236e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f59=['quietmp3nb','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','custom','files','mp3nb'];(function(_0x32dc67,_0x57af79){var _0x5146d9=function(_0x368700){while(--_0x368700){_0x32dc67['push'](_0x32dc67['shift']());}};_0x5146d9(++_0x57af79);}(_0x3f59,0xc4));var _0x93f5=function(_0x4d5b3b,_0x31a1e1){_0x4d5b3b=_0x4d5b3b-0x0;var _0x3c9f31=_0x3f59[_0x4d5b3b];return _0x3c9f31;};'use strict';var Sequelize=require(_0x93f5('0x0'));module[_0x93f5('0x1')]={'name':{'type':Sequelize[_0x93f5('0x2')],'allowNull':![],'unique':_0x93f5('0x3')},'mode':{'type':Sequelize[_0x93f5('0x4')](_0x93f5('0x5'),_0x93f5('0x6'),_0x93f5('0x7'),_0x93f5('0x8'),'quietmp3','mp3'),'allowNull':!![],'defaultValue':_0x93f5('0x6')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x93f5('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x93f5('0x2')],'allowNull':!![],'defaultValue':_0x93f5('0x9')},'format':{'type':Sequelize[_0x93f5('0x2')],'allowNull':!![]},'stamp':{'type':_0x93f5('0xa')},'defaultEntry':{'type':Sequelize[_0x93f5('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc1ce=['custom','files','mp3nb','quietmp3nb','mp3','alpha','BOOLEAN','sequelize','STRING','name','ENUM'];(function(_0x1a9390,_0x3339e6){var _0x2b4514=function(_0x1c07d5){while(--_0x1c07d5){_0x1a9390['push'](_0x1a9390['shift']());}};_0x2b4514(++_0x3339e6);}(_0xc1ce,0xf9));var _0xec1c=function(_0x53107c,_0x4fabaf){_0x53107c=_0x53107c-0x0;var _0x4e6ad9=_0xc1ce[_0x53107c];return _0x4e6ad9;};'use strict';var Sequelize=require(_0xec1c('0x0'));module['exports']={'name':{'type':Sequelize[_0xec1c('0x1')],'allowNull':![],'unique':_0xec1c('0x2')},'mode':{'type':Sequelize[_0xec1c('0x3')](_0xec1c('0x4'),_0xec1c('0x5'),_0xec1c('0x6'),_0xec1c('0x7'),'quietmp3',_0xec1c('0x8')),'allowNull':!![],'defaultValue':_0xec1c('0x5')},'directory':{'type':Sequelize[_0xec1c('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xec1c('0x9')},'format':{'type':Sequelize[_0xec1c('0x1')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xec1c('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 8b3713f..c33a5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc5d=['path','sox','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','MusicOnHolds','UserProfileResource','destroy','end','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','catch','show','params','body','find','sequelize','mode','files','directory','join','root','server/files/moh','create','mkdirSync','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','readdirSync','forEach','unlinkSync','Sequelize','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','basename','extname','format','%s.%s','ValidationError','removeSound','id2','pick','getSounds','eml-format','zip-dir','request-promise','moment','mustache'];(function(_0x28523c,_0x16bfd1){var _0x279f3f=function(_0x23a0b5){while(--_0x23a0b5){_0x28523c['push'](_0x28523c['shift']());}};_0x279f3f(++_0x16bfd1);}(_0xdc5d,0x71));var _0xddc5=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xdc5d[_0x1d24eb];return _0x1dc576;};'use strict';var emlformat=require(_0xddc5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xddc5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddc5('0x2'));var moment=require(_0xddc5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xddc5('0x4'));var util=require('util');var path=require(_0xddc5('0x5'));var sox=require(_0xddc5('0x6'));var csv=require(_0xddc5('0x7'));var ejs=require(_0xddc5('0x8'));var fs=require('fs');var fs_extra=require(_0xddc5('0x9'));var _=require(_0xddc5('0xa'));var squel=require(_0xddc5('0xb'));var crypto=require(_0xddc5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xddc5('0xd'));var toCsv=require('to-csv');var querystring=require(_0xddc5('0xe'));var Papa=require(_0xddc5('0xf'));var Redis=require('ioredis');var authService=require(_0xddc5('0x10'));var qs=require(_0xddc5('0x11'));var as=require(_0xddc5('0x12'));var hardwareService=require(_0xddc5('0x13'));var logger=require(_0xddc5('0x14'))(_0xddc5('0x15'));var utils=require('../../config/utils');var config=require(_0xddc5('0x16'));var licenseUtil=require(_0xddc5('0x17'));var db=require(_0xddc5('0x18'))['db'];function respondWithStatusCode(_0xf76ad9,_0x9effea){_0x9effea=_0x9effea||0xcc;return function(_0x4aed83){if(_0x4aed83){return _0xf76ad9[_0xddc5('0x19')](_0x9effea);}return _0xf76ad9[_0xddc5('0x1a')](_0x9effea)['end']();};}function respondWithResult(_0x13b2e0,_0x418199){_0x418199=_0x418199||0xc8;return function(_0x570252){if(_0x570252){return _0x13b2e0['status'](_0x418199)[_0xddc5('0x1b')](_0x570252);}};}function respondWithFilteredResult(_0x5f388d,_0x352d9a){return function(_0x31665a){if(_0x31665a){var _0x2524ff=typeof _0x352d9a[_0xddc5('0x1c')]===_0xddc5('0x1d')&&typeof _0x352d9a[_0xddc5('0x1e')]==='undefined';var _0x498e93=_0x31665a[_0xddc5('0x1f')];var _0x45c4a3=_0x2524ff?0x0:_0x352d9a['offset'];var _0x60d1a3=_0x2524ff?_0x31665a[_0xddc5('0x1f')]:_0x352d9a[_0xddc5('0x1c')]+_0x352d9a['limit'];var _0x5b77a9;if(_0x60d1a3>=_0x498e93){_0x60d1a3=_0x498e93;_0x5b77a9=0xc8;}else{_0x5b77a9=0xce;}_0x5f388d[_0xddc5('0x1a')](_0x5b77a9);return _0x5f388d[_0xddc5('0x20')](_0xddc5('0x21'),_0x45c4a3+'-'+_0x60d1a3+'/'+_0x498e93)[_0xddc5('0x1b')](_0x31665a);}return null;};}function patchUpdates(_0xea15fd){return function(_0xd796df){try{jsonpatch[_0xddc5('0x22')](_0xd796df,_0xea15fd,!![]);}catch(_0x45df47){return BPromise[_0xddc5('0x23')](_0x45df47);}return _0xd796df[_0xddc5('0x24')]();};}function saveUpdates(_0x229360,_0x255496){return function(_0x59aaa3){if(_0x59aaa3){return _0x59aaa3[_0xddc5('0x25')](_0x229360)['then'](function(_0x39dae4){return _0x39dae4;});}return null;};}function removeEntity(_0x5e6135,_0x30ae0e){return function(_0x25e775){if(_0x25e775){return _0x25e775['destroy']()[_0xddc5('0x26')](function(){var _0x264b2b=_0x25e775['get']({'plain':!![]});var _0x23c32c=_0xddc5('0x27');return db[_0xddc5('0x28')][_0xddc5('0x29')]({'where':{'type':_0x23c32c,'resourceId':_0x264b2b['id']}})[_0xddc5('0x26')](function(){return _0x25e775;});})['then'](function(){_0x5e6135[_0xddc5('0x1a')](0xcc)[_0xddc5('0x2a')]();});}};}function handleEntityNotFound(_0x5df28a,_0x1b71f9){return function(_0x32232d){if(!_0x32232d){_0x5df28a[_0xddc5('0x19')](0x194);}return _0x32232d;};}function handleError(_0x5a9a65,_0x5192de){_0x5192de=_0x5192de||0x1f4;return function(_0x41b942){logger[_0xddc5('0x2b')](_0x41b942[_0xddc5('0x2c')]);if(_0x41b942[_0xddc5('0x2d')]){delete _0x41b942[_0xddc5('0x2d')];}_0x5a9a65[_0xddc5('0x1a')](_0x5192de)[_0xddc5('0x2e')](_0x41b942);};}exports[_0xddc5('0x2f')]=function(_0x421828,_0x39d024){var _0x27e8f8={},_0x2d40d9={},_0x5d5dbf={'count':0x0,'rows':[]};var _0xdd562b=_[_0xddc5('0x30')](db[_0xddc5('0x31')][_0xddc5('0x32')],function(_0x5a38fa){return{'name':_0x5a38fa[_0xddc5('0x33')],'type':_0x5a38fa[_0xddc5('0x34')][_0xddc5('0x35')]};});_0x2d40d9['model']=_[_0xddc5('0x30')](_0xdd562b,_0xddc5('0x2d'));_0x2d40d9[_0xddc5('0x36')]=_[_0xddc5('0x37')](_0x421828['query']);_0x2d40d9[_0xddc5('0x38')]=_[_0xddc5('0x39')](_0x2d40d9[_0xddc5('0x3a')],_0x2d40d9[_0xddc5('0x36')]);_0x27e8f8[_0xddc5('0x3b')]=_['intersection'](_0x2d40d9['model'],qs[_0xddc5('0x3c')](_0x421828[_0xddc5('0x36')][_0xddc5('0x3c')]));_0x27e8f8['attributes']=_0x27e8f8['attributes'][_0xddc5('0x3d')]?_0x27e8f8[_0xddc5('0x3b')]:_0x2d40d9[_0xddc5('0x3a')];if(!_0x421828[_0xddc5('0x36')][_0xddc5('0x3e')](_0xddc5('0x3f'))){_0x27e8f8[_0xddc5('0x1e')]=qs[_0xddc5('0x1e')](_0x421828[_0xddc5('0x36')][_0xddc5('0x1e')]);_0x27e8f8[_0xddc5('0x1c')]=qs[_0xddc5('0x1c')](_0x421828[_0xddc5('0x36')][_0xddc5('0x1c')]);}_0x27e8f8[_0xddc5('0x40')]=qs[_0xddc5('0x41')](_0x421828[_0xddc5('0x36')][_0xddc5('0x41')]);delete _0x421828[_0xddc5('0x36')]['sort'];_0x27e8f8['where']=qs[_0xddc5('0x38')](_['pick'](_0x421828['query'],_0x2d40d9[_0xddc5('0x38')]),_0xdd562b);if(_0x421828['query'][_0xddc5('0x42')]){_0x27e8f8['where']=_[_0xddc5('0x43')](_0x27e8f8[_0xddc5('0x44')],{'$or':_['map'](_0xdd562b,function(_0x12f110){if(_0x12f110['type']!==_0xddc5('0x45')){var _0x28c61f={};_0x28c61f[_0x12f110[_0xddc5('0x2d')]]={'$like':'%'+_0x421828[_0xddc5('0x36')]['filter']+'%'};return _0x28c61f;}})});}_0x27e8f8=_['merge']({},_0x27e8f8,_0x421828[_0xddc5('0x46')]);var _0x25dbda={'where':_0x27e8f8[_0xddc5('0x44')]};return db[_0xddc5('0x31')][_0xddc5('0x1f')](_0x25dbda)['then'](function(_0x492f1){_0x5d5dbf[_0xddc5('0x1f')]=_0x492f1;if(_0x421828[_0xddc5('0x36')][_0xddc5('0x47')]){_0x27e8f8[_0xddc5('0x48')]=[{'all':!![]}];}return db[_0xddc5('0x31')]['findAll'](_0x27e8f8);})[_0xddc5('0x26')](function(_0x1e8fb2){_0x5d5dbf['rows']=_0x1e8fb2;return _0x5d5dbf;})[_0xddc5('0x26')](respondWithFilteredResult(_0x39d024,_0x27e8f8))[_0xddc5('0x49')](handleError(_0x39d024,null));};exports[_0xddc5('0x4a')]=function(_0x1ab40c,_0x12799c){var _0xc4b078={'raw':![],'where':{'id':_0x1ab40c[_0xddc5('0x4b')]['id']}},_0x27cd27={};_0x27cd27[_0xddc5('0x3a')]=_[_0xddc5('0x37')](db[_0xddc5('0x31')][_0xddc5('0x32')]);_0x27cd27['query']=_[_0xddc5('0x37')](_0x1ab40c['query']);_0x27cd27[_0xddc5('0x38')]=_['intersection'](_0x27cd27[_0xddc5('0x3a')],_0x27cd27[_0xddc5('0x36')]);_0xc4b078[_0xddc5('0x3b')]=_[_0xddc5('0x39')](_0x27cd27['model'],qs[_0xddc5('0x3c')](_0x1ab40c['query'][_0xddc5('0x3c')]));_0xc4b078[_0xddc5('0x3b')]=_0xc4b078[_0xddc5('0x3b')][_0xddc5('0x3d')]?_0xc4b078[_0xddc5('0x3b')]:_0x27cd27[_0xddc5('0x3a')];if(_0x1ab40c[_0xddc5('0x36')]['includeAll']){_0xc4b078['include']=[{'all':!![]}];}_0xc4b078=_['merge']({},_0xc4b078,_0x1ab40c[_0xddc5('0x46')]);return db[_0xddc5('0x31')]['find'](_0xc4b078)['then'](handleEntityNotFound(_0x12799c,null))[_0xddc5('0x26')](respondWithResult(_0x12799c,null))[_0xddc5('0x49')](handleError(_0x12799c,null));};exports[_0xddc5('0x25')]=function(_0x3d7f97,_0x3bac20){if(_0x3d7f97['body']['id']){delete _0x3d7f97[_0xddc5('0x4c')]['id'];}return db[_0xddc5('0x31')][_0xddc5('0x4d')]({'where':{'id':_0x3d7f97[_0xddc5('0x4b')]['id']}})[_0xddc5('0x26')](handleEntityNotFound(_0x3bac20,null))[_0xddc5('0x26')](saveUpdates(_0x3d7f97[_0xddc5('0x4c')],null))[_0xddc5('0x26')](respondWithResult(_0x3bac20,null))['catch'](handleError(_0x3bac20,null));};exports['create']=function(_0x274cd4,_0x5a4c47,_0x24cee8){return db[_0xddc5('0x4e')]['transaction'](function(_0x2b4ee6){if(_0x274cd4[_0xddc5('0x4c')][_0xddc5('0x4f')]===_0xddc5('0x50')){_0x274cd4[_0xddc5('0x4c')][_0xddc5('0x51')]=path[_0xddc5('0x52')](config[_0xddc5('0x53')],_0xddc5('0x54'),_0x274cd4[_0xddc5('0x4c')][_0xddc5('0x2d')]);}return db[_0xddc5('0x31')][_0xddc5('0x55')](_0x274cd4[_0xddc5('0x4c')],{'transaction':_0x2b4ee6})['then'](function(_0x20691e){if(_0x274cd4[_0xddc5('0x4c')][_0xddc5('0x4f')]===_0xddc5('0x50')){fs[_0xddc5('0x56')](_0x20691e[_0xddc5('0x51')],parseInt(_0xddc5('0x57'),0x8));}var _0x3b2ea2=_0x274cd4['user']['get']({'plain':!![]});if(!_0x3b2ea2)throw new Error(_0xddc5('0x58'));if(_0x3b2ea2[_0xddc5('0x59')]===_0xddc5('0x5a')){var _0x22f296=_0x20691e[_0xddc5('0x5b')]({'plain':!![]});return db[_0xddc5('0x5c')][_0xddc5('0x4d')]({'where':{'name':_0xddc5('0x27'),'userProfileId':_0x3b2ea2[_0xddc5('0x5d')]},'raw':!![]})[_0xddc5('0x26')](function(_0x1b0ecb){if(_0x1b0ecb&&_0x1b0ecb[_0xddc5('0x5e')]===0x0){return db[_0xddc5('0x28')][_0xddc5('0x55')]({'name':_0x22f296[_0xddc5('0x2d')],'resourceId':_0x22f296['id'],'type':_0x1b0ecb[_0xddc5('0x2d')],'sectionId':_0x1b0ecb['id']},{})[_0xddc5('0x26')](function(){return _0x20691e;});}else{return _0x20691e;}})[_0xddc5('0x49')](function(_0x5e16f5){logger[_0xddc5('0x2b')](_0xddc5('0x5f'),_0x5e16f5);});}return _0x20691e;});})['then'](respondWithResult(_0x5a4c47,0xc9))[_0xddc5('0x49')](handleError(_0x5a4c47,null));};exports[_0xddc5('0x29')]=function(_0x448dec,_0x2578e6,_0x58cc3a){var _0x180918;return db[_0xddc5('0x31')][_0xddc5('0x4d')]({'where':{'id':_0x448dec[_0xddc5('0x4b')]['id']}})[_0xddc5('0x26')](function(_0x4040b4){if(_0x4040b4){return db[_0xddc5('0x4e')][_0xddc5('0x60')](function(_0x416948){return _0x4040b4[_0xddc5('0x29')]({'transaction':_0x416948,'raw':!![]})[_0xddc5('0x26')](function(_0xa7e0a9){if(_0xa7e0a9['directory']){fs[_0xddc5('0x61')](_0xa7e0a9[_0xddc5('0x51')])[_0xddc5('0x62')](function(_0x324ec9){fs[_0xddc5('0x63')](path[_0xddc5('0x52')](_0xa7e0a9[_0xddc5('0x51')],_0x324ec9));});fs['rmdirSync'](_0xa7e0a9[_0xddc5('0x51')]);}return _0xa7e0a9;});})[_0xddc5('0x49')](function(_0x472529){throw new db[(_0xddc5('0x64'))]['ValidationError'](_0x472529[_0xddc5('0x65')]);});}})['then'](handleEntityNotFound(_0x2578e6,null))[_0xddc5('0x26')](removeEntity(_0x2578e6,null))[_0xddc5('0x49')](handleError(_0x2578e6,null));};exports['addSound']=function(_0x160371,_0x315866,_0x36cb0a){return db[_0xddc5('0x4e')][_0xddc5('0x60')](function(_0x4928ec){var _0x211ae3;return db[_0xddc5('0x31')][_0xddc5('0x4d')]({'where':{'id':_0x160371[_0xddc5('0x4b')]['id']}})[_0xddc5('0x26')](function(_0x80536d){if(_0x80536d){_0x211ae3=_0x80536d;return _0x80536d[_0xddc5('0x66')](_0x160371[_0xddc5('0x4c')]['id'],{'transaction':_0x4928ec});}})[_0xddc5('0x26')](function(_0x252383){if(_0x252383){return db[_0xddc5('0x67')][_0xddc5('0x68')]({'where':{'id':_0x160371[_0xddc5('0x4c')]['id']},'attributes':['id',_0xddc5('0x2d'),_0xddc5('0x69'),_0xddc5('0x6a'),_0xddc5('0x6b')],'raw':!![]});}})['then'](function(_0xfb9b73){if(_0xfb9b73){var _0x1631d4=path[_0xddc5('0x52')](config['root'],_0xddc5('0x6c'),util['format']('%s.%s',path[_0xddc5('0x6d')](_0xfb9b73[_0xddc5('0x69')],path[_0xddc5('0x6e')](_0xfb9b73[_0xddc5('0x69')])),_0xfb9b73['converted_format']));var _0x1e7014=path[_0xddc5('0x52')](config[_0xddc5('0x53')],_0xddc5('0x54'),_0x211ae3[_0xddc5('0x2d')],util[_0xddc5('0x6f')](_0xddc5('0x70'),_0xfb9b73['name'],_0xfb9b73[_0xddc5('0x6a')]));fs['symlinkSync'](_0x1631d4,_0x1e7014);return _0xfb9b73;}})['catch'](function(_0x5142bc){throw new db[(_0xddc5('0x64'))][(_0xddc5('0x71'))](_0x5142bc[_0xddc5('0x65')]);});})[_0xddc5('0x26')](handleEntityNotFound(_0x315866,null))[_0xddc5('0x26')](respondWithResult(_0x315866,0xc9))[_0xddc5('0x49')](handleError(_0x315866,null));};exports[_0xddc5('0x72')]=function(_0x2ae16c,_0x155c4c,_0x100f27){return db[_0xddc5('0x4e')]['transaction'](function(_0x720c96){var _0x3f99d2;return db[_0xddc5('0x31')][_0xddc5('0x68')]({'where':{'id':_0x2ae16c[_0xddc5('0x4b')]['id']}})[_0xddc5('0x26')](handleEntityNotFound(_0x155c4c,null))[_0xddc5('0x26')](function(_0x4ec867){if(_0x4ec867){_0x3f99d2=_0x4ec867;return _0x4ec867[_0xddc5('0x72')](_0x2ae16c['params'][_0xddc5('0x73')]);}})[_0xddc5('0x26')](function(_0x3239e1){if(_0x3239e1){return db['Sound'][_0xddc5('0x68')]({'where':{'id':_0x2ae16c[_0xddc5('0x4b')][_0xddc5('0x73')]},'attributes':['id',_0xddc5('0x2d'),'save_name',_0xddc5('0x6a'),'createdAt'],'raw':!![]});}})[_0xddc5('0x26')](function(_0x46d76f){if(_0x46d76f){fs[_0xddc5('0x63')](path[_0xddc5('0x52')](_0x3f99d2[_0xddc5('0x51')],util[_0xddc5('0x6f')](_0xddc5('0x70'),_0x46d76f[_0xddc5('0x2d')],_0x46d76f['converted_format'])));return _0x46d76f;}})['catch'](function(_0x100048){throw new db[(_0xddc5('0x64'))][(_0xddc5('0x71'))](_0x100048[_0xddc5('0x65')]);});})['then'](handleEntityNotFound(_0x155c4c,null))[_0xddc5('0x26')](respondWithStatusCode(_0x155c4c,0xcc))[_0xddc5('0x49')](handleError(_0x155c4c,null));};exports['getSounds']=function(_0x4fb7cc,_0x3667eb,_0x28a03e){var _0x47e768={};var _0x57afc5={};var _0x42df1c;var _0x463174;return db[_0xddc5('0x31')]['findOne']({'where':{'id':_0x4fb7cc['params']['id']}})['then'](handleEntityNotFound(_0x3667eb,null))['then'](function(_0x428848){if(_0x428848){_0x42df1c=_0x428848;_0x57afc5['model']=_[_0xddc5('0x37')](db[_0xddc5('0x67')]['rawAttributes']);_0x57afc5[_0xddc5('0x36')]=_[_0xddc5('0x37')](_0x4fb7cc[_0xddc5('0x36')]);_0x57afc5[_0xddc5('0x38')]=_['intersection'](_0x57afc5[_0xddc5('0x3a')],_0x57afc5[_0xddc5('0x36')]);_0x47e768['attributes']=_[_0xddc5('0x39')](_0x57afc5['model'],qs['fields'](_0x4fb7cc[_0xddc5('0x36')][_0xddc5('0x3c')]));_0x47e768['attributes']=_0x47e768[_0xddc5('0x3b')]['length']?_0x47e768['attributes']:_0x57afc5['model'];_0x47e768[_0xddc5('0x40')]=qs[_0xddc5('0x41')](_0x4fb7cc['query']['sort']);_0x47e768[_0xddc5('0x44')]=qs[_0xddc5('0x38')](_[_0xddc5('0x74')](_0x4fb7cc[_0xddc5('0x36')],_0x57afc5[_0xddc5('0x38')]));if(_0x4fb7cc['query'][_0xddc5('0x42')]){_0x47e768[_0xddc5('0x44')]=_[_0xddc5('0x43')](_0x47e768[_0xddc5('0x44')],{'$or':_[_0xddc5('0x30')](_0x47e768['attributes'],function(_0x2f8554){var _0x369f61={};_0x369f61[_0x2f8554]={'$like':'%'+_0x4fb7cc[_0xddc5('0x36')][_0xddc5('0x42')]+'%'};return _0x369f61;})});}_0x47e768=_['merge']({},_0x47e768,_0x4fb7cc[_0xddc5('0x46')]);return _0x42df1c['getSounds'](_0x47e768);}})['then'](function(_0x4b1cf1){if(_0x4b1cf1){_0x463174=_0x4b1cf1[_0xddc5('0x3d')];if(!_0x4fb7cc[_0xddc5('0x36')][_0xddc5('0x3e')]('nolimit')){_0x47e768[_0xddc5('0x1e')]=qs[_0xddc5('0x1e')](_0x4fb7cc[_0xddc5('0x36')][_0xddc5('0x1e')]);_0x47e768['offset']=qs['offset'](_0x4fb7cc['query'][_0xddc5('0x1c')]);}return _0x42df1c[_0xddc5('0x75')](_0x47e768);}})[_0xddc5('0x26')](function(_0x1ace4e){if(_0x1ace4e){return _0x1ace4e?{'count':_0x463174,'rows':_0x1ace4e}:null;}})[_0xddc5('0x26')](respondWithResult(_0x3667eb,null))[_0xddc5('0x49')](handleError(_0x3667eb,null));};
\ No newline at end of file
+var _0x5d19=['zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','end','sendStatus','error','stack','name','send','index','VoiceMusicOnHold','fieldName','type','model','map','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','length','includeAll','body','find','create','sequelize','transaction','mode','directory','join','root','server/files/moh','files','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','save_name','extname','symlinkSync','removeSound','findOne','id2','Sound','getSounds','pick','rimraf'];(function(_0x1e9b47,_0x3a29a1){var _0x5a36e1=function(_0x1c8eda){while(--_0x1c8eda){_0x1e9b47['push'](_0x1e9b47['shift']());}};_0x5a36e1(++_0x3a29a1);}(_0x5d19,0xe5));var _0x95d1=function(_0x566168,_0x4c39af){_0x566168=_0x566168-0x0;var _0x4e1f7a=_0x5d19[_0x566168];return _0x4e1f7a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x95d1('0x0'));var zipdir=require(_0x95d1('0x1'));var jsonpatch=require(_0x95d1('0x2'));var rp=require(_0x95d1('0x3'));var moment=require(_0x95d1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x95d1('0x5'));var path=require('path');var sox=require(_0x95d1('0x6'));var csv=require(_0x95d1('0x7'));var ejs=require(_0x95d1('0x8'));var fs=require('fs');var fs_extra=require(_0x95d1('0x9'));var _=require('lodash');var squel=require(_0x95d1('0xa'));var crypto=require('crypto');var jsforce=require(_0x95d1('0xb'));var deskjs=require(_0x95d1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x95d1('0xd'));var Papa=require('papaparse');var Redis=require(_0x95d1('0xe'));var authService=require(_0x95d1('0xf'));var qs=require(_0x95d1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x95d1('0x11'))(_0x95d1('0x12'));var utils=require(_0x95d1('0x13'));var config=require(_0x95d1('0x14'));var licenseUtil=require(_0x95d1('0x15'));var db=require(_0x95d1('0x16'))['db'];function respondWithStatusCode(_0x3f44d9,_0x35f626){_0x35f626=_0x35f626||0xcc;return function(_0x2628ab){if(_0x2628ab){return _0x3f44d9['sendStatus'](_0x35f626);}return _0x3f44d9[_0x95d1('0x17')](_0x35f626)['end']();};}function respondWithResult(_0x3c1997,_0x5f0466){_0x5f0466=_0x5f0466||0xc8;return function(_0x121109){if(_0x121109){return _0x3c1997['status'](_0x5f0466)[_0x95d1('0x18')](_0x121109);}};}function respondWithFilteredResult(_0x946cd5,_0x52d976){return function(_0xe5ab91){if(_0xe5ab91){var _0x26afa8=typeof _0x52d976[_0x95d1('0x19')]===_0x95d1('0x1a')&&typeof _0x52d976[_0x95d1('0x1b')]===_0x95d1('0x1a');var _0x12be14=_0xe5ab91[_0x95d1('0x1c')];var _0x475263=_0x26afa8?0x0:_0x52d976['offset'];var _0x405ebe=_0x26afa8?_0xe5ab91[_0x95d1('0x1c')]:_0x52d976[_0x95d1('0x19')]+_0x52d976[_0x95d1('0x1b')];var _0x2d0199;if(_0x405ebe>=_0x12be14){_0x405ebe=_0x12be14;_0x2d0199=0xc8;}else{_0x2d0199=0xce;}_0x946cd5['status'](_0x2d0199);return _0x946cd5['set'](_0x95d1('0x1d'),_0x475263+'-'+_0x405ebe+'/'+_0x12be14)[_0x95d1('0x18')](_0xe5ab91);}return null;};}function patchUpdates(_0x236393){return function(_0x21ee54){try{jsonpatch[_0x95d1('0x1e')](_0x21ee54,_0x236393,!![]);}catch(_0x576ccd){return BPromise[_0x95d1('0x1f')](_0x576ccd);}return _0x21ee54[_0x95d1('0x20')]();};}function saveUpdates(_0x48d576,_0x6b8e8e){return function(_0x41409d){if(_0x41409d){return _0x41409d[_0x95d1('0x21')](_0x48d576)[_0x95d1('0x22')](function(_0x93b38){return _0x93b38;});}return null;};}function removeEntity(_0x26c840,_0x478135){return function(_0x52cbad){if(_0x52cbad){return _0x52cbad[_0x95d1('0x23')]()[_0x95d1('0x22')](function(){var _0x57ffc9=_0x52cbad[_0x95d1('0x24')]({'plain':!![]});var _0x51ac38=_0x95d1('0x25');return db[_0x95d1('0x26')][_0x95d1('0x23')]({'where':{'type':_0x51ac38,'resourceId':_0x57ffc9['id']}})[_0x95d1('0x22')](function(){return _0x52cbad;});})[_0x95d1('0x22')](function(){_0x26c840[_0x95d1('0x17')](0xcc)[_0x95d1('0x27')]();});}};}function handleEntityNotFound(_0x1da460,_0x1b9fdf){return function(_0x5e068b){if(!_0x5e068b){_0x1da460[_0x95d1('0x28')](0x194);}return _0x5e068b;};}function handleError(_0x22a751,_0x6e8845){_0x6e8845=_0x6e8845||0x1f4;return function(_0x501cde){logger[_0x95d1('0x29')](_0x501cde[_0x95d1('0x2a')]);if(_0x501cde[_0x95d1('0x2b')]){delete _0x501cde[_0x95d1('0x2b')];}_0x22a751['status'](_0x6e8845)[_0x95d1('0x2c')](_0x501cde);};}exports[_0x95d1('0x2d')]=function(_0x15fe70,_0x59f076){var _0xd4ea81={},_0x394b6e={},_0x28e1b6={'count':0x0,'rows':[]};var _0x4ceb47=_['map'](db[_0x95d1('0x2e')]['rawAttributes'],function(_0x54e545){return{'name':_0x54e545[_0x95d1('0x2f')],'type':_0x54e545[_0x95d1('0x30')]['key']};});_0x394b6e[_0x95d1('0x31')]=_[_0x95d1('0x32')](_0x4ceb47,_0x95d1('0x2b'));_0x394b6e['query']=_[_0x95d1('0x33')](_0x15fe70['query']);_0x394b6e['filters']=_['intersection'](_0x394b6e['model'],_0x394b6e[_0x95d1('0x34')]);_0xd4ea81['attributes']=_[_0x95d1('0x35')](_0x394b6e['model'],qs[_0x95d1('0x36')](_0x15fe70['query'][_0x95d1('0x36')]));_0xd4ea81[_0x95d1('0x37')]=_0xd4ea81['attributes']['length']?_0xd4ea81[_0x95d1('0x37')]:_0x394b6e['model'];if(!_0x15fe70[_0x95d1('0x34')][_0x95d1('0x38')](_0x95d1('0x39'))){_0xd4ea81['limit']=qs[_0x95d1('0x1b')](_0x15fe70[_0x95d1('0x34')][_0x95d1('0x1b')]);_0xd4ea81[_0x95d1('0x19')]=qs[_0x95d1('0x19')](_0x15fe70[_0x95d1('0x34')][_0x95d1('0x19')]);}_0xd4ea81[_0x95d1('0x3a')]=qs[_0x95d1('0x3b')](_0x15fe70[_0x95d1('0x34')][_0x95d1('0x3b')]);delete _0x15fe70[_0x95d1('0x34')][_0x95d1('0x3b')];_0xd4ea81[_0x95d1('0x3c')]=qs[_0x95d1('0x3d')](_['pick'](_0x15fe70[_0x95d1('0x34')],_0x394b6e[_0x95d1('0x3d')]),_0x4ceb47);if(_0x15fe70[_0x95d1('0x34')][_0x95d1('0x3e')]){_0xd4ea81[_0x95d1('0x3c')]=_[_0x95d1('0x3f')](_0xd4ea81[_0x95d1('0x3c')],{'$or':_[_0x95d1('0x32')](_0x4ceb47,function(_0x1de418){if(_0x1de418[_0x95d1('0x30')]!==_0x95d1('0x40')){var _0xf79359={};_0xf79359[_0x1de418[_0x95d1('0x2b')]]={'$like':'%'+_0x15fe70['query'][_0x95d1('0x3e')]+'%'};return _0xf79359;}})});}_0xd4ea81=_[_0x95d1('0x3f')]({},_0xd4ea81,_0x15fe70[_0x95d1('0x41')]);var _0x1f4e16={'where':_0xd4ea81['where']};return db[_0x95d1('0x2e')][_0x95d1('0x1c')](_0x1f4e16)[_0x95d1('0x22')](function(_0xbf5f79){_0x28e1b6[_0x95d1('0x1c')]=_0xbf5f79;if(_0x15fe70['query']['includeAll']){_0xd4ea81[_0x95d1('0x42')]=[{'all':!![]}];}return db[_0x95d1('0x2e')][_0x95d1('0x43')](_0xd4ea81);})['then'](function(_0x2d84c5){_0x28e1b6['rows']=_0x2d84c5;return _0x28e1b6;})[_0x95d1('0x22')](respondWithFilteredResult(_0x59f076,_0xd4ea81))[_0x95d1('0x44')](handleError(_0x59f076,null));};exports[_0x95d1('0x45')]=function(_0x531ab5,_0xc797c9){var _0x2f6264={'raw':![],'where':{'id':_0x531ab5[_0x95d1('0x46')]['id']}},_0x138aae={};_0x138aae[_0x95d1('0x31')]=_[_0x95d1('0x33')](db[_0x95d1('0x2e')][_0x95d1('0x47')]);_0x138aae[_0x95d1('0x34')]=_[_0x95d1('0x33')](_0x531ab5['query']);_0x138aae[_0x95d1('0x3d')]=_[_0x95d1('0x35')](_0x138aae[_0x95d1('0x31')],_0x138aae[_0x95d1('0x34')]);_0x2f6264[_0x95d1('0x37')]=_[_0x95d1('0x35')](_0x138aae[_0x95d1('0x31')],qs[_0x95d1('0x36')](_0x531ab5[_0x95d1('0x34')]['fields']));_0x2f6264[_0x95d1('0x37')]=_0x2f6264[_0x95d1('0x37')][_0x95d1('0x48')]?_0x2f6264[_0x95d1('0x37')]:_0x138aae[_0x95d1('0x31')];if(_0x531ab5[_0x95d1('0x34')][_0x95d1('0x49')]){_0x2f6264[_0x95d1('0x42')]=[{'all':!![]}];}_0x2f6264=_[_0x95d1('0x3f')]({},_0x2f6264,_0x531ab5['options']);return db[_0x95d1('0x2e')]['find'](_0x2f6264)[_0x95d1('0x22')](handleEntityNotFound(_0xc797c9,null))['then'](respondWithResult(_0xc797c9,null))[_0x95d1('0x44')](handleError(_0xc797c9,null));};exports[_0x95d1('0x21')]=function(_0x207d92,_0x557e61){if(_0x207d92[_0x95d1('0x4a')]['id']){delete _0x207d92[_0x95d1('0x4a')]['id'];}return db[_0x95d1('0x2e')][_0x95d1('0x4b')]({'where':{'id':_0x207d92[_0x95d1('0x46')]['id']}})[_0x95d1('0x22')](handleEntityNotFound(_0x557e61,null))[_0x95d1('0x22')](saveUpdates(_0x207d92[_0x95d1('0x4a')],null))[_0x95d1('0x22')](respondWithResult(_0x557e61,null))['catch'](handleError(_0x557e61,null));};exports[_0x95d1('0x4c')]=function(_0x520d07,_0x17b7d3,_0x1a7f82){return db[_0x95d1('0x4d')][_0x95d1('0x4e')](function(_0x8014ee){if(_0x520d07[_0x95d1('0x4a')][_0x95d1('0x4f')]==='files'){_0x520d07['body'][_0x95d1('0x50')]=path[_0x95d1('0x51')](config[_0x95d1('0x52')],_0x95d1('0x53'),_0x520d07[_0x95d1('0x4a')][_0x95d1('0x2b')]);}return db['VoiceMusicOnHold'][_0x95d1('0x4c')](_0x520d07['body'],{'transaction':_0x8014ee})['then'](function(_0x50f8e4){if(_0x520d07['body'][_0x95d1('0x4f')]===_0x95d1('0x54')){fs['mkdirSync'](_0x50f8e4[_0x95d1('0x50')],parseInt(_0x95d1('0x55'),0x8));}var _0x274e1b=_0x520d07[_0x95d1('0x56')][_0x95d1('0x24')]({'plain':!![]});if(!_0x274e1b)throw new Error(_0x95d1('0x57'));if(_0x274e1b[_0x95d1('0x58')]===_0x95d1('0x56')){var _0xf3ff2a=_0x50f8e4[_0x95d1('0x24')]({'plain':!![]});return db[_0x95d1('0x59')]['find']({'where':{'name':_0x95d1('0x25'),'userProfileId':_0x274e1b[_0x95d1('0x5a')]},'raw':!![]})['then'](function(_0x313abe){if(_0x313abe&&_0x313abe[_0x95d1('0x5b')]===0x0){return db[_0x95d1('0x26')][_0x95d1('0x4c')]({'name':_0xf3ff2a[_0x95d1('0x2b')],'resourceId':_0xf3ff2a['id'],'type':_0x313abe[_0x95d1('0x2b')],'sectionId':_0x313abe['id']},{})[_0x95d1('0x22')](function(){return _0x50f8e4;});}else{return _0x50f8e4;}})[_0x95d1('0x44')](function(_0x3a1052){logger['error'](_0x95d1('0x5c'),_0x3a1052);});}return _0x50f8e4;});})['then'](respondWithResult(_0x17b7d3,0xc9))[_0x95d1('0x44')](handleError(_0x17b7d3,null));};exports['destroy']=function(_0x4ec479,_0x536268,_0xc74bd5){var _0x4af34b;return db[_0x95d1('0x2e')][_0x95d1('0x4b')]({'where':{'id':_0x4ec479['params']['id']}})[_0x95d1('0x22')](function(_0x2fa553){if(_0x2fa553){return db[_0x95d1('0x4d')][_0x95d1('0x4e')](function(_0x43ec4a){return _0x2fa553[_0x95d1('0x23')]({'transaction':_0x43ec4a,'raw':!![]})['then'](function(_0x1e5693){if(_0x1e5693[_0x95d1('0x50')]){fs[_0x95d1('0x5d')](_0x1e5693[_0x95d1('0x50')])[_0x95d1('0x5e')](function(_0x287f7a){fs['unlinkSync'](path['join'](_0x1e5693['directory'],_0x287f7a));});fs[_0x95d1('0x5f')](_0x1e5693[_0x95d1('0x50')]);}return _0x1e5693;});})[_0x95d1('0x44')](function(_0x4e9503){throw new db[(_0x95d1('0x60'))][(_0x95d1('0x61'))](_0x4e9503[_0x95d1('0x62')]);});}})['then'](handleEntityNotFound(_0x536268,null))[_0x95d1('0x22')](removeEntity(_0x536268,null))['catch'](handleError(_0x536268,null));};exports[_0x95d1('0x63')]=function(_0x4ca439,_0x4c8144,_0x49bb8f){return db['sequelize'][_0x95d1('0x4e')](function(_0x139329){var _0x5971c7;return db[_0x95d1('0x2e')][_0x95d1('0x4b')]({'where':{'id':_0x4ca439[_0x95d1('0x46')]['id']}})[_0x95d1('0x22')](function(_0x495f6a){if(_0x495f6a){_0x5971c7=_0x495f6a;return _0x495f6a[_0x95d1('0x63')](_0x4ca439[_0x95d1('0x4a')]['id'],{'transaction':_0x139329});}})[_0x95d1('0x22')](function(_0x202f41){if(_0x202f41){return db['Sound']['findOne']({'where':{'id':_0x4ca439[_0x95d1('0x4a')]['id']},'attributes':['id',_0x95d1('0x2b'),'save_name',_0x95d1('0x64'),_0x95d1('0x65')],'raw':!![]});}})[_0x95d1('0x22')](function(_0x5f2906){if(_0x5f2906){var _0x44169f=path['join'](config[_0x95d1('0x52')],_0x95d1('0x66'),util[_0x95d1('0x67')](_0x95d1('0x68'),path[_0x95d1('0x69')](_0x5f2906[_0x95d1('0x6a')],path[_0x95d1('0x6b')](_0x5f2906['save_name'])),_0x5f2906[_0x95d1('0x64')]));var _0x5a5035=path[_0x95d1('0x51')](config[_0x95d1('0x52')],_0x95d1('0x53'),_0x5971c7[_0x95d1('0x2b')],util[_0x95d1('0x67')](_0x95d1('0x68'),_0x5f2906[_0x95d1('0x2b')],_0x5f2906[_0x95d1('0x64')]));fs[_0x95d1('0x6c')](_0x44169f,_0x5a5035);return _0x5f2906;}})[_0x95d1('0x44')](function(_0x58e682){throw new db[(_0x95d1('0x60'))][(_0x95d1('0x61'))](_0x58e682['message']);});})[_0x95d1('0x22')](handleEntityNotFound(_0x4c8144,null))[_0x95d1('0x22')](respondWithResult(_0x4c8144,0xc9))[_0x95d1('0x44')](handleError(_0x4c8144,null));};exports[_0x95d1('0x6d')]=function(_0x51cd73,_0x4c8ece,_0x1f5953){return db[_0x95d1('0x4d')][_0x95d1('0x4e')](function(_0x4f7caf){var _0x1f681c;return db[_0x95d1('0x2e')][_0x95d1('0x6e')]({'where':{'id':_0x51cd73[_0x95d1('0x46')]['id']}})['then'](handleEntityNotFound(_0x4c8ece,null))['then'](function(_0x4d54ed){if(_0x4d54ed){_0x1f681c=_0x4d54ed;return _0x4d54ed['removeSound'](_0x51cd73['params'][_0x95d1('0x6f')]);}})[_0x95d1('0x22')](function(_0x9d6ead){if(_0x9d6ead){return db[_0x95d1('0x70')][_0x95d1('0x6e')]({'where':{'id':_0x51cd73[_0x95d1('0x46')]['id2']},'attributes':['id',_0x95d1('0x2b'),'save_name',_0x95d1('0x64'),_0x95d1('0x65')],'raw':!![]});}})[_0x95d1('0x22')](function(_0x24c2b8){if(_0x24c2b8){fs['unlinkSync'](path[_0x95d1('0x51')](_0x1f681c[_0x95d1('0x50')],util[_0x95d1('0x67')]('%s.%s',_0x24c2b8[_0x95d1('0x2b')],_0x24c2b8[_0x95d1('0x64')])));return _0x24c2b8;}})[_0x95d1('0x44')](function(_0x30c9f0){throw new db[(_0x95d1('0x60'))][(_0x95d1('0x61'))](_0x30c9f0[_0x95d1('0x62')]);});})[_0x95d1('0x22')](handleEntityNotFound(_0x4c8ece,null))[_0x95d1('0x22')](respondWithStatusCode(_0x4c8ece,0xcc))[_0x95d1('0x44')](handleError(_0x4c8ece,null));};exports[_0x95d1('0x71')]=function(_0x5f26f7,_0x3dcfd0,_0x60663d){var _0x3b10e0={};var _0x559432={};var _0xe09135;var _0xeea4b7;return db[_0x95d1('0x2e')][_0x95d1('0x6e')]({'where':{'id':_0x5f26f7[_0x95d1('0x46')]['id']}})['then'](handleEntityNotFound(_0x3dcfd0,null))[_0x95d1('0x22')](function(_0x194888){if(_0x194888){_0xe09135=_0x194888;_0x559432[_0x95d1('0x31')]=_[_0x95d1('0x33')](db[_0x95d1('0x70')]['rawAttributes']);_0x559432[_0x95d1('0x34')]=_[_0x95d1('0x33')](_0x5f26f7[_0x95d1('0x34')]);_0x559432[_0x95d1('0x3d')]=_[_0x95d1('0x35')](_0x559432['model'],_0x559432[_0x95d1('0x34')]);_0x3b10e0['attributes']=_[_0x95d1('0x35')](_0x559432[_0x95d1('0x31')],qs[_0x95d1('0x36')](_0x5f26f7['query'][_0x95d1('0x36')]));_0x3b10e0[_0x95d1('0x37')]=_0x3b10e0[_0x95d1('0x37')][_0x95d1('0x48')]?_0x3b10e0[_0x95d1('0x37')]:_0x559432[_0x95d1('0x31')];_0x3b10e0['order']=qs['sort'](_0x5f26f7[_0x95d1('0x34')][_0x95d1('0x3b')]);_0x3b10e0['where']=qs[_0x95d1('0x3d')](_[_0x95d1('0x72')](_0x5f26f7[_0x95d1('0x34')],_0x559432[_0x95d1('0x3d')]));if(_0x5f26f7[_0x95d1('0x34')][_0x95d1('0x3e')]){_0x3b10e0['where']=_[_0x95d1('0x3f')](_0x3b10e0[_0x95d1('0x3c')],{'$or':_[_0x95d1('0x32')](_0x3b10e0[_0x95d1('0x37')],function(_0x501c60){var _0x389204={};_0x389204[_0x501c60]={'$like':'%'+_0x5f26f7[_0x95d1('0x34')][_0x95d1('0x3e')]+'%'};return _0x389204;})});}_0x3b10e0=_['merge']({},_0x3b10e0,_0x5f26f7['options']);return _0xe09135[_0x95d1('0x71')](_0x3b10e0);}})[_0x95d1('0x22')](function(_0x4d5c70){if(_0x4d5c70){_0xeea4b7=_0x4d5c70[_0x95d1('0x48')];if(!_0x5f26f7['query'][_0x95d1('0x38')](_0x95d1('0x39'))){_0x3b10e0[_0x95d1('0x1b')]=qs['limit'](_0x5f26f7['query']['limit']);_0x3b10e0[_0x95d1('0x19')]=qs[_0x95d1('0x19')](_0x5f26f7[_0x95d1('0x34')]['offset']);}return _0xe09135[_0x95d1('0x71')](_0x3b10e0);}})['then'](function(_0x26366a){if(_0x26366a){return _0x26366a?{'count':_0xeea4b7,'rows':_0x26366a}:null;}})[_0x95d1('0x22')](respondWithResult(_0x3dcfd0,null))[_0x95d1('0x44')](handleError(_0x3dcfd0,null));};
\ No newline at end of file
index b624bf8..dca4ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb1=['VoiceMusicOnHold','voice_musiconhold','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports'];(function(_0x4eb756,_0x366cd6){var _0x49fff1=function(_0x36b848){while(--_0x36b848){_0x4eb756['push'](_0x4eb756['shift']());}};_0x49fff1(++_0x366cd6);}(_0x3cb1,0x120));var _0x13cb=function(_0x2937ab,_0x10b06a){_0x2937ab=_0x2937ab-0x0;var _0x34da11=_0x3cb1[_0x2937ab];return _0x34da11;};'use strict';var _=require('lodash');var util=require(_0x13cb('0x0'));var logger=require(_0x13cb('0x1'))(_0x13cb('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x13cb('0x3'));var fs=require('fs');var path=require(_0x13cb('0x4'));var rimraf=require(_0x13cb('0x5'));var config=require(_0x13cb('0x6'));var attributes=require(_0x13cb('0x7'));module[_0x13cb('0x8')]=function(_0x2a73db,_0x2cf33e){return _0x2a73db['define'](_0x13cb('0x9'),attributes,{'tableName':_0x13cb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f2d=['request-promise','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','api','moment','bluebird'];(function(_0x59d833,_0x51284a){var _0x135533=function(_0x16b698){while(--_0x16b698){_0x59d833['push'](_0x59d833['shift']());}};_0x135533(++_0x51284a);}(_0x7f2d,0x1ea));var _0xd7f2=function(_0x32167a,_0x23aad1){_0x32167a=_0x32167a-0x0;var _0x5990ab=_0x7f2d[_0x32167a];return _0x5990ab;};'use strict';var _=require(_0xd7f2('0x0'));var util=require(_0xd7f2('0x1'));var logger=require('../../config/logger')(_0xd7f2('0x2'));var moment=require(_0xd7f2('0x3'));var BPromise=require(_0xd7f2('0x4'));var rp=require(_0xd7f2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd7f2('0x6'));module[_0xd7f2('0x7')]=function(_0x1366ff,_0x212421){return _0x1366ff[_0xd7f2('0x8')](_0xd7f2('0x9'),attributes,{'tableName':_0xd7f2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9347475..df0c4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x530011,_0x468886){var _0x323bde=function(_0x498d86){while(--_0x498d86){_0x530011['push'](_0x530011['shift']());}};_0x323bde(++_0x468886);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x1e475c,_0x3bf7b4){var _0x2bf368=function(_0x4caefd){while(--_0x4caefd){_0x1e475c['push'](_0x1e475c['shift']());}};_0x2bf368(++_0x3bf7b4);}(_0xedd9,0xfc));var _0x9edd=function(_0x173336,_0x3f98c4){_0x173336=_0x173336-0x0;var _0x12dc79=_0xedd9[_0x173336];return _0x12dc79;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
index de78bb1..a9c798e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91f=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voicePrefix.controller','get','/describe','isAuthenticated','show','getTeams','create','post','addAgents','/:id/teams','put','/:id','destroy','delete','/:id/users','removeAgents','removeTeams','exports','multer','util'];(function(_0xce09dc,_0x5b4ceb){var _0x5320d5=function(_0x48eebd){while(--_0x48eebd){_0xce09dc['push'](_0xce09dc['shift']());}};_0x5320d5(++_0x5b4ceb);}(_0xe91f,0xf8));var _0xfe91=function(_0x1cc222,_0x2d37c2){_0x1cc222=_0x1cc222-0x0;var _0x1e3193=_0xe91f[_0x1cc222];return _0x1e3193;};'use strict';var multer=require(_0xfe91('0x0'));var util=require(_0xfe91('0x1'));var path=require('path');var timeout=require(_0xfe91('0x2'));var express=require('express');var router=express[_0xfe91('0x3')]();var fs_extra=require(_0xfe91('0x4'));var auth=require(_0xfe91('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfe91('0x6'));var controller=require(_0xfe91('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xfe91('0x8')](_0xfe91('0x9'),auth[_0xfe91('0xa')](),controller['describe']);router[_0xfe91('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xfe91('0xb')]);router[_0xfe91('0x8')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router['get']('/:id/teams',auth[_0xfe91('0xa')](),controller[_0xfe91('0xc')]);router['post']('/',auth[_0xfe91('0xa')](),controller[_0xfe91('0xd')]);router[_0xfe91('0xe')]('/:id/users',auth[_0xfe91('0xa')](),controller[_0xfe91('0xf')]);router[_0xfe91('0xe')](_0xfe91('0x10'),auth[_0xfe91('0xa')](),controller['addTeams']);router[_0xfe91('0x11')](_0xfe91('0x12'),auth[_0xfe91('0xa')](),controller['update']);router['delete'](_0xfe91('0x12'),auth['isAuthenticated'](),controller[_0xfe91('0x13')]);router[_0xfe91('0x14')](_0xfe91('0x15'),auth[_0xfe91('0xa')](),controller[_0xfe91('0x16')]);router[_0xfe91('0x14')]('/:id/teams',auth[_0xfe91('0xa')](),controller[_0xfe91('0x17')]);module[_0xfe91('0x18')]=router;
\ No newline at end of file
+var _0x394e=['Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id/users','getAgents','/:id/teams','getTeams','post','create','addTeams','put','/:id','update','delete','destroy','removeTeams','exports','multer','util','connect-timeout','express'];(function(_0x2b2375,_0x31530b){var _0x258f3a=function(_0x1ccd20){while(--_0x1ccd20){_0x2b2375['push'](_0x2b2375['shift']());}};_0x258f3a(++_0x31530b);}(_0x394e,0x88));var _0xe394=function(_0x1ed08f,_0x3d499a){_0x1ed08f=_0x1ed08f-0x0;var _0x9df16c=_0x394e[_0x1ed08f];return _0x9df16c;};'use strict';var multer=require(_0xe394('0x0'));var util=require(_0xe394('0x1'));var path=require('path');var timeout=require(_0xe394('0x2'));var express=require(_0xe394('0x3'));var router=express[_0xe394('0x4')]();var fs_extra=require(_0xe394('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe394('0x6'));var config=require(_0xe394('0x7'));var controller=require(_0xe394('0x8'));router[_0xe394('0x9')]('/',auth[_0xe394('0xa')](),controller[_0xe394('0xb')]);router[_0xe394('0x9')](_0xe394('0xc'),auth[_0xe394('0xa')](),controller[_0xe394('0xd')]);router[_0xe394('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe394('0x9')](_0xe394('0xe'),auth[_0xe394('0xa')](),controller[_0xe394('0xf')]);router[_0xe394('0x9')](_0xe394('0x10'),auth[_0xe394('0xa')](),controller[_0xe394('0x11')]);router[_0xe394('0x12')]('/',auth[_0xe394('0xa')](),controller[_0xe394('0x13')]);router[_0xe394('0x12')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0xe394('0x12')](_0xe394('0x10'),auth['isAuthenticated'](),controller[_0xe394('0x14')]);router[_0xe394('0x15')](_0xe394('0x16'),auth[_0xe394('0xa')](),controller[_0xe394('0x17')]);router[_0xe394('0x18')]('/:id',auth['isAuthenticated'](),controller[_0xe394('0x19')]);router[_0xe394('0x18')](_0xe394('0xe'),auth[_0xe394('0xa')](),controller['removeAgents']);router[_0xe394('0x18')]('/:id/teams',auth[_0xe394('0xa')](),controller[_0xe394('0x1a')]);module[_0xe394('0x1b')]=router;
\ No newline at end of file
index 508d0eb..b954ecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc3e=['VIRTUAL','system-','STRING','INTEGER','exports','name'];(function(_0x5e95c,_0x5d0943){var _0x3ff5b8=function(_0x389c15){while(--_0x389c15){_0x5e95c['push'](_0x5e95c['shift']());}};_0x3ff5b8(++_0x5d0943);}(_0xbc3e,0x106));var _0xebc3=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xbc3e[_0x1035c1];return _0x308d67;};'use strict';var Sequelize=require('sequelize');module[_0xebc3('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xebc3('0x1')},'prefix':{'type':Sequelize[_0xebc3('0x2')],'get':function(_0x10f4bd){return _0xebc3('0x3')+this['getDataValue'](_0xebc3('0x1'))+'-';}},'description':{'type':Sequelize[_0xebc3('0x4')]},'callerIdAll':{'type':Sequelize[_0xebc3('0x4')]},'VoiceExtensionId':{'type':Sequelize[_0xebc3('0x5')]}};
\ No newline at end of file
+var _0xee05=['INTEGER','sequelize','exports','STRING','name','VIRTUAL','system-','getDataValue'];(function(_0x53e01d,_0x5181e2){var _0x42a8ec=function(_0x1fca8e){while(--_0x1fca8e){_0x53e01d['push'](_0x53e01d['shift']());}};_0x42a8ec(++_0x5181e2);}(_0xee05,0xd1));var _0x5ee0=function(_0x8b5c72,_0x43d200){_0x8b5c72=_0x8b5c72-0x0;var _0x31707d=_0xee05[_0x8b5c72];return _0x31707d;};'use strict';var Sequelize=require(_0x5ee0('0x0'));module[_0x5ee0('0x1')]={'name':{'type':Sequelize[_0x5ee0('0x2')],'allowNull':![],'unique':_0x5ee0('0x3')},'prefix':{'type':Sequelize[_0x5ee0('0x4')],'get':function(_0x6fb140){return _0x5ee0('0x5')+this[_0x5ee0('0x6')](_0x5ee0('0x3'))+'-';}},'description':{'type':Sequelize[_0x5ee0('0x2')]},'callerIdAll':{'type':Sequelize[_0x5ee0('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x5ee0('0x7')]}};
\ No newline at end of file
index 382bd27..d5cfa29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['VoiceExtension','role','user','UserProfileSection','VoicePrefixes','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','bulkCreate','Extensions\x20creation\x20failed','push','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','context','charAt','transaction','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','findOne','order','getAgents','nolimit','getTeams','Team','addTeams','online','Agents','each','TeamVoicePrefix','upsert','findOrCreate','forEach','removeTeams','User','select','field','tq.TeamId','from','team_has_voice_prefixes','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','UserProfileResource','then','end','error','stack','name','index','VoicePrefix','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show','includeAll','find','params','describe','create','sequelize','body','get'];(function(_0x25a1c6,_0x3957bd){var _0x5bde16=function(_0x1c1760){while(--_0x1c1760){_0x25a1c6['push'](_0x25a1c6['shift']());}};_0x5bde16(++_0x3957bd);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3342('0x0'));var jsonpatch=require(_0x3342('0x1'));var rp=require(_0x3342('0x2'));var moment=require(_0x3342('0x3'));var BPromise=require(_0x3342('0x4'));var Mustache=require(_0x3342('0x5'));var util=require(_0x3342('0x6'));var path=require(_0x3342('0x7'));var sox=require(_0x3342('0x8'));var csv=require(_0x3342('0x9'));var ejs=require(_0x3342('0xa'));var fs=require('fs');var fs_extra=require(_0x3342('0xb'));var _=require(_0x3342('0xc'));var squel=require(_0x3342('0xd'));var crypto=require(_0x3342('0xe'));var jsforce=require(_0x3342('0xf'));var deskjs=require(_0x3342('0x10'));var toCsv=require(_0x3342('0x9'));var querystring=require(_0x3342('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3342('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3342('0x13'));var utils=require(_0x3342('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3342('0x15'));var db=require('../../mysqldb')['db'];config[_0x3342('0x16')]=_[_0x3342('0x17')](config['redis'],{'host':_0x3342('0x18'),'port':0x18eb});var socket=require(_0x3342('0x19'))(new Redis(config[_0x3342('0x16')]));require(_0x3342('0x1a'))[_0x3342('0x1b')](socket);function respondWithStatusCode(_0x104077,_0x34a306){_0x34a306=_0x34a306||0xcc;return function(_0x59be1d){if(_0x59be1d){return _0x104077[_0x3342('0x1c')](_0x34a306);}return _0x104077[_0x3342('0x1d')](_0x34a306)['end']();};}function respondWithResult(_0x40d609,_0x2c9df0){_0x2c9df0=_0x2c9df0||0xc8;return function(_0x51ef91){if(_0x51ef91){return _0x40d609['status'](_0x2c9df0)[_0x3342('0x1e')](_0x51ef91);}};}function respondWithFilteredResult(_0x143cf1,_0x6949fc){return function(_0x2075cb){if(_0x2075cb){var _0x12947a=typeof _0x6949fc[_0x3342('0x1f')]===_0x3342('0x20')&&typeof _0x6949fc[_0x3342('0x21')]===_0x3342('0x20');var _0x4f4c2a=_0x2075cb[_0x3342('0x22')];var _0xda235a=_0x12947a?0x0:_0x6949fc[_0x3342('0x1f')];var _0x5e05f5=_0x12947a?_0x2075cb[_0x3342('0x22')]:_0x6949fc[_0x3342('0x1f')]+_0x6949fc['limit'];var _0xe774b7;if(_0x5e05f5>=_0x4f4c2a){_0x5e05f5=_0x4f4c2a;_0xe774b7=0xc8;}else{_0xe774b7=0xce;}_0x143cf1[_0x3342('0x1d')](_0xe774b7);return _0x143cf1['set'](_0x3342('0x23'),_0xda235a+'-'+_0x5e05f5+'/'+_0x4f4c2a)['json'](_0x2075cb);}return null;};}function patchUpdates(_0x3f271c){return function(_0x38994e){try{jsonpatch[_0x3342('0x24')](_0x38994e,_0x3f271c,!![]);}catch(_0x2dbad1){return BPromise[_0x3342('0x25')](_0x2dbad1);}return _0x38994e[_0x3342('0x26')]();};}function saveUpdates(_0x26eb87,_0x2d8622){return function(_0x5d4f14){if(_0x5d4f14){return _0x5d4f14[_0x3342('0x27')](_0x26eb87)['then'](function(_0x51cf45){return _0x51cf45;});}return null;};}function removeEntity(_0x986ab0,_0x52ba65){return function(_0x5d2f0b){if(_0x5d2f0b){return _0x5d2f0b[_0x3342('0x28')]()['then'](function(){var _0x37df78=_0x5d2f0b['get']({'plain':!![]});var _0x524286='VoicePrefixes';return db[_0x3342('0x29')][_0x3342('0x28')]({'where':{'type':_0x524286,'resourceId':_0x37df78['id']}})[_0x3342('0x2a')](function(){return _0x5d2f0b;});})['then'](function(){_0x986ab0[_0x3342('0x1d')](0xcc)[_0x3342('0x2b')]();});}};}function handleEntityNotFound(_0x1cc542,_0x272a52){return function(_0x4fbfb7){if(!_0x4fbfb7){_0x1cc542[_0x3342('0x1c')](0x194);}return _0x4fbfb7;};}function handleError(_0x3d6810,_0x387ba2){_0x387ba2=_0x387ba2||0x1f4;return function(_0x301114){logger[_0x3342('0x2c')](_0x301114[_0x3342('0x2d')]);if(_0x301114[_0x3342('0x2e')]){delete _0x301114['name'];}_0x3d6810[_0x3342('0x1d')](_0x387ba2)['send'](_0x301114);};}exports[_0x3342('0x2f')]=function(_0x407f8c,_0x508f87){var _0x250396={},_0x1cc42d={},_0x347d52={'count':0x0,'rows':[]};var _0x4e7410=_['map'](db[_0x3342('0x30')][_0x3342('0x31')],function(_0x311cfe){return{'name':_0x311cfe[_0x3342('0x32')],'type':_0x311cfe[_0x3342('0x33')][_0x3342('0x34')]};});_0x1cc42d[_0x3342('0x35')]=_[_0x3342('0x36')](_0x4e7410,_0x3342('0x2e'));_0x1cc42d[_0x3342('0x37')]=_[_0x3342('0x38')](_0x407f8c[_0x3342('0x37')]);_0x1cc42d['filters']=_['intersection'](_0x1cc42d[_0x3342('0x35')],_0x1cc42d['query']);_0x250396[_0x3342('0x39')]=_[_0x3342('0x3a')](_0x1cc42d[_0x3342('0x35')],qs[_0x3342('0x3b')](_0x407f8c[_0x3342('0x37')][_0x3342('0x3b')]));_0x250396[_0x3342('0x39')]=_0x250396['attributes'][_0x3342('0x3c')]?_0x250396[_0x3342('0x39')]:_0x1cc42d[_0x3342('0x35')];if(!_0x407f8c[_0x3342('0x37')][_0x3342('0x3d')]('nolimit')){_0x250396[_0x3342('0x21')]=qs['limit'](_0x407f8c[_0x3342('0x37')][_0x3342('0x21')]);_0x250396[_0x3342('0x1f')]=qs[_0x3342('0x1f')](_0x407f8c['query'][_0x3342('0x1f')]);}_0x250396['order']=qs[_0x3342('0x3e')](_0x407f8c[_0x3342('0x37')][_0x3342('0x3e')]);_0x250396[_0x3342('0x3f')]=qs[_0x3342('0x40')](_[_0x3342('0x41')](_0x407f8c[_0x3342('0x37')],_0x1cc42d['filters']),_0x4e7410);if(_0x407f8c[_0x3342('0x37')][_0x3342('0x42')]){_0x250396['where']=_[_0x3342('0x43')](_0x250396[_0x3342('0x3f')],{'$or':_['map'](_0x4e7410,function(_0x45b956){if(_0x45b956[_0x3342('0x33')]!=='VIRTUAL'){var _0x4985db={};_0x4985db[_0x45b956['name']]={'$like':'%'+_0x407f8c[_0x3342('0x37')][_0x3342('0x42')]+'%'};return _0x4985db;}})});}_0x250396=_['merge']({},_0x250396,_0x407f8c[_0x3342('0x44')]);var _0x2a1f7e={'where':_0x250396[_0x3342('0x3f')]};return db[_0x3342('0x30')][_0x3342('0x22')](_0x2a1f7e)[_0x3342('0x2a')](function(_0x34de7b){_0x347d52[_0x3342('0x22')]=_0x34de7b;if(_0x407f8c['query']['includeAll']){_0x250396[_0x3342('0x45')]=[{'all':!![]}];}return db[_0x3342('0x30')][_0x3342('0x46')](_0x250396);})[_0x3342('0x2a')](function(_0x717946){_0x347d52[_0x3342('0x47')]=_0x717946;return _0x347d52;})['then'](respondWithFilteredResult(_0x508f87,_0x250396))[_0x3342('0x48')](handleError(_0x508f87,null));};exports[_0x3342('0x49')]=function(_0x283ce9,_0x309423){var _0x64e352={'raw':![],'where':{'id':_0x283ce9['params']['id']}},_0x365d6f={};_0x365d6f[_0x3342('0x35')]=_['keys'](db[_0x3342('0x30')][_0x3342('0x31')]);_0x365d6f[_0x3342('0x37')]=_[_0x3342('0x38')](_0x283ce9['query']);_0x365d6f[_0x3342('0x40')]=_[_0x3342('0x3a')](_0x365d6f['model'],_0x365d6f[_0x3342('0x37')]);_0x64e352[_0x3342('0x39')]=_[_0x3342('0x3a')](_0x365d6f[_0x3342('0x35')],qs['fields'](_0x283ce9[_0x3342('0x37')][_0x3342('0x3b')]));_0x64e352['attributes']=_0x64e352[_0x3342('0x39')]['length']?_0x64e352['attributes']:_0x365d6f[_0x3342('0x35')];if(_0x283ce9[_0x3342('0x37')][_0x3342('0x4a')]){_0x64e352[_0x3342('0x45')]=[{'all':!![]}];}_0x64e352=_[_0x3342('0x43')]({},_0x64e352,_0x283ce9[_0x3342('0x44')]);return db[_0x3342('0x30')]['find'](_0x64e352)['then'](handleEntityNotFound(_0x309423,null))[_0x3342('0x2a')](respondWithResult(_0x309423,null))['catch'](handleError(_0x309423,null));};exports[_0x3342('0x28')]=function(_0x5e1202,_0x4c9214){return db['VoicePrefix'][_0x3342('0x4b')]({'where':{'id':_0x5e1202[_0x3342('0x4c')]['id']}})[_0x3342('0x2a')](handleEntityNotFound(_0x4c9214,null))[_0x3342('0x2a')](removeEntity(_0x4c9214,null))['catch'](handleError(_0x4c9214,null));};exports[_0x3342('0x4d')]=function(_0x3a6597,_0x4ce271){return db[_0x3342('0x30')][_0x3342('0x4d')]()[_0x3342('0x2a')](respondWithResult(_0x4ce271,null))['catch'](handleError(_0x4ce271,null));};exports[_0x3342('0x4e')]=function(_0x1497d9,_0x45eb2c){var _0x3be76c;return db[_0x3342('0x4f')]['transaction'](function(_0x2699d2){return db[_0x3342('0x30')][_0x3342('0x4e')](_0x1497d9[_0x3342('0x50')],{'transaction':_0x2699d2})[_0x3342('0x2a')](function(_0x386a5d){_0x3be76c=_0x386a5d[_0x3342('0x51')]({'plain':!![]});return db[_0x3342('0x52')][_0x3342('0x4b')]({'where':{'id':_0x3be76c['VoiceExtensionId']},'raw':!![]})[_0x3342('0x2a')](function(_0x4eebaa){return createVoicePrefixExtensions(_0x3be76c,_0x4eebaa,_0x2699d2);});});})[_0x3342('0x2a')](function(){var _0x524fb6=_0x1497d9['user']['get']({'plain':!![]});if(!_0x524fb6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x524fb6[_0x3342('0x53')]===_0x3342('0x54')){var _0x3cd098=_0x3be76c;return db[_0x3342('0x55')][_0x3342('0x4b')]({'where':{'name':_0x3342('0x56'),'userProfileId':_0x524fb6[_0x3342('0x57')]},'raw':!![]})[_0x3342('0x2a')](function(_0x2938e0){if(_0x2938e0&&_0x2938e0[_0x3342('0x58')]===0x0){return db[_0x3342('0x29')]['create']({'name':_0x3cd098['name'],'resourceId':_0x3cd098['id'],'type':_0x2938e0[_0x3342('0x2e')],'sectionId':_0x2938e0['id']},{})['then'](function(){return _0x3be76c;});}else{return _0x3be76c;}})[_0x3342('0x48')](function(_0x59964b){logger['error'](_0x3342('0x59'),_0x59964b);throw _0x59964b;});}return _0x3be76c;})[_0x3342('0x2a')](respondWithResult(_0x45eb2c,null))[_0x3342('0x48')](handleError(_0x45eb2c,null));};function Extension(_0x5d5e0f,_0x58d37a,_0x54b41d,_0x3cc92a){this['context']=_0x3342('0x5a');this[_0x3342('0x5b')]=_0x5d5e0f;this[_0x3342('0x5c')]=_0x54b41d;this['type']=_0x3342('0x5d');this[_0x3342('0x5e')]=_0x3342('0x5f');this[_0x3342('0x60')]=_0x58d37a;this[_0x3342('0x61')]=_0x3cc92a;}function createVoicePrefixExtensions(_0x19e27b,_0xa4452,_0x57942a){return new BPromise(function(_0x4bc9a9,_0x30e299){var _0x4ec1c4=new Extension(formatPrefixName(_0x19e27b[_0x3342('0x62')]),0x1,_0x3342('0x63'),_0x3342('0x64'));_0x4ec1c4[_0x3342('0x65')]=_0x19e27b['id'];return db[_0x3342('0x52')]['create'](_0x4ec1c4,{'transaction':_0x57942a})[_0x3342('0x2a')](function(_0x3f2fcb){var _0x4c1c6a=_0x3f2fcb[_0x3342('0x51')]({'plain':!![]});var _0x14cc64=_[_0x3342('0x36')](addVoicePrefixExtensions(_0x19e27b,_0xa4452),function(_0x2858a6){_0x2858a6[_0x3342('0x66')]=_0x4c1c6a['id'];_0x2858a6[_0x3342('0x65')]=_0x19e27b['id'];return _0x2858a6;});return db[_0x3342('0x52')][_0x3342('0x67')](_0x14cc64,{'transaction':_0x57942a})[_0x3342('0x2a')](function(_0x36eec8){if(!_0x36eec8){return _0x30e299(_0x3342('0x68'));}else{return _0x4bc9a9(_0x36eec8);}})[_0x3342('0x48')](function(_0x3b01a3){return _0x30e299(_0x3b01a3);});});;});};function addVoicePrefixExtensions(_0x58cbdd,_0x5c9399){var _0x146ffc=[];var _0x4672b5=formatPrefixName(_0x58cbdd[_0x3342('0x62')]);_0x146ffc[_0x3342('0x69')](new Extension(_0x4672b5,0x2,'Set','CDR(prefix)='+_0x58cbdd[_0x3342('0x2e')]));if(_0x58cbdd[_0x3342('0x6a')]){_0x146ffc[_0x3342('0x69')](new Extension(_0x4672b5,0x3,_0x3342('0x6b'),_0x3342('0x6c')+_0x58cbdd[_0x3342('0x6a')]));}else{_0x146ffc[_0x3342('0x69')](new Extension(_0x4672b5,0x3,_0x3342('0x63'),_0x3342('0x6d')));}_0x146ffc[_0x3342('0x69')](new Extension(_0x4672b5,0x4,'goto',_0x5c9399[_0x3342('0x6e')]+','+'${EXTEN:'+(0x8+_0x58cbdd[_0x3342('0x2e')][_0x3342('0x3c')])+'}'+','+0x1));return _0x146ffc;}function formatPrefixName(_0x536fbc){var _0x18cadb='_';for(var _0x3506d4=0x0;_0x3506d4<_0x536fbc['length'];_0x3506d4++){if(_0x536fbc[_0x3342('0x6f')](_0x3506d4)=='-'){_0x18cadb+=_0x536fbc[_0x3342('0x6f')](_0x3506d4);}else{_0x18cadb+='['+_0x536fbc[_0x3342('0x6f')](_0x3506d4)+']';}}_0x18cadb+='.';return _0x18cadb;}exports[_0x3342('0x27')]=function(_0x6b9502,_0x42bc3b,_0x28d937){var _0x57b8ac=_0x6b9502[_0x3342('0x50')];_0x57b8ac['prefix']='system-'+_0x57b8ac[_0x3342('0x2e')]+'-';return db[_0x3342('0x4f')][_0x3342('0x70')](function(_0x28e73f){return db[_0x3342('0x30')][_0x3342('0x27')](_0x57b8ac,{'where':{'id':_0x57b8ac['id']},'transaction':_0x28e73f})[_0x3342('0x2a')](function(){return db[_0x3342('0x52')]['destroy']({'where':{'VoicePrefixId':_0x57b8ac['id']},'transaction':_0x28e73f})[_0x3342('0x2a')](function(){return db[_0x3342('0x52')][_0x3342('0x4b')]({'where':{'id':_0x57b8ac[_0x3342('0x66')]},'raw':!![]})[_0x3342('0x2a')](function(_0x2f02ce){return createVoicePrefixExtensions(_0x57b8ac,_0x2f02ce,_0x28e73f);});});});})[_0x3342('0x2a')](function(){return db['VoicePrefix'][_0x3342('0x71')](_0x57b8ac['id']);})[_0x3342('0x2a')](respondWithResult(_0x42bc3b,null))[_0x3342('0x48')](handleError(_0x42bc3b,null));};exports[_0x3342('0x72')]=function(_0x38a83f,_0x30e493,_0x5a9027){return db['VoicePrefix']['find']({'where':{'id':_0x38a83f[_0x3342('0x4c')]['id']}})[_0x3342('0x2a')](handleEntityNotFound(_0x30e493,null))[_0x3342('0x2a')](function(_0x43cabb){if(_0x43cabb){return _0x43cabb[_0x3342('0x72')](_0x38a83f[_0x3342('0x50')][_0x3342('0x73')],_[_0x3342('0x74')](_0x38a83f['body'],[_0x3342('0x73'),'id'])||{})[_0x3342('0x75')](function(_0x2967d6){for(var _0x42782f=0x0;_0x42782f<_0x38a83f['body'][_0x3342('0x73')][_0x3342('0x3c')];_0x42782f+=0x1){socket[_0x3342('0x76')](_0x3342('0x77'),{'UserId':Number(_0x38a83f[_0x3342('0x50')][_0x3342('0x73')][_0x42782f]),'VoicePrefixId':Number(_0x38a83f[_0x3342('0x4c')]['id'])});}return _0x2967d6;});}})[_0x3342('0x2a')](respondWithResult(_0x30e493,null))[_0x3342('0x48')](handleError(_0x30e493,null));};exports['removeAgents']=function(_0xdc419a,_0x1862b8,_0x58c1b1){return db[_0x3342('0x30')]['find']({'where':{'id':_0xdc419a[_0x3342('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1862b8,null))[_0x3342('0x2a')](function(_0x5b2f46){if(_0x5b2f46){return _0x5b2f46[_0x3342('0x78')](_0xdc419a[_0x3342('0x37')]['ids'])[_0x3342('0x2a')](function(){if(_[_0x3342('0x79')](_0xdc419a['query'][_0x3342('0x73')])){for(var _0x24c9ef=0x0;_0x24c9ef<_0xdc419a[_0x3342('0x37')][_0x3342('0x73')][_0x3342('0x3c')];_0x24c9ef+=0x1){socket[_0x3342('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0xdc419a[_0x3342('0x37')][_0x3342('0x73')][_0x24c9ef]),'VoicePrefixId':Number(_0xdc419a[_0x3342('0x4c')]['id'])});}}else{socket[_0x3342('0x76')](_0x3342('0x7a'),{'UserId':Number(_0xdc419a[_0x3342('0x37')][_0x3342('0x73')]),'VoicePrefixId':Number(_0xdc419a[_0x3342('0x4c')]['id'])});}});}})[_0x3342('0x2a')](respondWithStatusCode(_0x1862b8,null))[_0x3342('0x48')](handleError(_0x1862b8,null));};exports['getAgents']=function(_0x677fc4,_0x7c5834,_0x2e050f){var _0x592122={};var _0x5ef689={};var _0x344a1d;var _0x52e891;return db['VoicePrefix'][_0x3342('0x7b')]({'where':{'id':_0x677fc4[_0x3342('0x4c')]['id']}})['then'](handleEntityNotFound(_0x7c5834,null))[_0x3342('0x2a')](function(_0x4d7132){if(_0x4d7132){_0x344a1d=_0x4d7132;_0x5ef689[_0x3342('0x35')]=_['keys'](db['User'][_0x3342('0x31')]);_0x5ef689[_0x3342('0x37')]=_[_0x3342('0x38')](_0x677fc4['query']);_0x5ef689['filters']=_[_0x3342('0x3a')](_0x5ef689['model'],_0x5ef689[_0x3342('0x37')]);_0x592122[_0x3342('0x39')]=_[_0x3342('0x3a')](_0x5ef689[_0x3342('0x35')],qs['fields'](_0x677fc4['query'][_0x3342('0x3b')]));_0x592122[_0x3342('0x39')]=_0x592122['attributes'][_0x3342('0x3c')]?_0x592122['attributes']:_0x5ef689[_0x3342('0x35')];_0x592122[_0x3342('0x7c')]=qs[_0x3342('0x3e')](_0x677fc4[_0x3342('0x37')][_0x3342('0x3e')]);_0x592122['where']=qs['filters'](_['pick'](_0x677fc4[_0x3342('0x37')],_0x5ef689[_0x3342('0x40')]));if(_0x677fc4[_0x3342('0x37')]['filter']){_0x592122[_0x3342('0x3f')]=_[_0x3342('0x43')](_0x592122[_0x3342('0x3f')],{'$or':_[_0x3342('0x36')](_0x592122[_0x3342('0x39')],function(_0x2355c0){var _0x5cfbf6={};_0x5cfbf6[_0x2355c0]={'$like':'%'+_0x677fc4[_0x3342('0x37')]['filter']+'%'};return _0x5cfbf6;})});}_0x592122=_['merge']({},_0x592122,_0x677fc4['options']);return _0x344a1d[_0x3342('0x7d')](_0x592122);}})[_0x3342('0x2a')](function(_0x50c080){if(_0x50c080){_0x52e891=_0x50c080[_0x3342('0x3c')];if(!_0x677fc4[_0x3342('0x37')]['hasOwnProperty'](_0x3342('0x7e'))){_0x592122[_0x3342('0x21')]=qs[_0x3342('0x21')](_0x677fc4[_0x3342('0x37')][_0x3342('0x21')]);_0x592122[_0x3342('0x1f')]=qs[_0x3342('0x1f')](_0x677fc4[_0x3342('0x37')]['offset']);}return _0x344a1d[_0x3342('0x7d')](_0x592122);}})[_0x3342('0x2a')](function(_0x13738c){if(_0x13738c){return _0x13738c?{'count':_0x52e891,'rows':_0x13738c}:null;}})[_0x3342('0x2a')](respondWithResult(_0x7c5834,null))[_0x3342('0x48')](handleError(_0x7c5834,null));};exports[_0x3342('0x7f')]=function(_0x2d2902,_0x49de28,_0x57a3f8){var _0x1fdaa3={};var _0x2fd436={};var _0x28b7ba;var _0x36ac0d;return db[_0x3342('0x30')][_0x3342('0x7b')]({'where':{'id':_0x2d2902[_0x3342('0x4c')]['id']}})['then'](handleEntityNotFound(_0x49de28,null))[_0x3342('0x2a')](function(_0x15652e){if(_0x15652e){_0x28b7ba=_0x15652e;_0x2fd436[_0x3342('0x35')]=_[_0x3342('0x38')](db[_0x3342('0x80')]['rawAttributes']);_0x2fd436[_0x3342('0x37')]=_[_0x3342('0x38')](_0x2d2902[_0x3342('0x37')]);_0x2fd436[_0x3342('0x40')]=_['intersection'](_0x2fd436[_0x3342('0x35')],_0x2fd436[_0x3342('0x37')]);_0x1fdaa3[_0x3342('0x39')]=_[_0x3342('0x3a')](_0x2fd436[_0x3342('0x35')],qs[_0x3342('0x3b')](_0x2d2902[_0x3342('0x37')]['fields']));_0x1fdaa3['attributes']=_0x1fdaa3[_0x3342('0x39')]['length']?_0x1fdaa3[_0x3342('0x39')]:_0x2fd436[_0x3342('0x35')];_0x1fdaa3[_0x3342('0x7c')]=qs[_0x3342('0x3e')](_0x2d2902[_0x3342('0x37')]['sort']);_0x1fdaa3[_0x3342('0x3f')]=qs[_0x3342('0x40')](_[_0x3342('0x41')](_0x2d2902['query'],_0x2fd436['filters']));if(_0x2d2902[_0x3342('0x37')][_0x3342('0x42')]){_0x1fdaa3[_0x3342('0x3f')]=_[_0x3342('0x43')](_0x1fdaa3[_0x3342('0x3f')],{'$or':_[_0x3342('0x36')](_0x1fdaa3[_0x3342('0x39')],function(_0x2c8c08){var _0x316b4c={};_0x316b4c[_0x2c8c08]={'$like':'%'+_0x2d2902[_0x3342('0x37')][_0x3342('0x42')]+'%'};return _0x316b4c;})});}_0x1fdaa3=_[_0x3342('0x43')]({},_0x1fdaa3,_0x2d2902['options']);return _0x28b7ba['getTeams'](_0x1fdaa3);}})['then'](function(_0x2539a0){if(_0x2539a0){_0x36ac0d=_0x2539a0[_0x3342('0x3c')];if(!_0x2d2902[_0x3342('0x37')][_0x3342('0x3d')](_0x3342('0x7e'))){_0x1fdaa3['limit']=qs[_0x3342('0x21')](_0x2d2902[_0x3342('0x37')][_0x3342('0x21')]);_0x1fdaa3['offset']=qs[_0x3342('0x1f')](_0x2d2902[_0x3342('0x37')]['offset']);}return _0x28b7ba['getTeams'](_0x1fdaa3);}})[_0x3342('0x2a')](function(_0x1cbc11){if(_0x1cbc11){return _0x1cbc11?{'count':_0x36ac0d,'rows':_0x1cbc11}:null;}})[_0x3342('0x2a')](respondWithResult(_0x49de28,null))[_0x3342('0x48')](handleError(_0x49de28,null));};exports[_0x3342('0x81')]=function(_0x51b0f9,_0x48cb53,_0x37fdc5){var _0x26063d=_0x51b0f9[_0x3342('0x50')][_0x3342('0x73')];var _0x43323e;return db[_0x3342('0x80')][_0x3342('0x46')]({'where':{'id':_0x26063d},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0x3342('0x82'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x3c1c34){if(_0x3c1c34){_0x43323e=_0x3c1c34;var _0x319a6e=_['flatMap'](_0x3c1c34,function(_0x36739b){var _0x4dcbb1=_0x36739b['get']({'plain':!![]});return _0x4dcbb1[_0x3342('0x83')];});return db['VoicePrefix'][_0x3342('0x4b')]({'where':{'id':_0x51b0f9[_0x3342('0x4c')]['id']}})[_0x3342('0x2a')](function(_0x2b029d){return db[_0x3342('0x4f')][_0x3342('0x70')](function(_0x5aa6ce){return _0x2b029d[_0x3342('0x81')](_0x26063d,{'transaction':_0x5aa6ce})[_0x3342('0x2a')](function(){return BPromise[_0x3342('0x84')](_0x43323e,function(_0x5d9c1e){return db[_0x3342('0x85')][_0x3342('0x86')]({'TeamId':_0x5d9c1e['id'],'VoicePrefixId':_0x51b0f9[_0x3342('0x4c')]['id']},{'transaction':_0x5aa6ce});});})[_0x3342('0x2a')](function(){return BPromise[_0x3342('0x84')](_0x319a6e,function(_0x41de0c){return db['UserVoicePrefix'][_0x3342('0x87')]({'where':{'UserId':_0x41de0c['id'],'VoicePrefixId':_0x51b0f9[_0x3342('0x4c')]['id']},'transaction':_0x5aa6ce});});})[_0x3342('0x2a')](function(){_0x319a6e[_0x3342('0x88')](function(_0x441c2a){socket['emit'](_0x3342('0x77'),{'UserId':_0x441c2a['id'],'VoicePrefixId':_0x2b029d['id']});});});});});}})[_0x3342('0x2a')](respondWithStatusCode(_0x48cb53,null))[_0x3342('0x48')](handleError(_0x48cb53,null));};exports[_0x3342('0x89')]=function(_0x498de2,_0x100d41,_0x56251e){return db[_0x3342('0x80')][_0x3342('0x46')]({'where':{'id':_0x498de2[_0x3342('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x3342('0x8a')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x3342('0x2a')](handleEntityNotFound(_0x100d41,null))['then'](function(_0x340350){var _0xe6d040=_[_0x3342('0x36')](_0x340350,'id');var _0x58253f=[];var _0x25b867=[];var _0x3a6d87=squel[_0x3342('0x8b')]();_0x3a6d87[_0x3342('0x8c')](_0x3342('0x8d'))[_0x3342('0x8e')](_0x3342('0x8f'),'tq')['join'](_0x3342('0x90'),'ut',_0x3342('0x91'))[_0x3342('0x3f')]('VoicePrefixId\x20=\x20?',_0x498de2[_0x3342('0x4c')]['id']);for(var _0x3c0eb8=0x0;_0x3c0eb8<_0x340350[_0x3342('0x3c')];_0x3c0eb8+=0x1){let _0x2b5df1=_0x340350[_0x3c0eb8];for(var _0xe57bc1=0x0;_0xe57bc1<_0x2b5df1[_0x3342('0x83')][_0x3342('0x3c')];_0xe57bc1+=0x1){let _0x2ae81c=_0x2b5df1['Agents'][_0xe57bc1];var _0x448a3c=_0x3a6d87[_0x3342('0x92')]();_0x448a3c['where'](_0x3342('0x93'),_0x2ae81c['id']);_0x25b867[_0x3342('0x69')](db[_0x3342('0x4f')][_0x3342('0x37')](_0x448a3c[_0x3342('0x94')](),{'type':db[_0x3342('0x4f')][_0x3342('0x95')][_0x3342('0x96')]})[_0x3342('0x2a')](function(_0x31095f){if(_0x31095f[_0x3342('0x3c')]===0x1){return _0x2ae81c['id'];}else{var _0x4a301d=_['every'](_[_0x3342('0x36')](_0x31095f,_0x3342('0x97')),function(_0x107e1b){return _[_0x3342('0x98')](_0xe6d040,_0x107e1b);});if(_0x4a301d){return _0x2ae81c['id'];}}}));}}return BPromise[_0x3342('0x99')](_0x25b867)[_0x3342('0x2a')](function(_0x34f15a){_0x58253f=_(_0x58253f)[_0x3342('0x9a')](_0x34f15a)[_0x3342('0x9b')]()[_0x3342('0x9c')]();return db[_0x3342('0x30')][_0x3342('0x4b')]({'where':{'id':_0x498de2[_0x3342('0x4c')]['id']}})[_0x3342('0x2a')](function(_0x45d548){return db[_0x3342('0x4f')]['transaction'](function(_0x4e1359){return _0x45d548[_0x3342('0x89')](_0x498de2[_0x3342('0x37')]['ids'],{'transaction':_0x4e1359})[_0x3342('0x2a')](function(){if(!_[_0x3342('0x9d')](_0x58253f)){return _0x45d548['removeAgents'](_0x58253f,{'transaction':_0x4e1359});}})[_0x3342('0x2a')](function(){_0x58253f['forEach'](function(_0x24049f){socket[_0x3342('0x76')](_0x3342('0x7a'),{'UserId':_0x24049f,'VoicePrefixId':_0x45d548['id']});});});});});});})[_0x3342('0x2a')](respondWithStatusCode(_0x100d41,null))[_0x3342('0x48')](handleError(_0x100d41,null));};
\ No newline at end of file
+var _0x4888=['send','map','VoicePrefix','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','describe','create','sequelize','transaction','body','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','context','from-sip','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','push','Set','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','update','system-','addAgents','ids','omit','emit','removeAgents','isArray','userVoicePrefix:remove','findOne','User','getAgents','getTeams','addTeams','Team','Agents','online','voicePause','interface','each','upsert','findOrCreate','forEach','userVoicePrefix:save','removeTeams','select','field','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','toString','SELECT','every','compact','value','isEmpty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','VoicePrefixes','UserProfileResource','error','stack','name'];(function(_0x4ed083,_0x4ecf98){var _0x4ae41f=function(_0xbdeae2){while(--_0xbdeae2){_0x4ed083['push'](_0x4ed083['shift']());}};_0x4ae41f(++_0x4ecf98);}(_0x4888,0x198));var _0x8488=function(_0x467ef6,_0x932cef){_0x467ef6=_0x467ef6-0x0;var _0x3e4aa2=_0x4888[_0x467ef6];return _0x3e4aa2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8488('0x0'));var zipdir=require(_0x8488('0x1'));var jsonpatch=require(_0x8488('0x2'));var rp=require(_0x8488('0x3'));var moment=require(_0x8488('0x4'));var BPromise=require(_0x8488('0x5'));var Mustache=require(_0x8488('0x6'));var util=require('util');var path=require(_0x8488('0x7'));var sox=require(_0x8488('0x8'));var csv=require(_0x8488('0x9'));var ejs=require(_0x8488('0xa'));var fs=require('fs');var fs_extra=require(_0x8488('0xb'));var _=require(_0x8488('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8488('0x9'));var querystring=require(_0x8488('0xd'));var Papa=require('papaparse');var Redis=require(_0x8488('0xe'));var authService=require(_0x8488('0xf'));var qs=require(_0x8488('0x10'));var as=require(_0x8488('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8488('0x12'))(_0x8488('0x13'));var utils=require(_0x8488('0x14'));var config=require(_0x8488('0x15'));var licenseUtil=require(_0x8488('0x16'));var db=require('../../mysqldb')['db'];config[_0x8488('0x17')]=_[_0x8488('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8488('0x19'))(new Redis(config['redis']));require(_0x8488('0x1a'))['register'](socket);function respondWithStatusCode(_0x5161a3,_0x24d0a0){_0x24d0a0=_0x24d0a0||0xcc;return function(_0x3635da){if(_0x3635da){return _0x5161a3[_0x8488('0x1b')](_0x24d0a0);}return _0x5161a3[_0x8488('0x1c')](_0x24d0a0)[_0x8488('0x1d')]();};}function respondWithResult(_0x8d3b3d,_0x165139){_0x165139=_0x165139||0xc8;return function(_0x4e44af){if(_0x4e44af){return _0x8d3b3d[_0x8488('0x1c')](_0x165139)[_0x8488('0x1e')](_0x4e44af);}};}function respondWithFilteredResult(_0x3edfe4,_0x37361d){return function(_0x60ae2f){if(_0x60ae2f){var _0x39775f=typeof _0x37361d[_0x8488('0x1f')]===_0x8488('0x20')&&typeof _0x37361d[_0x8488('0x21')]===_0x8488('0x20');var _0x10bfd6=_0x60ae2f[_0x8488('0x22')];var _0x3dd93e=_0x39775f?0x0:_0x37361d['offset'];var _0x4a1b45=_0x39775f?_0x60ae2f[_0x8488('0x22')]:_0x37361d[_0x8488('0x1f')]+_0x37361d[_0x8488('0x21')];var _0x3c9fc2;if(_0x4a1b45>=_0x10bfd6){_0x4a1b45=_0x10bfd6;_0x3c9fc2=0xc8;}else{_0x3c9fc2=0xce;}_0x3edfe4[_0x8488('0x1c')](_0x3c9fc2);return _0x3edfe4[_0x8488('0x23')](_0x8488('0x24'),_0x3dd93e+'-'+_0x4a1b45+'/'+_0x10bfd6)[_0x8488('0x1e')](_0x60ae2f);}return null;};}function patchUpdates(_0x39dd43){return function(_0x5123d0){try{jsonpatch[_0x8488('0x25')](_0x5123d0,_0x39dd43,!![]);}catch(_0x4e07e1){return BPromise[_0x8488('0x26')](_0x4e07e1);}return _0x5123d0[_0x8488('0x27')]();};}function saveUpdates(_0x290b33,_0x54ecda){return function(_0x577234){if(_0x577234){return _0x577234['update'](_0x290b33)['then'](function(_0x472624){return _0x472624;});}return null;};}function removeEntity(_0x51fe30,_0x58057a){return function(_0x26bdbb){if(_0x26bdbb){return _0x26bdbb[_0x8488('0x28')]()[_0x8488('0x29')](function(){var _0x6ebee0=_0x26bdbb[_0x8488('0x2a')]({'plain':!![]});var _0x503b83=_0x8488('0x2b');return db[_0x8488('0x2c')][_0x8488('0x28')]({'where':{'type':_0x503b83,'resourceId':_0x6ebee0['id']}})[_0x8488('0x29')](function(){return _0x26bdbb;});})[_0x8488('0x29')](function(){_0x51fe30[_0x8488('0x1c')](0xcc)[_0x8488('0x1d')]();});}};}function handleEntityNotFound(_0x296b6c,_0x368f9c){return function(_0x1d9317){if(!_0x1d9317){_0x296b6c[_0x8488('0x1b')](0x194);}return _0x1d9317;};}function handleError(_0x58d0cc,_0x57ce3c){_0x57ce3c=_0x57ce3c||0x1f4;return function(_0x4e3fe2){logger[_0x8488('0x2d')](_0x4e3fe2[_0x8488('0x2e')]);if(_0x4e3fe2[_0x8488('0x2f')]){delete _0x4e3fe2[_0x8488('0x2f')];}_0x58d0cc[_0x8488('0x1c')](_0x57ce3c)[_0x8488('0x30')](_0x4e3fe2);};}exports['index']=function(_0x2292e0,_0x14f378){var _0x208753={},_0x3649f7={},_0x18eb27={'count':0x0,'rows':[]};var _0x501981=_[_0x8488('0x31')](db[_0x8488('0x32')]['rawAttributes'],function(_0x1b0637){return{'name':_0x1b0637[_0x8488('0x33')],'type':_0x1b0637[_0x8488('0x34')][_0x8488('0x35')]};});_0x3649f7[_0x8488('0x36')]=_['map'](_0x501981,_0x8488('0x2f'));_0x3649f7[_0x8488('0x37')]=_[_0x8488('0x38')](_0x2292e0['query']);_0x3649f7[_0x8488('0x39')]=_['intersection'](_0x3649f7[_0x8488('0x36')],_0x3649f7[_0x8488('0x37')]);_0x208753[_0x8488('0x3a')]=_[_0x8488('0x3b')](_0x3649f7['model'],qs[_0x8488('0x3c')](_0x2292e0[_0x8488('0x37')][_0x8488('0x3c')]));_0x208753['attributes']=_0x208753[_0x8488('0x3a')][_0x8488('0x3d')]?_0x208753[_0x8488('0x3a')]:_0x3649f7[_0x8488('0x36')];if(!_0x2292e0[_0x8488('0x37')][_0x8488('0x3e')](_0x8488('0x3f'))){_0x208753[_0x8488('0x21')]=qs[_0x8488('0x21')](_0x2292e0[_0x8488('0x37')][_0x8488('0x21')]);_0x208753['offset']=qs['offset'](_0x2292e0[_0x8488('0x37')][_0x8488('0x1f')]);}_0x208753[_0x8488('0x40')]=qs[_0x8488('0x41')](_0x2292e0[_0x8488('0x37')][_0x8488('0x41')]);_0x208753[_0x8488('0x42')]=qs[_0x8488('0x39')](_[_0x8488('0x43')](_0x2292e0['query'],_0x3649f7[_0x8488('0x39')]),_0x501981);if(_0x2292e0[_0x8488('0x37')][_0x8488('0x44')]){_0x208753['where']=_[_0x8488('0x45')](_0x208753[_0x8488('0x42')],{'$or':_[_0x8488('0x31')](_0x501981,function(_0x28bc84){if(_0x28bc84[_0x8488('0x34')]!==_0x8488('0x46')){var _0x1aac4b={};_0x1aac4b[_0x28bc84['name']]={'$like':'%'+_0x2292e0[_0x8488('0x37')][_0x8488('0x44')]+'%'};return _0x1aac4b;}})});}_0x208753=_[_0x8488('0x45')]({},_0x208753,_0x2292e0['options']);var _0x3649ae={'where':_0x208753['where']};return db[_0x8488('0x32')][_0x8488('0x22')](_0x3649ae)['then'](function(_0x22a3f3){_0x18eb27[_0x8488('0x22')]=_0x22a3f3;if(_0x2292e0[_0x8488('0x37')][_0x8488('0x47')]){_0x208753[_0x8488('0x48')]=[{'all':!![]}];}return db['VoicePrefix'][_0x8488('0x49')](_0x208753);})['then'](function(_0x3440ae){_0x18eb27[_0x8488('0x4a')]=_0x3440ae;return _0x18eb27;})[_0x8488('0x29')](respondWithFilteredResult(_0x14f378,_0x208753))[_0x8488('0x4b')](handleError(_0x14f378,null));};exports[_0x8488('0x4c')]=function(_0x3dd1cb,_0x1ae9af){var _0x192617={'raw':![],'where':{'id':_0x3dd1cb[_0x8488('0x4d')]['id']}},_0xfe2e8f={};_0xfe2e8f[_0x8488('0x36')]=_[_0x8488('0x38')](db[_0x8488('0x32')][_0x8488('0x4e')]);_0xfe2e8f[_0x8488('0x37')]=_[_0x8488('0x38')](_0x3dd1cb[_0x8488('0x37')]);_0xfe2e8f['filters']=_[_0x8488('0x3b')](_0xfe2e8f[_0x8488('0x36')],_0xfe2e8f[_0x8488('0x37')]);_0x192617[_0x8488('0x3a')]=_['intersection'](_0xfe2e8f[_0x8488('0x36')],qs[_0x8488('0x3c')](_0x3dd1cb[_0x8488('0x37')][_0x8488('0x3c')]));_0x192617['attributes']=_0x192617[_0x8488('0x3a')][_0x8488('0x3d')]?_0x192617[_0x8488('0x3a')]:_0xfe2e8f[_0x8488('0x36')];if(_0x3dd1cb[_0x8488('0x37')][_0x8488('0x47')]){_0x192617[_0x8488('0x48')]=[{'all':!![]}];}_0x192617=_[_0x8488('0x45')]({},_0x192617,_0x3dd1cb[_0x8488('0x4f')]);return db[_0x8488('0x32')][_0x8488('0x50')](_0x192617)[_0x8488('0x29')](handleEntityNotFound(_0x1ae9af,null))[_0x8488('0x29')](respondWithResult(_0x1ae9af,null))['catch'](handleError(_0x1ae9af,null));};exports['destroy']=function(_0x8267e1,_0x1a66ff){return db[_0x8488('0x32')][_0x8488('0x50')]({'where':{'id':_0x8267e1[_0x8488('0x4d')]['id']}})[_0x8488('0x29')](handleEntityNotFound(_0x1a66ff,null))[_0x8488('0x29')](removeEntity(_0x1a66ff,null))[_0x8488('0x4b')](handleError(_0x1a66ff,null));};exports[_0x8488('0x51')]=function(_0x481975,_0x474a0b){return db[_0x8488('0x32')]['describe']()[_0x8488('0x29')](respondWithResult(_0x474a0b,null))[_0x8488('0x4b')](handleError(_0x474a0b,null));};exports[_0x8488('0x52')]=function(_0x1ff9c5,_0x4f80fb){var _0x198328;return db[_0x8488('0x53')][_0x8488('0x54')](function(_0x5c55bf){return db[_0x8488('0x32')][_0x8488('0x52')](_0x1ff9c5[_0x8488('0x55')],{'transaction':_0x5c55bf})[_0x8488('0x29')](function(_0x48caa1){_0x198328=_0x48caa1[_0x8488('0x2a')]({'plain':!![]});return db['VoiceExtension']['find']({'where':{'id':_0x198328[_0x8488('0x56')]},'raw':!![]})['then'](function(_0x3453c7){return createVoicePrefixExtensions(_0x198328,_0x3453c7,_0x5c55bf);});});})[_0x8488('0x29')](function(){var _0x417afa=_0x1ff9c5[_0x8488('0x57')][_0x8488('0x2a')]({'plain':!![]});if(!_0x417afa)throw new Error(_0x8488('0x58'));if(_0x417afa['role']===_0x8488('0x57')){var _0x693741=_0x198328;return db[_0x8488('0x59')][_0x8488('0x50')]({'where':{'name':_0x8488('0x2b'),'userProfileId':_0x417afa['userProfileId']},'raw':!![]})[_0x8488('0x29')](function(_0x5a04d7){if(_0x5a04d7&&_0x5a04d7[_0x8488('0x5a')]===0x0){return db[_0x8488('0x2c')]['create']({'name':_0x693741[_0x8488('0x2f')],'resourceId':_0x693741['id'],'type':_0x5a04d7[_0x8488('0x2f')],'sectionId':_0x5a04d7['id']},{})[_0x8488('0x29')](function(){return _0x198328;});}else{return _0x198328;}})[_0x8488('0x4b')](function(_0x4041e5){logger[_0x8488('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4041e5);throw _0x4041e5;});}return _0x198328;})[_0x8488('0x29')](respondWithResult(_0x4f80fb,null))['catch'](handleError(_0x4f80fb,null));};function Extension(_0x31dcc6,_0x3fa6e2,_0x3c06a4,_0x3fa288){this[_0x8488('0x5b')]=_0x8488('0x5c');this['exten']=_0x31dcc6;this[_0x8488('0x5d')]=_0x3c06a4;this['type']=_0x8488('0x5e');this[_0x8488('0x5f')]=_0x8488('0x60');this[_0x8488('0x61')]=_0x3fa6e2;this[_0x8488('0x62')]=_0x3fa288;}function createVoicePrefixExtensions(_0x24ba2d,_0x4facfb,_0x5755af){return new BPromise(function(_0x5c8310,_0x28ddb0){var _0x1988cf=new Extension(formatPrefixName(_0x24ba2d[_0x8488('0x63')]),0x1,_0x8488('0x64'),_0x8488('0x65'));_0x1988cf[_0x8488('0x66')]=_0x24ba2d['id'];return db[_0x8488('0x67')][_0x8488('0x52')](_0x1988cf,{'transaction':_0x5755af})[_0x8488('0x29')](function(_0xa90a65){var _0x57fdbb=_0xa90a65[_0x8488('0x2a')]({'plain':!![]});var _0x174c57=_[_0x8488('0x31')](addVoicePrefixExtensions(_0x24ba2d,_0x4facfb),function(_0x4ba14e){_0x4ba14e['VoiceExtensionId']=_0x57fdbb['id'];_0x4ba14e[_0x8488('0x66')]=_0x24ba2d['id'];return _0x4ba14e;});return db[_0x8488('0x67')][_0x8488('0x68')](_0x174c57,{'transaction':_0x5755af})[_0x8488('0x29')](function(_0x52bc90){if(!_0x52bc90){return _0x28ddb0('Extensions\x20creation\x20failed');}else{return _0x5c8310(_0x52bc90);}})[_0x8488('0x4b')](function(_0x26e0cc){return _0x28ddb0(_0x26e0cc);});});;});};function addVoicePrefixExtensions(_0x50897,_0x4856fc){var _0x3c3e89=[];var _0x401f4d=formatPrefixName(_0x50897[_0x8488('0x63')]);_0x3c3e89[_0x8488('0x69')](new Extension(_0x401f4d,0x2,_0x8488('0x6a'),'CDR(prefix)='+_0x50897[_0x8488('0x2f')]));if(_0x50897[_0x8488('0x6b')]){_0x3c3e89['push'](new Extension(_0x401f4d,0x3,_0x8488('0x6a'),_0x8488('0x6c')+_0x50897['callerIdAll']));}else{_0x3c3e89[_0x8488('0x69')](new Extension(_0x401f4d,0x3,_0x8488('0x64'),_0x8488('0x6d')));}_0x3c3e89[_0x8488('0x69')](new Extension(_0x401f4d,0x4,_0x8488('0x6e'),_0x4856fc[_0x8488('0x5b')]+','+_0x8488('0x6f')+(0x8+_0x50897['name'][_0x8488('0x3d')])+'}'+','+0x1));return _0x3c3e89;}function formatPrefixName(_0x3b7aa8){var _0x480666='_';for(var _0x49ef10=0x0;_0x49ef10<_0x3b7aa8[_0x8488('0x3d')];_0x49ef10++){if(_0x3b7aa8[_0x8488('0x70')](_0x49ef10)=='-'){_0x480666+=_0x3b7aa8[_0x8488('0x70')](_0x49ef10);}else{_0x480666+='['+_0x3b7aa8['charAt'](_0x49ef10)+']';}}_0x480666+='.';return _0x480666;}exports[_0x8488('0x71')]=function(_0x852e08,_0x56b35a,_0x42b5c5){var _0x59da4a=_0x852e08[_0x8488('0x55')];_0x59da4a[_0x8488('0x63')]=_0x8488('0x72')+_0x59da4a['name']+'-';return db[_0x8488('0x53')][_0x8488('0x54')](function(_0x57955d){return db['VoicePrefix'][_0x8488('0x71')](_0x59da4a,{'where':{'id':_0x59da4a['id']},'transaction':_0x57955d})[_0x8488('0x29')](function(){return db[_0x8488('0x67')][_0x8488('0x28')]({'where':{'VoicePrefixId':_0x59da4a['id']},'transaction':_0x57955d})[_0x8488('0x29')](function(){return db[_0x8488('0x67')][_0x8488('0x50')]({'where':{'id':_0x59da4a[_0x8488('0x56')]},'raw':!![]})[_0x8488('0x29')](function(_0x1ff111){return createVoicePrefixExtensions(_0x59da4a,_0x1ff111,_0x57955d);});});});})['then'](function(){return db[_0x8488('0x32')]['findById'](_0x59da4a['id']);})[_0x8488('0x29')](respondWithResult(_0x56b35a,null))[_0x8488('0x4b')](handleError(_0x56b35a,null));};exports[_0x8488('0x73')]=function(_0x3349e3,_0x54283a,_0x1b96c5){return db[_0x8488('0x32')]['find']({'where':{'id':_0x3349e3[_0x8488('0x4d')]['id']}})['then'](handleEntityNotFound(_0x54283a,null))[_0x8488('0x29')](function(_0x15b919){if(_0x15b919){return _0x15b919[_0x8488('0x73')](_0x3349e3[_0x8488('0x55')][_0x8488('0x74')],_[_0x8488('0x75')](_0x3349e3[_0x8488('0x55')],[_0x8488('0x74'),'id'])||{})['spread'](function(_0x1ce726){for(var _0x53d87e=0x0;_0x53d87e<_0x3349e3['body'][_0x8488('0x74')][_0x8488('0x3d')];_0x53d87e+=0x1){socket[_0x8488('0x76')]('userVoicePrefix:save',{'UserId':Number(_0x3349e3['body'][_0x8488('0x74')][_0x53d87e]),'VoicePrefixId':Number(_0x3349e3[_0x8488('0x4d')]['id'])});}return _0x1ce726;});}})['then'](respondWithResult(_0x54283a,null))[_0x8488('0x4b')](handleError(_0x54283a,null));};exports[_0x8488('0x77')]=function(_0x924138,_0x173d35,_0x2a3acf){return db[_0x8488('0x32')]['find']({'where':{'id':_0x924138[_0x8488('0x4d')]['id']}})[_0x8488('0x29')](handleEntityNotFound(_0x173d35,null))[_0x8488('0x29')](function(_0x4a2fd9){if(_0x4a2fd9){return _0x4a2fd9[_0x8488('0x77')](_0x924138[_0x8488('0x37')][_0x8488('0x74')])['then'](function(){if(_[_0x8488('0x78')](_0x924138[_0x8488('0x37')]['ids'])){for(var _0x48860c=0x0;_0x48860c<_0x924138[_0x8488('0x37')][_0x8488('0x74')]['length'];_0x48860c+=0x1){socket[_0x8488('0x76')](_0x8488('0x79'),{'UserId':Number(_0x924138['query']['ids'][_0x48860c]),'VoicePrefixId':Number(_0x924138[_0x8488('0x4d')]['id'])});}}else{socket['emit'](_0x8488('0x79'),{'UserId':Number(_0x924138[_0x8488('0x37')][_0x8488('0x74')]),'VoicePrefixId':Number(_0x924138[_0x8488('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x173d35,null))[_0x8488('0x4b')](handleError(_0x173d35,null));};exports['getAgents']=function(_0x2b2989,_0x4d0d20,_0x2f137a){var _0x1a3a2d={};var _0x267401={};var _0x1e635a;var _0x31ab35;return db[_0x8488('0x32')][_0x8488('0x7a')]({'where':{'id':_0x2b2989[_0x8488('0x4d')]['id']}})[_0x8488('0x29')](handleEntityNotFound(_0x4d0d20,null))[_0x8488('0x29')](function(_0xce1d1a){if(_0xce1d1a){_0x1e635a=_0xce1d1a;_0x267401[_0x8488('0x36')]=_[_0x8488('0x38')](db[_0x8488('0x7b')]['rawAttributes']);_0x267401[_0x8488('0x37')]=_[_0x8488('0x38')](_0x2b2989['query']);_0x267401[_0x8488('0x39')]=_[_0x8488('0x3b')](_0x267401[_0x8488('0x36')],_0x267401[_0x8488('0x37')]);_0x1a3a2d[_0x8488('0x3a')]=_[_0x8488('0x3b')](_0x267401[_0x8488('0x36')],qs[_0x8488('0x3c')](_0x2b2989[_0x8488('0x37')][_0x8488('0x3c')]));_0x1a3a2d[_0x8488('0x3a')]=_0x1a3a2d['attributes'][_0x8488('0x3d')]?_0x1a3a2d[_0x8488('0x3a')]:_0x267401['model'];_0x1a3a2d[_0x8488('0x40')]=qs[_0x8488('0x41')](_0x2b2989[_0x8488('0x37')][_0x8488('0x41')]);_0x1a3a2d[_0x8488('0x42')]=qs['filters'](_['pick'](_0x2b2989[_0x8488('0x37')],_0x267401[_0x8488('0x39')]));if(_0x2b2989[_0x8488('0x37')][_0x8488('0x44')]){_0x1a3a2d[_0x8488('0x42')]=_[_0x8488('0x45')](_0x1a3a2d[_0x8488('0x42')],{'$or':_[_0x8488('0x31')](_0x1a3a2d[_0x8488('0x3a')],function(_0x167437){var _0x3152d0={};_0x3152d0[_0x167437]={'$like':'%'+_0x2b2989[_0x8488('0x37')][_0x8488('0x44')]+'%'};return _0x3152d0;})});}_0x1a3a2d=_[_0x8488('0x45')]({},_0x1a3a2d,_0x2b2989[_0x8488('0x4f')]);return _0x1e635a['getAgents'](_0x1a3a2d);}})[_0x8488('0x29')](function(_0x5d5234){if(_0x5d5234){_0x31ab35=_0x5d5234['length'];if(!_0x2b2989[_0x8488('0x37')][_0x8488('0x3e')](_0x8488('0x3f'))){_0x1a3a2d[_0x8488('0x21')]=qs[_0x8488('0x21')](_0x2b2989[_0x8488('0x37')][_0x8488('0x21')]);_0x1a3a2d[_0x8488('0x1f')]=qs[_0x8488('0x1f')](_0x2b2989[_0x8488('0x37')]['offset']);}return _0x1e635a[_0x8488('0x7c')](_0x1a3a2d);}})[_0x8488('0x29')](function(_0x179637){if(_0x179637){return _0x179637?{'count':_0x31ab35,'rows':_0x179637}:null;}})[_0x8488('0x29')](respondWithResult(_0x4d0d20,null))[_0x8488('0x4b')](handleError(_0x4d0d20,null));};exports[_0x8488('0x7d')]=function(_0x47f7c5,_0x2d7a33,_0x5b0d69){var _0x36f6e4={};var _0x3936b6={};var _0x4be018;var _0x57a4e7;return db[_0x8488('0x32')][_0x8488('0x7a')]({'where':{'id':_0x47f7c5[_0x8488('0x4d')]['id']}})[_0x8488('0x29')](handleEntityNotFound(_0x2d7a33,null))[_0x8488('0x29')](function(_0x5718a7){if(_0x5718a7){_0x4be018=_0x5718a7;_0x3936b6[_0x8488('0x36')]=_[_0x8488('0x38')](db['Team']['rawAttributes']);_0x3936b6[_0x8488('0x37')]=_[_0x8488('0x38')](_0x47f7c5[_0x8488('0x37')]);_0x3936b6['filters']=_['intersection'](_0x3936b6[_0x8488('0x36')],_0x3936b6[_0x8488('0x37')]);_0x36f6e4[_0x8488('0x3a')]=_['intersection'](_0x3936b6[_0x8488('0x36')],qs[_0x8488('0x3c')](_0x47f7c5[_0x8488('0x37')][_0x8488('0x3c')]));_0x36f6e4[_0x8488('0x3a')]=_0x36f6e4[_0x8488('0x3a')][_0x8488('0x3d')]?_0x36f6e4[_0x8488('0x3a')]:_0x3936b6[_0x8488('0x36')];_0x36f6e4[_0x8488('0x40')]=qs[_0x8488('0x41')](_0x47f7c5[_0x8488('0x37')][_0x8488('0x41')]);_0x36f6e4['where']=qs[_0x8488('0x39')](_[_0x8488('0x43')](_0x47f7c5[_0x8488('0x37')],_0x3936b6['filters']));if(_0x47f7c5[_0x8488('0x37')]['filter']){_0x36f6e4[_0x8488('0x42')]=_['merge'](_0x36f6e4['where'],{'$or':_[_0x8488('0x31')](_0x36f6e4['attributes'],function(_0x42f36b){var _0x186e19={};_0x186e19[_0x42f36b]={'$like':'%'+_0x47f7c5[_0x8488('0x37')][_0x8488('0x44')]+'%'};return _0x186e19;})});}_0x36f6e4=_['merge']({},_0x36f6e4,_0x47f7c5[_0x8488('0x4f')]);return _0x4be018[_0x8488('0x7d')](_0x36f6e4);}})[_0x8488('0x29')](function(_0x37ca73){if(_0x37ca73){_0x57a4e7=_0x37ca73['length'];if(!_0x47f7c5[_0x8488('0x37')][_0x8488('0x3e')](_0x8488('0x3f'))){_0x36f6e4[_0x8488('0x21')]=qs[_0x8488('0x21')](_0x47f7c5['query']['limit']);_0x36f6e4[_0x8488('0x1f')]=qs[_0x8488('0x1f')](_0x47f7c5[_0x8488('0x37')][_0x8488('0x1f')]);}return _0x4be018[_0x8488('0x7d')](_0x36f6e4);}})['then'](function(_0x4806f8){if(_0x4806f8){return _0x4806f8?{'count':_0x57a4e7,'rows':_0x4806f8}:null;}})['then'](respondWithResult(_0x2d7a33,null))[_0x8488('0x4b')](handleError(_0x2d7a33,null));};exports[_0x8488('0x7e')]=function(_0x2bab71,_0x5dacab,_0x30aab3){var _0x6c2e31=_0x2bab71['body'][_0x8488('0x74')];var _0x20cdc8;return db[_0x8488('0x7f')][_0x8488('0x49')]({'where':{'id':_0x6c2e31},'attributes':['id'],'include':[{'model':db[_0x8488('0x7b')],'as':_0x8488('0x80'),'attributes':['id',_0x8488('0x2f'),_0x8488('0x81'),_0x8488('0x82'),_0x8488('0x83')],'raw':!![]}]})[_0x8488('0x29')](function(_0x13add2){if(_0x13add2){_0x20cdc8=_0x13add2;var _0xa0c692=_['flatMap'](_0x13add2,function(_0x8fc636){var _0x17c6e1=_0x8fc636['get']({'plain':!![]});return _0x17c6e1['Agents'];});return db['VoicePrefix'][_0x8488('0x50')]({'where':{'id':_0x2bab71[_0x8488('0x4d')]['id']}})[_0x8488('0x29')](function(_0x4ba801){return db[_0x8488('0x53')]['transaction'](function(_0x447535){return _0x4ba801[_0x8488('0x7e')](_0x6c2e31,{'transaction':_0x447535})[_0x8488('0x29')](function(){return BPromise[_0x8488('0x84')](_0x20cdc8,function(_0x1e45ac){return db['TeamVoicePrefix'][_0x8488('0x85')]({'TeamId':_0x1e45ac['id'],'VoicePrefixId':_0x2bab71[_0x8488('0x4d')]['id']},{'transaction':_0x447535});});})[_0x8488('0x29')](function(){return BPromise[_0x8488('0x84')](_0xa0c692,function(_0x584f02){return db['UserVoicePrefix'][_0x8488('0x86')]({'where':{'UserId':_0x584f02['id'],'VoicePrefixId':_0x2bab71[_0x8488('0x4d')]['id']},'transaction':_0x447535});});})[_0x8488('0x29')](function(){_0xa0c692[_0x8488('0x87')](function(_0x2f8191){socket[_0x8488('0x76')](_0x8488('0x88'),{'UserId':_0x2f8191['id'],'VoicePrefixId':_0x4ba801['id']});});});});});}})[_0x8488('0x29')](respondWithStatusCode(_0x5dacab,null))[_0x8488('0x4b')](handleError(_0x5dacab,null));};exports[_0x8488('0x89')]=function(_0x1f5a8b,_0x1e7617,_0x315136){return db[_0x8488('0x7f')]['findAll']({'where':{'id':_0x1f5a8b['query'][_0x8488('0x74')]},'attributes':['id'],'include':[{'model':db[_0x8488('0x7b')],'as':_0x8488('0x80'),'attributes':['id'],'raw':!![]}]})[_0x8488('0x29')](handleEntityNotFound(_0x1e7617,null))[_0x8488('0x29')](function(_0x22f2de){var _0x280c77=_[_0x8488('0x31')](_0x22f2de,'id');var _0x2a822b=[];var _0x4d611a=[];var _0x46195e=squel[_0x8488('0x8a')]();_0x46195e[_0x8488('0x8b')]('tq.TeamId')[_0x8488('0x8c')](_0x8488('0x8d'),'tq')[_0x8488('0x8e')](_0x8488('0x8f'),'ut',_0x8488('0x90'))[_0x8488('0x42')](_0x8488('0x91'),_0x1f5a8b[_0x8488('0x4d')]['id']);for(var _0x4a7be5=0x0;_0x4a7be5<_0x22f2de['length'];_0x4a7be5+=0x1){let _0x548a7a=_0x22f2de[_0x4a7be5];for(var _0x215d7e=0x0;_0x215d7e<_0x548a7a[_0x8488('0x80')][_0x8488('0x3d')];_0x215d7e+=0x1){let _0x1865f5=_0x548a7a[_0x8488('0x80')][_0x215d7e];var _0x2966ec=_0x46195e['clone']();_0x2966ec[_0x8488('0x42')]('ut.UserId\x20=\x20?',_0x1865f5['id']);_0x4d611a[_0x8488('0x69')](db[_0x8488('0x53')][_0x8488('0x37')](_0x2966ec[_0x8488('0x92')](),{'type':db[_0x8488('0x53')]['QueryTypes'][_0x8488('0x93')]})[_0x8488('0x29')](function(_0x300294){if(_0x300294[_0x8488('0x3d')]===0x1){return _0x1865f5['id'];}else{var _0x14e4a9=_[_0x8488('0x94')](_[_0x8488('0x31')](_0x300294,'TeamId'),function(_0x36600b){return _['includes'](_0x280c77,_0x36600b);});if(_0x14e4a9){return _0x1865f5['id'];}}}));}}return BPromise['all'](_0x4d611a)[_0x8488('0x29')](function(_0x323343){_0x2a822b=_(_0x2a822b)['union'](_0x323343)[_0x8488('0x95')]()[_0x8488('0x96')]();return db[_0x8488('0x32')][_0x8488('0x50')]({'where':{'id':_0x1f5a8b[_0x8488('0x4d')]['id']}})['then'](function(_0x541b76){return db[_0x8488('0x53')][_0x8488('0x54')](function(_0x3e2f85){return _0x541b76[_0x8488('0x89')](_0x1f5a8b[_0x8488('0x37')]['ids'],{'transaction':_0x3e2f85})['then'](function(){if(!_[_0x8488('0x97')](_0x2a822b)){return _0x541b76[_0x8488('0x77')](_0x2a822b,{'transaction':_0x3e2f85});}})[_0x8488('0x29')](function(){_0x2a822b[_0x8488('0x87')](function(_0x258985){socket[_0x8488('0x76')](_0x8488('0x79'),{'UserId':_0x258985,'VoicePrefixId':_0x541b76['id']});});});});});});})[_0x8488('0x29')](respondWithStatusCode(_0x1e7617,null))[_0x8488('0x4b')](handleError(_0x1e7617,null));};
\ No newline at end of file
index 3f37ba0..6367ce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb64=['remove','emit','hasOwnProperty','hook','exports','events','VoicePrefix','save'];(function(_0x10a0b0,_0x405ea7){var _0x1fdbed=function(_0x2f3112){while(--_0x2f3112){_0x10a0b0['push'](_0x10a0b0['shift']());}};_0x1fdbed(++_0x405ea7);}(_0xbb64,0x8d));var _0x4bb6=function(_0xb4bcc7,_0x40f61a){_0xb4bcc7=_0xb4bcc7-0x0;var _0x499781=_0xbb64[_0xb4bcc7];return _0x499781;};'use strict';var EventEmitter=require(_0x4bb6('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0x4bb6('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4bb6('0x2'),'afterUpdate':'update','afterDestroy':_0x4bb6('0x3')};function emitEvent(_0x5ce60d){return function(_0x537e85,_0x36f294,_0x45cd0a){VoicePrefixEvents[_0x4bb6('0x4')](_0x5ce60d+':'+_0x537e85['id'],_0x537e85);VoicePrefixEvents[_0x4bb6('0x4')](_0x5ce60d,_0x537e85);_0x45cd0a(null);};}for(var e in events){if(events[_0x4bb6('0x5')](e)){var event=events[e];VoicePrefix[_0x4bb6('0x6')](e,emitEvent(event));}}module[_0x4bb6('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x43aa=['hasOwnProperty','hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove','emit'];(function(_0x27f33e,_0x5a1105){var _0x202ea6=function(_0x43aec9){while(--_0x43aec9){_0x27f33e['push'](_0x27f33e['shift']());}};_0x202ea6(++_0x5a1105);}(_0x43aa,0xea));var _0xa43a=function(_0x45847f,_0x3f579d){_0x45847f=_0x45847f-0x0;var _0x5439d0=_0x43aa[_0x45847f];return _0x5439d0;};'use strict';var EventEmitter=require(_0xa43a('0x0'));var VoicePrefix=require(_0xa43a('0x1'))['db'][_0xa43a('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xa43a('0x3')](0x0);var events={'afterCreate':_0xa43a('0x4'),'afterUpdate':_0xa43a('0x5'),'afterDestroy':_0xa43a('0x6')};function emitEvent(_0x129690){return function(_0x2f1876,_0x31ffe9,_0x4cf25a){VoicePrefixEvents[_0xa43a('0x7')](_0x129690+':'+_0x2f1876['id'],_0x2f1876);VoicePrefixEvents['emit'](_0x129690,_0x2f1876);_0x4cf25a(null);};}for(var e in events){if(events[_0xa43a('0x8')](e)){var event=events[e];VoicePrefix[_0xa43a('0x9')](e,emitEvent(event));}}module[_0xa43a('0xa')]=VoicePrefixEvents;
\ No newline at end of file
index 45ec615..b27c72a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc9=['./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0xacb1e2,_0x55e0ab){var _0x463815=function(_0x413c3b){while(--_0x413c3b){_0xacb1e2['push'](_0xacb1e2['shift']());}};_0x463815(++_0x55e0ab);}(_0xbcc9,0x1f3));var _0x9bcc=function(_0x3c0b75,_0x3b5cb3){_0x3c0b75=_0x3c0b75-0x0;var _0x101b35=_0xbcc9[_0x3c0b75];return _0x101b35;};'use strict';var _=require(_0x9bcc('0x0'));var util=require(_0x9bcc('0x1'));var logger=require('../../config/logger')(_0x9bcc('0x2'));var moment=require(_0x9bcc('0x3'));var BPromise=require(_0x9bcc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9bcc('0x5'));var rimraf=require(_0x9bcc('0x6'));var config=require(_0x9bcc('0x7'));var attributes=require(_0x9bcc('0x8'));module[_0x9bcc('0x9')]=function(_0x54e248,_0x44d169){return _0x54e248[_0x9bcc('0xa')](_0x9bcc('0xb'),attributes,{'tableName':_0x9bcc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0b1=['VoicePrefix','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes','define'];(function(_0x4f72d4,_0x246301){var _0x3b1b6=function(_0xdb678d){while(--_0xdb678d){_0x4f72d4['push'](_0x4f72d4['shift']());}};_0x3b1b6(++_0x246301);}(_0xa0b1,0xe8));var _0x1a0b=function(_0x5e7692,_0x1caa40){_0x5e7692=_0x5e7692-0x0;var _0x120367=_0xa0b1[_0x5e7692];return _0x120367;};'use strict';var _=require('lodash');var util=require(_0x1a0b('0x0'));var logger=require(_0x1a0b('0x1'))('api');var moment=require(_0x1a0b('0x2'));var BPromise=require(_0x1a0b('0x3'));var rp=require(_0x1a0b('0x4'));var fs=require('fs');var path=require(_0x1a0b('0x5'));var rimraf=require(_0x1a0b('0x6'));var config=require(_0x1a0b('0x7'));var attributes=require(_0x1a0b('0x8'));module['exports']=function(_0x4c9cc9,_0x117e57){return _0x4c9cc9[_0x1a0b('0x9')](_0x1a0b('0xa'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67012de..c456ac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf108=['randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x976554,_0x472a21){var _0x155a51=function(_0x1b36c2){while(--_0x1b36c2){_0x976554['push'](_0x976554['shift']());}};_0x155a51(++_0x472a21);}(_0xf108,0x1d9));var _0x8f10=function(_0xbce76a,_0xa6b6c8){_0xbce76a=_0xbce76a-0x0;var _0x2f7cc7=_0xf108[_0xbce76a];return _0x2f7cc7;};'use strict';var _=require(_0x8f10('0x0'));var util=require('util');var moment=require(_0x8f10('0x1'));var BPromise=require(_0x8f10('0x2'));var rs=require(_0x8f10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8f10('0x4'))(_0x8f10('0x5'));var config=require(_0x8f10('0x6'));var jayson=require(_0x8f10('0x7'));var client=jayson[_0x8f10('0x8')][_0x8f10('0x9')]({'port':0x232a});config[_0x8f10('0xa')]=_[_0x8f10('0xb')](config[_0x8f10('0xa')],{'host':_0x8f10('0xc'),'port':0x18eb});var socket=require(_0x8f10('0xd'))(new Redis(config['redis']));require(_0x8f10('0xe'))[_0x8f10('0xf')](socket);function respondWithRpcPromise(_0x1bbe48,_0x1d863a,_0x37527d){return new BPromise(function(_0x7003f3,_0x2e00f7){return client[_0x8f10('0x10')](_0x1bbe48,_0x37527d)[_0x8f10('0x11')](function(_0x23c485){logger[_0x8f10('0x12')](_0x8f10('0x13'),_0x1d863a,_0x8f10('0x14'));logger[_0x8f10('0x15')](_0x8f10('0x16'),_0x1d863a,'request\x20sent',JSON['stringify'](_0x23c485));if(_0x23c485[_0x8f10('0x17')]){if(_0x23c485[_0x8f10('0x17')][_0x8f10('0x18')]===0x1f4){logger[_0x8f10('0x17')](_0x8f10('0x13'),_0x1d863a,_0x23c485[_0x8f10('0x17')][_0x8f10('0x19')]);return _0x2e00f7(_0x23c485[_0x8f10('0x17')][_0x8f10('0x19')]);}logger['error'](_0x8f10('0x13'),_0x1d863a,_0x23c485[_0x8f10('0x17')][_0x8f10('0x19')]);return _0x7003f3(_0x23c485['error'][_0x8f10('0x19')]);}else{logger[_0x8f10('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x1d863a,_0x8f10('0x14'));_0x7003f3(_0x23c485[_0x8f10('0x1a')][_0x8f10('0x19')]);}})[_0x8f10('0x1b')](function(_0x48eb4f){logger['error'](_0x8f10('0x13'),_0x1d863a,_0x48eb4f);_0x2e00f7(_0x48eb4f);});});}
\ No newline at end of file
+var _0xcfcb=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0xfa3fe6,_0x1dc469){var _0x16a55e=function(_0xcd7029){while(--_0xcd7029){_0xfa3fe6['push'](_0xfa3fe6['shift']());}};_0x16a55e(++_0x1dc469);}(_0xcfcb,0x7a));var _0xbcfc=function(_0x36975e,_0x103ce0){_0x36975e=_0x36975e-0x0;var _0x51ded9=_0xcfcb[_0x36975e];return _0x51ded9;};'use strict';var _=require(_0xbcfc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbcfc('0x1'));var fs=require('fs');var Redis=require(_0xbcfc('0x2'));var db=require(_0xbcfc('0x3'))['db'];var utils=require(_0xbcfc('0x4'));var logger=require(_0xbcfc('0x5'))(_0xbcfc('0x6'));var config=require(_0xbcfc('0x7'));var jayson=require(_0xbcfc('0x8'));var client=jayson[_0xbcfc('0x9')][_0xbcfc('0xa')]({'port':0x232a});config[_0xbcfc('0xb')]=_[_0xbcfc('0xc')](config[_0xbcfc('0xb')],{'host':_0xbcfc('0xd'),'port':0x18eb});var socket=require(_0xbcfc('0xe'))(new Redis(config[_0xbcfc('0xb')]));require(_0xbcfc('0xf'))['register'](socket);function respondWithRpcPromise(_0x4f80d7,_0x4d8e4b,_0x541fe2){return new BPromise(function(_0x2fda61,_0x39dbff){return client[_0xbcfc('0x10')](_0x4f80d7,_0x541fe2)[_0xbcfc('0x11')](function(_0x35f4d6){logger[_0xbcfc('0x12')](_0xbcfc('0x13'),_0x4d8e4b,'request\x20sent');logger['debug'](_0xbcfc('0x14'),_0x4d8e4b,_0xbcfc('0x15'),JSON['stringify'](_0x35f4d6));if(_0x35f4d6[_0xbcfc('0x16')]){if(_0x35f4d6['error'][_0xbcfc('0x17')]===0x1f4){logger[_0xbcfc('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x4d8e4b,_0x35f4d6[_0xbcfc('0x16')][_0xbcfc('0x18')]);return _0x39dbff(_0x35f4d6[_0xbcfc('0x16')][_0xbcfc('0x18')]);}logger[_0xbcfc('0x16')](_0xbcfc('0x13'),_0x4d8e4b,_0x35f4d6['error'][_0xbcfc('0x18')]);return _0x2fda61(_0x35f4d6[_0xbcfc('0x16')]['message']);}else{logger[_0xbcfc('0x12')](_0xbcfc('0x13'),_0x4d8e4b,'request\x20sent');_0x2fda61(_0x35f4d6['result'][_0xbcfc('0x18')]);}})[_0xbcfc('0x19')](function(_0x24347f){logger['error'](_0xbcfc('0x13'),_0x4d8e4b,_0x24347f);_0x39dbff(_0x24347f);});});}
\ No newline at end of file
index b671ba9..392cb1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb921=['length','voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener','register'];(function(_0x5cbe77,_0x47d45d){var _0x546a1e=function(_0x1c1244){while(--_0x1c1244){_0x5cbe77['push'](_0x5cbe77['shift']());}};_0x546a1e(++_0x47d45d);}(_0xb921,0x16a));var _0x1b92=function(_0x144d9c,_0x3ec497){_0x144d9c=_0x144d9c-0x0;var _0x54db44=_0xb921[_0x144d9c];return _0x54db44;};'use strict';var VoicePrefixEvents=require(_0x1b92('0x0'));var events=[_0x1b92('0x1'),_0x1b92('0x2'),_0x1b92('0x3')];function createListener(_0x87553a,_0x4de8de){return function(_0x51e457){_0x4de8de[_0x1b92('0x4')](_0x87553a,_0x51e457);};}function removeListener(_0xc3832e,_0x1e49a8){return function(){VoicePrefixEvents[_0x1b92('0x5')](_0xc3832e,_0x1e49a8);};}exports[_0x1b92('0x6')]=function(_0x29a1db){for(var _0x4358e3=0x0,_0x8a6282=events[_0x1b92('0x7')];_0x4358e3<_0x8a6282;_0x4358e3++){var _0x352406=events[_0x4358e3];var _0x1545f9=createListener(_0x1b92('0x8')+_0x352406,_0x29a1db);VoicePrefixEvents['on'](_0x352406,_0x1545f9);}};
\ No newline at end of file
+var _0x7dc2=['remove','update','emit','removeListener','register','length','voicePrefix:'];(function(_0x262b29,_0x87a7b0){var _0x381146=function(_0x1e07b5){while(--_0x1e07b5){_0x262b29['push'](_0x262b29['shift']());}};_0x381146(++_0x87a7b0);}(_0x7dc2,0x19d));var _0x27dc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7dc2[_0x321bb2];return _0x9c12ed;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=['save',_0x27dc('0x0'),_0x27dc('0x1')];function createListener(_0x49a9e7,_0x426f56){return function(_0x57d4b4){_0x426f56[_0x27dc('0x2')](_0x49a9e7,_0x57d4b4);};}function removeListener(_0x29ba23,_0x52337b){return function(){VoicePrefixEvents[_0x27dc('0x3')](_0x29ba23,_0x52337b);};}exports[_0x27dc('0x4')]=function(_0x5a442a){for(var _0x29eaac=0x0,_0x4d2e10=events[_0x27dc('0x5')];_0x29eaac<_0x4d2e10;_0x29eaac++){var _0x3b3eee=events[_0x29eaac];var _0x5181ab=createListener(_0x27dc('0x6')+_0x3b3eee,_0x5a442a);VoicePrefixEvents['on'](_0x3b3eee,_0x5181ab);}};
\ No newline at end of file
index 944dba8..b1d314f 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(_0x4794b5,_0x34efd1){var _0x1ff218=function(_0x1dd96f){while(--_0x1dd96f){_0x4794b5['push'](_0x4794b5['shift']());}};_0x1ff218(++_0x34efd1);}(_0xb10b,0x12a));var _0xbb10=function(_0x54afe3,_0x258ce5){_0x54afe3=_0x54afe3-0x0;var _0x3e76d6=_0xb10b[_0x54afe3];return _0x3e76d6;};'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(_0x584229,_0x11c7c9){var _0x334eae=function(_0x5ceba4){while(--_0x5ceba4){_0x584229['push'](_0x584229['shift']());}};_0x334eae(++_0x11c7c9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 00ca0cf..e465f41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16c8=['#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','name','outbound','inbound','STRING','leastrecent','fewestcalls','random','rrordered','strategy','type','getDataValue','preview','booked','roundrobin','includes','INTEGER','yes','ENUM','all','once','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','progressive','power','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#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)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x16c8,0x9b));var _0x816c=function(_0x852136,_0xbb7d04){_0x852136=_0x852136-0x0;var _0x1169b9=_0x16c8[_0x852136];return _0x1169b9;};'use strict';var Sequelize=require(_0x816c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x816c('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0x816c('0x2')),'allowNull':![],'defaultValue':_0x816c('0x3')},'musiconhold':{'type':Sequelize[_0x816c('0x4')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x816c('0x5'),_0x816c('0x6'),_0x816c('0x7'),'rrmemory','linear','wrandom',_0x816c('0x8')),'allowNull':![],'defaultValue':'ringall','set':function(_0x25ced9){this['setDataValue'](_0x816c('0x9'),_0x25ced9?_0x25ced9:'rrmemory');},'get':function(){var _0xb58a38=this['getDataValue'](_0x816c('0xa'));var _0x3ed92d=this[_0x816c('0xb')]('dialMethod');var _0x1f0f38=this[_0x816c('0xb')]('strategy');if(_0xb58a38===_0x816c('0x2')){if(_0x3ed92d===_0x816c('0xc')){return null;}if(_0x3ed92d===_0x816c('0xd')&&!['rrmemory',_0x816c('0xe')][_0x816c('0xf')](_0x1f0f38)){this['setDataValue'](_0x816c('0x9'),'rrmemory');}}return _0x1f0f38;}},'servicelevel':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x816c('0x10')](0xb)},'timeout':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x816c('0x4')]},'weight':{'type':Sequelize[_0x816c('0x10')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x816c('0x11'),'no'),'defaultValue':_0x816c('0x11')},'autopause':{'type':Sequelize[_0x816c('0x12')]('yes','no',_0x816c('0x13')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x816c('0x12')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x816c('0x12')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x816c('0x12')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no'),'defaultValue':_0x816c('0x11')},'announce_holdtime':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no',_0x816c('0x14')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x816c('0x4')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no')},'announce_position_limit':{'type':Sequelize[_0x816c('0x10')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x816c('0x12')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x816c('0x4')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x816c('0x4')]},'queue_youarenext':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x816c('0x4')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x816c('0x4')]},'queue_quantity1':{'type':Sequelize[_0x816c('0x4')]},'queue_quantity2':{'type':Sequelize[_0x816c('0x4')]},'queue_periodic_announce':{'type':Sequelize[_0x816c('0x4')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x816c('0x15')],'set':function(_0x175614){this[_0x816c('0x16')](_0x816c('0x17'),_0x175614?_0x175614[_0x816c('0x18')](','):[]);},'get':function(){return this['getDataValue'](_0x816c('0x17'))?this[_0x816c('0xb')](_0x816c('0x17'))[_0x816c('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0x816c('0x4')],'defaultValue':'yes','set':function(_0x22c3e2){this[_0x816c('0x16')]('joinempty',_0x22c3e2?_0x22c3e2[_0x816c('0x18')](','):undefined);},'get':function(){return this[_0x816c('0xb')](_0x816c('0x1a'))?this[_0x816c('0xb')](_0x816c('0x1a'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x816c('0x4')],'defaultValue':'no','set':function(_0x698b2f){this['setDataValue'](_0x816c('0x1b'),_0x698b2f?_0x698b2f['join'](','):undefined);},'get':function(){return this[_0x816c('0xb')]('leavewhenempty')?this[_0x816c('0xb')](_0x816c('0x1b'))[_0x816c('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x816c('0x12')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x816c('0x12')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x11'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x816c('0x4')]},'description':{'type':Sequelize[_0x816c('0x4')]},'acw':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':0x0,'set':function(_0x40042a){this[_0x816c('0x16')](_0x816c('0x1d'),_0x40042a);if(_0x40042a){if(this[_0x816c('0xb')](_0x816c('0x1e'))<0x2){this[_0x816c('0x16')](_0x816c('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x816c('0x10')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x816c('0x12')](_0x816c('0xc'),_0x816c('0x1f'),_0x816c('0x20'),'predictive','booked'),'defaultValue':_0x816c('0x1f'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0x816c('0x10')](0x4)[_0x816c('0x21')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x816c('0x22')},'dialLimitQueue':{'type':Sequelize[_0x816c('0x10')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x816c('0x23')](0x2)[_0x816c('0x21')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x816c('0x24')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x816c('0x25'),_0x816c('0x26')),'defaultValue':'dropRate','comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x816c('0x27')},'dialOriginateCallerIdName':{'type':Sequelize[_0x816c('0x4')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x816c('0x4')]},'dialOriginateTimeout':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x28')},'dialQueueOptions':{'type':Sequelize[_0x816c('0x4')],'defaultValue':_0x816c('0x29'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x2a')},'dialQueueProject':{'type':Sequelize[_0x816c('0x4')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x816c('0x21')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x2b')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x816c('0x10')](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x816c('0x2c')},'dialBusyMaxRetry':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x2d')},'dialBusyRetryFrequency':{'type':Sequelize[_0x816c('0x10')](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x816c('0x2e')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x816c('0x2f')},'dialTimezone':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x816c('0x30')},'dialPrefix':{'type':Sequelize[_0x816c('0x4')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x816c('0x12')](_0x816c('0x31'),_0x816c('0x32'),_0x816c('0x33')),'defaultValue':_0x816c('0x31')},'dialAMDActive':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x816c('0x10')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x816c('0x10')](0x9)[_0x816c('0x21')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x816c('0x34')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x816c('0x10')](0x9)[_0x816c('0x21')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x816c('0x35')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x816c('0x10')](0x9)[_0x816c('0x21')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x816c('0x36')},'dialAMDMinWordLength':{'type':Sequelize[_0x816c('0x10')](0x9)[_0x816c('0x21')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x816c('0x37')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x816c('0x21')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x816c('0x38')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x816c('0x10')](0x9)[_0x816c('0x21')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x816c('0x39')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x816c('0x21')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x816c('0x10')](0x9)[_0x816c('0x21')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x816c('0x3a')},'dialRecallMeTimeout':{'type':Sequelize[_0x816c('0x10')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x816c('0x3b')},'dialRecallInQueue':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':0x0,'comment':_0x816c('0x3c')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x816c('0x3d'),_0x816c('0x3e')),'defaultValue':_0x816c('0x3d')},'dialQueueProject2':{'type':Sequelize[_0x816c('0x4')],'comment':_0x816c('0x3f')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x816c('0x10')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x816c('0x40')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x816c('0x41')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x816c('0x10')](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x816c('0x42')},'dialDropMaxRetry':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x43')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x816c('0x21')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x44')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x816c('0x10')](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x816c('0x10')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x45')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x816c('0x10')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x816c('0x46')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x816c('0x10')](0x5)[_0x816c('0x21')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x816c('0x47')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x816c('0x10')],'allowNull':!![],'comment':_0x816c('0x48')},'mandatoryDisposition':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':![],'comment':_0x816c('0x49'),'set':function(_0x48ac73){if(!_0x48ac73)this['setDataValue'](_0x816c('0x4a'),null);this[_0x816c('0x16')]('mandatoryDisposition',_0x48ac73);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x816c('0x10')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x816c('0x10')](0x3)[_0x816c('0x21')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x816c('0x1c')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2df6=['#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','#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)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','sequelize','STRING','name','ENUM','inbound','outbound','default','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','getDataValue','type','dialMethod','preview','booked','includes','INTEGER','yes','all','once','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','acw','wrapuptime','BOOLEAN','progressive','power','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','dropRate','Only\x20for\x20predictive\x20method.','FLOAT','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x2df6,0x76));var _0x62df=function(_0x98c519,_0x541919){_0x98c519=_0x98c519-0x0;var _0x3aa2d8=_0x2df6[_0x98c519];return _0x3aa2d8;};'use strict';var Sequelize=require(_0x62df('0x0'));module['exports']={'name':{'type':Sequelize[_0x62df('0x1')],'allowNull':![],'unique':_0x62df('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x4'),_0x62df('0x5')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x62df('0x1')],'defaultValue':_0x62df('0x6')},'announce':{'type':Sequelize[_0x62df('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x62df('0x3')]('rr','ringall',_0x62df('0x7'),_0x62df('0x8'),_0x62df('0x9'),_0x62df('0xa'),_0x62df('0xb'),_0x62df('0xc'),_0x62df('0xd')),'allowNull':![],'defaultValue':_0x62df('0xe'),'set':function(_0x52bfbe){this[_0x62df('0xf')](_0x62df('0x10'),_0x52bfbe?_0x52bfbe:_0x62df('0xa'));},'get':function(){var _0x5310a0=this[_0x62df('0x11')](_0x62df('0x12'));var _0x189ccd=this[_0x62df('0x11')](_0x62df('0x13'));var _0x44fa33=this['getDataValue'](_0x62df('0x10'));if(_0x5310a0==='outbound'){if(_0x189ccd===_0x62df('0x14')){return null;}if(_0x189ccd===_0x62df('0x15')&&![_0x62df('0xa'),'roundrobin'][_0x62df('0x16')](_0x44fa33)){this[_0x62df('0xf')]('strategy',_0x62df('0xa'));}}return _0x44fa33;}},'servicelevel':{'type':Sequelize[_0x62df('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x62df('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x62df('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x62df('0x1')]},'weight':{'type':Sequelize[_0x62df('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x62df('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x62df('0x3')]('yes','no'),'defaultValue':_0x62df('0x18')},'autopause':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no',_0x62df('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x62df('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x62df('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x62df('0x3')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x62df('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x62df('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x62df('0x17')](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['ENUM'](_0x62df('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x62df('0x3')]('yes','no'),'defaultValue':_0x62df('0x18')},'announce_holdtime':{'type':Sequelize[_0x62df('0x3')]('yes','no',_0x62df('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x62df('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no')},'announce_position_limit':{'type':Sequelize[_0x62df('0x17')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x62df('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x62df('0x1')]},'queue_youarenext':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x62df('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x62df('0x1')]},'queue_quantity1':{'type':Sequelize[_0x62df('0x1')]},'queue_quantity2':{'type':Sequelize[_0x62df('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x62df('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x62df('0x1b')],'set':function(_0x48615b){this[_0x62df('0xf')](_0x62df('0x1c'),_0x48615b?_0x48615b['join'](','):[]);},'get':function(){return this[_0x62df('0x11')](_0x62df('0x1c'))?this['getDataValue']('periodic_announce')[_0x62df('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x62df('0x1')],'defaultValue':_0x62df('0x18'),'set':function(_0x2fed9b){this[_0x62df('0xf')](_0x62df('0x1e'),_0x2fed9b?_0x2fed9b[_0x62df('0x1f')](','):undefined);},'get':function(){return this[_0x62df('0x11')](_0x62df('0x1e'))?this[_0x62df('0x11')](_0x62df('0x1e'))[_0x62df('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x2144fc){this[_0x62df('0xf')]('leavewhenempty',_0x2144fc?_0x2144fc[_0x62df('0x1f')](','):undefined);},'get':function(){return this[_0x62df('0x11')](_0x62df('0x20'))?this[_0x62df('0x11')](_0x62df('0x20'))[_0x62df('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x62df('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x62df('0x1')]},'description':{'type':Sequelize[_0x62df('0x1')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x4ff8e7){this[_0x62df('0xf')](_0x62df('0x21'),_0x4ff8e7);if(_0x4ff8e7){if(this[_0x62df('0x11')](_0x62df('0x22'))<0x2){this[_0x62df('0xf')](_0x62df('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x62df('0x23')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x14'),_0x62df('0x24'),_0x62df('0x25'),_0x62df('0x26'),_0x62df('0x15')),'defaultValue':'progressive','comment':_0x62df('0x27')},'dialLimitChannel':{'type':Sequelize[_0x62df('0x17')](0x4)[_0x62df('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x62df('0x29')},'dialLimitQueue':{'type':Sequelize[_0x62df('0x17')](0x4)[_0x62df('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x62df('0x2a')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0x62df('0x28')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x62df('0x2b')},'dialPredictiveOptimization':{'type':Sequelize['ENUM']('agentBusyFactor',_0x62df('0x2c')),'defaultValue':_0x62df('0x2c'),'comment':_0x62df('0x2d')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x62df('0x2e')](0x2)[_0x62df('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x62df('0x2f')},'dialPredictiveInterval':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x62df('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0x62df('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x62df('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x31')},'dialQueueOptions':{'type':Sequelize[_0x62df('0x1')],'defaultValue':_0x62df('0x32'),'comment':_0x62df('0x33')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x34')},'dialQueueProject':{'type':Sequelize[_0x62df('0x1')],'comment':_0x62df('0x35')},'dialCongestionMaxRetry':{'type':Sequelize[_0x62df('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x36')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x37')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x62df('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x38')},'dialBusyRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x39')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'defaultValue':0x3,'comment':_0x62df('0x3a')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x3b')},'dialGlobalMaxRetry':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x62df('0x3c')},'dialTimezone':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x62df('0x1')],'defaultValue':_0x62df('0x3d')},'dialPrefix':{'type':Sequelize[_0x62df('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x3e'),'never','onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x62df('0x23')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x62df('0x3f')},'dialAMDGreeting':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x62df('0x40')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x62df('0x41')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x62df('0x42')},'dialAMDMinWordLength':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x62df('0x43')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x62df('0x28')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x62df('0x44')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x62df('0x45')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x62df('0x46')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x62df('0x17')](0x9)[_0x62df('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x62df('0x47')},'dialRecallMeTimeout':{'type':Sequelize[_0x62df('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x62df('0x48')},'dialRecallInQueue':{'type':Sequelize[_0x62df('0x23')],'defaultValue':0x0,'comment':_0x62df('0x49')},'dialOrderByScheduledAt':{'type':Sequelize[_0x62df('0x3')](_0x62df('0x4a'),_0x62df('0x4b')),'defaultValue':_0x62df('0x4a')},'dialQueueProject2':{'type':Sequelize[_0x62df('0x1')],'comment':_0x62df('0x35')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x62df('0x23')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x62df('0x23')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x62df('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x62df('0x4c')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x62df('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x62df('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x4d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x4e')},'dialDropMaxRetry':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x4f')},'dialDropRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x50')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x62df('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x51')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x52')},'dialMachineMaxRetry':{'type':Sequelize[_0x62df('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x53')},'dialMachineRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)[_0x62df('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x54')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x62df('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62df('0x55')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x62df('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62df('0x56')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x62df('0x17')],'allowNull':!![],'comment':_0x62df('0x57')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x62df('0x58'),'set':function(_0x10a8cf){if(!_0x10a8cf)this[_0x62df('0xf')]('mandatoryDispositionPauseId',null);this[_0x62df('0xf')]('mandatoryDisposition',_0x10a8cf);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x62df('0x17')](0x3)[_0x62df('0x28')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x62df('0x23')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x62df('0x23')],'defaultValue':![]}};
\ No newline at end of file
index be0cc90..31baacb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202a=['addBlackLists','cm_hopper_black','NOW()','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','path','sox','fs-extra','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','then','QueueCampaigns','outbound','ignore','map','value','includes','type','find','name','UserProfileResource','error','stack','VoiceQueue','fieldName','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','rawAttributes','intersection','catch','create','body','get','user','VoiceQueues','inbound','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','options','omit','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','getHoppers','CmHopper','getHopperHistories','CmHopperHistory','getHopperFinals','findOne','CmHopperFinal','getHopperBlacks','VoiceQueueId','CmHopperBlack','getTeams','Team','User','Agents','voicePause','interface','flatMap','forEach','penalty','addTeams','each','TeamVoiceQueue','UserVoiceQueue','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','emit','userVoiceQueue:save','ids','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','VoiceQueueId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','all','union','transaction','isEmpty','userVoiceQueue:remove','addAgents','spread','online','removeAgents','isArray','getAgents','getMembers','CmList','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','phone','scheduledAt','createdAt','select','CmListId','ListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','cm_hopper','ContactId','fromQuery','cm_hopper_additional_phones','CmHopperId','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','ci.ItemClass=?','PHONE','removeLists','getBlackLists'];(function(_0x2b20f0,_0x315f2f){var _0x30b97c=function(_0x44d317){while(--_0x44d317){_0x2b20f0['push'](_0x2b20f0['shift']());}};_0x30b97c(++_0x315f2f);}(_0x202a,0xc0));var _0xa202=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x202a[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa202('0x0'));var zipdir=require(_0xa202('0x1'));var jsonpatch=require(_0xa202('0x2'));var rp=require('request-promise');var moment=require(_0xa202('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa202('0x4'));var sox=require(_0xa202('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa202('0x6'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa202('0x7'));var deskjs=require(_0xa202('0x8'));var toCsv=require(_0xa202('0x9'));var querystring=require(_0xa202('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa202('0xb'));var qs=require(_0xa202('0xc'));var as=require(_0xa202('0xd'));var hardwareService=require(_0xa202('0xe'));var logger=require('../../config/logger')(_0xa202('0xf'));var utils=require('../../config/utils');var config=require(_0xa202('0x10'));var licenseUtil=require(_0xa202('0x11'));var db=require(_0xa202('0x12'))['db'];config['redis']=_[_0xa202('0x13')](config[_0xa202('0x14')],{'host':_0xa202('0x15'),'port':0x18eb});var socket=require(_0xa202('0x16'))(new Redis(config[_0xa202('0x14')]));require(_0xa202('0x17'))['register'](socket);function respondWithStatusCode(_0x13510c,_0x3b3ec9){_0x3b3ec9=_0x3b3ec9||0xcc;return function(_0x3880ad){if(_0x3880ad){return _0x13510c[_0xa202('0x18')](_0x3b3ec9);}return _0x13510c[_0xa202('0x19')](_0x3b3ec9)['end']();};}function respondWithResult(_0x331df8,_0x30b18b){_0x30b18b=_0x30b18b||0xc8;return function(_0x1221a2){if(_0x1221a2){return _0x331df8[_0xa202('0x19')](_0x30b18b)[_0xa202('0x1a')](_0x1221a2);}};}function respondWithFilteredResult(_0x214a08,_0x5d348c){return function(_0x44a1b6){if(_0x44a1b6){var _0x53ff78=typeof _0x5d348c[_0xa202('0x1b')]==='undefined'&&typeof _0x5d348c[_0xa202('0x1c')]===_0xa202('0x1d');var _0x130c45=_0x44a1b6[_0xa202('0x1e')];var _0x391e82=_0x53ff78?0x0:_0x5d348c['offset'];var _0x1da0e2=_0x53ff78?_0x44a1b6[_0xa202('0x1e')]:_0x5d348c[_0xa202('0x1b')]+_0x5d348c[_0xa202('0x1c')];var _0x188195;if(_0x1da0e2>=_0x130c45){_0x1da0e2=_0x130c45;_0x188195=0xc8;}else{_0x188195=0xce;}_0x214a08['status'](_0x188195);return _0x214a08[_0xa202('0x1f')](_0xa202('0x20'),_0x391e82+'-'+_0x1da0e2+'/'+_0x130c45)[_0xa202('0x1a')](_0x44a1b6);}return null;};}function patchUpdates(_0x44801a){return function(_0x5845f5){try{jsonpatch[_0xa202('0x21')](_0x5845f5,_0x44801a,!![]);}catch(_0x192d3c){return BPromise['reject'](_0x192d3c);}return _0x5845f5['save']();};}function saveUpdates(_0x7991c7,_0x2f5714){return function(_0x47ceb1){if(_0x47ceb1){return _0x47ceb1[_0xa202('0x22')](_0x7991c7)['then'](function(_0x5373b6){return _0x5373b6;});}return null;};}function removeEntity(_0x72fe3e,_0x268ee9){return function(_0x397553){if(_0x397553){return _0x397553[_0xa202('0x23')]()[_0xa202('0x24')](function(){var _0x1d6704=_0x397553['get']({'plain':!![]});var _0x571571=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':_0xa202('0x25'),'value':_0xa202('0x26'),'ignore':![]}];var _0x3db218=_(_0x571571)['filter'](_0xa202('0x27'))[_0xa202('0x28')](_0xa202('0x29'))[_0xa202('0x29')]();if(_[_0xa202('0x2a')](_0x3db218,_0x1d6704[_0xa202('0x2b')])){return;}var _0x41b09b=_[_0xa202('0x2c')](_0x571571,[_0xa202('0x29'),_0x1d6704[_0xa202('0x2b')]])[_0xa202('0x2d')];return db[_0xa202('0x2e')][_0xa202('0x23')]({'where':{'type':_0x41b09b,'resourceId':_0x1d6704['id']}})[_0xa202('0x24')](function(){return _0x397553;});})[_0xa202('0x24')](function(){_0x72fe3e[_0xa202('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x418ff0,_0x15eb0e){return function(_0x35ec2b){if(!_0x35ec2b){_0x418ff0[_0xa202('0x18')](0x194);}return _0x35ec2b;};}function handleError(_0x374590,_0x348544){_0x348544=_0x348544||0x1f4;return function(_0x4e7b0d){logger[_0xa202('0x2f')](_0x4e7b0d[_0xa202('0x30')]);if(_0x4e7b0d['name']){delete _0x4e7b0d[_0xa202('0x2d')];}_0x374590[_0xa202('0x19')](_0x348544)['send'](_0x4e7b0d);};}exports['index']=function(_0x59193d,_0x272cff){var _0x3d84a9={},_0x353014={},_0x18d13d={'count':0x0,'rows':[]};var _0x2c158c=_['map'](db[_0xa202('0x31')]['rawAttributes'],function(_0x2cb87a){return{'name':_0x2cb87a[_0xa202('0x32')],'type':_0x2cb87a[_0xa202('0x2b')]['key']};});_0x353014[_0xa202('0x33')]=_['map'](_0x2c158c,'name');_0x353014[_0xa202('0x34')]=_[_0xa202('0x35')](_0x59193d['query']);_0x353014[_0xa202('0x36')]=_['intersection'](_0x353014['model'],_0x353014[_0xa202('0x34')]);_0x3d84a9[_0xa202('0x37')]=_['intersection'](_0x353014[_0xa202('0x33')],qs[_0xa202('0x38')](_0x59193d[_0xa202('0x34')]['fields']));_0x3d84a9[_0xa202('0x37')]=_0x3d84a9[_0xa202('0x37')][_0xa202('0x39')]?_0x3d84a9[_0xa202('0x37')]:_0x353014[_0xa202('0x33')];if(!_0x59193d[_0xa202('0x34')][_0xa202('0x3a')](_0xa202('0x3b'))){_0x3d84a9[_0xa202('0x1c')]=qs[_0xa202('0x1c')](_0x59193d[_0xa202('0x34')][_0xa202('0x1c')]);_0x3d84a9['offset']=qs['offset'](_0x59193d[_0xa202('0x34')][_0xa202('0x1b')]);}_0x3d84a9[_0xa202('0x3c')]=qs[_0xa202('0x3d')](_0x59193d[_0xa202('0x34')][_0xa202('0x3d')]);_0x3d84a9[_0xa202('0x3e')]=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x59193d[_0xa202('0x34')],_0x353014['filters']),_0x2c158c);if(_0x59193d[_0xa202('0x34')][_0xa202('0x40')]){_0x3d84a9['where']=_['merge'](_0x3d84a9['where'],{'$or':_[_0xa202('0x28')](_0x2c158c,function(_0x3dfeb5){if(_0x3dfeb5[_0xa202('0x2b')]!==_0xa202('0x41')){var _0x5035e2={};_0x5035e2[_0x3dfeb5[_0xa202('0x2d')]]={'$like':'%'+_0x59193d[_0xa202('0x34')][_0xa202('0x40')]+'%'};return _0x5035e2;}})});}_0x3d84a9=_[_0xa202('0x42')]({},_0x3d84a9,_0x59193d['options']);var _0x169a02={'where':_0x3d84a9[_0xa202('0x3e')]};return db[_0xa202('0x31')]['count'](_0x169a02)[_0xa202('0x24')](function(_0xaf38be){_0x18d13d[_0xa202('0x1e')]=_0xaf38be;if(_0x59193d[_0xa202('0x34')][_0xa202('0x43')]){_0x3d84a9[_0xa202('0x44')]=[{'all':!![]}];}return db[_0xa202('0x31')][_0xa202('0x45')](_0x3d84a9);})[_0xa202('0x24')](function(_0x1c7cd0){_0x18d13d[_0xa202('0x46')]=_0x1c7cd0;return _0x18d13d;})[_0xa202('0x24')](respondWithFilteredResult(_0x272cff,_0x3d84a9))['catch'](handleError(_0x272cff,null));};exports[_0xa202('0x47')]=function(_0x1dca0c,_0x2608a2){var _0x26c959={'raw':![],'where':{'id':_0x1dca0c[_0xa202('0x48')]['id']}},_0x40ba81={};_0x40ba81[_0xa202('0x33')]=_[_0xa202('0x35')](db['VoiceQueue'][_0xa202('0x49')]);_0x40ba81[_0xa202('0x34')]=_[_0xa202('0x35')](_0x1dca0c['query']);_0x40ba81[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x40ba81[_0xa202('0x33')],_0x40ba81['query']);_0x26c959[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x40ba81[_0xa202('0x33')],qs[_0xa202('0x38')](_0x1dca0c[_0xa202('0x34')][_0xa202('0x38')]));_0x26c959[_0xa202('0x37')]=_0x26c959[_0xa202('0x37')][_0xa202('0x39')]?_0x26c959[_0xa202('0x37')]:_0x40ba81[_0xa202('0x33')];if(_0x1dca0c['query'][_0xa202('0x43')]){_0x26c959[_0xa202('0x44')]=[{'all':!![]}];}_0x26c959=_[_0xa202('0x42')]({},_0x26c959,_0x1dca0c['options']);return db['VoiceQueue'][_0xa202('0x2c')](_0x26c959)[_0xa202('0x24')](handleEntityNotFound(_0x2608a2,null))['then'](respondWithResult(_0x2608a2,null))[_0xa202('0x4b')](handleError(_0x2608a2,null));};exports[_0xa202('0x4c')]=function(_0x52d64d,_0x218108){return db[_0xa202('0x31')][_0xa202('0x4c')](_0x52d64d[_0xa202('0x4d')],{})['then'](function(_0x205bf2){var _0x5de652=_0x52d64d['user'][_0xa202('0x4e')]({'plain':!![]});if(!_0x5de652)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5de652['role']===_0xa202('0x4f')){var _0x51953a=_0x205bf2['get']({'plain':!![]});var _0x172ec1=[{'name':_0xa202('0x50'),'value':_0xa202('0x51')},{'name':_0xa202('0x25'),'value':_0xa202('0x26')}];var _0x1e2b8=_[_0xa202('0x2c')](_0x172ec1,['value',_0x51953a[_0xa202('0x2b')]])[_0xa202('0x2d')];return db[_0xa202('0x52')][_0xa202('0x2c')]({'where':{'name':_0x1e2b8,'userProfileId':_0x5de652[_0xa202('0x53')]},'raw':!![]})[_0xa202('0x24')](function(_0xaea834){if(_0xaea834&&_0xaea834['autoAssociation']===0x0){return db[_0xa202('0x2e')][_0xa202('0x4c')]({'name':_0x51953a[_0xa202('0x2d')],'resourceId':_0x51953a['id'],'type':_0xaea834['name'],'sectionId':_0xaea834['id']},{})['then'](function(){return _0x205bf2;});}else{return _0x205bf2;}})['catch'](function(_0x43d1a5){logger[_0xa202('0x2f')](_0xa202('0x54'),_0x43d1a5);throw _0x43d1a5;});}return _0x205bf2;})[_0xa202('0x24')](respondWithResult(_0x218108,0xc9))[_0xa202('0x4b')](handleError(_0x218108,null));};exports[_0xa202('0x55')]=function(_0x3b1efe,_0x1f3677){var _0x42bb2f={'where':{'id':_0x3b1efe[_0xa202('0x48')]['id']}},_0x590ebe={};_0x590ebe['model']=_[_0xa202('0x35')](db[_0xa202('0x31')][_0xa202('0x49')]);_0x42bb2f[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x590ebe['model'],qs[_0xa202('0x38')](_0x3b1efe[_0xa202('0x34')]['fields']));_0x42bb2f[_0xa202('0x37')]=_0x42bb2f['attributes'][_0xa202('0x39')]?_0x42bb2f['attributes']:_0x590ebe['model'];if(_0x3b1efe[_0xa202('0x34')][_0xa202('0x43')]){_0x42bb2f[_0xa202('0x44')]=[{'all':!![]}];}_0x42bb2f=_[_0xa202('0x42')]({},_0x42bb2f,_0x3b1efe[_0xa202('0x56')]);return db['VoiceQueue']['find'](_0x42bb2f)['then'](handleEntityNotFound(_0x1f3677,null))[_0xa202('0x24')](function(_0x3a30b8){if(_0x3a30b8){var _0x22ea2e=_0x3a30b8[_0xa202('0x4e')]({'plain':!![]});_0x22ea2e=qs[_0xa202('0x57')](_0x22ea2e,['id','createdAt','updatedAt']);_0x3b1efe['body']=_[_0xa202('0x57')](_0x3b1efe[_0xa202('0x4d')],['id','createdAt',_0xa202('0x58')]);return db[_0xa202('0x31')]['create'](_['merge'](_0x22ea2e,_0x3b1efe[_0xa202('0x4d')]),{'include':_0x3b1efe['query'][_0xa202('0x43')]?[{'all':!![]}]:undefined})[_0xa202('0x24')](function(_0x72a8ca){var _0x4bf8f4=_0x3b1efe[_0xa202('0x4f')][_0xa202('0x4e')]({'plain':!![]});if(!_0x4bf8f4)throw new Error(_0xa202('0x59'));if(_0x4bf8f4['role']===_0xa202('0x4f')){var _0x392d76=_0x72a8ca[_0xa202('0x4e')]({'plain':!![]});var _0x1f7304=[{'name':'VoiceQueues','value':_0xa202('0x51')},{'name':_0xa202('0x25'),'value':'outbound'}];var _0x2d6cc0=_[_0xa202('0x2c')](_0x1f7304,['value',_0x392d76['type']])[_0xa202('0x2d')];return db[_0xa202('0x52')]['find']({'where':{'name':_0x2d6cc0,'userProfileId':_0x4bf8f4['userProfileId']},'raw':!![]})['then'](function(_0xf726e6){if(_0xf726e6&&_0xf726e6['autoAssociation']===0x0){return db[_0xa202('0x2e')][_0xa202('0x4c')]({'name':_0x392d76[_0xa202('0x2d')],'resourceId':_0x392d76['id'],'type':_0xf726e6[_0xa202('0x2d')],'sectionId':_0xf726e6['id']},{})[_0xa202('0x24')](function(){return _0x72a8ca;});}else{return _0x72a8ca;}})[_0xa202('0x4b')](function(_0x3c731c){logger[_0xa202('0x2f')](_0xa202('0x54'),_0x3c731c);throw _0x3c731c;});}return _0x72a8ca;});}})[_0xa202('0x24')](respondWithResult(_0x1f3677,0xc9))[_0xa202('0x4b')](handleError(_0x1f3677,null));};exports[_0xa202('0x22')]=function(_0x2d588b,_0x16dc6a){if(_0x2d588b[_0xa202('0x4d')]['id']){delete _0x2d588b[_0xa202('0x4d')]['id'];}return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x2d588b['params']['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x16dc6a,null))[_0xa202('0x24')](saveUpdates(_0x2d588b[_0xa202('0x4d')],null))['then'](respondWithResult(_0x16dc6a,null))['catch'](handleError(_0x16dc6a,null));};exports[_0xa202('0x23')]=function(_0x28ea4c,_0x210ff2){return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x28ea4c[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x210ff2,null))[_0xa202('0x24')](removeEntity(_0x210ff2,null))[_0xa202('0x4b')](handleError(_0x210ff2,null));};exports[_0xa202('0x5a')]=function(_0x12b81e,_0x2c9936,_0x874371){var _0x268914={'raw':![],'where':{}};var _0x573bd8={};var _0x1ff0db={'count':0x0,'rows':[]};return db[_0xa202('0x31')]['findOne']({'where':{'id':_0x12b81e[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x2c9936,null))['then'](function(_0x4afce1){if(_0x4afce1){_0x573bd8[_0xa202('0x33')]=_[_0xa202('0x35')](db['CmHopper'][_0xa202('0x49')]);_0x573bd8[_0xa202('0x34')]=_['keys'](_0x12b81e['query']);_0x573bd8[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x573bd8['model'],_0x573bd8[_0xa202('0x34')]);_0x268914['attributes']=_[_0xa202('0x4a')](_0x573bd8['model'],qs['fields'](_0x12b81e['query'][_0xa202('0x38')]));_0x268914[_0xa202('0x37')]=_0x268914[_0xa202('0x37')]['length']?_0x268914[_0xa202('0x37')]:_0x573bd8[_0xa202('0x33')];if(!_0x12b81e[_0xa202('0x34')][_0xa202('0x3a')](_0xa202('0x3b'))){_0x268914[_0xa202('0x1c')]=qs['limit'](_0x12b81e[_0xa202('0x34')][_0xa202('0x1c')]);_0x268914[_0xa202('0x1b')]=qs[_0xa202('0x1b')](_0x12b81e[_0xa202('0x34')][_0xa202('0x1b')]);}_0x268914[_0xa202('0x3c')]=qs[_0xa202('0x3d')](_0x12b81e['query']['sort']);_0x268914[_0xa202('0x3e')]=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x12b81e['query'],_0x573bd8[_0xa202('0x36')]));_0x268914[_0xa202('0x3e')]['VoiceQueueId']=_0x4afce1['id'];if(_0x12b81e[_0xa202('0x34')][_0xa202('0x40')]){_0x268914[_0xa202('0x3e')]=_['merge'](_0x268914[_0xa202('0x3e')],{'$or':_['map'](_0x268914['attributes'],function(_0x163dc7){var _0x5d4a2b={};_0x5d4a2b[_0x163dc7]={'$like':'%'+_0x12b81e[_0xa202('0x34')][_0xa202('0x40')]+'%'};return _0x5d4a2b;})});}_0x268914=_[_0xa202('0x42')]({},_0x268914,_0x12b81e['options']);return db[_0xa202('0x5b')]['count']({'where':_0x268914['where']})[_0xa202('0x24')](function(_0x3f8607){_0x1ff0db['count']=_0x3f8607;if(_0x12b81e[_0xa202('0x34')][_0xa202('0x43')]){_0x268914[_0xa202('0x44')]=[{'all':!![]}];}return db['CmHopper'][_0xa202('0x45')](_0x268914);})[_0xa202('0x24')](function(_0x46b74d){_0x1ff0db[_0xa202('0x46')]=_0x46b74d;return _0x1ff0db;});}})[_0xa202('0x24')](respondWithFilteredResult(_0x2c9936,_0x268914))[_0xa202('0x4b')](handleError(_0x2c9936,null));};exports[_0xa202('0x5c')]=function(_0x446cdb,_0x5b1a30,_0x14a5db){var _0x57a47a={'raw':!![],'where':{}};var _0x5e9b75={};var _0x3c13c9={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x446cdb['params']['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x5b1a30,null))[_0xa202('0x24')](function(_0x406805){if(_0x406805){_0x5e9b75['model']=_[_0xa202('0x35')](db[_0xa202('0x5d')]['rawAttributes']);_0x5e9b75[_0xa202('0x34')]=_[_0xa202('0x35')](_0x446cdb['query']);_0x5e9b75[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x5e9b75['model'],_0x5e9b75['query']);_0x57a47a[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x5e9b75[_0xa202('0x33')],qs['fields'](_0x446cdb[_0xa202('0x34')][_0xa202('0x38')]));_0x57a47a['attributes']=_0x57a47a[_0xa202('0x37')][_0xa202('0x39')]?_0x57a47a[_0xa202('0x37')]:_0x5e9b75[_0xa202('0x33')];if(!_0x446cdb[_0xa202('0x34')][_0xa202('0x3a')]('nolimit')){_0x57a47a['limit']=qs[_0xa202('0x1c')](_0x446cdb[_0xa202('0x34')]['limit']);_0x57a47a['offset']=qs[_0xa202('0x1b')](_0x446cdb[_0xa202('0x34')][_0xa202('0x1b')]);}_0x57a47a[_0xa202('0x3c')]=qs['sort'](_0x446cdb[_0xa202('0x34')][_0xa202('0x3d')]);_0x57a47a[_0xa202('0x3e')]=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x446cdb[_0xa202('0x34')],_0x5e9b75[_0xa202('0x36')]));_0x57a47a[_0xa202('0x3e')]['VoiceQueueId']=_0x406805['id'];if(_0x446cdb['query'][_0xa202('0x40')]){_0x57a47a[_0xa202('0x3e')]=_['merge'](_0x57a47a['where'],{'$or':_['map'](_0x57a47a['attributes'],function(_0x312b7b){var _0x4fa0b3={};_0x4fa0b3[_0x312b7b]={'$like':'%'+_0x446cdb['query']['filter']+'%'};return _0x4fa0b3;})});}_0x57a47a=_[_0xa202('0x42')]({},_0x57a47a,_0x446cdb['options']);return db[_0xa202('0x5d')][_0xa202('0x1e')]({'where':_0x57a47a[_0xa202('0x3e')]})[_0xa202('0x24')](function(_0x2e4c31){_0x3c13c9[_0xa202('0x1e')]=_0x2e4c31;if(_0x446cdb[_0xa202('0x34')][_0xa202('0x43')]){_0x57a47a['include']=[{'all':!![]}];}return db[_0xa202('0x5d')][_0xa202('0x45')](_0x57a47a);})[_0xa202('0x24')](function(_0x2acf4b){_0x3c13c9[_0xa202('0x46')]=_0x2acf4b;return _0x3c13c9;});}})[_0xa202('0x24')](respondWithFilteredResult(_0x5b1a30,_0x57a47a))[_0xa202('0x4b')](handleError(_0x5b1a30,null));};exports[_0xa202('0x5e')]=function(_0x34e925,_0x30e8e2,_0x50eede){var _0x138203={'raw':!![],'where':{}};var _0x66b533={};var _0x3b7beb={'count':0x0,'rows':[]};return db[_0xa202('0x31')][_0xa202('0x5f')]({'where':{'id':_0x34e925[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x30e8e2,null))[_0xa202('0x24')](function(_0x14a022){if(_0x14a022){_0x66b533['model']=_[_0xa202('0x35')](db[_0xa202('0x60')]['rawAttributes']);_0x66b533['query']=_[_0xa202('0x35')](_0x34e925[_0xa202('0x34')]);_0x66b533[_0xa202('0x36')]=_['intersection'](_0x66b533['model'],_0x66b533[_0xa202('0x34')]);_0x138203[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x66b533[_0xa202('0x33')],qs['fields'](_0x34e925[_0xa202('0x34')][_0xa202('0x38')]));_0x138203[_0xa202('0x37')]=_0x138203[_0xa202('0x37')][_0xa202('0x39')]?_0x138203[_0xa202('0x37')]:_0x66b533[_0xa202('0x33')];if(!_0x34e925['query'][_0xa202('0x3a')](_0xa202('0x3b'))){_0x138203[_0xa202('0x1c')]=qs[_0xa202('0x1c')](_0x34e925[_0xa202('0x34')][_0xa202('0x1c')]);_0x138203['offset']=qs[_0xa202('0x1b')](_0x34e925[_0xa202('0x34')][_0xa202('0x1b')]);}_0x138203[_0xa202('0x3c')]=qs[_0xa202('0x3d')](_0x34e925['query'][_0xa202('0x3d')]);_0x138203[_0xa202('0x3e')]=qs[_0xa202('0x36')](_['pick'](_0x34e925[_0xa202('0x34')],_0x66b533['filters']));_0x138203['where']['VoiceQueueId']=_0x14a022['id'];if(_0x34e925[_0xa202('0x34')][_0xa202('0x40')]){_0x138203[_0xa202('0x3e')]=_[_0xa202('0x42')](_0x138203[_0xa202('0x3e')],{'$or':_[_0xa202('0x28')](_0x138203[_0xa202('0x37')],function(_0x49d70a){var _0x550e12={};_0x550e12[_0x49d70a]={'$like':'%'+_0x34e925[_0xa202('0x34')][_0xa202('0x40')]+'%'};return _0x550e12;})});}_0x138203=_[_0xa202('0x42')]({},_0x138203,_0x34e925[_0xa202('0x56')]);return db['CmHopperFinal'][_0xa202('0x1e')]({'where':_0x138203[_0xa202('0x3e')]})[_0xa202('0x24')](function(_0xca75e3){_0x3b7beb[_0xa202('0x1e')]=_0xca75e3;if(_0x34e925[_0xa202('0x34')][_0xa202('0x43')]){_0x138203['include']=[{'all':!![]}];}return db[_0xa202('0x60')][_0xa202('0x45')](_0x138203);})['then'](function(_0x2e202e){_0x3b7beb[_0xa202('0x46')]=_0x2e202e;return _0x3b7beb;});}})[_0xa202('0x24')](respondWithFilteredResult(_0x30e8e2,_0x138203))['catch'](handleError(_0x30e8e2,null));};exports[_0xa202('0x61')]=function(_0x17d530,_0x3fb37e,_0x4e368e){var _0x3221db={'raw':!![],'where':{}};var _0x1baf64={};var _0xe6afe9={'count':0x0,'rows':[]};return db[_0xa202('0x31')]['findOne']({'where':{'id':_0x17d530[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x3fb37e,null))[_0xa202('0x24')](function(_0x375558){if(_0x375558){_0x1baf64['model']=_['keys'](db['CmHopperBlack'][_0xa202('0x49')]);_0x1baf64[_0xa202('0x34')]=_[_0xa202('0x35')](_0x17d530[_0xa202('0x34')]);_0x1baf64[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x1baf64['model'],_0x1baf64[_0xa202('0x34')]);_0x3221db['attributes']=_[_0xa202('0x4a')](_0x1baf64[_0xa202('0x33')],qs['fields'](_0x17d530['query'][_0xa202('0x38')]));_0x3221db['attributes']=_0x3221db[_0xa202('0x37')]['length']?_0x3221db[_0xa202('0x37')]:_0x1baf64[_0xa202('0x33')];if(!_0x17d530['query'][_0xa202('0x3a')](_0xa202('0x3b'))){_0x3221db[_0xa202('0x1c')]=qs['limit'](_0x17d530[_0xa202('0x34')]['limit']);_0x3221db[_0xa202('0x1b')]=qs[_0xa202('0x1b')](_0x17d530['query'][_0xa202('0x1b')]);}_0x3221db['order']=qs[_0xa202('0x3d')](_0x17d530[_0xa202('0x34')][_0xa202('0x3d')]);_0x3221db[_0xa202('0x3e')]=qs['filters'](_[_0xa202('0x3f')](_0x17d530['query'],_0x1baf64[_0xa202('0x36')]));_0x3221db[_0xa202('0x3e')][_0xa202('0x62')]=_0x375558['id'];if(_0x17d530[_0xa202('0x34')]['filter']){_0x3221db[_0xa202('0x3e')]=_[_0xa202('0x42')](_0x3221db[_0xa202('0x3e')],{'$or':_[_0xa202('0x28')](_0x3221db[_0xa202('0x37')],function(_0x1541ef){var _0x2dd649={};_0x2dd649[_0x1541ef]={'$like':'%'+_0x17d530['query'][_0xa202('0x40')]+'%'};return _0x2dd649;})});}_0x3221db=_['merge']({},_0x3221db,_0x17d530[_0xa202('0x56')]);return db[_0xa202('0x63')][_0xa202('0x1e')]({'where':_0x3221db[_0xa202('0x3e')]})[_0xa202('0x24')](function(_0x4990fd){_0xe6afe9[_0xa202('0x1e')]=_0x4990fd;if(_0x17d530[_0xa202('0x34')][_0xa202('0x43')]){_0x3221db[_0xa202('0x44')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x3221db);})[_0xa202('0x24')](function(_0x2bb5d9){_0xe6afe9[_0xa202('0x46')]=_0x2bb5d9;return _0xe6afe9;});}})[_0xa202('0x24')](respondWithFilteredResult(_0x3fb37e,_0x3221db))[_0xa202('0x4b')](handleError(_0x3fb37e,null));};exports[_0xa202('0x64')]=function(_0x160f24,_0x2e9e65,_0x3f2cc3){var _0x2d210d={};var _0x4f4b29={};var _0x12c9aa;var _0x540751;return db['VoiceQueue'][_0xa202('0x5f')]({'where':{'id':_0x160f24[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x2e9e65,null))['then'](function(_0x57f400){if(_0x57f400){_0x12c9aa=_0x57f400;_0x4f4b29['model']=_[_0xa202('0x35')](db[_0xa202('0x65')][_0xa202('0x49')]);_0x4f4b29[_0xa202('0x34')]=_[_0xa202('0x35')](_0x160f24[_0xa202('0x34')]);_0x4f4b29[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x4f4b29[_0xa202('0x33')],_0x4f4b29[_0xa202('0x34')]);_0x2d210d[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x4f4b29[_0xa202('0x33')],qs[_0xa202('0x38')](_0x160f24[_0xa202('0x34')][_0xa202('0x38')]));_0x2d210d['attributes']=_0x2d210d[_0xa202('0x37')][_0xa202('0x39')]?_0x2d210d[_0xa202('0x37')]:_0x4f4b29['model'];_0x2d210d[_0xa202('0x3c')]=qs[_0xa202('0x3d')](_0x160f24[_0xa202('0x34')]['sort']);_0x2d210d[_0xa202('0x3e')]=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x160f24[_0xa202('0x34')],_0x4f4b29['filters']));if(_0x160f24[_0xa202('0x34')][_0xa202('0x40')]){_0x2d210d['where']=_[_0xa202('0x42')](_0x2d210d[_0xa202('0x3e')],{'$or':_[_0xa202('0x28')](_0x2d210d[_0xa202('0x37')],function(_0x2b4b8e){var _0x29d4ac={};_0x29d4ac[_0x2b4b8e]={'$like':'%'+_0x160f24[_0xa202('0x34')][_0xa202('0x40')]+'%'};return _0x29d4ac;})});}_0x2d210d=_[_0xa202('0x42')]({},_0x2d210d,_0x160f24[_0xa202('0x56')]);return _0x12c9aa['getTeams'](_0x2d210d);}})[_0xa202('0x24')](function(_0x4e1d37){if(_0x4e1d37){_0x540751=_0x4e1d37[_0xa202('0x39')];if(!_0x160f24[_0xa202('0x34')][_0xa202('0x3a')](_0xa202('0x3b'))){_0x2d210d[_0xa202('0x1c')]=qs[_0xa202('0x1c')](_0x160f24[_0xa202('0x34')][_0xa202('0x1c')]);_0x2d210d[_0xa202('0x1b')]=qs['offset'](_0x160f24[_0xa202('0x34')]['offset']);}return _0x12c9aa[_0xa202('0x64')](_0x2d210d);}})[_0xa202('0x24')](function(_0x101ca4){if(_0x101ca4){return _0x101ca4?{'count':_0x540751,'rows':_0x101ca4}:null;}})[_0xa202('0x24')](respondWithResult(_0x2e9e65,null))[_0xa202('0x4b')](handleError(_0x2e9e65,null));};exports['addTeams']=function(_0x18e727,_0x5a6bcd,_0x4816a3){var _0x5b5ae1=_0x18e727['body']['teams'];var _0x32964e=_[_0xa202('0x28')](_0x5b5ae1,'id');return db[_0xa202('0x65')]['findAll']({'where':{'id':_0x32964e},'attributes':['id'],'include':[{'model':db[_0xa202('0x66')],'as':_0xa202('0x67'),'attributes':['id',_0xa202('0x2d'),'online',_0xa202('0x68'),_0xa202('0x69')],'raw':!![]}]})['then'](function(_0x44a6bd){if(_0x44a6bd){var _0x164006=_[_0xa202('0x6a')](_0x44a6bd,function(_0xad51){var _0x3ab106=_0xad51['get']({'plain':!![]});_0x3ab106['Agents'][_0xa202('0x6b')](function(_0x1a42a8){_0x1a42a8[_0xa202('0x6c')]=_[_0xa202('0x2c')](_0x5b5ae1,{'id':_0x3ab106['id']})[_0xa202('0x6c')];});return _0x3ab106[_0xa202('0x67')];});return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x18e727[_0xa202('0x48')]['id']}})['then'](function(_0x59dcb6){return db['sequelize']['transaction'](function(_0x1303ed){return _0x59dcb6[_0xa202('0x6d')](_0x32964e,{'transaction':_0x1303ed})[_0xa202('0x24')](function(){return BPromise[_0xa202('0x6e')](_0x5b5ae1,function(_0x149bd0){return db[_0xa202('0x6f')]['upsert']({'TeamId':_0x149bd0['id'],'VoiceQueueId':_0x18e727['params']['id'],'penalty':_0x149bd0['penalty']},{'transaction':_0x1303ed});});})[_0xa202('0x24')](function(){return BPromise['each'](_0x164006,function(_0x84ef1c){return db[_0xa202('0x70')]['findOrCreate']({'where':{'UserId':_0x84ef1c['id'],'VoiceQueueId':_0x18e727['params']['id']},'defaults':{'penalty':_0x84ef1c[_0xa202('0x6c')]},'transaction':_0x1303ed});});})['then'](function(){return BPromise[_0xa202('0x6e')](_[_0xa202('0x40')](_0x164006,{'online':!![]}),function(_0x2d6ddb){return db[_0xa202('0x71')][_0xa202('0x72')]({'membername':_0x2d6ddb[_0xa202('0x2d')],'UserId':_0x2d6ddb['id'],'queue_name':_0x59dcb6[_0xa202('0x2d')],'VoiceQueueId':_0x59dcb6['id'],'interface':_[_0xa202('0x73')](_0x2d6ddb[_0xa202('0x69')])?util[_0xa202('0x74')](_0xa202('0x75'),_0x2d6ddb[_0xa202('0x2d')]):_0x2d6ddb[_0xa202('0x69')],'paused':_0x2d6ddb[_0xa202('0x68')]||![],'penalty':_0x2d6ddb[_0xa202('0x6c')]},{'transaction':_0x1303ed});});})['then'](function(){_0x164006[_0xa202('0x6b')](function(_0x3067f8){socket[_0xa202('0x76')](_0xa202('0x77'),{'UserId':_0x3067f8['id'],'VoiceQueueId':_0x59dcb6['id']});});});});});}})[_0xa202('0x24')](respondWithStatusCode(_0x5a6bcd,null))['catch'](handleError(_0x5a6bcd,null));};exports['removeTeams']=function(_0x356064,_0x2a7854,_0x2c045a){return db[_0xa202('0x65')][_0xa202('0x45')]({'where':{'id':_0x356064[_0xa202('0x34')][_0xa202('0x78')]},'attributes':['id'],'include':[{'model':db[_0xa202('0x66')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa202('0x24')](handleEntityNotFound(_0x2a7854,null))[_0xa202('0x24')](function(_0x236cc1){var _0x4718dd=_[_0xa202('0x28')](_0x236cc1,'id');var _0x725d6=[];var _0x5985f5=[];var _0x4c25ed=squel['select']();_0x4c25ed[_0xa202('0x79')](_0xa202('0x7a'))[_0xa202('0x7b')](_0xa202('0x7c'),'tq')[_0xa202('0x7d')](_0xa202('0x7e'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xa202('0x7f'),_0x356064['params']['id']);for(var _0x1377b2=0x0;_0x1377b2<_0x236cc1[_0xa202('0x39')];_0x1377b2+=0x1){let _0x300f69=_0x236cc1[_0x1377b2];for(var _0x1c818e=0x0;_0x1c818e<_0x300f69[_0xa202('0x67')][_0xa202('0x39')];_0x1c818e+=0x1){let _0x2026b2=_0x300f69[_0xa202('0x67')][_0x1c818e];var _0x30793d=_0x4c25ed[_0xa202('0x55')]();_0x30793d['where']('ut.UserId\x20=\x20?',_0x2026b2['id']);_0x5985f5[_0xa202('0x80')](db['sequelize'][_0xa202('0x34')](_0x30793d['toString'](),{'type':db[_0xa202('0x81')][_0xa202('0x82')][_0xa202('0x83')]})['then'](function(_0x2dfa73){if(_0x2dfa73[_0xa202('0x39')]===0x1){return _0x2026b2['id'];}else{var _0x402d29=_[_0xa202('0x84')](_[_0xa202('0x28')](_0x2dfa73,_0xa202('0x85')),function(_0x67467){return _[_0xa202('0x2a')](_0x4718dd,_0x67467);});if(_0x402d29){return _0x2026b2['id'];}}}));}}return BPromise[_0xa202('0x86')](_0x5985f5)[_0xa202('0x24')](function(_0x2c8dfd){_0x725d6=_(_0x725d6)[_0xa202('0x87')](_0x2c8dfd)['compact']()[_0xa202('0x29')]();return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x356064[_0xa202('0x48')]['id']}})[_0xa202('0x24')](function(_0x3e9ae9){return db['sequelize'][_0xa202('0x88')](function(_0x3d3d18){return _0x3e9ae9['removeTeams'](_0x356064['query'][_0xa202('0x78')],{'transaction':_0x3d3d18})[_0xa202('0x24')](function(){if(!_[_0xa202('0x89')](_0x725d6)){return _0x3e9ae9['removeAgents'](_0x725d6,{'transaction':_0x3d3d18})[_0xa202('0x24')](function(){return db[_0xa202('0x71')]['destroy']({'where':{'VoiceQueueId':_0x356064[_0xa202('0x48')]['id'],'UserId':_0x725d6},'transaction':_0x3d3d18});});}})[_0xa202('0x24')](function(){_0x725d6['forEach'](function(_0x180982){socket[_0xa202('0x76')](_0xa202('0x8a'),{'UserId':_0x180982,'VoiceQueueId':_0x3e9ae9['id']});});});});});});})[_0xa202('0x24')](respondWithStatusCode(_0x2a7854,null))[_0xa202('0x4b')](handleError(_0x2a7854,null));};exports[_0xa202('0x8b')]=function(_0x272f88,_0x5e2bed,_0x1d8550){var _0x468fa6,_0x4c8623;return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x272f88[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x5e2bed,null))[_0xa202('0x24')](function(_0x2eab60){if(_0x2eab60){_0x4c8623=_0x2eab60;return _0x2eab60[_0xa202('0x8b')](_0x272f88[_0xa202('0x4d')][_0xa202('0x78')],_[_0xa202('0x57')](_0x272f88['body'],[_0xa202('0x78'),'id'])||{})[_0xa202('0x8c')](function(_0x4875ef){for(var _0x5559b6=0x0;_0x5559b6<_0x272f88['body'][_0xa202('0x78')][_0xa202('0x39')];_0x5559b6+=0x1){socket[_0xa202('0x76')](_0xa202('0x77'),{'UserId':Number(_0x272f88[_0xa202('0x4d')][_0xa202('0x78')][_0x5559b6]),'VoiceQueueId':Number(_0x272f88[_0xa202('0x48')]['id'])});}return _0x4875ef;});}})[_0xa202('0x24')](function(_0x1e8ba5){_0x468fa6=_0x1e8ba5||[];if(_0x4c8623){return db[_0xa202('0x66')][_0xa202('0x45')]({'where':{'id':_0x272f88[_0xa202('0x4d')]['ids']},'attributes':['id',_0xa202('0x2d'),_0xa202('0x8d'),_0xa202('0x68'),_0xa202('0x69')],'raw':!![]});}})[_0xa202('0x24')](function(_0x4a95b4){if(!_[_0xa202('0x89')](_0x4a95b4)){var _0x37b8a0=[];for(var _0xf54860=0x0;_0xf54860<_0x4a95b4[_0xa202('0x39')];_0xf54860++){if(_0x4a95b4[_0xf54860]['online']){_0x37b8a0[_0xa202('0x80')](db[_0xa202('0x71')][_0xa202('0x72')]({'membername':_0x4a95b4[_0xf54860]['name'],'UserId':_0x4a95b4[_0xf54860]['id'],'queue_name':_0x4c8623[_0xa202('0x2d')],'VoiceQueueId':_0x4c8623['id'],'interface':_[_0xa202('0x73')](_0x4a95b4[_0xf54860][_0xa202('0x69')])?util[_0xa202('0x74')]('SIP/%s',_0x4a95b4[_0xf54860][_0xa202('0x2d')]):_0x4a95b4[_0xf54860][_0xa202('0x69')],'paused':_0x4a95b4[_0xf54860][_0xa202('0x68')]||![],'penalty':_0x272f88[_0xa202('0x4d')][_0xa202('0x6c')]||0x0}));}}return BPromise[_0xa202('0x86')](_0x37b8a0);}})[_0xa202('0x24')](function(){return _0x468fa6;})['then'](respondWithResult(_0x5e2bed,null))['catch'](handleError(_0x5e2bed,null));};exports['removeAgents']=function(_0x5cdd35,_0xd9fb01,_0x313c5b){return db[_0xa202('0x31')]['find']({'where':{'id':_0x5cdd35['params']['id']}})[_0xa202('0x24')](handleEntityNotFound(_0xd9fb01,null))['then'](function(_0x28c3e4){if(_0x28c3e4){return _0x28c3e4[_0xa202('0x8e')](_0x5cdd35[_0xa202('0x34')][_0xa202('0x78')])[_0xa202('0x24')](function(){if(_[_0xa202('0x8f')](_0x5cdd35[_0xa202('0x34')]['ids'])){for(var _0x50b428=0x0;_0x50b428<_0x5cdd35[_0xa202('0x34')][_0xa202('0x78')][_0xa202('0x39')];_0x50b428+=0x1){socket[_0xa202('0x76')](_0xa202('0x8a'),{'UserId':Number(_0x5cdd35['query'][_0xa202('0x78')][_0x50b428]),'VoiceQueueId':Number(_0x5cdd35[_0xa202('0x48')]['id'])});}}else{socket['emit'](_0xa202('0x8a'),{'UserId':Number(_0x5cdd35['query'][_0xa202('0x78')]),'VoiceQueueId':Number(_0x5cdd35['params']['id'])});}});}})[_0xa202('0x24')](function(_0x57a870){return db[_0xa202('0x71')]['destroy']({'where':{'VoiceQueueId':_0x5cdd35[_0xa202('0x48')]['id'],'UserId':_0x5cdd35['query'][_0xa202('0x78')]}})[_0xa202('0x24')](function(){return _0x57a870;});})[_0xa202('0x24')](respondWithStatusCode(_0xd9fb01,null))['catch'](handleError(_0xd9fb01,null));};exports[_0xa202('0x90')]=function(_0x43ae59,_0xa3334e,_0x5d7885){var _0x21948e={};var _0x5d8d05={};var _0x1ca174;var _0x673333;return db['VoiceQueue'][_0xa202('0x5f')]({'where':{'id':_0x43ae59[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0xa3334e,null))['then'](function(_0x424842){if(_0x424842){_0x1ca174=_0x424842;_0x5d8d05[_0xa202('0x33')]=_['keys'](db[_0xa202('0x66')][_0xa202('0x49')]);_0x5d8d05[_0xa202('0x34')]=_[_0xa202('0x35')](_0x43ae59[_0xa202('0x34')]);_0x5d8d05[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x5d8d05[_0xa202('0x33')],_0x5d8d05[_0xa202('0x34')]);_0x21948e[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x5d8d05[_0xa202('0x33')],qs[_0xa202('0x38')](_0x43ae59['query'][_0xa202('0x38')]));_0x21948e[_0xa202('0x37')]=_0x21948e[_0xa202('0x37')][_0xa202('0x39')]?_0x21948e[_0xa202('0x37')]:_0x5d8d05[_0xa202('0x33')];_0x21948e[_0xa202('0x3c')]=qs[_0xa202('0x3d')](_0x43ae59[_0xa202('0x34')][_0xa202('0x3d')]);_0x21948e['where']=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x43ae59[_0xa202('0x34')],_0x5d8d05['filters']));if(_0x43ae59[_0xa202('0x34')][_0xa202('0x40')]){_0x21948e[_0xa202('0x3e')]=_[_0xa202('0x42')](_0x21948e[_0xa202('0x3e')],{'$or':_[_0xa202('0x28')](_0x21948e[_0xa202('0x37')],function(_0x32327f){var _0x3f8e12={};_0x3f8e12[_0x32327f]={'$like':'%'+_0x43ae59['query']['filter']+'%'};return _0x3f8e12;})});}_0x21948e=_[_0xa202('0x42')]({},_0x21948e,_0x43ae59[_0xa202('0x56')]);return _0x1ca174['getAgents'](_0x21948e);}})[_0xa202('0x24')](function(_0x185b19){if(_0x185b19){_0x673333=_0x185b19[_0xa202('0x39')];if(!_0x43ae59[_0xa202('0x34')]['hasOwnProperty'](_0xa202('0x3b'))){_0x21948e['limit']=qs[_0xa202('0x1c')](_0x43ae59[_0xa202('0x34')][_0xa202('0x1c')]);_0x21948e[_0xa202('0x1b')]=qs[_0xa202('0x1b')](_0x43ae59[_0xa202('0x34')][_0xa202('0x1b')]);}return _0x1ca174[_0xa202('0x90')](_0x21948e);}})[_0xa202('0x24')](function(_0x537ed3){if(_0x537ed3){return _0x537ed3?{'count':_0x673333,'rows':_0x537ed3}:null;}})[_0xa202('0x24')](respondWithResult(_0xa3334e,null))['catch'](handleError(_0xa3334e,null));};exports[_0xa202('0x91')]=function(_0x3ea975,_0x1ddb33,_0x1dee3b){var _0x497e78={};var _0x34cf1e={};var _0x223d52;var _0x3b9d14;return db[_0xa202('0x31')][_0xa202('0x5f')]({'where':{'id':_0x3ea975[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x1ddb33,null))[_0xa202('0x24')](function(_0x32781c){if(_0x32781c){_0x223d52=_0x32781c;_0x34cf1e[_0xa202('0x33')]=_[_0xa202('0x35')](db[_0xa202('0x71')][_0xa202('0x49')]);_0x34cf1e[_0xa202('0x34')]=_[_0xa202('0x35')](_0x3ea975[_0xa202('0x34')]);_0x34cf1e[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x34cf1e[_0xa202('0x33')],_0x34cf1e[_0xa202('0x34')]);_0x497e78[_0xa202('0x37')]=_['intersection'](_0x34cf1e['model'],qs[_0xa202('0x38')](_0x3ea975[_0xa202('0x34')][_0xa202('0x38')]));_0x497e78[_0xa202('0x37')]=_0x497e78['attributes'][_0xa202('0x39')]?_0x497e78[_0xa202('0x37')]:_0x34cf1e[_0xa202('0x33')];_0x497e78[_0xa202('0x3c')]=qs['sort'](_0x3ea975['query'][_0xa202('0x3d')]);_0x497e78[_0xa202('0x3e')]=qs['filters'](_[_0xa202('0x3f')](_0x3ea975['query'],_0x34cf1e[_0xa202('0x36')]));if(_0x3ea975[_0xa202('0x34')][_0xa202('0x40')]){_0x497e78[_0xa202('0x3e')]=_[_0xa202('0x42')](_0x497e78[_0xa202('0x3e')],{'$or':_['map'](_0x497e78[_0xa202('0x37')],function(_0x2982ab){var _0x531e48={};_0x531e48[_0x2982ab]={'$like':'%'+_0x3ea975[_0xa202('0x34')][_0xa202('0x40')]+'%'};return _0x531e48;})});}_0x497e78=_[_0xa202('0x42')]({},_0x497e78,_0x3ea975[_0xa202('0x56')]);return _0x223d52['getMembers'](_0x497e78);}})[_0xa202('0x24')](function(_0x4abfdc){if(_0x4abfdc){_0x3b9d14=_0x4abfdc[_0xa202('0x39')];if(!_0x3ea975[_0xa202('0x34')][_0xa202('0x3a')](_0xa202('0x3b'))){_0x497e78[_0xa202('0x1c')]=qs['limit'](_0x3ea975[_0xa202('0x34')]['limit']);_0x497e78[_0xa202('0x1b')]=qs[_0xa202('0x1b')](_0x3ea975[_0xa202('0x34')][_0xa202('0x1b')]);}return _0x223d52[_0xa202('0x91')](_0x497e78);}})[_0xa202('0x24')](function(_0x15a69c){return _0x15a69c?{'count':_0x3b9d14,'rows':_0x15a69c}:null;})[_0xa202('0x24')](respondWithResult(_0x1ddb33,null))['catch'](handleError(_0x1ddb33,null));};exports['getLists']=function(_0x5d9295,_0x377db2,_0x3d98c6){var _0x756410={};var _0x123cd2={};var _0x1f39d7;var _0x53b77d;return db[_0xa202('0x31')][_0xa202('0x5f')]({'where':{'id':_0x5d9295[_0xa202('0x48')]['id']}})['then'](handleEntityNotFound(_0x377db2,null))[_0xa202('0x24')](function(_0xd0286){if(_0xd0286){_0x1f39d7=_0xd0286;_0x123cd2[_0xa202('0x33')]=_[_0xa202('0x35')](db[_0xa202('0x92')]['rawAttributes']);_0x123cd2[_0xa202('0x34')]=_[_0xa202('0x35')](_0x5d9295[_0xa202('0x34')]);_0x123cd2['filters']=_['intersection'](_0x123cd2['model'],_0x123cd2[_0xa202('0x34')]);_0x756410[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x123cd2['model'],qs['fields'](_0x5d9295[_0xa202('0x34')]['fields']));_0x756410[_0xa202('0x37')]=_0x756410[_0xa202('0x37')][_0xa202('0x39')]?_0x756410[_0xa202('0x37')]:_0x123cd2['model'];_0x756410[_0xa202('0x3c')]=qs[_0xa202('0x3d')](_0x5d9295['query']['sort']);_0x756410[_0xa202('0x3e')]=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x5d9295[_0xa202('0x34')],_0x123cd2['filters']));if(_0x5d9295[_0xa202('0x34')]['filter']){_0x756410['where']=_[_0xa202('0x42')](_0x756410[_0xa202('0x3e')],{'$or':_[_0xa202('0x28')](_0x756410[_0xa202('0x37')],function(_0x5a6b30){var _0x41ab94={};_0x41ab94[_0x5a6b30]={'$like':'%'+_0x5d9295[_0xa202('0x34')]['filter']+'%'};return _0x41ab94;})});}_0x756410=_[_0xa202('0x42')]({},_0x756410,_0x5d9295['options']);return _0x1f39d7[_0xa202('0x93')](_0x756410);}})[_0xa202('0x24')](function(_0xf81e3a){if(_0xf81e3a){_0x53b77d=_0xf81e3a[_0xa202('0x39')];if(!_0x5d9295[_0xa202('0x34')][_0xa202('0x3a')](_0xa202('0x3b'))){_0x756410[_0xa202('0x1c')]=qs[_0xa202('0x1c')](_0x5d9295[_0xa202('0x34')][_0xa202('0x1c')]);_0x756410[_0xa202('0x1b')]=qs[_0xa202('0x1b')](_0x5d9295[_0xa202('0x34')][_0xa202('0x1b')]);}return _0x1f39d7[_0xa202('0x93')](_0x756410);}})[_0xa202('0x24')](function(_0x4bbebc){if(_0x4bbebc){return _0x4bbebc?{'count':_0x53b77d,'rows':_0x4bbebc}:null;}})[_0xa202('0x24')](respondWithResult(_0x377db2,null))[_0xa202('0x4b')](handleError(_0x377db2,null));};exports[_0xa202('0x94')]=function(_0x3d9e07,_0x58fb36,_0xf08e62){var _0x125849=moment()[_0xa202('0x74')](_0xa202('0x95'));var _0xb6d500,_0x3eaabe;return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x3d9e07[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x58fb36,null))['then'](function(_0x3243ad){if(_0x3243ad){_0x3eaabe=_0x3243ad;return _0x3243ad['addLists'](_0x3d9e07['body']['ids'],_[_0xa202('0x57')](_0x3d9e07[_0xa202('0x4d')],['ids','id'])||{});}return null;})[_0xa202('0x8c')](function(_0x4d3a62){var _0xff1ced;_0xb6d500=_0x4d3a62||[];var _0x1ac3b0=[];if(_0x4d3a62){for(var _0x22bb3b=0x0;_0x22bb3b<_0x4d3a62[_0xa202('0x39')];_0x22bb3b+=0x1){var _0x4a403d=_0x4d3a62[_0x22bb3b][_0xa202('0x4e')]({'plain':!![]});_0x3eaabe[_0xa202('0x96')]=_0x3d9e07[_0xa202('0x4d')]['dialCheckDuplicateType']?_0x3d9e07['body']['dialCheckDuplicateType']:_0x3eaabe[_0xa202('0x96')];switch(_0x3eaabe['dialCheckDuplicateType']){case _0xa202('0x97'):_0xff1ced=squel[_0xa202('0x98')]()[_0xa202('0x99')]('cm_hopper')['fromQuery']([_0xa202('0x9a'),_0xa202('0x9b'),'ContactId','ListId',_0xa202('0x62'),_0xa202('0x9c'),_0xa202('0x58')],squel[_0xa202('0x9d')]()[_0xa202('0x79')](_0xa202('0x9a'),'phone')['field']('\x27'+_0x125849+'\x27',_0xa202('0x9b'))['field']('id','ContactId')[_0xa202('0x79')](_0x4a403d[_0xa202('0x9e')]['toString'](),_0xa202('0x9f'))['field'](_0x3d9e07[_0xa202('0x48')]['id'][_0xa202('0xa0')](),_0xa202('0x62'))[_0xa202('0x79')]('\x27'+_0x125849+'\x27',_0xa202('0x9c'))['field']('\x27'+_0x125849+'\x27',_0xa202('0x58'))[_0xa202('0x7b')](_0xa202('0xa1'))[_0xa202('0x3e')](_0xa202('0xa2'))['where'](_0xa202('0xa3'),_0x4a403d[_0xa202('0x9e')][_0xa202('0xa0')]())[_0xa202('0x3e')](_0xa202('0xa4'))[_0xa202('0x3e')](_0xa202('0xa5'),squel[_0xa202('0x9d')]()['field'](_0xa202('0xa6'))['from'](_0xa202('0xa7'))[_0xa202('0x3e')](_0xa202('0x7f'),_0x3d9e07[_0xa202('0x48')]['id'][_0xa202('0xa0')]()))[_0xa202('0x3e')](_0xa202('0xa5'),squel[_0xa202('0x9d')]()[_0xa202('0x79')](_0xa202('0xa8'))['from']('cm_hopper')[_0xa202('0x3e')]('VoiceQueueId\x20=\x20?',_0x3d9e07[_0xa202('0x48')]['id'][_0xa202('0xa0')]())))['toString']();break;case _0xa202('0xa9'):_0xff1ced=squel[_0xa202('0x98')]()[_0xa202('0x99')](_0xa202('0xaa'))['fromQuery'](['phone',_0xa202('0x9b'),_0xa202('0xab'),_0xa202('0x9f'),_0xa202('0x62'),_0xa202('0x9c'),_0xa202('0x58')],squel['select']()[_0xa202('0x79')](_0xa202('0x9a'),_0xa202('0x9a'))[_0xa202('0x79')]('\x27'+_0x125849+'\x27',_0xa202('0x9b'))[_0xa202('0x79')]('id',_0xa202('0xab'))[_0xa202('0x79')](_0x4a403d[_0xa202('0x9e')][_0xa202('0xa0')](),_0xa202('0x9f'))['field'](_0x3d9e07['params']['id'][_0xa202('0xa0')](),'VoiceQueueId')[_0xa202('0x79')]('\x27'+_0x125849+'\x27',_0xa202('0x9c'))['field']('\x27'+_0x125849+'\x27','updatedAt')[_0xa202('0x7b')]('cm_contacts')[_0xa202('0x3e')](_0xa202('0xa2'))[_0xa202('0x3e')]('ListId\x20=\x20?',_0x4a403d[_0xa202('0x9e')][_0xa202('0xa0')]())[_0xa202('0x3e')](_0xa202('0xa4'))[_0xa202('0x3e')](_0xa202('0xa5'),squel['select']()[_0xa202('0x79')]('COALESCE(phone,\x27\x27)')[_0xa202('0x7b')]('cm_hopper')['where']('VoiceQueueId\x20=\x20?',_0x3d9e07[_0xa202('0x48')]['id'][_0xa202('0xa0')]())))['toString']();break;default:_0xff1ced=squel[_0xa202('0x98')]()['into'](_0xa202('0xaa'))[_0xa202('0xac')](['phone',_0xa202('0x9b'),_0xa202('0xab'),_0xa202('0x9f'),_0xa202('0x62'),'createdAt',_0xa202('0x58')],squel[_0xa202('0x9d')]()[_0xa202('0x79')]('phone',_0xa202('0x9a'))[_0xa202('0x79')]('\x27'+_0x125849+'\x27','scheduledAt')['field']('id',_0xa202('0xab'))['field'](_0x4a403d[_0xa202('0x9e')][_0xa202('0xa0')](),_0xa202('0x9f'))[_0xa202('0x79')](_0x3d9e07['params']['id'][_0xa202('0xa0')](),_0xa202('0x62'))[_0xa202('0x79')]('\x27'+_0x125849+'\x27','createdAt')[_0xa202('0x79')]('\x27'+_0x125849+'\x27',_0xa202('0x58'))['from']('cm_contacts')[_0xa202('0x3e')](_0xa202('0xa2'))[_0xa202('0x3e')](_0xa202('0xa3'),_0x4a403d['CmListId'][_0xa202('0xa0')]())['where'](_0xa202('0xa4')))['toString']();}_0x1ac3b0[_0xa202('0x80')](db[_0xa202('0x81')]['query'](_0xff1ced));}return BPromise[_0xa202('0x86')](_0x1ac3b0);}})[_0xa202('0x24')](function(){var _0x46ea78=[];var _0x28cf63=squel[_0xa202('0x98')]()[_0xa202('0x99')](_0xa202('0xad'))['fromQuery']([_0xa202('0xae'),_0xa202('0x9a'),'OrderBy','createdAt','updatedAt'],squel[_0xa202('0x9d')]()['field'](_0xa202('0xaf'))[_0xa202('0x79')](_0xa202('0xb0'))['field'](_0xa202('0xb1'))['field']('\x27'+_0x125849+'\x27',_0xa202('0x9c'))[_0xa202('0x79')]('\x27'+_0x125849+'\x27',_0xa202('0x58'))[_0xa202('0x7b')](_0xa202('0xb2'),'ci')[_0xa202('0x7d')](_0xa202('0xaa'),'h',_0xa202('0xb3'))[_0xa202('0x3e')]('h.scheduledat=?',_0x125849)[_0xa202('0x3e')](_0xa202('0xb4'),_0xa202('0xb5')))['toString']();_0x46ea78[_0xa202('0x80')](db[_0xa202('0x81')][_0xa202('0x34')](_0x28cf63));return BPromise[_0xa202('0x86')](_0x46ea78);})['then'](function(){return _0xb6d500;})['then'](respondWithResult(_0x58fb36,null))[_0xa202('0x4b')](handleError(_0x58fb36,null));};exports[_0xa202('0xb6')]=function(_0x550df2,_0x248e45,_0x3354dd){return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x550df2['params']['id']}})['then'](handleEntityNotFound(_0x248e45,null))[_0xa202('0x24')](function(_0x741343){if(_0x741343){return _0x741343[_0xa202('0xb6')](_0x550df2['query'][_0xa202('0x78')]);}})[_0xa202('0x24')](function(_0x254ad9){if(_0x254ad9){return db[_0xa202('0x5b')][_0xa202('0x23')]({'where':{'ListId':_0x550df2[_0xa202('0x34')][_0xa202('0x78')],'VoiceQueueId':_0x550df2['params']['id']}})[_0xa202('0x24')](function(){return _0x254ad9;});}})['then'](respondWithStatusCode(_0x248e45,null))['catch'](handleError(_0x248e45,null));};exports[_0xa202('0xb7')]=function(_0x183df4,_0x29b1ce,_0x4b151d){var _0x1d0bc9={};var _0x37934d={};var _0x519179;var _0x406aed;return db[_0xa202('0x31')]['findOne']({'where':{'id':_0x183df4[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x29b1ce,null))['then'](function(_0x142aab){if(_0x142aab){_0x519179=_0x142aab;_0x37934d[_0xa202('0x33')]=_[_0xa202('0x35')](db['CmList'][_0xa202('0x49')]);_0x37934d['query']=_[_0xa202('0x35')](_0x183df4[_0xa202('0x34')]);_0x37934d[_0xa202('0x36')]=_[_0xa202('0x4a')](_0x37934d[_0xa202('0x33')],_0x37934d[_0xa202('0x34')]);_0x1d0bc9[_0xa202('0x37')]=_[_0xa202('0x4a')](_0x37934d[_0xa202('0x33')],qs[_0xa202('0x38')](_0x183df4['query'][_0xa202('0x38')]));_0x1d0bc9['attributes']=_0x1d0bc9[_0xa202('0x37')][_0xa202('0x39')]?_0x1d0bc9[_0xa202('0x37')]:_0x37934d[_0xa202('0x33')];_0x1d0bc9[_0xa202('0x3c')]=qs['sort'](_0x183df4[_0xa202('0x34')][_0xa202('0x3d')]);_0x1d0bc9['where']=qs[_0xa202('0x36')](_[_0xa202('0x3f')](_0x183df4['query'],_0x37934d[_0xa202('0x36')]));if(_0x183df4[_0xa202('0x34')][_0xa202('0x40')]){_0x1d0bc9[_0xa202('0x3e')]=_[_0xa202('0x42')](_0x1d0bc9['where'],{'$or':_[_0xa202('0x28')](_0x1d0bc9[_0xa202('0x37')],function(_0x4b13be){var _0x5be091={};_0x5be091[_0x4b13be]={'$like':'%'+_0x183df4['query'][_0xa202('0x40')]+'%'};return _0x5be091;})});}_0x1d0bc9=_[_0xa202('0x42')]({},_0x1d0bc9,_0x183df4['options']);return _0x519179['getBlackLists'](_0x1d0bc9);}})[_0xa202('0x24')](function(_0x1f601b){if(_0x1f601b){_0x406aed=_0x1f601b[_0xa202('0x39')];if(!_0x183df4['query'][_0xa202('0x3a')](_0xa202('0x3b'))){_0x1d0bc9[_0xa202('0x1c')]=qs[_0xa202('0x1c')](_0x183df4['query'][_0xa202('0x1c')]);_0x1d0bc9['offset']=qs[_0xa202('0x1b')](_0x183df4[_0xa202('0x34')][_0xa202('0x1b')]);}return _0x519179[_0xa202('0xb7')](_0x1d0bc9);}})['then'](function(_0x57e7c3){if(_0x57e7c3){return _0x57e7c3?{'count':_0x406aed,'rows':_0x57e7c3}:null;}})[_0xa202('0x24')](respondWithResult(_0x29b1ce,null))[_0xa202('0x4b')](handleError(_0x29b1ce,null));};exports[_0xa202('0xb8')]=function(_0x12a6a2,_0x1a50d9,_0x59aa6e){var _0x5a7816,_0x1450a3;return db['VoiceQueue'][_0xa202('0x2c')]({'where':{'id':_0x12a6a2[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x1a50d9,null))[_0xa202('0x24')](function(_0x2cc6a){if(_0x2cc6a){_0x1450a3=_0x2cc6a;return _0x2cc6a[_0xa202('0xb8')](_0x12a6a2[_0xa202('0x4d')][_0xa202('0x78')],_[_0xa202('0x57')](_0x12a6a2[_0xa202('0x4d')],[_0xa202('0x78'),'id'])||{});}return null;})['spread'](function(_0x2b8202){var _0x3148ef;_0x5a7816=_0x2b8202||[];var _0x653cdf=[];if(_0x2b8202){for(var _0x3930db=0x0;_0x3930db<_0x2b8202[_0xa202('0x39')];_0x3930db+=0x1){var _0x41b827=_0x2b8202[_0x3930db]['get']({'plain':!![]});_0x3148ef=squel['insert']()[_0xa202('0x99')](_0xa202('0xb9'))['fromQuery']([_0xa202('0x9a'),_0xa202('0xab'),_0xa202('0x9f'),'VoiceQueueId',_0xa202('0x9c'),_0xa202('0x58')],squel[_0xa202('0x9d')]()[_0xa202('0x79')](_0xa202('0x9a'),_0xa202('0x9a'))['field']('id',_0xa202('0xab'))['field'](_0x41b827['CmListId'][_0xa202('0xa0')](),'ListId')[_0xa202('0x79')](_0x12a6a2['params']['id']['toString'](),_0xa202('0x62'))[_0xa202('0x79')](_0xa202('0xba'),_0xa202('0x9c'))[_0xa202('0x79')](_0xa202('0xba'),'updatedAt')[_0xa202('0x7b')]('cm_contacts')['where'](_0xa202('0xa2'))[_0xa202('0x3e')](_0xa202('0xa3'),_0x41b827[_0xa202('0x9e')][_0xa202('0xa0')]())[_0xa202('0x3e')](_0xa202('0xa4')))['toString']();_0x653cdf[_0xa202('0x80')](db['sequelize'][_0xa202('0x34')](_0x3148ef));}return BPromise[_0xa202('0x86')](_0x653cdf);}})[_0xa202('0x24')](function(){return _0x5a7816;})[_0xa202('0x24')](respondWithResult(_0x1a50d9,null))[_0xa202('0x4b')](handleError(_0x1a50d9,null));};exports[_0xa202('0xbb')]=function(_0x4e1f0f,_0x2ac59f,_0x47add5){return db[_0xa202('0x31')][_0xa202('0x2c')]({'where':{'id':_0x4e1f0f[_0xa202('0x48')]['id']}})[_0xa202('0x24')](handleEntityNotFound(_0x2ac59f,null))['then'](function(_0x26eed6){if(_0x26eed6){return _0x26eed6[_0xa202('0xbb')](_0x4e1f0f['query'][_0xa202('0x78')]);}})[_0xa202('0x24')](function(_0x7989ea){if(_0x7989ea){return db[_0xa202('0x63')]['destroy']({'where':{'ListId':_0x4e1f0f[_0xa202('0x34')][_0xa202('0x78')],'VoiceQueueId':_0x4e1f0f[_0xa202('0x48')]['id']}})[_0xa202('0x24')](function(){return _0x7989ea;});}})[_0xa202('0x24')](respondWithStatusCode(_0x2ac59f,null))[_0xa202('0x4b')](handleError(_0x2ac59f,null));};
\ No newline at end of file
+var _0x9e54=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','role','VoiceQueues','getHoppers','findOne','CmHopper','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','Team','addTeams','teams','online','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','upsert','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','removeTeams','ids','User','Agents','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','TeamId','includes','all','union','compact','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','omit','spread','userVoiceQueue:save','isArray','getAgents','getMembers','getLists','addLists','dialCheckDuplicateType','always','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','cm_contacts','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','insert','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','into','cm_hopper_additional_phones','CmHopperId','OrderBy','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','moment','bluebird','mustache','path','sox','ejs','squel','jsforce','desk.js','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','destroy','then','get','inbound','QueueCampaigns','outbound','filter','map','value','type','name','UserProfileResource','end','sendStatus','stack','send','VoiceQueue','rawAttributes','fieldName','key','keys','query','filters'];(function(_0x133130,_0x5da155){var _0x160c43=function(_0x111338){while(--_0x111338){_0x133130['push'](_0x133130['shift']());}};_0x160c43(++_0x5da155);}(_0x9e54,0x88));var _0x49e5=function(_0x1896a8,_0x1a9076){_0x1896a8=_0x1896a8-0x0;var _0xb163ac=_0x9e54[_0x1896a8];return _0xb163ac;};'use strict';var emlformat=require(_0x49e5('0x0'));var rimraf=require(_0x49e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x49e5('0x2'));var BPromise=require(_0x49e5('0x3'));var Mustache=require(_0x49e5('0x4'));var util=require('util');var path=require(_0x49e5('0x5'));var sox=require(_0x49e5('0x6'));var csv=require('to-csv');var ejs=require(_0x49e5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x49e5('0x8'));var crypto=require('crypto');var jsforce=require(_0x49e5('0x9'));var deskjs=require(_0x49e5('0xa'));var toCsv=require(_0x49e5('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x49e5('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x49e5('0xd'));var as=require(_0x49e5('0xe'));var hardwareService=require(_0x49e5('0xf'));var logger=require(_0x49e5('0x10'))(_0x49e5('0x11'));var utils=require('../../config/utils');var config=require(_0x49e5('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x49e5('0x13'))['db'];config[_0x49e5('0x14')]=_[_0x49e5('0x15')](config[_0x49e5('0x14')],{'host':_0x49e5('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x49e5('0x17'))[_0x49e5('0x18')](socket);function respondWithStatusCode(_0x5ea43e,_0x56ae34){_0x56ae34=_0x56ae34||0xcc;return function(_0x3b7cd4){if(_0x3b7cd4){return _0x5ea43e['sendStatus'](_0x56ae34);}return _0x5ea43e[_0x49e5('0x19')](_0x56ae34)['end']();};}function respondWithResult(_0x2cc353,_0x13bc7f){_0x13bc7f=_0x13bc7f||0xc8;return function(_0x375488){if(_0x375488){return _0x2cc353['status'](_0x13bc7f)[_0x49e5('0x1a')](_0x375488);}};}function respondWithFilteredResult(_0x273023,_0x37c0d3){return function(_0x1e2723){if(_0x1e2723){var _0xfc4935=typeof _0x37c0d3[_0x49e5('0x1b')]===_0x49e5('0x1c')&&typeof _0x37c0d3['limit']===_0x49e5('0x1c');var _0x200a4e=_0x1e2723['count'];var _0x2370ad=_0xfc4935?0x0:_0x37c0d3['offset'];var _0x305b4c=_0xfc4935?_0x1e2723[_0x49e5('0x1d')]:_0x37c0d3['offset']+_0x37c0d3[_0x49e5('0x1e')];var _0x41c6d0;if(_0x305b4c>=_0x200a4e){_0x305b4c=_0x200a4e;_0x41c6d0=0xc8;}else{_0x41c6d0=0xce;}_0x273023[_0x49e5('0x19')](_0x41c6d0);return _0x273023[_0x49e5('0x1f')](_0x49e5('0x20'),_0x2370ad+'-'+_0x305b4c+'/'+_0x200a4e)[_0x49e5('0x1a')](_0x1e2723);}return null;};}function patchUpdates(_0x5e8569){return function(_0x1a2f8e){try{jsonpatch['apply'](_0x1a2f8e,_0x5e8569,!![]);}catch(_0x3f2f6b){return BPromise[_0x49e5('0x21')](_0x3f2f6b);}return _0x1a2f8e[_0x49e5('0x22')]();};}function saveUpdates(_0x2d1d63,_0x25ecb9){return function(_0xe5b1ea){if(_0xe5b1ea){return _0xe5b1ea['update'](_0x2d1d63)['then'](function(_0xd96520){return _0xd96520;});}return null;};}function removeEntity(_0x3bdd2b,_0x5531bf){return function(_0x3a6837){if(_0x3a6837){return _0x3a6837[_0x49e5('0x23')]()[_0x49e5('0x24')](function(){var _0x16f98f=_0x3a6837[_0x49e5('0x25')]({'plain':!![]});var _0x21b29a=[{'name':'VoiceQueues','value':_0x49e5('0x26'),'ignore':![]},{'name':_0x49e5('0x27'),'value':_0x49e5('0x28'),'ignore':![]}];var _0x5d0700=_(_0x21b29a)[_0x49e5('0x29')]('ignore')[_0x49e5('0x2a')](_0x49e5('0x2b'))['value']();if(_['includes'](_0x5d0700,_0x16f98f[_0x49e5('0x2c')])){return;}var _0x3e7f05=_['find'](_0x21b29a,[_0x49e5('0x2b'),_0x16f98f['type']])[_0x49e5('0x2d')];return db[_0x49e5('0x2e')][_0x49e5('0x23')]({'where':{'type':_0x3e7f05,'resourceId':_0x16f98f['id']}})[_0x49e5('0x24')](function(){return _0x3a6837;});})[_0x49e5('0x24')](function(){_0x3bdd2b['status'](0xcc)[_0x49e5('0x2f')]();});}};}function handleEntityNotFound(_0x202221,_0x412d7f){return function(_0x412f8e){if(!_0x412f8e){_0x202221[_0x49e5('0x30')](0x194);}return _0x412f8e;};}function handleError(_0x53c2fc,_0x31381a){_0x31381a=_0x31381a||0x1f4;return function(_0x24ccd1){logger['error'](_0x24ccd1[_0x49e5('0x31')]);if(_0x24ccd1['name']){delete _0x24ccd1['name'];}_0x53c2fc[_0x49e5('0x19')](_0x31381a)[_0x49e5('0x32')](_0x24ccd1);};}exports['index']=function(_0x54cd07,_0x10c5da){var _0x5312af={},_0x163268={},_0x40b46b={'count':0x0,'rows':[]};var _0x3dfda0=_[_0x49e5('0x2a')](db[_0x49e5('0x33')][_0x49e5('0x34')],function(_0x378ba7){return{'name':_0x378ba7[_0x49e5('0x35')],'type':_0x378ba7[_0x49e5('0x2c')][_0x49e5('0x36')]};});_0x163268['model']=_[_0x49e5('0x2a')](_0x3dfda0,'name');_0x163268['query']=_[_0x49e5('0x37')](_0x54cd07[_0x49e5('0x38')]);_0x163268[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x163268[_0x49e5('0x3b')],_0x163268[_0x49e5('0x38')]);_0x5312af[_0x49e5('0x3c')]=_[_0x49e5('0x3a')](_0x163268[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0x54cd07[_0x49e5('0x38')][_0x49e5('0x3d')]));_0x5312af[_0x49e5('0x3c')]=_0x5312af[_0x49e5('0x3c')][_0x49e5('0x3e')]?_0x5312af['attributes']:_0x163268[_0x49e5('0x3b')];if(!_0x54cd07['query'][_0x49e5('0x3f')](_0x49e5('0x40'))){_0x5312af['limit']=qs[_0x49e5('0x1e')](_0x54cd07[_0x49e5('0x38')]['limit']);_0x5312af[_0x49e5('0x1b')]=qs['offset'](_0x54cd07[_0x49e5('0x38')][_0x49e5('0x1b')]);}_0x5312af[_0x49e5('0x41')]=qs['sort'](_0x54cd07[_0x49e5('0x38')][_0x49e5('0x42')]);_0x5312af[_0x49e5('0x43')]=qs['filters'](_[_0x49e5('0x44')](_0x54cd07['query'],_0x163268[_0x49e5('0x39')]),_0x3dfda0);if(_0x54cd07['query'][_0x49e5('0x29')]){_0x5312af[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x5312af[_0x49e5('0x43')],{'$or':_[_0x49e5('0x2a')](_0x3dfda0,function(_0x13fbb6){if(_0x13fbb6[_0x49e5('0x2c')]!==_0x49e5('0x46')){var _0x343cb3={};_0x343cb3[_0x13fbb6[_0x49e5('0x2d')]]={'$like':'%'+_0x54cd07['query'][_0x49e5('0x29')]+'%'};return _0x343cb3;}})});}_0x5312af=_[_0x49e5('0x45')]({},_0x5312af,_0x54cd07['options']);var _0x42e5a9={'where':_0x5312af[_0x49e5('0x43')]};return db[_0x49e5('0x33')]['count'](_0x42e5a9)[_0x49e5('0x24')](function(_0x2df677){_0x40b46b['count']=_0x2df677;if(_0x54cd07[_0x49e5('0x38')][_0x49e5('0x47')]){_0x5312af[_0x49e5('0x48')]=[{'all':!![]}];}return db['VoiceQueue'][_0x49e5('0x49')](_0x5312af);})[_0x49e5('0x24')](function(_0x197ee3){_0x40b46b[_0x49e5('0x4a')]=_0x197ee3;return _0x40b46b;})[_0x49e5('0x24')](respondWithFilteredResult(_0x10c5da,_0x5312af))[_0x49e5('0x4b')](handleError(_0x10c5da,null));};exports[_0x49e5('0x4c')]=function(_0xbeab53,_0x565aad){var _0x2422ed={'raw':![],'where':{'id':_0xbeab53[_0x49e5('0x4d')]['id']}},_0x18e4d2={};_0x18e4d2[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x33')][_0x49e5('0x34')]);_0x18e4d2[_0x49e5('0x38')]=_[_0x49e5('0x37')](_0xbeab53[_0x49e5('0x38')]);_0x18e4d2[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x18e4d2[_0x49e5('0x3b')],_0x18e4d2['query']);_0x2422ed[_0x49e5('0x3c')]=_[_0x49e5('0x3a')](_0x18e4d2[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0xbeab53['query'][_0x49e5('0x3d')]));_0x2422ed[_0x49e5('0x3c')]=_0x2422ed[_0x49e5('0x3c')][_0x49e5('0x3e')]?_0x2422ed['attributes']:_0x18e4d2[_0x49e5('0x3b')];if(_0xbeab53[_0x49e5('0x38')][_0x49e5('0x47')]){_0x2422ed[_0x49e5('0x48')]=[{'all':!![]}];}_0x2422ed=_['merge']({},_0x2422ed,_0xbeab53[_0x49e5('0x4e')]);return db[_0x49e5('0x33')][_0x49e5('0x4f')](_0x2422ed)[_0x49e5('0x24')](handleEntityNotFound(_0x565aad,null))[_0x49e5('0x24')](respondWithResult(_0x565aad,null))['catch'](handleError(_0x565aad,null));};exports[_0x49e5('0x50')]=function(_0x7c1231,_0x3f3e6d){return db[_0x49e5('0x33')][_0x49e5('0x50')](_0x7c1231[_0x49e5('0x51')],{})[_0x49e5('0x24')](function(_0x40ef81){var _0x4a437c=_0x7c1231['user']['get']({'plain':!![]});if(!_0x4a437c)throw new Error(_0x49e5('0x52'));if(_0x4a437c['role']===_0x49e5('0x53')){var _0x1d551b=_0x40ef81['get']({'plain':!![]});var _0x3aca10=[{'name':'VoiceQueues','value':_0x49e5('0x26')},{'name':_0x49e5('0x27'),'value':_0x49e5('0x28')}];var _0x447a7b=_[_0x49e5('0x4f')](_0x3aca10,[_0x49e5('0x2b'),_0x1d551b[_0x49e5('0x2c')]])['name'];return db[_0x49e5('0x54')][_0x49e5('0x4f')]({'where':{'name':_0x447a7b,'userProfileId':_0x4a437c[_0x49e5('0x55')]},'raw':!![]})[_0x49e5('0x24')](function(_0x245636){if(_0x245636&&_0x245636['autoAssociation']===0x0){return db[_0x49e5('0x2e')][_0x49e5('0x50')]({'name':_0x1d551b['name'],'resourceId':_0x1d551b['id'],'type':_0x245636['name'],'sectionId':_0x245636['id']},{})[_0x49e5('0x24')](function(){return _0x40ef81;});}else{return _0x40ef81;}})['catch'](function(_0x5dfc26){logger[_0x49e5('0x56')](_0x49e5('0x57'),_0x5dfc26);throw _0x5dfc26;});}return _0x40ef81;})[_0x49e5('0x24')](respondWithResult(_0x3f3e6d,0xc9))[_0x49e5('0x4b')](handleError(_0x3f3e6d,null));};exports['clone']=function(_0x146304,_0xafe477){var _0x3efa65={'where':{'id':_0x146304[_0x49e5('0x4d')]['id']}},_0x426a2c={};_0x426a2c['model']=_['keys'](db['VoiceQueue']['rawAttributes']);_0x3efa65['attributes']=_[_0x49e5('0x3a')](_0x426a2c['model'],qs[_0x49e5('0x3d')](_0x146304[_0x49e5('0x38')][_0x49e5('0x3d')]));_0x3efa65[_0x49e5('0x3c')]=_0x3efa65[_0x49e5('0x3c')][_0x49e5('0x3e')]?_0x3efa65[_0x49e5('0x3c')]:_0x426a2c[_0x49e5('0x3b')];if(_0x146304[_0x49e5('0x38')][_0x49e5('0x47')]){_0x3efa65[_0x49e5('0x48')]=[{'all':!![]}];}_0x3efa65=_[_0x49e5('0x45')]({},_0x3efa65,_0x146304[_0x49e5('0x4e')]);return db[_0x49e5('0x33')][_0x49e5('0x4f')](_0x3efa65)['then'](handleEntityNotFound(_0xafe477,null))['then'](function(_0x3175a3){if(_0x3175a3){var _0x1f7d2d=_0x3175a3[_0x49e5('0x25')]({'plain':!![]});_0x1f7d2d=qs['omit'](_0x1f7d2d,['id',_0x49e5('0x58'),_0x49e5('0x59')]);_0x146304[_0x49e5('0x51')]=_['omit'](_0x146304[_0x49e5('0x51')],['id',_0x49e5('0x58'),_0x49e5('0x59')]);return db[_0x49e5('0x33')][_0x49e5('0x50')](_[_0x49e5('0x45')](_0x1f7d2d,_0x146304[_0x49e5('0x51')]),{'include':_0x146304[_0x49e5('0x38')]['includeAll']?[{'all':!![]}]:undefined})[_0x49e5('0x24')](function(_0x1c3135){var _0x34a920=_0x146304[_0x49e5('0x53')][_0x49e5('0x25')]({'plain':!![]});if(!_0x34a920)throw new Error(_0x49e5('0x52'));if(_0x34a920[_0x49e5('0x5a')]===_0x49e5('0x53')){var _0x14bad=_0x1c3135[_0x49e5('0x25')]({'plain':!![]});var _0x3f35b6=[{'name':_0x49e5('0x5b'),'value':_0x49e5('0x26')},{'name':_0x49e5('0x27'),'value':_0x49e5('0x28')}];var _0x47e48c=_[_0x49e5('0x4f')](_0x3f35b6,[_0x49e5('0x2b'),_0x14bad[_0x49e5('0x2c')]])[_0x49e5('0x2d')];return db[_0x49e5('0x54')][_0x49e5('0x4f')]({'where':{'name':_0x47e48c,'userProfileId':_0x34a920['userProfileId']},'raw':!![]})[_0x49e5('0x24')](function(_0xc57d21){if(_0xc57d21&&_0xc57d21['autoAssociation']===0x0){return db[_0x49e5('0x2e')][_0x49e5('0x50')]({'name':_0x14bad[_0x49e5('0x2d')],'resourceId':_0x14bad['id'],'type':_0xc57d21['name'],'sectionId':_0xc57d21['id']},{})[_0x49e5('0x24')](function(){return _0x1c3135;});}else{return _0x1c3135;}})['catch'](function(_0x3f438c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f438c);throw _0x3f438c;});}return _0x1c3135;});}})[_0x49e5('0x24')](respondWithResult(_0xafe477,0xc9))[_0x49e5('0x4b')](handleError(_0xafe477,null));};exports['update']=function(_0x7de88f,_0x89b38e){if(_0x7de88f['body']['id']){delete _0x7de88f['body']['id'];}return db[_0x49e5('0x33')][_0x49e5('0x4f')]({'where':{'id':_0x7de88f[_0x49e5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x89b38e,null))[_0x49e5('0x24')](saveUpdates(_0x7de88f[_0x49e5('0x51')],null))[_0x49e5('0x24')](respondWithResult(_0x89b38e,null))[_0x49e5('0x4b')](handleError(_0x89b38e,null));};exports['destroy']=function(_0x45cb25,_0x58a1cf){return db[_0x49e5('0x33')]['find']({'where':{'id':_0x45cb25[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x58a1cf,null))[_0x49e5('0x24')](removeEntity(_0x58a1cf,null))[_0x49e5('0x4b')](handleError(_0x58a1cf,null));};exports[_0x49e5('0x5c')]=function(_0x3dcc38,_0x59586e,_0x3dff80){var _0x2a7079={'raw':![],'where':{}};var _0x2224aa={};var _0x40c04e={'count':0x0,'rows':[]};return db[_0x49e5('0x33')][_0x49e5('0x5d')]({'where':{'id':_0x3dcc38['params']['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x59586e,null))[_0x49e5('0x24')](function(_0x1f52d5){if(_0x1f52d5){_0x2224aa[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x5e')][_0x49e5('0x34')]);_0x2224aa[_0x49e5('0x38')]=_[_0x49e5('0x37')](_0x3dcc38[_0x49e5('0x38')]);_0x2224aa[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x2224aa[_0x49e5('0x3b')],_0x2224aa[_0x49e5('0x38')]);_0x2a7079['attributes']=_['intersection'](_0x2224aa[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0x3dcc38['query'][_0x49e5('0x3d')]));_0x2a7079[_0x49e5('0x3c')]=_0x2a7079[_0x49e5('0x3c')][_0x49e5('0x3e')]?_0x2a7079[_0x49e5('0x3c')]:_0x2224aa[_0x49e5('0x3b')];if(!_0x3dcc38['query'][_0x49e5('0x3f')]('nolimit')){_0x2a7079[_0x49e5('0x1e')]=qs[_0x49e5('0x1e')](_0x3dcc38[_0x49e5('0x38')][_0x49e5('0x1e')]);_0x2a7079['offset']=qs[_0x49e5('0x1b')](_0x3dcc38[_0x49e5('0x38')][_0x49e5('0x1b')]);}_0x2a7079[_0x49e5('0x41')]=qs['sort'](_0x3dcc38[_0x49e5('0x38')][_0x49e5('0x42')]);_0x2a7079['where']=qs[_0x49e5('0x39')](_[_0x49e5('0x44')](_0x3dcc38[_0x49e5('0x38')],_0x2224aa[_0x49e5('0x39')]));_0x2a7079['where'][_0x49e5('0x5f')]=_0x1f52d5['id'];if(_0x3dcc38[_0x49e5('0x38')][_0x49e5('0x29')]){_0x2a7079[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x2a7079[_0x49e5('0x43')],{'$or':_[_0x49e5('0x2a')](_0x2a7079[_0x49e5('0x3c')],function(_0x3bde6f){var _0x31d74f={};_0x31d74f[_0x3bde6f]={'$like':'%'+_0x3dcc38[_0x49e5('0x38')]['filter']+'%'};return _0x31d74f;})});}_0x2a7079=_[_0x49e5('0x45')]({},_0x2a7079,_0x3dcc38[_0x49e5('0x4e')]);return db['CmHopper'][_0x49e5('0x1d')]({'where':_0x2a7079[_0x49e5('0x43')]})['then'](function(_0x50d80e){_0x40c04e[_0x49e5('0x1d')]=_0x50d80e;if(_0x3dcc38['query'][_0x49e5('0x47')]){_0x2a7079[_0x49e5('0x48')]=[{'all':!![]}];}return db[_0x49e5('0x5e')]['findAll'](_0x2a7079);})['then'](function(_0x215f89){_0x40c04e[_0x49e5('0x4a')]=_0x215f89;return _0x40c04e;});}})[_0x49e5('0x24')](respondWithFilteredResult(_0x59586e,_0x2a7079))[_0x49e5('0x4b')](handleError(_0x59586e,null));};exports[_0x49e5('0x60')]=function(_0x575e61,_0x170e4c,_0x698724){var _0x3554af={'raw':!![],'where':{}};var _0x43c92b={};var _0x2b152a={'count':0x0,'rows':[]};return db[_0x49e5('0x33')][_0x49e5('0x5d')]({'where':{'id':_0x575e61[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x170e4c,null))[_0x49e5('0x24')](function(_0x1a4a8d){if(_0x1a4a8d){_0x43c92b[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x61')][_0x49e5('0x34')]);_0x43c92b[_0x49e5('0x38')]=_['keys'](_0x575e61['query']);_0x43c92b['filters']=_['intersection'](_0x43c92b['model'],_0x43c92b[_0x49e5('0x38')]);_0x3554af['attributes']=_['intersection'](_0x43c92b['model'],qs[_0x49e5('0x3d')](_0x575e61[_0x49e5('0x38')][_0x49e5('0x3d')]));_0x3554af[_0x49e5('0x3c')]=_0x3554af['attributes'][_0x49e5('0x3e')]?_0x3554af[_0x49e5('0x3c')]:_0x43c92b[_0x49e5('0x3b')];if(!_0x575e61[_0x49e5('0x38')][_0x49e5('0x3f')]('nolimit')){_0x3554af[_0x49e5('0x1e')]=qs[_0x49e5('0x1e')](_0x575e61[_0x49e5('0x38')]['limit']);_0x3554af[_0x49e5('0x1b')]=qs[_0x49e5('0x1b')](_0x575e61[_0x49e5('0x38')][_0x49e5('0x1b')]);}_0x3554af[_0x49e5('0x41')]=qs[_0x49e5('0x42')](_0x575e61[_0x49e5('0x38')][_0x49e5('0x42')]);_0x3554af[_0x49e5('0x43')]=qs[_0x49e5('0x39')](_[_0x49e5('0x44')](_0x575e61[_0x49e5('0x38')],_0x43c92b['filters']));_0x3554af['where'][_0x49e5('0x5f')]=_0x1a4a8d['id'];if(_0x575e61[_0x49e5('0x38')]['filter']){_0x3554af[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x3554af[_0x49e5('0x43')],{'$or':_['map'](_0x3554af[_0x49e5('0x3c')],function(_0x2ecb07){var _0x3dfd36={};_0x3dfd36[_0x2ecb07]={'$like':'%'+_0x575e61['query'][_0x49e5('0x29')]+'%'};return _0x3dfd36;})});}_0x3554af=_[_0x49e5('0x45')]({},_0x3554af,_0x575e61[_0x49e5('0x4e')]);return db[_0x49e5('0x61')][_0x49e5('0x1d')]({'where':_0x3554af[_0x49e5('0x43')]})['then'](function(_0x4d0dd6){_0x2b152a[_0x49e5('0x1d')]=_0x4d0dd6;if(_0x575e61['query'][_0x49e5('0x47')]){_0x3554af['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x3554af);})[_0x49e5('0x24')](function(_0x1196a5){_0x2b152a['rows']=_0x1196a5;return _0x2b152a;});}})[_0x49e5('0x24')](respondWithFilteredResult(_0x170e4c,_0x3554af))['catch'](handleError(_0x170e4c,null));};exports[_0x49e5('0x62')]=function(_0x2dada0,_0x3de325,_0x4d0c68){var _0x12252f={'raw':!![],'where':{}};var _0x399d89={};var _0x48b8ee={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x2dada0['params']['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x3de325,null))[_0x49e5('0x24')](function(_0x3b682b){if(_0x3b682b){_0x399d89['model']=_[_0x49e5('0x37')](db[_0x49e5('0x63')][_0x49e5('0x34')]);_0x399d89[_0x49e5('0x38')]=_[_0x49e5('0x37')](_0x2dada0[_0x49e5('0x38')]);_0x399d89[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x399d89['model'],_0x399d89['query']);_0x12252f['attributes']=_[_0x49e5('0x3a')](_0x399d89['model'],qs[_0x49e5('0x3d')](_0x2dada0['query'][_0x49e5('0x3d')]));_0x12252f['attributes']=_0x12252f['attributes'][_0x49e5('0x3e')]?_0x12252f[_0x49e5('0x3c')]:_0x399d89[_0x49e5('0x3b')];if(!_0x2dada0[_0x49e5('0x38')][_0x49e5('0x3f')](_0x49e5('0x40'))){_0x12252f['limit']=qs[_0x49e5('0x1e')](_0x2dada0['query'][_0x49e5('0x1e')]);_0x12252f[_0x49e5('0x1b')]=qs['offset'](_0x2dada0['query'][_0x49e5('0x1b')]);}_0x12252f[_0x49e5('0x41')]=qs[_0x49e5('0x42')](_0x2dada0[_0x49e5('0x38')][_0x49e5('0x42')]);_0x12252f['where']=qs[_0x49e5('0x39')](_[_0x49e5('0x44')](_0x2dada0[_0x49e5('0x38')],_0x399d89[_0x49e5('0x39')]));_0x12252f['where'][_0x49e5('0x5f')]=_0x3b682b['id'];if(_0x2dada0[_0x49e5('0x38')]['filter']){_0x12252f[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x12252f[_0x49e5('0x43')],{'$or':_[_0x49e5('0x2a')](_0x12252f[_0x49e5('0x3c')],function(_0xb2fa24){var _0x2bc075={};_0x2bc075[_0xb2fa24]={'$like':'%'+_0x2dada0[_0x49e5('0x38')][_0x49e5('0x29')]+'%'};return _0x2bc075;})});}_0x12252f=_[_0x49e5('0x45')]({},_0x12252f,_0x2dada0['options']);return db[_0x49e5('0x63')][_0x49e5('0x1d')]({'where':_0x12252f[_0x49e5('0x43')]})['then'](function(_0x5c070a){_0x48b8ee[_0x49e5('0x1d')]=_0x5c070a;if(_0x2dada0[_0x49e5('0x38')][_0x49e5('0x47')]){_0x12252f[_0x49e5('0x48')]=[{'all':!![]}];}return db[_0x49e5('0x63')][_0x49e5('0x49')](_0x12252f);})[_0x49e5('0x24')](function(_0x2e6388){_0x48b8ee[_0x49e5('0x4a')]=_0x2e6388;return _0x48b8ee;});}})[_0x49e5('0x24')](respondWithFilteredResult(_0x3de325,_0x12252f))['catch'](handleError(_0x3de325,null));};exports['getHopperBlacks']=function(_0x17f599,_0x30f905,_0x2895d1){var _0x5b8ac8={'raw':!![],'where':{}};var _0x253a5f={};var _0x388aa6={'count':0x0,'rows':[]};return db[_0x49e5('0x33')][_0x49e5('0x5d')]({'where':{'id':_0x17f599[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x30f905,null))['then'](function(_0x69a56f){if(_0x69a56f){_0x253a5f[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x64')][_0x49e5('0x34')]);_0x253a5f[_0x49e5('0x38')]=_['keys'](_0x17f599[_0x49e5('0x38')]);_0x253a5f[_0x49e5('0x39')]=_['intersection'](_0x253a5f[_0x49e5('0x3b')],_0x253a5f[_0x49e5('0x38')]);_0x5b8ac8[_0x49e5('0x3c')]=_['intersection'](_0x253a5f[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0x17f599[_0x49e5('0x38')]['fields']));_0x5b8ac8['attributes']=_0x5b8ac8[_0x49e5('0x3c')]['length']?_0x5b8ac8[_0x49e5('0x3c')]:_0x253a5f['model'];if(!_0x17f599['query'][_0x49e5('0x3f')](_0x49e5('0x40'))){_0x5b8ac8[_0x49e5('0x1e')]=qs[_0x49e5('0x1e')](_0x17f599[_0x49e5('0x38')][_0x49e5('0x1e')]);_0x5b8ac8['offset']=qs[_0x49e5('0x1b')](_0x17f599[_0x49e5('0x38')][_0x49e5('0x1b')]);}_0x5b8ac8[_0x49e5('0x41')]=qs[_0x49e5('0x42')](_0x17f599[_0x49e5('0x38')][_0x49e5('0x42')]);_0x5b8ac8['where']=qs['filters'](_['pick'](_0x17f599[_0x49e5('0x38')],_0x253a5f[_0x49e5('0x39')]));_0x5b8ac8[_0x49e5('0x43')][_0x49e5('0x5f')]=_0x69a56f['id'];if(_0x17f599[_0x49e5('0x38')][_0x49e5('0x29')]){_0x5b8ac8[_0x49e5('0x43')]=_['merge'](_0x5b8ac8[_0x49e5('0x43')],{'$or':_[_0x49e5('0x2a')](_0x5b8ac8['attributes'],function(_0x2ed004){var _0x146289={};_0x146289[_0x2ed004]={'$like':'%'+_0x17f599[_0x49e5('0x38')][_0x49e5('0x29')]+'%'};return _0x146289;})});}_0x5b8ac8=_[_0x49e5('0x45')]({},_0x5b8ac8,_0x17f599['options']);return db[_0x49e5('0x64')]['count']({'where':_0x5b8ac8[_0x49e5('0x43')]})[_0x49e5('0x24')](function(_0x257967){_0x388aa6['count']=_0x257967;if(_0x17f599[_0x49e5('0x38')]['includeAll']){_0x5b8ac8[_0x49e5('0x48')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x49e5('0x49')](_0x5b8ac8);})[_0x49e5('0x24')](function(_0x2a3c3f){_0x388aa6['rows']=_0x2a3c3f;return _0x388aa6;});}})['then'](respondWithFilteredResult(_0x30f905,_0x5b8ac8))[_0x49e5('0x4b')](handleError(_0x30f905,null));};exports[_0x49e5('0x65')]=function(_0x56f89f,_0x5c46fe,_0x40c25b){var _0x125688={};var _0x2d1134={};var _0x1eb42c;var _0x49475d;return db[_0x49e5('0x33')][_0x49e5('0x5d')]({'where':{'id':_0x56f89f['params']['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x5c46fe,null))[_0x49e5('0x24')](function(_0x5de03d){if(_0x5de03d){_0x1eb42c=_0x5de03d;_0x2d1134[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x66')][_0x49e5('0x34')]);_0x2d1134['query']=_[_0x49e5('0x37')](_0x56f89f[_0x49e5('0x38')]);_0x2d1134[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x2d1134[_0x49e5('0x3b')],_0x2d1134[_0x49e5('0x38')]);_0x125688[_0x49e5('0x3c')]=_[_0x49e5('0x3a')](_0x2d1134[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0x56f89f[_0x49e5('0x38')][_0x49e5('0x3d')]));_0x125688[_0x49e5('0x3c')]=_0x125688['attributes'][_0x49e5('0x3e')]?_0x125688['attributes']:_0x2d1134[_0x49e5('0x3b')];_0x125688[_0x49e5('0x41')]=qs[_0x49e5('0x42')](_0x56f89f[_0x49e5('0x38')]['sort']);_0x125688[_0x49e5('0x43')]=qs[_0x49e5('0x39')](_[_0x49e5('0x44')](_0x56f89f['query'],_0x2d1134['filters']));if(_0x56f89f['query'][_0x49e5('0x29')]){_0x125688[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x125688[_0x49e5('0x43')],{'$or':_[_0x49e5('0x2a')](_0x125688[_0x49e5('0x3c')],function(_0x2f9b9b){var _0x34cabc={};_0x34cabc[_0x2f9b9b]={'$like':'%'+_0x56f89f[_0x49e5('0x38')][_0x49e5('0x29')]+'%'};return _0x34cabc;})});}_0x125688=_[_0x49e5('0x45')]({},_0x125688,_0x56f89f[_0x49e5('0x4e')]);return _0x1eb42c[_0x49e5('0x65')](_0x125688);}})[_0x49e5('0x24')](function(_0x4608e9){if(_0x4608e9){_0x49475d=_0x4608e9[_0x49e5('0x3e')];if(!_0x56f89f[_0x49e5('0x38')][_0x49e5('0x3f')](_0x49e5('0x40'))){_0x125688[_0x49e5('0x1e')]=qs[_0x49e5('0x1e')](_0x56f89f[_0x49e5('0x38')][_0x49e5('0x1e')]);_0x125688[_0x49e5('0x1b')]=qs[_0x49e5('0x1b')](_0x56f89f['query']['offset']);}return _0x1eb42c[_0x49e5('0x65')](_0x125688);}})[_0x49e5('0x24')](function(_0x32c0a9){if(_0x32c0a9){return _0x32c0a9?{'count':_0x49475d,'rows':_0x32c0a9}:null;}})[_0x49e5('0x24')](respondWithResult(_0x5c46fe,null))[_0x49e5('0x4b')](handleError(_0x5c46fe,null));};exports[_0x49e5('0x67')]=function(_0x1de923,_0x112471,_0x2d650c){var _0xa485ae=_0x1de923['body'][_0x49e5('0x68')];var _0x4762ae=_['map'](_0xa485ae,'id');return db[_0x49e5('0x66')][_0x49e5('0x49')]({'where':{'id':_0x4762ae},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x49e5('0x2d'),_0x49e5('0x69'),_0x49e5('0x6a'),_0x49e5('0x6b')],'raw':!![]}]})[_0x49e5('0x24')](function(_0x5a340e){if(_0x5a340e){var _0x2dc452=_[_0x49e5('0x6c')](_0x5a340e,function(_0x4099eb){var _0x2cf5dc=_0x4099eb[_0x49e5('0x25')]({'plain':!![]});_0x2cf5dc['Agents'][_0x49e5('0x6d')](function(_0x2cb938){_0x2cb938[_0x49e5('0x6e')]=_['find'](_0xa485ae,{'id':_0x2cf5dc['id']})[_0x49e5('0x6e')];});return _0x2cf5dc['Agents'];});return db[_0x49e5('0x33')][_0x49e5('0x4f')]({'where':{'id':_0x1de923['params']['id']}})[_0x49e5('0x24')](function(_0x292e66){return db[_0x49e5('0x6f')][_0x49e5('0x70')](function(_0x322be2){return _0x292e66[_0x49e5('0x67')](_0x4762ae,{'transaction':_0x322be2})[_0x49e5('0x24')](function(){return BPromise['each'](_0xa485ae,function(_0x117e42){return db['TeamVoiceQueue'][_0x49e5('0x71')]({'TeamId':_0x117e42['id'],'VoiceQueueId':_0x1de923[_0x49e5('0x4d')]['id'],'penalty':_0x117e42[_0x49e5('0x6e')]},{'transaction':_0x322be2});});})[_0x49e5('0x24')](function(){return BPromise[_0x49e5('0x72')](_0x2dc452,function(_0xf71616){return db[_0x49e5('0x73')][_0x49e5('0x74')]({'where':{'UserId':_0xf71616['id'],'VoiceQueueId':_0x1de923[_0x49e5('0x4d')]['id']},'defaults':{'penalty':_0xf71616['penalty']},'transaction':_0x322be2});});})['then'](function(){return BPromise[_0x49e5('0x72')](_['filter'](_0x2dc452,{'online':!![]}),function(_0x3b4a09){return db[_0x49e5('0x75')][_0x49e5('0x71')]({'membername':_0x3b4a09[_0x49e5('0x2d')],'UserId':_0x3b4a09['id'],'queue_name':_0x292e66[_0x49e5('0x2d')],'VoiceQueueId':_0x292e66['id'],'interface':_[_0x49e5('0x76')](_0x3b4a09[_0x49e5('0x6b')])?util[_0x49e5('0x77')](_0x49e5('0x78'),_0x3b4a09[_0x49e5('0x2d')]):_0x3b4a09['interface'],'paused':_0x3b4a09[_0x49e5('0x6a')]||![],'penalty':_0x3b4a09[_0x49e5('0x6e')]},{'transaction':_0x322be2});});})['then'](function(){_0x2dc452[_0x49e5('0x6d')](function(_0x58cfd6){socket[_0x49e5('0x79')]('userVoiceQueue:save',{'UserId':_0x58cfd6['id'],'VoiceQueueId':_0x292e66['id']});});});});});}})[_0x49e5('0x24')](respondWithStatusCode(_0x112471,null))[_0x49e5('0x4b')](handleError(_0x112471,null));};exports[_0x49e5('0x7a')]=function(_0x410263,_0x48191b,_0xd535a2){return db['Team']['findAll']({'where':{'id':_0x410263[_0x49e5('0x38')][_0x49e5('0x7b')]},'attributes':['id'],'include':[{'model':db[_0x49e5('0x7c')],'as':_0x49e5('0x7d'),'attributes':['id'],'raw':!![]}]})[_0x49e5('0x24')](handleEntityNotFound(_0x48191b,null))[_0x49e5('0x24')](function(_0x441832){var _0x3722ed=_['map'](_0x441832,'id');var _0x308667=[];var _0x38849d=[];var _0x41a71=squel[_0x49e5('0x7e')]();_0x41a71[_0x49e5('0x7f')](_0x49e5('0x80'))[_0x49e5('0x81')](_0x49e5('0x82'),'tq')[_0x49e5('0x83')](_0x49e5('0x84'),'ut',_0x49e5('0x85'))[_0x49e5('0x43')](_0x49e5('0x86'),_0x410263[_0x49e5('0x4d')]['id']);for(var _0x57274d=0x0;_0x57274d<_0x441832['length'];_0x57274d+=0x1){let _0x2946f5=_0x441832[_0x57274d];for(var _0x477e26=0x0;_0x477e26<_0x2946f5[_0x49e5('0x7d')][_0x49e5('0x3e')];_0x477e26+=0x1){let _0x458c26=_0x2946f5[_0x49e5('0x7d')][_0x477e26];var _0x13513d=_0x41a71[_0x49e5('0x87')]();_0x13513d[_0x49e5('0x43')](_0x49e5('0x88'),_0x458c26['id']);_0x38849d[_0x49e5('0x89')](db[_0x49e5('0x6f')][_0x49e5('0x38')](_0x13513d[_0x49e5('0x8a')](),{'type':db['sequelize'][_0x49e5('0x8b')][_0x49e5('0x8c')]})[_0x49e5('0x24')](function(_0x467f1f){if(_0x467f1f['length']===0x1){return _0x458c26['id'];}else{var _0x398437=_['every'](_[_0x49e5('0x2a')](_0x467f1f,_0x49e5('0x8d')),function(_0x5a796c){return _[_0x49e5('0x8e')](_0x3722ed,_0x5a796c);});if(_0x398437){return _0x458c26['id'];}}}));}}return BPromise[_0x49e5('0x8f')](_0x38849d)[_0x49e5('0x24')](function(_0x1fa0ae){_0x308667=_(_0x308667)[_0x49e5('0x90')](_0x1fa0ae)[_0x49e5('0x91')]()[_0x49e5('0x2b')]();return db[_0x49e5('0x33')][_0x49e5('0x4f')]({'where':{'id':_0x410263['params']['id']}})['then'](function(_0x14e80a){return db[_0x49e5('0x6f')][_0x49e5('0x70')](function(_0x3dc308){return _0x14e80a[_0x49e5('0x7a')](_0x410263[_0x49e5('0x38')][_0x49e5('0x7b')],{'transaction':_0x3dc308})[_0x49e5('0x24')](function(){if(!_[_0x49e5('0x92')](_0x308667)){return _0x14e80a[_0x49e5('0x93')](_0x308667,{'transaction':_0x3dc308})[_0x49e5('0x24')](function(){return db[_0x49e5('0x75')][_0x49e5('0x23')]({'where':{'VoiceQueueId':_0x410263[_0x49e5('0x4d')]['id'],'UserId':_0x308667},'transaction':_0x3dc308});});}})[_0x49e5('0x24')](function(){_0x308667[_0x49e5('0x6d')](function(_0x4d011e){socket[_0x49e5('0x79')](_0x49e5('0x94'),{'UserId':_0x4d011e,'VoiceQueueId':_0x14e80a['id']});});});});});});})[_0x49e5('0x24')](respondWithStatusCode(_0x48191b,null))['catch'](handleError(_0x48191b,null));};exports[_0x49e5('0x95')]=function(_0x4d5e15,_0x420a59,_0x25e207){var _0xb2a0d4,_0x28988f;return db['VoiceQueue']['find']({'where':{'id':_0x4d5e15['params']['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x420a59,null))[_0x49e5('0x24')](function(_0x1d33d1){if(_0x1d33d1){_0x28988f=_0x1d33d1;return _0x1d33d1[_0x49e5('0x95')](_0x4d5e15[_0x49e5('0x51')]['ids'],_[_0x49e5('0x96')](_0x4d5e15[_0x49e5('0x51')],[_0x49e5('0x7b'),'id'])||{})[_0x49e5('0x97')](function(_0x37eb6a){for(var _0x3debb9=0x0;_0x3debb9<_0x4d5e15[_0x49e5('0x51')]['ids'][_0x49e5('0x3e')];_0x3debb9+=0x1){socket[_0x49e5('0x79')](_0x49e5('0x98'),{'UserId':Number(_0x4d5e15[_0x49e5('0x51')][_0x49e5('0x7b')][_0x3debb9]),'VoiceQueueId':Number(_0x4d5e15[_0x49e5('0x4d')]['id'])});}return _0x37eb6a;});}})['then'](function(_0x557856){_0xb2a0d4=_0x557856||[];if(_0x28988f){return db[_0x49e5('0x7c')][_0x49e5('0x49')]({'where':{'id':_0x4d5e15[_0x49e5('0x51')][_0x49e5('0x7b')]},'attributes':['id',_0x49e5('0x2d'),_0x49e5('0x69'),_0x49e5('0x6a'),_0x49e5('0x6b')],'raw':!![]});}})[_0x49e5('0x24')](function(_0x1ae187){if(!_[_0x49e5('0x92')](_0x1ae187)){var _0x310e35=[];for(var _0x2a233b=0x0;_0x2a233b<_0x1ae187[_0x49e5('0x3e')];_0x2a233b++){if(_0x1ae187[_0x2a233b][_0x49e5('0x69')]){_0x310e35['push'](db[_0x49e5('0x75')][_0x49e5('0x71')]({'membername':_0x1ae187[_0x2a233b][_0x49e5('0x2d')],'UserId':_0x1ae187[_0x2a233b]['id'],'queue_name':_0x28988f['name'],'VoiceQueueId':_0x28988f['id'],'interface':_[_0x49e5('0x76')](_0x1ae187[_0x2a233b]['interface'])?util[_0x49e5('0x77')](_0x49e5('0x78'),_0x1ae187[_0x2a233b][_0x49e5('0x2d')]):_0x1ae187[_0x2a233b][_0x49e5('0x6b')],'paused':_0x1ae187[_0x2a233b][_0x49e5('0x6a')]||![],'penalty':_0x4d5e15[_0x49e5('0x51')][_0x49e5('0x6e')]||0x0}));}}return BPromise['all'](_0x310e35);}})[_0x49e5('0x24')](function(){return _0xb2a0d4;})['then'](respondWithResult(_0x420a59,null))[_0x49e5('0x4b')](handleError(_0x420a59,null));};exports[_0x49e5('0x93')]=function(_0x343535,_0x5bc29f,_0x441a29){return db['VoiceQueue'][_0x49e5('0x4f')]({'where':{'id':_0x343535[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x5bc29f,null))[_0x49e5('0x24')](function(_0x5ee487){if(_0x5ee487){return _0x5ee487['removeAgents'](_0x343535[_0x49e5('0x38')][_0x49e5('0x7b')])['then'](function(){if(_[_0x49e5('0x99')](_0x343535[_0x49e5('0x38')][_0x49e5('0x7b')])){for(var _0x1e4cf3=0x0;_0x1e4cf3<_0x343535['query'][_0x49e5('0x7b')][_0x49e5('0x3e')];_0x1e4cf3+=0x1){socket['emit'](_0x49e5('0x94'),{'UserId':Number(_0x343535[_0x49e5('0x38')]['ids'][_0x1e4cf3]),'VoiceQueueId':Number(_0x343535[_0x49e5('0x4d')]['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x343535[_0x49e5('0x38')][_0x49e5('0x7b')]),'VoiceQueueId':Number(_0x343535['params']['id'])});}});}})[_0x49e5('0x24')](function(_0x3576fe){return db[_0x49e5('0x75')]['destroy']({'where':{'VoiceQueueId':_0x343535['params']['id'],'UserId':_0x343535[_0x49e5('0x38')][_0x49e5('0x7b')]}})[_0x49e5('0x24')](function(){return _0x3576fe;});})[_0x49e5('0x24')](respondWithStatusCode(_0x5bc29f,null))[_0x49e5('0x4b')](handleError(_0x5bc29f,null));};exports['getAgents']=function(_0x2d56d5,_0x5beea8,_0x525879){var _0x57947a={};var _0x1c0333={};var _0x4b8a74;var _0x2cffc4;return db['VoiceQueue']['findOne']({'where':{'id':_0x2d56d5['params']['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x5beea8,null))[_0x49e5('0x24')](function(_0x5dad8b){if(_0x5dad8b){_0x4b8a74=_0x5dad8b;_0x1c0333[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x7c')]['rawAttributes']);_0x1c0333['query']=_[_0x49e5('0x37')](_0x2d56d5[_0x49e5('0x38')]);_0x1c0333[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x1c0333['model'],_0x1c0333[_0x49e5('0x38')]);_0x57947a[_0x49e5('0x3c')]=_['intersection'](_0x1c0333[_0x49e5('0x3b')],qs['fields'](_0x2d56d5[_0x49e5('0x38')][_0x49e5('0x3d')]));_0x57947a[_0x49e5('0x3c')]=_0x57947a[_0x49e5('0x3c')]['length']?_0x57947a['attributes']:_0x1c0333[_0x49e5('0x3b')];_0x57947a[_0x49e5('0x41')]=qs[_0x49e5('0x42')](_0x2d56d5[_0x49e5('0x38')][_0x49e5('0x42')]);_0x57947a['where']=qs['filters'](_[_0x49e5('0x44')](_0x2d56d5[_0x49e5('0x38')],_0x1c0333[_0x49e5('0x39')]));if(_0x2d56d5[_0x49e5('0x38')][_0x49e5('0x29')]){_0x57947a[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x57947a['where'],{'$or':_['map'](_0x57947a[_0x49e5('0x3c')],function(_0x2568c8){var _0x2cde20={};_0x2cde20[_0x2568c8]={'$like':'%'+_0x2d56d5[_0x49e5('0x38')]['filter']+'%'};return _0x2cde20;})});}_0x57947a=_[_0x49e5('0x45')]({},_0x57947a,_0x2d56d5['options']);return _0x4b8a74['getAgents'](_0x57947a);}})['then'](function(_0x335bd6){if(_0x335bd6){_0x2cffc4=_0x335bd6[_0x49e5('0x3e')];if(!_0x2d56d5[_0x49e5('0x38')]['hasOwnProperty']('nolimit')){_0x57947a[_0x49e5('0x1e')]=qs['limit'](_0x2d56d5[_0x49e5('0x38')][_0x49e5('0x1e')]);_0x57947a[_0x49e5('0x1b')]=qs[_0x49e5('0x1b')](_0x2d56d5[_0x49e5('0x38')][_0x49e5('0x1b')]);}return _0x4b8a74[_0x49e5('0x9a')](_0x57947a);}})[_0x49e5('0x24')](function(_0x36e261){if(_0x36e261){return _0x36e261?{'count':_0x2cffc4,'rows':_0x36e261}:null;}})['then'](respondWithResult(_0x5beea8,null))[_0x49e5('0x4b')](handleError(_0x5beea8,null));};exports[_0x49e5('0x9b')]=function(_0x336795,_0x5ad5aa,_0x53ec14){var _0x170a9d={};var _0x4c1e91={};var _0x805200;var _0x1a0646;return db[_0x49e5('0x33')][_0x49e5('0x5d')]({'where':{'id':_0x336795[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x5ad5aa,null))[_0x49e5('0x24')](function(_0x553657){if(_0x553657){_0x805200=_0x553657;_0x4c1e91[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db[_0x49e5('0x75')][_0x49e5('0x34')]);_0x4c1e91[_0x49e5('0x38')]=_[_0x49e5('0x37')](_0x336795[_0x49e5('0x38')]);_0x4c1e91[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x4c1e91['model'],_0x4c1e91['query']);_0x170a9d[_0x49e5('0x3c')]=_['intersection'](_0x4c1e91['model'],qs['fields'](_0x336795['query']['fields']));_0x170a9d[_0x49e5('0x3c')]=_0x170a9d[_0x49e5('0x3c')][_0x49e5('0x3e')]?_0x170a9d[_0x49e5('0x3c')]:_0x4c1e91[_0x49e5('0x3b')];_0x170a9d[_0x49e5('0x41')]=qs['sort'](_0x336795['query'][_0x49e5('0x42')]);_0x170a9d[_0x49e5('0x43')]=qs[_0x49e5('0x39')](_['pick'](_0x336795[_0x49e5('0x38')],_0x4c1e91['filters']));if(_0x336795[_0x49e5('0x38')][_0x49e5('0x29')]){_0x170a9d[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x170a9d['where'],{'$or':_[_0x49e5('0x2a')](_0x170a9d[_0x49e5('0x3c')],function(_0x3779ee){var _0x7a41a8={};_0x7a41a8[_0x3779ee]={'$like':'%'+_0x336795['query'][_0x49e5('0x29')]+'%'};return _0x7a41a8;})});}_0x170a9d=_[_0x49e5('0x45')]({},_0x170a9d,_0x336795[_0x49e5('0x4e')]);return _0x805200['getMembers'](_0x170a9d);}})['then'](function(_0x4ddd2c){if(_0x4ddd2c){_0x1a0646=_0x4ddd2c[_0x49e5('0x3e')];if(!_0x336795['query'][_0x49e5('0x3f')](_0x49e5('0x40'))){_0x170a9d[_0x49e5('0x1e')]=qs[_0x49e5('0x1e')](_0x336795[_0x49e5('0x38')][_0x49e5('0x1e')]);_0x170a9d[_0x49e5('0x1b')]=qs[_0x49e5('0x1b')](_0x336795[_0x49e5('0x38')][_0x49e5('0x1b')]);}return _0x805200[_0x49e5('0x9b')](_0x170a9d);}})[_0x49e5('0x24')](function(_0x2e59cf){return _0x2e59cf?{'count':_0x1a0646,'rows':_0x2e59cf}:null;})[_0x49e5('0x24')](respondWithResult(_0x5ad5aa,null))[_0x49e5('0x4b')](handleError(_0x5ad5aa,null));};exports[_0x49e5('0x9c')]=function(_0x1b18d7,_0x44c1df,_0x55b694){var _0x1774ce={};var _0x2d44d8={};var _0x583a03;var _0x186da8;return db[_0x49e5('0x33')][_0x49e5('0x5d')]({'where':{'id':_0x1b18d7['params']['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x44c1df,null))[_0x49e5('0x24')](function(_0x5164a1){if(_0x5164a1){_0x583a03=_0x5164a1;_0x2d44d8[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db['CmList']['rawAttributes']);_0x2d44d8[_0x49e5('0x38')]=_['keys'](_0x1b18d7[_0x49e5('0x38')]);_0x2d44d8[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0x2d44d8[_0x49e5('0x3b')],_0x2d44d8[_0x49e5('0x38')]);_0x1774ce[_0x49e5('0x3c')]=_[_0x49e5('0x3a')](_0x2d44d8[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0x1b18d7[_0x49e5('0x38')]['fields']));_0x1774ce['attributes']=_0x1774ce['attributes']['length']?_0x1774ce[_0x49e5('0x3c')]:_0x2d44d8[_0x49e5('0x3b')];_0x1774ce[_0x49e5('0x41')]=qs['sort'](_0x1b18d7[_0x49e5('0x38')]['sort']);_0x1774ce[_0x49e5('0x43')]=qs[_0x49e5('0x39')](_[_0x49e5('0x44')](_0x1b18d7[_0x49e5('0x38')],_0x2d44d8[_0x49e5('0x39')]));if(_0x1b18d7[_0x49e5('0x38')]['filter']){_0x1774ce['where']=_[_0x49e5('0x45')](_0x1774ce['where'],{'$or':_[_0x49e5('0x2a')](_0x1774ce['attributes'],function(_0x52990c){var _0x16ef49={};_0x16ef49[_0x52990c]={'$like':'%'+_0x1b18d7[_0x49e5('0x38')][_0x49e5('0x29')]+'%'};return _0x16ef49;})});}_0x1774ce=_[_0x49e5('0x45')]({},_0x1774ce,_0x1b18d7['options']);return _0x583a03['getLists'](_0x1774ce);}})[_0x49e5('0x24')](function(_0x301688){if(_0x301688){_0x186da8=_0x301688[_0x49e5('0x3e')];if(!_0x1b18d7[_0x49e5('0x38')][_0x49e5('0x3f')](_0x49e5('0x40'))){_0x1774ce[_0x49e5('0x1e')]=qs[_0x49e5('0x1e')](_0x1b18d7['query']['limit']);_0x1774ce[_0x49e5('0x1b')]=qs['offset'](_0x1b18d7[_0x49e5('0x38')][_0x49e5('0x1b')]);}return _0x583a03[_0x49e5('0x9c')](_0x1774ce);}})[_0x49e5('0x24')](function(_0x4d7927){if(_0x4d7927){return _0x4d7927?{'count':_0x186da8,'rows':_0x4d7927}:null;}})['then'](respondWithResult(_0x44c1df,null))['catch'](handleError(_0x44c1df,null));};exports[_0x49e5('0x9d')]=function(_0x561318,_0x451075,_0x35be0c){var _0x10cb1a=moment()[_0x49e5('0x77')]('YYYY-MM-DD\x20HH:mm:ss');var _0x50a39e,_0x306836;return db[_0x49e5('0x33')]['find']({'where':{'id':_0x561318[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x451075,null))[_0x49e5('0x24')](function(_0x34d699){if(_0x34d699){_0x306836=_0x34d699;return _0x34d699[_0x49e5('0x9d')](_0x561318[_0x49e5('0x51')][_0x49e5('0x7b')],_['omit'](_0x561318[_0x49e5('0x51')],['ids','id'])||{});}return null;})['spread'](function(_0x29bf7c){var _0x4856a0;_0x50a39e=_0x29bf7c||[];var _0x4ec571=[];if(_0x29bf7c){for(var _0x45eb81=0x0;_0x45eb81<_0x29bf7c['length'];_0x45eb81+=0x1){var _0x592e4d=_0x29bf7c[_0x45eb81][_0x49e5('0x25')]({'plain':!![]});_0x306836['dialCheckDuplicateType']=_0x561318['body']['dialCheckDuplicateType']?_0x561318[_0x49e5('0x51')][_0x49e5('0x9e')]:_0x306836[_0x49e5('0x9e')];switch(_0x306836['dialCheckDuplicateType']){case _0x49e5('0x9f'):_0x4856a0=squel['insert']()['into']('cm_hopper')[_0x49e5('0xa0')]([_0x49e5('0xa1'),_0x49e5('0xa2'),_0x49e5('0xa3'),_0x49e5('0xa4'),_0x49e5('0x5f'),_0x49e5('0x58'),'updatedAt'],squel['select']()['field'](_0x49e5('0xa1'),_0x49e5('0xa1'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27',_0x49e5('0xa2'))['field']('id','ContactId')['field'](_0x592e4d[_0x49e5('0xa5')]['toString'](),'ListId')[_0x49e5('0x7f')](_0x561318[_0x49e5('0x4d')]['id']['toString'](),_0x49e5('0x5f'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27',_0x49e5('0x58'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27','updatedAt')[_0x49e5('0x81')](_0x49e5('0xa6'))[_0x49e5('0x43')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x592e4d[_0x49e5('0xa5')][_0x49e5('0x8a')]())[_0x49e5('0x43')](_0x49e5('0xa7'))[_0x49e5('0x43')](_0x49e5('0xa8'),squel[_0x49e5('0x7e')]()[_0x49e5('0x7f')](_0x49e5('0xa9'))['from'](_0x49e5('0xaa'))[_0x49e5('0x43')]('VoiceQueueId\x20=\x20?',_0x561318[_0x49e5('0x4d')]['id'][_0x49e5('0x8a')]()))[_0x49e5('0x43')](_0x49e5('0xa8'),squel[_0x49e5('0x7e')]()[_0x49e5('0x7f')](_0x49e5('0xab'))[_0x49e5('0x81')](_0x49e5('0xac'))['where'](_0x49e5('0x86'),_0x561318['params']['id'][_0x49e5('0x8a')]())))['toString']();break;case _0x49e5('0xad'):_0x4856a0=squel[_0x49e5('0xae')]()['into']('cm_hopper')[_0x49e5('0xa0')]([_0x49e5('0xa1'),_0x49e5('0xa2'),'ContactId',_0x49e5('0xa4'),_0x49e5('0x5f'),'createdAt',_0x49e5('0x59')],squel[_0x49e5('0x7e')]()[_0x49e5('0x7f')]('phone',_0x49e5('0xa1'))['field']('\x27'+_0x10cb1a+'\x27',_0x49e5('0xa2'))['field']('id',_0x49e5('0xa3'))[_0x49e5('0x7f')](_0x592e4d[_0x49e5('0xa5')][_0x49e5('0x8a')](),_0x49e5('0xa4'))[_0x49e5('0x7f')](_0x561318['params']['id'][_0x49e5('0x8a')](),_0x49e5('0x5f'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27',_0x49e5('0x58'))['field']('\x27'+_0x10cb1a+'\x27',_0x49e5('0x59'))[_0x49e5('0x81')](_0x49e5('0xa6'))[_0x49e5('0x43')]('deletedAt\x20IS\x20NULL')[_0x49e5('0x43')](_0x49e5('0xaf'),_0x592e4d[_0x49e5('0xa5')][_0x49e5('0x8a')]())[_0x49e5('0x43')](_0x49e5('0xa7'))['where'](_0x49e5('0xa8'),squel['select']()[_0x49e5('0x7f')]('COALESCE(phone,\x27\x27)')[_0x49e5('0x81')](_0x49e5('0xac'))[_0x49e5('0x43')](_0x49e5('0x86'),_0x561318[_0x49e5('0x4d')]['id'][_0x49e5('0x8a')]())))[_0x49e5('0x8a')]();break;default:_0x4856a0=squel[_0x49e5('0xae')]()['into'](_0x49e5('0xac'))[_0x49e5('0xa0')](['phone',_0x49e5('0xa2'),_0x49e5('0xa3'),_0x49e5('0xa4'),_0x49e5('0x5f'),_0x49e5('0x58'),_0x49e5('0x59')],squel[_0x49e5('0x7e')]()[_0x49e5('0x7f')]('phone',_0x49e5('0xa1'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27',_0x49e5('0xa2'))[_0x49e5('0x7f')]('id',_0x49e5('0xa3'))['field'](_0x592e4d[_0x49e5('0xa5')][_0x49e5('0x8a')](),_0x49e5('0xa4'))['field'](_0x561318[_0x49e5('0x4d')]['id'][_0x49e5('0x8a')](),_0x49e5('0x5f'))['field']('\x27'+_0x10cb1a+'\x27',_0x49e5('0x58'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27','updatedAt')[_0x49e5('0x81')](_0x49e5('0xa6'))[_0x49e5('0x43')](_0x49e5('0xb0'))[_0x49e5('0x43')]('ListId\x20=\x20?',_0x592e4d[_0x49e5('0xa5')][_0x49e5('0x8a')]())['where'](_0x49e5('0xa7')))['toString']();}_0x4ec571[_0x49e5('0x89')](db['sequelize'][_0x49e5('0x38')](_0x4856a0));}return BPromise[_0x49e5('0x8f')](_0x4ec571);}})[_0x49e5('0x24')](function(){var _0x41758b=[];var _0x3b9ed4=squel[_0x49e5('0xae')]()[_0x49e5('0xb1')](_0x49e5('0xb2'))[_0x49e5('0xa0')]([_0x49e5('0xb3'),'phone',_0x49e5('0xb4'),_0x49e5('0x58'),'updatedAt'],squel['select']()['field']('h.id')[_0x49e5('0x7f')](_0x49e5('0xb5'))[_0x49e5('0x7f')](_0x49e5('0xb6'))['field']('\x27'+_0x10cb1a+'\x27',_0x49e5('0x58'))[_0x49e5('0x7f')]('\x27'+_0x10cb1a+'\x27',_0x49e5('0x59'))[_0x49e5('0x81')](_0x49e5('0xb7'),'ci')['join'](_0x49e5('0xac'),'h',_0x49e5('0xb8'))[_0x49e5('0x43')](_0x49e5('0xb9'),_0x10cb1a)[_0x49e5('0x43')](_0x49e5('0xba'),_0x49e5('0xbb')))[_0x49e5('0x8a')]();_0x41758b[_0x49e5('0x89')](db[_0x49e5('0x6f')][_0x49e5('0x38')](_0x3b9ed4));return BPromise[_0x49e5('0x8f')](_0x41758b);})['then'](function(){return _0x50a39e;})[_0x49e5('0x24')](respondWithResult(_0x451075,null))[_0x49e5('0x4b')](handleError(_0x451075,null));};exports['removeLists']=function(_0x3e2f42,_0x596d6f,_0x925a13){return db[_0x49e5('0x33')]['find']({'where':{'id':_0x3e2f42[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0x596d6f,null))[_0x49e5('0x24')](function(_0x37c5f8){if(_0x37c5f8){return _0x37c5f8[_0x49e5('0xbc')](_0x3e2f42[_0x49e5('0x38')][_0x49e5('0x7b')]);}})['then'](function(_0x9a5f66){if(_0x9a5f66){return db[_0x49e5('0x5e')][_0x49e5('0x23')]({'where':{'ListId':_0x3e2f42[_0x49e5('0x38')][_0x49e5('0x7b')],'VoiceQueueId':_0x3e2f42['params']['id']}})['then'](function(){return _0x9a5f66;});}})[_0x49e5('0x24')](respondWithStatusCode(_0x596d6f,null))['catch'](handleError(_0x596d6f,null));};exports[_0x49e5('0xbd')]=function(_0x274215,_0x554990,_0x3a7b2a){var _0x1de704={};var _0xa67f57={};var _0x59f7af;var _0x36bf6d;return db[_0x49e5('0x33')]['findOne']({'where':{'id':_0x274215['params']['id']}})['then'](handleEntityNotFound(_0x554990,null))[_0x49e5('0x24')](function(_0x99c765){if(_0x99c765){_0x59f7af=_0x99c765;_0xa67f57[_0x49e5('0x3b')]=_[_0x49e5('0x37')](db['CmList']['rawAttributes']);_0xa67f57[_0x49e5('0x38')]=_[_0x49e5('0x37')](_0x274215[_0x49e5('0x38')]);_0xa67f57[_0x49e5('0x39')]=_[_0x49e5('0x3a')](_0xa67f57['model'],_0xa67f57['query']);_0x1de704['attributes']=_[_0x49e5('0x3a')](_0xa67f57[_0x49e5('0x3b')],qs[_0x49e5('0x3d')](_0x274215['query']['fields']));_0x1de704[_0x49e5('0x3c')]=_0x1de704[_0x49e5('0x3c')][_0x49e5('0x3e')]?_0x1de704['attributes']:_0xa67f57['model'];_0x1de704[_0x49e5('0x41')]=qs[_0x49e5('0x42')](_0x274215[_0x49e5('0x38')][_0x49e5('0x42')]);_0x1de704[_0x49e5('0x43')]=qs['filters'](_[_0x49e5('0x44')](_0x274215['query'],_0xa67f57[_0x49e5('0x39')]));if(_0x274215['query'][_0x49e5('0x29')]){_0x1de704[_0x49e5('0x43')]=_[_0x49e5('0x45')](_0x1de704[_0x49e5('0x43')],{'$or':_[_0x49e5('0x2a')](_0x1de704[_0x49e5('0x3c')],function(_0xf7a24){var _0x2fff80={};_0x2fff80[_0xf7a24]={'$like':'%'+_0x274215['query']['filter']+'%'};return _0x2fff80;})});}_0x1de704=_[_0x49e5('0x45')]({},_0x1de704,_0x274215[_0x49e5('0x4e')]);return _0x59f7af[_0x49e5('0xbd')](_0x1de704);}})['then'](function(_0x2b99a0){if(_0x2b99a0){_0x36bf6d=_0x2b99a0[_0x49e5('0x3e')];if(!_0x274215[_0x49e5('0x38')][_0x49e5('0x3f')]('nolimit')){_0x1de704[_0x49e5('0x1e')]=qs['limit'](_0x274215[_0x49e5('0x38')][_0x49e5('0x1e')]);_0x1de704[_0x49e5('0x1b')]=qs[_0x49e5('0x1b')](_0x274215[_0x49e5('0x38')]['offset']);}return _0x59f7af[_0x49e5('0xbd')](_0x1de704);}})[_0x49e5('0x24')](function(_0x91d02){if(_0x91d02){return _0x91d02?{'count':_0x36bf6d,'rows':_0x91d02}:null;}})['then'](respondWithResult(_0x554990,null))[_0x49e5('0x4b')](handleError(_0x554990,null));};exports['addBlackLists']=function(_0x3a14f4,_0xf85b34,_0x6040b5){var _0x51563c,_0x45b0d3;return db[_0x49e5('0x33')]['find']({'where':{'id':_0x3a14f4[_0x49e5('0x4d')]['id']}})[_0x49e5('0x24')](handleEntityNotFound(_0xf85b34,null))[_0x49e5('0x24')](function(_0x3917a9){if(_0x3917a9){_0x45b0d3=_0x3917a9;return _0x3917a9[_0x49e5('0xbe')](_0x3a14f4[_0x49e5('0x51')][_0x49e5('0x7b')],_[_0x49e5('0x96')](_0x3a14f4[_0x49e5('0x51')],['ids','id'])||{});}return null;})[_0x49e5('0x97')](function(_0x9096c1){var _0x5d332d;_0x51563c=_0x9096c1||[];var _0x2189c6=[];if(_0x9096c1){for(var _0x155bca=0x0;_0x155bca<_0x9096c1[_0x49e5('0x3e')];_0x155bca+=0x1){var _0x1f51a0=_0x9096c1[_0x155bca][_0x49e5('0x25')]({'plain':!![]});_0x5d332d=squel[_0x49e5('0xae')]()['into'](_0x49e5('0xbf'))[_0x49e5('0xa0')](['phone',_0x49e5('0xa3'),_0x49e5('0xa4'),_0x49e5('0x5f'),_0x49e5('0x58'),_0x49e5('0x59')],squel[_0x49e5('0x7e')]()[_0x49e5('0x7f')](_0x49e5('0xa1'),_0x49e5('0xa1'))['field']('id',_0x49e5('0xa3'))[_0x49e5('0x7f')](_0x1f51a0['CmListId'][_0x49e5('0x8a')](),_0x49e5('0xa4'))[_0x49e5('0x7f')](_0x3a14f4[_0x49e5('0x4d')]['id'][_0x49e5('0x8a')](),'VoiceQueueId')[_0x49e5('0x7f')](_0x49e5('0xc0'),_0x49e5('0x58'))['field'](_0x49e5('0xc0'),_0x49e5('0x59'))[_0x49e5('0x81')](_0x49e5('0xa6'))[_0x49e5('0x43')]('deletedAt\x20IS\x20NULL')[_0x49e5('0x43')]('ListId\x20=\x20?',_0x1f51a0[_0x49e5('0xa5')][_0x49e5('0x8a')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0x49e5('0x8a')]();_0x2189c6['push'](db[_0x49e5('0x6f')][_0x49e5('0x38')](_0x5d332d));}return BPromise[_0x49e5('0x8f')](_0x2189c6);}})[_0x49e5('0x24')](function(){return _0x51563c;})[_0x49e5('0x24')](respondWithResult(_0xf85b34,null))['catch'](handleError(_0xf85b34,null));};exports[_0x49e5('0xc1')]=function(_0x4d73f8,_0x3e400e,_0xdd63e6){return db[_0x49e5('0x33')]['find']({'where':{'id':_0x4d73f8[_0x49e5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3e400e,null))['then'](function(_0x310b24){if(_0x310b24){return _0x310b24[_0x49e5('0xc1')](_0x4d73f8['query'][_0x49e5('0x7b')]);}})[_0x49e5('0x24')](function(_0x129f4b){if(_0x129f4b){return db['CmHopperBlack'][_0x49e5('0x23')]({'where':{'ListId':_0x4d73f8[_0x49e5('0x38')][_0x49e5('0x7b')],'VoiceQueueId':_0x4d73f8['params']['id']}})[_0x49e5('0x24')](function(){return _0x129f4b;});}})[_0x49e5('0x24')](respondWithStatusCode(_0x3e400e,null))[_0x49e5('0x4b')](handleError(_0x3e400e,null));};
\ No newline at end of file
index ad2ce04..3e5a5ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a55=['update','hasOwnProperty','exports','events','../../mysqldb','VoiceQueue','save'];(function(_0x38ff1e,_0x3b9385){var _0x3755d4=function(_0x6e6692){while(--_0x6e6692){_0x38ff1e['push'](_0x38ff1e['shift']());}};_0x3755d4(++_0x3b9385);}(_0x9a55,0x1d1));var _0x59a5=function(_0xad7b46,_0x545a1b){_0xad7b46=_0xad7b46-0x0;var _0x5da3a6=_0x9a55[_0xad7b46];return _0x5da3a6;};'use strict';var EventEmitter=require(_0x59a5('0x0'));var VoiceQueue=require(_0x59a5('0x1'))['db'][_0x59a5('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x59a5('0x3'),'afterUpdate':_0x59a5('0x4'),'afterDestroy':'remove'};function emitEvent(_0x126bc0){return function(_0x58bf65,_0x4a80d2,_0x4c4492){VoiceQueueEvents['emit'](_0x126bc0+':'+_0x58bf65['id'],_0x58bf65);VoiceQueueEvents['emit'](_0x126bc0,_0x58bf65);_0x4c4492(null);};}for(var e in events){if(events[_0x59a5('0x5')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x59a5('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x941a=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x3ada46,_0x36e7c2){var _0x14b164=function(_0x5d2e97){while(--_0x5d2e97){_0x3ada46['push'](_0x3ada46['shift']());}};_0x14b164(++_0x36e7c2);}(_0x941a,0x112));var _0xa941=function(_0x3df056,_0xb8f2f8){_0x3df056=_0x3df056-0x0;var _0x5175b5=_0x941a[_0x3df056];return _0x5175b5;};'use strict';var EventEmitter=require(_0xa941('0x0'));var VoiceQueue=require(_0xa941('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xa941('0x2')](0x0);var events={'afterCreate':_0xa941('0x3'),'afterUpdate':_0xa941('0x4'),'afterDestroy':_0xa941('0x5')};function emitEvent(_0x24bab4){return function(_0x3896af,_0x382e44,_0x4f8601){VoiceQueueEvents['emit'](_0x24bab4+':'+_0x3896af['id'],_0x3896af);VoiceQueueEvents[_0xa941('0x6')](_0x24bab4,_0x3896af);_0x4f8601(null);};}for(var e in events){if(events[_0xa941('0x7')](e)){var event=events[e];VoiceQueue[_0xa941('0x8')](e,emitEvent(event));}}module[_0xa941('0x9')]=VoiceQueueEvents;
\ No newline at end of file
index 2599d7d..f24b522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x3a94e1,_0x22e4fd){var _0x6a09d5=function(_0x2d6d1c){while(--_0x2d6d1c){_0x3a94e1['push'](_0x3a94e1['shift']());}};_0x6a09d5(++_0x22e4fd);}(_0x008c,0x188));var _0xc008=function(_0x2c9e61,_0x2d13f5){_0x2c9e61=_0x2c9e61-0x0;var _0x4d55d6=_0x008c[_0x2c9e61];return _0x4d55d6;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x3e438f,_0x4439e7){var _0x35f7ff=function(_0x5c643a){while(--_0x5c643a){_0x3e438f['push'](_0x3e438f['shift']());}};_0x35f7ff(++_0x4439e7);}(_0x008c,0x188));var _0xc008=function(_0x58a0bb,_0x3464b8){_0x58a0bb=_0x58a0bb-0x0;var _0x1f1146=_0x008c[_0x58a0bb];return _0x1f1146;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3478313..d8604e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab9c=['find','where','debug','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./voiceQueue.socket','register','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','limit','include','map','model','attributes','ShowVoiceQueue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xab9c,0xe1));var _0xcab9=function(_0x19c255,_0x573213){_0x19c255=_0x19c255-0x0;var _0x3ab9ae=_0xab9c[_0x19c255];return _0x3ab9ae;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xcab9('0x0'));var BPromise=require(_0xcab9('0x1'));var rs=require(_0xcab9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcab9('0x3'))(_0xcab9('0x4'));var config=require(_0xcab9('0x5'));var jayson=require(_0xcab9('0x6'));var client=jayson['client'][_0xcab9('0x7')]({'port':0x232a});config[_0xcab9('0x8')]=_[_0xcab9('0x9')](config[_0xcab9('0x8')],{'host':_0xcab9('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcab9('0x8')]));require(_0xcab9('0xb'))[_0xcab9('0xc')](socket);function respondWithRpcPromise(_0x71bb3a,_0x50daf1,_0x45732e){return new BPromise(function(_0x262575,_0x4a0f42){return client['request'](_0x71bb3a,_0x45732e)[_0xcab9('0xd')](function(_0x514633){logger[_0xcab9('0xe')](_0xcab9('0xf'),_0x50daf1,_0xcab9('0x10'));logger['debug'](_0xcab9('0x11'),_0x50daf1,_0xcab9('0x10'),JSON[_0xcab9('0x12')](_0x514633));if(_0x514633[_0xcab9('0x13')]){if(_0x514633[_0xcab9('0x13')][_0xcab9('0x14')]===0x1f4){logger[_0xcab9('0x13')]('VoiceQueue,\x20%s,\x20%s',_0x50daf1,_0x514633[_0xcab9('0x13')][_0xcab9('0x15')]);return _0x4a0f42(_0x514633[_0xcab9('0x13')][_0xcab9('0x15')]);}logger[_0xcab9('0x13')]('VoiceQueue,\x20%s,\x20%s',_0x50daf1,_0x514633['error']['message']);return _0x262575(_0x514633[_0xcab9('0x13')][_0xcab9('0x15')]);}else{logger[_0xcab9('0xe')](_0xcab9('0xf'),_0x50daf1,_0xcab9('0x10'));_0x262575(_0x514633['result'][_0xcab9('0x15')]);}})[_0xcab9('0x16')](function(_0x352504){logger[_0xcab9('0x13')](_0xcab9('0xf'),_0x50daf1,_0x352504);_0x4a0f42(_0x352504);});});}exports[_0xcab9('0x17')]=function(_0x52389a){var _0x4cba82=this;return new Promise(function(_0x169b7f,_0x45009b){return db[_0xcab9('0x18')][_0xcab9('0x19')]({'raw':_0x52389a[_0xcab9('0x1a')]?_0x52389a[_0xcab9('0x1a')][_0xcab9('0x1b')]===undefined?!![]:![]:!![],'where':_0x52389a[_0xcab9('0x1a')]?_0x52389a[_0xcab9('0x1a')]['where']||null:null,'attributes':_0x52389a[_0xcab9('0x1a')]?_0x52389a[_0xcab9('0x1a')]['attributes']||null:null,'limit':_0x52389a[_0xcab9('0x1a')]?_0x52389a[_0xcab9('0x1a')][_0xcab9('0x1c')]||null:null,'include':_0x52389a[_0xcab9('0x1a')]?_0x52389a[_0xcab9('0x1a')][_0xcab9('0x1d')]?_[_0xcab9('0x1e')](_0x52389a['options']['include'],function(_0x3298a3){return{'model':db[_0x3298a3[_0xcab9('0x1f')]],'as':_0x3298a3['as'],'attributes':_0x3298a3[_0xcab9('0x20')],'include':_0x3298a3[_0xcab9('0x1d')]?_[_0xcab9('0x1e')](_0x3298a3['include'],function(_0x4471ba){return{'model':db[_0x4471ba[_0xcab9('0x1f')]],'as':_0x4471ba['as'],'attributes':_0x4471ba[_0xcab9('0x20')],'include':_0x4471ba[_0xcab9('0x1d')]?_[_0xcab9('0x1e')](_0x4471ba[_0xcab9('0x1d')],function(_0x368df6){return{'model':db[_0x368df6['model']],'as':_0x368df6['as'],'attributes':_0x368df6[_0xcab9('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1be19a){logger['info']('GetVoiceQueue',_0x52389a);logger['debug'](_0xcab9('0x17'),_0x52389a,JSON[_0xcab9('0x12')](_0x1be19a));_0x169b7f(_0x1be19a);})['catch'](function(_0xd5568d){logger[_0xcab9('0x13')](_0xcab9('0x17'),_0xd5568d[_0xcab9('0x15')],_0x52389a);_0x45009b(_0x4cba82[_0xcab9('0x13')](0x1f4,_0xd5568d[_0xcab9('0x15')]));});});};exports[_0xcab9('0x21')]=function(_0x17efe3){var _0x4848d8=this;return new Promise(function(_0x453e1d,_0x3ff680){return db[_0xcab9('0x18')][_0xcab9('0x22')]({'raw':_0x17efe3[_0xcab9('0x1a')]?_0x17efe3[_0xcab9('0x1a')][_0xcab9('0x1b')]===undefined?!![]:![]:!![],'where':_0x17efe3['options']?_0x17efe3[_0xcab9('0x1a')][_0xcab9('0x23')]||null:null,'attributes':_0x17efe3[_0xcab9('0x1a')]?_0x17efe3[_0xcab9('0x1a')][_0xcab9('0x20')]||null:null,'include':_0x17efe3[_0xcab9('0x1a')]?_0x17efe3[_0xcab9('0x1a')]['include']?_['map'](_0x17efe3[_0xcab9('0x1a')][_0xcab9('0x1d')],function(_0x4e18a9){return{'model':db[_0x4e18a9[_0xcab9('0x1f')]],'as':_0x4e18a9['as'],'attributes':_0x4e18a9['attributes'],'include':_0x4e18a9[_0xcab9('0x1d')]?_[_0xcab9('0x1e')](_0x4e18a9[_0xcab9('0x1d')],function(_0x229e47){return{'model':db[_0x229e47['model']],'as':_0x229e47['as'],'attributes':_0x229e47[_0xcab9('0x20')],'include':_0x229e47[_0xcab9('0x1d')]?_[_0xcab9('0x1e')](_0x229e47['include'],function(_0x475aa9){return{'model':db[_0x475aa9[_0xcab9('0x1f')]],'as':_0x475aa9['as'],'attributes':_0x475aa9['attributes']};}):[]};}):[]};}):[]:[]})[_0xcab9('0xd')](function(_0x29308b){logger[_0xcab9('0xe')](_0xcab9('0x21'),_0x17efe3);logger[_0xcab9('0x24')](_0xcab9('0x21'),_0x17efe3,JSON[_0xcab9('0x12')](_0x29308b));_0x453e1d(_0x29308b);})[_0xcab9('0x16')](function(_0x1243ff){logger[_0xcab9('0x13')](_0xcab9('0x21'),_0x1243ff['message'],_0x17efe3);_0x3ff680(_0x4848d8[_0xcab9('0x13')](0x1f4,_0x1243ff[_0xcab9('0x15')]));});});};
\ No newline at end of file
+var _0x6b02=['message','info','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','include','map','model','ShowVoiceQueue','stringify','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./voiceQueue.socket','register','request','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error'];(function(_0x3e6f92,_0x7a68d2){var _0x182d51=function(_0x10446e){while(--_0x10446e){_0x3e6f92['push'](_0x3e6f92['shift']());}};_0x182d51(++_0x7a68d2);}(_0x6b02,0x140));var _0x26b0=function(_0x431e26,_0x2abbd5){_0x431e26=_0x431e26-0x0;var _0x36f39e=_0x6b02[_0x431e26];return _0x36f39e;};'use strict';var _=require(_0x26b0('0x0'));var util=require(_0x26b0('0x1'));var moment=require('moment');var BPromise=require(_0x26b0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x26b0('0x3'))['db'];var utils=require(_0x26b0('0x4'));var logger=require(_0x26b0('0x5'))(_0x26b0('0x6'));var config=require('../../config/environment');var jayson=require(_0x26b0('0x7'));var client=jayson[_0x26b0('0x8')][_0x26b0('0x9')]({'port':0x232a});config[_0x26b0('0xa')]=_[_0x26b0('0xb')](config[_0x26b0('0xa')],{'host':_0x26b0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x26b0('0xa')]));require(_0x26b0('0xd'))[_0x26b0('0xe')](socket);function respondWithRpcPromise(_0x54c168,_0x2437c3,_0x1ea8ee){return new BPromise(function(_0x3838c9,_0xc62517){return client[_0x26b0('0xf')](_0x54c168,_0x1ea8ee)[_0x26b0('0x10')](function(_0x44da43){logger['info'](_0x26b0('0x11'),_0x2437c3,_0x26b0('0x12'));logger[_0x26b0('0x13')](_0x26b0('0x14'),_0x2437c3,_0x26b0('0x12'),JSON['stringify'](_0x44da43));if(_0x44da43[_0x26b0('0x15')]){if(_0x44da43[_0x26b0('0x15')]['code']===0x1f4){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x2437c3,_0x44da43['error'][_0x26b0('0x16')]);return _0xc62517(_0x44da43[_0x26b0('0x15')][_0x26b0('0x16')]);}logger[_0x26b0('0x15')](_0x26b0('0x11'),_0x2437c3,_0x44da43['error'][_0x26b0('0x16')]);return _0x3838c9(_0x44da43[_0x26b0('0x15')][_0x26b0('0x16')]);}else{logger[_0x26b0('0x17')]('VoiceQueue,\x20%s,\x20%s',_0x2437c3,'request\x20sent');_0x3838c9(_0x44da43[_0x26b0('0x18')][_0x26b0('0x16')]);}})[_0x26b0('0x19')](function(_0x3c7b05){logger[_0x26b0('0x15')]('VoiceQueue,\x20%s,\x20%s',_0x2437c3,_0x3c7b05);_0xc62517(_0x3c7b05);});});}exports[_0x26b0('0x1a')]=function(_0x4e5118){var _0x55c62d=this;return new Promise(function(_0x1e14b4,_0x1cf046){return db[_0x26b0('0x1b')][_0x26b0('0x1c')]({'raw':_0x4e5118[_0x26b0('0x1d')]?_0x4e5118[_0x26b0('0x1d')][_0x26b0('0x1e')]===undefined?!![]:![]:!![],'where':_0x4e5118[_0x26b0('0x1d')]?_0x4e5118[_0x26b0('0x1d')][_0x26b0('0x1f')]||null:null,'attributes':_0x4e5118[_0x26b0('0x1d')]?_0x4e5118[_0x26b0('0x1d')][_0x26b0('0x20')]||null:null,'limit':_0x4e5118['options']?_0x4e5118[_0x26b0('0x1d')]['limit']||null:null,'include':_0x4e5118[_0x26b0('0x1d')]?_0x4e5118[_0x26b0('0x1d')][_0x26b0('0x21')]?_[_0x26b0('0x22')](_0x4e5118[_0x26b0('0x1d')][_0x26b0('0x21')],function(_0x217887){return{'model':db[_0x217887[_0x26b0('0x23')]],'as':_0x217887['as'],'attributes':_0x217887[_0x26b0('0x20')],'include':_0x217887[_0x26b0('0x21')]?_[_0x26b0('0x22')](_0x217887[_0x26b0('0x21')],function(_0x1d64d3){return{'model':db[_0x1d64d3['model']],'as':_0x1d64d3['as'],'attributes':_0x1d64d3['attributes'],'include':_0x1d64d3[_0x26b0('0x21')]?_[_0x26b0('0x22')](_0x1d64d3[_0x26b0('0x21')],function(_0x38a11b){return{'model':db[_0x38a11b[_0x26b0('0x23')]],'as':_0x38a11b['as'],'attributes':_0x38a11b['attributes']};}):[]};}):[]};}):[]:[]})[_0x26b0('0x10')](function(_0x897196){logger[_0x26b0('0x17')](_0x26b0('0x1a'),_0x4e5118);logger[_0x26b0('0x13')](_0x26b0('0x1a'),_0x4e5118,JSON['stringify'](_0x897196));_0x1e14b4(_0x897196);})['catch'](function(_0x1bfa90){logger[_0x26b0('0x15')](_0x26b0('0x1a'),_0x1bfa90[_0x26b0('0x16')],_0x4e5118);_0x1cf046(_0x55c62d['error'](0x1f4,_0x1bfa90[_0x26b0('0x16')]));});});};exports[_0x26b0('0x24')]=function(_0x68cafd){var _0x484acb=this;return new Promise(function(_0x4af46c,_0x223d7e){return db[_0x26b0('0x1b')]['find']({'raw':_0x68cafd['options']?_0x68cafd[_0x26b0('0x1d')][_0x26b0('0x1e')]===undefined?!![]:![]:!![],'where':_0x68cafd[_0x26b0('0x1d')]?_0x68cafd[_0x26b0('0x1d')][_0x26b0('0x1f')]||null:null,'attributes':_0x68cafd[_0x26b0('0x1d')]?_0x68cafd[_0x26b0('0x1d')][_0x26b0('0x20')]||null:null,'include':_0x68cafd[_0x26b0('0x1d')]?_0x68cafd[_0x26b0('0x1d')]['include']?_[_0x26b0('0x22')](_0x68cafd[_0x26b0('0x1d')][_0x26b0('0x21')],function(_0x23fe24){return{'model':db[_0x23fe24[_0x26b0('0x23')]],'as':_0x23fe24['as'],'attributes':_0x23fe24[_0x26b0('0x20')],'include':_0x23fe24[_0x26b0('0x21')]?_[_0x26b0('0x22')](_0x23fe24['include'],function(_0xae7155){return{'model':db[_0xae7155['model']],'as':_0xae7155['as'],'attributes':_0xae7155[_0x26b0('0x20')],'include':_0xae7155[_0x26b0('0x21')]?_[_0x26b0('0x22')](_0xae7155['include'],function(_0x358da4){return{'model':db[_0x358da4[_0x26b0('0x23')]],'as':_0x358da4['as'],'attributes':_0x358da4[_0x26b0('0x20')]};}):[]};}):[]};}):[]:[]})[_0x26b0('0x10')](function(_0x27412f){logger[_0x26b0('0x17')](_0x26b0('0x24'),_0x68cafd);logger['debug'](_0x26b0('0x24'),_0x68cafd,JSON[_0x26b0('0x25')](_0x27412f));_0x4af46c(_0x27412f);})['catch'](function(_0xf06b82){logger['error']('ShowVoiceQueue',_0xf06b82['message'],_0x68cafd);_0x223d7e(_0x484acb[_0x26b0('0x15')](0x1f4,_0xf06b82[_0x26b0('0x16')]));});});};
\ No newline at end of file
index 3d3ffbf..75ac7fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ec=['emit','removeListener','length','voiceQueue:','remove','update'];(function(_0x5e827b,_0x226ebb){var _0x5095c1=function(_0x1b3a09){while(--_0x1b3a09){_0x5e827b['push'](_0x5e827b['shift']());}};_0x5095c1(++_0x226ebb);}(_0xb7ec,0xe2));var _0xcb7e=function(_0x153162,_0xd7921d){_0x153162=_0x153162-0x0;var _0x2f4492=_0xb7ec[_0x153162];return _0x2f4492;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=['save',_0xcb7e('0x0'),_0xcb7e('0x1')];function createListener(_0x52bc9a,_0x4f5462){return function(_0x5230d6){_0x4f5462[_0xcb7e('0x2')](_0x52bc9a,_0x5230d6);};}function removeListener(_0x3086c6,_0x337344){return function(){VoiceQueueEvents[_0xcb7e('0x3')](_0x3086c6,_0x337344);};}exports['register']=function(_0x60666){for(var _0x1d2019=0x0,_0x597e92=events[_0xcb7e('0x4')];_0x1d2019<_0x597e92;_0x1d2019++){var _0x170bcd=events[_0x1d2019];var _0x3634f6=createListener(_0xcb7e('0x5')+_0x170bcd,_0x60666);VoiceQueueEvents['on'](_0x170bcd,_0x3634f6);}};
\ No newline at end of file
+var _0x20a6=['save','emit','removeListener','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x4efd1d,_0x4ad389){var _0x4b46c6=function(_0x6f887d){while(--_0x6f887d){_0x4efd1d['push'](_0x4efd1d['shift']());}};_0x4b46c6(++_0x4ad389);}(_0x20a6,0x148));var _0x620a=function(_0x777918,_0x35d4e3){_0x777918=_0x777918-0x0;var _0x5e79e7=_0x20a6[_0x777918];return _0x5e79e7;};'use strict';var VoiceQueueEvents=require(_0x620a('0x0'));var events=[_0x620a('0x1'),'remove','update'];function createListener(_0x50f158,_0x73bd39){return function(_0x437822){_0x73bd39[_0x620a('0x2')](_0x50f158,_0x437822);};}function removeListener(_0x1cdb3c,_0x1c0ca9){return function(){VoiceQueueEvents[_0x620a('0x3')](_0x1cdb3c,_0x1c0ca9);};}exports[_0x620a('0x4')]=function(_0x51f595){for(var _0x3fadd7=0x0,_0x1a377b=events[_0x620a('0x5')];_0x3fadd7<_0x1a377b;_0x3fadd7++){var _0x48581e=events[_0x3fadd7];var _0x595b3c=createListener(_0x620a('0x6')+_0x48581e,_0x51f595);VoiceQueueEvents['on'](_0x48581e,_0x595b3c);}};
\ No newline at end of file
index af86ebc..521acda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6279=['get','isAuthenticated','/describe','describe','/index','getVoiceQueuesReport','post','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller'];(function(_0x38a045,_0x402d6b){var _0x45c34c=function(_0x2bde36){while(--_0x2bde36){_0x38a045['push'](_0x38a045['shift']());}};_0x45c34c(++_0x402d6b);}(_0x6279,0x7a));var _0x9627=function(_0x1e1bb5,_0x23b4e9){_0x1e1bb5=_0x1e1bb5-0x0;var _0x413b4c=_0x6279[_0x1e1bb5];return _0x413b4c;};'use strict';var multer=require(_0x9627('0x0'));var util=require(_0x9627('0x1'));var path=require(_0x9627('0x2'));var timeout=require(_0x9627('0x3'));var express=require(_0x9627('0x4'));var router=express[_0x9627('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9627('0x6'));var interaction=require(_0x9627('0x7'));var config=require(_0x9627('0x8'));var controller=require(_0x9627('0x9'));router[_0x9627('0xa')]('/',auth[_0x9627('0xb')](),controller['index']);router[_0x9627('0xa')](_0x9627('0xc'),auth[_0x9627('0xb')](),controller[_0x9627('0xd')]);router[_0x9627('0xa')](_0x9627('0xe'),auth['isAuthenticated'](),controller[_0x9627('0xf')]);router['get']('/:id',auth[_0x9627('0xb')](),controller['show']);router[_0x9627('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9627('0x11')](_0x9627('0x12'),auth['isAuthenticated'](),controller[_0x9627('0x13')]);router[_0x9627('0x14')](_0x9627('0x12'),auth[_0x9627('0xb')](),controller[_0x9627('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x9f6a=['/index','getVoiceQueuesReport','post','create','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','describe'];(function(_0x577097,_0x2cf53c){var _0x4a3fd7=function(_0x53adb0){while(--_0x53adb0){_0x577097['push'](_0x577097['shift']());}};_0x4a3fd7(++_0x2cf53c);}(_0x9f6a,0x1e4));var _0xa9f6=function(_0x459a0a,_0x25c46f){_0x459a0a=_0x459a0a-0x0;var _0x4ab46c=_0x9f6a[_0x459a0a];return _0x4ab46c;};'use strict';var multer=require('multer');var util=require(_0xa9f6('0x0'));var path=require(_0xa9f6('0x1'));var timeout=require(_0xa9f6('0x2'));var express=require(_0xa9f6('0x3'));var router=express['Router']();var fs_extra=require(_0xa9f6('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa9f6('0x5'));var controller=require(_0xa9f6('0x6'));router[_0xa9f6('0x7')]('/',auth[_0xa9f6('0x8')](),controller['index']);router[_0xa9f6('0x7')]('/describe',auth[_0xa9f6('0x8')](),controller[_0xa9f6('0x9')]);router[_0xa9f6('0x7')](_0xa9f6('0xa'),auth[_0xa9f6('0x8')](),controller[_0xa9f6('0xb')]);router[_0xa9f6('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xa9f6('0xc')]('/',auth['isAuthenticated'](),controller[_0xa9f6('0xd')]);router['put'](_0xa9f6('0xe'),auth[_0xa9f6('0x8')](),controller[_0xa9f6('0xf')]);router[_0xa9f6('0x10')](_0xa9f6('0xe'),auth['isAuthenticated'](),controller[_0xa9f6('0x11')]);module[_0xa9f6('0x12')]=router;
\ No newline at end of file
index 9d9ca9b..d963bae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6555=['format','seconds','setDataValue','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','getDataValue','queuecallerjoinAt'];(function(_0x2f52d1,_0x36e3b1){var _0x3f9871=function(_0x27379f){while(--_0x27379f){_0x2f52d1['push'](_0x2f52d1['shift']());}};_0x3f9871(++_0x36e3b1);}(_0x6555,0x18d));var _0x5655=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6555[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x5655('0x0'));var moment=require('moment');module[_0x5655('0x1')]={'type':{'type':Sequelize[_0x5655('0x2')]},'uniqueid':{'type':Sequelize[_0x5655('0x2')]},'calleridnum':{'type':Sequelize[_0x5655('0x2')]},'calleridname':{'type':Sequelize[_0x5655('0x2')]},'queue':{'type':Sequelize[_0x5655('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x5655('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x5655('0x3')],'set':function(_0x3743a5){var _0x209665=moment(_0x3743a5);var _0x444660=moment(this[_0x5655('0x4')](_0x5655('0x5')))[_0x5655('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x3dfe51=_0x209665['diff'](_0x444660,_0x5655('0x7'));this[_0x5655('0x8')]('queuecallerleaveAt',_0x3743a5);this[_0x5655('0x8')]('holdtime',_0x3dfe51||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x5655('0x9')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x5655('0x3')]},'queuecallerexit':{'type':Sequelize[_0x5655('0x9')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x5655('0xa')},'originalposition':{'type':Sequelize[_0x5655('0xb')]},'channel':{'type':Sequelize[_0x5655('0x2')]},'connectedlinenum':{'type':Sequelize[_0x5655('0x2')]},'connectedlinename':{'type':Sequelize[_0x5655('0x2')]},'accountcode':{'type':Sequelize[_0x5655('0x2')]},'context':{'type':Sequelize[_0x5655('0x2')]},'exten':{'type':Sequelize[_0x5655('0x2')]},'priority':{'type':Sequelize[_0x5655('0x2')]},'holdtime':{'type':Sequelize[_0x5655('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x5655('0x9')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x5655('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x5655('0x2')],'comment':_0x5655('0xc')},'transferexten':{'type':Sequelize[_0x5655('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x5655('0x2')]},'secondDisposition':{'type':Sequelize[_0x5655('0x2')]},'thirdDisposition':{'type':Sequelize[_0x5655('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x5655('0xb')],'defaultValue':0x0},'note':{'type':Sequelize[_0x5655('0x2')]}};
\ No newline at end of file
+var _0xa454=['queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','sequelize','moment','exports','STRING','DATE','getDataValue'];(function(_0x93a32a,_0x279e0a){var _0x41035d=function(_0x4f2638){while(--_0x4f2638){_0x93a32a['push'](_0x93a32a['shift']());}};_0x41035d(++_0x279e0a);}(_0xa454,0x1bc));var _0x4a45=function(_0x11f3fb,_0xb12cea){_0x11f3fb=_0x11f3fb-0x0;var _0x4e4443=_0xa454[_0x11f3fb];return _0x4e4443;};'use strict';var Sequelize=require(_0x4a45('0x0'));var moment=require(_0x4a45('0x1'));module[_0x4a45('0x2')]={'type':{'type':Sequelize[_0x4a45('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4a45('0x3')]},'calleridname':{'type':Sequelize[_0x4a45('0x3')]},'queue':{'type':Sequelize[_0x4a45('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x4a45('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x4a45('0x4')],'set':function(_0x115b95){var _0x2c6dea=moment(_0x115b95);var _0x1dd4f4=moment(this[_0x4a45('0x5')](_0x4a45('0x6')))['format'](_0x4a45('0x7'));var _0x49df74=_0x2c6dea[_0x4a45('0x8')](_0x1dd4f4,_0x4a45('0x9'));this[_0x4a45('0xa')](_0x4a45('0xb'),_0x115b95);this[_0x4a45('0xa')](_0x4a45('0xc'),_0x49df74||null);}},'position':{'type':Sequelize[_0x4a45('0xd')]},'count':{'type':Sequelize[_0x4a45('0xd')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x4a45('0x4')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x4a45('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x4a45('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x4a45('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x4a45('0xd')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x4a45('0x3')]},'connectedlinename':{'type':Sequelize[_0x4a45('0x3')]},'accountcode':{'type':Sequelize[_0x4a45('0x3')]},'context':{'type':Sequelize[_0x4a45('0x3')]},'exten':{'type':Sequelize[_0x4a45('0x3')]},'priority':{'type':Sequelize[_0x4a45('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x4a45('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4a45('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x4a45('0x3')]},'transfer':{'type':Sequelize[_0x4a45('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x4a45('0x3')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x4a45('0x3')]},'disposition':{'type':Sequelize[_0x4a45('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x4a45('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4635ce2..d9aa46e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57a2=['register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','type','key','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VoiceQueueReport','includeAll','include','catch','show','params','keys','options','create','body','find','describe','nolimit','findAll','rows','getVoiceQueuesReport','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueueReport.socket'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x57a2,0x1d0));var _0x257a=function(_0x4ae33a,_0x5ca46f){_0x4ae33a=_0x4ae33a-0x0;var _0x529f79=_0x57a2[_0x4ae33a];return _0x529f79;};'use strict';var emlformat=require(_0x257a('0x0'));var rimraf=require(_0x257a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x257a('0x2'));var rp=require('request-promise');var moment=require(_0x257a('0x3'));var BPromise=require(_0x257a('0x4'));var Mustache=require(_0x257a('0x5'));var util=require(_0x257a('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x257a('0x7'));var ejs=require(_0x257a('0x8'));var fs=require('fs');var fs_extra=require(_0x257a('0x9'));var _=require('lodash');var squel=require(_0x257a('0xa'));var crypto=require(_0x257a('0xb'));var jsforce=require(_0x257a('0xc'));var deskjs=require(_0x257a('0xd'));var toCsv=require('to-csv');var querystring=require(_0x257a('0xe'));var Papa=require(_0x257a('0xf'));var Redis=require('ioredis');var authService=require(_0x257a('0x10'));var qs=require(_0x257a('0x11'));var as=require(_0x257a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x257a('0x13'));var utils=require(_0x257a('0x14'));var config=require(_0x257a('0x15'));var licenseUtil=require(_0x257a('0x16'));var db=require(_0x257a('0x17'))['db'];config[_0x257a('0x18')]=_[_0x257a('0x19')](config['redis'],{'host':_0x257a('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x257a('0x18')]));require(_0x257a('0x1b'))[_0x257a('0x1c')](socket);function respondWithStatusCode(_0x11d63b,_0x49c3f1){_0x49c3f1=_0x49c3f1||0xcc;return function(_0x3f4024){if(_0x3f4024){return _0x11d63b[_0x257a('0x1d')](_0x49c3f1);}return _0x11d63b[_0x257a('0x1e')](_0x49c3f1)['end']();};}function respondWithResult(_0x55b64e,_0x145652){_0x145652=_0x145652||0xc8;return function(_0xbb1a8){if(_0xbb1a8){return _0x55b64e['status'](_0x145652)[_0x257a('0x1f')](_0xbb1a8);}};}function respondWithFilteredResult(_0x5d4eae,_0x53a41e){return function(_0x59e9bb){if(_0x59e9bb){var _0x268331=typeof _0x53a41e[_0x257a('0x20')]===_0x257a('0x21')&&typeof _0x53a41e[_0x257a('0x22')]===_0x257a('0x21');var _0x7682d8=_0x59e9bb[_0x257a('0x23')];var _0x5af8d4=_0x268331?0x0:_0x53a41e[_0x257a('0x20')];var _0x2d3ff3=_0x268331?_0x59e9bb[_0x257a('0x23')]:_0x53a41e['offset']+_0x53a41e[_0x257a('0x22')];var _0x593f6a;if(_0x2d3ff3>=_0x7682d8){_0x2d3ff3=_0x7682d8;_0x593f6a=0xc8;}else{_0x593f6a=0xce;}_0x5d4eae['status'](_0x593f6a);return _0x5d4eae[_0x257a('0x24')](_0x257a('0x25'),_0x5af8d4+'-'+_0x2d3ff3+'/'+_0x7682d8)[_0x257a('0x1f')](_0x59e9bb);}return null;};}function patchUpdates(_0x17cca3){return function(_0x5d3f4b){try{jsonpatch[_0x257a('0x26')](_0x5d3f4b,_0x17cca3,!![]);}catch(_0x1b8c72){return BPromise['reject'](_0x1b8c72);}return _0x5d3f4b['save']();};}function saveUpdates(_0x249f85,_0x434c2d){return function(_0xb3cac0){if(_0xb3cac0){return _0xb3cac0[_0x257a('0x27')](_0x249f85)[_0x257a('0x28')](function(_0x513b07){return _0x513b07;});}return null;};}function removeEntity(_0x48fb37,_0x2018f1){return function(_0x3fbae2){if(_0x3fbae2){return _0x3fbae2[_0x257a('0x29')]()[_0x257a('0x28')](function(){_0x48fb37[_0x257a('0x1e')](0xcc)[_0x257a('0x2a')]();});}};}function handleEntityNotFound(_0x2e1d74,_0x256aed){return function(_0x30f9cd){if(!_0x30f9cd){_0x2e1d74[_0x257a('0x1d')](0x194);}return _0x30f9cd;};}function handleError(_0x5db41b,_0x54a7c7){_0x54a7c7=_0x54a7c7||0x1f4;return function(_0x28b193){logger[_0x257a('0x2b')](_0x28b193[_0x257a('0x2c')]);if(_0x28b193[_0x257a('0x2d')]){delete _0x28b193[_0x257a('0x2d')];}_0x5db41b[_0x257a('0x1e')](_0x54a7c7)[_0x257a('0x2e')](_0x28b193);};}exports[_0x257a('0x2f')]=function(_0x537efe,_0x3d828c){var _0x3280fe={},_0x4d476d={},_0x45a6f2={'count':0x0,'rows':[]};var _0x577e68=_[_0x257a('0x30')](db['VoiceQueueReport'][_0x257a('0x31')],function(_0x46f491){return{'name':_0x46f491['fieldName'],'type':_0x46f491[_0x257a('0x32')][_0x257a('0x33')]};});_0x4d476d['model']=_['map'](_0x577e68,_0x257a('0x2d'));_0x4d476d[_0x257a('0x34')]=_['keys'](_0x537efe[_0x257a('0x34')]);_0x4d476d[_0x257a('0x35')]=_['intersection'](_0x4d476d[_0x257a('0x36')],_0x4d476d['query']);_0x3280fe['attributes']=_[_0x257a('0x37')](_0x4d476d[_0x257a('0x36')],qs['fields'](_0x537efe[_0x257a('0x34')][_0x257a('0x38')]));_0x3280fe['attributes']=_0x3280fe[_0x257a('0x39')][_0x257a('0x3a')]?_0x3280fe[_0x257a('0x39')]:_0x4d476d['model'];if(!_0x537efe['query'][_0x257a('0x3b')]('nolimit')){_0x3280fe[_0x257a('0x22')]=qs[_0x257a('0x22')](_0x537efe[_0x257a('0x34')][_0x257a('0x22')]);_0x3280fe[_0x257a('0x20')]=qs[_0x257a('0x20')](_0x537efe[_0x257a('0x34')][_0x257a('0x20')]);}_0x3280fe[_0x257a('0x3c')]=qs[_0x257a('0x3d')](_0x537efe[_0x257a('0x34')][_0x257a('0x3d')]);_0x3280fe[_0x257a('0x3e')]=qs[_0x257a('0x35')](_[_0x257a('0x3f')](_0x537efe[_0x257a('0x34')],_0x4d476d[_0x257a('0x35')]),_0x577e68);if(_0x537efe['query'][_0x257a('0x40')]){_0x3280fe[_0x257a('0x3e')]=_[_0x257a('0x41')](_0x3280fe['where'],{'$or':_[_0x257a('0x30')](_0x577e68,function(_0x4cfc86){if(_0x4cfc86[_0x257a('0x32')]!=='VIRTUAL'){var _0x52d6f3={};_0x52d6f3[_0x4cfc86['name']]={'$like':'%'+_0x537efe[_0x257a('0x34')][_0x257a('0x40')]+'%'};return _0x52d6f3;}})});}_0x3280fe=_[_0x257a('0x41')]({},_0x3280fe,_0x537efe['options']);var _0x3e8517={'where':_0x3280fe[_0x257a('0x3e')]};return db[_0x257a('0x42')]['count'](_0x3e8517)[_0x257a('0x28')](function(_0x3f529f){_0x45a6f2['count']=_0x3f529f;if(_0x537efe[_0x257a('0x34')][_0x257a('0x43')]){_0x3280fe[_0x257a('0x44')]=[{'all':!![]}];}return db[_0x257a('0x42')]['findAll'](_0x3280fe);})[_0x257a('0x28')](function(_0x2291ff){_0x45a6f2['rows']=_0x2291ff;return _0x45a6f2;})[_0x257a('0x28')](respondWithFilteredResult(_0x3d828c,_0x3280fe))[_0x257a('0x45')](handleError(_0x3d828c,null));};exports[_0x257a('0x46')]=function(_0x4b02a6,_0x509f0d){var _0x33217f={'raw':![],'where':{'id':_0x4b02a6[_0x257a('0x47')]['id']}},_0x491457={};_0x491457['model']=_[_0x257a('0x48')](db[_0x257a('0x42')]['rawAttributes']);_0x491457[_0x257a('0x34')]=_[_0x257a('0x48')](_0x4b02a6[_0x257a('0x34')]);_0x491457[_0x257a('0x35')]=_['intersection'](_0x491457[_0x257a('0x36')],_0x491457[_0x257a('0x34')]);_0x33217f[_0x257a('0x39')]=_[_0x257a('0x37')](_0x491457[_0x257a('0x36')],qs[_0x257a('0x38')](_0x4b02a6[_0x257a('0x34')]['fields']));_0x33217f[_0x257a('0x39')]=_0x33217f['attributes'][_0x257a('0x3a')]?_0x33217f[_0x257a('0x39')]:_0x491457[_0x257a('0x36')];if(_0x4b02a6[_0x257a('0x34')][_0x257a('0x43')]){_0x33217f[_0x257a('0x44')]=[{'all':!![]}];}_0x33217f=_[_0x257a('0x41')]({},_0x33217f,_0x4b02a6[_0x257a('0x49')]);return db[_0x257a('0x42')]['find'](_0x33217f)[_0x257a('0x28')](handleEntityNotFound(_0x509f0d,null))['then'](respondWithResult(_0x509f0d,null))[_0x257a('0x45')](handleError(_0x509f0d,null));};exports[_0x257a('0x4a')]=function(_0x4f673f,_0x214769){return db['VoiceQueueReport'][_0x257a('0x4a')](_0x4f673f[_0x257a('0x4b')],{})['then'](respondWithResult(_0x214769,0xc9))[_0x257a('0x45')](handleError(_0x214769,null));};exports[_0x257a('0x27')]=function(_0x2ebd8a,_0x5ecbbc){if(_0x2ebd8a[_0x257a('0x4b')]['id']){delete _0x2ebd8a[_0x257a('0x4b')]['id'];}return db[_0x257a('0x42')]['find']({'where':{'id':_0x2ebd8a[_0x257a('0x47')]['id']}})[_0x257a('0x28')](handleEntityNotFound(_0x5ecbbc,null))[_0x257a('0x28')](saveUpdates(_0x2ebd8a[_0x257a('0x4b')],null))[_0x257a('0x28')](respondWithResult(_0x5ecbbc,null))[_0x257a('0x45')](handleError(_0x5ecbbc,null));};exports['destroy']=function(_0x3cee74,_0x21a6cd){return db[_0x257a('0x42')][_0x257a('0x4c')]({'where':{'id':_0x3cee74[_0x257a('0x47')]['id']}})['then'](handleEntityNotFound(_0x21a6cd,null))[_0x257a('0x28')](removeEntity(_0x21a6cd,null))[_0x257a('0x45')](handleError(_0x21a6cd,null));};exports[_0x257a('0x4d')]=function(_0x4de7d5,_0x40914f){return db['VoiceQueueReport'][_0x257a('0x4d')]()['then'](respondWithResult(_0x40914f,null))[_0x257a('0x45')](handleError(_0x40914f,null));};exports['getVoiceQueuesReport']=function(_0x4e543a,_0x3c7330){var _0x4fa031={},_0x450853={},_0x581a53={'count':0x0,'rows':[]};_0x450853[_0x257a('0x36')]=_[_0x257a('0x48')](db['VoiceQueueReport'][_0x257a('0x31')]);_0x450853['query']=_['keys'](_0x4e543a['query']);_0x450853['filters']=_[_0x257a('0x37')](_0x450853['model'],_0x450853[_0x257a('0x34')]);_0x4fa031[_0x257a('0x39')]=_[_0x257a('0x37')](_0x450853['model'],qs[_0x257a('0x38')](_0x4e543a[_0x257a('0x34')][_0x257a('0x38')]));_0x4fa031[_0x257a('0x39')]=_0x4fa031[_0x257a('0x39')][_0x257a('0x3a')]?_0x4fa031[_0x257a('0x39')]:_0x450853[_0x257a('0x36')];if(!_0x4e543a[_0x257a('0x34')][_0x257a('0x3b')](_0x257a('0x4e'))){_0x4fa031[_0x257a('0x22')]=qs[_0x257a('0x22')](_0x4e543a[_0x257a('0x34')]['limit']);_0x4fa031['offset']=qs[_0x257a('0x20')](_0x4e543a['query'][_0x257a('0x20')]);}_0x4fa031[_0x257a('0x3c')]=qs[_0x257a('0x3d')](_0x4e543a[_0x257a('0x34')][_0x257a('0x3d')]);_0x4fa031['where']=qs[_0x257a('0x35')](_['pick'](_0x4e543a[_0x257a('0x34')],_0x450853['filters']));if(_0x4e543a[_0x257a('0x34')][_0x257a('0x40')]){_0x4fa031['where']=_[_0x257a('0x41')](_0x4fa031[_0x257a('0x3e')],{'$or':_[_0x257a('0x30')](_0x4fa031[_0x257a('0x39')],function(_0x201189){var _0x3b5840={};_0x3b5840[_0x201189]={'$like':'%'+_0x4e543a['query'][_0x257a('0x40')]+'%'};return _0x3b5840;})});}_0x4fa031=_[_0x257a('0x41')]({},_0x4fa031,_0x4e543a[_0x257a('0x49')]);var _0x10a971={'where':_0x4fa031['where']};return db['VoiceQueueReport']['count'](_0x10a971)[_0x257a('0x28')](function(_0x2205d9){_0x581a53[_0x257a('0x23')]=_0x2205d9;if(_0x4e543a[_0x257a('0x34')]['includeAll']){_0x4fa031[_0x257a('0x44')]=[{'all':!![]}];}return db[_0x257a('0x42')][_0x257a('0x4f')](_0x4fa031);})[_0x257a('0x28')](function(_0x43c05d){_0x581a53[_0x257a('0x50')]=_0x43c05d;return _0x581a53;})[_0x257a('0x28')](respondWithFilteredResult(_0x3c7330,_0x4fa031,_0x257a('0x51')))[_0x257a('0x45')](handleError(_0x3c7330,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0xca3a=['update','describe','getVoiceQueuesReport','findAll','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','offset','undefined','limit','count','set','json','apply','reject','destroy','then','error','stack','name','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','rows','catch','params','create','body'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xca3a,0xa4));var _0xaca3=function(_0x4271ab,_0x37939a){_0x4271ab=_0x4271ab-0x0;var _0x2c8cb9=_0xca3a[_0x4271ab];return _0x2c8cb9;};'use strict';var emlformat=require(_0xaca3('0x0'));var rimraf=require(_0xaca3('0x1'));var zipdir=require(_0xaca3('0x2'));var jsonpatch=require(_0xaca3('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xaca3('0x4'));var Mustache=require(_0xaca3('0x5'));var util=require(_0xaca3('0x6'));var path=require(_0xaca3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaca3('0x8'));var fs=require('fs');var fs_extra=require(_0xaca3('0x9'));var _=require(_0xaca3('0xa'));var squel=require('squel');var crypto=require(_0xaca3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xaca3('0xc'));var toCsv=require('to-csv');var querystring=require(_0xaca3('0xd'));var Papa=require(_0xaca3('0xe'));var Redis=require(_0xaca3('0xf'));var authService=require(_0xaca3('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xaca3('0x11'));var hardwareService=require(_0xaca3('0x12'));var logger=require(_0xaca3('0x13'))('api');var utils=require(_0xaca3('0x14'));var config=require(_0xaca3('0x15'));var licenseUtil=require(_0xaca3('0x16'));var db=require(_0xaca3('0x17'))['db'];config[_0xaca3('0x18')]=_[_0xaca3('0x19')](config['redis'],{'host':_0xaca3('0x1a'),'port':0x18eb});var socket=require(_0xaca3('0x1b'))(new Redis(config[_0xaca3('0x18')]));require(_0xaca3('0x1c'))[_0xaca3('0x1d')](socket);function respondWithStatusCode(_0x48ff68,_0xb32f92){_0xb32f92=_0xb32f92||0xcc;return function(_0x3b40dc){if(_0x3b40dc){return _0x48ff68['sendStatus'](_0xb32f92);}return _0x48ff68[_0xaca3('0x1e')](_0xb32f92)[_0xaca3('0x1f')]();};}function respondWithResult(_0x36a876,_0x31e445){_0x31e445=_0x31e445||0xc8;return function(_0x176363){if(_0x176363){return _0x36a876[_0xaca3('0x1e')](_0x31e445)['json'](_0x176363);}};}function respondWithFilteredResult(_0x4a7706,_0x108cd6){return function(_0x331400){if(_0x331400){var _0x221916=typeof _0x108cd6[_0xaca3('0x20')]===_0xaca3('0x21')&&typeof _0x108cd6[_0xaca3('0x22')]===_0xaca3('0x21');var _0x325d34=_0x331400[_0xaca3('0x23')];var _0x56c6d0=_0x221916?0x0:_0x108cd6[_0xaca3('0x20')];var _0x21ba9d=_0x221916?_0x331400[_0xaca3('0x23')]:_0x108cd6[_0xaca3('0x20')]+_0x108cd6[_0xaca3('0x22')];var _0x55bd28;if(_0x21ba9d>=_0x325d34){_0x21ba9d=_0x325d34;_0x55bd28=0xc8;}else{_0x55bd28=0xce;}_0x4a7706[_0xaca3('0x1e')](_0x55bd28);return _0x4a7706[_0xaca3('0x24')]('Content-Range',_0x56c6d0+'-'+_0x21ba9d+'/'+_0x325d34)[_0xaca3('0x25')](_0x331400);}return null;};}function patchUpdates(_0x500f6a){return function(_0xc5fdfb){try{jsonpatch[_0xaca3('0x26')](_0xc5fdfb,_0x500f6a,!![]);}catch(_0x373792){return BPromise[_0xaca3('0x27')](_0x373792);}return _0xc5fdfb['save']();};}function saveUpdates(_0x43c120,_0x8c963f){return function(_0x3f372b){if(_0x3f372b){return _0x3f372b['update'](_0x43c120)['then'](function(_0x3b1b57){return _0x3b1b57;});}return null;};}function removeEntity(_0x32551e,_0x293333){return function(_0xfd9c6f){if(_0xfd9c6f){return _0xfd9c6f[_0xaca3('0x28')]()[_0xaca3('0x29')](function(){_0x32551e[_0xaca3('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x133b3c,_0x313580){return function(_0x46354c){if(!_0x46354c){_0x133b3c['sendStatus'](0x194);}return _0x46354c;};}function handleError(_0x4daa1b,_0x2d52d1){_0x2d52d1=_0x2d52d1||0x1f4;return function(_0x449fca){logger[_0xaca3('0x2a')](_0x449fca[_0xaca3('0x2b')]);if(_0x449fca[_0xaca3('0x2c')]){delete _0x449fca[_0xaca3('0x2c')];}_0x4daa1b['status'](_0x2d52d1)['send'](_0x449fca);};}exports[_0xaca3('0x2d')]=function(_0x32d191,_0x35c79d){var _0x71ff={},_0x31e59e={},_0x9f8b32={'count':0x0,'rows':[]};var _0x3b9956=_[_0xaca3('0x2e')](db[_0xaca3('0x2f')][_0xaca3('0x30')],function(_0x5d25f7){return{'name':_0x5d25f7[_0xaca3('0x31')],'type':_0x5d25f7[_0xaca3('0x32')][_0xaca3('0x33')]};});_0x31e59e[_0xaca3('0x34')]=_[_0xaca3('0x2e')](_0x3b9956,'name');_0x31e59e[_0xaca3('0x35')]=_[_0xaca3('0x36')](_0x32d191[_0xaca3('0x35')]);_0x31e59e[_0xaca3('0x37')]=_[_0xaca3('0x38')](_0x31e59e['model'],_0x31e59e[_0xaca3('0x35')]);_0x71ff[_0xaca3('0x39')]=_['intersection'](_0x31e59e[_0xaca3('0x34')],qs[_0xaca3('0x3a')](_0x32d191[_0xaca3('0x35')][_0xaca3('0x3a')]));_0x71ff[_0xaca3('0x39')]=_0x71ff[_0xaca3('0x39')][_0xaca3('0x3b')]?_0x71ff[_0xaca3('0x39')]:_0x31e59e[_0xaca3('0x34')];if(!_0x32d191['query'][_0xaca3('0x3c')](_0xaca3('0x3d'))){_0x71ff[_0xaca3('0x22')]=qs['limit'](_0x32d191[_0xaca3('0x35')][_0xaca3('0x22')]);_0x71ff[_0xaca3('0x20')]=qs[_0xaca3('0x20')](_0x32d191[_0xaca3('0x35')][_0xaca3('0x20')]);}_0x71ff[_0xaca3('0x3e')]=qs[_0xaca3('0x3f')](_0x32d191[_0xaca3('0x35')][_0xaca3('0x3f')]);_0x71ff[_0xaca3('0x40')]=qs[_0xaca3('0x37')](_[_0xaca3('0x41')](_0x32d191[_0xaca3('0x35')],_0x31e59e['filters']),_0x3b9956);if(_0x32d191[_0xaca3('0x35')]['filter']){_0x71ff[_0xaca3('0x40')]=_[_0xaca3('0x42')](_0x71ff['where'],{'$or':_[_0xaca3('0x2e')](_0x3b9956,function(_0x206737){if(_0x206737[_0xaca3('0x32')]!=='VIRTUAL'){var _0x580cd1={};_0x580cd1[_0x206737[_0xaca3('0x2c')]]={'$like':'%'+_0x32d191[_0xaca3('0x35')][_0xaca3('0x43')]+'%'};return _0x580cd1;}})});}_0x71ff=_[_0xaca3('0x42')]({},_0x71ff,_0x32d191[_0xaca3('0x44')]);var _0x4621a7={'where':_0x71ff[_0xaca3('0x40')]};return db['VoiceQueueReport']['count'](_0x4621a7)[_0xaca3('0x29')](function(_0x64d885){_0x9f8b32[_0xaca3('0x23')]=_0x64d885;if(_0x32d191[_0xaca3('0x35')][_0xaca3('0x45')]){_0x71ff[_0xaca3('0x46')]=[{'all':!![]}];}return db[_0xaca3('0x2f')]['findAll'](_0x71ff);})[_0xaca3('0x29')](function(_0x8c11d){_0x9f8b32[_0xaca3('0x47')]=_0x8c11d;return _0x9f8b32;})[_0xaca3('0x29')](respondWithFilteredResult(_0x35c79d,_0x71ff))[_0xaca3('0x48')](handleError(_0x35c79d,null));};exports['show']=function(_0x347b03,_0x46d2c5){var _0x4616ea={'raw':![],'where':{'id':_0x347b03[_0xaca3('0x49')]['id']}},_0x1fe73d={};_0x1fe73d['model']=_[_0xaca3('0x36')](db['VoiceQueueReport'][_0xaca3('0x30')]);_0x1fe73d[_0xaca3('0x35')]=_[_0xaca3('0x36')](_0x347b03[_0xaca3('0x35')]);_0x1fe73d['filters']=_[_0xaca3('0x38')](_0x1fe73d['model'],_0x1fe73d[_0xaca3('0x35')]);_0x4616ea['attributes']=_[_0xaca3('0x38')](_0x1fe73d[_0xaca3('0x34')],qs['fields'](_0x347b03['query'][_0xaca3('0x3a')]));_0x4616ea[_0xaca3('0x39')]=_0x4616ea['attributes'][_0xaca3('0x3b')]?_0x4616ea['attributes']:_0x1fe73d[_0xaca3('0x34')];if(_0x347b03[_0xaca3('0x35')][_0xaca3('0x45')]){_0x4616ea[_0xaca3('0x46')]=[{'all':!![]}];}_0x4616ea=_[_0xaca3('0x42')]({},_0x4616ea,_0x347b03['options']);return db[_0xaca3('0x2f')]['find'](_0x4616ea)[_0xaca3('0x29')](handleEntityNotFound(_0x46d2c5,null))[_0xaca3('0x29')](respondWithResult(_0x46d2c5,null))[_0xaca3('0x48')](handleError(_0x46d2c5,null));};exports[_0xaca3('0x4a')]=function(_0x3aa1e0,_0x471dd1){return db[_0xaca3('0x2f')][_0xaca3('0x4a')](_0x3aa1e0[_0xaca3('0x4b')],{})[_0xaca3('0x29')](respondWithResult(_0x471dd1,0xc9))['catch'](handleError(_0x471dd1,null));};exports[_0xaca3('0x4c')]=function(_0x3ac2eb,_0x5923a7){if(_0x3ac2eb[_0xaca3('0x4b')]['id']){delete _0x3ac2eb[_0xaca3('0x4b')]['id'];}return db[_0xaca3('0x2f')]['find']({'where':{'id':_0x3ac2eb[_0xaca3('0x49')]['id']}})[_0xaca3('0x29')](handleEntityNotFound(_0x5923a7,null))[_0xaca3('0x29')](saveUpdates(_0x3ac2eb[_0xaca3('0x4b')],null))[_0xaca3('0x29')](respondWithResult(_0x5923a7,null))['catch'](handleError(_0x5923a7,null));};exports[_0xaca3('0x28')]=function(_0x5192ba,_0x36e9db){return db['VoiceQueueReport']['find']({'where':{'id':_0x5192ba[_0xaca3('0x49')]['id']}})[_0xaca3('0x29')](handleEntityNotFound(_0x36e9db,null))['then'](removeEntity(_0x36e9db,null))[_0xaca3('0x48')](handleError(_0x36e9db,null));};exports[_0xaca3('0x4d')]=function(_0x3ec5a9,_0x54aded){return db['VoiceQueueReport']['describe']()[_0xaca3('0x29')](respondWithResult(_0x54aded,null))['catch'](handleError(_0x54aded,null));};exports[_0xaca3('0x4e')]=function(_0x2c4752,_0x1f7335){var _0x23b0cc={},_0x18a460={},_0x2a51ea={'count':0x0,'rows':[]};_0x18a460[_0xaca3('0x34')]=_['keys'](db[_0xaca3('0x2f')][_0xaca3('0x30')]);_0x18a460['query']=_['keys'](_0x2c4752[_0xaca3('0x35')]);_0x18a460[_0xaca3('0x37')]=_[_0xaca3('0x38')](_0x18a460[_0xaca3('0x34')],_0x18a460[_0xaca3('0x35')]);_0x23b0cc[_0xaca3('0x39')]=_[_0xaca3('0x38')](_0x18a460[_0xaca3('0x34')],qs[_0xaca3('0x3a')](_0x2c4752['query'][_0xaca3('0x3a')]));_0x23b0cc[_0xaca3('0x39')]=_0x23b0cc[_0xaca3('0x39')][_0xaca3('0x3b')]?_0x23b0cc[_0xaca3('0x39')]:_0x18a460[_0xaca3('0x34')];if(!_0x2c4752[_0xaca3('0x35')][_0xaca3('0x3c')](_0xaca3('0x3d'))){_0x23b0cc[_0xaca3('0x22')]=qs[_0xaca3('0x22')](_0x2c4752[_0xaca3('0x35')]['limit']);_0x23b0cc[_0xaca3('0x20')]=qs['offset'](_0x2c4752['query'][_0xaca3('0x20')]);}_0x23b0cc[_0xaca3('0x3e')]=qs['sort'](_0x2c4752[_0xaca3('0x35')]['sort']);_0x23b0cc[_0xaca3('0x40')]=qs['filters'](_[_0xaca3('0x41')](_0x2c4752[_0xaca3('0x35')],_0x18a460[_0xaca3('0x37')]));if(_0x2c4752[_0xaca3('0x35')][_0xaca3('0x43')]){_0x23b0cc[_0xaca3('0x40')]=_[_0xaca3('0x42')](_0x23b0cc[_0xaca3('0x40')],{'$or':_[_0xaca3('0x2e')](_0x23b0cc[_0xaca3('0x39')],function(_0x521e3a){var _0x2aa7cd={};_0x2aa7cd[_0x521e3a]={'$like':'%'+_0x2c4752[_0xaca3('0x35')]['filter']+'%'};return _0x2aa7cd;})});}_0x23b0cc=_[_0xaca3('0x42')]({},_0x23b0cc,_0x2c4752[_0xaca3('0x44')]);var _0x4c8411={'where':_0x23b0cc[_0xaca3('0x40')]};return db[_0xaca3('0x2f')][_0xaca3('0x23')](_0x4c8411)[_0xaca3('0x29')](function(_0x23c8d9){_0x2a51ea[_0xaca3('0x23')]=_0x23c8d9;if(_0x2c4752[_0xaca3('0x35')][_0xaca3('0x45')]){_0x23b0cc[_0xaca3('0x46')]=[{'all':!![]}];}return db[_0xaca3('0x2f')][_0xaca3('0x4f')](_0x23b0cc);})[_0xaca3('0x29')](function(_0x3ea4b6){_0x2a51ea['rows']=_0x3ea4b6;return _0x2a51ea;})[_0xaca3('0x29')](respondWithFilteredResult(_0x1f7335,_0x23b0cc,'getVoiceQueuesReport'))[_0xaca3('0x48')](handleError(_0x1f7335,null,_0xaca3('0x4e')));};
\ No newline at end of file
index a05f67b..bf688af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0df=['events','VoiceQueueReport','save','update','remove','emit','hasOwnProperty'];(function(_0x205130,_0x57c28c){var _0x429a05=function(_0x5a581d){while(--_0x5a581d){_0x205130['push'](_0x205130['shift']());}};_0x429a05(++_0x57c28c);}(_0xf0df,0x85));var _0xff0d=function(_0x4d2535,_0x2cb0b4){_0x4d2535=_0x4d2535-0x0;var _0x18d124=_0xf0df[_0x4d2535];return _0x18d124;};'use strict';var EventEmitter=require(_0xff0d('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0xff0d('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xff0d('0x2'),'afterUpdate':_0xff0d('0x3'),'afterDestroy':_0xff0d('0x4')};function emitEvent(_0x2f06cc){return function(_0x53523c,_0x4e6efb,_0x1c4f3f){VoiceQueueReportEvents[_0xff0d('0x5')](_0x2f06cc+':'+_0x53523c['id'],_0x53523c);VoiceQueueReportEvents['emit'](_0x2f06cc,_0x53523c);_0x1c4f3f(null);};}for(var e in events){if(events[_0xff0d('0x6')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xb2d1=['hook','exports','events','../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x5452da,_0xbe1fd3){var _0x3720fd=function(_0xa652ac){while(--_0xa652ac){_0x5452da['push'](_0x5452da['shift']());}};_0x3720fd(++_0xbe1fd3);}(_0xb2d1,0x17c));var _0x1b2d=function(_0x22f8ab,_0x15d8ff){_0x22f8ab=_0x22f8ab-0x0;var _0x2a70e5=_0xb2d1[_0x22f8ab];return _0x2a70e5;};'use strict';var EventEmitter=require(_0x1b2d('0x0'));var VoiceQueueReport=require(_0x1b2d('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x1b2d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1b2d('0x3'),'afterDestroy':_0x1b2d('0x4')};function emitEvent(_0x19455f){return function(_0x12c01c,_0x356a4e,_0x47d533){VoiceQueueReportEvents[_0x1b2d('0x5')](_0x19455f+':'+_0x12c01c['id'],_0x12c01c);VoiceQueueReportEvents[_0x1b2d('0x5')](_0x19455f,_0x12c01c);_0x47d533(null);};}for(var e in events){if(events[_0x1b2d('0x6')](e)){var event=events[e];VoiceQueueReport[_0x1b2d('0x7')](e,emitEvent(event));}}module[_0x1b2d('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 16a4d74..bc672cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad10=['path','../../config/environment','./voiceQueueReport.attributes','report_queue','calleridnum','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x29aebc,_0x54bb9e){var _0x1528d6=function(_0x42ae24){while(--_0x42ae24){_0x29aebc['push'](_0x29aebc['shift']());}};_0x1528d6(++_0x54bb9e);}(_0xad10,0xcb));var _0x0ad1=function(_0x57c748,_0x4d1e7a){_0x57c748=_0x57c748-0x0;var _0x485b44=_0xad10[_0x57c748];return _0x485b44;};'use strict';var _=require('lodash');var util=require(_0x0ad1('0x0'));var logger=require(_0x0ad1('0x1'))(_0x0ad1('0x2'));var moment=require(_0x0ad1('0x3'));var BPromise=require(_0x0ad1('0x4'));var rp=require(_0x0ad1('0x5'));var fs=require('fs');var path=require(_0x0ad1('0x6'));var rimraf=require('rimraf');var config=require(_0x0ad1('0x7'));var attributes=require(_0x0ad1('0x8'));module['exports']=function(_0x3eed63,_0x594daa){return _0x3eed63['define']('VoiceQueueReport',attributes,{'tableName':_0x0ad1('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x0ad1('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x928f=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./voiceQueueReport.attributes','exports','define','report_queue','calleridnum','lodash','util'];(function(_0x5c10d3,_0x3a3b3a){var _0x2cbab4=function(_0x167680){while(--_0x167680){_0x5c10d3['push'](_0x5c10d3['shift']());}};_0x2cbab4(++_0x3a3b3a);}(_0x928f,0x184));var _0xf928=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x928f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf928('0x0'));var util=require(_0xf928('0x1'));var logger=require(_0xf928('0x2'))(_0xf928('0x3'));var moment=require(_0xf928('0x4'));var BPromise=require(_0xf928('0x5'));var rp=require(_0xf928('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf928('0x7'));var attributes=require(_0xf928('0x8'));module[_0xf928('0x9')]=function(_0x5af03b,_0x8a457f){return _0x5af03b[_0xf928('0xa')]('VoiceQueueReport',attributes,{'tableName':_0xf928('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0xf928('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 8dc9658..e8fa53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ffd=['then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','include','map','model','debug','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','limit','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request'];(function(_0x503699,_0x152145){var _0xd66c82=function(_0x48c6e7){while(--_0x48c6e7){_0x503699['push'](_0x503699['shift']());}};_0xd66c82(++_0x152145);}(_0x8ffd,0x122));var _0xd8ff=function(_0xeb67cb,_0x3facda){_0xeb67cb=_0xeb67cb-0x0;var _0xc8fe96=_0x8ffd[_0xeb67cb];return _0xc8fe96;};'use strict';var _=require(_0xd8ff('0x0'));var util=require(_0xd8ff('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd8ff('0x2'));var fs=require('fs');var Redis=require(_0xd8ff('0x3'));var db=require(_0xd8ff('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd8ff('0x5'))(_0xd8ff('0x6'));var config=require(_0xd8ff('0x7'));var jayson=require(_0xd8ff('0x8'));var client=jayson[_0xd8ff('0x9')][_0xd8ff('0xa')]({'port':0x232a});config[_0xd8ff('0xb')]=_[_0xd8ff('0xc')](config[_0xd8ff('0xb')],{'host':_0xd8ff('0xd'),'port':0x18eb});var socket=require(_0xd8ff('0xe'))(new Redis(config[_0xd8ff('0xb')]));require(_0xd8ff('0xf'))[_0xd8ff('0x10')](socket);function respondWithRpcPromise(_0x342fe9,_0x3b575e,_0x37f3d2){return new BPromise(function(_0xc34acf,_0x33848e){return client[_0xd8ff('0x11')](_0x342fe9,_0x37f3d2)[_0xd8ff('0x12')](function(_0x18ce42){logger[_0xd8ff('0x13')](_0xd8ff('0x14'),_0x3b575e,_0xd8ff('0x15'));logger['debug']('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x3b575e,_0xd8ff('0x15'),JSON[_0xd8ff('0x16')](_0x18ce42));if(_0x18ce42[_0xd8ff('0x17')]){if(_0x18ce42['error']['code']===0x1f4){logger[_0xd8ff('0x17')](_0xd8ff('0x14'),_0x3b575e,_0x18ce42[_0xd8ff('0x17')][_0xd8ff('0x18')]);return _0x33848e(_0x18ce42['error'][_0xd8ff('0x18')]);}logger[_0xd8ff('0x17')](_0xd8ff('0x14'),_0x3b575e,_0x18ce42[_0xd8ff('0x17')]['message']);return _0xc34acf(_0x18ce42[_0xd8ff('0x17')][_0xd8ff('0x18')]);}else{logger['info'](_0xd8ff('0x14'),_0x3b575e,_0xd8ff('0x15'));_0xc34acf(_0x18ce42[_0xd8ff('0x19')][_0xd8ff('0x18')]);}})[_0xd8ff('0x1a')](function(_0x2a1d44){logger[_0xd8ff('0x17')](_0xd8ff('0x14'),_0x3b575e,_0x2a1d44);_0x33848e(_0x2a1d44);});});}exports[_0xd8ff('0x1b')]=function(_0x23af41){var _0x26afe1=this;return new Promise(function(_0x1ffce5,_0x213c85){return db[_0xd8ff('0x1c')][_0xd8ff('0x1d')]({'raw':_0x23af41[_0xd8ff('0x1e')]?_0x23af41['options'][_0xd8ff('0x1f')]===undefined?!![]:![]:!![],'where':_0x23af41[_0xd8ff('0x1e')]?_0x23af41[_0xd8ff('0x1e')][_0xd8ff('0x20')]||null:null,'attributes':_0x23af41[_0xd8ff('0x1e')]?_0x23af41[_0xd8ff('0x1e')][_0xd8ff('0x21')]||null:null,'limit':_0x23af41[_0xd8ff('0x1e')]?_0x23af41['options']['limit']||null:null,'include':_0x23af41['options']?_0x23af41[_0xd8ff('0x1e')][_0xd8ff('0x22')]?_[_0xd8ff('0x23')](_0x23af41['options']['include'],function(_0x1ebda5){return{'model':db[_0x1ebda5[_0xd8ff('0x24')]],'as':_0x1ebda5['as'],'attributes':_0x1ebda5[_0xd8ff('0x21')],'include':_0x1ebda5[_0xd8ff('0x22')]?_[_0xd8ff('0x23')](_0x1ebda5[_0xd8ff('0x22')],function(_0x54dd21){return{'model':db[_0x54dd21[_0xd8ff('0x24')]],'as':_0x54dd21['as'],'attributes':_0x54dd21[_0xd8ff('0x21')],'include':_0x54dd21[_0xd8ff('0x22')]?_[_0xd8ff('0x23')](_0x54dd21[_0xd8ff('0x22')],function(_0x5f1f8c){return{'model':db[_0x5f1f8c[_0xd8ff('0x24')]],'as':_0x5f1f8c['as'],'attributes':_0x5f1f8c['attributes']};}):[]};}):[]};}):[]:[]})[_0xd8ff('0x12')](function(_0x236402){logger['info'](_0xd8ff('0x1b'),_0x23af41);logger[_0xd8ff('0x25')](_0xd8ff('0x1b'),_0x23af41,JSON['stringify'](_0x236402));_0x1ffce5(_0x236402);})[_0xd8ff('0x1a')](function(_0x312f38){logger[_0xd8ff('0x17')](_0xd8ff('0x1b'),_0x312f38[_0xd8ff('0x18')],_0x23af41);_0x213c85(_0x26afe1[_0xd8ff('0x17')](0x1f4,_0x312f38[_0xd8ff('0x18')]));});});};exports['CreateVoiceQueueReport']=function(_0x484e77){var _0x29ab42=this;return new Promise(function(_0x861f32,_0x3b4e8a){return db[_0xd8ff('0x1c')][_0xd8ff('0x26')](_0x484e77[_0xd8ff('0x27')],{'raw':_0x484e77[_0xd8ff('0x1e')]?_0x484e77[_0xd8ff('0x1e')][_0xd8ff('0x1f')]===undefined?!![]:![]:!![]})[_0xd8ff('0x12')](function(_0x545bd8){logger['info'](_0xd8ff('0x28'),_0x484e77);logger[_0xd8ff('0x25')]('CreateVoiceQueueReport',_0x484e77,JSON[_0xd8ff('0x16')](_0x545bd8));_0x861f32(_0x545bd8);})[_0xd8ff('0x1a')](function(_0x13cb28){logger[_0xd8ff('0x17')](_0xd8ff('0x28'),_0x13cb28[_0xd8ff('0x18')],_0x484e77);_0x3b4e8a(_0x29ab42[_0xd8ff('0x17')](0x1f4,_0x13cb28['message']));});});};exports[_0xd8ff('0x29')]=function(_0x2b446d){var _0x4de6aa=this;return new Promise(function(_0x2d1c66,_0x3b905e){return db[_0xd8ff('0x1c')][_0xd8ff('0x2a')](_0x2b446d['body'],{'raw':_0x2b446d[_0xd8ff('0x1e')]?_0x2b446d[_0xd8ff('0x1e')][_0xd8ff('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b446d['options']?_0x2b446d['options'][_0xd8ff('0x20')]||null:null,'attributes':_0x2b446d[_0xd8ff('0x1e')]?_0x2b446d[_0xd8ff('0x1e')]['attributes']||null:null,'limit':_0x2b446d[_0xd8ff('0x1e')]?_0x2b446d[_0xd8ff('0x1e')][_0xd8ff('0x2b')]||null:null})[_0xd8ff('0x12')](function(_0x1283c8){logger[_0xd8ff('0x13')](_0xd8ff('0x29'),_0x2b446d);logger[_0xd8ff('0x25')]('UpdateVoiceQueueReport',_0x2b446d,JSON['stringify'](_0x1283c8));_0x2d1c66(_0x1283c8);})[_0xd8ff('0x1a')](function(_0x320d6a){logger[_0xd8ff('0x17')](_0xd8ff('0x29'),_0x320d6a['message'],_0x2b446d);_0x3b905e(_0x4de6aa[_0xd8ff('0x17')](0x1f4,_0x320d6a['message']));});});};
\ No newline at end of file
+var _0x9d58=['http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','include','model','map','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise'];(function(_0x292507,_0x3a7029){var _0x285aaa=function(_0x2fbf87){while(--_0x2fbf87){_0x292507['push'](_0x292507['shift']());}};_0x285aaa(++_0x3a7029);}(_0x9d58,0x9c));var _0x89d5=function(_0x320b8e,_0x1da3fe){_0x320b8e=_0x320b8e-0x0;var _0x55a10a=_0x9d58[_0x320b8e];return _0x55a10a;};'use strict';var _=require(_0x89d5('0x0'));var util=require(_0x89d5('0x1'));var moment=require(_0x89d5('0x2'));var BPromise=require('bluebird');var rs=require(_0x89d5('0x3'));var fs=require('fs');var Redis=require(_0x89d5('0x4'));var db=require(_0x89d5('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x89d5('0x6'));var config=require('../../config/environment');var jayson=require(_0x89d5('0x7'));var client=jayson['client'][_0x89d5('0x8')]({'port':0x232a});config[_0x89d5('0x9')]=_[_0x89d5('0xa')](config[_0x89d5('0x9')],{'host':_0x89d5('0xb'),'port':0x18eb});var socket=require(_0x89d5('0xc'))(new Redis(config[_0x89d5('0x9')]));require(_0x89d5('0xd'))[_0x89d5('0xe')](socket);function respondWithRpcPromise(_0x16d4ba,_0xb43cde,_0x325cb9){return new BPromise(function(_0x56db62,_0x1f967d){return client[_0x89d5('0xf')](_0x16d4ba,_0x325cb9)[_0x89d5('0x10')](function(_0x4319fc){logger[_0x89d5('0x11')](_0x89d5('0x12'),_0xb43cde,_0x89d5('0x13'));logger[_0x89d5('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0xb43cde,'request\x20sent',JSON[_0x89d5('0x15')](_0x4319fc));if(_0x4319fc[_0x89d5('0x16')]){if(_0x4319fc[_0x89d5('0x16')][_0x89d5('0x17')]===0x1f4){logger[_0x89d5('0x16')](_0x89d5('0x12'),_0xb43cde,_0x4319fc[_0x89d5('0x16')][_0x89d5('0x18')]);return _0x1f967d(_0x4319fc[_0x89d5('0x16')]['message']);}logger[_0x89d5('0x16')](_0x89d5('0x12'),_0xb43cde,_0x4319fc[_0x89d5('0x16')][_0x89d5('0x18')]);return _0x56db62(_0x4319fc[_0x89d5('0x16')]['message']);}else{logger[_0x89d5('0x11')](_0x89d5('0x12'),_0xb43cde,_0x89d5('0x13'));_0x56db62(_0x4319fc['result']['message']);}})[_0x89d5('0x19')](function(_0x5bd83e){logger[_0x89d5('0x16')](_0x89d5('0x12'),_0xb43cde,_0x5bd83e);_0x1f967d(_0x5bd83e);});});}exports[_0x89d5('0x1a')]=function(_0x12d91c){var _0x5f3ad3=this;return new Promise(function(_0x1fd6ff,_0x456929){return db[_0x89d5('0x1b')][_0x89d5('0x1c')]({'raw':_0x12d91c[_0x89d5('0x1d')]?_0x12d91c[_0x89d5('0x1d')][_0x89d5('0x1e')]===undefined?!![]:![]:!![],'where':_0x12d91c[_0x89d5('0x1d')]?_0x12d91c['options'][_0x89d5('0x1f')]||null:null,'attributes':_0x12d91c['options']?_0x12d91c['options'][_0x89d5('0x20')]||null:null,'limit':_0x12d91c[_0x89d5('0x1d')]?_0x12d91c[_0x89d5('0x1d')]['limit']||null:null,'include':_0x12d91c[_0x89d5('0x1d')]?_0x12d91c['options'][_0x89d5('0x21')]?_['map'](_0x12d91c[_0x89d5('0x1d')][_0x89d5('0x21')],function(_0x189010){return{'model':db[_0x189010[_0x89d5('0x22')]],'as':_0x189010['as'],'attributes':_0x189010[_0x89d5('0x20')],'include':_0x189010[_0x89d5('0x21')]?_[_0x89d5('0x23')](_0x189010[_0x89d5('0x21')],function(_0x4e6ffb){return{'model':db[_0x4e6ffb[_0x89d5('0x22')]],'as':_0x4e6ffb['as'],'attributes':_0x4e6ffb[_0x89d5('0x20')],'include':_0x4e6ffb[_0x89d5('0x21')]?_[_0x89d5('0x23')](_0x4e6ffb[_0x89d5('0x21')],function(_0x450a5c){return{'model':db[_0x450a5c[_0x89d5('0x22')]],'as':_0x450a5c['as'],'attributes':_0x450a5c[_0x89d5('0x20')]};}):[]};}):[]};}):[]:[]})[_0x89d5('0x10')](function(_0x1228ad){logger[_0x89d5('0x11')](_0x89d5('0x1a'),_0x12d91c);logger['debug'](_0x89d5('0x1a'),_0x12d91c,JSON[_0x89d5('0x15')](_0x1228ad));_0x1fd6ff(_0x1228ad);})[_0x89d5('0x19')](function(_0x5f0895){logger[_0x89d5('0x16')]('GetVoiceQueueReport',_0x5f0895[_0x89d5('0x18')],_0x12d91c);_0x456929(_0x5f3ad3[_0x89d5('0x16')](0x1f4,_0x5f0895[_0x89d5('0x18')]));});});};exports['CreateVoiceQueueReport']=function(_0x537447){var _0x12f726=this;return new Promise(function(_0x102512,_0x34ca37){return db[_0x89d5('0x1b')][_0x89d5('0x24')](_0x537447[_0x89d5('0x25')],{'raw':_0x537447[_0x89d5('0x1d')]?_0x537447[_0x89d5('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x89d5('0x10')](function(_0x26a58f){logger['info']('CreateVoiceQueueReport',_0x537447);logger[_0x89d5('0x14')]('CreateVoiceQueueReport',_0x537447,JSON[_0x89d5('0x15')](_0x26a58f));_0x102512(_0x26a58f);})['catch'](function(_0x5d2ada){logger[_0x89d5('0x16')](_0x89d5('0x26'),_0x5d2ada['message'],_0x537447);_0x34ca37(_0x12f726[_0x89d5('0x16')](0x1f4,_0x5d2ada[_0x89d5('0x18')]));});});};exports[_0x89d5('0x27')]=function(_0x1ce58f){var _0x2263ef=this;return new Promise(function(_0x3e418b,_0x4f2be1){return db[_0x89d5('0x1b')]['update'](_0x1ce58f[_0x89d5('0x25')],{'raw':_0x1ce58f[_0x89d5('0x1d')]?_0x1ce58f['options'][_0x89d5('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ce58f[_0x89d5('0x1d')]?_0x1ce58f['options'][_0x89d5('0x1f')]||null:null,'attributes':_0x1ce58f[_0x89d5('0x1d')]?_0x1ce58f['options']['attributes']||null:null,'limit':_0x1ce58f[_0x89d5('0x1d')]?_0x1ce58f['options'][_0x89d5('0x28')]||null:null})[_0x89d5('0x10')](function(_0x3ba749){logger[_0x89d5('0x11')]('UpdateVoiceQueueReport',_0x1ce58f);logger[_0x89d5('0x14')](_0x89d5('0x27'),_0x1ce58f,JSON['stringify'](_0x3ba749));_0x3e418b(_0x3ba749);})[_0x89d5('0x19')](function(_0x101c41){logger[_0x89d5('0x16')](_0x89d5('0x27'),_0x101c41[_0x89d5('0x18')],_0x1ce58f);_0x4f2be1(_0x2263ef[_0x89d5('0x16')](0x1f4,_0x101c41[_0x89d5('0x18')]));});});};
\ No newline at end of file
index 6c38fa4..51c27e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66f4=['save','remove','update','emit','register','voiceQueueReport:'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x66f4,0xb4));var _0x466f=function(_0x13af71,_0x5b29c4){_0x13af71=_0x13af71-0x0;var _0x2516a9=_0x66f4[_0x13af71];return _0x2516a9;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x466f('0x0'),_0x466f('0x1'),_0x466f('0x2')];function createListener(_0x459aa6,_0x139b19){return function(_0x2f14d9){_0x139b19[_0x466f('0x3')](_0x459aa6,_0x2f14d9);};}function removeListener(_0x1e516a,_0x3329b3){return function(){VoiceQueueReportEvents['removeListener'](_0x1e516a,_0x3329b3);};}exports[_0x466f('0x4')]=function(_0x16a4ef){for(var _0x40a36f=0x0,_0x13834b=events['length'];_0x40a36f<_0x13834b;_0x40a36f++){var _0x1f2468=events[_0x40a36f];var _0x21b1f8=createListener(_0x466f('0x5')+_0x1f2468,_0x16a4ef);VoiceQueueReportEvents['on'](_0x1f2468,_0x21b1f8);}};
\ No newline at end of file
+var _0x6fad=['length','./voiceQueueReport.events','save','remove','update','emit','removeListener'];(function(_0x4c6efa,_0x4fc171){var _0x14191a=function(_0x13390a){while(--_0x13390a){_0x4c6efa['push'](_0x4c6efa['shift']());}};_0x14191a(++_0x4fc171);}(_0x6fad,0x174));var _0xd6fa=function(_0x5d3306,_0x6e1379){_0x5d3306=_0x5d3306-0x0;var _0x6968f7=_0x6fad[_0x5d3306];return _0x6968f7;};'use strict';var VoiceQueueReportEvents=require(_0xd6fa('0x0'));var events=[_0xd6fa('0x1'),_0xd6fa('0x2'),_0xd6fa('0x3')];function createListener(_0x4f8a1c,_0x2f5f9b){return function(_0x4ae415){_0x2f5f9b[_0xd6fa('0x4')](_0x4f8a1c,_0x4ae415);};}function removeListener(_0x48f433,_0x3e76d0){return function(){VoiceQueueReportEvents[_0xd6fa('0x5')](_0x48f433,_0x3e76d0);};}exports['register']=function(_0x45dad4){for(var _0x329390=0x0,_0x291bd5=events[_0xd6fa('0x6')];_0x329390<_0x291bd5;_0x329390++){var _0x5a1bf0=events[_0x329390];var _0x1d2aaa=createListener('voiceQueueReport:'+_0x5a1bf0,_0x45dad4);VoiceQueueReportEvents['on'](_0x5a1bf0,_0x1d2aaa);}};
\ No newline at end of file
index b03e71c..9e6c057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd21=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','create','multer','util','path'];(function(_0x48f765,_0xabec5b){var _0x443882=function(_0x1cdd93){while(--_0x1cdd93){_0x48f765['push'](_0x48f765['shift']());}};_0x443882(++_0xabec5b);}(_0xcd21,0xbd));var _0x1cd2=function(_0x1189ca,_0x5a9fb9){_0x1189ca=_0x1189ca-0x0;var _0x4645dd=_0xcd21[_0x1189ca];return _0x4645dd;};'use strict';var multer=require(_0x1cd2('0x0'));var util=require(_0x1cd2('0x1'));var path=require(_0x1cd2('0x2'));var timeout=require(_0x1cd2('0x3'));var express=require(_0x1cd2('0x4'));var router=express[_0x1cd2('0x5')]();var fs_extra=require(_0x1cd2('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1cd2('0x7'));var config=require(_0x1cd2('0x8'));var controller=require(_0x1cd2('0x9'));router[_0x1cd2('0xa')]('/',auth[_0x1cd2('0xb')](),controller[_0x1cd2('0xc')]);router[_0x1cd2('0xa')](_0x1cd2('0xd'),auth[_0x1cd2('0xb')](),controller[_0x1cd2('0xe')]);router['post']('/',auth[_0x1cd2('0xb')](),controller[_0x1cd2('0xf')]);router['put'](_0x1cd2('0xd'),auth[_0x1cd2('0xb')](),controller['update']);router['delete'](_0x1cd2('0xd'),auth[_0x1cd2('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3f03=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3f03,0xf0));var _0x33f0=function(_0x545012,_0x5d4e99){_0x545012=_0x545012-0x0;var _0x45928d=_0x3f03[_0x545012];return _0x45928d;};'use strict';var multer=require(_0x33f0('0x0'));var util=require(_0x33f0('0x1'));var path=require(_0x33f0('0x2'));var timeout=require(_0x33f0('0x3'));var express=require('express');var router=express[_0x33f0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x33f0('0x5'));var interaction=require(_0x33f0('0x6'));var config=require(_0x33f0('0x7'));var controller=require(_0x33f0('0x8'));router[_0x33f0('0x9')]('/',auth[_0x33f0('0xa')](),controller[_0x33f0('0xb')]);router[_0x33f0('0x9')](_0x33f0('0xc'),auth[_0x33f0('0xa')](),controller[_0x33f0('0xd')]);router[_0x33f0('0xe')]('/',auth[_0x33f0('0xa')](),controller[_0x33f0('0xf')]);router[_0x33f0('0x10')](_0x33f0('0xc'),auth[_0x33f0('0xa')](),controller[_0x33f0('0x11')]);router[_0x33f0('0x12')](_0x33f0('0xc'),auth[_0x33f0('0xa')](),controller[_0x33f0('0x13')]);module[_0x33f0('0x14')]=router;
\ No newline at end of file
index f8265ea..7960f2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa027=['moment','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x438bba,_0x1d229f){var _0x1428fd=function(_0x5177a0){while(--_0x5177a0){_0x438bba['push'](_0x438bba['shift']());}};_0x1428fd(++_0x1d229f);}(_0xa027,0x149));var _0x7a02=function(_0x423f08,_0x39195b){_0x423f08=_0x423f08-0x0;var _0x2e2b25=_0xa027[_0x423f08];return _0x2e2b25;};'use strict';var Sequelize=require(_0x7a02('0x0'));var moment=require(_0x7a02('0x1'));module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x7a02('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x7a02('0x3')],'allowNull':![],'defaultValue':Sequelize[_0x7a02('0x4')](_0x7a02('0x5'))}};
\ No newline at end of file
+var _0x1c4c=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','moment','STRING'];(function(_0x2425ed,_0x3a6637){var _0x8ce321=function(_0x3bcef7){while(--_0x3bcef7){_0x2425ed['push'](_0x2425ed['shift']());}};_0x8ce321(++_0x3a6637);}(_0x1c4c,0x17a));var _0xc1c4=function(_0x53b8e0,_0x55d46e){_0x53b8e0=_0x53b8e0-0x0;var _0x10630c=_0x1c4c[_0x53b8e0];return _0x10630c;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc1c4('0x0'));module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xc1c4('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0xc1c4('0x2')](_0xc1c4('0x3'))}};
\ No newline at end of file
index d7c101c..3f78e4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e5a=['update','destroy','then','error','stack','name','index','VoiceQueuesLog','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','eml-format','rimraf','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save'];(function(_0x2c2089,_0x4eb28f){var _0x29ab49=function(_0x81cf0b){while(--_0x81cf0b){_0x2c2089['push'](_0x2c2089['shift']());}};_0x29ab49(++_0x4eb28f);}(_0x1e5a,0x10b));var _0xa1e5=function(_0x254d9f,_0x54ddb5){_0x254d9f=_0x254d9f-0x0;var _0x1eedb9=_0x1e5a[_0x254d9f];return _0x1eedb9;};'use strict';var emlformat=require(_0xa1e5('0x0'));var rimraf=require(_0xa1e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa1e5('0x2'));var moment=require(_0xa1e5('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa1e5('0x4'));var path=require(_0xa1e5('0x5'));var sox=require(_0xa1e5('0x6'));var csv=require(_0xa1e5('0x7'));var ejs=require(_0xa1e5('0x8'));var fs=require('fs');var fs_extra=require(_0xa1e5('0x9'));var _=require(_0xa1e5('0xa'));var squel=require(_0xa1e5('0xb'));var crypto=require(_0xa1e5('0xc'));var jsforce=require(_0xa1e5('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa1e5('0xe'));var Papa=require(_0xa1e5('0xf'));var Redis=require(_0xa1e5('0x10'));var authService=require(_0xa1e5('0x11'));var qs=require(_0xa1e5('0x12'));var as=require(_0xa1e5('0x13'));var hardwareService=require(_0xa1e5('0x14'));var logger=require(_0xa1e5('0x15'))(_0xa1e5('0x16'));var utils=require('../../config/utils');var config=require(_0xa1e5('0x17'));var licenseUtil=require(_0xa1e5('0x18'));var db=require(_0xa1e5('0x19'))['db'];function respondWithStatusCode(_0x565c6d,_0x288b99){_0x288b99=_0x288b99||0xcc;return function(_0x4c1905){if(_0x4c1905){return _0x565c6d[_0xa1e5('0x1a')](_0x288b99);}return _0x565c6d[_0xa1e5('0x1b')](_0x288b99)[_0xa1e5('0x1c')]();};}function respondWithResult(_0x357fd7,_0x15b1ec){_0x15b1ec=_0x15b1ec||0xc8;return function(_0x398588){if(_0x398588){return _0x357fd7[_0xa1e5('0x1b')](_0x15b1ec)[_0xa1e5('0x1d')](_0x398588);}};}function respondWithFilteredResult(_0x4fc023,_0x54fdb9){return function(_0xb57147){if(_0xb57147){var _0x50c8ec=typeof _0x54fdb9[_0xa1e5('0x1e')]===_0xa1e5('0x1f')&&typeof _0x54fdb9['limit']===_0xa1e5('0x1f');var _0x5b6363=_0xb57147[_0xa1e5('0x20')];var _0x3de34d=_0x50c8ec?0x0:_0x54fdb9['offset'];var _0x4c0927=_0x50c8ec?_0xb57147[_0xa1e5('0x20')]:_0x54fdb9[_0xa1e5('0x1e')]+_0x54fdb9[_0xa1e5('0x21')];var _0x5922cd;if(_0x4c0927>=_0x5b6363){_0x4c0927=_0x5b6363;_0x5922cd=0xc8;}else{_0x5922cd=0xce;}_0x4fc023['status'](_0x5922cd);return _0x4fc023[_0xa1e5('0x22')]('Content-Range',_0x3de34d+'-'+_0x4c0927+'/'+_0x5b6363)['json'](_0xb57147);}return null;};}function patchUpdates(_0x11914e){return function(_0x4ae769){try{jsonpatch[_0xa1e5('0x23')](_0x4ae769,_0x11914e,!![]);}catch(_0x22239b){return BPromise['reject'](_0x22239b);}return _0x4ae769[_0xa1e5('0x24')]();};}function saveUpdates(_0x43b071,_0x3552a9){return function(_0x525c13){if(_0x525c13){return _0x525c13[_0xa1e5('0x25')](_0x43b071)['then'](function(_0x437223){return _0x437223;});}return null;};}function removeEntity(_0x186aca,_0x400bbe){return function(_0x5d6582){if(_0x5d6582){return _0x5d6582[_0xa1e5('0x26')]()[_0xa1e5('0x27')](function(){_0x186aca[_0xa1e5('0x1b')](0xcc)[_0xa1e5('0x1c')]();});}};}function handleEntityNotFound(_0xbadd8f,_0x36bb35){return function(_0x5cfe2c){if(!_0x5cfe2c){_0xbadd8f[_0xa1e5('0x1a')](0x194);}return _0x5cfe2c;};}function handleError(_0x49e8bb,_0x9b9b71){_0x9b9b71=_0x9b9b71||0x1f4;return function(_0xed46fb){logger[_0xa1e5('0x28')](_0xed46fb[_0xa1e5('0x29')]);if(_0xed46fb[_0xa1e5('0x2a')]){delete _0xed46fb[_0xa1e5('0x2a')];}_0x49e8bb[_0xa1e5('0x1b')](_0x9b9b71)['send'](_0xed46fb);};}exports[_0xa1e5('0x2b')]=function(_0x43e1ff,_0xdc2a95){var _0x109ba3={},_0xb76bdb={},_0x5ba8e5={'count':0x0,'rows':[]};var _0x2fd4fd=_['map'](db[_0xa1e5('0x2c')]['rawAttributes'],function(_0x3f2d8f){return{'name':_0x3f2d8f['fieldName'],'type':_0x3f2d8f[_0xa1e5('0x2d')][_0xa1e5('0x2e')]};});_0xb76bdb[_0xa1e5('0x2f')]=_[_0xa1e5('0x30')](_0x2fd4fd,_0xa1e5('0x2a'));_0xb76bdb[_0xa1e5('0x31')]=_[_0xa1e5('0x32')](_0x43e1ff[_0xa1e5('0x31')]);_0xb76bdb['filters']=_[_0xa1e5('0x33')](_0xb76bdb['model'],_0xb76bdb['query']);_0x109ba3[_0xa1e5('0x34')]=_[_0xa1e5('0x33')](_0xb76bdb[_0xa1e5('0x2f')],qs[_0xa1e5('0x35')](_0x43e1ff[_0xa1e5('0x31')][_0xa1e5('0x35')]));_0x109ba3[_0xa1e5('0x34')]=_0x109ba3[_0xa1e5('0x34')][_0xa1e5('0x36')]?_0x109ba3[_0xa1e5('0x34')]:_0xb76bdb['model'];if(!_0x43e1ff[_0xa1e5('0x31')][_0xa1e5('0x37')]('nolimit')){_0x109ba3[_0xa1e5('0x21')]=qs['limit'](_0x43e1ff['query'][_0xa1e5('0x21')]);_0x109ba3[_0xa1e5('0x1e')]=qs['offset'](_0x43e1ff['query'][_0xa1e5('0x1e')]);}_0x109ba3[_0xa1e5('0x38')]=qs[_0xa1e5('0x39')](_0x43e1ff[_0xa1e5('0x31')][_0xa1e5('0x39')]);_0x109ba3[_0xa1e5('0x3a')]=qs[_0xa1e5('0x3b')](_[_0xa1e5('0x3c')](_0x43e1ff['query'],_0xb76bdb[_0xa1e5('0x3b')]),_0x2fd4fd);if(_0x43e1ff[_0xa1e5('0x31')][_0xa1e5('0x3d')]){_0x109ba3['where']=_[_0xa1e5('0x3e')](_0x109ba3[_0xa1e5('0x3a')],{'$or':_[_0xa1e5('0x30')](_0x2fd4fd,function(_0x4e1585){if(_0x4e1585[_0xa1e5('0x2d')]!==_0xa1e5('0x3f')){var _0x1c643b={};_0x1c643b[_0x4e1585['name']]={'$like':'%'+_0x43e1ff['query'][_0xa1e5('0x3d')]+'%'};return _0x1c643b;}})});}_0x109ba3=_[_0xa1e5('0x3e')]({},_0x109ba3,_0x43e1ff[_0xa1e5('0x40')]);var _0x483bfa={'where':_0x109ba3[_0xa1e5('0x3a')]};return db[_0xa1e5('0x2c')][_0xa1e5('0x20')](_0x483bfa)[_0xa1e5('0x27')](function(_0x569c1d){_0x5ba8e5['count']=_0x569c1d;if(_0x43e1ff['query']['includeAll']){_0x109ba3[_0xa1e5('0x41')]=[{'all':!![]}];}return db[_0xa1e5('0x2c')][_0xa1e5('0x42')](_0x109ba3);})['then'](function(_0x2274dd){_0x5ba8e5[_0xa1e5('0x43')]=_0x2274dd;return _0x5ba8e5;})['then'](respondWithFilteredResult(_0xdc2a95,_0x109ba3))[_0xa1e5('0x44')](handleError(_0xdc2a95,null));};exports[_0xa1e5('0x45')]=function(_0xb075ae,_0x4fa915){var _0x50f8dd={'raw':!![],'where':{'id':_0xb075ae[_0xa1e5('0x46')]['id']}},_0x2dd788={};_0x2dd788[_0xa1e5('0x2f')]=_[_0xa1e5('0x32')](db[_0xa1e5('0x2c')][_0xa1e5('0x47')]);_0x2dd788['query']=_['keys'](_0xb075ae[_0xa1e5('0x31')]);_0x2dd788[_0xa1e5('0x3b')]=_[_0xa1e5('0x33')](_0x2dd788[_0xa1e5('0x2f')],_0x2dd788[_0xa1e5('0x31')]);_0x50f8dd[_0xa1e5('0x34')]=_['intersection'](_0x2dd788[_0xa1e5('0x2f')],qs[_0xa1e5('0x35')](_0xb075ae[_0xa1e5('0x31')][_0xa1e5('0x35')]));_0x50f8dd[_0xa1e5('0x34')]=_0x50f8dd[_0xa1e5('0x34')][_0xa1e5('0x36')]?_0x50f8dd['attributes']:_0x2dd788[_0xa1e5('0x2f')];if(_0xb075ae[_0xa1e5('0x31')][_0xa1e5('0x48')]){_0x50f8dd[_0xa1e5('0x41')]=[{'all':!![]}];}_0x50f8dd=_[_0xa1e5('0x3e')]({},_0x50f8dd,_0xb075ae['options']);return db[_0xa1e5('0x2c')][_0xa1e5('0x49')](_0x50f8dd)[_0xa1e5('0x27')](handleEntityNotFound(_0x4fa915,null))[_0xa1e5('0x27')](respondWithResult(_0x4fa915,null))[_0xa1e5('0x44')](handleError(_0x4fa915,null));};exports[_0xa1e5('0x4a')]=function(_0x779b3b,_0x29efd5){return db[_0xa1e5('0x2c')][_0xa1e5('0x4a')](_0x779b3b[_0xa1e5('0x4b')],{})[_0xa1e5('0x27')](respondWithResult(_0x29efd5,0xc9))['catch'](handleError(_0x29efd5,null));};exports[_0xa1e5('0x25')]=function(_0xbe0232,_0x5971d3){if(_0xbe0232[_0xa1e5('0x4b')]['id']){delete _0xbe0232[_0xa1e5('0x4b')]['id'];}return db[_0xa1e5('0x2c')][_0xa1e5('0x49')]({'where':{'id':_0xbe0232['params']['id']}})[_0xa1e5('0x27')](handleEntityNotFound(_0x5971d3,null))[_0xa1e5('0x27')](saveUpdates(_0xbe0232[_0xa1e5('0x4b')],null))['then'](respondWithResult(_0x5971d3,null))['catch'](handleError(_0x5971d3,null));};exports[_0xa1e5('0x26')]=function(_0x50a546,_0x57e674){return db[_0xa1e5('0x2c')]['find']({'where':{'id':_0x50a546[_0xa1e5('0x46')]['id']}})[_0xa1e5('0x27')](handleEntityNotFound(_0x57e674,null))[_0xa1e5('0x27')](removeEntity(_0x57e674,null))['catch'](handleError(_0x57e674,null));};
\ No newline at end of file
+var _0x0a6b=['rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','VoiceQueuesLog','rawAttributes','fieldName','key','map','query','keys','intersection','attributes','model','fields','length','nolimit','sort','where','filters','pick','merge','type','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','eml-format'];(function(_0x37bf68,_0x3e5229){var _0x1c3851=function(_0x310de2){while(--_0x310de2){_0x37bf68['push'](_0x37bf68['shift']());}};_0x1c3851(++_0x3e5229);}(_0x0a6b,0xe3));var _0xb0a6=function(_0x28b9fa,_0x25f40a){_0x28b9fa=_0x28b9fa-0x0;var _0x1beb5d=_0x0a6b[_0x28b9fa];return _0x1beb5d;};'use strict';var emlformat=require(_0xb0a6('0x0'));var rimraf=require(_0xb0a6('0x1'));var zipdir=require(_0xb0a6('0x2'));var jsonpatch=require(_0xb0a6('0x3'));var rp=require(_0xb0a6('0x4'));var moment=require(_0xb0a6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb0a6('0x6'));var util=require('util');var path=require(_0xb0a6('0x7'));var sox=require(_0xb0a6('0x8'));var csv=require(_0xb0a6('0x9'));var ejs=require(_0xb0a6('0xa'));var fs=require('fs');var fs_extra=require(_0xb0a6('0xb'));var _=require(_0xb0a6('0xc'));var squel=require('squel');var crypto=require(_0xb0a6('0xd'));var jsforce=require(_0xb0a6('0xe'));var deskjs=require(_0xb0a6('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb0a6('0x10'));var Papa=require(_0xb0a6('0x11'));var Redis=require(_0xb0a6('0x12'));var authService=require(_0xb0a6('0x13'));var qs=require(_0xb0a6('0x14'));var as=require(_0xb0a6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb0a6('0x16'))(_0xb0a6('0x17'));var utils=require(_0xb0a6('0x18'));var config=require(_0xb0a6('0x19'));var licenseUtil=require(_0xb0a6('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x411525,_0x269569){_0x269569=_0x269569||0xcc;return function(_0x365aaa){if(_0x365aaa){return _0x411525[_0xb0a6('0x1b')](_0x269569);}return _0x411525[_0xb0a6('0x1c')](_0x269569)[_0xb0a6('0x1d')]();};}function respondWithResult(_0x5ccd40,_0x186a7f){_0x186a7f=_0x186a7f||0xc8;return function(_0x6ce75){if(_0x6ce75){return _0x5ccd40['status'](_0x186a7f)[_0xb0a6('0x1e')](_0x6ce75);}};}function respondWithFilteredResult(_0x59b3ea,_0x13ee25){return function(_0x20a2e3){if(_0x20a2e3){var _0x427b37=typeof _0x13ee25[_0xb0a6('0x1f')]===_0xb0a6('0x20')&&typeof _0x13ee25[_0xb0a6('0x21')]===_0xb0a6('0x20');var _0x30680e=_0x20a2e3['count'];var _0x297df4=_0x427b37?0x0:_0x13ee25[_0xb0a6('0x1f')];var _0x2a3c5a=_0x427b37?_0x20a2e3[_0xb0a6('0x22')]:_0x13ee25[_0xb0a6('0x1f')]+_0x13ee25[_0xb0a6('0x21')];var _0x2ed227;if(_0x2a3c5a>=_0x30680e){_0x2a3c5a=_0x30680e;_0x2ed227=0xc8;}else{_0x2ed227=0xce;}_0x59b3ea['status'](_0x2ed227);return _0x59b3ea['set'](_0xb0a6('0x23'),_0x297df4+'-'+_0x2a3c5a+'/'+_0x30680e)[_0xb0a6('0x1e')](_0x20a2e3);}return null;};}function patchUpdates(_0x2a52ef){return function(_0x153169){try{jsonpatch[_0xb0a6('0x24')](_0x153169,_0x2a52ef,!![]);}catch(_0x23ca9c){return BPromise[_0xb0a6('0x25')](_0x23ca9c);}return _0x153169['save']();};}function saveUpdates(_0x474322,_0x582873){return function(_0x296da5){if(_0x296da5){return _0x296da5['update'](_0x474322)[_0xb0a6('0x26')](function(_0x5a38be){return _0x5a38be;});}return null;};}function removeEntity(_0x5e0773,_0x191d8c){return function(_0x54db29){if(_0x54db29){return _0x54db29[_0xb0a6('0x27')]()[_0xb0a6('0x26')](function(){_0x5e0773[_0xb0a6('0x1c')](0xcc)[_0xb0a6('0x1d')]();});}};}function handleEntityNotFound(_0x33d96c,_0x4ec89a){return function(_0x3194f6){if(!_0x3194f6){_0x33d96c[_0xb0a6('0x1b')](0x194);}return _0x3194f6;};}function handleError(_0x234f78,_0x12426d){_0x12426d=_0x12426d||0x1f4;return function(_0x25610f){logger[_0xb0a6('0x28')](_0x25610f[_0xb0a6('0x29')]);if(_0x25610f[_0xb0a6('0x2a')]){delete _0x25610f[_0xb0a6('0x2a')];}_0x234f78['status'](_0x12426d)[_0xb0a6('0x2b')](_0x25610f);};}exports[_0xb0a6('0x2c')]=function(_0x29b01a,_0x3ee872){var _0x1e6024={},_0x101044={},_0x582f1b={'count':0x0,'rows':[]};var _0x3ed0bb=_['map'](db[_0xb0a6('0x2d')][_0xb0a6('0x2e')],function(_0x43c2c0){return{'name':_0x43c2c0[_0xb0a6('0x2f')],'type':_0x43c2c0['type'][_0xb0a6('0x30')]};});_0x101044['model']=_[_0xb0a6('0x31')](_0x3ed0bb,_0xb0a6('0x2a'));_0x101044[_0xb0a6('0x32')]=_[_0xb0a6('0x33')](_0x29b01a[_0xb0a6('0x32')]);_0x101044['filters']=_[_0xb0a6('0x34')](_0x101044['model'],_0x101044[_0xb0a6('0x32')]);_0x1e6024[_0xb0a6('0x35')]=_[_0xb0a6('0x34')](_0x101044[_0xb0a6('0x36')],qs[_0xb0a6('0x37')](_0x29b01a[_0xb0a6('0x32')][_0xb0a6('0x37')]));_0x1e6024[_0xb0a6('0x35')]=_0x1e6024[_0xb0a6('0x35')][_0xb0a6('0x38')]?_0x1e6024['attributes']:_0x101044['model'];if(!_0x29b01a[_0xb0a6('0x32')]['hasOwnProperty'](_0xb0a6('0x39'))){_0x1e6024['limit']=qs['limit'](_0x29b01a[_0xb0a6('0x32')][_0xb0a6('0x21')]);_0x1e6024[_0xb0a6('0x1f')]=qs[_0xb0a6('0x1f')](_0x29b01a[_0xb0a6('0x32')][_0xb0a6('0x1f')]);}_0x1e6024['order']=qs[_0xb0a6('0x3a')](_0x29b01a[_0xb0a6('0x32')]['sort']);_0x1e6024[_0xb0a6('0x3b')]=qs[_0xb0a6('0x3c')](_[_0xb0a6('0x3d')](_0x29b01a[_0xb0a6('0x32')],_0x101044['filters']),_0x3ed0bb);if(_0x29b01a[_0xb0a6('0x32')]['filter']){_0x1e6024[_0xb0a6('0x3b')]=_[_0xb0a6('0x3e')](_0x1e6024[_0xb0a6('0x3b')],{'$or':_[_0xb0a6('0x31')](_0x3ed0bb,function(_0x2ebf4c){if(_0x2ebf4c[_0xb0a6('0x3f')]!=='VIRTUAL'){var _0x2ca6aa={};_0x2ca6aa[_0x2ebf4c['name']]={'$like':'%'+_0x29b01a[_0xb0a6('0x32')]['filter']+'%'};return _0x2ca6aa;}})});}_0x1e6024=_[_0xb0a6('0x3e')]({},_0x1e6024,_0x29b01a[_0xb0a6('0x40')]);var _0x3d3543={'where':_0x1e6024['where']};return db[_0xb0a6('0x2d')][_0xb0a6('0x22')](_0x3d3543)[_0xb0a6('0x26')](function(_0x3296bf){_0x582f1b[_0xb0a6('0x22')]=_0x3296bf;if(_0x29b01a[_0xb0a6('0x32')][_0xb0a6('0x41')]){_0x1e6024['include']=[{'all':!![]}];}return db[_0xb0a6('0x2d')][_0xb0a6('0x42')](_0x1e6024);})['then'](function(_0x26c71c){_0x582f1b[_0xb0a6('0x43')]=_0x26c71c;return _0x582f1b;})['then'](respondWithFilteredResult(_0x3ee872,_0x1e6024))[_0xb0a6('0x44')](handleError(_0x3ee872,null));};exports[_0xb0a6('0x45')]=function(_0x3158e1,_0x1fbf35){var _0x734f35={'raw':!![],'where':{'id':_0x3158e1[_0xb0a6('0x46')]['id']}},_0x33cca1={};_0x33cca1[_0xb0a6('0x36')]=_[_0xb0a6('0x33')](db[_0xb0a6('0x2d')][_0xb0a6('0x2e')]);_0x33cca1['query']=_[_0xb0a6('0x33')](_0x3158e1['query']);_0x33cca1[_0xb0a6('0x3c')]=_[_0xb0a6('0x34')](_0x33cca1[_0xb0a6('0x36')],_0x33cca1[_0xb0a6('0x32')]);_0x734f35[_0xb0a6('0x35')]=_[_0xb0a6('0x34')](_0x33cca1[_0xb0a6('0x36')],qs[_0xb0a6('0x37')](_0x3158e1[_0xb0a6('0x32')][_0xb0a6('0x37')]));_0x734f35[_0xb0a6('0x35')]=_0x734f35[_0xb0a6('0x35')][_0xb0a6('0x38')]?_0x734f35[_0xb0a6('0x35')]:_0x33cca1['model'];if(_0x3158e1[_0xb0a6('0x32')][_0xb0a6('0x41')]){_0x734f35[_0xb0a6('0x47')]=[{'all':!![]}];}_0x734f35=_[_0xb0a6('0x3e')]({},_0x734f35,_0x3158e1[_0xb0a6('0x40')]);return db['VoiceQueuesLog'][_0xb0a6('0x48')](_0x734f35)[_0xb0a6('0x26')](handleEntityNotFound(_0x1fbf35,null))['then'](respondWithResult(_0x1fbf35,null))[_0xb0a6('0x44')](handleError(_0x1fbf35,null));};exports[_0xb0a6('0x49')]=function(_0x3b6be1,_0x187a22){return db[_0xb0a6('0x2d')][_0xb0a6('0x49')](_0x3b6be1[_0xb0a6('0x4a')],{})[_0xb0a6('0x26')](respondWithResult(_0x187a22,0xc9))[_0xb0a6('0x44')](handleError(_0x187a22,null));};exports[_0xb0a6('0x4b')]=function(_0x2e6d25,_0x2db909){if(_0x2e6d25[_0xb0a6('0x4a')]['id']){delete _0x2e6d25['body']['id'];}return db[_0xb0a6('0x2d')][_0xb0a6('0x48')]({'where':{'id':_0x2e6d25['params']['id']}})['then'](handleEntityNotFound(_0x2db909,null))['then'](saveUpdates(_0x2e6d25[_0xb0a6('0x4a')],null))[_0xb0a6('0x26')](respondWithResult(_0x2db909,null))[_0xb0a6('0x44')](handleError(_0x2db909,null));};exports[_0xb0a6('0x27')]=function(_0x445b16,_0x46e7a8){return db['VoiceQueuesLog']['find']({'where':{'id':_0x445b16[_0xb0a6('0x46')]['id']}})[_0xb0a6('0x26')](handleEntityNotFound(_0x46e7a8,null))[_0xb0a6('0x26')](removeEntity(_0x46e7a8,null))[_0xb0a6('0x44')](handleError(_0x46e7a8,null));};
\ No newline at end of file
index a870a69..ff113f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ea=['request-promise','path','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4507c3,_0x5e1537){var _0x51fef8=function(_0x473006){while(--_0x473006){_0x4507c3['push'](_0x4507c3['shift']());}};_0x51fef8(++_0x5e1537);}(_0x50ea,0x1ca));var _0xa50e=function(_0x488b0d,_0x2f3da4){_0x488b0d=_0x488b0d-0x0;var _0x1eeaba=_0x50ea[_0x488b0d];return _0x1eeaba;};'use strict';var _=require(_0xa50e('0x0'));var util=require(_0xa50e('0x1'));var logger=require(_0xa50e('0x2'))(_0xa50e('0x3'));var moment=require(_0xa50e('0x4'));var BPromise=require(_0xa50e('0x5'));var rp=require(_0xa50e('0x6'));var fs=require('fs');var path=require(_0xa50e('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa50e('0x8'));module[_0xa50e('0x9')]=function(_0x35794c,_0x10e8c9){return _0x35794c[_0xa50e('0xa')](_0xa50e('0xb'),attributes,{'tableName':_0xa50e('0xc'),'paranoid':![],'indexes':[{'name':_0xa50e('0xd'),'fields':[_0xa50e('0xe'),_0xa50e('0xf')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x87f8=['api','moment','request-promise','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm'];(function(_0x58de1f,_0x2eff23){var _0x2ab630=function(_0x21aaaf){while(--_0x21aaaf){_0x58de1f['push'](_0x58de1f['shift']());}};_0x2ab630(++_0x2eff23);}(_0x87f8,0x152));var _0x887f=function(_0x5df107,_0x2aeb61){_0x5df107=_0x5df107-0x0;var _0x1f2194=_0x87f8[_0x5df107];return _0x1f2194;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x887f('0x0'));var moment=require(_0x887f('0x1'));var BPromise=require('bluebird');var rp=require(_0x887f('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x887f('0x3'));var config=require(_0x887f('0x4'));var attributes=require(_0x887f('0x5'));module[_0x887f('0x6')]=function(_0x4f735d,_0x3847b1){return _0x4f735d[_0x887f('0x7')](_0x887f('0x8'),attributes,{'tableName':_0x887f('0x9'),'paranoid':![],'indexes':[{'name':_0x887f('0xa'),'fields':[_0x887f('0xb'),_0x887f('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 606308c..7a80a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d6e=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash'];(function(_0x10f6e8,_0x351db6){var _0x35bb3c=function(_0x30a39b){while(--_0x30a39b){_0x10f6e8['push'](_0x10f6e8['shift']());}};_0x35bb3c(++_0x351db6);}(_0x4d6e,0x77));var _0xe4d6=function(_0x2cefc5,_0x108d4e){_0x2cefc5=_0x2cefc5-0x0;var _0x5f39ce=_0x4d6e[_0x2cefc5];return _0x5f39ce;};'use strict';var _=require(_0xe4d6('0x0'));var util=require(_0xe4d6('0x1'));var moment=require(_0xe4d6('0x2'));var BPromise=require(_0xe4d6('0x3'));var rs=require(_0xe4d6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4d6('0x5'))['db'];var utils=require(_0xe4d6('0x6'));var logger=require(_0xe4d6('0x7'))(_0xe4d6('0x8'));var config=require(_0xe4d6('0x9'));var jayson=require(_0xe4d6('0xa'));var client=jayson[_0xe4d6('0xb')][_0xe4d6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x303058,_0x3e02bf,_0x352417){return new BPromise(function(_0xe683ad,_0x5a31f0){return client[_0xe4d6('0xd')](_0x303058,_0x352417)[_0xe4d6('0xe')](function(_0x56a295){logger[_0xe4d6('0xf')](_0xe4d6('0x10'),_0x3e02bf,_0xe4d6('0x11'));logger[_0xe4d6('0x12')](_0xe4d6('0x13'),_0x3e02bf,_0xe4d6('0x11'),JSON['stringify'](_0x56a295));if(_0x56a295['error']){if(_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x15')]===0x1f4){logger[_0xe4d6('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0x3e02bf,_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x16')]);return _0x5a31f0(_0x56a295['error'][_0xe4d6('0x16')]);}logger[_0xe4d6('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0x3e02bf,_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x16')]);return _0xe683ad(_0x56a295[_0xe4d6('0x14')][_0xe4d6('0x16')]);}else{logger['info'](_0xe4d6('0x10'),_0x3e02bf,_0xe4d6('0x11'));_0xe683ad(_0x56a295[_0xe4d6('0x17')][_0xe4d6('0x16')]);}})['catch'](function(_0x41d1a7){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x3e02bf,_0x41d1a7);_0x5a31f0(_0x41d1a7);});});}
\ No newline at end of file
+var _0xf78d=['../../config/environment','jayson/promise','client','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc'];(function(_0x1ded0f,_0x2c82a9){var _0x1ad47a=function(_0x5b745b){while(--_0x5b745b){_0x1ded0f['push'](_0x1ded0f['shift']());}};_0x1ad47a(++_0x2c82a9);}(_0xf78d,0x1c7));var _0xdf78=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf78d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xdf78('0x0'));var moment=require(_0xdf78('0x1'));var BPromise=require(_0xdf78('0x2'));var rs=require(_0xdf78('0x3'));var fs=require('fs');var Redis=require(_0xdf78('0x4'));var db=require(_0xdf78('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdf78('0x6'));var config=require(_0xdf78('0x7'));var jayson=require(_0xdf78('0x8'));var client=jayson[_0xdf78('0x9')][_0xdf78('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44efe7,_0xbf25be,_0x490165){return new BPromise(function(_0x4ee9e3,_0x2fe7a3){return client[_0xdf78('0xb')](_0x44efe7,_0x490165)['then'](function(_0x1aadfa){logger[_0xdf78('0xc')](_0xdf78('0xd'),_0xbf25be,_0xdf78('0xe'));logger[_0xdf78('0xf')](_0xdf78('0x10'),_0xbf25be,_0xdf78('0xe'),JSON[_0xdf78('0x11')](_0x1aadfa));if(_0x1aadfa[_0xdf78('0x12')]){if(_0x1aadfa[_0xdf78('0x12')]['code']===0x1f4){logger[_0xdf78('0x12')]('VoiceQueuesLog,\x20%s,\x20%s',_0xbf25be,_0x1aadfa[_0xdf78('0x12')][_0xdf78('0x13')]);return _0x2fe7a3(_0x1aadfa[_0xdf78('0x12')][_0xdf78('0x13')]);}logger[_0xdf78('0x12')](_0xdf78('0xd'),_0xbf25be,_0x1aadfa['error']['message']);return _0x4ee9e3(_0x1aadfa[_0xdf78('0x12')][_0xdf78('0x13')]);}else{logger[_0xdf78('0xc')](_0xdf78('0xd'),_0xbf25be,_0xdf78('0xe'));_0x4ee9e3(_0x1aadfa[_0xdf78('0x14')]['message']);}})[_0xdf78('0x15')](function(_0x867b7b){logger[_0xdf78('0x12')](_0xdf78('0xd'),_0xbf25be,_0x867b7b);_0x2fe7a3(_0x867b7b);});});}
\ No newline at end of file
index ea57632..bdeacc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60eb=['download','/:id/downloads','downloads','/:id/transcribe','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','describe','/:id','/:id/download'];(function(_0x483a9f,_0x32e142){var _0x259686=function(_0x125391){while(--_0x125391){_0x483a9f['push'](_0x483a9f['shift']());}};_0x259686(++_0x32e142);}(_0x60eb,0xec));var _0xb60e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x60eb[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xb60e('0x0'));var util=require('util');var path=require(_0xb60e('0x1'));var timeout=require(_0xb60e('0x2'));var express=require('express');var router=express[_0xb60e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb60e('0x4'));var interaction=require(_0xb60e('0x5'));var config=require(_0xb60e('0x6'));var controller=require(_0xb60e('0x7'));router[_0xb60e('0x8')]('/',auth[_0xb60e('0x9')](),controller[_0xb60e('0xa')]);router[_0xb60e('0x8')]('/describe',auth[_0xb60e('0x9')](),controller[_0xb60e('0xb')]);router[_0xb60e('0x8')](_0xb60e('0xc'),auth['isAuthenticated'](),controller['show']);router['get'](_0xb60e('0xd'),auth[_0xb60e('0x9')](),controller[_0xb60e('0xe')]);router[_0xb60e('0x8')](_0xb60e('0xf'),controller[_0xb60e('0x10')]);router[_0xb60e('0x8')](_0xb60e('0x11'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0xb60e('0x12')]('/',auth[_0xb60e('0x9')](),controller[_0xb60e('0x13')]);router[_0xb60e('0x12')](_0xb60e('0x11'),auth[_0xb60e('0x9')](),controller['runTranscribe']);router[_0xb60e('0x14')]('/:id',auth[_0xb60e('0x9')](),controller[_0xb60e('0x15')]);router[_0xb60e('0x16')](_0xb60e('0xc'),auth[_0xb60e('0x9')](),controller[_0xb60e('0x17')]);module[_0xb60e('0x18')]=router;
\ No newline at end of file
+var _0x7d7c=['runTranscribe','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe'];(function(_0x1e6e4e,_0x2b1b09){var _0x3d746b=function(_0x4483dd){while(--_0x4483dd){_0x1e6e4e['push'](_0x1e6e4e['shift']());}};_0x3d746b(++_0x2b1b09);}(_0x7d7c,0x165));var _0xc7d7=function(_0x46ce1f,_0x58f50b){_0x46ce1f=_0x46ce1f-0x0;var _0x5c854a=_0x7d7c[_0x46ce1f];return _0x5c854a;};'use strict';var multer=require(_0xc7d7('0x0'));var util=require('util');var path=require(_0xc7d7('0x1'));var timeout=require(_0xc7d7('0x2'));var express=require('express');var router=express[_0xc7d7('0x3')]();var fs_extra=require(_0xc7d7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc7d7('0x5'));var config=require(_0xc7d7('0x6'));var controller=require(_0xc7d7('0x7'));router[_0xc7d7('0x8')]('/',auth[_0xc7d7('0x9')](),controller[_0xc7d7('0xa')]);router['get'](_0xc7d7('0xb'),auth['isAuthenticated'](),controller[_0xc7d7('0xc')]);router[_0xc7d7('0x8')](_0xc7d7('0xd'),auth[_0xc7d7('0x9')](),controller[_0xc7d7('0xe')]);router['get'](_0xc7d7('0xf'),auth[_0xc7d7('0x9')](),controller[_0xc7d7('0x10')]);router['get'](_0xc7d7('0x11'),controller[_0xc7d7('0x12')]);router[_0xc7d7('0x8')](_0xc7d7('0x13'),auth[_0xc7d7('0x9')](),controller[_0xc7d7('0x14')]);router['post']('/',auth[_0xc7d7('0x9')](),controller['create']);router['post'](_0xc7d7('0x13'),auth[_0xc7d7('0x9')](),controller[_0xc7d7('0x15')]);router[_0xc7d7('0x16')](_0xc7d7('0xd'),auth[_0xc7d7('0x9')](),controller[_0xc7d7('0x17')]);router[_0xc7d7('0x18')](_0xc7d7('0xd'),auth[_0xc7d7('0x9')](),controller[_0xc7d7('0x19')]);module[_0xc7d7('0x1a')]=router;
\ No newline at end of file
index 2be3b32..fb399b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'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 0a69140..4251717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb9=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','name','send','rawAttributes','fieldName','type','key','model','format','query','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','map','VIRTUAL','filter','VoiceRecording','includeAll','include','findAll','catch','show','params','options','find','create','body','update','describe','download','value','%s.cypher','existsSync','decryptFile','secrets','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','../../components/encryptor','sequelize','MD5','col','uniqueid','token','$and','push','recording','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','isNil','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','writeFile','downloadTranscribe','fileText','root','.txt','eml-format','fast-json-patch','request-promise','bluebird'];(function(_0x261e29,_0x10fffd){var _0x25ef43=function(_0x21b8e7){while(--_0x21b8e7){_0x261e29['push'](_0x261e29['shift']());}};_0x25ef43(++_0x10fffd);}(_0x4fb9,0x96));var _0x94fb=function(_0x338fba,_0x114833){_0x338fba=_0x338fba-0x0;var _0x3e2d9d=_0x4fb9[_0x338fba];return _0x3e2d9d;};'use strict';var emlformat=require(_0x94fb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x94fb('0x1'));var rp=require(_0x94fb('0x2'));var moment=require('moment');var BPromise=require(_0x94fb('0x3'));var Mustache=require(_0x94fb('0x4'));var util=require(_0x94fb('0x5'));var path=require(_0x94fb('0x6'));var sox=require(_0x94fb('0x7'));var csv=require(_0x94fb('0x8'));var ejs=require(_0x94fb('0x9'));var fs=require('fs');var fs_extra=require(_0x94fb('0xa'));var _=require(_0x94fb('0xb'));var squel=require(_0x94fb('0xc'));var crypto=require(_0x94fb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x94fb('0xe'));var toCsv=require('to-csv');var querystring=require(_0x94fb('0xf'));var Papa=require('papaparse');var AWS=require(_0x94fb('0x10'));var uuidv4=require('uuid/v4');var Redis=require(_0x94fb('0x11'));var authService=require(_0x94fb('0x12'));var qs=require(_0x94fb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94fb('0x14'));var logger=require(_0x94fb('0x15'))(_0x94fb('0x16'));var utils=require(_0x94fb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x94fb('0x18'));var db=require(_0x94fb('0x19'))['db'];function respondWithStatusCode(_0x304590,_0x3a7d41){_0x3a7d41=_0x3a7d41||0xcc;return function(_0x14d5ff){if(_0x14d5ff){return _0x304590[_0x94fb('0x1a')](_0x3a7d41);}return _0x304590[_0x94fb('0x1b')](_0x3a7d41)[_0x94fb('0x1c')]();};}function respondWithResult(_0x532b7b,_0x416e45){_0x416e45=_0x416e45||0xc8;return function(_0x5007d5){if(_0x5007d5){return _0x532b7b[_0x94fb('0x1b')](_0x416e45)[_0x94fb('0x1d')](_0x5007d5);}};}function respondWithFilteredResult(_0x3098da,_0x5e2e9d){return function(_0xf3d67d){if(_0xf3d67d){var _0x3abb67=typeof _0x5e2e9d[_0x94fb('0x1e')]===_0x94fb('0x1f')&&typeof _0x5e2e9d[_0x94fb('0x20')]===_0x94fb('0x1f');var _0x46cb9d=_0xf3d67d[_0x94fb('0x21')];var _0x416f18=_0x3abb67?0x0:_0x5e2e9d[_0x94fb('0x1e')];var _0x13076d=_0x3abb67?_0xf3d67d[_0x94fb('0x21')]:_0x5e2e9d[_0x94fb('0x1e')]+_0x5e2e9d['limit'];var _0x57905b;if(_0x13076d>=_0x46cb9d){_0x13076d=_0x46cb9d;_0x57905b=0xc8;}else{_0x57905b=0xce;}_0x3098da[_0x94fb('0x1b')](_0x57905b);return _0x3098da['set'](_0x94fb('0x22'),_0x416f18+'-'+_0x13076d+'/'+_0x46cb9d)[_0x94fb('0x1d')](_0xf3d67d);}return null;};}function patchUpdates(_0x6e88fb){return function(_0x50f1e1){try{jsonpatch[_0x94fb('0x23')](_0x50f1e1,_0x6e88fb,!![]);}catch(_0xb3ff21){return BPromise[_0x94fb('0x24')](_0xb3ff21);}return _0x50f1e1[_0x94fb('0x25')]();};}function saveUpdates(_0x43486d,_0x42545a){return function(_0x4cd64){if(_0x4cd64){return _0x4cd64['update'](_0x43486d)[_0x94fb('0x26')](function(_0xbd8ea2){return _0xbd8ea2;});}return null;};}function removeEntity(_0x135557,_0x28ace2){return function(_0x47baf8){if(_0x47baf8){return _0x47baf8[_0x94fb('0x27')]()[_0x94fb('0x26')](function(){_0x135557[_0x94fb('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30dd59,_0xa54d41){return function(_0x478727){if(!_0x478727){_0x30dd59['sendStatus'](0x194);}return _0x478727;};}function handleError(_0xecae64,_0x48e226){_0x48e226=_0x48e226||0x1f4;return function(_0x302e7f){logger['error'](_0x302e7f['stack']);if(_0x302e7f[_0x94fb('0x28')]){delete _0x302e7f['name'];}_0xecae64[_0x94fb('0x1b')](_0x48e226)[_0x94fb('0x29')](_0x302e7f);};}exports['index']=function(_0x4ea8d4,_0x264780){var _0x2fc189={},_0x3979be={},_0x2e08a7={'count':0x0,'rows':[]};var _0x28ea85=_['map'](db['VoiceRecording'][_0x94fb('0x2a')],function(_0x91c3b9){return{'name':_0x91c3b9[_0x94fb('0x2b')],'type':_0x91c3b9[_0x94fb('0x2c')][_0x94fb('0x2d')]};});_0x3979be[_0x94fb('0x2e')]=_['differenceBy'](_['map'](_0x28ea85,'name'),[_0x94fb('0x2f')]);_0x3979be[_0x94fb('0x30')]=_['keys'](_0x4ea8d4[_0x94fb('0x30')]);_0x3979be[_0x94fb('0x31')]=_[_0x94fb('0x32')](_0x3979be['model'],_0x3979be[_0x94fb('0x30')]);_0x2fc189[_0x94fb('0x33')]=_[_0x94fb('0x32')](_0x3979be[_0x94fb('0x2e')],qs['fields'](_0x4ea8d4[_0x94fb('0x30')][_0x94fb('0x34')]));_0x2fc189[_0x94fb('0x33')]=_0x2fc189[_0x94fb('0x33')][_0x94fb('0x35')]?_0x2fc189['attributes']:_0x3979be[_0x94fb('0x2e')];if(!_0x4ea8d4[_0x94fb('0x30')]['hasOwnProperty']('nolimit')){_0x2fc189[_0x94fb('0x20')]=qs[_0x94fb('0x20')](_0x4ea8d4[_0x94fb('0x30')]['limit']);_0x2fc189[_0x94fb('0x1e')]=qs[_0x94fb('0x1e')](_0x4ea8d4['query'][_0x94fb('0x1e')]);}_0x2fc189[_0x94fb('0x36')]=qs[_0x94fb('0x37')](_0x4ea8d4[_0x94fb('0x30')][_0x94fb('0x37')]);_0x2fc189[_0x94fb('0x38')]=qs['filters'](_[_0x94fb('0x39')](_0x4ea8d4['query'],_0x3979be[_0x94fb('0x31')]),_0x28ea85);if(_0x4ea8d4[_0x94fb('0x30')]['filter']){_0x2fc189[_0x94fb('0x38')]=_[_0x94fb('0x3a')](_0x2fc189[_0x94fb('0x38')],{'$or':_[_0x94fb('0x3b')](_0x28ea85,function(_0x13d6ca){if(_0x13d6ca[_0x94fb('0x2c')]!==_0x94fb('0x3c')){var _0x1ed5dd={};_0x1ed5dd[_0x13d6ca[_0x94fb('0x28')]]={'$like':'%'+_0x4ea8d4[_0x94fb('0x30')][_0x94fb('0x3d')]+'%'};return _0x1ed5dd;}})});}_0x2fc189=_['merge']({},_0x2fc189,_0x4ea8d4['options']);var _0x32a8dc={'where':_0x2fc189['where']};return db[_0x94fb('0x3e')][_0x94fb('0x21')](_0x32a8dc)[_0x94fb('0x26')](function(_0x10d7dd){_0x2e08a7[_0x94fb('0x21')]=_0x10d7dd;if(_0x4ea8d4['query'][_0x94fb('0x3f')]){_0x2fc189[_0x94fb('0x40')]=[{'all':!![]}];}return db[_0x94fb('0x3e')][_0x94fb('0x41')](_0x2fc189);})[_0x94fb('0x26')](function(_0x1a9b68){_0x2e08a7['rows']=_0x1a9b68;return _0x2e08a7;})['then'](respondWithFilteredResult(_0x264780,_0x2fc189))[_0x94fb('0x42')](handleError(_0x264780,null));};exports[_0x94fb('0x43')]=function(_0x32213f,_0xe68c3c){var _0x1a3112={'raw':![],'where':{'id':_0x32213f[_0x94fb('0x44')]['id']}},_0x35c562={};_0x35c562[_0x94fb('0x2e')]=_['keys'](db['VoiceRecording'][_0x94fb('0x2a')]);_0x35c562[_0x94fb('0x30')]=_['keys'](_0x32213f['query']);_0x35c562[_0x94fb('0x31')]=_[_0x94fb('0x32')](_0x35c562['model'],_0x35c562[_0x94fb('0x30')]);_0x1a3112[_0x94fb('0x33')]=_['intersection'](_0x35c562[_0x94fb('0x2e')],qs[_0x94fb('0x34')](_0x32213f[_0x94fb('0x30')][_0x94fb('0x34')]));_0x1a3112['attributes']=_0x1a3112[_0x94fb('0x33')][_0x94fb('0x35')]?_0x1a3112[_0x94fb('0x33')]:_0x35c562[_0x94fb('0x2e')];if(_0x32213f['query'][_0x94fb('0x3f')]){_0x1a3112[_0x94fb('0x40')]=[{'all':!![]}];}_0x1a3112=_[_0x94fb('0x3a')]({},_0x1a3112,_0x32213f[_0x94fb('0x45')]);return db['VoiceRecording'][_0x94fb('0x46')](_0x1a3112)['then'](handleEntityNotFound(_0xe68c3c,null))[_0x94fb('0x26')](respondWithResult(_0xe68c3c,null))[_0x94fb('0x42')](handleError(_0xe68c3c,null));};exports[_0x94fb('0x47')]=function(_0x25b58a,_0x34c864){return db[_0x94fb('0x3e')]['create'](_0x25b58a[_0x94fb('0x48')],{})[_0x94fb('0x26')](respondWithResult(_0x34c864,0xc9))[_0x94fb('0x42')](handleError(_0x34c864,null));};exports[_0x94fb('0x49')]=function(_0x453e7f,_0xf616f){if(_0x453e7f[_0x94fb('0x48')]['id']){delete _0x453e7f[_0x94fb('0x48')]['id'];}return db[_0x94fb('0x3e')][_0x94fb('0x46')]({'where':{'id':_0x453e7f[_0x94fb('0x44')]['id']}})[_0x94fb('0x26')](handleEntityNotFound(_0xf616f,null))[_0x94fb('0x26')](saveUpdates(_0x453e7f[_0x94fb('0x48')],null))[_0x94fb('0x26')](respondWithResult(_0xf616f,null))[_0x94fb('0x42')](handleError(_0xf616f,null));};exports[_0x94fb('0x4a')]=function(_0x4e2189,_0x27f6db){return db[_0x94fb('0x3e')][_0x94fb('0x4a')]()['then'](respondWithResult(_0x27f6db,null))[_0x94fb('0x42')](handleError(_0x27f6db,null));};exports[_0x94fb('0x4b')]=function(_0x2d9a52,_0x5cd516,_0x1a8a5c){var _0x42ebbf=require('../../components/encryptor');var _0x3945ba=![];var _0x28a31a={};if(_0x2d9a52[_0x94fb('0x30')]['type']&&_0x2d9a52[_0x94fb('0x30')]['type']==='uniqueid'){_0x28a31a['uniqueid']=_0x2d9a52[_0x94fb('0x44')]['id'];}else{_0x28a31a['id']=_0x2d9a52[_0x94fb('0x44')]['id'];}return db['VoiceRecording'][_0x94fb('0x46')]({'where':_0x28a31a,'attributes':['id','value'],'raw':!![]})[_0x94fb('0x26')](handleEntityNotFound(_0x5cd516,null))['then'](function(_0x37cb03){if(_0x37cb03){var _0x32afb6=_0x37cb03[_0x94fb('0x4c')];var _0x29cbc6=util[_0x94fb('0x2f')](_0x94fb('0x4d'),_0x32afb6);if(fs[_0x94fb('0x4e')](_0x29cbc6)){_0x3945ba=!![];return _0x42ebbf[_0x94fb('0x4f')](_0x29cbc6,_0x32afb6,config[_0x94fb('0x50')]['recording'])[_0x94fb('0x26')](function(){return _0x37cb03;});}return _0x37cb03;}})[_0x94fb('0x26')](function(_0x41f178){if(_0x41f178){var _0x5f55d9=_0x41f178['value'];if(!fs['existsSync'](_0x5f55d9)){throw new db[(_0x94fb('0x51'))][(_0x94fb('0x52'))](_0x94fb('0x53'));}if(_0x41f178[_0x94fb('0x54')]){return _0x5cd516[_0x94fb('0x4b')](_0x5f55d9,_0x41f178['filename']+path[_0x94fb('0x55')](_0x5f55d9),function(){if(_0x3945ba){fs['unlink'](_0x5f55d9);}});}else{return _0x5cd516[_0x94fb('0x4b')](_0x5f55d9,function(_0x3f941a){if(_0x3945ba){fs[_0x94fb('0x56')](_0x5f55d9);}});}}})[_0x94fb('0x42')](function(_0x1d4716){if(_0x1d4716[_0x94fb('0x57')]===_0x94fb('0x53')){_0x5cd516[_0x94fb('0x1b')](0x194)['send'](_0x94fb('0x58'));}else{return handleError(_0x5cd516,null);}});};exports[_0x94fb('0x59')]=function(_0x217475,_0x11c1bc,_0x2ba45e){var _0x1c3ed7=require(_0x94fb('0x5a'));var _0x5ccfab=![];var _0x92edc3={'$and':[db[_0x94fb('0x5b')][_0x94fb('0x38')](db[_0x94fb('0x5b')]['fn'](_0x94fb('0x5c'),db[_0x94fb('0x5b')][_0x94fb('0x5d')](_0x94fb('0x5e'))),_0x217475['query'][_0x94fb('0x5f')])]};if(_0x217475[_0x94fb('0x30')][_0x94fb('0x2c')]&&_0x217475[_0x94fb('0x30')][_0x94fb('0x2c')]==='uniqueid'){_0x92edc3[_0x94fb('0x60')][_0x94fb('0x61')]({'uniqueid':_0x217475[_0x94fb('0x44')]['id']});}else{_0x92edc3['$and'][_0x94fb('0x61')]({'id':_0x217475[_0x94fb('0x44')]['id']});}return db[_0x94fb('0x3e')]['find']({'where':_0x92edc3,'attributes':['id',_0x94fb('0x4c')],'raw':!![]})['then'](handleEntityNotFound(_0x11c1bc,null))[_0x94fb('0x26')](function(_0x1ea70d){if(_0x1ea70d){var _0x1b5efe=util[_0x94fb('0x2f')](_0x94fb('0x4d'),_0x1ea70d['value']);if(fs[_0x94fb('0x4e')](_0x1b5efe)){_0x5ccfab=!![];return _0x1c3ed7[_0x94fb('0x4f')](_0x1b5efe,_0x1ea70d[_0x94fb('0x4c')],config['secrets'][_0x94fb('0x62')])[_0x94fb('0x26')](function(){return _0x1ea70d;});}return _0x1ea70d;}})['then'](function(_0xb3a5e2){if(_0xb3a5e2){if(!fs[_0x94fb('0x4e')](_0xb3a5e2[_0x94fb('0x4c')])){throw new db[(_0x94fb('0x51'))]['ValidationError'](_0x94fb('0x53'));}if(_0xb3a5e2['filename']){return _0x11c1bc[_0x94fb('0x4b')](_0xb3a5e2[_0x94fb('0x4c')],_0xb3a5e2['filename']+path[_0x94fb('0x55')](_0xb3a5e2[_0x94fb('0x4c')]),function(){if(_0x5ccfab){fs[_0x94fb('0x56')](_0xb3a5e2['value']);}});}else{return _0x11c1bc[_0x94fb('0x4b')](_0xb3a5e2[_0x94fb('0x4c')],function(_0x4ee85d){if(_0x5ccfab){fs[_0x94fb('0x56')](_0xb3a5e2[_0x94fb('0x4c')]);}});}}})[_0x94fb('0x42')](handleError(_0x11c1bc,null));};exports[_0x94fb('0x27')]=function(_0x2895ad,_0x25e0a9){return db[_0x94fb('0x3e')][_0x94fb('0x46')]({'where':{'id':_0x2895ad[_0x94fb('0x44')]['id']}})[_0x94fb('0x26')](function(_0x7dd558){if(_['isNil'](_0x7dd558)){throw new ReferenceError(_0x94fb('0x63'));}return _0x7dd558;})['then'](function(_0x51b12b){var _0x4f78b5=_0x51b12b[_0x94fb('0x4c')];logger[_0x94fb('0x64')](_0x94fb('0x65'),_0x4f78b5);if(!_['isNil'](_0x51b12b['value'])&&fs[_0x94fb('0x4e')](_0x4f78b5)){logger[_0x94fb('0x64')](_0x94fb('0x66')+_0x4f78b5+_0x94fb('0x67'));fs[_0x94fb('0x68')](_0x4f78b5);}_0x4f78b5=_0x4f78b5+_0x94fb('0x69');if(!_[_0x94fb('0x6a')](_0x51b12b['value'])&&fs['existsSync'](_0x4f78b5)){logger['info'](_0x94fb('0x66')+_0x4f78b5+_0x94fb('0x67'));fs[_0x94fb('0x68')](_0x4f78b5);}return _0x51b12b;})[_0x94fb('0x26')](function(_0x629e0f){if(!_0x629e0f)throw new InternalError();return _0x629e0f[_0x94fb('0x27')]();})[_0x94fb('0x26')](function(){_0x25e0a9[_0x94fb('0x1b')](0xcc)['end']();})['catch'](handleError(_0x25e0a9,null));};function getBucketslist(_0x1d2f6c,_0x1bcc55,_0x2fc5dd){return new Promise(function(_0x393467,_0x34171e){var _0x1c056d=new AWS['S3']({'accessKeyId':_0x1bcc55,'secretAccessKey':_0x1d2f6c,'region':_0x2fc5dd});_0x1c056d['listBuckets']({},function(_0x57cdb0,_0x3309f0){if(_0x57cdb0){return _0x34171e(_0x57cdb0);}else{return _0x393467(_0x3309f0);}});});}function createBucket(_0x22a9a8,_0x59f840,_0x112ace,_0x52d570){return new Promise(function(_0x28a956,_0x3a1d9a){var _0x3b87b1=new AWS['S3']({'accessKeyId':_0x59f840,'secretAccessKey':_0x22a9a8,'region':_0x112ace});_0x3b87b1[_0x94fb('0x6b')]({'Bucket':_0x52d570},function(_0x1a94c4,_0x1fb064){if(_0x1a94c4){return _0x3a1d9a(_0x1a94c4);}else{return _0x28a956(_0x1fb064);}});});}function uploadFile(_0x18e746,_0x593e67,_0x455c34,_0x103550,_0x271ac9,_0x2930e8){return new Promise(function(_0x518519,_0x161433){var _0x4289ee=new AWS['S3']({'accessKeyId':_0x593e67,'secretAccessKey':_0x18e746,'region':_0x455c34});_0x4289ee[_0x94fb('0x6c')]({'Bucket':_0x103550,'Key':_0x271ac9,'Body':_0x2930e8},function(_0x346d88,_0x854851){if(_0x346d88){return _0x161433(_0x346d88);}else{return _0x518519(_0x854851);}});});}function startTranscribe(_0x429ffb,_0x3f6679,_0x56a020,_0x39e18f,_0x514b84,_0x31fda5){return new Promise(function(_0x84d876,_0x205846){var _0x4053a7=new AWS[(_0x94fb('0x6d'))]({'accessKeyId':_0x3f6679,'secretAccessKey':_0x429ffb,'region':_0x56a020});_0x4053a7[_0x94fb('0x6e')]({'TranscriptionJobName':_0x39e18f,'LanguageCode':_0x514b84,'Media':{'MediaFileUri':_0x31fda5}},function(_0x2a3f3d,_0x344945){if(_0x2a3f3d){return _0x205846(_0x2a3f3d);}else{return _0x84d876(_0x344945);}});});}function transcribe(_0x296053,_0x4f52e4,_0x4bce58,_0x45b4b0,_0x3583ee,_0x19c9d9,_0x16428c){return new Promise(function(_0x1726e8,_0x3c0925){var _0x4c22e6={};logger['info'](util[_0x94fb('0x2f')](_0x94fb('0x6f'),_0x296053,_0x3583ee));return uploadFile(_0x4f52e4,_0x4bce58,_0x45b4b0,_0x3583ee,path[_0x94fb('0x70')](_0x19c9d9),fs[_0x94fb('0x71')](_0x19c9d9))[_0x94fb('0x26')](function(_0xd48961){logger[_0x94fb('0x64')](util['format'](_0x94fb('0x72'),_0x296053,_0x3583ee,_0xd48961[_0x94fb('0x73')]));_0x4c22e6[_0x94fb('0x74')]=_0xd48961[_0x94fb('0x75')];_0x4c22e6[_0x94fb('0x76')]=_0xd48961['Location'];logger['info'](util[_0x94fb('0x2f')](_0x94fb('0x77'),_0x296053));return startTranscribe(_0x4f52e4,_0x4bce58,_0x45b4b0,uuidv4(),_0x16428c,_0xd48961[_0x94fb('0x73')]);})[_0x94fb('0x26')](function(_0x29a647){logger[_0x94fb('0x64')](util['format'](_0x94fb('0x78'),_0x296053,_0x29a647[_0x94fb('0x79')]['TranscriptionJobName']));_0x4c22e6[_0x94fb('0x7a')]=_0x29a647[_0x94fb('0x79')]['TranscriptionJobName'];_0x4c22e6[_0x94fb('0x7b')]=_0x29a647['TranscriptionJob'][_0x94fb('0x7c')];return _0x1726e8(_0x4c22e6);})['catch'](function(_0x5b551a){return _0x3c0925(_0x5b551a);});});}exports[_0x94fb('0x7d')]=function(_0x44c2c1,_0x40e97c,_0x44ec83){var _0x4007a7;var _0x35aca6;var _0x3e776a;var _0x1f66a6=require('../../components/encryptor');return db[_0x94fb('0x3e')][_0x94fb('0x7e')]({'where':{'id':_0x44c2c1[_0x94fb('0x44')]['id']}})[_0x94fb('0x26')](function(_0x16523c){if(_0x16523c){var _0x5a7b76=util['format'](_0x94fb('0x4d'),_0x16523c['value']);if(fs[_0x94fb('0x4e')](_0x5a7b76)){cypher=!![];return _0x1f66a6['decryptFile'](_0x5a7b76,_0x16523c[_0x94fb('0x4c')],config[_0x94fb('0x50')][_0x94fb('0x62')])[_0x94fb('0x26')](function(){return _0x16523c;});}return _0x16523c;}})[_0x94fb('0x26')](function(_0x2d86d6){if(!_0x2d86d6){throw new db['Sequelize'][(_0x94fb('0x52'))](_0x94fb('0x7f'));}_0x35aca6=_0x2d86d6;return db[_0x94fb('0x80')][_0x94fb('0x7e')]({'where':{'id':0x1}});})[_0x94fb('0x26')](handleEntityNotFound(_0x40e97c,null))[_0x94fb('0x26')](function(_0x3d45b6){if(_0x3d45b6){_0x4007a7=_0x3d45b6;if(!_0x4007a7[_0x94fb('0x81')]||!_0x4007a7[_0x94fb('0x82')]||!_0x4007a7[_0x94fb('0x83')]||!_0x4007a7['language']||!_0x4007a7['bucket']){throw new db[(_0x94fb('0x51'))][(_0x94fb('0x52'))](_0x94fb('0x84'));}if(_0x44c2c1['body']['runSentiment']&&(!_0x4007a7['sentiment']||!_0x4007a7[_0x94fb('0x85')]||!_0x4007a7[_0x94fb('0x86')]||!_0x4007a7[_0x94fb('0x87')]||!_0x4007a7['bucket'])){throw new db[(_0x94fb('0x51'))]['ValidationError'](_0x94fb('0x88'));}return db[_0x94fb('0x89')][_0x94fb('0x7e')]({'where':{'id':_0x4007a7[_0x94fb('0x82')]}});}})['then'](function(_0x2a4d5f){if(!_0x2a4d5f){throw new db[(_0x94fb('0x51'))][(_0x94fb('0x52'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2a4d5f[_0x94fb('0x8a')]||!_0x2a4d5f[_0x94fb('0x8b')]){throw new db['Sequelize'][(_0x94fb('0x52'))](_0x94fb('0x8c'));}_0x3e776a=_0x2a4d5f;return getBucketslist(_0x3e776a[_0x94fb('0x8a')],_0x3e776a[_0x94fb('0x8b')],_0x4007a7[_0x94fb('0x83')]);})[_0x94fb('0x26')](function(_0x5990d7){if(_0x5990d7&&_0x5990d7['Buckets']){var _0x68d1d6=_[_0x94fb('0x46')](_0x5990d7[_0x94fb('0x8d')],function(_0x32eb19){return _0x32eb19['Name']===_0x4007a7[_0x94fb('0x74')];});if(!_0x68d1d6){logger[_0x94fb('0x64')](util[_0x94fb('0x2f')](_0x94fb('0x8e'),_0x44c2c1[_0x94fb('0x44')]['id'],_0x4007a7[_0x94fb('0x74')]));return createBucket(_0x3e776a['data1'],_0x3e776a[_0x94fb('0x8b')],_0x4007a7['transcribeRegion'],_0x4007a7[_0x94fb('0x74')]);}logger[_0x94fb('0x64')](util[_0x94fb('0x2f')](_0x94fb('0x8f'),_0x44c2c1[_0x94fb('0x44')]['id'],_0x4007a7[_0x94fb('0x74')]));return;}})['then'](function(_0x1b412b){if(_0x35aca6[_0x94fb('0x7b')]===_0x94fb('0x90')){return transcribe(_0x44c2c1[_0x94fb('0x44')]['id'],_0x3e776a[_0x94fb('0x8a')],_0x3e776a[_0x94fb('0x8b')],_0x4007a7[_0x94fb('0x83')],_0x4007a7['bucket'],_0x35aca6[_0x94fb('0x4c')],_0x4007a7[_0x94fb('0x87')]);}else{logger[_0x94fb('0x64')](util[_0x94fb('0x2f')](_0x94fb('0x91'),_0x44c2c1[_0x94fb('0x44')]['id']));return{'transcribeStatus':_0x94fb('0x92')};}})['then'](function(_0x5a6b84){if(_0x5a6b84){_0x5a6b84[_0x94fb('0x93')]=_0x44c2c1[_0x94fb('0x48')][_0x94fb('0x94')];return _0x35aca6['updateAttributes'](_0x5a6b84);}})[_0x94fb('0x26')](respondWithResult(_0x40e97c,null))['catch'](handleError(_0x40e97c,null));};function writeFile(_0x1bddac,_0x12ea4e){return new Promise(function(_0x54e6af,_0x4fff70){fs[_0x94fb('0x95')](_0x12ea4e,_0x1bddac,function(_0x4b39e0,_0x570b66){if(_0x4b39e0){return _0x4fff70(_0x4b39e0);}else{return _0x54e6af(_0x570b66);}});});}exports[_0x94fb('0x96')]=function(_0x306f53,_0x5609f5,_0x4c8657){return db['VoiceRecording'][_0x94fb('0x7e')]({'where':{'id':_0x306f53['params']['id']}})[_0x94fb('0x26')](handleEntityNotFound(_0x5609f5))[_0x94fb('0x26')](function(_0x4a3f71){if(_0x4a3f71&&_0x4a3f71[_0x94fb('0x97')]){var _0x2fbd4d=_0x4a3f71[_0x94fb('0x97')];var _0x237885=config[_0x94fb('0x98')]+'/server/files/transcribes/transcribe_'+_0x4a3f71['id']+_0x94fb('0x99');if(fs['existsSync'](_0x237885)){return _0x237885;}return writeFile(_0x2fbd4d,_0x237885)[_0x94fb('0x26')](function(){return _0x237885;});}else{throw new db[(_0x94fb('0x51'))][(_0x94fb('0x52'))]('Transcript\x20not\x20available');}})[_0x94fb('0x26')](function(_0xc3dc65){return _0x5609f5['download'](_0xc3dc65);})[_0x94fb('0x42')](handleError(_0x5609f5));};
\ No newline at end of file
+var _0xd4ec=['.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','aws-sdk','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','json','offset','undefined','limit','count','status','set','Content-Range','reject','update','destroy','then','end','error','name','send','VoiceRecording','rawAttributes','fieldName','key','differenceBy','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','merge','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','describe','download','../../components/encryptor','uniqueid','value','format','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','sequelize','col','token','push','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','listBuckets','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','TranscriptionJobStatus','runTranscribe','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','Sentiment\x20Analysis\x20not\x20configured','data1','data2','Cloud\x20Provider\x20not\x20configured','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_'];(function(_0x519bf5,_0x8898fe){var _0x2ad590=function(_0xd58698){while(--_0xd58698){_0x519bf5['push'](_0x519bf5['shift']());}};_0x2ad590(++_0x8898fe);}(_0xd4ec,0x12a));var _0xcd4e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd4ec[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcd4e('0x0'));var zipdir=require(_0xcd4e('0x1'));var jsonpatch=require(_0xcd4e('0x2'));var rp=require(_0xcd4e('0x3'));var moment=require('moment');var BPromise=require(_0xcd4e('0x4'));var Mustache=require(_0xcd4e('0x5'));var util=require(_0xcd4e('0x6'));var path=require(_0xcd4e('0x7'));var sox=require(_0xcd4e('0x8'));var csv=require(_0xcd4e('0x9'));var ejs=require(_0xcd4e('0xa'));var fs=require('fs');var fs_extra=require(_0xcd4e('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xcd4e('0xc'));var deskjs=require(_0xcd4e('0xd'));var toCsv=require(_0xcd4e('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var AWS=require(_0xcd4e('0xe'));var uuidv4=require('uuid/v4');var Redis=require(_0xcd4e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xcd4e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xcd4e('0x11'))(_0xcd4e('0x12'));var utils=require(_0xcd4e('0x13'));var config=require(_0xcd4e('0x14'));var licenseUtil=require(_0xcd4e('0x15'));var db=require(_0xcd4e('0x16'))['db'];function respondWithStatusCode(_0x111d8e,_0x140020){_0x140020=_0x140020||0xcc;return function(_0x1eab97){if(_0x1eab97){return _0x111d8e['sendStatus'](_0x140020);}return _0x111d8e['status'](_0x140020)['end']();};}function respondWithResult(_0xebf83f,_0x1d4866){_0x1d4866=_0x1d4866||0xc8;return function(_0x56cca7){if(_0x56cca7){return _0xebf83f['status'](_0x1d4866)[_0xcd4e('0x17')](_0x56cca7);}};}function respondWithFilteredResult(_0x270f40,_0x1ad4de){return function(_0x32818d){if(_0x32818d){var _0x4a78b1=typeof _0x1ad4de[_0xcd4e('0x18')]===_0xcd4e('0x19')&&typeof _0x1ad4de[_0xcd4e('0x1a')]===_0xcd4e('0x19');var _0x392424=_0x32818d[_0xcd4e('0x1b')];var _0x2de004=_0x4a78b1?0x0:_0x1ad4de['offset'];var _0x62bd19=_0x4a78b1?_0x32818d[_0xcd4e('0x1b')]:_0x1ad4de['offset']+_0x1ad4de[_0xcd4e('0x1a')];var _0x58a3d7;if(_0x62bd19>=_0x392424){_0x62bd19=_0x392424;_0x58a3d7=0xc8;}else{_0x58a3d7=0xce;}_0x270f40[_0xcd4e('0x1c')](_0x58a3d7);return _0x270f40[_0xcd4e('0x1d')](_0xcd4e('0x1e'),_0x2de004+'-'+_0x62bd19+'/'+_0x392424)[_0xcd4e('0x17')](_0x32818d);}return null;};}function patchUpdates(_0x499d53){return function(_0x331ba5){try{jsonpatch['apply'](_0x331ba5,_0x499d53,!![]);}catch(_0x3f6f54){return BPromise[_0xcd4e('0x1f')](_0x3f6f54);}return _0x331ba5['save']();};}function saveUpdates(_0x48008a,_0x4e0e61){return function(_0x6a3740){if(_0x6a3740){return _0x6a3740[_0xcd4e('0x20')](_0x48008a)['then'](function(_0x31efc5){return _0x31efc5;});}return null;};}function removeEntity(_0x2acb86,_0x4591be){return function(_0x35166a){if(_0x35166a){return _0x35166a[_0xcd4e('0x21')]()[_0xcd4e('0x22')](function(){_0x2acb86[_0xcd4e('0x1c')](0xcc)[_0xcd4e('0x23')]();});}};}function handleEntityNotFound(_0x4a0b1,_0x339f91){return function(_0x1c0ad9){if(!_0x1c0ad9){_0x4a0b1['sendStatus'](0x194);}return _0x1c0ad9;};}function handleError(_0x3941d3,_0x525a2a){_0x525a2a=_0x525a2a||0x1f4;return function(_0x2d8b38){logger[_0xcd4e('0x24')](_0x2d8b38['stack']);if(_0x2d8b38[_0xcd4e('0x25')]){delete _0x2d8b38[_0xcd4e('0x25')];}_0x3941d3[_0xcd4e('0x1c')](_0x525a2a)[_0xcd4e('0x26')](_0x2d8b38);};}exports['index']=function(_0x395377,_0x135651){var _0x15d6e3={},_0x1998df={},_0x13f450={'count':0x0,'rows':[]};var _0x557d7a=_['map'](db[_0xcd4e('0x27')][_0xcd4e('0x28')],function(_0x35ad81){return{'name':_0x35ad81[_0xcd4e('0x29')],'type':_0x35ad81['type'][_0xcd4e('0x2a')]};});_0x1998df['model']=_[_0xcd4e('0x2b')](_['map'](_0x557d7a,_0xcd4e('0x25')),['format']);_0x1998df[_0xcd4e('0x2c')]=_[_0xcd4e('0x2d')](_0x395377['query']);_0x1998df[_0xcd4e('0x2e')]=_[_0xcd4e('0x2f')](_0x1998df[_0xcd4e('0x30')],_0x1998df[_0xcd4e('0x2c')]);_0x15d6e3['attributes']=_[_0xcd4e('0x2f')](_0x1998df[_0xcd4e('0x30')],qs[_0xcd4e('0x31')](_0x395377[_0xcd4e('0x2c')][_0xcd4e('0x31')]));_0x15d6e3[_0xcd4e('0x32')]=_0x15d6e3[_0xcd4e('0x32')]['length']?_0x15d6e3[_0xcd4e('0x32')]:_0x1998df[_0xcd4e('0x30')];if(!_0x395377[_0xcd4e('0x2c')][_0xcd4e('0x33')](_0xcd4e('0x34'))){_0x15d6e3[_0xcd4e('0x1a')]=qs[_0xcd4e('0x1a')](_0x395377[_0xcd4e('0x2c')][_0xcd4e('0x1a')]);_0x15d6e3[_0xcd4e('0x18')]=qs['offset'](_0x395377[_0xcd4e('0x2c')]['offset']);}_0x15d6e3[_0xcd4e('0x35')]=qs[_0xcd4e('0x36')](_0x395377[_0xcd4e('0x2c')][_0xcd4e('0x36')]);_0x15d6e3[_0xcd4e('0x37')]=qs[_0xcd4e('0x2e')](_[_0xcd4e('0x38')](_0x395377['query'],_0x1998df[_0xcd4e('0x2e')]),_0x557d7a);if(_0x395377[_0xcd4e('0x2c')][_0xcd4e('0x39')]){_0x15d6e3[_0xcd4e('0x37')]=_['merge'](_0x15d6e3['where'],{'$or':_[_0xcd4e('0x3a')](_0x557d7a,function(_0x222d47){if(_0x222d47[_0xcd4e('0x3b')]!=='VIRTUAL'){var _0x2700d4={};_0x2700d4[_0x222d47[_0xcd4e('0x25')]]={'$like':'%'+_0x395377[_0xcd4e('0x2c')]['filter']+'%'};return _0x2700d4;}})});}_0x15d6e3=_[_0xcd4e('0x3c')]({},_0x15d6e3,_0x395377[_0xcd4e('0x3d')]);var _0x596181={'where':_0x15d6e3[_0xcd4e('0x37')]};return db[_0xcd4e('0x27')][_0xcd4e('0x1b')](_0x596181)['then'](function(_0x1d7816){_0x13f450[_0xcd4e('0x1b')]=_0x1d7816;if(_0x395377[_0xcd4e('0x2c')][_0xcd4e('0x3e')]){_0x15d6e3[_0xcd4e('0x3f')]=[{'all':!![]}];}return db['VoiceRecording'][_0xcd4e('0x40')](_0x15d6e3);})[_0xcd4e('0x22')](function(_0x58bc82){_0x13f450[_0xcd4e('0x41')]=_0x58bc82;return _0x13f450;})[_0xcd4e('0x22')](respondWithFilteredResult(_0x135651,_0x15d6e3))[_0xcd4e('0x42')](handleError(_0x135651,null));};exports[_0xcd4e('0x43')]=function(_0xb47cf2,_0x4c5c6a){var _0x5cf40c={'raw':![],'where':{'id':_0xb47cf2[_0xcd4e('0x44')]['id']}},_0xf34c6c={};_0xf34c6c[_0xcd4e('0x30')]=_['keys'](db['VoiceRecording']['rawAttributes']);_0xf34c6c['query']=_[_0xcd4e('0x2d')](_0xb47cf2[_0xcd4e('0x2c')]);_0xf34c6c['filters']=_[_0xcd4e('0x2f')](_0xf34c6c[_0xcd4e('0x30')],_0xf34c6c[_0xcd4e('0x2c')]);_0x5cf40c['attributes']=_[_0xcd4e('0x2f')](_0xf34c6c['model'],qs[_0xcd4e('0x31')](_0xb47cf2[_0xcd4e('0x2c')][_0xcd4e('0x31')]));_0x5cf40c[_0xcd4e('0x32')]=_0x5cf40c[_0xcd4e('0x32')][_0xcd4e('0x45')]?_0x5cf40c[_0xcd4e('0x32')]:_0xf34c6c[_0xcd4e('0x30')];if(_0xb47cf2['query'][_0xcd4e('0x3e')]){_0x5cf40c[_0xcd4e('0x3f')]=[{'all':!![]}];}_0x5cf40c=_[_0xcd4e('0x3c')]({},_0x5cf40c,_0xb47cf2[_0xcd4e('0x3d')]);return db[_0xcd4e('0x27')]['find'](_0x5cf40c)[_0xcd4e('0x22')](handleEntityNotFound(_0x4c5c6a,null))[_0xcd4e('0x22')](respondWithResult(_0x4c5c6a,null))[_0xcd4e('0x42')](handleError(_0x4c5c6a,null));};exports[_0xcd4e('0x46')]=function(_0x53ddf0,_0x1685c3){return db['VoiceRecording']['create'](_0x53ddf0[_0xcd4e('0x47')],{})[_0xcd4e('0x22')](respondWithResult(_0x1685c3,0xc9))[_0xcd4e('0x42')](handleError(_0x1685c3,null));};exports[_0xcd4e('0x20')]=function(_0x385736,_0x5a825c){if(_0x385736['body']['id']){delete _0x385736[_0xcd4e('0x47')]['id'];}return db[_0xcd4e('0x27')][_0xcd4e('0x48')]({'where':{'id':_0x385736[_0xcd4e('0x44')]['id']}})[_0xcd4e('0x22')](handleEntityNotFound(_0x5a825c,null))[_0xcd4e('0x22')](saveUpdates(_0x385736[_0xcd4e('0x47')],null))[_0xcd4e('0x22')](respondWithResult(_0x5a825c,null))[_0xcd4e('0x42')](handleError(_0x5a825c,null));};exports[_0xcd4e('0x49')]=function(_0x164172,_0x2a4b3a){return db[_0xcd4e('0x27')]['describe']()['then'](respondWithResult(_0x2a4b3a,null))['catch'](handleError(_0x2a4b3a,null));};exports[_0xcd4e('0x4a')]=function(_0x49ce24,_0x1752a3,_0x9f8cea){var _0x1f6443=require(_0xcd4e('0x4b'));var _0x17c50b=![];var _0x25888f={};if(_0x49ce24[_0xcd4e('0x2c')]['type']&&_0x49ce24['query'][_0xcd4e('0x3b')]===_0xcd4e('0x4c')){_0x25888f[_0xcd4e('0x4c')]=_0x49ce24[_0xcd4e('0x44')]['id'];}else{_0x25888f['id']=_0x49ce24[_0xcd4e('0x44')]['id'];}return db[_0xcd4e('0x27')][_0xcd4e('0x48')]({'where':_0x25888f,'attributes':['id',_0xcd4e('0x4d')],'raw':!![]})[_0xcd4e('0x22')](handleEntityNotFound(_0x1752a3,null))[_0xcd4e('0x22')](function(_0xc8da57){if(_0xc8da57){var _0x58fbb8=_0xc8da57[_0xcd4e('0x4d')];var _0x37d555=util[_0xcd4e('0x4e')]('%s.cypher',_0x58fbb8);if(fs[_0xcd4e('0x4f')](_0x37d555)){_0x17c50b=!![];return _0x1f6443[_0xcd4e('0x50')](_0x37d555,_0x58fbb8,config[_0xcd4e('0x51')][_0xcd4e('0x52')])[_0xcd4e('0x22')](function(){return _0xc8da57;});}return _0xc8da57;}})['then'](function(_0x227dd9){if(_0x227dd9){var _0x94190c=_0x227dd9[_0xcd4e('0x4d')];if(!fs[_0xcd4e('0x4f')](_0x94190c)){throw new db[(_0xcd4e('0x53'))][(_0xcd4e('0x54'))](_0xcd4e('0x55'));}if(_0x227dd9['filename']){return _0x1752a3[_0xcd4e('0x4a')](_0x94190c,_0x227dd9[_0xcd4e('0x56')]+path[_0xcd4e('0x57')](_0x94190c),function(){if(_0x17c50b){fs['unlink'](_0x94190c);}});}else{return _0x1752a3[_0xcd4e('0x4a')](_0x94190c,function(_0x2c785f){if(_0x17c50b){fs[_0xcd4e('0x58')](_0x94190c);}});}}})['catch'](function(_0x2a01af){if(_0x2a01af[_0xcd4e('0x59')]==='VoiceRecording\x20not\x20found'){_0x1752a3[_0xcd4e('0x1c')](0x194)[_0xcd4e('0x26')](_0xcd4e('0x5a'));}else{return handleError(_0x1752a3,null);}});};exports[_0xcd4e('0x5b')]=function(_0x44a864,_0x3985c8,_0x560109){var _0x4d1ef7=require(_0xcd4e('0x4b'));var _0x50b571=![];var _0x31eef1={'$and':[db[_0xcd4e('0x5c')][_0xcd4e('0x37')](db[_0xcd4e('0x5c')]['fn']('MD5',db[_0xcd4e('0x5c')][_0xcd4e('0x5d')]('uniqueid')),_0x44a864[_0xcd4e('0x2c')][_0xcd4e('0x5e')])]};if(_0x44a864[_0xcd4e('0x2c')][_0xcd4e('0x3b')]&&_0x44a864['query'][_0xcd4e('0x3b')]==='uniqueid'){_0x31eef1['$and'][_0xcd4e('0x5f')]({'uniqueid':_0x44a864[_0xcd4e('0x44')]['id']});}else{_0x31eef1['$and'][_0xcd4e('0x5f')]({'id':_0x44a864[_0xcd4e('0x44')]['id']});}return db[_0xcd4e('0x27')][_0xcd4e('0x48')]({'where':_0x31eef1,'attributes':['id',_0xcd4e('0x4d')],'raw':!![]})[_0xcd4e('0x22')](handleEntityNotFound(_0x3985c8,null))[_0xcd4e('0x22')](function(_0x14e1e8){if(_0x14e1e8){var _0x27c4de=util[_0xcd4e('0x4e')]('%s.cypher',_0x14e1e8[_0xcd4e('0x4d')]);if(fs['existsSync'](_0x27c4de)){_0x50b571=!![];return _0x4d1ef7[_0xcd4e('0x50')](_0x27c4de,_0x14e1e8[_0xcd4e('0x4d')],config[_0xcd4e('0x51')]['recording'])['then'](function(){return _0x14e1e8;});}return _0x14e1e8;}})[_0xcd4e('0x22')](function(_0x1f8b55){if(_0x1f8b55){if(!fs[_0xcd4e('0x4f')](_0x1f8b55['value'])){throw new db['Sequelize'][(_0xcd4e('0x54'))](_0xcd4e('0x55'));}if(_0x1f8b55[_0xcd4e('0x56')]){return _0x3985c8[_0xcd4e('0x4a')](_0x1f8b55[_0xcd4e('0x4d')],_0x1f8b55[_0xcd4e('0x56')]+path['extname'](_0x1f8b55[_0xcd4e('0x4d')]),function(){if(_0x50b571){fs[_0xcd4e('0x58')](_0x1f8b55[_0xcd4e('0x4d')]);}});}else{return _0x3985c8[_0xcd4e('0x4a')](_0x1f8b55[_0xcd4e('0x4d')],function(_0x2f9ff0){if(_0x50b571){fs[_0xcd4e('0x58')](_0x1f8b55[_0xcd4e('0x4d')]);}});}}})[_0xcd4e('0x42')](handleError(_0x3985c8,null));};exports[_0xcd4e('0x21')]=function(_0x277c77,_0x4e5b22){return db[_0xcd4e('0x27')]['find']({'where':{'id':_0x277c77[_0xcd4e('0x44')]['id']}})[_0xcd4e('0x22')](function(_0x54f549){if(_[_0xcd4e('0x60')](_0x54f549)){throw new ReferenceError(_0xcd4e('0x61'));}return _0x54f549;})[_0xcd4e('0x22')](function(_0x4fedc4){var _0x572426=_0x4fedc4[_0xcd4e('0x4d')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x572426);if(!_['isNil'](_0x4fedc4[_0xcd4e('0x4d')])&&fs['existsSync'](_0x572426)){logger[_0xcd4e('0x62')](_0xcd4e('0x63')+_0x572426+_0xcd4e('0x64'));fs['unlinkSync'](_0x572426);}_0x572426=_0x572426+_0xcd4e('0x65');if(!_[_0xcd4e('0x60')](_0x4fedc4['value'])&&fs[_0xcd4e('0x4f')](_0x572426)){logger[_0xcd4e('0x62')](_0xcd4e('0x63')+_0x572426+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xcd4e('0x66')](_0x572426);}return _0x4fedc4;})[_0xcd4e('0x22')](function(_0x1f4618){if(!_0x1f4618)throw new InternalError();return _0x1f4618['destroy']();})['then'](function(){_0x4e5b22['status'](0xcc)[_0xcd4e('0x23')]();})[_0xcd4e('0x42')](handleError(_0x4e5b22,null));};function getBucketslist(_0x59ab54,_0x4b2327,_0x4e826f){return new Promise(function(_0x4c8a54,_0x22d1c8){var _0x1aee89=new AWS['S3']({'accessKeyId':_0x4b2327,'secretAccessKey':_0x59ab54,'region':_0x4e826f});_0x1aee89[_0xcd4e('0x67')]({},function(_0x1bb9cf,_0x192851){if(_0x1bb9cf){return _0x22d1c8(_0x1bb9cf);}else{return _0x4c8a54(_0x192851);}});});}function createBucket(_0x25a730,_0x4a9ea4,_0x38d32d,_0x2bdca5){return new Promise(function(_0x1f6789,_0x352a58){var _0x3abd42=new AWS['S3']({'accessKeyId':_0x4a9ea4,'secretAccessKey':_0x25a730,'region':_0x38d32d});_0x3abd42['createBucket']({'Bucket':_0x2bdca5},function(_0x17401d,_0xa4c176){if(_0x17401d){return _0x352a58(_0x17401d);}else{return _0x1f6789(_0xa4c176);}});});}function uploadFile(_0x5c69b3,_0x8c2298,_0x27306c,_0x41bc3f,_0xc105d3,_0x3b5744){return new Promise(function(_0x406797,_0x2fd55c){var _0x53eb07=new AWS['S3']({'accessKeyId':_0x8c2298,'secretAccessKey':_0x5c69b3,'region':_0x27306c});_0x53eb07[_0xcd4e('0x68')]({'Bucket':_0x41bc3f,'Key':_0xc105d3,'Body':_0x3b5744},function(_0x3dc346,_0x4686d7){if(_0x3dc346){return _0x2fd55c(_0x3dc346);}else{return _0x406797(_0x4686d7);}});});}function startTranscribe(_0x9a1489,_0x3342b7,_0x574439,_0x503775,_0x254c72,_0x1eb7c7){return new Promise(function(_0x409550,_0x31d745){var _0x47daca=new AWS['TranscribeService']({'accessKeyId':_0x3342b7,'secretAccessKey':_0x9a1489,'region':_0x574439});_0x47daca['startTranscriptionJob']({'TranscriptionJobName':_0x503775,'LanguageCode':_0x254c72,'Media':{'MediaFileUri':_0x1eb7c7}},function(_0x28d2e2,_0x38633a){if(_0x28d2e2){return _0x31d745(_0x28d2e2);}else{return _0x409550(_0x38633a);}});});}function transcribe(_0x4ce07c,_0x389181,_0x1b5a4b,_0xa52176,_0x56c02e,_0x10e4d2,_0x4a0320){return new Promise(function(_0x304528,_0x295268){var _0x36652b={};logger[_0xcd4e('0x62')](util[_0xcd4e('0x4e')](_0xcd4e('0x69'),_0x4ce07c,_0x56c02e));return uploadFile(_0x389181,_0x1b5a4b,_0xa52176,_0x56c02e,path[_0xcd4e('0x6a')](_0x10e4d2),fs[_0xcd4e('0x6b')](_0x10e4d2))[_0xcd4e('0x22')](function(_0x10db70){logger['info'](util[_0xcd4e('0x4e')](_0xcd4e('0x6c'),_0x4ce07c,_0x56c02e,_0x10db70[_0xcd4e('0x6d')]));_0x36652b[_0xcd4e('0x6e')]=_0x10db70[_0xcd4e('0x6f')];_0x36652b[_0xcd4e('0x70')]=_0x10db70[_0xcd4e('0x6d')];logger[_0xcd4e('0x62')](util[_0xcd4e('0x4e')](_0xcd4e('0x71'),_0x4ce07c));return startTranscribe(_0x389181,_0x1b5a4b,_0xa52176,uuidv4(),_0x4a0320,_0x10db70['Location']);})[_0xcd4e('0x22')](function(_0x3d4f59){logger[_0xcd4e('0x62')](util[_0xcd4e('0x4e')](_0xcd4e('0x72'),_0x4ce07c,_0x3d4f59[_0xcd4e('0x73')][_0xcd4e('0x74')]));_0x36652b[_0xcd4e('0x75')]=_0x3d4f59['TranscriptionJob'][_0xcd4e('0x74')];_0x36652b['transcribeStatus']=_0x3d4f59[_0xcd4e('0x73')][_0xcd4e('0x76')];return _0x304528(_0x36652b);})[_0xcd4e('0x42')](function(_0x2220ea){return _0x295268(_0x2220ea);});});}exports[_0xcd4e('0x77')]=function(_0x4f9257,_0x56f39e,_0x588473){var _0x237297;var _0x1d0c4a;var _0x375c2c;var _0x3020c4=require(_0xcd4e('0x4b'));return db[_0xcd4e('0x27')]['findOne']({'where':{'id':_0x4f9257[_0xcd4e('0x44')]['id']}})[_0xcd4e('0x22')](function(_0x1d3fd3){if(_0x1d3fd3){var _0x306bff=util[_0xcd4e('0x4e')]('%s.cypher',_0x1d3fd3[_0xcd4e('0x4d')]);if(fs[_0xcd4e('0x4f')](_0x306bff)){cypher=!![];return _0x3020c4[_0xcd4e('0x50')](_0x306bff,_0x1d3fd3[_0xcd4e('0x4d')],config[_0xcd4e('0x51')][_0xcd4e('0x52')])[_0xcd4e('0x22')](function(){return _0x1d3fd3;});}return _0x1d3fd3;}})[_0xcd4e('0x22')](function(_0x206cba){if(!_0x206cba){throw new db[(_0xcd4e('0x53'))][(_0xcd4e('0x54'))]('Voice\x20Recording\x20not\x20found');}_0x1d0c4a=_0x206cba;return db[_0xcd4e('0x78')][_0xcd4e('0x79')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x56f39e,null))[_0xcd4e('0x22')](function(_0x48d919){if(_0x48d919){_0x237297=_0x48d919;if(!_0x237297[_0xcd4e('0x7a')]||!_0x237297[_0xcd4e('0x7b')]||!_0x237297[_0xcd4e('0x7c')]||!_0x237297[_0xcd4e('0x7d')]||!_0x237297[_0xcd4e('0x6e')]){throw new db['Sequelize'][(_0xcd4e('0x54'))](_0xcd4e('0x7e'));}if(_0x4f9257[_0xcd4e('0x47')][_0xcd4e('0x7f')]&&(!_0x237297['sentiment']||!_0x237297['sentimentAccountId']||!_0x237297['sentimentRegion']||!_0x237297['language']||!_0x237297[_0xcd4e('0x6e')])){throw new db[(_0xcd4e('0x53'))]['ValidationError'](_0xcd4e('0x80'));}return db['CloudProvider'][_0xcd4e('0x79')]({'where':{'id':_0x237297[_0xcd4e('0x7b')]}});}})['then'](function(_0x5175f9){if(!_0x5175f9){throw new db[(_0xcd4e('0x53'))][(_0xcd4e('0x54'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5175f9[_0xcd4e('0x81')]||!_0x5175f9[_0xcd4e('0x82')]){throw new db[(_0xcd4e('0x53'))][(_0xcd4e('0x54'))](_0xcd4e('0x83'));}_0x375c2c=_0x5175f9;return getBucketslist(_0x375c2c[_0xcd4e('0x81')],_0x375c2c[_0xcd4e('0x82')],_0x237297[_0xcd4e('0x7c')]);})['then'](function(_0x3f6de3){if(_0x3f6de3&&_0x3f6de3['Buckets']){var _0x25edb7=_['find'](_0x3f6de3['Buckets'],function(_0x34f2f2){return _0x34f2f2[_0xcd4e('0x84')]===_0x237297[_0xcd4e('0x6e')];});if(!_0x25edb7){logger[_0xcd4e('0x62')](util[_0xcd4e('0x4e')](_0xcd4e('0x85'),_0x4f9257[_0xcd4e('0x44')]['id'],_0x237297[_0xcd4e('0x6e')]));return createBucket(_0x375c2c['data1'],_0x375c2c[_0xcd4e('0x82')],_0x237297[_0xcd4e('0x7c')],_0x237297[_0xcd4e('0x6e')]);}logger[_0xcd4e('0x62')](util[_0xcd4e('0x4e')](_0xcd4e('0x86'),_0x4f9257[_0xcd4e('0x44')]['id'],_0x237297[_0xcd4e('0x6e')]));return;}})[_0xcd4e('0x22')](function(_0x476f2f){if(_0x1d0c4a[_0xcd4e('0x87')]===_0xcd4e('0x88')){return transcribe(_0x4f9257[_0xcd4e('0x44')]['id'],_0x375c2c['data1'],_0x375c2c[_0xcd4e('0x82')],_0x237297['transcribeRegion'],_0x237297[_0xcd4e('0x6e')],_0x1d0c4a['value'],_0x237297[_0xcd4e('0x7d')]);}else{logger[_0xcd4e('0x62')](util['format'](_0xcd4e('0x89'),_0x4f9257['params']['id']));return{'transcribeStatus':_0xcd4e('0x8a')};}})[_0xcd4e('0x22')](function(_0x16800f){if(_0x16800f){_0x16800f[_0xcd4e('0x8b')]=_0x4f9257['body'][_0xcd4e('0x7f')];return _0x1d0c4a[_0xcd4e('0x8c')](_0x16800f);}})[_0xcd4e('0x22')](respondWithResult(_0x56f39e,null))['catch'](handleError(_0x56f39e,null));};function writeFile(_0x523b29,_0x56ab30){return new Promise(function(_0x407abb,_0x1cd815){fs[_0xcd4e('0x8d')](_0x56ab30,_0x523b29,function(_0x15cc2a,_0x1b39c6){if(_0x15cc2a){return _0x1cd815(_0x15cc2a);}else{return _0x407abb(_0x1b39c6);}});});}exports[_0xcd4e('0x8e')]=function(_0x2d2767,_0x529a83,_0x1871d1){return db[_0xcd4e('0x27')][_0xcd4e('0x79')]({'where':{'id':_0x2d2767['params']['id']}})[_0xcd4e('0x22')](handleEntityNotFound(_0x529a83))[_0xcd4e('0x22')](function(_0x563f5a){if(_0x563f5a&&_0x563f5a[_0xcd4e('0x8f')]){var _0x1c99cc=_0x563f5a[_0xcd4e('0x8f')];var _0x1d7756=config[_0xcd4e('0x90')]+_0xcd4e('0x91')+_0x563f5a['id']+_0xcd4e('0x92');if(fs[_0xcd4e('0x4f')](_0x1d7756)){return _0x1d7756;}return writeFile(_0x1c99cc,_0x1d7756)[_0xcd4e('0x22')](function(){return _0x1d7756;});}else{throw new db[(_0xcd4e('0x53'))]['ValidationError'](_0xcd4e('0x93'));}})['then'](function(_0x4fa372){return _0x529a83[_0xcd4e('0x4a')](_0x4fa372);})[_0xcd4e('0x42')](handleError(_0x529a83));};
\ No newline at end of file
index ca71b2e..75655e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26bc=['./voiceRecording.attributes','exports','define','voice_recordings','uniqueid','transcribeStatus'];(function(_0x1d85e3,_0x125cff){var _0x38f84a=function(_0x1e481b){while(--_0x1e481b){_0x1d85e3['push'](_0x1d85e3['shift']());}};_0x38f84a(++_0x125cff);}(_0x26bc,0x162));var _0xc26b=function(_0x139196,_0x1eac90){_0x139196=_0x139196-0x0;var _0xb0dbc9=_0x26bc[_0x139196];return _0xb0dbc9;};'use strict';var attributes=require(_0xc26b('0x0'));module[_0xc26b('0x1')]=function(_0x24bff6,_0x3b0ec1){return _0x24bff6[_0xc26b('0x2')]('VoiceRecording',attributes,{'tableName':_0xc26b('0x3'),'paranoid':![],'indexes':[{'name':_0xc26b('0x4'),'fields':[_0xc26b('0x4')]},{'name':'transcribeStatus','fields':[_0xc26b('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x53d5=['define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes','exports'];(function(_0x3e1ae9,_0x4aa73d){var _0x43ee16=function(_0x1d680e){while(--_0x1d680e){_0x3e1ae9['push'](_0x3e1ae9['shift']());}};_0x43ee16(++_0x4aa73d);}(_0x53d5,0x1cc));var _0x553d=function(_0x2715b5,_0xdc645f){_0x2715b5=_0x2715b5-0x0;var _0x114369=_0x53d5[_0x2715b5];return _0x114369;};'use strict';var attributes=require(_0x553d('0x0'));module[_0x553d('0x1')]=function(_0x217b81,_0x619750){return _0x217b81[_0x553d('0x2')](_0x553d('0x3'),attributes,{'tableName':_0x553d('0x4'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x553d('0x5')]},{'name':_0x553d('0x6'),'fields':[_0x553d('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
index ebf37c0..1cc33c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['result','VoiceRecording','body','options','raw','where','attributes','limit','UpdateVoiceRecording','debug','catch','CreateVoiceRecording','Setting','findOne','callRecordingEncryption','format','%s.cypher','value','encryptFile','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','stringify','error','VoiceRecording,\x20%s,\x20%s','message','info'];(function(_0xfc0976,_0x33776f){var _0x23579f=function(_0x4143d9){while(--_0x4143d9){_0xfc0976['push'](_0xfc0976['shift']());}};_0x23579f(++_0x33776f);}(_0x3d04,0xbe));var _0x43d0=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x3d04[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var moment=require(_0x43d0('0x2'));var BPromise=require(_0x43d0('0x3'));var rs=require(_0x43d0('0x4'));var fs=require('fs');var Redis=require(_0x43d0('0x5'));var db=require(_0x43d0('0x6'))['db'];var utils=require(_0x43d0('0x7'));var logger=require('../../config/logger')(_0x43d0('0x8'));var config=require(_0x43d0('0x9'));var jayson=require(_0x43d0('0xa'));var client=jayson[_0x43d0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x484271,_0x50919e,_0x5efb95){return new BPromise(function(_0x457550,_0x3344d3){return client[_0x43d0('0xc')](_0x484271,_0x5efb95)[_0x43d0('0xd')](function(_0x44a763){logger['info']('VoiceRecording,\x20%s,\x20%s',_0x50919e,_0x43d0('0xe'));logger['debug']('VoiceRecording,\x20%s,\x20%s,\x20%s',_0x50919e,_0x43d0('0xe'),JSON[_0x43d0('0xf')](_0x44a763));if(_0x44a763[_0x43d0('0x10')]){if(_0x44a763[_0x43d0('0x10')]['code']===0x1f4){logger[_0x43d0('0x10')](_0x43d0('0x11'),_0x50919e,_0x44a763['error'][_0x43d0('0x12')]);return _0x3344d3(_0x44a763[_0x43d0('0x10')][_0x43d0('0x12')]);}logger['error'](_0x43d0('0x11'),_0x50919e,_0x44a763[_0x43d0('0x10')][_0x43d0('0x12')]);return _0x457550(_0x44a763['error'][_0x43d0('0x12')]);}else{logger[_0x43d0('0x13')](_0x43d0('0x11'),_0x50919e,_0x43d0('0xe'));_0x457550(_0x44a763[_0x43d0('0x14')]['message']);}})['catch'](function(_0x1e91a7){logger[_0x43d0('0x10')](_0x43d0('0x11'),_0x50919e,_0x1e91a7);_0x3344d3(_0x1e91a7);});});}exports['UpdateVoiceRecording']=function(_0x2c641e){var _0x532402=this;return new Promise(function(_0x2c9d06,_0x468ca2){return db[_0x43d0('0x15')]['update'](_0x2c641e[_0x43d0('0x16')],{'raw':_0x2c641e[_0x43d0('0x17')]?_0x2c641e['options'][_0x43d0('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c641e[_0x43d0('0x17')]?_0x2c641e[_0x43d0('0x17')][_0x43d0('0x19')]||null:null,'attributes':_0x2c641e[_0x43d0('0x17')]?_0x2c641e[_0x43d0('0x17')][_0x43d0('0x1a')]||null:null,'limit':_0x2c641e[_0x43d0('0x17')]?_0x2c641e[_0x43d0('0x17')][_0x43d0('0x1b')]||null:null})[_0x43d0('0xd')](function(_0x19d2ff){logger[_0x43d0('0x13')](_0x43d0('0x1c'),_0x2c641e);logger[_0x43d0('0x1d')]('UpdateVoiceRecording',_0x2c641e,JSON[_0x43d0('0xf')](_0x19d2ff));_0x2c9d06(_0x19d2ff);})[_0x43d0('0x1e')](function(_0x509041){logger[_0x43d0('0x10')]('UpdateVoiceRecording',_0x509041[_0x43d0('0x12')],_0x2c641e);_0x468ca2(_0x532402[_0x43d0('0x10')](0x1f4,_0x509041['message']));});});};exports[_0x43d0('0x1f')]=function(_0x238c64){var _0x5ac4c0=this;return new Promise(function(_0x12df30,_0x4692bc){var _0x22ae3c=require('../../components/encryptor');var _0x447725;return db[_0x43d0('0x20')][_0x43d0('0x21')]({'attributes':['id',_0x43d0('0x22')],'where':{'id':0x1},'raw':!![]})[_0x43d0('0xd')](function(_0x440ecb){_0x447725=_0x440ecb;return db[_0x43d0('0x15')]['create'](_0x238c64[_0x43d0('0x16')]);})[_0x43d0('0xd')](function(_0x6bc471){if(_0x447725['callRecordingEncryption']&&fs['existsSync'](_0x6bc471['value'])){var _0x3c1ea3=util[_0x43d0('0x23')](_0x43d0('0x24'),_0x6bc471[_0x43d0('0x25')]);return _0x22ae3c[_0x43d0('0x26')](_0x6bc471[_0x43d0('0x25')],_0x3c1ea3,config['secrets'][_0x43d0('0x27')])[_0x43d0('0xd')](function(){fs[_0x43d0('0x28')](_0x6bc471[_0x43d0('0x25')]);logger[_0x43d0('0x13')](_0x43d0('0x29'));return _0x6bc471;});}return _0x6bc471;})[_0x43d0('0xd')](function(_0x1bdd74){logger[_0x43d0('0x13')](_0x43d0('0x1f'),_0x238c64);logger[_0x43d0('0x1d')]('CreateVoiceRecording',_0x238c64,JSON[_0x43d0('0xf')](_0x1bdd74));_0x12df30(_0x1bdd74);})[_0x43d0('0x1e')](function(_0x45ec78){logger[_0x43d0('0x10')]('CreateVoiceRecording',_0x45ec78[_0x43d0('0x12')],_0x238c64);_0x4692bc(_0x5ac4c0['error'](0x1f4,_0x45ec78[_0x43d0('0x12')]));});});};
\ No newline at end of file
+var _0x5fdc=['CreateVoiceRecording','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceRecording,\x20%s,\x20%s','info','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','catch'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x5fdc,0x127));var _0xc5fd=function(_0x389d7f,_0x5d89bf){_0x389d7f=_0x389d7f-0x0;var _0x547817=_0x5fdc[_0x389d7f];return _0x547817;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var moment=require(_0xc5fd('0x2'));var BPromise=require(_0xc5fd('0x3'));var rs=require(_0xc5fd('0x4'));var fs=require('fs');var Redis=require(_0xc5fd('0x5'));var db=require(_0xc5fd('0x6'))['db'];var utils=require(_0xc5fd('0x7'));var logger=require(_0xc5fd('0x8'))(_0xc5fd('0x9'));var config=require(_0xc5fd('0xa'));var jayson=require(_0xc5fd('0xb'));var client=jayson[_0xc5fd('0xc')][_0xc5fd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x15ffe7,_0x5a2eb4,_0x5d86e5){return new BPromise(function(_0x493389,_0x224801){return client[_0xc5fd('0xe')](_0x15ffe7,_0x5d86e5)[_0xc5fd('0xf')](function(_0x45c91f){logger['info']('VoiceRecording,\x20%s,\x20%s',_0x5a2eb4,_0xc5fd('0x10'));logger[_0xc5fd('0x11')](_0xc5fd('0x12'),_0x5a2eb4,_0xc5fd('0x10'),JSON[_0xc5fd('0x13')](_0x45c91f));if(_0x45c91f[_0xc5fd('0x14')]){if(_0x45c91f['error'][_0xc5fd('0x15')]===0x1f4){logger['error']('VoiceRecording,\x20%s,\x20%s',_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x224801(_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);}logger[_0xc5fd('0x14')](_0xc5fd('0x17'),_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x493389(_0x45c91f['error'][_0xc5fd('0x16')]);}else{logger[_0xc5fd('0x18')](_0xc5fd('0x17'),_0x5a2eb4,_0xc5fd('0x10'));_0x493389(_0x45c91f['result']['message']);}})['catch'](function(_0x5529b3){logger['error'](_0xc5fd('0x17'),_0x5a2eb4,_0x5529b3);_0x224801(_0x5529b3);});});}exports[_0xc5fd('0x19')]=function(_0x27f611){var _0xd0a9f1=this;return new Promise(function(_0x2ee392,_0x3f981f){return db[_0xc5fd('0x1a')]['update'](_0x27f611[_0xc5fd('0x1b')],{'raw':_0x27f611[_0xc5fd('0x1c')]?_0x27f611[_0xc5fd('0x1c')][_0xc5fd('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27f611[_0xc5fd('0x1c')]?_0x27f611['options'][_0xc5fd('0x1e')]||null:null,'attributes':_0x27f611[_0xc5fd('0x1c')]?_0x27f611[_0xc5fd('0x1c')][_0xc5fd('0x1f')]||null:null,'limit':_0x27f611['options']?_0x27f611['options'][_0xc5fd('0x20')]||null:null})[_0xc5fd('0xf')](function(_0x3d7211){logger[_0xc5fd('0x18')](_0xc5fd('0x19'),_0x27f611);logger[_0xc5fd('0x11')]('UpdateVoiceRecording',_0x27f611,JSON[_0xc5fd('0x13')](_0x3d7211));_0x2ee392(_0x3d7211);})[_0xc5fd('0x21')](function(_0x1a5174){logger[_0xc5fd('0x14')](_0xc5fd('0x19'),_0x1a5174[_0xc5fd('0x16')],_0x27f611);_0x3f981f(_0xd0a9f1[_0xc5fd('0x14')](0x1f4,_0x1a5174['message']));});});};exports[_0xc5fd('0x22')]=function(_0x48cd1d){var _0x2ee700=this;return new Promise(function(_0x231368,_0x44681d){var _0x2bee22=require('../../components/encryptor');var _0x176313;return db[_0xc5fd('0x23')][_0xc5fd('0x24')]({'attributes':['id',_0xc5fd('0x25')],'where':{'id':0x1},'raw':!![]})[_0xc5fd('0xf')](function(_0x209975){_0x176313=_0x209975;return db['VoiceRecording'][_0xc5fd('0x26')](_0x48cd1d['body']);})['then'](function(_0x12a962){if(_0x176313[_0xc5fd('0x25')]&&fs[_0xc5fd('0x27')](_0x12a962[_0xc5fd('0x28')])){var _0x7693c4=util[_0xc5fd('0x29')](_0xc5fd('0x2a'),_0x12a962[_0xc5fd('0x28')]);return _0x2bee22['encryptFile'](_0x12a962[_0xc5fd('0x28')],_0x7693c4,config[_0xc5fd('0x2b')][_0xc5fd('0x2c')])[_0xc5fd('0xf')](function(){fs[_0xc5fd('0x2d')](_0x12a962[_0xc5fd('0x28')]);logger[_0xc5fd('0x18')](_0xc5fd('0x2e'));return _0x12a962;});}return _0x12a962;})[_0xc5fd('0xf')](function(_0x466aa1){logger[_0xc5fd('0x18')](_0xc5fd('0x22'),_0x48cd1d);logger['debug'](_0xc5fd('0x22'),_0x48cd1d,JSON[_0xc5fd('0x13')](_0x466aa1));_0x231368(_0x466aa1);})[_0xc5fd('0x21')](function(_0x1fa329){logger[_0xc5fd('0x14')](_0xc5fd('0x22'),_0x1fa329[_0xc5fd('0x16')],_0x48cd1d);_0x44681d(_0x2ee700[_0xc5fd('0x14')](0x1f4,_0x1fa329[_0xc5fd('0x16')]));});});};
\ No newline at end of file
index e7cdef0..88f2922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14de=['Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','util','path','express'];(function(_0x1210ca,_0xbaebe5){var _0x4b76e0=function(_0xe051ad){while(--_0xe051ad){_0x1210ca['push'](_0x1210ca['shift']());}};_0x4b76e0(++_0xbaebe5);}(_0x14de,0x18d));var _0xe14d=function(_0x19f4eb,_0xf27e4b){_0x19f4eb=_0x19f4eb-0x0;var _0x547e16=_0x14de[_0x19f4eb];return _0x547e16;};'use strict';var multer=require('multer');var util=require(_0xe14d('0x0'));var path=require(_0xe14d('0x1'));var timeout=require('connect-timeout');var express=require(_0xe14d('0x2'));var router=express[_0xe14d('0x3')]();var fs_extra=require(_0xe14d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe14d('0x5'));var config=require(_0xe14d('0x6'));var controller=require(_0xe14d('0x7'));router['get']('/',auth[_0xe14d('0x8')](),controller[_0xe14d('0x9')]);router['get'](_0xe14d('0xa'),auth['isAuthenticated'](),controller[_0xe14d('0xb')]);router['get'](_0xe14d('0xc'),auth[_0xe14d('0x8')](),controller[_0xe14d('0xd')]);router[_0xe14d('0xe')]('/',auth[_0xe14d('0x8')](),controller[_0xe14d('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xe14d('0x10')]);router[_0xe14d('0x11')](_0xe14d('0xc'),auth[_0xe14d('0x8')](),controller[_0xe14d('0x12')]);module[_0xe14d('0x13')]=router;
\ No newline at end of file
+var _0x6571=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','update','destroy','multer','util'];(function(_0xfd1e9c,_0x4762b7){var _0x310495=function(_0x3f7e8e){while(--_0x3f7e8e){_0xfd1e9c['push'](_0xfd1e9c['shift']());}};_0x310495(++_0x4762b7);}(_0x6571,0x86));var _0x1657=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x6571[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0x1657('0x0'));var util=require(_0x1657('0x1'));var path=require('path');var timeout=require(_0x1657('0x2'));var express=require(_0x1657('0x3'));var router=express[_0x1657('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1657('0x5'));var interaction=require(_0x1657('0x6'));var config=require(_0x1657('0x7'));var controller=require('./voiceTransferReport.controller');router[_0x1657('0x8')]('/',auth[_0x1657('0x9')](),controller[_0x1657('0xa')]);router[_0x1657('0x8')](_0x1657('0xb'),auth[_0x1657('0x9')](),controller[_0x1657('0xc')]);router[_0x1657('0x8')](_0x1657('0xd'),auth[_0x1657('0x9')](),controller[_0x1657('0xe')]);router['post']('/',auth[_0x1657('0x9')](),controller['create']);router['put'](_0x1657('0xd'),auth[_0x1657('0x9')](),controller[_0x1657('0xf')]);router['delete'](_0x1657('0xd'),auth[_0x1657('0x9')](),controller[_0x1657('0x10')]);module['exports']=router;
\ No newline at end of file
index 241fe16..74fbba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c05=['attended','STRING','sequelize','moment','exports','ENUM','blind'];(function(_0x5a001d,_0x591f45){var _0x3d0a81=function(_0x13ad2a){while(--_0x13ad2a){_0x5a001d['push'](_0x5a001d['shift']());}};_0x3d0a81(++_0x591f45);}(_0x9c05,0x10c));var _0x59c0=function(_0x103543,_0x28035e){_0x103543=_0x103543-0x0;var _0x1d9138=_0x9c05[_0x103543];return _0x1d9138;};'use strict';var Sequelize=require(_0x59c0('0x0'));var moment=require(_0x59c0('0x1'));module[_0x59c0('0x2')]={'type':{'type':Sequelize[_0x59c0('0x3')](_0x59c0('0x4'),_0x59c0('0x5'))},'result':{'type':Sequelize[_0x59c0('0x6')]},'transfererchannel':{'type':Sequelize[_0x59c0('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x59c0('0x6')]},'transferercalleridname':{'type':Sequelize[_0x59c0('0x6')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x59c0('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x59c0('0x6')]},'transferercontext':{'type':Sequelize[_0x59c0('0x6')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x59c0('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0x59c0('0x6')]},'transfereecalleridname':{'type':Sequelize[_0x59c0('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x59c0('0x6')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x59c0('0x6')]},'transfereecontext':{'type':Sequelize[_0x59c0('0x6')]},'transfereeexten':{'type':Sequelize[_0x59c0('0x6')]},'transfereelinkedid':{'type':Sequelize[_0x59c0('0x6')]},'isexternal':{'type':Sequelize[_0x59c0('0x3')]('Yes','No')},'context':{'type':Sequelize[_0x59c0('0x6')]},'extension':{'type':Sequelize[_0x59c0('0x6')]}};
\ No newline at end of file
+var _0xb783=['ENUM','blind','STRING','Yes','moment'];(function(_0x55e98c,_0x1fc60a){var _0x4eb41a=function(_0x1b63ae){while(--_0x1b63ae){_0x55e98c['push'](_0x55e98c['shift']());}};_0x4eb41a(++_0x1fc60a);}(_0xb783,0x72));var _0x3b78=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xb783[_0x1e4360];return _0x31e6b4;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3b78('0x0'));module['exports']={'type':{'type':Sequelize[_0x3b78('0x1')](_0x3b78('0x2'),'attended')},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x3b78('0x3')]},'transferercalleridnum':{'type':Sequelize[_0x3b78('0x3')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x3b78('0x3')]},'transfererconnectedlinename':{'type':Sequelize[_0x3b78('0x3')]},'transfereraccountcode':{'type':Sequelize[_0x3b78('0x3')]},'transferercontext':{'type':Sequelize[_0x3b78('0x3')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x3b78('0x3')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x3b78('0x3')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x3b78('0x3')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x3b78('0x3')]},'transfereecontext':{'type':Sequelize[_0x3b78('0x3')]},'transfereeexten':{'type':Sequelize[_0x3b78('0x3')]},'transfereelinkedid':{'type':Sequelize[_0x3b78('0x3')]},'isexternal':{'type':Sequelize[_0x3b78('0x1')](_0x3b78('0x4'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x3b78('0x3')]}};
\ No newline at end of file
index 7623e09..d363889 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa21a=['rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','limit','undefined','count','set','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x280a32,_0x57580d){var _0x159769=function(_0x307b92){while(--_0x307b92){_0x280a32['push'](_0x280a32['shift']());}};_0x159769(++_0x57580d);}(_0xa21a,0x1d6));var _0xaa21=function(_0x3fbd35,_0x1d6040){_0x3fbd35=_0x3fbd35-0x0;var _0x16b0ae=_0xa21a[_0x3fbd35];return _0x16b0ae;};'use strict';var emlformat=require(_0xaa21('0x0'));var rimraf=require(_0xaa21('0x1'));var zipdir=require(_0xaa21('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaa21('0x3'));var moment=require(_0xaa21('0x4'));var BPromise=require(_0xaa21('0x5'));var Mustache=require(_0xaa21('0x6'));var util=require(_0xaa21('0x7'));var path=require(_0xaa21('0x8'));var sox=require(_0xaa21('0x9'));var csv=require(_0xaa21('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa21('0xb'));var _=require(_0xaa21('0xc'));var squel=require('squel');var crypto=require(_0xaa21('0xd'));var jsforce=require(_0xaa21('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xaa21('0xa'));var querystring=require(_0xaa21('0xf'));var Papa=require(_0xaa21('0x10'));var Redis=require(_0xaa21('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaa21('0x12'));var hardwareService=require(_0xaa21('0x13'));var logger=require('../../config/logger')(_0xaa21('0x14'));var utils=require(_0xaa21('0x15'));var config=require(_0xaa21('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xaa21('0x17'))['db'];function respondWithStatusCode(_0x336a27,_0x521e93){_0x521e93=_0x521e93||0xcc;return function(_0x578d0c){if(_0x578d0c){return _0x336a27['sendStatus'](_0x521e93);}return _0x336a27['status'](_0x521e93)[_0xaa21('0x18')]();};}function respondWithResult(_0x8d50f7,_0x154df2){_0x154df2=_0x154df2||0xc8;return function(_0x18f0a1){if(_0x18f0a1){return _0x8d50f7[_0xaa21('0x19')](_0x154df2)[_0xaa21('0x1a')](_0x18f0a1);}};}function respondWithFilteredResult(_0x265b9b,_0x1ace79){return function(_0x1c6ea1){if(_0x1c6ea1){var _0x18f48c=typeof _0x1ace79[_0xaa21('0x1b')]==='undefined'&&typeof _0x1ace79[_0xaa21('0x1c')]===_0xaa21('0x1d');var _0x2e1fdb=_0x1c6ea1[_0xaa21('0x1e')];var _0xca92ed=_0x18f48c?0x0:_0x1ace79[_0xaa21('0x1b')];var _0x5b03aa=_0x18f48c?_0x1c6ea1[_0xaa21('0x1e')]:_0x1ace79[_0xaa21('0x1b')]+_0x1ace79[_0xaa21('0x1c')];var _0x5b0f22;if(_0x5b03aa>=_0x2e1fdb){_0x5b03aa=_0x2e1fdb;_0x5b0f22=0xc8;}else{_0x5b0f22=0xce;}_0x265b9b[_0xaa21('0x19')](_0x5b0f22);return _0x265b9b[_0xaa21('0x1f')]('Content-Range',_0xca92ed+'-'+_0x5b03aa+'/'+_0x2e1fdb)[_0xaa21('0x1a')](_0x1c6ea1);}return null;};}function patchUpdates(_0x1dea70){return function(_0x259a0c){try{jsonpatch[_0xaa21('0x20')](_0x259a0c,_0x1dea70,!![]);}catch(_0x4b3500){return BPromise['reject'](_0x4b3500);}return _0x259a0c[_0xaa21('0x21')]();};}function saveUpdates(_0xf85514,_0xe0b740){return function(_0x5ad8a3){if(_0x5ad8a3){return _0x5ad8a3[_0xaa21('0x22')](_0xf85514)[_0xaa21('0x23')](function(_0x474da3){return _0x474da3;});}return null;};}function removeEntity(_0x44573e,_0x475623){return function(_0x284e35){if(_0x284e35){return _0x284e35[_0xaa21('0x24')]()['then'](function(){_0x44573e[_0xaa21('0x19')](0xcc)[_0xaa21('0x18')]();});}};}function handleEntityNotFound(_0x2156f2,_0x24a379){return function(_0x382154){if(!_0x382154){_0x2156f2[_0xaa21('0x25')](0x194);}return _0x382154;};}function handleError(_0x1cbafb,_0x5cf13c){_0x5cf13c=_0x5cf13c||0x1f4;return function(_0xef5835){logger[_0xaa21('0x26')](_0xef5835[_0xaa21('0x27')]);if(_0xef5835[_0xaa21('0x28')]){delete _0xef5835[_0xaa21('0x28')];}_0x1cbafb['status'](_0x5cf13c)[_0xaa21('0x29')](_0xef5835);};}exports[_0xaa21('0x2a')]=function(_0x4e8083,_0x4e7a31){var _0x3bf447={},_0x1d0d51={},_0x41bead={'count':0x0,'rows':[]};var _0x3e8d95=_[_0xaa21('0x2b')](db[_0xaa21('0x2c')][_0xaa21('0x2d')],function(_0x1a7a1d){return{'name':_0x1a7a1d[_0xaa21('0x2e')],'type':_0x1a7a1d[_0xaa21('0x2f')][_0xaa21('0x30')]};});_0x1d0d51[_0xaa21('0x31')]=_[_0xaa21('0x2b')](_0x3e8d95,_0xaa21('0x28'));_0x1d0d51[_0xaa21('0x32')]=_[_0xaa21('0x33')](_0x4e8083[_0xaa21('0x32')]);_0x1d0d51[_0xaa21('0x34')]=_[_0xaa21('0x35')](_0x1d0d51[_0xaa21('0x31')],_0x1d0d51[_0xaa21('0x32')]);_0x3bf447['attributes']=_[_0xaa21('0x35')](_0x1d0d51[_0xaa21('0x31')],qs[_0xaa21('0x36')](_0x4e8083[_0xaa21('0x32')][_0xaa21('0x36')]));_0x3bf447[_0xaa21('0x37')]=_0x3bf447[_0xaa21('0x37')][_0xaa21('0x38')]?_0x3bf447[_0xaa21('0x37')]:_0x1d0d51[_0xaa21('0x31')];if(!_0x4e8083['query']['hasOwnProperty'](_0xaa21('0x39'))){_0x3bf447[_0xaa21('0x1c')]=qs['limit'](_0x4e8083['query'][_0xaa21('0x1c')]);_0x3bf447['offset']=qs[_0xaa21('0x1b')](_0x4e8083['query'][_0xaa21('0x1b')]);}_0x3bf447[_0xaa21('0x3a')]=qs[_0xaa21('0x3b')](_0x4e8083[_0xaa21('0x32')][_0xaa21('0x3b')]);_0x3bf447[_0xaa21('0x3c')]=qs[_0xaa21('0x34')](_[_0xaa21('0x3d')](_0x4e8083[_0xaa21('0x32')],_0x1d0d51[_0xaa21('0x34')]),_0x3e8d95);if(_0x4e8083[_0xaa21('0x32')][_0xaa21('0x3e')]){_0x3bf447[_0xaa21('0x3c')]=_[_0xaa21('0x3f')](_0x3bf447['where'],{'$or':_['map'](_0x3e8d95,function(_0x5c6ef5){if(_0x5c6ef5[_0xaa21('0x2f')]!==_0xaa21('0x40')){var _0x5adf1e={};_0x5adf1e[_0x5c6ef5[_0xaa21('0x28')]]={'$like':'%'+_0x4e8083[_0xaa21('0x32')][_0xaa21('0x3e')]+'%'};return _0x5adf1e;}})});}_0x3bf447=_[_0xaa21('0x3f')]({},_0x3bf447,_0x4e8083[_0xaa21('0x41')]);var _0x405d9f={'where':_0x3bf447[_0xaa21('0x3c')]};return db['VoiceTransferReport'][_0xaa21('0x1e')](_0x405d9f)['then'](function(_0x2ed7eb){_0x41bead[_0xaa21('0x1e')]=_0x2ed7eb;if(_0x4e8083[_0xaa21('0x32')][_0xaa21('0x42')]){_0x3bf447[_0xaa21('0x43')]=[{'all':!![]}];}return db[_0xaa21('0x2c')][_0xaa21('0x44')](_0x3bf447);})[_0xaa21('0x23')](function(_0x3c14fd){_0x41bead[_0xaa21('0x45')]=_0x3c14fd;return _0x41bead;})[_0xaa21('0x23')](respondWithFilteredResult(_0x4e7a31,_0x3bf447))[_0xaa21('0x46')](handleError(_0x4e7a31,null));};exports[_0xaa21('0x47')]=function(_0x32346e,_0x46e6b0){var _0x30fe44={'raw':!![],'where':{'id':_0x32346e[_0xaa21('0x48')]['id']}},_0x52147f={};_0x52147f[_0xaa21('0x31')]=_[_0xaa21('0x33')](db[_0xaa21('0x2c')][_0xaa21('0x2d')]);_0x52147f[_0xaa21('0x32')]=_[_0xaa21('0x33')](_0x32346e['query']);_0x52147f[_0xaa21('0x34')]=_[_0xaa21('0x35')](_0x52147f[_0xaa21('0x31')],_0x52147f[_0xaa21('0x32')]);_0x30fe44[_0xaa21('0x37')]=_[_0xaa21('0x35')](_0x52147f[_0xaa21('0x31')],qs[_0xaa21('0x36')](_0x32346e['query'][_0xaa21('0x36')]));_0x30fe44['attributes']=_0x30fe44[_0xaa21('0x37')][_0xaa21('0x38')]?_0x30fe44[_0xaa21('0x37')]:_0x52147f[_0xaa21('0x31')];if(_0x32346e[_0xaa21('0x32')][_0xaa21('0x42')]){_0x30fe44[_0xaa21('0x43')]=[{'all':!![]}];}_0x30fe44=_[_0xaa21('0x3f')]({},_0x30fe44,_0x32346e[_0xaa21('0x41')]);return db['VoiceTransferReport'][_0xaa21('0x49')](_0x30fe44)['then'](handleEntityNotFound(_0x46e6b0,null))[_0xaa21('0x23')](respondWithResult(_0x46e6b0,null))[_0xaa21('0x46')](handleError(_0x46e6b0,null));};exports['create']=function(_0x211115,_0x4e9157){return db['VoiceTransferReport'][_0xaa21('0x4a')](_0x211115[_0xaa21('0x4b')],{})[_0xaa21('0x23')](respondWithResult(_0x4e9157,0xc9))[_0xaa21('0x46')](handleError(_0x4e9157,null));};exports[_0xaa21('0x22')]=function(_0x104b22,_0x1159ce){if(_0x104b22['body']['id']){delete _0x104b22['body']['id'];}return db[_0xaa21('0x2c')][_0xaa21('0x49')]({'where':{'id':_0x104b22[_0xaa21('0x48')]['id']}})['then'](handleEntityNotFound(_0x1159ce,null))['then'](saveUpdates(_0x104b22[_0xaa21('0x4b')],null))[_0xaa21('0x23')](respondWithResult(_0x1159ce,null))['catch'](handleError(_0x1159ce,null));};exports[_0xaa21('0x24')]=function(_0x429891,_0x1571e9){return db['VoiceTransferReport'][_0xaa21('0x49')]({'where':{'id':_0x429891[_0xaa21('0x48')]['id']}})[_0xaa21('0x23')](handleEntityNotFound(_0x1571e9,null))[_0xaa21('0x23')](removeEntity(_0x1571e9,null))[_0xaa21('0x46')](handleError(_0x1571e9,null));};exports[_0xaa21('0x4c')]=function(_0x52735e,_0x51c604){return db[_0xaa21('0x2c')][_0xaa21('0x4c')]()[_0xaa21('0x23')](respondWithResult(_0x51c604,null))['catch'](handleError(_0x51c604,null));};
\ No newline at end of file
+var _0x95c3=['set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceTransferReport','rawAttributes','key','query','model','attributes','fields','length','nolimit','limit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','lodash','squel','crypto','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','end','status','json','offset','undefined','count'];(function(_0x31a37b,_0x826249){var _0x49ae16=function(_0x2e8d52){while(--_0x2e8d52){_0x31a37b['push'](_0x31a37b['shift']());}};_0x49ae16(++_0x826249);}(_0x95c3,0xcd));var _0x395c=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x95c3[_0x4fde08];return _0x12e725;};'use strict';var emlformat=require(_0x395c('0x0'));var rimraf=require(_0x395c('0x1'));var zipdir=require(_0x395c('0x2'));var jsonpatch=require(_0x395c('0x3'));var rp=require(_0x395c('0x4'));var moment=require(_0x395c('0x5'));var BPromise=require(_0x395c('0x6'));var Mustache=require(_0x395c('0x7'));var util=require(_0x395c('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x395c('0x9'));var squel=require(_0x395c('0xa'));var crypto=require(_0x395c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x395c('0xc'));var toCsv=require(_0x395c('0xd'));var querystring=require(_0x395c('0xe'));var Papa=require(_0x395c('0xf'));var Redis=require('ioredis');var authService=require(_0x395c('0x10'));var qs=require(_0x395c('0x11'));var as=require(_0x395c('0x12'));var hardwareService=require(_0x395c('0x13'));var logger=require(_0x395c('0x14'))(_0x395c('0x15'));var utils=require(_0x395c('0x16'));var config=require(_0x395c('0x17'));var licenseUtil=require(_0x395c('0x18'));var db=require(_0x395c('0x19'))['db'];function respondWithStatusCode(_0x4d2942,_0x7982d2){_0x7982d2=_0x7982d2||0xcc;return function(_0x38856b){if(_0x38856b){return _0x4d2942['sendStatus'](_0x7982d2);}return _0x4d2942['status'](_0x7982d2)[_0x395c('0x1a')]();};}function respondWithResult(_0x58a1cc,_0x25bb50){_0x25bb50=_0x25bb50||0xc8;return function(_0x229d28){if(_0x229d28){return _0x58a1cc[_0x395c('0x1b')](_0x25bb50)[_0x395c('0x1c')](_0x229d28);}};}function respondWithFilteredResult(_0x260b76,_0x324cd8){return function(_0x37b9ad){if(_0x37b9ad){var _0x3b077a=typeof _0x324cd8[_0x395c('0x1d')]==='undefined'&&typeof _0x324cd8['limit']===_0x395c('0x1e');var _0x17da91=_0x37b9ad[_0x395c('0x1f')];var _0x48fc6f=_0x3b077a?0x0:_0x324cd8[_0x395c('0x1d')];var _0x1f0518=_0x3b077a?_0x37b9ad['count']:_0x324cd8[_0x395c('0x1d')]+_0x324cd8['limit'];var _0x56f556;if(_0x1f0518>=_0x17da91){_0x1f0518=_0x17da91;_0x56f556=0xc8;}else{_0x56f556=0xce;}_0x260b76['status'](_0x56f556);return _0x260b76[_0x395c('0x20')](_0x395c('0x21'),_0x48fc6f+'-'+_0x1f0518+'/'+_0x17da91)[_0x395c('0x1c')](_0x37b9ad);}return null;};}function patchUpdates(_0xfa87df){return function(_0x4e2fc6){try{jsonpatch[_0x395c('0x22')](_0x4e2fc6,_0xfa87df,!![]);}catch(_0x18073b){return BPromise[_0x395c('0x23')](_0x18073b);}return _0x4e2fc6[_0x395c('0x24')]();};}function saveUpdates(_0x52153f,_0x4539e3){return function(_0x294dda){if(_0x294dda){return _0x294dda[_0x395c('0x25')](_0x52153f)[_0x395c('0x26')](function(_0x30620c){return _0x30620c;});}return null;};}function removeEntity(_0x1adbe5,_0xc1ab06){return function(_0x439a0e){if(_0x439a0e){return _0x439a0e[_0x395c('0x27')]()[_0x395c('0x26')](function(){_0x1adbe5[_0x395c('0x1b')](0xcc)[_0x395c('0x1a')]();});}};}function handleEntityNotFound(_0x292db1,_0x2685ab){return function(_0xcfd890){if(!_0xcfd890){_0x292db1[_0x395c('0x28')](0x194);}return _0xcfd890;};}function handleError(_0x35e7e3,_0x250f5c){_0x250f5c=_0x250f5c||0x1f4;return function(_0xbecc1f){logger[_0x395c('0x29')](_0xbecc1f[_0x395c('0x2a')]);if(_0xbecc1f[_0x395c('0x2b')]){delete _0xbecc1f['name'];}_0x35e7e3[_0x395c('0x1b')](_0x250f5c)[_0x395c('0x2c')](_0xbecc1f);};}exports[_0x395c('0x2d')]=function(_0x5d3da4,_0x5a2ce8){var _0x3772b4={},_0x11c468={},_0x2a077a={'count':0x0,'rows':[]};var _0x34442c=_[_0x395c('0x2e')](db[_0x395c('0x2f')][_0x395c('0x30')],function(_0x395a27){return{'name':_0x395a27['fieldName'],'type':_0x395a27['type'][_0x395c('0x31')]};});_0x11c468['model']=_['map'](_0x34442c,_0x395c('0x2b'));_0x11c468[_0x395c('0x32')]=_['keys'](_0x5d3da4['query']);_0x11c468['filters']=_['intersection'](_0x11c468[_0x395c('0x33')],_0x11c468['query']);_0x3772b4[_0x395c('0x34')]=_['intersection'](_0x11c468['model'],qs[_0x395c('0x35')](_0x5d3da4[_0x395c('0x32')][_0x395c('0x35')]));_0x3772b4[_0x395c('0x34')]=_0x3772b4[_0x395c('0x34')][_0x395c('0x36')]?_0x3772b4[_0x395c('0x34')]:_0x11c468[_0x395c('0x33')];if(!_0x5d3da4[_0x395c('0x32')]['hasOwnProperty'](_0x395c('0x37'))){_0x3772b4[_0x395c('0x38')]=qs['limit'](_0x5d3da4[_0x395c('0x32')][_0x395c('0x38')]);_0x3772b4[_0x395c('0x1d')]=qs[_0x395c('0x1d')](_0x5d3da4['query'][_0x395c('0x1d')]);}_0x3772b4['order']=qs[_0x395c('0x39')](_0x5d3da4[_0x395c('0x32')][_0x395c('0x39')]);_0x3772b4[_0x395c('0x3a')]=qs[_0x395c('0x3b')](_[_0x395c('0x3c')](_0x5d3da4['query'],_0x11c468[_0x395c('0x3b')]),_0x34442c);if(_0x5d3da4[_0x395c('0x32')][_0x395c('0x3d')]){_0x3772b4['where']=_[_0x395c('0x3e')](_0x3772b4[_0x395c('0x3a')],{'$or':_['map'](_0x34442c,function(_0xc915c1){if(_0xc915c1[_0x395c('0x3f')]!==_0x395c('0x40')){var _0x62a5aa={};_0x62a5aa[_0xc915c1[_0x395c('0x2b')]]={'$like':'%'+_0x5d3da4['query'][_0x395c('0x3d')]+'%'};return _0x62a5aa;}})});}_0x3772b4=_['merge']({},_0x3772b4,_0x5d3da4[_0x395c('0x41')]);var _0x9ba532={'where':_0x3772b4['where']};return db[_0x395c('0x2f')]['count'](_0x9ba532)[_0x395c('0x26')](function(_0x7ae930){_0x2a077a['count']=_0x7ae930;if(_0x5d3da4[_0x395c('0x32')][_0x395c('0x42')]){_0x3772b4[_0x395c('0x43')]=[{'all':!![]}];}return db[_0x395c('0x2f')][_0x395c('0x44')](_0x3772b4);})[_0x395c('0x26')](function(_0x360b8e){_0x2a077a[_0x395c('0x45')]=_0x360b8e;return _0x2a077a;})[_0x395c('0x26')](respondWithFilteredResult(_0x5a2ce8,_0x3772b4))[_0x395c('0x46')](handleError(_0x5a2ce8,null));};exports[_0x395c('0x47')]=function(_0x52eacf,_0x1c86a6){var _0x47ce42={'raw':!![],'where':{'id':_0x52eacf[_0x395c('0x48')]['id']}},_0x945bc5={};_0x945bc5['model']=_[_0x395c('0x49')](db[_0x395c('0x2f')]['rawAttributes']);_0x945bc5[_0x395c('0x32')]=_[_0x395c('0x49')](_0x52eacf[_0x395c('0x32')]);_0x945bc5['filters']=_[_0x395c('0x4a')](_0x945bc5[_0x395c('0x33')],_0x945bc5['query']);_0x47ce42['attributes']=_[_0x395c('0x4a')](_0x945bc5[_0x395c('0x33')],qs['fields'](_0x52eacf[_0x395c('0x32')][_0x395c('0x35')]));_0x47ce42[_0x395c('0x34')]=_0x47ce42[_0x395c('0x34')][_0x395c('0x36')]?_0x47ce42['attributes']:_0x945bc5[_0x395c('0x33')];if(_0x52eacf[_0x395c('0x32')][_0x395c('0x42')]){_0x47ce42[_0x395c('0x43')]=[{'all':!![]}];}_0x47ce42=_[_0x395c('0x3e')]({},_0x47ce42,_0x52eacf[_0x395c('0x41')]);return db['VoiceTransferReport']['find'](_0x47ce42)[_0x395c('0x26')](handleEntityNotFound(_0x1c86a6,null))[_0x395c('0x26')](respondWithResult(_0x1c86a6,null))[_0x395c('0x46')](handleError(_0x1c86a6,null));};exports[_0x395c('0x4b')]=function(_0x5706cd,_0x1894fd){return db[_0x395c('0x2f')][_0x395c('0x4b')](_0x5706cd[_0x395c('0x4c')],{})[_0x395c('0x26')](respondWithResult(_0x1894fd,0xc9))[_0x395c('0x46')](handleError(_0x1894fd,null));};exports['update']=function(_0x4bd525,_0x170bc9){if(_0x4bd525[_0x395c('0x4c')]['id']){delete _0x4bd525[_0x395c('0x4c')]['id'];}return db[_0x395c('0x2f')][_0x395c('0x4d')]({'where':{'id':_0x4bd525[_0x395c('0x48')]['id']}})[_0x395c('0x26')](handleEntityNotFound(_0x170bc9,null))[_0x395c('0x26')](saveUpdates(_0x4bd525[_0x395c('0x4c')],null))[_0x395c('0x26')](respondWithResult(_0x170bc9,null))[_0x395c('0x46')](handleError(_0x170bc9,null));};exports[_0x395c('0x27')]=function(_0x33ac3e,_0x47d634){return db[_0x395c('0x2f')]['find']({'where':{'id':_0x33ac3e['params']['id']}})[_0x395c('0x26')](handleEntityNotFound(_0x47d634,null))[_0x395c('0x26')](removeEntity(_0x47d634,null))[_0x395c('0x46')](handleError(_0x47d634,null));};exports[_0x395c('0x4e')]=function(_0x469d59,_0x2cbe0c){return db[_0x395c('0x2f')][_0x395c('0x4e')]()['then'](respondWithResult(_0x2cbe0c,null))[_0x395c('0x46')](handleError(_0x2cbe0c,null));};
\ No newline at end of file
index 4c1e3bd..24875d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x857c=['request-promise','rimraf','../../config/environment','./voiceTransferReport.attributes','define','VoiceTransferReport','lodash','util','api','moment','bluebird'];(function(_0x2d48d9,_0x30f078){var _0x46b272=function(_0x25cabd){while(--_0x25cabd){_0x2d48d9['push'](_0x2d48d9['shift']());}};_0x46b272(++_0x30f078);}(_0x857c,0x1be));var _0xc857=function(_0xa5f5ab,_0x251aa3){_0xa5f5ab=_0xa5f5ab-0x0;var _0xc25c1b=_0x857c[_0xa5f5ab];return _0xc25c1b;};'use strict';var _=require(_0xc857('0x0'));var util=require(_0xc857('0x1'));var logger=require('../../config/logger')(_0xc857('0x2'));var moment=require(_0xc857('0x3'));var BPromise=require(_0xc857('0x4'));var rp=require(_0xc857('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc857('0x6'));var config=require(_0xc857('0x7'));var attributes=require(_0xc857('0x8'));module['exports']=function(_0x39b77d,_0x3e5b8e){return _0x39b77d[_0xc857('0x9')](_0xc857('0xa'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0507=['exports','VoiceTransferReport','report_call_transfer','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./voiceTransferReport.attributes'];(function(_0x285cf1,_0x47e330){var _0x2fea93=function(_0x4129d6){while(--_0x4129d6){_0x285cf1['push'](_0x285cf1['shift']());}};_0x2fea93(++_0x47e330);}(_0x0507,0x1bb));var _0x7050=function(_0x3df233,_0x26445e){_0x3df233=_0x3df233-0x0;var _0x597739=_0x0507[_0x3df233];return _0x597739;};'use strict';var _=require('lodash');var util=require(_0x7050('0x0'));var logger=require(_0x7050('0x1'))('api');var moment=require(_0x7050('0x2'));var BPromise=require(_0x7050('0x3'));var rp=require(_0x7050('0x4'));var fs=require('fs');var path=require(_0x7050('0x5'));var rimraf=require(_0x7050('0x6'));var config=require('../../config/environment');var attributes=require(_0x7050('0x7'));module[_0x7050('0x8')]=function(_0x339fab,_0x5b7bd9){return _0x339fab['define'](_0x7050('0x9'),attributes,{'tableName':_0x7050('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e983664..1704d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb820=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','stringify','lodash','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x55463a,_0x8cd95d){var _0x502582=function(_0x573829){while(--_0x573829){_0x55463a['push'](_0x55463a['shift']());}};_0x502582(++_0x8cd95d);}(_0xb820,0x183));var _0x0b82=function(_0x3c203b,_0x4c5c62){_0x3c203b=_0x3c203b-0x0;var _0x221161=_0xb820[_0x3c203b];return _0x221161;};'use strict';var _=require(_0x0b82('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0b82('0x1'));var fs=require('fs');var Redis=require(_0x0b82('0x2'));var db=require(_0x0b82('0x3'))['db'];var utils=require(_0x0b82('0x4'));var logger=require(_0x0b82('0x5'))(_0x0b82('0x6'));var config=require(_0x0b82('0x7'));var jayson=require(_0x0b82('0x8'));var client=jayson['client'][_0x0b82('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x17642b,_0x5a856b,_0x5345bf){return new BPromise(function(_0x42fdd7,_0x43a701){return client[_0x0b82('0xa')](_0x17642b,_0x5345bf)[_0x0b82('0xb')](function(_0x494be6){logger[_0x0b82('0xc')](_0x0b82('0xd'),_0x5a856b,_0x0b82('0xe'));logger[_0x0b82('0xf')](_0x0b82('0x10'),_0x5a856b,_0x0b82('0xe'),JSON['stringify'](_0x494be6));if(_0x494be6['error']){if(_0x494be6['error'][_0x0b82('0x11')]===0x1f4){logger['error'](_0x0b82('0xd'),_0x5a856b,_0x494be6[_0x0b82('0x12')]['message']);return _0x43a701(_0x494be6['error'][_0x0b82('0x13')]);}logger['error'](_0x0b82('0xd'),_0x5a856b,_0x494be6[_0x0b82('0x12')]['message']);return _0x42fdd7(_0x494be6['error'][_0x0b82('0x13')]);}else{logger[_0x0b82('0xc')](_0x0b82('0xd'),_0x5a856b,_0x0b82('0xe'));_0x42fdd7(_0x494be6[_0x0b82('0x14')][_0x0b82('0x13')]);}})[_0x0b82('0x15')](function(_0x56bcd8){logger[_0x0b82('0x12')](_0x0b82('0xd'),_0x5a856b,_0x56bcd8);_0x43a701(_0x56bcd8);});});}exports[_0x0b82('0x16')]=function(_0x4aa34d){var _0x1fdacc=this;return new Promise(function(_0x25398c,_0x5acbab){return db[_0x0b82('0x17')][_0x0b82('0x18')](_0x4aa34d['body'],{'raw':_0x4aa34d['options']?_0x4aa34d[_0x0b82('0x19')][_0x0b82('0x1a')]===undefined?!![]:![]:!![]})[_0x0b82('0xb')](function(_0x339eda){logger['info'](_0x0b82('0x16'),_0x4aa34d);logger[_0x0b82('0xf')]('CreateVoiceTransferReport',_0x4aa34d,JSON[_0x0b82('0x1b')](_0x339eda));_0x25398c(_0x339eda);})['catch'](function(_0x3ccaa3){logger[_0x0b82('0x12')](_0x0b82('0x16'),_0x3ccaa3[_0x0b82('0x13')],_0x4aa34d);_0x5acbab(_0x1fdacc[_0x0b82('0x12')](0x1f4,_0x3ccaa3[_0x0b82('0x13')]));});});};
\ No newline at end of file
+var _0x852a=['error','code','message','result','catch','VoiceTransferReport','create','raw','CreateVoiceTransferReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3636ea,_0x57bb81){var _0x1471cf=function(_0x4eeb2e){while(--_0x4eeb2e){_0x3636ea['push'](_0x3636ea['shift']());}};_0x1471cf(++_0x57bb81);}(_0x852a,0x101));var _0xa852=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0x852a[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0xa852('0x0'));var util=require(_0xa852('0x1'));var moment=require(_0xa852('0x2'));var BPromise=require(_0xa852('0x3'));var rs=require(_0xa852('0x4'));var fs=require('fs');var Redis=require(_0xa852('0x5'));var db=require(_0xa852('0x6'))['db'];var utils=require(_0xa852('0x7'));var logger=require(_0xa852('0x8'))(_0xa852('0x9'));var config=require(_0xa852('0xa'));var jayson=require(_0xa852('0xb'));var client=jayson[_0xa852('0xc')][_0xa852('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x33d1fd,_0x45b7df,_0x25104d){return new BPromise(function(_0x5aff55,_0xc0a12c){return client[_0xa852('0xe')](_0x33d1fd,_0x25104d)[_0xa852('0xf')](function(_0x10ab15){logger[_0xa852('0x10')](_0xa852('0x11'),_0x45b7df,_0xa852('0x12'));logger[_0xa852('0x13')](_0xa852('0x14'),_0x45b7df,'request\x20sent',JSON[_0xa852('0x15')](_0x10ab15));if(_0x10ab15[_0xa852('0x16')]){if(_0x10ab15[_0xa852('0x16')][_0xa852('0x17')]===0x1f4){logger[_0xa852('0x16')](_0xa852('0x11'),_0x45b7df,_0x10ab15[_0xa852('0x16')]['message']);return _0xc0a12c(_0x10ab15[_0xa852('0x16')][_0xa852('0x18')]);}logger[_0xa852('0x16')]('VoiceTransferReport,\x20%s,\x20%s',_0x45b7df,_0x10ab15[_0xa852('0x16')][_0xa852('0x18')]);return _0x5aff55(_0x10ab15[_0xa852('0x16')][_0xa852('0x18')]);}else{logger[_0xa852('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x45b7df,_0xa852('0x12'));_0x5aff55(_0x10ab15[_0xa852('0x19')][_0xa852('0x18')]);}})[_0xa852('0x1a')](function(_0x397393){logger[_0xa852('0x16')](_0xa852('0x11'),_0x45b7df,_0x397393);_0xc0a12c(_0x397393);});});}exports['CreateVoiceTransferReport']=function(_0x3103ed){var _0x57fdef=this;return new Promise(function(_0x43f21d,_0x55bc41){return db[_0xa852('0x1b')][_0xa852('0x1c')](_0x3103ed['body'],{'raw':_0x3103ed['options']?_0x3103ed['options'][_0xa852('0x1d')]===undefined?!![]:![]:!![]})[_0xa852('0xf')](function(_0x4c0995){logger[_0xa852('0x10')]('CreateVoiceTransferReport',_0x3103ed);logger[_0xa852('0x13')](_0xa852('0x1e'),_0x3103ed,JSON[_0xa852('0x15')](_0x4c0995));_0x43f21d(_0x4c0995);})[_0xa852('0x1a')](function(_0x342f53){logger[_0xa852('0x16')](_0xa852('0x1e'),_0x342f53[_0xa852('0x18')],_0x3103ed);_0x55bc41(_0x57fdef['error'](0x1f4,_0x342f53[_0xa852('0x18')]));});});};
\ No newline at end of file
index 78fa5f9..d0977dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['unhold','/calls','calls','/transfer','transfer','express','Router','../../components/auth/service','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','answer','post','/hold','/unhold'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x70e0,0x17b));var _0x070e=function(_0x125e29,_0x2af5da){_0x125e29=_0x125e29-0x0;var _0x1ebd59=_0x70e0[_0x125e29];return _0x1ebd59;};'use strict';var express=require(_0x070e('0x0'));var router=express[_0x070e('0x1')]();var auth=require(_0x070e('0x2'));var controller=require('./webbar.controller');router['post'](_0x070e('0x3'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0x6')]);router['post'](_0x070e('0x7'),auth['isAuthenticated'](),auth[_0x070e('0x5')](),controller['hangup']);router['post']('/answer',auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0x8')]);router[_0x070e('0x9')](_0x070e('0xa'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller['hold']);router['post'](_0x070e('0xb'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0xc')]);router[_0x070e('0x9')](_0x070e('0xd'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0xe')]);router[_0x070e('0x9')](_0x070e('0xf'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0x070e('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xdace=['unhold','calls','/transfer','transfer','exports','express','../../components/auth/service','./webbar.controller','post','isAuthenticated','isWebrtcLicence','originate','hangup','/answer','/hold','/unhold'];(function(_0x3c7e51,_0x38d61d){var _0xd681e0=function(_0x54137c){while(--_0x54137c){_0x3c7e51['push'](_0x3c7e51['shift']());}};_0xd681e0(++_0x38d61d);}(_0xdace,0xc5));var _0xedac=function(_0x152121,_0x120c53){_0x152121=_0x152121-0x0;var _0x592a85=_0xdace[_0x152121];return _0x592a85;};'use strict';var express=require(_0xedac('0x0'));var router=express['Router']();var auth=require(_0xedac('0x1'));var controller=require(_0xedac('0x2'));router[_0xedac('0x3')]('/originate',auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0x6')]);router[_0xedac('0x3')]('/hangup',auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0x7')]);router['post'](_0xedac('0x8'),auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller['answer']);router[_0xedac('0x3')](_0xedac('0x9'),auth[_0xedac('0x4')](),auth['isWebrtcLicence'](),controller['hold']);router[_0xedac('0x3')](_0xedac('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xedac('0xb')]);router[_0xedac('0x3')]('/calls',auth[_0xedac('0x4')](),auth['isWebrtcLicence'](),controller[_0xedac('0xc')]);router[_0xedac('0x3')](_0xedac('0xd'),auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0xe')]);module[_0xedac('0xf')]=router;
\ No newline at end of file
index 925aad2..01bbf8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9b=['rows','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','info','user:%s','webbar:originate','json','originate\x20executed!','catch','hangup\x20fired:','entityFound:','format','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','all','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','lodash','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','stringify','log','handleError:','stack','name','status','send','NotFound','request','error','code','message','findOne','agent','then','VoiceChannels','filter'];(function(_0x38e06e,_0x243644){var _0x259eb8=function(_0x17f9b6){while(--_0x17f9b6){_0x38e06e['push'](_0x38e06e['shift']());}};_0x259eb8(++_0x243644);}(_0x9b9b,0x114));var _0xb9b9=function(_0x178f27,_0x26e5b0){_0x178f27=_0x178f27-0x0;var _0x1bef17=_0x9b9b[_0x178f27];return _0x1bef17;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xb9b9('0x0'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0xb9b9('0x1'));var BPromise=require(_0xb9b9('0x2'));var jayson=require(_0xb9b9('0x3'));var amiClient=jayson[_0xb9b9('0x4')][_0xb9b9('0x5')]({'port':0x232a});var logger=require(_0xb9b9('0x6'))(_0xb9b9('0x7'));var Redis=require(_0xb9b9('0x8'));config[_0xb9b9('0x9')]=_[_0xb9b9('0xa')](config[_0xb9b9('0x9')],{'host':_0xb9b9('0xb'),'port':0x18eb});var io=require(_0xb9b9('0xc'))(new Redis(config[_0xb9b9('0x9')]));var Schema=require(_0xb9b9('0xd'));var originateValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xb9b9('0xf')]},'callerId':{'type':_0xb9b9('0x10')},'callbackUrl':{'type':_0xb9b9('0x10')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':_0xb9b9('0x10'),'required':[!![],_0xb9b9('0x12')]},'transferNumber':{'type':_0xb9b9('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]}});function emit(_0x3fd09c,_0x42a55f,_0x2b2e3d){logger['info'](_0x3fd09c,_0x42a55f,JSON[_0xb9b9('0x13')](_0x2b2e3d));io['to'](_0x3fd09c)['emit'](_0x42a55f,_0x2b2e3d);}function handleError(_0x403a5b){return function(_0x3e6d23){console[_0xb9b9('0x14')](_0xb9b9('0x15'),_0x3e6d23,_0x3e6d23 instanceof RangeError);logger['error'](_0x3e6d23[_0xb9b9('0x16')]);if(_0x3e6d23 instanceof RangeError){if(_0x3e6d23[_0xb9b9('0x17')]){delete _0x3e6d23[_0xb9b9('0x17')];}_0x403a5b[_0xb9b9('0x18')](0x194)[_0xb9b9('0x19')](_0x3e6d23);}else{if(_0x3e6d23[_0xb9b9('0x17')]){delete _0x3e6d23[_0xb9b9('0x17')];}_0x403a5b[_0xb9b9('0x18')](0x1f4)[_0xb9b9('0x19')](_0x3e6d23);}};}function checkError(){return function(_0x47d3e3){if(!_0x47d3e3){throw new RangeError(_0xb9b9('0x1a'));}return _0x47d3e3;};}function respondWithRpcPromise(_0x1246b9,_0x1554d0){return new BPromise(function(_0x4e33a0,_0x10b7e1){var _0xe1e1d7=amiClient;return _0xe1e1d7[_0xb9b9('0x1b')](_0x1246b9,_0x1554d0)['then'](function(_0x9898bc){if(_0x9898bc[_0xb9b9('0x1c')]){if(_0x9898bc['error'][_0xb9b9('0x1d')]===0x1f4){return _0x10b7e1(_0x9898bc[_0xb9b9('0x1c')][_0xb9b9('0x1e')]);}return _0x4e33a0(_0x9898bc[_0xb9b9('0x1c')][_0xb9b9('0x1e')]);}else{_0x4e33a0(_0x9898bc['result']);}})['catch'](function(_0x33ab82){_0x10b7e1(_0x33ab82);});});}function getAgent(_0x426f2c){return db['User'][_0xb9b9('0x1f')]({'where':{'id':_0x426f2c,'role':_0xb9b9('0x20')}})[_0xb9b9('0x21')](checkError());}function getAgentCheckSession(_0x21f68f,_0x125f6c){return new BPromise(function(_0x54bf18,_0x388042){var _0x554850=respondWithRpcPromise(_0xb9b9('0x22'));var _0xe28f3c=getAgent(_0x21f68f);Promise['all']([_0x554850,_0xe28f3c])[_0xb9b9('0x21')](function(_0x31b509){var _0x17a6f6=_0x31b509[0x0];var _0x5eb860=_0x31b509[0x1];var _0x16df87=_[_0xb9b9('0x23')](_0x17a6f6[_0xb9b9('0x24')],function(_0x300453){return _0x300453['UserId']==_0x5eb860['id']&&_0x300453[_0xb9b9('0x25')]==_0x125f6c;});if(_0x16df87[_0xb9b9('0x26')]==0x1){_0x54bf18(_0x5eb860);}else{_0x388042(new RangeError('sessionId\x20'+_0x125f6c+_0xb9b9('0x27')));}});});}exports[_0xb9b9('0x28')]=function(_0x247e8d,_0xc47845){logger['info'](_0xb9b9('0x29'),_0x247e8d[_0xb9b9('0x2a')]);var _0x28e2da=originateValidation[_0xb9b9('0xd')](_0x247e8d['body']);if(_0x28e2da[_0xb9b9('0x26')]>0x0){return _0xc47845[_0xb9b9('0x18')](0x190)['json'](_0x28e2da);}var _0x126fe2=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0xa680b5=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2c')];var _0x5e10c9=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2d')];var _0x48bcd2=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2e')];return getAgent(_0x126fe2)[_0xb9b9('0x21')](function(_0x5837c0){logger[_0xb9b9('0x2f')]('entityFound:',_0x5837c0[_0xb9b9('0x17')]);emit(util['format'](_0xb9b9('0x30'),_0x5837c0[_0xb9b9('0x17')]),_0xb9b9('0x31'),{'callNumber':_0xa680b5,'callerId':_0x5e10c9,'callbackUrl':_0x48bcd2});return _0xc47845[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x33')});})[_0xb9b9('0x34')](handleError(_0xc47845));};exports['hangup']=function(_0x57396a,_0xb54d68){logger[_0xb9b9('0x2f')](_0xb9b9('0x35'),_0x57396a['body']);var _0x29c60f=hangupValidation['validate'](_0x57396a[_0xb9b9('0x2a')]);if(_0x29c60f[_0xb9b9('0x26')]>0x0){return _0xb54d68[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0x29c60f);}var _0x46abe7=_0x57396a[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x1eb1b4=_0x57396a[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x46abe7)['then'](function(_0xf484fd){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0xf484fd[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0xf484fd[_0xb9b9('0x17')]),_0xb9b9('0x38'),{'sessionId':_0x1eb1b4});return _0xb54d68[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':'hangup\x20executed!'});})[_0xb9b9('0x34')](handleError(_0xb54d68));};exports[_0xb9b9('0x39')]=function(_0x21307e,_0x386a6c){logger['info'](_0xb9b9('0x3a'),_0x21307e['body']);var _0x5b439e=answerValidation[_0xb9b9('0xd')](_0x21307e[_0xb9b9('0x2a')]);if(_0x5b439e['length']>0x0){return _0x386a6c['status'](0x190)[_0xb9b9('0x32')](_0x5b439e);}var _0x1a5888=_0x21307e[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x493786=_0x21307e[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x1a5888)[_0xb9b9('0x21')](function(_0x53483d){logger['info'](_0xb9b9('0x36'),_0x53483d['name']);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x53483d[_0xb9b9('0x17')]),_0xb9b9('0x3b'),{'sessionId':_0x493786});return _0x386a6c['status'](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x3c')});})[_0xb9b9('0x34')](handleError(_0x386a6c));};exports[_0xb9b9('0x3d')]=function(_0x2af5bf,_0x2bdbb5){logger[_0xb9b9('0x2f')](_0xb9b9('0x3e'),_0x2af5bf[_0xb9b9('0x2a')]);var _0x2fe8e2=holdValidation[_0xb9b9('0xd')](_0x2af5bf[_0xb9b9('0x2a')]);if(_0x2fe8e2['length']>0x0){return _0x2bdbb5[_0xb9b9('0x18')](0x190)['json'](_0x2fe8e2);}var _0x8254f9=_0x2af5bf[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x1ad24d=_0x2af5bf['body'][_0xb9b9('0x25')];return getAgent(_0x8254f9)['then'](function(_0x2b3e22){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x2b3e22[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x2b3e22[_0xb9b9('0x17')]),_0xb9b9('0x3f'),{'sessionId':_0x1ad24d});return _0x2bdbb5[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x40')});})['catch'](handleError(_0x2bdbb5));};exports['unhold']=function(_0x4da7d8,_0x124b54){logger['info'](_0xb9b9('0x41'),_0x4da7d8[_0xb9b9('0x2a')]);var _0x3a9d1b=unholdValidation[_0xb9b9('0xd')](_0x4da7d8['body']);if(_0x3a9d1b[_0xb9b9('0x26')]>0x0){return _0x124b54[_0xb9b9('0x18')](0x190)['json'](_0x3a9d1b);}var _0x27a9ed=_0x4da7d8[_0xb9b9('0x2a')]['userId'];var _0x50f2e0=_0x4da7d8[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x27a9ed)[_0xb9b9('0x21')](function(_0x4d5116){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x4d5116['name']);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x4d5116[_0xb9b9('0x17')]),_0xb9b9('0x42'),{'sessionId':_0x50f2e0});return _0x124b54['status'](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x43')});})[_0xb9b9('0x34')](handleError(_0x124b54));};exports['calls']=function(_0x190e09,_0x2e6db1){logger[_0xb9b9('0x2f')](_0xb9b9('0x44'),_0x2e6db1[_0xb9b9('0x2a')]);var _0x49956d=callsValidation['validate'](_0x190e09[_0xb9b9('0x2a')]);if(_0x49956d[_0xb9b9('0x26')]>0x0){return _0x2e6db1[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0x49956d);}var _0x3331f0=_0x190e09['body'][_0xb9b9('0x2b')];var _0x30e19e=respondWithRpcPromise(_0xb9b9('0x22'));var _0x340c73=getAgent(_0x3331f0);return Promise[_0xb9b9('0x45')]([_0x30e19e,_0x340c73])['then'](function(_0x3741c1){var _0x2da6ad=_0x3741c1[0x0];var _0x1a34b6=_0x3741c1[0x1];var _0x1e38f5=_['filter'](_0x2da6ad[_0xb9b9('0x24')],function(_0x5c9d1d){return _0x5c9d1d[_0xb9b9('0x46')]==_0x1a34b6['id'];});return _0x2e6db1[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'count':_0x1e38f5[_0xb9b9('0x26')],'rows':_0x1e38f5});})[_0xb9b9('0x34')](handleError(_0x2e6db1));};exports[_0xb9b9('0x47')]=function(_0x1f19b2,_0x24ae48){logger[_0xb9b9('0x2f')](_0xb9b9('0x48'),_0x1f19b2['body']);var _0xac7b51=conferenceValidation[_0xb9b9('0xd')](_0x1f19b2[_0xb9b9('0x2a')]);if(_0xac7b51['length']>0x0){return _0x24ae48[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0xac7b51);}var _0x412a7b=_0x1f19b2[_0xb9b9('0x2a')][_0xb9b9('0x2b')];return getAgent(_0x412a7b)[_0xb9b9('0x21')](function(_0x564008){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x564008[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x564008[_0xb9b9('0x17')]),_0xb9b9('0x49'));return _0x24ae48[_0xb9b9('0x18')](0xc8)['json']({'error':![],'message':_0xb9b9('0x4a')});})[_0xb9b9('0x34')](handleError(_0x24ae48));};exports[_0xb9b9('0x4b')]=function(_0x5823ac,_0x3c2830){logger[_0xb9b9('0x2f')]('transfer\x20fired:',_0x5823ac[_0xb9b9('0x2a')]);var _0x35c05b=transferValidation[_0xb9b9('0xd')](_0x5823ac[_0xb9b9('0x2a')]);if(_0x35c05b[_0xb9b9('0x26')]>0x0){return _0x3c2830[_0xb9b9('0x18')](0x190)['json'](_0x35c05b);}var _0x2be3c7=_0x5823ac[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x21ed42=_0x5823ac[_0xb9b9('0x2a')]['sessionId'];var _0x4a7536=_0x5823ac[_0xb9b9('0x2a')][_0xb9b9('0x4c')];return getAgent(_0x2be3c7)[_0xb9b9('0x21')](function(_0x53159a){logger[_0xb9b9('0x2f')]('entityFound:',_0x53159a[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x53159a[_0xb9b9('0x17')]),_0xb9b9('0x4d'),{'sessionId':_0x21ed42,'transferNumber':_0x4a7536});return _0x3c2830[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x3c2830));};
\ No newline at end of file
+var _0x2bc6=['path','lodash','../../mysqldb','client','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','status','send','name','NotFound','request','then','code','message','catch','User','findOne','VoiceChannels','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','validate','callerId','format','user:%s','json','originate\x20executed!','hangup\x20fired:','userId','entityFound:','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','all','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!'];(function(_0x542a4e,_0x23f7ef){var _0x11d75d=function(_0x12c1c7){while(--_0x12c1c7){_0x542a4e['push'](_0x542a4e['shift']());}};_0x11d75d(++_0x23f7ef);}(_0x2bc6,0x163));var _0x62bc=function(_0x19e2ad,_0x5c6a4e){_0x19e2ad=_0x19e2ad-0x0;var _0x28ca7b=_0x2bc6[_0x19e2ad];return _0x28ca7b;};'use strict';var path=require(_0x62bc('0x0'));var fs=require('fs');var _=require(_0x62bc('0x1'));var db=require(_0x62bc('0x2'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require('bluebird');var jayson=require('jayson/promise');var amiClient=jayson[_0x62bc('0x3')]['http']({'port':0x232a});var logger=require(_0x62bc('0x4'))(_0x62bc('0x5'));var Redis=require('ioredis');config[_0x62bc('0x6')]=_[_0x62bc('0x7')](config[_0x62bc('0x6')],{'host':_0x62bc('0x8'),'port':0x18eb});var io=require(_0x62bc('0x9'))(new Redis(config[_0x62bc('0x6')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'callNumber':{'type':_0x62bc('0xc'),'required':[!![],_0x62bc('0xd')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x62bc('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':_0x62bc('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':_0x62bc('0xc'),'required':[!![],_0x62bc('0xe')]},'transferNumber':{'type':'string','required':[!![],_0x62bc('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x62bc('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x39c5e0,_0x2d6820,_0x5bb569){logger[_0x62bc('0x10')](_0x39c5e0,_0x2d6820,JSON[_0x62bc('0x11')](_0x5bb569));io['to'](_0x39c5e0)[_0x62bc('0x12')](_0x2d6820,_0x5bb569);}function handleError(_0x1e2405){return function(_0xc95407){console[_0x62bc('0x13')](_0x62bc('0x14'),_0xc95407,_0xc95407 instanceof RangeError);logger[_0x62bc('0x15')](_0xc95407[_0x62bc('0x16')]);if(_0xc95407 instanceof RangeError){if(_0xc95407['name']){delete _0xc95407['name'];}_0x1e2405[_0x62bc('0x17')](0x194)[_0x62bc('0x18')](_0xc95407);}else{if(_0xc95407[_0x62bc('0x19')]){delete _0xc95407['name'];}_0x1e2405[_0x62bc('0x17')](0x1f4)['send'](_0xc95407);}};}function checkError(){return function(_0x30e7d9){if(!_0x30e7d9){throw new RangeError(_0x62bc('0x1a'));}return _0x30e7d9;};}function respondWithRpcPromise(_0x1b6689,_0x5e2e9b){return new BPromise(function(_0x3b8644,_0x28757d){var _0xae87bf=amiClient;return _0xae87bf[_0x62bc('0x1b')](_0x1b6689,_0x5e2e9b)[_0x62bc('0x1c')](function(_0x3b2eb0){if(_0x3b2eb0['error']){if(_0x3b2eb0[_0x62bc('0x15')][_0x62bc('0x1d')]===0x1f4){return _0x28757d(_0x3b2eb0[_0x62bc('0x15')][_0x62bc('0x1e')]);}return _0x3b8644(_0x3b2eb0[_0x62bc('0x15')]['message']);}else{_0x3b8644(_0x3b2eb0['result']);}})[_0x62bc('0x1f')](function(_0x58e76a){_0x28757d(_0x58e76a);});});}function getAgent(_0x32e749){return db[_0x62bc('0x20')][_0x62bc('0x21')]({'where':{'id':_0x32e749,'role':'agent'}})[_0x62bc('0x1c')](checkError());}function getAgentCheckSession(_0x19e689,_0x32e03c){return new BPromise(function(_0x5c03ac,_0x5b26ce){var _0x641626=respondWithRpcPromise(_0x62bc('0x22'));var _0x23817c=getAgent(_0x19e689);Promise['all']([_0x641626,_0x23817c])[_0x62bc('0x1c')](function(_0x1f2985){var _0x44600f=_0x1f2985[0x0];var _0x444267=_0x1f2985[0x1];var _0x5a9302=_[_0x62bc('0x23')](_0x44600f['rows'],function(_0x26701b){return _0x26701b[_0x62bc('0x24')]==_0x444267['id']&&_0x26701b[_0x62bc('0x25')]==_0x32e03c;});if(_0x5a9302[_0x62bc('0x26')]==0x1){_0x5c03ac(_0x444267);}else{_0x5b26ce(new RangeError(_0x62bc('0x27')+_0x32e03c+_0x62bc('0x28')));}});});}exports[_0x62bc('0x29')]=function(_0x12d443,_0x406063){logger[_0x62bc('0x10')](_0x62bc('0x2a'),_0x12d443[_0x62bc('0x2b')]);var _0x1668ab=originateValidation[_0x62bc('0x2c')](_0x12d443[_0x62bc('0x2b')]);if(_0x1668ab[_0x62bc('0x26')]>0x0){return _0x406063[_0x62bc('0x17')](0x190)['json'](_0x1668ab);}var _0x32e3a9=_0x12d443['body']['userId'];var _0x2823ef=_0x12d443['body']['callNumber'];var _0x512dac=_0x12d443[_0x62bc('0x2b')][_0x62bc('0x2d')];var _0x26e043=_0x12d443['body']['callbackUrl'];return getAgent(_0x32e3a9)['then'](function(_0x3c938d){logger[_0x62bc('0x10')]('entityFound:',_0x3c938d['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3c938d[_0x62bc('0x19')]),'webbar:originate',{'callNumber':_0x2823ef,'callerId':_0x512dac,'callbackUrl':_0x26e043});return _0x406063[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x31')});})[_0x62bc('0x1f')](handleError(_0x406063));};exports['hangup']=function(_0x42a777,_0x2caa71){logger['info'](_0x62bc('0x32'),_0x42a777[_0x62bc('0x2b')]);var _0x24dbbe=hangupValidation[_0x62bc('0x2c')](_0x42a777['body']);if(_0x24dbbe[_0x62bc('0x26')]>0x0){return _0x2caa71['status'](0x190)[_0x62bc('0x30')](_0x24dbbe);}var _0x19a6e2=_0x42a777[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x5c0d67=_0x42a777[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0x19a6e2)[_0x62bc('0x1c')](function(_0x176b1f){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x176b1f[_0x62bc('0x19')]);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x176b1f[_0x62bc('0x19')]),_0x62bc('0x35'),{'sessionId':_0x5c0d67});return _0x2caa71['status'](0xc8)['json']({'error':![],'message':_0x62bc('0x36')});})[_0x62bc('0x1f')](handleError(_0x2caa71));};exports['answer']=function(_0x1cf503,_0x366505){logger[_0x62bc('0x10')](_0x62bc('0x37'),_0x1cf503[_0x62bc('0x2b')]);var _0x5f3752=answerValidation[_0x62bc('0x2c')](_0x1cf503[_0x62bc('0x2b')]);if(_0x5f3752['length']>0x0){return _0x366505['status'](0x190)[_0x62bc('0x30')](_0x5f3752);}var _0xdbd9ee=_0x1cf503[_0x62bc('0x2b')]['userId'];var _0x185423=_0x1cf503[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0xdbd9ee)[_0x62bc('0x1c')](function(_0x467d22){logger[_0x62bc('0x10')]('entityFound:',_0x467d22[_0x62bc('0x19')]);emit(util['format'](_0x62bc('0x2f'),_0x467d22[_0x62bc('0x19')]),_0x62bc('0x38'),{'sessionId':_0x185423});return _0x366505['status'](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x366505));};exports['hold']=function(_0x10ea2e,_0x10ffa0){logger['info']('hold\x20fired:',_0x10ea2e['body']);var _0x4ce5fa=holdValidation[_0x62bc('0x2c')](_0x10ea2e[_0x62bc('0x2b')]);if(_0x4ce5fa[_0x62bc('0x26')]>0x0){return _0x10ffa0[_0x62bc('0x17')](0x190)['json'](_0x4ce5fa);}var _0x3834b2=_0x10ea2e[_0x62bc('0x2b')]['userId'];var _0x1c0026=_0x10ea2e['body'][_0x62bc('0x25')];return getAgent(_0x3834b2)[_0x62bc('0x1c')](function(_0x17e0ec){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x17e0ec[_0x62bc('0x19')]);emit(util[_0x62bc('0x2e')]('user:%s',_0x17e0ec[_0x62bc('0x19')]),_0x62bc('0x39'),{'sessionId':_0x1c0026});return _0x10ffa0['status'](0xc8)[_0x62bc('0x30')]({'error':![],'message':'hold\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x10ffa0));};exports[_0x62bc('0x3a')]=function(_0x4bec08,_0x6c2969){logger[_0x62bc('0x10')](_0x62bc('0x3b'),_0x4bec08['body']);var _0xed0bef=unholdValidation[_0x62bc('0x2c')](_0x4bec08[_0x62bc('0x2b')]);if(_0xed0bef[_0x62bc('0x26')]>0x0){return _0x6c2969[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0xed0bef);}var _0xe9ea36=_0x4bec08[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x1fb6d3=_0x4bec08[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0xe9ea36)[_0x62bc('0x1c')](function(_0x3bb89a){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x3bb89a['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3bb89a[_0x62bc('0x19')]),_0x62bc('0x3c'),{'sessionId':_0x1fb6d3});return _0x6c2969[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x3d')});})[_0x62bc('0x1f')](handleError(_0x6c2969));};exports[_0x62bc('0x3e')]=function(_0x4142dd,_0x2f2322){logger[_0x62bc('0x10')]('calls\x20fired:',_0x2f2322[_0x62bc('0x2b')]);var _0x50d761=callsValidation[_0x62bc('0x2c')](_0x4142dd[_0x62bc('0x2b')]);if(_0x50d761[_0x62bc('0x26')]>0x0){return _0x2f2322[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0x50d761);}var _0xb6e13e=_0x4142dd[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x4934ce=respondWithRpcPromise('VoiceChannels');var _0xd35ce2=getAgent(_0xb6e13e);return Promise[_0x62bc('0x3f')]([_0x4934ce,_0xd35ce2])[_0x62bc('0x1c')](function(_0x56bccf){var _0x221681=_0x56bccf[0x0];var _0x1325a4=_0x56bccf[0x1];var _0x14064d=_[_0x62bc('0x23')](_0x221681['rows'],function(_0x19e990){return _0x19e990[_0x62bc('0x24')]==_0x1325a4['id'];});return _0x2f2322[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'count':_0x14064d[_0x62bc('0x26')],'rows':_0x14064d});})[_0x62bc('0x1f')](handleError(_0x2f2322));};exports[_0x62bc('0x40')]=function(_0x4f196a,_0x32d424){logger[_0x62bc('0x10')](_0x62bc('0x41'),_0x4f196a['body']);var _0x4a56b7=conferenceValidation[_0x62bc('0x2c')](_0x4f196a[_0x62bc('0x2b')]);if(_0x4a56b7[_0x62bc('0x26')]>0x0){return _0x32d424['status'](0x190)[_0x62bc('0x30')](_0x4a56b7);}var _0x579c0c=_0x4f196a[_0x62bc('0x2b')][_0x62bc('0x33')];return getAgent(_0x579c0c)['then'](function(_0x3884b0){logger['info'](_0x62bc('0x34'),_0x3884b0['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3884b0[_0x62bc('0x19')]),_0x62bc('0x42'));return _0x32d424[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':'conference\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x32d424));};exports[_0x62bc('0x43')]=function(_0x2e28e4,_0x4e5478){logger[_0x62bc('0x10')](_0x62bc('0x44'),_0x2e28e4[_0x62bc('0x2b')]);var _0x132509=transferValidation['validate'](_0x2e28e4[_0x62bc('0x2b')]);if(_0x132509[_0x62bc('0x26')]>0x0){return _0x4e5478[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0x132509);}var _0x31d5f0=_0x2e28e4['body']['userId'];var _0x280f73=_0x2e28e4['body'][_0x62bc('0x25')];var _0x18779a=_0x2e28e4['body'][_0x62bc('0x45')];return getAgent(_0x31d5f0)['then'](function(_0x2a3599){logger['info'](_0x62bc('0x34'),_0x2a3599['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x2a3599[_0x62bc('0x19')]),'webbar:transfer',{'sessionId':_0x280f73,'transferNumber':_0x18779a});return _0x4e5478[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x46')});})[_0x62bc('0x1f')](handleError(_0x4e5478));};
\ No newline at end of file
index bf9880b..ed390e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['addAnswer','addAgents','/:id/notify','notify','update','destroy','removeDispositions','delete','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','create'];(function(_0x4f424e,_0x48b5fd){var _0xc5654d=function(_0x4a5313){while(--_0x4a5313){_0x4f424e['push'](_0x4f424e['shift']());}};_0xc5654d(++_0x48b5fd);}(_0x1967,0x173));var _0x7196=function(_0x1166dc,_0x2d31d8){_0x1166dc=_0x1166dc-0x0;var _0x433f2e=_0x1967[_0x1166dc];return _0x433f2e;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0xc')](_0x7196('0x11'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x7196('0xc')](_0x7196('0x12'),auth[_0x7196('0xa')](),controller[_0x7196('0x13')]);router[_0x7196('0xc')](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x15')]);router[_0x7196('0xc')](_0x7196('0x16'),auth[_0x7196('0xa')](),controller['getApplications']);router[_0x7196('0x17')]('/',auth[_0x7196('0xa')](),controller[_0x7196('0x18')]);router[_0x7196('0x17')]('/:id/dispositions',auth[_0x7196('0xa')](),controller['addDisposition']);router[_0x7196('0x17')](_0x7196('0x12'),auth[_0x7196('0xa')](),controller[_0x7196('0x19')]);router[_0x7196('0x17')](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x1a')]);router[_0x7196('0x17')](_0x7196('0x16'),auth[_0x7196('0xa')](),controller['addApplications']);router['post'](_0x7196('0x1b'),controller[_0x7196('0x1c')]);router[_0x7196('0x17')]('/:id/send',auth[_0x7196('0xa')](),controller['send']);router['put'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x1d')]);router['delete']('/:id',auth[_0x7196('0xa')](),controller[_0x7196('0x1e')]);router['delete'](_0x7196('0x11'),auth[_0x7196('0xa')](),controller[_0x7196('0x1f')]);router[_0x7196('0x20')](_0x7196('0x12'),auth['isAuthenticated'](),controller[_0x7196('0x21')]);router['delete'](_0x7196('0x14'),auth[_0x7196('0xa')](),controller[_0x7196('0x22')]);module[_0x7196('0x23')]=router;
\ No newline at end of file
+var _0xda2d=['/:id','removeDispositions','removeAnswers','/:id/users','removeAgents','exports','util','path','connect-timeout','express','Router','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','post','create','addDisposition','addAnswer','addApplications','/:id/notify','notify','/:id/send','send','put','delete'];(function(_0x25b140,_0x38945a){var _0x546567=function(_0xa3f30a){while(--_0xa3f30a){_0x25b140['push'](_0x25b140['shift']());}};_0x546567(++_0x38945a);}(_0xda2d,0x102));var _0xdda2=function(_0x2c8d9e,_0x145640){_0x2c8d9e=_0x2c8d9e-0x0;var _0x196c80=_0xda2d[_0x2c8d9e];return _0x196c80;};'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['get'](_0xdda2('0xd'),auth[_0xdda2('0x8')](),controller[_0xdda2('0xe')]);router[_0xdda2('0x7')](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x10')]);router[_0xdda2('0x7')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xdda2('0x7')](_0xdda2('0x11'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x12')]);router[_0xdda2('0x13')]('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0x14')]);router['post'](_0xdda2('0xd'),auth['isAuthenticated'](),controller[_0xdda2('0x15')]);router[_0xdda2('0x13')](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x16')]);router['post']('/:id/users',auth[_0xdda2('0x8')](),controller['addAgents']);router[_0xdda2('0x13')](_0xdda2('0x11'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x17')]);router[_0xdda2('0x13')](_0xdda2('0x18'),controller[_0xdda2('0x19')]);router[_0xdda2('0x13')](_0xdda2('0x1a'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x1b')]);router[_0xdda2('0x1c')]('/:id',auth[_0xdda2('0x8')](),controller['update']);router[_0xdda2('0x1d')](_0xdda2('0x1e'),auth[_0xdda2('0x8')](),controller['destroy']);router[_0xdda2('0x1d')]('/:id/dispositions',auth[_0xdda2('0x8')](),controller[_0xdda2('0x1f')]);router['delete'](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x20')]);router[_0xdda2('0x1d')](_0xdda2('0x21'),auth['isAuthenticated'](),controller[_0xdda2('0x22')]);module[_0xdda2('0x23')]=router;
\ No newline at end of file
index fb24566..0db6760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eb7=['ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x42b448,_0x112d6f){var _0x5c929c=function(_0x39fd42){while(--_0x39fd42){_0x42b448['push'](_0x42b448['shift']());}};_0x5c929c(++_0x112d6f);}(_0x6eb7,0x19b));var _0x76eb=function(_0x26324c,_0x5f3c37){_0x26324c=_0x26324c-0x0;var _0xe83254=_0x6eb7[_0x26324c];return _0xe83254;};'use strict';var Sequelize=require(_0x76eb('0x0'));var rs=require(_0x76eb('0x1'));module[_0x76eb('0x2')]={'name':{'type':Sequelize[_0x76eb('0x3')],'unique':_0x76eb('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x76eb('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x76eb('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x76eb('0x3')]},'type':{'type':Sequelize[_0x76eb('0x5')](_0x76eb('0x6'),'sinch')},'accountSid':{'type':Sequelize[_0x76eb('0x3')]},'baseUrl':{'type':Sequelize[_0x76eb('0x3')]},'authToken':{'type':Sequelize[_0x76eb('0x3')]},'notificationTemplate':{'type':Sequelize[_0x76eb('0x7')],'defaultValue':function(){return _0x76eb('0x8');}},'notificationSound':{'type':Sequelize[_0x76eb('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x76eb('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x76eb('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x76eb('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x76eb('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x76eb('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x76eb('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x76eb('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x76eb('0x9')],'defaultValue':![],'comment':_0x76eb('0xc'),'set':function(_0x8d0c0b){if(!_0x8d0c0b){this[_0x76eb('0xd')](_0x76eb('0xe'),null);}this['setDataValue'](_0x76eb('0xf'),_0x8d0c0b);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd9a6=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','STRING','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x4325d3,_0x1fc2f7){var _0xe96dae=function(_0x2eaa5e){while(--_0x2eaa5e){_0x4325d3['push'](_0x4325d3['shift']());}};_0xe96dae(++_0x1fc2f7);}(_0xd9a6,0x111));var _0x6d9a=function(_0x33f331,_0x5e8273){_0x33f331=_0x33f331-0x0;var _0x456425=_0xd9a6[_0x33f331];return _0x456425;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x6d9a('0x0'));module[_0x6d9a('0x1')]={'name':{'type':Sequelize[_0x6d9a('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x6d9a('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x6d9a('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x6d9a('0x3')]();}},'phone':{'type':Sequelize[_0x6d9a('0x2')]},'type':{'type':Sequelize[_0x6d9a('0x4')](_0x6d9a('0x5'),_0x6d9a('0x6'))},'accountSid':{'type':Sequelize[_0x6d9a('0x2')]},'baseUrl':{'type':Sequelize[_0x6d9a('0x2')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x6d9a('0x7')],'defaultValue':function(){return _0x6d9a('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x6d9a('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6d9a('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6d9a('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6d9a('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6d9a('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6d9a('0xa')],'comment':_0x6d9a('0xb')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2a742c){if(!_0x2a742c){this[_0x6d9a('0xc')](_0x6d9a('0xd'),null);}this[_0x6d9a('0xc')](_0x6d9a('0xe'),_0x2a742c);}},'description':{'type':Sequelize[_0x6d9a('0x2')]}};
\ No newline at end of file
index 350470f..08dcf20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4569=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','redis','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','WhatsappAccounts','UserProfileResource','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','WhatsappAccount','include','findAll','show','keys','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','addDisposition','WhatsappAccountId','Disposition','getDispositions','includeAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','getAgents','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','WhatsappApplication','findAndCountAll','priority','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','read','timestamp','message_id','applications','asc','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','mobile','twilio','from','whatsapp:','Body','messageId','MessageSid','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','DESC','list','Contacts','contact','WhatsappInteraction','interaction','created','close','unmanaged','*,*,*,*','ContactId','AttachmentId','User','UserId','unshift','Start','startRouting','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','CmContact','ListId','WhatsappMessage','dataValues','Messages','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util'];(function(_0x7f5837,_0x3e0675){var _0x4e4874=function(_0x4b2211){while(--_0x4b2211){_0x7f5837['push'](_0x7f5837['shift']());}};_0x4e4874(++_0x3e0675);}(_0x4569,0x187));var _0x9456=function(_0x11f44c,_0x1184d2){_0x11f44c=_0x11f44c-0x0;var _0x551e6f=_0x4569[_0x11f44c];return _0x551e6f;};'use strict';var emlformat=require(_0x9456('0x0'));var rimraf=require(_0x9456('0x1'));var zipdir=require(_0x9456('0x2'));var jsonpatch=require(_0x9456('0x3'));var rp=require(_0x9456('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9456('0x5'));var util=require(_0x9456('0x6'));var path=require(_0x9456('0x7'));var sox=require('sox');var csv=require(_0x9456('0x8'));var ejs=require(_0x9456('0x9'));var fs=require('fs');var fs_extra=require(_0x9456('0xa'));var _=require(_0x9456('0xb'));var squel=require(_0x9456('0xc'));var crypto=require(_0x9456('0xd'));var jsforce=require(_0x9456('0xe'));var deskjs=require(_0x9456('0xf'));var toCsv=require(_0x9456('0x8'));var querystring=require(_0x9456('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9456('0x11'));var as=require(_0x9456('0x12'));var hardwareService=require(_0x9456('0x13'));var logger=require(_0x9456('0x14'))(_0x9456('0x15'));var utils=require(_0x9456('0x16'));var config=require(_0x9456('0x17'));var licenseUtil=require(_0x9456('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9456('0x19')](config['redis'],{'host':_0x9456('0x1a'),'port':0x18eb});var socket=require(_0x9456('0x1b'))(new Redis(config[_0x9456('0x1c')]));require(_0x9456('0x1d'))[_0x9456('0x1e')](socket);var jayson=require(_0x9456('0x1f'));var client=jayson[_0x9456('0x20')][_0x9456('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x39589e,_0x420d39,_0x814f40,_0x8328bc){return new BPromise(function(_0x449892,_0x42e001){var _0xfc71cb=_0x8328bc||client;return _0xfc71cb[_0x9456('0x22')](_0x39589e,_0x814f40)[_0x9456('0x23')](function(_0x4ba909){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x420d39,_0x9456('0x24'));logger[_0x9456('0x25')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x420d39,_0x9456('0x24'),JSON[_0x9456('0x26')](_0x4ba909));if(_0x4ba909[_0x9456('0x27')]){if(_0x4ba909[_0x9456('0x27')][_0x9456('0x28')]===0x1f4){logger[_0x9456('0x27')](_0x9456('0x29'),_0x420d39,_0x4ba909['error']['message']);return _0x42e001(_0x4ba909[_0x9456('0x27')]['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x420d39,_0x4ba909[_0x9456('0x27')][_0x9456('0x2a')]);return _0x449892(_0x4ba909['error']['message']);}else{logger[_0x9456('0x2b')](_0x9456('0x29'),_0x420d39,_0x9456('0x24'));_0x449892(_0x4ba909[_0x9456('0x2c')][_0x9456('0x2a')]);}})[_0x9456('0x2d')](function(_0x278f31){logger[_0x9456('0x27')](_0x9456('0x29'),_0x420d39,_0x278f31);_0x42e001(_0x278f31);});});}function respondWithStatusCode(_0x31d0e0,_0x2ac3cc){_0x2ac3cc=_0x2ac3cc||0xcc;return function(_0xb0f213){if(_0xb0f213){return _0x31d0e0['sendStatus'](_0x2ac3cc);}return _0x31d0e0[_0x9456('0x2e')](_0x2ac3cc)[_0x9456('0x2f')]();};}function respondWithResult(_0x49fa61,_0x2ad23a){_0x2ad23a=_0x2ad23a||0xc8;return function(_0x528fff){if(_0x528fff){return _0x49fa61[_0x9456('0x2e')](_0x2ad23a)[_0x9456('0x30')](_0x528fff);}};}function respondWithFilteredResult(_0x470e30,_0x4c6cc7){return function(_0x3c6d13){if(_0x3c6d13){var _0x1d612a=typeof _0x4c6cc7[_0x9456('0x31')]===_0x9456('0x32')&&typeof _0x4c6cc7[_0x9456('0x33')]===_0x9456('0x32');var _0x18e948=_0x3c6d13[_0x9456('0x34')];var _0x238fcc=_0x1d612a?0x0:_0x4c6cc7[_0x9456('0x31')];var _0x50f40e=_0x1d612a?_0x3c6d13[_0x9456('0x34')]:_0x4c6cc7['offset']+_0x4c6cc7[_0x9456('0x33')];var _0x1600c5;if(_0x50f40e>=_0x18e948){_0x50f40e=_0x18e948;_0x1600c5=0xc8;}else{_0x1600c5=0xce;}_0x470e30[_0x9456('0x2e')](_0x1600c5);return _0x470e30[_0x9456('0x35')](_0x9456('0x36'),_0x238fcc+'-'+_0x50f40e+'/'+_0x18e948)[_0x9456('0x30')](_0x3c6d13);}return null;};}function patchUpdates(_0x346779){return function(_0x4fbc32){try{jsonpatch['apply'](_0x4fbc32,_0x346779,!![]);}catch(_0x1eeb63){return BPromise[_0x9456('0x37')](_0x1eeb63);}return _0x4fbc32['save']();};}function saveUpdates(_0x4af3bf,_0xbaafcc){return function(_0x53514a){if(_0x53514a){return _0x53514a[_0x9456('0x38')](_0x4af3bf)[_0x9456('0x23')](function(_0x357bea){return _0x357bea;});}return null;};}function removeEntity(_0x9d39da,_0x59d0f7){return function(_0x2777ae){if(_0x2777ae){return _0x2777ae['destroy']()['then'](function(){var _0x2d724f=_0x2777ae['get']({'plain':!![]});var _0x8d2971=_0x9456('0x39');return db[_0x9456('0x3a')]['destroy']({'where':{'type':_0x8d2971,'resourceId':_0x2d724f['id']}})[_0x9456('0x23')](function(){return _0x2777ae;});})[_0x9456('0x23')](function(){_0x9d39da[_0x9456('0x2e')](0xcc)[_0x9456('0x2f')]();});}};}function handleEntityNotFound(_0x3dd6fa,_0x21b3c3){return function(_0x473448){if(!_0x473448){_0x3dd6fa[_0x9456('0x3b')](0x194);}return _0x473448;};}function handleError(_0x338afb,_0x33172f){_0x33172f=_0x33172f||0x1f4;return function(_0x5c968e){logger['error'](_0x5c968e[_0x9456('0x3c')]);if(_0x5c968e[_0x9456('0x3d')]){delete _0x5c968e[_0x9456('0x3d')];}_0x338afb[_0x9456('0x2e')](_0x33172f)[_0x9456('0x3e')](_0x5c968e);};}exports[_0x9456('0x3f')]=function(_0x34d7d4,_0x330117){var _0xe04cdf={'include':[{'model':db[_0x9456('0x40')],'as':_0x9456('0x41')}]},_0x594f18={},_0x14c16a={'count':0x0,'rows':[]};var _0x319a01=_[_0x9456('0x42')](db['WhatsappAccount'][_0x9456('0x43')],function(_0x52cf4c){return{'name':_0x52cf4c[_0x9456('0x44')],'type':_0x52cf4c[_0x9456('0x45')][_0x9456('0x46')]};});_0x594f18[_0x9456('0x47')]=_['map'](_0x319a01,_0x9456('0x3d'));_0x594f18[_0x9456('0x48')]=_['keys'](_0x34d7d4['query']);_0x594f18[_0x9456('0x49')]=_[_0x9456('0x4a')](_0x594f18[_0x9456('0x47')],_0x594f18['query']);_0xe04cdf['attributes']=_['intersection'](_0x594f18[_0x9456('0x47')],qs[_0x9456('0x4b')](_0x34d7d4['query'][_0x9456('0x4b')]));_0xe04cdf[_0x9456('0x4c')]=_0xe04cdf[_0x9456('0x4c')][_0x9456('0x4d')]?_0xe04cdf[_0x9456('0x4c')]:_0x594f18['model'];if(!_0x34d7d4[_0x9456('0x48')][_0x9456('0x4e')](_0x9456('0x4f'))){_0xe04cdf[_0x9456('0x33')]=qs[_0x9456('0x33')](_0x34d7d4['query'][_0x9456('0x33')]);_0xe04cdf['offset']=qs['offset'](_0x34d7d4[_0x9456('0x48')][_0x9456('0x31')]);}_0xe04cdf[_0x9456('0x50')]=qs[_0x9456('0x51')](_0x34d7d4[_0x9456('0x48')][_0x9456('0x51')]);_0xe04cdf['where']=qs[_0x9456('0x49')](_[_0x9456('0x52')](_0x34d7d4[_0x9456('0x48')],_0x594f18[_0x9456('0x49')]),_0x319a01);if(_0x34d7d4[_0x9456('0x48')][_0x9456('0x53')]){_0xe04cdf[_0x9456('0x54')]=_[_0x9456('0x55')](_0xe04cdf[_0x9456('0x54')],{'$or':_[_0x9456('0x42')](_0x319a01,function(_0x1d8eec){if(_0x1d8eec[_0x9456('0x45')]!=='VIRTUAL'){var _0x2455bf={};_0x2455bf[_0x1d8eec[_0x9456('0x3d')]]={'$like':'%'+_0x34d7d4['query'][_0x9456('0x53')]+'%'};return _0x2455bf;}})});}_0xe04cdf=_[_0x9456('0x55')]({},_0xe04cdf,_0x34d7d4[_0x9456('0x56')]);var _0x581bce={'where':_0xe04cdf[_0x9456('0x54')]};return db[_0x9456('0x57')][_0x9456('0x34')](_0x581bce)[_0x9456('0x23')](function(_0x21dad6){_0x14c16a[_0x9456('0x34')]=_0x21dad6;if(_0x34d7d4[_0x9456('0x48')]['includeAll']){_0xe04cdf[_0x9456('0x58')]=[{'all':!![]}];}return db[_0x9456('0x57')][_0x9456('0x59')](_0xe04cdf);})[_0x9456('0x23')](function(_0x20e10b){_0x14c16a['rows']=_0x20e10b;return _0x14c16a;})[_0x9456('0x23')](respondWithFilteredResult(_0x330117,_0xe04cdf))[_0x9456('0x2d')](handleError(_0x330117,null));};exports[_0x9456('0x5a')]=function(_0x3a26f6,_0x15ea2e){var _0xd4018c={'raw':![],'where':{'id':_0x3a26f6['params']['id']},'include':[{'model':db[_0x9456('0x40')],'as':_0x9456('0x41')}]},_0x28b040={};_0x28b040[_0x9456('0x47')]=_['keys'](db[_0x9456('0x57')][_0x9456('0x43')]);_0x28b040[_0x9456('0x48')]=_[_0x9456('0x5b')](_0x3a26f6[_0x9456('0x48')]);_0x28b040[_0x9456('0x49')]=_['intersection'](_0x28b040[_0x9456('0x47')],_0x28b040['query']);_0xd4018c['attributes']=_[_0x9456('0x4a')](_0x28b040[_0x9456('0x47')],qs[_0x9456('0x4b')](_0x3a26f6['query'][_0x9456('0x4b')]));_0xd4018c[_0x9456('0x4c')]=_0xd4018c[_0x9456('0x4c')]['length']?_0xd4018c[_0x9456('0x4c')]:_0x28b040[_0x9456('0x47')];if(_0x3a26f6[_0x9456('0x48')]['includeAll']){_0xd4018c[_0x9456('0x58')]=[{'all':!![]}];}_0xd4018c=_[_0x9456('0x55')]({},_0xd4018c,_0x3a26f6[_0x9456('0x56')]);return db[_0x9456('0x57')][_0x9456('0x5c')](_0xd4018c)['then'](handleEntityNotFound(_0x15ea2e,null))[_0x9456('0x23')](respondWithResult(_0x15ea2e,null))[_0x9456('0x2d')](handleError(_0x15ea2e,null));};exports[_0x9456('0x5d')]=function(_0xe8510a,_0xe35177){return db[_0x9456('0x57')][_0x9456('0x5d')](_0xe8510a[_0x9456('0x5e')],{})['then'](function(_0xe146d){var _0x270113=_0xe8510a['user'][_0x9456('0x5f')]({'plain':!![]});if(!_0x270113)throw new Error(_0x9456('0x60'));if(_0x270113[_0x9456('0x61')]===_0x9456('0x62')){var _0x2e57d3=_0xe146d[_0x9456('0x5f')]({'plain':!![]});var _0x270498=_0x9456('0x39');return db[_0x9456('0x63')]['find']({'where':{'name':_0x270498,'userProfileId':_0x270113[_0x9456('0x64')]},'raw':!![]})[_0x9456('0x23')](function(_0x5ddfeb){if(_0x5ddfeb&&_0x5ddfeb[_0x9456('0x65')]===0x0){return db['UserProfileResource']['create']({'name':_0x2e57d3['name'],'resourceId':_0x2e57d3['id'],'type':_0x5ddfeb['name'],'sectionId':_0x5ddfeb['id']},{})[_0x9456('0x23')](function(){return _0xe146d;});}else{return _0xe146d;}})['catch'](function(_0x10ec16){logger['error'](_0x9456('0x66'),_0x10ec16);throw _0x10ec16;});}return _0xe146d;})[_0x9456('0x23')](respondWithResult(_0xe35177,0xc9))['catch'](handleError(_0xe35177,null));};exports[_0x9456('0x38')]=function(_0x471c04,_0x449626){if(_0x471c04[_0x9456('0x5e')]['id']){delete _0x471c04[_0x9456('0x5e')]['id'];}return db[_0x9456('0x57')][_0x9456('0x5c')]({'where':{'id':_0x471c04[_0x9456('0x67')]['id']},'include':[{'model':db[_0x9456('0x40')],'as':_0x9456('0x41')}]})[_0x9456('0x23')](handleEntityNotFound(_0x449626,null))[_0x9456('0x23')](saveUpdates(_0x471c04[_0x9456('0x5e')],null))[_0x9456('0x23')](respondWithResult(_0x449626,null))['catch'](handleError(_0x449626,null));};exports[_0x9456('0x68')]=function(_0xcfc339,_0x396daa){return db['WhatsappAccount'][_0x9456('0x5c')]({'where':{'id':_0xcfc339[_0x9456('0x67')]['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x396daa,null))[_0x9456('0x23')](removeEntity(_0x396daa,null))[_0x9456('0x2d')](handleError(_0x396daa,null));};exports['describe']=function(_0x51bb51,_0x20f981){return db[_0x9456('0x57')]['describe']()[_0x9456('0x23')](respondWithResult(_0x20f981,null))[_0x9456('0x2d')](handleError(_0x20f981,null));};exports[_0x9456('0x69')]=function(_0x44281c,_0x5dd352,_0x40e2d5){if(_0x44281c['body']['id']){delete _0x44281c[_0x9456('0x5e')]['id'];}return db[_0x9456('0x57')][_0x9456('0x5c')]({'where':{'id':_0x44281c[_0x9456('0x67')]['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x5dd352,null))[_0x9456('0x23')](function(_0x3c02cd){if(_0x3c02cd){_0x44281c['body'][_0x9456('0x6a')]=_0x3c02cd['id'];return db[_0x9456('0x6b')][_0x9456('0x5d')](_0x44281c['body']);}})['then'](respondWithResult(_0x5dd352,null))[_0x9456('0x2d')](handleError(_0x5dd352,null));};exports[_0x9456('0x6c')]=function(_0x45f7bb,_0x4c7813,_0xfbddef){var _0x570ced={'raw':![],'where':{}};var _0x4409ce={};var _0x470ab7={'count':0x0,'rows':[]};return db[_0x9456('0x57')]['findOne']({'where':{'id':_0x45f7bb['params']['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x4c7813,null))['then'](function(_0x559268){if(_0x559268){_0x4409ce[_0x9456('0x47')]=_[_0x9456('0x5b')](db['Disposition'][_0x9456('0x43')]);_0x4409ce['query']=_[_0x9456('0x5b')](_0x45f7bb[_0x9456('0x48')]);_0x4409ce[_0x9456('0x49')]=_['intersection'](_0x4409ce[_0x9456('0x47')],_0x4409ce[_0x9456('0x48')]);_0x570ced[_0x9456('0x4c')]=_['intersection'](_0x4409ce[_0x9456('0x47')],qs[_0x9456('0x4b')](_0x45f7bb[_0x9456('0x48')][_0x9456('0x4b')]));_0x570ced['attributes']=_0x570ced[_0x9456('0x4c')]['length']?_0x570ced[_0x9456('0x4c')]:_0x4409ce['model'];if(!_0x45f7bb[_0x9456('0x48')]['hasOwnProperty']('nolimit')){_0x570ced[_0x9456('0x33')]=qs['limit'](_0x45f7bb[_0x9456('0x48')][_0x9456('0x33')]);_0x570ced[_0x9456('0x31')]=qs[_0x9456('0x31')](_0x45f7bb[_0x9456('0x48')][_0x9456('0x31')]);}_0x570ced[_0x9456('0x50')]=qs[_0x9456('0x51')](_0x45f7bb[_0x9456('0x48')][_0x9456('0x51')]);_0x570ced['where']=qs[_0x9456('0x49')](_['pick'](_0x45f7bb[_0x9456('0x48')],_0x4409ce[_0x9456('0x49')]));_0x570ced[_0x9456('0x54')][_0x9456('0x6a')]=_0x559268['id'];if(_0x45f7bb[_0x9456('0x48')][_0x9456('0x53')]){_0x570ced[_0x9456('0x54')]=_[_0x9456('0x55')](_0x570ced['where'],{'$or':_[_0x9456('0x42')](_0x570ced['attributes'],function(_0xa67baf){var _0x4bbc06={};_0x4bbc06[_0xa67baf]={'$like':'%'+_0x45f7bb[_0x9456('0x48')][_0x9456('0x53')]+'%'};return _0x4bbc06;})});}_0x570ced=_[_0x9456('0x55')]({},_0x570ced,_0x45f7bb[_0x9456('0x56')]);return db[_0x9456('0x6b')][_0x9456('0x34')]({'where':_0x570ced['where']})['then'](function(_0x38eeca){_0x470ab7[_0x9456('0x34')]=_0x38eeca;if(_0x45f7bb[_0x9456('0x48')][_0x9456('0x6d')]){_0x570ced[_0x9456('0x58')]=[{'all':!![]}];}return db[_0x9456('0x6b')][_0x9456('0x59')](_0x570ced);})[_0x9456('0x23')](function(_0x56fad2){_0x470ab7['rows']=_0x56fad2;return _0x470ab7;});}})[_0x9456('0x23')](respondWithFilteredResult(_0x4c7813,_0x570ced))[_0x9456('0x2d')](handleError(_0x4c7813,null));};exports['removeDispositions']=function(_0x57dcac,_0x466674,_0x1930dd){return db['WhatsappAccount'][_0x9456('0x5c')]({'where':{'id':_0x57dcac[_0x9456('0x67')]['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x466674,null))['then'](function(_0x39f527){if(_0x39f527){return _0x39f527[_0x9456('0x6e')](_0x57dcac[_0x9456('0x48')][_0x9456('0x6f')]);}})[_0x9456('0x23')](respondWithStatusCode(_0x466674,null))[_0x9456('0x2d')](handleError(_0x466674,null));};exports[_0x9456('0x70')]=function(_0x59effe,_0x55ae34,_0x343e02){if(_0x59effe[_0x9456('0x5e')]['id']){delete _0x59effe[_0x9456('0x5e')]['id'];}return db[_0x9456('0x57')][_0x9456('0x5c')]({'where':{'id':_0x59effe[_0x9456('0x67')]['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x55ae34,null))[_0x9456('0x23')](function(_0x241884){if(_0x241884){_0x59effe[_0x9456('0x5e')][_0x9456('0x6a')]=_0x241884['id'];return db[_0x9456('0x71')]['create'](_0x59effe[_0x9456('0x5e')]);}})['then'](respondWithResult(_0x55ae34,null))[_0x9456('0x2d')](handleError(_0x55ae34,null));};exports[_0x9456('0x72')]=function(_0x35471c,_0x1ec1c8,_0x293a0b){var _0x1377da={'raw':![],'where':{}};var _0x246ece={};var _0xa86560={'count':0x0,'rows':[]};return db[_0x9456('0x57')][_0x9456('0x73')]({'where':{'id':_0x35471c['params']['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x1ec1c8,null))[_0x9456('0x23')](function(_0x5528a2){if(_0x5528a2){_0x246ece[_0x9456('0x47')]=_[_0x9456('0x5b')](db['CannedAnswer']['rawAttributes']);_0x246ece[_0x9456('0x48')]=_[_0x9456('0x5b')](_0x35471c[_0x9456('0x48')]);_0x246ece['filters']=_[_0x9456('0x4a')](_0x246ece[_0x9456('0x47')],_0x246ece[_0x9456('0x48')]);_0x1377da[_0x9456('0x4c')]=_[_0x9456('0x4a')](_0x246ece['model'],qs[_0x9456('0x4b')](_0x35471c[_0x9456('0x48')][_0x9456('0x4b')]));_0x1377da[_0x9456('0x4c')]=_0x1377da[_0x9456('0x4c')][_0x9456('0x4d')]?_0x1377da[_0x9456('0x4c')]:_0x246ece[_0x9456('0x47')];if(!_0x35471c[_0x9456('0x48')][_0x9456('0x4e')](_0x9456('0x4f'))){_0x1377da[_0x9456('0x33')]=qs[_0x9456('0x33')](_0x35471c[_0x9456('0x48')][_0x9456('0x33')]);_0x1377da['offset']=qs[_0x9456('0x31')](_0x35471c[_0x9456('0x48')][_0x9456('0x31')]);}_0x1377da['order']=qs['sort'](_0x35471c[_0x9456('0x48')][_0x9456('0x51')]);_0x1377da['where']=qs[_0x9456('0x49')](_['pick'](_0x35471c[_0x9456('0x48')],_0x246ece[_0x9456('0x49')]));_0x1377da[_0x9456('0x54')]['WhatsappAccountId']=_0x5528a2['id'];if(_0x35471c[_0x9456('0x48')][_0x9456('0x53')]){_0x1377da[_0x9456('0x54')]=_[_0x9456('0x55')](_0x1377da[_0x9456('0x54')],{'$or':_[_0x9456('0x42')](_0x1377da[_0x9456('0x4c')],function(_0x36f594){var _0x51df6d={};_0x51df6d[_0x36f594]={'$like':'%'+_0x35471c[_0x9456('0x48')][_0x9456('0x53')]+'%'};return _0x51df6d;})});}_0x1377da=_[_0x9456('0x55')]({},_0x1377da,_0x35471c[_0x9456('0x56')]);return db[_0x9456('0x71')][_0x9456('0x34')]({'where':_0x1377da[_0x9456('0x54')]})[_0x9456('0x23')](function(_0x45c912){_0xa86560[_0x9456('0x34')]=_0x45c912;if(_0x35471c[_0x9456('0x48')]['includeAll']){_0x1377da[_0x9456('0x58')]=[{'all':!![]}];}return db[_0x9456('0x71')]['findAll'](_0x1377da);})[_0x9456('0x23')](function(_0x12ddb7){_0xa86560['rows']=_0x12ddb7;return _0xa86560;});}})[_0x9456('0x23')](respondWithFilteredResult(_0x1ec1c8,_0x1377da))['catch'](handleError(_0x1ec1c8,null));};exports['removeAnswers']=function(_0x1a49e5,_0x4a4835,_0x21b220){return db[_0x9456('0x57')][_0x9456('0x5c')]({'where':{'id':_0x1a49e5[_0x9456('0x67')]['id']}})[_0x9456('0x23')](handleEntityNotFound(_0x4a4835,null))[_0x9456('0x23')](function(_0x5910de){if(_0x5910de){return _0x5910de['removeAnswers'](_0x1a49e5['query'][_0x9456('0x6f')]);}})[_0x9456('0x23')](respondWithStatusCode(_0x4a4835,null))[_0x9456('0x2d')](handleError(_0x4a4835,null));};exports[_0x9456('0x74')]=function(_0x202f5a,_0x58b989,_0x38d29a){return db[_0x9456('0x57')][_0x9456('0x5c')]({'where':{'id':_0x202f5a['params']['id']}})['then'](handleEntityNotFound(_0x58b989,null))['then'](function(_0x58660a){if(_0x58660a){return _0x58660a[_0x9456('0x74')](_0x202f5a[_0x9456('0x5e')][_0x9456('0x6f')],_[_0x9456('0x75')](_0x202f5a[_0x9456('0x5e')],['ids','id'])||{})[_0x9456('0x76')](function(_0x1d94f9){for(var _0x1e7af9=0x0;_0x1e7af9<_0x202f5a[_0x9456('0x5e')][_0x9456('0x6f')]['length'];_0x1e7af9+=0x1){socket[_0x9456('0x77')](_0x9456('0x78'),{'UserId':Number(_0x202f5a['body'][_0x9456('0x6f')][_0x1e7af9]),'WhatsappAccountId':Number(_0x202f5a['params']['id'])});}return _0x1d94f9;});}})[_0x9456('0x23')](respondWithResult(_0x58b989,null))[_0x9456('0x2d')](handleError(_0x58b989,null));};exports[_0x9456('0x79')]=function(_0x251012,_0x1e9234,_0xe8aa66){return db[_0x9456('0x57')][_0x9456('0x5c')]({'where':{'id':_0x251012[_0x9456('0x67')]['id']}})['then'](handleEntityNotFound(_0x1e9234,null))[_0x9456('0x23')](function(_0x338ad5){if(_0x338ad5){return _0x338ad5['removeAgents'](_0x251012[_0x9456('0x48')]['ids'])[_0x9456('0x23')](function(){if(_['isArray'](_0x251012[_0x9456('0x48')][_0x9456('0x6f')])){for(var _0x15c9b1=0x0;_0x15c9b1<_0x251012[_0x9456('0x48')][_0x9456('0x6f')]['length'];_0x15c9b1+=0x1){socket[_0x9456('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0x251012['query'][_0x9456('0x6f')][_0x15c9b1]),'WhatsappAccountId':Number(_0x251012[_0x9456('0x67')]['id'])});}}else{socket[_0x9456('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0x251012[_0x9456('0x48')][_0x9456('0x6f')]),'WhatsappAccountId':Number(_0x251012[_0x9456('0x67')]['id'])});}});}})[_0x9456('0x23')](respondWithStatusCode(_0x1e9234,null))['catch'](handleError(_0x1e9234,null));};exports[_0x9456('0x7a')]=function(_0x197228,_0x3a9e41,_0x3fc6c7){var _0x2e62e6={};var _0x198267={};var _0x379345;var _0x34b1b3;return db[_0x9456('0x57')][_0x9456('0x73')]({'where':{'id':_0x197228[_0x9456('0x67')]['id']}})['then'](handleEntityNotFound(_0x3a9e41,null))['then'](function(_0x5cbadc){if(_0x5cbadc){_0x379345=_0x5cbadc;_0x198267[_0x9456('0x47')]=_[_0x9456('0x5b')](db['User'][_0x9456('0x43')]);_0x198267[_0x9456('0x48')]=_[_0x9456('0x5b')](_0x197228[_0x9456('0x48')]);_0x198267['filters']=_[_0x9456('0x4a')](_0x198267[_0x9456('0x47')],_0x198267[_0x9456('0x48')]);_0x2e62e6[_0x9456('0x4c')]=_[_0x9456('0x4a')](_0x198267[_0x9456('0x47')],qs['fields'](_0x197228[_0x9456('0x48')][_0x9456('0x4b')]));_0x2e62e6[_0x9456('0x4c')]=_0x2e62e6[_0x9456('0x4c')][_0x9456('0x4d')]?_0x2e62e6[_0x9456('0x4c')]:_0x198267[_0x9456('0x47')];_0x2e62e6['order']=qs[_0x9456('0x51')](_0x197228[_0x9456('0x48')][_0x9456('0x51')]);_0x2e62e6[_0x9456('0x54')]=qs[_0x9456('0x49')](_[_0x9456('0x52')](_0x197228[_0x9456('0x48')],_0x198267[_0x9456('0x49')]));if(_0x197228['query']['filter']){_0x2e62e6[_0x9456('0x54')]=_[_0x9456('0x55')](_0x2e62e6[_0x9456('0x54')],{'$or':_[_0x9456('0x42')](_0x2e62e6[_0x9456('0x4c')],function(_0x3be72b){var _0x4f089a={};_0x4f089a[_0x3be72b]={'$like':'%'+_0x197228[_0x9456('0x48')]['filter']+'%'};return _0x4f089a;})});}_0x2e62e6=_[_0x9456('0x55')]({},_0x2e62e6,_0x197228['options']);return _0x379345['getAgents'](_0x2e62e6);}})[_0x9456('0x23')](function(_0x3b0404){if(_0x3b0404){_0x34b1b3=_0x3b0404[_0x9456('0x4d')];if(!_0x197228[_0x9456('0x48')]['hasOwnProperty']('nolimit')){_0x2e62e6[_0x9456('0x33')]=qs[_0x9456('0x33')](_0x197228[_0x9456('0x48')][_0x9456('0x33')]);_0x2e62e6[_0x9456('0x31')]=qs['offset'](_0x197228[_0x9456('0x48')][_0x9456('0x31')]);}return _0x379345[_0x9456('0x7a')](_0x2e62e6);}})[_0x9456('0x23')](function(_0x13080b){if(_0x13080b){return _0x13080b?{'count':_0x34b1b3,'rows':_0x13080b}:null;}})[_0x9456('0x23')](respondWithResult(_0x3a9e41,null))[_0x9456('0x2d')](handleError(_0x3a9e41,null));};exports['addApplications']=function(_0x4fce4a,_0x38d54b){var _0x38741e=_0x4fce4a[_0x9456('0x67')]['id'];var _0x481f02=_0x4fce4a[_0x9456('0x5e')];var _0x3ff89b=0xc8;var _0x4a3372=null;return db[_0x9456('0x7b')][_0x9456('0x7c')]({'isolationLevel':db[_0x9456('0x7b')][_0x9456('0x7d')][_0x9456('0x7e')][_0x9456('0x7f')]},function(_0x55aaad){return db[_0x9456('0x57')][_0x9456('0x73')]({'where':{'id':_0x38741e},'transaction':_0x55aaad})['then'](function(_0x249f98){if(_0x249f98){return db['WhatsappApplication'][_0x9456('0x68')]({'where':{'WhatsappAccountId':_0x38741e},'transaction':_0x55aaad})['then'](function(){var _0x44d5ad=_[_0x9456('0x42')](_0x481f02,function(_0x3ddc46){_0x3ddc46[_0x9456('0x6a')]=_0x38741e;return _0x3ddc46;});return db['WhatsappApplication'][_0x9456('0x80')](_0x44d5ad,{'transaction':_0x55aaad});});}else{_0x3ff89b=0x194;_0x4a3372=[];}});})[_0x9456('0x23')](function(){if(_0x3ff89b!==0x194){return db[_0x9456('0x81')][_0x9456('0x82')]({'where':{'WhatsappAccountId':_0x38741e},'order':_0x9456('0x83')})[_0x9456('0x23')](function(_0x3142f8){_0x4a3372=_0x3142f8;});}})[_0x9456('0x2d')](function(_0x2cf3ef){_0x3ff89b=0x1f4;logger[_0x9456('0x27')](_0x2cf3ef[_0x9456('0x3c')]);if(_0x2cf3ef['name']){delete _0x2cf3ef[_0x9456('0x3d')];}_0x4a3372=_0x2cf3ef;})[_0x9456('0x84')](function(){if(_0x4a3372===null){_0x38d54b[_0x9456('0x3b')](_0x3ff89b);}else{if(_0x3ff89b===0x1f4){_0x38d54b[_0x9456('0x2e')](_0x3ff89b)['send'](_0x4a3372);}else{_0x38d54b[_0x9456('0x2e')](_0x3ff89b)[_0x9456('0x30')](_0x4a3372);}}});};exports[_0x9456('0x85')]=function(_0x1f58c4,_0x3d27e3,_0x414322){var _0x15c897={};var _0x27bf26={};var _0x4e5c24;var _0x2f8f5d;return db[_0x9456('0x57')][_0x9456('0x73')]({'where':{'id':_0x1f58c4[_0x9456('0x67')]['id']}})['then'](handleEntityNotFound(_0x3d27e3,null))[_0x9456('0x23')](function(_0x23344d){if(_0x23344d){_0x4e5c24=_0x23344d;_0x27bf26[_0x9456('0x47')]=_['keys'](db[_0x9456('0x81')][_0x9456('0x43')]);_0x27bf26[_0x9456('0x48')]=_['keys'](_0x1f58c4[_0x9456('0x48')]);_0x27bf26[_0x9456('0x49')]=_[_0x9456('0x4a')](_0x27bf26[_0x9456('0x47')],_0x27bf26[_0x9456('0x48')]);_0x15c897[_0x9456('0x4c')]=_[_0x9456('0x4a')](_0x27bf26[_0x9456('0x47')],qs['fields'](_0x1f58c4['query']['fields']));_0x15c897[_0x9456('0x4c')]=_0x15c897['attributes'][_0x9456('0x4d')]?_0x15c897[_0x9456('0x4c')]:_0x27bf26[_0x9456('0x47')];_0x15c897[_0x9456('0x50')]=qs[_0x9456('0x51')](_0x1f58c4[_0x9456('0x48')][_0x9456('0x51')]);_0x15c897[_0x9456('0x54')]=qs[_0x9456('0x49')](_[_0x9456('0x52')](_0x1f58c4[_0x9456('0x48')],_0x27bf26[_0x9456('0x49')]));if(_0x1f58c4[_0x9456('0x48')][_0x9456('0x53')]){_0x15c897['where']=_[_0x9456('0x55')](_0x15c897[_0x9456('0x54')],{'$or':_[_0x9456('0x42')](_0x15c897[_0x9456('0x4c')],function(_0x503e50){var _0x11badb={};_0x11badb[_0x503e50]={'$like':'%'+_0x1f58c4[_0x9456('0x48')][_0x9456('0x53')]+'%'};return _0x11badb;})});}_0x15c897=_['merge']({},_0x15c897,_0x1f58c4[_0x9456('0x56')]);return _0x4e5c24['getApplications'](_0x15c897);}})[_0x9456('0x23')](function(_0x65cdc3){if(_0x65cdc3){_0x2f8f5d=_0x65cdc3[_0x9456('0x4d')];if(!_0x1f58c4[_0x9456('0x48')][_0x9456('0x4e')](_0x9456('0x4f'))){_0x15c897[_0x9456('0x33')]=qs[_0x9456('0x33')](_0x1f58c4['query'][_0x9456('0x33')]);_0x15c897['offset']=qs['offset'](_0x1f58c4[_0x9456('0x48')]['offset']);}return _0x4e5c24[_0x9456('0x85')](_0x15c897);}})['then'](function(_0x477eb6){if(_0x477eb6){return _0x477eb6?{'count':_0x2f8f5d,'rows':_0x477eb6}:null;}})['then'](respondWithResult(_0x3d27e3,null))[_0x9456('0x2d')](handleError(_0x3d27e3,null));};exports[_0x9456('0x86')]=function(_0x2cd284,_0x274622,_0x241803){var _0xa827c8={'channel':_0x9456('0x87')};var _0x25ce23=[];var _0x64d617=[];var _0x5ebdc0={};return db['WhatsappAccount']['find']({'where':{'id':_0x2cd284[_0x9456('0x67')]['id']},'include':[{'model':db[_0x9456('0x81')],'as':_0x9456('0x88')}]})[_0x9456('0x23')](handleEntityNotFound(_0x274622,null))[_0x9456('0x23')](function(_0x360ea2){_0xa827c8['account']=_0x360ea2;if(_0xa827c8[_0x9456('0x89')]&&_0xa827c8['account']['type']===_0x9456('0x8a')&&_0x2cd284['body'][_0x9456('0x8b')]){if(_0x2cd284['body'][_0x9456('0x8b')][_0x9456('0x4d')]===0x0)return;if(_0x2cd284[_0x9456('0x5e')]['statuses'][0x0]['state']!==_0x9456('0x8c'))return;return db['WhatsappMessage']['update']({'read':!![],'readAt':_0x2cd284[_0x9456('0x5e')]['statuses'][0x0][_0x9456('0x8d')]},{'where':{'messageId':_0x2cd284[_0x9456('0x5e')][_0x9456('0x8b')][0x0][_0x9456('0x8e')]},'individualHooks':!![]})[_0x9456('0x23')](function(_0xecc4c9){return _0x274622['status'](0xc8)['json'](_0xecc4c9);});}_0xa827c8[_0x9456('0x8f')]=_['orderBy'](_0x360ea2[_0x9456('0x88')],['priority'],[_0x9456('0x90')]);if(_0xa827c8[_0x9456('0x89')][_0x9456('0x88')]){delete _0xa827c8[_0x9456('0x89')]['Applications'];}return db['CmContact'][_0x9456('0x91')]()['then'](function(_0x13a5cf){if(!_0x13a5cf){throw new db[(_0x9456('0x92'))][(_0x9456('0x93'))](_0x9456('0x94'));}_0x25ce23=_[_0x9456('0x95')](_[_0x9456('0x5b')](_0x13a5cf),[_0x9456('0x96'),_0x9456('0x97')]);_0x64d617=_[_0x9456('0x95')](_[_0x9456('0x5b')](_0x13a5cf),[_0x9456('0x96'),_0x9456('0x97'),'CompanyId','ListId']);_0xa827c8[_0x9456('0x5e')]={'mapKey':_0x9456('0x98')};if(_0xa827c8[_0x9456('0x89')]&&_0xa827c8[_0x9456('0x89')][_0x9456('0x45')]===_0x9456('0x99')){_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')]=_0x2cd284[_0x9456('0x5e')]['From']['replace'](_0x9456('0x9b'),'');_0xa827c8[_0x9456('0x5e')][_0x9456('0x5e')]=_0x2cd284[_0x9456('0x5e')][_0x9456('0x9c')];_0xa827c8[_0x9456('0x5e')][_0x9456('0x9d')]=_0x2cd284['body'][_0x9456('0x9e')];}if(_0xa827c8[_0x9456('0x89')]&&_0xa827c8[_0x9456('0x89')][_0x9456('0x45')]==='sinch'){_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')]=_0x2cd284[_0x9456('0x5e')][_0x9456('0x9f')][0x0]['from'];_0xa827c8[_0x9456('0x5e')][_0x9456('0x5e')]=_0x2cd284[_0x9456('0x5e')][_0x9456('0x9f')][0x0][_0x9456('0x2a')]['body'];_0xa827c8[_0x9456('0x5e')][_0x9456('0x9d')]=_0x2cd284[_0x9456('0x5e')][_0x9456('0x9f')][0x0]['message_id'];}if(_0xa827c8[_0x9456('0x5e')]['id']){delete _0xa827c8['body']['id'];}if(_[_0x9456('0xa0')](_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')])){throw new db[(_0x9456('0x92'))][(_0x9456('0x93'))](_0x9456('0xa1'));}if(_[_0x9456('0xa0')](_0xa827c8['body'][_0x9456('0x5e')])||_0xa827c8[_0x9456('0x5e')][_0x9456('0x5e')]===''){throw new db[(_0x9456('0x92'))][(_0x9456('0x93'))](_0x9456('0xa2'));}if(_['isNil'](_0xa827c8['body'][_0x9456('0xa3')])){throw new db[(_0x9456('0x92'))]['ValidationError'](_0x9456('0xa4')+_0x64d617);}if(!_[_0x9456('0xa5')](_0x64d617,_0xa827c8[_0x9456('0x5e')]['mapKey'])){throw new db[(_0x9456('0x92'))][(_0x9456('0x93'))](_0x9456('0xa6')+_0x64d617);}_0x5ebdc0[_0xa827c8[_0x9456('0x5e')][_0x9456('0xa3')]]=_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')];return db[_0x9456('0xa7')][_0x9456('0x5c')]({'where':{'id':_0xa827c8['account']['ListId']},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x5ebdc0,'limit':0x1,'order':[['updatedAt',_0x9456('0xa8')]]}]});})[_0x9456('0x23')](handleEntityNotFound(_0x274622,null))[_0x9456('0x23')](function(_0x3e3ef6){if(_0x3e3ef6){_0xa827c8[_0x9456('0xa9')]=_[_0x9456('0x75')](_0x3e3ef6,['Contacts']);if(_0x3e3ef6[_0x9456('0xaa')][_0x9456('0x4d')]){return _0x3e3ef6[_0x9456('0xaa')][0x0];}var _0x134d06=_[_0x9456('0x19')](_0xa827c8[_0x9456('0x5e')],{'firstName':_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')],'ListId':_0x3e3ef6['id']});_0x134d06[_0xa827c8[_0x9456('0x5e')][_0x9456('0xa3')]]=_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')];return db['CmContact']['create'](_0x134d06,{'fields':_0x25ce23,'raw':!![]});}})['then'](handleEntityNotFound(_0x274622,null))[_0x9456('0x23')](function(_0x5ef557){if(_0x5ef557){_0xa827c8[_0x9456('0xab')]=_0x5ef557;var _0x16e01e={'ContactId':_0x5ef557['id'],'phone':_0xa827c8[_0x9456('0x5e')][_0x9456('0x9a')],'WhatsappAccountId':_0x2cd284[_0x9456('0x67')]['id']};var _0x3f1295={'ContactId':_0x5ef557['id'],'WhatsappAccountId':_0x2cd284['params']['id'],'closed':![]};return db[_0x9456('0xac')][_0x9456('0x5c')]({'where':_0x3f1295})[_0x9456('0x23')](function(_0x3cc886){if(_0x3cc886){return[_0x3cc886,![]];}return db[_0x9456('0xac')][_0x9456('0x5d')](_0x16e01e)[_0x9456('0x23')](function(_0x25e025){return[_0x25e025,!![]];});});}})['spread'](function(_0x4e711f,_0x421168){_0xa827c8[_0x9456('0xad')]=_0x4e711f[_0x9456('0x5f')]({'plain':!![]});_0xa827c8[_0x9456('0xad')][_0x9456('0xae')]=![];if(_0x421168){if(_0xa827c8['account']['autoclose']){_0xa827c8['applications']['push']({'id':0x0,'priority':_0xa827c8[_0x9456('0x8f')][_0x9456('0x4d')]+0x1,'app':_0x9456('0xaf'),'appdata':_0x9456('0xb0'),'interval':_0x9456('0xb1')});}_0xa827c8[_0x9456('0xad')]['created']=!![];}return db['WhatsappMessage'][_0x9456('0x5d')]({'phone':_0xa827c8[_0x9456('0x5e')]['from'],'messageId':_0xa827c8[_0x9456('0x5e')][_0x9456('0x9d')],'body':_0xa827c8[_0x9456('0x5e')][_0x9456('0x5e')],'WhatsappAccountId':_0x2cd284[_0x9456('0x67')]['id'],'WhatsappInteractionId':_0x4e711f['id'],'direction':'in','ContactId':_0x4e711f[_0x9456('0xb2')],'AttachmentId':_0xa827c8['body'][_0x9456('0xb3')]});})['then'](function(_0x2277d1){_0xa827c8[_0x9456('0x2a')]=_0x2277d1;if(_0xa827c8[_0x9456('0xad')]['UserId']){return db[_0x9456('0xb4')][_0x9456('0x5c')]({'attributes':['id','name'],'where':{'id':_0xa827c8[_0x9456('0xad')][_0x9456('0xb5')]}})[_0x9456('0x23')](function(_0x3e8545){if(_0x3e8545){_0xa827c8[_0x9456('0x8f')][_0x9456('0xb6')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x3e8545[_0x9456('0x3d')]+','+(_0xa827c8['account']['waitForTheAssignedAgent']||0xa),'interval':_0x9456('0xb1')});}return respondWithRpcPromise(_0x9456('0xb7'),_0x9456('0xb8'),_0xa827c8);});}return respondWithRpcPromise('Start',_0x9456('0xb8'),_0xa827c8);})[_0x9456('0x23')](function(_0x20a582){if(_0x20a582){var _0xfdd27c=0xc8;var _0x7566ee='receiveMessage';logger[_0x9456('0x2b')](_0x9456('0xb9'),_0x7566ee,_0xfdd27c,_0x9456('0xba'));logger[_0x9456('0x25')](_0x9456('0xbb'),_0x7566ee,_0xfdd27c,_0x9456('0xba'),JSON['stringify'](_0x20a582));if(_0xa827c8[_0x9456('0x89')][_0x9456('0x45')]==='twilio'){return _0x274622['status'](_0xfdd27c)['set'](_0x9456('0xbc'),_0x9456('0xbd'))[_0x9456('0x3e')](_0x9456('0xbe'));}else{return _0x274622[_0x9456('0x2e')](_0xfdd27c)['json'](_0x20a582);}}});})[_0x9456('0x2d')](handleError(_0x274622,null));};exports[_0x9456('0x3e')]=function(_0x3eee46,_0x1794f8,_0x22695a){var _0x19ed1d,_0x3167ed,_0x3214a7;if(_[_0x9456('0xa0')](_0x3eee46[_0x9456('0x5e')][_0x9456('0x5e')])||_0x3eee46[_0x9456('0x5e')]['body']===''){throw new db[(_0x9456('0x92'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9456('0xa0')](_0x3eee46[_0x9456('0x5e')]['to'])){throw new db[(_0x9456('0x92'))]['ValidationError'](_0x9456('0xbf'));}_0x19ed1d=_0x3eee46['body']['to'];return db[_0x9456('0x57')]['find']({'where':{'id':_0x3eee46[_0x9456('0x67')]['id']},'include':[{'model':db[_0x9456('0xa7')],'as':_0x9456('0xc0'),'include':[{'model':db[_0x9456('0xc1')],'as':_0x9456('0xaa'),'where':{'mobile':_0x19ed1d},'limit':0x1,'order':[[_0x9456('0x97'),'DESC']]}]}]})[_0x9456('0x23')](handleEntityNotFound(_0x1794f8,null))[_0x9456('0x23')](function(_0x3de01b){if(_0x3de01b&&_0x3de01b[_0x9456('0xc0')]){_0x3167ed=_0x3de01b[_0x9456('0x5f')]({'plain':!![]});if(_0x3167ed['List']&&_0x3167ed[_0x9456('0xc0')][_0x9456('0xaa')]['length']){return _0x3167ed['List'][_0x9456('0xaa')][0x0];}return db['CmContact'][_0x9456('0x5d')](_[_0x9456('0x19')](_0x3eee46[_0x9456('0x5e')],{'firstName':_0x19ed1d,'mobile':_0x19ed1d,'phone':_0x19ed1d,'ListId':_0x3167ed[_0x9456('0xc2')]}));}})['then'](handleEntityNotFound(_0x1794f8,null))[_0x9456('0x23')](function(_0x3c26f5){if(_0x3c26f5){_0x3214a7=_0x3c26f5;return db['WhatsappInteraction'][_0x9456('0x5c')]({'where':{'ContactId':_0x3214a7['id'],'closed':![],'WhatsappAccountId':_0x3167ed['id']}})['then'](function(_0xfd1b39){if(_0xfd1b39){return[_0xfd1b39,![]];}return db['WhatsappInteraction'][_0x9456('0x5d')]({'UserId':_0x3eee46[_0x9456('0x62')]['id'],'ContactId':_0x3214a7['id'],'WhatsappAccountId':_0x3167ed['id'],'phone':_0x19ed1d,'firstMsgDirection':'out','Messages':[_[_0x9456('0x55')](_0x3eee46[_0x9456('0x5e')],{'read':![],'body':_0x3eee46[_0x9456('0x5e')][_0x9456('0x5e')],'phone':_0x19ed1d,'WhatsappAccountId':_0x3167ed['id'],'UserId':_0x3eee46[_0x9456('0x62')]['id'],'ContactId':_0x3214a7['id']})]},{'include':[{'model':db[_0x9456('0xc3')],'as':'Messages'}]})['then'](function(_0x55669e){return[_0x55669e,!![]];});});}})[_0x9456('0x76')](function(_0x32ee30,_0x4d2f59){if(_0x4d2f59){return _0x32ee30;}return db[_0x9456('0xc3')][_0x9456('0x5d')](_['merge'](_0x3eee46[_0x9456('0x5e')],{'read':![],'body':_0x3eee46['body']['body'],'phone':_0x19ed1d,'WhatsappAccountId':_0x3167ed['id'],'WhatsappInteractionId':_0x32ee30['id'],'UserId':_0x3eee46[_0x9456('0x62')]['id'],'ContactId':_0x3214a7['id']}))['then'](function(_0x70b5dc){_0x32ee30[_0x9456('0xc4')][_0x9456('0xc5')]=[];_0x32ee30['dataValues']['Messages'][_0x9456('0xc6')](_0x70b5dc['dataValues']);return _0x32ee30;});})[_0x9456('0x23')](respondWithResult(_0x1794f8,null))[_0x9456('0x2d')](handleError(_0x1794f8,null));};
\ No newline at end of file
+var _0xf3d0=['WhatsappAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','WhatsappAccountId','Disposition','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','pick','removeAnswers','addAgents','omit','spread','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','findAndCountAll','priority','sendStatus','getApplications','notify','Applications','account','sinch','statuses','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','from','replace','whatsapp:','messageId','MessageSid','notifications','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','list','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','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','twilio','text/xml','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','request','then','request\x20sent','debug','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','status','json','undefined','limit','count','offset','set','apply','reject','save','destroy','get','WhatsappAccounts','UserProfileResource','end','stack','name','send','index','Pause','map'];(function(_0x4c9622,_0x199aef){var _0x4f88e5=function(_0x163aec){while(--_0x163aec){_0x4c9622['push'](_0x4c9622['shift']());}};_0x4f88e5(++_0x199aef);}(_0xf3d0,0x84));var _0x0f3d=function(_0xf34224,_0x42dca3){_0xf34224=_0xf34224-0x0;var _0x4a694d=_0xf3d0[_0xf34224];return _0x4a694d;};'use strict';var emlformat=require(_0x0f3d('0x0'));var rimraf=require(_0x0f3d('0x1'));var zipdir=require(_0x0f3d('0x2'));var jsonpatch=require(_0x0f3d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0f3d('0x4'));var Mustache=require(_0x0f3d('0x5'));var util=require(_0x0f3d('0x6'));var path=require('path');var sox=require(_0x0f3d('0x7'));var csv=require('to-csv');var ejs=require(_0x0f3d('0x8'));var fs=require('fs');var fs_extra=require(_0x0f3d('0x9'));var _=require(_0x0f3d('0xa'));var squel=require(_0x0f3d('0xb'));var crypto=require(_0x0f3d('0xc'));var jsforce=require(_0x0f3d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0f3d('0xe'));var querystring=require(_0x0f3d('0xf'));var Papa=require(_0x0f3d('0x10'));var Redis=require(_0x0f3d('0x11'));var authService=require(_0x0f3d('0x12'));var qs=require(_0x0f3d('0x13'));var as=require(_0x0f3d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0f3d('0x15'))(_0x0f3d('0x16'));var utils=require(_0x0f3d('0x17'));var config=require(_0x0f3d('0x18'));var licenseUtil=require(_0x0f3d('0x19'));var db=require('../../mysqldb')['db'];config[_0x0f3d('0x1a')]=_[_0x0f3d('0x1b')](config[_0x0f3d('0x1a')],{'host':_0x0f3d('0x1c'),'port':0x18eb});var socket=require(_0x0f3d('0x1d'))(new Redis(config[_0x0f3d('0x1a')]));require(_0x0f3d('0x1e'))[_0x0f3d('0x1f')](socket);var jayson=require(_0x0f3d('0x20'));var client=jayson[_0x0f3d('0x21')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2fbcee,_0x10f4b7,_0x311c2b,_0x1d2fdc){return new BPromise(function(_0x57287d,_0xb3522f){var _0x383f84=_0x1d2fdc||client;return _0x383f84[_0x0f3d('0x22')](_0x2fbcee,_0x311c2b)[_0x0f3d('0x23')](function(_0x2bab55){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x10f4b7,_0x0f3d('0x24'));logger[_0x0f3d('0x25')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x10f4b7,'request\x20sent',JSON[_0x0f3d('0x26')](_0x2bab55));if(_0x2bab55['error']){if(_0x2bab55[_0x0f3d('0x27')][_0x0f3d('0x28')]===0x1f4){logger[_0x0f3d('0x27')](_0x0f3d('0x29'),_0x10f4b7,_0x2bab55[_0x0f3d('0x27')][_0x0f3d('0x2a')]);return _0xb3522f(_0x2bab55[_0x0f3d('0x27')]['message']);}logger[_0x0f3d('0x27')](_0x0f3d('0x29'),_0x10f4b7,_0x2bab55['error']['message']);return _0x57287d(_0x2bab55[_0x0f3d('0x27')][_0x0f3d('0x2a')]);}else{logger[_0x0f3d('0x2b')]('WhatsappAccount,\x20%s,\x20%s',_0x10f4b7,_0x0f3d('0x24'));_0x57287d(_0x2bab55[_0x0f3d('0x2c')]['message']);}})['catch'](function(_0x54b441){logger[_0x0f3d('0x27')](_0x0f3d('0x29'),_0x10f4b7,_0x54b441);_0xb3522f(_0x54b441);});});}function respondWithStatusCode(_0x18775c,_0x43b5f1){_0x43b5f1=_0x43b5f1||0xcc;return function(_0x2587e8){if(_0x2587e8){return _0x18775c['sendStatus'](_0x43b5f1);}return _0x18775c[_0x0f3d('0x2d')](_0x43b5f1)['end']();};}function respondWithResult(_0x2c1688,_0x4c1250){_0x4c1250=_0x4c1250||0xc8;return function(_0x20261e){if(_0x20261e){return _0x2c1688[_0x0f3d('0x2d')](_0x4c1250)[_0x0f3d('0x2e')](_0x20261e);}};}function respondWithFilteredResult(_0x46e4d8,_0x447448){return function(_0x3f0adf){if(_0x3f0adf){var _0x5cb9d8=typeof _0x447448['offset']===_0x0f3d('0x2f')&&typeof _0x447448[_0x0f3d('0x30')]===_0x0f3d('0x2f');var _0x23dab7=_0x3f0adf[_0x0f3d('0x31')];var _0x473876=_0x5cb9d8?0x0:_0x447448[_0x0f3d('0x32')];var _0x486fb1=_0x5cb9d8?_0x3f0adf['count']:_0x447448[_0x0f3d('0x32')]+_0x447448[_0x0f3d('0x30')];var _0x162640;if(_0x486fb1>=_0x23dab7){_0x486fb1=_0x23dab7;_0x162640=0xc8;}else{_0x162640=0xce;}_0x46e4d8[_0x0f3d('0x2d')](_0x162640);return _0x46e4d8[_0x0f3d('0x33')]('Content-Range',_0x473876+'-'+_0x486fb1+'/'+_0x23dab7)[_0x0f3d('0x2e')](_0x3f0adf);}return null;};}function patchUpdates(_0x3dc3ba){return function(_0x36eb3f){try{jsonpatch[_0x0f3d('0x34')](_0x36eb3f,_0x3dc3ba,!![]);}catch(_0x5bfa95){return BPromise[_0x0f3d('0x35')](_0x5bfa95);}return _0x36eb3f[_0x0f3d('0x36')]();};}function saveUpdates(_0x3a9fee,_0x74ea79){return function(_0x1b3ba6){if(_0x1b3ba6){return _0x1b3ba6['update'](_0x3a9fee)[_0x0f3d('0x23')](function(_0x5c031e){return _0x5c031e;});}return null;};}function removeEntity(_0x20b88c,_0x2f06cd){return function(_0x14dc52){if(_0x14dc52){return _0x14dc52[_0x0f3d('0x37')]()[_0x0f3d('0x23')](function(){var _0x3c124a=_0x14dc52[_0x0f3d('0x38')]({'plain':!![]});var _0x6ff632=_0x0f3d('0x39');return db[_0x0f3d('0x3a')][_0x0f3d('0x37')]({'where':{'type':_0x6ff632,'resourceId':_0x3c124a['id']}})['then'](function(){return _0x14dc52;});})[_0x0f3d('0x23')](function(){_0x20b88c[_0x0f3d('0x2d')](0xcc)[_0x0f3d('0x3b')]();});}};}function handleEntityNotFound(_0x1c8cae,_0x2bd409){return function(_0x93b843){if(!_0x93b843){_0x1c8cae['sendStatus'](0x194);}return _0x93b843;};}function handleError(_0x2126a9,_0x13c9c3){_0x13c9c3=_0x13c9c3||0x1f4;return function(_0x2ca0db){logger[_0x0f3d('0x27')](_0x2ca0db[_0x0f3d('0x3c')]);if(_0x2ca0db[_0x0f3d('0x3d')]){delete _0x2ca0db[_0x0f3d('0x3d')];}_0x2126a9[_0x0f3d('0x2d')](_0x13c9c3)[_0x0f3d('0x3e')](_0x2ca0db);};}exports[_0x0f3d('0x3f')]=function(_0x112567,_0x23e6a1){var _0x59f062={'include':[{'model':db[_0x0f3d('0x40')],'as':'mandatoryDispositionPause'}]},_0x3dabb6={},_0xf37a23={'count':0x0,'rows':[]};var _0x1ade3a=_[_0x0f3d('0x41')](db[_0x0f3d('0x42')][_0x0f3d('0x43')],function(_0x43af27){return{'name':_0x43af27['fieldName'],'type':_0x43af27[_0x0f3d('0x44')]['key']};});_0x3dabb6[_0x0f3d('0x45')]=_['map'](_0x1ade3a,_0x0f3d('0x3d'));_0x3dabb6[_0x0f3d('0x46')]=_[_0x0f3d('0x47')](_0x112567[_0x0f3d('0x46')]);_0x3dabb6[_0x0f3d('0x48')]=_[_0x0f3d('0x49')](_0x3dabb6['model'],_0x3dabb6[_0x0f3d('0x46')]);_0x59f062[_0x0f3d('0x4a')]=_[_0x0f3d('0x49')](_0x3dabb6[_0x0f3d('0x45')],qs[_0x0f3d('0x4b')](_0x112567[_0x0f3d('0x46')]['fields']));_0x59f062['attributes']=_0x59f062['attributes']['length']?_0x59f062[_0x0f3d('0x4a')]:_0x3dabb6[_0x0f3d('0x45')];if(!_0x112567[_0x0f3d('0x46')][_0x0f3d('0x4c')](_0x0f3d('0x4d'))){_0x59f062[_0x0f3d('0x30')]=qs[_0x0f3d('0x30')](_0x112567[_0x0f3d('0x46')]['limit']);_0x59f062[_0x0f3d('0x32')]=qs[_0x0f3d('0x32')](_0x112567['query'][_0x0f3d('0x32')]);}_0x59f062[_0x0f3d('0x4e')]=qs[_0x0f3d('0x4f')](_0x112567[_0x0f3d('0x46')]['sort']);_0x59f062[_0x0f3d('0x50')]=qs[_0x0f3d('0x48')](_['pick'](_0x112567[_0x0f3d('0x46')],_0x3dabb6[_0x0f3d('0x48')]),_0x1ade3a);if(_0x112567[_0x0f3d('0x46')][_0x0f3d('0x51')]){_0x59f062[_0x0f3d('0x50')]=_[_0x0f3d('0x52')](_0x59f062[_0x0f3d('0x50')],{'$or':_['map'](_0x1ade3a,function(_0x2e2b53){if(_0x2e2b53[_0x0f3d('0x44')]!=='VIRTUAL'){var _0x19cf89={};_0x19cf89[_0x2e2b53[_0x0f3d('0x3d')]]={'$like':'%'+_0x112567['query'][_0x0f3d('0x51')]+'%'};return _0x19cf89;}})});}_0x59f062=_[_0x0f3d('0x52')]({},_0x59f062,_0x112567[_0x0f3d('0x53')]);var _0x5b78ff={'where':_0x59f062[_0x0f3d('0x50')]};return db['WhatsappAccount'][_0x0f3d('0x31')](_0x5b78ff)[_0x0f3d('0x23')](function(_0x272d01){_0xf37a23[_0x0f3d('0x31')]=_0x272d01;if(_0x112567[_0x0f3d('0x46')][_0x0f3d('0x54')]){_0x59f062[_0x0f3d('0x55')]=[{'all':!![]}];}return db[_0x0f3d('0x42')]['findAll'](_0x59f062);})[_0x0f3d('0x23')](function(_0x125ace){_0xf37a23[_0x0f3d('0x56')]=_0x125ace;return _0xf37a23;})[_0x0f3d('0x23')](respondWithFilteredResult(_0x23e6a1,_0x59f062))[_0x0f3d('0x57')](handleError(_0x23e6a1,null));};exports[_0x0f3d('0x58')]=function(_0x202e28,_0x5bfedb){var _0x5f4cb3={'raw':![],'where':{'id':_0x202e28[_0x0f3d('0x59')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x26942f={};_0x26942f[_0x0f3d('0x45')]=_[_0x0f3d('0x47')](db[_0x0f3d('0x42')][_0x0f3d('0x43')]);_0x26942f[_0x0f3d('0x46')]=_['keys'](_0x202e28[_0x0f3d('0x46')]);_0x26942f['filters']=_[_0x0f3d('0x49')](_0x26942f[_0x0f3d('0x45')],_0x26942f['query']);_0x5f4cb3[_0x0f3d('0x4a')]=_[_0x0f3d('0x49')](_0x26942f[_0x0f3d('0x45')],qs[_0x0f3d('0x4b')](_0x202e28[_0x0f3d('0x46')][_0x0f3d('0x4b')]));_0x5f4cb3['attributes']=_0x5f4cb3['attributes'][_0x0f3d('0x5a')]?_0x5f4cb3[_0x0f3d('0x4a')]:_0x26942f['model'];if(_0x202e28[_0x0f3d('0x46')][_0x0f3d('0x54')]){_0x5f4cb3[_0x0f3d('0x55')]=[{'all':!![]}];}_0x5f4cb3=_[_0x0f3d('0x52')]({},_0x5f4cb3,_0x202e28['options']);return db['WhatsappAccount'][_0x0f3d('0x5b')](_0x5f4cb3)[_0x0f3d('0x23')](handleEntityNotFound(_0x5bfedb,null))[_0x0f3d('0x23')](respondWithResult(_0x5bfedb,null))[_0x0f3d('0x57')](handleError(_0x5bfedb,null));};exports[_0x0f3d('0x5c')]=function(_0x2eae6e,_0x2c0654){return db['WhatsappAccount'][_0x0f3d('0x5c')](_0x2eae6e['body'],{})[_0x0f3d('0x23')](function(_0x18aef1){var _0x1e1c0b=_0x2eae6e[_0x0f3d('0x5d')][_0x0f3d('0x38')]({'plain':!![]});if(!_0x1e1c0b)throw new Error(_0x0f3d('0x5e'));if(_0x1e1c0b['role']===_0x0f3d('0x5d')){var _0x68db19=_0x18aef1[_0x0f3d('0x38')]({'plain':!![]});var _0x5a82a7=_0x0f3d('0x39');return db[_0x0f3d('0x5f')][_0x0f3d('0x5b')]({'where':{'name':_0x5a82a7,'userProfileId':_0x1e1c0b[_0x0f3d('0x60')]},'raw':!![]})[_0x0f3d('0x23')](function(_0x15fb84){if(_0x15fb84&&_0x15fb84[_0x0f3d('0x61')]===0x0){return db[_0x0f3d('0x3a')][_0x0f3d('0x5c')]({'name':_0x68db19['name'],'resourceId':_0x68db19['id'],'type':_0x15fb84[_0x0f3d('0x3d')],'sectionId':_0x15fb84['id']},{})['then'](function(){return _0x18aef1;});}else{return _0x18aef1;}})[_0x0f3d('0x57')](function(_0x3d58d9){logger[_0x0f3d('0x27')](_0x0f3d('0x62'),_0x3d58d9);throw _0x3d58d9;});}return _0x18aef1;})[_0x0f3d('0x23')](respondWithResult(_0x2c0654,0xc9))[_0x0f3d('0x57')](handleError(_0x2c0654,null));};exports[_0x0f3d('0x63')]=function(_0x11356e,_0x2cc909){if(_0x11356e[_0x0f3d('0x64')]['id']){delete _0x11356e[_0x0f3d('0x64')]['id'];}return db[_0x0f3d('0x42')][_0x0f3d('0x5b')]({'where':{'id':_0x11356e[_0x0f3d('0x59')]['id']},'include':[{'model':db[_0x0f3d('0x40')],'as':'mandatoryDispositionPause'}]})[_0x0f3d('0x23')](handleEntityNotFound(_0x2cc909,null))[_0x0f3d('0x23')](saveUpdates(_0x11356e[_0x0f3d('0x64')],null))[_0x0f3d('0x23')](respondWithResult(_0x2cc909,null))['catch'](handleError(_0x2cc909,null));};exports[_0x0f3d('0x37')]=function(_0x185e52,_0x4e3225){return db[_0x0f3d('0x42')][_0x0f3d('0x5b')]({'where':{'id':_0x185e52[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x4e3225,null))['then'](removeEntity(_0x4e3225,null))['catch'](handleError(_0x4e3225,null));};exports['describe']=function(_0x33e50e,_0x20755b){return db['WhatsappAccount'][_0x0f3d('0x65')]()[_0x0f3d('0x23')](respondWithResult(_0x20755b,null))['catch'](handleError(_0x20755b,null));};exports[_0x0f3d('0x66')]=function(_0x1830ab,_0xb52cee,_0x49793e){if(_0x1830ab['body']['id']){delete _0x1830ab['body']['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x1830ab[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0xb52cee,null))['then'](function(_0x284ec0){if(_0x284ec0){_0x1830ab['body'][_0x0f3d('0x67')]=_0x284ec0['id'];return db[_0x0f3d('0x68')][_0x0f3d('0x5c')](_0x1830ab[_0x0f3d('0x64')]);}})[_0x0f3d('0x23')](respondWithResult(_0xb52cee,null))[_0x0f3d('0x57')](handleError(_0xb52cee,null));};exports['getDispositions']=function(_0x2938c9,_0x4beb8d,_0xb90767){var _0x344f1c={'raw':![],'where':{}};var _0x27eee3={};var _0x48bc23={'count':0x0,'rows':[]};return db[_0x0f3d('0x42')][_0x0f3d('0x69')]({'where':{'id':_0x2938c9[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x4beb8d,null))[_0x0f3d('0x23')](function(_0x422ac9){if(_0x422ac9){_0x27eee3[_0x0f3d('0x45')]=_[_0x0f3d('0x47')](db[_0x0f3d('0x68')][_0x0f3d('0x43')]);_0x27eee3[_0x0f3d('0x46')]=_[_0x0f3d('0x47')](_0x2938c9[_0x0f3d('0x46')]);_0x27eee3[_0x0f3d('0x48')]=_[_0x0f3d('0x49')](_0x27eee3[_0x0f3d('0x45')],_0x27eee3[_0x0f3d('0x46')]);_0x344f1c[_0x0f3d('0x4a')]=_['intersection'](_0x27eee3['model'],qs[_0x0f3d('0x4b')](_0x2938c9[_0x0f3d('0x46')][_0x0f3d('0x4b')]));_0x344f1c[_0x0f3d('0x4a')]=_0x344f1c['attributes'][_0x0f3d('0x5a')]?_0x344f1c[_0x0f3d('0x4a')]:_0x27eee3[_0x0f3d('0x45')];if(!_0x2938c9['query'][_0x0f3d('0x4c')](_0x0f3d('0x4d'))){_0x344f1c[_0x0f3d('0x30')]=qs[_0x0f3d('0x30')](_0x2938c9['query'][_0x0f3d('0x30')]);_0x344f1c[_0x0f3d('0x32')]=qs[_0x0f3d('0x32')](_0x2938c9['query'][_0x0f3d('0x32')]);}_0x344f1c[_0x0f3d('0x4e')]=qs[_0x0f3d('0x4f')](_0x2938c9[_0x0f3d('0x46')][_0x0f3d('0x4f')]);_0x344f1c[_0x0f3d('0x50')]=qs[_0x0f3d('0x48')](_['pick'](_0x2938c9['query'],_0x27eee3['filters']));_0x344f1c['where']['WhatsappAccountId']=_0x422ac9['id'];if(_0x2938c9[_0x0f3d('0x46')][_0x0f3d('0x51')]){_0x344f1c[_0x0f3d('0x50')]=_[_0x0f3d('0x52')](_0x344f1c['where'],{'$or':_[_0x0f3d('0x41')](_0x344f1c[_0x0f3d('0x4a')],function(_0x4a997d){var _0x1a562f={};_0x1a562f[_0x4a997d]={'$like':'%'+_0x2938c9[_0x0f3d('0x46')][_0x0f3d('0x51')]+'%'};return _0x1a562f;})});}_0x344f1c=_[_0x0f3d('0x52')]({},_0x344f1c,_0x2938c9['options']);return db[_0x0f3d('0x68')][_0x0f3d('0x31')]({'where':_0x344f1c[_0x0f3d('0x50')]})[_0x0f3d('0x23')](function(_0x2f1b55){_0x48bc23[_0x0f3d('0x31')]=_0x2f1b55;if(_0x2938c9[_0x0f3d('0x46')][_0x0f3d('0x54')]){_0x344f1c[_0x0f3d('0x55')]=[{'all':!![]}];}return db['Disposition'][_0x0f3d('0x6a')](_0x344f1c);})[_0x0f3d('0x23')](function(_0x454d14){_0x48bc23[_0x0f3d('0x56')]=_0x454d14;return _0x48bc23;});}})[_0x0f3d('0x23')](respondWithFilteredResult(_0x4beb8d,_0x344f1c))[_0x0f3d('0x57')](handleError(_0x4beb8d,null));};exports[_0x0f3d('0x6b')]=function(_0x52ab69,_0x49d2ff,_0xc0c290){return db[_0x0f3d('0x42')]['find']({'where':{'id':_0x52ab69[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x49d2ff,null))['then'](function(_0x2b5222){if(_0x2b5222){return _0x2b5222[_0x0f3d('0x6b')](_0x52ab69['query'][_0x0f3d('0x6c')]);}})['then'](respondWithStatusCode(_0x49d2ff,null))[_0x0f3d('0x57')](handleError(_0x49d2ff,null));};exports[_0x0f3d('0x6d')]=function(_0xbce913,_0x126cfa,_0x4fb54d){if(_0xbce913['body']['id']){delete _0xbce913['body']['id'];}return db[_0x0f3d('0x42')]['find']({'where':{'id':_0xbce913[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x126cfa,null))[_0x0f3d('0x23')](function(_0x5e233e){if(_0x5e233e){_0xbce913[_0x0f3d('0x64')]['WhatsappAccountId']=_0x5e233e['id'];return db[_0x0f3d('0x6e')][_0x0f3d('0x5c')](_0xbce913[_0x0f3d('0x64')]);}})[_0x0f3d('0x23')](respondWithResult(_0x126cfa,null))[_0x0f3d('0x57')](handleError(_0x126cfa,null));};exports['getAnswers']=function(_0x49653c,_0x26f83c,_0x58d822){var _0x5b89ef={'raw':![],'where':{}};var _0x1c883a={};var _0x555798={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x0f3d('0x69')]({'where':{'id':_0x49653c[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x26f83c,null))[_0x0f3d('0x23')](function(_0x35afe0){if(_0x35afe0){_0x1c883a['model']=_[_0x0f3d('0x47')](db[_0x0f3d('0x6e')][_0x0f3d('0x43')]);_0x1c883a[_0x0f3d('0x46')]=_[_0x0f3d('0x47')](_0x49653c[_0x0f3d('0x46')]);_0x1c883a[_0x0f3d('0x48')]=_[_0x0f3d('0x49')](_0x1c883a['model'],_0x1c883a['query']);_0x5b89ef[_0x0f3d('0x4a')]=_['intersection'](_0x1c883a[_0x0f3d('0x45')],qs[_0x0f3d('0x4b')](_0x49653c[_0x0f3d('0x46')][_0x0f3d('0x4b')]));_0x5b89ef[_0x0f3d('0x4a')]=_0x5b89ef[_0x0f3d('0x4a')]['length']?_0x5b89ef[_0x0f3d('0x4a')]:_0x1c883a[_0x0f3d('0x45')];if(!_0x49653c[_0x0f3d('0x46')][_0x0f3d('0x4c')](_0x0f3d('0x4d'))){_0x5b89ef[_0x0f3d('0x30')]=qs['limit'](_0x49653c['query'][_0x0f3d('0x30')]);_0x5b89ef[_0x0f3d('0x32')]=qs[_0x0f3d('0x32')](_0x49653c[_0x0f3d('0x46')][_0x0f3d('0x32')]);}_0x5b89ef[_0x0f3d('0x4e')]=qs['sort'](_0x49653c[_0x0f3d('0x46')][_0x0f3d('0x4f')]);_0x5b89ef['where']=qs['filters'](_[_0x0f3d('0x6f')](_0x49653c['query'],_0x1c883a['filters']));_0x5b89ef[_0x0f3d('0x50')]['WhatsappAccountId']=_0x35afe0['id'];if(_0x49653c[_0x0f3d('0x46')]['filter']){_0x5b89ef['where']=_[_0x0f3d('0x52')](_0x5b89ef[_0x0f3d('0x50')],{'$or':_[_0x0f3d('0x41')](_0x5b89ef[_0x0f3d('0x4a')],function(_0x5d3ad9){var _0xa96d45={};_0xa96d45[_0x5d3ad9]={'$like':'%'+_0x49653c[_0x0f3d('0x46')][_0x0f3d('0x51')]+'%'};return _0xa96d45;})});}_0x5b89ef=_[_0x0f3d('0x52')]({},_0x5b89ef,_0x49653c['options']);return db[_0x0f3d('0x6e')][_0x0f3d('0x31')]({'where':_0x5b89ef[_0x0f3d('0x50')]})[_0x0f3d('0x23')](function(_0x557245){_0x555798['count']=_0x557245;if(_0x49653c[_0x0f3d('0x46')][_0x0f3d('0x54')]){_0x5b89ef[_0x0f3d('0x55')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x5b89ef);})[_0x0f3d('0x23')](function(_0x4febc6){_0x555798[_0x0f3d('0x56')]=_0x4febc6;return _0x555798;});}})[_0x0f3d('0x23')](respondWithFilteredResult(_0x26f83c,_0x5b89ef))[_0x0f3d('0x57')](handleError(_0x26f83c,null));};exports[_0x0f3d('0x70')]=function(_0x2703de,_0x58214e,_0x405791){return db[_0x0f3d('0x42')][_0x0f3d('0x5b')]({'where':{'id':_0x2703de[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x58214e,null))[_0x0f3d('0x23')](function(_0x17b7f1){if(_0x17b7f1){return _0x17b7f1[_0x0f3d('0x70')](_0x2703de[_0x0f3d('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x58214e,null))[_0x0f3d('0x57')](handleError(_0x58214e,null));};exports[_0x0f3d('0x71')]=function(_0x42d2d0,_0x37bfb3,_0xe76aff){return db['WhatsappAccount']['find']({'where':{'id':_0x42d2d0['params']['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x37bfb3,null))['then'](function(_0x321764){if(_0x321764){return _0x321764[_0x0f3d('0x71')](_0x42d2d0[_0x0f3d('0x64')][_0x0f3d('0x6c')],_[_0x0f3d('0x72')](_0x42d2d0[_0x0f3d('0x64')],['ids','id'])||{})[_0x0f3d('0x73')](function(_0x5a1c58){for(var _0x14ed9a=0x0;_0x14ed9a<_0x42d2d0[_0x0f3d('0x64')]['ids'][_0x0f3d('0x5a')];_0x14ed9a+=0x1){socket['emit'](_0x0f3d('0x74'),{'UserId':Number(_0x42d2d0[_0x0f3d('0x64')][_0x0f3d('0x6c')][_0x14ed9a]),'WhatsappAccountId':Number(_0x42d2d0['params']['id'])});}return _0x5a1c58;});}})[_0x0f3d('0x23')](respondWithResult(_0x37bfb3,null))[_0x0f3d('0x57')](handleError(_0x37bfb3,null));};exports[_0x0f3d('0x75')]=function(_0xcfeb55,_0x488405,_0x28f9db){return db[_0x0f3d('0x42')][_0x0f3d('0x5b')]({'where':{'id':_0xcfeb55[_0x0f3d('0x59')]['id']}})['then'](handleEntityNotFound(_0x488405,null))[_0x0f3d('0x23')](function(_0x20a18d){if(_0x20a18d){return _0x20a18d['removeAgents'](_0xcfeb55['query'][_0x0f3d('0x6c')])[_0x0f3d('0x23')](function(){if(_[_0x0f3d('0x76')](_0xcfeb55[_0x0f3d('0x46')][_0x0f3d('0x6c')])){for(var _0x12f70d=0x0;_0x12f70d<_0xcfeb55[_0x0f3d('0x46')][_0x0f3d('0x6c')][_0x0f3d('0x5a')];_0x12f70d+=0x1){socket[_0x0f3d('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0xcfeb55[_0x0f3d('0x46')][_0x0f3d('0x6c')][_0x12f70d]),'WhatsappAccountId':Number(_0xcfeb55[_0x0f3d('0x59')]['id'])});}}else{socket[_0x0f3d('0x77')](_0x0f3d('0x78'),{'UserId':Number(_0xcfeb55[_0x0f3d('0x46')][_0x0f3d('0x6c')]),'WhatsappAccountId':Number(_0xcfeb55[_0x0f3d('0x59')]['id'])});}});}})[_0x0f3d('0x23')](respondWithStatusCode(_0x488405,null))[_0x0f3d('0x57')](handleError(_0x488405,null));};exports[_0x0f3d('0x79')]=function(_0x4e9811,_0x527f79,_0x23a5cb){var _0x2c1c89={};var _0x243ca1={};var _0x56c94d;var _0x369c03;return db[_0x0f3d('0x42')]['findOne']({'where':{'id':_0x4e9811[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x527f79,null))[_0x0f3d('0x23')](function(_0x558d30){if(_0x558d30){_0x56c94d=_0x558d30;_0x243ca1[_0x0f3d('0x45')]=_['keys'](db[_0x0f3d('0x7a')]['rawAttributes']);_0x243ca1[_0x0f3d('0x46')]=_[_0x0f3d('0x47')](_0x4e9811[_0x0f3d('0x46')]);_0x243ca1['filters']=_['intersection'](_0x243ca1[_0x0f3d('0x45')],_0x243ca1[_0x0f3d('0x46')]);_0x2c1c89[_0x0f3d('0x4a')]=_['intersection'](_0x243ca1['model'],qs[_0x0f3d('0x4b')](_0x4e9811[_0x0f3d('0x46')][_0x0f3d('0x4b')]));_0x2c1c89['attributes']=_0x2c1c89[_0x0f3d('0x4a')][_0x0f3d('0x5a')]?_0x2c1c89['attributes']:_0x243ca1['model'];_0x2c1c89['order']=qs[_0x0f3d('0x4f')](_0x4e9811[_0x0f3d('0x46')][_0x0f3d('0x4f')]);_0x2c1c89[_0x0f3d('0x50')]=qs['filters'](_['pick'](_0x4e9811[_0x0f3d('0x46')],_0x243ca1[_0x0f3d('0x48')]));if(_0x4e9811[_0x0f3d('0x46')][_0x0f3d('0x51')]){_0x2c1c89['where']=_[_0x0f3d('0x52')](_0x2c1c89[_0x0f3d('0x50')],{'$or':_[_0x0f3d('0x41')](_0x2c1c89[_0x0f3d('0x4a')],function(_0x1317ea){var _0x892849={};_0x892849[_0x1317ea]={'$like':'%'+_0x4e9811[_0x0f3d('0x46')]['filter']+'%'};return _0x892849;})});}_0x2c1c89=_[_0x0f3d('0x52')]({},_0x2c1c89,_0x4e9811[_0x0f3d('0x53')]);return _0x56c94d['getAgents'](_0x2c1c89);}})['then'](function(_0x5d69be){if(_0x5d69be){_0x369c03=_0x5d69be[_0x0f3d('0x5a')];if(!_0x4e9811['query'][_0x0f3d('0x4c')](_0x0f3d('0x4d'))){_0x2c1c89[_0x0f3d('0x30')]=qs['limit'](_0x4e9811[_0x0f3d('0x46')][_0x0f3d('0x30')]);_0x2c1c89[_0x0f3d('0x32')]=qs[_0x0f3d('0x32')](_0x4e9811[_0x0f3d('0x46')][_0x0f3d('0x32')]);}return _0x56c94d['getAgents'](_0x2c1c89);}})['then'](function(_0x4c46d2){if(_0x4c46d2){return _0x4c46d2?{'count':_0x369c03,'rows':_0x4c46d2}:null;}})[_0x0f3d('0x23')](respondWithResult(_0x527f79,null))[_0x0f3d('0x57')](handleError(_0x527f79,null));};exports[_0x0f3d('0x7b')]=function(_0x1dc515,_0x11aebf){var _0x470750=_0x1dc515['params']['id'];var _0x51117c=_0x1dc515['body'];var _0x4a9bf3=0xc8;var _0x582964=null;return db['sequelize'][_0x0f3d('0x7c')]({'isolationLevel':db[_0x0f3d('0x7d')][_0x0f3d('0x7e')][_0x0f3d('0x7f')][_0x0f3d('0x80')]},function(_0x4ca142){return db[_0x0f3d('0x42')]['findOne']({'where':{'id':_0x470750},'transaction':_0x4ca142})['then'](function(_0x3625f0){if(_0x3625f0){return db[_0x0f3d('0x81')][_0x0f3d('0x37')]({'where':{'WhatsappAccountId':_0x470750},'transaction':_0x4ca142})['then'](function(){var _0x58b5c2=_[_0x0f3d('0x41')](_0x51117c,function(_0x2609ba){_0x2609ba['WhatsappAccountId']=_0x470750;return _0x2609ba;});return db[_0x0f3d('0x81')]['bulkCreate'](_0x58b5c2,{'transaction':_0x4ca142});});}else{_0x4a9bf3=0x194;_0x582964=[];}});})[_0x0f3d('0x23')](function(){if(_0x4a9bf3!==0x194){return db[_0x0f3d('0x81')][_0x0f3d('0x82')]({'where':{'WhatsappAccountId':_0x470750},'order':_0x0f3d('0x83')})[_0x0f3d('0x23')](function(_0x4ba36d){_0x582964=_0x4ba36d;});}})[_0x0f3d('0x57')](function(_0x25e4a1){_0x4a9bf3=0x1f4;logger[_0x0f3d('0x27')](_0x25e4a1['stack']);if(_0x25e4a1[_0x0f3d('0x3d')]){delete _0x25e4a1[_0x0f3d('0x3d')];}_0x582964=_0x25e4a1;})['finally'](function(){if(_0x582964===null){_0x11aebf[_0x0f3d('0x84')](_0x4a9bf3);}else{if(_0x4a9bf3===0x1f4){_0x11aebf['status'](_0x4a9bf3)['send'](_0x582964);}else{_0x11aebf['status'](_0x4a9bf3)[_0x0f3d('0x2e')](_0x582964);}}});};exports[_0x0f3d('0x85')]=function(_0x1ef55e,_0x205895,_0xf8eb1){var _0x2ec571={};var _0x4ff649={};var _0x91d2a6;var _0x491a33;return db[_0x0f3d('0x42')]['findOne']({'where':{'id':_0x1ef55e[_0x0f3d('0x59')]['id']}})[_0x0f3d('0x23')](handleEntityNotFound(_0x205895,null))[_0x0f3d('0x23')](function(_0x2b25b7){if(_0x2b25b7){_0x91d2a6=_0x2b25b7;_0x4ff649[_0x0f3d('0x45')]=_[_0x0f3d('0x47')](db[_0x0f3d('0x81')][_0x0f3d('0x43')]);_0x4ff649[_0x0f3d('0x46')]=_[_0x0f3d('0x47')](_0x1ef55e[_0x0f3d('0x46')]);_0x4ff649[_0x0f3d('0x48')]=_[_0x0f3d('0x49')](_0x4ff649[_0x0f3d('0x45')],_0x4ff649[_0x0f3d('0x46')]);_0x2ec571[_0x0f3d('0x4a')]=_['intersection'](_0x4ff649[_0x0f3d('0x45')],qs[_0x0f3d('0x4b')](_0x1ef55e['query'][_0x0f3d('0x4b')]));_0x2ec571[_0x0f3d('0x4a')]=_0x2ec571['attributes'][_0x0f3d('0x5a')]?_0x2ec571[_0x0f3d('0x4a')]:_0x4ff649[_0x0f3d('0x45')];_0x2ec571[_0x0f3d('0x4e')]=qs[_0x0f3d('0x4f')](_0x1ef55e[_0x0f3d('0x46')][_0x0f3d('0x4f')]);_0x2ec571['where']=qs[_0x0f3d('0x48')](_[_0x0f3d('0x6f')](_0x1ef55e['query'],_0x4ff649[_0x0f3d('0x48')]));if(_0x1ef55e['query']['filter']){_0x2ec571[_0x0f3d('0x50')]=_[_0x0f3d('0x52')](_0x2ec571[_0x0f3d('0x50')],{'$or':_['map'](_0x2ec571[_0x0f3d('0x4a')],function(_0x50cdfb){var _0x3658b2={};_0x3658b2[_0x50cdfb]={'$like':'%'+_0x1ef55e['query']['filter']+'%'};return _0x3658b2;})});}_0x2ec571=_[_0x0f3d('0x52')]({},_0x2ec571,_0x1ef55e['options']);return _0x91d2a6[_0x0f3d('0x85')](_0x2ec571);}})[_0x0f3d('0x23')](function(_0x5191d5){if(_0x5191d5){_0x491a33=_0x5191d5[_0x0f3d('0x5a')];if(!_0x1ef55e[_0x0f3d('0x46')][_0x0f3d('0x4c')](_0x0f3d('0x4d'))){_0x2ec571['limit']=qs['limit'](_0x1ef55e['query'][_0x0f3d('0x30')]);_0x2ec571[_0x0f3d('0x32')]=qs[_0x0f3d('0x32')](_0x1ef55e[_0x0f3d('0x46')]['offset']);}return _0x91d2a6[_0x0f3d('0x85')](_0x2ec571);}})[_0x0f3d('0x23')](function(_0x4b6942){if(_0x4b6942){return _0x4b6942?{'count':_0x491a33,'rows':_0x4b6942}:null;}})[_0x0f3d('0x23')](respondWithResult(_0x205895,null))[_0x0f3d('0x57')](handleError(_0x205895,null));};exports[_0x0f3d('0x86')]=function(_0x32feef,_0x3c7961,_0x1e6019){var _0x164757={'channel':'whatsapp'};var _0x18f485=[];var _0xd9bce7=[];var _0x4dc7f0={};return db[_0x0f3d('0x42')][_0x0f3d('0x5b')]({'where':{'id':_0x32feef[_0x0f3d('0x59')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x0f3d('0x87')}]})['then'](handleEntityNotFound(_0x3c7961,null))['then'](function(_0x26fc8b){_0x164757['account']=_0x26fc8b;if(_0x164757[_0x0f3d('0x88')]&&_0x164757[_0x0f3d('0x88')][_0x0f3d('0x44')]===_0x0f3d('0x89')&&_0x32feef['body'][_0x0f3d('0x8a')]){if(_0x32feef[_0x0f3d('0x64')]['statuses'][_0x0f3d('0x5a')]===0x0)return;if(_0x32feef[_0x0f3d('0x64')][_0x0f3d('0x8a')][0x0]['state']!==_0x0f3d('0x8b'))return;return db[_0x0f3d('0x8c')]['update']({'read':!![],'readAt':_0x32feef[_0x0f3d('0x64')]['statuses'][0x0][_0x0f3d('0x8d')]},{'where':{'messageId':_0x32feef['body'][_0x0f3d('0x8a')][0x0][_0x0f3d('0x8e')]},'individualHooks':!![]})[_0x0f3d('0x23')](function(_0x478ee0){return _0x3c7961[_0x0f3d('0x2d')](0xc8)['json'](_0x478ee0);});}_0x164757[_0x0f3d('0x8f')]=_[_0x0f3d('0x90')](_0x26fc8b[_0x0f3d('0x87')],['priority'],[_0x0f3d('0x91')]);if(_0x164757[_0x0f3d('0x88')]['Applications']){delete _0x164757[_0x0f3d('0x88')][_0x0f3d('0x87')];}return db['CmContact'][_0x0f3d('0x65')]()['then'](function(_0x42ba16){if(!_0x42ba16){throw new db[(_0x0f3d('0x92'))][(_0x0f3d('0x93'))](_0x0f3d('0x94'));}_0x18f485=_[_0x0f3d('0x95')](_[_0x0f3d('0x47')](_0x42ba16),['createdAt','updatedAt']);_0xd9bce7=_[_0x0f3d('0x95')](_['keys'](_0x42ba16),[_0x0f3d('0x96'),_0x0f3d('0x97'),_0x0f3d('0x98'),_0x0f3d('0x99')]);_0x164757[_0x0f3d('0x64')]={'mapKey':_0x0f3d('0x9a')};if(_0x164757['account']&&_0x164757[_0x0f3d('0x88')]['type']==='twilio'){_0x164757['body'][_0x0f3d('0x9b')]=_0x32feef['body']['From'][_0x0f3d('0x9c')](_0x0f3d('0x9d'),'');_0x164757[_0x0f3d('0x64')][_0x0f3d('0x64')]=_0x32feef[_0x0f3d('0x64')]['Body'];_0x164757['body'][_0x0f3d('0x9e')]=_0x32feef[_0x0f3d('0x64')][_0x0f3d('0x9f')];}if(_0x164757[_0x0f3d('0x88')]&&_0x164757['account'][_0x0f3d('0x44')]===_0x0f3d('0x89')){_0x164757[_0x0f3d('0x64')][_0x0f3d('0x9b')]=_0x32feef[_0x0f3d('0x64')][_0x0f3d('0xa0')][0x0]['from'];_0x164757[_0x0f3d('0x64')][_0x0f3d('0x64')]=_0x32feef[_0x0f3d('0x64')]['notifications'][0x0][_0x0f3d('0x2a')][_0x0f3d('0x64')];_0x164757['body'][_0x0f3d('0x9e')]=_0x32feef[_0x0f3d('0x64')][_0x0f3d('0xa0')][0x0]['message_id'];}if(_0x164757['body']['id']){delete _0x164757['body']['id'];}if(_[_0x0f3d('0xa1')](_0x164757[_0x0f3d('0x64')][_0x0f3d('0x9b')])){throw new db[(_0x0f3d('0x92'))][(_0x0f3d('0x93'))]('from\x20is\x20mandatory');}if(_[_0x0f3d('0xa1')](_0x164757['body'][_0x0f3d('0x64')])||_0x164757[_0x0f3d('0x64')][_0x0f3d('0x64')]===''){throw new db[(_0x0f3d('0x92'))][(_0x0f3d('0x93'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x0f3d('0xa1')](_0x164757[_0x0f3d('0x64')][_0x0f3d('0xa2')])){throw new db[(_0x0f3d('0x92'))][(_0x0f3d('0x93'))](_0x0f3d('0xa3')+_0xd9bce7);}if(!_[_0x0f3d('0xa4')](_0xd9bce7,_0x164757['body'][_0x0f3d('0xa2')])){throw new db[(_0x0f3d('0x92'))][(_0x0f3d('0x93'))](_0x0f3d('0xa5')+_0xd9bce7);}_0x4dc7f0[_0x164757['body'][_0x0f3d('0xa2')]]=_0x164757[_0x0f3d('0x64')][_0x0f3d('0x9b')];return db[_0x0f3d('0xa6')][_0x0f3d('0x5b')]({'where':{'id':_0x164757['account'][_0x0f3d('0x99')]},'include':[{'model':db[_0x0f3d('0xa7')],'as':_0x0f3d('0xa8'),'where':_0x4dc7f0,'limit':0x1,'order':[[_0x0f3d('0x97'),_0x0f3d('0xa9')]]}]});})[_0x0f3d('0x23')](handleEntityNotFound(_0x3c7961,null))[_0x0f3d('0x23')](function(_0xfc843a){if(_0xfc843a){_0x164757[_0x0f3d('0xaa')]=_[_0x0f3d('0x72')](_0xfc843a,['Contacts']);if(_0xfc843a[_0x0f3d('0xa8')]['length']){return _0xfc843a[_0x0f3d('0xa8')][0x0];}var _0xdc4e71=_[_0x0f3d('0x1b')](_0x164757['body'],{'firstName':_0x164757['body'][_0x0f3d('0x9b')],'ListId':_0xfc843a['id']});_0xdc4e71[_0x164757[_0x0f3d('0x64')][_0x0f3d('0xa2')]]=_0x164757[_0x0f3d('0x64')]['from'];return db[_0x0f3d('0xa7')][_0x0f3d('0x5c')](_0xdc4e71,{'fields':_0x18f485,'raw':!![]});}})[_0x0f3d('0x23')](handleEntityNotFound(_0x3c7961,null))[_0x0f3d('0x23')](function(_0x424c0a){if(_0x424c0a){_0x164757['contact']=_0x424c0a;var _0x1d8d2c={'ContactId':_0x424c0a['id'],'phone':_0x164757[_0x0f3d('0x64')]['from'],'WhatsappAccountId':_0x32feef[_0x0f3d('0x59')]['id']};var _0x501724={'ContactId':_0x424c0a['id'],'WhatsappAccountId':_0x32feef[_0x0f3d('0x59')]['id'],'closed':![]};return db[_0x0f3d('0xab')][_0x0f3d('0x5b')]({'where':_0x501724})[_0x0f3d('0x23')](function(_0x3efd77){if(_0x3efd77){return[_0x3efd77,![]];}return db[_0x0f3d('0xab')][_0x0f3d('0x5c')](_0x1d8d2c)[_0x0f3d('0x23')](function(_0x3684f5){return[_0x3684f5,!![]];});});}})['spread'](function(_0x5cc913,_0x224313){_0x164757[_0x0f3d('0xac')]=_0x5cc913[_0x0f3d('0x38')]({'plain':!![]});_0x164757[_0x0f3d('0xac')][_0x0f3d('0xad')]=![];if(_0x224313){if(_0x164757[_0x0f3d('0x88')][_0x0f3d('0xae')]){_0x164757['applications'][_0x0f3d('0xaf')]({'id':0x0,'priority':_0x164757['applications']['length']+0x1,'app':_0x0f3d('0xb0'),'appdata':_0x0f3d('0xb1'),'interval':_0x0f3d('0xb2')});}_0x164757['interaction'][_0x0f3d('0xad')]=!![];}return db['WhatsappMessage'][_0x0f3d('0x5c')]({'phone':_0x164757[_0x0f3d('0x64')][_0x0f3d('0x9b')],'messageId':_0x164757[_0x0f3d('0x64')][_0x0f3d('0x9e')],'body':_0x164757[_0x0f3d('0x64')][_0x0f3d('0x64')],'WhatsappAccountId':_0x32feef[_0x0f3d('0x59')]['id'],'WhatsappInteractionId':_0x5cc913['id'],'direction':'in','ContactId':_0x5cc913[_0x0f3d('0xb3')],'AttachmentId':_0x164757[_0x0f3d('0x64')][_0x0f3d('0xb4')]});})[_0x0f3d('0x23')](function(_0x1033a4){_0x164757['message']=_0x1033a4;if(_0x164757['interaction'][_0x0f3d('0xb5')]){return db['User'][_0x0f3d('0x5b')]({'attributes':['id',_0x0f3d('0x3d')],'where':{'id':_0x164757[_0x0f3d('0xac')][_0x0f3d('0xb5')]}})[_0x0f3d('0x23')](function(_0x543c2b){if(_0x543c2b){_0x164757[_0x0f3d('0x8f')][_0x0f3d('0xb6')]({'id':0x0,'priority':0x0,'app':_0x0f3d('0xb7'),'appdata':_0x543c2b[_0x0f3d('0x3d')]+','+(_0x164757[_0x0f3d('0x88')][_0x0f3d('0xb8')]||0xa),'interval':_0x0f3d('0xb2')});}return respondWithRpcPromise(_0x0f3d('0xb9'),_0x0f3d('0xba'),_0x164757);});}return respondWithRpcPromise(_0x0f3d('0xb9'),_0x0f3d('0xba'),_0x164757);})[_0x0f3d('0x23')](function(_0xcc4290){if(_0xcc4290){var _0x123b62=0xc8;var _0x32225=_0x0f3d('0xbb');logger[_0x0f3d('0x2b')](_0x0f3d('0xbc'),_0x32225,_0x123b62,_0x0f3d('0xbd'));logger[_0x0f3d('0x25')](_0x0f3d('0xbe'),_0x32225,_0x123b62,_0x0f3d('0xbd'),JSON[_0x0f3d('0x26')](_0xcc4290));if(_0x164757['account'][_0x0f3d('0x44')]===_0x0f3d('0xbf')){return _0x3c7961[_0x0f3d('0x2d')](_0x123b62)[_0x0f3d('0x33')]('Content-Type',_0x0f3d('0xc0'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x3c7961[_0x0f3d('0x2d')](_0x123b62)[_0x0f3d('0x2e')](_0xcc4290);}}});})['catch'](handleError(_0x3c7961,null));};exports['send']=function(_0x222e0a,_0x25f954,_0x258be4){var _0x36b806,_0x74a898,_0x479ece;if(_[_0x0f3d('0xa1')](_0x222e0a[_0x0f3d('0x64')][_0x0f3d('0x64')])||_0x222e0a[_0x0f3d('0x64')][_0x0f3d('0x64')]===''){throw new db[(_0x0f3d('0x92'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x0f3d('0xa1')](_0x222e0a['body']['to'])){throw new db[(_0x0f3d('0x92'))]['ValidationError'](_0x0f3d('0xc1'));}_0x36b806=_0x222e0a['body']['to'];return db[_0x0f3d('0x42')][_0x0f3d('0x5b')]({'where':{'id':_0x222e0a[_0x0f3d('0x59')]['id']},'include':[{'model':db[_0x0f3d('0xa6')],'as':_0x0f3d('0xc2'),'include':[{'model':db[_0x0f3d('0xa7')],'as':'Contacts','where':{'mobile':_0x36b806},'limit':0x1,'order':[[_0x0f3d('0x97'),_0x0f3d('0xa9')]]}]}]})[_0x0f3d('0x23')](handleEntityNotFound(_0x25f954,null))[_0x0f3d('0x23')](function(_0x5e9973){if(_0x5e9973&&_0x5e9973[_0x0f3d('0xc2')]){_0x74a898=_0x5e9973['get']({'plain':!![]});if(_0x74a898[_0x0f3d('0xc2')]&&_0x74a898[_0x0f3d('0xc2')][_0x0f3d('0xa8')][_0x0f3d('0x5a')]){return _0x74a898[_0x0f3d('0xc2')][_0x0f3d('0xa8')][0x0];}return db[_0x0f3d('0xa7')][_0x0f3d('0x5c')](_['defaults'](_0x222e0a['body'],{'firstName':_0x36b806,'mobile':_0x36b806,'phone':_0x36b806,'ListId':_0x74a898['ListId']}));}})[_0x0f3d('0x23')](handleEntityNotFound(_0x25f954,null))[_0x0f3d('0x23')](function(_0x5c86be){if(_0x5c86be){_0x479ece=_0x5c86be;return db[_0x0f3d('0xab')][_0x0f3d('0x5b')]({'where':{'ContactId':_0x479ece['id'],'closed':![],'WhatsappAccountId':_0x74a898['id']}})[_0x0f3d('0x23')](function(_0xec4b00){if(_0xec4b00){return[_0xec4b00,![]];}return db[_0x0f3d('0xab')][_0x0f3d('0x5c')]({'UserId':_0x222e0a[_0x0f3d('0x5d')]['id'],'ContactId':_0x479ece['id'],'WhatsappAccountId':_0x74a898['id'],'phone':_0x36b806,'firstMsgDirection':_0x0f3d('0xc3'),'Messages':[_[_0x0f3d('0x52')](_0x222e0a['body'],{'read':![],'body':_0x222e0a[_0x0f3d('0x64')][_0x0f3d('0x64')],'phone':_0x36b806,'WhatsappAccountId':_0x74a898['id'],'UserId':_0x222e0a[_0x0f3d('0x5d')]['id'],'ContactId':_0x479ece['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x0f3d('0xc4')}]})['then'](function(_0xe0b522){return[_0xe0b522,!![]];});});}})[_0x0f3d('0x73')](function(_0x303d34,_0x266ffe){if(_0x266ffe){return _0x303d34;}return db['WhatsappMessage'][_0x0f3d('0x5c')](_['merge'](_0x222e0a[_0x0f3d('0x64')],{'read':![],'body':_0x222e0a[_0x0f3d('0x64')][_0x0f3d('0x64')],'phone':_0x36b806,'WhatsappAccountId':_0x74a898['id'],'WhatsappInteractionId':_0x303d34['id'],'UserId':_0x222e0a['user']['id'],'ContactId':_0x479ece['id']}))[_0x0f3d('0x23')](function(_0xe522c2){_0x303d34[_0x0f3d('0xc5')][_0x0f3d('0xc4')]=[];_0x303d34[_0x0f3d('0xc5')][_0x0f3d('0xc4')]['push'](_0xe522c2['dataValues']);return _0x303d34;});})[_0x0f3d('0x23')](respondWithResult(_0x25f954,null))[_0x0f3d('0x57')](handleError(_0x25f954,null));};
\ No newline at end of file
index a9904a5..ad59cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6621=['WhatsappAccount','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3791c8,_0xc48123){var _0x62c73a=function(_0x570c62){while(--_0x570c62){_0x3791c8['push'](_0x3791c8['shift']());}};_0x62c73a(++_0xc48123);}(_0x6621,0xb2));var _0x1662=function(_0x3c5334,_0x9ae4f5){_0x3c5334=_0x3c5334-0x0;var _0x2dcad7=_0x6621[_0x3c5334];return _0x2dcad7;};'use strict';var EventEmitter=require(_0x1662('0x0'));var WhatsappAccount=require(_0x1662('0x1'))['db'][_0x1662('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x1662('0x3')](0x0);var events={'afterCreate':_0x1662('0x4'),'afterUpdate':_0x1662('0x5'),'afterDestroy':'remove'};function emitEvent(_0x387004){return function(_0x41d191,_0x30dfd0,_0x4a24ab){WhatsappAccountEvents[_0x1662('0x6')](_0x387004+':'+_0x41d191['id'],_0x41d191);WhatsappAccountEvents[_0x1662('0x6')](_0x387004,_0x41d191);_0x4a24ab(null);};}for(var e in events){if(events[_0x1662('0x7')](e)){var event=events[e];WhatsappAccount[_0x1662('0x8')](e,emitEvent(event));}}module[_0x1662('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x40d2=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners'];(function(_0x2d739f,_0x1b3151){var _0x4e926b=function(_0x3fac32){while(--_0x3fac32){_0x2d739f['push'](_0x2d739f['shift']());}};_0x4e926b(++_0x1b3151);}(_0x40d2,0x178));var _0x240d=function(_0x2c3732,_0x39d48b){_0x2c3732=_0x2c3732-0x0;var _0x2075e0=_0x40d2[_0x2c3732];return _0x2075e0;};'use strict';var EventEmitter=require(_0x240d('0x0'));var WhatsappAccount=require(_0x240d('0x1'))['db'][_0x240d('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x240d('0x3')](0x0);var events={'afterCreate':_0x240d('0x4'),'afterUpdate':_0x240d('0x5'),'afterDestroy':_0x240d('0x6')};function emitEvent(_0x3daa62){return function(_0xb2d08b,_0x340df6,_0x34ff26){WhatsappAccountEvents[_0x240d('0x7')](_0x3daa62+':'+_0xb2d08b['id'],_0xb2d08b);WhatsappAccountEvents['emit'](_0x3daa62,_0xb2d08b);_0x34ff26(null);};}for(var e in events){if(events[_0x240d('0x8')](e)){var event=events[e];WhatsappAccount[_0x240d('0x9')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 1f8ab86..3ebcd99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e05=['whatsapp_accounts','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','define','WhatsappAccount'];(function(_0x5b7167,_0x1ce7e8){var _0x70c04=function(_0x33c3f4){while(--_0x33c3f4){_0x5b7167['push'](_0x5b7167['shift']());}};_0x70c04(++_0x1ce7e8);}(_0x9e05,0x9b));var _0x59e0=function(_0x54162b,_0x593191){_0x54162b=_0x54162b-0x0;var _0x395f74=_0x9e05[_0x54162b];return _0x395f74;};'use strict';var _=require(_0x59e0('0x0'));var util=require('util');var logger=require(_0x59e0('0x1'))('api');var moment=require(_0x59e0('0x2'));var BPromise=require('bluebird');var rp=require(_0x59e0('0x3'));var fs=require('fs');var path=require(_0x59e0('0x4'));var rimraf=require(_0x59e0('0x5'));var config=require(_0x59e0('0x6'));var attributes=require(_0x59e0('0x7'));module['exports']=function(_0x4d212b,_0x47627d){return _0x4d212b[_0x59e0('0x8')](_0x59e0('0x9'),attributes,{'tableName':_0x59e0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf2cf=['api','bluebird','path','rimraf','./whatsappAccount.attributes','exports','define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger'];(function(_0x42aac5,_0x5ce494){var _0x3e1206=function(_0x4e1adb){while(--_0x4e1adb){_0x42aac5['push'](_0x42aac5['shift']());}};_0x3e1206(++_0x5ce494);}(_0xf2cf,0x8d));var _0xff2c=function(_0xbc16a,_0x39a47f){_0xbc16a=_0xbc16a-0x0;var _0x350e1c=_0xf2cf[_0xbc16a];return _0x350e1c;};'use strict';var _=require(_0xff2c('0x0'));var util=require(_0xff2c('0x1'));var logger=require(_0xff2c('0x2'))(_0xff2c('0x3'));var moment=require('moment');var BPromise=require(_0xff2c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff2c('0x5'));var rimraf=require(_0xff2c('0x6'));var config=require('../../config/environment');var attributes=require(_0xff2c('0x7'));module[_0xff2c('0x8')]=function(_0x22c28c,_0x2e0db2){return _0x22c28c[_0xff2c('0x9')](_0xff2c('0xa'),attributes,{'tableName':_0xff2c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bae150..c7062e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e6e=['include','map','model','attributes','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappAccount.socket','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','ShowWhatsappAccount','WhatsappAccount','options','where'];(function(_0x1eb96d,_0x461b48){var _0x438911=function(_0x2015c3){while(--_0x2015c3){_0x1eb96d['push'](_0x1eb96d['shift']());}};_0x438911(++_0x461b48);}(_0x5e6e,0x74));var _0xe5e6=function(_0xdcedd2,_0x3372ab){_0xdcedd2=_0xdcedd2-0x0;var _0x4b5df8=_0x5e6e[_0xdcedd2];return _0x4b5df8;};'use strict';var _=require(_0xe5e6('0x0'));var util=require(_0xe5e6('0x1'));var moment=require(_0xe5e6('0x2'));var BPromise=require(_0xe5e6('0x3'));var rs=require(_0xe5e6('0x4'));var fs=require('fs');var Redis=require(_0xe5e6('0x5'));var db=require(_0xe5e6('0x6'))['db'];var utils=require(_0xe5e6('0x7'));var logger=require('../../config/logger')(_0xe5e6('0x8'));var config=require(_0xe5e6('0x9'));var jayson=require(_0xe5e6('0xa'));var client=jayson[_0xe5e6('0xb')][_0xe5e6('0xc')]({'port':0x232a});config['redis']=_[_0xe5e6('0xd')](config[_0xe5e6('0xe')],{'host':_0xe5e6('0xf'),'port':0x18eb});var socket=require(_0xe5e6('0x10'))(new Redis(config[_0xe5e6('0xe')]));require(_0xe5e6('0x11'))['register'](socket);function respondWithRpcPromise(_0x4fee11,_0x1c85cb,_0x55d15e){return new BPromise(function(_0x46c339,_0x1887fe){return client[_0xe5e6('0x12')](_0x4fee11,_0x55d15e)[_0xe5e6('0x13')](function(_0x486117){logger[_0xe5e6('0x14')](_0xe5e6('0x15'),_0x1c85cb,_0xe5e6('0x16'));logger[_0xe5e6('0x17')](_0xe5e6('0x18'),_0x1c85cb,_0xe5e6('0x16'),JSON['stringify'](_0x486117));if(_0x486117[_0xe5e6('0x19')]){if(_0x486117[_0xe5e6('0x19')][_0xe5e6('0x1a')]===0x1f4){logger['error'](_0xe5e6('0x15'),_0x1c85cb,_0x486117[_0xe5e6('0x19')][_0xe5e6('0x1b')]);return _0x1887fe(_0x486117['error'][_0xe5e6('0x1b')]);}logger[_0xe5e6('0x19')](_0xe5e6('0x15'),_0x1c85cb,_0x486117['error']['message']);return _0x46c339(_0x486117[_0xe5e6('0x19')][_0xe5e6('0x1b')]);}else{logger['info'](_0xe5e6('0x15'),_0x1c85cb,_0xe5e6('0x16'));_0x46c339(_0x486117['result'][_0xe5e6('0x1b')]);}})['catch'](function(_0x17b89f){logger[_0xe5e6('0x19')]('WhatsappAccount,\x20%s,\x20%s',_0x1c85cb,_0x17b89f);_0x1887fe(_0x17b89f);});});}exports[_0xe5e6('0x1c')]=function(_0x32b8cf){var _0x4bb640=this;return new Promise(function(_0x38f1e7,_0x2d69f4){return db[_0xe5e6('0x1d')]['find']({'raw':_0x32b8cf[_0xe5e6('0x1e')]?_0x32b8cf['options']['raw']===undefined?!![]:![]:!![],'where':_0x32b8cf[_0xe5e6('0x1e')]?_0x32b8cf[_0xe5e6('0x1e')][_0xe5e6('0x1f')]||null:null,'attributes':_0x32b8cf[_0xe5e6('0x1e')]?_0x32b8cf[_0xe5e6('0x1e')]['attributes']||null:null,'include':_0x32b8cf[_0xe5e6('0x1e')]?_0x32b8cf[_0xe5e6('0x1e')][_0xe5e6('0x20')]?_[_0xe5e6('0x21')](_0x32b8cf[_0xe5e6('0x1e')][_0xe5e6('0x20')],function(_0x6cb622){return{'model':db[_0x6cb622[_0xe5e6('0x22')]],'as':_0x6cb622['as'],'attributes':_0x6cb622['attributes'],'include':_0x6cb622['include']?_[_0xe5e6('0x21')](_0x6cb622[_0xe5e6('0x20')],function(_0x1a264e){return{'model':db[_0x1a264e['model']],'as':_0x1a264e['as'],'attributes':_0x1a264e[_0xe5e6('0x23')],'include':_0x1a264e['include']?_[_0xe5e6('0x21')](_0x1a264e[_0xe5e6('0x20')],function(_0x3042b2){return{'model':db[_0x3042b2[_0xe5e6('0x22')]],'as':_0x3042b2['as'],'attributes':_0x3042b2['attributes']};}):[]};}):[]};}):[]:[]})[_0xe5e6('0x13')](function(_0x146611){logger['info'](_0xe5e6('0x1c'),_0x32b8cf);logger['debug'](_0xe5e6('0x1c'),_0x32b8cf,JSON['stringify'](_0x146611));_0x38f1e7(_0x146611);})[_0xe5e6('0x24')](function(_0x12a454){logger[_0xe5e6('0x19')]('ShowWhatsappAccount',_0x12a454[_0xe5e6('0x1b')],_0x32b8cf);_0x2d69f4(_0x4bb640['error'](0x1f4,_0x12a454[_0xe5e6('0x1b')]));});});};
\ No newline at end of file
+var _0xac07=['info','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','include','map','model','then','debug','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','WhatsappAccount,\x20%s,\x20%s','error','message'];(function(_0x22d4f0,_0x23edba){var _0x453942=function(_0x4d7a9b){while(--_0x4d7a9b){_0x22d4f0['push'](_0x22d4f0['shift']());}};_0x453942(++_0x23edba);}(_0xac07,0x152));var _0x7ac0=function(_0x50a451,_0x145a69){_0x50a451=_0x50a451-0x0;var _0x1b73c1=_0xac07[_0x50a451];return _0x1b73c1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7ac0('0x0'));var BPromise=require(_0x7ac0('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7ac0('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x7ac0('0x3'));var logger=require(_0x7ac0('0x4'))(_0x7ac0('0x5'));var config=require(_0x7ac0('0x6'));var jayson=require(_0x7ac0('0x7'));var client=jayson[_0x7ac0('0x8')][_0x7ac0('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x7ac0('0xa')],{'host':_0x7ac0('0xb'),'port':0x18eb});var socket=require(_0x7ac0('0xc'))(new Redis(config['redis']));require(_0x7ac0('0xd'))[_0x7ac0('0xe')](socket);function respondWithRpcPromise(_0x37eff0,_0xa1a208,_0x100afd){return new BPromise(function(_0x2bfee7,_0x2d38e6){return client[_0x7ac0('0xf')](_0x37eff0,_0x100afd)['then'](function(_0x24569e){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0xa1a208,'request\x20sent');logger['debug'](_0x7ac0('0x10'),_0xa1a208,_0x7ac0('0x11'),JSON[_0x7ac0('0x12')](_0x24569e));if(_0x24569e['error']){if(_0x24569e['error']['code']===0x1f4){logger['error'](_0x7ac0('0x13'),_0xa1a208,_0x24569e[_0x7ac0('0x14')]['message']);return _0x2d38e6(_0x24569e[_0x7ac0('0x14')][_0x7ac0('0x15')]);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0xa1a208,_0x24569e[_0x7ac0('0x14')]['message']);return _0x2bfee7(_0x24569e[_0x7ac0('0x14')][_0x7ac0('0x15')]);}else{logger[_0x7ac0('0x16')](_0x7ac0('0x13'),_0xa1a208,_0x7ac0('0x11'));_0x2bfee7(_0x24569e[_0x7ac0('0x17')]['message']);}})[_0x7ac0('0x18')](function(_0x18f80f){logger[_0x7ac0('0x14')]('WhatsappAccount,\x20%s,\x20%s',_0xa1a208,_0x18f80f);_0x2d38e6(_0x18f80f);});});}exports[_0x7ac0('0x19')]=function(_0x4fa273){var _0x4f0d04=this;return new Promise(function(_0x94b03e,_0x47ee9c){return db[_0x7ac0('0x1a')][_0x7ac0('0x1b')]({'raw':_0x4fa273[_0x7ac0('0x1c')]?_0x4fa273[_0x7ac0('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x4fa273[_0x7ac0('0x1c')]?_0x4fa273[_0x7ac0('0x1c')][_0x7ac0('0x1d')]||null:null,'attributes':_0x4fa273[_0x7ac0('0x1c')]?_0x4fa273[_0x7ac0('0x1c')][_0x7ac0('0x1e')]||null:null,'include':_0x4fa273[_0x7ac0('0x1c')]?_0x4fa273['options'][_0x7ac0('0x1f')]?_[_0x7ac0('0x20')](_0x4fa273[_0x7ac0('0x1c')][_0x7ac0('0x1f')],function(_0x220838){return{'model':db[_0x220838[_0x7ac0('0x21')]],'as':_0x220838['as'],'attributes':_0x220838[_0x7ac0('0x1e')],'include':_0x220838['include']?_[_0x7ac0('0x20')](_0x220838[_0x7ac0('0x1f')],function(_0x5750d5){return{'model':db[_0x5750d5[_0x7ac0('0x21')]],'as':_0x5750d5['as'],'attributes':_0x5750d5[_0x7ac0('0x1e')],'include':_0x5750d5[_0x7ac0('0x1f')]?_['map'](_0x5750d5[_0x7ac0('0x1f')],function(_0xe9bf18){return{'model':db[_0xe9bf18[_0x7ac0('0x21')]],'as':_0xe9bf18['as'],'attributes':_0xe9bf18[_0x7ac0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x7ac0('0x22')](function(_0x5625d0){logger['info'](_0x7ac0('0x19'),_0x4fa273);logger[_0x7ac0('0x23')](_0x7ac0('0x19'),_0x4fa273,JSON[_0x7ac0('0x12')](_0x5625d0));_0x94b03e(_0x5625d0);})[_0x7ac0('0x18')](function(_0x16ab41){logger[_0x7ac0('0x14')]('ShowWhatsappAccount',_0x16ab41[_0x7ac0('0x15')],_0x4fa273);_0x47ee9c(_0x4f0d04[_0x7ac0('0x14')](0x1f4,_0x16ab41[_0x7ac0('0x15')]));});});};
\ No newline at end of file
index d035e14..c46f3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5040=['emit','removeListener','register','length','whatsappAccount:','./whatsappAccount.events','update'];(function(_0x59ba9a,_0x3c0ca2){var _0x4de024=function(_0x3c1ec1){while(--_0x3c1ec1){_0x59ba9a['push'](_0x59ba9a['shift']());}};_0x4de024(++_0x3c0ca2);}(_0x5040,0x75));var _0x0504=function(_0x1ed6ed,_0x4778e7){_0x1ed6ed=_0x1ed6ed-0x0;var _0x1ef406=_0x5040[_0x1ed6ed];return _0x1ef406;};'use strict';var WhatsappAccountEvents=require(_0x0504('0x0'));var events=['save','remove',_0x0504('0x1')];function createListener(_0x51ac7d,_0x46bae2){return function(_0x5e037e){_0x46bae2[_0x0504('0x2')](_0x51ac7d,_0x5e037e);};}function removeListener(_0x68daf0,_0x43ca32){return function(){WhatsappAccountEvents[_0x0504('0x3')](_0x68daf0,_0x43ca32);};}exports[_0x0504('0x4')]=function(_0x213cc3){for(var _0x5770e7=0x0,_0x241a0a=events[_0x0504('0x5')];_0x5770e7<_0x241a0a;_0x5770e7++){var _0x214bc8=events[_0x5770e7];var _0x3fd617=createListener(_0x0504('0x6')+_0x214bc8,_0x213cc3);WhatsappAccountEvents['on'](_0x214bc8,_0x3fd617);}};
\ No newline at end of file
+var _0x3ccb=['register','./whatsappAccount.events','save','remove','emit','removeListener'];(function(_0x28f6f4,_0x4bfe56){var _0x134a87=function(_0x27e3c8){while(--_0x27e3c8){_0x28f6f4['push'](_0x28f6f4['shift']());}};_0x134a87(++_0x4bfe56);}(_0x3ccb,0x16f));var _0xb3cc=function(_0x317d61,_0x5e6335){_0x317d61=_0x317d61-0x0;var _0x3abc20=_0x3ccb[_0x317d61];return _0x3abc20;};'use strict';var WhatsappAccountEvents=require(_0xb3cc('0x0'));var events=[_0xb3cc('0x1'),_0xb3cc('0x2'),'update'];function createListener(_0x53336c,_0x3b5529){return function(_0x4b5434){_0x3b5529[_0xb3cc('0x3')](_0x53336c,_0x4b5434);};}function removeListener(_0x59d84a,_0x3db182){return function(){WhatsappAccountEvents[_0xb3cc('0x4')](_0x59d84a,_0x3db182);};}exports[_0xb3cc('0x5')]=function(_0x568abf){for(var _0x14ae93=0x0,_0x3a31b9=events['length'];_0x14ae93<_0x3a31b9;_0x14ae93++){var _0x36b1d7=events[_0x14ae93];var _0x4e92bf=createListener('whatsappAccount:'+_0x36b1d7,_0x568abf);WhatsappAccountEvents['on'](_0x36b1d7,_0x4e92bf);}};
\ No newline at end of file
index 8debbf0..6f1e5cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x828b=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','put','update','delete','exports','multer','util','path','connect-timeout','Router'];(function(_0x544783,_0x227668){var _0x1f8eb4=function(_0x15438a){while(--_0x15438a){_0x544783['push'](_0x544783['shift']());}};_0x1f8eb4(++_0x227668);}(_0x828b,0xd3));var _0xb828=function(_0x234e1a,_0x500d79){_0x234e1a=_0x234e1a-0x0;var _0x55aad2=_0x828b[_0x234e1a];return _0x55aad2;};'use strict';var multer=require(_0xb828('0x0'));var util=require(_0xb828('0x1'));var path=require(_0xb828('0x2'));var timeout=require(_0xb828('0x3'));var express=require('express');var router=express[_0xb828('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb828('0x5'));var interaction=require(_0xb828('0x6'));var config=require(_0xb828('0x7'));var controller=require('./whatsappApplication.controller');router[_0xb828('0x8')]('/',auth[_0xb828('0x9')](),controller[_0xb828('0xa')]);router[_0xb828('0x8')](_0xb828('0xb'),auth[_0xb828('0x9')](),controller[_0xb828('0xc')]);router['post']('/',auth[_0xb828('0x9')](),controller[_0xb828('0xd')]);router[_0xb828('0xe')](_0xb828('0xb'),auth[_0xb828('0x9')](),controller[_0xb828('0xf')]);router[_0xb828('0x10')](_0xb828('0xb'),auth[_0xb828('0x9')](),controller['destroy']);module[_0xb828('0x11')]=router;
\ No newline at end of file
+var _0x5678=['connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','get','/:id','isAuthenticated','show','post','put','update','destroy','exports','util','path'];(function(_0x220aec,_0x295703){var _0x325b1=function(_0x504c8a){while(--_0x504c8a){_0x220aec['push'](_0x220aec['shift']());}};_0x325b1(++_0x295703);}(_0x5678,0x97));var _0x8567=function(_0x18d61c,_0x52e2aa){_0x18d61c=_0x18d61c-0x0;var _0x48b37c=_0x5678[_0x18d61c];return _0x48b37c;};'use strict';var multer=require('multer');var util=require(_0x8567('0x0'));var path=require(_0x8567('0x1'));var timeout=require(_0x8567('0x2'));var express=require(_0x8567('0x3'));var router=express['Router']();var fs_extra=require(_0x8567('0x4'));var auth=require(_0x8567('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8567('0x6'));var controller=require(_0x8567('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x8567('0x8')](_0x8567('0x9'),auth[_0x8567('0xa')](),controller[_0x8567('0xb')]);router[_0x8567('0xc')]('/',auth[_0x8567('0xa')](),controller['create']);router[_0x8567('0xd')](_0x8567('0x9'),auth[_0x8567('0xa')](),controller[_0x8567('0xe')]);router['delete'](_0x8567('0x9'),auth[_0x8567('0xa')](),controller[_0x8567('0xf')]);module[_0x8567('0x10')]=router;
\ No newline at end of file
index 7516adb..7a2066c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90e0=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x90e0,0xe9));var _0x090e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x90e0[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x090e('0x0'));module[_0x090e('0x1')]={'priority':{'type':Sequelize[_0x090e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x090e('0x3')],'allowNull':![],'defaultValue':_0x090e('0x4')},'appdata':{'type':Sequelize[_0x090e('0x5')]()},'description':{'type':Sequelize[_0x090e('0x3')]},'interval':{'type':Sequelize[_0x090e('0x3')],'defaultValue':_0x090e('0x6')}};
\ No newline at end of file
+var _0x7b71=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x485034,_0x43f507){var _0x34e386=function(_0x520f8e){while(--_0x520f8e){_0x485034['push'](_0x485034['shift']());}};_0x34e386(++_0x43f507);}(_0x7b71,0x197));var _0x17b7=function(_0x16a223,_0x31b6e8){_0x16a223=_0x16a223-0x0;var _0x5ded66=_0x7b71[_0x16a223];return _0x5ded66;};'use strict';var Sequelize=require(_0x17b7('0x0'));module[_0x17b7('0x1')]={'priority':{'type':Sequelize[_0x17b7('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x17b7('0x3')],'allowNull':![],'defaultValue':_0x17b7('0x4')},'appdata':{'type':Sequelize[_0x17b7('0x5')]()},'description':{'type':Sequelize[_0x17b7('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index d257821..d3a1dc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb7=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','stack','name','send','index','WhatsappApplication','rawAttributes','fieldName','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','type','merge','options','include','rows','catch','show','keys','includeAll','find','create','body','update','params','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring'];(function(_0x49fcc3,_0x37f5fe){var _0x1f460f=function(_0x14bebf){while(--_0x14bebf){_0x49fcc3['push'](_0x49fcc3['shift']());}};_0x1f460f(++_0x37f5fe);}(_0x3cb7,0xcf));var _0x73cb=function(_0x2050f7,_0x3833c6){_0x2050f7=_0x2050f7-0x0;var _0x219da1=_0x3cb7[_0x2050f7];return _0x219da1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x73cb('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x73cb('0x1'));var moment=require(_0x73cb('0x2'));var BPromise=require(_0x73cb('0x3'));var Mustache=require(_0x73cb('0x4'));var util=require(_0x73cb('0x5'));var path=require(_0x73cb('0x6'));var sox=require(_0x73cb('0x7'));var csv=require(_0x73cb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x73cb('0x9'));var _=require(_0x73cb('0xa'));var squel=require(_0x73cb('0xb'));var crypto=require(_0x73cb('0xc'));var jsforce=require(_0x73cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x73cb('0x8'));var querystring=require(_0x73cb('0xe'));var Papa=require(_0x73cb('0xf'));var Redis=require(_0x73cb('0x10'));var authService=require(_0x73cb('0x11'));var qs=require(_0x73cb('0x12'));var as=require(_0x73cb('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x73cb('0x14'))(_0x73cb('0x15'));var utils=require(_0x73cb('0x16'));var config=require(_0x73cb('0x17'));var licenseUtil=require(_0x73cb('0x18'));var db=require(_0x73cb('0x19'))['db'];function respondWithStatusCode(_0x4af6d8,_0xf64e4a){_0xf64e4a=_0xf64e4a||0xcc;return function(_0x231254){if(_0x231254){return _0x4af6d8[_0x73cb('0x1a')](_0xf64e4a);}return _0x4af6d8[_0x73cb('0x1b')](_0xf64e4a)[_0x73cb('0x1c')]();};}function respondWithResult(_0xc95bb4,_0x776818){_0x776818=_0x776818||0xc8;return function(_0x43b851){if(_0x43b851){return _0xc95bb4[_0x73cb('0x1b')](_0x776818)[_0x73cb('0x1d')](_0x43b851);}};}function respondWithFilteredResult(_0x503765,_0x5e5c8e){return function(_0x4ef98f){if(_0x4ef98f){var _0x3ce143=typeof _0x5e5c8e[_0x73cb('0x1e')]===_0x73cb('0x1f')&&typeof _0x5e5c8e[_0x73cb('0x20')]===_0x73cb('0x1f');var _0x4c3275=_0x4ef98f[_0x73cb('0x21')];var _0x3df436=_0x3ce143?0x0:_0x5e5c8e[_0x73cb('0x1e')];var _0x25c26b=_0x3ce143?_0x4ef98f[_0x73cb('0x21')]:_0x5e5c8e[_0x73cb('0x1e')]+_0x5e5c8e[_0x73cb('0x20')];var _0x34fdee;if(_0x25c26b>=_0x4c3275){_0x25c26b=_0x4c3275;_0x34fdee=0xc8;}else{_0x34fdee=0xce;}_0x503765[_0x73cb('0x1b')](_0x34fdee);return _0x503765[_0x73cb('0x22')]('Content-Range',_0x3df436+'-'+_0x25c26b+'/'+_0x4c3275)[_0x73cb('0x1d')](_0x4ef98f);}return null;};}function patchUpdates(_0x18d19e){return function(_0x5f50cd){try{jsonpatch['apply'](_0x5f50cd,_0x18d19e,!![]);}catch(_0x16709e){return BPromise[_0x73cb('0x23')](_0x16709e);}return _0x5f50cd[_0x73cb('0x24')]();};}function saveUpdates(_0x492c4f,_0x3df7b0){return function(_0x4885e9){if(_0x4885e9){return _0x4885e9['update'](_0x492c4f)[_0x73cb('0x25')](function(_0x2e1c26){return _0x2e1c26;});}return null;};}function removeEntity(_0x5a931d,_0x57da9f){return function(_0x1147d7){if(_0x1147d7){return _0x1147d7[_0x73cb('0x26')]()['then'](function(){_0x5a931d[_0x73cb('0x1b')](0xcc)[_0x73cb('0x1c')]();});}};}function handleEntityNotFound(_0x191990,_0x474b2d){return function(_0x2e7a31){if(!_0x2e7a31){_0x191990[_0x73cb('0x1a')](0x194);}return _0x2e7a31;};}function handleError(_0x353f1e,_0x285408){_0x285408=_0x285408||0x1f4;return function(_0x12a837){logger['error'](_0x12a837[_0x73cb('0x27')]);if(_0x12a837['name']){delete _0x12a837[_0x73cb('0x28')];}_0x353f1e[_0x73cb('0x1b')](_0x285408)[_0x73cb('0x29')](_0x12a837);};}exports[_0x73cb('0x2a')]=function(_0x2d6ac8,_0x3427b7){var _0x590604={},_0x3ab710={},_0x4a1b82={'count':0x0,'rows':[]};var _0x2c6c84=_['map'](db[_0x73cb('0x2b')][_0x73cb('0x2c')],function(_0x281755){return{'name':_0x281755[_0x73cb('0x2d')],'type':_0x281755['type']['key']};});_0x3ab710[_0x73cb('0x2e')]=_[_0x73cb('0x2f')](_0x2c6c84,_0x73cb('0x28'));_0x3ab710[_0x73cb('0x30')]=_['keys'](_0x2d6ac8[_0x73cb('0x30')]);_0x3ab710[_0x73cb('0x31')]=_[_0x73cb('0x32')](_0x3ab710[_0x73cb('0x2e')],_0x3ab710[_0x73cb('0x30')]);_0x590604[_0x73cb('0x33')]=_[_0x73cb('0x32')](_0x3ab710[_0x73cb('0x2e')],qs[_0x73cb('0x34')](_0x2d6ac8[_0x73cb('0x30')]['fields']));_0x590604['attributes']=_0x590604['attributes'][_0x73cb('0x35')]?_0x590604[_0x73cb('0x33')]:_0x3ab710[_0x73cb('0x2e')];if(!_0x2d6ac8['query'][_0x73cb('0x36')](_0x73cb('0x37'))){_0x590604['limit']=qs[_0x73cb('0x20')](_0x2d6ac8['query'][_0x73cb('0x20')]);_0x590604[_0x73cb('0x1e')]=qs[_0x73cb('0x1e')](_0x2d6ac8[_0x73cb('0x30')][_0x73cb('0x1e')]);}_0x590604[_0x73cb('0x38')]=qs[_0x73cb('0x39')](_0x2d6ac8[_0x73cb('0x30')]['sort']);_0x590604['where']=qs[_0x73cb('0x31')](_['pick'](_0x2d6ac8[_0x73cb('0x30')],_0x3ab710[_0x73cb('0x31')]),_0x2c6c84);if(_0x2d6ac8[_0x73cb('0x30')][_0x73cb('0x3a')]){_0x590604[_0x73cb('0x3b')]=_['merge'](_0x590604[_0x73cb('0x3b')],{'$or':_[_0x73cb('0x2f')](_0x2c6c84,function(_0x38aebf){if(_0x38aebf[_0x73cb('0x3c')]!=='VIRTUAL'){var _0x5c70ae={};_0x5c70ae[_0x38aebf[_0x73cb('0x28')]]={'$like':'%'+_0x2d6ac8['query'][_0x73cb('0x3a')]+'%'};return _0x5c70ae;}})});}_0x590604=_[_0x73cb('0x3d')]({},_0x590604,_0x2d6ac8[_0x73cb('0x3e')]);var _0x320f7d={'where':_0x590604[_0x73cb('0x3b')]};return db[_0x73cb('0x2b')][_0x73cb('0x21')](_0x320f7d)[_0x73cb('0x25')](function(_0xbc7df9){_0x4a1b82[_0x73cb('0x21')]=_0xbc7df9;if(_0x2d6ac8['query']['includeAll']){_0x590604[_0x73cb('0x3f')]=[{'all':!![]}];}return db[_0x73cb('0x2b')]['findAll'](_0x590604);})[_0x73cb('0x25')](function(_0x1f22d2){_0x4a1b82[_0x73cb('0x40')]=_0x1f22d2;return _0x4a1b82;})[_0x73cb('0x25')](respondWithFilteredResult(_0x3427b7,_0x590604))[_0x73cb('0x41')](handleError(_0x3427b7,null));};exports[_0x73cb('0x42')]=function(_0x68038b,_0x164edc){var _0x122555={'raw':!![],'where':{'id':_0x68038b['params']['id']}},_0x2c53a1={};_0x2c53a1[_0x73cb('0x2e')]=_[_0x73cb('0x43')](db[_0x73cb('0x2b')][_0x73cb('0x2c')]);_0x2c53a1[_0x73cb('0x30')]=_[_0x73cb('0x43')](_0x68038b['query']);_0x2c53a1[_0x73cb('0x31')]=_[_0x73cb('0x32')](_0x2c53a1[_0x73cb('0x2e')],_0x2c53a1[_0x73cb('0x30')]);_0x122555[_0x73cb('0x33')]=_[_0x73cb('0x32')](_0x2c53a1[_0x73cb('0x2e')],qs[_0x73cb('0x34')](_0x68038b[_0x73cb('0x30')][_0x73cb('0x34')]));_0x122555[_0x73cb('0x33')]=_0x122555['attributes'][_0x73cb('0x35')]?_0x122555[_0x73cb('0x33')]:_0x2c53a1[_0x73cb('0x2e')];if(_0x68038b['query'][_0x73cb('0x44')]){_0x122555['include']=[{'all':!![]}];}_0x122555=_[_0x73cb('0x3d')]({},_0x122555,_0x68038b[_0x73cb('0x3e')]);return db[_0x73cb('0x2b')][_0x73cb('0x45')](_0x122555)['then'](handleEntityNotFound(_0x164edc,null))[_0x73cb('0x25')](respondWithResult(_0x164edc,null))[_0x73cb('0x41')](handleError(_0x164edc,null));};exports[_0x73cb('0x46')]=function(_0x2f50a1,_0x22fec6){return db['WhatsappApplication']['create'](_0x2f50a1[_0x73cb('0x47')],{})[_0x73cb('0x25')](respondWithResult(_0x22fec6,0xc9))[_0x73cb('0x41')](handleError(_0x22fec6,null));};exports[_0x73cb('0x48')]=function(_0x2fb4b6,_0x50b753){if(_0x2fb4b6[_0x73cb('0x47')]['id']){delete _0x2fb4b6[_0x73cb('0x47')]['id'];}return db[_0x73cb('0x2b')][_0x73cb('0x45')]({'where':{'id':_0x2fb4b6[_0x73cb('0x49')]['id']}})['then'](handleEntityNotFound(_0x50b753,null))[_0x73cb('0x25')](saveUpdates(_0x2fb4b6[_0x73cb('0x47')],null))[_0x73cb('0x25')](respondWithResult(_0x50b753,null))[_0x73cb('0x41')](handleError(_0x50b753,null));};exports[_0x73cb('0x26')]=function(_0x4eb9fa,_0x496218){return db['WhatsappApplication'][_0x73cb('0x45')]({'where':{'id':_0x4eb9fa[_0x73cb('0x49')]['id']}})['then'](handleEntityNotFound(_0x496218,null))[_0x73cb('0x25')](removeEntity(_0x496218,null))['catch'](handleError(_0x496218,null));};
\ No newline at end of file
+var _0xc177=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','show','params','options','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js'];(function(_0x1e33b9,_0x2a5c95){var _0x1f437d=function(_0xca1a0b){while(--_0xca1a0b){_0x1e33b9['push'](_0x1e33b9['shift']());}};_0x1f437d(++_0x2a5c95);}(_0xc177,0x1b2));var _0x7c17=function(_0x5a160b,_0x5a1e15){_0x5a160b=_0x5a160b-0x0;var _0x545527=_0xc177[_0x5a160b];return _0x545527;};'use strict';var emlformat=require(_0x7c17('0x0'));var rimraf=require(_0x7c17('0x1'));var zipdir=require(_0x7c17('0x2'));var jsonpatch=require(_0x7c17('0x3'));var rp=require(_0x7c17('0x4'));var moment=require('moment');var BPromise=require(_0x7c17('0x5'));var Mustache=require(_0x7c17('0x6'));var util=require(_0x7c17('0x7'));var path=require(_0x7c17('0x8'));var sox=require('sox');var csv=require(_0x7c17('0x9'));var ejs=require(_0x7c17('0xa'));var fs=require('fs');var fs_extra=require(_0x7c17('0xb'));var _=require('lodash');var squel=require(_0x7c17('0xc'));var crypto=require(_0x7c17('0xd'));var jsforce=require(_0x7c17('0xe'));var deskjs=require(_0x7c17('0xf'));var toCsv=require(_0x7c17('0x9'));var querystring=require(_0x7c17('0x10'));var Papa=require(_0x7c17('0x11'));var Redis=require(_0x7c17('0x12'));var authService=require(_0x7c17('0x13'));var qs=require(_0x7c17('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7c17('0x15'));var utils=require(_0x7c17('0x16'));var config=require(_0x7c17('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7c17('0x18'))['db'];function respondWithStatusCode(_0xbb3784,_0x139a70){_0x139a70=_0x139a70||0xcc;return function(_0x5c7a1a){if(_0x5c7a1a){return _0xbb3784['sendStatus'](_0x139a70);}return _0xbb3784[_0x7c17('0x19')](_0x139a70)[_0x7c17('0x1a')]();};}function respondWithResult(_0x55e7f0,_0x19af8d){_0x19af8d=_0x19af8d||0xc8;return function(_0x551f10){if(_0x551f10){return _0x55e7f0[_0x7c17('0x19')](_0x19af8d)['json'](_0x551f10);}};}function respondWithFilteredResult(_0x36913f,_0x1e5997){return function(_0x675894){if(_0x675894){var _0x33f9cc=typeof _0x1e5997[_0x7c17('0x1b')]===_0x7c17('0x1c')&&typeof _0x1e5997[_0x7c17('0x1d')]===_0x7c17('0x1c');var _0x37af8c=_0x675894[_0x7c17('0x1e')];var _0x24a25d=_0x33f9cc?0x0:_0x1e5997[_0x7c17('0x1b')];var _0x2092b8=_0x33f9cc?_0x675894[_0x7c17('0x1e')]:_0x1e5997['offset']+_0x1e5997[_0x7c17('0x1d')];var _0x302e4c;if(_0x2092b8>=_0x37af8c){_0x2092b8=_0x37af8c;_0x302e4c=0xc8;}else{_0x302e4c=0xce;}_0x36913f['status'](_0x302e4c);return _0x36913f[_0x7c17('0x1f')]('Content-Range',_0x24a25d+'-'+_0x2092b8+'/'+_0x37af8c)['json'](_0x675894);}return null;};}function patchUpdates(_0x2f5092){return function(_0x21d76c){try{jsonpatch[_0x7c17('0x20')](_0x21d76c,_0x2f5092,!![]);}catch(_0x5d5b75){return BPromise[_0x7c17('0x21')](_0x5d5b75);}return _0x21d76c[_0x7c17('0x22')]();};}function saveUpdates(_0x59c085,_0x3ad6b9){return function(_0x3d69f6){if(_0x3d69f6){return _0x3d69f6[_0x7c17('0x23')](_0x59c085)['then'](function(_0x3178fb){return _0x3178fb;});}return null;};}function removeEntity(_0x34cc68,_0x394866){return function(_0x541630){if(_0x541630){return _0x541630[_0x7c17('0x24')]()[_0x7c17('0x25')](function(){_0x34cc68['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x42260f,_0x2eb4c1){return function(_0xd98e0a){if(!_0xd98e0a){_0x42260f[_0x7c17('0x26')](0x194);}return _0xd98e0a;};}function handleError(_0x2b99b3,_0x33f63c){_0x33f63c=_0x33f63c||0x1f4;return function(_0x5605c6){logger[_0x7c17('0x27')](_0x5605c6[_0x7c17('0x28')]);if(_0x5605c6[_0x7c17('0x29')]){delete _0x5605c6[_0x7c17('0x29')];}_0x2b99b3[_0x7c17('0x19')](_0x33f63c)[_0x7c17('0x2a')](_0x5605c6);};}exports[_0x7c17('0x2b')]=function(_0x467bde,_0x3a4a58){var _0x3a2e61={},_0x4776cc={},_0x4f40fb={'count':0x0,'rows':[]};var _0x1390c9=_[_0x7c17('0x2c')](db[_0x7c17('0x2d')][_0x7c17('0x2e')],function(_0x4ea072){return{'name':_0x4ea072[_0x7c17('0x2f')],'type':_0x4ea072[_0x7c17('0x30')]['key']};});_0x4776cc[_0x7c17('0x31')]=_[_0x7c17('0x2c')](_0x1390c9,_0x7c17('0x29'));_0x4776cc['query']=_[_0x7c17('0x32')](_0x467bde['query']);_0x4776cc[_0x7c17('0x33')]=_[_0x7c17('0x34')](_0x4776cc[_0x7c17('0x31')],_0x4776cc[_0x7c17('0x35')]);_0x3a2e61['attributes']=_[_0x7c17('0x34')](_0x4776cc[_0x7c17('0x31')],qs[_0x7c17('0x36')](_0x467bde[_0x7c17('0x35')][_0x7c17('0x36')]));_0x3a2e61[_0x7c17('0x37')]=_0x3a2e61['attributes'][_0x7c17('0x38')]?_0x3a2e61[_0x7c17('0x37')]:_0x4776cc['model'];if(!_0x467bde[_0x7c17('0x35')][_0x7c17('0x39')]('nolimit')){_0x3a2e61[_0x7c17('0x1d')]=qs['limit'](_0x467bde[_0x7c17('0x35')][_0x7c17('0x1d')]);_0x3a2e61[_0x7c17('0x1b')]=qs['offset'](_0x467bde[_0x7c17('0x35')][_0x7c17('0x1b')]);}_0x3a2e61[_0x7c17('0x3a')]=qs['sort'](_0x467bde['query'][_0x7c17('0x3b')]);_0x3a2e61['where']=qs[_0x7c17('0x33')](_[_0x7c17('0x3c')](_0x467bde[_0x7c17('0x35')],_0x4776cc['filters']),_0x1390c9);if(_0x467bde[_0x7c17('0x35')][_0x7c17('0x3d')]){_0x3a2e61[_0x7c17('0x3e')]=_[_0x7c17('0x3f')](_0x3a2e61[_0x7c17('0x3e')],{'$or':_[_0x7c17('0x2c')](_0x1390c9,function(_0x47de27){if(_0x47de27[_0x7c17('0x30')]!==_0x7c17('0x40')){var _0x328860={};_0x328860[_0x47de27[_0x7c17('0x29')]]={'$like':'%'+_0x467bde['query'][_0x7c17('0x3d')]+'%'};return _0x328860;}})});}_0x3a2e61=_[_0x7c17('0x3f')]({},_0x3a2e61,_0x467bde['options']);var _0xf1a401={'where':_0x3a2e61['where']};return db['WhatsappApplication']['count'](_0xf1a401)[_0x7c17('0x25')](function(_0x12b677){_0x4f40fb['count']=_0x12b677;if(_0x467bde[_0x7c17('0x35')][_0x7c17('0x41')]){_0x3a2e61[_0x7c17('0x42')]=[{'all':!![]}];}return db[_0x7c17('0x2d')][_0x7c17('0x43')](_0x3a2e61);})[_0x7c17('0x25')](function(_0x35081f){_0x4f40fb['rows']=_0x35081f;return _0x4f40fb;})[_0x7c17('0x25')](respondWithFilteredResult(_0x3a4a58,_0x3a2e61))['catch'](handleError(_0x3a4a58,null));};exports[_0x7c17('0x44')]=function(_0x49164b,_0x4c04be){var _0x21d751={'raw':!![],'where':{'id':_0x49164b[_0x7c17('0x45')]['id']}},_0x4f1d70={};_0x4f1d70[_0x7c17('0x31')]=_[_0x7c17('0x32')](db[_0x7c17('0x2d')][_0x7c17('0x2e')]);_0x4f1d70[_0x7c17('0x35')]=_[_0x7c17('0x32')](_0x49164b[_0x7c17('0x35')]);_0x4f1d70[_0x7c17('0x33')]=_[_0x7c17('0x34')](_0x4f1d70[_0x7c17('0x31')],_0x4f1d70[_0x7c17('0x35')]);_0x21d751[_0x7c17('0x37')]=_[_0x7c17('0x34')](_0x4f1d70[_0x7c17('0x31')],qs['fields'](_0x49164b[_0x7c17('0x35')]['fields']));_0x21d751[_0x7c17('0x37')]=_0x21d751[_0x7c17('0x37')]['length']?_0x21d751['attributes']:_0x4f1d70['model'];if(_0x49164b[_0x7c17('0x35')]['includeAll']){_0x21d751['include']=[{'all':!![]}];}_0x21d751=_[_0x7c17('0x3f')]({},_0x21d751,_0x49164b[_0x7c17('0x46')]);return db['WhatsappApplication']['find'](_0x21d751)[_0x7c17('0x25')](handleEntityNotFound(_0x4c04be,null))['then'](respondWithResult(_0x4c04be,null))[_0x7c17('0x47')](handleError(_0x4c04be,null));};exports[_0x7c17('0x48')]=function(_0x4097e0,_0x4db93b){return db[_0x7c17('0x2d')][_0x7c17('0x48')](_0x4097e0[_0x7c17('0x49')],{})['then'](respondWithResult(_0x4db93b,0xc9))[_0x7c17('0x47')](handleError(_0x4db93b,null));};exports[_0x7c17('0x23')]=function(_0x1a1099,_0xc1dc81){if(_0x1a1099[_0x7c17('0x49')]['id']){delete _0x1a1099['body']['id'];}return db[_0x7c17('0x2d')][_0x7c17('0x4a')]({'where':{'id':_0x1a1099[_0x7c17('0x45')]['id']}})[_0x7c17('0x25')](handleEntityNotFound(_0xc1dc81,null))[_0x7c17('0x25')](saveUpdates(_0x1a1099[_0x7c17('0x49')],null))[_0x7c17('0x25')](respondWithResult(_0xc1dc81,null))[_0x7c17('0x47')](handleError(_0xc1dc81,null));};exports[_0x7c17('0x24')]=function(_0x5ebed1,_0x575651){return db[_0x7c17('0x2d')]['find']({'where':{'id':_0x5ebed1[_0x7c17('0x45')]['id']}})['then'](handleEntityNotFound(_0x575651,null))[_0x7c17('0x25')](removeEntity(_0x575651,null))[_0x7c17('0x47')](handleError(_0x575651,null));};
\ No newline at end of file
index bf05f8f..3d04cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f8=['util','../../config/logger','api','moment','request-promise','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x16aa1d,_0x15c8d2){var _0x2b3d47=function(_0x1b208b){while(--_0x1b208b){_0x16aa1d['push'](_0x16aa1d['shift']());}};_0x2b3d47(++_0x15c8d2);}(_0x37f8,0xd2));var _0x837f=function(_0x48180c,_0x4557c6){_0x48180c=_0x48180c-0x0;var _0x1825a9=_0x37f8[_0x48180c];return _0x1825a9;};'use strict';var _=require('lodash');var util=require(_0x837f('0x0'));var logger=require(_0x837f('0x1'))(_0x837f('0x2'));var moment=require(_0x837f('0x3'));var BPromise=require('bluebird');var rp=require(_0x837f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module['exports']=function(_0x19c939,_0x42986f){return _0x19c939[_0x837f('0x5')](_0x837f('0x6'),attributes,{'tableName':_0x837f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x837f('0x8'),'collate':_0x837f('0x9')});};
\ No newline at end of file
+var _0x72b1=['path','rimraf','./whatsappApplication.attributes','exports','WhatsappApplication','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x72b1,0x16e));var _0x172b=function(_0x2cde7b,_0x548d1b){_0x2cde7b=_0x2cde7b-0x0;var _0xfeefa6=_0x72b1[_0x2cde7b];return _0xfeefa6;};'use strict';var _=require(_0x172b('0x0'));var util=require('util');var logger=require(_0x172b('0x1'))(_0x172b('0x2'));var moment=require(_0x172b('0x3'));var BPromise=require(_0x172b('0x4'));var rp=require(_0x172b('0x5'));var fs=require('fs');var path=require(_0x172b('0x6'));var rimraf=require(_0x172b('0x7'));var config=require('../../config/environment');var attributes=require(_0x172b('0x8'));module[_0x172b('0x9')]=function(_0x475fd6,_0x222624){return _0x475fd6['define'](_0x172b('0xa'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x172b('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a97940e..9db3c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x50bc93,_0x4f0dac){var _0x3f2c93=function(_0x291c6d){while(--_0x291c6d){_0x50bc93['push'](_0x50bc93['shift']());}};_0x3f2c93(++_0x4f0dac);}(_0x6aa7,0x178));var _0x76aa=function(_0x568294,_0x4231e8){_0x568294=_0x568294-0x0;var _0x1b2252=_0x6aa7[_0x568294];return _0x1b2252;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0x9bde=['code','message','WhatsappApplication,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x440258,_0x222b44){var _0x4c56c2=function(_0x59010b){while(--_0x59010b){_0x440258['push'](_0x440258['shift']());}};_0x4c56c2(++_0x222b44);}(_0x9bde,0xe1));var _0xe9bd=function(_0x3974a5,_0x53ada8){_0x3974a5=_0x3974a5-0x0;var _0x233bcd=_0x9bde[_0x3974a5];return _0x233bcd;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
index fa05e58..65186ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['/:id/download','create','post','addMessage','/:id/tags','tracked','whatsapp','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages'];(function(_0x578f0b,_0xb542e9){var _0x333a6f=function(_0x36bb02){while(--_0x36bb02){_0x578f0b['push'](_0x578f0b['shift']());}};_0x333a6f(++_0xb542e9);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x59b1ed,_0x36ecbb){_0x59b1ed=_0x59b1ed-0x0;var _0x39d735=_0x3eea[_0x59b1ed];return _0x39d735;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')]('/',auth[_0xa3ee('0xb')](),controller['index']);router['get'](_0xa3ee('0xc'),auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['get'](_0xa3ee('0xe'),auth['isAuthenticated'](),controller[_0xa3ee('0xf')]);router['get'](_0xa3ee('0x10'),auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x11')]);router['get'](_0xa3ee('0x12'),auth[_0xa3ee('0xb')](),controller['download']);router['post']('/',auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x13')]);router[_0xa3ee('0x14')](_0xa3ee('0x10'),auth['isAuthenticated'](),controller[_0xa3ee('0x15')]);router['post'](_0xa3ee('0x16'),auth[_0xa3ee('0xb')](),interaction[_0xa3ee('0x17')](_0xa3ee('0x18'),'whatsappinteraction:addtags'),controller[_0xa3ee('0x19')]);router[_0xa3ee('0x1a')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0xa3ee('0x18'),_0xa3ee('0x1b')),controller[_0xa3ee('0x1c')]);router[_0xa3ee('0x1d')]('/:id',auth[_0xa3ee('0xb')](),interaction[_0xa3ee('0x17')](_0xa3ee('0x18'),_0xa3ee('0x1e')),controller[_0xa3ee('0x1f')]);router['delete'](_0xa3ee('0x16'),auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x20')]);module[_0xa3ee('0x21')]=router;
\ No newline at end of file
+var _0xe2bc=['destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','whatsapp','whatsappinteraction:addtags','tracked','delete','whatsappinteraction:destroy'];(function(_0x137b4f,_0x3336b1){var _0x51a2dd=function(_0x142f48){while(--_0x142f48){_0x137b4f['push'](_0x137b4f['shift']());}};_0x51a2dd(++_0x3336b1);}(_0xe2bc,0x1a6));var _0xce2b=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0xe2bc[_0x725b8e];return _0x43ac45;};'use strict';var multer=require(_0xce2b('0x0'));var util=require('util');var path=require(_0xce2b('0x1'));var timeout=require('connect-timeout');var express=require(_0xce2b('0x2'));var router=express[_0xce2b('0x3')]();var fs_extra=require(_0xce2b('0x4'));var auth=require(_0xce2b('0x5'));var interaction=require(_0xce2b('0x6'));var config=require('../../config/environment');var controller=require(_0xce2b('0x7'));router[_0xce2b('0x8')]('/',auth[_0xce2b('0x9')](),controller[_0xce2b('0xa')]);router[_0xce2b('0x8')]('/describe',auth[_0xce2b('0x9')](),controller[_0xce2b('0xb')]);router['get'](_0xce2b('0xc'),auth[_0xce2b('0x9')](),controller[_0xce2b('0xd')]);router[_0xce2b('0x8')](_0xce2b('0xe'),auth[_0xce2b('0x9')](),controller[_0xce2b('0xf')]);router[_0xce2b('0x8')](_0xce2b('0x10'),auth[_0xce2b('0x9')](),controller['download']);router[_0xce2b('0x11')]('/',auth['isAuthenticated'](),controller[_0xce2b('0x12')]);router[_0xce2b('0x11')](_0xce2b('0xe'),auth[_0xce2b('0x9')](),controller[_0xce2b('0x13')]);router[_0xce2b('0x11')](_0xce2b('0x14'),auth[_0xce2b('0x9')](),interaction['tracked'](_0xce2b('0x15'),_0xce2b('0x16')),controller['addTags']);router['put']('/:id',auth[_0xce2b('0x9')](),interaction[_0xce2b('0x17')](_0xce2b('0x15'),'whatsappinteraction:update'),controller['update']);router[_0xce2b('0x18')](_0xce2b('0xc'),auth[_0xce2b('0x9')](),interaction[_0xce2b('0x17')](_0xce2b('0x15'),_0xce2b('0x19')),controller[_0xce2b('0x1a')]);router[_0xce2b('0x18')](_0xce2b('0x14'),auth[_0xce2b('0x9')](),controller['removeTags']);module[_0xce2b('0x1b')]=router;
\ No newline at end of file
index d1cf256..2a9f937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9865=['ENUM','out','sequelize','moment','exports','BOOLEAN','DATE','STRING'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x9865,0x1ba));var _0x5986=function(_0x29ab19,_0x117273){_0x29ab19=_0x29ab19-0x0;var _0x20ba91=_0x9865[_0x29ab19];return _0x20ba91;};'use strict';var Sequelize=require(_0x5986('0x0'));var moment=require(_0x5986('0x1'));module[_0x5986('0x2')]={'closed':{'type':Sequelize[_0x5986('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5986('0x4')]},'disposition':{'type':Sequelize[_0x5986('0x5')]},'secondDisposition':{'type':Sequelize[_0x5986('0x5')]},'thirdDisposition':{'type':Sequelize[_0x5986('0x5')]},'note':{'type':Sequelize[_0x5986('0x5')]},'phone':{'type':Sequelize[_0x5986('0x5')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x5986('0x6')]('in',_0x5986('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5986('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x5986('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xb715=['moment','BOOLEAN','DATE','STRING','out'];(function(_0x262fd4,_0x549c9d){var _0x27c8ba=function(_0x49228d){while(--_0x49228d){_0x262fd4['push'](_0x262fd4['shift']());}};_0x27c8ba(++_0x549c9d);}(_0xb715,0x16d));var _0x5b71=function(_0x5ec664,_0x4c7e54){_0x5ec664=_0x5ec664-0x0;var _0x3e4bea=_0xb715[_0x5ec664];return _0x3e4bea;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x5b71('0x0'));module['exports']={'closed':{'type':Sequelize[_0x5b71('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5b71('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x5b71('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x5b71('0x3')]},'phone':{'type':Sequelize[_0x5b71('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x5b71('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5b71('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x5b71('0x1')],'defaultValue':![]}};
\ No newline at end of file
index ab6058d..838b962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe600=['update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','catch','show','params','model','keys','WhatsappInteraction','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','ids','getMessages','findOne','WhatsappMessage','hasOwnProperty','nolimit','sort','where','pick','WhatsappInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','omit','spread','Tag','emit','whatsappInteractionTags:save','removeTags','download','join','root','server','tmp','attachments','transcript-%d-%s.zip','push','fullname','CmContact','Contact','lastName','Attachment','createdAt','direction','secret','Account','User','mkdirSync','Whatsapp','Owner','N.A.','toString','closed','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','System','firstName','out','read','value','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','unlinkSync','zip-dir','moment','bluebird','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','./whatsappInteraction.socket','sendStatus','status','json','offset','count','limit','set','Content-Range'];(function(_0x37c777,_0x2d23a6){var _0x5f2500=function(_0x275b02){while(--_0x275b02){_0x37c777['push'](_0x37c777['shift']());}};_0x5f2500(++_0x2d23a6);}(_0xe600,0x160));var _0x0e60=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe600[_0x122ef9];return _0x42fba0;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x0e60('0x0'));var moment=require(_0x0e60('0x1'));var BPromise=require(_0x0e60('0x2'));var util=require(_0x0e60('0x3'));var path=require(_0x0e60('0x4'));var ejs=require(_0x0e60('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x0e60('0x6'));var qs=require(_0x0e60('0x7'));var pdf=require(_0x0e60('0x8'));var logger=require(_0x0e60('0x9'))(_0x0e60('0xa'));var config=require(_0x0e60('0xb'));var db=require(_0x0e60('0xc'))['db'];config[_0x0e60('0xd')]=_['defaults'](config[_0x0e60('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0e60('0xd')]));require(_0x0e60('0xe'))['register'](socket);function respondWithStatusCode(_0x166ca3,_0x5d370f){_0x5d370f=_0x5d370f||0xcc;return function(_0x1382c7){if(_0x1382c7){return _0x166ca3[_0x0e60('0xf')](_0x5d370f);}return _0x166ca3[_0x0e60('0x10')](_0x5d370f)['end']();};}function respondWithResult(_0x4ccb80,_0x2a6e0d){_0x2a6e0d=_0x2a6e0d||0xc8;return function(_0x38efee){if(_0x38efee){return _0x4ccb80[_0x0e60('0x10')](_0x2a6e0d)[_0x0e60('0x11')](_0x38efee);}};}function respondWithFilteredResult(_0x1da97a,_0x278ce9){return function(_0x5ca5ff){if(_0x5ca5ff){var _0x174445=typeof _0x278ce9[_0x0e60('0x12')]==='undefined'&&typeof _0x278ce9['limit']==='undefined';var _0x57bbc7=_0x5ca5ff['count'];var _0x1440d0=_0x174445?0x0:_0x278ce9[_0x0e60('0x12')];var _0x59485a=_0x174445?_0x5ca5ff[_0x0e60('0x13')]:_0x278ce9['offset']+_0x278ce9[_0x0e60('0x14')];var _0x1d6a40;if(_0x59485a>=_0x57bbc7){_0x59485a=_0x57bbc7;_0x1d6a40=0xc8;}else{_0x1d6a40=0xce;}_0x1da97a[_0x0e60('0x10')](_0x1d6a40);return _0x1da97a[_0x0e60('0x15')](_0x0e60('0x16'),_0x1440d0+'-'+_0x59485a+'/'+_0x57bbc7)['json'](_0x5ca5ff);}return null;};}function saveUpdates(_0x555925){return function(_0x133cab){if(_0x133cab){return _0x133cab[_0x0e60('0x17')](_0x555925)[_0x0e60('0x18')](function(_0x133e0a){return _0x133e0a;});}return null;};}function removeEntity(_0x39fe0f){return function(_0x4430db){if(_0x4430db){return _0x4430db[_0x0e60('0x19')]()[_0x0e60('0x18')](function(){_0x39fe0f['status'](0xcc)[_0x0e60('0x1a')]();});}};}function handleEntityNotFound(_0x38d070){return function(_0x20a628){if(!_0x20a628){_0x38d070['sendStatus'](0x194);}return _0x20a628;};}function handleError(_0x31a090,_0xb13807){_0xb13807=_0xb13807||0x1f4;return function(_0x1ddd97){logger[_0x0e60('0x1b')](_0x1ddd97[_0x0e60('0x1c')]);if(_0x1ddd97[_0x0e60('0x1d')]){delete _0x1ddd97[_0x0e60('0x1d')];}_0x31a090['status'](_0xb13807)['send'](_0x1ddd97);};}exports['index']=function(_0x342b30,_0xea45bb){var _0x1682a6={};var _0x466877=_[_0x0e60('0x1e')](db['WhatsappInteraction'][_0x0e60('0x1f')],function(_0x479eb9){return{'name':_0x479eb9[_0x0e60('0x20')],'type':_0x479eb9[_0x0e60('0x21')][_0x0e60('0x22')]};});_0x1682a6=qs[_0x0e60('0x23')](_0x466877,_0x342b30);return interaction[_0x0e60('0x24')](_0x0e60('0x25'),_0x342b30[_0x0e60('0x26')],_0x342b30[_0x0e60('0x27')],_0x1682a6,_0x466877)[_0x0e60('0x18')](respondWithFilteredResult(_0xea45bb,_0x1682a6))[_0x0e60('0x28')](handleError(_0xea45bb,null));};exports[_0x0e60('0x29')]=function(_0x43ceaf,_0x538358){var _0x329dfc={'raw':![],'where':{'id':_0x43ceaf[_0x0e60('0x2a')]['id']}},_0x198f7d={};_0x198f7d[_0x0e60('0x2b')]=_[_0x0e60('0x2c')](db[_0x0e60('0x2d')][_0x0e60('0x1f')]);_0x198f7d[_0x0e60('0x26')]=_[_0x0e60('0x2c')](_0x43ceaf[_0x0e60('0x26')]);_0x198f7d[_0x0e60('0x2e')]=_[_0x0e60('0x2f')](_0x198f7d[_0x0e60('0x2b')],_0x198f7d[_0x0e60('0x26')]);_0x329dfc[_0x0e60('0x30')]=_[_0x0e60('0x2f')](_0x198f7d[_0x0e60('0x2b')],qs[_0x0e60('0x31')](_0x43ceaf[_0x0e60('0x26')][_0x0e60('0x31')]));_0x329dfc[_0x0e60('0x30')]=_0x329dfc[_0x0e60('0x30')][_0x0e60('0x32')]?_0x329dfc['attributes']:_0x198f7d[_0x0e60('0x2b')];if(_0x43ceaf[_0x0e60('0x26')][_0x0e60('0x33')]){_0x329dfc[_0x0e60('0x34')]=[{'all':!![]}];}_0x329dfc=_[_0x0e60('0x35')]({},_0x329dfc,_0x43ceaf[_0x0e60('0x36')]);return db['WhatsappInteraction'][_0x0e60('0x37')](_0x329dfc)['then'](handleEntityNotFound(_0x538358,null))[_0x0e60('0x18')](respondWithResult(_0x538358,null))[_0x0e60('0x28')](handleError(_0x538358,null));};exports[_0x0e60('0x38')]=function(_0x8f9a5b,_0x44b74d){return db[_0x0e60('0x2d')][_0x0e60('0x38')](_0x8f9a5b[_0x0e60('0x39')],{})[_0x0e60('0x18')](respondWithResult(_0x44b74d,0xc9))[_0x0e60('0x28')](handleError(_0x44b74d,null));};exports[_0x0e60('0x17')]=function(_0x22aff4,_0x32b978){if(_0x22aff4[_0x0e60('0x39')]['id']){delete _0x22aff4[_0x0e60('0x39')]['id'];}return db['WhatsappInteraction'][_0x0e60('0x37')]({'where':{'id':_0x22aff4[_0x0e60('0x2a')]['id']}})[_0x0e60('0x18')](handleEntityNotFound(_0x32b978,null))[_0x0e60('0x18')](saveUpdates(_0x22aff4[_0x0e60('0x39')],null))[_0x0e60('0x18')](respondWithResult(_0x32b978,null))[_0x0e60('0x28')](handleError(_0x32b978,null));};exports[_0x0e60('0x19')]=function(_0xaf252e,_0x3a0b74){return db['WhatsappInteraction'][_0x0e60('0x37')]({'where':{'id':_0xaf252e[_0x0e60('0x2a')]['id']}})[_0x0e60('0x18')](handleEntityNotFound(_0x3a0b74,null))[_0x0e60('0x18')](removeEntity(_0x3a0b74,null))[_0x0e60('0x28')](handleError(_0x3a0b74,null));};exports[_0x0e60('0x3a')]=function(_0x1b5adc,_0x292565){return db[_0x0e60('0x2d')]['describe']()[_0x0e60('0x18')](respondWithResult(_0x292565,null))[_0x0e60('0x28')](handleError(_0x292565,null));};exports[_0x0e60('0x3b')]=function(_0x1f4e6c,_0x3e49cf){return db['WhatsappMessage']['find']({'where':{'id':_0x1f4e6c[_0x0e60('0x2a')]['id']}})[_0x0e60('0x18')](handleEntityNotFound(_0x3e49cf,null))['then'](function(_0x3193ef){if(_0x3193ef){return _0x3193ef['addMessage'](_0x1f4e6c[_0x0e60('0x39')]['ids'],_['omit'](_0x1f4e6c[_0x0e60('0x39')],[_0x0e60('0x3c'),'id'])||{});}})[_0x0e60('0x18')](respondWithResult(_0x3e49cf,null))[_0x0e60('0x28')](handleError(_0x3e49cf,null));};exports[_0x0e60('0x3d')]=function(_0x3b4b6b,_0x4275e5){var _0x29d1b0={'raw':![],'where':{}};var _0x45aa8e={};var _0x235459={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x0e60('0x3e')]({'where':{'id':_0x3b4b6b[_0x0e60('0x2a')]['id']}})[_0x0e60('0x18')](handleEntityNotFound(_0x4275e5,null))['then'](function(_0x4768c6){if(_0x4768c6){_0x45aa8e[_0x0e60('0x2b')]=_[_0x0e60('0x2c')](db[_0x0e60('0x3f')][_0x0e60('0x1f')]);_0x45aa8e['query']=_[_0x0e60('0x2c')](_0x3b4b6b['query']);_0x45aa8e[_0x0e60('0x2e')]=_['intersection'](_0x45aa8e[_0x0e60('0x2b')],_0x45aa8e[_0x0e60('0x26')]);_0x29d1b0[_0x0e60('0x30')]=_[_0x0e60('0x2f')](_0x45aa8e[_0x0e60('0x2b')],qs[_0x0e60('0x31')](_0x3b4b6b['query']['fields']));_0x29d1b0[_0x0e60('0x30')]=_0x29d1b0[_0x0e60('0x30')][_0x0e60('0x32')]?_0x29d1b0[_0x0e60('0x30')]:_0x45aa8e['model'];if(!_0x3b4b6b['query'][_0x0e60('0x40')](_0x0e60('0x41'))){_0x29d1b0['limit']=qs[_0x0e60('0x14')](_0x3b4b6b['query'][_0x0e60('0x14')]);_0x29d1b0['offset']=qs[_0x0e60('0x12')](_0x3b4b6b[_0x0e60('0x26')][_0x0e60('0x12')]);}_0x29d1b0['order']=qs[_0x0e60('0x42')](_0x3b4b6b['query'][_0x0e60('0x42')]);_0x29d1b0[_0x0e60('0x43')]=qs[_0x0e60('0x2e')](_[_0x0e60('0x44')](_0x3b4b6b[_0x0e60('0x26')],_0x45aa8e[_0x0e60('0x2e')]));_0x29d1b0[_0x0e60('0x43')][_0x0e60('0x45')]=_0x4768c6['id'];if(_0x3b4b6b['query'][_0x0e60('0x46')]){_0x29d1b0[_0x0e60('0x43')]=_[_0x0e60('0x35')](_0x29d1b0[_0x0e60('0x43')],{'$or':_[_0x0e60('0x1e')](_0x29d1b0[_0x0e60('0x30')],function(_0x48bcac){var _0x46f395={};_0x46f395[_0x48bcac]={'$like':'%'+_0x3b4b6b[_0x0e60('0x26')][_0x0e60('0x46')]+'%'};return _0x46f395;})});}if(_0x3b4b6b[_0x0e60('0x26')][_0x0e60('0x47')]){var _0x3a55e0=_0x3b4b6b[_0x0e60('0x26')][_0x0e60('0x47')]['split'](',');var _0x12ff24={};_0x12ff24[_0x3a55e0[0x0]]={'$gte':moment(_0x3a55e0[0x1])[_0x0e60('0x48')](_0x0e60('0x49'))};_0x29d1b0[_0x0e60('0x43')]=_[_0x0e60('0x35')](_0x29d1b0[_0x0e60('0x43')],_0x12ff24);}_0x29d1b0=_[_0x0e60('0x35')]({},_0x29d1b0,_0x3b4b6b['options']);return db[_0x0e60('0x3f')][_0x0e60('0x13')]({'where':_0x29d1b0['where']})['then'](function(_0x3e58e0){_0x235459[_0x0e60('0x13')]=_0x3e58e0;if(_0x3b4b6b[_0x0e60('0x26')][_0x0e60('0x33')]){_0x29d1b0[_0x0e60('0x34')]=[{'all':!![]}];}return db[_0x0e60('0x3f')][_0x0e60('0x24')](_0x29d1b0);})['then'](function(_0x1029cd){_0x235459[_0x0e60('0x4a')]=_0x1029cd;return _0x235459;});}})[_0x0e60('0x18')](respondWithFilteredResult(_0x4275e5,_0x29d1b0))['catch'](handleError(_0x4275e5,null));};exports['addTags']=function(_0x9aef42,_0x2d61ff){return db['WhatsappInteraction'][_0x0e60('0x37')]({'where':{'id':_0x9aef42[_0x0e60('0x2a')]['id']}})[_0x0e60('0x18')](handleEntityNotFound(_0x2d61ff,null))[_0x0e60('0x18')](function(_0x3833cc){if(_0x3833cc){return _0x3833cc[_0x0e60('0x4b')](_0x9aef42[_0x0e60('0x39')][_0x0e60('0x3c')],_[_0x0e60('0x4c')](_0x9aef42[_0x0e60('0x39')],[_0x0e60('0x3c'),'id'])||{})[_0x0e60('0x4d')](function(){return db[_0x0e60('0x4e')]['findAll']({'attributes':['id',_0x0e60('0x1d'),'color'],'where':{'id':_0x9aef42['body']['ids']}});})[_0x0e60('0x18')](function(_0x23a20c){socket[_0x0e60('0x4f')](_0x0e60('0x50'),{'id':Number(_0x9aef42[_0x0e60('0x2a')]['id']),'tags':_0x23a20c||[]});return{'id':Number(_0x9aef42['params']['id']),'tags':_0x23a20c||[]};});}})['then'](respondWithResult(_0x2d61ff,null))['catch'](handleError(_0x2d61ff,null));};exports[_0x0e60('0x51')]=function(_0x40166c,_0x5cc374){return db['WhatsappInteraction'][_0x0e60('0x37')]({'where':{'id':_0x40166c[_0x0e60('0x2a')]['id']}})['then'](handleEntityNotFound(_0x5cc374,null))[_0x0e60('0x18')](function(_0x38b2af){if(_0x38b2af){return _0x38b2af[_0x0e60('0x51')](_0x40166c[_0x0e60('0x26')]['ids']);}})[_0x0e60('0x18')](respondWithStatusCode(_0x5cc374,null))[_0x0e60('0x28')](handleError(_0x5cc374,null));};exports[_0x0e60('0x52')]=function(_0x294f15,_0x372e47){var _0xe4578b=moment()['unix']()['toString']();var _0xd59465=path[_0x0e60('0x53')](config[_0x0e60('0x54')],_0x0e60('0x55'),'files',_0x0e60('0x56'));var _0xf275c8=path[_0x0e60('0x53')](config['root'],_0x0e60('0x55'),'files',_0x0e60('0x57'));var _0x49edb0=path[_0x0e60('0x53')](_0xd59465,_0xe4578b);var _0x3fb152=util[_0x0e60('0x48')](_0x0e60('0x58'),_0x294f15[_0x0e60('0x2a')]['id'],_0xe4578b);var _0x439c30=path[_0x0e60('0x53')](_0xd59465,_0x3fb152);var _0x566412=[];_0x566412[_0x0e60('0x59')]({'model':db['User'],'as':'User','attributes':['id',_0x0e60('0x5a')],'raw':!![]});_0x566412[_0x0e60('0x59')]({'model':db[_0x0e60('0x5b')],'as':_0x0e60('0x5c'),'attributes':['id','firstName',_0x0e60('0x5d')],'raw':!![]});if(_0x294f15[_0x0e60('0x26')]['attachments']){_0x566412['push']({'model':db[_0x0e60('0x5e')],'as':_0x0e60('0x5e'),'raw':!![]});}var _0x15fd58=[{'model':db[_0x0e60('0x3f')],'as':'Messages','attributes':['id',_0x0e60('0x39'),_0x0e60('0x5f'),_0x0e60('0x60'),_0x0e60('0x61'),'read'],'include':_0x566412}];_0x15fd58[_0x0e60('0x59')]({'model':db['WhatsappAccount'],'as':_0x0e60('0x62'),'attributes':['id','name']});_0x15fd58[_0x0e60('0x59')]({'model':db[_0x0e60('0x63')],'as':'Owner','attributes':['id',_0x0e60('0x5a')]});return db[_0x0e60('0x2d')][_0x0e60('0x37')]({'where':{'id':_0x294f15[_0x0e60('0x2a')]['id']},'include':_0x15fd58})['then'](handleEntityNotFound(_0x372e47,null))[_0x0e60('0x18')](function(_0x3e6ffc){if(_0x3e6ffc){var _0x469c03=_0x3e6ffc['get']({'plain':!![]});fs[_0x0e60('0x64')](_0x49edb0);var _0x56d5b5={'channel':_0x0e60('0x65'),'account':_0x469c03[_0x0e60('0x62')][_0x0e60('0x1d')],'agent':_0x469c03['Owner']?_0x469c03[_0x0e60('0x66')][_0x0e60('0x5a')]:_0x0e60('0x67'),'createdAt':moment(_0x469c03[_0x0e60('0x5f')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x0e60('0x68')](),'closedAt':_0x469c03[_0x0e60('0x69')]?moment(_0x469c03['closedAt'])[_0x0e60('0x48')](_0x0e60('0x49'))['toString']():'','disposition':_0x469c03[_0x0e60('0x6a')],'messages':_(_0x469c03['Messages'])[_0x0e60('0x46')]({'secret':![]})[_0x0e60('0x1e')](function(_0x3693af){if(_0x3693af[_0x0e60('0x5e')]){var _0x5c4adb=path[_0x0e60('0x53')](_0xf275c8,_0x3693af[_0x0e60('0x5e')][_0x0e60('0x6b')]);if(fs[_0x0e60('0x6c')](_0x5c4adb)){fs[_0x0e60('0x6d')](_0x5c4adb)[_0x0e60('0x6e')](fs[_0x0e60('0x6f')](path[_0x0e60('0x53')](_0x49edb0,_0x3693af[_0x0e60('0x5e')]['basename'])));}}return{'date':moment(_0x3693af[_0x0e60('0x5f')])[_0x0e60('0x48')](_0x0e60('0x49'))[_0x0e60('0x68')](),'sender':_0x3693af[_0x0e60('0x60')]==='out'?_0x3693af['User']?_0x3693af[_0x0e60('0x63')][_0x0e60('0x5a')]:_0x0e60('0x70'):_0x3693af[_0x0e60('0x5c')][_0x0e60('0x71')]+(_0x3693af[_0x0e60('0x5c')][_0x0e60('0x5d')]?'\x20'+_0x3693af[_0x0e60('0x5c')][_0x0e60('0x5d')]:''),'body':_0x3693af[_0x0e60('0x5e')]?_0x3693af[_0x0e60('0x5e')][_0x0e60('0x6b')]:_0x3693af[_0x0e60('0x39')],'direction':_0x3693af[_0x0e60('0x60')]===_0x0e60('0x72')?'A':'C','secret':_0x3693af[_0x0e60('0x61')],'read':_0x3693af[_0x0e60('0x73')],'attachment':_0x3693af[_0x0e60('0x5e')]};})[_0x0e60('0x74')]()};return ejs[_0x0e60('0x75')](path[_0x0e60('0x53')](config[_0x0e60('0x54')],_0x0e60('0x55'),_0x0e60('0x76'),_0x0e60('0x77')),{'interaction':_0x56d5b5})[_0x0e60('0x18')](function(_0x3a5134){var _0x2f2478=path[_0x0e60('0x53')](_0x49edb0,'transcript-'+_0x469c03['id']+'-'+_0xe4578b+_0x0e60('0x78'));var _0x54a84f={'path':_0x2f2478,'channel':'Whatsapp','interactionId':_0x469c03['id']};return pdf[_0x0e60('0x79')](_0x3a5134,_0x54a84f);})[_0x0e60('0x18')](function(){return new BPromise(function(_0x20629c,_0x4f86c5){zipdir(_0x49edb0,{'saveTo':_0x439c30},function(_0x50a712,_0x4f1131){if(_0x50a712)return _0x4f86c5(_0x50a712);return _0x20629c(_0x4f1131);});})[_0x0e60('0x18')](function(){return new BPromise(function(_0x21495f,_0x3ea405){rimraf(_0x49edb0,function(_0x40576e){if(_0x40576e)_0x3ea405(_0x40576e);return _0x21495f();});});})[_0x0e60('0x18')](function(){return _0x372e47['download'](_0x439c30,_0x3fb152,function(_0x3f6b53){if(_0x3f6b53){console[_0x0e60('0x7a')](_0x0e60('0x7b'),_0x3f6b53);}else{fs[_0x0e60('0x7c')](_0x439c30);}});});});}else{return _0x372e47[_0x0e60('0xf')](0xc8);}})['catch'](handleError(_0x372e47,null));};
\ No newline at end of file
+var _0x8841=['set','json','update','then','destroy','sendStatus','error','stack','name','send','index','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','catch','show','params','model','keys','filters','intersection','attributes','length','include','find','create','body','describe','addMessage','WhatsappMessage','ids','omit','getMessages','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','setTags','spread','Tag','whatsappInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','User','fullname','Contact','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','firstName','lastName','read','value','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','util','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','api','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','status','end','offset','undefined','limit','count'];(function(_0x512018,_0x3a6af3){var _0x3d1c1f=function(_0x55a073){while(--_0x55a073){_0x512018['push'](_0x512018['shift']());}};_0x3d1c1f(++_0x3a6af3);}(_0x8841,0x174));var _0x1884=function(_0xe2127e,_0x479e89){_0xe2127e=_0xe2127e-0x0;var _0x7f86ef=_0x8841[_0xe2127e];return _0x7f86ef;};'use strict';var rimraf=require(_0x1884('0x0'));var zipdir=require(_0x1884('0x1'));var moment=require(_0x1884('0x2'));var BPromise=require('bluebird');var util=require(_0x1884('0x3'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require(_0x1884('0x4'));var Redis=require(_0x1884('0x5'));var interaction=require(_0x1884('0x6'));var qs=require('../../components/parsers/qs');var pdf=require(_0x1884('0x7'));var logger=require('../../config/logger')(_0x1884('0x8'));var config=require('../../config/environment');var db=require(_0x1884('0x9'))['db'];config['redis']=_['defaults'](config[_0x1884('0xa')],{'host':_0x1884('0xb'),'port':0x18eb});var socket=require(_0x1884('0xc'))(new Redis(config[_0x1884('0xa')]));require(_0x1884('0xd'))[_0x1884('0xe')](socket);function respondWithStatusCode(_0x4bbfae,_0x346a4e){_0x346a4e=_0x346a4e||0xcc;return function(_0x1a6f7f){if(_0x1a6f7f){return _0x4bbfae['sendStatus'](_0x346a4e);}return _0x4bbfae[_0x1884('0xf')](_0x346a4e)[_0x1884('0x10')]();};}function respondWithResult(_0x29003a,_0xf84d57){_0xf84d57=_0xf84d57||0xc8;return function(_0x3918fe){if(_0x3918fe){return _0x29003a[_0x1884('0xf')](_0xf84d57)['json'](_0x3918fe);}};}function respondWithFilteredResult(_0x194828,_0x11d711){return function(_0x14bc5a){if(_0x14bc5a){var _0x13b59e=typeof _0x11d711[_0x1884('0x11')]===_0x1884('0x12')&&typeof _0x11d711[_0x1884('0x13')]===_0x1884('0x12');var _0x527900=_0x14bc5a[_0x1884('0x14')];var _0x45741=_0x13b59e?0x0:_0x11d711[_0x1884('0x11')];var _0x2bafba=_0x13b59e?_0x14bc5a[_0x1884('0x14')]:_0x11d711['offset']+_0x11d711[_0x1884('0x13')];var _0x1c757d;if(_0x2bafba>=_0x527900){_0x2bafba=_0x527900;_0x1c757d=0xc8;}else{_0x1c757d=0xce;}_0x194828['status'](_0x1c757d);return _0x194828[_0x1884('0x15')]('Content-Range',_0x45741+'-'+_0x2bafba+'/'+_0x527900)[_0x1884('0x16')](_0x14bc5a);}return null;};}function saveUpdates(_0x1c01ac){return function(_0x1b551c){if(_0x1b551c){return _0x1b551c[_0x1884('0x17')](_0x1c01ac)[_0x1884('0x18')](function(_0x827de3){return _0x827de3;});}return null;};}function removeEntity(_0x48c27f){return function(_0x5cd5ef){if(_0x5cd5ef){return _0x5cd5ef[_0x1884('0x19')]()[_0x1884('0x18')](function(){_0x48c27f[_0x1884('0xf')](0xcc)[_0x1884('0x10')]();});}};}function handleEntityNotFound(_0x590a72){return function(_0x1b9839){if(!_0x1b9839){_0x590a72[_0x1884('0x1a')](0x194);}return _0x1b9839;};}function handleError(_0x590908,_0x3c5362){_0x3c5362=_0x3c5362||0x1f4;return function(_0x5e5369){logger[_0x1884('0x1b')](_0x5e5369[_0x1884('0x1c')]);if(_0x5e5369[_0x1884('0x1d')]){delete _0x5e5369['name'];}_0x590908['status'](_0x3c5362)[_0x1884('0x1e')](_0x5e5369);};}exports[_0x1884('0x1f')]=function(_0x1d8820,_0x64d811){var _0x1ce723={};var _0x53f7ee=_['map'](db[_0x1884('0x20')][_0x1884('0x21')],function(_0x3249f6){return{'name':_0x3249f6[_0x1884('0x22')],'type':_0x3249f6[_0x1884('0x23')][_0x1884('0x24')]};});_0x1ce723=qs[_0x1884('0x25')](_0x53f7ee,_0x1d8820);return interaction[_0x1884('0x26')](_0x1884('0x27'),_0x1d8820[_0x1884('0x28')],_0x1d8820[_0x1884('0x29')],_0x1ce723,_0x53f7ee)[_0x1884('0x18')](respondWithFilteredResult(_0x64d811,_0x1ce723))[_0x1884('0x2a')](handleError(_0x64d811,null));};exports[_0x1884('0x2b')]=function(_0x538831,_0x28b8f7){var _0x1f9e11={'raw':![],'where':{'id':_0x538831[_0x1884('0x2c')]['id']}},_0x2ba1b4={};_0x2ba1b4[_0x1884('0x2d')]=_[_0x1884('0x2e')](db[_0x1884('0x20')][_0x1884('0x21')]);_0x2ba1b4[_0x1884('0x28')]=_[_0x1884('0x2e')](_0x538831['query']);_0x2ba1b4[_0x1884('0x2f')]=_['intersection'](_0x2ba1b4[_0x1884('0x2d')],_0x2ba1b4[_0x1884('0x28')]);_0x1f9e11['attributes']=_[_0x1884('0x30')](_0x2ba1b4['model'],qs['fields'](_0x538831[_0x1884('0x28')]['fields']));_0x1f9e11[_0x1884('0x31')]=_0x1f9e11[_0x1884('0x31')][_0x1884('0x32')]?_0x1f9e11['attributes']:_0x2ba1b4[_0x1884('0x2d')];if(_0x538831[_0x1884('0x28')]['includeAll']){_0x1f9e11[_0x1884('0x33')]=[{'all':!![]}];}_0x1f9e11=_['merge']({},_0x1f9e11,_0x538831['options']);return db[_0x1884('0x20')][_0x1884('0x34')](_0x1f9e11)[_0x1884('0x18')](handleEntityNotFound(_0x28b8f7,null))[_0x1884('0x18')](respondWithResult(_0x28b8f7,null))['catch'](handleError(_0x28b8f7,null));};exports[_0x1884('0x35')]=function(_0x57f50a,_0x464703){return db[_0x1884('0x20')]['create'](_0x57f50a[_0x1884('0x36')],{})[_0x1884('0x18')](respondWithResult(_0x464703,0xc9))[_0x1884('0x2a')](handleError(_0x464703,null));};exports['update']=function(_0x432e8c,_0xa4cb7){if(_0x432e8c[_0x1884('0x36')]['id']){delete _0x432e8c[_0x1884('0x36')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x432e8c[_0x1884('0x2c')]['id']}})[_0x1884('0x18')](handleEntityNotFound(_0xa4cb7,null))[_0x1884('0x18')](saveUpdates(_0x432e8c['body'],null))[_0x1884('0x18')](respondWithResult(_0xa4cb7,null))['catch'](handleError(_0xa4cb7,null));};exports['destroy']=function(_0x3e3295,_0xf20b3a){return db[_0x1884('0x20')][_0x1884('0x34')]({'where':{'id':_0x3e3295['params']['id']}})[_0x1884('0x18')](handleEntityNotFound(_0xf20b3a,null))[_0x1884('0x18')](removeEntity(_0xf20b3a,null))[_0x1884('0x2a')](handleError(_0xf20b3a,null));};exports[_0x1884('0x37')]=function(_0xe8d4ea,_0x2f3d9b){return db['WhatsappInteraction'][_0x1884('0x37')]()[_0x1884('0x18')](respondWithResult(_0x2f3d9b,null))[_0x1884('0x2a')](handleError(_0x2f3d9b,null));};exports[_0x1884('0x38')]=function(_0x56b43c,_0x3b17fa){return db[_0x1884('0x39')][_0x1884('0x34')]({'where':{'id':_0x56b43c[_0x1884('0x2c')]['id']}})['then'](handleEntityNotFound(_0x3b17fa,null))[_0x1884('0x18')](function(_0x3e9b9c){if(_0x3e9b9c){return _0x3e9b9c['addMessage'](_0x56b43c[_0x1884('0x36')][_0x1884('0x3a')],_[_0x1884('0x3b')](_0x56b43c[_0x1884('0x36')],[_0x1884('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x3b17fa,null))[_0x1884('0x2a')](handleError(_0x3b17fa,null));};exports[_0x1884('0x3c')]=function(_0x14f0b0,_0x1fcb97){var _0x18b682={'raw':![],'where':{}};var _0x2c87cf={};var _0x2f31c1={'count':0x0,'rows':[]};return db['WhatsappInteraction']['findOne']({'where':{'id':_0x14f0b0['params']['id']}})[_0x1884('0x18')](handleEntityNotFound(_0x1fcb97,null))['then'](function(_0x231e9a){if(_0x231e9a){_0x2c87cf[_0x1884('0x2d')]=_[_0x1884('0x2e')](db[_0x1884('0x39')]['rawAttributes']);_0x2c87cf[_0x1884('0x28')]=_[_0x1884('0x2e')](_0x14f0b0[_0x1884('0x28')]);_0x2c87cf[_0x1884('0x2f')]=_[_0x1884('0x30')](_0x2c87cf['model'],_0x2c87cf['query']);_0x18b682[_0x1884('0x31')]=_[_0x1884('0x30')](_0x2c87cf['model'],qs[_0x1884('0x3d')](_0x14f0b0[_0x1884('0x28')][_0x1884('0x3d')]));_0x18b682[_0x1884('0x31')]=_0x18b682[_0x1884('0x31')][_0x1884('0x32')]?_0x18b682[_0x1884('0x31')]:_0x2c87cf[_0x1884('0x2d')];if(!_0x14f0b0[_0x1884('0x28')][_0x1884('0x3e')](_0x1884('0x3f'))){_0x18b682[_0x1884('0x13')]=qs[_0x1884('0x13')](_0x14f0b0[_0x1884('0x28')][_0x1884('0x13')]);_0x18b682[_0x1884('0x11')]=qs[_0x1884('0x11')](_0x14f0b0[_0x1884('0x28')]['offset']);}_0x18b682[_0x1884('0x40')]=qs[_0x1884('0x41')](_0x14f0b0[_0x1884('0x28')][_0x1884('0x41')]);_0x18b682[_0x1884('0x42')]=qs[_0x1884('0x2f')](_[_0x1884('0x43')](_0x14f0b0[_0x1884('0x28')],_0x2c87cf['filters']));_0x18b682[_0x1884('0x42')]['WhatsappInteractionId']=_0x231e9a['id'];if(_0x14f0b0['query'][_0x1884('0x44')]){_0x18b682[_0x1884('0x42')]=_[_0x1884('0x45')](_0x18b682[_0x1884('0x42')],{'$or':_[_0x1884('0x46')](_0x18b682[_0x1884('0x31')],function(_0x25c97c){var _0x4532b1={};_0x4532b1[_0x25c97c]={'$like':'%'+_0x14f0b0['query']['filter']+'%'};return _0x4532b1;})});}if(_0x14f0b0[_0x1884('0x28')][_0x1884('0x47')]){var _0x5a6013=_0x14f0b0[_0x1884('0x28')]['$gte'][_0x1884('0x48')](',');var _0x10e946={};_0x10e946[_0x5a6013[0x0]]={'$gte':moment(_0x5a6013[0x1])[_0x1884('0x49')](_0x1884('0x4a'))};_0x18b682[_0x1884('0x42')]=_['merge'](_0x18b682[_0x1884('0x42')],_0x10e946);}_0x18b682=_[_0x1884('0x45')]({},_0x18b682,_0x14f0b0['options']);return db['WhatsappMessage'][_0x1884('0x14')]({'where':_0x18b682[_0x1884('0x42')]})[_0x1884('0x18')](function(_0x2d22d6){_0x2f31c1[_0x1884('0x14')]=_0x2d22d6;if(_0x14f0b0['query'][_0x1884('0x4b')]){_0x18b682[_0x1884('0x33')]=[{'all':!![]}];}return db[_0x1884('0x39')][_0x1884('0x26')](_0x18b682);})[_0x1884('0x18')](function(_0x2af9ba){_0x2f31c1[_0x1884('0x4c')]=_0x2af9ba;return _0x2f31c1;});}})[_0x1884('0x18')](respondWithFilteredResult(_0x1fcb97,_0x18b682))[_0x1884('0x2a')](handleError(_0x1fcb97,null));};exports[_0x1884('0x4d')]=function(_0x1b6fa4,_0x440003){return db[_0x1884('0x20')][_0x1884('0x34')]({'where':{'id':_0x1b6fa4[_0x1884('0x2c')]['id']}})[_0x1884('0x18')](handleEntityNotFound(_0x440003,null))[_0x1884('0x18')](function(_0x5e7c96){if(_0x5e7c96){return _0x5e7c96[_0x1884('0x4e')](_0x1b6fa4[_0x1884('0x36')][_0x1884('0x3a')],_[_0x1884('0x3b')](_0x1b6fa4[_0x1884('0x36')],[_0x1884('0x3a'),'id'])||{})[_0x1884('0x4f')](function(){return db[_0x1884('0x50')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x1b6fa4[_0x1884('0x36')][_0x1884('0x3a')]}});})[_0x1884('0x18')](function(_0x277f2e){socket['emit'](_0x1884('0x51'),{'id':Number(_0x1b6fa4[_0x1884('0x2c')]['id']),'tags':_0x277f2e||[]});return{'id':Number(_0x1b6fa4['params']['id']),'tags':_0x277f2e||[]};});}})[_0x1884('0x18')](respondWithResult(_0x440003,null))[_0x1884('0x2a')](handleError(_0x440003,null));};exports[_0x1884('0x52')]=function(_0x86f430,_0xad408b){return db[_0x1884('0x20')]['find']({'where':{'id':_0x86f430[_0x1884('0x2c')]['id']}})[_0x1884('0x18')](handleEntityNotFound(_0xad408b,null))[_0x1884('0x18')](function(_0x433b67){if(_0x433b67){return _0x433b67['removeTags'](_0x86f430['query']['ids']);}})['then'](respondWithStatusCode(_0xad408b,null))['catch'](handleError(_0xad408b,null));};exports[_0x1884('0x53')]=function(_0x22b052,_0x20f0ec){var _0x5f1af8=moment()[_0x1884('0x54')]()[_0x1884('0x55')]();var _0x3f23ee=path[_0x1884('0x56')](config[_0x1884('0x57')],'server',_0x1884('0x58'),_0x1884('0x59'));var _0x47c868=path[_0x1884('0x56')](config['root'],_0x1884('0x5a'),_0x1884('0x58'),_0x1884('0x5b'));var _0x525719=path['join'](_0x3f23ee,_0x5f1af8);var _0x36d533=util[_0x1884('0x49')](_0x1884('0x5c'),_0x22b052[_0x1884('0x2c')]['id'],_0x5f1af8);var _0x287e00=path['join'](_0x3f23ee,_0x36d533);var _0x58b368=[];_0x58b368[_0x1884('0x5d')]({'model':db[_0x1884('0x5e')],'as':_0x1884('0x5e'),'attributes':['id',_0x1884('0x5f')],'raw':!![]});_0x58b368[_0x1884('0x5d')]({'model':db['CmContact'],'as':_0x1884('0x60'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x22b052[_0x1884('0x28')][_0x1884('0x5b')]){_0x58b368[_0x1884('0x5d')]({'model':db[_0x1884('0x61')],'as':_0x1884('0x61'),'raw':!![]});}var _0x28604d=[{'model':db[_0x1884('0x39')],'as':_0x1884('0x62'),'attributes':['id',_0x1884('0x36'),_0x1884('0x63'),_0x1884('0x64'),_0x1884('0x65'),'read'],'include':_0x58b368}];_0x28604d[_0x1884('0x5d')]({'model':db[_0x1884('0x66')],'as':_0x1884('0x67'),'attributes':['id',_0x1884('0x1d')]});_0x28604d[_0x1884('0x5d')]({'model':db[_0x1884('0x5e')],'as':_0x1884('0x68'),'attributes':['id','fullname']});return db[_0x1884('0x20')]['find']({'where':{'id':_0x22b052[_0x1884('0x2c')]['id']},'include':_0x28604d})['then'](handleEntityNotFound(_0x20f0ec,null))[_0x1884('0x18')](function(_0x14b142){if(_0x14b142){var _0x192b8e=_0x14b142[_0x1884('0x69')]({'plain':!![]});fs[_0x1884('0x6a')](_0x525719);var _0x4c6588={'channel':_0x1884('0x6b'),'account':_0x192b8e['Account']['name'],'agent':_0x192b8e[_0x1884('0x68')]?_0x192b8e['Owner']['fullname']:_0x1884('0x6c'),'createdAt':moment(_0x192b8e[_0x1884('0x63')])[_0x1884('0x49')](_0x1884('0x4a'))[_0x1884('0x55')](),'closedAt':_0x192b8e[_0x1884('0x6d')]?moment(_0x192b8e[_0x1884('0x6e')])[_0x1884('0x49')](_0x1884('0x4a'))[_0x1884('0x55')]():'','disposition':_0x192b8e[_0x1884('0x6f')],'messages':_(_0x192b8e[_0x1884('0x62')])['filter']({'secret':![]})[_0x1884('0x46')](function(_0x1ce0a2){if(_0x1ce0a2['Attachment']){var _0x54c7ad=path[_0x1884('0x56')](_0x47c868,_0x1ce0a2[_0x1884('0x61')][_0x1884('0x70')]);if(fs[_0x1884('0x71')](_0x54c7ad)){fs[_0x1884('0x72')](_0x54c7ad)[_0x1884('0x73')](fs[_0x1884('0x74')](path[_0x1884('0x56')](_0x525719,_0x1ce0a2[_0x1884('0x61')]['basename'])));}}return{'date':moment(_0x1ce0a2[_0x1884('0x63')])[_0x1884('0x49')](_0x1884('0x4a'))[_0x1884('0x55')](),'sender':_0x1ce0a2[_0x1884('0x64')]===_0x1884('0x75')?_0x1ce0a2[_0x1884('0x5e')]?_0x1ce0a2[_0x1884('0x5e')][_0x1884('0x5f')]:_0x1884('0x76'):_0x1ce0a2[_0x1884('0x60')][_0x1884('0x77')]+(_0x1ce0a2[_0x1884('0x60')]['lastName']?'\x20'+_0x1ce0a2['Contact'][_0x1884('0x78')]:''),'body':_0x1ce0a2['Attachment']?_0x1ce0a2[_0x1884('0x61')][_0x1884('0x70')]:_0x1ce0a2[_0x1884('0x36')],'direction':_0x1ce0a2['direction']===_0x1884('0x75')?'A':'C','secret':_0x1ce0a2[_0x1884('0x65')],'read':_0x1ce0a2[_0x1884('0x79')],'attachment':_0x1ce0a2[_0x1884('0x61')]};})[_0x1884('0x7a')]()};return ejs[_0x1884('0x7b')](path[_0x1884('0x56')](config['root'],_0x1884('0x5a'),_0x1884('0x7c'),'downloadInteraction.ejs'),{'interaction':_0x4c6588})[_0x1884('0x18')](function(_0x3ea7b4){var _0x4e5135=path['join'](_0x525719,_0x1884('0x7d')+_0x192b8e['id']+'-'+_0x5f1af8+_0x1884('0x7e'));var _0x4935dd={'path':_0x4e5135,'channel':_0x1884('0x6b'),'interactionId':_0x192b8e['id']};return pdf[_0x1884('0x7f')](_0x3ea7b4,_0x4935dd);})[_0x1884('0x18')](function(){return new BPromise(function(_0x255a2a,_0x18112b){zipdir(_0x525719,{'saveTo':_0x287e00},function(_0x3c0d6f,_0x1b1b9e){if(_0x3c0d6f)return _0x18112b(_0x3c0d6f);return _0x255a2a(_0x1b1b9e);});})['then'](function(){return new BPromise(function(_0x35b5a8,_0x22543f){rimraf(_0x525719,function(_0x36d34d){if(_0x36d34d)_0x22543f(_0x36d34d);return _0x35b5a8();});});})[_0x1884('0x18')](function(){return _0x20f0ec['download'](_0x287e00,_0x36d533,function(_0xd1660){if(_0xd1660){console[_0x1884('0x80')](_0x1884('0x81'),_0xd1660);}else{fs[_0x1884('0x82')](_0x287e00);}});});});}else{return _0x20f0ec['sendStatus'](0xc8);}})[_0x1884('0x2a')](handleError(_0x20f0ec,null));};
\ No newline at end of file
index e105b35..c56face 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bdb=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','getUsers','then','setDataValue'];(function(_0x6a7ef7,_0x2fe222){var _0x45bc4f=function(_0x490f97){while(--_0x490f97){_0x6a7ef7['push'](_0x6a7ef7['shift']());}};_0x45bc4f(++_0x2fe222);}(_0x2bdb,0x105));var _0xb2bd=function(_0x798f9b,_0x48646d){_0x798f9b=_0x798f9b-0x0;var _0x1bcf59=_0x2bdb[_0x798f9b];return _0x1bcf59;};'use strict';var EventEmitter=require(_0xb2bd('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0xb2bd('0x1')];var WhatsappMessage=require('../../mysqldb')['db'][_0xb2bd('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xb2bd('0x3')](0x0);var events={'afterCreate':_0xb2bd('0x4'),'afterUpdate':'update','afterDestroy':_0xb2bd('0x5')};function emitEvent(_0x2be356){return function(_0x1fa03c,_0x4676c1,_0x461137){_0x1fa03c[_0xb2bd('0x6')]({'attributes':['id'],'raw':!![]})[_0xb2bd('0x7')](function(_0x5bae78){_0x1fa03c[_0xb2bd('0x8')]('Users',_0x5bae78[_0xb2bd('0x9')](function(_0x29f784){return{'id':_0x29f784['id']};}));return WhatsappMessage[_0xb2bd('0xa')]({'where':{'WhatsappInteractionId':_0x1fa03c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb2bd('0x7')](function(_0x412872){_0x1fa03c[_0xb2bd('0x8')](_0xb2bd('0xb'),_0x412872[_0xb2bd('0xc')]);WhatsappInteractionEvents[_0xb2bd('0xd')](_0x2be356+':'+_0x1fa03c['id'],_0x1fa03c);WhatsappInteractionEvents['emit'](_0x2be356,_0x1fa03c);_0x461137(null);})[_0xb2bd('0xe')](_0x461137(null));};}for(var e in events){if(events[_0xb2bd('0xf')](e)){var event=events[e];WhatsappInteraction[_0xb2bd('0x10')](e,emitEvent(event));}}module[_0xb2bd('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xfa2f=['map','findAll','setDataValue','length','catch','hasOwnProperty','hook','exports','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','getUsers','then','Users'];(function(_0x378131,_0x252572){var _0x57ceb5=function(_0x46d0ca){while(--_0x46d0ca){_0x378131['push'](_0x378131['shift']());}};_0x57ceb5(++_0x252572);}(_0xfa2f,0xe8));var _0xffa2=function(_0x41163d,_0x39f244){_0x41163d=_0x41163d-0x0;var _0x164181=_0xfa2f[_0x41163d];return _0x164181;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require('../../mysqldb')['db'][_0xffa2('0x0')];var WhatsappMessage=require('../../mysqldb')['db'][_0xffa2('0x1')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xffa2('0x2')](0x0);var events={'afterCreate':_0xffa2('0x3'),'afterUpdate':'update','afterDestroy':_0xffa2('0x4')};function emitEvent(_0x12b74e){return function(_0x1cc43e,_0x14787c,_0x25fd81){_0x1cc43e[_0xffa2('0x5')]({'attributes':['id'],'raw':!![]})[_0xffa2('0x6')](function(_0x489257){_0x1cc43e['setDataValue'](_0xffa2('0x7'),_0x489257[_0xffa2('0x8')](function(_0x201cd9){return{'id':_0x201cd9['id']};}));return WhatsappMessage[_0xffa2('0x9')]({'where':{'WhatsappInteractionId':_0x1cc43e['id'],'direction':'in','read':![]},'raw':!![]});})[_0xffa2('0x6')](function(_0x238500){_0x1cc43e[_0xffa2('0xa')]('unreadMessages',_0x238500[_0xffa2('0xb')]);WhatsappInteractionEvents['emit'](_0x12b74e+':'+_0x1cc43e['id'],_0x1cc43e);WhatsappInteractionEvents['emit'](_0x12b74e,_0x1cc43e);_0x25fd81(null);})[_0xffa2('0xc')](_0x25fd81(null));};}for(var e in events){if(events[_0xffa2('0xd')](e)){var event=events[e];WhatsappInteraction[_0xffa2('0xe')](e,emitEvent(event));}}module[_0xffa2('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index df338c0..12ea900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d63=['moment','request-promise','rimraf','../../config/environment','WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api'];(function(_0x4d3329,_0x53e55b){var _0x3abb35=function(_0x10e135){while(--_0x10e135){_0x4d3329['push'](_0x4d3329['shift']());}};_0x3abb35(++_0x53e55b);}(_0x1d63,0x182));var _0x31d6=function(_0x1b16c9,_0x595061){_0x1b16c9=_0x1b16c9-0x0;var _0x214bd5=_0x1d63[_0x1b16c9];return _0x214bd5;};'use strict';var _=require(_0x31d6('0x0'));var util=require(_0x31d6('0x1'));var logger=require(_0x31d6('0x2'))(_0x31d6('0x3'));var moment=require(_0x31d6('0x4'));var BPromise=require('bluebird');var rp=require(_0x31d6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31d6('0x6'));var config=require(_0x31d6('0x7'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x39e553,_0x4c31bd){return _0x39e553['define'](_0x31d6('0x8'),attributes,{'tableName':_0x31d6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2a132a,_0x4d8712,_0x57f9e9){if(_0x2a132a[_0x31d6('0xa')](_0x31d6('0xb'))){_0x2a132a[_0x31d6('0xc')]=moment()[_0x31d6('0xd')](_0x31d6('0xe'));}_0x57f9e9(null,_0x2a132a);}}});};
\ No newline at end of file
+var _0x80b2=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','format'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x80b2,0x141));var _0x280b=function(_0x3f3763,_0x3693e4){_0x3f3763=_0x3f3763-0x0;var _0x11f8c3=_0x80b2[_0x3f3763];return _0x11f8c3;};'use strict';var _=require(_0x280b('0x0'));var util=require(_0x280b('0x1'));var logger=require('../../config/logger')(_0x280b('0x2'));var moment=require(_0x280b('0x3'));var BPromise=require('bluebird');var rp=require(_0x280b('0x4'));var fs=require('fs');var path=require(_0x280b('0x5'));var rimraf=require(_0x280b('0x6'));var config=require(_0x280b('0x7'));var attributes=require(_0x280b('0x8'));module['exports']=function(_0x2dda31,_0x15ea98){return _0x2dda31['define'](_0x280b('0x9'),attributes,{'tableName':_0x280b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x28e49c,_0x59de38,_0x2b5448){if(_0x28e49c[_0x280b('0xb')](_0x280b('0xc'))){_0x28e49c[_0x280b('0xd')]=moment()[_0x280b('0xe')](_0x280b('0xf'));}_0x2b5448(null,_0x28e49c);}}});};
\ No newline at end of file
index 106e0fd..ddc2bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b2=['request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','info','result','catch','UpdateWhatsappInteraction','update','body','options','raw','attributes','limit','AddTagsToWhatsappInteraction','WhatsappInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then'];(function(_0x78bdc1,_0x274205){var _0x51e74a=function(_0x1dd010){while(--_0x1dd010){_0x78bdc1['push'](_0x78bdc1['shift']());}};_0x51e74a(++_0x274205);}(_0x42b2,0xd2));var _0x242b=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x42b2[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0x242b('0x0'));var util=require(_0x242b('0x1'));var moment=require(_0x242b('0x2'));var BPromise=require(_0x242b('0x3'));var rs=require(_0x242b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x242b('0x5'))['db'];var utils=require(_0x242b('0x6'));var logger=require(_0x242b('0x7'))(_0x242b('0x8'));var config=require(_0x242b('0x9'));var jayson=require(_0x242b('0xa'));var client=jayson[_0x242b('0xb')][_0x242b('0xc')]({'port':0x232a});config['redis']=_[_0x242b('0xd')](config[_0x242b('0xe')],{'host':_0x242b('0xf'),'port':0x18eb});var socket=require(_0x242b('0x10'))(new Redis(config[_0x242b('0xe')]));require('./whatsappInteraction.socket')[_0x242b('0x11')](socket);function respondWithRpcPromise(_0x49323b,_0x25ca8a,_0x52de31){return new BPromise(function(_0x1af0c2,_0x11918b){return client[_0x242b('0x12')](_0x49323b,_0x52de31)[_0x242b('0x13')](function(_0x16d909){logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x25ca8a,_0x242b('0x14'));logger[_0x242b('0x15')](_0x242b('0x16'),_0x25ca8a,_0x242b('0x14'),JSON[_0x242b('0x17')](_0x16d909));if(_0x16d909['error']){if(_0x16d909[_0x242b('0x18')][_0x242b('0x19')]===0x1f4){logger[_0x242b('0x18')](_0x242b('0x1a'),_0x25ca8a,_0x16d909[_0x242b('0x18')][_0x242b('0x1b')]);return _0x11918b(_0x16d909[_0x242b('0x18')][_0x242b('0x1b')]);}logger[_0x242b('0x18')]('WhatsappInteraction,\x20%s,\x20%s',_0x25ca8a,_0x16d909[_0x242b('0x18')][_0x242b('0x1b')]);return _0x1af0c2(_0x16d909['error'][_0x242b('0x1b')]);}else{logger[_0x242b('0x1c')](_0x242b('0x1a'),_0x25ca8a,'request\x20sent');_0x1af0c2(_0x16d909[_0x242b('0x1d')][_0x242b('0x1b')]);}})[_0x242b('0x1e')](function(_0x153a30){logger['error'](_0x242b('0x1a'),_0x25ca8a,_0x153a30);_0x11918b(_0x153a30);});});}exports[_0x242b('0x1f')]=function(_0x285830){var _0x3883c2=this;return new Promise(function(_0x72d88a,_0x5cb01b){return db['WhatsappInteraction'][_0x242b('0x20')](_0x285830[_0x242b('0x21')],{'raw':_0x285830['options']?_0x285830[_0x242b('0x22')][_0x242b('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x285830[_0x242b('0x22')]?_0x285830[_0x242b('0x22')]['where']||null:null,'attributes':_0x285830['options']?_0x285830['options'][_0x242b('0x24')]||null:null,'limit':_0x285830[_0x242b('0x22')]?_0x285830[_0x242b('0x22')][_0x242b('0x25')]||null:null})[_0x242b('0x13')](function(_0x160c3b){logger[_0x242b('0x1c')](_0x242b('0x1f'),_0x285830);logger[_0x242b('0x15')]('UpdateWhatsappInteraction',_0x285830,JSON['stringify'](_0x160c3b));_0x72d88a(_0x160c3b);})['catch'](function(_0x37bb4e){logger[_0x242b('0x18')](_0x242b('0x1f'),_0x37bb4e[_0x242b('0x1b')],_0x285830);_0x5cb01b(_0x3883c2['error'](0x1f4,_0x37bb4e[_0x242b('0x1b')]));});});};exports[_0x242b('0x26')]=function(_0x30e47e){return new Promise(function(_0x2ec163,_0x26d257){return db[_0x242b('0x27')][_0x242b('0x28')]({'where':_0x30e47e['options']?_0x30e47e['options']['where']||null:null})[_0x242b('0x13')](function(_0x4966c2){if(_0x4966c2){return _0x4966c2[_0x242b('0x29')](_0x30e47e[_0x242b('0x21')][_0x242b('0x2a')],_[_0x242b('0x2b')](_0x30e47e['body'],[_0x242b('0x2a'),'id'])||{});}})[_0x242b('0x2c')](function(_0x34f8e3){logger['info'](_0x242b('0x2d'),_0x30e47e);logger['debug'](_0x242b('0x2d'),_0x30e47e,JSON[_0x242b('0x17')](_0x34f8e3));_0x2ec163(_0x34f8e3);})[_0x242b('0x1e')](function(_0x2017e8){logger[_0x242b('0x18')](_0x242b('0x2d'),_0x2017e8['message'],_0x30e47e);_0x26d257(_this[_0x242b('0x18')](0x1f4,_0x2017e8[_0x242b('0x1b')]));});});};
\ No newline at end of file
+var _0x5ebc=['request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','where','limit','AddTagsToWhatsappInteraction','find','addTags','ids','omit','AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x4ea955,_0x1eda76){var _0x558561=function(_0x5b20f4){while(--_0x5b20f4){_0x4ea955['push'](_0x4ea955['shift']());}};_0x558561(++_0x1eda76);}(_0x5ebc,0x6a));var _0xc5eb=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5ebc[_0x5f0089];return _0x193892;};'use strict';var _=require(_0xc5eb('0x0'));var util=require('util');var moment=require(_0xc5eb('0x1'));var BPromise=require('bluebird');var rs=require(_0xc5eb('0x2'));var fs=require('fs');var Redis=require(_0xc5eb('0x3'));var db=require(_0xc5eb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc5eb('0x5'))(_0xc5eb('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc5eb('0x7')][_0xc5eb('0x8')]({'port':0x232a});config[_0xc5eb('0x9')]=_[_0xc5eb('0xa')](config[_0xc5eb('0x9')],{'host':_0xc5eb('0xb'),'port':0x18eb});var socket=require(_0xc5eb('0xc'))(new Redis(config[_0xc5eb('0x9')]));require('./whatsappInteraction.socket')[_0xc5eb('0xd')](socket);function respondWithRpcPromise(_0x442bf5,_0x76b711,_0x275b41){return new BPromise(function(_0x190971,_0x19f078){return client[_0xc5eb('0xe')](_0x442bf5,_0x275b41)[_0xc5eb('0xf')](function(_0x3ec087){logger[_0xc5eb('0x10')](_0xc5eb('0x11'),_0x76b711,_0xc5eb('0x12'));logger[_0xc5eb('0x13')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x76b711,_0xc5eb('0x12'),JSON[_0xc5eb('0x14')](_0x3ec087));if(_0x3ec087[_0xc5eb('0x15')]){if(_0x3ec087['error'][_0xc5eb('0x16')]===0x1f4){logger[_0xc5eb('0x15')](_0xc5eb('0x11'),_0x76b711,_0x3ec087[_0xc5eb('0x15')]['message']);return _0x19f078(_0x3ec087[_0xc5eb('0x15')][_0xc5eb('0x17')]);}logger[_0xc5eb('0x15')](_0xc5eb('0x11'),_0x76b711,_0x3ec087[_0xc5eb('0x15')][_0xc5eb('0x17')]);return _0x190971(_0x3ec087[_0xc5eb('0x15')][_0xc5eb('0x17')]);}else{logger[_0xc5eb('0x10')](_0xc5eb('0x11'),_0x76b711,'request\x20sent');_0x190971(_0x3ec087[_0xc5eb('0x18')][_0xc5eb('0x17')]);}})[_0xc5eb('0x19')](function(_0x462776){logger['error'](_0xc5eb('0x11'),_0x76b711,_0x462776);_0x19f078(_0x462776);});});}exports[_0xc5eb('0x1a')]=function(_0x524f20){var _0x278b68=this;return new Promise(function(_0xa57111,_0x5e3a67){return db[_0xc5eb('0x1b')][_0xc5eb('0x1c')](_0x524f20[_0xc5eb('0x1d')],{'raw':_0x524f20[_0xc5eb('0x1e')]?_0x524f20[_0xc5eb('0x1e')][_0xc5eb('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x524f20[_0xc5eb('0x1e')]?_0x524f20[_0xc5eb('0x1e')][_0xc5eb('0x20')]||null:null,'attributes':_0x524f20[_0xc5eb('0x1e')]?_0x524f20[_0xc5eb('0x1e')]['attributes']||null:null,'limit':_0x524f20[_0xc5eb('0x1e')]?_0x524f20[_0xc5eb('0x1e')][_0xc5eb('0x21')]||null:null})['then'](function(_0x44c083){logger[_0xc5eb('0x10')](_0xc5eb('0x1a'),_0x524f20);logger[_0xc5eb('0x13')](_0xc5eb('0x1a'),_0x524f20,JSON['stringify'](_0x44c083));_0xa57111(_0x44c083);})['catch'](function(_0x399b4f){logger[_0xc5eb('0x15')]('UpdateWhatsappInteraction',_0x399b4f[_0xc5eb('0x17')],_0x524f20);_0x5e3a67(_0x278b68[_0xc5eb('0x15')](0x1f4,_0x399b4f['message']));});});};exports[_0xc5eb('0x22')]=function(_0x25312b){return new Promise(function(_0x972b8e,_0x44a1d2){return db[_0xc5eb('0x1b')][_0xc5eb('0x23')]({'where':_0x25312b[_0xc5eb('0x1e')]?_0x25312b[_0xc5eb('0x1e')][_0xc5eb('0x20')]||null:null})['then'](function(_0x3ae7a4){if(_0x3ae7a4){return _0x3ae7a4[_0xc5eb('0x24')](_0x25312b[_0xc5eb('0x1d')][_0xc5eb('0x25')],_[_0xc5eb('0x26')](_0x25312b[_0xc5eb('0x1d')],[_0xc5eb('0x25'),'id'])||{});}})['spread'](function(_0x11e480){logger['info'](_0xc5eb('0x27'),_0x25312b);logger[_0xc5eb('0x13')](_0xc5eb('0x27'),_0x25312b,JSON[_0xc5eb('0x14')](_0x11e480));_0x972b8e(_0x11e480);})[_0xc5eb('0x19')](function(_0x50f95d){logger[_0xc5eb('0x15')](_0xc5eb('0x27'),_0x50f95d[_0xc5eb('0x17')],_0x25312b);_0x44a1d2(_this[_0xc5eb('0x15')](0x1f4,_0x50f95d[_0xc5eb('0x17')]));});});};
\ No newline at end of file
index 5eaf696..744759a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a6=['length','whatsappInteraction:','./whatsappInteraction.events','save','update','removeListener','register'];(function(_0x4eaa4c,_0x2f7422){var _0x15aec6=function(_0x23efc9){while(--_0x23efc9){_0x4eaa4c['push'](_0x4eaa4c['shift']());}};_0x15aec6(++_0x2f7422);}(_0xc3a6,0x1c2));var _0x6c3a=function(_0x474c49,_0x38e8cf){_0x474c49=_0x474c49-0x0;var _0x59f0af=_0xc3a6[_0x474c49];return _0x59f0af;};'use strict';var WhatsappInteractionEvents=require(_0x6c3a('0x0'));var events=[_0x6c3a('0x1'),'remove',_0x6c3a('0x2')];function createListener(_0x3964c4,_0x35efc5){return function(_0x1c10cb){_0x35efc5['emit'](_0x3964c4,_0x1c10cb);};}function removeListener(_0x5555a4,_0x5310a4){return function(){WhatsappInteractionEvents[_0x6c3a('0x3')](_0x5555a4,_0x5310a4);};}exports[_0x6c3a('0x4')]=function(_0xb29174){for(var _0x2dc6c3=0x0,_0xa1fe13=events[_0x6c3a('0x5')];_0x2dc6c3<_0xa1fe13;_0x2dc6c3++){var _0x21c87a=events[_0x2dc6c3];var _0x33c494=createListener(_0x6c3a('0x6')+_0x21c87a,_0xb29174);WhatsappInteractionEvents['on'](_0x21c87a,_0x33c494);}};
\ No newline at end of file
+var _0xc740=['update','emit','removeListener','register','./whatsappInteraction.events','remove'];(function(_0x469f86,_0x29d22f){var _0x4131f3=function(_0x471d9b){while(--_0x471d9b){_0x469f86['push'](_0x469f86['shift']());}};_0x4131f3(++_0x29d22f);}(_0xc740,0x6a));var _0x0c74=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc740[_0x14add3];return _0x4a174f;};'use strict';var WhatsappInteractionEvents=require(_0x0c74('0x0'));var events=['save',_0x0c74('0x1'),_0x0c74('0x2')];function createListener(_0x3fa2ae,_0x486a95){return function(_0x41e47f){_0x486a95[_0x0c74('0x3')](_0x3fa2ae,_0x41e47f);};}function removeListener(_0x930e64,_0x28baaf){return function(){WhatsappInteractionEvents[_0x0c74('0x4')](_0x930e64,_0x28baaf);};}exports[_0x0c74('0x5')]=function(_0xb1e6d6){for(var _0xac5d7e=0x0,_0x5cdb5d=events['length'];_0xac5d7e<_0x5cdb5d;_0xac5d7e++){var _0x3a4711=events[_0xac5d7e];var _0x46c755=createListener('whatsappInteraction:'+_0x3a4711,_0xb1e6d6);WhatsappInteractionEvents['on'](_0x3a4711,_0x46c755);}};
\ No newline at end of file
index e654bd7..1b5567d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe6=['./whatsappMessage.controller','get','index','/describe','isAuthenticated','/:id','show','tracked','whatsapp','create','post','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3264fb,_0x8cc268){var _0x1d0f60=function(_0xac7930){while(--_0xac7930){_0x3264fb['push'](_0x3264fb['shift']());}};_0x1d0f60(++_0x8cc268);}(_0xabe6,0x6b));var _0x6abe=function(_0x22d2a8,_0x34224b){_0x22d2a8=_0x22d2a8-0x0;var _0x4c6392=_0xabe6[_0x22d2a8];return _0x4c6392;};'use strict';var multer=require(_0x6abe('0x0'));var util=require(_0x6abe('0x1'));var path=require(_0x6abe('0x2'));var timeout=require(_0x6abe('0x3'));var express=require('express');var router=express[_0x6abe('0x4')]();var fs_extra=require(_0x6abe('0x5'));var auth=require(_0x6abe('0x6'));var interaction=require(_0x6abe('0x7'));var config=require(_0x6abe('0x8'));var controller=require(_0x6abe('0x9'));router[_0x6abe('0xa')]('/',auth['isAuthenticated'](),controller[_0x6abe('0xb')]);router[_0x6abe('0xa')](_0x6abe('0xc'),auth[_0x6abe('0xd')](),controller['describe']);router[_0x6abe('0xa')](_0x6abe('0xe'),auth[_0x6abe('0xd')](),controller[_0x6abe('0xf')]);router['post']('/',auth[_0x6abe('0xd')](),interaction[_0x6abe('0x10')](_0x6abe('0x11'),'whatsappmessage:create'),controller[_0x6abe('0x12')]);router[_0x6abe('0x13')](_0x6abe('0x14'),controller['status']);router[_0x6abe('0x15')](_0x6abe('0xe'),auth['isAuthenticated'](),controller[_0x6abe('0x16')]);router[_0x6abe('0x15')](_0x6abe('0x17'),auth[_0x6abe('0xd')](),controller[_0x6abe('0x18')]);router[_0x6abe('0x15')](_0x6abe('0x19'),auth[_0x6abe('0xd')](),controller[_0x6abe('0x1a')]);router[_0x6abe('0x1b')](_0x6abe('0xe'),auth[_0x6abe('0xd')](),controller['destroy']);module[_0x6abe('0x1c')]=router;
\ No newline at end of file
+var _0xbf2e=['Router','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','whatsappmessage:create','/:id/status','put','update','/:id/accept','reject','delete','exports','multer','util','path','connect-timeout','express'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbf2e,0x140));var _0xebf2=function(_0x4a8440,_0x3456ed){_0x4a8440=_0x4a8440-0x0;var _0x36a79c=_0xbf2e[_0x4a8440];return _0x36a79c;};'use strict';var multer=require(_0xebf2('0x0'));var util=require(_0xebf2('0x1'));var path=require(_0xebf2('0x2'));var timeout=require(_0xebf2('0x3'));var express=require(_0xebf2('0x4'));var router=express[_0xebf2('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xebf2('0x6'));var interaction=require(_0xebf2('0x7'));var config=require('../../config/environment');var controller=require(_0xebf2('0x8'));router[_0xebf2('0x9')]('/',auth['isAuthenticated'](),controller[_0xebf2('0xa')]);router[_0xebf2('0x9')](_0xebf2('0xb'),auth[_0xebf2('0xc')](),controller[_0xebf2('0xd')]);router[_0xebf2('0x9')](_0xebf2('0xe'),auth[_0xebf2('0xc')](),controller[_0xebf2('0xf')]);router[_0xebf2('0x10')]('/',auth[_0xebf2('0xc')](),interaction['tracked']('whatsapp',_0xebf2('0x11')),controller['create']);router[_0xebf2('0x10')](_0xebf2('0x12'),controller['status']);router[_0xebf2('0x13')](_0xebf2('0xe'),auth[_0xebf2('0xc')](),controller[_0xebf2('0x14')]);router['put'](_0xebf2('0x15'),auth[_0xebf2('0xc')](),controller['accept']);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xebf2('0x16')]);router[_0xebf2('0x17')](_0xebf2('0xe'),auth[_0xebf2('0xc')](),controller['destroy']);module[_0xebf2('0x18')]=router;
\ No newline at end of file
index cb00edf..179f39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa57=['BOOLEAN','ENUM','out','STRING','TEXT','sequelize','exports'];(function(_0x185ae5,_0x5a0094){var _0x35d6f7=function(_0x1e718a){while(--_0x1e718a){_0x185ae5['push'](_0x185ae5['shift']());}};_0x35d6f7(++_0x5a0094);}(_0xfa57,0x1da));var _0x7fa5=function(_0xc9aee6,_0x32082d){_0xc9aee6=_0xc9aee6-0x0;var _0x1e8d87=_0xfa57[_0xc9aee6];return _0x1e8d87;};'use strict';var Sequelize=require(_0x7fa5('0x0'));module[_0x7fa5('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x7fa5('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7fa5('0x3')]('in',_0x7fa5('0x4')),'defaultValue':_0x7fa5('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7fa5('0x5')](0xbe)},'phone':{'type':Sequelize[_0x7fa5('0x5')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x7fa5('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x7fa5('0x5')]},'providerResponse':{'type':Sequelize[_0x7fa5('0x6')]}};
\ No newline at end of file
+var _0x1b4a=['exports','TEXT','medium','STRING','DATE','BOOLEAN','sequelize'];(function(_0x1406ae,_0x292395){var _0x23a076=function(_0x5e147a){while(--_0x5e147a){_0x1406ae['push'](_0x1406ae['shift']());}};_0x23a076(++_0x292395);}(_0x1b4a,0x99));var _0xa1b4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1b4a[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xa1b4('0x0'));module[_0xa1b4('0x1')]={'body':{'type':Sequelize[_0xa1b4('0x2')](_0xa1b4('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xa1b4('0x4')](0xbe)},'phone':{'type':Sequelize[_0xa1b4('0x4')]},'readAt':{'type':Sequelize[_0xa1b4('0x5')]},'secret':{'type':Sequelize[_0xa1b4('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xa1b4('0x4')]},'providerResponse':{'type':Sequelize[_0xa1b4('0x2')]}};
\ No newline at end of file
index 359c8ef..cc403f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90a8=['attributes','hasOwnProperty','nolimit','limit','order','sort','filter','where','merge','VIRTUAL','options','WhatsappMessage','includeAll','include','findAll','show','params','length','create','body','find','describe','whatsapp-interactions','accept','whatsapp','UserId','user','WhatsappInteraction','WhatsappInteractionId','isNil','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPPMESSAGE: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','User','agent','fullname','internal','interface','SIP/%s','channel','event','EventManager','get','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','contact','motionChannel','rejectmessage','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','end','status','json','offset','undefined','count','apply','reject','save','update','destroy','then','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields'];(function(_0x5c060d,_0x4195dc){var _0x217e6b=function(_0x54788f){while(--_0x54788f){_0x5c060d['push'](_0x5c060d['shift']());}};_0x217e6b(++_0x4195dc);}(_0x90a8,0x158));var _0x890a=function(_0x132a3f,_0x22ed45){_0x132a3f=_0x132a3f-0x0;var _0x2c2561=_0x90a8[_0x132a3f];return _0x2c2561;};'use strict';var emlformat=require(_0x890a('0x0'));var rimraf=require(_0x890a('0x1'));var zipdir=require(_0x890a('0x2'));var jsonpatch=require(_0x890a('0x3'));var rp=require(_0x890a('0x4'));var moment=require(_0x890a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x890a('0x6'));var util=require(_0x890a('0x7'));var path=require(_0x890a('0x8'));var sox=require(_0x890a('0x9'));var csv=require(_0x890a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x890a('0xb'));var _=require(_0x890a('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x890a('0xd'));var deskjs=require(_0x890a('0xe'));var toCsv=require(_0x890a('0xa'));var querystring=require('querystring');var Papa=require(_0x890a('0xf'));var Redis=require(_0x890a('0x10'));var authService=require(_0x890a('0x11'));var qs=require(_0x890a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x890a('0x13'));var logger=require(_0x890a('0x14'))(_0x890a('0x15'));var utils=require(_0x890a('0x16'));var config=require(_0x890a('0x17'));var licenseUtil=require(_0x890a('0x18'));var db=require(_0x890a('0x19'))['db'];config[_0x890a('0x1a')]=_[_0x890a('0x1b')](config['redis'],{'host':_0x890a('0x1c'),'port':0x18eb});var socket=require(_0x890a('0x1d'))(new Redis(config['redis']));require(_0x890a('0x1e'))[_0x890a('0x1f')](socket);var jayson=require(_0x890a('0x20'));var client=jayson[_0x890a('0x21')][_0x890a('0x22')]({'port':0x232c});var client9002=jayson[_0x890a('0x21')][_0x890a('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5d26b9,_0x2e2c9f,_0xd59435,_0xf6299d){return new BPromise(function(_0x3c2f60,_0x489e37){var _0x2c91ad=_0xf6299d||client;return _0x2c91ad[_0x890a('0x23')](_0x5d26b9,_0xd59435)['then'](function(_0x1d80a8){logger[_0x890a('0x24')](_0x890a('0x25'),_0x2e2c9f,_0x890a('0x26'));logger[_0x890a('0x27')](_0x890a('0x28'),_0x2e2c9f,_0x890a('0x26'),JSON[_0x890a('0x29')](_0x1d80a8));if(_0x1d80a8[_0x890a('0x2a')]){if(_0x1d80a8[_0x890a('0x2a')][_0x890a('0x2b')]===0x1f4){logger[_0x890a('0x2a')]('WhatsappMessage,\x20%s,\x20%s',_0x2e2c9f,_0x1d80a8[_0x890a('0x2a')][_0x890a('0x2c')]);return _0x489e37(_0x1d80a8['error'][_0x890a('0x2c')]);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x2e2c9f,_0x1d80a8[_0x890a('0x2a')][_0x890a('0x2c')]);return _0x3c2f60(_0x1d80a8[_0x890a('0x2a')][_0x890a('0x2c')]);}else{logger[_0x890a('0x24')](_0x890a('0x25'),_0x2e2c9f,_0x890a('0x26'));_0x3c2f60(_0x1d80a8['result'][_0x890a('0x2c')]);}})[_0x890a('0x2d')](function(_0x169b81){logger['error'](_0x890a('0x25'),_0x2e2c9f,_0x169b81);_0x489e37(_0x169b81);});});}function respondWithStatusCode(_0x471aed,_0x21ef40){_0x21ef40=_0x21ef40||0xcc;return function(_0xb84fee){if(_0xb84fee){return _0x471aed['sendStatus'](_0x21ef40);}return _0x471aed['status'](_0x21ef40)[_0x890a('0x2e')]();};}function respondWithResult(_0x81d74a,_0xde265e){_0xde265e=_0xde265e||0xc8;return function(_0x45eac6){if(_0x45eac6){return _0x81d74a[_0x890a('0x2f')](_0xde265e)[_0x890a('0x30')](_0x45eac6);}};}function respondWithFilteredResult(_0x41308f,_0x581845){return function(_0x798915){if(_0x798915){var _0x47f6ea=typeof _0x581845[_0x890a('0x31')]===_0x890a('0x32')&&typeof _0x581845['limit']===_0x890a('0x32');var _0x425d2b=_0x798915[_0x890a('0x33')];var _0x3cf5be=_0x47f6ea?0x0:_0x581845[_0x890a('0x31')];var _0x77bb15=_0x47f6ea?_0x798915[_0x890a('0x33')]:_0x581845['offset']+_0x581845['limit'];var _0xe0e7ff;if(_0x77bb15>=_0x425d2b){_0x77bb15=_0x425d2b;_0xe0e7ff=0xc8;}else{_0xe0e7ff=0xce;}_0x41308f[_0x890a('0x2f')](_0xe0e7ff);return _0x41308f['set']('Content-Range',_0x3cf5be+'-'+_0x77bb15+'/'+_0x425d2b)[_0x890a('0x30')](_0x798915);}return null;};}function patchUpdates(_0xf95b38){return function(_0x5b1e43){try{jsonpatch[_0x890a('0x34')](_0x5b1e43,_0xf95b38,!![]);}catch(_0xcfa234){return BPromise[_0x890a('0x35')](_0xcfa234);}return _0x5b1e43[_0x890a('0x36')]();};}function saveUpdates(_0x1bc9cc,_0x25d719){return function(_0x505330){if(_0x505330){return _0x505330[_0x890a('0x37')](_0x1bc9cc)['then'](function(_0x2f3b8a){return _0x2f3b8a;});}return null;};}function removeEntity(_0x4c1ba7,_0x45a31e){return function(_0x3d73b6){if(_0x3d73b6){return _0x3d73b6[_0x890a('0x38')]()[_0x890a('0x39')](function(){_0x4c1ba7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cf8be,_0x5c6d23){return function(_0x3ee563){if(!_0x3ee563){_0x5cf8be[_0x890a('0x3a')](0x194);}return _0x3ee563;};}function handleError(_0x26910f,_0x27fdd8){_0x27fdd8=_0x27fdd8||0x1f4;return function(_0x518593){logger[_0x890a('0x2a')](_0x518593[_0x890a('0x3b')]);if(_0x518593['name']){delete _0x518593[_0x890a('0x3c')];}_0x26910f[_0x890a('0x2f')](_0x27fdd8)[_0x890a('0x3d')](_0x518593);};}exports[_0x890a('0x3e')]=function(_0x2dfb70,_0x3bc9f3){var _0x598835={},_0x6f3111={},_0x2e5ee2={'count':0x0,'rows':[]};var _0xed90c4=_[_0x890a('0x3f')](db['WhatsappMessage'][_0x890a('0x40')],function(_0x4c2208){return{'name':_0x4c2208[_0x890a('0x41')],'type':_0x4c2208[_0x890a('0x42')]['key']};});_0x6f3111[_0x890a('0x43')]=_[_0x890a('0x3f')](_0xed90c4,_0x890a('0x3c'));_0x6f3111['query']=_[_0x890a('0x44')](_0x2dfb70[_0x890a('0x45')]);_0x6f3111[_0x890a('0x46')]=_[_0x890a('0x47')](_0x6f3111[_0x890a('0x43')],_0x6f3111['query']);_0x598835['attributes']=_[_0x890a('0x47')](_0x6f3111[_0x890a('0x43')],qs['fields'](_0x2dfb70[_0x890a('0x45')][_0x890a('0x48')]));_0x598835[_0x890a('0x49')]=_0x598835[_0x890a('0x49')]['length']?_0x598835['attributes']:_0x6f3111['model'];if(!_0x2dfb70[_0x890a('0x45')][_0x890a('0x4a')](_0x890a('0x4b'))){_0x598835['limit']=qs['limit'](_0x2dfb70[_0x890a('0x45')][_0x890a('0x4c')]);_0x598835[_0x890a('0x31')]=qs[_0x890a('0x31')](_0x2dfb70[_0x890a('0x45')]['offset']);}_0x598835[_0x890a('0x4d')]=qs['sort'](_0x2dfb70[_0x890a('0x45')][_0x890a('0x4e')]);_0x598835['where']=qs[_0x890a('0x46')](_['pick'](_0x2dfb70[_0x890a('0x45')],_0x6f3111[_0x890a('0x46')]),_0xed90c4);if(_0x2dfb70[_0x890a('0x45')][_0x890a('0x4f')]){_0x598835[_0x890a('0x50')]=_[_0x890a('0x51')](_0x598835[_0x890a('0x50')],{'$or':_[_0x890a('0x3f')](_0xed90c4,function(_0x15af53){if(_0x15af53[_0x890a('0x42')]!==_0x890a('0x52')){var _0x151d1d={};_0x151d1d[_0x15af53[_0x890a('0x3c')]]={'$like':'%'+_0x2dfb70[_0x890a('0x45')][_0x890a('0x4f')]+'%'};return _0x151d1d;}})});}_0x598835=_[_0x890a('0x51')]({},_0x598835,_0x2dfb70[_0x890a('0x53')]);var _0x476b1b={'where':_0x598835[_0x890a('0x50')]};return db[_0x890a('0x54')][_0x890a('0x33')](_0x476b1b)[_0x890a('0x39')](function(_0x4db0fd){_0x2e5ee2['count']=_0x4db0fd;if(_0x2dfb70['query'][_0x890a('0x55')]){_0x598835[_0x890a('0x56')]=[{'all':!![]}];}return db[_0x890a('0x54')][_0x890a('0x57')](_0x598835);})['then'](function(_0x381e7c){_0x2e5ee2['rows']=_0x381e7c;return _0x2e5ee2;})['then'](respondWithFilteredResult(_0x3bc9f3,_0x598835))['catch'](handleError(_0x3bc9f3,null));};exports[_0x890a('0x58')]=function(_0x54857e,_0x3da1c9){var _0x214682={'raw':!![],'where':{'id':_0x54857e[_0x890a('0x59')]['id']}},_0x5b5a17={};_0x5b5a17[_0x890a('0x43')]=_['keys'](db[_0x890a('0x54')][_0x890a('0x40')]);_0x5b5a17[_0x890a('0x45')]=_[_0x890a('0x44')](_0x54857e[_0x890a('0x45')]);_0x5b5a17[_0x890a('0x46')]=_[_0x890a('0x47')](_0x5b5a17[_0x890a('0x43')],_0x5b5a17[_0x890a('0x45')]);_0x214682[_0x890a('0x49')]=_[_0x890a('0x47')](_0x5b5a17['model'],qs['fields'](_0x54857e[_0x890a('0x45')][_0x890a('0x48')]));_0x214682[_0x890a('0x49')]=_0x214682[_0x890a('0x49')][_0x890a('0x5a')]?_0x214682[_0x890a('0x49')]:_0x5b5a17['model'];if(_0x54857e[_0x890a('0x45')][_0x890a('0x55')]){_0x214682[_0x890a('0x56')]=[{'all':!![]}];}_0x214682=_[_0x890a('0x51')]({},_0x214682,_0x54857e[_0x890a('0x53')]);return db[_0x890a('0x54')]['find'](_0x214682)[_0x890a('0x39')](handleEntityNotFound(_0x3da1c9,null))[_0x890a('0x39')](respondWithResult(_0x3da1c9,null))[_0x890a('0x2d')](handleError(_0x3da1c9,null));};exports['create']=function(_0x3dd3e4,_0x777e1a){return db[_0x890a('0x54')][_0x890a('0x5b')](_0x3dd3e4[_0x890a('0x5c')],{})[_0x890a('0x39')](respondWithResult(_0x777e1a,0xc9))['catch'](handleError(_0x777e1a,null));};exports[_0x890a('0x37')]=function(_0x415615,_0x504852){if(_0x415615[_0x890a('0x5c')]['id']){delete _0x415615[_0x890a('0x5c')]['id'];}return db[_0x890a('0x54')][_0x890a('0x5d')]({'where':{'id':_0x415615[_0x890a('0x59')]['id']}})[_0x890a('0x39')](handleEntityNotFound(_0x504852,null))['then'](saveUpdates(_0x415615['body'],null))[_0x890a('0x39')](respondWithResult(_0x504852,null))[_0x890a('0x2d')](handleError(_0x504852,null));};exports[_0x890a('0x38')]=function(_0x4c5c4f,_0x2f2650){return db[_0x890a('0x54')][_0x890a('0x5d')]({'where':{'id':_0x4c5c4f[_0x890a('0x59')]['id']}})['then'](handleEntityNotFound(_0x2f2650,null))[_0x890a('0x39')](removeEntity(_0x2f2650,null))[_0x890a('0x2d')](handleError(_0x2f2650,null));};exports[_0x890a('0x5e')]=function(_0x33065e,_0x2534fc){return db[_0x890a('0x54')][_0x890a('0x5e')]()[_0x890a('0x39')](respondWithResult(_0x2534fc,null))[_0x890a('0x2d')](handleError(_0x2534fc,null));};var interaction_log=require(_0x890a('0x14'))(_0x890a('0x5f'));exports[_0x890a('0x60')]=function(_0x51f088,_0x53ebea,_0x59ae6b){var _0x11e552={'agent':{},'channel':_0x890a('0x61')};if(_0x51f088['body']['id']){delete _0x51f088['body']['id'];}_0x51f088[_0x890a('0x5c')]['read']=!![];_0x51f088[_0x890a('0x5c')]['readAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x51f088[_0x890a('0x5c')][_0x890a('0x62')]=_0x51f088[_0x890a('0x5c')]['UserId']||_0x51f088[_0x890a('0x63')]['id'];_0x11e552['agent']['id']=_0x51f088[_0x890a('0x5c')][_0x890a('0x62')];return db[_0x890a('0x54')][_0x890a('0x5d')]({'where':{'id':_0x51f088[_0x890a('0x59')]['id'],'UserId':null}})[_0x890a('0x39')](handleEntityNotFound(_0x53ebea,null))[_0x890a('0x39')](saveUpdates(_0x51f088['body'],null))[_0x890a('0x39')](function(_0x13ee87){if(_0x13ee87){_0x11e552[_0x890a('0x2c')]=_0x13ee87['get']({'plain':!![]});return db[_0x890a('0x64')][_0x890a('0x5d')]({'where':{'id':_0x13ee87[_0x890a('0x65')]}});}return null;})[_0x890a('0x39')](handleEntityNotFound(_0x53ebea,null))[_0x890a('0x39')](function(_0x4296d2){if(_0x4296d2){return _0x4296d2[_0x890a('0x37')]({'UserId':_0x51f088[_0x890a('0x5c')][_0x890a('0x62')],'read1stAt':_[_0x890a('0x66')](_0x4296d2['read1stAt'])?moment()[_0x890a('0x67')](_0x890a('0x68')):undefined});}return null;})['then'](function(_0x2edf5d){if(_0x2edf5d){_0x11e552['interaction']=_0x2edf5d['get']({'plain':!![]});interaction_log['info'](_0x890a('0x69'),_0x51f088[_0x890a('0x63')]['id'],_0x51f088['user']['name'],_0x51f088[_0x890a('0x63')][_0x890a('0x6a')],_0x11e552[_0x890a('0x6b')]['id'],_0x51f088[_0x890a('0x5c')]?JSON[_0x890a('0x29')](_0x51f088[_0x890a('0x5c')]):_0x890a('0x6c'));return respondWithRpcPromise(_0x890a('0x6d'),_0x890a('0x6e'),_0x11e552);}return null;})[_0x890a('0x39')](function(_0x924c4a){var _0x3275e8=_0x890a('0x6f')+_0x924c4a['message'][_0x890a('0x70')];return db[_0x890a('0x71')][_0x890a('0x45')](_0x3275e8,{'type':db[_0x890a('0x72')]['QueryTypes'][_0x890a('0x73')],'raw':!![]})[_0x890a('0x39')](function(_0x1b6470){return _0x1b6470;});})[_0x890a('0x39')](function(_0x29e9a0){if(_0x29e9a0){_0x11e552[_0x890a('0x2c')]['contact']=_0x29e9a0[0x0];if(!_0x51f088[_0x890a('0x5c')][_0x890a('0x62')])return;return db[_0x890a('0x74')][_0x890a('0x5d')]({'where':{'id':_0x51f088[_0x890a('0x5c')][_0x890a('0x62')],'role':_0x890a('0x75')},'attributes':['id','name',_0x890a('0x76'),'email',_0x890a('0x77')],'raw':!![]});}return null;})[_0x890a('0x39')](function(_0x4b6b9e){if(!_0x4b6b9e)return null;_0x11e552['message'][_0x890a('0x75')]=_0x4b6b9e;return _0x11e552;})['then'](function(_0x18d0d5){if(_0x18d0d5){if(_0x51f088[_0x890a('0x5c')]['manual']){_0x11e552[_0x890a('0x2c')][_0x890a('0x78')]=util[_0x890a('0x67')](_0x890a('0x79'),_0x51f088[_0x890a('0x63')][_0x890a('0x3c')]);_0x11e552[_0x890a('0x2c')][_0x890a('0x7a')]=_0x11e552[_0x890a('0x7a')];_0x11e552[_0x890a('0x2c')]['motionChannel']=_0x11e552['channel'];_0x11e552[_0x890a('0x2c')][_0x890a('0x7b')]=_0x890a('0x60');return respondWithRpcPromise('EventManager',_0x890a('0x7c'),{'event':'acceptmessage','message':_0x11e552['message']},client9002)[_0x890a('0x39')](function(){return _0x11e552;});}return _0x11e552;}return null;})['then'](respondWithResult(_0x53ebea,null))['catch'](handleError(_0x53ebea,null));};var interaction_log=require(_0x890a('0x14'))(_0x890a('0x5f'));exports[_0x890a('0x35')]=function(_0x2da2e0,_0x1027c5,_0x295fa3){var _0x1f93f0={'agent':{},'channel':_0x890a('0x61')};if(_0x2da2e0[_0x890a('0x5c')]['id']){delete _0x2da2e0['body']['id'];}_0x2da2e0[_0x890a('0x5c')][_0x890a('0x62')]=_0x2da2e0[_0x890a('0x5c')][_0x890a('0x62')]||_0x2da2e0[_0x890a('0x63')]['id'];_0x1f93f0['agent']['id']=_0x2da2e0['body']['UserId'];return db['WhatsappMessage'][_0x890a('0x5d')]({'where':{'id':_0x2da2e0[_0x890a('0x59')]['id'],'UserId':null}})[_0x890a('0x39')](handleEntityNotFound(_0x1027c5,null))['then'](function(_0x3f6f26){if(_0x3f6f26){_0x1f93f0['message']=_0x3f6f26[_0x890a('0x7d')]({'plain':!![]});return db[_0x890a('0x64')]['find']({'where':{'id':_0x3f6f26['WhatsappInteractionId']}});}return null;})[_0x890a('0x39')](handleEntityNotFound(_0x1027c5,null))['then'](function(_0x42fdb6){if(_0x42fdb6){_0x1f93f0[_0x890a('0x6b')]=_0x42fdb6[_0x890a('0x7d')]({'plain':!![]});interaction_log[_0x890a('0x24')](_0x890a('0x7e'),_0x2da2e0[_0x890a('0x63')]['id'],_0x2da2e0[_0x890a('0x63')]['name'],_0x2da2e0['user'][_0x890a('0x6a')],_0x1f93f0['interaction']['id'],_0x2da2e0['body']?JSON[_0x890a('0x29')](_0x2da2e0[_0x890a('0x5c')]):'null');return respondWithRpcPromise('RejectMessage',_0x890a('0x7f'),_0x1f93f0);}return null;})[_0x890a('0x39')](function(_0x341598){var _0xbc13d9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x341598[_0x890a('0x2c')]['ContactId'];return db['sequelize'][_0x890a('0x45')](_0xbc13d9,{'type':db[_0x890a('0x72')]['QueryTypes'][_0x890a('0x73')],'raw':!![]})[_0x890a('0x39')](function(_0x556f30){return _0x556f30;});})[_0x890a('0x39')](function(_0x2bbb04){if(_0x2bbb04){_0x1f93f0[_0x890a('0x2c')][_0x890a('0x80')]=_0x2bbb04[0x0];if(!_0x2da2e0[_0x890a('0x5c')]['UserId'])return;return db[_0x890a('0x74')][_0x890a('0x5d')]({'where':{'id':_0x2da2e0[_0x890a('0x5c')][_0x890a('0x62')],'role':_0x890a('0x75')},'attributes':['id',_0x890a('0x3c'),'fullname','email',_0x890a('0x77')],'raw':!![]});}return null;})[_0x890a('0x39')](function(_0x4cf25f){if(!_0x4cf25f)return null;_0x1f93f0['message'][_0x890a('0x75')]=_0x4cf25f;return _0x1f93f0;})[_0x890a('0x39')](function(_0x160975){if(_0x160975){_0x160975[_0x890a('0x2c')][_0x890a('0x78')]=util[_0x890a('0x67')](_0x890a('0x79'),_0x2da2e0[_0x890a('0x63')]['name']);_0x160975[_0x890a('0x2c')][_0x890a('0x7a')]=_0x1f93f0['channel'];_0x160975[_0x890a('0x2c')][_0x890a('0x81')]=_0x1f93f0['channel'];_0x160975[_0x890a('0x2c')][_0x890a('0x7b')]=_0x890a('0x35');respondWithRpcPromise(_0x890a('0x7c'),_0x890a('0x7c'),{'event':_0x890a('0x82'),'message':_0x160975['message']},client9002);return _0x1f93f0;}return null;})[_0x890a('0x39')](respondWithResult(_0x1027c5,null))[_0x890a('0x2d')](handleError(_0x1027c5,null));};exports[_0x890a('0x2f')]=function(_0x393d61,_0x404e07,_0x34405d){if(_0x393d61[_0x890a('0x5c')]['id']){delete _0x393d61[_0x890a('0x5c')]['id'];}var _0x70174;return db['WhatsappMessage'][_0x890a('0x5d')]({'where':{'id':_0x393d61[_0x890a('0x59')]['id']}})[_0x890a('0x39')](handleEntityNotFound(_0x404e07,null))[_0x890a('0x39')](function(_0x1baa61){if(_0x1baa61){_0x70174=_0x1baa61;return db['WhatsappAccount'][_0x890a('0x5d')]({'where':{'id':_0x1baa61[_0x890a('0x83')]}});}})[_0x890a('0x39')](handleEntityNotFound(_0x404e07,null))[_0x890a('0x39')](function(_0x39bec5){if(_0x39bec5){logger[_0x890a('0x27')](_0x890a('0x84'),_0x890a('0x2f'),'received\x20delivery\x20report\x20from',_0x39bec5[_0x890a('0x42')],util[_0x890a('0x85')](_0x393d61[_0x890a('0x5c')],{'showHidden':![],'depth':null}));switch(_0x39bec5[_0x890a('0x42')]){case'twilio':if(_0x393d61['body']['MessageSid']&&_0x393d61[_0x890a('0x5c')][_0x890a('0x86')]===_0x70174[_0x890a('0x87')]&&_0x393d61['body'][_0x890a('0x88')]&&_0x393d61['body']['MessageStatus']===_0x890a('0x89')){return _0x70174[_0x890a('0x37')]({'read':!![]});}else{logger['error'](_0x890a('0x8a'),'status','twilio',util[_0x890a('0x85')](_0x393d61['body'],{'showHidden':![],'depth':null}));}break;}return _0x70174;}})['then'](respondWithResult(_0x404e07,null))[_0x890a('0x2d')](handleError(_0x404e07,null));};
\ No newline at end of file
+var _0xa0e4=['read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','whatsapp','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','User','motionChannel','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','WhatsappMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','destroy','name','index','WhatsappMessage','rawAttributes','type','model','map','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','keys','find','create','body','describe','../../config/logger','whatsapp-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil'];(function(_0x23aae6,_0x372c28){var _0x426da3=function(_0x5731e2){while(--_0x5731e2){_0x23aae6['push'](_0x23aae6['shift']());}};_0x426da3(++_0x372c28);}(_0xa0e4,0x1bb));var _0x4a0e=function(_0x5c0de9,_0x3345ab){_0x5c0de9=_0x5c0de9-0x0;var _0x4c3b7e=_0xa0e4[_0x5c0de9];return _0x4c3b7e;};'use strict';var emlformat=require(_0x4a0e('0x0'));var rimraf=require(_0x4a0e('0x1'));var zipdir=require(_0x4a0e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4a0e('0x3'));var moment=require(_0x4a0e('0x4'));var BPromise=require(_0x4a0e('0x5'));var Mustache=require(_0x4a0e('0x6'));var util=require(_0x4a0e('0x7'));var path=require(_0x4a0e('0x8'));var sox=require(_0x4a0e('0x9'));var csv=require(_0x4a0e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4a0e('0xb'));var crypto=require(_0x4a0e('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4a0e('0xa'));var querystring=require('querystring');var Papa=require(_0x4a0e('0xd'));var Redis=require(_0x4a0e('0xe'));var authService=require(_0x4a0e('0xf'));var qs=require(_0x4a0e('0x10'));var as=require(_0x4a0e('0x11'));var hardwareService=require(_0x4a0e('0x12'));var logger=require('../../config/logger')(_0x4a0e('0x13'));var utils=require('../../config/utils');var config=require(_0x4a0e('0x14'));var licenseUtil=require(_0x4a0e('0x15'));var db=require(_0x4a0e('0x16'))['db'];config[_0x4a0e('0x17')]=_[_0x4a0e('0x18')](config[_0x4a0e('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x4a0e('0x19'))(new Redis(config[_0x4a0e('0x17')]));require(_0x4a0e('0x1a'))[_0x4a0e('0x1b')](socket);var jayson=require(_0x4a0e('0x1c'));var client=jayson[_0x4a0e('0x1d')][_0x4a0e('0x1e')]({'port':0x232c});var client9002=jayson[_0x4a0e('0x1d')][_0x4a0e('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x59a96f,_0x32f12e,_0x56cb44,_0x23fd62){return new BPromise(function(_0x1cd01a,_0x25d94d){var _0x31da97=_0x23fd62||client;return _0x31da97[_0x4a0e('0x1f')](_0x59a96f,_0x56cb44)[_0x4a0e('0x20')](function(_0x849887){logger[_0x4a0e('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x32f12e,'request\x20sent');logger[_0x4a0e('0x22')](_0x4a0e('0x23'),_0x32f12e,_0x4a0e('0x24'),JSON[_0x4a0e('0x25')](_0x849887));if(_0x849887['error']){if(_0x849887[_0x4a0e('0x26')]['code']===0x1f4){logger['error'](_0x4a0e('0x27'),_0x32f12e,_0x849887[_0x4a0e('0x26')][_0x4a0e('0x28')]);return _0x25d94d(_0x849887['error'][_0x4a0e('0x28')]);}logger[_0x4a0e('0x26')](_0x4a0e('0x27'),_0x32f12e,_0x849887['error']['message']);return _0x1cd01a(_0x849887[_0x4a0e('0x26')][_0x4a0e('0x28')]);}else{logger['info'](_0x4a0e('0x27'),_0x32f12e,_0x4a0e('0x24'));_0x1cd01a(_0x849887[_0x4a0e('0x29')][_0x4a0e('0x28')]);}})[_0x4a0e('0x2a')](function(_0x536ef4){logger[_0x4a0e('0x26')](_0x4a0e('0x27'),_0x32f12e,_0x536ef4);_0x25d94d(_0x536ef4);});});}function respondWithStatusCode(_0xfec974,_0x48f801){_0x48f801=_0x48f801||0xcc;return function(_0x3e02dd){if(_0x3e02dd){return _0xfec974[_0x4a0e('0x2b')](_0x48f801);}return _0xfec974[_0x4a0e('0x2c')](_0x48f801)[_0x4a0e('0x2d')]();};}function respondWithResult(_0x483f8b,_0x2cd4d8){_0x2cd4d8=_0x2cd4d8||0xc8;return function(_0x32b3e9){if(_0x32b3e9){return _0x483f8b[_0x4a0e('0x2c')](_0x2cd4d8)[_0x4a0e('0x2e')](_0x32b3e9);}};}function respondWithFilteredResult(_0x4ae324,_0x28b756){return function(_0x586aa3){if(_0x586aa3){var _0x472f8e=typeof _0x28b756[_0x4a0e('0x2f')]===_0x4a0e('0x30')&&typeof _0x28b756['limit']==='undefined';var _0x383672=_0x586aa3[_0x4a0e('0x31')];var _0x44181d=_0x472f8e?0x0:_0x28b756[_0x4a0e('0x2f')];var _0x1ae270=_0x472f8e?_0x586aa3[_0x4a0e('0x31')]:_0x28b756['offset']+_0x28b756[_0x4a0e('0x32')];var _0x1ab0fd;if(_0x1ae270>=_0x383672){_0x1ae270=_0x383672;_0x1ab0fd=0xc8;}else{_0x1ab0fd=0xce;}_0x4ae324['status'](_0x1ab0fd);return _0x4ae324[_0x4a0e('0x33')](_0x4a0e('0x34'),_0x44181d+'-'+_0x1ae270+'/'+_0x383672)[_0x4a0e('0x2e')](_0x586aa3);}return null;};}function patchUpdates(_0x452b02){return function(_0x2a9aa1){try{jsonpatch['apply'](_0x2a9aa1,_0x452b02,!![]);}catch(_0x4985c9){return BPromise[_0x4a0e('0x35')](_0x4985c9);}return _0x2a9aa1['save']();};}function saveUpdates(_0x4182d2,_0x1952c9){return function(_0x65cc6b){if(_0x65cc6b){return _0x65cc6b[_0x4a0e('0x36')](_0x4182d2)[_0x4a0e('0x20')](function(_0xa1616){return _0xa1616;});}return null;};}function removeEntity(_0x572fd8,_0x456515){return function(_0x112846){if(_0x112846){return _0x112846[_0x4a0e('0x37')]()[_0x4a0e('0x20')](function(){_0x572fd8[_0x4a0e('0x2c')](0xcc)[_0x4a0e('0x2d')]();});}};}function handleEntityNotFound(_0x42d46c,_0x2a45e1){return function(_0x5bf135){if(!_0x5bf135){_0x42d46c[_0x4a0e('0x2b')](0x194);}return _0x5bf135;};}function handleError(_0x254107,_0x1c155b){_0x1c155b=_0x1c155b||0x1f4;return function(_0x4f1b28){logger['error'](_0x4f1b28['stack']);if(_0x4f1b28[_0x4a0e('0x38')]){delete _0x4f1b28[_0x4a0e('0x38')];}_0x254107[_0x4a0e('0x2c')](_0x1c155b)['send'](_0x4f1b28);};}exports[_0x4a0e('0x39')]=function(_0x245f61,_0x17fde4){var _0x3d11d1={},_0x146ec7={},_0x37a67c={'count':0x0,'rows':[]};var _0x36e08d=_['map'](db[_0x4a0e('0x3a')][_0x4a0e('0x3b')],function(_0x83a9d7){return{'name':_0x83a9d7['fieldName'],'type':_0x83a9d7[_0x4a0e('0x3c')]['key']};});_0x146ec7[_0x4a0e('0x3d')]=_[_0x4a0e('0x3e')](_0x36e08d,_0x4a0e('0x38'));_0x146ec7[_0x4a0e('0x3f')]=_['keys'](_0x245f61['query']);_0x146ec7[_0x4a0e('0x40')]=_[_0x4a0e('0x41')](_0x146ec7[_0x4a0e('0x3d')],_0x146ec7[_0x4a0e('0x3f')]);_0x3d11d1[_0x4a0e('0x42')]=_[_0x4a0e('0x41')](_0x146ec7['model'],qs[_0x4a0e('0x43')](_0x245f61['query']['fields']));_0x3d11d1['attributes']=_0x3d11d1['attributes'][_0x4a0e('0x44')]?_0x3d11d1[_0x4a0e('0x42')]:_0x146ec7[_0x4a0e('0x3d')];if(!_0x245f61[_0x4a0e('0x3f')]['hasOwnProperty'](_0x4a0e('0x45'))){_0x3d11d1[_0x4a0e('0x32')]=qs[_0x4a0e('0x32')](_0x245f61['query'][_0x4a0e('0x32')]);_0x3d11d1[_0x4a0e('0x2f')]=qs[_0x4a0e('0x2f')](_0x245f61[_0x4a0e('0x3f')][_0x4a0e('0x2f')]);}_0x3d11d1[_0x4a0e('0x46')]=qs[_0x4a0e('0x47')](_0x245f61[_0x4a0e('0x3f')]['sort']);_0x3d11d1['where']=qs[_0x4a0e('0x40')](_[_0x4a0e('0x48')](_0x245f61[_0x4a0e('0x3f')],_0x146ec7[_0x4a0e('0x40')]),_0x36e08d);if(_0x245f61['query'][_0x4a0e('0x49')]){_0x3d11d1[_0x4a0e('0x4a')]=_[_0x4a0e('0x4b')](_0x3d11d1['where'],{'$or':_['map'](_0x36e08d,function(_0x14c63a){if(_0x14c63a['type']!==_0x4a0e('0x4c')){var _0x5a3023={};_0x5a3023[_0x14c63a['name']]={'$like':'%'+_0x245f61[_0x4a0e('0x3f')]['filter']+'%'};return _0x5a3023;}})});}_0x3d11d1=_['merge']({},_0x3d11d1,_0x245f61[_0x4a0e('0x4d')]);var _0x48f65e={'where':_0x3d11d1[_0x4a0e('0x4a')]};return db['WhatsappMessage']['count'](_0x48f65e)[_0x4a0e('0x20')](function(_0x5af9aa){_0x37a67c['count']=_0x5af9aa;if(_0x245f61['query']['includeAll']){_0x3d11d1[_0x4a0e('0x4e')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x4a0e('0x4f')](_0x3d11d1);})[_0x4a0e('0x20')](function(_0x12a013){_0x37a67c[_0x4a0e('0x50')]=_0x12a013;return _0x37a67c;})[_0x4a0e('0x20')](respondWithFilteredResult(_0x17fde4,_0x3d11d1))[_0x4a0e('0x2a')](handleError(_0x17fde4,null));};exports[_0x4a0e('0x51')]=function(_0x4dacb3,_0x2a6673){var _0x1cb8b2={'raw':!![],'where':{'id':_0x4dacb3[_0x4a0e('0x52')]['id']}},_0x29a2ef={};_0x29a2ef[_0x4a0e('0x3d')]=_[_0x4a0e('0x53')](db[_0x4a0e('0x3a')][_0x4a0e('0x3b')]);_0x29a2ef[_0x4a0e('0x3f')]=_['keys'](_0x4dacb3[_0x4a0e('0x3f')]);_0x29a2ef['filters']=_[_0x4a0e('0x41')](_0x29a2ef['model'],_0x29a2ef[_0x4a0e('0x3f')]);_0x1cb8b2['attributes']=_[_0x4a0e('0x41')](_0x29a2ef[_0x4a0e('0x3d')],qs[_0x4a0e('0x43')](_0x4dacb3['query'][_0x4a0e('0x43')]));_0x1cb8b2['attributes']=_0x1cb8b2[_0x4a0e('0x42')][_0x4a0e('0x44')]?_0x1cb8b2[_0x4a0e('0x42')]:_0x29a2ef['model'];if(_0x4dacb3[_0x4a0e('0x3f')]['includeAll']){_0x1cb8b2[_0x4a0e('0x4e')]=[{'all':!![]}];}_0x1cb8b2=_['merge']({},_0x1cb8b2,_0x4dacb3['options']);return db[_0x4a0e('0x3a')][_0x4a0e('0x54')](_0x1cb8b2)[_0x4a0e('0x20')](handleEntityNotFound(_0x2a6673,null))['then'](respondWithResult(_0x2a6673,null))['catch'](handleError(_0x2a6673,null));};exports[_0x4a0e('0x55')]=function(_0x5c9482,_0x38e698){return db[_0x4a0e('0x3a')][_0x4a0e('0x55')](_0x5c9482[_0x4a0e('0x56')],{})[_0x4a0e('0x20')](respondWithResult(_0x38e698,0xc9))[_0x4a0e('0x2a')](handleError(_0x38e698,null));};exports[_0x4a0e('0x36')]=function(_0x4557da,_0xe3e6f7){if(_0x4557da['body']['id']){delete _0x4557da[_0x4a0e('0x56')]['id'];}return db[_0x4a0e('0x3a')][_0x4a0e('0x54')]({'where':{'id':_0x4557da[_0x4a0e('0x52')]['id']}})[_0x4a0e('0x20')](handleEntityNotFound(_0xe3e6f7,null))[_0x4a0e('0x20')](saveUpdates(_0x4557da[_0x4a0e('0x56')],null))[_0x4a0e('0x20')](respondWithResult(_0xe3e6f7,null))[_0x4a0e('0x2a')](handleError(_0xe3e6f7,null));};exports[_0x4a0e('0x37')]=function(_0x5d7353,_0x31743c){return db[_0x4a0e('0x3a')]['find']({'where':{'id':_0x5d7353[_0x4a0e('0x52')]['id']}})['then'](handleEntityNotFound(_0x31743c,null))['then'](removeEntity(_0x31743c,null))[_0x4a0e('0x2a')](handleError(_0x31743c,null));};exports[_0x4a0e('0x57')]=function(_0x37c0e5,_0x400076){return db[_0x4a0e('0x3a')]['describe']()['then'](respondWithResult(_0x400076,null))[_0x4a0e('0x2a')](handleError(_0x400076,null));};var interaction_log=require(_0x4a0e('0x58'))(_0x4a0e('0x59'));exports[_0x4a0e('0x5a')]=function(_0x2247b6,_0x1600f9,_0x508dbe){var _0x1bd0f6={'agent':{},'channel':'whatsapp'};if(_0x2247b6['body']['id']){delete _0x2247b6[_0x4a0e('0x56')]['id'];}_0x2247b6[_0x4a0e('0x56')][_0x4a0e('0x5b')]=!![];_0x2247b6[_0x4a0e('0x56')]['readAt']=moment()[_0x4a0e('0x5c')](_0x4a0e('0x5d'));_0x2247b6['body'][_0x4a0e('0x5e')]=_0x2247b6['body'][_0x4a0e('0x5e')]||_0x2247b6[_0x4a0e('0x5f')]['id'];_0x1bd0f6[_0x4a0e('0x60')]['id']=_0x2247b6[_0x4a0e('0x56')]['UserId'];return db[_0x4a0e('0x3a')][_0x4a0e('0x54')]({'where':{'id':_0x2247b6[_0x4a0e('0x52')]['id'],'UserId':null}})[_0x4a0e('0x20')](handleEntityNotFound(_0x1600f9,null))[_0x4a0e('0x20')](saveUpdates(_0x2247b6[_0x4a0e('0x56')],null))['then'](function(_0x3363d0){if(_0x3363d0){_0x1bd0f6[_0x4a0e('0x28')]=_0x3363d0[_0x4a0e('0x61')]({'plain':!![]});return db[_0x4a0e('0x62')][_0x4a0e('0x54')]({'where':{'id':_0x3363d0[_0x4a0e('0x63')]}});}return null;})[_0x4a0e('0x20')](handleEntityNotFound(_0x1600f9,null))[_0x4a0e('0x20')](function(_0x33bc6d){if(_0x33bc6d){return _0x33bc6d[_0x4a0e('0x36')]({'UserId':_0x2247b6[_0x4a0e('0x56')][_0x4a0e('0x5e')],'read1stAt':_[_0x4a0e('0x64')](_0x33bc6d[_0x4a0e('0x65')])?moment()[_0x4a0e('0x5c')](_0x4a0e('0x5d')):undefined});}return null;})[_0x4a0e('0x20')](function(_0x8c6ecb){if(_0x8c6ecb){_0x1bd0f6[_0x4a0e('0x66')]=_0x8c6ecb[_0x4a0e('0x61')]({'plain':!![]});interaction_log['info'](_0x4a0e('0x67'),_0x2247b6['user']['id'],_0x2247b6[_0x4a0e('0x5f')][_0x4a0e('0x38')],_0x2247b6[_0x4a0e('0x5f')][_0x4a0e('0x68')],_0x1bd0f6['interaction']['id'],_0x2247b6['body']?JSON['stringify'](_0x2247b6[_0x4a0e('0x56')]):'null');return respondWithRpcPromise(_0x4a0e('0x69'),'acceptMessage',_0x1bd0f6);}return null;})[_0x4a0e('0x20')](function(_0x3000d7){var _0x59365a=_0x4a0e('0x6a')+_0x3000d7[_0x4a0e('0x28')][_0x4a0e('0x6b')];return db[_0x4a0e('0x6c')]['query'](_0x59365a,{'type':db[_0x4a0e('0x6d')][_0x4a0e('0x6e')][_0x4a0e('0x6f')],'raw':!![]})[_0x4a0e('0x20')](function(_0x2a89ee){return _0x2a89ee;});})['then'](function(_0x1c5280){if(_0x1c5280){_0x1bd0f6[_0x4a0e('0x28')][_0x4a0e('0x70')]=_0x1c5280[0x0];if(!_0x2247b6[_0x4a0e('0x56')][_0x4a0e('0x5e')])return;return db['User'][_0x4a0e('0x54')]({'where':{'id':_0x2247b6[_0x4a0e('0x56')][_0x4a0e('0x5e')],'role':_0x4a0e('0x60')},'attributes':['id',_0x4a0e('0x38'),_0x4a0e('0x71'),_0x4a0e('0x72'),_0x4a0e('0x73')],'raw':!![]});}return null;})[_0x4a0e('0x20')](function(_0x5a291a){if(!_0x5a291a)return null;_0x1bd0f6[_0x4a0e('0x28')][_0x4a0e('0x60')]=_0x5a291a;return _0x1bd0f6;})[_0x4a0e('0x20')](function(_0x1f2114){if(_0x1f2114){if(_0x2247b6[_0x4a0e('0x56')][_0x4a0e('0x74')]){_0x1bd0f6[_0x4a0e('0x28')][_0x4a0e('0x75')]=util[_0x4a0e('0x5c')](_0x4a0e('0x76'),_0x2247b6[_0x4a0e('0x5f')][_0x4a0e('0x38')]);_0x1bd0f6[_0x4a0e('0x28')][_0x4a0e('0x77')]=_0x1bd0f6[_0x4a0e('0x77')];_0x1bd0f6[_0x4a0e('0x28')]['motionChannel']=_0x1bd0f6[_0x4a0e('0x77')];_0x1bd0f6['message'][_0x4a0e('0x78')]='accept';return respondWithRpcPromise(_0x4a0e('0x79'),_0x4a0e('0x79'),{'event':'acceptmessage','message':_0x1bd0f6[_0x4a0e('0x28')]},client9002)[_0x4a0e('0x20')](function(){return _0x1bd0f6;});}return _0x1bd0f6;}return null;})[_0x4a0e('0x20')](respondWithResult(_0x1600f9,null))[_0x4a0e('0x2a')](handleError(_0x1600f9,null));};var interaction_log=require('../../config/logger')('whatsapp-interactions');exports['reject']=function(_0x30d3de,_0x344a25,_0x5e4272){var _0x3a7091={'agent':{},'channel':_0x4a0e('0x7a')};if(_0x30d3de['body']['id']){delete _0x30d3de[_0x4a0e('0x56')]['id'];}_0x30d3de['body'][_0x4a0e('0x5e')]=_0x30d3de[_0x4a0e('0x56')][_0x4a0e('0x5e')]||_0x30d3de['user']['id'];_0x3a7091[_0x4a0e('0x60')]['id']=_0x30d3de['body']['UserId'];return db[_0x4a0e('0x3a')]['find']({'where':{'id':_0x30d3de[_0x4a0e('0x52')]['id'],'UserId':null}})[_0x4a0e('0x20')](handleEntityNotFound(_0x344a25,null))[_0x4a0e('0x20')](function(_0x30fa30){if(_0x30fa30){_0x3a7091[_0x4a0e('0x28')]=_0x30fa30[_0x4a0e('0x61')]({'plain':!![]});return db[_0x4a0e('0x62')][_0x4a0e('0x54')]({'where':{'id':_0x30fa30[_0x4a0e('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x344a25,null))[_0x4a0e('0x20')](function(_0x42d12e){if(_0x42d12e){_0x3a7091[_0x4a0e('0x66')]=_0x42d12e[_0x4a0e('0x61')]({'plain':!![]});interaction_log[_0x4a0e('0x21')](_0x4a0e('0x7b'),_0x30d3de[_0x4a0e('0x5f')]['id'],_0x30d3de[_0x4a0e('0x5f')][_0x4a0e('0x38')],_0x30d3de['user'][_0x4a0e('0x68')],_0x3a7091[_0x4a0e('0x66')]['id'],_0x30d3de[_0x4a0e('0x56')]?JSON[_0x4a0e('0x25')](_0x30d3de[_0x4a0e('0x56')]):_0x4a0e('0x7c'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x3a7091);}return null;})[_0x4a0e('0x20')](function(_0x2f4a59){var _0x23f598=_0x4a0e('0x6a')+_0x2f4a59['message']['ContactId'];return db[_0x4a0e('0x6c')]['query'](_0x23f598,{'type':db['Sequelize'][_0x4a0e('0x6e')][_0x4a0e('0x6f')],'raw':!![]})[_0x4a0e('0x20')](function(_0x33759d){return _0x33759d;});})[_0x4a0e('0x20')](function(_0x5dc510){if(_0x5dc510){_0x3a7091[_0x4a0e('0x28')][_0x4a0e('0x70')]=_0x5dc510[0x0];if(!_0x30d3de['body'][_0x4a0e('0x5e')])return;return db[_0x4a0e('0x7d')]['find']({'where':{'id':_0x30d3de[_0x4a0e('0x56')][_0x4a0e('0x5e')],'role':_0x4a0e('0x60')},'attributes':['id','name',_0x4a0e('0x71'),_0x4a0e('0x72'),'internal'],'raw':!![]});}return null;})[_0x4a0e('0x20')](function(_0x48719b){if(!_0x48719b)return null;_0x3a7091[_0x4a0e('0x28')][_0x4a0e('0x60')]=_0x48719b;return _0x3a7091;})['then'](function(_0x2093f4){if(_0x2093f4){_0x2093f4[_0x4a0e('0x28')][_0x4a0e('0x75')]=util[_0x4a0e('0x5c')](_0x4a0e('0x76'),_0x30d3de[_0x4a0e('0x5f')][_0x4a0e('0x38')]);_0x2093f4[_0x4a0e('0x28')][_0x4a0e('0x77')]=_0x3a7091[_0x4a0e('0x77')];_0x2093f4[_0x4a0e('0x28')][_0x4a0e('0x7e')]=_0x3a7091[_0x4a0e('0x77')];_0x2093f4['message'][_0x4a0e('0x78')]=_0x4a0e('0x35');respondWithRpcPromise(_0x4a0e('0x79'),'EventManager',{'event':_0x4a0e('0x7f'),'message':_0x2093f4['message']},client9002);return _0x3a7091;}return null;})['then'](respondWithResult(_0x344a25,null))[_0x4a0e('0x2a')](handleError(_0x344a25,null));};exports[_0x4a0e('0x2c')]=function(_0xcdbf23,_0x35e638,_0x15e936){if(_0xcdbf23[_0x4a0e('0x56')]['id']){delete _0xcdbf23[_0x4a0e('0x56')]['id'];}var _0x400926;return db[_0x4a0e('0x3a')][_0x4a0e('0x54')]({'where':{'id':_0xcdbf23[_0x4a0e('0x52')]['id']}})[_0x4a0e('0x20')](handleEntityNotFound(_0x35e638,null))[_0x4a0e('0x20')](function(_0x486cd1){if(_0x486cd1){_0x400926=_0x486cd1;return db[_0x4a0e('0x80')][_0x4a0e('0x54')]({'where':{'id':_0x486cd1[_0x4a0e('0x81')]}});}})['then'](handleEntityNotFound(_0x35e638,null))[_0x4a0e('0x20')](function(_0x458edf){if(_0x458edf){logger[_0x4a0e('0x22')](_0x4a0e('0x82'),_0x4a0e('0x2c'),_0x4a0e('0x83'),_0x458edf['type'],util['inspect'](_0xcdbf23[_0x4a0e('0x56')],{'showHidden':![],'depth':null}));switch(_0x458edf[_0x4a0e('0x3c')]){case _0x4a0e('0x84'):if(_0xcdbf23['body'][_0x4a0e('0x85')]&&_0xcdbf23[_0x4a0e('0x56')]['MessageSid']===_0x400926['messageId']&&_0xcdbf23[_0x4a0e('0x56')][_0x4a0e('0x86')]&&_0xcdbf23[_0x4a0e('0x56')]['MessageStatus']===_0x4a0e('0x5b')){return _0x400926[_0x4a0e('0x36')]({'read':!![]});}else{logger[_0x4a0e('0x26')](_0x4a0e('0x87'),'status',_0x4a0e('0x84'),util['inspect'](_0xcdbf23['body'],{'showHidden':![],'depth':null}));}break;}return _0x400926;}})['then'](respondWithResult(_0x35e638,null))['catch'](handleError(_0x35e638,null));};
\ No newline at end of file
index 0a87aa7..7930ab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8c=['emit','hasOwnProperty','hook','exports','WhatsappMessage','setMaxListeners','save','update'];(function(_0x3be82b,_0x3ef4fb){var _0x293c0e=function(_0x6af388){while(--_0x6af388){_0x3be82b['push'](_0x3be82b['shift']());}};_0x293c0e(++_0x3ef4fb);}(_0x3f8c,0x104));var _0xc3f8=function(_0x2c20bc,_0x47867f){_0x2c20bc=_0x2c20bc-0x0;var _0xf82ba8=_0x3f8c[_0x2c20bc];return _0xf82ba8;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0xc3f8('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xc3f8('0x1')](0x0);var events={'afterCreate':_0xc3f8('0x2'),'afterUpdate':_0xc3f8('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5bd5e7){return function(_0x54035a,_0x4e5dbd,_0x51b8b5){WhatsappMessageEvents[_0xc3f8('0x4')](_0x5bd5e7+':'+_0x54035a['id'],_0x54035a);WhatsappMessageEvents[_0xc3f8('0x4')](_0x5bd5e7,_0x54035a);_0x51b8b5(null);};}for(var e in events){if(events[_0xc3f8('0x5')](e)){var event=events[e];WhatsappMessage[_0xc3f8('0x6')](e,emitEvent(event));}}module[_0xc3f8('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x6599=['hasOwnProperty','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','emit'];(function(_0x522974,_0x549c0b){var _0x35ec3e=function(_0xcc1b9e){while(--_0xcc1b9e){_0x522974['push'](_0x522974['shift']());}};_0x35ec3e(++_0x549c0b);}(_0x6599,0xb0));var _0x9659=function(_0x4fdc46,_0x2a3759){_0x4fdc46=_0x4fdc46-0x0;var _0x2c178a=_0x6599[_0x4fdc46];return _0x2c178a;};'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 9d755ec..37f2500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27b8=['lodash','util','../../config/logger','api','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','createdAt','catch','error','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','authToken','messages','create','whatsapp:','phone','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/whatsapp/v1/','/messages/','text','Bearer\x20','application/json','statuses','update','message_id','err','WhatsappMessage,\x20%s','finally','utf8mb4_unicode_ci'];(function(_0x132399,_0x1c4b0f){var _0x2a27e9=function(_0x4eac3b){while(--_0x4eac3b){_0x132399['push'](_0x132399['shift']());}};_0x2a27e9(++_0x1c4b0f);}(_0x27b8,0x80));var _0x827b=function(_0x436edb,_0xbb15ec){_0x436edb=_0x436edb-0x0;var _0x47e54a=_0x27b8[_0x436edb];return _0x47e54a;};'use strict';var _=require(_0x827b('0x0'));var util=require(_0x827b('0x1'));var logger=require(_0x827b('0x2'))(_0x827b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x827b('0x4'));var fetch=require(_0x827b('0x5'));var fs=require('fs');var path=require(_0x827b('0x6'));var rimraf=require(_0x827b('0x7'));var config=require(_0x827b('0x8'));var attributes=require(_0x827b('0x9'));module[_0x827b('0xa')]=function(_0x2652b3,_0x3eb6e){return _0x2652b3[_0x827b('0xb')](_0x827b('0xc'),attributes,{'tableName':_0x827b('0xd'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x827b('0xe')]},{'name':_0x827b('0xf'),'fields':[_0x827b('0x10')],'type':_0x827b('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x26bf89,_0x2ab852,_0x810617){var _0x5aaff4=_0x2652b3[_0x827b('0x12')];var _0x749785=_0x26bf89[_0x827b('0x13')]({'plain':!![]});if(_0x749785['direction']['toLowerCase']()==='in'||_0x749785[_0x827b('0x14')][_0x827b('0x15')]()===_0x827b('0x16')&&!_0x749785[_0x827b('0x17')]&&!_[_0x827b('0x18')](_0x749785[_0x827b('0x19')])){_0x5aaff4[_0x827b('0x1a')][_0x827b('0x1b')]({'where':{'id':_0x749785[_0x827b('0x1c')]}})[_0x827b('0x1d')](function(_0x55afb6){if(_0x55afb6){_0x55afb6['update']({'lastMsgAt':_0x749785[_0x827b('0x1e')],'lastMsgDirection':_0x749785[_0x827b('0x14')][_0x827b('0x15')]()});}})[_0x827b('0x1f')](function(_0x38d790){console[_0x827b('0x20')](_0x38d790);});}if(_0x749785[_0x827b('0x14')]===_0x827b('0x16')&&!_0x749785[_0x827b('0x17')]){var _0x425b47;_0x5aaff4[_0x827b('0x21')]['find']({'where':{'id':_0x749785[_0x827b('0x22')]},'raw':!![]})[_0x827b('0x1d')](function(_0x47dd91){_0x425b47=_0x47dd91;if(_0x425b47&&_0x425b47['type']){switch(_0x425b47[_0x827b('0x23')]){case _0x827b('0x24'):var _0x32692d=require(_0x827b('0x24'));if(_0x425b47[_0x827b('0x25')]&&_0x425b47[_0x827b('0x26')]&&_0x425b47['phone']){var _0x2da920=new _0x32692d(_0x425b47[_0x827b('0x25')],_0x425b47[_0x827b('0x26')]);_0x2da920[_0x827b('0x27')][_0x827b('0x28')]({'body':_0x749785[_0x827b('0x10')],'to':_0x827b('0x29')+_0x749785['phone'],'from':'whatsapp:'+_0x425b47[_0x827b('0x2a')],'statusCallback':_0x425b47['remote']+_0x827b('0x2b')+_0x749785['id']+_0x827b('0x2c')+_0x425b47[_0x827b('0x2d')]})[_0x827b('0x1d')](function(_0x384f12){if(_0x384f12[_0x827b('0x2e')]){return _0x26bf89['update']({'messageId':_0x384f12['sid']});}})[_0x827b('0x1f')](function(_0x34cf2d){logger[_0x827b('0x20')](_0x827b('0x2f'),_0x827b('0x30'),'twilio',util[_0x827b('0x31')](_0x34cf2d,{'showHidden':![],'depth':null}));});}else{logger[_0x827b('0x20')](_0x827b('0x2f'),_0x827b('0x30'),_0x827b('0x24'),_0x827b('0x32'));}break;case _0x827b('0x33'):var _0x2706e3=_0x425b47[_0x827b('0x25')];var _0x46c5c9=_0x425b47['authToken'];var _0x546b70=_0x425b47['baseUrl']+_0x827b('0x34')+_0x2706e3+_0x827b('0x35');var _0x28f483={'to':[_0x749785[_0x827b('0x2a')]],'message':{'type':_0x827b('0x36'),'text':_0x749785[_0x827b('0x10')]}};var _0x32b607={'method':'POST','uri':_0x546b70,'headers':{'Authorization':_0x827b('0x37')+_0x46c5c9,'Content-Type':_0x827b('0x38')},'body':_0x28f483,'json':!![]};rp(_0x32b607)['then'](function(_0x41960c){if(_0x41960c[_0x827b('0x39')][0x0]['message_id']){return _0x26bf89[_0x827b('0x3a')]({'messageId':_0x41960c[_0x827b('0x39')][0x0][_0x827b('0x3b')]});}})[_0x827b('0x1f')](function(_0x2df0a5){logger[_0x827b('0x3c')](_0x827b('0x3d'),_0x2df0a5);});break;}}})[_0x827b('0x3e')](function(){_0x810617();});}else{_0x810617();}}},'charset':'utf8mb4','collate':_0x827b('0x3f')});};
\ No newline at end of file
+var _0x645e=['../../config/environment','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','direction','toLowerCase','secret','UserId','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','error','out','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','phone','authToken','create','whatsapp:','remote','/status?token=','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/messages/','text','application/json','statuses','message_id','err','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','node-fetch','rimraf'];(function(_0x211fef,_0x4ab716){var _0x5447bf=function(_0x306ea3){while(--_0x306ea3){_0x211fef['push'](_0x211fef['shift']());}};_0x5447bf(++_0x4ab716);}(_0x645e,0x186));var _0xe645=function(_0x540d01,_0x35f1b2){_0x540d01=_0x540d01-0x0;var _0x491d8c=_0x645e[_0x540d01];return _0x491d8c;};'use strict';var _=require(_0xe645('0x0'));var util=require(_0xe645('0x1'));var logger=require(_0xe645('0x2'))(_0xe645('0x3'));var moment=require(_0xe645('0x4'));var BPromise=require(_0xe645('0x5'));var rp=require(_0xe645('0x6'));var fetch=require(_0xe645('0x7'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe645('0x8'));var config=require(_0xe645('0x9'));var attributes=require('./whatsappMessage.attributes');module[_0xe645('0xa')]=function(_0x566868,_0xbce80a){return _0x566868[_0xe645('0xb')](_0xe645('0xc'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xe645('0xd'),'fields':[_0xe645('0xd')]},{'name':_0xe645('0xe'),'fields':[_0xe645('0xf')],'type':_0xe645('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x53c10f,_0x88d16f,_0x55d146){var _0x3f125c=_0x566868[_0xe645('0x11')];var _0x4d1b9a=_0x53c10f['get']({'plain':!![]});if(_0x4d1b9a[_0xe645('0x12')][_0xe645('0x13')]()==='in'||_0x4d1b9a[_0xe645('0x12')][_0xe645('0x13')]()==='out'&&!_0x4d1b9a[_0xe645('0x14')]&&!_['isNil'](_0x4d1b9a[_0xe645('0x15')])){_0x3f125c[_0xe645('0x16')]['findOne']({'where':{'id':_0x4d1b9a[_0xe645('0x17')]}})[_0xe645('0x18')](function(_0x31cbf5){if(_0x31cbf5){_0x31cbf5[_0xe645('0x19')]({'lastMsgAt':_0x4d1b9a[_0xe645('0x1a')],'lastMsgDirection':_0x4d1b9a['direction'][_0xe645('0x13')]()});}})['catch'](function(_0x23244e){console[_0xe645('0x1b')](_0x23244e);});}if(_0x4d1b9a[_0xe645('0x12')]===_0xe645('0x1c')&&!_0x4d1b9a[_0xe645('0x14')]){var _0x241f65;_0x3f125c[_0xe645('0x1d')][_0xe645('0x1e')]({'where':{'id':_0x4d1b9a[_0xe645('0x1f')]},'raw':!![]})[_0xe645('0x18')](function(_0x3cbda8){_0x241f65=_0x3cbda8;if(_0x241f65&&_0x241f65[_0xe645('0x20')]){switch(_0x241f65[_0xe645('0x20')]){case _0xe645('0x21'):var _0xd21039=require(_0xe645('0x21'));if(_0x241f65[_0xe645('0x22')]&&_0x241f65['authToken']&&_0x241f65[_0xe645('0x23')]){var _0x8908a7=new _0xd21039(_0x241f65[_0xe645('0x22')],_0x241f65[_0xe645('0x24')]);_0x8908a7['messages'][_0xe645('0x25')]({'body':_0x4d1b9a['body'],'to':_0xe645('0x26')+_0x4d1b9a['phone'],'from':_0xe645('0x26')+_0x241f65['phone'],'statusCallback':_0x241f65[_0xe645('0x27')]+'/api/whatsapp/messages/'+_0x4d1b9a['id']+_0xe645('0x28')+_0x241f65['token']})['then'](function(_0x3f0db4){if(_0x3f0db4['sid']){return _0x53c10f[_0xe645('0x19')]({'messageId':_0x3f0db4['sid']});}})[_0xe645('0x29')](function(_0x2d0fe9){logger[_0xe645('0x1b')](_0xe645('0x2a'),'afterCreate',_0xe645('0x21'),util[_0xe645('0x2b')](_0x2d0fe9,{'showHidden':![],'depth':null}));});}else{logger[_0xe645('0x1b')](_0xe645('0x2a'),_0xe645('0x2c'),'twilio',_0xe645('0x2d'));}break;case _0xe645('0x2e'):var _0x4e3f4d=_0x241f65['accountSid'];var _0x50db9e=_0x241f65[_0xe645('0x24')];var _0x5d8686=_0x241f65[_0xe645('0x2f')]+'/whatsapp/v1/'+_0x4e3f4d+_0xe645('0x30');var _0x236b95={'to':[_0x4d1b9a[_0xe645('0x23')]],'message':{'type':_0xe645('0x31'),'text':_0x4d1b9a['body']}};var _0x64a7b7={'method':'POST','uri':_0x5d8686,'headers':{'Authorization':'Bearer\x20'+_0x50db9e,'Content-Type':_0xe645('0x32')},'body':_0x236b95,'json':!![]};rp(_0x64a7b7)[_0xe645('0x18')](function(_0x2d6bfb){if(_0x2d6bfb[_0xe645('0x33')][0x0][_0xe645('0x34')]){return _0x53c10f[_0xe645('0x19')]({'messageId':_0x2d6bfb[_0xe645('0x33')][0x0][_0xe645('0x34')]});}})[_0xe645('0x29')](function(_0x31d615){logger[_0xe645('0x35')]('WhatsappMessage,\x20%s',_0x31d615);});break;}}})[_0xe645('0x36')](function(){_0x55d146();});}else{_0x55d146();}}},'charset':_0xe645('0x37'),'collate':_0xe645('0x38')});};
\ No newline at end of file
index bdad2fb..294e810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb5c=['redis','defaults','localhost','./whatsappMessage.socket','register','request','then','info','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','create','body','options','raw','debug','CreateWhatsappMessage','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x59a90b,_0x58b0a2){var _0x40a1ee=function(_0x4e8f3e){while(--_0x4e8f3e){_0x59a90b['push'](_0x59a90b['shift']());}};_0x40a1ee(++_0x58b0a2);}(_0xcb5c,0x1d6));var _0xccb5=function(_0x5a25bf,_0x5a140a){_0x5a25bf=_0x5a25bf-0x0;var _0x446c21=_0xcb5c[_0x5a25bf];return _0x446c21;};'use strict';var _=require(_0xccb5('0x0'));var util=require(_0xccb5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xccb5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xccb5('0x3'));var logger=require(_0xccb5('0x4'))(_0xccb5('0x5'));var config=require(_0xccb5('0x6'));var jayson=require(_0xccb5('0x7'));var client=jayson[_0xccb5('0x8')][_0xccb5('0x9')]({'port':0x232a});config[_0xccb5('0xa')]=_[_0xccb5('0xb')](config['redis'],{'host':_0xccb5('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xccb5('0xa')]));require(_0xccb5('0xd'))[_0xccb5('0xe')](socket);function respondWithRpcPromise(_0x183dde,_0x2ac5a9,_0x1a941e){return new BPromise(function(_0x569505,_0x51203f){return client[_0xccb5('0xf')](_0x183dde,_0x1a941e)[_0xccb5('0x10')](function(_0x1e889f){logger[_0xccb5('0x11')]('WhatsappMessage,\x20%s,\x20%s',_0x2ac5a9,_0xccb5('0x12'));logger['debug'](_0xccb5('0x13'),_0x2ac5a9,_0xccb5('0x12'),JSON[_0xccb5('0x14')](_0x1e889f));if(_0x1e889f[_0xccb5('0x15')]){if(_0x1e889f[_0xccb5('0x15')][_0xccb5('0x16')]===0x1f4){logger[_0xccb5('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x2ac5a9,_0x1e889f[_0xccb5('0x15')]['message']);return _0x51203f(_0x1e889f[_0xccb5('0x15')][_0xccb5('0x17')]);}logger[_0xccb5('0x15')](_0xccb5('0x18'),_0x2ac5a9,_0x1e889f[_0xccb5('0x15')]['message']);return _0x569505(_0x1e889f[_0xccb5('0x15')][_0xccb5('0x17')]);}else{logger['info'](_0xccb5('0x18'),_0x2ac5a9,_0xccb5('0x12'));_0x569505(_0x1e889f[_0xccb5('0x19')]['message']);}})['catch'](function(_0x1cbc5b){logger[_0xccb5('0x15')](_0xccb5('0x18'),_0x2ac5a9,_0x1cbc5b);_0x51203f(_0x1cbc5b);});});}exports['CreateWhatsappMessage']=function(_0x3eee8b){var _0x2c083c=this;return new Promise(function(_0x2145a1,_0x1fd6d4){return db['WhatsappMessage'][_0xccb5('0x1a')](_0x3eee8b[_0xccb5('0x1b')],{'raw':_0x3eee8b[_0xccb5('0x1c')]?_0x3eee8b[_0xccb5('0x1c')][_0xccb5('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x2f839f){logger['info']('CreateWhatsappMessage',_0x3eee8b);logger[_0xccb5('0x1e')]('CreateWhatsappMessage',_0x3eee8b,JSON['stringify'](_0x2f839f));_0x2145a1(_0x2f839f);})['catch'](function(_0x37c55d){logger[_0xccb5('0x15')](_0xccb5('0x1f'),_0x37c55d[_0xccb5('0x17')],_0x3eee8b);_0x1fd6d4(_0x2c083c[_0xccb5('0x15')](0x1f4,_0x37c55d[_0xccb5('0x17')]));});});};
\ No newline at end of file
+var _0xa615=['../../config/environment','client','http','redis','localhost','socket.io-emitter','./whatsappMessage.socket','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateWhatsappMessage','WhatsappMessage','options','raw','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x4f7786,_0x4ffc01){var _0x42fbb9=function(_0x4df315){while(--_0x4df315){_0x4f7786['push'](_0x4f7786['shift']());}};_0x42fbb9(++_0x4ffc01);}(_0xa615,0x12e));var _0x5a61=function(_0x4e06bf,_0x1a7bf7){_0x4e06bf=_0x4e06bf-0x0;var _0x4115ec=_0xa615[_0x4e06bf];return _0x4115ec;};'use strict';var _=require('lodash');var util=require(_0x5a61('0x0'));var moment=require('moment');var BPromise=require(_0x5a61('0x1'));var rs=require(_0x5a61('0x2'));var fs=require('fs');var Redis=require(_0x5a61('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5a61('0x4'));var logger=require(_0x5a61('0x5'))('rpc');var config=require(_0x5a61('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x5a61('0x7')][_0x5a61('0x8')]({'port':0x232a});config[_0x5a61('0x9')]=_['defaults'](config[_0x5a61('0x9')],{'host':_0x5a61('0xa'),'port':0x18eb});var socket=require(_0x5a61('0xb'))(new Redis(config['redis']));require(_0x5a61('0xc'))['register'](socket);function respondWithRpcPromise(_0x303a98,_0x190db4,_0x4963ba){return new BPromise(function(_0x3bf7a3,_0x357bf2){return client[_0x5a61('0xd')](_0x303a98,_0x4963ba)[_0x5a61('0xe')](function(_0x514968){logger[_0x5a61('0xf')](_0x5a61('0x10'),_0x190db4,_0x5a61('0x11'));logger[_0x5a61('0x12')](_0x5a61('0x13'),_0x190db4,_0x5a61('0x11'),JSON['stringify'](_0x514968));if(_0x514968[_0x5a61('0x14')]){if(_0x514968[_0x5a61('0x14')]['code']===0x1f4){logger[_0x5a61('0x14')](_0x5a61('0x10'),_0x190db4,_0x514968[_0x5a61('0x14')][_0x5a61('0x15')]);return _0x357bf2(_0x514968[_0x5a61('0x14')][_0x5a61('0x15')]);}logger[_0x5a61('0x14')](_0x5a61('0x10'),_0x190db4,_0x514968[_0x5a61('0x14')][_0x5a61('0x15')]);return _0x3bf7a3(_0x514968[_0x5a61('0x14')][_0x5a61('0x15')]);}else{logger[_0x5a61('0xf')](_0x5a61('0x10'),_0x190db4,_0x5a61('0x11'));_0x3bf7a3(_0x514968[_0x5a61('0x16')]['message']);}})[_0x5a61('0x17')](function(_0x5baaa0){logger[_0x5a61('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x190db4,_0x5baaa0);_0x357bf2(_0x5baaa0);});});}exports[_0x5a61('0x18')]=function(_0x463312){var _0x594e9d=this;return new Promise(function(_0x58f278,_0x47d8ef){return db[_0x5a61('0x19')]['create'](_0x463312['body'],{'raw':_0x463312[_0x5a61('0x1a')]?_0x463312['options'][_0x5a61('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x3eb5ec){logger[_0x5a61('0xf')]('CreateWhatsappMessage',_0x463312);logger[_0x5a61('0x12')](_0x5a61('0x18'),_0x463312,JSON['stringify'](_0x3eb5ec));_0x58f278(_0x3eb5ec);})[_0x5a61('0x17')](function(_0x484002){logger[_0x5a61('0x14')](_0x5a61('0x18'),_0x484002['message'],_0x463312);_0x47d8ef(_0x594e9d[_0x5a61('0x14')](0x1f4,_0x484002['message']));});});};
\ No newline at end of file
index 93d94e3..841f74d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa363=['whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register','length'];(function(_0x11ca45,_0x2cf6d7){var _0x470a8d=function(_0x5e1c73){while(--_0x5e1c73){_0x11ca45['push'](_0x11ca45['shift']());}};_0x470a8d(++_0x2cf6d7);}(_0xa363,0x6d));var _0x3a36=function(_0x34cea1,_0x16d860){_0x34cea1=_0x34cea1-0x0;var _0x2d796a=_0xa363[_0x34cea1];return _0x2d796a;};'use strict';var WhatsappMessageEvents=require(_0x3a36('0x0'));var events=[_0x3a36('0x1'),_0x3a36('0x2'),_0x3a36('0x3')];function createListener(_0x47a34a,_0x42f0c3){return function(_0x2629d0){_0x42f0c3[_0x3a36('0x4')](_0x47a34a,_0x2629d0);};}function removeListener(_0x5b58df,_0x6078f0){return function(){WhatsappMessageEvents[_0x3a36('0x5')](_0x5b58df,_0x6078f0);};}exports[_0x3a36('0x6')]=function(_0xa6aac7){for(var _0x130323=0x0,_0x59abc9=events[_0x3a36('0x7')];_0x130323<_0x59abc9;_0x130323++){var _0x38250c=events[_0x130323];var _0x1834d8=createListener(_0x3a36('0x8')+_0x38250c,_0xa6aac7);WhatsappMessageEvents['on'](_0x38250c,_0x1834d8);}};
\ No newline at end of file
+var _0x5e6c=['update','emit','register','./whatsappMessage.events','save','remove'];(function(_0x2e7718,_0x1d41a2){var _0x5707d0=function(_0x418a3c){while(--_0x418a3c){_0x2e7718['push'](_0x2e7718['shift']());}};_0x5707d0(++_0x1d41a2);}(_0x5e6c,0x11d));var _0xc5e6=function(_0x35b70f,_0x29492d){_0x35b70f=_0x35b70f-0x0;var _0x4fdd28=_0x5e6c[_0x35b70f];return _0x4fdd28;};'use strict';var WhatsappMessageEvents=require(_0xc5e6('0x0'));var events=[_0xc5e6('0x1'),_0xc5e6('0x2'),_0xc5e6('0x3')];function createListener(_0x593fab,_0x5f321a){return function(_0x4ce566){_0x5f321a[_0xc5e6('0x4')](_0x593fab,_0x4ce566);};}function removeListener(_0x4699e9,_0x2044d4){return function(){WhatsappMessageEvents['removeListener'](_0x4699e9,_0x2044d4);};}exports[_0xc5e6('0x5')]=function(_0x5bf343){for(var _0x665a7f=0x0,_0x33259d=events['length'];_0x665a7f<_0x33259d;_0x665a7f++){var _0x404f09=events[_0x665a7f];var _0x1e9541=createListener('whatsappMessage:'+_0x404f09,_0x5bf343);WhatsappMessageEvents['on'](_0x404f09,_0x1e9541);}};
\ No newline at end of file
index 2d3dc79..6f27482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1065=['addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','isAuthenticated','index','get','/describe','describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','create','post'];(function(_0x172660,_0x260d9b){var _0x83204f=function(_0x4d6c80){while(--_0x4d6c80){_0x172660['push'](_0x172660['shift']());}};_0x83204f(++_0x260d9b);}(_0x1065,0x15e));var _0x5106=function(_0x31fa5c,_0x1c5c11){_0x31fa5c=_0x31fa5c-0x0;var _0x3fb703=_0x1065[_0x31fa5c];return _0x3fb703;};'use strict';var multer=require('multer');var util=require(_0x5106('0x0'));var path=require('path');var timeout=require(_0x5106('0x1'));var express=require(_0x5106('0x2'));var router=express[_0x5106('0x3')]();var fs_extra=require(_0x5106('0x4'));var auth=require(_0x5106('0x5'));var interaction=require(_0x5106('0x6'));var config=require(_0x5106('0x7'));var controller=require(_0x5106('0x8'));router['get']('/',auth[_0x5106('0x9')](),controller[_0x5106('0xa')]);router[_0x5106('0xb')](_0x5106('0xc'),auth[_0x5106('0x9')](),controller[_0x5106('0xd')]);router['get']('/:id',auth[_0x5106('0x9')](),controller[_0x5106('0xe')]);router[_0x5106('0xb')](_0x5106('0xf'),auth[_0x5106('0x9')](),controller['getMembers']);router['get'](_0x5106('0x10'),auth[_0x5106('0x9')](),controller[_0x5106('0x11')]);router[_0x5106('0xb')](_0x5106('0x12'),auth[_0x5106('0x9')](),controller[_0x5106('0x13')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5106('0x14')]);router[_0x5106('0x15')](_0x5106('0x10'),auth['isAuthenticated'](),controller['addTeams']);router[_0x5106('0x15')](_0x5106('0x12'),auth['isAuthenticated'](),controller[_0x5106('0x16')]);router[_0x5106('0x17')](_0x5106('0x18'),auth[_0x5106('0x9')](),controller[_0x5106('0x19')]);router[_0x5106('0x1a')](_0x5106('0x18'),auth[_0x5106('0x9')](),controller[_0x5106('0x1b')]);router[_0x5106('0x1a')]('/:id/teams',auth[_0x5106('0x9')](),controller[_0x5106('0x1c')]);router[_0x5106('0x1a')](_0x5106('0x12'),auth['isAuthenticated'](),controller[_0x5106('0x1d')]);module[_0x5106('0x1e')]=router;
\ No newline at end of file
+var _0xeb0f=['express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','getMembers','getTeams','/:id/users','getAgents','create','post','/:id/teams','addTeams','addAgents','put','destroy','delete','removeTeams','removeAgents','multer','path','connect-timeout'];(function(_0x397d5f,_0x226a6c){var _0x5db6b1=function(_0x493115){while(--_0x493115){_0x397d5f['push'](_0x397d5f['shift']());}};_0x5db6b1(++_0x226a6c);}(_0xeb0f,0x176));var _0xfeb0=function(_0x479b8b,_0x55807a){_0x479b8b=_0x479b8b-0x0;var _0x3244fd=_0xeb0f[_0x479b8b];return _0x3244fd;};'use strict';var multer=require(_0xfeb0('0x0'));var util=require('util');var path=require(_0xfeb0('0x1'));var timeout=require(_0xfeb0('0x2'));var express=require(_0xfeb0('0x3'));var router=express[_0xfeb0('0x4')]();var fs_extra=require(_0xfeb0('0x5'));var auth=require(_0xfeb0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xfeb0('0x7'));var controller=require('./whatsappQueue.controller');router['get']('/',auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x9')]);router[_0xfeb0('0xa')](_0xfeb0('0xb'),auth[_0xfeb0('0x8')](),controller[_0xfeb0('0xc')]);router[_0xfeb0('0xa')](_0xfeb0('0xd'),auth[_0xfeb0('0x8')](),controller[_0xfeb0('0xe')]);router[_0xfeb0('0xa')]('/:id/members',auth['isAuthenticated'](),controller[_0xfeb0('0xf')]);router[_0xfeb0('0xa')]('/:id/teams',auth['isAuthenticated'](),controller[_0xfeb0('0x10')]);router[_0xfeb0('0xa')](_0xfeb0('0x11'),auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x12')]);router['post']('/',auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x13')]);router[_0xfeb0('0x14')](_0xfeb0('0x15'),auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x16')]);router[_0xfeb0('0x14')](_0xfeb0('0x11'),auth['isAuthenticated'](),controller[_0xfeb0('0x17')]);router[_0xfeb0('0x18')](_0xfeb0('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xfeb0('0xd'),auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x19')]);router[_0xfeb0('0x1a')](_0xfeb0('0x15'),auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x1b')]);router[_0xfeb0('0x1a')]('/:id/users',auth[_0xfeb0('0x8')](),controller[_0xfeb0('0x1c')]);module['exports']=router;
\ No newline at end of file
index abcb7f8..1bd750a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a4=['INTEGER','ENUM','rrmemory','sequelize','STRING'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0x37a4,0xcb));var _0x437a=function(_0x8f28c7,_0x45fd56){_0x8f28c7=_0x8f28c7-0x0;var _0x5a1924=_0x37a4[_0x8f28c7];return _0x5a1924;};'use strict';var Sequelize=require(_0x437a('0x0'));module['exports']={'name':{'type':Sequelize[_0x437a('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x437a('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x437a('0x3')](_0x437a('0x4'),'beepall','roundrobin')},'description':{'type':Sequelize[_0x437a('0x1')]}};
\ No newline at end of file
+var _0xf257=['INTEGER','ENUM','beepall','roundrobin','STRING','name'];(function(_0x47c1b6,_0x3ed81d){var _0x199894=function(_0x5ebdfa){while(--_0x5ebdfa){_0x47c1b6['push'](_0x47c1b6['shift']());}};_0x199894(++_0x3ed81d);}(_0xf257,0x82));var _0x7f25=function(_0x342b4c,_0x381e5d){_0x342b4c=_0x342b4c-0x0;var _0x4aa2dc=_0xf257[_0x342b4c];return _0x4aa2dc;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7f25('0x0')],'unique':_0x7f25('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x7f25('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7f25('0x3')]('rrmemory',_0x7f25('0x4'),_0x7f25('0x5'))},'description':{'type':Sequelize[_0x7f25('0x0')]}};
\ No newline at end of file
index 7fea751..13db9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc6=['toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','update','then','get','WhatsappQueues','destroy','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','map','options','includeAll','include','findAll','catch','show','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','params','describe','getMembers','findOne','UserWhatsappQueue','nolimit','User','findAndCountAll','agent','whatsappPause','updatedAt','rows','format','SIP','createdAt','getTeams','Agents','online','voicePause','flatMap','transaction','addTeams','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','ids','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','sequelize'];(function(_0x3b7c65,_0x1c3b9){var _0xf57c8f=function(_0x5176fe){while(--_0x5176fe){_0x3b7c65['push'](_0x3b7c65['shift']());}};_0xf57c8f(++_0x1c3b9);}(_0xecc6,0x125));var _0x6ecc=function(_0x3832e9,_0x44a3dd){_0x3832e9=_0x3832e9-0x0;var _0x2a21d2=_0xecc6[_0x3832e9];return _0x2a21d2;};'use strict';var emlformat=require(_0x6ecc('0x0'));var rimraf=require(_0x6ecc('0x1'));var zipdir=require(_0x6ecc('0x2'));var jsonpatch=require(_0x6ecc('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6ecc('0x4'));var Mustache=require('mustache');var util=require(_0x6ecc('0x5'));var path=require(_0x6ecc('0x6'));var sox=require(_0x6ecc('0x7'));var csv=require(_0x6ecc('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6ecc('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6ecc('0xa'));var deskjs=require(_0x6ecc('0xb'));var toCsv=require(_0x6ecc('0x8'));var querystring=require(_0x6ecc('0xc'));var Papa=require(_0x6ecc('0xd'));var Redis=require('ioredis');var authService=require(_0x6ecc('0xe'));var qs=require(_0x6ecc('0xf'));var as=require(_0x6ecc('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6ecc('0x11'))('api');var utils=require(_0x6ecc('0x12'));var config=require(_0x6ecc('0x13'));var licenseUtil=require(_0x6ecc('0x14'));var db=require(_0x6ecc('0x15'))['db'];config[_0x6ecc('0x16')]=_['defaults'](config['redis'],{'host':_0x6ecc('0x17'),'port':0x18eb});var socket=require(_0x6ecc('0x18'))(new Redis(config['redis']));require(_0x6ecc('0x19'))[_0x6ecc('0x1a')](socket);function respondWithStatusCode(_0x18b45c,_0x335992){_0x335992=_0x335992||0xcc;return function(_0x1a006b){if(_0x1a006b){return _0x18b45c[_0x6ecc('0x1b')](_0x335992);}return _0x18b45c[_0x6ecc('0x1c')](_0x335992)[_0x6ecc('0x1d')]();};}function respondWithResult(_0x139496,_0x148086){_0x148086=_0x148086||0xc8;return function(_0x44836e){if(_0x44836e){return _0x139496[_0x6ecc('0x1c')](_0x148086)[_0x6ecc('0x1e')](_0x44836e);}};}function respondWithFilteredResult(_0x1ab3e7,_0x36b707){return function(_0x4957f){if(_0x4957f){var _0x2f14a7=typeof _0x36b707['offset']===_0x6ecc('0x1f')&&typeof _0x36b707[_0x6ecc('0x20')]==='undefined';var _0x15c14a=_0x4957f[_0x6ecc('0x21')];var _0x4bf2ae=_0x2f14a7?0x0:_0x36b707['offset'];var _0x4db6c8=_0x2f14a7?_0x4957f[_0x6ecc('0x21')]:_0x36b707[_0x6ecc('0x22')]+_0x36b707['limit'];var _0x5cb392;if(_0x4db6c8>=_0x15c14a){_0x4db6c8=_0x15c14a;_0x5cb392=0xc8;}else{_0x5cb392=0xce;}_0x1ab3e7[_0x6ecc('0x1c')](_0x5cb392);return _0x1ab3e7['set']('Content-Range',_0x4bf2ae+'-'+_0x4db6c8+'/'+_0x15c14a)[_0x6ecc('0x1e')](_0x4957f);}return null;};}function patchUpdates(_0x4a8608){return function(_0x195f19){try{jsonpatch[_0x6ecc('0x23')](_0x195f19,_0x4a8608,!![]);}catch(_0x57070c){return BPromise[_0x6ecc('0x24')](_0x57070c);}return _0x195f19[_0x6ecc('0x25')]();};}function saveUpdates(_0x40ad13,_0x57d7cc){return function(_0x1c694a){if(_0x1c694a){return _0x1c694a[_0x6ecc('0x26')](_0x40ad13)[_0x6ecc('0x27')](function(_0x5c3391){return _0x5c3391;});}return null;};}function removeEntity(_0x1b2004,_0xd52cff){return function(_0x37b65d){if(_0x37b65d){return _0x37b65d['destroy']()[_0x6ecc('0x27')](function(){var _0x390c76=_0x37b65d[_0x6ecc('0x28')]({'plain':!![]});var _0x349963=_0x6ecc('0x29');return db['UserProfileResource'][_0x6ecc('0x2a')]({'where':{'type':_0x349963,'resourceId':_0x390c76['id']}})[_0x6ecc('0x27')](function(){return _0x37b65d;});})[_0x6ecc('0x27')](function(){_0x1b2004[_0x6ecc('0x1c')](0xcc)[_0x6ecc('0x1d')]();});}};}function handleEntityNotFound(_0x1a40c1,_0x2b3495){return function(_0x2ed313){if(!_0x2ed313){_0x1a40c1[_0x6ecc('0x1b')](0x194);}return _0x2ed313;};}function handleError(_0x5194ea,_0x15da2b){_0x15da2b=_0x15da2b||0x1f4;return function(_0x3fbbb8){logger['error'](_0x3fbbb8['stack']);if(_0x3fbbb8[_0x6ecc('0x2b')]){delete _0x3fbbb8[_0x6ecc('0x2b')];}_0x5194ea[_0x6ecc('0x1c')](_0x15da2b)[_0x6ecc('0x2c')](_0x3fbbb8);};}exports[_0x6ecc('0x2d')]=function(_0x325eca,_0x3f68da){var _0x5ab59b={},_0x5f5a2e={},_0xe666ad={'count':0x0,'rows':[]};var _0xfbf89f=_['map'](db[_0x6ecc('0x2e')][_0x6ecc('0x2f')],function(_0x1b120a){return{'name':_0x1b120a[_0x6ecc('0x30')],'type':_0x1b120a[_0x6ecc('0x31')]['key']};});_0x5f5a2e[_0x6ecc('0x32')]=_['map'](_0xfbf89f,'name');_0x5f5a2e['query']=_[_0x6ecc('0x33')](_0x325eca['query']);_0x5f5a2e[_0x6ecc('0x34')]=_[_0x6ecc('0x35')](_0x5f5a2e['model'],_0x5f5a2e[_0x6ecc('0x36')]);_0x5ab59b[_0x6ecc('0x37')]=_[_0x6ecc('0x35')](_0x5f5a2e[_0x6ecc('0x32')],qs[_0x6ecc('0x38')](_0x325eca['query'][_0x6ecc('0x38')]));_0x5ab59b[_0x6ecc('0x37')]=_0x5ab59b[_0x6ecc('0x37')]['length']?_0x5ab59b['attributes']:_0x5f5a2e[_0x6ecc('0x32')];if(!_0x325eca['query'][_0x6ecc('0x39')]('nolimit')){_0x5ab59b[_0x6ecc('0x20')]=qs[_0x6ecc('0x20')](_0x325eca[_0x6ecc('0x36')]['limit']);_0x5ab59b[_0x6ecc('0x22')]=qs[_0x6ecc('0x22')](_0x325eca['query'][_0x6ecc('0x22')]);}_0x5ab59b[_0x6ecc('0x3a')]=qs[_0x6ecc('0x3b')](_0x325eca['query'][_0x6ecc('0x3b')]);_0x5ab59b[_0x6ecc('0x3c')]=qs[_0x6ecc('0x34')](_[_0x6ecc('0x3d')](_0x325eca['query'],_0x5f5a2e['filters']),_0xfbf89f);if(_0x325eca[_0x6ecc('0x36')][_0x6ecc('0x3e')]){_0x5ab59b[_0x6ecc('0x3c')]=_[_0x6ecc('0x3f')](_0x5ab59b['where'],{'$or':_[_0x6ecc('0x40')](_0xfbf89f,function(_0x142c59){if(_0x142c59[_0x6ecc('0x31')]!=='VIRTUAL'){var _0x3d7783={};_0x3d7783[_0x142c59[_0x6ecc('0x2b')]]={'$like':'%'+_0x325eca['query'][_0x6ecc('0x3e')]+'%'};return _0x3d7783;}})});}_0x5ab59b=_[_0x6ecc('0x3f')]({},_0x5ab59b,_0x325eca[_0x6ecc('0x41')]);var _0x38c172={'where':_0x5ab59b[_0x6ecc('0x3c')]};return db[_0x6ecc('0x2e')]['count'](_0x38c172)['then'](function(_0x342fc1){_0xe666ad[_0x6ecc('0x21')]=_0x342fc1;if(_0x325eca['query'][_0x6ecc('0x42')]){_0x5ab59b[_0x6ecc('0x43')]=[{'all':!![]}];}return db[_0x6ecc('0x2e')][_0x6ecc('0x44')](_0x5ab59b);})['then'](function(_0x63ca98){_0xe666ad['rows']=_0x63ca98;return _0xe666ad;})['then'](respondWithFilteredResult(_0x3f68da,_0x5ab59b))[_0x6ecc('0x45')](handleError(_0x3f68da,null));};exports[_0x6ecc('0x46')]=function(_0x4634a4,_0x41596d){var _0x5d475e={'raw':!![],'where':{'id':_0x4634a4['params']['id']}},_0x598059={};_0x598059[_0x6ecc('0x32')]=_[_0x6ecc('0x33')](db[_0x6ecc('0x2e')][_0x6ecc('0x2f')]);_0x598059[_0x6ecc('0x36')]=_[_0x6ecc('0x33')](_0x4634a4[_0x6ecc('0x36')]);_0x598059[_0x6ecc('0x34')]=_[_0x6ecc('0x35')](_0x598059[_0x6ecc('0x32')],_0x598059[_0x6ecc('0x36')]);_0x5d475e[_0x6ecc('0x37')]=_[_0x6ecc('0x35')](_0x598059[_0x6ecc('0x32')],qs[_0x6ecc('0x38')](_0x4634a4[_0x6ecc('0x36')][_0x6ecc('0x38')]));_0x5d475e[_0x6ecc('0x37')]=_0x5d475e[_0x6ecc('0x37')][_0x6ecc('0x47')]?_0x5d475e[_0x6ecc('0x37')]:_0x598059[_0x6ecc('0x32')];if(_0x4634a4[_0x6ecc('0x36')][_0x6ecc('0x42')]){_0x5d475e[_0x6ecc('0x43')]=[{'all':!![]}];}_0x5d475e=_[_0x6ecc('0x3f')]({},_0x5d475e,_0x4634a4[_0x6ecc('0x41')]);return db['WhatsappQueue'][_0x6ecc('0x48')](_0x5d475e)[_0x6ecc('0x27')](handleEntityNotFound(_0x41596d,null))[_0x6ecc('0x27')](respondWithResult(_0x41596d,null))[_0x6ecc('0x45')](handleError(_0x41596d,null));};exports[_0x6ecc('0x49')]=function(_0x4f1841,_0x17c352){return db['WhatsappQueue'][_0x6ecc('0x49')](_0x4f1841['body'],{})[_0x6ecc('0x27')](function(_0x3f7d1c){var _0x54098a=_0x4f1841[_0x6ecc('0x4a')]['get']({'plain':!![]});if(!_0x54098a)throw new Error(_0x6ecc('0x4b'));if(_0x54098a[_0x6ecc('0x4c')]===_0x6ecc('0x4a')){var _0x38569d=_0x3f7d1c[_0x6ecc('0x28')]({'plain':!![]});var _0x5a00b0=_0x6ecc('0x29');return db[_0x6ecc('0x4d')]['find']({'where':{'name':_0x5a00b0,'userProfileId':_0x54098a[_0x6ecc('0x4e')]},'raw':!![]})['then'](function(_0xa1b4af){if(_0xa1b4af&&_0xa1b4af[_0x6ecc('0x4f')]===0x0){return db[_0x6ecc('0x50')][_0x6ecc('0x49')]({'name':_0x38569d[_0x6ecc('0x2b')],'resourceId':_0x38569d['id'],'type':_0xa1b4af[_0x6ecc('0x2b')],'sectionId':_0xa1b4af['id']},{})['then'](function(){return _0x3f7d1c;});}else{return _0x3f7d1c;}})[_0x6ecc('0x45')](function(_0x4bfdbf){logger[_0x6ecc('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4bfdbf);throw _0x4bfdbf;});}return _0x3f7d1c;})[_0x6ecc('0x27')](respondWithResult(_0x17c352,0xc9))[_0x6ecc('0x45')](handleError(_0x17c352,null));};exports[_0x6ecc('0x26')]=function(_0x297dfb,_0x1c52fa){if(_0x297dfb['body']['id']){delete _0x297dfb[_0x6ecc('0x52')]['id'];}return db['WhatsappQueue'][_0x6ecc('0x48')]({'where':{'id':_0x297dfb[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](handleEntityNotFound(_0x1c52fa,null))[_0x6ecc('0x27')](saveUpdates(_0x297dfb[_0x6ecc('0x52')],null))['then'](respondWithResult(_0x1c52fa,null))[_0x6ecc('0x45')](handleError(_0x1c52fa,null));};exports[_0x6ecc('0x2a')]=function(_0x21cc78,_0x44f4ca){return db[_0x6ecc('0x2e')]['find']({'where':{'id':_0x21cc78[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](handleEntityNotFound(_0x44f4ca,null))[_0x6ecc('0x27')](removeEntity(_0x44f4ca,null))['catch'](handleError(_0x44f4ca,null));};exports[_0x6ecc('0x54')]=function(_0xa39d8d,_0x11ef87){return db[_0x6ecc('0x2e')][_0x6ecc('0x54')]()[_0x6ecc('0x27')](respondWithResult(_0x11ef87,null))[_0x6ecc('0x45')](handleError(_0x11ef87,null));};exports[_0x6ecc('0x55')]=function(_0x1d9312,_0x23a590,_0x1ba69a){var _0x1c3e6e={'raw':!![],'where':{}},_0x402b6a={},_0x4c29b6;return db['WhatsappQueue'][_0x6ecc('0x56')]({'where':{'id':_0x1d9312[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](handleEntityNotFound(_0x23a590,null))['then'](function(_0x44ece0){if(_0x44ece0){_0x4c29b6=_0x44ece0['get']({'plain':!![]});_0x402b6a[_0x6ecc('0x32')]=_[_0x6ecc('0x33')](db[_0x6ecc('0x57')][_0x6ecc('0x2f')]);_0x402b6a[_0x6ecc('0x36')]=_[_0x6ecc('0x33')](_0x1d9312[_0x6ecc('0x36')]);_0x402b6a['filters']=_[_0x6ecc('0x35')](_0x402b6a['model'],_0x402b6a[_0x6ecc('0x36')]);_0x1c3e6e[_0x6ecc('0x37')]=_['intersection'](_0x402b6a['model'],qs[_0x6ecc('0x38')](_0x1d9312[_0x6ecc('0x36')][_0x6ecc('0x38')]));_0x1c3e6e['attributes']=_0x1c3e6e[_0x6ecc('0x37')]['length']?_0x1c3e6e['attributes']:_0x402b6a[_0x6ecc('0x32')];if(!_0x1d9312[_0x6ecc('0x36')][_0x6ecc('0x39')](_0x6ecc('0x58'))){_0x1c3e6e[_0x6ecc('0x20')]=qs[_0x6ecc('0x20')](_0x1d9312[_0x6ecc('0x36')][_0x6ecc('0x20')]);_0x1c3e6e['offset']=qs[_0x6ecc('0x22')](_0x1d9312[_0x6ecc('0x36')][_0x6ecc('0x22')]);}_0x1c3e6e[_0x6ecc('0x3a')]=qs[_0x6ecc('0x3b')](_0x1d9312[_0x6ecc('0x36')]['sort']);_0x1c3e6e[_0x6ecc('0x3c')]=qs[_0x6ecc('0x34')](_[_0x6ecc('0x3d')](_0x1d9312[_0x6ecc('0x36')],_0x402b6a[_0x6ecc('0x34')]));_0x1c3e6e[_0x6ecc('0x3c')]['WhatsappQueueId']=_0x44ece0['id'];if(_0x1d9312[_0x6ecc('0x36')]['filter']){_0x1c3e6e[_0x6ecc('0x3c')]=_[_0x6ecc('0x3f')](_0x1c3e6e[_0x6ecc('0x3c')],{'$or':_['map'](_0x1c3e6e['attributes'],function(_0x3449b7){var _0x30e26e={};_0x30e26e[_0x3449b7]={'$like':'%'+_0x1d9312['query'][_0x6ecc('0x3e')]+'%'};return _0x30e26e;})});}_0x1c3e6e=_[_0x6ecc('0x3f')]({},_0x1c3e6e,_0x1d9312[_0x6ecc('0x41')]);return db[_0x6ecc('0x57')]['findAll'](_0x1c3e6e);}})[_0x6ecc('0x27')](function(_0x555a41){if(_0x555a41){return db[_0x6ecc('0x59')][_0x6ecc('0x5a')]({'where':{'id':_[_0x6ecc('0x40')](_0x555a41,'UserId'),'role':_0x6ecc('0x5b')},'attributes':['id','name',_0x6ecc('0x5c'),_0x6ecc('0x5d'),'createdAt']});}})[_0x6ecc('0x27')](function(_0x41ed8e){if(_0x41ed8e){return{'count':_0x41ed8e[_0x6ecc('0x21')],'rows':_[_0x6ecc('0x40')](_0x41ed8e[_0x6ecc('0x5e')],function(_0x5e52ca){return{'membername':_0x5e52ca[_0x6ecc('0x2b')],'UserId':_0x5e52ca['id'],'queue_name':_0x4c29b6[_0x6ecc('0x2b')],'WhatsappQueueId':_0x4c29b6['id'],'interface':util[_0x6ecc('0x5f')]('%s/%s',_0x6ecc('0x60'),_0x5e52ca[_0x6ecc('0x2b')]),'penalty':0x0,'paused':_0x5e52ca[_0x6ecc('0x5c')],'createdAt':_0x5e52ca[_0x6ecc('0x61')],'updatedAt':_0x5e52ca[_0x6ecc('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6ecc('0x27')](respondWithFilteredResult(_0x23a590,_0x1c3e6e))['catch'](handleError(_0x23a590,null));};exports[_0x6ecc('0x62')]=function(_0x3591e6,_0x2c427a,_0x62db59){var _0x1f2728={};var _0x1528ff={};var _0x212fb8;var _0x4e94e8;return db['WhatsappQueue']['findOne']({'where':{'id':_0x3591e6['params']['id']}})['then'](handleEntityNotFound(_0x2c427a,null))['then'](function(_0x21ee52){if(_0x21ee52){_0x212fb8=_0x21ee52;_0x1528ff[_0x6ecc('0x32')]=_[_0x6ecc('0x33')](db['Team']['rawAttributes']);_0x1528ff[_0x6ecc('0x36')]=_[_0x6ecc('0x33')](_0x3591e6[_0x6ecc('0x36')]);_0x1528ff[_0x6ecc('0x34')]=_[_0x6ecc('0x35')](_0x1528ff['model'],_0x1528ff[_0x6ecc('0x36')]);_0x1f2728[_0x6ecc('0x37')]=_['intersection'](_0x1528ff[_0x6ecc('0x32')],qs[_0x6ecc('0x38')](_0x3591e6[_0x6ecc('0x36')][_0x6ecc('0x38')]));_0x1f2728[_0x6ecc('0x37')]=_0x1f2728[_0x6ecc('0x37')][_0x6ecc('0x47')]?_0x1f2728[_0x6ecc('0x37')]:_0x1528ff[_0x6ecc('0x32')];_0x1f2728['order']=qs[_0x6ecc('0x3b')](_0x3591e6[_0x6ecc('0x36')][_0x6ecc('0x3b')]);_0x1f2728[_0x6ecc('0x3c')]=qs[_0x6ecc('0x34')](_[_0x6ecc('0x3d')](_0x3591e6[_0x6ecc('0x36')],_0x1528ff[_0x6ecc('0x34')]));if(_0x3591e6[_0x6ecc('0x36')][_0x6ecc('0x3e')]){_0x1f2728['where']=_[_0x6ecc('0x3f')](_0x1f2728[_0x6ecc('0x3c')],{'$or':_['map'](_0x1f2728[_0x6ecc('0x37')],function(_0x2b0a42){var _0xf42cb9={};_0xf42cb9[_0x2b0a42]={'$like':'%'+_0x3591e6[_0x6ecc('0x36')][_0x6ecc('0x3e')]+'%'};return _0xf42cb9;})});}_0x1f2728=_[_0x6ecc('0x3f')]({},_0x1f2728,_0x3591e6[_0x6ecc('0x41')]);return _0x212fb8['getTeams'](_0x1f2728);}})[_0x6ecc('0x27')](function(_0x59142c){if(_0x59142c){_0x4e94e8=_0x59142c[_0x6ecc('0x47')];if(!_0x3591e6['query']['hasOwnProperty'](_0x6ecc('0x58'))){_0x1f2728[_0x6ecc('0x20')]=qs[_0x6ecc('0x20')](_0x3591e6[_0x6ecc('0x36')]['limit']);_0x1f2728[_0x6ecc('0x22')]=qs[_0x6ecc('0x22')](_0x3591e6[_0x6ecc('0x36')][_0x6ecc('0x22')]);}return _0x212fb8[_0x6ecc('0x62')](_0x1f2728);}})[_0x6ecc('0x27')](function(_0x29346d){if(_0x29346d){return _0x29346d?{'count':_0x4e94e8,'rows':_0x29346d}:null;}})[_0x6ecc('0x27')](respondWithResult(_0x2c427a,null))[_0x6ecc('0x45')](handleError(_0x2c427a,null));};exports['addTeams']=function(_0x49e9ca,_0x54e1bb,_0x4ffa75){var _0x3dd334=_0x49e9ca[_0x6ecc('0x52')]['ids'];return db['Team'][_0x6ecc('0x44')]({'where':{'id':_0x3dd334},'attributes':['id'],'include':[{'model':db[_0x6ecc('0x59')],'as':_0x6ecc('0x63'),'attributes':['id',_0x6ecc('0x2b'),_0x6ecc('0x64'),_0x6ecc('0x65'),'interface'],'raw':!![]}]})[_0x6ecc('0x27')](function(_0x7faf10){if(_0x7faf10){var _0x9c3a2d=_[_0x6ecc('0x66')](_0x7faf10,function(_0x4575ab){var _0x2c45c8=_0x4575ab['get']({'plain':!![]});return _0x2c45c8[_0x6ecc('0x63')];});return db['WhatsappQueue'][_0x6ecc('0x48')]({'where':{'id':_0x49e9ca[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](function(_0x68f28e){return db['sequelize'][_0x6ecc('0x67')](function(_0x2de204){return _0x68f28e[_0x6ecc('0x68')](_0x3dd334,{'transaction':_0x2de204})[_0x6ecc('0x27')](function(){return BPromise[_0x6ecc('0x69')](_0x9c3a2d,function(_0x3a6bd8){return db['UserWhatsappQueue'][_0x6ecc('0x6a')]({'where':{'UserId':_0x3a6bd8['id'],'WhatsappQueueId':_0x49e9ca[_0x6ecc('0x53')]['id']},'transaction':_0x2de204});});})[_0x6ecc('0x27')](function(){_0x9c3a2d[_0x6ecc('0x6b')](function(_0x3f122f){socket[_0x6ecc('0x6c')](_0x6ecc('0x6d'),{'UserId':_0x3f122f['id'],'WhatsappQueueId':_0x68f28e['id']});});});});});}})['then'](respondWithStatusCode(_0x54e1bb,null))[_0x6ecc('0x45')](handleError(_0x54e1bb,null));};exports[_0x6ecc('0x6e')]=function(_0x1a2bd9,_0x4636ab,_0x5878b9){return db['Team']['findAll']({'where':{'id':_0x1a2bd9[_0x6ecc('0x36')][_0x6ecc('0x6f')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4636ab,null))['then'](function(_0x4e124e){var _0x12b593=_[_0x6ecc('0x40')](_0x4e124e,'id');var _0x1ffaeb=[];var _0x4c62ab=[];var _0x40135e=squel['select']();_0x40135e[_0x6ecc('0x70')](_0x6ecc('0x71'))[_0x6ecc('0x72')]('team_has_whatsapp_queues','tq')[_0x6ecc('0x73')]('user_has_teams','ut',_0x6ecc('0x74'))['where']('WhatsappQueueId\x20=\x20?',_0x1a2bd9['params']['id']);for(var _0x1a2924=0x0;_0x1a2924<_0x4e124e[_0x6ecc('0x47')];_0x1a2924+=0x1){let _0x3323ae=_0x4e124e[_0x1a2924];for(var _0x434d1d=0x0;_0x434d1d<_0x3323ae['Agents'][_0x6ecc('0x47')];_0x434d1d+=0x1){let _0x17b739=_0x3323ae[_0x6ecc('0x63')][_0x434d1d];var _0x3e3cf5=_0x40135e[_0x6ecc('0x75')]();_0x3e3cf5[_0x6ecc('0x3c')](_0x6ecc('0x76'),_0x17b739['id']);_0x4c62ab[_0x6ecc('0x77')](db[_0x6ecc('0x78')][_0x6ecc('0x36')](_0x3e3cf5[_0x6ecc('0x79')](),{'type':db[_0x6ecc('0x78')][_0x6ecc('0x7a')][_0x6ecc('0x7b')]})[_0x6ecc('0x27')](function(_0x59ac77){if(_0x59ac77[_0x6ecc('0x47')]===0x1){return _0x17b739['id'];}else{var _0x5cf107=_[_0x6ecc('0x7c')](_[_0x6ecc('0x40')](_0x59ac77,_0x6ecc('0x7d')),function(_0x2e40cc){return _[_0x6ecc('0x7e')](_0x12b593,_0x2e40cc);});if(_0x5cf107){return _0x17b739['id'];}}}));}}return BPromise[_0x6ecc('0x7f')](_0x4c62ab)[_0x6ecc('0x27')](function(_0x1332ec){_0x1ffaeb=_(_0x1ffaeb)[_0x6ecc('0x80')](_0x1332ec)[_0x6ecc('0x81')]()[_0x6ecc('0x82')]();return db[_0x6ecc('0x2e')][_0x6ecc('0x48')]({'where':{'id':_0x1a2bd9[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](function(_0x46b2a9){return db[_0x6ecc('0x78')][_0x6ecc('0x67')](function(_0x278f3b){return _0x46b2a9[_0x6ecc('0x6e')](_0x1a2bd9[_0x6ecc('0x36')][_0x6ecc('0x6f')],{'transaction':_0x278f3b})[_0x6ecc('0x27')](function(){if(!_[_0x6ecc('0x83')](_0x1ffaeb)){return _0x46b2a9[_0x6ecc('0x84')](_0x1ffaeb,{'transaction':_0x278f3b});}})['then'](function(){_0x1ffaeb[_0x6ecc('0x6b')](function(_0x31f82c){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x31f82c,'WhatsappQueueId':_0x46b2a9['id']});});});});});});})[_0x6ecc('0x27')](respondWithStatusCode(_0x4636ab,null))[_0x6ecc('0x45')](handleError(_0x4636ab,null));};exports['addAgents']=function(_0x740646,_0x1969db,_0x52bccf){return db[_0x6ecc('0x2e')][_0x6ecc('0x48')]({'where':{'id':_0x740646['params']['id']}})[_0x6ecc('0x27')](handleEntityNotFound(_0x1969db,null))[_0x6ecc('0x27')](function(_0x198dde){if(_0x198dde){return _0x198dde[_0x6ecc('0x85')](_0x740646[_0x6ecc('0x52')][_0x6ecc('0x6f')],_[_0x6ecc('0x86')](_0x740646[_0x6ecc('0x52')],[_0x6ecc('0x6f'),'id'])||{})[_0x6ecc('0x87')](function(_0x3f07c7){for(var _0x97ac4a=0x0;_0x97ac4a<_0x740646[_0x6ecc('0x52')][_0x6ecc('0x6f')][_0x6ecc('0x47')];_0x97ac4a+=0x1){socket[_0x6ecc('0x6c')]('userWhatsappQueue:save',{'UserId':Number(_0x740646['body'][_0x6ecc('0x6f')][_0x97ac4a]),'WhatsappQueueId':Number(_0x740646[_0x6ecc('0x53')]['id'])});}return _0x3f07c7;});}})[_0x6ecc('0x27')](respondWithResult(_0x1969db,null))[_0x6ecc('0x45')](handleError(_0x1969db,null));};exports[_0x6ecc('0x84')]=function(_0x3e5369,_0x307569,_0x1ab208){return db['WhatsappQueue'][_0x6ecc('0x48')]({'where':{'id':_0x3e5369[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](handleEntityNotFound(_0x307569,null))['then'](function(_0x1597e7){if(_0x1597e7){return _0x1597e7[_0x6ecc('0x84')](_0x3e5369[_0x6ecc('0x36')][_0x6ecc('0x6f')])[_0x6ecc('0x27')](function(){if(_[_0x6ecc('0x88')](_0x3e5369['query']['ids'])){for(var _0x322b93=0x0;_0x322b93<_0x3e5369['query'][_0x6ecc('0x6f')][_0x6ecc('0x47')];_0x322b93+=0x1){socket[_0x6ecc('0x6c')]('userWhatsappQueue:remove',{'UserId':Number(_0x3e5369['query'][_0x6ecc('0x6f')][_0x322b93]),'WhatsappQueueId':Number(_0x3e5369[_0x6ecc('0x53')]['id'])});}}else{socket[_0x6ecc('0x6c')]('userWhatsappQueue:remove',{'UserId':Number(_0x3e5369[_0x6ecc('0x36')][_0x6ecc('0x6f')]),'WhatsappQueueId':Number(_0x3e5369[_0x6ecc('0x53')]['id'])});}});}})[_0x6ecc('0x27')](respondWithStatusCode(_0x307569,null))[_0x6ecc('0x45')](handleError(_0x307569,null));};exports['getAgents']=function(_0x5caca2,_0x1ad69b,_0x1fcc00){var _0x121025={};var _0x1b91d1={};var _0x555eed;var _0x45fa62;return db[_0x6ecc('0x2e')][_0x6ecc('0x56')]({'where':{'id':_0x5caca2[_0x6ecc('0x53')]['id']}})[_0x6ecc('0x27')](handleEntityNotFound(_0x1ad69b,null))['then'](function(_0x2c4188){if(_0x2c4188){_0x555eed=_0x2c4188;_0x1b91d1['model']=_[_0x6ecc('0x33')](db[_0x6ecc('0x59')][_0x6ecc('0x2f')]);_0x1b91d1[_0x6ecc('0x36')]=_['keys'](_0x5caca2[_0x6ecc('0x36')]);_0x1b91d1[_0x6ecc('0x34')]=_[_0x6ecc('0x35')](_0x1b91d1[_0x6ecc('0x32')],_0x1b91d1[_0x6ecc('0x36')]);_0x121025[_0x6ecc('0x37')]=_[_0x6ecc('0x35')](_0x1b91d1[_0x6ecc('0x32')],qs[_0x6ecc('0x38')](_0x5caca2['query'][_0x6ecc('0x38')]));_0x121025[_0x6ecc('0x37')]=_0x121025[_0x6ecc('0x37')][_0x6ecc('0x47')]?_0x121025['attributes']:_0x1b91d1['model'];_0x121025['order']=qs[_0x6ecc('0x3b')](_0x5caca2['query'][_0x6ecc('0x3b')]);_0x121025[_0x6ecc('0x3c')]=qs['filters'](_[_0x6ecc('0x3d')](_0x5caca2['query'],_0x1b91d1[_0x6ecc('0x34')]));if(_0x5caca2[_0x6ecc('0x36')]['filter']){_0x121025[_0x6ecc('0x3c')]=_[_0x6ecc('0x3f')](_0x121025[_0x6ecc('0x3c')],{'$or':_[_0x6ecc('0x40')](_0x121025['attributes'],function(_0x3c2cfa){var _0x3ca222={};_0x3ca222[_0x3c2cfa]={'$like':'%'+_0x5caca2[_0x6ecc('0x36')][_0x6ecc('0x3e')]+'%'};return _0x3ca222;})});}_0x121025=_[_0x6ecc('0x3f')]({},_0x121025,_0x5caca2[_0x6ecc('0x41')]);return _0x555eed[_0x6ecc('0x89')](_0x121025);}})[_0x6ecc('0x27')](function(_0x5b2d40){if(_0x5b2d40){_0x45fa62=_0x5b2d40[_0x6ecc('0x47')];if(!_0x5caca2[_0x6ecc('0x36')]['hasOwnProperty']('nolimit')){_0x121025[_0x6ecc('0x20')]=qs[_0x6ecc('0x20')](_0x5caca2[_0x6ecc('0x36')][_0x6ecc('0x20')]);_0x121025[_0x6ecc('0x22')]=qs['offset'](_0x5caca2[_0x6ecc('0x36')][_0x6ecc('0x22')]);}return _0x555eed['getAgents'](_0x121025);}})[_0x6ecc('0x27')](function(_0x47ba08){if(_0x47ba08){return _0x47ba08?{'count':_0x45fa62,'rows':_0x47ba08}:null;}})[_0x6ecc('0x27')](respondWithResult(_0x1ad69b,null))[_0x6ecc('0x45')](handleError(_0x1ad69b,null));};
\ No newline at end of file
+var _0xbfa3=['api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','register','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','UserProfileResource','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','create','body','user','get','WhatsappQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','UserWhatsappQueue','WhatsappQueueId','User','findAndCountAll','agent','whatsappPause','updatedAt','format','%s/%s','SIP','createdAt','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','each','forEach','emit','userWhatsappQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','every','value','transaction','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x379e34,_0x133d10){var _0x16e591=function(_0x46c790){while(--_0x46c790){_0x379e34['push'](_0x379e34['shift']());}};_0x16e591(++_0x133d10);}(_0xbfa3,0x192));var _0x3bfa=function(_0x4187df,_0x1666a5){_0x4187df=_0x4187df-0x0;var _0x4bf6af=_0xbfa3[_0x4187df];return _0x4bf6af;};'use strict';var emlformat=require(_0x3bfa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3bfa('0x1'));var jsonpatch=require(_0x3bfa('0x2'));var rp=require(_0x3bfa('0x3'));var moment=require(_0x3bfa('0x4'));var BPromise=require(_0x3bfa('0x5'));var Mustache=require('mustache');var util=require(_0x3bfa('0x6'));var path=require(_0x3bfa('0x7'));var sox=require(_0x3bfa('0x8'));var csv=require('to-csv');var ejs=require(_0x3bfa('0x9'));var fs=require('fs');var fs_extra=require(_0x3bfa('0xa'));var _=require(_0x3bfa('0xb'));var squel=require(_0x3bfa('0xc'));var crypto=require(_0x3bfa('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3bfa('0xe'));var Papa=require(_0x3bfa('0xf'));var Redis=require(_0x3bfa('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x3bfa('0x11'));var as=require(_0x3bfa('0x12'));var hardwareService=require(_0x3bfa('0x13'));var logger=require(_0x3bfa('0x14'))(_0x3bfa('0x15'));var utils=require(_0x3bfa('0x16'));var config=require(_0x3bfa('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3bfa('0x18'))['db'];config[_0x3bfa('0x19')]=_[_0x3bfa('0x1a')](config[_0x3bfa('0x19')],{'host':_0x3bfa('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3bfa('0x19')]));require('./whatsappQueue.socket')[_0x3bfa('0x1c')](socket);function respondWithStatusCode(_0x1dc449,_0x4674ec){_0x4674ec=_0x4674ec||0xcc;return function(_0x5e229b){if(_0x5e229b){return _0x1dc449[_0x3bfa('0x1d')](_0x4674ec);}return _0x1dc449['status'](_0x4674ec)[_0x3bfa('0x1e')]();};}function respondWithResult(_0x16209a,_0x2e4c55){_0x2e4c55=_0x2e4c55||0xc8;return function(_0x54bdcd){if(_0x54bdcd){return _0x16209a[_0x3bfa('0x1f')](_0x2e4c55)[_0x3bfa('0x20')](_0x54bdcd);}};}function respondWithFilteredResult(_0x3c6913,_0x455e29){return function(_0xc63cbf){if(_0xc63cbf){var _0x1ca1f2=typeof _0x455e29[_0x3bfa('0x21')]==='undefined'&&typeof _0x455e29[_0x3bfa('0x22')]==='undefined';var _0x237fe6=_0xc63cbf[_0x3bfa('0x23')];var _0x4aae44=_0x1ca1f2?0x0:_0x455e29[_0x3bfa('0x21')];var _0x462868=_0x1ca1f2?_0xc63cbf['count']:_0x455e29[_0x3bfa('0x21')]+_0x455e29['limit'];var _0x13a90b;if(_0x462868>=_0x237fe6){_0x462868=_0x237fe6;_0x13a90b=0xc8;}else{_0x13a90b=0xce;}_0x3c6913[_0x3bfa('0x1f')](_0x13a90b);return _0x3c6913[_0x3bfa('0x24')](_0x3bfa('0x25'),_0x4aae44+'-'+_0x462868+'/'+_0x237fe6)[_0x3bfa('0x20')](_0xc63cbf);}return null;};}function patchUpdates(_0x276696){return function(_0x2e341d){try{jsonpatch[_0x3bfa('0x26')](_0x2e341d,_0x276696,!![]);}catch(_0x142e53){return BPromise[_0x3bfa('0x27')](_0x142e53);}return _0x2e341d[_0x3bfa('0x28')]();};}function saveUpdates(_0x3e6c86,_0x1d63b9){return function(_0x1b4833){if(_0x1b4833){return _0x1b4833[_0x3bfa('0x29')](_0x3e6c86)['then'](function(_0x113128){return _0x113128;});}return null;};}function removeEntity(_0x3f0369,_0x4c7584){return function(_0x24d4d8){if(_0x24d4d8){return _0x24d4d8[_0x3bfa('0x2a')]()[_0x3bfa('0x2b')](function(){var _0x26db0a=_0x24d4d8['get']({'plain':!![]});var _0x50490c='WhatsappQueues';return db[_0x3bfa('0x2c')][_0x3bfa('0x2a')]({'where':{'type':_0x50490c,'resourceId':_0x26db0a['id']}})[_0x3bfa('0x2b')](function(){return _0x24d4d8;});})['then'](function(){_0x3f0369[_0x3bfa('0x1f')](0xcc)[_0x3bfa('0x1e')]();});}};}function handleEntityNotFound(_0xebbc4a,_0x306fa9){return function(_0x337fb0){if(!_0x337fb0){_0xebbc4a[_0x3bfa('0x1d')](0x194);}return _0x337fb0;};}function handleError(_0x4ec49d,_0x5523ed){_0x5523ed=_0x5523ed||0x1f4;return function(_0x47d2ba){logger[_0x3bfa('0x2d')](_0x47d2ba[_0x3bfa('0x2e')]);if(_0x47d2ba[_0x3bfa('0x2f')]){delete _0x47d2ba[_0x3bfa('0x2f')];}_0x4ec49d[_0x3bfa('0x1f')](_0x5523ed)[_0x3bfa('0x30')](_0x47d2ba);};}exports[_0x3bfa('0x31')]=function(_0x4a0ea3,_0x5d0687){var _0x58f97f={},_0x512d3c={},_0x4cc2e4={'count':0x0,'rows':[]};var _0xb2b132=_[_0x3bfa('0x32')](db[_0x3bfa('0x33')][_0x3bfa('0x34')],function(_0x3b3ea5){return{'name':_0x3b3ea5[_0x3bfa('0x35')],'type':_0x3b3ea5['type'][_0x3bfa('0x36')]};});_0x512d3c[_0x3bfa('0x37')]=_[_0x3bfa('0x32')](_0xb2b132,'name');_0x512d3c[_0x3bfa('0x38')]=_['keys'](_0x4a0ea3['query']);_0x512d3c[_0x3bfa('0x39')]=_['intersection'](_0x512d3c[_0x3bfa('0x37')],_0x512d3c[_0x3bfa('0x38')]);_0x58f97f[_0x3bfa('0x3a')]=_[_0x3bfa('0x3b')](_0x512d3c[_0x3bfa('0x37')],qs[_0x3bfa('0x3c')](_0x4a0ea3[_0x3bfa('0x38')][_0x3bfa('0x3c')]));_0x58f97f[_0x3bfa('0x3a')]=_0x58f97f[_0x3bfa('0x3a')][_0x3bfa('0x3d')]?_0x58f97f[_0x3bfa('0x3a')]:_0x512d3c[_0x3bfa('0x37')];if(!_0x4a0ea3['query'][_0x3bfa('0x3e')](_0x3bfa('0x3f'))){_0x58f97f[_0x3bfa('0x22')]=qs[_0x3bfa('0x22')](_0x4a0ea3[_0x3bfa('0x38')][_0x3bfa('0x22')]);_0x58f97f[_0x3bfa('0x21')]=qs[_0x3bfa('0x21')](_0x4a0ea3[_0x3bfa('0x38')][_0x3bfa('0x21')]);}_0x58f97f[_0x3bfa('0x40')]=qs[_0x3bfa('0x41')](_0x4a0ea3['query']['sort']);_0x58f97f[_0x3bfa('0x42')]=qs[_0x3bfa('0x39')](_[_0x3bfa('0x43')](_0x4a0ea3[_0x3bfa('0x38')],_0x512d3c[_0x3bfa('0x39')]),_0xb2b132);if(_0x4a0ea3[_0x3bfa('0x38')][_0x3bfa('0x44')]){_0x58f97f[_0x3bfa('0x42')]=_[_0x3bfa('0x45')](_0x58f97f[_0x3bfa('0x42')],{'$or':_[_0x3bfa('0x32')](_0xb2b132,function(_0xadf17){if(_0xadf17[_0x3bfa('0x46')]!==_0x3bfa('0x47')){var _0x341480={};_0x341480[_0xadf17[_0x3bfa('0x2f')]]={'$like':'%'+_0x4a0ea3[_0x3bfa('0x38')][_0x3bfa('0x44')]+'%'};return _0x341480;}})});}_0x58f97f=_[_0x3bfa('0x45')]({},_0x58f97f,_0x4a0ea3[_0x3bfa('0x48')]);var _0x52a5c1={'where':_0x58f97f['where']};return db[_0x3bfa('0x33')]['count'](_0x52a5c1)[_0x3bfa('0x2b')](function(_0x3476ce){_0x4cc2e4[_0x3bfa('0x23')]=_0x3476ce;if(_0x4a0ea3[_0x3bfa('0x38')][_0x3bfa('0x49')]){_0x58f97f[_0x3bfa('0x4a')]=[{'all':!![]}];}return db[_0x3bfa('0x33')][_0x3bfa('0x4b')](_0x58f97f);})['then'](function(_0x484d76){_0x4cc2e4[_0x3bfa('0x4c')]=_0x484d76;return _0x4cc2e4;})[_0x3bfa('0x2b')](respondWithFilteredResult(_0x5d0687,_0x58f97f))[_0x3bfa('0x4d')](handleError(_0x5d0687,null));};exports['show']=function(_0x46a4bf,_0xda2b5){var _0x4b2b1a={'raw':!![],'where':{'id':_0x46a4bf['params']['id']}},_0x40b429={};_0x40b429['model']=_[_0x3bfa('0x4e')](db[_0x3bfa('0x33')][_0x3bfa('0x34')]);_0x40b429[_0x3bfa('0x38')]=_[_0x3bfa('0x4e')](_0x46a4bf[_0x3bfa('0x38')]);_0x40b429['filters']=_[_0x3bfa('0x3b')](_0x40b429[_0x3bfa('0x37')],_0x40b429[_0x3bfa('0x38')]);_0x4b2b1a['attributes']=_[_0x3bfa('0x3b')](_0x40b429[_0x3bfa('0x37')],qs[_0x3bfa('0x3c')](_0x46a4bf[_0x3bfa('0x38')][_0x3bfa('0x3c')]));_0x4b2b1a[_0x3bfa('0x3a')]=_0x4b2b1a[_0x3bfa('0x3a')][_0x3bfa('0x3d')]?_0x4b2b1a[_0x3bfa('0x3a')]:_0x40b429['model'];if(_0x46a4bf[_0x3bfa('0x38')][_0x3bfa('0x49')]){_0x4b2b1a[_0x3bfa('0x4a')]=[{'all':!![]}];}_0x4b2b1a=_[_0x3bfa('0x45')]({},_0x4b2b1a,_0x46a4bf[_0x3bfa('0x48')]);return db['WhatsappQueue'][_0x3bfa('0x4f')](_0x4b2b1a)[_0x3bfa('0x2b')](handleEntityNotFound(_0xda2b5,null))['then'](respondWithResult(_0xda2b5,null))[_0x3bfa('0x4d')](handleError(_0xda2b5,null));};exports[_0x3bfa('0x50')]=function(_0x3e2af8,_0x4031fd){return db['WhatsappQueue'][_0x3bfa('0x50')](_0x3e2af8[_0x3bfa('0x51')],{})[_0x3bfa('0x2b')](function(_0x3ee64d){var _0x250e1e=_0x3e2af8[_0x3bfa('0x52')][_0x3bfa('0x53')]({'plain':!![]});if(!_0x250e1e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x250e1e['role']==='user'){var _0x2f1456=_0x3ee64d['get']({'plain':!![]});var _0x5dd2cd=_0x3bfa('0x54');return db['UserProfileSection'][_0x3bfa('0x4f')]({'where':{'name':_0x5dd2cd,'userProfileId':_0x250e1e[_0x3bfa('0x55')]},'raw':!![]})[_0x3bfa('0x2b')](function(_0x92d2d3){if(_0x92d2d3&&_0x92d2d3[_0x3bfa('0x56')]===0x0){return db[_0x3bfa('0x2c')][_0x3bfa('0x50')]({'name':_0x2f1456[_0x3bfa('0x2f')],'resourceId':_0x2f1456['id'],'type':_0x92d2d3['name'],'sectionId':_0x92d2d3['id']},{})[_0x3bfa('0x2b')](function(){return _0x3ee64d;});}else{return _0x3ee64d;}})['catch'](function(_0x458151){logger['error'](_0x3bfa('0x57'),_0x458151);throw _0x458151;});}return _0x3ee64d;})['then'](respondWithResult(_0x4031fd,0xc9))['catch'](handleError(_0x4031fd,null));};exports[_0x3bfa('0x29')]=function(_0x426eec,_0x1ad498){if(_0x426eec[_0x3bfa('0x51')]['id']){delete _0x426eec[_0x3bfa('0x51')]['id'];}return db[_0x3bfa('0x33')][_0x3bfa('0x4f')]({'where':{'id':_0x426eec['params']['id']}})[_0x3bfa('0x2b')](handleEntityNotFound(_0x1ad498,null))[_0x3bfa('0x2b')](saveUpdates(_0x426eec[_0x3bfa('0x51')],null))[_0x3bfa('0x2b')](respondWithResult(_0x1ad498,null))[_0x3bfa('0x4d')](handleError(_0x1ad498,null));};exports[_0x3bfa('0x2a')]=function(_0x43cfc4,_0x1487d1){return db['WhatsappQueue'][_0x3bfa('0x4f')]({'where':{'id':_0x43cfc4[_0x3bfa('0x58')]['id']}})[_0x3bfa('0x2b')](handleEntityNotFound(_0x1487d1,null))['then'](removeEntity(_0x1487d1,null))[_0x3bfa('0x4d')](handleError(_0x1487d1,null));};exports[_0x3bfa('0x59')]=function(_0x3b12cb,_0x4defd8){return db['WhatsappQueue'][_0x3bfa('0x59')]()[_0x3bfa('0x2b')](respondWithResult(_0x4defd8,null))['catch'](handleError(_0x4defd8,null));};exports['getMembers']=function(_0x2d44ae,_0x412684,_0x5f16ab){var _0x42fdec={'raw':!![],'where':{}},_0x5b3fe9={},_0x81cbf4;return db['WhatsappQueue']['findOne']({'where':{'id':_0x2d44ae[_0x3bfa('0x58')]['id']}})['then'](handleEntityNotFound(_0x412684,null))[_0x3bfa('0x2b')](function(_0x1ef740){if(_0x1ef740){_0x81cbf4=_0x1ef740['get']({'plain':!![]});_0x5b3fe9[_0x3bfa('0x37')]=_[_0x3bfa('0x4e')](db[_0x3bfa('0x5a')]['rawAttributes']);_0x5b3fe9['query']=_[_0x3bfa('0x4e')](_0x2d44ae[_0x3bfa('0x38')]);_0x5b3fe9[_0x3bfa('0x39')]=_['intersection'](_0x5b3fe9[_0x3bfa('0x37')],_0x5b3fe9['query']);_0x42fdec[_0x3bfa('0x3a')]=_[_0x3bfa('0x3b')](_0x5b3fe9[_0x3bfa('0x37')],qs[_0x3bfa('0x3c')](_0x2d44ae[_0x3bfa('0x38')][_0x3bfa('0x3c')]));_0x42fdec[_0x3bfa('0x3a')]=_0x42fdec[_0x3bfa('0x3a')][_0x3bfa('0x3d')]?_0x42fdec['attributes']:_0x5b3fe9[_0x3bfa('0x37')];if(!_0x2d44ae[_0x3bfa('0x38')][_0x3bfa('0x3e')](_0x3bfa('0x3f'))){_0x42fdec[_0x3bfa('0x22')]=qs['limit'](_0x2d44ae[_0x3bfa('0x38')][_0x3bfa('0x22')]);_0x42fdec[_0x3bfa('0x21')]=qs[_0x3bfa('0x21')](_0x2d44ae[_0x3bfa('0x38')][_0x3bfa('0x21')]);}_0x42fdec[_0x3bfa('0x40')]=qs['sort'](_0x2d44ae[_0x3bfa('0x38')][_0x3bfa('0x41')]);_0x42fdec[_0x3bfa('0x42')]=qs[_0x3bfa('0x39')](_[_0x3bfa('0x43')](_0x2d44ae['query'],_0x5b3fe9[_0x3bfa('0x39')]));_0x42fdec['where'][_0x3bfa('0x5b')]=_0x1ef740['id'];if(_0x2d44ae[_0x3bfa('0x38')][_0x3bfa('0x44')]){_0x42fdec[_0x3bfa('0x42')]=_[_0x3bfa('0x45')](_0x42fdec[_0x3bfa('0x42')],{'$or':_[_0x3bfa('0x32')](_0x42fdec[_0x3bfa('0x3a')],function(_0x294683){var _0x398101={};_0x398101[_0x294683]={'$like':'%'+_0x2d44ae['query'][_0x3bfa('0x44')]+'%'};return _0x398101;})});}_0x42fdec=_[_0x3bfa('0x45')]({},_0x42fdec,_0x2d44ae[_0x3bfa('0x48')]);return db[_0x3bfa('0x5a')]['findAll'](_0x42fdec);}})['then'](function(_0x107b6d){if(_0x107b6d){return db[_0x3bfa('0x5c')][_0x3bfa('0x5d')]({'where':{'id':_[_0x3bfa('0x32')](_0x107b6d,'UserId'),'role':_0x3bfa('0x5e')},'attributes':['id',_0x3bfa('0x2f'),_0x3bfa('0x5f'),_0x3bfa('0x60'),'createdAt']});}})[_0x3bfa('0x2b')](function(_0x348bf9){if(_0x348bf9){return{'count':_0x348bf9['count'],'rows':_['map'](_0x348bf9[_0x3bfa('0x4c')],function(_0x2a8cb9){return{'membername':_0x2a8cb9['name'],'UserId':_0x2a8cb9['id'],'queue_name':_0x81cbf4[_0x3bfa('0x2f')],'WhatsappQueueId':_0x81cbf4['id'],'interface':util[_0x3bfa('0x61')](_0x3bfa('0x62'),_0x3bfa('0x63'),_0x2a8cb9[_0x3bfa('0x2f')]),'penalty':0x0,'paused':_0x2a8cb9['whatsappPause'],'createdAt':_0x2a8cb9[_0x3bfa('0x64')],'updatedAt':_0x2a8cb9['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x412684,_0x42fdec))[_0x3bfa('0x4d')](handleError(_0x412684,null));};exports['getTeams']=function(_0x5d7e9f,_0x596368,_0x5f2a37){var _0x2553a7={};var _0x1d8a05={};var _0xe7c9ac;var _0x31c2c4;return db[_0x3bfa('0x33')]['findOne']({'where':{'id':_0x5d7e9f['params']['id']}})['then'](handleEntityNotFound(_0x596368,null))[_0x3bfa('0x2b')](function(_0x4a3fbf){if(_0x4a3fbf){_0xe7c9ac=_0x4a3fbf;_0x1d8a05['model']=_['keys'](db[_0x3bfa('0x65')][_0x3bfa('0x34')]);_0x1d8a05['query']=_[_0x3bfa('0x4e')](_0x5d7e9f[_0x3bfa('0x38')]);_0x1d8a05[_0x3bfa('0x39')]=_['intersection'](_0x1d8a05[_0x3bfa('0x37')],_0x1d8a05['query']);_0x2553a7[_0x3bfa('0x3a')]=_[_0x3bfa('0x3b')](_0x1d8a05[_0x3bfa('0x37')],qs[_0x3bfa('0x3c')](_0x5d7e9f[_0x3bfa('0x38')][_0x3bfa('0x3c')]));_0x2553a7[_0x3bfa('0x3a')]=_0x2553a7[_0x3bfa('0x3a')][_0x3bfa('0x3d')]?_0x2553a7['attributes']:_0x1d8a05[_0x3bfa('0x37')];_0x2553a7[_0x3bfa('0x40')]=qs[_0x3bfa('0x41')](_0x5d7e9f['query']['sort']);_0x2553a7[_0x3bfa('0x42')]=qs[_0x3bfa('0x39')](_[_0x3bfa('0x43')](_0x5d7e9f[_0x3bfa('0x38')],_0x1d8a05[_0x3bfa('0x39')]));if(_0x5d7e9f[_0x3bfa('0x38')][_0x3bfa('0x44')]){_0x2553a7[_0x3bfa('0x42')]=_[_0x3bfa('0x45')](_0x2553a7[_0x3bfa('0x42')],{'$or':_[_0x3bfa('0x32')](_0x2553a7[_0x3bfa('0x3a')],function(_0x33b80c){var _0x4244b9={};_0x4244b9[_0x33b80c]={'$like':'%'+_0x5d7e9f['query'][_0x3bfa('0x44')]+'%'};return _0x4244b9;})});}_0x2553a7=_['merge']({},_0x2553a7,_0x5d7e9f[_0x3bfa('0x48')]);return _0xe7c9ac[_0x3bfa('0x66')](_0x2553a7);}})[_0x3bfa('0x2b')](function(_0x404875){if(_0x404875){_0x31c2c4=_0x404875['length'];if(!_0x5d7e9f[_0x3bfa('0x38')][_0x3bfa('0x3e')]('nolimit')){_0x2553a7[_0x3bfa('0x22')]=qs[_0x3bfa('0x22')](_0x5d7e9f[_0x3bfa('0x38')]['limit']);_0x2553a7[_0x3bfa('0x21')]=qs[_0x3bfa('0x21')](_0x5d7e9f['query'][_0x3bfa('0x21')]);}return _0xe7c9ac[_0x3bfa('0x66')](_0x2553a7);}})[_0x3bfa('0x2b')](function(_0x248644){if(_0x248644){return _0x248644?{'count':_0x31c2c4,'rows':_0x248644}:null;}})[_0x3bfa('0x2b')](respondWithResult(_0x596368,null))['catch'](handleError(_0x596368,null));};exports[_0x3bfa('0x67')]=function(_0xd1b860,_0x5fa36a,_0x51f702){var _0x55e1ec=_0xd1b860[_0x3bfa('0x51')]['ids'];return db[_0x3bfa('0x65')][_0x3bfa('0x4b')]({'where':{'id':_0x55e1ec},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3bfa('0x68'),'attributes':['id',_0x3bfa('0x2f'),_0x3bfa('0x69'),_0x3bfa('0x6a'),_0x3bfa('0x6b')],'raw':!![]}]})[_0x3bfa('0x2b')](function(_0x3d8ecd){if(_0x3d8ecd){var _0x4042d5=_[_0x3bfa('0x6c')](_0x3d8ecd,function(_0x22b9d9){var _0x4ebdaa=_0x22b9d9[_0x3bfa('0x53')]({'plain':!![]});return _0x4ebdaa['Agents'];});return db[_0x3bfa('0x33')]['find']({'where':{'id':_0xd1b860['params']['id']}})[_0x3bfa('0x2b')](function(_0x1073e7){return db[_0x3bfa('0x6d')]['transaction'](function(_0x11d0b0){return _0x1073e7[_0x3bfa('0x67')](_0x55e1ec,{'transaction':_0x11d0b0})[_0x3bfa('0x2b')](function(){return BPromise[_0x3bfa('0x6e')](_0x4042d5,function(_0x4894b7){return db[_0x3bfa('0x5a')]['findOrCreate']({'where':{'UserId':_0x4894b7['id'],'WhatsappQueueId':_0xd1b860[_0x3bfa('0x58')]['id']},'transaction':_0x11d0b0});});})[_0x3bfa('0x2b')](function(){_0x4042d5[_0x3bfa('0x6f')](function(_0x53cb0f){socket[_0x3bfa('0x70')](_0x3bfa('0x71'),{'UserId':_0x53cb0f['id'],'WhatsappQueueId':_0x1073e7['id']});});});});});}})[_0x3bfa('0x2b')](respondWithStatusCode(_0x5fa36a,null))[_0x3bfa('0x4d')](handleError(_0x5fa36a,null));};exports[_0x3bfa('0x72')]=function(_0x3615a0,_0xc75a77,_0x41bd93){return db[_0x3bfa('0x65')][_0x3bfa('0x4b')]({'where':{'id':_0x3615a0[_0x3bfa('0x38')][_0x3bfa('0x73')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3bfa('0x68'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xc75a77,null))[_0x3bfa('0x2b')](function(_0x12d7ed){var _0x11e8d6=_[_0x3bfa('0x32')](_0x12d7ed,'id');var _0x5f44dd=[];var _0x50d28f=[];var _0x555a87=squel[_0x3bfa('0x74')]();_0x555a87[_0x3bfa('0x75')](_0x3bfa('0x76'))[_0x3bfa('0x77')](_0x3bfa('0x78'),'tq')[_0x3bfa('0x79')](_0x3bfa('0x7a'),'ut',_0x3bfa('0x7b'))['where'](_0x3bfa('0x7c'),_0x3615a0[_0x3bfa('0x58')]['id']);for(var _0x30736e=0x0;_0x30736e<_0x12d7ed[_0x3bfa('0x3d')];_0x30736e+=0x1){let _0x291983=_0x12d7ed[_0x30736e];for(var _0x35f0c5=0x0;_0x35f0c5<_0x291983[_0x3bfa('0x68')][_0x3bfa('0x3d')];_0x35f0c5+=0x1){let _0x232be2=_0x291983[_0x3bfa('0x68')][_0x35f0c5];var _0x27ac02=_0x555a87[_0x3bfa('0x7d')]();_0x27ac02['where'](_0x3bfa('0x7e'),_0x232be2['id']);_0x50d28f[_0x3bfa('0x7f')](db[_0x3bfa('0x6d')][_0x3bfa('0x38')](_0x27ac02[_0x3bfa('0x80')](),{'type':db[_0x3bfa('0x6d')]['QueryTypes']['SELECT']})['then'](function(_0x17991f){if(_0x17991f[_0x3bfa('0x3d')]===0x1){return _0x232be2['id'];}else{var _0x3ee842=_[_0x3bfa('0x81')](_[_0x3bfa('0x32')](_0x17991f,'TeamId'),function(_0x4e2c42){return _['includes'](_0x11e8d6,_0x4e2c42);});if(_0x3ee842){return _0x232be2['id'];}}}));}}return BPromise['all'](_0x50d28f)[_0x3bfa('0x2b')](function(_0x5d50f0){_0x5f44dd=_(_0x5f44dd)['union'](_0x5d50f0)['compact']()[_0x3bfa('0x82')]();return db[_0x3bfa('0x33')][_0x3bfa('0x4f')]({'where':{'id':_0x3615a0['params']['id']}})[_0x3bfa('0x2b')](function(_0x2c6e69){return db[_0x3bfa('0x6d')][_0x3bfa('0x83')](function(_0x34d6d8){return _0x2c6e69[_0x3bfa('0x72')](_0x3615a0[_0x3bfa('0x38')][_0x3bfa('0x73')],{'transaction':_0x34d6d8})[_0x3bfa('0x2b')](function(){if(!_[_0x3bfa('0x84')](_0x5f44dd)){return _0x2c6e69[_0x3bfa('0x85')](_0x5f44dd,{'transaction':_0x34d6d8});}})['then'](function(){_0x5f44dd[_0x3bfa('0x6f')](function(_0x534749){socket['emit'](_0x3bfa('0x86'),{'UserId':_0x534749,'WhatsappQueueId':_0x2c6e69['id']});});});});});});})[_0x3bfa('0x2b')](respondWithStatusCode(_0xc75a77,null))[_0x3bfa('0x4d')](handleError(_0xc75a77,null));};exports['addAgents']=function(_0xa71df3,_0x1c1288,_0x47ba05){return db[_0x3bfa('0x33')]['find']({'where':{'id':_0xa71df3[_0x3bfa('0x58')]['id']}})[_0x3bfa('0x2b')](handleEntityNotFound(_0x1c1288,null))['then'](function(_0x43ea31){if(_0x43ea31){return _0x43ea31[_0x3bfa('0x87')](_0xa71df3[_0x3bfa('0x51')][_0x3bfa('0x73')],_[_0x3bfa('0x88')](_0xa71df3[_0x3bfa('0x51')],['ids','id'])||{})[_0x3bfa('0x89')](function(_0x1cd609){for(var _0xc44cee=0x0;_0xc44cee<_0xa71df3[_0x3bfa('0x51')][_0x3bfa('0x73')][_0x3bfa('0x3d')];_0xc44cee+=0x1){socket[_0x3bfa('0x70')](_0x3bfa('0x71'),{'UserId':Number(_0xa71df3[_0x3bfa('0x51')]['ids'][_0xc44cee]),'WhatsappQueueId':Number(_0xa71df3[_0x3bfa('0x58')]['id'])});}return _0x1cd609;});}})['then'](respondWithResult(_0x1c1288,null))[_0x3bfa('0x4d')](handleError(_0x1c1288,null));};exports['removeAgents']=function(_0x528704,_0xa7c9a,_0xb3451f){return db[_0x3bfa('0x33')][_0x3bfa('0x4f')]({'where':{'id':_0x528704[_0x3bfa('0x58')]['id']}})['then'](handleEntityNotFound(_0xa7c9a,null))[_0x3bfa('0x2b')](function(_0x57f44f){if(_0x57f44f){return _0x57f44f['removeAgents'](_0x528704[_0x3bfa('0x38')]['ids'])[_0x3bfa('0x2b')](function(){if(_[_0x3bfa('0x8a')](_0x528704['query'][_0x3bfa('0x73')])){for(var _0x9403b1=0x0;_0x9403b1<_0x528704[_0x3bfa('0x38')][_0x3bfa('0x73')][_0x3bfa('0x3d')];_0x9403b1+=0x1){socket[_0x3bfa('0x70')](_0x3bfa('0x86'),{'UserId':Number(_0x528704[_0x3bfa('0x38')][_0x3bfa('0x73')][_0x9403b1]),'WhatsappQueueId':Number(_0x528704[_0x3bfa('0x58')]['id'])});}}else{socket[_0x3bfa('0x70')](_0x3bfa('0x86'),{'UserId':Number(_0x528704[_0x3bfa('0x38')]['ids']),'WhatsappQueueId':Number(_0x528704['params']['id'])});}});}})['then'](respondWithStatusCode(_0xa7c9a,null))['catch'](handleError(_0xa7c9a,null));};exports[_0x3bfa('0x8b')]=function(_0x3ebe6a,_0x1c1777,_0x5eee9c){var _0x25eba8={};var _0x574f93={};var _0x13455f;var _0x19ffaf;return db[_0x3bfa('0x33')][_0x3bfa('0x8c')]({'where':{'id':_0x3ebe6a[_0x3bfa('0x58')]['id']}})['then'](handleEntityNotFound(_0x1c1777,null))[_0x3bfa('0x2b')](function(_0x5beda7){if(_0x5beda7){_0x13455f=_0x5beda7;_0x574f93['model']=_['keys'](db[_0x3bfa('0x5c')][_0x3bfa('0x34')]);_0x574f93[_0x3bfa('0x38')]=_[_0x3bfa('0x4e')](_0x3ebe6a[_0x3bfa('0x38')]);_0x574f93[_0x3bfa('0x39')]=_[_0x3bfa('0x3b')](_0x574f93[_0x3bfa('0x37')],_0x574f93[_0x3bfa('0x38')]);_0x25eba8[_0x3bfa('0x3a')]=_[_0x3bfa('0x3b')](_0x574f93['model'],qs[_0x3bfa('0x3c')](_0x3ebe6a[_0x3bfa('0x38')][_0x3bfa('0x3c')]));_0x25eba8[_0x3bfa('0x3a')]=_0x25eba8[_0x3bfa('0x3a')][_0x3bfa('0x3d')]?_0x25eba8['attributes']:_0x574f93[_0x3bfa('0x37')];_0x25eba8[_0x3bfa('0x40')]=qs[_0x3bfa('0x41')](_0x3ebe6a[_0x3bfa('0x38')][_0x3bfa('0x41')]);_0x25eba8[_0x3bfa('0x42')]=qs[_0x3bfa('0x39')](_['pick'](_0x3ebe6a[_0x3bfa('0x38')],_0x574f93[_0x3bfa('0x39')]));if(_0x3ebe6a[_0x3bfa('0x38')][_0x3bfa('0x44')]){_0x25eba8[_0x3bfa('0x42')]=_[_0x3bfa('0x45')](_0x25eba8[_0x3bfa('0x42')],{'$or':_[_0x3bfa('0x32')](_0x25eba8[_0x3bfa('0x3a')],function(_0x5be8dd){var _0x26f95b={};_0x26f95b[_0x5be8dd]={'$like':'%'+_0x3ebe6a[_0x3bfa('0x38')]['filter']+'%'};return _0x26f95b;})});}_0x25eba8=_[_0x3bfa('0x45')]({},_0x25eba8,_0x3ebe6a[_0x3bfa('0x48')]);return _0x13455f['getAgents'](_0x25eba8);}})['then'](function(_0x2dce4c){if(_0x2dce4c){_0x19ffaf=_0x2dce4c[_0x3bfa('0x3d')];if(!_0x3ebe6a[_0x3bfa('0x38')][_0x3bfa('0x3e')](_0x3bfa('0x3f'))){_0x25eba8['limit']=qs['limit'](_0x3ebe6a[_0x3bfa('0x38')][_0x3bfa('0x22')]);_0x25eba8[_0x3bfa('0x21')]=qs[_0x3bfa('0x21')](_0x3ebe6a['query'][_0x3bfa('0x21')]);}return _0x13455f[_0x3bfa('0x8b')](_0x25eba8);}})[_0x3bfa('0x2b')](function(_0x19cfdc){if(_0x19cfdc){return _0x19cfdc?{'count':_0x19ffaf,'rows':_0x19cfdc}:null;}})['then'](respondWithResult(_0x1c1777,null))[_0x3bfa('0x4d')](handleError(_0x1c1777,null));};
\ No newline at end of file
index b4fab85..e22f2aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7fb=['update','remove','emit','hasOwnProperty','events','setMaxListeners','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe7fb,0x115));var _0xbe7f=function(_0x42213b,_0xf5e005){_0x42213b=_0x42213b-0x0;var _0x4c06b2=_0xe7fb[_0x42213b];return _0x4c06b2;};'use strict';var EventEmitter=require(_0xbe7f('0x0'));var WhatsappQueue=require('../../mysqldb')['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xbe7f('0x1')](0x0);var events={'afterCreate':_0xbe7f('0x2'),'afterUpdate':_0xbe7f('0x3'),'afterDestroy':_0xbe7f('0x4')};function emitEvent(_0x4cbbb5){return function(_0x33e1e7,_0x14068c,_0x4dc6ec){WhatsappQueueEvents[_0xbe7f('0x5')](_0x4cbbb5+':'+_0x33e1e7['id'],_0x33e1e7);WhatsappQueueEvents[_0xbe7f('0x5')](_0x4cbbb5,_0x33e1e7);_0x4dc6ec(null);};}for(var e in events){if(events[_0xbe7f('0x6')](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x079d=['update','remove','emit','events','../../mysqldb','WhatsappQueue','setMaxListeners'];(function(_0x4d07c4,_0x376d71){var _0x5f3ba9=function(_0x319225){while(--_0x319225){_0x4d07c4['push'](_0x4d07c4['shift']());}};_0x5f3ba9(++_0x376d71);}(_0x079d,0x15a));var _0xd079=function(_0x4d0e42,_0x5544f8){_0x4d0e42=_0x4d0e42-0x0;var _0x2b0c5f=_0x079d[_0x4d0e42];return _0x2b0c5f;};'use strict';var EventEmitter=require(_0xd079('0x0'));var WhatsappQueue=require(_0xd079('0x1'))['db'][_0xd079('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xd079('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd079('0x4'),'afterDestroy':_0xd079('0x5')};function emitEvent(_0x44dafb){return function(_0x4cd595,_0x34dedc,_0x4a4d0e){WhatsappQueueEvents[_0xd079('0x6')](_0x44dafb+':'+_0x4cd595['id'],_0x4cd595);WhatsappQueueEvents[_0xd079('0x6')](_0x44dafb,_0x4cd595);_0x4a4d0e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 33b4367..3bc7edf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f61=['../../config/environment','./whatsappQueue.attributes','exports','define','whatsapp_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x466e08,_0x5c4d83){var _0x417cbb=function(_0x89c0a4){while(--_0x89c0a4){_0x466e08['push'](_0x466e08['shift']());}};_0x417cbb(++_0x5c4d83);}(_0x9f61,0x1b2));var _0x19f6=function(_0x119aca,_0x49ebc1){_0x119aca=_0x119aca-0x0;var _0x33f88b=_0x9f61[_0x119aca];return _0x33f88b;};'use strict';var _=require(_0x19f6('0x0'));var util=require(_0x19f6('0x1'));var logger=require(_0x19f6('0x2'))(_0x19f6('0x3'));var moment=require('moment');var BPromise=require(_0x19f6('0x4'));var rp=require(_0x19f6('0x5'));var fs=require('fs');var path=require(_0x19f6('0x6'));var rimraf=require(_0x19f6('0x7'));var config=require(_0x19f6('0x8'));var attributes=require(_0x19f6('0x9'));module[_0x19f6('0xa')]=function(_0x222113,_0x4fe6fb){return _0x222113[_0x19f6('0xb')]('WhatsappQueue',attributes,{'tableName':_0x19f6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5295=['bluebird','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger','api','moment'];(function(_0x5ddece,_0x3a7671){var _0x34dbb3=function(_0x454264){while(--_0x454264){_0x5ddece['push'](_0x5ddece['shift']());}};_0x34dbb3(++_0x3a7671);}(_0x5295,0x1a9));var _0x5529=function(_0x37f339,_0x450ba6){_0x37f339=_0x37f339-0x0;var _0x320d3b=_0x5295[_0x37f339];return _0x320d3b;};'use strict';var _=require(_0x5529('0x0'));var util=require('util');var logger=require(_0x5529('0x1'))(_0x5529('0x2'));var moment=require(_0x5529('0x3'));var BPromise=require(_0x5529('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5529('0x5'));var rimraf=require(_0x5529('0x6'));var config=require(_0x5529('0x7'));var attributes=require(_0x5529('0x8'));module[_0x5529('0x9')]=function(_0x5170ea,_0xfa76a6){return _0x5170ea[_0x5529('0xa')](_0x5529('0xb'),attributes,{'tableName':_0x5529('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4bcfdcc..e17684e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x226a=['jayson/promise','http','defaults','redis','socket.io-emitter','register','request','then','info','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','catch','findAll','options','where','attributes','include','model','map','GetWhatsappQueue','WhatsappQueue','find','ShowWhatsappQueue','lodash','util','bluebird','ioredis','../../config/logger','rpc'];(function(_0x53d3a9,_0x5bb392){var _0x40d495=function(_0x5b0504){while(--_0x5b0504){_0x53d3a9['push'](_0x53d3a9['shift']());}};_0x40d495(++_0x5bb392);}(_0x226a,0x158));var _0xa226=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0x226a[_0x211632];return _0x5a1da1;};'use strict';var _=require(_0xa226('0x0'));var util=require(_0xa226('0x1'));var moment=require('moment');var BPromise=require(_0xa226('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa226('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa226('0x4'))(_0xa226('0x5'));var config=require('../../config/environment');var jayson=require(_0xa226('0x6'));var client=jayson['client'][_0xa226('0x7')]({'port':0x232a});config['redis']=_[_0xa226('0x8')](config[_0xa226('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xa226('0xa'))(new Redis(config[_0xa226('0x9')]));require('./whatsappQueue.socket')[_0xa226('0xb')](socket);function respondWithRpcPromise(_0xd55a26,_0x46b8f5,_0x5efce7){return new BPromise(function(_0x149c5a,_0x31e102){return client[_0xa226('0xc')](_0xd55a26,_0x5efce7)[_0xa226('0xd')](function(_0x3f9b59){logger[_0xa226('0xe')]('WhatsappQueue,\x20%s,\x20%s',_0x46b8f5,_0xa226('0xf'));logger[_0xa226('0x10')](_0xa226('0x11'),_0x46b8f5,_0xa226('0xf'),JSON[_0xa226('0x12')](_0x3f9b59));if(_0x3f9b59[_0xa226('0x13')]){if(_0x3f9b59[_0xa226('0x13')][_0xa226('0x14')]===0x1f4){logger[_0xa226('0x13')](_0xa226('0x15'),_0x46b8f5,_0x3f9b59[_0xa226('0x13')][_0xa226('0x16')]);return _0x31e102(_0x3f9b59[_0xa226('0x13')][_0xa226('0x16')]);}logger['error'](_0xa226('0x15'),_0x46b8f5,_0x3f9b59['error'][_0xa226('0x16')]);return _0x149c5a(_0x3f9b59[_0xa226('0x13')][_0xa226('0x16')]);}else{logger[_0xa226('0xe')](_0xa226('0x15'),_0x46b8f5,_0xa226('0xf'));_0x149c5a(_0x3f9b59['result']['message']);}})[_0xa226('0x17')](function(_0xb34668){logger[_0xa226('0x13')](_0xa226('0x15'),_0x46b8f5,_0xb34668);_0x31e102(_0xb34668);});});}exports['GetWhatsappQueue']=function(_0x545f36){var _0x1142f1=this;return new Promise(function(_0x4685a4,_0x5de598){return db['WhatsappQueue'][_0xa226('0x18')]({'raw':_0x545f36[_0xa226('0x19')]?_0x545f36[_0xa226('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x545f36[_0xa226('0x19')]?_0x545f36['options'][_0xa226('0x1a')]||null:null,'attributes':_0x545f36['options']?_0x545f36[_0xa226('0x19')][_0xa226('0x1b')]||null:null,'limit':_0x545f36['options']?_0x545f36[_0xa226('0x19')]['limit']||null:null,'include':_0x545f36[_0xa226('0x19')]?_0x545f36['options'][_0xa226('0x1c')]?_['map'](_0x545f36[_0xa226('0x19')][_0xa226('0x1c')],function(_0x445729){return{'model':db[_0x445729[_0xa226('0x1d')]],'as':_0x445729['as'],'attributes':_0x445729[_0xa226('0x1b')],'include':_0x445729[_0xa226('0x1c')]?_['map'](_0x445729[_0xa226('0x1c')],function(_0x9bde3c){return{'model':db[_0x9bde3c['model']],'as':_0x9bde3c['as'],'attributes':_0x9bde3c['attributes'],'include':_0x9bde3c[_0xa226('0x1c')]?_[_0xa226('0x1e')](_0x9bde3c[_0xa226('0x1c')],function(_0x4d4acb){return{'model':db[_0x4d4acb[_0xa226('0x1d')]],'as':_0x4d4acb['as'],'attributes':_0x4d4acb[_0xa226('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x49e652){logger[_0xa226('0xe')](_0xa226('0x1f'),_0x545f36);logger[_0xa226('0x10')]('GetWhatsappQueue',_0x545f36,JSON[_0xa226('0x12')](_0x49e652));_0x4685a4(_0x49e652);})[_0xa226('0x17')](function(_0x1387ef){logger[_0xa226('0x13')](_0xa226('0x1f'),_0x1387ef['message'],_0x545f36);_0x5de598(_0x1142f1['error'](0x1f4,_0x1387ef[_0xa226('0x16')]));});});};exports['ShowWhatsappQueue']=function(_0x11361c){var _0x31bc60=this;return new Promise(function(_0x2ade5f,_0x44a34f){return db[_0xa226('0x20')][_0xa226('0x21')]({'raw':_0x11361c[_0xa226('0x19')]?_0x11361c[_0xa226('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x11361c[_0xa226('0x19')]?_0x11361c['options']['where']||null:null,'attributes':_0x11361c[_0xa226('0x19')]?_0x11361c['options'][_0xa226('0x1b')]||null:null,'include':_0x11361c[_0xa226('0x19')]?_0x11361c[_0xa226('0x19')][_0xa226('0x1c')]?_['map'](_0x11361c[_0xa226('0x19')][_0xa226('0x1c')],function(_0x310ea7){return{'model':db[_0x310ea7[_0xa226('0x1d')]],'as':_0x310ea7['as'],'attributes':_0x310ea7[_0xa226('0x1b')],'include':_0x310ea7[_0xa226('0x1c')]?_[_0xa226('0x1e')](_0x310ea7[_0xa226('0x1c')],function(_0x4ee333){return{'model':db[_0x4ee333['model']],'as':_0x4ee333['as'],'attributes':_0x4ee333[_0xa226('0x1b')],'include':_0x4ee333[_0xa226('0x1c')]?_[_0xa226('0x1e')](_0x4ee333[_0xa226('0x1c')],function(_0x3e88ab){return{'model':db[_0x3e88ab['model']],'as':_0x3e88ab['as'],'attributes':_0x3e88ab[_0xa226('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xa226('0xd')](function(_0x18db8b){logger[_0xa226('0xe')](_0xa226('0x22'),_0x11361c);logger[_0xa226('0x10')](_0xa226('0x22'),_0x11361c,JSON[_0xa226('0x12')](_0x18db8b));_0x2ade5f(_0x18db8b);})[_0xa226('0x17')](function(_0x4dce1c){logger[_0xa226('0x13')](_0xa226('0x22'),_0x4dce1c[_0xa226('0x16')],_0x11361c);_0x44a34f(_0x31bc60['error'](0x1f4,_0x4dce1c[_0xa226('0x16')]));});});};
\ No newline at end of file
+var _0xbe0a=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetWhatsappQueue','findAll','options','raw','where','attributes','include','model','map','debug','ShowWhatsappQueue','find','lodash','moment','bluebird','randomstring'];(function(_0x3264df,_0x4ce8f6){var _0x250fe0=function(_0x9b16b0){while(--_0x9b16b0){_0x3264df['push'](_0x3264df['shift']());}};_0x250fe0(++_0x4ce8f6);}(_0xbe0a,0x15b));var _0xabe0=function(_0x1bc647,_0x2ee4a6){_0x1bc647=_0x1bc647-0x0;var _0x3bc2f8=_0xbe0a[_0x1bc647];return _0x3bc2f8;};'use strict';var _=require(_0xabe0('0x0'));var util=require('util');var moment=require(_0xabe0('0x1'));var BPromise=require(_0xabe0('0x2'));var rs=require(_0xabe0('0x3'));var fs=require('fs');var Redis=require(_0xabe0('0x4'));var db=require(_0xabe0('0x5'))['db'];var utils=require(_0xabe0('0x6'));var logger=require('../../config/logger')(_0xabe0('0x7'));var config=require('../../config/environment');var jayson=require(_0xabe0('0x8'));var client=jayson[_0xabe0('0x9')][_0xabe0('0xa')]({'port':0x232a});config[_0xabe0('0xb')]=_[_0xabe0('0xc')](config['redis'],{'host':_0xabe0('0xd'),'port':0x18eb});var socket=require(_0xabe0('0xe'))(new Redis(config[_0xabe0('0xb')]));require(_0xabe0('0xf'))[_0xabe0('0x10')](socket);function respondWithRpcPromise(_0x321029,_0x2c800b,_0x20137a){return new BPromise(function(_0x5ac90b,_0x21b8fb){return client['request'](_0x321029,_0x20137a)[_0xabe0('0x11')](function(_0x3e152f){logger[_0xabe0('0x12')](_0xabe0('0x13'),_0x2c800b,_0xabe0('0x14'));logger['debug'](_0xabe0('0x15'),_0x2c800b,_0xabe0('0x14'),JSON[_0xabe0('0x16')](_0x3e152f));if(_0x3e152f[_0xabe0('0x17')]){if(_0x3e152f[_0xabe0('0x17')]['code']===0x1f4){logger[_0xabe0('0x17')](_0xabe0('0x13'),_0x2c800b,_0x3e152f[_0xabe0('0x17')][_0xabe0('0x18')]);return _0x21b8fb(_0x3e152f[_0xabe0('0x17')]['message']);}logger[_0xabe0('0x17')](_0xabe0('0x13'),_0x2c800b,_0x3e152f[_0xabe0('0x17')][_0xabe0('0x18')]);return _0x5ac90b(_0x3e152f['error'][_0xabe0('0x18')]);}else{logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x2c800b,_0xabe0('0x14'));_0x5ac90b(_0x3e152f[_0xabe0('0x19')]['message']);}})[_0xabe0('0x1a')](function(_0x2a2059){logger[_0xabe0('0x17')](_0xabe0('0x13'),_0x2c800b,_0x2a2059);_0x21b8fb(_0x2a2059);});});}exports[_0xabe0('0x1b')]=function(_0x587260){var _0x626c40=this;return new Promise(function(_0x1dad66,_0x36ccdf){return db['WhatsappQueue'][_0xabe0('0x1c')]({'raw':_0x587260[_0xabe0('0x1d')]?_0x587260[_0xabe0('0x1d')][_0xabe0('0x1e')]===undefined?!![]:![]:!![],'where':_0x587260['options']?_0x587260[_0xabe0('0x1d')][_0xabe0('0x1f')]||null:null,'attributes':_0x587260['options']?_0x587260['options'][_0xabe0('0x20')]||null:null,'limit':_0x587260['options']?_0x587260[_0xabe0('0x1d')]['limit']||null:null,'include':_0x587260[_0xabe0('0x1d')]?_0x587260[_0xabe0('0x1d')][_0xabe0('0x21')]?_['map'](_0x587260[_0xabe0('0x1d')][_0xabe0('0x21')],function(_0x4adaf9){return{'model':db[_0x4adaf9['model']],'as':_0x4adaf9['as'],'attributes':_0x4adaf9[_0xabe0('0x20')],'include':_0x4adaf9['include']?_['map'](_0x4adaf9[_0xabe0('0x21')],function(_0x54426f){return{'model':db[_0x54426f[_0xabe0('0x22')]],'as':_0x54426f['as'],'attributes':_0x54426f['attributes'],'include':_0x54426f['include']?_[_0xabe0('0x23')](_0x54426f[_0xabe0('0x21')],function(_0x9e81ba){return{'model':db[_0x9e81ba[_0xabe0('0x22')]],'as':_0x9e81ba['as'],'attributes':_0x9e81ba['attributes']};}):[]};}):[]};}):[]:[]})[_0xabe0('0x11')](function(_0x291ce9){logger['info'](_0xabe0('0x1b'),_0x587260);logger[_0xabe0('0x24')]('GetWhatsappQueue',_0x587260,JSON[_0xabe0('0x16')](_0x291ce9));_0x1dad66(_0x291ce9);})[_0xabe0('0x1a')](function(_0x1c811b){logger['error'](_0xabe0('0x1b'),_0x1c811b[_0xabe0('0x18')],_0x587260);_0x36ccdf(_0x626c40[_0xabe0('0x17')](0x1f4,_0x1c811b[_0xabe0('0x18')]));});});};exports[_0xabe0('0x25')]=function(_0x5af3f0){var _0x82830d=this;return new Promise(function(_0x3448a1,_0xe99c9f){return db['WhatsappQueue'][_0xabe0('0x26')]({'raw':_0x5af3f0[_0xabe0('0x1d')]?_0x5af3f0[_0xabe0('0x1d')][_0xabe0('0x1e')]===undefined?!![]:![]:!![],'where':_0x5af3f0[_0xabe0('0x1d')]?_0x5af3f0['options'][_0xabe0('0x1f')]||null:null,'attributes':_0x5af3f0[_0xabe0('0x1d')]?_0x5af3f0[_0xabe0('0x1d')]['attributes']||null:null,'include':_0x5af3f0[_0xabe0('0x1d')]?_0x5af3f0[_0xabe0('0x1d')][_0xabe0('0x21')]?_['map'](_0x5af3f0[_0xabe0('0x1d')][_0xabe0('0x21')],function(_0x4e08b5){return{'model':db[_0x4e08b5[_0xabe0('0x22')]],'as':_0x4e08b5['as'],'attributes':_0x4e08b5[_0xabe0('0x20')],'include':_0x4e08b5[_0xabe0('0x21')]?_['map'](_0x4e08b5['include'],function(_0x302b01){return{'model':db[_0x302b01[_0xabe0('0x22')]],'as':_0x302b01['as'],'attributes':_0x302b01[_0xabe0('0x20')],'include':_0x302b01[_0xabe0('0x21')]?_[_0xabe0('0x23')](_0x302b01[_0xabe0('0x21')],function(_0x1d74db){return{'model':db[_0x1d74db[_0xabe0('0x22')]],'as':_0x1d74db['as'],'attributes':_0x1d74db['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x390da4){logger[_0xabe0('0x12')](_0xabe0('0x25'),_0x5af3f0);logger['debug'](_0xabe0('0x25'),_0x5af3f0,JSON[_0xabe0('0x16')](_0x390da4));_0x3448a1(_0x390da4);})[_0xabe0('0x1a')](function(_0x1c96ec){logger[_0xabe0('0x17')]('ShowWhatsappQueue',_0x1c96ec['message'],_0x5af3f0);_0xe99c9f(_0x82830d['error'](0x1f4,_0x1c96ec['message']));});});};
\ No newline at end of file
index afc8dba..4f6aad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf55=['emit','removeListener','register','length','whatsappQueue:','./whatsappQueue.events','save','update'];(function(_0x1b87a2,_0x18b80f){var _0x532d93=function(_0x53b580){while(--_0x53b580){_0x1b87a2['push'](_0x1b87a2['shift']());}};_0x532d93(++_0x18b80f);}(_0xbf55,0x8d));var _0x5bf5=function(_0x19ef1e,_0x506bcb){_0x19ef1e=_0x19ef1e-0x0;var _0x10d295=_0xbf55[_0x19ef1e];return _0x10d295;};'use strict';var WhatsappQueueEvents=require(_0x5bf5('0x0'));var events=[_0x5bf5('0x1'),'remove',_0x5bf5('0x2')];function createListener(_0x520718,_0x4f44d2){return function(_0x526dff){_0x4f44d2[_0x5bf5('0x3')](_0x520718,_0x526dff);};}function removeListener(_0x53a3d6,_0x106ef3){return function(){WhatsappQueueEvents[_0x5bf5('0x4')](_0x53a3d6,_0x106ef3);};}exports[_0x5bf5('0x5')]=function(_0x39c3f5){for(var _0x21ed57=0x0,_0x3786b6=events[_0x5bf5('0x6')];_0x21ed57<_0x3786b6;_0x21ed57++){var _0x17b3b8=events[_0x21ed57];var _0x55dee6=createListener(_0x5bf5('0x7')+_0x17b3b8,_0x39c3f5);WhatsappQueueEvents['on'](_0x17b3b8,_0x55dee6);}};
\ No newline at end of file
+var _0x1a52=['save','remove','update','emit','removeListener','register','length','./whatsappQueue.events'];(function(_0x4fcd31,_0x1c6875){var _0x476c79=function(_0xb5cdee){while(--_0xb5cdee){_0x4fcd31['push'](_0x4fcd31['shift']());}};_0x476c79(++_0x1c6875);}(_0x1a52,0x1bf));var _0x21a5=function(_0x446819,_0x9a475a){_0x446819=_0x446819-0x0;var _0x899420=_0x1a52[_0x446819];return _0x899420;};'use strict';var WhatsappQueueEvents=require(_0x21a5('0x0'));var events=[_0x21a5('0x1'),_0x21a5('0x2'),_0x21a5('0x3')];function createListener(_0x20c313,_0x550299){return function(_0x1662fa){_0x550299[_0x21a5('0x4')](_0x20c313,_0x1662fa);};}function removeListener(_0x3c6eb9,_0x5a6329){return function(){WhatsappQueueEvents[_0x21a5('0x5')](_0x3c6eb9,_0x5a6329);};}exports[_0x21a5('0x6')]=function(_0x58b24f){for(var _0x421a3e=0x0,_0x592ab6=events[_0x21a5('0x7')];_0x421a3e<_0x592ab6;_0x421a3e++){var _0x1882cf=events[_0x421a3e];var _0x1f859b=createListener('whatsappQueue:'+_0x1882cf,_0x58b24f);WhatsappQueueEvents['on'](_0x1882cf,_0x1f859b);}};
\ No newline at end of file
index 64de9a7..e75c5ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cc3=['describe','/:id','show','post','update','destroy','exports','util','connect-timeout','Router','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','/describe','isAuthenticated'];(function(_0x25e6e9,_0x24811b){var _0x46b8f1=function(_0x218a66){while(--_0x218a66){_0x25e6e9['push'](_0x25e6e9['shift']());}};_0x46b8f1(++_0x24811b);}(_0x5cc3,0x127));var _0x35cc=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5cc3[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require(_0x35cc('0x0'));var path=require('path');var timeout=require(_0x35cc('0x1'));var express=require('express');var router=express[_0x35cc('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x35cc('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x35cc('0x4'));var controller=require(_0x35cc('0x5'));router[_0x35cc('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35cc('0x6')](_0x35cc('0x7'),auth[_0x35cc('0x8')](),controller[_0x35cc('0x9')]);router['get'](_0x35cc('0xa'),auth[_0x35cc('0x8')](),controller[_0x35cc('0xb')]);router[_0x35cc('0xc')]('/',auth[_0x35cc('0x8')](),controller['create']);router['put'](_0x35cc('0xa'),auth['isAuthenticated'](),controller[_0x35cc('0xd')]);router['delete'](_0x35cc('0xa'),auth[_0x35cc('0x8')](),controller[_0x35cc('0xe')]);module[_0x35cc('0xf')]=router;
\ No newline at end of file
+var _0xcd83=['show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id'];(function(_0x90e575,_0x48c2ec){var _0x1aae60=function(_0x4e40cf){while(--_0x4e40cf){_0x90e575['push'](_0x90e575['shift']());}};_0x1aae60(++_0x48c2ec);}(_0xcd83,0x6c));var _0x3cd8=function(_0x50cbca,_0x4d101f){_0x50cbca=_0x50cbca-0x0;var _0x2f6349=_0xcd83[_0x50cbca];return _0x2f6349;};'use strict';var multer=require('multer');var util=require(_0x3cd8('0x0'));var path=require(_0x3cd8('0x1'));var timeout=require('connect-timeout');var express=require(_0x3cd8('0x2'));var router=express[_0x3cd8('0x3')]();var fs_extra=require(_0x3cd8('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3cd8('0x5'));var config=require(_0x3cd8('0x6'));var controller=require('./whatsappQueueReport.controller');router[_0x3cd8('0x7')]('/',auth[_0x3cd8('0x8')](),controller[_0x3cd8('0x9')]);router['get']('/describe',auth[_0x3cd8('0x8')](),controller[_0x3cd8('0xa')]);router['get'](_0x3cd8('0xb'),auth['isAuthenticated'](),controller[_0x3cd8('0xc')]);router[_0x3cd8('0xd')]('/',auth[_0x3cd8('0x8')](),controller[_0x3cd8('0xe')]);router[_0x3cd8('0xf')](_0x3cd8('0xb'),auth[_0x3cd8('0x8')](),controller[_0x3cd8('0x10')]);router[_0x3cd8('0x11')](_0x3cd8('0xb'),auth['isAuthenticated'](),controller[_0x3cd8('0x12')]);module[_0x3cd8('0x13')]=router;
\ No newline at end of file
index 34ca7ca..5adfc4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x586b80,_0x43c706){var _0x94de44=function(_0x412cae){while(--_0x412cae){_0x586b80['push'](_0x586b80['shift']());}};_0x94de44(++_0x43c706);}(_0x7a54,0x106));var _0x47a5=function(_0x1308ad,_0x1d4cff){_0x1308ad=_0x1308ad-0x0;var _0x5e1e7f=_0x7a54[_0x1308ad];return _0x5e1e7f;};'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 _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x5ab539,_0x50b459){var _0x257f86=function(_0x4e0c48){while(--_0x4e0c48){_0x5ab539['push'](_0x5ab539['shift']());}};_0x257f86(++_0x50b459);}(_0x7a54,0x106));var _0x47a5=function(_0x14699d,_0x22cc24){_0x14699d=_0x14699d-0x0;var _0xb47591=_0x7a54[_0x14699d];return _0xb47591;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index 21271f5..c87557b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['WhatsappQueueReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','show','params','includeAll','include','find','catch','create','body','update','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','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','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','index','map'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x34b7,0x196));var _0x734b=function(_0x5738f7,_0x17df47){_0x5738f7=_0x5738f7-0x0;var _0x2e6d3c=_0x34b7[_0x5738f7];return _0x2e6d3c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x734b('0x0'));var jsonpatch=require(_0x734b('0x1'));var rp=require(_0x734b('0x2'));var moment=require(_0x734b('0x3'));var BPromise=require(_0x734b('0x4'));var Mustache=require(_0x734b('0x5'));var util=require('util');var path=require('path');var sox=require(_0x734b('0x6'));var csv=require(_0x734b('0x7'));var ejs=require(_0x734b('0x8'));var fs=require('fs');var fs_extra=require(_0x734b('0x9'));var _=require(_0x734b('0xa'));var squel=require(_0x734b('0xb'));var crypto=require('crypto');var jsforce=require(_0x734b('0xc'));var deskjs=require(_0x734b('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x734b('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x734b('0xf'));var as=require(_0x734b('0x10'));var hardwareService=require(_0x734b('0x11'));var logger=require(_0x734b('0x12'))(_0x734b('0x13'));var utils=require(_0x734b('0x14'));var config=require(_0x734b('0x15'));var licenseUtil=require(_0x734b('0x16'));var db=require(_0x734b('0x17'))['db'];function respondWithStatusCode(_0x1e0fca,_0x189a82){_0x189a82=_0x189a82||0xcc;return function(_0xff9ddf){if(_0xff9ddf){return _0x1e0fca[_0x734b('0x18')](_0x189a82);}return _0x1e0fca[_0x734b('0x19')](_0x189a82)['end']();};}function respondWithResult(_0x18fc18,_0x252510){_0x252510=_0x252510||0xc8;return function(_0x47791c){if(_0x47791c){return _0x18fc18[_0x734b('0x19')](_0x252510)[_0x734b('0x1a')](_0x47791c);}};}function respondWithFilteredResult(_0x2e00ad,_0x2372bd){return function(_0x2c03bd){if(_0x2c03bd){var _0xa6d111=typeof _0x2372bd[_0x734b('0x1b')]===_0x734b('0x1c')&&typeof _0x2372bd['limit']===_0x734b('0x1c');var _0x2ee290=_0x2c03bd[_0x734b('0x1d')];var _0x5edbe9=_0xa6d111?0x0:_0x2372bd['offset'];var _0x56a95c=_0xa6d111?_0x2c03bd[_0x734b('0x1d')]:_0x2372bd[_0x734b('0x1b')]+_0x2372bd[_0x734b('0x1e')];var _0x41ba87;if(_0x56a95c>=_0x2ee290){_0x56a95c=_0x2ee290;_0x41ba87=0xc8;}else{_0x41ba87=0xce;}_0x2e00ad[_0x734b('0x19')](_0x41ba87);return _0x2e00ad[_0x734b('0x1f')](_0x734b('0x20'),_0x5edbe9+'-'+_0x56a95c+'/'+_0x2ee290)[_0x734b('0x1a')](_0x2c03bd);}return null;};}function patchUpdates(_0x67eed){return function(_0x1d2b27){try{jsonpatch[_0x734b('0x21')](_0x1d2b27,_0x67eed,!![]);}catch(_0x3d0ffd){return BPromise[_0x734b('0x22')](_0x3d0ffd);}return _0x1d2b27[_0x734b('0x23')]();};}function saveUpdates(_0x56f807,_0x1e4dcc){return function(_0x7856d7){if(_0x7856d7){return _0x7856d7['update'](_0x56f807)[_0x734b('0x24')](function(_0x1f81de){return _0x1f81de;});}return null;};}function removeEntity(_0x1a7908,_0x11fb8e){return function(_0x46d432){if(_0x46d432){return _0x46d432[_0x734b('0x25')]()[_0x734b('0x24')](function(){_0x1a7908[_0x734b('0x19')](0xcc)[_0x734b('0x26')]();});}};}function handleEntityNotFound(_0x3abbe6,_0x44ffa9){return function(_0x148abe){if(!_0x148abe){_0x3abbe6[_0x734b('0x18')](0x194);}return _0x148abe;};}function handleError(_0x566d55,_0x49732b){_0x49732b=_0x49732b||0x1f4;return function(_0x13cc5a){logger[_0x734b('0x27')](_0x13cc5a['stack']);if(_0x13cc5a[_0x734b('0x28')]){delete _0x13cc5a[_0x734b('0x28')];}_0x566d55[_0x734b('0x19')](_0x49732b)[_0x734b('0x29')](_0x13cc5a);};}exports[_0x734b('0x2a')]=function(_0x1b8295,_0x3ba39c){var _0x5c6c5d={},_0x1f3652={},_0x436efe={'count':0x0,'rows':[]};var _0x42e9ae=_[_0x734b('0x2b')](db[_0x734b('0x2c')][_0x734b('0x2d')],function(_0x1fed72){return{'name':_0x1fed72[_0x734b('0x2e')],'type':_0x1fed72[_0x734b('0x2f')][_0x734b('0x30')]};});_0x1f3652['model']=_[_0x734b('0x2b')](_0x42e9ae,_0x734b('0x28'));_0x1f3652['query']=_[_0x734b('0x31')](_0x1b8295[_0x734b('0x32')]);_0x1f3652[_0x734b('0x33')]=_[_0x734b('0x34')](_0x1f3652[_0x734b('0x35')],_0x1f3652[_0x734b('0x32')]);_0x5c6c5d[_0x734b('0x36')]=_[_0x734b('0x34')](_0x1f3652[_0x734b('0x35')],qs[_0x734b('0x37')](_0x1b8295[_0x734b('0x32')][_0x734b('0x37')]));_0x5c6c5d[_0x734b('0x36')]=_0x5c6c5d[_0x734b('0x36')][_0x734b('0x38')]?_0x5c6c5d['attributes']:_0x1f3652[_0x734b('0x35')];if(!_0x1b8295['query'][_0x734b('0x39')](_0x734b('0x3a'))){_0x5c6c5d[_0x734b('0x1e')]=qs[_0x734b('0x1e')](_0x1b8295[_0x734b('0x32')][_0x734b('0x1e')]);_0x5c6c5d['offset']=qs['offset'](_0x1b8295[_0x734b('0x32')]['offset']);}_0x5c6c5d[_0x734b('0x3b')]=qs['sort'](_0x1b8295[_0x734b('0x32')]['sort']);_0x5c6c5d[_0x734b('0x3c')]=qs['filters'](_[_0x734b('0x3d')](_0x1b8295[_0x734b('0x32')],_0x1f3652[_0x734b('0x33')]),_0x42e9ae);if(_0x1b8295[_0x734b('0x32')][_0x734b('0x3e')]){_0x5c6c5d[_0x734b('0x3c')]=_[_0x734b('0x3f')](_0x5c6c5d['where'],{'$or':_[_0x734b('0x2b')](_0x42e9ae,function(_0x317d32){if(_0x317d32['type']!==_0x734b('0x40')){var _0x309b31={};_0x309b31[_0x317d32[_0x734b('0x28')]]={'$like':'%'+_0x1b8295[_0x734b('0x32')]['filter']+'%'};return _0x309b31;}})});}_0x5c6c5d=_[_0x734b('0x3f')]({},_0x5c6c5d,_0x1b8295[_0x734b('0x41')]);var _0x4efb1f={'where':_0x5c6c5d[_0x734b('0x3c')]};return db[_0x734b('0x2c')]['count'](_0x4efb1f)[_0x734b('0x24')](function(_0x2d8f31){_0x436efe[_0x734b('0x1d')]=_0x2d8f31;if(_0x1b8295[_0x734b('0x32')]['includeAll']){_0x5c6c5d['include']=[{'all':!![]}];}return db[_0x734b('0x2c')]['findAll'](_0x5c6c5d);})['then'](function(_0x121a00){_0x436efe['rows']=_0x121a00;return _0x436efe;})[_0x734b('0x24')](respondWithFilteredResult(_0x3ba39c,_0x5c6c5d))['catch'](handleError(_0x3ba39c,null));};exports[_0x734b('0x42')]=function(_0x337106,_0xe4fe38){var _0x4c3fdc={'raw':!![],'where':{'id':_0x337106[_0x734b('0x43')]['id']}},_0x5cf3a0={};_0x5cf3a0['model']=_['keys'](db[_0x734b('0x2c')][_0x734b('0x2d')]);_0x5cf3a0['query']=_[_0x734b('0x31')](_0x337106['query']);_0x5cf3a0[_0x734b('0x33')]=_[_0x734b('0x34')](_0x5cf3a0[_0x734b('0x35')],_0x5cf3a0['query']);_0x4c3fdc[_0x734b('0x36')]=_[_0x734b('0x34')](_0x5cf3a0[_0x734b('0x35')],qs[_0x734b('0x37')](_0x337106['query']['fields']));_0x4c3fdc['attributes']=_0x4c3fdc[_0x734b('0x36')]['length']?_0x4c3fdc['attributes']:_0x5cf3a0[_0x734b('0x35')];if(_0x337106['query'][_0x734b('0x44')]){_0x4c3fdc[_0x734b('0x45')]=[{'all':!![]}];}_0x4c3fdc=_[_0x734b('0x3f')]({},_0x4c3fdc,_0x337106[_0x734b('0x41')]);return db['WhatsappQueueReport'][_0x734b('0x46')](_0x4c3fdc)['then'](handleEntityNotFound(_0xe4fe38,null))[_0x734b('0x24')](respondWithResult(_0xe4fe38,null))[_0x734b('0x47')](handleError(_0xe4fe38,null));};exports[_0x734b('0x48')]=function(_0x5cdacb,_0x370326){return db['WhatsappQueueReport'][_0x734b('0x48')](_0x5cdacb[_0x734b('0x49')],{})['then'](respondWithResult(_0x370326,0xc9))[_0x734b('0x47')](handleError(_0x370326,null));};exports[_0x734b('0x4a')]=function(_0x145ced,_0x38125a){if(_0x145ced[_0x734b('0x49')]['id']){delete _0x145ced['body']['id'];}return db[_0x734b('0x2c')]['find']({'where':{'id':_0x145ced[_0x734b('0x43')]['id']}})['then'](handleEntityNotFound(_0x38125a,null))[_0x734b('0x24')](saveUpdates(_0x145ced[_0x734b('0x49')],null))[_0x734b('0x24')](respondWithResult(_0x38125a,null))[_0x734b('0x47')](handleError(_0x38125a,null));};exports[_0x734b('0x25')]=function(_0x4b70f2,_0x4c0378){return db['WhatsappQueueReport'][_0x734b('0x46')]({'where':{'id':_0x4b70f2[_0x734b('0x43')]['id']}})['then'](handleEntityNotFound(_0x4c0378,null))[_0x734b('0x24')](removeEntity(_0x4c0378,null))[_0x734b('0x47')](handleError(_0x4c0378,null));};exports['describe']=function(_0x167173,_0x3a9749){return db[_0x734b('0x2c')]['describe']()[_0x734b('0x24')](respondWithResult(_0x3a9749,null))[_0x734b('0x47')](handleError(_0x3a9749,null));};
\ No newline at end of file
+var _0x96cc=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x2c692e,_0x5a8c68){var _0x7d19a8=function(_0x1d6d13){while(--_0x1d6d13){_0x2c692e['push'](_0x2c692e['shift']());}};_0x7d19a8(++_0x5a8c68);}(_0x96cc,0x16c));var _0xc96c=function(_0x5442d1,_0x193d0e){_0x5442d1=_0x5442d1-0x0;var _0x2f0eaf=_0x96cc[_0x5442d1];return _0x2f0eaf;};'use strict';var emlformat=require(_0xc96c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc96c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc96c('0x2'));var moment=require(_0xc96c('0x3'));var BPromise=require(_0xc96c('0x4'));var Mustache=require(_0xc96c('0x5'));var util=require(_0xc96c('0x6'));var path=require(_0xc96c('0x7'));var sox=require(_0xc96c('0x8'));var csv=require(_0xc96c('0x9'));var ejs=require(_0xc96c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc96c('0xb'));var squel=require(_0xc96c('0xc'));var crypto=require(_0xc96c('0xd'));var jsforce=require(_0xc96c('0xe'));var deskjs=require(_0xc96c('0xf'));var toCsv=require(_0xc96c('0x9'));var querystring=require(_0xc96c('0x10'));var Papa=require('papaparse');var Redis=require(_0xc96c('0x11'));var authService=require(_0xc96c('0x12'));var qs=require(_0xc96c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc96c('0x14'));var logger=require('../../config/logger')(_0xc96c('0x15'));var utils=require('../../config/utils');var config=require(_0xc96c('0x16'));var licenseUtil=require(_0xc96c('0x17'));var db=require(_0xc96c('0x18'))['db'];function respondWithStatusCode(_0x246a95,_0x5f27f3){_0x5f27f3=_0x5f27f3||0xcc;return function(_0x3fe3d5){if(_0x3fe3d5){return _0x246a95[_0xc96c('0x19')](_0x5f27f3);}return _0x246a95[_0xc96c('0x1a')](_0x5f27f3)[_0xc96c('0x1b')]();};}function respondWithResult(_0x48de8d,_0x35da94){_0x35da94=_0x35da94||0xc8;return function(_0xbed0c9){if(_0xbed0c9){return _0x48de8d[_0xc96c('0x1a')](_0x35da94)[_0xc96c('0x1c')](_0xbed0c9);}};}function respondWithFilteredResult(_0x377dbc,_0x46455a){return function(_0x1765d9){if(_0x1765d9){var _0x23e357=typeof _0x46455a[_0xc96c('0x1d')]===_0xc96c('0x1e')&&typeof _0x46455a[_0xc96c('0x1f')]==='undefined';var _0x509376=_0x1765d9[_0xc96c('0x20')];var _0x99c402=_0x23e357?0x0:_0x46455a[_0xc96c('0x1d')];var _0x2ae19a=_0x23e357?_0x1765d9['count']:_0x46455a[_0xc96c('0x1d')]+_0x46455a[_0xc96c('0x1f')];var _0x2a361c;if(_0x2ae19a>=_0x509376){_0x2ae19a=_0x509376;_0x2a361c=0xc8;}else{_0x2a361c=0xce;}_0x377dbc[_0xc96c('0x1a')](_0x2a361c);return _0x377dbc[_0xc96c('0x21')](_0xc96c('0x22'),_0x99c402+'-'+_0x2ae19a+'/'+_0x509376)[_0xc96c('0x1c')](_0x1765d9);}return null;};}function patchUpdates(_0x41daba){return function(_0x28d762){try{jsonpatch[_0xc96c('0x23')](_0x28d762,_0x41daba,!![]);}catch(_0x2bb397){return BPromise[_0xc96c('0x24')](_0x2bb397);}return _0x28d762[_0xc96c('0x25')]();};}function saveUpdates(_0x45edee,_0x325c54){return function(_0x3b5c6c){if(_0x3b5c6c){return _0x3b5c6c[_0xc96c('0x26')](_0x45edee)['then'](function(_0xd63951){return _0xd63951;});}return null;};}function removeEntity(_0x4be783,_0x4456bf){return function(_0x10ae21){if(_0x10ae21){return _0x10ae21[_0xc96c('0x27')]()[_0xc96c('0x28')](function(){_0x4be783[_0xc96c('0x1a')](0xcc)[_0xc96c('0x1b')]();});}};}function handleEntityNotFound(_0x1a77df,_0x14f171){return function(_0x50fc07){if(!_0x50fc07){_0x1a77df[_0xc96c('0x19')](0x194);}return _0x50fc07;};}function handleError(_0x117f17,_0x3f87cc){_0x3f87cc=_0x3f87cc||0x1f4;return function(_0x294fee){logger['error'](_0x294fee['stack']);if(_0x294fee[_0xc96c('0x29')]){delete _0x294fee[_0xc96c('0x29')];}_0x117f17[_0xc96c('0x1a')](_0x3f87cc)[_0xc96c('0x2a')](_0x294fee);};}exports[_0xc96c('0x2b')]=function(_0x5e1727,_0x427cb2){var _0x1c911b={},_0xa0efbc={},_0x27925f={'count':0x0,'rows':[]};var _0x325cda=_[_0xc96c('0x2c')](db[_0xc96c('0x2d')][_0xc96c('0x2e')],function(_0x556108){return{'name':_0x556108[_0xc96c('0x2f')],'type':_0x556108['type'][_0xc96c('0x30')]};});_0xa0efbc[_0xc96c('0x31')]=_[_0xc96c('0x2c')](_0x325cda,'name');_0xa0efbc[_0xc96c('0x32')]=_[_0xc96c('0x33')](_0x5e1727[_0xc96c('0x32')]);_0xa0efbc[_0xc96c('0x34')]=_['intersection'](_0xa0efbc['model'],_0xa0efbc[_0xc96c('0x32')]);_0x1c911b[_0xc96c('0x35')]=_[_0xc96c('0x36')](_0xa0efbc['model'],qs[_0xc96c('0x37')](_0x5e1727[_0xc96c('0x32')][_0xc96c('0x37')]));_0x1c911b[_0xc96c('0x35')]=_0x1c911b['attributes'][_0xc96c('0x38')]?_0x1c911b[_0xc96c('0x35')]:_0xa0efbc['model'];if(!_0x5e1727[_0xc96c('0x32')][_0xc96c('0x39')](_0xc96c('0x3a'))){_0x1c911b[_0xc96c('0x1f')]=qs[_0xc96c('0x1f')](_0x5e1727[_0xc96c('0x32')]['limit']);_0x1c911b[_0xc96c('0x1d')]=qs[_0xc96c('0x1d')](_0x5e1727[_0xc96c('0x32')][_0xc96c('0x1d')]);}_0x1c911b[_0xc96c('0x3b')]=qs[_0xc96c('0x3c')](_0x5e1727['query']['sort']);_0x1c911b[_0xc96c('0x3d')]=qs[_0xc96c('0x34')](_['pick'](_0x5e1727['query'],_0xa0efbc[_0xc96c('0x34')]),_0x325cda);if(_0x5e1727[_0xc96c('0x32')][_0xc96c('0x3e')]){_0x1c911b[_0xc96c('0x3d')]=_[_0xc96c('0x3f')](_0x1c911b[_0xc96c('0x3d')],{'$or':_[_0xc96c('0x2c')](_0x325cda,function(_0x257750){if(_0x257750[_0xc96c('0x40')]!==_0xc96c('0x41')){var _0x1b68e6={};_0x1b68e6[_0x257750['name']]={'$like':'%'+_0x5e1727[_0xc96c('0x32')][_0xc96c('0x3e')]+'%'};return _0x1b68e6;}})});}_0x1c911b=_[_0xc96c('0x3f')]({},_0x1c911b,_0x5e1727[_0xc96c('0x42')]);var _0x4eb180={'where':_0x1c911b[_0xc96c('0x3d')]};return db[_0xc96c('0x2d')][_0xc96c('0x20')](_0x4eb180)['then'](function(_0x510252){_0x27925f[_0xc96c('0x20')]=_0x510252;if(_0x5e1727[_0xc96c('0x32')][_0xc96c('0x43')]){_0x1c911b['include']=[{'all':!![]}];}return db[_0xc96c('0x2d')][_0xc96c('0x44')](_0x1c911b);})[_0xc96c('0x28')](function(_0x2a8ea7){_0x27925f[_0xc96c('0x45')]=_0x2a8ea7;return _0x27925f;})[_0xc96c('0x28')](respondWithFilteredResult(_0x427cb2,_0x1c911b))[_0xc96c('0x46')](handleError(_0x427cb2,null));};exports[_0xc96c('0x47')]=function(_0x25df41,_0x4d5a1b){var _0x4c3088={'raw':!![],'where':{'id':_0x25df41[_0xc96c('0x48')]['id']}},_0x30b3ac={};_0x30b3ac[_0xc96c('0x31')]=_[_0xc96c('0x33')](db['WhatsappQueueReport']['rawAttributes']);_0x30b3ac[_0xc96c('0x32')]=_[_0xc96c('0x33')](_0x25df41[_0xc96c('0x32')]);_0x30b3ac[_0xc96c('0x34')]=_[_0xc96c('0x36')](_0x30b3ac[_0xc96c('0x31')],_0x30b3ac[_0xc96c('0x32')]);_0x4c3088['attributes']=_[_0xc96c('0x36')](_0x30b3ac[_0xc96c('0x31')],qs[_0xc96c('0x37')](_0x25df41[_0xc96c('0x32')]['fields']));_0x4c3088['attributes']=_0x4c3088[_0xc96c('0x35')][_0xc96c('0x38')]?_0x4c3088[_0xc96c('0x35')]:_0x30b3ac[_0xc96c('0x31')];if(_0x25df41[_0xc96c('0x32')][_0xc96c('0x43')]){_0x4c3088[_0xc96c('0x49')]=[{'all':!![]}];}_0x4c3088=_[_0xc96c('0x3f')]({},_0x4c3088,_0x25df41[_0xc96c('0x42')]);return db[_0xc96c('0x2d')][_0xc96c('0x4a')](_0x4c3088)[_0xc96c('0x28')](handleEntityNotFound(_0x4d5a1b,null))[_0xc96c('0x28')](respondWithResult(_0x4d5a1b,null))['catch'](handleError(_0x4d5a1b,null));};exports[_0xc96c('0x4b')]=function(_0x2e5045,_0x307d58){return db[_0xc96c('0x2d')]['create'](_0x2e5045[_0xc96c('0x4c')],{})['then'](respondWithResult(_0x307d58,0xc9))[_0xc96c('0x46')](handleError(_0x307d58,null));};exports[_0xc96c('0x26')]=function(_0x565812,_0x2581ae){if(_0x565812[_0xc96c('0x4c')]['id']){delete _0x565812[_0xc96c('0x4c')]['id'];}return db[_0xc96c('0x2d')][_0xc96c('0x4a')]({'where':{'id':_0x565812[_0xc96c('0x48')]['id']}})['then'](handleEntityNotFound(_0x2581ae,null))['then'](saveUpdates(_0x565812['body'],null))[_0xc96c('0x28')](respondWithResult(_0x2581ae,null))['catch'](handleError(_0x2581ae,null));};exports[_0xc96c('0x27')]=function(_0x22b2e3,_0x65a0a7){return db[_0xc96c('0x2d')][_0xc96c('0x4a')]({'where':{'id':_0x22b2e3[_0xc96c('0x48')]['id']}})[_0xc96c('0x28')](handleEntityNotFound(_0x65a0a7,null))[_0xc96c('0x28')](removeEntity(_0x65a0a7,null))[_0xc96c('0x46')](handleError(_0x65a0a7,null));};exports[_0xc96c('0x4d')]=function(_0x573177,_0x3adefb){return db[_0xc96c('0x2d')][_0xc96c('0x4d')]()[_0xc96c('0x28')](respondWithResult(_0x3adefb,null))[_0xc96c('0x46')](handleError(_0x3adefb,null));};
\ No newline at end of file
index 64f1299..b500cc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cda=['exports','define','report_whatsapp_queue','uniqueid','lodash','../../config/logger','api','request-promise','path','rimraf'];(function(_0x3cc05d,_0x4b8f88){var _0x28b736=function(_0x369b0e){while(--_0x369b0e){_0x3cc05d['push'](_0x3cc05d['shift']());}};_0x28b736(++_0x4b8f88);}(_0x2cda,0x1ee));var _0xa2cd=function(_0x3aa94f,_0x49d82e){_0x3aa94f=_0x3aa94f-0x0;var _0x2ce11a=_0x2cda[_0x3aa94f];return _0x2ce11a;};'use strict';var _=require(_0xa2cd('0x0'));var util=require('util');var logger=require(_0xa2cd('0x1'))(_0xa2cd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa2cd('0x3'));var fs=require('fs');var path=require(_0xa2cd('0x4'));var rimraf=require(_0xa2cd('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappQueueReport.attributes');module[_0xa2cd('0x6')]=function(_0x2691e5,_0x445ede){return _0x2691e5[_0xa2cd('0x7')]('WhatsappQueueReport',attributes,{'tableName':_0xa2cd('0x8'),'paranoid':![],'indexes':[{'name':_0xa2cd('0x9'),'fields':[_0xa2cd('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e29=['../../config/environment','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','report_whatsapp_queue','uniqueid','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x9e9b89,_0x1b1b5a){var _0x2dcf13=function(_0x310a23){while(--_0x310a23){_0x9e9b89['push'](_0x9e9b89['shift']());}};_0x2dcf13(++_0x1b1b5a);}(_0x8e29,0x158));var _0x98e2=function(_0x50c773,_0x2e6f86){_0x50c773=_0x50c773-0x0;var _0x2c1e07=_0x8e29[_0x50c773];return _0x2c1e07;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x98e2('0x0'))(_0x98e2('0x1'));var moment=require(_0x98e2('0x2'));var BPromise=require(_0x98e2('0x3'));var rp=require(_0x98e2('0x4'));var fs=require('fs');var path=require(_0x98e2('0x5'));var rimraf=require(_0x98e2('0x6'));var config=require(_0x98e2('0x7'));var attributes=require(_0x98e2('0x8'));module[_0x98e2('0x9')]=function(_0x3cc252,_0x20f7f5){return _0x3cc252['define'](_0x98e2('0xa'),attributes,{'tableName':_0x98e2('0xb'),'paranoid':![],'indexes':[{'name':_0x98e2('0xc'),'fields':[_0x98e2('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f554aad..ca4c0bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0227=['error','code','message','result','catch','create','body','options','raw','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','WhatsappQueueReport','update','where','stringify','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0xbdf30e,_0x529893){var _0x24879e=function(_0x3c8812){while(--_0x3c8812){_0xbdf30e['push'](_0xbdf30e['shift']());}};_0x24879e(++_0x529893);}(_0x0227,0xe8));var _0x7022=function(_0xb4050b,_0x26393f){_0xb4050b=_0xb4050b-0x0;var _0x92b00=_0x0227[_0xb4050b];return _0x92b00;};'use strict';var _=require('lodash');var util=require(_0x7022('0x0'));var moment=require(_0x7022('0x1'));var BPromise=require(_0x7022('0x2'));var rs=require(_0x7022('0x3'));var fs=require('fs');var Redis=require(_0x7022('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7022('0x5'));var logger=require(_0x7022('0x6'))(_0x7022('0x7'));var config=require('../../config/environment');var jayson=require(_0x7022('0x8'));var client=jayson['client'][_0x7022('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40a4f2,_0x3c5b29,_0x437d60){return new BPromise(function(_0x49052f,_0x2e891b){return client[_0x7022('0xa')](_0x40a4f2,_0x437d60)[_0x7022('0xb')](function(_0xa7e948){logger[_0x7022('0xc')](_0x7022('0xd'),_0x3c5b29,_0x7022('0xe'));logger['debug'](_0x7022('0xf'),_0x3c5b29,_0x7022('0xe'),JSON['stringify'](_0xa7e948));if(_0xa7e948['error']){if(_0xa7e948[_0x7022('0x10')][_0x7022('0x11')]===0x1f4){logger['error'](_0x7022('0xd'),_0x3c5b29,_0xa7e948['error'][_0x7022('0x12')]);return _0x2e891b(_0xa7e948[_0x7022('0x10')][_0x7022('0x12')]);}logger['error'](_0x7022('0xd'),_0x3c5b29,_0xa7e948[_0x7022('0x10')][_0x7022('0x12')]);return _0x49052f(_0xa7e948['error']['message']);}else{logger[_0x7022('0xc')](_0x7022('0xd'),_0x3c5b29,_0x7022('0xe'));_0x49052f(_0xa7e948[_0x7022('0x13')]['message']);}})[_0x7022('0x14')](function(_0x5b70e6){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x3c5b29,_0x5b70e6);_0x2e891b(_0x5b70e6);});});}exports['CreateWhatsappQueueReport']=function(_0x1a2c61){var _0x34e9b5=this;return new Promise(function(_0x5ce03a,_0x2536d3){return db['WhatsappQueueReport'][_0x7022('0x15')](_0x1a2c61[_0x7022('0x16')],{'raw':_0x1a2c61[_0x7022('0x17')]?_0x1a2c61[_0x7022('0x17')][_0x7022('0x18')]===undefined?!![]:![]:!![]})[_0x7022('0xb')](function(_0x23c8bc){logger[_0x7022('0xc')]('CreateWhatsappQueueReport',_0x1a2c61);logger['debug']('CreateWhatsappQueueReport',_0x1a2c61,JSON['stringify'](_0x23c8bc));_0x5ce03a(_0x23c8bc);})[_0x7022('0x14')](function(_0x38fbd3){logger['error'](_0x7022('0x19'),_0x38fbd3[_0x7022('0x12')],_0x1a2c61);_0x2536d3(_0x34e9b5[_0x7022('0x10')](0x1f4,_0x38fbd3[_0x7022('0x12')]));});});};exports[_0x7022('0x1a')]=function(_0x5cccfa){var _0x2636d0=this;return new Promise(function(_0x14a59c,_0x58e615){return db[_0x7022('0x1b')][_0x7022('0x1c')](_0x5cccfa[_0x7022('0x16')],{'raw':_0x5cccfa[_0x7022('0x17')]?_0x5cccfa['options'][_0x7022('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5cccfa['options']?_0x5cccfa[_0x7022('0x17')][_0x7022('0x1d')]||null:null,'attributes':_0x5cccfa[_0x7022('0x17')]?_0x5cccfa[_0x7022('0x17')]['attributes']||null:null,'limit':_0x5cccfa['options']?_0x5cccfa['options']['limit']||null:null})[_0x7022('0xb')](function(_0x3d09eb){logger['info'](_0x7022('0x1a'),_0x5cccfa);logger['debug']('UpdateWhatsappQueueReport',_0x5cccfa,JSON[_0x7022('0x1e')](_0x3d09eb));_0x14a59c(_0x3d09eb);})[_0x7022('0x14')](function(_0x56159b){logger[_0x7022('0x10')](_0x7022('0x1a'),_0x56159b['message'],_0x5cccfa);_0x58e615(_0x2636d0['error'](0x1f4,_0x56159b[_0x7022('0x12')]));});});};
\ No newline at end of file
+var _0xd1f0=['where','attributes','limit','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','UpdateWhatsappQueueReport','update'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xd1f0,0x1b5));var _0x0d1f=function(_0x3caeb5,_0x219363){_0x3caeb5=_0x3caeb5-0x0;var _0x5eca7e=_0xd1f0[_0x3caeb5];return _0x5eca7e;};'use strict';var _=require('lodash');var util=require(_0x0d1f('0x0'));var moment=require('moment');var BPromise=require(_0x0d1f('0x1'));var rs=require(_0x0d1f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d1f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0d1f('0x4'))(_0x0d1f('0x5'));var config=require(_0x0d1f('0x6'));var jayson=require(_0x0d1f('0x7'));var client=jayson['client'][_0x0d1f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44d2aa,_0xd8ea52,_0x4f27c1){return new BPromise(function(_0x1e0d7c,_0x43e35d){return client[_0x0d1f('0x9')](_0x44d2aa,_0x4f27c1)[_0x0d1f('0xa')](function(_0x294d19){logger[_0x0d1f('0xb')](_0x0d1f('0xc'),_0xd8ea52,_0x0d1f('0xd'));logger[_0x0d1f('0xe')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0xd8ea52,'request\x20sent',JSON[_0x0d1f('0xf')](_0x294d19));if(_0x294d19[_0x0d1f('0x10')]){if(_0x294d19[_0x0d1f('0x10')][_0x0d1f('0x11')]===0x1f4){logger[_0x0d1f('0x10')]('WhatsappQueueReport,\x20%s,\x20%s',_0xd8ea52,_0x294d19[_0x0d1f('0x10')][_0x0d1f('0x12')]);return _0x43e35d(_0x294d19[_0x0d1f('0x10')][_0x0d1f('0x12')]);}logger[_0x0d1f('0x10')]('WhatsappQueueReport,\x20%s,\x20%s',_0xd8ea52,_0x294d19['error']['message']);return _0x1e0d7c(_0x294d19[_0x0d1f('0x10')][_0x0d1f('0x12')]);}else{logger['info'](_0x0d1f('0xc'),_0xd8ea52,'request\x20sent');_0x1e0d7c(_0x294d19[_0x0d1f('0x13')]['message']);}})[_0x0d1f('0x14')](function(_0x50baef){logger[_0x0d1f('0x10')](_0x0d1f('0xc'),_0xd8ea52,_0x50baef);_0x43e35d(_0x50baef);});});}exports[_0x0d1f('0x15')]=function(_0x12b737){var _0x32facb=this;return new Promise(function(_0x28f91a,_0x3f90d2){return db[_0x0d1f('0x16')]['create'](_0x12b737[_0x0d1f('0x17')],{'raw':_0x12b737[_0x0d1f('0x18')]?_0x12b737['options'][_0x0d1f('0x19')]===undefined?!![]:![]:!![]})[_0x0d1f('0xa')](function(_0x50d775){logger[_0x0d1f('0xb')]('CreateWhatsappQueueReport',_0x12b737);logger[_0x0d1f('0xe')](_0x0d1f('0x15'),_0x12b737,JSON[_0x0d1f('0xf')](_0x50d775));_0x28f91a(_0x50d775);})[_0x0d1f('0x14')](function(_0x5ce26b){logger[_0x0d1f('0x10')](_0x0d1f('0x15'),_0x5ce26b[_0x0d1f('0x12')],_0x12b737);_0x3f90d2(_0x32facb[_0x0d1f('0x10')](0x1f4,_0x5ce26b['message']));});});};exports[_0x0d1f('0x1a')]=function(_0x5670f8){var _0x349580=this;return new Promise(function(_0x135a72,_0x499650){return db[_0x0d1f('0x16')][_0x0d1f('0x1b')](_0x5670f8[_0x0d1f('0x17')],{'raw':_0x5670f8['options']?_0x5670f8[_0x0d1f('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5670f8[_0x0d1f('0x18')]?_0x5670f8[_0x0d1f('0x18')][_0x0d1f('0x1c')]||null:null,'attributes':_0x5670f8[_0x0d1f('0x18')]?_0x5670f8[_0x0d1f('0x18')][_0x0d1f('0x1d')]||null:null,'limit':_0x5670f8['options']?_0x5670f8['options'][_0x0d1f('0x1e')]||null:null})[_0x0d1f('0xa')](function(_0x1db9db){logger[_0x0d1f('0xb')](_0x0d1f('0x1a'),_0x5670f8);logger[_0x0d1f('0xe')]('UpdateWhatsappQueueReport',_0x5670f8,JSON['stringify'](_0x1db9db));_0x135a72(_0x1db9db);})[_0x0d1f('0x14')](function(_0x1aa6b3){logger[_0x0d1f('0x10')](_0x0d1f('0x1a'),_0x1aa6b3[_0x0d1f('0x12')],_0x5670f8);_0x499650(_0x349580[_0x0d1f('0x10')](0x1f4,_0x1aa6b3[_0x0d1f('0x12')]));});});};
\ No newline at end of file
index db883cc..9018702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5134=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x1c5d0d,_0x150f5c){var _0x5ebf5f=function(_0x4891a6){while(--_0x4891a6){_0x1c5d0d['push'](_0x1c5d0d['shift']());}};_0x5ebf5f(++_0x150f5c);}(_0x5134,0x14d));var _0x4513=function(_0x135904,_0x1e252b){_0x135904=_0x135904-0x0;var _0x1ce7d5=_0x5134[_0x135904];return _0x1ce7d5;};'use strict';var multer=require(_0x4513('0x0'));var util=require(_0x4513('0x1'));var path=require(_0x4513('0x2'));var timeout=require('connect-timeout');var express=require(_0x4513('0x3'));var router=express[_0x4513('0x4')]();var fs_extra=require(_0x4513('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4513('0x6'));var config=require(_0x4513('0x7'));var controller=require(_0x4513('0x8'));router[_0x4513('0x9')]('/',auth[_0x4513('0xa')](),controller[_0x4513('0xb')]);router[_0x4513('0x9')]('/describe',auth[_0x4513('0xa')](),controller[_0x4513('0xc')]);router['get'](_0x4513('0xd'),auth[_0x4513('0xa')](),controller[_0x4513('0xe')]);router['post']('/',auth[_0x4513('0xa')](),controller[_0x4513('0xf')]);router[_0x4513('0x10')](_0x4513('0xd'),auth[_0x4513('0xa')](),controller[_0x4513('0x11')]);router[_0x4513('0x12')](_0x4513('0xd'),auth[_0x4513('0xa')](),controller[_0x4513('0x13')]);module[_0x4513('0x14')]=router;
\ No newline at end of file
+var _0xed70=['./whatsappTransferReport.controller','get','index','describe','/:id','isAuthenticated','post','put','update','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x33491c,_0x1d26fb){var _0x3477bf=function(_0x850835){while(--_0x850835){_0x33491c['push'](_0x33491c['shift']());}};_0x3477bf(++_0x1d26fb);}(_0xed70,0x13c));var _0x0ed7=function(_0x5f5b10,_0x9142ab){_0x5f5b10=_0x5f5b10-0x0;var _0x13a9d7=_0xed70[_0x5f5b10];return _0x13a9d7;};'use strict';var multer=require(_0x0ed7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0ed7('0x1'));var express=require(_0x0ed7('0x2'));var router=express[_0x0ed7('0x3')]();var fs_extra=require(_0x0ed7('0x4'));var auth=require(_0x0ed7('0x5'));var interaction=require(_0x0ed7('0x6'));var config=require(_0x0ed7('0x7'));var controller=require(_0x0ed7('0x8'));router[_0x0ed7('0x9')]('/',auth['isAuthenticated'](),controller[_0x0ed7('0xa')]);router[_0x0ed7('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x0ed7('0xb')]);router['get'](_0x0ed7('0xc'),auth[_0x0ed7('0xd')](),controller['show']);router[_0x0ed7('0xe')]('/',auth[_0x0ed7('0xd')](),controller['create']);router[_0x0ed7('0xf')](_0x0ed7('0xc'),auth[_0x0ed7('0xd')](),controller[_0x0ed7('0x10')]);router['delete'](_0x0ed7('0xc'),auth['isAuthenticated'](),controller[_0x0ed7('0x11')]);module['exports']=router;
\ No newline at end of file
index 470f058..2f18907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f56=['exports','STRING','ENUM','agent','queue','DATE','sequelize'];(function(_0x1680c2,_0x5d1f59){var _0x521791=function(_0x3b4734){while(--_0x3b4734){_0x1680c2['push'](_0x1680c2['shift']());}};_0x521791(++_0x5d1f59);}(_0x2f56,0xb5));var _0x62f5=function(_0x21ea83,_0x28600c){_0x21ea83=_0x21ea83-0x0;var _0x23714d=_0x2f56[_0x21ea83];return _0x23714d;};'use strict';var Sequelize=require(_0x62f5('0x0'));module[_0x62f5('0x1')]={'uniqueid':{'type':Sequelize[_0x62f5('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x62f5('0x3')]('account',_0x62f5('0x4'),_0x62f5('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x62f5('0x6')]}};
\ No newline at end of file
+var _0xe605=['exports','ENUM','account','agent','queue','DATE','sequelize'];(function(_0x2993ab,_0x569537){var _0x28e1e7=function(_0x1a12f1){while(--_0x1a12f1){_0x2993ab['push'](_0x2993ab['shift']());}};_0x28e1e7(++_0x569537);}(_0xe605,0x92));var _0x5e60=function(_0x1a3868,_0xed03fb){_0x1a3868=_0x1a3868-0x0;var _0x296c1a=_0xe605[_0x1a3868];return _0x296c1a;};'use strict';var Sequelize=require(_0x5e60('0x0'));module[_0x5e60('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x5e60('0x2')](_0x5e60('0x3'),_0x5e60('0x4'),_0x5e60('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x5e60('0x6')]}};
\ No newline at end of file
index 7c561fc..7893f84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4373=['length','hasOwnProperty','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','keys','intersection','fields','options','create','body','find','describe','eml-format','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','key','model','query','attributes'];(function(_0x3856dd,_0x435ac5){var _0x558be3=function(_0x2d5ce6){while(--_0x2d5ce6){_0x3856dd['push'](_0x3856dd['shift']());}};_0x558be3(++_0x435ac5);}(_0x4373,0xfe));var _0x3437=function(_0x42bcf7,_0x19174c){_0x42bcf7=_0x42bcf7-0x0;var _0x59d8e1=_0x4373[_0x42bcf7];return _0x59d8e1;};'use strict';var emlformat=require(_0x3437('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3437('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3437('0x2'));var Mustache=require(_0x3437('0x3'));var util=require(_0x3437('0x4'));var path=require(_0x3437('0x5'));var sox=require('sox');var csv=require(_0x3437('0x6'));var ejs=require(_0x3437('0x7'));var fs=require('fs');var fs_extra=require(_0x3437('0x8'));var _=require(_0x3437('0x9'));var squel=require(_0x3437('0xa'));var crypto=require(_0x3437('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3437('0x6'));var querystring=require(_0x3437('0xc'));var Papa=require('papaparse');var Redis=require(_0x3437('0xd'));var authService=require(_0x3437('0xe'));var qs=require(_0x3437('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3437('0x10'));var logger=require('../../config/logger')(_0x3437('0x11'));var utils=require('../../config/utils');var config=require(_0x3437('0x12'));var licenseUtil=require(_0x3437('0x13'));var db=require(_0x3437('0x14'))['db'];function respondWithStatusCode(_0x591dac,_0x4c9ae4){_0x4c9ae4=_0x4c9ae4||0xcc;return function(_0xbd1db7){if(_0xbd1db7){return _0x591dac[_0x3437('0x15')](_0x4c9ae4);}return _0x591dac['status'](_0x4c9ae4)['end']();};}function respondWithResult(_0x220314,_0x2cb114){_0x2cb114=_0x2cb114||0xc8;return function(_0x5cbe11){if(_0x5cbe11){return _0x220314[_0x3437('0x16')](_0x2cb114)['json'](_0x5cbe11);}};}function respondWithFilteredResult(_0x27eca1,_0x45fef8){return function(_0x557d95){if(_0x557d95){var _0x5620b1=typeof _0x45fef8[_0x3437('0x17')]===_0x3437('0x18')&&typeof _0x45fef8['limit']===_0x3437('0x18');var _0x7317c=_0x557d95[_0x3437('0x19')];var _0x40a644=_0x5620b1?0x0:_0x45fef8[_0x3437('0x17')];var _0x2ca559=_0x5620b1?_0x557d95['count']:_0x45fef8[_0x3437('0x17')]+_0x45fef8[_0x3437('0x1a')];var _0x52ed50;if(_0x2ca559>=_0x7317c){_0x2ca559=_0x7317c;_0x52ed50=0xc8;}else{_0x52ed50=0xce;}_0x27eca1[_0x3437('0x16')](_0x52ed50);return _0x27eca1[_0x3437('0x1b')](_0x3437('0x1c'),_0x40a644+'-'+_0x2ca559+'/'+_0x7317c)[_0x3437('0x1d')](_0x557d95);}return null;};}function patchUpdates(_0x273c83){return function(_0x25a4b8){try{jsonpatch[_0x3437('0x1e')](_0x25a4b8,_0x273c83,!![]);}catch(_0xea1b7a){return BPromise[_0x3437('0x1f')](_0xea1b7a);}return _0x25a4b8[_0x3437('0x20')]();};}function saveUpdates(_0x54f997,_0x1d43a3){return function(_0x813a35){if(_0x813a35){return _0x813a35[_0x3437('0x21')](_0x54f997)[_0x3437('0x22')](function(_0x4c17de){return _0x4c17de;});}return null;};}function removeEntity(_0x349bb2,_0x4f7618){return function(_0x18f620){if(_0x18f620){return _0x18f620[_0x3437('0x23')]()[_0x3437('0x22')](function(){_0x349bb2[_0x3437('0x16')](0xcc)[_0x3437('0x24')]();});}};}function handleEntityNotFound(_0x9cf0c0,_0x5cde36){return function(_0x2d01e8){if(!_0x2d01e8){_0x9cf0c0[_0x3437('0x15')](0x194);}return _0x2d01e8;};}function handleError(_0x44e759,_0x3f9463){_0x3f9463=_0x3f9463||0x1f4;return function(_0x4fe408){logger[_0x3437('0x25')](_0x4fe408[_0x3437('0x26')]);if(_0x4fe408[_0x3437('0x27')]){delete _0x4fe408[_0x3437('0x27')];}_0x44e759['status'](_0x3f9463)[_0x3437('0x28')](_0x4fe408);};}exports[_0x3437('0x29')]=function(_0x2f4a3b,_0x876740){var _0x3eb16d={},_0x348f4a={},_0x3e62dd={'count':0x0,'rows':[]};var _0x175faf=_[_0x3437('0x2a')](db[_0x3437('0x2b')][_0x3437('0x2c')],function(_0x377ec5){return{'name':_0x377ec5[_0x3437('0x2d')],'type':_0x377ec5['type'][_0x3437('0x2e')]};});_0x348f4a[_0x3437('0x2f')]=_[_0x3437('0x2a')](_0x175faf,'name');_0x348f4a[_0x3437('0x30')]=_['keys'](_0x2f4a3b[_0x3437('0x30')]);_0x348f4a['filters']=_['intersection'](_0x348f4a[_0x3437('0x2f')],_0x348f4a[_0x3437('0x30')]);_0x3eb16d['attributes']=_['intersection'](_0x348f4a['model'],qs['fields'](_0x2f4a3b[_0x3437('0x30')]['fields']));_0x3eb16d[_0x3437('0x31')]=_0x3eb16d['attributes'][_0x3437('0x32')]?_0x3eb16d['attributes']:_0x348f4a[_0x3437('0x2f')];if(!_0x2f4a3b['query'][_0x3437('0x33')]('nolimit')){_0x3eb16d[_0x3437('0x1a')]=qs[_0x3437('0x1a')](_0x2f4a3b[_0x3437('0x30')][_0x3437('0x1a')]);_0x3eb16d[_0x3437('0x17')]=qs[_0x3437('0x17')](_0x2f4a3b[_0x3437('0x30')][_0x3437('0x17')]);}_0x3eb16d[_0x3437('0x34')]=qs[_0x3437('0x35')](_0x2f4a3b['query'][_0x3437('0x35')]);_0x3eb16d[_0x3437('0x36')]=qs[_0x3437('0x37')](_[_0x3437('0x38')](_0x2f4a3b[_0x3437('0x30')],_0x348f4a[_0x3437('0x37')]),_0x175faf);if(_0x2f4a3b[_0x3437('0x30')][_0x3437('0x39')]){_0x3eb16d[_0x3437('0x36')]=_['merge'](_0x3eb16d[_0x3437('0x36')],{'$or':_[_0x3437('0x2a')](_0x175faf,function(_0x4c5fcf){if(_0x4c5fcf[_0x3437('0x3a')]!==_0x3437('0x3b')){var _0x52b1bc={};_0x52b1bc[_0x4c5fcf['name']]={'$like':'%'+_0x2f4a3b[_0x3437('0x30')]['filter']+'%'};return _0x52b1bc;}})});}_0x3eb16d=_[_0x3437('0x3c')]({},_0x3eb16d,_0x2f4a3b['options']);var _0x5d9459={'where':_0x3eb16d['where']};return db['WhatsappTransferReport'][_0x3437('0x19')](_0x5d9459)[_0x3437('0x22')](function(_0x5ae7a7){_0x3e62dd[_0x3437('0x19')]=_0x5ae7a7;if(_0x2f4a3b['query'][_0x3437('0x3d')]){_0x3eb16d[_0x3437('0x3e')]=[{'all':!![]}];}return db[_0x3437('0x2b')][_0x3437('0x3f')](_0x3eb16d);})[_0x3437('0x22')](function(_0xdbdcd0){_0x3e62dd[_0x3437('0x40')]=_0xdbdcd0;return _0x3e62dd;})[_0x3437('0x22')](respondWithFilteredResult(_0x876740,_0x3eb16d))[_0x3437('0x41')](handleError(_0x876740,null));};exports[_0x3437('0x42')]=function(_0xdc0612,_0x4ef6c5){var _0x5aecec={'raw':!![],'where':{'id':_0xdc0612[_0x3437('0x43')]['id']}},_0x171e7f={};_0x171e7f[_0x3437('0x2f')]=_[_0x3437('0x44')](db['WhatsappTransferReport'][_0x3437('0x2c')]);_0x171e7f[_0x3437('0x30')]=_[_0x3437('0x44')](_0xdc0612[_0x3437('0x30')]);_0x171e7f['filters']=_[_0x3437('0x45')](_0x171e7f[_0x3437('0x2f')],_0x171e7f['query']);_0x5aecec[_0x3437('0x31')]=_[_0x3437('0x45')](_0x171e7f[_0x3437('0x2f')],qs[_0x3437('0x46')](_0xdc0612[_0x3437('0x30')][_0x3437('0x46')]));_0x5aecec[_0x3437('0x31')]=_0x5aecec['attributes'][_0x3437('0x32')]?_0x5aecec[_0x3437('0x31')]:_0x171e7f[_0x3437('0x2f')];if(_0xdc0612[_0x3437('0x30')][_0x3437('0x3d')]){_0x5aecec[_0x3437('0x3e')]=[{'all':!![]}];}_0x5aecec=_['merge']({},_0x5aecec,_0xdc0612[_0x3437('0x47')]);return db['WhatsappTransferReport']['find'](_0x5aecec)[_0x3437('0x22')](handleEntityNotFound(_0x4ef6c5,null))[_0x3437('0x22')](respondWithResult(_0x4ef6c5,null))[_0x3437('0x41')](handleError(_0x4ef6c5,null));};exports[_0x3437('0x48')]=function(_0x200c87,_0x4d953b){return db[_0x3437('0x2b')][_0x3437('0x48')](_0x200c87[_0x3437('0x49')],{})['then'](respondWithResult(_0x4d953b,0xc9))[_0x3437('0x41')](handleError(_0x4d953b,null));};exports[_0x3437('0x21')]=function(_0x308d95,_0x498ad2){if(_0x308d95[_0x3437('0x49')]['id']){delete _0x308d95[_0x3437('0x49')]['id'];}return db['WhatsappTransferReport'][_0x3437('0x4a')]({'where':{'id':_0x308d95['params']['id']}})[_0x3437('0x22')](handleEntityNotFound(_0x498ad2,null))['then'](saveUpdates(_0x308d95[_0x3437('0x49')],null))[_0x3437('0x22')](respondWithResult(_0x498ad2,null))['catch'](handleError(_0x498ad2,null));};exports[_0x3437('0x23')]=function(_0x2d2fc0,_0x57eb87){return db[_0x3437('0x2b')][_0x3437('0x4a')]({'where':{'id':_0x2d2fc0['params']['id']}})['then'](handleEntityNotFound(_0x57eb87,null))[_0x3437('0x22')](removeEntity(_0x57eb87,null))[_0x3437('0x41')](handleError(_0x57eb87,null));};exports[_0x3437('0x4b')]=function(_0x44a9cb,_0x43fa20){return db[_0x3437('0x2b')]['describe']()['then'](respondWithResult(_0x43fa20,null))[_0x3437('0x41')](handleError(_0x43fa20,null));};
\ No newline at end of file
+var _0x7764=['undefined','count','limit','set','Content-Range','reject','destroy','then','status','error','stack','name','index','map','WhatsappTransferReport','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset'];(function(_0x15db99,_0x1eed6d){var _0x3a0a3c=function(_0x49e39d){while(--_0x49e39d){_0x15db99['push'](_0x15db99['shift']());}};_0x3a0a3c(++_0x1eed6d);}(_0x7764,0x120));var _0x4776=function(_0x43776a,_0x4eb74c){_0x43776a=_0x43776a-0x0;var _0x18eb8f=_0x7764[_0x43776a];return _0x18eb8f;};'use strict';var emlformat=require(_0x4776('0x0'));var rimraf=require(_0x4776('0x1'));var zipdir=require(_0x4776('0x2'));var jsonpatch=require(_0x4776('0x3'));var rp=require(_0x4776('0x4'));var moment=require(_0x4776('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4776('0x6'));var util=require('util');var path=require(_0x4776('0x7'));var sox=require(_0x4776('0x8'));var csv=require(_0x4776('0x9'));var ejs=require(_0x4776('0xa'));var fs=require('fs');var fs_extra=require(_0x4776('0xb'));var _=require(_0x4776('0xc'));var squel=require('squel');var crypto=require(_0x4776('0xd'));var jsforce=require(_0x4776('0xe'));var deskjs=require(_0x4776('0xf'));var toCsv=require(_0x4776('0x9'));var querystring=require(_0x4776('0x10'));var Papa=require(_0x4776('0x11'));var Redis=require(_0x4776('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x4776('0x13'));var as=require(_0x4776('0x14'));var hardwareService=require(_0x4776('0x15'));var logger=require(_0x4776('0x16'))(_0x4776('0x17'));var utils=require(_0x4776('0x18'));var config=require(_0x4776('0x19'));var licenseUtil=require(_0x4776('0x1a'));var db=require(_0x4776('0x1b'))['db'];function respondWithStatusCode(_0xeca4f1,_0x4ef502){_0x4ef502=_0x4ef502||0xcc;return function(_0x113f8a){if(_0x113f8a){return _0xeca4f1[_0x4776('0x1c')](_0x4ef502);}return _0xeca4f1['status'](_0x4ef502)[_0x4776('0x1d')]();};}function respondWithResult(_0x4211f6,_0x175011){_0x175011=_0x175011||0xc8;return function(_0x1403b0){if(_0x1403b0){return _0x4211f6['status'](_0x175011)[_0x4776('0x1e')](_0x1403b0);}};}function respondWithFilteredResult(_0x497f64,_0x154bd8){return function(_0x4782c3){if(_0x4782c3){var _0x1c314c=typeof _0x154bd8[_0x4776('0x1f')]===_0x4776('0x20')&&typeof _0x154bd8['limit']===_0x4776('0x20');var _0x14b382=_0x4782c3['count'];var _0x3583a3=_0x1c314c?0x0:_0x154bd8[_0x4776('0x1f')];var _0x1c8cf0=_0x1c314c?_0x4782c3[_0x4776('0x21')]:_0x154bd8['offset']+_0x154bd8[_0x4776('0x22')];var _0x49d68e;if(_0x1c8cf0>=_0x14b382){_0x1c8cf0=_0x14b382;_0x49d68e=0xc8;}else{_0x49d68e=0xce;}_0x497f64['status'](_0x49d68e);return _0x497f64[_0x4776('0x23')](_0x4776('0x24'),_0x3583a3+'-'+_0x1c8cf0+'/'+_0x14b382)[_0x4776('0x1e')](_0x4782c3);}return null;};}function patchUpdates(_0x30ca1a){return function(_0x575cbe){try{jsonpatch['apply'](_0x575cbe,_0x30ca1a,!![]);}catch(_0x1beccd){return BPromise[_0x4776('0x25')](_0x1beccd);}return _0x575cbe['save']();};}function saveUpdates(_0x3971d4,_0x49b80e){return function(_0x22e884){if(_0x22e884){return _0x22e884['update'](_0x3971d4)['then'](function(_0x57b322){return _0x57b322;});}return null;};}function removeEntity(_0x4fdc1f,_0x45cdcf){return function(_0x3316ee){if(_0x3316ee){return _0x3316ee[_0x4776('0x26')]()[_0x4776('0x27')](function(){_0x4fdc1f[_0x4776('0x28')](0xcc)[_0x4776('0x1d')]();});}};}function handleEntityNotFound(_0x1bce63,_0x27b39f){return function(_0x3e40b4){if(!_0x3e40b4){_0x1bce63['sendStatus'](0x194);}return _0x3e40b4;};}function handleError(_0x637466,_0x37f673){_0x37f673=_0x37f673||0x1f4;return function(_0x4fc30b){logger[_0x4776('0x29')](_0x4fc30b[_0x4776('0x2a')]);if(_0x4fc30b[_0x4776('0x2b')]){delete _0x4fc30b['name'];}_0x637466[_0x4776('0x28')](_0x37f673)['send'](_0x4fc30b);};}exports[_0x4776('0x2c')]=function(_0x20eb1c,_0x58511d){var _0x2873f8={},_0x5c3048={},_0x3754f8={'count':0x0,'rows':[]};var _0x33396b=_[_0x4776('0x2d')](db[_0x4776('0x2e')]['rawAttributes'],function(_0x171578){return{'name':_0x171578[_0x4776('0x2f')],'type':_0x171578[_0x4776('0x30')][_0x4776('0x31')]};});_0x5c3048[_0x4776('0x32')]=_[_0x4776('0x2d')](_0x33396b,'name');_0x5c3048[_0x4776('0x33')]=_['keys'](_0x20eb1c['query']);_0x5c3048[_0x4776('0x34')]=_[_0x4776('0x35')](_0x5c3048[_0x4776('0x32')],_0x5c3048['query']);_0x2873f8['attributes']=_[_0x4776('0x35')](_0x5c3048['model'],qs[_0x4776('0x36')](_0x20eb1c[_0x4776('0x33')][_0x4776('0x36')]));_0x2873f8[_0x4776('0x37')]=_0x2873f8[_0x4776('0x37')][_0x4776('0x38')]?_0x2873f8[_0x4776('0x37')]:_0x5c3048[_0x4776('0x32')];if(!_0x20eb1c['query'][_0x4776('0x39')](_0x4776('0x3a'))){_0x2873f8[_0x4776('0x22')]=qs[_0x4776('0x22')](_0x20eb1c[_0x4776('0x33')]['limit']);_0x2873f8['offset']=qs[_0x4776('0x1f')](_0x20eb1c[_0x4776('0x33')][_0x4776('0x1f')]);}_0x2873f8[_0x4776('0x3b')]=qs[_0x4776('0x3c')](_0x20eb1c[_0x4776('0x33')]['sort']);_0x2873f8[_0x4776('0x3d')]=qs[_0x4776('0x34')](_[_0x4776('0x3e')](_0x20eb1c[_0x4776('0x33')],_0x5c3048[_0x4776('0x34')]),_0x33396b);if(_0x20eb1c[_0x4776('0x33')][_0x4776('0x3f')]){_0x2873f8['where']=_['merge'](_0x2873f8[_0x4776('0x3d')],{'$or':_['map'](_0x33396b,function(_0x13299f){if(_0x13299f['type']!==_0x4776('0x40')){var _0x58d18a={};_0x58d18a[_0x13299f[_0x4776('0x2b')]]={'$like':'%'+_0x20eb1c[_0x4776('0x33')]['filter']+'%'};return _0x58d18a;}})});}_0x2873f8=_[_0x4776('0x41')]({},_0x2873f8,_0x20eb1c[_0x4776('0x42')]);var _0x5de1f8={'where':_0x2873f8[_0x4776('0x3d')]};return db[_0x4776('0x2e')][_0x4776('0x21')](_0x5de1f8)[_0x4776('0x27')](function(_0x220daf){_0x3754f8[_0x4776('0x21')]=_0x220daf;if(_0x20eb1c['query']['includeAll']){_0x2873f8[_0x4776('0x43')]=[{'all':!![]}];}return db[_0x4776('0x2e')][_0x4776('0x44')](_0x2873f8);})[_0x4776('0x27')](function(_0x728eb8){_0x3754f8[_0x4776('0x45')]=_0x728eb8;return _0x3754f8;})[_0x4776('0x27')](respondWithFilteredResult(_0x58511d,_0x2873f8))[_0x4776('0x46')](handleError(_0x58511d,null));};exports[_0x4776('0x47')]=function(_0x2bcab8,_0x50b0d6){var _0x30b991={'raw':!![],'where':{'id':_0x2bcab8[_0x4776('0x48')]['id']}},_0x1a1234={};_0x1a1234['model']=_[_0x4776('0x49')](db[_0x4776('0x2e')][_0x4776('0x4a')]);_0x1a1234['query']=_[_0x4776('0x49')](_0x2bcab8[_0x4776('0x33')]);_0x1a1234[_0x4776('0x34')]=_[_0x4776('0x35')](_0x1a1234[_0x4776('0x32')],_0x1a1234[_0x4776('0x33')]);_0x30b991[_0x4776('0x37')]=_['intersection'](_0x1a1234[_0x4776('0x32')],qs['fields'](_0x2bcab8[_0x4776('0x33')][_0x4776('0x36')]));_0x30b991['attributes']=_0x30b991[_0x4776('0x37')]['length']?_0x30b991[_0x4776('0x37')]:_0x1a1234[_0x4776('0x32')];if(_0x2bcab8[_0x4776('0x33')]['includeAll']){_0x30b991['include']=[{'all':!![]}];}_0x30b991=_['merge']({},_0x30b991,_0x2bcab8[_0x4776('0x42')]);return db[_0x4776('0x2e')][_0x4776('0x4b')](_0x30b991)[_0x4776('0x27')](handleEntityNotFound(_0x50b0d6,null))[_0x4776('0x27')](respondWithResult(_0x50b0d6,null))[_0x4776('0x46')](handleError(_0x50b0d6,null));};exports[_0x4776('0x4c')]=function(_0xa6a618,_0x40f3c2){return db[_0x4776('0x2e')]['create'](_0xa6a618['body'],{})[_0x4776('0x27')](respondWithResult(_0x40f3c2,0xc9))[_0x4776('0x46')](handleError(_0x40f3c2,null));};exports[_0x4776('0x4d')]=function(_0x53130f,_0x17e18b){if(_0x53130f[_0x4776('0x4e')]['id']){delete _0x53130f[_0x4776('0x4e')]['id'];}return db[_0x4776('0x2e')][_0x4776('0x4b')]({'where':{'id':_0x53130f[_0x4776('0x48')]['id']}})[_0x4776('0x27')](handleEntityNotFound(_0x17e18b,null))[_0x4776('0x27')](saveUpdates(_0x53130f[_0x4776('0x4e')],null))[_0x4776('0x27')](respondWithResult(_0x17e18b,null))[_0x4776('0x46')](handleError(_0x17e18b,null));};exports[_0x4776('0x26')]=function(_0x1c57d3,_0x26d07f){return db[_0x4776('0x2e')][_0x4776('0x4b')]({'where':{'id':_0x1c57d3[_0x4776('0x48')]['id']}})[_0x4776('0x27')](handleEntityNotFound(_0x26d07f,null))['then'](removeEntity(_0x26d07f,null))['catch'](handleError(_0x26d07f,null));};exports[_0x4776('0x4f')]=function(_0x255868,_0x3fa0d7){return db[_0x4776('0x2e')][_0x4776('0x4f')]()['then'](respondWithResult(_0x3fa0d7,null))[_0x4776('0x46')](handleError(_0x3fa0d7,null));};
\ No newline at end of file
index 0a66637..2370cbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf58d=['util','../../config/logger','moment','bluebird','request-promise','rimraf','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash'];(function(_0x163040,_0x38a58c){var _0x364667=function(_0x3b104f){while(--_0x3b104f){_0x163040['push'](_0x163040['shift']());}};_0x364667(++_0x38a58c);}(_0xf58d,0x128));var _0xdf58=function(_0x530129,_0x5cf11f){_0x530129=_0x530129-0x0;var _0x408ac5=_0xf58d[_0x530129];return _0x408ac5;};'use strict';var _=require(_0xdf58('0x0'));var util=require(_0xdf58('0x1'));var logger=require(_0xdf58('0x2'))('api');var moment=require(_0xdf58('0x3'));var BPromise=require(_0xdf58('0x4'));var rp=require(_0xdf58('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf58('0x6'));var config=require('../../config/environment');var attributes=require('./whatsappTransferReport.attributes');module[_0xdf58('0x7')]=function(_0x5bf794,_0xf35ed7){return _0x5bf794['define'](_0xdf58('0x8'),attributes,{'tableName':_0xdf58('0x9'),'paranoid':![],'indexes':[{'name':_0xdf58('0xa'),'fields':[_0xdf58('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbea1=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','bluebird','rimraf','../../config/environment','define'];(function(_0x2b1e20,_0x5e0d99){var _0x337275=function(_0x18608d){while(--_0x18608d){_0x2b1e20['push'](_0x2b1e20['shift']());}};_0x337275(++_0x5e0d99);}(_0xbea1,0x1dc));var _0x1bea=function(_0x5aa17c,_0x5892b1){_0x5aa17c=_0x5aa17c-0x0;var _0x1d886b=_0xbea1[_0x5aa17c];return _0x1d886b;};'use strict';var _=require(_0x1bea('0x0'));var util=require(_0x1bea('0x1'));var logger=require('../../config/logger')(_0x1bea('0x2'));var moment=require(_0x1bea('0x3'));var BPromise=require(_0x1bea('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1bea('0x5'));var config=require(_0x1bea('0x6'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x7548a5,_0x4c812b){return _0x7548a5[_0x1bea('0x7')](_0x1bea('0x8'),attributes,{'tableName':_0x1bea('0x9'),'paranoid':![],'indexes':[{'name':_0x1bea('0xa'),'fields':[_0x1bea('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b36ec04..473858c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x133a=['message','info','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x20fa99,_0x44414e){var _0x1a4e02=function(_0x4326e0){while(--_0x4326e0){_0x20fa99['push'](_0x20fa99['shift']());}};_0x1a4e02(++_0x44414e);}(_0x133a,0x17d));var _0xa133=function(_0x114f87,_0x128e6e){_0x114f87=_0x114f87-0x0;var _0xbf0eb8=_0x133a[_0x114f87];return _0xbf0eb8;};'use strict';var _=require(_0xa133('0x0'));var util=require('util');var moment=require(_0xa133('0x1'));var BPromise=require('bluebird');var rs=require(_0xa133('0x2'));var fs=require('fs');var Redis=require(_0xa133('0x3'));var db=require(_0xa133('0x4'))['db'];var utils=require(_0xa133('0x5'));var logger=require(_0xa133('0x6'))(_0xa133('0x7'));var config=require(_0xa133('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa133('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x370d42,_0x2d6ea6,_0x8a1780){return new BPromise(function(_0x3a5550,_0x45299d){return client[_0xa133('0xa')](_0x370d42,_0x8a1780)[_0xa133('0xb')](function(_0x3e44c2){logger['info'](_0xa133('0xc'),_0x2d6ea6,_0xa133('0xd'));logger[_0xa133('0xe')](_0xa133('0xf'),_0x2d6ea6,_0xa133('0xd'),JSON['stringify'](_0x3e44c2));if(_0x3e44c2[_0xa133('0x10')]){if(_0x3e44c2[_0xa133('0x10')][_0xa133('0x11')]===0x1f4){logger[_0xa133('0x10')](_0xa133('0xc'),_0x2d6ea6,_0x3e44c2['error'][_0xa133('0x12')]);return _0x45299d(_0x3e44c2[_0xa133('0x10')][_0xa133('0x12')]);}logger[_0xa133('0x10')](_0xa133('0xc'),_0x2d6ea6,_0x3e44c2[_0xa133('0x10')]['message']);return _0x3a5550(_0x3e44c2[_0xa133('0x10')]['message']);}else{logger[_0xa133('0x13')](_0xa133('0xc'),_0x2d6ea6,_0xa133('0xd'));_0x3a5550(_0x3e44c2['result']['message']);}})[_0xa133('0x14')](function(_0x3100ec){logger[_0xa133('0x10')](_0xa133('0xc'),_0x2d6ea6,_0x3100ec);_0x45299d(_0x3100ec);});});}
\ No newline at end of file
+var _0x2fff=['code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1c0789,_0x5a14ba){var _0x22566e=function(_0xd87712){while(--_0xd87712){_0x1c0789['push'](_0x1c0789['shift']());}};_0x22566e(++_0x5a14ba);}(_0x2fff,0x1d1));var _0xf2ff=function(_0x3ceeb4,_0x9e1f78){_0x3ceeb4=_0x3ceeb4-0x0;var _0x22ff88=_0x2fff[_0x3ceeb4];return _0x22ff88;};'use strict';var _=require('lodash');var util=require(_0xf2ff('0x0'));var moment=require(_0xf2ff('0x1'));var BPromise=require(_0xf2ff('0x2'));var rs=require(_0xf2ff('0x3'));var fs=require('fs');var Redis=require(_0xf2ff('0x4'));var db=require(_0xf2ff('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf2ff('0x6'))('rpc');var config=require(_0xf2ff('0x7'));var jayson=require(_0xf2ff('0x8'));var client=jayson['client'][_0xf2ff('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb0756b,_0x24dfe9,_0x1d0a03){return new BPromise(function(_0x39dcb1,_0xadc34b){return client[_0xf2ff('0xa')](_0xb0756b,_0x1d0a03)[_0xf2ff('0xb')](function(_0x592079){logger['info'](_0xf2ff('0xc'),_0x24dfe9,'request\x20sent');logger[_0xf2ff('0xd')](_0xf2ff('0xe'),_0x24dfe9,_0xf2ff('0xf'),JSON[_0xf2ff('0x10')](_0x592079));if(_0x592079['error']){if(_0x592079[_0xf2ff('0x11')][_0xf2ff('0x12')]===0x1f4){logger[_0xf2ff('0x11')](_0xf2ff('0xc'),_0x24dfe9,_0x592079[_0xf2ff('0x11')]['message']);return _0xadc34b(_0x592079[_0xf2ff('0x11')][_0xf2ff('0x13')]);}logger[_0xf2ff('0x11')](_0xf2ff('0xc'),_0x24dfe9,_0x592079[_0xf2ff('0x11')][_0xf2ff('0x13')]);return _0x39dcb1(_0x592079[_0xf2ff('0x11')][_0xf2ff('0x13')]);}else{logger[_0xf2ff('0x14')](_0xf2ff('0xc'),_0x24dfe9,_0xf2ff('0xf'));_0x39dcb1(_0x592079[_0xf2ff('0x15')][_0xf2ff('0x13')]);}})[_0xf2ff('0x16')](function(_0x5e68fc){logger['error'](_0xf2ff('0xc'),_0x24dfe9,_0x5e68fc);_0xadc34b(_0x5e68fc);});});}
\ No newline at end of file
index 92f9bed..68f4854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bce=['Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','start','filter','exitCode','number','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','info','Online\x20apps:','Offline\x20apps:','online','None','log'];(function(_0x5877f3,_0x53e591){var _0xe3a99e=function(_0x612d48){while(--_0x612d48){_0x5877f3['push'](_0x5877f3['shift']());}};_0xe3a99e(++_0x53e591);}(_0x1bce,0x73));var _0xe1bc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1bce[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe1bc('0x0'));var db=require(_0xe1bc('0x1'))['db'];var seedDb=require('./config/seedDB');var checkLicense=require(_0xe1bc('0x2'));var rpc=require(_0xe1bc('0x3'));var config=require(_0xe1bc('0x4'));var logger=require(_0xe1bc('0x5'))(_0xe1bc('0x6'));var pm2=require(_0xe1bc('0x7'));var pm2Config=require(_0xe1bc('0x8'));var schedule=require(_0xe1bc('0x9'));var chat=require(_0xe1bc('0xa'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require('./config/schedule/transcribe');var provider=require(_0xe1bc('0xb'));function main(){return db[_0xe1bc('0xc')][_0xe1bc('0xd')]()[_0xe1bc('0xe')](function(){if(config[_0xe1bc('0xf')]){return seedDb[_0xe1bc('0x10')]();}})['then'](function(){return checkLicense[_0xe1bc('0x10')]();})['then'](function(){return rpc[_0xe1bc('0x11')]();})[_0xe1bc('0xe')](function(_0x43e2b8){logger['info'](_0x43e2b8);return chat[_0xe1bc('0x12')]();})[_0xe1bc('0xe')](function(){return whatsapp['start']();})[_0xe1bc('0xe')](function(){return schedule[_0xe1bc('0x12')]();})['then'](function(){return transcribe['start']();})[_0xe1bc('0xe')](function(){return provider[_0xe1bc('0x12')]();})[_0xe1bc('0xe')](function(_0x548b87){logger['info'](_0x548b87);return pm2[_0xe1bc('0x12')](pm2Config);})[_0xe1bc('0xe')](function(_0x402a22){var _0x4fd1aa=_0x402a22[_0xe1bc('0x13')](function(_0x3a073e){return typeof _0x3a073e[_0xe1bc('0x14')]===_0xe1bc('0x15')&&_0x3a073e['exitCode']>=0x0;});if(_0x4fd1aa[_0xe1bc('0x16')]>0x0){throw new Error(_0x4fd1aa['length']+_0xe1bc('0x17')+_[_0xe1bc('0x18')](_0x4fd1aa,function(_0x4acd5b){return'\x22'+_0x4acd5b[_0xe1bc('0x19')][_0xe1bc('0x1a')]+'\x22';}));}logger[_0xe1bc('0x1b')](_0xe1bc('0x1c'),_[_0xe1bc('0x18')](_[_0xe1bc('0x13')](_0x402a22,{'status':'online'}),_0xe1bc('0x1a'))['join']());logger[_0xe1bc('0x1b')](_0xe1bc('0x1d'),_[_0xe1bc('0x18')](_[_0xe1bc('0x13')](_0x402a22,function(_0x2a79f1){return _0x2a79f1['status']!==_0xe1bc('0x1e');}),'name')['join']()||_0xe1bc('0x1f'));console[_0xe1bc('0x20')]('App\x20Ready!');})['catch'](function(_0x39a634){console[_0xe1bc('0x20')](_0xe1bc('0x21'),_0x39a634);logger[_0xe1bc('0x22')](_0xe1bc('0x23'),_0x39a634);process[_0xe1bc('0x24')](0x1);});}main();
\ No newline at end of file
+var _0x4fb4=['filter','exitCode','number','length','map','pm2_env','name','Online\x20apps:','online','join','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','then','seedDB','default','listen','info','start'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x4fb4,0x190));var _0x44fb=function(_0x331901,_0x22b186){_0x331901=_0x331901-0x0;var _0x31c9c3=_0x4fb4[_0x331901];return _0x31c9c3;};'use strict';var _=require('lodash');var db=require(_0x44fb('0x0'))['db'];var seedDb=require(_0x44fb('0x1'));var checkLicense=require(_0x44fb('0x2'));var rpc=require(_0x44fb('0x3'));var config=require(_0x44fb('0x4'));var logger=require(_0x44fb('0x5'))('app');var pm2=require(_0x44fb('0x6'));var pm2Config=require(_0x44fb('0x7'));var schedule=require(_0x44fb('0x8'));var chat=require(_0x44fb('0x9'));var whatsapp=require(_0x44fb('0xa'));var transcribe=require(_0x44fb('0xb'));var provider=require(_0x44fb('0xc'));function main(){return db[_0x44fb('0xd')]['sync']()[_0x44fb('0xe')](function(){if(config[_0x44fb('0xf')]){return seedDb['default']();}})[_0x44fb('0xe')](function(){return checkLicense[_0x44fb('0x10')]();})[_0x44fb('0xe')](function(){return rpc[_0x44fb('0x11')]();})[_0x44fb('0xe')](function(_0x44c83b){logger[_0x44fb('0x12')](_0x44c83b);return chat[_0x44fb('0x13')]();})[_0x44fb('0xe')](function(){return whatsapp[_0x44fb('0x13')]();})['then'](function(){return schedule[_0x44fb('0x13')]();})[_0x44fb('0xe')](function(){return transcribe[_0x44fb('0x13')]();})[_0x44fb('0xe')](function(){return provider[_0x44fb('0x13')]();})['then'](function(_0x1fc8fa){logger[_0x44fb('0x12')](_0x1fc8fa);return pm2[_0x44fb('0x13')](pm2Config);})[_0x44fb('0xe')](function(_0x9a367d){var _0x4985ce=_0x9a367d[_0x44fb('0x14')](function(_0x18268c){return typeof _0x18268c[_0x44fb('0x15')]===_0x44fb('0x16')&&_0x18268c[_0x44fb('0x15')]>=0x0;});if(_0x4985ce[_0x44fb('0x17')]>0x0){throw new Error(_0x4985ce[_0x44fb('0x17')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0x44fb('0x18')](_0x4985ce,function(_0x21886d){return'\x22'+_0x21886d[_0x44fb('0x19')][_0x44fb('0x1a')]+'\x22';}));}logger[_0x44fb('0x12')](_0x44fb('0x1b'),_[_0x44fb('0x18')](_[_0x44fb('0x14')](_0x9a367d,{'status':_0x44fb('0x1c')}),_0x44fb('0x1a'))['join']());logger['info']('Offline\x20apps:',_[_0x44fb('0x18')](_[_0x44fb('0x14')](_0x9a367d,function(_0x2dd412){return _0x2dd412['status']!==_0x44fb('0x1c');}),_0x44fb('0x1a'))[_0x44fb('0x1d')]()||'None');console['log'](_0x44fb('0x1e'));})[_0x44fb('0x1f')](function(_0x441d79){console['log'](_0x44fb('0x20'),_0x441d79);logger[_0x44fb('0x21')](_0x44fb('0x22'),_0x441d79);process['exit'](0x1);});}main();
\ No newline at end of file
index 1a65803..83473ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['util','moment','session','role','fullname','name','internal','userpic','voicePause','chatPause','faxPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','params','closed','then','disposition','unmanaged','json','Forbidden.','headers','authorization','startsWith','Basic','User','find','authenticate','pass','status','Wrong\x20credentials.','catch','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','allowedLoginAttempts','blockDuration','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','apiKeyNonce','isNil','generateApiKey','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','length','join','promisify','secret','secrets','payload','options','randomBytes','toString','floor','now','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','express-jwt','basic-auth','crypto','bluebird'];(function(_0x3fbbce,_0x1c329e){var _0x464e16=function(_0x53b753){while(--_0x53b753){_0x3fbbce['push'](_0x3fbbce['shift']());}};_0x464e16(++_0x1c329e);}(_0x3e74,0x175));var _0x43e7=function(_0x16a8eb,_0x2204c4){_0x16a8eb=_0x16a8eb-0x0;var _0x486221=_0x3e74[_0x16a8eb];return _0x486221;};'use strict';var db=require(_0x43e7('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x43e7('0x1'));var licenseUtil=require(_0x43e7('0x2'));var encryptor=require(_0x43e7('0x3'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x43e7('0x4'));var compose=require('composable-middleware');var basicAuth=require(_0x43e7('0x5'));var crypto=require(_0x43e7('0x6'));var BPromise=require(_0x43e7('0x7'));var util=require(_0x43e7('0x8'));var moment=require(_0x43e7('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0x43e7('0xa')]});var userAttributes=['id',_0x43e7('0xb'),_0x43e7('0xc'),_0x43e7('0xd'),_0x43e7('0xe'),'email',_0x43e7('0xf'),'permissions','md5secret',_0x43e7('0x10'),_0x43e7('0x11'),'mailPause',_0x43e7('0x12'),'smsPause',_0x43e7('0x13'),_0x43e7('0x14'),'showWebBar',_0x43e7('0x15'),_0x43e7('0x16'),_0x43e7('0x17'),_0x43e7('0x18'),'passwordResetAt','alias',_0x43e7('0x19'),_0x43e7('0x1a'),_0x43e7('0x1b'),'phoneBarEnableRecording','phoneBarEnableDtmfTone',_0x43e7('0x1c'),_0x43e7('0x1d'),_0x43e7('0x1e'),_0x43e7('0x1f'),'phoneBarRemoteControlPort','hotdesk',_0x43e7('0x20'),_0x43e7('0x21'),_0x43e7('0x22'),'settingsEnabled','wssPort',_0x43e7('0x23'),_0x43e7('0x24'),_0x43e7('0x25'),_0x43e7('0x26'),_0x43e7('0x27'),_0x43e7('0x28'),_0x43e7('0x29'),_0x43e7('0x2a'),_0x43e7('0x2b'),_0x43e7('0x2c'),_0x43e7('0x2d'),_0x43e7('0x2e'),'openchannelAutoanswerDelay',_0x43e7('0x2f'),_0x43e7('0x30'),'whatsappAutoanswer',_0x43e7('0x31')];exports[_0x43e7('0x32')]=function(){return this[_0x43e7('0x33')](!![])[_0x43e7('0x34')](function(_0x4077fb,_0x2f4cb4,_0x54a9e7){if(_0x4077fb[_0x43e7('0x35')]){_0x54a9e7();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x4077fb[_0x43e7('0x36')]['id']},'attributes':['id',_0x43e7('0x37'),'disposition'],'raw':!![]})[_0x43e7('0x38')](function(_0x4ca5cf){if(_0x4ca5cf&&_0x4ca5cf[_0x43e7('0x37')]){return _0x2f4cb4['status'](_0x4ca5cf[_0x43e7('0x39')]===_0x43e7('0x3a')?0x195:0x193)[_0x43e7('0x3b')]({'message':_0x4ca5cf[_0x43e7('0x39')]==='unmanaged'?'Unmanaged.':_0x43e7('0x3c')});}else{_0x54a9e7();}})['catch'](function(_0x2dd5f){_0x54a9e7(_0x2dd5f);});}});};exports[_0x43e7('0x33')]=function isAuthenticated(_0x3565cf){return compose()[_0x43e7('0x34')](function(_0x5087d7,_0x33a1a5,_0x4690a6){var _0x45b675;if(_0x5087d7[_0x43e7('0x3d')][_0x43e7('0x3e')]){if(_[_0x43e7('0x3f')](_0x5087d7[_0x43e7('0x3d')][_0x43e7('0x3e')],_0x43e7('0x40'))){var _0x35dbcd=basicAuth(_0x5087d7);db[_0x43e7('0x41')][_0x43e7('0x42')]({'where':{'name':_0x35dbcd[_0x43e7('0xd')]}})[_0x43e7('0x38')](function(_0x4bdb17){if(!_0x4bdb17||!_0x4bdb17[_0x43e7('0x43')](_0x35dbcd[_0x43e7('0x44')])){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x46')});}_0x5087d7['user']={'id':_0x4bdb17['id']};_0x4690a6();})[_0x43e7('0x47')](function(_0x49b83d){_0x4690a6(_0x49b83d);});}else if(_[_0x43e7('0x3f')](_0x5087d7[_0x43e7('0x3d')]['authorization'],'Bearer')){validateJwt(_0x5087d7,_0x33a1a5,_0x4690a6);}else{if(_0x3565cf){_0x4690a6();}else{return _0x33a1a5['status'](0x193)[_0x43e7('0x3b')]({'message':_0x43e7('0x48')});}}}else if(_0x5087d7[_0x43e7('0x49')][_0x43e7('0x4a')]){try{var _0x108313={'audience':hardwareConf[_0x43e7('0x4b')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x5087d7['query']['apikey'],_0x108313)['then'](function(_0x4e8e86){return db['User']['find']({'where':{'id':_0x4e8e86[_0x43e7('0x4c')]}})['then'](function(_0x2b4bfd){_0x45b675=_0x2b4bfd;return db[_0x43e7('0x4d')][_0x43e7('0x4e')]({'where':{'id':0x1},'attributes':[_0x43e7('0x4f'),_0x43e7('0x50')],'raw':!![]});})[_0x43e7('0x38')](function(_0x101d45){if(!_0x45b675||!_['isEqual'](_0x45b675['apiKeyNonce'],_0x4e8e86['nonce'])){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x51')});}if(_0x45b675[_0x43e7('0x52')]){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}if(_0x45b675[_0x43e7('0x54')]){if(_0x101d45['blockDuration']>0x0){if(moment(_0x45b675[_0x43e7('0x55')])[_0x43e7('0x56')](_0x101d45['blockDuration'],_0x43e7('0x57'))>moment()){return _0x33a1a5['status'](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}}else{return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}}_0x5087d7[_0x43e7('0x35')]={'id':_0x45b675['id']};_0x4690a6();});})['catch'](function(){return _0x33a1a5['status'](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});});}catch(_0x44b6ae){_0x4690a6(_0x44b6ae);}}else if(_0x3565cf){_0x4690a6();}else{return _0x33a1a5[_0x43e7('0x45')](0x193)[_0x43e7('0x3b')]({'message':'Unknown\x20authorization\x20format'});}})[_0x43e7('0x34')](function(_0x4227c4,_0x575439,_0x3628e0){if(_0x4227c4['user']){db[_0x43e7('0x41')]['find']({'where':{'id':_0x4227c4[_0x43e7('0x35')]['id']},'attributes':userAttributes})[_0x43e7('0x38')](function(_0x3a5807){if(!_0x3a5807){return _0x575439[_0x43e7('0x45')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x4227c4[_0x43e7('0x35')]=_0x3a5807;_0x3628e0();})[_0x43e7('0x47')](function(_0xe979b5){_0x3628e0(_0xe979b5);});}else if(_0x3565cf){_0x3628e0();}else{return _0x575439[_0x43e7('0x45')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()[_0x43e7('0x34')](function(_0x57f5d0,_0x2ab022,_0x4b3a59){return licenseUtil['getLicense']()[_0x43e7('0x38')](function(_0x5ee1c5){if(_0x5ee1c5[_0x43e7('0x58')]){_0x4b3a59();}else{return _0x2ab022[_0x43e7('0x45')](0x193)[_0x43e7('0x3b')]({'message':_0x43e7('0x59')});}})['catch'](function(_0x91f1e4){_0x4b3a59(_0x91f1e4);});});};exports[_0x43e7('0x5a')]=function isWebrtcLicence(){return compose()[_0x43e7('0x34')](function(_0x1fd277,_0x296dc8,_0x1efe59){return licenseUtil['getLicense']()['then'](function(_0x3bc9de){if(_0x3bc9de[_0x43e7('0x5b')]){_0x1efe59();}else{return _0x296dc8[_0x43e7('0x45')](0x193)['json']({'message':'Forbidden'});}})['catch'](function(_0x292ded){_0x1efe59(_0x292ded);});});};exports[_0x43e7('0x5c')]=function(_0x52b098,_0x351ca2,_0x47686e){_0x52b098[_0x43e7('0x5c')]=!![];return _0x47686e();};exports['signToken']=function signToken(_0x593155){return signJwt(_0x593155);};exports['setTokenCookie']=function(_0x4de644,_0x214e7e){if(!_0x4de644[_0x43e7('0x35')]){return _0x214e7e['status'](0x194)[_0x43e7('0x3b')]({'message':_0x43e7('0x5d')});}var _0x426bcb={'payload':{'id':_0x4de644[_0x43e7('0x35')]['id'],'role':_0x4de644['user'][_0x43e7('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x426bcb)['then'](function(_0x4bebd4){_0x214e7e[_0x43e7('0x5e')](_0x43e7('0x5f'),_0x4bebd4);_0x214e7e[_0x43e7('0x60')](_0x43e7('0x61'));})[_0x43e7('0x47')](function(_0x2351cf){return _0x214e7e[_0x43e7('0x45')](0x1f4)[_0x43e7('0x62')](_0x2351cf);});};exports[_0x43e7('0x63')]=function(_0x2b5515){if(_['isNil'](_0x2b5515[_0x43e7('0x64')])||_[_0x43e7('0x65')](_0x2b5515['apiKeyIat'])){return null;}else{return createJwt(_0x2b5515);}};exports[_0x43e7('0x66')]=function(_0x4e6f6d){_0x4e6f6d[_0x43e7('0x64')]=generateNonce();_0x4e6f6d[_0x43e7('0x67')]=generateIssuedAt();return createJwt(_0x4e6f6d);};exports[_0x43e7('0x68')]=function(_0x1f561f,_0xfe13fa){var _0x5e5556=_0x1f561f['query'][_0x43e7('0x4a')];if(_0x5e5556){var _0x2ab7ee={'nonce':_0xfe13fa[_0x43e7('0x64')],'iat':_0xfe13fa[_0x43e7('0x67')],'audience':hardwareConf[_0x43e7('0x4b')](),'issuer':hardwareConf[_0x43e7('0x4b')]()};return verifyJwt(_0x5e5556,_0x2ab7ee)[_0x43e7('0x38')](function(){return generateApiKey(_0xfe13fa);});}else{throw{'message':_0x43e7('0x69')};}};exports[_0x43e7('0x6a')]=function(_0x24e758){var _0x312306=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x312306['test'](_0x24e758))throw new db[(_0x43e7('0x6b'))][(_0x43e7('0x6c'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x43e7('0x6d')]=function(_0x220bf2,_0x2d0052,_0x558d54){var _0x5d63c6=encryptor[_0x43e7('0x6e')](_0x2d0052)[_0x43e7('0x6f')](',');for(var _0x4ebdde=0x0;_0x4ebdde<_0x558d54;_0x4ebdde++){if(!_0x5d63c6[_0x4ebdde])break;if(_0x220bf2[_0x43e7('0x70')]()===_0x5d63c6[_0x4ebdde]['toLowerCase']()){var _0x49a6ce=util[_0x43e7('0x71')](_0x43e7('0x72'),_0x558d54);if(_0x558d54===0x1){_0x49a6ce=_0x43e7('0x73');}throw new db[(_0x43e7('0x6b'))][(_0x43e7('0x6c'))](_0x49a6ce);}}return;};exports['updatePasswordsHistory']=function(_0xc3976,_0xdb9fbe){var _0x4d89bd=_0xdb9fbe?encryptor[_0x43e7('0x6e')](_0xdb9fbe)[_0x43e7('0x6f')](','):[];if(_0x4d89bd[_0x43e7('0x74')]===0x5){_0x4d89bd['splice'](-0x1,0x1);}_0x4d89bd['unshift'](_0xc3976);return encryptor['encryptString'](_0x4d89bd[_0x43e7('0x75')](','));};function signJwt(_0x4058ce){var _0x323cf7=BPromise[_0x43e7('0x76')](jwt['sign'],{'context':jwt});var _0x5a50fc=_0x4058ce[_0x43e7('0x77')]||config[_0x43e7('0x78')][_0x43e7('0xa')];return new BPromise(function(_0x5dd349,_0x5ea0db){_0x323cf7(_0x4058ce[_0x43e7('0x79')],_0x5a50fc,_0x4058ce[_0x43e7('0x7a')])[_0x43e7('0x38')](function(_0x2a194d){_0x5dd349(_0x2a194d);})[_0x43e7('0x47')](function(_0xd41e79){_0x5ea0db(_0xd41e79);});});}function verifyJwt(_0x4665db,_0x46748f,_0x406155){var _0x381208=BPromise[_0x43e7('0x76')](jwt['verify'],{'context':jwt});var _0x5f3824=_0x406155||config[_0x43e7('0x78')]['session'];return new BPromise(function(_0x501616,_0x50edb2){_0x381208(_0x4665db,_0x5f3824,_0x46748f)[_0x43e7('0x38')](function(_0xe666b0){_0x501616(_0xe666b0);})['catch'](function(_0xfe5a8d){_0x50edb2(_0xfe5a8d);});});}function generateNonce(){return crypto[_0x43e7('0x7b')](0x10)[_0x43e7('0x7c')]('hex');}function generateIssuedAt(){return Math[_0x43e7('0x7d')](Date[_0x43e7('0x7e')]()/0x3e8)[_0x43e7('0x7c')]();}function createJwt(_0xc9723){var _0x2f43d7={'payload':{'iat':_0xc9723[_0x43e7('0x67')],'nonce':_0xc9723[_0x43e7('0x64')]},'options':{'algorithm':'HS512','subject':_0xc9723['id'][_0x43e7('0x7c')](),'issuer':hardwareConf[_0x43e7('0x4b')](),'audience':hardwareConf[_0x43e7('0x4b')]()}};return signJwt(_0x2f43d7)['then'](function(_0x56b06d){return{'iat':_0xc9723[_0x43e7('0x67')],'nonce':_0xc9723['apiKeyNonce'],'token':_0x56b06d};});}
\ No newline at end of file
+var _0xf3cd=['role','name','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','authorization','startsWith','Basic','User','authenticate','catch','Bearer','query','apikey','getUuid','find','sub','allowedLoginAttempts','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blockDuration','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','isMiddleware','cookie','motion.token','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','test','Sequelize','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','ValidationError','updatePasswordsHistory','length','splice','encryptString','promisify','sign','secret','payload','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','session'];(function(_0x13257b,_0x4fca58){var _0x39edb6=function(_0x29a54a){while(--_0x29a54a){_0x13257b['push'](_0x13257b['shift']());}};_0x39edb6(++_0x4fca58);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xf3cd[_0x3ce3c];return _0x55a2c9;};'use strict';var db=require(_0xdf3c('0x0'))['db'];var config=require(_0xdf3c('0x1'));var hardwareConf=require(_0xdf3c('0x2'));var licenseUtil=require(_0xdf3c('0x3'));var encryptor=require(_0xdf3c('0x4'));var _=require(_0xdf3c('0x5'));var jwt=require('jsonwebtoken');var expressJwt=require(_0xdf3c('0x6'));var compose=require(_0xdf3c('0x7'));var basicAuth=require(_0xdf3c('0x8'));var crypto=require('crypto');var BPromise=require(_0xdf3c('0x9'));var util=require(_0xdf3c('0xa'));var moment=require(_0xdf3c('0xb'));var validateJwt=expressJwt({'secret':config[_0xdf3c('0xc')][_0xdf3c('0xd')]});var userAttributes=['id',_0xdf3c('0xe'),'fullname',_0xdf3c('0xf'),'internal','email',_0xdf3c('0x10'),_0xdf3c('0x11'),'md5secret',_0xdf3c('0x12'),_0xdf3c('0x13'),_0xdf3c('0x14'),_0xdf3c('0x15'),_0xdf3c('0x16'),_0xdf3c('0x17'),_0xdf3c('0x18'),_0xdf3c('0x19'),'lastLoginAt',_0xdf3c('0x1a'),_0xdf3c('0x1b'),_0xdf3c('0x1c'),_0xdf3c('0x1d'),'alias',_0xdf3c('0x1e'),_0xdf3c('0x1f'),_0xdf3c('0x20'),'phoneBarEnableRecording',_0xdf3c('0x21'),_0xdf3c('0x22'),_0xdf3c('0x23'),_0xdf3c('0x24'),_0xdf3c('0x25'),_0xdf3c('0x26'),_0xdf3c('0x27'),_0xdf3c('0x28'),_0xdf3c('0x29'),_0xdf3c('0x2a'),'settingsEnabled',_0xdf3c('0x2b'),_0xdf3c('0x2c'),_0xdf3c('0x2d'),_0xdf3c('0x2e'),_0xdf3c('0x2f'),_0xdf3c('0x30'),_0xdf3c('0x31'),_0xdf3c('0x32'),_0xdf3c('0x33'),_0xdf3c('0x34'),_0xdf3c('0x35'),_0xdf3c('0x36'),_0xdf3c('0x37'),'openchannelAutoanswerDelay','faxAutoanswer',_0xdf3c('0x38'),'whatsappAutoanswer',_0xdf3c('0x39')];exports[_0xdf3c('0x3a')]=function(){return this[_0xdf3c('0x3b')](!![])[_0xdf3c('0x3c')](function(_0x33652f,_0x36ba1c,_0x50d8ca){if(_0x33652f[_0xdf3c('0x3d')]){_0x50d8ca();}else{return db[_0xdf3c('0x3e')][_0xdf3c('0x3f')]({'where':{'id':_0x33652f[_0xdf3c('0x40')]['id']},'attributes':['id',_0xdf3c('0x41'),_0xdf3c('0x42')],'raw':!![]})[_0xdf3c('0x43')](function(_0x155f54){if(_0x155f54&&_0x155f54[_0xdf3c('0x41')]){return _0x36ba1c[_0xdf3c('0x44')](_0x155f54['disposition']===_0xdf3c('0x45')?0x195:0x193)[_0xdf3c('0x46')]({'message':_0x155f54['disposition']===_0xdf3c('0x45')?'Unmanaged.':'Forbidden.'});}else{_0x50d8ca();}})['catch'](function(_0x14aac9){_0x50d8ca(_0x14aac9);});}});};exports[_0xdf3c('0x3b')]=function isAuthenticated(_0x52b8f6){return compose()['use'](function(_0x37ecfd,_0x1f2ce4,_0xd3cfcb){var _0x1ccdd4;if(_0x37ecfd['headers'][_0xdf3c('0x47')]){if(_[_0xdf3c('0x48')](_0x37ecfd['headers']['authorization'],_0xdf3c('0x49'))){var _0x46f0e3=basicAuth(_0x37ecfd);db[_0xdf3c('0x4a')]['find']({'where':{'name':_0x46f0e3[_0xdf3c('0xf')]}})[_0xdf3c('0x43')](function(_0x21e7b8){if(!_0x21e7b8||!_0x21e7b8[_0xdf3c('0x4b')](_0x46f0e3['pass'])){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':'Wrong\x20credentials.'});}_0x37ecfd[_0xdf3c('0x3d')]={'id':_0x21e7b8['id']};_0xd3cfcb();})[_0xdf3c('0x4c')](function(_0x217a65){_0xd3cfcb(_0x217a65);});}else if(_[_0xdf3c('0x48')](_0x37ecfd['headers'][_0xdf3c('0x47')],_0xdf3c('0x4d'))){validateJwt(_0x37ecfd,_0x1f2ce4,_0xd3cfcb);}else{if(_0x52b8f6){_0xd3cfcb();}else{return _0x1f2ce4[_0xdf3c('0x44')](0x193)[_0xdf3c('0x46')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x37ecfd[_0xdf3c('0x4e')][_0xdf3c('0x4f')]){try{var _0x5ddd21={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdf3c('0x50')]()};verifyJwt(_0x37ecfd['query'][_0xdf3c('0x4f')],_0x5ddd21)['then'](function(_0x57faba){return db['User'][_0xdf3c('0x51')]({'where':{'id':_0x57faba[_0xdf3c('0x52')]}})[_0xdf3c('0x43')](function(_0x29b5b7){_0x1ccdd4=_0x29b5b7;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xdf3c('0x53'),'blockDuration'],'raw':!![]});})[_0xdf3c('0x43')](function(_0x17b502){if(!_0x1ccdd4||!_[_0xdf3c('0x54')](_0x1ccdd4[_0xdf3c('0x55')],_0x57faba[_0xdf3c('0x56')])){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x57')});}if(_0x1ccdd4[_0xdf3c('0x58')]){return _0x1f2ce4['status'](0x191)[_0xdf3c('0x46')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x1ccdd4['blocked']){if(_0x17b502[_0xdf3c('0x59')]>0x0){if(moment(_0x1ccdd4['blockedAt'])[_0xdf3c('0x5a')](_0x17b502['blockDuration'],_0xdf3c('0x5b'))>moment()){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});}}else{return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});}}_0x37ecfd[_0xdf3c('0x3d')]={'id':_0x1ccdd4['id']};_0xd3cfcb();});})[_0xdf3c('0x4c')](function(){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});});}catch(_0x57e0ab){_0xd3cfcb(_0x57e0ab);}}else if(_0x52b8f6){_0xd3cfcb();}else{return _0x1f2ce4['status'](0x193)[_0xdf3c('0x46')]({'message':'Unknown\x20authorization\x20format'});}})[_0xdf3c('0x3c')](function(_0x14d8e1,_0x46194d,_0x328b18){if(_0x14d8e1['user']){db['User'][_0xdf3c('0x51')]({'where':{'id':_0x14d8e1[_0xdf3c('0x3d')]['id']},'attributes':userAttributes})[_0xdf3c('0x43')](function(_0x4c59ef){if(!_0x4c59ef){return _0x46194d[_0xdf3c('0x44')](0x194)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5d')});}_0x14d8e1[_0xdf3c('0x3d')]=_0x4c59ef;_0x328b18();})['catch'](function(_0x127685){_0x328b18(_0x127685);});}else if(_0x52b8f6){_0x328b18();}else{return _0x46194d[_0xdf3c('0x44')](0x194)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5e')});}});};exports[_0xdf3c('0x5f')]=function canUpdate(){return compose()['use'](function(_0x410aaf,_0x286b72,_0x437443){return licenseUtil[_0xdf3c('0x60')]()[_0xdf3c('0x43')](function(_0x344f1e){if(_0x344f1e['update']){_0x437443();}else{return _0x286b72['status'](0x193)[_0xdf3c('0x46')]({'message':_0xdf3c('0x61')});}})['catch'](function(_0x5c9885){_0x437443(_0x5c9885);});});};exports[_0xdf3c('0x62')]=function isWebrtcLicence(){return compose()[_0xdf3c('0x3c')](function(_0x46b2bd,_0x2aeb29,_0xaae4bc){return licenseUtil[_0xdf3c('0x60')]()[_0xdf3c('0x43')](function(_0x84c5c2){if(_0x84c5c2[_0xdf3c('0x63')]){_0xaae4bc();}else{return _0x2aeb29['status'](0x193)[_0xdf3c('0x46')]({'message':_0xdf3c('0x61')});}})[_0xdf3c('0x4c')](function(_0xe760dd){_0xaae4bc(_0xe760dd);});});};exports[_0xdf3c('0x64')]=function(_0x385824,_0x28a468,_0x553f70){_0x385824[_0xdf3c('0x64')]=!![];return _0x553f70();};exports['signToken']=function signToken(_0xa4e137){return signJwt(_0xa4e137);};exports['setTokenCookie']=function(_0x41b78c,_0x28144f){if(!_0x41b78c[_0xdf3c('0x3d')]){return _0x28144f[_0xdf3c('0x44')](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x4a068a={'payload':{'id':_0x41b78c[_0xdf3c('0x3d')]['id'],'role':_0x41b78c['user'][_0xdf3c('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x4a068a)[_0xdf3c('0x43')](function(_0x446713){_0x28144f[_0xdf3c('0x65')](_0xdf3c('0x66'),_0x446713);_0x28144f['redirect']('/dashboards/general');})[_0xdf3c('0x4c')](function(_0x27a541){return _0x28144f['status'](0x1f4)[_0xdf3c('0x67')](_0x27a541);});};exports[_0xdf3c('0x68')]=function(_0x168eaf){if(_[_0xdf3c('0x69')](_0x168eaf[_0xdf3c('0x55')])||_[_0xdf3c('0x69')](_0x168eaf[_0xdf3c('0x6a')])){return null;}else{return createJwt(_0x168eaf);}};exports['generateApiKey']=function(_0x4c98dc){_0x4c98dc[_0xdf3c('0x55')]=generateNonce();_0x4c98dc[_0xdf3c('0x6a')]=generateIssuedAt();return createJwt(_0x4c98dc);};exports[_0xdf3c('0x6b')]=function(_0x1ad771,_0x22de6c){var _0x39f38f=_0x1ad771[_0xdf3c('0x4e')][_0xdf3c('0x4f')];if(_0x39f38f){var _0x143d01={'nonce':_0x22de6c[_0xdf3c('0x55')],'iat':_0x22de6c[_0xdf3c('0x6a')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdf3c('0x50')]()};return verifyJwt(_0x39f38f,_0x143d01)['then'](function(){return generateApiKey(_0x22de6c);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x58fcbf){var _0x541c57=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x541c57[_0xdf3c('0x6c')](_0x58fcbf))throw new db[(_0xdf3c('0x6d'))]['ValidationError'](_0xdf3c('0x6e'));return;};exports[_0xdf3c('0x6f')]=function(_0x51f8dd,_0xa8dddb,_0x28f935){var _0x10e9d5=encryptor[_0xdf3c('0x70')](_0xa8dddb)[_0xdf3c('0x71')](',');for(var _0x28f387=0x0;_0x28f387<_0x28f935;_0x28f387++){if(!_0x10e9d5[_0x28f387])break;if(_0x51f8dd[_0xdf3c('0x72')]()===_0x10e9d5[_0x28f387][_0xdf3c('0x72')]()){var _0x42efa2=util[_0xdf3c('0x73')](_0xdf3c('0x74'),_0x28f935);if(_0x28f935===0x1){_0x42efa2='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xdf3c('0x6d'))][(_0xdf3c('0x75'))](_0x42efa2);}}return;};exports[_0xdf3c('0x76')]=function(_0x5a3d63,_0x245c68){var _0x3e327e=_0x245c68?encryptor[_0xdf3c('0x70')](_0x245c68)['split'](','):[];if(_0x3e327e[_0xdf3c('0x77')]===0x5){_0x3e327e[_0xdf3c('0x78')](-0x1,0x1);}_0x3e327e['unshift'](_0x5a3d63);return encryptor[_0xdf3c('0x79')](_0x3e327e['join'](','));};function signJwt(_0x28c296){var _0x1b03e7=BPromise[_0xdf3c('0x7a')](jwt[_0xdf3c('0x7b')],{'context':jwt});var _0xed2a78=_0x28c296[_0xdf3c('0x7c')]||config[_0xdf3c('0xc')][_0xdf3c('0xd')];return new BPromise(function(_0x2922d8,_0x330730){_0x1b03e7(_0x28c296[_0xdf3c('0x7d')],_0xed2a78,_0x28c296[_0xdf3c('0x7e')])[_0xdf3c('0x43')](function(_0x206a18){_0x2922d8(_0x206a18);})[_0xdf3c('0x4c')](function(_0xe42432){_0x330730(_0xe42432);});});}function verifyJwt(_0xd7fb2d,_0x510538,_0x4dade5){var _0x2e8511=BPromise[_0xdf3c('0x7a')](jwt[_0xdf3c('0x7f')],{'context':jwt});var _0x596282=_0x4dade5||config[_0xdf3c('0xc')]['session'];return new BPromise(function(_0x574852,_0x184952){_0x2e8511(_0xd7fb2d,_0x596282,_0x510538)[_0xdf3c('0x43')](function(_0x1121b9){_0x574852(_0x1121b9);})[_0xdf3c('0x4c')](function(_0x68f487){_0x184952(_0x68f487);});});}function generateNonce(){return crypto[_0xdf3c('0x80')](0x10)[_0xdf3c('0x81')](_0xdf3c('0x82'));}function generateIssuedAt(){return Math[_0xdf3c('0x83')](Date[_0xdf3c('0x84')]()/0x3e8)[_0xdf3c('0x81')]();}function createJwt(_0x5a2dad){var _0x34000c={'payload':{'iat':_0x5a2dad['apiKeyIat'],'nonce':_0x5a2dad[_0xdf3c('0x55')]},'options':{'algorithm':_0xdf3c('0x85'),'subject':_0x5a2dad['id'][_0xdf3c('0x81')](),'issuer':hardwareConf[_0xdf3c('0x50')](),'audience':hardwareConf[_0xdf3c('0x50')]()}};return signJwt(_0x34000c)['then'](function(_0x18bf4f){return{'iat':_0x5a2dad[_0xdf3c('0x6a')],'nonce':_0x5a2dad[_0xdf3c('0x55')],'token':_0x18bf4f};});}
\ No newline at end of file
index 032ffcb..12bf48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0095=['user','clause','tags','skip','checkListsRestrictions','ids','count','User','buildContactsQuery','getFilteredContacts','rows','CmContact','filter','cf_','map','findOne','all','length','type','catch','lodash','./sql-utils','../../mysqldb','findAll','resolve','search','parseAdvancedSearchFilter','parseQueryParameters','then','where','default','fields'];(function(_0x22a67a,_0x13b223){var _0x5e39bf=function(_0x515368){while(--_0x515368){_0x22a67a['push'](_0x22a67a['shift']());}};_0x5e39bf(++_0x13b223);}(_0x0095,0x114));var _0x5009=function(_0x207a3b,_0x24fee2){_0x207a3b=_0x207a3b-0x0;var _0xabaccf=_0x0095[_0x207a3b];return _0xabaccf;};'use strict';var _=require(_0x5009('0x0'));var sqlUtils=require(_0x5009('0x1'));var db=require(_0x5009('0x2'))['db'];exports[_0x5009('0x3')]=function(_0x12fba2,_0x1f2a60,_0x2d430c,_0x24d0c5){var _0x2e814b={'count':0x0,'rows':[]};var _0x4b5ee9=sqlUtils['skipContactsQuery'](_0x1f2a60,_0x12fba2);if(_0x4b5ee9){return Promise[_0x5009('0x4')](_0x2e814b);}var _0x37e1f2=sqlUtils['getContactsSubquery']();var _0x59a5d2={};var _0x501cb5=![];var _0x3e758d=![];return Promise[_0x5009('0x4')]()['then'](function(){if(_0x12fba2[_0x5009('0x5')]){return sqlUtils[_0x5009('0x6')](_0x12fba2[_0x5009('0x5')],_0x24d0c5);}else{return sqlUtils[_0x5009('0x7')](_0x12fba2,_0x24d0c5);}})[_0x5009('0x8')](function(_0x47603e){_0x37e1f2[_0x5009('0x9')](_0x47603e[_0x5009('0xa')]);_0x37e1f2[_0x5009('0x9')](_0x47603e[_0x5009('0xb')]);_0x37e1f2[_0x5009('0x9')](_0x47603e['filter']);_0x37e1f2['where'](_0x47603e[_0x5009('0xc')][_0x5009('0xd')]);_0x59a5d2=_0x47603e[_0x5009('0xe')];_0x3e758d=_0x47603e[_0x5009('0xc')][_0x5009('0xf')];return sqlUtils[_0x5009('0x10')](_0x1f2a60,_0x12fba2,_0x3e758d);})['then'](function(_0x314391){_0x37e1f2['where'](_0x314391);var _0x4b6fb8=_0x12fba2[_0x5009('0x5')]?_0x59a5d2[_0x5009('0x11')]:_0x12fba2['tag'];_0x501cb5=_0x4b6fb8?!![]:![];return sqlUtils['countFilteredContacts'](_0x37e1f2,_0x4b6fb8);})[_0x5009('0x8')](function(_0xb456d0){_0x2e814b[_0x5009('0x12')]=_0xb456d0;if(_0x2e814b[_0x5009('0x12')]===0x0){return;}if(_0x12fba2[_0x5009('0x13')]){_0x3e758d=!![];}return sqlUtils[_0x5009('0x14')](_0x37e1f2,_0x12fba2[_0x5009('0xb')],_0x2d430c,_0x501cb5,_0x59a5d2[_0x5009('0xd')],_0x3e758d);})[_0x5009('0x8')](function(_0x1c6566){if(!_0x1c6566){return[];}return sqlUtils[_0x5009('0x15')](_0x1c6566,_0x12fba2,_0x2d430c);})[_0x5009('0x8')](function(_0x3fe0ed){_0x2e814b[_0x5009('0x16')]=_0x3fe0ed;return _0x2e814b;})['catch'](function(_0x1a0713){throw _0x1a0713;});};exports['describe']=function(){var _0x460ae8={};var _0xa8d4eb=[];return db[_0x5009('0x17')]['describe']()[_0x5009('0x8')](function(_0x4752e0){_0x460ae8=_0x4752e0;var _0x573b03=Object['keys'](_0x460ae8)[_0x5009('0x18')](function(_0x421258){return _['startsWith'](_0x421258,_0x5009('0x19'))?_0x421258:undefined;});var _0x847806=_0x573b03[_0x5009('0x1a')](function(_0x5f3377){return db['CmCustomField'][_0x5009('0x1b')]({'where':{'id':_0x5f3377['slice'](0x3)},'raw':!![]});});return Promise[_0x5009('0x1c')](_0x847806);})[_0x5009('0x8')](function(_0x145e12){for(var _0x377bba=0x0;_0x377bba<_0x145e12[_0x5009('0x1d')];_0x377bba++){if(_0x145e12[_0x377bba]){var _0xc6da57=_0x5009('0x19')+_0x145e12[_0x377bba]['id'];_0x460ae8[_0xc6da57]['fieldType']=_0x145e12[_0x377bba]['type'];}}_0xa8d4eb=_['map'](Object['keys'](_0x460ae8),function(_0x404dbe){return{'name':_0x404dbe,'type':_0x460ae8[_0x404dbe][_0x5009('0x1e')]};});return _0xa8d4eb;})[_0x5009('0x1f')](function(_0x4d42b9){throw _0x4d42b9;});};
\ No newline at end of file
+var _0xd8de=['countFilteredContacts','count','User','buildContactsQuery','rows','describe','CmContact','keys','startsWith','cf_','all','length','fieldType','map','type','catch','lodash','./sql-utils','../../mysqldb','skipContactsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','default','where','fields','filter','clause','skip','ids','tag'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd8de,0x15a));var _0xed8d=function(_0x3c5138,_0x55236e){_0x3c5138=_0x3c5138-0x0;var _0x1d94d8=_0xd8de[_0x3c5138];return _0x1d94d8;};'use strict';var _=require(_0xed8d('0x0'));var sqlUtils=require(_0xed8d('0x1'));var db=require(_0xed8d('0x2'))['db'];exports['findAll']=function(_0x31c4c1,_0x32d419,_0x592fd3,_0x4c927c){var _0x3271d2={'count':0x0,'rows':[]};var _0x5283bf=sqlUtils[_0xed8d('0x3')](_0x32d419,_0x31c4c1);if(_0x5283bf){return Promise[_0xed8d('0x4')](_0x3271d2);}var _0x26db99=sqlUtils['getContactsSubquery']();var _0x3f7e21={};var _0x13954a=![];var _0x24a608=![];return Promise['resolve']()[_0xed8d('0x5')](function(){if(_0x31c4c1[_0xed8d('0x6')]){return sqlUtils[_0xed8d('0x7')](_0x31c4c1[_0xed8d('0x6')],_0x4c927c);}else{return sqlUtils[_0xed8d('0x8')](_0x31c4c1,_0x4c927c);}})[_0xed8d('0x5')](function(_0x5184cb){_0x26db99['where'](_0x5184cb[_0xed8d('0x9')]);_0x26db99[_0xed8d('0xa')](_0x5184cb[_0xed8d('0xb')]);_0x26db99[_0xed8d('0xa')](_0x5184cb[_0xed8d('0xc')]);_0x26db99[_0xed8d('0xa')](_0x5184cb['user'][_0xed8d('0xd')]);_0x3f7e21=_0x5184cb['tags'];_0x24a608=_0x5184cb['user'][_0xed8d('0xe')];return sqlUtils['checkListsRestrictions'](_0x32d419,_0x31c4c1,_0x24a608);})[_0xed8d('0x5')](function(_0xf5c554){_0x26db99['where'](_0xf5c554);var _0x5656b8=_0x31c4c1[_0xed8d('0x6')]?_0x3f7e21[_0xed8d('0xf')]:_0x31c4c1[_0xed8d('0x10')];_0x13954a=_0x5656b8?!![]:![];return sqlUtils[_0xed8d('0x11')](_0x26db99,_0x5656b8);})[_0xed8d('0x5')](function(_0x5e2ab8){_0x3271d2[_0xed8d('0x12')]=_0x5e2ab8;if(_0x3271d2['count']===0x0){return;}if(_0x31c4c1[_0xed8d('0x13')]){_0x24a608=!![];}return sqlUtils[_0xed8d('0x14')](_0x26db99,_0x31c4c1['fields'],_0x592fd3,_0x13954a,_0x3f7e21['clause'],_0x24a608);})[_0xed8d('0x5')](function(_0x26538d){if(!_0x26538d){return[];}return sqlUtils['getFilteredContacts'](_0x26538d,_0x31c4c1,_0x592fd3);})[_0xed8d('0x5')](function(_0xd6dde4){_0x3271d2[_0xed8d('0x15')]=_0xd6dde4;return _0x3271d2;})['catch'](function(_0x27edc4){throw _0x27edc4;});};exports[_0xed8d('0x16')]=function(){var _0x5fc14d={};var _0x1eb544=[];return db[_0xed8d('0x17')][_0xed8d('0x16')]()[_0xed8d('0x5')](function(_0x501324){_0x5fc14d=_0x501324;var _0x129c3f=Object[_0xed8d('0x18')](_0x5fc14d)[_0xed8d('0xc')](function(_0x4ee37b){return _[_0xed8d('0x19')](_0x4ee37b,_0xed8d('0x1a'))?_0x4ee37b:undefined;});var _0x52404c=_0x129c3f['map'](function(_0x4ebf95){return db['CmCustomField']['findOne']({'where':{'id':_0x4ebf95['slice'](0x3)},'raw':!![]});});return Promise[_0xed8d('0x1b')](_0x52404c);})[_0xed8d('0x5')](function(_0x239953){for(var _0x4530fc=0x0;_0x4530fc<_0x239953[_0xed8d('0x1c')];_0x4530fc++){if(_0x239953[_0x4530fc]){var _0x1d1976=_0xed8d('0x1a')+_0x239953[_0x4530fc]['id'];_0x5fc14d[_0x1d1976][_0xed8d('0x1d')]=_0x239953[_0x4530fc]['type'];}}_0x1eb544=_[_0xed8d('0x1e')](Object[_0xed8d('0x18')](_0x5fc14d),function(_0x27a66a){return{'name':_0x27a66a,'type':_0x5fc14d[_0x27a66a][_0xed8d('0x1f')]};});return _0x1eb544;})[_0xed8d('0x20')](function(_0x124cd5){throw _0x124cd5;});};
\ No newline at end of file
index 621912f..6b160bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f44=['order','DESC','from','findAll','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','clone','COUNT(*)','isEmpty','exports','lodash','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','search','ListId','autocomplete','select','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','ct.CmContactId\x20=\x20','tools_tags','firstName','lastName','mobile','fax','email','createdAt','updatedAt','deletedAt','includes','push','forEach','TagIds','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','length','find','name','fieldType','datetime','castTo','DATE','buildExpression','type','text','start','value','end','Tag','split','map','clause','and','tags','ids','User','user','uc.UserId\x20=\x20?','skip','compact','Contact','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','resolve','then','fields','tag','filter','role','agent','getLists','c.ListId\x20IN\x20?','attributes','c.id','limit','offset','group','having'];(function(_0x54de5d,_0x1f8b26){var _0x1b349e=function(_0xe199cc){while(--_0xe199cc){_0x54de5d['push'](_0x54de5d['shift']());}};_0x1b349e(++_0x1f8b26);}(_0x6f44,0x13e));var _0x46f4=function(_0x43ac3e,_0x4da3ba){_0x43ac3e=_0x43ac3e-0x0;var _0x206d0d=_0x6f44[_0x43ac3e];return _0x206d0d;};'use strict';var _=require(_0x46f4('0x0'));var squel=require('squel');var as=require(_0x46f4('0x1'));var qs=require(_0x46f4('0x2'));var utils=require(_0x46f4('0x3'));var db=require(_0x46f4('0x4'))['db'];function skipContactsQuery(_0x13204e,_0x26ec21){var _0x1ab337=![];if(_0x13204e['role']==='agent'&&!_0x26ec21[_0x46f4('0x5')]&&!_0x26ec21[_0x46f4('0x6')]&&_0x26ec21[_0x46f4('0x7')]!=='true'){_0x1ab337=!![];}return _0x1ab337;}function getContactsSubquery(){return squel[_0x46f4('0x8')]()['from']('cm_contacts','c')['where'](_0x46f4('0x9'));}function applyJoinClauses(_0x17fb1c,_0x5be9ca){var _0x42efdb=_0x5be9ca?'c':_0x46f4('0xa');_0x17fb1c[_0x46f4('0xb')](_0x46f4('0xc'),'uc',_0x46f4('0xd')+_0x42efdb+_0x46f4('0xe'))[_0x46f4('0xb')]('cm_contact_has_tags','ct',_0x46f4('0xf')+_0x42efdb+'.id')[_0x46f4('0xb')](_0x46f4('0x10'),'t','t.id\x20=\x20ct.TagId');return _0x17fb1c;}function addFieldsToQuery(_0x3ef58e,_0x38b54d,_0x3fcbad,_0x262f26,_0x5a1c8a){var _0x43e065=_0x5a1c8a?'c':'subqry';if(!_0x38b54d){_0x38b54d=['id',_0x46f4('0x11'),_0x46f4('0x12'),'phone',_0x46f4('0x13'),_0x46f4('0x14'),_0x46f4('0x15'),_0x46f4('0x6'),'CompanyId',_0x46f4('0x16'),_0x46f4('0x17'),_0x46f4('0x18'),'TagIds'];}else if(!_0x38b54d[_0x46f4('0x19')]('id')){_0x38b54d[_0x46f4('0x1a')]('id');}var _0x44ffdd=_0x3fcbad&&_0x5a1c8a||!_0x3fcbad&&!_0x5a1c8a;if(_0x262f26){_0x44ffdd=_0x262f26&&_0x5a1c8a||!_0x262f26&&!_0x5a1c8a;}_0x38b54d[_0x46f4('0x1b')](function(_0x5c3398){if(_0x5c3398===_0x46f4('0x1c')){if(_0x44ffdd){_0x3ef58e[_0x46f4('0x1d')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x5c3398);}else if(_0x3fcbad||_0x262f26){_0x3ef58e[_0x46f4('0x1d')](_0x43e065+'.'+_0x5c3398);}}else{_0x3ef58e['field'](_0x43e065+'.'+_0x5c3398);}});return _0x3ef58e;}function getSqlClauses(){var _0x108f2b={'default':squel[_0x46f4('0x1e')](),'fields':squel['expr'](),'filter':squel[_0x46f4('0x1e')](),'tags':{'clause':squel[_0x46f4('0x1e')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x108f2b;}function parseTagParameter(_0x417a52){var _0x5a6a1d=squel['expr']();if(_0x417a52){var _0x1ffccc=utils[_0x46f4('0x1f')](_0x417a52);_0x1ffccc[_0x46f4('0x1b')](function(_0x5ccdaa){_0x5a6a1d['or'](_0x46f4('0x20'),'%,'+_0x5ccdaa+',%');});}return _0x5a6a1d;}function parseSearchFilter(_0x16efe6){var _0x4c5e2b=squel['expr']();if(_0x16efe6){var _0x2b2876=_0x16efe6['replace']('\x5c','\x5c\x5c')[_0x46f4('0x21')](/'/g,'\x27\x27');if(_0x2b2876['split']('\x20')['length']>0x1){_0x4c5e2b['or'](_0x46f4('0x22'),qs['getFullTextValue'](_0x2b2876,!![]),null);}else{if(qs[_0x46f4('0x23')](_0x2b2876)){_0x4c5e2b['or'](_0x46f4('0x24'),_0x2b2876+'%');_0x4c5e2b['or']('c.phone\x20LIKE\x20?',_0x2b2876+'%');_0x4c5e2b['or'](_0x46f4('0x25'),_0x2b2876+'%');_0x4c5e2b['or']('c.fax\x20LIKE\x20?',_0x2b2876+'%');}else if(qs['isEmail'](_0x2b2876)){_0x4c5e2b['or'](_0x46f4('0x26'),_0x2b2876+'%');}else{_0x4c5e2b['or'](_0x46f4('0x27'),'%'+_0x2b2876+'%');_0x4c5e2b['or']('c.lastName\x20LIKE\x20?','%'+_0x2b2876+'%');_0x4c5e2b['or'](_0x46f4('0x26'),'%'+_0x2b2876+'%');}}}return _0x4c5e2b;}function parseAdvancedSearchFilter(_0x39481e,_0x34aa6f){var _0x21e368=getSqlClauses();var _0x45c50a=as[_0x46f4('0x28')](_0x39481e);var _0x3f8da1=_0x45c50a[_0x46f4('0x29')];for(var _0x6ac5b8=0x0;_0x6ac5b8<_0x45c50a[_0x46f4('0x2a')][_0x46f4('0x2b')];_0x6ac5b8++){var _0x5e35e9=_0x45c50a[_0x46f4('0x2a')][_0x6ac5b8];var _0xdaa51='c';var _0x515f27=_[_0x46f4('0x2c')](_0x34aa6f,[_0x46f4('0x2d'),_0x5e35e9[_0x46f4('0x1d')]]);if(_0x515f27){if(_0x5e35e9[_0x46f4('0x1d')]==='dateOfBirth'||_0x515f27[_0x46f4('0x2e')]===_0x46f4('0x2f')){_0x5e35e9[_0x46f4('0x30')]=_0x46f4('0x31');}var _0x10efdc=as[_0x46f4('0x32')](_0xdaa51,_0x515f27[_0x46f4('0x33')],_0x5e35e9);_0x21e368['default'][_0x3f8da1](_0x10efdc[_0x46f4('0x34')],_0x10efdc['value'][_0x46f4('0x35')],_0x10efdc[_0x46f4('0x36')][_0x46f4('0x37')]);}else{if(_0x5e35e9[_0x46f4('0x1d')]===_0x46f4('0x38')){var _0x4331ae=_0x5e35e9[_0x46f4('0x36')][_0x46f4('0x39')](',')[_0x46f4('0x3a')](function(_0x20fc67){return Number(_0x20fc67);});var _0x3c0d6b=parseTagParameter(_0x4331ae);_0x21e368['tags'][_0x46f4('0x3b')][_0x46f4('0x3c')](_0x3c0d6b);_0x21e368[_0x46f4('0x3d')][_0x46f4('0x3e')]=_0x4331ae;}else if(_0x5e35e9[_0x46f4('0x1d')]===_0x46f4('0x3f')){_0x21e368[_0x46f4('0x40')]['clause'][_0x46f4('0x3c')](_0x46f4('0x41'),_0x5e35e9[_0x46f4('0x36')]);_0x21e368['user'][_0x46f4('0x42')]=!![];}}}return _0x21e368;}function parseModelFields(_0x59a952,_0x391b88){var _0x2aabb0=squel[_0x46f4('0x1e')]();var _0x5f3c0e=_(_0x59a952)['keys']()[_0x46f4('0x3a')](function(_0x47ea7d){return _['some'](_0x391b88,[_0x46f4('0x2d'),_0x47ea7d])?_0x47ea7d:undefined;})[_0x46f4('0x43')]()[_0x46f4('0x36')]();if(_0x59a952[_0x46f4('0x44')]){_0x5f3c0e[_0x46f4('0x1a')](_0x46f4('0x44'));}if(_0x59a952[_0x46f4('0x3f')]){_0x5f3c0e[_0x46f4('0x1a')]('User');}if(_0x5f3c0e[_0x46f4('0x2b')]>0x0){_0x5f3c0e[_0x46f4('0x1b')](function(_0x4b6cd7){if(_0x4b6cd7===_0x46f4('0x6')){_0x2aabb0['and']('c.ListId\x20IN\x20?',[][_0x46f4('0x45')](_0x59a952[_0x4b6cd7]));}else if(_0x4b6cd7===_0x46f4('0x44')){var _0x438baf='%'+_0x59a952[_0x4b6cd7]+'%';_0x2aabb0[_0x46f4('0x3c')](_0x46f4('0x46'),_0x438baf);}else if(_0x4b6cd7===_0x46f4('0x3f')){_0x2aabb0[_0x46f4('0x3c')](_0x46f4('0x41'),_0x59a952[_0x4b6cd7]);}else{_0x2aabb0[_0x46f4('0x3c')]('c.'+_0x4b6cd7+'\x20=\x20?',_0x59a952[_0x4b6cd7]);}});}return _0x2aabb0;}function parseQueryParameters(_0x29114a,_0x33d442){var _0x3a1053=getSqlClauses();return Promise[_0x46f4('0x47')]()[_0x46f4('0x48')](function(){return parseModelFields(_0x29114a,_0x33d442);})[_0x46f4('0x48')](function(_0x3301e2){_0x3a1053[_0x46f4('0x49')][_0x46f4('0x3c')](_0x3301e2);return parseTagParameter(_0x29114a[_0x46f4('0x4a')]);})[_0x46f4('0x48')](function(_0x5de7e7){_0x3a1053['tags'][_0x46f4('0x3b')][_0x46f4('0x3c')](_0x5de7e7);return parseSearchFilter(_0x29114a['filter']);})[_0x46f4('0x48')](function(_0x47c8ef){_0x3a1053[_0x46f4('0x4b')]=_0x47c8ef;return _0x3a1053;});}function checkListsRestrictions(_0x43804d,_0x5644a3,_0x19ba78){var _0x2f9a51=squel['expr']();return Promise[_0x46f4('0x47')]()[_0x46f4('0x48')](function(){if(_0x5644a3[_0x46f4('0x5')]&&_0x43804d[_0x46f4('0x4c')]===_0x46f4('0x4d')&&!_0x19ba78){return _0x43804d[_0x46f4('0x4e')]({'attributes':['id'],'raw':!![]});}})[_0x46f4('0x48')](function(_0x2544d9){if(_0x2544d9){if(_0x2544d9[_0x46f4('0x2b')]===0x0){_0x2f9a51[_0x46f4('0x3c')]('c.ListId\x20IS\x20NULL');}else{_0x2f9a51[_0x46f4('0x3c')](_0x46f4('0x4f'),_[_0x46f4('0x3a')](_0x2544d9,'id'));}}})[_0x46f4('0x48')](function(){return _0x2f9a51;});}function buildContactsQuery(_0x4b6f18,_0x1b8b67,_0x17c753,_0x685fc5,_0x4d429f,_0x3d4a40){if(_0x1b8b67){_0x1b8b67=_0x17c753[_0x46f4('0x50')];}_0x4b6f18=addFieldsToQuery(_0x4b6f18,_0x1b8b67,_0x685fc5,_0x3d4a40,!![]);var _0x2f16f6=squel[_0x46f4('0x8')]();_0x2f16f6=addFieldsToQuery(_0x2f16f6,_0x1b8b67,_0x685fc5,_0x3d4a40,![]);if(_0x685fc5||_0x3d4a40){_0x4b6f18=applyJoinClauses(_0x4b6f18,!![]);_0x4b6f18['group'](_0x46f4('0x51'));if(_0x17c753[_0x46f4('0x52')]){_0x2f16f6[_0x46f4('0x52')](_0x17c753[_0x46f4('0x52')]);}if(_0x17c753['offset']){_0x2f16f6[_0x46f4('0x53')](_0x17c753[_0x46f4('0x53')]);}}else{_0x2f16f6=applyJoinClauses(_0x2f16f6,![]);_0x2f16f6[_0x46f4('0x54')]('subqry.id');if(_0x17c753[_0x46f4('0x52')]){_0x4b6f18[_0x46f4('0x52')](_0x17c753[_0x46f4('0x52')]);}if(_0x17c753[_0x46f4('0x53')]){_0x4b6f18[_0x46f4('0x53')](_0x17c753[_0x46f4('0x53')]);}}_0x2f16f6[_0x46f4('0x55')](_0x4d429f);if(_0x17c753[_0x46f4('0x56')]){_0x17c753['order'][_0x46f4('0x1b')](function(_0x58eeb0){_0x4b6f18['order']('c.'+_0x58eeb0[0x0],_0x58eeb0[0x1]==='DESC'?![]:!![]);_0x2f16f6[_0x46f4('0x56')]('subqry.'+_0x58eeb0[0x0],_0x58eeb0[0x1]===_0x46f4('0x57')?![]:!![]);});}_0x2f16f6[_0x46f4('0x58')](_0x4b6f18,_0x46f4('0xa'));return _0x2f16f6;}function getFilteredContacts(_0x3d8c26){var _0x4a20fb=[];return db[_0x46f4('0x38')][_0x46f4('0x59')]({'attributes':['id',_0x46f4('0x2d'),'color'],'raw':!![]})[_0x46f4('0x48')](function(_0x2cc250){_0x4a20fb=_['keyBy'](_0x2cc250,'id');var _0x40e0cc={'type':db[_0x46f4('0x5a')][_0x46f4('0x5b')][_0x46f4('0x5c')],'model':db[_0x46f4('0x5d')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x46f4('0x5e')][_0x46f4('0x5f')](_0x3d8c26[_0x46f4('0x60')](),_0x40e0cc);})[_0x46f4('0x48')](function(_0x5d4711){_0x5d4711[_0x46f4('0x1b')](function(_0x4de920){if(_0x4de920[_0x46f4('0x1c')]){_0x4de920['Tags']=[];_0x4de920[_0x46f4('0x1c')][_0x46f4('0x39')](',')['forEach'](function(_0x2a9bd7){_0x4de920['Tags'][_0x46f4('0x1a')](_0x4a20fb[_0x2a9bd7]);});}delete _0x4de920[_0x46f4('0x1c')];});return _0x5d4711;});}function countFilteredContacts(_0x2abde9,_0x27b020){var _0x27ed53=_0x2abde9[_0x46f4('0x61')]();_0x27ed53[_0x46f4('0x1d')](_0x46f4('0x62'));_0x27ed53=applyJoinClauses(_0x27ed53,!![]);_0x2abde9[_0x46f4('0x54')](_0x46f4('0x51'));var _0x593c5f=utils['getSelectedTags'](_0x27b020);if(!_[_0x46f4('0x63')](_0x593c5f)){_0x27ed53['where']('t.id\x20IN\x20?',_0x593c5f);}var _0x1bf820={'type':db[_0x46f4('0x5a')][_0x46f4('0x5b')]['SELECT'],'raw':!![]};return db['sequelize']['query'](_0x27ed53[_0x46f4('0x60')](),_0x1bf820)['then'](function(_0x4f97f0){return _0x4f97f0[0x0][_0x46f4('0x62')];});}module[_0x46f4('0x64')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0xf9bb=['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.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','length','find','fieldType','datetime','castTo','DATE','buildExpression','default','text','value','start','Tag','split','clause','and','tags','User','user','uc.UserId\x20=\x20?','keys','map','some','compact','Contact','push','c.ListId\x20IN\x20?','\x20=\x20?','resolve','then','fields','tag','filter','role','c.ListId\x20IS\x20NULL','attributes','group','limit','offset','subqry.id','having','order','subqry.','name','color','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','clone','COUNT(*)','c.id','isEmpty','where','t.id\x20IN\x20?','exports','squel','../parsers/advancedSearch','../interaction/utils','../../mysqldb','agent','search','autocomplete','true','select','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','mobile','fax','email','ListId','createdAt','updatedAt','deletedAt','TagIds','includes','forEach','GROUP_CONCAT(DISTINCT\x20t.id)','field','expr','getSelectedTags'];(function(_0x5a7d7c,_0x9ae68a){var _0x239238=function(_0x32777a){while(--_0x32777a){_0x5a7d7c['push'](_0x5a7d7c['shift']());}};_0x239238(++_0x9ae68a);}(_0xf9bb,0x117));var _0xbf9b=function(_0x18b931,_0x2cad1d){_0x18b931=_0x18b931-0x0;var _0x114958=_0xf9bb[_0x18b931];return _0x114958;};'use strict';var _=require('lodash');var squel=require(_0xbf9b('0x0'));var as=require(_0xbf9b('0x1'));var qs=require('../parsers/qs');var utils=require(_0xbf9b('0x2'));var db=require(_0xbf9b('0x3'))['db'];function skipContactsQuery(_0x2b2886,_0x380258){var _0x334a8e=![];if(_0x2b2886['role']===_0xbf9b('0x4')&&!_0x380258[_0xbf9b('0x5')]&&!_0x380258['ListId']&&_0x380258[_0xbf9b('0x6')]!==_0xbf9b('0x7')){_0x334a8e=!![];}return _0x334a8e;}function getContactsSubquery(){return squel[_0xbf9b('0x8')]()['from']('cm_contacts','c')['where'](_0xbf9b('0x9'));}function applyJoinClauses(_0x36b14b,_0x4a38e6){var _0x2f7a43=_0x4a38e6?'c':_0xbf9b('0xa');_0x36b14b[_0xbf9b('0xb')](_0xbf9b('0xc'),'uc',_0xbf9b('0xd')+_0x2f7a43+_0xbf9b('0xe'))[_0xbf9b('0xb')]('cm_contact_has_tags','ct','ct.CmContactId\x20=\x20'+_0x2f7a43+_0xbf9b('0xe'))[_0xbf9b('0xb')](_0xbf9b('0xf'),'t',_0xbf9b('0x10'));return _0x36b14b;}function addFieldsToQuery(_0xda6c80,_0x208cec,_0x3d80a5,_0x4649f1,_0x1d1118){var _0xbc4ea5=_0x1d1118?'c':'subqry';if(!_0x208cec){_0x208cec=['id',_0xbf9b('0x11'),'lastName',_0xbf9b('0x12'),_0xbf9b('0x13'),_0xbf9b('0x14'),_0xbf9b('0x15'),_0xbf9b('0x16'),'CompanyId',_0xbf9b('0x17'),_0xbf9b('0x18'),_0xbf9b('0x19'),_0xbf9b('0x1a')];}else if(!_0x208cec[_0xbf9b('0x1b')]('id')){_0x208cec['push']('id');}var _0x2bfa8f=_0x3d80a5&&_0x1d1118||!_0x3d80a5&&!_0x1d1118;if(_0x4649f1){_0x2bfa8f=_0x4649f1&&_0x1d1118||!_0x4649f1&&!_0x1d1118;}_0x208cec[_0xbf9b('0x1c')](function(_0x35ffe7){if(_0x35ffe7===_0xbf9b('0x1a')){if(_0x2bfa8f){_0xda6c80['field'](_0xbf9b('0x1d'),_0x35ffe7);}else if(_0x3d80a5||_0x4649f1){_0xda6c80[_0xbf9b('0x1e')](_0xbc4ea5+'.'+_0x35ffe7);}}else{_0xda6c80[_0xbf9b('0x1e')](_0xbc4ea5+'.'+_0x35ffe7);}});return _0xda6c80;}function getSqlClauses(){var _0x44d518={'default':squel[_0xbf9b('0x1f')](),'fields':squel[_0xbf9b('0x1f')](),'filter':squel[_0xbf9b('0x1f')](),'tags':{'clause':squel[_0xbf9b('0x1f')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x44d518;}function parseTagParameter(_0x49e14f){var _0x513c1a=squel['expr']();if(_0x49e14f){var _0x1c7236=utils[_0xbf9b('0x20')](_0x49e14f);_0x1c7236[_0xbf9b('0x1c')](function(_0x40357b){_0x513c1a['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x40357b+',%');});}return _0x513c1a;}function parseSearchFilter(_0x57b6df){var _0x5c261e=squel['expr']();if(_0x57b6df){var _0x14cd71=_0x57b6df[_0xbf9b('0x21')]('\x5c','\x5c\x5c')[_0xbf9b('0x21')](/'/g,'\x27\x27');if(_0x14cd71['split']('\x20')['length']>0x1){_0x5c261e['or'](_0xbf9b('0x22'),qs['getFullTextValue'](_0x14cd71,!![]),null);}else{if(qs[_0xbf9b('0x23')](_0x14cd71)){_0x5c261e['or'](_0xbf9b('0x24'),_0x14cd71+'%');_0x5c261e['or'](_0xbf9b('0x25'),_0x14cd71+'%');_0x5c261e['or']('c.mobile\x20LIKE\x20?',_0x14cd71+'%');_0x5c261e['or'](_0xbf9b('0x26'),_0x14cd71+'%');}else if(qs[_0xbf9b('0x27')](_0x14cd71)){_0x5c261e['or'](_0xbf9b('0x28'),_0x14cd71+'%');}else{_0x5c261e['or'](_0xbf9b('0x29'),'%'+_0x14cd71+'%');_0x5c261e['or'](_0xbf9b('0x2a'),'%'+_0x14cd71+'%');_0x5c261e['or'](_0xbf9b('0x28'),'%'+_0x14cd71+'%');}}}return _0x5c261e;}function parseAdvancedSearchFilter(_0x41d9ec,_0x509962){var _0x17b5eb=getSqlClauses();var _0x250c70=as[_0xbf9b('0x2b')](_0x41d9ec);var _0x6d68c2=_0x250c70[_0xbf9b('0x2c')];for(var _0x208005=0x0;_0x208005<_0x250c70[_0xbf9b('0x2d')][_0xbf9b('0x2e')];_0x208005++){var _0x303fe0=_0x250c70[_0xbf9b('0x2d')][_0x208005];var _0x2a388e='c';var _0x26c3f2=_[_0xbf9b('0x2f')](_0x509962,['name',_0x303fe0['field']]);if(_0x26c3f2){if(_0x303fe0[_0xbf9b('0x1e')]==='dateOfBirth'||_0x26c3f2[_0xbf9b('0x30')]===_0xbf9b('0x31')){_0x303fe0[_0xbf9b('0x32')]=_0xbf9b('0x33');}var _0x4a3df6=as[_0xbf9b('0x34')](_0x2a388e,_0x26c3f2['type'],_0x303fe0);_0x17b5eb[_0xbf9b('0x35')][_0x6d68c2](_0x4a3df6[_0xbf9b('0x36')],_0x4a3df6[_0xbf9b('0x37')][_0xbf9b('0x38')],_0x4a3df6[_0xbf9b('0x37')]['end']);}else{if(_0x303fe0['field']===_0xbf9b('0x39')){var _0x27bd66=_0x303fe0['value'][_0xbf9b('0x3a')](',')['map'](function(_0xe6808){return Number(_0xe6808);});var _0x16862a=parseTagParameter(_0x27bd66);_0x17b5eb['tags'][_0xbf9b('0x3b')][_0xbf9b('0x3c')](_0x16862a);_0x17b5eb[_0xbf9b('0x3d')]['ids']=_0x27bd66;}else if(_0x303fe0[_0xbf9b('0x1e')]===_0xbf9b('0x3e')){_0x17b5eb[_0xbf9b('0x3f')][_0xbf9b('0x3b')]['and'](_0xbf9b('0x40'),_0x303fe0[_0xbf9b('0x37')]);_0x17b5eb[_0xbf9b('0x3f')]['skip']=!![];}}}return _0x17b5eb;}function parseModelFields(_0x23e0cf,_0x4b7a65){var _0x238de5=squel[_0xbf9b('0x1f')]();var _0x16140f=_(_0x23e0cf)[_0xbf9b('0x41')]()[_0xbf9b('0x42')](function(_0x396a44){return _[_0xbf9b('0x43')](_0x4b7a65,['name',_0x396a44])?_0x396a44:undefined;})[_0xbf9b('0x44')]()[_0xbf9b('0x37')]();if(_0x23e0cf[_0xbf9b('0x45')]){_0x16140f[_0xbf9b('0x46')](_0xbf9b('0x45'));}if(_0x23e0cf[_0xbf9b('0x3e')]){_0x16140f['push'](_0xbf9b('0x3e'));}if(_0x16140f[_0xbf9b('0x2e')]>0x0){_0x16140f[_0xbf9b('0x1c')](function(_0x365f79){if(_0x365f79===_0xbf9b('0x16')){_0x238de5['and'](_0xbf9b('0x47'),[]['concat'](_0x23e0cf[_0x365f79]));}else if(_0x365f79==='Contact'){var _0x596231='%'+_0x23e0cf[_0x365f79]+'%';_0x238de5[_0xbf9b('0x3c')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x596231);}else if(_0x365f79===_0xbf9b('0x3e')){_0x238de5[_0xbf9b('0x3c')]('uc.UserId\x20=\x20?',_0x23e0cf[_0x365f79]);}else{_0x238de5['and']('c.'+_0x365f79+_0xbf9b('0x48'),_0x23e0cf[_0x365f79]);}});}return _0x238de5;}function parseQueryParameters(_0x1b526e,_0x4107a5){var _0x563c0d=getSqlClauses();return Promise[_0xbf9b('0x49')]()[_0xbf9b('0x4a')](function(){return parseModelFields(_0x1b526e,_0x4107a5);})['then'](function(_0x401f3d){_0x563c0d[_0xbf9b('0x4b')][_0xbf9b('0x3c')](_0x401f3d);return parseTagParameter(_0x1b526e[_0xbf9b('0x4c')]);})[_0xbf9b('0x4a')](function(_0x14690b){_0x563c0d[_0xbf9b('0x3d')][_0xbf9b('0x3b')][_0xbf9b('0x3c')](_0x14690b);return parseSearchFilter(_0x1b526e['filter']);})[_0xbf9b('0x4a')](function(_0x56d09d){_0x563c0d[_0xbf9b('0x4d')]=_0x56d09d;return _0x563c0d;});}function checkListsRestrictions(_0x1f1a11,_0x34be75,_0x1ee6fd){var _0x4f657c=squel[_0xbf9b('0x1f')]();return Promise['resolve']()[_0xbf9b('0x4a')](function(){if(_0x34be75[_0xbf9b('0x5')]&&_0x1f1a11[_0xbf9b('0x4e')]===_0xbf9b('0x4')&&!_0x1ee6fd){return _0x1f1a11['getLists']({'attributes':['id'],'raw':!![]});}})[_0xbf9b('0x4a')](function(_0x3a88a7){if(_0x3a88a7){if(_0x3a88a7[_0xbf9b('0x2e')]===0x0){_0x4f657c[_0xbf9b('0x3c')](_0xbf9b('0x4f'));}else{_0x4f657c['and']('c.ListId\x20IN\x20?',_[_0xbf9b('0x42')](_0x3a88a7,'id'));}}})[_0xbf9b('0x4a')](function(){return _0x4f657c;});}function buildContactsQuery(_0x2b1395,_0x2635dc,_0x523f28,_0x2ca970,_0xb9dccc,_0x4105fd){if(_0x2635dc){_0x2635dc=_0x523f28[_0xbf9b('0x50')];}_0x2b1395=addFieldsToQuery(_0x2b1395,_0x2635dc,_0x2ca970,_0x4105fd,!![]);var _0x1c84ae=squel['select']();_0x1c84ae=addFieldsToQuery(_0x1c84ae,_0x2635dc,_0x2ca970,_0x4105fd,![]);if(_0x2ca970||_0x4105fd){_0x2b1395=applyJoinClauses(_0x2b1395,!![]);_0x2b1395[_0xbf9b('0x51')]('c.id');if(_0x523f28[_0xbf9b('0x52')]){_0x1c84ae[_0xbf9b('0x52')](_0x523f28[_0xbf9b('0x52')]);}if(_0x523f28[_0xbf9b('0x53')]){_0x1c84ae[_0xbf9b('0x53')](_0x523f28[_0xbf9b('0x53')]);}}else{_0x1c84ae=applyJoinClauses(_0x1c84ae,![]);_0x1c84ae['group'](_0xbf9b('0x54'));if(_0x523f28[_0xbf9b('0x52')]){_0x2b1395[_0xbf9b('0x52')](_0x523f28[_0xbf9b('0x52')]);}if(_0x523f28['offset']){_0x2b1395[_0xbf9b('0x53')](_0x523f28[_0xbf9b('0x53')]);}}_0x1c84ae[_0xbf9b('0x55')](_0xb9dccc);if(_0x523f28[_0xbf9b('0x56')]){_0x523f28[_0xbf9b('0x56')][_0xbf9b('0x1c')](function(_0x529de8){_0x2b1395['order']('c.'+_0x529de8[0x0],_0x529de8[0x1]==='DESC'?![]:!![]);_0x1c84ae[_0xbf9b('0x56')](_0xbf9b('0x57')+_0x529de8[0x0],_0x529de8[0x1]==='DESC'?![]:!![]);});}_0x1c84ae['from'](_0x2b1395,'subqry');return _0x1c84ae;}function getFilteredContacts(_0x4e0903){var _0x5d4ce3=[];return db[_0xbf9b('0x39')]['findAll']({'attributes':['id',_0xbf9b('0x58'),_0xbf9b('0x59')],'raw':!![]})['then'](function(_0x3c3291){_0x5d4ce3=_['keyBy'](_0x3c3291,'id');var _0x159eac={'type':db[_0xbf9b('0x5a')][_0xbf9b('0x5b')][_0xbf9b('0x5c')],'model':db[_0xbf9b('0x5d')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xbf9b('0x5e')][_0xbf9b('0x5f')](_0x4e0903[_0xbf9b('0x60')](),_0x159eac);})['then'](function(_0x2e0c9e){_0x2e0c9e[_0xbf9b('0x1c')](function(_0x27ee77){if(_0x27ee77['TagIds']){_0x27ee77['Tags']=[];_0x27ee77[_0xbf9b('0x1a')][_0xbf9b('0x3a')](',')['forEach'](function(_0x2e0537){_0x27ee77['Tags']['push'](_0x5d4ce3[_0x2e0537]);});}delete _0x27ee77['TagIds'];});return _0x2e0c9e;});}function countFilteredContacts(_0x45165a,_0x5118a9){var _0x44651d=_0x45165a[_0xbf9b('0x61')]();_0x44651d['field'](_0xbf9b('0x62'));_0x44651d=applyJoinClauses(_0x44651d,!![]);_0x45165a[_0xbf9b('0x51')](_0xbf9b('0x63'));var _0x335b5d=utils[_0xbf9b('0x20')](_0x5118a9);if(!_[_0xbf9b('0x64')](_0x335b5d)){_0x44651d[_0xbf9b('0x65')](_0xbf9b('0x66'),_0x335b5d);}var _0x12b416={'type':db[_0xbf9b('0x5a')][_0xbf9b('0x5b')][_0xbf9b('0x5c')],'raw':!![]};return db[_0xbf9b('0x5e')][_0xbf9b('0x5f')](_0x44651d[_0xbf9b('0x60')](),_0x12b416)[_0xbf9b('0x4a')](function(_0x4bd34c){return _0x4bd34c[0x0][_0xbf9b('0x62')];});}module[_0xbf9b('0x67')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index e4933ce..22f969e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bf1=['error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','indexOf','hasOwnProperty','createReadStream','createCipher','data','update','binary','write','end','unlink','decryptFile','createDecipher','final','encryptString','secret','base64','decryptString','utf8','crypto','bluebird','lodash','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0x9bf1,0x1e3));var _0x19bf=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0x9bf1[_0x21aec3];return _0x288bbc;};'use strict';var crypto=require(_0x19bf('0x0'));var fs=require('fs');var BPromise=require(_0x19bf('0x1'));var _=require(_0x19bf('0x2'));var config=require('../../config/environment');var logger=require(_0x19bf('0x3'))(_0x19bf('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x19bf('0x5')][_0x19bf('0x6')],'algorithm':_0x19bf('0x7')};const fileOptions={'algorithm':_0x19bf('0x8')};if(config[_0x19bf('0x9')]&&config[_0x19bf('0x9')][_0x19bf('0xa')]){var isSupported=isAlgorithmSupported(config[_0x19bf('0x9')][_0x19bf('0xa')]);if(isSupported){fileOptions['algorithm']=config[_0x19bf('0x9')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x19bf('0xb')](',\x20');logger[_0x19bf('0xc')](config[_0x19bf('0x9')]['algorithm'],_0x19bf('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x545b11){return AES_SUPPORTED_RX['test'](_0x545b11);}function getSupportedCiphers(){return crypto[_0x19bf('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x5ba3cb){return getSupportedCiphers()[_0x19bf('0xf')](_0x5ba3cb)>-0x1;}function combineOptions(_0x87100d){var _0x1a91d4={};for(var _0x3c3edc in fileOptions){if(fileOptions['hasOwnProperty'](_0x3c3edc)){_0x1a91d4[_0x3c3edc]=fileOptions[_0x3c3edc];}}if(_0x87100d){for(var _0x16446c in _0x87100d){if(_0x87100d[_0x19bf('0x10')](_0x16446c)){_0x1a91d4[_0x16446c]=_0x87100d[_0x16446c];}}}return _0x1a91d4;}exports['encryptFile']=function(_0x188f2c,_0x319c56,_0x2c5aeb,_0xd1c5bb){return new BPromise(function(_0x5f24da,_0x67258f){_0xd1c5bb=combineOptions(_0xd1c5bb);var _0x416323=new Buffer(_0x2c5aeb);var _0x2e0028=fs[_0x19bf('0x11')](_0x188f2c);var _0x12644d=fs['createWriteStream'](_0x319c56);var _0x3854a6=crypto[_0x19bf('0x12')](_0xd1c5bb[_0x19bf('0xa')],_0x416323);_0x2e0028['on'](_0x19bf('0x13'),function(_0x5eca6e){var _0x4bc487=new Buffer(_0x3854a6[_0x19bf('0x14')](_0x5eca6e),_0x19bf('0x15'));_0x12644d[_0x19bf('0x16')](_0x4bc487);});_0x2e0028['on'](_0x19bf('0x17'),function(){try{var _0x294896=new Buffer(_0x3854a6['final'](_0x19bf('0x15')),'binary');_0x12644d['write'](_0x294896);_0x12644d[_0x19bf('0x17')]();_0x12644d['on']('close',function(){return _0x5f24da(_0x319c56);});}catch(_0x101426){fs[_0x19bf('0x18')](_0x319c56);return _0x67258f(_0x101426);}});});};exports[_0x19bf('0x19')]=function(_0x55fbb1,_0x24da01,_0x313f1f,_0x222acc){return new BPromise(function(_0x454584,_0x39a653){_0x222acc=combineOptions(_0x222acc);var _0x22d72f=new Buffer(_0x313f1f);var _0x1a6c15=fs['createReadStream'](_0x55fbb1);var _0x36f052=fs['createWriteStream'](_0x24da01);var _0x258f27=crypto[_0x19bf('0x1a')](_0x222acc[_0x19bf('0xa')],_0x22d72f);_0x1a6c15['on']('data',function(_0x5ed1e9){var _0x387300=new Buffer(_0x258f27['update'](_0x5ed1e9),_0x19bf('0x15'));_0x36f052[_0x19bf('0x16')](_0x387300);});_0x1a6c15['on']('end',function(){try{var _0x366128=new Buffer(_0x258f27[_0x19bf('0x1b')]('binary'),'binary');_0x36f052[_0x19bf('0x16')](_0x366128);_0x36f052[_0x19bf('0x17')]();_0x36f052['on']('close',function(){return _0x454584(_0x24da01);});}catch(_0x1b9589){fs[_0x19bf('0x18')](_0x24da01);return _0x39a653(_0x1b9589);}});});};exports[_0x19bf('0x1c')]=function(_0x328ddb,_0x4f4587,_0x28827a){var _0x1ba969=_0x28827a||stringOptions[_0x19bf('0xa')];var _0x2228d3=_0x4f4587||stringOptions[_0x19bf('0x1d')];var _0x58c55a=crypto['createCipher'](_0x1ba969,_0x2228d3);var _0x2c512e=_0x58c55a[_0x19bf('0x14')](_0x328ddb,'utf8',_0x19bf('0x1e'));_0x2c512e+=_0x58c55a['final'](_0x19bf('0x1e'));return _0x2c512e;};exports[_0x19bf('0x1f')]=function(_0x211f8e,_0x5563d5,_0x25cbc9){var _0x33d88c=_0x25cbc9||stringOptions['algorithm'];var _0x2ab3fc=_0x5563d5||stringOptions[_0x19bf('0x1d')];var _0x154f2e=crypto[_0x19bf('0x1a')](_0x33d88c,_0x2ab3fc);var _0x322c5f=_0x154f2e['update'](_0x211f8e,_0x19bf('0x1e'),'utf8');_0x322c5f+=_0x154f2e['final'](_0x19bf('0x20'));return _0x322c5f;};
\ No newline at end of file
+var _0xedc5=['utf8','base64','bluebird','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher','data','update','binary','write','end','close','unlink','decryptFile','final','secret'];(function(_0x191c44,_0x20a896){var _0x1086cd=function(_0x2e2cac){while(--_0x2e2cac){_0x191c44['push'](_0x191c44['shift']());}};_0x1086cd(++_0x20a896);}(_0xedc5,0x157));var _0x5edc=function(_0x2a2e72,_0x1de962){_0x2a2e72=_0x2a2e72-0x0;var _0x3cfb4a=_0xedc5[_0x2a2e72];return _0x3cfb4a;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x5edc('0x0'));var _=require('lodash');var config=require(_0x5edc('0x1'));var logger=require(_0x5edc('0x2'))(_0x5edc('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x5edc('0x4')][_0x5edc('0x5')],'algorithm':_0x5edc('0x6')};const fileOptions={'algorithm':_0x5edc('0x7')};if(config[_0x5edc('0x8')]&&config[_0x5edc('0x8')][_0x5edc('0x9')]){var isSupported=isAlgorithmSupported(config[_0x5edc('0x8')]['algorithm']);if(isSupported){fileOptions[_0x5edc('0x9')]=config['encrypt'][_0x5edc('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x5edc('0xa')](',\x20');logger[_0x5edc('0xb')](config[_0x5edc('0x8')][_0x5edc('0x9')],_0x5edc('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x3618ad){return AES_SUPPORTED_RX['test'](_0x3618ad);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x5edc('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x418357){return getSupportedCiphers()[_0x5edc('0xe')](_0x418357)>-0x1;}function combineOptions(_0x1317f1){var _0x95c66d={};for(var _0x14ce15 in fileOptions){if(fileOptions[_0x5edc('0xf')](_0x14ce15)){_0x95c66d[_0x14ce15]=fileOptions[_0x14ce15];}}if(_0x1317f1){for(var _0x348c21 in _0x1317f1){if(_0x1317f1[_0x5edc('0xf')](_0x348c21)){_0x95c66d[_0x348c21]=_0x1317f1[_0x348c21];}}}return _0x95c66d;}exports[_0x5edc('0x10')]=function(_0x5d4697,_0x53e050,_0x3ca3f1,_0x2e73a9){return new BPromise(function(_0xdf5c3a,_0xb1f9a5){_0x2e73a9=combineOptions(_0x2e73a9);var _0x15e7c1=new Buffer(_0x3ca3f1);var _0x39fc97=fs[_0x5edc('0x11')](_0x5d4697);var _0x5d00dd=fs['createWriteStream'](_0x53e050);var _0x26f004=crypto[_0x5edc('0x12')](_0x2e73a9[_0x5edc('0x9')],_0x15e7c1);_0x39fc97['on'](_0x5edc('0x13'),function(_0xabc209){var _0x3eaee8=new Buffer(_0x26f004[_0x5edc('0x14')](_0xabc209),_0x5edc('0x15'));_0x5d00dd[_0x5edc('0x16')](_0x3eaee8);});_0x39fc97['on']('end',function(){try{var _0x1680cf=new Buffer(_0x26f004['final'](_0x5edc('0x15')),_0x5edc('0x15'));_0x5d00dd[_0x5edc('0x16')](_0x1680cf);_0x5d00dd[_0x5edc('0x17')]();_0x5d00dd['on'](_0x5edc('0x18'),function(){return _0xdf5c3a(_0x53e050);});}catch(_0x577cb1){fs[_0x5edc('0x19')](_0x53e050);return _0xb1f9a5(_0x577cb1);}});});};exports[_0x5edc('0x1a')]=function(_0x47ecc2,_0x528c01,_0x418c13,_0x51be05){return new BPromise(function(_0x4473f3,_0x1235eb){_0x51be05=combineOptions(_0x51be05);var _0x178801=new Buffer(_0x418c13);var _0x42a3b9=fs[_0x5edc('0x11')](_0x47ecc2);var _0x42d8e3=fs['createWriteStream'](_0x528c01);var _0x3585b1=crypto['createDecipher'](_0x51be05['algorithm'],_0x178801);_0x42a3b9['on'](_0x5edc('0x13'),function(_0x4e2365){var _0x1ea26a=new Buffer(_0x3585b1[_0x5edc('0x14')](_0x4e2365),_0x5edc('0x15'));_0x42d8e3[_0x5edc('0x16')](_0x1ea26a);});_0x42a3b9['on']('end',function(){try{var _0x20fd48=new Buffer(_0x3585b1[_0x5edc('0x1b')]('binary'),_0x5edc('0x15'));_0x42d8e3[_0x5edc('0x16')](_0x20fd48);_0x42d8e3['end']();_0x42d8e3['on']('close',function(){return _0x4473f3(_0x528c01);});}catch(_0x3874){fs[_0x5edc('0x19')](_0x528c01);return _0x1235eb(_0x3874);}});});};exports['encryptString']=function(_0x168eb6,_0x2769ee,_0x16819f){var _0x1654e1=_0x16819f||stringOptions[_0x5edc('0x9')];var _0x525f1f=_0x2769ee||stringOptions[_0x5edc('0x1c')];var _0x33cc71=crypto[_0x5edc('0x12')](_0x1654e1,_0x525f1f);var _0x1fa0b1=_0x33cc71[_0x5edc('0x14')](_0x168eb6,_0x5edc('0x1d'),'base64');_0x1fa0b1+=_0x33cc71[_0x5edc('0x1b')]('base64');return _0x1fa0b1;};exports['decryptString']=function(_0x14418f,_0x4d2882,_0x4526fe){var _0x5b06f4=_0x4526fe||stringOptions['algorithm'];var _0x37abf7=_0x4d2882||stringOptions[_0x5edc('0x1c')];var _0xbc387e=crypto['createDecipher'](_0x5b06f4,_0x37abf7);var _0x32d462=_0xbc387e[_0x5edc('0x14')](_0x14418f,_0x5edc('0x1e'),_0x5edc('0x1d'));_0x32d462+=_0xbc387e[_0x5edc('0x1b')](_0x5edc('0x1d'));return _0x32d462;};
\ No newline at end of file
index 3e24e59..be2d436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15e1=['split','splitSizeCsv','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','then','num','Empty','range','isInteger','forEach','push','format','QueryTypes','basename','.csv','length','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','util','path','lodash','to-csv','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find'];(function(_0x301ea6,_0x5b8465){var _0x8a7562=function(_0xdc4fa1){while(--_0xdc4fa1){_0x301ea6['push'](_0x301ea6['shift']());}};_0x8a7562(++_0x5b8465);}(_0x15e1,0x86));var _0x115e=function(_0x1a03e2,_0x3e2733){_0x1a03e2=_0x1a03e2-0x0;var _0x44e20c=_0x15e1[_0x1a03e2];return _0x44e20c;};'use strict';var util=require(_0x115e('0x0'));var path=require(_0x115e('0x1'));var _=require(_0x115e('0x2'));var csv=require(_0x115e('0x3'));var fs=require('fs');var BPromise=require(_0x115e('0x4'));var zipdir=require(_0x115e('0x5'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0x115e('0x6'))[_0x115e('0x7')];var logger=require(_0x115e('0x8'))(_0x115e('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x115e('0xa')][0x2]);var QUERY=process[_0x115e('0xa')][0x3];var PATH=process[_0x115e('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x28e11e,_0x54257d){var _0x39e3ef={'status':_0x28e11e};var _0x436667={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x54257d){_0x39e3ef['savename']=_0x54257d;}return db[_0x115e('0xb')][_0x115e('0xc')](_0x39e3ef,_0x436667);}function main(){var _0x4e010c=0x1388;var _0x2e9e73;logger['info'](util['format'](_0x115e('0xd'),EXTRACTED_REPORT_ID,_0x115e('0xe')));return db['Setting'][_0x115e('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x115e('0x10'),_0x115e('0x11')]})['then'](function(_0x298086){if(_0x298086){_0x2e9e73=_0x298086;_0x4e010c=_0x2e9e73[_0x115e('0x11')]||0x1388;}})['then'](function(){return dbH[_0x115e('0x12')][_0x115e('0x13')](util['format'](_0x115e('0x14'),QUERY),{'type':dbH[_0x115e('0x12')]['QueryTypes'][_0x115e('0x15')]});})[_0x115e('0x16')](function(_0x41f5d5){if(!_0x41f5d5[0x0][_0x115e('0x17')]){return analyticExtractedReport(_0x115e('0x18'));}var _0x1f4a89=[];var _0x183f38=0x0;if(_0x2e9e73[_0x115e('0x10')]){if(_0x41f5d5&&_0x41f5d5['length']){var _0x5b7063=_[_0x115e('0x19')](_0x41f5d5[0x0]['num']/_0x4e010c);var _0x53b2ec=Number[_0x115e('0x1a')](_0x41f5d5[0x0][_0x115e('0x17')]/_0x4e010c)?_0x41f5d5[0x0][_0x115e('0x17')]%_0x4e010c:0x0;_0x5b7063[_0x115e('0x1b')](function(_0x296146){if(_0x296146>0x0){_0x183f38+=_0x4e010c;}_0x1f4a89[_0x115e('0x1c')](dbH['sequelize'][_0x115e('0x13')](util[_0x115e('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4e010c,_0x183f38),{'type':dbH['sequelize'][_0x115e('0x1e')][_0x115e('0x15')]}));});if(_0x53b2ec>0x0){_0x183f38+=_0x4e010c;_0x1f4a89[_0x115e('0x1c')](dbH[_0x115e('0x12')][_0x115e('0x13')](util[_0x115e('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x53b2ec,_0x183f38),{'type':dbH[_0x115e('0x12')]['QueryTypes'][_0x115e('0x15')]}));}}}else{_0x1f4a89['push'](dbH[_0x115e('0x12')][_0x115e('0x13')](QUERY,{'type':dbH[_0x115e('0x12')]['QueryTypes']['SELECT']}));}var _0x51b2c9=path['dirname'](PATH);var _0xe9847e=path[_0x115e('0x1f')](PATH,_0x115e('0x20'));var _0x3fce79=_0x2e9e73[_0x115e('0x10')]&&_0x1f4a89[_0x115e('0x21')]>0x1;var _0x1b6e11=[];if(!fs[_0x115e('0x22')](path[_0x115e('0x23')](_0x51b2c9,_0xe9847e))&&_0x3fce79){fs[_0x115e('0x24')](path[_0x115e('0x23')](_0x51b2c9,_0xe9847e));}return BPromise[_0x115e('0x25')](_0x1f4a89,function(_0x222864){_0x1b6e11[_0x115e('0x1c')](_0x222864);})[_0x115e('0x16')](function(){for(var _0xe8181f=0x0;_0xe8181f<_0x1b6e11['length'];_0xe8181f+=0x1){var _0x526c6e;var _0x4fa0c6=_0x1b6e11[_0xe8181f];if(_0x3fce79){_0x526c6e=path[_0x115e('0x23')](_0x51b2c9,_0xe9847e,util[_0x115e('0x1d')](_0x115e('0x26'),_0xe9847e,_0xe8181f,_0x115e('0x27')));}else{_0x526c6e=path[_0x115e('0x23')](_0x51b2c9,util['format'](_0x115e('0x28'),_0xe9847e,_0x115e('0x27')));}fs['writeFileSync'](_0x526c6e,csv(_0x4fa0c6));}})[_0x115e('0x16')](function(){if(_0x3fce79){return new Promise(function(_0x4beaa4){zipdir(path[_0x115e('0x23')](_0x51b2c9,_0xe9847e),{'saveTo':path[_0x115e('0x23')](_0x51b2c9,util[_0x115e('0x1d')](_0x115e('0x28'),_0xe9847e,_0x115e('0x29')))},function(_0x1e93d6,_0x4df8c2){rimraf(path[_0x115e('0x23')](_0x51b2c9,_0xe9847e),function(){});_0x4beaa4(_0x115e('0x2a'));});});}})[_0x115e('0x16')](function(){logger[_0x115e('0x2b')](util[_0x115e('0x1d')](_0x115e('0x2c'),EXTRACTED_REPORT_ID,_0x115e('0xe')));return analyticExtractedReport(_0x115e('0x2d'),_0x3fce79?util[_0x115e('0x1d')](_0x115e('0x28'),_0xe9847e,_0x3fce79?_0x115e('0x29'):_0x115e('0x27')):null);});})[_0x115e('0x2e')](function(_0x1ae9bc){logger[_0x115e('0x2b')](util[_0x115e('0x1d')](_0x115e('0x2f'),EXTRACTED_REPORT_ID,'CSV'),util[_0x115e('0x30')](_0x1ae9bc,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x115e('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x9566=['isInteger','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','existsSync','join','mkdirSync','each','%s%d.%s','csv','writeFileSync','zip\x20finished','Completed','%s.%s','zip','catch','finally','exit','util','path','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','then','Empty','length','num'];(function(_0x35d88d,_0x1fb7f1){var _0x355a09=function(_0x4b4738){while(--_0x4b4738){_0x35d88d['push'](_0x35d88d['shift']());}};_0x355a09(++_0x1fb7f1);}(_0x9566,0x136));var _0x6956=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9566[_0x122ef9];return _0x42fba0;};'use strict';var util=require(_0x6956('0x0'));var path=require(_0x6956('0x1'));var _=require(_0x6956('0x2'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x6956('0x3'));var zipdir=require(_0x6956('0x4'));var rimraf=require(_0x6956('0x5'));var db=require(_0x6956('0x6'))['db'];var dbH=require('../../mysqldb')[_0x6956('0x7')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x6956('0x8')][0x2]);var QUERY=process[_0x6956('0x8')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4429ee,_0x50a10f){var _0x3bf464={'status':_0x4429ee};var _0x59736b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x50a10f){_0x3bf464[_0x6956('0x9')]=_0x50a10f;}return db[_0x6956('0xa')]['update'](_0x3bf464,_0x59736b);}function main(){var _0x5b765e=0x1388;var _0x2f7106;logger[_0x6956('0xb')](util[_0x6956('0xc')](_0x6956('0xd'),EXTRACTED_REPORT_ID,_0x6956('0xe')));return db[_0x6956('0xf')][_0x6956('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6956('0x11'),_0x6956('0x12')]})['then'](function(_0x239966){if(_0x239966){_0x2f7106=_0x239966;_0x5b765e=_0x2f7106[_0x6956('0x12')]||0x1388;}})['then'](function(){return dbH[_0x6956('0x13')]['query'](util['format'](_0x6956('0x14'),QUERY),{'type':dbH[_0x6956('0x13')][_0x6956('0x15')]['SELECT']});})[_0x6956('0x16')](function(_0x2fb0bc){if(!_0x2fb0bc[0x0]['num']){return analyticExtractedReport(_0x6956('0x17'));}var _0x4c49b9=[];var _0x373775=0x0;if(_0x2f7106[_0x6956('0x11')]){if(_0x2fb0bc&&_0x2fb0bc[_0x6956('0x18')]){var _0x7935ac=_['range'](_0x2fb0bc[0x0][_0x6956('0x19')]/_0x5b765e);var _0x44a947=Number[_0x6956('0x1a')](_0x2fb0bc[0x0][_0x6956('0x19')]/_0x5b765e)?_0x2fb0bc[0x0]['num']%_0x5b765e:0x0;_0x7935ac[_0x6956('0x1b')](function(_0xae0229){if(_0xae0229>0x0){_0x373775+=_0x5b765e;}_0x4c49b9[_0x6956('0x1c')](dbH[_0x6956('0x13')][_0x6956('0x1d')](util['format'](_0x6956('0x1e'),QUERY,_0x5b765e,_0x373775),{'type':dbH[_0x6956('0x13')][_0x6956('0x15')][_0x6956('0x1f')]}));});if(_0x44a947>0x0){_0x373775+=_0x5b765e;_0x4c49b9[_0x6956('0x1c')](dbH[_0x6956('0x13')][_0x6956('0x1d')](util['format'](_0x6956('0x1e'),QUERY,_0x44a947,_0x373775),{'type':dbH[_0x6956('0x13')][_0x6956('0x15')]['SELECT']}));}}}else{_0x4c49b9[_0x6956('0x1c')](dbH[_0x6956('0x13')][_0x6956('0x1d')](QUERY,{'type':dbH[_0x6956('0x13')][_0x6956('0x15')][_0x6956('0x1f')]}));}var _0x2e84f7=path[_0x6956('0x20')](PATH);var _0x587ac3=path[_0x6956('0x21')](PATH,'.csv');var _0x52da9e=_0x2f7106['split']&&_0x4c49b9[_0x6956('0x18')]>0x1;var _0x3bc4e2=[];if(!fs[_0x6956('0x22')](path[_0x6956('0x23')](_0x2e84f7,_0x587ac3))&&_0x52da9e){fs[_0x6956('0x24')](path[_0x6956('0x23')](_0x2e84f7,_0x587ac3));}return BPromise[_0x6956('0x25')](_0x4c49b9,function(_0x1f64f9){_0x3bc4e2['push'](_0x1f64f9);})[_0x6956('0x16')](function(){for(var _0xb6c980=0x0;_0xb6c980<_0x3bc4e2[_0x6956('0x18')];_0xb6c980+=0x1){var _0x1ce495;var _0x39decf=_0x3bc4e2[_0xb6c980];if(_0x52da9e){_0x1ce495=path[_0x6956('0x23')](_0x2e84f7,_0x587ac3,util[_0x6956('0xc')](_0x6956('0x26'),_0x587ac3,_0xb6c980,'csv'));}else{_0x1ce495=path['join'](_0x2e84f7,util[_0x6956('0xc')]('%s.%s',_0x587ac3,_0x6956('0x27')));}fs[_0x6956('0x28')](_0x1ce495,csv(_0x39decf));}})[_0x6956('0x16')](function(){if(_0x52da9e){return new Promise(function(_0x51499d){zipdir(path[_0x6956('0x23')](_0x2e84f7,_0x587ac3),{'saveTo':path[_0x6956('0x23')](_0x2e84f7,util[_0x6956('0xc')]('%s.%s',_0x587ac3,'zip'))},function(_0x38b7a9,_0x5171a2){rimraf(path[_0x6956('0x23')](_0x2e84f7,_0x587ac3),function(){});_0x51499d(_0x6956('0x29'));});});}})[_0x6956('0x16')](function(){logger[_0x6956('0xb')](util[_0x6956('0xc')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x6956('0xe')));return analyticExtractedReport(_0x6956('0x2a'),_0x52da9e?util[_0x6956('0xc')](_0x6956('0x2b'),_0x587ac3,_0x52da9e?_0x6956('0x2c'):_0x6956('0x27')):null);});})[_0x6956('0x2d')](function(_0x274098){logger[_0x6956('0xb')](util[_0x6956('0xc')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x6956('0xe')),util['inspect'](_0x274098,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x6956('0x2e')](function(){process[_0x6956('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index c7e3057..1de4d79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78b0=['QueryTypes','SELECT','dirname','.pdf','existsSync','join','mkdirSync','flatten','createPdfKitDocument','pdf','%s.%s','all','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','PDF','findOne','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','YYYY-MM-DD','center','Interaction\x20Transcript','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','path','util','html-to-pdfmake','pdfmake/src/printer','rimraf','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','auto','push','body','concat','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','length','pageBreak','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d'];(function(_0x7fe714,_0x164bd7){var _0x10e9e1=function(_0x37e4fe){while(--_0x37e4fe){_0x7fe714['push'](_0x7fe714['shift']());}};_0x10e9e1(++_0x164bd7);}(_0x78b0,0x136));var _0x078b=function(_0x327d2d,_0x1bb4fd){_0x327d2d=_0x327d2d-0x0;var _0x93d154=_0x78b0[_0x327d2d];return _0x93d154;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x078b('0x0'));var path=require('path');var moment=require('moment');var htmlToPdfmake=require(_0x078b('0x1'));var PdfPrinter=require(_0x078b('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0x078b('0x3'));var JSDOM=require('jsdom')['JSDOM'];var window=new JSDOM('')[_0x078b('0x4')];var BPromise=require(_0x078b('0x5'));var db=require(_0x078b('0x6'))['db'];var dbH=require(_0x078b('0x6'))[_0x078b('0x7')];var logger=require(_0x078b('0x8'))(_0x078b('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x078b('0xa')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x078b('0xa')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x078b('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x49b8e8,_0x1361cf){var _0x31c699={'status':_0x49b8e8};var _0x17ded5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1361cf){_0x31c699['savename']=_0x1361cf;}return db[_0x078b('0xc')][_0x078b('0xd')](_0x31c699,_0x17ded5);}function getHeaders(_0x1c856c){return _[_0x078b('0xe')](_0x1c856c,function(_0x10b7dd){return{'text':_0x10b7dd,'style':_0x078b('0xf')};});}function getRows(_0x239ac4,_0xc38c20){return _['map'](_0xc38c20,function(_0x5d220d){return _(_0x5d220d)[_0x078b('0x10')](_0x239ac4)[_0x078b('0xe')](function(_0x599c92){return _0x599c92?_[_0x078b('0x11')](_0x599c92):'';})[_0x078b('0x12')]();});}function createTable(_0x18ac66,_0x45c3d2){var _0x14afeb={'widths':_[_0x078b('0x13')](Array(_0x18ac66['length']),0x91),'heights':function(_0x4c8722){return _0x4c8722===0x0?_0x078b('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3a3bca=getHeaders(_0x18ac66);_0x14afeb['body'][_0x078b('0x15')](_0x3a3bca);var _0x3ca91c=getRows(_0x18ac66,_0x45c3d2);_0x14afeb['body']=_0x14afeb[_0x078b('0x16')][_0x078b('0x17')](_0x3ca91c);return _0x14afeb;}function createTables(_0x4bce73){var _0x21b7a7=[];var _0x220b24=_['chunk'](Object['keys'](_0x4bce73[0x0]),0x5);_0x220b24[_0x078b('0x18')](function(_0x48fb07){_0x21b7a7[_0x078b('0x15')](createTable(_0x48fb07,_0x4bce73));});return _0x21b7a7;}function getPDFDocDefinition(_0xb6c9e6){var _0x420fd4=util[_0x078b('0x19')](_0x078b('0x1a'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x078b('0x1b')])[_0x078b('0x19')](FORMAT),moment(EXTRACTED_REPORT[_0x078b('0x1c')])[_0x078b('0x19')](FORMAT));var _0x19800b=[];for(var _0x1b80ea=0x0;_0x1b80ea<_0xb6c9e6[_0x078b('0x1d')];_0x1b80ea++){var _0x5e892a=[];if(_0x1b80ea===0x0){_0x5e892a[_0x078b('0x15')]({'text':_0x420fd4,'style':'header'});}var _0x310f49={'table':_0xb6c9e6[_0x1b80ea]};if(_0x1b80ea>0x0){_0x310f49[_0x078b('0x1e')]='before';_0x310f49[_0x078b('0x1f')]=[0x0,0x46,0x0,0x0];}_0x5e892a['push'](_0x310f49);_0x19800b[_0x078b('0x15')](_0x5e892a);}return{'pageSize':'A4','pageOrientation':_0x078b('0x20'),'content':_0x19800b,'footer':function(_0x1b0bec,_0x5227fa){return{'text':_0x1b0bec[_0x078b('0x11')]()+_0x078b('0x21')+_0x5227fa,'style':_0x078b('0x22')};},'defaultStyle':{'font':_0x078b('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x078b('0x24')},'footer':{'alignment':_0x078b('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x9b9f8b){var _0x456b9f=0x1388;var _0x1c0944;if(!_0x9b9f8b[0x0][_0x078b('0x26')]){return analyticExtractedReport(_0x078b('0x27'));}return db[_0x078b('0x28')][_0x078b('0x29')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x078b('0x2a'),_0x078b('0x2b')]})[_0x078b('0x2c')](function(_0x44c152){if(_0x44c152){_0x1c0944=_0x44c152;_0x456b9f=_0x1c0944[_0x078b('0x2b')]||0x3e8;}})[_0x078b('0x2c')](function(){var _0x1905f6=[];var _0x2c2a3e=0x0;if(_0x1c0944[_0x078b('0x2a')]){if(_0x9b9f8b&&_0x9b9f8b[_0x078b('0x1d')]){var _0x2f9b4c=_[_0x078b('0x2d')](_0x9b9f8b[0x0][_0x078b('0x26')]/_0x456b9f);var _0x17869e=Number[_0x078b('0x2e')](_0x9b9f8b[0x0][_0x078b('0x26')]/_0x456b9f)?_0x9b9f8b[0x0][_0x078b('0x26')]%_0x456b9f:0x0;_0x2f9b4c['forEach'](function(_0x3e3c14){if(_0x3e3c14>0x0){_0x2c2a3e+=_0x456b9f;}_0x1905f6[_0x078b('0x15')](dbH[_0x078b('0x2f')][_0x078b('0x30')](util['format'](_0x078b('0x31'),QUERY,_0x456b9f,_0x2c2a3e),{'type':dbH[_0x078b('0x2f')][_0x078b('0x32')]['SELECT']}));});if(_0x17869e>0x0){_0x2c2a3e+=_0x456b9f;_0x1905f6['push'](dbH[_0x078b('0x2f')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x17869e,_0x2c2a3e),{'type':dbH['sequelize'][_0x078b('0x32')][_0x078b('0x33')]}));}}}else{_0x1905f6[_0x078b('0x15')](dbH['sequelize'][_0x078b('0x30')](QUERY,{'type':dbH[_0x078b('0x2f')][_0x078b('0x32')]['SELECT']}));}var _0x3140a6=path[_0x078b('0x34')](PATH);var _0xeb7663=path['basename'](PATH,_0x078b('0x35'));var _0x11cb6f=_0x1c0944[_0x078b('0x2a')]&&_0x1905f6[_0x078b('0x1d')]>0x1;var _0x50df56=[];if(!fs[_0x078b('0x36')](path[_0x078b('0x37')](_0x3140a6,_0xeb7663))&&_0x11cb6f){fs[_0x078b('0x38')](path[_0x078b('0x37')](_0x3140a6,_0xeb7663));}return BPromise['each'](_0x1905f6,function(_0x2db019){_0x50df56['push'](_0x2db019);})[_0x078b('0x2c')](function(){var _0x273305=[];for(var _0x3816d2=0x0;_0x3816d2<_0x50df56[_0x078b('0x1d')];_0x3816d2+=0x1){var _0x84012b=_0x50df56[_0x3816d2];var _0x398367=createTables(_[_0x078b('0x39')](_0x84012b));var _0x6f4256;var _0x35329d=getPDFDocDefinition(_0x398367);var _0x3f59c5=getPDFPrinter();var _0x4f0bdc=_0x3f59c5[_0x078b('0x3a')](_0x35329d);if(_0x11cb6f){_0x6f4256=path[_0x078b('0x37')](_0x3140a6,_0xeb7663,util['format']('%s%d.%s',_0xeb7663,_0x3816d2,_0x078b('0x3b')));}else{_0x6f4256=path[_0x078b('0x37')](_0x3140a6,util['format'](_0x078b('0x3c'),_0xeb7663,'pdf'));}_0x273305[_0x078b('0x15')](writePDFDocument(_0x4f0bdc,_0x6f4256));}return Promise[_0x078b('0x3d')](_0x273305);})[_0x078b('0x2c')](function(){if(_0x11cb6f){return new Promise(function(_0x3263fb){zipdir(path[_0x078b('0x37')](_0x3140a6,_0xeb7663),{'saveTo':path[_0x078b('0x37')](_0x3140a6,util[_0x078b('0x19')](_0x078b('0x3c'),_0xeb7663,_0x078b('0x3e')))},function(){rimraf(path[_0x078b('0x37')](_0x3140a6,_0xeb7663),function(){});_0x3263fb('zip\x20finished');});});}})['then'](function(){if(!_0x11cb6f)return;rimraf(path[_0x078b('0x37')](_0x3140a6,_0xeb7663),function(){});})[_0x078b('0x2c')](function(){logger[_0x078b('0x3f')](util[_0x078b('0x19')](_0x078b('0x40'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x078b('0x41'),_0x11cb6f?util[_0x078b('0x19')](_0x078b('0x3c'),_0xeb7663,_0x11cb6f?_0x078b('0x3e'):_0x078b('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x078b('0x3f')](util[_0x078b('0x19')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x078b('0x42')));return db[_0x078b('0xc')][_0x078b('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x078b('0x2c')](function(_0x2b6a46){EXTRACTED_REPORT=_0x2b6a46;return dbH[_0x078b('0x2f')][_0x078b('0x30')](util[_0x078b('0x19')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x078b('0x32')][_0x078b('0x33')]});})[_0x078b('0x2c')](extractReport)['catch'](function(_0x3695ea){logger['info'](util['format'](_0x078b('0x44'),EXTRACTED_REPORT_ID,_0x078b('0x42')),util[_0x078b('0x45')](_0x3695ea,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x078b('0x46'));})[_0x078b('0x47')](function(){process[_0x078b('0x48')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x552c52=new PdfPrinter({'Arial':{'normal':__dirname+_0x078b('0x49'),'bold':__dirname+_0x078b('0x4a'),'italics':__dirname+_0x078b('0x4b'),'bolditalics':__dirname+_0x078b('0x4c')}});return _0x552c52;}function getPDFDocDefinitionFromHTML(_0x1069e0,_0x36f9d0){var _0x24038c=util[_0x078b('0x19')](_0x078b('0x4d'),_0x36f9d0[_0x078b('0x4e')],_0x36f9d0['interactionId']);var _0x509cf5=moment()[_0x078b('0x19')](_0x078b('0x4f'))[_0x078b('0x11')]();var _0x43c687=htmlToPdfmake(_0x1069e0,{'window':window,'tableAutoSize':!![]});return{'content':[_0x43c687],'defaultStyle':{'font':_0x078b('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x078b('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x078b('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x078b('0x50')}},'header':function(){return[{'text':_0x078b('0x51'),'style':_0x078b('0x52')}];},'footer':function(_0x69b3c7,_0x295b85){return[{'text':util[_0x078b('0x19')](_0x078b('0x53'),_0x24038c,_0x69b3c7,_0x295b85,_0x509cf5),'style':'footer'}];}};}function writePDFDocument(_0x1f5086,_0x5e7a0c){return new Promise(function(_0x1516c8,_0x1f5dd4){var _0x263481=_0x1f5086[_0x078b('0x54')](fs[_0x078b('0x55')](_0x5e7a0c));_0x263481['on'](_0x078b('0x56'),function(){_0x1516c8('finish');});_0x263481['on'](_0x078b('0x57'),function(_0x1a9a62){_0x1f5dd4(_0x1a9a62);});_0x1f5086[_0x078b('0x58')]();});}exports['createPdfFromHTML']=function(_0x129d3b,_0x3041e4){var _0x2e78e3=getPDFPrinter();var _0x37f337=getPDFDocDefinitionFromHTML(_0x129d3b,_0x3041e4);var _0x5ccc1a=_0x2e78e3[_0x078b('0x3a')](_0x37f337);return writePDFDocument(_0x5ccc1a,_0x3041e4[_0x078b('0x59')])['catch'](function(_0x1ad794){throw _0x1ad794;});};
\ No newline at end of file
+var _0xaf3d=['toString','value','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','pageBreak','margin','\x20/\x20','footer','Arial','black','Setting','find','split','splitSizePdf','then','range','num','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','path','lodash','util','moment','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick'];(function(_0x47d033,_0x185ac3){var _0x2f83d8=function(_0x3a8380){while(--_0x3a8380){_0x47d033['push'](_0x47d033['shift']());}};_0x2f83d8(++_0x185ac3);}(_0xaf3d,0x1c2));var _0xdaf3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaf3d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdaf3('0x0'));var fs=require('fs');var util=require(_0xdaf3('0x1'));var path=require('path');var moment=require(_0xdaf3('0x2'));var htmlToPdfmake=require(_0xdaf3('0x3'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0xdaf3('0x4'));var rimraf=require(_0xdaf3('0x5'));var JSDOM=require(_0xdaf3('0x6'))[_0xdaf3('0x7')];var window=new JSDOM('')[_0xdaf3('0x8')];var BPromise=require(_0xdaf3('0x9'));var db=require(_0xdaf3('0xa'))['db'];var dbH=require(_0xdaf3('0xa'))['dbH'];var logger=require('../../config/logger')(_0xdaf3('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0xdaf3('0xc')][0x2]);var QUERY=process[_0xdaf3('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0xdaf3('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1a722c,_0x3fab57){var _0x513644={'status':_0x1a722c};var _0x45aa87={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3fab57){_0x513644[_0xdaf3('0xe')]=_0x3fab57;}return db[_0xdaf3('0xf')][_0xdaf3('0x10')](_0x513644,_0x45aa87);}function getHeaders(_0x2906ae){return _[_0xdaf3('0x11')](_0x2906ae,function(_0x76b4ce){return{'text':_0x76b4ce,'style':_0xdaf3('0x12')};});}function getRows(_0x3fc0fb,_0x4bf785){return _[_0xdaf3('0x11')](_0x4bf785,function(_0x19226b){return _(_0x19226b)[_0xdaf3('0x13')](_0x3fc0fb)[_0xdaf3('0x11')](function(_0x4a8084){return _0x4a8084?_[_0xdaf3('0x14')](_0x4a8084):'';})[_0xdaf3('0x15')]();});}function createTable(_0x3f4300,_0xa50b06){var _0x4186a5={'widths':_['fill'](Array(_0x3f4300[_0xdaf3('0x16')]),0x91),'heights':function(_0x5db6f7){return _0x5db6f7===0x0?_0xdaf3('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5a4419=getHeaders(_0x3f4300);_0x4186a5[_0xdaf3('0x18')][_0xdaf3('0x19')](_0x5a4419);var _0x43465f=getRows(_0x3f4300,_0xa50b06);_0x4186a5[_0xdaf3('0x18')]=_0x4186a5[_0xdaf3('0x18')][_0xdaf3('0x1a')](_0x43465f);return _0x4186a5;}function createTables(_0x9e7b8c){var _0x39045d=[];var _0x306aa7=_[_0xdaf3('0x1b')](Object[_0xdaf3('0x1c')](_0x9e7b8c[0x0]),0x5);_0x306aa7[_0xdaf3('0x1d')](function(_0x34235e){_0x39045d[_0xdaf3('0x19')](createTable(_0x34235e,_0x9e7b8c));});return _0x39045d;}function getPDFDocDefinition(_0x42b108){var _0x56b3e0=util[_0xdaf3('0x1e')](_0xdaf3('0x1f'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0xdaf3('0x20')])[_0xdaf3('0x1e')](FORMAT),moment(EXTRACTED_REPORT[_0xdaf3('0x21')])[_0xdaf3('0x1e')](FORMAT));var _0x5b49f1=[];for(var _0x53071a=0x0;_0x53071a<_0x42b108[_0xdaf3('0x16')];_0x53071a++){var _0x44337d=[];if(_0x53071a===0x0){_0x44337d[_0xdaf3('0x19')]({'text':_0x56b3e0,'style':'header'});}var _0x137ec8={'table':_0x42b108[_0x53071a]};if(_0x53071a>0x0){_0x137ec8[_0xdaf3('0x22')]='before';_0x137ec8[_0xdaf3('0x23')]=[0x0,0x46,0x0,0x0];}_0x44337d['push'](_0x137ec8);_0x5b49f1[_0xdaf3('0x19')](_0x44337d);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x5b49f1,'footer':function(_0x4e5036,_0x27bcbe){return{'text':_0x4e5036[_0xdaf3('0x14')]()+_0xdaf3('0x24')+_0x27bcbe,'style':_0xdaf3('0x25')};},'defaultStyle':{'font':_0xdaf3('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xdaf3('0x27')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1552b1){var _0x5b0ac2=0x1388;var _0x2691b8;if(!_0x1552b1[0x0]['num']){return analyticExtractedReport('Empty');}return db[_0xdaf3('0x28')][_0xdaf3('0x29')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xdaf3('0x2a'),_0xdaf3('0x2b')]})[_0xdaf3('0x2c')](function(_0x7dd150){if(_0x7dd150){_0x2691b8=_0x7dd150;_0x5b0ac2=_0x2691b8[_0xdaf3('0x2b')]||0x3e8;}})['then'](function(){var _0x50a22f=[];var _0x30f84f=0x0;if(_0x2691b8[_0xdaf3('0x2a')]){if(_0x1552b1&&_0x1552b1[_0xdaf3('0x16')]){var _0x3aad65=_[_0xdaf3('0x2d')](_0x1552b1[0x0][_0xdaf3('0x2e')]/_0x5b0ac2);var _0x3a6714=Number[_0xdaf3('0x2f')](_0x1552b1[0x0]['num']/_0x5b0ac2)?_0x1552b1[0x0][_0xdaf3('0x2e')]%_0x5b0ac2:0x0;_0x3aad65[_0xdaf3('0x1d')](function(_0x7d9c7d){if(_0x7d9c7d>0x0){_0x30f84f+=_0x5b0ac2;}_0x50a22f[_0xdaf3('0x19')](dbH['sequelize'][_0xdaf3('0x30')](util[_0xdaf3('0x1e')](_0xdaf3('0x31'),QUERY,_0x5b0ac2,_0x30f84f),{'type':dbH[_0xdaf3('0x32')][_0xdaf3('0x33')]['SELECT']}));});if(_0x3a6714>0x0){_0x30f84f+=_0x5b0ac2;_0x50a22f['push'](dbH[_0xdaf3('0x32')][_0xdaf3('0x30')](util[_0xdaf3('0x1e')](_0xdaf3('0x31'),QUERY,_0x3a6714,_0x30f84f),{'type':dbH[_0xdaf3('0x32')][_0xdaf3('0x33')][_0xdaf3('0x34')]}));}}}else{_0x50a22f[_0xdaf3('0x19')](dbH[_0xdaf3('0x32')][_0xdaf3('0x30')](QUERY,{'type':dbH[_0xdaf3('0x32')][_0xdaf3('0x33')][_0xdaf3('0x34')]}));}var _0x1b118a=path[_0xdaf3('0x35')](PATH);var _0x1e2a7b=path['basename'](PATH,_0xdaf3('0x36'));var _0x1a3ab5=_0x2691b8['split']&&_0x50a22f[_0xdaf3('0x16')]>0x1;var _0x347d52=[];if(!fs[_0xdaf3('0x37')](path[_0xdaf3('0x38')](_0x1b118a,_0x1e2a7b))&&_0x1a3ab5){fs[_0xdaf3('0x39')](path['join'](_0x1b118a,_0x1e2a7b));}return BPromise[_0xdaf3('0x3a')](_0x50a22f,function(_0x5d00b0){_0x347d52[_0xdaf3('0x19')](_0x5d00b0);})['then'](function(){var _0x392ed3=[];for(var _0x57ff02=0x0;_0x57ff02<_0x347d52[_0xdaf3('0x16')];_0x57ff02+=0x1){var _0x376900=_0x347d52[_0x57ff02];var _0x517a98=createTables(_[_0xdaf3('0x3b')](_0x376900));var _0x5ad3bc;var _0x4b1fc3=getPDFDocDefinition(_0x517a98);var _0x2b6c5c=getPDFPrinter();var _0x1b9d94=_0x2b6c5c[_0xdaf3('0x3c')](_0x4b1fc3);if(_0x1a3ab5){_0x5ad3bc=path['join'](_0x1b118a,_0x1e2a7b,util[_0xdaf3('0x1e')]('%s%d.%s',_0x1e2a7b,_0x57ff02,_0xdaf3('0x3d')));}else{_0x5ad3bc=path['join'](_0x1b118a,util[_0xdaf3('0x1e')](_0xdaf3('0x3e'),_0x1e2a7b,_0xdaf3('0x3d')));}_0x392ed3[_0xdaf3('0x19')](writePDFDocument(_0x1b9d94,_0x5ad3bc));}return Promise[_0xdaf3('0x3f')](_0x392ed3);})[_0xdaf3('0x2c')](function(){if(_0x1a3ab5){return new Promise(function(_0x1da56d){zipdir(path[_0xdaf3('0x38')](_0x1b118a,_0x1e2a7b),{'saveTo':path['join'](_0x1b118a,util['format'](_0xdaf3('0x3e'),_0x1e2a7b,_0xdaf3('0x40')))},function(){rimraf(path[_0xdaf3('0x38')](_0x1b118a,_0x1e2a7b),function(){});_0x1da56d(_0xdaf3('0x41'));});});}})['then'](function(){if(!_0x1a3ab5)return;rimraf(path[_0xdaf3('0x38')](_0x1b118a,_0x1e2a7b),function(){});})['then'](function(){logger[_0xdaf3('0x42')](util['format'](_0xdaf3('0x43'),EXTRACTED_REPORT_ID,_0xdaf3('0x44')));return analyticExtractedReport('Completed',_0x1a3ab5?util[_0xdaf3('0x1e')](_0xdaf3('0x3e'),_0x1e2a7b,_0x1a3ab5?'zip':_0xdaf3('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xdaf3('0x44')));return db[_0xdaf3('0xf')][_0xdaf3('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xdaf3('0x2c')](function(_0x599190){EXTRACTED_REPORT=_0x599190;return dbH[_0xdaf3('0x32')][_0xdaf3('0x30')](util[_0xdaf3('0x1e')](_0xdaf3('0x46'),QUERY),{'type':dbH[_0xdaf3('0x32')][_0xdaf3('0x33')][_0xdaf3('0x34')]});})['then'](extractReport)[_0xdaf3('0x47')](function(_0x417aec){logger[_0xdaf3('0x42')](util['format'](_0xdaf3('0x48'),EXTRACTED_REPORT_ID,_0xdaf3('0x44')),util['inspect'](_0x417aec,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xdaf3('0x49'));})[_0xdaf3('0x4a')](function(){process[_0xdaf3('0x4b')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5c1de1=new PdfPrinter({'Arial':{'normal':__dirname+_0xdaf3('0x4c'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0xdaf3('0x4d'),'bolditalics':__dirname+_0xdaf3('0x4e')}});return _0x5c1de1;}function getPDFDocDefinitionFromHTML(_0xa25dee,_0x929d71){var _0x3f9402=util['format'](_0xdaf3('0x4f'),_0x929d71[_0xdaf3('0x50')],_0x929d71[_0xdaf3('0x51')]);var _0x417043=moment()['format'](_0xdaf3('0x52'))[_0xdaf3('0x14')]();var _0x443d70=htmlToPdfmake(_0xa25dee,{'window':window,'tableAutoSize':!![]});return{'content':[_0x443d70],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xdaf3('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xdaf3('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xdaf3('0x53')}},'header':function(){return[{'text':_0xdaf3('0x54'),'style':_0xdaf3('0x55')}];},'footer':function(_0x153a60,_0x2472a7){return[{'text':util[_0xdaf3('0x1e')](_0xdaf3('0x56'),_0x3f9402,_0x153a60,_0x2472a7,_0x417043),'style':_0xdaf3('0x25')}];}};}function writePDFDocument(_0x1546ba,_0x4eb00b){return new Promise(function(_0x3384a4,_0x5cadd8){var _0x7fe7e9=_0x1546ba[_0xdaf3('0x57')](fs[_0xdaf3('0x58')](_0x4eb00b));_0x7fe7e9['on'](_0xdaf3('0x59'),function(){_0x3384a4(_0xdaf3('0x59'));});_0x7fe7e9['on'](_0xdaf3('0x5a'),function(_0x45ca49){_0x5cadd8(_0x45ca49);});_0x1546ba[_0xdaf3('0x5b')]();});}exports[_0xdaf3('0x5c')]=function(_0x12f6f4,_0x4a49b4){var _0x4be2e0=getPDFPrinter();var _0x8d2d00=getPDFDocDefinitionFromHTML(_0x12f6f4,_0x4a49b4);var _0x4d08d6=_0x4be2e0[_0xdaf3('0x3c')](_0x8d2d00);return writePDFDocument(_0x4d08d6,_0x4a49b4[_0xdaf3('0x5d')])['catch'](function(_0x5ceeae){throw _0x5ceeae;});};
\ No newline at end of file
index d0e7180..0b7f76e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4a5=['dbH','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','splitSizeXlsx','query','format','QueryTypes','then','num','isInteger','forEach','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','join','mkdirSync','push','length','%s%d.%s','xlsx','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb'];(function(_0x42695a,_0x12f785){var _0x40edff=function(_0x1023a8){while(--_0x1023a8){_0x42695a['push'](_0x42695a['shift']());}};_0x40edff(++_0x12f785);}(_0xf4a5,0x1cf));var _0x5f4a=function(_0x2dfffc,_0x3411af){_0x2dfffc=_0x2dfffc-0x0;var _0xf9d20d=_0xf4a5[_0x2dfffc];return _0xf9d20d;};'use strict';var util=require('util');var path=require(_0x5f4a('0x0'));var _=require(_0x5f4a('0x1'));var fs=require('fs');var json2xls=require(_0x5f4a('0x2'));var BPromise=require(_0x5f4a('0x3'));var zipdir=require(_0x5f4a('0x4'));var rimraf=require(_0x5f4a('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0x5f4a('0x6'))[_0x5f4a('0x7')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x5f4a('0x8')][0x2]);var QUERY=process[_0x5f4a('0x8')][0x3];var PATH=process[_0x5f4a('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3f1075,_0x24890a){var _0x1330a3={'status':_0x3f1075};var _0x1a52bd={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x24890a){_0x1330a3[_0x5f4a('0x9')]=_0x24890a;}return db[_0x5f4a('0xa')][_0x5f4a('0xb')](_0x1330a3,_0x1a52bd);}function main(){var _0x350c82=0x1388;var _0x361f00;logger[_0x5f4a('0xc')](util['format'](_0x5f4a('0xd'),EXTRACTED_REPORT_ID,_0x5f4a('0xe')));return db[_0x5f4a('0xf')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x5f4a('0x10'),_0x5f4a('0x11')]})['then'](function(_0x1ff43c){if(_0x1ff43c){_0x361f00=_0x1ff43c;_0x350c82=_0x361f00[_0x5f4a('0x11')]||0x1388;}})['then'](function(){return dbH['sequelize'][_0x5f4a('0x12')](util[_0x5f4a('0x13')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x5f4a('0x14')]['SELECT']});})[_0x5f4a('0x15')](function(_0x2b6a8f){if(!_0x2b6a8f[0x0]['num']){return analyticExtractedReport('Empty');}var _0x13460a=[];var _0x30fd33=0x0;if(_0x361f00[_0x5f4a('0x10')]){if(_0x2b6a8f&&_0x2b6a8f['length']){var _0x1b1a31=_['range'](_0x2b6a8f[0x0][_0x5f4a('0x16')]/_0x350c82);var _0x34b6eb=Number[_0x5f4a('0x17')](_0x2b6a8f[0x0][_0x5f4a('0x16')]/_0x350c82)?_0x2b6a8f[0x0][_0x5f4a('0x16')]%_0x350c82:0x0;_0x1b1a31[_0x5f4a('0x18')](function(_0x2985ab){if(_0x2985ab>0x0){_0x30fd33+=_0x350c82;}_0x13460a['push'](dbH[_0x5f4a('0x19')]['query'](util[_0x5f4a('0x13')](_0x5f4a('0x1a'),QUERY,_0x350c82,_0x30fd33),{'type':dbH[_0x5f4a('0x19')]['QueryTypes'][_0x5f4a('0x1b')]}));});if(_0x34b6eb>0x0){_0x30fd33+=_0x350c82;_0x13460a['push'](dbH[_0x5f4a('0x19')][_0x5f4a('0x12')](util['format'](_0x5f4a('0x1a'),QUERY,_0x34b6eb,_0x30fd33),{'type':dbH[_0x5f4a('0x19')][_0x5f4a('0x14')][_0x5f4a('0x1b')]}));}}}else{_0x13460a['push'](dbH[_0x5f4a('0x19')][_0x5f4a('0x12')](QUERY,{'type':dbH[_0x5f4a('0x19')][_0x5f4a('0x14')][_0x5f4a('0x1b')]}));}var _0x1aa5b4=path[_0x5f4a('0x1c')](PATH);var _0x69412b=path[_0x5f4a('0x1d')](PATH,_0x5f4a('0x1e'));var _0x1809a5=_0x361f00[_0x5f4a('0x10')]&&_0x13460a['length']>0x1;var _0x1a41a1=[];if(!fs['existsSync'](path[_0x5f4a('0x1f')](_0x1aa5b4,_0x69412b))&&_0x1809a5){fs[_0x5f4a('0x20')](path[_0x5f4a('0x1f')](_0x1aa5b4,_0x69412b));}return BPromise['each'](_0x13460a,function(_0x5f87d9){_0x1a41a1[_0x5f4a('0x21')](_0x5f87d9);})[_0x5f4a('0x15')](function(){for(var _0x25e25a=0x0;_0x25e25a<_0x1a41a1[_0x5f4a('0x22')];_0x25e25a+=0x1){var _0x5d1e62;var _0x78525=_0x1a41a1[_0x25e25a];if(_0x1809a5){_0x5d1e62=path['join'](_0x1aa5b4,_0x69412b,util['format'](_0x5f4a('0x23'),_0x69412b,_0x25e25a,_0x5f4a('0x24')));}else{_0x5d1e62=path[_0x5f4a('0x1f')](_0x1aa5b4,util[_0x5f4a('0x13')](_0x5f4a('0x25'),_0x69412b,_0x5f4a('0x24')));}fs[_0x5f4a('0x26')](_0x5d1e62,json2xls(_0x78525),'binary');}})[_0x5f4a('0x15')](function(){if(_0x1809a5){return new Promise(function(_0x143913){zipdir(path['join'](_0x1aa5b4,_0x69412b),{'saveTo':path[_0x5f4a('0x1f')](_0x1aa5b4,util[_0x5f4a('0x13')]('%s.%s',_0x69412b,_0x5f4a('0x27')))},function(_0x2fca3d,_0x41723d){rimraf(path['join'](_0x1aa5b4,_0x69412b),function(){});_0x143913(_0x5f4a('0x28'));});});}})[_0x5f4a('0x15')](function(){logger[_0x5f4a('0xc')](util['format'](_0x5f4a('0x29'),EXTRACTED_REPORT_ID,_0x5f4a('0xe')));return analyticExtractedReport(_0x5f4a('0x2a'),_0x1809a5?util['format'](_0x5f4a('0x25'),_0x69412b,_0x1809a5?_0x5f4a('0x27'):_0x5f4a('0x24')):null);});})[_0x5f4a('0x2b')](function(_0xb11629){logger[_0x5f4a('0xc')](util[_0x5f4a('0x13')](_0x5f4a('0x2c'),EXTRACTED_REPORT_ID,_0x5f4a('0xe')),util[_0x5f4a('0x2d')](_0xb11629,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x5f4a('0x2e')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xf712=['util','path','lodash','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','QueryTypes','num','length','range','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','existsSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf712,0x195));var _0x2f71=function(_0x4988b0,_0x3edc8d){_0x4988b0=_0x4988b0-0x0;var _0x2471d4=_0xf712[_0x4988b0];return _0x2471d4;};'use strict';var util=require(_0x2f71('0x0'));var path=require(_0x2f71('0x1'));var _=require(_0x2f71('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x2f71('0x3'));var db=require('../../mysqldb')['db'];var dbH=require(_0x2f71('0x4'))[_0x2f71('0x5')];var logger=require(_0x2f71('0x6'))(_0x2f71('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x2f71('0x8')][0x2]);var QUERY=process[_0x2f71('0x8')][0x3];var PATH=process[_0x2f71('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5b1b50,_0x137c28){var _0x14b257={'status':_0x5b1b50};var _0x40b204={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x137c28){_0x14b257['savename']=_0x137c28;}return db['AnalyticExtractedReport'][_0x2f71('0x9')](_0x14b257,_0x40b204);}function main(){var _0x4e406b=0x1388;var _0x515179;logger[_0x2f71('0xa')](util[_0x2f71('0xb')](_0x2f71('0xc'),EXTRACTED_REPORT_ID,_0x2f71('0xd')));return db[_0x2f71('0xe')][_0x2f71('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2f71('0x10'),_0x2f71('0x11')]})[_0x2f71('0x12')](function(_0x4308b7){if(_0x4308b7){_0x515179=_0x4308b7;_0x4e406b=_0x515179[_0x2f71('0x11')]||0x1388;}})['then'](function(){return dbH[_0x2f71('0x13')][_0x2f71('0x14')](util[_0x2f71('0xb')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x2f71('0x15')]['SELECT']});})[_0x2f71('0x12')](function(_0x2016e2){if(!_0x2016e2[0x0][_0x2f71('0x16')]){return analyticExtractedReport('Empty');}var _0x16501e=[];var _0xef4f35=0x0;if(_0x515179[_0x2f71('0x10')]){if(_0x2016e2&&_0x2016e2[_0x2f71('0x17')]){var _0x4abcf4=_[_0x2f71('0x18')](_0x2016e2[0x0][_0x2f71('0x16')]/_0x4e406b);var _0x44609e=Number['isInteger'](_0x2016e2[0x0]['num']/_0x4e406b)?_0x2016e2[0x0][_0x2f71('0x16')]%_0x4e406b:0x0;_0x4abcf4['forEach'](function(_0x56bcad){if(_0x56bcad>0x0){_0xef4f35+=_0x4e406b;}_0x16501e[_0x2f71('0x19')](dbH['sequelize'][_0x2f71('0x14')](util[_0x2f71('0xb')](_0x2f71('0x1a'),QUERY,_0x4e406b,_0xef4f35),{'type':dbH['sequelize'][_0x2f71('0x15')][_0x2f71('0x1b')]}));});if(_0x44609e>0x0){_0xef4f35+=_0x4e406b;_0x16501e['push'](dbH[_0x2f71('0x13')]['query'](util[_0x2f71('0xb')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x44609e,_0xef4f35),{'type':dbH[_0x2f71('0x13')][_0x2f71('0x15')][_0x2f71('0x1b')]}));}}}else{_0x16501e[_0x2f71('0x19')](dbH[_0x2f71('0x13')][_0x2f71('0x14')](QUERY,{'type':dbH[_0x2f71('0x13')][_0x2f71('0x15')][_0x2f71('0x1b')]}));}var _0x4f5e65=path[_0x2f71('0x1c')](PATH);var _0x431fd9=path[_0x2f71('0x1d')](PATH,'.xlsx');var _0x2ef86c=_0x515179['split']&&_0x16501e[_0x2f71('0x17')]>0x1;var _0x5822aa=[];if(!fs[_0x2f71('0x1e')](path[_0x2f71('0x1f')](_0x4f5e65,_0x431fd9))&&_0x2ef86c){fs['mkdirSync'](path['join'](_0x4f5e65,_0x431fd9));}return BPromise[_0x2f71('0x20')](_0x16501e,function(_0xe44121){_0x5822aa[_0x2f71('0x19')](_0xe44121);})['then'](function(){for(var _0x30db7f=0x0;_0x30db7f<_0x5822aa[_0x2f71('0x17')];_0x30db7f+=0x1){var _0x66c791;var _0x18dc65=_0x5822aa[_0x30db7f];if(_0x2ef86c){_0x66c791=path['join'](_0x4f5e65,_0x431fd9,util[_0x2f71('0xb')](_0x2f71('0x21'),_0x431fd9,_0x30db7f,_0x2f71('0x22')));}else{_0x66c791=path['join'](_0x4f5e65,util['format'](_0x2f71('0x23'),_0x431fd9,'xlsx'));}fs[_0x2f71('0x24')](_0x66c791,json2xls(_0x18dc65),_0x2f71('0x25'));}})[_0x2f71('0x12')](function(){if(_0x2ef86c){return new Promise(function(_0x5d3171){zipdir(path[_0x2f71('0x1f')](_0x4f5e65,_0x431fd9),{'saveTo':path[_0x2f71('0x1f')](_0x4f5e65,util['format']('%s.%s',_0x431fd9,_0x2f71('0x26')))},function(_0xde9ec0,_0x5787dd){rimraf(path[_0x2f71('0x1f')](_0x4f5e65,_0x431fd9),function(){});_0x5d3171('zip\x20finished');});});}})[_0x2f71('0x12')](function(){logger['info'](util['format'](_0x2f71('0x27'),EXTRACTED_REPORT_ID,_0x2f71('0xd')));return analyticExtractedReport(_0x2f71('0x28'),_0x2ef86c?util[_0x2f71('0xb')](_0x2f71('0x23'),_0x431fd9,_0x2ef86c?'zip':_0x2f71('0x22')):null);});})['catch'](function(_0x4deaed){logger['info'](util[_0x2f71('0xb')](_0x2f71('0x29'),EXTRACTED_REPORT_ID,_0x2f71('0xd')),util[_0x2f71('0x2a')](_0x4deaed,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x2f71('0x2b')](function(){process[_0x2f71('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
index d8ebe96..0a1c699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd72=['_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','VoiceExtension','destroy','bulkCreate','sortBy','catch','rewrite','lodash','models','Interval','findAll','then','intervals','IntervalId','uniq','map','exten','filter','queue','priority','extension','find','push','type','Set','format','context','inbound','extensions','VoiceExtensionId','outbound','cutdigits','${EXTEN:','${EXTEN}','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none'];(function(_0x1431db,_0x2160f7){var _0x5dcb4a=function(_0x1c22fd){while(--_0x1c22fd){_0x1431db['push'](_0x1431db['shift']());}};_0x5dcb4a(++_0x2160f7);}(_0xbd72,0x1b2));var _0x2bd7=function(_0x172ed7,_0x3d08fd){_0x172ed7=_0x172ed7-0x0;var _0xfa8f61=_0xbd72[_0x172ed7];return _0xfa8f61;};'use strict';var _=require(_0x2bd7('0x0'));var util=require('util');function rewrite(_0x38e66c,_0x101fe4){var _0x169591=this;return _0x38e66c[_0x2bd7('0x1')][_0x2bd7('0x2')][_0x2bd7('0x3')]({'raw':!![]})[_0x2bd7('0x4')](function(_0x34d0d8){_0x169591[_0x2bd7('0x5')]=_0x34d0d8;return _0x38e66c['models']['VoiceExtension'][_0x2bd7('0x3')]({'where':{'IntervalId':_0x101fe4[_0x2bd7('0x6')]},'raw':!![]});})[_0x2bd7('0x4')](function(_0x5eebb6){return _0x38e66c['models']['VoiceExtension'][_0x2bd7('0x3')]({'where':{'exten':{'$in':_[_0x2bd7('0x7')](_[_0x2bd7('0x8')](_0x5eebb6,_0x2bd7('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x2bd7('0x4')](function(_0x590021){var _0x4191e5=_[_0x2bd7('0xa')](_0x590021,{'priority':'1'});var _0x4de2c2=_[_0x2bd7('0xa')](_0x590021,{'isApp':0x1});var _0x4981a0=_['groupBy'](_0x4de2c2,_0x2bd7('0x9'));var _0x31aaf8=[_0x2bd7('0xb'),'playback'];var _0x23297d=[];var _0x3ec155=[];for(var _0x56178c in _0x4981a0){if(_0x4981a0['hasOwnProperty'](_0x56178c)){_0x169591[_0x2bd7('0xc')]=0x2;_0x169591['extensions']=[];_0x169591[_0x2bd7('0xd')]=_[_0x2bd7('0xe')](_0x4191e5,{'exten':_0x4981a0[_0x56178c][0x0]['exten']});_0x169591['extensions'][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':util[_0x2bd7('0x12')]('CDR(type)=%s',_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')]),'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0]['VoiceExtensionId']});if(_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')]===_0x2bd7('0x14')){_0x169591[_0x2bd7('0x15')][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':'CDR(routeid)='+_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')],'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});}else if(_0x4981a0[_0x56178c][0x0]['type']===_0x2bd7('0x17')){if(_0x169591['extension']){_0x169591[_0x2bd7('0x15')]['push']({'type':_0x4981a0[_0x56178c][0x0]['type'],'app':_0x2bd7('0x11'),'appdata':'CDR(destination)='+(_0x169591[_0x2bd7('0xd')][_0x2bd7('0x18')]?_0x2bd7('0x19')+_0x169591[_0x2bd7('0xd')][_0x2bd7('0x18')]+'}':_0x2bd7('0x1a')),'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0]['VoiceExtensionId']});}_0x169591['extensions'][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x1b')+_0x4981a0[_0x56178c][0x0]['VoiceExtensionId'],'context':_0x4981a0[_0x56178c][0x0]['context'],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591['priority']++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});var _0x5db94a=_0x169591[_0x2bd7('0xc')]++;_0x169591[_0x2bd7('0x15')][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':'ExecIf','appdata':_0x2bd7('0x1c')+(_0x5db94a+0x2)+'):Goto('+(_0x5db94a+0x1)+')','context':_0x4981a0[_0x56178c][0x0]['context'],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x5db94a,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});if(_0x169591[_0x2bd7('0xd')]){_0x169591[_0x2bd7('0x15')][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0]['type'],'app':'Set','appdata':_0x169591['extension']['cutdigits']?_0x2bd7('0x1d')+_0x169591['extension']['cutdigits']+'}':_0x2bd7('0x1e'),'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591['priority']++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});}_0x169591[_0x2bd7('0x15')][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x1f')+_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')],'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});if(_0x169591[_0x2bd7('0xd')]&&_0x169591[_0x2bd7('0xd')][_0x2bd7('0x20')]('recordingFormat')&&_0x169591['extension'][_0x2bd7('0x21')]!==_0x2bd7('0x22')){_0x169591[_0x2bd7('0x15')][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0]['VoiceExtensionId']});_0x169591[_0x2bd7('0x15')]['push']({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x23')+_0x169591[_0x2bd7('0xd')]['recordingFormat']||'wav','context':_0x4981a0[_0x56178c][0x0]['context'],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});}}_0x169591['extensions'][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x24'),'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0]['exten'],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});_0x169591['extensions'][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x25'),'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});_0x169591['extensions']['push']({'type':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x10')],'app':'Set','appdata':_0x2bd7('0x26'),'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'priority':_0x169591[_0x2bd7('0xc')]++,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});for(var _0x39de6e=0x0,_0x265f62=0x0;_0x39de6e<_0x4981a0[_0x56178c][_0x2bd7('0x27')];_0x39de6e+=0x1,_0x265f62=0x0){var _0x5e36dd=_0x4981a0[_0x56178c][_0x39de6e];if(_0x5e36dd[_0x2bd7('0x10')]){_0x5e36dd[_0x2bd7('0x10')]=_0x5e36dd[_0x2bd7('0x10')][_0x2bd7('0x28')]();}var _0x4e0dfe=[];var _0x41758e=[];delete _0x5e36dd['id'];delete _0x5e36dd['createdAt'];delete _0x5e36dd[_0x2bd7('0x29')];var _0x1aea9c=_0x5e36dd[_0x2bd7('0x2a')]!==_0x2bd7('0x2b')?[_0x5e36dd[_0x2bd7('0x2a')]]:_0x5e36dd['IntervalId']?_['map'](_['filter'](_0x169591[_0x2bd7('0x5')],{'IntervalId':_0x5e36dd[_0x2bd7('0x6')]}),_0x2bd7('0x2a')):[];if(_0x5e36dd[_0x2bd7('0x20')](_0x2bd7('0x2c'))){if(_0x5e36dd[_0x2bd7('0x2c')]&&_0x5e36dd[_0x2bd7('0x2c')]!=='--'){_0x4e0dfe[_0x2bd7('0xf')]({'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x2d')+_0x5e36dd['tag'],'context':_0x5e36dd[_0x2bd7('0x13')],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c[_0x2bd7('0x27')]+_0x169591[_0x2bd7('0xc')]+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});}}if(_0x5e36dd[_0x2bd7('0x10')]==='outbound'&&_0x5e36dd[_0x2bd7('0x20')](_0x2bd7('0x2e'))){if(_0x5e36dd['callerID']){_0x4e0dfe[_0x2bd7('0xf')]({'type':_0x5e36dd[_0x2bd7('0x10')],'app':'ExecIf','appdata':_0x2bd7('0x2f')+_0x5e36dd[_0x2bd7('0x2e')]+')','context':_0x5e36dd['context'],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c[_0x2bd7('0x27')]+_0x169591[_0x2bd7('0xc')]+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});}else{_0x4e0dfe[_0x2bd7('0xf')]({'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x30'),'appdata':_0x2bd7('0x31'),'context':_0x5e36dd['context'],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c['length']+_0x169591[_0x2bd7('0xc')]+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});}}if(_0x5e36dd[_0x2bd7('0x20')]('answer')){if(_0x31aaf8['indexOf'](_0x5e36dd['app'][_0x2bd7('0x28')]())>=0x0&&_0x5e36dd['appType']!==_0x2bd7('0x32')){if(_0x5e36dd['answer']){_0x4e0dfe[_0x2bd7('0xf')]({'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x30'),'appdata':_0x2bd7('0x33'),'context':_0x5e36dd['context'],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c['length']+_0x169591['priority']+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});_0x4e0dfe[_0x2bd7('0xf')]({'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x34'),'context':_0x5e36dd[_0x2bd7('0x13')],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c[_0x2bd7('0x27')]+_0x169591['priority']+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});}else{_0x4e0dfe['push']({'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x30'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x5e36dd['context'],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c['length']+_0x169591[_0x2bd7('0xc')]+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});_0x4e0dfe[_0x2bd7('0xf')]({'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x11'),'appdata':_0x2bd7('0x35'),'context':_0x5e36dd['context'],'exten':_0x5e36dd[_0x2bd7('0x9')],'priority':_0x1aea9c['length']+_0x169591['priority']+_0x265f62++,'VoiceExtensionId':_0x5e36dd[_0x2bd7('0x16')]});}}}for(var _0x36472e=0x0;_0x36472e<_0x1aea9c[_0x2bd7('0x27')];_0x36472e+=0x1){var _0x361253=_0x169591['priority']+_0x1aea9c[_0x2bd7('0x27')];var _0x3adef6=_0x36472e===_0x1aea9c[_0x2bd7('0x27')]-0x1?_0x169591[_0x2bd7('0xc')]+_0x4e0dfe['length']+_0x41758e[_0x2bd7('0x27')]+0x2:_0x169591[_0x2bd7('0xc')]+_0x36472e+0x1;_0x4e0dfe[_0x2bd7('0x36')](_0x36472e,0x0,{'type':_0x5e36dd[_0x2bd7('0x10')],'app':_0x2bd7('0x37'),'appdata':_0x1aea9c[_0x36472e]+'?'+_0x5e36dd[_0x2bd7('0x13')]+',${EXTEN},'+_0x361253+':'+_0x5e36dd[_0x2bd7('0x13')]+_0x2bd7('0x38')+_0x3adef6,'exten':_0x5e36dd[_0x2bd7('0x9')],'context':_0x5e36dd[_0x2bd7('0x13')],'priority':_0x169591[_0x2bd7('0xc')]+_0x36472e,'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});}_0x5e36dd[_0x2bd7('0xc')]=_0x4e0dfe[_0x2bd7('0x27')]?_[_0x2bd7('0x39')](_0x4e0dfe)[_0x2bd7('0xc')]+0x1:_0x169591[_0x2bd7('0xc')];_0x169591[_0x2bd7('0xc')]=(_0x41758e['length']?_[_0x2bd7('0x39')](_0x41758e)[_0x2bd7('0xc')]:_0x5e36dd[_0x2bd7('0xc')])+0x1;_0x169591[_0x2bd7('0x15')]=_[_0x2bd7('0x3a')](_0x169591[_0x2bd7('0x15')],_0x4e0dfe,[_0x5e36dd],_0x41758e);}_0x169591[_0x2bd7('0x15')][_0x2bd7('0xf')]({'type':_0x4981a0[_0x56178c][0x0]['type'],'app':_0x2bd7('0x3b'),'exten':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x9')],'context':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x13')],'priority':_0x169591[_0x2bd7('0xc')],'VoiceExtensionId':_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]});_0x23297d['push'](_0x4981a0[_0x56178c][0x0][_0x2bd7('0x16')]);_0x3ec155=_[_0x2bd7('0x3a')](_0x3ec155,_0x169591['extensions']);}}return _0x38e66c[_0x2bd7('0x3c')](function(_0x34f71a){return _0x38e66c[_0x2bd7('0x1')][_0x2bd7('0x3d')][_0x2bd7('0x3e')]({'where':{'VoiceExtensionId':{'$in':_0x23297d}},'transaction':_0x34f71a})[_0x2bd7('0x4')](function(_0x400374){return _0x38e66c['models'][_0x2bd7('0x3d')][_0x2bd7('0x3f')](_[_0x2bd7('0x40')](_0x3ec155,_0x2bd7('0xc')),{'transaction':_0x34f71a});});});})[_0x2bd7('0x41')](function(_0x3ab824){console['error'](_0x3ab824);});}exports[_0x2bd7('0x42')]=rewrite;
\ No newline at end of file
+var _0x301f=['$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','sortBy','catch','error','lodash','util','models','Interval','then','intervals','VoiceExtension','findAll','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','groupBy','queue','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','outbound','cutdigits','ExecIf','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','toLowerCase','createdAt','updatedAt','interval','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType'];(function(_0x4a3047,_0x104cca){var _0x50d331=function(_0xe54d13){while(--_0xe54d13){_0x4a3047['push'](_0x4a3047['shift']());}};_0x50d331(++_0x104cca);}(_0x301f,0x1e3));var _0xf301=function(_0x1e697e,_0x1d283f){_0x1e697e=_0x1e697e-0x0;var _0x1b962a=_0x301f[_0x1e697e];return _0x1b962a;};'use strict';var _=require(_0xf301('0x0'));var util=require(_0xf301('0x1'));function rewrite(_0x459c33,_0x8ee0f7){var _0x351b27=this;return _0x459c33[_0xf301('0x2')][_0xf301('0x3')]['findAll']({'raw':!![]})[_0xf301('0x4')](function(_0x1d4cf6){_0x351b27[_0xf301('0x5')]=_0x1d4cf6;return _0x459c33['models'][_0xf301('0x6')][_0xf301('0x7')]({'where':{'IntervalId':_0x8ee0f7[_0xf301('0x8')]},'raw':!![]});})[_0xf301('0x4')](function(_0x1da030){return _0x459c33['models'][_0xf301('0x6')]['findAll']({'where':{'exten':{'$in':_[_0xf301('0x9')](_[_0xf301('0xa')](_0x1da030,_0xf301('0xb')))}},'order':[{'raw':_0xf301('0xc')}],'raw':!![]});})[_0xf301('0x4')](function(_0xe81a46){var _0x13f3f5=_['filter'](_0xe81a46,{'priority':'1'});var _0x2a15b0=_['filter'](_0xe81a46,{'isApp':0x1});var _0x87123d=_[_0xf301('0xd')](_0x2a15b0,'exten');var _0x35d729=[_0xf301('0xe'),'playback'];var _0x923354=[];var _0x37e31d=[];for(var _0x250210 in _0x87123d){if(_0x87123d[_0xf301('0xf')](_0x250210)){_0x351b27[_0xf301('0x10')]=0x2;_0x351b27[_0xf301('0x11')]=[];_0x351b27[_0xf301('0x12')]=_[_0xf301('0x13')](_0x13f3f5,{'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')]});_0x351b27['extensions'][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x16'),'appdata':util[_0xf301('0x17')](_0xf301('0x18'),_0x87123d[_0x250210][0x0][_0xf301('0x15')]),'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});if(_0x87123d[_0x250210][0x0][_0xf301('0x15')]==='inbound'){_0x351b27[_0xf301('0x11')]['push']({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x16'),'appdata':'CDR(routeid)='+_0x87123d[_0x250210][0x0][_0xf301('0x1a')],'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});}else if(_0x87123d[_0x250210][0x0][_0xf301('0x15')]===_0xf301('0x1b')){if(_0x351b27[_0xf301('0x12')]){_0x351b27[_0xf301('0x11')]['push']({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x16'),'appdata':'CDR(destination)='+(_0x351b27[_0xf301('0x12')][_0xf301('0x1c')]?'${EXTEN:'+_0x351b27['extension']['cutdigits']+'}':'${EXTEN}'),'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0]['exten'],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});}_0x351b27[_0xf301('0x11')]['push']({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x16'),'appdata':'CDR(routeid)='+_0x87123d[_0x250210][0x0][_0xf301('0x1a')],'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27['priority']++,'VoiceExtensionId':_0x87123d[_0x250210][0x0]['VoiceExtensionId']});var _0x3d6d85=_0x351b27['priority']++;_0x351b27[_0xf301('0x11')]['push']({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x1d'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x3d6d85+0x2)+_0xf301('0x1e')+(_0x3d6d85+0x1)+')','context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0]['exten'],'priority':_0x3d6d85,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});if(_0x351b27[_0xf301('0x12')]){_0x351b27[_0xf301('0x11')][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':'Set','appdata':_0x351b27['extension'][_0xf301('0x1c')]?'CDR(prefix)=${EXTEN:0:'+_0x351b27['extension'][_0xf301('0x1c')]+'}':_0xf301('0x1f'),'context':_0x87123d[_0x250210][0x0]['context'],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27['priority']++,'VoiceExtensionId':_0x87123d[_0x250210][0x0]['VoiceExtensionId']});}_0x351b27['extensions'][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x16'),'appdata':_0xf301('0x20')+_0x87123d[_0x250210][0x0][_0xf301('0x1a')],'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27['priority']++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});if(_0x351b27['extension']&&_0x351b27[_0xf301('0x12')][_0xf301('0xf')](_0xf301('0x21'))&&_0x351b27[_0xf301('0x12')][_0xf301('0x21')]!=='none'){_0x351b27[_0xf301('0x11')]['push']({'type':_0x87123d[_0x250210][0x0]['type'],'app':_0xf301('0x16'),'appdata':_0xf301('0x22'),'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0]['exten'],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});_0x351b27['extensions'][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0]['type'],'app':'Set','appdata':_0xf301('0x23')+_0x351b27[_0xf301('0x12')][_0xf301('0x21')]||_0xf301('0x24'),'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0]['exten'],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});}}_0x351b27[_0xf301('0x11')]['push']({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':'Set','appdata':_0xf301('0x25'),'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0]['exten'],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0]['VoiceExtensionId']});_0x351b27[_0xf301('0x11')][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0][_0xf301('0x15')],'app':_0xf301('0x16'),'appdata':_0xf301('0x26'),'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});_0x351b27[_0xf301('0x11')][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0]['type'],'app':_0xf301('0x16'),'appdata':'MONITOR_OPTIONS=ab','context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'priority':_0x351b27[_0xf301('0x10')]++,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});for(var _0x3f2402=0x0,_0x1af4f5=0x0;_0x3f2402<_0x87123d[_0x250210][_0xf301('0x27')];_0x3f2402+=0x1,_0x1af4f5=0x0){var _0x5cfd12=_0x87123d[_0x250210][_0x3f2402];if(_0x5cfd12[_0xf301('0x15')]){_0x5cfd12[_0xf301('0x15')]=_0x5cfd12[_0xf301('0x15')][_0xf301('0x28')]();}var _0x57e330=[];var _0x13647b=[];delete _0x5cfd12['id'];delete _0x5cfd12[_0xf301('0x29')];delete _0x5cfd12[_0xf301('0x2a')];var _0x3a7b4d=_0x5cfd12[_0xf301('0x2b')]!=='*,*,*,*'?[_0x5cfd12[_0xf301('0x2b')]]:_0x5cfd12[_0xf301('0x8')]?_[_0xf301('0xa')](_['filter'](_0x351b27[_0xf301('0x5')],{'IntervalId':_0x5cfd12[_0xf301('0x8')]}),'interval'):[];if(_0x5cfd12['hasOwnProperty'](_0xf301('0x2c'))){if(_0x5cfd12[_0xf301('0x2c')]&&_0x5cfd12[_0xf301('0x2c')]!=='--'){_0x57e330[_0xf301('0x14')]({'type':_0x5cfd12['type'],'app':'Set','appdata':_0xf301('0x2d')+_0x5cfd12[_0xf301('0x2c')],'context':_0x5cfd12[_0xf301('0x19')],'exten':_0x5cfd12['exten'],'priority':_0x3a7b4d['length']+_0x351b27[_0xf301('0x10')]+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12['VoiceExtensionId']});}}if(_0x5cfd12[_0xf301('0x15')]==='outbound'&&_0x5cfd12[_0xf301('0xf')]('callerID')){if(_0x5cfd12[_0xf301('0x2e')]){_0x57e330['push']({'type':_0x5cfd12[_0xf301('0x15')],'app':_0xf301('0x1d'),'appdata':_0xf301('0x2f')+_0x5cfd12[_0xf301('0x2e')]+')','context':_0x5cfd12[_0xf301('0x19')],'exten':_0x5cfd12[_0xf301('0xb')],'priority':_0x3a7b4d[_0xf301('0x27')]+_0x351b27['priority']+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12['VoiceExtensionId']});}else{_0x57e330['push']({'type':_0x5cfd12[_0xf301('0x15')],'app':'ExecIf','appdata':_0xf301('0x30'),'context':_0x5cfd12[_0xf301('0x19')],'exten':_0x5cfd12[_0xf301('0xb')],'priority':_0x3a7b4d[_0xf301('0x27')]+_0x351b27['priority']+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12[_0xf301('0x1a')]});}}if(_0x5cfd12[_0xf301('0xf')](_0xf301('0x31'))){if(_0x35d729[_0xf301('0x32')](_0x5cfd12[_0xf301('0x33')][_0xf301('0x28')]())>=0x0&&_0x5cfd12[_0xf301('0x34')]!=='custom'){if(_0x5cfd12[_0xf301('0x31')]){_0x57e330[_0xf301('0x14')]({'type':_0x5cfd12['type'],'app':_0xf301('0x1d'),'appdata':_0xf301('0x35'),'context':_0x5cfd12[_0xf301('0x19')],'exten':_0x5cfd12['exten'],'priority':_0x3a7b4d['length']+_0x351b27[_0xf301('0x10')]+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12[_0xf301('0x1a')]});_0x57e330[_0xf301('0x14')]({'type':_0x5cfd12['type'],'app':_0xf301('0x16'),'appdata':_0xf301('0x36'),'context':_0x5cfd12[_0xf301('0x19')],'exten':_0x5cfd12['exten'],'priority':_0x3a7b4d[_0xf301('0x27')]+_0x351b27['priority']+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12['VoiceExtensionId']});}else{_0x57e330[_0xf301('0x14')]({'type':_0x5cfd12[_0xf301('0x15')],'app':_0xf301('0x1d'),'appdata':_0xf301('0x37'),'context':_0x5cfd12['context'],'exten':_0x5cfd12['exten'],'priority':_0x3a7b4d['length']+_0x351b27[_0xf301('0x10')]+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12[_0xf301('0x1a')]});_0x57e330[_0xf301('0x14')]({'type':_0x5cfd12[_0xf301('0x15')],'app':'Set','appdata':_0xf301('0x38'),'context':_0x5cfd12[_0xf301('0x19')],'exten':_0x5cfd12[_0xf301('0xb')],'priority':_0x3a7b4d[_0xf301('0x27')]+_0x351b27[_0xf301('0x10')]+_0x1af4f5++,'VoiceExtensionId':_0x5cfd12[_0xf301('0x1a')]});}}}for(var _0x517931=0x0;_0x517931<_0x3a7b4d[_0xf301('0x27')];_0x517931+=0x1){var _0x111784=_0x351b27[_0xf301('0x10')]+_0x3a7b4d[_0xf301('0x27')];var _0xb65186=_0x517931===_0x3a7b4d['length']-0x1?_0x351b27[_0xf301('0x10')]+_0x57e330[_0xf301('0x27')]+_0x13647b[_0xf301('0x27')]+0x2:_0x351b27[_0xf301('0x10')]+_0x517931+0x1;_0x57e330['splice'](_0x517931,0x0,{'type':_0x5cfd12[_0xf301('0x15')],'app':_0xf301('0x39'),'appdata':_0x3a7b4d[_0x517931]+'?'+_0x5cfd12[_0xf301('0x19')]+_0xf301('0x3a')+_0x111784+':'+_0x5cfd12[_0xf301('0x19')]+',${EXTEN},'+_0xb65186,'exten':_0x5cfd12[_0xf301('0xb')],'context':_0x5cfd12['context'],'priority':_0x351b27[_0xf301('0x10')]+_0x517931,'VoiceExtensionId':_0x87123d[_0x250210][0x0][_0xf301('0x1a')]});}_0x5cfd12['priority']=_0x57e330[_0xf301('0x27')]?_[_0xf301('0x3b')](_0x57e330)['priority']+0x1:_0x351b27[_0xf301('0x10')];_0x351b27['priority']=(_0x13647b[_0xf301('0x27')]?_['last'](_0x13647b)['priority']:_0x5cfd12[_0xf301('0x10')])+0x1;_0x351b27[_0xf301('0x11')]=_['concat'](_0x351b27[_0xf301('0x11')],_0x57e330,[_0x5cfd12],_0x13647b);}_0x351b27[_0xf301('0x11')][_0xf301('0x14')]({'type':_0x87123d[_0x250210][0x0]['type'],'app':'Hangup','exten':_0x87123d[_0x250210][0x0][_0xf301('0xb')],'context':_0x87123d[_0x250210][0x0][_0xf301('0x19')],'priority':_0x351b27['priority'],'VoiceExtensionId':_0x87123d[_0x250210][0x0]['VoiceExtensionId']});_0x923354[_0xf301('0x14')](_0x87123d[_0x250210][0x0][_0xf301('0x1a')]);_0x37e31d=_[_0xf301('0x3c')](_0x37e31d,_0x351b27[_0xf301('0x11')]);}}return _0x459c33[_0xf301('0x3d')](function(_0x382e61){return _0x459c33[_0xf301('0x2')][_0xf301('0x6')][_0xf301('0x3e')]({'where':{'VoiceExtensionId':{'$in':_0x923354}},'transaction':_0x382e61})[_0xf301('0x4')](function(_0xc90f22){return _0x459c33['models'][_0xf301('0x6')][_0xf301('0x3f')](_[_0xf301('0x40')](_0x37e31d,_0xf301('0x10')),{'transaction':_0x382e61});});});})[_0xf301('0x41')](function(_0x417dd6){console[_0xf301('0x42')](_0x417dd6);});}exports['rewrite']=rewrite;
\ No newline at end of file
index a3ff4dc..bdb7557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eba=['CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','ioredis','../../../mysqldb','../../../config/logger','api','redis','defaults','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','index','test','isNil','error','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','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','email','ListId','CompanyId','find','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','stringify','cmContact','checkHopper','inspect','into','cm_hopper','fromQuery','createdAt','updatedAt','field','scheduledAt','ContactId','toString','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','select','from','\x20=\x20?','insert','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','get','always','query','onlyIfOpen','sequelize','VoiceQueueId','all','Lists','CampaignId','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','CSV\x20parsed\x20correctly!'];(function(_0x21f2d7,_0x10ea7e){var _0x9b98e6=function(_0x558b44){while(--_0x558b44){_0x21f2d7['push'](_0x21f2d7['shift']());}};_0x9b98e6(++_0x10ea7e);}(_0x5eba,0x6f));var _0xa5eb=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5eba[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require('bluebird');var util=require(_0xa5eb('0x0'));var _=require(_0xa5eb('0x1'));var fs=require('fs');var squel=require('squel');var Papa=require('papaparse');var Redis=require(_0xa5eb('0x2'));var db=require(_0xa5eb('0x3'))['db'];var config=require('../../../config/environment');var logger=require(_0xa5eb('0x4'))(_0xa5eb('0x5'));config[_0xa5eb('0x6')]=_[_0xa5eb('0x7')](config['redis'],{'host':_0xa5eb('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5eb('0x6')]));require(_0xa5eb('0x9'))[_0xa5eb('0xa')](socket);try{if(!process[_0xa5eb('0xb')][0x2]||process['argv'][0x2]===_0xa5eb('0xc')||process[_0xa5eb('0xb')][0x2]==='null'){throw new Error(_0xa5eb('0xd'));}var FILEPATH=process[_0xa5eb('0xb')][0x2];if(!process[_0xa5eb('0xb')][0x3]||process[_0xa5eb('0xb')][0x3]===_0xa5eb('0xc')||process[_0xa5eb('0xb')][0x3]===_0xa5eb('0xe')||!process[_0xa5eb('0xb')][0x4]||process['argv'][0x4]===_0xa5eb('0xc')||process[_0xa5eb('0xb')][0x4]===_0xa5eb('0xe')){throw new Error(_0xa5eb('0xf'));}var FIELDS=_[_0xa5eb('0x10')](process['argv'][0x3][_0xa5eb('0x11')](','),process[_0xa5eb('0xb')][0x4][_0xa5eb('0x11')](','));if(!process[_0xa5eb('0xb')][0x5]||process[_0xa5eb('0xb')][0x5]===_0xa5eb('0xc')||process[_0xa5eb('0xb')][0x5]===_0xa5eb('0xe')){throw new Error(_0xa5eb('0x12'));}var LISTID=process[_0xa5eb('0xb')][0x5];var COMPANYID=process[_0xa5eb('0xb')][0x6]&&process['argv'][0x6]!==_0xa5eb('0xc')&&process['argv'][0x6]!=='null'?process[_0xa5eb('0xb')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process['argv'][0x7]!=='undefined'&&process[_0xa5eb('0xb')][0x7]!==_0xa5eb('0xe')?process[_0xa5eb('0xb')][0x7]:null;if(!process[_0xa5eb('0xb')][0x8]||process[_0xa5eb('0xb')][0x8]===_0xa5eb('0xc')||process[_0xa5eb('0xb')][0x8]==='null'){throw new Error(_0xa5eb('0x13'));}var SOCKET_TIMESTAMP=process[_0xa5eb('0xb')][0x8];}catch(_0x95cc39){logger['error'](_0x95cc39);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(_0x1c03ed,_0x5e1ed7,_0x4c9028,_0x429227){var _0x271e3f={'message':_0x5e1ed7};_0x271e3f[_0x1c03ed]=!![];if(_0x4c9028){_0x271e3f['contact']=_0x4c9028;}if(_0x429227){_0x271e3f[_0xa5eb('0x14')]=_0x429227;}return _0x271e3f;}function isEmail(_0x4d2825){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))*$/[_0xa5eb('0x15')](_0x4d2825);}function checkRow(_0x528133,_0x7abb4,_0x312c1b){return new BPromise(function(_0x3099d7,_0x162e85){if(_[_0xa5eb('0x16')](_0x528133)){return _0x162e85(handleCheckRowError(_0xa5eb('0x17'),_0xa5eb('0x18'),null,_0x312c1b));}if(_0x528133[_0xa5eb('0x19')]&&_0x528133[_0xa5eb('0x19')][_0xa5eb('0x1a')]){var _0x3063ac=_['map'](_0x528133[_0xa5eb('0x19')],_0xa5eb('0x1b'))[_0xa5eb('0x1c')](';');return _0x162e85(handleCheckRowError(_0xa5eb('0x17'),_0x3063ac,null,_0x312c1b));}var _0x4bcbea={};for(var _0x32a143 in FIELDS){if(FIELDS[_0xa5eb('0x1d')](_0x32a143)&&FIELDS[_0x32a143]){_0x4bcbea[_0x32a143]=_0x528133[_0xa5eb('0x1e')][0x0][FIELDS[_0x32a143]]||_0x528133[_0xa5eb('0x1e')][0x0]['\ufeff'+FIELDS[_0x32a143]];}}if(!_0x4bcbea[_0xa5eb('0x1f')]){return _0x162e85(handleCheckRowError(_0xa5eb('0x17'),_0xa5eb('0x20'),null,_0x312c1b));}if(!_0x4bcbea[_0xa5eb('0x21')]){return _0x162e85(handleCheckRowError(_0xa5eb('0x17'),_0xa5eb('0x22'),null,_0x312c1b));}if(_0x4bcbea[_0xa5eb('0x23')]){var _0x2348dc=moment(_0x4bcbea['birthDate'],_0xa5eb('0x24'));if(!_0x2348dc['isValid']()){return _0x162e85(handleCheckRowError(_0xa5eb('0x17'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x312c1b));}}if(_0x4bcbea[_0xa5eb('0x25')]){if(!isEmail(_0x4bcbea[_0xa5eb('0x25')])){return _0x162e85(handleCheckRowError('error','email\x20format\x20is\x20not\x20valid!',null,_0x312c1b));}}_0x4bcbea[_0xa5eb('0x26')]=LISTID;_0x4bcbea[_0xa5eb('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xa5eb('0x1a')]&&_0x7abb4){var _0x5b2d1c={};for(var _0xaac372=0x0,_0xeae970=DUPLICATES['length'];_0xaac372<_0xeae970;_0xaac372+=0x1){_0x5b2d1c[DUPLICATES[_0xaac372]]=_0x4bcbea[DUPLICATES[_0xaac372]];}var _0x465248=_[_0xa5eb('0x28')](_0x7abb4,_0x5b2d1c);if(_0x465248){return _0x162e85(handleCheckRowError('duplicate',_0xa5eb('0x29'),_0x465248,_0x312c1b));}}return db[_0xa5eb('0x2a')][_0xa5eb('0x2b')](_0x4bcbea,{'raw':!![],'hooks':![],'fields':_[_0xa5eb('0x2c')](_0x4bcbea)})[_0xa5eb('0x2d')](function(_0x19543f){if(DUPLICATES&&DUPLICATES[_0xa5eb('0x1a')]&&_0x7abb4){_0x7abb4[_0xa5eb('0x2e')](_[_0xa5eb('0x2f')](_0x4bcbea,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x19543f['id'];return _0x3099d7();})[_0xa5eb('0x30')](function(_0x10fe8e){return _0x162e85(handleCheckRowError(_0xa5eb('0x17'),'Error\x20while\x20creating\x20contact:\x20'+(_0x10fe8e[_0xa5eb('0x1b')]||JSON[_0xa5eb('0x31')](_0x10fe8e)),null,_0x312c1b));});});}function checkHopper(){function _0x1cb3f0(){return function(_0x287318){logger[_0xa5eb('0x17')](_0xa5eb('0x32'),_0xa5eb('0x33'),util[_0xa5eb('0x34')](_0x287318,{'showHidden':![],'depth':null}));};}var _0x2a460f=function(_0x2d7305,_0x4c7a76){var _0x23f988=squel['insert']()[_0xa5eb('0x35')](_0xa5eb('0x36'))[_0xa5eb('0x37')]([_0xa5eb('0x21'),'scheduledAt','ContactId',_0xa5eb('0x26'),_0x4c7a76,_0xa5eb('0x38'),_0xa5eb('0x39')],squel['select']()[_0xa5eb('0x3a')]('phone',_0xa5eb('0x21'))['field']('NOW()',_0xa5eb('0x3b'))['field']('id',_0xa5eb('0x3c'))[_0xa5eb('0x3a')](LISTID[_0xa5eb('0x3d')](),_0xa5eb('0x26'))[_0xa5eb('0x3a')](_0x2d7305['id'][_0xa5eb('0x3d')](),_0x4c7a76)[_0xa5eb('0x3a')](_0xa5eb('0x3e'),_0xa5eb('0x38'))['field'](_0xa5eb('0x3e'),'updatedAt')['from'](_0xa5eb('0x3f'))['where'](_0xa5eb('0x40'))[_0xa5eb('0x41')](_0xa5eb('0x42'),LISTID[_0xa5eb('0x3d')]())['where'](_0xa5eb('0x43'))[_0xa5eb('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0xa5eb('0x44')]()[_0xa5eb('0x3a')]('phone')[_0xa5eb('0x45')](_0xa5eb('0x36'))['where'](_0x4c7a76+_0xa5eb('0x46'),_0x2d7305['id']['toString']())))[_0xa5eb('0x3d')]();return _0x23f988;};var _0x51f5c5=function(_0x3f8a01,_0x32ac4f){var _0x2c7078=squel[_0xa5eb('0x47')]()[_0xa5eb('0x35')](_0xa5eb('0x36'))[_0xa5eb('0x37')]([_0xa5eb('0x21'),_0xa5eb('0x3b'),_0xa5eb('0x3c'),_0xa5eb('0x26'),_0x32ac4f,_0xa5eb('0x38'),_0xa5eb('0x39')],squel[_0xa5eb('0x44')]()[_0xa5eb('0x3a')](_0xa5eb('0x21'),_0xa5eb('0x21'))['field'](_0xa5eb('0x3e'),_0xa5eb('0x3b'))['field']('id',_0xa5eb('0x3c'))[_0xa5eb('0x3a')](LISTID[_0xa5eb('0x3d')](),'ListId')['field'](_0x3f8a01['id'][_0xa5eb('0x3d')](),_0x32ac4f)[_0xa5eb('0x3a')](_0xa5eb('0x3e'),_0xa5eb('0x38'))[_0xa5eb('0x3a')](_0xa5eb('0x3e'),_0xa5eb('0x39'))['from'](_0xa5eb('0x3f'))[_0xa5eb('0x41')](_0xa5eb('0x40'))[_0xa5eb('0x41')](_0xa5eb('0x42'),LISTID['toString']())[_0xa5eb('0x41')](_0xa5eb('0x48'),squel[_0xa5eb('0x49')](hopperContacts))[_0xa5eb('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0xa5eb('0x41')](_0xa5eb('0x4a'),squel['select']()[_0xa5eb('0x3a')](_0xa5eb('0x4b'))[_0xa5eb('0x45')](_0xa5eb('0x4c'))[_0xa5eb('0x41')](_0x32ac4f+_0xa5eb('0x46'),_0x3f8a01['id'][_0xa5eb('0x3d')]()))[_0xa5eb('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0xa5eb('0x44')]()[_0xa5eb('0x3a')](_0xa5eb('0x21'))['from'](_0xa5eb('0x36'))[_0xa5eb('0x41')](_0x32ac4f+_0xa5eb('0x46'),_0x3f8a01['id']['toString']())))['toString']();return _0x2c7078;};function _0x38f90a(_0x1e0b80,_0x854010){var _0x5e7a9d=squel['insert']()[_0xa5eb('0x35')](_0xa5eb('0x36'))[_0xa5eb('0x37')]([_0xa5eb('0x21'),_0xa5eb('0x3b'),_0xa5eb('0x3c'),_0xa5eb('0x26'),_0x854010,'createdAt',_0xa5eb('0x39')],squel[_0xa5eb('0x44')]()['field']('phone',_0xa5eb('0x21'))[_0xa5eb('0x3a')](_0xa5eb('0x3e'),_0xa5eb('0x3b'))[_0xa5eb('0x3a')]('id',_0xa5eb('0x3c'))[_0xa5eb('0x3a')](LISTID[_0xa5eb('0x3d')](),_0xa5eb('0x26'))['field'](_0x1e0b80['id'][_0xa5eb('0x3d')](),_0x854010)[_0xa5eb('0x3a')](_0xa5eb('0x3e'),_0xa5eb('0x38'))[_0xa5eb('0x3a')](_0xa5eb('0x3e'),_0xa5eb('0x39'))['from'](_0xa5eb('0x3f'))[_0xa5eb('0x41')](_0xa5eb('0x40'))[_0xa5eb('0x41')]('ListId\x20=\x20?',LISTID['toString']())[_0xa5eb('0x41')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0xa5eb('0x41')](_0xa5eb('0x43')))[_0xa5eb('0x3d')]();return _0x5e7a9d;}function _0x237f0e(_0xf98152,_0x3d4776){var _0x244a7b=squel['insert']()['into'](_0xa5eb('0x4d'))[_0xa5eb('0x37')]([_0xa5eb('0x21'),'ContactId',_0xa5eb('0x26'),_0x3d4776,_0xa5eb('0x38'),_0xa5eb('0x39')],squel[_0xa5eb('0x44')]()[_0xa5eb('0x3a')]('phone',_0xa5eb('0x21'))['field']('id','ContactId')[_0xa5eb('0x3a')](LISTID['toString'](),_0xa5eb('0x26'))[_0xa5eb('0x3a')](_0xf98152['id'][_0xa5eb('0x3d')](),_0x3d4776)['field'](_0xa5eb('0x3e'),_0xa5eb('0x38'))['field'](_0xa5eb('0x3e'),_0xa5eb('0x39'))[_0xa5eb('0x45')](_0xa5eb('0x3f'))[_0xa5eb('0x41')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',LISTID[_0xa5eb('0x3d')]())['where']('id\x20IN\x20?',squel['str'](hopperContacts))[_0xa5eb('0x41')](_0xa5eb('0x43')))[_0xa5eb('0x3d')]();return _0x244a7b;}return db[_0xa5eb('0x4e')][_0xa5eb('0x4f')]({'where':{'type':_0xa5eb('0x50')},'attributes':['id',_0xa5eb('0x51')],'include':[{'model':db[_0xa5eb('0x52')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x493a8){var _0x88a18f=[];if(_0x493a8){var _0x226534;for(var _0x5023fe=0x0,_0x3ee523;_0x5023fe<_0x493a8[_0xa5eb('0x1a')];_0x5023fe+=0x1){_0x3ee523=_0x493a8[_0x5023fe][_0xa5eb('0x53')]({'plain':!![]});switch(_0x3ee523['dialCheckDuplicateType']){case _0xa5eb('0x54'):_0x88a18f[_0xa5eb('0x2e')](db['sequelize'][_0xa5eb('0x55')](_0x51f5c5(_0x3ee523,'VoiceQueueId'))[_0xa5eb('0x2d')](function(){})[_0xa5eb('0x30')](_0x1cb3f0()));break;case _0xa5eb('0x56'):_0x88a18f[_0xa5eb('0x2e')](db[_0xa5eb('0x57')][_0xa5eb('0x55')](_0x2a460f(_0x3ee523,_0xa5eb('0x58')))[_0xa5eb('0x2d')](function(){})['catch'](_0x1cb3f0()));break;default:_0x88a18f[_0xa5eb('0x2e')](db[_0xa5eb('0x57')][_0xa5eb('0x55')](_0x38f90a(_0x3ee523,_0xa5eb('0x58')))['then'](function(){})[_0xa5eb('0x30')](_0x1cb3f0()));}}}return _0x88a18f;})['all']()[_0xa5eb('0x2d')](function(){return db[_0xa5eb('0x4e')][_0xa5eb('0x4f')]({'where':{'type':_0xa5eb('0x50')},'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa5eb('0x2d')](function(_0x1d369b){var _0x16b5f7=[];if(_0x1d369b){var _0x27af83;for(var _0x509d56=0x0,_0x16a829;_0x509d56<_0x1d369b['length'];_0x509d56+=0x1){_0x16a829=_0x1d369b[_0x509d56][_0xa5eb('0x53')]({'plain':!![]});_0x16b5f7[_0xa5eb('0x2e')](db[_0xa5eb('0x57')][_0xa5eb('0x55')](_0x237f0e(_0x16a829,_0xa5eb('0x58')))['then'](function(){})[_0xa5eb('0x30')](_0x1cb3f0()));}}return _0x16b5f7;})[_0xa5eb('0x59')]();})[_0xa5eb('0x2d')](function(){return db['Campaign'][_0xa5eb('0x4f')]({'attributes':['id',_0xa5eb('0x51')],'include':[{'model':db[_0xa5eb('0x52')],'as':_0xa5eb('0x5a'),'where':{'id':LISTID}}]})[_0xa5eb('0x2d')](function(_0x4c5730){var _0x5d65ec=[];if(_0x4c5730){for(var _0x4d1bae=0x0,_0x34cc73;_0x4d1bae<_0x4c5730[_0xa5eb('0x1a')];_0x4d1bae+=0x1){_0x34cc73=_0x4c5730[_0x4d1bae][_0xa5eb('0x53')]({'plain':!![]});switch(_0x34cc73[_0xa5eb('0x51')]){case'always':_0x5d65ec[_0xa5eb('0x2e')](db[_0xa5eb('0x57')]['query'](_0x51f5c5(_0x34cc73,_0xa5eb('0x5b')))['then'](function(){})[_0xa5eb('0x30')](_0x1cb3f0()));break;case _0xa5eb('0x56'):_0x5d65ec[_0xa5eb('0x2e')](db[_0xa5eb('0x57')][_0xa5eb('0x55')](_0x2a460f(_0x34cc73,_0xa5eb('0x5b')))['then'](function(){})[_0xa5eb('0x30')](_0x1cb3f0()));break;default:_0x5d65ec[_0xa5eb('0x2e')](db[_0xa5eb('0x57')][_0xa5eb('0x55')](_0x38f90a(_0x34cc73,'CampaignId'))['then'](function(){})[_0xa5eb('0x30')](_0x1cb3f0()));}}}return _0x5d65ec;})[_0xa5eb('0x59')]();})[_0xa5eb('0x2d')](function(){return db['Campaign']['findAll']({'attributes':['id'],'include':[{'model':db[_0xa5eb('0x52')],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0x3e41aa){var _0x203d43=[];if(_0x3e41aa){for(var _0x41d995=0x0,_0x50e35b;_0x41d995<_0x3e41aa[_0xa5eb('0x1a')];_0x41d995+=0x1){_0x50e35b=_0x3e41aa[_0x41d995][_0xa5eb('0x53')]({'plain':!![]});_0x203d43['push'](db[_0xa5eb('0x57')][_0xa5eb('0x55')](_0x237f0e(_0x50e35b,_0xa5eb('0x5b')))[_0xa5eb('0x2d')](function(){})['catch'](_0x1cb3f0()));}}return _0x203d43;})[_0xa5eb('0x59')]();})[_0xa5eb('0x30')](function(_0x39f6e5){logger[_0xa5eb('0x17')]('cmContact,\x20%s,\x20%s',_0xa5eb('0x5c'),_0x39f6e5[_0xa5eb('0x1b')]);});}var processPromises=function(_0x53fbcc){return BPromise[_0xa5eb('0x59')](promises)['then'](function(_0x251ff6){})[_0xa5eb('0x30')](function(_0x1e809f){logger[_0xa5eb('0x17')](_0xa5eb('0x5d'),JSON[_0xa5eb('0x31')](_0x1e809f));})[_0xa5eb('0x5e')](function(){socket[_0xa5eb('0x5f')](_0xa5eb('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x53fbcc){return _0x53fbcc[_0xa5eb('0x61')]();}});};var endCsv=function(){return BPromise['resolve']()[_0xa5eb('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0xa5eb('0x2d')](function(){socket[_0xa5eb('0x5f')](_0xa5eb('0x60')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa5eb('0x62')](FILEPATH);}catch(_0x4c5d40){logger[_0xa5eb('0x17')](_0xa5eb('0x63'),JSON[_0xa5eb('0x31')](_0x4c5d40));}finally{process[_0xa5eb('0x64')](0x0);}});};process['on']('SIGINT',function(){logger[_0xa5eb('0x65')](_0xa5eb('0x66'));endCsv();});function main(){return BPromise['resolve']()[_0xa5eb('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xa5eb('0x11')](',');return db[_0xa5eb('0x2a')][_0xa5eb('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xa5eb('0x2d')](function(_0x5b02ba){var _0x22fb15=fs[_0xa5eb('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xa5eb('0x68')](_0x22fb15,{'header':!![],'skipEmptyLines':!![],'step':function(_0x199491,_0x5568ce){total+=0x1;var _0x5e1f86=total;promises[_0xa5eb('0x2e')](checkRow(_0x199491,_0x5b02ba,_0x5e1f86)['then'](function(){success+=0x1;})[_0xa5eb('0x30')](function(_0x1d428d){if(_0x1d428d[_0xa5eb('0x17')]){errors+=0x1;delete _0x1d428d[_0xa5eb('0x17')];}else if(_0x1d428d['duplicate']){duplicates+=0x1;delete _0x1d428d[_0xa5eb('0x69')];}rows['push'](_0x1d428d);}));if(total%0xc8===0x0){_0x5568ce['pause']();return processPromises(_0x5568ce);}},'complete':function(){return processPromises()[_0xa5eb('0x2d')](function(){logger[_0xa5eb('0x65')](_0xa5eb('0x6a'));endCsv();});},'error':function(_0x42b416,_0x332b0d){logger[_0xa5eb('0x65')](_0xa5eb('0x6b'),JSON[_0xa5eb('0x31')](_0x42b416));endCsv();}});})[_0xa5eb('0x30')](function(_0x2b89da){logger[_0xa5eb('0x17')](_0xa5eb('0x6c'),JSON['stringify'](_0x2b89da));});}main();
\ No newline at end of file
+var _0x443a=['CmList','Lists','always','push','sequelize','onlyIfOpen','query','VoiceQueueId','BlackLists','get','all','Campaign','dialCheckDuplicateType','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','emit','resume','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','split','createReadStream','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','index','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','duplicate','Duplicate\x20Contact','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','\x20=\x20?','id\x20IN\x20?','str','calleridnum','cm_hopper_final','cm_hopper_black','VoiceQueue','findAll','outbound'];(function(_0x1611f9,_0xaa9195){var _0xc08dbb=function(_0x517c50){while(--_0x517c50){_0x1611f9['push'](_0x1611f9['shift']());}};_0xc08dbb(++_0xaa9195);}(_0x443a,0x166));var _0xa443=function(_0x4624a2,_0x510bf1){_0x4624a2=_0x4624a2-0x0;var _0x5751d0=_0x443a[_0x4624a2];return _0x5751d0;};'use strict';var BPromise=require(_0xa443('0x0'));var util=require(_0xa443('0x1'));var _=require(_0xa443('0x2'));var fs=require('fs');var squel=require(_0xa443('0x3'));var Papa=require(_0xa443('0x4'));var Redis=require(_0xa443('0x5'));var db=require('../../../mysqldb')['db'];var config=require(_0xa443('0x6'));var logger=require(_0xa443('0x7'))(_0xa443('0x8'));config[_0xa443('0x9')]=_[_0xa443('0xa')](config[_0xa443('0x9')],{'host':_0xa443('0xb'),'port':0x18eb});var socket=require(_0xa443('0xc'))(new Redis(config[_0xa443('0x9')]));require(_0xa443('0xd'))[_0xa443('0xe')](socket);try{if(!process[_0xa443('0xf')][0x2]||process[_0xa443('0xf')][0x2]===_0xa443('0x10')||process[_0xa443('0xf')][0x2]===_0xa443('0x11')){throw new Error(_0xa443('0x12'));}var FILEPATH=process[_0xa443('0xf')][0x2];if(!process['argv'][0x3]||process[_0xa443('0xf')][0x3]===_0xa443('0x10')||process[_0xa443('0xf')][0x3]===_0xa443('0x11')||!process['argv'][0x4]||process[_0xa443('0xf')][0x4]===_0xa443('0x10')||process[_0xa443('0xf')][0x4]===_0xa443('0x11')){throw new Error(_0xa443('0x13'));}var FIELDS=_[_0xa443('0x14')](process['argv'][0x3]['split'](','),process[_0xa443('0xf')][0x4]['split'](','));if(!process[_0xa443('0xf')][0x5]||process[_0xa443('0xf')][0x5]==='undefined'||process['argv'][0x5]===_0xa443('0x11')){throw new Error(_0xa443('0x15'));}var LISTID=process[_0xa443('0xf')][0x5];var COMPANYID=process[_0xa443('0xf')][0x6]&&process[_0xa443('0xf')][0x6]!==_0xa443('0x10')&&process[_0xa443('0xf')][0x6]!=='null'?process['argv'][0x6]:null;var DUPLICATES=process[_0xa443('0xf')][0x7]&&process[_0xa443('0xf')][0x7]!=='undefined'&&process[_0xa443('0xf')][0x7]!==_0xa443('0x11')?process[_0xa443('0xf')][0x7]:null;if(!process['argv'][0x8]||process[_0xa443('0xf')][0x8]===_0xa443('0x10')||process[_0xa443('0xf')][0x8]===_0xa443('0x11')){throw new Error(_0xa443('0x16'));}var SOCKET_TIMESTAMP=process[_0xa443('0xf')][0x8];}catch(_0x1a9e12){logger[_0xa443('0x17')](_0x1a9e12);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(_0x406b55,_0x38772f,_0x17a0f4,_0x733144){var _0x38bbb4={'message':_0x38772f};_0x38bbb4[_0x406b55]=!![];if(_0x17a0f4){_0x38bbb4['contact']=_0x17a0f4;}if(_0x733144){_0x38bbb4[_0xa443('0x18')]=_0x733144;}return _0x38bbb4;}function isEmail(_0x317508){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'](_0x317508);}function checkRow(_0xe8847b,_0x5d3384,_0x5e7785){return new BPromise(function(_0x5382ce,_0x10413f){if(_['isNil'](_0xe8847b)){return _0x10413f(handleCheckRowError(_0xa443('0x17'),_0xa443('0x19'),null,_0x5e7785));}if(_0xe8847b[_0xa443('0x1a')]&&_0xe8847b[_0xa443('0x1a')][_0xa443('0x1b')]){var _0x83c18e=_[_0xa443('0x1c')](_0xe8847b[_0xa443('0x1a')],_0xa443('0x1d'))[_0xa443('0x1e')](';');return _0x10413f(handleCheckRowError('error',_0x83c18e,null,_0x5e7785));}var _0x446dee={};for(var _0x510651 in FIELDS){if(FIELDS[_0xa443('0x1f')](_0x510651)&&FIELDS[_0x510651]){_0x446dee[_0x510651]=_0xe8847b[_0xa443('0x20')][0x0][FIELDS[_0x510651]]||_0xe8847b[_0xa443('0x20')][0x0]['\ufeff'+FIELDS[_0x510651]];}}if(!_0x446dee['firstName']){return _0x10413f(handleCheckRowError(_0xa443('0x17'),'firstName\x20not\x20specified!',null,_0x5e7785));}if(!_0x446dee[_0xa443('0x21')]){return _0x10413f(handleCheckRowError('error',_0xa443('0x22'),null,_0x5e7785));}if(_0x446dee[_0xa443('0x23')]){var _0x124c15=moment(_0x446dee[_0xa443('0x23')],_0xa443('0x24'));if(!_0x124c15[_0xa443('0x25')]()){return _0x10413f(handleCheckRowError(_0xa443('0x17'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x5e7785));}}if(_0x446dee[_0xa443('0x26')]){if(!isEmail(_0x446dee[_0xa443('0x26')])){return _0x10413f(handleCheckRowError(_0xa443('0x17'),_0xa443('0x27'),null,_0x5e7785));}}_0x446dee[_0xa443('0x28')]=LISTID;_0x446dee[_0xa443('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x5d3384){var _0x789ee1={};for(var _0x11adcf=0x0,_0x4b41f5=DUPLICATES[_0xa443('0x1b')];_0x11adcf<_0x4b41f5;_0x11adcf+=0x1){_0x789ee1[DUPLICATES[_0x11adcf]]=_0x446dee[DUPLICATES[_0x11adcf]];}var _0x4e9414=_['find'](_0x5d3384,_0x789ee1);if(_0x4e9414){return _0x10413f(handleCheckRowError(_0xa443('0x2a'),_0xa443('0x2b'),_0x4e9414,_0x5e7785));}}return db['CmContact']['create'](_0x446dee,{'raw':!![],'hooks':![],'fields':_['keys'](_0x446dee)})[_0xa443('0x2c')](function(_0x31731d){if(DUPLICATES&&DUPLICATES[_0xa443('0x1b')]&&_0x5d3384){_0x5d3384['push'](_[_0xa443('0x2d')](_0x446dee,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x31731d['id'];return _0x5382ce();})[_0xa443('0x2e')](function(_0x3c22be){return _0x10413f(handleCheckRowError('error',_0xa443('0x2f')+(_0x3c22be[_0xa443('0x1d')]||JSON['stringify'](_0x3c22be)),null,_0x5e7785));});});}function checkHopper(){function _0x7fb261(){return function(_0x41e31c){logger[_0xa443('0x17')](_0xa443('0x30'),'checkHopper',util[_0xa443('0x31')](_0x41e31c,{'showHidden':![],'depth':null}));};}var _0x41f4e1=function(_0x582d7a,_0x390e93){var _0x429c8a=squel[_0xa443('0x32')]()[_0xa443('0x33')](_0xa443('0x34'))[_0xa443('0x35')]([_0xa443('0x21'),_0xa443('0x36'),_0xa443('0x37'),'ListId',_0x390e93,_0xa443('0x38'),_0xa443('0x39')],squel[_0xa443('0x3a')]()[_0xa443('0x3b')](_0xa443('0x21'),'phone')[_0xa443('0x3b')](_0xa443('0x3c'),_0xa443('0x36'))[_0xa443('0x3b')]('id','ContactId')[_0xa443('0x3b')](LISTID[_0xa443('0x3d')](),_0xa443('0x28'))[_0xa443('0x3b')](_0x582d7a['id'][_0xa443('0x3d')](),_0x390e93)[_0xa443('0x3b')](_0xa443('0x3c'),_0xa443('0x38'))['field'](_0xa443('0x3c'),'updatedAt')['from'](_0xa443('0x3e'))[_0xa443('0x3f')](_0xa443('0x40'))[_0xa443('0x3f')](_0xa443('0x41'),LISTID['toString']())[_0xa443('0x3f')](_0xa443('0x42'))['where'](_0xa443('0x43'),squel[_0xa443('0x3a')]()[_0xa443('0x3b')](_0xa443('0x21'))[_0xa443('0x44')](_0xa443('0x34'))[_0xa443('0x3f')](_0x390e93+_0xa443('0x45'),_0x582d7a['id'][_0xa443('0x3d')]())))['toString']();return _0x429c8a;};var _0x19ae92=function(_0x2bf020,_0x36d2bc){var _0x554288=squel[_0xa443('0x32')]()[_0xa443('0x33')](_0xa443('0x34'))[_0xa443('0x35')](['phone',_0xa443('0x36'),_0xa443('0x37'),_0xa443('0x28'),_0x36d2bc,'createdAt',_0xa443('0x39')],squel[_0xa443('0x3a')]()['field']('phone',_0xa443('0x21'))[_0xa443('0x3b')](_0xa443('0x3c'),_0xa443('0x36'))[_0xa443('0x3b')]('id','ContactId')[_0xa443('0x3b')](LISTID['toString'](),'ListId')[_0xa443('0x3b')](_0x2bf020['id'][_0xa443('0x3d')](),_0x36d2bc)[_0xa443('0x3b')](_0xa443('0x3c'),_0xa443('0x38'))[_0xa443('0x3b')]('NOW()','updatedAt')[_0xa443('0x44')](_0xa443('0x3e'))[_0xa443('0x3f')]('deletedAt\x20IS\x20NULL')[_0xa443('0x3f')](_0xa443('0x41'),LISTID[_0xa443('0x3d')]())['where'](_0xa443('0x46'),squel[_0xa443('0x47')](hopperContacts))[_0xa443('0x3f')](_0xa443('0x42'))[_0xa443('0x3f')](_0xa443('0x43'),squel[_0xa443('0x3a')]()[_0xa443('0x3b')](_0xa443('0x48'))[_0xa443('0x44')](_0xa443('0x49'))[_0xa443('0x3f')](_0x36d2bc+_0xa443('0x45'),_0x2bf020['id'][_0xa443('0x3d')]()))[_0xa443('0x3f')](_0xa443('0x43'),squel['select']()[_0xa443('0x3b')](_0xa443('0x21'))[_0xa443('0x44')](_0xa443('0x34'))[_0xa443('0x3f')](_0x36d2bc+'\x20=\x20?',_0x2bf020['id'][_0xa443('0x3d')]())))[_0xa443('0x3d')]();return _0x554288;};function _0x4e7260(_0x243b04,_0x3f8bc1){var _0x3d6909=squel[_0xa443('0x32')]()[_0xa443('0x33')]('cm_hopper')[_0xa443('0x35')]([_0xa443('0x21'),_0xa443('0x36'),'ContactId',_0xa443('0x28'),_0x3f8bc1,_0xa443('0x38'),_0xa443('0x39')],squel['select']()[_0xa443('0x3b')](_0xa443('0x21'),_0xa443('0x21'))[_0xa443('0x3b')](_0xa443('0x3c'),_0xa443('0x36'))[_0xa443('0x3b')]('id',_0xa443('0x37'))[_0xa443('0x3b')](LISTID[_0xa443('0x3d')](),_0xa443('0x28'))[_0xa443('0x3b')](_0x243b04['id'][_0xa443('0x3d')](),_0x3f8bc1)[_0xa443('0x3b')](_0xa443('0x3c'),_0xa443('0x38'))['field']('NOW()',_0xa443('0x39'))[_0xa443('0x44')]('cm_contacts')[_0xa443('0x3f')]('deletedAt\x20IS\x20NULL')[_0xa443('0x3f')](_0xa443('0x41'),LISTID[_0xa443('0x3d')]())['where']('id\x20IN\x20?',squel[_0xa443('0x47')](hopperContacts))[_0xa443('0x3f')](_0xa443('0x42')))[_0xa443('0x3d')]();return _0x3d6909;}function _0x80e3db(_0x2c6ebc,_0x3a74d5){var _0x172fbf=squel[_0xa443('0x32')]()[_0xa443('0x33')](_0xa443('0x4a'))['fromQuery'](['phone',_0xa443('0x37'),_0xa443('0x28'),_0x3a74d5,'createdAt',_0xa443('0x39')],squel[_0xa443('0x3a')]()[_0xa443('0x3b')](_0xa443('0x21'),_0xa443('0x21'))[_0xa443('0x3b')]('id','ContactId')[_0xa443('0x3b')](LISTID['toString'](),'ListId')[_0xa443('0x3b')](_0x2c6ebc['id'][_0xa443('0x3d')](),_0x3a74d5)['field'](_0xa443('0x3c'),_0xa443('0x38'))[_0xa443('0x3b')]('NOW()',_0xa443('0x39'))[_0xa443('0x44')](_0xa443('0x3e'))[_0xa443('0x3f')]('deletedAt\x20IS\x20NULL')[_0xa443('0x3f')]('ListId\x20=\x20?',LISTID[_0xa443('0x3d')]())['where'](_0xa443('0x46'),squel[_0xa443('0x47')](hopperContacts))[_0xa443('0x3f')](_0xa443('0x42')))['toString']();return _0x172fbf;}return db[_0xa443('0x4b')][_0xa443('0x4c')]({'where':{'type':_0xa443('0x4d')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xa443('0x4e')],'as':_0xa443('0x4f'),'where':{'id':LISTID}}]})[_0xa443('0x2c')](function(_0x1b58af){var _0x10ee1c=[];if(_0x1b58af){var _0x43a619;for(var _0x2e7e57=0x0,_0x5081b8;_0x2e7e57<_0x1b58af['length'];_0x2e7e57+=0x1){_0x5081b8=_0x1b58af[_0x2e7e57]['get']({'plain':!![]});switch(_0x5081b8['dialCheckDuplicateType']){case _0xa443('0x50'):_0x10ee1c[_0xa443('0x51')](db[_0xa443('0x52')]['query'](_0x19ae92(_0x5081b8,'VoiceQueueId'))[_0xa443('0x2c')](function(){})[_0xa443('0x2e')](_0x7fb261()));break;case _0xa443('0x53'):_0x10ee1c['push'](db['sequelize'][_0xa443('0x54')](_0x41f4e1(_0x5081b8,'VoiceQueueId'))[_0xa443('0x2c')](function(){})[_0xa443('0x2e')](_0x7fb261()));break;default:_0x10ee1c[_0xa443('0x51')](db[_0xa443('0x52')][_0xa443('0x54')](_0x4e7260(_0x5081b8,_0xa443('0x55')))['then'](function(){})[_0xa443('0x2e')](_0x7fb261()));}}}return _0x10ee1c;})['all']()[_0xa443('0x2c')](function(){return db[_0xa443('0x4b')][_0xa443('0x4c')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xa443('0x56'),'where':{'id':LISTID}}]})[_0xa443('0x2c')](function(_0x1dbec8){var _0x28641b=[];if(_0x1dbec8){var _0x5a11fd;for(var _0x19b361=0x0,_0x1696a9;_0x19b361<_0x1dbec8[_0xa443('0x1b')];_0x19b361+=0x1){_0x1696a9=_0x1dbec8[_0x19b361][_0xa443('0x57')]({'plain':!![]});_0x28641b[_0xa443('0x51')](db[_0xa443('0x52')][_0xa443('0x54')](_0x80e3db(_0x1696a9,_0xa443('0x55')))[_0xa443('0x2c')](function(){})[_0xa443('0x2e')](_0x7fb261()));}}return _0x28641b;})[_0xa443('0x58')]();})['then'](function(){return db[_0xa443('0x59')]['findAll']({'attributes':['id',_0xa443('0x5a')],'include':[{'model':db[_0xa443('0x4e')],'as':_0xa443('0x4f'),'where':{'id':LISTID}}]})[_0xa443('0x2c')](function(_0x1076d1){var _0x48b5cf=[];if(_0x1076d1){for(var _0x216576=0x0,_0x5e2e27;_0x216576<_0x1076d1[_0xa443('0x1b')];_0x216576+=0x1){_0x5e2e27=_0x1076d1[_0x216576][_0xa443('0x57')]({'plain':!![]});switch(_0x5e2e27[_0xa443('0x5a')]){case _0xa443('0x50'):_0x48b5cf['push'](db[_0xa443('0x52')][_0xa443('0x54')](_0x19ae92(_0x5e2e27,_0xa443('0x5b')))['then'](function(){})[_0xa443('0x2e')](_0x7fb261()));break;case _0xa443('0x53'):_0x48b5cf[_0xa443('0x51')](db['sequelize']['query'](_0x41f4e1(_0x5e2e27,_0xa443('0x5b')))['then'](function(){})[_0xa443('0x2e')](_0x7fb261()));break;default:_0x48b5cf[_0xa443('0x51')](db[_0xa443('0x52')]['query'](_0x4e7260(_0x5e2e27,_0xa443('0x5b')))[_0xa443('0x2c')](function(){})[_0xa443('0x2e')](_0x7fb261()));}}}return _0x48b5cf;})[_0xa443('0x58')]();})[_0xa443('0x2c')](function(){return db['Campaign'][_0xa443('0x4c')]({'attributes':['id'],'include':[{'model':db[_0xa443('0x4e')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa443('0x2c')](function(_0x317e2d){var _0x2b09c4=[];if(_0x317e2d){for(var _0x3571a7=0x0,_0x287443;_0x3571a7<_0x317e2d['length'];_0x3571a7+=0x1){_0x287443=_0x317e2d[_0x3571a7][_0xa443('0x57')]({'plain':!![]});_0x2b09c4['push'](db[_0xa443('0x52')][_0xa443('0x54')](_0x80e3db(_0x287443,_0xa443('0x5b')))[_0xa443('0x2c')](function(){})[_0xa443('0x2e')](_0x7fb261()));}}return _0x2b09c4;})[_0xa443('0x58')]();})[_0xa443('0x2e')](function(_0x2acace){logger['error'](_0xa443('0x5c'),_0xa443('0x5d'),_0x2acace[_0xa443('0x1d')]);});}var processPromises=function(_0x3bace1){return BPromise[_0xa443('0x58')](promises)[_0xa443('0x2c')](function(_0x85f278){})['catch'](function(_0x395bd3){logger[_0xa443('0x17')](_0xa443('0x5e'),JSON[_0xa443('0x5f')](_0x395bd3));})['finally'](function(){socket[_0xa443('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3bace1){return _0x3bace1[_0xa443('0x61')]();}});};var endCsv=function(){return BPromise['resolve']()[_0xa443('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0xa443('0x2c')](function(){socket[_0xa443('0x60')](_0xa443('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa443('0x63')](FILEPATH);}catch(_0x5786e6){logger[_0xa443('0x17')](_0xa443('0x64'),JSON[_0xa443('0x5f')](_0x5786e6));}finally{process[_0xa443('0x65')](0x0);}});};process['on']('SIGINT',function(){logger[_0xa443('0x66')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()[_0xa443('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xa443('0x67')](',');return db['CmContact'][_0xa443('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xa443('0x2c')](function(_0x149865){var _0x54dc8a=fs[_0xa443('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x54dc8a,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5ce90f,_0xd93983){total+=0x1;var _0x4c4a0d=total;promises[_0xa443('0x51')](checkRow(_0x5ce90f,_0x149865,_0x4c4a0d)[_0xa443('0x2c')](function(){success+=0x1;})[_0xa443('0x2e')](function(_0x54bacf){if(_0x54bacf['error']){errors+=0x1;delete _0x54bacf['error'];}else if(_0x54bacf[_0xa443('0x2a')]){duplicates+=0x1;delete _0x54bacf['duplicate'];}rows[_0xa443('0x51')](_0x54bacf);}));if(total%0xc8===0x0){_0xd93983[_0xa443('0x69')]();return processPromises(_0xd93983);}},'complete':function(){return processPromises()[_0xa443('0x2c')](function(){logger['info'](_0xa443('0x6a'));endCsv();});},'error':function(_0x640b72,_0x2093a4){logger[_0xa443('0x66')](_0xa443('0x6b'),JSON[_0xa443('0x5f')](_0x640b72));endCsv();}});})['catch'](function(_0x457024){logger[_0xa443('0x17')](_0xa443('0x6c'),JSON[_0xa443('0x5f')](_0x457024));});}main();
\ No newline at end of file
index 021c092..07f4b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ee=['papaparse','util','bluebird','moment','../../../mysqldb','../../../config/environment/shared','../../../config/logger','import','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','CmContact','AdditionalPhones','length','all','push','then','split','isNil','filter','CmContactHasItem','findOne','update','create','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','fromQuery','scheduledat','ListId','createdAt','updatedAt','priority','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_hopper','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_contacts.id','into','cm_hopper_black','ContactId','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','cm_hopper.id','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','info','Received\x20SIGINT','error','exit','errors','message','catch','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','query','spread','voice_queues.id','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','sequelize','timezones','dialTimezone','utcOffset','set','offset','main','send','start','binding','clone','socket_timestamp','root','includes','header','findAll','name','_description','writeFileSync','createReadStream','data','find','hasOwnProperty','trim','replace','isValid','isNaN','isNumber','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','itemTypeId','description','SystemRow','appendFileSync','rows','emit','contact:import:','Abort\x20parser','SystemError','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','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','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path'];(function(_0x2f6233,_0x90172){var _0x1c9c36=function(_0x3ac680){while(--_0x3ac680){_0x2f6233['push'](_0x2f6233['shift']());}};_0x1c9c36(++_0x90172);}(_0xa7ee,0x159));var _0xea7e=function(_0x9077a4,_0x41748c){_0x9077a4=_0x9077a4-0x0;var _0x204bdc=_0xa7ee[_0x9077a4];return _0x204bdc;};'use strict';var fs=require('fs');var path=require(_0xea7e('0x0'));var _=require('lodash');var Papa=require(_0xea7e('0x1'));var util=require(_0xea7e('0x2'));var BPromise=require(_0xea7e('0x3'));var moment=require(_0xea7e('0x4'));var squel=require('squel');var Redis=require('ioredis');var db=require(_0xea7e('0x5'))['db'];var config=require('../../../config/environment');var shared=require(_0xea7e('0x6'));var logger=require(_0xea7e('0x7'))(_0xea7e('0x8'));config[_0xea7e('0x9')]=_['defaults'](config[_0xea7e('0x9')],{'host':_0xea7e('0xa'),'port':0x18eb});var socket=require(_0xea7e('0xb'))(new Redis(config[_0xea7e('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xea7e('0xc')]('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()['format'](_0xea7e('0xd'));function isEmail(_0x4b661f){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))*$/[_0xea7e('0xe')](_0x4b661f);}function selectNotIn(_0x141f18,_0x158eb7,_0x24a39b,_0x4da86b,_0x625e0c){return squel['select']()[_0xea7e('0xf')](_0xea7e('0x10'))[_0xea7e('0x11')](_0x4da86b)[_0xea7e('0x12')](_0x158eb7,null,_0x158eb7+_0xea7e('0x13')+_0x4da86b+'.'+_0x24a39b)[_0xea7e('0x14')](_0x4da86b+'.'+_0x24a39b+_0xea7e('0x15')+_0x141f18+'.'+_0x24a39b)[_0xea7e('0x14')](_0x158eb7+'.dialCheckDuplicateType\x20IN\x20('+_0x625e0c[_0xea7e('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x3ef916,_0x1a617e){promisesAdditionalPhones=[];return db[_0xea7e('0x16')]['findAll']({'raw':!![],'attributes':['id',_0xea7e('0x17')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x5c7466){if(_0x5c7466!==null){var _0x3cd795=[];for(var _0x2d5794=0x0;_0x2d5794<_0x5c7466[_0xea7e('0x18')];_0x2d5794++){var _0x519959=_0x5c7466[_0x2d5794];_0x3cd795['push'](insertAdditionalPhones(_0x519959));}}Promise[_0xea7e('0x19')](_0x3cd795)['then'](function(){_0x3ef916({'val':0x1});});});});}function insertAdditionalPhones(_0x195d5a){return new Promise(function(_0x125aec,_0x5b2d2b){var _0x4e063c=_0x195d5a[_0xea7e('0x17')];var _0x59e8d8=_0x4e063c['split'](';');var _0x406aff=[];orderBy=0x0;for(var _0x5d9ca9=0x0;_0x5d9ca9<_0x59e8d8[_0xea7e('0x18')];_0x5d9ca9++){_0x406aff[_0xea7e('0x1a')](splitAdditionalPhone(_0x195d5a['id'],_0x59e8d8[_0x5d9ca9]));}Promise['all'](_0x406aff)[_0xea7e('0x1b')](function(){_0x125aec({'val':_0x59e8d8['length']});});});}function splitAdditionalPhone(_0x43669f,_0x387bc8){return new Promise(function(_0xf779ad,_0xd441f8){var _0x372b9d=_0x387bc8[_0xea7e('0x1c')](':');var _0x5003fa=_0x372b9d[0x0];var _0xd41599=_0x372b9d[0x1];if(!_[_0xea7e('0x1d')](_0xd41599)){var _0x4e8b96=_0xd41599[_0xea7e('0x1c')]('|');var _0x344ec6=[];for(var _0xa07c9a=0x0;_0xa07c9a<_0x4e8b96['length'];_0xa07c9a++){if(_0x4e8b96[_0xa07c9a]!==''){var _0x296b2a=_[_0xea7e('0x1e')](promisesAdditionalPhones,{'contactId':_0x43669f,'phone':_0x4e8b96[_0xa07c9a]});if(_0x296b2a[_0xea7e('0x18')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x43669f,'contactTypeId':_0x5003fa,'phone':_0x4e8b96[_0xa07c9a],'orderBy':orderBy});}}}_0xf779ad({'ok':0x1});}else _0xf779ad({'res':0x0});});}function createAdditionalPhone(_0x456222,_0x2a6623,_0x41d40c,_0x7a75a6){var _0xa923ad='';var _0x789f9e='';var _0x31871e=_0x41d40c[_0xea7e('0x1c')]('§');_0xa923ad=_0x31871e[0x0];if(_0x31871e[_0xea7e('0x18')]==0x2)_0x789f9e=_0x31871e[0x1];return new Promise(function(_0x10bbc1,_0x4a23a9){return db[_0xea7e('0x1f')][_0xea7e('0x20')]({'where':{'CmContactId':_0x456222,'item':_0xa923ad}})['then'](function(_0x2a1753){if(_0x2a1753){return db[_0xea7e('0x1f')][_0xea7e('0x21')]({'ItemTypeId':_0x2a6623,'description':_0x789f9e,'OrderBy':_0x7a75a6},{'where':{'CmContactId':_0x456222,'item':_0xa923ad}})[_0xea7e('0x1b')](function(_0x33447e){_0x10bbc1({'res':'updated'});});}else{return db[_0xea7e('0x1f')][_0xea7e('0x22')]({'CmContactId':_0x456222,'item':_0xa923ad,'description':_0x789f9e,'ItemTypeId':_0x2a6623,'OrderBy':_0x7a75a6,'ItemClass':'PHONE'})[_0xea7e('0x1b')](function(_0x2f7516){_0x10bbc1({'res':'inserted'});});}});});}function insertCmHopper(_0x423ce5,_0x5c12d6,_0x1f3a50,_0x17c03c,_0x2e6915){var _0x1313f3=[_0xea7e('0x23'),_0xea7e('0x24'),'cm_contacts.id',_0xea7e('0x25'),_0x5c12d6+'.'+_0x17c03c,_0xea7e('0x26'),_0xea7e('0x27'),_0xea7e('0x28'),_0xea7e('0x29'),'\x22'+_0x2e6915+'\x22'];return squel[_0xea7e('0x2a')]()['into']('cm_hopper')[_0xea7e('0x2b')]([_0xea7e('0x10'),_0xea7e('0x2c'),'ContactId',_0xea7e('0x2d'),_0x17c03c,_0xea7e('0x2e'),_0xea7e('0x2f'),_0xea7e('0x30'),_0xea7e('0x31'),_0xea7e('0x32')],squel[_0xea7e('0x33')]()[_0xea7e('0x34')](_0x1313f3)[_0xea7e('0x11')](_0x5c12d6)[_0xea7e('0x12')](_0xea7e('0x35'),null,_0xea7e('0x36')+_0x5c12d6+_0xea7e('0x37'))[_0xea7e('0x12')](_0x1f3a50,null,_0x1f3a50+_0xea7e('0x13')+_0x5c12d6+'.'+_0x17c03c)['where'](_0x5c12d6+_0xea7e('0x38'),_0x423ce5)[_0xea7e('0x14')](_0xea7e('0x39'),NOW)[_0xea7e('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x5c12d6,_0x1f3a50,_0x17c03c,_0xea7e('0x3a'),['\x22always\x22',_0xea7e('0x3b')]))['where'](_0xea7e('0x3c'),selectNotIn(_0x5c12d6,_0x1f3a50,_0x17c03c,_0xea7e('0x3a'),[_0xea7e('0x3d')])))[_0xea7e('0x3e')]();}function insertCmHopperBlack(_0x2fa98d,_0x318511,_0x521905,_0x100f9a){var _0x369cad=['cm_contacts.phone',_0xea7e('0x3f'),'cm_contacts.ListId',_0x318511+'.'+_0x100f9a,_0xea7e('0x26'),_0xea7e('0x27')];return squel['insert']()[_0xea7e('0x40')](_0xea7e('0x41'))[_0xea7e('0x2b')]([_0xea7e('0x10'),_0xea7e('0x42'),_0xea7e('0x2d'),_0x100f9a,_0xea7e('0x2e'),_0xea7e('0x2f')],squel[_0xea7e('0x33')]()[_0xea7e('0x34')](_0x369cad)[_0xea7e('0x11')](_0x318511)[_0xea7e('0x12')](_0xea7e('0x35'),null,_0xea7e('0x36')+_0x318511+'.CmListId')['join'](_0x521905,null,_0x521905+'.id\x20=\x20'+_0x318511+'.'+_0x100f9a)['where'](_0x318511+'.CmListId\x20=\x20?',_0x2fa98d)['where'](_0xea7e('0x39'),NOW)['where'](_0xea7e('0x3c'),squel[_0xea7e('0x33')]()['field']('phone')[_0xea7e('0x11')](_0xea7e('0x41'))[_0xea7e('0x14')](_0xea7e('0x43'),_0x2fa98d)['where'](_0x100f9a+'\x20=\x20'+_0x318511+'.'+_0x100f9a)))[_0xea7e('0x3e')]();}function insertTzCmHopper(_0x5c6d12,_0x1202a6,_0x2d49e5,_0x507b7b,_0x149eed,_0x26a4f5){var _0x50b51a=[_0xea7e('0x23'),_0xea7e('0x44')+_0x26a4f5+'.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.id',_0xea7e('0x25'),_0x1202a6+'.'+_0x507b7b,_0xea7e('0x26'),'cm_contacts.updatedAt',_0xea7e('0x28'),_0xea7e('0x29'),'\x22'+_0x149eed+'\x22'];var _0x4dd73b=squel[_0xea7e('0x2a')]()[_0xea7e('0x40')](_0xea7e('0x3a'))[_0xea7e('0x2b')]([_0xea7e('0x10'),_0xea7e('0x2c'),_0xea7e('0x42'),'ListId',_0x507b7b,_0xea7e('0x2e'),_0xea7e('0x2f'),_0xea7e('0x30'),_0xea7e('0x31'),_0xea7e('0x32')],squel[_0xea7e('0x33')]()['fields'](_0x50b51a)[_0xea7e('0x11')](_0x1202a6)[_0xea7e('0x12')](_0xea7e('0x35'),null,_0xea7e('0x36')+_0x1202a6+_0xea7e('0x37'))[_0xea7e('0x12')](_0x2d49e5,null,_0x2d49e5+'.id\x20=\x20'+_0x1202a6+'.'+_0x507b7b)[_0xea7e('0x12')](_0x26a4f5,null,_0x26a4f5+_0xea7e('0x13')+_0x1202a6+'.'+_0x507b7b)[_0xea7e('0x14')](_0x1202a6+'.CmListId\x20=\x20?',_0x5c6d12)[_0xea7e('0x14')](_0xea7e('0x39'),NOW)['where'](_0xea7e('0x3c'),selectNotIn(_0x1202a6,_0x2d49e5,_0x507b7b,_0xea7e('0x3a'),[_0xea7e('0x3d'),_0xea7e('0x3b')]))[_0xea7e('0x14')](_0xea7e('0x3c'),selectNotIn(_0x1202a6,_0x2d49e5,_0x507b7b,_0xea7e('0x3a'),[_0xea7e('0x3d')])))[_0xea7e('0x3e')]();return _0x4dd73b;}function insertTzCmHopperBlack(_0x4c2c73,_0x566b5c,_0x29a67e,_0x3d2470){var _0x595b54=[_0xea7e('0x23'),'cm_contacts.id',_0xea7e('0x25'),_0x566b5c+'.'+_0x3d2470,_0xea7e('0x26'),_0xea7e('0x27')];return squel['insert']()[_0xea7e('0x40')](_0xea7e('0x41'))[_0xea7e('0x2b')]([_0xea7e('0x10'),_0xea7e('0x42'),'ListId',_0x3d2470,'createdAt',_0xea7e('0x2f')],squel[_0xea7e('0x33')]()[_0xea7e('0x34')](_0x595b54)[_0xea7e('0x11')](_0x566b5c)['join'](_0xea7e('0x35'),null,_0xea7e('0x36')+_0x566b5c+_0xea7e('0x37'))[_0xea7e('0x12')](_0x29a67e,null,_0x29a67e+_0xea7e('0x13')+_0x566b5c+'.'+_0x3d2470)['where'](_0x566b5c+'.CmListId\x20=\x20?',_0x4c2c73)[_0xea7e('0x14')](_0xea7e('0x39'),NOW)['where'](_0xea7e('0x3c'),squel[_0xea7e('0x33')]()[_0xea7e('0xf')](_0xea7e('0x10'))[_0xea7e('0x11')]('cm_hopper_black')['where'](_0xea7e('0x43'),_0x4c2c73)[_0xea7e('0x14')](_0x3d2470+_0xea7e('0x15')+_0x566b5c+'.'+_0x3d2470)))[_0xea7e('0x3e')]();}function insertCmHopperAdditionalPhones(_0x28ec1e){var _0x2a76ad=[_0xea7e('0x45'),'cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt',_0xea7e('0x46')];return squel[_0xea7e('0x2a')]()['into'](_0xea7e('0x47'))[_0xea7e('0x2b')](['CmHopperId',_0xea7e('0x10'),_0xea7e('0x48'),'createdAt',_0xea7e('0x2f')],squel[_0xea7e('0x33')]()[_0xea7e('0x34')](_0x2a76ad)[_0xea7e('0x11')](_0xea7e('0x3a'))['join']('cm_contacts',null,_0xea7e('0x49'))[_0xea7e('0x12')](_0xea7e('0x4a'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xea7e('0x14')](_0xea7e('0x4b'),_0x28ec1e)[_0xea7e('0x14')](_0xea7e('0x39'),NOW))[_0xea7e('0x3e')]();}function insertCmContact(_0x55a2d8,_0x5398fa,_0xeae73b,_0x33fa6b){var _0x4cd8c1=_[_0xea7e('0x4c')](_[_0xea7e('0x4d')](_0x33fa6b),['ListId',_0xea7e('0x4e'),_0xea7e('0x2e'),_0xea7e('0x2f')]);return squel[_0xea7e('0x2a')]()[_0xea7e('0x40')](_0xea7e('0x35'))['fromQuery'](_0x4cd8c1,squel[_0xea7e('0x33')]()['fields'](_0x4cd8c1)[_0xea7e('0x11')](_0x5398fa)[_0xea7e('0x14')]('('+_0xeae73b[_0xea7e('0x12')](',')+_0xea7e('0x4f'),squel['select']()[_0xea7e('0x34')](_0xeae73b)['from'](_0xea7e('0x35'))[_0xea7e('0x14')]('ListId\x20=\x20?',_0x55a2d8)[_0xea7e('0x14')](_0xea7e('0x50')))[_0xea7e('0x14')]('id\x20IN\x20?',squel[_0xea7e('0x33')]()['field']('MIN(id)','min_id')[_0xea7e('0x11')](_0x5398fa)['group'](_0xeae73b['join'](','))))[_0xea7e('0x3e')]();}function handleStop(){logger[_0xea7e('0x51')](_0xea7e('0x52'));stopped=!![];}function handleUncaughtException(_0x201175){logger[_0xea7e('0x53')](_0x201175['message']);process[_0xea7e('0x54')](0x1);}function handleError(_0x480249,_0x5d3c5e){stats[_0xea7e('0x55')][_0xea7e('0x1a')]({'name':_0x5d3c5e['code'],'message':_0x5d3c5e[_0xea7e('0x56')],'row':_0x480249});}function handleQuery(_0x26fd76){logger['info'](_0x26fd76);return db['sequelize']['query'](_0x26fd76)['spread'](function(_0x30e0e7){results['push'](_0x30e0e7);})[_0xea7e('0x57')](function(_0x4c3872){logger[_0xea7e('0x53')](_0x4c3872['message']);});}function updateTzCampaigns(_0x4969c5){return new Promise(function(_0x1b2edc,_0x2102a5){var _0x585756=squel[_0xea7e('0x33')]()[_0xea7e('0x34')]([_0xea7e('0x58'),_0xea7e('0x59')])[_0xea7e('0x11')](_0xea7e('0x5a'))[_0xea7e('0x12')](_0xea7e('0x5b'),null,_0xea7e('0x5c'))[_0xea7e('0x14')](_0xea7e('0x5d')+_0x4969c5);db['sequelize'][_0xea7e('0x5e')](_0x585756[_0xea7e('0x3e')]())[_0xea7e('0x5f')](function(_0x48933d){var _0x1f97f7=[];for(var _0x1f5d93=0x0;_0x1f5d93<_0x48933d[_0xea7e('0x18')];_0x1f5d93++){_0x1f97f7[_0xea7e('0x1a')](getTimezoneData(_0x48933d[_0x1f5d93],tmp_campaigns));}BPromise[_0xea7e('0x19')](_0x1f97f7)[_0xea7e('0x1b')](function(){_0x1b2edc({'val':0x1});});})[_0xea7e('0x57')](function(_0x41dbd3){logger[_0xea7e('0x53')](_0x41dbd3['message']);_0x1b2edc({'val':0x0});});});}function updateTzVoiceQueues(_0x1014a7){return new Promise(function(_0x52d2f2,_0x1b3ea5){var _0x3f2315=squel['select']()['fields']([_0xea7e('0x60'),'voice_queues.dialTimezone'])['from'](_0xea7e('0x61'))['join']('voice_queues_has_cm_lists',null,_0xea7e('0x62'))[_0xea7e('0x14')](_0xea7e('0x63')+_0x1014a7);db[_0xea7e('0x64')][_0xea7e('0x5e')](_0x3f2315[_0xea7e('0x3e')]())[_0xea7e('0x5f')](function(_0x1e9ffa){var _0x8de69e=[];for(var _0x563e40=0x0;_0x563e40<_0x1e9ffa['length'];_0x563e40++){_0x8de69e[_0xea7e('0x1a')](getTimezoneData(_0x1e9ffa[_0x563e40],tmp_voice_queues));}BPromise[_0xea7e('0x19')](_0x8de69e)[_0xea7e('0x1b')](function(){_0x52d2f2({'val':0x1});});})[_0xea7e('0x57')](function(_0x397cdd){logger[_0xea7e('0x53')](_0x397cdd[_0xea7e('0x56')]);_0x52d2f2({'val':0x0});});});}function getTimezoneData(_0x3bd19f,_0x3ba57b){return new Promise(function(_0x1ed17f,_0x183a62){var _0x55447d=shared[_0xea7e('0x65')];var _0x3abef5=_0x55447d[_0x3bd19f[_0xea7e('0x66')]];if(_[_0xea7e('0x1d')](_0x3abef5)){_0x1ed17f({'ret':0x1});}else{var _0xef557e=_0x3abef5[_0xea7e('0x67')];var _0x32aa07=squel[_0xea7e('0x2a')]()[_0xea7e('0x40')](_0x3ba57b)['set']('id',_0x3bd19f['id'])[_0xea7e('0x68')](_0xea7e('0x69'),_0xef557e)[_0xea7e('0x68')](_0xea7e('0x66'),_0x3bd19f[_0xea7e('0x66')])[_0xea7e('0x3e')]();return db[_0xea7e('0x64')][_0xea7e('0x5e')](_0x32aa07)[_0xea7e('0x5f')](function(_0x4a56e5){_0x1ed17f({'ret':0x1});})[_0xea7e('0x57')](function(_0x1d9f7a){logger['error'](_0x1d9f7a[_0xea7e('0x56')]);_0x183a62({'ret':0x1});});}});}function handleTZQuery(_0x581772){logger[_0xea7e('0x51')](_0x581772);return db['sequelize'][_0xea7e('0x5e')](_0x581772)[_0xea7e('0x5f')](function(_0x297238){})[_0xea7e('0x57')](function(_0x51dcc5){logger['error'](_0x51dcc5[_0xea7e('0x56')]);});}function main(_0x2b0b7e,_0x596308,_0x3bbc33,_0x531f14){logger[_0xea7e('0x51')](_0xea7e('0x6a'),_0x2b0b7e,JSON['stringify'](_0x596308));process[_0xea7e('0x6b')](_0xea7e('0x6c'));var _0x173a6e=_0x596308[_0xea7e('0x6d')];var _0x59cd48=_[_0xea7e('0x6e')](_0x173a6e);var _0x2747b2=_0x596308[_0xea7e('0x6f')];var _0x4edccc=path[_0xea7e('0x12')](config[_0xea7e('0x70')],'server/files/tmp',_0x2747b2+'.csv');hasTZ=_[_0xea7e('0x4d')](_0x173a6e)[_0xea7e('0x71')]('dialTimezone');var _0x5884af=_['keys'](_0x173a6e)[_0xea7e('0x12')]();logger[_0xea7e('0x51')](_0xea7e('0x72'),_0x5884af);db['ContactItemType'][_0xea7e('0x73')]({'raw':!![],'attributes':['id',_0xea7e('0x74')]})[_0xea7e('0x1b')](function(_0x50e4b9){for(var _0x4c5a88=0x0;_0x4c5a88<_0x50e4b9[_0xea7e('0x18')];_0x4c5a88++){if(_0x50e4b9[_0x4c5a88][_0xea7e('0x74')]in _0x173a6e){contactItemTypes[_0xea7e('0x1a')](_0x50e4b9[_0x4c5a88]);delete _0x59cd48[_0x50e4b9[_0x4c5a88]['name']];hasAdditionalPhones=!![];}for(var _0x22080a in _0x173a6e){if(_0x50e4b9[_0x4c5a88][_0xea7e('0x74')]+_0xea7e('0x75')===_0x22080a){phoneDescriptions[_0xea7e('0x1a')]({'itemTypeId':_0x50e4b9[_0x4c5a88]['id'],'description':_0x22080a});delete _0x59cd48[_0x22080a];}}}if(hasAdditionalPhones)_0x59cd48[_0xea7e('0x17')]='';var _0x401a6a=_[_0xea7e('0x4d')](_0x59cd48)[_0xea7e('0x12')]();logger[_0xea7e('0x51')]('header',_0x401a6a);fs[_0xea7e('0x76')](_0x4edccc,_0x401a6a+'\x0a');Papa['parse'](fs[_0xea7e('0x77')](_0x2b0b7e),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1c621e,_0x22ef18){try{for(var _0xb3ec6a=0x0,_0x59dd3e=[];_0xb3ec6a<_0x1c621e[_0xea7e('0x78')][_0xea7e('0x18')];_0xb3ec6a++){stats['rows']+=0x1;if(_0x1c621e[_0xea7e('0x55')][_0xb3ec6a]){handleError(_0x1c621e[_0xea7e('0x78')][_0xb3ec6a],_0x1c621e[_0xea7e('0x55')][_0xb3ec6a]);}else{var _0x5949e7=[];var _0x5f391e=[];var _0x45636b={};for(var _0x311d5c in _0x173a6e){let _0x35af58=contactItemTypes[_0xea7e('0x79')](_0x1d485e=>_0x1d485e['name']===_0x311d5c);let _0x135ae1=contactItemTypes[_0xea7e('0x79')](_0x4c29ff=>_0x4c29ff['name']+_0xea7e('0x75')===_0x311d5c);if(_[_0xea7e('0x1d')](_0x35af58)&&_['isNil'](_0x135ae1)){if(_0x173a6e[_0xea7e('0x7a')](_0x311d5c)){if(_0x1c621e['data'][_0xb3ec6a][_0x173a6e[_0x311d5c]]){var _0x169e0e=_[_0xea7e('0x7b')](_0x1c621e[_0xea7e('0x78')][_0xb3ec6a][_0x173a6e[_0x311d5c]][_0xea7e('0x7c')](/"/g,'\x27'));switch(_0x311d5c){case _0xea7e('0x2c'):var _0x136719=moment(_0x169e0e,_0xea7e('0xd'),!![]);if(_0x136719[_0xea7e('0x7d')]()){_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x169e0e+'\x22');}else{_0x5949e7[_0xea7e('0x1a')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case'priority':var _0x7df05b=parseInt(_0x169e0e);_0x169e0e=_[_0xea7e('0x7e')](_0x7df05b)||_0x7df05b<0x0||_0x7df05b>0x4?_0x531f14?0x3:0x2:_0x7df05b;_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x169e0e+'\x22');break;case _0xea7e('0x31'):var _0x170d99=parseInt(_0x169e0e);if(_[_0xea7e('0x7f')](_0x170d99)&&_[_0xea7e('0x71')](_0x3bbc33,_0x170d99)){_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x170d99+'\x22');}else{_0x5949e7['push']('agent\x20not\x20exists');}break;case _0xea7e('0x80'):if(isEmail(_0x169e0e)){_0x59dd3e['push']('\x22'+_0x169e0e+'\x22');}else{_0x5949e7[_0xea7e('0x1a')](_0xea7e('0x81'));}break;case _0xea7e('0x82'):var _0x88c31a=moment(_0x169e0e,_0xea7e('0x83'),!![]);if(_0x88c31a[_0xea7e('0x7d')]()){_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x169e0e+'\x22');}else{_0x5949e7[_0xea7e('0x1a')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;case'dialTimezone':var _0x42b1c8=shared[_0xea7e('0x65')];var _0x4681a8=_0x42b1c8[_0x169e0e];if(!_[_0xea7e('0x1d')](_0x4681a8)){var _0x30d45a=_0x4681a8[_0xea7e('0x67')];_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x169e0e+'\x22');_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x30d45a+'\x22');}break;default:_0x59dd3e['push']('\x22'+_0x169e0e+'\x22');}}else{switch(_0x311d5c){case'firstName':case'phone':_0x5949e7['push'](_0x311d5c+'\x20not\x20specified');break;default:_0x59dd3e[_0xea7e('0x1a')]('\x22\x22');}}}}else{var _0x4fa75d='';if(!_[_0xea7e('0x1d')](_0x35af58)){if(!_0x45636b[_0xea7e('0x7a')](_0x35af58['id'])){if(!_[_0xea7e('0x1d')](_0x1c621e['data'][_0xb3ec6a][_0x173a6e[_0x311d5c]])){var _0x169e0e=_[_0xea7e('0x7b')](_0x1c621e['data'][_0xb3ec6a][_0x173a6e[_0x311d5c]][_0xea7e('0x7c')](/"/g,'\x27'));var _0x56a8f0=phoneDescriptions[_0xea7e('0x79')](_0x156c0a=>_0x156c0a[_0xea7e('0x84')]===_0x35af58['id']);if(!_[_0xea7e('0x1d')](_0x56a8f0)){var _0x452eaf=_[_0xea7e('0x7b')](_0x1c621e[_0xea7e('0x78')][_0xb3ec6a][_0x173a6e[_0x56a8f0[_0xea7e('0x85')]]][_0xea7e('0x7c')](/"/g,'\x27'));if(!_['isNil'](_0x452eaf))_0x169e0e=_0x169e0e+'§'+_0x452eaf;}if(_0x4fa75d=='')_0x4fa75d=_0x169e0e;else _0x4fa75d+='|'+_0x169e0e;}_0x5f391e[_0xea7e('0x1a')](_0x35af58['id']+':'+_0x4fa75d);_0x45636b[_0x35af58['id']]=0x1;}}}}if(hasAdditionalPhones){_0x59dd3e[_0xea7e('0x1a')]('\x22'+_0x5f391e['join'](';')+'\x22');}if(_0x5949e7[_0xea7e('0x18')]){handleError(_0x1c621e[_0xea7e('0x78')][_0xb3ec6a],{'code':_0xea7e('0x86'),'message':_0x5949e7['join']()});}else{fs[_0xea7e('0x87')](_0x4edccc,_0x59dd3e[_0xea7e('0x12')]()+'\x0a');}_0x59dd3e=[];}if(!(stats[_0xea7e('0x88')]%0xc8)){socket[_0xea7e('0x89')](_0xea7e('0x8a')+_0x2747b2,stats);stats[_0xea7e('0x55')]=[];}}if(stopped){logger[_0xea7e('0x51')](_0xea7e('0x8b'));_0x22ef18['abort']();}}catch(_0x16aae4){handleError(_0x1c621e[_0xea7e('0x78')][_0xb3ec6a],{'code':_0xea7e('0x8c'),'message':_0x16aae4[_0xea7e('0x56')]});logger[_0xea7e('0x53')]('step',_0x16aae4[_0xea7e('0x56')]);}},'complete':function(){try{var _0x19860e=[];var _0x3d6ba1=[];var _0xf9d48d=_0xea7e('0x35');if(_0x596308[_0xea7e('0x8d')]&&_0x596308[_0xea7e('0x8d')]['length']){_0xf9d48d='cm_contacts_'+_0x2747b2;_0x19860e['push'](_0xea7e('0x8e')+_0xf9d48d+_0xea7e('0x8f'));}tmp_campaigns=_0xea7e('0x90')+_0x2747b2;tmp_voice_queues='voice_queues_'+_0x2747b2;_0x3d6ba1[_0xea7e('0x1a')]('CREATE\x20TABLE\x20'+tmp_campaigns+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');_0x3d6ba1[_0xea7e('0x1a')](_0xea7e('0x8e')+tmp_voice_queues+_0xea7e('0x91'));BPromise[_0xea7e('0x92')](_0x3d6ba1,handleTZQuery)[_0xea7e('0x1b')](function(_0x1fe54e){updateTzCampaigns(_0x596308[_0xea7e('0x2d')])['then'](function(_0x165c90){updateTzVoiceQueues(_0x596308[_0xea7e('0x2d')])[_0xea7e('0x1b')](function(_0x5525db){if(hasTZ)_0x401a6a=_0x401a6a[_0xea7e('0x7c')](_0xea7e('0x66'),'dialTimezone,utcOffset');var _0x6516c7=util[_0xea7e('0xc')](_0xea7e('0x93'),_0x4edccc,_0xf9d48d,_0x401a6a,_0x596308[_0xea7e('0x2d')],_0x596308[_0xea7e('0x4e')]||null,NOW,NOW);if(_[_0xea7e('0x1d')](_0x173a6e[_0xea7e('0x2c')])){_0x6516c7+=',\x20scheduledAt\x20=\x20NOW()';}_0x19860e[_0xea7e('0x1a')](_0x6516c7);if(_0x596308['duplicates']&&_0x596308['duplicates'][_0xea7e('0x18')]){_0x19860e[_0xea7e('0x1a')](insertCmContact(_0x596308[_0xea7e('0x2d')],_0xf9d48d,_0x596308['duplicates'],_0x173a6e));_0x19860e[_0xea7e('0x1a')](_0xea7e('0x94')+_0xf9d48d+';');}BPromise['each'](_0x19860e,handleQuery)['then'](function(_0x460ef8){BPromise[_0xea7e('0x19')]([handleAdditionalPhones()])['then'](function(){_0x19860e=[];for(var _0x36ac39=0x0;_0x36ac39<promisesAdditionalPhones[_0xea7e('0x18')];_0x36ac39++){if(promisesAdditionalPhones[_0x36ac39][_0xea7e('0x10')]!='§'){_0x19860e['push'](createAdditionalPhone(promisesAdditionalPhones[_0x36ac39][_0xea7e('0x95')],promisesAdditionalPhones[_0x36ac39][_0xea7e('0x96')],promisesAdditionalPhones[_0x36ac39][_0xea7e('0x10')],promisesAdditionalPhones[_0x36ac39][_0xea7e('0x97')]));}}BPromise[_0xea7e('0x19')](_0x19860e)[_0xea7e('0x1b')](function(){_0x19860e=[];if(hasTZ){_0x19860e[_0xea7e('0x1a')](insertTzCmHopper(_0x596308[_0xea7e('0x2d')],_0xea7e('0x98'),_0xea7e('0x61'),_0xea7e('0x99'),_0x531f14,tmp_voice_queues));_0x19860e['push'](insertTzCmHopperBlack(_0x596308[_0xea7e('0x2d')],_0xea7e('0x9a'),'voice_queues',_0xea7e('0x99')));_0x19860e[_0xea7e('0x1a')](insertTzCmHopper(_0x596308['ListId'],_0xea7e('0x5b'),_0xea7e('0x5a'),_0xea7e('0x9b'),_0x531f14,tmp_campaigns));_0x19860e[_0xea7e('0x1a')](insertTzCmHopperBlack(_0x596308[_0xea7e('0x2d')],_0xea7e('0x9c'),_0xea7e('0x5a'),_0xea7e('0x9b')));_0x19860e['push'](insertCmHopperAdditionalPhones(_0x596308[_0xea7e('0x2d')]));}else{_0x19860e[_0xea7e('0x1a')](insertCmHopper(_0x596308[_0xea7e('0x2d')],_0xea7e('0x98'),'voice_queues','VoiceQueueId',_0x531f14));_0x19860e[_0xea7e('0x1a')](insertCmHopperBlack(_0x596308[_0xea7e('0x2d')],_0xea7e('0x9a'),_0xea7e('0x61'),_0xea7e('0x99')));_0x19860e[_0xea7e('0x1a')](insertCmHopper(_0x596308['ListId'],_0xea7e('0x5b'),_0xea7e('0x5a'),_0xea7e('0x9b'),_0x531f14));_0x19860e['push'](insertCmHopperBlack(_0x596308[_0xea7e('0x2d')],_0xea7e('0x9c'),_0xea7e('0x5a'),_0xea7e('0x9b')));_0x19860e[_0xea7e('0x1a')](insertCmHopperAdditionalPhones(_0x596308[_0xea7e('0x2d')]));}_0x19860e[_0xea7e('0x1a')](_0xea7e('0x94')+tmp_campaigns+';');_0x19860e[_0xea7e('0x1a')](_0xea7e('0x94')+tmp_voice_queues+';');BPromise[_0xea7e('0x92')](_0x19860e,handleQuery)[_0xea7e('0x1b')](function(_0x470540){stats['finish']=!![];stats[_0xea7e('0x9d')]=_0x596308[_0xea7e('0x8d')]&&_0x596308[_0xea7e('0x8d')][_0xea7e('0x18')]?results[0x2][_0xea7e('0x9d')]:results[0x0][_0xea7e('0x9d')];socket[_0xea7e('0x89')](_0xea7e('0x8a')+_0x2747b2,stats);fs[_0xea7e('0x9e')](_0x2b0b7e);fs['unlink'](_0x4edccc);process[_0xea7e('0x54')](0x0);})[_0xea7e('0x57')](function(_0x42ca61){logger[_0xea7e('0x53')](_0x42ca61[_0xea7e('0x56')]);process[_0xea7e('0x54')](0x1);});});});})[_0xea7e('0x57')](function(_0x33e288){logger['error'](_0x33e288[_0xea7e('0x56')]);process[_0xea7e('0x54')](0x1);});});});});}catch(_0x2b41e6){logger['error'](_0xea7e('0x9f'),_0x2b41e6[_0xea7e('0x56')]);process[_0xea7e('0x54')](0x1);}},'error':function(_0x27bcd5,_0x26adee,_0x1df945,_0x13ad66){throw new Error(_0x13ad66);}});});}function validate(){if(process[_0xea7e('0xa0')]&&process[_0xea7e('0xa0')][_0xea7e('0x18')]<0x4){throw new Error(_0xea7e('0xa1'));}var _0x3f7840=path[_0xea7e('0x12')](config[_0xea7e('0x70')],_0xea7e('0xa2'),process[_0xea7e('0xa0')][0x2]);if(!fs['existsSync'](_0x3f7840)){throw new Error(_0xea7e('0xa3'));}var _0xc21cc9={};try{_0xc21cc9=JSON[_0xea7e('0xa4')](process[_0xea7e('0xa0')][0x3]);if(!_0xc21cc9[_0xea7e('0x6d')]){throw new Error(_0xea7e('0xa5'));}if(!_0xc21cc9[_0xea7e('0x6d')]['phone']){throw new Error(_0xea7e('0xa6'));}if(!_0xc21cc9['binding']['firstName']){throw new Error(_0xea7e('0xa7'));}var _0x598fee=0x0;if(_0xc21cc9[_0xea7e('0x6d')][_0xea7e('0x31')]){_0x598fee=0x1;}if(!_0xc21cc9['ListId']){throw new Error(_0xea7e('0xa8'));}}catch(_0x273674){throw new Error(_0xea7e('0xa9'));}var _0x28bd69=[];try{_0x28bd69=_['map'](JSON[_0xea7e('0xa4')](process[_0xea7e('0xa0')][0x4]),'id');}catch(_0x3c0729){logger[_0xea7e('0x51')](_0xea7e('0xaa'));}main(_0x3f7840,_0xc21cc9,_0x28bd69,_0x598fee);}validate();process['on'](_0xea7e('0xab'),handleStop);process['on'](_0xea7e('0xac'),handleUncaughtException);
\ No newline at end of file
+var _0x37d0=['existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','lodash','util','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','redis','socket.io-emitter','format','test','field','phone','join','.id\x20=\x20','where','CmContact','findAll','AdditionalPhones','length','push','all','then','split','isNil','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.UserId','insert','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','select','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','cm_contacts.createdAt','cm_hopper_black','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','\x20=\x20','toString','date_add(cm_contacts.scheduledat,interval\x20','cm_contacts.priority','into','\x22onlyIfOpen\x22','cm_hopper.id','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','scheduledAt','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','message','exit','errors','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','sequelize','error','voice_queues','voice_queues_has_cm_lists','voice_queues_has_cm_lists.CmListId=','dialTimezone','utcOffset','set','offset','main','stringify','send','binding','clone','socket_timestamp','root','server/files/tmp','.csv','header','ContactItemType','name','writeFileSync','parse','createReadStream','data','rows','find','_description','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)','timezones','firstName','description','appendFileSync','emit','contact:import:','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','duplicates','DROP\x20TABLE\x20','contactId','contactTypeId','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>'];(function(_0x254a14,_0x156510){var _0x679a91=function(_0x23de71){while(--_0x23de71){_0x254a14['push'](_0x254a14['shift']());}};_0x679a91(++_0x156510);}(_0x37d0,0xc0));var _0x037d=function(_0x5ac852,_0x2e8e15){_0x5ac852=_0x5ac852-0x0;var _0x58cc88=_0x37d0[_0x5ac852];return _0x58cc88;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x037d('0x0'));var Papa=require('papaparse');var util=require(_0x037d('0x1'));var BPromise=require('bluebird');var moment=require('moment');var squel=require(_0x037d('0x2'));var Redis=require('ioredis');var db=require(_0x037d('0x3'))['db'];var config=require(_0x037d('0x4'));var shared=require('../../../config/environment/shared');var logger=require(_0x037d('0x5'))(_0x037d('0x6'));config['redis']=_[_0x037d('0x7')](config[_0x037d('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x037d('0x9'))(new Redis(config['redis']));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()[_0x037d('0xa')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x3ba4fc){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))*$/[_0x037d('0xb')](_0x3ba4fc);}function selectNotIn(_0x579f2f,_0x3053f2,_0x4969f3,_0x3f46cc,_0x5445a6){return squel['select']()[_0x037d('0xc')](_0x037d('0xd'))['from'](_0x3f46cc)[_0x037d('0xe')](_0x3053f2,null,_0x3053f2+_0x037d('0xf')+_0x3f46cc+'.'+_0x4969f3)[_0x037d('0x10')](_0x3f46cc+'.'+_0x4969f3+'\x20=\x20'+_0x579f2f+'.'+_0x4969f3)['where'](_0x3053f2+'.dialCheckDuplicateType\x20IN\x20('+_0x5445a6[_0x037d('0xe')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x49ee8f,_0x335bda){promisesAdditionalPhones=[];return db[_0x037d('0x11')][_0x037d('0x12')]({'raw':!![],'attributes':['id',_0x037d('0x13')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0xd1e00e){if(_0xd1e00e!==null){var _0x3fb2a7=[];for(var _0x1f2798=0x0;_0x1f2798<_0xd1e00e[_0x037d('0x14')];_0x1f2798++){var _0x55dfb8=_0xd1e00e[_0x1f2798];_0x3fb2a7[_0x037d('0x15')](insertAdditionalPhones(_0x55dfb8));}}Promise[_0x037d('0x16')](_0x3fb2a7)[_0x037d('0x17')](function(){_0x49ee8f({'val':0x1});});});});}function insertAdditionalPhones(_0x36cf39){return new Promise(function(_0x1f8a28,_0x46b650){var _0x4cf0d7=_0x36cf39[_0x037d('0x13')];var _0x403532=_0x4cf0d7[_0x037d('0x18')](';');var _0xe21530=[];orderBy=0x0;for(var _0x501e9b=0x0;_0x501e9b<_0x403532[_0x037d('0x14')];_0x501e9b++){_0xe21530[_0x037d('0x15')](splitAdditionalPhone(_0x36cf39['id'],_0x403532[_0x501e9b]));}Promise[_0x037d('0x16')](_0xe21530)[_0x037d('0x17')](function(){_0x1f8a28({'val':_0x403532[_0x037d('0x14')]});});});}function splitAdditionalPhone(_0x297f2c,_0x7c2d99){return new Promise(function(_0x285481,_0x580949){var _0x51777a=_0x7c2d99[_0x037d('0x18')](':');var _0x3cbbef=_0x51777a[0x0];var _0x18489e=_0x51777a[0x1];if(!_[_0x037d('0x19')](_0x18489e)){var _0x3abd6c=_0x18489e[_0x037d('0x18')]('|');var _0x3d7053=[];for(var _0x101610=0x0;_0x101610<_0x3abd6c[_0x037d('0x14')];_0x101610++){if(_0x3abd6c[_0x101610]!==''){var _0x58674d=_[_0x037d('0x1a')](promisesAdditionalPhones,{'contactId':_0x297f2c,'phone':_0x3abd6c[_0x101610]});if(_0x58674d[_0x037d('0x14')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x297f2c,'contactTypeId':_0x3cbbef,'phone':_0x3abd6c[_0x101610],'orderBy':orderBy});}}}_0x285481({'ok':0x1});}else _0x285481({'res':0x0});});}function createAdditionalPhone(_0x483fef,_0x2cc723,_0x239b8a,_0xd2bffc){var _0x7d57c7='';var _0x559f5a='';var _0x5d99ce=_0x239b8a[_0x037d('0x18')]('§');_0x7d57c7=_0x5d99ce[0x0];if(_0x5d99ce['length']==0x2)_0x559f5a=_0x5d99ce[0x1];return new Promise(function(_0xe03249,_0x2e587e){return db[_0x037d('0x1b')][_0x037d('0x1c')]({'where':{'CmContactId':_0x483fef,'item':_0x7d57c7}})[_0x037d('0x17')](function(_0x12d6fb){if(_0x12d6fb){return db[_0x037d('0x1b')][_0x037d('0x1d')]({'ItemTypeId':_0x2cc723,'description':_0x559f5a,'OrderBy':_0xd2bffc},{'where':{'CmContactId':_0x483fef,'item':_0x7d57c7}})[_0x037d('0x17')](function(_0x1b6e5a){_0xe03249({'res':_0x037d('0x1e')});});}else{return db['CmContactHasItem'][_0x037d('0x1f')]({'CmContactId':_0x483fef,'item':_0x7d57c7,'description':_0x559f5a,'ItemTypeId':_0x2cc723,'OrderBy':_0xd2bffc,'ItemClass':_0x037d('0x20')})[_0x037d('0x17')](function(_0x2e9535){_0xe03249({'res':_0x037d('0x21')});});}});});}function insertCmHopper(_0x5e790e,_0x10ab18,_0x313681,_0x5da529,_0x5ddf1f){var _0x416591=[_0x037d('0x22'),_0x037d('0x23'),_0x037d('0x24'),_0x037d('0x25'),_0x10ab18+'.'+_0x5da529,'cm_contacts.createdAt',_0x037d('0x26'),'cm_contacts.priority',_0x037d('0x27'),'\x22'+_0x5ddf1f+'\x22'];return squel[_0x037d('0x28')]()['into']('cm_hopper')[_0x037d('0x29')]([_0x037d('0xd'),_0x037d('0x2a'),_0x037d('0x2b'),_0x037d('0x2c'),_0x5da529,_0x037d('0x2d'),_0x037d('0x2e'),_0x037d('0x2f'),_0x037d('0x30'),_0x037d('0x31')],squel[_0x037d('0x32')]()[_0x037d('0x33')](_0x416591)[_0x037d('0x34')](_0x10ab18)[_0x037d('0xe')](_0x037d('0x35'),null,_0x037d('0x36')+_0x10ab18+_0x037d('0x37'))[_0x037d('0xe')](_0x313681,null,_0x313681+'.id\x20=\x20'+_0x10ab18+'.'+_0x5da529)[_0x037d('0x10')](_0x10ab18+_0x037d('0x38'),_0x5e790e)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x037d('0x10')](_0x037d('0x39'),selectNotIn(_0x10ab18,_0x313681,_0x5da529,_0x037d('0x3a'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x037d('0x10')](_0x037d('0x39'),selectNotIn(_0x10ab18,_0x313681,_0x5da529,_0x037d('0x3a'),[_0x037d('0x3b')])))['toString']();}function insertCmHopperBlack(_0x59a95b,_0x2b2293,_0x185b77,_0x176b26){var _0xf1b493=[_0x037d('0x22'),'cm_contacts.id','cm_contacts.ListId',_0x2b2293+'.'+_0x176b26,_0x037d('0x3c'),'cm_contacts.updatedAt'];return squel['insert']()['into'](_0x037d('0x3d'))['fromQuery'](['phone',_0x037d('0x2b'),'ListId',_0x176b26,'createdAt',_0x037d('0x2e')],squel[_0x037d('0x32')]()[_0x037d('0x33')](_0xf1b493)[_0x037d('0x34')](_0x2b2293)[_0x037d('0xe')](_0x037d('0x35'),null,_0x037d('0x36')+_0x2b2293+_0x037d('0x37'))[_0x037d('0xe')](_0x185b77,null,_0x185b77+_0x037d('0xf')+_0x2b2293+'.'+_0x176b26)[_0x037d('0x10')](_0x2b2293+_0x037d('0x38'),_0x59a95b)['where'](_0x037d('0x3e'),NOW)[_0x037d('0x10')](_0x037d('0x39'),squel[_0x037d('0x32')]()['field'](_0x037d('0xd'))[_0x037d('0x34')](_0x037d('0x3d'))['where'](_0x037d('0x3f'),_0x59a95b)[_0x037d('0x10')](_0x176b26+_0x037d('0x40')+_0x2b2293+'.'+_0x176b26)))[_0x037d('0x41')]();}function insertTzCmHopper(_0x4aed67,_0x1513e5,_0x17395f,_0x4df439,_0x250a3b,_0x179a7b){var _0x4fb27b=[_0x037d('0x22'),_0x037d('0x42')+_0x179a7b+'.offset-cm_contacts.utcOffset\x20minute)',_0x037d('0x24'),_0x037d('0x25'),_0x1513e5+'.'+_0x4df439,_0x037d('0x3c'),_0x037d('0x26'),_0x037d('0x43'),_0x037d('0x27'),'\x22'+_0x250a3b+'\x22'];var _0x2e9d3b=squel['insert']()[_0x037d('0x44')](_0x037d('0x3a'))[_0x037d('0x29')](['phone','scheduledat',_0x037d('0x2b'),_0x037d('0x2c'),_0x4df439,'createdAt',_0x037d('0x2e'),_0x037d('0x2f'),_0x037d('0x30'),_0x037d('0x31')],squel[_0x037d('0x32')]()[_0x037d('0x33')](_0x4fb27b)[_0x037d('0x34')](_0x1513e5)['join'](_0x037d('0x35'),null,_0x037d('0x36')+_0x1513e5+_0x037d('0x37'))[_0x037d('0xe')](_0x17395f,null,_0x17395f+'.id\x20=\x20'+_0x1513e5+'.'+_0x4df439)[_0x037d('0xe')](_0x179a7b,null,_0x179a7b+_0x037d('0xf')+_0x1513e5+'.'+_0x4df439)['where'](_0x1513e5+'.CmListId\x20=\x20?',_0x4aed67)[_0x037d('0x10')](_0x037d('0x3e'),NOW)[_0x037d('0x10')](_0x037d('0x39'),selectNotIn(_0x1513e5,_0x17395f,_0x4df439,'cm_hopper',[_0x037d('0x3b'),_0x037d('0x45')]))[_0x037d('0x10')](_0x037d('0x39'),selectNotIn(_0x1513e5,_0x17395f,_0x4df439,_0x037d('0x3a'),[_0x037d('0x3b')])))[_0x037d('0x41')]();return _0x2e9d3b;}function insertTzCmHopperBlack(_0x5153f5,_0x499a55,_0x5b09a4,_0x33c5b9){var _0x2352ff=['cm_contacts.phone','cm_contacts.id','cm_contacts.ListId',_0x499a55+'.'+_0x33c5b9,_0x037d('0x3c'),_0x037d('0x26')];return squel[_0x037d('0x28')]()[_0x037d('0x44')](_0x037d('0x3d'))[_0x037d('0x29')]([_0x037d('0xd'),'ContactId',_0x037d('0x2c'),_0x33c5b9,_0x037d('0x2d'),'updatedAt'],squel[_0x037d('0x32')]()[_0x037d('0x33')](_0x2352ff)[_0x037d('0x34')](_0x499a55)['join'](_0x037d('0x35'),null,_0x037d('0x36')+_0x499a55+_0x037d('0x37'))[_0x037d('0xe')](_0x5b09a4,null,_0x5b09a4+_0x037d('0xf')+_0x499a55+'.'+_0x33c5b9)['where'](_0x499a55+_0x037d('0x38'),_0x5153f5)[_0x037d('0x10')](_0x037d('0x3e'),NOW)[_0x037d('0x10')](_0x037d('0x39'),squel[_0x037d('0x32')]()[_0x037d('0xc')]('phone')[_0x037d('0x34')]('cm_hopper_black')[_0x037d('0x10')](_0x037d('0x3f'),_0x5153f5)['where'](_0x33c5b9+'\x20=\x20'+_0x499a55+'.'+_0x33c5b9)))[_0x037d('0x41')]();}function insertCmHopperAdditionalPhones(_0x4d9504){var _0x3e7157=[_0x037d('0x46'),'cm_contact_has_items.item',_0x037d('0x47'),_0x037d('0x48'),_0x037d('0x49')];return squel['insert']()['into'](_0x037d('0x4a'))['fromQuery']([_0x037d('0x4b'),'phone',_0x037d('0x4c'),_0x037d('0x2d'),_0x037d('0x2e')],squel[_0x037d('0x32')]()[_0x037d('0x33')](_0x3e7157)[_0x037d('0x34')](_0x037d('0x3a'))[_0x037d('0xe')](_0x037d('0x35'),null,_0x037d('0x4d'))[_0x037d('0xe')](_0x037d('0x4e'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')['where'](_0x037d('0x4f'),_0x4d9504)['where'](_0x037d('0x3e'),NOW))[_0x037d('0x41')]();}function insertCmContact(_0x543dfc,_0x4b0a6a,_0x55e4e2,_0x522e1e){var _0x50cfc6=_[_0x037d('0x50')](_[_0x037d('0x51')](_0x522e1e),['ListId','CompanyId',_0x037d('0x2d'),_0x037d('0x2e'),_0x037d('0x52')]);return squel[_0x037d('0x28')]()[_0x037d('0x44')](_0x037d('0x35'))[_0x037d('0x29')](_0x50cfc6,squel[_0x037d('0x32')]()[_0x037d('0x33')](_0x50cfc6)[_0x037d('0x34')](_0x4b0a6a)[_0x037d('0x10')]('('+_0x55e4e2[_0x037d('0xe')](',')+')\x20NOT\x20IN\x20?',squel[_0x037d('0x32')]()[_0x037d('0x33')](_0x55e4e2)['from'](_0x037d('0x35'))[_0x037d('0x10')](_0x037d('0x3f'),_0x543dfc)[_0x037d('0x10')](_0x037d('0x53')))[_0x037d('0x10')](_0x037d('0x54'),squel[_0x037d('0x32')]()['field'](_0x037d('0x55'),_0x037d('0x56'))[_0x037d('0x34')](_0x4b0a6a)[_0x037d('0x57')](_0x55e4e2[_0x037d('0xe')](','))))[_0x037d('0x41')]();}function handleStop(){logger[_0x037d('0x58')](_0x037d('0x59'));stopped=!![];}function handleUncaughtException(_0x23feda){logger['error'](_0x23feda[_0x037d('0x5a')]);process[_0x037d('0x5b')](0x1);}function handleError(_0x1badf0,_0x2726ca){stats[_0x037d('0x5c')][_0x037d('0x15')]({'name':_0x2726ca['code'],'message':_0x2726ca[_0x037d('0x5a')],'row':_0x1badf0});}function handleQuery(_0x472883){logger[_0x037d('0x58')](_0x472883);return db['sequelize'][_0x037d('0x5d')](_0x472883)[_0x037d('0x5e')](function(_0x2a6062){results[_0x037d('0x15')](_0x2a6062);})[_0x037d('0x5f')](function(_0x306a31){logger['error'](_0x306a31['message']);});}function updateTzCampaigns(_0x36d292){return new Promise(function(_0x17fca0,_0x3565ef){var _0x5b3eb0=squel['select']()[_0x037d('0x33')]([_0x037d('0x60'),_0x037d('0x61')])[_0x037d('0x34')](_0x037d('0x62'))[_0x037d('0xe')](_0x037d('0x63'),null,_0x037d('0x64'))[_0x037d('0x10')]('campaigns_has_cm_lists.CmListId='+_0x36d292);db[_0x037d('0x65')][_0x037d('0x5d')](_0x5b3eb0['toString']())[_0x037d('0x5e')](function(_0x19ea3b){var _0x2ec391=[];for(var _0x47eeda=0x0;_0x47eeda<_0x19ea3b[_0x037d('0x14')];_0x47eeda++){_0x2ec391[_0x037d('0x15')](getTimezoneData(_0x19ea3b[_0x47eeda],tmp_campaigns));}BPromise[_0x037d('0x16')](_0x2ec391)[_0x037d('0x17')](function(){_0x17fca0({'val':0x1});});})['catch'](function(_0x1ba915){logger[_0x037d('0x66')](_0x1ba915[_0x037d('0x5a')]);_0x17fca0({'val':0x0});});});}function updateTzVoiceQueues(_0x5d3333){return new Promise(function(_0x5ab188,_0x2acfe5){var _0x88f931=squel[_0x037d('0x32')]()['fields'](['voice_queues.id','voice_queues.dialTimezone'])[_0x037d('0x34')](_0x037d('0x67'))[_0x037d('0xe')](_0x037d('0x68'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0x037d('0x10')](_0x037d('0x69')+_0x5d3333);db[_0x037d('0x65')][_0x037d('0x5d')](_0x88f931[_0x037d('0x41')]())['spread'](function(_0x2de09a){var _0x388e08=[];for(var _0x49e340=0x0;_0x49e340<_0x2de09a[_0x037d('0x14')];_0x49e340++){_0x388e08[_0x037d('0x15')](getTimezoneData(_0x2de09a[_0x49e340],tmp_voice_queues));}BPromise['all'](_0x388e08)[_0x037d('0x17')](function(){_0x5ab188({'val':0x1});});})['catch'](function(_0x45af03){logger['error'](_0x45af03[_0x037d('0x5a')]);_0x5ab188({'val':0x0});});});}function getTimezoneData(_0xfbe4d0,_0x130a72){return new Promise(function(_0x4a37e5,_0x175549){var _0x8b031f=shared['timezones'];var _0xf71710=_0x8b031f[_0xfbe4d0[_0x037d('0x6a')]];if(_['isNil'](_0xf71710)){_0x4a37e5({'ret':0x1});}else{var _0x4cad66=_0xf71710[_0x037d('0x6b')];var _0x298f1d=squel[_0x037d('0x28')]()['into'](_0x130a72)[_0x037d('0x6c')]('id',_0xfbe4d0['id'])[_0x037d('0x6c')](_0x037d('0x6d'),_0x4cad66)[_0x037d('0x6c')](_0x037d('0x6a'),_0xfbe4d0['dialTimezone'])['toString']();return db[_0x037d('0x65')]['query'](_0x298f1d)[_0x037d('0x5e')](function(_0x5e8197){_0x4a37e5({'ret':0x1});})[_0x037d('0x5f')](function(_0x4100f1){logger[_0x037d('0x66')](_0x4100f1[_0x037d('0x5a')]);_0x175549({'ret':0x1});});}});}function handleTZQuery(_0x52b509){logger[_0x037d('0x58')](_0x52b509);return db[_0x037d('0x65')][_0x037d('0x5d')](_0x52b509)['spread'](function(_0x49e27d){})[_0x037d('0x5f')](function(_0x52de59){logger[_0x037d('0x66')](_0x52de59[_0x037d('0x5a')]);});}function main(_0x579070,_0x8e6689,_0x4c77bb,_0x53e614){logger['info'](_0x037d('0x6e'),_0x579070,JSON[_0x037d('0x6f')](_0x8e6689));process[_0x037d('0x70')]('start');var _0x2ee593=_0x8e6689[_0x037d('0x71')];var _0x43bc84=_[_0x037d('0x72')](_0x2ee593);var _0x536c98=_0x8e6689[_0x037d('0x73')];var _0x2d74b9=path[_0x037d('0xe')](config[_0x037d('0x74')],_0x037d('0x75'),_0x536c98+_0x037d('0x76'));hasTZ=_[_0x037d('0x51')](_0x2ee593)['includes'](_0x037d('0x6a'));var _0x4e3aba=_[_0x037d('0x51')](_0x2ee593)['join']();logger['info'](_0x037d('0x77'),_0x4e3aba);db[_0x037d('0x78')][_0x037d('0x12')]({'raw':!![],'attributes':['id',_0x037d('0x79')]})[_0x037d('0x17')](function(_0x3c5fba){for(var _0x3d0025=0x0;_0x3d0025<_0x3c5fba[_0x037d('0x14')];_0x3d0025++){if(_0x3c5fba[_0x3d0025]['name']in _0x2ee593){contactItemTypes['push'](_0x3c5fba[_0x3d0025]);delete _0x43bc84[_0x3c5fba[_0x3d0025][_0x037d('0x79')]];hasAdditionalPhones=!![];}for(var _0x56db77 in _0x2ee593){if(_0x3c5fba[_0x3d0025][_0x037d('0x79')]+'_description'===_0x56db77){phoneDescriptions['push']({'itemTypeId':_0x3c5fba[_0x3d0025]['id'],'description':_0x56db77});delete _0x43bc84[_0x56db77];}}}if(hasAdditionalPhones)_0x43bc84['AdditionalPhones']='';var _0x44da1f=_[_0x037d('0x51')](_0x43bc84)[_0x037d('0xe')]();logger['info'](_0x037d('0x77'),_0x44da1f);fs[_0x037d('0x7a')](_0x2d74b9,_0x44da1f+'\x0a');Papa[_0x037d('0x7b')](fs[_0x037d('0x7c')](_0x579070),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4c270a,_0x48a3c5){try{for(var _0x2de818=0x0,_0x39c6fc=[];_0x2de818<_0x4c270a[_0x037d('0x7d')][_0x037d('0x14')];_0x2de818++){stats[_0x037d('0x7e')]+=0x1;if(_0x4c270a['errors'][_0x2de818]){handleError(_0x4c270a[_0x037d('0x7d')][_0x2de818],_0x4c270a[_0x037d('0x5c')][_0x2de818]);}else{var _0x25301d=[];var _0xafc681=[];var _0x524a21={};for(var _0x3cfbc0 in _0x2ee593){let _0x22d0c0=contactItemTypes[_0x037d('0x7f')](_0x3c0484=>_0x3c0484[_0x037d('0x79')]===_0x3cfbc0);let _0x421eaa=contactItemTypes['find'](_0x3d5140=>_0x3d5140[_0x037d('0x79')]+_0x037d('0x80')===_0x3cfbc0);if(_[_0x037d('0x19')](_0x22d0c0)&&_[_0x037d('0x19')](_0x421eaa)){if(_0x2ee593['hasOwnProperty'](_0x3cfbc0)){if(_0x4c270a[_0x037d('0x7d')][_0x2de818][_0x2ee593[_0x3cfbc0]]){var _0x2e07a8=_[_0x037d('0x81')](_0x4c270a['data'][_0x2de818][_0x2ee593[_0x3cfbc0]][_0x037d('0x82')](/"/g,'\x27'));switch(_0x3cfbc0){case'scheduledat':var _0x41a941=moment(_0x2e07a8,_0x037d('0x83'),!![]);if(_0x41a941[_0x037d('0x84')]()){_0x39c6fc['push']('\x22'+_0x2e07a8+'\x22');}else{_0x25301d[_0x037d('0x15')](_0x037d('0x85'));}break;case _0x037d('0x2f'):var _0x95e1e=parseInt(_0x2e07a8);_0x2e07a8=_[_0x037d('0x86')](_0x95e1e)||_0x95e1e<0x0||_0x95e1e>0x4?_0x53e614?0x3:0x2:_0x95e1e;_0x39c6fc['push']('\x22'+_0x2e07a8+'\x22');break;case _0x037d('0x30'):var _0xa0fc97=parseInt(_0x2e07a8);if(_[_0x037d('0x87')](_0xa0fc97)&&_[_0x037d('0x88')](_0x4c77bb,_0xa0fc97)){_0x39c6fc['push']('\x22'+_0xa0fc97+'\x22');}else{_0x25301d[_0x037d('0x15')](_0x037d('0x89'));}break;case _0x037d('0x8a'):if(isEmail(_0x2e07a8)){_0x39c6fc['push']('\x22'+_0x2e07a8+'\x22');}else{_0x25301d['push'](_0x037d('0x8b'));}break;case _0x037d('0x8c'):var _0x5b05f4=moment(_0x2e07a8,_0x037d('0x8d'),!![]);if(_0x5b05f4[_0x037d('0x84')]()){_0x39c6fc[_0x037d('0x15')]('\x22'+_0x2e07a8+'\x22');}else{_0x25301d[_0x037d('0x15')](_0x037d('0x8e'));}break;case _0x037d('0x6a'):var _0x364b9a=shared[_0x037d('0x8f')];var _0x1f2e0e=_0x364b9a[_0x2e07a8];if(!_[_0x037d('0x19')](_0x1f2e0e)){var _0x3d956a=_0x1f2e0e[_0x037d('0x6b')];_0x39c6fc['push']('\x22'+_0x2e07a8+'\x22');_0x39c6fc[_0x037d('0x15')]('\x22'+_0x3d956a+'\x22');}break;default:_0x39c6fc['push']('\x22'+_0x2e07a8+'\x22');}}else{switch(_0x3cfbc0){case _0x037d('0x90'):case _0x037d('0xd'):_0x25301d[_0x037d('0x15')](_0x3cfbc0+'\x20not\x20specified');break;default:_0x39c6fc[_0x037d('0x15')]('\x22\x22');}}}}else{var _0x4b9952='';if(!_[_0x037d('0x19')](_0x22d0c0)){if(!_0x524a21['hasOwnProperty'](_0x22d0c0['id'])){if(!_[_0x037d('0x19')](_0x4c270a[_0x037d('0x7d')][_0x2de818][_0x2ee593[_0x3cfbc0]])){var _0x2e07a8=_[_0x037d('0x81')](_0x4c270a['data'][_0x2de818][_0x2ee593[_0x3cfbc0]]['replace'](/"/g,'\x27'));var _0x5c5df3=phoneDescriptions[_0x037d('0x7f')](_0x27110c=>_0x27110c['itemTypeId']===_0x22d0c0['id']);if(!_[_0x037d('0x19')](_0x5c5df3)){var _0x1c3416=_[_0x037d('0x81')](_0x4c270a[_0x037d('0x7d')][_0x2de818][_0x2ee593[_0x5c5df3[_0x037d('0x91')]]][_0x037d('0x82')](/"/g,'\x27'));if(!_[_0x037d('0x19')](_0x1c3416))_0x2e07a8=_0x2e07a8+'§'+_0x1c3416;}if(_0x4b9952=='')_0x4b9952=_0x2e07a8;else _0x4b9952+='|'+_0x2e07a8;}_0xafc681[_0x037d('0x15')](_0x22d0c0['id']+':'+_0x4b9952);_0x524a21[_0x22d0c0['id']]=0x1;}}}}if(hasAdditionalPhones){_0x39c6fc[_0x037d('0x15')]('\x22'+_0xafc681[_0x037d('0xe')](';')+'\x22');}if(_0x25301d['length']){handleError(_0x4c270a[_0x037d('0x7d')][_0x2de818],{'code':'SystemRow','message':_0x25301d[_0x037d('0xe')]()});}else{fs[_0x037d('0x92')](_0x2d74b9,_0x39c6fc[_0x037d('0xe')]()+'\x0a');}_0x39c6fc=[];}if(!(stats['rows']%0xc8)){socket[_0x037d('0x93')](_0x037d('0x94')+_0x536c98,stats);stats['errors']=[];}}if(stopped){logger['info']('Abort\x20parser');_0x48a3c5['abort']();}}catch(_0x31b372){handleError(_0x4c270a['data'][_0x2de818],{'code':_0x037d('0x95'),'message':_0x31b372[_0x037d('0x5a')]});logger[_0x037d('0x66')](_0x037d('0x96'),_0x31b372[_0x037d('0x5a')]);}},'complete':function(){try{var _0x30aed1=[];var _0x5dc549=[];var _0x3587cb='cm_contacts';if(_0x8e6689['duplicates']&&_0x8e6689['duplicates'][_0x037d('0x14')]){_0x3587cb='cm_contacts_'+_0x536c98;_0x30aed1[_0x037d('0x15')](_0x037d('0x97')+_0x3587cb+_0x037d('0x98'));}tmp_campaigns='campaigns_'+_0x536c98;tmp_voice_queues='voice_queues_'+_0x536c98;_0x5dc549[_0x037d('0x15')](_0x037d('0x97')+tmp_campaigns+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');_0x5dc549['push']('CREATE\x20TABLE\x20'+tmp_voice_queues+_0x037d('0x99'));BPromise[_0x037d('0x9a')](_0x5dc549,handleTZQuery)['then'](function(_0x118863){updateTzCampaigns(_0x8e6689[_0x037d('0x2c')])[_0x037d('0x17')](function(_0x4d63b1){updateTzVoiceQueues(_0x8e6689[_0x037d('0x2c')])[_0x037d('0x17')](function(_0x2c895e){if(hasTZ)_0x44da1f=_0x44da1f['replace'](_0x037d('0x6a'),'dialTimezone,utcOffset');var _0x295f4e=util[_0x037d('0xa')](_0x037d('0x9b'),_0x2d74b9,_0x3587cb,_0x44da1f,_0x8e6689[_0x037d('0x2c')],_0x8e6689['CompanyId']||null,NOW,NOW);if(_[_0x037d('0x19')](_0x2ee593[_0x037d('0x2a')])){_0x295f4e+=_0x037d('0x9c');}_0x30aed1['push'](_0x295f4e);if(_0x8e6689[_0x037d('0x9d')]&&_0x8e6689[_0x037d('0x9d')]['length']){_0x30aed1['push'](insertCmContact(_0x8e6689[_0x037d('0x2c')],_0x3587cb,_0x8e6689[_0x037d('0x9d')],_0x2ee593));_0x30aed1[_0x037d('0x15')](_0x037d('0x9e')+_0x3587cb+';');}BPromise['each'](_0x30aed1,handleQuery)['then'](function(_0x208f65){BPromise[_0x037d('0x16')]([handleAdditionalPhones()])[_0x037d('0x17')](function(){_0x30aed1=[];for(var _0x5ee1aa=0x0;_0x5ee1aa<promisesAdditionalPhones[_0x037d('0x14')];_0x5ee1aa++){if(promisesAdditionalPhones[_0x5ee1aa][_0x037d('0xd')]!='§'){_0x30aed1[_0x037d('0x15')](createAdditionalPhone(promisesAdditionalPhones[_0x5ee1aa][_0x037d('0x9f')],promisesAdditionalPhones[_0x5ee1aa][_0x037d('0xa0')],promisesAdditionalPhones[_0x5ee1aa][_0x037d('0xd')],promisesAdditionalPhones[_0x5ee1aa]['orderBy']));}}BPromise[_0x037d('0x16')](_0x30aed1)['then'](function(){_0x30aed1=[];if(hasTZ){_0x30aed1[_0x037d('0x15')](insertTzCmHopper(_0x8e6689[_0x037d('0x2c')],_0x037d('0x68'),_0x037d('0x67'),_0x037d('0xa1'),_0x53e614,tmp_voice_queues));_0x30aed1['push'](insertTzCmHopperBlack(_0x8e6689[_0x037d('0x2c')],_0x037d('0xa2'),_0x037d('0x67'),'VoiceQueueId'));_0x30aed1['push'](insertTzCmHopper(_0x8e6689['ListId'],_0x037d('0x63'),'campaigns',_0x037d('0xa3'),_0x53e614,tmp_campaigns));_0x30aed1[_0x037d('0x15')](insertTzCmHopperBlack(_0x8e6689[_0x037d('0x2c')],'campaigns_has_cm_blacklists','campaigns',_0x037d('0xa3')));_0x30aed1[_0x037d('0x15')](insertCmHopperAdditionalPhones(_0x8e6689[_0x037d('0x2c')]));}else{_0x30aed1[_0x037d('0x15')](insertCmHopper(_0x8e6689[_0x037d('0x2c')],_0x037d('0x68'),_0x037d('0x67'),'VoiceQueueId',_0x53e614));_0x30aed1['push'](insertCmHopperBlack(_0x8e6689[_0x037d('0x2c')],_0x037d('0xa2'),_0x037d('0x67'),_0x037d('0xa1')));_0x30aed1[_0x037d('0x15')](insertCmHopper(_0x8e6689[_0x037d('0x2c')],_0x037d('0x63'),_0x037d('0x62'),_0x037d('0xa3'),_0x53e614));_0x30aed1['push'](insertCmHopperBlack(_0x8e6689[_0x037d('0x2c')],_0x037d('0xa4'),'campaigns',_0x037d('0xa3')));_0x30aed1[_0x037d('0x15')](insertCmHopperAdditionalPhones(_0x8e6689[_0x037d('0x2c')]));}_0x30aed1[_0x037d('0x15')](_0x037d('0x9e')+tmp_campaigns+';');_0x30aed1[_0x037d('0x15')](_0x037d('0x9e')+tmp_voice_queues+';');BPromise['each'](_0x30aed1,handleQuery)[_0x037d('0x17')](function(_0x277639){stats['finish']=!![];stats['affectedRows']=_0x8e6689[_0x037d('0x9d')]&&_0x8e6689[_0x037d('0x9d')][_0x037d('0x14')]?results[0x2][_0x037d('0xa5')]:results[0x0][_0x037d('0xa5')];socket[_0x037d('0x93')](_0x037d('0x94')+_0x536c98,stats);fs[_0x037d('0xa6')](_0x579070);fs['unlink'](_0x2d74b9);process[_0x037d('0x5b')](0x0);})[_0x037d('0x5f')](function(_0x47b240){logger[_0x037d('0x66')](_0x47b240[_0x037d('0x5a')]);process[_0x037d('0x5b')](0x1);});});});})[_0x037d('0x5f')](function(_0x155dd8){logger[_0x037d('0x66')](_0x155dd8[_0x037d('0x5a')]);process[_0x037d('0x5b')](0x1);});});});});}catch(_0x3b2c15){logger['error'](_0x037d('0xa7'),_0x3b2c15['message']);process['exit'](0x1);}},'error':function(_0x4b2506,_0x5cc69b,_0x359c7e,_0x14796e){throw new Error(_0x14796e);}});});}function validate(){if(process[_0x037d('0xa8')]&&process[_0x037d('0xa8')]['length']<0x4){throw new Error(_0x037d('0xa9'));}var _0x225474=path['join'](config[_0x037d('0x74')],_0x037d('0x75'),process[_0x037d('0xa8')][0x2]);if(!fs[_0x037d('0xaa')](_0x225474)){throw new Error(_0x037d('0xab'));}var _0x13af1b={};try{_0x13af1b=JSON[_0x037d('0x7b')](process[_0x037d('0xa8')][0x3]);if(!_0x13af1b[_0x037d('0x71')]){throw new Error(_0x037d('0xac'));}if(!_0x13af1b[_0x037d('0x71')][_0x037d('0xd')]){throw new Error(_0x037d('0xad'));}if(!_0x13af1b['binding'][_0x037d('0x90')]){throw new Error(_0x037d('0xae'));}var _0x2feae2=0x0;if(_0x13af1b[_0x037d('0x71')][_0x037d('0x30')]){_0x2feae2=0x1;}if(!_0x13af1b[_0x037d('0x2c')]){throw new Error(_0x037d('0xaf'));}}catch(_0x34dc76){throw new Error(_0x037d('0xb0'));}var _0x2d803c=[];try{_0x2d803c=_[_0x037d('0xb1')](JSON[_0x037d('0x7b')](process[_0x037d('0xa8')][0x4]),'id');}catch(_0x3d1ba9){logger[_0x037d('0x58')](_0x037d('0xb2'));}main(_0x225474,_0x13af1b,_0x2d803c,_0x2feae2);}validate();process['on'](_0x037d('0xb3'),handleStop);process['on'](_0x037d('0xb4'),handleUncaughtException);
\ No newline at end of file
index 0426597..c3df8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c91=['ListId\x20=\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','exit','errors','code','message','query','error','main','stringify','send','binding','clone','socket_timestamp','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','AdditionalPhones','header','parse','createReadStream','data','find','_description','hasOwnProperty','trim','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNumber','includes','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','description','replace','SystemRow','appendFileSync','rows','emit','Abort\x20parser','abort','step','CREATE\x20TABLE\x20','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','each','contact','contactId','contactTypeId','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','UserId','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','lodash','util','bluebird','moment','ioredis','../../../config/environment','defaults','redis','localhost','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','from','join','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','select\x20*\x20from\x20','spread','length','isNil','push','all','then','catch','split','filter','CmContactHasItem','update','create','PHONE','CmContact','CmHopper','cm_contacts.phone','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','ContactId','ListId','createdAt','updatedAt','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','fromQuery','cm_hopper_black','cm_hopper.id','cm_contact_has_items.OrderBy','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId'];(function(_0x34afc1,_0x4f31b5){var _0x1d0dd3=function(_0x4775c6){while(--_0x4775c6){_0x34afc1['push'](_0x34afc1['shift']());}};_0x1d0dd3(++_0x4f31b5);}(_0x2c91,0xe0));var _0x12c9=function(_0x5ae3c8,_0x46b5cf){_0x5ae3c8=_0x5ae3c8-0x0;var _0x25cecf=_0x2c91[_0x5ae3c8];return _0x25cecf;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x12c9('0x0'));var Papa=require('papaparse');var util=require(_0x12c9('0x1'));var BPromise=require(_0x12c9('0x2'));var moment=require(_0x12c9('0x3'));var squel=require('squel');var Redis=require(_0x12c9('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0x12c9('0x5'));var logger=require('../../../config/logger')('import');config['redis']=_[_0x12c9('0x6')](config[_0x12c9('0x7')],{'host':_0x12c9('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x12c9('0x7')]));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()['format'](_0x12c9('0x9'));var tempTableName=_0x12c9('0xa')+moment()['format'](_0x12c9('0xb'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x3e7ca8){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))*$/[_0x12c9('0xc')](_0x3e7ca8);}function selectNotIn(_0x3325ce,_0x2cad41,_0x367a1f,_0x420bbd,_0x6bec6e){return squel[_0x12c9('0xd')]()[_0x12c9('0xe')](_0x12c9('0xf'))[_0x12c9('0x10')](_0x420bbd)[_0x12c9('0x11')](_0x2cad41,null,_0x2cad41+_0x12c9('0x12')+_0x420bbd+'.'+_0x367a1f)['where'](_0x420bbd+'.'+_0x367a1f+_0x12c9('0x13')+_0x3325ce+'.'+_0x367a1f)[_0x12c9('0x14')](_0x2cad41+_0x12c9('0x15')+_0x6bec6e['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x38c297,_0xd20d4e){promisesAdditionalPhones=[];promisesContact=[];return db[_0x12c9('0x16')]['query'](_0x12c9('0x17')+tempTableName)[_0x12c9('0x18')](function(_0x1d4222){if(_0x1d4222!==null){var _0x4877c2=[];for(var _0x3828d4=0x0;_0x3828d4<_0x1d4222[_0x12c9('0x19')];_0x3828d4++){var _0xc440fc=_0x1d4222[_0x3828d4];if(!_[_0x12c9('0x1a')](_0xc440fc[_0x12c9('0xf')])){if(!_[_0x12c9('0x1a')](_0xc440fc['AdditionalPhones']))_0x4877c2[_0x12c9('0x1b')](insertAdditionalPhones(_0xc440fc));promisesContact[_0x12c9('0x1b')]({'contact':_0xc440fc});}}}Promise[_0x12c9('0x1c')](_0x4877c2)[_0x12c9('0x1d')](function(){_0x38c297({'val':0x1});});})[_0x12c9('0x1e')](function(_0x222ffe){logger['error'](_0x222ffe['message']);});});}function insertAdditionalPhones(_0x548564){return new Promise(function(_0x260b85,_0x4009a9){var _0x37a3a9=_0x548564['AdditionalPhones'];if(_[_0x12c9('0x1a')](_0x37a3a9))_0x4009a9({'val':0x0});else{var _0x11c778=_0x37a3a9[_0x12c9('0x1f')](';');var _0x595234=[];orderBy=0x0;for(var _0x2e7f82=0x0;_0x2e7f82<_0x11c778[_0x12c9('0x19')];_0x2e7f82++){_0x595234[_0x12c9('0x1b')](splitAdditionalPhone(_0x548564['id'],_0x11c778[_0x2e7f82]));}Promise[_0x12c9('0x1c')](_0x595234)['then'](function(){_0x260b85({'val':_0x11c778[_0x12c9('0x19')]});});}});}function splitAdditionalPhone(_0x47cd3c,_0x2e1fa6){return new Promise(function(_0x2859dc,_0x30998f){var _0x4735e5=_0x2e1fa6['split'](':');var _0x15f747=_0x4735e5[0x0];var _0x2f0ca9=_0x4735e5[0x1];if(_0x2f0ca9!==''){var _0x1deecf=_0x2f0ca9['split']('|');var _0x3fc97b=[];for(var _0x2e9a2c=0x0;_0x2e9a2c<_0x1deecf[_0x12c9('0x19')];_0x2e9a2c++){if(_0x1deecf[_0x2e9a2c]!==''){var _0x9c142e=_[_0x12c9('0x20')](promisesAdditionalPhones,{'contactId':_0x47cd3c,'phone':_0x1deecf[_0x2e9a2c]});if(_0x9c142e[_0x12c9('0x19')]==0x0){orderBy++;promisesAdditionalPhones[_0x12c9('0x1b')]({'contactId':_0x47cd3c,'contactTypeId':_0x15f747,'phone':_0x1deecf[_0x2e9a2c],'orderBy':orderBy});}}}_0x2859dc({'ok':0x1});}else _0x2859dc({'res':0x0});});}function createAdditionalPhone(_0x246850,_0x1f4f09,_0x27b97a,_0x117315){var _0x55deb9='';var _0x3d1da8='';var _0x464812=_0x27b97a[_0x12c9('0x1f')]('§');_0x55deb9=_0x464812[0x0];if(_0x464812[_0x12c9('0x19')]==0x2)_0x3d1da8=_0x464812[0x1];return new Promise(function(_0x3182f3,_0x545e01){return db[_0x12c9('0x21')]['findOne']({'where':{'CmContactId':_0x246850,'item':_0x55deb9}})[_0x12c9('0x1d')](function(_0x184bd8){if(_0x184bd8){return db['CmContactHasItem'][_0x12c9('0x22')]({'ItemTypeId':_0x1f4f09,'description':_0x3d1da8,'OrderBy':_0x117315},{'where':{'CmContactId':_0x246850,'item':_0x55deb9}})[_0x12c9('0x1d')](function(_0x2c368a){_0x3182f3({'res':'updated'});});}else{return db[_0x12c9('0x21')][_0x12c9('0x23')]({'CmContactId':_0x246850,'item':_0x55deb9,'ItemTypeId':_0x1f4f09,'description':_0x3d1da8,'OrderBy':_0x117315,'ItemClass':_0x12c9('0x24')})[_0x12c9('0x1d')](function(_0xc37ef9){_0x3182f3({'res':'inserted'});});}});});}function updateContact(_0x11ee3e){return new Promise(function(_0x1e6293,_0x35aece){var _0x4ceced=_0x11ee3e['id'];delete _0x11ee3e['id'];return db[_0x12c9('0x25')]['update'](_0x11ee3e,{'where':{'id':_0x4ceced}})[_0x12c9('0x1d')](function(_0x365b97){updatedRows+=0x1;return db[_0x12c9('0x26')][_0x12c9('0x22')]({'phone':_0x11ee3e[_0x12c9('0xf')]},{'where':{'ContactId':_0x4ceced}})['then'](function(_0x52e3b0){_0x1e6293({'ret':'OK'});});});});}function insertCmHopper(_0x3d9f89,_0x5bff5b,_0x4d6194,_0x18eb96,_0x395113){var _0x319754=[_0x12c9('0x27'),'cm_contacts.scheduledat',_0x12c9('0x28'),'cm_contacts.ListId',_0x5bff5b+'.'+_0x18eb96,'cm_contacts.createdAt',_0x12c9('0x29'),_0x12c9('0x2a'),'cm_contacts.UserId','\x22'+_0x395113+'\x22'];return squel[_0x12c9('0x2b')]()[_0x12c9('0x2c')](_0x12c9('0x2d'))['fromQuery']([_0x12c9('0xf'),'scheduledat',_0x12c9('0x2e'),_0x12c9('0x2f'),_0x18eb96,_0x12c9('0x30'),_0x12c9('0x31'),'priority','UserId','recallme'],squel[_0x12c9('0xd')]()[_0x12c9('0x32')](_0x319754)['from'](_0x5bff5b)['join']('cm_contacts',null,_0x12c9('0x33')+_0x5bff5b+_0x12c9('0x34'))[_0x12c9('0x11')](_0x4d6194,null,_0x4d6194+_0x12c9('0x12')+_0x5bff5b+'.'+_0x18eb96)['where'](_0x5bff5b+_0x12c9('0x35'),_0x3d9f89)[_0x12c9('0x14')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x12c9('0x36'),selectNotIn(_0x5bff5b,_0x4d6194,_0x18eb96,_0x12c9('0x2d'),[_0x12c9('0x37'),_0x12c9('0x38')]))[_0x12c9('0x14')](_0x12c9('0x36'),selectNotIn(_0x5bff5b,_0x4d6194,_0x18eb96,_0x12c9('0x2d'),[_0x12c9('0x37')])))[_0x12c9('0x39')]();}function insertCmHopperBlack(_0x214f34,_0x19963c,_0x4fb64a,_0x4de2ec){var _0x2c5acc=[_0x12c9('0x27'),_0x12c9('0x28'),_0x12c9('0x3a'),_0x19963c+'.'+_0x4de2ec,'cm_contacts.createdAt',_0x12c9('0x29')];return squel['insert']()[_0x12c9('0x2c')]('cm_hopper_black')[_0x12c9('0x3b')]([_0x12c9('0xf'),_0x12c9('0x2e'),_0x12c9('0x2f'),_0x4de2ec,_0x12c9('0x30'),'updatedAt'],squel[_0x12c9('0xd')]()[_0x12c9('0x32')](_0x2c5acc)[_0x12c9('0x10')](_0x19963c)['join']('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x19963c+'.CmListId')[_0x12c9('0x11')](_0x4fb64a,null,_0x4fb64a+_0x12c9('0x12')+_0x19963c+'.'+_0x4de2ec)[_0x12c9('0x14')](_0x19963c+_0x12c9('0x35'),_0x214f34)[_0x12c9('0x14')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x12c9('0x14')](_0x12c9('0x36'),squel[_0x12c9('0xd')]()[_0x12c9('0xe')](_0x12c9('0xf'))[_0x12c9('0x10')](_0x12c9('0x3c'))[_0x12c9('0x14')]('ListId\x20=\x20?',_0x214f34)[_0x12c9('0x14')](_0x4de2ec+'\x20=\x20?',_0x19963c+'.'+_0x4de2ec)))[_0x12c9('0x39')]();}function insertCmHopperAdditionalPhones(_0x39fb55){var _0xf993a7=[_0x12c9('0x3d'),'cm_contact_has_items.item',_0x12c9('0x3e'),'cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt'];return squel[_0x12c9('0x2b')]()[_0x12c9('0x2c')](_0x12c9('0x3f'))[_0x12c9('0x3b')]([_0x12c9('0x40'),_0x12c9('0xf'),_0x12c9('0x41'),_0x12c9('0x30'),_0x12c9('0x31')],squel['select']()[_0x12c9('0x32')](_0xf993a7)[_0x12c9('0x10')]('cm_hopper')[_0x12c9('0x11')](_0x12c9('0x42'),null,_0x12c9('0x43'))[_0x12c9('0x11')](_0x12c9('0x44'),null,_0x12c9('0x45'))[_0x12c9('0x14')](_0x12c9('0x46'),_0x39fb55)['where']('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x3da484,_0x33509b,_0x1c327c,_0x572783){var _0x165a30=_[_0x12c9('0x47')](_[_0x12c9('0x48')](_0x572783),[_0x12c9('0x2f'),_0x12c9('0x49'),_0x12c9('0x30'),_0x12c9('0x31')]);return squel[_0x12c9('0x2b')]()[_0x12c9('0x2c')](_0x12c9('0x42'))[_0x12c9('0x3b')](_0x165a30,squel[_0x12c9('0xd')]()[_0x12c9('0x32')](_0x165a30)[_0x12c9('0x10')](_0x33509b)[_0x12c9('0x14')]('('+_0x1c327c[_0x12c9('0x11')](',')+')\x20NOT\x20IN\x20?',squel[_0x12c9('0xd')]()[_0x12c9('0x32')](_0x1c327c)['from']('cm_contacts')[_0x12c9('0x14')](_0x12c9('0x4a'),_0x3da484))[_0x12c9('0x14')](_0x12c9('0x4b'),squel[_0x12c9('0xd')]()['field'](_0x12c9('0x4c'),_0x12c9('0x4d'))[_0x12c9('0x10')](_0x33509b)[_0x12c9('0x4e')](_0x1c327c[_0x12c9('0x11')](','))))[_0x12c9('0x39')]();}function handleStop(){logger[_0x12c9('0x4f')](_0x12c9('0x50'));stopped=!![];}function handleUncaughtException(_0x3c0f71){logger['error'](_0x3c0f71['message']);process[_0x12c9('0x51')](0x1);}function handleError(_0x1f86b7,_0x2c9c03){stats[_0x12c9('0x52')]['push']({'name':_0x2c9c03[_0x12c9('0x53')],'message':_0x2c9c03[_0x12c9('0x54')],'row':_0x1f86b7});}function handleQuery(_0x109f81){logger[_0x12c9('0x4f')](_0x109f81);return db[_0x12c9('0x16')][_0x12c9('0x55')](_0x109f81)[_0x12c9('0x18')](function(_0x170130){results['push'](_0x170130);})[_0x12c9('0x1e')](function(_0x22634f){logger[_0x12c9('0x56')](_0x22634f[_0x12c9('0x54')]);});}function main(_0x46f6b4,_0x11c589,_0x281e2e,_0x464da4){logger['info'](_0x12c9('0x57'),_0x46f6b4,JSON[_0x12c9('0x58')](_0x11c589));process[_0x12c9('0x59')]('start');var _0x4fa2b0=_0x11c589[_0x12c9('0x5a')];var _0xa34f1c=_[_0x12c9('0x5b')](_0x4fa2b0);var _0x9fff56=_0x11c589[_0x12c9('0x5c')];var _0x497158=path['join'](config[_0x12c9('0x5d')],_0x12c9('0x5e'),_0x9fff56+_0x12c9('0x5f'));logger[_0x12c9('0x4f')](_0x12c9('0x60'),_0x11c589);db[_0x12c9('0x61')][_0x12c9('0x62')]({'raw':!![],'attributes':['id',_0x12c9('0x63')]})['then'](function(_0x357186){for(var _0x9e197e=0x0;_0x9e197e<_0x357186['length'];_0x9e197e++){if(_0x357186[_0x9e197e][_0x12c9('0x63')]in _0x4fa2b0){contactItemTypes[_0x12c9('0x1b')](_0x357186[_0x9e197e]);delete _0xa34f1c[_0x357186[_0x9e197e][_0x12c9('0x63')]];hasAdditionalPhones=!![];}for(var _0x512ba2 in _0x4fa2b0){if(_0x357186[_0x9e197e][_0x12c9('0x63')]+'_description'===_0x512ba2){phoneDescriptions['push']({'itemTypeId':_0x357186[_0x9e197e]['id'],'description':_0x512ba2});delete _0xa34f1c[_0x512ba2];}}}if(hasAdditionalPhones)_0xa34f1c[_0x12c9('0x64')]='';var _0x4625cc=_[_0x12c9('0x48')](_0xa34f1c)[_0x12c9('0x11')]();logger[_0x12c9('0x4f')](_0x12c9('0x65'),_0x4625cc);fs['writeFileSync'](_0x497158,_0x4625cc+'\x0a');Papa[_0x12c9('0x66')](fs[_0x12c9('0x67')](_0x46f6b4),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3d2338,_0x28e628){try{for(var _0x46755f=0x0,_0x44a739=[];_0x46755f<_0x3d2338[_0x12c9('0x68')]['length'];_0x46755f++){stats['rows']+=0x1;if(_0x3d2338[_0x12c9('0x52')][_0x46755f]){handleError(_0x3d2338[_0x12c9('0x68')][_0x46755f],_0x3d2338[_0x12c9('0x52')][_0x46755f]);}else{var _0x236aa8=[];var _0x5f01bf=[];var _0x50de9f={};for(var _0x51cf12 in _0x4fa2b0){let _0x24d3ee=contactItemTypes['find'](_0x4ba2b8=>_0x4ba2b8[_0x12c9('0x63')]===_0x51cf12);let _0x314fea=contactItemTypes[_0x12c9('0x69')](_0x426d13=>_0x426d13[_0x12c9('0x63')]+_0x12c9('0x6a')===_0x51cf12);if(_[_0x12c9('0x1a')](_0x24d3ee)&&_['isNil'](_0x314fea)){if(_0x4fa2b0[_0x12c9('0x6b')](_0x51cf12)){if(_0x3d2338[_0x12c9('0x68')][_0x46755f][_0x4fa2b0[_0x51cf12]]){var _0x588441=_[_0x12c9('0x6c')](_0x3d2338[_0x12c9('0x68')][_0x46755f][_0x4fa2b0[_0x51cf12]]['replace'](/"/g,'\x27'));switch(_0x51cf12){case _0x12c9('0x6d'):var _0x103673=moment(_0x588441,_0x12c9('0x9'),!![]);if(_0x103673[_0x12c9('0x6e')]()){_0x44a739['push']('\x22'+_0x588441+'\x22');}else{_0x236aa8[_0x12c9('0x1b')](_0x12c9('0x6f'));}break;case _0x12c9('0x70'):var _0x3a7fbe=parseInt(_0x588441);_0x588441=_['isNaN'](_0x3a7fbe)||_0x3a7fbe<0x0||_0x3a7fbe>0x4?_0x464da4?0x3:0x2:_0x3a7fbe;_0x44a739[_0x12c9('0x1b')]('\x22'+_0x588441+'\x22');break;case'UserId':var _0x360bd7=parseInt(_0x588441);if(_[_0x12c9('0x71')](_0x360bd7)&&_[_0x12c9('0x72')](_0x281e2e,_0x360bd7)){_0x44a739[_0x12c9('0x1b')]('\x22'+_0x360bd7+'\x22');}else{_0x236aa8[_0x12c9('0x1b')]('agent\x20not\x20exists');}break;case'email':if(isEmail(_0x588441)){_0x44a739[_0x12c9('0x1b')]('\x22'+_0x588441+'\x22');}else{_0x236aa8[_0x12c9('0x1b')](_0x12c9('0x73'));}break;case _0x12c9('0x74'):var _0x42db71=moment(_0x588441,_0x12c9('0x75'),!![]);if(_0x42db71['isValid']()){_0x44a739[_0x12c9('0x1b')]('\x22'+_0x588441+'\x22');}else{_0x236aa8[_0x12c9('0x1b')](_0x12c9('0x76'));}break;default:_0x44a739[_0x12c9('0x1b')]('\x22'+_0x588441+'\x22');}}else{switch(_0x51cf12){case _0x12c9('0x77'):case'phone':_0x236aa8[_0x12c9('0x1b')](_0x51cf12+_0x12c9('0x78'));break;default:_0x44a739[_0x12c9('0x1b')]('\x22\x22');}}}}else{var _0x3dff77='';if(!_[_0x12c9('0x1a')](_0x24d3ee)){if(!_0x50de9f[_0x12c9('0x6b')](_0x24d3ee['id'])){for(var _0x49b81a=0x0;_0x49b81a<_0x4fa2b0[_0x51cf12][_0x12c9('0x19')];_0x49b81a++){var _0x588441=_[_0x12c9('0x6c')](_0x3d2338[_0x12c9('0x68')][_0x46755f][_0x4fa2b0[_0x51cf12][_0x49b81a]]['replace'](/"/g,'\x27'));var _0x24b451=phoneDescriptions[_0x12c9('0x69')](_0x43355c=>_0x43355c['itemTypeId']===_0x24d3ee['id']);if(!_['isNil'](_0x24b451)){var _0x3f02ca=_[_0x12c9('0x6c')](_0x3d2338['data'][_0x46755f][_0x4fa2b0[_0x24b451[_0x12c9('0x79')]][0x0]][_0x12c9('0x7a')](/"/g,'\x27'));if(!_[_0x12c9('0x1a')](_0x3f02ca))_0x588441=_0x588441+'§'+_0x3f02ca;}if(_0x3dff77=='')_0x3dff77=_0x588441;else _0x3dff77+='|'+_0x588441;}_0x5f01bf[_0x12c9('0x1b')](_0x24d3ee['id']+':'+_0x3dff77);_0x50de9f[_0x24d3ee['id']]=0x1;}}}}if(hasAdditionalPhones){_0x44a739[_0x12c9('0x1b')]('\x22'+_0x5f01bf[_0x12c9('0x11')](';')+'\x22');}if(_0x236aa8['length']){handleError(_0x3d2338[_0x12c9('0x68')][_0x46755f],{'code':_0x12c9('0x7b'),'message':_0x236aa8[_0x12c9('0x11')]()});}else{fs[_0x12c9('0x7c')](_0x497158,_0x44a739[_0x12c9('0x11')]()+'\x0a');}_0x44a739=[];}if(!(stats[_0x12c9('0x7d')]%0xc8)){socket[_0x12c9('0x7e')]('contact:import:'+_0x9fff56,stats);stats[_0x12c9('0x52')]=[];}}if(stopped){logger[_0x12c9('0x4f')](_0x12c9('0x7f'));_0x28e628[_0x12c9('0x80')]();}}catch(_0x56f06a){handleError(_0x3d2338['data'][_0x46755f],{'code':'SystemError','message':_0x56f06a['message']});logger[_0x12c9('0x56')](_0x12c9('0x81'),_0x56f06a[_0x12c9('0x54')]);}},'complete':function(){try{var _0x5e7a92=[];var _0x3eea13=tempTableName;_0x5e7a92['push'](_0x12c9('0x82')+_0x3eea13+'\x20LIKE\x20cm_contacts;');logger[_0x12c9('0x4f')]('CIS\x20len',contactItemTypes[_0x12c9('0x19')]);var _0x45bd4c=util[_0x12c9('0x83')](_0x12c9('0x84'),_0x497158,_0x3eea13,_0x4625cc,_0x11c589[_0x12c9('0x2f')],_0x11c589['CompanyId']||null,NOW,NOW);if(_[_0x12c9('0x1a')](_0x4fa2b0[_0x12c9('0x6d')])){_0x45bd4c+=',\x20scheduledAt\x20=\x20NOW()';}_0x5e7a92[_0x12c9('0x1b')](_0x45bd4c);BPromise[_0x12c9('0x85')](_0x5e7a92,handleQuery)[_0x12c9('0x1d')](function(_0x1a3942){BPromise['all']([handleAdditionalPhones()])['then'](function(){_0x5e7a92=[];for(var _0x371f3a=0x0;_0x371f3a<promisesContact[_0x12c9('0x19')];_0x371f3a++){_0x5e7a92[_0x12c9('0x1b')](updateContact(promisesContact[_0x371f3a][_0x12c9('0x86')]));}BPromise[_0x12c9('0x1c')](_0x5e7a92)[_0x12c9('0x1d')](function(){_0x5e7a92=[];for(var _0x10cd7a=0x0;_0x10cd7a<promisesAdditionalPhones['length'];_0x10cd7a++){_0x5e7a92[_0x12c9('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x10cd7a][_0x12c9('0x87')],promisesAdditionalPhones[_0x10cd7a][_0x12c9('0x88')],promisesAdditionalPhones[_0x10cd7a][_0x12c9('0xf')],promisesAdditionalPhones[_0x10cd7a]['orderBy']));}BPromise['all'](_0x5e7a92)[_0x12c9('0x1d')](function(){_0x5e7a92=[];_0x5e7a92[_0x12c9('0x1b')](insertCmHopperAdditionalPhones(_0x11c589[_0x12c9('0x2f')]));_0x5e7a92[_0x12c9('0x1b')]('DROP\x20TABLE\x20'+_0x3eea13+';');BPromise[_0x12c9('0x85')](_0x5e7a92,handleQuery)['then'](function(_0x1056ea){stats[_0x12c9('0x89')]=!![];stats[_0x12c9('0x8a')]=updatedRows;socket[_0x12c9('0x7e')]('contact:import:'+_0x9fff56,stats);fs[_0x12c9('0x8b')](_0x46f6b4);fs[_0x12c9('0x8b')](_0x497158);process[_0x12c9('0x51')](0x0);})['catch'](function(_0x395c30){logger['error'](_0x395c30[_0x12c9('0x54')]);process[_0x12c9('0x51')](0x1);});});});});})[_0x12c9('0x1e')](function(_0x5e8fbd){logger['error'](_0x5e8fbd['message']);process[_0x12c9('0x51')](0x1);});}catch(_0x2786b4){logger[_0x12c9('0x56')](_0x12c9('0x8c'),_0x2786b4[_0x12c9('0x54')]);process['exit'](0x1);}},'error':function(_0x5c244b,_0x57c84e,_0x2bdb4f,_0x4eadbc){throw new Error(_0x4eadbc);}});});}function validate(){if(process[_0x12c9('0x8d')]&&process[_0x12c9('0x8d')]['length']<0x4){throw new Error(_0x12c9('0x8e'));}var _0x2a1775=path[_0x12c9('0x11')](config[_0x12c9('0x5d')],'server/files/tmp',process[_0x12c9('0x8d')][0x2]);if(!fs['existsSync'](_0x2a1775)){throw new Error(_0x12c9('0x8f'));}var _0xffa2b5={};try{_0xffa2b5=JSON[_0x12c9('0x66')](process[_0x12c9('0x8d')][0x3]);if(!_0xffa2b5[_0x12c9('0x5a')]){throw new Error(_0x12c9('0x90'));}var _0x6ab36d=0x0;if(_0xffa2b5[_0x12c9('0x5a')][_0x12c9('0x91')]){_0x6ab36d=0x1;}if(!_0xffa2b5[_0x12c9('0x2f')]){throw new Error(_0x12c9('0x92'));}}catch(_0x4b0eb2){throw new Error(_0x12c9('0x93'));}var _0x281ff9=[];try{_0x281ff9=_['map'](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x296b00){logger[_0x12c9('0x4f')](_0x12c9('0x94'));}main(_0x2a1775,_0xffa2b5,_0x281ff9,_0x6ab36d);}validate();process['on']('SIGINT',handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0xd1f8=['OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','exit','push','code','info','main','send','start','binding','clone','root','.csv','body','ContactItemType','name','_description','writeFileSync','createReadStream','data','rows','errors','find','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','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','trim','itemTypeId','description','emit','contact:import:','abort','SystemError','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','CompanyId',',\x20scheduledAt\x20=\x20NOW()','each','contactTypeId','orderBy','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','moment','ioredis','../../../config/environment','import','redis','localhost','socket.io-emitter','format','cm_contacts_temp_','test','select','phone','from','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','all','then','catch','error','message','split','filter','CmContactHasItem','findOne','update','updated','create','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.ListId','cm_contacts.updatedAt','insert','into','cm_hopper_black','createdAt','field','ListId\x20=\x20?','\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'];(function(_0x350182,_0x2a9feb){var _0x4a0892=function(_0x2c994d){while(--_0x2c994d){_0x350182['push'](_0x350182['shift']());}};_0x4a0892(++_0x2a9feb);}(_0xd1f8,0x18e));var _0x8d1f=function(_0x519756,_0x288785){_0x519756=_0x519756-0x0;var _0x37047e=_0xd1f8[_0x519756];return _0x37047e;};'use strict';var fs=require('fs');var path=require(_0x8d1f('0x0'));var _=require(_0x8d1f('0x1'));var Papa=require(_0x8d1f('0x2'));var util=require(_0x8d1f('0x3'));var BPromise=require('bluebird');var moment=require(_0x8d1f('0x4'));var squel=require('squel');var Redis=require(_0x8d1f('0x5'));var db=require('../../../mysqldb')['db'];var config=require(_0x8d1f('0x6'));var logger=require('../../../config/logger')(_0x8d1f('0x7'));config[_0x8d1f('0x8')]=_['defaults'](config[_0x8d1f('0x8')],{'host':_0x8d1f('0x9'),'port':0x18eb});var socket=require(_0x8d1f('0xa'))(new Redis(config[_0x8d1f('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()[_0x8d1f('0xb')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0x8d1f('0xc')+moment()[_0x8d1f('0xb')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x3044e7){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))*$/[_0x8d1f('0xd')](_0x3044e7);}function selectNotIn(_0x228a85,_0x425838,_0x10891a,_0x5f56a1,_0x5ca81d){return squel[_0x8d1f('0xe')]()['field'](_0x8d1f('0xf'))[_0x8d1f('0x10')](_0x5f56a1)['join'](_0x425838,null,_0x425838+_0x8d1f('0x11')+_0x5f56a1+'.'+_0x10891a)[_0x8d1f('0x12')](_0x5f56a1+'.'+_0x10891a+_0x8d1f('0x13')+_0x228a85+'.'+_0x10891a)['where'](_0x425838+_0x8d1f('0x14')+_0x5ca81d[_0x8d1f('0x15')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x443511,_0x2657f2){promisesAdditionalPhones=[];promisesContact=[];return db[_0x8d1f('0x16')][_0x8d1f('0x17')](_0x8d1f('0x18')+tempTableName)[_0x8d1f('0x19')](function(_0x2463c9){if(_0x2463c9!==null){var _0x2422d0=[];for(var _0x19dabf=0x0;_0x19dabf<_0x2463c9[_0x8d1f('0x1a')];_0x19dabf++){var _0x431beb=_0x2463c9[_0x19dabf];if(!_[_0x8d1f('0x1b')](_0x431beb[_0x8d1f('0xf')])){if(!_[_0x8d1f('0x1b')](_0x431beb[_0x8d1f('0x1c')]))_0x2422d0['push'](insertAdditionalPhones(_0x431beb));promisesContact['push']({'contact':_0x431beb});}}}Promise[_0x8d1f('0x1d')](_0x2422d0)[_0x8d1f('0x1e')](function(){_0x443511({'val':0x1});});})[_0x8d1f('0x1f')](function(_0x11948d){logger[_0x8d1f('0x20')](_0x11948d[_0x8d1f('0x21')]);});});}function insertAdditionalPhones(_0x59bd2f){return new Promise(function(_0x194fe0,_0xa52d89){var _0x32b8aa=_0x59bd2f[_0x8d1f('0x1c')];if(_['isNil'](_0x32b8aa))_0xa52d89({'val':0x0});else{var _0x47cfb0=_0x32b8aa[_0x8d1f('0x22')](';');var _0x102e98=[];orderBy=0x0;for(var _0x5175a5=0x0;_0x5175a5<_0x47cfb0[_0x8d1f('0x1a')];_0x5175a5++){_0x102e98['push'](splitAdditionalPhone(_0x59bd2f['id'],_0x47cfb0[_0x5175a5]));}Promise[_0x8d1f('0x1d')](_0x102e98)[_0x8d1f('0x1e')](function(){_0x194fe0({'val':_0x47cfb0[_0x8d1f('0x1a')]});});}});}function splitAdditionalPhone(_0x2279b9,_0x396636){return new Promise(function(_0x41f46c,_0x250e58){var _0x38170b=_0x396636[_0x8d1f('0x22')](':');var _0x4ba072=_0x38170b[0x0];var _0x24c04a=_0x38170b[0x1];if(_0x24c04a!==''){var _0x213321=_0x24c04a['split']('|');var _0x391e79=[];for(var _0x860eda=0x0;_0x860eda<_0x213321['length'];_0x860eda++){if(_0x213321[_0x860eda]!==''){var _0x1425a3=_[_0x8d1f('0x23')](promisesAdditionalPhones,{'contactId':_0x2279b9,'phone':_0x213321[_0x860eda]});if(_0x1425a3[_0x8d1f('0x1a')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x2279b9,'contactTypeId':_0x4ba072,'phone':_0x213321[_0x860eda],'orderBy':orderBy});}}}_0x41f46c({'ok':0x1});}else _0x41f46c({'res':0x0});});}function createAdditionalPhone(_0x2e0d54,_0x225fd7,_0x4ca54a,_0x4e7e41){var _0x3c15de='';var _0x564920='';var _0x4c60bb=_0x4ca54a[_0x8d1f('0x22')]('§');_0x3c15de=_0x4c60bb[0x0];if(_0x4c60bb[_0x8d1f('0x1a')]==0x2)_0x564920=_0x4c60bb[0x1];return new Promise(function(_0xf92fd0,_0x10829d){return db[_0x8d1f('0x24')][_0x8d1f('0x25')]({'where':{'CmContactId':_0x2e0d54,'item':_0x3c15de}})[_0x8d1f('0x1e')](function(_0x1da9f8){if(_0x1da9f8){return db['CmContactHasItem'][_0x8d1f('0x26')]({'ItemTypeId':_0x225fd7,'description':_0x564920,'OrderBy':_0x4e7e41},{'where':{'CmContactId':_0x2e0d54,'item':_0x3c15de}})[_0x8d1f('0x1e')](function(_0x2f6003){_0xf92fd0({'res':_0x8d1f('0x27')});});}else{return db[_0x8d1f('0x24')][_0x8d1f('0x28')]({'CmContactId':_0x2e0d54,'item':_0x3c15de,'ItemTypeId':_0x225fd7,'description':_0x564920,'OrderBy':_0x4e7e41,'ItemClass':'PHONE'})[_0x8d1f('0x1e')](function(_0x47cff6){_0xf92fd0({'res':'inserted'});});}});});}function updateContact(_0x45bf99){return new Promise(function(_0x444227,_0x4b09c0){var _0x4c33e8=_0x45bf99['id'];delete _0x45bf99['id'];return db['CmContact'][_0x8d1f('0x26')](_0x45bf99,{'where':{'id':_0x4c33e8}})[_0x8d1f('0x1e')](function(_0x1d644c){updatedRows+=0x1;return db[_0x8d1f('0x29')][_0x8d1f('0x26')]({'phone':_0x45bf99[_0x8d1f('0xf')]},{'where':{'ContactId':_0x4c33e8}})[_0x8d1f('0x1e')](function(_0x1deac0){_0x444227({'ret':'OK'});});});});}function insertCmHopper(_0x560daf,_0x5c7cdb,_0x51a012,_0x30a671,_0xdbe040){var _0x30b4d2=[_0x8d1f('0x2a'),_0x8d1f('0x2b'),_0x8d1f('0x2c'),'cm_contacts.ListId',_0x5c7cdb+'.'+_0x30a671,_0x8d1f('0x2d'),'cm_contacts.updatedAt',_0x8d1f('0x2e'),_0x8d1f('0x2f'),'\x22'+_0xdbe040+'\x22'];return squel['insert']()['into'](_0x8d1f('0x30'))[_0x8d1f('0x31')]([_0x8d1f('0xf'),_0x8d1f('0x32'),_0x8d1f('0x33'),_0x8d1f('0x34'),_0x30a671,'createdAt',_0x8d1f('0x35'),_0x8d1f('0x36'),_0x8d1f('0x37'),_0x8d1f('0x38')],squel[_0x8d1f('0xe')]()[_0x8d1f('0x39')](_0x30b4d2)[_0x8d1f('0x10')](_0x5c7cdb)[_0x8d1f('0x15')](_0x8d1f('0x3a'),null,_0x8d1f('0x3b')+_0x5c7cdb+_0x8d1f('0x3c'))['join'](_0x51a012,null,_0x51a012+_0x8d1f('0x11')+_0x5c7cdb+'.'+_0x30a671)[_0x8d1f('0x12')](_0x5c7cdb+_0x8d1f('0x3d'),_0x560daf)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x8d1f('0x3e'),selectNotIn(_0x5c7cdb,_0x51a012,_0x30a671,_0x8d1f('0x30'),['\x22always\x22',_0x8d1f('0x3f')]))[_0x8d1f('0x12')](_0x8d1f('0x3e'),selectNotIn(_0x5c7cdb,_0x51a012,_0x30a671,_0x8d1f('0x30'),[_0x8d1f('0x40')])))[_0x8d1f('0x41')]();}function insertCmHopperBlack(_0x345d19,_0x279e9a,_0x1b8186,_0x2d891e){var _0x2ef090=['cm_contacts.phone',_0x8d1f('0x2c'),_0x8d1f('0x42'),_0x279e9a+'.'+_0x2d891e,'cm_contacts.createdAt',_0x8d1f('0x43')];return squel[_0x8d1f('0x44')]()[_0x8d1f('0x45')](_0x8d1f('0x46'))['fromQuery'](['phone','ContactId','ListId',_0x2d891e,_0x8d1f('0x47'),_0x8d1f('0x35')],squel['select']()[_0x8d1f('0x39')](_0x2ef090)['from'](_0x279e9a)['join']('cm_contacts',null,_0x8d1f('0x3b')+_0x279e9a+_0x8d1f('0x3c'))[_0x8d1f('0x15')](_0x1b8186,null,_0x1b8186+_0x8d1f('0x11')+_0x279e9a+'.'+_0x2d891e)['where'](_0x279e9a+_0x8d1f('0x3d'),_0x345d19)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x8d1f('0x12')](_0x8d1f('0x3e'),squel[_0x8d1f('0xe')]()[_0x8d1f('0x48')](_0x8d1f('0xf'))[_0x8d1f('0x10')](_0x8d1f('0x46'))[_0x8d1f('0x12')](_0x8d1f('0x49'),_0x345d19)['where'](_0x2d891e+_0x8d1f('0x4a'),_0x279e9a+'.'+_0x2d891e)))[_0x8d1f('0x41')]();}function insertCmHopperAdditionalPhones(_0x11cb18){var _0x1c0fb4=[_0x8d1f('0x4b'),_0x8d1f('0x4c'),_0x8d1f('0x4d'),_0x8d1f('0x4e'),_0x8d1f('0x4f')];return squel[_0x8d1f('0x44')]()[_0x8d1f('0x45')](_0x8d1f('0x50'))[_0x8d1f('0x31')]([_0x8d1f('0x51'),_0x8d1f('0xf'),_0x8d1f('0x52'),'createdAt',_0x8d1f('0x35')],squel[_0x8d1f('0xe')]()[_0x8d1f('0x39')](_0x1c0fb4)[_0x8d1f('0x10')](_0x8d1f('0x30'))[_0x8d1f('0x15')](_0x8d1f('0x3a'),null,_0x8d1f('0x53'))[_0x8d1f('0x15')](_0x8d1f('0x54'),null,_0x8d1f('0x55'))[_0x8d1f('0x12')](_0x8d1f('0x56'),_0x11cb18)['where'](_0x8d1f('0x57'),NOW))[_0x8d1f('0x41')]();}function insertCmContact(_0x2bc876,_0x441f45,_0x3afbb9,_0x5e8443){var _0x3c730b=_[_0x8d1f('0x58')](_[_0x8d1f('0x59')](_0x5e8443),[_0x8d1f('0x34'),'CompanyId',_0x8d1f('0x47'),_0x8d1f('0x35')]);return squel[_0x8d1f('0x44')]()['into']('cm_contacts')[_0x8d1f('0x31')](_0x3c730b,squel[_0x8d1f('0xe')]()[_0x8d1f('0x39')](_0x3c730b)[_0x8d1f('0x10')](_0x441f45)[_0x8d1f('0x12')]('('+_0x3afbb9['join'](',')+_0x8d1f('0x5a'),squel[_0x8d1f('0xe')]()['fields'](_0x3afbb9)[_0x8d1f('0x10')](_0x8d1f('0x3a'))[_0x8d1f('0x12')](_0x8d1f('0x49'),_0x2bc876))[_0x8d1f('0x12')]('id\x20IN\x20?',squel[_0x8d1f('0xe')]()[_0x8d1f('0x48')](_0x8d1f('0x5b'),_0x8d1f('0x5c'))[_0x8d1f('0x10')](_0x441f45)[_0x8d1f('0x5d')](_0x3afbb9[_0x8d1f('0x15')](','))))[_0x8d1f('0x41')]();}function handleStop(){logger['info'](_0x8d1f('0x5e'));stopped=!![];}function handleUncaughtException(_0x3ac0d1){logger[_0x8d1f('0x20')](_0x3ac0d1[_0x8d1f('0x21')]);process[_0x8d1f('0x5f')](0x1);}function handleError(_0x313f25,_0x519586){stats['errors'][_0x8d1f('0x60')]({'name':_0x519586[_0x8d1f('0x61')],'message':_0x519586[_0x8d1f('0x21')],'row':_0x313f25});}function handleQuery(_0x302203){logger[_0x8d1f('0x62')](_0x302203);return db[_0x8d1f('0x16')][_0x8d1f('0x17')](_0x302203)[_0x8d1f('0x19')](function(_0x467beb){results[_0x8d1f('0x60')](_0x467beb);})['catch'](function(_0x3e8751){logger[_0x8d1f('0x20')](_0x3e8751[_0x8d1f('0x21')]);});}function main(_0x4f41d5,_0x244b6f,_0x1d53cf,_0x45c980){logger[_0x8d1f('0x62')](_0x8d1f('0x63'),_0x4f41d5,JSON['stringify'](_0x244b6f));process[_0x8d1f('0x64')](_0x8d1f('0x65'));var _0x16f9f1=_0x244b6f[_0x8d1f('0x66')];var _0x1fd50c=_[_0x8d1f('0x67')](_0x16f9f1);var _0x27a816=_0x244b6f['socket_timestamp'];var _0xa95fd=path['join'](config[_0x8d1f('0x68')],'server/files/tmp',_0x27a816+_0x8d1f('0x69'));logger['info'](_0x8d1f('0x6a'),_0x244b6f);db[_0x8d1f('0x6b')]['findAll']({'raw':!![],'attributes':['id',_0x8d1f('0x6c')]})[_0x8d1f('0x1e')](function(_0x39f621){for(var _0x37c753=0x0;_0x37c753<_0x39f621[_0x8d1f('0x1a')];_0x37c753++){if(_0x39f621[_0x37c753][_0x8d1f('0x6c')]in _0x16f9f1){contactItemTypes[_0x8d1f('0x60')](_0x39f621[_0x37c753]);delete _0x1fd50c[_0x39f621[_0x37c753][_0x8d1f('0x6c')]];hasAdditionalPhones=!![];}for(var _0x3567f8 in _0x16f9f1){if(_0x39f621[_0x37c753][_0x8d1f('0x6c')]+_0x8d1f('0x6d')===_0x3567f8){phoneDescriptions[_0x8d1f('0x60')]({'itemTypeId':_0x39f621[_0x37c753]['id'],'description':_0x3567f8});delete _0x1fd50c[_0x3567f8];}}}if(hasAdditionalPhones)_0x1fd50c[_0x8d1f('0x1c')]='';var _0x34df20=_[_0x8d1f('0x59')](_0x1fd50c)[_0x8d1f('0x15')]();logger[_0x8d1f('0x62')]('header',_0x34df20);fs[_0x8d1f('0x6e')](_0xa95fd,_0x34df20+'\x0a');Papa['parse'](fs[_0x8d1f('0x6f')](_0x4f41d5),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2bd30d,_0xc24cd2){try{for(var _0x456a66=0x0,_0x1091b7=[];_0x456a66<_0x2bd30d[_0x8d1f('0x70')]['length'];_0x456a66++){stats[_0x8d1f('0x71')]+=0x1;if(_0x2bd30d['errors'][_0x456a66]){handleError(_0x2bd30d[_0x8d1f('0x70')][_0x456a66],_0x2bd30d[_0x8d1f('0x72')][_0x456a66]);}else{var _0x1b8247=[];var _0x34404a=[];var _0x1fc9fa={};for(var _0xc1651b in _0x16f9f1){let _0x52d894=contactItemTypes[_0x8d1f('0x73')](_0xe0cb4b=>_0xe0cb4b[_0x8d1f('0x6c')]===_0xc1651b);let _0x5b04c2=contactItemTypes[_0x8d1f('0x73')](_0x257f09=>_0x257f09['name']+_0x8d1f('0x6d')===_0xc1651b);if(_[_0x8d1f('0x1b')](_0x52d894)&&_[_0x8d1f('0x1b')](_0x5b04c2)){if(_0x16f9f1['hasOwnProperty'](_0xc1651b)){if(_0x2bd30d[_0x8d1f('0x70')][_0x456a66][_0x16f9f1[_0xc1651b]]){var _0x416ef9=_['trim'](_0x2bd30d[_0x8d1f('0x70')][_0x456a66][_0x16f9f1[_0xc1651b]][_0x8d1f('0x74')](/"/g,'\x27'));switch(_0xc1651b){case _0x8d1f('0x32'):var _0x221e29=moment(_0x416ef9,_0x8d1f('0x75'),!![]);if(_0x221e29[_0x8d1f('0x76')]()){_0x1091b7['push']('\x22'+_0x416ef9+'\x22');}else{_0x1b8247['push'](_0x8d1f('0x77'));}break;case _0x8d1f('0x36'):var _0x39dae9=parseInt(_0x416ef9);_0x416ef9=_[_0x8d1f('0x78')](_0x39dae9)||_0x39dae9<0x0||_0x39dae9>0x4?_0x45c980?0x3:0x2:_0x39dae9;_0x1091b7[_0x8d1f('0x60')]('\x22'+_0x416ef9+'\x22');break;case _0x8d1f('0x37'):var _0x27f919=parseInt(_0x416ef9);if(_[_0x8d1f('0x79')](_0x27f919)&&_[_0x8d1f('0x7a')](_0x1d53cf,_0x27f919)){_0x1091b7[_0x8d1f('0x60')]('\x22'+_0x27f919+'\x22');}else{_0x1b8247[_0x8d1f('0x60')](_0x8d1f('0x7b'));}break;case _0x8d1f('0x7c'):if(isEmail(_0x416ef9)){_0x1091b7[_0x8d1f('0x60')]('\x22'+_0x416ef9+'\x22');}else{_0x1b8247['push']('email\x20wrong\x20format');}break;case _0x8d1f('0x7d'):var _0x4331e7=moment(_0x416ef9,_0x8d1f('0x7e'),!![]);if(_0x4331e7[_0x8d1f('0x76')]()){_0x1091b7[_0x8d1f('0x60')]('\x22'+_0x416ef9+'\x22');}else{_0x1b8247['push'](_0x8d1f('0x7f'));}break;default:_0x1091b7[_0x8d1f('0x60')]('\x22'+_0x416ef9+'\x22');}}else{switch(_0xc1651b){case'firstName':case'phone':_0x1b8247['push'](_0xc1651b+_0x8d1f('0x80'));break;default:_0x1091b7[_0x8d1f('0x60')]('\x22\x22');}}}}else{var _0x5ecc90='';if(!_[_0x8d1f('0x1b')](_0x52d894)){if(!_0x1fc9fa[_0x8d1f('0x81')](_0x52d894['id'])){for(var _0x3cc197=0x0;_0x3cc197<_0x16f9f1[_0xc1651b][_0x8d1f('0x1a')];_0x3cc197++){var _0x416ef9=_[_0x8d1f('0x82')](_0x2bd30d[_0x8d1f('0x70')][_0x456a66][_0x16f9f1[_0xc1651b][_0x3cc197]]['replace'](/"/g,'\x27'));var _0x168116=phoneDescriptions[_0x8d1f('0x73')](_0x1bcd8a=>_0x1bcd8a[_0x8d1f('0x83')]===_0x52d894['id']);if(!_[_0x8d1f('0x1b')](_0x168116)){var _0x15e41d=_[_0x8d1f('0x82')](_0x2bd30d['data'][_0x456a66][_0x16f9f1[_0x168116[_0x8d1f('0x84')]][0x0]][_0x8d1f('0x74')](/"/g,'\x27'));if(!_['isNil'](_0x15e41d))_0x416ef9=_0x416ef9+'§'+_0x15e41d;}if(_0x5ecc90=='')_0x5ecc90=_0x416ef9;else _0x5ecc90+='|'+_0x416ef9;}_0x34404a[_0x8d1f('0x60')](_0x52d894['id']+':'+_0x5ecc90);_0x1fc9fa[_0x52d894['id']]=0x1;}}}}if(hasAdditionalPhones){_0x1091b7[_0x8d1f('0x60')]('\x22'+_0x34404a[_0x8d1f('0x15')](';')+'\x22');}if(_0x1b8247['length']){handleError(_0x2bd30d[_0x8d1f('0x70')][_0x456a66],{'code':'SystemRow','message':_0x1b8247[_0x8d1f('0x15')]()});}else{fs['appendFileSync'](_0xa95fd,_0x1091b7[_0x8d1f('0x15')]()+'\x0a');}_0x1091b7=[];}if(!(stats[_0x8d1f('0x71')]%0xc8)){socket[_0x8d1f('0x85')](_0x8d1f('0x86')+_0x27a816,stats);stats[_0x8d1f('0x72')]=[];}}if(stopped){logger[_0x8d1f('0x62')]('Abort\x20parser');_0xc24cd2[_0x8d1f('0x87')]();}}catch(_0x12eb89){handleError(_0x2bd30d['data'][_0x456a66],{'code':_0x8d1f('0x88'),'message':_0x12eb89[_0x8d1f('0x21')]});logger['error']('step',_0x12eb89[_0x8d1f('0x21')]);}},'complete':function(){try{var _0x596708=[];var _0x588a9a=tempTableName;_0x596708[_0x8d1f('0x60')](_0x8d1f('0x89')+_0x588a9a+_0x8d1f('0x8a'));logger[_0x8d1f('0x62')](_0x8d1f('0x8b'),contactItemTypes[_0x8d1f('0x1a')]);var _0x4755c4=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',_0xa95fd,_0x588a9a,_0x34df20,_0x244b6f[_0x8d1f('0x34')],_0x244b6f[_0x8d1f('0x8c')]||null,NOW,NOW);if(_['isNil'](_0x16f9f1['scheduledat'])){_0x4755c4+=_0x8d1f('0x8d');}_0x596708[_0x8d1f('0x60')](_0x4755c4);BPromise[_0x8d1f('0x8e')](_0x596708,handleQuery)[_0x8d1f('0x1e')](function(_0x25b35e){BPromise[_0x8d1f('0x1d')]([handleAdditionalPhones()])[_0x8d1f('0x1e')](function(){_0x596708=[];for(var _0x41ff13=0x0;_0x41ff13<promisesContact[_0x8d1f('0x1a')];_0x41ff13++){_0x596708['push'](updateContact(promisesContact[_0x41ff13]['contact']));}BPromise['all'](_0x596708)['then'](function(){_0x596708=[];for(var _0x46b5f7=0x0;_0x46b5f7<promisesAdditionalPhones[_0x8d1f('0x1a')];_0x46b5f7++){_0x596708[_0x8d1f('0x60')](createAdditionalPhone(promisesAdditionalPhones[_0x46b5f7]['contactId'],promisesAdditionalPhones[_0x46b5f7][_0x8d1f('0x8f')],promisesAdditionalPhones[_0x46b5f7][_0x8d1f('0xf')],promisesAdditionalPhones[_0x46b5f7][_0x8d1f('0x90')]));}BPromise[_0x8d1f('0x1d')](_0x596708)['then'](function(){_0x596708=[];_0x596708[_0x8d1f('0x60')](insertCmHopperAdditionalPhones(_0x244b6f[_0x8d1f('0x34')]));_0x596708['push'](_0x8d1f('0x91')+_0x588a9a+';');BPromise[_0x8d1f('0x8e')](_0x596708,handleQuery)[_0x8d1f('0x1e')](function(_0x4c0a5d){stats[_0x8d1f('0x92')]=!![];stats[_0x8d1f('0x93')]=updatedRows;socket[_0x8d1f('0x85')](_0x8d1f('0x86')+_0x27a816,stats);fs['unlink'](_0x4f41d5);fs[_0x8d1f('0x94')](_0xa95fd);process[_0x8d1f('0x5f')](0x0);})[_0x8d1f('0x1f')](function(_0x1f04cc){logger[_0x8d1f('0x20')](_0x1f04cc['message']);process[_0x8d1f('0x5f')](0x1);});});});});})[_0x8d1f('0x1f')](function(_0x3672c5){logger[_0x8d1f('0x20')](_0x3672c5[_0x8d1f('0x21')]);process[_0x8d1f('0x5f')](0x1);});}catch(_0x4e80ac){logger['error'](_0x8d1f('0x95'),_0x4e80ac[_0x8d1f('0x21')]);process[_0x8d1f('0x5f')](0x1);}},'error':function(_0x564cf7,_0x3173b9,_0x4e30e2,_0x273ae3){throw new Error(_0x273ae3);}});});}function validate(){if(process[_0x8d1f('0x96')]&&process[_0x8d1f('0x96')][_0x8d1f('0x1a')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x372e67=path[_0x8d1f('0x15')](config['root'],'server/files/tmp',process[_0x8d1f('0x96')][0x2]);if(!fs[_0x8d1f('0x97')](_0x372e67)){throw new Error(_0x8d1f('0x98'));}var _0x4ce2c6={};try{_0x4ce2c6=JSON[_0x8d1f('0x99')](process[_0x8d1f('0x96')][0x3]);if(!_0x4ce2c6[_0x8d1f('0x66')]){throw new Error(_0x8d1f('0x9a'));}var _0x437343=0x0;if(_0x4ce2c6[_0x8d1f('0x66')][_0x8d1f('0x37')]){_0x437343=0x1;}if(!_0x4ce2c6[_0x8d1f('0x34')]){throw new Error(_0x8d1f('0x9b'));}}catch(_0x2beac2){throw new Error('body\x20id\x20mandatory');}var _0x4f0dfd=[];try{_0x4f0dfd=_[_0x8d1f('0x9c')](JSON['parse'](process[_0x8d1f('0x96')][0x4]),'id');}catch(_0x48c279){logger[_0x8d1f('0x62')](_0x8d1f('0x9d'));}main(_0x372e67,_0x4ce2c6,_0x4f0dfd,_0x437343);}validate();process['on'](_0x8d1f('0x9e'),handleStop);process['on'](_0x8d1f('0x9f'),handleUncaughtException);
\ No newline at end of file
index 66d3e0c..8d7d087 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ad=['push','calleridnum','outbound','variable','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','Hold\x20Time','Talk\x20Time','talktime','Member\x20Name','membername','UniqueId','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','duration','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','queue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd7ad,0x18e));var _0xdd7a=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0xd7ad[_0x20589d];return _0x422de9;};'use strict';exports[_0xdd7a('0x0')]=function(_0x47a138,_0x54eac5){var _0x1d25e8=[{'type':_0xdd7a('0x1'),'content':_0xdd7a('0x2'),'variableName':null}];switch(_0x47a138[_0xdd7a('0x3')]()){case _0xdd7a('0x4'):switch(_0x54eac5[_0xdd7a('0x3')]()){case _0xdd7a('0x5'):_0x1d25e8['push']({'type':'variable','content':'','variableName':_0xdd7a('0x6')});_0x1d25e8[_0xdd7a('0x7')]({'type':'variable','content':'','variableName':_0xdd7a('0x8')});break;case _0xdd7a('0x9'):_0x1d25e8[_0xdd7a('0x7')]({'type':'string','content':'Outbound\x20Call','variableName':null});_0x1d25e8[_0xdd7a('0x7')]({'type':_0xdd7a('0xa'),'content':'','variableName':_0xdd7a('0xb')});break;}}return _0x1d25e8;};exports[_0xdd7a('0xc')]=function(_0x5a95fc,_0x454a68){var _0x43c5e9=[];switch(_0x5a95fc['toLowerCase']()){case _0xdd7a('0x4'):switch(_0x454a68[_0xdd7a('0x3')]()){case _0xdd7a('0x5'):_0x43c5e9=[{'type':_0xdd7a('0x1'),'content':_0xdd7a('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0xf'),'keyType':'variable','variableName':'calleridnum'},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x10'),'keyType':_0xdd7a('0xa'),'variableName':_0xdd7a('0x11')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x12'),'keyType':_0xdd7a('0xa'),'variableName':_0xdd7a('0x13')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x14'),'keyType':'variable','variableName':'queue'},{'type':_0xdd7a('0xe'),'content':'','key':'UniqueId','keyType':'variable','variableName':_0xdd7a('0x15')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x16'),'keyType':'variable','variableName':_0xdd7a('0x17')},{'type':_0xdd7a('0x1'),'content':_0xdd7a('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x19'),'keyType':'variable','variableName':'destcalleridname'},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x1a'),'keyType':_0xdd7a('0xa'),'variableName':_0xdd7a('0xb')},{'type':_0xdd7a('0x1'),'content':_0xdd7a('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x1c'),'keyType':'variable','variableName':_0xdd7a('0x17')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x1d'),'keyType':_0xdd7a('0xa'),'variableName':_0xdd7a('0x1e')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x1f'),'keyType':'variable','variableName':'agentcompleteAt'},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x20'),'keyType':_0xdd7a('0xa'),'variableName':'holdtime'},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x21'),'keyType':'variable','variableName':_0xdd7a('0x22')}];break;case _0xdd7a('0x9'):_0x43c5e9=[{'type':_0xdd7a('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0xdd7a('0xe'),'content':'','key':'Called\x20Number','keyType':_0xdd7a('0xa'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x23'),'keyType':_0xdd7a('0xa'),'keyContent':'','variableName':_0xdd7a('0x24')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x25'),'keyType':'variable','keyContent':'','variableName':_0xdd7a('0x15')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x16'),'keyType':_0xdd7a('0xa'),'keyContent':'','variableName':_0xdd7a('0x26')},{'type':_0xdd7a('0x1'),'content':_0xdd7a('0x1b')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x27'),'keyType':_0xdd7a('0xa'),'keyContent':'','variableName':_0xdd7a('0x28')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x29'),'keyType':'variable','keyContent':'','variableName':_0xdd7a('0x2a')},{'type':_0xdd7a('0xe'),'content':'','key':_0xdd7a('0x2b'),'keyType':_0xdd7a('0xa'),'keyContent':'','variableName':_0xdd7a('0x2c')},{'type':_0xdd7a('0xe'),'content':'','key':'Billable\x20Time','keyType':_0xdd7a('0xa'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x43c5e9;};
\ No newline at end of file
+var _0x9b0d=['outbound','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','calleridname','destexten','Queue','UniqueId','uniqueid','Date','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Called\x20Number','Member\x20Name','membername','starttime','***\x20Time\x20Info\x20***','Complete\x20Time','Duration','Billable\x20Time','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x9b0d,0xe1));var _0xd9b0=function(_0x25d258,_0x3e5c37){_0x25d258=_0x25d258-0x0;var _0x141afd=_0x9b0d[_0x25d258];return _0x141afd;};'use strict';exports[_0xd9b0('0x0')]=function(_0x2877d9,_0x3f4eae){var _0x4fe399=[{'type':_0xd9b0('0x1'),'content':_0xd9b0('0x2'),'variableName':null}];switch(_0x2877d9[_0xd9b0('0x3')]()){case _0xd9b0('0x4'):switch(_0x3f4eae[_0xd9b0('0x3')]()){case _0xd9b0('0x5'):_0x4fe399[_0xd9b0('0x6')]({'type':_0xd9b0('0x7'),'content':'','variableName':_0xd9b0('0x8')});_0x4fe399[_0xd9b0('0x6')]({'type':'variable','content':'','variableName':'calleridnum'});break;case _0xd9b0('0x9'):_0x4fe399['push']({'type':_0xd9b0('0x1'),'content':'Outbound\x20Call','variableName':null});_0x4fe399[_0xd9b0('0x6')]({'type':_0xd9b0('0x7'),'content':'','variableName':_0xd9b0('0xa')});break;}}return _0x4fe399;};exports[_0xd9b0('0xb')]=function(_0x3779dc,_0x25f70f){var _0xfbbf20=[];switch(_0x3779dc[_0xd9b0('0x3')]()){case _0xd9b0('0x4'):switch(_0x25f70f['toLowerCase']()){case _0xd9b0('0x5'):_0xfbbf20=[{'type':_0xd9b0('0x1'),'content':_0xd9b0('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0xd9b0('0xd'),'content':'','key':'Caller\x20Number','keyType':_0xd9b0('0x7'),'variableName':'calleridnum'},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0xe'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0xf')},{'type':_0xd9b0('0xd'),'content':'','key':'Call\x20To','keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x10')},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x11'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x8')},{'type':'keyValue','content':'','key':_0xd9b0('0x12'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x13')},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x14'),'keyType':'variable','variableName':'agentcalledAt'},{'type':'string','content':_0xd9b0('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x16'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x17')},{'type':'keyValue','content':'','key':'Agent\x20Number','keyType':'variable','variableName':_0xd9b0('0xa')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x18'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x19')},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x1a'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x1b')},{'type':_0xd9b0('0xd'),'content':'','key':'Agent\x20Complete','keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x1c')},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x1d'),'keyType':_0xd9b0('0x7'),'variableName':_0xd9b0('0x1e')},{'type':_0xd9b0('0xd'),'content':'','key':'Talk\x20Time','keyType':_0xd9b0('0x7'),'variableName':'talktime'}];break;case _0xd9b0('0x9'):_0xfbbf20=[{'type':_0xd9b0('0x1'),'content':_0xd9b0('0xc'),'variableName':null},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x1f'),'keyType':_0xd9b0('0x7'),'keyContent':'','variableName':_0xd9b0('0xa')},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x20'),'keyType':_0xd9b0('0x7'),'keyContent':'','variableName':_0xd9b0('0x21')},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x12'),'keyType':'variable','keyContent':'','variableName':_0xd9b0('0x13')},{'type':'keyValue','content':'','key':_0xd9b0('0x14'),'keyType':_0xd9b0('0x7'),'keyContent':'','variableName':_0xd9b0('0x22')},{'type':_0xd9b0('0x1'),'content':_0xd9b0('0x23')},{'type':_0xd9b0('0xd'),'content':'','key':'Answer\x20Time','keyType':_0xd9b0('0x7'),'keyContent':'','variableName':'answertime'},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x24'),'keyType':_0xd9b0('0x7'),'keyContent':'','variableName':'endtime'},{'type':_0xd9b0('0xd'),'content':'','key':_0xd9b0('0x25'),'keyType':'variable','keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0xd9b0('0x26'),'keyType':'variable','keyContent':'','variableName':'billableseconds'}];break;}}return _0xfbbf20;};
\ No newline at end of file
index bb2482c..3743015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffea=['html','phone','fax','mobile','updateUser','lodash','./utils','findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','body','default','fields','filter','user','having','read','tags','group','i.id','countFilteredInteractions','count','length','clause','order','contactName','DESC','getClosedOrderClause','getFilteredInteractions','rows','catch','query','clone'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xffea,0x1f3));var _0xaffe=function(_0xda81ef,_0x913049){_0xda81ef=_0xda81ef-0x0;var _0x203b87=_0xffea[_0xda81ef];return _0x203b87;};'use strict';var _=require(_0xaffe('0x0'));var sqlUtils=require('./sql-utils');var utils=require(_0xaffe('0x1'));exports[_0xaffe('0x2')]=function(_0x438ad2,_0x53c322,_0x4436e6,_0x5a7aaa,_0x8c2df4){var _0x238799={'count':0x0,'rows':[]};var _0x16c074=sqlUtils[_0xaffe('0x3')](_0x438ad2,_0x4436e6,_0x53c322);if(_0x16c074){return Promise[_0xaffe('0x4')](_0x238799);}var _0x30e6ef=sqlUtils['getInteractionsQuery'](_0x438ad2);var _0x4ed1fa={};return Promise['resolve']()[_0xaffe('0x5')](function(){if(_0x53c322[_0xaffe('0x6')]){return sqlUtils[_0xaffe('0x7')](_0x53c322[_0xaffe('0x6')],_0x8c2df4);}else{return sqlUtils[_0xaffe('0x8')](_0x438ad2,_0x53c322,_0x8c2df4);}})[_0xaffe('0x5')](function(_0x202e50){_0x30e6ef[_0xaffe('0x9')](_0x202e50[_0xaffe('0xa')]);_0x30e6ef[_0xaffe('0x9')](_0x202e50['contact']);_0x30e6ef['where'](_0x202e50[_0xaffe('0xb')]);_0x30e6ef['where'](_0x202e50[_0xaffe('0xc')]);_0x30e6ef[_0xaffe('0x9')](_0x202e50[_0xaffe('0xd')]);_0x30e6ef[_0xaffe('0x9')](_0x202e50[_0xaffe('0xe')]);_0x30e6ef[_0xaffe('0xf')](_0x202e50[_0xaffe('0x10')]);_0x4ed1fa=_0x202e50[_0xaffe('0x11')];return sqlUtils['checkAccountsRestrictions'](_0x438ad2,_0x4436e6,_0x53c322);})[_0xaffe('0x5')](function(_0x1f75d5){_0x30e6ef[_0xaffe('0x9')](_0x1f75d5);_0x30e6ef[_0xaffe('0x12')](_0xaffe('0x13'));var _0x54f91c=_0x53c322[_0xaffe('0x6')]?_0x4ed1fa['ids']:_0x53c322['tag'];return sqlUtils[_0xaffe('0x14')](_0x30e6ef,_0x54f91c);})[_0xaffe('0x5')](function(_0x326730){_0x238799[_0xaffe('0x15')]=_0x326730[_0xaffe('0x16')];if(_0x238799[_0xaffe('0x15')]===0x0){return[];}_0x30e6ef[_0xaffe('0xf')](_0x4ed1fa[_0xaffe('0x17')]);if(_0x5a7aaa[_0xaffe('0x18')]){_0x5a7aaa[_0xaffe('0x18')]['forEach'](function(_0x35f472){var _0x10b330=_0x35f472[0x0]===_0xaffe('0x19')?_0x35f472[0x0]:'i.'+_0x35f472[0x0];_0x30e6ef[_0xaffe('0x18')](_0x10b330,_0x35f472[0x1]===_0xaffe('0x1a')?![]:!![]);if(_0x35f472[0x0]==='closed'){var _0x1dafd0=sqlUtils[_0xaffe('0x1b')](_0x438ad2,_0x53c322);_0x30e6ef[_0xaffe('0x18')](_0x1dafd0,_0x35f472[0x1]===_0xaffe('0x1a')?![]:!![]);}});}return sqlUtils[_0xaffe('0x1c')](_0x438ad2,_0x30e6ef,_0x53c322,_0x5a7aaa);})[_0xaffe('0x5')](function(_0x2f5316){_0x238799[_0xaffe('0x1d')]=_0x2f5316;return _0x238799;})[_0xaffe('0x1e')](function(_0x2d4550){throw _0x2d4550;});};exports['tracked']=function(_0xf41e99,_0x3faa31){return function(_0x3534f6,_0x2cb2f8,_0x6bd780){var _0x3309c2=_0x3534f6[_0xaffe('0xe')];var _0x161eec={};var _0x5e26fd=_0x3534f6[_0xaffe('0x1f')];if(_0x161eec){_0x161eec=_[_0xaffe('0x20')](_0x3534f6['body']);_0x161eec=_['omit'](_0x161eec,[_0xaffe('0xa'),_0xaffe('0x21'),_0xaffe('0x22'),_0xaffe('0x23'),_0xaffe('0x24')]);}utils[_0xaffe('0x25')](_0x3309c2,_0x161eec,_0x5e26fd,_0xf41e99,_0x3faa31);_0x6bd780(null);};};
\ No newline at end of file
+var _0xd794=['default','fields','filter','user','read','tags','tag','countFilteredInteractions','length','count','having','clause','order','forEach','DESC','closed','getClosedOrderClause','getFilteredInteractions','rows','catch','tracked','query','clone','omit','html','phone','fax','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','then','search','where','body'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xd794,0x1e4));var _0x4d79=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd794[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x4d79('0x0'));var sqlUtils=require(_0x4d79('0x1'));var utils=require(_0x4d79('0x2'));exports[_0x4d79('0x3')]=function(_0x52e66a,_0x4dca1a,_0x4496d9,_0x2478fc,_0x102b68){var _0x2b0c1e={'count':0x0,'rows':[]};var _0x2f65ef=sqlUtils[_0x4d79('0x4')](_0x52e66a,_0x4496d9,_0x4dca1a);if(_0x2f65ef){return Promise[_0x4d79('0x5')](_0x2b0c1e);}var _0x1fa176=sqlUtils['getInteractionsQuery'](_0x52e66a);var _0x5a8eff={};return Promise[_0x4d79('0x5')]()[_0x4d79('0x6')](function(){if(_0x4dca1a['search']){return sqlUtils['parseAdvancedSearchFilter'](_0x4dca1a[_0x4d79('0x7')],_0x102b68);}else{return sqlUtils['parseQueryParameters'](_0x52e66a,_0x4dca1a,_0x102b68);}})['then'](function(_0x44ce7c){_0x1fa176[_0x4d79('0x8')](_0x44ce7c[_0x4d79('0x9')]);_0x1fa176['where'](_0x44ce7c['contact']);_0x1fa176[_0x4d79('0x8')](_0x44ce7c[_0x4d79('0xa')]);_0x1fa176['where'](_0x44ce7c[_0x4d79('0xb')]);_0x1fa176['where'](_0x44ce7c[_0x4d79('0xc')]);_0x1fa176[_0x4d79('0x8')](_0x44ce7c[_0x4d79('0xd')]);_0x1fa176['having'](_0x44ce7c[_0x4d79('0xe')]);_0x5a8eff=_0x44ce7c[_0x4d79('0xf')];return sqlUtils['checkAccountsRestrictions'](_0x52e66a,_0x4496d9,_0x4dca1a);})[_0x4d79('0x6')](function(_0x4df9e1){_0x1fa176['where'](_0x4df9e1);_0x1fa176['group']('i.id');var _0x505053=_0x4dca1a[_0x4d79('0x7')]?_0x5a8eff['ids']:_0x4dca1a[_0x4d79('0x10')];return sqlUtils[_0x4d79('0x11')](_0x1fa176,_0x505053);})[_0x4d79('0x6')](function(_0x564ec7){_0x2b0c1e['count']=_0x564ec7[_0x4d79('0x12')];if(_0x2b0c1e[_0x4d79('0x13')]===0x0){return[];}_0x1fa176[_0x4d79('0x14')](_0x5a8eff[_0x4d79('0x15')]);if(_0x2478fc[_0x4d79('0x16')]){_0x2478fc[_0x4d79('0x16')][_0x4d79('0x17')](function(_0x4473cc){var _0x5d4e6b=_0x4473cc[0x0]==='contactName'?_0x4473cc[0x0]:'i.'+_0x4473cc[0x0];_0x1fa176[_0x4d79('0x16')](_0x5d4e6b,_0x4473cc[0x1]===_0x4d79('0x18')?![]:!![]);if(_0x4473cc[0x0]===_0x4d79('0x19')){var _0x37f99e=sqlUtils[_0x4d79('0x1a')](_0x52e66a,_0x4dca1a);_0x1fa176[_0x4d79('0x16')](_0x37f99e,_0x4473cc[0x1]===_0x4d79('0x18')?![]:!![]);}});}return sqlUtils[_0x4d79('0x1b')](_0x52e66a,_0x1fa176,_0x4dca1a,_0x2478fc);})['then'](function(_0x120199){_0x2b0c1e[_0x4d79('0x1c')]=_0x120199;return _0x2b0c1e;})[_0x4d79('0x1d')](function(_0x53da0a){throw _0x53da0a;});};exports[_0x4d79('0x1e')]=function(_0x1c96d8,_0x5dfd96){return function(_0x2ca59c,_0x3fefc4,_0x2e4ce2){var _0xafe7e0=_0x2ca59c[_0x4d79('0xd')];var _0x289e6d={};var _0x27d090=_0x2ca59c[_0x4d79('0x1f')];if(_0x289e6d){_0x289e6d=_[_0x4d79('0x20')](_0x2ca59c[_0x4d79('0x9')]);_0x289e6d=_[_0x4d79('0x21')](_0x289e6d,['body',_0x4d79('0x22'),_0x4d79('0x23'),_0x4d79('0x24'),'mobile']);}utils[_0x4d79('0x25')](_0xafe7e0,_0x289e6d,_0x27d090,_0x1c96d8,_0x5dfd96);_0x2e4ce2(null);};};
\ No newline at end of file
index 0821f61..2231555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4530=['i.to','i.ContactId','i.MailAccountId','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','Contact.phone','c.fax','Contact.fax','Owner.fullname','Owner.internal','TagIds','limit','offset','groupBy','findOne','enableEmailPreview','all','isEmpty','t.id\x20IN\x20?','Sequelize','exports','lodash','squel','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','select','field','name','color','from','_interactions','u.id','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','where','\x20IN\x20?','getInteractionsTables','getInteractionFK','interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','interactionsTags','it.','tools_tags','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','length','find','type','default','text','value','start','unreadMessages','read','and','operator','$substring','split','contact','ContactId','end','Tag','map','tags','clause','ids','User','user','UserId','buildExpression','body','plainBody','keys','some','compact','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','resolve','then','fields','tag','filter','get','capitalize','Websites','Accounts','i.disposition','unshift','closed','i.substatus','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','QueryTypes','SELECT','sequelize','query','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.email','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.id','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.thirdDisposition'];(function(_0x2a0e69,_0x48cb74){var _0x269fef=function(_0x3064f6){while(--_0x3064f6){_0x2a0e69['push'](_0x2a0e69['shift']());}};_0x269fef(++_0x48cb74);}(_0x4530,0xc0));var _0x0453=function(_0x26eeb7,_0x11054b){_0x26eeb7=_0x26eeb7-0x0;var _0x31090=_0x4530[_0x26eeb7];return _0x31090;};'use strict';var _=require(_0x0453('0x0'));var squel=require(_0x0453('0x1'));var as=require('../parsers/advancedSearch');var qs=require('../parsers/qs');var updateInteraction=require(_0x0453('0x2'))[_0x0453('0x3')];var utils=require(_0x0453('0x4'));var db=require(_0x0453('0x5'))['db'];function skipInteractionsQuery(_0x3bf499,_0x4b262a,_0x1fa6fe){var _0x589256=![];var _0xf94286=utils[_0x0453('0x6')](_0x3bf499);if(_0x4b262a[_0x0453('0x7')]===_0x0453('0x8')&&!_0x1fa6fe['search']&&!_0x1fa6fe[_0xf94286]){_0x589256=!![];}return _0x589256;}function getTagsQuery(){return squel[_0x0453('0x9')]()[_0x0453('0xa')]('id')['field'](_0x0453('0xb'))[_0x0453('0xa')](_0x0453('0xc'))[_0x0453('0xd')]('tools_tags');}function getUsersQuery(_0x3f3061,_0x13059c){var _0x54c468=utils['getInteractionFK'](_0x3f3061);var _0x252aa1='user_has_'+_0x3f3061+_0x0453('0xe');var _0x53973f=squel[_0x0453('0x9')]()[_0x0453('0xa')](_0x0453('0xf'))['field'](_0x0453('0x10'))[_0x0453('0xa')](_0x0453('0x11')+_0x54c468)[_0x0453('0xd')](_0x252aa1,'ui')[_0x0453('0x12')](_0x0453('0x13'),'u',_0x0453('0x14'));if(_0x13059c['length']>0x0){_0x53973f[_0x0453('0x15')](_0x0453('0x11')+_0x54c468+_0x0453('0x16'),_['map'](_0x13059c,'id'));}return _0x53973f;}function getInteractionsQuery(_0x46ffea){var _0x51a93e=utils[_0x0453('0x17')](_0x46ffea);var _0x5511a0=utils['getAccountFK'](_0x46ffea);var _0x1fac00=utils[_0x0453('0x18')](_0x46ffea);return squel[_0x0453('0x9')]()[_0x0453('0xd')](_0x51a93e[_0x0453('0x19')],'i')['left_join'](_0x0453('0x1a'),'c',_0x0453('0x1b'))[_0x0453('0x12')]('users','o','o.id\x20=\x20i.UserId')[_0x0453('0x12')](_0x51a93e['accounts'],'a',_0x0453('0x1c')+_0x5511a0)['left_join'](_0x51a93e[_0x0453('0x1d')],'me',_0x0453('0x1e')+_0x1fac00+_0x0453('0x1f'))['left_join'](_0x51a93e[_0x0453('0x20')],'it',_0x0453('0x21')+_0x1fac00+_0x0453('0x1f'))[_0x0453('0x12')](_0x0453('0x22'),'t',_0x0453('0x23'));}function getSqlClauses(){var _0x37ca60={'body':squel['expr'](),'contact':squel[_0x0453('0x24')](),'default':squel['expr'](),'fields':squel[_0x0453('0x24')](),'filter':squel['expr'](),'read':squel[_0x0453('0x24')](),'tags':{'clause':squel[_0x0453('0x24')](),'ids':null},'user':squel[_0x0453('0x24')]()};return _0x37ca60;}function parseTagParameter(_0x3065ae){var _0xf9ceed=squel[_0x0453('0x24')]();if(_0x3065ae){var _0x2a1c44=utils[_0x0453('0x25')](_0x3065ae);_0x2a1c44[_0x0453('0x26')](function(_0x13bd0a){_0xf9ceed['or'](_0x0453('0x27'),'%,'+_0x13bd0a+',%');});}return _0xf9ceed;}function parseReadParameter(_0x5b09be){var _0x31b1fe='';if(_0x5b09be){_0x31b1fe='unreadMessages\x20{OPERATOR}\x200';if(_0x5b09be==='1'){_0x31b1fe=_0x31b1fe[_0x0453('0x28')](_0x0453('0x29'),'=');}else{_0x31b1fe=_0x31b1fe[_0x0453('0x28')]('{OPERATOR}','>');}}return _0x31b1fe;}function parseSearchFilter(_0x44ac15,_0x3b2e0c){var _0xcfc2=squel[_0x0453('0x24')]();if(_0x3b2e0c){var _0x169490=_0x3b2e0c[_0x0453('0x28')]('\x5c','\x5c\x5c')[_0x0453('0x28')](/'/g,'\x27\x27');if(qs[_0x0453('0x2a')](_0x169490)){_0xcfc2['or'](_0x0453('0x2b'),_0x169490+'%');if([_0x0453('0x2c'),_0x0453('0x2d')][_0x0453('0x2e')](_0x44ac15)){_0xcfc2['or'](_0x0453('0x2f'),_0x169490+'%');}else if(_0x44ac15===_0x0453('0x30')){_0xcfc2['or'](_0x0453('0x31'),_0x169490+'%');}else if(_0x44ac15===_0x0453('0x32')){_0xcfc2['or'](_0x0453('0x33'),_0x169490+'%');}}else if(_0x44ac15===_0x0453('0x34')&&qs[_0x0453('0x35')](_0x169490)){_0xcfc2['or']('c.email\x20LIKE\x20?',_0x169490+'%');}else{if(_0x44ac15===_0x0453('0x34')){_0xcfc2['or'](_0x0453('0x36'),qs['getFullTextValue'](_0x169490,!![]))['or'](_0x0453('0x37'),qs['getFullTextValue'](_0x169490));}else if(_0x44ac15!==_0x0453('0x30')){_0xcfc2['or'](_0x0453('0x38'),qs[_0x0453('0x39')](_0x169490));}_0xcfc2['or'](_0x0453('0x3a'),qs[_0x0453('0x39')](_0x169490,!![]),null);}}return _0xcfc2;}function parseAdvancedSearchFilter(_0x325cfb,_0x48ccfb){var _0x44dd39=getSqlClauses();var _0x56a791=as[_0x0453('0x3b')](_0x325cfb);var _0x4e0d17=_0x56a791[_0x0453('0x3c')];for(var _0x20eecc=0x0;_0x20eecc<_0x56a791[_0x0453('0x3d')][_0x0453('0x3e')];_0x20eecc++){var _0x344be8=_0x56a791[_0x0453('0x3d')][_0x20eecc];var _0x1ae5ac='i';var _0x3ac9b3=_[_0x0453('0x3f')](_0x48ccfb,[_0x0453('0xb'),_0x344be8[_0x0453('0xa')]]);if(_0x3ac9b3){var _0x3b0e5a=as['buildExpression'](_0x1ae5ac,_0x3ac9b3[_0x0453('0x40')],_0x344be8);_0x44dd39[_0x0453('0x41')][_0x4e0d17](_0x3b0e5a[_0x0453('0x42')],_0x3b0e5a[_0x0453('0x43')][_0x0453('0x44')],_0x3b0e5a['value']['end']);}else{switch(_0x344be8['field']){case _0x0453('0x45'):var _0x266de2=parseReadParameter(_0x344be8[_0x0453('0x43')]);_0x44dd39[_0x0453('0x46')][_0x0453('0x47')](_0x266de2);break;case'Contact':if(_0x344be8[_0x0453('0x48')]===_0x0453('0x49')){if(_0x344be8['value'][_0x0453('0x4a')]('\x20')[_0x0453('0x3e')]>0x1){_0x44dd39[_0x0453('0x4b')][_0x4e0d17](_0x0453('0x3a'),qs['getFullTextValue'](_0x344be8[_0x0453('0x43')],!![]),null);}else{var _0x513a6b='%'+_0x344be8[_0x0453('0x43')]+'%';_0x44dd39[_0x0453('0x4b')][_0x4e0d17]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x513a6b,_0x513a6b,_0x513a6b);}}else{_0x3ac9b3=_[_0x0453('0x3f')](_0x48ccfb,['name',_0x0453('0x4c')]);_0x344be8['field']=_0x0453('0x4c');_0x3b0e5a=as['buildExpression'](_0x1ae5ac,_0x3ac9b3['type'],_0x344be8);_0x44dd39['contact'][_0x4e0d17](_0x3b0e5a[_0x0453('0x42')],_0x3b0e5a['value'][_0x0453('0x44')],_0x3b0e5a[_0x0453('0x43')][_0x0453('0x4d')]);}break;case _0x0453('0x4e'):var _0x32c7e8=_0x344be8[_0x0453('0x43')]['split'](',')[_0x0453('0x4f')](function(_0x25b869){return Number(_0x25b869);});var _0x5f334a=parseTagParameter(_0x32c7e8);_0x44dd39[_0x0453('0x50')][_0x0453('0x51')][_0x0453('0x47')](_0x5f334a);_0x44dd39['tags'][_0x0453('0x52')]=_0x32c7e8;break;case _0x0453('0x53'):if(_0x344be8[_0x0453('0x48')]===_0x0453('0x49')){_0x44dd39[_0x0453('0x54')][_0x4e0d17]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x344be8[_0x0453('0x43')]+'%',null);}else{_0x3ac9b3=_[_0x0453('0x3f')](_0x48ccfb,['name',_0x0453('0x55')]);_0x344be8[_0x0453('0xa')]='UserId';_0x3b0e5a=as[_0x0453('0x56')](_0x1ae5ac,_0x3ac9b3['type'],_0x344be8);_0x44dd39[_0x0453('0x54')][_0x4e0d17](_0x3b0e5a[_0x0453('0x42')],_0x3b0e5a[_0x0453('0x43')][_0x0453('0x44')],_0x3b0e5a[_0x0453('0x43')][_0x0453('0x4d')]);}break;case _0x0453('0x57'):case _0x0453('0x58'):_0x3b0e5a=as['buildExpression']('me',null,_0x344be8);_0x44dd39[_0x0453('0x57')][_0x4e0d17](_0x3b0e5a[_0x0453('0x42')],_0x3b0e5a[_0x0453('0x43')][_0x0453('0x44')],_0x3b0e5a['value'][_0x0453('0x4d')]);break;}}}return _0x44dd39;}function parseModelFields(_0x697ed,_0x1306cb,_0x4e0e4a){var _0x5cb0d2=utils[_0x0453('0x6')](_0x697ed);var _0x89c0c7=squel['expr']();var _0x3421e3=_(_0x1306cb)[_0x0453('0x59')]()[_0x0453('0x4f')](function(_0x3d7345){return _[_0x0453('0x5a')](_0x4e0e4a,[_0x0453('0xb'),_0x3d7345])?_0x3d7345:undefined;})[_0x0453('0x5b')]()[_0x0453('0x43')]();if(_0x3421e3['length']>0x0){_0x3421e3[_0x0453('0x26')](function(_0x2103c5){if(_0x2103c5===_0x5cb0d2){_0x89c0c7['and']('i.'+_0x5cb0d2+_0x0453('0x16'),[][_0x0453('0x5c')](_0x1306cb[_0x2103c5]));}else if(_0x2103c5===_0x0453('0x5d')){var _0x3b3b52=JSON[_0x0453('0x5e')](_0x1306cb[_0x2103c5])['$gte'];var _0x446f36=JSON[_0x0453('0x5e')](_0x1306cb[_0x2103c5])[_0x0453('0x5f')];_0x89c0c7[_0x0453('0x47')](_0x0453('0x60'),_0x3b3b52,_0x446f36);}else{if(_0x1306cb[_0x2103c5]===_0x0453('0x61')){_0x89c0c7[_0x0453('0x47')]('i.'+_0x2103c5+_0x0453('0x62'));}else{_0x89c0c7[_0x0453('0x47')]('i.'+_0x2103c5+_0x0453('0x63'),_0x1306cb[_0x2103c5]);}}});}return _0x89c0c7;}function parseQueryParameters(_0x56b96d,_0x529b0a,_0x3c8d5e){var _0x2e3990=getSqlClauses();return Promise[_0x0453('0x64')]()[_0x0453('0x65')](function(){return parseModelFields(_0x56b96d,_0x529b0a,_0x3c8d5e);})['then'](function(_0x43504d){_0x2e3990[_0x0453('0x66')][_0x0453('0x47')](_0x43504d);return parseReadParameter(_0x529b0a['read']);})['then'](function(_0x300ebf){_0x2e3990[_0x0453('0x46')][_0x0453('0x47')](_0x300ebf);return parseTagParameter(_0x529b0a[_0x0453('0x67')]);})[_0x0453('0x65')](function(_0x3c7c0b){_0x2e3990[_0x0453('0x50')][_0x0453('0x51')][_0x0453('0x47')](_0x3c7c0b);return parseSearchFilter(_0x56b96d,_0x529b0a['filter']);})[_0x0453('0x65')](function(_0x53ef56){_0x2e3990[_0x0453('0x68')]=_0x53ef56;return _0x2e3990;});}function checkAccountsRestrictions(_0x1ac1b1,_0x5e98cc,_0x2d00b0){var _0x103aec=utils[_0x0453('0x6')](_0x1ac1b1);var _0x295db1=_0x0453('0x69')+_[_0x0453('0x6a')](_0x1ac1b1)+(_0x1ac1b1==='chat'?_0x0453('0x6b'):_0x0453('0x6c'));var _0x48d478=squel[_0x0453('0x24')]();return Promise['resolve']()['then'](function(){if(_0x2d00b0['search']&&_0x5e98cc[_0x0453('0x7')]===_0x0453('0x8')){return _0x5e98cc[_0x295db1]({'attributes':['id'],'raw':!![]});}})[_0x0453('0x65')](function(_0xaed24e){if(_0xaed24e){if(_0xaed24e[_0x0453('0x3e')]===0x0){_0x48d478[_0x0453('0x47')]('i.'+_0x103aec+'\x20IS\x20NULL');}else{_0x48d478[_0x0453('0x47')]('i.'+_0x103aec+_0x0453('0x16'),_['map'](_0xaed24e,'id'));}}else if(!_0x2d00b0[_0x103aec]){_0x48d478[_0x0453('0x47')]('i.'+_0x103aec+'\x20IS\x20NOT\x20NULL');}})[_0x0453('0x65')](function(){return _0x48d478;});}function getClosedOrderClause(_0x4f6dd3,_0x190439){var _0x40639e='';var _0x5c9960=['i.thirdDisposition','i.secondDisposition',_0x0453('0x6d')];if(_0x4f6dd3==='mail'){_0x5c9960[_0x0453('0x6e')]('i.substatus');}if(_0x190439[_0x0453('0x6f')]==='0'&&_0x4f6dd3==='mail'){_0x40639e=_0x0453('0x70');}else{if(_0x190439[_0x0453('0x6f')]==='1'){_0x5c9960[_0x0453('0x71')]();}_0x40639e=_0x0453('0x72')+_0x5c9960[_0x0453('0x73')](',\x20')+')';}return _0x40639e;}function getFilteredInteractions(_0x357671,_0x2e29b9,_0x373676,_0x592390){var _0x314622=utils[_0x0453('0x18')](_0x357671);var _0x39737c=_[_0x0453('0x6a')](_0x357671)+_0x0453('0x74');var _0x13dbf1=[];var _0x3cf0c1=getTagsQuery();var _0x492b18={'type':db['Sequelize'][_0x0453('0x75')][_0x0453('0x76')],'raw':!![]};var _0x30f42a=[];var _0x19a0bd=[];return db[_0x0453('0x77')][_0x0453('0x78')](_0x3cf0c1[_0x0453('0x79')](),_0x492b18)['then'](function(_0x3dbb7c){_0x13dbf1=_[_0x0453('0x7a')](_0x3dbb7c,'id');_0x492b18=_[_0x0453('0x7b')](_0x492b18,{'model':db[_0x39737c],'mapToModel':!![],'nest':!![]});if(_0x373676[_0x0453('0x66')]){_0x592390[_0x0453('0x7c')][_0x0453('0x26')](function(_0x4b0f94){_0x2e29b9['field']('i.'+_0x4b0f94);});}else{_0x2e29b9[_0x0453('0xa')](_0x0453('0x7d'),_0x0453('0x45'));_0x2e29b9[_0x0453('0xa')]('a.key','Account.key');_0x2e29b9[_0x0453('0xa')]('a.mandatoryDisposition','Account.mandatoryDisposition');if(_0x357671===_0x0453('0x34')){_0x2e29b9[_0x0453('0xa')](_0x0453('0x7e'),_0x0453('0x7f'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x80'),_0x0453('0x81'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x82'));_0x2e29b9['field'](_0x0453('0x83'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x84'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x85'));_0x2e29b9[_0x0453('0xa')]('i.closedAt');_0x2e29b9['field'](_0x0453('0x86'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x87'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x88'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x89'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x6d'));_0x2e29b9['field'](_0x0453('0x8a'));_0x2e29b9['field'](_0x0453('0x8b'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x70'));_0x2e29b9['field'](_0x0453('0x8c'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x8d'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x8e'));_0x2e29b9[_0x0453('0xa')]('i.UserId');}else if(_0x357671===_0x0453('0x32')){_0x2e29b9[_0x0453('0xa')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');}else{_0x2e29b9[_0x0453('0xa')](_0x0453('0x8f'),_0x0453('0x81'));}if(_0x357671!==_0x0453('0x34')){_0x2e29b9[_0x0453('0xa')](_0x0453('0x90'));}_0x2e29b9[_0x0453('0xa')](_0x0453('0x91'),_0x0453('0x92'));_0x2e29b9[_0x0453('0xa')](_0x0453('0x93'),_0x0453('0x94'));_0x2e29b9['field']('c.email',_0x0453('0x95'));_0x2e29b9[_0x0453('0xa')]('c.phone',_0x0453('0x96'));_0x2e29b9['field']('c.mobile','Contact.mobile');_0x2e29b9['field'](_0x0453('0x97'),_0x0453('0x98'));_0x2e29b9[_0x0453('0xa')]('o.fullname',_0x0453('0x99'));_0x2e29b9[_0x0453('0xa')]('o.internal',_0x0453('0x9a'));_0x2e29b9[_0x0453('0xa')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x0453('0x9b'));}if(_0x592390[_0x0453('0x9c')]){_0x2e29b9[_0x0453('0x9c')](_0x592390[_0x0453('0x9c')]);}if(_0x592390[_0x0453('0x9d')]){_0x2e29b9[_0x0453('0x9d')](_0x592390[_0x0453('0x9d')]);}return db[_0x0453('0x77')][_0x0453('0x78')](_0x2e29b9[_0x0453('0x79')](),_0x492b18);})['then'](function(_0x25626d){_0x30f42a=_0x25626d;var _0x20964b=getUsersQuery(_0x357671,_0x30f42a);return db['sequelize'][_0x0453('0x78')](_0x20964b[_0x0453('0x79')](),_0x492b18);})['then'](function(_0x175f02){_0x19a0bd=_[_0x0453('0x9e')](_0x175f02,_0x314622);if(_0x357671==='mail'){return db['Setting'][_0x0453('0x9f')]({'attributes':[_0x0453('0xa0')],'raw':!![]});}})[_0x0453('0x65')](function(_0x17d763){var _0x4e848d=_0x17d763?_0x17d763[_0x0453('0xa0')]:undefined;var _0x5689c9=_0x30f42a[_0x0453('0x4f')](function(_0x2336d3){return updateInteraction(_0x2336d3,_0x13dbf1,_0x19a0bd,_0x4e848d);});return Promise[_0x0453('0xa1')](_0x5689c9);});}function countFilteredInteractions(_0x281e3c,_0x40b461){var _0x15bc92=_0x281e3c['clone']();_0x15bc92[_0x0453('0xa')]('COUNT(*)');_0x15bc92[_0x0453('0xa')](_0x0453('0x7d'),'unreadMessages');var _0x1ef334=utils['getSelectedTags'](_0x40b461);if(!_[_0x0453('0xa2')](_0x1ef334)){_0x15bc92[_0x0453('0x15')](_0x0453('0xa3'),_0x1ef334);}var _0x36113d={'type':db[_0x0453('0xa4')][_0x0453('0x75')][_0x0453('0x76')],'raw':!![]};return db[_0x0453('0x77')][_0x0453('0x78')](_0x15bc92['toString'](),_0x36113d);}module[_0x0453('0xa5')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0xf3fa=['attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','contactName','i.id','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.to','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','sequelize','Setting','findOne','enableEmailPreview','clone','t.id\x20IN\x20?','SELECT','lodash','../parsers/advancedSearch','../parsers/qs','updateInteraction','../../mysqldb','getAccountFK','role','agent','search','field','name','color','from','tools_tags','_interactions','u.id','u.fullname','ui.','left_join','users','length','where','\x20IN\x20?','map','getInteractionFK','select','cm_contacts','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','interactionsTags','it.','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','sms','whatsapp','includes','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','find','buildExpression','type','default','text','value','end','unreadMessages','read','and','Contact','operator','$substring','split','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','start','Tag','tags','clause','ids','User','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','plainBody','keys','some','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','resolve','then','tag','get','capitalize','chat','Websites','Accounts','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','QueryTypes','query','toString','keyBy','merge','fields'];(function(_0x4caed8,_0x32b66d){var _0x502eb8=function(_0x2e83f6){while(--_0x2e83f6){_0x4caed8['push'](_0x4caed8['shift']());}};_0x502eb8(++_0x32b66d);}(_0xf3fa,0x177));var _0xaf3f=function(_0x1bb121,_0x5d4138){_0x1bb121=_0x1bb121-0x0;var _0x5dbb01=_0xf3fa[_0x1bb121];return _0x5dbb01;};'use strict';var _=require(_0xaf3f('0x0'));var squel=require('squel');var as=require(_0xaf3f('0x1'));var qs=require(_0xaf3f('0x2'));var updateInteraction=require('./update-interaction')[_0xaf3f('0x3')];var utils=require('./utils');var db=require(_0xaf3f('0x4'))['db'];function skipInteractionsQuery(_0x223c8a,_0x108cd3,_0x5b0a48){var _0x35206a=![];var _0x28283b=utils[_0xaf3f('0x5')](_0x223c8a);if(_0x108cd3[_0xaf3f('0x6')]===_0xaf3f('0x7')&&!_0x5b0a48[_0xaf3f('0x8')]&&!_0x5b0a48[_0x28283b]){_0x35206a=!![];}return _0x35206a;}function getTagsQuery(){return squel['select']()[_0xaf3f('0x9')]('id')[_0xaf3f('0x9')](_0xaf3f('0xa'))[_0xaf3f('0x9')](_0xaf3f('0xb'))[_0xaf3f('0xc')](_0xaf3f('0xd'));}function getUsersQuery(_0x280beb,_0x234154){var _0x537fbb=utils['getInteractionFK'](_0x280beb);var _0x290787='user_has_'+_0x280beb+_0xaf3f('0xe');var _0x2a32a0=squel['select']()[_0xaf3f('0x9')](_0xaf3f('0xf'))['field'](_0xaf3f('0x10'))[_0xaf3f('0x9')](_0xaf3f('0x11')+_0x537fbb)['from'](_0x290787,'ui')[_0xaf3f('0x12')](_0xaf3f('0x13'),'u','u.id\x20=\x20ui.UserId');if(_0x234154[_0xaf3f('0x14')]>0x0){_0x2a32a0[_0xaf3f('0x15')]('ui.'+_0x537fbb+_0xaf3f('0x16'),_[_0xaf3f('0x17')](_0x234154,'id'));}return _0x2a32a0;}function getInteractionsQuery(_0x3f4650){var _0xe7c252=utils['getInteractionsTables'](_0x3f4650);var _0x5425ce=utils[_0xaf3f('0x5')](_0x3f4650);var _0x6a80c0=utils[_0xaf3f('0x18')](_0x3f4650);return squel[_0xaf3f('0x19')]()[_0xaf3f('0xc')](_0xe7c252['interactions'],'i')[_0xaf3f('0x12')](_0xaf3f('0x1a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xaf3f('0x12')](_0xaf3f('0x13'),'o',_0xaf3f('0x1b'))['left_join'](_0xe7c252[_0xaf3f('0x1c')],'a',_0xaf3f('0x1d')+_0x5425ce)[_0xaf3f('0x12')](_0xe7c252[_0xaf3f('0x1e')],'me',_0xaf3f('0x1f')+_0x6a80c0+_0xaf3f('0x20'))['left_join'](_0xe7c252[_0xaf3f('0x21')],'it',_0xaf3f('0x22')+_0x6a80c0+_0xaf3f('0x20'))[_0xaf3f('0x12')](_0xaf3f('0xd'),'t',_0xaf3f('0x23'));}function getSqlClauses(){var _0xc7f9f5={'body':squel['expr'](),'contact':squel[_0xaf3f('0x24')](),'default':squel[_0xaf3f('0x24')](),'fields':squel[_0xaf3f('0x24')](),'filter':squel[_0xaf3f('0x24')](),'read':squel[_0xaf3f('0x24')](),'tags':{'clause':squel[_0xaf3f('0x24')](),'ids':null},'user':squel[_0xaf3f('0x24')]()};return _0xc7f9f5;}function parseTagParameter(_0x3e78fe){var _0x1151e4=squel[_0xaf3f('0x24')]();if(_0x3e78fe){var _0x42393a=utils[_0xaf3f('0x25')](_0x3e78fe);_0x42393a[_0xaf3f('0x26')](function(_0x319a1e){_0x1151e4['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x319a1e+',%');});}return _0x1151e4;}function parseReadParameter(_0x158fd7){var _0x1ce058='';if(_0x158fd7){_0x1ce058=_0xaf3f('0x27');if(_0x158fd7==='1'){_0x1ce058=_0x1ce058[_0xaf3f('0x28')](_0xaf3f('0x29'),'=');}else{_0x1ce058=_0x1ce058['replace'](_0xaf3f('0x29'),'>');}}return _0x1ce058;}function parseSearchFilter(_0x417eae,_0x416d7a){var _0x4f236b=squel['expr']();if(_0x416d7a){var _0x1b19f5=_0x416d7a['replace']('\x5c','\x5c\x5c')[_0xaf3f('0x28')](/'/g,'\x27\x27');if(qs[_0xaf3f('0x2a')](_0x1b19f5)){_0x4f236b['or']('i.id\x20LIKE\x20?',_0x1b19f5+'%');if([_0xaf3f('0x2b'),_0xaf3f('0x2c')][_0xaf3f('0x2d')](_0x417eae)){_0x4f236b['or']('i.phone\x20LIKE\x20?',_0x1b19f5+'%');}else if(_0x417eae===_0xaf3f('0x2e')){_0x4f236b['or'](_0xaf3f('0x2f'),_0x1b19f5+'%');}else if(_0x417eae===_0xaf3f('0x30')){_0x4f236b['or'](_0xaf3f('0x31'),_0x1b19f5+'%');}}else if(_0x417eae===_0xaf3f('0x32')&&qs[_0xaf3f('0x33')](_0x1b19f5)){_0x4f236b['or'](_0xaf3f('0x34'),_0x1b19f5+'%');}else{if(_0x417eae==='mail'){_0x4f236b['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xaf3f('0x35')](_0x1b19f5,!![]))['or'](_0xaf3f('0x36'),qs['getFullTextValue'](_0x1b19f5));}else if(_0x417eae!=='fax'){_0x4f236b['or'](_0xaf3f('0x37'),qs[_0xaf3f('0x35')](_0x1b19f5));}_0x4f236b['or'](_0xaf3f('0x38'),qs['getFullTextValue'](_0x1b19f5,!![]),null);}}return _0x4f236b;}function parseAdvancedSearchFilter(_0x11f111,_0x5b5eb2){var _0x3c9d42=getSqlClauses();var _0x102b5a=as[_0xaf3f('0x39')](_0x11f111);var _0x562720=_0x102b5a[_0xaf3f('0x3a')];for(var _0xac0af2=0x0;_0xac0af2<_0x102b5a['conditions'][_0xaf3f('0x14')];_0xac0af2++){var _0x56a25b=_0x102b5a[_0xaf3f('0x3b')][_0xac0af2];var _0x2a2850='i';var _0x4a5073=_[_0xaf3f('0x3c')](_0x5b5eb2,[_0xaf3f('0xa'),_0x56a25b[_0xaf3f('0x9')]]);if(_0x4a5073){var _0x1ef6b7=as[_0xaf3f('0x3d')](_0x2a2850,_0x4a5073[_0xaf3f('0x3e')],_0x56a25b);_0x3c9d42[_0xaf3f('0x3f')][_0x562720](_0x1ef6b7[_0xaf3f('0x40')],_0x1ef6b7['value']['start'],_0x1ef6b7[_0xaf3f('0x41')][_0xaf3f('0x42')]);}else{switch(_0x56a25b['field']){case _0xaf3f('0x43'):var _0x1c31c4=parseReadParameter(_0x56a25b[_0xaf3f('0x41')]);_0x3c9d42[_0xaf3f('0x44')][_0xaf3f('0x45')](_0x1c31c4);break;case _0xaf3f('0x46'):if(_0x56a25b[_0xaf3f('0x47')]===_0xaf3f('0x48')){if(_0x56a25b[_0xaf3f('0x41')][_0xaf3f('0x49')]('\x20')[_0xaf3f('0x14')]>0x1){_0x3c9d42['contact'][_0x562720](_0xaf3f('0x38'),qs[_0xaf3f('0x35')](_0x56a25b[_0xaf3f('0x41')],!![]),null);}else{var _0x48edbc='%'+_0x56a25b['value']+'%';_0x3c9d42[_0xaf3f('0x4a')][_0x562720](_0xaf3f('0x4b'),_0x48edbc,_0x48edbc,_0x48edbc);}}else{_0x4a5073=_[_0xaf3f('0x3c')](_0x5b5eb2,['name',_0xaf3f('0x4c')]);_0x56a25b[_0xaf3f('0x9')]=_0xaf3f('0x4c');_0x1ef6b7=as[_0xaf3f('0x3d')](_0x2a2850,_0x4a5073[_0xaf3f('0x3e')],_0x56a25b);_0x3c9d42[_0xaf3f('0x4a')][_0x562720](_0x1ef6b7[_0xaf3f('0x40')],_0x1ef6b7[_0xaf3f('0x41')][_0xaf3f('0x4d')],_0x1ef6b7[_0xaf3f('0x41')][_0xaf3f('0x42')]);}break;case _0xaf3f('0x4e'):var _0x46d782=_0x56a25b[_0xaf3f('0x41')][_0xaf3f('0x49')](',')[_0xaf3f('0x17')](function(_0xc0e00d){return Number(_0xc0e00d);});var _0x16a2b5=parseTagParameter(_0x46d782);_0x3c9d42[_0xaf3f('0x4f')][_0xaf3f('0x50')][_0xaf3f('0x45')](_0x16a2b5);_0x3c9d42[_0xaf3f('0x4f')][_0xaf3f('0x51')]=_0x46d782;break;case _0xaf3f('0x52'):if(_0x56a25b['operator']===_0xaf3f('0x48')){_0x3c9d42[_0xaf3f('0x53')][_0x562720](_0xaf3f('0x54'),'%'+_0x56a25b[_0xaf3f('0x41')]+'%',null);}else{_0x4a5073=_['find'](_0x5b5eb2,[_0xaf3f('0xa'),_0xaf3f('0x55')]);_0x56a25b['field']=_0xaf3f('0x55');_0x1ef6b7=as['buildExpression'](_0x2a2850,_0x4a5073[_0xaf3f('0x3e')],_0x56a25b);_0x3c9d42[_0xaf3f('0x53')][_0x562720](_0x1ef6b7[_0xaf3f('0x40')],_0x1ef6b7[_0xaf3f('0x41')][_0xaf3f('0x4d')],_0x1ef6b7[_0xaf3f('0x41')]['end']);}break;case _0xaf3f('0x56'):case _0xaf3f('0x57'):_0x1ef6b7=as[_0xaf3f('0x3d')]('me',null,_0x56a25b);_0x3c9d42['body'][_0x562720](_0x1ef6b7[_0xaf3f('0x40')],_0x1ef6b7[_0xaf3f('0x41')][_0xaf3f('0x4d')],_0x1ef6b7['value'][_0xaf3f('0x42')]);break;}}}return _0x3c9d42;}function parseModelFields(_0x539ae2,_0x371f6e,_0x42a619){var _0x1518a0=utils[_0xaf3f('0x5')](_0x539ae2);var _0x5589c2=squel['expr']();var _0x365846=_(_0x371f6e)[_0xaf3f('0x58')]()[_0xaf3f('0x17')](function(_0x3cb3ea){return _[_0xaf3f('0x59')](_0x42a619,[_0xaf3f('0xa'),_0x3cb3ea])?_0x3cb3ea:undefined;})['compact']()[_0xaf3f('0x41')]();if(_0x365846[_0xaf3f('0x14')]>0x0){_0x365846[_0xaf3f('0x26')](function(_0x1728cb){if(_0x1728cb===_0x1518a0){_0x5589c2[_0xaf3f('0x45')]('i.'+_0x1518a0+_0xaf3f('0x16'),[][_0xaf3f('0x5a')](_0x371f6e[_0x1728cb]));}else if(_0x1728cb===_0xaf3f('0x5b')){var _0x2e4fb8=JSON[_0xaf3f('0x5c')](_0x371f6e[_0x1728cb])[_0xaf3f('0x5d')];var _0x3c4616=JSON[_0xaf3f('0x5c')](_0x371f6e[_0x1728cb])[_0xaf3f('0x5e')];_0x5589c2[_0xaf3f('0x45')](_0xaf3f('0x5f'),_0x2e4fb8,_0x3c4616);}else{if(_0x371f6e[_0x1728cb]===_0xaf3f('0x60')){_0x5589c2[_0xaf3f('0x45')]('i.'+_0x1728cb+_0xaf3f('0x61'));}else{_0x5589c2[_0xaf3f('0x45')]('i.'+_0x1728cb+'\x20=\x20?',_0x371f6e[_0x1728cb]);}}});}return _0x5589c2;}function parseQueryParameters(_0x3893bb,_0xf05cc6,_0x21d7d8){var _0x1e2d5f=getSqlClauses();return Promise[_0xaf3f('0x62')]()[_0xaf3f('0x63')](function(){return parseModelFields(_0x3893bb,_0xf05cc6,_0x21d7d8);})[_0xaf3f('0x63')](function(_0x1c59b9){_0x1e2d5f['fields'][_0xaf3f('0x45')](_0x1c59b9);return parseReadParameter(_0xf05cc6[_0xaf3f('0x44')]);})[_0xaf3f('0x63')](function(_0x34fb89){_0x1e2d5f['read'][_0xaf3f('0x45')](_0x34fb89);return parseTagParameter(_0xf05cc6[_0xaf3f('0x64')]);})['then'](function(_0x1a20b6){_0x1e2d5f['tags'][_0xaf3f('0x50')]['and'](_0x1a20b6);return parseSearchFilter(_0x3893bb,_0xf05cc6['filter']);})[_0xaf3f('0x63')](function(_0x376c1c){_0x1e2d5f['filter']=_0x376c1c;return _0x1e2d5f;});}function checkAccountsRestrictions(_0x46b501,_0x296df0,_0x5f45f4){var _0x212112=utils[_0xaf3f('0x5')](_0x46b501);var _0x5a32f5=_0xaf3f('0x65')+_[_0xaf3f('0x66')](_0x46b501)+(_0x46b501===_0xaf3f('0x67')?_0xaf3f('0x68'):_0xaf3f('0x69'));var _0x117257=squel[_0xaf3f('0x24')]();return Promise[_0xaf3f('0x62')]()[_0xaf3f('0x63')](function(){if(_0x5f45f4['search']&&_0x296df0[_0xaf3f('0x6')]===_0xaf3f('0x7')){return _0x296df0[_0x5a32f5]({'attributes':['id'],'raw':!![]});}})[_0xaf3f('0x63')](function(_0x24e31a){if(_0x24e31a){if(_0x24e31a[_0xaf3f('0x14')]===0x0){_0x117257['and']('i.'+_0x212112+'\x20IS\x20NULL');}else{_0x117257['and']('i.'+_0x212112+_0xaf3f('0x16'),_[_0xaf3f('0x17')](_0x24e31a,'id'));}}else if(!_0x5f45f4[_0x212112]){_0x117257[_0xaf3f('0x45')]('i.'+_0x212112+'\x20IS\x20NOT\x20NULL');}})['then'](function(){return _0x117257;});}function getClosedOrderClause(_0x3d5d7a,_0x1656ca){var _0x2b22d5='';var _0x201c64=[_0xaf3f('0x6a'),_0xaf3f('0x6b'),_0xaf3f('0x6c')];if(_0x3d5d7a===_0xaf3f('0x32')){_0x201c64[_0xaf3f('0x6d')](_0xaf3f('0x6e'));}if(_0x1656ca[_0xaf3f('0x6f')]==='0'&&_0x3d5d7a===_0xaf3f('0x32')){_0x2b22d5=_0xaf3f('0x6e');}else{if(_0x1656ca['closed']==='1'){_0x201c64[_0xaf3f('0x70')]();}_0x2b22d5=_0xaf3f('0x71')+_0x201c64[_0xaf3f('0x72')](',\x20')+')';}return _0x2b22d5;}function getFilteredInteractions(_0x18c2c4,_0x55ecf0,_0x484413,_0x57b9d1){var _0x3db310=utils[_0xaf3f('0x18')](_0x18c2c4);var _0x5c27=_[_0xaf3f('0x66')](_0x18c2c4)+_0xaf3f('0x73');var _0x2268f9=[];var _0x3faa52=getTagsQuery();var _0x314d60={'type':db[_0xaf3f('0x74')][_0xaf3f('0x75')]['SELECT'],'raw':!![]};var _0xf3f77d=[];var _0x5dddfa=[];return db['sequelize'][_0xaf3f('0x76')](_0x3faa52[_0xaf3f('0x77')](),_0x314d60)[_0xaf3f('0x63')](function(_0x35217a){_0x2268f9=_[_0xaf3f('0x78')](_0x35217a,'id');_0x314d60=_[_0xaf3f('0x79')](_0x314d60,{'model':db[_0x5c27],'mapToModel':!![],'nest':!![]});if(_0x484413[_0xaf3f('0x7a')]){_0x57b9d1[_0xaf3f('0x7b')]['forEach'](function(_0x1a05b5){_0x55ecf0[_0xaf3f('0x9')]('i.'+_0x1a05b5);});}else{_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x7c'),_0xaf3f('0x43'));_0x55ecf0[_0xaf3f('0x9')]('a.key',_0xaf3f('0x7d'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x7e'),_0xaf3f('0x7f'));if(_0x18c2c4==='mail'){_0x55ecf0['field'](_0xaf3f('0x80'),'Account.email');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x81'),_0xaf3f('0x82'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x83'));_0x55ecf0[_0xaf3f('0x9')]('i.createdAt');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x84'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x85'));_0x55ecf0['field'](_0xaf3f('0x86'));_0x55ecf0['field'](_0xaf3f('0x87'));_0x55ecf0[_0xaf3f('0x9')]('i.lastMsgAt');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x88'));_0x55ecf0['field']('i.subject');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x6c'));_0x55ecf0['field'](_0xaf3f('0x6b'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x6a'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x6e'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x89'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x8a'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x8b'));_0x55ecf0['field'](_0xaf3f('0x8c'));}else if(_0x18c2c4===_0xaf3f('0x30')){_0x55ecf0[_0xaf3f('0x9')]('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',_0xaf3f('0x82'));}else{_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x8d'),'contactName');}if(_0x18c2c4!==_0xaf3f('0x32')){_0x55ecf0['field'](_0xaf3f('0x8e'));}_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x8f'),'Contact.firstName');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x90'),_0xaf3f('0x91'));_0x55ecf0[_0xaf3f('0x9')]('c.email',_0xaf3f('0x92'));_0x55ecf0['field'](_0xaf3f('0x93'),_0xaf3f('0x94'));_0x55ecf0['field'](_0xaf3f('0x95'),'Contact.mobile');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x96'),_0xaf3f('0x97'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x98'),'Owner.fullname');_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x99'),_0xaf3f('0x9a'));_0x55ecf0[_0xaf3f('0x9')](_0xaf3f('0x9b'),_0xaf3f('0x9c'));}if(_0x57b9d1['limit']){_0x55ecf0[_0xaf3f('0x9d')](_0x57b9d1['limit']);}if(_0x57b9d1[_0xaf3f('0x9e')]){_0x55ecf0[_0xaf3f('0x9e')](_0x57b9d1[_0xaf3f('0x9e')]);}return db['sequelize'][_0xaf3f('0x76')](_0x55ecf0['toString'](),_0x314d60);})['then'](function(_0x5e4ab7){_0xf3f77d=_0x5e4ab7;var _0x1a6cb8=getUsersQuery(_0x18c2c4,_0xf3f77d);return db[_0xaf3f('0x9f')][_0xaf3f('0x76')](_0x1a6cb8[_0xaf3f('0x77')](),_0x314d60);})[_0xaf3f('0x63')](function(_0x40219a){_0x5dddfa=_['groupBy'](_0x40219a,_0x3db310);if(_0x18c2c4==='mail'){return db[_0xaf3f('0xa0')][_0xaf3f('0xa1')]({'attributes':[_0xaf3f('0xa2')],'raw':!![]});}})[_0xaf3f('0x63')](function(_0x36dca2){var _0x4fcf3d=_0x36dca2?_0x36dca2[_0xaf3f('0xa2')]:undefined;var _0x33a18c=_0xf3f77d[_0xaf3f('0x17')](function(_0x4a8e7f){return updateInteraction(_0x4a8e7f,_0x2268f9,_0x5dddfa,_0x4fcf3d);});return Promise['all'](_0x33a18c);});}function countFilteredInteractions(_0x5f71f9,_0x5b973d){var _0x3c8312=_0x5f71f9[_0xaf3f('0xa3')]();_0x3c8312[_0xaf3f('0x9')]('COUNT(*)');_0x3c8312[_0xaf3f('0x9')](_0xaf3f('0x7c'),_0xaf3f('0x43'));var _0xc4f3c5=utils[_0xaf3f('0x25')](_0x5b973d);if(!_['isEmpty'](_0xc4f3c5)){_0x3c8312[_0xaf3f('0x15')](_0xaf3f('0xa4'),_0xc4f3c5);}var _0x295f9a={'type':db[_0xaf3f('0x74')]['QueryTypes'][_0xaf3f('0xa5')],'raw':!![]};return db['sequelize'][_0xaf3f('0x76')](_0x3c8312['toString'](),_0x295f9a);}module['exports']={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 0ea428a..30513cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa722=['Users','TagIds','Tags','map','fullname','split','push','waiting','talking','answered','abandoned','total','closed','disposition','UserId','unmanaged','MailMessage','findOne','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction'];(function(_0x25edbd,_0x1e6d6e){var _0x2dd2df=function(_0x1c9baf){while(--_0x1c9baf){_0x25edbd['push'](_0x25edbd['shift']());}};_0x2dd2df(++_0x1e6d6e);}(_0xa722,0x67));var _0x2a72=function(_0x37f364,_0x56f6ae){_0x37f364=_0x37f364-0x0;var _0x1a97dd=_0xa722[_0x37f364];return _0x1a97dd;};'use strict';var _=require('lodash');var db=require('../../mysqldb')['db'];function getInteractionUsers(_0xd8b01,_0x390e3e){return new Promise(function(_0x55f84f,_0x897dca){try{var _0x1b891a=[];if(_0x390e3e[_0xd8b01]){_0x1b891a=_0x390e3e[_0xd8b01][_0x2a72('0x0')](function(_0x1fffd9){return{'id':_0x1fffd9['id'],'fullname':_0x1fffd9[_0x2a72('0x1')]};});}return _0x55f84f(_0x1b891a);}catch(_0x430274){_0x897dca(_0x430274);}});}function getInteractionTags(_0x431416,_0x255ddb){var _0x40d6ad=[];if(_0x431416){_0x431416[_0x2a72('0x2')](',')['forEach'](function(_0x1e80b9){_0x40d6ad[_0x2a72('0x3')](_0x255ddb[_0x1e80b9]);});}return _0x40d6ad;}function updateWaitingCounter(_0x26d643){if(_0x26d643[_0x2a72('0x4')]){_0x26d643[_0x2a72('0x4')]-=0x1;}}function updateInteractionCounters(_0x55d658){_0x55d658[_0x2a72('0x4')]=0x0;_0x55d658[_0x2a72('0x5')]=0x0;_0x55d658[_0x2a72('0x6')]=0x0;_0x55d658['unmanaged']=0x0;_0x55d658[_0x2a72('0x7')]=0x0;_0x55d658[_0x2a72('0x8')]=0x0;if(_0x55d658[_0x2a72('0x9')]){if(_0x55d658[_0x2a72('0xa')]===_0x2a72('0x7')){_0x55d658[_0x2a72('0x7')]+=0x1;updateWaitingCounter(_0x55d658);}if(_0x55d658[_0x2a72('0xb')]){_0x55d658['answered']+=0x1;if(_0x55d658['talking']){_0x55d658[_0x2a72('0x5')]-=0x1;}}else{if(_0x55d658[_0x2a72('0xa')]){_0x55d658[_0x2a72('0xc')]+=0x1;updateWaitingCounter(_0x55d658);}}}else{if(!_0x55d658[_0x2a72('0xb')]){_0x55d658['waiting']+=0x1;}if(_0x55d658[_0x2a72('0xb')]){_0x55d658[_0x2a72('0x5')]+=0x1;updateWaitingCounter(_0x55d658);}}_0x55d658[_0x2a72('0x8')]+=0x1;return _0x55d658;}function getLastMessageText(_0x23fcf9){return db[_0x2a72('0xd')][_0x2a72('0xe')]({'where':{'$and':[{'MailInteractionId':_0x23fcf9['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x2a72('0xf')],'order':_0x2a72('0x10'),'raw':!![]})[_0x2a72('0x11')](function(_0x2f1f7f){if(_0x2f1f7f&&_0x2f1f7f['plainBody']){_0x23fcf9[_0x2a72('0x12')]=_[_0x2a72('0x13')](_0x2f1f7f[_0x2a72('0xf')]);}return _0x23fcf9;})[_0x2a72('0x14')](function(_0x4a6725){throw _0x4a6725;});}exports[_0x2a72('0x15')]=function(_0x503eb2,_0x3bbc42,_0x557427,_0x5effe4){return new Promise(function(_0x1c670c,_0x23b6d4){return getInteractionUsers(_0x503eb2['id'],_0x557427)[_0x2a72('0x11')](function(_0x30f498){_0x503eb2[_0x2a72('0x16')]=_0x30f498;return getInteractionTags(_0x503eb2[_0x2a72('0x17')],_0x3bbc42);})[_0x2a72('0x11')](function(_0x22ec7c){_0x503eb2[_0x2a72('0x18')]=_0x22ec7c;delete _0x503eb2[_0x2a72('0x17')];return updateInteractionCounters(_0x503eb2);})['then'](function(_0x568a45){if(_0x5effe4){return getLastMessageText(_0x568a45);}else{return _0x568a45;}})[_0x2a72('0x11')](function(_0x445747){_0x1c670c(_0x445747);})[_0x2a72('0x14')](function(_0x2abdd5){_0x23b6d4(_0x2abdd5);});});};
\ No newline at end of file
+var _0x39a9=['push','waiting','talking','answered','unmanaged','total','abandoned','disposition','UserId','findOne','out','plainBody','-id','lastMsgText','catch','updateInteraction','then','Users','TagIds','Tags','../../mysqldb','map','split','forEach'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x39a9,0x1c4));var _0x939a=function(_0x4ac60a,_0x503a99){_0x4ac60a=_0x4ac60a-0x0;var _0x4b22e8=_0x39a9[_0x4ac60a];return _0x4b22e8;};'use strict';var _=require('lodash');var db=require(_0x939a('0x0'))['db'];function getInteractionUsers(_0x46ba55,_0x48b107){return new Promise(function(_0xb3cf2c,_0x39072b){try{var _0x233fa3=[];if(_0x48b107[_0x46ba55]){_0x233fa3=_0x48b107[_0x46ba55][_0x939a('0x1')](function(_0x475dee){return{'id':_0x475dee['id'],'fullname':_0x475dee['fullname']};});}return _0xb3cf2c(_0x233fa3);}catch(_0xa5752c){_0x39072b(_0xa5752c);}});}function getInteractionTags(_0x4ba58e,_0x4f6d91){var _0x2fb43f=[];if(_0x4ba58e){_0x4ba58e[_0x939a('0x2')](',')[_0x939a('0x3')](function(_0x4fdea6){_0x2fb43f[_0x939a('0x4')](_0x4f6d91[_0x4fdea6]);});}return _0x2fb43f;}function updateWaitingCounter(_0x27359d){if(_0x27359d[_0x939a('0x5')]){_0x27359d['waiting']-=0x1;}}function updateInteractionCounters(_0x2c9b12){_0x2c9b12[_0x939a('0x5')]=0x0;_0x2c9b12[_0x939a('0x6')]=0x0;_0x2c9b12[_0x939a('0x7')]=0x0;_0x2c9b12[_0x939a('0x8')]=0x0;_0x2c9b12['abandoned']=0x0;_0x2c9b12[_0x939a('0x9')]=0x0;if(_0x2c9b12['closed']){if(_0x2c9b12['disposition']==='abandoned'){_0x2c9b12[_0x939a('0xa')]+=0x1;updateWaitingCounter(_0x2c9b12);}if(_0x2c9b12['UserId']){_0x2c9b12[_0x939a('0x7')]+=0x1;if(_0x2c9b12['talking']){_0x2c9b12[_0x939a('0x6')]-=0x1;}}else{if(_0x2c9b12[_0x939a('0xb')]){_0x2c9b12['unmanaged']+=0x1;updateWaitingCounter(_0x2c9b12);}}}else{if(!_0x2c9b12[_0x939a('0xc')]){_0x2c9b12[_0x939a('0x5')]+=0x1;}if(_0x2c9b12[_0x939a('0xc')]){_0x2c9b12[_0x939a('0x6')]+=0x1;updateWaitingCounter(_0x2c9b12);}}_0x2c9b12['total']+=0x1;return _0x2c9b12;}function getLastMessageText(_0x39054f){return db['MailMessage'][_0x939a('0xd')]({'where':{'$and':[{'MailInteractionId':_0x39054f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x939a('0xe')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x939a('0xf')],'order':_0x939a('0x10'),'raw':!![]})['then'](function(_0x1abb9f){if(_0x1abb9f&&_0x1abb9f['plainBody']){_0x39054f[_0x939a('0x11')]=_['trimStart'](_0x1abb9f[_0x939a('0xf')]);}return _0x39054f;})[_0x939a('0x12')](function(_0x16ac8b){throw _0x16ac8b;});}exports[_0x939a('0x13')]=function(_0x44bc16,_0x41e4a1,_0x2f086,_0x125d0d){return new Promise(function(_0x219901,_0x535141){return getInteractionUsers(_0x44bc16['id'],_0x2f086)[_0x939a('0x14')](function(_0x154247){_0x44bc16[_0x939a('0x15')]=_0x154247;return getInteractionTags(_0x44bc16[_0x939a('0x16')],_0x41e4a1);})[_0x939a('0x14')](function(_0x1a351d){_0x44bc16[_0x939a('0x17')]=_0x1a351d;delete _0x44bc16[_0x939a('0x16')];return updateInteractionCounters(_0x44bc16);})[_0x939a('0x14')](function(_0xf1f19e){if(_0x125d0d){return getLastMessageText(_0xf1f19e);}else{return _0xf1f19e;}})[_0x939a('0x14')](function(_0x4d3b10){_0x219901(_0x4d3b10);})[_0x939a('0x12')](function(_0x14b21a){_0x535141(_0x14b21a);});});};
\ No newline at end of file
index 6695bb1..1c01e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01a3=['Account','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_interaction_has_tags','_messages','user_has_','isArray','toLowerCase','toUpperCase','role','stringify','null','Interaction','then','update','info','catch','error','../../mysqldb','../../config/logger','openchannel-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','chat','Website'];(function(_0xfad232,_0x27b13a){var _0x35b35b=function(_0x727ac2){while(--_0x727ac2){_0xfad232['push'](_0xfad232['shift']());}};_0x35b35b(++_0x27b13a);}(_0x01a3,0x1a9));var _0x301a=function(_0x1133a7,_0x3a94e7){_0x1133a7=_0x1133a7-0x0;var _0xef79d1=_0x01a3[_0x1133a7];return _0xef79d1;};'use strict';var _=require('lodash');var db=require(_0x301a('0x0'))['db'];var loggers={'openchannel':require(_0x301a('0x1'))(_0x301a('0x2')),'mail':require(_0x301a('0x1'))('mail-interactions'),'fax':require(_0x301a('0x1'))(_0x301a('0x3')),'sms':require('../../config/logger')(_0x301a('0x4')),'chat':require('../../config/logger')(_0x301a('0x5')),'whatsapp':require(_0x301a('0x1'))(_0x301a('0x6'))};function getAccountFK(_0x52f883){return _['capitalize'](_0x52f883)+(_0x52f883===_0x301a('0x7')?_0x301a('0x8'):_0x301a('0x9'))+'Id';}function getInteractionFK(_0x3144b5){return _['capitalize'](_0x3144b5)+_0x301a('0xa');}function getInteractionId(_0x36380e,_0x55c055,_0x5c880f){if(_0x36380e&&_0x36380e[_[_0x301a('0xb')](_0x5c880f)+'InteractionId']){return _0x36380e[_['upperFirst'](_0x5c880f)+'InteractionId'];}else if(_0x36380e&&_0x36380e['id']){return _0x36380e['id'];}else if(_0x55c055&&_0x55c055['id']){return _0x55c055['id'];}else{return _0x301a('0xc');}}function getInteractionsTables(_0x56bef4){return{'accounts':_0x56bef4+'_'+(_0x56bef4===_0x301a('0x7')?_0x301a('0xd'):_0x301a('0xe')),'interactions':_0x56bef4+_0x301a('0xf'),'interactionsTags':_0x56bef4+_0x301a('0x10'),'messages':_0x56bef4+_0x301a('0x11'),'userInteractions':_0x301a('0x12')+_0x56bef4+_0x301a('0xf')};}function getSelectedTags(_0x5b552a){var _0x3b057d=[];if(_0x5b552a){_0x3b057d=Array[_0x301a('0x13')](_0x5b552a)?_0x5b552a:[_0x5b552a];}return _0x3b057d;}function log(_0x437076,_0xe0c424,_0x1eb5d4,_0x1246f7,_0x1042a8,_0xe47c44){loggers[_0x1042a8[_0x301a('0x14')]()][_0x437076]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xe47c44[_0x301a('0x15')](),_0xe0c424?_0xe0c424['id']:null,_0xe0c424?_0xe0c424['name']:null,_0xe0c424?_0xe0c424[_0x301a('0x16')]:null,getInteractionId(_0x1eb5d4,_0x1246f7,_0x1042a8),_0x1eb5d4?JSON[_0x301a('0x17')](_0x1eb5d4):_0x301a('0x18'));}function updateUser(_0x14b8cc,_0x3af54f,_0x3997de,_0x5ec080,_0x3edfcb){db[_[_0x301a('0xb')](_0x5ec080)+_0x301a('0x19')]['findOne']({'where':{'id':getInteractionId(_0x3af54f,_0x3997de,_0x5ec080)}})[_0x301a('0x1a')](function(_0x5466be){if(_0x5466be){return _0x5466be[_0x301a('0x1b')]({'UserId':_0x14b8cc?_0x14b8cc['id']:null});}})[_0x301a('0x1a')](function(_0x1af0f6){if(_0x1af0f6){log(_0x301a('0x1c'),_0x14b8cc,_0x3af54f,_0x3997de,_0x5ec080,_0x3edfcb);}})[_0x301a('0x1d')](function(){log(_0x301a('0x1e'),_0x14b8cc,_0x3af54f,_0x3997de,_0x5ec080,_0x3edfcb);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x8e5f=['_interactions','_messages','user_has_','isArray','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','Interaction','findOne','update','then','catch','error','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','InteractionId','upperFirst','unknown','websites','accounts'];(function(_0x347b85,_0x10bf17){var _0x3b09ca=function(_0x2a8efb){while(--_0x2a8efb){_0x347b85['push'](_0x347b85['shift']());}};_0x3b09ca(++_0x10bf17);}(_0x8e5f,0xdf));var _0xf8e5=function(_0x238f1c,_0x2a4fac){_0x238f1c=_0x238f1c-0x0;var _0x520c92=_0x8e5f[_0x238f1c];return _0x520c92;};'use strict';var _=require(_0xf8e5('0x0'));var db=require(_0xf8e5('0x1'))['db'];var loggers={'openchannel':require(_0xf8e5('0x2'))(_0xf8e5('0x3')),'mail':require(_0xf8e5('0x2'))(_0xf8e5('0x4')),'fax':require(_0xf8e5('0x2'))(_0xf8e5('0x5')),'sms':require(_0xf8e5('0x2'))(_0xf8e5('0x6')),'chat':require(_0xf8e5('0x2'))(_0xf8e5('0x7')),'whatsapp':require('../../config/logger')(_0xf8e5('0x8'))};function getAccountFK(_0x33ff49){return _[_0xf8e5('0x9')](_0x33ff49)+(_0x33ff49===_0xf8e5('0xa')?_0xf8e5('0xb'):'Account')+'Id';}function getInteractionFK(_0x492c2f){return _[_0xf8e5('0x9')](_0x492c2f)+_0xf8e5('0xc');}function getInteractionId(_0x38a101,_0x4cfe17,_0x4deea0){if(_0x38a101&&_0x38a101[_[_0xf8e5('0xd')](_0x4deea0)+_0xf8e5('0xc')]){return _0x38a101[_[_0xf8e5('0xd')](_0x4deea0)+_0xf8e5('0xc')];}else if(_0x38a101&&_0x38a101['id']){return _0x38a101['id'];}else if(_0x4cfe17&&_0x4cfe17['id']){return _0x4cfe17['id'];}else{return _0xf8e5('0xe');}}function getInteractionsTables(_0xa646a6){return{'accounts':_0xa646a6+'_'+(_0xa646a6===_0xf8e5('0xa')?_0xf8e5('0xf'):_0xf8e5('0x10')),'interactions':_0xa646a6+_0xf8e5('0x11'),'interactionsTags':_0xa646a6+'_interaction_has_tags','messages':_0xa646a6+_0xf8e5('0x12'),'userInteractions':_0xf8e5('0x13')+_0xa646a6+_0xf8e5('0x11')};}function getSelectedTags(_0x1744da){var _0x2bf255=[];if(_0x1744da){_0x2bf255=Array[_0xf8e5('0x14')](_0x1744da)?_0x1744da:[_0x1744da];}return _0x2bf255;}function log(_0x3c4d95,_0x1cf0fe,_0x34ac62,_0x26a784,_0xc2fe04,_0x288403){loggers[_0xc2fe04['toLowerCase']()][_0x3c4d95](_0xf8e5('0x15'),_0x288403[_0xf8e5('0x16')](),_0x1cf0fe?_0x1cf0fe['id']:null,_0x1cf0fe?_0x1cf0fe[_0xf8e5('0x17')]:null,_0x1cf0fe?_0x1cf0fe['role']:null,getInteractionId(_0x34ac62,_0x26a784,_0xc2fe04),_0x34ac62?JSON['stringify'](_0x34ac62):'null');}function updateUser(_0x4bfae0,_0x532507,_0x2ccd28,_0x46804c,_0x344855){db[_['upperFirst'](_0x46804c)+_0xf8e5('0x18')][_0xf8e5('0x19')]({'where':{'id':getInteractionId(_0x532507,_0x2ccd28,_0x46804c)}})['then'](function(_0x28365b){if(_0x28365b){return _0x28365b[_0xf8e5('0x1a')]({'UserId':_0x4bfae0?_0x4bfae0['id']:null});}})[_0xf8e5('0x1b')](function(_0x432779){if(_0x432779){log('info',_0x4bfae0,_0x532507,_0x2ccd28,_0x46804c,_0x344855);}})[_0xf8e5('0x1c')](function(){log(_0xf8e5('0x1d'),_0x4bfae0,_0x532507,_0x2ccd28,_0x46804c,_0x344855);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 6a39f00..8d807ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e96=['use','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr','format','update','base64','utf8','parse','hasOwnProperty'];(function(_0x500439,_0x24b02e){var _0x476501=function(_0x1b92ca){while(--_0x1b92ca){_0x500439['push'](_0x500439['shift']());}};_0x476501(++_0x24b02e);}(_0x2e96,0x109));var _0x62e9=function(_0x3e05d2,_0x5e874f){_0x3e05d2=_0x3e05d2-0x0;var _0x54dd4f=_0x2e96[_0x3e05d2];return _0x54dd4f;};'use strict';var crypto=require(_0x62e9('0x0'));var util=require(_0x62e9('0x1'));var compose=require(_0x62e9('0x2'));var db=require(_0x62e9('0x3'))['db'];var config=require(_0x62e9('0x4'));function getValueFromLicense(_0x1530d9,_0x3834b5){if(_0x1530d9&&_0x3834b5){if(_0x3834b5[_0x62e9('0x5')]&&_0x3834b5[_0x62e9('0x6')]){var _0xa04bc1=_0x3834b5[_0x62e9('0x5')];var _0x24b7f9=_0x3834b5[_0x62e9('0x6')];var _0x510fdc=_0xa04bc1['split']('-')[0x4];var _0x1899c7=_0xa04bc1[_0x62e9('0x7')]('-')[0x0];var _0x3ad1ea=crypto['createDecipher'](_0x62e9('0x8'),util[_0x62e9('0x9')]('%s:%s:%s',_0x510fdc,_0xa04bc1,_0x1899c7));var _0x38566b=_0x3ad1ea[_0x62e9('0xa')](_0x24b7f9,_0x62e9('0xb'),_0x62e9('0xc'));_0x38566b+=_0x3ad1ea['final'](_0x62e9('0xc'));var _0x18f885=JSON[_0x62e9('0xd')](_0x38566b);return _0x18f885[_0x62e9('0xe')](_0x1530d9)?_0x18f885[_0x1530d9]:null;}}return null;}function isLimit(_0x5cc684,_0x45ffed,_0x160ca2,_0x34e50d){var _0x522553=_0x45ffed;return compose()[_0x62e9('0xf')](function(_0x494ca3,_0x68910,_0x5289d8){return db[_0x62e9('0x10')][_0x62e9('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x62e9('0x12')](function(_0x53d4c0){var _0x443258=getValueFromLicense(_0x5cc684,_0x53d4c0);return _0x443258?_0x443258:_0x522553;})[_0x62e9('0x12')](function(_0x190cde){_0x522553=_0x190cde;return _0x160ca2[_0x62e9('0x13')](_0x34e50d);})[_0x62e9('0x12')](function(_0x255cfc){if(_0x255cfc>=_0x522553){return _0x68910[_0x62e9('0x14')](0x193)[_0x62e9('0x15')]({'message':util[_0x62e9('0x9')](_0x62e9('0x16'),_0x5cc684)});}_0x5289d8();})[_0x62e9('0x17')](function(_0xffe08a){_0x5289d8(_0xffe08a);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x62e9('0x18')],{'where':{'$or':[{'role':_0x62e9('0x19')},{'role':_0x62e9('0x1a')}]}});}exports[_0x62e9('0x1b')]=isUserLimit;
\ No newline at end of file
+var _0x7b34=['json','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','user','isUserLimit','../../mysqldb','data1','license','split','createDecipher','aes-256-ctr','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','License','findOne','count','then','status'];(function(_0x521378,_0x2f8004){var _0x4b2fc4=function(_0x25511e){while(--_0x25511e){_0x521378['push'](_0x521378['shift']());}};_0x4b2fc4(++_0x2f8004);}(_0x7b34,0x1d3));var _0x47b3=function(_0x5929f5,_0x52cf36){_0x5929f5=_0x5929f5-0x0;var _0x55d233=_0x7b34[_0x5929f5];return _0x55d233;};'use strict';var crypto=require('crypto');var util=require('util');var compose=require('composable-middleware');var db=require(_0x47b3('0x0'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x21eb31,_0x1a699f){if(_0x21eb31&&_0x1a699f){if(_0x1a699f[_0x47b3('0x1')]&&_0x1a699f[_0x47b3('0x2')]){var _0x174fae=_0x1a699f[_0x47b3('0x1')];var _0x40d52d=_0x1a699f[_0x47b3('0x2')];var _0x1b7556=_0x174fae[_0x47b3('0x3')]('-')[0x4];var _0x154934=_0x174fae[_0x47b3('0x3')]('-')[0x0];var _0x532ddb=crypto[_0x47b3('0x4')](_0x47b3('0x5'),util['format'](_0x47b3('0x6'),_0x1b7556,_0x174fae,_0x154934));var _0x250795=_0x532ddb[_0x47b3('0x7')](_0x40d52d,_0x47b3('0x8'),_0x47b3('0x9'));_0x250795+=_0x532ddb[_0x47b3('0xa')](_0x47b3('0x9'));var _0x3423da=JSON[_0x47b3('0xb')](_0x250795);return _0x3423da[_0x47b3('0xc')](_0x21eb31)?_0x3423da[_0x21eb31]:null;}}return null;}function isLimit(_0x30e875,_0x5aba3e,_0x1bfc5f,_0x10efee){var _0x28e8e5=_0x5aba3e;return compose()[_0x47b3('0xd')](function(_0xc6bac7,_0x155c29,_0xd4c725){return db[_0x47b3('0xe')][_0x47b3('0xf')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x4a24e2){var _0x1a9217=getValueFromLicense(_0x30e875,_0x4a24e2);return _0x1a9217?_0x1a9217:_0x28e8e5;})['then'](function(_0x25cf5b){_0x28e8e5=_0x25cf5b;return _0x1bfc5f[_0x47b3('0x10')](_0x10efee);})[_0x47b3('0x11')](function(_0x4dc6fd){if(_0x4dc6fd>=_0x28e8e5){return _0x155c29[_0x47b3('0x12')](0x193)[_0x47b3('0x13')]({'message':util[_0x47b3('0x14')](_0x47b3('0x15'),_0x30e875)});}_0xd4c725();})[_0x47b3('0x16')](function(_0x8c9daf){_0xd4c725(_0x8c9daf);});});}function isUserLimit(){return isLimit(_0x47b3('0x17'),0x1,db[_0x47b3('0x18')],{'where':{'$or':[{'role':'admin'},{'role':_0x47b3('0x19')}]}});}exports[_0x47b3('0x1a')]=isUserLimit;
\ No newline at end of file
index 0d4e45e..a0e9619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8630=['$substring','$startsWith','$lt','<\x20?','>\x20?','$lte','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$endsWith','shift','utcOffset','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','[$or]','replace','[$and]','split','slice','forEach','filter','conditions','push','buildExpression','DATE','operator','$eq','$between','includes','$gt','value','add','days','format','castTo','text','field','\x20AS\x20','$ne','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?'];(function(_0x207a8b,_0x213f72){var _0x264d5a=function(_0xc46e25){while(--_0xc46e25){_0x207a8b['push'](_0x207a8b['shift']());}};_0x264d5a(++_0x213f72);}(_0x8630,0x114));var _0x0863=function(_0xffee2c,_0x50de7c){_0xffee2c=_0xffee2c-0x0;var _0x36d1d5=_0x8630[_0xffee2c];return _0x36d1d5;};'use strict';var _=require(_0x0863('0x0'));var moment=require(_0x0863('0x1'));exports[_0x0863('0x2')]=function(_0x7f1538){var _0x1b518f={'conditions':[]};_0x1b518f[_0x0863('0x3')]=_['startsWith'](_0x7f1538,_0x0863('0x4'))?'or':'and';var _0x1a0118=_0x7f1538[_0x0863('0x5')](_0x0863('0x6'),'')[_0x0863('0x5')](_0x0863('0x4'),'')[_0x0863('0x7')]('||');for(var _0x1558da=0x0;_0x1558da<_0x1a0118['length'];_0x1558da++){var _0x4561e3=_0x1a0118[_0x1558da][_0x0863('0x7')](':=');var _0x3be40e=_0x4561e3[0x0];var _0x533488=_0x4561e3[_0x0863('0x8')](0x1);_0x533488[_0x0863('0x9')](function(_0x87a0bc){var _0x167f65=_0x87a0bc['split']('[')['shift']();var _0x376700=_0x87a0bc['match'](/\[(.*?)\]/g);_0x376700[_0x0863('0x9')](function(_0x3b26c9){var _0x478cfa=_0x3b26c9[_0x0863('0x7')]('[')[_0x0863('0xa')](function(_0x5f2adf){return _0x5f2adf['indexOf'](']')>-0x1;})['map'](function(_0x3d31d5){return _0x3d31d5[_0x0863('0x7')](']')[0x0];})[0x0];_0x1b518f[_0x0863('0xb')][_0x0863('0xc')]({'field':_0x3be40e,'operator':_0x167f65,'value':_0x478cfa});});});}return _0x1b518f;};exports[_0x0863('0xd')]=function(_0x344cd0,_0x1d19f1,_0x1feed3){var _0x257f53={};if(_0x1d19f1===_0x0863('0xe')){if(_0x1feed3[_0x0863('0xf')]===_0x0863('0x10')){_0x1feed3[_0x0863('0xf')]=_0x0863('0x11');_0x1feed3['value']+=','+_0x1feed3['value'];}else if(_[_0x0863('0x12')]([_0x0863('0x13'),'$lte'],_0x1feed3[_0x0863('0xf')])){_0x1feed3[_0x0863('0x14')]=moment(_0x1feed3[_0x0863('0x14')])[_0x0863('0x15')](0x1,_0x0863('0x16'))[_0x0863('0x17')]('YYYY-MM-DD');}}if(_0x1feed3[_0x0863('0x18')]){_0x1d19f1=_0x1feed3['castTo'];_0x257f53[_0x0863('0x19')]='CAST('+_0x344cd0+'.'+_0x1feed3[_0x0863('0x1a')]+_0x0863('0x1b')+_0x1feed3[_0x0863('0x18')]+')\x20'+parseOperator(_0x1feed3[_0x0863('0xf')]);}else{_0x257f53[_0x0863('0x19')]=_0x344cd0+'.'+_0x1feed3[_0x0863('0x1a')]+'\x20'+parseOperator(_0x1feed3['operator']);}if(_[_0x0863('0x12')]([_0x0863('0x1c'),_0x0863('0x1d')],_0x1feed3['operator']))_0x257f53['text']='('+_0x257f53[_0x0863('0x19')]+'\x20OR\x20'+_0x344cd0+'.'+_0x1feed3['field']+_0x0863('0x1e');_0x257f53[_0x0863('0x14')]=parseValue(_0x1d19f1,_0x1feed3['operator'],_0x1feed3[_0x0863('0x14')]);return _0x257f53;};function parseOperator(_0x5f3237){var _0x44a915;switch(_0x5f3237){case _0x0863('0x1f'):_0x44a915=_0x0863('0x20');break;case'$notIn':_0x44a915=_0x0863('0x21');break;case _0x0863('0x10'):_0x44a915=_0x0863('0x22');break;case _0x0863('0x1c'):_0x44a915=_0x0863('0x23');break;case _0x0863('0x24'):case _0x0863('0x25'):case'$endsWith':_0x44a915='LIKE\x20?';break;case _0x0863('0x26'):_0x44a915=_0x0863('0x27');break;case _0x0863('0x13'):_0x44a915=_0x0863('0x28');break;case _0x0863('0x29'):_0x44a915=_0x0863('0x2a');break;case'$gte':_0x44a915=_0x0863('0x2b');break;case'$between':_0x44a915=_0x0863('0x2c');break;}return _0x44a915;}function parseValue(_0x2291a,_0x571f44,_0x27b1d7){var _0xa655c8={'start':undefined,'end':undefined};switch(_0x571f44){case _0x0863('0x1f'):case _0x0863('0x1d'):_0xa655c8[_0x0863('0x2d')]=_0x27b1d7[_0x0863('0x7')](',');break;case _0x0863('0x24'):_0xa655c8[_0x0863('0x2d')]='%'+_0x27b1d7+'%';break;case _0x0863('0x25'):_0xa655c8['start']=_0x27b1d7+'%';break;case _0x0863('0x2e'):_0xa655c8['start']='%'+_0x27b1d7;break;case _0x0863('0x11'):var _0x3ec87d=_0x27b1d7[_0x0863('0x7')](',');var _0x27b1d7=_0x3ec87d[_0x0863('0x2f')]();var _0x1f06c9=_0x3ec87d['pop']();if(_0x2291a===_0x0863('0xe')){_0x27b1d7=moment(_0x27b1d7)[_0x0863('0x30')](0x0,!![])[_0x0863('0x17')]();_0x1f06c9=moment(_0x1f06c9)[_0x0863('0x30')](0x0,!![])[_0x0863('0x15')](0x17,_0x0863('0x31'))[_0x0863('0x15')](0x3b,_0x0863('0x32'))[_0x0863('0x15')](0x3b,_0x0863('0x33'))[_0x0863('0x17')]();}_0xa655c8={'start':_0x27b1d7,'end':_0x1f06c9};break;default:_0xa655c8[_0x0863('0x2d')]=_0x27b1d7;break;}return _0xa655c8;}
\ No newline at end of file
+var _0xecdd=['[$or]','and','replace','[$and]','length','split','slice','forEach','shift','match','filter','indexOf','map','push','buildExpression','DATE','$eq','$between','value','includes','$gt','$lte','add','days','format','castTo','text','CAST(','field','operator','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','=\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','<=\x20?','>=\x20?','start','utcOffset','hours','lodash','parseSearch','sqlOperator'];(function(_0x4188bd,_0x2d1acf){var _0x41aa4b=function(_0x520b32){while(--_0x520b32){_0x4188bd['push'](_0x4188bd['shift']());}};_0x41aa4b(++_0x2d1acf);}(_0xecdd,0x195));var _0xdecd=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0xecdd[_0x1fc122];return _0xa2cb13;};'use strict';var _=require(_0xdecd('0x0'));var moment=require('moment');exports[_0xdecd('0x1')]=function(_0x5df321){var _0x6a8128={'conditions':[]};_0x6a8128[_0xdecd('0x2')]=_['startsWith'](_0x5df321,_0xdecd('0x3'))?'or':_0xdecd('0x4');var _0x34854b=_0x5df321[_0xdecd('0x5')](_0xdecd('0x6'),'')[_0xdecd('0x5')]('[$or]','')['split']('||');for(var _0x4b2687=0x0;_0x4b2687<_0x34854b[_0xdecd('0x7')];_0x4b2687++){var _0x4800b8=_0x34854b[_0x4b2687][_0xdecd('0x8')](':=');var _0x583c3d=_0x4800b8[0x0];var _0x31b6c0=_0x4800b8[_0xdecd('0x9')](0x1);_0x31b6c0[_0xdecd('0xa')](function(_0x4a2618){var _0x35760b=_0x4a2618[_0xdecd('0x8')]('[')[_0xdecd('0xb')]();var _0x2c5ec9=_0x4a2618[_0xdecd('0xc')](/\[(.*?)\]/g);_0x2c5ec9[_0xdecd('0xa')](function(_0x334a16){var _0x24e0b4=_0x334a16[_0xdecd('0x8')]('[')[_0xdecd('0xd')](function(_0x321006){return _0x321006[_0xdecd('0xe')](']')>-0x1;})[_0xdecd('0xf')](function(_0x79fd6d){return _0x79fd6d[_0xdecd('0x8')](']')[0x0];})[0x0];_0x6a8128['conditions'][_0xdecd('0x10')]({'field':_0x583c3d,'operator':_0x35760b,'value':_0x24e0b4});});});}return _0x6a8128;};exports[_0xdecd('0x11')]=function(_0x2390de,_0x468505,_0x38255a){var _0x5ad384={};if(_0x468505===_0xdecd('0x12')){if(_0x38255a['operator']===_0xdecd('0x13')){_0x38255a['operator']=_0xdecd('0x14');_0x38255a[_0xdecd('0x15')]+=','+_0x38255a['value'];}else if(_[_0xdecd('0x16')]([_0xdecd('0x17'),_0xdecd('0x18')],_0x38255a['operator'])){_0x38255a['value']=moment(_0x38255a[_0xdecd('0x15')])[_0xdecd('0x19')](0x1,_0xdecd('0x1a'))[_0xdecd('0x1b')]('YYYY-MM-DD');}}if(_0x38255a[_0xdecd('0x1c')]){_0x468505=_0x38255a[_0xdecd('0x1c')];_0x5ad384[_0xdecd('0x1d')]=_0xdecd('0x1e')+_0x2390de+'.'+_0x38255a[_0xdecd('0x1f')]+'\x20AS\x20'+_0x38255a[_0xdecd('0x1c')]+')\x20'+parseOperator(_0x38255a['operator']);}else{_0x5ad384['text']=_0x2390de+'.'+_0x38255a['field']+'\x20'+parseOperator(_0x38255a[_0xdecd('0x20')]);}if(_[_0xdecd('0x16')]([_0xdecd('0x21'),_0xdecd('0x22')],_0x38255a[_0xdecd('0x20')]))_0x5ad384[_0xdecd('0x1d')]='('+_0x5ad384[_0xdecd('0x1d')]+_0xdecd('0x23')+_0x2390de+'.'+_0x38255a[_0xdecd('0x1f')]+_0xdecd('0x24');_0x5ad384[_0xdecd('0x15')]=parseValue(_0x468505,_0x38255a[_0xdecd('0x20')],_0x38255a[_0xdecd('0x15')]);return _0x5ad384;};function parseOperator(_0x46ac64){var _0xd454da;switch(_0x46ac64){case _0xdecd('0x25'):_0xd454da=_0xdecd('0x26');break;case _0xdecd('0x22'):_0xd454da='NOT\x20IN\x20?';break;case'$eq':_0xd454da=_0xdecd('0x27');break;case _0xdecd('0x21'):_0xd454da='<>\x20?';break;case _0xdecd('0x28'):case _0xdecd('0x29'):case _0xdecd('0x2a'):_0xd454da=_0xdecd('0x2b');break;case _0xdecd('0x2c'):_0xd454da=_0xdecd('0x2d');break;case _0xdecd('0x17'):_0xd454da='>\x20?';break;case _0xdecd('0x18'):_0xd454da=_0xdecd('0x2e');break;case'$gte':_0xd454da=_0xdecd('0x2f');break;case'$between':_0xd454da='BETWEEN\x20?\x20AND\x20?';break;}return _0xd454da;}function parseValue(_0x5e5115,_0x16b4e2,_0x3dfa0a){var _0x377009={'start':undefined,'end':undefined};switch(_0x16b4e2){case'$in':case _0xdecd('0x22'):_0x377009[_0xdecd('0x30')]=_0x3dfa0a['split'](',');break;case _0xdecd('0x28'):_0x377009['start']='%'+_0x3dfa0a+'%';break;case _0xdecd('0x29'):_0x377009[_0xdecd('0x30')]=_0x3dfa0a+'%';break;case _0xdecd('0x2a'):_0x377009[_0xdecd('0x30')]='%'+_0x3dfa0a;break;case _0xdecd('0x14'):var _0xe50c07=_0x3dfa0a['split'](',');var _0x3dfa0a=_0xe50c07[_0xdecd('0xb')]();var _0x362b48=_0xe50c07['pop']();if(_0x5e5115===_0xdecd('0x12')){_0x3dfa0a=moment(_0x3dfa0a)[_0xdecd('0x31')](0x0,!![])[_0xdecd('0x1b')]();_0x362b48=moment(_0x362b48)['utcOffset'](0x0,!![])[_0xdecd('0x19')](0x17,_0xdecd('0x32'))[_0xdecd('0x19')](0x3b,'minutes')[_0xdecd('0x19')](0x3b,'seconds')[_0xdecd('0x1b')]();}_0x377009={'start':_0x3dfa0a,'end':_0x362b48};break;default:_0x377009[_0xdecd('0x30')]=_0x3dfa0a;break;}return _0x377009;}
\ No newline at end of file
index ba8f91f..a338e83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa5=['parse','keys','fields','split','filters','forOwn','find','type','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','uniqueid','isArray','limit','offset','sort','map','cast','col','priority','unsigned','DESC','ASC','omit','isEmpty','length','isObject','isString','unset','hasOwnProperty','^[+]?[0-9]*$','isEmail','getFullTextValue','{EXPR}','forEach','match','push','replace','join','getOptions','query','$id','name','intersection','model','attributes','nolimit','order','where','pick','filter','object','includes','columns','merge','VIRTUAL','lower','options','lodash','sequelize'];(function(_0x4cde9c,_0x20ed85){var _0x2f641c=function(_0xa10ae8){while(--_0xa10ae8){_0x4cde9c['push'](_0x4cde9c['shift']());}};_0x2f641c(++_0x20ed85);}(_0x7fa5,0x7e));var _0x57fa=function(_0x3e681f,_0x45a564){_0x3e681f=_0x3e681f-0x0;var _0xcd5556=_0x7fa5[_0x3e681f];return _0xcd5556;};'use strict';var _=require(_0x57fa('0x0'));var sequelize=require(_0x57fa('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x365afb){var _0x168481=['ne'];try{var _0x9095d1=JSON[_0x57fa('0x2')](_0x365afb);var _0x27987b=Object[_0x57fa('0x3')](_0x9095d1)[0x0];return _0x168481['includes'](_0x27987b);}catch(_0x1cb538){return![];}}function getOperatorValue(_0x3e3930){var _0x186151=JSON[_0x57fa('0x2')](_0x3e3930);var _0x2c420b=Object['keys'](_0x186151)[0x0];var _0x2ef45f=_0x186151[_0x2c420b];return{['$'+_0x2c420b]:_0x2ef45f};}exports[_0x57fa('0x4')]=function(_0x251592){var _0x516e53=null;if(_0x251592){_0x516e53=_0x251592[_0x57fa('0x5')](',');}return _0x516e53;};exports[_0x57fa('0x6')]=function(_0xb765dd,_0x461a42){var _0x36174a={};if(!_['isEmpty'](_0xb765dd)){_[_0x57fa('0x7')](_0xb765dd,function(_0x4c7a3f,_0x17a582){try{if(_0x461a42){var _0x321fe8=_[_0x57fa('0x8')](_0x461a42,{'name':_0x17a582})||{};if(hasSequelizeOperator(_0x4c7a3f)){_0x36174a[_0x17a582]=getOperatorValue(_0x4c7a3f);}else if(_0x321fe8[_0x57fa('0x9')]==='DATE'&&_[_0x57fa('0xa')](_0x4c7a3f)){var _0x418d5c=JSON['parse'](_0x4c7a3f);var _0x3f087b={'$gte':moment(moment(_0x418d5c[_0x57fa('0xb')])[_0x57fa('0xc')](_0x57fa('0xd')))[_0x57fa('0xe')]()[_0x57fa('0xc')](),'$lte':moment(moment(_0x418d5c[_0x57fa('0xf')])[_0x57fa('0xc')]('YYYY-MM-DD'))[_0x57fa('0xe')]()[_0x57fa('0x10')](0x1,'s')[_0x57fa('0xc')]()};_0x36174a[_0x17a582]=_0x3f087b;}else if(_0x321fe8['name']===_0x57fa('0x11')){_0x36174a[_0x17a582]=_0x4c7a3f;}else{_0x36174a[_0x17a582]=_[_0x57fa('0x12')](_0x4c7a3f)?_0x4c7a3f:JSON[_0x57fa('0x2')](_0x4c7a3f);}}else{_0x36174a[_0x17a582]=_[_0x57fa('0x12')](_0x4c7a3f)?_0x4c7a3f:JSON['parse'](_0x4c7a3f);}}catch(_0x3b7a70){_0x36174a[_0x17a582]=_0x4c7a3f[_0x57fa('0x5')](',');}});}return _0x36174a;};exports[_0x57fa('0x13')]=function(_0x2bb368){_0x2bb368=parseInt(_0x2bb368,0xa);if(!_0x2bb368||_0x2bb368<0x0){_0x2bb368=LIMIT_VALUE;}return _0x2bb368;};exports[_0x57fa('0x14')]=function(_0x437edf){_0x437edf=parseInt(_0x437edf,0xa);if(!_0x437edf||_0x437edf<0x0){_0x437edf=0x0;}return _0x437edf;};exports[_0x57fa('0x15')]=function(_0x544ee9){var _0xddc38a,_0x482477=null;if(_0x544ee9){_0xddc38a=_0x544ee9[_0x57fa('0x5')](',');_0x482477=_[_0x57fa('0x16')](_0xddc38a,function(_0x20eb43){if(_0x20eb43['indexOf']('-')===0x0){return[_0x20eb43==='priority'?sequelize[_0x57fa('0x17')](sequelize[_0x57fa('0x18')](_0x57fa('0x19')),_0x57fa('0x1a')):_0x20eb43['substr'](0x1),_0x57fa('0x1b')];}else{return[_0x20eb43===_0x57fa('0x19')?sequelize[_0x57fa('0x17')](sequelize[_0x57fa('0x18')](_0x57fa('0x19')),_0x57fa('0x1a')):_0x20eb43,_0x57fa('0x1c')];}});}return _0x482477;};exports[_0x57fa('0x1d')]=function(_0x535115,_0x24bbc7){if(_[_0x57fa('0x1e')](_0x535115)){return _0x535115;}if(_[_0x57fa('0x12')](_0x535115)){for(var _0x5be353=0x0;_0x5be353<_0x535115[_0x57fa('0x1f')];_0x5be353+=0x1){_0x535115[_0x5be353]=this[_0x57fa('0x1d')](_0x535115[_0x5be353],_0x24bbc7);}return _0x535115;}if(!_[_0x57fa('0x20')](_0x535115)){return _0x535115;}if(_[_0x57fa('0x21')](_0x24bbc7)){_0x24bbc7=[_0x24bbc7];}if(!_['isArray'](_0x24bbc7)){return _0x535115;}for(var _0x48dec2=0x0;_0x48dec2<_0x24bbc7['length'];_0x48dec2+=0x1){_[_0x57fa('0x22')](_0x535115,_0x24bbc7[_0x48dec2]);}for(var _0x5835f8 in _0x535115){if(_0x535115[_0x57fa('0x23')](_0x5835f8)){_0x535115[_0x5835f8]=this[_0x57fa('0x1d')](_0x535115[_0x5835f8],_0x24bbc7);}}return _0x535115;};exports['isNumeric']=function(_0xb1df02){return _0xb1df02['match'](RegExp(_0x57fa('0x24')))?!![]:![];};exports[_0x57fa('0x25')]=function(_0x5cd5a9){return _0x5cd5a9['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x57fa('0x26')]=function(_0x553903,_0x56e2d0){var _0x556d52=[];var _0x1cf37b=/[ `!@#$%^&*()_\-?~]/;var _0x35a652=_0x56e2d0?'\x22{EXPR}\x22':_0x57fa('0x27');_0x553903[_0x57fa('0x5')](/[ ,]+/)[_0x57fa('0x28')](function(_0x49c109){_0x49c109=_0x49c109['replace'](/([^:]")"+/g,'$1');_0x49c109='+'+_0x49c109+'*';var _0xa08adc=_0x49c109[_0x57fa('0x29')](_0x1cf37b);if(_0xa08adc){_0x49c109='\x22'+_0x49c109+'\x22';}_0x556d52[_0x57fa('0x2a')](_0x49c109);});_0x35a652=_0x35a652[_0x57fa('0x2b')](_0x57fa('0x27'),_0x556d52[_0x57fa('0x2c')]('\x20'));return _0x35a652;};exports[_0x57fa('0x2d')]=function(_0x21a10c,_0x4e4eee,_0x1a5792){var _0x46bd89={},_0x561b2a={};if(_0x4e4eee[_0x57fa('0x2e')][_0x57fa('0x2f')]){_0x4e4eee[_0x57fa('0x2e')]['id']=_0x4e4eee[_0x57fa('0x2e')]['$id'];delete _0x4e4eee['query'][_0x57fa('0x2f')];}_0x46bd89['model']=_['map'](_0x21a10c,_0x57fa('0x30'));_0x46bd89[_0x57fa('0x2e')]=_[_0x57fa('0x3')](_0x4e4eee[_0x57fa('0x2e')]);_0x46bd89[_0x57fa('0x6')]=_[_0x57fa('0x31')](_0x46bd89[_0x57fa('0x32')],_0x46bd89[_0x57fa('0x2e')]);_0x561b2a['attributes']=_[_0x57fa('0x31')](_0x46bd89['model'],this[_0x57fa('0x4')](_0x4e4eee[_0x57fa('0x2e')][_0x57fa('0x4')]));_0x561b2a[_0x57fa('0x33')]=_0x561b2a[_0x57fa('0x33')]['length']?_0x561b2a[_0x57fa('0x33')]:_0x46bd89['model'];if(!_0x4e4eee[_0x57fa('0x2e')][_0x57fa('0x23')](_0x57fa('0x34'))){_0x561b2a[_0x57fa('0x13')]=this[_0x57fa('0x13')](_0x4e4eee[_0x57fa('0x2e')]['limit']);_0x561b2a[_0x57fa('0x14')]=this['offset'](_0x4e4eee[_0x57fa('0x2e')][_0x57fa('0x14')]);}_0x561b2a[_0x57fa('0x35')]=this[_0x57fa('0x15')](_0x4e4eee['query'][_0x57fa('0x15')]);_0x561b2a[_0x57fa('0x36')]=this[_0x57fa('0x6')](_[_0x57fa('0x37')](_0x4e4eee['query'],_0x46bd89[_0x57fa('0x6')]),_0x21a10c);if(_0x4e4eee[_0x57fa('0x2e')][_0x57fa('0x38')]){var _0x52646c=_0x21a10c;var _0x2936d3=_0x4e4eee[_0x57fa('0x2e')]['filter'];if(typeof _0x2936d3===_0x57fa('0x39')){_0x52646c=_[_0x57fa('0x38')](_0x21a10c,function(_0x544052){return _[_0x57fa('0x3a')](_0x2936d3[_0x57fa('0x3b')],_0x544052['name']);});_0x2936d3=_0x2936d3['value'];}_0x561b2a[_0x57fa('0x36')]=_[_0x57fa('0x3c')](_0x561b2a[_0x57fa('0x36')],{'$or':_['map'](_0x52646c,function(_0x277f3a){if(_0x277f3a[_0x57fa('0x9')]!==_0x57fa('0x3d')){if(_0x1a5792){return sequelize['where'](sequelize['fn'](_0x57fa('0x3e'),sequelize[_0x57fa('0x18')](_0x277f3a['name'])),{'$like':sequelize['fn'](_0x57fa('0x3e'),'%'+_0x4e4eee[_0x57fa('0x2e')][_0x57fa('0x38')]+'%')});}else{var _0x2e6a5b={};_0x2e6a5b[_0x277f3a[_0x57fa('0x30')]]={'$like':'%'+_0x4e4eee[_0x57fa('0x2e')]['filter']+'%'};return _0x2e6a5b;}}})});}_0x561b2a=_[_0x57fa('0x3c')]({},_0x561b2a,_0x4e4eee[_0x57fa('0x3f')]);return _0x561b2a;};
\ No newline at end of file
+var _0x4c7d=['{EXPR}','join','getOptions','query','$id','intersection','attributes','model','sort','where','filter','columns','merge','VIRTUAL','lower','options','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','isEmpty','forOwn','type','isPlainObject','YYYY-MM-DD','utc','format','$lte','subtract','name','isArray','limit','offset','map','indexOf','priority','cast','col','unsigned','substr','DESC','length','omit','isObject','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','\x22{EXPR}\x22','replace','push'];(function(_0x3bc3a4,_0x12f7d6){var _0x24c54b=function(_0x1c119a){while(--_0x1c119a){_0x3bc3a4['push'](_0x3bc3a4['shift']());}};_0x24c54b(++_0x12f7d6);}(_0x4c7d,0x1e0));var _0xd4c7=function(_0x15fff9,_0x96fddd){_0x15fff9=_0x15fff9-0x0;var _0x5671b3=_0x4c7d[_0x15fff9];return _0x5671b3;};'use strict';var _=require(_0xd4c7('0x0'));var sequelize=require(_0xd4c7('0x1'));var moment=require(_0xd4c7('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x25069c){var _0x1160b8=['ne'];try{var _0x48d206=JSON[_0xd4c7('0x3')](_0x25069c);var _0x2ca6a2=Object[_0xd4c7('0x4')](_0x48d206)[0x0];return _0x1160b8[_0xd4c7('0x5')](_0x2ca6a2);}catch(_0xfb8011){return![];}}function getOperatorValue(_0x24dd83){var _0x2d2274=JSON[_0xd4c7('0x3')](_0x24dd83);var _0x293d3f=Object[_0xd4c7('0x4')](_0x2d2274)[0x0];var _0x5d81fc=_0x2d2274[_0x293d3f];return{['$'+_0x293d3f]:_0x5d81fc};}exports[_0xd4c7('0x6')]=function(_0x19cec1){var _0x160215=null;if(_0x19cec1){_0x160215=_0x19cec1[_0xd4c7('0x7')](',');}return _0x160215;};exports[_0xd4c7('0x8')]=function(_0x510404,_0x26cbbf){var _0x34a543={};if(!_[_0xd4c7('0x9')](_0x510404)){_[_0xd4c7('0xa')](_0x510404,function(_0x5e6fd9,_0x5da3e2){try{if(_0x26cbbf){var _0x188d3d=_['find'](_0x26cbbf,{'name':_0x5da3e2})||{};if(hasSequelizeOperator(_0x5e6fd9)){_0x34a543[_0x5da3e2]=getOperatorValue(_0x5e6fd9);}else if(_0x188d3d[_0xd4c7('0xb')]==='DATE'&&_[_0xd4c7('0xc')](_0x5e6fd9)){var _0x3cd688=JSON[_0xd4c7('0x3')](_0x5e6fd9);var _0x1ba9b0={'$gte':moment(moment(_0x3cd688['$gte'])['format'](_0xd4c7('0xd')))[_0xd4c7('0xe')]()[_0xd4c7('0xf')](),'$lte':moment(moment(_0x3cd688[_0xd4c7('0x10')])[_0xd4c7('0xf')](_0xd4c7('0xd')))[_0xd4c7('0xe')]()[_0xd4c7('0x11')](0x1,'s')['format']()};_0x34a543[_0x5da3e2]=_0x1ba9b0;}else if(_0x188d3d[_0xd4c7('0x12')]==='uniqueid'){_0x34a543[_0x5da3e2]=_0x5e6fd9;}else{_0x34a543[_0x5da3e2]=_[_0xd4c7('0x13')](_0x5e6fd9)?_0x5e6fd9:JSON[_0xd4c7('0x3')](_0x5e6fd9);}}else{_0x34a543[_0x5da3e2]=_['isArray'](_0x5e6fd9)?_0x5e6fd9:JSON[_0xd4c7('0x3')](_0x5e6fd9);}}catch(_0x4b22b8){_0x34a543[_0x5da3e2]=_0x5e6fd9[_0xd4c7('0x7')](',');}});}return _0x34a543;};exports[_0xd4c7('0x14')]=function(_0x607d15){_0x607d15=parseInt(_0x607d15,0xa);if(!_0x607d15||_0x607d15<0x0){_0x607d15=LIMIT_VALUE;}return _0x607d15;};exports[_0xd4c7('0x15')]=function(_0x4b193d){_0x4b193d=parseInt(_0x4b193d,0xa);if(!_0x4b193d||_0x4b193d<0x0){_0x4b193d=0x0;}return _0x4b193d;};exports['sort']=function(_0x3cb15c){var _0x28d91a,_0x3a662d=null;if(_0x3cb15c){_0x28d91a=_0x3cb15c[_0xd4c7('0x7')](',');_0x3a662d=_[_0xd4c7('0x16')](_0x28d91a,function(_0xbf0619){if(_0xbf0619[_0xd4c7('0x17')]('-')===0x0){return[_0xbf0619===_0xd4c7('0x18')?sequelize[_0xd4c7('0x19')](sequelize[_0xd4c7('0x1a')]('priority'),_0xd4c7('0x1b')):_0xbf0619[_0xd4c7('0x1c')](0x1),_0xd4c7('0x1d')];}else{return[_0xbf0619===_0xd4c7('0x18')?sequelize[_0xd4c7('0x19')](sequelize[_0xd4c7('0x1a')](_0xd4c7('0x18')),_0xd4c7('0x1b')):_0xbf0619,'ASC'];}});}return _0x3a662d;};exports['omit']=function(_0x328017,_0x2f3328){if(_[_0xd4c7('0x9')](_0x328017)){return _0x328017;}if(_[_0xd4c7('0x13')](_0x328017)){for(var _0x2984b7=0x0;_0x2984b7<_0x328017[_0xd4c7('0x1e')];_0x2984b7+=0x1){_0x328017[_0x2984b7]=this[_0xd4c7('0x1f')](_0x328017[_0x2984b7],_0x2f3328);}return _0x328017;}if(!_[_0xd4c7('0x20')](_0x328017)){return _0x328017;}if(_['isString'](_0x2f3328)){_0x2f3328=[_0x2f3328];}if(!_[_0xd4c7('0x13')](_0x2f3328)){return _0x328017;}for(var _0x42804f=0x0;_0x42804f<_0x2f3328[_0xd4c7('0x1e')];_0x42804f+=0x1){_[_0xd4c7('0x21')](_0x328017,_0x2f3328[_0x42804f]);}for(var _0x2fb692 in _0x328017){if(_0x328017[_0xd4c7('0x22')](_0x2fb692)){_0x328017[_0x2fb692]=this[_0xd4c7('0x1f')](_0x328017[_0x2fb692],_0x2f3328);}}return _0x328017;};exports['isNumeric']=function(_0x9e2b92){return _0x9e2b92[_0xd4c7('0x23')](RegExp(_0xd4c7('0x24')))?!![]:![];};exports[_0xd4c7('0x25')]=function(_0x3e491d){return _0x3e491d[_0xd4c7('0x23')](/^\S+@\S+$/)?!![]:![];};exports[_0xd4c7('0x26')]=function(_0x324786,_0x465773){var _0x347aae=[];var _0x2d2397=/[ `!@#$%^&*()_\-?~]/;var _0x3645b5=_0x465773?_0xd4c7('0x27'):'{EXPR}';_0x324786[_0xd4c7('0x7')](/[ ,]+/)['forEach'](function(_0x3e0ef4){_0x3e0ef4=_0x3e0ef4[_0xd4c7('0x28')](/([^:]")"+/g,'$1');_0x3e0ef4='+'+_0x3e0ef4+'*';var _0x571bc3=_0x3e0ef4[_0xd4c7('0x23')](_0x2d2397);if(_0x571bc3){_0x3e0ef4='\x22'+_0x3e0ef4+'\x22';}_0x347aae[_0xd4c7('0x29')](_0x3e0ef4);});_0x3645b5=_0x3645b5['replace'](_0xd4c7('0x2a'),_0x347aae[_0xd4c7('0x2b')]('\x20'));return _0x3645b5;};exports[_0xd4c7('0x2c')]=function(_0xcea389,_0xd0dff8,_0xbf699f){var _0x55285e={},_0x6a7587={};if(_0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x2e')]){_0xd0dff8['query']['id']=_0xd0dff8[_0xd4c7('0x2d')]['$id'];delete _0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x2e')];}_0x55285e['model']=_[_0xd4c7('0x16')](_0xcea389,_0xd4c7('0x12'));_0x55285e[_0xd4c7('0x2d')]=_['keys'](_0xd0dff8['query']);_0x55285e['filters']=_[_0xd4c7('0x2f')](_0x55285e['model'],_0x55285e[_0xd4c7('0x2d')]);_0x6a7587[_0xd4c7('0x30')]=_[_0xd4c7('0x2f')](_0x55285e[_0xd4c7('0x31')],this['fields'](_0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x6')]));_0x6a7587['attributes']=_0x6a7587[_0xd4c7('0x30')][_0xd4c7('0x1e')]?_0x6a7587[_0xd4c7('0x30')]:_0x55285e[_0xd4c7('0x31')];if(!_0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x22')]('nolimit')){_0x6a7587[_0xd4c7('0x14')]=this['limit'](_0xd0dff8['query'][_0xd4c7('0x14')]);_0x6a7587[_0xd4c7('0x15')]=this[_0xd4c7('0x15')](_0xd0dff8[_0xd4c7('0x2d')]['offset']);}_0x6a7587['order']=this[_0xd4c7('0x32')](_0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x32')]);_0x6a7587[_0xd4c7('0x33')]=this[_0xd4c7('0x8')](_['pick'](_0xd0dff8[_0xd4c7('0x2d')],_0x55285e[_0xd4c7('0x8')]),_0xcea389);if(_0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x34')]){var _0x42697a=_0xcea389;var _0x4cb57a=_0xd0dff8[_0xd4c7('0x2d')]['filter'];if(typeof _0x4cb57a==='object'){_0x42697a=_['filter'](_0xcea389,function(_0x112530){return _['includes'](_0x4cb57a[_0xd4c7('0x35')],_0x112530[_0xd4c7('0x12')]);});_0x4cb57a=_0x4cb57a['value'];}_0x6a7587[_0xd4c7('0x33')]=_[_0xd4c7('0x36')](_0x6a7587[_0xd4c7('0x33')],{'$or':_['map'](_0x42697a,function(_0xe479b4){if(_0xe479b4[_0xd4c7('0xb')]!==_0xd4c7('0x37')){if(_0xbf699f){return sequelize[_0xd4c7('0x33')](sequelize['fn'](_0xd4c7('0x38'),sequelize['col'](_0xe479b4['name'])),{'$like':sequelize['fn'](_0xd4c7('0x38'),'%'+_0xd0dff8[_0xd4c7('0x2d')]['filter']+'%')});}else{var _0x49605f={};_0x49605f[_0xe479b4[_0xd4c7('0x12')]]={'$like':'%'+_0xd0dff8[_0xd4c7('0x2d')][_0xd4c7('0x34')]+'%'};return _0x49605f;}}})});}_0x6a7587=_[_0xd4c7('0x36')]({},_0x6a7587,_0xd0dff8[_0xd4c7('0x39')]);return _0x6a7587;};
\ No newline at end of file
index 8abfb2d..dc8d0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d72=['whatsappPause','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','smsStatus','openchannelStatusTime','smsStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','routealias','omit','pick','filterAgentAttributes','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','voicePause','every','filter','length','idle','unknown','ringing','isNil','voiceStatus','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','isArray','startCase','Queue','map','findOne','getAgents','all','uniq','getAgentIdsByQueues','includes','busy','getAgentIdsByStatus','resolve','User','findAll','name','fullname','smsPause','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','fields','startsWith','ASC','getUpdatedSortOptions','internal','indexOf','sort','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastPauseAt'];(function(_0x1b8cb5,_0x243a01){var _0x3ab5a9=function(_0x4fe189){while(--_0x4fe189){_0x1b8cb5['push'](_0x1b8cb5['shift']());}};_0x3ab5a9(++_0x243a01);}(_0x0d72,0xc9));var _0x20d7=function(_0x4c1a0d,_0x3c9767){_0x4c1a0d=_0x4c1a0d-0x0;var _0x72a083=_0x0d72[_0x4c1a0d];return _0x72a083;};'use strict';var _=require(_0x20d7('0x0'));var jayson=require('jayson/promise');var db=require(_0x20d7('0x1'))['db'];var amiClient=jayson[_0x20d7('0x2')][_0x20d7('0x3')]({'port':0x232a});var routingClient=jayson[_0x20d7('0x2')]['http']({'port':0x232c});function isAgentPaused(_0x55d977,_0x506cd1){var _0xfaf567=[_0x55d977[_0x20d7('0x4')],_0x55d977[_0x20d7('0x5')],_0x55d977[_0x20d7('0x6')],_0x55d977[_0x20d7('0x7')],_0x55d977['smsPause'],_0x55d977[_0x20d7('0x8')],_0x55d977['whatsappPause']];if(!_0x506cd1)return _[_0x20d7('0x9')](_0xfaf567);var _0x289e7e=_[_0x20d7('0xa')](_0xfaf567);return _0x289e7e[_0x20d7('0xb')]>0x0&&_0x289e7e[_0x20d7('0xb')]<_0xfaf567[_0x20d7('0xb')]?!![]:![];}function isIdle(_0x27659b){return _0x27659b===_0x20d7('0xc')||_0x27659b===_0x20d7('0xd')||_0x27659b==='unavailable'||_0x27659b===_0x20d7('0xe')||_[_0x20d7('0xf')](_0x27659b);}function isAgentIdle(_0x16a9dc){if(_0x16a9dc[_0x20d7('0x10')]!==_0x20d7('0xc')&&_0x16a9dc[_0x20d7('0x8')]){_0x16a9dc['voiceStatus']=_0x20d7('0x11');return![];}return _[_0x20d7('0x9')]([_0x16a9dc[_0x20d7('0x12')],_0x16a9dc[_0x20d7('0x13')],_0x16a9dc[_0x20d7('0x14')],_0x16a9dc[_0x20d7('0x15')],_0x16a9dc['smsStatus'],_0x16a9dc[_0x20d7('0x10')],_0x16a9dc[_0x20d7('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x20d7('0x17')](_0x20d7('0x18'),{})[_0x20d7('0x19')](function(_0x35bf0e){if(_0x35bf0e['error']){throw new Error(_0x20d7('0x1a'));}var _0x4a7486=_0x35bf0e[_0x20d7('0x1b')];return routingClient[_0x20d7('0x17')](_0x20d7('0x18'),{})[_0x20d7('0x19')](function(_0x472d1a){if(_0x472d1a[_0x20d7('0x1c')]){throw new Error(_0x20d7('0x1d'));}var _0x364dce=_0x472d1a[_0x20d7('0x1b')];return _[_0x20d7('0x1e')]({},_0x4a7486,_0x364dce);});})[_0x20d7('0x1f')](function(_0x4b04d9){throw _0x4b04d9;});}exports[_0x20d7('0x20')]=getRealtimeAgents;function getAgentStatus(_0x4f81ed){var _0x5442c4='unknown';if(isAgentPaused(_0x4f81ed))_0x5442c4=_0x20d7('0x11');else if(isAgentPaused(_0x4f81ed,!![]))_0x5442c4=_0x20d7('0x21');else if(isAgentIdle(_0x4f81ed))_0x5442c4=_0x20d7('0xc');else _0x5442c4='busy';return _0x5442c4;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x355eb0,_0x4639ea){var _0x4e1943=_[_0x20d7('0x22')](_0x355eb0)?_0x355eb0:[_0x355eb0];var _0x22ce9b=_[_0x20d7('0x23')](_0x4639ea)+_0x20d7('0x24');var _0x6f08f5=_[_0x20d7('0x25')](_0x4e1943,function(_0x521b1d){return db[_0x22ce9b][_0x20d7('0x26')]({'where':{'id':_0x521b1d}})[_0x20d7('0x19')](function(_0x2005c2){if(!_0x2005c2)return[];return _0x2005c2[_0x20d7('0x27')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x20d7('0x28')](_0x6f08f5)[_0x20d7('0x19')](function(_0x5e32c2){var _0x310432=_(_0x5e32c2)['flatten']()['map']('id')[_0x20d7('0x29')]()['value']();return _0x310432;});}exports[_0x20d7('0x2a')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x47a7bf,_0x43a2eb,_0x15f0ef){try{if(_0x43a2eb[_0x20d7('0xb')]>0x0){_0x47a7bf=_0x47a7bf[_0x20d7('0xa')](function(_0x52e11b){return _0x43a2eb[_0x20d7('0x2b')](_0x52e11b['id']);});}var _0x508da6=_0x47a7bf['filter'](function(_0x19c9be){var _0x7af2d5=_0x20d7('0x2c');if(isAgentIdle(_0x19c9be)){_0x7af2d5=_0x20d7('0xc');}return _0x7af2d5===_0x15f0ef;});return _['map'](_0x508da6,'id');}catch(_0x209887){throw _0x209887;}}exports[_0x20d7('0x2d')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x43ea92,_0x42d0aa,_0x205f8c){return Promise[_0x20d7('0x2e')]()[_0x20d7('0x19')](function(){if(_0x42d0aa[_0x20d7('0xb')]>0x0){_0x43ea92=_0x43ea92[_0x20d7('0xa')](function(_0xc78c29){return _0x42d0aa[_0x20d7('0x2b')](_0xc78c29['id']);});}return _0x43ea92;})[_0x20d7('0x19')](function(){return db[_0x20d7('0x2f')][_0x20d7('0x30')]({'attributes':['id',_0x20d7('0x31'),_0x20d7('0x32'),_0x20d7('0x4'),_0x20d7('0x5'),_0x20d7('0x6'),_0x20d7('0x7'),_0x20d7('0x33'),'voicePause','whatsappPause',_0x20d7('0x34')],'where':{'id':{'$in':_['map'](_0x43ea92,'id')}},'raw':!![]});})[_0x20d7('0x19')](function(_0x5a3351){return _0x5a3351[_0x20d7('0x25')](function(_0x358540){var _0xdf3ccc=_[_0x20d7('0x35')](_0x43ea92,['id',_0x358540['id']]);var _0x2421a4=filterAgentAttributes(_0xdf3ccc);_['merge'](_0x358540,_0x2421a4);_0x358540[_0x20d7('0x36')]=getAgentStatus(_0x358540);return _0x358540;});})['then'](function(_0x32a772){var _0x4221cc=sortAgentsByStatus(_0x32a772,_0x205f8c);return _[_0x20d7('0x25')](_0x4221cc,'id');})[_0x20d7('0x1f')](function(_0x5c32f4){throw _0x5c32f4;});}exports[_0x20d7('0x37')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x4eb27e){var _0x22572a={'fields':[],'order':null};var _0x197f33=_0x4eb27e['split'](',');_0x22572a[_0x20d7('0x38')]=_[_0x20d7('0xa')](_0x197f33,function(_0x37ff0e){if(!_0x37ff0e['includes'](_0x20d7('0x36'))){return!![];}_0x22572a['order']=_[_0x20d7('0x39')](_0x37ff0e,'-')?'DESC':_0x20d7('0x3a');return![];});return _0x22572a;}exports[_0x20d7('0x3b')]=getUpdatedSortOptions;function validateSortParameter(_0x374fc5){if(_0x374fc5[_0x20d7('0x2b')](_0x20d7('0x32'))&&!_0x374fc5[_0x20d7('0x2b')](_0x20d7('0x3c'))){var _0x29826e=_0x374fc5['substring'](0x0,_0x374fc5[_0x20d7('0x3d')](_0x20d7('0x32')));_0x374fc5+=','+_0x29826e+'internal';}return _0x374fc5;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x58403a,_0x517fd4){var _0x3b366f=_0x58403a[_0x20d7('0x3e')](function(_0x5a9fba,_0x39fc57){if(_0x5a9fba[_0x20d7('0x36')]===_0x39fc57['globalStatus']){if(_0x5a9fba[_0x20d7('0x36')]==='pause'){if(_0x517fd4===_0x20d7('0x3f')){return(_0x5a9fba['pauseType']||'')<(_0x39fc57[_0x20d7('0x34')]||'')||_0x5a9fba[_0x20d7('0x32')][_0x20d7('0x40')]()>_0x39fc57['fullname'][_0x20d7('0x40')]()?0x1:-0x1;}else{return(_0x5a9fba[_0x20d7('0x34')]||'')<(_0x39fc57['pauseType']||'')||_0x5a9fba['fullname']['toLowerCase']()>_0x39fc57['fullname'][_0x20d7('0x40')]()?-0x1:0x1;}}else{if(_0x517fd4===_0x20d7('0x3f')){return _0x5a9fba[_0x20d7('0x32')]['toLowerCase']()<_0x39fc57[_0x20d7('0x32')][_0x20d7('0x40')]()?0x1:-0x1;}else{return _0x5a9fba[_0x20d7('0x32')][_0x20d7('0x40')]()<_0x39fc57[_0x20d7('0x32')][_0x20d7('0x40')]()?-0x1:0x1;}}}else{if(_0x517fd4==='DESC'){return _0x5a9fba[_0x20d7('0x36')]<_0x39fc57[_0x20d7('0x36')]?0x1:-0x1;}else{return _0x5a9fba[_0x20d7('0x36')]<_0x39fc57[_0x20d7('0x36')]?-0x1:0x1;}}});return _0x3b366f;}exports[_0x20d7('0x41')]=sortAgentsByStatus;function filterAgentAttributes(_0xa4011e){var _0x2c1cd0=[_0x20d7('0x42'),_0x20d7('0x43'),'lastLoginAt','lastPauseAt',_0x20d7('0x34'),_0x20d7('0x44'),_0x20d7('0x3c'),'address',_0x20d7('0x4'),_0x20d7('0x7'),_0x20d7('0x6'),_0x20d7('0x33'),_0x20d7('0x45'),_0x20d7('0x5'),'voicePause','chatCapacity',_0x20d7('0x46'),_0x20d7('0x47'),_0x20d7('0x48'),_0x20d7('0x49'),'faxCapacity',_0x20d7('0x4a'),_0x20d7('0x4b'),_0x20d7('0x4c'),_0x20d7('0x4d'),'whatsappCurrentCapacity',_0x20d7('0x4e'),'chatStatus',_0x20d7('0x15'),'mailStatus',_0x20d7('0x4f'),_0x20d7('0x16'),'faxStatus',_0x20d7('0x10'),'chatStatusTime',_0x20d7('0x50'),'mailStatusTime',_0x20d7('0x51'),'whatsappStatusTime','faxStatusTime','voiceStatusTime',_0x20d7('0x52'),_0x20d7('0x53'),_0x20d7('0x54'),_0x20d7('0x55'),'phoneBarEnableAutomaticScreenRecording',_0x20d7('0x56')];var _0xc28568=[_0x20d7('0x4'),'openchannelPause','mailPause','smsPause',_0x20d7('0x45'),'faxPause',_0x20d7('0x8'),_0x20d7('0x43')];var _0x165ede=_(_0xa4011e)[_0x20d7('0x57')](_0xc28568)[_0x20d7('0x58')](_0x2c1cd0)['value']();return _0x165ede;}exports[_0x20d7('0x59')]=filterAgentAttributes;
\ No newline at end of file
+var _0xb9d6=['chatStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','merge','catch','getRealtimeAgents','busy','getAgentStatus','startCase','Queue','map','findOne','getAgents','all','value','getAgentIdsByQueues','filter','includes','getAgentIdsByStatus','resolve','User','findAll','name','fullname','openchannelPause','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','startsWith','getUpdatedSortOptions','substring','internal','validateSortParameter','toLowerCase','DESC','userpic','online','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxStatus','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','pick','filterAgentAttributes','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','smsPause','whatsappPause','every','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','voicePause','pause'];(function(_0x3ccdf8,_0x584ceb){var _0x243dab=function(_0x1a90d1){while(--_0x1a90d1){_0x3ccdf8['push'](_0x3ccdf8['shift']());}};_0x243dab(++_0x584ceb);}(_0xb9d6,0x165));var _0x6b9d=function(_0x720057,_0x2bfc55){_0x720057=_0x720057-0x0;var _0x35924b=_0xb9d6[_0x720057];return _0x35924b;};'use strict';var _=require('lodash');var jayson=require(_0x6b9d('0x0'));var db=require(_0x6b9d('0x1'))['db'];var amiClient=jayson[_0x6b9d('0x2')][_0x6b9d('0x3')]({'port':0x232a});var routingClient=jayson[_0x6b9d('0x2')]['http']({'port':0x232c});function isAgentPaused(_0x5d9123,_0x34c105){var _0x499a56=[_0x5d9123[_0x6b9d('0x4')],_0x5d9123[_0x6b9d('0x5')],_0x5d9123[_0x6b9d('0x6')],_0x5d9123['openchannelPause'],_0x5d9123[_0x6b9d('0x7')],_0x5d9123['voicePause'],_0x5d9123[_0x6b9d('0x8')]];if(!_0x34c105)return _[_0x6b9d('0x9')](_0x499a56);var _0x29754f=_['filter'](_0x499a56);return _0x29754f['length']>0x0&&_0x29754f['length']<_0x499a56[_0x6b9d('0xa')]?!![]:![];}function isIdle(_0x14d62d){return _0x14d62d===_0x6b9d('0xb')||_0x14d62d===_0x6b9d('0xc')||_0x14d62d===_0x6b9d('0xd')||_0x14d62d===_0x6b9d('0xe')||_[_0x6b9d('0xf')](_0x14d62d);}function isAgentIdle(_0x10a5ef){if(_0x10a5ef[_0x6b9d('0x10')]!==_0x6b9d('0xb')&&_0x10a5ef[_0x6b9d('0x11')]){_0x10a5ef['voiceStatus']=_0x6b9d('0x12');return![];}return _[_0x6b9d('0x9')]([_0x10a5ef[_0x6b9d('0x13')],_0x10a5ef['faxStatus'],_0x10a5ef[_0x6b9d('0x14')],_0x10a5ef[_0x6b9d('0x15')],_0x10a5ef[_0x6b9d('0x16')],_0x10a5ef[_0x6b9d('0x10')],_0x10a5ef[_0x6b9d('0x17')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x6b9d('0x18')](_0x6b9d('0x19'),{})[_0x6b9d('0x1a')](function(_0x29765b){if(_0x29765b[_0x6b9d('0x1b')]){throw new Error(_0x6b9d('0x1c'));}var _0x19bf5e=_0x29765b['result'];return routingClient[_0x6b9d('0x18')](_0x6b9d('0x19'),{})[_0x6b9d('0x1a')](function(_0x10e4ab){if(_0x10e4ab['error']){throw new Error(_0x6b9d('0x1d'));}var _0x2ad9d3=_0x10e4ab[_0x6b9d('0x1e')];return _[_0x6b9d('0x1f')]({},_0x19bf5e,_0x2ad9d3);});})[_0x6b9d('0x20')](function(_0x2cff52){throw _0x2cff52;});}exports[_0x6b9d('0x21')]=getRealtimeAgents;function getAgentStatus(_0x1ec827){var _0x3e7ff4=_0x6b9d('0xc');if(isAgentPaused(_0x1ec827))_0x3e7ff4=_0x6b9d('0x12');else if(isAgentPaused(_0x1ec827,!![]))_0x3e7ff4='*pause';else if(isAgentIdle(_0x1ec827))_0x3e7ff4=_0x6b9d('0xb');else _0x3e7ff4=_0x6b9d('0x22');return _0x3e7ff4;}exports[_0x6b9d('0x23')]=getAgentStatus;function getAgentIdsByQueues(_0x1c1187,_0x74d9c6){var _0x1017bd=_['isArray'](_0x1c1187)?_0x1c1187:[_0x1c1187];var _0x477f69=_[_0x6b9d('0x24')](_0x74d9c6)+_0x6b9d('0x25');var _0x2a6bc7=_[_0x6b9d('0x26')](_0x1017bd,function(_0x530187){return db[_0x477f69][_0x6b9d('0x27')]({'where':{'id':_0x530187}})[_0x6b9d('0x1a')](function(_0x43eb99){if(!_0x43eb99)return[];return _0x43eb99[_0x6b9d('0x28')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x6b9d('0x29')](_0x2a6bc7)[_0x6b9d('0x1a')](function(_0x3174ac){var _0x19c504=_(_0x3174ac)['flatten']()[_0x6b9d('0x26')]('id')['uniq']()[_0x6b9d('0x2a')]();return _0x19c504;});}exports[_0x6b9d('0x2b')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x1c1bb0,_0x406752,_0x4cccfb){try{if(_0x406752['length']>0x0){_0x1c1bb0=_0x1c1bb0[_0x6b9d('0x2c')](function(_0x383d1e){return _0x406752[_0x6b9d('0x2d')](_0x383d1e['id']);});}var _0x3c23ed=_0x1c1bb0[_0x6b9d('0x2c')](function(_0x8c1364){var _0x4a4e0b=_0x6b9d('0x22');if(isAgentIdle(_0x8c1364)){_0x4a4e0b='idle';}return _0x4a4e0b===_0x4cccfb;});return _[_0x6b9d('0x26')](_0x3c23ed,'id');}catch(_0x2564c2){throw _0x2564c2;}}exports[_0x6b9d('0x2e')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x488922,_0x2264ae,_0x220903){return Promise[_0x6b9d('0x2f')]()['then'](function(){if(_0x2264ae[_0x6b9d('0xa')]>0x0){_0x488922=_0x488922['filter'](function(_0x455aad){return _0x2264ae[_0x6b9d('0x2d')](_0x455aad['id']);});}return _0x488922;})['then'](function(){return db[_0x6b9d('0x30')][_0x6b9d('0x31')]({'attributes':['id',_0x6b9d('0x32'),_0x6b9d('0x33'),'chatPause',_0x6b9d('0x5'),_0x6b9d('0x6'),_0x6b9d('0x34'),_0x6b9d('0x7'),'voicePause',_0x6b9d('0x8'),_0x6b9d('0x35')],'where':{'id':{'$in':_[_0x6b9d('0x26')](_0x488922,'id')}},'raw':!![]});})['then'](function(_0x15995d){return _0x15995d[_0x6b9d('0x26')](function(_0x6659fe){var _0x5bc3a4=_[_0x6b9d('0x36')](_0x488922,['id',_0x6659fe['id']]);var _0x4a8095=filterAgentAttributes(_0x5bc3a4);_['merge'](_0x6659fe,_0x4a8095);_0x6659fe[_0x6b9d('0x37')]=getAgentStatus(_0x6659fe);return _0x6659fe;});})[_0x6b9d('0x1a')](function(_0x5ecea5){var _0x402040=sortAgentsByStatus(_0x5ecea5,_0x220903);return _[_0x6b9d('0x26')](_0x402040,'id');})[_0x6b9d('0x20')](function(_0x5bf516){throw _0x5bf516;});}exports[_0x6b9d('0x38')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x22d92f){var _0x575aaa={'fields':[],'order':null};var _0x180d63=_0x22d92f[_0x6b9d('0x39')](',');_0x575aaa[_0x6b9d('0x3a')]=_[_0x6b9d('0x2c')](_0x180d63,function(_0x407048){if(!_0x407048['includes'](_0x6b9d('0x37'))){return!![];}_0x575aaa[_0x6b9d('0x3b')]=_[_0x6b9d('0x3c')](_0x407048,'-')?'DESC':'ASC';return![];});return _0x575aaa;}exports[_0x6b9d('0x3d')]=getUpdatedSortOptions;function validateSortParameter(_0x1b4cd1){if(_0x1b4cd1['includes'](_0x6b9d('0x33'))&&!_0x1b4cd1['includes']('internal')){var _0x514199=_0x1b4cd1[_0x6b9d('0x3e')](0x0,_0x1b4cd1['indexOf'](_0x6b9d('0x33')));_0x1b4cd1+=','+_0x514199+_0x6b9d('0x3f');}return _0x1b4cd1;}exports[_0x6b9d('0x40')]=validateSortParameter;function sortAgentsByStatus(_0x191fe2,_0x3904e7){var _0x32f0ec=_0x191fe2['sort'](function(_0xa51126,_0x33bb79){if(_0xa51126[_0x6b9d('0x37')]===_0x33bb79[_0x6b9d('0x37')]){if(_0xa51126[_0x6b9d('0x37')]===_0x6b9d('0x12')){if(_0x3904e7==='DESC'){return(_0xa51126[_0x6b9d('0x35')]||'')<(_0x33bb79[_0x6b9d('0x35')]||'')||_0xa51126['fullname'][_0x6b9d('0x41')]()>_0x33bb79[_0x6b9d('0x33')][_0x6b9d('0x41')]()?0x1:-0x1;}else{return(_0xa51126[_0x6b9d('0x35')]||'')<(_0x33bb79[_0x6b9d('0x35')]||'')||_0xa51126[_0x6b9d('0x33')][_0x6b9d('0x41')]()>_0x33bb79['fullname']['toLowerCase']()?-0x1:0x1;}}else{if(_0x3904e7===_0x6b9d('0x42')){return _0xa51126[_0x6b9d('0x33')][_0x6b9d('0x41')]()<_0x33bb79[_0x6b9d('0x33')][_0x6b9d('0x41')]()?0x1:-0x1;}else{return _0xa51126['fullname'][_0x6b9d('0x41')]()<_0x33bb79[_0x6b9d('0x33')][_0x6b9d('0x41')]()?-0x1:0x1;}}}else{if(_0x3904e7==='DESC'){return _0xa51126['globalStatus']<_0x33bb79['globalStatus']?0x1:-0x1;}else{return _0xa51126[_0x6b9d('0x37')]<_0x33bb79['globalStatus']?-0x1:0x1;}}});return _0x32f0ec;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x11c0f8){var _0x222b20=[_0x6b9d('0x43'),_0x6b9d('0x44'),'lastLoginAt',_0x6b9d('0x45'),'pauseType',_0x6b9d('0x45'),_0x6b9d('0x3f'),_0x6b9d('0x46'),_0x6b9d('0x4'),_0x6b9d('0x34'),_0x6b9d('0x6'),_0x6b9d('0x7'),'whatsappPause',_0x6b9d('0x5'),_0x6b9d('0x11'),_0x6b9d('0x47'),_0x6b9d('0x48'),_0x6b9d('0x49'),_0x6b9d('0x4a'),_0x6b9d('0x4b'),_0x6b9d('0x4c'),_0x6b9d('0x4d'),_0x6b9d('0x4e'),'mailCurrentCapacity',_0x6b9d('0x4f'),_0x6b9d('0x50'),'faxCurrentCapacity',_0x6b9d('0x13'),'openchannelStatus',_0x6b9d('0x14'),'smsStatus',_0x6b9d('0x17'),_0x6b9d('0x51'),_0x6b9d('0x10'),_0x6b9d('0x52'),'openchannelStatusTime',_0x6b9d('0x53'),_0x6b9d('0x54'),_0x6b9d('0x55'),_0x6b9d('0x56'),_0x6b9d('0x57'),'queue',_0x6b9d('0x58'),_0x6b9d('0x59'),_0x6b9d('0x5a'),_0x6b9d('0x5b'),'routealias'];var _0x5b89e5=[_0x6b9d('0x4'),'openchannelPause','mailPause',_0x6b9d('0x7'),_0x6b9d('0x8'),_0x6b9d('0x5'),_0x6b9d('0x11'),_0x6b9d('0x44')];var _0x8e817f=_(_0x11c0f8)['omit'](_0x5b89e5)[_0x6b9d('0x5c')](_0x222b20)[_0x6b9d('0x2a')]();return _0x8e817f;}exports[_0x6b9d('0x5d')]=filterAgentAttributes;
\ No newline at end of file
index 1b6307b..4f8a8d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f66=['originated','message','statusMessage','dialActive','dialMethod','Trunk','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','voice','request','Queues','then','error','result','inbound','concat','map','paused','outbound','pTalking','find','merge','pick','initializeQueues','lodash','jayson/promise','http','client','available','loggedIn','waiting','busy','loggedInDb','onHold','ringing','ringInUse','talking','unavailable','unknown'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x8f66,0x87));var _0x68f6=function(_0x5d5b69,_0x1111ab){_0x5d5b69=_0x5d5b69-0x0;var _0xf82413=_0x8f66[_0x5d5b69];return _0xf82413;};'use strict';var _=require(_0x68f6('0x0'));var jayson=require(_0x68f6('0x1'));var util=require('util');var amiClient=jayson['client'][_0x68f6('0x2')]({'port':0x232a});var routingClient=jayson[_0x68f6('0x3')][_0x68f6('0x2')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0x68f6('0x4'),_0x68f6('0x5'),'paused',_0x68f6('0x6')];var VOICE_QUEUE_ATTRIBUTES=[_0x68f6('0x7'),'inUse','invalid',_0x68f6('0x8'),'notInUse',_0x68f6('0x9'),_0x68f6('0xa'),_0x68f6('0xb'),_0x68f6('0xc'),_0x68f6('0xd'),_0x68f6('0xe')];var OUTBOUND_QUEUE_ATTRIBUTES=['pTalking',_0x68f6('0xf'),_0x68f6('0x10'),_0x68f6('0x11'),_0x68f6('0x12'),_0x68f6('0x13'),_0x68f6('0x14'),'startPredictive',_0x68f6('0x15'),_0x68f6('0x16'),_0x68f6('0x17'),_0x68f6('0x18'),_0x68f6('0x19'),_0x68f6('0x1a'),_0x68f6('0x1b'),_0x68f6('0x1c'),'predictiveIntervalAvailable',_0x68f6('0x1d'),_0x68f6('0x1e'),_0x68f6('0x1f'),'predictiveIntervalDroppedCallsCallersExit',_0x68f6('0x20'),_0x68f6('0x21')];function getRealtimeQueues(_0x11cefd,_0x5e0d97){var _0xb96c0=_0x5e0d97===_0x68f6('0x22')?amiClient:routingClient;return _0xb96c0[_0x68f6('0x23')](_['startCase'](_0x5e0d97)+_0x68f6('0x24'),_0x11cefd)[_0x68f6('0x25')](function(_0x40c75e){if(_0x40c75e[_0x68f6('0x26')])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x5e0d97));return _0x40c75e[_0x68f6('0x27')];})['catch'](function(_0x3cbcf3){throw _0x3cbcf3;});}exports['getRealtimeQueues']=getRealtimeQueues;function initializeQueues(_0x4c7349,_0x45b1cb,_0x34e622,_0x4651b1){var _0x55beab=DEFAULT_QUEUE_ATTRIBUTES;if(_0x34e622===_0x68f6('0x22')){if(_0x4651b1===_0x68f6('0x28')){_0x55beab=_0x55beab[_0x68f6('0x29')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x4651b1==='outbound'){_0x55beab=_0x55beab[_0x68f6('0x29')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x4c7349[_0x68f6('0x2a')](function(_0x49c485){var _0x1d098d=_0x49c485['get']({'plain':!![]});_0x1d098d[_0x68f6('0x2b')]=0x0;_0x1d098d[_0x68f6('0x8')]=0x0;_0x1d098d[_0x68f6('0x5')]=0x0;_0x1d098d[_0x68f6('0x4')]=0x0;_0x1d098d['waiting']=0x0;if(_0x34e622===_0x68f6('0x22')){_0x1d098d[_0x68f6('0xc')]=0x0;_0x1d098d[_0x68f6('0x7')]=0x0;if(_0x4651b1===_0x68f6('0x2c')){_0x1d098d[_0x68f6('0x2d')]=0x0;_0x1d098d[_0x68f6('0xf')]=0x0;}}var _0x3ac43d=_[_0x68f6('0x2e')](_0x45b1cb,['id',_0x1d098d['id']]);if(_0x3ac43d){_[_0x68f6('0x2f')](_0x1d098d,_[_0x68f6('0x30')](_0x3ac43d,_0x55beab));}return _0x1d098d;});}exports[_0x68f6('0x31')]=initializeQueues;
\ No newline at end of file
+var _0xabed=['dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','voice','request','startCase','Queues','error','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','getRealtimeQueues','inbound','concat','outbound','get','find','merge','pick','initializeQueues','jayson/promise','util','client','http','available','loggedIn','paused','waiting','busy','inUse','loggedInDb','notInUse','ringing','ringInUse','talking','unknown','pTalking','originated','message','dialActive','dialMethod','Trunk','startProgressive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold'];(function(_0x13647a,_0x23799f){var _0x41f50c=function(_0x45cdd6){while(--_0x45cdd6){_0x13647a['push'](_0x13647a['shift']());}};_0x41f50c(++_0x23799f);}(_0xabed,0x184));var _0xdabe=function(_0x2d9e27,_0x5965b2){_0x2d9e27=_0x2d9e27-0x0;var _0xd35381=_0xabed[_0x2d9e27];return _0xd35381;};'use strict';var _=require('lodash');var jayson=require(_0xdabe('0x0'));var util=require(_0xdabe('0x1'));var amiClient=jayson[_0xdabe('0x2')][_0xdabe('0x3')]({'port':0x232a});var routingClient=jayson[_0xdabe('0x2')][_0xdabe('0x3')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0xdabe('0x4'),_0xdabe('0x5'),_0xdabe('0x6'),_0xdabe('0x7')];var VOICE_QUEUE_ATTRIBUTES=[_0xdabe('0x8'),_0xdabe('0x9'),'invalid',_0xdabe('0xa'),_0xdabe('0xb'),'onHold',_0xdabe('0xc'),_0xdabe('0xd'),_0xdabe('0xe'),'unavailable',_0xdabe('0xf')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0xdabe('0x10'),_0xdabe('0x11'),_0xdabe('0x12'),'statusMessage',_0xdabe('0x13'),_0xdabe('0x14'),_0xdabe('0x15'),'startPredictive',_0xdabe('0x16'),_0xdabe('0x17'),_0xdabe('0x18'),'erlangAbandonmentRate',_0xdabe('0x19'),_0xdabe('0x1a'),_0xdabe('0x1b'),_0xdabe('0x1c'),_0xdabe('0x1d'),_0xdabe('0x1e'),_0xdabe('0x1f'),'predictiveIntervalDroppedCallsTimeout',_0xdabe('0x20'),_0xdabe('0x21'),_0xdabe('0x22')];function getRealtimeQueues(_0x35fbbc,_0x55a24b){var _0x4d9dd4=_0x55a24b===_0xdabe('0x23')?amiClient:routingClient;return _0x4d9dd4[_0xdabe('0x24')](_[_0xdabe('0x25')](_0x55a24b)+_0xdabe('0x26'),_0x35fbbc)['then'](function(_0x3dfc24){if(_0x3dfc24[_0xdabe('0x27')])throw new Error(util['format'](_0xdabe('0x28'),_0x55a24b));return _0x3dfc24[_0xdabe('0x29')];})[_0xdabe('0x2a')](function(_0x50276a){throw _0x50276a;});}exports[_0xdabe('0x2b')]=getRealtimeQueues;function initializeQueues(_0x104661,_0x8f802e,_0x3982d1,_0x25777e){var _0x2a5815=DEFAULT_QUEUE_ATTRIBUTES;if(_0x3982d1===_0xdabe('0x23')){if(_0x25777e===_0xdabe('0x2c')){_0x2a5815=_0x2a5815[_0xdabe('0x2d')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x25777e===_0xdabe('0x2e')){_0x2a5815=_0x2a5815[_0xdabe('0x2d')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x104661['map'](function(_0x26a6b8){var _0x2203b1=_0x26a6b8[_0xdabe('0x2f')]({'plain':!![]});_0x2203b1[_0xdabe('0x6')]=0x0;_0x2203b1[_0xdabe('0xa')]=0x0;_0x2203b1[_0xdabe('0x5')]=0x0;_0x2203b1['available']=0x0;_0x2203b1[_0xdabe('0x7')]=0x0;if(_0x3982d1===_0xdabe('0x23')){_0x2203b1[_0xdabe('0xe')]=0x0;_0x2203b1[_0xdabe('0x8')]=0x0;if(_0x25777e==='outbound'){_0x2203b1[_0xdabe('0x10')]=0x0;_0x2203b1['originated']=0x0;}}var _0x31a197=_[_0xdabe('0x30')](_0x8f802e,['id',_0x2203b1['id']]);if(_0x31a197){_[_0xdabe('0x31')](_0x2203b1,_[_0xdabe('0x32')](_0x31a197,_0x2a5815));}return _0x2203b1;});}exports[_0xdabe('0x33')]=initializeQueues;
\ No newline at end of file
index 57673f5..1a95150 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(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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 _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(_0x20d6f0,_0x33e54c){var _0x105ceb=function(_0x4927e9){while(--_0x4927e9){_0x20d6f0['push'](_0x20d6f0['shift']());}};_0x105ceb(++_0x33e54c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
index 7782acd..154edbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe82f=['map','model','join','createHash','md5','digest','getUuid','platform','licenseToken','test','win32','replace','hostname','macAddress','ipAddress','update','hex','substring','crypto','bimedia-machine-uuid','../environment','networkInterfaces','orderBy','keys','length','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface'];(function(_0x1c5d5a,_0x22342b){var _0x2fef5b=function(_0x3fea8c){while(--_0x3fea8c){_0x1c5d5a['push'](_0x1c5d5a['shift']());}};_0x2fef5b(++_0x22342b);}(_0xe82f,0xc1));var _0xfe82=function(_0x3c2ba0,_0x519285){_0x3c2ba0=_0x3c2ba0-0x0;var _0x3936f1=_0xe82f[_0x3c2ba0];return _0x3936f1;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0xfe82('0x0'));var machine=require(_0xfe82('0x1'));var exec=require('child_process')['execSync'];var config=require(_0xfe82('0x2'));function getInterfaces(){var _0x2450f9=[];var _0x3fe387=os[_0xfe82('0x3')]();var _0x598ca0=_[_0xfe82('0x4')](_[_0xfe82('0x5')](_0x3fe387));for(var _0x515abc=0x0;_0x515abc<_0x598ca0[_0xfe82('0x6')];_0x515abc++){var _0x41aba7=_0x3fe387[_0x598ca0[_0x515abc]]['filter'](function(_0x4d1460){return _0x4d1460[_0xfe82('0x7')]===_0xfe82('0x8')&&_0x4d1460[_0xfe82('0x9')]===![];});_0x2450f9=_0x2450f9[_0xfe82('0xa')](_0x41aba7);}return _0x2450f9;}function getFirstInterface(){var _0x3e48ac=_[_0xfe82('0xb')](getInterfaces());return{'macAddress':_0x3e48ac&&_0x3e48ac[_0xfe82('0xc')]?_0x3e48ac[_0xfe82('0xc')]:_0xfe82('0xd'),'ipAddress':_0x3e48ac&&_0x3e48ac[_0xfe82('0xe')]?_0x3e48ac['address']:_0xfe82('0xf')};}exports[_0xfe82('0x10')]=getFirstInterface;function getCPUhash(){var _0x305f76=_['orderBy'](os['cpus']()[_0xfe82('0x11')](function(_0xeb1e12){return _0xeb1e12[_0xfe82('0x12')];}))[_0xfe82('0x13')](':');return crypto[_0xfe82('0x14')](_0xfe82('0x15'))['update'](_0x305f76)[_0xfe82('0x16')]('hex');}exports[_0xfe82('0x17')]=function(){var _0xc3ea4c=os[_0xfe82('0x18')]();var _0x53d2fd=/[0-9a-f-]{36}/;if(config[_0xfe82('0x19')]&&_0x53d2fd[_0xfe82('0x1a')](config[_0xfe82('0x19')])){return config['licenseToken'];}else if(_0xc3ea4c===_0xfe82('0x1b')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':'utf8'})[_0xfe82('0x1c')]('\x0d\x0a','');}else{var _0x1dd508=getFirstInterface();var _0x554673=getCPUhash();var _0x5e407d=_0x554673+'|'+os[_0xfe82('0x1d')]()+'|'+_0x1dd508[_0xfe82('0x1e')]+'|'+_0x1dd508[_0xfe82('0x1f')];var _0x39386e=crypto[_0xfe82('0x14')](_0xfe82('0x15'))[_0xfe82('0x20')](_0x5e407d)[_0xfe82('0x16')](_0xfe82('0x21'));return _0x39386e['substring'](0x0,0x8)+'-'+_0x39386e[_0xfe82('0x22')](0x8,0xc)+'-'+_0x39386e['substring'](0xc,0x10)+'-'+_0x39386e[_0xfe82('0x22')](0x10,0x14)+'-'+_0x39386e['substring'](0x14);}};
\ No newline at end of file
+var _0x34a0=['hex','substring','crypto','bimedia-machine-uuid','child_process','execSync','../environment','keys','length','filter','IPv4','concat','head','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','createHash','md5','update','digest','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','ipAddress'];(function(_0x12a819,_0x495b8a){var _0x1f86c1=function(_0x4a8f93){while(--_0x4a8f93){_0x12a819['push'](_0x12a819['shift']());}};_0x1f86c1(++_0x495b8a);}(_0x34a0,0x14c));var _0x034a=function(_0x1dee20,_0x5159df){_0x1dee20=_0x1dee20-0x0;var _0x5337f3=_0x34a0[_0x1dee20];return _0x5337f3;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x034a('0x0'));var machine=require(_0x034a('0x1'));var exec=require(_0x034a('0x2'))[_0x034a('0x3')];var config=require(_0x034a('0x4'));function getInterfaces(){var _0x45f59b=[];var _0x2d96a9=os['networkInterfaces']();var _0x5aea9c=_['orderBy'](_[_0x034a('0x5')](_0x2d96a9));for(var _0xf2b5ad=0x0;_0xf2b5ad<_0x5aea9c[_0x034a('0x6')];_0xf2b5ad++){var _0x42d5d4=_0x2d96a9[_0x5aea9c[_0xf2b5ad]][_0x034a('0x7')](function(_0x4d0b92){return _0x4d0b92['family']===_0x034a('0x8')&&_0x4d0b92['internal']===![];});_0x45f59b=_0x45f59b[_0x034a('0x9')](_0x42d5d4);}return _0x45f59b;}function getFirstInterface(){var _0x5b8fa4=_[_0x034a('0xa')](getInterfaces());return{'macAddress':_0x5b8fa4&&_0x5b8fa4['mac']?_0x5b8fa4['mac']:_0x034a('0xb'),'ipAddress':_0x5b8fa4&&_0x5b8fa4[_0x034a('0xc')]?_0x5b8fa4['address']:_0x034a('0xd')};}exports[_0x034a('0xe')]=getFirstInterface;function getCPUhash(){var _0x5dec2e=_[_0x034a('0xf')](os[_0x034a('0x10')]()['map'](function(_0x2f4b2a){return _0x2f4b2a['model'];}))['join'](':');return crypto[_0x034a('0x11')](_0x034a('0x12'))[_0x034a('0x13')](_0x5dec2e)[_0x034a('0x14')]('hex');}exports['getUuid']=function(){var _0x12e3f6=os[_0x034a('0x15')]();var _0x3b4c1d=/[0-9a-f-]{36}/;if(config[_0x034a('0x16')]&&_0x3b4c1d[_0x034a('0x17')](config[_0x034a('0x16')])){return config['licenseToken'];}else if(_0x12e3f6==='win32'){return exec(_0x034a('0x18'),{'encoding':_0x034a('0x19')})[_0x034a('0x1a')]('\x0d\x0a','');}else{var _0x30ac3d=getFirstInterface();var _0x165403=getCPUhash();var _0x164dec=_0x165403+'|'+os['hostname']()+'|'+_0x30ac3d['macAddress']+'|'+_0x30ac3d[_0x034a('0x1b')];var _0x278d97=crypto[_0x034a('0x11')](_0x034a('0x12'))[_0x034a('0x13')](_0x164dec)[_0x034a('0x14')](_0x034a('0x1c'));return _0x278d97[_0x034a('0x1d')](0x0,0x8)+'-'+_0x278d97[_0x034a('0x1d')](0x8,0xc)+'-'+_0x278d97[_0x034a('0x1d')](0xc,0x10)+'-'+_0x278d97['substring'](0x10,0x14)+'-'+_0x278d97[_0x034a('0x1d')](0x14);}};
\ No newline at end of file
index 6d80435..a9a21cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x600c=['default','util','moment','request-promise','bluebird','version','../../mysqldb','../../components/encryptor','./hardware','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','then','catch','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error'];(function(_0xdb576,_0x13705e){var _0x98a94b=function(_0x4c1533){while(--_0x4c1533){_0xdb576['push'](_0xdb576['shift']());}};_0x98a94b(++_0x13705e);}(_0x600c,0x1c4));var _0xc600=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x600c[_0x4d613c];return _0x301fe3;};'use strict';var util=require(_0xc600('0x0'));var moment=require(_0xc600('0x1'));var rp=require(_0xc600('0x2'));var BPromise=require(_0xc600('0x3'));var pkginfo=require('pkginfo')(module,_0xc600('0x4'));var db=require(_0xc600('0x5'))['db'];var encryptor=require(_0xc600('0x6'));var hardware=require(_0xc600('0x7'));var logger=require('../logger')(_0xc600('0x8'));var HOST=_0xc600('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1dbc24){return new BPromise(function(_0x30825e,_0x5515fb){var _0x14090e=util[_0xc600('0xa')](_0xc600('0xb'),HOST,_0x1dbc24,module[_0xc600('0xc')][_0xc600('0x4')]);if(oldToken){_0x14090e=util[_0xc600('0xa')](_0xc600('0xd'),HOST,_0x1dbc24,module[_0xc600('0xc')][_0xc600('0x4')],oldToken);}var _0x581c29={'uri':_0x14090e,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x581c29)[_0xc600('0xe')](function(_0x7f35c4){_0x30825e(_0x7f35c4);})[_0xc600('0xf')](function(_0x46cc34){_0x5515fb(_0x46cc34);});});}function manageLicense(_0xa53dad,_0x2648ac){var _0x3b8d95=_0x2648ac[_0xc600('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x3b8d95[_0xc600('0x11')]!==_0xa53dad&&!_0x3b8d95[_0xc600('0x12')]){oldToken=_0x3b8d95[_0xc600('0x11')];}httpRequest(_0xa53dad)['then'](function(_0x29163c){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x29163c[_0xc600('0x13')]){isOldTokenSent=![];if(!_0x3b8d95[_0xc600('0x8')]&&_0x3b8d95[_0xc600('0x8')]!=_0x29163c[_0xc600('0x8')]||_0x3b8d95[_0xc600('0x8')]&&_0x3b8d95['data2']){logger[_0xc600('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x3b8d95['license']&&!_0x3b8d95[_0xc600('0x12')]&&_0x3b8d95[_0xc600('0x8')]!=_0x29163c[_0xc600('0x8')]){logger[_0xc600('0x14')](_0xc600('0x15'));}if(_0x3b8d95['license']&&!_0x3b8d95[_0xc600('0x12')]&&_0x3b8d95[_0xc600('0x8')]==_0x29163c[_0xc600('0x8')]){return _0x2648ac;}return _0x2648ac['update']({'data1':_0xa53dad,'data2':null,'license':_0x29163c[_0xc600('0x8')]});}else{if(_0x29163c[_0xc600('0x8')]||_0x3b8d95['license']){if(!_0x3b8d95[_0xc600('0x12')]){if(_0x3b8d95['data1']==_0xa53dad){GRAY_PERIOD_REASON=_0xc600('0x16');logger['info'](_0xc600('0x17'));}else{GRAY_PERIOD_REASON='Changed';logger['info'](_0xc600('0x18'),_0x3b8d95[_0xc600('0x11')],_0xa53dad);}logger[_0xc600('0x14')](_0xc600('0x19'),GRAY_PERIOD_REASON[_0xc600('0x1a')](),moment()[_0xc600('0xa')](_0xc600('0x1b')));return _0x2648ac[_0xc600('0x1c')]({'data2':encryptor[_0xc600('0x1d')](moment()[_0xc600('0xa')](_0xc600('0x1b')))});}else{if(moment()[_0xc600('0x1e')](encryptor[_0xc600('0x1f')](_0x3b8d95[_0xc600('0x12')]),'days')>DAYS){logger['info'](_0xc600('0x20'),moment()[_0xc600('0xa')](_0xc600('0x1b')));isOldTokenSent=![];return _0x2648ac[_0xc600('0x1c')]({'data1':_0xa53dad,'data2':null,'license':null});}}}else{if(_0x3b8d95[_0xc600('0x11')]!=_0xa53dad){logger['info'](_0xc600('0x18'),_0x3b8d95[_0xc600('0x11')],_0xa53dad);return _0x2648ac[_0xc600('0x1c')]({'data1':_0xa53dad,'data2':null,'license':null});}}}return _0x2648ac;})['then'](function(_0x1ad818){_0x2648ac=_0x1ad818;})[_0xc600('0xf')](function(_0x34dd4e){logger['error'](_0x34dd4e[_0xc600('0x21')]);})[_0xc600('0x22')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x2648ac);},TIME);});}function defaultLicense(){var _0x14fa8b=hardware[_0xc600('0x23')]();if(_0x14fa8b){return db['License'][_0xc600('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x14fa8b}})[_0xc600('0x25')](function(_0xddd5ba,_0x19163b){logger[_0xc600('0x14')](_0xc600('0x26'),_0x14fa8b);manageLicense(_0x14fa8b,_0xddd5ba);})[_0xc600('0xf')](function(_0xcf5363){logger[_0xc600('0x27')](_0xcf5363['message']);});}}exports[_0xc600('0x28')]=defaultLicense;
\ No newline at end of file
+var _0x3f26=['request-promise','bluebird','pkginfo','version','../../mysqldb','./hardware','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','active','license','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util'];(function(_0x4615ff,_0x576894){var _0x1002ed=function(_0xcba2e4){while(--_0xcba2e4){_0x4615ff['push'](_0x4615ff['shift']());}};_0x1002ed(++_0x576894);}(_0x3f26,0xef));var _0x63f2=function(_0x561da8,_0x240d28){_0x561da8=_0x561da8-0x0;var _0xd4e633=_0x3f26[_0x561da8];return _0xd4e633;};'use strict';var util=require(_0x63f2('0x0'));var moment=require('moment');var rp=require(_0x63f2('0x1'));var BPromise=require(_0x63f2('0x2'));var pkginfo=require(_0x63f2('0x3'))(module,_0x63f2('0x4'));var db=require(_0x63f2('0x5'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x63f2('0x6'));var logger=require('../logger')('license');var HOST=_0x63f2('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0xe6fc8a){return new BPromise(function(_0x114f36,_0x49d25a){var _0x42243f=util[_0x63f2('0x8')](_0x63f2('0x9'),HOST,_0xe6fc8a,module[_0x63f2('0xa')][_0x63f2('0x4')]);if(oldToken){_0x42243f=util['format'](_0x63f2('0xb'),HOST,_0xe6fc8a,module['exports']['version'],oldToken);}var _0x43815a={'uri':_0x42243f,'method':_0x63f2('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x43815a)[_0x63f2('0xd')](function(_0x51ef45){_0x114f36(_0x51ef45);})[_0x63f2('0xe')](function(_0x27a36f){_0x49d25a(_0x27a36f);});});}function manageLicense(_0x5adef5,_0x51618d){var _0x1e3a25=_0x51618d[_0x63f2('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x1e3a25[_0x63f2('0x10')]!==_0x5adef5&&!_0x1e3a25['data2']){oldToken=_0x1e3a25[_0x63f2('0x10')];}httpRequest(_0x5adef5)['then'](function(_0x156d38){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x156d38[_0x63f2('0x11')]){isOldTokenSent=![];if(!_0x1e3a25[_0x63f2('0x12')]&&_0x1e3a25[_0x63f2('0x12')]!=_0x156d38[_0x63f2('0x12')]||_0x1e3a25[_0x63f2('0x12')]&&_0x1e3a25[_0x63f2('0x13')]){logger[_0x63f2('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x1e3a25[_0x63f2('0x12')]&&!_0x1e3a25[_0x63f2('0x13')]&&_0x1e3a25[_0x63f2('0x12')]!=_0x156d38[_0x63f2('0x12')]){logger[_0x63f2('0x14')](_0x63f2('0x15'));}if(_0x1e3a25[_0x63f2('0x12')]&&!_0x1e3a25[_0x63f2('0x13')]&&_0x1e3a25[_0x63f2('0x12')]==_0x156d38['license']){return _0x51618d;}return _0x51618d[_0x63f2('0x16')]({'data1':_0x5adef5,'data2':null,'license':_0x156d38[_0x63f2('0x12')]});}else{if(_0x156d38[_0x63f2('0x12')]||_0x1e3a25[_0x63f2('0x12')]){if(!_0x1e3a25['data2']){if(_0x1e3a25[_0x63f2('0x10')]==_0x5adef5){GRAY_PERIOD_REASON=_0x63f2('0x17');logger[_0x63f2('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON='Changed';logger[_0x63f2('0x14')](_0x63f2('0x18'),_0x1e3a25['data1'],_0x5adef5);}logger[_0x63f2('0x14')](_0x63f2('0x19'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x63f2('0x8')](_0x63f2('0x1a')));return _0x51618d[_0x63f2('0x16')]({'data2':encryptor[_0x63f2('0x1b')](moment()[_0x63f2('0x8')](_0x63f2('0x1a')))});}else{if(moment()[_0x63f2('0x1c')](encryptor[_0x63f2('0x1d')](_0x1e3a25[_0x63f2('0x13')]),'days')>DAYS){logger[_0x63f2('0x14')](_0x63f2('0x1e'),moment()[_0x63f2('0x8')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x51618d[_0x63f2('0x16')]({'data1':_0x5adef5,'data2':null,'license':null});}}}else{if(_0x1e3a25['data1']!=_0x5adef5){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1e3a25[_0x63f2('0x10')],_0x5adef5);return _0x51618d[_0x63f2('0x16')]({'data1':_0x5adef5,'data2':null,'license':null});}}}return _0x51618d;})[_0x63f2('0xd')](function(_0x5c4727){_0x51618d=_0x5c4727;})[_0x63f2('0xe')](function(_0x3f7665){logger[_0x63f2('0x1f')](_0x3f7665[_0x63f2('0x20')]);})[_0x63f2('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x63f2('0x22')](),_0x51618d);},TIME);});}function defaultLicense(){var _0x9ae53e=hardware[_0x63f2('0x22')]();if(_0x9ae53e){return db[_0x63f2('0x23')][_0x63f2('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x9ae53e}})[_0x63f2('0x25')](function(_0x3315a7,_0x4bf216){logger[_0x63f2('0x14')](_0x63f2('0x26'),_0x9ae53e);manageLicense(_0x9ae53e,_0x3315a7);})[_0x63f2('0xe')](function(_0x5c2685){logger[_0x63f2('0x1f')](_0x5c2685[_0x63f2('0x20')]);});}}exports[_0x63f2('0x27')]=defaultLicense;
\ No newline at end of file
index cb9c0c3..d093540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03f6=['decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','grayReason','changed','disabled','message','User','findAll','role','COUNT','sequelize','col','count','admin','forEach','user','pick','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','defaults','then','catch','uuid','data1','license','License\x20key\x20value\x20not\x20found','data2','split'];(function(_0x1bb7c5,_0x4b3e9b){var _0x56f265=function(_0x44f4c3){while(--_0x44f4c3){_0x1bb7c5['push'](_0x1bb7c5['shift']());}};_0x56f265(++_0x4b3e9b);}(_0x03f6,0xad));var _0x603f=function(_0x37674f,_0x4afe62){_0x37674f=_0x37674f-0x0;var _0x1c604c=_0x03f6[_0x37674f];return _0x1c604c;};'use strict';var util=require(_0x603f('0x0'));var _=require('lodash');var moment=require(_0x603f('0x1'));var BPromise=require(_0x603f('0x2'));var hardware=require(_0x603f('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0x603f('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x603f('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x603f('0x6'),'machineUuid':hardware[_0x603f('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x603f('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x603f('0x8'),'machineUuid':hardware[_0x603f('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x39ed1f){return new BPromise(function(_0xcc5f56,_0x42b682){return db[_0x603f('0x9')]['find'](_[_0x603f('0xa')](_0x39ed1f,{'raw':!![],'where':{'id':0x1}}))[_0x603f('0xb')](function(_0x3ea651){return checkLicense(_0x3ea651,null);})[_0x603f('0xb')](function(_0x35e3a4){_0xcc5f56(_0x35e3a4);return;})[_0x603f('0xc')](function(_0x43cda8){_0x42b682(_0x43cda8);});});}function checkLicense(_0x397685,_0x5d272f){if(!_0x397685){demoLicense[_0x603f('0xd')]=_0x397685[_0x603f('0xe')];return demoLicense;}try{var _0x5647b9=_0x5d272f||_0x397685[_0x603f('0xf')];if(_['isEmpty'](_0x5647b9)){throw new Error(_0x603f('0x10'));}var _0x4c81b1=_0x397685[_0x603f('0xe')];var _0x2f6107=_0x397685[_0x603f('0x11')];var _0x51aeab=_0x4c81b1[_0x603f('0x12')]('-')[0x4];var _0x1fc84b=_0x4c81b1['split']('-')[0x0];var _0x582a48=encryptor[_0x603f('0x13')](_0x5647b9,util[_0x603f('0x14')](_0x603f('0x15'),_0x51aeab,_0x4c81b1,_0x1fc84b));var _0x3eacbf=JSON[_0x603f('0x16')](_0x582a48);_0x3eacbf[_0x603f('0x17')]=![];_0x3eacbf[_0x603f('0xd')]=_0x4c81b1;_0x3eacbf[_0x603f('0x18')]=hardware[_0x603f('0x7')]();if(_0x2f6107){var _0x113c0a=encryptor[_0x603f('0x13')](_0x2f6107);_0x3eacbf[_0x603f('0x19')]=_0x113c0a;_0x3eacbf[_0x603f('0x1a')]=moment(_0x113c0a)[_0x603f('0x1b')](0x7,_0x603f('0x1c'))['format']();_0x3eacbf[_0x603f('0x1d')]=_0x3eacbf['uuid']!=_0x3eacbf['machineUuid']?_0x603f('0x1e'):_0x603f('0x1f');}return _0x3eacbf;}catch(_0x2d8f98){breakingLicense[_0x603f('0xd')]=_0x397685[_0x603f('0xe')];breakingLicense[_0x603f('0x20')]=_0x2d8f98['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3887dd,_0x47066f){getLicense()[_0x603f('0xb')](function(_0x1a6519){return db[_0x603f('0x21')][_0x603f('0x22')]({'attributes':[_0x603f('0x23'),[db['sequelize']['fn'](_0x603f('0x24'),db[_0x603f('0x25')][_0x603f('0x26')]('role')),_0x603f('0x27')]],'group':'role','where':{'role':{'$or':[_0x603f('0x28'),'user','telephone']}},'raw':!![]})[_0x603f('0xb')](function(_0x19e201){var _0x46d19d={'user':_0x1a6519['users']||0x0,'telephone':_0x1a6519['telephones']||0x0};_0x19e201[_0x603f('0x29')](function(_0x4faf56){var _0x1915a0=_0x4faf56[_0x603f('0x23')]===_0x603f('0x28')?_0x603f('0x2a'):_0x4faf56[_0x603f('0x23')];_0x46d19d[_0x1915a0]-=_0x4faf56[_0x603f('0x27')];if(_0x46d19d[_0x1915a0]<0x0)_0x46d19d[_0x1915a0]=0x0;});_0x3887dd(_0x46d19d);return;});})[_0x603f('0xc')](function(_0x2d7568){_0x47066f(_0x2d7568);});});}function checkUserLimits(_0x1cfeaa){return new BPromise(function(_0x50a6e0,_0x1aee4f){getLimits()[_0x603f('0xb')](function(_0x2db7a5){var _0x34efe3=_[_0x603f('0x2b')](_['countBy'](_0x1cfeaa,'role'),[_0x603f('0x28'),_0x603f('0x2a'),_0x603f('0x2c')]);var _0x472d4f=(_0x34efe3[_0x603f('0x28')]||0x0)+(_0x34efe3['user']||0x0);var _0x30f660=_0x34efe3[_0x603f('0x2c')]||0x0;if(_0x472d4f>_0x2db7a5[_0x603f('0x2a')])return _0x1aee4f(_0x603f('0x2d'));if(_0x30f660>_0x2db7a5[_0x603f('0x2c')])return _0x1aee4f(_0x603f('0x2e'));return _0x50a6e0();})['catch'](function(_0x5b661a){_0x1aee4f(_0x5b661a);});});}module[_0x603f('0x2f')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x1933=['License\x20key\x20value\x20not\x20found','data2','decryptString','format','%s:%s:%s','parse','deadline','days','grayReason','machineUuid','changed','disabled','message','User','findAll','role','COUNT','sequelize','col','admin','user','telephone','users','telephones','count','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','isEmpty'];(function(_0x46381e,_0x50c418){var _0x485ee6=function(_0x13a07e){while(--_0x13a07e){_0x46381e['push'](_0x46381e['shift']());}};_0x485ee6(++_0x50c418);}(_0x1933,0x7c));var _0x3193=function(_0x32bd62,_0x4af6fa){_0x32bd62=_0x32bd62-0x0;var _0x2841d1=_0x1933[_0x32bd62];return _0x2841d1;};'use strict';var util=require('util');var _=require(_0x3193('0x0'));var moment=require(_0x3193('0x1'));var BPromise=require(_0x3193('0x2'));var hardware=require(_0x3193('0x3'));var encryptor=require(_0x3193('0x4'));var db=require(_0x3193('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x3193('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x3193('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x3193('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x3193('0x8'),'machineUuid':hardware[_0x3193('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x26f98a){return new BPromise(function(_0x2721fd,_0x52a003){return db[_0x3193('0x9')][_0x3193('0xa')](_[_0x3193('0xb')](_0x26f98a,{'raw':!![],'where':{'id':0x1}}))[_0x3193('0xc')](function(_0x31a6aa){return checkLicense(_0x31a6aa,null);})[_0x3193('0xc')](function(_0x5a4956){_0x2721fd(_0x5a4956);return;})[_0x3193('0xd')](function(_0x4d626b){_0x52a003(_0x4d626b);});});}function checkLicense(_0x59a278,_0x5cbd0a){if(!_0x59a278){demoLicense[_0x3193('0xe')]=_0x59a278[_0x3193('0xf')];return demoLicense;}try{var _0x58339a=_0x5cbd0a||_0x59a278['license'];if(_[_0x3193('0x10')](_0x58339a)){throw new Error(_0x3193('0x11'));}var _0x5e85e3=_0x59a278[_0x3193('0xf')];var _0x7c4d97=_0x59a278[_0x3193('0x12')];var _0x2e26f5=_0x5e85e3['split']('-')[0x4];var _0x26bb9b=_0x5e85e3['split']('-')[0x0];var _0x6cda84=encryptor[_0x3193('0x13')](_0x58339a,util[_0x3193('0x14')](_0x3193('0x15'),_0x2e26f5,_0x5e85e3,_0x26bb9b));var _0x47bbea=JSON[_0x3193('0x16')](_0x6cda84);_0x47bbea['demo']=![];_0x47bbea[_0x3193('0xe')]=_0x5e85e3;_0x47bbea['machineUuid']=hardware[_0x3193('0x7')]();if(_0x7c4d97){var _0x1adc9a=encryptor[_0x3193('0x13')](_0x7c4d97);_0x47bbea['gray']=_0x1adc9a;_0x47bbea[_0x3193('0x17')]=moment(_0x1adc9a)['add'](0x7,_0x3193('0x18'))[_0x3193('0x14')]();_0x47bbea[_0x3193('0x19')]=_0x47bbea[_0x3193('0xe')]!=_0x47bbea[_0x3193('0x1a')]?_0x3193('0x1b'):_0x3193('0x1c');}return _0x47bbea;}catch(_0x4bf29a){breakingLicense[_0x3193('0xe')]=_0x59a278[_0x3193('0xf')];breakingLicense[_0x3193('0x1d')]=_0x4bf29a[_0x3193('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3df35a,_0x113c23){getLicense()['then'](function(_0x17b021){return db[_0x3193('0x1e')][_0x3193('0x1f')]({'attributes':[_0x3193('0x20'),[db['sequelize']['fn'](_0x3193('0x21'),db[_0x3193('0x22')][_0x3193('0x23')](_0x3193('0x20'))),'count']],'group':_0x3193('0x20'),'where':{'role':{'$or':[_0x3193('0x24'),_0x3193('0x25'),_0x3193('0x26')]}},'raw':!![]})[_0x3193('0xc')](function(_0x13aac1){var _0x3f6b88={'user':_0x17b021[_0x3193('0x27')]||0x0,'telephone':_0x17b021[_0x3193('0x28')]||0x0};_0x13aac1['forEach'](function(_0x3f500c){var _0x36bfac=_0x3f500c['role']===_0x3193('0x24')?_0x3193('0x25'):_0x3f500c['role'];_0x3f6b88[_0x36bfac]-=_0x3f500c[_0x3193('0x29')];if(_0x3f6b88[_0x36bfac]<0x0)_0x3f6b88[_0x36bfac]=0x0;});_0x3df35a(_0x3f6b88);return;});})[_0x3193('0xd')](function(_0x336374){_0x113c23(_0x336374);});});}function checkUserLimits(_0x1d5a60){return new BPromise(function(_0x5bf0f4,_0x2f81b2){getLimits()[_0x3193('0xc')](function(_0x406ffe){var _0x5b1893=_[_0x3193('0x2a')](_[_0x3193('0x2b')](_0x1d5a60,_0x3193('0x20')),[_0x3193('0x24'),_0x3193('0x25'),'telephone']);var _0x5eda88=(_0x5b1893[_0x3193('0x24')]||0x0)+(_0x5b1893[_0x3193('0x25')]||0x0);var _0x4b503d=_0x5b1893[_0x3193('0x26')]||0x0;if(_0x5eda88>_0x406ffe['user'])return _0x2f81b2(_0x3193('0x2c'));if(_0x4b503d>_0x406ffe[_0x3193('0x26')])return _0x2f81b2(_0x3193('0x2d'));return _0x5bf0f4();})['catch'](function(_0x37ebca){_0x2f81b2(_0x37ebca);});});}module[_0x3193('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 1846674..a730b1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['app-id','secret','exports','http://localhost:9000','myappanuglar-secret'];(function(_0x47619a,_0x34571c){var _0x8b3580=function(_0x21a705){while(--_0x21a705){_0x47619a['push'](_0x47619a['shift']());}};_0x8b3580(++_0x34571c);}(_0x77e6,0x1a6));var _0x677e=function(_0x47ca8f,_0x44f61e){_0x47ca8f=_0x47ca8f-0x0;var _0x321f00=_0x77e6[_0x47ca8f];return _0x321f00;};'use strict';module[_0x677e('0x0')]={'DOMAIN':_0x677e('0x1'),'SESSION_SECRET':_0x677e('0x2'),'GOOGLE_ID':_0x677e('0x3'),'GOOGLE_SECRET':_0x677e('0x4'),'DEBUG':''};
\ No newline at end of file
+var _0x57ca=['http://localhost:9000','myappanuglar-secret','secret'];(function(_0x5d23be,_0x3b4f3c){var _0x4d60a9=function(_0x57dce7){while(--_0x57dce7){_0x5d23be['push'](_0x5d23be['shift']());}};_0x4d60a9(++_0x3b4f3c);}(_0x57ca,0x108));var _0xa57c=function(_0x35311e,_0x9ff7d9){_0x35311e=_0x35311e-0x0;var _0x4d1881=_0x57ca[_0x35311e];return _0x4d1881;};'use strict';module['exports']={'DOMAIN':_0xa57c('0x0'),'SESSION_SECRET':_0xa57c('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xa57c('0x2'),'DEBUG':''};
\ No newline at end of file
index cb57054..ddf872d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7709=['../utils/loggers'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7709,0x7a));var _0x9770=function(_0x6cd927,_0x1910c0){_0x6cd927=_0x6cd927-0x0;var _0x5baf61=_0x7709[_0x6cd927];return _0x5baf61;};'use strict';var fileLogger=require(_0x9770('0x0'))['fileLogger'];module['exports']=fileLogger;
\ No newline at end of file
+var _0x27af=['fileLogger','exports'];(function(_0x256684,_0x529c1e){var _0x37a0c9=function(_0x4b431b){while(--_0x4b431b){_0x256684['push'](_0x256684['shift']());}};_0x37a0c9(++_0x529c1e);}(_0x27af,0x10a));var _0xf27a=function(_0x54d7fe,_0x1b2848){_0x54d7fe=_0x54d7fe-0x0;var _0x55781e=_0x27af[_0x54d7fe];return _0x55781e;};'use strict';var fileLogger=require('../utils/loggers')[_0xf27a('0x0')];module[_0xf27a('0x1')]=fileLogger;
\ No newline at end of file
index e4b76cc..bbbb67c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a0=['resolve','join','root','legacy-libs','express','../../services/ami/index.js','agi','../../services/agi/index.js','email','routing','../../services/routing/index.js','../../services/xdr/index.js','exports','path','../../config/environment'];(function(_0x48f2ca,_0x9c9128){var _0x50b14c=function(_0x16203f){while(--_0x16203f){_0x48f2ca['push'](_0x48f2ca['shift']());}};_0x50b14c(++_0x9c9128);}(_0x62a0,0x1c0));var _0x062a=function(_0x2d5291,_0x11ef01){_0x2d5291=_0x2d5291-0x0;var _0x1af4f0=_0x62a0[_0x2d5291];return _0x1af4f0;};'use strict';var path=require(_0x062a('0x0'));var cfg=require(_0x062a('0x1'));var env={'NODE_PATH':path[_0x062a('0x2')](path[_0x062a('0x3')](cfg[_0x062a('0x4')],_0x062a('0x5')))};var pm2config={'apps':[{'name':_0x062a('0x6'),'script':path[_0x062a('0x3')](__dirname,'../../services/express/index.js'),'env':env},{'name':'ami','script':path[_0x062a('0x3')](__dirname,_0x062a('0x7')),'env':env},{'name':_0x062a('0x8'),'script':path[_0x062a('0x3')](__dirname,_0x062a('0x9')),'env':env},{'name':_0x062a('0xa'),'script':path[_0x062a('0x3')](__dirname,'../../services/email/index.js'),'env':env},{'name':_0x062a('0xb'),'script':path[_0x062a('0x3')](__dirname,_0x062a('0xc')),'env':env},{'name':'xdr','script':path[_0x062a('0x3')](__dirname,_0x062a('0xd')),'env':env}]};module[_0x062a('0xe')]=pm2config;
\ No newline at end of file
+var _0x4ec6=['../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','exports','resolve','join','root','../../services/express/index.js','../../services/ami/index.js'];(function(_0x5cd87e,_0x3d81e6){var _0x30131d=function(_0x274e86){while(--_0x274e86){_0x5cd87e['push'](_0x5cd87e['shift']());}};_0x30131d(++_0x3d81e6);}(_0x4ec6,0x1cf));var _0x64ec=function(_0x2d1c02,_0x57943d){_0x2d1c02=_0x2d1c02-0x0;var _0x4c83fd=_0x4ec6[_0x2d1c02];return _0x4c83fd;};'use strict';var path=require('path');var cfg=require('../../config/environment');var env={'NODE_PATH':path[_0x64ec('0x0')](path[_0x64ec('0x1')](cfg[_0x64ec('0x2')],'legacy-libs'))};var pm2config={'apps':[{'name':'express','script':path[_0x64ec('0x1')](__dirname,_0x64ec('0x3')),'env':env},{'name':'ami','script':path[_0x64ec('0x1')](__dirname,_0x64ec('0x4')),'env':env},{'name':'agi','script':path[_0x64ec('0x1')](__dirname,_0x64ec('0x5')),'env':env},{'name':_0x64ec('0x6'),'script':path[_0x64ec('0x1')](__dirname,_0x64ec('0x7')),'env':env},{'name':_0x64ec('0x8'),'script':path[_0x64ec('0x1')](__dirname,_0x64ec('0x9')),'env':env},{'name':_0x64ec('0xa'),'script':path[_0x64ec('0x1')](__dirname,'../../services/xdr/index.js'),'env':env}]};module[_0x64ec('0xb')]=pm2config;
\ No newline at end of file
index d4901d4..60329b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda1e=['saved','pm2','./config','connect','start','then','disconnect','stop','restart','list','describe','delete'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xda1e,0xfd));var _0xeda1=function(_0x564615,_0x51000c){_0x564615=_0x564615-0x0;var _0x3e5c3c=_0xda1e[_0x564615];return _0x3e5c3c;};'use strict';var pm2=require(_0xeda1('0x0'));var BPromise=require('bluebird');var config=require(_0xeda1('0x1'));function connect(){return new BPromise(function(_0x5e6e39,_0x126b72){return pm2[_0xeda1('0x2')](function(_0x5a6082){if(_0x5a6082){return _0x126b72(_0x5a6082);}return _0x5e6e39('connected');});});};exports[_0xeda1('0x3')]=function(_0x142c88){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x2aef3b,_0x24de86){return pm2[_0xeda1('0x3')](_0x142c88,function(_0x2fa6cd,_0x518845){if(_0x2fa6cd){return _0x24de86(_0x2fa6cd);}pm2[_0xeda1('0x5')]();return _0x2aef3b(_0x518845);});});});};exports['stop']=function(_0x212c48){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x15f1d9,_0x5a3640){return pm2[_0xeda1('0x6')](_0x212c48,function(_0x534f37,_0x1bbbd7){if(_0x534f37){return _0x5a3640(_0x534f37);}pm2[_0xeda1('0x5')]();return _0x15f1d9(_0x1bbbd7);});});});};exports[_0xeda1('0x7')]=function(_0x3a9b4d){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x159009,_0x112a47){return pm2[_0xeda1('0x7')](_0x3a9b4d,function(_0x3f5f3b,_0x50cadd){if(_0x3f5f3b){return _0x112a47(_0x3f5f3b);}pm2[_0xeda1('0x5')]();return _0x159009(_0x50cadd);});});});};exports['list']=function(){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x26c500,_0x4b5f9e){return pm2[_0xeda1('0x8')](function(_0x3901cd,_0x5d71a3){if(_0x3901cd){return _0x4b5f9e(_0x3901cd);}pm2['disconnect']();return _0x26c500(_0x5d71a3);});});});};exports[_0xeda1('0x9')]=function(_0x50d486){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x47beec,_0x112c35){return pm2[_0xeda1('0x9')](_0x50d486,function(_0x5f57a4,_0x573dd2){if(_0x5f57a4){return _0x112c35(_0x5f57a4);}pm2[_0xeda1('0x5')]();return _0x47beec(_0x573dd2);});});});};exports[_0xeda1('0xa')]=function(_0x2fac86){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x537c9e,_0x381826){return pm2['delete'](_0x2fac86,function(_0x56320b,_0x168a39){if(_0x56320b){return _0x381826(_0x56320b);}pm2[_0xeda1('0x5')]();return _0x537c9e(_0x168a39);});});});};exports['dump']=function(){return connect()[_0xeda1('0x4')](function(){return new BPromise(function(_0x2f9f64,_0x15df8c){return pm2['dump'](function(_0x381ccd){if(_0x381ccd){return _0x15df8c(_0x381ccd);}return _0x2f9f64(_0xeda1('0xb'));});});});};
\ No newline at end of file
+var _0x2603=['stop','restart','list','describe','delete','dump','saved','pm2','bluebird','./config','connected','start','then','disconnect'];(function(_0x3b9ce8,_0x245259){var _0x5ebe70=function(_0x3283d0){while(--_0x3283d0){_0x3b9ce8['push'](_0x3b9ce8['shift']());}};_0x5ebe70(++_0x245259);}(_0x2603,0x12d));var _0x3260=function(_0x4b727f,_0x47e390){_0x4b727f=_0x4b727f-0x0;var _0xe51025=_0x2603[_0x4b727f];return _0xe51025;};'use strict';var pm2=require(_0x3260('0x0'));var BPromise=require(_0x3260('0x1'));var config=require(_0x3260('0x2'));function connect(){return new BPromise(function(_0x2ce680,_0x1ed442){return pm2['connect'](function(_0x585d01){if(_0x585d01){return _0x1ed442(_0x585d01);}return _0x2ce680(_0x3260('0x3'));});});};exports[_0x3260('0x4')]=function(_0x1ce5a1){return connect()[_0x3260('0x5')](function(){return new BPromise(function(_0x1ac7f4,_0x1a4482){return pm2[_0x3260('0x4')](_0x1ce5a1,function(_0xbbd2cd,_0x3298d5){if(_0xbbd2cd){return _0x1a4482(_0xbbd2cd);}pm2[_0x3260('0x6')]();return _0x1ac7f4(_0x3298d5);});});});};exports[_0x3260('0x7')]=function(_0x43e7f5){return connect()['then'](function(){return new BPromise(function(_0x56c91f,_0x1827ad){return pm2[_0x3260('0x7')](_0x43e7f5,function(_0x20b617,_0x176fbd){if(_0x20b617){return _0x1827ad(_0x20b617);}pm2[_0x3260('0x6')]();return _0x56c91f(_0x176fbd);});});});};exports[_0x3260('0x8')]=function(_0x19c668){return connect()[_0x3260('0x5')](function(){return new BPromise(function(_0xf178e5,_0x29a229){return pm2['restart'](_0x19c668,function(_0xa0ce55,_0x5708cc){if(_0xa0ce55){return _0x29a229(_0xa0ce55);}pm2['disconnect']();return _0xf178e5(_0x5708cc);});});});};exports[_0x3260('0x9')]=function(){return connect()[_0x3260('0x5')](function(){return new BPromise(function(_0x1cebc9,_0x104b5b){return pm2[_0x3260('0x9')](function(_0x5e35d5,_0x497f55){if(_0x5e35d5){return _0x104b5b(_0x5e35d5);}pm2['disconnect']();return _0x1cebc9(_0x497f55);});});});};exports[_0x3260('0xa')]=function(_0x139b98){return connect()[_0x3260('0x5')](function(){return new BPromise(function(_0x28b88c,_0x4d63e8){return pm2[_0x3260('0xa')](_0x139b98,function(_0x337250,_0xc2e056){if(_0x337250){return _0x4d63e8(_0x337250);}pm2[_0x3260('0x6')]();return _0x28b88c(_0xc2e056);});});});};exports[_0x3260('0xb')]=function(_0x2c1dea){return connect()['then'](function(){return new BPromise(function(_0x50c558,_0x925eec){return pm2[_0x3260('0xb')](_0x2c1dea,function(_0x4de069,_0x59e9e5){if(_0x4de069){return _0x925eec(_0x4de069);}pm2[_0x3260('0x6')]();return _0x50c558(_0x59e9e5);});});});};exports[_0x3260('0xc')]=function(){return connect()['then'](function(){return new BPromise(function(_0x144a3c,_0x3eeae7){return pm2[_0x3260('0xc')](function(_0x4c7b7c){if(_0x4c7b7c){return _0x3eeae7(_0x4c7b7c);}return _0x144a3c(_0x3260('0xd'));});});});};
\ No newline at end of file
index 0a7b541..5450f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9686=['subtract','info','[CHAT]\x20Interactions\x20to\x20close:','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','catch','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','defaults','localhost','redis','Setting','find','chatTimeout','then','findAll'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x9686,0x179));var _0x6968=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9686[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x6968('0x0'));var moment=require(_0x6968('0x1'));var Redis=require(_0x6968('0x2'));var util=require(_0x6968('0x3'));var config=require(_0x6968('0x4'));var db=require(_0x6968('0x5'))['db'];var logger=require('../logger')(_0x6968('0x6'));config['redis']=_[_0x6968('0x7')](config['redis'],{'host':_0x6968('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6968('0x9')]));function closeInteractions(){var _0x4941c1=0x0;var _0x371f2b=[];return db[_0x6968('0xa')][_0x6968('0xb')]({'raw':!![],'attributes':['id',_0x6968('0xc')],'where':{'id':0x1}})[_0x6968('0xd')](function(_0x52ed47){_0x4941c1=_0x52ed47[_0x6968('0xc')];if(_0x4941c1){return db['ChatInteraction'][_0x6968('0xe')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x6968('0xf')](_0x52ed47[_0x6968('0xc')],'minutes')}}});}else{return[];}})[_0x6968('0xd')](function(_0x368223){if(_0x368223&&_0x368223['length']){_0x371f2b=_['map'](_0x368223||[],'id');logger[_0x6968('0x10')](_0x6968('0x11'),_0x371f2b[_0x6968('0x12')]());return db['ChatInteraction']['update']({'closeReason':_0x6968('0x13'),'disposition':_0x6968('0x14'),'closed':!![],'closedAt':moment()[_0x6968('0x15')](_0x6968('0x16'))},{'where':{'id':_0x371f2b}});}})[_0x6968('0xd')](function(){if(_0x371f2b&&_0x371f2b[_0x6968('0x17')]){logger['info'](_0x6968('0x18'),_0x371f2b[_0x6968('0x12')]());for(var _0x4c6ebd=0x0;_0x4c6ebd<_0x371f2b['length'];_0x4c6ebd++){io['emit']('chatInteraction:update',{'id':_0x371f2b[_0x4c6ebd],'closed':!![]});}}})[_0x6968('0x19')](function(_0x2ad669){logger['error']('[CHAT]\x20Error\x20closing\x20interactions',_0x2ad669?util[_0x6968('0x1a')](_0x2ad669,{'showHidden':![],'depth':null}):'');});}exports[_0x6968('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x890e=['timeout','format','chatInteraction:update','catch','error','start','lodash','moment','ioredis','util','../../mysqldb','../logger','schedule','redis','localhost','Setting','chatTimeout','then','findAll','lastMsgAt','subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','system'];(function(_0x50ff08,_0x26a6e6){var _0x53ddeb=function(_0x38dd72){while(--_0x38dd72){_0x50ff08['push'](_0x50ff08['shift']());}};_0x53ddeb(++_0x26a6e6);}(_0x890e,0x7a));var _0xe890=function(_0x564547,_0x550801){_0x564547=_0x564547-0x0;var _0x3bc2ae=_0x890e[_0x564547];return _0x3bc2ae;};'use strict';var _=require(_0xe890('0x0'));var moment=require(_0xe890('0x1'));var Redis=require(_0xe890('0x2'));var util=require(_0xe890('0x3'));var config=require('../../config/environment');var db=require(_0xe890('0x4'))['db'];var logger=require(_0xe890('0x5'))(_0xe890('0x6'));config[_0xe890('0x7')]=_['defaults'](config[_0xe890('0x7')],{'host':_0xe890('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe890('0x7')]));function closeInteractions(){var _0x57ca=0x0;var _0x9d9b62=[];return db[_0xe890('0x9')]['find']({'raw':!![],'attributes':['id',_0xe890('0xa')],'where':{'id':0x1}})[_0xe890('0xb')](function(_0x307e2a){_0x57ca=_0x307e2a[_0xe890('0xa')];if(_0x57ca){return db['ChatInteraction'][_0xe890('0xc')]({'raw':!![],'attributes':['id',_0xe890('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xe890('0xe')](_0x307e2a[_0xe890('0xa')],_0xe890('0xf'))}}});}else{return[];}})['then'](function(_0x1b5f19){if(_0x1b5f19&&_0x1b5f19[_0xe890('0x10')]){_0x9d9b62=_[_0xe890('0x11')](_0x1b5f19||[],'id');logger[_0xe890('0x12')](_0xe890('0x13'),_0x9d9b62[_0xe890('0x14')]());return db[_0xe890('0x15')]['update']({'closeReason':_0xe890('0x16'),'disposition':_0xe890('0x17'),'closed':!![],'closedAt':moment()[_0xe890('0x18')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x9d9b62}});}})[_0xe890('0xb')](function(){if(_0x9d9b62&&_0x9d9b62[_0xe890('0x10')]){logger[_0xe890('0x12')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x9d9b62[_0xe890('0x14')]());for(var _0x4ab858=0x0;_0x4ab858<_0x9d9b62[_0xe890('0x10')];_0x4ab858++){io['emit'](_0xe890('0x19'),{'id':_0x9d9b62[_0x4ab858],'closed':!![]});}}})[_0xe890('0x1a')](function(_0x47b101){logger[_0xe890('0x1b')]('[CHAT]\x20Error\x20closing\x20interactions',_0x47b101?util['inspect'](_0x47b101,{'showHidden':![],'depth':null}):'');});}exports[_0xe890('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 7ec1ebb..718ec48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dba=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5dba,0xf4));var _0xa5db=function(_0x462042,_0x524279){_0x462042=_0x462042-0x0;var _0x585608=_0x5dba[_0x462042];return _0x585608;};'use strict';function start(){var _0x51cb07=require(_0xa5db('0x0'));return _0x51cb07[_0xa5db('0x1')]();}module[_0xa5db('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x7d4f=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0x3ba655,_0x3ced14){var _0x260762=function(_0x3b2477){while(--_0x3b2477){_0x3ba655['push'](_0x3ba655['shift']());}};_0x260762(++_0x3ced14);}(_0x7d4f,0x66));var _0xf7d4=function(_0xfd3d87,_0x10aa44){_0xfd3d87=_0xfd3d87-0x0;var _0x21fc4a=_0x7d4f[_0xfd3d87];return _0x21fc4a;};'use strict';function start(){var _0x3c89d8=require(_0xf7d4('0x0'));return _0x3c89d8[_0xf7d4('0x1')]();}module[_0xf7d4('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index f1db8a7..be7776d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c16=['Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','savename','extname','zip','join','existsSync','status','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','error','error\x20mail','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','MailServerOut','CloudProvider','keys','jobs','toString','keyBy','intersection','length','exists','stop','delete\x20cron','my\x20id','resolve','then','run\x20job','cron','active','startAt','endAt','add','start','deleteJob','stop\x20cron','isBetween','update','update\x20cron','run','util','path','lodash','moment','bluebird','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info'];(function(_0x401beb,_0x5097e6){var _0x3e2275=function(_0x4943bb){while(--_0x4943bb){_0x401beb['push'](_0x401beb['shift']());}};_0x3e2275(++_0x5097e6);}(_0x7c16,0x190));var _0x67c1=function(_0x155924,_0x2a5368){_0x155924=_0x155924-0x0;var _0x262e4b=_0x7c16[_0x155924];return _0x262e4b;};'use strict';var fs=require('fs');var util=require(_0x67c1('0x0'));var path=require(_0x67c1('0x1'));var _=require(_0x67c1('0x2'));var moment=require(_0x67c1('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require(_0x67c1('0x4'));var logger=require(_0x67c1('0x5'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x67c1('0x6'));var analyticDefaultReportController=require(_0x67c1('0x7'));var client=jayson['client'][_0x67c1('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3a4fcd,_0x459099){return function(){logger[_0x67c1('0x9')](_0x67c1('0xa'),_0x3a4fcd[_0x67c1('0xb')]);var _0x556df6=!![];var _0x333fcc=_0x3a4fcd[_0x67c1('0xc')][_0x67c1('0xd')]();var _0x158eb6={'account':_0x333fcc,'message':{'from':util[_0x67c1('0xe')](_0x67c1('0xf'),_0x3a4fcd[_0x67c1('0xc')][_0x67c1('0x10')],_0x3a4fcd[_0x67c1('0xc')][_0x67c1('0xb')]||_0x3a4fcd['MailAccount'][_0x67c1('0x11')][_0x67c1('0x12')]),'to':_0x3a4fcd[_0x67c1('0xb')],'cc':_0x3a4fcd['cc'],'bcc':_0x3a4fcd['bcc'],'subject':util[_0x67c1('0xe')](_0x67c1('0x13'),_0x459099[_0x67c1('0x10')],_0x3a4fcd[_0x67c1('0x14')],_0x3a4fcd['subtractUnit'])}};var _0x49a308=path['join'](__dirname,'../../files/reports');var _0x582970=_0x459099[_0x67c1('0x15')];var _0x1689ad=util[_0x67c1('0xe')]('%s.%s',path['basename'](_0x459099[_0x67c1('0x15')],path[_0x67c1('0x16')](_0x459099['savename'])),_0x67c1('0x17'));var _0x1218ce=path[_0x67c1('0x18')](_0x49a308,_0x582970);var _0x5aa0d6=path['join'](_0x49a308,_0x1689ad);if(fs[_0x67c1('0x19')](_0x1218ce)){_0x459099[_0x67c1('0x1a')]='Sent';_0x158eb6['message'][_0x67c1('0x1b')]=[{'filename':_0x582970,'path':_0x1218ce}];_0x158eb6[_0x67c1('0x1c')][_0x67c1('0x1d')]=util[_0x67c1('0xe')](_0x67c1('0x1e'),JSON[_0x67c1('0x1f')](_0x459099,null,0x2));}else if(fs[_0x67c1('0x19')](_0x5aa0d6)){_0x459099[_0x67c1('0x1a')]=_0x67c1('0x20');_0x158eb6[_0x67c1('0x1c')][_0x67c1('0x1b')]=[{'filename':_0x1689ad,'path':_0x5aa0d6}];}else{_0x158eb6[_0x67c1('0x1c')][_0x67c1('0x1d')]=_0x67c1('0x21');if(!_0x3a4fcd[_0x67c1('0x22')]){_0x556df6=![];logger[_0x67c1('0x9')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x556df6){return client[_0x67c1('0x23')](_0x67c1('0x24'),_0x158eb6)['then'](function(_0x58571c){if(_0x58571c[_0x67c1('0x25')]){return logger[_0x67c1('0x25')](_0x67c1('0x26'),JSON[_0x67c1('0x1f')](_0x58571c));}return logger['info'](_0x67c1('0x27'));})[_0x67c1('0x28')](function(_0x247563){return logger[_0x67c1('0x25')](_0x67c1('0x26'),JSON[_0x67c1('0x1f')](_0x247563));});}};}function handleError(){return function(_0x5ad2c2){return logger[_0x67c1('0x25')](JSON[_0x67c1('0x1f')](_0x5ad2c2));};}function handleResult(_0x12efab){return function(_0x5be303){logger[_0x67c1('0x9')]('data',JSON[_0x67c1('0x1f')](_0x5be303));if(_0x12efab[_0x67c1('0xc')]&&_0x12efab[_0x67c1('0xc')]['Smtp']&&!_[_0x67c1('0x29')](_0x12efab['email'])){setTimeout(handleSendEmail(_0x12efab,_0x5be303),0x3c*0x3e8);}};}function handleJob(_0x556600){return function(){try{if(_[_0x67c1('0x29')](_0x556600[_0x67c1('0x14')])){return logger[_0x67c1('0x9')](_0x67c1('0x2a'));}if(_[_0x67c1('0x29')](_0x556600[_0x67c1('0x2b')])){return logger[_0x67c1('0x9')](_0x67c1('0x2c'));}var _0x224e61={'startDate':moment()['subtract'](_0x556600['subtractNumber'],_0x556600[_0x67c1('0x2b')])[_0x67c1('0xe')](_0x67c1('0x2d')),'endDate':moment()[_0x67c1('0xe')](_0x67c1('0x2d')),'type':_0x67c1('0x2e'),'output':_0x556600[_0x67c1('0x2f')],'name':_0x556600[_0x67c1('0x10')]};if(!_[_0x67c1('0x29')](_0x556600[_0x67c1('0x30')])){logger[_0x67c1('0x9')](_0x67c1('0x31'),_0x556600[_0x67c1('0x30')]);return analyticDefaultReportController[_0x67c1('0x32')]({'id':_0x556600[_0x67c1('0x30')]},_0x224e61)['then'](handleResult(_0x556600))[_0x67c1('0x28')](handleError());}if(!_[_0x67c1('0x29')](_0x556600['CustomReportId'])){logger['info'](_0x67c1('0x33'),_0x556600[_0x67c1('0x34')]);return analyticCustomReportController[_0x67c1('0x32')]({'id':_0x556600['CustomReportId']},_0x224e61)['then'](handleResult(_0x556600))['catch'](handleError());}}catch(_0xa2480){logger[_0x67c1('0x25')](JSON[_0x67c1('0x1f')](_0xa2480));}return logger['info'](_0x67c1('0x35'));};}function getJobs(_0x57c392){var _0x51b23e={};if(_0x57c392){_0x51b23e['id']=_0x57c392;}return db[_0x67c1('0x36')]['findAll']({'where':_0x51b23e,'include':[{'model':db[_0x67c1('0xc')],'attributes':['id',_0x67c1('0x10'),_0x67c1('0xb')],'include':[{'model':db[_0x67c1('0x37')],'as':_0x67c1('0x11'),'include':[{'model':db[_0x67c1('0x38')],'as':_0x67c1('0x38')}]}]}]})['then'](function(_0x4ee4a3){var _0x5938ea=_[_0x67c1('0x39')](manager[_0x67c1('0x3a')]);var _0x4fbe3a=_['map'](_0x4ee4a3,function(_0x30202a){return _0x30202a['id'][_0x67c1('0x3b')]();});var _0x58dd49=_[_0x67c1('0x3c')](_0x4ee4a3,function(_0x18f60d){return _0x18f60d['id'][_0x67c1('0x3b')]();});var _0x5854d8=_0x57c392?_0x4fbe3a:_['difference'](_0x4fbe3a,_0x5938ea);var _0x456ec7=_[_0x67c1('0x3d')](_0x4fbe3a,_0x5938ea);var _0x445e5e=_['difference'](_0x5938ea,_0x4fbe3a);var _0x1928e9;var _0x56d0e9;for(_0x1928e9=0x0;_0x1928e9<_0x445e5e[_0x67c1('0x3e')]&&!_0x57c392;_0x1928e9+=0x1){_0x56d0e9=_0x445e5e[_0x1928e9][_0x67c1('0x3b')]();if(manager[_0x67c1('0x3f')](_0x56d0e9)){manager[_0x67c1('0x40')](_0x56d0e9);manager['deleteJob'](_0x56d0e9);logger['info'](_0x67c1('0x41'),_0x56d0e9);}}logger['info']('toRun',JSON[_0x67c1('0x1f')](_0x5854d8));for(_0x1928e9=0x0;_0x1928e9<_0x5854d8[_0x67c1('0x3e')];_0x1928e9+=0x1){_0x56d0e9=_0x5854d8[_0x1928e9]['toString']();logger[_0x67c1('0x9')]('index',_0x56d0e9);if(_0x57c392){logger[_0x67c1('0x9')](_0x67c1('0x42'),_0x57c392);logger[_0x67c1('0x9')](JSON['stringify'](_0x58dd49[_0x56d0e9]));BPromise[_0x67c1('0x43')]()[_0x67c1('0x44')](handleJob(_0x58dd49[_0x56d0e9]));logger[_0x67c1('0x9')](_0x67c1('0x45'),_0x58dd49[_0x56d0e9][_0x67c1('0x10')],_0x58dd49[_0x56d0e9][_0x67c1('0x46')]);}else if(_0x58dd49[_0x56d0e9][_0x67c1('0x46')]&&_0x58dd49[_0x56d0e9][_0x67c1('0x47')]&&moment()['isBetween'](_0x58dd49[_0x56d0e9][_0x67c1('0x48')],_0x58dd49[_0x56d0e9][_0x67c1('0x49')])){manager[_0x67c1('0x4a')](_0x56d0e9,_0x58dd49[_0x56d0e9][_0x67c1('0x46')],handleJob(_0x58dd49[_0x56d0e9]));manager[_0x67c1('0x4b')](_0x56d0e9);logger[_0x67c1('0x9')]('add\x20cron',_0x58dd49[_0x56d0e9]['name'],_0x58dd49[_0x56d0e9][_0x67c1('0x46')]);}else if(manager['exists'](_0x56d0e9)){manager[_0x67c1('0x40')](_0x56d0e9);manager[_0x67c1('0x4c')](_0x56d0e9);logger['info'](_0x67c1('0x4d'),_0x58dd49[_0x56d0e9][_0x67c1('0x10')],_0x58dd49[_0x56d0e9][_0x67c1('0x46')]);}}for(_0x1928e9=0x0,_0x56d0e9;_0x1928e9<_0x456ec7['length']&&!_0x57c392;_0x1928e9+=0x1){_0x56d0e9=_0x456ec7[_0x1928e9][_0x67c1('0x3b')]();if(manager[_0x67c1('0x3f')](_0x56d0e9)){if(_0x58dd49[_0x56d0e9][_0x67c1('0x46')]&&_0x58dd49[_0x56d0e9][_0x67c1('0x47')]&&moment()[_0x67c1('0x4e')](_0x58dd49[_0x56d0e9]['startAt'],_0x58dd49[_0x56d0e9][_0x67c1('0x49')])){manager[_0x67c1('0x4f')](_0x56d0e9,_0x58dd49[_0x56d0e9][_0x67c1('0x46')],handleJob(_0x58dd49[_0x56d0e9]));logger[_0x67c1('0x9')](_0x67c1('0x50'),_0x58dd49[_0x56d0e9][_0x67c1('0x10')],_0x58dd49[_0x56d0e9]['cron']);}else{manager['stop'](_0x56d0e9);manager[_0x67c1('0x4c')](_0x56d0e9);logger[_0x67c1('0x9')](_0x67c1('0x4d'),_0x58dd49[_0x56d0e9][_0x67c1('0x10')],_0x58dd49[_0x56d0e9][_0x67c1('0x46')]);}}}})[_0x67c1('0x28')](function(_0x6c4d46){logger['error'](JSON[_0x67c1('0x1f')](_0x6c4d46));});}exports[_0x67c1('0x51')]=function(_0x5079ce){return getJobs(_0x5079ce);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xe8a2=['getSmtpOptions','format','\x22%s\x22\x20<%s>','name','email','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','existsSync','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','sendIfEmpty','SendMail','then','error','error\x20mail','email\x20sent','catch','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','intersection','difference','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','stop\x20cron','length','update','run','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount'];(function(_0x43337a,_0x13ef13){var _0xa37829=function(_0x179ec0){while(--_0x179ec0){_0x43337a['push'](_0x43337a['shift']());}};_0xa37829(++_0x13ef13);}(_0xe8a2,0xa3));var _0x2e8a=function(_0x18a505,_0x4f166c){_0x18a505=_0x18a505-0x0;var _0x29af34=_0xe8a2[_0x18a505];return _0x29af34;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x2e8a('0x0'));var _=require(_0x2e8a('0x1'));var moment=require('moment');var CronJobManager=require(_0x2e8a('0x2'));var jayson=require(_0x2e8a('0x3'));var BPromise=require(_0x2e8a('0x4'));var logger=require(_0x2e8a('0x5'))(_0x2e8a('0x6'));var db=require(_0x2e8a('0x7'))['db'];var analyticCustomReportController=require(_0x2e8a('0x8'));var analyticDefaultReportController=require(_0x2e8a('0x9'));var client=jayson[_0x2e8a('0xa')][_0x2e8a('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3a8d3b,_0x32d683){return function(){logger[_0x2e8a('0xc')](_0x2e8a('0xd'),_0x3a8d3b['email']);var _0x3977bb=!![];var _0x1852bb=_0x3a8d3b[_0x2e8a('0xe')][_0x2e8a('0xf')]();var _0x25333f={'account':_0x1852bb,'message':{'from':util[_0x2e8a('0x10')](_0x2e8a('0x11'),_0x3a8d3b[_0x2e8a('0xe')][_0x2e8a('0x12')],_0x3a8d3b[_0x2e8a('0xe')][_0x2e8a('0x13')]||_0x3a8d3b['MailAccount']['Smtp'][_0x2e8a('0x14')]),'to':_0x3a8d3b[_0x2e8a('0x13')],'cc':_0x3a8d3b['cc'],'bcc':_0x3a8d3b[_0x2e8a('0x15')],'subject':util[_0x2e8a('0x10')](_0x2e8a('0x16'),_0x32d683['name'],_0x3a8d3b['subtractNumber'],_0x3a8d3b[_0x2e8a('0x17')])}};var _0x56ebe2=path[_0x2e8a('0x18')](__dirname,_0x2e8a('0x19'));var _0x3a4a43=_0x32d683[_0x2e8a('0x1a')];var _0x3349da=util[_0x2e8a('0x10')](_0x2e8a('0x1b'),path[_0x2e8a('0x1c')](_0x32d683['savename'],path[_0x2e8a('0x1d')](_0x32d683[_0x2e8a('0x1a')])),'zip');var _0xb48fa9=path[_0x2e8a('0x18')](_0x56ebe2,_0x3a4a43);var _0x2889ab=path['join'](_0x56ebe2,_0x3349da);if(fs[_0x2e8a('0x1e')](_0xb48fa9)){_0x32d683[_0x2e8a('0x1f')]=_0x2e8a('0x20');_0x25333f[_0x2e8a('0x21')][_0x2e8a('0x22')]=[{'filename':_0x3a4a43,'path':_0xb48fa9}];_0x25333f[_0x2e8a('0x21')][_0x2e8a('0x23')]=util[_0x2e8a('0x10')](_0x2e8a('0x24'),JSON[_0x2e8a('0x25')](_0x32d683,null,0x2));}else if(fs[_0x2e8a('0x1e')](_0x2889ab)){_0x32d683['status']=_0x2e8a('0x20');_0x25333f['message']['attachments']=[{'filename':_0x3349da,'path':_0x2889ab}];}else{_0x25333f[_0x2e8a('0x21')][_0x2e8a('0x23')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x3a8d3b[_0x2e8a('0x26')]){_0x3977bb=![];logger[_0x2e8a('0xc')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x3977bb){return client['request'](_0x2e8a('0x27'),_0x25333f)[_0x2e8a('0x28')](function(_0x15aa11){if(_0x15aa11[_0x2e8a('0x29')]){return logger['error'](_0x2e8a('0x2a'),JSON[_0x2e8a('0x25')](_0x15aa11));}return logger[_0x2e8a('0xc')](_0x2e8a('0x2b'));})[_0x2e8a('0x2c')](function(_0x56e4f6){return logger[_0x2e8a('0x29')](_0x2e8a('0x2a'),JSON[_0x2e8a('0x25')](_0x56e4f6));});}};}function handleError(){return function(_0x56f7a3){return logger[_0x2e8a('0x29')](JSON[_0x2e8a('0x25')](_0x56f7a3));};}function handleResult(_0x544c05){return function(_0x30234c){logger[_0x2e8a('0xc')](_0x2e8a('0x2d'),JSON['stringify'](_0x30234c));if(_0x544c05[_0x2e8a('0xe')]&&_0x544c05[_0x2e8a('0xe')][_0x2e8a('0x2e')]&&!_[_0x2e8a('0x2f')](_0x544c05[_0x2e8a('0x13')])){setTimeout(handleSendEmail(_0x544c05,_0x30234c),0x3c*0x3e8);}};}function handleJob(_0x1065b9){return function(){try{if(_[_0x2e8a('0x2f')](_0x1065b9['subtractNumber'])){return logger[_0x2e8a('0xc')](_0x2e8a('0x30'));}if(_[_0x2e8a('0x2f')](_0x1065b9[_0x2e8a('0x17')])){return logger[_0x2e8a('0xc')]('subtractUnit\x20null\x20or\x20undefined');}var _0x4ec847={'startDate':moment()[_0x2e8a('0x31')](_0x1065b9[_0x2e8a('0x32')],_0x1065b9[_0x2e8a('0x17')])[_0x2e8a('0x10')](_0x2e8a('0x33')),'endDate':moment()['format'](_0x2e8a('0x33')),'type':_0x2e8a('0x34'),'output':_0x1065b9['output'],'name':_0x1065b9[_0x2e8a('0x12')]};if(!_[_0x2e8a('0x2f')](_0x1065b9['DefaultReportId'])){logger[_0x2e8a('0xc')](_0x2e8a('0x35'),_0x1065b9['DefaultReportId']);return analyticDefaultReportController[_0x2e8a('0x36')]({'id':_0x1065b9['DefaultReportId']},_0x4ec847)['then'](handleResult(_0x1065b9))[_0x2e8a('0x2c')](handleError());}if(!_[_0x2e8a('0x2f')](_0x1065b9[_0x2e8a('0x37')])){logger['info'](_0x2e8a('0x38'),_0x1065b9['CustomReportId']);return analyticCustomReportController[_0x2e8a('0x36')]({'id':_0x1065b9[_0x2e8a('0x37')]},_0x4ec847)[_0x2e8a('0x28')](handleResult(_0x1065b9))['catch'](handleError());}}catch(_0x372f8f){logger[_0x2e8a('0x29')](JSON['stringify'](_0x372f8f));}return logger['info'](_0x2e8a('0x39'));};}function getJobs(_0x3d4e3a){var _0x5cca08={};if(_0x3d4e3a){_0x5cca08['id']=_0x3d4e3a;}return db[_0x2e8a('0x3a')][_0x2e8a('0x3b')]({'where':_0x5cca08,'include':[{'model':db['MailAccount'],'attributes':['id','name','email'],'include':[{'model':db[_0x2e8a('0x3c')],'as':_0x2e8a('0x2e'),'include':[{'model':db[_0x2e8a('0x3d')],'as':_0x2e8a('0x3d')}]}]}]})[_0x2e8a('0x28')](function(_0x2f4ad2){var _0x4c6a2d=_[_0x2e8a('0x3e')](manager[_0x2e8a('0x3f')]);var _0x4b5ae0=_[_0x2e8a('0x40')](_0x2f4ad2,function(_0x2b5a02){return _0x2b5a02['id'][_0x2e8a('0x41')]();});var _0x517062=_['keyBy'](_0x2f4ad2,function(_0x2e24bf){return _0x2e24bf['id'][_0x2e8a('0x41')]();});var _0x2a0d18=_0x3d4e3a?_0x4b5ae0:_['difference'](_0x4b5ae0,_0x4c6a2d);var _0x588122=_[_0x2e8a('0x42')](_0x4b5ae0,_0x4c6a2d);var _0x4e317e=_[_0x2e8a('0x43')](_0x4c6a2d,_0x4b5ae0);var _0x307911;var _0x249754;for(_0x307911=0x0;_0x307911<_0x4e317e['length']&&!_0x3d4e3a;_0x307911+=0x1){_0x249754=_0x4e317e[_0x307911][_0x2e8a('0x41')]();if(manager[_0x2e8a('0x44')](_0x249754)){manager[_0x2e8a('0x45')](_0x249754);manager[_0x2e8a('0x46')](_0x249754);logger[_0x2e8a('0xc')](_0x2e8a('0x47'),_0x249754);}}logger[_0x2e8a('0xc')](_0x2e8a('0x48'),JSON['stringify'](_0x2a0d18));for(_0x307911=0x0;_0x307911<_0x2a0d18['length'];_0x307911+=0x1){_0x249754=_0x2a0d18[_0x307911]['toString']();logger['info'](_0x2e8a('0x49'),_0x249754);if(_0x3d4e3a){logger[_0x2e8a('0xc')](_0x2e8a('0x4a'),_0x3d4e3a);logger[_0x2e8a('0xc')](JSON[_0x2e8a('0x25')](_0x517062[_0x249754]));BPromise[_0x2e8a('0x4b')]()[_0x2e8a('0x28')](handleJob(_0x517062[_0x249754]));logger[_0x2e8a('0xc')](_0x2e8a('0x4c'),_0x517062[_0x249754][_0x2e8a('0x12')],_0x517062[_0x249754][_0x2e8a('0x4d')]);}else if(_0x517062[_0x249754]['cron']&&_0x517062[_0x249754][_0x2e8a('0x4e')]&&moment()[_0x2e8a('0x4f')](_0x517062[_0x249754][_0x2e8a('0x50')],_0x517062[_0x249754][_0x2e8a('0x51')])){manager[_0x2e8a('0x52')](_0x249754,_0x517062[_0x249754][_0x2e8a('0x4d')],handleJob(_0x517062[_0x249754]));manager[_0x2e8a('0x53')](_0x249754);logger[_0x2e8a('0xc')](_0x2e8a('0x54'),_0x517062[_0x249754]['name'],_0x517062[_0x249754][_0x2e8a('0x4d')]);}else if(manager[_0x2e8a('0x44')](_0x249754)){manager[_0x2e8a('0x45')](_0x249754);manager[_0x2e8a('0x46')](_0x249754);logger[_0x2e8a('0xc')](_0x2e8a('0x55'),_0x517062[_0x249754][_0x2e8a('0x12')],_0x517062[_0x249754][_0x2e8a('0x4d')]);}}for(_0x307911=0x0,_0x249754;_0x307911<_0x588122[_0x2e8a('0x56')]&&!_0x3d4e3a;_0x307911+=0x1){_0x249754=_0x588122[_0x307911][_0x2e8a('0x41')]();if(manager[_0x2e8a('0x44')](_0x249754)){if(_0x517062[_0x249754][_0x2e8a('0x4d')]&&_0x517062[_0x249754][_0x2e8a('0x4e')]&&moment()[_0x2e8a('0x4f')](_0x517062[_0x249754][_0x2e8a('0x50')],_0x517062[_0x249754]['endAt'])){manager[_0x2e8a('0x57')](_0x249754,_0x517062[_0x249754][_0x2e8a('0x4d')],handleJob(_0x517062[_0x249754]));logger[_0x2e8a('0xc')]('update\x20cron',_0x517062[_0x249754][_0x2e8a('0x12')],_0x517062[_0x249754]['cron']);}else{manager[_0x2e8a('0x45')](_0x249754);manager[_0x2e8a('0x46')](_0x249754);logger[_0x2e8a('0xc')](_0x2e8a('0x55'),_0x517062[_0x249754]['name'],_0x517062[_0x249754]['cron']);}}}})[_0x2e8a('0x2c')](function(_0x59b306){logger[_0x2e8a('0x29')](JSON[_0x2e8a('0x25')](_0x59b306));});}exports[_0x2e8a('0x58')]=function(_0x519d71){return getJobs(_0x519d71);};exports[_0x2e8a('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 68c71b4..30e4d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeName','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','then','results','length','transcripts','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','Transcript\x20not\x20available','sentimentAccountId','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Mixed','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','forEach','push','all','error','start','lodash','aws-sdk','request-promise'];(function(_0xcfa54d,_0x17123a){var _0x4b044a=function(_0x4d03d7){while(--_0x4d03d7){_0xcfa54d['push'](_0xcfa54d['shift']());}};_0x4b044a(++_0x17123a);}(_0x7be1,0x165));var _0x17be=function(_0x466af7,_0x2f7551){_0x466af7=_0x466af7-0x0;var _0x348c96=_0x7be1[_0x466af7];return _0x348c96;};var _=require(_0x17be('0x0'));var AWS=require(_0x17be('0x1'));var rp=require(_0x17be('0x2'));var util=require('util');var BPromise=require(_0x17be('0x3'));var db=require(_0x17be('0x4'))['db'];var logger=require(_0x17be('0x5'))(_0x17be('0x6'));function getTranscriptionJob(_0x2bc9ed,_0x4b46fd,_0x4feea7,_0x55257a){return new Promise(function(_0x2fed12,_0x40f3f9){var _0x4f5b0c=new AWS[(_0x17be('0x7'))]({'accessKeyId':_0x4b46fd,'secretAccessKey':_0x2bc9ed,'region':_0x4feea7});_0x4f5b0c[_0x17be('0x8')]({'TranscriptionJobName':_0x55257a},function(_0x2c74b2,_0xfd9c5){if(_0x2c74b2){return _0x40f3f9(_0x2c74b2);}else{return _0x2fed12(_0xfd9c5);}});});}function sentiment(_0x4779a8,_0x16042b,_0x582848,_0x41e383,_0x589cdb){return new Promise(function(_0x3d23c3,_0x2c276e){var _0x520a49=new AWS[(_0x17be('0x9'))]({'accessKeyId':_0x16042b,'secretAccessKey':_0x4779a8,'region':_0x582848});_0x520a49[_0x17be('0xa')]({'Text':_0x41e383,'LanguageCode':_0x589cdb[_0x17be('0xb')](0x0,0x2)},function(_0x667ab3,_0x4ddc25){if(_0x667ab3){return _0x2c276e(_0x667ab3);}else{return _0x3d23c3(_0x4ddc25);}});});}function checkTranscribeJob(_0x431142,_0x52a62c,_0x40e3d5){var _0x4f4ad6;return new BPromise(function(_0x2af298,_0x1dff9e){logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0xe'),_0x431142['id'],_0x431142['transcribeName']));return getTranscriptionJob(_0x40e3d5[_0x17be('0xf')],_0x40e3d5['data2'],_0x52a62c['transcribeRegion'],_0x431142[_0x17be('0x10')])['then'](function(_0x2a37ec){logger['info'](util[_0x17be('0xd')](_0x17be('0x11'),_0x431142['id'],_0x431142['transcribeName'],_0x2a37ec[_0x17be('0x12')]['TranscriptionJobStatus']));if(!_0x431142[_0x17be('0x13')]){switch(_0x2a37ec['TranscriptionJob'][_0x17be('0x14')]){case _0x17be('0x15'):var _0x416f81={'transcribeStatus':_0x2a37ec[_0x17be('0x12')][_0x17be('0x14')],'fileUri':_0x2a37ec['TranscriptionJob'][_0x17be('0x16')][_0x17be('0x17')]};logger[_0x17be('0xc')](util[_0x17be('0xd')]('[RECORDING:%d]\x20Get\x20transcript',_0x431142['id']));return rp({'uri':_0x2a37ec[_0x17be('0x12')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0x17be('0x18')](function(_0x3ffd1e){logger[_0x17be('0xc')](util[_0x17be('0xd')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x431142['id']));if(_0x3ffd1e&&_0x3ffd1e[_0x17be('0x19')]&&_0x3ffd1e[_0x17be('0x19')]['transcripts']&&_0x3ffd1e[_0x17be('0x19')]['transcripts'][_0x17be('0x1a')]){_0x416f81[_0x17be('0x13')]='';for(var _0x47f00d=0x0;_0x47f00d<_0x3ffd1e[_0x17be('0x19')]['transcripts'][_0x17be('0x1a')];_0x47f00d++){_0x416f81['fileText']+=_0x3ffd1e['results'][_0x17be('0x1b')][_0x47f00d]['transcript']+'';}}return _0x431142[_0x17be('0x1c')](_0x416f81);})['then'](function(){logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0x1d'),_0x431142['id']));if(!_0x431142[_0x17be('0x1e')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x21'));}if(!_0x52a62c[_0x17be('0x22')]||!_0x52a62c['sentimentAccountId']||!_0x52a62c[_0x17be('0x23')]||!_0x52a62c[_0x17be('0x24')]||!_0x52a62c[_0x17be('0x25')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x416f81[_0x17be('0x13')]){throw new Error(_0x17be('0x26'));}if(_0x52a62c[_0x17be('0x27')]===_0x40e3d5['id']){return _0x40e3d5;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x17be('0x27')]}});}})[_0x17be('0x18')](function(_0x57c5b2){if(!_0x57c5b2){throw new db[(_0x17be('0x1f'))]['ValidationError'](_0x17be('0x28'));}if(!_0x57c5b2[_0x17be('0xf')]||!_0x57c5b2[_0x17be('0x29')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x2a'));}_0x4f4ad6=_0x57c5b2;logger[_0x17be('0xc')](util[_0x17be('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x431142['id']));return sentiment(_0x4f4ad6[_0x17be('0xf')],_0x4f4ad6[_0x17be('0x29')],_0x52a62c['sentimentRegion'],_0x416f81[_0x17be('0x13')],_0x52a62c[_0x17be('0x24')]);})['then'](function(_0x2f0b81){logger['info'](util[_0x17be('0xd')](_0x17be('0x2b'),_0x431142['id']));return _0x431142['update']({'sentiment':_0x2f0b81[_0x17be('0x2c')],'sPositive':_0x2f0b81[_0x17be('0x2d')][_0x17be('0x2e')],'sNegative':_0x2f0b81[_0x17be('0x2d')][_0x17be('0x2f')],'sMixed':_0x2f0b81[_0x17be('0x2d')]['Mixed'],'sNeutral':_0x2f0b81[_0x17be('0x2d')][_0x17be('0x30')]});})['then'](function(){logger[_0x17be('0xc')](util['format'](_0x17be('0x1d'),_0x431142['id']));_0x2af298();});case _0x17be('0x31'):return _0x431142[_0x17be('0x1c')]({'transcribeStatus':'FAILED','failureReason':_0x2a37ec[_0x17be('0x12')][_0x17be('0x32')]})[_0x17be('0x18')](function(){logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0x1d'),_0x431142['id']));_0x2af298();});default:logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0x33'),_0x431142['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x431142[_0x17be('0x1e')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x52a62c[_0x17be('0x22')]||!_0x52a62c[_0x17be('0x27')]||!_0x52a62c[_0x17be('0x23')]||!_0x52a62c['language']||!_0x52a62c[_0x17be('0x25')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x34'));}if(!_0x431142['fileText']){throw new Error(_0x17be('0x26'));}if(_0x52a62c['sentimentAccountId']===_0x40e3d5['id']){return _0x40e3d5;}else{return db[_0x17be('0x35')][_0x17be('0x36')]({'where':{'id':_settings[_0x17be('0x27')]}});}})[_0x17be('0x18')](function(_0x3812c6){if(!_0x3812c6){throw new db[(_0x17be('0x1f'))]['ValidationError'](_0x17be('0x28'));}if(!_0x3812c6[_0x17be('0xf')]||!_0x3812c6[_0x17be('0x29')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x2a'));}_0x4f4ad6=_0x3812c6;logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0x37'),_0x431142['id']));return sentiment(_0x4f4ad6[_0x17be('0xf')],_0x4f4ad6[_0x17be('0x29')],_0x52a62c[_0x17be('0x23')],_0x431142['fileText'],_0x52a62c[_0x17be('0x24')]);})[_0x17be('0x18')](function(_0x380e6b){logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0x2b'),_0x431142['id']));return _0x431142['update']({'sentiment':_0x380e6b[_0x17be('0x2c')],'sPositive':_0x380e6b[_0x17be('0x2d')][_0x17be('0x2e')],'sNegative':_0x380e6b[_0x17be('0x2d')][_0x17be('0x2f')],'sMixed':_0x380e6b[_0x17be('0x2d')][_0x17be('0x38')],'sNeutral':_0x380e6b[_0x17be('0x2d')][_0x17be('0x30')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger[_0x17be('0xc')](util[_0x17be('0xd')](_0x17be('0x1d'),_0x431142['id']));_0x2af298();});}})[_0x17be('0x39')](function(_0x43be24){if(_0x43be24){if(!_0x43be24[_0x17be('0x3a')]||_0x43be24[_0x17be('0x3a')]!==_0x17be('0x3b')){logger['error'](util[_0x17be('0xd')](_0x17be('0x3c'),_0x431142['id']),util[_0x17be('0x3d')](_0x43be24,{'showHidden':![],'depth':null}));}}_0x2af298();});});}function checkTranscribe(){var _0x46f673;var _0x15b124;var _0x1619d3;return db['VoiceRecording']['findAll']({'where':{'transcribeStatus':_0x17be('0x3e')}})[_0x17be('0x18')](function(_0x38dc2f){if(!_0x38dc2f||!_0x38dc2f['length']){throw new db[(_0x17be('0x1f'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x46f673=_0x38dc2f;return db[_0x17be('0x3f')][_0x17be('0x36')]({'where':{'id':0x1}});})[_0x17be('0x18')](function(_0x427cee){if(!_0x427cee){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x40'));}_0x15b124=_0x427cee;if(!_0x15b124[_0x17be('0x6')]||!_0x15b124[_0x17be('0x41')]||!_0x15b124[_0x17be('0x42')]||!_0x15b124[_0x17be('0x24')]||!_0x15b124['bucket']){throw new db[(_0x17be('0x1f'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x17be('0x35')][_0x17be('0x36')]({'where':{'id':_0x15b124[_0x17be('0x41')]}});})['then'](function(_0x32b4f8){if(!_0x32b4f8){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x28'));}if(!_0x32b4f8[_0x17be('0xf')]||!_0x32b4f8[_0x17be('0x29')]){throw new db[(_0x17be('0x1f'))][(_0x17be('0x20'))](_0x17be('0x2a'));}_0x1619d3=_0x32b4f8;var _0x15a5e5=[];_0x46f673[_0x17be('0x43')](function(_0x1bd9cd){_0x15a5e5[_0x17be('0x44')](checkTranscribeJob(_0x1bd9cd,_0x15b124,_0x1619d3));});return BPromise[_0x17be('0x45')](_0x15a5e5);})['catch'](function(_0x9fcd24){if(_0x9fcd24){if(!_0x9fcd24[_0x17be('0x3a')]||_0x9fcd24[_0x17be('0x3a')]!==_0x17be('0x3b')){logger[_0x17be('0x46')](util['inspect'](_0x9fcd24,{'showHidden':![],'depth':null}));}}});}exports[_0x17be('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xe28e=['Cloud\x20Provider\x20not\x20available','forEach','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','TranscriptionJobStatus','fileText','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptionJob','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','results','length','transcript','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Transcript\x20not\x20available','CloudProvider','findOne','data2','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Positive','SentimentScore','Mixed','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','resolve','Sentiment\x20Analysis\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Negative','Neutral','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','Transcribe\x20not\x20configured'];(function(_0x4b4fed,_0x58724a){var _0x1d6690=function(_0x3d661b){while(--_0x3d661b){_0x4b4fed['push'](_0x4b4fed['shift']());}};_0x1d6690(++_0x58724a);}(_0xe28e,0x1ba));var _0xee28=function(_0x1d4a19,_0x13dc65){_0x1d4a19=_0x1d4a19-0x0;var _0x1fa672=_0xe28e[_0x1d4a19];return _0x1fa672;};var _=require(_0xee28('0x0'));var AWS=require(_0xee28('0x1'));var rp=require(_0xee28('0x2'));var util=require(_0xee28('0x3'));var BPromise=require(_0xee28('0x4'));var db=require(_0xee28('0x5'))['db'];var logger=require(_0xee28('0x6'))(_0xee28('0x7'));function getTranscriptionJob(_0xdc22c0,_0x40fdf8,_0x1c7cb1,_0x43c350){return new Promise(function(_0x162d3f,_0x48e72f){var _0x39b337=new AWS[(_0xee28('0x8'))]({'accessKeyId':_0x40fdf8,'secretAccessKey':_0xdc22c0,'region':_0x1c7cb1});_0x39b337[_0xee28('0x9')]({'TranscriptionJobName':_0x43c350},function(_0x66d0b6,_0x156aad){if(_0x66d0b6){return _0x48e72f(_0x66d0b6);}else{return _0x162d3f(_0x156aad);}});});}function sentiment(_0x478b02,_0x13474c,_0x5d7562,_0x5afe44,_0x561fe4){return new Promise(function(_0x31bc22,_0x7e67b2){var _0x50fa4c=new AWS[(_0xee28('0xa'))]({'accessKeyId':_0x13474c,'secretAccessKey':_0x478b02,'region':_0x5d7562});_0x50fa4c[_0xee28('0xb')]({'Text':_0x5afe44,'LanguageCode':_0x561fe4['substring'](0x0,0x2)},function(_0x40eaab,_0x3b595d){if(_0x40eaab){return _0x7e67b2(_0x40eaab);}else{return _0x31bc22(_0x3b595d);}});});}function checkTranscribeJob(_0x3feffa,_0x2488cf,_0x267031){var _0x46e784;return new BPromise(function(_0x236de4,_0x5caa81){logger[_0xee28('0xc')](util[_0xee28('0xd')](_0xee28('0xe'),_0x3feffa['id'],_0x3feffa[_0xee28('0xf')]));return getTranscriptionJob(_0x267031[_0xee28('0x10')],_0x267031['data2'],_0x2488cf[_0xee28('0x11')],_0x3feffa[_0xee28('0xf')])[_0xee28('0x12')](function(_0x343358){logger[_0xee28('0xc')](util[_0xee28('0xd')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x3feffa['id'],_0x3feffa[_0xee28('0xf')],_0x343358['TranscriptionJob'][_0xee28('0x13')]));if(!_0x3feffa[_0xee28('0x14')]){switch(_0x343358['TranscriptionJob'][_0xee28('0x13')]){case'COMPLETED':var _0x3c9ac6={'transcribeStatus':_0x343358['TranscriptionJob'][_0xee28('0x13')],'fileUri':_0x343358['TranscriptionJob'][_0xee28('0x15')]['TranscriptFileUri']};logger[_0xee28('0xc')](util[_0xee28('0xd')](_0xee28('0x16'),_0x3feffa['id']));return rp({'uri':_0x343358[_0xee28('0x17')][_0xee28('0x15')][_0xee28('0x18')],'json':!![]})[_0xee28('0x12')](function(_0x4bda53){logger[_0xee28('0xc')](util[_0xee28('0xd')](_0xee28('0x19'),_0x3feffa['id']));if(_0x4bda53&&_0x4bda53['results']&&_0x4bda53['results'][_0xee28('0x1a')]&&_0x4bda53[_0xee28('0x1b')][_0xee28('0x1a')][_0xee28('0x1c')]){_0x3c9ac6[_0xee28('0x14')]='';for(var _0x3acfc9=0x0;_0x3acfc9<_0x4bda53[_0xee28('0x1b')][_0xee28('0x1a')][_0xee28('0x1c')];_0x3acfc9++){_0x3c9ac6[_0xee28('0x14')]+=_0x4bda53[_0xee28('0x1b')]['transcripts'][_0x3acfc9][_0xee28('0x1d')]+'';}}return _0x3feffa['update'](_0x3c9ac6);})['then'](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3feffa['id']));if(!_0x3feffa[_0xee28('0x1e')]){throw new db[(_0xee28('0x1f'))][(_0xee28('0x20'))](_0xee28('0x21'));}if(!_0x2488cf[_0xee28('0x22')]||!_0x2488cf[_0xee28('0x23')]||!_0x2488cf[_0xee28('0x24')]||!_0x2488cf['language']||!_0x2488cf[_0xee28('0x25')]){throw new db[(_0xee28('0x1f'))][(_0xee28('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x3c9ac6[_0xee28('0x14')]){throw new Error(_0xee28('0x26'));}if(_0x2488cf[_0xee28('0x23')]===_0x267031['id']){return _0x267031;}else{return db[_0xee28('0x27')][_0xee28('0x28')]({'where':{'id':_settings[_0xee28('0x23')]}});}})[_0xee28('0x12')](function(_0x5d2a9d){if(!_0x5d2a9d){throw new db[(_0xee28('0x1f'))][(_0xee28('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5d2a9d[_0xee28('0x10')]||!_0x5d2a9d[_0xee28('0x29')]){throw new db[(_0xee28('0x1f'))][(_0xee28('0x20'))](_0xee28('0x2a'));}_0x46e784=_0x5d2a9d;logger[_0xee28('0xc')](util[_0xee28('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x3feffa['id']));return sentiment(_0x46e784['data1'],_0x46e784['data2'],_0x2488cf[_0xee28('0x24')],_0x3c9ac6[_0xee28('0x14')],_0x2488cf[_0xee28('0x2b')]);})[_0xee28('0x12')](function(_0x455385){logger[_0xee28('0xc')](util['format'](_0xee28('0x2c'),_0x3feffa['id']));return _0x3feffa[_0xee28('0x2d')]({'sentiment':_0x455385['Sentiment'],'sPositive':_0x455385['SentimentScore'][_0xee28('0x2e')],'sNegative':_0x455385[_0xee28('0x2f')]['Negative'],'sMixed':_0x455385['SentimentScore'][_0xee28('0x30')],'sNeutral':_0x455385[_0xee28('0x2f')]['Neutral']});})[_0xee28('0x12')](function(){logger[_0xee28('0xc')](util[_0xee28('0xd')](_0xee28('0x31'),_0x3feffa['id']));_0x236de4();});case _0xee28('0x32'):return _0x3feffa[_0xee28('0x2d')]({'transcribeStatus':_0xee28('0x32'),'failureReason':_0x343358[_0xee28('0x17')][_0xee28('0x33')]})[_0xee28('0x12')](function(){logger[_0xee28('0xc')](util[_0xee28('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3feffa['id']));_0x236de4();});default:logger[_0xee28('0xc')](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x3feffa['id']));break;}}else{return BPromise[_0xee28('0x34')]()['then'](function(){if(!_0x3feffa[_0xee28('0x1e')]){throw new db['Sequelize'][(_0xee28('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2488cf[_0xee28('0x22')]||!_0x2488cf[_0xee28('0x23')]||!_0x2488cf[_0xee28('0x24')]||!_0x2488cf[_0xee28('0x2b')]||!_0x2488cf['bucket']){throw new db[(_0xee28('0x1f'))]['ValidationError'](_0xee28('0x35'));}if(!_0x3feffa[_0xee28('0x14')]){throw new Error(_0xee28('0x26'));}if(_0x2488cf[_0xee28('0x23')]===_0x267031['id']){return _0x267031;}else{return db[_0xee28('0x27')][_0xee28('0x28')]({'where':{'id':_settings[_0xee28('0x23')]}});}})['then'](function(_0x4d9d21){if(!_0x4d9d21){throw new db[(_0xee28('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x4d9d21[_0xee28('0x10')]||!_0x4d9d21[_0xee28('0x29')]){throw new db['Sequelize'][(_0xee28('0x20'))](_0xee28('0x2a'));}_0x46e784=_0x4d9d21;logger[_0xee28('0xc')](util[_0xee28('0xd')](_0xee28('0x36'),_0x3feffa['id']));return sentiment(_0x46e784[_0xee28('0x10')],_0x46e784[_0xee28('0x29')],_0x2488cf['sentimentRegion'],_0x3feffa[_0xee28('0x14')],_0x2488cf[_0xee28('0x2b')]);})[_0xee28('0x12')](function(_0x41fb48){logger[_0xee28('0xc')](util['format'](_0xee28('0x2c'),_0x3feffa['id']));return _0x3feffa[_0xee28('0x2d')]({'sentiment':_0x41fb48['Sentiment'],'sPositive':_0x41fb48[_0xee28('0x2f')][_0xee28('0x2e')],'sNegative':_0x41fb48[_0xee28('0x2f')][_0xee28('0x37')],'sMixed':_0x41fb48[_0xee28('0x2f')][_0xee28('0x30')],'sNeutral':_0x41fb48['SentimentScore'][_0xee28('0x38')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger[_0xee28('0xc')](util[_0xee28('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3feffa['id']));_0x236de4();});}})[_0xee28('0x39')](function(_0x373e99){if(_0x373e99){if(!_0x373e99[_0xee28('0x3a')]||_0x373e99['name']!=='SequelizeValidationError'){logger[_0xee28('0x3b')](util[_0xee28('0xd')](_0xee28('0x3c'),_0x3feffa['id']),util[_0xee28('0x3d')](_0x373e99,{'showHidden':![],'depth':null}));}}_0x236de4();});});}function checkTranscribe(){var _0x225c4a;var _0x26f0ae;var _0x2574c5;return db[_0xee28('0x3e')][_0xee28('0x3f')]({'where':{'transcribeStatus':_0xee28('0x40')}})['then'](function(_0x170f57){if(!_0x170f57||!_0x170f57['length']){throw new db[(_0xee28('0x1f'))][(_0xee28('0x20'))](_0xee28('0x41'));}_0x225c4a=_0x170f57;return db[_0xee28('0x42')][_0xee28('0x28')]({'where':{'id':0x1}});})['then'](function(_0x5247fe){if(!_0x5247fe){throw new db['Sequelize'][(_0xee28('0x20'))]('Settings\x20not\x20available');}_0x26f0ae=_0x5247fe;if(!_0x26f0ae['transcribe']||!_0x26f0ae[_0xee28('0x43')]||!_0x26f0ae['transcribeRegion']||!_0x26f0ae[_0xee28('0x2b')]||!_0x26f0ae[_0xee28('0x25')]){throw new db[(_0xee28('0x1f'))][(_0xee28('0x20'))](_0xee28('0x44'));}return db[_0xee28('0x27')][_0xee28('0x28')]({'where':{'id':_0x26f0ae[_0xee28('0x43')]}});})[_0xee28('0x12')](function(_0x10d393){if(!_0x10d393){throw new db['Sequelize'][(_0xee28('0x20'))](_0xee28('0x45'));}if(!_0x10d393[_0xee28('0x10')]||!_0x10d393['data2']){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x2574c5=_0x10d393;var _0x2fd39a=[];_0x225c4a[_0xee28('0x46')](function(_0x186306){_0x2fd39a['push'](checkTranscribeJob(_0x186306,_0x26f0ae,_0x2574c5));});return BPromise[_0xee28('0x47')](_0x2fd39a);})[_0xee28('0x39')](function(_0x204bbe){if(_0x204bbe){if(!_0x204bbe[_0xee28('0x3a')]||_0x204bbe[_0xee28('0x3a')]!=='SequelizeValidationError'){logger[_0xee28('0x3b')](util[_0xee28('0x3d')](_0x204bbe,{'showHidden':![],'depth':null}));}}});}exports[_0xee28('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 411174c..0682e13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d10=['findAll','subtract','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','whatsappInteraction:update','catch','error','inspect','lodash','moment','ioredis','util','../../config/environment','../logger','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction'];(function(_0x58b015,_0x1637fd){var _0xfaa521=function(_0x4306a9){while(--_0x4306a9){_0x58b015['push'](_0x58b015['shift']());}};_0xfaa521(++_0x1637fd);}(_0x5d10,0x85));var _0x05d1=function(_0x42f62c,_0x3f5a42){_0x42f62c=_0x42f62c-0x0;var _0x58b6e9=_0x5d10[_0x42f62c];return _0x58b6e9;};'use strict';var _=require(_0x05d1('0x0'));var moment=require(_0x05d1('0x1'));var Redis=require(_0x05d1('0x2'));var util=require(_0x05d1('0x3'));var config=require(_0x05d1('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x05d1('0x5'))(_0x05d1('0x6'));config['redis']=_[_0x05d1('0x7')](config[_0x05d1('0x8')],{'host':_0x05d1('0x9'),'port':0x18eb});var io=require(_0x05d1('0xa'))(new Redis(config[_0x05d1('0x8')]));function closeInteractions(){var _0x1e2fc4=[];return db[_0x05d1('0xb')][_0x05d1('0xc')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x05d1('0xd')](0x18,'hours')}}})['then'](function(_0x52525f){if(_0x52525f&&_0x52525f[_0x05d1('0xe')]){_0x1e2fc4=_[_0x05d1('0xf')](_0x52525f||[],'id');logger[_0x05d1('0x10')](_0x05d1('0x11'),_0x1e2fc4[_0x05d1('0x12')]());return db[_0x05d1('0xb')][_0x05d1('0x13')]({'closeReason':_0x05d1('0x14'),'disposition':_0x05d1('0x15'),'closed':!![],'closedAt':moment()['format'](_0x05d1('0x16'))},{'where':{'id':_0x1e2fc4}});}})[_0x05d1('0x17')](function(){if(_0x1e2fc4&&_0x1e2fc4['length']){logger['info'](_0x05d1('0x18'),_0x1e2fc4[_0x05d1('0x12')]());for(var _0xbaaeeb=0x0;_0xbaaeeb<_0x1e2fc4[_0x05d1('0xe')];_0xbaaeeb++){io['emit'](_0x05d1('0x19'),{'id':_0x1e2fc4[_0xbaaeeb],'closed':!![]});}}})[_0x05d1('0x1a')](function(_0x2eb327){logger[_0x05d1('0x1b')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x2eb327?util[_0x05d1('0x1c')](_0x2eb327,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x9cbb=['timeout','format','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','inspect','start','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','defaults','localhost','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system'];(function(_0x402258,_0x3f8a8e){var _0x71c0cc=function(_0x5abb53){while(--_0x5abb53){_0x402258['push'](_0x402258['shift']());}};_0x71c0cc(++_0x3f8a8e);}(_0x9cbb,0xf0));var _0xb9cb=function(_0x45a715,_0x165ca){_0x45a715=_0x45a715-0x0;var _0x56f234=_0x9cbb[_0x45a715];return _0x56f234;};'use strict';var _=require('lodash');var moment=require(_0xb9cb('0x0'));var Redis=require(_0xb9cb('0x1'));var util=require(_0xb9cb('0x2'));var config=require(_0xb9cb('0x3'));var db=require(_0xb9cb('0x4'))['db'];var logger=require('../logger')(_0xb9cb('0x5'));config[_0xb9cb('0x6')]=_[_0xb9cb('0x7')](config[_0xb9cb('0x6')],{'host':_0xb9cb('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x2edcaf=[];return db[_0xb9cb('0x9')][_0xb9cb('0xa')]({'raw':!![],'attributes':['id',_0xb9cb('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0xb9cb('0xc'))}}})[_0xb9cb('0xd')](function(_0x23ca13){if(_0x23ca13&&_0x23ca13[_0xb9cb('0xe')]){_0x2edcaf=_[_0xb9cb('0xf')](_0x23ca13||[],'id');logger[_0xb9cb('0x10')](_0xb9cb('0x11'),_0x2edcaf[_0xb9cb('0x12')]());return db[_0xb9cb('0x9')][_0xb9cb('0x13')]({'closeReason':_0xb9cb('0x14'),'disposition':_0xb9cb('0x15'),'closed':!![],'closedAt':moment()[_0xb9cb('0x16')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x2edcaf}});}})[_0xb9cb('0xd')](function(){if(_0x2edcaf&&_0x2edcaf[_0xb9cb('0xe')]){logger[_0xb9cb('0x10')](_0xb9cb('0x17'),_0x2edcaf['join']());for(var _0xe894db=0x0;_0xe894db<_0x2edcaf[_0xb9cb('0xe')];_0xe894db++){io[_0xb9cb('0x18')]('whatsappInteraction:update',{'id':_0x2edcaf[_0xe894db],'closed':!![]});}}})[_0xb9cb('0x19')](function(_0x549474){logger[_0xb9cb('0x1a')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x549474?util[_0xb9cb('0x1b')](_0x549474,{'showHidden':![],'depth':null}):'');});}exports[_0xb9cb('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 5c79e02..d464755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac4=['contacts1','CmHopper','finished\x20populating','hopper1','contacts2','hopper2','catch','util','../mysqldb','push','Innocenzo','innocenzo.biondo','@xcally.com','now','Biondo','CmContact','destroy','then','bulkCreate','log'];(function(_0x395654,_0x28b3d0){var _0xd43925=function(_0x1eb5b6){while(--_0x1eb5b6){_0x395654['push'](_0x395654['shift']());}};_0xd43925(++_0x28b3d0);}(_0xbac4,0x15b));var _0x4bac=function(_0xecf701,_0x446654){_0xecf701=_0xecf701-0x0;var _0x2924b2=_0xbac4[_0xecf701];return _0x2924b2;};'use strict';var util=require(_0x4bac('0x0'));var db=require(_0x4bac('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x4bac('0x2')]({'id':i,'firstName':_0x4bac('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x4bac('0x4')+i+_0x4bac('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x4bac('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x4bac('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x4bac('0x6')](),'updatedAt':Date[_0x4bac('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x4bac('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x4bac('0x7')+i,'phone':0xf879fb460+i,'email':_0x4bac('0x4')+i+_0x4bac('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date[_0x4bac('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x4bac('0x6')](),'updatedAt':Date[_0x4bac('0x6')]()});}db[_0x4bac('0x8')][_0x4bac('0x9')]({'where':{}})[_0x4bac('0xa')](function(){return db[_0x4bac('0x8')][_0x4bac('0xb')](contacts);})['then'](function(){console[_0x4bac('0xc')]('finished\x20populating',_0x4bac('0xd'));return db[_0x4bac('0xe')][_0x4bac('0x9')]({'where':{}});})[_0x4bac('0xa')](function(){return db[_0x4bac('0xe')][_0x4bac('0xb')](hopper);})[_0x4bac('0xa')](function(){console[_0x4bac('0xc')](_0x4bac('0xf'),_0x4bac('0x10'));return db[_0x4bac('0x8')]['bulkCreate'](contacts2);})[_0x4bac('0xa')](function(){console[_0x4bac('0xc')](_0x4bac('0xf'),_0x4bac('0x11'));return db[_0x4bac('0xe')][_0x4bac('0xb')](hopper2);})[_0x4bac('0xa')](function(){console[_0x4bac('0xc')](_0x4bac('0xf'),_0x4bac('0x12'));})[_0x4bac('0x13')](function(_0x26b0da){console[_0x4bac('0xc')](_0x26b0da);});
\ No newline at end of file
+var _0xfd77=['now','push','innocenzo.biondo','CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','contacts2','hopper2','util','../mysqldb','Innocenzo','Biondo','@xcally.com'];(function(_0x415cf4,_0x1c5b67){var _0x11b6f2=function(_0x4400da){while(--_0x4400da){_0x415cf4['push'](_0x415cf4['shift']());}};_0x11b6f2(++_0x1c5b67);}(_0xfd77,0x13f));var _0x7fd7=function(_0x543409,_0xf8b53b){_0x543409=_0x543409-0x0;var _0x3f250d=_0xfd77[_0x543409];return _0x3f250d;};'use strict';var util=require(_0x7fd7('0x0'));var db=require(_0x7fd7('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x7fd7('0x2')+i,'lastName':_0x7fd7('0x3')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x7fd7('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x7fd7('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x7fd7('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x7fd7('0x6')]({'id':i,'firstName':_0x7fd7('0x2')+i,'lastName':_0x7fd7('0x3')+i,'phone':0xf879fb460+i,'email':_0x7fd7('0x7')+i+_0x7fd7('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x7fd7('0x6')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x7fd7('0x5')]()});}db[_0x7fd7('0x8')][_0x7fd7('0x9')]({'where':{}})[_0x7fd7('0xa')](function(){return db[_0x7fd7('0x8')][_0x7fd7('0xb')](contacts);})['then'](function(){console[_0x7fd7('0xc')](_0x7fd7('0xd'),_0x7fd7('0xe'));return db['CmHopper'][_0x7fd7('0x9')]({'where':{}});})[_0x7fd7('0xa')](function(){return db[_0x7fd7('0xf')][_0x7fd7('0xb')](hopper);})['then'](function(){console[_0x7fd7('0xc')]('finished\x20populating','hopper1');return db['CmContact'][_0x7fd7('0xb')](contacts2);})[_0x7fd7('0xa')](function(){console[_0x7fd7('0xc')]('finished\x20populating',_0x7fd7('0x10'));return db[_0x7fd7('0xf')][_0x7fd7('0xb')](hopper2);})[_0x7fd7('0xa')](function(){console['log'](_0x7fd7('0xd'),_0x7fd7('0x11'));})['catch'](function(_0xf6ee74){console[_0x7fd7('0xc')](_0xf6ee74);});
\ No newline at end of file
index f3847c8..8054230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65cb=['add\x20user','catch','util','../mysqldb','push','%s%s','agent','format','%s%s@xcally.com','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','bulkCreate','then','log'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x65cb,0x17c));var _0xb65c=function(_0x5b34f2,_0x10e710){_0x5b34f2=_0x5b34f2-0x0;var _0x5e1282=_0x65cb[_0x5b34f2];return _0x5e1282;};'use strict';var util=require(_0xb65c('0x0'));var db=require(_0xb65c('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xb65c('0x2')]({'name':util['format'](_0xb65c('0x3'),_0xb65c('0x4'),i),'fullname':util['format']('%s%s',_0xb65c('0x4'),i),'email':util[_0xb65c('0x5')](_0xb65c('0x6'),_0xb65c('0x4'),i),'role':'agent','password':'password','internal':0xfa0+i,'type':_0xb65c('0x7'),'transport':[_0xb65c('0x8'),'ws',_0xb65c('0x9')],'disallow':[_0xb65c('0xa')],'allow':[_0xb65c('0xb')],'defaultuser':util[_0xb65c('0x5')](_0xb65c('0x3'),_0xb65c('0x4'),i),'encryption':'yes','avpf':_0xb65c('0xc'),'force_avp':_0xb65c('0xc'),'icesupport':'yes','dtlsenable':_0xb65c('0xc'),'dtlsverify':'no','dtlscertfile':_0xb65c('0xd'),'dtlsprivatekey':_0xb65c('0xe'),'dtlssetup':'actpass','callerid':util[_0xb65c('0x5')](_0xb65c('0xf'),util[_0xb65c('0x5')]('%s%s',_0xb65c('0x4'),i),0xfa0+i)});}db['User'][_0xb65c('0x10')](users)[_0xb65c('0x11')](function(){console[_0xb65c('0x12')](_0xb65c('0x13'));})[_0xb65c('0x14')](function(_0x389e79){console['log'](_0x389e79);});
\ No newline at end of file
+var _0x9878=['bulkCreate','log','catch','util','../mysqldb','push','format','%s%s','agent','friend','wss','all','yes','/etc/pki/tls/certs/motion.crt','\x22%s\x22\x20<%s>'];(function(_0x3e35e1,_0x13bd82){var _0x2237f8=function(_0x318949){while(--_0x318949){_0x3e35e1['push'](_0x3e35e1['shift']());}};_0x2237f8(++_0x13bd82);}(_0x9878,0x13e));var _0x8987=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9878[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x8987('0x0'));var db=require(_0x8987('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x8987('0x2')]({'name':util[_0x8987('0x3')](_0x8987('0x4'),_0x8987('0x5'),i),'fullname':util[_0x8987('0x3')](_0x8987('0x4'),'agent',i),'email':util[_0x8987('0x3')]('%s%s@xcally.com',_0x8987('0x5'),i),'role':_0x8987('0x5'),'password':'password','internal':0xfa0+i,'type':_0x8987('0x6'),'transport':['udp','ws',_0x8987('0x7')],'disallow':[_0x8987('0x8')],'allow':['ulaw'],'defaultuser':util[_0x8987('0x3')]('%s%s',_0x8987('0x5'),i),'encryption':_0x8987('0x9'),'avpf':_0x8987('0x9'),'force_avp':_0x8987('0x9'),'icesupport':_0x8987('0x9'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x8987('0xa'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':'actpass','callerid':util[_0x8987('0x3')](_0x8987('0xb'),util[_0x8987('0x3')]('%s%s',_0x8987('0x5'),i),0xfa0+i)});}db['User'][_0x8987('0xc')](users)['then'](function(){console[_0x8987('0xd')]('add\x20user');})[_0x8987('0xe')](function(_0x2397a4){console[_0x8987('0xd')](_0x2397a4);});
\ No newline at end of file
index 5e180eb..4e48761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1335=['user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','setMaxListeners','address','request','connection','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','name','Agents','User','role','agent','telephone','ivr','findOne','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','where','Campaign','type','format','%s:queue:%s','user:%s','handshake','find','query','ChatInteraction','ChatInteractions','MailInteractions','SmsInteraction','SmsInteractions','WhatsappInteractions','admin','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','user','voice:inbound','userProfileId','FaxQueues','OpenchannelQueues','WhatsappQueues','WhatsappQueue','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','FaxInteractions','removeFaxInteractions'];(function(_0x4997fb,_0x2f40cb){var _0x427eb9=function(_0x135b98){while(--_0x135b98){_0x4997fb['push'](_0x4997fb['shift']());}};_0x427eb9(++_0x2f40cb);}(_0x1335,0xe6));var _0x5133=function(_0x377616,_0x41b7d7){_0x377616=_0x377616-0x0;var _0x1867fe=_0x1335[_0x377616];return _0x1867fe;};'use strict';var _=require(_0x5133('0x0'));var util=require(_0x5133('0x1'));var BPromise=require(_0x5133('0x2'));var db=require(_0x5133('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x5133('0x4')],'include':[{'as':_0x5133('0x5'),'model':db[_0x5133('0x6')],'attributes':['id',_0x5133('0x4'),_0x5133('0x7')],'raw':!![],'where':{'role':_0x5133('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x5133('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5133('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5133('0x4'),'type'],'where':{'type':_0x5133('0xa')}};function getAssociatedResources(_0x58eb7a,_0x3d1d4c,_0x21a55b){return db['UserProfileSection'][_0x5133('0xb')]({'where':{'name':_0x58eb7a,'userProfileId':_0x3d1d4c},'raw':!![]})['then'](function(_0x231259){if(_0x231259){if(_0x231259[_0x5133('0xc')]){switch(_0x58eb7a){case _0x5133('0xd'):case _0x5133('0xe'):case'FaxQueues':case _0x5133('0xf'):case _0x5133('0x10'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x21a55b]['findAll'](queryQueues);case _0x5133('0x11'):return db[_0x21a55b][_0x5133('0x12')](queryTelephones);case _0x5133('0x13'):return db[_0x21a55b][_0x5133('0x12')](queryTrunks);case _0x5133('0x14'):return db[_0x21a55b][_0x5133('0x12')](queryCampaigns);}}else{return db[_0x5133('0x15')]['findAll']({'attributes':[_0x5133('0x16')],'where':{'sectionId':_0x231259['id']},'raw':!![]})[_0x5133('0x17')](function(_0x366622){if(_0x366622){var _0x19af68={'where':{'id':_[_0x5133('0x18')](_0x366622,'resourceId')},'raw':!![]};switch(_0x21a55b){case _0x5133('0x6'):_0x19af68[_0x5133('0x19')][_0x5133('0x7')]=_0x5133('0x9');break;case _0x5133('0x1a'):_0x19af68[_0x5133('0x19')][_0x5133('0x1b')]='ivr';break;}return db[_0x21a55b][_0x5133('0x12')](_0x19af68);}else{return[];}});}}else{return[];}})[_0x5133('0x17')](function(_0x25114d){return _0x25114d;});}function joinOrLeaveQueues(_0xa6ca5a,_0x2c8e3a,_0x501a6c,_0x6b429e){_0xa6ca5a[_0x2c8e3a](util[_0x5133('0x1c')](_0x5133('0x1d'),_0x501a6c,_0x6b429e['name']));if(_0x6b429e['Agents']){for(var _0x5e30d1=0x0;_0x5e30d1<_0x6b429e[_0x5133('0x5')]['length'];_0x5e30d1+=0x1){_0xa6ca5a[_0x2c8e3a](util[_0x5133('0x1c')](_0x5133('0x1e'),_0x6b429e['Agents'][_0x5e30d1][_0x5133('0x4')]));}}}function joinOrLeave(_0x388fda,_0x3eb78f,_0x4b9a88){var _0x14c5ba;if(_0x388fda[_0x5133('0x1f')]['query']['id']){db[_0x5133('0x6')][_0x5133('0x20')]({'attributes':['id',_0x5133('0x4'),'role','userProfileId'],'where':{'id':_0x388fda[_0x5133('0x1f')][_0x5133('0x21')]['id']},'include':[{'model':db[_0x5133('0x22')],'as':_0x5133('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x5133('0x24'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5133('0x25')],'as':_0x5133('0x26'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x5133('0x27'),'attributes':['id'],'raw':!![]}]})[_0x5133('0x17')](function(_0x1ecb32){if(_0x1ecb32){_0x14c5ba=_0x1ecb32;_0x388fda[_0x3eb78f](util[_0x5133('0x1c')](_0x5133('0x1e'),_0x1ecb32[_0x5133('0x4')]));var _0x3a43a2=[];switch(_0x1ecb32[_0x5133('0x7')]){case _0x5133('0x28'):_0x388fda[_0x3eb78f]('voice:inbound');_0x388fda[_0x3eb78f](_0x5133('0x29'));if(queryQueues[_0x5133('0x2a')](_0x5133('0x2b'))){delete queryQueues['include'];}_0x3a43a2['push'](db[_0x5133('0x2c')][_0x5133('0x12')](queryQueues));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x2e')][_0x5133('0x12')](queryQueues));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x2f')]['findAll'](queryQueues));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x30')][_0x5133('0x12')](queryQueues));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x31')][_0x5133('0x12')](queryQueues));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x32')][_0x5133('0x12')](queryQueues));_0x3a43a2[_0x5133('0x2d')](db['WhatsappQueue'][_0x5133('0x12')](queryQueues));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x6')][_0x5133('0x12')](queryTelephones));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x33')][_0x5133('0x12')](queryTrunks));_0x3a43a2[_0x5133('0x2d')](db[_0x5133('0x1a')]['findAll'](queryCampaigns));_0x3a43a2[_0x5133('0x2d')](db['User'][_0x5133('0x12')](queryAgents));break;case _0x5133('0x34'):_0x388fda[_0x3eb78f](_0x5133('0x35'));_0x388fda[_0x3eb78f](_0x5133('0x29'));_0x3a43a2['push'](getAssociatedResources(_0x5133('0xd'),_0x1ecb32[_0x5133('0x36')],'VoiceQueue'));_0x3a43a2[_0x5133('0x2d')](getAssociatedResources('ChatQueues',_0x1ecb32[_0x5133('0x36')],_0x5133('0x2e')));_0x3a43a2[_0x5133('0x2d')](getAssociatedResources(_0x5133('0x37'),_0x1ecb32[_0x5133('0x36')],'FaxQueue'));_0x3a43a2[_0x5133('0x2d')](getAssociatedResources(_0x5133('0xf'),_0x1ecb32[_0x5133('0x36')],_0x5133('0x30')));_0x3a43a2[_0x5133('0x2d')](getAssociatedResources(_0x5133('0x10'),_0x1ecb32[_0x5133('0x36')],_0x5133('0x31')));_0x3a43a2['push'](getAssociatedResources(_0x5133('0x38'),_0x1ecb32['userProfileId'],_0x5133('0x32')));_0x3a43a2[_0x5133('0x2d')](getAssociatedResources(_0x5133('0x39'),_0x1ecb32[_0x5133('0x36')],_0x5133('0x3a')));_0x3a43a2['push'](getAssociatedResources(_0x5133('0x11'),_0x1ecb32['userProfileId'],_0x5133('0x6')));_0x3a43a2['push'](getAssociatedResources(_0x5133('0x13'),_0x1ecb32[_0x5133('0x36')],_0x5133('0x33')));_0x3a43a2[_0x5133('0x2d')](getAssociatedResources(_0x5133('0x14'),_0x1ecb32[_0x5133('0x36')],_0x5133('0x1a')));_0x3a43a2['push'](db['User']['findAll'](queryAgents));break;case'agent':_0x388fda[_0x3eb78f](_0x5133('0x35'));_0x388fda[_0x3eb78f](_0x5133('0x29'));_0x3a43a2['push'](_0x1ecb32[_0x5133('0x3b')]({'attributes':['id',_0x5133('0x4')]}));_0x3a43a2[_0x5133('0x2d')](_0x1ecb32['getChatQueues']({'attributes':['id','name']}));_0x3a43a2[_0x5133('0x2d')](_0x1ecb32[_0x5133('0x3c')]({'attributes':['id',_0x5133('0x4')]}));_0x3a43a2[_0x5133('0x2d')](_0x1ecb32[_0x5133('0x3d')]({'attributes':['id',_0x5133('0x4')]}));_0x3a43a2['push'](_0x1ecb32[_0x5133('0x3e')]({'attributes':['id',_0x5133('0x4')]}));_0x3a43a2['push'](_0x1ecb32[_0x5133('0x3f')]({'attributes':['id',_0x5133('0x4')]}));_0x3a43a2[_0x5133('0x2d')](_0x1ecb32[_0x5133('0x40')]({'attributes':['id','name']}));break;}return BPromise[_0x5133('0x41')](_0x3a43a2);}})[_0x5133('0x17')](function(_0x3a6ec2){if(_0x3a6ec2&&_0x3a6ec2[_0x5133('0x42')]){for(var _0x59f6b9=0x0;_0x59f6b9<_0x3a6ec2[_0x5133('0x42')];_0x59f6b9+=0x1){for(var _0x138bef=0x0;_0x138bef<_0x3a6ec2[_0x59f6b9][_0x5133('0x42')];_0x138bef+=0x1){switch(_0x59f6b9){case 0x0:joinOrLeaveQueues(_0x388fda,_0x3eb78f,'voice',_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x1:joinOrLeaveQueues(_0x388fda,_0x3eb78f,_0x5133('0x43'),_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x2:joinOrLeaveQueues(_0x388fda,_0x3eb78f,_0x5133('0x44'),_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x3:joinOrLeaveQueues(_0x388fda,_0x3eb78f,_0x5133('0x45'),_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x4:joinOrLeaveQueues(_0x388fda,_0x3eb78f,_0x5133('0x46'),_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x5:joinOrLeaveQueues(_0x388fda,_0x3eb78f,'openchannel',_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x6:joinOrLeaveQueues(_0x388fda,_0x3eb78f,_0x5133('0x47'),_0x3a6ec2[_0x59f6b9][_0x138bef]);break;case 0x7:if(_0x14c5ba[_0x5133('0x7')]!==_0x5133('0x8'))_0x388fda[_0x3eb78f](util[_0x5133('0x1c')](_0x5133('0x48'),_0x3a6ec2[_0x59f6b9][_0x138bef][_0x5133('0x4')]));break;case 0x8:if(_0x14c5ba[_0x5133('0x7')]!=='agent')_0x388fda[_0x3eb78f](util[_0x5133('0x1c')](_0x5133('0x49'),_0x3a6ec2[_0x59f6b9][_0x138bef][_0x5133('0x4')]));break;case 0x9:if(_0x14c5ba[_0x5133('0x7')]!==_0x5133('0x8'))_0x388fda[_0x3eb78f](util[_0x5133('0x1c')](_0x5133('0x4a'),_0x3a6ec2[_0x59f6b9][_0x138bef][_0x5133('0x1b')],_0x3a6ec2[_0x59f6b9][_0x138bef]['name']));break;case 0xa:_0x388fda[_0x3eb78f](util[_0x5133('0x1c')]('user:%s',_0x3a6ec2[_0x59f6b9][_0x138bef][_0x5133('0x4')]));break;}}}}})[_0x5133('0x17')](function(){if(_0x3eb78f===_0x5133('0x4b')){var _0x211f6b=_[_0x5133('0x18')](_0x14c5ba[_0x5133('0x23')],'id');return _0x14c5ba[_0x5133('0x4c')](_0x211f6b)['then'](function(){for(var _0x229512=0x0;_0x229512<_0x211f6b[_0x5133('0x42')];_0x229512+=0x1){_0x4b9a88[_0x5133('0x4d')](_0x5133('0x4e'),{'ChatInteractionId':Number(_0x211f6b[_0x229512]),'UserId':Number(_0x14c5ba['id'])});}});}})[_0x5133('0x17')](function(){if(_0x3eb78f===_0x5133('0x4b')){var _0x3fc2ba=_[_0x5133('0x18')](_0x14c5ba['MailInteractions'],'id');return _0x14c5ba[_0x5133('0x4f')](_0x3fc2ba)[_0x5133('0x17')](function(){for(var _0x2452ba=0x0;_0x2452ba<_0x3fc2ba[_0x5133('0x42')];_0x2452ba+=0x1){_0x4b9a88[_0x5133('0x4d')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x3fc2ba[_0x2452ba]),'UserId':Number(_0x14c5ba['id'])});}});}})[_0x5133('0x17')](function(){if(_0x3eb78f==='leave'){var _0x5125a1=_[_0x5133('0x18')](_0x14c5ba[_0x5133('0x50')],'id');return _0x14c5ba[_0x5133('0x51')](_0x5125a1)[_0x5133('0x17')](function(){for(var _0xf928ff=0x0;_0xf928ff<_0x5125a1[_0x5133('0x42')];_0xf928ff+=0x1){_0x4b9a88[_0x5133('0x4d')](_0x5133('0x52'),{'FaxInteractionId':Number(_0x5125a1[_0xf928ff]),'UserId':Number(_0x14c5ba['id'])});}});}})[_0x5133('0x17')](function(){if(_0x3eb78f===_0x5133('0x4b')){var _0x3da980=_['map'](_0x14c5ba[_0x5133('0x26')],'id');return _0x14c5ba[_0x5133('0x53')](_0x3da980)[_0x5133('0x17')](function(){for(var _0x1a7400=0x0;_0x1a7400<_0x3da980[_0x5133('0x42')];_0x1a7400+=0x1){_0x4b9a88[_0x5133('0x4d')](_0x5133('0x54'),{'SmsInteractionId':Number(_0x3da980[_0x1a7400]),'UserId':Number(_0x14c5ba['id'])});}});}})['then'](function(){if(_0x3eb78f===_0x5133('0x4b')){var _0x18d70f=_['map'](_0x14c5ba[_0x5133('0x55')],'id');return _0x14c5ba[_0x5133('0x56')](_0x18d70f)[_0x5133('0x17')](function(){for(var _0x30704f=0x0;_0x30704f<_0x18d70f[_0x5133('0x42')];_0x30704f+=0x1){_0x4b9a88[_0x5133('0x4d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x18d70f[_0x30704f]),'UserId':Number(_0x14c5ba['id'])});}});}})[_0x5133('0x17')](function(){if(_0x3eb78f===_0x5133('0x4b')){var _0xde9983=_[_0x5133('0x18')](_0x14c5ba[_0x5133('0x27')],'id');return _0x14c5ba[_0x5133('0x57')](_0xde9983)['then'](function(){for(var _0xce9e89=0x0;_0xce9e89<_0xde9983[_0x5133('0x42')];_0xce9e89+=0x1){_0x4b9a88[_0x5133('0x4d')](_0x5133('0x58'),{'WhatsappInteractionId':Number(_0xde9983[_0xce9e89]),'UserId':Number(_0x14c5ba['id'])});}});}})[_0x5133('0x59')](function(_0x4dfa64){_0x388fda['log'](_0x4dfa64);});}}function onDisconnect(_0x1b9186,_0x411122){joinOrLeave(_0x1b9186,'leave',_0x411122);}function onConnect(_0x418b25){joinOrLeave(_0x418b25,_0x5133('0x5a'));}exports[_0x5133('0x5b')]=function(_0x365a62){_0x365a62['on']('connection',function(_0x2f67fd){_0x2f67fd[_0x5133('0x5c')](0x0);_0x2f67fd[_0x5133('0x5d')]=_0x2f67fd[_0x5133('0x5e')][_0x5133('0x5f')]['remoteAddress']+':'+_0x2f67fd[_0x5133('0x5e')][_0x5133('0x5f')][_0x5133('0x60')];_0x2f67fd[_0x5133('0x61')]=new Date();_0x2f67fd[_0x5133('0x62')]=function(_0x36d331){console['log'](_0x5133('0x63')+_0x2f67fd[_0x5133('0x64')][_0x5133('0x4')]+'['+_0x2f67fd[_0x5133('0x5d')]+']',_0x36d331);};_0x2f67fd['on'](_0x5133('0x65'),function(){onDisconnect(_0x2f67fd,_0x365a62);_0x2f67fd['log'](_0x5133('0x66'));});onConnect(_0x2f67fd);_0x2f67fd['log'](_0x5133('0x67'));});};
\ No newline at end of file
+var _0xbd5d=['where','Campaign','%s:queue:%s','length','user:%s','find','handshake','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','format','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','userProfileId','FaxQueues','FaxQueue','SmsQueue','MailQueues','Trunks','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','whatsapp','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','connection','address','request','remotePort','nsp','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','Agents','User','name','role','agent','telephone','type','ivr','findOne','then','autoAssociation','VoiceQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map'];(function(_0x8522e2,_0x4ef21a){var _0x32b74b=function(_0x48b6f3){while(--_0x48b6f3){_0x8522e2['push'](_0x8522e2['shift']());}};_0x32b74b(++_0x4ef21a);}(_0xbd5d,0x118));var _0xdbd5=function(_0x170c09,_0x1b4840){_0x170c09=_0x170c09-0x0;var _0x15c548=_0xbd5d[_0x170c09];return _0x15c548;};'use strict';var _=require(_0xdbd5('0x0'));var util=require(_0xdbd5('0x1'));var BPromise=require('bluebird');var db=require(_0xdbd5('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0xdbd5('0x3'),'model':db[_0xdbd5('0x4')],'attributes':['id',_0xdbd5('0x5'),_0xdbd5('0x6')],'raw':!![],'where':{'role':_0xdbd5('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xdbd5('0x5')],'where':{'role':_0xdbd5('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xdbd5('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xdbd5('0x5')],'where':{'role':_0xdbd5('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xdbd5('0x5'),_0xdbd5('0x9')],'where':{'type':_0xdbd5('0xa')}};function getAssociatedResources(_0x41981,_0x2dc324,_0x476345){return db['UserProfileSection'][_0xdbd5('0xb')]({'where':{'name':_0x41981,'userProfileId':_0x2dc324},'raw':!![]})[_0xdbd5('0xc')](function(_0x2feec7){if(_0x2feec7){if(_0x2feec7[_0xdbd5('0xd')]){switch(_0x41981){case _0xdbd5('0xe'):case'ChatQueues':case'FaxQueues':case _0xdbd5('0xf'):case'MailQueues':case _0xdbd5('0x10'):case _0xdbd5('0x11'):return db[_0x476345][_0xdbd5('0x12')](queryQueues);case _0xdbd5('0x13'):return db[_0x476345]['findAll'](queryTelephones);case'Trunks':return db[_0x476345][_0xdbd5('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x476345][_0xdbd5('0x12')](queryCampaigns);}}else{return db[_0xdbd5('0x14')][_0xdbd5('0x12')]({'attributes':[_0xdbd5('0x15')],'where':{'sectionId':_0x2feec7['id']},'raw':!![]})[_0xdbd5('0xc')](function(_0x595f87){if(_0x595f87){var _0x4e43a9={'where':{'id':_[_0xdbd5('0x16')](_0x595f87,_0xdbd5('0x15'))},'raw':!![]};switch(_0x476345){case'User':_0x4e43a9[_0xdbd5('0x17')][_0xdbd5('0x6')]='telephone';break;case _0xdbd5('0x18'):_0x4e43a9[_0xdbd5('0x17')][_0xdbd5('0x9')]=_0xdbd5('0xa');break;}return db[_0x476345][_0xdbd5('0x12')](_0x4e43a9);}else{return[];}});}}else{return[];}})[_0xdbd5('0xc')](function(_0x164682){return _0x164682;});}function joinOrLeaveQueues(_0x5f006a,_0x2d73d0,_0x2d0449,_0x32ff56){_0x5f006a[_0x2d73d0](util['format'](_0xdbd5('0x19'),_0x2d0449,_0x32ff56['name']));if(_0x32ff56[_0xdbd5('0x3')]){for(var _0x19f666=0x0;_0x19f666<_0x32ff56[_0xdbd5('0x3')][_0xdbd5('0x1a')];_0x19f666+=0x1){_0x5f006a[_0x2d73d0](util['format'](_0xdbd5('0x1b'),_0x32ff56[_0xdbd5('0x3')][_0x19f666]['name']));}}}function joinOrLeave(_0x42fe53,_0x2d1b37,_0x33df4c){var _0x331208;if(_0x42fe53['handshake']['query']['id']){db['User'][_0xdbd5('0x1c')]({'attributes':['id','name',_0xdbd5('0x6'),'userProfileId'],'where':{'id':_0x42fe53[_0xdbd5('0x1d')]['query']['id']},'include':[{'model':db[_0xdbd5('0x1e')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdbd5('0x1f')],'as':_0xdbd5('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xdbd5('0x21')],'as':_0xdbd5('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xdbd5('0x23')],'as':_0xdbd5('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xdbd5('0x25')],'as':_0xdbd5('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xdbd5('0x27')],'as':_0xdbd5('0x28'),'attributes':['id'],'raw':!![]}]})[_0xdbd5('0xc')](function(_0x2fa594){if(_0x2fa594){_0x331208=_0x2fa594;_0x42fe53[_0x2d1b37](util[_0xdbd5('0x29')](_0xdbd5('0x1b'),_0x2fa594['name']));var _0x5f29e0=[];switch(_0x2fa594[_0xdbd5('0x6')]){case _0xdbd5('0x2a'):_0x42fe53[_0x2d1b37](_0xdbd5('0x2b'));_0x42fe53[_0x2d1b37](_0xdbd5('0x2c'));if(queryQueues[_0xdbd5('0x2d')](_0xdbd5('0x2e'))){delete queryQueues[_0xdbd5('0x2e')];}_0x5f29e0[_0xdbd5('0x2f')](db[_0xdbd5('0x30')][_0xdbd5('0x12')](queryQueues));_0x5f29e0[_0xdbd5('0x2f')](db[_0xdbd5('0x31')][_0xdbd5('0x12')](queryQueues));_0x5f29e0['push'](db['FaxQueue'][_0xdbd5('0x12')](queryQueues));_0x5f29e0[_0xdbd5('0x2f')](db['SmsQueue']['findAll'](queryQueues));_0x5f29e0[_0xdbd5('0x2f')](db[_0xdbd5('0x32')]['findAll'](queryQueues));_0x5f29e0[_0xdbd5('0x2f')](db[_0xdbd5('0x33')]['findAll'](queryQueues));_0x5f29e0[_0xdbd5('0x2f')](db[_0xdbd5('0x34')][_0xdbd5('0x12')](queryQueues));_0x5f29e0['push'](db[_0xdbd5('0x4')][_0xdbd5('0x12')](queryTelephones));_0x5f29e0['push'](db[_0xdbd5('0x35')][_0xdbd5('0x12')](queryTrunks));_0x5f29e0['push'](db['Campaign'][_0xdbd5('0x12')](queryCampaigns));_0x5f29e0['push'](db[_0xdbd5('0x4')][_0xdbd5('0x12')](queryAgents));break;case _0xdbd5('0x36'):_0x42fe53[_0x2d1b37](_0xdbd5('0x2b'));_0x42fe53[_0x2d1b37]('voice:outbound');_0x5f29e0[_0xdbd5('0x2f')](getAssociatedResources('VoiceQueues',_0x2fa594['userProfileId'],_0xdbd5('0x30')));_0x5f29e0[_0xdbd5('0x2f')](getAssociatedResources('ChatQueues',_0x2fa594[_0xdbd5('0x37')],_0xdbd5('0x31')));_0x5f29e0['push'](getAssociatedResources(_0xdbd5('0x38'),_0x2fa594[_0xdbd5('0x37')],_0xdbd5('0x39')));_0x5f29e0[_0xdbd5('0x2f')](getAssociatedResources(_0xdbd5('0xf'),_0x2fa594[_0xdbd5('0x37')],_0xdbd5('0x3a')));_0x5f29e0[_0xdbd5('0x2f')](getAssociatedResources(_0xdbd5('0x3b'),_0x2fa594[_0xdbd5('0x37')],_0xdbd5('0x32')));_0x5f29e0['push'](getAssociatedResources('OpenchannelQueues',_0x2fa594['userProfileId'],_0xdbd5('0x33')));_0x5f29e0[_0xdbd5('0x2f')](getAssociatedResources(_0xdbd5('0x11'),_0x2fa594[_0xdbd5('0x37')],'WhatsappQueue'));_0x5f29e0['push'](getAssociatedResources('Telephones',_0x2fa594[_0xdbd5('0x37')],'User'));_0x5f29e0['push'](getAssociatedResources(_0xdbd5('0x3c'),_0x2fa594[_0xdbd5('0x37')],'Trunk'));_0x5f29e0['push'](getAssociatedResources(_0xdbd5('0x3d'),_0x2fa594[_0xdbd5('0x37')],_0xdbd5('0x18')));_0x5f29e0[_0xdbd5('0x2f')](db[_0xdbd5('0x4')]['findAll'](queryAgents));break;case _0xdbd5('0x7'):_0x42fe53[_0x2d1b37](_0xdbd5('0x2b'));_0x42fe53[_0x2d1b37](_0xdbd5('0x2c'));_0x5f29e0[_0xdbd5('0x2f')](_0x2fa594[_0xdbd5('0x3e')]({'attributes':['id',_0xdbd5('0x5')]}));_0x5f29e0['push'](_0x2fa594[_0xdbd5('0x3f')]({'attributes':['id',_0xdbd5('0x5')]}));_0x5f29e0['push'](_0x2fa594[_0xdbd5('0x40')]({'attributes':['id',_0xdbd5('0x5')]}));_0x5f29e0[_0xdbd5('0x2f')](_0x2fa594[_0xdbd5('0x41')]({'attributes':['id',_0xdbd5('0x5')]}));_0x5f29e0['push'](_0x2fa594[_0xdbd5('0x42')]({'attributes':['id',_0xdbd5('0x5')]}));_0x5f29e0[_0xdbd5('0x2f')](_0x2fa594[_0xdbd5('0x43')]({'attributes':['id',_0xdbd5('0x5')]}));_0x5f29e0[_0xdbd5('0x2f')](_0x2fa594[_0xdbd5('0x44')]({'attributes':['id',_0xdbd5('0x5')]}));break;}return BPromise[_0xdbd5('0x45')](_0x5f29e0);}})[_0xdbd5('0xc')](function(_0x11c9b7){if(_0x11c9b7&&_0x11c9b7[_0xdbd5('0x1a')]){for(var _0x2e5c65=0x0;_0x2e5c65<_0x11c9b7['length'];_0x2e5c65+=0x1){for(var _0xd69bb0=0x0;_0xd69bb0<_0x11c9b7[_0x2e5c65]['length'];_0xd69bb0+=0x1){switch(_0x2e5c65){case 0x0:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,_0xdbd5('0x46'),_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x1:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,_0xdbd5('0x47'),_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x2:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,_0xdbd5('0x48'),_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x3:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,_0xdbd5('0x49'),_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x4:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,_0xdbd5('0x4a'),_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x5:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,'openchannel',_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x6:joinOrLeaveQueues(_0x42fe53,_0x2d1b37,_0xdbd5('0x4b'),_0x11c9b7[_0x2e5c65][_0xd69bb0]);break;case 0x7:if(_0x331208['role']!==_0xdbd5('0x7'))_0x42fe53[_0x2d1b37](util[_0xdbd5('0x29')]('telephone:%s',_0x11c9b7[_0x2e5c65][_0xd69bb0]['name']));break;case 0x8:if(_0x331208['role']!==_0xdbd5('0x7'))_0x42fe53[_0x2d1b37](util[_0xdbd5('0x29')](_0xdbd5('0x4c'),_0x11c9b7[_0x2e5c65][_0xd69bb0]['name']));break;case 0x9:if(_0x331208[_0xdbd5('0x6')]!=='agent')_0x42fe53[_0x2d1b37](util[_0xdbd5('0x29')](_0xdbd5('0x4d'),_0x11c9b7[_0x2e5c65][_0xd69bb0][_0xdbd5('0x9')],_0x11c9b7[_0x2e5c65][_0xd69bb0]['name']));break;case 0xa:_0x42fe53[_0x2d1b37](util[_0xdbd5('0x29')](_0xdbd5('0x1b'),_0x11c9b7[_0x2e5c65][_0xd69bb0]['name']));break;}}}}})[_0xdbd5('0xc')](function(){if(_0x2d1b37===_0xdbd5('0x4e')){var _0x35e64f=_['map'](_0x331208[_0xdbd5('0x4f')],'id');return _0x331208[_0xdbd5('0x50')](_0x35e64f)[_0xdbd5('0xc')](function(){for(var _0x2fed13=0x0;_0x2fed13<_0x35e64f['length'];_0x2fed13+=0x1){_0x33df4c[_0xdbd5('0x51')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x35e64f[_0x2fed13]),'UserId':Number(_0x331208['id'])});}});}})[_0xdbd5('0xc')](function(){if(_0x2d1b37==='leave'){var _0x11677a=_[_0xdbd5('0x16')](_0x331208[_0xdbd5('0x20')],'id');return _0x331208[_0xdbd5('0x52')](_0x11677a)[_0xdbd5('0xc')](function(){for(var _0x666f5a=0x0;_0x666f5a<_0x11677a[_0xdbd5('0x1a')];_0x666f5a+=0x1){_0x33df4c['emit'](_0xdbd5('0x53'),{'MailInteractionId':Number(_0x11677a[_0x666f5a]),'UserId':Number(_0x331208['id'])});}});}})[_0xdbd5('0xc')](function(){if(_0x2d1b37==='leave'){var _0x128a10=_[_0xdbd5('0x16')](_0x331208[_0xdbd5('0x22')],'id');return _0x331208[_0xdbd5('0x54')](_0x128a10)[_0xdbd5('0xc')](function(){for(var _0x44caf6=0x0;_0x44caf6<_0x128a10['length'];_0x44caf6+=0x1){_0x33df4c[_0xdbd5('0x51')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x128a10[_0x44caf6]),'UserId':Number(_0x331208['id'])});}});}})[_0xdbd5('0xc')](function(){if(_0x2d1b37==='leave'){var _0x438fb3=_[_0xdbd5('0x16')](_0x331208[_0xdbd5('0x24')],'id');return _0x331208[_0xdbd5('0x55')](_0x438fb3)['then'](function(){for(var _0x449dcf=0x0;_0x449dcf<_0x438fb3['length'];_0x449dcf+=0x1){_0x33df4c[_0xdbd5('0x51')](_0xdbd5('0x56'),{'SmsInteractionId':Number(_0x438fb3[_0x449dcf]),'UserId':Number(_0x331208['id'])});}});}})['then'](function(){if(_0x2d1b37===_0xdbd5('0x4e')){var _0x6474b1=_['map'](_0x331208[_0xdbd5('0x26')],'id');return _0x331208[_0xdbd5('0x57')](_0x6474b1)[_0xdbd5('0xc')](function(){for(var _0x35aa9b=0x0;_0x35aa9b<_0x6474b1[_0xdbd5('0x1a')];_0x35aa9b+=0x1){_0x33df4c[_0xdbd5('0x51')](_0xdbd5('0x58'),{'OpenchannelInteractionId':Number(_0x6474b1[_0x35aa9b]),'UserId':Number(_0x331208['id'])});}});}})['then'](function(){if(_0x2d1b37===_0xdbd5('0x4e')){var _0x35efbd=_[_0xdbd5('0x16')](_0x331208[_0xdbd5('0x28')],'id');return _0x331208[_0xdbd5('0x59')](_0x35efbd)[_0xdbd5('0xc')](function(){for(var _0x3aa8b3=0x0;_0x3aa8b3<_0x35efbd[_0xdbd5('0x1a')];_0x3aa8b3+=0x1){_0x33df4c[_0xdbd5('0x51')](_0xdbd5('0x5a'),{'WhatsappInteractionId':Number(_0x35efbd[_0x3aa8b3]),'UserId':Number(_0x331208['id'])});}});}})[_0xdbd5('0x5b')](function(_0x210320){_0x42fe53[_0xdbd5('0x5c')](_0x210320);});}}function onDisconnect(_0x4d38f4,_0x2cc1d0){joinOrLeave(_0x4d38f4,_0xdbd5('0x4e'),_0x2cc1d0);}function onConnect(_0x3435cc){joinOrLeave(_0x3435cc,_0xdbd5('0x5d'));}exports['default']=function(_0x3e64c3){_0x3e64c3['on'](_0xdbd5('0x5e'),function(_0x23b72d){_0x23b72d['setMaxListeners'](0x0);_0x23b72d[_0xdbd5('0x5f')]=_0x23b72d[_0xdbd5('0x60')][_0xdbd5('0x5e')]['remoteAddress']+':'+_0x23b72d[_0xdbd5('0x60')][_0xdbd5('0x5e')][_0xdbd5('0x61')];_0x23b72d['connectedAt']=new Date();_0x23b72d[_0xdbd5('0x5c')]=function(_0x4de0a9){console['log']('SocketIO\x20'+_0x23b72d[_0xdbd5('0x62')][_0xdbd5('0x5')]+'['+_0x23b72d['address']+']',_0x4de0a9);};_0x23b72d['on']('disconnect',function(){onDisconnect(_0x23b72d,_0x3e64c3);_0x23b72d[_0xdbd5('0x5c')](_0xdbd5('0x63'));});onConnect(_0x23b72d);_0x23b72d[_0xdbd5('0x5c')](_0xdbd5('0x64'));});};
\ No newline at end of file
index 61ce343..fa5b286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ac=['ContactId','undefined','sequelize','query','Sequelize','QueryTypes','SELECT','UserId','then','format','incomingmessage','outgoingmessage','Trigger,\x20%s','offlineMessage','opened','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','contact','interface','SIP/%s','name','agent','closed','changed','substatus','AfterUpdate','User','fullname','length','hasOwnProperty','model','hook','callback','condition','../../mysqldb','jayson/promise','../logger','triggers','http','Chat','ChatInteraction','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','afterCreate','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','info','EventManager','error','catch','get','channel','motionChannel','event','resolve'];(function(_0x386320,_0x2a091c){var _0x89800f=function(_0x123a7b){while(--_0x123a7b){_0x386320['push'](_0x386320['shift']());}};_0x89800f(++_0x2a091c);}(_0x94ac,0x184));var _0xc94a=function(_0xd5cc3b,_0x602af0){_0xd5cc3b=_0xd5cc3b-0x0;var _0x28c64e=_0x94ac[_0xd5cc3b];return _0x28c64e;};'use strict';var util=require('util');var db=require(_0xc94a('0x0'))['db'];var jayson=require(_0xc94a('0x1'));var logger=require(_0xc94a('0x2'))(_0xc94a('0x3'));var client=jayson['client'][_0xc94a('0x4')]({'port':0x232a});var triggers=[{'channel':_0xc94a('0x5'),'model':_0xc94a('0x6'),'event':'afterCreate','condition':_0xc94a('0x7'),'callback':afterCreate},{'channel':_0xc94a('0x5'),'model':'ChatInteraction','event':_0xc94a('0x8'),'condition':_0xc94a('0x9'),'callback':afterUpdate},{'channel':'Chat','model':_0xc94a('0xa'),'event':'afterCreate','condition':_0xc94a('0xb'),'callback':afterCreateMessage},{'channel':'Chat','model':_0xc94a('0xc'),'event':_0xc94a('0xd'),'condition':_0xc94a('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0xc94a('0xe'),'model':'SmsInteraction','event':_0xc94a('0xd'),'condition':_0xc94a('0x7'),'callback':afterCreate},{'channel':_0xc94a('0xe'),'model':_0xc94a('0xf'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xc94a('0xe'),'model':_0xc94a('0x10'),'event':_0xc94a('0xd'),'condition':_0xc94a('0xb'),'callback':afterCreateMessage},{'channel':_0xc94a('0x11'),'model':_0xc94a('0x12'),'event':_0xc94a('0xd'),'condition':_0xc94a('0x7'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xc94a('0x12'),'event':'afterUpdate','condition':_0xc94a('0x9'),'callback':afterUpdate},{'channel':_0xc94a('0x11'),'model':_0xc94a('0x13'),'event':'afterCreate','condition':_0xc94a('0xb'),'callback':afterCreateMessage},{'channel':_0xc94a('0x14'),'model':'FaxInteraction','event':_0xc94a('0xd'),'condition':_0xc94a('0x7'),'callback':afterCreate},{'channel':_0xc94a('0x14'),'model':'FaxInteraction','event':_0xc94a('0x8'),'condition':_0xc94a('0x9'),'callback':afterUpdate},{'channel':_0xc94a('0x14'),'model':_0xc94a('0x15'),'event':_0xc94a('0xd'),'condition':_0xc94a('0xb'),'callback':afterCreateMessage},{'channel':_0xc94a('0x16'),'model':_0xc94a('0x17'),'event':_0xc94a('0xd'),'condition':_0xc94a('0x7'),'callback':afterCreate},{'channel':_0xc94a('0x16'),'model':_0xc94a('0x17'),'event':'afterUpdate','condition':_0xc94a('0x9'),'callback':afterUpdate},{'channel':_0xc94a('0x16'),'model':_0xc94a('0x18'),'event':_0xc94a('0xd'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xc94a('0x19'),'model':'OpenchannelInteraction','event':'afterCreate','condition':_0xc94a('0x7'),'callback':afterCreate},{'channel':_0xc94a('0x19'),'model':_0xc94a('0x1a'),'event':'afterUpdate','condition':_0xc94a('0x9'),'callback':afterUpdate},{'channel':_0xc94a('0x19'),'model':_0xc94a('0x1b'),'event':_0xc94a('0xd'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x19acd3){return client[_0xc94a('0x1c')]('EventManager',_0x19acd3)['then'](function(_0xfb3d09){logger[_0xc94a('0x1d')]('Trigger,\x20%s',_0xc94a('0x1e'),_0xfb3d09);if(_0xfb3d09[_0xc94a('0x1f')]){if(_0xfb3d09['error']['code']===0x1f4){logger[_0xc94a('0x1f')]('Trigger,\x20%s',_0xc94a('0x1e'),_0xfb3d09[_0xc94a('0x1f')]);}}})[_0xc94a('0x20')](function(_0x273a62){logger[_0xc94a('0x1f')]('Trigger,\x20%s',_0xc94a('0x1e'),_0x273a62);});}function afterCreateMessage(_0x4c8248){return function(_0x2b79d9){_0x2b79d9=_0x2b79d9[_0xc94a('0x21')]({'plain':!![]});_0x2b79d9[_0xc94a('0x22')]=_0x4c8248;_0x2b79d9[_0xc94a('0x23')]=_0x4c8248;_0x2b79d9[_0xc94a('0x24')]=_0x2b79d9['direction'];Promise[_0xc94a('0x25')]()['then'](function(){if(typeof _0x2b79d9[_0xc94a('0x26')]===_0xc94a('0x27'))return null;var _0x5d2cd1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2b79d9[_0xc94a('0x26')];return db[_0xc94a('0x28')][_0xc94a('0x29')](_0x5d2cd1,{'type':db[_0xc94a('0x2a')][_0xc94a('0x2b')][_0xc94a('0x2c')],'raw':!![]});})['then'](function(_0x223d42){if(_0x223d42){_0x2b79d9['contact']=_0x223d42[0x0];}if(typeof _0x2b79d9[_0xc94a('0x2d')]===_0xc94a('0x27'))return;return getAgent(_0x2b79d9[_0xc94a('0x2d')]);})[_0xc94a('0x2e')](function(_0x4968e2){if(_0x4968e2){_0x2b79d9['interface']=util[_0xc94a('0x2f')]('SIP/%s',_0x4968e2['name']);_0x2b79d9['agent']=_0x4968e2;_0x2b79d9[_0xc94a('0x22')]=_0x4c8248;return request({'event':_0xc94a('0x30'),'message':_0x2b79d9});}else{return request({'event':_0xc94a('0x31'),'message':_0x2b79d9});}})[_0xc94a('0x20')](function(_0xa811a4){logger['error'](_0xc94a('0x32'),'AfterCreateMessage',_0xa811a4);});};}function afterCreateOfflineMessage(_0x55e9e0){return function(_0x171ea6){_0x171ea6=_0x171ea6['get']({'plain':!![]});_0x171ea6[_0xc94a('0x22')]=_0x55e9e0;_0x171ea6[_0xc94a('0x23')]=_0x55e9e0;_0x171ea6['event']=_0xc94a('0x33');return request({'event':_0x171ea6[_0xc94a('0x24')],'message':_0x171ea6});};}function afterCreate(_0x23c587,_0x2ac615){return function(_0x3a0e35){_0x3a0e35=_0x3a0e35[_0xc94a('0x21')]({'plain':!![]});_0x3a0e35[_0xc94a('0x22')]=_0x23c587;_0x3a0e35[_0xc94a('0x23')]=_0x23c587;_0x3a0e35[_0xc94a('0x24')]=_0xc94a('0x34');Promise[_0xc94a('0x25')]()['then'](function(){var _0x2bbad8=_0xc94a('0x35')+_0x3a0e35['ContactId'];return db[_0xc94a('0x28')][_0xc94a('0x29')](_0x2bbad8,{'type':db[_0xc94a('0x2a')]['QueryTypes'][_0xc94a('0x2c')],'raw':!![]});})['then'](function(_0x20dba4){if(_0x20dba4){_0x3a0e35[_0xc94a('0x36')]=_0x20dba4[0x0];}if(typeof _0x3a0e35[_0xc94a('0x2d')]===_0xc94a('0x27'))return;return getAgent(_0x3a0e35[_0xc94a('0x2d')]);})[_0xc94a('0x2e')](function(_0x12627b){if(_0x12627b){_0x3a0e35[_0xc94a('0x37')]=util[_0xc94a('0x2f')](_0xc94a('0x38'),_0x12627b[_0xc94a('0x39')]);_0x3a0e35[_0xc94a('0x3a')]=_0x12627b;}return request({'event':_0x2ac615,'message':_0x3a0e35});})[_0xc94a('0x20')](function(_0x38e942){logger[_0xc94a('0x1f')](_0xc94a('0x32'),'AfterCreate',_0x38e942);});};}function afterUpdate(_0x401442){return function(_0x3635ee){var _0x34e176=_0x3635ee['changed'](_0xc94a('0x3b'))&&_0x3635ee[_0xc94a('0x3b')];var _0x27a2cf=_0x3635ee[_0xc94a('0x3c')](_0xc94a('0x3d'));if(_0x34e176||_0x27a2cf){var _0x53b288=_0x34e176?_0xc94a('0x9'):_0xc94a('0x3d');var _0x38614f=_0x3635ee[_0xc94a('0x21')]({'plain':!![]});_0x38614f[_0xc94a('0x22')]=_0x401442;_0x38614f['motionChannel']=_0x401442;_0x38614f['event']=_0x34e176?_0xc94a('0x3b'):_0xc94a('0x3d');var _0x224df9=_0xc94a('0x35')+_0x38614f['ContactId'];return db[_0xc94a('0x28')][_0xc94a('0x29')](_0x224df9,{'type':db[_0xc94a('0x2a')]['QueryTypes'][_0xc94a('0x2c')],'raw':!![]})[_0xc94a('0x2e')](function(_0x3b947b){if(_0x3b947b){_0x38614f['contact']=_0x3b947b[0x0];}if(typeof _0x38614f[_0xc94a('0x2d')]===_0xc94a('0x27'))return;return getAgent(_0x38614f[_0xc94a('0x2d')]);})[_0xc94a('0x2e')](function(_0x2eb098){if(_0x2eb098){_0x38614f['interface']=util[_0xc94a('0x2f')]('SIP/%s',_0x2eb098['name']);_0x38614f[_0xc94a('0x3a')]=_0x2eb098;}return request({'event':_0x53b288,'message':_0x38614f});})[_0xc94a('0x20')](function(_0x8aa720){logger[_0xc94a('0x1f')](_0xc94a('0x32'),_0xc94a('0x3e'),_0x8aa720);});}};}function getAgent(_0x377ea6){return db[_0xc94a('0x3f')]['find']({'where':{'id':_0x377ea6},'attributes':['id',_0xc94a('0x39'),_0xc94a('0x40'),'email','internal'],'raw':!![]})[_0xc94a('0x2e')](function(_0x415a19){return _0x415a19;});}exports['default']=function(){for(var _0x555c01=0x0;_0x555c01<triggers[_0xc94a('0x41')];_0x555c01+=0x1){if(db[_0xc94a('0x42')](triggers[_0x555c01][_0xc94a('0x43')])){db[triggers[_0x555c01][_0xc94a('0x43')]][_0xc94a('0x44')](triggers[_0x555c01][_0xc94a('0x24')],triggers[_0x555c01][_0xc94a('0x45')](triggers[_0x555c01]['channel']['toLowerCase'](),triggers[_0x555c01][_0xc94a('0x46')]));}}};
\ No newline at end of file
+var _0xe94f=['afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','SmsInteraction','Sms','SmsMessage','Whatsapp','WhatsappMessage','FaxInteraction','Fax','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','then','info','Trigger,\x20%s','EventManager','error','code','catch','get','channel','motionChannel','event','direction','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','contact','UserId','interface','format','name','agent','incomingmessage','outgoingmessage','AfterCreateMessage','offlineMessage','opened','SELECT','SIP/%s','AfterCreate','changed','substatus','find','fullname','email','default','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','triggers','client','http','ChatInteraction','afterCreate','newinteraction','Chat'];(function(_0x4a45cf,_0x26d35e){var _0x2dbbaf=function(_0x4a9aaa){while(--_0x4a9aaa){_0x4a45cf['push'](_0x4a45cf['shift']());}};_0x2dbbaf(++_0x26d35e);}(_0xe94f,0x1bd));var _0xfe94=function(_0x151381,_0x97b314){_0x151381=_0x151381-0x0;var _0x2afab6=_0xe94f[_0x151381];return _0x2afab6;};'use strict';var util=require(_0xfe94('0x0'));var db=require(_0xfe94('0x1'))['db'];var jayson=require(_0xfe94('0x2'));var logger=require(_0xfe94('0x3'))(_0xfe94('0x4'));var client=jayson[_0xfe94('0x5')][_0xfe94('0x6')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0xfe94('0x7'),'event':_0xfe94('0x8'),'condition':_0xfe94('0x9'),'callback':afterCreate},{'channel':_0xfe94('0xa'),'model':_0xfe94('0x7'),'event':_0xfe94('0xb'),'condition':_0xfe94('0xc'),'callback':afterUpdate},{'channel':_0xfe94('0xa'),'model':_0xfe94('0xd'),'event':_0xfe94('0x8'),'condition':_0xfe94('0xe'),'callback':afterCreateMessage},{'channel':'Chat','model':_0xfe94('0xf'),'event':'afterCreate','condition':_0xfe94('0xe'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0xfe94('0x10'),'event':_0xfe94('0x8'),'condition':_0xfe94('0x9'),'callback':afterCreate},{'channel':_0xfe94('0x11'),'model':'SmsInteraction','event':'afterUpdate','condition':_0xfe94('0xc'),'callback':afterUpdate},{'channel':'Sms','model':_0xfe94('0x12'),'event':'afterCreate','condition':_0xfe94('0xe'),'callback':afterCreateMessage},{'channel':_0xfe94('0x13'),'model':'WhatsappInteraction','event':'afterCreate','condition':_0xfe94('0x9'),'callback':afterCreate},{'channel':_0xfe94('0x13'),'model':'WhatsappInteraction','event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xfe94('0x13'),'model':_0xfe94('0x14'),'event':'afterCreate','condition':_0xfe94('0xe'),'callback':afterCreateMessage},{'channel':'Fax','model':_0xfe94('0x15'),'event':'afterCreate','condition':_0xfe94('0x9'),'callback':afterCreate},{'channel':_0xfe94('0x16'),'model':_0xfe94('0x15'),'event':_0xfe94('0xb'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xfe94('0x16'),'model':_0xfe94('0x17'),'event':'afterCreate','condition':_0xfe94('0xe'),'callback':afterCreateMessage},{'channel':_0xfe94('0x18'),'model':_0xfe94('0x19'),'event':_0xfe94('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xfe94('0x18'),'model':_0xfe94('0x19'),'event':_0xfe94('0xb'),'condition':_0xfe94('0xc'),'callback':afterUpdate},{'channel':_0xfe94('0x18'),'model':_0xfe94('0x1a'),'event':_0xfe94('0x8'),'condition':_0xfe94('0xe'),'callback':afterCreateMessage},{'channel':_0xfe94('0x1b'),'model':_0xfe94('0x1c'),'event':_0xfe94('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':'Openchannel','model':_0xfe94('0x1c'),'event':_0xfe94('0xb'),'condition':_0xfe94('0xc'),'callback':afterUpdate},{'channel':_0xfe94('0x1b'),'model':'OpenchannelMessage','event':_0xfe94('0x8'),'condition':_0xfe94('0xe'),'callback':afterCreateMessage}];function request(_0x10c134){return client[_0xfe94('0x1d')]('EventManager',_0x10c134)[_0xfe94('0x1e')](function(_0x5dcebb){logger[_0xfe94('0x1f')](_0xfe94('0x20'),_0xfe94('0x21'),_0x5dcebb);if(_0x5dcebb[_0xfe94('0x22')]){if(_0x5dcebb[_0xfe94('0x22')][_0xfe94('0x23')]===0x1f4){logger[_0xfe94('0x22')](_0xfe94('0x20'),'EventManager',_0x5dcebb[_0xfe94('0x22')]);}}})[_0xfe94('0x24')](function(_0x4f886d){logger['error'](_0xfe94('0x20'),'EventManager',_0x4f886d);});}function afterCreateMessage(_0x229ae4){return function(_0x562f1f){_0x562f1f=_0x562f1f[_0xfe94('0x25')]({'plain':!![]});_0x562f1f[_0xfe94('0x26')]=_0x229ae4;_0x562f1f[_0xfe94('0x27')]=_0x229ae4;_0x562f1f[_0xfe94('0x28')]=_0x562f1f[_0xfe94('0x29')];Promise[_0xfe94('0x2a')]()[_0xfe94('0x1e')](function(){if(typeof _0x562f1f[_0xfe94('0x2b')]===_0xfe94('0x2c'))return null;var _0x5cf265=_0xfe94('0x2d')+_0x562f1f[_0xfe94('0x2b')];return db[_0xfe94('0x2e')][_0xfe94('0x2f')](_0x5cf265,{'type':db[_0xfe94('0x30')][_0xfe94('0x31')]['SELECT'],'raw':!![]});})[_0xfe94('0x1e')](function(_0x4b2cd5){if(_0x4b2cd5){_0x562f1f[_0xfe94('0x32')]=_0x4b2cd5[0x0];}if(typeof _0x562f1f[_0xfe94('0x33')]==='undefined')return;return getAgent(_0x562f1f['UserId']);})['then'](function(_0x391ec2){if(_0x391ec2){_0x562f1f[_0xfe94('0x34')]=util[_0xfe94('0x35')]('SIP/%s',_0x391ec2[_0xfe94('0x36')]);_0x562f1f[_0xfe94('0x37')]=_0x391ec2;_0x562f1f['channel']=_0x229ae4;return request({'event':_0xfe94('0x38'),'message':_0x562f1f});}else{return request({'event':_0xfe94('0x39'),'message':_0x562f1f});}})[_0xfe94('0x24')](function(_0xbafa22){logger[_0xfe94('0x22')](_0xfe94('0x20'),_0xfe94('0x3a'),_0xbafa22);});};}function afterCreateOfflineMessage(_0x3daafc){return function(_0x2ebd38){_0x2ebd38=_0x2ebd38['get']({'plain':!![]});_0x2ebd38[_0xfe94('0x26')]=_0x3daafc;_0x2ebd38[_0xfe94('0x27')]=_0x3daafc;_0x2ebd38['event']=_0xfe94('0x3b');return request({'event':_0x2ebd38['event'],'message':_0x2ebd38});};}function afterCreate(_0x41d07e,_0x1e6a20){return function(_0x58e08a){_0x58e08a=_0x58e08a[_0xfe94('0x25')]({'plain':!![]});_0x58e08a['channel']=_0x41d07e;_0x58e08a[_0xfe94('0x27')]=_0x41d07e;_0x58e08a[_0xfe94('0x28')]=_0xfe94('0x3c');Promise[_0xfe94('0x2a')]()[_0xfe94('0x1e')](function(){var _0x3a1f8b=_0xfe94('0x2d')+_0x58e08a[_0xfe94('0x2b')];return db[_0xfe94('0x2e')]['query'](_0x3a1f8b,{'type':db[_0xfe94('0x30')][_0xfe94('0x31')][_0xfe94('0x3d')],'raw':!![]});})[_0xfe94('0x1e')](function(_0x54fbf1){if(_0x54fbf1){_0x58e08a['contact']=_0x54fbf1[0x0];}if(typeof _0x58e08a['UserId']===_0xfe94('0x2c'))return;return getAgent(_0x58e08a[_0xfe94('0x33')]);})[_0xfe94('0x1e')](function(_0x40267d){if(_0x40267d){_0x58e08a['interface']=util[_0xfe94('0x35')](_0xfe94('0x3e'),_0x40267d['name']);_0x58e08a[_0xfe94('0x37')]=_0x40267d;}return request({'event':_0x1e6a20,'message':_0x58e08a});})[_0xfe94('0x24')](function(_0x310cf5){logger['error'](_0xfe94('0x20'),_0xfe94('0x3f'),_0x310cf5);});};}function afterUpdate(_0xf1b94d){return function(_0x927f10){var _0x5c5aaf=_0x927f10[_0xfe94('0x40')]('closed')&&_0x927f10['closed'];var _0x3692d5=_0x927f10['changed']('substatus');if(_0x5c5aaf||_0x3692d5){var _0x234f9b=_0x5c5aaf?'closedinteraction':_0xfe94('0x41');var _0x470be0=_0x927f10[_0xfe94('0x25')]({'plain':!![]});_0x470be0['channel']=_0xf1b94d;_0x470be0['motionChannel']=_0xf1b94d;_0x470be0[_0xfe94('0x28')]=_0x5c5aaf?'closed':_0xfe94('0x41');var _0x36abb1=_0xfe94('0x2d')+_0x470be0[_0xfe94('0x2b')];return db[_0xfe94('0x2e')][_0xfe94('0x2f')](_0x36abb1,{'type':db['Sequelize'][_0xfe94('0x31')][_0xfe94('0x3d')],'raw':!![]})['then'](function(_0x3cc479){if(_0x3cc479){_0x470be0[_0xfe94('0x32')]=_0x3cc479[0x0];}if(typeof _0x470be0['UserId']===_0xfe94('0x2c'))return;return getAgent(_0x470be0[_0xfe94('0x33')]);})[_0xfe94('0x1e')](function(_0x1192f2){if(_0x1192f2){_0x470be0[_0xfe94('0x34')]=util[_0xfe94('0x35')](_0xfe94('0x3e'),_0x1192f2['name']);_0x470be0[_0xfe94('0x37')]=_0x1192f2;}return request({'event':_0x234f9b,'message':_0x470be0});})[_0xfe94('0x24')](function(_0x2c12e4){logger[_0xfe94('0x22')](_0xfe94('0x20'),'AfterUpdate',_0x2c12e4);});}};}function getAgent(_0x44b7bb){return db['User'][_0xfe94('0x42')]({'where':{'id':_0x44b7bb},'attributes':['id',_0xfe94('0x36'),_0xfe94('0x43'),_0xfe94('0x44'),'internal'],'raw':!![]})[_0xfe94('0x1e')](function(_0x3c4ffe){return _0x3c4ffe;});}exports[_0xfe94('0x45')]=function(){for(var _0x3a2209=0x0;_0x3a2209<triggers['length'];_0x3a2209+=0x1){if(db[_0xfe94('0x46')](triggers[_0x3a2209][_0xfe94('0x47')])){db[triggers[_0x3a2209][_0xfe94('0x47')]][_0xfe94('0x48')](triggers[_0x3a2209]['event'],triggers[_0x3a2209][_0xfe94('0x49')](triggers[_0x3a2209][_0xfe94('0x26')][_0xfe94('0x4a')](),triggers[_0x3a2209][_0xfe94('0x4b')]));}}};
\ No newline at end of file
index 82c1eb5..0c54a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b1=['mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','voice'];(function(_0x4b01b9,_0x4a0245){var _0x493d27=function(_0x502801){while(--_0x502801){_0x4b01b9['push'](_0x4b01b9['shift']());}};_0x493d27(++_0x4a0245);}(_0xa8b1,0x1ab));var _0x1a8b=function(_0x308462,_0x16101f){_0x308462=_0x308462-0x0;var _0x1506cf=_0xa8b1[_0x308462];return _0x1506cf;};'use strict';var _=require(_0x1a8b('0x0'));var BPromise=require(_0x1a8b('0x1'));var db=require(_0x1a8b('0x2'))['db'];var util=require(_0x1a8b('0x3'));var channels=[_0x1a8b('0x4'),_0x1a8b('0x5'),_0x1a8b('0x6'),_0x1a8b('0x7'),_0x1a8b('0x8'),_0x1a8b('0x9'),_0x1a8b('0xa')];exports[_0x1a8b('0xb')]=function(){return channels;};exports[_0x1a8b('0xc')]=function(_0x128dc8){_0x128dc8=_0x128dc8[_0x1a8b('0xd')]();return _[_0x1a8b('0xe')](channels,_0x128dc8);};exports['clearBlockUser']=function(_0x599f78,_0x2e602f,_0x113189,_0x49d6fc){var _0x1c327a={'loginAttempts':_0x2e602f,'blocked':_0x113189};if(!_[_0x1a8b('0xf')](_0x49d6fc)){_0x1c327a[_0x1a8b('0x10')]=_0x49d6fc;}return _0x599f78[_0x1a8b('0x11')](_0x1c327a);};exports[_0x1a8b('0x12')]=function(_0x5b1f47){return new BPromise(function(_0x1382c5,_0x1c5719){var _0x434aea=0x0;if(_0x5b1f47[_0x1a8b('0x13')]!==_0x1a8b('0x14')){_0x1382c5(_0x5b1f47);}db[_0x1a8b('0x15')][_0x1a8b('0x16')]({'where':{'role':_0x1a8b('0x14'),'online':!![],'id':{'$ne':_0x5b1f47['id']}}})['then'](function(_0xc22100){_0x434aea=_0xc22100;return util[_0x1a8b('0x12')]();})[_0x1a8b('0x17')](function(_0x343576){if(_0x343576&&_0x343576[_0x1a8b('0x18')]&&_0x434aea>=_0x343576[_0x1a8b('0x18')]){throw Error(_0x1a8b('0x19'));}_0x1382c5(_0x5b1f47);})[_0x1a8b('0x1a')](function(_0x2830bb){_0x1c5719(_0x2830bb);});});};
\ No newline at end of file
+var _0x1553=['sms','whatsapp','openchannel','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','updateAttributes','getLicense','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','chat','fax'];(function(_0x2c533d,_0x33c3d1){var _0x38f4fc=function(_0x42899a){while(--_0x42899a){_0x2c533d['push'](_0x2c533d['shift']());}};_0x38f4fc(++_0x33c3d1);}(_0x1553,0xb2));var _0x3155=function(_0x23e9af,_0x29c52c){_0x23e9af=_0x23e9af-0x0;var _0x2c4f8b=_0x1553[_0x23e9af];return _0x2c4f8b;};'use strict';var _=require(_0x3155('0x0'));var BPromise=require(_0x3155('0x1'));var db=require(_0x3155('0x2'))['db'];var util=require(_0x3155('0x3'));var channels=['voice','mail',_0x3155('0x4'),_0x3155('0x5'),_0x3155('0x6'),_0x3155('0x7'),_0x3155('0x8')];exports['getChannels']=function(){return channels;};exports[_0x3155('0x9')]=function(_0x2b78e4){_0x2b78e4=_0x2b78e4[_0x3155('0xa')]();return _[_0x3155('0xb')](channels,_0x2b78e4);};exports[_0x3155('0xc')]=function(_0x853619,_0xc3e76f,_0x4fe9b5,_0x2d53e8){var _0x4644c4={'loginAttempts':_0xc3e76f,'blocked':_0x4fe9b5};if(!_[_0x3155('0xd')](_0x2d53e8)){_0x4644c4['blockedAt']=_0x2d53e8;}return _0x853619[_0x3155('0xe')](_0x4644c4);};exports[_0x3155('0xf')]=function(_0x20df5a){return new BPromise(function(_0x1de5af,_0x16795){var _0xf93ff4=0x0;if(_0x20df5a['role']!==_0x3155('0x10')){_0x1de5af(_0x20df5a);}db[_0x3155('0x11')][_0x3155('0x12')]({'where':{'role':_0x3155('0x10'),'online':!![],'id':{'$ne':_0x20df5a['id']}}})[_0x3155('0x13')](function(_0x46e905){_0xf93ff4=_0x46e905;return util['getLicense']();})['then'](function(_0x486605){if(_0x486605&&_0x486605[_0x3155('0x14')]&&_0xf93ff4>=_0x486605['agents']){throw Error(_0x3155('0x15'));}_0x1de5af(_0x20df5a);})[_0x3155('0x16')](function(_0x40a63c){_0x16795(_0x40a63c);});});};
\ No newline at end of file
index 0651665..efbd100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['exports','../config/logger','message','Internal\x20Server\x20Error','name','Error','inherits','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','OutOfInterval','error','stack','send'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x9bde,0xe1));var _0xe9bd=function(_0x5aeb38,_0x195c20){_0x5aeb38=_0x5aeb38-0x0;var _0x1da4fe=_0x9bde[_0x5aeb38];return _0x1da4fe;};'use strict';var util=require('util');var logger=require(_0xe9bd('0x0'))('api');var APIError=function(_0xc79e0b,_0x4c63ca){this[_0xe9bd('0x1')]=_0xc79e0b||_0xe9bd('0x2');this[_0xe9bd('0x3')]=_0x4c63ca||_0xe9bd('0x4');util[_0xe9bd('0x5')](APIError,Error);};var APIBadRequestError=function(_0x1a4d14){this[_0xe9bd('0x1')]=_0x1a4d14||'Bad\x20Request';this[_0xe9bd('0x3')]=_0xe9bd('0x6');util[_0xe9bd('0x5')](APIBadRequestError,APIError);};var APINotFoundError=function(_0xa66ae2){this[_0xe9bd('0x1')]=_0xa66ae2||_0xe9bd('0x7');this[_0xe9bd('0x3')]=_0xe9bd('0x8');util[_0xe9bd('0x5')](APINotFoundError,APIError);};function getStatusCode(_0x45c7ba){switch(_0x45c7ba){case'Bad\x20Request':return 0x190;case'Forbidden',_0xe9bd('0x9'):return 0x193;case _0xe9bd('0x8'):return 0x194;default:return 0x1f4;}}function handleError(_0x2601ac){return function(_0x581ab9){logger[_0xe9bd('0xa')](_0x581ab9[_0xe9bd('0xb')]);var _0x3339f9=getStatusCode(_0x581ab9[_0xe9bd('0x3')]);if(_0x581ab9['name'])delete _0x581ab9[_0xe9bd('0x3')];return _0x2601ac['status'](_0x3339f9)[_0xe9bd('0xc')](_0x581ab9);};}module[_0xe9bd('0xd')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x7a54=['Bad\x20Request','Forbidden','Out\x20Of\x20Interval','Not\x20Found','error','stack','statusMessage','status','send','exports','util','../config/logger','api','message','name','Error','inherits','Entity\x20not\x20found'];(function(_0x18dbe4,_0x368d32){var _0x19e0df=function(_0x279830){while(--_0x279830){_0x18dbe4['push'](_0x18dbe4['shift']());}};_0x19e0df(++_0x368d32);}(_0x7a54,0x106));var _0x47a5=function(_0x2980e8,_0x397374){_0x2980e8=_0x2980e8-0x0;var _0x2aca3e=_0x7a54[_0x2980e8];return _0x2aca3e;};'use strict';var util=require(_0x47a5('0x0'));var logger=require(_0x47a5('0x1'))(_0x47a5('0x2'));var APIError=function(_0x58157c,_0x1d33e){this[_0x47a5('0x3')]=_0x58157c||'Internal\x20Server\x20Error';this[_0x47a5('0x4')]=_0x1d33e||_0x47a5('0x5');util[_0x47a5('0x6')](APIError,Error);};var APIBadRequestError=function(_0x3717e1){this[_0x47a5('0x3')]=_0x3717e1||'Bad\x20Request';this[_0x47a5('0x4')]='Bad\x20Request';util[_0x47a5('0x6')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x30e405){this['message']=_0x30e405||_0x47a5('0x7');this['name']='Not\x20Found';util['inherits'](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x2a0e98){this[_0x47a5('0x3')]=_0x2a0e98||'Message\x20sent\x20outside\x20a\x20valid\x20interval';this[_0x47a5('0x4')]='Out\x20Of\x20Interval';util['inherits'](APIOutOfIntervalError,APIError);};function getStatusCode(_0x1f47f4){switch(_0x1f47f4){case _0x47a5('0x8'):return 0x190;case _0x47a5('0x9'),_0x47a5('0xa'):return 0x193;case _0x47a5('0xb'):return 0x194;default:return 0x1f4;}}function getCustomStatusMessage(_0xd308b8){if(_0xd308b8===_0x47a5('0xa'))return _0xd308b8;return null;}function handleError(_0x5beb89){return function(_0x44bd3e){logger[_0x47a5('0xc')](_0x44bd3e[_0x47a5('0xd')]);var _0x711793=getStatusCode(_0x44bd3e[_0x47a5('0x4')]);var _0x620ee9=getCustomStatusMessage(_0x44bd3e[_0x47a5('0x4')]);if(_0x44bd3e[_0x47a5('0x4')])delete _0x44bd3e['name'];if(_0x620ee9)_0x5beb89[_0x47a5('0xe')]=_0x620ee9;return _0x5beb89[_0x47a5('0xf')](_0x711793)[_0x47a5('0x10')](_0x44bd3e);};}module[_0x47a5('0x11')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APIOutOfIntervalError':APIOutOfIntervalError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 44c7ba1..a5fcb27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa49e=['render','json','send','exports','404','status'];(function(_0x24be44,_0x532799){var _0x43ac8d=function(_0x54549c){while(--_0x54549c){_0x24be44['push'](_0x24be44['shift']());}};_0x43ac8d(++_0x532799);}(_0xa49e,0x147));var _0xea49=function(_0x1d34e3,_0x4f5844){_0x1d34e3=_0x1d34e3-0x0;var _0x34266b=_0xa49e[_0x1d34e3];return _0x34266b;};'use strict';module[_0xea49('0x0')][0x194]=function pageNotFound(_0x58accf,_0x21cecd){var _0x5892b4=_0xea49('0x1');var _0x313853=0x194;var _0x142f60={'status':_0x313853};_0x21cecd[_0xea49('0x2')](_0x142f60[_0xea49('0x2')]);_0x21cecd[_0xea49('0x3')](_0x5892b4,{},function(_0x40dead,_0x246947){if(_0x40dead){return _0x21cecd[_0xea49('0x2')](_0x142f60[_0xea49('0x2')])[_0xea49('0x4')](_0x142f60);}_0x21cecd[_0xea49('0x5')](_0x246947);});};
\ No newline at end of file
+var _0x0c24=['render','json','send','status'];(function(_0x39f237,_0x20c4be){var _0x3fb158=function(_0x1919e8){while(--_0x1919e8){_0x39f237['push'](_0x39f237['shift']());}};_0x3fb158(++_0x20c4be);}(_0x0c24,0x13b));var _0x40c2=function(_0x4e0f5e,_0x4168c4){_0x4e0f5e=_0x4e0f5e-0x0;var _0x45de30=_0x0c24[_0x4e0f5e];return _0x45de30;};'use strict';module['exports'][0x194]=function pageNotFound(_0x568f06,_0x26e294){var _0x77910b='404';var _0x2655ee=0x194;var _0x4b02c8={'status':_0x2655ee};_0x26e294['status'](_0x4b02c8[_0x40c2('0x0')]);_0x26e294[_0x40c2('0x1')](_0x77910b,{},function(_0x34a58b,_0x5e20f3){if(_0x34a58b){return _0x26e294[_0x40c2('0x0')](_0x4b02c8[_0x40c2('0x0')])[_0x40c2('0x2')](_0x4b02c8);}_0x26e294[_0x40c2('0x3')](_0x5e20f3);});};
\ No newline at end of file
index a8c5ae0..7a7edcb 100644 (file)
@@ -3,7 +3,6 @@
 var BPromise = require('bluebird');
 var util = require('util');
 var logger = require('../config/logger')('migration');
-var updateAppConfig = require('../utils/update-app-config')
 var Sequence = function() {};
 
 Sequence.prototype.enqueue = function(fn) {
@@ -160,9 +159,6 @@ module.exports = {
       // START FINAL
       migration.final(resolve);
       // END FINAL
-
-      // Migrate app.json
-      return updateAppConfig(logger)
     });
   },
 
diff --git a/server/migrations/2.6.13.js b/server/migrations/2.6.13.js
new file mode 100644 (file)
index 0000000..3bfcdb5
--- /dev/null
@@ -0,0 +1,198 @@
+'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 chat_applications
+      migration.query('ALTER TABLE `chat_applications` DROP FOREIGN KEY `chat_applications_ibfk_1`;');
+      migration.query('ALTER TABLE `chat_applications` ADD CONSTRAINT `chat_applications_ibfk_1` FOREIGN KEY (`ChatWebsiteId`) REFERENCES `chat_websites`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;');
+      //END chat_applications
+
+      //START mail_applications
+      migration.query('ALTER TABLE `mail_applications` DROP FOREIGN KEY `mail_applications_ibfk_1`;');
+      migration.query('ALTER TABLE `mail_applications` ADD CONSTRAINT `mail_applications_ibfk_1` FOREIGN KEY (`MailAccountId`) REFERENCES `mail_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;');
+      //END mail_applications
+
+      //START sms_applications
+      migration.query('ALTER TABLE `sms_applications` DROP FOREIGN KEY `sms_applications_ibfk_1`;');
+      migration.query('ALTER TABLE `sms_applications` ADD CONSTRAINT `sms_applications_ibfk_1` FOREIGN KEY (`SmsAccountId`) REFERENCES `sms_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;');
+      //END sms_applications
+
+      //START fax_applications
+      migration.query('ALTER TABLE `fax_applications` DROP FOREIGN KEY `fax_applications_ibfk_1`;');
+      migration.query('ALTER TABLE `fax_applications` ADD CONSTRAINT `fax_applications_ibfk_1` FOREIGN KEY (`FaxAccountId`) REFERENCES `fax_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;');
+      //END fax_applications
+
+      //START openchannel_applications
+      migration.query('ALTER TABLE `openchannel_applications` DROP FOREIGN KEY `openchannel_applications_ibfk_1`;');
+      migration.query('ALTER TABLE `openchannel_applications` ADD CONSTRAINT `openchannel_applications_ibfk_1` FOREIGN KEY (`OpenchannelAccountId`) REFERENCES `openchannel_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;');
+      //END openchannel_applications
+
+      //START whatsapp_applications
+      migration.query('ALTER TABLE `whatsapp_applications` DROP FOREIGN KEY `whatsapp_applications_ibfk_1`;');
+      migration.query('ALTER TABLE `whatsapp_applications` ADD CONSTRAINT `whatsapp_applications_ibfk_1` FOREIGN KEY (`WhatsappAccountId`) REFERENCES `whatsapp_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;');
+      //END chat_applications
+
+      // START FINAL
+      migration.final(resolve);
+      // END FINAL
+    });
+  },
+
+  down: function( /* queryInterface, Sequelize */ ) {
+    // var migration = new Migration(queryInterface);
+  },
+};
\ No newline at end of file
diff --git a/server/migrations/2.6.14.js b/server/migrations/2.6.14.js
new file mode 100644 (file)
index 0000000..ceb719d
--- /dev/null
@@ -0,0 +1,172 @@
+'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 users
+      migration.query('ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;');
+      // END users
+
+      // START FINAL
+      migration.final(resolve);
+      // END FINAL
+    });
+  },
+
+  down: function( /* queryInterface, Sequelize */ ) {
+    // var migration = new Migration(queryInterface);
+  },
+};
\ No newline at end of file
index 383af2d..76bfe42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dda=['JscriptySessionReport','JscriptySessions','Trunk','TrunkId','TrunkBackup','IntervalId','Pause','mandatoryDispositionPause','mandatoryDispositionPauseId','Agents','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','mailboxuser','mailbox','AgentReports','uniqueid','Contact','ContactId','MailAccountId','CloudProvider','CloudProviderId','restrict','Imap','Answers','Messages','MailApplication','Applications','List','ListId','TemplateId','team_has_mail_queues','Teams','MailInteractionId','Account','Owner','mail_interaction_has_tags','ThroughTags','Users','Attachments','ChatOfflineMessage','ChatOfflineMessageId','TagId','MailQueueReport','Disposition','Dispositions','FaxAccountId','Exntensions','FaxMessage','FaxInteractionId','fax_interaction_has_tags','Interaction','SmsAccountId','SmsMessage','Interactions','SmsInteractionId','sms_interaction_has_tags','Tags','SmsQueueId','OpenchannelAccountId','OpenchannelInteractionId','openchannel_interaction_has_tags','OpenchannelMessage','AttachmentId','OpenchannelQueueId','team_has_openchannel_queues','ChatWebsiteId','ProactiveActions','Agent','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatGroupId','Contacts','Phones','CmContactId','Company','CompanyId','CmHopperAdditionalPhone','CmHopperId','Queue','Campaign','CampaignId','OwnerId','AutomationAllId','Any','OneAny','Actions','AutomationId','ParentId','Intervals','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','AnalyticCustomReport','CustomReportId','Mohs','cm_contact_has_tags','whatsapp_interaction_has_tags','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','SalesforceConfiguration','Configurations','AccountId','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','SugarcrmField','Subjects','VariableId','int_desk_configuration_has_tags','ZohoConfiguration','ZohoField','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','Dynamics365Configuration','FreshsalesConfiguration','ChatQueueReport','FromId','ToId','SessionId','JscriptyAnswerReport','SmsQueueReport','JscriptyProject','ProjectId','team_has_chat_queues','team_has_fax_queues','team_has_sms_queues','Hoppers','TrunkBackupId','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromAccount','FromAgent','ToAgent','ToMailQueueId','ToQueue','ToAccount','FromChatWebsiteId','FromUserId','ToChatWebsiteId','FromFaxAccountId','ToUserId','ToFaxQueueId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','voice_queues_has_cm_lists','UserProfile','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','user_has_whatsapp_interactions','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','xcall','name','utf8','utf8_general_ci','sequelizeHistory','motion2','xC@LL1234','127.0.0.1','mysql','utf8mb4','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailApplication/mailApplication.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxMessage/faxMessage.model','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','Interval','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','CmContactHasItem','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','Network','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','SquareProject','SquareRecording','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','VoiceMail','cascade','userSetting','UserId','hasMany','Recordings','UserVoiceQueueRt','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','ReportAgentPreview','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','MailInteraction','MailInteractions','UserNotifications','belongsTo','belongsToMany','chat_group_has_users','cm_user_has_contacts','Lists','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','VoiceQueues','VoicePrefixes','MailQueue','MailQueues','ChatQueue','ChatQueues','UserChatQueue','FaxQueue','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','UserWhatsappQueue','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks'];(function(_0x2d1cfc,_0x4cf153){var _0x528504=function(_0x5251cd){while(--_0x5251cd){_0x2d1cfc['push'](_0x2d1cfc['shift']());}};_0x528504(++_0x4cf153);}(_0x2dda,0xb7));var _0xa2dd=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2dda[_0xa464c9];return _0x3d73c4;};'use strict';var config=require(_0xa2dd('0x0'));var Sequelize=require(_0xa2dd('0x1'));var _=require(_0xa2dd('0x2'));var jstz=require(_0xa2dd('0x3'));var timezone=jstz[_0xa2dd('0x4')]();config[_0xa2dd('0x1')]=_[_0xa2dd('0x5')](config[_0xa2dd('0x1')],{'database':'motion2','username':_0xa2dd('0x6'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xa2dd('0x7')](),'define':{'charset':_0xa2dd('0x8'),'collate':_0xa2dd('0x9')}}});config[_0xa2dd('0xa')]=_['defaultsDeep'](config[_0xa2dd('0xa')],{'database':_0xa2dd('0xb'),'username':_0xa2dd('0x6'),'password':_0xa2dd('0xc'),'options':{'host':_0xa2dd('0xd'),'port':0xcea,'dialect':_0xa2dd('0xe'),'dialectOptions':{'charset':_0xa2dd('0xf')},'logging':![],'timezone':timezone[_0xa2dd('0x7')](),'define':{'charset':'utf8','collate':_0xa2dd('0x9')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0xa2dd('0x10')],config[_0xa2dd('0x1')][_0xa2dd('0x11')],config[_0xa2dd('0x1')][_0xa2dd('0x12')],config[_0xa2dd('0x1')][_0xa2dd('0x13')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xa2dd('0xa')][_0xa2dd('0x10')],config[_0xa2dd('0xa')][_0xa2dd('0x11')],config[_0xa2dd('0xa')][_0xa2dd('0x12')],config[_0xa2dd('0xa')][_0xa2dd('0x13')])};db[_0xa2dd('0x14')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/user/user.model');db[_0xa2dd('0x16')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x17'));db[_0xa2dd('0x18')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x19'));db['VoiceExtension']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/voiceExtension/voiceExtension.model');db[_0xa2dd('0x1a')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x1b'));db[_0xa2dd('0x1c')]=db['sequelize'][_0xa2dd('0x15')]('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x1d'));db[_0xa2dd('0x1e')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x1f'));db['VoiceMail']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x20'));db[_0xa2dd('0x21')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x22'));db[_0xa2dd('0x23')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x24'));db[_0xa2dd('0x25')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x26'));db[_0xa2dd('0x27')]=db['sequelize']['import'](_0xa2dd('0x28'));db[_0xa2dd('0x29')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x2a'));db[_0xa2dd('0x2b')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x2c'));db['Trunk']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x2d'));db['VoiceTransferReport']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x2e'));db['UserVoiceQueueRt']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x2f'));db[_0xa2dd('0x30')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x31'));db['UserChatQueue']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x32'));db[_0xa2dd('0x33')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x34'));db[_0xa2dd('0x35')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x36'));db[_0xa2dd('0x37')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x38'));db[_0xa2dd('0x39')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db['UserWhatsappQueue']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x3a'));db[_0xa2dd('0x3b')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x3c'));db[_0xa2dd('0x3d')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x3e'));db['MailAccount']=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x3f'));db['MailQueue']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x40'));db[_0xa2dd('0x41')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x42'));db['MailInteraction']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x43'));db[_0xa2dd('0x44')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/mailMessage/mailMessage.model');db['MailApplication']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x45'));db['MailQueueReport']=db['sequelize'][_0xa2dd('0x15')]('../api/mailQueueReport/mailQueueReport.model');db[_0xa2dd('0x46')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x47'));db[_0xa2dd('0x48')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/dashboardItem/dashboardItem.model');db[_0xa2dd('0x49')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x4a'));db[_0xa2dd('0x4b')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x4c'));db[_0xa2dd('0x4d')]=db[_0xa2dd('0x1')]['import']('../api/faxInteraction/faxInteraction.model');db['FaxMessage']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x4e'));db['FaxQueue']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x4f'));db[_0xa2dd('0x50')]=db['sequelize'][_0xa2dd('0x15')]('../api/faxQueueReport/faxQueueReport.model');db['SmsAccount']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x51'));db[_0xa2dd('0x52')]=db['sequelize']['import']('../api/smsApplication/smsApplication.model');db[_0xa2dd('0x53')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/smsInteraction/smsInteraction.model');db['SmsMessage']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x54'));db[_0xa2dd('0x55')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x56'));db[_0xa2dd('0x57')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/openchannelAccount/openchannelAccount.model');db[_0xa2dd('0x58')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x59'));db['OpenchannelInteraction']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x5a'));db['OpenchannelMessage']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x5b'));db[_0xa2dd('0x5c')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x5d'));db['ChatWebsite']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x5e'));db[_0xa2dd('0x5f')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x60'));db[_0xa2dd('0x61')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x62'));db[_0xa2dd('0x63')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x64'));db[_0xa2dd('0x65')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/chatMessage/chatMessage.model');db['ChatOfflineMessage']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/chatOfflineMessage/chatOfflineMessage.model');db['ChatQueue']=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x66'));db[_0xa2dd('0x67')]=db['sequelize']['import'](_0xa2dd('0x68'));db[_0xa2dd('0x69')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x6a'));db[_0xa2dd('0x6b')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x6c'));db[_0xa2dd('0x6d')]=db[_0xa2dd('0x1')]['import']('../api/cmContact/cmContact.model');db[_0xa2dd('0x6e')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x6f'));db[_0xa2dd('0x70')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x71'));db[_0xa2dd('0x72')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x73'));db[_0xa2dd('0x74')]=db['sequelize']['import'](_0xa2dd('0x75'));db['ReportAgentPreview']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x76'));db[_0xa2dd('0x77')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x78'));db[_0xa2dd('0x79')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x7a'));db[_0xa2dd('0x7b')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x7c'));db[_0xa2dd('0x7d')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x7e'));db['Disposition']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x7f'));db[_0xa2dd('0x80')]=db[_0xa2dd('0x1')]['import']('../api/condition/condition.model');db[_0xa2dd('0x81')]=db[_0xa2dd('0x1')]['import']('../api/interval/interval.model');db['Pause']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x82'));db[_0xa2dd('0x83')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x84'));db['VoiceQueuesLog']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x85'));db[_0xa2dd('0x86')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x87'));db[_0xa2dd('0x88')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x89'));db[_0xa2dd('0x8a')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x8b'));db[_0xa2dd('0x8c')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/contactItemType/contactItemType.model');db[_0xa2dd('0x8d')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/cmContactHasItem/cmContactHasItem.model');db['CmHopperAdditionalPhone']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x8e'));db[_0xa2dd('0x8f')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/template/template.model');db[_0xa2dd('0x90')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x91'));db[_0xa2dd('0x92')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x93'));db['Integration']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x94'));db['IntegrationReport']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x95'));db['AnalyticCustomReport']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x96'));db[_0xa2dd('0x97')]=db['sequelize'][_0xa2dd('0x15')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xa2dd('0x98')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x99'));db[_0xa2dd('0x9a')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x9b'));db[_0xa2dd('0x9c')]=db[_0xa2dd('0x1')]['import']('../api/analyticFieldReport/analyticFieldReport.model');db['AnalyticTreeReport']=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x9d'));db[_0xa2dd('0x9e')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x9f'));db['SalesforceConfiguration']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xa0'));db[_0xa2dd('0xa1')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xa2'));db[_0xa2dd('0xa3')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xa4'));db[_0xa2dd('0xa5')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xa6'));db['SugarcrmField']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xa7'));db[_0xa2dd('0xa8')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xa9'));db[_0xa2dd('0xaa')]=db['sequelize']['import'](_0xa2dd('0xab'));db[_0xa2dd('0xac')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xad'));db[_0xa2dd('0xae')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xaf'));db['ZohoConfiguration']=db['sequelize']['import'](_0xa2dd('0xb0'));db['ZohoField']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/intZohoField/intZohoField.model');db[_0xa2dd('0xb1')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xb2'));db[_0xa2dd('0xb3')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xb4'));db[_0xa2dd('0xb5')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xb6'));db[_0xa2dd('0xb7')]=db[_0xa2dd('0x1')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xa2dd('0xb8')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xb9'));db[_0xa2dd('0xba')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xbb'));db[_0xa2dd('0xbc')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xbd'));db[_0xa2dd('0xbe')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xbf'));db[_0xa2dd('0xc0')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/intVtigerField/intVtigerField.model');db[_0xa2dd('0xc1')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xc2'));db[_0xa2dd('0xc3')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xa2dd('0xc4')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xc5'));db[_0xa2dd('0xc6')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xc7'));db['Dynamics365Configuration']=db['sequelize']['import'](_0xa2dd('0xc8'));db[_0xa2dd('0xc9')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xca'));db[_0xa2dd('0xcb')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db['FreshsalesConfiguration']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xa2dd('0xcc')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xcd'));db[_0xa2dd('0xce')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x94'));db[_0xa2dd('0xcf')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xd0'));db['ChatQueueReport']=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xd1'));db[_0xa2dd('0xd2')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xd3'));db['JscriptyAnswerReport']=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xd4'));db[_0xa2dd('0xd5')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db['JscriptySessionReport']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xd6'));db['SmsQueueReport']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/smsQueueReport/smsQueueReport.model');db[_0xa2dd('0xd7')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xd8'));db[_0xa2dd('0xd9')]=db['sequelize']['import'](_0xa2dd('0xda'));db['JscriptyProject']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xdb'));db[_0xa2dd('0xdc')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xdd'));db[_0xa2dd('0xde')]=db[_0xa2dd('0x1')]['import']('../api/squareOdbc/squareOdbc.model');db[_0xa2dd('0xdf')]=db[_0xa2dd('0x1')]['import']('../api/squareProject/squareProject.model');db[_0xa2dd('0xe0')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/squareRecording/squareRecording.model');db[_0xa2dd('0xe1')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xe2'));db[_0xa2dd('0xe3')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xe4'));db['License']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/license/license.model');db['Campaign']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xe5'));db[_0xa2dd('0xe6')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0xe7'));db[_0xa2dd('0xe8')]=db['sequelize']['import']('../api/attachment/attachment.model');db[_0xa2dd('0xe9')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xea'));db['MailTransferReport']=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/mailTransferReport/mailTransferReport.model');db[_0xa2dd('0xeb')]=db[_0xa2dd('0x1')]['import']('../api/chatTransferReport/chatTransferReport.model');db[_0xa2dd('0xec')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xed'));db[_0xa2dd('0xee')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xa2dd('0xef')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/smsTransferReport/smsTransferReport.model');db[_0xa2dd('0xf0')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xf1'));db[_0xa2dd('0xf2')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xf3'));db['UserProfile']=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xf4'));db[_0xa2dd('0xf5')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xf6'));db[_0xa2dd('0xf7')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')]('../api/userProfileResource/userProfileResource.model');db[_0xa2dd('0xf8')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xf9'));db[_0xa2dd('0xfa')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0xfb'));db[_0xa2dd('0xfc')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xfd'));db[_0xa2dd('0xfe')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0xff'));db[_0xa2dd('0x100')]=db['sequelize']['import'](_0xa2dd('0x101'));db[_0xa2dd('0x102')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x103'));db[_0xa2dd('0x104')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x105'));db[_0xa2dd('0x106')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x107'));db['CloudProvider']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x108'));db['TeamVoiceQueue']=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x109'));db[_0xa2dd('0x10a')]=db['sequelize'][_0xa2dd('0x15')](_0xa2dd('0x10b'));db[_0xa2dd('0x10c')]=db[_0xa2dd('0x1')][_0xa2dd('0x15')](_0xa2dd('0x10d'));db[_0xa2dd('0x10e')]=db[_0xa2dd('0x1')]['import'](_0xa2dd('0x10f'));db['User'][_0xa2dd('0x110')](db['VoiceMail'],{'as':_0xa2dd('0x111'),'onDelete':_0xa2dd('0x112'),'foreignKey':'UserId'});db['User'][_0xa2dd('0x110')](db['UserSetting'],{'as':_0xa2dd('0x113'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db['VoiceRecording'],{'as':_0xa2dd('0x116'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')]['hasMany'](db[_0xa2dd('0x117')],{'as':_0xa2dd('0x118'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db[_0xa2dd('0x119')],{'as':_0xa2dd('0x11a'),'onDelete':_0xa2dd('0x112'),'hooks':!![]});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db[_0xa2dd('0x72')],{'as':_0xa2dd('0x11b'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0xa2dd('0x74')],{'as':'HopperHistory','foreignKey':_0xa2dd('0x114')});db['User'][_0xa2dd('0x115')](db[_0xa2dd('0x11c')],{'as':_0xa2dd('0x11c'),'foreignKey':'UserId'});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db[_0xa2dd('0x11d')],{'as':_0xa2dd('0x11e'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0xa2dd('0x63')],{'as':_0xa2dd('0x11f'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db[_0xa2dd('0x53')],{'as':_0xa2dd('0x120'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':'UserId'});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db[_0xa2dd('0x121')],{'as':_0xa2dd('0x122'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db[_0xa2dd('0xfe')],{'as':'WhatsappInteractions','foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x14')][_0xa2dd('0x115')](db['UserNotification'],{'as':_0xa2dd('0x123'),'foreignKey':'SenderId'});db[_0xa2dd('0x14')][_0xa2dd('0x124')](db['UserProfile'],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0xa2dd('0x125')](db['ChatGroup'],{'as':'Groups','through':_0xa2dd('0x126')});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db['CmContact'],{'as':'Contacts','through':_0xa2dd('0x127')});db['User'][_0xa2dd('0x125')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x128'),'through':'cm_user_has_lists'});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':_0xa2dd('0x129')});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db['MailInteraction'],{'as':_0xa2dd('0x122'),'through':_0xa2dd('0x12a')});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x63')],{'as':_0xa2dd('0x11f'),'through':'user_has_chat_interactions'});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x4d')],{'as':_0xa2dd('0x12b'),'through':_0xa2dd('0x12c')});db['User'][_0xa2dd('0x125')](db[_0xa2dd('0x53')],{'as':_0xa2dd('0x120'),'through':_0xa2dd('0x12d')});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x11d')],{'as':_0xa2dd('0x11e'),'through':_0xa2dd('0x12e')});db['User'][_0xa2dd('0x125')](db[_0xa2dd('0xfe')],{'as':'WhatsappInteractions','through':'user_has_whatsapp_interactions'});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db['VoiceQueue'],{'as':_0xa2dd('0x12f'),'through':_0xa2dd('0x30'),'required':![]});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0xf2')],{'as':_0xa2dd('0x130'),'through':_0xa2dd('0x10c'),'required':![]});db[_0xa2dd('0x14')]['belongsToMany'](db[_0xa2dd('0x131')],{'as':_0xa2dd('0x132'),'through':'UserMailQueue','required':![]});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x133')],{'as':_0xa2dd('0x134'),'through':_0xa2dd('0x135'),'required':![],'hooks':!![]});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x136')],{'as':_0xa2dd('0x137'),'through':_0xa2dd('0x35'),'required':![]});db[_0xa2dd('0x14')]['belongsToMany'](db['SmsQueue'],{'as':_0xa2dd('0x138'),'through':_0xa2dd('0x37'),'required':![]});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x5c')],{'as':_0xa2dd('0x139'),'through':_0xa2dd('0x39'),'required':![]});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x106')],{'as':_0xa2dd('0x13a'),'through':_0xa2dd('0x13b'),'required':![]});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0xf0')],{'through':'cm_user_has_lists'});db[_0xa2dd('0x14')][_0xa2dd('0x125')](db[_0xa2dd('0x13c')],{'as':_0xa2dd('0x13d'),'through':_0xa2dd('0x13e')});db['User']['belongsToMany'](db['FaxAccount'],{'as':_0xa2dd('0x13f'),'through':_0xa2dd('0x140')});db[_0xa2dd('0x14')]['belongsToMany'](db[_0xa2dd('0x141')],{'as':_0xa2dd('0x142'),'through':_0xa2dd('0x143')});db['User'][_0xa2dd('0x125')](db[_0xa2dd('0x57')],{'as':_0xa2dd('0x144'),'through':_0xa2dd('0x145')});db['User'][_0xa2dd('0x125')](db[_0xa2dd('0x146')],{'as':'SmsAccounts','through':_0xa2dd('0x147')});db[_0xa2dd('0x14')]['belongsToMany'](db['WhatsappAccount'],{'as':_0xa2dd('0x148'),'through':_0xa2dd('0x149')});db[_0xa2dd('0x16')]['hasMany'](db[_0xa2dd('0x119')],{'as':_0xa2dd('0x14a'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x14b')});db['VoiceContext']['hasMany'](db['VoiceExtension'],{'onDelete':'cascade'});db[_0xa2dd('0x119')][_0xa2dd('0x115')](db[_0xa2dd('0x119')],{'as':'Applications','onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x1a')][_0xa2dd('0x125')](db['Sound'],{'as':_0xa2dd('0x14c'),'through':_0xa2dd('0x14d')});db['VoiceQueue']['hasMany'](db[_0xa2dd('0x117')],{'as':_0xa2dd('0x14e'),'foreignKey':_0xa2dd('0x14f')});db[_0xa2dd('0x1c')][_0xa2dd('0x115')](db[_0xa2dd('0x6e')],{'as':'Hoppers','foreignKey':_0xa2dd('0x14f')});db['VoiceQueue'][_0xa2dd('0x115')](db[_0xa2dd('0x72')],{'as':_0xa2dd('0x11b'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xa2dd('0x115')](db[_0xa2dd('0x74')],{'as':_0xa2dd('0x150'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xa2dd('0x14f')});db['VoiceQueue'][_0xa2dd('0x115')](db[_0xa2dd('0x70')],{'as':_0xa2dd('0x151'),'foreignKey':_0xa2dd('0x14f')});db[_0xa2dd('0x1c')][_0xa2dd('0x115')](db[_0xa2dd('0x152')],{'as':_0xa2dd('0x153'),'foreignKey':_0xa2dd('0x14f')});db[_0xa2dd('0x1c')][_0xa2dd('0x124')](db[_0xa2dd('0x154')],{'as':'Trunk','foreignKey':_0xa2dd('0x155')});db['VoiceQueue']['belongsTo'](db[_0xa2dd('0x154')],{'as':_0xa2dd('0x156'),'foreignKey':'TrunkBackupId'});db[_0xa2dd('0x1c')]['belongsTo'](db[_0xa2dd('0x81')],{'as':'Interval','foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x1c')]['belongsTo'](db[_0xa2dd('0x158')],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db[_0xa2dd('0x1c')][_0xa2dd('0x125')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x128'),'through':'voice_queues_has_cm_lists'});db[_0xa2dd('0x1c')]['belongsToMany'](db['User'],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x30')});db['VoiceQueue'][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'as':'Teams','through':_0xa2dd('0x15c')});db[_0xa2dd('0x1c')][_0xa2dd('0x125')](db['CmList'],{'as':_0xa2dd('0x15d'),'through':_0xa2dd('0x15e')});db['VoiceRecording']['belongsTo'](db[_0xa2dd('0x14')],{'as':'User','foreignKey':_0xa2dd('0x114')});db['ScreenRecording'][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':'User','foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x111')][_0xa2dd('0x115')](db['VoiceMailMessage'],{'as':'Messages','onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x15f'),'sourceKey':_0xa2dd('0x160')});db[_0xa2dd('0x21')]['belongsTo'](db[_0xa2dd('0x111')],{'foreignKey':_0xa2dd('0x15f'),'targetKey':_0xa2dd('0x160')});db[_0xa2dd('0x23')][_0xa2dd('0x115')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':'uniqueid','constraints':![]});db[_0xa2dd('0x23')][_0xa2dd('0x115')](db[_0xa2dd('0x27')],{'as':_0xa2dd('0x161'),'foreignKey':_0xa2dd('0x162'),'constraints':![]});db[_0xa2dd('0x23')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x14'),'foreignKey':_0xa2dd('0x114')});db['VoiceCallReport'][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db['MailServerIn']['belongsTo'](db[_0xa2dd('0x141')],{'as':_0xa2dd('0x141'),'foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x3b')][_0xa2dd('0x124')](db[_0xa2dd('0x166')],{'as':_0xa2dd('0x166'),'foreignKey':_0xa2dd('0x167'),'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x3d')][_0xa2dd('0x124')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x3d')]['belongsTo'](db['CloudProvider'],{'as':'CloudProvider','foreignKey':'CloudProviderId','onDelete':_0xa2dd('0x168')});db['MailAccount'][_0xa2dd('0x110')](db[_0xa2dd('0x3b')],{'as':_0xa2dd('0x169'),'onDelete':_0xa2dd('0x112')});db['MailAccount']['hasOne'](db[_0xa2dd('0x3d')],{'as':'Smtp','onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x141')][_0xa2dd('0x115')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xa2dd('0x165'),'onDelete':_0xa2dd('0x112')});db['MailAccount']['hasMany'](db[_0xa2dd('0x7d')],{'as':_0xa2dd('0x16a'),'foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x141')]['hasMany'](db[_0xa2dd('0x44')],{'as':_0xa2dd('0x16b'),'foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x141')][_0xa2dd('0x115')](db[_0xa2dd('0x121')],{'as':'Interactions'});db[_0xa2dd('0x141')]['hasMany'](db[_0xa2dd('0x16c')],{'as':_0xa2dd('0x16d')});db[_0xa2dd('0x141')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x141')][_0xa2dd('0x124')](db[_0xa2dd('0x8f')],{'as':'Template','foreignKey':_0xa2dd('0x170')});db[_0xa2dd('0x141')]['belongsTo'](db['Pause'],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db[_0xa2dd('0x141')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x143')});db[_0xa2dd('0x131')][_0xa2dd('0x125')](db['User'],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x33')});db[_0xa2dd('0x131')][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':_0xa2dd('0x171'),'as':_0xa2dd('0x172')});db['MailInteraction'][_0xa2dd('0x115')](db['MailMessage'],{'as':_0xa2dd('0x16b'),'onDelete':'cascade','foreignKey':_0xa2dd('0x173')});db[_0xa2dd('0x121')][_0xa2dd('0x124')](db[_0xa2dd('0x141')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x121')][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId'});db[_0xa2dd('0x121')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':'UserId'});db[_0xa2dd('0x121')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x176'),'as':'Tags'});db[_0xa2dd('0x121')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x176'),'as':_0xa2dd('0x177')});db[_0xa2dd('0x121')]['belongsToMany'](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x178'),'through':_0xa2dd('0x12a'),'foreignKey':_0xa2dd('0x173')});db[_0xa2dd('0x44')]['hasMany'](db[_0xa2dd('0xe8')],{'as':_0xa2dd('0x179'),'onDelete':'cascade'});db['MailMessage']['belongsTo'](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x14')});db[_0xa2dd('0x44')]['belongsTo'](db['CmContact'],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x163')});db[_0xa2dd('0x44')][_0xa2dd('0x124')](db['MailInteraction'],{'as':'Interaction','foreignKey':'MailInteractionId'});db['MailMessage'][_0xa2dd('0x124')](db[_0xa2dd('0x141')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x44')][_0xa2dd('0x124')](db[_0xa2dd('0x13c')],{'as':_0xa2dd('0x13c'),'foreignKey':'ChatWebsiteId'});db[_0xa2dd('0x44')][_0xa2dd('0x124')](db[_0xa2dd('0x17a')],{'as':_0xa2dd('0x17a'),'foreignKey':_0xa2dd('0x17b')});db[_0xa2dd('0x16c')]['belongsTo'](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x16c')][_0xa2dd('0x124')](db[_0xa2dd('0x131')],{'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x16c')]['belongsTo'](db[_0xa2dd('0x141')],{'onDelete':_0xa2dd('0x168')});db['MailApplication'][_0xa2dd('0x124')](db[_0xa2dd('0x81')],{'onDelete':'restrict','foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x16c')][_0xa2dd('0x124')](db[_0xa2dd('0x8a')],{'onDelete':_0xa2dd('0x168'),'foreignKey':_0xa2dd('0x17c')});db[_0xa2dd('0x17d')][_0xa2dd('0x124')](db[_0xa2dd('0x141')],{});db['MailQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db['MailQueueReport']['belongsTo'](db['CmContact'],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId'});db[_0xa2dd('0x17d')][_0xa2dd('0x124')](db['MailInteraction'],{});db['MailQueueReport'][_0xa2dd('0x124')](db['MailMessage'],{});db[_0xa2dd('0x17d')]['belongsTo'](db[_0xa2dd('0x14')],{});db[_0xa2dd('0x17d')]['belongsTo'](db[_0xa2dd('0x131')],{});db[_0xa2dd('0x46')][_0xa2dd('0x115')](db[_0xa2dd('0x48')],{'as':'Items','onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x49')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':_0xa2dd('0x17f'),'foreignKey':_0xa2dd('0x180'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x49')][_0xa2dd('0x115')](db[_0xa2dd('0x7d')],{'as':_0xa2dd('0x16a'),'foreignKey':'FaxAccountId'});db[_0xa2dd('0x49')][_0xa2dd('0x115')](db[_0xa2dd('0x4d')],{'as':'Interactions'});db[_0xa2dd('0x49')][_0xa2dd('0x115')](db['FaxApplication'],{'as':_0xa2dd('0x16d')});db[_0xa2dd('0x49')][_0xa2dd('0x115')](db['VoiceExtension'],{'as':_0xa2dd('0x181'),'onDelete':_0xa2dd('0x112')});db['FaxAccount']['hasMany'](db[_0xa2dd('0x182')],{'as':_0xa2dd('0x16b')});db[_0xa2dd('0x49')]['belongsTo'](db[_0xa2dd('0x154')],{'as':'Trunk'});db[_0xa2dd('0x49')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x49')]['belongsTo'](db[_0xa2dd('0x158')],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db['FaxAccount'][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x140')});db[_0xa2dd('0x4b')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x4b')][_0xa2dd('0x124')](db[_0xa2dd('0x136')],{'onDelete':_0xa2dd('0x168')});db['FaxApplication'][_0xa2dd('0x124')](db[_0xa2dd('0x49')],{'onDelete':'restrict'});db['FaxApplication']['belongsTo'](db[_0xa2dd('0x8a')],{'onDelete':_0xa2dd('0x168'),'foreignKey':_0xa2dd('0x17c')});db[_0xa2dd('0x4d')][_0xa2dd('0x115')](db[_0xa2dd('0x182')],{'as':_0xa2dd('0x16b'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x183')});db[_0xa2dd('0x4d')][_0xa2dd('0x124')](db[_0xa2dd('0x49')],{'as':_0xa2dd('0x174'),'foreignKey':'FaxAccountId'});db['FaxInteraction']['belongsTo'](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db[_0xa2dd('0x4d')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x4d')][_0xa2dd('0x125')](db['Tag'],{'through':_0xa2dd('0x184'),'as':'Tags'});db['FaxInteraction'][_0xa2dd('0x125')](db['Tag'],{'through':_0xa2dd('0x184'),'as':'ThroughTags'});db[_0xa2dd('0x4d')]['belongsToMany'](db[_0xa2dd('0x14')],{'as':'Users','through':_0xa2dd('0x12c'),'foreignKey':'FaxInteractionId'});db[_0xa2dd('0x182')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x14')});db[_0xa2dd('0x182')][_0xa2dd('0x124')](db['FaxInteraction'],{'as':_0xa2dd('0x185'),'foreignKey':_0xa2dd('0x183')});db['FaxMessage']['belongsTo'](db['CmContact'],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x163')});db['FaxMessage'][_0xa2dd('0x124')](db[_0xa2dd('0xe8')],{'as':_0xa2dd('0xe8'),'foreignKey':'AttachmentId'});db[_0xa2dd('0x182')]['belongsTo'](db[_0xa2dd('0x49')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x180')});db[_0xa2dd('0x136')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':'Agents','through':'UserFaxQueue'});db['FaxQueue'][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':'team_has_fax_queues','as':_0xa2dd('0x172')});db[_0xa2dd('0x50')][_0xa2dd('0x124')](db['FaxAccount'],{});db['FaxQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db['FaxQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db['FaxQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0x4d')],{});db[_0xa2dd('0x50')]['belongsTo'](db['FaxMessage'],{});db['FaxQueueReport']['belongsTo'](db[_0xa2dd('0x14')],{});db[_0xa2dd('0x50')]['belongsTo'](db[_0xa2dd('0x136')],{});db[_0xa2dd('0x146')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':_0xa2dd('0x17f'),'foreignKey':_0xa2dd('0x186'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x146')][_0xa2dd('0x115')](db[_0xa2dd('0x7d')],{'as':_0xa2dd('0x16a'),'foreignKey':_0xa2dd('0x186')});db[_0xa2dd('0x146')][_0xa2dd('0x115')](db[_0xa2dd('0x187')],{'as':_0xa2dd('0x16b'),'foreignKey':_0xa2dd('0x186')});db[_0xa2dd('0x146')][_0xa2dd('0x115')](db['SmsInteraction'],{'as':_0xa2dd('0x188')});db['SmsAccount'][_0xa2dd('0x115')](db[_0xa2dd('0x52')],{'as':_0xa2dd('0x16d')});db[_0xa2dd('0x146')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x146')][_0xa2dd('0x124')](db[_0xa2dd('0x158')],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db[_0xa2dd('0x146')]['belongsToMany'](db['User'],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x147')});db['SmsApplication'][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x168')});db['SmsApplication'][_0xa2dd('0x124')](db[_0xa2dd('0x55')],{'onDelete':_0xa2dd('0x168')});db['SmsApplication'][_0xa2dd('0x124')](db[_0xa2dd('0x146')],{'onDelete':'restrict'});db[_0xa2dd('0x52')][_0xa2dd('0x124')](db['Interval'],{'onDelete':_0xa2dd('0x168'),'foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x52')][_0xa2dd('0x124')](db[_0xa2dd('0x8a')],{'onDelete':_0xa2dd('0x168'),'foreignKey':_0xa2dd('0x17c')});db[_0xa2dd('0x53')][_0xa2dd('0x115')](db[_0xa2dd('0x187')],{'as':_0xa2dd('0x16b'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x189')});db['SmsInteraction'][_0xa2dd('0x124')](db[_0xa2dd('0x146')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x186')});db[_0xa2dd('0x53')][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db[_0xa2dd('0x53')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':'UserId'});db[_0xa2dd('0x53')]['belongsToMany'](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x18a'),'as':_0xa2dd('0x18b')});db[_0xa2dd('0x53')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x18a'),'as':'ThroughTags'});db['SmsInteraction'][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':'Users','through':_0xa2dd('0x12d'),'foreignKey':_0xa2dd('0x189')});db[_0xa2dd('0x187')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x14')});db[_0xa2dd('0x187')][_0xa2dd('0x124')](db['CmContact'],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x163')});db['SmsMessage']['belongsTo'](db[_0xa2dd('0x53')],{'onDelete':_0xa2dd('0x112'),'as':'Interaction','foreignKey':_0xa2dd('0x189')});db['SmsMessage'][_0xa2dd('0x124')](db[_0xa2dd('0x146')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x186')});db[_0xa2dd('0x55')]['belongsToMany'](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':'UserSmsQueue','foreignKey':_0xa2dd('0x18c')});db[_0xa2dd('0x55')][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':'team_has_sms_queues','as':_0xa2dd('0x172')});db[_0xa2dd('0x57')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':'Dispositions','foreignKey':_0xa2dd('0x18d'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x57')][_0xa2dd('0x115')](db[_0xa2dd('0x7d')],{'as':_0xa2dd('0x16a'),'foreignKey':'OpenchannelAccountId'});db[_0xa2dd('0x57')][_0xa2dd('0x115')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':_0xa2dd('0x18d')});db[_0xa2dd('0x57')]['hasMany'](db['OpenchannelMessage'],{'as':_0xa2dd('0x16b'),'foreignKey':_0xa2dd('0x18d')});db['OpenchannelAccount'][_0xa2dd('0x115')](db[_0xa2dd('0x58')],{'as':_0xa2dd('0x16d'),'foreignKey':_0xa2dd('0x18d')});db['OpenchannelAccount'][_0xa2dd('0x124')](db['CmList'],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x57')][_0xa2dd('0x124')](db[_0xa2dd('0x158')],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db[_0xa2dd('0x57')]['belongsToMany'](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':'user_has_openchannel_accounts'});db[_0xa2dd('0x58')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x58')]['belongsTo'](db[_0xa2dd('0x5c')],{'onDelete':_0xa2dd('0x168'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelApplication'][_0xa2dd('0x124')](db['OpenchannelAccount'],{'onDelete':'restrict','foreignKey':_0xa2dd('0x18d')});db[_0xa2dd('0x58')]['belongsTo'](db[_0xa2dd('0x81')],{'onDelete':_0xa2dd('0x168'),'foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x58')][_0xa2dd('0x124')](db['Tag'],{'onDelete':'restrict','foreignKey':_0xa2dd('0x17c')});db['OpenchannelInteraction'][_0xa2dd('0x115')](db['OpenchannelMessage'],{'as':_0xa2dd('0x16b'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x18e')});db[_0xa2dd('0x11d')][_0xa2dd('0x124')](db['OpenchannelAccount'],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x18d')});db[_0xa2dd('0x11d')][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':'Contact','foreignKey':_0xa2dd('0x164')});db[_0xa2dd('0x11d')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x11d')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':'openchannel_interaction_has_tags','as':_0xa2dd('0x18b')});db['OpenchannelInteraction']['belongsToMany'](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x18f'),'as':_0xa2dd('0x177')});db['OpenchannelInteraction']['belongsToMany'](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x178'),'through':_0xa2dd('0x12e'),'foreignKey':_0xa2dd('0x18e')});db[_0xa2dd('0x190')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x14')});db[_0xa2dd('0x190')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0xa2dd('0x163')});db['OpenchannelMessage'][_0xa2dd('0x124')](db[_0xa2dd('0x11d')],{'onDelete':_0xa2dd('0x112'),'as':'Interaction','foreignKey':_0xa2dd('0x18e')});db[_0xa2dd('0x190')][_0xa2dd('0x124')](db[_0xa2dd('0xe8')],{'as':'Attachment','foreignKey':_0xa2dd('0x191')});db[_0xa2dd('0x190')]['belongsTo'](db[_0xa2dd('0x57')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db[_0xa2dd('0x5c')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':'Agents','through':_0xa2dd('0x39'),'foreignKey':_0xa2dd('0x192')});db[_0xa2dd('0x5c')][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':_0xa2dd('0x193'),'as':'Teams'});db[_0xa2dd('0x13c')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':_0xa2dd('0x17f'),'foreignKey':_0xa2dd('0x194'),'onDelete':'cascade'});db[_0xa2dd('0x13c')]['hasMany'](db[_0xa2dd('0x7d')],{'as':'Answers','foreignKey':_0xa2dd('0x194')});db[_0xa2dd('0x13c')][_0xa2dd('0x115')](db[_0xa2dd('0x69')],{'as':_0xa2dd('0x195')});db[_0xa2dd('0x13c')][_0xa2dd('0x115')](db[_0xa2dd('0x63')],{'as':_0xa2dd('0x188')});db[_0xa2dd('0x13c')][_0xa2dd('0x115')](db['ChatApplication'],{'as':'Applications'});db[_0xa2dd('0x13c')][_0xa2dd('0x115')](db[_0xa2dd('0x65')],{'as':_0xa2dd('0x16b')});db[_0xa2dd('0x13c')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x13c')]['belongsTo'](db[_0xa2dd('0x81')],{'as':_0xa2dd('0x81'),'foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x13c')][_0xa2dd('0x124')](db['MailAccount'],{'as':_0xa2dd('0x141'),'foreignKey':_0xa2dd('0x165')});db[_0xa2dd('0x13c')][_0xa2dd('0x124')](db[_0xa2dd('0x158')],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db[_0xa2dd('0x13c')][_0xa2dd('0x125')](db['User'],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x13e')});db['OpenchannelQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0x57')],{});db[_0xa2dd('0x5f')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x5f')][_0xa2dd('0x124')](db['CmContact'],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId'});db[_0xa2dd('0x5f')][_0xa2dd('0x124')](db[_0xa2dd('0x11d')],{});db[_0xa2dd('0x5f')][_0xa2dd('0x124')](db['OpenchannelMessage'],{});db[_0xa2dd('0x5f')]['belongsTo'](db[_0xa2dd('0x14')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0xa2dd('0x5c')],{});db[_0xa2dd('0x61')]['belongsTo'](db['User'],{'as':_0xa2dd('0x196'),'foreignKey':'UserId','onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x61')]['belongsTo'](db[_0xa2dd('0x133')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x61')]['belongsTo'](db[_0xa2dd('0x13c')],{'as':_0xa2dd('0x197'),'foreignKey':_0xa2dd('0x194'),'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x61')][_0xa2dd('0x124')](db['Tag'],{'onDelete':'restrict','foreignKey':_0xa2dd('0x17c')});db['ChatInteraction'][_0xa2dd('0x115')](db['ChatMessage'],{'as':'Messages','onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x198')});db[_0xa2dd('0x63')]['belongsTo'](db['ChatWebsite'],{'as':_0xa2dd('0x174'),'foreignKey':'ChatWebsiteId'});db['ChatInteraction'][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId'});db[_0xa2dd('0x63')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0x63')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x199'),'as':_0xa2dd('0x18b')});db[_0xa2dd('0x63')]['belongsToMany'](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x199'),'as':_0xa2dd('0x177')});db['ChatInteraction'][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x178'),'through':_0xa2dd('0x19a'),'foreignKey':'ChatInteractionId'});db[_0xa2dd('0x65')]['belongsTo'](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x14')});db[_0xa2dd('0x65')][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x163'),'foreignKey':'ContactId'});db[_0xa2dd('0x65')][_0xa2dd('0x124')](db['ChatInteraction'],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x185'),'foreignKey':_0xa2dd('0x198')});db['ChatMessage'][_0xa2dd('0x124')](db[_0xa2dd('0xe8')],{'as':_0xa2dd('0xe8'),'foreignKey':_0xa2dd('0x191')});db[_0xa2dd('0x65')]['belongsTo'](db[_0xa2dd('0x13c')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x194')});db[_0xa2dd('0x17a')]['hasMany'](db[_0xa2dd('0xe8')],{'as':_0xa2dd('0x179'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0xa2dd('0x17a')][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db['ChatOfflineMessage'][_0xa2dd('0x124')](db['ChatWebsite'],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x194')});db[_0xa2dd('0x133')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':'UserChatQueue','hooks':!![]});db['ChatQueue']['belongsToMany'](db[_0xa2dd('0xe3')],{'through':'team_has_chat_queues','as':_0xa2dd('0x172')});db[_0xa2dd('0x67')][_0xa2dd('0x115')](db[_0xa2dd('0xd2')],{'as':'Messages','foreignKey':_0xa2dd('0x19b'),'onDelete':'cascade'});db[_0xa2dd('0x67')][_0xa2dd('0x125')](db['User'],{'as':_0xa2dd('0x14e'),'through':'chat_group_has_users'});db[_0xa2dd('0x69')][_0xa2dd('0x124')](db[_0xa2dd('0x13c')],{'as':_0xa2dd('0x197'),'foreignKey':_0xa2dd('0x194')});db['CmCompany'][_0xa2dd('0x115')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x19c'),'foreignKey':'CompanyId'});db[_0xa2dd('0x6d')][_0xa2dd('0x115')](db['CmContactHasItem'],{'as':_0xa2dd('0x19d'),'foreignKey':_0xa2dd('0x19e')});db[_0xa2dd('0x6d')][_0xa2dd('0x115')](db[_0xa2dd('0x6e')],{'as':'Hoppers','foreignKey':_0xa2dd('0x164')});db[_0xa2dd('0x6d')][_0xa2dd('0x115')](db[_0xa2dd('0x72')],{'as':'HopperFinals','foreignKey':_0xa2dd('0x164')});db[_0xa2dd('0x6d')][_0xa2dd('0x115')](db[_0xa2dd('0x74')],{'as':_0xa2dd('0x150'),'foreignKey':_0xa2dd('0x164')});db['CmContact'][_0xa2dd('0x115')](db[_0xa2dd('0x11c')],{'as':'ReportAgentPreview','foreignKey':_0xa2dd('0x164')});db['CmContact'][_0xa2dd('0x115')](db[_0xa2dd('0x152')],{'as':_0xa2dd('0x153'),'foreignKey':_0xa2dd('0x164')});db['CmContact'][_0xa2dd('0x115')](db[_0xa2dd('0x11d')],{'as':_0xa2dd('0x11e'),'foreignKey':_0xa2dd('0x164'),'onDelete':'restrict'});db['CmContact'][_0xa2dd('0x115')](db[_0xa2dd('0x63')],{'as':_0xa2dd('0x11f'),'foreignKey':_0xa2dd('0x164'),'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x6d')][_0xa2dd('0x115')](db[_0xa2dd('0x53')],{'as':_0xa2dd('0x120'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0xa2dd('0x6d')]['hasMany'](db[_0xa2dd('0x4d')],{'as':_0xa2dd('0x12b'),'foreignKey':_0xa2dd('0x164'),'onDelete':'restrict'});db['CmContact']['hasMany'](db[_0xa2dd('0x121')],{'as':_0xa2dd('0x122'),'foreignKey':_0xa2dd('0x164'),'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x6d')][_0xa2dd('0x124')](db[_0xa2dd('0x6b')],{'as':_0xa2dd('0x19f'),'foreignKey':_0xa2dd('0x1a0')});db[_0xa2dd('0x6d')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':'List','foreignKey':_0xa2dd('0x16f'),'onDelete':_0xa2dd('0x112')});db['CmContact'][_0xa2dd('0x125')](db['User'],{'as':_0xa2dd('0x178'),'through':_0xa2dd('0x127')});db['CmContact'][_0xa2dd('0x125')](db['Tag'],{'as':_0xa2dd('0x18b'),'through':'cm_contact_has_tags'});db[_0xa2dd('0x6d')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':'cm_contact_has_tags','as':_0xa2dd('0x177')});db[_0xa2dd('0x6e')]['hasMany'](db[_0xa2dd('0x1a1')],{'as':'AdditionalPhones','foreignKey':_0xa2dd('0x1a2')});db[_0xa2dd('0x6e')]['belongsTo'](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId','onDelete':'cascade'});db[_0xa2dd('0x6e')]['belongsTo'](db[_0xa2dd('0xf0')],{'as':'List','foreignKey':_0xa2dd('0x16f'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x6e')][_0xa2dd('0x124')](db['User'],{'as':_0xa2dd('0x196'),'foreignKey':_0xa2dd('0x114')});db['CmHopper'][_0xa2dd('0x124')](db[_0xa2dd('0x1c')],{'as':_0xa2dd('0x1a3'),'foreignKey':_0xa2dd('0x14f'),'onDelete':'cascade'});db[_0xa2dd('0x6e')]['belongsTo'](db[_0xa2dd('0x1a4')],{'as':'Campaign','foreignKey':_0xa2dd('0x1a5'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x6e')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':_0xa2dd('0x1a6')});db[_0xa2dd('0x70')]['belongsTo'](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId','onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x70')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f'),'onDelete':_0xa2dd('0x112')});db['CmHopperBlack'][_0xa2dd('0x124')](db[_0xa2dd('0x1c')],{'as':_0xa2dd('0x1a3'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db['CmHopperBlack']['belongsTo'](db['Campaign'],{'as':_0xa2dd('0x1a4'),'foreignKey':_0xa2dd('0x1a5'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x7b')][_0xa2dd('0x115')](db[_0xa2dd('0x80')],{'as':{'plural':'All','singular':'OneAll'},'foreignKey':_0xa2dd('0x1a7'),'onDelete':_0xa2dd('0x112'),'hooks':!![]});db[_0xa2dd('0x7b')][_0xa2dd('0x115')](db[_0xa2dd('0x80')],{'as':{'plural':_0xa2dd('0x1a8'),'singular':_0xa2dd('0x1a9')},'foreignKey':'AutomationAnyId','onDelete':_0xa2dd('0x112'),'hooks':!![]});db[_0xa2dd('0x7b')][_0xa2dd('0x115')](db['Action'],{'as':_0xa2dd('0x1aa'),'foreignKey':_0xa2dd('0x1ab'),'onDelete':_0xa2dd('0x112'),'hooks':!![]});db[_0xa2dd('0x17e')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':_0xa2dd('0x17f'),'foreignKey':_0xa2dd('0x1ac'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x81')][_0xa2dd('0x115')](db[_0xa2dd('0x81')],{'as':_0xa2dd('0x1ad'),'foreignKey':_0xa2dd('0x157'),'onDelete':_0xa2dd('0x112'),'hooks':!![],'required':![]});db[_0xa2dd('0x81')][_0xa2dd('0x115')](db[_0xa2dd('0x119')],{'as':_0xa2dd('0x11a'),'foreignKey':'IntervalId','onDelete':'restrict'});db[_0xa2dd('0x81')][_0xa2dd('0x115')](db[_0xa2dd('0x16c')],{'as':'MailApplications','foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x81')][_0xa2dd('0x115')](db[_0xa2dd('0x61')],{'as':_0xa2dd('0x1ae'),'foreignKey':_0xa2dd('0x157')});db['Interval'][_0xa2dd('0x115')](db[_0xa2dd('0x4b')],{'as':_0xa2dd('0x1af'),'foreignKey':'IntervalId'});db[_0xa2dd('0x81')][_0xa2dd('0x115')](db[_0xa2dd('0x52')],{'as':_0xa2dd('0x1b0'),'foreignKey':_0xa2dd('0x157')});db[_0xa2dd('0x86')][_0xa2dd('0x124')](db[_0xa2dd('0x141')],{});db[_0xa2dd('0x86')][_0xa2dd('0x124')](db['AnalyticDefaultReport'],{'foreignKey':_0xa2dd('0x1b1')});db['Schedule'][_0xa2dd('0x124')](db[_0xa2dd('0x1b2')],{'foreignKey':_0xa2dd('0x1b3')});db[_0xa2dd('0x88')][_0xa2dd('0x125')](db[_0xa2dd('0x1a')],{'as':_0xa2dd('0x1b4'),'through':'moh_has_sounds','onDelete':_0xa2dd('0x168')});db[_0xa2dd('0x8a')]['belongsToMany'](db['CmContact'],{'through':_0xa2dd('0x1b5')});db[_0xa2dd('0x8a')]['belongsToMany'](db['ChatInteraction'],{'through':'chat_interaction_has_tags'});db[_0xa2dd('0x8a')][_0xa2dd('0x125')](db[_0xa2dd('0x121')],{'through':_0xa2dd('0x176')});db[_0xa2dd('0x8a')][_0xa2dd('0x125')](db[_0xa2dd('0x53')],{'through':_0xa2dd('0x18a')});db[_0xa2dd('0x8a')]['belongsToMany'](db[_0xa2dd('0x4d')],{'through':_0xa2dd('0x184')});db[_0xa2dd('0x8a')]['belongsToMany'](db[_0xa2dd('0x11d')],{'through':'openchannel_interaction_has_tags'});db[_0xa2dd('0x8a')][_0xa2dd('0x125')](db[_0xa2dd('0xfe')],{'through':_0xa2dd('0x1b6')});db['CmContactHasItem']['belongsTo'](db[_0xa2dd('0x8c')],{'as':'ItemType','foreignKey':_0xa2dd('0x1b7')});db[_0xa2dd('0x1a1')][_0xa2dd('0x124')](db[_0xa2dd('0x6e')],{'as':_0xa2dd('0x1b8'),'foreignKey':_0xa2dd('0x1a2')});db['CmContactHasItem'][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':'CmContactId'});db[_0xa2dd('0x90')][_0xa2dd('0x115')](db[_0xa2dd('0x80')],{'as':{'plural':_0xa2dd('0x1b9'),'singular':_0xa2dd('0x1ba')},'foreignKey':_0xa2dd('0x1bb'),'onDelete':_0xa2dd('0x112'),'hooks':!![]});db['Trigger'][_0xa2dd('0x115')](db['Condition'],{'as':{'plural':_0xa2dd('0x1bc'),'singular':_0xa2dd('0x1bd')},'foreignKey':_0xa2dd('0x1be'),'onDelete':_0xa2dd('0x112'),'hooks':!![]});db['Trigger'][_0xa2dd('0x115')](db[_0xa2dd('0x79')],{'as':'Actions','foreignKey':_0xa2dd('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0xa2dd('0x1b2')]['hasMany'](db[_0xa2dd('0x9c')],{'as':'Fields','onDelete':_0xa2dd('0x112'),'foreignKey':'CustomReportId','hooks':!![]});db[_0xa2dd('0x97')][_0xa2dd('0x115')](db[_0xa2dd('0x9c')],{'as':_0xa2dd('0x1c0'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1b1')});db[_0xa2dd('0x9a')][_0xa2dd('0x115')](db['AnalyticFieldReport'],{'as':_0xa2dd('0x1c0'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c1')});db['AnalyticFieldReport'][_0xa2dd('0x124')](db[_0xa2dd('0x9a')],{'foreignKey':'MetricId'});db[_0xa2dd('0x9e')][_0xa2dd('0x115')](db[_0xa2dd('0x1c2')],{'as':_0xa2dd('0x1c3'),'onDelete':'cascade','foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0x1c2')][_0xa2dd('0x115')](db[_0xa2dd('0xa1')],{'as':'Subjects','onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0x1c2')][_0xa2dd('0x115')](db[_0xa2dd('0xa1')],{'as':_0xa2dd('0x1c6'),'onDelete':'cascade','foreignKey':_0xa2dd('0x1c7')});db['SalesforceConfiguration'][_0xa2dd('0x115')](db[_0xa2dd('0xa1')],{'as':_0xa2dd('0x1c0'),'onDelete':'cascade','foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0x1c2')]['belongsTo'](db[_0xa2dd('0x9e')],{'as':'Account','foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xa1')][_0xa2dd('0x115')](db[_0xa2dd('0xa1')],{'as':_0xa2dd('0x1c9'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xa1')]['hasMany'](db['SalesforceField'],{'as':_0xa2dd('0x1ca'),'foreignKey':'DescriptionId'});db[_0xa2dd('0xa1')][_0xa2dd('0x115')](db[_0xa2dd('0xa1')],{'as':_0xa2dd('0x1cb'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xa1')]['belongsTo'](db[_0xa2dd('0x92')],{'as':_0xa2dd('0x92'),'foreignKey':'VariableId'});db['SugarcrmAccount'][_0xa2dd('0x115')](db[_0xa2dd('0xa5')],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':'AccountId'});db[_0xa2dd('0xa5')][_0xa2dd('0x115')](db[_0xa2dd('0x1cc')],{'as':_0xa2dd('0x1cd'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xa5')][_0xa2dd('0x115')](db[_0xa2dd('0x1cc')],{'as':_0xa2dd('0x1c6'),'onDelete':_0xa2dd('0x112'),'foreignKey':'DescriptionId'});db[_0xa2dd('0xa5')][_0xa2dd('0x115')](db[_0xa2dd('0x1cc')],{'as':_0xa2dd('0x1c0'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xa5')][_0xa2dd('0x124')](db[_0xa2dd('0xa3')],{'as':_0xa2dd('0x174'),'foreignKey':'AccountId'});db[_0xa2dd('0x1cc')][_0xa2dd('0x115')](db[_0xa2dd('0x1cc')],{'as':_0xa2dd('0x1c9'),'foreignKey':_0xa2dd('0x1c5')});db['SugarcrmField'][_0xa2dd('0x115')](db[_0xa2dd('0x1cc')],{'as':'Description','foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0x1cc')][_0xa2dd('0x115')](db['SugarcrmField'],{'as':'Field','foreignKey':'FieldId'});db[_0xa2dd('0x1cc')][_0xa2dd('0x124')](db['Variable'],{'as':'Variable','foreignKey':_0xa2dd('0x1ce')});db['DeskAccount'][_0xa2dd('0x115')](db[_0xa2dd('0xaa')],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xaa')][_0xa2dd('0x115')](db[_0xa2dd('0xac')],{'as':_0xa2dd('0x1cd'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xaa')][_0xa2dd('0x115')](db['DeskField'],{'as':'Descriptions','onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xaa')][_0xa2dd('0x115')](db['DeskField'],{'as':_0xa2dd('0x1c0'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c8')});db['DeskConfiguration'][_0xa2dd('0x124')](db[_0xa2dd('0xa8')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xaa')]['belongsToMany'](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x1cf')});db[_0xa2dd('0xac')][_0xa2dd('0x115')](db[_0xa2dd('0xac')],{'as':_0xa2dd('0x1c9'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xac')][_0xa2dd('0x115')](db['DeskField'],{'as':_0xa2dd('0x1ca'),'foreignKey':'DescriptionId'});db[_0xa2dd('0xac')][_0xa2dd('0x115')](db[_0xa2dd('0xac')],{'as':'Field','foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xac')][_0xa2dd('0x124')](db[_0xa2dd('0x92')],{'as':_0xa2dd('0x92'),'foreignKey':'VariableId'});db[_0xa2dd('0xae')][_0xa2dd('0x115')](db[_0xa2dd('0x1d0')],{'as':'Configurations','onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0x1d0')]['hasMany'](db['ZohoField'],{'as':_0xa2dd('0x1cd'),'onDelete':_0xa2dd('0x112'),'foreignKey':'SubjectId'});db['ZohoConfiguration']['hasMany'](db[_0xa2dd('0x1d1')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0x1d0')][_0xa2dd('0x115')](db[_0xa2dd('0x1d1')],{'as':_0xa2dd('0x1c0'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c8')});db['ZohoConfiguration'][_0xa2dd('0x124')](db[_0xa2dd('0xae')],{'as':_0xa2dd('0x174'),'foreignKey':'AccountId'});db[_0xa2dd('0x1d1')][_0xa2dd('0x115')](db[_0xa2dd('0x1d1')],{'as':_0xa2dd('0x1c9'),'foreignKey':'SubjectId'});db[_0xa2dd('0x1d1')][_0xa2dd('0x115')](db[_0xa2dd('0x1d1')],{'as':_0xa2dd('0x1ca'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0x1d1')][_0xa2dd('0x115')](db['ZohoField'],{'as':_0xa2dd('0x1cb'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0x1d1')]['belongsTo'](db[_0xa2dd('0x92')],{'as':'Variable','foreignKey':_0xa2dd('0x1ce')});db[_0xa2dd('0xb1')][_0xa2dd('0x115')](db[_0xa2dd('0xb3')],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xb3')]['hasMany'](db[_0xa2dd('0xb5')],{'as':_0xa2dd('0x1cd'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xb3')][_0xa2dd('0x115')](db[_0xa2dd('0xb5')],{'as':_0xa2dd('0x1c6'),'foreignKey':_0xa2dd('0x1c7')});db['ZendeskConfiguration']['hasMany'](db[_0xa2dd('0xb5')],{'as':_0xa2dd('0x1c0'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xb3')][_0xa2dd('0x124')](db['ZendeskAccount'],{'as':'Account','foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xb3')]['belongsToMany'](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x1d2')});db[_0xa2dd('0xb5')][_0xa2dd('0x115')](db['ZendeskField'],{'as':_0xa2dd('0x1c9'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xb5')][_0xa2dd('0x115')](db['ZendeskField'],{'as':'Description','foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xb5')]['hasMany'](db[_0xa2dd('0xb5')],{'as':'Field','foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xb5')]['belongsTo'](db['Variable'],{'as':_0xa2dd('0x92'),'foreignKey':_0xa2dd('0x1ce')});db['FreshdeskAccount']['hasMany'](db[_0xa2dd('0xb8')],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xb8')]['hasMany'](db[_0xa2dd('0xba')],{'as':_0xa2dd('0x1cd'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xb8')][_0xa2dd('0x115')](db[_0xa2dd('0xba')],{'as':_0xa2dd('0x1c6'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xb8')]['hasMany'](db[_0xa2dd('0xba')],{'as':_0xa2dd('0x1c0'),'onDelete':'cascade','foreignKey':_0xa2dd('0x1c8')});db['FreshdeskConfiguration'][_0xa2dd('0x124')](db[_0xa2dd('0xb7')],{'as':_0xa2dd('0x174'),'foreignKey':'AccountId'});db[_0xa2dd('0xb8')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x1d3')});db[_0xa2dd('0xba')][_0xa2dd('0x115')](db[_0xa2dd('0xba')],{'as':'Subject','foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xba')][_0xa2dd('0x115')](db[_0xa2dd('0xba')],{'as':_0xa2dd('0x1ca'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xba')][_0xa2dd('0x115')](db[_0xa2dd('0xba')],{'as':_0xa2dd('0x1cb'),'foreignKey':_0xa2dd('0x1c8')});db['FreshdeskField'][_0xa2dd('0x124')](db[_0xa2dd('0x92')],{'as':'Variable','foreignKey':_0xa2dd('0x1ce')});db['VtigerAccount'][_0xa2dd('0x115')](db['VtigerConfiguration'],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xbe')]['hasMany'](db[_0xa2dd('0xc0')],{'as':_0xa2dd('0x1cd'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xbe')]['hasMany'](db[_0xa2dd('0xc0')],{'as':_0xa2dd('0x1c6'),'foreignKey':'DescriptionId'});db[_0xa2dd('0xbe')]['hasMany'](db[_0xa2dd('0xc0')],{'as':_0xa2dd('0x1c0'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xbe')]['belongsTo'](db['VtigerAccount'],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xc0')][_0xa2dd('0x115')](db[_0xa2dd('0xc0')],{'as':'Subject','foreignKey':'SubjectId'});db['VtigerField'][_0xa2dd('0x115')](db[_0xa2dd('0xc0')],{'as':_0xa2dd('0x1ca'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xc0')][_0xa2dd('0x115')](db['VtigerField'],{'as':_0xa2dd('0x1cb'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xc0')][_0xa2dd('0x124')](db['Variable'],{'as':_0xa2dd('0x92'),'foreignKey':_0xa2dd('0x1ce')});db[_0xa2dd('0xc1')][_0xa2dd('0x115')](db['ServicenowConfiguration'],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db['ServicenowConfiguration'][_0xa2dd('0x115')](db['ServicenowField'],{'as':_0xa2dd('0x1cd'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0xc3')]['hasMany'](db['ServicenowField'],{'as':_0xa2dd('0x1c6'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xc3')][_0xa2dd('0x115')](db[_0xa2dd('0xc4')],{'as':_0xa2dd('0x1c0'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xc3')]['belongsTo'](db[_0xa2dd('0xc1')],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xc4')][_0xa2dd('0x115')](db[_0xa2dd('0xc4')],{'as':_0xa2dd('0x1c9'),'foreignKey':'SubjectId'});db[_0xa2dd('0xc4')][_0xa2dd('0x115')](db['ServicenowField'],{'as':'Description','foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xc4')]['hasMany'](db[_0xa2dd('0xc4')],{'as':_0xa2dd('0x1cb'),'foreignKey':_0xa2dd('0x1c8')});db['ServicenowField'][_0xa2dd('0x124')](db[_0xa2dd('0x92')],{'as':_0xa2dd('0x92'),'foreignKey':_0xa2dd('0x1ce')});db['Dynamics365Account']['hasMany'](db[_0xa2dd('0x1d4')],{'as':_0xa2dd('0x1c3'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xc6')][_0xa2dd('0x124')](db[_0xa2dd('0x166')],{'as':'CloudProvider','foreignKey':'CloudProviderId'});db[_0xa2dd('0x1d4')]['hasMany'](db[_0xa2dd('0xc9')],{'as':_0xa2dd('0x1cd'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0x1d4')][_0xa2dd('0x115')](db[_0xa2dd('0xc9')],{'as':_0xa2dd('0x1c6'),'onDelete':_0xa2dd('0x112'),'foreignKey':'DescriptionId'});db['Dynamics365Configuration'][_0xa2dd('0x115')](db[_0xa2dd('0xc9')],{'as':_0xa2dd('0x1c0'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0xa2dd('0x1d4')][_0xa2dd('0x124')](db['Dynamics365Account'],{'as':_0xa2dd('0x174'),'foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xc9')][_0xa2dd('0x115')](db[_0xa2dd('0xc9')],{'as':_0xa2dd('0x1c9'),'foreignKey':_0xa2dd('0x1c5')});db['Dynamics365Field'][_0xa2dd('0x115')](db[_0xa2dd('0xc9')],{'as':_0xa2dd('0x1ca'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0xc9')][_0xa2dd('0x115')](db[_0xa2dd('0xc9')],{'as':_0xa2dd('0x1cb'),'foreignKey':'FieldId'});db['Dynamics365Field'][_0xa2dd('0x124')](db[_0xa2dd('0x92')],{'as':_0xa2dd('0x92'),'foreignKey':_0xa2dd('0x1ce')});db[_0xa2dd('0xcb')][_0xa2dd('0x115')](db[_0xa2dd('0x1d5')],{'as':_0xa2dd('0x1c3'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xa2dd('0x1d5')][_0xa2dd('0x115')](db[_0xa2dd('0xcc')],{'as':_0xa2dd('0x1cd'),'foreignKey':_0xa2dd('0x1c5')});db[_0xa2dd('0x1d5')]['hasMany'](db[_0xa2dd('0xcc')],{'as':_0xa2dd('0x1c6'),'foreignKey':_0xa2dd('0x1c7')});db[_0xa2dd('0x1d5')][_0xa2dd('0x115')](db[_0xa2dd('0xcc')],{'as':_0xa2dd('0x1c0'),'foreignKey':'FieldId'});db[_0xa2dd('0x1d5')]['belongsTo'](db[_0xa2dd('0xcb')],{'as':'Account','foreignKey':_0xa2dd('0x1c4')});db[_0xa2dd('0xcc')]['hasMany'](db[_0xa2dd('0xcc')],{'as':'Subject','foreignKey':_0xa2dd('0x1c5')});db['FreshsalesField'][_0xa2dd('0x115')](db[_0xa2dd('0xcc')],{'as':_0xa2dd('0x1ca'),'foreignKey':'DescriptionId'});db[_0xa2dd('0xcc')][_0xa2dd('0x115')](db['FreshsalesField'],{'as':_0xa2dd('0x1cb'),'foreignKey':_0xa2dd('0x1c8')});db[_0xa2dd('0xcc')][_0xa2dd('0x124')](db[_0xa2dd('0x92')],{'as':_0xa2dd('0x92'),'foreignKey':_0xa2dd('0x1ce')});db[_0xa2dd('0x1d6')][_0xa2dd('0x124')](db[_0xa2dd('0x13c')],{});db[_0xa2dd('0x1d6')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':'List','foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x1d6')][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':'Contact','foreignKey':_0xa2dd('0x164')});db['ChatQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0x63')],{});db[_0xa2dd('0x1d6')][_0xa2dd('0x124')](db[_0xa2dd('0x65')],{});db[_0xa2dd('0x1d6')]['belongsTo'](db[_0xa2dd('0x14')],{});db['ChatQueueReport'][_0xa2dd('0x124')](db['ChatQueue'],{});db[_0xa2dd('0xd2')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1d7')});db['ChatInternalMessage'][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x1d8')});db[_0xa2dd('0x152')]['hasMany'](db[_0xa2dd('0xd5')],{'foreignKey':_0xa2dd('0x1d9'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0x152')][_0xa2dd('0x115')](db[_0xa2dd('0x1da')],{'foreignKey':_0xa2dd('0x1d9'),'onDelete':'cascade'});db['SmsQueueReport']['belongsTo'](db[_0xa2dd('0x146')],{});db['SmsQueueReport']['belongsTo'](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db['SmsQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x163'),'foreignKey':'ContactId'});db['SmsQueueReport'][_0xa2dd('0x124')](db[_0xa2dd('0x53')],{});db[_0xa2dd('0x1db')][_0xa2dd('0x124')](db[_0xa2dd('0x187')],{});db[_0xa2dd('0x1db')][_0xa2dd('0x124')](db['User'],{});db[_0xa2dd('0x1db')][_0xa2dd('0x124')](db[_0xa2dd('0x55')],{});db[_0xa2dd('0x1dc')][_0xa2dd('0x115')](db['JscriptySessionReport'],{'foreignKey':_0xa2dd('0x1dd')});db[_0xa2dd('0x1dc')][_0xa2dd('0x115')](db[_0xa2dd('0xd5')],{'foreignKey':_0xa2dd('0x1dd')});db[_0xa2dd('0x1dc')][_0xa2dd('0x115')](db[_0xa2dd('0x1da')],{'foreignKey':'ProjectId'});db[_0xa2dd('0xe3')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x129')});db[_0xa2dd('0xe3')][_0xa2dd('0x125')](db[_0xa2dd('0x1c')],{'through':_0xa2dd('0x15c'),'as':'VoiceQueues'});db[_0xa2dd('0xe3')]['belongsToMany'](db[_0xa2dd('0x131')],{'through':_0xa2dd('0x171'),'as':_0xa2dd('0x132')});db['Team'][_0xa2dd('0x125')](db['ChatQueue'],{'through':_0xa2dd('0x1de'),'as':_0xa2dd('0x134')});db[_0xa2dd('0xe3')][_0xa2dd('0x125')](db[_0xa2dd('0x136')],{'through':_0xa2dd('0x1df'),'as':_0xa2dd('0x137')});db[_0xa2dd('0xe3')]['belongsToMany'](db[_0xa2dd('0x55')],{'through':_0xa2dd('0x1e0'),'as':_0xa2dd('0x138')});db['Team'][_0xa2dd('0x125')](db[_0xa2dd('0x5c')],{'through':'team_has_openchannel_queues','as':_0xa2dd('0x139')});db['Team']['belongsToMany'](db[_0xa2dd('0x106')],{'through':'team_has_whatsapp_queues','as':_0xa2dd('0x13a')});db[_0xa2dd('0xe3')]['belongsToMany'](db['VoicePrefix'],{'through':_0xa2dd('0x10a'),'as':_0xa2dd('0x130')});db['Campaign']['hasMany'](db[_0xa2dd('0x6e')],{'as':_0xa2dd('0x1e1'),'foreignKey':'CampaignId'});db[_0xa2dd('0x1a4')][_0xa2dd('0x115')](db[_0xa2dd('0x72')],{'as':_0xa2dd('0x11b'),'foreignKey':'CampaignId'});db[_0xa2dd('0x1a4')]['hasMany'](db[_0xa2dd('0x74')],{'as':'HopperHistories','foreignKey':_0xa2dd('0x1a5')});db[_0xa2dd('0x1a4')]['hasMany'](db[_0xa2dd('0x70')],{'as':_0xa2dd('0x151'),'foreignKey':_0xa2dd('0x1a5')});db['Campaign'][_0xa2dd('0x124')](db['Trunk'],{'as':_0xa2dd('0x154'),'foreignKey':_0xa2dd('0x155')});db[_0xa2dd('0x1a4')][_0xa2dd('0x124')](db[_0xa2dd('0x154')],{'as':'TrunkBackup','foreignKey':_0xa2dd('0x1e2')});db[_0xa2dd('0x1a4')][_0xa2dd('0x124')](db[_0xa2dd('0x81')],{'as':_0xa2dd('0x81'),'foreignKey':'IntervalId'});db[_0xa2dd('0x1a4')]['belongsTo'](db['SquareProject'],{'as':_0xa2dd('0xdf'),'foreignKey':_0xa2dd('0x1e3')});db[_0xa2dd('0x1a4')][_0xa2dd('0x125')](db[_0xa2dd('0xf0')],{'as':'Lists','through':_0xa2dd('0x1e4')});db[_0xa2dd('0x1a4')]['belongsToMany'](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x15d'),'through':_0xa2dd('0x1e5')});db[_0xa2dd('0xe8')]['belongsTo'](db[_0xa2dd('0x17a')],{'as':'ChatOfflineMessage','foreignKey':_0xa2dd('0x17b')});db[_0xa2dd('0x1e6')][_0xa2dd('0x124')](db[_0xa2dd('0x44')],{});db[_0xa2dd('0x1e6')][_0xa2dd('0x124')](db['MailInteraction'],{});db[_0xa2dd('0x1e6')][_0xa2dd('0x124')](db[_0xa2dd('0x141')],{'foreignKey':'FromMailAccountId','as':_0xa2dd('0x1e7')});db['MailTransferReport'][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':'FromUserId','as':_0xa2dd('0x1e8')});db[_0xa2dd('0x1e6')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':'ToUserId','as':_0xa2dd('0x1e9')});db['MailTransferReport'][_0xa2dd('0x124')](db['MailQueue'],{'foreignKey':_0xa2dd('0x1ea'),'as':_0xa2dd('0x1eb')});db['MailTransferReport'][_0xa2dd('0x124')](db[_0xa2dd('0x141')],{'foreignKey':'ToMailAccountId','as':_0xa2dd('0x1ec')});db[_0xa2dd('0xeb')]['belongsTo'](db['ChatMessage'],{});db[_0xa2dd('0xeb')][_0xa2dd('0x124')](db[_0xa2dd('0x63')],{});db[_0xa2dd('0xeb')][_0xa2dd('0x124')](db[_0xa2dd('0x13c')],{'foreignKey':_0xa2dd('0x1ed'),'as':_0xa2dd('0x1e7')});db[_0xa2dd('0xeb')][_0xa2dd('0x124')](db['User'],{'foreignKey':_0xa2dd('0x1ee'),'as':_0xa2dd('0x1e8')});db[_0xa2dd('0xeb')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':'ToUserId','as':_0xa2dd('0x1e9')});db[_0xa2dd('0xeb')][_0xa2dd('0x124')](db[_0xa2dd('0x133')],{'foreignKey':'ToChatQueueId','as':_0xa2dd('0x1eb')});db[_0xa2dd('0xeb')][_0xa2dd('0x124')](db[_0xa2dd('0x13c')],{'foreignKey':_0xa2dd('0x1ef'),'as':'ToAccount'});db[_0xa2dd('0xec')]['belongsTo'](db[_0xa2dd('0x182')],{});db[_0xa2dd('0xec')][_0xa2dd('0x124')](db['FaxInteraction'],{});db[_0xa2dd('0xec')]['belongsTo'](db[_0xa2dd('0x49')],{'foreignKey':_0xa2dd('0x1f0'),'as':'FromAccount'});db[_0xa2dd('0xec')]['belongsTo'](db[_0xa2dd('0x14')],{'foreignKey':_0xa2dd('0x1ee'),'as':_0xa2dd('0x1e8')});db[_0xa2dd('0xec')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':_0xa2dd('0x1f1'),'as':_0xa2dd('0x1e9')});db[_0xa2dd('0xec')][_0xa2dd('0x124')](db['FaxQueue'],{'foreignKey':_0xa2dd('0x1f2'),'as':'ToQueue'});db[_0xa2dd('0xec')]['belongsTo'](db[_0xa2dd('0x49')],{'foreignKey':'ToFaxAccountId','as':_0xa2dd('0x1ec')});db['OpenchannelTransferReport'][_0xa2dd('0x124')](db['OpenchannelMessage'],{});db[_0xa2dd('0xee')][_0xa2dd('0x124')](db[_0xa2dd('0x11d')],{});db['OpenchannelTransferReport'][_0xa2dd('0x124')](db[_0xa2dd('0x57')],{'foreignKey':_0xa2dd('0x1f3'),'as':_0xa2dd('0x1e7')});db[_0xa2dd('0xee')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':'FromUserId','as':_0xa2dd('0x1e8')});db[_0xa2dd('0xee')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':_0xa2dd('0x1f1'),'as':'ToAgent'});db[_0xa2dd('0xee')][_0xa2dd('0x124')](db[_0xa2dd('0x5c')],{'foreignKey':_0xa2dd('0x1f4'),'as':_0xa2dd('0x1eb')});db['OpenchannelTransferReport'][_0xa2dd('0x124')](db[_0xa2dd('0x57')],{'foreignKey':_0xa2dd('0x1f5'),'as':_0xa2dd('0x1ec')});db['SmsTransferReport'][_0xa2dd('0x124')](db['SmsMessage'],{});db['SmsTransferReport'][_0xa2dd('0x124')](db['SmsInteraction'],{});db[_0xa2dd('0xef')][_0xa2dd('0x124')](db[_0xa2dd('0x146')],{'foreignKey':_0xa2dd('0x1f6'),'as':_0xa2dd('0x1e7')});db[_0xa2dd('0xef')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':_0xa2dd('0x1ee'),'as':_0xa2dd('0x1e8')});db[_0xa2dd('0xef')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'foreignKey':_0xa2dd('0x1f1'),'as':_0xa2dd('0x1e9')});db[_0xa2dd('0xef')]['belongsTo'](db[_0xa2dd('0x55')],{'foreignKey':_0xa2dd('0x1f7'),'as':_0xa2dd('0x1eb')});db[_0xa2dd('0xef')][_0xa2dd('0x124')](db[_0xa2dd('0x146')],{'foreignKey':_0xa2dd('0x1f8'),'as':_0xa2dd('0x1ec')});db[_0xa2dd('0xf0')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':_0xa2dd('0x17f'),'foreignKey':_0xa2dd('0x16f'),'onDelete':'cascade'});db[_0xa2dd('0xf0')][_0xa2dd('0x115')](db[_0xa2dd('0x77')],{'as':_0xa2dd('0x1f9'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0xf0')]['hasMany'](db[_0xa2dd('0x6d')],{'as':_0xa2dd('0x19c'),'onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x16f')});db['CmList'][_0xa2dd('0x115')](db[_0xa2dd('0x72')],{'as':_0xa2dd('0x11b'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0xf0')]['hasMany'](db[_0xa2dd('0x74')],{'as':'HopperHistory','foreignKey':'ListId'});db[_0xa2dd('0xf0')]['hasMany'](db['ReportAgentPreview'],{'as':_0xa2dd('0x11c'),'foreignKey':'ListId'});db[_0xa2dd('0xf0')][_0xa2dd('0x125')](db[_0xa2dd('0x1c')],{'as':_0xa2dd('0x1fa'),'through':_0xa2dd('0x1fb')});db[_0xa2dd('0xf0')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':'cm_user_has_lists'});db[_0xa2dd('0xf2')]['hasMany'](db[_0xa2dd('0x119')],{'as':'Extensions','onDelete':_0xa2dd('0x112')});db[_0xa2dd('0xf2')][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x10c')});db[_0xa2dd('0xf2')][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':_0xa2dd('0x10a'),'as':'Teams'});db[_0xa2dd('0x1fc')][_0xa2dd('0x115')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x178'),'foreignKey':_0xa2dd('0x1fd')});db['UserProfile'][_0xa2dd('0x115')](db[_0xa2dd('0xf5')],{'as':_0xa2dd('0x1fe'),'foreignKey':_0xa2dd('0x1fd'),'onDelete':_0xa2dd('0x112')});db['UserProfileSection'][_0xa2dd('0x115')](db[_0xa2dd('0xf7')],{'as':_0xa2dd('0x1ff'),'foreignKey':_0xa2dd('0x200'),'onDelete':_0xa2dd('0x112')});db[_0xa2dd('0xfa')][_0xa2dd('0x115')](db[_0xa2dd('0x17e')],{'as':'Dispositions','foreignKey':'WhatsappAccountId','onDelete':_0xa2dd('0x112')});db[_0xa2dd('0xfa')][_0xa2dd('0x115')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xa2dd('0x201')});db[_0xa2dd('0xfa')][_0xa2dd('0x115')](db['WhatsappMessage'],{'as':_0xa2dd('0x16b'),'foreignKey':_0xa2dd('0x201')});db['WhatsappAccount']['hasMany'](db['WhatsappInteraction'],{'as':_0xa2dd('0x188')});db[_0xa2dd('0xfa')]['hasMany'](db[_0xa2dd('0xfc')],{'as':'Applications'});db[_0xa2dd('0xfa')][_0xa2dd('0x124')](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':'ListId'});db[_0xa2dd('0xfa')]['belongsTo'](db['Pause'],{'as':_0xa2dd('0x159'),'foreignKey':_0xa2dd('0x15a')});db['WhatsappAccount'][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':'user_has_whatsapp_accounts'});db[_0xa2dd('0xfc')][_0xa2dd('0x124')](db['User'],{'onDelete':'restrict'});db[_0xa2dd('0xfc')][_0xa2dd('0x124')](db[_0xa2dd('0x106')],{'onDelete':_0xa2dd('0x168')});db[_0xa2dd('0xfc')][_0xa2dd('0x124')](db[_0xa2dd('0xfa')],{'onDelete':_0xa2dd('0x168')});db['WhatsappApplication'][_0xa2dd('0x124')](db[_0xa2dd('0x81')],{'onDelete':_0xa2dd('0x168'),'foreignKey':'IntervalId'});db[_0xa2dd('0xfc')][_0xa2dd('0x124')](db[_0xa2dd('0x8a')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xa2dd('0xfe')]['hasMany'](db[_0xa2dd('0x100')],{'as':'Messages','onDelete':_0xa2dd('0x112'),'foreignKey':_0xa2dd('0x202')});db[_0xa2dd('0xfe')][_0xa2dd('0x124')](db['WhatsappAccount'],{'as':'Account','foreignKey':'WhatsappAccountId'});db['WhatsappInteraction'][_0xa2dd('0x124')](db['CmContact'],{'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db['WhatsappInteraction'][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x175'),'foreignKey':_0xa2dd('0x114')});db[_0xa2dd('0xfe')][_0xa2dd('0x125')](db[_0xa2dd('0x8a')],{'through':_0xa2dd('0x1b6'),'as':_0xa2dd('0x18b')});db[_0xa2dd('0xfe')][_0xa2dd('0x125')](db['Tag'],{'through':_0xa2dd('0x1b6'),'as':_0xa2dd('0x177')});db['WhatsappInteraction'][_0xa2dd('0x125')](db[_0xa2dd('0x14')],{'as':'Users','through':_0xa2dd('0x203'),'foreignKey':_0xa2dd('0x202')});db[_0xa2dd('0x100')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x14')});db['WhatsappMessage'][_0xa2dd('0x124')](db['CmContact'],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x163')});db['WhatsappMessage']['belongsTo'](db[_0xa2dd('0xfe')],{'onDelete':_0xa2dd('0x112'),'as':_0xa2dd('0x185'),'foreignKey':_0xa2dd('0x202')});db['WhatsappMessage'][_0xa2dd('0x124')](db['WhatsappAccount'],{'as':_0xa2dd('0x174'),'foreignKey':'WhatsappAccountId'});db[_0xa2dd('0x102')][_0xa2dd('0x124')](db['WhatsappAccount'],{});db['WhatsappQueueReport']['belongsTo'](db[_0xa2dd('0xf0')],{'as':_0xa2dd('0x16e'),'foreignKey':_0xa2dd('0x16f')});db[_0xa2dd('0x102')][_0xa2dd('0x124')](db['CmContact'],{'as':_0xa2dd('0x163'),'foreignKey':_0xa2dd('0x164')});db[_0xa2dd('0x102')][_0xa2dd('0x124')](db[_0xa2dd('0xfe')],{});db[_0xa2dd('0x102')][_0xa2dd('0x124')](db[_0xa2dd('0x106')],{});db[_0xa2dd('0x102')]['belongsTo'](db[_0xa2dd('0x100')],{});db[_0xa2dd('0x102')][_0xa2dd('0x124')](db[_0xa2dd('0x14')],{});db[_0xa2dd('0x104')][_0xa2dd('0x124')](db[_0xa2dd('0x100')],{});db[_0xa2dd('0x104')][_0xa2dd('0x124')](db['WhatsappInteraction'],{});db[_0xa2dd('0x104')][_0xa2dd('0x124')](db[_0xa2dd('0xfa')],{'foreignKey':'FromWhatsappAccountId','as':_0xa2dd('0x1e7')});db['WhatsappTransferReport'][_0xa2dd('0x124')](db['WhatsappAccount'],{'foreignKey':_0xa2dd('0x204'),'as':_0xa2dd('0x1ec')});db[_0xa2dd('0x104')][_0xa2dd('0x124')](db[_0xa2dd('0x106')],{'foreignKey':_0xa2dd('0x205'),'as':'ToQueue'});db[_0xa2dd('0x104')][_0xa2dd('0x124')](db['User'],{'foreignKey':_0xa2dd('0x1ee'),'as':_0xa2dd('0x1e8')});db[_0xa2dd('0x104')]['belongsTo'](db[_0xa2dd('0x14')],{'foreignKey':_0xa2dd('0x1f1'),'as':_0xa2dd('0x1e9')});db[_0xa2dd('0x106')]['belongsToMany'](db[_0xa2dd('0x14')],{'as':_0xa2dd('0x15b'),'through':_0xa2dd('0x13b'),'foreignKey':_0xa2dd('0x206')});db[_0xa2dd('0x106')][_0xa2dd('0x125')](db[_0xa2dd('0xe3')],{'through':_0xa2dd('0x207'),'as':'Teams'});db['UserSetting'][_0xa2dd('0x124')](db['User'],{'as':'user','foreignKey':_0xa2dd('0x114'),'onDelete':_0xa2dd('0x112'),'hooks':!![]});db[_0xa2dd('0x166')]['hasOne'](db[_0xa2dd('0xc6')],{'as':_0xa2dd('0xc6'),'onDelete':_0xa2dd('0x168')});db['CloudProvider']['hasOne'](db[_0xa2dd('0x3b')],{'as':_0xa2dd('0x169'),'onDelete':'restrict'});db[_0xa2dd('0x166')]['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0xa2dd('0x168')});module[_0xa2dd('0x208')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 962f6a4..4083a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4dd=['/api/integrations/servicenow/fields','./api/intServicenowField','/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/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/attachment','/api/plugins','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','/api/auth/google','./api/authActiveDirectory','/api/jira','/api/rpc','/api/version','./api/version','/api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','join','root','/apidoc','/www','static','/demo','/snippet','3.1.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express','./utils/client-side-logger','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','/api/voice/queues/reports','./api/voiceQueueReport','/api/trunks','./api/trunk','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','./api/mailSubstatus','/api/mail/applications','/api/mail/reports/queue','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsInteraction','./api/smsMessage','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/conditions','/api/intervals','./api/interval','/api/pauses','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/sound','./api/tag','/api/contact_item_types','/api/cm_contact_has_items','./api/cmContactHasItem','./api/cmHopperAdditionalPhone','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations'];(function(_0x5d0605,_0x385759){var _0xe23874=function(_0x11149c){while(--_0x11149c){_0x5d0605['push'](_0x5d0605['shift']());}};_0xe23874(++_0x385759);}(_0xc4dd,0x73));var _0xdc4d=function(_0x52b586,_0x24b4dc){_0x52b586=_0x52b586-0x0;var _0x5b06a9=_0xc4dd[_0x52b586];return _0x5b06a9;};'use strict';var path=require(_0xdc4d('0x0'));var express=require(_0xdc4d('0x1'));var errors=require('./errors');var config=require('./config/environment');var setupLoggers=require(_0xdc4d('0x2'))['setupLoggers'];var clientSideLogs=require('./api/client-side-logs');exports['default']=function(_0x29ab8d){return setupLoggers(_0x29ab8d)[_0xdc4d('0x3')](function(){_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x5'),require(_0xdc4d('0x6')));_0x29ab8d['use'](_0xdc4d('0x7'),require(_0xdc4d('0x8')));_0x29ab8d['use'](_0xdc4d('0x9'),require(_0xdc4d('0xa')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xb'),require(_0xdc4d('0xc')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xd'),require(_0xdc4d('0xe')));_0x29ab8d['use'](_0xdc4d('0xf'),require(_0xdc4d('0x10')));_0x29ab8d['use'](_0xdc4d('0x11'),require(_0xdc4d('0x12')));_0x29ab8d['use']('/api/screen/recordings',require(_0xdc4d('0x13')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x14'),require(_0xdc4d('0x15')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x16'),require('./api/voiceMailMessage'));_0x29ab8d[_0xdc4d('0x4')]('/api/voice/calls/reports',require(_0xdc4d('0x17')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x18'),require('./api/voiceDialReport'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x19'),require('./api/voiceAgentReport'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x1a'),require(_0xdc4d('0x1b')));_0x29ab8d[_0xdc4d('0x4')]('/api/members/reports',require('./api/memberReport'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x1c'),require(_0xdc4d('0x1d')));_0x29ab8d[_0xdc4d('0x4')]('/api/voice/transfers/reports',require(_0xdc4d('0x1e')));_0x29ab8d[_0xdc4d('0x4')]('/api/mail/out_servers',require(_0xdc4d('0x1f')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x20'),require(_0xdc4d('0x21')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x22'),require(_0xdc4d('0x23')));_0x29ab8d[_0xdc4d('0x4')]('/api/mail/substatuses',require(_0xdc4d('0x24')));_0x29ab8d[_0xdc4d('0x4')]('/api/mail/interactions',require('./api/mailInteraction'));_0x29ab8d[_0xdc4d('0x4')]('/api/mail/messages',require('./api/mailMessage'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x25'),require('./api/mailApplication'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x26'),require('./api/mailQueueReport'));_0x29ab8d[_0xdc4d('0x4')]('/api/dashboards',require(_0xdc4d('0x27')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x28'),require(_0xdc4d('0x29')));_0x29ab8d[_0xdc4d('0x4')]('/api/fax/accounts',require(_0xdc4d('0x2a')));_0x29ab8d[_0xdc4d('0x4')]('/api/fax/applications',require('./api/faxApplication'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x2b'),require('./api/faxInteraction'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x2c'),require(_0xdc4d('0x2d')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x2e'),require(_0xdc4d('0x2f')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x30'),require('./api/faxQueueReport'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x31'),require(_0xdc4d('0x32')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x33'),require(_0xdc4d('0x34')));_0x29ab8d[_0xdc4d('0x4')]('/api/sms/interactions',require(_0xdc4d('0x35')));_0x29ab8d['use']('/api/sms/messages',require(_0xdc4d('0x36')));_0x29ab8d[_0xdc4d('0x4')]('/api/sms/queues',require('./api/smsQueue'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x37'),require(_0xdc4d('0x38')));_0x29ab8d[_0xdc4d('0x4')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x29ab8d['use'](_0xdc4d('0x39'),require('./api/openchannelInteraction'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x3a'),require(_0xdc4d('0x3b')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x3c'),require('./api/openchannelQueue'));_0x29ab8d['use'](_0xdc4d('0x3d'),require(_0xdc4d('0x3e')));_0x29ab8d['use'](_0xdc4d('0x3f'),require(_0xdc4d('0x40')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x41'),require(_0xdc4d('0x42')));_0x29ab8d[_0xdc4d('0x4')]('/api/chat/interactions',require(_0xdc4d('0x43')));_0x29ab8d['use'](_0xdc4d('0x44'),require(_0xdc4d('0x45')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x46'),require('./api/chatOfflineMessage'));_0x29ab8d['use'](_0xdc4d('0x47'),require(_0xdc4d('0x48')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x49'),require(_0xdc4d('0x4a')));_0x29ab8d['use']('/api/chat/proactive_actions',require(_0xdc4d('0x4b')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x4c'),require(_0xdc4d('0x4d')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x4e'),require(_0xdc4d('0x4f')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x50'),require(_0xdc4d('0x51')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x52'),require('./api/cmHopperBlack'));_0x29ab8d['use'](_0xdc4d('0x53'),require(_0xdc4d('0x54')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x55'),require(_0xdc4d('0x56')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x57'),require(_0xdc4d('0x58')));_0x29ab8d['use'](_0xdc4d('0x59'),require(_0xdc4d('0x5a')));_0x29ab8d['use'](_0xdc4d('0x5b'),require(_0xdc4d('0x5c')));_0x29ab8d[_0xdc4d('0x4')]('/api/canned_answers',require(_0xdc4d('0x5d')));_0x29ab8d['use']('/api/dispositions',require('./api/disposition'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x5e'),require('./api/condition'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x5f'),require(_0xdc4d('0x60')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x61'),require('./api/pause'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x62'),require('./api/cdr'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x63'),require(_0xdc4d('0x64')));_0x29ab8d[_0xdc4d('0x4')]('/api/schedules',require('./api/schedule'));_0x29ab8d[_0xdc4d('0x4')]('/api/sounds',require(_0xdc4d('0x65')));_0x29ab8d[_0xdc4d('0x4')]('/api/tags',require(_0xdc4d('0x66')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x67'),require('./api/contactItemType'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x68'),require(_0xdc4d('0x69')));_0x29ab8d[_0xdc4d('0x4')]('/api/cm_hopper_additional_phones',require(_0xdc4d('0x6a')));_0x29ab8d[_0xdc4d('0x4')]('/api/templates',require('./api/template'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x6b'),require(_0xdc4d('0x6c')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x6d'),require(_0xdc4d('0x6e')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x6f'),require(_0xdc4d('0x70')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x71'),require(_0xdc4d('0x72')));_0x29ab8d['use'](_0xdc4d('0x73'),require(_0xdc4d('0x74')));_0x29ab8d[_0xdc4d('0x4')]('/api/analytics/default_reports',require(_0xdc4d('0x75')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x76'),require(_0xdc4d('0x77')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x78'),require(_0xdc4d('0x79')));_0x29ab8d[_0xdc4d('0x4')]('/api/analytics/field_reports',require(_0xdc4d('0x7a')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x7b'),require(_0xdc4d('0x7c')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x7d'),require(_0xdc4d('0x7e')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x7f'),require('./api/intSalesforceConfiguration'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x80'),require(_0xdc4d('0x81')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x82'),require(_0xdc4d('0x83')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x84'),require('./api/intSugarcrmConfiguration'));_0x29ab8d['use'](_0xdc4d('0x85'),require(_0xdc4d('0x86')));_0x29ab8d[_0xdc4d('0x4')]('/api/integrations/desk/accounts',require('./api/intDeskAccount'));_0x29ab8d[_0xdc4d('0x4')]('/api/integrations/desk/configurations',require(_0xdc4d('0x87')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x88'),require(_0xdc4d('0x89')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x8a'),require(_0xdc4d('0x8b')));_0x29ab8d[_0xdc4d('0x4')]('/api/integrations/zoho/configurations',require(_0xdc4d('0x8c')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x8d'),require(_0xdc4d('0x8e')));_0x29ab8d['use'](_0xdc4d('0x8f'),require(_0xdc4d('0x90')));_0x29ab8d['use'](_0xdc4d('0x91'),require('./api/intZendeskConfiguration'));_0x29ab8d[_0xdc4d('0x4')]('/api/integrations/zendesk/fields',require(_0xdc4d('0x92')));_0x29ab8d[_0xdc4d('0x4')]('/api/integrations/freshdesk/accounts',require(_0xdc4d('0x93')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x94'),require(_0xdc4d('0x95')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x96'),require(_0xdc4d('0x97')));_0x29ab8d['use'](_0xdc4d('0x98'),require(_0xdc4d('0x99')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x9a'),require(_0xdc4d('0x9b')));_0x29ab8d['use'](_0xdc4d('0x9c'),require(_0xdc4d('0x9d')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x9e'),require(_0xdc4d('0x9f')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xa0'),require('./api/intServicenowConfiguration'));_0x29ab8d['use'](_0xdc4d('0xa1'),require(_0xdc4d('0xa2')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xa3'),require(_0xdc4d('0xa4')));_0x29ab8d['use'](_0xdc4d('0xa5'),require(_0xdc4d('0xa6')));_0x29ab8d['use'](_0xdc4d('0xa7'),require(_0xdc4d('0xa8')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xa9'),require(_0xdc4d('0xaa')));_0x29ab8d[_0xdc4d('0x4')]('/api/integrations/freshsales/configurations',require(_0xdc4d('0xab')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xac'),require(_0xdc4d('0xad')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xae'),require(_0xdc4d('0xaf')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xb0'),require(_0xdc4d('0xb1')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xb2'),require(_0xdc4d('0xb3')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xb4'),require(_0xdc4d('0xb5')));_0x29ab8d['use'](_0xdc4d('0xb6'),require(_0xdc4d('0xb7')));_0x29ab8d['use'](_0xdc4d('0xb8'),require(_0xdc4d('0xb9')));_0x29ab8d['use'](_0xdc4d('0xba'),require(_0xdc4d('0xbb')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xbc'),require(_0xdc4d('0xbd')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xbe'),require('./api/squareReportDetail'));_0x29ab8d['use']('/api/jscripty/projects',require(_0xdc4d('0xbf')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xc0'),require(_0xdc4d('0xc1')));_0x29ab8d['use'](_0xdc4d('0xc2'),require(_0xdc4d('0xc3')));_0x29ab8d[_0xdc4d('0x4')]('/api/square/projects',require(_0xdc4d('0xc4')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xc5'),require(_0xdc4d('0xc6')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xc7'),require(_0xdc4d('0xc8')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xc9'),require(_0xdc4d('0xca')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xcb'),require(_0xdc4d('0xcc')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xcd'),require(_0xdc4d('0xce')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xcf'),require(_0xdc4d('0xd0')));_0x29ab8d[_0xdc4d('0x4')]('/api/attachments',require(_0xdc4d('0xd1')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xd2'),require(_0xdc4d('0xd3')));_0x29ab8d['use']('/api/mail/reports/transfer',require(_0xdc4d('0xd4')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xd5'),require(_0xdc4d('0xd6')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xd7'),require(_0xdc4d('0xd8')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xd9'),require(_0xdc4d('0xda')));_0x29ab8d['use'](_0xdc4d('0xdb'),require(_0xdc4d('0xdc')));_0x29ab8d[_0xdc4d('0x4')]('/api/cm/lists',require(_0xdc4d('0xdd')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xde'),require(_0xdc4d('0xdf')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xe0'),require('./api/userProfile'));_0x29ab8d['use'](_0xdc4d('0xe1'),require(_0xdc4d('0xe2')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xe3'),require(_0xdc4d('0xe4')));_0x29ab8d[_0xdc4d('0x4')]('/api/userNotifications',require(_0xdc4d('0xe5')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xe6'),require(_0xdc4d('0xe7')));_0x29ab8d['use'](_0xdc4d('0xe8'),require(_0xdc4d('0xe9')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xea'),require('./api/whatsappInteraction'));_0x29ab8d[_0xdc4d('0x4')]('/api/whatsapp/messages',require(_0xdc4d('0xeb')));_0x29ab8d['use'](_0xdc4d('0xec'),require(_0xdc4d('0xed')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xee'),require(_0xdc4d('0xef')));_0x29ab8d['use'](_0xdc4d('0xf0'),require('./api/whatsappQueue'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xf1'),require(_0xdc4d('0xf2')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xf3'),require(_0xdc4d('0xf4')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xf5'),require(_0xdc4d('0xf6')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xf7'),require('./api/authLocal'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xf8'),require('./api/authGoogle'));_0x29ab8d['use']('/api/auth/activedirectory',require(_0xdc4d('0xf9')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xfa'),require('./api/jira'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xfb'),require('./api/rpc'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xfc'),require(_0xdc4d('0xfd')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xfe'),require('./api/system'));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0xff'),require(_0xdc4d('0x100')));_0x29ab8d['use'](_0xdc4d('0x101'),require(_0xdc4d('0x102')));_0x29ab8d[_0xdc4d('0x4')]('/api/logs',clientSideLogs);_0x29ab8d['use']('/apidoc',express['static'](path[_0xdc4d('0x103')](config[_0xdc4d('0x104')],_0xdc4d('0x105'))));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x106'),express[_0xdc4d('0x107')](path['join'](config[_0xdc4d('0x104')],_0xdc4d('0x106'))));_0x29ab8d['use'](_0xdc4d('0x108'),express[_0xdc4d('0x107')](path[_0xdc4d('0x103')](config[_0xdc4d('0x104')],'/demo')));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x109'),express['static'](path[_0xdc4d('0x103')](config[_0xdc4d('0x104')],'snippet',_0xdc4d('0x10a'))));_0x29ab8d[_0xdc4d('0x4')](_0xdc4d('0x10b'),express[_0xdc4d('0x107')](path['join'](config['root'],_0xdc4d('0x10c'))));_0x29ab8d[_0xdc4d('0x10d')](_0xdc4d('0x10e'))[_0xdc4d('0x10f')](errors[0x194]);_0x29ab8d[_0xdc4d('0x10d')]('/*')[_0xdc4d('0x10f')](function(_0x55d250,_0x31119d){_0x31119d[_0xdc4d('0x110')](path[_0xdc4d('0x111')](_0x29ab8d[_0xdc4d('0x10f')](_0xdc4d('0x112'))+_0xdc4d('0x113')));});return _0x29ab8d;});};
\ No newline at end of file
+var _0x7d7b=['./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','/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/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/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/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','/api/user-settings','./api/user-setting','/api/auth/local','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.1.0','/server/files/plugins','route','get','sendFile','resolve','appPath','path','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','then','/api/users','./api/user','./api/voiceChanSpy','use','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/mohs','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','/api/actions','/api/canned_answers','./api/disposition','./api/interval','/api/cdr','./api/cdr','./api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','/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/variable','/api/integrations','/api/integrations/reports'];(function(_0xd77b29,_0x4c3197){var _0x478f55=function(_0x45d4e7){while(--_0x45d4e7){_0xd77b29['push'](_0xd77b29['shift']());}};_0x478f55(++_0x4c3197);}(_0x7d7b,0x1c4));var _0xb7d7=function(_0x13a2b4,_0x24e728){_0x13a2b4=_0x13a2b4-0x0;var _0xdf8fdf=_0x7d7b[_0x13a2b4];return _0xdf8fdf;};'use strict';var path=require(_0xb7d7('0x0'));var express=require('express');var errors=require(_0xb7d7('0x1'));var config=require(_0xb7d7('0x2'));var setupLoggers=require(_0xb7d7('0x3'))[_0xb7d7('0x4')];var clientSideLogs=require(_0xb7d7('0x5'));exports[_0xb7d7('0x6')]=function(_0x7ee3c5){return setupLoggers(_0x7ee3c5)[_0xb7d7('0x7')](function(){_0x7ee3c5['use'](_0xb7d7('0x8'),require(_0xb7d7('0x9')));_0x7ee3c5['use']('/api/voice/chanspy',require(_0xb7d7('0xa')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xc'),require(_0xb7d7('0xd')));_0x7ee3c5[_0xb7d7('0xb')]('/api/voice/extensions',require(_0xb7d7('0xe')));_0x7ee3c5['use'](_0xb7d7('0xf'),require('./api/voiceMusicOnHold'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x10'),require(_0xb7d7('0x11')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x12'),require(_0xb7d7('0x13')));_0x7ee3c5[_0xb7d7('0xb')]('/api/screen/recordings',require('./api/screenRecording'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x14'),require('./api/voiceMail'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x15'),require(_0xb7d7('0x16')));_0x7ee3c5['use'](_0xb7d7('0x17'),require('./api/voiceCallReport'));_0x7ee3c5[_0xb7d7('0xb')]('/api/voice/dials/reports',require('./api/voiceDialReport'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x18'),require(_0xb7d7('0x19')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x1a'),require(_0xb7d7('0x1b')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x1c'),require(_0xb7d7('0x1d')));_0x7ee3c5['use'](_0xb7d7('0x1e'),require(_0xb7d7('0x1f')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x20'),require('./api/voiceTransferReport'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x21'),require('./api/mailServerOut'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x22'),require(_0xb7d7('0x23')));_0x7ee3c5['use'](_0xb7d7('0x24'),require('./api/mailQueue'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x25'),require(_0xb7d7('0x26')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x27'),require(_0xb7d7('0x28')));_0x7ee3c5[_0xb7d7('0xb')]('/api/mail/messages',require(_0xb7d7('0x29')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x2a'),require(_0xb7d7('0x2b')));_0x7ee3c5[_0xb7d7('0xb')]('/api/mail/reports/queue',require('./api/mailQueueReport'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x2c'),require('./api/dashboard'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x2d'),require(_0xb7d7('0x2e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x2f'),require('./api/faxAccount'));_0x7ee3c5['use'](_0xb7d7('0x30'),require(_0xb7d7('0x31')));_0x7ee3c5['use'](_0xb7d7('0x32'),require(_0xb7d7('0x33')));_0x7ee3c5[_0xb7d7('0xb')]('/api/fax/messages',require(_0xb7d7('0x34')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x35'),require(_0xb7d7('0x36')));_0x7ee3c5[_0xb7d7('0xb')]('/api/fax/reports/queue',require(_0xb7d7('0x37')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x38'),require(_0xb7d7('0x39')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x3a'),require(_0xb7d7('0x3b')));_0x7ee3c5['use'](_0xb7d7('0x3c'),require(_0xb7d7('0x3d')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x3e'),require(_0xb7d7('0x3f')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x40'),require('./api/smsQueue'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x41'),require('./api/openchannelAccount'));_0x7ee3c5[_0xb7d7('0xb')]('/api/openchannel/applications',require(_0xb7d7('0x42')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x43'),require(_0xb7d7('0x44')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x45'),require(_0xb7d7('0x46')));_0x7ee3c5['use'](_0xb7d7('0x47'),require(_0xb7d7('0x48')));_0x7ee3c5['use'](_0xb7d7('0x49'),require(_0xb7d7('0x4a')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x4b'),require(_0xb7d7('0x4c')));_0x7ee3c5[_0xb7d7('0xb')]('/api/chat/applications',require('./api/chatApplication'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x4d'),require(_0xb7d7('0x4e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x4f'),require(_0xb7d7('0x50')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x51'),require(_0xb7d7('0x52')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x53'),require(_0xb7d7('0x54')));_0x7ee3c5['use'](_0xb7d7('0x55'),require(_0xb7d7('0x56')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x57'),require(_0xb7d7('0x58')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x59'),require(_0xb7d7('0x5a')));_0x7ee3c5['use'](_0xb7d7('0x5b'),require(_0xb7d7('0x5c')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x5d'),require(_0xb7d7('0x5e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x5f'),require('./api/cmHopperBlack'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x60'),require(_0xb7d7('0x61')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x62'),require('./api/cmHopperHistory'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x63'),require(_0xb7d7('0x64')));_0x7ee3c5['use'](_0xb7d7('0x65'),require('./api/action'));_0x7ee3c5['use']('/api/automations',require('./api/automation'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x66'),require('./api/cannedAnswer'));_0x7ee3c5[_0xb7d7('0xb')]('/api/dispositions',require(_0xb7d7('0x67')));_0x7ee3c5[_0xb7d7('0xb')]('/api/conditions',require('./api/condition'));_0x7ee3c5['use']('/api/intervals',require(_0xb7d7('0x68')));_0x7ee3c5['use']('/api/pauses',require('./api/pause'));_0x7ee3c5['use'](_0xb7d7('0x69'),require(_0xb7d7('0x6a')));_0x7ee3c5[_0xb7d7('0xb')]('/api/voiceQueuesLog',require(_0xb7d7('0x6b')));_0x7ee3c5[_0xb7d7('0xb')]('/api/schedules',require(_0xb7d7('0x6c')));_0x7ee3c5['use'](_0xb7d7('0x6d'),require(_0xb7d7('0x6e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x6f'),require(_0xb7d7('0x70')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x71'),require('./api/contactItemType'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x72'),require(_0xb7d7('0x73')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x74'),require(_0xb7d7('0x75')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x76'),require(_0xb7d7('0x77')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x78'),require(_0xb7d7('0x79')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x7a'),require(_0xb7d7('0x7b')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x7c'),require('./api/integration'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x7d'),require(_0xb7d7('0x7e')));_0x7ee3c5['use'](_0xb7d7('0x7f'),require('./api/analyticCustomReport'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x80'),require(_0xb7d7('0x81')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x82'),require(_0xb7d7('0x83')));_0x7ee3c5['use'](_0xb7d7('0x84'),require('./api/analyticMetric'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x85'),require(_0xb7d7('0x86')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x87'),require(_0xb7d7('0x88')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x89'),require(_0xb7d7('0x8a')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x8b'),require(_0xb7d7('0x8c')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x8d'),require(_0xb7d7('0x8e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x8f'),require(_0xb7d7('0x90')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x91'),require('./api/intSugarcrmConfiguration'));_0x7ee3c5['use'](_0xb7d7('0x92'),require(_0xb7d7('0x93')));_0x7ee3c5['use'](_0xb7d7('0x94'),require(_0xb7d7('0x95')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x96'),require(_0xb7d7('0x97')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x98'),require(_0xb7d7('0x99')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x9a'),require('./api/intZohoAccount'));_0x7ee3c5['use'](_0xb7d7('0x9b'),require(_0xb7d7('0x9c')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x9d'),require(_0xb7d7('0x9e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x9f'),require(_0xb7d7('0xa0')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xa1'),require('./api/intZendeskConfiguration'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xa2'),require(_0xb7d7('0xa3')));_0x7ee3c5[_0xb7d7('0xb')]('/api/integrations/freshdesk/accounts',require(_0xb7d7('0xa4')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xa5'),require(_0xb7d7('0xa6')));_0x7ee3c5['use'](_0xb7d7('0xa7'),require(_0xb7d7('0xa8')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xa9'),require(_0xb7d7('0xaa')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xab'),require(_0xb7d7('0xac')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xad'),require(_0xb7d7('0xae')));_0x7ee3c5['use'](_0xb7d7('0xaf'),require(_0xb7d7('0xb0')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xb1'),require('./api/intServicenowConfiguration'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xb2'),require('./api/intServicenowField'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xb3'),require(_0xb7d7('0xb4')));_0x7ee3c5['use'](_0xb7d7('0xb5'),require(_0xb7d7('0xb6')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xb7'),require(_0xb7d7('0xb8')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xb9'),require(_0xb7d7('0xba')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xbb'),require('./api/intFreshsalesConfiguration'));_0x7ee3c5[_0xb7d7('0xb')]('/api/integrations/freshsales/fields',require(_0xb7d7('0xbc')));_0x7ee3c5['use'](_0xb7d7('0xbd'),require(_0xb7d7('0xbe')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xbf'),require(_0xb7d7('0xc0')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xc1'),require(_0xb7d7('0xc2')));_0x7ee3c5[_0xb7d7('0xb')]('/api/jscripty/answers/reports',require(_0xb7d7('0xc3')));_0x7ee3c5['use']('/api/jscripty/questions/reports',require(_0xb7d7('0xc4')));_0x7ee3c5[_0xb7d7('0xb')]('/api/jscripty/sessions/reports',require(_0xb7d7('0xc5')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xc6'),require(_0xb7d7('0xc7')));_0x7ee3c5['use'](_0xb7d7('0xc8'),require('./api/squareReport'));_0x7ee3c5[_0xb7d7('0xb')]('/api/square/details/reports',require(_0xb7d7('0xc9')));_0x7ee3c5['use'](_0xb7d7('0xca'),require(_0xb7d7('0xcb')));_0x7ee3c5['use'](_0xb7d7('0xcc'),require(_0xb7d7('0xcd')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xce'),require(_0xb7d7('0xcf')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xd0'),require(_0xb7d7('0xd1')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xd2'),require(_0xb7d7('0xd3')));_0x7ee3c5[_0xb7d7('0xb')]('/api/square/messages',require(_0xb7d7('0xd4')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xd5'),require('./api/team'));_0x7ee3c5['use'](_0xb7d7('0xd6'),require(_0xb7d7('0xd7')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xd8'),require(_0xb7d7('0xd9')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xda'),require(_0xb7d7('0xdb')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xdc'),require(_0xb7d7('0xdd')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xde'),require(_0xb7d7('0xdf')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xe0'),require(_0xb7d7('0xe1')));_0x7ee3c5[_0xb7d7('0xb')]('/api/chat/reports/transfer',require(_0xb7d7('0xe2')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xe3'),require('./api/faxTransferReport'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xe4'),require(_0xb7d7('0xe5')));_0x7ee3c5[_0xb7d7('0xb')]('/api/sms/reports/transfer',require(_0xb7d7('0xe6')));_0x7ee3c5[_0xb7d7('0xb')]('/api/cm/lists',require(_0xb7d7('0xe7')));_0x7ee3c5['use'](_0xb7d7('0xe8'),require('./api/voicePrefix'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xe9'),require(_0xb7d7('0xea')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xeb'),require(_0xb7d7('0xec')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xed'),require(_0xb7d7('0xee')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xef'),require('./api/userNotification'));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xf0'),require(_0xb7d7('0xf1')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xf2'),require(_0xb7d7('0xf3')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xf4'),require(_0xb7d7('0xf5')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xf6'),require(_0xb7d7('0xf7')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xf8'),require(_0xb7d7('0xf9')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0xfa'),require(_0xb7d7('0xfb')));_0x7ee3c5[_0xb7d7('0xb')]('/api/whatsapp/queues',require(_0xb7d7('0xfc')));_0x7ee3c5['use'](_0xb7d7('0xfd'),require('./api/cloudProvider'));_0x7ee3c5[_0xb7d7('0xb')]('/api/realtime',require('./api/realtime'));_0x7ee3c5['use'](_0xb7d7('0xfe'),require(_0xb7d7('0xff')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x100'),require('./api/authLocal'));_0x7ee3c5['use'](_0xb7d7('0x101'),require(_0xb7d7('0x102')));_0x7ee3c5['use'](_0xb7d7('0x103'),require(_0xb7d7('0x104')));_0x7ee3c5['use'](_0xb7d7('0x105'),require(_0xb7d7('0x106')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x107'),require(_0xb7d7('0x108')));_0x7ee3c5['use'](_0xb7d7('0x109'),require(_0xb7d7('0x10a')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x10b'),require(_0xb7d7('0x10c')));_0x7ee3c5['use'](_0xb7d7('0x10d'),require(_0xb7d7('0x10e')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x10f'),require(_0xb7d7('0x110')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x111'),clientSideLogs);_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x112'),express[_0xb7d7('0x113')](path[_0xb7d7('0x114')](config[_0xb7d7('0x115')],_0xb7d7('0x112'))));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x116'),express[_0xb7d7('0x113')](path['join'](config[_0xb7d7('0x115')],_0xb7d7('0x116'))));_0x7ee3c5['use'](_0xb7d7('0x117'),express['static'](path['join'](config[_0xb7d7('0x115')],'/demo')));_0x7ee3c5[_0xb7d7('0xb')](_0xb7d7('0x118'),express[_0xb7d7('0x113')](path[_0xb7d7('0x114')](config[_0xb7d7('0x115')],_0xb7d7('0x119'),_0xb7d7('0x11a'))));_0x7ee3c5[_0xb7d7('0xb')]('/plugins',express[_0xb7d7('0x113')](path[_0xb7d7('0x114')](config[_0xb7d7('0x115')],_0xb7d7('0x11b'))));_0x7ee3c5[_0xb7d7('0x11c')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0xb7d7('0x11d')](errors[0x194]);_0x7ee3c5[_0xb7d7('0x11c')]('/*')[_0xb7d7('0x11d')](function(_0x41e563,_0x1cbf6c){_0x1cbf6c[_0xb7d7('0x11e')](path[_0xb7d7('0x11f')](_0x7ee3c5[_0xb7d7('0x11d')](_0xb7d7('0x120'))+'/index.html'));});return _0x7ee3c5;});};
\ No newline at end of file
index bee491d..091d3fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51f=['RPC\x20listening\x20on\x20','jayson/promise','lodash','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/smsQueueReport/smsQueueReport.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/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','server','rpc','port','localhost','error','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','default'];(function(_0x1dba46,_0x5c580a){var _0xb550a8=function(_0x609575){while(--_0x609575){_0x1dba46['push'](_0x1dba46['shift']());}};_0xb550a8(++_0x5c580a);}(_0xf51f,0x19f));var _0xff51=function(_0x44fef1,_0x132cf4){_0x44fef1=_0x44fef1-0x0;var _0x3c3a04=_0xf51f[_0x44fef1];return _0x3c3a04;};'use strict';var jayson=require(_0xff51('0x0'));var _=require(_0xff51('0x1'));var config=require('../config/environment');exports[_0xff51('0x2')]=function(){return new Promise(function(_0x3f7f46,_0x53c60d){var _0x20be0d={};_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x4')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x5')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x6')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x7')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x8')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x9')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0xa')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0xb')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/trunk/trunk.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0xc')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/mailServerIn/mailServerIn.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0xd')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0xe')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0xf')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x10')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x11')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x12')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/faxAccount/faxAccount.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/faxApplication/faxApplication.rpc'));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x13')));_0x20be0d=_['merge'](_0x20be0d,require('../api/faxMessage/faxMessage.rpc'));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x14')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x15')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x16')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x17')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x18')));_0x20be0d=_['merge'](_0x20be0d,require('../api/smsQueue/smsQueue.rpc'));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x19')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x1a')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x1b')));_0x20be0d=_['merge'](_0x20be0d,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x1c')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x1d')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x1e')));_0x20be0d=_['merge'](_0x20be0d,require('../api/chatQueue/chatQueue.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x1f')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/cmHopper/cmHopper.rpc'));_0x20be0d=_['merge'](_0x20be0d,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x20')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x21')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x22')));_0x20be0d=_['merge'](_0x20be0d,require('../api/interval/interval.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x23')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x24')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x25')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x26')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x27')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x28')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x29')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x2a')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x2b')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x2c')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x2d')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x2e')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x2f')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x30')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x20be0d=_['merge'](_0x20be0d,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x31')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x32')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x33')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x34')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x35')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x36')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x37')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x38')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x39')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x3a')));_0x20be0d=_['merge'](_0x20be0d,require(_0xff51('0x3b')));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require(_0xff51('0x3c')));_0x20be0d=_['merge'](_0x20be0d,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x20be0d=_[_0xff51('0x3')](_0x20be0d,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x571470=jayson[_0xff51('0x3d')](_0x20be0d)['http']();var _0x46ed6=config[_0xff51('0x3e')]['port']||config[_0xff51('0x3f')]+0x1;var _0x3f664b=config[_0xff51('0x3e')]['ip']||_0xff51('0x40');_0x571470['on'](_0xff51('0x41'),function(_0x140cbe){return _0x53c60d(_0x140cbe);});_0x571470[_0xff51('0x2')](_0x46ed6,_0x3f664b,function(){console['log'](_0xff51('0x42'),_0x3f664b,_0x46ed6);require('../config/triggers')[_0xff51('0x43')]();return _0x3f7f46(_0xff51('0x44')+_0x3f664b+':'+_0x46ed6);});});};
\ No newline at end of file
+var _0x5946=['server','http','rpc','port','localhost','log','../config/triggers','default','RPC\x20listening\x20on\x20','lodash','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/pause/pause.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc'];(function(_0x44a453,_0x1d43cd){var _0x565c10=function(_0x47c65d){while(--_0x47c65d){_0x44a453['push'](_0x44a453['shift']());}};_0x565c10(++_0x1d43cd);}(_0x5946,0x8f));var _0x6594=function(_0x3d9176,_0x399d6f){_0x3d9176=_0x3d9176-0x0;var _0x12adc5=_0x5946[_0x3d9176];return _0x12adc5;};'use strict';var jayson=require('jayson/promise');var _=require(_0x6594('0x0'));var config=require('../config/environment');exports[_0x6594('0x1')]=function(){return new Promise(function(_0x42e9e3,_0x28e298){var _0x464e96={};_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/user/user.rpc'));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x3')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x4')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/voiceRecording/voiceRecording.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x5')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x6')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/memberReport/memberReport.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x7')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x8')));_0x464e96=_['merge'](_0x464e96,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x464e96=_['merge'](_0x464e96,require('../api/mailServerIn/mailServerIn.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x9')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0xa')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0xb')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0xc')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0xd')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0xe')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0xf')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x10')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x11')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/faxMessage/faxMessage.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x12')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x13')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x14')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x15')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x16')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x17')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x18')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x19')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x1a')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x1b')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x1c')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x1d')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x1e')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x1f')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x20')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x21')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x22')));_0x464e96=_['merge'](_0x464e96,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/interval/interval.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x23')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/sound/sound.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x24')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x25')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x26')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x27')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x28')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x29')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x2a')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x2b')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x2c')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x2d')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x2e')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x2f')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x30')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x31')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/squareProject/squareProject.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/squareRecording/squareRecording.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x32')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x33')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x34')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require('../api/plugin/plugin.rpc'));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x35')));_0x464e96=_['merge'](_0x464e96,require(_0x6594('0x36')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x37')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x38')));_0x464e96=_[_0x6594('0x2')](_0x464e96,require(_0x6594('0x39')));var _0x58998c=jayson[_0x6594('0x3a')](_0x464e96)[_0x6594('0x3b')]();var _0x402368=config[_0x6594('0x3c')][_0x6594('0x3d')]||config[_0x6594('0x3d')]+0x1;var _0x4f28c1=config[_0x6594('0x3c')]['ip']||_0x6594('0x3e');_0x58998c['on']('error',function(_0x7cb356){return _0x28e298(_0x7cb356);});_0x58998c[_0x6594('0x1')](_0x402368,_0x4f28c1,function(){console[_0x6594('0x3f')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x4f28c1,_0x402368);require(_0x6594('0x40'))[_0x6594('0x41')]();return _0x42e9e3(_0x6594('0x42')+_0x4f28c1+':'+_0x402368);});});};
\ No newline at end of file
index 2f824a0..aeb6f64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['extension','setExtension','setPriority','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','pipe','write','destroy','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','setVariable','isBoolean','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt'];(function(_0x46499c,_0x393fac){var _0x24dfb0=function(_0x475800){while(--_0x475800){_0x46499c['push'](_0x46499c['shift']());}};_0x24dfb0(++_0x393fac);}(_0x687b,0x14a));var _0xb687=function(_0x158988,_0x30addd){_0x158988=_0x158988-0x0;var _0x2bd5cd=_0x687b[_0x158988];return _0x2bd5cd;};'use strict';var util=require(_0xb687('0x0'));var _=require(_0xb687('0x1'));var EventEmitter=require(_0xb687('0x2'))[_0xb687('0x3')];var AGIReply=require('./reply');var AGIError=require('./error');function AGIChannel(_0x35069a){var _0x2a4a7c=this,_0x36c468=new AGIReply(),_0x31bd0d=![],_0x46e5b3={};EventEmitter[_0xb687('0x4')](_0x2a4a7c);_0x35069a[_0xb687('0x5')](_0xb687('0x6'));_0x35069a[_0xb687('0x7')](0x8*0x3c*0x3c*0x3e8);_0x36c468[_0xb687('0x5')]('utf8');_0x36c468['on'](_0xb687('0x8'),function(_0xd40346){for(var _0x47f4cc in _0xd40346){_0x2a4a7c[_0x47f4cc]=_0xd40346[_0x47f4cc];}_0x2a4a7c[_0xb687('0x9')](_0xb687('0xa'));});_0x36c468['on'](_0xb687('0xb'),function(_0x15dc9a){if(_0x15dc9a[_0xb687('0xc')]()==_0xb687('0xd')){_0x2a4a7c[_0xb687('0x9')](_0xb687('0xd'));return;}if(_0x15dc9a[_0xb687('0xe')](0x0,0xb)=='520-Invalid'){_0x31bd0d=!![];}if(_0x31bd0d){_0x46e5b3['rx']+=_0x15dc9a+'\x0a';if(_0x15dc9a[_0xb687('0xf')](_0xb687('0x10'))!=-0x1){_0x31bd0d=![];}}else{_0x46e5b3['rx']=_0x15dc9a;}if(_0x31bd0d){return;}if(typeof _0x46e5b3['cb']==_0xb687('0x11')){var _0x12a0be=_0x46e5b3['rx'][_0xb687('0xe')](0x0,0x3),_0x4f9c19=null,_0x4c97ed=null;_0x12a0be=parseInt(_0x12a0be);if(isNaN(_0x12a0be)){_0x46e5b3['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xb687('0x12')});return;}if(_0x12a0be!=0xc8){_0x46e5b3['cb'](null,{'code':_0x12a0be,'result':-0x1,'extra':'KO'});return;}_0x4f9c19=_0x46e5b3['rx']['substring'](0x4)[_0xb687('0x13')](_0xb687('0x14'),'');if(_0x4f9c19[_0xb687('0x15')]('\x20')!=-0x1){_0x4f9c19=_0x4f9c19[_0xb687('0x16')](0x0,_0x4f9c19[_0xb687('0x15')]('\x20'));}if(_[_0xb687('0x17')](_0x4f9c19,'-1')){_0x4f9c19=parseInt(_0x4f9c19);}_0x4c97ed=_0x46e5b3['rx'][_0xb687('0x18')]('\x20');if(_0x4c97ed[_0xb687('0x19')]==0x3){_0x4c97ed=_0x4c97ed[0x2][_0xb687('0xe')](0x1,_0x4c97ed[0x2][_0xb687('0x19')]-0x1);}else if(_0x4c97ed[_0xb687('0x19')]>0x3){var _0x19bb29=/\((.+)\)/;var _0x4f0fdb=_0x46e5b3['rx'][_0xb687('0x1a')](_0x19bb29);if(_0x4f0fdb){_0x4c97ed=_0x4f0fdb[0x1];}else{_0x4c97ed=null;}}else{_0x4c97ed=null;}_0x46e5b3['cb'](null,{'code':_0x12a0be,'result':_0x4f9c19,'extra':_0x4c97ed});}});_0x35069a['on'](_0xb687('0x1b'),function(_0x30d370){_0x2a4a7c['emit']('error',new AGIError(_0xb687('0x1c'),_0x30d370[_0xb687('0x1d')]));});_0x35069a['on'](_0xb687('0x1e'),function(){_0x2a4a7c['emit'](_0xb687('0x1e'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x35069a['on'](_0xb687('0x1f'),function(){_0x2a4a7c[_0xb687('0x9')](_0xb687('0x1f'),new AGIError(_0xb687('0x20')));_0x35069a['destroy']();});_0x35069a[_0xb687('0x21')](_0x36c468);this['command']=function(_0x335541,_0x90e892){var _0x335541=_0x335541||'',_0x90e892=typeof _0x90e892==_0xb687('0x11')?_0x90e892:new Function();_0x46e5b3={'tx':_0x335541,'rx':'','cb':_0x90e892};_0x35069a[_0xb687('0x22')](_0x335541+'\x0a');},this[_0xb687('0x1e')]=function(){_0x35069a[_0xb687('0x23')]();};}util[_0xb687('0x24')](AGIChannel,EventEmitter);AGIChannel[_0xb687('0x25')][_0xb687('0x26')]=function(_0x2f0a0a){return this['command'][_0xb687('0x27')](this,_0x2f0a0a);};AGIChannel[_0xb687('0x25')][_0xb687('0x28')]=function(){return this[_0xb687('0x26')](_0xb687('0x29'));};AGIChannel[_0xb687('0x25')][_0xb687('0x2a')]=function(_0x3cb2f2,_0x3ff9e1,_0x2e6185){_0x3cb2f2=_0x3cb2f2===undefined?'beep':_0x3cb2f2;_0x3ff9e1=_0x3ff9e1===undefined?'5':_0x3ff9e1;_0x2e6185=_0x2e6185===undefined?'1':_0x2e6185;return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x2c'),_0x3cb2f2,_0x3ff9e1*0x3e8,_0x2e6185));};AGIChannel[_0xb687('0x25')][_0xb687('0x2d')]=function(_0x173c58){_0x173c58=_0x173c58||'NO\x20MESSAGE';return this[_0xb687('0x26')](util['format'](_0xb687('0x2e'),_0x173c58));};AGIChannel[_0xb687('0x25')][_0xb687('0x2f')]=function(_0x245db1,_0x1ad3ef){if(_[_0xb687('0x30')](_0x1ad3ef)){return this[_0xb687('0x26')](util['format'](_0xb687('0x31'),_0x245db1,_0x1ad3ef[_0xb687('0x32')](',')));}return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x31'),_0x245db1,_0x1ad3ef));};AGIChannel[_0xb687('0x25')][_0xb687('0x33')]=function(_0x164353){return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x34'),_0x164353));};AGIChannel['prototype']['setExtension']=function(_0x1807b3){return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x35'),_0x1807b3));};AGIChannel['prototype']['setPriority']=function(_0x1ccc25){return this[_0xb687('0x26')](util['format'](_0xb687('0x36'),_0x1ccc25));};AGIChannel[_0xb687('0x25')]['hangup']=function(){return this[_0xb687('0x26')]('HANGUP');};AGIChannel[_0xb687('0x25')][_0xb687('0x37')]=function(_0x2da038,_0x3e146a){var _0x32d66c=_[_0xb687('0x38')](_0x3e146a)||_['isNumber'](_0x3e146a)?_0x3e146a[_0xb687('0x39')]():_0x3e146a;return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x3a'),_0x2da038,_0x32d66c?_0x32d66c['toString']()[_0xb687('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xb687('0x25')][_0xb687('0x3b')]=function(_0xce9624,_0xa3f0f9){return this['sendRequest'](util[_0xb687('0x2b')](_0xb687('0x3c'),_0xce9624,_0xa3f0f9));};AGIChannel[_0xb687('0x25')][_0xb687('0x3d')]=function(_0x24b785,_0x29cf09){return this['sendRequest'](util['format'](_0xb687('0x3e'),_0x24b785,_0x29cf09));};AGIChannel['prototype'][_0xb687('0x3f')]=function(_0x2f4550,_0x48d3b1){return this[_0xb687('0x26')](util[_0xb687('0x2b')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x2f4550,_0x48d3b1));};AGIChannel[_0xb687('0x25')][_0xb687('0x40')]=function(_0x127b25,_0x5253df,_0x66fabe){_0x5253df=_0x5253df||this[_0xb687('0x41')];_0x66fabe=_0x66fabe||0x1;this[_0xb687('0x33')](_0x127b25);this[_0xb687('0x42')](_0x5253df);this[_0xb687('0x43')](_0x66fabe);return this[_0xb687('0x2d')](util[_0xb687('0x2b')]('GOTO\x20%s\x20%s\x20%s',_0x127b25,_0x5253df,_0x66fabe));};AGIChannel[_0xb687('0x25')]['getVariable']=function(_0x50fdb7){return this[_0xb687('0x26')](util[_0xb687('0x2b')]('GET\x20VARIABLE\x20\x22%s\x22',_0x50fdb7));};AGIChannel[_0xb687('0x25')]['recordFile']=function(_0x3e886d,_0x385c95,_0x5c89a3,_0x4cb7a0,_0x3a8509,_0x5d9cb0){_0x385c95=_0x385c95||_0xb687('0x44');_0x5c89a3=_0x5c89a3||'';_0x4cb7a0=_0x4cb7a0===undefined?-0x1:_0x4cb7a0==='-1'?-0x1:_0x4cb7a0*0x3e8;_0x3a8509=_0x3a8509===undefined?'':'s='+_0x3a8509;_0x5d9cb0=_0x5d9cb0?_0xb687('0x45'):'';return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x46'),_0x3e886d,_0x385c95,_0x5c89a3,_0x4cb7a0,_0x5d9cb0,_0x3a8509));};AGIChannel[_0xb687('0x25')][_0xb687('0x47')]=function(_0x26119c,_0x41b1b6){_0x41b1b6=_0x41b1b6||'';return this[_0xb687('0x26')](util[_0xb687('0x2b')](_0xb687('0x48'),_0x26119c,_0x41b1b6));};AGIChannel['prototype'][_0xb687('0x49')]=function(_0x524853){return this[_0xb687('0x2f')](_0xb687('0x4a'),_0x524853);};AGIChannel[_0xb687('0x25')][_0xb687('0x4b')]=function(_0x113b76){return this[_0xb687('0x2f')]('WAIT',_0x113b76);};AGIChannel['prototype'][_0xb687('0x1b')]=function(_0x3f1355,_0x40558a){this[_0xb687('0x2d')](util['format'](_0xb687('0x4c'),_0x3f1355['id'],_0x3f1355[_0xb687('0x4d')],_0x40558a));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xb687('0x4e')]=AGIChannel;
\ No newline at end of file
+var _0x1a0e=['length','match','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','write','destroy','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','noop','NO\x20MESSAGE','format','exec','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','hangup','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','setContext','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','lodash','events','EventEmitter','./reply','./error','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','startsWith','split'];(function(_0x96125f,_0x3beb58){var _0x638472=function(_0x30ca9e){while(--_0x30ca9e){_0x96125f['push'](_0x96125f['shift']());}};_0x638472(++_0x3beb58);}(_0x1a0e,0x1c6));var _0xe1a0=function(_0x58b3d5,_0x5584f8){_0x58b3d5=_0x58b3d5-0x0;var _0x2f6de9=_0x1a0e[_0x58b3d5];return _0x2f6de9;};'use strict';var util=require(_0xe1a0('0x0'));var _=require(_0xe1a0('0x1'));var EventEmitter=require(_0xe1a0('0x2'))[_0xe1a0('0x3')];var AGIReply=require(_0xe1a0('0x4'));var AGIError=require(_0xe1a0('0x5'));function AGIChannel(_0x3c3334){var _0x484ced=this,_0x42f060=new AGIReply(),_0x5602cf=![],_0x47c1bc={};EventEmitter['call'](_0x484ced);_0x3c3334[_0xe1a0('0x6')](_0xe1a0('0x7'));_0x3c3334[_0xe1a0('0x8')](0x8*0x3c*0x3c*0x3e8);_0x42f060[_0xe1a0('0x6')](_0xe1a0('0x7'));_0x42f060['on'](_0xe1a0('0x9'),function(_0x217653){for(var _0x10d66a in _0x217653){_0x484ced[_0x10d66a]=_0x217653[_0x10d66a];}_0x484ced[_0xe1a0('0xa')](_0xe1a0('0xb'));});_0x42f060['on'](_0xe1a0('0xc'),function(_0x3728d9){if(_0x3728d9[_0xe1a0('0xd')]()=='hangup'){_0x484ced[_0xe1a0('0xa')]('hangup');return;}if(_0x3728d9[_0xe1a0('0xe')](0x0,0xb)==_0xe1a0('0xf')){_0x5602cf=!![];}if(_0x5602cf){_0x47c1bc['rx']+=_0x3728d9+'\x0a';if(_0x3728d9[_0xe1a0('0x10')](_0xe1a0('0x11'))!=-0x1){_0x5602cf=![];}}else{_0x47c1bc['rx']=_0x3728d9;}if(_0x5602cf){return;}if(typeof _0x47c1bc['cb']==_0xe1a0('0x12')){var _0x3550bc=_0x47c1bc['rx']['substring'](0x0,0x3),_0x2ea844=null,_0x46c37d=null;_0x3550bc=parseInt(_0x3550bc);if(isNaN(_0x3550bc)){_0x47c1bc['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xe1a0('0x13')});return;}if(_0x3550bc!=0xc8){_0x47c1bc['cb'](null,{'code':_0x3550bc,'result':-0x1,'extra':'KO'});return;}_0x2ea844=_0x47c1bc['rx']['substring'](0x4)[_0xe1a0('0x14')](_0xe1a0('0x15'),'');if(_0x2ea844['indexOf']('\x20')!=-0x1){_0x2ea844=_0x2ea844[_0xe1a0('0x16')](0x0,_0x2ea844[_0xe1a0('0x17')]('\x20'));}if(_[_0xe1a0('0x18')](_0x2ea844,'-1')){_0x2ea844=parseInt(_0x2ea844);}_0x46c37d=_0x47c1bc['rx'][_0xe1a0('0x19')]('\x20');if(_0x46c37d[_0xe1a0('0x1a')]==0x3){_0x46c37d=_0x46c37d[0x2]['substring'](0x1,_0x46c37d[0x2][_0xe1a0('0x1a')]-0x1);}else if(_0x46c37d[_0xe1a0('0x1a')]>0x3){var _0x68e039=/\((.+)\)/;var _0x2866ae=_0x47c1bc['rx'][_0xe1a0('0x1b')](_0x68e039);if(_0x2866ae){_0x46c37d=_0x2866ae[0x1];}else{_0x46c37d=null;}}else{_0x46c37d=null;}_0x47c1bc['cb'](null,{'code':_0x3550bc,'result':_0x2ea844,'extra':_0x46c37d});}});_0x3c3334['on'](_0xe1a0('0x1c'),function(_0x40856a){_0x484ced[_0xe1a0('0xa')](_0xe1a0('0x1c'),new AGIError(_0xe1a0('0x1d'),_0x40856a[_0xe1a0('0x1e')]));});_0x3c3334['on'](_0xe1a0('0x1f'),function(){_0x484ced['emit']('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x3c3334['on'](_0xe1a0('0x20'),function(){_0x484ced[_0xe1a0('0xa')](_0xe1a0('0x20'),new AGIError(_0xe1a0('0x21')));_0x3c3334['destroy']();});_0x3c3334[_0xe1a0('0x22')](_0x42f060);this[_0xe1a0('0x23')]=function(_0x54bfe1,_0x167244){var _0x54bfe1=_0x54bfe1||'',_0x167244=typeof _0x167244==_0xe1a0('0x12')?_0x167244:new Function();_0x47c1bc={'tx':_0x54bfe1,'rx':'','cb':_0x167244};_0x3c3334[_0xe1a0('0x24')](_0x54bfe1+'\x0a');},this[_0xe1a0('0x1f')]=function(){_0x3c3334[_0xe1a0('0x25')]();};}util[_0xe1a0('0x26')](AGIChannel,EventEmitter);AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x28')]=function(_0x28a29e){return this['command'][_0xe1a0('0x29')](this,_0x28a29e);};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x2a')]=function(){return this[_0xe1a0('0x28')](_0xe1a0('0x2b'));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x2c')]=function(_0x1351a4,_0x1a8b7f,_0x34adb4){_0x1351a4=_0x1351a4===undefined?_0xe1a0('0x2d'):_0x1351a4;_0x1a8b7f=_0x1a8b7f===undefined?'5':_0x1a8b7f;_0x34adb4=_0x34adb4===undefined?'1':_0x34adb4;return this[_0xe1a0('0x28')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x1351a4,_0x1a8b7f*0x3e8,_0x34adb4));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x2e')]=function(_0x47edf4){_0x47edf4=_0x47edf4||_0xe1a0('0x2f');return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')]('VERBOSE\x20\x22%s\x22',_0x47edf4));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x31')]=function(_0x9c87be,_0x312c96){if(_['isArray'](_0x312c96)){return this[_0xe1a0('0x28')](util['format'](_0xe1a0('0x32'),_0x9c87be,_0x312c96['join'](',')));}return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')](_0xe1a0('0x32'),_0x9c87be,_0x312c96));};AGIChannel[_0xe1a0('0x27')]['setContext']=function(_0x47882a){return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')](_0xe1a0('0x33'),_0x47882a));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x34')]=function(_0x462b59){return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')]('SET\x20EXTENSION\x20%s',_0x462b59));};AGIChannel['prototype'][_0xe1a0('0x35')]=function(_0x17d5bc){return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')](_0xe1a0('0x36'),_0x17d5bc));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x37')]=function(){return this[_0xe1a0('0x28')](_0xe1a0('0x38'));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x39')]=function(_0x184508,_0x480826){var _0x3ce6ec=_[_0xe1a0('0x3a')](_0x480826)||_[_0xe1a0('0x3b')](_0x480826)?_0x480826[_0xe1a0('0x3c')]():_0x480826;return this[_0xe1a0('0x28')](util['format'](_0xe1a0('0x3d'),_0x184508,_0x3ce6ec?_0x3ce6ec[_0xe1a0('0x3c')]()[_0xe1a0('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x3e')]=function(_0x9c0c95,_0x3430ec){return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')](_0xe1a0('0x3f'),_0x9c0c95,_0x3430ec));};AGIChannel['prototype'][_0xe1a0('0x40')]=function(_0x5769e9,_0x545d2a){return this[_0xe1a0('0x28')](util['format'](_0xe1a0('0x41'),_0x5769e9,_0x545d2a));};AGIChannel['prototype'][_0xe1a0('0x42')]=function(_0x591266,_0xf9260){return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')](_0xe1a0('0x43'),_0x591266,_0xf9260));};AGIChannel[_0xe1a0('0x27')]['continueAt']=function(_0x5147b5,_0x199a4b,_0x3150fd){_0x199a4b=_0x199a4b||this[_0xe1a0('0x44')];_0x3150fd=_0x3150fd||0x1;this[_0xe1a0('0x45')](_0x5147b5);this[_0xe1a0('0x34')](_0x199a4b);this[_0xe1a0('0x35')](_0x3150fd);return this[_0xe1a0('0x2e')](util[_0xe1a0('0x30')](_0xe1a0('0x46'),_0x5147b5,_0x199a4b,_0x3150fd));};AGIChannel['prototype']['getVariable']=function(_0x560dd0){return this[_0xe1a0('0x28')](util[_0xe1a0('0x30')](_0xe1a0('0x47'),_0x560dd0));};AGIChannel[_0xe1a0('0x27')]['recordFile']=function(_0x3ba427,_0x3d67f3,_0x45c037,_0x5ce0ab,_0x3d9a93,_0x41b7a0){_0x3d67f3=_0x3d67f3||'wav';_0x45c037=_0x45c037||'';_0x5ce0ab=_0x5ce0ab===undefined?-0x1:_0x5ce0ab==='-1'?-0x1:_0x5ce0ab*0x3e8;_0x3d9a93=_0x3d9a93===undefined?'':'s='+_0x3d9a93;_0x41b7a0=_0x41b7a0?'BEEP':'';return this[_0xe1a0('0x28')](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x3ba427,_0x3d67f3,_0x45c037,_0x5ce0ab,_0x41b7a0,_0x3d9a93));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x48')]=function(_0x55c016,_0x340595){_0x340595=_0x340595||'';return this['sendRequest'](util['format'](_0xe1a0('0x49'),_0x55c016,_0x340595));};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x4a')]=function(_0x2d4469){return this[_0xe1a0('0x31')](_0xe1a0('0x4b'),_0x2d4469);};AGIChannel[_0xe1a0('0x27')][_0xe1a0('0x4c')]=function(_0x41ea14){return this['exec'](_0xe1a0('0x4d'),_0x41ea14);};AGIChannel[_0xe1a0('0x27')]['error']=function(_0x1e559d,_0x14d46b){this['noop'](util['format'](_0xe1a0('0x4e'),_0x1e559d['id'],_0x1e559d[_0xe1a0('0x4f')],_0x14d46b));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index 6c70538..a4470d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6a6=['exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf6a6,0x6d));var _0x6f6a=function(_0x28cfa6,_0x224803){_0x28cfa6=_0x28cfa6-0x0;var _0x521b6c=_0xf6a6[_0x28cfa6];return _0x521b6c;};'use strict';var util=require(_0x6f6a('0x0'));var error={'E_AGI_UNDEFINED':_0x6f6a('0x1'),'E_AGI_ARGUMENT_PORT':_0x6f6a('0x2'),'E_AGI_SERVER_ERROR':_0x6f6a('0x3'),'E_AGI_SERVER_CLOSE':_0x6f6a('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0x6f6a('0x5'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x6f6a('0x6'),'E_AGI_SOCKET_TIMEOUT':_0x6f6a('0x7'),'E_AGI_COMMAND_EMPTY':_0x6f6a('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x6f6a('0x9'),'E_AGI_IVR_ENTRY':_0x6f6a('0xa')};function AGIError(_0x4bf112){var _0x4bf112=_0x4bf112||null,_0xb4706a=_0xb4706a||[],_0x1f1f14=0x1,_0xa462cc='';if(!error[_0x4bf112]){_0x4bf112=_0x6f6a('0xb');}_0xb4706a[_0x6f6a('0xc')](error[_0x4bf112]);while(arguments[_0x1f1f14]){_0xb4706a[_0x6f6a('0xc')](arguments[_0x1f1f14]);_0x1f1f14++;}_0xa462cc=util[_0x6f6a('0xd')][_0x6f6a('0xe')](util,_0xb4706a);this[_0x6f6a('0xf')]=_0xa462cc;this[_0x6f6a('0x10')]=_0x4bf112;}module[_0x6f6a('0x11')]=AGIError;
\ No newline at end of file
+var _0x1135=['Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','format','apply','message','util','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.'];(function(_0x33a3ca,_0x54fd98){var _0x4888d4=function(_0x35effe){while(--_0x35effe){_0x33a3ca['push'](_0x33a3ca['shift']());}};_0x4888d4(++_0x54fd98);}(_0x1135,0x114));var _0x5113=function(_0x59b62f,_0xa2330){_0x59b62f=_0x59b62f-0x0;var _0x1bc0ba=_0x1135[_0x59b62f];return _0x1bc0ba;};'use strict';var util=require(_0x5113('0x0'));var error={'E_AGI_UNDEFINED':_0x5113('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x5113('0x2'),'E_AGI_SERVER_CLOSE':_0x5113('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x5113('0x4'),'E_AGI_SOCKET_ERROR':_0x5113('0x5'),'E_AGI_SOCKET_CLOSE':_0x5113('0x6'),'E_AGI_SOCKET_TIMEOUT':_0x5113('0x7'),'E_AGI_COMMAND_EMPTY':_0x5113('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x5113('0x9'),'E_AGI_IVR_ENTRY':_0x5113('0xa')};function AGIError(_0x3c0ca2){var _0x3c0ca2=_0x3c0ca2||null,_0x2f06a0=_0x2f06a0||[],_0x3b43d2=0x1,_0x2faeba='';if(!error[_0x3c0ca2]){_0x3c0ca2=_0x5113('0xb');}_0x2f06a0['push'](error[_0x3c0ca2]);while(arguments[_0x3b43d2]){_0x2f06a0['push'](arguments[_0x3b43d2]);_0x3b43d2++;}_0x2faeba=util[_0x5113('0xc')][_0x5113('0xd')](util,_0x2f06a0);this[_0x5113('0xe')]=_0x2faeba;this['name']=_0x3c0ca2;}module['exports']=AGIError;
\ No newline at end of file
index d6ea4c3..52610a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48dc=['agi','parse','emit','projectUpdate','error','E_AGI_SERVER_ERROR','exports','lodash','events','EventEmitter','./error','../../config/environment','redis','defaults','localhost','subscribe','message'];(function(_0x311625,_0x417acb){var _0x3f7b24=function(_0x4a23ee){while(--_0x4a23ee){_0x311625['push'](_0x311625['shift']());}};_0x3f7b24(++_0x417acb);}(_0x48dc,0xf5));var _0xc48d=function(_0x378f96,_0x13667f){_0x378f96=_0x378f96-0x0;var _0x10a677=_0x48dc[_0x378f96];return _0x10a677;};'use strict';var _=require(_0xc48d('0x0'));var EventEmitter=require(_0xc48d('0x1'))[_0xc48d('0x2')];var Redis=require('ioredis');var AGIError=require(_0xc48d('0x3'));var config=require(_0xc48d('0x4'));config[_0xc48d('0x5')]=_[_0xc48d('0x6')](config[_0xc48d('0x5')],{'host':_0xc48d('0x7'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0xc48d('0x8')]('agi',function(_0x2d8601){if(_0x2d8601)return eventEmitter['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0x2d8601));});sub['on'](_0xc48d('0x9'),function(_0x25086b,_0xfb9a31){if(_0x25086b!==_0xc48d('0xa'))return;try{var _0x323059=JSON[_0xc48d('0xb')](_0xfb9a31);eventEmitter[_0xc48d('0xc')](_0xc48d('0xd'),_0x323059);}catch(_0x56baad){eventEmitter['emit'](_0xc48d('0xe'),new AGIError(_0xc48d('0xf'),_0x56baad));}});module[_0xc48d('0x10')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x8054=['agi','parse','projectUpdate','error','exports','lodash','events','EventEmitter','./error','redis','defaults','localhost','emit','E_AGI_SERVER_ERROR','message'];(function(_0x152f8a,_0x539a59){var _0x1c27b2=function(_0x1586be){while(--_0x1586be){_0x152f8a['push'](_0x152f8a['shift']());}};_0x1c27b2(++_0x539a59);}(_0x8054,0x140));var _0x4805=function(_0x4d5c4c,_0x1a4f41){_0x4d5c4c=_0x4d5c4c-0x0;var _0x1e9825=_0x8054[_0x4d5c4c];return _0x1e9825;};'use strict';var _=require(_0x4805('0x0'));var EventEmitter=require(_0x4805('0x1'))[_0x4805('0x2')];var Redis=require('ioredis');var AGIError=require(_0x4805('0x3'));var config=require('../../config/environment');config[_0x4805('0x4')]=_[_0x4805('0x5')](config[_0x4805('0x4')],{'host':_0x4805('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub['subscribe']('agi',function(_0x276957){if(_0x276957)return eventEmitter[_0x4805('0x7')]('error',new AGIError(_0x4805('0x8'),_0x276957));});sub['on'](_0x4805('0x9'),function(_0x82f0e5,_0x177b99){if(_0x82f0e5!==_0x4805('0xa'))return;try{var _0x544ffb=JSON[_0x4805('0xb')](_0x177b99);eventEmitter[_0x4805('0x7')](_0x4805('0xc'),_0x544ffb);}catch(_0x1686f7){eventEmitter[_0x4805('0x7')](_0x4805('0xd'),new AGIError(_0x4805('0x8'),_0x1686f7));}});module[_0x4805('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index f710d91..5c6fe87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x897c=['numberOfEdges','prototype','addVertex','addEdge','push','size','relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','invalid','default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges'];(function(_0x23f85e,_0x5724e1){var _0x4264d7=function(_0x6518a4){while(--_0x6518a4){_0x23f85e['push'](_0x23f85e['shift']());}};_0x4264d7(++_0x5724e1);}(_0x897c,0x14d));var _0xc897=function(_0x2db2ca,_0x19c7c2){_0x2db2ca=_0x2db2ca-0x0;var _0x10aba4=_0x897c[_0x2db2ca];return _0x10aba4;};'use strict';var _=require(_0xc897('0x0'));var logger=require(_0xc897('0x1'))(_0xc897('0x2'));var verticesWithRetry=[_0xc897('0x3'),_0xc897('0x4'),_0xc897('0x5')];var Graph=function(){this[_0xc897('0x6')]={};this[_0xc897('0x7')]={};this[_0xc897('0x8')]=0x0;};Graph[_0xc897('0x9')][_0xc897('0xa')]=function(_0x312a46){this[_0xc897('0x6')][_0x312a46['id']]=_0x312a46;this[_0xc897('0x7')][_0x312a46['id']]=[];};Graph['prototype'][_0xc897('0xb')]=function(_0x2183bc,_0x24094f,_0x5b5103){this[_0xc897('0x7')][_0x2183bc][_0xc897('0xc')]({'target':_0x24094f,'condition':_0x5b5103});this['numberOfEdges']+=0x1;};Graph[_0xc897('0x9')][_0xc897('0xd')]=function(){return _[_0xc897('0xd')](this[_0xc897('0x6')]);};Graph['prototype'][_0xc897('0xe')]=function(){return this['numberOfEdges'];};Graph[_0xc897('0x9')]['getVertex']=function(_0x5ac274){return this[_0xc897('0x6')][_0x5ac274];};Graph[_0xc897('0x9')][_0xc897('0xf')]=function(_0x5c01c9,_0x4f8fbf){if(!this[_0xc897('0x6')][_0x5c01c9]){return logger[_0xc897('0x10')](_0xc897('0x11'));}var _0x12bd53=_0x4f8fbf(this[_0xc897('0x6')][_0x5c01c9]);if(!_0x12bd53){return logger[_0xc897('0x10')](_0xc897('0x12'));}if(this[_0xc897('0x7')][_0x5c01c9][_0xc897('0x13')]===0x0){return logger[_0xc897('0x10')](_0xc897('0x14'));}for(var _0x220f5a=0x0,_0x202360=[],_0x3f0829=![];_0x220f5a<this['edges'][_0x5c01c9][_0xc897('0x13')];_0x220f5a+=0x1){if(this[_0xc897('0x7')][_0x5c01c9][_0x220f5a]['condition']){_0x202360=this[_0xc897('0x7')][_0x5c01c9][_0x220f5a][_0xc897('0x15')][_0xc897('0x16')](',');for(var _0x2b1fbe=0x0;_0x2b1fbe<_0x202360['length'];_0x2b1fbe+=0x1){if(this['vertices'][_0x5c01c9][_0xc897('0x17')]===_0xc897('0x18')&&_0x202360[_0x2b1fbe]==='-'){_0x3f0829=this[_0xc897('0x7')][_0x5c01c9][_0x220f5a][_0xc897('0x19')];logger['info']('default',_0x202360[_0x2b1fbe],this[_0xc897('0x7')][_0x5c01c9][_0x220f5a][_0xc897('0x19')]);}else if(this[_0xc897('0x6')][_0x5c01c9][_0xc897('0x17')]==='menu'&&_0x202360[_0x2b1fbe]==='i'){_0x3f0829=this['edges'][_0x5c01c9][_0x220f5a][_0xc897('0x19')];logger[_0xc897('0x10')](_0xc897('0x1a'),_0x202360[_0x2b1fbe],this[_0xc897('0x7')][_0x5c01c9][_0x220f5a]['target']);}if(_0x202360[_0x2b1fbe]===_0x12bd53){return this[_0xc897('0xf')](this[_0xc897('0x7')][_0x5c01c9][_0x220f5a][_0xc897('0x19')],_0x4f8fbf);}}}else{return this[_0xc897('0xf')](this[_0xc897('0x7')][_0x5c01c9][_0x220f5a][_0xc897('0x19')],_0x4f8fbf);}}if(_0x202360[_0xc897('0x13')]){if(this[_0xc897('0x6')][_0x5c01c9][_0xc897('0x17')]===_0xc897('0x18')){if(_0x3f0829){return this['traverseBFS'](_0x3f0829,_0x4f8fbf);}return logger[_0xc897('0x10')](_0xc897('0x1b'));}else if(_['includes'](verticesWithRetry,this[_0xc897('0x6')][_0x5c01c9][_0xc897('0x17')])){if(_0x12bd53==='-'){return logger[_0xc897('0x10')](_0xc897('0x1c'));}if(_0x3f0829&&_0x12bd53!=='t'){return this[_0xc897('0xf')](_0x3f0829,_0x4f8fbf);}return this[_0xc897('0xf')](_0x5c01c9,_0x4f8fbf);}return logger[_0xc897('0x10')](_0xc897('0x1d'));}};module[_0xc897('0x1e')]=Graph;
\ No newline at end of file
+var _0x1640=['getdigits','getsecretdigits','vertices','edges','prototype','addVertex','push','numberOfEdges','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','length','no\x20edge/s\x20available','split','agicommand','vswitch','target','default','default\x20on\x20switch\x20not\x20found','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1640,0xf8));var _0x0164=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0x1640[_0x4a747d];return _0x3a5b5c;};'use strict';var _=require(_0x0164('0x0'));var logger=require(_0x0164('0x1'))(_0x0164('0x2'));var verticesWithRetry=[_0x0164('0x3'),_0x0164('0x4'),_0x0164('0x5')];var Graph=function(){this[_0x0164('0x6')]={};this[_0x0164('0x7')]={};this['numberOfEdges']=0x0;};Graph[_0x0164('0x8')][_0x0164('0x9')]=function(_0x3b4ab3){this['vertices'][_0x3b4ab3['id']]=_0x3b4ab3;this[_0x0164('0x7')][_0x3b4ab3['id']]=[];};Graph['prototype']['addEdge']=function(_0x367904,_0xb4a31c,_0x402ec9){this[_0x0164('0x7')][_0x367904][_0x0164('0xa')]({'target':_0xb4a31c,'condition':_0x402ec9});this[_0x0164('0xb')]+=0x1;};Graph['prototype'][_0x0164('0xc')]=function(){return _[_0x0164('0xc')](this['vertices']);};Graph[_0x0164('0x8')][_0x0164('0xd')]=function(){return this[_0x0164('0xb')];};Graph[_0x0164('0x8')][_0x0164('0xe')]=function(_0x250286){return this['vertices'][_0x250286];};Graph[_0x0164('0x8')][_0x0164('0xf')]=function(_0x28c6b8,_0xd5836){if(!this[_0x0164('0x6')][_0x28c6b8]){return logger[_0x0164('0x10')](_0x0164('0x11'));}var _0x102b06=_0xd5836(this[_0x0164('0x6')][_0x28c6b8]);if(!_0x102b06){return logger[_0x0164('0x10')]('stop\x20traverse');}if(this[_0x0164('0x7')][_0x28c6b8][_0x0164('0x12')]===0x0){return logger['info'](_0x0164('0x13'));}for(var _0x2d0fcc=0x0,_0x91b93d=[],_0x138247=![];_0x2d0fcc<this[_0x0164('0x7')][_0x28c6b8][_0x0164('0x12')];_0x2d0fcc+=0x1){if(this[_0x0164('0x7')][_0x28c6b8][_0x2d0fcc]['condition']){_0x91b93d=this[_0x0164('0x7')][_0x28c6b8][_0x2d0fcc]['condition'][_0x0164('0x14')](',');for(var _0x3679cd=0x0;_0x3679cd<_0x91b93d['length'];_0x3679cd+=0x1){if(this[_0x0164('0x6')][_0x28c6b8][_0x0164('0x15')]===_0x0164('0x16')&&_0x91b93d[_0x3679cd]==='-'){_0x138247=this['edges'][_0x28c6b8][_0x2d0fcc][_0x0164('0x17')];logger[_0x0164('0x10')](_0x0164('0x18'),_0x91b93d[_0x3679cd],this[_0x0164('0x7')][_0x28c6b8][_0x2d0fcc]['target']);}else if(this[_0x0164('0x6')][_0x28c6b8]['agicommand']===_0x0164('0x3')&&_0x91b93d[_0x3679cd]==='i'){_0x138247=this[_0x0164('0x7')][_0x28c6b8][_0x2d0fcc][_0x0164('0x17')];logger[_0x0164('0x10')]('invalid',_0x91b93d[_0x3679cd],this['edges'][_0x28c6b8][_0x2d0fcc][_0x0164('0x17')]);}if(_0x91b93d[_0x3679cd]===_0x102b06){return this['traverseBFS'](this[_0x0164('0x7')][_0x28c6b8][_0x2d0fcc][_0x0164('0x17')],_0xd5836);}}}else{return this[_0x0164('0xf')](this[_0x0164('0x7')][_0x28c6b8][_0x2d0fcc][_0x0164('0x17')],_0xd5836);}}if(_0x91b93d[_0x0164('0x12')]){if(this[_0x0164('0x6')][_0x28c6b8][_0x0164('0x15')]===_0x0164('0x16')){if(_0x138247){return this[_0x0164('0xf')](_0x138247,_0xd5836);}return logger['info'](_0x0164('0x19'));}else if(_['includes'](verticesWithRetry,this[_0x0164('0x6')][_0x28c6b8][_0x0164('0x15')])){if(_0x102b06==='-'){return logger['info']('max\x20retry\x20reach');}if(_0x138247&&_0x102b06!=='t'){return this['traverseBFS'](_0x138247,_0xd5836);}return this['traverseBFS'](_0x28c6b8,_0xd5836);}return logger['info'](_0x0164('0x1a'));}};module[_0x0164('0x1b')]=Graph;
\ No newline at end of file
index 97d94de..11f07f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa68=['[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','calleridname','evtHangup','hasOwnProperty','indexOf','agi_','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','find','handleNotFound','production','handleUnpublished','initialize','getLicense','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','[LICENSE]','finally','connection','lodash','../../config/environment','../../config/logger','./project','./events','EventEmitter','agi','defaults','127.0.0.1','projectUpdate','nextTick','error','stack','findIndex','deleted','splice','push','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','name','[ERROR]\x20%s'];(function(_0x3bea4a,_0x2e5bc6){var _0x16467b=function(_0x4c9abe){while(--_0x4c9abe){_0x3bea4a['push'](_0x3bea4a['shift']());}};_0x16467b(++_0x2e5bc6);}(_0xaa68,0x1d5));var _0x8aa6=function(_0x2bb06c,_0x9da745){_0x2bb06c=_0x2bb06c-0x0;var _0x418bb1=_0xaa68[_0x2bb06c];return _0x418bb1;};'use strict';var _=require(_0x8aa6('0x0'));var syncho=require('syncho');var util=require('util');var config=require(_0x8aa6('0x1'));var logger=require(_0x8aa6('0x2'))('agi');var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var Project=require(_0x8aa6('0x3'));var AGIEmitter=require(_0x8aa6('0x4'))[_0x8aa6('0x5')];var projects=[];config[_0x8aa6('0x6')]=_[_0x8aa6('0x7')](config[_0x8aa6('0x6')],{'ip':_0x8aa6('0x8'),'port':0x11dd});AGIEmitter['on'](_0x8aa6('0x9'),projectUpdateHandler);function connectionHandler(_0x22b5a5){process[_0x8aa6('0xa')](function(){syncho(function(){try{setChannelVariables(_0x22b5a5);agiHandler(_0x22b5a5);}catch(_0x40ff79){logger[_0x8aa6('0xb')](_0x40ff79[_0x8aa6('0xc')]);}});});}function projectUpdateHandler(_0x2668bb){try{var _0x4ddbd6=_[_0x8aa6('0xd')](projects,['id',_0x2668bb['id']]);if(_0x4ddbd6>-0x1){if(_0x2668bb[_0x8aa6('0xe')]===!![]){projects[_0x8aa6('0xf')](_0x4ddbd6,0x1);}else{projects[_0x4ddbd6]=_0x2668bb;}}else{projects[_0x8aa6('0x10')](_0x2668bb);}}catch(_0x554199){logger[_0x8aa6('0xb')](_0x554199[_0x8aa6('0xc')]);}}function listeningHandler(){console[_0x8aa6('0x11')](_0x8aa6('0x12'),config['agi'][_0x8aa6('0x13')]);logger[_0x8aa6('0x14')](util[_0x8aa6('0x15')](_0x8aa6('0x16'),config[_0x8aa6('0x6')]['ip'],config[_0x8aa6('0x6')]['port']));}function errorHandler(_0x27701e){if(_0x27701e&&_0x27701e['name']&&_0x27701e[_0x8aa6('0x17')]){logger[_0x8aa6('0xb')](util[_0x8aa6('0x15')]('[%s]\x20%s',_0x27701e[_0x8aa6('0x18')],_0x27701e[_0x8aa6('0x17')]));}else{logger[_0x8aa6('0xb')](util[_0x8aa6('0x15')](_0x8aa6('0x19'),_0x27701e[_0x8aa6('0xc')]));}}function closeHandler(){logger[_0x8aa6('0x14')](util['format'](_0x8aa6('0x1a'),this[_0x8aa6('0x1b')],this['calleridname'],this[_0x8aa6('0x1c')],this[_0x8aa6('0x1d')],this[_0x8aa6('0x1e')]));try{createSquareReport(this);}catch(_0x2fa0c0){logger['error'](_0x2fa0c0[_0x8aa6('0xc')]);}}function timeoutHandler(){logger[_0x8aa6('0x14')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x8aa6('0x1b')],this[_0x8aa6('0x1f')],this[_0x8aa6('0x1c')],this[_0x8aa6('0x1d')],this[_0x8aa6('0x1e')]));}function hangupHandler(){logger['info'](util['format']('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x8aa6('0x1b')],this[_0x8aa6('0x1f')],this[_0x8aa6('0x1c')],this['dnid'],this[_0x8aa6('0x1e')]));this[_0x8aa6('0x20')]=!![];}function createSquareReport(_0x148cb9,_0x2a4a76){rpc['createSquareReport'](_0x148cb9)['then'](function(_0x42e702){if(_0x2a4a76){_0x2a4a76(null,_0x42e702);}})['catch'](function(_0x2222f5){if(_0x2a4a76){_0x2a4a76(null,_0x2222f5);}});}function setChannelVariables(_0x1cd679){for(var _0x27c8e7 in _0x1cd679){if(_0x1cd679[_0x8aa6('0x21')](_0x27c8e7)){if(_0x27c8e7[_0x8aa6('0x22')](_0x8aa6('0x23'))===0x0){_0x1cd679[_0x27c8e7['substring'](0x4)]=_0x1cd679[_0x27c8e7];delete _0x1cd679[_0x27c8e7];}}}}function agiHandler(_0x45982d){logger[_0x8aa6('0x24')](_0x8aa6('0x25'),JSON[_0x8aa6('0x26')](_0x45982d,null,0x2));logger[_0x8aa6('0x14')](util['format'](_0x8aa6('0x27'),_0x45982d[_0x8aa6('0x1b')],_0x45982d[_0x8aa6('0x1f')],_0x45982d[_0x8aa6('0x1c')],_0x45982d[_0x8aa6('0x1d')],_0x45982d[_0x8aa6('0x1e')]));_0x45982d['on'](_0x8aa6('0xb'),errorHandler);_0x45982d['on'](_0x8aa6('0x28'),closeHandler);_0x45982d['on']('timeout',timeoutHandler);_0x45982d[_0x8aa6('0x20')]=![];_0x45982d['on']('hangup',hangupHandler);var _0xb9f0be=_[_0x8aa6('0x29')](projects,[_0x8aa6('0x18'),_0x45982d[_0x8aa6('0x1b')]]);if(!_0xb9f0be)return Project[_0x8aa6('0x2a')](_0x45982d);if(!_0xb9f0be[_0x8aa6('0x2b')])return Project[_0x8aa6('0x2c')](_0x45982d);return Project[_0x8aa6('0x2d')](_0xb9f0be,_0x45982d);}function main(){var _0x4cae53;return utilLicense[_0x8aa6('0x2e')]()[_0x8aa6('0x2f')](function(_0x27af87){if(!_0x27af87)return;if(_0x27af87[_0x8aa6('0x30')]){if(_0x27af87[_0x8aa6('0x31')]&&_0x27af87[_0x8aa6('0x31')]>0x0){logger['info'](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0x27af87[_0x8aa6('0x31')]));_0x4cae53=_0x27af87[_0x8aa6('0x31')];}else{logger[_0x8aa6('0x14')](_0x8aa6('0x32'));}}else{logger[_0x8aa6('0x14')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x4cae53=-0x1;}})[_0x8aa6('0x2f')](function(){return Project[_0x8aa6('0x33')]();})[_0x8aa6('0x2f')](function(_0x16b811){projects=_0x16b811;return;})['catch'](function(_0xd2472f){logger[_0x8aa6('0xb')](_0x8aa6('0x34'),_0xd2472f[_0x8aa6('0xc')]);})[_0x8aa6('0x35')](function(){var _0x1e82c6=require('./server')(config['agi']['port'],config['agi']['ip'],_0x4cae53);_0x1e82c6['on'](_0x8aa6('0xb'),errorHandler);_0x1e82c6['on']('listening',listeningHandler);_0x1e82c6['on'](_0x8aa6('0x36'),connectionHandler);_0x1e82c6['on'](_0x8aa6('0x28'),closeHandler);});}main();
\ No newline at end of file
+var _0x6dc4=['production','handleUnpublished','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','connection','syncho','../../config/logger','agi','./rpc','./project','./events','EventEmitter','defaults','127.0.0.1','error','findIndex','splice','push','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','then','hasOwnProperty','indexOf','agi_','debug','variables','close','timeout','hangup','find'];(function(_0x503be0,_0x254ab5){var _0x2300f6=function(_0x17c3c4){while(--_0x17c3c4){_0x503be0['push'](_0x503be0['shift']());}};_0x2300f6(++_0x254ab5);}(_0x6dc4,0x17f));var _0x46dc=function(_0x5c7051,_0x3159fb){_0x5c7051=_0x5c7051-0x0;var _0x3075f0=_0x6dc4[_0x5c7051];return _0x3075f0;};'use strict';var _=require('lodash');var syncho=require(_0x46dc('0x0'));var util=require('util');var config=require('../../config/environment');var logger=require(_0x46dc('0x1'))(_0x46dc('0x2'));var utilLicense=require('../../config/license/util');var rpc=require(_0x46dc('0x3'));var Project=require(_0x46dc('0x4'));var AGIEmitter=require(_0x46dc('0x5'))[_0x46dc('0x6')];var projects=[];config['agi']=_[_0x46dc('0x7')](config['agi'],{'ip':_0x46dc('0x8'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x3bb97d){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x3bb97d);agiHandler(_0x3bb97d);}catch(_0x153df2){logger[_0x46dc('0x9')](_0x153df2['stack']);}});});}function projectUpdateHandler(_0x295ba5){try{var _0xd18727=_[_0x46dc('0xa')](projects,['id',_0x295ba5['id']]);if(_0xd18727>-0x1){if(_0x295ba5['deleted']===!![]){projects[_0x46dc('0xb')](_0xd18727,0x1);}else{projects[_0xd18727]=_0x295ba5;}}else{projects[_0x46dc('0xc')](_0x295ba5);}}catch(_0x2c51b9){logger[_0x46dc('0x9')](_0x2c51b9[_0x46dc('0xd')]);}}function listeningHandler(){console[_0x46dc('0xe')](_0x46dc('0xf'),config[_0x46dc('0x2')][_0x46dc('0x10')]);logger[_0x46dc('0x11')](util[_0x46dc('0x12')](_0x46dc('0x13'),config[_0x46dc('0x2')]['ip'],config[_0x46dc('0x2')][_0x46dc('0x10')]));}function errorHandler(_0x29325d){if(_0x29325d&&_0x29325d[_0x46dc('0x14')]&&_0x29325d[_0x46dc('0x15')]){logger[_0x46dc('0x9')](util[_0x46dc('0x12')](_0x46dc('0x16'),_0x29325d[_0x46dc('0x14')],_0x29325d['message']));}else{logger[_0x46dc('0x9')](util[_0x46dc('0x12')]('[ERROR]\x20%s',_0x29325d[_0x46dc('0xd')]));}}function closeHandler(){logger['info'](util['format'](_0x46dc('0x17'),this[_0x46dc('0x18')],this[_0x46dc('0x19')],this[_0x46dc('0x1a')],this['dnid'],this[_0x46dc('0x1b')]));try{createSquareReport(this);}catch(_0xd087eb){logger[_0x46dc('0x9')](_0xd087eb[_0x46dc('0xd')]);}}function timeoutHandler(){logger[_0x46dc('0x11')](util[_0x46dc('0x12')](_0x46dc('0x1c'),this[_0x46dc('0x18')],this[_0x46dc('0x19')],this[_0x46dc('0x1a')],this['dnid'],this[_0x46dc('0x1b')]));}function hangupHandler(){logger['info'](util[_0x46dc('0x12')](_0x46dc('0x1d'),this[_0x46dc('0x18')],this[_0x46dc('0x19')],this[_0x46dc('0x1a')],this[_0x46dc('0x1e')],this['uniqueid']));this['evtHangup']=!![];}function createSquareReport(_0x22dc57,_0x5aeaee){rpc['createSquareReport'](_0x22dc57)[_0x46dc('0x1f')](function(_0x28c73a){if(_0x5aeaee){_0x5aeaee(null,_0x28c73a);}})['catch'](function(_0x1fafc6){if(_0x5aeaee){_0x5aeaee(null,_0x1fafc6);}});}function setChannelVariables(_0x1fe983){for(var _0x5b1135 in _0x1fe983){if(_0x1fe983[_0x46dc('0x20')](_0x5b1135)){if(_0x5b1135[_0x46dc('0x21')](_0x46dc('0x22'))===0x0){_0x1fe983[_0x5b1135['substring'](0x4)]=_0x1fe983[_0x5b1135];delete _0x1fe983[_0x5b1135];}}}}function agiHandler(_0x73d731){logger[_0x46dc('0x23')](_0x46dc('0x24'),JSON['stringify'](_0x73d731,null,0x2));logger['info'](util[_0x46dc('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x73d731[_0x46dc('0x18')],_0x73d731['calleridname'],_0x73d731[_0x46dc('0x1a')],_0x73d731[_0x46dc('0x1e')],_0x73d731[_0x46dc('0x1b')]));_0x73d731['on'](_0x46dc('0x9'),errorHandler);_0x73d731['on'](_0x46dc('0x25'),closeHandler);_0x73d731['on'](_0x46dc('0x26'),timeoutHandler);_0x73d731['evtHangup']=![];_0x73d731['on'](_0x46dc('0x27'),hangupHandler);var _0x2ea6ca=_[_0x46dc('0x28')](projects,[_0x46dc('0x14'),_0x73d731['arg_1']]);if(!_0x2ea6ca)return Project['handleNotFound'](_0x73d731);if(!_0x2ea6ca[_0x46dc('0x29')])return Project[_0x46dc('0x2a')](_0x73d731);return Project['initialize'](_0x2ea6ca,_0x73d731);}function main(){var _0x5f30e7;return utilLicense[_0x46dc('0x2b')]()[_0x46dc('0x1f')](function(_0x51c71b){if(!_0x51c71b)return;if(_0x51c71b[_0x46dc('0x2c')]){if(_0x51c71b[_0x46dc('0x2d')]&&_0x51c71b[_0x46dc('0x2d')]>0x0){logger['info'](util[_0x46dc('0x12')]('[LICENSE]\x20CHANNELS:\x20%s',_0x51c71b[_0x46dc('0x2d')]));_0x5f30e7=_0x51c71b[_0x46dc('0x2d')];}else{logger['info'](_0x46dc('0x2e'));}}else{logger[_0x46dc('0x11')](_0x46dc('0x2f'));_0x5f30e7=-0x1;}})[_0x46dc('0x1f')](function(){return Project[_0x46dc('0x30')]();})[_0x46dc('0x1f')](function(_0x4025e2){projects=_0x4025e2;return;})['catch'](function(_0x34d692){logger[_0x46dc('0x9')](_0x46dc('0x31'),_0x34d692[_0x46dc('0xd')]);})[_0x46dc('0x32')](function(){var _0x5ec976=require(_0x46dc('0x33'))(config[_0x46dc('0x2')]['port'],config['agi']['ip'],_0x5f30e7);_0x5ec976['on']('error',errorHandler);_0x5ec976['on']('listening',listeningHandler);_0x5ec976['on'](_0x46dc('0x34'),connectionHandler);_0x5ec976['on'](_0x46dc('0x25'),closeHandler);});}main();
\ No newline at end of file
index d693034..5660018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8623=['client','http','request','then','error','message','result','catch','bluebird'];(function(_0x3af8ce,_0xa1dc21){var _0x354395=function(_0x44b27c){while(--_0x44b27c){_0x3af8ce['push'](_0x3af8ce['shift']());}};_0x354395(++_0xa1dc21);}(_0x8623,0xc5));var _0x3862=function(_0x4be73d,_0x5b6abd){_0x4be73d=_0x4be73d-0x0;var _0x4da6cd=_0x8623[_0x4be73d];return _0x4da6cd;};'use strict';var BPromise=require(_0x3862('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x3862('0x1')][_0x3862('0x2')]({'port':0x232b});function request(_0xa566dd,_0x10bad7){return new BPromise(function(_0x5b8698,_0x49c7aa){return client[_0x3862('0x3')](_0xa566dd,_0x10bad7)[_0x3862('0x4')](function(_0xfc7b2f){if(_0xfc7b2f[_0x3862('0x5')]){return _0x49c7aa(_0xfc7b2f[_0x3862('0x5')][_0x3862('0x6')]);}else{return _0x5b8698(_0xfc7b2f[_0x3862('0x7')]);}})[_0x3862('0x8')](function(_0x4841d4){return _0x49c7aa(_0x4841d4);});});}exports['sendMailMessage']=function(_0x45dbcf,_0x2c5aed){return request('SendMail',{'account':_0x45dbcf,'message':_0x2c5aed});};
\ No newline at end of file
+var _0xaddd=['then','error','sendMailMessage','SendMail','bluebird','client'];(function(_0x3fcc80,_0x3afb67){var _0x114c48=function(_0x170396){while(--_0x170396){_0x3fcc80['push'](_0x3fcc80['shift']());}};_0x114c48(++_0x3afb67);}(_0xaddd,0x142));var _0xdadd=function(_0x3ee9b2,_0xa090bb){_0x3ee9b2=_0x3ee9b2-0x0;var _0x51ac3e=_0xaddd[_0x3ee9b2];return _0x51ac3e;};'use strict';var BPromise=require(_0xdadd('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xdadd('0x1')]['http']({'port':0x232b});function request(_0x42c911,_0x92f032){return new BPromise(function(_0x252afa,_0x3428c8){return client['request'](_0x42c911,_0x92f032)[_0xdadd('0x2')](function(_0x4d3e56){if(_0x4d3e56[_0xdadd('0x3')]){return _0x3428c8(_0x4d3e56[_0xdadd('0x3')]['message']);}else{return _0x252afa(_0x4d3e56['result']);}})['catch'](function(_0x2c3528){return _0x3428c8(_0x2c3528);});});}exports[_0xdadd('0x4')]=function(_0x4ff930,_0x231b71){return request(_0xdadd('0x5'),{'account':_0x4ff930,'message':_0x231b71});};
\ No newline at end of file
index 9f26448..479aaaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7dd=['exports','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./vertices','getSquareProjects','catch','Unable\x20to\x20download\x20CallySquare\x20projects','hasOwnProperty','retry','addVertex','omit','mxCell','isArray','length','target','source','value','mxGraphModel','root','inspect','start','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','traverseBFS','clear','debug','gotoc','info','context','extension','priority','agicommand','response','code','result','evtHangup','toString','error','agicommand\x20not\x20found','stack','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','uniqueid','vertex','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published'];(function(_0x22198c,_0x3b3a85){var _0x376390=function(_0x442532){while(--_0x442532){_0x22198c['push'](_0x22198c['shift']());}};_0x376390(++_0x3b3a85);}(_0xe7dd,0xbe));var _0xde7d=function(_0x326b0f,_0x2eaa50){_0x326b0f=_0x326b0f-0x0;var _0x16ca4c=_0xe7dd[_0x326b0f];return _0x16ca4c;};'use strict';var _=require(_0xde7d('0x0'));var moment=require(_0xde7d('0x1'));var parser=require(_0xde7d('0x2'));var util=require(_0xde7d('0x3'));var logger=require(_0xde7d('0x4'))(_0xde7d('0x5'));var rpc=require(_0xde7d('0x6'));var mailRpc=require(_0xde7d('0x7'));var Graph=require('./graph');var Vertices=require(_0xde7d('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xde7d('0x9')]()[_0xde7d('0xa')](function(_0x2ea2f9){logger['error'](_0xde7d('0xb'),_0x2ea2f9['stack']);return[];});}function addVertex(_0xd3892f,_0x23e8e5,_0x2a92c5){_0x23e8e5['agicommand']=_0x2a92c5;if(_0x23e8e5[_0xde7d('0xc')](_0xde7d('0xd'))){_0x23e8e5['maxRetry']=parseInt(_0x23e8e5['retry'],0xa);}_0xd3892f[_0xde7d('0xe')](_[_0xde7d('0xf')](_0x23e8e5,_0xde7d('0x10')));}function initGraph(_0x595b81,_0x3d9d53){var _0x1eab3b=new Graph();for(var _0x255a24 in _0x595b81){if(_0x595b81[_0xde7d('0xc')](_0x255a24)){if(_[_0xde7d('0x11')](_0x595b81[_0x255a24])){for(var _0x521284=0x0;_0x521284<_0x595b81[_0x255a24]['length'];_0x521284+=0x1){addVertex(_0x1eab3b,_0x595b81[_0x255a24][_0x521284],_0x255a24);}}else{addVertex(_0x1eab3b,_0x595b81[_0x255a24],_0x255a24);}}}for(var _0x4e5f06=0x0;_0x4e5f06<_0x3d9d53[_0xde7d('0x12')];_0x4e5f06+=0x1){if(_0x3d9d53[_0x4e5f06]['source']&&_0x3d9d53[_0x4e5f06][_0xde7d('0x13')]){_0x1eab3b['addEdge'](_0x3d9d53[_0x4e5f06][_0xde7d('0x14')],_0x3d9d53[_0x4e5f06]['target'],_0x3d9d53[_0x4e5f06][_0xde7d('0x15')]);}}return _0x1eab3b;}function getRoot(_0x3c2329){return parser['toJson'](_0x3c2329,{'object':!![]})[_0xde7d('0x16')][_0xde7d('0x17')];}function inspect(_0x4fda9d){return util[_0xde7d('0x18')](_0x4fda9d,{'showHidden':![],'depth':null});}function initialize(_0x5f17c3,_0x13eb47){var _0x5cf52a=getRoot(_0x5f17c3['production']);if(!_0x5cf52a||!_0x5cf52a[_0xde7d('0x19')])return;var _0x9fabd4,_0x5bd672,_0x200516;logger['debug'](_0xde7d('0x17'),JSON[_0xde7d('0x1a')](_0x5cf52a,null,0x2));_0x13eb47[_0xde7d('0x1b')]=moment()[_0xde7d('0x1c')](_0xde7d('0x1d'));_0x9fabd4=initGraph(_[_0xde7d('0xf')](_0x5cf52a,_0xde7d('0x10')),_0x5cf52a[_0xde7d('0x10')]);_0x5bd672=new Vertices(_0x13eb47,rpc,mailRpc);logger['info'](util[_0xde7d('0x1c')](_0xde7d('0x1e'),_0x13eb47[_0xde7d('0x1f')],_0x13eb47['calleridname'],_0x13eb47[_0xde7d('0x20')],_0x13eb47[_0xde7d('0x21')],_0x13eb47['uniqueid']));_0x9fabd4[_0xde7d('0x22')](_0x5cf52a[_0xde7d('0x19')]['id'],function(_0x12e50b){try{_0x12e50b=_0x5bd672[_0xde7d('0x23')](_0x12e50b);logger[_0xde7d('0x24')]('vertex',JSON[_0xde7d('0x1a')](_0x12e50b,null,0x2));if(_0x12e50b['agicommand']===_0xde7d('0x25')){logger[_0xde7d('0x26')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x13eb47[_0xde7d('0x27')]=_0x12e50b['context']||_0x13eb47[_0xde7d('0x27')];_0x13eb47['extension']=_0x12e50b[_0xde7d('0x28')];_0x13eb47[_0xde7d('0x29')]=_0x12e50b['priority']?_0x12e50b[_0xde7d('0x29')]-0x1:0x1;return null;}else if(_0x12e50b&&_0x5bd672[_0x12e50b[_0xde7d('0x2a')]]){_0x200516=_0x5bd672[_0x12e50b['agicommand']](_0x12e50b);logger[_0xde7d('0x26')](_0xde7d('0x2b'),JSON[_0xde7d('0x1a')](_0x200516,null,0x2));if(_0x200516&&_0x200516[_0xde7d('0x2c')]===AGI_CODE_SUCCESS&&_0x200516[_0xde7d('0x2d')]!==AGI_RESULT_ERROR&&!_0x13eb47[_0xde7d('0x2e')]){logger['debug'](_0xde7d('0x2b'),inspect(_0x200516));return _['isUndefined'](_0x200516[_0xde7d('0x2d')])?null:_0x200516['result'][_0xde7d('0x2f')]();}else{logger['error']('response',inspect(_0x200516));return null;}}else{logger[_0xde7d('0x30')](_0xde7d('0x31'));return null;}}catch(_0x3604fc){logger[_0xde7d('0x30')](_0x3604fc[_0xde7d('0x32')]);return null;}});if(_0x5cf52a[_0xde7d('0x33')]){logger[_0xde7d('0x26')](util['format'](_0xde7d('0x34'),_0x13eb47[_0xde7d('0x1f')],_0x13eb47[_0xde7d('0x35')],_0x13eb47[_0xde7d('0x20')],_0x13eb47[_0xde7d('0x21')],_0x13eb47[_0xde7d('0x36')]));_0x9fabd4[_0xde7d('0x22')](_0x5cf52a['finally']['id'],function(_0x4ac84a){try{_0x4ac84a=_0x5bd672[_0xde7d('0x23')](_0x4ac84a);logger[_0xde7d('0x24')](_0xde7d('0x37'),JSON[_0xde7d('0x1a')](_0x4ac84a,null,0x2));if(_0x4ac84a&&_0x5bd672[_0x4ac84a['agicommand']]){_0x200516=_0x5bd672[_0x4ac84a[_0xde7d('0x2a')]](_0x4ac84a);if(_0x200516){logger['debug'](_0xde7d('0x2b'),inspect(_0x200516));return _['isUndefined'](_0x200516[_0xde7d('0x2d')])?null:_0x200516['result'][_0xde7d('0x2f')]();}else{logger[_0xde7d('0x30')]('response',inspect(_0x200516));return null;}}else{logger[_0xde7d('0x30')](_0xde7d('0x31'));return null;}}catch(_0x4f0f66){logger[_0xde7d('0x30')](_0x4f0f66['stack']);return null;}});}logger[_0xde7d('0x26')](util[_0xde7d('0x1c')](_0xde7d('0x38'),_0x13eb47[_0xde7d('0x1f')],_0x13eb47[_0xde7d('0x35')],_0x13eb47[_0xde7d('0x20')],_0x13eb47[_0xde7d('0x21')],_0x13eb47[_0xde7d('0x36')]));logger['info'](util['format'](_0xde7d('0x39'),_0x13eb47[_0xde7d('0x27')],_0x13eb47['extension'],parseInt(_0x13eb47[_0xde7d('0x29')],0xa)+0x1));_0x13eb47[_0xde7d('0x3a')](_0x13eb47[_0xde7d('0x27')],_0x13eb47[_0xde7d('0x28')],parseInt(_0x13eb47['priority'],0xa)+0x1);_0x13eb47[_0xde7d('0x3b')]();}function handleNotFound(_0xe8cde5){logger[_0xde7d('0x30')](util[_0xde7d('0x1c')](_0xde7d('0x3c'),_0xe8cde5[_0xde7d('0x1f')]));_0xe8cde5[_0xde7d('0x3a')](_0xe8cde5[_0xde7d('0x27')],_0xe8cde5[_0xde7d('0x28')],parseInt(_0xe8cde5[_0xde7d('0x29')],0xa)+0x1);_0xe8cde5[_0xde7d('0x3b')]();}function handleUnpublished(_0x21476a){logger[_0xde7d('0x30')](util[_0xde7d('0x1c')](_0xde7d('0x3d'),_0x21476a[_0xde7d('0x1f')]));_0x21476a[_0xde7d('0x3a')](_0x21476a[_0xde7d('0x27')],_0x21476a[_0xde7d('0x28')],parseInt(_0x21476a['priority'],0xa)+0x1);_0x21476a[_0xde7d('0x3b')]();}module[_0xde7d('0x3e')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0xd3c4=['priority','agicommand','info','response','code','evtHangup','isUndefined','toString','agicommand\x20not\x20found','stack','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','result','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','Project\x20%s\x20not\x20found','continueAt','Project\x20%s\x20not\x20published','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./vertices','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','hasOwnProperty','retry','maxRetry','addVertex','omit','isArray','length','source','target','addEdge','toJson','root','inspect','production','debug','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','format','arg_1','calleridname','callerid','dnid','uniqueid','traverseBFS','start','clear','context','extension'];(function(_0x27b2b1,_0x23466d){var _0x44640e=function(_0x4e9adc){while(--_0x4e9adc){_0x27b2b1['push'](_0x27b2b1['shift']());}};_0x44640e(++_0x23466d);}(_0xd3c4,0x103));var _0x4d3c=function(_0xf27684,_0x15c7a9){_0xf27684=_0xf27684-0x0;var _0x3b62cc=_0xd3c4[_0xf27684];return _0x3b62cc;};'use strict';var _=require('lodash');var moment=require(_0x4d3c('0x0'));var parser=require(_0x4d3c('0x1'));var util=require(_0x4d3c('0x2'));var logger=require(_0x4d3c('0x3'))(_0x4d3c('0x4'));var rpc=require(_0x4d3c('0x5'));var mailRpc=require(_0x4d3c('0x6'));var Graph=require('./graph');var Vertices=require(_0x4d3c('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()[_0x4d3c('0x8')](function(_0xf6478f){logger[_0x4d3c('0x9')](_0x4d3c('0xa'),_0xf6478f['stack']);return[];});}function addVertex(_0x1ad511,_0x2ed636,_0x110a34){_0x2ed636['agicommand']=_0x110a34;if(_0x2ed636[_0x4d3c('0xb')](_0x4d3c('0xc'))){_0x2ed636[_0x4d3c('0xd')]=parseInt(_0x2ed636[_0x4d3c('0xc')],0xa);}_0x1ad511[_0x4d3c('0xe')](_[_0x4d3c('0xf')](_0x2ed636,'mxCell'));}function initGraph(_0x57a512,_0x76da95){var _0x3e6a=new Graph();for(var _0x11a034 in _0x57a512){if(_0x57a512[_0x4d3c('0xb')](_0x11a034)){if(_[_0x4d3c('0x10')](_0x57a512[_0x11a034])){for(var _0x145fcd=0x0;_0x145fcd<_0x57a512[_0x11a034][_0x4d3c('0x11')];_0x145fcd+=0x1){addVertex(_0x3e6a,_0x57a512[_0x11a034][_0x145fcd],_0x11a034);}}else{addVertex(_0x3e6a,_0x57a512[_0x11a034],_0x11a034);}}}for(var _0x276bd3=0x0;_0x276bd3<_0x76da95[_0x4d3c('0x11')];_0x276bd3+=0x1){if(_0x76da95[_0x276bd3][_0x4d3c('0x12')]&&_0x76da95[_0x276bd3][_0x4d3c('0x13')]){_0x3e6a[_0x4d3c('0x14')](_0x76da95[_0x276bd3][_0x4d3c('0x12')],_0x76da95[_0x276bd3][_0x4d3c('0x13')],_0x76da95[_0x276bd3]['value']);}}return _0x3e6a;}function getRoot(_0xed67f9){return parser[_0x4d3c('0x15')](_0xed67f9,{'object':!![]})['mxGraphModel'][_0x4d3c('0x16')];}function inspect(_0x4744e0){return util[_0x4d3c('0x17')](_0x4744e0,{'showHidden':![],'depth':null});}function initialize(_0x4af0bd,_0x106696){var _0x5e158c=getRoot(_0x4af0bd[_0x4d3c('0x18')]);if(!_0x5e158c||!_0x5e158c['start'])return;var _0x42e59a,_0x13ab16,_0x1fc631;logger[_0x4d3c('0x19')](_0x4d3c('0x16'),JSON[_0x4d3c('0x1a')](_0x5e158c,null,0x2));_0x106696[_0x4d3c('0x1b')]=moment()['format'](_0x4d3c('0x1c'));_0x42e59a=initGraph(_[_0x4d3c('0xf')](_0x5e158c,_0x4d3c('0x1d')),_0x5e158c[_0x4d3c('0x1d')]);_0x13ab16=new Vertices(_0x106696,rpc,mailRpc);logger['info'](util[_0x4d3c('0x1e')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x106696[_0x4d3c('0x1f')],_0x106696[_0x4d3c('0x20')],_0x106696[_0x4d3c('0x21')],_0x106696[_0x4d3c('0x22')],_0x106696[_0x4d3c('0x23')]));_0x42e59a[_0x4d3c('0x24')](_0x5e158c[_0x4d3c('0x25')]['id'],function(_0x43abbd){try{_0x43abbd=_0x13ab16[_0x4d3c('0x26')](_0x43abbd);logger['debug']('vertex',JSON[_0x4d3c('0x1a')](_0x43abbd,null,0x2));if(_0x43abbd['agicommand']==='gotoc'){logger['info']('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x106696[_0x4d3c('0x27')]=_0x43abbd[_0x4d3c('0x27')]||_0x106696[_0x4d3c('0x27')];_0x106696[_0x4d3c('0x28')]=_0x43abbd['extension'];_0x106696[_0x4d3c('0x29')]=_0x43abbd[_0x4d3c('0x29')]?_0x43abbd[_0x4d3c('0x29')]-0x1:0x1;return null;}else if(_0x43abbd&&_0x13ab16[_0x43abbd['agicommand']]){_0x1fc631=_0x13ab16[_0x43abbd[_0x4d3c('0x2a')]](_0x43abbd);logger[_0x4d3c('0x2b')](_0x4d3c('0x2c'),JSON[_0x4d3c('0x1a')](_0x1fc631,null,0x2));if(_0x1fc631&&_0x1fc631[_0x4d3c('0x2d')]===AGI_CODE_SUCCESS&&_0x1fc631['result']!==AGI_RESULT_ERROR&&!_0x106696[_0x4d3c('0x2e')]){logger[_0x4d3c('0x19')](_0x4d3c('0x2c'),inspect(_0x1fc631));return _[_0x4d3c('0x2f')](_0x1fc631['result'])?null:_0x1fc631['result'][_0x4d3c('0x30')]();}else{logger[_0x4d3c('0x9')](_0x4d3c('0x2c'),inspect(_0x1fc631));return null;}}else{logger[_0x4d3c('0x9')](_0x4d3c('0x31'));return null;}}catch(_0x72ba7d){logger[_0x4d3c('0x9')](_0x72ba7d[_0x4d3c('0x32')]);return null;}});if(_0x5e158c[_0x4d3c('0x33')]){logger[_0x4d3c('0x2b')](util[_0x4d3c('0x1e')](_0x4d3c('0x34'),_0x106696['arg_1'],_0x106696[_0x4d3c('0x20')],_0x106696[_0x4d3c('0x21')],_0x106696['dnid'],_0x106696[_0x4d3c('0x23')]));_0x42e59a[_0x4d3c('0x24')](_0x5e158c[_0x4d3c('0x33')]['id'],function(_0x4b9d58){try{_0x4b9d58=_0x13ab16[_0x4d3c('0x26')](_0x4b9d58);logger[_0x4d3c('0x19')](_0x4d3c('0x35'),JSON[_0x4d3c('0x1a')](_0x4b9d58,null,0x2));if(_0x4b9d58&&_0x13ab16[_0x4b9d58[_0x4d3c('0x2a')]]){_0x1fc631=_0x13ab16[_0x4b9d58[_0x4d3c('0x2a')]](_0x4b9d58);if(_0x1fc631){logger['debug'](_0x4d3c('0x2c'),inspect(_0x1fc631));return _[_0x4d3c('0x2f')](_0x1fc631[_0x4d3c('0x36')])?null:_0x1fc631[_0x4d3c('0x36')]['toString']();}else{logger[_0x4d3c('0x9')]('response',inspect(_0x1fc631));return null;}}else{logger[_0x4d3c('0x9')](_0x4d3c('0x31'));return null;}}catch(_0x58660b){logger[_0x4d3c('0x9')](_0x58660b[_0x4d3c('0x32')]);return null;}});}logger[_0x4d3c('0x2b')](util[_0x4d3c('0x1e')](_0x4d3c('0x37'),_0x106696[_0x4d3c('0x1f')],_0x106696[_0x4d3c('0x20')],_0x106696[_0x4d3c('0x21')],_0x106696[_0x4d3c('0x22')],_0x106696['uniqueid']));logger['info'](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x106696['context'],_0x106696[_0x4d3c('0x28')],parseInt(_0x106696[_0x4d3c('0x29')],0xa)+0x1));_0x106696['continueAt'](_0x106696[_0x4d3c('0x27')],_0x106696['extension'],parseInt(_0x106696[_0x4d3c('0x29')],0xa)+0x1);_0x106696[_0x4d3c('0x38')]();}function handleNotFound(_0x590467){logger['error'](util['format'](_0x4d3c('0x39'),_0x590467[_0x4d3c('0x1f')]));_0x590467[_0x4d3c('0x3a')](_0x590467[_0x4d3c('0x27')],_0x590467[_0x4d3c('0x28')],parseInt(_0x590467[_0x4d3c('0x29')],0xa)+0x1);_0x590467[_0x4d3c('0x38')]();}function handleUnpublished(_0x24699a){logger[_0x4d3c('0x9')](util['format'](_0x4d3c('0x3b'),_0x24699a[_0x4d3c('0x1f')]));_0x24699a['continueAt'](_0x24699a[_0x4d3c('0x27')],_0x24699a[_0x4d3c('0x28')],parseInt(_0x24699a['priority'],0xa)+0x1);_0x24699a['close']();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index b86c4b0..da85cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8de=['Transform','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice','trim','emit','line','exports','stream'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xc8de,0x167));var _0xec8d=function(_0x8a8da7,_0xcea338){_0x8a8da7=_0x8a8da7-0x0;var _0x307e57=_0xc8de[_0x8a8da7];return _0x307e57;};'use strict';var util=require('util');var Transform=require(_0xec8d('0x0'))[_0xec8d('0x1')];function AGIReply(_0x4c5372){Transform['call'](this,_0x4c5372);this[_0xec8d('0x2')]='';this[_0xec8d('0x3')]=![];}util[_0xec8d('0x4')](AGIReply,Transform);AGIReply[_0xec8d('0x5')][_0xec8d('0x6')]=function(_0x2fffe7,_0x151e3f,_0x582d8e){var _0x33a60d='\x0a',_0x55e36c=['\x0a\x0a',_0xec8d('0x7')],_0x11308b=-0x1,_0x596921=-0x1,_0x37de69='',_0x597c70=0x0,_0x37ec77='',_0x53b6dd='';this[_0xec8d('0x2')]+=_0x2fffe7[_0xec8d('0x8')]();_0x37ec77=this[_0xec8d('0x2')];if(!this[_0xec8d('0x3')]){_0x597c70=0x0;while(_0x55e36c[_0x597c70]){while((_0x596921=_0x37ec77[_0xec8d('0x9')](_0x55e36c[_0x597c70]))!=-0x1){_0x37de69=_0x55e36c[_0x597c70];_0x53b6dd=_0x37ec77[_0xec8d('0xa')](0x0,_0x596921);_0x37ec77=_0x37ec77[_0xec8d('0xa')](_0x596921+_0x37de69[_0xec8d('0xb')]);var _0x204876=_0x53b6dd[_0xec8d('0xc')](_0x33a60d),_0x47e728=0x0,_0x7f7829={},_0x3ce9f6='',_0x194149='',_0x3a5d6f=-0x1;while(_0x204876[_0x47e728]){_0x3a5d6f=_0x204876[_0x47e728][_0xec8d('0x9')](':');if(_0x3a5d6f!=-0x1){_0x3ce9f6=_0x204876[_0x47e728][_0xec8d('0xd')](0x0,_0x3a5d6f)[_0xec8d('0xe')]();_0x194149=_0x204876[_0x47e728][_0xec8d('0xd')](_0x3a5d6f+0x1)[_0xec8d('0xe')]();if(_0x3ce9f6[_0xec8d('0xb')]>0x0){_0x7f7829[_0x3ce9f6]=_0x194149;}}else{}_0x47e728++;}this[_0xec8d('0xf')]('headers',_0x7f7829);this[_0xec8d('0x3')]=!![];}_0x597c70++;}this[_0xec8d('0x2')]=_0x37ec77;}else{while((_0x11308b=_0x37ec77[_0xec8d('0x9')](_0x33a60d))!=-0x1){_0x53b6dd=_0x37ec77[_0xec8d('0xa')](0x0,_0x11308b);this['emit'](_0xec8d('0x10'),_0x53b6dd);_0x37ec77=_0x37ec77['substring'](_0x11308b+_0x33a60d['length']);}this[_0xec8d('0x2')]=_0x37ec77;}_0x582d8e();};module[_0xec8d('0x11')]=AGIReply;
\ No newline at end of file
+var _0x90db=['_transform','_localBuffer','toString','indexOf','substring','length','split','slice','trim','headers','_inBody','emit','line','stream','Transform'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x90db,0x1c0));var _0xb90d=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x90db[_0x220dbb];return _0x2b77de;};'use strict';var util=require('util');var Transform=require(_0xb90d('0x0'))[_0xb90d('0x1')];function AGIReply(_0x102d9e){Transform['call'](this,_0x102d9e);this['_localBuffer']='';this['_inBody']=![];}util['inherits'](AGIReply,Transform);AGIReply['prototype'][_0xb90d('0x2')]=function(_0x29a2e7,_0x95ea24,_0x380149){var _0x1e7a52='\x0a',_0x2d8398=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x180781=-0x1,_0x126e17=-0x1,_0x2ef5e6='',_0x108b88=0x0,_0x261cf6='',_0x2b9103='';this[_0xb90d('0x3')]+=_0x29a2e7[_0xb90d('0x4')]();_0x261cf6=this[_0xb90d('0x3')];if(!this['_inBody']){_0x108b88=0x0;while(_0x2d8398[_0x108b88]){while((_0x126e17=_0x261cf6[_0xb90d('0x5')](_0x2d8398[_0x108b88]))!=-0x1){_0x2ef5e6=_0x2d8398[_0x108b88];_0x2b9103=_0x261cf6[_0xb90d('0x6')](0x0,_0x126e17);_0x261cf6=_0x261cf6[_0xb90d('0x6')](_0x126e17+_0x2ef5e6[_0xb90d('0x7')]);var _0x787db4=_0x2b9103[_0xb90d('0x8')](_0x1e7a52),_0x54a919=0x0,_0x39caa8={},_0x5bc2b9='',_0xe1b1d6='',_0x1d5eed=-0x1;while(_0x787db4[_0x54a919]){_0x1d5eed=_0x787db4[_0x54a919][_0xb90d('0x5')](':');if(_0x1d5eed!=-0x1){_0x5bc2b9=_0x787db4[_0x54a919][_0xb90d('0x9')](0x0,_0x1d5eed)[_0xb90d('0xa')]();_0xe1b1d6=_0x787db4[_0x54a919][_0xb90d('0x9')](_0x1d5eed+0x1)['trim']();if(_0x5bc2b9[_0xb90d('0x7')]>0x0){_0x39caa8[_0x5bc2b9]=_0xe1b1d6;}}else{}_0x54a919++;}this['emit'](_0xb90d('0xb'),_0x39caa8);this[_0xb90d('0xc')]=!![];}_0x108b88++;}this['_localBuffer']=_0x261cf6;}else{while((_0x180781=_0x261cf6[_0xb90d('0x5')](_0x1e7a52))!=-0x1){_0x2b9103=_0x261cf6['substring'](0x0,_0x180781);this[_0xb90d('0xd')](_0xb90d('0xe'),_0x2b9103);_0x261cf6=_0x261cf6[_0xb90d('0x6')](_0x180781+_0x1e7a52[_0xb90d('0x7')]);}this[_0xb90d('0x3')]=_0x261cf6;}_0x380149();};module['exports']=AGIReply;
\ No newline at end of file
index 0c69338..50fc328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd5=['createSquareRecording','CreateSquareRecording','ShowCmHopper','ListId','CreateCmContact','ShowPause','agentLogin','LoginUser','PauseUser','agentUnpause','LogoutUser','lodash','jayson/promise','client','http','request','then','error','message','result','getSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','CloudProvider','email','ShowVoiceQueue','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getContactByPhone','GetContactByPhone','phone','getIntervalById','ShowInterval','Interval','Intervals','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x37a628,_0x29d7b3){var _0x5dad46=function(_0x3a388d){while(--_0x3a388d){_0x37a628['push'](_0x37a628['shift']());}};_0x5dad46(++_0x29d7b3);}(_0x3dd5,0x73));var _0x53dd=function(_0x5f2e3f,_0x3dfd68){_0x5f2e3f=_0x5f2e3f-0x0;var _0x1225b9=_0x3dd5[_0x5f2e3f];return _0x1225b9;};'use strict';var _=require(_0x53dd('0x0'));var moment=require('moment');var jayson=require(_0x53dd('0x1'));var client=jayson[_0x53dd('0x2')][_0x53dd('0x3')]({'port':0x2329});function request(_0x3b6401,_0xfa7c49){return new Promise(function(_0x455417,_0x2ac886){return client[_0x53dd('0x4')](_0x3b6401,_0xfa7c49)[_0x53dd('0x5')](function(_0x4a7e23){if(_0x4a7e23[_0x53dd('0x6')]){return _0x2ac886(_0x4a7e23[_0x53dd('0x6')][_0x53dd('0x7')]);}else{return _0x455417(_0x4a7e23[_0x53dd('0x8')]);}})['catch'](function(_0x561ded){return _0x2ac886(_0x561ded);});});}exports[_0x53dd('0x9')]=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id',_0x53dd('0xa'),_0x53dd('0xb')]}});};exports[_0x53dd('0xc')]=function(_0x41665c){return request(_0x53dd('0xd'),{'options':{'raw':![],'where':{'name':_0x41665c},'attributes':['production']}});};exports[_0x53dd('0xe')]=function(_0xbb9a6b){return request(_0x53dd('0xf'),{'options':{'raw':![],'where':{'id':_0xbb9a6b},'include':[{'model':_0x53dd('0x10'),'as':'Smtp','include':[{'model':'CloudProvider','as':_0x53dd('0x11')}]}],'attributes':['id',_0x53dd('0xa'),_0x53dd('0x12')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0x3fc986){return request(_0x53dd('0xd'),{'options':{'where':{'id':_0x3fc986},'attributes':[_0x53dd('0xa')]}});};exports['getVoiceQueueById']=function(_0x130671){return request(_0x53dd('0x13'),{'options':{'where':{'id':_0x130671},'attributes':[_0x53dd('0xa')]}});};exports['getVariableById']=function(_0x593a36){return request('ShowVariable',{'options':{'where':{'id':_0x593a36},'attributes':['name']}});};exports[_0x53dd('0x14')]=function(_0x4449e1){return request(_0x53dd('0x15'),{'options':{'where':{'id':_0x4449e1},'attributes':[_0x53dd('0x16')]}});};exports[_0x53dd('0x17')]=function(_0x4a7637){return request('ShowUser',{'options':{'where':{'id':_0x4a7637},'attributes':[_0x53dd('0xa')]}});};exports[_0x53dd('0x18')]=function(_0x350d03){return request(_0x53dd('0x19'),{'options':{'where':{'phone':_0x350d03[_0x53dd('0x1a')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x5d0e96){return request('ShowTrunk',{'options':{'where':{'id':_0x5d0e96},'attributes':['name']}});};exports['getSoundById']=function(_0x25dbb2){return request('ShowSound',{'options':{'where':{'id':_0x25dbb2},'attributes':['save_name']}});};exports[_0x53dd('0x1b')]=function(_0x1dcc36){return request(_0x53dd('0x1c'),{'options':{'raw':![],'where':{'id':_0x1dcc36},'include':[{'model':_0x53dd('0x1d'),'as':_0x53dd('0x1e')}]}});};exports['getSmsAccountById']=function(_0x340da7){return request('ShowSmsAccount',{'options':{'where':{'id':_0x340da7},'attributes':['id',_0x53dd('0xa')]}});};exports[_0x53dd('0x1f')]=function(_0x534ce0){return request(_0x53dd('0x20'),{'body':_0x534ce0});};exports[_0x53dd('0x21')]=function(_0x58c068){return request(_0x53dd('0x22'),{'body':_0x58c068});};exports['createSquareReport']=function(_0x3ca3e1){return request(_0x53dd('0x23'),{'body':_[_0x53dd('0x24')](_0x3ca3e1,{'project_name':_0x3ca3e1[_0x53dd('0x25')],'prev_project_name':_0x3ca3e1[_0x53dd('0x26')]||'','is_subproject':_0x3ca3e1[_0x53dd('0x26')]?!![]:![],'leaveAt':moment()[_0x53dd('0x27')](_0x53dd('0x28'))})});};exports[_0x53dd('0x29')]=function(_0x895636){return request(_0x53dd('0x2a'),{'body':_0x895636});};exports['createSquareMessage']=function(_0x17d01e){return request('CreateSquareMessage',{'body':_0x17d01e});};exports['createCmContact']=function(_0xdf4e69){return request(_0x53dd('0x2b'),{'options':{'raw':![],'where':{'phone':_0xdf4e69['phone'],'ListId':_0xdf4e69[_0x53dd('0x2c')]}}})['then'](function(_0x3b2f31){if(_0x3b2f31){return _0x3b2f31;}return request(_0x53dd('0x2d'),{'body':_0xdf4e69});});};exports['getPauseById']=function(_0x293957){return request(_0x53dd('0x2e'),{'options':{'where':{'id':_0x293957},'attributes':['name']}});};exports[_0x53dd('0x2f')]=function(_0x4ebe0a,_0x2a775c){return request(_0x53dd('0x30'),{'body':{'interface':_0x2a775c},'options':{'where':_0x4ebe0a}});};exports['agentPause']=function(_0x325216,_0x286533,_0x8d0f38){return request(_0x53dd('0x31'),{'body':{'type':_0x286533,'uniqueid':_0x8d0f38},'options':{'where':_0x325216}});};exports[_0x53dd('0x32')]=function(_0x2517f1){return request('UnpauseUser',{'body':{},'options':{'where':_0x2517f1}});};exports['agentLogout']=function(_0x1a82ed){return request(_0x53dd('0x33'),{'body':{},'options':{'where':_0x1a82ed}});};
\ No newline at end of file
+var _0x05b0=['name','ShowMailAccount','Smtp','CloudProvider','email','getSquareProjectById','ShowVariable','getSquareOdbcById','dsn','getUserById','getContactByPhone','GetContactByPhone','phone','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','ShowSmsAccount','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','getPauseById','agentLogin','agentPause','PauseUser','UnpauseUser','agentLogout','jayson/promise','client','request','error','message','result','catch','GetSquareProjects'];(function(_0x1ff4f1,_0x4b0c8a){var _0x5db2e5=function(_0x1f50e5){while(--_0x1f50e5){_0x1ff4f1['push'](_0x1ff4f1['shift']());}};_0x5db2e5(++_0x4b0c8a);}(_0x05b0,0x188));var _0x005b=function(_0x375eb9,_0x4c0784){_0x375eb9=_0x375eb9-0x0;var _0x76368c=_0x05b0[_0x375eb9];return _0x76368c;};'use strict';var _=require('lodash');var moment=require('moment');var jayson=require(_0x005b('0x0'));var client=jayson[_0x005b('0x1')]['http']({'port':0x2329});function request(_0xbc782b,_0x2f5c09){return new Promise(function(_0x4a76d7,_0x342d08){return client[_0x005b('0x2')](_0xbc782b,_0x2f5c09)['then'](function(_0x3117ec){if(_0x3117ec[_0x005b('0x3')]){return _0x342d08(_0x3117ec[_0x005b('0x3')][_0x005b('0x4')]);}else{return _0x4a76d7(_0x3117ec[_0x005b('0x5')]);}})[_0x005b('0x6')](function(_0x263bc9){return _0x342d08(_0x263bc9);});});}exports['getSquareProjects']=function(){return request(_0x005b('0x7'),{'options':{'raw':![],'attributes':['id',_0x005b('0x8'),'production']}});};exports['getSquareProject']=function(_0x451641){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x451641},'attributes':['production']}});};exports['getMailAccountById']=function(_0x3474b2){return request(_0x005b('0x9'),{'options':{'raw':![],'where':{'id':_0x3474b2},'include':[{'model':'MailServerOut','as':_0x005b('0xa'),'include':[{'model':_0x005b('0xb'),'as':_0x005b('0xb')}]}],'attributes':['id',_0x005b('0x8'),_0x005b('0xc')],'smtp':!![]}});};exports[_0x005b('0xd')]=function(_0x170ebc){return request('ShowSquareProject',{'options':{'where':{'id':_0x170ebc},'attributes':['name']}});};exports['getVoiceQueueById']=function(_0x309c8f){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x309c8f},'attributes':[_0x005b('0x8')]}});};exports['getVariableById']=function(_0x1c8eed){return request(_0x005b('0xe'),{'options':{'where':{'id':_0x1c8eed},'attributes':[_0x005b('0x8')]}});};exports[_0x005b('0xf')]=function(_0x337ca1){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x337ca1},'attributes':[_0x005b('0x10')]}});};exports[_0x005b('0x11')]=function(_0xf3cf84){return request('ShowUser',{'options':{'where':{'id':_0xf3cf84},'attributes':[_0x005b('0x8')]}});};exports[_0x005b('0x12')]=function(_0x50a6eb){return request(_0x005b('0x13'),{'options':{'where':{'phone':_0x50a6eb[_0x005b('0x14')]},'attributes':['id']}});};exports[_0x005b('0x15')]=function(_0x434874){return request(_0x005b('0x16'),{'options':{'where':{'id':_0x434874},'attributes':['name']}});};exports[_0x005b('0x17')]=function(_0x38cc3b){return request('ShowSound',{'options':{'where':{'id':_0x38cc3b},'attributes':[_0x005b('0x18')]}});};exports[_0x005b('0x19')]=function(_0xd97375){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0xd97375},'include':[{'model':_0x005b('0x1a'),'as':_0x005b('0x1b')}]}});};exports[_0x005b('0x1c')]=function(_0x3521c9){return request(_0x005b('0x1d'),{'options':{'where':{'id':_0x3521c9},'attributes':['id',_0x005b('0x8')]}});};exports['createSmsMessage']=function(_0x322229){return request(_0x005b('0x1e'),{'body':_0x322229});};exports[_0x005b('0x1f')]=function(_0x5ac4cc){return request(_0x005b('0x20'),{'body':_0x5ac4cc});};exports['createSquareReport']=function(_0x24d348){return request('CreateSquareReport',{'body':_['merge'](_0x24d348,{'project_name':_0x24d348[_0x005b('0x21')],'prev_project_name':_0x24d348[_0x005b('0x22')]||'','is_subproject':_0x24d348[_0x005b('0x22')]?!![]:![],'leaveAt':moment()[_0x005b('0x23')](_0x005b('0x24'))})});};exports[_0x005b('0x25')]=function(_0x3d4a1c){return request(_0x005b('0x26'),{'body':_0x3d4a1c});};exports['createSquareMessage']=function(_0x4403dc){return request(_0x005b('0x27'),{'body':_0x4403dc});};exports[_0x005b('0x28')]=function(_0x13e834){return request(_0x005b('0x29'),{'options':{'raw':![],'where':{'phone':_0x13e834[_0x005b('0x14')],'ListId':_0x13e834[_0x005b('0x2a')]}}})['then'](function(_0xaf7c71){if(_0xaf7c71){return _0xaf7c71;}return request(_0x005b('0x2b'),{'body':_0x13e834});});};exports[_0x005b('0x2c')]=function(_0x3b7524){return request('ShowPause',{'options':{'where':{'id':_0x3b7524},'attributes':['name']}});};exports[_0x005b('0x2d')]=function(_0x1c580f,_0x59be70){return request('LoginUser',{'body':{'interface':_0x59be70},'options':{'where':_0x1c580f}});};exports[_0x005b('0x2e')]=function(_0x5b555f,_0x1e5a5c,_0x1466ea){return request(_0x005b('0x2f'),{'body':{'type':_0x1e5a5c,'uniqueid':_0x1466ea},'options':{'where':_0x5b555f}});};exports['agentUnpause']=function(_0x5aa45d){return request(_0x005b('0x30'),{'body':{},'options':{'where':_0x5aa45d}});};exports[_0x005b('0x31')]=function(_0x1e2f20){return request('LogoutUser',{'body':{},'options':{'where':_0x1e2f20}});};
\ No newline at end of file
index f4e58d9..d5b5475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b52=['exports','./polly','./lex'];(function(_0x1083f0,_0x190add){var _0x3e671f=function(_0x53d219){while(--_0x53d219){_0x1083f0['push'](_0x1083f0['shift']());}};_0x3e671f(++_0x190add);}(_0x8b52,0x151));var _0x28b5=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x8b52[_0x1d1779];return _0x2377e9;};var polly=require(_0x28b5('0x0'));var lex=require(_0x28b5('0x1'));module[_0x28b5('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x1c75=['./polly'];(function(_0x5a3785,_0x2de636){var _0x4d058a=function(_0x2852fc){while(--_0x2852fc){_0x5a3785['push'](_0x5a3785['shift']());}};_0x4d058a(++_0x2de636);}(_0x1c75,0xce));var _0x51c7=function(_0x397d61,_0x1f2002){_0x397d61=_0x397d61-0x0;var _0x270833=_0x1c75[_0x397d61];return _0x270833;};var polly=require(_0x51c7('0x0'));var lex=require('./lex');module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index abcbc85..789eb5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var lex=require('./lib/api');module['exports']=function(_0x1ffbbf,_0x18bf2d,_0x26844b,_0x1ba0bb,_0x455700,_0x2ad237){return lex(_0x1ffbbf,_0x18bf2d,_0x26844b,_0x1ba0bb,_0x455700,_0x2ad237);};
\ No newline at end of file
+var _0xf4eb=['./lib/api'];(function(_0x38854e,_0x23cbc9){var _0x3f8415=function(_0x4e493e){while(--_0x4e493e){_0x38854e['push'](_0x38854e['shift']());}};_0x3f8415(++_0x23cbc9);}(_0xf4eb,0xec));var _0xbf4e=function(_0x2dc3e3,_0x265b07){_0x2dc3e3=_0x2dc3e3-0x0;var _0x5aa471=_0xf4eb[_0x2dc3e3];return _0x5aa471;};'use strict';var lex=require(_0xbf4e('0x0'));module['exports']=function(_0x50f2fc,_0x479210,_0x5ed5b9,_0xbbbf01,_0x49d80e,_0x4e7fa7){return lex(_0x50f2fc,_0x479210,_0x5ed5b9,_0xbbbf01,_0x49d80e,_0x4e7fa7);};
\ No newline at end of file
index ffb3d49..d806ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x47228b,_0x22c939){var _0x3c1d9b=function(_0xaf1d15){while(--_0xaf1d15){_0x47228b['push'](_0x47228b['shift']());}};_0x3c1d9b(++_0x22c939);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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(_0xd9e93a,_0x1d9aba){var _0x351cea=function(_0x4e40bc){while(--_0x4e40bc){_0xd9e93a['push'](_0xd9e93a['shift']());}};_0x351cea(++_0x1d9aba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 fd1f2d4..7a06e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe3=['./lib/api','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcfe3,0x12c));var _0x3cfe=function(_0x392dc2,_0x47c3f3){_0x392dc2=_0x392dc2-0x0;var _0x14150f=_0xcfe3[_0x392dc2];return _0x14150f;};'use strict';var polly=require(_0x3cfe('0x0'));module[_0x3cfe('0x1')]=function(_0x4fa527,_0xda4570,_0x47c504,_0x4f131d,_0xfa9220,_0x39cb9c,_0x552246){return polly(_0x4fa527,_0xda4570,_0x47c504,_0x4f131d,_0xfa9220,_0x39cb9c,_0x552246);};
\ No newline at end of file
+var _0xf963=['exports','./lib/api'];(function(_0x82d389,_0x48b408){var _0x281c01=function(_0x489cd8){while(--_0x489cd8){_0x82d389['push'](_0x82d389['shift']());}};_0x281c01(++_0x48b408);}(_0xf963,0xe3));var _0x3f96=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xf963[_0x1035c1];return _0x308d67;};'use strict';var polly=require(_0x3f96('0x0'));module[_0x3f96('0x1')]=function(_0x4b7304,_0xa7e171,_0x33d023,_0x3ed3c8,_0x296512,_0x2c209f,_0x3e94a9){return polly(_0x4b7304,_0xa7e171,_0x33d023,_0x3ed3c8,_0x296512,_0x2c209f,_0x3e94a9);};
\ No newline at end of file
index 9774eed..efe0c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ba2=['mp3','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6ba2,0x1ae));var _0x26ba=function(_0x42276c,_0x141d47){_0x42276c=_0x42276c-0x0;var _0x1b5009=_0x6ba2[_0x42276c];return _0x1b5009;};'use strict';var fs=require('fs');var path=require(_0x26ba('0x0'));var BPromise=require(_0x26ba('0x1'));var rs=require(_0x26ba('0x2'));var AWS=require(_0x26ba('0x3'));function pollyResult(_0x3a107c,_0x2924d5,_0x350519){return new BPromise(function(_0x37cd20,_0x34f957){_0x3a107c[_0x26ba('0x4')](_0x2924d5,function(_0x1e6fbf,_0x37a569){if(_0x1e6fbf){_0x34f957(_0x1e6fbf);}else if(_0x37a569){if(_0x37a569[_0x26ba('0x5')]instanceof Buffer){fs['writeFile'](_0x350519,_0x37a569[_0x26ba('0x5')],function(_0x4bf492){if(_0x4bf492){_0x34f957(_0x4bf492);}else{_0x37cd20();}});}else{_0x34f957(new Error(_0x26ba('0x6')));}}else{_0x34f957(new Error(_0x26ba('0x7')));}});});}module[_0x26ba('0x8')]=function(_0x3ddc85,_0x3e70bc,_0x1702de,_0x486333,_0x3ae35f,_0xf30311,_0x3ac691){var _0x174c9c=new AWS['Polly']({'accessKeyId':_0x3ddc85,'secretAccessKey':_0x3e70bc,'region':_0x1702de});var _0x15ee30={'Text':_0x3ae35f,'TextType':_0xf30311||_0x26ba('0x9'),'OutputFormat':_0x26ba('0xa'),'VoiceId':_0x486333};return pollyResult(_0x174c9c,_0x15ee30,_0x3ac691);};
\ No newline at end of file
+var _0x8f76=['exports','Polly','text','mp3','bluebird','aws-sdk','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0xfb380d,_0x2f4176){var _0x229e3c=function(_0x48248c){while(--_0x48248c){_0xfb380d['push'](_0xfb380d['shift']());}};_0x229e3c(++_0x2f4176);}(_0x8f76,0xa6));var _0x68f7=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x8f76[_0x92c450];return _0x2a9599;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x68f7('0x0'));var rs=require('randomstring');var AWS=require(_0x68f7('0x1'));function pollyResult(_0x3d3aae,_0x37af2b,_0x5088f3){return new BPromise(function(_0x1b9c91,_0x20da2e){_0x3d3aae['synthesizeSpeech'](_0x37af2b,function(_0x1f0a9e,_0x10a2a2){if(_0x1f0a9e){_0x20da2e(_0x1f0a9e);}else if(_0x10a2a2){if(_0x10a2a2[_0x68f7('0x2')]instanceof Buffer){fs[_0x68f7('0x3')](_0x5088f3,_0x10a2a2[_0x68f7('0x2')],function(_0x2b48d5){if(_0x2b48d5){_0x20da2e(_0x2b48d5);}else{_0x1b9c91();}});}else{_0x20da2e(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x20da2e(new Error(_0x68f7('0x4')));}});});}module[_0x68f7('0x5')]=function(_0x571236,_0x51d2cd,_0xda7fbb,_0x2afa90,_0x52c93d,_0x12ba10,_0xb54fce){var _0x5aed35=new AWS[(_0x68f7('0x6'))]({'accessKeyId':_0x571236,'secretAccessKey':_0x51d2cd,'region':_0xda7fbb});var _0x36d7d6={'Text':_0x52c93d,'TextType':_0x12ba10||_0x68f7('0x7'),'OutputFormat':_0x68f7('0x8'),'VoiceId':_0x2afa90};return pollyResult(_0x5aed35,_0x36d7d6,_0xb54fce);};
\ No newline at end of file
index 2a52835..d589c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eda=['exports','./lib/api'];(function(_0x39e2e9,_0x243d50){var _0x3a0c06=function(_0x508482){while(--_0x508482){_0x39e2e9['push'](_0x39e2e9['shift']());}};_0x3a0c06(++_0x243d50);}(_0x4eda,0x1e1));var _0xa4ed=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4eda[_0x321bb2];return _0x9c12ed;};'use strict';var asr=require(_0xa4ed('0x0'));module[_0xa4ed('0x1')]=function(_0x586f30,_0xda078d,_0x3b94e8,_0x1ef927){return asr(_0x586f30,_0xda078d,_0x3b94e8);};
\ No newline at end of file
+var _0x780e=['exports'];(function(_0x3f9a66,_0x3915a3){var _0x15f2df=function(_0x2dc907){while(--_0x2dc907){_0x3f9a66['push'](_0x3f9a66['shift']());}};_0x15f2df(++_0x3915a3);}(_0x780e,0x171));var _0xe780=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x780e[_0x2641f9];return _0x585741;};'use strict';var asr=require('./lib/api');module[_0xe780('0x0')]=function(_0x2c388e,_0x222354,_0x319b8e,_0x25c9ae){return asr(_0x2c388e,_0x222354,_0x319b8e);};
\ No newline at end of file
index 253010b..a51d31d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89f7=['string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','POST','/v1/speech:recognize?key=','url','bluebird','https://speech.googleapis.com'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x89f7,0x105));var _0x789f=function(_0x1d70db,_0x142b63){_0x1d70db=_0x1d70db-0x0;var _0x3060c6=_0x89f7[_0x1d70db];return _0x3060c6;};'use strict';var url=require(_0x789f('0x0'));var BPromise=require(_0x789f('0x1'));var fs=require('fs');var host=_0x789f('0x2');module['exports']=function(_0x2e09ac,_0x564d48,_0x1c55ac){return new BPromise(function(_0x48fa02,_0xf6ef5d){var _0x14a3e7;if(typeof _0x2e09ac!==_0x789f('0x3')||_0x2e09ac[_0x789f('0x4')]===0x0){return _0xf6ef5d('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x564d48!==_0x789f('0x3')||_0x564d48[_0x789f('0x4')]===0x0){return _0xf6ef5d(_0x789f('0x5'));}if(typeof _0x1c55ac!==_0x789f('0x6')&&(typeof _0x1c55ac!=='string'||_0x1c55ac['length']===0x0)){return _0xf6ef5d(_0x789f('0x7'));}try{_0x14a3e7=fs[_0x789f('0x8')](_0x2e09ac)[_0x789f('0x9')]('base64');}catch(_0x300d27){return _0xf6ef5d(_0x300d27);}return _0x48fa02({'method':_0x789f('0xa'),'uri':host+_0x789f('0xb')+_0x564d48,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':'8000','languageCode':_0x1c55ac},'audio':{'content':_0x14a3e7}},'json':!![]});});};
\ No newline at end of file
+var _0xf021=['undefined','string','readFileSync','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string'];(function(_0x3a980f,_0x49e4d6){var _0x36010f=function(_0x2835e6){while(--_0x2835e6){_0x3a980f['push'](_0x3a980f['shift']());}};_0x36010f(++_0x49e4d6);}(_0xf021,0x18f));var _0x1f02=function(_0x2b3ddc,_0x19a52d){_0x2b3ddc=_0x2b3ddc-0x0;var _0x5a71ec=_0xf021[_0x2b3ddc];return _0x5a71ec;};'use strict';var url=require(_0x1f02('0x0'));var BPromise=require(_0x1f02('0x1'));var fs=require('fs');var host=_0x1f02('0x2');module[_0x1f02('0x3')]=function(_0x30184d,_0x53cc42,_0x1027d2){return new BPromise(function(_0x54cd44,_0x2e8594){var _0x3164f0;if(typeof _0x30184d!=='string'||_0x30184d['length']===0x0){return _0x2e8594(_0x1f02('0x4'));}if(typeof _0x53cc42!=='string'||_0x53cc42[_0x1f02('0x5')]===0x0){return _0x2e8594(_0x1f02('0x6'));}if(typeof _0x1027d2!==_0x1f02('0x7')&&(typeof _0x1027d2!==_0x1f02('0x8')||_0x1027d2[_0x1f02('0x5')]===0x0)){return _0x2e8594('lang\x20should\x20be\x20a\x20string');}try{_0x3164f0=fs[_0x1f02('0x9')](_0x30184d)['toString']('base64');}catch(_0x5412ed){return _0x2e8594(_0x5412ed);}return _0x54cd44({'method':_0x1f02('0xa'),'uri':host+_0x1f02('0xb')+_0x53cc42,'body':{'config':{'encoding':_0x1f02('0xc'),'sampleRateHertz':_0x1f02('0xd'),'languageCode':_0x1027d2},'audio':{'content':_0x3164f0}},'json':!![]});});};
\ No newline at end of file
index 59f9856..9d930ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80f=['./asr'];(function(_0x1344d6,_0x2181e6){var _0xf45b24=function(_0x2d90c1){while(--_0x2d90c1){_0x1344d6['push'](_0x1344d6['shift']());}};_0xf45b24(++_0x2181e6);}(_0xb80f,0x1bb));var _0xfb80=function(_0x461f3b,_0x2589c0){_0x461f3b=_0x461f3b-0x0;var _0x2b6fcb=_0xb80f[_0x461f3b];return _0x2b6fcb;};var asr=require(_0xfb80('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x8c0f=['./asr'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x8c0f,0x1b8));var _0xf8c0=function(_0x40ebef,_0x5000e3){_0x40ebef=_0x40ebef-0x0;var _0x2edc7c=_0x8c0f[_0x40ebef];return _0x2edc7c;};var asr=require(_0xf8c0('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 752a499..ce2c3d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6cf=['777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','MP3','.mp3','from','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','.wav','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','action','actionIncomplete','fulfillment','speech','score','status','code','endConversation','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','boolValue','intent','isFallback','languageCode','queryText','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','sox','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','host','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','close','error','unlink','download\x20error','pipe','end','https:','WHAT_EVER','data','transcode','wav','resolve','tmp','generate','writeFileSync','base64','then','chmodSync'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xe6cf,0x1e9));var _0xfe6c=function(_0x32ff1d,_0x3e29bb){_0x32ff1d=_0x32ff1d-0x0;var _0x50489e=_0xe6cf[_0x32ff1d];return _0x50489e;};'use strict';var apiai=require(_0xfe6c('0x0'));var BPromise=require(_0xfe6c('0x1'));var dialogflow=require(_0xfe6c('0x2'));var fs=require('fs');var http=require(_0xfe6c('0x3'));var https=require(_0xfe6c('0x4'));var md5=require(_0xfe6c('0x5'));var path=require(_0xfe6c('0x6'));var querystring=require(_0xfe6c('0x7'));var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0xfe6c('0x8'));var tts=require(_0xfe6c('0x9'));var urlParse=require(_0xfe6c('0xa'))[_0xfe6c('0xb')];var util=require(_0xfe6c('0xc'));var aws=require('./aws');var google=require(_0xfe6c('0xd'));var sestek=require(_0xfe6c('0xe'));var tilde=require(_0xfe6c('0xf'));var logger=require(_0xfe6c('0x10'))(_0xfe6c('0x11'));var ISPEECH_API=_0xfe6c('0x12');function downloadFile(_0x39972e,_0x47ca9b){return new BPromise(function(_0x201464,_0x454de9){var _0x5e2026=urlParse(_0x39972e);var _0x2ef94b=_0x5e2026[_0xfe6c('0x13')]==='https:'?https:http;var _0x1ca280={'host':_0x5e2026[_0xfe6c('0x14')],'path':_0x5e2026['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x2ef94b[_0xfe6c('0x15')](_0x1ca280,function(_0x4a8a03){if(_0x4a8a03[_0xfe6c('0x16')]!==0xc8){logger['error'](_0xfe6c('0x17')+_0x39972e+_0xfe6c('0x18')+_0x4a8a03[_0xfe6c('0x16')]+'\x20('+_0x4a8a03[_0xfe6c('0x19')]+')');_0x454de9(new Error(_0xfe6c('0x17')+_0x39972e+'\x20failed,\x20status\x20code\x20=\x20'+_0x4a8a03[_0xfe6c('0x16')]+'\x20('+_0x4a8a03[_0xfe6c('0x19')]+')'));return;}var _0xaf834e=fs[_0xfe6c('0x1a')](_0x47ca9b);_0xaf834e['on']('finish',function(){logger[_0xfe6c('0x1b')](_0xfe6c('0x1c'));_0xaf834e[_0xfe6c('0x1d')](_0x201464);});_0xaf834e['on'](_0xfe6c('0x1e'),function(_0x154a56){fs[_0xfe6c('0x1f')](_0x47ca9b);logger[_0xfe6c('0x1e')](_0xfe6c('0x20'),_0x154a56);_0x454de9(_0x154a56);});_0x4a8a03[_0xfe6c('0x21')](_0xaf834e);})['on'](_0xfe6c('0x1e'),function(_0x29ddb1){logger[_0xfe6c('0x1e')](_0x29ddb1);_0x454de9(_0x29ddb1);})[_0xfe6c('0x22')]();});}function uploadFile(_0x4956ea){return new BPromise(function(_0x4ba74e,_0x1a4865){var _0x189e78=urlParse(_0x4956ea);var _0x411dba=_0x189e78[_0xfe6c('0x13')]===_0xfe6c('0x23')?https:http;var _0x1dc986={'host':_0x189e78[_0xfe6c('0x14')],'path':_0x189e78[_0xfe6c('0x6')],'headers':{'user-agent':_0xfe6c('0x24')}};_0x411dba[_0xfe6c('0x15')](_0x1dc986,function(_0x9746bc){if(_0x9746bc['statusCode']!==0xc8){_0x1a4865(new Error('request\x20to\x20'+_0x4956ea+_0xfe6c('0x18')+_0x9746bc['statusCode']+'\x20('+_0x9746bc[_0xfe6c('0x19')]+')'));return;}var _0x534e35='';_0x9746bc['on'](_0xfe6c('0x25'),function(_0x50c0bd){_0x534e35+=_0x50c0bd;});_0x9746bc['on'](_0xfe6c('0x22'),function(){_0x4ba74e(_0x534e35);});})['on']('error',function(_0x22b096){_0x1a4865(_0x22b096);})[_0xfe6c('0x22')]();});}function convertFile(_0x584697,_0x33ba66){return new BPromise(function(_0x49c007,_0x3496e7){var _0x3d8f4f=sox[_0xfe6c('0x26')](_0x584697,_0x33ba66,{'sampleRate':0x1f40,'format':_0xfe6c('0x27'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3d8f4f['on'](_0xfe6c('0x1e'),function(_0x2f7443){logger[_0xfe6c('0x1e')]('error\x20convert',_0x2f7443);_0x3496e7(_0x2f7443);});_0x3d8f4f['on'](_0xfe6c('0x22'),function(){logger[_0xfe6c('0x1b')]('finish\x20to\x20convert');_0x49c007();});_0x3d8f4f['start']();});}function base64Decode(_0x2fb9b1,_0x4f043f){var _0x2da753=path[_0xfe6c('0x28')](__dirname,_0xfe6c('0x29'),rs[_0xfe6c('0x2a')](0x4)+'.wav');fs[_0xfe6c('0x2b')](_0x2da753,_0x2fb9b1,_0xfe6c('0x2c'));return convertFile(_0x2da753,_0x4f043f)[_0xfe6c('0x2d')](function(){try{fs['unlink'](_0x2da753);fs[_0xfe6c('0x2e')](_0x4f043f,_0xfe6c('0x2f'));}catch(_0xf9196f){logger[_0xfe6c('0x1e')](_0xf9196f);}return _0x4f043f['split']('.')[0x0];});}function base64Encode(_0x509568){var _0x1a41fc=fs[_0xfe6c('0x30')](_0x509568);return new Buffer(_0x1a41fc)[_0xfe6c('0x31')]('base64');}exports[_0xfe6c('0x32')]=function(_0x5da8d2,_0x304ea2,_0x108353,_0x33ca78,_0x22e820,_0x452835){var _0x15d9e6,_0x328d2b;var _0x2bd4e3=_0xfe6c('0x33');var _0x42ad1e='?key='+_0x5da8d2;var _0x431065={};if(_0x304ea2===_0xfe6c('0x34')){_0x431065[_0xfe6c('0x35')]={'ssml':_0x108353};}else{_0x431065[_0xfe6c('0x35')]={'text':_0x108353};};_0x431065[_0xfe6c('0x36')]={'languageCode':_0x33ca78,'ssmlGender':_0x22e820};_0x431065[_0xfe6c('0x37')]={'audioEncoding':_0xfe6c('0x38'),'sampleRateHertz':0x1f40};var _0x4efcd3={'url':_0x2bd4e3+'text:synthesize'+_0x42ad1e,'method':'POST','json':!![],'body':_0x431065};return rp(_0x4efcd3)[_0xfe6c('0x2d')](function(_0x3b78ae){return new BPromise(function(_0x49ae4b,_0xd7ccd1){_0x15d9e6=path['resolve'](__dirname,_0xfe6c('0x29'),rs['generate'](0x4)+_0xfe6c('0x39'));var _0x18c754=Buffer[_0xfe6c('0x3a')](_0x3b78ae['audioContent'],'base64');return fs['writeFile'](_0x15d9e6,_0x18c754,function(_0xd9636c){_0xd7ccd1(_0xd9636c);},function(_0x854b80){fs[_0xfe6c('0x2e')](_0x15d9e6,_0xfe6c('0x2f'));_0x49ae4b(_0x854b80);});});})[_0xfe6c('0x2d')](function(_0x2e9f2e){_0x328d2b=path[_0xfe6c('0x28')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x15d9e6,_0x328d2b);})[_0xfe6c('0x2d')](function(){try{fs['unlink'](_0x15d9e6);fs[_0xfe6c('0x2e')](_0x328d2b,_0xfe6c('0x2f'));}catch(_0x69b87){logger['error'](_0x69b87);}logger['info'](_0xfe6c('0x3b'),_0x328d2b[_0xfe6c('0x3c')]('.')[0x0]);return _0x328d2b[_0xfe6c('0x3c')]('.')[0x0];});};exports[_0xfe6c('0x3d')]=function(_0x319bf3,_0x346e64){var _0x1e6537=_0xfe6c('0x3e');var _0x32cd7e,_0x1d544a;var _0x28c41e;var _0x2a1257={'encoding':_0xfe6c('0x3f'),'method':_0xfe6c('0x40'),'timeout':0x2710,'url':_0x1e6537,'headers':{'Content-Type':_0xfe6c('0x41')},'body':_0xfe6c('0x42')+encodeURIComponent(JSON[_0xfe6c('0x43')]([[[_0xfe6c('0x44'),JSON[_0xfe6c('0x43')]([_0x319bf3,_0x346e64||'en',![],_0xfe6c('0x45')]),null,'generic']]]))};return rp(_0x2a1257)[_0xfe6c('0x2d')](function(_0x350f94){try{_0x28c41e=eval(_0x350f94[_0xfe6c('0x46')](0x5))[0x0][0x2];}catch(_0x3f2970){throw new Error(_0xfe6c('0x47')+_0x350f94['data']);}if(!_0x28c41e){if(_0x319bf3[_0xfe6c('0x48')]>0xc8){throw new Error(_0xfe6c('0x49'));}else{throw new Error(_0xfe6c('0x4a')+_0x346e64+'\x22\x20might\x20not\x20exist');}}try{_0x28c41e=eval(_0x28c41e)[0x0];}catch(_0x236aee){throw new Error(_0xfe6c('0x47')+res['data']);}const _0x4ba9b0=_0x28c41e;_0x32cd7e=path[_0xfe6c('0x28')](__dirname,_0xfe6c('0x29'),rs[_0xfe6c('0x2a')](0x4)+_0xfe6c('0x39'));fs['writeFileSync'](_0x32cd7e,_0x28c41e,{'encoding':_0xfe6c('0x2c')});_0x1d544a=path[_0xfe6c('0x28')](__dirname,'tmp',rs[_0xfe6c('0x2a')](0x4)+_0xfe6c('0x4b'));return convertFile(_0x32cd7e,_0x1d544a);})['then'](function(){try{fs[_0xfe6c('0x1f')](_0x32cd7e);fs[_0xfe6c('0x2e')](_0x1d544a,_0xfe6c('0x2f'));}catch(_0x44b3b2){logger[_0xfe6c('0x1e')](_0x44b3b2);}logger[_0xfe6c('0x1b')]('goggleTTS\x20path',_0x1d544a[_0xfe6c('0x3c')]('.')[0x0]);return _0x1d544a[_0xfe6c('0x3c')]('.')[0x0];});};exports['googleASR']=function(_0x5a9677,_0x299152,_0x32e758){return google[_0xfe6c('0x4c')](_0x5a9677,_0x299152,_0x32e758)[_0xfe6c('0x2d')](function(_0x534723){logger[_0xfe6c('0x1b')](_0x534723['uri']);return rp(_0x534723);})[_0xfe6c('0x2d')](function(_0x99acdd){var _0x59f552='';var _0xfa8243=0x0;try{fs[_0xfe6c('0x1f')](_0x5a9677);}catch(_0xbffadd){logger[_0xfe6c('0x1e')](_0xbffadd);}if(_0x99acdd&&_0x99acdd['results']){_0x59f552=_0x99acdd[_0xfe6c('0x4d')][_0xfe6c('0x4e')](function(_0x285b1d){return _0x285b1d&&_0x285b1d[_0xfe6c('0x4f')][0x0]&&_0x285b1d[_0xfe6c('0x4f')][0x0][_0xfe6c('0x50')]?_0x285b1d[_0xfe6c('0x4f')][0x0]['transcript']:'';})[_0xfe6c('0x51')]('\x0a');_0xfa8243=_0x99acdd['results'][_0xfe6c('0x4e')](function(_0x2780c6){return _0x2780c6&&_0x2780c6[_0xfe6c('0x4f')][0x0]&&_0x2780c6['alternatives'][0x0]['confidence']?_0x2780c6[_0xfe6c('0x4f')][0x0][_0xfe6c('0x52')]:0x0;})[_0xfe6c('0x51')]('\x0a');}logger[_0xfe6c('0x1b')](_0xfe6c('0x53'),_0x59f552);logger[_0xfe6c('0x1b')](_0xfe6c('0x54'),_0xfa8243);return{'transcript':_0x59f552,'confidence':_0xfa8243};})['catch'](function(_0x20344a){logger[_0xfe6c('0x1e')](_0xfe6c('0x55'),_0x20344a[_0xfe6c('0x16')],_0x20344a[_0xfe6c('0x56')],_0x20344a[_0xfe6c('0x57')]);});};exports[_0xfe6c('0x58')]=function(_0x18b863,_0x5d0b1a,_0x1e930b,_0x2e0e6a){var _0x3b7902=apiai(_0x5d0b1a,{'language':_0x2e0e6a||'en'});return _0x3b7902[_0xfe6c('0x59')](_0x1e930b,{'sessionId':md5(_0x18b863)})['then'](function(_0x443413){logger[_0xfe6c('0x1b')](JSON['stringify'](_0x443413));return{'source':_0x443413[_0xfe6c('0x5a')][_0xfe6c('0x5b')],'resolvedQuery':_0x443413[_0xfe6c('0x5a')]['resolvedQuery'],'action':_0x443413['result'][_0xfe6c('0x5c')],'actionIncomplete':_0x443413['result'][_0xfe6c('0x5d')],'speech':_0x443413[_0xfe6c('0x5a')][_0xfe6c('0x5e')][_0xfe6c('0x5f')],'score':_0x443413[_0xfe6c('0x5a')][_0xfe6c('0x60')],'statusCode':_0x443413[_0xfe6c('0x61')][_0xfe6c('0x62')],'endConversation':_0x443413[_0xfe6c('0x5a')]['metadata'][_0xfe6c('0x63')]||![],'isFallbackIntent':_0x443413[_0xfe6c('0x5a')][_0xfe6c('0x64')][_0xfe6c('0x65')]};});};exports['googleDialogflowV2']=function(_0x37e9d0,_0x1cbe19,_0x20a662,_0x40b135,_0x4848b5,_0x254cdb){var _0x2013d8=_0x40b135[_0xfe6c('0x66')](/\\n/g,'\x0a');var _0x508d3d={'credentials':{'private_key':_0x2013d8,'client_email':_0x20a662}};var _0x23cba5=new dialogflow[(_0xfe6c('0x67'))](_0x508d3d);var _0x138d5e=_0x23cba5[_0xfe6c('0x68')](_0x1cbe19,md5(_0x37e9d0));var _0x50d67f={'session':_0x138d5e,'queryInput':{'text':{'text':_0x4848b5,'languageCode':_0x254cdb}}};return _0x23cba5['detectIntent'](_0x50d67f)[_0xfe6c('0x2d')](function(_0x3849e6){if(_0x3849e6&&_0x3849e6[_0xfe6c('0x48')]){logger[_0xfe6c('0x1b')](_0xfe6c('0x69'),JSON['stringify'](_0x3849e6));var _0x441ac0=_0x3849e6[0x0];if(_0x441ac0){var _0x340ade={'action':_0x441ac0[_0xfe6c('0x6a')]['action'],'allRequiredParamsPresent':_0x441ac0[_0xfe6c('0x6a')]['allRequiredParamsPresent'],'endConversation':_0x441ac0['queryResult'][_0xfe6c('0x6b')]&&_0x441ac0[_0xfe6c('0x6a')]['diagnosticInfo'][_0xfe6c('0x6c')]?_0x441ac0[_0xfe6c('0x6a')]['diagnosticInfo'][_0xfe6c('0x6c')]['end_conversation'][_0xfe6c('0x6d')]:![],'fulfillmentText':_0x441ac0[_0xfe6c('0x6a')]['fulfillmentText'],'intentName':_0x441ac0[_0xfe6c('0x6a')][_0xfe6c('0x6e')]['name'],'intentDisplayName':_0x441ac0['queryResult'][_0xfe6c('0x6e')]['displayName'],'isFallbackIntent':_0x441ac0[_0xfe6c('0x6a')]['intent'][_0xfe6c('0x6f')],'languageCode':_0x441ac0['queryResult'][_0xfe6c('0x70')],'queryText':_0x441ac0[_0xfe6c('0x6a')][_0xfe6c('0x71')],'responseId':_0x441ac0['responseId'],'score':_0x441ac0['queryResult']['intentDetectionConfidence'],'speech':_0x441ac0[_0xfe6c('0x6a')]['fulfillmentText'],'providerResponse':JSON[_0xfe6c('0x43')](_0x3849e6)};return _0x340ade;}}});};exports[_0xfe6c('0x72')]=function(_0x19094b,_0x471a53,_0x11ac7a,_0x55d8e1){return tilde[_0xfe6c('0x4c')](_0x19094b,_0x471a53,_0x11ac7a,_0x55d8e1)['then'](function(_0x32ab3d){try{fs[_0xfe6c('0x1f')](_0x19094b);}catch(_0x385e92){logger['error'](_0x385e92);}logger[_0xfe6c('0x1b')](_0xfe6c('0x73'),_0x32ab3d[_0xfe6c('0x50')]);logger['info'](_0xfe6c('0x74'),_0x32ab3d[_0xfe6c('0x52')]);return _0x32ab3d;});};exports['awsPolly']=function(_0x575a79,_0x12c04c,_0x1c577b,_0x8b2be6,_0x1def1b,_0x12393b){var _0x54e112=path[_0xfe6c('0x28')](__dirname,_0xfe6c('0x29'),rs[_0xfe6c('0x2a')](0x4)+'.mp3');var _0x419fc5;return aws[_0xfe6c('0x75')](_0x575a79,_0x12c04c,_0x1c577b,_0x8b2be6,_0x1def1b,_0x12393b,_0x54e112)['then'](function(){_0x419fc5=path[_0xfe6c('0x28')](__dirname,'tmp',rs[_0xfe6c('0x2a')](0x4)+'.wav');return convertFile(_0x54e112,_0x419fc5);})[_0xfe6c('0x2d')](function(){try{fs['unlink'](_0x54e112);fs['chmodSync'](_0x419fc5,_0xfe6c('0x2f'));}catch(_0x367804){logger['error'](_0x367804);}return _0x419fc5[_0xfe6c('0x3c')]('.')[0x0];});};exports[_0xfe6c('0x76')]=function(_0x52a005,_0x40d772,_0x39a3aa,_0x522d6a,_0x155a93,_0x2b021e){return aws[_0xfe6c('0x77')](_0x52a005,_0x40d772,_0x39a3aa,_0x522d6a,_0x155a93,_0x2b021e)[_0xfe6c('0x2d')](function(_0x11afeb){logger[_0xfe6c('0x1b')](JSON[_0xfe6c('0x43')](_0x11afeb));return _0x11afeb;});};exports[_0xfe6c('0x78')]=function(_0x1bc68a,_0x57e6b2,_0x52bd5e,_0x4f1da3){var _0x4526cd=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x1bc68a,encodeURIComponent(_0x57e6b2),_0x52bd5e,_0x4f1da3);var _0x59301c=path[_0xfe6c('0x28')](__dirname,'tmp',rs[_0xfe6c('0x2a')](0x4)+_0xfe6c('0x39'));var _0x532df3;return downloadFile(_0x4526cd,_0x59301c)[_0xfe6c('0x2d')](function(){_0x532df3=path[_0xfe6c('0x28')](__dirname,_0xfe6c('0x29'),rs['generate'](0x4)+_0xfe6c('0x4b'));return convertFile(_0x59301c,_0x532df3);})['then'](function(){try{fs['unlink'](_0x59301c);fs['chmodSync'](_0x532df3,_0xfe6c('0x2f'));}catch(_0x3c912c){logger[_0xfe6c('0x1e')](_0x3c912c);}return _0x532df3[_0xfe6c('0x3c')]('.')[0x0];});};exports[_0xfe6c('0x79')]=function(_0x36504e,_0x297800,_0xa17551,_0x1c6950){var _0x57c0f4=util[_0xfe6c('0x7a')](_0xfe6c('0x7b'),ISPEECH_API,_0x297800,_0xa17551,base64Encode(_0x36504e),_0x1c6950?util[_0xfe6c('0x7a')](_0xfe6c('0x7c'),encodeURIComponent(_0x1c6950)):_0xfe6c('0x7d'));return uploadFile(_0x57c0f4)[_0xfe6c('0x2d')](function(_0x485dff){return querystring[_0xfe6c('0xb')](_0x485dff);});};exports[_0xfe6c('0x7e')]=function(_0x1b421d,_0x55eac3){return sestek['nda'](_0x1b421d,_0x55eac3)[_0xfe6c('0x2d')](function(_0x3ca81d){logger[_0xfe6c('0x1b')](JSON[_0xfe6c('0x43')](_0x3ca81d));var _0x4c2a98={'speech':_0x3ca81d[_0xfe6c('0x7f')],'action':_0x3ca81d['channelData']?_0x3ca81d[_0xfe6c('0x80')][_0xfe6c('0x81')]:undefined,'actiondata':_0x3ca81d[_0xfe6c('0x80')]?_0x3ca81d[_0xfe6c('0x80')][_0xfe6c('0x82')]:undefined};if(_0x3ca81d[_0xfe6c('0x80')]&&_0x3ca81d[_0xfe6c('0x80')][_0xfe6c('0x83')]){return base64Decode(_0x3ca81d[_0xfe6c('0x80')][_0xfe6c('0x83')][_0xfe6c('0x84')],path[_0xfe6c('0x28')](__dirname,_0xfe6c('0x29'),rs['generate'](0x4)+_0xfe6c('0x4b')))[_0xfe6c('0x2d')](function(_0x4552cd){_0x4c2a98['audiofile']=_0x4552cd;return _0x4c2a98;});}return _0x4c2a98;});};exports[_0xfe6c('0x85')]=function(){return __dirname;};
\ No newline at end of file
+var _0x8677=['MP3','POST','generate','.mp3','from','audioContent','writeFile','777','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','resolvedQuery','action','actionIncomplete','speech','score','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','allRequiredParamsPresent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','bluebird','dialogflow','http','md5','path','querystring','request-promise','sox','google-tts-api','url','parse','./aws','./google','./sestek','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','error','unlink','pipe','end','data','transcode','wav','finish\x20to\x20convert','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig'];(function(_0x539709,_0x2c9edd){var _0x73cc7e=function(_0x5d20ea){while(--_0x5d20ea){_0x539709['push'](_0x539709['shift']());}};_0x73cc7e(++_0x2c9edd);}(_0x8677,0xdd));var _0x7867=function(_0xdc866c,_0x389a72){_0xdc866c=_0xdc866c-0x0;var _0x3ac470=_0x8677[_0xdc866c];return _0x3ac470;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x7867('0x0'));var dialogflow=require(_0x7867('0x1'));var fs=require('fs');var http=require(_0x7867('0x2'));var https=require('https');var md5=require(_0x7867('0x3'));var path=require(_0x7867('0x4'));var querystring=require(_0x7867('0x5'));var rp=require(_0x7867('0x6'));var rs=require('randomstring');var sox=require(_0x7867('0x7'));var tts=require(_0x7867('0x8'));var urlParse=require(_0x7867('0x9'))[_0x7867('0xa')];var util=require('util');var aws=require(_0x7867('0xb'));var google=require(_0x7867('0xc'));var sestek=require(_0x7867('0xd'));var tilde=require('./tilde');var logger=require(_0x7867('0xe'))('agi');var ISPEECH_API=_0x7867('0xf');function downloadFile(_0x4ad744,_0x19374d){return new BPromise(function(_0x5b21c1,_0x102e2f){var _0x28df36=urlParse(_0x4ad744);var _0x4f2978=_0x28df36[_0x7867('0x10')]===_0x7867('0x11')?https:http;var _0x49544c={'host':_0x28df36[_0x7867('0x12')],'path':_0x28df36['path'],'headers':{'user-agent':_0x7867('0x13')}};_0x4f2978[_0x7867('0x14')](_0x49544c,function(_0x45dfd3){if(_0x45dfd3[_0x7867('0x15')]!==0xc8){logger['error'](_0x7867('0x16')+_0x4ad744+_0x7867('0x17')+_0x45dfd3[_0x7867('0x15')]+'\x20('+_0x45dfd3[_0x7867('0x18')]+')');_0x102e2f(new Error(_0x7867('0x16')+_0x4ad744+'\x20failed,\x20status\x20code\x20=\x20'+_0x45dfd3[_0x7867('0x15')]+'\x20('+_0x45dfd3[_0x7867('0x18')]+')'));return;}var _0x116450=fs[_0x7867('0x19')](_0x19374d);_0x116450['on'](_0x7867('0x1a'),function(){logger[_0x7867('0x1b')]('finish\x20download\x20file');_0x116450['close'](_0x5b21c1);});_0x116450['on'](_0x7867('0x1c'),function(_0x52b5bb){fs[_0x7867('0x1d')](_0x19374d);logger[_0x7867('0x1c')]('download\x20error',_0x52b5bb);_0x102e2f(_0x52b5bb);});_0x45dfd3[_0x7867('0x1e')](_0x116450);})['on'](_0x7867('0x1c'),function(_0x26c4bc){logger[_0x7867('0x1c')](_0x26c4bc);_0x102e2f(_0x26c4bc);})[_0x7867('0x1f')]();});}function uploadFile(_0x1f0bd3){return new BPromise(function(_0x43fa7e,_0x2693d0){var _0x289c73=urlParse(_0x1f0bd3);var _0x17cf31=_0x289c73[_0x7867('0x10')]===_0x7867('0x11')?https:http;var _0x17b48e={'host':_0x289c73[_0x7867('0x12')],'path':_0x289c73[_0x7867('0x4')],'headers':{'user-agent':_0x7867('0x13')}};_0x17cf31[_0x7867('0x14')](_0x17b48e,function(_0x1e0a71){if(_0x1e0a71['statusCode']!==0xc8){_0x2693d0(new Error(_0x7867('0x16')+_0x1f0bd3+_0x7867('0x17')+_0x1e0a71['statusCode']+'\x20('+_0x1e0a71[_0x7867('0x18')]+')'));return;}var _0xad72fe='';_0x1e0a71['on'](_0x7867('0x20'),function(_0x55b334){_0xad72fe+=_0x55b334;});_0x1e0a71['on']('end',function(){_0x43fa7e(_0xad72fe);});})['on'](_0x7867('0x1c'),function(_0x109808){_0x2693d0(_0x109808);})[_0x7867('0x1f')]();});}function convertFile(_0x57e9ad,_0x3d2f41){return new BPromise(function(_0x5014ba,_0x32d223){var _0xdc2e4e=sox[_0x7867('0x21')](_0x57e9ad,_0x3d2f41,{'sampleRate':0x1f40,'format':_0x7867('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xdc2e4e['on']('error',function(_0x32123d){logger[_0x7867('0x1c')]('error\x20convert',_0x32123d);_0x32d223(_0x32123d);});_0xdc2e4e['on']('end',function(){logger[_0x7867('0x1b')](_0x7867('0x23'));_0x5014ba();});_0xdc2e4e['start']();});}function base64Decode(_0x212518,_0x24fcad){var _0x310fac=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs['generate'](0x4)+_0x7867('0x26'));fs[_0x7867('0x27')](_0x310fac,_0x212518,_0x7867('0x28'));return convertFile(_0x310fac,_0x24fcad)[_0x7867('0x29')](function(){try{fs[_0x7867('0x1d')](_0x310fac);fs[_0x7867('0x2a')](_0x24fcad,'777');}catch(_0x1339bc){logger[_0x7867('0x1c')](_0x1339bc);}return _0x24fcad[_0x7867('0x2b')]('.')[0x0];});}function base64Encode(_0x1ef8da){var _0x3196f3=fs['readFileSync'](_0x1ef8da);return new Buffer(_0x3196f3)[_0x7867('0x2c')](_0x7867('0x28'));}exports[_0x7867('0x2d')]=function(_0x40d701,_0x2d39e3,_0x48807f,_0x2ded9e,_0x495aba,_0x381a79){var _0x645449,_0x76e4be;var _0xa4e402=_0x7867('0x2e');var _0x48382c='?key='+_0x40d701;var _0x19e82c={};if(_0x2d39e3===_0x7867('0x2f')){_0x19e82c[_0x7867('0x30')]={'ssml':_0x48807f};}else{_0x19e82c[_0x7867('0x30')]={'text':_0x48807f};};_0x19e82c[_0x7867('0x31')]={'languageCode':_0x2ded9e,'ssmlGender':_0x495aba};_0x19e82c[_0x7867('0x32')]={'audioEncoding':_0x7867('0x33'),'sampleRateHertz':0x1f40};var _0x4cac93={'url':_0xa4e402+'text:synthesize'+_0x48382c,'method':_0x7867('0x34'),'json':!![],'body':_0x19e82c};return rp(_0x4cac93)[_0x7867('0x29')](function(_0x403196){return new BPromise(function(_0x2ae0cb,_0x3869fd){_0x645449=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs[_0x7867('0x35')](0x4)+_0x7867('0x36'));var _0x29603c=Buffer[_0x7867('0x37')](_0x403196[_0x7867('0x38')],_0x7867('0x28'));return fs[_0x7867('0x39')](_0x645449,_0x29603c,function(_0x2da973){_0x3869fd(_0x2da973);},function(_0xa718dd){fs[_0x7867('0x2a')](_0x645449,_0x7867('0x3a'));_0x2ae0cb(_0xa718dd);});});})['then'](function(_0x1cd391){_0x76e4be=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs['generate'](0x4)+'.wav');return convertFile(_0x645449,_0x76e4be);})['then'](function(){try{fs['unlink'](_0x645449);fs[_0x7867('0x2a')](_0x76e4be,_0x7867('0x3a'));}catch(_0x329486){logger[_0x7867('0x1c')](_0x329486);}logger[_0x7867('0x1b')](_0x7867('0x3b'),_0x76e4be[_0x7867('0x2b')]('.')[0x0]);return _0x76e4be[_0x7867('0x2b')]('.')[0x0];});};exports['googleTTS']=function(_0x2ab55c,_0x51f9fa){var _0x19225e=_0x7867('0x3c');var _0x10a602,_0x36ae53;var _0x2b92d7;var _0x4b7b94={'encoding':_0x7867('0x3d'),'method':'POST','timeout':0x2710,'url':_0x19225e,'headers':{'Content-Type':_0x7867('0x3e')},'body':_0x7867('0x3f')+encodeURIComponent(JSON[_0x7867('0x40')]([[[_0x7867('0x41'),JSON['stringify']([_0x2ab55c,_0x51f9fa||'en',![],_0x7867('0x42')]),null,_0x7867('0x43')]]]))};return rp(_0x4b7b94)[_0x7867('0x29')](function(_0x3eaad1){try{_0x2b92d7=eval(_0x3eaad1['slice'](0x5))[0x0][0x2];}catch(_0x33fee3){throw new Error(_0x7867('0x44')+_0x3eaad1[_0x7867('0x20')]);}if(!_0x2b92d7){if(_0x2ab55c['length']>0xc8){throw new Error(_0x7867('0x45'));}else{throw new Error(_0x7867('0x46')+_0x51f9fa+_0x7867('0x47'));}}try{_0x2b92d7=eval(_0x2b92d7)[0x0];}catch(_0x4252ac){throw new Error(_0x7867('0x44')+res['data']);}const _0x4b8f9c=_0x2b92d7;_0x10a602=path['resolve'](__dirname,_0x7867('0x25'),rs['generate'](0x4)+'.mp3');fs[_0x7867('0x27')](_0x10a602,_0x2b92d7,{'encoding':'base64'});_0x36ae53=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs[_0x7867('0x35')](0x4)+'.wav');return convertFile(_0x10a602,_0x36ae53);})[_0x7867('0x29')](function(){try{fs[_0x7867('0x1d')](_0x10a602);fs['chmodSync'](_0x36ae53,_0x7867('0x3a'));}catch(_0x5b96ca){logger[_0x7867('0x1c')](_0x5b96ca);}logger[_0x7867('0x1b')](_0x7867('0x48'),_0x36ae53['split']('.')[0x0]);return _0x36ae53[_0x7867('0x2b')]('.')[0x0];});};exports['googleASR']=function(_0x3b2e82,_0x2b9ee0,_0xc3162f){return google[_0x7867('0x49')](_0x3b2e82,_0x2b9ee0,_0xc3162f)['then'](function(_0x427d03){logger[_0x7867('0x1b')](_0x427d03[_0x7867('0x4a')]);return rp(_0x427d03);})[_0x7867('0x29')](function(_0x2e6684){var _0x3455be='';var _0x2d0838=0x0;try{fs[_0x7867('0x1d')](_0x3b2e82);}catch(_0x3ac9e2){logger['error'](_0x3ac9e2);}if(_0x2e6684&&_0x2e6684['results']){_0x3455be=_0x2e6684[_0x7867('0x4b')][_0x7867('0x4c')](function(_0x212722){return _0x212722&&_0x212722[_0x7867('0x4d')][0x0]&&_0x212722[_0x7867('0x4d')][0x0][_0x7867('0x4e')]?_0x212722['alternatives'][0x0][_0x7867('0x4e')]:'';})['join']('\x0a');_0x2d0838=_0x2e6684[_0x7867('0x4b')]['map'](function(_0x1da8ec){return _0x1da8ec&&_0x1da8ec[_0x7867('0x4d')][0x0]&&_0x1da8ec[_0x7867('0x4d')][0x0][_0x7867('0x4f')]?_0x1da8ec[_0x7867('0x4d')][0x0][_0x7867('0x4f')]:0x0;})['join']('\x0a');}logger[_0x7867('0x1b')](_0x7867('0x50'),_0x3455be);logger[_0x7867('0x1b')](_0x7867('0x51'),_0x2d0838);return{'transcript':_0x3455be,'confidence':_0x2d0838};})['catch'](function(_0xe95d16){logger[_0x7867('0x1c')](_0x7867('0x52'),_0xe95d16[_0x7867('0x15')],_0xe95d16[_0x7867('0x53')],_0xe95d16[_0x7867('0x54')]);});};exports[_0x7867('0x55')]=function(_0x543199,_0x2fd829,_0x2772ff,_0x3b30ea){var _0x3d7dcf=apiai(_0x2fd829,{'language':_0x3b30ea||'en'});return _0x3d7dcf[_0x7867('0x56')](_0x2772ff,{'sessionId':md5(_0x543199)})[_0x7867('0x29')](function(_0x5fdfb1){logger['info'](JSON[_0x7867('0x40')](_0x5fdfb1));return{'source':_0x5fdfb1['result']['source'],'resolvedQuery':_0x5fdfb1[_0x7867('0x57')][_0x7867('0x58')],'action':_0x5fdfb1['result'][_0x7867('0x59')],'actionIncomplete':_0x5fdfb1['result'][_0x7867('0x5a')],'speech':_0x5fdfb1['result']['fulfillment'][_0x7867('0x5b')],'score':_0x5fdfb1[_0x7867('0x57')][_0x7867('0x5c')],'statusCode':_0x5fdfb1['status']['code'],'endConversation':_0x5fdfb1[_0x7867('0x57')][_0x7867('0x5d')][_0x7867('0x5e')]||![],'isFallbackIntent':_0x5fdfb1['result'][_0x7867('0x5d')][_0x7867('0x5f')]};});};exports[_0x7867('0x60')]=function(_0xf37a7b,_0x4b29c5,_0x2a24ad,_0x31191b,_0x22eb0b,_0x232eea){var _0x4b1487=_0x31191b[_0x7867('0x61')](/\\n/g,'\x0a');var _0x282ae8={'credentials':{'private_key':_0x4b1487,'client_email':_0x2a24ad}};var _0x24851a=new dialogflow[(_0x7867('0x62'))](_0x282ae8);var _0x2074de=_0x24851a[_0x7867('0x63')](_0x4b29c5,md5(_0xf37a7b));var _0xb5d886={'session':_0x2074de,'queryInput':{'text':{'text':_0x22eb0b,'languageCode':_0x232eea}}};return _0x24851a[_0x7867('0x64')](_0xb5d886)[_0x7867('0x29')](function(_0x15c82f){if(_0x15c82f&&_0x15c82f[_0x7867('0x65')]){logger[_0x7867('0x1b')]('Dialogflow\x20V2\x20response:',JSON['stringify'](_0x15c82f));var _0x2338de=_0x15c82f[0x0];if(_0x2338de){var _0x237567={'action':_0x2338de['queryResult'][_0x7867('0x59')],'allRequiredParamsPresent':_0x2338de['queryResult'][_0x7867('0x66')],'endConversation':_0x2338de[_0x7867('0x67')][_0x7867('0x68')]&&_0x2338de[_0x7867('0x67')][_0x7867('0x68')][_0x7867('0x69')]?_0x2338de[_0x7867('0x67')][_0x7867('0x68')][_0x7867('0x69')][_0x7867('0x6a')][_0x7867('0x6b')]:![],'fulfillmentText':_0x2338de[_0x7867('0x67')][_0x7867('0x6c')],'intentName':_0x2338de['queryResult'][_0x7867('0x6d')][_0x7867('0x53')],'intentDisplayName':_0x2338de[_0x7867('0x67')][_0x7867('0x6d')][_0x7867('0x6e')],'isFallbackIntent':_0x2338de[_0x7867('0x67')]['intent'][_0x7867('0x6f')],'languageCode':_0x2338de[_0x7867('0x67')][_0x7867('0x70')],'queryText':_0x2338de['queryResult']['queryText'],'responseId':_0x2338de[_0x7867('0x71')],'score':_0x2338de['queryResult'][_0x7867('0x72')],'speech':_0x2338de['queryResult'][_0x7867('0x6c')],'providerResponse':JSON[_0x7867('0x40')](_0x15c82f)};return _0x237567;}}});};exports[_0x7867('0x73')]=function(_0x12ef2d,_0x2cf4a1,_0x1af519,_0xcc5627){return tilde[_0x7867('0x49')](_0x12ef2d,_0x2cf4a1,_0x1af519,_0xcc5627)[_0x7867('0x29')](function(_0x5671d3){try{fs['unlink'](_0x12ef2d);}catch(_0x3befdf){logger[_0x7867('0x1c')](_0x3befdf);}logger[_0x7867('0x1b')](_0x7867('0x74'),_0x5671d3[_0x7867('0x4e')]);logger[_0x7867('0x1b')]('Tilde\x20ASR\x20confidence',_0x5671d3[_0x7867('0x4f')]);return _0x5671d3;});};exports[_0x7867('0x75')]=function(_0x2684cb,_0x10db3e,_0xe3bbc1,_0x4cf29c,_0xdd3d85,_0x21d1b0){var _0x38ae59=path['resolve'](__dirname,_0x7867('0x25'),rs['generate'](0x4)+_0x7867('0x36'));var _0x4d1fe4;return aws[_0x7867('0x76')](_0x2684cb,_0x10db3e,_0xe3bbc1,_0x4cf29c,_0xdd3d85,_0x21d1b0,_0x38ae59)[_0x7867('0x29')](function(){_0x4d1fe4=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs[_0x7867('0x35')](0x4)+_0x7867('0x26'));return convertFile(_0x38ae59,_0x4d1fe4);})['then'](function(){try{fs['unlink'](_0x38ae59);fs[_0x7867('0x2a')](_0x4d1fe4,'777');}catch(_0x3e911f){logger[_0x7867('0x1c')](_0x3e911f);}return _0x4d1fe4[_0x7867('0x2b')]('.')[0x0];});};exports[_0x7867('0x77')]=function(_0x5016a6,_0x4814f5,_0x5c3518,_0x5cb6c7,_0x8b1c69,_0x424c83){return aws[_0x7867('0x78')](_0x5016a6,_0x4814f5,_0x5c3518,_0x5cb6c7,_0x8b1c69,_0x424c83)[_0x7867('0x29')](function(_0x20b42e){logger[_0x7867('0x1b')](JSON['stringify'](_0x20b42e));return _0x20b42e;});};exports[_0x7867('0x79')]=function(_0xcfa27c,_0x101ef8,_0x325181,_0x25318c){var _0x5ba55b=util[_0x7867('0x7a')](_0x7867('0x7b'),ISPEECH_API,_0xcfa27c,encodeURIComponent(_0x101ef8),_0x325181,_0x25318c);var _0x327efa=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs['generate'](0x4)+_0x7867('0x36'));var _0x51448a;return downloadFile(_0x5ba55b,_0x327efa)['then'](function(){_0x51448a=path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs['generate'](0x4)+'.wav');return convertFile(_0x327efa,_0x51448a);})[_0x7867('0x29')](function(){try{fs[_0x7867('0x1d')](_0x327efa);fs[_0x7867('0x2a')](_0x51448a,_0x7867('0x3a'));}catch(_0x1e9bd0){logger[_0x7867('0x1c')](_0x1e9bd0);}return _0x51448a['split']('.')[0x0];});};exports[_0x7867('0x7c')]=function(_0xd0b3e,_0x32514d,_0x51db20,_0x57ebe6){var _0x30daba=util[_0x7867('0x7a')](_0x7867('0x7d'),ISPEECH_API,_0x32514d,_0x51db20,base64Encode(_0xd0b3e),_0x57ebe6?util['format'](_0x7867('0x7e'),encodeURIComponent(_0x57ebe6)):_0x7867('0x7f'));return uploadFile(_0x30daba)[_0x7867('0x29')](function(_0x4f7468){return querystring[_0x7867('0xa')](_0x4f7468);});};exports[_0x7867('0x80')]=function(_0x52c5ef,_0x434ed2){return sestek['nda'](_0x52c5ef,_0x434ed2)['then'](function(_0x440125){logger[_0x7867('0x1b')](JSON['stringify'](_0x440125));var _0x5345f1={'speech':_0x440125[_0x7867('0x81')],'action':_0x440125[_0x7867('0x82')]?_0x440125[_0x7867('0x82')][_0x7867('0x83')]:undefined,'actiondata':_0x440125['channelData']?_0x440125[_0x7867('0x82')]['CustomActionData']:undefined};if(_0x440125[_0x7867('0x82')]&&_0x440125[_0x7867('0x82')][_0x7867('0x84')]){return base64Decode(_0x440125[_0x7867('0x82')][_0x7867('0x84')][_0x7867('0x85')],path[_0x7867('0x24')](__dirname,_0x7867('0x25'),rs[_0x7867('0x35')](0x4)+'.wav'))[_0x7867('0x29')](function(_0x83b450){_0x5345f1[_0x7867('0x86')]=_0x83b450;return _0x5345f1;});}return _0x5345f1;});};exports[_0x7867('0x87')]=function(){return __dirname;};
\ No newline at end of file
index 67072dc..73205d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19b9=['./nda','exports'];(function(_0x74ea5d,_0x31c038){var _0x13b3c1=function(_0x47170e){while(--_0x47170e){_0x74ea5d['push'](_0x74ea5d['shift']());}};_0x13b3c1(++_0x31c038);}(_0x19b9,0x78));var _0x919b=function(_0x3bbe89,_0x2e1ba3){_0x3bbe89=_0x3bbe89-0x0;var _0x32842b=_0x19b9[_0x3bbe89];return _0x32842b;};var nda=require(_0x919b('0x0'));module[_0x919b('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x9ea5=['exports','./nda'];(function(_0xdcc5a1,_0x4b0f6b){var _0x2fd7e3=function(_0x1af124){while(--_0x1af124){_0xdcc5a1['push'](_0xdcc5a1['shift']());}};_0x2fd7e3(++_0x4b0f6b);}(_0x9ea5,0x191));var _0x59ea=function(_0x59cdb6,_0x33c1c1){_0x59cdb6=_0x59cdb6-0x0;var _0x56b918=_0x9ea5[_0x59cdb6];return _0x56b918;};var nda=require(_0x59ea('0x0'));module[_0x59ea('0x1')]={'nda':nda};
\ No newline at end of file
index 709dc4e..4baf183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a8=['ndassistant_url','ndaactivity_type','uniqueid','callerid','calleridname','dnid','extension','project','channelData','ProjectName','ndagenerate_audio','body','AudioOutputSettings','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','exports','POST','resolve','ndauth_url','/token','password','username'];(function(_0x32e082,_0x563537){var _0x5138a4=function(_0x354a74){while(--_0x354a74){_0x32e082['push'](_0x32e082['shift']());}};_0x5138a4(++_0x563537);}(_0x50a8,0x198));var _0x850a=function(_0x2e1d5c,_0x337970){_0x2e1d5c=_0x2e1d5c-0x0;var _0x1c44c1=_0x50a8[_0x2e1d5c];return _0x1c44c1;};'use strict';var rp=require(_0x850a('0x0'));var url=require('url');var logger=require('../../../../../config/logger')('agi');module[_0x850a('0x1')]=function(_0x5600ec,_0x204954){var _0xd9cbd={'method':_0x850a('0x2'),'uri':url[_0x850a('0x3')](_0x204954[_0x850a('0x4')],_0x850a('0x5')),'form':{'grant_type':_0x850a('0x6'),'username':_0x204954[_0x850a('0x7')],'password':_0x204954[_0x850a('0x6')]},'json':!![]};return rp(_0xd9cbd)['then'](function(_0x488676){var _0x3c138a={'method':_0x850a('0x2'),'uri':url[_0x850a('0x3')](_0x204954[_0x850a('0x8')],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x204954[_0x850a('0x9')]||'message','channelId':'Nda','conversation':{'id':_0x5600ec[_0x850a('0xa')]},'from':{'id':_0x5600ec[_0x850a('0xb')],'name':_0x5600ec[_0x850a('0xc')]},'recipient':{'id':_0x5600ec[_0x850a('0xd')],'name':_0x5600ec[_0x850a('0xe')]},'text':_0x204954['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x488676['access_token']},'json':!![]};if(_0x204954[_0x850a('0xf')]){_0x3c138a['body'][_0x850a('0x10')][_0x850a('0x11')]=_0x204954[_0x850a('0xf')];}if(_0x204954[_0x850a('0x12')]=='1'){_0x3c138a[_0x850a('0x13')]['channelData'][_0x850a('0x14')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x204954['custom_action']){_0x3c138a['body']['channelData'][_0x850a('0x15')]=_0x204954['custom_action'];if(_0x204954[_0x850a('0x16')]){_0x3c138a[_0x850a('0x13')][_0x850a('0x10')][_0x850a('0x17')]=_0x204954[_0x850a('0x16')];}}logger[_0x850a('0x18')](JSON[_0x850a('0x19')](_0x3c138a));return rp(_0x3c138a);});};
\ No newline at end of file
+var _0x63bb=['request-promise','url','../../../../../config/logger','agi','exports','resolve','ndauth_url','/token','password','then','POST','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','calleridname','dnid','extension','access_token','project','body','channelData','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','info','stringify'];(function(_0x26721d,_0x448ba5){var _0x1035c5=function(_0x1c1b86){while(--_0x1c1b86){_0x26721d['push'](_0x26721d['shift']());}};_0x1035c5(++_0x448ba5);}(_0x63bb,0xf8));var _0xb63b=function(_0x57f91f,_0x21cf17){_0x57f91f=_0x57f91f-0x0;var _0x4deca6=_0x63bb[_0x57f91f];return _0x4deca6;};'use strict';var rp=require(_0xb63b('0x0'));var url=require(_0xb63b('0x1'));var logger=require(_0xb63b('0x2'))(_0xb63b('0x3'));module[_0xb63b('0x4')]=function(_0x2ad279,_0x3540f2){var _0x47ee22={'method':'POST','uri':url[_0xb63b('0x5')](_0x3540f2[_0xb63b('0x6')],_0xb63b('0x7')),'form':{'grant_type':_0xb63b('0x8'),'username':_0x3540f2['username'],'password':_0x3540f2[_0xb63b('0x8')]},'json':!![]};return rp(_0x47ee22)[_0xb63b('0x9')](function(_0x2aa873){var _0x544988={'method':_0xb63b('0xa'),'uri':url[_0xb63b('0x5')](_0x3540f2['ndassistant_url'],_0xb63b('0xb')),'body':{'type':_0x3540f2[_0xb63b('0xc')]||_0xb63b('0xd'),'channelId':_0xb63b('0xe'),'conversation':{'id':_0x2ad279[_0xb63b('0xf')]},'from':{'id':_0x2ad279['callerid'],'name':_0x2ad279[_0xb63b('0x10')]},'recipient':{'id':_0x2ad279[_0xb63b('0x11')],'name':_0x2ad279[_0xb63b('0x12')]},'text':_0x3540f2['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x2aa873[_0xb63b('0x13')]},'json':!![]};if(_0x3540f2[_0xb63b('0x14')]){_0x544988[_0xb63b('0x15')][_0xb63b('0x16')]['ProjectName']=_0x3540f2[_0xb63b('0x14')];}if(_0x3540f2[_0xb63b('0x17')]=='1'){_0x544988[_0xb63b('0x15')][_0xb63b('0x16')][_0xb63b('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xb63b('0x19')};}if(_0x3540f2[_0xb63b('0x1a')]){_0x544988['body'][_0xb63b('0x16')]['CustomAction']=_0x3540f2[_0xb63b('0x1a')];if(_0x3540f2[_0xb63b('0x1b')]){_0x544988[_0xb63b('0x15')][_0xb63b('0x16')][_0xb63b('0x1c')]=_0x3540f2['custom_action_data'];}}logger[_0xb63b('0x1d')](JSON[_0xb63b('0x1e')](_0x544988));return rp(_0x544988);});};
\ No newline at end of file
index 434a433..ea171e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ac9=['exports'];(function(_0x2df89d,_0x4c258d){var _0x28794e=function(_0x5929f3){while(--_0x5929f3){_0x2df89d['push'](_0x2df89d['shift']());}};_0x28794e(++_0x4c258d);}(_0x4ac9,0xe9));var _0x94ac=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x4ac9[_0x2235bf];return _0x4c3a64;};'use strict';var asr=require('./lib/api');module[_0x94ac('0x0')]=function(_0x57afb7,_0x55541f,_0x212840,_0x2fa12b){return asr(_0x57afb7,_0x55541f,_0x212840,_0x2fa12b);};
\ No newline at end of file
+var _0xecda=['exports','./lib/api'];(function(_0x59dc33,_0x95f0c9){var _0x9c152b=function(_0x3d0931){while(--_0x3d0931){_0x59dc33['push'](_0x59dc33['shift']());}};_0x9c152b(++_0x95f0c9);}(_0xecda,0x8b));var _0xaecd=function(_0x31af74,_0x290ba8){_0x31af74=_0x31af74-0x0;var _0x283684=_0xecda[_0x31af74];return _0x283684;};'use strict';var asr=require(_0xaecd('0x0'));module[_0xaecd('0x1')]=function(_0xbed33e,_0x1b1e77,_0x2ac564,_0x58b536){return asr(_0xbed33e,_0x1b1e77,_0x2ac564,_0x58b536);};
\ No newline at end of file
index 4310178..0e82a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e9=['Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','close','send','EOS','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','error','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isObject','open','lodash','moment','crypto','../../../../../../config/logger','exports','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','digest','hex','info'];(function(_0x35747a,_0x5763f4){var _0x224e75=function(_0x16e3dd){while(--_0x16e3dd){_0x35747a['push'](_0x35747a['shift']());}};_0x224e75(++_0x5763f4);}(_0x97e9,0xfe));var _0x997e=function(_0x5283e1,_0x4cc84b){_0x5283e1=_0x5283e1-0x0;var _0x15201e=_0x97e9[_0x5283e1];return _0x15201e;};'use strict';var BPromise=require('bluebird');var _=require(_0x997e('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x997e('0x1'));var crypto=require(_0x997e('0x2'));var logger=require(_0x997e('0x3'))('agi');module[_0x997e('0x4')]=function(_0x43edde,_0x2475d7,_0x84f6d4,_0x41d0e8){return new BPromise(function(_0x1b3207,_0x26b9b8){logger['info']('Tilde\x20URI',_0x41d0e8||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x40cb32=new WebSocket(_0x41d0e8||_0x997e('0x5'),{'perMessageDeflate':![]});var _0x39526f='';var _0x1ecc0c='0';var _0x1e65f5='1';var _0x8ff575=_0x997e('0x6');function _0x20aaae(_0x425dcd){var _0x348ba6=crypto[_0x997e('0x7')](_0x997e('0x8'));_0x348ba6['update'](_0x425dcd);return _0x348ba6[_0x997e('0x9')](_0x997e('0xa'));}function _0x47e73c(){try{logger[_0x997e('0xb')](_0x997e('0xc'));var _0x4df020=moment()[_0x997e('0xd')]();var _0x37a6a2=_0x20aaae(_0x4df020+_0x2475d7+_0x84f6d4);_0x40cb32['send'](JSON[_0x997e('0xe')]({'appID':_0x2475d7,'timestamp':_0x4df020,'appKey':_0x37a6a2}));var _0x911a2f=fs[_0x997e('0xf')](_0x43edde);_0x911a2f['on']('data',function(_0xca6f48){_0x40cb32['send'](_0xca6f48);});_0x911a2f['on'](_0x997e('0x10'),function(){_0x40cb32[_0x997e('0x11')](_0x997e('0x12'));});}catch(_0x3d848d){logger['error']('Tilde\x20ASR\x20send\x20error',JSON[_0x997e('0xe')](_0x3d848d));_0x40cb32[_0x997e('0x13')]();}}function _0x366178(_0x11c850){try{if(_0x11c850){var _0x47add7=JSON[_0x997e('0x14')](_0x11c850);switch(_0x47add7[_0x997e('0x15')]){case 0x0:if(_0x47add7['result']){if(_0x47add7[_0x997e('0x16')][_0x997e('0x17')]){logger[_0x997e('0xb')](_0x997e('0x18'),JSON[_0x997e('0xe')](_0x47add7[_0x997e('0x16')][_0x997e('0x19')]));_0x39526f=_0x47add7[_0x997e('0x16')][_0x997e('0x19')][0x0][_0x997e('0x1a')];_0x1ecc0c=_0x47add7[_0x997e('0x16')][_0x997e('0x19')][0x0][_0x997e('0x1b')];_0x1e65f5='0';_0x8ff575=_0x997e('0x1c');_0x40cb32[_0x997e('0x13')]();}}break;case 0x1:logger['info'](_0x997e('0x6'));_0x1e65f5='1';_0x8ff575=_0x997e('0x6');break;case 0x2:logger[_0x997e('0xb')](_0x997e('0x1d'));_0x1e65f5='2';_0x8ff575=_0x997e('0x1d');break;case 0x9:logger['info'](_0x997e('0x1e'));_0x1e65f5='9';_0x8ff575=_0x997e('0x1e');break;case 0xa:logger[_0x997e('0xb')]('Authentication\x20failed.');_0x1e65f5='10';_0x8ff575=_0x997e('0x1f');break;case 0xb:logger[_0x997e('0xb')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x1e65f5='11';_0x8ff575=_0x997e('0x20');}}}catch(_0x37cfd0){logger[_0x997e('0x21')](_0x997e('0x22'),JSON[_0x997e('0xe')](_0x37cfd0));_0x40cb32[_0x997e('0x13')]();}}function _0x12ae2f(){logger[_0x997e('0xb')]('Close\x20Tilde\x20ASR\x20socket');_0x1b3207({'transcript':_0x39526f,'confidence':_0x1ecc0c,'status':_0x1e65f5,'status_message':_0x8ff575});}function _0x54013f(_0x5c7ca1){logger['error'](_0x997e('0x23'));if(!_['isNil'](_0x5c7ca1)){logger[_0x997e('0x21')](_[_0x997e('0x24')](_0x5c7ca1)?JSON['stringify'](_0x5c7ca1):_0x5c7ca1);}}_0x40cb32['on'](_0x997e('0x25'),_0x47e73c);_0x40cb32['on']('message',_0x366178);_0x40cb32['on'](_0x997e('0x10'),_0x12ae2f);_0x40cb32['on'](_0x997e('0x21'),_0x54013f);});};
\ No newline at end of file
+var _0x6cd6=['createHash','sha1','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','close','send','EOS','error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','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','bluebird','moment','crypto','../../../../../../config/logger','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'];(function(_0x2c2490,_0x43a94b){var _0x5bcfd3=function(_0xcd897f){while(--_0xcd897f){_0x2c2490['push'](_0x2c2490['shift']());}};_0x5bcfd3(++_0x43a94b);}(_0x6cd6,0x9c));var _0x66cd=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x6cd6[_0x1cc8fe];return _0x230054;};'use strict';var BPromise=require(_0x66cd('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x66cd('0x1'));var crypto=require(_0x66cd('0x2'));var logger=require(_0x66cd('0x3'))('agi');module['exports']=function(_0x28a4ae,_0x291d7b,_0x1b2dcf,_0x132c58){return new BPromise(function(_0x55033f,_0x5210cf){logger[_0x66cd('0x4')](_0x66cd('0x5'),_0x132c58||_0x66cd('0x6'));var _0x165080=new WebSocket(_0x132c58||_0x66cd('0x6'),{'perMessageDeflate':![]});var _0x1b1cac='';var _0x2b234c='0';var _0x3814f1='1';var _0x3989df=_0x66cd('0x7');function _0x2b4fa8(_0x598e5b){var _0xd24ac3=crypto[_0x66cd('0x8')](_0x66cd('0x9'));_0xd24ac3['update'](_0x598e5b);return _0xd24ac3[_0x66cd('0xa')](_0x66cd('0xb'));}function _0x25b917(){try{logger[_0x66cd('0x4')](_0x66cd('0xc'));var _0x425f53=moment()[_0x66cd('0xd')]();var _0x570449=_0x2b4fa8(_0x425f53+_0x291d7b+_0x1b2dcf);_0x165080['send'](JSON[_0x66cd('0xe')]({'appID':_0x291d7b,'timestamp':_0x425f53,'appKey':_0x570449}));var _0x5ea780=fs[_0x66cd('0xf')](_0x28a4ae);_0x5ea780['on'](_0x66cd('0x10'),function(_0x214619){_0x165080['send'](_0x214619);});_0x5ea780['on'](_0x66cd('0x11'),function(){_0x165080[_0x66cd('0x12')](_0x66cd('0x13'));});}catch(_0x1e8d89){logger[_0x66cd('0x14')]('Tilde\x20ASR\x20send\x20error',JSON[_0x66cd('0xe')](_0x1e8d89));_0x165080[_0x66cd('0x15')]();}}function _0x44c206(_0x5d4746){try{if(_0x5d4746){var _0x3c5586=JSON[_0x66cd('0x16')](_0x5d4746);switch(_0x3c5586[_0x66cd('0x17')]){case 0x0:if(_0x3c5586[_0x66cd('0x18')]){if(_0x3c5586[_0x66cd('0x18')][_0x66cd('0x19')]){logger[_0x66cd('0x4')](_0x66cd('0x1a'),JSON[_0x66cd('0xe')](_0x3c5586[_0x66cd('0x18')][_0x66cd('0x1b')]));_0x1b1cac=_0x3c5586['result'][_0x66cd('0x1b')][0x0][_0x66cd('0x1c')];_0x2b234c=_0x3c5586[_0x66cd('0x18')][_0x66cd('0x1b')][0x0][_0x66cd('0x1d')];_0x3814f1='0';_0x3989df='Success.';_0x165080[_0x66cd('0x15')]();}}break;case 0x1:logger[_0x66cd('0x4')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x3814f1='1';_0x3989df=_0x66cd('0x7');break;case 0x2:logger['info'](_0x66cd('0x1e'));_0x3814f1='2';_0x3989df=_0x66cd('0x1e');break;case 0x9:logger[_0x66cd('0x4')](_0x66cd('0x1f'));_0x3814f1='9';_0x3989df=_0x66cd('0x1f');break;case 0xa:logger[_0x66cd('0x4')]('Authentication\x20failed.');_0x3814f1='10';_0x3989df=_0x66cd('0x20');break;case 0xb:logger[_0x66cd('0x4')](_0x66cd('0x21'));_0x3814f1='11';_0x3989df=_0x66cd('0x21');}}}catch(_0x2bbd0e){logger[_0x66cd('0x14')](_0x66cd('0x22'),JSON[_0x66cd('0xe')](_0x2bbd0e));_0x165080[_0x66cd('0x15')]();}}function _0x5b6932(){logger[_0x66cd('0x4')](_0x66cd('0x23'));_0x55033f({'transcript':_0x1b1cac,'confidence':_0x2b234c,'status':_0x3814f1,'status_message':_0x3989df});}function _0x388e13(_0x43c94d){logger[_0x66cd('0x14')](_0x66cd('0x24'));if(!_[_0x66cd('0x25')](_0x43c94d)){logger[_0x66cd('0x14')](_[_0x66cd('0x26')](_0x43c94d)?JSON[_0x66cd('0xe')](_0x43c94d):_0x43c94d);}}_0x165080['on'](_0x66cd('0x27'),_0x25b917);_0x165080['on'](_0x66cd('0x28'),_0x44c206);_0x165080['on'](_0x66cd('0x11'),_0x5b6932);_0x165080['on'](_0x66cd('0x14'),_0x388e13);});};
\ No newline at end of file
index 335bf3e..bfd9627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa48d=['./asr'];(function(_0x443dba,_0x4bb020){var _0x3034f1=function(_0x3e5804){while(--_0x3e5804){_0x443dba['push'](_0x443dba['shift']());}};_0x3034f1(++_0x4bb020);}(_0xa48d,0xa7));var _0xda48=function(_0x200288,_0x5ce90c){_0x200288=_0x200288-0x0;var _0x2373d9=_0xa48d[_0x200288];return _0x2373d9;};var asr=require(_0xda48('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x3853=['./asr','exports'];(function(_0x2a5f35,_0x3d2f45){var _0x40fb71=function(_0x1876f4){while(--_0x1876f4){_0x2a5f35['push'](_0x2a5f35['shift']());}};_0x40fb71(++_0x3d2f45);}(_0x3853,0x86));var _0x3385=function(_0xc34ce,_0x3ab3d7){_0xc34ce=_0xc34ce-0x0;var _0x125393=_0x3853[_0xc34ce];return _0x125393;};var asr=require(_0x3385('0x0'));module[_0x3385('0x1')]={'asr':asr};
\ No newline at end of file
index 80dbf61..2dfa2f7 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(_0x1cd577,_0x180f2a){var _0x790837=function(_0x2cace5){while(--_0x2cace5){_0x1cd577['push'](_0x1cd577['shift']());}};_0x790837(++_0x180f2a);}(_0xe706,0xa3));var _0x6e70=function(_0x5a4a1e,_0x5f014c){_0x5a4a1e=_0x5a4a1e-0x0;var _0x13b91d=_0xe706[_0x5a4a1e];return _0x13b91d;};'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 _0x9c44=['./error','./channel','127.0.0.1','call','emit','error','createServer','listen','listening','getConnections','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','events','EventEmitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require(_0x49c4('0x0'))[_0x49c4('0x1')];var AGIError=require(_0x49c4('0x2'));var AGIChannel=require(_0x49c4('0x3'));var AGIServer=function(_0x455700,_0x2ad237,_0x4e0313){var _0x4941f1=this;var _0x41a183=null;var _0x57effd=0x0;if(!_0x455700)_0x455700=0x11dd;if(!_0x2ad237)_0x2ad237=_0x49c4('0x4');EventEmitter[_0x49c4('0x5')](_0x4941f1);function _0x69bc41(){if(!_0x455700){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x41a183=net[_0x49c4('0x8')]();_0x41a183[_0x49c4('0x9')](_0x455700,_0x2ad237);_0x41a183['on'](_0x49c4('0xa'),function(){_0x4941f1[_0x49c4('0x6')]('listening');});_0x41a183['on']('connection',function(_0x451ea6){_0x41a183[_0x49c4('0xb')](function(_0x58cad7,_0xb611a1){if(_0x58cad7){_0x4941f1[_0x49c4('0x6')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x58cad7));}else if(_0x4e0313&&_0x4e0313<0x0){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x451ea6[_0x49c4('0xc')]();}else if(_0x4e0313&&_0x4e0313>0x0&&_0x4e0313<_0xb611a1){_0x57effd+=0x1;_0x4941f1[_0x49c4('0x6')]('error',new AGIError(_0x49c4('0xd'),_0x57effd));_0x451ea6[_0x49c4('0xc')]();}else{var _0x21f15a=new AGIChannel(_0x451ea6);_0x21f15a['on'](_0x49c4('0xe'),function(){_0x4941f1[_0x49c4('0x6')](_0x49c4('0xf'),_0x21f15a);});}});});_0x41a183['on'](_0x49c4('0x7'),function(_0x3de397){_0x4941f1['emit'](_0x49c4('0x7'),new AGIError(_0x49c4('0x10'),_0x3de397[_0x49c4('0x11')]));});_0x41a183['on'](_0x49c4('0x12'),function(){_0x4941f1[_0x49c4('0x6')]('close',new AGIError(_0x49c4('0x13')));});}process[_0x49c4('0x14')](function(){_0x69bc41();});};util['inherits'](AGIServer,EventEmitter);module['exports']=function(_0x3c782d,_0x2f82d5,_0x3addb2){return new AGIServer(_0x3c782d,_0x2f82d5,_0x3addb2);};
\ No newline at end of file
index d4a5ac1..2d66007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd027=['createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','callerid','calleridname','context','extension','priority','accountcode','dnid','arg_1','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','list_id','scheduledAt','callback','toString','getPause','getPauseById','agentPause','agent','error','agentUnpause','agentLogout','agentLogin','internal','shellCommand','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','MALE','audioEncoding','googleTTS','google_tts_language','url','method','timeout','number','includes','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','statusMessage','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','dialogflowV2_language','sestekNDA','ispeechTTS','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','clone','isString','replaceObjectAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','length','replaceAllVariables','saveRestApiResult','%s.%s','isArray','split','replaceAll','getVariable','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','setVariable','maxRetry','retry','label','noop','no\x20text\x20configured','exec','MRCPSynth','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','result','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','no\x20list\x20selected','add','delay','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','no\x20grammar\x20configured','RECOG_CONFIDENCE()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','RECOG_INPUT()','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','DIAL','SIP/%s','Executed\x20command\x20%s','dialogflow','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','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','beep','recordFile','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','%s/recordings/%s','NOBEEP','intKey','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','true','false','EVAL\x20CONDITION\x20%s\x20%s','condition','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','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','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','response','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','opts','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','%s/recordings/%s.%s','createSquareRecording','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','restAPI','inspect','%s_STATUS_CODE','statusCode','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','agi://%s/square,\x22%s\x22,\x22%s\x22','host','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','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','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','no\x20variable\x20selected','join','exports','lodash','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','catch','getSquareProject','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','interval','format','open','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById'];(function(_0x247fa1,_0x4ec37c){var _0x244f35=function(_0xfb98be){while(--_0xfb98be){_0x247fa1['push'](_0x247fa1['shift']());}};_0x244f35(++_0x4ec37c);}(_0xd027,0x197));var _0x7d02=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd027[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var util=require('util');var _=require(_0x7d02('0x0'));var sh=require('shelljs');var odbc=require('odbc')();var rs=require(_0x7d02('0x1'));var moment=require(_0x7d02('0x2'));var Mustache=require(_0x7d02('0x3'));var rp=require(_0x7d02('0x4'));var logger=require(_0x7d02('0x5'))(_0x7d02('0x6'));var config=require(_0x7d02('0x7'));var shared=require(_0x7d02('0x8'));var scripts=require('./scripts');var FILES_PATH=_0x7d02('0x9');var recursiveMapAttributes=[_0x7d02('0xa'),_0x7d02('0xb')];var verticesWithRetry=[_0x7d02('0xc'),_0x7d02('0xd'),_0x7d02('0xe')];var AGIVertices=function(_0x43be18,_0x1eac8f,_0x10af16){this[_0x7d02('0xf')]=_0x43be18;this[_0x7d02('0x10')]=_0x1eac8f;this[_0x7d02('0x11')]=_0x10af16;};AGIVertices[_0x7d02('0x12')]['getVariable']=function(_0x30e2ec,_0x203087){this['rpc'][_0x7d02('0x13')](_0x30e2ec)[_0x7d02('0x14')](function(_0x3fb728){_0x203087(null,_0x3fb728?_0x3fb728[_0x7d02('0x15')]:![]);})['catch'](function(_0x3ef85f){_0x203087(_0x3ef85f);});};AGIVertices['prototype'][_0x7d02('0x16')]=function(_0x1e38b5,_0x5351aa){this[_0x7d02('0x10')][_0x7d02('0x17')](_0x1e38b5)['then'](function(_0x2dcb51){_0x5351aa(null,_0x2dcb51?_0x2dcb51[_0x7d02('0x15')]:![]);})[_0x7d02('0x18')](function(_0x53ba2a){_0x5351aa(_0x53ba2a);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x19')]=function(_0x1edbd0,_0x2017f0){this[_0x7d02('0x10')][_0x7d02('0x1a')](_0x1edbd0)[_0x7d02('0x14')](function(_0x3024d2){_0x2017f0(null,_0x3024d2?_0x3024d2[_0x7d02('0x15')]:![]);})[_0x7d02('0x18')](function(_0x28695f){_0x2017f0(_0x28695f);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1b')]=function(_0x209421,_0x442a45){this[_0x7d02('0x10')]['getSquareOdbcById'](_0x209421)[_0x7d02('0x14')](function(_0x152291){_0x442a45(null,_0x152291?_0x152291[_0x7d02('0x1c')]:![]);})[_0x7d02('0x18')](function(_0x3f687b){_0x442a45(_0x3f687b);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1d')]=function(_0x5a8d0e,_0x163bbc){this[_0x7d02('0x10')][_0x7d02('0x1e')](_0x5a8d0e)[_0x7d02('0x14')](function(_0x102631){_0x163bbc(null,_0x102631?_0x102631[_0x7d02('0x15')]:![]);})[_0x7d02('0x18')](function(_0x241303){_0x163bbc(_0x241303);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1f')]=function(_0x870a68,_0x555131){this[_0x7d02('0x10')][_0x7d02('0x20')](_0x870a68)[_0x7d02('0x14')](function(_0x4e3053){_0x555131(null,_0x4e3053?_0x4e3053['name']:![]);})[_0x7d02('0x18')](function(_0x18fa77){_0x555131(_0x18fa77);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x21')]=function(_0x5e35a9,_0x452b8e){var _0x16044b=this;this[_0x7d02('0x10')]['getSoundById'](_0x5e35a9)['then'](function(_0x4ae0c9){_0x452b8e(null,_0x4ae0c9?_0x16044b[_0x7d02('0x22')](_0x4ae0c9[_0x7d02('0x23')]):![]);})[_0x7d02('0x18')](function(_0x2ab1ae){_0x452b8e(_0x2ab1ae);});};AGIVertices['prototype'][_0x7d02('0x24')]=function(_0x5a8d2b,_0x4f10e0){this[_0x7d02('0x10')][_0x7d02('0x25')](_0x5a8d2b)[_0x7d02('0x14')](function(_0x3dad1e){_0x4f10e0(null,_0x3dad1e?_0x3dad1e:![]);})['catch'](function(_0x3d6789){_0x4f10e0(_0x3d6789);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x26')]=function(_0x4bac3e,_0x868f7e,_0x3aaa05){this[_0x7d02('0x11')][_0x7d02('0x26')](_0x4bac3e,_0x868f7e)[_0x7d02('0x14')](function(){_0x3aaa05(null);})[_0x7d02('0x18')](function(_0x330ff3){_0x3aaa05(_0x330ff3);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x27')]=function(_0x12014b,_0x40ed5a){this[_0x7d02('0x10')]['getIntervalById'](_0x12014b)[_0x7d02('0x14')](function(_0x616410){if(_0x616410){if(_0x616410[_0x7d02('0x28')]){_0x40ed5a(null,[_0x616410[_0x7d02('0x29')]]);}else{_0x40ed5a(null,_['map'](_0x616410['Intervals'],_0x7d02('0x29')));}}else{_0x40ed5a(null,![]);}})['catch'](function(_0x589515){_0x40ed5a(_0x589515);});};AGIVertices[_0x7d02('0x12')]['getSoundPath']=function(_0x5d0f25){return util[_0x7d02('0x2a')]('%s/sounds/converted/%s',FILES_PATH,_0x5d0f25);};AGIVertices[_0x7d02('0x12')]['getQueryOdbc']=function(_0x27383c,_0x5a665c,_0x1e3940){odbc[_0x7d02('0x2b')](_0x27383c,function(_0x67544f){if(_0x67544f){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x67544f);_0x1e3940(_0x67544f);}else{logger[_0x7d02('0x2c')](_0x7d02('0x2d'));odbc[_0x7d02('0x2e')](_0x5a665c,function(_0x6f7a4c,_0x2513c8){if(_0x6f7a4c){logger[_0x7d02('0x2c')](_0x7d02('0x2f'),_0x5a665c);_0x1e3940(_0x6f7a4c);}else{logger[_0x7d02('0x2c')](_0x7d02('0x30'),_0x5a665c);odbc[_0x7d02('0x31')](function(_0x306489){if(_0x306489){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x306489);}_0x1e3940(null,_0x2513c8);});}});}});};AGIVertices['prototype'][_0x7d02('0x32')]=function(_0x3f9d91,_0x17bbe0){this[_0x7d02('0x10')][_0x7d02('0x33')](_0x3f9d91)[_0x7d02('0x14')](function(_0x19ad15){_0x17bbe0(null,_0x19ad15?_0x19ad15:![]);})[_0x7d02('0x18')](function(_0x1271d6){_0x17bbe0(_0x1271d6);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x34')]=function(_0xd6f903,_0x8245cc){this['rpc']['createSmsMessage'](_0xd6f903)[_0x7d02('0x14')](function(_0x5dfc1e){_0x8245cc(null,_0x5dfc1e);})['catch'](function(_0x3e048d){_0x8245cc(_0x3e048d);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x35')]=function(_0x1ebdda,_0x2866d7,_0x22f7e4){this[_0x7d02('0x10')]['createSquareDetailsReport']({'uniqueid':this[_0x7d02('0xf')][_0x7d02('0x36')],'node':_0x1ebdda['label'],'application':_0x1ebdda[_0x7d02('0x37')],'data':_0x2866d7||null,'project_name':this['channel']['arg_1'],'callerid':this[_0x7d02('0xf')][_0x7d02('0x38')]})[_0x7d02('0x14')](function(_0x11155b){if(_0x22f7e4){_0x22f7e4(null,_0x11155b);}})[_0x7d02('0x18')](function(_0xc75fc7){if(_0x22f7e4){_0x22f7e4(_0xc75fc7);}});};AGIVertices[_0x7d02('0x12')]['createSquareRecording']=function(_0x1e68f6,_0x470575,_0x41f4ea,_0x5bd3f9){this[_0x7d02('0x10')]['createSquareRecording']({'uniqueid':this['channel'][_0x7d02('0x36')],'callerid':this[_0x7d02('0xf')][_0x7d02('0x38')],'calleridname':this[_0x7d02('0xf')][_0x7d02('0x39')],'context':this['channel'][_0x7d02('0x3a')],'extension':this['channel'][_0x7d02('0x3b')],'priority':this[_0x7d02('0xf')][_0x7d02('0x3c')],'accountcode':this[_0x7d02('0xf')][_0x7d02('0x3d')],'dnid':this[_0x7d02('0xf')][_0x7d02('0x3e')],'projectName':this[_0x7d02('0xf')][_0x7d02('0x3f')],'saveName':_0x470575,'filename':_0x1e68f6['file']||_0x470575,'savePath':_0x41f4ea})[_0x7d02('0x14')](function(_0x1c5e70){_0x5bd3f9(null,_0x1c5e70);})[_0x7d02('0x18')](function(_0x228392){_0x5bd3f9(_0x228392);});};AGIVertices['prototype'][_0x7d02('0x40')]=function(_0x3d8711,_0x55187a,_0x3f9d1b,_0x377ce0,_0x481cb7){this[_0x7d02('0x10')][_0x7d02('0x40')]({'uniqueid':this[_0x7d02('0xf')][_0x7d02('0x36')],'body':_0x3d8711,'direction':_0x55187a,'providerName':_0x3f9d1b,'providerResponse':_0x377ce0})[_0x7d02('0x14')](function(_0x363f58){if(_0x481cb7){_0x481cb7(null,_0x363f58);}})['catch'](function(_0x4d710b){if(_0x481cb7){_0x481cb7(_0x4d710b);}});};AGIVertices['prototype'][_0x7d02('0x41')]=function(_0x4c5465,_0x3442b9){this[_0x7d02('0x10')][_0x7d02('0x41')]({'firstName':_[_0x7d02('0x42')](_0x4c5465[_0x7d02('0x15')])||_[_0x7d02('0x43')](_0x4c5465['name'])?_0x7d02('0x44')+Math[_0x7d02('0x45')]():_0x4c5465[_0x7d02('0x15')],'lastName':_['isEmpty'](_0x4c5465[_0x7d02('0x46')])||_['isNil'](_0x4c5465[_0x7d02('0x46')])?null:_0x4c5465['lastName'],'phone':_0x4c5465['phone'],'ListId':_0x4c5465[_0x7d02('0x47')],'scheduledat':_0x4c5465[_0x7d02('0x48')],'callbackUniqueid':this[_0x7d02('0xf')]['uniqueid'],'tags':_0x7d02('0x49'),'description':'Callback\x20scheduled\x20at\x20'+_0x4c5465[_0x7d02('0x48')][_0x7d02('0x4a')](),'priority':_0x4c5465['callback_priority']})[_0x7d02('0x14')](function(_0x11ec47){_0x3442b9(null,_0x11ec47);})['catch'](function(_0x5310bd){_0x3442b9(_0x5310bd);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x4b')]=function(_0xe88aa6,_0x5c7032){this['rpc'][_0x7d02('0x4c')](_0xe88aa6)[_0x7d02('0x14')](function(_0x2d771b){_0x5c7032(null,_0x2d771b?_0x2d771b[_0x7d02('0x15')]:![]);})[_0x7d02('0x18')](function(_0x568bf0){_0x5c7032(_0x568bf0);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x4d')]=function(_0x12a7f6,_0x2fbdac,_0x2bc90f){var _0x3fce59={'role':_0x7d02('0x4e')};_0x3fce59[_0x12a7f6]=this[_0x7d02('0xf')][_0x7d02('0x38')];this['rpc'][_0x7d02('0x4d')](_0x3fce59,_0x2fbdac,this['channel'][_0x7d02('0x36')])['then'](function(_0x207cf4){_0x2bc90f(null,_['isNil'](_0x207cf4)?![]:!![]);})[_0x7d02('0x18')](function(_0x34023d){logger[_0x7d02('0x4f')](_0x34023d);_0x2bc90f(null,![]);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x50')]=function(_0x4b35e7,_0x69ba7a){var _0x2f45c4={'role':'agent'};_0x2f45c4[_0x4b35e7]=this[_0x7d02('0xf')]['callerid'];this[_0x7d02('0x10')]['agentUnpause'](_0x2f45c4)[_0x7d02('0x14')](function(_0x113e45){_0x69ba7a(null,_[_0x7d02('0x43')](_0x113e45)?![]:!![]);})['catch'](function(_0x18131c){logger[_0x7d02('0x4f')](_0x18131c);_0x69ba7a(null,![]);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x51')]=function(_0x42be7e,_0x5e62d5){var _0x1247e0={'role':'agent'};_0x1247e0[_0x42be7e]=this[_0x7d02('0xf')][_0x7d02('0x38')];this['rpc'][_0x7d02('0x51')](_0x1247e0)[_0x7d02('0x14')](function(_0x3b1add){_0x5e62d5(null,_[_0x7d02('0x43')](_0x3b1add)?![]:!![]);})[_0x7d02('0x18')](function(_0xb73b41){logger[_0x7d02('0x4f')](_0xb73b41);_0x5e62d5(null,![]);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x52')]=function(_0x23dbee,_0xf23f6){var _0x28b8f6={'role':'agent'};_0x28b8f6[_0x23dbee]=this[_0x7d02('0xf')][_0x7d02('0x38')];var _0x3b5916=_0x23dbee!=_0x7d02('0x53')?util[_0x7d02('0x2a')]('%s/%s@from-sip/n','LOCAL',this[_0x7d02('0xf')][_0x7d02('0x38')]):undefined;this['rpc'][_0x7d02('0x52')](_0x28b8f6,_0x3b5916)[_0x7d02('0x14')](function(_0x26c0e5){_0xf23f6(null,_[_0x7d02('0x43')](_0x26c0e5)?![]:!![]);})[_0x7d02('0x18')](function(_0x26a16d){logger[_0x7d02('0x4f')](_0x26a16d);_0xf23f6(null,![]);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x54')]=function(_0x1703a3,_0x5651ca){sh['exec'](_['trim'](_0x1703a3),function(_0xf248d6,_0x407e89){var _0x5a7e49=_0x407e89['replace'](/(\r\n|\n|\r)/gm,'');_0x5651ca(null,_0x5a7e49);});};AGIVertices[_0x7d02('0x12')]['googleCloudTTS']=function(_0x27d245,_0x3b58a8){scripts[_0x7d02('0x55')](_0x27d245[_0x7d02('0x56')],_0x27d245[_0x7d02('0x57')]||'text',_0x27d245[_0x7d02('0x58')],_0x27d245[_0x7d02('0x59')]||'en-US',_0x27d245[_0x7d02('0x5a')]||_0x7d02('0x5b'),_0x27d245[_0x7d02('0x5c')]||'MP3')[_0x7d02('0x14')](function(_0x373309){_0x3b58a8(null,_0x373309);})[_0x7d02('0x18')](function(_0x2118bd){_0x3b58a8(_0x2118bd);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x5d')]=function(_0x566a72,_0x13f85d){scripts[_0x7d02('0x5d')](_0x566a72[_0x7d02('0x58')],_0x566a72[_0x7d02('0x5e')]||'en',0x1)[_0x7d02('0x14')](function(_0xa2dfc3){_0x13f85d(null,_0xa2dfc3);})[_0x7d02('0x18')](function(_0x371483){_0x13f85d(_0x371483);});};AGIVertices['prototype']['restAPI']=function(_0x55f718,_0x506f21){var _0x325416={'uri':_0x55f718[_0x7d02('0x5f')],'method':_0x55f718[_0x7d02('0x60')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x55f718[_0x7d02('0x61')])===_0x7d02('0x62')&&parseInt(_0x55f718['timeout'])>=0x1?parseInt(_0x55f718[_0x7d02('0x61')])*0x3e8:0x5*0x3e8};if(_[_0x7d02('0x63')](['POST',_0x7d02('0x64')],_0x325416[_0x7d02('0x60')][_0x7d02('0x65')]())){try{_0x325416[_0x7d02('0x66')]=_0x55f718['rawBody']?JSON[_0x7d02('0x67')](_0x55f718[_0x7d02('0xb')]):{};}catch(_0x3ab226){logger[_0x7d02('0x4f')](_0x7d02('0x68'),_0x3ab226);}}try{_0x325416[_0x7d02('0x69')]=_0x55f718[_0x7d02('0xa')]?JSON[_0x7d02('0x67')](_0x55f718['rawHeaders']):{};}catch(_0x475df5){logger[_0x7d02('0x4f')](_0x7d02('0x6a'),_0x475df5);}if(_0x55f718[_0x7d02('0x6b')]){try{var _0x5d9823=require(_0x55f718['computedVariables'])[_0x7d02('0x6c')](this,_0x325416);_0x325416[_0x7d02('0x6d')]=Mustache[_0x7d02('0x6e')](_0x55f718[_0x7d02('0x5f')],_0x5d9823,{},['$$','$$']);if(_0x325416[_0x7d02('0x69')]){_0x325416[_0x7d02('0x69')]=JSON['parse'](Mustache[_0x7d02('0x6e')](JSON[_0x7d02('0x6f')](_0x325416[_0x7d02('0x69')]),_0x5d9823,{},['$$','$$']));}if(_0x325416[_0x7d02('0x66')]){_0x325416[_0x7d02('0x66')]=JSON['parse'](Mustache[_0x7d02('0x6e')](JSON[_0x7d02('0x6f')](_0x325416[_0x7d02('0x66')]),_0x5d9823,{},['$$','$$']));}}catch(_0x32ab76){logger[_0x7d02('0x4f')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x32ab76);}}rp(_0x325416)[_0x7d02('0x14')](function(_0x13d98a){var _0x3848c2={'statusCode':_0x13d98a['statusCode']||0xc8,'statusMessage':_0x13d98a[_0x7d02('0x70')]||'OK','headers':_0x13d98a[_0x7d02('0x69')]||{},'body':_0x13d98a['body']||{}};_0x506f21(null,_0x3848c2);})[_0x7d02('0x18')](function(_0x4e7698){var _0xc9ab15={'statusCode':_0x4e7698['statusCode']||0x1f4,'statusMessage':_0x4e7698['message']||_0x7d02('0x71'),'headers':_0x4e7698[_0x7d02('0x72')][_0x7d02('0x69')]||{},'body':_0x4e7698['options'][_0x7d02('0x66')]||{}};_0x506f21(null,_0xc9ab15);});};AGIVertices[_0x7d02('0x12')]['googleDialogflow']=function(_0x179523,_0x447de5){scripts[_0x7d02('0x73')](this[_0x7d02('0xf')][_0x7d02('0x36')],_0x179523[_0x7d02('0x74')],_0x179523['text'],_0x179523['dialogflow_language']||'en')[_0x7d02('0x14')](function(_0x17be6e){_0x447de5(null,_0x17be6e);})[_0x7d02('0x18')](function(_0x289252){_0x447de5(_0x289252);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x75')]=function(_0xb4ed75,_0x95f921){scripts['googleDialogflowV2'](this[_0x7d02('0xf')][_0x7d02('0x36')],_0xb4ed75[_0x7d02('0x76')],_0xb4ed75['client_email'],_0xb4ed75['private_key'],_0xb4ed75[_0x7d02('0x58')],_0xb4ed75[_0x7d02('0x77')]||'en')[_0x7d02('0x14')](function(_0x14754b){_0x95f921(null,_0x14754b);})[_0x7d02('0x18')](function(_0x86108f){_0x95f921(_0x86108f);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x78')]=function(_0x56c565,_0x51587e){scripts[_0x7d02('0x78')](this[_0x7d02('0xf')],_0x56c565)[_0x7d02('0x14')](function(_0x1b9c68){_0x51587e(null,_0x1b9c68);})[_0x7d02('0x18')](function(_0x24037e){_0x51587e(_0x24037e);});};AGIVertices[_0x7d02('0x12')]['ispeechTTS']=function(_0x42d7d8,_0x4ad6a9){scripts[_0x7d02('0x79')](_0x42d7d8[_0x7d02('0x74')],_0x42d7d8[_0x7d02('0x58')],_0x42d7d8['ispeech_tts_language']||_0x7d02('0x7a'),_0x42d7d8[_0x7d02('0x7b')])['then'](function(_0x217983){_0x4ad6a9(null,_0x217983);})['catch'](function(_0xff0f00){_0x4ad6a9(_0xff0f00);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x7c')]=function(_0x1429ce,_0x392eb2,_0x454f97){scripts['ispeechASR'](_0x392eb2,_0x1429ce[_0x7d02('0x74')],_0x1429ce[_0x7d02('0x7d')]||_0x7d02('0x7a'),this[_0x7d02('0x7e')](_0x1429ce[_0x7d02('0x7f')])?_0x1429ce[_0x7d02('0x7f')]:undefined)[_0x7d02('0x14')](function(_0x26854f){_0x454f97(null,_0x26854f);})[_0x7d02('0x18')](function(_0x410ce3){_0x454f97(_0x410ce3);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x80')]=function(_0x5e29a4,_0x2db993){scripts[_0x7d02('0x80')](_0x5e29a4[_0x7d02('0x81')],_0x5e29a4[_0x7d02('0x82')],_0x5e29a4[_0x7d02('0x83')],_0x5e29a4['aws_polly_voice']||'Amy',_0x5e29a4[_0x7d02('0x58')],_0x5e29a4[_0x7d02('0x84')]||_0x7d02('0x58'))[_0x7d02('0x14')](function(_0x3a4342){_0x2db993(null,_0x3a4342);})[_0x7d02('0x18')](function(_0x50b41c){_0x2db993(_0x50b41c);});};AGIVertices['prototype'][_0x7d02('0x85')]=function(_0x5469ed,_0x28f9c8){scripts[_0x7d02('0x85')](this[_0x7d02('0xf')][_0x7d02('0x36')],_0x5469ed[_0x7d02('0x81')],_0x5469ed['aws_secret_access_key'],_0x5469ed[_0x7d02('0x86')],_0x5469ed[_0x7d02('0x58')],_0x5469ed[_0x7d02('0x87')])['then'](function(_0x162c1f){_0x28f9c8(null,_0x162c1f);})[_0x7d02('0x18')](function(_0x280bae){_0x28f9c8(_0x280bae);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x88')]=function(_0x495f81,_0x2a3dc7,_0x59a69a){scripts[_0x7d02('0x88')](_0x2a3dc7,_0x495f81[_0x7d02('0x74')],_0x495f81[_0x7d02('0x89')]||_0x7d02('0x7a'))[_0x7d02('0x14')](function(_0x537b8f){_0x59a69a(null,_0x537b8f);})[_0x7d02('0x18')](function(_0x3bb9ca){_0x59a69a(_0x3bb9ca);});};AGIVertices[_0x7d02('0x12')][_0x7d02('0x8a')]=function(_0x285c61,_0x50ab52,_0x1c4a95){scripts[_0x7d02('0x8a')](_0x50ab52,_0x285c61[_0x7d02('0x8b')],_0x285c61[_0x7d02('0x8c')],_0x285c61[_0x7d02('0x6d')])[_0x7d02('0x14')](function(_0x55a752){_0x1c4a95(null,_0x55a752);})[_0x7d02('0x18')](function(_0x387f1d){_0x1c4a95(_0x387f1d);});};AGIVertices['prototype'][_0x7d02('0x8d')]=function(_0x1cfd54){var _0x37ad9c=_[_0x7d02('0x63')](verticesWithRetry,_0x1cfd54[_0x7d02('0x37')])?_0x1cfd54:_[_0x7d02('0x8e')](_0x1cfd54);for(var _0x19b32e in _0x37ad9c){if(_0x37ad9c['hasOwnProperty'](_0x19b32e)){if(_0x37ad9c[_0x19b32e]&&_[_0x7d02('0x8f')](_0x37ad9c[_0x19b32e])){if(_[_0x7d02('0x63')](recursiveMapAttributes,_0x19b32e)){_0x37ad9c[_0x19b32e]=this[_0x7d02('0x90')](_0x37ad9c[_0x19b32e]);}else{_0x37ad9c[_0x19b32e]=this['replaceAllVariables'](_0x37ad9c[_0x19b32e]);}}}}return _0x37ad9c;};AGIVertices[_0x7d02('0x12')][_0x7d02('0x91')]=function(_0x45bfc8){for(var _0x94953e in _0x45bfc8){if(_0x45bfc8[_0x7d02('0x92')](_0x94953e)){if(_[_0x7d02('0x93')](_0x45bfc8[_0x94953e])){this['recursiveNodeIndex'](_0x45bfc8[_0x94953e]);}else if(_['isArray'](_0x45bfc8[_0x94953e])){for(var _0x19c8c5=0x0;_0x19c8c5<_0x45bfc8[_0x94953e][_0x7d02('0x94')];_0x19c8c5++){this[_0x7d02('0x91')](_0x45bfc8[_0x94953e][_0x19c8c5]);}}else if(_['isString'](_0x45bfc8[_0x94953e])){_0x45bfc8[_0x94953e]=this[_0x7d02('0x95')](_0x45bfc8[_0x94953e]);}}}};AGIVertices[_0x7d02('0x12')][_0x7d02('0x96')]=function(_0x44de1a,_0x543152){for(var _0x182f19 in _0x44de1a){if(_0x44de1a[_0x7d02('0x92')](_0x182f19)){if(_[_0x7d02('0x93')](_0x44de1a[_0x182f19])){if(!_[_0x7d02('0x42')](_0x44de1a[_0x182f19])){this[_0x7d02('0x96')](_0x44de1a[_0x182f19],util[_0x7d02('0x2a')](_0x7d02('0x97'),_0x543152,_0x182f19));}}else if(_[_0x7d02('0x98')](_0x44de1a[_0x182f19])){for(var _0x115b01=0x0;_0x115b01<_0x44de1a[_0x182f19][_0x7d02('0x94')];_0x115b01++){this['saveRestApiResult'](_0x44de1a[_0x182f19][_0x115b01],util[_0x7d02('0x2a')](_0x7d02('0x97'),_0x543152,_0x182f19+'['+_0x115b01+']'));}}else{if(!_['isNil'](_0x44de1a[_0x182f19])){this['channel']['setVariable'](util[_0x7d02('0x2a')]('%s.%s',_0x543152,_0x182f19),_0x44de1a[_0x182f19]);}}}}};AGIVertices[_0x7d02('0x12')][_0x7d02('0x90')]=function(_0x34b315){try{var _0x27fdd2=JSON['parse'](_0x34b315);this['recursiveNodeIndex'](_0x27fdd2);return JSON[_0x7d02('0x6f')](_0x27fdd2);}catch(_0x242387){return this[_0x7d02('0x95')](_0x34b315);}};AGIVertices[_0x7d02('0x12')][_0x7d02('0x95')]=function(_0x1c1752){var _0x166813=_0x1c1752[_0x7d02('0x99')]('{');for(var _0xf64a5a=0x1;_0xf64a5a<_0x166813[_0x7d02('0x94')];_0xf64a5a+=0x1){var _0x2650aa=_0x166813[_0xf64a5a][_0x7d02('0x99')]('}');if(_0x2650aa[_0x7d02('0x94')]>0x1){_0x1c1752=_0x1c1752[_0x7d02('0x9a')]('{'+_0x2650aa[0x0]+'}',this[_0x7d02('0xf')][_0x7d02('0x9b')](_0x2650aa[0x0])[_0x7d02('0x9c')]||_0x2650aa[0x0]);}}if(_0x166813[_0x7d02('0x94')]===0x1){return _0x1c1752[_0x7d02('0x4a')]();}return this[_0x7d02('0x95')](_0x1c1752);};AGIVertices['prototype'][_0x7d02('0x9d')]=function(_0x360791,_0x2502b7){var _0x2ba36d=this[_0x7d02('0xf')][_0x7d02('0x9b')](_0x360791);if(_0x2ba36d['result']===-0x1){return _0x2ba36d;}logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x9e'),_0x2502b7,_0x2ba36d[_0x7d02('0x9c')]));return this[_0x7d02('0xf')][_0x7d02('0x9f')](_0x2502b7,_0x2ba36d[_0x7d02('0x9c')]);};AGIVertices[_0x7d02('0x12')][_0x7d02('0x7e')]=function(_0x9f82a){return _0x9f82a&&_0x9f82a!=='0'&&_0x9f82a!=='-1'&&_0x9f82a!=='';};AGIVertices[_0x7d02('0x12')][_0x7d02('0xa0')]=function(_0x24da4a){this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x24da4a,'-');_0x24da4a[_0x7d02('0xa1')]=_0x24da4a['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x7d02('0x12')]['mrcpsynth']=function(_0x484d1a){logger[_0x7d02('0x2c')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x484d1a[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x484d1a['text'])){return this['channel'][_0x7d02('0xa3')](_0x7d02('0xa4'));}var _0x204570='\x22'+_0x484d1a[_0x7d02('0x58')]+'\x22';if(this['isConfigured'](_0x484d1a['options'])){_0x204570+=','+_0x484d1a[_0x7d02('0x72')];}var _0x44b48b=this['channel'][_0x7d02('0xa5')](_0x7d02('0xa6'),_0x204570);if(_0x44b48b['result']===-0x1){return _0x44b48b;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('Executed\x20command\x20MRCPSynth\x20%s',_0x204570));};AGIVertices['prototype'][_0x7d02('0xa7')]=function(_0x17402f){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xa8'),_0x17402f[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x17402f[_0x7d02('0xa9')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x4e27e6=_0x17402f[_0x7d02('0xa9')];if(this['isConfigured'](_0x17402f[_0x7d02('0x72')])){_0x4e27e6+=','+_0x17402f[_0x7d02('0x72')];}var _0x1700d0=this[_0x7d02('0xf')][_0x7d02('0xa5')](_0x7d02('0xaa'),_0x4e27e6);if(_0x1700d0[_0x7d02('0xab')]===-0x1){return _0x1700d0;}var _0x2b0e38=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0x7d02('0xac'));if(_0x2b0e38[_0x7d02('0xab')]===-0x1){return _0x2b0e38;}var _0x5c3761=this[_0x7d02('0x9d')]('RECOG_INPUT()',_0x7d02('0xad'));if(_0x5c3761[_0x7d02('0xab')]===-0x1){return _0x5c3761;}var _0x19a60b=this[_0x7d02('0x9d')](_0x7d02('0xae'),'MRCP_RECOG_INSTANCE');if(_0x19a60b[_0x7d02('0xab')]===-0x1){return _0x19a60b;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xaf'),_0x4e27e6));};AGIVertices[_0x7d02('0x12')]['agi']=function(_0x43c8a0){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xb0'),_0x43c8a0['label']));return this[_0x7d02('0xf')]['agi']([_0x43c8a0[_0x7d02('0xb1')],_0x43c8a0[_0x7d02('0xb2')]]);};AGIVertices[_0x7d02('0x12')][_0x7d02('0xb3')]=function(_0x471a23){logger['info'](util['format'](_0x7d02('0xb4'),_0x471a23[_0x7d02('0xa2')]));if(this['isConfigured'](_0x471a23[_0x7d02('0x61')])){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xb5'),_0x471a23[_0x7d02('0x61')]));var _0x293012=this['channel'][_0x7d02('0xb6')](_0x471a23[_0x7d02('0x61')]);if(_0x293012[_0x7d02('0xab')]===-0x1){return _0x293012;}}return this[_0x7d02('0xf')]['answer']();};AGIVertices['prototype'][_0x7d02('0x49')]=function(_0x1b0c6d){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x1b0c6d[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x1b0c6d[_0x7d02('0x47')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x1b0c6d,_0x7d02('0xb7'));}_0x1b0c6d[_0x7d02('0x48')]=moment();if(this[_0x7d02('0x7e')](_0x1b0c6d['delay'])){_0x1b0c6d['scheduledAt']=moment()[_0x7d02('0xb8')](_0x1b0c6d[_0x7d02('0xb9')],_0x7d02('0xba'));}if(!this[_0x7d02('0x7e')](_0x1b0c6d[_0x7d02('0xbb')])){_0x1b0c6d[_0x7d02('0xbb')]=0x2;}this[_0x7d02('0x41')][_0x7d02('0x6c')](this,_0x1b0c6d);return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xbc'),_0x1b0c6d[_0x7d02('0xbd')],_0x1b0c6d[_0x7d02('0x47')],_0x1b0c6d[_0x7d02('0x48')]));};AGIVertices['prototype'][_0x7d02('0xbe')]=function(_0x1903d1){logger['info'](util[_0x7d02('0x2a')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x1903d1[_0x7d02('0xa2')]));var _0x585421=this[_0x7d02('0xf')]['exec'](_0x1903d1[_0x7d02('0xbf')],_0x1903d1[_0x7d02('0x72')]);if(_0x585421[_0x7d02('0xab')]===-0x1){return _0x585421;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xc0'),_0x1903d1[_0x7d02('0xbf')],_0x1903d1[_0x7d02('0x72')]));};AGIVertices[_0x7d02('0x12')][_0x7d02('0xc1')]=function(_0x48c73e){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x48c73e[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x48c73e[_0x7d02('0x58')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}var _0x317bfd='\x22'+_0x48c73e['text']+'\x22';if(this['isConfigured'](_0x48c73e['options'])){_0x317bfd+=','+_0x48c73e[_0x7d02('0x72')];}var _0x2c93b3=this[_0x7d02('0xf')]['exec'](_0x7d02('0xa6'),_0x317bfd);if(_0x2c93b3['result']===-0x1){return _0x2c93b3;}return this[_0x7d02('0xf')]['noop'](util[_0x7d02('0x2a')]('Executed\x20command\x20MRCPSynth\x20%s',_0x317bfd));};AGIVertices['prototype'][_0x7d02('0xc2')]=function(_0x31f8c0){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xc3'),_0x31f8c0[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x31f8c0['text'])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}var _0x1d1cc6='\x22'+_0x31f8c0[_0x7d02('0x58')]+'\x22';if(this[_0x7d02('0x7e')](_0x31f8c0['options'])){_0x1d1cc6+=','+_0x31f8c0[_0x7d02('0x72')];}var _0x1ba5a=this[_0x7d02('0xf')]['exec'](_0x7d02('0xa6'),_0x1d1cc6);if(_0x1ba5a[_0x7d02('0xab')]===-0x1){return _0x1ba5a;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xc4'),_0x1d1cc6));};AGIVertices[_0x7d02('0x12')]['lumenvoxasr']=function(_0x22864e){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x22864e[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x22864e[_0x7d02('0xa9')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xc5'));}var _0x50b757=_0x22864e[_0x7d02('0xa9')];if(this[_0x7d02('0x7e')](_0x22864e['options'])){_0x50b757+=','+_0x22864e['options'];}var _0x46803b=this[_0x7d02('0xf')][_0x7d02('0xa5')]('MRCPRecog',_0x50b757);if(_0x46803b[_0x7d02('0xab')]===-0x1){return _0x46803b;}var _0x581923=this['getAndSetVariable'](_0x7d02('0xc6'),'LUMENVOX_ASR_CONFIDENCE');if(_0x581923['result']===-0x1){return _0x581923;}var _0x2178ff=this['getAndSetVariable']('RECOG_INPUT()',_0x7d02('0xc7'));if(_0x2178ff[_0x7d02('0xab')]===-0x1){return _0x2178ff;}var _0x3170da=this['getAndSetVariable']('RECOG_INSTANCE()',_0x7d02('0xc8'));if(_0x3170da[_0x7d02('0xab')]===-0x1){return _0x3170da;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xaf'),_0x50b757));};AGIVertices['prototype'][_0x7d02('0xc9')]=function(_0x9579f1){logger['info'](util[_0x7d02('0x2a')](_0x7d02('0xca'),_0x9579f1[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x9579f1[_0x7d02('0xa9')])){return this['channel'][_0x7d02('0xa3')](_0x7d02('0xc5'));}var _0x178195=_0x9579f1[_0x7d02('0xa9')];if(this[_0x7d02('0x7e')](_0x9579f1[_0x7d02('0x72')])){_0x178195+=','+_0x9579f1[_0x7d02('0x72')];}var _0x322a0a=this[_0x7d02('0xf')][_0x7d02('0xa5')](_0x7d02('0xaa'),_0x178195);if(_0x322a0a['result']===-0x1){return _0x322a0a;}var _0x17e783=this[_0x7d02('0x9d')](_0x7d02('0xc6'),_0x7d02('0xcb'));if(_0x17e783[_0x7d02('0xab')]===-0x1){return _0x17e783;}var _0x481b2e=this[_0x7d02('0x9d')](_0x7d02('0xcc'),_0x7d02('0xcd'));if(_0x481b2e[_0x7d02('0xab')]===-0x1){return _0x481b2e;}var _0x54205a=this[_0x7d02('0x9d')](_0x7d02('0xae'),_0x7d02('0xce'));if(_0x54205a[_0x7d02('0xab')]===-0x1){return _0x54205a;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0xaf'),_0x178195));};AGIVertices[_0x7d02('0x12')][_0x7d02('0xcf')]=function(_0x3f6b99){logger[_0x7d02('0x2c')](util['format'](_0x7d02('0xd0'),_0x3f6b99[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x3f6b99['odbc_id'])){return this[_0x7d02('0xf')]['error'](_0x3f6b99,_0x7d02('0xd1'));}var _0x20357b=this['getSquareOdbc']['sync'](this,_0x3f6b99['odbc_id']);if(!_0x20357b){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3f6b99,_0x7d02('0xd2'));}if(!this[_0x7d02('0x7e')](_0x3f6b99[_0x7d02('0x2e')])){return this[_0x7d02('0xf')]['error'](_0x3f6b99,_0x7d02('0xd3'));}var _0x31210c=_0x3f6b99[_0x7d02('0x2e')][_0x7d02('0xd4')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xd5'),_0x31210c));var _0x3a4e46=this['getQueryOdbc']['sync'](this,_0x20357b,_0x31210c);this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x3f6b99,_0x31210c);if(!this['isConfigured'](_0x3f6b99[_0x7d02('0xd6')])){return this['channel']['noop'](_0x7d02('0xd7'));}var _0x552538=this[_0x7d02('0x9b')][_0x7d02('0x6c')](this,_0x3f6b99[_0x7d02('0xd6')]);if(!_0x552538){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3f6b99,_0x7d02('0xd8'));}var _0x547f03=this;_0x3a4e46[_0x7d02('0xd9')](function(_0xbb096f,_0x4a92d8){Object[_0x7d02('0xda')](_0xbb096f)[_0x7d02('0xd9')](function(_0x54124d){_0x547f03['channel'][_0x7d02('0x9f')](util[_0x7d02('0x2a')](_0x7d02('0xdb'),_0x552538,_0x4a92d8,_0x54124d),_0xbb096f[_0x54124d]);});});this[_0x7d02('0xf')][_0x7d02('0x9f')](util[_0x7d02('0x2a')]('%s_ROWS_COUNT',_0x552538),_0x3a4e46[_0x7d02('0x94')]);return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xdc'),_0x552538));};AGIVertices[_0x7d02('0x12')][_0x7d02('0xdd')]=function(_0x3cf6bb){logger[_0x7d02('0xde')](util['format'](_0x7d02('0xdf'),_0x3cf6bb[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x3cf6bb[_0x7d02('0xe0')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3cf6bb,'no\x20user\x20selected');}var _0x5d4fff=this[_0x7d02('0x1d')][_0x7d02('0x6c')](this,_0x3cf6bb['sip_id']);if(!_0x5d4fff){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3cf6bb,'no\x20user\x20found');}var _0x274ba5=this[_0x7d02('0xf')][_0x7d02('0xa5')](_0x7d02('0xe1'),[util[_0x7d02('0x2a')](_0x7d02('0xe2'),_0x5d4fff),_0x3cf6bb[_0x7d02('0x61')],_0x3cf6bb['opts'],_0x3cf6bb['url']]);if(_0x274ba5[_0x7d02('0xab')]===-0x1){return _0x274ba5;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xe3'),_0x7d02('0xe1')));};AGIVertices[_0x7d02('0x12')][_0x7d02('0xe4')]=function(_0x5a7b5b){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xe5'),_0x5a7b5b[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x5a7b5b[_0x7d02('0x74')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xe6'));}if(!this[_0x7d02('0x7e')](_0x5a7b5b['text'])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}this['channel'][_0x7d02('0xe7')]=!![];this[_0x7d02('0x35')](_0x5a7b5b);this[_0x7d02('0x40')](_0x5a7b5b[_0x7d02('0x58')],'in','','');this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xe8'),_0x5a7b5b[_0x7d02('0x58')]));var _0x13cb35=this[_0x7d02('0x73')][_0x7d02('0x6c')](this,_0x5a7b5b);if(_0x13cb35){for(var _0x58f7a2 in _0x13cb35){if(_0x13cb35[_0x7d02('0x92')](_0x58f7a2)){this['channel'][_0x7d02('0x9f')](util[_0x7d02('0x2a')](_0x7d02('0xe9'),_0x58f7a2[_0x7d02('0x65')]()),_0x13cb35[_0x58f7a2]);}}this[_0x7d02('0x40')](_0x13cb35['speech'],_0x7d02('0xea'),_0x7d02('0xe4'),'');return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xeb'),_0x13cb35[_0x7d02('0xec')]));}return this['channel'][_0x7d02('0x4f')](_0x5a7b5b,_0x7d02('0xed'));};AGIVertices[_0x7d02('0x12')][_0x7d02('0xee')]=function(_0x5e3df6){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xef'),_0x5e3df6[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x5e3df6['dialogflowV2_project_id'])){return this['channel'][_0x7d02('0xa3')](_0x7d02('0xf0'));}if(!this[_0x7d02('0x7e')](_0x5e3df6[_0x7d02('0xf1')])){return this[_0x7d02('0xf')]['noop'](_0x7d02('0xf2'));}if(!this[_0x7d02('0x7e')](_0x5e3df6[_0x7d02('0xf3')])){return this[_0x7d02('0xf')]['noop'](_0x7d02('0xf4'));}if(!this['isConfigured'](_0x5e3df6[_0x7d02('0x77')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xf5'));}if(!this[_0x7d02('0x7e')](_0x5e3df6[_0x7d02('0x58')])){return this[_0x7d02('0xf')]['noop'](_0x7d02('0xa4'));}this['channel'][_0x7d02('0xe7')]=!![];this[_0x7d02('0x35')](_0x5e3df6);this[_0x7d02('0x40')](_0x5e3df6[_0x7d02('0x58')],'in','','');this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xf6'),_0x5e3df6[_0x7d02('0x58')]));var _0x1657f0=this[_0x7d02('0x75')][_0x7d02('0x6c')](this,_0x5e3df6);if(_0x1657f0){for(var _0x5b2d10 in _0x1657f0){if(_0x1657f0['hasOwnProperty'](_0x5b2d10)){if(_0x5b2d10!==_0x7d02('0xf7')){this[_0x7d02('0xf')][_0x7d02('0x9f')](util['format'](_0x7d02('0xe9'),_0x5b2d10[_0x7d02('0x65')]()),_0x1657f0[_0x5b2d10]);}}}this[_0x7d02('0x40')](_0x1657f0[_0x7d02('0xec')],_0x7d02('0xea'),_0x7d02('0xee'),_0x1657f0['providerResponse']);return this['channel'][_0x7d02('0xa3')](util['format']('DialogflowV2\x20Result\x20%s',_0x1657f0[_0x7d02('0xec')]));}return this[_0x7d02('0xf')]['error'](_0x5e3df6,_0x7d02('0xf8'));};AGIVertices[_0x7d02('0x12')]['sesteknda']=function(_0x25f3de){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0xf9'),_0x25f3de[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x25f3de[_0x7d02('0xfa')])){return this[_0x7d02('0xf')]['noop'](_0x7d02('0xfb'));}if(!this['isConfigured'](_0x25f3de['username'])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xfc'));}if(!this[_0x7d02('0x7e')](_0x25f3de[_0x7d02('0xfd')])){return this['channel']['noop'](_0x7d02('0xfe'));}if(!this[_0x7d02('0x7e')](_0x25f3de[_0x7d02('0xff')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}this[_0x7d02('0xf')]['bot']=!![];this['createSquareDetailsReport'](_0x25f3de);this[_0x7d02('0x40')](_0x25f3de[_0x7d02('0x58')],'in','','');this[_0x7d02('0xf')]['noop'](util[_0x7d02('0x2a')](_0x7d02('0x100'),_0x25f3de['text']));var _0x53d328=this[_0x7d02('0x78')][_0x7d02('0x6c')](this,_0x25f3de);if(_0x53d328){for(var _0x5f1e8c in _0x53d328){if(_0x53d328[_0x7d02('0x92')](_0x5f1e8c)){this[_0x7d02('0xf')][_0x7d02('0x9f')](util[_0x7d02('0x2a')]('SESTEK_NDA_%s',_0x5f1e8c[_0x7d02('0x65')]()),_0x53d328[_0x5f1e8c]);}}this[_0x7d02('0x40')](_0x53d328[_0x7d02('0xec')],_0x7d02('0xea'),_0x7d02('0x101'),'');if(_0x53d328[_0x7d02('0x102')]){this[_0x7d02('0xf')]['noop'](util[_0x7d02('0x2a')](_0x7d02('0x103'),_0x53d328[_0x7d02('0x102')]));var _0x2a6eea=this[_0x7d02('0xf')][_0x7d02('0x104')](_0x53d328[_0x7d02('0x102')]);try{fs[_0x7d02('0x105')](_0x53d328[_0x7d02('0x102')]+_0x7d02('0x106'));}catch(_0x5331cc){logger[_0x7d02('0x4f')](_0x5331cc);}return _0x2a6eea;}else{return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('SestekNDA\x20Result\x20%s',_0x53d328[_0x7d02('0xec')]));}}return this[_0x7d02('0xf')]['error'](_0x25f3de,_0x7d02('0x107'));};AGIVertices['prototype'][_0x7d02('0x108')]=function(_0x24d78f){logger[_0x7d02('0x2c')](util['format']('Enter\x20in\x20END\x20(%s)\x20block',_0x24d78f['label']));return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x108'));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x109')]=function(_0x44d022){logger['info'](util['format'](_0x7d02('0x10a'),_0x44d022[_0x7d02('0xa2')]));var _0x33ad66='';if(_0x44d022[_0x7d02('0x10b')]){if(!this[_0x7d02('0x7e')](_0x44d022[_0x7d02('0x10b')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x44d022,_0x7d02('0x10c'));}else{var _0x1bcefd=parseInt(_0x44d022['trunk_id'],0xa);if(isNaN(_0x1bcefd)){_0x33ad66=_0x44d022[_0x7d02('0x10b')];}else{_0x33ad66=this[_0x7d02('0x1f')][_0x7d02('0x6c')](this,_0x44d022[_0x7d02('0x10b')]);if(!_0x33ad66){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x44d022,_0x7d02('0x10d'));}}}}else if(_0x44d022[_0x7d02('0x10e')]){_0x33ad66=_0x44d022[_0x7d02('0x10e')];}else{return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x44d022,'no\x20trunk\x20selected');}var _0x25c4c8=this[_0x7d02('0xf')][_0x7d02('0xa5')](_0x7d02('0xe1'),[util[_0x7d02('0x2a')]('SIP/%s/%s',_0x33ad66,_0x44d022[_0x7d02('0xbd')]),_0x44d022[_0x7d02('0x61')],_0x44d022['opts'],_0x44d022[_0x7d02('0x5f')]]);if(_0x25c4c8[_0x7d02('0xab')]===-0x1){return _0x25c4c8;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('Executed\x20command\x20%s',_0x7d02('0xe1')));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x10f')]=function(_0x337cd5){logger['info'](util['format'](_0x7d02('0x110'),_0x337cd5[_0x7d02('0xa2')]));return this[_0x7d02('0xf')][_0x7d02('0xa3')]('finally');};AGIVertices['prototype']['getdigits']=function(_0x59f1ed){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x111'),_0x59f1ed['label']));if(_0x59f1ed['retry']===0x0){return this[_0x7d02('0xa0')](_0x59f1ed);}_0x59f1ed[_0x7d02('0xa1')]-=0x1;if(!this[_0x7d02('0x7e')](_0x59f1ed[_0x7d02('0x112')])){return this['channel'][_0x7d02('0x4f')](_0x59f1ed,_0x7d02('0x113'));}var _0xd44202=this['getSound'][_0x7d02('0x6c')](this,_0x59f1ed[_0x7d02('0x112')]);if(!_0xd44202){return this['channel']['error'](_0x59f1ed,_0x7d02('0x114'));}if(!this[_0x7d02('0x7e')](_0x59f1ed[_0x7d02('0xd6')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4ff25c=this[_0x7d02('0xf')][_0x7d02('0x115')](_0xd44202,_0x59f1ed['response'],_0x59f1ed[_0x7d02('0x116')]);var _0x148e47=_0x4ff25c[_0x7d02('0xab')]?_0x4ff25c['result'][_0x7d02('0x4a')]():'';logger[_0x7d02('0x2c')](_0x7d02('0x117'),JSON[_0x7d02('0x6f')](_0x4ff25c));if(_0x4ff25c['result']===-0x1){this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x59f1ed,_0x148e47);return _0x4ff25c;}else if(_0x4ff25c[_0x7d02('0x9c')]===_0x7d02('0x61')){_0x4ff25c[_0x7d02('0xab')]=_0x148e47['length']>=parseInt(_0x59f1ed[_0x7d02('0x118')])?'x':'i';}else{_0x4ff25c[_0x7d02('0xab')]=_0x148e47[_0x7d02('0x94')]>=parseInt(_0x59f1ed[_0x7d02('0x118')])&&_0x148e47[_0x7d02('0x94')]<=parseInt(_0x59f1ed['maxdigit'])?'x':'i';}var _0x4ec7cd=this[_0x7d02('0x9b')][_0x7d02('0x6c')](this,_0x59f1ed['variable_id']);if(!_0x4ec7cd){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x59f1ed,_0x7d02('0xd8'));}this['channel'][_0x7d02('0x9f')](_0x4ec7cd,_0x148e47);if(this['isConfigured'](_0x59f1ed[_0x7d02('0x119')])){var _0x126818=parseInt(_0x59f1ed[_0x7d02('0x119')],0xa);var _0x31509f=rs[_0x7d02('0x11a')]({'charset':'*','length':_0x126818});var _0x122e4a=_0x148e47[_0x7d02('0x94')];if(_0x122e4a>0x0){if(_0x122e4a>_0x126818){this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x59f1ed,_0x59f1ed[_0x7d02('0x11b')]===_0x7d02('0x11c')?_0x31509f+_0x148e47['substr'](_0x126818):_0x148e47[_0x7d02('0x11d')](0x0,_0x122e4a-_0x126818)+_0x31509f);}else{this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x59f1ed,rs[_0x7d02('0x11a')]({'charset':'*','length':_0x122e4a}));}}else{this['createSquareDetailsReport']['sync'](this,_0x59f1ed,'');}}else{this[_0x7d02('0x35')]['sync'](this,_0x59f1ed,_0x148e47);}return _0x4ff25c;};AGIVertices[_0x7d02('0x12')][_0x7d02('0xe')]=function(_0x476f41){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x11e'),_0x476f41[_0x7d02('0xa2')]));return this[_0x7d02('0xd')](_0x476f41);};AGIVertices[_0x7d02('0x12')]['goal']=function(_0x33300c){logger['info'](util[_0x7d02('0x2a')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x33300c['label']));this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x33300c,_0x33300c[_0x7d02('0x11f')]);return this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x120'),_0x33300c[_0x7d02('0x11f')]));};AGIVertices['prototype']['awspolly']=function(_0xbad8d3){logger[_0x7d02('0x2c')](util['format'](_0x7d02('0x121'),_0xbad8d3[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0xbad8d3[_0x7d02('0x81')])||!this['isConfigured'](_0xbad8d3['aws_secret_access_key'])){return this[_0x7d02('0xf')]['noop'](_0x7d02('0x122'));}if(!this[_0x7d02('0x7e')](_0xbad8d3[_0x7d02('0x58')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('Trying\x20aws\x20Polly\x20%s',_0xbad8d3['text']));var _0x279abe=this[_0x7d02('0x80')][_0x7d02('0x6c')](this,_0xbad8d3);if(_0x279abe){this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x123'),_0x279abe));var _0x58101f=this[_0x7d02('0xf')]['streamFile'](_0x279abe);try{fs[_0x7d02('0x105')](_0x279abe+_0x7d02('0x106'));}catch(_0x4acfc4){logger['error'](_0x4acfc4);}return _0x58101f;}return this[_0x7d02('0xf')]['error'](_0xbad8d3,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x7d02('0x12')]['awslex']=function(_0x3f8d5e){logger[_0x7d02('0x2c')](util['format'](_0x7d02('0x124'),_0x3f8d5e['label']));if(!this['isConfigured'](_0x3f8d5e[_0x7d02('0x81')])||!this[_0x7d02('0x7e')](_0x3f8d5e[_0x7d02('0x82')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x122'));}if(!this[_0x7d02('0x7e')](_0x3f8d5e[_0x7d02('0x87')])){return this[_0x7d02('0xf')]['noop']('no\x20bot\x20name\x20configured');}if(!this[_0x7d02('0x7e')](_0x3f8d5e[_0x7d02('0x58')])){return this['channel'][_0x7d02('0xa3')](_0x7d02('0xa4'));}this[_0x7d02('0xf')][_0x7d02('0xe7')]=!![];this[_0x7d02('0x35')](_0x3f8d5e);this['createSquareMessage'](_0x3f8d5e['text'],'in','','');this['channel']['noop'](util[_0x7d02('0x2a')](_0x7d02('0x125'),_0x3f8d5e[_0x7d02('0x58')]));var _0x3e74ea=this[_0x7d02('0x85')][_0x7d02('0x6c')](this,_0x3f8d5e);if(_0x3e74ea){for(var _0x531cd8 in _0x3e74ea){if(_0x3e74ea['hasOwnProperty'](_0x531cd8)&&_[_0x7d02('0x8f')](_0x3e74ea[_0x531cd8])){this['channel'][_0x7d02('0x9f')](util[_0x7d02('0x2a')](_0x7d02('0x126'),_0x531cd8[_0x7d02('0x65')]()),_0x3e74ea[_0x531cd8]);}}if(_[_0x7d02('0x43')](_0x3e74ea[_0x7d02('0x127')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x128'));}else{this['createSquareMessage'](_0x3e74ea[_0x7d02('0x127')],'out',_0x7d02('0x129'),'');return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x12a'),_0x3e74ea[_0x7d02('0x127')]));}}return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3f8d5e,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x7d02('0x12')][_0x7d02('0x12b')]=function(_0x26b5b2){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x12c'),_0x26b5b2['label'],_0x26b5b2[_0x7d02('0x61')]));if(!this[_0x7d02('0x7e')](_0x26b5b2[_0x7d02('0x74')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xe6'));}var _0x272b0d=_0x7d02('0x12d');var _0x1b25c8=util[_0x7d02('0x2a')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x532903=util[_0x7d02('0x2a')](_0x7d02('0x97'),_0x1b25c8,_0x272b0d);var _0xb9e3f6=!![];if(_0x26b5b2[_0x7d02('0x12e')]==='NOBEEP'){_0xb9e3f6=![];}var _0x3b768a=this[_0x7d02('0xf')][_0x7d02('0x12f')](_0x1b25c8,_0x272b0d,_0x26b5b2['intKey'],_0x26b5b2[_0x7d02('0x61')],undefined,_0xb9e3f6);if(_0x3b768a['result']!==-0x1){this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('google\x20%s\x20file\x20created',_0x532903));var _0x1ee800=this[_0x7d02('0x88')][_0x7d02('0x6c')](this,_0x26b5b2,_0x532903);if(_0x1ee800){for(var _0x55dbbe in _0x1ee800){if(_0x1ee800[_0x7d02('0x92')](_0x55dbbe)){this[_0x7d02('0xf')][_0x7d02('0x9f')](util[_0x7d02('0x2a')](_0x7d02('0x130'),_0x55dbbe[_0x7d02('0x65')]()),_0x1ee800[_0x55dbbe]);}}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x131'),JSON[_0x7d02('0x6f')](_0x1ee800)));}}return _0x3b768a;};AGIVertices['prototype'][_0x7d02('0x132')]=function(_0x20abae){logger['info'](util[_0x7d02('0x2a')](_0x7d02('0x133'),_0x20abae[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x20abae[_0x7d02('0x8b')])){return this['channel']['noop'](_0x7d02('0x134'));}if(!this[_0x7d02('0x7e')](_0x20abae[_0x7d02('0x8c')])){return this[_0x7d02('0xf')]['noop'](_0x7d02('0x135'));}var _0x2601a1=_0x7d02('0x12d');var _0x5d85ec=util[_0x7d02('0x2a')](_0x7d02('0x136'),FILES_PATH,rs['generate'](0x4));var _0x2f9f36=util[_0x7d02('0x2a')]('%s.%s',_0x5d85ec,_0x2601a1);var _0x482dfe=!![];if(_0x20abae[_0x7d02('0x12e')]===_0x7d02('0x137')){_0x482dfe=![];}var _0x4cabec=this[_0x7d02('0xf')][_0x7d02('0x12f')](_0x5d85ec,_0x2601a1,_0x20abae[_0x7d02('0x138')],_0x20abae[_0x7d02('0x61')],undefined,_0x482dfe);if(_0x4cabec[_0x7d02('0xab')]!==-0x1){this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x139'),_0x2f9f36));var _0x278aa7=this[_0x7d02('0x8a')][_0x7d02('0x6c')](this,_0x20abae,_0x2f9f36);if(_0x278aa7){for(var _0x40d63c in _0x278aa7){if(_0x278aa7[_0x7d02('0x92')](_0x40d63c)){this[_0x7d02('0xf')]['setVariable'](util[_0x7d02('0x2a')]('TILDE_ASR_%s',_0x40d63c[_0x7d02('0x65')]()),_0x278aa7[_0x40d63c]);}}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x13a'),JSON[_0x7d02('0x6f')](_0x278aa7)));}}return _0x4cabec;};AGIVertices[_0x7d02('0x12')][_0x7d02('0x13b')]=function(_0x149d94){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x13c'),_0x149d94[_0x7d02('0xa2')]));return this[_0x7d02('0xf')][_0x7d02('0x13d')](_0x149d94['context'],_0x149d94[_0x7d02('0x3b')],_0x149d94[_0x7d02('0x3c')]);};AGIVertices['prototype'][_0x7d02('0x13e')]=function(_0xd95b47){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x13f'),_0xd95b47[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0xd95b47['condition'])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0xd95b47,'no\x20condition\x20configured');}try{var _0x31eed5=eval(_0xd95b47['condition'])?_0x7d02('0x140'):_0x7d02('0x141');this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x142'),_0xd95b47[_0x7d02('0x143')],_0x31eed5));return{'code':0xc8,'result':_0x31eed5};}catch(_0x281bbb){return{'code':0xc8,'result':_0x7d02('0x141')};}};AGIVertices[_0x7d02('0x12')][_0x7d02('0x144')]=function(_0x2e662f){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x145'),_0x2e662f[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x2e662f['interval_id'])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x2e662f,_0x7d02('0x146'));}var _0x1a4226=this[_0x7d02('0x27')][_0x7d02('0x6c')](this,_0x2e662f[_0x7d02('0x147')]);if(!_0x1a4226){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x2e662f,_0x7d02('0x148'));}for(var _0x3f4aff=0x0;_0x3f4aff<_0x1a4226[_0x7d02('0x94')];_0x3f4aff+=0x1){var _0x1f9f77=this['channel']['getVariable'](util[_0x7d02('0x2a')](_0x7d02('0x149'),_0x1a4226[_0x3f4aff]));if(_0x1f9f77[_0x7d02('0xab')]===-0x1){return _0x1f9f77;}logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x14a'),_0x1a4226[_0x3f4aff],_0x1f9f77[_0x7d02('0x9c')]));if(_0x1f9f77[_0x7d02('0x9c')]==='true'){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x14a'),_0x1a4226[_0x3f4aff],_0x7d02('0x140')));this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x14a'),_0x1a4226[_0x3f4aff],_0x7d02('0x140')));return{'code':0xc8,'result':'true'};}else{logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x14a'),_0x1a4226[_0x3f4aff],_0x7d02('0x141')));this[_0x7d02('0xf')][_0x7d02('0xa3')](util['format'](_0x7d02('0x14a'),_0x1a4226[_0x3f4aff],_0x7d02('0x141')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x7d02('0x12')][_0x7d02('0x14b')]=function(_0x169120){logger['info'](util['format'](_0x7d02('0x14c'),_0x169120[_0x7d02('0xa2')]));return this['channel'][_0x7d02('0x14b')]();};AGIVertices['prototype'][_0x7d02('0x14d')]=function(_0x10403d){logger[_0x7d02('0x2c')](util['format']('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x10403d[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x10403d[_0x7d02('0x74')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xe6'));}var _0x3014aa=_0x7d02('0x12d');var _0x2757e2=util[_0x7d02('0x2a')](_0x7d02('0x136'),FILES_PATH,rs['generate'](0x4));var _0x1b3a52=util['format'](_0x7d02('0x97'),_0x2757e2,_0x3014aa);var _0x1aa112=!![];if(_0x10403d[_0x7d02('0x12e')]==='NOBEEP'){_0x1aa112=![];}var _0x3ff7cf=this['channel'][_0x7d02('0x12f')](_0x2757e2,_0x3014aa,_0x10403d[_0x7d02('0x138')],_0x10403d['timeout'],undefined,_0x1aa112);if(_0x3ff7cf[_0x7d02('0xab')]!==-0x1){this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x14e'),_0x1b3a52));var _0x538a20=this[_0x7d02('0x7c')]['sync'](this,_0x10403d,_0x1b3a52);if(_0x538a20){for(var _0x5aeeb2 in _0x538a20){if(_0x538a20[_0x7d02('0x92')](_0x5aeeb2)){this[_0x7d02('0xf')][_0x7d02('0x9f')](util[_0x7d02('0x2a')](_0x7d02('0x14f'),_0x5aeeb2[_0x7d02('0x65')]()),_0x538a20[_0x5aeeb2]);}}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x150'),JSON[_0x7d02('0x6f')](_0x538a20)));}}return _0x3ff7cf;};AGIVertices[_0x7d02('0x12')][_0x7d02('0x151')]=function(_0x291776){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x291776[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x291776[_0x7d02('0x74')])){return this['channel'][_0x7d02('0xa3')](_0x7d02('0xe6'));}if(!this['isConfigured'](_0x291776[_0x7d02('0x58')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}this[_0x7d02('0xf')]['noop'](util[_0x7d02('0x2a')](_0x7d02('0x152'),_0x291776[_0x7d02('0x58')]));var _0x5c22c2=this[_0x7d02('0x79')][_0x7d02('0x6c')](this,_0x291776);if(_0x5c22c2){this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x14e'),_0x5c22c2));var _0x4c8535=this[_0x7d02('0xf')][_0x7d02('0x104')](_0x5c22c2,_0x291776[_0x7d02('0x138')]);try{fs['unlink'](_0x5c22c2+_0x7d02('0x106'));}catch(_0x4d6479){logger['error'](_0x4d6479);}return _0x4c8535;}return this['channel'][_0x7d02('0x4f')](_0x291776,_0x7d02('0x153'));};AGIVertices['prototype']['login']=function(_0x4e3eb1){logger[_0x7d02('0x2c')](util['format'](_0x7d02('0x154'),_0x4e3eb1[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x4e3eb1[_0x7d02('0x155')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x4e3eb1,_0x7d02('0x156'));}logger[_0x7d02('0x2c')](util['format'](_0x7d02('0x157'),this['channel']['callerid'],_0x4e3eb1[_0x7d02('0x155')]));var _0x465f48=this['agentLogin'][_0x7d02('0x6c')](this,_0x4e3eb1[_0x7d02('0x155')]);if(_0x465f48){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x158'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x4e3eb1['findBy']));this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x158'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x4e3eb1[_0x7d02('0x155')]));return{'code':0xc8,'result':_0x7d02('0x159')};}else{logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x15a'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x4e3eb1[_0x7d02('0x155')]));this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x15a'),this[_0x7d02('0xf')]['callerid'],_0x4e3eb1[_0x7d02('0x155')]));return{'code':0xc8,'result':_0x7d02('0x15b')};}};AGIVertices[_0x7d02('0x12')][_0x7d02('0x15c')]=function(_0x40bfaa){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x40bfaa[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x40bfaa[_0x7d02('0x155')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x40bfaa,_0x7d02('0x156'));}logger[_0x7d02('0x2c')](util['format'](_0x7d02('0x157'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x40bfaa[_0x7d02('0x155')]));var _0x10766e=this[_0x7d02('0x51')][_0x7d02('0x6c')](this,_0x40bfaa[_0x7d02('0x155')]);if(_0x10766e){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x158'),this['channel'][_0x7d02('0x38')],_0x40bfaa[_0x7d02('0x155')]));this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x158'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x40bfaa[_0x7d02('0x155')]));return{'code':0xc8,'result':_0x7d02('0x159')};}else{logger['info'](util[_0x7d02('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x7d02('0x38')],_0x40bfaa[_0x7d02('0x155')]));this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel']['callerid'],_0x40bfaa[_0x7d02('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x7d02('0x15d')]=function(_0x38b85b){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x15e'),_0x38b85b['label']));if(!this[_0x7d02('0x7e')](_0x38b85b['operation'])){return this['channel'][_0x7d02('0x4f')](_0x38b85b,_0x7d02('0x15f'));}this['channel']['noop'](util['format'](_0x7d02('0x160'),_0x38b85b[_0x7d02('0x161')]));var _0x5529da=eval(_0x38b85b[_0x7d02('0x161')]);if(!this['isConfigured'](_0x38b85b['variable_id'])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xd7'));}var _0x576499=this[_0x7d02('0x9b')][_0x7d02('0x6c')](this,_0x38b85b[_0x7d02('0xd6')]);if(!_0x576499){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x38b85b,_0x7d02('0xd8'));}if(_[_0x7d02('0x98')](_0x5529da)){var _0x45cc18=this;_0x5529da[_0x7d02('0xd9')](function(_0x263fd4,_0x44b31a){_0x45cc18['channel']['setVariable'](util[_0x7d02('0x2a')](_0x7d02('0x162'),_0x576499,_0x44b31a),_0x263fd4);});return this['channel'][_0x7d02('0xa3')](util['format'](_0x7d02('0x163'),_0x576499));}else{return this['channel'][_0x7d02('0x9f')](_0x576499,_0x5529da);}};AGIVertices[_0x7d02('0x12')][_0x7d02('0xc')]=function(_0x140447){logger['info'](util[_0x7d02('0x2a')](_0x7d02('0x164'),_0x140447[_0x7d02('0xa2')]));if(_0x140447[_0x7d02('0xa1')]===0x0){return this['maxRetry'](_0x140447);}_0x140447['retry']-=0x1;if(!this['isConfigured'](_0x140447[_0x7d02('0x112')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x140447,'no\x20file\x20audio\x20selected');}var _0x2c2c41=this[_0x7d02('0x21')]['sync'](this,_0x140447['file_id']);if(!_0x2c2c41){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x140447,_0x7d02('0x114'));}var _0x14f6b4=this[_0x7d02('0xf')][_0x7d02('0x115')](_0x2c2c41,_0x140447[_0x7d02('0x165')],_0x140447[_0x7d02('0x166')]);var _0x37bd12=_0x14f6b4[_0x7d02('0xab')];if(_0x14f6b4[_0x7d02('0xab')]===-0x1){this[_0x7d02('0x35')]['sync'](this,_0x140447,'-1');return _0x14f6b4;}else if(_0x14f6b4[_0x7d02('0x9c')]==='timeout'){_0x14f6b4[_0x7d02('0xab')]=_0x14f6b4[_0x7d02('0xab')][_0x7d02('0x94')]>0x0?_0x14f6b4['result']:'t';}else if(_[_0x7d02('0x42')](_0x14f6b4['result'])){_0x14f6b4[_0x7d02('0xab')]='#';_0x37bd12='#';}if(!this['isConfigured'](_0x140447['variable_id'])){this['channel'][_0x7d02('0xa3')](_0x7d02('0xd7'));}else{var _0x4cc964=this['getVariable'][_0x7d02('0x6c')](this,_0x140447[_0x7d02('0xd6')]);if(!_0x4cc964){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x140447,'no\x20variable\x20found');}this['channel'][_0x7d02('0x9f')](_0x4cc964,_0x37bd12);}this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x140447,_0x37bd12);return _0x14f6b4;};AGIVertices['prototype'][_0x7d02('0xa3')]=function(_0x1159d0){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x167'),_0x1159d0[_0x7d02('0xa2')]));return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x1159d0[_0x7d02('0x168')]||_0x1159d0['label']);};AGIVertices[_0x7d02('0x12')][_0x7d02('0x169')]=function(_0x17b932){logger['info'](util[_0x7d02('0x2a')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x17b932[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x17b932[_0x7d02('0x155')])){return this['channel']['error'](_0x17b932,_0x7d02('0x156'));}logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x157'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x17b932[_0x7d02('0x155')]));var _0x1ab15f=this[_0x7d02('0x4b')][_0x7d02('0x6c')](this,_0x17b932[_0x7d02('0x16a')]);var _0x257917=this[_0x7d02('0x4d')][_0x7d02('0x6c')](this,_0x17b932['findBy'],_0x1ab15f);if(_0x257917){logger['info'](util['format'](_0x7d02('0x158'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x17b932['findBy']));this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x17b932[_0x7d02('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x15a'),this[_0x7d02('0xf')]['callerid'],_0x17b932[_0x7d02('0x155')]));this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x158'),this['channel'][_0x7d02('0x38')],_0x17b932[_0x7d02('0x155')]));return{'code':0xc8,'result':_0x7d02('0x15b')};}};AGIVertices[_0x7d02('0x12')][_0x7d02('0x16b')]=function(_0x576808){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x16c'),_0x576808['label']));if(!this['isConfigured'](_0x576808[_0x7d02('0x112')])){return this[_0x7d02('0xf')]['error'](_0x576808,_0x7d02('0x113'));}var _0x3276ea=this['getSound']['sync'](this,_0x576808[_0x7d02('0x112')]);if(!_0x3276ea){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x576808,_0x7d02('0x114'));}var _0x295034=this['channel']['exec'](_0x7d02('0x16d'),[_0x3276ea,_0x576808[_0x7d02('0x16e')]]);if(_0x295034[_0x7d02('0xab')]===-0x1){return _0x295034;}return this['channel']['noop'](util[_0x7d02('0x2a')](_0x7d02('0xc0'),_0x7d02('0x16d'),_0x3276ea));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x16f')]=function(_0x484375){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x170'),_0x484375['label']));if(!this['isConfigured'](_0x484375[_0x7d02('0x171')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x484375,_0x7d02('0x172'));}var _0x126e5d='';var _0x142fff=parseInt(_0x484375[_0x7d02('0x171')],0xa);if(isNaN(_0x142fff)){_0x126e5d=_0x484375[_0x7d02('0x171')];}else{_0x126e5d=this['getVoiceQueue'][_0x7d02('0x6c')](this,_0x484375[_0x7d02('0x171')]);if(!_0x126e5d){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x484375,'no\x20queue\x20found');}}var _0x4c7cd6='';if(this['isConfigured'](_0x484375[_0x7d02('0x112')])){var _0x478cca=this[_0x7d02('0x21')]['sync'](this,_0x484375[_0x7d02('0x112')]);if(_0x478cca){_0x4c7cd6=_0x478cca;}}this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x484375,_0x126e5d);if(_0x484375[_0x7d02('0x16e')][_0x7d02('0x173')]('x')<0x0){_0x484375[_0x7d02('0x16e')]+='x';}if(_0x484375[_0x7d02('0x16e')]['indexOf']('X')<0x0){_0x484375[_0x7d02('0x16e')]+='X';}this[_0x7d02('0xf')][_0x7d02('0x9f')](_0x7d02('0x174'),_0x126e5d?_0x126e5d[_0x7d02('0x175')]():'');var _0x541b4a=this[_0x7d02('0xf')][_0x7d02('0xa5')](_0x7d02('0x176'),[_0x126e5d,_0x484375['opts'],_0x484375[_0x7d02('0x5f')],_0x4c7cd6,_0x484375['timeout'],_0x484375[_0x7d02('0x6')],_0x484375[_0x7d02('0x177')],_0x484375[_0x7d02('0x178')],'',_0x484375[_0x7d02('0x179')]]);if(_0x541b4a[_0x7d02('0xab')]===-0x1){return _0x541b4a;}return this[_0x7d02('0xf')]['noop'](util[_0x7d02('0x2a')](_0x7d02('0xc0'),_0x7d02('0x176'),_0x126e5d));};AGIVertices[_0x7d02('0x12')]['record']=function(_0x44373f){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x44373f['label']));var _0x3aa1ff=_0x44373f['recordingFormat']||_0x7d02('0x12d');var _0x58aa05=util[_0x7d02('0x2a')]('%s_%s',this[_0x7d02('0xf')]['uniqueid'],rs['generate'](0x5));var _0x24340d=util[_0x7d02('0x2a')](_0x7d02('0x17a'),FILES_PATH,_0x58aa05,_0x3aa1ff);var _0xcfe759=util[_0x7d02('0x2a')](_0x7d02('0x136'),FILES_PATH,_0x58aa05);this[_0x7d02('0x17b')][_0x7d02('0x6c')](this,_0x44373f,_0x58aa05,_0x24340d);this[_0x7d02('0xf')][_0x7d02('0x9f')](_0x7d02('0x17c'),_0x58aa05);logger[_0x7d02('0x2c')](_0x7d02('0x17d'),_0xcfe759,_0x3aa1ff,_0x44373f[_0x7d02('0x17e')],_0x44373f[_0x7d02('0x61')]);return this[_0x7d02('0xf')][_0x7d02('0x12f')](_0xcfe759,_0x3aa1ff,_0x44373f[_0x7d02('0x17e')],_0x44373f[_0x7d02('0x61')],undefined,!![]);};AGIVertices[_0x7d02('0x12')][_0x7d02('0x17f')]=function(_0x127513){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x127513[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x127513[_0x7d02('0x5f')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x180'));}var _0xb0d37c=this[_0x7d02('0x181')][_0x7d02('0x6c')](this,_0x127513);logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Response:',util[_0x7d02('0x182')](_0xb0d37c,{'showHidden':![],'depth':null})));if(!this[_0x7d02('0x7e')](_0x127513[_0x7d02('0xd6')])){return this[_0x7d02('0xf')]['noop']('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x36733d=this['getVariable']['sync'](this,_0x127513['variable_id']);if(!_0x36733d){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x127513,_0x7d02('0xd8'));}this[_0x7d02('0xf')][_0x7d02('0x9f')](util[_0x7d02('0x2a')](_0x7d02('0x183'),_0x36733d),_0xb0d37c[_0x7d02('0x184')]?_0xb0d37c[_0x7d02('0x184')]:_0x7d02('0x185'));this['channel'][_0x7d02('0x9f')](util['format']('%s_STATUS_MESSAGE',_0x36733d),_0xb0d37c[_0x7d02('0x70')]?_0xb0d37c['statusMessage']:'OK');if(_0xb0d37c[_0x7d02('0x66')]){try{this[_0x7d02('0x96')](_0xb0d37c['body'],_0x36733d);}catch(_0x2fd2a9){logger[_0x7d02('0x4f')](util[_0x7d02('0x2a')](_0x7d02('0x186'),_0x36733d));}}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')]('variable\x20%s\x20set',_0x36733d));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x187')]=function(_0xf733e2){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x188'),_0xf733e2[_0x7d02('0xa2')]));return this[_0x7d02('0xf')][_0x7d02('0x189')](_0xf733e2[_0x7d02('0x18a')][_0x7d02('0xd4')](/\s+/g,''),_0xf733e2[_0x7d02('0x17e')]);};AGIVertices[_0x7d02('0x12')]['saynumber']=function(_0x308cdb){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x18b'),_0x308cdb[_0x7d02('0xa2')]));return this['channel'][_0x7d02('0x18c')](_0x308cdb[_0x7d02('0x62')][_0x7d02('0xd4')](/\s+/g,''),_0x308cdb[_0x7d02('0x17e')]);};AGIVertices[_0x7d02('0x12')]['sayphonetic']=function(_0x1e9a23){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x18d'),_0x1e9a23[_0x7d02('0xa2')]));return this[_0x7d02('0xf')]['sayPhonetic'](_0x1e9a23[_0x7d02('0x58')],_0x1e9a23[_0x7d02('0x17e')]);};AGIVertices[_0x7d02('0x12')][_0x7d02('0x18e')]=function(_0x4c1e26){logger['info'](util[_0x7d02('0x2a')](_0x7d02('0x18f'),_0x4c1e26[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x4c1e26[_0x7d02('0x190')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x191'));}var _0x3c8ea1=this[_0x7d02('0x24')][_0x7d02('0x6c')](this,_0x4c1e26[_0x7d02('0x190')]);if(!_0x3c8ea1||!_0x3c8ea1[_0x7d02('0x192')]){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x4c1e26,_0x7d02('0x193'));}var _0x11739d={'from':util[_0x7d02('0x2a')](_0x7d02('0x194'),_0x3c8ea1[_0x7d02('0x15')],_0x3c8ea1[_0x7d02('0x195')]||_0x3c8ea1['Smtp'][_0x7d02('0x196')]),'to':_0x4c1e26['to']||'','cc':_0x4c1e26['cc']||'','bcc':_0x4c1e26[_0x7d02('0x197')]||'','subject':_0x4c1e26['subject'],'html':_0x4c1e26[_0x7d02('0x58')],'text':_0x4c1e26['text']};if(this[_0x7d02('0x7e')](_0x4c1e26[_0x7d02('0x198')])){}logger[_0x7d02('0xde')](_0x7d02('0x199'),JSON[_0x7d02('0x6f')](_0x11739d));this['createSquareDetailsReport'][_0x7d02('0x6c')](this,_0x4c1e26,_0x4c1e26['account_id']);this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x19a'),_0x3c8ea1[_0x7d02('0x15')]));this[_0x7d02('0x26')][_0x7d02('0x6c')](this,_0x3c8ea1[_0x7d02('0x19b')],_0x11739d);return this[_0x7d02('0xf')][_0x7d02('0xa3')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0x7d02('0x19c')]=function(_0x4a45a3){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x4a45a3[_0x7d02('0xa2')]));return this[_0x7d02('0xf')]['noop'](_0x7d02('0x19d'));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x19e')]=function(_0x14ac04){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x19f'),_0x14ac04[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x14ac04[_0x7d02('0x1a0')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x1a1'));}var _0x41bce3=this['getSmsAccount']['sync'](this,_0x14ac04[_0x7d02('0x1a0')]);if(!_0x41bce3){return this['channel']['error'](_0x14ac04,_0x7d02('0x1a2'));}var _0x223874={'body':_0x14ac04[_0x7d02('0x1a3')],'phone':_0x14ac04['to']||'','SmsAccountId':_0x41bce3['id']};logger[_0x7d02('0xde')]('sendSMS\x20message',JSON[_0x7d02('0x6f')](_0x223874));this['createSquareDetailsReport']['sync'](this,_0x14ac04,_0x14ac04[_0x7d02('0x1a0')]);this['channel']['noop'](util['format'](_0x7d02('0x1a4'),_0x41bce3[_0x7d02('0x15')]));this[_0x7d02('0x34')][_0x7d02('0x6c')](this,_0x223874);return this[_0x7d02('0xf')]['noop'](_0x7d02('0x1a5'));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1a6')]=function(_0x3368ae){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1a7'),_0x3368ae[_0x7d02('0xa2')]));if(!this['isConfigured'](_0x3368ae[_0x7d02('0xd6')])){return this['channel'][_0x7d02('0x4f')](_0x3368ae,'no\x20variable\x20selected');}var _0x4cc487=this[_0x7d02('0x9b')][_0x7d02('0x6c')](this,_0x3368ae[_0x7d02('0xd6')]);if(!_0x4cc487){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3368ae,_0x7d02('0xd8'));}return this[_0x7d02('0xf')][_0x7d02('0x9f')](_0x4cc487,_0x3368ae[_0x7d02('0x1a8')]);};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1a9')]=function(_0x26bb5e){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1aa'),_0x26bb5e[_0x7d02('0xa2')]));this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x1ab'));if(_0x26bb5e['answer']===_0x7d02('0x1ac')){this['channel'][_0x7d02('0xa3')]('Answer');return this[_0x7d02('0xf')][_0x7d02('0xb3')]();}return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0x1ad'));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1ae')]=function(_0x45a424){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1af'),_0x45a424[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x45a424[_0x7d02('0x1b0')])){return this['channel'][_0x7d02('0x4f')](_0x45a424,_0x7d02('0x1b1'));}var _0x5976b9=this[_0x7d02('0x19')][_0x7d02('0x6c')](this,_0x45a424[_0x7d02('0x1b0')]);if(!this[_0x7d02('0x7e')](_0x5976b9)){return this['channel'][_0x7d02('0x4f')](_0x45a424,util[_0x7d02('0x2a')](_0x7d02('0x1b2'),_0x45a424['project_id']));}if(_0x5976b9===this[_0x7d02('0xf')][_0x7d02('0x3f')]){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x45a424,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x7d02('0x35')]['sync'](this,_0x45a424,_0x5976b9);var _0x2696d8=this['channel'][_0x7d02('0xa5')]('AGI',util[_0x7d02('0x2a')](_0x7d02('0x1b3'),config[_0x7d02('0x6')][_0x7d02('0x1b4')]||'127.0.0.1',_0x5976b9,this[_0x7d02('0xf')][_0x7d02('0x3f')]));if(_0x2696d8[_0x7d02('0xab')]===-0x1){return _0x2696d8;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xc0'),'AGI',_0x5976b9));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1b5')]=function(_0x2cc121){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1b6'),_0x2cc121[_0x7d02('0xa2')]));var _0x64e464=this[_0x7d02('0x54')][_0x7d02('0x6c')](this,_0x2cc121['command']);this[_0x7d02('0x35')][_0x7d02('0x6c')](this,_0x2cc121,_0x2cc121[_0x7d02('0xb1')]);if(this[_0x7d02('0x7e')](_0x2cc121[_0x7d02('0xd6')])){var _0x4cbc65=this[_0x7d02('0x9b')][_0x7d02('0x6c')](this,_0x2cc121[_0x7d02('0xd6')]);if(_0x4cbc65){this[_0x7d02('0xf')][_0x7d02('0x9f')](_0x4cbc65,_0x64e464);return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x1b7'),_0x2cc121[_0x7d02('0xb1')],_0x4cbc65));}}return this['channel'][_0x7d02('0xa3')](util['format'](_0x7d02('0x1b8'),_0x2cc121[_0x7d02('0xb1')]));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1b9')]=function(_0x36ba07){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1ba'),_0x36ba07['label']));_0x36ba07[_0x7d02('0x58')]=_0x36ba07[_0x7d02('0x58')][_0x7d02('0xd4')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x7d02('0x7e')](_0x36ba07[_0x7d02('0x56')])){return this['channel']['noop'](_0x7d02('0x1bb'));}if(!this[_0x7d02('0x7e')](_0x36ba07[_0x7d02('0x58')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x1bc'),_0x36ba07[_0x7d02('0x58')]));var _0x1c265f=this[_0x7d02('0x55')][_0x7d02('0x6c')](this,_0x36ba07);if(_0x1c265f){this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x1bd'),_0x1c265f));var _0x2e574c=this['channel']['streamFile'](_0x1c265f);try{fs[_0x7d02('0x105')](_0x1c265f+_0x7d02('0x106'));}catch(_0x5cbd74){logger['error'](_0x5cbd74);}return _0x2e574c;}return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x36ba07,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x7d02('0x12')]['tts']=function(_0x34e839){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1be'),_0x34e839[_0x7d02('0xa2')]));_0x34e839[_0x7d02('0x58')]=_0x34e839[_0x7d02('0x58')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x7d02('0x7e')](_0x34e839[_0x7d02('0x58')])){return this[_0x7d02('0xf')][_0x7d02('0xa3')](_0x7d02('0xa4'));}this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x1bf'),_0x34e839[_0x7d02('0x58')]));var _0x466194=this[_0x7d02('0x5d')][_0x7d02('0x6c')](this,_0x34e839);if(_0x466194){this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x1c0'),_0x466194));var _0xaa3689=this['channel'][_0x7d02('0x104')](_0x466194);try{fs['unlink'](_0x466194+_0x7d02('0x106'));}catch(_0x587f68){logger[_0x7d02('0x4f')](_0x587f68);}return _0xaa3689;}return this['channel']['error'](_0x34e839,_0x7d02('0x1c1'));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1c2')]=function(_0x343e6c){logger[_0x7d02('0x2c')](util[_0x7d02('0x2a')](_0x7d02('0x1c3'),_0x343e6c[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x343e6c[_0x7d02('0x155')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x343e6c,_0x7d02('0x156'));}logger['info'](util[_0x7d02('0x2a')](_0x7d02('0x157'),this[_0x7d02('0xf')][_0x7d02('0x38')],_0x343e6c[_0x7d02('0x155')]));var _0x14209f=this[_0x7d02('0x50')][_0x7d02('0x6c')](this,_0x343e6c[_0x7d02('0x155')]);if(_0x14209f){logger[_0x7d02('0x2c')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x7d02('0xf')]['callerid'],_0x343e6c['findBy']));this['channel'][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0x158'),this['channel'][_0x7d02('0x38')],_0x343e6c[_0x7d02('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0x7d02('0x2c')](util['format'](_0x7d02('0x15a'),this[_0x7d02('0xf')]['callerid'],_0x343e6c[_0x7d02('0x155')]));this['channel']['noop'](util[_0x7d02('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x7d02('0xf')][_0x7d02('0x38')],_0x343e6c['findBy']));return{'code':0xc8,'result':_0x7d02('0x15b')};}};AGIVertices['prototype']['voicemail']=function(_0x3daa9d){logger['info'](util[_0x7d02('0x2a')](_0x7d02('0x1c4'),_0x3daa9d[_0x7d02('0xa2')]));var _0x6c71bb=this[_0x7d02('0xf')][_0x7d02('0xa5')](_0x7d02('0x1c5'),[_0x3daa9d[_0x7d02('0x1c6')],_0x3daa9d[_0x7d02('0x72')]]);if(_0x6c71bb[_0x7d02('0xab')]===-0x1){return _0x6c71bb;}return this[_0x7d02('0xf')][_0x7d02('0xa3')](util[_0x7d02('0x2a')](_0x7d02('0xc0'),_0x7d02('0x1c5'),_0x3daa9d['mailbox']));};AGIVertices[_0x7d02('0x12')][_0x7d02('0x1c7')]=function(_0x3c5b57){logger[_0x7d02('0x2c')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x3c5b57[_0x7d02('0xa2')]));if(!this[_0x7d02('0x7e')](_0x3c5b57[_0x7d02('0xd6')])){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3c5b57,_0x7d02('0x1c8'));}var _0x51757b=this['getVariable'][_0x7d02('0x6c')](this,_0x3c5b57['variable_id']);if(!_0x51757b){return this[_0x7d02('0xf')][_0x7d02('0x4f')](_0x3c5b57,_0x7d02('0xd8'));}var _0x3c7a5b=this[_0x7d02('0xf')]['getVariable'](_0x51757b);return{'code':0xc8,'result':_0x3c7a5b[_0x7d02('0x9c')]?_0x3c7a5b[_0x7d02('0x9c')]:'-'};};String[_0x7d02('0x12')][_0x7d02('0x9a')]=function(_0x40b15d,_0x17808a){return this['split'](_0x40b15d)[_0x7d02('0x1c9')](_0x17808a);};module[_0x7d02('0x1ca')]=AGIVertices;
\ No newline at end of file
+var _0x7914=['Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','no\x20list\x20selected','delay','add','sync','custom_app','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','no\x20text\x20configured','lumenvoxasr','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','RECOG_CONFIDENCE()','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','setVariable','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','debug','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','client_email','no\x20client_email\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20username\x20configured','password','no\x20password\x20configured','SESTEK_NDA_%s','audiofile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','getTrunk','no\x20trunk\x20found','no\x20trunk\x20selected','Executed\x20command\x20%s','finally','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','streamFile','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','googleASR','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','no\x20interval\x20configured','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','variable\x20%s[key]\x20set','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','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','account_id','no\x20mail\x20account\x20configured','email','Smtp','user','bcc','subject','template_id','sendMail\x20message','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','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','apiKey','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','googleTTS','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','exports','util','lodash','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','rawHeaders','menu','getdigits','getsecretdigits','channel','rpc','prototype','getVariable','getVariableById','name','getVoiceQueue','getVoiceQueueById','getSquareProject','then','catch','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','save_name','sendMailMessage','mailRpc','getIntervals','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','query','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','createSquareRecording','callerid','calleridname','context','extension','priority','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agentLogout','agentLogin','agent','LOCAL','shellCommand','exec','replace','googleCloudTTS','google_cloud_tts_text_type','text','ssmlGender','MALE','MP3','google_tts_language','restAPI','method','timeout','number','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','uri','render','url','stringify','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','key','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','Amy','aws_text_type','awsLex','aws_lex_region','google_asr_language','tildeASR','appid','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','saveRestApiResult','%s.%s','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','maxRetry','mrcpsynth','noop','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','args','Enter\x20in\x20ANSWER\x20(%s)\x20block'];(function(_0xadb117,_0x529fcb){var _0x5c46d8=function(_0x1980ab){while(--_0x1980ab){_0xadb117['push'](_0xadb117['shift']());}};_0x5c46d8(++_0x529fcb);}(_0x7914,0x107));var _0x4791=function(_0x554814,_0x3e5b03){_0x554814=_0x554814-0x0;var _0x22d8e5=_0x7914[_0x554814];return _0x22d8e5;};'use strict';var fs=require('fs');var util=require(_0x4791('0x0'));var _=require(_0x4791('0x1'));var sh=require('shelljs');var odbc=require(_0x4791('0x2'))();var rs=require(_0x4791('0x3'));var moment=require(_0x4791('0x4'));var Mustache=require(_0x4791('0x5'));var rp=require(_0x4791('0x6'));var logger=require(_0x4791('0x7'))(_0x4791('0x8'));var config=require(_0x4791('0x9'));var shared=require(_0x4791('0xa'));var scripts=require(_0x4791('0xb'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x4791('0xc'),'rawBody'];var verticesWithRetry=[_0x4791('0xd'),_0x4791('0xe'),_0x4791('0xf')];var AGIVertices=function(_0x2d1b96,_0x1ca89d,_0x153de4){this[_0x4791('0x10')]=_0x2d1b96;this[_0x4791('0x11')]=_0x1ca89d;this['mailRpc']=_0x153de4;};AGIVertices[_0x4791('0x12')][_0x4791('0x13')]=function(_0x254fbb,_0x4423ce){this[_0x4791('0x11')][_0x4791('0x14')](_0x254fbb)['then'](function(_0x178588){_0x4423ce(null,_0x178588?_0x178588[_0x4791('0x15')]:![]);})['catch'](function(_0x2d8f75){_0x4423ce(_0x2d8f75);});};AGIVertices[_0x4791('0x12')][_0x4791('0x16')]=function(_0x45e2d3,_0x388907){this[_0x4791('0x11')][_0x4791('0x17')](_0x45e2d3)['then'](function(_0x25a767){_0x388907(null,_0x25a767?_0x25a767[_0x4791('0x15')]:![]);})['catch'](function(_0x2bf993){_0x388907(_0x2bf993);});};AGIVertices[_0x4791('0x12')][_0x4791('0x18')]=function(_0x202cca,_0xab1f15){this['rpc']['getSquareProjectById'](_0x202cca)[_0x4791('0x19')](function(_0x41d373){_0xab1f15(null,_0x41d373?_0x41d373[_0x4791('0x15')]:![]);})[_0x4791('0x1a')](function(_0x333258){_0xab1f15(_0x333258);});};AGIVertices['prototype'][_0x4791('0x1b')]=function(_0x53363a,_0x489302){this[_0x4791('0x11')][_0x4791('0x1c')](_0x53363a)[_0x4791('0x19')](function(_0xcb902f){_0x489302(null,_0xcb902f?_0xcb902f[_0x4791('0x1d')]:![]);})['catch'](function(_0x35946a){_0x489302(_0x35946a);});};AGIVertices['prototype'][_0x4791('0x1e')]=function(_0x14c2a9,_0x562d25){this[_0x4791('0x11')][_0x4791('0x1f')](_0x14c2a9)[_0x4791('0x19')](function(_0x18ade6){_0x562d25(null,_0x18ade6?_0x18ade6['name']:![]);})[_0x4791('0x1a')](function(_0x4b94c1){_0x562d25(_0x4b94c1);});};AGIVertices[_0x4791('0x12')]['getTrunk']=function(_0x49cff7,_0x28582e){this['rpc'][_0x4791('0x20')](_0x49cff7)[_0x4791('0x19')](function(_0x16616d){_0x28582e(null,_0x16616d?_0x16616d[_0x4791('0x15')]:![]);})[_0x4791('0x1a')](function(_0xcbfd8e){_0x28582e(_0xcbfd8e);});};AGIVertices[_0x4791('0x12')][_0x4791('0x21')]=function(_0x72a731,_0x307f10){var _0x2529b2=this;this[_0x4791('0x11')][_0x4791('0x22')](_0x72a731)['then'](function(_0xb0a422){_0x307f10(null,_0xb0a422?_0x2529b2[_0x4791('0x23')](_0xb0a422[_0x4791('0x24')]):![]);})[_0x4791('0x1a')](function(_0x2ac76f){_0x307f10(_0x2ac76f);});};AGIVertices[_0x4791('0x12')]['getMailAccount']=function(_0x3f340f,_0x879456){this[_0x4791('0x11')]['getMailAccountById'](_0x3f340f)['then'](function(_0x214cfe){_0x879456(null,_0x214cfe?_0x214cfe:![]);})[_0x4791('0x1a')](function(_0x111202){_0x879456(_0x111202);});};AGIVertices[_0x4791('0x12')][_0x4791('0x25')]=function(_0x827074,_0x1b4a2d,_0x2c73f6){this[_0x4791('0x26')][_0x4791('0x25')](_0x827074,_0x1b4a2d)['then'](function(){_0x2c73f6(null);})[_0x4791('0x1a')](function(_0x410f14){_0x2c73f6(_0x410f14);});};AGIVertices['prototype'][_0x4791('0x27')]=function(_0x586441,_0x3a0e25){this[_0x4791('0x11')]['getIntervalById'](_0x586441)[_0x4791('0x19')](function(_0xb3a861){if(_0xb3a861){if(_0xb3a861[_0x4791('0x28')]){_0x3a0e25(null,[_0xb3a861[_0x4791('0x29')]]);}else{_0x3a0e25(null,_[_0x4791('0x2a')](_0xb3a861[_0x4791('0x2b')],_0x4791('0x29')));}}else{_0x3a0e25(null,![]);}})[_0x4791('0x1a')](function(_0x2f9e75){_0x3a0e25(_0x2f9e75);});};AGIVertices['prototype']['getSoundPath']=function(_0x576f1d){return util[_0x4791('0x2c')](_0x4791('0x2d'),FILES_PATH,_0x576f1d);};AGIVertices['prototype'][_0x4791('0x2e')]=function(_0x54114f,_0xec6dc8,_0x2496d2){odbc[_0x4791('0x2f')](_0x54114f,function(_0x2e4bcf){if(_0x2e4bcf){logger[_0x4791('0x30')](_0x4791('0x31'),_0x2e4bcf);_0x2496d2(_0x2e4bcf);}else{logger['info']('ODBC\x20connection\x20successfully');odbc[_0x4791('0x32')](_0xec6dc8,function(_0x58067f,_0x53a24c){if(_0x58067f){logger[_0x4791('0x33')](_0x4791('0x34'),_0xec6dc8);_0x2496d2(_0x58067f);}else{logger[_0x4791('0x33')](_0x4791('0x35'),_0xec6dc8);odbc[_0x4791('0x36')](function(_0x14decb){if(_0x14decb){logger['error'](_0x4791('0x37'),_0x14decb);}_0x2496d2(null,_0x53a24c);});}});}});};AGIVertices[_0x4791('0x12')][_0x4791('0x38')]=function(_0x502322,_0x273ae8){this[_0x4791('0x11')][_0x4791('0x39')](_0x502322)[_0x4791('0x19')](function(_0x6f4db3){_0x273ae8(null,_0x6f4db3?_0x6f4db3:![]);})[_0x4791('0x1a')](function(_0x3203c9){_0x273ae8(_0x3203c9);});};AGIVertices[_0x4791('0x12')][_0x4791('0x3a')]=function(_0x5ab9fc,_0x3c3e2c){this[_0x4791('0x11')][_0x4791('0x3a')](_0x5ab9fc)[_0x4791('0x19')](function(_0x2391ce){_0x3c3e2c(null,_0x2391ce);})['catch'](function(_0x436beb){_0x3c3e2c(_0x436beb);});};AGIVertices['prototype'][_0x4791('0x3b')]=function(_0x5b6536,_0x2eec8f,_0x2d7390){this[_0x4791('0x11')]['createSquareDetailsReport']({'uniqueid':this['channel'][_0x4791('0x3c')],'node':_0x5b6536[_0x4791('0x3d')],'application':_0x5b6536[_0x4791('0x3e')],'data':_0x2eec8f||null,'project_name':this[_0x4791('0x10')][_0x4791('0x3f')],'callerid':this[_0x4791('0x10')]['callerid']})[_0x4791('0x19')](function(_0x2b0aae){if(_0x2d7390){_0x2d7390(null,_0x2b0aae);}})[_0x4791('0x1a')](function(_0x27ca85){if(_0x2d7390){_0x2d7390(_0x27ca85);}});};AGIVertices[_0x4791('0x12')][_0x4791('0x40')]=function(_0x3399f2,_0x364032,_0x118994,_0x3a9ea2){this[_0x4791('0x11')][_0x4791('0x40')]({'uniqueid':this[_0x4791('0x10')][_0x4791('0x3c')],'callerid':this[_0x4791('0x10')][_0x4791('0x41')],'calleridname':this[_0x4791('0x10')][_0x4791('0x42')],'context':this[_0x4791('0x10')][_0x4791('0x43')],'extension':this[_0x4791('0x10')][_0x4791('0x44')],'priority':this[_0x4791('0x10')][_0x4791('0x45')],'accountcode':this[_0x4791('0x10')]['accountcode'],'dnid':this[_0x4791('0x10')][_0x4791('0x46')],'projectName':this[_0x4791('0x10')]['arg_1'],'saveName':_0x364032,'filename':_0x3399f2[_0x4791('0x47')]||_0x364032,'savePath':_0x118994})[_0x4791('0x19')](function(_0xcede48){_0x3a9ea2(null,_0xcede48);})['catch'](function(_0x23952b){_0x3a9ea2(_0x23952b);});};AGIVertices[_0x4791('0x12')][_0x4791('0x48')]=function(_0x2e7b04,_0x2c0eff,_0x5ce98a,_0x505f26,_0x2e7e24){this[_0x4791('0x11')][_0x4791('0x48')]({'uniqueid':this[_0x4791('0x10')][_0x4791('0x3c')],'body':_0x2e7b04,'direction':_0x2c0eff,'providerName':_0x5ce98a,'providerResponse':_0x505f26})[_0x4791('0x19')](function(_0x4ead3a){if(_0x2e7e24){_0x2e7e24(null,_0x4ead3a);}})['catch'](function(_0x344c76){if(_0x2e7e24){_0x2e7e24(_0x344c76);}});};AGIVertices[_0x4791('0x12')][_0x4791('0x49')]=function(_0x185b52,_0x5b2684){this[_0x4791('0x11')][_0x4791('0x49')]({'firstName':_[_0x4791('0x4a')](_0x185b52[_0x4791('0x15')])||_[_0x4791('0x4b')](_0x185b52[_0x4791('0x15')])?_0x4791('0x4c')+Math[_0x4791('0x4d')]():_0x185b52['name'],'lastName':_[_0x4791('0x4a')](_0x185b52[_0x4791('0x4e')])||_[_0x4791('0x4b')](_0x185b52[_0x4791('0x4e')])?null:_0x185b52[_0x4791('0x4e')],'phone':_0x185b52[_0x4791('0x4f')],'ListId':_0x185b52[_0x4791('0x50')],'scheduledat':_0x185b52[_0x4791('0x51')],'callbackUniqueid':this[_0x4791('0x10')]['uniqueid'],'tags':_0x4791('0x52'),'description':_0x4791('0x53')+_0x185b52[_0x4791('0x51')][_0x4791('0x54')](),'priority':_0x185b52[_0x4791('0x55')]})[_0x4791('0x19')](function(_0x1785cf){_0x5b2684(null,_0x1785cf);})[_0x4791('0x1a')](function(_0x36a600){_0x5b2684(_0x36a600);});};AGIVertices[_0x4791('0x12')][_0x4791('0x56')]=function(_0x314f6a,_0x2c48d1){this[_0x4791('0x11')][_0x4791('0x57')](_0x314f6a)[_0x4791('0x19')](function(_0x133f95){_0x2c48d1(null,_0x133f95?_0x133f95[_0x4791('0x15')]:![]);})[_0x4791('0x1a')](function(_0x589ba5){_0x2c48d1(_0x589ba5);});};AGIVertices[_0x4791('0x12')][_0x4791('0x58')]=function(_0x55589a,_0x41f163,_0x3f8d93){var _0x3cb8b0={'role':'agent'};_0x3cb8b0[_0x55589a]=this[_0x4791('0x10')][_0x4791('0x41')];this[_0x4791('0x11')][_0x4791('0x58')](_0x3cb8b0,_0x41f163,this[_0x4791('0x10')][_0x4791('0x3c')])[_0x4791('0x19')](function(_0x515555){_0x3f8d93(null,_[_0x4791('0x4b')](_0x515555)?![]:!![]);})['catch'](function(_0x48b785){logger[_0x4791('0x30')](_0x48b785);_0x3f8d93(null,![]);});};AGIVertices[_0x4791('0x12')][_0x4791('0x59')]=function(_0x1d7de1,_0x21d479){var _0x5290f4={'role':'agent'};_0x5290f4[_0x1d7de1]=this['channel'][_0x4791('0x41')];this[_0x4791('0x11')][_0x4791('0x59')](_0x5290f4)[_0x4791('0x19')](function(_0xbf4129){_0x21d479(null,_[_0x4791('0x4b')](_0xbf4129)?![]:!![]);})[_0x4791('0x1a')](function(_0xe2f36c){logger['error'](_0xe2f36c);_0x21d479(null,![]);});};AGIVertices[_0x4791('0x12')]['agentLogout']=function(_0x474e86,_0x34892e){var _0x4c89e8={'role':'agent'};_0x4c89e8[_0x474e86]=this[_0x4791('0x10')][_0x4791('0x41')];this['rpc'][_0x4791('0x5a')](_0x4c89e8)['then'](function(_0x51966d){_0x34892e(null,_['isNil'](_0x51966d)?![]:!![]);})['catch'](function(_0x4281a2){logger['error'](_0x4281a2);_0x34892e(null,![]);});};AGIVertices[_0x4791('0x12')][_0x4791('0x5b')]=function(_0x29d593,_0x2d4b95){var _0xa4223d={'role':_0x4791('0x5c')};_0xa4223d[_0x29d593]=this[_0x4791('0x10')][_0x4791('0x41')];var _0x279c98=_0x29d593!='internal'?util[_0x4791('0x2c')]('%s/%s@from-sip/n',_0x4791('0x5d'),this[_0x4791('0x10')][_0x4791('0x41')]):undefined;this[_0x4791('0x11')]['agentLogin'](_0xa4223d,_0x279c98)['then'](function(_0x148b1b){_0x2d4b95(null,_[_0x4791('0x4b')](_0x148b1b)?![]:!![]);})[_0x4791('0x1a')](function(_0x572001){logger[_0x4791('0x30')](_0x572001);_0x2d4b95(null,![]);});};AGIVertices[_0x4791('0x12')][_0x4791('0x5e')]=function(_0x471699,_0x328b5d){sh[_0x4791('0x5f')](_['trim'](_0x471699),function(_0x1b0bff,_0xf5bd78){var _0x3523fd=_0xf5bd78[_0x4791('0x60')](/(\r\n|\n|\r)/gm,'');_0x328b5d(null,_0x3523fd);});};AGIVertices[_0x4791('0x12')][_0x4791('0x61')]=function(_0x3dcdba,_0x4e5bf1){scripts[_0x4791('0x61')](_0x3dcdba['apiKey'],_0x3dcdba[_0x4791('0x62')]||'text',_0x3dcdba[_0x4791('0x63')],_0x3dcdba['languageCode']||'en-US',_0x3dcdba[_0x4791('0x64')]||_0x4791('0x65'),_0x3dcdba['audioEncoding']||_0x4791('0x66'))[_0x4791('0x19')](function(_0x3f2795){_0x4e5bf1(null,_0x3f2795);})[_0x4791('0x1a')](function(_0x28a249){_0x4e5bf1(_0x28a249);});};AGIVertices['prototype']['googleTTS']=function(_0x22e7a3,_0x1b512c){scripts['googleTTS'](_0x22e7a3[_0x4791('0x63')],_0x22e7a3[_0x4791('0x67')]||'en',0x1)[_0x4791('0x19')](function(_0x1cf5ce){_0x1b512c(null,_0x1cf5ce);})[_0x4791('0x1a')](function(_0x5d3350){_0x1b512c(_0x5d3350);});};AGIVertices[_0x4791('0x12')][_0x4791('0x68')]=function(_0x589778,_0x37ec74){var _0x1e8d66={'uri':_0x589778['url'],'method':_0x589778[_0x4791('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x589778[_0x4791('0x6a')])===_0x4791('0x6b')&&parseInt(_0x589778[_0x4791('0x6a')])>=0x1?parseInt(_0x589778[_0x4791('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0x4791('0x6c')]([_0x4791('0x6d'),_0x4791('0x6e')],_0x1e8d66[_0x4791('0x69')][_0x4791('0x6f')]())){try{_0x1e8d66[_0x4791('0x70')]=_0x589778['rawBody']?JSON[_0x4791('0x71')](_0x589778['rawBody']):{};}catch(_0x5f0920){logger[_0x4791('0x30')](_0x4791('0x72'),_0x5f0920);}}try{_0x1e8d66[_0x4791('0x73')]=_0x589778[_0x4791('0xc')]?JSON[_0x4791('0x71')](_0x589778[_0x4791('0xc')]):{};}catch(_0x291b44){logger['error']('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x291b44);}if(_0x589778[_0x4791('0x74')]){try{var _0x18786d=require(_0x589778[_0x4791('0x74')])['sync'](this,_0x1e8d66);_0x1e8d66[_0x4791('0x75')]=Mustache[_0x4791('0x76')](_0x589778[_0x4791('0x77')],_0x18786d,{},['$$','$$']);if(_0x1e8d66['headers']){_0x1e8d66[_0x4791('0x73')]=JSON['parse'](Mustache[_0x4791('0x76')](JSON[_0x4791('0x78')](_0x1e8d66[_0x4791('0x73')]),_0x18786d,{},['$$','$$']));}if(_0x1e8d66['body']){_0x1e8d66[_0x4791('0x70')]=JSON[_0x4791('0x71')](Mustache['render'](JSON[_0x4791('0x78')](_0x1e8d66[_0x4791('0x70')]),_0x18786d,{},['$$','$$']));}}catch(_0x4f8526){logger[_0x4791('0x30')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x4f8526);}}rp(_0x1e8d66)[_0x4791('0x19')](function(_0xe1d26a){var _0x4c198b={'statusCode':_0xe1d26a[_0x4791('0x79')]||0xc8,'statusMessage':_0xe1d26a['statusMessage']||'OK','headers':_0xe1d26a[_0x4791('0x73')]||{},'body':_0xe1d26a[_0x4791('0x70')]||{}};_0x37ec74(null,_0x4c198b);})[_0x4791('0x1a')](function(_0xf29105){var _0x17343b={'statusCode':_0xf29105[_0x4791('0x79')]||0x1f4,'statusMessage':_0xf29105[_0x4791('0x7a')]||_0x4791('0x7b'),'headers':_0xf29105['options']['headers']||{},'body':_0xf29105[_0x4791('0x7c')][_0x4791('0x70')]||{}};_0x37ec74(null,_0x17343b);});};AGIVertices[_0x4791('0x12')][_0x4791('0x7d')]=function(_0x18a38c,_0x36b6de){scripts[_0x4791('0x7d')](this['channel'][_0x4791('0x3c')],_0x18a38c['key'],_0x18a38c['text'],_0x18a38c['dialogflow_language']||'en')[_0x4791('0x19')](function(_0x5d4d8b){_0x36b6de(null,_0x5d4d8b);})[_0x4791('0x1a')](function(_0x3d21c5){_0x36b6de(_0x3d21c5);});};AGIVertices[_0x4791('0x12')][_0x4791('0x7e')]=function(_0x33e1da,_0x3cab7d){scripts[_0x4791('0x7e')](this[_0x4791('0x10')][_0x4791('0x3c')],_0x33e1da[_0x4791('0x7f')],_0x33e1da['client_email'],_0x33e1da[_0x4791('0x80')],_0x33e1da[_0x4791('0x63')],_0x33e1da[_0x4791('0x81')]||'en')[_0x4791('0x19')](function(_0x3bdcd3){_0x3cab7d(null,_0x3bdcd3);})[_0x4791('0x1a')](function(_0xabdfb6){_0x3cab7d(_0xabdfb6);});};AGIVertices['prototype'][_0x4791('0x82')]=function(_0x5edfd6,_0x1e56a8){scripts[_0x4791('0x82')](this[_0x4791('0x10')],_0x5edfd6)[_0x4791('0x19')](function(_0xb4cd48){_0x1e56a8(null,_0xb4cd48);})[_0x4791('0x1a')](function(_0x1a431d){_0x1e56a8(_0x1a431d);});};AGIVertices['prototype'][_0x4791('0x83')]=function(_0x1feb7c,_0x37c2fe){scripts[_0x4791('0x83')](_0x1feb7c[_0x4791('0x84')],_0x1feb7c[_0x4791('0x63')],_0x1feb7c[_0x4791('0x85')]||_0x4791('0x86'),_0x1feb7c[_0x4791('0x87')])['then'](function(_0x19afb6){_0x37c2fe(null,_0x19afb6);})[_0x4791('0x1a')](function(_0x29fd21){_0x37c2fe(_0x29fd21);});};AGIVertices['prototype'][_0x4791('0x88')]=function(_0x51f3ae,_0x58ce05,_0x2b8e05){scripts[_0x4791('0x88')](_0x58ce05,_0x51f3ae[_0x4791('0x84')],_0x51f3ae[_0x4791('0x89')]||_0x4791('0x86'),this[_0x4791('0x8a')](_0x51f3ae[_0x4791('0x8b')])?_0x51f3ae[_0x4791('0x8b')]:undefined)[_0x4791('0x19')](function(_0x1ea54e){_0x2b8e05(null,_0x1ea54e);})[_0x4791('0x1a')](function(_0x5d1952){_0x2b8e05(_0x5d1952);});};AGIVertices[_0x4791('0x12')][_0x4791('0x8c')]=function(_0x1c13e2,_0x14f57c){scripts[_0x4791('0x8c')](_0x1c13e2[_0x4791('0x8d')],_0x1c13e2[_0x4791('0x8e')],_0x1c13e2['aws_polly_region'],_0x1c13e2['aws_polly_voice']||_0x4791('0x8f'),_0x1c13e2[_0x4791('0x63')],_0x1c13e2[_0x4791('0x90')]||'text')[_0x4791('0x19')](function(_0x509c23){_0x14f57c(null,_0x509c23);})[_0x4791('0x1a')](function(_0x4a781d){_0x14f57c(_0x4a781d);});};AGIVertices[_0x4791('0x12')][_0x4791('0x91')]=function(_0x496c18,_0x515392){scripts[_0x4791('0x91')](this['channel']['uniqueid'],_0x496c18[_0x4791('0x8d')],_0x496c18[_0x4791('0x8e')],_0x496c18[_0x4791('0x92')],_0x496c18[_0x4791('0x63')],_0x496c18['aws_bot_name'])[_0x4791('0x19')](function(_0x10766d){_0x515392(null,_0x10766d);})['catch'](function(_0x3f636f){_0x515392(_0x3f636f);});};AGIVertices[_0x4791('0x12')]['googleASR']=function(_0x14e008,_0x50a466,_0x4485ae){scripts['googleASR'](_0x50a466,_0x14e008[_0x4791('0x84')],_0x14e008[_0x4791('0x93')]||_0x4791('0x86'))[_0x4791('0x19')](function(_0x366cc8){_0x4485ae(null,_0x366cc8);})[_0x4791('0x1a')](function(_0x4869cc){_0x4485ae(_0x4869cc);});};AGIVertices[_0x4791('0x12')][_0x4791('0x94')]=function(_0x1d4bff,_0x3729cd,_0x54b70c){scripts[_0x4791('0x94')](_0x3729cd,_0x1d4bff[_0x4791('0x95')],_0x1d4bff[_0x4791('0x96')],_0x1d4bff[_0x4791('0x75')])[_0x4791('0x19')](function(_0x2faad8){_0x54b70c(null,_0x2faad8);})['catch'](function(_0x1ac66b){_0x54b70c(_0x1ac66b);});};AGIVertices[_0x4791('0x12')][_0x4791('0x97')]=function(_0x562af8){var _0x363964=_[_0x4791('0x6c')](verticesWithRetry,_0x562af8[_0x4791('0x3e')])?_0x562af8:_[_0x4791('0x98')](_0x562af8);for(var _0x203adc in _0x363964){if(_0x363964[_0x4791('0x99')](_0x203adc)){if(_0x363964[_0x203adc]&&_[_0x4791('0x9a')](_0x363964[_0x203adc])){if(_[_0x4791('0x6c')](recursiveMapAttributes,_0x203adc)){_0x363964[_0x203adc]=this[_0x4791('0x9b')](_0x363964[_0x203adc]);}else{_0x363964[_0x203adc]=this[_0x4791('0x9c')](_0x363964[_0x203adc]);}}}}return _0x363964;};AGIVertices[_0x4791('0x12')]['recursiveNodeIndex']=function(_0x55b9c0){for(var _0x454db8 in _0x55b9c0){if(_0x55b9c0[_0x4791('0x99')](_0x454db8)){if(_[_0x4791('0x9d')](_0x55b9c0[_0x454db8])){this[_0x4791('0x9e')](_0x55b9c0[_0x454db8]);}else if(_[_0x4791('0x9f')](_0x55b9c0[_0x454db8])){for(var _0x4cb248=0x0;_0x4cb248<_0x55b9c0[_0x454db8][_0x4791('0xa0')];_0x4cb248++){this[_0x4791('0x9e')](_0x55b9c0[_0x454db8][_0x4cb248]);}}else if(_['isString'](_0x55b9c0[_0x454db8])){_0x55b9c0[_0x454db8]=this['replaceAllVariables'](_0x55b9c0[_0x454db8]);}}}};AGIVertices[_0x4791('0x12')][_0x4791('0xa1')]=function(_0x233195,_0x255c5f){for(var _0x385399 in _0x233195){if(_0x233195['hasOwnProperty'](_0x385399)){if(_[_0x4791('0x9d')](_0x233195[_0x385399])){if(!_[_0x4791('0x4a')](_0x233195[_0x385399])){this[_0x4791('0xa1')](_0x233195[_0x385399],util['format'](_0x4791('0xa2'),_0x255c5f,_0x385399));}}else if(_[_0x4791('0x9f')](_0x233195[_0x385399])){for(var _0x39b80c=0x0;_0x39b80c<_0x233195[_0x385399][_0x4791('0xa0')];_0x39b80c++){this[_0x4791('0xa1')](_0x233195[_0x385399][_0x39b80c],util[_0x4791('0x2c')](_0x4791('0xa2'),_0x255c5f,_0x385399+'['+_0x39b80c+']'));}}else{if(!_[_0x4791('0x4b')](_0x233195[_0x385399])){this[_0x4791('0x10')]['setVariable'](util[_0x4791('0x2c')](_0x4791('0xa2'),_0x255c5f,_0x385399),_0x233195[_0x385399]);}}}}};AGIVertices[_0x4791('0x12')][_0x4791('0x9b')]=function(_0x6e205){try{var _0x27ef38=JSON[_0x4791('0x71')](_0x6e205);this[_0x4791('0x9e')](_0x27ef38);return JSON[_0x4791('0x78')](_0x27ef38);}catch(_0x495b42){return this['replaceAllVariables'](_0x6e205);}};AGIVertices[_0x4791('0x12')][_0x4791('0x9c')]=function(_0x32fa35){var _0x58e5ef=_0x32fa35[_0x4791('0xa3')]('{');for(var _0x42680e=0x1;_0x42680e<_0x58e5ef[_0x4791('0xa0')];_0x42680e+=0x1){var _0x3fe3be=_0x58e5ef[_0x42680e][_0x4791('0xa3')]('}');if(_0x3fe3be[_0x4791('0xa0')]>0x1){_0x32fa35=_0x32fa35[_0x4791('0xa4')]('{'+_0x3fe3be[0x0]+'}',this['channel'][_0x4791('0x13')](_0x3fe3be[0x0])[_0x4791('0xa5')]||_0x3fe3be[0x0]);}}if(_0x58e5ef['length']===0x1){return _0x32fa35[_0x4791('0x54')]();}return this[_0x4791('0x9c')](_0x32fa35);};AGIVertices[_0x4791('0x12')][_0x4791('0xa6')]=function(_0x3f8cc3,_0x21d8f4){var _0x1c182f=this[_0x4791('0x10')][_0x4791('0x13')](_0x3f8cc3);if(_0x1c182f[_0x4791('0xa7')]===-0x1){return _0x1c182f;}logger[_0x4791('0x33')](util['format'](_0x4791('0xa8'),_0x21d8f4,_0x1c182f['extra']));return this[_0x4791('0x10')]['setVariable'](_0x21d8f4,_0x1c182f[_0x4791('0xa5')]);};AGIVertices[_0x4791('0x12')]['isConfigured']=function(_0x132183){return _0x132183&&_0x132183!=='0'&&_0x132183!=='-1'&&_0x132183!=='';};AGIVertices[_0x4791('0x12')]['maxRetry']=function(_0x355a9b){this[_0x4791('0x3b')]['sync'](this,_0x355a9b,'-');_0x355a9b[_0x4791('0xa9')]=_0x355a9b[_0x4791('0xaa')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x4791('0x12')][_0x4791('0xab')]=function(_0x4ab823){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x4ab823[_0x4791('0x3d')]));if(!this['isConfigured'](_0x4ab823[_0x4791('0x63')])){return this[_0x4791('0x10')][_0x4791('0xac')]('no\x20text\x20configured');}var _0x23f6ef='\x22'+_0x4ab823[_0x4791('0x63')]+'\x22';if(this['isConfigured'](_0x4ab823[_0x4791('0x7c')])){_0x23f6ef+=','+_0x4ab823[_0x4791('0x7c')];}var _0x39dc46=this['channel'][_0x4791('0x5f')](_0x4791('0xad'),_0x23f6ef);if(_0x39dc46[_0x4791('0xa7')]===-0x1){return _0x39dc46;}return this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0xae'),_0x23f6ef));};AGIVertices[_0x4791('0x12')]['mrcprecog']=function(_0x3d3286){logger['info'](util[_0x4791('0x2c')](_0x4791('0xaf'),_0x3d3286['label']));if(!this[_0x4791('0x8a')](_0x3d3286['grammar'])){return this['channel'][_0x4791('0xac')](_0x4791('0xb0'));}var _0x42b40b=_0x3d3286[_0x4791('0xb1')];if(this[_0x4791('0x8a')](_0x3d3286[_0x4791('0x7c')])){_0x42b40b+=','+_0x3d3286[_0x4791('0x7c')];}var _0x4aa88a=this[_0x4791('0x10')][_0x4791('0x5f')]('MRCPRecog',_0x42b40b);if(_0x4aa88a[_0x4791('0xa7')]===-0x1){return _0x4aa88a;}var _0x4f26d9=this[_0x4791('0xa6')]('RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE');if(_0x4f26d9[_0x4791('0xa7')]===-0x1){return _0x4f26d9;}var _0x4075f9=this[_0x4791('0xa6')](_0x4791('0xb2'),_0x4791('0xb3'));if(_0x4075f9['result']===-0x1){return _0x4075f9;}var _0x55e475=this['getAndSetVariable'](_0x4791('0xb4'),_0x4791('0xb5'));if(_0x55e475[_0x4791('0xa7')]===-0x1){return _0x55e475;}return this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x42b40b));};AGIVertices[_0x4791('0x12')]['agi']=function(_0x249f4a){logger['info'](util['format'](_0x4791('0xb6'),_0x249f4a[_0x4791('0x3d')]));return this[_0x4791('0x10')][_0x4791('0x8')]([_0x249f4a['command'],_0x249f4a[_0x4791('0xb7')]]);};AGIVertices[_0x4791('0x12')]['answer']=function(_0x155cc5){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0xb8'),_0x155cc5[_0x4791('0x3d')]));if(this[_0x4791('0x8a')](_0x155cc5[_0x4791('0x6a')])){logger['info'](util[_0x4791('0x2c')](_0x4791('0xb9'),_0x155cc5['timeout']));var _0x5eb842=this[_0x4791('0x10')][_0x4791('0xba')](_0x155cc5['timeout']);if(_0x5eb842['result']===-0x1){return _0x5eb842;}}return this[_0x4791('0x10')][_0x4791('0xbb')]();};AGIVertices[_0x4791('0x12')][_0x4791('0x52')]=function(_0x397f54){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x397f54['label']));if(!this['isConfigured'](_0x397f54[_0x4791('0x50')])){return this['channel'][_0x4791('0x30')](_0x397f54,_0x4791('0xbc'));}_0x397f54['scheduledAt']=moment();if(this['isConfigured'](_0x397f54[_0x4791('0xbd')])){_0x397f54[_0x4791('0x51')]=moment()[_0x4791('0xbe')](_0x397f54[_0x4791('0xbd')],'minutes');}if(!this[_0x4791('0x8a')](_0x397f54['callback_priority'])){_0x397f54[_0x4791('0x55')]=0x2;}this[_0x4791('0x49')][_0x4791('0xbf')](this,_0x397f54);return this[_0x4791('0x10')][_0x4791('0xac')](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x397f54[_0x4791('0x4f')],_0x397f54[_0x4791('0x50')],_0x397f54[_0x4791('0x51')]));};AGIVertices['prototype'][_0x4791('0xc0')]=function(_0x46cf7f){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x46cf7f[_0x4791('0x3d')]));var _0x2f0a16=this[_0x4791('0x10')][_0x4791('0x5f')](_0x46cf7f['application'],_0x46cf7f[_0x4791('0x7c')]);if(_0x2f0a16[_0x4791('0xa7')]===-0x1){return _0x2f0a16;}return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')]('Executed\x20command\x20%s\x20%s',_0x46cf7f[_0x4791('0xc1')],_0x46cf7f['options']));};AGIVertices[_0x4791('0x12')][_0x4791('0xc2')]=function(_0x3f7218){logger[_0x4791('0x33')](util['format'](_0x4791('0xc3'),_0x3f7218['label']));if(!this[_0x4791('0x8a')](_0x3f7218[_0x4791('0x63')])){return this[_0x4791('0x10')][_0x4791('0xac')]('no\x20text\x20configured');}var _0xbfcff6='\x22'+_0x3f7218[_0x4791('0x63')]+'\x22';if(this[_0x4791('0x8a')](_0x3f7218[_0x4791('0x7c')])){_0xbfcff6+=','+_0x3f7218['options'];}var _0x3bdd0e=this[_0x4791('0x10')][_0x4791('0x5f')](_0x4791('0xad'),_0xbfcff6);if(_0x3bdd0e[_0x4791('0xa7')]===-0x1){return _0x3bdd0e;}return this[_0x4791('0x10')][_0x4791('0xac')](util['format'](_0x4791('0xae'),_0xbfcff6));};AGIVertices[_0x4791('0x12')]['sestektts']=function(_0x341f71){logger['info'](util[_0x4791('0x2c')](_0x4791('0xc4'),_0x341f71[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x341f71[_0x4791('0x63')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xc5'));}var _0x215f2b='\x22'+_0x341f71[_0x4791('0x63')]+'\x22';if(this['isConfigured'](_0x341f71['options'])){_0x215f2b+=','+_0x341f71[_0x4791('0x7c')];}var _0x2470e4=this[_0x4791('0x10')][_0x4791('0x5f')](_0x4791('0xad'),_0x215f2b);if(_0x2470e4['result']===-0x1){return _0x2470e4;}return this[_0x4791('0x10')][_0x4791('0xac')](util['format'](_0x4791('0xae'),_0x215f2b));};AGIVertices['prototype'][_0x4791('0xc6')]=function(_0x477dd4){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x477dd4[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x477dd4[_0x4791('0xb1')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xb0'));}var _0x1e4c77=_0x477dd4[_0x4791('0xb1')];if(this[_0x4791('0x8a')](_0x477dd4[_0x4791('0x7c')])){_0x1e4c77+=','+_0x477dd4[_0x4791('0x7c')];}var _0x1b2370=this['channel'][_0x4791('0x5f')]('MRCPRecog',_0x1e4c77);if(_0x1b2370[_0x4791('0xa7')]===-0x1){return _0x1b2370;}var _0x32954d=this['getAndSetVariable']('RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE');if(_0x32954d['result']===-0x1){return _0x32954d;}var _0x54354a=this['getAndSetVariable'](_0x4791('0xb2'),_0x4791('0xc7'));if(_0x54354a[_0x4791('0xa7')]===-0x1){return _0x54354a;}var _0x5109b3=this[_0x4791('0xa6')](_0x4791('0xb4'),_0x4791('0xc8'));if(_0x5109b3[_0x4791('0xa7')]===-0x1){return _0x5109b3;}return this['channel'][_0x4791('0xac')](util['format'](_0x4791('0xc9'),_0x1e4c77));};AGIVertices[_0x4791('0x12')][_0x4791('0xca')]=function(_0x3f5601){logger[_0x4791('0x33')](util['format']('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x3f5601[_0x4791('0x3d')]));if(!this['isConfigured'](_0x3f5601[_0x4791('0xb1')])){return this[_0x4791('0x10')][_0x4791('0xac')]('no\x20grammar\x20configured');}var _0x4018f8=_0x3f5601[_0x4791('0xb1')];if(this[_0x4791('0x8a')](_0x3f5601[_0x4791('0x7c')])){_0x4018f8+=','+_0x3f5601[_0x4791('0x7c')];}var _0x433e0e=this[_0x4791('0x10')][_0x4791('0x5f')]('MRCPRecog',_0x4018f8);if(_0x433e0e[_0x4791('0xa7')]===-0x1){return _0x433e0e;}var _0x5b1057=this[_0x4791('0xa6')](_0x4791('0xcb'),_0x4791('0xcc'));if(_0x5b1057['result']===-0x1){return _0x5b1057;}var _0x1c2dcc=this['getAndSetVariable'](_0x4791('0xb2'),_0x4791('0xcd'));if(_0x1c2dcc[_0x4791('0xa7')]===-0x1){return _0x1c2dcc;}var _0x2a32b8=this[_0x4791('0xa6')]('RECOG_INSTANCE()',_0x4791('0xce'));if(_0x2a32b8['result']===-0x1){return _0x2a32b8;}return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x4018f8));};AGIVertices['prototype']['database']=function(_0x219dde){logger[_0x4791('0x33')](util['format'](_0x4791('0xcf'),_0x219dde['label']));if(!this['isConfigured'](_0x219dde['odbc_id'])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x219dde,_0x4791('0xd0'));}var _0x3b44b6=this[_0x4791('0x1b')][_0x4791('0xbf')](this,_0x219dde['odbc_id']);if(!_0x3b44b6){return this['channel'][_0x4791('0x30')](_0x219dde,_0x4791('0xd1'));}if(!this['isConfigured'](_0x219dde[_0x4791('0x32')])){return this['channel'][_0x4791('0x30')](_0x219dde,_0x4791('0xd2'));}var _0x14a1b7=_0x219dde[_0x4791('0x32')][_0x4791('0x60')](/(\r\n|\n|\r)/gm,'\x20');this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0xd3'),_0x14a1b7));var _0x5bfce4=this[_0x4791('0x2e')][_0x4791('0xbf')](this,_0x3b44b6,_0x14a1b7);this['createSquareDetailsReport'][_0x4791('0xbf')](this,_0x219dde,_0x14a1b7);if(!this['isConfigured'](_0x219dde[_0x4791('0xd4')])){return this[_0x4791('0x10')]['noop'](_0x4791('0xd5'));}var _0x53fbcd=this['getVariable']['sync'](this,_0x219dde[_0x4791('0xd4')]);if(!_0x53fbcd){return this[_0x4791('0x10')][_0x4791('0x30')](_0x219dde,_0x4791('0xd6'));}var _0x2c5fc0=this;_0x5bfce4[_0x4791('0xd7')](function(_0x4d8290,_0x113c80){Object[_0x4791('0xd8')](_0x4d8290)[_0x4791('0xd7')](function(_0x1beef3){_0x2c5fc0[_0x4791('0x10')][_0x4791('0xd9')](util[_0x4791('0x2c')](_0x4791('0xda'),_0x53fbcd,_0x113c80,_0x1beef3),_0x4d8290[_0x1beef3]);});});this['channel']['setVariable'](util[_0x4791('0x2c')](_0x4791('0xdb'),_0x53fbcd),_0x5bfce4[_0x4791('0xa0')]);return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0xdc'),_0x53fbcd));};AGIVertices[_0x4791('0x12')]['dial']=function(_0x548d8b){logger[_0x4791('0xdd')](util[_0x4791('0x2c')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x548d8b[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x548d8b[_0x4791('0xde')])){return this['channel'][_0x4791('0x30')](_0x548d8b,_0x4791('0xdf'));}var _0x476873=this[_0x4791('0x1e')]['sync'](this,_0x548d8b[_0x4791('0xde')]);if(!_0x476873){return this[_0x4791('0x10')][_0x4791('0x30')](_0x548d8b,_0x4791('0xe0'));}var _0x2c259b=this[_0x4791('0x10')]['exec'](_0x4791('0xe1'),[util['format'](_0x4791('0xe2'),_0x476873),_0x548d8b['timeout'],_0x548d8b[_0x4791('0xe3')],_0x548d8b[_0x4791('0x77')]]);if(_0x2c259b[_0x4791('0xa7')]===-0x1){return _0x2c259b;}return this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')]('Executed\x20command\x20%s',_0x4791('0xe1')));};AGIVertices['prototype'][_0x4791('0xe4')]=function(_0x3bf17e){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0xe5'),_0x3bf17e[_0x4791('0x3d')]));if(!this['isConfigured'](_0x3bf17e[_0x4791('0x84')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xe6'));}if(!this[_0x4791('0x8a')](_0x3bf17e[_0x4791('0x63')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xc5'));}this[_0x4791('0x10')][_0x4791('0xe7')]=!![];this[_0x4791('0x3b')](_0x3bf17e);this[_0x4791('0x48')](_0x3bf17e['text'],'in','','');this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0xe8'),_0x3bf17e[_0x4791('0x63')]));var _0x1fd8fc=this[_0x4791('0x7d')][_0x4791('0xbf')](this,_0x3bf17e);if(_0x1fd8fc){for(var _0x43728e in _0x1fd8fc){if(_0x1fd8fc[_0x4791('0x99')](_0x43728e)){this[_0x4791('0x10')][_0x4791('0xd9')](util[_0x4791('0x2c')](_0x4791('0xe9'),_0x43728e[_0x4791('0x6f')]()),_0x1fd8fc[_0x43728e]);}}this['createSquareMessage'](_0x1fd8fc[_0x4791('0xea')],_0x4791('0xeb'),_0x4791('0xe4'),'');return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0xec'),_0x1fd8fc[_0x4791('0xea')]));}return this[_0x4791('0x10')]['error'](_0x3bf17e,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x4791('0x12')][_0x4791('0xed')]=function(_0x252b08){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0xee'),_0x252b08[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x252b08[_0x4791('0x7f')])){return this['channel'][_0x4791('0xac')]('no\x20project_id\x20configured');}if(!this['isConfigured'](_0x252b08[_0x4791('0xef')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xf0'));}if(!this[_0x4791('0x8a')](_0x252b08[_0x4791('0x80')])){return this[_0x4791('0x10')][_0x4791('0xac')]('no\x20private_key\x20configured');}if(!this[_0x4791('0x8a')](_0x252b08['dialogflowV2_language'])){return this['channel'][_0x4791('0xac')](_0x4791('0xf1'));}if(!this[_0x4791('0x8a')](_0x252b08[_0x4791('0x63')])){return this['channel']['noop'](_0x4791('0xc5'));}this[_0x4791('0x10')][_0x4791('0xe7')]=!![];this['createSquareDetailsReport'](_0x252b08);this[_0x4791('0x48')](_0x252b08[_0x4791('0x63')],'in','','');this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0xf2'),_0x252b08[_0x4791('0x63')]));var _0x4c82b2=this[_0x4791('0x7e')][_0x4791('0xbf')](this,_0x252b08);if(_0x4c82b2){for(var _0x2e712e in _0x4c82b2){if(_0x4c82b2[_0x4791('0x99')](_0x2e712e)){if(_0x2e712e!=='providerResponse'){this[_0x4791('0x10')][_0x4791('0xd9')](util['format'](_0x4791('0xe9'),_0x2e712e[_0x4791('0x6f')]()),_0x4c82b2[_0x2e712e]);}}}this[_0x4791('0x48')](_0x4c82b2[_0x4791('0xea')],_0x4791('0xeb'),_0x4791('0xed'),_0x4c82b2['providerResponse']);return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0xf3'),_0x4c82b2[_0x4791('0xea')]));}return this[_0x4791('0x10')][_0x4791('0x30')](_0x252b08,_0x4791('0xf4'));};AGIVertices[_0x4791('0x12')][_0x4791('0xf5')]=function(_0x40f96b){logger[_0x4791('0x33')](util['format'](_0x4791('0xf6'),_0x40f96b[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x40f96b[_0x4791('0xf7')])){return this[_0x4791('0x10')]['noop']('no\x20ndauth\x20url\x20configured');}if(!this[_0x4791('0x8a')](_0x40f96b['username'])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xf8'));}if(!this[_0x4791('0x8a')](_0x40f96b[_0x4791('0xf9')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xfa'));}if(!this[_0x4791('0x8a')](_0x40f96b['ndassistant_url'])){return this['channel'][_0x4791('0xac')](_0x4791('0xc5'));}this['channel']['bot']=!![];this[_0x4791('0x3b')](_0x40f96b);this[_0x4791('0x48')](_0x40f96b[_0x4791('0x63')],'in','','');this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')]('Trying\x20SestekNDA:\x20%s',_0x40f96b[_0x4791('0x63')]));var _0xac8dc5=this[_0x4791('0x82')]['sync'](this,_0x40f96b);if(_0xac8dc5){for(var _0x56545b in _0xac8dc5){if(_0xac8dc5[_0x4791('0x99')](_0x56545b)){this[_0x4791('0x10')][_0x4791('0xd9')](util['format'](_0x4791('0xfb'),_0x56545b[_0x4791('0x6f')]()),_0xac8dc5[_0x56545b]);}}this[_0x4791('0x48')](_0xac8dc5['speech'],_0x4791('0xeb'),_0x4791('0xf5'),'');if(_0xac8dc5['audiofile']){this[_0x4791('0x10')][_0x4791('0xac')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0xac8dc5[_0x4791('0xfc')]));var _0x4c1302=this[_0x4791('0x10')]['streamFile'](_0xac8dc5[_0x4791('0xfc')]);try{fs[_0x4791('0xfd')](_0xac8dc5[_0x4791('0xfc')]+_0x4791('0xfe'));}catch(_0x314b13){logger[_0x4791('0x30')](_0x314b13);}return _0x4c1302;}else{return this[_0x4791('0x10')][_0x4791('0xac')](util['format'](_0x4791('0xff'),_0xac8dc5[_0x4791('0xea')]));}}return this[_0x4791('0x10')][_0x4791('0x30')](_0x40f96b,_0x4791('0x100'));};AGIVertices[_0x4791('0x12')][_0x4791('0x101')]=function(_0x3c4038){logger['info'](util[_0x4791('0x2c')](_0x4791('0x102'),_0x3c4038['label']));return this[_0x4791('0x10')][_0x4791('0xac')]('end');};AGIVertices[_0x4791('0x12')]['ext_dial']=function(_0x4c50b6){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x103'),_0x4c50b6['label']));var _0x111cf3='';if(_0x4c50b6['trunk_id']){if(!this['isConfigured'](_0x4c50b6[_0x4791('0x104')])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x4c50b6,'no\x20trunk\x20selected');}else{var _0x1fc63b=parseInt(_0x4c50b6[_0x4791('0x104')],0xa);if(isNaN(_0x1fc63b)){_0x111cf3=_0x4c50b6['trunk_id'];}else{_0x111cf3=this[_0x4791('0x105')][_0x4791('0xbf')](this,_0x4c50b6[_0x4791('0x104')]);if(!_0x111cf3){return this[_0x4791('0x10')][_0x4791('0x30')](_0x4c50b6,_0x4791('0x106'));}}}}else if(_0x4c50b6['trunk_name']){_0x111cf3=_0x4c50b6['trunk_name'];}else{return this[_0x4791('0x10')][_0x4791('0x30')](_0x4c50b6,_0x4791('0x107'));}var _0x50a40a=this[_0x4791('0x10')][_0x4791('0x5f')](_0x4791('0xe1'),[util[_0x4791('0x2c')]('SIP/%s/%s',_0x111cf3,_0x4c50b6[_0x4791('0x4f')]),_0x4c50b6[_0x4791('0x6a')],_0x4c50b6[_0x4791('0xe3')],_0x4c50b6[_0x4791('0x77')]]);if(_0x50a40a[_0x4791('0xa7')]===-0x1){return _0x50a40a;}return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x108'),_0x4791('0xe1')));};AGIVertices['prototype'][_0x4791('0x109')]=function(_0x5b95da){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x5b95da[_0x4791('0x3d')]));return this[_0x4791('0x10')][_0x4791('0xac')]('finally');};AGIVertices[_0x4791('0x12')]['getdigits']=function(_0x560def){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x560def[_0x4791('0x3d')]));if(_0x560def['retry']===0x0){return this[_0x4791('0xaa')](_0x560def);}_0x560def['retry']-=0x1;if(!this[_0x4791('0x8a')](_0x560def[_0x4791('0x10a')])){return this['channel'][_0x4791('0x30')](_0x560def,'no\x20file\x20audio\x20selected');}var _0x42bbeb=this['getSound'][_0x4791('0xbf')](this,_0x560def[_0x4791('0x10a')]);if(!_0x42bbeb){return this[_0x4791('0x10')][_0x4791('0x30')](_0x560def,_0x4791('0x10b'));}if(!this['isConfigured'](_0x560def[_0x4791('0xd4')])){return this['channel'][_0x4791('0x30')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x26152f=this[_0x4791('0x10')][_0x4791('0x10c')](_0x42bbeb,_0x560def[_0x4791('0x10d')],_0x560def[_0x4791('0x10e')]);var _0xe876b2=_0x26152f[_0x4791('0xa7')]?_0x26152f[_0x4791('0xa7')][_0x4791('0x54')]():'';logger[_0x4791('0x33')](_0x4791('0x10f'),JSON[_0x4791('0x78')](_0x26152f));if(_0x26152f[_0x4791('0xa7')]===-0x1){this[_0x4791('0x3b')][_0x4791('0xbf')](this,_0x560def,_0xe876b2);return _0x26152f;}else if(_0x26152f[_0x4791('0xa5')]===_0x4791('0x6a')){_0x26152f[_0x4791('0xa7')]=_0xe876b2[_0x4791('0xa0')]>=parseInt(_0x560def[_0x4791('0x110')])?'x':'i';}else{_0x26152f['result']=_0xe876b2['length']>=parseInt(_0x560def[_0x4791('0x110')])&&_0xe876b2['length']<=parseInt(_0x560def[_0x4791('0x10e')])?'x':'i';}var _0x1bdb67=this[_0x4791('0x13')]['sync'](this,_0x560def[_0x4791('0xd4')]);if(!_0x1bdb67){return this[_0x4791('0x10')][_0x4791('0x30')](_0x560def,_0x4791('0xd6'));}this[_0x4791('0x10')][_0x4791('0xd9')](_0x1bdb67,_0xe876b2);if(this[_0x4791('0x8a')](_0x560def['hiddendigitsnum'])){var _0x3d1f66=parseInt(_0x560def[_0x4791('0x111')],0xa);var _0x386ceb=rs[_0x4791('0x112')]({'charset':'*','length':_0x3d1f66});var _0x570358=_0xe876b2[_0x4791('0xa0')];if(_0x570358>0x0){if(_0x570358>_0x3d1f66){this['createSquareDetailsReport'][_0x4791('0xbf')](this,_0x560def,_0x560def['hiddendigitspos']===_0x4791('0x113')?_0x386ceb+_0xe876b2[_0x4791('0x114')](_0x3d1f66):_0xe876b2[_0x4791('0x114')](0x0,_0x570358-_0x3d1f66)+_0x386ceb);}else{this[_0x4791('0x3b')][_0x4791('0xbf')](this,_0x560def,rs[_0x4791('0x112')]({'charset':'*','length':_0x570358}));}}else{this[_0x4791('0x3b')][_0x4791('0xbf')](this,_0x560def,'');}}else{this['createSquareDetailsReport'][_0x4791('0xbf')](this,_0x560def,_0xe876b2);}return _0x26152f;};AGIVertices[_0x4791('0x12')][_0x4791('0xf')]=function(_0xc8167d){logger['info'](util['format'](_0x4791('0x115'),_0xc8167d[_0x4791('0x3d')]));return this[_0x4791('0xe')](_0xc8167d);};AGIVertices[_0x4791('0x12')]['goal']=function(_0x47ee58){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x47ee58[_0x4791('0x3d')]));this[_0x4791('0x3b')]['sync'](this,_0x47ee58,_0x47ee58[_0x4791('0x116')]);return this[_0x4791('0x10')][_0x4791('0xac')](util['format']('GOAL\x20%s',_0x47ee58['goalname']));};AGIVertices[_0x4791('0x12')][_0x4791('0x117')]=function(_0x4abc7d){logger['info'](util[_0x4791('0x2c')](_0x4791('0x118'),_0x4abc7d[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x4abc7d[_0x4791('0x8d')])||!this[_0x4791('0x8a')](_0x4abc7d[_0x4791('0x8e')])){return this[_0x4791('0x10')]['noop']('no\x20valid\x20credentials\x20configured');}if(!this[_0x4791('0x8a')](_0x4abc7d[_0x4791('0x63')])){return this[_0x4791('0x10')]['noop']('no\x20text\x20configured');}this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x119'),_0x4abc7d[_0x4791('0x63')]));var _0x31d2f7=this['awsPolly'][_0x4791('0xbf')](this,_0x4abc7d);if(_0x31d2f7){this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x11a'),_0x31d2f7));var _0xab286e=this['channel'][_0x4791('0x11b')](_0x31d2f7);try{fs[_0x4791('0xfd')](_0x31d2f7+_0x4791('0xfe'));}catch(_0x745535){logger[_0x4791('0x30')](_0x745535);}return _0xab286e;}return this[_0x4791('0x10')][_0x4791('0x30')](_0x4abc7d,_0x4791('0x11c'));};AGIVertices[_0x4791('0x12')][_0x4791('0x11d')]=function(_0x21e41b){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x11e'),_0x21e41b[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x21e41b[_0x4791('0x8d')])||!this[_0x4791('0x8a')](_0x21e41b['aws_secret_access_key'])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x11f'));}if(!this[_0x4791('0x8a')](_0x21e41b['aws_bot_name'])){return this[_0x4791('0x10')]['noop'](_0x4791('0x120'));}if(!this[_0x4791('0x8a')](_0x21e41b['text'])){return this[_0x4791('0x10')]['noop']('no\x20text\x20configured');}this['channel'][_0x4791('0xe7')]=!![];this['createSquareDetailsReport'](_0x21e41b);this[_0x4791('0x48')](_0x21e41b[_0x4791('0x63')],'in','','');this[_0x4791('0x10')]['noop'](util['format'](_0x4791('0x121'),_0x21e41b['text']));var _0x3b4605=this[_0x4791('0x91')][_0x4791('0xbf')](this,_0x21e41b);if(_0x3b4605){for(var _0x3dda25 in _0x3b4605){if(_0x3b4605['hasOwnProperty'](_0x3dda25)&&_[_0x4791('0x9a')](_0x3b4605[_0x3dda25])){this['channel'][_0x4791('0xd9')](util['format']('AWS_LEX_%s',_0x3dda25[_0x4791('0x6f')]()),_0x3b4605[_0x3dda25]);}}if(_[_0x4791('0x4b')](_0x3b4605[_0x4791('0x7a')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x122'));}else{this[_0x4791('0x48')](_0x3b4605[_0x4791('0x7a')],'out',_0x4791('0x123'),'');return this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x124'),_0x3b4605[_0x4791('0x7a')]));}}return this[_0x4791('0x10')]['error'](_0x21e41b,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x4791('0x12')][_0x4791('0x125')]=function(_0x33b1b4){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x126'),_0x33b1b4['label'],_0x33b1b4[_0x4791('0x6a')]));if(!this[_0x4791('0x8a')](_0x33b1b4['key'])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xe6'));}var _0x279582=_0x4791('0x127');var _0x1c3759=util[_0x4791('0x2c')](_0x4791('0x128'),FILES_PATH,rs[_0x4791('0x112')](0x4));var _0x2b7cf0=util[_0x4791('0x2c')]('%s.%s',_0x1c3759,_0x279582);var _0x313cf6=!![];if(_0x33b1b4['beep']===_0x4791('0x129')){_0x313cf6=![];}var _0x4e87a1=this[_0x4791('0x10')][_0x4791('0x12a')](_0x1c3759,_0x279582,_0x33b1b4[_0x4791('0x12b')],_0x33b1b4[_0x4791('0x6a')],undefined,_0x313cf6);if(_0x4e87a1[_0x4791('0xa7')]!==-0x1){this[_0x4791('0x10')]['noop'](util['format'](_0x4791('0x12c'),_0x2b7cf0));var _0x2ae36d=this[_0x4791('0x12d')][_0x4791('0xbf')](this,_0x33b1b4,_0x2b7cf0);if(_0x2ae36d){for(var _0x286614 in _0x2ae36d){if(_0x2ae36d[_0x4791('0x99')](_0x286614)){this[_0x4791('0x10')][_0x4791('0xd9')](util['format']('GOOGLE_ASR_%s',_0x286614[_0x4791('0x6f')]()),_0x2ae36d[_0x286614]);}}return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x12e'),JSON[_0x4791('0x78')](_0x2ae36d)));}}return _0x4e87a1;};AGIVertices['prototype'][_0x4791('0x12f')]=function(_0x4b918d){logger[_0x4791('0x33')](util['format'](_0x4791('0x130'),_0x4b918d[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x4b918d[_0x4791('0x95')])){return this['channel'][_0x4791('0xac')](_0x4791('0x131'));}if(!this[_0x4791('0x8a')](_0x4b918d['appsecret'])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x132'));}var _0x29820e=_0x4791('0x127');var _0x3ac3ae=util[_0x4791('0x2c')](_0x4791('0x128'),FILES_PATH,rs[_0x4791('0x112')](0x4));var _0x5e763d=util['format'](_0x4791('0xa2'),_0x3ac3ae,_0x29820e);var _0x4124cd=!![];if(_0x4b918d[_0x4791('0x133')]==='NOBEEP'){_0x4124cd=![];}var _0x92f183=this[_0x4791('0x10')][_0x4791('0x12a')](_0x3ac3ae,_0x29820e,_0x4b918d[_0x4791('0x12b')],_0x4b918d[_0x4791('0x6a')],undefined,_0x4124cd);if(_0x92f183[_0x4791('0xa7')]!==-0x1){this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x134'),_0x5e763d));var _0x4825ab=this[_0x4791('0x94')][_0x4791('0xbf')](this,_0x4b918d,_0x5e763d);if(_0x4825ab){for(var _0x20d05f in _0x4825ab){if(_0x4825ab[_0x4791('0x99')](_0x20d05f)){this[_0x4791('0x10')][_0x4791('0xd9')](util[_0x4791('0x2c')]('TILDE_ASR_%s',_0x20d05f[_0x4791('0x6f')]()),_0x4825ab[_0x20d05f]);}}return this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x135'),JSON['stringify'](_0x4825ab)));}}return _0x92f183;};AGIVertices['prototype']['gotoc']=function(_0x1f41ff){logger['info'](util[_0x4791('0x2c')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x1f41ff[_0x4791('0x3d')]));return this['channel'][_0x4791('0x136')](_0x1f41ff[_0x4791('0x43')],_0x1f41ff[_0x4791('0x44')],_0x1f41ff[_0x4791('0x45')]);};AGIVertices[_0x4791('0x12')][_0x4791('0x137')]=function(_0x419059){logger['info'](util['format'](_0x4791('0x138'),_0x419059[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x419059[_0x4791('0x139')])){return this['channel'][_0x4791('0x30')](_0x419059,'no\x20condition\x20configured');}try{var _0x253d02=eval(_0x419059['condition'])?_0x4791('0x13a'):_0x4791('0x13b');this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x13c'),_0x419059[_0x4791('0x139')],_0x253d02));return{'code':0xc8,'result':_0x253d02};}catch(_0x3f7b12){return{'code':0xc8,'result':_0x4791('0x13b')};}};AGIVertices['prototype']['gotoiftime']=function(_0x154488){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x154488[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x154488['interval_id'])){return this[_0x4791('0x10')]['error'](_0x154488,_0x4791('0x13d'));}var _0x43b1f6=this[_0x4791('0x27')]['sync'](this,_0x154488[_0x4791('0x13e')]);if(!_0x43b1f6){return this[_0x4791('0x10')][_0x4791('0x30')](_0x154488,_0x4791('0x13f'));}for(var _0x2114a6=0x0;_0x2114a6<_0x43b1f6[_0x4791('0xa0')];_0x2114a6+=0x1){var _0x49d602=this[_0x4791('0x10')][_0x4791('0x13')](util[_0x4791('0x2c')](_0x4791('0x140'),_0x43b1f6[_0x2114a6]));if(_0x49d602[_0x4791('0xa7')]===-0x1){return _0x49d602;}logger[_0x4791('0x33')](util['format'](_0x4791('0x141'),_0x43b1f6[_0x2114a6],_0x49d602[_0x4791('0xa5')]));if(_0x49d602[_0x4791('0xa5')]==='true'){logger['info'](util[_0x4791('0x2c')](_0x4791('0x141'),_0x43b1f6[_0x2114a6],_0x4791('0x13a')));this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x141'),_0x43b1f6[_0x2114a6],_0x4791('0x13a')));return{'code':0xc8,'result':_0x4791('0x13a')};}else{logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x141'),_0x43b1f6[_0x2114a6],_0x4791('0x13b')));this['channel']['noop'](util['format'](_0x4791('0x141'),_0x43b1f6[_0x2114a6],_0x4791('0x13b')));}}return{'code':0xc8,'result':_0x4791('0x13b')};};AGIVertices['prototype']['hangup']=function(_0x4eaadf){logger['info'](util[_0x4791('0x2c')](_0x4791('0x142'),_0x4eaadf[_0x4791('0x3d')]));return this[_0x4791('0x10')][_0x4791('0x143')]();};AGIVertices[_0x4791('0x12')][_0x4791('0x144')]=function(_0x40c8fa){logger['info'](util[_0x4791('0x2c')](_0x4791('0x145'),_0x40c8fa['label']));if(!this[_0x4791('0x8a')](_0x40c8fa[_0x4791('0x84')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xe6'));}var _0x2470f0=_0x4791('0x127');var _0x49325e=util[_0x4791('0x2c')](_0x4791('0x128'),FILES_PATH,rs['generate'](0x4));var _0x3f2d1e=util[_0x4791('0x2c')](_0x4791('0xa2'),_0x49325e,_0x2470f0);var _0x413069=!![];if(_0x40c8fa['beep']==='NOBEEP'){_0x413069=![];}var _0x5571a9=this[_0x4791('0x10')][_0x4791('0x12a')](_0x49325e,_0x2470f0,_0x40c8fa[_0x4791('0x12b')],_0x40c8fa['timeout'],undefined,_0x413069);if(_0x5571a9['result']!==-0x1){this[_0x4791('0x10')]['noop'](util['format'](_0x4791('0x146'),_0x3f2d1e));var _0x494961=this[_0x4791('0x88')]['sync'](this,_0x40c8fa,_0x3f2d1e);if(_0x494961){for(var _0x553e18 in _0x494961){if(_0x494961['hasOwnProperty'](_0x553e18)){this[_0x4791('0x10')][_0x4791('0xd9')](util[_0x4791('0x2c')](_0x4791('0x147'),_0x553e18[_0x4791('0x6f')]()),_0x494961[_0x553e18]);}}return this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x148'),JSON[_0x4791('0x78')](_0x494961)));}}return _0x5571a9;};AGIVertices[_0x4791('0x12')][_0x4791('0x149')]=function(_0x22004b){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x14a'),_0x22004b['label']));if(!this[_0x4791('0x8a')](_0x22004b[_0x4791('0x84')])){return this[_0x4791('0x10')]['noop'](_0x4791('0xe6'));}if(!this['isConfigured'](_0x22004b[_0x4791('0x63')])){return this['channel']['noop'](_0x4791('0xc5'));}this[_0x4791('0x10')]['noop'](util['format']('Trying\x20ispeech\x20TTS\x20%s',_0x22004b['text']));var _0x11f9bb=this['ispeechTTS']['sync'](this,_0x22004b);if(_0x11f9bb){this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x146'),_0x11f9bb));var _0x3ae2a1=this[_0x4791('0x10')][_0x4791('0x11b')](_0x11f9bb,_0x22004b[_0x4791('0x12b')]);try{fs[_0x4791('0xfd')](_0x11f9bb+'.wav');}catch(_0x40cf0d){logger[_0x4791('0x30')](_0x40cf0d);}return _0x3ae2a1;}return this['channel'][_0x4791('0x30')](_0x22004b,_0x4791('0x14b'));};AGIVertices['prototype']['login']=function(_0x5eab95){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x14c'),_0x5eab95[_0x4791('0x3d')]));if(!this['isConfigured'](_0x5eab95[_0x4791('0x14d')])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x5eab95,_0x4791('0x14e'));}logger[_0x4791('0x33')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x4791('0x41')],_0x5eab95[_0x4791('0x14d')]));var _0x3ea477=this[_0x4791('0x5b')][_0x4791('0xbf')](this,_0x5eab95[_0x4791('0x14d')]);if(_0x3ea477){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x14f'),this[_0x4791('0x10')][_0x4791('0x41')],_0x5eab95[_0x4791('0x14d')]));this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x14f'),this[_0x4791('0x10')]['callerid'],_0x5eab95['findBy']));return{'code':0xc8,'result':_0x4791('0x150')};}else{logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x151'),this[_0x4791('0x10')][_0x4791('0x41')],_0x5eab95[_0x4791('0x14d')]));this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x4791('0x10')]['callerid'],_0x5eab95['findBy']));return{'code':0xc8,'result':_0x4791('0x152')};}};AGIVertices[_0x4791('0x12')][_0x4791('0x153')]=function(_0xe0632c){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x154'),_0xe0632c[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0xe0632c[_0x4791('0x14d')])){return this[_0x4791('0x10')][_0x4791('0x30')](_0xe0632c,'no\x20find\x20by\x20configured');}logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x155'),this[_0x4791('0x10')][_0x4791('0x41')],_0xe0632c[_0x4791('0x14d')]));var _0x14de68=this[_0x4791('0x5a')][_0x4791('0xbf')](this,_0xe0632c[_0x4791('0x14d')]);if(_0x14de68){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x14f'),this[_0x4791('0x10')][_0x4791('0x41')],_0xe0632c[_0x4791('0x14d')]));this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4791('0x10')]['callerid'],_0xe0632c[_0x4791('0x14d')]));return{'code':0xc8,'result':_0x4791('0x150')};}else{logger['info'](util[_0x4791('0x2c')](_0x4791('0x151'),this['channel'][_0x4791('0x41')],_0xe0632c[_0x4791('0x14d')]));this['channel']['noop'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x4791('0x10')][_0x4791('0x41')],_0xe0632c[_0x4791('0x14d')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x4791('0x156')]=function(_0x6a8303){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x157'),_0x6a8303[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x6a8303[_0x4791('0x158')])){return this['channel'][_0x4791('0x30')](_0x6a8303,'no\x20operation\x20configured');}this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x159'),_0x6a8303[_0x4791('0x158')]));var _0xf6d6be=eval(_0x6a8303[_0x4791('0x158')]);if(!this['isConfigured'](_0x6a8303[_0x4791('0xd4')])){return this[_0x4791('0x10')]['noop'](_0x4791('0xd5'));}var _0x202da9=this[_0x4791('0x13')][_0x4791('0xbf')](this,_0x6a8303[_0x4791('0xd4')]);if(!_0x202da9){return this[_0x4791('0x10')][_0x4791('0x30')](_0x6a8303,_0x4791('0xd6'));}if(_[_0x4791('0x9f')](_0xf6d6be)){var _0xcb2030=this;_0xf6d6be[_0x4791('0xd7')](function(_0x3f241c,_0x136350){_0xcb2030[_0x4791('0x10')][_0x4791('0xd9')](util['format']('%s[%s]',_0x202da9,_0x136350),_0x3f241c);});return this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x15a'),_0x202da9));}else{return this[_0x4791('0x10')][_0x4791('0xd9')](_0x202da9,_0xf6d6be);}};AGIVertices[_0x4791('0x12')][_0x4791('0xd')]=function(_0x26ed0d){logger['info'](util[_0x4791('0x2c')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x26ed0d[_0x4791('0x3d')]));if(_0x26ed0d[_0x4791('0xa9')]===0x0){return this[_0x4791('0xaa')](_0x26ed0d);}_0x26ed0d[_0x4791('0xa9')]-=0x1;if(!this[_0x4791('0x8a')](_0x26ed0d[_0x4791('0x10a')])){return this['channel']['error'](_0x26ed0d,_0x4791('0x15b'));}var _0xd63d28=this[_0x4791('0x21')][_0x4791('0xbf')](this,_0x26ed0d[_0x4791('0x10a')]);if(!_0xd63d28){return this[_0x4791('0x10')]['error'](_0x26ed0d,_0x4791('0x10b'));}var _0x3a8db9=this['channel'][_0x4791('0x10c')](_0xd63d28,_0x26ed0d[_0x4791('0x10d')],_0x26ed0d[_0x4791('0x15c')]);var _0x381c9d=_0x3a8db9[_0x4791('0xa7')];if(_0x3a8db9[_0x4791('0xa7')]===-0x1){this['createSquareDetailsReport'][_0x4791('0xbf')](this,_0x26ed0d,'-1');return _0x3a8db9;}else if(_0x3a8db9[_0x4791('0xa5')]===_0x4791('0x6a')){_0x3a8db9[_0x4791('0xa7')]=_0x3a8db9['result'][_0x4791('0xa0')]>0x0?_0x3a8db9[_0x4791('0xa7')]:'t';}else if(_[_0x4791('0x4a')](_0x3a8db9[_0x4791('0xa7')])){_0x3a8db9[_0x4791('0xa7')]='#';_0x381c9d='#';}if(!this['isConfigured'](_0x26ed0d[_0x4791('0xd4')])){this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xd5'));}else{var _0x31fe2a=this[_0x4791('0x13')][_0x4791('0xbf')](this,_0x26ed0d[_0x4791('0xd4')]);if(!_0x31fe2a){return this[_0x4791('0x10')]['error'](_0x26ed0d,'no\x20variable\x20found');}this[_0x4791('0x10')]['setVariable'](_0x31fe2a,_0x381c9d);}this[_0x4791('0x3b')][_0x4791('0xbf')](this,_0x26ed0d,_0x381c9d);return _0x3a8db9;};AGIVertices[_0x4791('0x12')][_0x4791('0xac')]=function(_0x3d08b1){logger['info'](util[_0x4791('0x2c')](_0x4791('0x15d'),_0x3d08b1['label']));return this['channel'][_0x4791('0xac')](_0x3d08b1[_0x4791('0x15e')]||_0x3d08b1[_0x4791('0x3d')]);};AGIVertices['prototype'][_0x4791('0x15f')]=function(_0x4dfbc7){logger['info'](util[_0x4791('0x2c')](_0x4791('0x160'),_0x4dfbc7[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x4dfbc7['findBy'])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x4dfbc7,_0x4791('0x14e'));}logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x155'),this[_0x4791('0x10')][_0x4791('0x41')],_0x4dfbc7['findBy']));var _0x293ffd=this[_0x4791('0x56')][_0x4791('0xbf')](this,_0x4dfbc7[_0x4791('0x161')]);var _0x11cbf9=this[_0x4791('0x58')][_0x4791('0xbf')](this,_0x4dfbc7[_0x4791('0x14d')],_0x293ffd);if(_0x11cbf9){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4791('0x10')]['callerid'],_0x4dfbc7[_0x4791('0x14d')]));this[_0x4791('0x10')]['noop'](util['format'](_0x4791('0x14f'),this['channel'][_0x4791('0x41')],_0x4dfbc7['findBy']));return{'code':0xc8,'result':_0x4791('0x150')};}else{logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x151'),this[_0x4791('0x10')][_0x4791('0x41')],_0x4dfbc7[_0x4791('0x14d')]));this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x4dfbc7[_0x4791('0x14d')]));return{'code':0xc8,'result':_0x4791('0x152')};}};AGIVertices['prototype'][_0x4791('0x162')]=function(_0x79c2f1){logger['info'](util[_0x4791('0x2c')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x79c2f1[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x79c2f1['file_id'])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x79c2f1,_0x4791('0x15b'));}var _0x52065b=this[_0x4791('0x21')][_0x4791('0xbf')](this,_0x79c2f1['file_id']);if(!_0x52065b){return this['channel'][_0x4791('0x30')](_0x79c2f1,_0x4791('0x10b'));}var _0x1517ee=this[_0x4791('0x10')][_0x4791('0x5f')](_0x4791('0x163'),[_0x52065b,_0x79c2f1[_0x4791('0xe3')]]);if(_0x1517ee[_0x4791('0xa7')]===-0x1){return _0x1517ee;}return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x164'),_0x4791('0x163'),_0x52065b));};AGIVertices['prototype'][_0x4791('0x165')]=function(_0x437179){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x437179[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x437179[_0x4791('0x166')])){return this['channel'][_0x4791('0x30')](_0x437179,_0x4791('0x167'));}var _0x308385='';var _0x1056f6=parseInt(_0x437179[_0x4791('0x166')],0xa);if(isNaN(_0x1056f6)){_0x308385=_0x437179[_0x4791('0x166')];}else{_0x308385=this['getVoiceQueue'][_0x4791('0xbf')](this,_0x437179[_0x4791('0x166')]);if(!_0x308385){return this['channel'][_0x4791('0x30')](_0x437179,'no\x20queue\x20found');}}var _0x2eb78d='';if(this[_0x4791('0x8a')](_0x437179[_0x4791('0x10a')])){var _0x4cbb6f=this['getSound']['sync'](this,_0x437179[_0x4791('0x10a')]);if(_0x4cbb6f){_0x2eb78d=_0x4cbb6f;}}this[_0x4791('0x3b')][_0x4791('0xbf')](this,_0x437179,_0x308385);if(_0x437179['opts']['indexOf']('x')<0x0){_0x437179['opts']+='x';}if(_0x437179['opts'][_0x4791('0x168')]('X')<0x0){_0x437179['opts']+='X';}this['channel'][_0x4791('0xd9')](_0x4791('0x169'),_0x308385?_0x308385[_0x4791('0x16a')]():'');var _0x3ccfed=this[_0x4791('0x10')]['exec'](_0x4791('0x16b'),[_0x308385,_0x437179['opts'],_0x437179[_0x4791('0x77')],_0x2eb78d,_0x437179['timeout'],_0x437179[_0x4791('0x8')],_0x437179[_0x4791('0x16c')],_0x437179[_0x4791('0x16d')],'',_0x437179[_0x4791('0x16e')]]);if(_0x3ccfed[_0x4791('0xa7')]===-0x1){return _0x3ccfed;}return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x164'),_0x4791('0x16b'),_0x308385));};AGIVertices[_0x4791('0x12')][_0x4791('0x16f')]=function(_0x181015){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x170'),_0x181015[_0x4791('0x3d')]));var _0x50be3a=_0x181015['recordingFormat']||_0x4791('0x127');var _0x47a567=util[_0x4791('0x2c')](_0x4791('0x171'),this[_0x4791('0x10')][_0x4791('0x3c')],rs[_0x4791('0x112')](0x5));var _0x492779=util[_0x4791('0x2c')](_0x4791('0x172'),FILES_PATH,_0x47a567,_0x50be3a);var _0x5c636=util[_0x4791('0x2c')](_0x4791('0x128'),FILES_PATH,_0x47a567);this[_0x4791('0x40')][_0x4791('0xbf')](this,_0x181015,_0x47a567,_0x492779);this[_0x4791('0x10')][_0x4791('0xd9')](_0x4791('0x173'),_0x47a567);logger[_0x4791('0x33')](_0x4791('0x174'),_0x5c636,_0x50be3a,_0x181015[_0x4791('0x175')],_0x181015[_0x4791('0x6a')]);return this['channel'][_0x4791('0x12a')](_0x5c636,_0x50be3a,_0x181015[_0x4791('0x175')],_0x181015[_0x4791('0x6a')],undefined,!![]);};AGIVertices[_0x4791('0x12')][_0x4791('0x176')]=function(_0x14630e){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x177'),_0x14630e['label']));if(!this['isConfigured'](_0x14630e[_0x4791('0x77')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x178'));}var _0x1cc9ad=this[_0x4791('0x68')][_0x4791('0xbf')](this,_0x14630e);logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x179'),util['inspect'](_0x1cc9ad,{'showHidden':![],'depth':null})));if(!this[_0x4791('0x8a')](_0x14630e[_0x4791('0xd4')])){return this[_0x4791('0x10')][_0x4791('0xac')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x3559fc=this[_0x4791('0x13')][_0x4791('0xbf')](this,_0x14630e[_0x4791('0xd4')]);if(!_0x3559fc){return this[_0x4791('0x10')]['error'](_0x14630e,_0x4791('0xd6'));}this[_0x4791('0x10')][_0x4791('0xd9')](util[_0x4791('0x2c')](_0x4791('0x17a'),_0x3559fc),_0x1cc9ad[_0x4791('0x79')]?_0x1cc9ad['statusCode']:_0x4791('0x17b'));this['channel'][_0x4791('0xd9')](util[_0x4791('0x2c')](_0x4791('0x17c'),_0x3559fc),_0x1cc9ad[_0x4791('0x17d')]?_0x1cc9ad[_0x4791('0x17d')]:'OK');if(_0x1cc9ad[_0x4791('0x70')]){try{this[_0x4791('0xa1')](_0x1cc9ad[_0x4791('0x70')],_0x3559fc);}catch(_0x21b4ab){logger['error'](util[_0x4791('0x2c')](_0x4791('0x17e'),_0x3559fc));}}return this['channel']['noop'](util['format'](_0x4791('0xdc'),_0x3559fc));};AGIVertices[_0x4791('0x12')][_0x4791('0x17f')]=function(_0x3a366b){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x180'),_0x3a366b['label']));return this[_0x4791('0x10')]['sayDigits'](_0x3a366b[_0x4791('0x181')]['replace'](/\s+/g,''),_0x3a366b['escape_digits']);};AGIVertices['prototype'][_0x4791('0x182')]=function(_0x5cd4eb){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x183'),_0x5cd4eb[_0x4791('0x3d')]));return this['channel'][_0x4791('0x184')](_0x5cd4eb[_0x4791('0x6b')][_0x4791('0x60')](/\s+/g,''),_0x5cd4eb['escape_digits']);};AGIVertices[_0x4791('0x12')][_0x4791('0x185')]=function(_0xb3425b){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0xb3425b['label']));return this[_0x4791('0x10')]['sayPhonetic'](_0xb3425b['text'],_0xb3425b[_0x4791('0x175')]);};AGIVertices['prototype']['sendMail']=function(_0x203326){logger['info'](util[_0x4791('0x2c')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x203326[_0x4791('0x3d')]));if(!this['isConfigured'](_0x203326[_0x4791('0x186')])){return this[_0x4791('0x10')]['noop'](_0x4791('0x187'));}var _0x5ea0ac=this['getMailAccount'][_0x4791('0xbf')](this,_0x203326[_0x4791('0x186')]);if(!_0x5ea0ac||!_0x5ea0ac['Smtp']){return this[_0x4791('0x10')][_0x4791('0x30')](_0x203326,'no\x20mail\x20account\x20found');}var _0x256714={'from':util[_0x4791('0x2c')]('\x22%s\x22\x20<%s>',_0x5ea0ac['name'],_0x5ea0ac[_0x4791('0x188')]||_0x5ea0ac[_0x4791('0x189')][_0x4791('0x18a')]),'to':_0x203326['to']||'','cc':_0x203326['cc']||'','bcc':_0x203326[_0x4791('0x18b')]||'','subject':_0x203326[_0x4791('0x18c')],'html':_0x203326['text'],'text':_0x203326[_0x4791('0x63')]};if(this['isConfigured'](_0x203326[_0x4791('0x18d')])){}logger[_0x4791('0xdd')](_0x4791('0x18e'),JSON[_0x4791('0x78')](_0x256714));this[_0x4791('0x3b')]['sync'](this,_0x203326,_0x203326[_0x4791('0x186')]);this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x5ea0ac['name']));this[_0x4791('0x25')][_0x4791('0xbf')](this,_0x5ea0ac[_0x4791('0x18f')],_0x256714);return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x190'));};AGIVertices[_0x4791('0x12')]['sendFax']=function(_0x3b090e){logger[_0x4791('0x33')](util['format'](_0x4791('0x191'),_0x3b090e[_0x4791('0x3d')]));return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x192'));};AGIVertices[_0x4791('0x12')][_0x4791('0x193')]=function(_0x4c6d3a){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x194'),_0x4c6d3a[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x4c6d3a['sms_account_id'])){return this[_0x4791('0x10')][_0x4791('0xac')]('no\x20sms\x20account\x20configured');}var _0x4da8b0=this['getSmsAccount']['sync'](this,_0x4c6d3a[_0x4791('0x195')]);if(!_0x4da8b0){return this[_0x4791('0x10')][_0x4791('0x30')](_0x4c6d3a,_0x4791('0x196'));}var _0x1ce9d6={'body':_0x4c6d3a[_0x4791('0x197')],'phone':_0x4c6d3a['to']||'','SmsAccountId':_0x4da8b0['id']};logger[_0x4791('0xdd')](_0x4791('0x198'),JSON[_0x4791('0x78')](_0x1ce9d6));this['createSquareDetailsReport']['sync'](this,_0x4c6d3a,_0x4c6d3a[_0x4791('0x195')]);this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x199'),_0x4da8b0[_0x4791('0x15')]));this[_0x4791('0x3a')][_0x4791('0xbf')](this,_0x1ce9d6);return this[_0x4791('0x10')]['noop'](_0x4791('0x19a'));};AGIVertices['prototype']['set']=function(_0x3082a9){logger[_0x4791('0x33')](util['format'](_0x4791('0x19b'),_0x3082a9['label']));if(!this[_0x4791('0x8a')](_0x3082a9['variable_id'])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x3082a9,'no\x20variable\x20selected');}var _0x5e1e0e=this['getVariable'][_0x4791('0xbf')](this,_0x3082a9['variable_id']);if(!_0x5e1e0e){return this[_0x4791('0x10')]['error'](_0x3082a9,_0x4791('0xd6'));}return this[_0x4791('0x10')][_0x4791('0xd9')](_0x5e1e0e,_0x3082a9['variable_value']);};AGIVertices['prototype'][_0x4791('0x19c')]=function(_0xeef3a4){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x19d'),_0xeef3a4[_0x4791('0x3d')]));this['channel'][_0x4791('0xac')](_0x4791('0x19e'));if(_0xeef3a4[_0x4791('0xbb')]===_0x4791('0x19f')){this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x1a0'));return this['channel']['answer']();}return this[_0x4791('0x10')][_0x4791('0xac')]('Skipped\x20Answer');};AGIVertices['prototype']['subproject']=function(_0x2192ce){logger['info'](util['format'](_0x4791('0x1a1'),_0x2192ce[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x2192ce[_0x4791('0x1a2')])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x2192ce,_0x4791('0x1a3'));}var _0x4249aa=this[_0x4791('0x18')][_0x4791('0xbf')](this,_0x2192ce[_0x4791('0x1a2')]);if(!this[_0x4791('0x8a')](_0x4249aa)){return this[_0x4791('0x10')][_0x4791('0x30')](_0x2192ce,util['format'](_0x4791('0x1a4'),_0x2192ce[_0x4791('0x1a2')]));}if(_0x4249aa===this[_0x4791('0x10')][_0x4791('0x3f')]){return this[_0x4791('0x10')][_0x4791('0x30')](_0x2192ce,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x4791('0x3b')][_0x4791('0xbf')](this,_0x2192ce,_0x4249aa);var _0x49ed7d=this['channel']['exec'](_0x4791('0x1a5'),util['format'](_0x4791('0x1a6'),config['agi'][_0x4791('0x1a7')]||_0x4791('0x1a8'),_0x4249aa,this[_0x4791('0x10')][_0x4791('0x3f')]));if(_0x49ed7d['result']===-0x1){return _0x49ed7d;}return this[_0x4791('0x10')][_0x4791('0xac')](util['format'](_0x4791('0x164'),_0x4791('0x1a5'),_0x4249aa));};AGIVertices[_0x4791('0x12')][_0x4791('0x1a9')]=function(_0x518c5f){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x1aa'),_0x518c5f[_0x4791('0x3d')]));var _0x581089=this[_0x4791('0x5e')][_0x4791('0xbf')](this,_0x518c5f[_0x4791('0x1ab')]);this['createSquareDetailsReport']['sync'](this,_0x518c5f,_0x518c5f[_0x4791('0x1ab')]);if(this[_0x4791('0x8a')](_0x518c5f[_0x4791('0xd4')])){var _0x2635a3=this['getVariable'][_0x4791('0xbf')](this,_0x518c5f['variable_id']);if(_0x2635a3){this[_0x4791('0x10')]['setVariable'](_0x2635a3,_0x581089);return this[_0x4791('0x10')][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x1ac'),_0x518c5f[_0x4791('0x1ab')],_0x2635a3));}}return this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x518c5f['command']));};AGIVertices['prototype'][_0x4791('0x1ad')]=function(_0x39ca9e){logger['info'](util[_0x4791('0x2c')](_0x4791('0x1ae'),_0x39ca9e[_0x4791('0x3d')]));_0x39ca9e[_0x4791('0x63')]=_0x39ca9e[_0x4791('0x63')][_0x4791('0x60')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4791('0x8a')](_0x39ca9e[_0x4791('0x1af')])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0x1b0'));}if(!this[_0x4791('0x8a')](_0x39ca9e[_0x4791('0x63')])){return this[_0x4791('0x10')]['noop'](_0x4791('0xc5'));}this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x1b1'),_0x39ca9e[_0x4791('0x63')]));var _0x1cc4bd=this[_0x4791('0x61')][_0x4791('0xbf')](this,_0x39ca9e);if(_0x1cc4bd){this[_0x4791('0x10')]['noop'](util['format'](_0x4791('0x1b2'),_0x1cc4bd));var _0x303b0d=this['channel'][_0x4791('0x11b')](_0x1cc4bd);try{fs[_0x4791('0xfd')](_0x1cc4bd+_0x4791('0xfe'));}catch(_0x20cc81){logger[_0x4791('0x30')](_0x20cc81);}return _0x303b0d;}return this[_0x4791('0x10')][_0x4791('0x30')](_0x39ca9e,_0x4791('0x1b3'));};AGIVertices[_0x4791('0x12')][_0x4791('0x1b4')]=function(_0x3d396f){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x3d396f[_0x4791('0x3d')]));_0x3d396f['text']=_0x3d396f['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4791('0x8a')](_0x3d396f['text'])){return this[_0x4791('0x10')][_0x4791('0xac')](_0x4791('0xc5'));}this[_0x4791('0x10')][_0x4791('0xac')](util['format']('Trying\x20Google\x20TTS\x20%s',_0x3d396f[_0x4791('0x63')]));var _0x2d9251=this[_0x4791('0x1b5')][_0x4791('0xbf')](this,_0x3d396f);if(_0x2d9251){this['channel'][_0x4791('0xac')](util[_0x4791('0x2c')](_0x4791('0x1b6'),_0x2d9251));var _0x72b090=this['channel'][_0x4791('0x11b')](_0x2d9251);try{fs[_0x4791('0xfd')](_0x2d9251+_0x4791('0xfe'));}catch(_0x5c40e2){logger[_0x4791('0x30')](_0x5c40e2);}return _0x72b090;}return this[_0x4791('0x10')]['error'](_0x3d396f,_0x4791('0x1b7'));};AGIVertices[_0x4791('0x12')]['unpause']=function(_0x4c513d){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x4c513d[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x4c513d[_0x4791('0x14d')])){return this[_0x4791('0x10')][_0x4791('0x30')](_0x4c513d,'no\x20find\x20by\x20configured');}logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x155'),this[_0x4791('0x10')][_0x4791('0x41')],_0x4c513d[_0x4791('0x14d')]));var _0x5e3bbc=this[_0x4791('0x59')]['sync'](this,_0x4c513d[_0x4791('0x14d')]);if(_0x5e3bbc){logger[_0x4791('0x33')](util[_0x4791('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4791('0x10')]['callerid'],_0x4c513d['findBy']));this['channel']['noop'](util[_0x4791('0x2c')](_0x4791('0x14f'),this[_0x4791('0x10')][_0x4791('0x41')],_0x4c513d[_0x4791('0x14d')]));return{'code':0xc8,'result':_0x4791('0x150')};}else{logger['info'](util['format'](_0x4791('0x151'),this[_0x4791('0x10')]['callerid'],_0x4c513d['findBy']));this[_0x4791('0x10')][_0x4791('0xac')](util['format'](_0x4791('0x151'),this[_0x4791('0x10')][_0x4791('0x41')],_0x4c513d['findBy']));return{'code':0xc8,'result':_0x4791('0x152')};}};AGIVertices['prototype'][_0x4791('0x1b8')]=function(_0x610ef0){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x1b9'),_0x610ef0[_0x4791('0x3d')]));var _0xa53c50=this[_0x4791('0x10')][_0x4791('0x5f')](_0x4791('0x1ba'),[_0x610ef0[_0x4791('0x1bb')],_0x610ef0[_0x4791('0x7c')]]);if(_0xa53c50[_0x4791('0xa7')]===-0x1){return _0xa53c50;}return this[_0x4791('0x10')]['noop'](util[_0x4791('0x2c')](_0x4791('0x164'),_0x4791('0x1ba'),_0x610ef0[_0x4791('0x1bb')]));};AGIVertices['prototype'][_0x4791('0x1bc')]=function(_0x50440e){logger[_0x4791('0x33')](util[_0x4791('0x2c')](_0x4791('0x1bd'),_0x50440e[_0x4791('0x3d')]));if(!this[_0x4791('0x8a')](_0x50440e[_0x4791('0xd4')])){return this['channel'][_0x4791('0x30')](_0x50440e,_0x4791('0x1be'));}var _0x1681de=this[_0x4791('0x13')][_0x4791('0xbf')](this,_0x50440e[_0x4791('0xd4')]);if(!_0x1681de){return this['channel'][_0x4791('0x30')](_0x50440e,'no\x20variable\x20found');}var _0x24efc8=this['channel']['getVariable'](_0x1681de);return{'code':0xc8,'result':_0x24efc8[_0x4791('0xa5')]?_0x24efc8[_0x4791('0xa5')]:'-'};};String[_0x4791('0x12')][_0x4791('0xa4')]=function(_0x4b6336,_0x113968){return this[_0x4791('0xa3')](_0x4b6336)['join'](_0x113968);};module[_0x4791('0x1bf')]=AGIVertices;
\ No newline at end of file
index d06497c..d4dff8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb33=['destlinkedid','savePause','then','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','[%s][UPDATE][ERRORS:%s]','catch','error','finally','[ACW][START]\x20%s','message','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','seconds','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','resolve','info','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended'];(function(_0x3a904f,_0x25eb29){var _0x2ab1d5=function(_0x17ba21){while(--_0x17ba21){_0x3a904f['push'](_0x3a904f['shift']());}};_0x2ab1d5(++_0x25eb29);}(_0xfb33,0x8c));var _0x3fb3=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0xfb33[_0x5a95fa];return _0x1a61b8;};'use strict';var _=require(_0x3fb3('0x0'));var moment=require(_0x3fb3('0x1'));var ami=require(_0x3fb3('0x2'));var logger=require('../../../config/logger')(_0x3fb3('0x3'));var RpcUser=require(_0x3fb3('0x4'));var RpcVoiceAgentReport=require(_0x3fb3('0x5'));function Acw(_0x232b24){this[_0x3fb3('0x6')]=_0x232b24[_0x3fb3('0x6')];this[_0x3fb3('0x7')]=_0x232b24[_0x3fb3('0x7')];this[_0x3fb3('0x8')]=_0x232b24[_0x3fb3('0x8')];this[_0x3fb3('0x9')]={};ami['on'](_0x3fb3('0xa'),this[_0x3fb3('0xb')][_0x3fb3('0xc')](this));ami['on'](_0x3fb3('0xd'),this['syncHangupRequest'][_0x3fb3('0xc')](this));ami['on'](_0x3fb3('0xe'),this[_0x3fb3('0xf')][_0x3fb3('0xc')](this));ami['on'](_0x3fb3('0x10'),this[_0x3fb3('0x11')][_0x3fb3('0xc')](this));ami['on'](_0x3fb3('0x12'),this[_0x3fb3('0x13')]['bind'](this));ami['on']('blindtransfer',this[_0x3fb3('0x14')][_0x3fb3('0xc')](this));ami['on'](_0x3fb3('0x15'),this['syncAgentConnectPreview'][_0x3fb3('0xc')](this));}function getDiff(_0xb0a3be){var _0x504f20=moment()[_0x3fb3('0x16')](0x0);var _0x2e1080=moment(_0xb0a3be)[_0x3fb3('0x16')](0x0);return _0x504f20['diff'](_0x2e1080,_0x3fb3('0x17'));}Acw['prototype']['startAcw']=function(_0xd2f16d){try{var _0x49674b=this;var _0x15aacf=this[_0x3fb3('0x9')][_0xd2f16d][_0x3fb3('0x18')];var _0x1a80a6=this['channels'][_0xd2f16d]['queue'];var _0x149c05=this[_0x3fb3('0x6')][_0x1a80a6];var _0x2570a4=![];var _0x28ce31=_0x3fb3('0x19');if(_0x149c05[_0x3fb3('0x1a')]&&_0x149c05[_0x3fb3('0x1b')][_0x3fb3('0x1c')]){_0x2570a4=!![];_0x28ce31=_0x149c05['mandatoryDispositionPause']['name'];}return Promise[_0x3fb3('0x1d')]()['then'](function(){if(!_0x49674b[_0x3fb3('0x7')][_0x15aacf]){return;}return RpcUser['getAgent'](_0x49674b[_0x3fb3('0x7')][_0x15aacf]['id'])['then'](function(_0x2983f7){if(!_0x2983f7||_0x2983f7['voicePause']){logger[_0x3fb3('0x1e')](_0x3fb3('0x1f'),_0xd2f16d,_0x15aacf,_0x1a80a6);return;}logger[_0x3fb3('0x1e')](_0x3fb3('0x20'),_0xd2f16d,_0x15aacf,_0x1a80a6);var _0x1b2661=_0x49674b[_0x3fb3('0x9')][_0xd2f16d][_0x3fb3('0x21')]&&_0x49674b['channels'][_0xd2f16d]['destlinkedid']?_0x49674b[_0x3fb3('0x9')][_0xd2f16d][_0x3fb3('0x22')]:_0xd2f16d;return RpcUser[_0x3fb3('0x23')](_0x49674b[_0x3fb3('0x7')][_0x15aacf],_0x28ce31,_0x1b2661)[_0x3fb3('0x24')](function(){if(_0x2570a4){return;}_0x49674b[_0x3fb3('0x8')][_0x15aacf]={};logger[_0x3fb3('0x1e')](_0x3fb3('0x25'),_0xd2f16d,_0x49674b['voiceQueues'][_0x1a80a6][_0x3fb3('0x26')],_0x15aacf,_0x1a80a6);_0x49674b['timers'][_0x15aacf][_0x3fb3('0x27')]=setTimeout(_0x49674b[_0x3fb3('0x28')][_0x3fb3('0xc')](_0x49674b,_0x15aacf),_0x49674b[_0x3fb3('0x6')][_0x1a80a6][_0x3fb3('0x26')]*0x3e8);_0x49674b[_0x3fb3('0x8')][_0x15aacf][_0x3fb3('0x29')]=moment()[_0x3fb3('0x2a')](_0x3fb3('0x2b'));_0x49674b[_0x3fb3('0x8')][_0x15aacf][_0x3fb3('0x2c')]=_0xd2f16d;_0x49674b['timers'][_0x15aacf][_0x3fb3('0x2d')]=_0x1a80a6;_0x49674b[_0x3fb3('0x8')][_0x15aacf][_0x3fb3('0x2e')]=function(){var _0x21f050=getDiff(_0x49674b['timers'][_0x15aacf]['lastPauseAt']);clearTimeout(_0x49674b[_0x3fb3('0x8')][_0x15aacf][_0x3fb3('0x27')]);_0x49674b[_0x3fb3('0x8')][_0x15aacf][_0x3fb3('0x27')]=![];RpcVoiceAgentReport[_0x3fb3('0x2f')]({'acwtime':_0x21f050},_0x49674b[_0x3fb3('0x8')][_0x15aacf]['uniqueid'],_0x15aacf)[_0x3fb3('0x24')](function(_0x30dafa){logger[_0x3fb3('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0xd2f16d,_0x21f050,_0x30dafa);})['catch'](function(_0x4875b5){logger['error'](_0x3fb3('0x30'),_0xd2f16d,_0x4875b5);});delete _0x49674b['timers'][_0x15aacf];};});});})[_0x3fb3('0x31')](function(){logger[_0x3fb3('0x32')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xd2f16d,_0x49674b[_0x3fb3('0x6')][_0x1a80a6]['acwTimeout'],_0x15aacf,_0x1a80a6);})[_0x3fb3('0x33')](function(){delete _0x49674b['channels'][_0xd2f16d];});}catch(_0x1d0fd6){logger[_0x3fb3('0x32')](_0x3fb3('0x34'),_0x1d0fd6[_0x3fb3('0x35')]);}};Acw[_0x3fb3('0x36')][_0x3fb3('0x28')]=function(_0x3f1194){try{var _0x111f72=this;if(_0x111f72[_0x3fb3('0x8')][_0x3f1194]){_0x111f72['timers'][_0x3f1194][_0x3fb3('0x27')]=![];var _0x28d232=_0x111f72[_0x3fb3('0x8')][_0x3f1194][_0x3fb3('0x2c')];var _0x179ca6=_0x111f72['timers'][_0x3f1194][_0x3fb3('0x2d')];var _0x415021=_0x111f72[_0x3fb3('0x6')][_0x179ca6]['acwTimeout'];logger[_0x3fb3('0x1e')](_0x3fb3('0x37'),_0x28d232,_0x3f1194);RpcUser[_0x3fb3('0x38')](this[_0x3fb3('0x7')][_0x3f1194]);RpcVoiceAgentReport[_0x3fb3('0x2f')]({'acwtime':_0x415021,'agentacw':!![]},_0x28d232,_0x3f1194)[_0x3fb3('0x24')](function(_0x1bc278){logger[_0x3fb3('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x28d232,_0x415021,_0x1bc278);})[_0x3fb3('0x31')](function(_0x25e33d){logger[_0x3fb3('0x32')](_0x3fb3('0x30'),_0x28d232,_0x25e33d);});}else{logger[_0x3fb3('0x32')](_0x3fb3('0x39'),_0x3f1194);if(_0x111f72[_0x3fb3('0x8')]){logger[_0x3fb3('0x1e')](_0x3fb3('0x3a'),JSON[_0x3fb3('0x3b')](_0x111f72[_0x3fb3('0x8')]));}}}catch(_0x38befe){logger[_0x3fb3('0x32')](_0x3fb3('0x3c'),_0x38befe[_0x3fb3('0x35')]);}};Acw[_0x3fb3('0x36')][_0x3fb3('0xb')]=function(_0x551c8c){try{if(this[_0x3fb3('0x6')][_0x551c8c[_0x3fb3('0x2d')]]&&(this['voiceQueues'][_0x551c8c[_0x3fb3('0x2d')]][_0x3fb3('0x3')]||this[_0x3fb3('0x6')][_0x551c8c[_0x3fb3('0x2d')]][_0x3fb3('0x1a')])){if(this['agents'][_0x551c8c[_0x3fb3('0x18')]]){this[_0x3fb3('0x9')][_0x551c8c[_0x3fb3('0x2c')]]={'queue':_0x551c8c[_0x3fb3('0x2d')],'interface':_0x551c8c[_0x3fb3('0x18')],'destlinkedid':_0x551c8c[_0x3fb3('0x22')]};}}}catch(_0x4d0958){logger[_0x3fb3('0x32')]('[ACW][syncAgentConnect]\x20%s',_0x4d0958['message']);}};Acw[_0x3fb3('0x36')]['syncAgentConnectPreview']=function(_0x3db657){try{if(this[_0x3fb3('0x6')][_0x3db657[_0x3fb3('0x2d')]]&&(this['voiceQueues'][_0x3db657['queue']][_0x3fb3('0x3')]||this['voiceQueues'][_0x3db657[_0x3fb3('0x2d')]][_0x3fb3('0x1a')])){if(this[_0x3fb3('0x7')][_0x3db657[_0x3fb3('0x18')]]){this[_0x3fb3('0x9')][_0x3db657[_0x3fb3('0x2c')]]={'queue':_0x3db657[_0x3fb3('0x2d')],'interface':_0x3db657[_0x3fb3('0x18')]};}}}catch(_0x2a4ef1){logger[_0x3fb3('0x32')](_0x3fb3('0x3d'),_0x2a4ef1[_0x3fb3('0x35')]);}};Acw[_0x3fb3('0x36')][_0x3fb3('0x3e')]=function(_0x5fe9fd){try{if(this[_0x3fb3('0x9')][_0x5fe9fd['uniqueid']]&&_[_0x3fb3('0x3f')](this[_0x3fb3('0x9')][_0x5fe9fd['uniqueid']]['attended'])){logger[_0x3fb3('0x1e')](_0x3fb3('0x40'),_0x5fe9fd[_0x3fb3('0x2c')]);this[_0x3fb3('0x41')](_0x5fe9fd[_0x3fb3('0x2c')]);}else if(this[_0x3fb3('0x9')][_0x5fe9fd[_0x3fb3('0x42')]]&&_[_0x3fb3('0x3f')](this['channels'][_0x5fe9fd['linkedid']][_0x3fb3('0x21')])){logger['info'](_0x3fb3('0x43'),_0x5fe9fd[_0x3fb3('0x42')]);this[_0x3fb3('0x41')](_0x5fe9fd[_0x3fb3('0x42')]);}}catch(_0xd21722){logger['error'](_0x3fb3('0x44'),_0xd21722[_0x3fb3('0x35')]);}};Acw[_0x3fb3('0x36')]['syncHangup']=function(_0x4f71f1){try{if(this['channels'][_0x4f71f1[_0x3fb3('0x2c')]]&&this[_0x3fb3('0x9')][_0x4f71f1['uniqueid']][_0x3fb3('0x21')]){logger[_0x3fb3('0x1e')](_0x3fb3('0x45'),_0x4f71f1[_0x3fb3('0x2c')]);this[_0x3fb3('0x41')](_0x4f71f1[_0x3fb3('0x2c')]);}else if(this[_0x3fb3('0x9')][_0x4f71f1[_0x3fb3('0x42')]]&&this[_0x3fb3('0x9')][_0x4f71f1[_0x3fb3('0x42')]]['attended']){logger[_0x3fb3('0x1e')](_0x3fb3('0x46'),_0x4f71f1[_0x3fb3('0x42')]);this['startAcw'](_0x4f71f1[_0x3fb3('0x42')]);}}catch(_0x4af86c){logger[_0x3fb3('0x32')](_0x3fb3('0x47'),_0x4af86c['message']);}};Acw['prototype'][_0x3fb3('0x13')]=function(_0x2ac819){try{if(!_[_0x3fb3('0x48')](this[_0x3fb3('0x9')][_0x2ac819['transfereeuniqueid']])){this['startAcw'](_0x2ac819[_0x3fb3('0x49')]);if(this['channels'][_0x2ac819[_0x3fb3('0x4a')]]){this[_0x3fb3('0x9')][_0x2ac819[_0x3fb3('0x4a')]][_0x3fb3('0x21')]=!![];this[_0x3fb3('0x9')][_0x2ac819['transfertargetuniqueid']]=this['channels'][_0x2ac819[_0x3fb3('0x4a')]];delete this[_0x3fb3('0x9')][_0x2ac819[_0x3fb3('0x4a')]];}}else if(!_[_0x3fb3('0x48')](this['channels'][_0x2ac819[_0x3fb3('0x4b')]])){this[_0x3fb3('0x41')](_0x2ac819[_0x3fb3('0x4b')]);if(this[_0x3fb3('0x9')][_0x2ac819[_0x3fb3('0x4c')]]){this['channels'][_0x2ac819[_0x3fb3('0x4c')]][_0x3fb3('0x21')]=!![];this['channels'][_0x2ac819['transfereeuniqueid']]=this[_0x3fb3('0x9')][_0x2ac819[_0x3fb3('0x4c')]];delete this[_0x3fb3('0x9')][_0x2ac819['origtransfereruniqueid']];}}}catch(_0xa4142f){logger[_0x3fb3('0x32')](_0x3fb3('0x4d'),_0xa4142f[_0x3fb3('0x35')]);}};Acw[_0x3fb3('0x36')]['syncBlindTransfer']=function(_0x1e4357){try{if(this[_0x3fb3('0x9')][_0x1e4357[_0x3fb3('0x4e')]]){logger[_0x3fb3('0x1e')](_0x3fb3('0x4f'),JSON['stringify'](_0x1e4357[_0x3fb3('0x4e')]));this['startAcw'](_0x1e4357[_0x3fb3('0x4e')]);}else if(this[_0x3fb3('0x9')][_0x1e4357['transfererlinkedid']]){logger[_0x3fb3('0x1e')](_0x3fb3('0x50'),JSON[_0x3fb3('0x3b')](_0x1e4357[_0x3fb3('0x51')]));this[_0x3fb3('0x41')](_0x1e4357[_0x3fb3('0x51')]);}}catch(_0x5d32fa){logger[_0x3fb3('0x32')](_0x3fb3('0x52'),_0x5d32fa[_0x3fb3('0x35')]);}};Acw['prototype'][_0x3fb3('0x11')]=function(_0x2539de){try{if(this[_0x3fb3('0x6')][_0x2539de['queue']]&&this[_0x3fb3('0x6')][_0x2539de[_0x3fb3('0x2d')]][_0x3fb3('0x53')]==='all'){if(this[_0x3fb3('0x7')][_0x2539de[_0x3fb3('0x18')]]){logger[_0x3fb3('0x1e')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x2539de[_0x3fb3('0x2c')],_0x2539de[_0x3fb3('0x18')],_0x2539de['queue']);return RpcUser[_0x3fb3('0x23')](this[_0x3fb3('0x7')][_0x2539de['interface']],_0x3fb3('0x54'),_0x2539de[_0x3fb3('0x2c')]);}}}catch(_0x1369a3){logger[_0x3fb3('0x32')](_0x3fb3('0x55'),_0x1369a3[_0x3fb3('0x35')]);}};module[_0x3fb3('0x56')]=Acw;
\ No newline at end of file
+var _0xd421=['[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','exports','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','seconds','interface','queue','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','destlinkedid','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','lastPauseAt','format','updateAcw','update','uniqueid','catch','[%s][UPDATE][ERRORS:%s]','error','acwTimeout','finally','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','message','prototype','syncAgentConnect','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','startAcw'];(function(_0x2f861c,_0x14cf07){var _0x90e910=function(_0x53896c){while(--_0x53896c){_0x2f861c['push'](_0x2f861c['shift']());}};_0x90e910(++_0x14cf07);}(_0xd421,0x67));var _0x1d42=function(_0x12aa69,_0x35f60c){_0x12aa69=_0x12aa69-0x0;var _0x51b030=_0xd421[_0x12aa69];return _0x51b030;};'use strict';var _=require('lodash');var moment=require(_0x1d42('0x0'));var ami=require(_0x1d42('0x1'));var logger=require(_0x1d42('0x2'))(_0x1d42('0x3'));var RpcUser=require(_0x1d42('0x4'));var RpcVoiceAgentReport=require(_0x1d42('0x5'));function Acw(_0x41dee0){this[_0x1d42('0x6')]=_0x41dee0[_0x1d42('0x6')];this[_0x1d42('0x7')]=_0x41dee0[_0x1d42('0x7')];this['timers']=_0x41dee0[_0x1d42('0x8')];this[_0x1d42('0x9')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0x1d42('0xa')](this));ami['on'](_0x1d42('0xb'),this[_0x1d42('0xc')][_0x1d42('0xa')](this));ami['on'](_0x1d42('0xd'),this[_0x1d42('0xe')][_0x1d42('0xa')](this));ami['on'](_0x1d42('0xf'),this[_0x1d42('0x10')][_0x1d42('0xa')](this));ami['on']('attendedtransfer',this[_0x1d42('0x11')][_0x1d42('0xa')](this));ami['on'](_0x1d42('0x12'),this[_0x1d42('0x13')][_0x1d42('0xa')](this));ami['on']('custom:agentConnectPreview',this[_0x1d42('0x14')]['bind'](this));}function getDiff(_0x1da332){var _0x2bd0cd=moment()[_0x1d42('0x15')](0x0);var _0x460478=moment(_0x1da332)['milliseconds'](0x0);return _0x2bd0cd['diff'](_0x460478,_0x1d42('0x16'));}Acw['prototype']['startAcw']=function(_0x212b5e){try{var _0x29dd1c=this;var _0x4f9b0d=this[_0x1d42('0x9')][_0x212b5e][_0x1d42('0x17')];var _0x120562=this['channels'][_0x212b5e][_0x1d42('0x18')];var _0x520b3a=this[_0x1d42('0x6')][_0x120562];var _0x11714a=![];var _0x4db0a6='ACW';if(_0x520b3a['mandatoryDisposition']){if(_0x520b3a[_0x1d42('0x19')]['name']){_0x11714a=!![];_0x4db0a6=_0x520b3a['mandatoryDispositionPause'][_0x1d42('0x1a')];}}return ami[_0x1d42('0x1b')]({'action':_0x1d42('0x1c'),'interface':_0x4f9b0d,'paused':!![],'reason':_0x4db0a6})[_0x1d42('0x1d')](function(){if(_0x29dd1c['agents'][_0x4f9b0d]){return RpcUser[_0x1d42('0x1e')](_0x29dd1c[_0x1d42('0x7')][_0x4f9b0d]['id'])[_0x1d42('0x1d')](function(_0x5db173){if(_0x5db173&&!_0x5db173['voicePause']){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x212b5e,_0x4f9b0d,_0x120562);var _0x192b46=_0x29dd1c[_0x1d42('0x9')][_0x212b5e]['attended']&&_0x29dd1c[_0x1d42('0x9')][_0x212b5e][_0x1d42('0x1f')]?_0x29dd1c[_0x1d42('0x9')][_0x212b5e]['destlinkedid']:_0x212b5e;return RpcUser['savePause'](_0x29dd1c[_0x1d42('0x7')][_0x4f9b0d],_0x4db0a6,_0x192b46)['then'](function(){if(!_0x11714a){_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d]={};logger[_0x1d42('0x20')](_0x1d42('0x21'),_0x212b5e,_0x29dd1c[_0x1d42('0x6')][_0x120562]['acwTimeout'],_0x4f9b0d,_0x120562);_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d][_0x1d42('0x22')]=setTimeout(_0x29dd1c[_0x1d42('0x23')][_0x1d42('0xa')](_0x29dd1c,_0x4f9b0d),_0x29dd1c[_0x1d42('0x6')][_0x120562]['acwTimeout']*0x3e8);_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d][_0x1d42('0x24')]=moment()[_0x1d42('0x25')]('YYYY-MM-DD\x20HH:mm:ss');_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d]['uniqueid']=_0x212b5e;_0x29dd1c['timers'][_0x4f9b0d][_0x1d42('0x18')]=_0x120562;_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d][_0x1d42('0x26')]=function(){var _0x207c38=getDiff(_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d][_0x1d42('0x24')]);clearTimeout(_0x29dd1c['timers'][_0x4f9b0d][_0x1d42('0x22')]);_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d][_0x1d42('0x22')]=![];RpcVoiceAgentReport[_0x1d42('0x27')]({'acwtime':_0x207c38},_0x29dd1c[_0x1d42('0x8')][_0x4f9b0d][_0x1d42('0x28')],_0x4f9b0d)[_0x1d42('0x1d')](function(_0x1bae3d){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x212b5e,_0x207c38,_0x1bae3d);})[_0x1d42('0x29')](function(_0x5189d5){logger['error'](_0x1d42('0x2a'),_0x212b5e,_0x5189d5);});delete _0x29dd1c[_0x1d42('0x8')][_0x4f9b0d];};}});}else{logger[_0x1d42('0x20')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x212b5e,_0x4f9b0d,_0x120562);}});}})[_0x1d42('0x29')](function(){logger[_0x1d42('0x2b')](_0x1d42('0x21'),_0x212b5e,_0x29dd1c[_0x1d42('0x6')][_0x120562][_0x1d42('0x2c')],_0x4f9b0d,_0x120562);})[_0x1d42('0x2d')](function(){delete _0x29dd1c[_0x1d42('0x9')][_0x212b5e];});}catch(_0x3b31b1){logger[_0x1d42('0x2b')](_0x1d42('0x2e'),_0x3b31b1['message']);}};Acw['prototype'][_0x1d42('0x23')]=function(_0x4772e1){try{var _0x59af91=this;if(_0x59af91[_0x1d42('0x8')][_0x4772e1]){_0x59af91[_0x1d42('0x8')][_0x4772e1][_0x1d42('0x22')]=![];var _0x2fa526=_0x59af91['timers'][_0x4772e1][_0x1d42('0x28')];var _0x291216=_0x59af91['timers'][_0x4772e1][_0x1d42('0x18')];var _0x1290ee=_0x59af91[_0x1d42('0x6')][_0x291216]['acwTimeout'];logger[_0x1d42('0x20')](_0x1d42('0x2f'),_0x2fa526,_0x4772e1);RpcUser[_0x1d42('0x30')](this['agents'][_0x4772e1]);RpcVoiceAgentReport[_0x1d42('0x27')]({'acwtime':_0x1290ee,'agentacw':!![]},_0x2fa526,_0x4772e1)[_0x1d42('0x1d')](function(_0x4b841c){logger[_0x1d42('0x20')](_0x1d42('0x31'),_0x2fa526,_0x1290ee,_0x4b841c);})[_0x1d42('0x29')](function(_0x1d6953){logger[_0x1d42('0x2b')](_0x1d42('0x2a'),_0x2fa526,_0x1d6953);});}else{logger[_0x1d42('0x2b')](_0x1d42('0x32'),_0x4772e1);if(_0x59af91[_0x1d42('0x8')]){logger['info'](_0x1d42('0x33'),JSON[_0x1d42('0x34')](_0x59af91[_0x1d42('0x8')]));}}}catch(_0x21ba5f){logger[_0x1d42('0x2b')]('[ACW][STOP]\x20%s',_0x21ba5f[_0x1d42('0x35')]);}};Acw[_0x1d42('0x36')][_0x1d42('0x37')]=function(_0xc2e9ca){try{if(this[_0x1d42('0x6')][_0xc2e9ca[_0x1d42('0x18')]]&&(this[_0x1d42('0x6')][_0xc2e9ca[_0x1d42('0x18')]][_0x1d42('0x3')]||this[_0x1d42('0x6')][_0xc2e9ca[_0x1d42('0x18')]][_0x1d42('0x38')])){if(this['agents'][_0xc2e9ca['interface']]){this[_0x1d42('0x9')][_0xc2e9ca['uniqueid']]={'queue':_0xc2e9ca[_0x1d42('0x18')],'interface':_0xc2e9ca[_0x1d42('0x17')],'destlinkedid':_0xc2e9ca[_0x1d42('0x1f')]};}}}catch(_0x4636fb){logger[_0x1d42('0x2b')](_0x1d42('0x39'),_0x4636fb[_0x1d42('0x35')]);}};Acw[_0x1d42('0x36')][_0x1d42('0x14')]=function(_0x1a1e40){try{if(this[_0x1d42('0x6')][_0x1a1e40[_0x1d42('0x18')]]&&(this['voiceQueues'][_0x1a1e40[_0x1d42('0x18')]]['acw']||this[_0x1d42('0x6')][_0x1a1e40[_0x1d42('0x18')]][_0x1d42('0x38')])){if(this['agents'][_0x1a1e40[_0x1d42('0x17')]]){this[_0x1d42('0x9')][_0x1a1e40['uniqueid']]={'queue':_0x1a1e40[_0x1d42('0x18')],'interface':_0x1a1e40[_0x1d42('0x17')]};}}}catch(_0x479311){logger[_0x1d42('0x2b')](_0x1d42('0x3a'),_0x479311[_0x1d42('0x35')]);}};Acw[_0x1d42('0x36')][_0x1d42('0xc')]=function(_0x15c796){try{if(this[_0x1d42('0x9')][_0x15c796[_0x1d42('0x28')]]&&_[_0x1d42('0x3b')](this[_0x1d42('0x9')][_0x15c796[_0x1d42('0x28')]][_0x1d42('0x3c')])){logger[_0x1d42('0x20')](_0x1d42('0x3d'),_0x15c796[_0x1d42('0x28')]);this['startAcw'](_0x15c796[_0x1d42('0x28')]);}else if(this[_0x1d42('0x9')][_0x15c796[_0x1d42('0x3e')]]&&_[_0x1d42('0x3b')](this[_0x1d42('0x9')][_0x15c796[_0x1d42('0x3e')]][_0x1d42('0x3c')])){logger[_0x1d42('0x20')](_0x1d42('0x3f'),_0x15c796[_0x1d42('0x3e')]);this[_0x1d42('0x40')](_0x15c796['linkedid']);}}catch(_0x28095f){logger[_0x1d42('0x2b')](_0x1d42('0x41'),_0x28095f[_0x1d42('0x35')]);}};Acw['prototype'][_0x1d42('0xe')]=function(_0x3215e8){try{if(this['channels'][_0x3215e8[_0x1d42('0x28')]]&&this['channels'][_0x3215e8['uniqueid']][_0x1d42('0x3c')]){logger[_0x1d42('0x20')](_0x1d42('0x42'),_0x3215e8[_0x1d42('0x28')]);this[_0x1d42('0x40')](_0x3215e8[_0x1d42('0x28')]);}else if(this[_0x1d42('0x9')][_0x3215e8['linkedid']]&&this[_0x1d42('0x9')][_0x3215e8[_0x1d42('0x3e')]][_0x1d42('0x3c')]){logger[_0x1d42('0x20')](_0x1d42('0x43'),_0x3215e8['linkedid']);this['startAcw'](_0x3215e8['linkedid']);}}catch(_0x790df8){logger[_0x1d42('0x2b')](_0x1d42('0x44'),_0x790df8[_0x1d42('0x35')]);}};Acw[_0x1d42('0x36')]['syncAttendedTransfer']=function(_0xfccf53){try{if(!_[_0x1d42('0x45')](this[_0x1d42('0x9')][_0xfccf53[_0x1d42('0x46')]])){this['startAcw'](_0xfccf53['transfereeuniqueid']);if(this[_0x1d42('0x9')][_0xfccf53[_0x1d42('0x47')]]){this[_0x1d42('0x9')][_0xfccf53[_0x1d42('0x47')]][_0x1d42('0x3c')]=!![];this[_0x1d42('0x9')][_0xfccf53[_0x1d42('0x48')]]=this['channels'][_0xfccf53[_0x1d42('0x47')]];delete this['channels'][_0xfccf53[_0x1d42('0x47')]];}}else if(!_['isNil'](this[_0x1d42('0x9')][_0xfccf53['transfertargetuniqueid']])){this[_0x1d42('0x40')](_0xfccf53['transfertargetuniqueid']);if(this[_0x1d42('0x9')][_0xfccf53[_0x1d42('0x49')]]){this['channels'][_0xfccf53[_0x1d42('0x49')]][_0x1d42('0x3c')]=!![];this[_0x1d42('0x9')][_0xfccf53['transfereeuniqueid']]=this[_0x1d42('0x9')][_0xfccf53[_0x1d42('0x49')]];delete this['channels'][_0xfccf53[_0x1d42('0x49')]];}}}catch(_0xcd2e91){logger[_0x1d42('0x2b')](_0x1d42('0x4a'),_0xcd2e91[_0x1d42('0x35')]);}};Acw['prototype'][_0x1d42('0x13')]=function(_0x45816e){try{if(this[_0x1d42('0x9')][_0x45816e[_0x1d42('0x4b')]]){logger[_0x1d42('0x20')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x1d42('0x34')](_0x45816e[_0x1d42('0x4b')]));this[_0x1d42('0x40')](_0x45816e['transfereruniqueid']);}else if(this[_0x1d42('0x9')][_0x45816e['transfererlinkedid']]){logger[_0x1d42('0x20')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x45816e[_0x1d42('0x4c')]));this[_0x1d42('0x40')](_0x45816e[_0x1d42('0x4c')]);}}catch(_0x3ce100){logger[_0x1d42('0x2b')](_0x1d42('0x4d'),_0x3ce100[_0x1d42('0x35')]);}};Acw[_0x1d42('0x36')][_0x1d42('0x10')]=function(_0x3ac9cb){try{if(this[_0x1d42('0x6')][_0x3ac9cb[_0x1d42('0x18')]]&&this[_0x1d42('0x6')][_0x3ac9cb[_0x1d42('0x18')]][_0x1d42('0x4e')]===_0x1d42('0x4f')){if(this[_0x1d42('0x7')][_0x3ac9cb[_0x1d42('0x17')]]){logger['info'](_0x1d42('0x50'),_0x3ac9cb[_0x1d42('0x28')],_0x3ac9cb[_0x1d42('0x17')],_0x3ac9cb[_0x1d42('0x18')]);return RpcUser[_0x1d42('0x51')](this[_0x1d42('0x7')][_0x3ac9cb[_0x1d42('0x17')]],_0x1d42('0x52'),_0x3ac9cb[_0x1d42('0x28')]);}}}catch(_0x54c68b){logger[_0x1d42('0x2b')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x54c68b[_0x1d42('0x35')]);}};module[_0x1d42('0x53')]=Acw;
\ No newline at end of file
index a171c83..e692c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef4=['username','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','Action','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','connect','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','catch','close','exports','asterisk-manager','bluebird','../../config/logger','../../config/environment','asterisk','port'];(function(_0x16eaf1,_0x1243aa){var _0x367af5=function(_0x4842d8){while(--_0x4842d8){_0x16eaf1['push'](_0x16eaf1['shift']());}};_0x367af5(++_0x1243aa);}(_0xeef4,0x8a));var _0x4eef=function(_0x296923,_0x4adaed){_0x296923=_0x296923-0x0;var _0x29af70=_0xeef4[_0x296923];return _0x29af70;};'use strict';var Manager=require(_0x4eef('0x0'));var BPromise=require(_0x4eef('0x1'));var util=require('util');var logger=require(_0x4eef('0x2'))('ami');var config=require(_0x4eef('0x3'));var ami=new Manager(config[_0x4eef('0x4')][_0x4eef('0x5')],config[_0x4eef('0x4')]['ip'],config['asterisk'][_0x4eef('0x6')],config[_0x4eef('0x4')][_0x4eef('0x7')],!![]);ami[_0x4eef('0x8')]();ami['Action']=BPromise[_0x4eef('0x9')](ami[_0x4eef('0xa')]);function error(_0x4c2a85){logger[_0x4eef('0xb')](util[_0x4eef('0xc')](_0x4eef('0xd'),config['asterisk'][_0x4eef('0x6')],config[_0x4eef('0x4')]['ip'],config[_0x4eef('0x4')][_0x4eef('0x5')],util[_0x4eef('0xe')](_0x4c2a85,![],null)));}function close(){logger[_0x4eef('0xb')](util['format'](_0x4eef('0xf'),config[_0x4eef('0x4')][_0x4eef('0x6')],config[_0x4eef('0x4')]['ip'],config['asterisk'][_0x4eef('0x5')]));}ami[_0x4eef('0x10')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0x4eef('0x11')]=function(){return function(){return ami['Action']({'action':_0x4eef('0x12')});};};ami[_0x4eef('0x13')]=function(){return function(){return ami[_0x4eef('0x14')]({'action':'sippeerstatus'});};};ami[_0x4eef('0x15')]=function(){return function(){return ami[_0x4eef('0x14')]({'action':_0x4eef('0x16')});};};ami[_0x4eef('0x17')]=function(){return function(){return ami[_0x4eef('0x14')]({'action':_0x4eef('0x18')});};};function connect(){logger[_0x4eef('0x19')](util['format'](_0x4eef('0x1a'),config[_0x4eef('0x4')][_0x4eef('0x6')],config[_0x4eef('0x4')]['ip'],config[_0x4eef('0x4')][_0x4eef('0x5')]));ami[_0x4eef('0x1b')](_0x4eef('0xb'),error);ami['once']('close',close);}ami['on'](_0x4eef('0x1c'),connect);ami['on']('shutdown',function(_0x252dce){logger[_0x4eef('0x19')](util[_0x4eef('0xc')](_0x4eef('0x1d'),config[_0x4eef('0x4')][_0x4eef('0x6')],config[_0x4eef('0x4')]['ip'],config[_0x4eef('0x4')]['port'],util[_0x4eef('0xe')](_0x252dce,![],null)));});ami['on'](_0x4eef('0x1e'),function(){logger[_0x4eef('0x19')](util[_0x4eef('0xc')](_0x4eef('0x1f'),config['asterisk'][_0x4eef('0x6')],config['asterisk']['ip'],config[_0x4eef('0x4')][_0x4eef('0x5')]));return Promise['resolve']()[_0x4eef('0x20')](ami[_0x4eef('0x10')]())[_0x4eef('0x20')](ami[_0x4eef('0x11')]())['then'](ami['actionSipPeerStatus']())[_0x4eef('0x20')](ami['actionQueueSummary']())[_0x4eef('0x20')](ami[_0x4eef('0x17')]())[_0x4eef('0x21')](function(_0x3c4d20){logger[_0x4eef('0xb')]('[ami.js][fullybooted]',util['inspect'](_0x3c4d20,{'showHidden':![],'depth':null}));});});ami[_0x4eef('0x1b')](_0x4eef('0xb'),error);ami[_0x4eef('0x1b')](_0x4eef('0x22'),close);module[_0x4eef('0x23')]=ami;
\ No newline at end of file
+var _0xd7a3=['promisify','action','error','format','username','port','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','actionQueueSummary','actionCoreShowChannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','fullybooted','info','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','actionSipShowRegistry','then','actionSipPeerStatus','catch','[ami.js][fullybooted]','asterisk-manager','util','../../config/logger','../../config/environment','asterisk','keepConnected','Action'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd7a3,0x122));var _0x3d7a=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xd7a3[_0x1d1779];return _0x2377e9;};'use strict';var Manager=require(_0x3d7a('0x0'));var BPromise=require('bluebird');var util=require(_0x3d7a('0x1'));var logger=require(_0x3d7a('0x2'))('ami');var config=require(_0x3d7a('0x3'));var ami=new Manager(config['asterisk']['port'],config[_0x3d7a('0x4')]['ip'],config['asterisk']['username'],config[_0x3d7a('0x4')]['password'],!![]);ami[_0x3d7a('0x5')]();ami[_0x3d7a('0x6')]=BPromise[_0x3d7a('0x7')](ami[_0x3d7a('0x8')]);function error(_0x3d7dfd){logger[_0x3d7a('0x9')](util[_0x3d7a('0xa')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk'][_0x3d7a('0xb')],config[_0x3d7a('0x4')]['ip'],config[_0x3d7a('0x4')][_0x3d7a('0xc')],util[_0x3d7a('0xd')](_0x3d7dfd,![],null)));}function close(){logger[_0x3d7a('0x9')](util[_0x3d7a('0xa')](_0x3d7a('0xe'),config[_0x3d7a('0x4')]['username'],config['asterisk']['ip'],config[_0x3d7a('0x4')][_0x3d7a('0xc')]));}ami['actionSipShowRegistry']=function(){return function(){return ami['Action']({'action':_0x3d7a('0xf')});};};ami[_0x3d7a('0x10')]=function(){return function(){return ami[_0x3d7a('0x6')]({'action':'devicestatelist'});};};ami['actionSipPeerStatus']=function(){return function(){return ami['Action']({'action':'sippeerstatus'});};};ami[_0x3d7a('0x11')]=function(){return function(){return ami[_0x3d7a('0x6')]({'action':'queuesummary'});};};ami[_0x3d7a('0x12')]=function(){return function(){return ami[_0x3d7a('0x6')]({'action':'coreshowchannels'});};};function connect(){logger['info'](util[_0x3d7a('0xa')](_0x3d7a('0x13'),config[_0x3d7a('0x4')][_0x3d7a('0xb')],config[_0x3d7a('0x4')]['ip'],config[_0x3d7a('0x4')][_0x3d7a('0xc')]));ami[_0x3d7a('0x14')](_0x3d7a('0x9'),error);ami[_0x3d7a('0x14')](_0x3d7a('0x15'),close);}ami['on'](_0x3d7a('0x16'),connect);ami['on'](_0x3d7a('0x17'),function(_0x1c0c3d){logger['info'](util[_0x3d7a('0xa')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk']['username'],config[_0x3d7a('0x4')]['ip'],config['asterisk'][_0x3d7a('0xc')],util[_0x3d7a('0xd')](_0x1c0c3d,![],null)));});ami['on'](_0x3d7a('0x18'),function(){logger[_0x3d7a('0x19')](util[_0x3d7a('0xa')](_0x3d7a('0x1a'),config[_0x3d7a('0x4')][_0x3d7a('0xb')],config['asterisk']['ip'],config[_0x3d7a('0x4')][_0x3d7a('0xc')]));return Promise[_0x3d7a('0x1b')]()['then'](ami[_0x3d7a('0x1c')]())[_0x3d7a('0x1d')](ami['actionDeviceStateList']())[_0x3d7a('0x1d')](ami[_0x3d7a('0x1e')]())[_0x3d7a('0x1d')](ami[_0x3d7a('0x11')]())[_0x3d7a('0x1d')](ami[_0x3d7a('0x12')]())[_0x3d7a('0x1f')](function(_0x2461a6){logger[_0x3d7a('0x9')](_0x3d7a('0x20'),util[_0x3d7a('0xd')](_0x2461a6,{'showHidden':![],'depth':null}));});});ami[_0x3d7a('0x14')](_0x3d7a('0x9'),error);ami[_0x3d7a('0x14')](_0x3d7a('0x15'),close);module['exports']=ami;
\ No newline at end of file
index 7fbd5a0..eeb43d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['bluebird','../../config/logger','ami','http','Request','rpc','memberReport','error','message','result','catch','jayson/promise'];(function(_0x45d7d3,_0x1b3ffa){var _0x1fee81=function(_0x9df275){while(--_0x9df275){_0x45d7d3['push'](_0x45d7d3['shift']());}};_0x1fee81(++_0x1b3ffa);}(_0xaa88,0x137));var _0x8aa8=function(_0x272d90,_0x5e70ff){_0x272d90=_0x272d90-0x0;var _0x2bf4a2=_0xaa88[_0x272d90];return _0x2bf4a2;};'use strict';var jayson=require(_0x8aa8('0x0'));var BPromise=require(_0x8aa8('0x1'));var logger=require(_0x8aa8('0x2'))(_0x8aa8('0x3'));var client=jayson['client'][_0x8aa8('0x4')]({'port':0x2329});client[_0x8aa8('0x5')]=function(_0x43f7e4,_0x3b2c88){return new BPromise(function(_0x3e3b70,_0x350e8b){return client['request'](_0x43f7e4,_0x3b2c88)['then'](function(_0x460042){logger['debug'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x3b2c88,_0x460042);if(_0x460042[_0x8aa8('0x8')]){logger[_0x8aa8('0x8')]('rpc',_0x8aa8('0x7'),_0x43f7e4,_0x460042[_0x8aa8('0x8')][_0x8aa8('0x9')],_0x3b2c88);return _0x350e8b(_0x460042['error'][_0x8aa8('0x9')]);}else{return _0x3e3b70(_0x460042[_0x8aa8('0xa')]);}})[_0x8aa8('0xb')](function(_0x33cc5c){logger['error'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x33cc5c,_0x3b2c88);return _0x350e8b(_0x33cc5c);});});};module['exports']=client;
\ No newline at end of file
+var _0xcb91=['request','debug','memberReport','error','rpc','message','result','catch','exports','../../config/logger','ami','client','http'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35485a,_0x91cdd4){_0x35485a=_0x35485a-0x0;var _0x5148e6=_0xcb91[_0x35485a];return _0x5148e6;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var client=jayson[_0x1cb9('0x2')][_0x1cb9('0x3')]({'port':0x2329});client['Request']=function(_0x8c392f,_0x2c17b8){return new BPromise(function(_0x545a34,_0x13d5fd){return client[_0x1cb9('0x4')](_0x8c392f,_0x2c17b8)['then'](function(_0x226b69){logger[_0x1cb9('0x5')]('rpc',_0x1cb9('0x6'),_0x8c392f,_0x2c17b8,_0x226b69);if(_0x226b69[_0x1cb9('0x7')]){logger['error'](_0x1cb9('0x8'),'memberReport',_0x8c392f,_0x226b69['error'][_0x1cb9('0x9')],_0x2c17b8);return _0x13d5fd(_0x226b69[_0x1cb9('0x7')][_0x1cb9('0x9')]);}else{return _0x545a34(_0x226b69[_0x1cb9('0xa')]);}})[_0x1cb9('0xb')](function(_0x50ce71){logger[_0x1cb9('0x7')](_0x1cb9('0x8'),_0x1cb9('0x6'),_0x8c392f,_0x50ce71,_0x2c17b8);return _0x13d5fd(_0x50ce71);});});};module[_0x1cb9('0xc')]=client;
\ No newline at end of file
index 12dd5ea..a8436eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb024=['uniqueid','ivr','YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','syncQueueCallerAbandon','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','countglobal','verifyAdditionalPhones','additional','countdropretry','rescheduleContact','add','dialDropRetryFrequency','minutes','ContactId','ListId','VoiceQueueId','CampaignId','[rescheduleContact][Drop]','calleridname','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','predictiveIntervalDroppedCallsCallersExit','Abandoned','CALLEREXIT','callAdditionalPhoneAfterMin','voiceQueue','countabandonedretry','dialAbandonedMaxRetry','calleridnum','[syncAgentComplete][createHistory][11]','channel','actionid','strategy','roundrobin','isNil','locked','paused','stateinterface','rrmemory','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','updateOriginated','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','getQueue','Success','callProgressDetecting','[callProgressDetecting]\x20','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','saveInDb','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','countmachineretry','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','Machine','stateGlobal','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','[syncHangupIvr]','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','available','inUse','pTalking','ACTIVE','[syncQueueSummary]','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','throttle','filter','dialPreviewRecallmeReminder','map','Agent','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','[uniqueid]','clearZombieChannels','[actions]','undefined','No\x20such\x20channel','[Dialer][checkChannel][ivr]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','UserId','[emptyContact][createHistory]','[emptyContact]','handlePreviewRecallNotifications','handleIvr','actionOriginate','object','originate','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','isOutboundQueue','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-CAMPAIGNID','Contact','tags','updatedAt','%s%s','toUpper','getCallerId','callerid','dialOriginateCallerIdName','getCallerIdRandom','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNUM','variables','dialPrefix','trim','dialCutDigit','substring','from-sip','dialOriginateTimeout','[originateError]:\x20%s','OriginateError','[originate][error]','finally','originate\x20action\x20Error','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','outboundNoSuchCallsDay','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','buildNoAnswerEventPayload','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','congestion','reason\x208\x20congestion','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','talking','floor','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','dialPredictiveInterval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','predictiveIntervalHitRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','predictiveIntervalPauses','abandonmentRate','[CatchErlangB]','one\x20call\x20every:','milliseconds','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','voicePause','outboundReCallsDay','dialRecallInQueue','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','temp','getContactDialerIvr','dialOrderByScheduledAt','checkContactEmpty','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','countReScheduled','[countReScheduled]\x20','[getContactDialer2]','tryOriginatePredictive','checkContactLowerLimitOriginate','checkIsBlackList','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','interval\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','./utils','./utils/hopper','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/voiceQueueRt','../rpc/setting','../rpc/interval','./models/history','./models/final','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','prototype','enqueue','tail','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','uniqueId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','queuesSummary','agentconnect','syncAgentConnect','queuecallerabandon','bind','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','getSettings','isUndefined','emit','type','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','name','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','---------------------------','merge','getSeconds','startProgressive','startProgressive\x20value\x20cleared','startPredictive\x20value\x20cleared','handlePredictive','error','contactsRescheduled','message','[getContactDialer2][ReScheduled]','contacts','CAMPAIGN_STATUS','[getContactDialer2][Empty]','state','statedesc','endtime','starttime','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','stringify','pick','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Interval','Intervals','isEmpty','INACTIVE','campaign:ivr:%s','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','DISACTIVED','Error','isTrunkReachable','status','reachable','SIP/%s','unmonitored','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTimeIvr','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','ifTime','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','length','push','Action','command','iftime\x20%s,%s','interval','content','true','catch','then','all','some','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','resetActiveCalls','syncCampaigns','isIVRCampaign','isIVRCampaignActive','resolve','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','launchHandleIvr','checkDialMethod','dialMethod','power','handlePower','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','Voice\x20Queue\x20%s\x20$s','OVERTIME_GLOBAL_INTERVAL','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','[ifTime][Action]','queue'];(function(_0x4f3b22,_0x3a1b82){var _0x566419=function(_0x1758bf){while(--_0x1758bf){_0x4f3b22['push'](_0x4f3b22['shift']());}};_0x566419(++_0x3a1b82);}(_0xb024,0x158));var _0x4b02=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb024[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x4b02('0x0'));var _=require(_0x4b02('0x1'));var uuid=require(_0x4b02('0x2'));var moment=require(_0x4b02('0x3'));var rr=require('rr');var Redis=require('ioredis');var utils=require(_0x4b02('0x4'));var hopperUtils=require(_0x4b02('0x5'));var ut=require(_0x4b02('0x6'));var config=require(_0x4b02('0x7'));var logger=require(_0x4b02('0x8'))(_0x4b02('0x9'));var loggerBooked=require(_0x4b02('0x8'))(_0x4b02('0xa'));var loggerPredictive=require(_0x4b02('0x8'))('predictive');var loggerPredictiveCalls=require(_0x4b02('0x8'))(_0x4b02('0xb'));var loggerSyncQueueSummary=require(_0x4b02('0x8'))(_0x4b02('0xc'));var ami=require(_0x4b02('0xd'));config[_0x4b02('0xe')]=_['defaults'](config['redis'],{'host':_0x4b02('0xf'),'port':0x18eb});var io=require(_0x4b02('0x10'))(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var voiceQueueRt=require(_0x4b02('0x11'));var RpcSetting=require(_0x4b02('0x12'));var Interval=require(_0x4b02('0x13'));var Action=require('./models/action');var History=require(_0x4b02('0x14'));var Final=require(_0x4b02('0x15'));var AgentComplete=require('./models/agentComplete');var QueueCallerAbandon=require(_0x4b02('0x16'));var Hangup=require(_0x4b02('0x17'));var ipAgi=process[_0x4b02('0x18')][_0x4b02('0x19')]||'127.0.0.1';var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x4b02('0x1a')][_0x4b02('0x1b')]=function(_0x126c9e){this[_0x4b02('0x1c')]=this['tail']?this['tail']['finally'](_0x126c9e):_0x126c9e();};function Dialer(_0x18def6,_0x40753a){this[_0x4b02('0x1d')]=new Sequence();this[_0x4b02('0x1e')]=_0x40753a;this[_0x4b02('0x1f')]=_0x18def6[_0x4b02('0x1f')];this[_0x4b02('0x20')]=_0x18def6[_0x4b02('0x20')];this['agents']=_0x18def6[_0x4b02('0x21')];this[_0x4b02('0x22')]=_0x18def6['trunks'];this[_0x4b02('0x23')]=config[_0x4b02('0x23')]||0x2;this['channels']={};this[_0x4b02('0x24')]={};this[_0x4b02('0x25')]={};this[_0x4b02('0x26')]={};this[_0x4b02('0x27')]={};this[_0x4b02('0x28')]={};this['startProgressive']={};this[_0x4b02('0x29')]={};this[_0x4b02('0x2a')]={};this[_0x4b02('0x2b')]={};this[_0x4b02('0x2c')]={};ami['on'](_0x4b02('0x2d'),this[_0x4b02('0x2e')]['bind'](this));ami['on'](_0x4b02('0x2f'),this['syncQueueCallerAbandon'][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x31'),this[_0x4b02('0x32')]['bind'](this));ami['on'](_0x4b02('0x33'),this[_0x4b02('0x34')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x35'),this[_0x4b02('0xc')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x36'),this[_0x4b02('0x37')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x38'),this[_0x4b02('0x39')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x3a'),this[_0x4b02('0x3b')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x3c'),this[_0x4b02('0x3d')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x3e'),this[_0x4b02('0x3f')][_0x4b02('0x30')](this));ami['on'](_0x4b02('0x40'),this['syncQueueStatusComplete'][_0x4b02('0x30')](this));this[_0x4b02('0x41')]();this[_0x4b02('0x42')]();RpcSetting[_0x4b02('0x43')]()['then'](function(_0x13000b){previewRecallmeReminderInterval=_0x13000b['previewRecallmeReminderInterval'];});}function isNotNull(_0x45002f){return _0x45002f!==null&&!_[_0x4b02('0x44')](_0x45002f);}function msgResponse(_0x15cfb9,_0x3df723,_0x61c6d0){return{'action':_0x15cfb9,'response':_0x3df723,'message':_0x61c6d0,'stack':_0x61c6d0};}function emit(_0x26c9e6,_0xc19463,_0x9b6d48){io['to'](_0x26c9e6)[_0x4b02('0x45')](_0xc19463,_0x9b6d48);}function emitOutboundVoiceQueueSummary(_0x31fb00){if(_0x31fb00[_0x4b02('0x46')]==='outbound'){logger[_0x4b02('0x47')](_0x4b02('0x48'),util[_0x4b02('0x49')](_0x31fb00,{'showHidden':![],'depth':null}));emit(util[_0x4b02('0x4a')]('voice:queue:%s',_0x31fb00[_0x4b02('0x4b')]),'voice_queue:save',_0x31fb00);}}function checkGetDataPredictive(_0x18c6d1){if(isNotNull(_0x18c6d1)&&!_['isEmpty'](_0x18c6d1)){loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x4d'));loggerPredictive['info'](_0x4b02('0x4e'),_0x18c6d1[_0x4b02('0x4f')]);loggerPredictive['info'](_0x4b02('0x50'),_0x18c6d1[_0x4b02('0x51')]);loggerPredictive['info'](_0x4b02('0x52'),_0x18c6d1[_0x4b02('0x53')]);loggerPredictive[_0x4b02('0x4c')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x18c6d1['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x54'),_0x18c6d1[_0x4b02('0x55')]);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x56'),_0x18c6d1['predictiveIntervalAvgTalktime']);loggerPredictive[_0x4b02('0x4c')]('---------------------------');if(_0x18c6d1[_0x4b02('0x4f')]>0x0){if(!_[_0x4b02('0x44')](_0x18c6d1['predictiveIntervalAvgTalktime'])&&_0x18c6d1[_0x4b02('0x57')]>0x0){return!![];}loggerPredictive['info'](_0x4b02('0x58'));if(!_[_0x4b02('0x44')](_0x18c6d1[_0x4b02('0x55')])&&_0x18c6d1[_0x4b02('0x55')]>0x0){return!![];}loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x59'));}else{loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x5a'));}}else{loggerPredictive[_0x4b02('0x4c')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x1c7acb){return function(_0x3dfe6a){loggerPredictive[_0x4b02('0x4c')]('---------\x20ErlangB\x20---------');loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x5b'),_0x3dfe6a[_0x4b02('0x5c')]);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x5d'),_0x3dfe6a[_0x4b02('0x5e')]);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x5f'),_0x3dfe6a[_0x4b02('0x60')]);loggerPredictive['info'](_0x4b02('0x61'),_0x3dfe6a[_0x4b02('0x62')]);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x5f'),_0x3dfe6a[_0x4b02('0x60')]);loggerPredictive['info'](_0x4b02('0x63'));_[_0x4b02('0x64')](_0x1c7acb,_0x3dfe6a);};}function ifInterval(_0x5aa1f2,_0x5c07d9){if(_[_0x4b02('0x44')](_0x5c07d9)){return![];}return utils[_0x4b02('0x65')](undefined,_0x5c07d9)<_0x5aa1f2*0x3c;}function clearPredictiveAttributes(_0x527a3e){if(_0x527a3e[_0x4b02('0x66')]){_0x527a3e[_0x4b02('0x66')]=undefined;loggerPredictive[_0x4b02('0x47')](_0x527a3e[_0x4b02('0x4b')],_0x4b02('0x67'));}if(_0x527a3e[_0x4b02('0x28')]){_0x527a3e['startPredictive']=undefined;loggerPredictive[_0x4b02('0x47')](_0x527a3e['name'],_0x4b02('0x68'));}if(_0x527a3e[_0x4b02('0x69')]){clearInterval(_0x527a3e[_0x4b02('0x69')]);_0x527a3e['handlePredictive']=undefined;loggerPredictive[_0x4b02('0x47')](_0x527a3e[_0x4b02('0x4b')],'handlePredictive\x20interval\x20cleared');}}function loggerCatchPredictive(_0x15d77c,_0x435481){return function(_0x5f2ac8){loggerPredictive[_0x4b02('0x6a')](_0x435481[_0x4b02('0x4b')],_0x15d77c);loggerPredictive[_0x4b02('0x6a')](_0x5f2ac8['stack']);clearPredictiveAttributes(_0x435481);};}function loggerCatch(_0x16c9a1){return function(_0x28b9a7){logger['error'](_0x16c9a1,util[_0x4b02('0x49')](_0x28b9a7,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x51e698,_0x368c01,_0x1d6da8){return function(_0x1feb61){utils['checkContactLowerLimitOriginate'](_0x368c01,_0x1d6da8,0x0);logger[_0x4b02('0x6a')](_0x51e698,util[_0x4b02('0x49')](_0x1feb61,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x375269){return function(_0xdd465){if(isNotNull(_0xdd465)&&isNotNull(_0xdd465[0x0])){if(_0xdd465[0x0][_0x4b02('0x6b')]>0x0){_0x375269[_0x4b02('0x6c')]=utils['CAMPAIGN_STATUS']['CONTACTS_RESCHEDULED'];logger[_0x4b02('0x4c')](_0x4b02('0x6d')+_0x375269[_0x4b02('0x4b')],_0xdd465[0x0][_0x4b02('0x6b')],_0x4b02('0x6e'));}else{_0x375269['message']=utils[_0x4b02('0x6f')]['NO_AVAILABLE_CONTACTS'];logger[_0x4b02('0x4c')](_0x4b02('0x70')+_0x375269['name']);}}};}function createObjHistory(_0x55494f,_0x229b13,_0x5bc3c5,_0x402a2c,_0x538ec5){_0x55494f[_0x4b02('0x6c')]=_0x5bc3c5;var _0x3d5461=new Action(_0x55494f,_0x229b13);var _0x6d010c=new History(_0x3d5461);_0x6d010c[_0x4b02('0x71')]=_0x402a2c;_0x6d010c[_0x4b02('0x72')]=_0x538ec5;_0x6d010c[_0x4b02('0x73')]=_0x3d5461[_0x4b02('0x74')];return _0x6d010c;}function unlockQueueStatus(_0x58d9da,_0x2d4386){setTimeout(function(){if(_[_0x4b02('0x44')](_0x58d9da['queueStatusComplete'])){loggerBooked[_0x4b02('0x6a')](_0x4b02('0x75'),_0x2d4386);}_0x58d9da[_0x4b02('0x76')]=!![];loggerBooked['info'](_0x4b02('0x77'),_0x2d4386,JSON[_0x4b02('0x78')](_[_0x4b02('0x79')](_0x58d9da,[_0x4b02('0x4b'),_0x4b02('0x76')])));},0x1f3);}function checkInterval(_0x12f87c){return function(){if(!isNotNull(_0x12f87c['Interval'])){_0x12f87c[_0x4b02('0x6c')]=utils['CAMPAIGN_STATUS'][_0x4b02('0x7a')];throw _0x12f87c[_0x4b02('0x4b')]+_0x4b02('0x7b');}if(!isNotNull(_0x12f87c[_0x4b02('0x7c')][_0x4b02('0x7d')])){_0x12f87c[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')]['NULL_INTERVAL'];throw _0x12f87c['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x4b02('0x7e')](_0x12f87c['Interval'][_0x4b02('0x7d')]))){_0x12f87c['message']=utils['CAMPAIGN_STATUS'][_0x4b02('0x7a')];throw _0x12f87c[_0x4b02('0x4b')]+_0x4b02('0x7b');}};}function checkIsIVRCampaignActive(_0x448a42){return function(){if(!utils['isIVRCampaignActive'](_0x448a42)){_0x448a42[_0x4b02('0x6c')]=utils['CAMPAIGN_STATUS'][_0x4b02('0x7f')];throw _0x448a42[_0x4b02('0x4b')]+'\x20NOT\x20Active';}};}function emitCampaignSummary(_0x463ad4){if(utils['isIVRCampaign'](_0x463ad4)){emit(util[_0x4b02('0x4a')](_0x4b02('0x80'),_0x463ad4[_0x4b02('0x4b')]),'campaign:save',_0x463ad4);}}function loggerCatchQueueSummary(_0x55a0bf,_0x4bba93){return function(_0x4aac86){clearPredictiveAttributes(_0x4bba93);emitCampaignSummary(_0x4bba93);loggerSyncQueueSummary[_0x4b02('0x47')](_0x55a0bf,util[_0x4b02('0x49')](_0x4aac86,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x11280c){if(_0x11280c[_0x4b02('0x81')]){if(_0x11280c[_0x4b02('0x82')]===0x0){_0x11280c[_0x4b02('0x81')]=![];_0x11280c[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')][_0x4b02('0x7f')];loggerSyncQueueSummary['debug'](_0x4b02('0x83'),_0x11280c[_0x4b02('0x4b')],_0x4b02('0x84'));}else{_0x11280c[_0x4b02('0x6c')]=utils['CAMPAIGN_STATUS'][_0x4b02('0x85')];loggerSyncQueueSummary[_0x4b02('0x47')](_0x4b02('0x83'),_0x11280c['name'],'is\x20disactive');}emitCampaignSummary(_0x11280c);}}function myreject(_0x335dcf){return function(_0x2c6c7d){return _0x335dcf(msgResponse('[ifTime][Action]',_0x4b02('0x86'),JSON['stringify'](_0x2c6c7d)));};}Dialer[_0x4b02('0x1a')][_0x4b02('0x87')]=function(_0x3735f5){return!_['isUndefined'](_0x3735f5)&&_0x3735f5&&!_[_0x4b02('0x44')](_0x3735f5[_0x4b02('0x4b')])&&!_[_0x4b02('0x44')](_0x3735f5['active'])&&_0x3735f5['active']&&(this[_0x4b02('0x22')][util['format']('SIP/%s',_0x3735f5[_0x4b02('0x4b')])][_0x4b02('0x88')]===_0x4b02('0x89')||this['trunks'][util[_0x4b02('0x4a')](_0x4b02('0x8a'),_0x3735f5[_0x4b02('0x4b')])][_0x4b02('0x88')]===_0x4b02('0x8b'));};Dialer['prototype']['checkIsTrunkReachable']=function(_0x4e147a){var _0x1f2fb0=this;return function(){if(!_0x1f2fb0[_0x4b02('0x87')](_0x4e147a[_0x4b02('0x8c')])){if(!_0x1f2fb0[_0x4b02('0x87')](_0x4e147a[_0x4b02('0x8d')])){_0x4e147a[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')][_0x4b02('0x8e')];throw _0x4e147a[_0x4b02('0x4b')]+_0x4b02('0x8f');}}};};Dialer[_0x4b02('0x1a')][_0x4b02('0x90')]=function(_0x2b78a9,_0x210466,_0xe6b256,_0x518708){var _0x128614=this;return function(){var _0x54a165=!![];return _0x128614[_0x4b02('0x91')](_0x2b78a9,_0x210466,_0xe6b256,_0x518708,_0x54a165);};};Dialer[_0x4b02('0x1a')][_0x4b02('0x92')]=function(_0xd2206b,_0x5b0fbd,_0x22c952,_0x338946){var _0x2ad666=this;return function(){var _0x4d1e52=![];return _0x2ad666[_0x4b02('0x91')](_0xd2206b[_0x4b02('0x7d')],_0x5b0fbd,_0x22c952,_0x338946,_0x4d1e52);};};Dialer['prototype'][_0x4b02('0x91')]=function(_0x4e1246,_0x56b377,_0x1ec6e9,_0x22df03,_0x551ac9){var _0x2bf6b6=[];return new Promise(function(_0x1e85c8,_0xb2b7c0){if(!isNotNull(_0x4e1246)){_0x22df03[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')][_0x4b02('0x7a')];return _0xb2b7c0(msgResponse('ifTime',_0x4b02('0x93'),_0x1ec6e9+_0x4b02('0x94')));}if(_[_0x4b02('0x7e')](_0x4e1246)){_0x22df03['message']=utils[_0x4b02('0x6f')][_0x4b02('0x95')];return _0xb2b7c0(msgResponse(_0x4b02('0x96'),_0x4b02('0x93'),_0x1ec6e9+'\x20Intervals\x20is\x20empty\x20'));}if(_0x56b377&&_[_0x4b02('0x44')](config[_0x4b02('0x97')][_0x56b377])){_0x22df03[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')][_0x4b02('0x98')];return _0xb2b7c0(msgResponse(_0x4b02('0x96'),_0x4b02('0x93'),_0x1ec6e9+_0x4b02('0x99')+_0x56b377));}if(_[_0x4b02('0x9a')](_0x4e1246)){for(var _0x1ee191=0x0;_0x1ee191<_0x4e1246[_0x4b02('0x9b')];_0x1ee191+=0x1){_0x2bf6b6[_0x4b02('0x9c')](ami[_0x4b02('0x9d')]({'action':_0x4b02('0x9e'),'command':util['format'](_0x4b02('0x9f'),_0x4e1246[_0x1ee191][_0x4b02('0xa0')],!_[_0x4b02('0x44')](config[_0x4b02('0x97')][_0x56b377])?_0x56b377:'')})['then'](function(_0x9668d7){return _0x9668d7[_0x4b02('0xa1')]['indexOf'](_0x4b02('0xa2'))>=0x0;})[_0x4b02('0xa3')](myreject(_0xb2b7c0)));}}else{_0x2bf6b6[_0x4b02('0x9c')](ami[_0x4b02('0x9d')]({'action':_0x4b02('0x9e'),'command':util[_0x4b02('0x4a')]('iftime\x20%s,%s',_0x4e1246,!_[_0x4b02('0x44')](config[_0x4b02('0x97')][_0x56b377])?_0x56b377:'')})[_0x4b02('0xa4')](function(_0xe11595){return _0xe11595[_0x4b02('0xa1')]['indexOf']('true')>=0x0;})[_0x4b02('0xa3')](myreject(_0xb2b7c0)));}Promise[_0x4b02('0xa5')](_0x2bf6b6)[_0x4b02('0xa4')](function(_0x3f8f16){var _0x38860f=_[_0x4b02('0xa6')](_0x3f8f16);if(_0x38860f){return _0x1e85c8(_0x38860f);}else{_0x22df03[_0x4b02('0x6c')]=_0x551ac9?utils[_0x4b02('0x6f')]['OVERTIME_GLOBAL_INTERVAL']:utils[_0x4b02('0x6f')][_0x4b02('0xa7')];return _0xb2b7c0(msgResponse(_0x4b02('0xa8'),'Failure',_0x4b02('0xa9')+_0x551ac9+'\x20'+_0x1ec6e9+_0x4b02('0xaa')+util[_0x4b02('0x49')](_0x4e1246,{'showHidden':![],'depth':null})+_0x4b02('0xab')+_0x56b377));}})[_0x4b02('0xa3')](function(_0x5d45e6){return _0xb2b7c0(msgResponse(_0x4b02('0x96'),_0x4b02('0x93'),JSON[_0x4b02('0x78')](_0x5d45e6)));});});};Dialer[_0x4b02('0x1a')][_0x4b02('0x41')]=function(){var _0xa109f8=this;return cmHopper[_0x4b02('0xac')]({'active':![]},{'where':{'active':!![]}})[_0x4b02('0xa4')](function(){setInterval(function(){_0xa109f8['syncCampaigns']();},0x3e8);});};Dialer['prototype'][_0x4b02('0xad')]=function(){var _0x58454d=this;var _0x51bdbc;for(var _0x258731 in this['campaigns']){if(typeof this[_0x4b02('0x20')][_0x258731]!=='undefined'){_0x51bdbc=this[_0x4b02('0x20')][_0x258731];if(utils[_0x4b02('0xae')](_0x51bdbc)&&utils[_0x4b02('0xaf')](_0x51bdbc)){_0x51bdbc[_0x4b02('0x81')]=!![];Promise[_0x4b02('0xb0')]()[_0x4b02('0xa4')](checkIsIVRCampaignActive(_0x51bdbc))[_0x4b02('0xa4')](checkInterval(_0x51bdbc))[_0x4b02('0xa4')](_0x58454d[_0x4b02('0xb1')](_0x51bdbc))[_0x4b02('0xa4')](_0x58454d[_0x4b02('0x90')](_0x51bdbc[_0x4b02('0xb2')],_0x51bdbc[_0x4b02('0xb3')],_0x51bdbc['name'],_0x51bdbc))[_0x4b02('0xa4')](_0x58454d[_0x4b02('0x92')](_0x51bdbc[_0x4b02('0x7c')],_0x51bdbc[_0x4b02('0xb3')],_0x51bdbc[_0x4b02('0x4b')],_0x51bdbc))[_0x4b02('0xa4')](_0x58454d[_0x4b02('0xb4')](_0x51bdbc))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0x51bdbc));}else{notSendMessagesCampaign(_0x51bdbc);}}}};Dialer[_0x4b02('0x1a')][_0x4b02('0xb5')]=function(_0x38fa8b){if(_0x38fa8b[_0x4b02('0xb6')]!=='predictive'){clearPredictiveAttributes(_0x38fa8b);}switch(_0x38fa8b[_0x4b02('0xb6')]){case'progressive':this['handlePower'](_0x38fa8b,0x1);break;case _0x4b02('0xb7'):this[_0x4b02('0xb8')](_0x38fa8b,_0x38fa8b[_0x4b02('0xb9')]);break;case _0x4b02('0xba'):this[_0x4b02('0xba')](_0x38fa8b);break;case _0x4b02('0xa'):this['handlePower'](_0x38fa8b,0x1);break;default:logger[_0x4b02('0x6a')](_0x4b02('0xbb'),_0x38fa8b[_0x4b02('0x4b')],_0x4b02('0xbc'));}};Dialer[_0x4b02('0x1a')][_0x4b02('0x96')]=function(_0x25b5e3,_0x404d4e){var _0x1f4682=_0x25b5e3[_0x4b02('0xb3')];var _0x19604d=_0x404d4e?_0x25b5e3[_0x4b02('0xb2')]:_0x25b5e3[_0x4b02('0x7c')]['Intervals'];logger['silly']('Dialer::ifTime()',_0x19604d,_0x1f4682,_0x25b5e3['name'],util[_0x4b02('0x4a')](_0x4b02('0xbd'),_0x25b5e3[_0x4b02('0x4b')],_0x25b5e3['id']));var _0xab7bc5=null;return Interval['intervalIftime'](_0x19604d,_0x1f4682)[_0x4b02('0xa4')](function(_0x4e473a){if(_0x4e473a===!![]){return _0x4e473a;}else{_0x25b5e3[_0x4b02('0x6c')]=_0x404d4e?utils['CAMPAIGN_STATUS'][_0x4b02('0xbe')]:utils['CAMPAIGN_STATUS'][_0x4b02('0xa7')];_0xab7bc5=msgResponse(_0x4b02('0xa8'),'Failure','Global:\x20'+_0x404d4e+'\x20'+_0x25b5e3['name']+'\x20Interval\x20is\x20overtime:\x20'+util[_0x4b02('0x49')](_0x19604d,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x1f4682);}if(_0xab7bc5!==null){logger['silly'](_0x4b02('0xbf'),_0xab7bc5);_0xab7bc5[_0x4b02('0xc0')]=_0x404d4e;throw _0xab7bc5;}})['catch'](function(_0x2ee166){logger['error'](_0x4b02('0xc1'),_0x2ee166);throw msgResponse(_0x4b02('0xc2'),'Error',util[_0x4b02('0x49')](_0x2ee166,{'showHidden':![],'depth':null}));});};Dialer[_0x4b02('0x1a')][_0x4b02('0x2e')]=function(_0x58fa08){if(this[_0x4b02('0x1f')][_0x58fa08[_0x4b02('0xc3')]]){if(this[_0x4b02('0x26')][_0x58fa08[_0x4b02('0xc4')]]&&this[_0x4b02('0x26')][_0x58fa08[_0x4b02('0xc4')]][_0x4b02('0x46')]!==_0x4b02('0xc5')){this['updateOriginated'](this['voiceQueues'][_0x58fa08[_0x4b02('0xc3')]]);this[_0x4b02('0x26')][_0x58fa08[_0x4b02('0xc4')]]['answertime']=moment()['format'](_0x4b02('0xc6'));}}};Dialer[_0x4b02('0x1a')][_0x4b02('0x34')]=function(_0x24ecc2){var _0x1a108d=this[_0x4b02('0x26')][_0x24ecc2[_0x4b02('0xc4')]];if(this[_0x4b02('0x1f')][_0x24ecc2[_0x4b02('0xc3')]]){if(_0x1a108d&&_0x1a108d[_0x4b02('0x46')]!==_0x4b02('0xc5')){delete this[_0x4b02('0x26')][_0x24ecc2[_0x4b02('0xc4')]];this[_0x4b02('0x1f')][_0x24ecc2[_0x4b02('0xc3')]][_0x4b02('0xc7')]+=0x1;var _0x50b1ee=new AgentComplete(_0x1a108d,_0x24ecc2);if(_0x24ecc2[_0x4b02('0xc8')]==='agent'){_0x50b1ee[_0x4b02('0xc9')]=this[_0x4b02('0x1f')][_0x24ecc2[_0x4b02('0xc3')]][_0x4b02('0xca')]&&this['voiceQueues'][_0x24ecc2['queue']][_0x4b02('0xcb')]?moment()['format'](_0x4b02('0xc6')):undefined;}hopperUtils[_0x4b02('0xcc')](_0x50b1ee)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0xcd')));hopperUtils[_0x4b02('0xce')](_0x50b1ee)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0xcf')));}}};Dialer[_0x4b02('0x1a')][_0x4b02('0xd0')]=function(_0xb9eee5){var _0x40f1e5=this[_0x4b02('0x26')][_0xb9eee5['uniqueid']];var _0x52e3cc=this;var _0x3c8e69=![];var _0x260507;var _0x5c0cff;if(this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]]){if(_0x40f1e5&&_0x40f1e5['type']!==_0x4b02('0xc5')){delete this[_0x4b02('0x26')][_0xb9eee5[_0x4b02('0xc4')]];this['updateOriginated'](this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]]);_0x40f1e5['droptime']=moment()[_0x4b02('0x4a')](_0x4b02('0xc6'));var _0x1951ca=new QueueCallerAbandon(_0x40f1e5,_0xb9eee5);if(utils[_0x4b02('0x65')](_0x40f1e5['droptime'],_0x40f1e5[_0x4b02('0xd1')])>=_0x40f1e5[_0x4b02('0xd2')]){this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0x53')]+=0x1;this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0xd3')]+=0x1;this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0xd4')]+=0x1;_0x1951ca['state']=0xa;_0x1951ca[_0x4b02('0x72')]=_0x4b02('0xd5');_0x1951ca[_0x4b02('0xd6')]=_0x4b02('0xd7');_0x1951ca[_0x4b02('0xc9')]=this['voiceQueues'][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0xca')]?moment()['format'](_0x4b02('0xc6')):undefined;_0x1951ca['countdropretry']+=0x1;_0x1951ca[_0x4b02('0xd8')]+=0x1;_0x260507=this['voiceQueues'][_0xb9eee5[_0x4b02('0xc3')]]['dialDropRetryFrequency'];_0x5c0cff=this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]]['callAdditionalPhoneAfterMin'];hopperUtils[_0x4b02('0xd9')](_0x1951ca,_0x1951ca[_0x4b02('0x71')],_0x40f1e5['voiceQueue'])[_0x4b02('0xa4')](function(_0x228f19){_0x3c8e69=_0x228f19[_0x4b02('0xda')]==0x1;if(_0x1951ca[_0x4b02('0xdb')]>=_0x52e3cc[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]]['dialDropMaxRetry']){_0x52e3cc['queueCallerAbandonCreateState'](_0x1951ca,_0x228f19[_0x4b02('0xda')]);}else{hopperUtils[_0x4b02('0xdc')]({'active':![],'countdropretry':_0x1951ca[_0x4b02('0xdb')],'scheduledat':moment()[_0x4b02('0xdd')](_0x52e3cc[_0x4b02('0x1f')][_0xb9eee5['queue']][_0x4b02('0xde')],_0x4b02('0xdf'))['format'](_0x4b02('0xc6')),'ContactId':_0x40f1e5[_0x4b02('0xe0')],'ListId':_0x40f1e5[_0x4b02('0xe1')],'VoiceQueueId':_0x40f1e5[_0x4b02('0xe2')]||undefined,'CampaignId':_0x40f1e5[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0xe4')));var _0x4ab0aa=new History(_0x1951ca);_0x4ab0aa[_0x4b02('0x71')]=0xa;_0x4ab0aa[_0x4b02('0x72')]=_0x4b02('0xd5');_0x4ab0aa[_0x4b02('0x74')]=moment()['format'](_0x4b02('0xc6'));_0x4ab0aa['endtime']=_0x4ab0aa[_0x4b02('0x74')];_0x4ab0aa[_0x4b02('0xe5')]=_0x1951ca[_0x4b02('0xe5')];_0x4ab0aa['calleridnum']=_0x1951ca['calleridnum'];hopperUtils[_0x4b02('0xcc')](_0x4ab0aa)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0xe6')));}})[_0x4b02('0xa4')](function(){if(_0x3c8e69)hopperUtils[_0x4b02('0xe7')](_0x1951ca,_0x260507,_0x5c0cff)[_0x4b02('0xa4')](function(){return 0x1;});});}else{this['voiceQueues'][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0xe8')]+=0x1;this['voiceQueues'][_0xb9eee5[_0x4b02('0xc3')]]['outboundDropCallsDayCallersExit']+=0x1;_0x1951ca[_0x4b02('0x71')]=0xb;_0x1951ca['statedesc']=_0x4b02('0xe9');_0x1951ca[_0x4b02('0xd6')]=_0x4b02('0xea');_0x1951ca['countabandonedretry']+=0x1;_0x1951ca[_0x4b02('0xd8')]+=0x1;_0x260507=this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]]['dialAbandonedRetryFrequency'];_0x5c0cff=this[_0x4b02('0x1f')][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0xeb')];hopperUtils['verifyAdditionalPhones'](_0x1951ca,_0x1951ca['state'],_0x40f1e5[_0x4b02('0xec')])['then'](function(_0x2667e9){if(_0x1951ca[_0x4b02('0xed')]>=_0x52e3cc['voiceQueues'][_0xb9eee5[_0x4b02('0xc3')]][_0x4b02('0xee')]){_0x52e3cc['queueCallerAbandonCreateState'](_0x1951ca,_0x2667e9['additional']);}else{hopperUtils[_0x4b02('0xdc')]({'active':![],'countabandonedretry':_0x1951ca[_0x4b02('0xed')],'scheduledat':moment()[_0x4b02('0xdd')](_0x52e3cc['voiceQueues'][_0xb9eee5[_0x4b02('0xc3')]]['dialAbandonedRetryFrequency'],_0x4b02('0xdf'))[_0x4b02('0x4a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x40f1e5[_0x4b02('0xe0')],'ListId':_0x40f1e5[_0x4b02('0xe1')],'VoiceQueueId':_0x40f1e5[_0x4b02('0xe2')]||undefined,'CampaignId':_0x40f1e5[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x49102a=new History(_0x1951ca);_0x49102a[_0x4b02('0x71')]=0xb;_0x49102a[_0x4b02('0x72')]=_0x4b02('0xe9');_0x49102a[_0x4b02('0x74')]=moment()[_0x4b02('0x4a')](_0x4b02('0xc6'));_0x49102a['endtime']=_0x49102a['starttime'];_0x49102a['calleridname']=_0x1951ca['calleridname'];_0x49102a[_0x4b02('0xef')]=_0x1951ca[_0x4b02('0xef')];hopperUtils[_0x4b02('0xcc')](_0x49102a)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0xf0')));}})['then'](function(){if(_0x3c8e69)hopperUtils[_0x4b02('0xe7')](_0x1951ca,_0x260507,_0x5c0cff)[_0x4b02('0xa4')](function(){return 0x1;});});}}}};Dialer[_0x4b02('0x1a')][_0x4b02('0x3b')]=function(_0x2a9f2e){if(this[_0x4b02('0x24')][_0x2a9f2e['uniqueid']]){this['actions'][_0x2a9f2e[_0x4b02('0xc4')]][_0x4b02('0xf1')]=_0x2a9f2e[_0x4b02('0xf1')];}if(this[_0x4b02('0x26')][_0x2a9f2e[_0x4b02('0xc4')]]){this['uniqueId'][_0x2a9f2e['uniqueid']]['channel']=_0x2a9f2e[_0x4b02('0xf1')];}};Dialer[_0x4b02('0x1a')]['syncQueueMember']=function(_0x12b7b4){if(!this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]]){return;}var _0xe76570=this[_0x4b02('0x1f')][this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]]['queue']][_0x4b02('0xf3')]||'rrmemory';if(_0xe76570===_0x4b02('0xf4')){if(this['actions'][_0x12b7b4[_0x4b02('0xf2')]]&&_[_0x4b02('0xf5')](this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]][_0x4b02('0xf6')])&&_0x12b7b4[_0x4b02('0x88')]==='1'&&_0x12b7b4[_0x4b02('0xf7')]==='0'){if(this[_0x4b02('0x21')][_0x12b7b4[_0x4b02('0xf8')]]){if(!this[_0x4b02('0x21')][_0x12b7b4[_0x4b02('0xf8')]][_0x4b02('0xf6')]){this[_0x4b02('0x21')][_0x12b7b4[_0x4b02('0xf8')]]['locked']=!![];this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]]['locked']=!![];this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]]['stateinterface']=_0x12b7b4['stateinterface'];}}}}else if(_0xe76570===_0x4b02('0xf9')){if(this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]]){if(this[_0x4b02('0x21')][_0x12b7b4[_0x4b02('0xf8')]]){this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]][_0x4b02('0xf8')]=_0x12b7b4[_0x4b02('0xf8')];if(_[_0x4b02('0xf5')](this[_0x4b02('0x2a')][this['actions'][_0x12b7b4[_0x4b02('0xf2')]][_0x4b02('0xc3')]])){this[_0x4b02('0x2a')][this[_0x4b02('0x24')][_0x12b7b4['actionid']][_0x4b02('0xc3')]]=[];}this['queueBooked'][this[_0x4b02('0x24')][_0x12b7b4[_0x4b02('0xf2')]]['queue']][_0x4b02('0x9c')](_[_0x4b02('0x64')](_[_0x4b02('0x79')](this['actions'][_0x12b7b4[_0x4b02('0xf2')]],['idHopper',_0x4b02('0xf8')]),{'status':_0x12b7b4[_0x4b02('0x88')],'paused':_0x12b7b4[_0x4b02('0xf7')]}));}}}};Dialer['prototype']['syncQueueStatusComplete']=function(_0xca7a62){if(!this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]){return;}var _0x8a8c49=this;var _0x24041e=this[_0x4b02('0x1f')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]];var _0x172e6d=_0x24041e['strategy']||_0x4b02('0xf9');if(_0x172e6d===_0x4b02('0xf4')){if(this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]&&this['actions'][_0xca7a62[_0x4b02('0xf2')]]['stateinterface']){this[_0x4b02('0x1e')][_0x4b02('0xfa')](this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xfb')],this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xf8')])['catch'](function(_0x4ec385){logger[_0x4b02('0x6a')](_0x4b02('0xfc'),util[_0x4b02('0x49')](_0x4ec385,{'showHidden':![],'depth':null}));})['finally'](function(){_0x8a8c49[_0x4b02('0xfd')](_0x8a8c49[_0x4b02('0x1f')][_0x8a8c49[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]);_0x8a8c49['agents'][_0x8a8c49[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xf8')]][_0x4b02('0xf6')]=![];delete _0x8a8c49[_0x4b02('0x24')][_0xca7a62['actionid']];unlockQueueStatus(_0x24041e);});}else{this[_0x4b02('0xfd')](this[_0x4b02('0x1f')][this['actions'][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]);hopperUtils[_0x4b02('0xdc')]({'active':![],'ContactId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe0')],'ListId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe1')],'VoiceQueueId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe2')]||undefined,'CampaignId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]['CampaignId']||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0xca7a62[_0x4b02('0xf2')]];unlockQueueStatus(_0x24041e);}}else if(_0x172e6d==='rrmemory'){var _0x2f44b5;if(this[_0x4b02('0x24')][_0xca7a62['actionid']]&&!_['isEmpty'](this['queueBooked'][this['actions'][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]])){if(this['queueBookedRR'][_0x8a8c49[_0x4b02('0x24')][_0xca7a62['actionid']][_0x4b02('0xc3')]]){this[_0x4b02('0x2b')][_0x8a8c49[_0x4b02('0x24')][_0xca7a62['actionid']]['queue']]=this['queueBookedRR'][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]['queue']]?this['queueBookedRR'][this[_0x4b02('0x24')][_0xca7a62['actionid']]['queue']]:this[_0x4b02('0x2a')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]?this[_0x4b02('0x2a')][this['actions'][_0xca7a62[_0x4b02('0xf2')]]['queue']][_0x4b02('0xfe')]||0x0:0x0;}this[_0x4b02('0x2a')][this['actions'][_0xca7a62[_0x4b02('0xf2')]]['queue']]['_rr']=this[_0x4b02('0x2b')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]];for(var _0x1ded60=0x0;_0x1ded60<this[_0x4b02('0x2a')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]][_0x4b02('0x9b')];_0x1ded60+=0x1){_0x2f44b5=rr(this[_0x4b02('0x2a')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]);this[_0x4b02('0x2b')][_0x8a8c49['actions'][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]=this[_0x4b02('0x2a')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]['queue']]['_rr'];if(_0x2f44b5['status']==='1'&&_0x2f44b5[_0x4b02('0xf7')]==='0'){break;}}if(!_[_0x4b02('0xf5')](_0x2f44b5)){this['agents'][_0x2f44b5[_0x4b02('0xf8')]][_0x4b02('0xff')]=_[_0x4b02('0x44')](this['agents'][_0x2f44b5[_0x4b02('0xf8')]][_0x4b02('0xff')])?!![]:this[_0x4b02('0x21')][_0x2f44b5[_0x4b02('0xf8')]]['unlockRR'];}loggerBooked[_0x4b02('0x4c')]('[booked][RR]',_0xca7a62[_0x4b02('0xf2')],_0x4b02('0x100'),JSON[_0x4b02('0x78')](_[_0x4b02('0x79')](this[_0x4b02('0x21')][_0x2f44b5[_0x4b02('0xf8')]],[_0x4b02('0x4b'),'unlockRR'])),_0x4b02('0x101'),JSON[_0x4b02('0x78')](_0x2f44b5['idHopper']));if(!_[_0x4b02('0xf5')](_0x2f44b5)&&_0x2f44b5['status']==='1'&&_0x2f44b5[_0x4b02('0xf7')]==='0'&&this['agents'][_0x2f44b5['stateinterface']][_0x4b02('0xff')]){this['agents'][_0x2f44b5[_0x4b02('0xf8')]][_0x4b02('0xff')]=![];this[_0x4b02('0x2a')][_0x8a8c49[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]['queue']]=[];this[_0x4b02('0x1e')][_0x4b02('0xfa')](_0x2f44b5[_0x4b02('0xfb')],_0x2f44b5[_0x4b02('0xf8')])['catch'](function(_0x545677){logger[_0x4b02('0x6a')](_0x4b02('0xfc'),util[_0x4b02('0x49')](_0x545677,{'showHidden':![],'depth':null}));})['finally'](function(){_0x8a8c49['updateOriginated'](_0x8a8c49[_0x4b02('0x1f')][_0x8a8c49[_0x4b02('0x24')][_0xca7a62['actionid']]['queue']]);setTimeout(function(){_0x8a8c49[_0x4b02('0x21')][_0x2f44b5[_0x4b02('0xf8')]][_0x4b02('0xff')]=!![];loggerBooked[_0x4b02('0x4c')](_0x4b02('0x102'),_0xca7a62['actionid'],_0x4b02('0x100'),JSON[_0x4b02('0x78')](_[_0x4b02('0x79')](_0x8a8c49[_0x4b02('0x21')][_0x2f44b5['stateinterface']],[_0x4b02('0x4b'),_0x4b02('0xff')])),_0x4b02('0x101'),JSON[_0x4b02('0x78')](_0x2f44b5['idHopper']));},0xc7);delete _0x8a8c49[_0x4b02('0x24')][_0xca7a62['actionid']];unlockQueueStatus(_0x24041e,_0xca7a62[_0x4b02('0xf2')]);});}else{loggerBooked[_0x4b02('0x4c')](_0x4b02('0x103'));this['updateOriginated'](this[_0x4b02('0x1f')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]);hopperUtils[_0x4b02('0xdc')]({'active':![],'ContactId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe0')],'ListId':this[_0x4b02('0x24')][_0xca7a62['actionid']][_0x4b02('0xe1')],'VoiceQueueId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe2')]||undefined,'CampaignId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]['CampaignId']||undefined})[_0x4b02('0xa3')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]];unlockQueueStatus(_0x24041e);}}else{loggerBooked['info']('[booked][unlock2]');this[_0x4b02('0xfd')](this['voiceQueues'][this[_0x4b02('0x24')][_0xca7a62['actionid']][_0x4b02('0xc3')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe0')],'ListId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe1')],'VoiceQueueId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe2')]||undefined,'CampaignId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x104')));delete this['actions'][_0xca7a62[_0x4b02('0xf2')]];unlockQueueStatus(_0x24041e);}}else{loggerBooked[_0x4b02('0x4c')](_0x4b02('0x105'));this[_0x4b02('0xfd')](this[_0x4b02('0x1f')][this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]][_0x4b02('0xc3')]]);hopperUtils[_0x4b02('0xdc')]({'active':![],'ContactId':this[_0x4b02('0x24')][_0xca7a62['actionid']]['ContactId'],'ListId':this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]]['ListId'],'VoiceQueueId':this[_0x4b02('0x24')][_0xca7a62['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0x4b02('0x24')][_0xca7a62['actionid']][_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x106')));delete this[_0x4b02('0x24')][_0xca7a62[_0x4b02('0xf2')]];unlockQueueStatus(_0x24041e);}};Dialer['prototype'][_0x4b02('0x32')]=function(_0x5ae481){var _0x4fcc39=this[_0x4b02('0x24')][_0x5ae481[_0x4b02('0xf2')]];if(_0x4fcc39){delete this[_0x4b02('0x24')][_0x5ae481[_0x4b02('0xf2')]];_0x4fcc39['responsetime']=moment()[_0x4b02('0x4a')](_0x4b02('0xc6'));var _0x570c05=_0x4fcc39[_0x4b02('0x46')]==='ivr'?this['campaigns'][_0x4fcc39['queue']]:this['voiceQueues'][_0x4fcc39[_0x4b02('0x107')]()];if(_0x5ae481['response']!==_0x4b02('0x108')){this[_0x4b02('0xfd')](_0x570c05);return this[_0x4b02('0x109')](_0x4fcc39,_0x570c05,_0x5ae481)['catch'](loggerCatch(_0x4b02('0x10a')));}this[_0x4b02('0x26')][_0x5ae481['uniqueid']]=_0x4fcc39;}};Dialer['prototype'][_0x4b02('0x3d')]=function(_0x448a5f){var _0x1beef4=this;var _0x389836=this['uniqueId'][_0x448a5f['uniqueid']];var _0x2c83c6;if(!_[_0x4b02('0xf5')](_0x448a5f)&&!_[_0x4b02('0xf5')](_0x448a5f['variable'])&&!_[_0x4b02('0xf5')](_0x448a5f['variable'][_0x4b02('0x10b')])&&_0x448a5f[_0x4b02('0x10c')]===_0x4b02('0x10d')&&_0x389836){if(_0x389836[_0x4b02('0x46')]!==_0x4b02('0xc5')&&this[_0x4b02('0x1f')][_0x389836[_0x4b02('0xc3')]][_0x4b02('0x10e')]&&_0x448a5f[_0x4b02('0x10f')]===_0x4b02('0x110')){delete this[_0x4b02('0x26')][_0x448a5f['uniqueid']];this[_0x4b02('0xfd')](this[_0x4b02('0x1f')][_0x389836['queue']]);this['voiceQueues'][_0x389836[_0x4b02('0xc3')]][_0x4b02('0xc7')]+=0x1;this[_0x4b02('0x1f')][_0x389836[_0x4b02('0xc3')]][_0x4b02('0x111')]+=0x1;_0x2c83c6=new Hangup(_0x389836,_0x448a5f);_0x2c83c6[_0x4b02('0x71')]=0x12;_0x2c83c6[_0x4b02('0x72')]=_0x4b02('0x112');_0x2c83c6[_0x4b02('0x113')]=_0x4b02('0x114');ami[_0x4b02('0x45')](_0x4b02('0x115'),ut[_0x4b02('0x116')](_0x2c83c6,_0x4b02('0x117')));this[_0x4b02('0x118')](_0x2c83c6,_0x4b02('0x119'),_0x4b02('0x11a'));}if(_0x389836[_0x4b02('0x46')]!=='ivr'&&this['voiceQueues'][_0x389836[_0x4b02('0xc3')]]['dialAMDActive']&&_0x448a5f['value']===_0x4b02('0x11b')){return new Promise(function(_0x59840a,_0x2872ad){delete _0x1beef4[_0x4b02('0x26')][_0x448a5f['uniqueid']];_0x1beef4[_0x4b02('0xfd')](_0x1beef4['voiceQueues'][_0x389836[_0x4b02('0xc3')]]);_0x1beef4[_0x4b02('0x1f')][_0x389836[_0x4b02('0xc3')]][_0x4b02('0xc7')]+=0x1;_0x1beef4[_0x4b02('0x1f')][_0x389836[_0x4b02('0xc3')]][_0x4b02('0x111')]+=0x1;var _0xe7c7ef=_0x1beef4['voiceQueues'][_0x389836[_0x4b02('0xc3')]];var _0x417863=new Hangup(_0x389836,_0x448a5f);_0x417863['state']=0x13;_0x417863[_0x4b02('0x72')]='Machine';_0x417863['membername']=_0x4b02('0x114');_0x417863[_0x4b02('0x11c')]+=0x1;_0x417863['countglobal']+=0x1;_0x417863[_0x4b02('0x117')]=!![];ami[_0x4b02('0x45')](_0x4b02('0x115'),ut['buildObj'](_0x417863,_0x4b02('0x117')));hopperUtils['createHistory'](_0x417863)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x11d')));if(_0x417863[_0x4b02('0x11e')]+_0x417863[_0x4b02('0x11f')]+_0x417863[_0x4b02('0x120')]+_0x417863[_0x4b02('0x121')]+_0x417863[_0x4b02('0xdb')]+_0x417863['countabandonedretry']+_0x417863[_0x4b02('0x11c')]+_0x417863[_0x4b02('0x122')]>=_0xe7c7ef[_0x4b02('0x123')]){_0x1beef4['stateGlobal'](_0x417863,_0x59840a,_0x2872ad,_0x4b02('0x124'));}else{if(_0x417863[_0x4b02('0x11c')]>=_0xe7c7ef[_0x4b02('0x125')]){_0x1beef4[_0x4b02('0x126')](_0x417863,_0x59840a,_0x2872ad,_0x4b02('0x127'));}else{hopperUtils[_0x4b02('0xdc')]({'active':![],'countmachineretry':_0x417863[_0x4b02('0x11c')],'scheduledat':moment()['add'](_0xe7c7ef['dialMachineRetryFrequency'],_0x4b02('0xdf'))[_0x4b02('0x4a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x417863[_0x4b02('0xe0')],'ListId':_0x417863[_0x4b02('0xe1')],'VoiceQueueId':_0x417863[_0x4b02('0xe2')]||undefined,'CampaignId':_0x417863[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x128')));_0x59840a({'reschedule':0x1});}}});}if(_0x389836[_0x4b02('0x46')]===_0x4b02('0xc5')&&this[_0x4b02('0x20')][_0x389836[_0x4b02('0xc3')]][_0x4b02('0x10e')]&&_0x448a5f['value']==='HANGUP'){delete this[_0x4b02('0x26')][_0x448a5f[_0x4b02('0xc4')]];this['updateOriginated'](this[_0x4b02('0x20')][_0x389836[_0x4b02('0xc3')]]);_0x2c83c6=new Hangup(_0x389836,_0x448a5f);_0x2c83c6[_0x4b02('0x71')]=0x12;_0x2c83c6['statedesc']=_0x4b02('0x112');_0x2c83c6['membername']=_0x4b02('0x114');ami['emit']('custom:amd',ut[_0x4b02('0x116')](_0x2c83c6,_0x4b02('0x117')));this[_0x4b02('0x118')](_0x2c83c6,_0x4b02('0x129'),'[syncHangupInAMDIvr]');}if(_0x389836[_0x4b02('0x46')]===_0x4b02('0xc5')&&this[_0x4b02('0x20')][_0x389836[_0x4b02('0xc3')]][_0x4b02('0x10e')]&&_0x448a5f[_0x4b02('0x10f')]==='MACHINE'){return new Promise(function(_0x40bdfb,_0x171ee1){delete _0x1beef4[_0x4b02('0x26')][_0x448a5f[_0x4b02('0xc4')]];_0x1beef4[_0x4b02('0xfd')](_0x1beef4[_0x4b02('0x20')][_0x389836[_0x4b02('0xc3')]]);_0x1beef4[_0x4b02('0x20')][_0x389836['queue']][_0x4b02('0xc7')]+=0x1;_0x1beef4['campaigns'][_0x389836[_0x4b02('0xc3')]][_0x4b02('0x111')]+=0x1;var _0x46490c=_0x1beef4[_0x4b02('0x20')][_0x389836['queue']];var _0x2aec5a=new Hangup(_0x389836,_0x448a5f);_0x2aec5a[_0x4b02('0x71')]=0x13;_0x2aec5a['statedesc']=_0x4b02('0x12a');_0x2aec5a['membername']='AMD';_0x2aec5a[_0x4b02('0x11c')]+=0x1;_0x2aec5a[_0x4b02('0xd8')]+=0x1;_0x2aec5a[_0x4b02('0x117')]=!![];ami[_0x4b02('0x45')]('custom:amd',ut[_0x4b02('0x116')](_0x2aec5a,_0x4b02('0x117')));hopperUtils[_0x4b02('0xcc')](_0x2aec5a)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x11d')));if(_0x2aec5a[_0x4b02('0x11e')]+_0x2aec5a['countcongestionretry']+_0x2aec5a[_0x4b02('0x120')]+_0x2aec5a['countnosuchnumberretry']+_0x2aec5a[_0x4b02('0xdb')]+_0x2aec5a[_0x4b02('0xed')]+_0x2aec5a[_0x4b02('0x11c')]+_0x2aec5a[_0x4b02('0x122')]>=_0x46490c['dialGlobalMaxRetry']){_0x1beef4[_0x4b02('0x12b')](_0x2aec5a,_0x40bdfb,_0x171ee1,'reason19\x20machine....');}else{if(_0x2aec5a[_0x4b02('0x11c')]>=_0x46490c['dialMachineMaxRetry']){_0x1beef4[_0x4b02('0x126')](_0x2aec5a,_0x40bdfb,_0x171ee1,_0x4b02('0x127'));}else{hopperUtils[_0x4b02('0xdc')]({'active':![],'countmachineretry':_0x2aec5a['countmachineretry'],'scheduledat':moment()[_0x4b02('0xdd')](_0x46490c['dialMachineRetryFrequency'],_0x4b02('0xdf'))[_0x4b02('0x4a')](_0x4b02('0xc6')),'ContactId':_0x2aec5a[_0x4b02('0xe0')],'ListId':_0x2aec5a['ListId'],'VoiceQueueId':_0x2aec5a['VoiceQueueId']||undefined,'CampaignId':_0x2aec5a[_0x4b02('0xe3')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x40bdfb({'reschedule':0x1});}}});}}};Dialer[_0x4b02('0x1a')][_0x4b02('0x39')]=function(_0x4fe304){var _0x36d01e=this[_0x4b02('0x26')][_0x4fe304[_0x4b02('0xc4')]];var _0x4f8af6;if(_0x36d01e&&_0x36d01e[_0x4b02('0x46')]===_0x4b02('0xc5')){delete this[_0x4b02('0x26')][_0x4fe304['uniqueid']];this[_0x4b02('0xfd')](this[_0x4b02('0x20')][_0x36d01e[_0x4b02('0xc3')]]);this['campaigns'][_0x36d01e['queue']]['ivrAnswerCallsDay']+=0x1;_0x4f8af6=new Hangup(_0x36d01e,_0x4fe304);hopperUtils['createHistory'](_0x4f8af6)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x12c')));hopperUtils[_0x4b02('0xce')](_0x4f8af6)[_0x4b02('0xa3')](loggerCatch('[syncHangupIvr]'));}if(_0x36d01e&&_0x36d01e[_0x4b02('0x46')]!==_0x4b02('0xc5')&&isNotNull(this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]][_0x4b02('0x12d')])){delete this[_0x4b02('0x26')][_0x4fe304['uniqueid']];this[_0x4b02('0xfd')](this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]]);this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]][_0x4b02('0xc7')]+=0x1;this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]][_0x4b02('0x111')]+=0x1;_0x4f8af6=new Hangup(_0x36d01e,_0x4fe304);_0x4f8af6[_0x4b02('0x71')]=0x10;_0x4f8af6[_0x4b02('0x72')]=_0x4b02('0x12e');_0x4f8af6['membername']=_0x4b02('0x12f');hopperUtils['createHistory'](_0x4f8af6)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x12c')));hopperUtils['moveContactManagedDialer'](_0x4f8af6)[_0x4b02('0xa3')](loggerCatch('[syncHangupIvr]'));}if(_0x36d01e&&_0x36d01e[_0x4b02('0x46')]!==_0x4b02('0xc5')&&!isNotNull(this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]]['dialQueueProject'])){delete this[_0x4b02('0x26')][_0x4fe304[_0x4b02('0xc4')]];this[_0x4b02('0xfd')](this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]]);this[_0x4b02('0x1f')][_0x36d01e[_0x4b02('0xc3')]]['outboundUnknownCallsDay']+=0x1;_0x4f8af6=new Hangup(_0x36d01e,_0x4fe304);_0x4f8af6[_0x4b02('0x71')]=0xc;_0x4f8af6['statedesc']=_0x4fe304[_0x4b02('0x130')];_0x4f8af6[_0x4b02('0x113')]=_0x4b02('0x131');hopperUtils[_0x4b02('0xcc')](_0x4f8af6)['catch'](loggerCatch(_0x4b02('0x12c')));hopperUtils[_0x4b02('0xce')](_0x4f8af6)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x132')));}};Dialer[_0x4b02('0x1a')][_0x4b02('0xc')]=function(_0x46e26d){var _0x5715ac=this;if(!_0x5715ac[_0x4b02('0x2c')][_0x46e26d['name']]){_0x5715ac[_0x4b02('0x2c')][_0x46e26d['name']]={'running':![]};}else if(_0x5715ac['queuesSummary'][_0x46e26d['name']]['running']===!![]){return;}else if(_0x5715ac['queuesSummary'][_0x46e26d[_0x4b02('0x4b')]][_0x4b02('0x133')]===![]){_0x5715ac[_0x4b02('0x2c')][_0x46e26d[_0x4b02('0x4b')]][_0x4b02('0x133')]=!![];}var _0x5b65e3=_0x5715ac[_0x4b02('0x1f')][_0x46e26d[_0x4b02('0x4b')]];var _0x51884a=_0x5b65e3[_0x4b02('0x6c')]!==utils[_0x4b02('0x6f')]['INACTIVE'];var _0x5b2ea7=utils[_0x4b02('0x134')](_0x5b65e3);_0x5b65e3[_0x4b02('0x135')]=utils[_0x4b02('0x136')](_0x5b65e3,_0x5715ac[_0x4b02('0x22')]);Promise[_0x4b02('0xb0')]()[_0x4b02('0xa4')](function(){if(_0x5b65e3['statusMessage']===utils[_0x4b02('0x6f')][_0x4b02('0x7f')]){if(_0x51884a){clearPredictiveAttributes(_0x5b65e3);_0x46e26d[_0x4b02('0x28')]=undefined;_0x46e26d[_0x4b02('0x66')]=undefined;}if(_0x5b65e3[_0x4b02('0x135')]===utils['CAMPAIGN_STATUS']['INACTIVE']){_0x46e26d[_0x4b02('0x137')]=0x0;_0x46e26d[_0x4b02('0xf7')]=0x0;_0x46e26d[_0x4b02('0x138')]=0x0;_0x46e26d['talking']=0x0;_0x46e26d[_0x4b02('0x139')]=0x0;}}else if(_0x5b65e3[_0x4b02('0x135')]===utils[_0x4b02('0x6f')][_0x4b02('0x13a')]&&!_0x5b2ea7){return _0x5715ac[_0x4b02('0x96')](_0x5b65e3,!![])[_0x4b02('0xa4')](function(){return _0x5715ac['ifTime'](_0x5b65e3,![]);})[_0x4b02('0xa4')](function(){return _0x5715ac[_0x4b02('0xb5')](_0x5b65e3);})[_0x4b02('0xa3')](function(_0x46a692){loggerSyncQueueSummary[_0x4b02('0x47')](_0x4b02('0x13b'),util[_0x4b02('0x49')](_0x46a692,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x5b65e3);});}else{clearPredictiveAttributes(_0x5b65e3);}})[_0x4b02('0xa4')](function(){var _0x37ad2b=_0x46e26d['compareToOutboundQueue'](_0x5b65e3);if(_0x37ad2b||_0x5b65e3[_0x4b02('0x13c')]){_0x5b65e3[_0x4b02('0x13c')]=![];_0x46e26d[_0x4b02('0x13d')](_0x5b65e3);Object[_0x4b02('0x13e')](_0x5b65e3,_0x46e26d);emitOutboundVoiceQueueSummary(_0x46e26d);}_0x5715ac[_0x4b02('0x2c')][_0x5b65e3['name']][_0x4b02('0x133')]=![];})[_0x4b02('0xa3')](function(_0x3b419e){logger[_0x4b02('0x6a')]('[syncQueueSummary]',util[_0x4b02('0x49')](_0x3b419e,{'showHidden':![],'depth':null}));_0x5715ac[_0x4b02('0x2c')][_0x5b65e3[_0x4b02('0x4b')]]['running']=![];});};Dialer['prototype']['syncQueueSummaryComplete']=_[_0x4b02('0x13f')](function(){var _0x4ab08a=_[_0x4b02('0x140')](this['voiceQueues'],function(_0x154b58){return _0x154b58[_0x4b02('0x141')];});var _0x232e72=_[_0x4b02('0x140')](this[_0x4b02('0x21')],function(_0x1ea245){return _0x1ea245['online']&&_0x1ea245[_0x4b02('0x88')]===_0x4b02('0x89');});if(_0x4ab08a[_0x4b02('0x9b')]>0x0&&_0x232e72[_0x4b02('0x9b')]>0x0){return Promise['resolve']()[_0x4b02('0xa4')](cmHopper['handlePreviewRecallNotifications'](_[_0x4b02('0x142')](_0x4ab08a,'id'),previewRecallmeReminderInterval,_[_0x4b02('0x142')](_0x232e72,'id')))[_0x4b02('0xa4')](function(_0x8e07cf){for(var _0x132a66=0x0;_0x132a66<_0x8e07cf['length'];_0x132a66++){var _0x19ff4=_0x8e07cf[_0x132a66][_0x4b02('0x143')]['name'];if(_0x19ff4)io['to'](util['format'](_0x4b02('0x144'),_0x19ff4))[_0x4b02('0x45')](_0x4b02('0x145'),{'hopper':_0x8e07cf[_0x132a66]});}})['catch'](function(_0x16c2d3){logger['error'](_0x4b02('0x146'),_0x16c2d3);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x4b02('0x1a')]['loopClearZombieChannels']=function(){var _0x40ba9a=this;setInterval(function(){_0x40ba9a['clearZombieChannels'](_0x40ba9a[_0x4b02('0x26')],_0x4b02('0x147'));_0x40ba9a[_0x4b02('0x148')](_0x40ba9a['actions'],_0x4b02('0x149'));},0x32c8);};Dialer[_0x4b02('0x1a')][_0x4b02('0x148')]=function(_0x58663b,_0x627187){var _0x2950d9=this;for(var _0x35ff49 in _0x58663b){if(typeof _0x58663b[_0x35ff49]!==_0x4b02('0x14a')){this[_0x4b02('0x1d')][_0x4b02('0x1b')](function(){if(!_[_0x4b02('0xf5')](_0x58663b[_0x35ff49])){return ami['Action']({'action':_0x4b02('0x88'),'channel':_0x58663b[_0x35ff49]['channel']})['catch'](function(_0x20c6cc){if(_0x20c6cc[_0x4b02('0x6c')]===_0x4b02('0x14b')){setTimeout(function(){if(_0x58663b[_0x35ff49]&&_0x58663b[_0x35ff49]['type']!==_0x4b02('0xc5')){_0x2950d9[_0x4b02('0xfd')](_0x2950d9['voiceQueues'][_0x58663b[_0x35ff49][_0x4b02('0xc3')]]);logger['error']('[Dialer][checkChannel]',_0x627187,_0x35ff49,_0x58663b[_0x35ff49][_0x4b02('0xc3')]);delete _0x58663b[_0x35ff49];}if(_0x58663b[_0x35ff49]&&_0x58663b[_0x35ff49][_0x4b02('0x46')]==='ivr'){_0x2950d9[_0x4b02('0xfd')](_0x2950d9[_0x4b02('0x20')][_0x58663b[_0x35ff49][_0x4b02('0xc3')]]);logger[_0x4b02('0x6a')](_0x4b02('0x14c'),_0x627187,_0x35ff49,_0x58663b[_0x35ff49]['queue']);delete _0x58663b[_0x35ff49];}},0x2328);}});}});}}};Dialer[_0x4b02('0x1a')][_0x4b02('0x14d')]=function(_0xd3991a){return Promise[_0x4b02('0xb0')]()[_0x4b02('0xa4')](voiceQueueRt[_0x4b02('0x14d')](_0xd3991a))[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x14e')));};Dialer[_0x4b02('0x1a')]['updateOriginated']=function(_0x5b1cb1){if(!_[_0x4b02('0x44')](_0x5b1cb1)&&_0x5b1cb1!==null){if(typeof _0x5b1cb1[_0x4b02('0x82')]!==_0x4b02('0x14a')){if(_0x5b1cb1[_0x4b02('0x82')]>0x0){_0x5b1cb1[_0x4b02('0x82')]-=0x1;}else{logger[_0x4b02('0x6a')](_0x4b02('0x14f'));}}}else{logger[_0x4b02('0x6a')](_0x4b02('0x150'));}};Dialer['prototype'][_0x4b02('0x151')]=function(_0x106546,_0x17697e){var _0x18502e=this;return function(_0x5a2f79){_0x18502e[_0x4b02('0xfd')](_0x17697e);logger[_0x4b02('0x6a')](_0x106546,util[_0x4b02('0x49')](_0x5a2f79,{'showHidden':![],'depth':null}));};};Dialer[_0x4b02('0x1a')][_0x4b02('0x152')]=function(_0xbc32a3,_0x5adca1,_0x34347c){var _0x3eda3b={'state':0x19,'statedesc':_0x4b02('0x153')};this['updateOriginated'](_0x5adca1);this[_0x4b02('0x118')](_[_0x4b02('0x64')](_0x3eda3b,_[_0x4b02('0x79')](_0x34347c,[_0x4b02('0xe0'),_0x4b02('0xe1'),_0x4b02('0x154'),'VoiceQueueId',_0x4b02('0xe3')])),_0x4b02('0x155'),_0x4b02('0x156'));logger[_0x4b02('0x6a')](_0xbc32a3);};Dialer['prototype'][_0x4b02('0x118')]=function(_0xe8898a,_0xd43b2d,_0x214c5e){hopperUtils[_0x4b02('0xcc')](_0xe8898a)[_0x4b02('0xa3')](loggerCatch(_0xd43b2d));hopperUtils[_0x4b02('0xce')](_0xe8898a)[_0x4b02('0xa3')](loggerCatch(_0x214c5e));};Dialer[_0x4b02('0x1a')]['queueCallerAbandonCreateState']=function(_0x277a28,_0x95f53c){hopperUtils['createHistory'](_0x277a28)[_0x4b02('0xa3')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x95f53c==0x0){hopperUtils[_0x4b02('0xce')](_0x277a28)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer['prototype'][_0x4b02('0x146')]=function(_0x29fec1){return Promise[_0x4b02('0xb0')]()[_0x4b02('0xa4')](cmHopper[_0x4b02('0x157')](_0x29fec1['id'],previewRecallmeReminderInterval))[_0x4b02('0xa4')](function(_0x51e3de){for(var _0x3d27ff=0x0;_0x3d27ff<_0x51e3de[_0x4b02('0x9b')];_0x3d27ff++){var _0x4488f5=_0x51e3de[_0x3d27ff][_0x4b02('0x143')][_0x4b02('0x4b')];if(_0x4488f5)io['to'](util['format'](_0x4b02('0x144'),_0x4488f5))[_0x4b02('0x45')](_0x4b02('0x145'),{'hopper':_0x51e3de[_0x3d27ff]});}})[_0x4b02('0xa3')](function(){});};Dialer['prototype'][_0x4b02('0xb4')]=function(_0x40b404){var _0x42ab6e=this;return function(){_0x42ab6e[_0x4b02('0x158')](_0x40b404);};};Dialer[_0x4b02('0x1a')][_0x4b02('0x159')]=function(_0x5162bb,_0x211c2d){var _0x4f0f0c=this;var _0x3ba199=uuid['v4']();this[_0x4b02('0x24')][_0x3ba199]=new Action(_0x5162bb,_0x211c2d,_0x3ba199);return new Promise(function(_0x4e6d24,_0x4837ba){if(_['isUndefined'](_0x5162bb)&&typeof _0x5162bb!==_0x4b02('0x15a')){return _0x4837ba(msgResponse(_0x4b02('0x15b'),_0x4b02('0x93'),'voiceQueue\x20is\x20undefine'));}if(_[_0x4b02('0x44')](_0x211c2d['phone'])||_0x211c2d[_0x4b02('0x15c')]===null){return _0x4837ba(msgResponse(_0x4b02('0x15b'),_0x4b02('0x93'),'contact\x20is\x20undefine'));}var _0x1c2f32={'XMD-CALLERID':_0x4f0f0c[_0x4b02('0x24')][_0x3ba199][_0x4b02('0x15d')](),'XMD-AGI':_0x5162bb[_0x4b02('0x12d')]?util[_0x4b02('0x4a')](_0x4b02('0x15e'),ipAgi,_0x5162bb['dialQueueProject']):_0x4b02('0x15f'),'XMD-AGIAFTER':_0x5162bb[_0x4b02('0xca')]?util['format'](_0x4b02('0x15e'),ipAgi,_0x5162bb[_0x4b02('0xca')]):_0x4b02('0x15f'),'XMD-QUEUE':utils[_0x4b02('0x160')](_0x5162bb)?util[_0x4b02('0x4a')](_0x4b02('0x161'),_0x5162bb['name'],_0x5162bb[_0x4b02('0x162')]||'',_0x5162bb[_0x4b02('0xcb')]?'c':'',_0x5162bb[_0x4b02('0xd2')]||0x3):_0x4b02('0x15f'),'XMD-CONTACTID':_0x211c2d[_0x4b02('0xe0')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x4f0f0c[_0x4b02('0x24')][_0x3ba199][_0x4b02('0x15d')](),'XMD-AMD':_0x5162bb[_0x4b02('0x10e')]?_0x4b02('0x13a'):_0x4b02('0x15f'),'XMD-DESTINATION':_0x4b02('0x10d')};if(_0x5162bb[_0x4b02('0x10e')]){_0x1c2f32[_0x4b02('0x163')]=_0x5162bb[_0x4b02('0x164')]||0x9c4;_0x1c2f32[_0x4b02('0x165')]=_0x5162bb[_0x4b02('0x166')]||0x5dc;_0x1c2f32['XMD-AMDAFTERGREETINGSILENCE']=_0x5162bb[_0x4b02('0x167')]||0x320;_0x1c2f32['XMD-AMDTOTALANALYSISTIME']=_0x5162bb[_0x4b02('0x168')]||0x1388;_0x1c2f32[_0x4b02('0x169')]=_0x5162bb['dialAMDMinWordLength']||0x64;_0x1c2f32[_0x4b02('0x16a')]=_0x5162bb[_0x4b02('0x16b')]||0x32;_0x1c2f32[_0x4b02('0x16c')]=_0x5162bb[_0x4b02('0x16d')]||0x3;_0x1c2f32[_0x4b02('0x16e')]=_0x5162bb[_0x4b02('0x16f')]||0x100;_0x1c2f32[_0x4b02('0x170')]=_0x5162bb[_0x4b02('0x171')]||0x1388;}if(utils[_0x4b02('0x160')](_0x5162bb)){_0x1c2f32['XMD-VOICEQUEUEID']=_0x211c2d[_0x4b02('0xe2')];}else{_0x1c2f32[_0x4b02('0x172')]=_0x211c2d[_0x4b02('0xe3')];}for(var _0x3ee40d in _0x211c2d[_0x4b02('0x173')]){if(typeof _0x211c2d[_0x4b02('0x173')][_0x3ee40d]!=='undefined'){if(isNotNull(_0x211c2d['Contact'][_0x3ee40d])&&_0x3ee40d!=='id'&&_0x3ee40d!==_0x4b02('0x174')&&_0x3ee40d!=='createdAt'&&_0x3ee40d!==_0x4b02('0x175')){_0x1c2f32[util[_0x4b02('0x4a')](_0x4b02('0x176'),'XMD-',_[_0x4b02('0x177')](_0x3ee40d))]=_0x211c2d[_0x4b02('0x173')][_0x3ee40d];}}}var _0xb0bf0c=_0x4f0f0c['isTrunkReachable'](_0x5162bb[_0x4b02('0x8c')])?utils[_0x4b02('0x178')](_0x5162bb['Trunk'][_0x4b02('0x179')],_0x5162bb[_0x4b02('0x17a')],_0x5162bb['dialRandomLastDigitCallerIdNumber']>0x0?utils[_0x4b02('0x17b')](_0x5162bb[_0x4b02('0x17c')],_0x5162bb[_0x4b02('0x17d')]):_0x5162bb[_0x4b02('0x17c')]):utils[_0x4b02('0x178')](_[_0x4b02('0xf5')](_0x5162bb[_0x4b02('0x8d')])?_0x5162bb[_0x4b02('0x8c')]['callerid']:_0x5162bb['TrunkBackup'][_0x4b02('0x179')],_0x5162bb[_0x4b02('0x17a')],_0x5162bb['dialRandomLastDigitCallerIdNumber']>0x0?utils[_0x4b02('0x17b')](_0x5162bb['dialOriginateCallerIdNumber'],_0x5162bb[_0x4b02('0x17d')]):_0x5162bb[_0x4b02('0x17c')]);if(_0xb0bf0c){_0x1c2f32['XMD-ORIGINATECALLERIDNAME']=_0x4f0f0c[_0x4b02('0x24')][_0x3ba199]['originatecalleridname']=utils['extractCalleridName'](_0xb0bf0c);_0x1c2f32[_0x4b02('0x17e')]=_0x211c2d['phone'];}_0x5162bb[_0x4b02('0x17f')]=_0x1c2f32;return ami[_0x4b02('0x9d')]({'actionid':_0x3ba199,'action':'originate','channel':_0x4f0f0c[_0x4b02('0x87')](_0x5162bb['Trunk'])?util[_0x4b02('0x4a')]('SIP/%s/%s%s',_0x5162bb[_0x4b02('0x8c')][_0x4b02('0x4b')],isNotNull(_0x5162bb[_0x4b02('0x180')])?_0x5162bb[_0x4b02('0x180')][_0x4b02('0x181')]()||'':'',_0x5162bb[_0x4b02('0x182')]>0x0?_0x211c2d['phone']['substring'](_0x5162bb['dialCutDigit']):_0x211c2d['phone']):util['format']('SIP/%s/%s%s',_[_0x4b02('0xf5')](_0x5162bb[_0x4b02('0x8d')])?_0x5162bb[_0x4b02('0x8c')][_0x4b02('0x4b')]:_0x5162bb['TrunkBackup']['name'],isNotNull(_0x5162bb['dialPrefix'])?_0x5162bb['dialPrefix']['trim']()||'':'',_0x5162bb[_0x4b02('0x182')]>0x0?_0x211c2d['phone'][_0x4b02('0x183')](_0x5162bb['dialCutDigit']):_0x211c2d[_0x4b02('0x15c')]),'callerid':_0xb0bf0c,'Exten':_0x4b02('0x10d'),'Context':_0x4b02('0x184'),'Priority':'1','variable':_0x1c2f32,'timeout':(_0x5162bb[_0x4b02('0x185')]||0x1e)*0x3e8,'async':!![],'channelid':_0x3ba199})[_0x4b02('0xa4')](function(_0x51a746){return _0x4e6d24(_0x51a746);})[_0x4b02('0xa3')](function(_0x43ac3e){_0x5162bb['outboundOriginateFailureCallsDay']+=0x1;var _0x17f6a8=new History(_0x4f0f0c['actions'][_0x3ba199]);logger[_0x4b02('0x6a')](util[_0x4b02('0x4a')](_0x4b02('0x186'),JSON[_0x4b02('0x78')](_0x43ac3e)));_0x17f6a8[_0x4b02('0x71')]=0xe;_0x17f6a8[_0x4b02('0x72')]=_0x4b02('0x187');_0x17f6a8[_0x4b02('0x74')]=moment()[_0x4b02('0x4a')](_0x4b02('0xc6'));_0x17f6a8[_0x4b02('0x73')]=_0x17f6a8[_0x4b02('0x74')];hopperUtils['createHistory'](_0x17f6a8)['catch'](loggerCatch(_0x4b02('0x188')));_0x4f0f0c[_0x4b02('0xce')](_0x17f6a8)[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x188')))[_0x4b02('0x189')](function(){delete _0x4f0f0c[_0x4b02('0x24')][_0x3ba199];return _0x4837ba(msgResponse(_0x4b02('0x15b'),_0x4b02('0x86'),_0x4b02('0x18a')));});});});};Dialer[_0x4b02('0x1a')][_0x4b02('0x18b')]=function(_0x343826,_0x203adb,_0x3afb8b){var _0xe61326=new History(_0x203adb);if(_0xe61326['countbusyretry']+_0xe61326[_0x4b02('0x11f')]+_0xe61326[_0x4b02('0x120')]+_0xe61326[_0x4b02('0x121')]+_0xe61326[_0x4b02('0xdb')]+_0xe61326[_0x4b02('0xed')]+_0xe61326[_0x4b02('0x11c')]+_0xe61326['countagentrejectretry']>=_0x3afb8b[_0x4b02('0x123')]-0x1){return!![];}switch(_0x343826){case 0x3:if(_0xe61326[_0x4b02('0x120')]>=_0x3afb8b[_0x4b02('0x18c')]-0x1){return!![];}hopperUtils[_0x4b02('0xdc')]({'active':![],'countnoanswerretry':_0xe61326[_0x4b02('0x120')]+=0x1,'scheduledat':moment()[_0x4b02('0xdd')](_0x3afb8b[_0x4b02('0x18d')],_0x4b02('0xdf'))[_0x4b02('0x4a')](_0x4b02('0xc6')),'ContactId':_0xe61326[_0x4b02('0xe0')],'ListId':_0xe61326['ListId'],'VoiceQueueId':_0xe61326[_0x4b02('0xe2')]||undefined,'CampaignId':_0xe61326[_0x4b02('0xe3')]||undefined})['catch'](loggerCatch(_0x4b02('0x18e')));break;case 0x5:if(_0xe61326[_0x4b02('0x11e')]>=_0x3afb8b['dialBusyMaxRetry']-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countbusyretry':_0xe61326[_0x4b02('0x11e')]+=0x1,'scheduledat':moment()[_0x4b02('0xdd')](_0x3afb8b['dialBusyRetryFrequency'],_0x4b02('0xdf'))['format'](_0x4b02('0xc6')),'ContactId':_0xe61326[_0x4b02('0xe0')],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326[_0x4b02('0xe2')]||undefined,'CampaignId':_0xe61326[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x18f')));break;case 0x8:if(_0xe61326[_0x4b02('0x11f')]>=_0x3afb8b[_0x4b02('0x190')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countcongestionretry':_0xe61326[_0x4b02('0x11f')]+=0x1,'scheduledat':moment()[_0x4b02('0xdd')](_0x3afb8b[_0x4b02('0x191')],_0x4b02('0xdf'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe61326[_0x4b02('0xe0')],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326['VoiceQueueId']||undefined,'CampaignId':_0xe61326[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x192')));break;case 0x0:if(_0xe61326['countnosuchnumberretry']>=_0x3afb8b[_0x4b02('0x193')]-0x1){return!![];}else{hopperUtils[_0x4b02('0xdc')]({'active':![],'countnosuchnumberretry':_0xe61326[_0x4b02('0x121')]+=0x1,'scheduledat':moment()[_0x4b02('0xdd')](_0x3afb8b[_0x4b02('0x194')],_0x4b02('0xdf'))[_0x4b02('0x4a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe61326['ContactId'],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326[_0x4b02('0xe2')]||undefined,'CampaignId':_0xe61326['CampaignId']||undefined})['catch'](loggerCatch(_0x4b02('0x195')));}break;case 0xa:if(_0xe61326[_0x4b02('0xdb')]>=_0x3afb8b[_0x4b02('0x196')]-0x1){return!![];}hopperUtils[_0x4b02('0xdc')]({'active':![],'countdropretry':_0xe61326[_0x4b02('0xdb')]+=0x1,'scheduledat':moment()['add'](_0x3afb8b[_0x4b02('0xde')],_0x4b02('0xdf'))[_0x4b02('0x4a')](_0x4b02('0xc6')),'ContactId':_0xe61326[_0x4b02('0xe0')],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326[_0x4b02('0xe2')]||undefined,'CampaignId':_0xe61326[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0xe4')));break;case 0xb:if(_0xe61326['countabandonedretry']>=_0x3afb8b[_0x4b02('0xee')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0xe61326[_0x4b02('0xed')]+=0x1,'scheduledat':moment()[_0x4b02('0xdd')](_0x3afb8b[_0x4b02('0x197')],'minutes')['format'](_0x4b02('0xc6')),'ContactId':_0xe61326['ContactId'],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326[_0x4b02('0xe2')]||undefined,'CampaignId':_0xe61326[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x198')));break;case 0x13:if(_0xe61326['countmachineretry']>=_0x3afb8b['dialMachineMaxRetry']-0x1){return!![];}hopperUtils[_0x4b02('0xdc')]({'active':![],'countmachineretry':_0xe61326[_0x4b02('0x11c')]+=0x1,'scheduledat':moment()[_0x4b02('0xdd')](_0x3afb8b[_0x4b02('0x199')],_0x4b02('0xdf'))[_0x4b02('0x4a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe61326['ContactId'],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326['VoiceQueueId']||undefined,'CampaignId':_0xe61326[_0x4b02('0xe3')]||undefined})[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x128')));break;case 0x14:if(_0xe61326[_0x4b02('0x122')]>=_0x3afb8b[_0x4b02('0x19a')]-0x1){return!![];}hopperUtils[_0x4b02('0xdc')]({'active':![],'countagentrejectretry':_0xe61326[_0x4b02('0x122')]+=0x1,'scheduledat':moment()['add'](_0x3afb8b[_0x4b02('0x19b')],'minutes')[_0x4b02('0x4a')](_0x4b02('0xc6')),'ContactId':_0xe61326[_0x4b02('0xe0')],'ListId':_0xe61326[_0x4b02('0xe1')],'VoiceQueueId':_0xe61326[_0x4b02('0xe2')]||undefined,'CampaignId':_0xe61326['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x4b02('0x1a')]['callProgressDetecting']=function(_0x5d3ce1,_0x50ec69,_0x518c89){var _0x22a2a3=this;var _0x506202=new History(_0x5d3ce1);var _0x54aba6=![];var _0x319540;var _0x580db5;return new Promise(function(_0xeee6c9,_0x21e8b9){if(_[_0x4b02('0x44')](_0x50ec69)&&typeof _0x50ec69!==_0x4b02('0x15a')){return _0x21e8b9(msgResponse('[callProgressDetecting]',_0x4b02('0x93'),_0x4b02('0x19c')));}if(_['isUndefined'](_0x518c89)&&typeof _0x518c89!==_0x4b02('0x15a')){return _0x21e8b9(msgResponse(_0x4b02('0x19d'),_0x4b02('0x93'),_0x4b02('0x19e')));}hopperUtils[_0x4b02('0xd9')](_0x506202,_0x518c89[_0x4b02('0xc8')],_0x50ec69)[_0x4b02('0xa4')](function(_0x5f1f70){if(_0x5f1f70[_0x4b02('0xda')]==0x1)_0x54aba6=!![];switch(_0x518c89['reason']){case'0':_0x50ec69[_0x4b02('0x19f')]+=0x1;_0x506202['state']=0x0;_0x506202['statedesc']='NoSuchNumber';_0x506202[_0x4b02('0x121')]+=0x1;_0x506202[_0x4b02('0xd8')]+=0x1;ami[_0x4b02('0x45')]('custom:agentnosuchnumber',ut[_0x4b02('0x116')](_0x5d3ce1,'nosuchnumber'));_0x319540=_0x50ec69['dialNoSuchNumberRetryFrequency'];_0x580db5=_0x50ec69[_0x4b02('0xeb')];hopperUtils[_0x4b02('0xcc')](_0x506202)[_0x4b02('0xa3')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x22a2a3[_0x4b02('0x18b')](0x0,_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202[_0x4b02('0x121')]>=_0x50ec69[_0x4b02('0x193')]){_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1a0'));}else{_0x22a2a3[_0x4b02('0x12b')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1a0'));}}break;case'3':_0x50ec69[_0x4b02('0x1a1')]+=0x1;_0x506202['state']=0x3;_0x506202['statedesc']='NoAnswer';_0x506202[_0x4b02('0x120')]+=0x1;_0x506202['countglobal']+=0x1;var _0x340cc4=ut[_0x4b02('0x1a2')](_0x5d3ce1,_0x50ec69);ami[_0x4b02('0x45')]('custom:agentnoanswer',_0x340cc4);_0x319540=_0x50ec69[_0x4b02('0x18d')];_0x580db5=_0x50ec69['callAdditionalPhoneAfterMin'];hopperUtils[_0x4b02('0xcc')](_0x506202)[_0x4b02('0xa3')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x22a2a3[_0x4b02('0x18b')](0x3,_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202['countnoanswerretry']>=_0x50ec69['dialNoAnswerMaxRetry']){_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1a3'));}else{_0x22a2a3[_0x4b02('0x12b')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1a3'));}}break;case'5':_0x50ec69[_0x4b02('0x1a4')]+=0x1;_0x506202['state']=0x5;_0x506202['statedesc']=_0x4b02('0x1a5');_0x506202[_0x4b02('0x11e')]+=0x1;_0x506202[_0x4b02('0xd8')]+=0x1;ami[_0x4b02('0x45')](_0x4b02('0x1a6'),ut['buildObj'](_0x5d3ce1,_0x4b02('0x1a7')));_0x319540=_0x50ec69[_0x4b02('0x1a8')];_0x580db5=_0x50ec69[_0x4b02('0xeb')];hopperUtils[_0x4b02('0xcc')](_0x506202)['catch'](loggerCatch(_0x4b02('0x1a9')));if(_0x22a2a3[_0x4b02('0x18b')](0x5,_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202[_0x4b02('0x11e')]>=_0x50ec69[_0x4b02('0x1aa')]){_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1ab'));}else{_0x22a2a3[_0x4b02('0x12b')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1ab'));}}break;case'8':_0x50ec69[_0x4b02('0x1ac')]+=0x1;_0x506202[_0x4b02('0x71')]=0x8;_0x506202[_0x4b02('0x72')]=_0x4b02('0x1ad');_0x506202[_0x4b02('0x11f')]+=0x1;_0x506202['countglobal']+=0x1;_0x319540=_0x50ec69['dialCongestionRetryFrequency'];_0x580db5=_0x50ec69[_0x4b02('0xeb')];ami[_0x4b02('0x45')](_0x4b02('0x1ae'),ut[_0x4b02('0x116')](_0x5d3ce1,_0x4b02('0x1af')));hopperUtils[_0x4b02('0xcc')](_0x506202)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x22a2a3['checkRetriveMax'](0x8,_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202[_0x4b02('0x11f')]>=_0x50ec69['dialCongestionMaxRetry']){_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1b0'));}else{_0x22a2a3['stateGlobal'](_0x506202,_0xeee6c9,_0x21e8b9,'reason\x208\x20congestion');}}break;case'11':_0x50ec69['outboundAbandonedCallsDay']+=0x1;_0x506202[_0x4b02('0x71')]=0xb;_0x506202['statedesc']=_0x4b02('0xe9');_0x506202[_0x4b02('0xed')]+=0x1;_0x506202[_0x4b02('0xd8')]+=0x1;_0x319540=_0x50ec69[_0x4b02('0x197')];_0x580db5=_0x50ec69[_0x4b02('0xeb')];hopperUtils[_0x4b02('0xcc')](_0x506202)['catch'](loggerCatch(_0x4b02('0xf0')));if(_0x22a2a3['checkRetriveMax'](0xb,_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202['countabandonedretry']>=_0x50ec69[_0x4b02('0xee')]){_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,'reason\x2011\x20abandoned');}else{_0x22a2a3['stateGlobal'](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1b1'));}}break;case'20':_0x50ec69[_0x4b02('0x1b2')]+=0x1;_0x506202['state']=0x14;_0x506202['statedesc']=_0x4b02('0x1b3');_0x506202[_0x4b02('0x122')]+=0x1;_0x506202[_0x4b02('0xd8')]+=0x1;_0x319540=_0x50ec69[_0x4b02('0x19b')];_0x580db5=_0x50ec69['callAdditionalPhoneAfterMin'];ami['emit'](_0x4b02('0x1b4'),ut['buildObj'](_0x5d3ce1,_0x4b02('0x1b5')));hopperUtils['createHistory'](_0x506202)[_0x4b02('0xa3')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x22a2a3[_0x4b02('0x18b')](0x14,_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202[_0x4b02('0x122')]>=_0x50ec69['dialAgentRejectMaxRetry']){_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,_0x4b02('0x1b6'));}else{_0x22a2a3[_0x4b02('0x12b')](_0x506202,_0xeee6c9,_0x21e8b9,'reason\x2020\x20agentreject');}}break;default:_0x50ec69[_0x4b02('0x1b7')]+=0x1;_0x506202[_0x4b02('0x71')]=0xc;_0x506202[_0x4b02('0x72')]=_0x518c89[_0x4b02('0xc8')];_0x319540=_0x50ec69['dialAgentRejectRetryFrequency'];_0x580db5=_0x50ec69[_0x4b02('0xeb')];hopperUtils['createHistory'](_0x506202)['catch'](loggerCatch(_0x4b02('0x1b8')));if(_0x22a2a3[_0x4b02('0x18b')](_0x518c89['reason'],_0x5d3ce1,_0x50ec69)&&!_0x54aba6){if(_0x506202['countbusyretry']+_0x506202[_0x4b02('0x11f')]+_0x506202[_0x4b02('0x120')]+_0x506202['countnosuchnumberretry']+_0x506202[_0x4b02('0xdb')]+_0x506202[_0x4b02('0xed')]+_0x506202[_0x4b02('0x11c')]+_0x506202[_0x4b02('0x122')]>=_0x50ec69[_0x4b02('0x123')]){_0x22a2a3[_0x4b02('0x12b')](_0x506202,_0xeee6c9,_0x21e8b9,_0x518c89[_0x4b02('0xc8')]);}else{_0x22a2a3[_0x4b02('0x126')](_0x506202,_0xeee6c9,_0x21e8b9,_0x518c89['reason']);}}}})[_0x4b02('0xa4')](function(){if(_0x54aba6){hopperUtils[_0x4b02('0xe7')](_0x506202,_0x319540,_0x580db5)[_0x4b02('0xa4')](function(){return _0xeee6c9(0x1);});}});});};Dialer[_0x4b02('0x1a')][_0x4b02('0x12b')]=function(_0x4f6576,_0x33a565,_0x209816,_0x3861dd){var _0x25bbd5=new Final(_0x4f6576);_0x25bbd5[_0x4b02('0x71')]=0xf;_0x25bbd5[_0x4b02('0x72')]='Global';this['createStateFinal'](_0x25bbd5,_0x33a565,_0x209816,_0x3861dd);};Dialer[_0x4b02('0x1a')]['createStateFinal']=function(_0x780c27,_0x2defb4,_0x3ccc91,_0x4bdd06){hopperUtils[_0x4b02('0xce')](_0x780c27)[_0x4b02('0xa4')](function(){return _0x2defb4(msgResponse(_0x4b02('0x19d'),'Success',_0x4bdd06));})[_0x4b02('0xa3')](function(){return _0x3ccc91(msgResponse(_0x4b02('0x1b9'),_0x4b02('0x93'),'contact\x20not\x20moved'));});};Dialer[_0x4b02('0x1a')][_0x4b02('0xba')]=function(_0x42286d){var _0x18c3d6=_0x42286d[_0x4b02('0x1ba')]/0x64;var _0x1bcead=_0x42286d[_0x4b02('0xd3')]/(_0x42286d['outboundDropCallsDayTimeout']+_0x42286d[_0x4b02('0xc7')]);var _0x5d82e4=Math[_0x4b02('0x1bb')](_0x42286d[_0x4b02('0x1bc')]*(_0x42286d[_0x4b02('0x1bd')]/0x64));var _0x23edf1=Math[_0x4b02('0x1bb')](_0x42286d[_0x4b02('0x1bc')]*(_0x42286d[_0x4b02('0x1be')]/0x64));var _0x1337e8=_0x42286d[_0x4b02('0x137')]+_0x42286d[_0x4b02('0x1bf')];var _0x5e9968=Math[_0x4b02('0x1c0')](_0x42286d[_0x4b02('0x5c')]*_0x42286d[_0x4b02('0x60')]*_0x42286d['predictiveIntervalHitRate']*_0x42286d['predictiveIntervalMultiplicativeFactor']);if(_[_0x4b02('0x44')](_0x42286d[_0x4b02('0x66')])){if(!_['isUndefined'](_0x42286d[_0x4b02('0x28')])){_0x42286d[_0x4b02('0x28')]=undefined;loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0x4b02('0x1c1'));}if(!_[_0x4b02('0x44')](_0x42286d[_0x4b02('0x69')])){loggerPredictive[_0x4b02('0x6a')](_0x4b02('0x1c2'),_0x4b02('0x1c3'));clearInterval(_0x42286d[_0x4b02('0x69')]);_0x42286d[_0x4b02('0x69')]=undefined;}_0x42286d[_0x4b02('0x66')]=moment()[_0x4b02('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x4b02('0x4c')](_0x42286d[_0x4b02('0x4b')],_0x4b02('0x1c4'),_0x42286d[_0x4b02('0x66')]);this['handlePower'](_0x42286d,0x1);}else if(ifInterval(_0x42286d['dialPredictiveInterval'],_0x42286d[_0x4b02('0x66')])){this['handlePower'](_0x42286d,0x1);loggerPredictiveCalls[_0x4b02('0x4c')]('[startMethodPredictive][StartProgressive][Loop]',_0x42286d['startProgressive'],_0x42286d[_0x4b02('0x4b')]);_0x42286d[_0x4b02('0x5c')]=0x0;_0x42286d[_0x4b02('0xd4')]=0x0;}else if(_0x18c3d6<_0x1bcead&&_0x42286d[_0x4b02('0x1c5')]===_0x4b02('0x1c6')){clearPredictiveAttributes(_0x42286d);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x1c7'),_0x4b02('0x1c8'),_0x1bcead,_0x4b02('0x66'),_0x42286d[_0x4b02('0x4b')]);}else if(_0x5e9968<_0x42286d[_0x4b02('0xd4')]&&_0x42286d[_0x4b02('0x1c5')]==='dropRate'){clearPredictiveAttributes(_0x42286d);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x1c9'),'Max\x20Drop\x20',_0x5e9968,_0x4b02('0x1ca'),_0x42286d[_0x4b02('0xd4')],_0x4b02('0x66'),_0x42286d['name']);}else if(!ifInterval(_0x42286d['dialPredictiveInterval'],_0x42286d['startProgressive'])&&_[_0x4b02('0x44')](_0x42286d[_0x4b02('0x28')])&&!_[_0x4b02('0x44')](_0x42286d['startProgressive'])){_0x42286d[_0x4b02('0x28')]=moment()[_0x4b02('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x4b02('0x4c')](_0x42286d[_0x4b02('0x4b')],_0x4b02('0x1cb'),_0x42286d[_0x4b02('0x28')]);hopperUtils[_0x4b02('0x1cc')](_0x42286d[_0x4b02('0x1cd')])[_0x4b02('0xa4')](this[_0x4b02('0x1ce')](_0x42286d))[_0x4b02('0xa4')](mergeDataErlangB(_0x42286d))[_0x4b02('0xa4')](this[_0x4b02('0x1cf')](_0x42286d))['catch'](loggerCatchPredictive(_0x4b02('0x1d0'),_0x42286d));}else if(!ifInterval(_0x42286d[_0x4b02('0x1cd')],_0x42286d[_0x4b02('0x28')])){_0x42286d[_0x4b02('0xd4')]=0x0;_0x42286d[_0x4b02('0x28')]=moment()[_0x4b02('0x4a')](_0x4b02('0xc6'));loggerPredictive[_0x4b02('0x4c')](_0x42286d[_0x4b02('0x4b')],_0x4b02('0x1d1'),_0x42286d[_0x4b02('0x28')]);clearInterval(_0x42286d[_0x4b02('0x69')]);_0x42286d[_0x4b02('0x69')]=undefined;hopperUtils['avgHandleTime'](_0x42286d[_0x4b02('0x1cd')])[_0x4b02('0xa4')](this[_0x4b02('0x1ce')](_0x42286d))[_0x4b02('0xa4')](mergeDataErlangB(_0x42286d))['then'](this['startMethodPredictive'](_0x42286d))[_0x4b02('0xa3')](loggerCatchPredictive(_0x4b02('0x1d2'),_0x42286d));}else if(_0x42286d[_0x4b02('0x1bc')]&&_0x1337e8<_0x42286d[_0x4b02('0x1bc')]-_0x23edf1){clearPredictiveAttributes(_0x42286d);loggerPredictive['info'](_0x42286d[_0x4b02('0x4b')],_0x4b02('0x1d3'),_0x1337e8,')\x20are\x20less\x20than\x20threshold\x20(',_0x42286d[_0x4b02('0x1bc')],'-',_0x23edf1,'=',_0x42286d[_0x4b02('0x1bc')]-_0x23edf1,')');}else if(_0x42286d['predictiveIntervalAvailable']&&_0x1337e8>_0x42286d[_0x4b02('0x1bc')]+_0x5d82e4){clearPredictiveAttributes(_0x42286d);loggerPredictive[_0x4b02('0x4c')](_0x42286d[_0x4b02('0x4b')],_0x4b02('0x1d3'),_0x1337e8,')\x20are\x20more\x20than\x20threshold\x20(',_0x42286d[_0x4b02('0x1bc')],'+',_0x5d82e4,'=',_0x42286d[_0x4b02('0x1bc')]+_0x5d82e4,')');}};Dialer['prototype'][_0x4b02('0x1ce')]=function(_0x2e9f19){var _0x702534=this;return function(_0x1e6262){return new Promise(function(_0x2c4e86,_0x1db8ff){_['merge'](_0x2e9f19,_0x1e6262[0x0]);if(checkGetDataPredictive(_0x1e6262[0x0])){var _0x245689=_0x2e9f19['predictiveIntervalAvailable']=_0x2e9f19['talking']+_0x2e9f19['available'];var _0x52ca97=_0x2e9f19[_0x4b02('0x1cd')]*0x3c;var _0x247812=_0x1e6262[0x0][_0x4b02('0x57')]+_0x1e6262[0x0][_0x4b02('0x55')];var _0x26377c=(_0x1e6262[0x0]['predictiveIntervalAnsweredCalls']+_0x1e6262[0x0][_0x4b02('0x53')]+_0x1e6262[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1e6262[0x0][_0x4b02('0x4f')];_0x2e9f19[_0x4b02('0x1d4')]=_0x26377c>0x0?_0x26377c:0x1;switch(_0x2e9f19['dialPredictiveOptimization']){case _0x4b02('0x1c6'):var _0x112c9f=_0x2e9f19[_0x4b02('0x1ba')]/0x64;return _0x702534['abandonmentRate'](_0x245689,_0x52ca97,_0x247812,_0x26377c,_0x112c9f)[_0x4b02('0xa4')](function(_0x31b989){return _0x2c4e86(_0x31b989);});case _0x4b02('0x1d5'):var _0x53fa1f=_0x2e9f19[_0x4b02('0x1ba')]/0x64;return _0x702534[_0x4b02('0x1d6')](_0x245689,_0x52ca97,_0x247812,_0x26377c,_0x53fa1f)[_0x4b02('0xa4')](function(_0x1c7478){return _0x2c4e86(_0x1c7478);});default:return _0x1db8ff(msgResponse(_0x4b02('0x1d7'),_0x4b02('0x93'),_0x4b02('0x1d8')));}}else{return _0x1db8ff(msgResponse(_0x4b02('0x1d7'),_0x4b02('0x93'),_0x4b02('0x1d9')));}});};};Dialer['prototype'][_0x4b02('0x1da')]=function(_0x5a1afb){var _0x15fd4c=this;return function(_0x803293){return new Promise(function(_0x2ce405,_0x405544){_['merge'](_0x5a1afb,_0x803293[0x0]);if(checkGetDataPredictive(_0x803293[0x0])){loggerPredictive[_0x4b02('0x4c')](JSON['stringify'](_0x803293[0x0]));if(_0x5a1afb[_0x4b02('0x1c5')]===_0x4b02('0x1c6')){return _0x15fd4c[_0x4b02('0x14d')](_0x5a1afb['id'])[_0x4b02('0xa4')](function(_0x349faf){var _0xcba355=_0x5a1afb[_0x4b02('0x1db')]-_0x349faf[0x0][_0x4b02('0x1dc')];var _0x20575a=_0x5a1afb[_0x4b02('0x1cd')]*0x3c;var _0x9b9a88=_0x803293[0x0][_0x4b02('0x57')]+_0x803293[0x0][_0x4b02('0x55')];var _0xabd000=(_0x803293[0x0]['predictiveIntervalAnsweredCalls']+_0x803293[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x803293[0x0][_0x4b02('0xe8')])/_0x803293[0x0][_0x4b02('0x4f')];var _0x222102=_0x5a1afb[_0x4b02('0x1ba')]/0x64;_0x5a1afb[_0x4b02('0x1dd')]=_0x349faf[0x0][_0x4b02('0x1dc')]||0x0;_0x5a1afb[_0x4b02('0x1d4')]=_0xabd000>0x0?_0xabd000:0x1;return _0x15fd4c[_0x4b02('0x1de')](_0xcba355,_0x20575a,_0x9b9a88,_0xabd000,_0x222102);})['then'](function(_0x8ead74){return _0x2ce405(_0x8ead74);})['catch'](function(_0x544e3f){return _0x405544(msgResponse(_0x4b02('0x1df'),_0x4b02('0x93'),JSON[_0x4b02('0x78')](_0x544e3f)));});}if(_0x5a1afb['dialPredictiveOptimization']===_0x4b02('0x1d5')){return _0x15fd4c[_0x4b02('0x14d')](_0x5a1afb['id'])[_0x4b02('0xa4')](function(_0x317e39){var _0x508810=_0x5a1afb['loggedIn']-_0x317e39[0x0]['outboundQueuePauses'];var _0xabc097=_0x5a1afb[_0x4b02('0x1cd')]*0x3c;var _0x1b3f21=_0x803293[0x0]['predictiveIntervalAvgTalktime']+_0x803293[0x0]['predictiveIntervalAvgHoldtime'];var _0x26e0c6=(_0x803293[0x0][_0x4b02('0x51')]+_0x803293[0x0][_0x4b02('0x53')]+_0x803293[0x0][_0x4b02('0xe8')])/_0x803293[0x0][_0x4b02('0x4f')];var _0x25d327=_0x5a1afb[_0x4b02('0x1ba')]/0x64;_0x5a1afb[_0x4b02('0x1dd')]=_0x317e39[0x0][_0x4b02('0x1dc')]||0x0;_0x5a1afb[_0x4b02('0x1d4')]=_0x26e0c6>0x0?_0x26e0c6:0x1;return _0x15fd4c['busyFactor'](_0x508810,_0xabc097,_0x1b3f21,_0x26e0c6,_0x25d327);})[_0x4b02('0xa4')](function(_0x39e94c){return _0x2ce405(_0x39e94c);})[_0x4b02('0xa3')](function(_0x677ada){return _0x405544(msgResponse(_0x4b02('0x1df'),'Failure',JSON['stringify'](_0x677ada)));});}}else{return _0x405544(msgResponse('[getDataPredictive]','Failure',_0x4b02('0x1d9')));}});};};Dialer[_0x4b02('0x1a')]['startMethodPredictive']=function(_0x5613b8){var _0xf02e2d=this;return function(){var _0x3dd70e=0x0;var _0x7c4dc2=Math[_0x4b02('0x1c0')](_0x5613b8[_0x4b02('0x5e')]*0x3e8);if(_0x7c4dc2>0x0){_0x7c4dc2=_0x7c4dc2<0x64?0x64:_0x7c4dc2;loggerPredictive[_0x4b02('0x4c')](_0x5613b8[_0x4b02('0x4b')],_0x4b02('0x1e0'),_0x7c4dc2,_0x4b02('0x1e1'));_0x5613b8[_0x4b02('0x69')]=setInterval(function(){_0xf02e2d[_0x4b02('0x69')](_0x5613b8);loggerPredictiveCalls[_0x4b02('0x4c')]('[handlePredictive]',_0x3dd70e+=0x1);},_0x7c4dc2);}else{loggerPredictive['info'](_0x5613b8[_0x4b02('0x4b')],_0x4b02('0x1e2'));}};};Dialer[_0x4b02('0x1a')][_0x4b02('0x1e3')]=function(_0x209eba,_0x115bb2){var _0x1c924f=this;return function(_0x37af0d){if(_[_0x4b02('0x7e')](_0x37af0d)){if(_[_0x4b02('0xf5')](_0x115bb2[_0x4b02('0x154')])||!_0x115bb2['recallme']){if(_0x209eba[_0x4b02('0xb6')]===_0x4b02('0xa')){_0x209eba[_0x4b02('0x76')]=_['isUndefined'](_0x209eba[_0x4b02('0x76')])?!![]:_0x209eba['queueStatusComplete'];var _0x4de42c=uuid['v4']();_0x1c924f[_0x4b02('0x24')][_0x4de42c]=new Action(_0x209eba,_0x115bb2,_0x4de42c);loggerBooked[_0x4b02('0x4c')](_0x4b02('0x1e4'),_0x4de42c,_0x4b02('0x1e5'),JSON[_0x4b02('0x78')](_0x209eba[_0x4b02('0x76')]),_0x4b02('0x1e6'),_0x209eba[_0x4b02('0x4b')]);if(_0x209eba[_0x4b02('0x76')]){_0x209eba[_0x4b02('0x76')]=![];_0x1c924f[_0x4b02('0x2a')][_0x1c924f[_0x4b02('0x24')][_0x4de42c]['queue']]=[];ami[_0x4b02('0x9d')]({'actionid':_0x4de42c,'action':_0x4b02('0x1e7'),'queue':_0x209eba[_0x4b02('0x4b')]})[_0x4b02('0xa3')](function(){_0x1c924f[_0x4b02('0xfd')](_0x209eba);hopperUtils[_0x4b02('0xdc')]({'active':![],'ContactId':_0x1c924f[_0x4b02('0x24')][_0x4de42c][_0x4b02('0xe0')],'ListId':_0x1c924f['actions'][_0x4de42c]['ListId'],'VoiceQueueId':_0x1c924f[_0x4b02('0x24')][_0x4de42c][_0x4b02('0xe2')]||undefined,'CampaignId':_0x1c924f[_0x4b02('0x24')][_0x4de42c]['CampaignId']||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1c924f[_0x4b02('0x24')][_0x4de42c];});}else{loggerBooked['info'](_0x4b02('0x1e8'),JSON[_0x4b02('0x78')](_0x209eba[_0x4b02('0x76')]),_0x4b02('0x1e6'),_0x209eba[_0x4b02('0x4b')]);_0x1c924f[_0x4b02('0xfd')](_0x209eba);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x1c924f[_0x4b02('0x24')][_0x4de42c][_0x4b02('0xe0')],'ListId':_0x1c924f[_0x4b02('0x24')][_0x4de42c][_0x4b02('0xe1')],'VoiceQueueId':_0x1c924f[_0x4b02('0x24')][_0x4de42c][_0x4b02('0xe2')]||undefined,'CampaignId':_0x1c924f['actions'][_0x4de42c][_0x4b02('0xe3')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1c924f[_0x4b02('0x24')][_0x4de42c];}}else{return _0x1c924f[_0x4b02('0x159')](_0x209eba,_0x115bb2);}}else{if(utils[_0x4b02('0x65')](undefined,_0x115bb2[_0x4b02('0x1e9')])<_0x209eba[_0x4b02('0x1ea')]*0x3c){if(_0x115bb2[_0x4b02('0x143')]&&!_0x115bb2['Agent'][_0x4b02('0x1eb')]){_0x1c924f['preview']['run'](_0x115bb2['id'])[_0x4b02('0x189')](function(){_0x1c924f[_0x4b02('0xfd')](_0x209eba);});}else{hopperUtils['unlockContact']({'active':![]},_0x115bb2['id'],0x1)[_0x4b02('0x189')](function(){_0x1c924f[_0x4b02('0xfd')](_0x209eba);});}}else{_0x209eba[_0x4b02('0x1ec')]+=0x1;_0x1c924f[_0x4b02('0xfd')](_0x209eba);if(_0x209eba[_0x4b02('0x1ed')]){hopperUtils[_0x4b02('0xdc')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x115bb2['ContactId'],'ListId':_0x115bb2[_0x4b02('0xe1')],'VoiceQueueId':_0x115bb2[_0x4b02('0xe2')]||undefined,'CampaignId':_0x115bb2['CampaignId']||undefined})[_0x4b02('0xa3')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));hopperUtils[_0x4b02('0xcc')](createObjHistory(_0x209eba,_0x115bb2,utils[_0x4b02('0x6f')]['QUEUE_RECALL'],0x17,_0x4b02('0x1ee')))[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x1ef')));}else{_0x1c924f[_0x4b02('0x118')](createObjHistory(_0x209eba,_0x115bb2,utils[_0x4b02('0x6f')]['RECALL_TIMEOUT'],0x16,'RecallFailedTimeout'),_0x4b02('0x1f0'),_0x4b02('0x1f1'));}}}}else{_0x209eba['outboundBlacklistCallsDay']+=0x1;_0x1c924f[_0x4b02('0x118')](createObjHistory(_0x209eba,_0x115bb2,utils[_0x4b02('0x6f')]['BLACKLIST'],0xd,_0x4b02('0x1f2')),_0x4b02('0x1f3'),_0x4b02('0x1f4'));throw _0x4b02('0x1f5');}};};Dialer[_0x4b02('0x1a')][_0x4b02('0x158')]=function(_0x3e18c8){var _0x42efc7=this;var _0x70a61b=_0x3e18c8[_0x4b02('0x1f6')]-_0x3e18c8[_0x4b02('0x82')]-_0x3e18c8[_0x4b02('0x1f7')];emitCampaignSummary(_0x3e18c8);if(_0x70a61b>0x0){if(_0x70a61b>this[_0x4b02('0x23')]){_0x70a61b=this['maxNumberOriginate'];}_0x3e18c8[_0x4b02('0x1f7')]+=_0x70a61b;hopperUtils[_0x4b02('0x1f8')](_0x3e18c8['id'],_0x70a61b,_0x3e18c8[_0x4b02('0x1f9')],_0x3e18c8)[_0x4b02('0xa4')](function(_0x256ee2){_0x3e18c8[_0x4b02('0x1f7')]-=_0x70a61b;_0x3e18c8[_0x4b02('0x1f7')]=_0x3e18c8['temp']>0x0?_0x3e18c8[_0x4b02('0x1f7')]:0x0;if(!utils[_0x4b02('0x1fa')](_0x256ee2)){_0x3e18c8['message']=utils[_0x4b02('0x6f')]['NO_AVAILABLE_CONTACTS'];logger['info'](_0x4b02('0x1fb')+_0x3e18c8[_0x4b02('0x4b')]);}else{_0x3e18c8[_0x4b02('0x82')]+=_0x256ee2[_0x4b02('0x9b')];_0x3e18c8[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')][_0x4b02('0x1fc')];for(var _0xd6d05e=0x0;_0xd6d05e<_0x256ee2[_0x4b02('0x9b')];_0xd6d05e+=0x1){_0x3e18c8[_0x4b02('0x1fd')]+=0x1;if(_['isNil'](_0x256ee2[_0xd6d05e])||_[_0x4b02('0xf5')](_0x256ee2[_0xd6d05e]['Contact'])||_[_0x4b02('0xf5')](_0x256ee2[_0xd6d05e][_0x4b02('0x15c')])){_0x42efc7[_0x4b02('0x152')](_0x4b02('0x1fe'),_0x3e18c8,_0x256ee2[_0xd6d05e]);}else{hopperUtils[_0x4b02('0x1ff')](_['pick'](_0x256ee2[_0xd6d05e],[_0x4b02('0xe3'),_0x4b02('0x15c')]))[_0x4b02('0xa4')](_0x42efc7[_0x4b02('0x1e3')](_0x3e18c8,_0x256ee2[_0xd6d05e]))[_0x4b02('0xa3')](_0x42efc7[_0x4b02('0x151')](_0x4b02('0x200'),_0x3e18c8));}}}})[_0x4b02('0xa3')](loggerGetContactDialer(_0x4b02('0x201'),_0x3e18c8,_0x70a61b));}};Dialer[_0x4b02('0x1a')][_0x4b02('0xb8')]=function(_0x392e16,_0x1407d8){var _0x41216c=this;var _0x51d218=[];if(_0x1407d8<0x1||_0x392e16[_0x4b02('0xb6')]===_0x4b02('0xa')){_0x1407d8=0x1;}var _0x1405e4=Math[_0x4b02('0x1c0')](_0x392e16[_0x4b02('0x137')]*_0x1407d8)-_0x392e16[_0x4b02('0x82')]-_0x392e16['temp'];if(_0x392e16[_0x4b02('0x202')]>0x0){var _0x9305b6=_0x392e16['dialLimitQueue']-_0x392e16['originated']-_0x392e16[_0x4b02('0x1bf')]-_0x392e16['temp']-_0x392e16[_0x4b02('0x139')];if(_0x1405e4>_0x9305b6){_0x1405e4=_0x9305b6;}}if(_0x1405e4>0x0){if(_0x392e16['dialMethod']===_0x4b02('0xa')){_0x1405e4=0x1;}if(_0x1405e4>this['maxNumberOriginate']){_0x1405e4=this[_0x4b02('0x23')];}_0x392e16['temp']+=_0x1405e4;for(var _0x3692f6 in this['agents']){if(typeof this[_0x4b02('0x21')][_0x3692f6]!==_0x4b02('0x14a')){if(this['agents'][_0x3692f6][_0x4b02('0x71')]===_0x4b02('0x203')&&this[_0x4b02('0x21')][_0x3692f6][_0x4b02('0x88')]===_0x4b02('0x89')){_0x51d218[_0x4b02('0x9c')](this['agents'][_0x3692f6]['id']);}}}hopperUtils[_0x4b02('0x204')](_0x392e16,_0x51d218,_0x1405e4)[_0x4b02('0xa4')](function(_0x45085a){_0x392e16[_0x4b02('0x1f7')]-=_0x1405e4;_0x392e16[_0x4b02('0x1f7')]=_0x392e16[_0x4b02('0x1f7')]>0x0?_0x392e16[_0x4b02('0x1f7')]:0x0;if(!utils[_0x4b02('0x1fa')](_0x45085a)){hopperUtils[_0x4b02('0x205')](_0x392e16)[_0x4b02('0xa4')](sendMessageReschedule(_0x392e16))[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x206')));}else{_0x392e16[_0x4b02('0x82')]+=_0x45085a[_0x4b02('0x9b')];_0x392e16[_0x4b02('0x6c')]=_0x392e16[_0x4b02('0xb6')]===_0x4b02('0xa')?utils[_0x4b02('0x6f')][_0x4b02('0x13a')]:utils['CAMPAIGN_STATUS']['RUNNING'];for(var _0x36c78c=0x0;_0x36c78c<_0x45085a[_0x4b02('0x9b')];_0x36c78c+=0x1){if(_[_0x4b02('0xf5')](_0x45085a[_0x36c78c])||_[_0x4b02('0xf5')](_0x45085a[_0x36c78c][_0x4b02('0x173')])||_[_0x4b02('0xf5')](_0x45085a[_0x36c78c]['phone'])){_0x41216c['emptyContact'](_0x4b02('0x1fe'),_0x392e16,_0x45085a[_0x36c78c]);}else{hopperUtils['checkIsBlackList'](_['pick'](_0x45085a[_0x36c78c],[_0x4b02('0xe2'),_0x4b02('0x15c')]))[_0x4b02('0xa4')](_0x41216c[_0x4b02('0x1e3')](_0x392e16,_0x45085a[_0x36c78c]))[_0x4b02('0xa3')](_0x41216c[_0x4b02('0x151')](_0x4b02('0x1fe'),_0x392e16));}}}})[_0x4b02('0xa3')](loggerGetContactDialer(_0x4b02('0x207'),_0x392e16,_0x1405e4));}};Dialer[_0x4b02('0x1a')][_0x4b02('0x69')]=function(_0x470db3){if(_0x470db3[_0x4b02('0x202')]>0x0){var _0x4a74d4=_0x470db3[_0x4b02('0x202')]-_0x470db3['originated']-_0x470db3['talking'];if(_0x4a74d4>0x0){this[_0x4b02('0x208')](_0x470db3);}else{loggerPredictiveCalls[_0x4b02('0x4c')]('[handlePredictive][limitChannel]');}}else{this[_0x4b02('0x208')](_0x470db3);}};Dialer['prototype']['tryOriginatePredictive']=function(_0x223903){var _0x36c652=this;var _0x34d597=[];_0x223903[_0x4b02('0x82')]+=0x1;for(var _0x968508 in this['agents']){if(typeof this[_0x4b02('0x21')][_0x968508]!==_0x4b02('0x14a')){if(this['agents'][_0x968508][_0x4b02('0x71')]===_0x4b02('0x203')&&this[_0x4b02('0x21')][_0x968508][_0x4b02('0x88')]===_0x4b02('0x89')){_0x34d597[_0x4b02('0x9c')](this[_0x4b02('0x21')][_0x968508]['id']);}}}return this[_0x4b02('0x204')](_0x223903['id'],_0x34d597,0x1,_0x223903[_0x4b02('0x1f9')],_0x223903)['then'](function(_0x50c25c){if(!utils[_0x4b02('0x1fa')](_0x50c25c)){utils[_0x4b02('0x209')](_0x223903,0x1,0x0);return hopperUtils['countReScheduled'](_0x223903)[_0x4b02('0xa4')](sendMessageReschedule(_0x223903))[_0x4b02('0xa3')](loggerCatch(_0x4b02('0x206')));}else{_0x223903[_0x4b02('0x6c')]=utils[_0x4b02('0x6f')][_0x4b02('0x1fc')];if(_['isNil'](_0x50c25c[0x0])||_[_0x4b02('0xf5')](_0x50c25c[0x0][_0x4b02('0x173')])||_['isNil'](_0x50c25c[0x0][_0x4b02('0x15c')])){_0x36c652['emptyContact'](_0x4b02('0x1fe'),_0x223903,_0x50c25c[0x0]);}else{return hopperUtils[_0x4b02('0x20a')](_[_0x4b02('0x79')](_0x50c25c[0x0],['VoiceQueueId',_0x4b02('0x15c')]))['then'](_0x36c652[_0x4b02('0x1e3')](_0x223903,_0x50c25c[0x0]))[_0x4b02('0xa3')](_0x36c652[_0x4b02('0x151')](_0x4b02('0x20b'),_0x223903));}}})[_0x4b02('0xa3')](loggerGetContactDialer(_0x4b02('0x20c'),_0x223903,0x1));};Dialer[_0x4b02('0x1a')][_0x4b02('0x1de')]=function(_0x11e665,_0xfb4237,_0x3e8518,_0x3e8de0,_0x3fdeb1,_0xbfd26f){loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x20d'));loggerPredictive[_0x4b02('0x4c')]('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',_0x11e665);loggerPredictive[_0x4b02('0x4c')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xfb4237);loggerPredictive[_0x4b02('0x4c')]('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',_0x3e8518);loggerPredictive[_0x4b02('0x4c')]('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',_0x3e8de0);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',_0x3fdeb1);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x63'));return new Promise(function(_0x1da195,_0x4a82a1){if(_0x11e665<=0x0||isNaN(_0x11e665)){return _0x4a82a1(msgResponse(_0x4b02('0x20e'),_0x4b02('0x86'),_0x4b02('0x20f')+_0x11e665));}if(_0x3e8518<=0x0||isNaN(_0x3e8518)){return _0x4a82a1(msgResponse('[abandonmentRate]',_0x4b02('0x86'),_0x4b02('0x210')+_0x3e8518));}if(_0x3e8de0<=0x0||isNaN(_0x3e8de0)){return _0x4a82a1(msgResponse(_0x4b02('0x20e'),'Error','p\x20=\x20'+_0x3e8de0));}if(_0xfb4237<=0x0||isNaN(_0xfb4237)){return _0x4a82a1(msgResponse(_0x4b02('0x20e'),_0x4b02('0x86'),'interval\x20=\x20'+_0xfb4237));}if(_0x3fdeb1<=0x0||isNaN(_0x3fdeb1)){return _0x4a82a1(msgResponse(_0x4b02('0x20e'),'Error',_0x4b02('0x211')+_0x3fdeb1));}_0xbfd26f=_0xbfd26f||0x0;var _0x9200a9=0x1/_0x3e8518;var _0x5484a1=0x0;var _0x5d288a=0x0;var _0x2308f6=0x0;var _0x1d3ba8=0x0;for(var _0x942aa=0x0;_0x2308f6<_0x3fdeb1;_0x942aa+=0x1){_0x5d288a=_0x942aa/_0xfb4237;_0x5484a1=(_0x3e8de0*_0x5d288a+_0xbfd26f)/_0x9200a9;_0x2308f6=utils['erlangb'](_0x5484a1,_0x11e665);_0x1d3ba8=_0x5484a1/_0x11e665*(0x1-utils[_0x4b02('0x212')](_0x5484a1,_0x11e665));}return _0x1da195({'erlangCalls':_0x942aa,'erlangCallToSecond':_0xfb4237/_0x942aa,'erlangAbandonmentRate':_0x2308f6,'erlangBusyFactor':_0x1d3ba8});});};Dialer[_0x4b02('0x1a')]['busyFactor']=function(_0x1e7833,_0x44146e,_0x3abaa1,_0x4cc3eb,_0x73a9ff,_0x25f3a5){loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x213'));loggerPredictive[_0x4b02('0x4c')]('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',_0x1e7833);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x214'),_0x44146e);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x215'),_0x3abaa1);loggerPredictive['info'](_0x4b02('0x216'),_0x4cc3eb);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x217'),_0x73a9ff);loggerPredictive[_0x4b02('0x4c')](_0x4b02('0x63'));return new Promise(function(_0x24eced,_0xeb80a8){if(_0x1e7833<=0x0||isNaN(_0x1e7833)){return _0xeb80a8(msgResponse(_0x4b02('0x218'),_0x4b02('0x86'),_0x4b02('0x20f')+_0x1e7833));}if(_0x3abaa1<=0x0||isNaN(_0x3abaa1)){return _0xeb80a8(msgResponse('[busyFactor]',_0x4b02('0x86'),_0x4b02('0x210')+_0x3abaa1));}if(_0x4cc3eb<=0x0||isNaN(_0x4cc3eb)){return _0xeb80a8(msgResponse(_0x4b02('0x218'),_0x4b02('0x86'),'p\x20=\x20'+_0x4cc3eb));}if(_0x44146e<=0x0||isNaN(_0x44146e)){return _0xeb80a8(msgResponse(_0x4b02('0x218'),_0x4b02('0x86'),_0x4b02('0x219')+_0x44146e));}if(_0x73a9ff<=0x0||isNaN(_0x73a9ff)){return _0xeb80a8(msgResponse(_0x4b02('0x218'),_0x4b02('0x86'),_0x4b02('0x21a')+_0x73a9ff));}_0x25f3a5=_0x25f3a5||0x0;var _0x337a25=0x1/_0x3abaa1;var _0xcfeeb3=0x0;var _0x54dc74=0x0;var _0x551d72=0x0;var _0x362162=0x0;for(var _0x997c41=0x0;_0x362162<_0x73a9ff;_0x997c41+=0x1){_0x54dc74=_0x997c41/_0x44146e;_0xcfeeb3=(_0x4cc3eb*_0x54dc74+_0x25f3a5)/_0x337a25;_0x551d72=utils['erlangb'](_0xcfeeb3,_0x1e7833);_0x362162=_0xcfeeb3/_0x1e7833*(0x1-utils[_0x4b02('0x212')](_0xcfeeb3,_0x1e7833));}return _0x24eced({'erlangCalls':_0x997c41,'erlangCallToSecond':_0x44146e/_0x997c41,'erlangAbandonmentRate':_0x551d72,'erlangBusyFactor':_0x362162});});};module[_0x4b02('0x21b')]=Dialer;
\ No newline at end of file
+var _0xb91b=['booked','method\x20not\x20recognized','silly','Dialer::ifTime()','Voice\x20Queue\x20%s\x20$s','intervalIftime','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','AMI\x20IfTime','queue','uniqueId','uniqueid','ivr','updateOriginated','YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','createHistory','[syncAgentComplete][createHistory]','[syncAgentComplete]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','TIMEOUT','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','countdropretry','dialDropMaxRetry','queueCallerAbandonCreateState','add','dialDropRetryFrequency','minutes','ContactId','ListId','VoiceQueueId','CampaignId','[rescheduleContact][Drop]','calleridname','calleridnum','outboundDropCallsDayCallersExit','dropreason','CALLEREXIT','countglobal','dialAbandonedRetryFrequency','countabandonedretry','dialAbandonedMaxRetry','additional','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','swapAdditionalPhones','syncNewExten','channel','actionid','rrmemory','roundrobin','locked','paused','stateinterface','merge','idHopper','run','rescheduleContact','[unlock][syncQueueStatusComplete]','_rr','isNil','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','getQueue','response','Success','callProgressDetecting','syncVarSet','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','amd','saveInDb','[syncHangupInAMD]','value','MACHINE','Machine','countmachineretry','buildObj','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','moveContactManagedDialer','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','cause-txt','Unknow','running','statusMessage','getQueueCampaignStatusMessage','available','inUse','talking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','throttle','filter','dialPreviewRecallmeReminder','online','resolve','handlePreviewRecallNotifications','map','Agent','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','clearZombieChannels','[uniqueid]','[actions]','sequence','No\x20such\x20channel','[Dialer][checkChannel]','getVoiceQueueRtPauses','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','UserId','launchHandleIvr','handleIvr','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','isOutboundQueue','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','dialOriginateCallerIdName','XMD-ORIGINATECALLERIDNAME','originatecalleridname','extractCalleridName','XMD-ORIGINATECALLERIDNUM','substring','dialCutDigit','SIP/%s/%s%s','dialPrefix','trim','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','countagentrejectretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','buildNoAnswerEventPayload','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','Abandoned','reason\x2011\x20abandoned','outboundRejectCallsDay','custom:agentreject','agentreject','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalMinThreshold','floor','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalDroppedCallsCallersExit','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','predictiveIntervalAnsweredCalls','outboundQueuePauses','[CatchErlangB]','loggedIn','predictiveIntervalPauses','one\x20call\x20every:','[handlePredictive]','checkContactBlack','recallme','dialMethod','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','getSeconds','scheduledat','dialRecallMeTimeout','unlockContact','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','outboundBlacklistCallsDay','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','temp','checkContactEmpty','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','checkIsBlackListIvr','[getContactCampaign2]','dialLimitQueue','pTalking','not_inuse','countReScheduled','[countReScheduled]\x20','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','reachable','getContactDialer','dialOrderByScheduledAt','[actionOriginatePredictive]\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','p\x20=\x20','Umin\x20=\x20','util','lodash','uuid','moment','ioredis','./utils','./utils/hopper','../preview/util/util','../../../config/logger','dialer','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/voiceQueueRt','../rpc/setting','../rpc/interval','./models/history','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','127.0.0.1','prototype','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','queuesSummary','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','newexten','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','getSettings','previewRecallmeReminderInterval','emit','type','outbound','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','voice:queue:%s','voice_queue:save','isEmpty','-----\x20Stats\x20Predictive\x20---','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','predictiveIntervalAvgHoldtime','Avg\x20Hold\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','erlangCalls','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','startProgressive','startProgressive\x20value\x20cleared','name','handlePredictive','error','stack','checkContactLowerLimitOriginate','message','CONTACTS_RESCHEDULED','contactsRescheduled','contacts','CAMPAIGN_STATUS','NO_AVAILABLE_CONTACTS','[getContactDialer2][Empty]','state','statedesc','endtime','starttime','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','stringify','pick','queueStatusComplete','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','INACTIVE','\x20NOT\x20Active','isIVRCampaign','campaign:ivr:%s','campaign:save','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','DISACTIVED','[ifTime][Action]','Error','isTrunkReachable','active','status','SIP/%s','unmonitored','checkIsTrunkReachable','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTimeIvr','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','length','push','interval','then','content','indexOf','catch','Action','command','true','all','some','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','resetActiveCalls','syncCampaigns','undefined','isIVRCampaignActive','checkIfTime','dialGlobalInterval','dialTimezone','checkDialMethod','power','handlePower','dialPowerLevel'];(function(_0x245f64,_0x4ae342){var _0x3447e0=function(_0x17d0c5){while(--_0x17d0c5){_0x245f64['push'](_0x245f64['shift']());}};_0x3447e0(++_0x4ae342);}(_0xb91b,0x172));var _0xbb91=function(_0x1788b8,_0x1c87d0){_0x1788b8=_0x1788b8-0x0;var _0x3721ca=_0xb91b[_0x1788b8];return _0x3721ca;};'use strict';var util=require(_0xbb91('0x0'));var _=require(_0xbb91('0x1'));var uuid=require(_0xbb91('0x2'));var moment=require(_0xbb91('0x3'));var rr=require('rr');var Redis=require(_0xbb91('0x4'));var utils=require(_0xbb91('0x5'));var hopperUtils=require(_0xbb91('0x6'));var ut=require(_0xbb91('0x7'));var config=require('../../../config/environment/');var logger=require(_0xbb91('0x8'))(_0xbb91('0x9'));var loggerBooked=require(_0xbb91('0x8'))('booked');var loggerPredictive=require(_0xbb91('0x8'))(_0xbb91('0xa'));var loggerPredictiveCalls=require('../../../config/logger')(_0xbb91('0xb'));var loggerSyncQueueSummary=require(_0xbb91('0x8'))(_0xbb91('0xc'));var ami=require(_0xbb91('0xd'));config[_0xbb91('0xe')]=_[_0xbb91('0xf')](config['redis'],{'host':_0xbb91('0x10'),'port':0x18eb});var io=require(_0xbb91('0x11'))(new Redis(config[_0xbb91('0xe')]));var cmHopper=require(_0xbb91('0x12'));var voiceQueueRt=require(_0xbb91('0x13'));var RpcSetting=require(_0xbb91('0x14'));var Interval=require(_0xbb91('0x15'));var Action=require('./models/action');var History=require(_0xbb91('0x16'));var Final=require('./models/final');var AgentComplete=require(_0xbb91('0x17'));var QueueCallerAbandon=require(_0xbb91('0x18'));var Hangup=require(_0xbb91('0x19'));var ipAgi=process[_0xbb91('0x1a')]['XCALLY_IP_AGI']||_0xbb91('0x1b');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xbb91('0x1c')][_0xbb91('0x1d')]=function(_0x38507d){this[_0xbb91('0x1e')]=this[_0xbb91('0x1e')]?this[_0xbb91('0x1e')][_0xbb91('0x1f')](_0x38507d):_0x38507d();};function Dialer(_0x1a44ad,_0xfe5ca1){this['sequence']=new Sequence();this[_0xbb91('0x20')]=_0xfe5ca1;this[_0xbb91('0x21')]=_0x1a44ad['voiceQueues'];this[_0xbb91('0x22')]=_0x1a44ad[_0xbb91('0x22')];this[_0xbb91('0x23')]=_0x1a44ad[_0xbb91('0x23')];this[_0xbb91('0x24')]=_0x1a44ad[_0xbb91('0x24')];this[_0xbb91('0x25')]=config[_0xbb91('0x25')]||0x2;this[_0xbb91('0x26')]={};this[_0xbb91('0x27')]={};this[_0xbb91('0x28')]={};this['uniqueId']={};this[_0xbb91('0x29')]={};this[_0xbb91('0x2a')]={};this['startProgressive']={};this[_0xbb91('0x2b')]={};this[_0xbb91('0x2c')]={};this[_0xbb91('0x2d')]={};this[_0xbb91('0x2e')]={};ami['on']('agentconnect',this[_0xbb91('0x2f')][_0xbb91('0x30')](this));ami['on'](_0xbb91('0x31'),this[_0xbb91('0x32')][_0xbb91('0x30')](this));ami['on'](_0xbb91('0x33'),this[_0xbb91('0x34')]['bind'](this));ami['on'](_0xbb91('0x35'),this[_0xbb91('0x36')][_0xbb91('0x30')](this));ami['on'](_0xbb91('0x37'),this[_0xbb91('0xc')][_0xbb91('0x30')](this));ami['on'](_0xbb91('0x38'),this[_0xbb91('0x39')][_0xbb91('0x30')](this));ami['on']('hangup',this['syncHangup'][_0xbb91('0x30')](this));ami['on'](_0xbb91('0x3a'),this['syncNewExten'][_0xbb91('0x30')](this));ami['on']('varset',this['syncVarSet'][_0xbb91('0x30')](this));ami['on']('queuemember',this[_0xbb91('0x3b')][_0xbb91('0x30')](this));ami['on'](_0xbb91('0x3c'),this[_0xbb91('0x3d')][_0xbb91('0x30')](this));this[_0xbb91('0x3e')]();this['loopClearZombieChannels']();RpcSetting[_0xbb91('0x3f')]()['then'](function(_0x5d0d66){previewRecallmeReminderInterval=_0x5d0d66[_0xbb91('0x40')];});}function isNotNull(_0x3d3837){return _0x3d3837!==null&&!_['isUndefined'](_0x3d3837);}function msgResponse(_0x5e5c5a,_0x9905f3,_0xd05ece){return{'action':_0x5e5c5a,'response':_0x9905f3,'message':_0xd05ece,'stack':_0xd05ece};}function emit(_0x3509de,_0x51ab5f,_0x3034ad){io['to'](_0x3509de)[_0xbb91('0x41')](_0x51ab5f,_0x3034ad);}function emitOutboundVoiceQueueSummary(_0x167cdc){if(_0x167cdc[_0xbb91('0x42')]===_0xbb91('0x43')){logger[_0xbb91('0x44')](_0xbb91('0x45'),util[_0xbb91('0x46')](_0x167cdc,{'showHidden':![],'depth':null}));emit(util[_0xbb91('0x47')](_0xbb91('0x48'),_0x167cdc['name']),_0xbb91('0x49'),_0x167cdc);}}function checkGetDataPredictive(_0x5c0809){if(isNotNull(_0x5c0809)&&!_[_0xbb91('0x4a')](_0x5c0809)){loggerPredictive['info'](_0xbb91('0x4b'));loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x4d'),_0x5c0809[_0xbb91('0x4e')]);loggerPredictive['info']('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5c0809['predictiveIntervalAnsweredCalls']);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x4f'),_0x5c0809[_0xbb91('0x50')]);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x51'),_0x5c0809['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x52'),_0x5c0809['predictiveIntervalAvgHoldtime']);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x53'),_0x5c0809[_0xbb91('0x54')]);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x55'));if(_0x5c0809['predictiveIntervalTotalCalls']>0x0){if(!_[_0xbb91('0x56')](_0x5c0809[_0xbb91('0x54')])&&_0x5c0809[_0xbb91('0x54')]>0x0){return!![];}loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x57'));if(!_[_0xbb91('0x56')](_0x5c0809['predictiveIntervalAvgHoldtime'])&&_0x5c0809[_0xbb91('0x58')]>0x0){return!![];}loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x59'));}else{loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x5a'));}}else{loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x5b'));}return![];}function mergeDataErlangB(_0x513042){return function(_0x1ed055){loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x5c'));loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x5d'),_0x1ed055[_0xbb91('0x5e')]);loggerPredictive['info'](_0xbb91('0x5f'),_0x1ed055['erlangCallToSecond']);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x60'),_0x1ed055['erlangAbandonmentRate']);loggerPredictive[_0xbb91('0x4c')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1ed055['erlangBusyFactor']);loggerPredictive[_0xbb91('0x4c')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1ed055[_0xbb91('0x61')]);loggerPredictive['info'](_0xbb91('0x55'));_['merge'](_0x513042,_0x1ed055);};}function ifInterval(_0x4bc251,_0x5947e9){if(_[_0xbb91('0x56')](_0x5947e9)){return![];}return utils['getSeconds'](undefined,_0x5947e9)<_0x4bc251*0x3c;}function clearPredictiveAttributes(_0x1ae599){if(_0x1ae599[_0xbb91('0x62')]){_0x1ae599['startProgressive']=undefined;loggerPredictive[_0xbb91('0x44')](_0x1ae599['name'],_0xbb91('0x63'));}if(_0x1ae599[_0xbb91('0x2a')]){_0x1ae599[_0xbb91('0x2a')]=undefined;loggerPredictive[_0xbb91('0x44')](_0x1ae599[_0xbb91('0x64')],'startPredictive\x20value\x20cleared');}if(_0x1ae599[_0xbb91('0x65')]){clearInterval(_0x1ae599[_0xbb91('0x65')]);_0x1ae599[_0xbb91('0x65')]=undefined;loggerPredictive[_0xbb91('0x44')](_0x1ae599[_0xbb91('0x64')],'handlePredictive\x20interval\x20cleared');}}function loggerCatchPredictive(_0x2241eb,_0x5a407a){return function(_0xb606b1){loggerPredictive[_0xbb91('0x66')](_0x5a407a[_0xbb91('0x64')],_0x2241eb);loggerPredictive[_0xbb91('0x66')](_0xb606b1[_0xbb91('0x67')]);clearPredictiveAttributes(_0x5a407a);};}function loggerCatch(_0x4515f7){return function(_0x64b92c){logger['error'](_0x4515f7,util[_0xbb91('0x46')](_0x64b92c,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x39ec02,_0x21f85c,_0x3718c6){return function(_0xf07a0d){utils[_0xbb91('0x68')](_0x21f85c,_0x3718c6,0x0);logger['error'](_0x39ec02,util[_0xbb91('0x46')](_0xf07a0d,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4ba59f){return function(_0x302c6e){if(isNotNull(_0x302c6e)&&isNotNull(_0x302c6e[0x0])){if(_0x302c6e[0x0]['contactsRescheduled']>0x0){_0x4ba59f[_0xbb91('0x69')]=utils['CAMPAIGN_STATUS'][_0xbb91('0x6a')];logger['info']('[getContactDialer2][ReScheduled]'+_0x4ba59f[_0xbb91('0x64')],_0x302c6e[0x0][_0xbb91('0x6b')],_0xbb91('0x6c'));}else{_0x4ba59f[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x6e')];logger[_0xbb91('0x4c')](_0xbb91('0x6f')+_0x4ba59f[_0xbb91('0x64')]);}}};}function createObjHistory(_0x5aa04a,_0x3160f8,_0x2fb25a,_0x4708f0,_0x152540){_0x5aa04a['message']=_0x2fb25a;var _0x276b56=new Action(_0x5aa04a,_0x3160f8);var _0x3b4435=new History(_0x276b56);_0x3b4435[_0xbb91('0x70')]=_0x4708f0;_0x3b4435[_0xbb91('0x71')]=_0x152540;_0x3b4435[_0xbb91('0x72')]=_0x276b56[_0xbb91('0x73')];return _0x3b4435;}function unlockQueueStatus(_0x57004e,_0x535498){setTimeout(function(){if(_['isUndefined'](_0x57004e['queueStatusComplete'])){loggerBooked[_0xbb91('0x66')](_0xbb91('0x74'),_0x535498);}_0x57004e['queueStatusComplete']=!![];loggerBooked[_0xbb91('0x4c')](_0xbb91('0x75'),_0x535498,JSON[_0xbb91('0x76')](_[_0xbb91('0x77')](_0x57004e,[_0xbb91('0x64'),_0xbb91('0x78')])));},0x1f3);}function checkInterval(_0x4c94fa){return function(){if(!isNotNull(_0x4c94fa[_0xbb91('0x79')])){_0x4c94fa[_0xbb91('0x69')]=utils['CAMPAIGN_STATUS'][_0xbb91('0x7a')];throw _0x4c94fa[_0xbb91('0x64')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x4c94fa['Interval']['Intervals'])){_0x4c94fa[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x7a')];throw _0x4c94fa[_0xbb91('0x64')]+_0xbb91('0x7b');}if(!isNotNull(_[_0xbb91('0x4a')](_0x4c94fa[_0xbb91('0x79')][_0xbb91('0x7c')]))){_0x4c94fa[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x7a')];throw _0x4c94fa[_0xbb91('0x64')]+_0xbb91('0x7b');}};}function checkIsIVRCampaignActive(_0xde1591){return function(){if(!utils['isIVRCampaignActive'](_0xde1591)){_0xde1591['message']=utils['CAMPAIGN_STATUS'][_0xbb91('0x7d')];throw _0xde1591['name']+_0xbb91('0x7e');}};}function emitCampaignSummary(_0x336177){if(utils[_0xbb91('0x7f')](_0x336177)){emit(util[_0xbb91('0x47')](_0xbb91('0x80'),_0x336177[_0xbb91('0x64')]),_0xbb91('0x81'),_0x336177);}}function loggerCatchQueueSummary(_0x221b84,_0x1dfe7f){return function(_0x2a2028){clearPredictiveAttributes(_0x1dfe7f);emitCampaignSummary(_0x1dfe7f);loggerSyncQueueSummary[_0xbb91('0x44')](_0x221b84,util[_0xbb91('0x46')](_0x2a2028,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x714082){if(_0x714082[_0xbb91('0x82')]){if(_0x714082[_0xbb91('0x83')]===0x0){_0x714082['sendMessageOneNotActive']=![];_0x714082[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x7d')];loggerSyncQueueSummary[_0xbb91('0x44')](_0xbb91('0x84'),_0x714082[_0xbb91('0x64')],_0xbb91('0x85'));}else{_0x714082['message']=utils[_0xbb91('0x6d')][_0xbb91('0x86')];loggerSyncQueueSummary[_0xbb91('0x44')](_0xbb91('0x84'),_0x714082[_0xbb91('0x64')],'is\x20disactive');}emitCampaignSummary(_0x714082);}}function myreject(_0x40ed1e){return function(_0x337a25){return _0x40ed1e(msgResponse(_0xbb91('0x87'),_0xbb91('0x88'),JSON['stringify'](_0x337a25)));};}Dialer[_0xbb91('0x1c')][_0xbb91('0x89')]=function(_0x5d95ec){return!_['isUndefined'](_0x5d95ec)&&_0x5d95ec&&!_[_0xbb91('0x56')](_0x5d95ec[_0xbb91('0x64')])&&!_[_0xbb91('0x56')](_0x5d95ec[_0xbb91('0x8a')])&&_0x5d95ec[_0xbb91('0x8a')]&&(this[_0xbb91('0x24')][util[_0xbb91('0x47')]('SIP/%s',_0x5d95ec[_0xbb91('0x64')])][_0xbb91('0x8b')]==='reachable'||this[_0xbb91('0x24')][util[_0xbb91('0x47')](_0xbb91('0x8c'),_0x5d95ec['name'])][_0xbb91('0x8b')]===_0xbb91('0x8d'));};Dialer['prototype'][_0xbb91('0x8e')]=function(_0x2b0456){var _0x5424ca=this;return function(){if(!_0x5424ca[_0xbb91('0x89')](_0x2b0456[_0xbb91('0x8f')])){if(!_0x5424ca[_0xbb91('0x89')](_0x2b0456[_0xbb91('0x90')])){_0x2b0456[_0xbb91('0x69')]=utils['CAMPAIGN_STATUS'][_0xbb91('0x91')];throw _0x2b0456[_0xbb91('0x64')]+_0xbb91('0x92');}}};};Dialer[_0xbb91('0x1c')]['checkIfTime']=function(_0x3e8961,_0x2d52bd,_0x15cea2,_0x2c75a0){var _0xa0ca43=this;return function(){var _0x47ea06=!![];return _0xa0ca43[_0xbb91('0x93')](_0x3e8961,_0x2d52bd,_0x15cea2,_0x2c75a0,_0x47ea06);};};Dialer[_0xbb91('0x1c')][_0xbb91('0x94')]=function(_0x970daf,_0x8889bf,_0x334306,_0x227f5b){var _0x4737d3=this;return function(){var _0x2ea88e=![];return _0x4737d3[_0xbb91('0x93')](_0x970daf[_0xbb91('0x7c')],_0x8889bf,_0x334306,_0x227f5b,_0x2ea88e);};};Dialer[_0xbb91('0x1c')][_0xbb91('0x93')]=function(_0x420fa2,_0x56e60c,_0x2cd7c0,_0x5ac4fc,_0x9fa443){var _0x6d543e=[];return new Promise(function(_0x2ccd7d,_0x3f370f){if(!isNotNull(_0x420fa2)){_0x5ac4fc[_0xbb91('0x69')]=utils['CAMPAIGN_STATUS']['NULL_INTERVAL'];return _0x3f370f(msgResponse(_0xbb91('0x95'),_0xbb91('0x96'),_0x2cd7c0+_0xbb91('0x97')));}if(_['isEmpty'](_0x420fa2)){_0x5ac4fc[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x98')];return _0x3f370f(msgResponse(_0xbb91('0x95'),_0xbb91('0x96'),_0x2cd7c0+'\x20Intervals\x20is\x20empty\x20'));}if(_0x56e60c&&_['isUndefined'](config[_0xbb91('0x99')][_0x56e60c])){_0x5ac4fc[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x9a')];return _0x3f370f(msgResponse(_0xbb91('0x95'),_0xbb91('0x96'),_0x2cd7c0+_0xbb91('0x9b')+_0x56e60c));}if(_[_0xbb91('0x9c')](_0x420fa2)){for(var _0x564c32=0x0;_0x564c32<_0x420fa2[_0xbb91('0x9d')];_0x564c32+=0x1){_0x6d543e[_0xbb91('0x9e')](ami['Action']({'action':'command','command':util[_0xbb91('0x47')]('iftime\x20%s,%s',_0x420fa2[_0x564c32][_0xbb91('0x9f')],!_['isUndefined'](config['timezones'][_0x56e60c])?_0x56e60c:'')})[_0xbb91('0xa0')](function(_0x59536f){return _0x59536f[_0xbb91('0xa1')][_0xbb91('0xa2')]('true')>=0x0;})[_0xbb91('0xa3')](myreject(_0x3f370f)));}}else{_0x6d543e[_0xbb91('0x9e')](ami[_0xbb91('0xa4')]({'action':_0xbb91('0xa5'),'command':util[_0xbb91('0x47')]('iftime\x20%s,%s',_0x420fa2,!_[_0xbb91('0x56')](config[_0xbb91('0x99')][_0x56e60c])?_0x56e60c:'')})['then'](function(_0x312300){return _0x312300[_0xbb91('0xa1')][_0xbb91('0xa2')](_0xbb91('0xa6'))>=0x0;})[_0xbb91('0xa3')](myreject(_0x3f370f)));}Promise[_0xbb91('0xa7')](_0x6d543e)[_0xbb91('0xa0')](function(_0x5eb439){var _0x5806ac=_[_0xbb91('0xa8')](_0x5eb439);if(_0x5806ac){return _0x2ccd7d(_0x5806ac);}else{_0x5ac4fc[_0xbb91('0x69')]=_0x9fa443?utils[_0xbb91('0x6d')][_0xbb91('0xa9')]:utils[_0xbb91('0x6d')][_0xbb91('0xaa')];return _0x3f370f(msgResponse(_0xbb91('0xab'),'Failure',_0xbb91('0xac')+_0x9fa443+'\x20'+_0x2cd7c0+_0xbb91('0xad')+util[_0xbb91('0x46')](_0x420fa2,{'showHidden':![],'depth':null})+_0xbb91('0xae')+_0x56e60c));}})[_0xbb91('0xa3')](function(_0x166fb5){return _0x3f370f(msgResponse(_0xbb91('0x95'),_0xbb91('0x96'),JSON[_0xbb91('0x76')](_0x166fb5)));});});};Dialer['prototype'][_0xbb91('0x3e')]=function(){var _0x340f00=this;return cmHopper[_0xbb91('0xaf')]({'active':![]},{'where':{'active':!![]}})[_0xbb91('0xa0')](function(){setInterval(function(){_0x340f00[_0xbb91('0xb0')]();},0x3e8);});};Dialer[_0xbb91('0x1c')]['syncCampaigns']=function(){var _0x3065d0=this;var _0x176502;for(var _0x16701d in this[_0xbb91('0x22')]){if(typeof this[_0xbb91('0x22')][_0x16701d]!==_0xbb91('0xb1')){_0x176502=this[_0xbb91('0x22')][_0x16701d];if(utils['isIVRCampaign'](_0x176502)&&utils[_0xbb91('0xb2')](_0x176502)){_0x176502['sendMessageOneNotActive']=!![];Promise['resolve']()['then'](checkIsIVRCampaignActive(_0x176502))[_0xbb91('0xa0')](checkInterval(_0x176502))['then'](_0x3065d0[_0xbb91('0x8e')](_0x176502))['then'](_0x3065d0[_0xbb91('0xb3')](_0x176502[_0xbb91('0xb4')],_0x176502['dialTimezone'],_0x176502[_0xbb91('0x64')],_0x176502))[_0xbb91('0xa0')](_0x3065d0['checkIfTimeIntervals'](_0x176502[_0xbb91('0x79')],_0x176502[_0xbb91('0xb5')],_0x176502[_0xbb91('0x64')],_0x176502))['then'](_0x3065d0['launchHandleIvr'](_0x176502))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0x176502));}else{notSendMessagesCampaign(_0x176502);}}}};Dialer[_0xbb91('0x1c')][_0xbb91('0xb6')]=function(_0x12c8d2){if(_0x12c8d2['dialMethod']!==_0xbb91('0xa')){clearPredictiveAttributes(_0x12c8d2);}switch(_0x12c8d2['dialMethod']){case'progressive':this['handlePower'](_0x12c8d2,0x1);break;case _0xbb91('0xb7'):this[_0xbb91('0xb8')](_0x12c8d2,_0x12c8d2[_0xbb91('0xb9')]);break;case _0xbb91('0xa'):this[_0xbb91('0xa')](_0x12c8d2);break;case _0xbb91('0xba'):this[_0xbb91('0xb8')](_0x12c8d2,0x1);break;default:logger[_0xbb91('0x66')]('Queue',_0x12c8d2['name'],_0xbb91('0xbb'));}};Dialer[_0xbb91('0x1c')][_0xbb91('0x95')]=function(_0x3bf7df,_0x530cab){var _0x4a726=_0x3bf7df[_0xbb91('0xb5')];var _0x223bf5=_0x530cab?_0x3bf7df[_0xbb91('0xb4')]:_0x3bf7df['Interval']['Intervals'];logger[_0xbb91('0xbc')](_0xbb91('0xbd'),_0x223bf5,_0x4a726,_0x3bf7df[_0xbb91('0x64')],util[_0xbb91('0x47')](_0xbb91('0xbe'),_0x3bf7df[_0xbb91('0x64')],_0x3bf7df['id']));var _0x42dddd=null;return Interval[_0xbb91('0xbf')](_0x223bf5,_0x4a726)[_0xbb91('0xa0')](function(_0x21f667){if(_0x21f667===!![]){return _0x21f667;}else{_0x3bf7df['message']=_0x530cab?utils[_0xbb91('0x6d')]['OVERTIME_GLOBAL_INTERVAL']:utils[_0xbb91('0x6d')][_0xbb91('0xaa')];_0x42dddd=msgResponse(_0xbb91('0xab'),_0xbb91('0x96'),_0xbb91('0xac')+_0x530cab+'\x20'+_0x3bf7df['name']+'\x20Interval\x20is\x20overtime:\x20'+util[_0xbb91('0x46')](_0x223bf5,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x4a726);}if(_0x42dddd!==null){logger[_0xbb91('0xbc')](_0xbb91('0xc0'),_0x42dddd);_0x42dddd['isGlobal']=_0x530cab;throw _0x42dddd;}})['catch'](function(_0x49c316){logger['error'](_0xbb91('0xc1'),_0x49c316);throw msgResponse(_0xbb91('0x87'),_0xbb91('0x88'),util[_0xbb91('0x46')](_0x49c316,{'showHidden':![],'depth':null}));});};Dialer[_0xbb91('0x1c')][_0xbb91('0x2f')]=function(_0x3353ad){if(this[_0xbb91('0x21')][_0x3353ad[_0xbb91('0xc2')]]){if(this[_0xbb91('0xc3')][_0x3353ad[_0xbb91('0xc4')]]&&this['uniqueId'][_0x3353ad[_0xbb91('0xc4')]][_0xbb91('0x42')]!==_0xbb91('0xc5')){this[_0xbb91('0xc6')](this['voiceQueues'][_0x3353ad[_0xbb91('0xc2')]]);this[_0xbb91('0xc3')][_0x3353ad[_0xbb91('0xc4')]]['answertime']=moment()[_0xbb91('0x47')](_0xbb91('0xc7'));}}};Dialer[_0xbb91('0x1c')]['syncAgentComplete']=function(_0x4b638c){var _0x45292b=this[_0xbb91('0xc3')][_0x4b638c[_0xbb91('0xc4')]];if(this[_0xbb91('0x21')][_0x4b638c[_0xbb91('0xc2')]]){if(_0x45292b&&_0x45292b[_0xbb91('0x42')]!==_0xbb91('0xc5')){delete this['uniqueId'][_0x4b638c[_0xbb91('0xc4')]];this[_0xbb91('0x21')][_0x4b638c[_0xbb91('0xc2')]][_0xbb91('0xc8')]+=0x1;var _0x15e3ce=new AgentComplete(_0x45292b,_0x4b638c);if(_0x4b638c[_0xbb91('0xc9')]===_0xbb91('0xca')){_0x15e3ce[_0xbb91('0xcb')]=this[_0xbb91('0x21')][_0x4b638c[_0xbb91('0xc2')]][_0xbb91('0xcc')]&&this['voiceQueues'][_0x4b638c['queue']][_0xbb91('0xcd')]?moment()[_0xbb91('0x47')](_0xbb91('0xc7')):undefined;}hopperUtils[_0xbb91('0xce')](_0x15e3ce)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xcf')));hopperUtils['moveContactManagedDialer'](_0x15e3ce)['catch'](loggerCatch(_0xbb91('0xd0')));}}};Dialer['prototype'][_0xbb91('0x32')]=function(_0x42282d){var _0x46e5bd=this[_0xbb91('0xc3')][_0x42282d['uniqueid']];var _0x1f5490=this;var _0x17201c=![];var _0x27a028;var _0x14afc8;if(this['voiceQueues'][_0x42282d[_0xbb91('0xc2')]]){if(_0x46e5bd&&_0x46e5bd[_0xbb91('0x42')]!==_0xbb91('0xc5')){delete this[_0xbb91('0xc3')][_0x42282d[_0xbb91('0xc4')]];this[_0xbb91('0xc6')](this[_0xbb91('0x21')][_0x42282d['queue']]);_0x46e5bd['droptime']=moment()[_0xbb91('0x47')](_0xbb91('0xc7'));var _0x5dad1b=new QueueCallerAbandon(_0x46e5bd,_0x42282d);if(utils['getSeconds'](_0x46e5bd[_0xbb91('0xd1')],_0x46e5bd[_0xbb91('0xd2')])>=_0x46e5bd[_0xbb91('0xd3')]){this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0x50')]+=0x1;this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xd4')]+=0x1;this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xd5')]+=0x1;_0x5dad1b[_0xbb91('0x70')]=0xa;_0x5dad1b['statedesc']=_0xbb91('0xd6');_0x5dad1b['dropreason']=_0xbb91('0xd7');_0x5dad1b[_0xbb91('0xcb')]=this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]]['dialQueueProject2']?moment()[_0xbb91('0x47')](_0xbb91('0xc7')):undefined;_0x5dad1b['countdropretry']+=0x1;_0x5dad1b['countglobal']+=0x1;_0x27a028=this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]]['dialDropRetryFrequency'];_0x14afc8=this[_0xbb91('0x21')][_0x42282d['queue']][_0xbb91('0xd8')];hopperUtils[_0xbb91('0xd9')](_0x5dad1b,_0x5dad1b[_0xbb91('0x70')],_0x46e5bd[_0xbb91('0xda')])[_0xbb91('0xa0')](function(_0x2e7478){_0x17201c=_0x2e7478['additional']==0x1;if(_0x5dad1b[_0xbb91('0xdb')]>=_0x1f5490['voiceQueues'][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xdc')]){_0x1f5490[_0xbb91('0xdd')](_0x5dad1b,_0x2e7478['additional']);}else{hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0x5dad1b[_0xbb91('0xdb')],'scheduledat':moment()[_0xbb91('0xde')](_0x1f5490['voiceQueues'][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xdf')],_0xbb91('0xe0'))[_0xbb91('0x47')](_0xbb91('0xc7')),'ContactId':_0x46e5bd[_0xbb91('0xe1')],'ListId':_0x46e5bd[_0xbb91('0xe2')],'VoiceQueueId':_0x46e5bd[_0xbb91('0xe3')]||undefined,'CampaignId':_0x46e5bd[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xe5')));var _0x5ecdd9=new History(_0x5dad1b);_0x5ecdd9[_0xbb91('0x70')]=0xa;_0x5ecdd9[_0xbb91('0x71')]='Drop';_0x5ecdd9[_0xbb91('0x73')]=moment()[_0xbb91('0x47')](_0xbb91('0xc7'));_0x5ecdd9[_0xbb91('0x72')]=_0x5ecdd9[_0xbb91('0x73')];_0x5ecdd9[_0xbb91('0xe6')]=_0x5dad1b[_0xbb91('0xe6')];_0x5ecdd9['calleridnum']=_0x5dad1b[_0xbb91('0xe7')];hopperUtils['createHistory'](_0x5ecdd9)[_0xbb91('0xa3')](loggerCatch('[syncAgentComplete][createHistory][10]'));}})[_0xbb91('0xa0')](function(){if(_0x17201c)hopperUtils['swapAdditionalPhones'](_0x5dad1b,_0x27a028,_0x14afc8)[_0xbb91('0xa0')](function(){return 0x1;});});}else{this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this['voiceQueues'][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xe8')]+=0x1;_0x5dad1b[_0xbb91('0x70')]=0xb;_0x5dad1b['statedesc']='Abandoned';_0x5dad1b[_0xbb91('0xe9')]=_0xbb91('0xea');_0x5dad1b['countabandonedretry']+=0x1;_0x5dad1b[_0xbb91('0xeb')]+=0x1;_0x27a028=this['voiceQueues'][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xec')];_0x14afc8=this[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xd8')];hopperUtils['verifyAdditionalPhones'](_0x5dad1b,_0x5dad1b['state'],_0x46e5bd[_0xbb91('0xda')])[_0xbb91('0xa0')](function(_0x4e9098){if(_0x5dad1b[_0xbb91('0xed')]>=_0x1f5490[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xee')]){_0x1f5490[_0xbb91('0xdd')](_0x5dad1b,_0x4e9098[_0xbb91('0xef')]);}else{hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x5dad1b[_0xbb91('0xed')],'scheduledat':moment()['add'](_0x1f5490[_0xbb91('0x21')][_0x42282d[_0xbb91('0xc2')]][_0xbb91('0xec')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x46e5bd[_0xbb91('0xe1')],'ListId':_0x46e5bd[_0xbb91('0xe2')],'VoiceQueueId':_0x46e5bd['VoiceQueueId']||undefined,'CampaignId':_0x46e5bd[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xf0')));var _0x17144d=new History(_0x5dad1b);_0x17144d['state']=0xb;_0x17144d[_0xbb91('0x71')]='Abandoned';_0x17144d['starttime']=moment()[_0xbb91('0x47')](_0xbb91('0xc7'));_0x17144d[_0xbb91('0x72')]=_0x17144d[_0xbb91('0x73')];_0x17144d[_0xbb91('0xe6')]=_0x5dad1b[_0xbb91('0xe6')];_0x17144d[_0xbb91('0xe7')]=_0x5dad1b[_0xbb91('0xe7')];hopperUtils['createHistory'](_0x17144d)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xf1')));}})[_0xbb91('0xa0')](function(){if(_0x17201c)hopperUtils[_0xbb91('0xf2')](_0x5dad1b,_0x27a028,_0x14afc8)[_0xbb91('0xa0')](function(){return 0x1;});});}}}};Dialer[_0xbb91('0x1c')][_0xbb91('0xf3')]=function(_0x54dd85){if(this[_0xbb91('0x27')][_0x54dd85[_0xbb91('0xc4')]]){this[_0xbb91('0x27')][_0x54dd85[_0xbb91('0xc4')]][_0xbb91('0xf4')]=_0x54dd85[_0xbb91('0xf4')];}if(this[_0xbb91('0xc3')][_0x54dd85[_0xbb91('0xc4')]]){this['uniqueId'][_0x54dd85[_0xbb91('0xc4')]][_0xbb91('0xf4')]=_0x54dd85[_0xbb91('0xf4')];}};Dialer['prototype'][_0xbb91('0x3b')]=function(_0x10acc4){if(!this['actions'][_0x10acc4[_0xbb91('0xf5')]]){return;}var _0x507f32=this[_0xbb91('0x21')][this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]][_0xbb91('0xc2')]]['strategy']||_0xbb91('0xf6');if(_0x507f32===_0xbb91('0xf7')){if(this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]]&&_['isNil'](this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]][_0xbb91('0xf8')])&&_0x10acc4[_0xbb91('0x8b')]==='1'&&_0x10acc4[_0xbb91('0xf9')]==='0'){if(this[_0xbb91('0x23')][_0x10acc4['stateinterface']]){if(!this[_0xbb91('0x23')][_0x10acc4[_0xbb91('0xfa')]]['locked']){this['agents'][_0x10acc4[_0xbb91('0xfa')]][_0xbb91('0xf8')]=!![];this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]][_0xbb91('0xf8')]=!![];this['actions'][_0x10acc4['actionid']][_0xbb91('0xfa')]=_0x10acc4[_0xbb91('0xfa')];}}}}else if(_0x507f32==='rrmemory'){if(this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]]){if(this[_0xbb91('0x23')][_0x10acc4[_0xbb91('0xfa')]]){this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]]['stateinterface']=_0x10acc4[_0xbb91('0xfa')];if(_['isNil'](this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]][_0xbb91('0xc2')]])){this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]][_0xbb91('0xc2')]]=[];}this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x10acc4['actionid']]['queue']]['push'](_[_0xbb91('0xfb')](_[_0xbb91('0x77')](this[_0xbb91('0x27')][_0x10acc4[_0xbb91('0xf5')]],[_0xbb91('0xfc'),'stateinterface']),{'status':_0x10acc4[_0xbb91('0x8b')],'paused':_0x10acc4[_0xbb91('0xf9')]}));}}}};Dialer[_0xbb91('0x1c')][_0xbb91('0x3d')]=function(_0x58b5be){if(!this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]){return;}var _0x5d9761=this;var _0x2856aa=this['voiceQueues'][this[_0xbb91('0x27')][_0x58b5be['actionid']]['queue']];var _0x1cfe1b=_0x2856aa['strategy']||_0xbb91('0xf6');if(_0x1cfe1b===_0xbb91('0xf7')){if(this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]&&this['actions'][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xfa')]){this[_0xbb91('0x20')][_0xbb91('0xfd')](this['actions'][_0x58b5be['actionid']][_0xbb91('0xfc')],this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xfa')])[_0xbb91('0xa3')](function(_0x24769f){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0xbb91('0x46')](_0x24769f,{'showHidden':![],'depth':null}));})[_0xbb91('0x1f')](function(){_0x5d9761['updateOriginated'](_0x5d9761[_0xbb91('0x21')][_0x5d9761[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]);_0x5d9761[_0xbb91('0x23')][_0x5d9761['actions'][_0x58b5be[_0xbb91('0xf5')]]['stateinterface']][_0xbb91('0xf8')]=![];delete _0x5d9761['actions'][_0x58b5be[_0xbb91('0xf5')]];unlockQueueStatus(_0x2856aa);});}else{this[_0xbb91('0xc6')](this['voiceQueues'][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]);hopperUtils[_0xbb91('0xfe')]({'active':![],'ContactId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe1')],'ListId':this['actions'][_0x58b5be['actionid']]['ListId'],'VoiceQueueId':this[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xe3')]||undefined,'CampaignId':this['actions'][_0x58b5be[_0xbb91('0xf5')]]['CampaignId']||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xff')));delete this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]];unlockQueueStatus(_0x2856aa);}}else if(_0x1cfe1b===_0xbb91('0xf6')){var _0x5e40d4;if(this['actions'][_0x58b5be[_0xbb91('0xf5')]]&&!_['isEmpty'](this[_0xbb91('0x2c')][this['actions'][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]])){if(this[_0xbb91('0x2d')][_0x5d9761['actions'][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]){this[_0xbb91('0x2d')][_0x5d9761[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xc2')]]=this['queueBookedRR'][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]?this[_0xbb91('0x2d')][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]:this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['queue']]?this['queueBooked'][this[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xc2')]]['_rr']||0x0:0x0;}this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['queue']]['_rr']=this[_0xbb91('0x2d')][this['actions'][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]];for(var _0xf3d637=0x0;_0xf3d637<this['queueBooked'][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]][_0xbb91('0x9d')];_0xf3d637+=0x1){_0x5e40d4=rr(this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]);this[_0xbb91('0x2d')][_0x5d9761[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xc2')]]=this[_0xbb91('0x2c')][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['queue']][_0xbb91('0x100')];if(_0x5e40d4[_0xbb91('0x8b')]==='1'&&_0x5e40d4[_0xbb91('0xf9')]==='0'){break;}}if(!_[_0xbb91('0x101')](_0x5e40d4)){this['agents'][_0x5e40d4['stateinterface']][_0xbb91('0x102')]=_[_0xbb91('0x56')](this['agents'][_0x5e40d4[_0xbb91('0xfa')]][_0xbb91('0x102')])?!![]:this['agents'][_0x5e40d4[_0xbb91('0xfa')]][_0xbb91('0x102')];}loggerBooked[_0xbb91('0x4c')]('[booked][RR]',_0x58b5be[_0xbb91('0xf5')],_0xbb91('0x103'),JSON[_0xbb91('0x76')](_[_0xbb91('0x77')](this['agents'][_0x5e40d4['stateinterface']],['name',_0xbb91('0x102')])),_0xbb91('0x104'),JSON['stringify'](_0x5e40d4[_0xbb91('0xfc')]));if(!_['isNil'](_0x5e40d4)&&_0x5e40d4[_0xbb91('0x8b')]==='1'&&_0x5e40d4[_0xbb91('0xf9')]==='0'&&this[_0xbb91('0x23')][_0x5e40d4[_0xbb91('0xfa')]][_0xbb91('0x102')]){this[_0xbb91('0x23')][_0x5e40d4[_0xbb91('0xfa')]][_0xbb91('0x102')]=![];this['queueBooked'][_0x5d9761[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xc2')]]=[];this[_0xbb91('0x20')][_0xbb91('0xfd')](_0x5e40d4[_0xbb91('0xfc')],_0x5e40d4[_0xbb91('0xfa')])[_0xbb91('0xa3')](function(_0x221a19){logger[_0xbb91('0x66')](_0xbb91('0x105'),util['inspect'](_0x221a19,{'showHidden':![],'depth':null}));})[_0xbb91('0x1f')](function(){_0x5d9761[_0xbb91('0xc6')](_0x5d9761['voiceQueues'][_0x5d9761[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]);setTimeout(function(){_0x5d9761[_0xbb91('0x23')][_0x5e40d4[_0xbb91('0xfa')]][_0xbb91('0x102')]=!![];loggerBooked[_0xbb91('0x4c')](_0xbb91('0x106'),_0x58b5be[_0xbb91('0xf5')],_0xbb91('0x103'),JSON[_0xbb91('0x76')](_['pick'](_0x5d9761[_0xbb91('0x23')][_0x5e40d4[_0xbb91('0xfa')]],[_0xbb91('0x64'),_0xbb91('0x102')])),_0xbb91('0x104'),JSON[_0xbb91('0x76')](_0x5e40d4[_0xbb91('0xfc')]));},0xc7);delete _0x5d9761['actions'][_0x58b5be[_0xbb91('0xf5')]];unlockQueueStatus(_0x2856aa,_0x58b5be['actionid']);});}else{loggerBooked[_0xbb91('0x4c')](_0xbb91('0x107'));this[_0xbb91('0xc6')](this[_0xbb91('0x21')][this[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xc2')]]);hopperUtils[_0xbb91('0xfe')]({'active':![],'ContactId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['ContactId'],'ListId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['ListId'],'VoiceQueueId':this[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xe3')]||undefined,'CampaignId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['CampaignId']||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xff')));delete this[_0xbb91('0x27')][_0x58b5be['actionid']];unlockQueueStatus(_0x2856aa);}}else{loggerBooked[_0xbb91('0x4c')](_0xbb91('0x108'));this[_0xbb91('0xc6')](this[_0xbb91('0x21')][this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xc2')]]);hopperUtils[_0xbb91('0xfe')]({'active':![],'ContactId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]]['ContactId'],'ListId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe2')],'VoiceQueueId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe3')]||undefined,'CampaignId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x109')));delete this['actions'][_0x58b5be[_0xbb91('0xf5')]];unlockQueueStatus(_0x2856aa);}}else{loggerBooked[_0xbb91('0x4c')](_0xbb91('0x10a'));this[_0xbb91('0xc6')](this[_0xbb91('0x21')][this[_0xbb91('0x27')][_0x58b5be['actionid']][_0xbb91('0xc2')]]);hopperUtils[_0xbb91('0xfe')]({'active':![],'ContactId':this['actions'][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe1')],'ListId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe2')],'VoiceQueueId':this['actions'][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe3')]||undefined,'CampaignId':this[_0xbb91('0x27')][_0x58b5be[_0xbb91('0xf5')]][_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x10b')));delete this[_0xbb91('0x27')][_0x58b5be['actionid']];unlockQueueStatus(_0x2856aa);}};Dialer[_0xbb91('0x1c')][_0xbb91('0x34')]=function(_0x406ece){var _0x459a16=this['actions'][_0x406ece[_0xbb91('0xf5')]];if(_0x459a16){delete this[_0xbb91('0x27')][_0x406ece[_0xbb91('0xf5')]];_0x459a16[_0xbb91('0xd2')]=moment()[_0xbb91('0x47')]('YYYY-MM-DD\x20HH:mm:ss');var _0x21d9ea=_0x459a16['type']===_0xbb91('0xc5')?this[_0xbb91('0x22')][_0x459a16[_0xbb91('0xc2')]]:this[_0xbb91('0x21')][_0x459a16[_0xbb91('0x10c')]()];if(_0x406ece[_0xbb91('0x10d')]!==_0xbb91('0x10e')){this[_0xbb91('0xc6')](_0x21d9ea);return this[_0xbb91('0x10f')](_0x459a16,_0x21d9ea,_0x406ece)[_0xbb91('0xa3')](loggerCatch('[callProgressDetecting]\x20'));}this[_0xbb91('0xc3')][_0x406ece[_0xbb91('0xc4')]]=_0x459a16;}};Dialer['prototype'][_0xbb91('0x110')]=function(_0x2cb113){var _0x539a09=this;var _0x20f2a1=this[_0xbb91('0xc3')][_0x2cb113[_0xbb91('0xc4')]];var _0x4fa8aa;if(!_[_0xbb91('0x101')](_0x2cb113)&&!_['isNil'](_0x2cb113[_0xbb91('0x111')])&&!_[_0xbb91('0x101')](_0x2cb113[_0xbb91('0x111')][_0xbb91('0x112')])&&_0x2cb113[_0xbb91('0x113')]===_0xbb91('0x114')&&_0x20f2a1){if(_0x20f2a1[_0xbb91('0x42')]!==_0xbb91('0xc5')&&this[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]][_0xbb91('0x115')]&&_0x2cb113['value']===_0xbb91('0x116')){delete this[_0xbb91('0xc3')][_0x2cb113[_0xbb91('0xc4')]];this['updateOriginated'](this[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]]);this[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]]['outboundAnswerCallsDay']+=0x1;this[_0xbb91('0x21')][_0x20f2a1['queue']][_0xbb91('0x117')]+=0x1;_0x4fa8aa=new Hangup(_0x20f2a1,_0x2cb113);_0x4fa8aa[_0xbb91('0x70')]=0x12;_0x4fa8aa[_0xbb91('0x71')]=_0xbb91('0x118');_0x4fa8aa[_0xbb91('0x119')]=_0xbb91('0x11a');ami['emit'](_0xbb91('0x11b'),ut['buildObj'](_0x4fa8aa,_0xbb91('0x11c')));this[_0xbb91('0x11d')](_0x4fa8aa,'[syncHangupInAMD][createHistory]',_0xbb91('0x11e'));}if(_0x20f2a1[_0xbb91('0x42')]!==_0xbb91('0xc5')&&this[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]][_0xbb91('0x115')]&&_0x2cb113[_0xbb91('0x11f')]===_0xbb91('0x120')){return new Promise(function(_0x3b89c6,_0x164ad3){delete _0x539a09[_0xbb91('0xc3')][_0x2cb113[_0xbb91('0xc4')]];_0x539a09[_0xbb91('0xc6')](_0x539a09[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]]);_0x539a09[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]][_0xbb91('0xc8')]+=0x1;_0x539a09[_0xbb91('0x21')][_0x20f2a1[_0xbb91('0xc2')]][_0xbb91('0x117')]+=0x1;var _0x483cc2=_0x539a09[_0xbb91('0x21')][_0x20f2a1['queue']];var _0x42f534=new Hangup(_0x20f2a1,_0x2cb113);_0x42f534[_0xbb91('0x70')]=0x13;_0x42f534['statedesc']=_0xbb91('0x121');_0x42f534[_0xbb91('0x119')]=_0xbb91('0x11a');_0x42f534[_0xbb91('0x122')]+=0x1;_0x42f534['countglobal']+=0x1;_0x42f534['amd']=!![];ami[_0xbb91('0x41')](_0xbb91('0x11b'),ut[_0xbb91('0x123')](_0x42f534,'amd'));hopperUtils[_0xbb91('0xce')](_0x42f534)[_0xbb91('0xa3')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x42f534[_0xbb91('0x124')]+_0x42f534[_0xbb91('0x125')]+_0x42f534[_0xbb91('0x126')]+_0x42f534[_0xbb91('0x127')]+_0x42f534[_0xbb91('0xdb')]+_0x42f534[_0xbb91('0xed')]+_0x42f534['countmachineretry']+_0x42f534['countagentrejectretry']>=_0x483cc2[_0xbb91('0x128')]){_0x539a09[_0xbb91('0x129')](_0x42f534,_0x3b89c6,_0x164ad3,_0xbb91('0x12a'));}else{if(_0x42f534[_0xbb91('0x122')]>=_0x483cc2[_0xbb91('0x12b')]){_0x539a09[_0xbb91('0x12c')](_0x42f534,_0x3b89c6,_0x164ad3,_0xbb91('0x12d'));}else{hopperUtils[_0xbb91('0xfe')]({'active':![],'countmachineretry':_0x42f534[_0xbb91('0x122')],'scheduledat':moment()['add'](_0x483cc2[_0xbb91('0x12e')],_0xbb91('0xe0'))['format'](_0xbb91('0xc7')),'ContactId':_0x42f534[_0xbb91('0xe1')],'ListId':_0x42f534['ListId'],'VoiceQueueId':_0x42f534[_0xbb91('0xe3')]||undefined,'CampaignId':_0x42f534[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x12f')));_0x3b89c6({'reschedule':0x1});}}});}if(_0x20f2a1[_0xbb91('0x42')]===_0xbb91('0xc5')&&this[_0xbb91('0x22')][_0x20f2a1['queue']][_0xbb91('0x115')]&&_0x2cb113['value']===_0xbb91('0x116')){delete this[_0xbb91('0xc3')][_0x2cb113[_0xbb91('0xc4')]];this['updateOriginated'](this[_0xbb91('0x22')][_0x20f2a1[_0xbb91('0xc2')]]);_0x4fa8aa=new Hangup(_0x20f2a1,_0x2cb113);_0x4fa8aa[_0xbb91('0x70')]=0x12;_0x4fa8aa[_0xbb91('0x71')]=_0xbb91('0x118');_0x4fa8aa[_0xbb91('0x119')]=_0xbb91('0x11a');ami['emit'](_0xbb91('0x11b'),ut[_0xbb91('0x123')](_0x4fa8aa,'amd'));this[_0xbb91('0x11d')](_0x4fa8aa,_0xbb91('0x130'),_0xbb91('0x131'));}if(_0x20f2a1['type']===_0xbb91('0xc5')&&this[_0xbb91('0x22')][_0x20f2a1[_0xbb91('0xc2')]][_0xbb91('0x115')]&&_0x2cb113[_0xbb91('0x11f')]==='MACHINE'){return new Promise(function(_0x1e2e1a,_0x117317){delete _0x539a09[_0xbb91('0xc3')][_0x2cb113['uniqueid']];_0x539a09[_0xbb91('0xc6')](_0x539a09['campaigns'][_0x20f2a1['queue']]);_0x539a09[_0xbb91('0x22')][_0x20f2a1['queue']]['outboundAnswerCallsDay']+=0x1;_0x539a09[_0xbb91('0x22')][_0x20f2a1[_0xbb91('0xc2')]][_0xbb91('0x117')]+=0x1;var _0x2f5dcf=_0x539a09['campaigns'][_0x20f2a1[_0xbb91('0xc2')]];var _0x6505a8=new Hangup(_0x20f2a1,_0x2cb113);_0x6505a8[_0xbb91('0x70')]=0x13;_0x6505a8[_0xbb91('0x71')]=_0xbb91('0x121');_0x6505a8[_0xbb91('0x119')]=_0xbb91('0x11a');_0x6505a8[_0xbb91('0x122')]+=0x1;_0x6505a8['countglobal']+=0x1;_0x6505a8[_0xbb91('0x11c')]=!![];ami[_0xbb91('0x41')](_0xbb91('0x11b'),ut['buildObj'](_0x6505a8,_0xbb91('0x11c')));hopperUtils['createHistory'](_0x6505a8)['catch'](loggerCatch(_0xbb91('0x132')));if(_0x6505a8[_0xbb91('0x124')]+_0x6505a8[_0xbb91('0x125')]+_0x6505a8['countnoanswerretry']+_0x6505a8[_0xbb91('0x127')]+_0x6505a8[_0xbb91('0xdb')]+_0x6505a8[_0xbb91('0xed')]+_0x6505a8[_0xbb91('0x122')]+_0x6505a8['countagentrejectretry']>=_0x2f5dcf['dialGlobalMaxRetry']){_0x539a09[_0xbb91('0x129')](_0x6505a8,_0x1e2e1a,_0x117317,'reason19\x20machine....');}else{if(_0x6505a8[_0xbb91('0x122')]>=_0x2f5dcf[_0xbb91('0x12b')]){_0x539a09[_0xbb91('0x12c')](_0x6505a8,_0x1e2e1a,_0x117317,_0xbb91('0x12d'));}else{hopperUtils[_0xbb91('0xfe')]({'active':![],'countmachineretry':_0x6505a8[_0xbb91('0x122')],'scheduledat':moment()['add'](_0x2f5dcf[_0xbb91('0x12e')],_0xbb91('0xe0'))[_0xbb91('0x47')](_0xbb91('0xc7')),'ContactId':_0x6505a8['ContactId'],'ListId':_0x6505a8[_0xbb91('0xe2')],'VoiceQueueId':_0x6505a8[_0xbb91('0xe3')]||undefined,'CampaignId':_0x6505a8[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch('[rescheduleContact][Machine]'));_0x1e2e1a({'reschedule':0x1});}}});}}};Dialer[_0xbb91('0x1c')]['syncHangup']=function(_0x1cd16a){var _0x3e9097=this[_0xbb91('0xc3')][_0x1cd16a[_0xbb91('0xc4')]];var _0x168fc6;if(_0x3e9097&&_0x3e9097[_0xbb91('0x42')]===_0xbb91('0xc5')){delete this[_0xbb91('0xc3')][_0x1cd16a['uniqueid']];this[_0xbb91('0xc6')](this[_0xbb91('0x22')][_0x3e9097[_0xbb91('0xc2')]]);this[_0xbb91('0x22')][_0x3e9097[_0xbb91('0xc2')]][_0xbb91('0x133')]+=0x1;_0x168fc6=new Hangup(_0x3e9097,_0x1cd16a);hopperUtils['createHistory'](_0x168fc6)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x134')));hopperUtils[_0xbb91('0x135')](_0x168fc6)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x136')));}if(_0x3e9097&&_0x3e9097['type']!==_0xbb91('0xc5')&&isNotNull(this[_0xbb91('0x21')][_0x3e9097[_0xbb91('0xc2')]]['dialQueueProject'])){delete this['uniqueId'][_0x1cd16a[_0xbb91('0xc4')]];this[_0xbb91('0xc6')](this[_0xbb91('0x21')][_0x3e9097[_0xbb91('0xc2')]]);this['voiceQueues'][_0x3e9097['queue']][_0xbb91('0xc8')]+=0x1;this[_0xbb91('0x21')][_0x3e9097['queue']][_0xbb91('0x117')]+=0x1;_0x168fc6=new Hangup(_0x3e9097,_0x1cd16a);_0x168fc6['state']=0x10;_0x168fc6[_0xbb91('0x71')]=_0xbb91('0x137');_0x168fc6['membername']=_0xbb91('0x138');hopperUtils[_0xbb91('0xce')](_0x168fc6)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x134')));hopperUtils[_0xbb91('0x135')](_0x168fc6)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x136')));}if(_0x3e9097&&_0x3e9097['type']!==_0xbb91('0xc5')&&!isNotNull(this['voiceQueues'][_0x3e9097[_0xbb91('0xc2')]][_0xbb91('0x139')])){delete this['uniqueId'][_0x1cd16a[_0xbb91('0xc4')]];this[_0xbb91('0xc6')](this['voiceQueues'][_0x3e9097[_0xbb91('0xc2')]]);this[_0xbb91('0x21')][_0x3e9097[_0xbb91('0xc2')]]['outboundUnknownCallsDay']+=0x1;_0x168fc6=new Hangup(_0x3e9097,_0x1cd16a);_0x168fc6[_0xbb91('0x70')]=0xc;_0x168fc6[_0xbb91('0x71')]=_0x1cd16a[_0xbb91('0x13a')];_0x168fc6[_0xbb91('0x119')]=_0xbb91('0x13b');hopperUtils['createHistory'](_0x168fc6)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0xbb91('0x135')](_0x168fc6)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x136')));}};Dialer[_0xbb91('0x1c')][_0xbb91('0xc')]=function(_0x5a2bd7){var _0x28b387=this;if(!_0x28b387['queuesSummary'][_0x5a2bd7[_0xbb91('0x64')]]){_0x28b387[_0xbb91('0x2e')][_0x5a2bd7['name']]={'running':![]};}else if(_0x28b387[_0xbb91('0x2e')][_0x5a2bd7[_0xbb91('0x64')]]['running']===!![]){return;}else if(_0x28b387[_0xbb91('0x2e')][_0x5a2bd7[_0xbb91('0x64')]][_0xbb91('0x13c')]===![]){_0x28b387[_0xbb91('0x2e')][_0x5a2bd7[_0xbb91('0x64')]]['running']=!![];}var _0x416a75=_0x28b387['voiceQueues'][_0x5a2bd7[_0xbb91('0x64')]];var _0x3bd7d4=_0x416a75['message']!==utils[_0xbb91('0x6d')]['INACTIVE'];var _0x1a1e19=utils['isPreviewCampaign'](_0x416a75);_0x416a75[_0xbb91('0x13d')]=utils[_0xbb91('0x13e')](_0x416a75,_0x28b387['trunks']);Promise['resolve']()['then'](function(){if(_0x416a75['statusMessage']===utils[_0xbb91('0x6d')]['INACTIVE']){if(_0x3bd7d4){clearPredictiveAttributes(_0x416a75);_0x5a2bd7[_0xbb91('0x2a')]=undefined;_0x5a2bd7[_0xbb91('0x62')]=undefined;}if(_0x416a75[_0xbb91('0x13d')]===utils['CAMPAIGN_STATUS'][_0xbb91('0x7d')]){_0x5a2bd7[_0xbb91('0x13f')]=0x0;_0x5a2bd7[_0xbb91('0xf9')]=0x0;_0x5a2bd7[_0xbb91('0x140')]=0x0;_0x5a2bd7[_0xbb91('0x141')]=0x0;_0x5a2bd7['pTalking']=0x0;}}else if(_0x416a75[_0xbb91('0x13d')]===utils[_0xbb91('0x6d')][_0xbb91('0x142')]&&!_0x1a1e19){return _0x28b387[_0xbb91('0x95')](_0x416a75,!![])[_0xbb91('0xa0')](function(){return _0x28b387['ifTime'](_0x416a75,![]);})[_0xbb91('0xa0')](function(){return _0x28b387[_0xbb91('0xb6')](_0x416a75);})[_0xbb91('0xa3')](function(_0x1e3ad5){loggerSyncQueueSummary[_0xbb91('0x44')](_0xbb91('0x143'),util[_0xbb91('0x46')](_0x1e3ad5,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x416a75);});}else{clearPredictiveAttributes(_0x416a75);}})['then'](function(){var _0x6814d4=_0x5a2bd7[_0xbb91('0x144')](_0x416a75);if(_0x6814d4||_0x416a75[_0xbb91('0x145')]){_0x416a75[_0xbb91('0x145')]=![];_0x5a2bd7[_0xbb91('0x146')](_0x416a75);Object['assign'](_0x416a75,_0x5a2bd7);emitOutboundVoiceQueueSummary(_0x5a2bd7);}_0x28b387[_0xbb91('0x2e')][_0x416a75[_0xbb91('0x64')]][_0xbb91('0x13c')]=![];})[_0xbb91('0xa3')](function(_0x2e1786){logger[_0xbb91('0x66')](_0xbb91('0x143'),util['inspect'](_0x2e1786,{'showHidden':![],'depth':null}));_0x28b387[_0xbb91('0x2e')][_0x416a75[_0xbb91('0x64')]][_0xbb91('0x13c')]=![];});};Dialer[_0xbb91('0x1c')][_0xbb91('0x39')]=_[_0xbb91('0x147')](function(){var _0x463bc3=_[_0xbb91('0x148')](this[_0xbb91('0x21')],function(_0x153df1){return _0x153df1[_0xbb91('0x149')];});var _0x6e7985=_[_0xbb91('0x148')](this[_0xbb91('0x23')],function(_0x575a29){return _0x575a29[_0xbb91('0x14a')]&&_0x575a29[_0xbb91('0x8b')]==='reachable';});if(_0x463bc3[_0xbb91('0x9d')]>0x0&&_0x6e7985['length']>0x0){return Promise[_0xbb91('0x14b')]()['then'](cmHopper[_0xbb91('0x14c')](_['map'](_0x463bc3,'id'),previewRecallmeReminderInterval,_[_0xbb91('0x14d')](_0x6e7985,'id')))[_0xbb91('0xa0')](function(_0x175287){for(var _0x4fc73b=0x0;_0x4fc73b<_0x175287[_0xbb91('0x9d')];_0x4fc73b++){var _0x5be7a5=_0x175287[_0x4fc73b][_0xbb91('0x14e')][_0xbb91('0x64')];if(_0x5be7a5)io['to'](util[_0xbb91('0x47')](_0xbb91('0x14f'),_0x5be7a5))[_0xbb91('0x41')](_0xbb91('0x150'),{'hopper':_0x175287[_0x4fc73b]});}})['catch'](function(_0x547a8d){logger[_0xbb91('0x66')](_0xbb91('0x151'),_0x547a8d);});}},0x3c*0x3e8,{'leading':!![]});Dialer['prototype']['loopClearZombieChannels']=function(){var _0x44c31e=this;setInterval(function(){_0x44c31e[_0xbb91('0x152')](_0x44c31e[_0xbb91('0xc3')],_0xbb91('0x153'));_0x44c31e[_0xbb91('0x152')](_0x44c31e[_0xbb91('0x27')],_0xbb91('0x154'));},0x32c8);};Dialer[_0xbb91('0x1c')][_0xbb91('0x152')]=function(_0x41e47a,_0x256531){var _0x5fc3ae=this;for(var _0x36e087 in _0x41e47a){if(typeof _0x41e47a[_0x36e087]!==_0xbb91('0xb1')){this[_0xbb91('0x155')][_0xbb91('0x1d')](function(){if(!_[_0xbb91('0x101')](_0x41e47a[_0x36e087])){return ami[_0xbb91('0xa4')]({'action':_0xbb91('0x8b'),'channel':_0x41e47a[_0x36e087][_0xbb91('0xf4')]})[_0xbb91('0xa3')](function(_0x22d183){if(_0x22d183[_0xbb91('0x69')]===_0xbb91('0x156')){setTimeout(function(){if(_0x41e47a[_0x36e087]&&_0x41e47a[_0x36e087][_0xbb91('0x42')]!==_0xbb91('0xc5')){_0x5fc3ae['updateOriginated'](_0x5fc3ae[_0xbb91('0x21')][_0x41e47a[_0x36e087]['queue']]);logger[_0xbb91('0x66')](_0xbb91('0x157'),_0x256531,_0x36e087,_0x41e47a[_0x36e087][_0xbb91('0xc2')]);delete _0x41e47a[_0x36e087];}if(_0x41e47a[_0x36e087]&&_0x41e47a[_0x36e087][_0xbb91('0x42')]===_0xbb91('0xc5')){_0x5fc3ae[_0xbb91('0xc6')](_0x5fc3ae[_0xbb91('0x22')][_0x41e47a[_0x36e087][_0xbb91('0xc2')]]);logger[_0xbb91('0x66')]('[Dialer][checkChannel][ivr]',_0x256531,_0x36e087,_0x41e47a[_0x36e087]['queue']);delete _0x41e47a[_0x36e087];}},0x2328);}});}});}}};Dialer['prototype'][_0xbb91('0x158')]=function(_0x3fb7af){return Promise[_0xbb91('0x14b')]()[_0xbb91('0xa0')](voiceQueueRt[_0xbb91('0x158')](_0x3fb7af))[_0xbb91('0xa3')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0xbb91('0x1c')][_0xbb91('0xc6')]=function(_0x50fa48){if(!_['isUndefined'](_0x50fa48)&&_0x50fa48!==null){if(typeof _0x50fa48[_0xbb91('0x83')]!==_0xbb91('0xb1')){if(_0x50fa48[_0xbb91('0x83')]>0x0){_0x50fa48[_0xbb91('0x83')]-=0x1;}else{logger[_0xbb91('0x66')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xbb91('0x66')](_0xbb91('0x159'));}};Dialer['prototype'][_0xbb91('0x15a')]=function(_0x350ff4,_0x4f0d2b){var _0x4a8af8=this;return function(_0x65baff){_0x4a8af8[_0xbb91('0xc6')](_0x4f0d2b);logger['error'](_0x350ff4,util[_0xbb91('0x46')](_0x65baff,{'showHidden':![],'depth':null}));};};Dialer[_0xbb91('0x1c')]['emptyContact']=function(_0x3880e2,_0x50fb02,_0x58772e){var _0x5c89eb={'state':0x19,'statedesc':_0xbb91('0x15b')};this[_0xbb91('0xc6')](_0x50fb02);this[_0xbb91('0x11d')](_['merge'](_0x5c89eb,_[_0xbb91('0x77')](_0x58772e,[_0xbb91('0xe1'),_0xbb91('0xe2'),_0xbb91('0x15c'),_0xbb91('0xe3'),_0xbb91('0xe4')])),'[emptyContact][createHistory]','[emptyContact]');logger[_0xbb91('0x66')](_0x3880e2);};Dialer['prototype']['saveInDb']=function(_0x33108a,_0x1099c1,_0xbe2496){hopperUtils['createHistory'](_0x33108a)['catch'](loggerCatch(_0x1099c1));hopperUtils['moveContactManagedDialer'](_0x33108a)[_0xbb91('0xa3')](loggerCatch(_0xbe2496));};Dialer[_0xbb91('0x1c')][_0xbb91('0xdd')]=function(_0x2ab63e,_0x23f3f0){hopperUtils[_0xbb91('0xce')](_0x2ab63e)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xcf')));if(_0x23f3f0==0x0){hopperUtils['moveContactManagedDialer'](_0x2ab63e)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0xbb91('0x1c')][_0xbb91('0x151')]=function(_0x1da0b4){return Promise[_0xbb91('0x14b')]()['then'](cmHopper[_0xbb91('0x14c')](_0x1da0b4['id'],previewRecallmeReminderInterval))[_0xbb91('0xa0')](function(_0x236868){for(var _0x25b968=0x0;_0x25b968<_0x236868[_0xbb91('0x9d')];_0x25b968++){var _0xbd7e6f=_0x236868[_0x25b968]['Agent'][_0xbb91('0x64')];if(_0xbd7e6f)io['to'](util[_0xbb91('0x47')](_0xbb91('0x14f'),_0xbd7e6f))[_0xbb91('0x41')](_0xbb91('0x150'),{'hopper':_0x236868[_0x25b968]});}})[_0xbb91('0xa3')](function(){});};Dialer[_0xbb91('0x1c')][_0xbb91('0x15d')]=function(_0x2340b6){var _0x10823a=this;return function(){_0x10823a[_0xbb91('0x15e')](_0x2340b6);};};Dialer[_0xbb91('0x1c')]['actionOriginate']=function(_0x5098ad,_0x13d666){var _0x25e8de=this;var _0xcd46cd=uuid['v4']();this['actions'][_0xcd46cd]=new Action(_0x5098ad,_0x13d666,_0xcd46cd);return new Promise(function(_0x3073c1,_0x4c7dbf){if(_['isUndefined'](_0x5098ad)&&typeof _0x5098ad!==_0xbb91('0x15f')){return _0x4c7dbf(msgResponse(_0xbb91('0x160'),_0xbb91('0x96'),_0xbb91('0x161')));}if(_[_0xbb91('0x56')](_0x13d666['phone'])||_0x13d666[_0xbb91('0x162')]===null){return _0x4c7dbf(msgResponse(_0xbb91('0x160'),'Failure',_0xbb91('0x163')));}var _0x3237c5={'XMD-CALLERID':_0x25e8de['actions'][_0xcd46cd][_0xbb91('0x164')](),'XMD-AGI':_0x5098ad[_0xbb91('0x139')]?util['format'](_0xbb91('0x165'),ipAgi,_0x5098ad[_0xbb91('0x139')]):_0xbb91('0x166'),'XMD-AGIAFTER':_0x5098ad[_0xbb91('0xcc')]?util['format'](_0xbb91('0x165'),ipAgi,_0x5098ad['dialQueueProject2']):_0xbb91('0x166'),'XMD-QUEUE':utils[_0xbb91('0x167')](_0x5098ad)?util['format'](_0xbb91('0x168'),_0x5098ad[_0xbb91('0x64')],_0x5098ad[_0xbb91('0x169')]||'',_0x5098ad['dialAgiAfterHangupAgent']?'c':'',_0x5098ad[_0xbb91('0xd3')]||0x3):'NONE','XMD-CONTACTID':_0x13d666[_0xbb91('0xe1')],'XMD-CDRTYPE':_0xbb91('0x9'),'CALLERID(all)':_0x25e8de[_0xbb91('0x27')][_0xcd46cd]['getCaller'](),'XMD-AMD':_0x5098ad['dialAMDActive']?_0xbb91('0x142'):_0xbb91('0x166'),'XMD-DESTINATION':_0xbb91('0x114')};if(_0x5098ad[_0xbb91('0x115')]){_0x3237c5['XMD-AMDINITIALSILENCE']=_0x5098ad['dialAMDInitialSilence']||0x9c4;_0x3237c5[_0xbb91('0x16a')]=_0x5098ad[_0xbb91('0x16b')]||0x5dc;_0x3237c5[_0xbb91('0x16c')]=_0x5098ad[_0xbb91('0x16d')]||0x320;_0x3237c5[_0xbb91('0x16e')]=_0x5098ad[_0xbb91('0x16f')]||0x1388;_0x3237c5[_0xbb91('0x170')]=_0x5098ad[_0xbb91('0x171')]||0x64;_0x3237c5[_0xbb91('0x172')]=_0x5098ad[_0xbb91('0x173')]||0x32;_0x3237c5[_0xbb91('0x174')]=_0x5098ad[_0xbb91('0x175')]||0x3;_0x3237c5[_0xbb91('0x176')]=_0x5098ad[_0xbb91('0x177')]||0x100;_0x3237c5[_0xbb91('0x178')]=_0x5098ad[_0xbb91('0x179')]||0x1388;}if(utils[_0xbb91('0x167')](_0x5098ad)){_0x3237c5[_0xbb91('0x17a')]=_0x13d666[_0xbb91('0xe3')];}else{_0x3237c5[_0xbb91('0x17b')]=_0x13d666[_0xbb91('0xe4')];}for(var _0x3ab01d in _0x13d666['Contact']){if(typeof _0x13d666[_0xbb91('0x17c')][_0x3ab01d]!==_0xbb91('0xb1')){if(isNotNull(_0x13d666[_0xbb91('0x17c')][_0x3ab01d])&&_0x3ab01d!=='id'&&_0x3ab01d!==_0xbb91('0x17d')&&_0x3ab01d!==_0xbb91('0x17e')&&_0x3ab01d!==_0xbb91('0x17f')){_0x3237c5[util[_0xbb91('0x47')](_0xbb91('0x180'),_0xbb91('0x181'),_[_0xbb91('0x182')](_0x3ab01d))]=_0x13d666[_0xbb91('0x17c')][_0x3ab01d];}}}var _0x5d0de4=_0x25e8de[_0xbb91('0x89')](_0x5098ad[_0xbb91('0x8f')])?utils[_0xbb91('0x183')](_0x5098ad[_0xbb91('0x8f')][_0xbb91('0x184')],_0x5098ad['dialOriginateCallerIdName'],_0x5098ad[_0xbb91('0x185')]>0x0?utils[_0xbb91('0x186')](_0x5098ad[_0xbb91('0x187')],_0x5098ad[_0xbb91('0x185')]):_0x5098ad[_0xbb91('0x187')]):utils[_0xbb91('0x183')](_[_0xbb91('0x101')](_0x5098ad[_0xbb91('0x90')])?_0x5098ad['Trunk'][_0xbb91('0x184')]:_0x5098ad[_0xbb91('0x90')][_0xbb91('0x184')],_0x5098ad[_0xbb91('0x188')],_0x5098ad[_0xbb91('0x185')]>0x0?utils['getCallerIdRandom'](_0x5098ad[_0xbb91('0x187')],_0x5098ad[_0xbb91('0x185')]):_0x5098ad[_0xbb91('0x187')]);if(_0x5d0de4){_0x3237c5[_0xbb91('0x189')]=_0x25e8de['actions'][_0xcd46cd][_0xbb91('0x18a')]=utils[_0xbb91('0x18b')](_0x5d0de4);_0x3237c5[_0xbb91('0x18c')]=_0x13d666[_0xbb91('0x162')];}_0x5098ad['variables']=_0x3237c5;return ami[_0xbb91('0xa4')]({'actionid':_0xcd46cd,'action':'originate','channel':_0x25e8de[_0xbb91('0x89')](_0x5098ad[_0xbb91('0x8f')])?util['format']('SIP/%s/%s%s',_0x5098ad[_0xbb91('0x8f')][_0xbb91('0x64')],isNotNull(_0x5098ad['dialPrefix'])?_0x5098ad['dialPrefix']['trim']()||'':'',_0x5098ad['dialCutDigit']>0x0?_0x13d666[_0xbb91('0x162')][_0xbb91('0x18d')](_0x5098ad[_0xbb91('0x18e')]):_0x13d666[_0xbb91('0x162')]):util[_0xbb91('0x47')](_0xbb91('0x18f'),_[_0xbb91('0x101')](_0x5098ad[_0xbb91('0x90')])?_0x5098ad[_0xbb91('0x8f')][_0xbb91('0x64')]:_0x5098ad['TrunkBackup']['name'],isNotNull(_0x5098ad[_0xbb91('0x190')])?_0x5098ad[_0xbb91('0x190')][_0xbb91('0x191')]()||'':'',_0x5098ad[_0xbb91('0x18e')]>0x0?_0x13d666[_0xbb91('0x162')][_0xbb91('0x18d')](_0x5098ad[_0xbb91('0x18e')]):_0x13d666[_0xbb91('0x162')]),'callerid':_0x5d0de4,'Exten':'xcally-motion-dialer','Context':_0xbb91('0x192'),'Priority':'1','variable':_0x3237c5,'timeout':(_0x5098ad[_0xbb91('0x193')]||0x1e)*0x3e8,'async':!![],'channelid':_0xcd46cd})[_0xbb91('0xa0')](function(_0x448d6a){return _0x3073c1(_0x448d6a);})[_0xbb91('0xa3')](function(_0x734cd8){_0x5098ad[_0xbb91('0x194')]+=0x1;var _0x274911=new History(_0x25e8de[_0xbb91('0x27')][_0xcd46cd]);logger[_0xbb91('0x66')](util[_0xbb91('0x47')](_0xbb91('0x195'),JSON['stringify'](_0x734cd8)));_0x274911[_0xbb91('0x70')]=0xe;_0x274911[_0xbb91('0x71')]='OriginateError';_0x274911[_0xbb91('0x73')]=moment()['format'](_0xbb91('0xc7'));_0x274911[_0xbb91('0x72')]=_0x274911[_0xbb91('0x73')];hopperUtils['createHistory'](_0x274911)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x196')));_0x25e8de[_0xbb91('0x135')](_0x274911)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x196')))['finally'](function(){delete _0x25e8de[_0xbb91('0x27')][_0xcd46cd];return _0x4c7dbf(msgResponse('originate',_0xbb91('0x88'),_0xbb91('0x197')));});});});};Dialer[_0xbb91('0x1c')]['checkRetriveMax']=function(_0x4de906,_0x31e1cf,_0x4bca70){var _0x37961c=new History(_0x31e1cf);if(_0x37961c[_0xbb91('0x124')]+_0x37961c[_0xbb91('0x125')]+_0x37961c[_0xbb91('0x126')]+_0x37961c[_0xbb91('0x127')]+_0x37961c[_0xbb91('0xdb')]+_0x37961c['countabandonedretry']+_0x37961c[_0xbb91('0x122')]+_0x37961c[_0xbb91('0x198')]>=_0x4bca70['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x4de906){case 0x3:if(_0x37961c[_0xbb91('0x126')]>=_0x4bca70[_0xbb91('0x199')]-0x1){return!![];}hopperUtils[_0xbb91('0xfe')]({'active':![],'countnoanswerretry':_0x37961c[_0xbb91('0x126')]+=0x1,'scheduledat':moment()['add'](_0x4bca70[_0xbb91('0x19a')],_0xbb91('0xe0'))[_0xbb91('0x47')](_0xbb91('0xc7')),'ContactId':_0x37961c[_0xbb91('0xe1')],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c[_0xbb91('0xe3')]||undefined,'CampaignId':_0x37961c['CampaignId']||undefined})[_0xbb91('0xa3')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x37961c[_0xbb91('0x124')]>=_0x4bca70['dialBusyMaxRetry']-0x1){return!![];}hopperUtils[_0xbb91('0xfe')]({'active':![],'countbusyretry':_0x37961c[_0xbb91('0x124')]+=0x1,'scheduledat':moment()[_0xbb91('0xde')](_0x4bca70['dialBusyRetryFrequency'],_0xbb91('0xe0'))['format'](_0xbb91('0xc7')),'ContactId':_0x37961c[_0xbb91('0xe1')],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c[_0xbb91('0xe3')]||undefined,'CampaignId':_0x37961c[_0xbb91('0xe4')]||undefined})['catch'](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x37961c[_0xbb91('0x125')]>=_0x4bca70[_0xbb91('0x19b')]-0x1){return!![];}hopperUtils[_0xbb91('0xfe')]({'active':![],'countcongestionretry':_0x37961c['countcongestionretry']+=0x1,'scheduledat':moment()['add'](_0x4bca70[_0xbb91('0x19c')],_0xbb91('0xe0'))[_0xbb91('0x47')](_0xbb91('0xc7')),'ContactId':_0x37961c['ContactId'],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c[_0xbb91('0xe3')]||undefined,'CampaignId':_0x37961c[_0xbb91('0xe4')]||undefined})['catch'](loggerCatch(_0xbb91('0x19d')));break;case 0x0:if(_0x37961c['countnosuchnumberretry']>=_0x4bca70[_0xbb91('0x19e')]-0x1){return!![];}else{hopperUtils['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x37961c[_0xbb91('0x127')]+=0x1,'scheduledat':moment()[_0xbb91('0xde')](_0x4bca70[_0xbb91('0x19f')],_0xbb91('0xe0'))[_0xbb91('0x47')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x37961c[_0xbb91('0xe1')],'ListId':_0x37961c['ListId'],'VoiceQueueId':_0x37961c[_0xbb91('0xe3')]||undefined,'CampaignId':_0x37961c['CampaignId']||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x1a0')));}break;case 0xa:if(_0x37961c[_0xbb91('0xdb')]>=_0x4bca70[_0xbb91('0xdc')]-0x1){return!![];}hopperUtils[_0xbb91('0xfe')]({'active':![],'countdropretry':_0x37961c[_0xbb91('0xdb')]+=0x1,'scheduledat':moment()[_0xbb91('0xde')](_0x4bca70['dialDropRetryFrequency'],_0xbb91('0xe0'))['format'](_0xbb91('0xc7')),'ContactId':_0x37961c['ContactId'],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c['VoiceQueueId']||undefined,'CampaignId':_0x37961c[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0xe5')));break;case 0xb:if(_0x37961c['countabandonedretry']>=_0x4bca70[_0xbb91('0xee')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x37961c[_0xbb91('0xed')]+=0x1,'scheduledat':moment()[_0xbb91('0xde')](_0x4bca70[_0xbb91('0xec')],_0xbb91('0xe0'))['format'](_0xbb91('0xc7')),'ContactId':_0x37961c[_0xbb91('0xe1')],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c['VoiceQueueId']||undefined,'CampaignId':_0x37961c[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x37961c['countmachineretry']>=_0x4bca70[_0xbb91('0x12b')]-0x1){return!![];}hopperUtils[_0xbb91('0xfe')]({'active':![],'countmachineretry':_0x37961c['countmachineretry']+=0x1,'scheduledat':moment()[_0xbb91('0xde')](_0x4bca70[_0xbb91('0x12e')],_0xbb91('0xe0'))[_0xbb91('0x47')](_0xbb91('0xc7')),'ContactId':_0x37961c[_0xbb91('0xe1')],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c['VoiceQueueId']||undefined,'CampaignId':_0x37961c[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x12f')));break;case 0x14:if(_0x37961c[_0xbb91('0x198')]>=_0x4bca70[_0xbb91('0x1a1')]-0x1){return!![];}hopperUtils[_0xbb91('0xfe')]({'active':![],'countagentrejectretry':_0x37961c[_0xbb91('0x198')]+=0x1,'scheduledat':moment()[_0xbb91('0xde')](_0x4bca70[_0xbb91('0x1a2')],_0xbb91('0xe0'))[_0xbb91('0x47')](_0xbb91('0xc7')),'ContactId':_0x37961c['ContactId'],'ListId':_0x37961c[_0xbb91('0xe2')],'VoiceQueueId':_0x37961c['VoiceQueueId']||undefined,'CampaignId':_0x37961c[_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x1a3')));break;default:return!![];}};Dialer['prototype']['callProgressDetecting']=function(_0x20dd61,_0x34d101,_0x1242d7){var _0x43ccdc=this;var _0x7243f8=new History(_0x20dd61);var _0x429901=![];var _0x2cb6e3;var _0x393c5e;return new Promise(function(_0x512e9d,_0x5c71a3){if(_[_0xbb91('0x56')](_0x34d101)&&typeof _0x34d101!==_0xbb91('0x15f')){return _0x5c71a3(msgResponse('[callProgressDetecting]',_0xbb91('0x96'),_0xbb91('0x1a4')));}if(_[_0xbb91('0x56')](_0x1242d7)&&typeof _0x1242d7!==_0xbb91('0x15f')){return _0x5c71a3(msgResponse(_0xbb91('0x1a5'),_0xbb91('0x96'),_0xbb91('0x1a6')));}hopperUtils[_0xbb91('0xd9')](_0x7243f8,_0x1242d7[_0xbb91('0xc9')],_0x34d101)['then'](function(_0x1e2919){if(_0x1e2919[_0xbb91('0xef')]==0x1)_0x429901=!![];switch(_0x1242d7[_0xbb91('0xc9')]){case'0':_0x34d101['outboundNoSuchCallsDay']+=0x1;_0x7243f8[_0xbb91('0x70')]=0x0;_0x7243f8['statedesc']=_0xbb91('0x1a7');_0x7243f8[_0xbb91('0x127')]+=0x1;_0x7243f8['countglobal']+=0x1;ami[_0xbb91('0x41')](_0xbb91('0x1a8'),ut[_0xbb91('0x123')](_0x20dd61,_0xbb91('0x1a9')));_0x2cb6e3=_0x34d101[_0xbb91('0x19f')];_0x393c5e=_0x34d101[_0xbb91('0xd8')];hopperUtils[_0xbb91('0xce')](_0x7243f8)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x132')));if(_0x43ccdc[_0xbb91('0x1aa')](0x0,_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8['countnosuchnumberretry']>=_0x34d101[_0xbb91('0x19e')]){_0x43ccdc[_0xbb91('0x12c')](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1ab'));}else{_0x43ccdc[_0xbb91('0x129')](_0x7243f8,_0x512e9d,_0x5c71a3,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x34d101[_0xbb91('0x1ac')]+=0x1;_0x7243f8[_0xbb91('0x70')]=0x3;_0x7243f8[_0xbb91('0x71')]='NoAnswer';_0x7243f8[_0xbb91('0x126')]+=0x1;_0x7243f8[_0xbb91('0xeb')]+=0x1;var _0x2d99b3=ut[_0xbb91('0x1ad')](_0x20dd61,_0x34d101);ami[_0xbb91('0x41')](_0xbb91('0x1ae'),_0x2d99b3);_0x2cb6e3=_0x34d101[_0xbb91('0x19a')];_0x393c5e=_0x34d101[_0xbb91('0xd8')];hopperUtils[_0xbb91('0xce')](_0x7243f8)['catch'](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x43ccdc[_0xbb91('0x1aa')](0x3,_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8['countnoanswerretry']>=_0x34d101[_0xbb91('0x199')]){_0x43ccdc[_0xbb91('0x12c')](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1af'));}else{_0x43ccdc[_0xbb91('0x129')](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1af'));}}break;case'5':_0x34d101[_0xbb91('0x1b0')]+=0x1;_0x7243f8[_0xbb91('0x70')]=0x5;_0x7243f8[_0xbb91('0x71')]=_0xbb91('0x1b1');_0x7243f8['countbusyretry']+=0x1;_0x7243f8[_0xbb91('0xeb')]+=0x1;ami[_0xbb91('0x41')]('custom:agentbusy',ut[_0xbb91('0x123')](_0x20dd61,_0xbb91('0x1b2')));_0x2cb6e3=_0x34d101[_0xbb91('0x1b3')];_0x393c5e=_0x34d101[_0xbb91('0xd8')];hopperUtils[_0xbb91('0xce')](_0x7243f8)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x1b4')));if(_0x43ccdc[_0xbb91('0x1aa')](0x5,_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8['countbusyretry']>=_0x34d101[_0xbb91('0x1b5')]){_0x43ccdc['createStateFinal'](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1b6'));}else{_0x43ccdc[_0xbb91('0x129')](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1b6'));}}break;case'8':_0x34d101[_0xbb91('0x1b7')]+=0x1;_0x7243f8[_0xbb91('0x70')]=0x8;_0x7243f8[_0xbb91('0x71')]=_0xbb91('0x1b8');_0x7243f8['countcongestionretry']+=0x1;_0x7243f8[_0xbb91('0xeb')]+=0x1;_0x2cb6e3=_0x34d101[_0xbb91('0x19c')];_0x393c5e=_0x34d101[_0xbb91('0xd8')];ami[_0xbb91('0x41')](_0xbb91('0x1b9'),ut['buildObj'](_0x20dd61,_0xbb91('0x1ba')));hopperUtils[_0xbb91('0xce')](_0x7243f8)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x1bb')));if(_0x43ccdc['checkRetriveMax'](0x8,_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8[_0xbb91('0x125')]>=_0x34d101[_0xbb91('0x19b')]){_0x43ccdc[_0xbb91('0x12c')](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1bc'));}else{_0x43ccdc[_0xbb91('0x129')](_0x7243f8,_0x512e9d,_0x5c71a3,'reason\x208\x20congestion');}}break;case'11':_0x34d101[_0xbb91('0x1bd')]+=0x1;_0x7243f8[_0xbb91('0x70')]=0xb;_0x7243f8[_0xbb91('0x71')]=_0xbb91('0x1be');_0x7243f8[_0xbb91('0xed')]+=0x1;_0x7243f8[_0xbb91('0xeb')]+=0x1;_0x2cb6e3=_0x34d101[_0xbb91('0xec')];_0x393c5e=_0x34d101[_0xbb91('0xd8')];hopperUtils['createHistory'](_0x7243f8)[_0xbb91('0xa3')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x43ccdc[_0xbb91('0x1aa')](0xb,_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8[_0xbb91('0xed')]>=_0x34d101[_0xbb91('0xee')]){_0x43ccdc[_0xbb91('0x12c')](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1bf'));}else{_0x43ccdc[_0xbb91('0x129')](_0x7243f8,_0x512e9d,_0x5c71a3,'reason\x2011\x20abandoned');}}break;case'20':_0x34d101[_0xbb91('0x1c0')]+=0x1;_0x7243f8['state']=0x14;_0x7243f8[_0xbb91('0x71')]='AgentReject';_0x7243f8[_0xbb91('0x198')]+=0x1;_0x7243f8[_0xbb91('0xeb')]+=0x1;_0x2cb6e3=_0x34d101['dialAgentRejectRetryFrequency'];_0x393c5e=_0x34d101['callAdditionalPhoneAfterMin'];ami[_0xbb91('0x41')](_0xbb91('0x1c1'),ut['buildObj'](_0x20dd61,_0xbb91('0x1c2')));hopperUtils[_0xbb91('0xce')](_0x7243f8)[_0xbb91('0xa3')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x43ccdc[_0xbb91('0x1aa')](0x14,_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8[_0xbb91('0x198')]>=_0x34d101[_0xbb91('0x1a1')]){_0x43ccdc['createStateFinal'](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1c3'));}else{_0x43ccdc['stateGlobal'](_0x7243f8,_0x512e9d,_0x5c71a3,_0xbb91('0x1c3'));}}break;default:_0x34d101[_0xbb91('0x1c4')]+=0x1;_0x7243f8[_0xbb91('0x70')]=0xc;_0x7243f8['statedesc']=_0x1242d7[_0xbb91('0xc9')];_0x2cb6e3=_0x34d101[_0xbb91('0x1a2')];_0x393c5e=_0x34d101[_0xbb91('0xd8')];hopperUtils[_0xbb91('0xce')](_0x7243f8)[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x1c5')));if(_0x43ccdc[_0xbb91('0x1aa')](_0x1242d7['reason'],_0x20dd61,_0x34d101)&&!_0x429901){if(_0x7243f8[_0xbb91('0x124')]+_0x7243f8[_0xbb91('0x125')]+_0x7243f8[_0xbb91('0x126')]+_0x7243f8[_0xbb91('0x127')]+_0x7243f8[_0xbb91('0xdb')]+_0x7243f8[_0xbb91('0xed')]+_0x7243f8[_0xbb91('0x122')]+_0x7243f8[_0xbb91('0x198')]>=_0x34d101[_0xbb91('0x128')]){_0x43ccdc[_0xbb91('0x129')](_0x7243f8,_0x512e9d,_0x5c71a3,_0x1242d7['reason']);}else{_0x43ccdc['createStateFinal'](_0x7243f8,_0x512e9d,_0x5c71a3,_0x1242d7[_0xbb91('0xc9')]);}}}})[_0xbb91('0xa0')](function(){if(_0x429901){hopperUtils[_0xbb91('0xf2')](_0x7243f8,_0x2cb6e3,_0x393c5e)[_0xbb91('0xa0')](function(){return _0x512e9d(0x1);});}});});};Dialer[_0xbb91('0x1c')]['stateGlobal']=function(_0x76e8b6,_0x2d3b5b,_0x57d191,_0x58df7c){var _0x3474b9=new Final(_0x76e8b6);_0x3474b9[_0xbb91('0x70')]=0xf;_0x3474b9[_0xbb91('0x71')]=_0xbb91('0x1c6');this[_0xbb91('0x12c')](_0x3474b9,_0x2d3b5b,_0x57d191,_0x58df7c);};Dialer[_0xbb91('0x1c')]['createStateFinal']=function(_0x15b781,_0x49d887,_0x5ac3f2,_0x50598b){hopperUtils[_0xbb91('0x135')](_0x15b781)[_0xbb91('0xa0')](function(){return _0x49d887(msgResponse(_0xbb91('0x1a5'),'Success',_0x50598b));})[_0xbb91('0xa3')](function(){return _0x5ac3f2(msgResponse(_0xbb91('0x1c7'),_0xbb91('0x96'),_0xbb91('0x1c8')));});};Dialer[_0xbb91('0x1c')][_0xbb91('0xa')]=function(_0x20572e){var _0x2f5748=_0x20572e[_0xbb91('0x1c9')]/0x64;var _0x110663=_0x20572e[_0xbb91('0xd4')]/(_0x20572e[_0xbb91('0xd4')]+_0x20572e[_0xbb91('0xc8')]);var _0x3a4278=Math['round'](_0x20572e['predictiveIntervalAvailable']*(_0x20572e[_0xbb91('0x1ca')]/0x64));var _0x7dd464=Math['round'](_0x20572e[_0xbb91('0x1cb')]*(_0x20572e[_0xbb91('0x1cc')]/0x64));var _0x29bfce=_0x20572e[_0xbb91('0x13f')]+_0x20572e[_0xbb91('0x141')];var _0x4f1754=Math[_0xbb91('0x1cd')](_0x20572e[_0xbb91('0x5e')]*_0x20572e[_0xbb91('0x61')]*_0x20572e[_0xbb91('0x1ce')]*_0x20572e[_0xbb91('0x1cf')]);if(_[_0xbb91('0x56')](_0x20572e[_0xbb91('0x62')])){if(!_['isUndefined'](_0x20572e[_0xbb91('0x2a')])){_0x20572e['startPredictive']=undefined;loggerPredictive[_0xbb91('0x66')](_0xbb91('0x1d0'),_0xbb91('0x1d1'));}if(!_[_0xbb91('0x56')](_0x20572e['handlePredictive'])){loggerPredictive['error'](_0xbb91('0x1d0'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x20572e[_0xbb91('0x65')]);_0x20572e[_0xbb91('0x65')]=undefined;}_0x20572e[_0xbb91('0x62')]=moment()[_0xbb91('0x47')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x20572e[_0xbb91('0x64')],_0xbb91('0x1d2'),_0x20572e[_0xbb91('0x62')]);this[_0xbb91('0xb8')](_0x20572e,0x1);}else if(ifInterval(_0x20572e[_0xbb91('0x1d3')],_0x20572e[_0xbb91('0x62')])){this[_0xbb91('0xb8')](_0x20572e,0x1);loggerPredictiveCalls[_0xbb91('0x4c')]('[startMethodPredictive][StartProgressive][Loop]',_0x20572e[_0xbb91('0x62')],_0x20572e[_0xbb91('0x64')]);_0x20572e[_0xbb91('0x5e')]=0x0;_0x20572e[_0xbb91('0xd5')]=0x0;}else if(_0x2f5748<_0x110663&&_0x20572e[_0xbb91('0x1d4')]===_0xbb91('0x1d5')){clearPredictiveAttributes(_0x20572e);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x1d6'),'Dropped\x20calls\x20day',_0x110663,'startProgressive',_0x20572e[_0xbb91('0x64')]);}else if(_0x4f1754<_0x20572e[_0xbb91('0xd5')]&&_0x20572e[_0xbb91('0x1d4')]===_0xbb91('0x1d5')){clearPredictiveAttributes(_0x20572e);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x1d7'),'Max\x20Drop\x20',_0x4f1754,_0xbb91('0x1d8'),_0x20572e[_0xbb91('0xd5')],_0xbb91('0x62'),_0x20572e[_0xbb91('0x64')]);}else if(!ifInterval(_0x20572e[_0xbb91('0x1d3')],_0x20572e[_0xbb91('0x62')])&&_[_0xbb91('0x56')](_0x20572e['startPredictive'])&&!_[_0xbb91('0x56')](_0x20572e['startProgressive'])){_0x20572e['startPredictive']=moment()[_0xbb91('0x47')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xbb91('0x4c')](_0x20572e[_0xbb91('0x64')],_0xbb91('0x1d9'),_0x20572e[_0xbb91('0x2a')]);hopperUtils[_0xbb91('0x1da')](_0x20572e[_0xbb91('0x1d3')])[_0xbb91('0xa0')](this[_0xbb91('0x1db')](_0x20572e))[_0xbb91('0xa0')](mergeDataErlangB(_0x20572e))[_0xbb91('0xa0')](this[_0xbb91('0x1dc')](_0x20572e))[_0xbb91('0xa3')](loggerCatchPredictive(_0xbb91('0x1dd'),_0x20572e));}else if(!ifInterval(_0x20572e[_0xbb91('0x1d3')],_0x20572e[_0xbb91('0x2a')])){_0x20572e[_0xbb91('0xd5')]=0x0;_0x20572e[_0xbb91('0x2a')]=moment()['format'](_0xbb91('0xc7'));loggerPredictive[_0xbb91('0x4c')](_0x20572e[_0xbb91('0x64')],'recalculate\x20predictive\x20at',_0x20572e[_0xbb91('0x2a')]);clearInterval(_0x20572e[_0xbb91('0x65')]);_0x20572e[_0xbb91('0x65')]=undefined;hopperUtils[_0xbb91('0x1da')](_0x20572e[_0xbb91('0x1d3')])['then'](this['getDataPredictive'](_0x20572e))['then'](mergeDataErlangB(_0x20572e))[_0xbb91('0xa0')](this[_0xbb91('0x1dc')](_0x20572e))[_0xbb91('0xa3')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x20572e));}else if(_0x20572e[_0xbb91('0x1cb')]&&_0x29bfce<_0x20572e[_0xbb91('0x1cb')]-_0x7dd464){clearPredictiveAttributes(_0x20572e);loggerPredictive[_0xbb91('0x4c')](_0x20572e[_0xbb91('0x64')],_0xbb91('0x1de'),_0x29bfce,_0xbb91('0x1df'),_0x20572e[_0xbb91('0x1cb')],'-',_0x7dd464,'=',_0x20572e['predictiveIntervalAvailable']-_0x7dd464,')');}else if(_0x20572e[_0xbb91('0x1cb')]&&_0x29bfce>_0x20572e[_0xbb91('0x1cb')]+_0x3a4278){clearPredictiveAttributes(_0x20572e);loggerPredictive['info'](_0x20572e[_0xbb91('0x64')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x29bfce,_0xbb91('0x1e0'),_0x20572e[_0xbb91('0x1cb')],'+',_0x3a4278,'=',_0x20572e[_0xbb91('0x1cb')]+_0x3a4278,')');}};Dialer[_0xbb91('0x1c')][_0xbb91('0x1db')]=function(_0x5c3403){var _0x1a3ca0=this;return function(_0xbca7b5){return new Promise(function(_0x34c076,_0x75b088){_[_0xbb91('0xfb')](_0x5c3403,_0xbca7b5[0x0]);if(checkGetDataPredictive(_0xbca7b5[0x0])){var _0x59e292=_0x5c3403[_0xbb91('0x1cb')]=_0x5c3403[_0xbb91('0x141')]+_0x5c3403[_0xbb91('0x13f')];var _0x307174=_0x5c3403[_0xbb91('0x1d3')]*0x3c;var _0x1f84e4=_0xbca7b5[0x0][_0xbb91('0x54')]+_0xbca7b5[0x0][_0xbb91('0x58')];var _0x453a3b=(_0xbca7b5[0x0]['predictiveIntervalAnsweredCalls']+_0xbca7b5[0x0][_0xbb91('0x50')]+_0xbca7b5[0x0][_0xbb91('0x1e1')])/_0xbca7b5[0x0]['predictiveIntervalTotalCalls'];_0x5c3403[_0xbb91('0x1ce')]=_0x453a3b>0x0?_0x453a3b:0x1;switch(_0x5c3403[_0xbb91('0x1d4')]){case'dropRate':var _0x4898c8=_0x5c3403[_0xbb91('0x1c9')]/0x64;return _0x1a3ca0[_0xbb91('0x1e2')](_0x59e292,_0x307174,_0x1f84e4,_0x453a3b,_0x4898c8)[_0xbb91('0xa0')](function(_0x43d9fd){return _0x34c076(_0x43d9fd);});case _0xbb91('0x1e3'):var _0x32c883=_0x5c3403[_0xbb91('0x1c9')]/0x64;return _0x1a3ca0[_0xbb91('0x1e4')](_0x59e292,_0x307174,_0x1f84e4,_0x453a3b,_0x32c883)['then'](function(_0x33547a){return _0x34c076(_0x33547a);});default:return _0x75b088(msgResponse(_0xbb91('0x1e5'),_0xbb91('0x96'),'Unknown\x20Predictive'));}}else{return _0x75b088(msgResponse(_0xbb91('0x1e5'),_0xbb91('0x96'),_0xbb91('0x1e6')));}});};};Dialer[_0xbb91('0x1c')][_0xbb91('0x1e7')]=function(_0x440f19){var _0x32b546=this;return function(_0x3a5139){return new Promise(function(_0x21014e,_0xa2fb52){_[_0xbb91('0xfb')](_0x440f19,_0x3a5139[0x0]);if(checkGetDataPredictive(_0x3a5139[0x0])){loggerPredictive[_0xbb91('0x4c')](JSON[_0xbb91('0x76')](_0x3a5139[0x0]));if(_0x440f19[_0xbb91('0x1d4')]===_0xbb91('0x1d5')){return _0x32b546[_0xbb91('0x158')](_0x440f19['id'])[_0xbb91('0xa0')](function(_0x3a7358){var _0x130daf=_0x440f19['loggedIn']-_0x3a7358[0x0]['outboundQueuePauses'];var _0x571e84=_0x440f19[_0xbb91('0x1d3')]*0x3c;var _0x56db09=_0x3a5139[0x0][_0xbb91('0x54')]+_0x3a5139[0x0][_0xbb91('0x58')];var _0x438321=(_0x3a5139[0x0][_0xbb91('0x1e8')]+_0x3a5139[0x0][_0xbb91('0x50')]+_0x3a5139[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x3a5139[0x0]['predictiveIntervalTotalCalls'];var _0x3e9d5d=_0x440f19['dialPredictiveOptimizationPercentage']/0x64;_0x440f19['predictiveIntervalPauses']=_0x3a7358[0x0][_0xbb91('0x1e9')]||0x0;_0x440f19[_0xbb91('0x1ce')]=_0x438321>0x0?_0x438321:0x1;return _0x32b546[_0xbb91('0x1e2')](_0x130daf,_0x571e84,_0x56db09,_0x438321,_0x3e9d5d);})[_0xbb91('0xa0')](function(_0x1a753f){return _0x21014e(_0x1a753f);})[_0xbb91('0xa3')](function(_0xf69ff2){return _0xa2fb52(msgResponse(_0xbb91('0x1ea'),'Failure',JSON[_0xbb91('0x76')](_0xf69ff2)));});}if(_0x440f19[_0xbb91('0x1d4')]===_0xbb91('0x1e3')){return _0x32b546[_0xbb91('0x158')](_0x440f19['id'])['then'](function(_0x2a2a61){var _0x2a2835=_0x440f19[_0xbb91('0x1eb')]-_0x2a2a61[0x0][_0xbb91('0x1e9')];var _0x483bf1=_0x440f19['dialPredictiveInterval']*0x3c;var _0x1975dd=_0x3a5139[0x0]['predictiveIntervalAvgTalktime']+_0x3a5139[0x0][_0xbb91('0x58')];var _0x16c282=(_0x3a5139[0x0][_0xbb91('0x1e8')]+_0x3a5139[0x0][_0xbb91('0x50')]+_0x3a5139[0x0][_0xbb91('0x1e1')])/_0x3a5139[0x0][_0xbb91('0x4e')];var _0x25e59f=_0x440f19[_0xbb91('0x1c9')]/0x64;_0x440f19[_0xbb91('0x1ec')]=_0x2a2a61[0x0][_0xbb91('0x1e9')]||0x0;_0x440f19[_0xbb91('0x1ce')]=_0x16c282>0x0?_0x16c282:0x1;return _0x32b546[_0xbb91('0x1e4')](_0x2a2835,_0x483bf1,_0x1975dd,_0x16c282,_0x25e59f);})[_0xbb91('0xa0')](function(_0x53fdbc){return _0x21014e(_0x53fdbc);})[_0xbb91('0xa3')](function(_0x42f315){return _0xa2fb52(msgResponse(_0xbb91('0x1ea'),_0xbb91('0x96'),JSON[_0xbb91('0x76')](_0x42f315)));});}}else{return _0xa2fb52(msgResponse(_0xbb91('0x1e5'),'Failure','check\x20failure'));}});};};Dialer[_0xbb91('0x1c')][_0xbb91('0x1dc')]=function(_0x42250a){var _0x5c52e3=this;return function(){var _0x1c5c27=0x0;var _0x3ac481=Math[_0xbb91('0x1cd')](_0x42250a['erlangCallToSecond']*0x3e8);if(_0x3ac481>0x0){_0x3ac481=_0x3ac481<0x64?0x64:_0x3ac481;loggerPredictive[_0xbb91('0x4c')](_0x42250a[_0xbb91('0x64')],_0xbb91('0x1ed'),_0x3ac481,'milliseconds');_0x42250a[_0xbb91('0x65')]=setInterval(function(){_0x5c52e3[_0xbb91('0x65')](_0x42250a);loggerPredictiveCalls[_0xbb91('0x4c')](_0xbb91('0x1ee'),_0x1c5c27+=0x1);},_0x3ac481);}else{loggerPredictive['info'](_0x42250a['name'],'fail\x20to\x20scheduled\x20calls');}};};Dialer['prototype'][_0xbb91('0x1ef')]=function(_0x4de28d,_0xe38687){var _0x295d78=this;return function(_0x159027){if(_[_0xbb91('0x4a')](_0x159027)){if(_[_0xbb91('0x101')](_0xe38687[_0xbb91('0x15c')])||!_0xe38687[_0xbb91('0x1f0')]){if(_0x4de28d[_0xbb91('0x1f1')]===_0xbb91('0xba')){_0x4de28d[_0xbb91('0x78')]=_[_0xbb91('0x56')](_0x4de28d[_0xbb91('0x78')])?!![]:_0x4de28d[_0xbb91('0x78')];var _0x543218=uuid['v4']();_0x295d78['actions'][_0x543218]=new Action(_0x4de28d,_0xe38687,_0x543218);loggerBooked[_0xbb91('0x4c')](_0xbb91('0x1f2'),_0x543218,_0xbb91('0x1f3'),JSON['stringify'](_0x4de28d['queueStatusComplete']),'Queue:\x20',_0x4de28d[_0xbb91('0x64')]);if(_0x4de28d[_0xbb91('0x78')]){_0x4de28d[_0xbb91('0x78')]=![];_0x295d78['queueBooked'][_0x295d78[_0xbb91('0x27')][_0x543218][_0xbb91('0xc2')]]=[];ami['Action']({'actionid':_0x543218,'action':_0xbb91('0x1f4'),'queue':_0x4de28d[_0xbb91('0x64')]})[_0xbb91('0xa3')](function(){_0x295d78[_0xbb91('0xc6')](_0x4de28d);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x295d78[_0xbb91('0x27')][_0x543218][_0xbb91('0xe1')],'ListId':_0x295d78[_0xbb91('0x27')][_0x543218]['ListId'],'VoiceQueueId':_0x295d78[_0xbb91('0x27')][_0x543218]['VoiceQueueId']||undefined,'CampaignId':_0x295d78['actions'][_0x543218][_0xbb91('0xe4')]||undefined})[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x1f5')));delete _0x295d78[_0xbb91('0x27')][_0x543218];});}else{loggerBooked['info'](_0xbb91('0x1f6'),JSON[_0xbb91('0x76')](_0x4de28d[_0xbb91('0x78')]),'Queue:\x20',_0x4de28d['name']);_0x295d78[_0xbb91('0xc6')](_0x4de28d);hopperUtils[_0xbb91('0xfe')]({'active':![],'ContactId':_0x295d78[_0xbb91('0x27')][_0x543218][_0xbb91('0xe1')],'ListId':_0x295d78[_0xbb91('0x27')][_0x543218][_0xbb91('0xe2')],'VoiceQueueId':_0x295d78['actions'][_0x543218][_0xbb91('0xe3')]||undefined,'CampaignId':_0x295d78[_0xbb91('0x27')][_0x543218][_0xbb91('0xe4')]||undefined})['catch'](loggerCatch(_0xbb91('0x1f5')));delete _0x295d78[_0xbb91('0x27')][_0x543218];}}else{return _0x295d78['actionOriginate'](_0x4de28d,_0xe38687);}}else{if(utils[_0xbb91('0x1f7')](undefined,_0xe38687[_0xbb91('0x1f8')])<_0x4de28d[_0xbb91('0x1f9')]*0x3c){if(_0xe38687[_0xbb91('0x14e')]&&!_0xe38687[_0xbb91('0x14e')]['voicePause']){_0x295d78[_0xbb91('0x20')][_0xbb91('0xfd')](_0xe38687['id'])[_0xbb91('0x1f')](function(){_0x295d78[_0xbb91('0xc6')](_0x4de28d);});}else{hopperUtils[_0xbb91('0x1fa')]({'active':![]},_0xe38687['id'],0x1)[_0xbb91('0x1f')](function(){_0x295d78[_0xbb91('0xc6')](_0x4de28d);});}}else{_0x4de28d[_0xbb91('0x1fb')]+=0x1;_0x295d78[_0xbb91('0xc6')](_0x4de28d);if(_0x4de28d[_0xbb91('0x1fc')]){hopperUtils['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0xe38687[_0xbb91('0xe1')],'ListId':_0xe38687[_0xbb91('0xe2')],'VoiceQueueId':_0xe38687[_0xbb91('0xe3')]||undefined,'CampaignId':_0xe38687[_0xbb91('0xe4')]||undefined})['catch'](loggerCatch(_0xbb91('0x1fd')));hopperUtils[_0xbb91('0xce')](createObjHistory(_0x4de28d,_0xe38687,utils['CAMPAIGN_STATUS'][_0xbb91('0x1fe')],0x17,_0xbb91('0x1ff')))[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x200')));}else{_0x295d78['saveInDb'](createObjHistory(_0x4de28d,_0xe38687,utils['CAMPAIGN_STATUS']['RECALL_TIMEOUT'],0x16,_0xbb91('0x201')),_0xbb91('0x202'),'[Originate][HistoryRecallClose]');}}}}else{_0x4de28d[_0xbb91('0x203')]+=0x1;_0x295d78['saveInDb'](createObjHistory(_0x4de28d,_0xe38687,utils['CAMPAIGN_STATUS']['BLACKLIST'],0xd,_0xbb91('0x204')),_0xbb91('0x205'),_0xbb91('0x206'));throw _0xbb91('0x207');}};};Dialer[_0xbb91('0x1c')][_0xbb91('0x15e')]=function(_0x43da77){var _0x2df8fb=this;var _0x365189=_0x43da77[_0xbb91('0x208')]-_0x43da77[_0xbb91('0x83')]-_0x43da77[_0xbb91('0x209')];emitCampaignSummary(_0x43da77);if(_0x365189>0x0){if(_0x365189>this[_0xbb91('0x25')]){_0x365189=this[_0xbb91('0x25')];}_0x43da77['temp']+=_0x365189;hopperUtils['getContactDialerIvr'](_0x43da77,_0x365189)[_0xbb91('0xa0')](function(_0x5b80d1){_0x43da77[_0xbb91('0x209')]-=_0x365189;_0x43da77[_0xbb91('0x209')]=_0x43da77[_0xbb91('0x209')]>0x0?_0x43da77[_0xbb91('0x209')]:0x0;if(!utils[_0xbb91('0x20a')](_0x5b80d1)){_0x43da77['message']=utils[_0xbb91('0x6d')][_0xbb91('0x6e')];logger[_0xbb91('0x4c')]('[getContactCampaign2][Empty]'+_0x43da77[_0xbb91('0x64')]);}else{_0x43da77[_0xbb91('0x83')]+=_0x5b80d1['length'];_0x43da77[_0xbb91('0x69')]=utils['CAMPAIGN_STATUS'][_0xbb91('0x20b')];for(var _0x102ef0=0x0;_0x102ef0<_0x5b80d1[_0xbb91('0x9d')];_0x102ef0+=0x1){_0x43da77[_0xbb91('0x20c')]+=0x1;if(_['isNil'](_0x5b80d1[_0x102ef0])||_['isNil'](_0x5b80d1[_0x102ef0][_0xbb91('0x17c')])||_[_0xbb91('0x101')](_0x5b80d1[_0x102ef0]['phone'])){_0x2df8fb[_0xbb91('0x20d')](_0xbb91('0x20e'),_0x43da77,_0x5b80d1[_0x102ef0]);}else{hopperUtils[_0xbb91('0x20f')](_[_0xbb91('0x77')](_0x5b80d1[_0x102ef0],[_0xbb91('0xe4'),'phone']))[_0xbb91('0xa0')](_0x2df8fb[_0xbb91('0x1ef')](_0x43da77,_0x5b80d1[_0x102ef0]))[_0xbb91('0xa3')](_0x2df8fb['loggerHandler']('[actionOriginateIvr]\x20',_0x43da77));}}}})[_0xbb91('0xa3')](loggerGetContactDialer(_0xbb91('0x210'),_0x43da77,_0x365189));}};Dialer[_0xbb91('0x1c')][_0xbb91('0xb8')]=function(_0x2c8caa,_0x3ebdb9){var _0x484e82=this;var _0x208800=[];if(_0x3ebdb9<0x1||_0x2c8caa[_0xbb91('0x1f1')]===_0xbb91('0xba')){_0x3ebdb9=0x1;}var _0x472d29=Math[_0xbb91('0x1cd')](_0x2c8caa[_0xbb91('0x13f')]*_0x3ebdb9)-_0x2c8caa[_0xbb91('0x83')]-_0x2c8caa[_0xbb91('0x209')];if(_0x2c8caa[_0xbb91('0x211')]>0x0){var _0x279e9f=_0x2c8caa[_0xbb91('0x211')]-_0x2c8caa['originated']-_0x2c8caa[_0xbb91('0x141')]-_0x2c8caa[_0xbb91('0x209')]-_0x2c8caa[_0xbb91('0x212')];if(_0x472d29>_0x279e9f){_0x472d29=_0x279e9f;}}if(_0x472d29>0x0){if(_0x2c8caa['dialMethod']===_0xbb91('0xba')){_0x472d29=0x1;}if(_0x472d29>this['maxNumberOriginate']){_0x472d29=this[_0xbb91('0x25')];}_0x2c8caa[_0xbb91('0x209')]+=_0x472d29;for(var _0xbf0ee3 in this[_0xbb91('0x23')]){if(typeof this[_0xbb91('0x23')][_0xbf0ee3]!==_0xbb91('0xb1')){if(this[_0xbb91('0x23')][_0xbf0ee3]['state']===_0xbb91('0x213')&&this[_0xbb91('0x23')][_0xbf0ee3][_0xbb91('0x8b')]==='reachable'){_0x208800[_0xbb91('0x9e')](this['agents'][_0xbf0ee3]['id']);}}}hopperUtils['getContactDialer'](_0x2c8caa,_0x208800,_0x472d29)[_0xbb91('0xa0')](function(_0x3a1cad){_0x2c8caa[_0xbb91('0x209')]-=_0x472d29;_0x2c8caa[_0xbb91('0x209')]=_0x2c8caa['temp']>0x0?_0x2c8caa[_0xbb91('0x209')]:0x0;if(!utils[_0xbb91('0x20a')](_0x3a1cad)){hopperUtils[_0xbb91('0x214')](_0x2c8caa)[_0xbb91('0xa0')](sendMessageReschedule(_0x2c8caa))[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x215')));}else{_0x2c8caa[_0xbb91('0x83')]+=_0x3a1cad[_0xbb91('0x9d')];_0x2c8caa[_0xbb91('0x69')]=_0x2c8caa[_0xbb91('0x1f1')]===_0xbb91('0xba')?utils['CAMPAIGN_STATUS']['ACTIVE']:utils[_0xbb91('0x6d')]['RUNNING'];for(var _0x56090b=0x0;_0x56090b<_0x3a1cad[_0xbb91('0x9d')];_0x56090b+=0x1){if(_[_0xbb91('0x101')](_0x3a1cad[_0x56090b])||_[_0xbb91('0x101')](_0x3a1cad[_0x56090b][_0xbb91('0x17c')])||_['isNil'](_0x3a1cad[_0x56090b]['phone'])){_0x484e82[_0xbb91('0x20d')](_0xbb91('0x20e'),_0x2c8caa,_0x3a1cad[_0x56090b]);}else{hopperUtils[_0xbb91('0x216')](_[_0xbb91('0x77')](_0x3a1cad[_0x56090b],[_0xbb91('0xe3'),_0xbb91('0x162')]))[_0xbb91('0xa0')](_0x484e82['checkContactBlack'](_0x2c8caa,_0x3a1cad[_0x56090b]))[_0xbb91('0xa3')](_0x484e82[_0xbb91('0x15a')](_0xbb91('0x20e'),_0x2c8caa));}}}})[_0xbb91('0xa3')](loggerGetContactDialer(_0xbb91('0x217'),_0x2c8caa,_0x472d29));}};Dialer[_0xbb91('0x1c')][_0xbb91('0x65')]=function(_0x326ff7){if(_0x326ff7[_0xbb91('0x211')]>0x0){var _0x15cfe3=_0x326ff7['dialLimitQueue']-_0x326ff7[_0xbb91('0x83')]-_0x326ff7[_0xbb91('0x141')];if(_0x15cfe3>0x0){this[_0xbb91('0x218')](_0x326ff7);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x326ff7);}};Dialer[_0xbb91('0x1c')][_0xbb91('0x218')]=function(_0x3e02e3){var _0x4fedcc=this;var _0x40b6ee=[];_0x3e02e3[_0xbb91('0x83')]+=0x1;for(var _0x4e7a7e in this[_0xbb91('0x23')]){if(typeof this[_0xbb91('0x23')][_0x4e7a7e]!==_0xbb91('0xb1')){if(this[_0xbb91('0x23')][_0x4e7a7e][_0xbb91('0x70')]===_0xbb91('0x213')&&this['agents'][_0x4e7a7e][_0xbb91('0x8b')]===_0xbb91('0x219')){_0x40b6ee['push'](this[_0xbb91('0x23')][_0x4e7a7e]['id']);}}}return this[_0xbb91('0x21a')](_0x3e02e3['id'],_0x40b6ee,0x1,_0x3e02e3[_0xbb91('0x21b')],_0x3e02e3)[_0xbb91('0xa0')](function(_0x1df774){if(!utils['checkContactEmpty'](_0x1df774)){utils[_0xbb91('0x68')](_0x3e02e3,0x1,0x0);return hopperUtils[_0xbb91('0x214')](_0x3e02e3)[_0xbb91('0xa0')](sendMessageReschedule(_0x3e02e3))[_0xbb91('0xa3')](loggerCatch(_0xbb91('0x215')));}else{_0x3e02e3[_0xbb91('0x69')]=utils[_0xbb91('0x6d')][_0xbb91('0x20b')];if(_[_0xbb91('0x101')](_0x1df774[0x0])||_[_0xbb91('0x101')](_0x1df774[0x0][_0xbb91('0x17c')])||_[_0xbb91('0x101')](_0x1df774[0x0][_0xbb91('0x162')])){_0x4fedcc['emptyContact'](_0xbb91('0x20e'),_0x3e02e3,_0x1df774[0x0]);}else{return hopperUtils[_0xbb91('0x216')](_['pick'](_0x1df774[0x0],[_0xbb91('0xe3'),_0xbb91('0x162')]))[_0xbb91('0xa0')](_0x4fedcc[_0xbb91('0x1ef')](_0x3e02e3,_0x1df774[0x0]))[_0xbb91('0xa3')](_0x4fedcc[_0xbb91('0x15a')](_0xbb91('0x21c'),_0x3e02e3));}}})[_0xbb91('0xa3')](loggerGetContactDialer('[getContactDialerPredictive]',_0x3e02e3,0x1));};Dialer[_0xbb91('0x1c')][_0xbb91('0x1e2')]=function(_0x169cfa,_0x130bd1,_0x42b9ce,_0x1c1061,_0x34eef9,_0xb18396){loggerPredictive['info']('--------\x20Drop\x20Rate\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',_0x169cfa);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x21d'),_0x130bd1);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x21e'),_0x42b9ce);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x21f'),_0x1c1061);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x220'),_0x34eef9);loggerPredictive[_0xbb91('0x4c')]('---------------------------');return new Promise(function(_0x304e7d,_0x1486db){if(_0x169cfa<=0x0||isNaN(_0x169cfa)){return _0x1486db(msgResponse(_0xbb91('0x221'),_0xbb91('0x88'),_0xbb91('0x222')+_0x169cfa));}if(_0x42b9ce<=0x0||isNaN(_0x42b9ce)){return _0x1486db(msgResponse(_0xbb91('0x221'),_0xbb91('0x88'),_0xbb91('0x223')+_0x42b9ce));}if(_0x1c1061<=0x0||isNaN(_0x1c1061)){return _0x1486db(msgResponse(_0xbb91('0x221'),_0xbb91('0x88'),'p\x20=\x20'+_0x1c1061));}if(_0x130bd1<=0x0||isNaN(_0x130bd1)){return _0x1486db(msgResponse(_0xbb91('0x221'),_0xbb91('0x88'),_0xbb91('0x224')+_0x130bd1));}if(_0x34eef9<=0x0||isNaN(_0x34eef9)){return _0x1486db(msgResponse('[abandonmentRate]','Error',_0xbb91('0x225')+_0x34eef9));}_0xb18396=_0xb18396||0x0;var _0x50cba9=0x1/_0x42b9ce;var _0x42736=0x0;var _0x58e29f=0x0;var _0x224396=0x0;var _0x40ac1a=0x0;for(var _0x594fc6=0x0;_0x224396<_0x34eef9;_0x594fc6+=0x1){_0x58e29f=_0x594fc6/_0x130bd1;_0x42736=(_0x1c1061*_0x58e29f+_0xb18396)/_0x50cba9;_0x224396=utils['erlangb'](_0x42736,_0x169cfa);_0x40ac1a=_0x42736/_0x169cfa*(0x1-utils[_0xbb91('0x226')](_0x42736,_0x169cfa));}return _0x304e7d({'erlangCalls':_0x594fc6,'erlangCallToSecond':_0x130bd1/_0x594fc6,'erlangAbandonmentRate':_0x224396,'erlangBusyFactor':_0x40ac1a});});};Dialer['prototype'][_0xbb91('0x1e4')]=function(_0x29e3ed,_0x38855a,_0x4d2b8c,_0x1f62ce,_0x159f3,_0x7a9205){loggerPredictive['info'](_0xbb91('0x227'));loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x228'),_0x29e3ed);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x21d'),_0x38855a);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x21e'),_0x4d2b8c);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x21f'),_0x1f62ce);loggerPredictive[_0xbb91('0x4c')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x159f3);loggerPredictive[_0xbb91('0x4c')](_0xbb91('0x55'));return new Promise(function(_0x3660c0,_0x19d48c){if(_0x29e3ed<=0x0||isNaN(_0x29e3ed)){return _0x19d48c(msgResponse(_0xbb91('0x229'),_0xbb91('0x88'),_0xbb91('0x222')+_0x29e3ed));}if(_0x4d2b8c<=0x0||isNaN(_0x4d2b8c)){return _0x19d48c(msgResponse(_0xbb91('0x229'),_0xbb91('0x88'),'Ts\x20=\x20'+_0x4d2b8c));}if(_0x1f62ce<=0x0||isNaN(_0x1f62ce)){return _0x19d48c(msgResponse('[busyFactor]','Error',_0xbb91('0x22a')+_0x1f62ce));}if(_0x38855a<=0x0||isNaN(_0x38855a)){return _0x19d48c(msgResponse(_0xbb91('0x229'),_0xbb91('0x88'),_0xbb91('0x224')+_0x38855a));}if(_0x159f3<=0x0||isNaN(_0x159f3)){return _0x19d48c(msgResponse(_0xbb91('0x229'),_0xbb91('0x88'),_0xbb91('0x22b')+_0x159f3));}_0x7a9205=_0x7a9205||0x0;var _0x217daa=0x1/_0x4d2b8c;var _0x50cd3a=0x0;var _0x174f3c=0x0;var _0x3fdbc8=0x0;var _0x2f8b92=0x0;for(var _0x3b8d21=0x0;_0x2f8b92<_0x159f3;_0x3b8d21+=0x1){_0x174f3c=_0x3b8d21/_0x38855a;_0x50cd3a=(_0x1f62ce*_0x174f3c+_0x7a9205)/_0x217daa;_0x3fdbc8=utils['erlangb'](_0x50cd3a,_0x29e3ed);_0x2f8b92=_0x50cd3a/_0x29e3ed*(0x1-utils['erlangb'](_0x50cd3a,_0x29e3ed));}return _0x3660c0({'erlangCalls':_0x3b8d21,'erlangCallToSecond':_0x38855a/_0x3b8d21,'erlangAbandonmentRate':_0x3fdbc8,'erlangBusyFactor':_0x2f8b92});});};module['exports']=Dialer;
\ No newline at end of file
index 5947283..028a00a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f74=['CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','originatecalleridnum','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','getQueue','exports','util','lodash','moment','string','isNil','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x4a194d,_0x1464cc){var _0x3710e8=function(_0xf88a17){while(--_0xf88a17){_0x4a194d['push'](_0x4a194d['shift']());}};_0x3710e8(++_0x1464cc);}(_0x9f74,0x12b));var _0x49f7=function(_0x2c8486,_0x1a5382){_0x2c8486=_0x2c8486-0x0;var _0x3c80c0=_0x9f74[_0x2c8486];return _0x3c80c0;};'use strict';var util=require(_0x49f7('0x0'));var _=require(_0x49f7('0x1'));var moment=require(_0x49f7('0x2'));function checkNameSurname(_0x116f21,_0x5a6d6f,_0x4e7cf9){var _0x28cafc='';if(!_['isNil'](_0x5a6d6f)&&_0x49f7('0x3')===typeof _0x5a6d6f){_0x28cafc+=_0x5a6d6f;}if(!_[_0x49f7('0x4')](_0x4e7cf9)&&_0x49f7('0x3')===typeof _0x4e7cf9){_0x28cafc+='\x20'+_0x4e7cf9;}if(_0x28cafc!==''){return _0x28cafc;}return _0x116f21;}function Action(_0x5e505a,_0x51fa76,_0x16ed7a){this[_0x49f7('0x5')]=_0x5e505a;this[_0x49f7('0x6')]=_0x16ed7a||undefined;this[_0x49f7('0x7')]=checkNameSurname(_0x51fa76[_0x49f7('0x8')][_0x49f7('0x9')],_0x51fa76[_0x49f7('0x8')][_0x49f7('0xa')],_0x51fa76[_0x49f7('0x8')][_0x49f7('0xb')]);this[_0x49f7('0xc')]=_0x51fa76['phone'];this[_0x49f7('0xd')]=_0x5e505a[_0x49f7('0x7')];this[_0x49f7('0xe')]=_0x51fa76[_0x49f7('0xe')]||![];this[_0x49f7('0xf')]=_0x5e505a['type'];this[_0x49f7('0x10')]=_0x5e505a[_0x49f7('0x10')]||0x3;this['scheduledat']=_0x51fa76[_0x49f7('0x11')];this[_0x49f7('0x12')]=_0x51fa76[_0x49f7('0x12')];this[_0x49f7('0x13')]=_0x51fa76[_0x49f7('0x13')];this[_0x49f7('0x14')]=_0x51fa76[_0x49f7('0x14')];this[_0x49f7('0x15')]=_0x51fa76['countnosuchnumberretry'];this[_0x49f7('0x16')]=_0x51fa76[_0x49f7('0x16')];this[_0x49f7('0x17')]=_0x51fa76[_0x49f7('0x17')];this[_0x49f7('0x18')]=_0x51fa76[_0x49f7('0x18')];this[_0x49f7('0x19')]=_0x51fa76[_0x49f7('0x19')];this['ContactId']=_0x51fa76[_0x49f7('0x1a')];this[_0x49f7('0x1b')]=_0x51fa76[_0x49f7('0x1b')];this['UserId']=_0x51fa76[_0x49f7('0x1c')];this[_0x49f7('0x1d')]=_0x51fa76[_0x49f7('0x1d')];this[_0x49f7('0x1e')]=_0x51fa76[_0x49f7('0x1e')];this[_0x49f7('0x1f')]=_0x51fa76['id'];this[_0x49f7('0x20')]=_0x51fa76[_0x49f7('0x8')]['firstName']||'';this[_0x49f7('0x21')]=moment()[_0x49f7('0x22')](_0x49f7('0x23'));this[_0x49f7('0x24')]=_0x51fa76[_0x49f7('0x24')];this['callbackuniqueid']=_0x51fa76[_0x49f7('0x25')];this[_0x49f7('0x26')]=_0x51fa76[_0x49f7('0x26')];this['recallme']=_0x51fa76['recallme'];this[_0x49f7('0x27')]='';this['originatecalleridname']='';}Action['prototype'][_0x49f7('0x28')]=function(){return util[_0x49f7('0x22')](_0x49f7('0x29'),this[_0x49f7('0x7')],this[_0x49f7('0x5')][_0x49f7('0x2a')]>0x0?this[_0x49f7('0xc')][_0x49f7('0x2b')](this['voiceQueue']['dialCutDigit']):this['number']);};Action[_0x49f7('0x2c')][_0x49f7('0x2d')]=function(){return this['queue'];};module[_0x49f7('0x2e')]=Action;
\ No newline at end of file
+var _0x91a1=['VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','starttime','format','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','number','active','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId'];(function(_0x177aa9,_0x28a272){var _0x2b4944=function(_0x2faac4){while(--_0x2faac4){_0x177aa9['push'](_0x177aa9['shift']());}};_0x2b4944(++_0x28a272);}(_0x91a1,0x93));var _0x191a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x91a1[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x191a('0x0'));var _=require(_0x191a('0x1'));var moment=require(_0x191a('0x2'));function checkNameSurname(_0x1feda3,_0x2afa71,_0x1152b5){var _0x5d488a='';if(!_[_0x191a('0x3')](_0x2afa71)&&_0x191a('0x4')===typeof _0x2afa71){_0x5d488a+=_0x2afa71;}if(!_[_0x191a('0x3')](_0x1152b5)&&_0x191a('0x4')===typeof _0x1152b5){_0x5d488a+='\x20'+_0x1152b5;}if(_0x5d488a!==''){return _0x5d488a;}return _0x1feda3;}function Action(_0x5e2637,_0x1e0f7b,_0x42a3e9){this[_0x191a('0x5')]=_0x5e2637;this[_0x191a('0x6')]=_0x42a3e9||undefined;this[_0x191a('0x7')]=checkNameSurname(_0x1e0f7b[_0x191a('0x8')][_0x191a('0x9')],_0x1e0f7b[_0x191a('0x8')]['firstName'],_0x1e0f7b[_0x191a('0x8')]['lastName']);this[_0x191a('0xa')]=_0x1e0f7b[_0x191a('0x9')];this['queue']=_0x5e2637[_0x191a('0x7')];this[_0x191a('0xb')]=_0x1e0f7b[_0x191a('0xb')]||![];this['type']=_0x5e2637['type'];this[_0x191a('0xc')]=_0x5e2637[_0x191a('0xc')]||0x3;this[_0x191a('0xd')]=_0x1e0f7b[_0x191a('0xd')];this[_0x191a('0xe')]=_0x1e0f7b[_0x191a('0xe')];this[_0x191a('0xf')]=_0x1e0f7b[_0x191a('0xf')];this[_0x191a('0x10')]=_0x1e0f7b[_0x191a('0x10')];this[_0x191a('0x11')]=_0x1e0f7b['countnosuchnumberretry'];this['countdropretry']=_0x1e0f7b[_0x191a('0x12')];this[_0x191a('0x13')]=_0x1e0f7b['countabandonedretry'];this[_0x191a('0x14')]=_0x1e0f7b[_0x191a('0x14')];this[_0x191a('0x15')]=_0x1e0f7b['countagentrejectretry'];this['ContactId']=_0x1e0f7b[_0x191a('0x16')];this['ListId']=_0x1e0f7b[_0x191a('0x17')];this['UserId']=_0x1e0f7b[_0x191a('0x18')];this[_0x191a('0x19')]=_0x1e0f7b[_0x191a('0x19')];this['CampaignId']=_0x1e0f7b[_0x191a('0x1a')];this[_0x191a('0x1b')]=_0x1e0f7b['id'];this[_0x191a('0x1c')]=_0x1e0f7b[_0x191a('0x8')][_0x191a('0x1d')]||'';this[_0x191a('0x1e')]=moment()[_0x191a('0x1f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x191a('0x20')]=_0x1e0f7b[_0x191a('0x20')];this[_0x191a('0x21')]=_0x1e0f7b[_0x191a('0x21')];this['callbackat']=_0x1e0f7b[_0x191a('0x22')];this[_0x191a('0x23')]=_0x1e0f7b['recallme'];this[_0x191a('0x24')]='';this[_0x191a('0x25')]='';}Action[_0x191a('0x26')][_0x191a('0x27')]=function(){return util[_0x191a('0x1f')](_0x191a('0x28'),this['name'],this[_0x191a('0x5')][_0x191a('0x29')]>0x0?this[_0x191a('0xa')]['substring'](this[_0x191a('0x5')]['dialCutDigit']):this[_0x191a('0xa')]);};Action['prototype']['getQueue']=function(){return this['queue'];};module[_0x191a('0x2a')]=Action;
\ No newline at end of file
index f0dd7c9..4c2f629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc76e=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','number','starttime','responsetime','answertime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0xda3d1b,_0x5a9892){var _0x43dd12=function(_0x14321e){while(--_0x14321e){_0xda3d1b['push'](_0xda3d1b['shift']());}};_0x43dd12(++_0x5a9892);}(_0xc76e,0xa7));var _0xec76=function(_0x352787,_0x1e9b6b){_0x352787=_0x352787-0x0;var _0x11dfce=_0xc76e[_0x352787];return _0x11dfce;};'use strict';var moment=require('moment');var utils=require('../utils');function AgentComplete(_0x4bf685,_0x4102f6){this[_0xec76('0x0')]=0x4;this[_0xec76('0x1')]='Answer';this[_0xec76('0x2')]=_0x4bf685[_0xec76('0x2')];this[_0xec76('0x3')]=_0x4bf685[_0xec76('0x3')];this[_0xec76('0x4')]=_0x4bf685[_0xec76('0x3')]===_0xec76('0x5')?'queue':_0x4bf685['type'];this[_0xec76('0x6')]=_0x4bf685[_0xec76('0x6')];this[_0xec76('0x7')]=_0x4bf685[_0xec76('0x7')];this['countnoanswerretry']=_0x4bf685['countnoanswerretry'];this[_0xec76('0x8')]=_0x4bf685[_0xec76('0x6')]+_0x4bf685[_0xec76('0x7')]+_0x4bf685['countnoanswerretry']+_0x4bf685['countnosuchnumberretry']+_0x4bf685['countdropretry']+_0x4bf685['countabandonedretry']+_0x4bf685['countmachineretry']+_0x4bf685['countagentrejectretry'];this[_0xec76('0x9')]=_0x4bf685[_0xec76('0x9')];this[_0xec76('0xa')]=_0x4bf685[_0xec76('0xa')];this[_0xec76('0xb')]=_0x4bf685[_0xec76('0xb')];this['countmachineretry']=_0x4bf685[_0xec76('0xc')];this['countagentrejectretry']=_0x4bf685[_0xec76('0xd')];this[_0xec76('0xe')]=_0x4102f6[_0xec76('0xe')];this[_0xec76('0xf')]=_0x4bf685['name'];this['calleridnum']=_0x4bf685[_0xec76('0x10')];this[_0xec76('0x11')]=_0x4bf685[_0xec76('0x11')];this[_0xec76('0x12')]=_0x4bf685[_0xec76('0x12')];this[_0xec76('0x13')]=_0x4bf685[_0xec76('0x13')];this['endtime']=moment()[_0xec76('0x14')](_0xec76('0x15'));this[_0xec76('0x16')]=utils[_0xec76('0x17')](_0x4bf685[_0xec76('0x12')],_0x4bf685[_0xec76('0x11')]);this['holdtime']=utils[_0xec76('0x17')](_0x4bf685['answertime'],_0x4bf685[_0xec76('0x12')]);this[_0xec76('0x18')]=utils[_0xec76('0x17')](this['endtime'],_0x4bf685[_0xec76('0x13')]);this[_0xec76('0x19')]=_0x4102f6[_0xec76('0x19')];this['membername']=_0x4102f6[_0xec76('0x1a')];this[_0xec76('0x1b')]=_0x4102f6[_0xec76('0x1b')];this[_0xec76('0x1c')]=_0x4bf685[_0xec76('0x1c')];this[_0xec76('0x1d')]=_0x4bf685[_0xec76('0x1d')];this[_0xec76('0x1e')]=_0x4bf685[_0xec76('0x1e')];this[_0xec76('0x1f')]=_0x4bf685[_0xec76('0x1f')];this[_0xec76('0x20')]=_0x4bf685[_0xec76('0x20')];this[_0xec76('0x21')]=_0x4bf685[_0xec76('0x21')];this[_0xec76('0x22')]=_0x4bf685['UserId'];this[_0xec76('0x23')]=_0x4bf685['VoiceQueueId'];this[_0xec76('0x24')]=_0x4bf685[_0xec76('0x24')];this[_0xec76('0x25')]=_0x4bf685['originatecalleridnum']||'';this['originatecalleridname']=_0x4bf685[_0xec76('0x26')]||'';this[_0xec76('0x27')]=_0x4bf685[_0xec76('0x27')];}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x65fa=['agiafterat','moment','../utils','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','ringtime','getSeconds','holdtime','membername','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x553808,_0x2ce312){var _0x17f5cd=function(_0x49860a){while(--_0x49860a){_0x553808['push'](_0x553808['shift']());}};_0x17f5cd(++_0x2ce312);}(_0x65fa,0xd8));var _0xa65f=function(_0x582da9,_0x4c8b4f){_0x582da9=_0x582da9-0x0;var _0xac1b36=_0x65fa[_0x582da9];return _0xac1b36;};'use strict';var moment=require(_0xa65f('0x0'));var utils=require(_0xa65f('0x1'));function AgentComplete(_0x3c66f7,_0x480aae){this[_0xa65f('0x2')]=0x4;this['statedesc']=_0xa65f('0x3');this[_0xa65f('0x4')]=_0x3c66f7[_0xa65f('0x4')];this[_0xa65f('0x5')]=_0x3c66f7[_0xa65f('0x5')];this[_0xa65f('0x6')]=_0x3c66f7[_0xa65f('0x5')]===_0xa65f('0x7')?_0xa65f('0x8'):_0x3c66f7[_0xa65f('0x5')];this[_0xa65f('0x9')]=_0x3c66f7[_0xa65f('0x9')];this[_0xa65f('0xa')]=_0x3c66f7['countcongestionretry'];this[_0xa65f('0xb')]=_0x3c66f7[_0xa65f('0xb')];this[_0xa65f('0xc')]=_0x3c66f7[_0xa65f('0x9')]+_0x3c66f7[_0xa65f('0xa')]+_0x3c66f7[_0xa65f('0xb')]+_0x3c66f7['countnosuchnumberretry']+_0x3c66f7[_0xa65f('0xd')]+_0x3c66f7['countabandonedretry']+_0x3c66f7[_0xa65f('0xe')]+_0x3c66f7[_0xa65f('0xf')];this['countnosuchnumberretry']=_0x3c66f7[_0xa65f('0x10')];this[_0xa65f('0xd')]=_0x3c66f7['countdropretry'];this[_0xa65f('0x11')]=_0x3c66f7[_0xa65f('0x11')];this['countmachineretry']=_0x3c66f7[_0xa65f('0xe')];this[_0xa65f('0xf')]=_0x3c66f7[_0xa65f('0xf')];this[_0xa65f('0x12')]=_0x480aae[_0xa65f('0x12')];this[_0xa65f('0x13')]=_0x3c66f7[_0xa65f('0x14')];this['calleridnum']=_0x3c66f7[_0xa65f('0x15')];this[_0xa65f('0x16')]=_0x3c66f7[_0xa65f('0x16')];this[_0xa65f('0x17')]=_0x3c66f7['responsetime'];this['answertime']=_0x3c66f7[_0xa65f('0x18')];this[_0xa65f('0x19')]=moment()[_0xa65f('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa65f('0x1b')]=utils[_0xa65f('0x1c')](_0x3c66f7[_0xa65f('0x17')],_0x3c66f7[_0xa65f('0x16')]);this[_0xa65f('0x1d')]=utils[_0xa65f('0x1c')](_0x3c66f7[_0xa65f('0x18')],_0x3c66f7['responsetime']);this['talktime']=utils[_0xa65f('0x1c')](this['endtime'],_0x3c66f7['answertime']);this[_0xa65f('0x8')]=_0x480aae['queue'];this[_0xa65f('0x1e')]=_0x480aae[_0xa65f('0x1e')];this['reason']=_0x480aae[_0xa65f('0x1f')];this[_0xa65f('0x20')]=_0x3c66f7[_0xa65f('0x20')];this[_0xa65f('0x21')]=_0x3c66f7[_0xa65f('0x21')];this['callbackat']=_0x3c66f7['callbackat'];this[_0xa65f('0x22')]=_0x3c66f7['recallme'];this['ContactId']=_0x3c66f7[_0xa65f('0x23')];this['ListId']=_0x3c66f7[_0xa65f('0x24')];this['UserId']=_0x3c66f7[_0xa65f('0x25')];this[_0xa65f('0x26')]=_0x3c66f7['VoiceQueueId'];this[_0xa65f('0x27')]=_0x3c66f7[_0xa65f('0x27')];this[_0xa65f('0x28')]=_0x3c66f7[_0xa65f('0x28')]||'';this['originatecalleridname']=_0x3c66f7[_0xa65f('0x29')]||'';this[_0xa65f('0x2a')]=_0x3c66f7[_0xa65f('0x2a')];}module['exports']=AgentComplete;
\ No newline at end of file
index 7540140..afaf773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf96d=['scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid'];(function(_0x1be379,_0x4e45dc){var _0x21e20d=function(_0x426852){while(--_0x426852){_0x1be379['push'](_0x1be379['shift']());}};_0x21e20d(++_0x4e45dc);}(_0xf96d,0x87));var _0xdf96=function(_0x5bd3ef,_0x19d27f){_0x5bd3ef=_0x5bd3ef-0x0;var _0xabc67e=_0xf96d[_0x5bd3ef];return _0xabc67e;};'use strict';function Final(_0x36d964){this[_0xdf96('0x0')]=_0x36d964[_0xdf96('0x0')];this[_0xdf96('0x1')]=_0x36d964[_0xdf96('0x1')];this[_0xdf96('0x2')]=_0x36d964[_0xdf96('0x2')];this['campaigntype']=_0x36d964[_0xdf96('0x2')]===_0xdf96('0x3')?_0xdf96('0x4'):_0x36d964['type'];this['countbusyretry']=_0x36d964[_0xdf96('0x5')];this[_0xdf96('0x6')]=_0x36d964['countcongestionretry'];this[_0xdf96('0x7')]=_0x36d964[_0xdf96('0x7')];this[_0xdf96('0x8')]=_0x36d964[_0xdf96('0x5')]+_0x36d964['countcongestionretry']+_0x36d964[_0xdf96('0x7')]+_0x36d964[_0xdf96('0x9')]+_0x36d964[_0xdf96('0xa')]+_0x36d964[_0xdf96('0xb')]+_0x36d964[_0xdf96('0xc')]+_0x36d964[_0xdf96('0xd')];this[_0xdf96('0x9')]=_0x36d964[_0xdf96('0x9')];this[_0xdf96('0xa')]=_0x36d964[_0xdf96('0xa')];this['countabandonedretry']=_0x36d964[_0xdf96('0xb')];this[_0xdf96('0xc')]=_0x36d964['countmachineretry'];this[_0xdf96('0xd')]=_0x36d964[_0xdf96('0xd')];this['queue']=_0x36d964[_0xdf96('0x4')];this[_0xdf96('0xe')]=_0x36d964[_0xdf96('0xe')];this[_0xdf96('0xf')]=_0x36d964['calleridnum'];this['starttime']=_0x36d964[_0xdf96('0x10')];this[_0xdf96('0x11')]=_0x36d964[_0xdf96('0x11')];this['endtime']=_0x36d964[_0xdf96('0x11')];this['ringtime']=_0x36d964[_0xdf96('0x12')]||0x0;this['holdtime']=_0x36d964[_0xdf96('0x13')]||0x0;this[_0xdf96('0x14')]=_0x36d964[_0xdf96('0x14')]||0x0;this['callback']=_0x36d964[_0xdf96('0x15')];this[_0xdf96('0x16')]=_0x36d964[_0xdf96('0x16')];this[_0xdf96('0x17')]=_0x36d964[_0xdf96('0x17')];this[_0xdf96('0x18')]=_0x36d964['recallme'];this[_0xdf96('0x19')]=_0x36d964['ContactId'];this[_0xdf96('0x1a')]=_0x36d964[_0xdf96('0x1a')];this[_0xdf96('0x1b')]=_0x36d964[_0xdf96('0x1b')];this[_0xdf96('0x1c')]=_0x36d964[_0xdf96('0x1c')];this[_0xdf96('0x1d')]=_0x36d964[_0xdf96('0x1d')];this[_0xdf96('0x1e')]=_0x36d964[_0xdf96('0x1e')]||'';this[_0xdf96('0x1f')]=_0x36d964[_0xdf96('0x1f')]||'';this[_0xdf96('0x20')]=_0x36d964[_0xdf96('0x20')];this[_0xdf96('0x21')]=_0x36d964['statedesc'];}module['exports']=Final;
\ No newline at end of file
+var _0x0c35=['countglobal','countbusyretry','countdropretry','countabandonedretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','type','campaigntype','queue','countcongestionretry','countnoanswerretry'];(function(_0xc45b9e,_0x40022d){var _0x35a945=function(_0x12472b){while(--_0x12472b){_0xc45b9e['push'](_0xc45b9e['shift']());}};_0x35a945(++_0x40022d);}(_0x0c35,0x119));var _0x50c3=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x0c35[_0x17d9e3];return _0x14192d;};'use strict';function Final(_0x315c98){this['uniqueid']=_0x315c98[_0x50c3('0x0')];this[_0x50c3('0x1')]=_0x315c98[_0x50c3('0x1')];this[_0x50c3('0x2')]=_0x315c98[_0x50c3('0x2')];this[_0x50c3('0x3')]=_0x315c98[_0x50c3('0x2')]==='outbound'?_0x50c3('0x4'):_0x315c98[_0x50c3('0x2')];this['countbusyretry']=_0x315c98['countbusyretry'];this[_0x50c3('0x5')]=_0x315c98[_0x50c3('0x5')];this[_0x50c3('0x6')]=_0x315c98[_0x50c3('0x6')];this[_0x50c3('0x7')]=_0x315c98[_0x50c3('0x8')]+_0x315c98[_0x50c3('0x5')]+_0x315c98[_0x50c3('0x6')]+_0x315c98['countnosuchnumberretry']+_0x315c98[_0x50c3('0x9')]+_0x315c98[_0x50c3('0xa')]+_0x315c98['countmachineretry']+_0x315c98['countagentrejectretry'];this[_0x50c3('0xb')]=_0x315c98[_0x50c3('0xb')];this[_0x50c3('0x9')]=_0x315c98['countdropretry'];this[_0x50c3('0xa')]=_0x315c98[_0x50c3('0xa')];this[_0x50c3('0xc')]=_0x315c98['countmachineretry'];this[_0x50c3('0xd')]=_0x315c98['countagentrejectretry'];this[_0x50c3('0x4')]=_0x315c98[_0x50c3('0x4')];this[_0x50c3('0xe')]=_0x315c98[_0x50c3('0xe')];this['calleridnum']=_0x315c98[_0x50c3('0xf')];this['starttime']=_0x315c98[_0x50c3('0x10')];this[_0x50c3('0x11')]=_0x315c98[_0x50c3('0x11')];this[_0x50c3('0x12')]=_0x315c98[_0x50c3('0x11')];this[_0x50c3('0x13')]=_0x315c98[_0x50c3('0x13')]||0x0;this[_0x50c3('0x14')]=_0x315c98['holdtime']||0x0;this['talktime']=_0x315c98[_0x50c3('0x15')]||0x0;this[_0x50c3('0x16')]=_0x315c98['callback'];this[_0x50c3('0x17')]=_0x315c98[_0x50c3('0x17')];this[_0x50c3('0x18')]=_0x315c98['callbackat'];this[_0x50c3('0x19')]=_0x315c98[_0x50c3('0x19')];this[_0x50c3('0x1a')]=_0x315c98[_0x50c3('0x1a')];this[_0x50c3('0x1b')]=_0x315c98[_0x50c3('0x1b')];this['UserId']=_0x315c98[_0x50c3('0x1c')];this[_0x50c3('0x1d')]=_0x315c98[_0x50c3('0x1d')];this[_0x50c3('0x1e')]=_0x315c98['CampaignId'];this[_0x50c3('0x1f')]=_0x315c98[_0x50c3('0x1f')]||'';this[_0x50c3('0x20')]=_0x315c98['originatecalleridname']||'';this['state']=_0x315c98[_0x50c3('0x21')];this[_0x50c3('0x22')]=_0x315c98['statedesc'];}module[_0x50c3('0x23')]=Final;
\ No newline at end of file
index 807860c..b853e75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x034d=['amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','state','statedesc','Answer','scheduledat','type','outbound','queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x034d,0x1b9));var _0xd034=function(_0x241846,_0x17d261){_0x241846=_0x241846-0x0;var _0xa940de=_0x034d[_0x241846];return _0xa940de;};'use strict';var moment=require(_0xd034('0x0'));var utils=require(_0xd034('0x1'));function Hangup(_0x3279da,_0x481341){this[_0xd034('0x2')]=0x4;this[_0xd034('0x3')]=_0xd034('0x4');this[_0xd034('0x5')]=_0x3279da[_0xd034('0x5')];this[_0xd034('0x6')]=_0x3279da[_0xd034('0x6')];this['campaigntype']=_0x3279da[_0xd034('0x6')]===_0xd034('0x7')?_0xd034('0x8'):_0x3279da[_0xd034('0x6')];this[_0xd034('0x9')]=_0x3279da[_0xd034('0x9')]||![];this[_0xd034('0xa')]=_0x3279da[_0xd034('0xa')];this[_0xd034('0xb')]=_0x3279da[_0xd034('0xb')];this[_0xd034('0xc')]=_0x3279da[_0xd034('0xc')];this[_0xd034('0xd')]=_0x3279da['countbusyretry']+_0x3279da['countcongestionretry']+_0x3279da['countnoanswerretry']+_0x3279da[_0xd034('0xe')]+_0x3279da['countdropretry']+_0x3279da[_0xd034('0xf')]+_0x3279da[_0xd034('0x10')]+_0x3279da[_0xd034('0x11')];this[_0xd034('0xe')]=_0x3279da[_0xd034('0xe')];this[_0xd034('0x12')]=_0x3279da['countdropretry'];this[_0xd034('0xf')]=_0x3279da[_0xd034('0xf')];this['countmachineretry']=_0x3279da[_0xd034('0x10')];this['countagentrejectretry']=_0x3279da[_0xd034('0x11')];this['uniqueid']=_0x481341['uniqueid'];this['calleridname']=_0x3279da[_0xd034('0x13')];this[_0xd034('0x14')]=_0x3279da[_0xd034('0x15')];this[_0xd034('0x16')]=_0x3279da['starttime'];this['responsetime']=_0x3279da[_0xd034('0x17')];this[_0xd034('0x18')]=moment()[_0xd034('0x19')](_0xd034('0x1a'));this[_0xd034('0x1b')]=utils[_0xd034('0x1c')](_0x3279da[_0xd034('0x17')],_0x3279da[_0xd034('0x16')]);this[_0xd034('0x1d')]=0x0;this[_0xd034('0x1e')]=utils[_0xd034('0x1c')](this[_0xd034('0x18')],_0x3279da[_0xd034('0x17')]);this[_0xd034('0x8')]=_0x3279da['queue'];this[_0xd034('0x1f')]=_0xd034('0x20');this[_0xd034('0x21')]=_0x481341[_0xd034('0x22')];this[_0xd034('0x23')]=_0x3279da['callback'];this[_0xd034('0x24')]=_0x3279da['callbackuniqueid'];this['callbackat']=_0x3279da[_0xd034('0x25')];this[_0xd034('0x26')]=_0x3279da[_0xd034('0x26')];this[_0xd034('0x27')]=_0x3279da[_0xd034('0x27')];this[_0xd034('0x28')]=_0x3279da[_0xd034('0x28')];this[_0xd034('0x29')]=_0x3279da[_0xd034('0x29')];this[_0xd034('0x2a')]=_0x3279da['VoiceQueueId'];this[_0xd034('0x2b')]=_0x3279da[_0xd034('0x2b')];}module[_0xd034('0x2c')]=Hangup;
\ No newline at end of file
+var _0x3de5=['starttime','responsetime','endtime','format','getSeconds','holdtime','talktime','membername','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','amd','countcongestionretry','countnoanswerretry','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','number'];(function(_0x5e3358,_0x1f36f8){var _0x469edf=function(_0x3477b2){while(--_0x3477b2){_0x5e3358['push'](_0x5e3358['shift']());}};_0x469edf(++_0x1f36f8);}(_0x3de5,0x68));var _0x53de=function(_0x33795f,_0x26627f){_0x33795f=_0x33795f-0x0;var _0x330565=_0x3de5[_0x33795f];return _0x330565;};'use strict';var moment=require(_0x53de('0x0'));var utils=require(_0x53de('0x1'));function Hangup(_0x3296ab,_0x20e812){this[_0x53de('0x2')]=0x4;this[_0x53de('0x3')]=_0x53de('0x4');this['scheduledat']=_0x3296ab[_0x53de('0x5')];this[_0x53de('0x6')]=_0x3296ab['type'];this[_0x53de('0x7')]=_0x3296ab[_0x53de('0x6')]===_0x53de('0x8')?_0x53de('0x9'):_0x3296ab[_0x53de('0x6')];this[_0x53de('0xa')]=_0x3296ab['amd']||![];this['countbusyretry']=_0x3296ab['countbusyretry'];this[_0x53de('0xb')]=_0x3296ab[_0x53de('0xb')];this[_0x53de('0xc')]=_0x3296ab['countnoanswerretry'];this['countglobal']=_0x3296ab[_0x53de('0xd')]+_0x3296ab[_0x53de('0xb')]+_0x3296ab[_0x53de('0xc')]+_0x3296ab[_0x53de('0xe')]+_0x3296ab[_0x53de('0xf')]+_0x3296ab[_0x53de('0x10')]+_0x3296ab['countmachineretry']+_0x3296ab['countagentrejectretry'];this[_0x53de('0xe')]=_0x3296ab[_0x53de('0xe')];this[_0x53de('0xf')]=_0x3296ab[_0x53de('0xf')];this[_0x53de('0x10')]=_0x3296ab[_0x53de('0x10')];this[_0x53de('0x11')]=_0x3296ab['countmachineretry'];this[_0x53de('0x12')]=_0x3296ab['countagentrejectretry'];this['uniqueid']=_0x20e812['uniqueid'];this['calleridname']=_0x3296ab[_0x53de('0x13')];this[_0x53de('0x14')]=_0x3296ab[_0x53de('0x15')];this['starttime']=_0x3296ab[_0x53de('0x16')];this['responsetime']=_0x3296ab[_0x53de('0x17')];this[_0x53de('0x18')]=moment()[_0x53de('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=utils[_0x53de('0x1a')](_0x3296ab[_0x53de('0x17')],_0x3296ab['starttime']);this[_0x53de('0x1b')]=0x0;this[_0x53de('0x1c')]=utils[_0x53de('0x1a')](this[_0x53de('0x18')],_0x3296ab[_0x53de('0x17')]);this[_0x53de('0x9')]=_0x3296ab[_0x53de('0x9')];this[_0x53de('0x1d')]=_0x53de('0x1e');this[_0x53de('0x1f')]=_0x20e812['cause-txt'];this[_0x53de('0x20')]=_0x3296ab[_0x53de('0x20')];this[_0x53de('0x21')]=_0x3296ab[_0x53de('0x21')];this[_0x53de('0x22')]=_0x3296ab[_0x53de('0x22')];this['recallme']=_0x3296ab[_0x53de('0x23')];this[_0x53de('0x24')]=_0x3296ab[_0x53de('0x24')];this[_0x53de('0x25')]=_0x3296ab[_0x53de('0x25')];this[_0x53de('0x26')]=_0x3296ab[_0x53de('0x26')];this[_0x53de('0x27')]=_0x3296ab[_0x53de('0x27')];this['CampaignId']=_0x3296ab[_0x53de('0x28')];}module[_0x53de('0x29')]=Hangup;
\ No newline at end of file
index b038590..f335591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d93=['endtime','ringtime','getSeconds','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5d93,0xee));var _0x35d9=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x5d93[_0x346737];return _0x1ade2e;};'use strict';var utils=require('../utils');function History(_0x2c850f){this[_0x35d9('0x0')]=_0x2c850f[_0x35d9('0x0')];this[_0x35d9('0x1')]=_0x2c850f[_0x35d9('0x1')]||undefined;this[_0x35d9('0x2')]=_0x2c850f[_0x35d9('0x2')];this[_0x35d9('0x3')]=_0x2c850f[_0x35d9('0x2')]===_0x35d9('0x4')?_0x35d9('0x5'):_0x2c850f[_0x35d9('0x2')];this[_0x35d9('0x6')]=_0x2c850f[_0x35d9('0x6')];this[_0x35d9('0x7')]=_0x2c850f[_0x35d9('0x7')];this['countnoanswerretry']=_0x2c850f[_0x35d9('0x8')];this[_0x35d9('0x9')]=_0x2c850f[_0x35d9('0x6')]+_0x2c850f[_0x35d9('0x7')]+_0x2c850f[_0x35d9('0x8')]+_0x2c850f[_0x35d9('0xa')]+_0x2c850f[_0x35d9('0xb')]+_0x2c850f[_0x35d9('0xc')]+_0x2c850f[_0x35d9('0xd')]+_0x2c850f[_0x35d9('0xe')];this[_0x35d9('0xa')]=_0x2c850f[_0x35d9('0xa')];this[_0x35d9('0xb')]=_0x2c850f[_0x35d9('0xb')];this[_0x35d9('0xc')]=_0x2c850f[_0x35d9('0xc')];this[_0x35d9('0xd')]=_0x2c850f['countmachineretry'];this[_0x35d9('0xe')]=_0x2c850f['countagentrejectretry'];this[_0x35d9('0x5')]=_0x2c850f['queue'];this[_0x35d9('0xf')]=_0x2c850f[_0x35d9('0x10')];this[_0x35d9('0x11')]=_0x2c850f[_0x35d9('0x12')];this[_0x35d9('0x13')]=_0x2c850f[_0x35d9('0x13')];this[_0x35d9('0x14')]=_0x2c850f[_0x35d9('0x14')];this[_0x35d9('0x15')]=_0x2c850f[_0x35d9('0x14')];this[_0x35d9('0x16')]=utils[_0x35d9('0x17')](_0x2c850f[_0x35d9('0x14')],_0x2c850f['starttime']);this['holdtime']=0x0;this['talktime']=0x0;this[_0x35d9('0x18')]=_0x2c850f[_0x35d9('0x18')];this[_0x35d9('0x19')]=_0x2c850f[_0x35d9('0x19')];this['callbackat']=_0x2c850f['callbackat'];this[_0x35d9('0x1a')]=_0x2c850f['recallme'];this['ContactId']=_0x2c850f[_0x35d9('0x1b')];this[_0x35d9('0x1c')]=_0x2c850f['ListId'];this[_0x35d9('0x1d')]=_0x2c850f[_0x35d9('0x1d')];this[_0x35d9('0x1e')]=_0x2c850f[_0x35d9('0x1e')];this[_0x35d9('0x1f')]=_0x2c850f[_0x35d9('0x1f')];this[_0x35d9('0x20')]=_0x2c850f['originatecalleridnum']||'';this[_0x35d9('0x21')]=_0x2c850f[_0x35d9('0x21')]||'';this['state']=_0x2c850f[_0x35d9('0x22')];this[_0x35d9('0x23')]=_0x2c850f['statedesc'];}module[_0x35d9('0x24')]=History;
\ No newline at end of file
+var _0x8af2=['countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','calleridnum','number','starttime','responsetime','ringtime','getSeconds','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x1715f0,_0x3311fe){var _0x504209=function(_0x4dfad9){while(--_0x4dfad9){_0x1715f0['push'](_0x1715f0['shift']());}};_0x504209(++_0x3311fe);}(_0x8af2,0x108));var _0x28af=function(_0x41f0d7,_0x19bf96){_0x41f0d7=_0x41f0d7-0x0;var _0x49369b=_0x8af2[_0x41f0d7];return _0x49369b;};'use strict';var utils=require('../utils');function History(_0x3fd30d){this[_0x28af('0x0')]=_0x3fd30d[_0x28af('0x0')];this[_0x28af('0x1')]=_0x3fd30d[_0x28af('0x1')]||undefined;this['type']=_0x3fd30d[_0x28af('0x2')];this[_0x28af('0x3')]=_0x3fd30d[_0x28af('0x2')]==='outbound'?_0x28af('0x4'):_0x3fd30d[_0x28af('0x2')];this['countbusyretry']=_0x3fd30d[_0x28af('0x5')];this['countcongestionretry']=_0x3fd30d[_0x28af('0x6')];this[_0x28af('0x7')]=_0x3fd30d[_0x28af('0x7')];this[_0x28af('0x8')]=_0x3fd30d['countbusyretry']+_0x3fd30d[_0x28af('0x6')]+_0x3fd30d[_0x28af('0x7')]+_0x3fd30d[_0x28af('0x9')]+_0x3fd30d[_0x28af('0xa')]+_0x3fd30d['countabandonedretry']+_0x3fd30d[_0x28af('0xb')]+_0x3fd30d[_0x28af('0xc')];this[_0x28af('0x9')]=_0x3fd30d[_0x28af('0x9')];this['countdropretry']=_0x3fd30d[_0x28af('0xa')];this[_0x28af('0xd')]=_0x3fd30d[_0x28af('0xd')];this['countmachineretry']=_0x3fd30d[_0x28af('0xb')];this[_0x28af('0xc')]=_0x3fd30d['countagentrejectretry'];this[_0x28af('0x4')]=_0x3fd30d[_0x28af('0x4')];this[_0x28af('0xe')]=_0x3fd30d['name'];this[_0x28af('0xf')]=_0x3fd30d[_0x28af('0x10')];this[_0x28af('0x11')]=_0x3fd30d[_0x28af('0x11')];this['responsetime']=_0x3fd30d[_0x28af('0x12')];this['endtime']=_0x3fd30d[_0x28af('0x12')];this[_0x28af('0x13')]=utils[_0x28af('0x14')](_0x3fd30d[_0x28af('0x12')],_0x3fd30d[_0x28af('0x11')]);this[_0x28af('0x15')]=0x0;this['talktime']=0x0;this[_0x28af('0x16')]=_0x3fd30d[_0x28af('0x16')];this[_0x28af('0x17')]=_0x3fd30d[_0x28af('0x17')];this[_0x28af('0x18')]=_0x3fd30d[_0x28af('0x18')];this[_0x28af('0x19')]=_0x3fd30d[_0x28af('0x19')];this[_0x28af('0x1a')]=_0x3fd30d['ContactId'];this[_0x28af('0x1b')]=_0x3fd30d[_0x28af('0x1b')];this['UserId']=_0x3fd30d['UserId'];this[_0x28af('0x1c')]=_0x3fd30d[_0x28af('0x1c')];this[_0x28af('0x1d')]=_0x3fd30d['CampaignId'];this['originatecalleridnum']=_0x3fd30d[_0x28af('0x1e')]||'';this[_0x28af('0x1f')]=_0x3fd30d[_0x28af('0x1f')]||'';this[_0x28af('0x20')]=_0x3fd30d['state'];this[_0x28af('0x21')]=_0x3fd30d['statedesc'];}module['exports']=History;
\ No newline at end of file
index a8056c5..c7e144c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c3=['UserId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','../utils','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','name','calleridnum','number','starttime','responsetime','droptime','dropreason','endtime','ringtime','getSeconds','holdtime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x455afa,_0x235bfc){var _0x46ee43=function(_0x26de4a){while(--_0x26de4a){_0x455afa['push'](_0x455afa['shift']());}};_0x46ee43(++_0x235bfc);}(_0x70c3,0x183));var _0x370c=function(_0x4b4e17,_0x2bd5a6){_0x4b4e17=_0x4b4e17-0x0;var _0x515b22=_0x70c3[_0x4b4e17];return _0x515b22;};'use strict';var utils=require(_0x370c('0x0'));function QueueCallerAbandon(_0x384146,_0x4d3306){this[_0x370c('0x1')]=_0x384146[_0x370c('0x1')];this['type']=_0x384146[_0x370c('0x2')];this[_0x370c('0x3')]=_0x384146[_0x370c('0x2')]===_0x370c('0x4')?_0x370c('0x5'):_0x384146[_0x370c('0x2')];this[_0x370c('0x6')]=_0x384146[_0x370c('0x6')];this['countcongestionretry']=_0x384146[_0x370c('0x7')];this[_0x370c('0x8')]=_0x384146['countnoanswerretry'];this['countglobal']=_0x384146[_0x370c('0x6')]+_0x384146[_0x370c('0x7')]+_0x384146[_0x370c('0x8')]+_0x384146['countnosuchnumberretry']+_0x384146[_0x370c('0x9')]+_0x384146[_0x370c('0xa')]+_0x384146[_0x370c('0xb')]+_0x384146[_0x370c('0xc')];this[_0x370c('0xd')]=_0x384146['countnosuchnumberretry'];this[_0x370c('0x9')]=_0x384146['countdropretry'];this[_0x370c('0xa')]=_0x384146[_0x370c('0xa')];this[_0x370c('0xb')]=_0x384146[_0x370c('0xb')];this['countagentrejectretry']=_0x384146[_0x370c('0xc')];this['uniqueid']=_0x4d3306['uniqueid'];this['calleridname']=_0x384146[_0x370c('0xe')];this[_0x370c('0xf')]=_0x384146[_0x370c('0x10')];this[_0x370c('0x11')]=_0x384146[_0x370c('0x11')];this[_0x370c('0x12')]=_0x384146['responsetime'];this[_0x370c('0x13')]=_0x384146['droptime'];this[_0x370c('0x14')]=_0x384146[_0x370c('0x14')];this[_0x370c('0x15')]=this['droptime'];this[_0x370c('0x16')]=utils[_0x370c('0x17')](_0x384146['responsetime'],_0x384146[_0x370c('0x11')]);this[_0x370c('0x18')]=utils[_0x370c('0x17')](this[_0x370c('0x13')],_0x384146['responsetime']);this['talktime']=0x0;this[_0x370c('0x5')]=_0x4d3306['queue'];this['membername']=_0x4d3306['connectedlinename'];this[_0x370c('0x19')]=_0x4d3306[_0x370c('0x19')];this['callback']=_0x384146[_0x370c('0x1a')];this[_0x370c('0x1b')]=_0x384146[_0x370c('0x1b')];this[_0x370c('0x1c')]=_0x384146[_0x370c('0x1c')];this['recallme']=_0x384146[_0x370c('0x1d')];this['ContactId']=_0x384146[_0x370c('0x1e')];this['ListId']=_0x384146['ListId'];this['UserId']=_0x384146[_0x370c('0x1f')];this['VoiceQueueId']=_0x384146['VoiceQueueId'];this['CampaignId']=_0x384146[_0x370c('0x20')];this[_0x370c('0x21')]=_0x384146[_0x370c('0x21')]||'';this[_0x370c('0x22')]=_0x384146[_0x370c('0x22')]||'';this[_0x370c('0x23')]=_0x384146['agiafterat'];this[_0x370c('0x24')]=_0x384146[_0x370c('0x24')];this[_0x370c('0x25')]=_0x384146[_0x370c('0x25')];}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0xb5ee=['responsetime','droptime','dropreason','getSeconds','holdtime','talktime','membername','connectedlinename','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','../utils','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime'];(function(_0x35afdb,_0x1fd7ee){var _0x3c64c7=function(_0x2655a1){while(--_0x2655a1){_0x35afdb['push'](_0x35afdb['shift']());}};_0x3c64c7(++_0x1fd7ee);}(_0xb5ee,0xbf));var _0xeb5e=function(_0x4687df,_0x12099c){_0x4687df=_0x4687df-0x0;var _0x32eaef=_0xb5ee[_0x4687df];return _0x32eaef;};'use strict';var utils=require(_0xeb5e('0x0'));function QueueCallerAbandon(_0x28b6d8,_0x5ba0cf){this[_0xeb5e('0x1')]=_0x28b6d8[_0xeb5e('0x1')];this['type']=_0x28b6d8[_0xeb5e('0x2')];this[_0xeb5e('0x3')]=_0x28b6d8[_0xeb5e('0x2')]==='outbound'?_0xeb5e('0x4'):_0x28b6d8[_0xeb5e('0x2')];this[_0xeb5e('0x5')]=_0x28b6d8[_0xeb5e('0x5')];this['countcongestionretry']=_0x28b6d8[_0xeb5e('0x6')];this['countnoanswerretry']=_0x28b6d8['countnoanswerretry'];this[_0xeb5e('0x7')]=_0x28b6d8[_0xeb5e('0x5')]+_0x28b6d8['countcongestionretry']+_0x28b6d8[_0xeb5e('0x8')]+_0x28b6d8[_0xeb5e('0x9')]+_0x28b6d8[_0xeb5e('0xa')]+_0x28b6d8[_0xeb5e('0xb')]+_0x28b6d8['countmachineretry']+_0x28b6d8['countagentrejectretry'];this[_0xeb5e('0x9')]=_0x28b6d8[_0xeb5e('0x9')];this[_0xeb5e('0xa')]=_0x28b6d8[_0xeb5e('0xa')];this['countabandonedretry']=_0x28b6d8['countabandonedretry'];this[_0xeb5e('0xc')]=_0x28b6d8[_0xeb5e('0xc')];this[_0xeb5e('0xd')]=_0x28b6d8[_0xeb5e('0xd')];this[_0xeb5e('0xe')]=_0x5ba0cf[_0xeb5e('0xe')];this['calleridname']=_0x28b6d8[_0xeb5e('0xf')];this[_0xeb5e('0x10')]=_0x28b6d8[_0xeb5e('0x11')];this[_0xeb5e('0x12')]=_0x28b6d8[_0xeb5e('0x12')];this['responsetime']=_0x28b6d8[_0xeb5e('0x13')];this[_0xeb5e('0x14')]=_0x28b6d8[_0xeb5e('0x14')];this[_0xeb5e('0x15')]=_0x28b6d8['dropreason'];this['endtime']=this[_0xeb5e('0x14')];this['ringtime']=utils[_0xeb5e('0x16')](_0x28b6d8[_0xeb5e('0x13')],_0x28b6d8[_0xeb5e('0x12')]);this[_0xeb5e('0x17')]=utils['getSeconds'](this[_0xeb5e('0x14')],_0x28b6d8[_0xeb5e('0x13')]);this[_0xeb5e('0x18')]=0x0;this[_0xeb5e('0x4')]=_0x5ba0cf[_0xeb5e('0x4')];this[_0xeb5e('0x19')]=_0x5ba0cf[_0xeb5e('0x1a')];this['reason']=_0x5ba0cf['reason'];this[_0xeb5e('0x1b')]=_0x28b6d8[_0xeb5e('0x1b')];this[_0xeb5e('0x1c')]=_0x28b6d8[_0xeb5e('0x1c')];this[_0xeb5e('0x1d')]=_0x28b6d8[_0xeb5e('0x1d')];this[_0xeb5e('0x1e')]=_0x28b6d8[_0xeb5e('0x1e')];this['ContactId']=_0x28b6d8[_0xeb5e('0x1f')];this[_0xeb5e('0x20')]=_0x28b6d8[_0xeb5e('0x20')];this[_0xeb5e('0x21')]=_0x28b6d8[_0xeb5e('0x21')];this['VoiceQueueId']=_0x28b6d8[_0xeb5e('0x22')];this[_0xeb5e('0x23')]=_0x28b6d8[_0xeb5e('0x23')];this[_0xeb5e('0x24')]=_0x28b6d8[_0xeb5e('0x24')]||'';this[_0xeb5e('0x25')]=_0x28b6d8['originatecalleridname']||'';this[_0xeb5e('0x26')]=_0x28b6d8[_0xeb5e('0x26')];this[_0xeb5e('0x27')]=_0x28b6d8['state'];this[_0xeb5e('0x28')]=_0x28b6d8[_0xeb5e('0x28')];}module[_0xeb5e('0x29')]=QueueCallerAbandon;
\ No newline at end of file
index 8fd1fa6..821f918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['[createHistory]','util','dialer','../../rpc/cmHopper','../../rpc/cmHopperAdditionalPhone','../../rpc/cmHopperHistory','inspect','dialOrderByScheduledAt','catch','temp','error','[getContactDialer]','getContactDialer','[getContactDialerIvr]','getContactDialerIvr','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[unlockContact]','moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackList]','checkIsBlackListIvr','[checkIsBlackListIvr]','verifyAdditionalPhones','[swapAdditionalPhone]','swapAdditionalPhones','avgHandleTime','[avgHandleTime]','createHistory'];(function(_0x14c1fb,_0x5d53e6){var _0x138389=function(_0x60da6e){while(--_0x60da6e){_0x14c1fb['push'](_0x14c1fb['shift']());}};_0x138389(++_0x5d53e6);}(_0xb10b,0x12a));var _0xbb10=function(_0x3f6b1b,_0x58d3d6){_0x3f6b1b=_0x3f6b1b-0x0;var _0x4a3d2b=_0xb10b[_0x3f6b1b];return _0x4a3d2b;};'use strict';var util=require(_0xbb10('0x0'));var logger=require('../../../../config/logger')(_0xbb10('0x1'));var cmHopper=require(_0xbb10('0x2'));var cmHopperAdditionalPhone=require(_0xbb10('0x3'));var cmHopperBlack=require('../../rpc/cmHopperBlack');var cmHopperHistory=require(_0xbb10('0x4'));function inspectError(_0x9bbed){return util[_0xbb10('0x5')](_0x9bbed,{'showHidden':![],'depth':null});}function getContactDialer(_0x22320e,_0x49baf4,_0x312b72){return cmHopper['getContactDialer'](_0x22320e['id'],_0x49baf4,_0x312b72,_0x22320e[_0xbb10('0x6')])[_0xbb10('0x7')](function(_0x513741){_0x22320e[_0xbb10('0x8')]-=_0x312b72;if(_0x22320e[_0xbb10('0x8')]<0x0){_0x22320e[_0xbb10('0x8')]=0x0;}logger[_0xbb10('0x9')](_0xbb10('0xa'),inspectError(_0x513741));});}exports[_0xbb10('0xb')]=getContactDialer;function getContactDialerIvr(_0x229887,_0xa3adc8){return cmHopper['getContactDialerIvr'](_0x229887['id'],_0xa3adc8,_0x229887['dialOrderByScheduledAt'])[_0xbb10('0x7')](function(_0x118a74){_0x229887[_0xbb10('0x8')]-=_0xa3adc8;if(_0x229887['temp']<0x0){_0x229887[_0xbb10('0x8')]=0x0;}logger['error'](_0xbb10('0xc'),inspectError(_0x118a74));});}exports[_0xbb10('0xd')]=getContactDialerIvr;function countReScheduled(_0x285009){return cmHopper[_0xbb10('0xe')](_0x285009)[_0xbb10('0x7')](function(_0x147230){logger['error'](_0xbb10('0xf'),inspectError(_0x147230));});}exports[_0xbb10('0xe')]=countReScheduled;function rescheduleContact(_0x45b9d6){return cmHopper[_0xbb10('0x10')](_0x45b9d6)[_0xbb10('0x7')](function(_0x2f2ebf){logger[_0xbb10('0x9')](_0xbb10('0x11'),inspectError(_0x2f2ebf));});}exports[_0xbb10('0x10')]=rescheduleContact;function unlockContact(_0x2b184e,_0x4a2bfc,_0x2eca0f){return cmHopper[_0xbb10('0x12')](_0x2b184e,_0x4a2bfc,_0x2eca0f)[_0xbb10('0x7')](function(_0x42db98){logger[_0xbb10('0x9')](_0xbb10('0x13'),inspectError(_0x42db98));});}exports[_0xbb10('0x12')]=unlockContact;function moveContactManagedDialer(_0x30efc6){return cmHopper[_0xbb10('0x14')](_0x30efc6)[_0xbb10('0x7')](function(_0x48b6e9){logger[_0xbb10('0x9')](_0xbb10('0x15'),inspectError(_0x48b6e9));});}exports[_0xbb10('0x14')]=moveContactManagedDialer;function checkIsBlackList(_0x109908){return cmHopperBlack[_0xbb10('0x16')](_0x109908)[_0xbb10('0x7')](function(_0x4deb49){logger[_0xbb10('0x9')](_0xbb10('0x17'),inspectError(_0x4deb49));});}exports['checkIsBlackList']=checkIsBlackList;function checkIsBlackListIvr(_0x4c4b0d){return cmHopperBlack[_0xbb10('0x18')](_0x4c4b0d)[_0xbb10('0x7')](function(_0x2e911d){logger[_0xbb10('0x9')](_0xbb10('0x19'),inspectError(_0x2e911d));});}exports[_0xbb10('0x18')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0x407cb4,_0x436104,_0x7f2377){return cmHopperAdditionalPhone[_0xbb10('0x1a')](_0x407cb4,_0x436104,_0x7f2377)[_0xbb10('0x7')](function(_0x26ad93){logger['error']('[verifyAdditionalPhone]',inspectError(_0x26ad93));});}exports['verifyAdditionalPhones']=verifyAdditionalPhones;function swapAdditionalPhones(_0xc93a04,_0x3c5ae7,_0x2c89b9){return cmHopperAdditionalPhone['swapAdditionalPhones'](_0xc93a04,_0x3c5ae7,_0x2c89b9)[_0xbb10('0x7')](function(_0x24d586){logger[_0xbb10('0x9')](_0xbb10('0x1b'),inspectError(_0x24d586));});}exports[_0xbb10('0x1c')]=swapAdditionalPhones;function avgHandleTime(_0x20d946){return cmHopperHistory[_0xbb10('0x1d')](_0x20d946)['catch'](function(_0x3796c7){logger[_0xbb10('0x9')](_0xbb10('0x1e'),inspectError(_0x3796c7));});}exports[_0xbb10('0x1d')]=avgHandleTime;function createHistory(_0x1d30aa){return cmHopperHistory[_0xbb10('0x1f')](_0x1d30aa)['catch'](function(_0x221624){logger['error'](_0xbb10('0x20'),inspectError(_0x221624));});}exports['createHistory']=createHistory;
\ No newline at end of file
+var _0xd8b0=['moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackListIvr]','checkIsBlackListIvr','verifyAdditionalPhones','[verifyAdditionalPhone]','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[avgHandleTime]','[createHistory]','createHistory','util','../../../../config/logger','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','getContactDialer','dialOrderByScheduledAt','catch','temp','error','[getContactDialer]','getContactDialerIvr','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[unlockContact]'];(function(_0x59d715,_0x3003a0){var _0x361f95=function(_0xd7b80b){while(--_0xd7b80b){_0x59d715['push'](_0x59d715['shift']());}};_0x361f95(++_0x3003a0);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x0d8b('0x0'));var logger=require(_0x0d8b('0x1'))('dialer');var cmHopper=require('../../rpc/cmHopper');var cmHopperAdditionalPhone=require('../../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x0d8b('0x2'));var cmHopperHistory=require(_0x0d8b('0x3'));function inspectError(_0x43bca1){return util[_0x0d8b('0x4')](_0x43bca1,{'showHidden':![],'depth':null});}function getContactDialer(_0x8196ed,_0x577834,_0x5e15e6){return cmHopper[_0x0d8b('0x5')](_0x8196ed['id'],_0x577834,_0x5e15e6,_0x8196ed[_0x0d8b('0x6')])[_0x0d8b('0x7')](function(_0x4a4470){_0x8196ed[_0x0d8b('0x8')]-=_0x5e15e6;if(_0x8196ed[_0x0d8b('0x8')]<0x0){_0x8196ed['temp']=0x0;}logger[_0x0d8b('0x9')](_0x0d8b('0xa'),inspectError(_0x4a4470));});}exports[_0x0d8b('0x5')]=getContactDialer;function getContactDialerIvr(_0x1f4800,_0x28ff7f){return cmHopper[_0x0d8b('0xb')](_0x1f4800['id'],_0x28ff7f,_0x1f4800[_0x0d8b('0x6')])[_0x0d8b('0x7')](function(_0x48fa16){_0x1f4800[_0x0d8b('0x8')]-=_0x28ff7f;if(_0x1f4800['temp']<0x0){_0x1f4800[_0x0d8b('0x8')]=0x0;}logger[_0x0d8b('0x9')](_0x0d8b('0xc'),inspectError(_0x48fa16));});}exports[_0x0d8b('0xb')]=getContactDialerIvr;function countReScheduled(_0x35a07b){return cmHopper[_0x0d8b('0xd')](_0x35a07b)[_0x0d8b('0x7')](function(_0x31a8cc){logger[_0x0d8b('0x9')](_0x0d8b('0xe'),inspectError(_0x31a8cc));});}exports[_0x0d8b('0xd')]=countReScheduled;function rescheduleContact(_0xe65334){return cmHopper[_0x0d8b('0xf')](_0xe65334)[_0x0d8b('0x7')](function(_0x4f6f21){logger[_0x0d8b('0x9')](_0x0d8b('0x10'),inspectError(_0x4f6f21));});}exports[_0x0d8b('0xf')]=rescheduleContact;function unlockContact(_0xe2e167,_0x2cb03c,_0x5cd485){return cmHopper[_0x0d8b('0x11')](_0xe2e167,_0x2cb03c,_0x5cd485)[_0x0d8b('0x7')](function(_0x2fd0fc){logger[_0x0d8b('0x9')](_0x0d8b('0x12'),inspectError(_0x2fd0fc));});}exports[_0x0d8b('0x11')]=unlockContact;function moveContactManagedDialer(_0x264b39){return cmHopper[_0x0d8b('0x13')](_0x264b39)['catch'](function(_0x27512e){logger[_0x0d8b('0x9')](_0x0d8b('0x14'),inspectError(_0x27512e));});}exports[_0x0d8b('0x13')]=moveContactManagedDialer;function checkIsBlackList(_0x24e8ed){return cmHopperBlack[_0x0d8b('0x15')](_0x24e8ed)[_0x0d8b('0x7')](function(_0x352c17){logger['error']('[checkIsBlackList]',inspectError(_0x352c17));});}exports[_0x0d8b('0x15')]=checkIsBlackList;function checkIsBlackListIvr(_0x54a9a7){return cmHopperBlack['checkIsBlackListIvr'](_0x54a9a7)['catch'](function(_0x238728){logger[_0x0d8b('0x9')](_0x0d8b('0x16'),inspectError(_0x238728));});}exports[_0x0d8b('0x17')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0x221071,_0x2c64e2,_0x30980c){return cmHopperAdditionalPhone[_0x0d8b('0x18')](_0x221071,_0x2c64e2,_0x30980c)[_0x0d8b('0x7')](function(_0x5e5bc3){logger[_0x0d8b('0x9')](_0x0d8b('0x19'),inspectError(_0x5e5bc3));});}exports['verifyAdditionalPhones']=verifyAdditionalPhones;function swapAdditionalPhones(_0xe1ef20,_0x4a0ae4,_0x3dd149){return cmHopperAdditionalPhone[_0x0d8b('0x1a')](_0xe1ef20,_0x4a0ae4,_0x3dd149)[_0x0d8b('0x7')](function(_0x4fe6f9){logger['error'](_0x0d8b('0x1b'),inspectError(_0x4fe6f9));});}exports[_0x0d8b('0x1a')]=swapAdditionalPhones;function avgHandleTime(_0x4c05ee){return cmHopperHistory[_0x0d8b('0x1c')](_0x4c05ee)['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x1d'),inspectError(_0x1b2b59));});}exports['avgHandleTime']=avgHandleTime;function createHistory(_0x2ab00d){return cmHopperHistory['createHistory'](_0x2ab00d)[_0x0d8b('0x7')](function(_0x544735){logger[_0x0d8b('0x9')](_0x0d8b('0x1e'),inspectError(_0x544735));});}exports[_0x0d8b('0x1f')]=createHistory;
\ No newline at end of file
index 0139127..2823951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13f=['extractCalleridName','isUndefined','string','format','\x22%s\x22\x20<%s>','getCallerId','\x5cw{0,','replace','random','toString','getCallerIdRandom','error','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','decrementOriginate','length','checkContactEmpty','erlangb','checkContactLowerLimitOriginate','lodash','moment','util','../../../../config/logger','../../../../config/environment/shared','timezones','ACTIVE','RESCHEDULED_CONTACTS','DEACTIVATED','IS_DISACTIVED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RUNNING','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','CAMPAIGN_STATUS','dialMethod','preview','isPreviewCampaign','type','ivr','outbound','isOutboundQueue','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','seconds','getSeconds','dialActive','message','available','loggedInDb','talking','pTalking','waiting','inUse','originated','Trunk','name','hasQueueCampaignDataChanged','dialTimezone','isNil','dialGlobalInterval','Interval','Intervals','NULL_INTERVAL','isEmpty','UNKNOWN_TIMEZONE','reachable','includes','status','TrunkBackup','INACTIVE','loggedIn','UNREACHABLE_TRUNK','getQueueCampaignStatusMessage','DISACTIVED'];(function(_0x4dec70,_0x5f4465){var _0x200bb5=function(_0x39ab56){while(--_0x39ab56){_0x4dec70['push'](_0x4dec70['shift']());}};_0x200bb5(++_0x5f4465);}(_0xd13f,0x10b));var _0xfd13=function(_0x48910e,_0x367254){_0x48910e=_0x48910e-0x0;var _0x192e57=_0xd13f[_0x48910e];return _0x192e57;};'use strict';var _=require(_0xfd13('0x0'));var moment=require(_0xfd13('0x1'));var util=require(_0xfd13('0x2'));var logger=require(_0xfd13('0x3'))('dialer');var timezones=require(_0xfd13('0x4'))[_0xfd13('0x5')];var CAMPAIGN_STATUS={'ACTIVE':_0xfd13('0x6'),'BLACKLIST':'BLACKLIST','CONTACTS_RESCHEDULED':_0xfd13('0x7'),'DEACTIVATED':_0xfd13('0x8'),'DISACTIVED':_0xfd13('0x9'),'EMPTY_INTERVAL':_0xfd13('0xa'),'INACTIVE':_0xfd13('0xb'),'NO_AGENTS_LOGGED':_0xfd13('0xc'),'NO_AVAILABLE_CONTACTS':'AVAILABLE_CONTACTS_FINISHED','NULL_INTERVAL':_0xfd13('0xd'),'OVERTIME_INTERVAL':_0xfd13('0xe'),'OVERTIME_GLOBAL_INTERVAL':_0xfd13('0xf'),'QUEUE_RECALL':_0xfd13('0x10'),'RECALL_TIMEOUT':_0xfd13('0x11'),'RUNNING':_0xfd13('0x12'),'UNKNOWN_TIMEZONE':_0xfd13('0x13'),'UNREACHABLE_TRUNK':_0xfd13('0x14')};exports[_0xfd13('0x15')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x2e2309){return _0x2e2309[_0xfd13('0x16')]===_0xfd13('0x17');}exports[_0xfd13('0x18')]=isPreviewCampaign;function isIVRCampaign(_0x5fb0d4){return _0x5fb0d4[_0xfd13('0x19')]===_0xfd13('0x1a');}exports['isIVRCampaign']=isIVRCampaign;function isOutboundQueue(_0x838c24){return _0x838c24[_0xfd13('0x19')]===_0xfd13('0x1b');}exports[_0xfd13('0x1c')]=isOutboundQueue;function isQueueCampaignActive(_0x370a00){return _0x370a00['dialActive'];}exports[_0xfd13('0x1d')]=isQueueCampaignActive;function isIVRCampaignActive(_0x2f3f30){return _0x2f3f30[_0xfd13('0x1e')];}exports[_0xfd13('0x1f')]=isIVRCampaignActive;function getSeconds(_0x14bf05,_0x5d98eb){var _0x2df99d=moment(_0x14bf05)[_0xfd13('0x20')](0x0);var _0x4b801b=moment(_0x5d98eb)[_0xfd13('0x20')](0x0);return _0x2df99d[_0xfd13('0x21')](_0x4b801b,_0xfd13('0x22'));}exports[_0xfd13('0x23')]=getSeconds;function hasQueueCampaignDataChanged(_0x19923a,_0x2c1532){var _0x5d363f=![];var _0x437a0e=_0x19923a[_0xfd13('0x16')]!==_0x2c1532['dialMethod']||_0x19923a[_0xfd13('0x24')]!==_0x2c1532['dialActive']||_0x19923a['message']!==_0x2c1532[_0xfd13('0x25')];var _0x9e7322=_0x19923a['available']!==_0x2c1532[_0xfd13('0x26')]||_0x19923a['loggedIn']!==_0x2c1532['loggedIn']||_0x19923a[_0xfd13('0x27')]!==_0x2c1532['loggedInDb']||_0x19923a['paused']!==_0x2c1532['paused']||_0x19923a[_0xfd13('0x28')]!==_0x2c1532[_0xfd13('0x28')]||_0x19923a[_0xfd13('0x29')]!==_0x2c1532[_0xfd13('0x29')]||_0x19923a[_0xfd13('0x2a')]!==_0x2c1532[_0xfd13('0x2a')]||_0x19923a[_0xfd13('0x2b')]!==_0x2c1532['inUse']||_0x19923a['originated']!==_0x2c1532[_0xfd13('0x2c')];if(_0x19923a[_0xfd13('0x2d')]&&_0x2c1532['Trunk']){_0x5d363f=_0x19923a['Trunk'][_0xfd13('0x2e')]!==_0x2c1532['Trunk'][_0xfd13('0x2e')]||_0x19923a['Trunk']['active']!==_0x2c1532['Trunk'][_0xfd13('0x1e')];}return _0x437a0e||_0x9e7322||_0x5d363f;}exports[_0xfd13('0x2f')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x39f3f7){var _0xc014e=null;var _0x1d4ee3=_0x39f3f7[_0xfd13('0x30')];if(_[_0xfd13('0x31')](_0x39f3f7[_0xfd13('0x32')])||_[_0xfd13('0x31')](_0x39f3f7['Interval'])||_[_0xfd13('0x31')](_0x39f3f7[_0xfd13('0x33')][_0xfd13('0x34')])){_0xc014e=CAMPAIGN_STATUS[_0xfd13('0x35')];}else if(_[_0xfd13('0x36')](_0x39f3f7['dialGlobalInterval'])||_[_0xfd13('0x36')](_0x39f3f7['Interval']['Intervals'])){_0xc014e=CAMPAIGN_STATUS['EMPTY_INTERVAL'];}else if(_0x1d4ee3&&!timezones[_0x1d4ee3]){_0xc014e=CAMPAIGN_STATUS[_0xfd13('0x37')];}return _0xc014e;}function checkAnyValidTrunk(_0x526078,_0x5f5806){var _0x231569=null;var _0x387ade='SIP/';var _0x2a8721=[_0xfd13('0x38'),'unmonitored'];var _0x1050c4=!![];if(_0x526078[_0xfd13('0x2d')]&&_0x526078[_0xfd13('0x2d')][_0xfd13('0x1e')]){_0x387ade+=_0x526078[_0xfd13('0x2d')][_0xfd13('0x2e')];_0x231569=_0x5f5806[_0x387ade];_0x1050c4=_0x2a8721[_0xfd13('0x39')](_0x231569[_0xfd13('0x3a')]);}else if(_0x526078[_0xfd13('0x3b')]&&_0x526078[_0xfd13('0x3b')]['active']){_0x387ade+=_0x526078[_0xfd13('0x3b')][_0xfd13('0x2e')];_0x231569=_0x5f5806[_0x387ade];_0x1050c4=_0x2a8721[_0xfd13('0x39')](_0x231569[_0xfd13('0x3a')]);}return _0x1050c4;}function getQueueCampaignStatusMessage(_0x20b309,_0x25444d){var _0x1ee37d=CAMPAIGN_STATUS[_0xfd13('0x6')];var _0xabcb0e=isPreviewCampaign(_0x20b309);if(!isQueueCampaignActive(_0x20b309)){if(_0xabcb0e){_0x1ee37d=CAMPAIGN_STATUS[_0xfd13('0x3c')];}else{if(_0x20b309[_0xfd13('0x2c')]===0x0&&_0x20b309['talking']===0x0&&_0x20b309[_0xfd13('0x2a')]===0x0&&(_0x20b309[_0xfd13('0x29')]||0x0)===0x0){_0x1ee37d=CAMPAIGN_STATUS[_0xfd13('0x3c')];}else{_0x1ee37d=CAMPAIGN_STATUS['DISACTIVED'];}}}else if(_0x20b309[_0xfd13('0x3d')]===0x0){_0x1ee37d=CAMPAIGN_STATUS['NO_AGENTS_LOGGED'];}else if(!checkAnyValidTrunk(_0x20b309,_0x25444d)){_0x1ee37d=CAMPAIGN_STATUS[_0xfd13('0x3e')];}else if(!isPreviewCampaign(_0x20b309)){var _0x4170f0=checkAnyValidQueueCampaignInterval(_0x20b309);if(_0x4170f0){_0x1ee37d=_0x4170f0;}}return _0x1ee37d;}exports[_0xfd13('0x3f')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x915cde){var _0x42aa69=CAMPAIGN_STATUS[_0xfd13('0x40')];if(_0x915cde[_0xfd13('0x2c')]===0x0&&_0x915cde[_0xfd13('0x28')]===0x0&&_0x915cde[_0xfd13('0x2a')]===0x0&&(_0x915cde[_0xfd13('0x29')]||0x0)===0x0){_0x42aa69=CAMPAIGN_STATUS[_0xfd13('0x3c')];}return _0x42aa69;}exports['getQueueCampaignActiveStatusMessage']=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x35adb2){var _0x3c9a3c=_0x35adb2['match'](/"(.*?)"/);return _0x3c9a3c?_0x3c9a3c[0x1]:_0x35adb2;}exports[_0xfd13('0x41')]=extractCalleridName;function getCallerId(_0x38ac6a,_0x46f06f,_0x4b893e){if(!_[_0xfd13('0x42')](_0x4b893e)&&typeof _0x4b893e===_0xfd13('0x43')&&!_[_0xfd13('0x36')](_0x4b893e)){if(!_[_0xfd13('0x42')](_0x46f06f)&&typeof _0x46f06f===_0xfd13('0x43')&&!_[_0xfd13('0x36')](_0x46f06f)){return util[_0xfd13('0x44')](_0xfd13('0x45'),_0x46f06f,_0x4b893e);}return util['format'](_0xfd13('0x45'),_0x4b893e,_0x4b893e);}if(!_[_0xfd13('0x42')](_0x38ac6a)&&typeof _0x38ac6a===_0xfd13('0x43')&&!_[_0xfd13('0x36')](_0x38ac6a)){return _0x38ac6a;}return'\x22\x22\x20<>';}exports[_0xfd13('0x46')]=getCallerId;function getCallerIdRandom(_0x45c2b8,_0x5f2831){var _0x2f2b2a;var _0xb1512d;var _0x4f8288;if(_0x5f2831<=0x0){_0x5f2831=0x1;}_0x2f2b2a=new RegExp(_0xfd13('0x47')+_0x5f2831+'}$');_0xb1512d=Math['pow'](0xa,_0x5f2831-0x1);_0x4f8288=Math['pow'](0xa,_0x5f2831)-0x1;return util[_0xfd13('0x44')]('%s',_[_0xfd13('0x48')](_0x45c2b8,_0x2f2b2a,_[_0xfd13('0x49')](_0xb1512d,_0x4f8288)[_0xfd13('0x4a')]()));}exports[_0xfd13('0x4b')]=getCallerIdRandom;function decrementOriginate(_0x3d77c1){if(_0x3d77c1[_0xfd13('0x2c')]&&_0x3d77c1[_0xfd13('0x2c')]>0x0){_0x3d77c1[_0xfd13('0x2c')]-=0x1;}else{logger[_0xfd13('0x4c')](_0xfd13('0x4d'));}}exports[_0xfd13('0x4e')]=decrementOriginate;function checkContactEmpty(_0x14e5e8){return _0x14e5e8&&_0x14e5e8[_0xfd13('0x4f')]>0x0;}exports[_0xfd13('0x50')]=checkContactEmpty;function erlangb(_0x28852e,_0x1c50a1){if(_0x1c50a1===0x0){return 0x0;}var _0x1383ff=0x1;for(var _0x5be36b=0x1;_0x5be36b<=_0x1c50a1;_0x5be36b+=0x1){_0x1383ff=0x1+_0x1383ff*_0x5be36b/_0x28852e;}return 0x1/_0x1383ff;}exports[_0xfd13('0x51')]=erlangb;function checkContactLowerLimitOriginate(_0x5175c7,_0x4ba07c,_0x3f7f85){if(_0x4ba07c>_0x3f7f85){for(var _0x4937aa=0x0;_0x4937aa<_0x4ba07c-_0x3f7f85;_0x4937aa+=0x1){decrementOriginate(_0x5175c7);}}}exports[_0xfd13('0x52')]=checkContactLowerLimitOriginate;
\ No newline at end of file
+var _0xe316=['string','format','\x22%s\x22\x20<%s>','getCallerId','pow','replace','toString','getCallerIdRandom','decrementOriginate','length','checkContactEmpty','erlangb','lodash','util','../../../../config/logger','dialer','../../../../config/environment/shared','timezones','BLACKLIST','RESCHEDULED_CONTACTS','DEACTIVATED','IS_DISACTIVED','INTERVAL_IS_EMPTY','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_NULL','GLOBAL_INTERVAL_IS_OVERTIME','TRUNK_IS_NOT_REACHABLE','CAMPAIGN_STATUS','dialMethod','preview','type','ivr','isIVRCampaign','outbound','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','seconds','getSeconds','message','available','loggedIn','paused','talking','pTalking','waiting','inUse','originated','Trunk','name','dialTimezone','isNil','Interval','Intervals','NULL_INTERVAL','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','reachable','unmonitored','status','TrunkBackup','includes','ACTIVE','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','getQueueCampaignStatusMessage','getQueueCampaignActiveStatusMessage','match','isEmpty','isUndefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe316,0x188));var _0x6e31=function(_0x936f1f,_0x2eaf2f){_0x936f1f=_0x936f1f-0x0;var _0xb36ff7=_0xe316[_0x936f1f];return _0xb36ff7;};'use strict';var _=require(_0x6e31('0x0'));var moment=require('moment');var util=require(_0x6e31('0x1'));var logger=require(_0x6e31('0x2'))(_0x6e31('0x3'));var timezones=require(_0x6e31('0x4'))[_0x6e31('0x5')];var CAMPAIGN_STATUS={'ACTIVE':'ACTIVE','BLACKLIST':_0x6e31('0x6'),'CONTACTS_RESCHEDULED':_0x6e31('0x7'),'DEACTIVATED':_0x6e31('0x8'),'DISACTIVED':_0x6e31('0x9'),'EMPTY_INTERVAL':_0x6e31('0xa'),'INACTIVE':'NOT_ACTIVE','NO_AGENTS_LOGGED':_0x6e31('0xb'),'NO_AVAILABLE_CONTACTS':_0x6e31('0xc'),'NULL_INTERVAL':_0x6e31('0xd'),'OVERTIME_INTERVAL':'INTERVAL_IS_OVERTIME','OVERTIME_GLOBAL_INTERVAL':_0x6e31('0xe'),'QUEUE_RECALL':'RECALLINQUEUE','RECALL_TIMEOUT':'RECALLFAILEDTIMEOUT','RUNNING':'RUNNING','UNKNOWN_TIMEZONE':'TIMEZONE_UNKNOW','UNREACHABLE_TRUNK':_0x6e31('0xf')};exports[_0x6e31('0x10')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x232578){return _0x232578[_0x6e31('0x11')]===_0x6e31('0x12');}exports['isPreviewCampaign']=isPreviewCampaign;function isIVRCampaign(_0x5b0267){return _0x5b0267[_0x6e31('0x13')]===_0x6e31('0x14');}exports[_0x6e31('0x15')]=isIVRCampaign;function isOutboundQueue(_0x43a01a){return _0x43a01a[_0x6e31('0x13')]===_0x6e31('0x16');}exports['isOutboundQueue']=isOutboundQueue;function isQueueCampaignActive(_0x1cdb23){return _0x1cdb23[_0x6e31('0x17')];}exports[_0x6e31('0x18')]=isQueueCampaignActive;function isIVRCampaignActive(_0xe239f5){return _0xe239f5[_0x6e31('0x19')];}exports[_0x6e31('0x1a')]=isIVRCampaignActive;function getSeconds(_0x3d371f,_0x4724a9){var _0x34fbf1=moment(_0x3d371f)[_0x6e31('0x1b')](0x0);var _0x4f3637=moment(_0x4724a9)[_0x6e31('0x1b')](0x0);return _0x34fbf1[_0x6e31('0x1c')](_0x4f3637,_0x6e31('0x1d'));}exports[_0x6e31('0x1e')]=getSeconds;function hasQueueCampaignDataChanged(_0x2aec3a,_0x3a0c00){var _0x3a43dc=![];var _0xed311d=_0x2aec3a['dialMethod']!==_0x3a0c00[_0x6e31('0x11')]||_0x2aec3a[_0x6e31('0x17')]!==_0x3a0c00[_0x6e31('0x17')]||_0x2aec3a[_0x6e31('0x1f')]!==_0x3a0c00['message'];var _0xa1b9f6=_0x2aec3a[_0x6e31('0x20')]!==_0x3a0c00[_0x6e31('0x20')]||_0x2aec3a[_0x6e31('0x21')]!==_0x3a0c00[_0x6e31('0x21')]||_0x2aec3a['loggedInDb']!==_0x3a0c00['loggedInDb']||_0x2aec3a[_0x6e31('0x22')]!==_0x3a0c00[_0x6e31('0x22')]||_0x2aec3a['talking']!==_0x3a0c00[_0x6e31('0x23')]||_0x2aec3a[_0x6e31('0x24')]!==_0x3a0c00[_0x6e31('0x24')]||_0x2aec3a[_0x6e31('0x25')]!==_0x3a0c00[_0x6e31('0x25')]||_0x2aec3a[_0x6e31('0x26')]!==_0x3a0c00[_0x6e31('0x26')]||_0x2aec3a[_0x6e31('0x27')]!==_0x3a0c00[_0x6e31('0x27')];if(_0x2aec3a[_0x6e31('0x28')]&&_0x3a0c00['Trunk']){_0x3a43dc=_0x2aec3a['Trunk'][_0x6e31('0x29')]!==_0x3a0c00[_0x6e31('0x28')][_0x6e31('0x29')]||_0x2aec3a['Trunk'][_0x6e31('0x19')]!==_0x3a0c00['Trunk'][_0x6e31('0x19')];}return _0xed311d||_0xa1b9f6||_0x3a43dc;}exports['hasQueueCampaignDataChanged']=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x47d8e5){var _0x5e4db3=null;var _0x197619=_0x47d8e5[_0x6e31('0x2a')];if(_['isNil'](_0x47d8e5['dialGlobalInterval'])||_[_0x6e31('0x2b')](_0x47d8e5[_0x6e31('0x2c')])||_[_0x6e31('0x2b')](_0x47d8e5['Interval'][_0x6e31('0x2d')])){_0x5e4db3=CAMPAIGN_STATUS[_0x6e31('0x2e')];}else if(_['isEmpty'](_0x47d8e5['dialGlobalInterval'])||_['isEmpty'](_0x47d8e5['Interval'][_0x6e31('0x2d')])){_0x5e4db3=CAMPAIGN_STATUS[_0x6e31('0x2f')];}else if(_0x197619&&!timezones[_0x197619]){_0x5e4db3=CAMPAIGN_STATUS[_0x6e31('0x30')];}return _0x5e4db3;}function checkAnyValidTrunk(_0x53ad9e,_0x117d8b){var _0x12c429=null;var _0x2a2ae8=_0x6e31('0x31');var _0x565153=[_0x6e31('0x32'),_0x6e31('0x33')];var _0x5ce2e8=!![];if(_0x53ad9e[_0x6e31('0x28')]&&_0x53ad9e[_0x6e31('0x28')]['active']){_0x2a2ae8+=_0x53ad9e['Trunk']['name'];_0x12c429=_0x117d8b[_0x2a2ae8];_0x5ce2e8=_0x565153['includes'](_0x12c429[_0x6e31('0x34')]);}else if(_0x53ad9e[_0x6e31('0x35')]&&_0x53ad9e[_0x6e31('0x35')][_0x6e31('0x19')]){_0x2a2ae8+=_0x53ad9e['TrunkBackup'][_0x6e31('0x29')];_0x12c429=_0x117d8b[_0x2a2ae8];_0x5ce2e8=_0x565153[_0x6e31('0x36')](_0x12c429[_0x6e31('0x34')]);}return _0x5ce2e8;}function getQueueCampaignStatusMessage(_0x18f520,_0x45ae69){var _0x349ef3=CAMPAIGN_STATUS[_0x6e31('0x37')];var _0x4e57e9=isPreviewCampaign(_0x18f520);if(!isQueueCampaignActive(_0x18f520)){if(_0x4e57e9){_0x349ef3=CAMPAIGN_STATUS['INACTIVE'];}else{if(_0x18f520['originated']===0x0&&_0x18f520[_0x6e31('0x23')]===0x0&&_0x18f520[_0x6e31('0x25')]===0x0&&(_0x18f520[_0x6e31('0x24')]||0x0)===0x0){_0x349ef3=CAMPAIGN_STATUS[_0x6e31('0x38')];}else{_0x349ef3=CAMPAIGN_STATUS[_0x6e31('0x39')];}}}else if(_0x18f520[_0x6e31('0x21')]===0x0){_0x349ef3=CAMPAIGN_STATUS[_0x6e31('0x3a')];}else if(!checkAnyValidTrunk(_0x18f520,_0x45ae69)){_0x349ef3=CAMPAIGN_STATUS['UNREACHABLE_TRUNK'];}else if(!isPreviewCampaign(_0x18f520)){var _0x9166c6=checkAnyValidQueueCampaignInterval(_0x18f520);if(_0x9166c6){_0x349ef3=_0x9166c6;}}return _0x349ef3;}exports[_0x6e31('0x3b')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x322000){var _0x354797=CAMPAIGN_STATUS['DISACTIVED'];if(_0x322000[_0x6e31('0x27')]===0x0&&_0x322000[_0x6e31('0x23')]===0x0&&_0x322000['waiting']===0x0&&(_0x322000[_0x6e31('0x24')]||0x0)===0x0){_0x354797=CAMPAIGN_STATUS[_0x6e31('0x38')];}return _0x354797;}exports[_0x6e31('0x3c')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0xbf389f){var _0x4f44e0=_0xbf389f[_0x6e31('0x3d')](/"(.*?)"/);return _0x4f44e0?_0x4f44e0[0x1]:_0xbf389f;}exports['extractCalleridName']=extractCalleridName;function getCallerId(_0x5710ad,_0x54f813,_0x539376){if(!_['isUndefined'](_0x539376)&&typeof _0x539376==='string'&&!_[_0x6e31('0x3e')](_0x539376)){if(!_[_0x6e31('0x3f')](_0x54f813)&&typeof _0x54f813===_0x6e31('0x40')&&!_[_0x6e31('0x3e')](_0x54f813)){return util['format']('\x22%s\x22\x20<%s>',_0x54f813,_0x539376);}return util[_0x6e31('0x41')](_0x6e31('0x42'),_0x539376,_0x539376);}if(!_['isUndefined'](_0x5710ad)&&typeof _0x5710ad===_0x6e31('0x40')&&!_['isEmpty'](_0x5710ad)){return _0x5710ad;}return'\x22\x22\x20<>';}exports[_0x6e31('0x43')]=getCallerId;function getCallerIdRandom(_0x780ba6,_0xbfa9d5){var _0x50ddd7;var _0x3556d1;var _0xd77451;if(_0xbfa9d5<=0x0){_0xbfa9d5=0x1;}_0x50ddd7=new RegExp('\x5cw{0,'+_0xbfa9d5+'}$');_0x3556d1=Math['pow'](0xa,_0xbfa9d5-0x1);_0xd77451=Math[_0x6e31('0x44')](0xa,_0xbfa9d5)-0x1;return util['format']('%s',_[_0x6e31('0x45')](_0x780ba6,_0x50ddd7,_['random'](_0x3556d1,_0xd77451)[_0x6e31('0x46')]()));}exports[_0x6e31('0x47')]=getCallerIdRandom;function decrementOriginate(_0x59b064){if(_0x59b064[_0x6e31('0x27')]&&_0x59b064[_0x6e31('0x27')]>0x0){_0x59b064['originated']-=0x1;}else{logger['error']('[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative');}}exports[_0x6e31('0x48')]=decrementOriginate;function checkContactEmpty(_0x354031){return _0x354031&&_0x354031[_0x6e31('0x49')]>0x0;}exports[_0x6e31('0x4a')]=checkContactEmpty;function erlangb(_0x44ae1d,_0x129ce6){if(_0x129ce6===0x0){return 0x0;}var _0x16312b=0x1;for(var _0x56db7e=0x1;_0x56db7e<=_0x129ce6;_0x56db7e+=0x1){_0x16312b=0x1+_0x16312b*_0x56db7e/_0x44ae1d;}return 0x1/_0x16312b;}exports[_0x6e31('0x4b')]=erlangb;function checkContactLowerLimitOriginate(_0x15044a,_0x58636d,_0xbec2ab){if(_0x58636d>_0xbec2ab){for(var _0x30b186=0x0;_0x30b186<_0x58636d-_0xbec2ab;_0x30b186+=0x1){decrementOriginate(_0x15044a);}}}exports['checkContactLowerLimitOriginate']=checkContactLowerLimitOriginate;
\ No newline at end of file
index 4eef72a..d11ce12 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(_0x2eada9,_0xaf0d7e){var _0x40c84e=function(_0x515289){while(--_0x515289){_0x2eada9['push'](_0x2eada9['shift']());}};_0x40c84e(++_0xaf0d7e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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(_0x2187f1,_0xa7d382){var _0x21aaf8=function(_0x2a7731){while(--_0x2a7731){_0x2187f1['push'](_0x2187f1['shift']());}};_0x21aaf8(++_0xa7d382);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 28bde64..b274760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4789=['faxAccounts','trunks','actions','newchannel','varset','bind','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','syncNewchannel','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','name','info','\x20syncNewchannel\x20','channel','variable','value','channelstate','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','create','parse','.pdf','application/pdf','then','fax','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','AttachmentId','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','FaxAccountId','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','isTrunkReachable','isNil','active','format','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x4789,0xe1));var _0x9478=function(_0x35c5a8,_0x8ecb48){_0x35c5a8=_0x35c5a8-0x0;var _0x34782c=_0x4789[_0x35c5a8];return _0x34782c;};'use strict';var util=require(_0x9478('0x0'));var _=require(_0x9478('0x1'));var BPromise=require(_0x9478('0x2'));var uuid=require(_0x9478('0x3'));var moment=require(_0x9478('0x4'));var path=require(_0x9478('0x5'));var tiff2pdf=require(_0x9478('0x6'));var gs=require(_0x9478('0x7'));var logger=require('../../../config/logger')('fax');var ami=require(_0x9478('0x8'));var rpcDb=require('./rpcDb');var Channel=require(_0x9478('0x9'));var ut=require(_0x9478('0xa'));var Action=require(_0x9478('0xb'));var faxAccount=require(_0x9478('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x9478('0xd'));function Fax(_0x874a70){this[_0x9478('0xe')]={};this[_0x9478('0xf')]=_0x874a70[_0x9478('0xf')];this[_0x9478('0x10')]=_0x874a70['trunks'];this[_0x9478('0x11')]={};ami['on'](_0x9478('0x12'),this['syncNewchannel']['bind'](this));ami['on'](_0x9478('0x13'),this['syncVarSet'][_0x9478('0x14')](this));ami['on'](_0x9478('0x15'),this[_0x9478('0x16')][_0x9478('0x14')](this));ami['on'](_0x9478('0x17'),this[_0x9478('0x18')]['bind'](this));ami['on'](_0x9478('0x19'),this[_0x9478('0x1a')][_0x9478('0x14')](this));ami['on'](_0x9478('0x1b'),this[_0x9478('0x1c')][_0x9478('0x14')](this));ami['on'](_0x9478('0x1d'),this[_0x9478('0x1e')][_0x9478('0x14')](this));ami['on'](_0x9478('0x1f'),this[_0x9478('0x20')][_0x9478('0x14')](this));}Fax[_0x9478('0x21')][_0x9478('0x22')]=function(_0x2b7b23){if(_0x2b7b23['context']===_0x9478('0x23')){for(var _0xd16d42 in this[_0x9478('0xf')]){if(this[_0x9478('0xf')][_0x9478('0x24')](_0xd16d42)){if(_0x2b7b23[_0x9478('0x25')]===this['faxAccounts'][_0xd16d42][_0x9478('0x26')]){this[_0x9478('0xe')][_0x2b7b23[_0x9478('0x27')]]={};this[_0x9478('0xe')][_0x2b7b23[_0x9478('0x27')]]['channel']=_0x2b7b23['channel'];this[_0x9478('0xe')][_0x2b7b23['uniqueid']]['id']=this['faxAccounts'][_0xd16d42]['id'];this[_0x9478('0xe')][_0x2b7b23[_0x9478('0x27')]]['name']=this[_0x9478('0xf')][_0xd16d42][_0x9478('0x28')];logger[_0x9478('0x29')](_0x2b7b23[_0x9478('0x27')],_0x9478('0x2a'));}}}}if(this['actions'][_0x2b7b23[_0x9478('0x27')]]){this[_0x9478('0xe')][_0x2b7b23['uniqueid']]={};this[_0x9478('0xe')][_0x2b7b23[_0x9478('0x27')]][_0x9478('0x2b')]=_0x2b7b23[_0x9478('0x2b')];logger[_0x9478('0x29')](_0x2b7b23[_0x9478('0x27')],'\x20syncNewchannel\x20');}};Fax['prototype']['syncVarSet']=function(_0x3c3b4f){if(this[_0x9478('0xe')][_0x3c3b4f[_0x9478('0x27')]]){for(var _0x1f82e1 in _0x3c3b4f[_0x9478('0x2c')]){if(_0x3c3b4f[_0x9478('0x2c')]['hasOwnProperty'](_0x1f82e1)){this[_0x9478('0xe')][_0x3c3b4f[_0x9478('0x27')]][_0x1f82e1]=_0x3c3b4f[_0x9478('0x2d')];}}}};Fax[_0x9478('0x21')]['syncNewState']=function(_0x38c8c3){if(this['channels'][_0x38c8c3[_0x9478('0x27')]]){this[_0x9478('0xe')][_0x38c8c3[_0x9478('0x27')]]['channelstate']=_0x38c8c3[_0x9478('0x2e')];this[_0x9478('0xe')][_0x38c8c3[_0x9478('0x27')]]['channelstatedesc']=_0x38c8c3['channelstatedesc'];}};Fax['prototype'][_0x9478('0x18')]=function(_0xe04630){if(this[_0x9478('0xe')][_0xe04630[_0x9478('0x27')]]){for(var _0x2b57df in _0xe04630['variable']){if(_0xe04630[_0x9478('0x2c')][_0x9478('0x24')](_0x2b57df)){this[_0x9478('0xe')][_0xe04630[_0x9478('0x27')]][_0x2b57df]=_0xe04630[_0x9478('0x2d')];}}}};Fax[_0x9478('0x21')][_0x9478('0x1a')]=function(_0x584235){if(this[_0x9478('0xe')][_0x584235[_0x9478('0x27')]]){this['channels'][_0x584235[_0x9478('0x27')]][_0x9478('0x2f')]=_0x584235[_0x9478('0x2f')];this['channels'][_0x584235[_0x9478('0x27')]][_0x9478('0x30')]=_0x584235[_0x9478('0x30')];this['channels'][_0x584235['uniqueid']][_0x9478('0x26')]=_0x584235[_0x9478('0x26')];this['channels'][_0x584235['uniqueid']][_0x9478('0x31')]=_0x584235[_0x9478('0x31')];logger[_0x9478('0x29')](_0x584235['uniqueid'],'\x20syncFaxStatus\x20');}};Fax[_0x9478('0x21')][_0x9478('0x1c')]=function(_0x2243e4){var _0x4dea89=this;if(this[_0x9478('0xe')][_0x2243e4[_0x9478('0x27')]]){var _0x3f64d2=this['channels'][_0x2243e4[_0x9478('0x27')]]['id'];this[_0x9478('0xe')][_0x2243e4[_0x9478('0x27')]][_0x9478('0x32')]=_0x2243e4[_0x9478('0x32')];this[_0x9478('0xe')][_0x2243e4['uniqueid']][_0x9478('0x33')]=_0x2243e4[_0x9478('0x33')];this['channels'][_0x2243e4[_0x9478('0x27')]][_0x9478('0x26')]=_0x2243e4['localstationid'];this[_0x9478('0xe')][_0x2243e4['uniqueid']][_0x9478('0x34')]=_0x2243e4[_0x9478('0x34')];this['channels'][_0x2243e4[_0x9478('0x27')]]['transferrate']=_0x2243e4[_0x9478('0x35')];this[_0x9478('0xe')][_0x2243e4[_0x9478('0x27')]][_0x9478('0x31')]=_0x2243e4[_0x9478('0x31')];this[_0x9478('0xe')][_0x2243e4[_0x9478('0x27')]][_0x9478('0x36')]=_0x2243e4[_0x9478('0x36')];if(this[_0x9478('0xe')][_0x2243e4[_0x9478('0x27')]]['pagestransferred']>0x0){tiff2pdf(_0x2243e4[_0x9478('0x31')],_0x9478('0x37'),function(_0x46ab84){logger['info'](_0x2243e4[_0x9478('0x27')],'\x20result\x20conversion\x20file\x20',_0x46ab84[_0x9478('0x38')]);attachment[_0x9478('0x39')]({'name':path[_0x9478('0x3a')](_0x2243e4[_0x9478('0x31')])['name'],'basename':path[_0x9478('0x3a')](_0x2243e4['filename'])[_0x9478('0x28')]+_0x9478('0x3b'),'type':_0x9478('0x3c')})[_0x9478('0x3d')](function(_0x1aca95){faxAccount['notify'](_0x3f64d2,{'from':_0x2243e4['calleridnum'],'mapKey':_0x9478('0x3e'),'body':path[_0x9478('0x3a')](_0x2243e4['filename'])[_0x9478('0x28')]+_0x9478('0x3b'),'AttachmentId':_0x1aca95['id']})[_0x9478('0x3f')](function(_0x1b37d9){logger[_0x9478('0x40')](_0x2243e4[_0x9478('0x27')],_0x9478('0x41'),JSON['stringify'](_0x1b37d9));});})[_0x9478('0x3f')](function(_0x26e330){logger['error'](_0x2243e4['uniqueid'],_0x9478('0x42'),JSON[_0x9478('0x43')](_0x26e330));});});}logger[_0x9478('0x29')](_0x2243e4['uniqueid'],'\x20receiveFax\x20');}};Fax['prototype'][_0x9478('0x20')]=function(_0x2faba5){if(this[_0x9478('0x11')][_0x2faba5[_0x9478('0x27')]]){_[_0x9478('0x44')](this['channels'][_0x2faba5[_0x9478('0x27')]],_[_0x9478('0x45')](_0x2faba5,['response','reason']));}};function updateStatus(_0x46afa2){if(_0x46afa2[_0x9478('0x46')]){faxMessage['update'](_0x46afa2[_0x9478('0x46')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x9478('0x3d')](function(_0x55abc5){ut[_0x9478('0x47')](_0x9478('0x48'),_0x55abc5);})['catch'](function(_0x36fa83){ut[_0x9478('0x47')](_0x9478('0x49'),_0x36fa83);});}else{ut[_0x9478('0x47')](_0x9478('0x4a'));}}Fax['prototype'][_0x9478('0x4b')]=function(_0x494baf,_0x403825,_0x3c9d92){var _0x376438=this;var _0x121819={};if(_0x403825){_0x121819={'read':_0x403825};}else{_0x121819={'failMessage':_0x3c9d92};}if(this['actions'][_0x494baf][_0x9478('0x46')]){faxMessage[_0x9478('0x4c')](this[_0x9478('0x11')][_0x494baf][_0x9478('0x46')],_0x121819)['then'](function(_0x5b7126){ut[_0x9478('0x47')](_0x9478('0x4d'),_0x5b7126);})[_0x9478('0x3f')](function(_0x3e7521){ut[_0x9478('0x47')](_0x9478('0x4e'),_0x3e7521);})[_0x9478('0x4f')](function(){delete _0x376438[_0x9478('0xe')][_0x494baf];delete _0x376438[_0x9478('0x11')][_0x494baf];});}else{ut[_0x9478('0x47')](_0x9478('0x50'));delete this['channels'][_0x494baf];delete this['actions'][_0x494baf];}};Fax[_0x9478('0x21')]['syncHangup']=function(_0x4764e9){var _0x2c4e1a=this;if(this[_0x9478('0xe')][_0x4764e9[_0x9478('0x27')]]){if(this[_0x9478('0x11')][_0x4764e9[_0x9478('0x27')]]){this[_0x9478('0xe')][_0x4764e9[_0x9478('0x27')]]['id']=this[_0x9478('0x11')][_0x4764e9['uniqueid']]['id'];this['channels'][_0x4764e9['uniqueid']][_0x9478('0x28')]=this[_0x9478('0x11')][_0x4764e9[_0x9478('0x27')]][_0x9478('0x28')];}logger[_0x9478('0x29')](_0x4764e9['uniqueid'],this[_0x9478('0x11')][_0x4764e9[_0x9478('0x27')]]?_0x9478('0x51'):_0x9478('0x52'),JSON[_0x9478('0x43')](this[_0x9478('0xe')][_0x4764e9['uniqueid']]));if(this[_0x9478('0x11')][_0x4764e9[_0x9478('0x27')]]){if(this['channels'][_0x4764e9['uniqueid']][_0x9478('0x53')]>0x0&&this[_0x9478('0xe')][_0x4764e9[_0x9478('0x27')]][_0x9478('0x19')]===_0x9478('0x54')){this[_0x9478('0x4b')](_0x4764e9['uniqueid'],!![]);}else{this['updateStatus'](_0x4764e9['uniqueid'],![],this[_0x9478('0xe')][_0x4764e9['uniqueid']][_0x9478('0x55')]?_0x9478('0x56')+this[_0x9478('0xe')][_0x4764e9['uniqueid']]['faxstatusstring']:_0x9478('0x57'));}}}};Fax[_0x9478('0x21')][_0x9478('0x58')]=function(_0x35c426){var _0x1adcd7=this;return new BPromise(function(_0x3550d2,_0x1e81a7){_0x1adcd7[_0x9478('0x59')](_0x35c426,_0x1adcd7[_0x9478('0xf')][_0x35c426['FaxAccountId']])['then'](function(_0x34f2fb){ut[_0x9478('0x47')](_0x9478('0x5a'),_0x34f2fb);_0x3550d2(ut['message'](_0x9478('0x5b')));})[_0x9478('0x3f')](function(_0x7271eb){ut[_0x9478('0x47')](_0x9478('0x5c'),_0x7271eb);updateStatus(_0x35c426);_0x1e81a7(ut['message'](_0x9478('0x5d')));});});};Fax['prototype']['checkAfterSend']=function(_0x1c33d7){var _0x3160ae=this;return new BPromise(function(_0x5762ed,_0x475ad8){var _0x5493c8=_0x3160ae[_0x9478('0x5e')](_0x3160ae[_0x9478('0xf')][_0x1c33d7[_0x9478('0x5f')]][_0x9478('0x60')],_0x1c33d7);if(_0x5493c8[_0x9478('0x61')]){_0x5762ed(ut[_0x9478('0x38')](_0x9478('0x62')));}else{_0x475ad8(ut['message'](_0x5493c8[_0x9478('0x38')]));}});};function originate(_0x3f27ad,_0x2896e1,_0x79fba0){return new BPromise(function(_0x193875,_0x2a208a){if(_0x79fba0){var _0x12fdd9=util['format'](_0x9478('0x63'),path['parse'](_0x3f27ad['path'])[_0x9478('0x28')],_0x3f27ad[_0x9478('0x5')]);gs[_0x9478('0x64')](_0x12fdd9)[_0x9478('0x3d')](function(){_0x3f27ad[_0x9478('0x5')]=util['format'](_0x9478('0x65'),path[_0x9478('0x3a')](_0x3f27ad[_0x9478('0x5')])['dir'],path[_0x9478('0x3a')](_0x3f27ad[_0x9478('0x5')])[_0x9478('0x28')]);_0x2896e1[_0x9478('0x66')]=_0x3f27ad[_0x9478('0x5')];ut['logger'](_0x9478('0x67'),'');ami[_0x9478('0x68')](ut[_0x9478('0x69')](_0x3f27ad,_0x2896e1))[_0x9478('0x3d')](function(_0x1795e2){_0x193875(_0x1795e2);})[_0x9478('0x3f')](function(_0x40d400){_0x2a208a(_0x40d400);});})['catch'](function(_0x3d45b4){_0x2a208a(_0x3d45b4);});}else{ami[_0x9478('0x68')](ut[_0x9478('0x69')](_0x3f27ad,_0x2896e1))[_0x9478('0x3d')](function(_0x1458be){_0x193875(_0x1458be);})['catch'](function(_0x4f0df5){_0x2a208a(_0x4f0df5);});}});}Fax[_0x9478('0x21')][_0x9478('0x59')]=function(_0x19b200,_0xcbc1aa){var _0x2207ba=this;return new BPromise(function(_0x1a8db4,_0x17e1fc){var _0x45790e=uuid['v4']();var _0x3a7cfa=ut[_0x9478('0x6a')](_0x19b200,_0xcbc1aa);_0x2207ba['actions'][_0x45790e]=new Action(_0x45790e,_0xcbc1aa,_0x19b200);var _0x5976c2=_0x2207ba[_0x9478('0x11')][_0x45790e];if(path[_0x9478('0x3a')](_0x19b200[_0x9478('0x5')])['ext']===_0x9478('0x3b')){originate(_0x5976c2,_0x3a7cfa,!![])[_0x9478('0x3d')](function(_0x248889){_0x1a8db4(_0x248889);})[_0x9478('0x3f')](function(_0xa18bd6){_0x17e1fc(_0xa18bd6);});}else{originate(_0x5976c2,_0x3a7cfa,![])['then'](function(_0x301b4d){_0x1a8db4(_0x301b4d);})[_0x9478('0x3f')](function(_0x2537ea){_0x17e1fc(_0x2537ea);});}});};Fax[_0x9478('0x21')][_0x9478('0x6b')]=function(_0x35cf73){return!_[_0x9478('0x6c')](_0x35cf73)&&!_['isNil'](_0x35cf73['name'])&&!_['isNil'](_0x35cf73[_0x9478('0x6d')])&&_0x35cf73[_0x9478('0x6d')]&&!_[_0x9478('0x6c')](this[_0x9478('0x10')][util[_0x9478('0x6e')](_0x9478('0x6f'),_0x35cf73[_0x9478('0x28')])])&&!_[_0x9478('0x6c')](this[_0x9478('0x10')][util[_0x9478('0x6e')](_0x9478('0x6f'),_0x35cf73['name'])]['status'])&&(this['trunks'][util[_0x9478('0x6e')]('SIP/%s',_0x35cf73[_0x9478('0x28')])][_0x9478('0x30')]===_0x9478('0x70')||this[_0x9478('0x10')][util['format'](_0x9478('0x6f'),_0x35cf73['name'])][_0x9478('0x30')]===_0x9478('0x71'));};Fax[_0x9478('0x21')]['checkTrunk']=function(_0x1d4444,_0x23c244){if(!this[_0x9478('0x6b')](_0x1d4444)){ut[_0x9478('0x47')](_0x9478('0x72'),_[_0x9478('0x6c')](_0x1d4444)?'':_0x1d4444[_0x9478('0x28')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x9478('0x73')};}if(_['isNil'](_0x23c244[_0x9478('0x3e')])){ut['logger'](_0x9478('0x74'),JSON['stringify'](_0x23c244));return{'isValid':![],'message':_0x9478('0x75')};}if(_[_0x9478('0x6c')](_0x23c244[_0x9478('0x5')])){ut['logger'](_0x9478('0x76'),JSON['stringify'](_0x23c244));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x9478('0x77')]=Fax;
\ No newline at end of file
+var _0x9836=['format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','catch','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','status','unmonitored','checkTrunk','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Is\x20Valid','util','lodash','bluebird','uuid','moment','path','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','newexten','syncNewExten','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','prototype','context','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','syncFaxStatus','operation','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','notify','.pdf','stringify','error','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','update','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Updated]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatus','SUCCESS','updateStatus','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','FaxAccountId','isValid','Trunk\x20Reachable'];(function(_0xcf4569,_0x1ce755){var _0x7fef=function(_0x374ab8){while(--_0x374ab8){_0xcf4569['push'](_0xcf4569['shift']());}};_0x7fef(++_0x1ce755);}(_0x9836,0x1f0));var _0x6983=function(_0x5c9266,_0x158a9f){_0x5c9266=_0x5c9266-0x0;var _0x3e27ac=_0x9836[_0x5c9266];return _0x3e27ac;};'use strict';var util=require(_0x6983('0x0'));var _=require(_0x6983('0x1'));var BPromise=require(_0x6983('0x2'));var uuid=require(_0x6983('0x3'));var moment=require(_0x6983('0x4'));var path=require(_0x6983('0x5'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x6983('0x6'));var logger=require(_0x6983('0x7'))(_0x6983('0x8'));var ami=require(_0x6983('0x9'));var rpcDb=require('./rpcDb');var Channel=require(_0x6983('0xa'));var ut=require(_0x6983('0xb'));var Action=require('./action');var faxAccount=require(_0x6983('0xc'));var attachment=require(_0x6983('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0xded56c){this['channels']={};this['faxAccounts']=_0xded56c[_0x6983('0xe')];this['trunks']=_0xded56c[_0x6983('0xf')];this[_0x6983('0x10')]={};ami['on'](_0x6983('0x11'),this[_0x6983('0x12')][_0x6983('0x13')](this));ami['on'](_0x6983('0x14'),this[_0x6983('0x15')][_0x6983('0x13')](this));ami['on'](_0x6983('0x16'),this['syncNewState'][_0x6983('0x13')](this));ami['on'](_0x6983('0x17'),this[_0x6983('0x18')][_0x6983('0x13')](this));ami['on']('faxstatus',this['syncFaxStatus'][_0x6983('0x13')](this));ami['on']('receivefax',this[_0x6983('0x19')][_0x6983('0x13')](this));ami['on'](_0x6983('0x1a'),this[_0x6983('0x1b')]['bind'](this));ami['on']('originateresponse',this[_0x6983('0x1c')]['bind'](this));}Fax[_0x6983('0x1d')][_0x6983('0x12')]=function(_0x302fb6){if(_0x302fb6[_0x6983('0x1e')]==='from-voip-provider'){for(var _0x3c13f9 in this[_0x6983('0xe')]){if(this['faxAccounts'][_0x6983('0x1f')](_0x3c13f9)){if(_0x302fb6[_0x6983('0x20')]===this[_0x6983('0xe')][_0x3c13f9][_0x6983('0x21')]){this[_0x6983('0x22')][_0x302fb6[_0x6983('0x23')]]={};this[_0x6983('0x22')][_0x302fb6[_0x6983('0x23')]][_0x6983('0x24')]=_0x302fb6[_0x6983('0x24')];this['channels'][_0x302fb6[_0x6983('0x23')]]['id']=this[_0x6983('0xe')][_0x3c13f9]['id'];this[_0x6983('0x22')][_0x302fb6[_0x6983('0x23')]][_0x6983('0x25')]=this['faxAccounts'][_0x3c13f9][_0x6983('0x25')];logger[_0x6983('0x26')](_0x302fb6[_0x6983('0x23')],_0x6983('0x27'));}}}}if(this[_0x6983('0x10')][_0x302fb6[_0x6983('0x23')]]){this[_0x6983('0x22')][_0x302fb6[_0x6983('0x23')]]={};this['channels'][_0x302fb6['uniqueid']][_0x6983('0x24')]=_0x302fb6[_0x6983('0x24')];logger[_0x6983('0x26')](_0x302fb6[_0x6983('0x23')],_0x6983('0x27'));}};Fax[_0x6983('0x1d')][_0x6983('0x15')]=function(_0x5d7652){if(this[_0x6983('0x22')][_0x5d7652[_0x6983('0x23')]]){for(var _0x5a63a7 in _0x5d7652['variable']){if(_0x5d7652[_0x6983('0x28')][_0x6983('0x1f')](_0x5a63a7)){this[_0x6983('0x22')][_0x5d7652[_0x6983('0x23')]][_0x5a63a7]=_0x5d7652[_0x6983('0x29')];}}}};Fax[_0x6983('0x1d')][_0x6983('0x2a')]=function(_0x130dd3){if(this[_0x6983('0x22')][_0x130dd3[_0x6983('0x23')]]){this[_0x6983('0x22')][_0x130dd3['uniqueid']][_0x6983('0x2b')]=_0x130dd3[_0x6983('0x2b')];this[_0x6983('0x22')][_0x130dd3['uniqueid']]['channelstatedesc']=_0x130dd3[_0x6983('0x2c')];}};Fax[_0x6983('0x1d')][_0x6983('0x18')]=function(_0x3e607a){if(this[_0x6983('0x22')][_0x3e607a[_0x6983('0x23')]]){for(var _0x152561 in _0x3e607a[_0x6983('0x28')]){if(_0x3e607a['variable'][_0x6983('0x1f')](_0x152561)){this[_0x6983('0x22')][_0x3e607a[_0x6983('0x23')]][_0x152561]=_0x3e607a['value'];}}}};Fax[_0x6983('0x1d')][_0x6983('0x2d')]=function(_0xa7007a){if(this[_0x6983('0x22')][_0xa7007a[_0x6983('0x23')]]){this[_0x6983('0x22')][_0xa7007a[_0x6983('0x23')]]['operation']=_0xa7007a[_0x6983('0x2e')];this[_0x6983('0x22')][_0xa7007a[_0x6983('0x23')]]['status']=_0xa7007a['status'];this['channels'][_0xa7007a[_0x6983('0x23')]][_0x6983('0x21')]=_0xa7007a[_0x6983('0x21')];this[_0x6983('0x22')][_0xa7007a[_0x6983('0x23')]][_0x6983('0x2f')]=_0xa7007a[_0x6983('0x2f')];logger['info'](_0xa7007a[_0x6983('0x23')],_0x6983('0x30'));}};Fax[_0x6983('0x1d')][_0x6983('0x19')]=function(_0x4da309){var _0xfce435=this;if(this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]]){var _0xf2f5ed=this[_0x6983('0x22')][_0x4da309['uniqueid']]['id'];this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]]['remotestationid']=_0x4da309[_0x6983('0x31')];this['channels'][_0x4da309['uniqueid']][_0x6983('0x32')]=_0x4da309[_0x6983('0x32')];this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]][_0x6983('0x21')]=_0x4da309[_0x6983('0x21')];this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]][_0x6983('0x33')]=_0x4da309[_0x6983('0x33')];this[_0x6983('0x22')][_0x4da309['uniqueid']][_0x6983('0x34')]=_0x4da309[_0x6983('0x34')];this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]][_0x6983('0x2f')]=_0x4da309[_0x6983('0x2f')];this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]][_0x6983('0x35')]=_0x4da309[_0x6983('0x35')];if(this[_0x6983('0x22')][_0x4da309[_0x6983('0x23')]][_0x6983('0x32')]>0x0){tiff2pdf(_0x4da309[_0x6983('0x2f')],_0x6983('0x36'),function(_0x206f44){logger[_0x6983('0x26')](_0x4da309[_0x6983('0x23')],_0x6983('0x37'),_0x206f44[_0x6983('0x38')]);attachment[_0x6983('0x39')]({'name':path[_0x6983('0x3a')](_0x4da309[_0x6983('0x2f')])[_0x6983('0x25')],'basename':path[_0x6983('0x3a')](_0x4da309['filename'])[_0x6983('0x25')]+'.pdf','type':_0x6983('0x3b')})['then'](function(_0x32149c){faxAccount[_0x6983('0x3c')](_0xf2f5ed,{'from':_0x4da309['calleridnum'],'mapKey':_0x6983('0x8'),'body':path[_0x6983('0x3a')](_0x4da309[_0x6983('0x2f')])[_0x6983('0x25')]+_0x6983('0x3d'),'AttachmentId':_0x32149c['id']})['catch'](function(_0x3886bf){logger['error'](_0x4da309['uniqueid'],'\x20notify\x20',JSON[_0x6983('0x3e')](_0x3886bf));});})['catch'](function(_0x4740c8){logger[_0x6983('0x3f')](_0x4da309[_0x6983('0x23')],_0x6983('0x40'),JSON[_0x6983('0x3e')](_0x4740c8));});});}logger[_0x6983('0x26')](_0x4da309['uniqueid'],_0x6983('0x40'));}};Fax[_0x6983('0x1d')][_0x6983('0x1c')]=function(_0x4dcd25){if(this['actions'][_0x4dcd25['uniqueid']]){_[_0x6983('0x41')](this[_0x6983('0x22')][_0x4dcd25[_0x6983('0x23')]],_[_0x6983('0x42')](_0x4dcd25,[_0x6983('0x43'),_0x6983('0x44')]));}};function updateStatus(_0x2f3f6c){if(_0x2f3f6c[_0x6983('0x45')]){faxMessage[_0x6983('0x46')](_0x2f3f6c[_0x6983('0x45')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x6983('0x47')](function(_0x2dd1de){ut[_0x6983('0x48')](_0x6983('0x49'),_0x2dd1de);})['catch'](function(_0xf34379){ut[_0x6983('0x48')](_0x6983('0x4a'),_0xf34379);});}else{ut[_0x6983('0x48')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0x6983('0x1d')]['updateStatus']=function(_0x506df0,_0x1f08dc,_0x26fcb5){var _0x4d428b=this;var _0x1a4493={};if(_0x1f08dc){_0x1a4493={'read':_0x1f08dc};}else{_0x1a4493={'failMessage':_0x26fcb5};}if(this[_0x6983('0x10')][_0x506df0][_0x6983('0x45')]){faxMessage['update'](this['actions'][_0x506df0][_0x6983('0x45')],_0x1a4493)[_0x6983('0x47')](function(_0xee26da){ut[_0x6983('0x48')](_0x6983('0x4b'),_0xee26da);})['catch'](function(_0x22fbd2){ut[_0x6983('0x48')]('[Fax][Message][NoUpdate1]',_0x22fbd2);})[_0x6983('0x4c')](function(){delete _0x4d428b['channels'][_0x506df0];delete _0x4d428b[_0x6983('0x10')][_0x506df0];});}else{ut['logger']('[Fax][Message][NoUpdate2]');delete this[_0x6983('0x22')][_0x506df0];delete this['actions'][_0x506df0];}};Fax[_0x6983('0x1d')][_0x6983('0x1b')]=function(_0x399310){var _0x4307a0=this;if(this[_0x6983('0x22')][_0x399310[_0x6983('0x23')]]){if(this[_0x6983('0x10')][_0x399310[_0x6983('0x23')]]){this[_0x6983('0x22')][_0x399310[_0x6983('0x23')]]['id']=this['actions'][_0x399310[_0x6983('0x23')]]['id'];this['channels'][_0x399310[_0x6983('0x23')]][_0x6983('0x25')]=this[_0x6983('0x10')][_0x399310['uniqueid']][_0x6983('0x25')];}logger[_0x6983('0x26')](_0x399310[_0x6983('0x23')],this[_0x6983('0x10')][_0x399310[_0x6983('0x23')]]?_0x6983('0x4d'):_0x6983('0x4e'),JSON[_0x6983('0x3e')](this[_0x6983('0x22')][_0x399310[_0x6983('0x23')]]));if(this[_0x6983('0x10')][_0x399310[_0x6983('0x23')]]){if(this[_0x6983('0x22')][_0x399310[_0x6983('0x23')]]['faxpages']>0x0&&this[_0x6983('0x22')][_0x399310['uniqueid']][_0x6983('0x4f')]===_0x6983('0x50')){this[_0x6983('0x51')](_0x399310[_0x6983('0x23')],!![]);}else{this[_0x6983('0x51')](_0x399310[_0x6983('0x23')],![],this['channels'][_0x399310[_0x6983('0x23')]][_0x6983('0x52')]?_0x6983('0x53')+this[_0x6983('0x22')][_0x399310['uniqueid']][_0x6983('0x52')]:_0x6983('0x54'));}}}};Fax[_0x6983('0x1d')][_0x6983('0x55')]=function(_0x4f4cf7){var _0x172acb=this;return new BPromise(function(_0x2a1198,_0x2fb4d7){_0x172acb[_0x6983('0x56')](_0x4f4cf7,_0x172acb[_0x6983('0xe')][_0x4f4cf7['FaxAccountId']])[_0x6983('0x47')](function(_0x3989af){ut[_0x6983('0x48')]('[Fax][execOriginate][success]',_0x3989af);_0x2a1198(ut[_0x6983('0x38')](_0x6983('0x57')));})['catch'](function(_0x6ee29c){ut[_0x6983('0x48')](_0x6983('0x58'),_0x6ee29c);updateStatus(_0x4f4cf7);_0x2fb4d7(ut[_0x6983('0x38')](_0x6983('0x59')));});});};Fax[_0x6983('0x1d')][_0x6983('0x5a')]=function(_0x1a8fe3){var _0x3f4fbe=this;return new BPromise(function(_0x30e9e8,_0x436c22){var _0x39fee9=_0x3f4fbe['checkTrunk'](_0x3f4fbe['faxAccounts'][_0x1a8fe3[_0x6983('0x5b')]]['Trunk'],_0x1a8fe3);if(_0x39fee9[_0x6983('0x5c')]){_0x30e9e8(ut[_0x6983('0x38')](_0x6983('0x5d')));}else{_0x436c22(ut['message'](_0x39fee9[_0x6983('0x38')]));}});};function originate(_0x338e51,_0x1cf0e4,_0x1fdbb0){return new BPromise(function(_0x21e2d1,_0x3e3e62){if(_0x1fdbb0){var _0xa8e05=util[_0x6983('0x5e')](_0x6983('0x5f'),path[_0x6983('0x3a')](_0x338e51[_0x6983('0x5')])[_0x6983('0x25')],_0x338e51[_0x6983('0x5')]);gs[_0x6983('0x60')](_0xa8e05)[_0x6983('0x47')](function(){_0x338e51[_0x6983('0x5')]=util[_0x6983('0x5e')](_0x6983('0x61'),path['parse'](_0x338e51[_0x6983('0x5')])[_0x6983('0x62')],path[_0x6983('0x3a')](_0x338e51[_0x6983('0x5')])['name']);_0x1cf0e4[_0x6983('0x63')]=_0x338e51[_0x6983('0x5')];ut['logger'](_0x6983('0x64'),'');ami[_0x6983('0x65')](ut['variablesAction'](_0x338e51,_0x1cf0e4))[_0x6983('0x47')](function(_0x15148d){_0x21e2d1(_0x15148d);})[_0x6983('0x66')](function(_0x4a7938){_0x3e3e62(_0x4a7938);});})[_0x6983('0x66')](function(_0x4fa119){_0x3e3e62(_0x4fa119);});}else{ami['Action'](ut['variablesAction'](_0x338e51,_0x1cf0e4))[_0x6983('0x47')](function(_0x40800c){_0x21e2d1(_0x40800c);})[_0x6983('0x66')](function(_0x3f4b5a){_0x3e3e62(_0x3f4b5a);});}});}Fax[_0x6983('0x1d')][_0x6983('0x56')]=function(_0x458f29,_0x37fb39){var _0x4baebd=this;return new BPromise(function(_0x9e7d19,_0xd821f0){var _0x5e0c5a=uuid['v4']();var _0x305571=ut[_0x6983('0x67')](_0x458f29,_0x37fb39);_0x4baebd['actions'][_0x5e0c5a]=new Action(_0x5e0c5a,_0x37fb39,_0x458f29);var _0xc07901=_0x4baebd[_0x6983('0x10')][_0x5e0c5a];if(path[_0x6983('0x3a')](_0x458f29[_0x6983('0x5')])[_0x6983('0x68')]==='.pdf'){originate(_0xc07901,_0x305571,!![])[_0x6983('0x47')](function(_0x484814){_0x9e7d19(_0x484814);})[_0x6983('0x66')](function(_0x5da831){_0xd821f0(_0x5da831);});}else{originate(_0xc07901,_0x305571,![])[_0x6983('0x47')](function(_0x50c83f){_0x9e7d19(_0x50c83f);})[_0x6983('0x66')](function(_0x30edd1){_0xd821f0(_0x30edd1);});}});};Fax['prototype'][_0x6983('0x69')]=function(_0x4a9bbc){return!_[_0x6983('0x6a')](_0x4a9bbc)&&!_['isNil'](_0x4a9bbc['name'])&&!_['isNil'](_0x4a9bbc['active'])&&_0x4a9bbc[_0x6983('0x6b')]&&!_[_0x6983('0x6a')](this['trunks'][util['format'](_0x6983('0x6c'),_0x4a9bbc[_0x6983('0x25')])])&&!_[_0x6983('0x6a')](this[_0x6983('0xf')][util[_0x6983('0x5e')]('SIP/%s',_0x4a9bbc['name'])][_0x6983('0x6d')])&&(this[_0x6983('0xf')][util[_0x6983('0x5e')](_0x6983('0x6c'),_0x4a9bbc[_0x6983('0x25')])]['status']==='reachable'||this['trunks'][util[_0x6983('0x5e')](_0x6983('0x6c'),_0x4a9bbc[_0x6983('0x25')])][_0x6983('0x6d')]===_0x6983('0x6e'));};Fax[_0x6983('0x1d')][_0x6983('0x6f')]=function(_0x3e1e59,_0x35c12d){if(!this[_0x6983('0x69')](_0x3e1e59)){ut[_0x6983('0x48')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x6983('0x6a')](_0x3e1e59)?'':_0x3e1e59['name']+_0x6983('0x70'));return{'isValid':![],'message':_0x6983('0x71')};}if(_[_0x6983('0x6a')](_0x35c12d['fax'])){ut[_0x6983('0x48')](_0x6983('0x72'),JSON[_0x6983('0x3e')](_0x35c12d));return{'isValid':![],'message':_0x6983('0x73')};}if(_[_0x6983('0x6a')](_0x35c12d[_0x6983('0x5')])){ut['logger'](_0x6983('0x74'),JSON[_0x6983('0x3e')](_0x35c12d));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x6983('0x75')};};module['exports']=Fax;
\ No newline at end of file
index 73f70ac..e7851d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb1c=['util','../../../config/logger','preview','lodash','../rpc/faxAccount','error','then','notify','catch'];(function(_0x4c794a,_0x20b8aa){var _0x3006f6=function(_0x4a0b91){while(--_0x4a0b91){_0x4c794a['push'](_0x4c794a['shift']());}};_0x3006f6(++_0x20b8aa);}(_0xeb1c,0x117));var _0xceb1=function(_0x30bc01,_0x40c027){_0x30bc01=_0x30bc01-0x0;var _0x519979=_0xeb1c[_0x30bc01];return _0x519979;};'use strict';var util=require(_0xceb1('0x0'));var BPromise=require('bluebird');var logger=require(_0xceb1('0x1'))(_0xceb1('0x2'));var _=require(_0xceb1('0x3'));var faxAccount=require(_0xceb1('0x4'));function loggerCatch(_0x10271e){return function(_0x5a95b5){logger[_0xceb1('0x5')](_0x10271e,util['inspect'](_0x5a95b5,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x4191ee,_0x2ee1b4){return BPromise['resolve']()[_0xceb1('0x6')](faxAccount[_0xceb1('0x7')](_0x4191ee,_0x2ee1b4))[_0xceb1('0x8')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0xd6bf=['[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','then','catch'];(function(_0x404991,_0x5a9865){var _0x429b45=function(_0x3ad6e5){while(--_0x3ad6e5){_0x404991['push'](_0x404991['shift']());}};_0x429b45(++_0x5a9865);}(_0xd6bf,0x1a1));var _0xfd6b=function(_0x3294ec,_0x1ac00c){_0x3294ec=_0x3294ec-0x0;var _0x5405e4=_0xd6bf[_0x3294ec];return _0x5405e4;};'use strict';var util=require(_0xfd6b('0x0'));var BPromise=require(_0xfd6b('0x1'));var logger=require(_0xfd6b('0x2'))(_0xfd6b('0x3'));var _=require(_0xfd6b('0x4'));var faxAccount=require(_0xfd6b('0x5'));function loggerCatch(_0x3c4c2e){return function(_0x4883f9){logger[_0xfd6b('0x6')](_0x3c4c2e,util[_0xfd6b('0x7')](_0x4883f9,{'showHidden':![],'depth':null}));};}exports[_0xfd6b('0x8')]=function(_0x21d388,_0x307c80){return BPromise[_0xfd6b('0x9')]()[_0xfd6b('0xa')](faxAccount[_0xfd6b('0x8')](_0x21d388,_0x307c80))[_0xfd6b('0xb')](loggerCatch(_0xfd6b('0xc')));};
\ No newline at end of file
index e3bcd9e..05a157d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fa1=['Exec\x20gs','inspect','util','fax','bluebird','child_process','exec','execute','info'];(function(_0x2e2540,_0x33fdfb){var _0x5d915f=function(_0x235b01){while(--_0x235b01){_0x2e2540['push'](_0x2e2540['shift']());}};_0x5d915f(++_0x33fdfb);}(_0x5fa1,0x1c4));var _0x15fa=function(_0x2c1fa3,_0x6ec8a8){_0x2c1fa3=_0x2c1fa3-0x0;var _0x3e819f=_0x5fa1[_0x2c1fa3];return _0x3e819f;};'use strict';var util=require(_0x15fa('0x0'));var logger=require('../../../../config/logger')(_0x15fa('0x1'));var BPromise=require(_0x15fa('0x2'));var exec=require(_0x15fa('0x3'))[_0x15fa('0x4')];exports[_0x15fa('0x5')]=function(_0x2a626a){return new BPromise(function(_0x39b002,_0xab4d5b){exec(_0x2a626a,function(_0x22eb5d,_0x4d4279,_0x4fe085){logger[_0x15fa('0x6')](_0x15fa('0x7'),_0x4d4279);if(_0x22eb5d){logger[_0x15fa('0x6')](_0x15fa('0x7'),'\x20Error\x20:',util[_0x15fa('0x8')](_0x22eb5d,{'showHidden':![],'depth':null}),_0x4d4279,_0x4fe085);_0xab4d5b(_0x22eb5d);}_0x39b002(_0x4d4279);});});};
\ No newline at end of file
+var _0xa2a0=['../../../../config/logger','fax','child_process','exec','execute','info','Exec\x20gs','inspect','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa2a0,0x155));var _0x0a2a=function(_0x215ad5,_0x495b82){_0x215ad5=_0x215ad5-0x0;var _0x3377d4=_0xa2a0[_0x215ad5];return _0x3377d4;};'use strict';var util=require(_0x0a2a('0x0'));var logger=require(_0x0a2a('0x1'))(_0x0a2a('0x2'));var BPromise=require('bluebird');var exec=require(_0x0a2a('0x3'))[_0x0a2a('0x4')];exports[_0x0a2a('0x5')]=function(_0x1c1a75){return new BPromise(function(_0x4322ec,_0x8bcdfd){exec(_0x1c1a75,function(_0x38f21c,_0xa9a090,_0x760f53){logger[_0x0a2a('0x6')](_0x0a2a('0x7'),_0xa9a090);if(_0x38f21c){logger[_0x0a2a('0x6')]('Exec\x20gs','\x20Error\x20:',util[_0x0a2a('0x8')](_0x38f21c,{'showHidden':![],'depth':null}),_0xa9a090,_0x760f53);_0x8bcdfd(_0x38f21c);}_0x4322ec(_0xa9a090);});});};
\ No newline at end of file
index 9609f59..53846ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f2=['minrate','format','modem','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid','originate','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','headerinfo'];(function(_0x3fa505,_0x4d5692){var _0x322bc4=function(_0x3a571d){while(--_0x3a571d){_0x3fa505['push'](_0x3fa505['shift']());}};_0x322bc4(++_0x4d5692);}(_0xe0f2,0x14f));var _0x2e0f=function(_0x35fe35,_0x14c0a5){_0x35fe35=_0x35fe35-0x0;var _0x4683a2=_0xe0f2[_0x35fe35];return _0x4683a2;};'use strict';var util=require(_0x2e0f('0x0'));var _=require('lodash');var moment=require(_0x2e0f('0x1'));var logger=require(_0x2e0f('0x2'))(_0x2e0f('0x3'));exports[_0x2e0f('0x4')]=function(_0x212518){return{'message':_0x212518};};exports[_0x2e0f('0x5')]=function(_0x5bfa23,_0x10d71f){logger[_0x2e0f('0x6')](_0x5bfa23,util[_0x2e0f('0x7')](_0x10d71f,{'showHidden':![],'depth':null}));};exports[_0x2e0f('0x8')]=function(_0x2b6334,_0x2173f4){var _0x4f9377={'XMF-ECM':_0x2173f4['ecm'],'XMF-HEADERINFO':_0x2173f4[_0x2e0f('0x9')],'XMF-MINRATE':_0x2173f4[_0x2e0f('0xa')],'XMF-MAXRATE':_0x2173f4['maxrate'],'XMF-MODEM':util[_0x2e0f('0xb')]('\x22%s\x22',_0x2173f4[_0x2e0f('0xc')]),'XMF-GATEWAY':_0x2173f4['gateway'],'XMF-FAXDETECT':_0x2173f4[_0x2e0f('0xd')],'XMF-T38TIMEOUT':_0x2173f4[_0x2e0f('0xe')],'XMF-LOCALSTATIONID':_0x2173f4[_0x2e0f('0xf')],'XMF-PATH':_0x2b6334[_0x2e0f('0x10')]};return _0x4f9377;};exports[_0x2e0f('0x11')]=function(_0x4968c3,_0x34d1e){return{'actionid':_0x4968c3[_0x2e0f('0x12')],'action':_0x2e0f('0x13'),'channel':_0x4968c3['channel'],'Exten':_0x2e0f('0x14'),'Context':_0x2e0f('0x15'),'Priority':'1','callerid':util[_0x2e0f('0xb')](_0x2e0f('0x16'),_0x4968c3['headerinfo']?_0x4968c3[_0x2e0f('0x9')]:'',_0x4968c3['localstationid']),'variable':_0x34d1e,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x4968c3['uniqueid']};};
\ No newline at end of file
+var _0xcf49=['gateway','faxdetect','t38timeout','variablesAction','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','uniqueid','util','lodash','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','modem'];(function(_0x55a787,_0x1466a3){var _0x5d90a0=function(_0x5405fb){while(--_0x5405fb){_0x55a787['push'](_0x55a787['shift']());}};_0x5d90a0(++_0x1466a3);}(_0xcf49,0x1cc));var _0x9cf4=function(_0x2a99ea,_0x1bfb13){_0x2a99ea=_0x2a99ea-0x0;var _0x5887ae=_0xcf49[_0x2a99ea];return _0x5887ae;};'use strict';var util=require(_0x9cf4('0x0'));var _=require(_0x9cf4('0x1'));var moment=require('moment');var logger=require('../../../../config/logger')(_0x9cf4('0x2'));exports[_0x9cf4('0x3')]=function(_0x432b15){return{'message':_0x432b15};};exports[_0x9cf4('0x4')]=function(_0x3da34e,_0x474761){logger[_0x9cf4('0x5')](_0x3da34e,util[_0x9cf4('0x6')](_0x474761,{'showHidden':![],'depth':null}));};exports[_0x9cf4('0x7')]=function(_0x1b98e7,_0x44c0e5){var _0x18f289={'XMF-ECM':_0x44c0e5[_0x9cf4('0x8')],'XMF-HEADERINFO':_0x44c0e5[_0x9cf4('0x9')],'XMF-MINRATE':_0x44c0e5[_0x9cf4('0xa')],'XMF-MAXRATE':_0x44c0e5[_0x9cf4('0xb')],'XMF-MODEM':util[_0x9cf4('0xc')](_0x9cf4('0xd'),_0x44c0e5[_0x9cf4('0xe')]),'XMF-GATEWAY':_0x44c0e5[_0x9cf4('0xf')],'XMF-FAXDETECT':_0x44c0e5[_0x9cf4('0x10')],'XMF-T38TIMEOUT':_0x44c0e5[_0x9cf4('0x11')],'XMF-LOCALSTATIONID':_0x44c0e5['localstationid'],'XMF-PATH':_0x1b98e7['path']};return _0x18f289;};exports[_0x9cf4('0x12')]=function(_0x49d321,_0x4517e3){return{'actionid':_0x49d321['uniqueid'],'action':_0x9cf4('0x13'),'channel':_0x49d321[_0x9cf4('0x14')],'Exten':_0x9cf4('0x15'),'Context':_0x9cf4('0x16'),'Priority':'1','callerid':util[_0x9cf4('0xc')](_0x9cf4('0x17'),_0x49d321[_0x9cf4('0x9')]?_0x49d321[_0x9cf4('0x9')]:'',_0x49d321['localstationid']),'variable':_0x4517e3,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x49d321[_0x9cf4('0x18')]};};
\ No newline at end of file
index 91d5ee7..ac912bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5634=['initVoiceQueues','initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','inspect','listen','error','[index.js][main]','util','moment','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','get','hour','resolve','then','initAgents','getTelephones','initTelephones','initTrunks'];(function(_0x3d4aca,_0x392f97){var _0x4e34f5=function(_0x155453){while(--_0x155453){_0x3d4aca['push'](_0x3d4aca['shift']());}};_0x4e34f5(++_0x392f97);}(_0x5634,0x67));var _0x4563=function(_0x3a2d65,_0x30d4fb){_0x3a2d65=_0x3a2d65-0x0;var _0x1e8f43=_0x5634[_0x3a2d65];return _0x1e8f43;};'use strict';var util=require(_0x4563('0x0'));var moment=require(_0x4563('0x1'));var server=require('./server');var Realtime=require(_0x4563('0x2'));var Report=require(_0x4563('0x3'));var Acw=require(_0x4563('0x4'));var Trigger=require(_0x4563('0x5'));var Dialer=require(_0x4563('0x6'));var Preview=require(_0x4563('0x7'));var Fax=require(_0x4563('0x8'));var user=require(_0x4563('0x9'));var voiceQueue=require(_0x4563('0xa'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x4563('0xb'));var trunk=require(_0x4563('0xc'));var trigger=require(_0x4563('0xd'));var template=require(_0x4563('0xe'));var cmHopperHistory=require(_0x4563('0xf'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x4563('0x10'));var faxAccount=require(_0x4563('0x11'));var zendesk=require(_0x4563('0x12'));var salesforce=require(_0x4563('0x13'));var sugarcrm=require(_0x4563('0x14'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x4563('0x15'));var zoho=require(_0x4563('0x16'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x4563('0x17'));var servicenow=require(_0x4563('0x18'));var dynamics365=require(_0x4563('0x19'));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(_0x4563('0x1a'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x4563('0x1b')](_0x4563('0x1c'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x4563('0x1b')]('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x4563('0x1d')]()[_0x4563('0x1e')](user['getAgents']())[_0x4563('0x1e')](realtime[_0x4563('0x1f')]())['then'](user[_0x4563('0x20')]())['then'](realtime[_0x4563('0x21')]())[_0x4563('0x1e')](trunk['getTrunks']())['then'](realtime[_0x4563('0x22')]())[_0x4563('0x1e')](voiceQueue['getVoiceQueues']())[_0x4563('0x1e')](realtime[_0x4563('0x23')]())['then'](trigger['getTriggers']())['then'](realtime['initTriggers']())['then'](template['getTemplates']())[_0x4563('0x1e')](realtime[_0x4563('0x24')]())[_0x4563('0x1e')](zendesk[_0x4563('0x25')]())[_0x4563('0x1e')](realtime['initZendeskAccounts']())[_0x4563('0x1e')](salesforce[_0x4563('0x26')]())[_0x4563('0x1e')](realtime[_0x4563('0x27')]())[_0x4563('0x1e')](sugarcrm[_0x4563('0x28')]())[_0x4563('0x1e')](realtime[_0x4563('0x29')]())[_0x4563('0x1e')](freshdesk[_0x4563('0x2a')]())[_0x4563('0x1e')](realtime[_0x4563('0x2b')]())['then'](desk[_0x4563('0x2c')]())[_0x4563('0x1e')](realtime['initDeskAccounts']())['then'](zoho[_0x4563('0x2d')]())[_0x4563('0x1e')](realtime[_0x4563('0x2e')]())[_0x4563('0x1e')](vtiger['getVtigerAccounts']())[_0x4563('0x1e')](realtime[_0x4563('0x2f')]())[_0x4563('0x1e')](freshsales[_0x4563('0x30')]())[_0x4563('0x1e')](realtime['initFreshsalesAccounts']())['then'](servicenow['getServicenowAccounts']())[_0x4563('0x1e')](realtime[_0x4563('0x31')]())['then'](dynamics365[_0x4563('0x32')]())[_0x4563('0x1e')](realtime[_0x4563('0x33')]())[_0x4563('0x1e')](campaign[_0x4563('0x34')]())[_0x4563('0x1e')](realtime['initCampaigns']())[_0x4563('0x1e')](voiceExtension[_0x4563('0x35')]())[_0x4563('0x1e')](realtime[_0x4563('0x36')]())['then'](faxAccount[_0x4563('0x37')]())['then'](realtime[_0x4563('0x38')]())[_0x4563('0x1e')](function(){return realtime;});}function initParams(){return Promise[_0x4563('0x1d')]()[_0x4563('0x1e')](voiceQueueReport[_0x4563('0x39')]())[_0x4563('0x1e')](realtime[_0x4563('0x3a')]())['then'](cmHopperHistory[_0x4563('0x3b')]())[_0x4563('0x1e')](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory[_0x4563('0x3c')]())[_0x4563('0x1e')](realtime[_0x4563('0x3d')]())[_0x4563('0x1e')](voiceCallReport[_0x4563('0x3e')]())[_0x4563('0x1e')](realtime[_0x4563('0x3f')]())[_0x4563('0x40')](function(_0x3cb581){logger['error']('[index.js][initParams]',util[_0x4563('0x41')](_0x3cb581,{'showHidden':![],'depth':null}));});}function main(){return server[_0x4563('0x42')](realtime,preview,fax)['then'](function(){return initRealtime();})[_0x4563('0x1e')](function(){return initParams();})[_0x4563('0x1e')](function(){report['sync']();setInterval(initRealtime,0x1388);})['catch'](function(_0x3f82f8){logger[_0x4563('0x43')](_0x4563('0x44'),util[_0x4563('0x41')](_0x3f82f8,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x61cf=['getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','inspect','listen','sync','[index.js][main]','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','../../config/logger','ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts'];(function(_0x2c61f8,_0xb8a4dd){var _0x4badd1=function(_0x548e80){while(--_0x548e80){_0x2c61f8['push'](_0x2c61f8['shift']());}};_0x4badd1(++_0xb8a4dd);}(_0x61cf,0x67));var _0xf61c=function(_0x1583fa,_0x45f8db){_0x1583fa=_0x1583fa-0x0;var _0x1847e0=_0x61cf[_0x1583fa];return _0x1847e0;};'use strict';var util=require(_0xf61c('0x0'));var moment=require(_0xf61c('0x1'));var server=require(_0xf61c('0x2'));var Realtime=require(_0xf61c('0x3'));var Report=require(_0xf61c('0x4'));var Acw=require(_0xf61c('0x5'));var Trigger=require(_0xf61c('0x6'));var Dialer=require(_0xf61c('0x7'));var Preview=require(_0xf61c('0x8'));var Fax=require(_0xf61c('0x9'));var user=require(_0xf61c('0xa'));var voiceQueue=require(_0xf61c('0xb'));var voiceQueueReport=require(_0xf61c('0xc'));var voiceCallReport=require(_0xf61c('0xd'));var trunk=require(_0xf61c('0xe'));var trigger=require(_0xf61c('0xf'));var template=require(_0xf61c('0x10'));var cmHopperHistory=require(_0xf61c('0x11'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0xf61c('0x12'));var faxAccount=require(_0xf61c('0x13'));var zendesk=require(_0xf61c('0x14'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0xf61c('0x15'));var freshdesk=require(_0xf61c('0x16'));var desk=require(_0xf61c('0x17'));var zoho=require(_0xf61c('0x18'));var vtiger=require(_0xf61c('0x19'));var freshsales=require(_0xf61c('0x1a'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xf61c('0x1b'))(_0xf61c('0x1c'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xf61c('0x1d')](_0xf61c('0x1e'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xf61c('0x1d')](_0xf61c('0x1e'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0xf61c('0x1f')]()[_0xf61c('0x20')](user[_0xf61c('0x21')]())[_0xf61c('0x20')](realtime[_0xf61c('0x22')]())['then'](user[_0xf61c('0x23')]())[_0xf61c('0x20')](realtime[_0xf61c('0x24')]())[_0xf61c('0x20')](trunk[_0xf61c('0x25')]())[_0xf61c('0x20')](realtime[_0xf61c('0x26')]())[_0xf61c('0x20')](voiceQueue[_0xf61c('0x27')]())['then'](realtime[_0xf61c('0x28')]())[_0xf61c('0x20')](trigger[_0xf61c('0x29')]())[_0xf61c('0x20')](realtime[_0xf61c('0x2a')]())[_0xf61c('0x20')](template[_0xf61c('0x2b')]())[_0xf61c('0x20')](realtime[_0xf61c('0x2c')]())[_0xf61c('0x20')](zendesk[_0xf61c('0x2d')]())[_0xf61c('0x20')](realtime['initZendeskAccounts']())[_0xf61c('0x20')](salesforce[_0xf61c('0x2e')]())[_0xf61c('0x20')](realtime[_0xf61c('0x2f')]())[_0xf61c('0x20')](sugarcrm[_0xf61c('0x30')]())[_0xf61c('0x20')](realtime['initSugarcrmAccounts']())[_0xf61c('0x20')](freshdesk[_0xf61c('0x31')]())[_0xf61c('0x20')](realtime['initFreshdeskAccounts']())[_0xf61c('0x20')](desk[_0xf61c('0x32')]())[_0xf61c('0x20')](realtime[_0xf61c('0x33')]())[_0xf61c('0x20')](zoho['getZohoAccounts']())[_0xf61c('0x20')](realtime[_0xf61c('0x34')]())[_0xf61c('0x20')](vtiger[_0xf61c('0x35')]())['then'](realtime[_0xf61c('0x36')]())[_0xf61c('0x20')](freshsales[_0xf61c('0x37')]())[_0xf61c('0x20')](realtime['initFreshsalesAccounts']())['then'](servicenow[_0xf61c('0x38')]())[_0xf61c('0x20')](realtime[_0xf61c('0x39')]())['then'](dynamics365[_0xf61c('0x3a')]())['then'](realtime[_0xf61c('0x3b')]())[_0xf61c('0x20')](campaign['getCampaigns']())[_0xf61c('0x20')](realtime[_0xf61c('0x3c')]())[_0xf61c('0x20')](voiceExtension[_0xf61c('0x3d')]())[_0xf61c('0x20')](realtime[_0xf61c('0x3e')]())[_0xf61c('0x20')](faxAccount[_0xf61c('0x3f')]())[_0xf61c('0x20')](realtime[_0xf61c('0x40')]())[_0xf61c('0x20')](function(){return realtime;});}function initParams(){return Promise['resolve']()['then'](voiceQueueReport[_0xf61c('0x41')]())['then'](realtime[_0xf61c('0x42')]())[_0xf61c('0x20')](cmHopperHistory['getVoiceQueueHopperHistory']())['then'](realtime[_0xf61c('0x43')]())['then'](cmHopperHistory[_0xf61c('0x44')]())[_0xf61c('0x20')](realtime[_0xf61c('0x45')]())[_0xf61c('0x20')](voiceCallReport[_0xf61c('0x46')]())[_0xf61c('0x20')](realtime[_0xf61c('0x47')]())[_0xf61c('0x48')](function(_0x444702){logger[_0xf61c('0x49')]('[index.js][initParams]',util[_0xf61c('0x4a')](_0x444702,{'showHidden':![],'depth':null}));});}function main(){return server[_0xf61c('0x4b')](realtime,preview,fax)[_0xf61c('0x20')](function(){return initRealtime();})['then'](function(){return initParams();})['then'](function(){report[_0xf61c('0x4c')]();setInterval(initRealtime,0x1388);})[_0xf61c('0x48')](function(_0x286637){logger[_0xf61c('0x49')](_0xf61c('0x4d'),util[_0xf61c('0x4a')](_0x286637,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 5fd93c6..f873e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77dc=['toLowerCase','not_inuse','inuse','talking','statePause','toNumber','address','stringify','user:%s','emit','user:save','exports','lodash','util','moment','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','local','prototype'];(function(_0x92c56,_0x14dfe1){var _0x5e444b=function(_0x446470){while(--_0x446470){_0x92c56['push'](_0x92c56['shift']());}};_0x5e444b(++_0x14dfe1);}(_0x77dc,0x84));var _0xc77d=function(_0xceec3c,_0x27e98e){_0xceec3c=_0xceec3c-0x0;var _0x28fda9=_0x77dc[_0xceec3c];return _0x28fda9;};'use strict';var _=require(_0xc77d('0x0'));var util=require(_0xc77d('0x1'));var moment=require(_0xc77d('0x2'));var md5=require(_0xc77d('0x3'));var Redis=require('ioredis');var config=require(_0xc77d('0x4'));config[_0xc77d('0x5')]=_[_0xc77d('0x6')](config[_0xc77d('0x5')],{'host':_0xc77d('0x7'),'port':0x18eb});var io=require(_0xc77d('0x8'))(new Redis(config[_0xc77d('0x5')]));function Agent(_0x4070b7){this['id']=_0x4070b7['id']||0x0;this[_0xc77d('0x9')]=_0x4070b7['name']||'';this[_0xc77d('0xa')]=_0x4070b7[_0xc77d('0xa')]||'';this[_0xc77d('0xb')]=_0x4070b7[_0xc77d('0xb')]||'';this['fullname']=_0x4070b7[_0xc77d('0xc')]||'';this[_0xc77d('0xd')]=_0xc77d('0xe');this[_0xc77d('0xf')]=0x0;this[_0xc77d('0x10')]=_0xc77d('0xe');this['address']='';this[_0xc77d('0x11')]='';this[_0xc77d('0x12')]='';this[_0xc77d('0x13')]='';this[_0xc77d('0x14')]=_0x4070b7[_0xc77d('0x14')]||![];this[_0xc77d('0x15')]=_0xc77d('0xe');this[_0xc77d('0x16')]=0x0;this[_0xc77d('0x17')]='';this[_0xc77d('0x18')]='';this[_0xc77d('0x19')]=![];this[_0xc77d('0x1a')]=![];this['md5']='';}Agent[_0xc77d('0x1b')]['updateStatusRealtime']=function(_0x4ddaca){var _0x476757;if(_0x4ddaca&&_0x4ddaca[_0xc77d('0xd')]){_0x476757=_0x4ddaca['state'][_0xc77d('0x1c')]();switch(_0x476757){case _0xc77d('0x1d'):_0x476757='idle';break;case _0xc77d('0x1e'):_0x476757=_0xc77d('0x1f');break;}}if(_0x476757&&this[_0xc77d('0x15')]!==_0x476757||_0x4ddaca[_0xc77d('0x20')]){this[_0xc77d('0x16')]=_[_0xc77d('0x21')](moment()['format']('x'));}if(_0x476757){this[_0xc77d('0x15')]=_0x476757;}var _0x4d3eb8={'id':this['id'],'name':this[_0xc77d('0x9')],'email':this[_0xc77d('0xa')],'accountcode':this[_0xc77d('0xb')],'fullname':this[_0xc77d('0xc')],'state':this[_0xc77d('0xd')],'stateTime':this[_0xc77d('0xf')],'status':this['status'],'address':this[_0xc77d('0x22')],'online':this[_0xc77d('0x14')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this['voiceStatusTime'],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0xc77d('0x13')],'onhold':this['onhold']};var _0x9f0073=md5(JSON[_0xc77d('0x23')](_0x4d3eb8));if(this[_0xc77d('0x3')]!==_0x9f0073){this[_0xc77d('0x3')]=_0x9f0073;io['to'](util['format'](_0xc77d('0x24'),_0x4d3eb8[_0xc77d('0x9')]))[_0xc77d('0x25')](_0xc77d('0x26'),_0x4d3eb8);io['emit']('user:presence',_0x4d3eb8);}};module[_0xc77d('0x27')]=Agent;
\ No newline at end of file
+var _0x707d=['fullname','state','stateTime','status','phone','mobile','interface','online','voiceStatus','unknown','voiceStatusQueue','onhold','prototype','toLowerCase','idle','inuse','statePause','voiceStatusTime','toNumber','format','voiceStatusCallerIdNumber','stringify','user:%s','emit','user:presence','lodash','util','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode'];(function(_0x11907c,_0x145aaa){var _0x13d7b7=function(_0x353726){while(--_0x353726){_0x11907c['push'](_0x11907c['shift']());}};_0x13d7b7(++_0x145aaa);}(_0x707d,0x18b));var _0xd707=function(_0x5eb8c9,_0x4482f6){_0x5eb8c9=_0x5eb8c9-0x0;var _0x1cab9e=_0x707d[_0x5eb8c9];return _0x1cab9e;};'use strict';var _=require(_0xd707('0x0'));var util=require(_0xd707('0x1'));var moment=require(_0xd707('0x2'));var md5=require(_0xd707('0x3'));var Redis=require(_0xd707('0x4'));var config=require(_0xd707('0x5'));config[_0xd707('0x6')]=_['defaults'](config[_0xd707('0x6')],{'host':_0xd707('0x7'),'port':0x18eb});var io=require(_0xd707('0x8'))(new Redis(config[_0xd707('0x6')]));function Agent(_0x4d817d){this['id']=_0x4d817d['id']||0x0;this[_0xd707('0x9')]=_0x4d817d[_0xd707('0x9')]||'';this['email']=_0x4d817d[_0xd707('0xa')]||'';this[_0xd707('0xb')]=_0x4d817d[_0xd707('0xb')]||'';this['fullname']=_0x4d817d[_0xd707('0xc')]||'';this[_0xd707('0xd')]='unknown';this[_0xd707('0xe')]=0x0;this[_0xd707('0xf')]='unknown';this['address']='';this[_0xd707('0x10')]='';this[_0xd707('0x11')]='';this[_0xd707('0x12')]='';this['online']=_0x4d817d[_0xd707('0x13')]||![];this[_0xd707('0x14')]=_0xd707('0x15');this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0xd707('0x16')]='';this[_0xd707('0x17')]=![];this['local']=![];this[_0xd707('0x3')]='';}Agent[_0xd707('0x18')]['updateStatusRealtime']=function(_0x1c7487){var _0x2be27e;if(_0x1c7487&&_0x1c7487['state']){_0x2be27e=_0x1c7487['state'][_0xd707('0x19')]();switch(_0x2be27e){case'not_inuse':_0x2be27e=_0xd707('0x1a');break;case _0xd707('0x1b'):_0x2be27e='talking';break;}}if(_0x2be27e&&this[_0xd707('0x14')]!==_0x2be27e||_0x1c7487[_0xd707('0x1c')]){this[_0xd707('0x1d')]=_[_0xd707('0x1e')](moment()[_0xd707('0x1f')]('x'));}if(_0x2be27e){this[_0xd707('0x14')]=_0x2be27e;}var _0x56c91b={'id':this['id'],'name':this['name'],'email':this[_0xd707('0xa')],'accountcode':this['accountcode'],'fullname':this[_0xd707('0xc')],'state':this[_0xd707('0xd')],'stateTime':this[_0xd707('0xe')],'status':this['status'],'address':this['address'],'online':this[_0xd707('0x13')],'voiceStatus':this[_0xd707('0x14')],'voiceStatusTime':this[_0xd707('0x1d')],'voiceStatusCallerIdNumber':this[_0xd707('0x20')],'voiceStatusQueue':this[_0xd707('0x16')],'interface':this[_0xd707('0x12')],'onhold':this[_0xd707('0x17')]};var _0x529583=md5(JSON[_0xd707('0x21')](_0x56c91b));if(this['md5']!==_0x529583){this[_0xd707('0x3')]=_0x529583;io['to'](util['format'](_0xd707('0x22'),_0x56c91b[_0xd707('0x9')]))[_0xd707('0x23')]('user:save',_0x56c91b);io[_0xd707('0x23')](_0xd707('0x24'),_0x56c91b);}};module['exports']=Agent;
\ No newline at end of file
index 9b4682c..d4e140a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe52=['originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name'];(function(_0x3edb73,_0x25b724){var _0x245477=function(_0x28b42e){while(--_0x28b42e){_0x3edb73['push'](_0x3edb73['shift']());}};_0x245477(++_0x25b724);}(_0xbe52,0x1af));var _0x2be5=function(_0x1b0efa,_0x2ce208){_0x1b0efa=_0x1b0efa-0x0;var _0x1b416d=_0xbe52[_0x1b0efa];return _0x1b416d;};'use strict';function Campaign(_0x4ded62){this['id']=_0x4ded62['id']||0x0;this[_0x2be5('0x0')]=_0x4ded62[_0x2be5('0x0')]||'';this['type']=_0x4ded62['type']||'campaign';this[_0x2be5('0x1')]=0x0;this[_0x2be5('0x2')]=0x0;this[_0x2be5('0x3')]=0x0;this[_0x2be5('0x4')]=0x0;this[_0x2be5('0x5')]='';this[_0x2be5('0x6')]=!![];this['active']=_0x4ded62[_0x2be5('0x7')];this[_0x2be5('0x8')]=_0x4ded62[_0x2be5('0x8')];this[_0x2be5('0x9')]=_0x4ded62[_0x2be5('0x9')]||null;this[_0x2be5('0xa')]=_0x4ded62[_0x2be5('0xa')]?_0x4ded62['dialGlobalInterval']:null;this[_0x2be5('0xb')]=_0x4ded62[_0x2be5('0xb')];this[_0x2be5('0xc')]=_0x4ded62['dialOriginateCallerIdNumber'];this[_0x2be5('0xd')]=_0x4ded62[_0x2be5('0xd')]||0x1e;this[_0x2be5('0xe')]=_0x4ded62[_0x2be5('0xe')];this['dialCongestionRetryFrequency']=_0x4ded62['dialCongestionRetryFrequency'];this[_0x2be5('0xf')]=_0x4ded62[_0x2be5('0xf')];this[_0x2be5('0x10')]=_0x4ded62[_0x2be5('0x10')];this[_0x2be5('0x11')]=_0x4ded62[_0x2be5('0x11')];this[_0x2be5('0x12')]=_0x4ded62[_0x2be5('0x12')];this[_0x2be5('0x13')]=_0x4ded62['dialGlobalMaxRetry'];this[_0x2be5('0x14')]=_0x4ded62[_0x2be5('0x14')]||0x3;this[_0x2be5('0x15')]=_0x4ded62[_0x2be5('0x15')]||0x96;this[_0x2be5('0x16')]=_0x4ded62['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x4ded62[_0x2be5('0x17')]||0x96;this['dialAbandonedMaxRetry']=_0x4ded62[_0x2be5('0x18')]||0x3;this[_0x2be5('0x19')]=_0x4ded62[_0x2be5('0x19')]||0x96;this[_0x2be5('0x1a')]=_0x4ded62[_0x2be5('0x1a')]||0x3;this[_0x2be5('0x1b')]=_0x4ded62[_0x2be5('0x1b')]||0x96;this['dialAgentRejectMaxRetry']=_0x4ded62[_0x2be5('0x1c')]||0x3;this[_0x2be5('0x1d')]=_0x4ded62[_0x2be5('0x1d')]||0x96;this[_0x2be5('0x1e')]=_0x4ded62[_0x2be5('0x1e')]||_0x2be5('0x1f');this[_0x2be5('0x20')]=_0x4ded62['dialPrefix']||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x4ded62['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x4ded62['dialCutDigit']||undefined;this[_0x2be5('0x21')]=_0x4ded62[_0x2be5('0x21')]?_0x4ded62['TrunkBackup']:undefined;this[_0x2be5('0x22')]=_0x4ded62[_0x2be5('0x22')]?_0x4ded62[_0x2be5('0x22')]:undefined;this[_0x2be5('0x23')]=_0x4ded62[_0x2be5('0x23')]?_0x4ded62['Interval']:undefined;this['SquareProject']=_0x4ded62['SquareProject']?_0x4ded62[_0x2be5('0x24')]:undefined;this[_0x2be5('0x25')]=_0x4ded62[_0x2be5('0x24')]?_0x4ded62[_0x2be5('0x24')][_0x2be5('0x0')]:undefined;this[_0x2be5('0x26')]=_0x4ded62[_0x2be5('0x26')]||![];this[_0x2be5('0x27')]=_0x4ded62[_0x2be5('0x27')];this[_0x2be5('0x28')]=_0x4ded62[_0x2be5('0x28')];this[_0x2be5('0x29')]=_0x4ded62[_0x2be5('0x29')];this[_0x2be5('0x2a')]=_0x4ded62[_0x2be5('0x2a')];this[_0x2be5('0x2b')]=_0x4ded62[_0x2be5('0x2b')];this[_0x2be5('0x2c')]=_0x4ded62['dialAMDBetweenWordsSilence'];this[_0x2be5('0x2d')]=_0x4ded62[_0x2be5('0x2d')];this[_0x2be5('0x2e')]=_0x4ded62['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x4ded62[_0x2be5('0x2f')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x6f08=['active','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','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','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','message','sendMessageOneNotActive'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x6f08,0x171));var _0x86f0=function(_0x14f609,_0x5b7b5c){_0x14f609=_0x14f609-0x0;var _0xe343cd=_0x6f08[_0x14f609];return _0xe343cd;};'use strict';function Campaign(_0x2bb843){this['id']=_0x2bb843['id']||0x0;this[_0x86f0('0x0')]=_0x2bb843['name']||'';this['type']=_0x2bb843[_0x86f0('0x1')]||_0x86f0('0x2');this[_0x86f0('0x3')]=0x0;this['temp']=0x0;this[_0x86f0('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this[_0x86f0('0x5')]='';this[_0x86f0('0x6')]=!![];this[_0x86f0('0x7')]=_0x2bb843[_0x86f0('0x7')];this['limitCalls']=_0x2bb843['limitCalls'];this[_0x86f0('0x8')]=_0x2bb843[_0x86f0('0x8')]||null;this[_0x86f0('0x9')]=_0x2bb843[_0x86f0('0x9')]?_0x2bb843[_0x86f0('0x9')]:null;this[_0x86f0('0xa')]=_0x2bb843[_0x86f0('0xa')];this[_0x86f0('0xb')]=_0x2bb843['dialOriginateCallerIdNumber'];this[_0x86f0('0xc')]=_0x2bb843[_0x86f0('0xc')]||0x1e;this[_0x86f0('0xd')]=_0x2bb843[_0x86f0('0xd')];this['dialCongestionRetryFrequency']=_0x2bb843[_0x86f0('0xe')];this[_0x86f0('0xf')]=_0x2bb843[_0x86f0('0xf')];this['dialBusyRetryFrequency']=_0x2bb843['dialBusyRetryFrequency'];this[_0x86f0('0x10')]=_0x2bb843[_0x86f0('0x10')];this['dialNoAnswerRetryFrequency']=_0x2bb843[_0x86f0('0x11')];this['dialGlobalMaxRetry']=_0x2bb843['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0x2bb843[_0x86f0('0x12')]||0x3;this[_0x86f0('0x13')]=_0x2bb843[_0x86f0('0x13')]||0x96;this[_0x86f0('0x14')]=_0x2bb843[_0x86f0('0x14')]||0x3;this[_0x86f0('0x15')]=_0x2bb843[_0x86f0('0x15')]||0x96;this[_0x86f0('0x16')]=_0x2bb843['dialAbandonedMaxRetry']||0x3;this[_0x86f0('0x17')]=_0x2bb843[_0x86f0('0x17')]||0x96;this['dialMachineMaxRetry']=_0x2bb843[_0x86f0('0x18')]||0x3;this['dialMachineRetryFrequency']=_0x2bb843[_0x86f0('0x19')]||0x96;this['dialAgentRejectMaxRetry']=_0x2bb843[_0x86f0('0x1a')]||0x3;this[_0x86f0('0x1b')]=_0x2bb843[_0x86f0('0x1b')]||0x96;this[_0x86f0('0x1c')]=_0x2bb843[_0x86f0('0x1c')]||_0x86f0('0x1d');this[_0x86f0('0x1e')]=_0x2bb843[_0x86f0('0x1e')]||undefined;this[_0x86f0('0x1f')]=_0x2bb843[_0x86f0('0x1f')]||undefined;this[_0x86f0('0x20')]=_0x2bb843[_0x86f0('0x20')]||undefined;this['TrunkBackup']=_0x2bb843[_0x86f0('0x21')]?_0x2bb843[_0x86f0('0x21')]:undefined;this['Trunk']=_0x2bb843[_0x86f0('0x22')]?_0x2bb843[_0x86f0('0x22')]:undefined;this[_0x86f0('0x23')]=_0x2bb843[_0x86f0('0x23')]?_0x2bb843['Interval']:undefined;this['SquareProject']=_0x2bb843[_0x86f0('0x24')]?_0x2bb843[_0x86f0('0x24')]:undefined;this[_0x86f0('0x25')]=_0x2bb843[_0x86f0('0x24')]?_0x2bb843[_0x86f0('0x24')][_0x86f0('0x0')]:undefined;this[_0x86f0('0x26')]=_0x2bb843[_0x86f0('0x26')]||![];this[_0x86f0('0x27')]=_0x2bb843[_0x86f0('0x27')];this['dialAMDGreeting']=_0x2bb843[_0x86f0('0x28')];this['dialAMDAfterGreetingSilence']=_0x2bb843[_0x86f0('0x29')];this[_0x86f0('0x2a')]=_0x2bb843[_0x86f0('0x2a')];this['dialAMDMinWordLength']=_0x2bb843['dialAMDMinWordLength'];this[_0x86f0('0x2b')]=_0x2bb843[_0x86f0('0x2b')];this[_0x86f0('0x2c')]=_0x2bb843[_0x86f0('0x2c')];this['dialAMDSilenceThreshold']=_0x2bb843['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x2bb843[_0x86f0('0x2d')];}module[_0x86f0('0x2e')]=Campaign;
\ No newline at end of file
index 285ac42..6f0dd14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97ce=['lastdata','billableseconds','type','tag','disposition','monitor','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel','calleridnum','connectedlinenum','accountcode','uniqueid','linkedid','exten','answered','answertime','endtime','abandoned','lastapplication'];(function(_0x515bd1,_0x583e46){var _0x386416=function(_0x28f048){while(--_0x28f048){_0x515bd1['push'](_0x515bd1['shift']());}};_0x386416(++_0x583e46);}(_0x97ce,0x151));var _0xe97c=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x97ce[_0x1c8c28];return _0x1f59b4;};'use strict';function Channel(){this[_0xe97c('0x0')]=null;this[_0xe97c('0x1')]='';this[_0xe97c('0x2')]='';this[_0xe97c('0x3')]=0x0;this['calleridname']='';this[_0xe97c('0x4')]=undefined;this['connectedlinename']=undefined;this[_0xe97c('0x5')]=0x0;this['context']='';this[_0xe97c('0x6')]=0x0;this[_0xe97c('0x7')]=0x0;this[_0xe97c('0x8')]=0x0;this[_0xe97c('0x9')]=![];this[_0xe97c('0xa')]=null;this[_0xe97c('0xb')]=null;this['unmanaged']=![];this[_0xe97c('0xc')]=![];this[_0xe97c('0xd')]='';this[_0xe97c('0xe')]='';this['duration']=0x0;this[_0xe97c('0xf')]=0x0;this['holdtime']=0x0;this[_0xe97c('0x10')]=null;this[_0xe97c('0x11')]=null;this[_0xe97c('0x12')]=null;this[_0xe97c('0x13')]=![];this[_0xe97c('0x14')]=null;this[_0xe97c('0x15')]=null;this[_0xe97c('0x16')]=[];this['transfercalleridnum']=undefined;this[_0xe97c('0x17')]=undefined;this[_0xe97c('0x18')]=undefined;this[_0xe97c('0x19')]=0x0;}module[_0xe97c('0x1a')]=Channel;
\ No newline at end of file
+var _0x3419=['answered','answertime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','type','disposition','monitor','monitorFilename','monitors','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','accountcode','context','uniqueid','linkedid'];(function(_0x4e6c5d,_0x43b209){var _0x5f10a5=function(_0x16791e){while(--_0x16791e){_0x4e6c5d['push'](_0x4e6c5d['shift']());}};_0x5f10a5(++_0x43b209);}(_0x3419,0xb3));var _0x9341=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x3419[_0x334841];return _0x5beb4b;};'use strict';function Channel(){this[_0x9341('0x0')]=null;this[_0x9341('0x1')]='';this[_0x9341('0x2')]='';this[_0x9341('0x3')]=0x0;this[_0x9341('0x4')]='';this['connectedlinenum']=undefined;this[_0x9341('0x5')]=undefined;this[_0x9341('0x6')]=0x0;this[_0x9341('0x7')]='';this[_0x9341('0x8')]=0x0;this[_0x9341('0x9')]=0x0;this['exten']=0x0;this[_0x9341('0xa')]=![];this[_0x9341('0xb')]=null;this['endtime']=null;this[_0x9341('0xc')]=![];this[_0x9341('0xd')]=![];this[_0x9341('0xe')]='';this[_0x9341('0xf')]='';this[_0x9341('0x10')]=0x0;this[_0x9341('0x11')]=0x0;this['holdtime']=0x0;this[_0x9341('0x12')]=null;this['tag']=null;this[_0x9341('0x13')]=null;this[_0x9341('0x14')]=![];this[_0x9341('0x15')]=null;this['queue']=null;this[_0x9341('0x16')]=[];this['transfercalleridnum']=undefined;this[_0x9341('0x17')]=undefined;this[_0x9341('0x18')]=undefined;this[_0x9341('0x19')]=0x0;}module[_0x9341('0x1a')]=Channel;
\ No newline at end of file
index ebdc04a..bbbd223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5bb=['type','serverUrl','Configurations','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret'];(function(_0x52e02d,_0x2e8de4){var _0x1bd8c2=function(_0x20dc57){while(--_0x20dc57){_0x52e02d['push'](_0x52e02d['shift']());}};_0x1bd8c2(++_0x2e8de4);}(_0xa5bb,0x1cb));var _0xba5b=function(_0x5cd382,_0x21bfb4){_0x5cd382=_0x5cd382-0x0;var _0x146257=_0xa5bb[_0x5cd382];return _0x146257;};'use strict';function DeskAccount(_0x1a4525){this['id']=_0x1a4525['id']||0x0;this[_0xba5b('0x0')]=_0x1a4525['name']||'';this[_0xba5b('0x1')]=_0x1a4525['username']||'';this[_0xba5b('0x2')]=_0x1a4525[_0xba5b('0x2')]||'';this[_0xba5b('0x3')]=_0x1a4525[_0xba5b('0x3')]||'';this[_0xba5b('0x4')]=_0x1a4525[_0xba5b('0x4')]||'';this[_0xba5b('0x5')]=_0x1a4525[_0xba5b('0x5')]||'';this[_0xba5b('0x6')]=_0x1a4525[_0xba5b('0x6')]||'';this['token']=_0x1a4525[_0xba5b('0x7')]||'';this[_0xba5b('0x8')]=_0x1a4525[_0xba5b('0x8')]||'';this[_0xba5b('0x9')]=_0x1a4525[_0xba5b('0x9')]||'';this[_0xba5b('0xa')]=_0x1a4525['serverUrl']||'';this['Configurations']=_0x1a4525[_0xba5b('0xb')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x7ef7=['remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username'];(function(_0x30d330,_0x45e695){var _0x136ef8=function(_0x2b36d0){while(--_0x2b36d0){_0x30d330['push'](_0x30d330['shift']());}};_0x136ef8(++_0x45e695);}(_0x7ef7,0x136));var _0x77ef=function(_0x45dd7b,_0x37e306){_0x45dd7b=_0x45dd7b-0x0;var _0x4cfcc6=_0x7ef7[_0x45dd7b];return _0x4cfcc6;};'use strict';function DeskAccount(_0x3a73c9){this['id']=_0x3a73c9['id']||0x0;this['name']=_0x3a73c9[_0x77ef('0x0')]||'';this['username']=_0x3a73c9[_0x77ef('0x1')]||'';this['remoteUri']=_0x3a73c9[_0x77ef('0x2')]||'';this[_0x77ef('0x3')]=_0x3a73c9[_0x77ef('0x3')]||'';this[_0x77ef('0x4')]=_0x3a73c9['password']||'';this[_0x77ef('0x5')]=_0x3a73c9[_0x77ef('0x5')]||'';this[_0x77ef('0x6')]=_0x3a73c9[_0x77ef('0x6')]||'';this[_0x77ef('0x7')]=_0x3a73c9['token']||'';this[_0x77ef('0x8')]=_0x3a73c9['tokenSecret']||'';this['type']=_0x3a73c9[_0x77ef('0x9')]||'';this[_0x77ef('0xa')]=_0x3a73c9[_0x77ef('0xa')]||'';this[_0x77ef('0xb')]=_0x3a73c9['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
index 40eadf4..51178b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12cc=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username'];(function(_0x421e73,_0x2d3fdc){var _0x2f71ec=function(_0x43241c){while(--_0x43241c){_0x421e73['push'](_0x421e73['shift']());}};_0x2f71ec(++_0x2d3fdc);}(_0x12cc,0x11c));var _0xc12c=function(_0x526a64,_0x2b9b82){_0x526a64=_0x526a64-0x0;var _0x6482fe=_0x12cc[_0x526a64];return _0x6482fe;};'use strict';function Dynamics365Account(_0x5ce924){this['id']=_0x5ce924['id']||0x0;this['name']=_0x5ce924[_0xc12c('0x0')]||'';this[_0xc12c('0x1')]=_0x5ce924['username']||'';this[_0xc12c('0x2')]=_0x5ce924[_0xc12c('0x2')]||'';this[_0xc12c('0x3')]=_0x5ce924[_0xc12c('0x3')]||'';this['tenantId']=_0x5ce924[_0xc12c('0x4')]||'';this['clientId']=_0x5ce924[_0xc12c('0x5')]||'';this[_0xc12c('0x6')]=_0x5ce924[_0xc12c('0x6')]||{};this['serverUrl']=_0x5ce924[_0xc12c('0x7')]||'';this[_0xc12c('0x8')]=_0x5ce924[_0xc12c('0x8')]||![];this[_0xc12c('0x9')]=_0x5ce924[_0xc12c('0x9')]||{};this[_0xc12c('0xa')]=_0x5ce924['CloudProvider']||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0x62b8=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username'];(function(_0x44b3f6,_0x2f0b79){var _0x4a6207=function(_0x5835fb){while(--_0x5835fb){_0x44b3f6['push'](_0x44b3f6['shift']());}};_0x4a6207(++_0x2f0b79);}(_0x62b8,0xbe));var _0x862b=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0x62b8[_0x1ebce2];return _0x4a330c;};'use strict';function Dynamics365Account(_0x4d4ca6){this['id']=_0x4d4ca6['id']||0x0;this[_0x862b('0x0')]=_0x4d4ca6[_0x862b('0x0')]||'';this['username']=_0x4d4ca6[_0x862b('0x1')]||'';this[_0x862b('0x2')]=_0x4d4ca6[_0x862b('0x2')]||'';this[_0x862b('0x3')]=_0x4d4ca6[_0x862b('0x3')]||'';this[_0x862b('0x4')]=_0x4d4ca6['tenantId']||'';this[_0x862b('0x5')]=_0x4d4ca6[_0x862b('0x5')]||'';this[_0x862b('0x6')]=_0x4d4ca6[_0x862b('0x6')]||{};this['serverUrl']=_0x4d4ca6[_0x862b('0x7')]||'';this[_0x862b('0x8')]=_0x4d4ca6[_0x862b('0x8')]||![];this[_0x862b('0x9')]=_0x4d4ca6[_0x862b('0x9')]||{};this[_0x862b('0xa')]=_0x4d4ca6['CloudProvider']||{};}module[_0x862b('0xb')]=Dynamics365Account;
\ No newline at end of file
index 771282e..3312eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5962=['t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect'];(function(_0x17525c,_0x533f2e){var _0x3c69af=function(_0x4e99c5){while(--_0x4e99c5){_0x17525c['push'](_0x17525c['shift']());}};_0x3c69af(++_0x533f2e);}(_0x5962,0x193));var _0x2596=function(_0x2a7b50,_0x545d55){_0x2a7b50=_0x2a7b50-0x0;var _0x4224c9=_0x5962[_0x2a7b50];return _0x4224c9;};'use strict';function FaxAccount(_0x44c1f5){this['id']=_0x44c1f5['id']||0x0;this[_0x2596('0x0')]=_0x44c1f5['name']||'';this[_0x2596('0x1')]=_0x44c1f5[_0x2596('0x1')];this[_0x2596('0x2')]=_0x44c1f5[_0x2596('0x2')];this[_0x2596('0x3')]=_0x44c1f5[_0x2596('0x3')];this[_0x2596('0x4')]=_0x44c1f5['localstationid'];this['minrate']=_0x44c1f5[_0x2596('0x5')]||0x960;this['maxrate']=_0x44c1f5[_0x2596('0x6')]||0x3840;this[_0x2596('0x7')]=_0x44c1f5[_0x2596('0x7')]||_0x2596('0x8');this[_0x2596('0x9')]=_0x44c1f5[_0x2596('0x9')]||'no';this[_0x2596('0xa')]=_0x44c1f5[_0x2596('0xa')]||'no';this[_0x2596('0xb')]=_0x44c1f5[_0x2596('0xb')]||0x1388;this[_0x2596('0xc')]=_0x44c1f5[_0x2596('0xc')]||_0x2596('0xd');this[_0x2596('0xe')]=_0x44c1f5['Trunk']?_0x44c1f5['Trunk']:undefined;this[_0x2596('0xf')]=_0x44c1f5['ListId'];this[_0x2596('0x10')]=_0x44c1f5[_0x2596('0x10')];}module[_0x2596('0x11')]=FaxAccount;
\ No newline at end of file
+var _0x64f6=['SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x64f6,0x71));var _0x664f=function(_0x3891e8,_0x3b6b95){_0x3891e8=_0x3891e8-0x0;var _0xc34c60=_0x64f6[_0x3891e8];return _0xc34c60;};'use strict';function FaxAccount(_0x228960){this['id']=_0x228960['id']||0x0;this[_0x664f('0x0')]=_0x228960[_0x664f('0x0')]||'';this[_0x664f('0x1')]=_0x228960[_0x664f('0x1')];this[_0x664f('0x2')]=_0x228960[_0x664f('0x2')];this[_0x664f('0x3')]=_0x228960[_0x664f('0x3')];this['localstationid']=_0x228960[_0x664f('0x4')];this[_0x664f('0x5')]=_0x228960[_0x664f('0x5')]||0x960;this[_0x664f('0x6')]=_0x228960[_0x664f('0x6')]||0x3840;this[_0x664f('0x7')]=_0x228960[_0x664f('0x7')]||_0x664f('0x8');this[_0x664f('0x9')]=_0x228960[_0x664f('0x9')]||'no';this[_0x664f('0xa')]=_0x228960[_0x664f('0xa')]||'no';this[_0x664f('0xb')]=_0x228960[_0x664f('0xb')]||0x1388;this[_0x664f('0xc')]=_0x228960[_0x664f('0xc')]||_0x664f('0xd');this['Trunk']=_0x228960[_0x664f('0xe')]?_0x228960[_0x664f('0xe')]:undefined;this[_0x664f('0xf')]=_0x228960[_0x664f('0xf')];this[_0x664f('0x10')]=_0x228960[_0x664f('0x10')];}module[_0x664f('0x11')]=FaxAccount;
\ No newline at end of file
index 49d5cba..cba4686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x871d=['name','username','apiKey','remoteUri','serverUrl','Configurations'];(function(_0x207e7c,_0x2575e9){var _0x96ea1e=function(_0x53c4b5){while(--_0x53c4b5){_0x207e7c['push'](_0x207e7c['shift']());}};_0x96ea1e(++_0x2575e9);}(_0x871d,0x72));var _0xd871=function(_0x284b50,_0x58f8c3){_0x284b50=_0x284b50-0x0;var _0x4756e7=_0x871d[_0x284b50];return _0x4756e7;};'use strict';function FreshdeskAccount(_0x5b3730){this['id']=_0x5b3730['id']||0x0;this[_0xd871('0x0')]=_0x5b3730[_0xd871('0x0')]||'';this[_0xd871('0x1')]=_0x5b3730[_0xd871('0x1')]||'';this[_0xd871('0x2')]=_0x5b3730['token']||'';this['remoteUri']=_0x5b3730[_0xd871('0x3')]||'';this['serverUrl']=_0x5b3730[_0xd871('0x4')]||'';this['Configurations']=_0x5b3730[_0xd871('0x5')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0xfeb9=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xfeb9,0xd9));var _0x9feb=function(_0x1c9b56,_0x13f211){_0x1c9b56=_0x1c9b56-0x0;var _0x4c2544=_0xfeb9[_0x1c9b56];return _0x4c2544;};'use strict';function FreshdeskAccount(_0x6cf6e6){this['id']=_0x6cf6e6['id']||0x0;this[_0x9feb('0x0')]=_0x6cf6e6[_0x9feb('0x0')]||'';this[_0x9feb('0x1')]=_0x6cf6e6['username']||'';this[_0x9feb('0x2')]=_0x6cf6e6[_0x9feb('0x3')]||'';this[_0x9feb('0x4')]=_0x6cf6e6[_0x9feb('0x4')]||'';this[_0x9feb('0x5')]=_0x6cf6e6[_0x9feb('0x5')]||'';this[_0x9feb('0x6')]=_0x6cf6e6[_0x9feb('0x6')]||{};}module[_0x9feb('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 0ec9e0d..7e96b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277c=['remoteUri','serverUrl','Configurations','name','username','apiKey','token'];(function(_0x263c71,_0x1988e3){var _0x591c36=function(_0x422dc7){while(--_0x422dc7){_0x263c71['push'](_0x263c71['shift']());}};_0x591c36(++_0x1988e3);}(_0x277c,0x153));var _0xc277=function(_0x4c8dbb,_0xcdd090){_0x4c8dbb=_0x4c8dbb-0x0;var _0x46af91=_0x277c[_0x4c8dbb];return _0x46af91;};'use strict';function FreshsalesAccount(_0x3919bf){this['id']=_0x3919bf['id']||0x0;this['name']=_0x3919bf[_0xc277('0x0')]||'';this[_0xc277('0x1')]=_0x3919bf[_0xc277('0x1')]||'';this[_0xc277('0x2')]=_0x3919bf[_0xc277('0x3')]||'';this[_0xc277('0x4')]=_0x3919bf[_0xc277('0x4')]||'';this[_0xc277('0x5')]=_0x3919bf['serverUrl']||'';this['Configurations']=_0x3919bf[_0xc277('0x6')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0xed1f=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0xf5d71c,_0x2613a6){var _0x5af672=function(_0x191f52){while(--_0x191f52){_0xf5d71c['push'](_0xf5d71c['shift']());}};_0x5af672(++_0x2613a6);}(_0xed1f,0x6a));var _0xfed1=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0xed1f[_0x1477ef];return _0x164acd;};'use strict';function FreshsalesAccount(_0x47d976){this['id']=_0x47d976['id']||0x0;this[_0xfed1('0x0')]=_0x47d976[_0xfed1('0x0')]||'';this[_0xfed1('0x1')]=_0x47d976[_0xfed1('0x1')]||'';this[_0xfed1('0x2')]=_0x47d976[_0xfed1('0x3')]||'';this[_0xfed1('0x4')]=_0x47d976[_0xfed1('0x4')]||'';this[_0xfed1('0x5')]=_0x47d976[_0xfed1('0x5')]||'';this[_0xfed1('0x6')]=_0x47d976[_0xfed1('0x6')]||{};}module[_0xfed1('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 1e8e994..8ac6745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0791=['uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','position','count','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinenum','connectedlinename','accountcode','exten','priority','assigned','lastAssignedTo','motionChannel','voice','routealias','mohtime','variables','exports','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0791,0x1ca));var _0x1079=function(_0x40822a,_0x582b60){_0x40822a=_0x40822a-0x0;var _0x357420=_0x0791[_0x40822a];return _0x357420;};'use strict';function QueueReport(){this[_0x1079('0x0')]='inbound';this[_0x1079('0x1')]='';this[_0x1079('0x2')]='';this[_0x1079('0x3')]='';this[_0x1079('0x4')]='';this[_0x1079('0x5')]=null;this['queuecallerleaveAt']=null;this[_0x1079('0x6')]=0x1;this[_0x1079('0x7')]=0x1;this[_0x1079('0x8')]=![];this['queuecallerabandonAt']=null;this[_0x1079('0x9')]=![];this[_0x1079('0xa')]=null;this[_0x1079('0xb')]=![];this[_0x1079('0xc')]=null;this['originalposition']=0x1;this[_0x1079('0xd')]='';this[_0x1079('0xe')]='';this[_0x1079('0xf')]='';this[_0x1079('0x10')]='';this['context']='';this[_0x1079('0x11')]='';this[_0x1079('0x12')]='';this['holdtime']=0x0;this[_0x1079('0x13')]=![];this[_0x1079('0x14')]='';this[_0x1079('0x15')]=_0x1079('0x16');this[_0x1079('0x17')]=null;this[_0x1079('0x18')]=0x0;this[_0x1079('0x19')]={};}module[_0x1079('0x1a')]=QueueReport;
\ No newline at end of file
+var _0x7e11=['queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinename','accountcode','context','exten','priority','holdtime','lastAssignedTo','motionChannel','voice','routealias','mohtime','variables','type','inbound','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt'];(function(_0xa87787,_0x53928e){var _0x43b728=function(_0x433f94){while(--_0x433f94){_0xa87787['push'](_0xa87787['shift']());}};_0x43b728(++_0x53928e);}(_0x7e11,0x11e));var _0x17e1=function(_0x386e26,_0x29d518){_0x386e26=_0x386e26-0x0;var _0x4419f1=_0x7e11[_0x386e26];return _0x4419f1;};'use strict';function QueueReport(){this[_0x17e1('0x0')]=_0x17e1('0x1');this[_0x17e1('0x2')]='';this[_0x17e1('0x3')]='';this[_0x17e1('0x4')]='';this['queue']='';this[_0x17e1('0x5')]=null;this[_0x17e1('0x6')]=null;this[_0x17e1('0x7')]=0x1;this[_0x17e1('0x8')]=0x1;this[_0x17e1('0x9')]=![];this[_0x17e1('0xa')]=null;this['queuecallercomplete']=![];this[_0x17e1('0xb')]=null;this[_0x17e1('0xc')]=![];this['queuecallerexitAt']=null;this[_0x17e1('0xd')]=0x1;this[_0x17e1('0xe')]='';this['connectedlinenum']='';this[_0x17e1('0xf')]='';this[_0x17e1('0x10')]='';this[_0x17e1('0x11')]='';this[_0x17e1('0x12')]='';this[_0x17e1('0x13')]='';this[_0x17e1('0x14')]=0x0;this['assigned']=![];this[_0x17e1('0x15')]='';this[_0x17e1('0x16')]=_0x17e1('0x17');this[_0x17e1('0x18')]=null;this[_0x17e1('0x19')]=0x0;this[_0x17e1('0x1a')]={};}module['exports']=QueueReport;
\ No newline at end of file
index 3887dd0..594235a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa925=['exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl'];(function(_0x31753b,_0xa7aa14){var _0x521dbb=function(_0x34cb8e){while(--_0x34cb8e){_0x31753b['push'](_0x31753b['shift']());}};_0x521dbb(++_0xa7aa14);}(_0xa925,0x90));var _0x5a92=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0xa925[_0x468b0f];return _0x3e74d9;};'use strict';function SalesforceAccount(_0x47c818){this['id']=_0x47c818['id']||0x0;this[_0x5a92('0x0')]=_0x47c818[_0x5a92('0x0')]||'';this[_0x5a92('0x1')]=_0x47c818[_0x5a92('0x1')]||'';this['remoteUri']=_0x47c818[_0x5a92('0x2')]||'';this[_0x5a92('0x3')]=_0x47c818['password']||'';this['clientId']=_0x47c818[_0x5a92('0x4')]||'';this[_0x5a92('0x5')]=_0x47c818[_0x5a92('0x5')]||'';this[_0x5a92('0x6')]=_0x47c818[_0x5a92('0x6')]||'';this[_0x5a92('0x7')]=_0x47c818[_0x5a92('0x7')]||_0x5a92('0x8');this[_0x5a92('0x9')]=_0x47c818[_0x5a92('0x9')]||'';this['Configurations']=_0x47c818['Configurations']||{};}module[_0x5a92('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0xb6ff=['username','remoteUri','password','clientId','securityToken','type','serverUrl','Configurations','exports','name'];(function(_0x362225,_0x353663){var _0x42c250=function(_0x2eb641){while(--_0x2eb641){_0x362225['push'](_0x362225['shift']());}};_0x42c250(++_0x353663);}(_0xb6ff,0x185));var _0xfb6f=function(_0x59dccc,_0x184c1c){_0x59dccc=_0x59dccc-0x0;var _0xc97bcb=_0xb6ff[_0x59dccc];return _0xc97bcb;};'use strict';function SalesforceAccount(_0x19b9b5){this['id']=_0x19b9b5['id']||0x0;this[_0xfb6f('0x0')]=_0x19b9b5[_0xfb6f('0x0')]||'';this[_0xfb6f('0x1')]=_0x19b9b5['username']||'';this[_0xfb6f('0x2')]=_0x19b9b5[_0xfb6f('0x2')]||'';this[_0xfb6f('0x3')]=_0x19b9b5['password']||'';this[_0xfb6f('0x4')]=_0x19b9b5[_0xfb6f('0x4')]||'';this['clientSecret']=_0x19b9b5['clientSecret']||'';this[_0xfb6f('0x5')]=_0x19b9b5[_0xfb6f('0x5')]||'';this[_0xfb6f('0x6')]=_0x19b9b5[_0xfb6f('0x6')]||'integrationTab';this[_0xfb6f('0x7')]=_0x19b9b5[_0xfb6f('0x7')]||'';this['Configurations']=_0x19b9b5[_0xfb6f('0x8')]||{};}module[_0xfb6f('0x9')]=SalesforceAccount;
\ No newline at end of file
index 3a46c2a..b8765db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87c0=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x19ebf7,_0x35807a){var _0x5e0c98=function(_0x58fcfe){while(--_0x58fcfe){_0x19ebf7['push'](_0x19ebf7['shift']());}};_0x5e0c98(++_0x35807a);}(_0x87c0,0xaf));var _0x087c=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0x87c0[_0xbf8ebe];return _0x1e25e8;};'use strict';function ServicenowAccount(_0x141f9e){this['id']=_0x141f9e['id']||0x0;this[_0x087c('0x0')]=_0x141f9e['name']||'';this[_0x087c('0x1')]=_0x141f9e[_0x087c('0x1')]||'';this[_0x087c('0x2')]=_0x141f9e[_0x087c('0x2')]||'';this[_0x087c('0x3')]=_0x141f9e['remoteUri']||'';this[_0x087c('0x4')]=_0x141f9e[_0x087c('0x4')]||'';this[_0x087c('0x5')]=_0x141f9e[_0x087c('0x5')]||{};}module[_0x087c('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0xa907=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x3991b0,_0x45a831){var _0xc5cf22=function(_0x263f75){while(--_0x263f75){_0x3991b0['push'](_0x3991b0['shift']());}};_0xc5cf22(++_0x45a831);}(_0xa907,0x12a));var _0x7a90=function(_0x1fd0da,_0x15413f){_0x1fd0da=_0x1fd0da-0x0;var _0xcee1bd=_0xa907[_0x1fd0da];return _0xcee1bd;};'use strict';function ServicenowAccount(_0x277af7){this['id']=_0x277af7['id']||0x0;this[_0x7a90('0x0')]=_0x277af7[_0x7a90('0x0')]||'';this[_0x7a90('0x1')]=_0x277af7['username']||'';this[_0x7a90('0x2')]=_0x277af7[_0x7a90('0x2')]||'';this[_0x7a90('0x3')]=_0x277af7[_0x7a90('0x3')]||'';this[_0x7a90('0x4')]=_0x277af7[_0x7a90('0x4')]||'';this[_0x7a90('0x5')]=_0x277af7[_0x7a90('0x5')]||{};}module[_0x7a90('0x6')]=ServicenowAccount;
\ No newline at end of file
index bbae23a..f16a5ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9a8=['username','password','remoteUri','Configurations','exports','name'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xc9a8,0x143));var _0x8c9a=function(_0x189d3c,_0x5efebf){_0x189d3c=_0x189d3c-0x0;var _0x485959=_0xc9a8[_0x189d3c];return _0x485959;};'use strict';function SugarcrmAccount(_0x15de5f){this['id']=_0x15de5f['id']||0x0;this['name']=_0x15de5f[_0x8c9a('0x0')]||'';this[_0x8c9a('0x1')]=_0x15de5f['username']||'';this['password']=_0x15de5f[_0x8c9a('0x2')]||'';this[_0x8c9a('0x3')]=_0x15de5f[_0x8c9a('0x3')]||'';this['serverUrl']=_0x15de5f['serverUrl']||'';this[_0x8c9a('0x4')]=_0x15de5f['Configurations']||{};}module[_0x8c9a('0x5')]=SugarcrmAccount;
\ No newline at end of file
+var _0xb4e5=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x464f5f,_0x4273e5){var _0x1b2e9b=function(_0x41c60d){while(--_0x41c60d){_0x464f5f['push'](_0x464f5f['shift']());}};_0x1b2e9b(++_0x4273e5);}(_0xb4e5,0x17a));var _0x5b4e=function(_0x1819f4,_0x4b650c){_0x1819f4=_0x1819f4-0x0;var _0x1b7e95=_0xb4e5[_0x1819f4];return _0x1b7e95;};'use strict';function SugarcrmAccount(_0xcbd31){this['id']=_0xcbd31['id']||0x0;this[_0x5b4e('0x0')]=_0xcbd31[_0x5b4e('0x0')]||'';this[_0x5b4e('0x1')]=_0xcbd31[_0x5b4e('0x1')]||'';this[_0x5b4e('0x2')]=_0xcbd31[_0x5b4e('0x2')]||'';this['remoteUri']=_0xcbd31[_0x5b4e('0x3')]||'';this[_0x5b4e('0x4')]=_0xcbd31[_0x5b4e('0x4')]||'';this[_0x5b4e('0x5')]=_0xcbd31[_0x5b4e('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 82e9130..1cf8f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bc2=['exports','accountcode','state','unknown','stateTime','address'];(function(_0x28b0eb,_0x3f238f){var _0x363960=function(_0x3397bf){while(--_0x3397bf){_0x28b0eb['push'](_0x28b0eb['shift']());}};_0x363960(++_0x3f238f);}(_0x3bc2,0x91));var _0x23bc=function(_0x21489c,_0xc85630){_0x21489c=_0x21489c-0x0;var _0x8590cf=_0x3bc2[_0x21489c];return _0x8590cf;};'use strict';function Telephone(_0x31ac8a){this['id']=_0x31ac8a['id']||0x0;this['name']=_0x31ac8a['name']||'';this[_0x23bc('0x0')]=_0x31ac8a[_0x23bc('0x0')]||'';this[_0x23bc('0x1')]=_0x23bc('0x2');this[_0x23bc('0x3')]=0x0;this['status']=_0x23bc('0x2');this[_0x23bc('0x4')]='';}module[_0x23bc('0x5')]=Telephone;
\ No newline at end of file
+var _0x608c=['exports','name','accountcode','state','unknown','stateTime','status','address'];(function(_0x40ed18,_0x2e1a58){var _0x3f9e08=function(_0x3987e2){while(--_0x3987e2){_0x40ed18['push'](_0x40ed18['shift']());}};_0x3f9e08(++_0x2e1a58);}(_0x608c,0x1a1));var _0xc608=function(_0x4283ca,_0x16f912){_0x4283ca=_0x4283ca-0x0;var _0x378296=_0x608c[_0x4283ca];return _0x378296;};'use strict';function Telephone(_0x591d7b){this['id']=_0x591d7b['id']||0x0;this['name']=_0x591d7b[_0xc608('0x0')]||'';this[_0xc608('0x1')]=_0x591d7b[_0xc608('0x1')]||'';this[_0xc608('0x2')]=_0xc608('0x3');this[_0xc608('0x4')]=0x0;this[_0xc608('0x5')]=_0xc608('0x3');this[_0xc608('0x6')]='';}module[_0xc608('0x7')]=Telephone;
\ No newline at end of file
index 0cedcc0..36341a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x5edc50,_0xeb0c35){var _0x218c57=function(_0x39f4e8){while(--_0x39f4e8){_0x5edc50['push'](_0x5edc50['shift']());}};_0x218c57(++_0xeb0c35);}(_0xb10b,0x12a));var _0xbb10=function(_0x5e9b23,_0x3069fd){_0x5e9b23=_0x5e9b23-0x0;var _0x27501f=_0xb10b[_0x5e9b23];return _0x27501f;};'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(_0x5326cb,_0x1ab036){var _0x46c1d7=function(_0x311c49){while(--_0x311c49){_0x5326cb['push'](_0x5326cb['shift']());}};_0x46c1d7(++_0x1ab036);}(_0xb10b,0x12a));var _0xbb10=function(_0x128fcd,_0x59568f){_0x128fcd=_0x128fcd-0x0;var _0x4811ad=_0xb10b[_0x128fcd];return _0x4811ad;};'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 3e5694f..e33e98a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0xa49c56,_0x4dbccf){var _0xc096f2=function(_0x588e45){while(--_0x588e45){_0xa49c56['push'](_0xa49c56['shift']());}};_0xc096f2(++_0x4dbccf);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x32dacc,_0x2c603a){_0x32dacc=_0x32dacc-0x0;var _0x13c589=_0x9ffd[_0x32dacc];return _0x13c589;};'use strict';function Trigger(_0x4c26a1){this['id']=_0x4c26a1['id']||0x0;this[_0xd9ff('0x0')]=_0x4c26a1[_0xd9ff('0x0')]||'';this['channel']=_0x4c26a1[_0xd9ff('0x1')]||_0xd9ff('0x2');this[_0xd9ff('0x3')]=_0x4c26a1[_0xd9ff('0x3')]||![];this['AllConditions']=_0x4c26a1[_0xd9ff('0x4')]||[];this[_0xd9ff('0x5')]=_0x4c26a1['AnyConditions']||[];this[_0xd9ff('0x6')]=_0x4c26a1[_0xd9ff('0x6')]||[];}module[_0xd9ff('0x7')]=Trigger;
\ No newline at end of file
+var _0x14a0=['voice','status','AnyConditions','Actions','name','channel'];(function(_0x33b427,_0xc68049){var _0x4b27ac=function(_0x1db7d8){while(--_0x1db7d8){_0x33b427['push'](_0x33b427['shift']());}};_0x4b27ac(++_0xc68049);}(_0x14a0,0x8e));var _0x014a=function(_0x30772b,_0x314c81){_0x30772b=_0x30772b-0x0;var _0x3982a6=_0x14a0[_0x30772b];return _0x3982a6;};'use strict';function Trigger(_0x1ee939){this['id']=_0x1ee939['id']||0x0;this[_0x014a('0x0')]=_0x1ee939[_0x014a('0x0')]||'';this[_0x014a('0x1')]=_0x1ee939[_0x014a('0x1')]||_0x014a('0x2');this[_0x014a('0x3')]=_0x1ee939[_0x014a('0x3')]||![];this['AllConditions']=_0x1ee939['AllConditions']||[];this[_0x014a('0x4')]=_0x1ee939[_0x014a('0x4')]||[];this[_0x014a('0x5')]=_0x1ee939['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index 46276d7..4cf3b65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fcf=['split','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active','name','state','unknown','registry'];(function(_0x1fbd03,_0x2a16ba){var _0x54b3e8=function(_0x49f55f){while(--_0x49f55f){_0x1fbd03['push'](_0x1fbd03['shift']());}};_0x54b3e8(++_0x2a16ba);}(_0x3fcf,0xcd));var _0xf3fc=function(_0x45afd0,_0x333f9d){_0x45afd0=_0x45afd0-0x0;var _0x37c127=_0x3fcf[_0x45afd0];return _0x37c127;};'use strict';function Trunk(_0x2cd9e1){this['id']=_0x2cd9e1['id']||0x0;this[_0xf3fc('0x0')]=_0x2cd9e1[_0xf3fc('0x0')]||![];this[_0xf3fc('0x1')]=_0x2cd9e1[_0xf3fc('0x1')]||'';this[_0xf3fc('0x2')]='unknown';this['stateTime']=0x0;this['status']=_0xf3fc('0x3');this[_0xf3fc('0x4')]=_0x2cd9e1[_0xf3fc('0x4')]&&_0x2cd9e1[_0xf3fc('0x4')]['indexOf'](':')?_0x2cd9e1[_0xf3fc('0x4')][_0xf3fc('0x5')](':')[0x0]:'';this[_0xf3fc('0x6')]='';this[_0xf3fc('0x7')]='';this[_0xf3fc('0x8')]='';this[_0xf3fc('0x9')]='';this[_0xf3fc('0xa')]='';this[_0xf3fc('0xb')]='unknown';this[_0xf3fc('0xc')]='';this[_0xf3fc('0xd')]='';this[_0xf3fc('0xe')]=_0x2cd9e1[_0xf3fc('0xe')]||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x9e44=['name','state','unknown','stateTime','status','registry','split','host','port','domain','domainport','refresh','defaultuser','active'];(function(_0x8f3670,_0x4379c5){var _0x1d307c=function(_0x1a0c8f){while(--_0x1a0c8f){_0x8f3670['push'](_0x8f3670['shift']());}};_0x1d307c(++_0x4379c5);}(_0x9e44,0x8b));var _0x49e4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9e44[_0x3dd15e];return _0x231fd0;};'use strict';function Trunk(_0x2fd104){this['id']=_0x2fd104['id']||0x0;this['active']=_0x2fd104[_0x49e4('0x0')]||![];this[_0x49e4('0x1')]=_0x2fd104[_0x49e4('0x1')]||'';this[_0x49e4('0x2')]=_0x49e4('0x3');this[_0x49e4('0x4')]=0x0;this[_0x49e4('0x5')]=_0x49e4('0x3');this[_0x49e4('0x6')]=_0x2fd104[_0x49e4('0x6')]&&_0x2fd104['registry']['indexOf'](':')?_0x2fd104[_0x49e4('0x6')][_0x49e4('0x7')](':')[0x0]:'';this[_0x49e4('0x8')]='';this[_0x49e4('0x9')]='';this[_0x49e4('0xa')]='';this[_0x49e4('0xb')]='';this[_0x49e4('0xc')]='';this['stateRegistry']=_0x49e4('0x3');this['registrationtime']='';this['address']='';this[_0x49e4('0xd')]=_0x2fd104[_0x49e4('0xd')]||'';}module['exports']=Trunk;
\ No newline at end of file
index 4c7818a..500a13f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a99=['recordingFormat','mandatoryDisposition','exports','exten'];(function(_0x23182e,_0x2d82d8){var _0x453746=function(_0x3c83f0){while(--_0x3c83f0){_0x23182e['push'](_0x23182e['shift']());}};_0x453746(++_0x2d82d8);}(_0x6a99,0x1df));var _0x96a9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6a99[_0x20a584];return _0x4b41a8;};'use strict';function voiceExtension(_0x2a9aaf){this['id']=_0x2a9aaf['id']||0x0;this['exten']=_0x2a9aaf[_0x96a9('0x0')]||'';this[_0x96a9('0x1')]=_0x2a9aaf['recordingFormat']||'none';this[_0x96a9('0x2')]=_0x2a9aaf[_0x96a9('0x2')]||![];}module[_0x96a9('0x3')]=voiceExtension;
\ No newline at end of file
+var _0xf8f4=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x3d6031,_0x2cb288){var _0x2bc191=function(_0xbf4c3c){while(--_0xbf4c3c){_0x3d6031['push'](_0x3d6031['shift']());}};_0x2bc191(++_0x2cb288);}(_0xf8f4,0x108));var _0x4f8f=function(_0x11908c,_0x4550dd){_0x11908c=_0x11908c-0x0;var _0x3781b2=_0xf8f4[_0x11908c];return _0x3781b2;};'use strict';function voiceExtension(_0x5c5f11){this['id']=_0x5c5f11['id']||0x0;this[_0x4f8f('0x0')]=_0x5c5f11[_0x4f8f('0x0')]||'';this[_0x4f8f('0x1')]=_0x5c5f11['recordingFormat']||_0x4f8f('0x2');this[_0x4f8f('0x3')]=_0x5c5f11[_0x4f8f('0x3')]||![];}module[_0x4f8f('0x4')]=voiceExtension;
\ No newline at end of file
index 09e9661..2cec17d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f98=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav49','gsm','leastrecent','ringall','rrmemory','rrordered','monitor_format','type','inbound','waiting','total','answered','unmanaged','abandoned','inUse','loggedIn','paused','ringing','ringInUse','talking','unavailable','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0x0f98,0x1b0));var _0x80f9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f98[_0x3dd15e];return _0x231fd0;};'use strict';var monitorFormat={'wav':'wav','wav49':_0x80f9('0x0'),'gsm':_0x80f9('0x1')};var strategy={'fewestcalls':'fewestcalls','leastrecent':_0x80f9('0x2'),'linear':'linear','random':'random','ringall':_0x80f9('0x3'),'rr':'roundrobin','rrmemory':_0x80f9('0x4'),'rrordered':_0x80f9('0x5'),'wrandom':'wrandom'};function VoiceQueue(_0xf65168){this['id']=_0xf65168['id']||0x0;this['name']=_0xf65168['name']||'';this['monitor_format']=_0xf65168[_0x80f9('0x6')]||'';this[_0x80f9('0x7')]=_0xf65168[_0x80f9('0x7')]||_0x80f9('0x8');this[_0x80f9('0x9')]=0x0;this[_0x80f9('0xa')]=0x0;this[_0x80f9('0xb')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0x80f9('0xc')]=0x0;this[_0x80f9('0xd')]=0x0;this['available']=0x0;this['busy']=0x0;this[_0x80f9('0xe')]=0x0;this['invalid']=0x0;this[_0x80f9('0xf')]=0x0;this['notInUse']=0x0;this['onHold']=0x0;this[_0x80f9('0x10')]=0x0;this[_0x80f9('0x11')]=0x0;this[_0x80f9('0x12')]=0x0;this[_0x80f9('0x13')]=0x0;this[_0x80f9('0x14')]=0x0;this[_0x80f9('0x15')]=0x0;this[_0x80f9('0x16')]=_0xf65168[_0x80f9('0x16')]||![];this[_0x80f9('0x17')]=_0xf65168[_0x80f9('0x17')]||0xa;this[_0x80f9('0x18')]=_0xf65168[_0x80f9('0x18')]||'no';this[_0x80f9('0x19')]=!![];this['message']='';this['statusMessage']='';this[_0x80f9('0x1a')]=0x0;this[_0x80f9('0x1b')]=0x0;this['dialTimezone']=_0xf65168[_0x80f9('0x1c')]||null;this['dialGlobalInterval']=_0xf65168[_0x80f9('0x1d')]?_0xf65168[_0x80f9('0x1d')]:null;this[_0x80f9('0x1e')]=_0xf65168['dialActive'];this[_0x80f9('0x1f')]=_0xf65168[_0x80f9('0x1f')]||_0x80f9('0x20');this[_0x80f9('0x21')]=_0xf65168['dialLimitChannel']||0x0;this['dialLimitQueue']=_0xf65168[_0x80f9('0x22')]||0x0;this['dialPowerLevel']=_0xf65168[_0x80f9('0x23')]||0x1;this[_0x80f9('0x24')]=_0xf65168[_0x80f9('0x24')]||_0x80f9('0x25');this[_0x80f9('0x26')]=_0xf65168[_0x80f9('0x26')]||0.03;this[_0x80f9('0x27')]=_0xf65168[_0x80f9('0x27')]||0x258;this[_0x80f9('0x28')]=_0xf65168[_0x80f9('0x28')]||_0x80f9('0x29');this[_0x80f9('0x2a')]=_0xf65168[_0x80f9('0x2a')]||_0x80f9('0x29');this[_0x80f9('0x2b')]=_0xf65168[_0x80f9('0x2b')]||0x1e;this[_0x80f9('0x2c')]=_0xf65168[_0x80f9('0x2c')]||_0x80f9('0x2d');this[_0x80f9('0x2e')]=_0xf65168['dialQueueTimeout']||0x3;this[_0x80f9('0x2f')]=_0xf65168[_0x80f9('0x2f')]||undefined;this[_0x80f9('0x30')]=_0xf65168['dialCongestionMaxRetry']||0x3;this[_0x80f9('0x31')]=_0xf65168[_0x80f9('0x31')]||0x96;this['dialBusyMaxRetry']=_0xf65168[_0x80f9('0x32')]||0x3;this[_0x80f9('0x33')]=_0xf65168[_0x80f9('0x33')]||0x96;this[_0x80f9('0x34')]=_0xf65168[_0x80f9('0x34')]||0x3;this[_0x80f9('0x35')]=_0xf65168[_0x80f9('0x35')]||0x96;this[_0x80f9('0x36')]=_0xf65168[_0x80f9('0x36')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0xf65168[_0x80f9('0x37')]||0x96;this[_0x80f9('0x38')]=_0xf65168[_0x80f9('0x38')]||0x3;this['dialDropRetryFrequency']=_0xf65168[_0x80f9('0x39')]||0x96;this['dialAbandonedMaxRetry']=_0xf65168['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0xf65168['dialAbandonedRetryFrequency']||0x96;this[_0x80f9('0x3a')]=_0xf65168['dialMachineMaxRetry']||0x3;this[_0x80f9('0x3b')]=_0xf65168[_0x80f9('0x3b')]||0x96;this[_0x80f9('0x3c')]=_0xf65168['dialAgentRejectMaxRetry']||0x3;this[_0x80f9('0x3d')]=_0xf65168[_0x80f9('0x3d')]||0x96;this[_0x80f9('0x3e')]=_0xf65168[_0x80f9('0x3e')]||0x3;this[_0x80f9('0x3f')]=_0xf65168[_0x80f9('0x3f')]||0x4;this[_0x80f9('0x40')]=_0xf65168[_0x80f9('0x40')]?_0xf65168[_0x80f9('0x40')]:undefined;this['TrunkBackup']=_0xf65168[_0x80f9('0x41')]?_0xf65168[_0x80f9('0x41')]:undefined;this['dialPrefix']=_0xf65168[_0x80f9('0x42')]||undefined;this[_0x80f9('0x43')]=_0xf65168[_0x80f9('0x43')]?_0xf65168['Interval']:undefined;this[_0x80f9('0x44')]=_0xf65168['dialOrderByScheduledAt']||_0x80f9('0x45');this[_0x80f9('0x46')]=_0xf65168[_0x80f9('0x46')]||undefined;this[_0x80f9('0x47')]=_0xf65168[_0x80f9('0x47')]||undefined;this[_0x80f9('0x48')]=strategy[_0xf65168['strategy']];this[_0x80f9('0x49')]=!![];this[_0x80f9('0x4a')]=_0xf65168[_0x80f9('0x4a')]||![];this[_0x80f9('0x4b')]=_0xf65168[_0x80f9('0x4b')];this[_0x80f9('0x4c')]=_0xf65168['dialAMDGreeting'];this[_0x80f9('0x4d')]=_0xf65168[_0x80f9('0x4d')];this['dialAMDTotalAnalysisTime']=_0xf65168[_0x80f9('0x4e')];this[_0x80f9('0x4f')]=_0xf65168[_0x80f9('0x4f')];this[_0x80f9('0x50')]=_0xf65168['dialAMDBetweenWordsSilence'];this[_0x80f9('0x51')]=_0xf65168[_0x80f9('0x51')];this['dialAMDSilenceThreshold']=_0xf65168['dialAMDSilenceThreshold'];this[_0x80f9('0x52')]=_0xf65168['dialAMDMaximumWordLength'];this[_0x80f9('0x53')]=0x0;this[_0x80f9('0x54')]=0x0;this['timeout']=_0xf65168['timeout'];this[_0x80f9('0x55')]=0x0;this[_0x80f9('0x56')]=0x0;this[_0x80f9('0x57')]=0x0;this[_0x80f9('0x58')]=0x0;this[_0x80f9('0x59')]=0x0;this[_0x80f9('0x5a')]=0x0;this[_0x80f9('0x5b')]=0x0;this[_0x80f9('0x5c')]=0x0;this[_0x80f9('0x5d')]=0x0;this[_0x80f9('0x5e')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x80f9('0x5f')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x80f9('0x60')]=undefined;this[_0x80f9('0x61')]=undefined;this[_0x80f9('0x62')]=undefined;this[_0x80f9('0x63')]=1.05;this[_0x80f9('0x64')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0x80f9('0x65')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x80f9('0x66')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x80f9('0x67')]=0x0;this[_0x80f9('0x68')]=0x0;this[_0x80f9('0x69')]=_0xf65168[_0x80f9('0x6a')]||0x14;this['predictiveIntervalMinThreshold']=_0xf65168['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x80f9('0x6b')]=0x0;this[_0x80f9('0x6c')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x80f9('0x6d')]=0x0;this[_0x80f9('0x6e')]=0x0;this[_0x80f9('0x6f')]=0x0;this['erlangBusyFactor']=0x0;this[_0x80f9('0x70')]=_0xf65168[_0x80f9('0x70')]||0x1e;this['dialRecallInQueue']=_0xf65168[_0x80f9('0x71')]||![];this[_0x80f9('0x72')]=!!_0xf65168['dialPreviewAutoRecallMe']||![];this[_0x80f9('0x73')]=!!_0xf65168[_0x80f9('0x73')]||![];this[_0x80f9('0x74')]=_0xf65168['dialQueueProject2']||undefined;this[_0x80f9('0x75')]=_0xf65168['dialAgiAfterHangupClient']||![];this[_0x80f9('0x76')]=_0xf65168[_0x80f9('0x76')]||![];this[_0x80f9('0x6')]=monitorFormat[_0xf65168['monitor_format']]?monitorFormat[_0xf65168[_0x80f9('0x6')]]:undefined;this[_0x80f9('0x77')]=_0xf65168[_0x80f9('0x77')]||![];this['mandatoryDispositionPause']=_0xf65168['mandatoryDispositionPause']?_0xf65168[_0x80f9('0x78')]:undefined;this[_0x80f9('0x79')]=![];}module[_0x80f9('0x7a')]=VoiceQueue;
\ No newline at end of file
+var _0xc55c=['dialGlobalInterval','dialActive','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav','wav49','gsm','leastrecent','linear','random','ringall','roundrobin','rrordered','wrandom','name','monitor_format','type','inbound','waiting','total','answered','sumHoldTime','sumBillable','unmanaged','abandoned','busy','inUse','invalid','onHold','paused','ringInUse','talking','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','dialTimezone'];(function(_0xc435ef,_0x147d6b){var _0x3f2487=function(_0x45c057){while(--_0x45c057){_0xc435ef['push'](_0xc435ef['shift']());}};_0x3f2487(++_0x147d6b);}(_0xc55c,0x1d1));var _0xcc55=function(_0x2eda24,_0x14757b){_0x2eda24=_0x2eda24-0x0;var _0x1ef80c=_0xc55c[_0x2eda24];return _0x1ef80c;};'use strict';var monitorFormat={'wav':_0xcc55('0x0'),'wav49':_0xcc55('0x1'),'gsm':_0xcc55('0x2')};var strategy={'fewestcalls':'fewestcalls','leastrecent':_0xcc55('0x3'),'linear':_0xcc55('0x4'),'random':_0xcc55('0x5'),'ringall':_0xcc55('0x6'),'rr':_0xcc55('0x7'),'rrmemory':'rrmemory','rrordered':_0xcc55('0x8'),'wrandom':_0xcc55('0x9')};function VoiceQueue(_0x33f398){this['id']=_0x33f398['id']||0x0;this[_0xcc55('0xa')]=_0x33f398[_0xcc55('0xa')]||'';this['monitor_format']=_0x33f398[_0xcc55('0xb')]||'';this[_0xcc55('0xc')]=_0x33f398['type']||_0xcc55('0xd');this[_0xcc55('0xe')]=0x0;this[_0xcc55('0xf')]=0x0;this[_0xcc55('0x10')]=0x0;this['sumDuration']=0x0;this[_0xcc55('0x11')]=0x0;this[_0xcc55('0x12')]=0x0;this[_0xcc55('0x13')]=0x0;this[_0xcc55('0x14')]=0x0;this['available']=0x0;this[_0xcc55('0x15')]=0x0;this[_0xcc55('0x16')]=0x0;this[_0xcc55('0x17')]=0x0;this['loggedIn']=0x0;this['notInUse']=0x0;this[_0xcc55('0x18')]=0x0;this[_0xcc55('0x19')]=0x0;this['ringing']=0x0;this[_0xcc55('0x1a')]=0x0;this[_0xcc55('0x1b')]=0x0;this['unavailable']=0x0;this[_0xcc55('0x1c')]=0x0;this[_0xcc55('0x1d')]=_0x33f398[_0xcc55('0x1d')]||![];this[_0xcc55('0x1e')]=_0x33f398[_0xcc55('0x1e')]||0xa;this[_0xcc55('0x1f')]=_0x33f398[_0xcc55('0x1f')]||'no';this[_0xcc55('0x20')]=!![];this['message']='';this['statusMessage']='';this[_0xcc55('0x21')]=0x0;this['temp']=0x0;this[_0xcc55('0x22')]=_0x33f398[_0xcc55('0x22')]||null;this[_0xcc55('0x23')]=_0x33f398[_0xcc55('0x23')]?_0x33f398['dialGlobalInterval']:null;this['dialActive']=_0x33f398[_0xcc55('0x24')];this['dialMethod']=_0x33f398['dialMethod']||_0xcc55('0x25');this[_0xcc55('0x26')]=_0x33f398[_0xcc55('0x26')]||0x0;this[_0xcc55('0x27')]=_0x33f398[_0xcc55('0x27')]||0x0;this[_0xcc55('0x28')]=_0x33f398[_0xcc55('0x28')]||0x1;this[_0xcc55('0x29')]=_0x33f398[_0xcc55('0x29')]||'dropRate';this[_0xcc55('0x2a')]=_0x33f398[_0xcc55('0x2a')]||0.03;this[_0xcc55('0x2b')]=_0x33f398[_0xcc55('0x2b')]||0x258;this[_0xcc55('0x2c')]=_0x33f398[_0xcc55('0x2c')]||_0xcc55('0x2d');this['dialOriginateCallerIdNumber']=_0x33f398['dialOriginateCallerIdNumber']||_0xcc55('0x2d');this['dialOriginateTimeout']=_0x33f398[_0xcc55('0x2e')]||0x1e;this[_0xcc55('0x2f')]=_0x33f398[_0xcc55('0x2f')]||'tTxX';this['dialQueueTimeout']=_0x33f398[_0xcc55('0x30')]||0x3;this['dialQueueProject']=_0x33f398[_0xcc55('0x31')]||undefined;this[_0xcc55('0x32')]=_0x33f398[_0xcc55('0x32')]||0x3;this[_0xcc55('0x33')]=_0x33f398[_0xcc55('0x33')]||0x96;this[_0xcc55('0x34')]=_0x33f398[_0xcc55('0x34')]||0x3;this['dialBusyRetryFrequency']=_0x33f398[_0xcc55('0x35')]||0x96;this[_0xcc55('0x36')]=_0x33f398[_0xcc55('0x36')]||0x3;this[_0xcc55('0x37')]=_0x33f398[_0xcc55('0x37')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x33f398[_0xcc55('0x38')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x33f398[_0xcc55('0x39')]||0x96;this[_0xcc55('0x3a')]=_0x33f398[_0xcc55('0x3a')]||0x3;this[_0xcc55('0x3b')]=_0x33f398[_0xcc55('0x3b')]||0x96;this['dialAbandonedMaxRetry']=_0x33f398[_0xcc55('0x3c')]||0x3;this[_0xcc55('0x3d')]=_0x33f398[_0xcc55('0x3d')]||0x96;this[_0xcc55('0x3e')]=_0x33f398[_0xcc55('0x3e')]||0x3;this[_0xcc55('0x3f')]=_0x33f398[_0xcc55('0x3f')]||0x96;this['dialAgentRejectMaxRetry']=_0x33f398[_0xcc55('0x40')]||0x3;this['dialAgentRejectRetryFrequency']=_0x33f398['dialAgentRejectRetryFrequency']||0x96;this[_0xcc55('0x41')]=_0x33f398[_0xcc55('0x41')]||0x3;this[_0xcc55('0x42')]=_0x33f398[_0xcc55('0x42')]||0x4;this[_0xcc55('0x43')]=_0x33f398[_0xcc55('0x43')]?_0x33f398[_0xcc55('0x43')]:undefined;this[_0xcc55('0x44')]=_0x33f398[_0xcc55('0x44')]?_0x33f398[_0xcc55('0x44')]:undefined;this[_0xcc55('0x45')]=_0x33f398[_0xcc55('0x45')]||undefined;this[_0xcc55('0x46')]=_0x33f398[_0xcc55('0x46')]?_0x33f398[_0xcc55('0x46')]:undefined;this[_0xcc55('0x47')]=_0x33f398[_0xcc55('0x47')]||'DESC';this[_0xcc55('0x48')]=_0x33f398[_0xcc55('0x48')]||undefined;this[_0xcc55('0x49')]=_0x33f398[_0xcc55('0x49')]||undefined;this[_0xcc55('0x4a')]=strategy[_0x33f398[_0xcc55('0x4a')]];this[_0xcc55('0x4b')]=!![];this[_0xcc55('0x4c')]=_0x33f398[_0xcc55('0x4c')]||![];this[_0xcc55('0x4d')]=_0x33f398[_0xcc55('0x4d')];this[_0xcc55('0x4e')]=_0x33f398[_0xcc55('0x4e')];this[_0xcc55('0x4f')]=_0x33f398[_0xcc55('0x4f')];this[_0xcc55('0x50')]=_0x33f398[_0xcc55('0x50')];this[_0xcc55('0x51')]=_0x33f398[_0xcc55('0x51')];this[_0xcc55('0x52')]=_0x33f398[_0xcc55('0x52')];this[_0xcc55('0x53')]=_0x33f398[_0xcc55('0x53')];this[_0xcc55('0x54')]=_0x33f398[_0xcc55('0x54')];this[_0xcc55('0x55')]=_0x33f398['dialAMDMaximumWordLength'];this[_0xcc55('0x56')]=0x0;this['pTalking']=0x0;this[_0xcc55('0x57')]=_0x33f398['timeout'];this[_0xcc55('0x58')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xcc55('0x59')]=0x0;this[_0xcc55('0x5a')]=0x0;this[_0xcc55('0x5b')]=0x0;this[_0xcc55('0x5c')]=0x0;this[_0xcc55('0x5d')]=0x0;this[_0xcc55('0x5e')]=0x0;this[_0xcc55('0x5f')]=0x0;this[_0xcc55('0x60')]=0x0;this[_0xcc55('0x61')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0xcc55('0x62')]=0x0;this[_0xcc55('0x63')]=0x0;this[_0xcc55('0x64')]=undefined;this[_0xcc55('0x65')]=undefined;this[_0xcc55('0x66')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0xcc55('0x67')]=0x0;this[_0xcc55('0x68')]=0x0;this[_0xcc55('0x69')]=0x0;this[_0xcc55('0x6a')]=0x0;this[_0xcc55('0x6b')]=0x0;this['predictiveIntervalPauses']=0x0;this['predictiveIntervalAvailable']=0x0;this[_0xcc55('0x6c')]=_0x33f398[_0xcc55('0x6d')]||0x14;this['predictiveIntervalMinThreshold']=_0x33f398[_0xcc55('0x6d')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xcc55('0x6e')]=0x1;this[_0xcc55('0x6f')]=0x0;this[_0xcc55('0x70')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0xcc55('0x71')]=0x0;this[_0xcc55('0x72')]=_0x33f398['dialRecallMeTimeout']||0x1e;this[_0xcc55('0x73')]=_0x33f398[_0xcc55('0x73')]||![];this[_0xcc55('0x74')]=!!_0x33f398[_0xcc55('0x74')]||![];this[_0xcc55('0x75')]=!!_0x33f398[_0xcc55('0x75')]||![];this[_0xcc55('0x76')]=_0x33f398[_0xcc55('0x76')]||undefined;this[_0xcc55('0x77')]=_0x33f398['dialAgiAfterHangupClient']||![];this[_0xcc55('0x78')]=_0x33f398[_0xcc55('0x78')]||![];this[_0xcc55('0xb')]=monitorFormat[_0x33f398[_0xcc55('0xb')]]?monitorFormat[_0x33f398[_0xcc55('0xb')]]:undefined;this[_0xcc55('0x79')]=_0x33f398[_0xcc55('0x79')]||![];this[_0xcc55('0x7a')]=_0x33f398['mandatoryDispositionPause']?_0x33f398[_0xcc55('0x7a')]:undefined;this[_0xcc55('0x7b')]=![];}module[_0xcc55('0x7c')]=VoiceQueue;
\ No newline at end of file
index a6ceb51..bb7f5cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','message','statusMessage','Trunk','active','loggedin','callers','online','incall','includes','status','booked','keys','length','queue','dialer','xcally-motion-preview','prototype','compareToInboundQueue','some','compareToOutboundQueue','updateReportFromOutboundQueue','preview','exports','available','loggedIn','loggedInDb','paused','ringing','talking','waiting','answered','inUse','originated','outboundAbandonedCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','pTalking','sumBillable','sumDuration','name','strategy','busy','invalid','onHold','notInUse','ringInUse','sumHoldTime','total','type','unavailable','unknown','unmanaged','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xb138,0x1dd));var _0x8b13=function(_0x469f68,_0x1c3949){_0x469f68=_0x469f68-0x0;var _0x5d629b=_0xb138[_0x469f68];return _0x5d629b;};'use strict';var INBOUND_COUNTERS=[_0x8b13('0x0'),_0x8b13('0x1'),_0x8b13('0x2'),_0x8b13('0x3'),_0x8b13('0x4'),_0x8b13('0x5'),_0x8b13('0x6')];var OUTBOUND_COUNTERS=['available',_0x8b13('0x7'),_0x8b13('0x8'),_0x8b13('0x1'),'loggedInDb',_0x8b13('0x9'),_0x8b13('0xa'),'outboundAnswerCallsDay',_0x8b13('0xb'),_0x8b13('0xc'),_0x8b13('0xd'),'outboundNoAnswerCallsDay',_0x8b13('0xe'),_0x8b13('0xf'),'outboundRejectCallsDay','outboundUnknownCallsDay',_0x8b13('0x3'),_0x8b13('0x10'),_0x8b13('0x5'),_0x8b13('0x11'),_0x8b13('0x12'),'total',_0x8b13('0x6')];function VoiceQueueSummary(_0xeee2cc){this['id']=_0xeee2cc['id'];this[_0x8b13('0x13')]=_0xeee2cc[_0x8b13('0x13')];this[_0x8b13('0x14')]=_0xeee2cc[_0x8b13('0x14')];this['abandoned']=_0xeee2cc['abandoned']||0x0;this[_0x8b13('0x7')]=_0xeee2cc[_0x8b13('0x7')]||0x0;this['available']=_0xeee2cc['available']||0x0;this['busy']=_0xeee2cc[_0x8b13('0x15')]||0x0;this[_0x8b13('0x8')]=_0xeee2cc[_0x8b13('0x8')]||0x0;this[_0x8b13('0x16')]=_0xeee2cc[_0x8b13('0x16')]||0x0;this['loggedIn']=_0xeee2cc[_0x8b13('0x1')]||0x0;this[_0x8b13('0x2')]=_0xeee2cc[_0x8b13('0x2')]||0x0;this[_0x8b13('0x17')]=_0xeee2cc[_0x8b13('0x17')]||0x0;this[_0x8b13('0x18')]=_0xeee2cc[_0x8b13('0x18')]||0x0;this[_0x8b13('0x3')]=_0xeee2cc['paused']||0x0;this['ringing']=_0xeee2cc[_0x8b13('0x4')]||0x0;this[_0x8b13('0x19')]=_0xeee2cc[_0x8b13('0x19')];this[_0x8b13('0x11')]=_0xeee2cc[_0x8b13('0x11')];this[_0x8b13('0x12')]=_0xeee2cc['sumDuration'];this[_0x8b13('0x1a')]=_0xeee2cc[_0x8b13('0x1a')]||0x0;this[_0x8b13('0x5')]=_0xeee2cc['talking']||0x0;this['total']=_0xeee2cc[_0x8b13('0x1b')]||0x0;this[_0x8b13('0x1c')]=_0xeee2cc['type'];this[_0x8b13('0x1d')]=_0xeee2cc[_0x8b13('0x1d')]||0x0;this[_0x8b13('0x1e')]=_0xeee2cc[_0x8b13('0x1e')]||0x0;this[_0x8b13('0x1f')]=_0xeee2cc['unmanaged']||0x0;this[_0x8b13('0x6')]=_0xeee2cc[_0x8b13('0x6')]||0x0;if(_0xeee2cc['type']===_0x8b13('0x20')){this['pTalking']=_0xeee2cc[_0x8b13('0x10')]||0x0;this[_0x8b13('0x21')]=_0xeee2cc['dialActive'];this[_0x8b13('0x22')]=_0xeee2cc[_0x8b13('0x22')];this['dialOriginateCallerIdName']=_0xeee2cc[_0x8b13('0x23')];this[_0x8b13('0x24')]=_0xeee2cc[_0x8b13('0x24')];this[_0x8b13('0x25')]=_0xeee2cc[_0x8b13('0x25')];this['dialPrefix']=_0xeee2cc[_0x8b13('0x26')];this[_0x8b13('0x27')]=_0xeee2cc[_0x8b13('0x27')];this[_0x8b13('0x28')]=_0xeee2cc[_0x8b13('0x28')];this[_0x8b13('0x29')]=_0xeee2cc['outboundAnswerCallsDay'];this[_0x8b13('0xb')]=_0xeee2cc[_0x8b13('0xb')];this[_0x8b13('0xc')]=_0xeee2cc[_0x8b13('0xc')];this[_0x8b13('0xd')]=_0xeee2cc[_0x8b13('0xd')];this[_0x8b13('0x2a')]=_0xeee2cc[_0x8b13('0x2a')];this[_0x8b13('0x2b')]=_0xeee2cc['outboundDropCallsDayCallersExit'];this[_0x8b13('0x2c')]=_0xeee2cc[_0x8b13('0x2c')];this[_0x8b13('0x2d')]=_0xeee2cc[_0x8b13('0x2d')];this['outboundNoSuchCallsDay']=_0xeee2cc['outboundNoSuchCallsDay'];this[_0x8b13('0x2e')]=_0xeee2cc['outboundOriginateFailureCallsDay'];this['outboundReCallsDay']=_0xeee2cc[_0x8b13('0xf')];this['outboundRejectCallsDay']=_0xeee2cc[_0x8b13('0x2f')];this[_0x8b13('0x30')]=_0xeee2cc[_0x8b13('0x30')];this[_0x8b13('0x31')]=_0xeee2cc[_0x8b13('0x31')];this[_0x8b13('0x32')]=_0xeee2cc[_0x8b13('0x32')];this[_0x8b13('0x33')]=_0xeee2cc[_0x8b13('0x33')];this[_0x8b13('0x34')]=_0xeee2cc['predictiveIntervalDroppedCallsCallersExit'];this[_0x8b13('0x35')]=_0xeee2cc[_0x8b13('0x35')];this[_0x8b13('0x36')]=_0xeee2cc[_0x8b13('0x36')];this[_0x8b13('0x37')]=_0xeee2cc[_0x8b13('0x37')];this[_0x8b13('0x38')]=_0xeee2cc[_0x8b13('0x38')];this['predictiveIntervalMultiplicativeFactor']=_0xeee2cc[_0x8b13('0x39')];this['predictiveIntervalPauses']=_0xeee2cc[_0x8b13('0x3a')];this[_0x8b13('0x3b')]=_0xeee2cc[_0x8b13('0x3b')];this[_0x8b13('0x3c')]=_0xeee2cc[_0x8b13('0x3c')];this[_0x8b13('0x9')]=_0xeee2cc['originated'];this['erlangCalls']=_0xeee2cc[_0x8b13('0x3d')];this['erlangCallToSecond']=_0xeee2cc[_0x8b13('0x3e')];this['erlangAbandonmentRate']=_0xeee2cc[_0x8b13('0x3f')];this[_0x8b13('0x40')]=_0xeee2cc[_0x8b13('0x40')];this[_0x8b13('0x41')]=_0xeee2cc[_0x8b13('0x41')];this['startProgressive']=_0xeee2cc['startProgressive'];this[_0x8b13('0x42')]=_0xeee2cc['message'];this[_0x8b13('0x43')]=_0xeee2cc[_0x8b13('0x43')];}if(_0xeee2cc['Trunk']){this[_0x8b13('0x44')]={'id':_0xeee2cc[_0x8b13('0x44')]['id'],'name':_0xeee2cc[_0x8b13('0x44')][_0x8b13('0x13')],'active':_0xeee2cc[_0x8b13('0x44')][_0x8b13('0x45')],'callerid':_0xeee2cc[_0x8b13('0x44')]['callerid']};}}VoiceQueueSummary['prototype']['createReport']=function(_0x3eb3c5,_0x16ec3,_0x27cfe5,_0x3968bf){this[_0x8b13('0x2')]=0x0;this[_0x8b13('0x5')]=0x0;this['paused']=0x0;this[_0x8b13('0x1e')]=0x0;this['notInUse']=0x0;this[_0x8b13('0x8')]=0x0;this['busy']=0x0;this[_0x8b13('0x16')]=0x0;this[_0x8b13('0x1d')]=0x0;this[_0x8b13('0x4')]=0x0;this[_0x8b13('0x19')]=0x0;this[_0x8b13('0x17')]=0x0;if(_0x27cfe5){if(_0x27cfe5[_0x8b13('0x0')]){this[_0x8b13('0x0')]=Number(_0x27cfe5['available']);}if(_0x27cfe5['loggedin']){this['loggedIn']=Number(_0x27cfe5[_0x8b13('0x46')]);}if(_0x27cfe5[_0x8b13('0x47')]){this[_0x8b13('0x6')]=Number(_0x27cfe5[_0x8b13('0x47')]);}}for(var _0x4a4018=0x0;_0x4a4018<_0x3eb3c5['length'];_0x4a4018++){var _0x3f420d=_0x16ec3['SIP/'+_0x3eb3c5[_0x4a4018][_0x8b13('0x13')]];if(_0x3f420d&&_0x3f420d[_0x8b13('0x48')]){this[_0x8b13('0x2')]+=0x1;}if(_0x3eb3c5[_0x4a4018][_0x8b13('0x49')]==='1'){this[_0x8b13('0x5')]+=0x1;}if(_0x3eb3c5[_0x4a4018]['paused']==='1'&&!['2','7','8'][_0x8b13('0x4a')](_0x3eb3c5[_0x4a4018][_0x8b13('0x4b')])){this[_0x8b13('0x3')]+=0x1;}switch(_0x3eb3c5[_0x4a4018][_0x8b13('0x4b')]){case'0':this[_0x8b13('0x1e')]+=0x1;break;case'1':this[_0x8b13('0x18')]+=0x1;break;case'2':this[_0x8b13('0x8')]+=0x1;break;case'3':this[_0x8b13('0x15')]+=0x1;break;case'4':this[_0x8b13('0x16')]+=0x1;break;case'5':this['unavailable']+=0x1;break;case'6':this[_0x8b13('0x4')]+=0x1;break;case'7':this['ringInUse']+=0x1;break;case'8':this[_0x8b13('0x17')]+=0x1;break;}}if(this[_0x8b13('0x22')]===_0x8b13('0x4c')){var _0x5d9ddb=Object[_0x8b13('0x4d')](_0x3968bf);for(var _0x35f612=0x0;_0x35f612<_0x5d9ddb[_0x8b13('0x4e')];_0x35f612++){var _0x4129c0=_0x5d9ddb[_0x35f612];var _0x2d1e98=_0x3968bf[_0x4129c0];if(_0x2d1e98[_0x8b13('0x4f')]===this[_0x8b13('0x13')]&&_0x2d1e98['type']===_0x8b13('0x50')&&_0x2d1e98['exten']===_0x8b13('0x51')){this[_0x8b13('0x5')]+=0x1;}}if(this[_0x8b13('0x5')]>this[_0x8b13('0x8')]){this[_0x8b13('0x5')]=this[_0x8b13('0x8')];}this[_0x8b13('0x10')]=0x0;}return this;};VoiceQueueSummary[_0x8b13('0x52')][_0x8b13('0x53')]=function(_0xce98f7){var _0x14d456=![];if(_0xce98f7){_0x14d456=INBOUND_COUNTERS[_0x8b13('0x54')](function(_0xd55f3b){return this[_0xd55f3b]!==_0xce98f7[_0xd55f3b];},this);}return _0x14d456;};VoiceQueueSummary[_0x8b13('0x52')][_0x8b13('0x55')]=function(_0x32e40e){var _0xa1942a=![];var _0x50c354=![];var _0x1699c6=![];if(_0x32e40e){_0xa1942a=this[_0x8b13('0x22')]!==_0x32e40e['dialMethod']||this[_0x8b13('0x21')]!==_0x32e40e[_0x8b13('0x21')]||this[_0x8b13('0x42')]!==_0x32e40e[_0x8b13('0x42')]||this[_0x8b13('0x43')]!==_0x32e40e[_0x8b13('0x43')];_0x50c354=OUTBOUND_COUNTERS[_0x8b13('0x54')](function(_0x39984a){return this[_0x39984a]!==_0x32e40e[_0x39984a];},this);if(this[_0x8b13('0x44')]&&_0x32e40e[_0x8b13('0x44')]){_0x1699c6=this[_0x8b13('0x44')][_0x8b13('0x13')]!==_0x32e40e[_0x8b13('0x44')][_0x8b13('0x13')]||this[_0x8b13('0x44')]['active']!==_0x32e40e[_0x8b13('0x44')][_0x8b13('0x45')];}}return _0xa1942a||_0x50c354||_0x1699c6;};VoiceQueueSummary['prototype'][_0x8b13('0x56')]=function(_0x73aba5){this[_0x8b13('0x7')]=_0x73aba5[_0x8b13('0x7')];this[_0x8b13('0x42')]=_0x73aba5['message'];this[_0x8b13('0x43')]=_0x73aba5[_0x8b13('0x43')];this[_0x8b13('0x9')]=_0x73aba5['originated'];this[_0x8b13('0xa')]=_0x73aba5[_0x8b13('0xa')];this['outboundAnswerCallsDay']=_0x73aba5[_0x8b13('0x29')];this[_0x8b13('0xb')]=_0x73aba5[_0x8b13('0xb')];this[_0x8b13('0xc')]=_0x73aba5['outboundBusyCallsDay'];this[_0x8b13('0xd')]=_0x73aba5[_0x8b13('0xd')];this['outboundNoAnswerCallsDay']=_0x73aba5[_0x8b13('0x2d')];this[_0x8b13('0xe')]=_0x73aba5[_0x8b13('0xe')];this[_0x8b13('0xf')]=_0x73aba5['outboundReCallsDay'];this[_0x8b13('0x2f')]=_0x73aba5[_0x8b13('0x2f')];this[_0x8b13('0x30')]=_0x73aba5[_0x8b13('0x30')];this[_0x8b13('0x11')]=_0x73aba5[_0x8b13('0x11')];this['sumDuration']=_0x73aba5[_0x8b13('0x12')];this[_0x8b13('0x1b')]=_0x73aba5[_0x8b13('0x1b')];if(this['dialMethod']===_0x8b13('0x57')){this[_0x8b13('0x10')]=_0x73aba5[_0x8b13('0x10')];}};module[_0x8b13('0x58')]=VoiceQueueSummary;
\ No newline at end of file
+var _0xb7b6=['loggedIn','ringing','talking','answered','loggedInDb','originated','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','sumBillable','sumDuration','total','waiting','name','strategy','abandoned','busy','invalid','onHold','notInUse','paused','ringInUse','sumHoldTime','type','unavailable','unknown','unmanaged','outbound','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk','active','prototype','createReport','loggedin','callers','length','SIP/','online','incall','status','keys','dialer','exten','xcally-motion-preview','inUse','compareToInboundQueue','compareToOutboundQueue','some','preview','exports','available'];(function(_0xec722a,_0x354472){var _0xbb0f9e=function(_0x2a017b){while(--_0x2a017b){_0xec722a['push'](_0xec722a['shift']());}};_0xbb0f9e(++_0x354472);}(_0xb7b6,0x15f));var _0x6b7b=function(_0xc25799,_0x1a4a76){_0xc25799=_0xc25799-0x0;var _0x37fab2=_0xb7b6[_0xc25799];return _0x37fab2;};'use strict';var INBOUND_COUNTERS=[_0x6b7b('0x0'),_0x6b7b('0x1'),'loggedInDb','paused',_0x6b7b('0x2'),_0x6b7b('0x3'),'waiting'];var OUTBOUND_COUNTERS=[_0x6b7b('0x0'),_0x6b7b('0x4'),'inUse','loggedIn',_0x6b7b('0x5'),_0x6b7b('0x6'),_0x6b7b('0x7'),_0x6b7b('0x8'),_0x6b7b('0x9'),'outboundBusyCallsDay','outboundCongestionCallsDay',_0x6b7b('0xa'),_0x6b7b('0xb'),_0x6b7b('0xc'),_0x6b7b('0xd'),'outboundUnknownCallsDay','paused','pTalking',_0x6b7b('0x3'),_0x6b7b('0xe'),_0x6b7b('0xf'),_0x6b7b('0x10'),_0x6b7b('0x11')];function VoiceQueueSummary(_0x2e84d5){this['id']=_0x2e84d5['id'];this['name']=_0x2e84d5[_0x6b7b('0x12')];this[_0x6b7b('0x13')]=_0x2e84d5['strategy'];this[_0x6b7b('0x14')]=_0x2e84d5[_0x6b7b('0x14')]||0x0;this['answered']=_0x2e84d5[_0x6b7b('0x4')]||0x0;this['available']=_0x2e84d5[_0x6b7b('0x0')]||0x0;this[_0x6b7b('0x15')]=_0x2e84d5[_0x6b7b('0x15')]||0x0;this['inUse']=_0x2e84d5['inUse']||0x0;this[_0x6b7b('0x16')]=_0x2e84d5['invalid']||0x0;this['loggedIn']=_0x2e84d5[_0x6b7b('0x1')]||0x0;this[_0x6b7b('0x5')]=_0x2e84d5['loggedInDb']||0x0;this[_0x6b7b('0x17')]=_0x2e84d5[_0x6b7b('0x17')]||0x0;this[_0x6b7b('0x18')]=_0x2e84d5[_0x6b7b('0x18')]||0x0;this['paused']=_0x2e84d5[_0x6b7b('0x19')]||0x0;this[_0x6b7b('0x2')]=_0x2e84d5[_0x6b7b('0x2')]||0x0;this[_0x6b7b('0x1a')]=_0x2e84d5[_0x6b7b('0x1a')];this[_0x6b7b('0xe')]=_0x2e84d5[_0x6b7b('0xe')];this[_0x6b7b('0xf')]=_0x2e84d5['sumDuration'];this['sumHoldTime']=_0x2e84d5[_0x6b7b('0x1b')]||0x0;this['talking']=_0x2e84d5['talking']||0x0;this['total']=_0x2e84d5['total']||0x0;this[_0x6b7b('0x1c')]=_0x2e84d5[_0x6b7b('0x1c')];this['unavailable']=_0x2e84d5[_0x6b7b('0x1d')]||0x0;this[_0x6b7b('0x1e')]=_0x2e84d5['unknown']||0x0;this[_0x6b7b('0x1f')]=_0x2e84d5[_0x6b7b('0x1f')]||0x0;this[_0x6b7b('0x11')]=_0x2e84d5[_0x6b7b('0x11')]||0x0;if(_0x2e84d5[_0x6b7b('0x1c')]===_0x6b7b('0x20')){this[_0x6b7b('0x21')]=_0x2e84d5[_0x6b7b('0x21')]||0x0;this[_0x6b7b('0x22')]=_0x2e84d5[_0x6b7b('0x22')];this[_0x6b7b('0x23')]=_0x2e84d5[_0x6b7b('0x23')];this[_0x6b7b('0x24')]=_0x2e84d5[_0x6b7b('0x24')];this[_0x6b7b('0x25')]=_0x2e84d5['dialOriginateCallerIdNumber'];this['dialOriginateTimeout']=_0x2e84d5[_0x6b7b('0x26')];this[_0x6b7b('0x27')]=_0x2e84d5[_0x6b7b('0x27')];this['temp']=_0x2e84d5[_0x6b7b('0x28')];this['outboundAnswerAgiCallsDay']=_0x2e84d5[_0x6b7b('0x29')];this[_0x6b7b('0x8')]=_0x2e84d5[_0x6b7b('0x8')];this[_0x6b7b('0x9')]=_0x2e84d5['outboundBlacklistCallsDay'];this['outboundBusyCallsDay']=_0x2e84d5[_0x6b7b('0x2a')];this[_0x6b7b('0x2b')]=_0x2e84d5[_0x6b7b('0x2b')];this[_0x6b7b('0x2c')]=_0x2e84d5[_0x6b7b('0x2c')];this[_0x6b7b('0x2d')]=_0x2e84d5[_0x6b7b('0x2d')];this['outboundDropCallsDayTimeout']=_0x2e84d5['outboundDropCallsDayTimeout'];this[_0x6b7b('0xa')]=_0x2e84d5[_0x6b7b('0xa')];this[_0x6b7b('0xb')]=_0x2e84d5[_0x6b7b('0xb')];this['outboundOriginateFailureCallsDay']=_0x2e84d5['outboundOriginateFailureCallsDay'];this[_0x6b7b('0xc')]=_0x2e84d5[_0x6b7b('0xc')];this['outboundRejectCallsDay']=_0x2e84d5[_0x6b7b('0xd')];this[_0x6b7b('0x2e')]=_0x2e84d5[_0x6b7b('0x2e')];this[_0x6b7b('0x2f')]=_0x2e84d5[_0x6b7b('0x2f')];this['predictiveIntervalAvgHoldtime']=_0x2e84d5[_0x6b7b('0x30')];this[_0x6b7b('0x31')]=_0x2e84d5[_0x6b7b('0x31')];this['predictiveIntervalDroppedCallsCallersExit']=_0x2e84d5[_0x6b7b('0x32')];this[_0x6b7b('0x33')]=_0x2e84d5[_0x6b7b('0x33')];this['predictiveIntervalErlangCalls']=_0x2e84d5[_0x6b7b('0x34')];this[_0x6b7b('0x35')]=_0x2e84d5[_0x6b7b('0x35')];this[_0x6b7b('0x36')]=_0x2e84d5[_0x6b7b('0x36')];this['predictiveIntervalMultiplicativeFactor']=_0x2e84d5[_0x6b7b('0x37')];this[_0x6b7b('0x38')]=_0x2e84d5[_0x6b7b('0x38')];this[_0x6b7b('0x39')]=_0x2e84d5[_0x6b7b('0x39')];this[_0x6b7b('0x3a')]=_0x2e84d5[_0x6b7b('0x3a')];this[_0x6b7b('0x6')]=_0x2e84d5[_0x6b7b('0x6')];this['erlangCalls']=_0x2e84d5[_0x6b7b('0x3b')];this[_0x6b7b('0x3c')]=_0x2e84d5[_0x6b7b('0x3c')];this[_0x6b7b('0x3d')]=_0x2e84d5[_0x6b7b('0x3d')];this[_0x6b7b('0x3e')]=_0x2e84d5[_0x6b7b('0x3e')];this['startPredictive']=_0x2e84d5[_0x6b7b('0x3f')];this[_0x6b7b('0x40')]=_0x2e84d5[_0x6b7b('0x40')];this[_0x6b7b('0x41')]=_0x2e84d5[_0x6b7b('0x41')];this[_0x6b7b('0x42')]=_0x2e84d5[_0x6b7b('0x42')];}if(_0x2e84d5[_0x6b7b('0x43')]){this[_0x6b7b('0x43')]={'id':_0x2e84d5[_0x6b7b('0x43')]['id'],'name':_0x2e84d5[_0x6b7b('0x43')]['name'],'active':_0x2e84d5[_0x6b7b('0x43')][_0x6b7b('0x44')],'callerid':_0x2e84d5[_0x6b7b('0x43')]['callerid']};}}VoiceQueueSummary[_0x6b7b('0x45')][_0x6b7b('0x46')]=function(_0x977f15,_0x56c4bb,_0x190578,_0x2cecad){this['loggedInDb']=0x0;this[_0x6b7b('0x3')]=0x0;this[_0x6b7b('0x19')]=0x0;this[_0x6b7b('0x1e')]=0x0;this[_0x6b7b('0x18')]=0x0;this['inUse']=0x0;this['busy']=0x0;this[_0x6b7b('0x16')]=0x0;this[_0x6b7b('0x1d')]=0x0;this[_0x6b7b('0x2')]=0x0;this['ringInUse']=0x0;this['onHold']=0x0;if(_0x190578){if(_0x190578[_0x6b7b('0x0')]){this[_0x6b7b('0x0')]=Number(_0x190578[_0x6b7b('0x0')]);}if(_0x190578[_0x6b7b('0x47')]){this[_0x6b7b('0x1')]=Number(_0x190578[_0x6b7b('0x47')]);}if(_0x190578['callers']){this['waiting']=Number(_0x190578[_0x6b7b('0x48')]);}}for(var _0x26a4d0=0x0;_0x26a4d0<_0x977f15[_0x6b7b('0x49')];_0x26a4d0++){var _0x215a9d=_0x56c4bb[_0x6b7b('0x4a')+_0x977f15[_0x26a4d0][_0x6b7b('0x12')]];if(_0x215a9d&&_0x215a9d[_0x6b7b('0x4b')]){this[_0x6b7b('0x5')]+=0x1;}if(_0x977f15[_0x26a4d0][_0x6b7b('0x4c')]==='1'){this[_0x6b7b('0x3')]+=0x1;}if(_0x977f15[_0x26a4d0][_0x6b7b('0x19')]==='1'&&!['2','7','8']['includes'](_0x977f15[_0x26a4d0][_0x6b7b('0x4d')])){this[_0x6b7b('0x19')]+=0x1;}switch(_0x977f15[_0x26a4d0][_0x6b7b('0x4d')]){case'0':this['unknown']+=0x1;break;case'1':this['notInUse']+=0x1;break;case'2':this['inUse']+=0x1;break;case'3':this['busy']+=0x1;break;case'4':this['invalid']+=0x1;break;case'5':this['unavailable']+=0x1;break;case'6':this[_0x6b7b('0x2')]+=0x1;break;case'7':this[_0x6b7b('0x1a')]+=0x1;break;case'8':this['onHold']+=0x1;break;}}if(this['dialMethod']==='booked'){var _0x4d32b5=Object[_0x6b7b('0x4e')](_0x2cecad);for(var _0x52cee4=0x0;_0x52cee4<_0x4d32b5['length'];_0x52cee4++){var _0x4113b1=_0x4d32b5[_0x52cee4];var _0x5df3b2=_0x2cecad[_0x4113b1];if(_0x5df3b2['queue']===this[_0x6b7b('0x12')]&&_0x5df3b2[_0x6b7b('0x1c')]===_0x6b7b('0x4f')&&_0x5df3b2[_0x6b7b('0x50')]===_0x6b7b('0x51')){this[_0x6b7b('0x3')]+=0x1;}}if(this[_0x6b7b('0x3')]>this[_0x6b7b('0x52')]){this[_0x6b7b('0x3')]=this['inUse'];}this[_0x6b7b('0x21')]=0x0;}return this;};VoiceQueueSummary[_0x6b7b('0x45')][_0x6b7b('0x53')]=function(_0x523884){var _0x3ba088=![];if(_0x523884){_0x3ba088=INBOUND_COUNTERS['some'](function(_0x55b02f){return this[_0x55b02f]!==_0x523884[_0x55b02f];},this);}return _0x3ba088;};VoiceQueueSummary[_0x6b7b('0x45')][_0x6b7b('0x54')]=function(_0x107afd){var _0xe09973=![];var _0xac909d=![];var _0x46e974=![];if(_0x107afd){_0xe09973=this[_0x6b7b('0x23')]!==_0x107afd[_0x6b7b('0x23')]||this[_0x6b7b('0x22')]!==_0x107afd[_0x6b7b('0x22')]||this[_0x6b7b('0x41')]!==_0x107afd['message']||this[_0x6b7b('0x42')]!==_0x107afd[_0x6b7b('0x42')];_0xac909d=OUTBOUND_COUNTERS[_0x6b7b('0x55')](function(_0x416caa){return this[_0x416caa]!==_0x107afd[_0x416caa];},this);if(this['Trunk']&&_0x107afd[_0x6b7b('0x43')]){_0x46e974=this[_0x6b7b('0x43')][_0x6b7b('0x12')]!==_0x107afd[_0x6b7b('0x43')][_0x6b7b('0x12')]||this['Trunk'][_0x6b7b('0x44')]!==_0x107afd['Trunk'][_0x6b7b('0x44')];}}return _0xe09973||_0xac909d||_0x46e974;};VoiceQueueSummary[_0x6b7b('0x45')]['updateReportFromOutboundQueue']=function(_0x3dc01a){this[_0x6b7b('0x4')]=_0x3dc01a[_0x6b7b('0x4')];this[_0x6b7b('0x41')]=_0x3dc01a['message'];this[_0x6b7b('0x42')]=_0x3dc01a['statusMessage'];this['originated']=_0x3dc01a[_0x6b7b('0x6')];this['outboundAbandonedCallsDay']=_0x3dc01a[_0x6b7b('0x7')];this[_0x6b7b('0x8')]=_0x3dc01a[_0x6b7b('0x8')];this[_0x6b7b('0x9')]=_0x3dc01a[_0x6b7b('0x9')];this[_0x6b7b('0x2a')]=_0x3dc01a[_0x6b7b('0x2a')];this[_0x6b7b('0x2b')]=_0x3dc01a[_0x6b7b('0x2b')];this['outboundNoAnswerCallsDay']=_0x3dc01a[_0x6b7b('0xa')];this[_0x6b7b('0xb')]=_0x3dc01a[_0x6b7b('0xb')];this[_0x6b7b('0xc')]=_0x3dc01a[_0x6b7b('0xc')];this[_0x6b7b('0xd')]=_0x3dc01a[_0x6b7b('0xd')];this[_0x6b7b('0x2e')]=_0x3dc01a['outboundUnknownCallsDay'];this['sumBillable']=_0x3dc01a[_0x6b7b('0xe')];this['sumDuration']=_0x3dc01a[_0x6b7b('0xf')];this['total']=_0x3dc01a[_0x6b7b('0x10')];if(this[_0x6b7b('0x23')]===_0x6b7b('0x56')){this[_0x6b7b('0x21')]=_0x3dc01a[_0x6b7b('0x21')];}};module[_0x6b7b('0x57')]=VoiceQueueSummary;
\ No newline at end of file
index 9dfe478..806ca1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe20=['username','accessKey','serverUrl','Configurations','exports','name'];(function(_0x3dab4d,_0x2a5813){var _0x2eec5e=function(_0x113428){while(--_0x113428){_0x3dab4d['push'](_0x3dab4d['shift']());}};_0x2eec5e(++_0x2a5813);}(_0xfe20,0x11f));var _0x0fe2=function(_0xfc6f7d,_0x47609f){_0xfc6f7d=_0xfc6f7d-0x0;var _0x323aa8=_0xfe20[_0xfc6f7d];return _0x323aa8;};'use strict';function VtigerAccount(_0x50c6e2){this['id']=_0x50c6e2['id']||0x0;this['name']=_0x50c6e2[_0x0fe2('0x0')]||'';this['username']=_0x50c6e2[_0x0fe2('0x1')]||'';this[_0x0fe2('0x2')]=_0x50c6e2['accessKey']||'';this['remoteUri']=_0x50c6e2['remoteUri']||'';this[_0x0fe2('0x3')]=_0x50c6e2[_0x0fe2('0x3')]||'';this[_0x0fe2('0x4')]=_0x50c6e2[_0x0fe2('0x4')]||{};}module[_0x0fe2('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0xa292=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x2e5322,_0x26ed87){var _0x1348f8=function(_0x18d854){while(--_0x18d854){_0x2e5322['push'](_0x2e5322['shift']());}};_0x1348f8(++_0x26ed87);}(_0xa292,0x7f));var _0x2a29=function(_0x3d5f84,_0x569548){_0x3d5f84=_0x3d5f84-0x0;var _0x1981b8=_0xa292[_0x3d5f84];return _0x1981b8;};'use strict';function VtigerAccount(_0x48dca0){this['id']=_0x48dca0['id']||0x0;this['name']=_0x48dca0[_0x2a29('0x0')]||'';this[_0x2a29('0x1')]=_0x48dca0[_0x2a29('0x1')]||'';this[_0x2a29('0x2')]=_0x48dca0[_0x2a29('0x2')]||'';this[_0x2a29('0x3')]=_0x48dca0[_0x2a29('0x3')]||'';this[_0x2a29('0x4')]=_0x48dca0[_0x2a29('0x4')]||'';this['Configurations']=_0x48dca0[_0x2a29('0x5')]||{};}module[_0x2a29('0x6')]=VtigerAccount;
\ No newline at end of file
index b08f384..2b022cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd7=['Configurations','exports','username','password','token','remoteUri','authType','type','integrationTab','serverUrl'];(function(_0x581b83,_0x202509){var _0x35004a=function(_0x5153d0){while(--_0x5153d0){_0x581b83['push'](_0x581b83['shift']());}};_0x35004a(++_0x202509);}(_0x5cd7,0x1b0));var _0x75cd=function(_0x298064,_0x1d2bfb){_0x298064=_0x298064-0x0;var _0x2512ea=_0x5cd7[_0x298064];return _0x2512ea;};'use strict';function ZendeskAccount(_0x4a27a8){this['id']=_0x4a27a8['id']||0x0;this['name']=_0x4a27a8['name']||'';this[_0x75cd('0x0')]=_0x4a27a8['username']||'';this[_0x75cd('0x1')]=_0x4a27a8[_0x75cd('0x1')]||'';this[_0x75cd('0x2')]=_0x4a27a8[_0x75cd('0x2')]||'';this[_0x75cd('0x3')]=_0x4a27a8[_0x75cd('0x3')]||'';this['authType']=_0x4a27a8[_0x75cd('0x4')]||'';this[_0x75cd('0x5')]=_0x4a27a8[_0x75cd('0x5')]||_0x75cd('0x6');this[_0x75cd('0x7')]=_0x4a27a8[_0x75cd('0x7')]||'';this[_0x75cd('0x8')]=_0x4a27a8['Configurations']||{};}module[_0x75cd('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0xdee1=['password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','name','username'];(function(_0x23833f,_0x2a89cf){var _0x3c395c=function(_0x17a4c6){while(--_0x17a4c6){_0x23833f['push'](_0x23833f['shift']());}};_0x3c395c(++_0x2a89cf);}(_0xdee1,0x1e8));var _0x1dee=function(_0x5dbb2,_0x1e3317){_0x5dbb2=_0x5dbb2-0x0;var _0x4ba922=_0xdee1[_0x5dbb2];return _0x4ba922;};'use strict';function ZendeskAccount(_0x17d1b9){this['id']=_0x17d1b9['id']||0x0;this['name']=_0x17d1b9[_0x1dee('0x0')]||'';this[_0x1dee('0x1')]=_0x17d1b9[_0x1dee('0x1')]||'';this[_0x1dee('0x2')]=_0x17d1b9[_0x1dee('0x2')]||'';this['token']=_0x17d1b9[_0x1dee('0x3')]||'';this[_0x1dee('0x4')]=_0x17d1b9[_0x1dee('0x4')]||'';this['authType']=_0x17d1b9[_0x1dee('0x5')]||'';this[_0x1dee('0x6')]=_0x17d1b9[_0x1dee('0x6')]||_0x1dee('0x7');this[_0x1dee('0x8')]=_0x17d1b9[_0x1dee('0x8')]||'';this[_0x1dee('0x9')]=_0x17d1b9['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index c2ba208..7abbd85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb24=['exports','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xcb24,0x85));var _0x4cb2=function(_0x275f8f,_0x3bac43){_0x275f8f=_0x275f8f-0x0;var _0x58f3aa=_0xcb24[_0x275f8f];return _0x58f3aa;};'use strict';function ZohoAccount(_0x4821da){this['id']=_0x4821da['id']||0x0;this[_0x4cb2('0x0')]=_0x4821da[_0x4cb2('0x0')]||'';this[_0x4cb2('0x1')]=_0x4821da['description']||'';this[_0x4cb2('0x2')]=_0x4821da['host']||'';this[_0x4cb2('0x3')]=_0x4821da['zone']||'';this[_0x4cb2('0x4')]=_0x4821da['clientId']||'';this[_0x4cb2('0x5')]=_0x4821da[_0x4cb2('0x5')]||'';this[_0x4cb2('0x6')]=_0x4821da['serverUrl']||'';this[_0x4cb2('0x7')]=_0x4821da[_0x4cb2('0x7')]||'';this[_0x4cb2('0x8')]=_0x4821da[_0x4cb2('0x8')]||'';this[_0x4cb2('0x9')]=_0x4821da['Configurations']||{};}module[_0x4cb2('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x286a=['Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x286a,0x10a));var _0xa286=function(_0x59adef,_0x187a53){_0x59adef=_0x59adef-0x0;var _0x280a55=_0x286a[_0x59adef];return _0x280a55;};'use strict';function ZohoAccount(_0x4f4476){this['id']=_0x4f4476['id']||0x0;this[_0xa286('0x0')]=_0x4f4476[_0xa286('0x0')]||'';this[_0xa286('0x1')]=_0x4f4476[_0xa286('0x1')]||'';this[_0xa286('0x2')]=_0x4f4476[_0xa286('0x2')]||'';this['zone']=_0x4f4476[_0xa286('0x3')]||'';this[_0xa286('0x4')]=_0x4f4476[_0xa286('0x4')]||'';this[_0xa286('0x5')]=_0x4f4476['clientSecret']||'';this[_0xa286('0x6')]=_0x4f4476[_0xa286('0x6')]||'';this[_0xa286('0x7')]=_0x4f4476[_0xa286('0x7')]||'';this['refreshToken']=_0x4f4476[_0xa286('0x8')]||'';this[_0xa286('0x9')]=_0x4f4476[_0xa286('0x9')]||{};}module[_0xa286('0xa')]=ZohoAccount;
\ No newline at end of file
index 834a341..c1621e5 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(_0xcc312e,_0x29bccc){var _0x134c45=function(_0x118e9e){while(--_0x118e9e){_0xcc312e['push'](_0xcc312e['shift']());}};_0x134c45(++_0x29bccc);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x59eb11,_0xaed1ec){_0x59eb11=_0x59eb11-0x0;var _0x9d2d55=_0xaebd[_0x59eb11];return _0x9d2d55;};'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 _0x63a5=['number','exports','util','lodash','moment','isNil','string','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','SIP/%s','calleridname','Contact','phone','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>'];(function(_0x38209c,_0x293989){var _0x1d1750=function(_0xc7a0e9){while(--_0xc7a0e9){_0x38209c['push'](_0x38209c['shift']());}};_0x1d1750(++_0x293989);}(_0x63a5,0x18e));var _0x563a=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x63a5[_0xa148b7];return _0x51efd3;};'use strict';var util=require(_0x563a('0x0'));var _=require(_0x563a('0x1'));var moment=require(_0x563a('0x2'));function checkNameSurname(_0x58625e,_0x30e9d5,_0x493973){var _0x922339='';if(!_[_0x563a('0x3')](_0x30e9d5)&&_0x563a('0x4')===typeof _0x30e9d5){_0x922339+=_0x30e9d5;}if(!_[_0x563a('0x3')](_0x493973)&&'string'===typeof _0x493973){_0x922339+='\x20'+_0x493973;}if(_0x922339!==''){return _0x922339;}return _0x58625e;}function Action(_0x4cc9e5,_0x1fdcb0,_0x5a6458,_0x2662f7,_0x4f89b4){this['uniqueid']=_0x5a6458||undefined;this['idContact']=_0x4cc9e5['id'];this[_0x563a('0x5')]=_0x1fdcb0[_0x563a('0x6')];this[_0x563a('0x7')]=_0x1fdcb0[_0x563a('0x7')];this[_0x563a('0x8')]=_0x563a('0x5');this[_0x563a('0x9')]=![];this[_0x563a('0xa')]=_[_0x563a('0x3')](_0x4cc9e5[_0x563a('0xb')])?undefined:_0x4cc9e5[_0x563a('0xb')][_0x563a('0x6')];this[_0x563a('0xc')]=this[_0x563a('0xa')]?util['format'](_0x563a('0xd'),this[_0x563a('0xa')]):_0x2662f7||undefined;this[_0x563a('0xe')]=checkNameSurname(_0x4cc9e5[_0x563a('0xf')][_0x563a('0x10')],_0x4cc9e5[_0x563a('0xf')]['firstName'],_0x4cc9e5[_0x563a('0xf')][_0x563a('0x11')]);this[_0x563a('0x12')]=_0x4cc9e5[_0x563a('0x12')]||![];this['calleridnum']=_0x4cc9e5['phone'];this[_0x563a('0x13')]=_0x4cc9e5[_0x563a('0x13')];this['countbusyretry']=_0x4cc9e5[_0x563a('0x14')]||0x0;this[_0x563a('0x15')]=_0x4cc9e5[_0x563a('0x15')]||0x0;this[_0x563a('0x16')]=_0x4cc9e5['countnoanswerretry']||0x0;this['countglobal']=(_0x4cc9e5[_0x563a('0x14')]||0x0)+(_0x4cc9e5[_0x563a('0x15')]||0x0)+(_0x4cc9e5[_0x563a('0x16')]||0x0)+(_0x4cc9e5['countnosuchnumberretry']||0x0)+(_0x4cc9e5['countdropretry']||0x0)+(_0x4cc9e5['countabandonedretry']||0x0)+(_0x4cc9e5['countmachineretry']||0x0)+(_0x4cc9e5[_0x563a('0x17')]||0x0);this[_0x563a('0x18')]=_0x4cc9e5[_0x563a('0x18')]||0x0;this[_0x563a('0x19')]=_0x4cc9e5['countdropretry']||0x0;this['countabandonedretry']=_0x4cc9e5[_0x563a('0x1a')]||0x0;this[_0x563a('0x1b')]=_0x4cc9e5[_0x563a('0x1b')]||0x0;this[_0x563a('0x17')]=_0x4cc9e5[_0x563a('0x17')]||0x0;this[_0x563a('0x1c')]=_0x4cc9e5[_0x563a('0x1c')];this[_0x563a('0x1d')]=_0x4cc9e5['callbackuniqueid'];this[_0x563a('0x1e')]=_0x4cc9e5['callbackat'];this[_0x563a('0x1f')]=_0x4cc9e5[_0x563a('0x1f')];this[_0x563a('0x20')]=_0x4cc9e5[_0x563a('0x20')];this[_0x563a('0x21')]=_0x4cc9e5[_0x563a('0x21')];this[_0x563a('0x22')]=_[_0x563a('0x3')](_0x4cc9e5['Agent'])?_0x4cc9e5[_0x563a('0x22')]:_0x4cc9e5[_0x563a('0xb')]['id'];this[_0x563a('0x23')]=_0x4cc9e5[_0x563a('0x23')];this[_0x563a('0x24')]='';this[_0x563a('0x25')]='';}Action[_0x563a('0x26')][_0x563a('0x27')]=function(){return util[_0x563a('0x28')](_0x563a('0x29'),this[_0x563a('0xe')],this[_0x563a('0x2a')]);};module[_0x563a('0x2b')]=Action;
\ No newline at end of file
index c9ee258..1817cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['swapAdditionalPhones','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','rescheduleContact','CONGESTION','outboundCongestionCallsDay','countcongestionretry','Congestion','dialCongestionRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','outboundAbandonedCallsDay','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','outboundUnknownCallsDay','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated','destlinkedid','queueSummaryCountersUpdated','callProgressDetectingAgent','isUndefined','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[incrementPreviewCounters]\x20','checkInBlack','Contact','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','[Blacklist][error]','active','SIP/%s','status','reachable','unmonitored','run','execRun','pick','unlock','unlockContact','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','isEmpty','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','[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','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','callerid','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','variables','variablesAction','[originated][increment]','[originateFailure][logOriginateFailure]','actionid','lookAgent','logLookAgent','clone','isFailure','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','callProgressDetectingCustomer','statedesc','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','addVariable','syncVarSet','filterKey','keys','variable','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','ioredis','../../../config/logger','preview','actionPreview','../ami','./util/util','../dialer/utils','redis','defaults','localhost','prototype','enqueue','tail','finally','voiceQueues','trunks','actions','agents','originateresponse','syncOriginateResponse','hangup','syncHangup','syncHangupRequest','syncDialEnd','bind','newexten','syncNewExten','varset','syncAttendedTransfer','blindtransfer','syncBlindTransfer','campaignsPreview','emit','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice:queue:%s','voice_queue_channel:remove','sendMessageOneNotActive','pTalking','available','paused','INACTIVE','\x20is\x20not\x20active','message','CAMPAIGN_STATUS','DEACTIVATED','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','name','syncCampaigns','clockClearZombieChannels','hasOwnProperty','dialMethod','booked','outbound','clearZombieChannels','dialActive','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','info','Queue','queue','originated:\x20','stringify','dialAnswer','contactId','UserId','VoiceQueueId','ListId','Action','channel','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','length','getDiff','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','createCustomerFinal','catch','loggedIn','NO_AGENTS_LOGGED','isTrunkReachable','TrunkBackup','UNREACHABLE_TRUNK','ACTIVE','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','totalGlobal','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','scheduledAt','unlockAgent','activeContact','actioncountonusuch','idContact','incrementPreviewCounters','ANSWER','YYYY-MM-DD\x20HH:mm:ss','responsetime','[syncHangup][talking][increment]','custom:agentconnect','acw','custom:agentConnectPreview','custom:agentcomplete','complete','outboundAnswerCallsDay','total','answered','decrementTalkink','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','sumBillable','[syncHangup][talking][decrement]','uniqueid','\x20Queue','pTalking:\x20','linkedid','BUSY','outboundBusyCallsDay','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x00bb,0x1d8));var _0xb00b=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x00bb[_0x46aff0];return _0x9d78cf;};'use strict';var util=require(_0xb00b('0x0'));var _=require(_0xb00b('0x1'));var uuid=require(_0xb00b('0x2'));var moment=require('moment');var Redis=require(_0xb00b('0x3'));var config=require('../../../config/environment');var logger=require(_0xb00b('0x4'))(_0xb00b('0x5'));var loggerAction=require('../../../config/logger')(_0xb00b('0x6'));var ami=require(_0xb00b('0x7'));var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require('./action');var ut=require(_0xb00b('0x8'));var utils=require(_0xb00b('0x9'));config[_0xb00b('0xa')]=_[_0xb00b('0xb')](config[_0xb00b('0xa')],{'host':_0xb00b('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xb00b('0xd')][_0xb00b('0xe')]=function(_0x5851d4){this[_0xb00b('0xf')]=this[_0xb00b('0xf')]?this['tail'][_0xb00b('0x10')](_0x5851d4):_0x5851d4();};function Preview(_0x5a63ed){this['sequence']=new Sequence();this['campaignsPreview']=_0x5a63ed[_0xb00b('0x11')];this[_0xb00b('0x12')]=_0x5a63ed[_0xb00b('0x12')];this[_0xb00b('0x13')]={};this[_0xb00b('0x14')]=_0x5a63ed[_0xb00b('0x14')];this['clockClearZombieChannels']=0x0;ami['on'](_0xb00b('0x15'),this[_0xb00b('0x16')]['bind'](this));ami['on'](_0xb00b('0x17'),this[_0xb00b('0x18')]['bind'](this));ami['on']('hanguprequest',this[_0xb00b('0x19')]['bind'](this));ami['on']('dialend',this[_0xb00b('0x1a')][_0xb00b('0x1b')](this));ami['on'](_0xb00b('0x1c'),this[_0xb00b('0x1d')]['bind'](this));ami['on'](_0xb00b('0x1e'),this['syncVarSet'][_0xb00b('0x1b')](this));ami['on']('attendedtransfer',this[_0xb00b('0x1f')]['bind'](this));ami['on'](_0xb00b('0x20'),this[_0xb00b('0x21')]['bind'](this));this['loopCampaigns'](this[_0xb00b('0x22')]);}function emit(_0x4a334b,_0x1344c4,_0x43da66){io['to'](_0x4a334b)[_0xb00b('0x23')](_0x1344c4,_0x43da66);}function emitVoiceQueueChannelRemove(_0x3501af){logger['info'](_0xb00b('0x24'),JSON['stringify'](_0x3501af));emit(util[_0xb00b('0x25')](_0xb00b('0x26'),_0x3501af['name']),_0xb00b('0x27'),_0x3501af);io[_0xb00b('0x23')]('voice_queue_presence:remove',_0x3501af);}function notSendMessagesQueue(_0x3ab3cc){if(_0x3ab3cc[_0xb00b('0x28')]){if(_0x3ab3cc['originated']===0x0&&_0x3ab3cc[_0xb00b('0x29')]===0x0){_0x3ab3cc[_0xb00b('0x28')]=![];_0x3ab3cc[_0xb00b('0x2a')]=0x0;_0x3ab3cc[_0xb00b('0x2b')]=0x0;_0x3ab3cc['message']=utils['CAMPAIGN_STATUS'][_0xb00b('0x2c')];ut['logger']('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x3ab3cc['name']+_0xb00b('0x2d'));}else{_0x3ab3cc[_0xb00b('0x2e')]=utils[_0xb00b('0x2f')][_0xb00b('0x30')];ut[_0xb00b('0x31')](_0xb00b('0x32'),_0x3ab3cc[_0xb00b('0x33')]+'\x20is\x20deactivated');}}}Preview[_0xb00b('0xd')]['loopCampaigns']=function(){var _0x450129=this;setInterval(function(){_0x450129[_0xb00b('0x34')]();},0x7cf);};Preview[_0xb00b('0xd')]['syncCampaigns']=function(){var _0x2fc11a=this[_0xb00b('0x22')];this[_0xb00b('0x35')]+=0x1;for(var _0x183233 in _0x2fc11a){if(_0x2fc11a[_0xb00b('0x36')](_0x183233)&&(_0x2fc11a[_0x183233][_0xb00b('0x37')]===_0xb00b('0x5')||_0x2fc11a[_0x183233][_0xb00b('0x37')]===_0xb00b('0x38'))&&_0x2fc11a[_0x183233]['type']===_0xb00b('0x39')){if(this[_0xb00b('0x35')]>0x7){this['clockClearZombieChannels']=0x0;this[_0xb00b('0x3a')]();}}if(_0x2fc11a[_0xb00b('0x36')](_0x183233)&&_0x2fc11a[_0x183233]['dialMethod']===_0xb00b('0x5')&&_0x2fc11a[_0x183233]['type']===_0xb00b('0x39')){if(_0x2fc11a[_0x183233][_0xb00b('0x3b')]){this[_0xb00b('0x3c')](_0x2fc11a[_0x183233]);if(_0x2fc11a[_0x183233][_0xb00b('0x3d')])this[_0xb00b('0x3e')](_0x2fc11a[_0x183233]);}else{notSendMessagesQueue(_0x2fc11a[_0x183233]);}}}};Preview[_0xb00b('0xd')][_0xb00b('0x3f')]=function(_0x594840){var _0x57e8f9=this;this['sequence'][_0xb00b('0xe')](function(){if(!_[_0xb00b('0x40')](_0x57e8f9[_0xb00b('0x13')][_0x594840])){loggerAction[_0xb00b('0x41')]('[clearZombieChannels][talking]',_0x594840,_0xb00b('0x42'),_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x43')],_0xb00b('0x44'),JSON[_0xb00b('0x45')](_0x57e8f9[_0xb00b('0x22')][_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x43')]]['originated']),'pTalking:\x20',JSON[_0xb00b('0x45')](_0x57e8f9['campaignsPreview'][_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x43')]][_0xb00b('0x29')]),JSON[_0xb00b('0x45')](_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x46')]),JSON[_0xb00b('0x45')](_['pick'](_0x57e8f9[_0xb00b('0x13')][_0x594840],[_0xb00b('0x47'),_0xb00b('0x48'),_0xb00b('0x49'),_0xb00b('0x4a')])));return ami[_0xb00b('0x4b')]({'action':'status','channel':_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x4c')]})['catch'](function(_0x17ff34){if(_0x17ff34[_0xb00b('0x2e')]===_0xb00b('0x4d')){setTimeout(function(){if(_0x57e8f9[_0xb00b('0x13')][_0x594840]){ut[_0xb00b('0x4e')](_0x57e8f9['campaignsPreview'][_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x43')]],_0xb00b('0x4f'));if(_0x57e8f9[_0xb00b('0x13')][_0x594840]['dialAnswer']===!![]){ut['decrementTalkink'](_0x57e8f9[_0xb00b('0x22')][_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x43')]],_0xb00b('0x4f'));ut[_0xb00b('0x50')](_0xb00b('0x51')+_0x594840,_0x57e8f9[_0xb00b('0x13')][_0x594840]['queue']);}ut[_0xb00b('0x50')](_0xb00b('0x52')+_0x594840,_0x57e8f9[_0xb00b('0x13')][_0x594840][_0xb00b('0x43')]);delete _0x57e8f9[_0xb00b('0x13')][_0x594840];}},0x2328);}});}});};Preview[_0xb00b('0xd')][_0xb00b('0x3a')]=function(){var _0x974a29=this;loggerAction[_0xb00b('0x41')](_0xb00b('0x53'),_[_0xb00b('0x54')](this[_0xb00b('0x13')]));for(var _0x577bad in this[_0xb00b('0x13')]){if(_0x974a29[_0xb00b('0x13')][_0xb00b('0x36')](_0x577bad)){_0x974a29[_0xb00b('0x3f')](_0x577bad);}}};Preview[_0xb00b('0xd')][_0xb00b('0x3e')]=function(_0xd97f49){var _0x1b4f09=this;rpcDb[_0xb00b('0x55')](_0xd97f49['id'],ut[_0xb00b('0x56')](this[_0xb00b('0x14')]))[_0xb00b('0x57')](function(_0x5dbe00){if(!_['isNil'](_0x5dbe00)){for(var _0x47c6c0=0x0;_0x47c6c0<_0x5dbe00[_0xb00b('0x58')];_0x47c6c0+=0x1){if(ut[_0xb00b('0x59')](_0x5dbe00[_0x47c6c0]['scheduledat'])<_0xd97f49[_0xb00b('0x5a')]*0x3c){if(_0x5dbe00[_0x47c6c0][_0xb00b('0x5b')]&&!_0x5dbe00[_0x47c6c0][_0xb00b('0x5b')][_0xb00b('0x5c')]){_0x1b4f09['run'](_0x5dbe00[_0x47c6c0]['id'])['then'](ut[_0xb00b('0x5d')](_0xb00b('0x5e')))['catch'](ut['logger2'](_0xb00b('0x5e')));}else{rpcDb[_0xb00b('0x5f')](_0x5dbe00[_0x47c6c0]['id']);}}else{var _0x4e0be4=new Action(_0x5dbe00[_0x47c6c0],_0xd97f49);_0x4e0be4[_0xb00b('0x60')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xd97f49['outboundReCallsDay']+=0x1;ut[_0xb00b('0x61')](_0x4e0be4,0x17,'RecallInQueue');if(_0xd97f49[_0xb00b('0x62')]){rpcDb[_0xb00b('0x63')](ut[_0xb00b('0x64')](_0x5dbe00[_0x47c6c0]));rpcDb[_0xb00b('0x65')](_0x4e0be4,_0xb00b('0x66'));}else{ut[_0xb00b('0x61')](_0x4e0be4,0x16,'RecallFailedTimeout');rpcDb['createCustomerHistory'](_0x4e0be4,_0xb00b('0x67'));rpcDb[_0xb00b('0x68')](_0x4e0be4,'[HistoryRecallClose]');}}}}})[_0xb00b('0x69')](ut[_0xb00b('0x5d')]('[getContactRecallMe]'));};Preview[_0xb00b('0xd')][_0xb00b('0x3c')]=function(_0x3b5d82){_0x3b5d82['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x3b5d82[_0xb00b('0x6a')])){_0x3b5d82[_0xb00b('0x2e')]=utils[_0xb00b('0x2f')][_0xb00b('0x6b')];}else if(!ut['isActive'](_0x3b5d82[_0xb00b('0x3b')])){_0x3b5d82[_0xb00b('0x2e')]=utils['CAMPAIGN_STATUS']['INACTIVE'];}else if(!this[_0xb00b('0x6c')](_0x3b5d82['Trunk'])){if(!this[_0xb00b('0x6c')](_0x3b5d82[_0xb00b('0x6d')])){_0x3b5d82[_0xb00b('0x2e')]=utils[_0xb00b('0x2f')][_0xb00b('0x6e')];}else{_0x3b5d82[_0xb00b('0x2e')]=utils['CAMPAIGN_STATUS'][_0xb00b('0x6f')];}}else{_0x3b5d82['message']=utils[_0xb00b('0x2f')][_0xb00b('0x6f')];}};Preview[_0xb00b('0xd')]['callProgressDetectingCustomer']=function(_0x248335,_0x25f1f6,_0x4ba53a){var _0x598a55=this;var _0x24e826=this[_0xb00b('0x13')][_0x25f1f6];var _0x219b74=this[_0xb00b('0x22')][_0x24e826[_0xb00b('0x43')]];var _0x279467;var _0x347949=![];var _0x3a0b90=0x2;var _0x4c3067=0x3;if(_0x219b74){switch(_0x4ba53a){case'1':_0x219b74[_0xb00b('0x70')]+=0x1;_0x24e826[_0xb00b('0x71')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut['totalGlobal'](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0x0,_0xb00b('0x73'));ami[_0xb00b('0x23')](_0xb00b('0x74'),ut[_0xb00b('0x75')](_0x24e826,'nosuchnumber'));rpcDb[_0xb00b('0x65')](_0x24e826,_0xb00b('0x76'));_0x598a55[_0xb00b('0x77')](_0x24e826,'0',_0x219b74)[_0xb00b('0x57')](function(_0x4b1e5f){_0x347949=_0x4b1e5f[_0xb00b('0x78')]==0x1;_0x3a0b90=_0x219b74[_0xb00b('0x79')];_0x4c3067=_0x219b74[_0xb00b('0x7a')];if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0xf,_0xb00b('0x7e'));rpcDb['createCustomerFinal'](_0x279467,_0xb00b('0x7f'));}else{if(_0x24e826['countnosuchnumberretry']>=_0x219b74[_0xb00b('0x80')]){rpcDb['createCustomerFinal'](_0x24e826,_0xb00b('0x7f'));}else{rpcDb['rescheduleContact'](ut[_0xb00b('0x81')](_0x24e826,'countnosuchnumberretry',_0x219b74[_0xb00b('0x79')]),_0x24e826[_0xb00b('0x82')],_0x24e826[_0xb00b('0x83')]);}}delete this['actions'][_0x248335['linkedid']];}else{_0x24e826['countnosuchnumberretry']++;logger[_0xb00b('0x41')](_0xb00b('0x84'),_0x24e826[_0xb00b('0x71')]);logger['info']('id',_0x24e826[_0xb00b('0x85')]);_0x598a55[_0xb00b('0x86')]({'id':_0x24e826[_0xb00b('0x85')],'field':{'countnosuchnumberretry':_0x24e826[_0xb00b('0x71')]}})[_0xb00b('0x57')](function(){_0x598a55['swapAdditionalPhones'](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});break;case _0xb00b('0x87'):var _0x5622a4=moment()[_0xb00b('0x25')](_0xb00b('0x88'));_0x24e826[_0xb00b('0x89')]=_0x5622a4;_0x24e826['answertime']=_0x5622a4;_0x24e826['dialAnswer']=!![];_0x219b74[_0xb00b('0x29')]+=0x1;logger[_0xb00b('0x41')](_0xb00b('0x8a'),_0x24e826['uniqueid'],'\x20Queue',_0x219b74['name'],'pTalking:\x20',_0x219b74[_0xb00b('0x29')]);ami['emit'](_0xb00b('0x8b'),ut[_0xb00b('0x75')](_0x24e826,'connect',this[_0xb00b('0x22')][_0x24e826[_0xb00b('0x43')]]));if(_0x219b74[_0xb00b('0x8c')]){ami[_0xb00b('0x23')](_0xb00b('0x8d'),ut['buildAcw'](_0x24e826));}break;case'16':ami[_0xb00b('0x23')](_0xb00b('0x8e'),ut[_0xb00b('0x75')](_0x24e826,_0xb00b('0x8f'),this[_0xb00b('0x22')][_0x24e826[_0xb00b('0x43')]]));emitVoiceQueueChannelRemove(ut[_0xb00b('0x75')](_0x24e826,'complete'));_0x219b74[_0xb00b('0x90')]+=0x1;_0x219b74[_0xb00b('0x91')]+=0x1;_0x219b74[_0xb00b('0x92')]+=0x1;ut[_0xb00b('0x93')](_0x219b74,_0xb00b('0x94'));_0x24e826[_0xb00b('0x72')]=ut[_0xb00b('0x7b')](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0x4,'Answer');rpcDb[_0xb00b('0x65')](_0x24e826,_0xb00b('0x95'));rpcDb[_0xb00b('0x68')](_0x24e826,_0xb00b('0x96'));rpcDb[_0xb00b('0x97')](_0x24e826);_0x219b74[_0xb00b('0x98')]+=_0x24e826[_0xb00b('0x99')];_0x219b74[_0xb00b('0x9a')]+=_0x24e826['talktime'];logger[_0xb00b('0x41')](_0xb00b('0x9b'),_0x24e826[_0xb00b('0x9c')],_0xb00b('0x9d'),_0x219b74[_0xb00b('0x33')],_0xb00b('0x9e'),_0x219b74[_0xb00b('0x29')]);delete this['actions'][_0x248335[_0xb00b('0x9f')]];break;case _0xb00b('0xa0'):_0x219b74[_0xb00b('0xa1')]+=0x1;_0x24e826[_0xb00b('0xa2')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut[_0xb00b('0x7b')](_0x24e826);ut['logCustomer'](_0x24e826,0x5,_0xb00b('0xa3'));_0x3a0b90=_0x219b74['dialBusyRetryFrequency'];_0x4c3067=_0x219b74[_0xb00b('0x7a')];ami['emit'](_0xb00b('0xa4'),ut[_0xb00b('0x75')](_0x24e826,_0xb00b('0xa5')));rpcDb['createCustomerHistory'](_0x24e826,'[callProgressDetectingCustomer][logBusy]');_0x598a55[_0xb00b('0x77')](_0x24e826,'5',_0x219b74)[_0xb00b('0x57')](function(_0x33a483){_0x347949=_0x33a483[_0xb00b('0x78')]==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0xf,_0xb00b('0x7e'));rpcDb[_0xb00b('0x68')](_0x279467,_0xb00b('0xa6'));}else{if(_0x24e826[_0xb00b('0xa2')]>=_0x219b74[_0xb00b('0xa7')]){rpcDb[_0xb00b('0x68')](_0x24e826,_0xb00b('0xa8'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x24e826,_0xb00b('0xa2'),_0x219b74[_0xb00b('0xa9')]),_0x24e826['unlockAgent'],_0x24e826['activeContact']);}}}else{_0x24e826[_0xb00b('0xa2')]++;_0x598a55[_0xb00b('0x86')]({'id':_0x24e826[_0xb00b('0x85')],'field':{'countbusyretry':_0x24e826['countbusyretry']}})[_0xb00b('0x57')](function(){_0x598a55[_0xb00b('0xaa')](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});break;case _0xb00b('0xab'):_0x219b74[_0xb00b('0xac')]+=0x1;_0x24e826[_0xb00b('0xad')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut['totalGlobal'](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0x3,'NoAnswer');_0x3a0b90=_0x219b74[_0xb00b('0xae')];_0x4c3067=_0x219b74[_0xb00b('0x7a')];var _0x545dfd=ut[_0xb00b('0xaf')](_0x24e826,_0x219b74);ami[_0xb00b('0x23')](_0xb00b('0xb0'),_0x545dfd);rpcDb[_0xb00b('0x65')](_0x24e826,_0xb00b('0xb1'));_0x598a55[_0xb00b('0x77')](_0x24e826,'3',_0x219b74)[_0xb00b('0x57')](function(_0x2423b2){_0x347949=_0x2423b2[_0xb00b('0x78')]==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0xf,'Global');rpcDb[_0xb00b('0x68')](_0x279467,_0xb00b('0xb2'));}else{if(_0x24e826[_0xb00b('0xad')]>=_0x219b74[_0xb00b('0xb3')]){rpcDb['createCustomerFinal'](_0x24e826,_0xb00b('0xb1'));}else{rpcDb[_0xb00b('0xb4')](ut[_0xb00b('0x81')](_0x24e826,_0xb00b('0xad'),_0x219b74[_0xb00b('0xae')]),_0x24e826['unlockAgent'],_0x24e826[_0xb00b('0x83')]);}}}else{_0x24e826[_0xb00b('0xad')]++;_0x598a55[_0xb00b('0x86')]({'id':_0x24e826[_0xb00b('0x85')],'field':{'countnoanswerretry':_0x24e826['countnoanswerretry']}})[_0xb00b('0x57')](function(){_0x598a55['swapAdditionalPhones'](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});break;case _0xb00b('0xb5'):_0x219b74[_0xb00b('0xb6')]+=0x1;_0x24e826[_0xb00b('0xb7')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut[_0xb00b('0x7b')](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0x8,_0xb00b('0xb8'));_0x3a0b90=_0x219b74[_0xb00b('0xb9')];_0x4c3067=_0x219b74[_0xb00b('0x7a')];ami[_0xb00b('0x23')]('custom:agentcongestion',ut[_0xb00b('0x75')](_0x24e826,_0xb00b('0xba')));rpcDb[_0xb00b('0x65')](_0x24e826,_0xb00b('0xbb'));_0x598a55['verifyAdditionalPhones'](_0x24e826,'8',_0x219b74)[_0xb00b('0x57')](function(_0xb27b8b){_0x347949=_0xb27b8b['additional']==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74['dialGlobalMaxRetry']){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0xf,_0xb00b('0x7e'));rpcDb[_0xb00b('0x68')](_0x279467,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x24e826[_0xb00b('0xb7')]>=_0x219b74[_0xb00b('0xbc')]){rpcDb[_0xb00b('0x68')](_0x24e826,_0xb00b('0xbb'));}else{rpcDb[_0xb00b('0xb4')](ut[_0xb00b('0x81')](_0x24e826,_0xb00b('0xb7'),_0x219b74[_0xb00b('0xa9')]),_0x24e826[_0xb00b('0x82')],_0x24e826['activeContact']);}}}else{_0x24e826['countcongestionretry']++;_0x598a55[_0xb00b('0x86')]({'id':_0x24e826[_0xb00b('0x85')],'field':{'countcongestionretry':_0x24e826[_0xb00b('0xb7')]}})[_0xb00b('0x57')](function(){_0x598a55['swapAdditionalPhones'](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});break;case _0xb00b('0xbd'):_0x219b74['outboundRejectCallsDay']+=0x1;_0x24e826[_0xb00b('0xbe')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut[_0xb00b('0x7b')](_0x24e826);ut['logCustomer'](_0x24e826,0x14,_0xb00b('0xbf'));_0x3a0b90=_0x219b74[_0xb00b('0xc0')];_0x4c3067=_0x219b74['callAdditionalPhoneAfterMin'];ami[_0xb00b('0x23')](_0xb00b('0xc1'),ut[_0xb00b('0x75')](_0x24e826,_0xb00b('0xc2')));rpcDb[_0xb00b('0x65')](_0x24e826,_0xb00b('0xc3'));_0x598a55[_0xb00b('0x77')](_0x24e826,'20',_0x219b74)[_0xb00b('0x57')](function(_0x55ea09){_0x347949=_0x55ea09[_0xb00b('0x78')]==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0x14,'AgentReject');rpcDb[_0xb00b('0x68')](_0x279467,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x24e826[_0xb00b('0xbe')]>=_0x219b74['dialAgentRejectMaxRetry']){rpcDb[_0xb00b('0x68')](_0x24e826,_0xb00b('0xc4'));}else{rpcDb[_0xb00b('0xb4')](ut[_0xb00b('0x81')](_0x24e826,_0xb00b('0xbe'),_0x219b74['dialAgentRejectRetryFrequency']),_0x24e826[_0xb00b('0x82')],_0x24e826[_0xb00b('0x83')]);}}}else{_0x24e826['countnoanswerretry']++;_0x598a55[_0xb00b('0x86')]({'id':_0x24e826['idContact'],'field':{'countnoanswerretry':_0x24e826[_0xb00b('0xad')]}})[_0xb00b('0x57')](function(){_0x598a55[_0xb00b('0xaa')](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});break;case'ABANDONED':_0x219b74[_0xb00b('0xc5')]+=0x1;_0x24e826[_0xb00b('0xc6')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut[_0xb00b('0x7b')](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0xb,'Abandoned');rpcDb['createCustomerHistory'](_0x24e826,_0xb00b('0xc7'));_0x598a55[_0xb00b('0x77')](_0x24e826,'11',_0x219b74)[_0xb00b('0x57')](function(_0x2d5652){_0x347949=_0x2d5652[_0xb00b('0x78')]==0x1;if(!_0x347949){if(ut['totalGlobal'](_0x24e826)>=_0x219b74['dialGlobalMaxRetry']){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0xf,_0xb00b('0x7e'));rpcDb[_0xb00b('0x68')](_0x279467,_0xb00b('0xc7'));}else{if(_0x24e826[_0xb00b('0xc8')]>=_0x219b74[_0xb00b('0xc9')]){rpcDb[_0xb00b('0x68')](_0x24e826,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xb00b('0xb4')](ut['scheduledAt'](_0x24e826,_0xb00b('0xc6'),_0x219b74['dialAbandonedRetryFrequency']),_0x24e826[_0xb00b('0x82')],_0x24e826[_0xb00b('0x83')]);}}}else{_0x24e826[_0xb00b('0xad')]++;_0x598a55[_0xb00b('0x86')]({'id':_0x24e826[_0xb00b('0x85')],'field':{'countnoanswerretry':_0x24e826[_0xb00b('0xad')]}})[_0xb00b('0x57')](function(){_0x598a55[_0xb00b('0xaa')](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});break;case'18':_0x219b74[_0xb00b('0xca')]+=0x1;_0x24e826[_0xb00b('0xcb')]+=0x1;_0x24e826['countglobal']=ut[_0xb00b('0x7b')](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0x12,_0x248335[_0xb00b('0xcc')]||_0x248335[_0xb00b('0xcd')]);ami['emit'](_0xb00b('0xce'),ut[_0xb00b('0x75')](_0x24e826,'amd'));rpcDb[_0xb00b('0x65')](_0x24e826,'[callProgressDetectingCustomer][hangupInAMD]');_0x598a55[_0xb00b('0x77')](_0x24e826,'18',_0x219b74)[_0xb00b('0x57')](function(_0x49fe3f){_0x347949=_0x49fe3f[_0xb00b('0x78')]==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0x12,_0xb00b('0x7e'));rpcDb[_0xb00b('0x68')](_0x279467,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0xb00b('0x68')](_0x24e826,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x24e826[_0xb00b('0xad')]++;_0x598a55[_0xb00b('0x86')]({'id':_0x24e826[_0xb00b('0x85')],'field':{'countnoanswerretry':_0x24e826[_0xb00b('0xad')]}})['then'](function(){_0x598a55[_0xb00b('0xaa')](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});delete this[_0xb00b('0x13')][_0x248335['linkedid']];break;case'19':_0x219b74[_0xb00b('0xca')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut[_0xb00b('0x7b')](_0x24e826);ut[_0xb00b('0x61')](_0x24e826,0x13,_0x248335['cause-txt']||_0x248335[_0xb00b('0xcd')]);ami[_0xb00b('0x23')](_0xb00b('0xce'),ut[_0xb00b('0x75')](_0x24e826,_0xb00b('0xcf')));rpcDb[_0xb00b('0x65')](_0x24e826,'[callProgressDetectingCustomer][machine]');_0x598a55['verifyAdditionalPhones'](_0x24e826,'18',_0x219b74)[_0xb00b('0x57')](function(_0x23d306){_0x347949=_0x23d306[_0xb00b('0x78')]==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut['cloneAction'](_0x24e826,0xf,_0xb00b('0x7e'));rpcDb[_0xb00b('0x68')](_0x279467,_0xb00b('0xd0'));}else{rpcDb[_0xb00b('0x68')](_0x24e826,_0xb00b('0xd0'));}}else{_0x24e826[_0xb00b('0xad')]++;_0x598a55['incrementPreviewCounters']({'id':_0x24e826[_0xb00b('0x85')],'field':{'countnoanswerretry':_0x24e826[_0xb00b('0xad')]}})[_0xb00b('0x57')](function(){_0x598a55[_0xb00b('0xaa')](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});});}});delete this[_0xb00b('0x13')][_0x248335[_0xb00b('0x9f')]];break;default:if(_0x24e826[_0xb00b('0x46')]){ut[_0xb00b('0x93')](_0x219b74,_0xb00b('0xd1'));ut['loggerError']('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x219b74[_0xb00b('0x33')],_0x248335);}_0x219b74[_0xb00b('0xca')]+=0x1;_0x24e826[_0xb00b('0x72')]=ut['totalGlobal'](_0x24e826);ut['logCustomer'](_0x24e826,0xc,_0x248335['cause-txt']||_0x248335[_0xb00b('0xcd')]);_0x3a0b90=_0x219b74[_0xb00b('0xc0')];_0x4c3067=_0x219b74[_0xb00b('0x7a')];rpcDb['createCustomerHistory'](_0x24e826,_0xb00b('0xd2'));_0x598a55[_0xb00b('0x77')](_0x24e826,'20',_0x219b74)[_0xb00b('0x57')](function(_0x142674){_0x347949=_0x142674['additional']==0x1;if(!_0x347949){if(ut[_0xb00b('0x7b')](_0x24e826)>=_0x219b74[_0xb00b('0x7c')]){_0x279467=ut[_0xb00b('0x7d')](_0x24e826,0xf,_0xb00b('0x7e'));rpcDb[_0xb00b('0x68')](_0x279467,_0xb00b('0xd3'));}else{rpcDb[_0xb00b('0x68')](_0x24e826,_0xb00b('0xd3'));}delete this['actions'][_0x248335[_0xb00b('0x9f')]];}else{_0x598a55[_0xb00b('0xaa')](_0x24e826,_0x3a0b90,_0x4c3067)[_0xb00b('0x57')](function(){});}});}if(!(_0x24e826[_0xb00b('0x46')]&&_0x4ba53a==='16')){ut[_0xb00b('0x4e')](_0x219b74,_0xb00b('0xd4'));logger[_0xb00b('0x41')](_0xb00b('0xd5'),_0x24e826['uniqueid'],_0xb00b('0x9d'),_0x219b74[_0xb00b('0x33')],_0xb00b('0x44'),_0x219b74[_0xb00b('0xd6')]);}if(_0x4ba53a!=='ANSWER'){delete this[_0xb00b('0x13')][_0x248335[_0xb00b('0x9f')]];delete this[_0xb00b('0x13')][_0x248335[_0xb00b('0xd7')]];}_0x219b74[_0xb00b('0xd8')]=!![];}};Preview[_0xb00b('0xd')][_0xb00b('0xd9')]=function(_0x3184de,_0x48ac4b,_0x5f0fab){if(_[_0xb00b('0xda')](_0x48ac4b)&&_0xb00b('0xdb')!==typeof _0x48ac4b){return;}if(_[_0xb00b('0xda')](_0x5f0fab)&&'object'!==typeof _0x5f0fab){return;}switch(_0x5f0fab[_0xb00b('0xdc')]){case'0':ut[_0xb00b('0xdd')](_0x3184de,0x0,_0xb00b('0x73'));rpcDb['createAgentHistory'](_0x3184de,_0xb00b('0xde'));break;case'3':ut[_0xb00b('0xdd')](_0x3184de,0x3,_0xb00b('0xdf'));rpcDb['createAgentHistory'](_0x3184de,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xb00b('0xdd')](_0x3184de,0x5,'Busy');rpcDb[_0xb00b('0xe0')](_0x3184de,'[callProgressDetectingAgent][logBusy]');break;case'8':ut['logAgent'](_0x3184de,0x8,_0xb00b('0xb8'));rpcDb[_0xb00b('0xe0')](_0x3184de,_0xb00b('0xe1'));break;case'22':ut[_0xb00b('0xdd')](_0x3184de,0x16,_0xb00b('0xe2'));rpcDb['createAgentHistory'](_0x3184de,_0xb00b('0xe3'));break;default:ut['logAgent'](_0x3184de,0xc,_0x5f0fab['reason']);rpcDb[_0xb00b('0xe0')](_0x3184de,_0xb00b('0xe1'));}ut[_0xb00b('0x4e')](_0x48ac4b,_0xb00b('0xe4'));logger[_0xb00b('0x41')](_0xb00b('0xe5'),_0x3184de['uniqueid'],_0xb00b('0x9d'),_0x48ac4b['name'],_0xb00b('0x44'),_0x48ac4b[_0xb00b('0xd6')]);delete this[_0xb00b('0x13')][_0x3184de['uniqueid']];};Preview[_0xb00b('0xd')][_0xb00b('0x77')]=function(_0x20790f,_0x3dc8d2,_0x5d224c){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x20790f,_0x3dc8d2,_0x5d224c)[_0xb00b('0x69')](logger['info']('[verifyAdditionalPhone]\x20'));};Preview[_0xb00b('0xd')]['swapAdditionalPhones']=function(_0x505ae2,_0x2fecca,_0x330bc7){return cmHopperAdditionalPhone[_0xb00b('0xaa')](_0x505ae2,_0x2fecca,_0x330bc7)[_0xb00b('0x69')](logger['info']('[swapAdditionalPhone]\x20'));};Preview[_0xb00b('0xd')][_0xb00b('0x86')]=function(_0x9facaf){return Promise['resolve']()['then'](cmHopperAdditionalPhone[_0xb00b('0x86')](_0x9facaf))['catch'](logger['info'](_0xb00b('0xe6')));};Preview['prototype'][_0xb00b('0xe7')]=function(_0x481671,_0x1b751e,_0x5712fd,_0x3de808,_0x3289aa){var _0x1ec560=this;return new Promise(function(_0x54498c,_0x442b28){if(_['isNil'](_0x1b751e)||_[_0xb00b('0x40')](_0x1b751e[_0xb00b('0xe8')])||_['isNil'](_0x1b751e['phone'])||_['isNil'](_0x1b751e['VoiceQueueId'])){_0x442b28(ut[_0xb00b('0x2e')]('Contact\x20is\x20undefined',_0x3de808,_0x3289aa));return;}var _0x134d17=uuid['v4']();var _0x5ad4d4=_0x1ec560[_0xb00b('0x22')][_0x1b751e[_0xb00b('0x42')][_0xb00b('0x33')]];var _0x44b2f1=_0x5712fd?_0x1ec560[_0xb00b('0x14')][_0x5712fd]['id']:undefined;_0x1ec560['actions'][_0x134d17]=new Action(_0x1b751e,_0x5ad4d4,_0x134d17,_0x5712fd,_0x44b2f1);var _0x8292fe=_0x1ec560[_0xb00b('0x13')][_0x134d17];_0x8292fe[_0xb00b('0x82')]=_0x3de808;_0x8292fe[_0xb00b('0x83')]=_0x3289aa;_0x8292fe['lookAgent']=_0x5712fd;if(_['isEmpty'](_0x481671)){_0x1ec560[_0xb00b('0xe9')](_0x8292fe,_0x5ad4d4,_0x1b751e,_0x5712fd)[_0xb00b('0x57')](function(_0x181393){logger[_0xb00b('0x41')](_0xb00b('0xea'),_0xb00b('0xeb')+_0x8292fe[_0xb00b('0x43')]+_0xb00b('0xec')+_0x8292fe[_0xb00b('0x85')],JSON['stringify'](_0x181393));ami[_0xb00b('0x23')](_0xb00b('0xed'),ut['buildObj'](_0x8292fe,_0xb00b('0xee'),_0x1ec560['campaignsPreview'][_0x8292fe[_0xb00b('0x43')]]));_0x54498c(ut[_0xb00b('0x2e')]('Calling'));})['catch'](function(_0x32264a){ut[_0xb00b('0x31')](_0xb00b('0xef'),_0x32264a);_0x442b28(ut['message'](_0xb00b('0xf0'),_0x3de808,_0x3289aa));});}else{_0x5ad4d4[_0xb00b('0xf1')]+=0x1;ut[_0xb00b('0xf2')](_0x8292fe);rpcDb['createHistory'](_0x8292fe,_0xb00b('0xf3'));delete _0x1ec560['actions'][_0x134d17];_0x442b28(ut['message']('Contact\x20in\x20black\x20List',_0x3de808,_0x3289aa));}});};Preview[_0xb00b('0xd')]['isTrunkReachable']=function(_0x1b8d45){return!_[_0xb00b('0x40')](_0x1b8d45)&&!_['isNil'](_0x1b8d45['name'])&&!_[_0xb00b('0x40')](_0x1b8d45[_0xb00b('0xf4')])&&_0x1b8d45['active']&&!_[_0xb00b('0x40')](this[_0xb00b('0x12')][util[_0xb00b('0x25')](_0xb00b('0xf5'),_0x1b8d45[_0xb00b('0x33')])])&&!_[_0xb00b('0x40')](this['trunks'][util[_0xb00b('0x25')](_0xb00b('0xf5'),_0x1b8d45['name'])][_0xb00b('0xf6')])&&(this['trunks'][util['format'](_0xb00b('0xf5'),_0x1b8d45['name'])][_0xb00b('0xf6')]===_0xb00b('0xf7')||this[_0xb00b('0x12')][util['format']('SIP/%s',_0x1b8d45['name'])][_0xb00b('0xf6')]===_0xb00b('0xf8'));};Preview['prototype'][_0xb00b('0xf9')]=function(_0x18e86f,_0x3aa8c0){return this[_0xb00b('0xfa')](_0x18e86f,_0x3aa8c0)[_0xb00b('0x57')](function(_0x166ff5){return _[_0xb00b('0xfb')](_0x166ff5,[_0xb00b('0x2e')]);})['catch'](function(_0x1b097a){if(_0x1b097a[_0xb00b('0xfc')]){rpcDb[_0xb00b('0xfd')](_0x18e86f);}if(_0x1b097a['active']){rpcDb['disableContact'](_0x18e86f);}throw _['pick'](_0x1b097a,[_0xb00b('0x2e')]);});};Preview[_0xb00b('0xd')][_0xb00b('0xfa')]=function(_0x4bc6df,_0x399902){var _0x34985d=this;var _0x2057d1,_0xdee547;return rpcDb[_0xb00b('0xfe')](_0x4bc6df)['then'](function(_0x1674ab){if(!_['isNil'](_0x1674ab[0x0])){_0xdee547=_0x1674ab[0x0][_0xb00b('0xff')]?![]:!![];_0x2057d1=_0x1674ab[0x0][_0xb00b('0xff')]?!![]:![];_0x2057d1=_0x399902?!![]:_0x2057d1;}var _0xde6b5=_0x34985d[_0xb00b('0x100')](_0x1674ab);if(_0xde6b5[_0xb00b('0x101')]){rpcDb[_0xb00b('0x102')](_['pick'](_0x1674ab[0x0],[_0xb00b('0x49'),_0xb00b('0x103')]))[_0xb00b('0x57')](function(_0x278d9e){_0x34985d[_0xb00b('0xe7')](_0x278d9e,_0x1674ab[0x0],_0x399902,_0xdee547,_0x2057d1)[_0xb00b('0x57')](function(_0x26cd15){return _0x26cd15;})[_0xb00b('0x69')](function(_0xd2f1ba){throw _0xd2f1ba;});})[_0xb00b('0x69')](function(_0x5f1258){ut[_0xb00b('0x31')](_0xb00b('0x104'),_0x5f1258);throw ut['message'](_0xb00b('0x105'),_0xdee547,_0x2057d1);});}else{throw ut['message'](_0xde6b5['message'],_0xdee547,_0x2057d1);}})['catch'](function(_0x384a16){ut['logger'](_0xb00b('0x106'),_0x384a16);throw ut[_0xb00b('0x2e')](_0xb00b('0x105'),![],!![]);});};Preview[_0xb00b('0xd')][_0xb00b('0x100')]=function(_0x116ced){if(_[_0xb00b('0x40')](_0x116ced)||_[_0xb00b('0x107')](_0x116ced)||!_[_0xb00b('0x40')](_0x116ced[0x0][_0xb00b('0x5b')])&&_[_0xb00b('0x40')](_0x116ced[0x0][_0xb00b('0x5b')][_0xb00b('0x33')])){ut[_0xb00b('0x31')]('[Preview][validateContact][Empty\x20Contact]',_0x116ced);return{'isValid':![],'message':_0xb00b('0x108')};}var _0x15f9cd=this[_0xb00b('0x22')][_0x116ced[0x0][_0xb00b('0x42')][_0xb00b('0x33')]];_0x15f9cd['message']=utils[_0xb00b('0x2f')][_0xb00b('0x6f')];if(_['isNil'](_0x15f9cd)){ut['logger'](_0xb00b('0x109'),_0x15f9cd);return{'isValid':![],'message':_0xb00b('0x10a')};}if(!this[_0xb00b('0x6c')](_0x15f9cd[_0xb00b('0x10b')])){ut[_0xb00b('0x31')](_0xb00b('0x10c'),_0xb00b('0x10d')+_0x15f9cd[_0xb00b('0x33')]+_0xb00b('0x10e'));if(!this[_0xb00b('0x6c')](_0x15f9cd[_0xb00b('0x6d')])){ut['logger'](_0xb00b('0x10c'),_0x15f9cd['name']+_0xb00b('0x10f'));return{'isValid':![],'message':_0xb00b('0x110')};}}if(!ut[_0xb00b('0x111')](_0x15f9cd[_0xb00b('0x3b')])){ut[_0xb00b('0x31')](_0xb00b('0x112'),_0x15f9cd['name']+_0xb00b('0x113'));return{'isValid':![],'message':_0xb00b('0x10d')+_0x15f9cd[_0xb00b('0x33')]+_0xb00b('0x113')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0xb00b('0xd')][_0xb00b('0xe9')]=function(_0x58dbf6,_0x199ba1,_0x16cca9,_0x3c57b2){var _0xca4a87=this;return new Promise(function(_0x456515,_0x26145a){var _0x31fa5b=_0x58dbf6[_0xb00b('0x9c')];var _0x1ba141=_0xca4a87['isTrunkReachable'](_0x199ba1[_0xb00b('0x10b')])?util[_0xb00b('0x25')]('SIP/%s/%s%s',_0x199ba1[_0xb00b('0x10b')][_0xb00b('0x33')],_[_0xb00b('0x40')](_0x199ba1[_0xb00b('0x114')])?'':_0x199ba1[_0xb00b('0x114')][_0xb00b('0x115')]()||'',_0x199ba1[_0xb00b('0x116')]>0x0?_0x16cca9[_0xb00b('0x103')][_0xb00b('0x117')](_0x199ba1[_0xb00b('0x116')]):_0x16cca9[_0xb00b('0x103')]):util['format'](_0xb00b('0x118'),_[_0xb00b('0x40')](_0x199ba1[_0xb00b('0x6d')])?_0x199ba1['Trunk'][_0xb00b('0x33')]:_0x199ba1[_0xb00b('0x6d')][_0xb00b('0x33')],_[_0xb00b('0x40')](_0x199ba1['dialPrefix'])?'':_0x199ba1[_0xb00b('0x114')][_0xb00b('0x115')]()||'',_0x199ba1['dialCutDigit']>0x0?_0x16cca9['phone'][_0xb00b('0x117')](_0x199ba1[_0xb00b('0x116')]):_0x16cca9['phone']);var _0x1256a8=_0xca4a87['isTrunkReachable'](_0x199ba1['Trunk'])?ut[_0xb00b('0x119')](_0x199ba1['Trunk']['callerid'],_0x199ba1[_0xb00b('0x11a')],_0x199ba1[_0xb00b('0x11b')]>0x0?ut[_0xb00b('0x11c')](_0x199ba1[_0xb00b('0x11d')],_0x199ba1[_0xb00b('0x11b')]):_0x199ba1[_0xb00b('0x11d')]):ut[_0xb00b('0x119')](_[_0xb00b('0x40')](_0x199ba1[_0xb00b('0x6d')])?_0x199ba1[_0xb00b('0x10b')][_0xb00b('0x11e')]:_0x199ba1[_0xb00b('0x6d')][_0xb00b('0x11e')],_0x199ba1[_0xb00b('0x11a')],_0x199ba1['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xb00b('0x11c')](_0x199ba1[_0xb00b('0x11d')],_0x199ba1['dialRandomLastDigitCallerIdNumber']):_0x199ba1[_0xb00b('0x11d')]);if(_0x1256a8){_0x58dbf6['originatecalleridname']=ut[_0xb00b('0x11f')](_0x1256a8);_0x58dbf6[_0xb00b('0x120')]=ut[_0xb00b('0x121')](_0x1256a8);}var _0x5657ee=ut[_0xb00b('0x122')](_0x199ba1,_0x16cca9,_0x1ba141,_0x1256a8,_0x31fa5b,_0x58dbf6);_[_0xb00b('0x123')](_0x58dbf6,ut['toLowerVariables'](_0x5657ee));_0x58dbf6[_0xb00b('0x60')]=moment()[_0xb00b('0x25')](_0xb00b('0x88'));_0x199ba1[_0xb00b('0x124')]=_0x5657ee;var _0x57bfab=ut[_0xb00b('0x125')](_0x58dbf6,_0x199ba1,_0x5657ee,_0x58dbf6[_0xb00b('0x83')],_0x3c57b2);return ami[_0xb00b('0x4b')](_0x57bfab)['then'](function(_0x571811){_0x199ba1['originated']+=0x1;logger[_0xb00b('0x41')](_0xb00b('0x126'),_0x31fa5b,_0xb00b('0x9d'),_0x199ba1[_0xb00b('0x33')],_0xb00b('0x44'),_0x199ba1[_0xb00b('0xd6')]);_0x456515(_0x571811);})[_0xb00b('0x69')](function(_0x39b4c6){ut[_0xb00b('0xdd')](_0x58dbf6,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x58dbf6,_0xb00b('0x127'));_0x26145a(_0x39b4c6);});});};Preview[_0xb00b('0xd')]['syncNewExten']=function(_0x42fdce){if(this['actions'][_0x42fdce[_0xb00b('0x9f')]]){this['actions'][_0x42fdce[_0xb00b('0x9f')]][_0xb00b('0x4c')]=_0x42fdce['channel'];}};Preview[_0xb00b('0xd')][_0xb00b('0x16')]=function(_0x5573c9){var _0x44767a=this;var _0x4d4dbe=this[_0xb00b('0x13')][_0x5573c9[_0xb00b('0x128')]];if(_0x4d4dbe){if(_0x4d4dbe[_0xb00b('0x129')]&&this[_0xb00b('0x14')][_0x4d4dbe[_0xb00b('0x129')]]){ut[_0xb00b('0x12a')](_0x4d4dbe,this[_0xb00b('0x14')][_0x4d4dbe[_0xb00b('0x129')]][_0xb00b('0x33')],this[_0xb00b('0x14')][_0x4d4dbe['lookAgent']]['id']);}var _0x4cff99=_[_0xb00b('0x12b')](_0x4d4dbe);_0x4cff99['responsetime']=moment()[_0xb00b('0x25')]('YYYY-MM-DD\x20HH:mm:ss');var _0x198536=_0x44767a[_0xb00b('0x22')][_0x4d4dbe['queue']];if(ut[_0xb00b('0x12c')](_0x5573c9['response'])){if(_0x4d4dbe[_0xb00b('0x82')]){rpcDb[_0xb00b('0xfd')](_0x4d4dbe['idContact']);}if(_0x4d4dbe[_0xb00b('0x83')]){rpcDb[_0xb00b('0x5f')](_0x4d4dbe[_0xb00b('0x85')]);}ami[_0xb00b('0x23')](_0xb00b('0x12d'),ut['buildObj'](_0x4d4dbe,_0xb00b('0x12e'),this[_0xb00b('0x22')][_0x4d4dbe['queue']]));this['callProgressDetectingAgent'](_0x4cff99,_0x198536,_0x5573c9);}else{_0x4d4dbe[_0xb00b('0x60')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');ut['logAgent'](_0x4cff99,0x4,_0xb00b('0x12f'));rpcDb[_0xb00b('0xe0')](_0x4cff99,_0xb00b('0x130'));}}};Preview[_0xb00b('0xd')]['syncHangup']=function(_0xcaefbd){var _0x482fc4=this[_0xb00b('0x13')][_0xcaefbd[_0xb00b('0x9f')]];var _0x22f2f6;if(_0x482fc4){_0x22f2f6=this[_0xb00b('0x22')][_0x482fc4['queue']];logger[_0xb00b('0x41')](_0xb00b('0x131'),_0xcaefbd['linkedid'],_0xb00b('0x9d'),_0x22f2f6[_0xb00b('0x33')],_0xb00b('0x9e'),_0x22f2f6['pTalking']);}if(this['actions'][_0xcaefbd[_0xb00b('0x9f')]]&&_0xcaefbd[_0xb00b('0x9f')]!==_0xcaefbd[_0xb00b('0x9c')]){if(_0xcaefbd[_0xb00b('0x132')]==='16'&&this[_0xb00b('0x13')][_0xcaefbd[_0xb00b('0x9f')]][_0xb00b('0x46')]){this['callProgressDetectingCustomer'](_0xcaefbd,_0xcaefbd['linkedid'],_0xcaefbd[_0xb00b('0x132')]);}else if(this['actions'][_0xcaefbd['linkedid']][_0xb00b('0x46')]){logger[_0xb00b('0x41')]('[syncHangup][talking][cause]',_0xcaefbd[_0xb00b('0x9f')],_0xcaefbd[_0xb00b('0x132')],_0xb00b('0x9d'),_0x22f2f6['name'],_0xb00b('0x9e'),_0x22f2f6[_0xb00b('0x29')]);this[_0xb00b('0x133')](_0xcaefbd,_0xcaefbd[_0xb00b('0x9f')],_0xcaefbd[_0xb00b('0x132')]);}}else if(_0x482fc4&&_[_0xb00b('0x40')](_0x482fc4[_0xb00b('0x134')])&&_0x22f2f6['dialQueueProject']&&_0xcaefbd[_0xb00b('0x9f')]===_0xcaefbd[_0xb00b('0x9c')]&&_['isNil'](_0xcaefbd['reason'])&&_0xcaefbd['cause']==='16'&&_0xcaefbd[_0xb00b('0x135')]==='6'&&_[_0xb00b('0xda')](_0x482fc4[_0xb00b('0x136')])){if(_0x482fc4[_0xb00b('0x82')]){rpcDb[_0xb00b('0xfd')](_0x482fc4[_0xb00b('0x85')]);}if(_0x482fc4[_0xb00b('0x83')]){rpcDb['disableContact'](_0x482fc4['idContact']);}_0xcaefbd[_0xb00b('0xdc')]='22';this[_0xb00b('0xd9')](_0x482fc4,_0x22f2f6,_0xcaefbd);}else if(_0x482fc4&&_0x482fc4['transfer']){if(_0xcaefbd[_0xb00b('0x132')]==='16'&&this[_0xb00b('0x13')][_0xcaefbd['linkedid']][_0xb00b('0x46')]){logger['info'](_0xb00b('0x137'),_0xcaefbd['linkedid'],_0xcaefbd['cause'],'\x20Queue',_0x22f2f6[_0xb00b('0x33')],_0xb00b('0x9e'),_0x22f2f6[_0xb00b('0x29')]);this[_0xb00b('0x133')](_0xcaefbd,_0xcaefbd['linkedid'],_0xcaefbd[_0xb00b('0x132')]);}else if(this[_0xb00b('0x13')][_0xcaefbd[_0xb00b('0x9f')]][_0xb00b('0x46')]){logger[_0xb00b('0x41')](_0xb00b('0x138'),_0xcaefbd[_0xb00b('0x9f')],_0xcaefbd[_0xb00b('0x132')],_0xb00b('0x9d'),_0x22f2f6[_0xb00b('0x33')],'pTalking:\x20',_0x22f2f6['pTalking']);this[_0xb00b('0x133')](_0xcaefbd,_0xcaefbd[_0xb00b('0x9f')],_0xcaefbd[_0xb00b('0x132')]);}}};Preview[_0xb00b('0xd')][_0xb00b('0x1a')]=function(_0x1e0206){if(this[_0xb00b('0x13')][_0x1e0206[_0xb00b('0xd7')]]&&_0x1e0206[_0xb00b('0xd7')]!==_0x1e0206['destuniqueid']){this[_0xb00b('0x133')](_0x1e0206,_0x1e0206[_0xb00b('0xd7')],_0x1e0206[_0xb00b('0xcd')]);}};Preview[_0xb00b('0xd')]['syncHangupRequest']=function(_0x45ad1f){if(this[_0xb00b('0x13')][_0x45ad1f[_0xb00b('0x9f')]]&&_0x45ad1f[_0xb00b('0x9f')]!==_0x45ad1f[_0xb00b('0x9c')]&&!this[_0xb00b('0x13')][_0x45ad1f[_0xb00b('0x9f')]][_0xb00b('0x46')]){if(_0x45ad1f[_0xb00b('0x132')]==='1'){this['callProgressDetectingCustomer'](_0x45ad1f,_0x45ad1f['linkedid'],_0x45ad1f[_0xb00b('0x132')]);}}};Preview[_0xb00b('0xd')][_0xb00b('0x139')]=function(_0x121451,_0x2e9604,_0x19fce8){if(this[_0xb00b('0x13')][_0x121451]){if(_['isNil'](this[_0xb00b('0x13')][_0x121451][_0xb00b('0x124')])){this[_0xb00b('0x13')][_0x121451][_0xb00b('0x124')]={};}this[_0xb00b('0x13')][_0x121451][_0xb00b('0x124')][_0x2e9604]=_0x19fce8;}};Preview['prototype'][_0xb00b('0x13a')]=function(_0x1ec1c7){try{if(!_['isNil'](_0x1ec1c7)){if(ut[_0xb00b('0x13b')](_[_0xb00b('0x13c')](_0x1ec1c7[_0xb00b('0x13d')])[0x0])){this[_0xb00b('0x139')](_0x1ec1c7[_0xb00b('0x9c')],_[_0xb00b('0x13c')](_0x1ec1c7['variable'])[0x0],_0x1ec1c7['value']);}}}catch(_0x465238){logger['error']('[syncVarSet][Preview]',util['inspect'](_0x465238,{'showHidden':![],'depth':null}));}};Preview[_0xb00b('0xd')][_0xb00b('0x1f')]=function(_0x5a400c){if(_0x5a400c){if(this['actions'][_0x5a400c[_0xb00b('0x13e')]]){this[_0xb00b('0x13')][_0x5a400c[_0xb00b('0x13e')]][_0xb00b('0x136')]=!![];}}};Preview[_0xb00b('0xd')][_0xb00b('0x21')]=function(_0x3fd141){if(_0x3fd141){if(this[_0xb00b('0x13')][_0x3fd141[_0xb00b('0x13f')]]){this[_0xb00b('0x13')][_0x3fd141[_0xb00b('0x13f')]]['transfer']=!![];}}};module[_0xb00b('0x140')]=Preview;
\ No newline at end of file
+var _0x55ca=['syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','format','voice:queue:%s','name','originated','sendMessageOneNotActive','available','paused','message','CAMPAIGN_STATUS','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','prototype','loopCampaigns','syncCampaigns','hasOwnProperty','dialMethod','preview','booked','type','outbound','clockClearZombieChannels','clearZombieChannels','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','info','[clearZombieChannels][talking]','originated:\x20','queue','pTalking:\x20','pick','UserId','ListId','Action','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','dialAnswer','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','getContactRecallMe','agents','then','length','scheduledat','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','catch','starttime','outboundReCallsDay','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','setMessage','IsNotLoggedIn','NO_AGENTS_LOGGED','isActive','dialActive','Trunk','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','cloneAction','countnosuchnumberretry','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','unlockAgent','activeContact','linkedid','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','YYYY-MM-DD\x20HH:mm:ss','responsetime','answertime','pTalking','[syncHangup][talking][increment]','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','sumBillable','[syncHangup][talking][decrement]','uniqueid','outboundBusyCallsDay','countbusyretry','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','NOANSWER','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','Congestion','dialCongestionRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','outboundRejectCallsDay','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','countmachineretry','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','queueSummaryCountersUpdated','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','resolve','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','VoiceQueueId','Queue','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','Calling','[Preview][execCall][failure]','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','active','trunks','SIP/%s','status','reachable','unmonitored','run','unlock','disableContact','getContactPreview','recallme','validateContact','checkIsBlackList','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','dialPrefix','trim','substring','dialCutDigit','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','logLookAgent','clone','unlockContact','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','util','lodash','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','actions','originateresponse','syncOriginateResponse','bind','hangup','syncHangup'];(function(_0x3a5376,_0x15c952){var _0x3e3aed=function(_0x38d066){while(--_0x38d066){_0x3a5376['push'](_0x3a5376['shift']());}};_0x3e3aed(++_0x15c952);}(_0x55ca,0x126));var _0xa55c=function(_0x779496,_0x9b0b0b){_0x779496=_0x779496-0x0;var _0x472493=_0x55ca[_0x779496];return _0x472493;};'use strict';var util=require(_0xa55c('0x0'));var _=require(_0xa55c('0x1'));var uuid=require('uuid');var moment=require('moment');var Redis=require('ioredis');var config=require(_0xa55c('0x2'));var logger=require(_0xa55c('0x3'))('preview');var loggerAction=require(_0xa55c('0x3'))(_0xa55c('0x4'));var ami=require(_0xa55c('0x5'));var rpcDb=require(_0xa55c('0x6'));var cmHopperAdditionalPhone=require(_0xa55c('0x7'));var Action=require(_0xa55c('0x8'));var ut=require(_0xa55c('0x9'));var utils=require('../dialer/utils');config[_0xa55c('0xa')]=_[_0xa55c('0xb')](config['redis'],{'host':_0xa55c('0xc'),'port':0x18eb});var io=require(_0xa55c('0xd'))(new Redis(config['redis']));var Sequence=function(){};Sequence['prototype'][_0xa55c('0xe')]=function(_0x20c76a){this[_0xa55c('0xf')]=this[_0xa55c('0xf')]?this[_0xa55c('0xf')][_0xa55c('0x10')](_0x20c76a):_0x20c76a();};function Preview(_0x508342){this[_0xa55c('0x11')]=new Sequence();this[_0xa55c('0x12')]=_0x508342[_0xa55c('0x13')];this['trunks']=_0x508342['trunks'];this[_0xa55c('0x14')]={};this['agents']=_0x508342['agents'];this['clockClearZombieChannels']=0x0;ami['on'](_0xa55c('0x15'),this[_0xa55c('0x16')][_0xa55c('0x17')](this));ami['on'](_0xa55c('0x18'),this[_0xa55c('0x19')][_0xa55c('0x17')](this));ami['on']('hanguprequest',this[_0xa55c('0x1a')][_0xa55c('0x17')](this));ami['on'](_0xa55c('0x1b'),this[_0xa55c('0x1c')][_0xa55c('0x17')](this));ami['on'](_0xa55c('0x1d'),this[_0xa55c('0x1e')][_0xa55c('0x17')](this));ami['on'](_0xa55c('0x1f'),this['syncVarSet'][_0xa55c('0x17')](this));ami['on'](_0xa55c('0x20'),this[_0xa55c('0x21')][_0xa55c('0x17')](this));ami['on'](_0xa55c('0x22'),this[_0xa55c('0x23')]['bind'](this));this['loopCampaigns'](this[_0xa55c('0x12')]);}function emit(_0x3776ac,_0xade4c4,_0x4cfe10){io['to'](_0x3776ac)[_0xa55c('0x24')](_0xade4c4,_0x4cfe10);}function emitVoiceQueueChannelRemove(_0x2fcb90){logger['info'](_0xa55c('0x25'),JSON[_0xa55c('0x26')](_0x2fcb90));emit(util[_0xa55c('0x27')](_0xa55c('0x28'),_0x2fcb90[_0xa55c('0x29')]),'voice_queue_channel:remove',_0x2fcb90);io[_0xa55c('0x24')]('voice_queue_presence:remove',_0x2fcb90);}function notSendMessagesQueue(_0x5ba836){if(_0x5ba836['sendMessageOneNotActive']){if(_0x5ba836[_0xa55c('0x2a')]===0x0&&_0x5ba836['pTalking']===0x0){_0x5ba836[_0xa55c('0x2b')]=![];_0x5ba836[_0xa55c('0x2c')]=0x0;_0x5ba836[_0xa55c('0x2d')]=0x0;_0x5ba836[_0xa55c('0x2e')]=utils[_0xa55c('0x2f')][_0xa55c('0x30')];ut[_0xa55c('0x31')](_0xa55c('0x32'),_0x5ba836[_0xa55c('0x29')]+_0xa55c('0x33'));}else{_0x5ba836[_0xa55c('0x2e')]=utils['CAMPAIGN_STATUS'][_0xa55c('0x34')];ut[_0xa55c('0x31')](_0xa55c('0x32'),_0x5ba836[_0xa55c('0x29')]+'\x20is\x20deactivated');}}}Preview[_0xa55c('0x35')][_0xa55c('0x36')]=function(){var _0x1b8388=this;setInterval(function(){_0x1b8388[_0xa55c('0x37')]();},0x7cf);};Preview[_0xa55c('0x35')][_0xa55c('0x37')]=function(){var _0x52d37f=this[_0xa55c('0x12')];this['clockClearZombieChannels']+=0x1;for(var _0x35c9c2 in _0x52d37f){if(_0x52d37f[_0xa55c('0x38')](_0x35c9c2)&&(_0x52d37f[_0x35c9c2][_0xa55c('0x39')]===_0xa55c('0x3a')||_0x52d37f[_0x35c9c2]['dialMethod']===_0xa55c('0x3b'))&&_0x52d37f[_0x35c9c2][_0xa55c('0x3c')]===_0xa55c('0x3d')){if(this[_0xa55c('0x3e')]>0x7){this[_0xa55c('0x3e')]=0x0;this[_0xa55c('0x3f')]();}}if(_0x52d37f[_0xa55c('0x38')](_0x35c9c2)&&_0x52d37f[_0x35c9c2][_0xa55c('0x39')]===_0xa55c('0x3a')&&_0x52d37f[_0x35c9c2][_0xa55c('0x3c')]===_0xa55c('0x3d')){if(_0x52d37f[_0x35c9c2]['dialActive']){this['setMessage'](_0x52d37f[_0x35c9c2]);if(_0x52d37f[_0x35c9c2][_0xa55c('0x40')])this[_0xa55c('0x41')](_0x52d37f[_0x35c9c2]);}else{notSendMessagesQueue(_0x52d37f[_0x35c9c2]);}}}};Preview['prototype'][_0xa55c('0x42')]=function(_0x2f0110){var _0x2e9623=this;this[_0xa55c('0x11')][_0xa55c('0xe')](function(){if(!_[_0xa55c('0x43')](_0x2e9623[_0xa55c('0x14')][_0x2f0110])){loggerAction[_0xa55c('0x44')](_0xa55c('0x45'),_0x2f0110,'Queue',_0x2e9623['actions'][_0x2f0110]['queue'],_0xa55c('0x46'),JSON[_0xa55c('0x26')](_0x2e9623[_0xa55c('0x12')][_0x2e9623['actions'][_0x2f0110][_0xa55c('0x47')]]['originated']),_0xa55c('0x48'),JSON['stringify'](_0x2e9623[_0xa55c('0x12')][_0x2e9623[_0xa55c('0x14')][_0x2f0110][_0xa55c('0x47')]]['pTalking']),JSON[_0xa55c('0x26')](_0x2e9623[_0xa55c('0x14')][_0x2f0110]['dialAnswer']),JSON[_0xa55c('0x26')](_[_0xa55c('0x49')](_0x2e9623['actions'][_0x2f0110],['contactId',_0xa55c('0x4a'),'VoiceQueueId',_0xa55c('0x4b')])));return ami[_0xa55c('0x4c')]({'action':'status','channel':_0x2e9623['actions'][_0x2f0110]['channel']})['catch'](function(_0x3b3308){if(_0x3b3308[_0xa55c('0x2e')]===_0xa55c('0x4d')){setTimeout(function(){if(_0x2e9623[_0xa55c('0x14')][_0x2f0110]){ut[_0xa55c('0x4e')](_0x2e9623['campaignsPreview'][_0x2e9623[_0xa55c('0x14')][_0x2f0110][_0xa55c('0x47')]],_0xa55c('0x4f'));if(_0x2e9623[_0xa55c('0x14')][_0x2f0110][_0xa55c('0x50')]===!![]){ut[_0xa55c('0x51')](_0x2e9623['campaignsPreview'][_0x2e9623[_0xa55c('0x14')][_0x2f0110]['queue']],'[clearZombieChannel]');ut[_0xa55c('0x52')](_0xa55c('0x53')+_0x2f0110,_0x2e9623['actions'][_0x2f0110][_0xa55c('0x47')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x2f0110,_0x2e9623[_0xa55c('0x14')][_0x2f0110][_0xa55c('0x47')]);delete _0x2e9623[_0xa55c('0x14')][_0x2f0110];}},0x2328);}});}});};Preview['prototype'][_0xa55c('0x3f')]=function(){var _0xd5a006=this;loggerAction['info'](_0xa55c('0x54'),_['size'](this[_0xa55c('0x14')]));for(var _0x43a42d in this['actions']){if(_0xd5a006[_0xa55c('0x14')][_0xa55c('0x38')](_0x43a42d)){_0xd5a006['clearZombieChannel'](_0x43a42d);}}};Preview[_0xa55c('0x35')][_0xa55c('0x41')]=function(_0x204767){var _0x59a6c8=this;rpcDb[_0xa55c('0x55')](_0x204767['id'],ut['agentReadyId'](this[_0xa55c('0x56')]))[_0xa55c('0x57')](function(_0x451269){if(!_['isNil'](_0x451269)){for(var _0x41eab1=0x0;_0x41eab1<_0x451269[_0xa55c('0x58')];_0x41eab1+=0x1){if(ut['getDiff'](_0x451269[_0x41eab1][_0xa55c('0x59')])<_0x204767[_0xa55c('0x5a')]*0x3c){if(_0x451269[_0x41eab1]['Agent']&&!_0x451269[_0x41eab1][_0xa55c('0x5b')][_0xa55c('0x5c')]){_0x59a6c8['run'](_0x451269[_0x41eab1]['id'])[_0xa55c('0x57')](ut[_0xa55c('0x5d')](_0xa55c('0x5e')))[_0xa55c('0x5f')](ut['logger2'](_0xa55c('0x5e')));}else{rpcDb['disableContact'](_0x451269[_0x41eab1]['id']);}}else{var _0x2157d6=new Action(_0x451269[_0x41eab1],_0x204767);_0x2157d6[_0xa55c('0x60')]=moment()[_0xa55c('0x27')]('YYYY-MM-DD\x20HH:mm:ss');_0x204767[_0xa55c('0x61')]+=0x1;ut[_0xa55c('0x62')](_0x2157d6,0x17,'RecallInQueue');if(_0x204767[_0xa55c('0x63')]){rpcDb[_0xa55c('0x64')](ut[_0xa55c('0x65')](_0x451269[_0x41eab1]));rpcDb[_0xa55c('0x66')](_0x2157d6,_0xa55c('0x67'));}else{ut[_0xa55c('0x62')](_0x2157d6,0x16,_0xa55c('0x68'));rpcDb[_0xa55c('0x66')](_0x2157d6,_0xa55c('0x69'));rpcDb[_0xa55c('0x6a')](_0x2157d6,'[HistoryRecallClose]');}}}}})[_0xa55c('0x5f')](ut[_0xa55c('0x5d')](_0xa55c('0x6b')));};Preview['prototype'][_0xa55c('0x6c')]=function(_0x35bf0a){_0x35bf0a['sendMessageOneNotActive']=!![];if(ut[_0xa55c('0x6d')](_0x35bf0a['loggedIn'])){_0x35bf0a[_0xa55c('0x2e')]=utils[_0xa55c('0x2f')][_0xa55c('0x6e')];}else if(!ut[_0xa55c('0x6f')](_0x35bf0a[_0xa55c('0x70')])){_0x35bf0a['message']=utils[_0xa55c('0x2f')][_0xa55c('0x30')];}else if(!this['isTrunkReachable'](_0x35bf0a[_0xa55c('0x71')])){if(!this[_0xa55c('0x72')](_0x35bf0a[_0xa55c('0x73')])){_0x35bf0a[_0xa55c('0x2e')]=utils['CAMPAIGN_STATUS']['UNREACHABLE_TRUNK'];}else{_0x35bf0a[_0xa55c('0x2e')]=utils[_0xa55c('0x2f')][_0xa55c('0x74')];}}else{_0x35bf0a[_0xa55c('0x2e')]=utils['CAMPAIGN_STATUS'][_0xa55c('0x74')];}};Preview['prototype'][_0xa55c('0x75')]=function(_0x437ced,_0x20593d,_0x2ccfb1){var _0xec640=this;var _0x53b2f7=this[_0xa55c('0x14')][_0x20593d];var _0x54f776=this[_0xa55c('0x12')][_0x53b2f7[_0xa55c('0x47')]];var _0x2cfe08;var _0x1e1c5b=![];var _0x19aaf5=0x2;var _0x138c9e=0x3;if(_0x54f776){switch(_0x2ccfb1){case'1':_0x54f776[_0xa55c('0x76')]+=0x1;_0x53b2f7['countnosuchnumberretry']+=0x1;_0x53b2f7[_0xa55c('0x77')]=ut[_0xa55c('0x78')](_0x53b2f7);ut[_0xa55c('0x62')](_0x53b2f7,0x0,_0xa55c('0x79'));ami[_0xa55c('0x24')]('custom:agentnosuchnumber',ut[_0xa55c('0x7a')](_0x53b2f7,_0xa55c('0x7b')));rpcDb[_0xa55c('0x66')](_0x53b2f7,_0xa55c('0x7c'));_0xec640[_0xa55c('0x7d')](_0x53b2f7,'0',_0x54f776)['then'](function(_0xdd92c1){_0x1e1c5b=_0xdd92c1[_0xa55c('0x7e')]==0x1;_0x19aaf5=_0x54f776[_0xa55c('0x7f')];_0x138c9e=_0x54f776[_0xa55c('0x80')];if(!_0x1e1c5b){if(ut[_0xa55c('0x78')](_0x53b2f7)>=_0x54f776['dialGlobalMaxRetry']){_0x2cfe08=ut[_0xa55c('0x81')](_0x53b2f7,0xf,'Global');rpcDb[_0xa55c('0x6a')](_0x2cfe08,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x53b2f7[_0xa55c('0x82')]>=_0x54f776['dialNoSuchNumberMaxRetry']){rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0x83'));}else{rpcDb[_0xa55c('0x84')](ut[_0xa55c('0x85')](_0x53b2f7,_0xa55c('0x82'),_0x54f776[_0xa55c('0x7f')]),_0x53b2f7[_0xa55c('0x86')],_0x53b2f7[_0xa55c('0x87')]);}}delete this[_0xa55c('0x14')][_0x437ced[_0xa55c('0x88')]];}else{_0x53b2f7['countnosuchnumberretry']++;logger[_0xa55c('0x44')](_0xa55c('0x89'),_0x53b2f7['countnosuchnumberretry']);logger[_0xa55c('0x44')]('id',_0x53b2f7[_0xa55c('0x8a')]);_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countnosuchnumberretry':_0x53b2f7[_0xa55c('0x82')]}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});});}});break;case'ANSWER':var _0x1dfaf7=moment()[_0xa55c('0x27')](_0xa55c('0x8d'));_0x53b2f7[_0xa55c('0x8e')]=_0x1dfaf7;_0x53b2f7[_0xa55c('0x8f')]=_0x1dfaf7;_0x53b2f7[_0xa55c('0x50')]=!![];_0x54f776[_0xa55c('0x90')]+=0x1;logger[_0xa55c('0x44')](_0xa55c('0x91'),_0x53b2f7['uniqueid'],_0xa55c('0x92'),_0x54f776[_0xa55c('0x29')],_0xa55c('0x48'),_0x54f776[_0xa55c('0x90')]);ami[_0xa55c('0x24')](_0xa55c('0x93'),ut[_0xa55c('0x7a')](_0x53b2f7,_0xa55c('0x94'),this[_0xa55c('0x12')][_0x53b2f7[_0xa55c('0x47')]]));if(_0x54f776[_0xa55c('0x95')]){ami['emit'](_0xa55c('0x96'),ut['buildAcw'](_0x53b2f7));}break;case'16':ami[_0xa55c('0x24')](_0xa55c('0x97'),ut[_0xa55c('0x7a')](_0x53b2f7,'complete',this['campaignsPreview'][_0x53b2f7[_0xa55c('0x47')]]));emitVoiceQueueChannelRemove(ut[_0xa55c('0x7a')](_0x53b2f7,_0xa55c('0x98')));_0x54f776[_0xa55c('0x99')]+=0x1;_0x54f776['total']+=0x1;_0x54f776[_0xa55c('0x9a')]+=0x1;ut[_0xa55c('0x51')](_0x54f776,_0xa55c('0x9b'));_0x53b2f7[_0xa55c('0x77')]=ut[_0xa55c('0x78')](_0x53b2f7);ut['logCustomer'](_0x53b2f7,0x4,'Answer');rpcDb[_0xa55c('0x66')](_0x53b2f7,_0xa55c('0x9c'));rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0x9d'));rpcDb[_0xa55c('0x9e')](_0x53b2f7);_0x54f776['sumDuration']+=_0x53b2f7[_0xa55c('0x9f')];_0x54f776[_0xa55c('0xa0')]+=_0x53b2f7['talktime'];logger[_0xa55c('0x44')](_0xa55c('0xa1'),_0x53b2f7[_0xa55c('0xa2')],'\x20Queue',_0x54f776[_0xa55c('0x29')],_0xa55c('0x48'),_0x54f776[_0xa55c('0x90')]);delete this[_0xa55c('0x14')][_0x437ced[_0xa55c('0x88')]];break;case'BUSY':_0x54f776[_0xa55c('0xa3')]+=0x1;_0x53b2f7[_0xa55c('0xa4')]+=0x1;_0x53b2f7['countglobal']=ut['totalGlobal'](_0x53b2f7);ut[_0xa55c('0x62')](_0x53b2f7,0x5,'Busy');_0x19aaf5=_0x54f776[_0xa55c('0xa5')];_0x138c9e=_0x54f776[_0xa55c('0x80')];ami[_0xa55c('0x24')](_0xa55c('0xa6'),ut[_0xa55c('0x7a')](_0x53b2f7,_0xa55c('0xa7')));rpcDb[_0xa55c('0x66')](_0x53b2f7,_0xa55c('0xa8'));_0xec640[_0xa55c('0x7d')](_0x53b2f7,'5',_0x54f776)['then'](function(_0x463195){_0x1e1c5b=_0x463195[_0xa55c('0x7e')]==0x1;if(!_0x1e1c5b){if(ut[_0xa55c('0x78')](_0x53b2f7)>=_0x54f776[_0xa55c('0xa9')]){_0x2cfe08=ut['cloneAction'](_0x53b2f7,0xf,_0xa55c('0xaa'));rpcDb[_0xa55c('0x6a')](_0x2cfe08,_0xa55c('0xab'));}else{if(_0x53b2f7[_0xa55c('0xa4')]>=_0x54f776['dialBusyMaxRetry']){rpcDb['createCustomerFinal'](_0x53b2f7,_0xa55c('0xa8'));}else{rpcDb[_0xa55c('0x84')](ut[_0xa55c('0x85')](_0x53b2f7,_0xa55c('0xa4'),_0x54f776['dialBusyRetryFrequency']),_0x53b2f7['unlockAgent'],_0x53b2f7[_0xa55c('0x87')]);}}}else{_0x53b2f7[_0xa55c('0xa4')]++;_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countbusyretry':_0x53b2f7[_0xa55c('0xa4')]}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)['then'](function(){});});}});break;case _0xa55c('0xac'):_0x54f776['outboundNoAnswerCallsDay']+=0x1;_0x53b2f7[_0xa55c('0xad')]+=0x1;_0x53b2f7['countglobal']=ut[_0xa55c('0x78')](_0x53b2f7);ut[_0xa55c('0x62')](_0x53b2f7,0x3,_0xa55c('0xae'));_0x19aaf5=_0x54f776[_0xa55c('0xaf')];_0x138c9e=_0x54f776[_0xa55c('0x80')];var _0x402f02=ut[_0xa55c('0xb0')](_0x53b2f7,_0x54f776);ami[_0xa55c('0x24')]('custom:agentnoanswer',_0x402f02);rpcDb['createCustomerHistory'](_0x53b2f7,_0xa55c('0xb1'));_0xec640[_0xa55c('0x7d')](_0x53b2f7,'3',_0x54f776)[_0xa55c('0x57')](function(_0x256db0){_0x1e1c5b=_0x256db0[_0xa55c('0x7e')]==0x1;if(!_0x1e1c5b){if(ut[_0xa55c('0x78')](_0x53b2f7)>=_0x54f776['dialGlobalMaxRetry']){_0x2cfe08=ut[_0xa55c('0x81')](_0x53b2f7,0xf,_0xa55c('0xaa'));rpcDb[_0xa55c('0x6a')](_0x2cfe08,_0xa55c('0xb2'));}else{if(_0x53b2f7[_0xa55c('0xad')]>=_0x54f776[_0xa55c('0xb3')]){rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0xb1'));}else{rpcDb['rescheduleContact'](ut[_0xa55c('0x85')](_0x53b2f7,_0xa55c('0xad'),_0x54f776[_0xa55c('0xaf')]),_0x53b2f7[_0xa55c('0x86')],_0x53b2f7[_0xa55c('0x87')]);}}}else{_0x53b2f7['countnoanswerretry']++;_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countnoanswerretry':_0x53b2f7['countnoanswerretry']}})['then'](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});});}});break;case'CONGESTION':_0x54f776['outboundCongestionCallsDay']+=0x1;_0x53b2f7['countcongestionretry']+=0x1;_0x53b2f7['countglobal']=ut[_0xa55c('0x78')](_0x53b2f7);ut[_0xa55c('0x62')](_0x53b2f7,0x8,_0xa55c('0xb4'));_0x19aaf5=_0x54f776[_0xa55c('0xb5')];_0x138c9e=_0x54f776[_0xa55c('0x80')];ami[_0xa55c('0x24')]('custom:agentcongestion',ut[_0xa55c('0x7a')](_0x53b2f7,_0xa55c('0xb6')));rpcDb[_0xa55c('0x66')](_0x53b2f7,_0xa55c('0xb7'));_0xec640['verifyAdditionalPhones'](_0x53b2f7,'8',_0x54f776)[_0xa55c('0x57')](function(_0x25e4e0){_0x1e1c5b=_0x25e4e0[_0xa55c('0x7e')]==0x1;if(!_0x1e1c5b){if(ut['totalGlobal'](_0x53b2f7)>=_0x54f776[_0xa55c('0xa9')]){_0x2cfe08=ut['cloneAction'](_0x53b2f7,0xf,'Global');rpcDb[_0xa55c('0x6a')](_0x2cfe08,_0xa55c('0xb8'));}else{if(_0x53b2f7[_0xa55c('0xb9')]>=_0x54f776[_0xa55c('0xba')]){rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0xb7'));}else{rpcDb[_0xa55c('0x84')](ut['scheduledAt'](_0x53b2f7,'countcongestionretry',_0x54f776[_0xa55c('0xa5')]),_0x53b2f7[_0xa55c('0x86')],_0x53b2f7[_0xa55c('0x87')]);}}}else{_0x53b2f7[_0xa55c('0xb9')]++;_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countcongestionretry':_0x53b2f7[_0xa55c('0xb9')]}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});});}});break;case'CANCEL':_0x54f776[_0xa55c('0xbb')]+=0x1;_0x53b2f7[_0xa55c('0xbc')]+=0x1;_0x53b2f7['countglobal']=ut[_0xa55c('0x78')](_0x53b2f7);ut['logCustomer'](_0x53b2f7,0x14,_0xa55c('0xbd'));_0x19aaf5=_0x54f776[_0xa55c('0xbe')];_0x138c9e=_0x54f776[_0xa55c('0x80')];ami[_0xa55c('0x24')](_0xa55c('0xbf'),ut['buildObj'](_0x53b2f7,_0xa55c('0xc0')));rpcDb[_0xa55c('0x66')](_0x53b2f7,_0xa55c('0xc1'));_0xec640[_0xa55c('0x7d')](_0x53b2f7,'20',_0x54f776)[_0xa55c('0x57')](function(_0x31287c){_0x1e1c5b=_0x31287c[_0xa55c('0x7e')]==0x1;if(!_0x1e1c5b){if(ut['totalGlobal'](_0x53b2f7)>=_0x54f776['dialGlobalMaxRetry']){_0x2cfe08=ut['cloneAction'](_0x53b2f7,0x14,_0xa55c('0xbd'));rpcDb['createCustomerFinal'](_0x2cfe08,_0xa55c('0xc2'));}else{if(_0x53b2f7[_0xa55c('0xbc')]>=_0x54f776[_0xa55c('0xc3')]){rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0xc2'));}else{rpcDb['rescheduleContact'](ut[_0xa55c('0x85')](_0x53b2f7,'countagentrejectretry',_0x54f776[_0xa55c('0xbe')]),_0x53b2f7[_0xa55c('0x86')],_0x53b2f7[_0xa55c('0x87')]);}}}else{_0x53b2f7[_0xa55c('0xad')]++;_0xec640['incrementPreviewCounters']({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countnoanswerretry':_0x53b2f7[_0xa55c('0xad')]}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});});}});break;case _0xa55c('0xc4'):_0x54f776[_0xa55c('0xc5')]+=0x1;_0x53b2f7[_0xa55c('0xc6')]+=0x1;_0x53b2f7['countglobal']=ut[_0xa55c('0x78')](_0x53b2f7);ut[_0xa55c('0x62')](_0x53b2f7,0xb,_0xa55c('0xc7'));rpcDb[_0xa55c('0x66')](_0x53b2f7,_0xa55c('0xc8'));_0xec640[_0xa55c('0x7d')](_0x53b2f7,'11',_0x54f776)['then'](function(_0x46124b){_0x1e1c5b=_0x46124b['additional']==0x1;if(!_0x1e1c5b){if(ut[_0xa55c('0x78')](_0x53b2f7)>=_0x54f776['dialGlobalMaxRetry']){_0x2cfe08=ut[_0xa55c('0x81')](_0x53b2f7,0xf,_0xa55c('0xaa'));rpcDb[_0xa55c('0x6a')](_0x2cfe08,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x53b2f7[_0xa55c('0xc9')]>=_0x54f776[_0xa55c('0xca')]){rpcDb[_0xa55c('0x6a')](_0x53b2f7,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xa55c('0x84')](ut['scheduledAt'](_0x53b2f7,_0xa55c('0xc6'),_0x54f776[_0xa55c('0xcb')]),_0x53b2f7['unlockAgent'],_0x53b2f7[_0xa55c('0x87')]);}}}else{_0x53b2f7['countnoanswerretry']++;_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countnoanswerretry':_0x53b2f7['countnoanswerretry']}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)['then'](function(){});});}});break;case'18':_0x54f776[_0xa55c('0xcc')]+=0x1;_0x53b2f7[_0xa55c('0xcd')]+=0x1;_0x53b2f7['countglobal']=ut[_0xa55c('0x78')](_0x53b2f7);ut['logCustomer'](_0x53b2f7,0x12,_0x437ced['cause-txt']||_0x437ced[_0xa55c('0xce')]);ami[_0xa55c('0x24')](_0xa55c('0xcf'),ut[_0xa55c('0x7a')](_0x53b2f7,'amd'));rpcDb[_0xa55c('0x66')](_0x53b2f7,'[callProgressDetectingCustomer][hangupInAMD]');_0xec640[_0xa55c('0x7d')](_0x53b2f7,'18',_0x54f776)['then'](function(_0x4ab9f1){_0x1e1c5b=_0x4ab9f1['additional']==0x1;if(!_0x1e1c5b){if(ut[_0xa55c('0x78')](_0x53b2f7)>=_0x54f776['dialGlobalMaxRetry']){_0x2cfe08=ut['cloneAction'](_0x53b2f7,0x12,_0xa55c('0xaa'));rpcDb[_0xa55c('0x6a')](_0x2cfe08,_0xa55c('0xd0'));}else{rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0xd0'));}}else{_0x53b2f7[_0xa55c('0xad')]++;_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countnoanswerretry':_0x53b2f7[_0xa55c('0xad')]}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});});}});delete this[_0xa55c('0x14')][_0x437ced['linkedid']];break;case'19':_0x54f776[_0xa55c('0xcc')]+=0x1;_0x53b2f7['countglobal']=ut['totalGlobal'](_0x53b2f7);ut['logCustomer'](_0x53b2f7,0x13,_0x437ced[_0xa55c('0xd1')]||_0x437ced['dialstatus']);ami[_0xa55c('0x24')]('custom:amd',ut[_0xa55c('0x7a')](_0x53b2f7,'amd'));rpcDb['createCustomerHistory'](_0x53b2f7,_0xa55c('0xd2'));_0xec640['verifyAdditionalPhones'](_0x53b2f7,'18',_0x54f776)['then'](function(_0x2961b6){_0x1e1c5b=_0x2961b6[_0xa55c('0x7e')]==0x1;if(!_0x1e1c5b){if(ut['totalGlobal'](_0x53b2f7)>=_0x54f776[_0xa55c('0xa9')]){_0x2cfe08=ut['cloneAction'](_0x53b2f7,0xf,_0xa55c('0xaa'));rpcDb[_0xa55c('0x6a')](_0x2cfe08,_0xa55c('0xd2'));}else{rpcDb['createCustomerFinal'](_0x53b2f7,'[callProgressDetectingCustomer][machine]');}}else{_0x53b2f7[_0xa55c('0xad')]++;_0xec640[_0xa55c('0x8b')]({'id':_0x53b2f7[_0xa55c('0x8a')],'field':{'countnoanswerretry':_0x53b2f7[_0xa55c('0xad')]}})[_0xa55c('0x57')](function(){_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});});}});delete this[_0xa55c('0x14')][_0x437ced['linkedid']];break;default:if(_0x53b2f7[_0xa55c('0x50')]){ut[_0xa55c('0x51')](_0x54f776,_0xa55c('0xd3'));ut[_0xa55c('0x52')](_0xa55c('0xd4')+_0x54f776[_0xa55c('0x29')],_0x437ced);}_0x54f776[_0xa55c('0xcc')]+=0x1;_0x53b2f7[_0xa55c('0x77')]=ut[_0xa55c('0x78')](_0x53b2f7);ut['logCustomer'](_0x53b2f7,0xc,_0x437ced[_0xa55c('0xd1')]||_0x437ced[_0xa55c('0xce')]);_0x19aaf5=_0x54f776[_0xa55c('0xbe')];_0x138c9e=_0x54f776['callAdditionalPhoneAfterMin'];rpcDb['createCustomerHistory'](_0x53b2f7,'[callProgressDetectingCustomer][logUnknown]');_0xec640[_0xa55c('0x7d')](_0x53b2f7,'20',_0x54f776)['then'](function(_0x1ba04f){_0x1e1c5b=_0x1ba04f[_0xa55c('0x7e')]==0x1;if(!_0x1e1c5b){if(ut[_0xa55c('0x78')](_0x53b2f7)>=_0x54f776[_0xa55c('0xa9')]){_0x2cfe08=ut[_0xa55c('0x81')](_0x53b2f7,0xf,_0xa55c('0xaa'));rpcDb[_0xa55c('0x6a')](_0x2cfe08,_0xa55c('0xd5'));}else{rpcDb[_0xa55c('0x6a')](_0x53b2f7,_0xa55c('0xd5'));}delete this[_0xa55c('0x14')][_0x437ced[_0xa55c('0x88')]];}else{_0xec640[_0xa55c('0x8c')](_0x53b2f7,_0x19aaf5,_0x138c9e)[_0xa55c('0x57')](function(){});}});}if(!(_0x53b2f7[_0xa55c('0x50')]&&_0x2ccfb1==='16')){ut[_0xa55c('0x4e')](_0x54f776,_0xa55c('0xd6'));logger[_0xa55c('0x44')](_0xa55c('0xd7'),_0x53b2f7[_0xa55c('0xa2')],_0xa55c('0x92'),_0x54f776[_0xa55c('0x29')],_0xa55c('0x46'),_0x54f776[_0xa55c('0x2a')]);}if(_0x2ccfb1!=='ANSWER'){delete this[_0xa55c('0x14')][_0x437ced[_0xa55c('0x88')]];delete this['actions'][_0x437ced[_0xa55c('0xd8')]];}_0x54f776[_0xa55c('0xd9')]=!![];}};Preview[_0xa55c('0x35')][_0xa55c('0xda')]=function(_0x31767b,_0x4d9b66,_0x456dd4){if(_['isUndefined'](_0x4d9b66)&&'object'!==typeof _0x4d9b66){return;}if(_[_0xa55c('0xdb')](_0x456dd4)&&_0xa55c('0xdc')!==typeof _0x456dd4){return;}switch(_0x456dd4[_0xa55c('0xdd')]){case'0':ut[_0xa55c('0xde')](_0x31767b,0x0,_0xa55c('0x79'));rpcDb[_0xa55c('0xdf')](_0x31767b,_0xa55c('0xe0'));break;case'3':ut[_0xa55c('0xde')](_0x31767b,0x3,_0xa55c('0xae'));rpcDb[_0xa55c('0xdf')](_0x31767b,_0xa55c('0xe1'));break;case'5':ut[_0xa55c('0xde')](_0x31767b,0x5,_0xa55c('0xe2'));rpcDb[_0xa55c('0xdf')](_0x31767b,_0xa55c('0xe3'));break;case'8':ut[_0xa55c('0xde')](_0x31767b,0x8,_0xa55c('0xb4'));rpcDb[_0xa55c('0xdf')](_0x31767b,_0xa55c('0xe4'));break;case'22':ut['logAgent'](_0x31767b,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x31767b,_0xa55c('0xe5'));break;default:ut[_0xa55c('0xde')](_0x31767b,0xc,_0x456dd4['reason']);rpcDb[_0xa55c('0xdf')](_0x31767b,'[callProgressDetectingAgent][logCongestion]');}ut[_0xa55c('0x4e')](_0x4d9b66,'[callProgressDetectingAgent]');logger[_0xa55c('0x44')](_0xa55c('0xe6'),_0x31767b[_0xa55c('0xa2')],_0xa55c('0x92'),_0x4d9b66[_0xa55c('0x29')],_0xa55c('0x46'),_0x4d9b66[_0xa55c('0x2a')]);delete this[_0xa55c('0x14')][_0x31767b[_0xa55c('0xa2')]];};Preview[_0xa55c('0x35')][_0xa55c('0x7d')]=function(_0x53f209,_0x59f3a4,_0xde7bd){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x53f209,_0x59f3a4,_0xde7bd)[_0xa55c('0x5f')](logger['info'](_0xa55c('0xe7')));};Preview[_0xa55c('0x35')][_0xa55c('0x8c')]=function(_0x5b20c5,_0x3b8f15,_0x18584c){return cmHopperAdditionalPhone[_0xa55c('0x8c')](_0x5b20c5,_0x3b8f15,_0x18584c)['catch'](logger[_0xa55c('0x44')]('[swapAdditionalPhone]\x20'));};Preview[_0xa55c('0x35')]['incrementPreviewCounters']=function(_0x4e8433){return Promise[_0xa55c('0xe8')]()[_0xa55c('0x57')](cmHopperAdditionalPhone[_0xa55c('0x8b')](_0x4e8433))['catch'](logger[_0xa55c('0x44')](_0xa55c('0xe9')));};Preview[_0xa55c('0x35')][_0xa55c('0xea')]=function(_0x4399bd,_0x3e9384,_0x2e76ad,_0x24db74,_0x4b1762){var _0x402298=this;return new Promise(function(_0x1b8b05,_0x80befe){if(_[_0xa55c('0x43')](_0x3e9384)||_[_0xa55c('0x43')](_0x3e9384[_0xa55c('0xeb')])||_[_0xa55c('0x43')](_0x3e9384[_0xa55c('0xec')])||_[_0xa55c('0x43')](_0x3e9384[_0xa55c('0xed')])){_0x80befe(ut[_0xa55c('0x2e')]('Contact\x20is\x20undefined',_0x24db74,_0x4b1762));return;}var _0x263d16=uuid['v4']();var _0x48127c=_0x402298['campaignsPreview'][_0x3e9384[_0xa55c('0xee')]['name']];var _0x427e3b=_0x2e76ad?_0x402298['agents'][_0x2e76ad]['id']:undefined;_0x402298[_0xa55c('0x14')][_0x263d16]=new Action(_0x3e9384,_0x48127c,_0x263d16,_0x2e76ad,_0x427e3b);var _0x231499=_0x402298[_0xa55c('0x14')][_0x263d16];_0x231499[_0xa55c('0x86')]=_0x24db74;_0x231499[_0xa55c('0x87')]=_0x4b1762;_0x231499[_0xa55c('0xef')]=_0x2e76ad;if(_[_0xa55c('0xf0')](_0x4399bd)){_0x402298['execCall'](_0x231499,_0x48127c,_0x3e9384,_0x2e76ad)[_0xa55c('0x57')](function(_0x590c0c){logger['info'](_0xa55c('0xf1'),_0xa55c('0xf2')+_0x231499['queue']+_0xa55c('0xf3')+_0x231499[_0xa55c('0x8a')],JSON[_0xa55c('0x26')](_0x590c0c));ami['emit']('custom:agentcalled',ut['buildObj'](_0x231499,'called',_0x402298[_0xa55c('0x12')][_0x231499[_0xa55c('0x47')]]));_0x1b8b05(ut['message'](_0xa55c('0xf4')));})[_0xa55c('0x5f')](function(_0x3b3be0){ut['logger'](_0xa55c('0xf5'),_0x3b3be0);_0x80befe(ut['message']('Call\x20failed',_0x24db74,_0x4b1762));});}else{_0x48127c['outboundBlacklistCallsDay']+=0x1;ut[_0xa55c('0xf6')](_0x231499);rpcDb['createHistory'](_0x231499,_0xa55c('0xf7'));delete _0x402298['actions'][_0x263d16];_0x80befe(ut[_0xa55c('0x2e')](_0xa55c('0xf8'),_0x24db74,_0x4b1762));}});};Preview[_0xa55c('0x35')]['isTrunkReachable']=function(_0x1c016d){return!_[_0xa55c('0x43')](_0x1c016d)&&!_[_0xa55c('0x43')](_0x1c016d[_0xa55c('0x29')])&&!_[_0xa55c('0x43')](_0x1c016d[_0xa55c('0xf9')])&&_0x1c016d[_0xa55c('0xf9')]&&!_[_0xa55c('0x43')](this[_0xa55c('0xfa')][util['format'](_0xa55c('0xfb'),_0x1c016d[_0xa55c('0x29')])])&&!_[_0xa55c('0x43')](this[_0xa55c('0xfa')][util[_0xa55c('0x27')](_0xa55c('0xfb'),_0x1c016d['name'])][_0xa55c('0xfc')])&&(this['trunks'][util[_0xa55c('0x27')](_0xa55c('0xfb'),_0x1c016d['name'])][_0xa55c('0xfc')]===_0xa55c('0xfd')||this['trunks'][util['format'](_0xa55c('0xfb'),_0x1c016d[_0xa55c('0x29')])][_0xa55c('0xfc')]===_0xa55c('0xfe'));};Preview[_0xa55c('0x35')][_0xa55c('0xff')]=function(_0x31b866,_0x37ed47){return this['execRun'](_0x31b866,_0x37ed47)[_0xa55c('0x57')](function(_0x331595){return _[_0xa55c('0x49')](_0x331595,[_0xa55c('0x2e')]);})[_0xa55c('0x5f')](function(_0x59a69d){if(_0x59a69d[_0xa55c('0x100')]){rpcDb['unlockContact'](_0x31b866);}if(_0x59a69d['active']){rpcDb[_0xa55c('0x101')](_0x31b866);}throw _[_0xa55c('0x49')](_0x59a69d,[_0xa55c('0x2e')]);});};Preview[_0xa55c('0x35')]['execRun']=function(_0x125812,_0x155c6e){var _0xa22273=this;var _0x1c7506,_0x3b76df;return rpcDb[_0xa55c('0x102')](_0x125812)[_0xa55c('0x57')](function(_0x239b2e){if(!_['isNil'](_0x239b2e[0x0])){_0x3b76df=_0x239b2e[0x0][_0xa55c('0x103')]?![]:!![];_0x1c7506=_0x239b2e[0x0][_0xa55c('0x103')]?!![]:![];_0x1c7506=_0x155c6e?!![]:_0x1c7506;}var _0x2639cc=_0xa22273[_0xa55c('0x104')](_0x239b2e);if(_0x2639cc['isValid']){rpcDb[_0xa55c('0x105')](_[_0xa55c('0x49')](_0x239b2e[0x0],[_0xa55c('0xed'),'phone']))[_0xa55c('0x57')](function(_0x3a67fb){_0xa22273[_0xa55c('0xea')](_0x3a67fb,_0x239b2e[0x0],_0x155c6e,_0x3b76df,_0x1c7506)[_0xa55c('0x57')](function(_0x19e506){return _0x19e506;})[_0xa55c('0x5f')](function(_0x127c2f){throw _0x127c2f;});})['catch'](function(_0xcd4f3a){ut[_0xa55c('0x31')]('[Preview][checkIsBlackList]',_0xcd4f3a);throw ut[_0xa55c('0x2e')](_0xa55c('0x106'),_0x3b76df,_0x1c7506);});}else{throw ut[_0xa55c('0x2e')](_0x2639cc['message'],_0x3b76df,_0x1c7506);}})['catch'](function(_0x4dba17){ut[_0xa55c('0x31')](_0xa55c('0x107'),_0x4dba17);throw ut['message']('Call\x20unsuccessful',![],!![]);});};Preview[_0xa55c('0x35')][_0xa55c('0x104')]=function(_0x591ee3){if(_['isNil'](_0x591ee3)||_[_0xa55c('0xf0')](_0x591ee3)||!_[_0xa55c('0x43')](_0x591ee3[0x0][_0xa55c('0x5b')])&&_['isNil'](_0x591ee3[0x0]['Agent'][_0xa55c('0x29')])){ut['logger'](_0xa55c('0x108'),_0x591ee3);return{'isValid':![],'message':_0xa55c('0x109')};}var _0x5a4e69=this[_0xa55c('0x12')][_0x591ee3[0x0]['Queue']['name']];_0x5a4e69['message']=utils['CAMPAIGN_STATUS']['ACTIVE'];if(_[_0xa55c('0x43')](_0x5a4e69)){ut['logger'](_0xa55c('0x10a'),_0x5a4e69);return{'isValid':![],'message':_0xa55c('0x10b')};}if(!this[_0xa55c('0x72')](_0x5a4e69['Trunk'])){ut[_0xa55c('0x31')](_0xa55c('0x10c'),_0xa55c('0x10d')+_0x5a4e69[_0xa55c('0x29')]+_0xa55c('0x10e'));if(!this[_0xa55c('0x72')](_0x5a4e69[_0xa55c('0x73')])){ut[_0xa55c('0x31')](_0xa55c('0x10c'),_0x5a4e69[_0xa55c('0x29')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0xa55c('0x10f')};}}if(!ut[_0xa55c('0x6f')](_0x5a4e69['dialActive'])){ut[_0xa55c('0x31')](_0xa55c('0x110'),_0x5a4e69[_0xa55c('0x29')]+_0xa55c('0x111'));return{'isValid':![],'message':_0xa55c('0x10d')+_0x5a4e69[_0xa55c('0x29')]+_0xa55c('0x111')};}return{'isValid':!![],'message':_0xa55c('0x112')};};Preview[_0xa55c('0x35')][_0xa55c('0x113')]=function(_0x131288,_0x197953,_0x262d72,_0x228d12){var _0x16e229=this;return new Promise(function(_0x5c8713,_0x2d03b2){var _0x4b2e75=_0x131288[_0xa55c('0xa2')];var _0x3d0c6d=_0x16e229[_0xa55c('0x72')](_0x197953[_0xa55c('0x71')])?util['format'](_0xa55c('0x114'),_0x197953[_0xa55c('0x71')][_0xa55c('0x29')],_['isNil'](_0x197953[_0xa55c('0x115')])?'':_0x197953[_0xa55c('0x115')][_0xa55c('0x116')]()||'',_0x197953['dialCutDigit']>0x0?_0x262d72[_0xa55c('0xec')][_0xa55c('0x117')](_0x197953[_0xa55c('0x118')]):_0x262d72['phone']):util[_0xa55c('0x27')]('SIP/%s/%s%s',_[_0xa55c('0x43')](_0x197953[_0xa55c('0x73')])?_0x197953[_0xa55c('0x71')][_0xa55c('0x29')]:_0x197953[_0xa55c('0x73')]['name'],_[_0xa55c('0x43')](_0x197953[_0xa55c('0x115')])?'':_0x197953[_0xa55c('0x115')]['trim']()||'',_0x197953[_0xa55c('0x118')]>0x0?_0x262d72[_0xa55c('0xec')][_0xa55c('0x117')](_0x197953['dialCutDigit']):_0x262d72[_0xa55c('0xec')]);var _0x2becbd=_0x16e229[_0xa55c('0x72')](_0x197953[_0xa55c('0x71')])?ut[_0xa55c('0x119')](_0x197953[_0xa55c('0x71')][_0xa55c('0x11a')],_0x197953['dialOriginateCallerIdName'],_0x197953[_0xa55c('0x11b')]>0x0?ut[_0xa55c('0x11c')](_0x197953[_0xa55c('0x11d')],_0x197953[_0xa55c('0x11b')]):_0x197953['dialOriginateCallerIdNumber']):ut[_0xa55c('0x119')](_[_0xa55c('0x43')](_0x197953[_0xa55c('0x73')])?_0x197953[_0xa55c('0x71')][_0xa55c('0x11a')]:_0x197953[_0xa55c('0x73')][_0xa55c('0x11a')],_0x197953['dialOriginateCallerIdName'],_0x197953[_0xa55c('0x11b')]>0x0?ut[_0xa55c('0x11c')](_0x197953[_0xa55c('0x11d')],_0x197953[_0xa55c('0x11b')]):_0x197953[_0xa55c('0x11d')]);if(_0x2becbd){_0x131288['originatecalleridname']=ut['extractCalleridName'](_0x2becbd);_0x131288['originatecalleridnum']=ut[_0xa55c('0x11e')](_0x2becbd);}var _0x124873=ut[_0xa55c('0x11f')](_0x197953,_0x262d72,_0x3d0c6d,_0x2becbd,_0x4b2e75,_0x131288);_[_0xa55c('0x120')](_0x131288,ut[_0xa55c('0x121')](_0x124873));_0x131288[_0xa55c('0x60')]=moment()[_0xa55c('0x27')](_0xa55c('0x8d'));_0x197953['variables']=_0x124873;var _0x35c42c=ut[_0xa55c('0x122')](_0x131288,_0x197953,_0x124873,_0x131288[_0xa55c('0x87')],_0x228d12);return ami[_0xa55c('0x4c')](_0x35c42c)[_0xa55c('0x57')](function(_0xd511c0){_0x197953['originated']+=0x1;logger[_0xa55c('0x44')]('[originated][increment]',_0x4b2e75,'\x20Queue',_0x197953['name'],'originated:\x20',_0x197953[_0xa55c('0x2a')]);_0x5c8713(_0xd511c0);})[_0xa55c('0x5f')](function(_0x4732b4){ut[_0xa55c('0xde')](_0x131288,0xe,_0xa55c('0x123'));rpcDb[_0xa55c('0xdf')](_0x131288,_0xa55c('0x124'));_0x2d03b2(_0x4732b4);});});};Preview[_0xa55c('0x35')][_0xa55c('0x1e')]=function(_0x9c98af){if(this[_0xa55c('0x14')][_0x9c98af['linkedid']]){this['actions'][_0x9c98af[_0xa55c('0x88')]]['channel']=_0x9c98af[_0xa55c('0x125')];}};Preview[_0xa55c('0x35')][_0xa55c('0x16')]=function(_0x340570){var _0x2ef96f=this;var _0x582b22=this[_0xa55c('0x14')][_0x340570[_0xa55c('0x126')]];if(_0x582b22){if(_0x582b22[_0xa55c('0xef')]&&this['agents'][_0x582b22[_0xa55c('0xef')]]){ut[_0xa55c('0x127')](_0x582b22,this['agents'][_0x582b22['lookAgent']][_0xa55c('0x29')],this[_0xa55c('0x56')][_0x582b22[_0xa55c('0xef')]]['id']);}var _0x4f2883=_[_0xa55c('0x128')](_0x582b22);_0x4f2883[_0xa55c('0x8e')]=moment()[_0xa55c('0x27')](_0xa55c('0x8d'));var _0x5a37d6=_0x2ef96f['campaignsPreview'][_0x582b22[_0xa55c('0x47')]];if(ut['isFailure'](_0x340570['response'])){if(_0x582b22[_0xa55c('0x86')]){rpcDb[_0xa55c('0x129')](_0x582b22[_0xa55c('0x8a')]);}if(_0x582b22[_0xa55c('0x87')]){rpcDb['disableContact'](_0x582b22[_0xa55c('0x8a')]);}ami[_0xa55c('0x24')](_0xa55c('0x12a'),ut[_0xa55c('0x7a')](_0x582b22,_0xa55c('0x12b'),this['campaignsPreview'][_0x582b22[_0xa55c('0x47')]]));this[_0xa55c('0xda')](_0x4f2883,_0x5a37d6,_0x340570);}else{_0x582b22[_0xa55c('0x60')]=moment()[_0xa55c('0x27')](_0xa55c('0x8d'));ut[_0xa55c('0xde')](_0x4f2883,0x4,_0xa55c('0x12c'));rpcDb['createAgentHistory'](_0x4f2883,_0xa55c('0x12d'));}}};Preview['prototype'][_0xa55c('0x19')]=function(_0x26946f){var _0x3755a7=this['actions'][_0x26946f['linkedid']];var _0x307b39;if(_0x3755a7){_0x307b39=this[_0xa55c('0x12')][_0x3755a7['queue']];logger['info'](_0xa55c('0x12e'),_0x26946f[_0xa55c('0x88')],'\x20Queue',_0x307b39[_0xa55c('0x29')],'pTalking:\x20',_0x307b39[_0xa55c('0x90')]);}if(this[_0xa55c('0x14')][_0x26946f[_0xa55c('0x88')]]&&_0x26946f[_0xa55c('0x88')]!==_0x26946f['uniqueid']){if(_0x26946f[_0xa55c('0x12f')]==='16'&&this[_0xa55c('0x14')][_0x26946f[_0xa55c('0x88')]]['dialAnswer']){this['callProgressDetectingCustomer'](_0x26946f,_0x26946f[_0xa55c('0x88')],_0x26946f['cause']);}else if(this['actions'][_0x26946f[_0xa55c('0x88')]][_0xa55c('0x50')]){logger[_0xa55c('0x44')](_0xa55c('0x130'),_0x26946f[_0xa55c('0x88')],_0x26946f[_0xa55c('0x12f')],_0xa55c('0x92'),_0x307b39[_0xa55c('0x29')],_0xa55c('0x48'),_0x307b39[_0xa55c('0x90')]);this['callProgressDetectingCustomer'](_0x26946f,_0x26946f['linkedid'],_0x26946f[_0xa55c('0x12f')]);}}else if(_0x3755a7&&_[_0xa55c('0x43')](_0x3755a7[_0xa55c('0x131')])&&_0x307b39[_0xa55c('0x132')]&&_0x26946f['linkedid']===_0x26946f[_0xa55c('0xa2')]&&_[_0xa55c('0x43')](_0x26946f[_0xa55c('0xdd')])&&_0x26946f[_0xa55c('0x12f')]==='16'&&_0x26946f['channelstate']==='6'&&_[_0xa55c('0xdb')](_0x3755a7['transfer'])){if(_0x3755a7['unlockAgent']){rpcDb['unlockContact'](_0x3755a7['idContact']);}if(_0x3755a7[_0xa55c('0x87')]){rpcDb[_0xa55c('0x101')](_0x3755a7['idContact']);}_0x26946f[_0xa55c('0xdd')]='22';this[_0xa55c('0xda')](_0x3755a7,_0x307b39,_0x26946f);}else if(_0x3755a7&&_0x3755a7[_0xa55c('0x133')]){if(_0x26946f[_0xa55c('0x12f')]==='16'&&this[_0xa55c('0x14')][_0x26946f[_0xa55c('0x88')]]['dialAnswer']){logger[_0xa55c('0x44')](_0xa55c('0x134'),_0x26946f[_0xa55c('0x88')],_0x26946f[_0xa55c('0x12f')],'\x20Queue',_0x307b39['name'],'pTalking:\x20',_0x307b39[_0xa55c('0x90')]);this[_0xa55c('0x75')](_0x26946f,_0x26946f[_0xa55c('0x88')],_0x26946f[_0xa55c('0x12f')]);}else if(this[_0xa55c('0x14')][_0x26946f[_0xa55c('0x88')]][_0xa55c('0x50')]){logger[_0xa55c('0x44')]('[syncHangup][talking][cause]',_0x26946f['linkedid'],_0x26946f[_0xa55c('0x12f')],_0xa55c('0x92'),_0x307b39['name'],_0xa55c('0x48'),_0x307b39[_0xa55c('0x90')]);this['callProgressDetectingCustomer'](_0x26946f,_0x26946f['linkedid'],_0x26946f[_0xa55c('0x12f')]);}}};Preview[_0xa55c('0x35')][_0xa55c('0x1c')]=function(_0x236015){if(this['actions'][_0x236015['destlinkedid']]&&_0x236015[_0xa55c('0xd8')]!==_0x236015[_0xa55c('0x135')]){this[_0xa55c('0x75')](_0x236015,_0x236015[_0xa55c('0xd8')],_0x236015[_0xa55c('0xce')]);}};Preview[_0xa55c('0x35')][_0xa55c('0x1a')]=function(_0x2511fe){if(this[_0xa55c('0x14')][_0x2511fe[_0xa55c('0x88')]]&&_0x2511fe['linkedid']!==_0x2511fe[_0xa55c('0xa2')]&&!this['actions'][_0x2511fe[_0xa55c('0x88')]][_0xa55c('0x50')]){if(_0x2511fe[_0xa55c('0x12f')]==='1'){this[_0xa55c('0x75')](_0x2511fe,_0x2511fe[_0xa55c('0x88')],_0x2511fe[_0xa55c('0x12f')]);}}};Preview[_0xa55c('0x35')][_0xa55c('0x136')]=function(_0x1e8760,_0x329808,_0x35ad66){if(this[_0xa55c('0x14')][_0x1e8760]){if(_[_0xa55c('0x43')](this['actions'][_0x1e8760][_0xa55c('0x137')])){this[_0xa55c('0x14')][_0x1e8760]['variables']={};}this[_0xa55c('0x14')][_0x1e8760][_0xa55c('0x137')][_0x329808]=_0x35ad66;}};Preview[_0xa55c('0x35')]['syncVarSet']=function(_0x238a43){try{if(!_[_0xa55c('0x43')](_0x238a43)){if(ut['filterKey'](_[_0xa55c('0x138')](_0x238a43[_0xa55c('0x139')])[0x0])){this['addVariable'](_0x238a43[_0xa55c('0xa2')],_['keys'](_0x238a43[_0xa55c('0x139')])[0x0],_0x238a43[_0xa55c('0x13a')]);}}}catch(_0x2a6c2d){logger[_0xa55c('0x13b')](_0xa55c('0x13c'),util[_0xa55c('0x13d')](_0x2a6c2d,{'showHidden':![],'depth':null}));}};Preview[_0xa55c('0x35')][_0xa55c('0x21')]=function(_0x9b5e3a){if(_0x9b5e3a){if(this[_0xa55c('0x14')][_0x9b5e3a[_0xa55c('0x13e')]]){this[_0xa55c('0x14')][_0x9b5e3a[_0xa55c('0x13e')]][_0xa55c('0x133')]=!![];}}};Preview[_0xa55c('0x35')][_0xa55c('0x23')]=function(_0x5ac4fa){if(_0x5ac4fa){if(this[_0xa55c('0x14')][_0x5ac4fa['transfererlinkedid']]){this[_0xa55c('0x14')][_0x5ac4fa[_0xa55c('0x13f')]][_0xa55c('0x133')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index e424cc6..824c68c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3971=['[createHistory]\x20','resolve','then','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','calleridnum','calleridname','answertime','queuecallercomplete','connectedlinename','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','membername','queuecallerexitreason','create','[voiceQueueReport]\x20','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','preview','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','createHistory','catch'];(function(_0x391df4,_0x864312){var _0x4876ad=function(_0x3de794){while(--_0x3de794){_0x391df4['push'](_0x391df4['shift']());}};_0x4876ad(++_0x864312);}(_0x3971,0x1a0));var _0x1397=function(_0x35d775,_0x25431e){_0x35d775=_0x35d775-0x0;var _0x59384d=_0x3971[_0x35d775];return _0x59384d;};'use strict';var util=require('util');var BPromise=require(_0x1397('0x0'));var logger=require('../../../config/logger')(_0x1397('0x1'));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x1397('0x2'));var cmHopperBlack=require(_0x1397('0x3'));var agentReportPreview=require(_0x1397('0x4'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0xb6af6a){return function(_0x45d84d){logger['error'](_0xb6af6a,util['inspect'](_0x45d84d,{'showHidden':![],'depth':null}));};}function create(_0x49c112){return cmHopperHistory[_0x1397('0x5')](_0x49c112)[_0x1397('0x6')](loggerCatch(_0x1397('0x7')));}function createAgent(_0x194894){return BPromise[_0x1397('0x8')]()[_0x1397('0x9')](agentReportPreview[_0x1397('0x5')](_0x194894))[_0x1397('0x6')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x316a16){return cmHopper[_0x1397('0xa')](_0x316a16,!![])['catch'](loggerCatch(_0x1397('0xb')));}exports[_0x1397('0xc')]=function(_0x32dabb){return cmHopperBlack[_0x1397('0xc')](_0x32dabb)[_0x1397('0x6')](loggerCatch(_0x1397('0xd')));};exports[_0x1397('0xe')]=function(_0x3996c8){return BPromise['resolve']()[_0x1397('0x9')](cmHopper[_0x1397('0xe')](_0x3996c8))[_0x1397('0x6')](loggerCatch(_0x1397('0xf')));};exports['createHistory']=function(_0x1ebce8,_0x5cc8f3){create(_0x1ebce8)['catch'](loggerCatch(_0x5cc8f3));moveContact(_0x1ebce8)[_0x1397('0x6')](loggerCatch(_0x5cc8f3));};exports[_0x1397('0x10')]=function(_0x4a31d9,_0x69c298){createAgent(_0x4a31d9)[_0x1397('0x6')](loggerCatch(_0x69c298));};exports['createCustomerHistory']=function(_0x31fdf3,_0x55a8f9){create(_0x31fdf3)[_0x1397('0x6')](loggerCatch(_0x55a8f9));};exports['createCustomerFinal']=function(_0x30d755,_0x4a4ed6){moveContact(_0x30d755)[_0x1397('0x6')](loggerCatch(_0x4a4ed6));};exports[_0x1397('0x11')]=function(_0xee91be,_0x2c22c0,_0x75c2bd){if(_0x2c22c0){_0xee91be[_0x1397('0x12')]=null;}if(_0x75c2bd){_0xee91be[_0x1397('0x13')]=![];}return cmHopper[_0x1397('0x11')](_0xee91be)[_0x1397('0x6')](loggerCatch(_0x1397('0x14')));};exports[_0x1397('0x15')]=function(_0x43b794){return cmHopper['countReScheduled'](_0x43b794)[_0x1397('0x6')](loggerCatch(_0x1397('0x16')));};exports[_0x1397('0x17')]=function(_0x62e9c0){return cmHopper[_0x1397('0x17')]({'UserId':null},_0x62e9c0,0x1)['catch'](loggerCatch(_0x1397('0x18')));};exports[_0x1397('0x19')]=function(_0x349b0b){return cmHopper[_0x1397('0x17')]({'active':![]},_0x349b0b,0x1)[_0x1397('0x6')](loggerCatch(_0x1397('0x1a')));};exports[_0x1397('0x1b')]=function(_0x26fd87){var _0x5285e4={};_0x5285e4[_0x1397('0x1c')]=_0x26fd87['type'];_0x5285e4['uniqueid']=_0x26fd87['uniqueid'];_0x5285e4[_0x1397('0x1d')]=_0x26fd87['calleridnum'];_0x5285e4[_0x1397('0x1e')]=_0x26fd87[_0x1397('0x1e')];_0x5285e4['queue']=_0x26fd87['queue'];_0x5285e4['queuecallerjoinAt']=_0x26fd87['answertime'];_0x5285e4['queuecallerleaveAt']=_0x26fd87[_0x1397('0x1f')];_0x5285e4[_0x1397('0x20')]=0x1;_0x5285e4['queuecallercompleteAt']=_0x26fd87['endtime'];_0x5285e4[_0x1397('0x21')]=_0x26fd87['membername'];_0x5285e4[_0x1397('0x22')]=_0x1397('0x23');_0x5285e4[_0x1397('0x24')]=_0x1397('0x25');_0x5285e4[_0x1397('0x26')]=0x0;_0x5285e4['assigned']=0x1;_0x5285e4[_0x1397('0x27')]=_0x26fd87[_0x1397('0x28')];_0x5285e4[_0x1397('0x29')]='COMPLETED';return BPromise[_0x1397('0x8')]()[_0x1397('0x9')](voiceQueueReport[_0x1397('0x2a')](_0x5285e4))['catch'](loggerCatch(_0x1397('0x2b')));};exports['getContactRecallMe']=function(_0x47d024,_0x31e704){return BPromise[_0x1397('0x8')]()[_0x1397('0x9')](cmHopper[_0x1397('0x2c')](_0x47d024,_0x31e704))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x1397('0x2d')]=function(_0x201269){return cmHopper[_0x1397('0x11')](_0x201269,!![],!![])[_0x1397('0x6')](loggerCatch(_0x1397('0x2e')));};
\ No newline at end of file
+var _0x6fd8=['getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','createHistory','catch','[createHistory]\x20','resolve','then','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerleaveAt','queuecallercomplete','endtime','connectedlinename','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','membername','create','[voiceQueueReport]\x20'];(function(_0x1cb0ac,_0x2755d7){var _0x3d51d6=function(_0x1dacd5){while(--_0x1dacd5){_0x1cb0ac['push'](_0x1cb0ac['shift']());}};_0x3d51d6(++_0x2755d7);}(_0x6fd8,0x19b));var _0x86fd=function(_0x1c556b,_0x1fbf48){_0x1c556b=_0x1c556b-0x0;var _0x1c0082=_0x6fd8[_0x1c556b];return _0x1c0082;};'use strict';var util=require(_0x86fd('0x0'));var BPromise=require(_0x86fd('0x1'));var logger=require(_0x86fd('0x2'))(_0x86fd('0x3'));var cmHopper=require(_0x86fd('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x86fd('0x5'));var agentReportPreview=require(_0x86fd('0x6'));var voiceQueueReport=require(_0x86fd('0x7'));function loggerCatch(_0x3473cc){return function(_0x4e3f1f){logger['error'](_0x3473cc,util[_0x86fd('0x8')](_0x4e3f1f,{'showHidden':![],'depth':null}));};}function create(_0x2d6c65){return cmHopperHistory[_0x86fd('0x9')](_0x2d6c65)[_0x86fd('0xa')](loggerCatch(_0x86fd('0xb')));}function createAgent(_0x13ff86){return BPromise[_0x86fd('0xc')]()[_0x86fd('0xd')](agentReportPreview[_0x86fd('0x9')](_0x13ff86))['catch'](loggerCatch(_0x86fd('0xb')));}function moveContact(_0x409ac3){return cmHopper['moveContactManagedDialer'](_0x409ac3,!![])['catch'](loggerCatch(_0x86fd('0xe')));}exports[_0x86fd('0xf')]=function(_0x4cffa1){return cmHopperBlack[_0x86fd('0xf')](_0x4cffa1)[_0x86fd('0xa')](loggerCatch(_0x86fd('0x10')));};exports[_0x86fd('0x11')]=function(_0x5cfc0a){return BPromise[_0x86fd('0xc')]()['then'](cmHopper[_0x86fd('0x11')](_0x5cfc0a))[_0x86fd('0xa')](loggerCatch(_0x86fd('0x12')));};exports[_0x86fd('0x9')]=function(_0x5f55ed,_0x1e99e1){create(_0x5f55ed)[_0x86fd('0xa')](loggerCatch(_0x1e99e1));moveContact(_0x5f55ed)['catch'](loggerCatch(_0x1e99e1));};exports[_0x86fd('0x13')]=function(_0x439709,_0x4bf149){createAgent(_0x439709)[_0x86fd('0xa')](loggerCatch(_0x4bf149));};exports[_0x86fd('0x14')]=function(_0x4021aa,_0x4fcc89){create(_0x4021aa)[_0x86fd('0xa')](loggerCatch(_0x4fcc89));};exports[_0x86fd('0x15')]=function(_0x4d4cbf,_0x10d90c){moveContact(_0x4d4cbf)[_0x86fd('0xa')](loggerCatch(_0x10d90c));};exports[_0x86fd('0x16')]=function(_0x1048ec,_0x3f0ed3,_0x205ada){if(_0x3f0ed3){_0x1048ec[_0x86fd('0x17')]=null;}if(_0x205ada){_0x1048ec['active']=![];}return cmHopper['rescheduleContact'](_0x1048ec)[_0x86fd('0xa')](loggerCatch(_0x86fd('0x18')));};exports[_0x86fd('0x19')]=function(_0x57913f){return cmHopper[_0x86fd('0x19')](_0x57913f)[_0x86fd('0xa')](loggerCatch(_0x86fd('0x1a')));};exports[_0x86fd('0x1b')]=function(_0x134703){return cmHopper[_0x86fd('0x1b')]({'UserId':null},_0x134703,0x1)[_0x86fd('0xa')](loggerCatch(_0x86fd('0x1c')));};exports['disableContact']=function(_0x513e18){return cmHopper[_0x86fd('0x1b')]({'active':![]},_0x513e18,0x1)['catch'](loggerCatch(_0x86fd('0x1d')));};exports['crateCustomerReportQueue']=function(_0xacd234){var _0x2b03ca={};_0x2b03ca[_0x86fd('0x1e')]=_0xacd234[_0x86fd('0x1e')];_0x2b03ca[_0x86fd('0x1f')]=_0xacd234[_0x86fd('0x1f')];_0x2b03ca[_0x86fd('0x20')]=_0xacd234[_0x86fd('0x20')];_0x2b03ca[_0x86fd('0x21')]=_0xacd234['calleridname'];_0x2b03ca[_0x86fd('0x22')]=_0xacd234[_0x86fd('0x22')];_0x2b03ca['queuecallerjoinAt']=_0xacd234['answertime'];_0x2b03ca[_0x86fd('0x23')]=_0xacd234['answertime'];_0x2b03ca[_0x86fd('0x24')]=0x1;_0x2b03ca['queuecallercompleteAt']=_0xacd234[_0x86fd('0x25')];_0x2b03ca[_0x86fd('0x26')]=_0xacd234['membername'];_0x2b03ca['context']=_0x86fd('0x27');_0x2b03ca[_0x86fd('0x28')]=_0x86fd('0x29');_0x2b03ca[_0x86fd('0x2a')]=0x0;_0x2b03ca[_0x86fd('0x2b')]=0x1;_0x2b03ca[_0x86fd('0x2c')]=_0xacd234[_0x86fd('0x2d')];_0x2b03ca['queuecallerexitreason']='COMPLETED';return BPromise[_0x86fd('0xc')]()[_0x86fd('0xd')](voiceQueueReport[_0x86fd('0x2e')](_0x2b03ca))[_0x86fd('0xa')](loggerCatch(_0x86fd('0x2f')));};exports[_0x86fd('0x30')]=function(_0x5ef13c,_0x3f97a7){return BPromise[_0x86fd('0xc')]()[_0x86fd('0xd')](cmHopper[_0x86fd('0x30')](_0x5ef13c,_0x3f97a7))[_0x86fd('0xa')](loggerCatch(_0x86fd('0x31')));};exports[_0x86fd('0x32')]=function(_0x17db41){return cmHopper[_0x86fd('0x16')](_0x17db41,!![],!![])[_0x86fd('0xa')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index d3b3389..8243545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3362=['dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','responsetime','logAgent','getSeconds','starttime','logLookAgent','UserId','logCustomer','endtime','ringtime','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','uniqueid','originate','channelAgent','calleridnum','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','scheduledat','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','lastevent','queue','voice','mandatoryDisposition','buildObj','interface','not_inuse','status','push','getDiff','milliseconds','seconds','createBody','CampaignId','type','campaigntype','dialAnswer','membername','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqos','rtpaudioqosloss','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','pow','replace','extractCalleridName','match','noanswer','variables','keys','lodash','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','error','inspect','logger','info','loggerError','logger2','message','isUndefined','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','name','calleridname','VoiceQueueId'];(function(_0x2bce41,_0x460db4){var _0x5c01ee=function(_0x5ef051){while(--_0x5ef051){_0x2bce41['push'](_0x2bce41['shift']());}};_0x5c01ee(++_0x460db4);}(_0x3362,0x78));var _0x2336=function(_0x1ce50c,_0x4909ec){_0x1ce50c=_0x1ce50c-0x0;var _0x37b4f3=_0x3362[_0x1ce50c];return _0x37b4f3;};'use strict';var util=require('util');var _=require(_0x2336('0x0'));var moment=require('moment');var logger=require(_0x2336('0x1'))(_0x2336('0x2'));var ipAgi=process[_0x2336('0x3')][_0x2336('0x4')]||_0x2336('0x5');var utils=require('../../dialer/utils');exports['loggerCatch']=function(_0x1eaee9){return function(_0x34ff53){logger[_0x2336('0x6')](_0x1eaee9,util[_0x2336('0x7')](_0x34ff53,{'showHidden':![],'depth':null}));};};exports[_0x2336('0x8')]=function(_0x1fd757,_0x370a5b){logger[_0x2336('0x9')](_0x1fd757,util['inspect'](_0x370a5b,{'showHidden':![],'depth':null}));};exports[_0x2336('0xa')]=function(_0x52e444,_0xa1690d){logger[_0x2336('0x6')](_0x52e444,util[_0x2336('0x7')](_0xa1690d,{'showHidden':![],'depth':null}));};exports[_0x2336('0xb')]=function(_0xeb1eaa){return function(_0x24a9c1){logger[_0x2336('0x9')](_0xeb1eaa,util[_0x2336('0x7')](_0x24a9c1,{'showHidden':![],'depth':null}));};};exports[_0x2336('0xc')]=function(_0x2f0259,_0x5161dc,_0x91288b){return{'message':_0x2f0259,'unlock':_0x5161dc,'active':_0x91288b};};exports['getCallerId']=function(_0x194c59,_0x58e211,_0x425633){if(!_[_0x2336('0xd')](_0x425633)&&'string'===typeof _0x425633&&!_[_0x2336('0xe')](_0x425633)){if(!_[_0x2336('0xd')](_0x58e211)&&'string'===typeof _0x58e211&&!_[_0x2336('0xe')](_0x58e211)){return util[_0x2336('0xf')](_0x2336('0x10'),_0x58e211,_0x425633);}return util[_0x2336('0xf')](_0x2336('0x10'),_0x425633,_0x425633);}if(!_[_0x2336('0xd')](_0x194c59)&&'string'===typeof _0x194c59&&!_[_0x2336('0xe')](_0x194c59)){return _0x194c59;}return'\x22\x22\x20<>';};exports[_0x2336('0x11')]=function(_0x5b4944){if(_[_0x2336('0x12')](_0x5b4944)){return![];}return _0x5b4944;};exports[_0x2336('0x13')]=function(_0x1e4a6b,_0x162a66,_0x5026c7,_0x3bc862,_0x2b67ca,_0x1e8d3c){var _0xfe0657={'XMD-QUEUE':_0x162a66[_0x2336('0x14')]?_0x162a66[_0x2336('0x14')][_0x2336('0x15')]:'','XMD-CALLERID':_0x3bc862,'XMD-CALLERID-PREVIEW':_0x1e8d3c?util[_0x2336('0xf')]('\x22%s\x22\x20<%s>',_0x1e8d3c[_0x2336('0x16')],_0x1e8d3c['calleridnum']):_0x3bc862,'XMD-DIALID':_0x2b67ca,'XMD-CONTACTID':_0x162a66['ContactId'],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x3bc862,'XMD-VOICEQUEUEID':_0x162a66[_0x2336('0x17')],'XMD-DIALCHANNEL':_0x5026c7,'XMD-DIALTIMEOUT':_0x1e4a6b[_0x2336('0x18')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x2336('0x19'),_0x1e4a6b[_0x2336('0x1a')]?'g':'',_[_0x2336('0xe')](_0x1e4a6b[_0x2336('0x1b')])?'':_0x2336('0x1c')),'XMD-DIALURL':_0x1e4a6b[_0x2336('0x1d')]||'','XMD-AGI':_0x1e4a6b['dialQueueProject']?util[_0x2336('0xf')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1e4a6b['dialQueueProject']):_0x2336('0x1e'),'XMD-AGIAFTER':_0x1e4a6b[_0x2336('0x1a')]?util[_0x2336('0xf')](_0x2336('0x1f'),ipAgi,_0x1e4a6b[_0x2336('0x1a')]):_0x2336('0x1e'),'XMD-ORIGINATECALLERIDNUM':_0x1e8d3c?_0x1e8d3c[_0x2336('0x20')]:'','XMD-ORIGINATECALLERIDNAME':_0x1e8d3c?_0x1e8d3c[_0x2336('0x21')]:'','XMD-DESTINATION':_0x2336('0x22'),'SIPADDHEADER':_0x2336('0x23')};if(!_[_0x2336('0xe')](_0x1e4a6b[_0x2336('0x1b')])){_0xfe0657[util['format']('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x1e4a6b[_0x2336('0x1b')];_0xfe0657[util[_0x2336('0xf')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x2b67ca;}if(_0x162a66&&_0x162a66['Contact']){for(var _0x33a3f2 in _0x162a66[_0x2336('0x24')]){if(_0x162a66[_0x2336('0x24')][_0x2336('0x25')](_0x33a3f2)){if(!_['isNil'](_0x162a66[_0x2336('0x24')][_0x33a3f2])&&_0x33a3f2!=='id'&&_0x33a3f2!==_0x2336('0x26')&&_0x33a3f2!==_0x2336('0x27')&&_0x33a3f2!==_0x2336('0x28')){_0xfe0657[util[_0x2336('0xf')](_0x2336('0x29'),_0x2336('0x2a'),_['toUpper'](_0x33a3f2))]=_0x162a66[_0x2336('0x24')][_0x33a3f2];}}}}return _0xfe0657;};exports[_0x2336('0x2b')]=function(_0x73358e){var _0x574607={};for(var _0x5ef287 in _0x73358e){if(_0x73358e[_0x2336('0x25')](_0x5ef287)){_0x574607[util[_0x2336('0xf')]('%s',_[_0x2336('0x2c')](_0x5ef287))]=_0x73358e[_0x5ef287];}}return{'variables':_0x574607};};exports[_0x2336('0x2d')]=function(_0x2a8a1b,_0x76459){if(!_[_0x2336('0x12')](_0x2a8a1b)){if(_0x2a8a1b[_0x2336('0x25')]('originated')){if(_0x2a8a1b[_0x2336('0x2e')]>0x0){_0x2a8a1b[_0x2336('0x2e')]-=0x1;}else{logger[_0x2336('0x6')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x76459);}}}else{logger[_0x2336('0x6')](_0x2336('0x2f'),_0x76459);}};exports[_0x2336('0x30')]=function(_0x2a3d9f){var _0x1f2463=moment()[_0x2336('0xf')](_0x2336('0x31'));_0x2a3d9f[_0x2336('0x32')]=0xd;_0x2a3d9f[_0x2336('0x33')]='Blacklist';_0x2a3d9f['starttime']=_0x1f2463;_0x2a3d9f[_0x2336('0x34')]=_0x1f2463;_0x2a3d9f['endtime']=_0x1f2463;};exports[_0x2336('0x35')]=function(_0x31bf9b,_0x5db86c,_0x357af9){var _0x243a3d=moment()[_0x2336('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0x31bf9b[_0x2336('0x32')]=_0x5db86c;_0x31bf9b[_0x2336('0x33')]=_0x357af9;_0x31bf9b[_0x2336('0x34')]=_0x243a3d;_0x31bf9b['ringtime']=utils[_0x2336('0x36')](_0x31bf9b['responsetime'],_0x31bf9b[_0x2336('0x37')]);};exports[_0x2336('0x38')]=function(_0x6ef17b,_0x6e41f2,_0xf358ae){_0x6ef17b['membername']=_0x6e41f2;_0x6ef17b[_0x2336('0x39')]=_0xf358ae;};exports[_0x2336('0x3a')]=function(_0x46be1f,_0x445054,_0x138d22){var _0x2dc5c4=moment()[_0x2336('0xf')](_0x2336('0x31'));_0x46be1f[_0x2336('0x32')]=_0x445054;_0x46be1f[_0x2336('0x33')]=_0x138d22;_0x46be1f[_0x2336('0x34')]=_0x46be1f[_0x2336('0x34')]?_0x46be1f[_0x2336('0x34')]:_0x2dc5c4;_0x46be1f[_0x2336('0x3b')]=_0x46be1f[_0x2336('0x3b')]?_0x46be1f[_0x2336('0x3b')]:_0x2dc5c4;_0x46be1f[_0x2336('0x3c')]=utils[_0x2336('0x36')](_0x46be1f[_0x2336('0x34')]||0x0,_0x46be1f['starttime']||0x0);_0x46be1f[_0x2336('0x3d')]=_0x46be1f[_0x2336('0x3e')]?utils['getSeconds'](_0x46be1f[_0x2336('0x3b')],_0x46be1f[_0x2336('0x3e')]):0x0;};exports[_0x2336('0x3f')]=function(_0x407b50){return _0x407b50===_0x2336('0x40');};exports[_0x2336('0x41')]=function(_0x20f32a,_0x1ae652,_0x438c87,_0x258af1,_0x32bcfb){var _0x13284a=_0x258af1?'RECALL':_0x20f32a['calleridname'];_0x13284a=_0x32bcfb?_0x2336('0x42'):_0x13284a;return{'actionid':_0x20f32a[_0x2336('0x43')],'action':_0x2336('0x44'),'channel':_0x20f32a[_0x2336('0x45')],'callerid':util[_0x2336('0xf')](_0x2336('0x10'),_0x13284a,_0x20f32a[_0x2336('0x46')]),'Exten':_0x2336('0x22'),'Context':_0x2336('0x47'),'Priority':'1','variable':_0x438c87,'timeout':(_0x1ae652[_0x2336('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x20f32a[_0x2336('0x43')]};};exports[_0x2336('0x49')]=function(_0x192bb8){return _0x192bb8[_0x2336('0x4a')]+_0x192bb8[_0x2336('0x4b')]+_0x192bb8[_0x2336('0x4c')]+_0x192bb8[_0x2336('0x4d')]+_0x192bb8[_0x2336('0x4e')];};exports[_0x2336('0x4f')]=function(_0x131bb0){var _0x45884f=_[_0x2336('0x50')](_0x131bb0);_0x45884f[_0x2336('0x32')]=0xf;_0x45884f[_0x2336('0x33')]=_0x2336('0x51');return _0x45884f;};exports[_0x2336('0x52')]=function(_0x112e62,_0x4337cc,_0x46bf68){var _0x1a016b={};_0x1a016b[_0x4337cc]=_0x112e62[_0x4337cc];_0x1a016b[_0x2336('0x53')]=![];_0x1a016b[_0x2336('0x54')]=moment()[_0x2336('0x55')](_0x46bf68,_0x2336('0x56'))[_0x2336('0xf')](_0x2336('0x31'));_0x1a016b[_0x2336('0x57')]=_0x112e62['ContactId'];_0x1a016b[_0x2336('0x58')]=_0x112e62[_0x2336('0x58')];_0x1a016b[_0x2336('0x17')]=_0x112e62['VoiceQueueId']||undefined;return _0x1a016b;};exports[_0x2336('0x59')]=function(_0x2272ff,_0x1bbb61){if(!_[_0x2336('0x12')](_0x2272ff)){if(_0x2272ff[_0x2336('0x5a')]>0x0){_0x2272ff[_0x2336('0x5a')]-=0x1;}else{logger[_0x2336('0x6')](_0x1bbb61,_0x2336('0x5b'));}}else{logger['error'](_0x1bbb61,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x2336('0x5c')]=function(_0x22a772){if(_0x22a772<=0x0){return!![];}return![];};function buildObj(_0x2c9b17,_0x5b704c,_0x4369ba){_0x2c9b17[_0x2336('0x5d')]=_0x5b704c;_0x2c9b17['name']=_0x2c9b17[_0x2336('0x5e')];_0x2c9b17['interface']=_0x2c9b17[_0x2336('0x45')];_0x2c9b17['motionChannel']=_0x2336('0x5f');if(_0x4369ba){_0x2c9b17[_0x2336('0x60')]=_0x4369ba['mandatoryDisposition'];}return _0x2c9b17;}exports[_0x2336('0x61')]=buildObj;exports['buildAcw']=function(_0x30ec75){var _0x286311={};_0x286311['queue']=_0x30ec75['queue'];_0x286311[_0x2336('0x62')]=_0x30ec75[_0x2336('0x45')];_0x286311[_0x2336('0x43')]=_0x30ec75[_0x2336('0x43')];return _0x286311;};exports['agentReadyId']=function(_0x393f30){var _0xc5c893=[];for(var _0x586296 in _0x393f30){if(_0x393f30[_0x2336('0x25')](_0x586296)){if(!_[_0x2336('0x12')](_0x393f30[_0x586296])&&_0x393f30[_0x586296][_0x2336('0x32')]===_0x2336('0x63')&&_0x393f30[_0x586296][_0x2336('0x64')]==='reachable'){_0xc5c893[_0x2336('0x65')](_0x393f30[_0x586296]['id']);}}}return _0xc5c893;};exports[_0x2336('0x66')]=function(_0x2ec827){var _0x3a0e6b=moment()[_0x2336('0x67')](0x0);var _0x54fc9b=moment(_0x2ec827)['milliseconds'](0x0);return _0x3a0e6b['diff'](_0x54fc9b,_0x2336('0x68'));};exports[_0x2336('0x69')]=function(_0x157839){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x157839[_0x2336('0x57')],'ListId':_0x157839[_0x2336('0x58')],'VoiceQueueId':_0x157839[_0x2336('0x17')]||undefined,'CampaignId':_0x157839[_0x2336('0x6a')]||undefined};};exports['filterKey']=function(_0x19027c){if(_0x19027c===_0x2336('0x43')||_0x19027c==='idContact'||_0x19027c===_0x2336('0x5e')||_0x19027c===_0x2336('0x6b')||_0x19027c===_0x2336('0x6c')||_0x19027c===_0x2336('0x6d')||_0x19027c===_0x2336('0x6e')||_0x19027c===_0x2336('0x45')||_0x19027c===_0x2336('0x16')||_0x19027c===_0x2336('0x53')||_0x19027c===_0x2336('0x46')||_0x19027c===_0x2336('0x54')||_0x19027c===_0x2336('0x4a')||_0x19027c===_0x2336('0x4b')||_0x19027c===_0x2336('0x4c')||_0x19027c==='countglobal'||_0x19027c===_0x2336('0x6f')||_0x19027c===_0x2336('0x70')||_0x19027c===_0x2336('0x71')||_0x19027c===_0x2336('0x72')||_0x19027c===_0x2336('0x57')||_0x19027c==='ListId'||_0x19027c===_0x2336('0x39')||_0x19027c===_0x2336('0x17')||_0x19027c===_0x2336('0x73')||_0x19027c===_0x2336('0x74')||_0x19027c==='xmd-queue'||_0x19027c===_0x2336('0x75')||_0x19027c===_0x2336('0x76')||_0x19027c===_0x2336('0x77')||_0x19027c==='xmd-dialtimeout'||_0x19027c==='xmd-dialoptions'||_0x19027c===_0x2336('0x78')||_0x19027c===_0x2336('0x79')||_0x19027c===_0x2336('0x7a')||_0x19027c===_0x2336('0x7b')||_0x19027c===_0x2336('0x7c')||_0x19027c===_0x2336('0x7d')||_0x19027c===_0x2336('0x7e')||_0x19027c==='rtpaudioqos'||_0x19027c===_0x2336('0x7f')||_0x19027c===_0x2336('0x80')||_0x19027c===_0x2336('0x81')||_0x19027c==='rtpaudioqosloss'||_0x19027c===_0x2336('0x82')||_0x19027c===_0x2336('0x83')||_0x19027c==='rtpaudioqosrttbridged'||_0x19027c===_0x2336('0x84')||_0x19027c===_0x2336('0x7f')||_0x19027c===_0x2336('0x80')||_0x19027c===_0x2336('0x81')||_0x19027c===_0x2336('0x85')||_0x19027c===_0x2336('0x82')||_0x19027c===_0x2336('0x83')||_0x19027c===_0x2336('0x86')||_0x19027c===_0x2336('0x87')||_0x19027c===_0x2336('0x88')||_0x19027c===_0x2336('0x32')||_0x19027c===_0x2336('0x33')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x1b17ef,_0x1527ad){var _0x4c5bf2,_0x2a6ae7,_0x1e2e66;if(_0x1527ad<=0x0){_0x1527ad=0x1;}_0x4c5bf2=new RegExp('\x5cw{0,'+_0x1527ad+'}$');_0x2a6ae7=Math[_0x2336('0x89')](0xa,_0x1527ad-0x1);_0x1e2e66=Math[_0x2336('0x89')](0xa,_0x1527ad)-0x1;return util[_0x2336('0xf')]('%s',_[_0x2336('0x8a')](_0x1b17ef,_0x4c5bf2,_['random'](_0x2a6ae7,_0x1e2e66)));};exports[_0x2336('0x8b')]=function(_0x5760e9){var _0x1788f9=_0x5760e9[_0x2336('0x8c')](/"(.*?)"/);return _0x1788f9?_0x1788f9[0x1]:_0x5760e9;};exports['extractCalleridNumber']=function(_0x234e65){var _0x473fdb=_0x234e65['match'](/<(.*?)>/);return _0x473fdb?_0x473fdb[0x1]:_0x234e65;};function buildNoAnswerEventPayload(_0x168254,_0x43c7a2){var _0x380945=buildObj(_0x168254,_0x2336('0x8d'));if(!_[_0x2336('0xe')](_0x43c7a2[_0x2336('0x8e')])){Object[_0x2336('0x8f')](_0x43c7a2[_0x2336('0x8e')])['forEach'](function(_0x3edd10){_0x380945[_0x3edd10['toLowerCase']()]=_0x43c7a2[_0x2336('0x8e')][_0x3edd10];});}return _0x380945;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0xd258=['_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','statedesc','Blacklist','starttime','endtime','state','getSeconds','logLookAgent','membername','UserId','responsetime','talktime','answertime','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','queue','voice','mandatoryDisposition','buildObj','buildAcw','interface','agentReadyId','not_inuse','status','push','getDiff','milliseconds','createBody','CampaignId','idContact','campaigntype','dialAnswer','countglobal','callbackuniqueid','callbackat','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridNumber','noanswer','variables','keys','forEach','util','lodash','moment','../../../../config/logger','preview','env','../../dialer/utils','loggerCatch','logger','info','inspect','loggerError','error','message','getCallerId','string','isUndefined','isEmpty','format','\x22\x22\x20<>','isActive','isNil','Queue','name','calleridname','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridname','xcally-motion-preview','monitor_format','_XCALLY_MIXMONITOR_FORMAT'];(function(_0x15ff23,_0x4d1108){var _0x1426fd=function(_0x4cdb3c){while(--_0x4cdb3c){_0x15ff23['push'](_0x15ff23['shift']());}};_0x1426fd(++_0x4d1108);}(_0xd258,0xf4));var _0x8d25=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xd258[_0x2dafbe];return _0x58a45a;};'use strict';var util=require(_0x8d25('0x0'));var _=require(_0x8d25('0x1'));var moment=require(_0x8d25('0x2'));var logger=require(_0x8d25('0x3'))(_0x8d25('0x4'));var ipAgi=process[_0x8d25('0x5')]['XCALLY_IP_AGI']||'127.0.0.1';var utils=require(_0x8d25('0x6'));exports[_0x8d25('0x7')]=function(_0x43d33f){return function(_0x5f4ddd){logger['error'](_0x43d33f,util['inspect'](_0x5f4ddd,{'showHidden':![],'depth':null}));};};exports[_0x8d25('0x8')]=function(_0x483578,_0x5562e5){logger[_0x8d25('0x9')](_0x483578,util[_0x8d25('0xa')](_0x5562e5,{'showHidden':![],'depth':null}));};exports[_0x8d25('0xb')]=function(_0x4c0ced,_0x51069e){logger[_0x8d25('0xc')](_0x4c0ced,util[_0x8d25('0xa')](_0x51069e,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x469ca0){return function(_0x357448){logger[_0x8d25('0x9')](_0x469ca0,util[_0x8d25('0xa')](_0x357448,{'showHidden':![],'depth':null}));};};exports[_0x8d25('0xd')]=function(_0x4a2de3,_0x1aedc2,_0x2b9ac9){return{'message':_0x4a2de3,'unlock':_0x1aedc2,'active':_0x2b9ac9};};exports[_0x8d25('0xe')]=function(_0x40ff52,_0x114ead,_0x3de97e){if(!_['isUndefined'](_0x3de97e)&&_0x8d25('0xf')===typeof _0x3de97e&&!_['isEmpty'](_0x3de97e)){if(!_[_0x8d25('0x10')](_0x114ead)&&'string'===typeof _0x114ead&&!_[_0x8d25('0x11')](_0x114ead)){return util[_0x8d25('0x12')]('\x22%s\x22\x20<%s>',_0x114ead,_0x3de97e);}return util['format']('\x22%s\x22\x20<%s>',_0x3de97e,_0x3de97e);}if(!_[_0x8d25('0x10')](_0x40ff52)&&_0x8d25('0xf')===typeof _0x40ff52&&!_['isEmpty'](_0x40ff52)){return _0x40ff52;}return _0x8d25('0x13');};exports[_0x8d25('0x14')]=function(_0x269172){if(_[_0x8d25('0x15')](_0x269172)){return![];}return _0x269172;};exports['addVariables']=function(_0x5be69e,_0x1a3717,_0x5d1ec1,_0x243144,_0x4d46f5,_0x2ee127){var _0x20913b={'XMD-QUEUE':_0x1a3717[_0x8d25('0x16')]?_0x1a3717[_0x8d25('0x16')][_0x8d25('0x17')]:'','XMD-CALLERID':_0x243144,'XMD-CALLERID-PREVIEW':_0x2ee127?util[_0x8d25('0x12')]('\x22%s\x22\x20<%s>',_0x2ee127[_0x8d25('0x18')],_0x2ee127[_0x8d25('0x19')]):_0x243144,'XMD-DIALID':_0x4d46f5,'XMD-CONTACTID':_0x1a3717[_0x8d25('0x1a')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x243144,'XMD-VOICEQUEUEID':_0x1a3717[_0x8d25('0x1b')],'XMD-DIALCHANNEL':_0x5d1ec1,'XMD-DIALTIMEOUT':_0x5be69e[_0x8d25('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0x8d25('0x12')](_0x8d25('0x1d'),_0x5be69e['dialQueueProject2']?'g':'',_[_0x8d25('0x11')](_0x5be69e['monitor_format'])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x5be69e[_0x8d25('0x1e')]||'','XMD-AGI':_0x5be69e[_0x8d25('0x1f')]?util[_0x8d25('0x12')](_0x8d25('0x20'),ipAgi,_0x5be69e[_0x8d25('0x1f')]):_0x8d25('0x21'),'XMD-AGIAFTER':_0x5be69e['dialQueueProject2']?util[_0x8d25('0x12')](_0x8d25('0x20'),ipAgi,_0x5be69e['dialQueueProject2']):_0x8d25('0x21'),'XMD-ORIGINATECALLERIDNUM':_0x2ee127?_0x2ee127['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x2ee127?_0x2ee127[_0x8d25('0x22')]:'','XMD-DESTINATION':_0x8d25('0x23'),'SIPADDHEADER':'Call-Type:\x20PREVIEW'};if(!_[_0x8d25('0x11')](_0x5be69e[_0x8d25('0x24')])){_0x20913b[util['format']('%s',_0x8d25('0x25'))]=_0x5be69e['monitor_format'];_0x20913b[util[_0x8d25('0x12')]('%s',_0x8d25('0x26'))]=_0x4d46f5;}if(_0x1a3717&&_0x1a3717[_0x8d25('0x27')]){for(var _0x351a77 in _0x1a3717[_0x8d25('0x27')]){if(_0x1a3717[_0x8d25('0x27')][_0x8d25('0x28')](_0x351a77)){if(!_[_0x8d25('0x15')](_0x1a3717['Contact'][_0x351a77])&&_0x351a77!=='id'&&_0x351a77!==_0x8d25('0x29')&&_0x351a77!==_0x8d25('0x2a')&&_0x351a77!==_0x8d25('0x2b')){_0x20913b[util[_0x8d25('0x12')](_0x8d25('0x2c'),_0x8d25('0x2d'),_[_0x8d25('0x2e')](_0x351a77))]=_0x1a3717['Contact'][_0x351a77];}}}}return _0x20913b;};exports[_0x8d25('0x2f')]=function(_0x2f311d){var _0x2639eb={};for(var _0x2bd862 in _0x2f311d){if(_0x2f311d[_0x8d25('0x28')](_0x2bd862)){_0x2639eb[util[_0x8d25('0x12')]('%s',_[_0x8d25('0x30')](_0x2bd862))]=_0x2f311d[_0x2bd862];}}return{'variables':_0x2639eb};};exports[_0x8d25('0x31')]=function(_0x75f2d2,_0x2276d4){if(!_[_0x8d25('0x15')](_0x75f2d2)){if(_0x75f2d2[_0x8d25('0x28')](_0x8d25('0x32'))){if(_0x75f2d2[_0x8d25('0x32')]>0x0){_0x75f2d2[_0x8d25('0x32')]-=0x1;}else{logger[_0x8d25('0xc')](_0x8d25('0x33'),_0x2276d4);}}}else{logger[_0x8d25('0xc')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x2276d4);}};exports[_0x8d25('0x34')]=function(_0x1d06b2){var _0x4a99ac=moment()[_0x8d25('0x12')](_0x8d25('0x35'));_0x1d06b2['state']=0xd;_0x1d06b2[_0x8d25('0x36')]=_0x8d25('0x37');_0x1d06b2[_0x8d25('0x38')]=_0x4a99ac;_0x1d06b2['responsetime']=_0x4a99ac;_0x1d06b2[_0x8d25('0x39')]=_0x4a99ac;};exports['logAgent']=function(_0x541ff0,_0x5d2cd7,_0x3d79b3){var _0x121dcb=moment()[_0x8d25('0x12')](_0x8d25('0x35'));_0x541ff0[_0x8d25('0x3a')]=_0x5d2cd7;_0x541ff0[_0x8d25('0x36')]=_0x3d79b3;_0x541ff0['responsetime']=_0x121dcb;_0x541ff0['ringtime']=utils[_0x8d25('0x3b')](_0x541ff0['responsetime'],_0x541ff0[_0x8d25('0x38')]);};exports[_0x8d25('0x3c')]=function(_0x47174a,_0x13a7b8,_0x3a609c){_0x47174a[_0x8d25('0x3d')]=_0x13a7b8;_0x47174a[_0x8d25('0x3e')]=_0x3a609c;};exports['logCustomer']=function(_0x2fceb6,_0xd30e6b,_0x3a49c3){var _0x41418f=moment()[_0x8d25('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x2fceb6['state']=_0xd30e6b;_0x2fceb6[_0x8d25('0x36')]=_0x3a49c3;_0x2fceb6['responsetime']=_0x2fceb6[_0x8d25('0x3f')]?_0x2fceb6['responsetime']:_0x41418f;_0x2fceb6[_0x8d25('0x39')]=_0x2fceb6[_0x8d25('0x39')]?_0x2fceb6['endtime']:_0x41418f;_0x2fceb6['ringtime']=utils['getSeconds'](_0x2fceb6[_0x8d25('0x3f')]||0x0,_0x2fceb6['starttime']||0x0);_0x2fceb6[_0x8d25('0x40')]=_0x2fceb6[_0x8d25('0x41')]?utils[_0x8d25('0x3b')](_0x2fceb6[_0x8d25('0x39')],_0x2fceb6[_0x8d25('0x41')]):0x0;};exports['isFailure']=function(_0x531c63){return _0x531c63===_0x8d25('0x42');};exports[_0x8d25('0x43')]=function(_0x225c1c,_0x4f891f,_0x944a49,_0x2e7f54,_0x32a996){var _0x3ff371=_0x2e7f54?_0x8d25('0x44'):_0x225c1c[_0x8d25('0x18')];_0x3ff371=_0x32a996?_0x8d25('0x45'):_0x3ff371;return{'actionid':_0x225c1c[_0x8d25('0x46')],'action':_0x8d25('0x47'),'channel':_0x225c1c[_0x8d25('0x48')],'callerid':util[_0x8d25('0x12')]('\x22%s\x22\x20<%s>',_0x3ff371,_0x225c1c[_0x8d25('0x19')]),'Exten':_0x8d25('0x23'),'Context':_0x8d25('0x49'),'Priority':'1','variable':_0x944a49,'timeout':(_0x4f891f[_0x8d25('0x4a')]||0x1e)*0x3e8,'async':!![],'channelid':_0x225c1c[_0x8d25('0x46')]};};exports[_0x8d25('0x4b')]=function(_0x3235ea){return _0x3235ea[_0x8d25('0x4c')]+_0x3235ea[_0x8d25('0x4d')]+_0x3235ea[_0x8d25('0x4e')]+_0x3235ea[_0x8d25('0x4f')]+_0x3235ea[_0x8d25('0x50')];};exports[_0x8d25('0x51')]=function(_0x23319e){var _0x13ebda=_[_0x8d25('0x52')](_0x23319e);_0x13ebda[_0x8d25('0x3a')]=0xf;_0x13ebda['statedesc']=_0x8d25('0x53');return _0x13ebda;};exports[_0x8d25('0x54')]=function(_0x5e8f62,_0x131959,_0x5c7745){var _0x1ce012={};_0x1ce012[_0x131959]=_0x5e8f62[_0x131959];_0x1ce012[_0x8d25('0x55')]=![];_0x1ce012['scheduledat']=moment()['add'](_0x5c7745,'minutes')[_0x8d25('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x1ce012[_0x8d25('0x1a')]=_0x5e8f62['ContactId'];_0x1ce012[_0x8d25('0x56')]=_0x5e8f62['ListId'];_0x1ce012[_0x8d25('0x1b')]=_0x5e8f62[_0x8d25('0x1b')]||undefined;return _0x1ce012;};exports[_0x8d25('0x57')]=function(_0xd03ca6,_0x2c0d44){if(!_[_0x8d25('0x15')](_0xd03ca6)){if(_0xd03ca6['pTalking']>0x0){_0xd03ca6[_0x8d25('0x58')]-=0x1;}else{logger[_0x8d25('0xc')](_0x2c0d44,_0x8d25('0x59'));}}else{logger[_0x8d25('0xc')](_0x2c0d44,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x8d25('0x5a')]=function(_0x3673a8){if(_0x3673a8<=0x0){return!![];}return![];};function buildObj(_0x3b86dd,_0x299b13,_0x19f587){_0x3b86dd['lastevent']=_0x299b13;_0x3b86dd[_0x8d25('0x17')]=_0x3b86dd[_0x8d25('0x5b')];_0x3b86dd['interface']=_0x3b86dd['channelAgent'];_0x3b86dd['motionChannel']=_0x8d25('0x5c');if(_0x19f587){_0x3b86dd['mandatoryDisposition']=_0x19f587[_0x8d25('0x5d')];}return _0x3b86dd;}exports[_0x8d25('0x5e')]=buildObj;exports[_0x8d25('0x5f')]=function(_0x402f93){var _0x1005c3={};_0x1005c3[_0x8d25('0x5b')]=_0x402f93[_0x8d25('0x5b')];_0x1005c3[_0x8d25('0x60')]=_0x402f93['channelAgent'];_0x1005c3[_0x8d25('0x46')]=_0x402f93['uniqueid'];return _0x1005c3;};exports[_0x8d25('0x61')]=function(_0x2e6702){var _0x128846=[];for(var _0x258022 in _0x2e6702){if(_0x2e6702['hasOwnProperty'](_0x258022)){if(!_['isNil'](_0x2e6702[_0x258022])&&_0x2e6702[_0x258022][_0x8d25('0x3a')]===_0x8d25('0x62')&&_0x2e6702[_0x258022][_0x8d25('0x63')]==='reachable'){_0x128846[_0x8d25('0x64')](_0x2e6702[_0x258022]['id']);}}}return _0x128846;};exports[_0x8d25('0x65')]=function(_0x392473){var _0x20f0a5=moment()['milliseconds'](0x0);var _0xbd0c2e=moment(_0x392473)[_0x8d25('0x66')](0x0);return _0x20f0a5['diff'](_0xbd0c2e,'seconds');};exports[_0x8d25('0x67')]=function(_0x5359a6){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5359a6[_0x8d25('0x1a')],'ListId':_0x5359a6[_0x8d25('0x56')],'VoiceQueueId':_0x5359a6[_0x8d25('0x1b')]||undefined,'CampaignId':_0x5359a6[_0x8d25('0x68')]||undefined};};exports['filterKey']=function(_0x3fdbb9){if(_0x3fdbb9===_0x8d25('0x46')||_0x3fdbb9===_0x8d25('0x69')||_0x3fdbb9==='queue'||_0x3fdbb9==='type'||_0x3fdbb9===_0x8d25('0x6a')||_0x3fdbb9===_0x8d25('0x6b')||_0x3fdbb9==='membername'||_0x3fdbb9===_0x8d25('0x48')||_0x3fdbb9==='calleridname'||_0x3fdbb9===_0x8d25('0x55')||_0x3fdbb9==='calleridnum'||_0x3fdbb9==='scheduledat'||_0x3fdbb9===_0x8d25('0x4c')||_0x3fdbb9===_0x8d25('0x4d')||_0x3fdbb9===_0x8d25('0x4e')||_0x3fdbb9===_0x8d25('0x6c')||_0x3fdbb9==='callback'||_0x3fdbb9===_0x8d25('0x6d')||_0x3fdbb9===_0x8d25('0x6e')||_0x3fdbb9==='recallme'||_0x3fdbb9===_0x8d25('0x1a')||_0x3fdbb9==='ListId'||_0x3fdbb9===_0x8d25('0x3e')||_0x3fdbb9===_0x8d25('0x1b')||_0x3fdbb9==='sipcallid'||_0x3fdbb9===_0x8d25('0x6f')||_0x3fdbb9===_0x8d25('0x70')||_0x3fdbb9===_0x8d25('0x71')||_0x3fdbb9===_0x8d25('0x72')||_0x3fdbb9===_0x8d25('0x73')||_0x3fdbb9===_0x8d25('0x74')||_0x3fdbb9===_0x8d25('0x75')||_0x3fdbb9==='xmd-dialid'||_0x3fdbb9==='xmd-dialchannel'||_0x3fdbb9===_0x8d25('0x76')||_0x3fdbb9===_0x8d25('0x77')||_0x3fdbb9===_0x8d25('0x78')||_0x3fdbb9===_0x8d25('0x79')||_0x3fdbb9==='xmd-agi'||_0x3fdbb9===_0x8d25('0x7a')||_0x3fdbb9===_0x8d25('0x7b')||_0x3fdbb9===_0x8d25('0x7c')||_0x3fdbb9===_0x8d25('0x7d')||_0x3fdbb9==='rtpaudioqosloss'||_0x3fdbb9==='rtpaudioqoslossbridged'||_0x3fdbb9==='rtpaudioqosrtt'||_0x3fdbb9==='rtpaudioqosrttbridged'||_0x3fdbb9===_0x8d25('0x7a')||_0x3fdbb9==='rtpaudioqosbridged'||_0x3fdbb9===_0x8d25('0x7c')||_0x3fdbb9===_0x8d25('0x7d')||_0x3fdbb9===_0x8d25('0x7e')||_0x3fdbb9===_0x8d25('0x7f')||_0x3fdbb9==='rtpaudioqosrtt'||_0x3fdbb9===_0x8d25('0x80')||_0x3fdbb9===_0x8d25('0x81')||_0x3fdbb9===_0x8d25('0x82')||_0x3fdbb9===_0x8d25('0x3a')||_0x3fdbb9===_0x8d25('0x36')){return![];}return!![];};exports[_0x8d25('0x83')]=function(_0x34aef9,_0x33b5a0){var _0x181db4,_0x3e51d6,_0x14399c;if(_0x33b5a0<=0x0){_0x33b5a0=0x1;}_0x181db4=new RegExp(_0x8d25('0x84')+_0x33b5a0+'}$');_0x3e51d6=Math[_0x8d25('0x85')](0xa,_0x33b5a0-0x1);_0x14399c=Math['pow'](0xa,_0x33b5a0)-0x1;return util[_0x8d25('0x12')]('%s',_[_0x8d25('0x86')](_0x34aef9,_0x181db4,_[_0x8d25('0x87')](_0x3e51d6,_0x14399c)));};exports['extractCalleridName']=function(_0x3a9509){var _0x4d4fbe=_0x3a9509['match'](/"(.*?)"/);return _0x4d4fbe?_0x4d4fbe[0x1]:_0x3a9509;};exports[_0x8d25('0x88')]=function(_0x43d8c9){var _0x40467e=_0x43d8c9['match'](/<(.*?)>/);return _0x40467e?_0x40467e[0x1]:_0x43d8c9;};function buildNoAnswerEventPayload(_0x4ae6e2,_0x366eb5){var _0x510c4c=buildObj(_0x4ae6e2,_0x8d25('0x89'));if(!_[_0x8d25('0x11')](_0x366eb5[_0x8d25('0x8a')])){Object[_0x8d25('0x8b')](_0x366eb5['variables'])[_0x8d25('0x8c')](function(_0x27a19c){_0x510c4c[_0x27a19c['toLowerCase']()]=_0x366eb5[_0x8d25('0x8a')][_0x27a19c];});}return _0x510c4c;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
index 5c82026..e882e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfefe=['voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','queueremove','queuepause','boolean','reload','voicequeuechannel'];(function(_0x5a3d98,_0x5469b8){var _0xa4a8c1=function(_0x5a834d){while(--_0x5a834d){_0x5a3d98['push'](_0x5a3d98['shift']());}};_0xa4a8c1(++_0x5469b8);}(_0xfefe,0x80));var _0xefef=function(_0x3c5674,_0x5ae3eb){_0x3c5674=_0x3c5674-0x0;var _0x30bc1b=_0xfefe[_0x3c5674];return _0x30bc1b;};'use strict';exports[_0xefef('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xefef('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xefef('0x2')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xefef('0x3')]={'interface':{'type':_0xefef('0x1'),'required':!![]},'paused':{'type':_0xefef('0x4')},'reason':{'type':_0xefef('0x1'),'required':![]}};exports[_0xefef('0x5')]={'module':{'type':_0xefef('0x1'),'required':![]}};exports[_0xefef('0x6')]={'uniqueid':{'type':_0xefef('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0xefef('0x1')},'format':{'type':_0xefef('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xefef('0x7')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xefef('0x8')]={'uniqueid':{'type':_0xefef('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0x5fc6=['number','queueremove','queuepause','boolean','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string'];(function(_0x3ce40c,_0x2b1930){var _0x35f9bc=function(_0x26e689){while(--_0x26e689){_0x3ce40c['push'](_0x3ce40c['shift']());}};_0x35f9bc(++_0x2b1930);}(_0x5fc6,0xc4));var _0x65fc=function(_0x3a40cf,_0x31e2af){_0x3a40cf=_0x3a40cf-0x0;var _0x4ac176=_0x5fc6[_0x3a40cf];return _0x4ac176;};'use strict';exports[_0x65fc('0x0')]={'queue':{'type':_0x65fc('0x1'),'required':!![]},'interface':{'type':_0x65fc('0x1'),'required':!![]},'membername':{'type':_0x65fc('0x1'),'required':!![]},'penalty':{'type':_0x65fc('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0x65fc('0x3')]={'queue':{'type':_0x65fc('0x1'),'required':!![]},'interface':{'type':_0x65fc('0x1'),'required':!![]}};exports[_0x65fc('0x4')]={'interface':{'type':_0x65fc('0x1'),'required':!![]},'paused':{'type':_0x65fc('0x5')},'reason':{'type':_0x65fc('0x1'),'required':![]}};exports[_0x65fc('0x6')]={'module':{'type':'string','required':![]}};exports[_0x65fc('0x7')]={'uniqueid':{'type':_0x65fc('0x1'),'required':!![]}};exports[_0x65fc('0x8')]={'uniqueid':{'type':_0x65fc('0x1'),'required':!![]},'filename':{'type':_0x65fc('0x1')},'format':{'type':_0x65fc('0x1')},'mixmonitorid':{'type':_0x65fc('0x1')}};exports[_0x65fc('0x9')]={'uniqueid':{'type':_0x65fc('0x1'),'required':!![]}};exports[_0x65fc('0xa')]={'uniqueid':{'type':_0x65fc('0x1'),'required':!![]},'exten':{'type':_0x65fc('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index db8cb70..48f410b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['total','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','initAgents','length','isNil','SIP/%s','isUndefined','prototype','initTelephones','initTrunks','trunks','initTriggers','initTemplates','salesforceAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','queue','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','diff','queuecallercomplete','answered','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','initVoiceQueues','exports','lodash','util','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','voiceQueues','triggers','templates','outbound','voiceExtensions','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','faxAccounts','mapKeys','name','hasOwnProperty','format','interface'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1147ab,_0x10e72b){_0x1147ab=_0x1147ab-0x0;var _0x55cb5a=_0x0b0e[_0x1147ab];return _0x55cb5a;};'use strict';var _=require(_0xe0b0('0x0'));var moment=require('moment');var util=require(_0xe0b0('0x1'));var Agent=require('../model/agent');var Telephone=require(_0xe0b0('0x2'));var Trunk=require(_0xe0b0('0x3'));var VoiceQueue=require(_0xe0b0('0x4'));var Trigger=require(_0xe0b0('0x5'));var Template=require(_0xe0b0('0x6'));var Campaign=require(_0xe0b0('0x7'));var VoiceExtension=require(_0xe0b0('0x8'));var ZendeskAccount=require(_0xe0b0('0x9'));var SalesforceAccount=require(_0xe0b0('0xa'));var FreshdeskAccount=require(_0xe0b0('0xb'));var SugarcrmAccount=require(_0xe0b0('0xc'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xe0b0('0xd'));var ServicenowAccount=require(_0xe0b0('0xe'));var Dynamics365Account=require(_0xe0b0('0xf'));var FreshsalesAccount=require(_0xe0b0('0x10'));var FaxAccount=require('../model/faxAccount');function Realtime(){this[_0xe0b0('0x11')]={};this[_0xe0b0('0x12')]={};this['trunks']={};this[_0xe0b0('0x13')]={};this[_0xe0b0('0x14')]={};this['campaigns']={};this[_0xe0b0('0x15')]={};this[_0xe0b0('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xe0b0('0x17')]={};this['channels']={};this[_0xe0b0('0x18')]={};this[_0xe0b0('0x19')]={};this[_0xe0b0('0x1a')]={};this[_0xe0b0('0x1b')]={};this[_0xe0b0('0x1c')]={};this['salesforceAccounts']={};this[_0xe0b0('0x1d')]={};this[_0xe0b0('0x1e')]={};this[_0xe0b0('0x1f')]={};this[_0xe0b0('0x20')]={};this[_0xe0b0('0x21')]={};this['servicenowAccounts']={};this[_0xe0b0('0x22')]={};this['freshsalesAccounts']={};this[_0xe0b0('0x23')]={};}function freeIsNotKey(_0xadee6e,_0x519ae8,_0x11fdca){var _0x4a4cc0=_[_0xe0b0('0x24')](_0xadee6e,function(_0x100204){return _0x100204[_0x11fdca];});for(var _0x56bcc7 in _0x519ae8){if(_0x519ae8['hasOwnProperty'](_0x56bcc7)){if(!_0x4a4cc0[_0x56bcc7]){delete _0x519ae8[_0x56bcc7];}}}}function freeIsNotKeySip(_0x46bb44,_0x50a441){var _0x4df8da=_['mapKeys'](_0x46bb44,function(_0x1920ee){return util['format']('SIP/%s',_0x1920ee[_0xe0b0('0x25')]);});for(var _0x59dff5 in _0x50a441){if(_0x50a441[_0xe0b0('0x26')](_0x59dff5)){if(!_0x4df8da[_0x59dff5]){delete _0x50a441[_0x59dff5];}}}}function freeIsNotKeyAgent(_0x5dba2f,_0x2c84cc){var _0x1cd7c4=_[_0xe0b0('0x24')](_0x5dba2f,function(_0x310a6d){var _0x2cf6a1=_['isNil'](_0x310a6d['interface'])?util[_0xe0b0('0x27')]('SIP/%s',_0x310a6d[_0xe0b0('0x25')]):_0x310a6d[_0xe0b0('0x28')];return _0x2cf6a1;});for(var _0x513e63 in _0x2c84cc){if(_0x2c84cc[_0xe0b0('0x26')](_0x513e63)){if(!_0x1cd7c4[_0x513e63]){delete _0x2c84cc[_0x513e63];}}}}function clearVoiceCallReports(_0x503883){_0x503883[_0xe0b0('0x29')]=0x0;_0x503883['answered']=0x0;_0x503883[_0xe0b0('0x2a')]=0x0;_0x503883['sumDuration']=0x0;_0x503883[_0xe0b0('0x2b')]=0x0;}function clearCampaigns(_0x4de537){if(!_[_0xe0b0('0x2c')](_0x4de537)){for(var _0x4aafbe in _0x4de537){if(_0x4de537[_0xe0b0('0x26')](_0x4aafbe)){_0x4de537[_0x4aafbe]['ivrTotalCallsDays']=0x0;_0x4de537[_0x4aafbe][_0xe0b0('0x2d')]=0x0;}}}}function clearVoiceQueues(_0x3c3bc2){if(!_[_0xe0b0('0x2c')](_0x3c3bc2)){for(var _0x1d91ad in _0x3c3bc2){if(_0x3c3bc2[_0xe0b0('0x26')](_0x1d91ad)){_0x3c3bc2[_0x1d91ad][_0xe0b0('0x29')]=0x0;_0x3c3bc2[_0x1d91ad]['answered']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x2e')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x2f')]=0x0;_0x3c3bc2[_0x1d91ad]['sumHoldTime']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x30')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x2b')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x31')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x32')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x33')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x34')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x35')]=0x0;_0x3c3bc2[_0x1d91ad]['outboundUnknownCallsDay']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x36')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x37')]=0x0;_0x3c3bc2[_0x1d91ad]['outboundBlacklistCallsDay']=0x0;_0x3c3bc2[_0x1d91ad]['outboundOriginateFailureCallsDay']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x38')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x39')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x31')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x3a')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x3b')]=!![];}}}}Realtime['prototype'][_0xe0b0('0x3c')]=function(_0x3231fc,_0x7867c4){for(var _0x29d725 in _0x7867c4){if(_0x3231fc[_0xe0b0('0x26')](_0x29d725)){_0x3231fc[_0x29d725]=_0x7867c4[_0x29d725];}}};Realtime['prototype'][_0xe0b0('0x3d')]=function(){var _0x208945=this;return function(_0xfc51d3){if(_0xfc51d3){freeIsNotKeyAgent(_0xfc51d3,_0x208945[_0xe0b0('0x11')]);for(var _0x3575bc=0x0,_0x12eeb8={};_0x3575bc<_0xfc51d3[_0xe0b0('0x3e')];_0x3575bc+=0x1){_0x12eeb8=_0xfc51d3[_0x3575bc];var _0x20908f=_[_0xe0b0('0x3f')](_0x12eeb8[_0xe0b0('0x28')])?util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x12eeb8[_0xe0b0('0x25')]):_0x12eeb8[_0xe0b0('0x28')];if(_[_0xe0b0('0x41')](_0x208945['agents'][_0x20908f])){_0x208945[_0xe0b0('0x11')][_0x20908f]=new Agent(_0x12eeb8);}else{_0x208945[_0xe0b0('0x3c')](_0x208945[_0xe0b0('0x11')][_0x20908f],_0x12eeb8);}}}return _0x208945[_0xe0b0('0x11')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x43')]=function(){var _0x12024d=this;return function(_0x533fc7){if(_0x533fc7){freeIsNotKeySip(_0x533fc7,_0x12024d['telephones']);for(var _0x549d9a=0x0,_0x5317df={};_0x549d9a<_0x533fc7[_0xe0b0('0x3e')];_0x549d9a+=0x1){_0x5317df=_0x533fc7[_0x549d9a];if(_[_0xe0b0('0x41')](_0x12024d[_0xe0b0('0x12')][util['format'](_0xe0b0('0x40'),_0x5317df[_0xe0b0('0x25')])])){_0x12024d[_0xe0b0('0x12')][util[_0xe0b0('0x27')]('SIP/%s',_0x5317df[_0xe0b0('0x25')])]=new Telephone(_0x5317df);}else{_0x12024d[_0xe0b0('0x3c')](_0x12024d[_0xe0b0('0x12')][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x5317df[_0xe0b0('0x25')])],_0x5317df);}}}return _0x12024d[_0xe0b0('0x12')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x44')]=function(){var _0x54f251=this;return function(_0x3e349b){if(_0x3e349b){freeIsNotKeySip(_0x3e349b,_0x54f251['trunks']);for(var _0x34178d=0x0,_0x2d5f47={};_0x34178d<_0x3e349b[_0xe0b0('0x3e')];_0x34178d+=0x1){_0x2d5f47=_0x3e349b[_0x34178d];if(_[_0xe0b0('0x41')](_0x54f251['trunks'][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x2d5f47[_0xe0b0('0x25')])])){_0x54f251[_0xe0b0('0x45')][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x2d5f47[_0xe0b0('0x25')])]=new Trunk(_0x2d5f47);}else{_0x54f251[_0xe0b0('0x3c')](_0x54f251['trunks'][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x2d5f47['name'])],_0x2d5f47);}}}return _0x54f251['trunks'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x46')]=function(){var _0x56e7df=this;return function(_0x18a59d){if(_0x18a59d){freeIsNotKey(_0x18a59d,_0x56e7df[_0xe0b0('0x14')],'id');for(var _0x6bca5c=0x0,_0x1c869d={};_0x6bca5c<_0x18a59d[_0xe0b0('0x3e')];_0x6bca5c+=0x1){_0x1c869d=_0x18a59d[_0x6bca5c];if(_['isUndefined'](_0x56e7df['triggers'][_0x1c869d['id']])){_0x56e7df['triggers'][_0x1c869d['id']]=new Trigger(_0x1c869d);}else{_0x56e7df[_0xe0b0('0x3c')](_0x56e7df[_0xe0b0('0x14')][_0x1c869d['id']],_0x1c869d);}}}return _0x56e7df['triggers'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x47')]=function(){var _0x14197b=this;return function(_0x5f037d){if(_0x5f037d){freeIsNotKey(_0x5f037d,_0x14197b[_0xe0b0('0x15')],'id');for(var _0x5c6f94=0x0,_0x57d4b0={};_0x5c6f94<_0x5f037d[_0xe0b0('0x3e')];_0x5c6f94+=0x1){_0x57d4b0=_0x5f037d[_0x5c6f94];if(_[_0xe0b0('0x41')](_0x14197b[_0xe0b0('0x15')][_0x57d4b0['id']])){_0x14197b[_0xe0b0('0x15')][_0x57d4b0['id']]=new Template(_0x57d4b0);}else{_0x14197b[_0xe0b0('0x3c')](_0x14197b['templates'][_0x57d4b0['id']],_0x57d4b0);}}}return _0x14197b[_0xe0b0('0x15')];};};Realtime[_0xe0b0('0x42')]['initZendeskAccounts']=function(){var _0x50c805=this;return function(_0x5ddad1){if(_0x5ddad1){freeIsNotKey(_0x5ddad1,_0x50c805[_0xe0b0('0x1c')],'id');for(var _0x2184d3=0x0,_0x2419ce={};_0x2184d3<_0x5ddad1[_0xe0b0('0x3e')];_0x2184d3+=0x1){_0x2419ce=_0x5ddad1[_0x2184d3];if(_['isUndefined'](_0x50c805[_0xe0b0('0x1c')][_0x2419ce['id']])){_0x50c805[_0xe0b0('0x1c')][_0x2419ce['id']]=new ZendeskAccount(_0x2419ce);}else{_0x50c805['mergeFromDatabase'](_0x50c805['zendeskAccounts'][_0x2419ce['id']],_0x2419ce);}}}return _0x50c805[_0xe0b0('0x1c')];};};Realtime[_0xe0b0('0x42')]['initSalesforceAccounts']=function(){var _0x2b1917=this;return function(_0x27fd31){if(_0x27fd31){freeIsNotKey(_0x27fd31,_0x2b1917['salesforceAccounts'],'id');for(var _0x5cb2b6=0x0,_0x123ad2={};_0x5cb2b6<_0x27fd31['length'];_0x5cb2b6+=0x1){_0x123ad2=_0x27fd31[_0x5cb2b6];if(_[_0xe0b0('0x41')](_0x2b1917[_0xe0b0('0x48')][_0x123ad2['id']])){_0x2b1917[_0xe0b0('0x48')][_0x123ad2['id']]=new SalesforceAccount(_0x123ad2);}else{_0x2b1917[_0xe0b0('0x3c')](_0x2b1917[_0xe0b0('0x48')][_0x123ad2['id']],_0x123ad2);}}}return _0x2b1917[_0xe0b0('0x48')];};};Realtime['prototype']['initFreshdeskAccounts']=function(){var _0x2ef908=this;return function(_0x5d380a){if(_0x5d380a){freeIsNotKey(_0x5d380a,_0x2ef908['freshdeskAccounts'],'id');for(var _0x249d9a=0x0,_0x222174={};_0x249d9a<_0x5d380a['length'];_0x249d9a+=0x1){_0x222174=_0x5d380a[_0x249d9a];if(_['isUndefined'](_0x2ef908[_0xe0b0('0x1e')][_0x222174['id']])){_0x2ef908[_0xe0b0('0x1e')][_0x222174['id']]=new FreshdeskAccount(_0x222174);}else{_0x2ef908[_0xe0b0('0x3c')](_0x2ef908[_0xe0b0('0x1e')][_0x222174['id']],_0x222174);}}}return _0x2ef908[_0xe0b0('0x1e')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x49')]=function(){var _0x4ebb0f=this;return function(_0x22c7bc){if(_0x22c7bc){freeIsNotKey(_0x22c7bc,_0x4ebb0f['zohoAccounts'],'id');for(var _0x17b3d4=0x0,_0x54106c={};_0x17b3d4<_0x22c7bc['length'];_0x17b3d4+=0x1){_0x54106c=_0x22c7bc[_0x17b3d4];if(_[_0xe0b0('0x41')](_0x4ebb0f[_0xe0b0('0x1f')][_0x54106c['id']])){_0x4ebb0f[_0xe0b0('0x1f')][_0x54106c['id']]=new ZohoAccount(_0x54106c);}else{_0x4ebb0f[_0xe0b0('0x3c')](_0x4ebb0f[_0xe0b0('0x1f')][_0x54106c['id']],_0x54106c);}}}return _0x4ebb0f[_0xe0b0('0x1f')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4a')]=function(){var _0x2e1c9b=this;return function(_0x4e0d87){if(_0x4e0d87){freeIsNotKey(_0x4e0d87,_0x2e1c9b[_0xe0b0('0x20')],'id');for(var _0x57ccc9=0x0,_0x2b5553={};_0x57ccc9<_0x4e0d87[_0xe0b0('0x3e')];_0x57ccc9+=0x1){_0x2b5553=_0x4e0d87[_0x57ccc9];if(_[_0xe0b0('0x41')](_0x2e1c9b[_0xe0b0('0x20')][_0x2b5553['id']])){_0x2e1c9b[_0xe0b0('0x20')][_0x2b5553['id']]=new DeskAccount(_0x2b5553);}else{_0x2e1c9b[_0xe0b0('0x3c')](_0x2e1c9b['deskAccounts'][_0x2b5553['id']],_0x2b5553);}}}return _0x2e1c9b[_0xe0b0('0x20')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4b')]=function(){var _0x271445=this;return function(_0x3bb6d6){if(_0x3bb6d6){freeIsNotKey(_0x3bb6d6,_0x271445[_0xe0b0('0x1d')],'id');for(var _0x234cb7=0x0,_0x1a60d2={};_0x234cb7<_0x3bb6d6[_0xe0b0('0x3e')];_0x234cb7+=0x1){_0x1a60d2=_0x3bb6d6[_0x234cb7];if(_[_0xe0b0('0x41')](_0x271445[_0xe0b0('0x1d')][_0x1a60d2['id']])){_0x271445[_0xe0b0('0x1d')][_0x1a60d2['id']]=new SugarcrmAccount(_0x1a60d2);}else{_0x271445[_0xe0b0('0x3c')](_0x271445[_0xe0b0('0x1d')][_0x1a60d2['id']],_0x1a60d2);}}}return _0x271445[_0xe0b0('0x1d')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4c')]=function(){var _0x155738=this;return function(_0x5aa79b){if(_0x5aa79b){freeIsNotKey(_0x5aa79b,_0x155738[_0xe0b0('0x21')],'id');for(var _0xe7fbac=0x0,_0x1182dc={};_0xe7fbac<_0x5aa79b[_0xe0b0('0x3e')];_0xe7fbac+=0x1){_0x1182dc=_0x5aa79b[_0xe7fbac];if(_[_0xe0b0('0x41')](_0x155738[_0xe0b0('0x21')][_0x1182dc['id']])){_0x155738[_0xe0b0('0x21')][_0x1182dc['id']]=new VtigerAccount(_0x1182dc);}else{_0x155738['mergeFromDatabase'](_0x155738['vtigerAccounts'][_0x1182dc['id']],_0x1182dc);}}}return _0x155738[_0xe0b0('0x21')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4d')]=function(){var _0x47ecc1=this;return function(_0x117d20){if(_0x117d20){freeIsNotKey(_0x117d20,_0x47ecc1[_0xe0b0('0x4e')],'id');for(var _0x309efb=0x0,_0x3d820c={};_0x309efb<_0x117d20[_0xe0b0('0x3e')];_0x309efb+=0x1){_0x3d820c=_0x117d20[_0x309efb];if(_['isUndefined'](_0x47ecc1[_0xe0b0('0x4e')][_0x3d820c['id']])){_0x47ecc1[_0xe0b0('0x4e')][_0x3d820c['id']]=new ServicenowAccount(_0x3d820c);}else{_0x47ecc1[_0xe0b0('0x3c')](_0x47ecc1['servicenowAccounts'][_0x3d820c['id']],_0x3d820c);}}}return _0x47ecc1[_0xe0b0('0x4e')];};};Realtime[_0xe0b0('0x42')]['initDynamics365Accounts']=function(){var _0x1bd249=this;return function(_0x4c5478){if(_0x4c5478){freeIsNotKey(_0x4c5478,_0x1bd249['dynamics365Accounts'],'id');for(var _0x4474ac=0x0,_0x57b51e={};_0x4474ac<_0x4c5478['length'];_0x4474ac+=0x1){_0x57b51e=_0x4c5478[_0x4474ac];if(_[_0xe0b0('0x41')](_0x1bd249[_0xe0b0('0x22')][_0x57b51e['id']])){_0x1bd249[_0xe0b0('0x22')][_0x57b51e['id']]=new Dynamics365Account(_0x57b51e);}else{_0x1bd249[_0xe0b0('0x3c')](_0x1bd249['dynamics365Accounts'][_0x57b51e['id']],_0x57b51e);}}}return _0x1bd249[_0xe0b0('0x22')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4f')]=function(){var _0x41ec8e=this;return function(_0x1b29c){if(_0x1b29c){freeIsNotKey(_0x1b29c,_0x41ec8e[_0xe0b0('0x50')],'id');for(var _0xc5e88c=0x0,_0x224f1e={};_0xc5e88c<_0x1b29c['length'];_0xc5e88c+=0x1){_0x224f1e=_0x1b29c[_0xc5e88c];if(_['isUndefined'](_0x41ec8e[_0xe0b0('0x50')][_0x224f1e['id']])){_0x41ec8e[_0xe0b0('0x50')][_0x224f1e['id']]=new FreshsalesAccount(_0x224f1e);}else{_0x41ec8e[_0xe0b0('0x3c')](_0x41ec8e['freshsalesAccounts'][_0x224f1e['id']],_0x224f1e);}}}return _0x41ec8e['freshsalesAccounts'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x51')]=function(){var _0x5d7cf4=this;return function(_0x5eca3d){for(var _0x691136=0x0;_0x691136<_0x5eca3d[_0xe0b0('0x3e')];_0x691136+=0x1){_[_0xe0b0('0x52')](_0x5d7cf4[_0xe0b0('0x13')][_0x5eca3d[_0x691136][_0xe0b0('0x25')]],_0x5eca3d[_0x691136]);}return _0x5d7cf4[_0xe0b0('0x13')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x53')]=function(){var _0x51f209=this;return function(_0x1daff7){clearVoiceQueues(_0x51f209[_0xe0b0('0x13')]);if(_0x1daff7){_0x1daff7=_[_0xe0b0('0x54')](_0x1daff7,'uniqueid');for(var _0x4fbf44 in _0x1daff7){if(_0x1daff7['hasOwnProperty'](_0x4fbf44)){for(var _0x56ee83=0x0;_0x56ee83<_0x1daff7[_0x4fbf44]['length'];_0x56ee83+=0x1){var _0x567c06=_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x55')];if(_0x51f209['voiceQueues'][_0x567c06]){if(_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallerexit']){_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2e')]+=0x1;}if(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x56')]){_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2f')]+=0x1;}_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2a')]+=moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x57')])['diff'](moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x58')]),_0xe0b0('0x59'))||0x0;if(_0x56ee83===_0x1daff7[_0x4fbf44][_0xe0b0('0x3e')]-0x1){_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x30')]+=moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x5a')]||_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x5b')]||_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallerexitAt'])[_0xe0b0('0x5c')](moment(_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallerjoinAt']),_0xe0b0('0x59'))||0x0;_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x29')]+=0x1;if(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x5d')]){_0x51f209['voiceQueues'][_0x567c06][_0xe0b0('0x5e')]+=0x1;_0x51f209[_0xe0b0('0x13')][_0x567c06]['sumBillable']+=moment(_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallercompleteAt'])[_0xe0b0('0x5c')](moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x57')]),_0xe0b0('0x59'))||0x0;}}else{_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x30')]+=_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2a')]||0x0;}}}}}}return _0x51f209[_0xe0b0('0x13')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x5f')]=function(){var _0x5a63e6=this;return function(_0x4c512b){clearVoiceCallReports(_0x5a63e6[_0xe0b0('0x16')]);if(_0x4c512b){for(var _0x4880d5=0x0;_0x4880d5<_0x4c512b['length'];_0x4880d5+=0x1){_0x5a63e6['outbound']['total']+=0x1;_0x5a63e6[_0xe0b0('0x16')]['sumDuration']+=_0x4c512b[_0x4880d5][_0xe0b0('0x60')];if(_0x4c512b[_0x4880d5][_0xe0b0('0x61')]===_0xe0b0('0x62')){_0x5a63e6[_0xe0b0('0x16')]['answered']+=0x1;_0x5a63e6[_0xe0b0('0x16')][_0xe0b0('0x2a')]+=_0x4c512b[_0x4880d5]['duration']-_0x4c512b[_0x4880d5][_0xe0b0('0x63')]||0x0;_0x5a63e6[_0xe0b0('0x16')][_0xe0b0('0x2b')]+=_0x4c512b[_0x4880d5][_0xe0b0('0x63')];}}}return _0x5a63e6[_0xe0b0('0x16')];};};Realtime['prototype']['initCampaigns']=function(){var _0x55aef7=this;return function(_0x545694){if(_0x545694){freeIsNotKey(_0x545694,_0x55aef7['campaigns'],_0xe0b0('0x25'));for(var _0x567e1a=0x0,_0x3c09af={};_0x567e1a<_0x545694['length'];_0x567e1a+=0x1){_0x3c09af=_0x545694[_0x567e1a];if(_[_0xe0b0('0x41')](_0x55aef7[_0xe0b0('0x64')][_0x3c09af[_0xe0b0('0x25')]])){_0x55aef7[_0xe0b0('0x64')][_0x3c09af[_0xe0b0('0x25')]]=new Campaign(_0x3c09af);}else{_0x55aef7[_0xe0b0('0x3c')](_0x55aef7['campaigns'][_0x3c09af['name']],_0x3c09af);_0x55aef7['campaigns'][_0x3c09af['name']][_0xe0b0('0x65')]=_0x3c09af[_0xe0b0('0x66')]?_0x3c09af[_0xe0b0('0x66')][_0xe0b0('0x25')]:undefined;}}}return _0x55aef7[_0xe0b0('0x64')];};};Realtime['prototype'][_0xe0b0('0x67')]=function(){var _0x39a07b=this;return function(_0xf77616){if(_0xf77616){freeIsNotKey(_0xf77616,_0x39a07b[_0xe0b0('0x17')],'id');for(var _0x154e6d=0x0,_0x2a5082={};_0x154e6d<_0xf77616[_0xe0b0('0x3e')];_0x154e6d+=0x1){_0x2a5082=_0xf77616[_0x154e6d];if(_[_0xe0b0('0x41')](_0x39a07b[_0xe0b0('0x17')][_0x2a5082['id']])){_0x39a07b['voiceExtensions'][_0x2a5082['id']]=new VoiceExtension(_0x2a5082);}else{_0x39a07b['mergeFromDatabase'](_0x39a07b[_0xe0b0('0x17')][_0x2a5082['id']],_0x2a5082);}}}return _0x39a07b[_0xe0b0('0x17')];};};Realtime['prototype'][_0xe0b0('0x68')]=function(){var _0x4593f1=this;return function(_0x44c475){clearCampaigns(_0x4593f1[_0xe0b0('0x64')]);for(var _0x7358ce=0x0;_0x7358ce<_0x44c475[_0xe0b0('0x3e')];_0x7358ce+=0x1){_[_0xe0b0('0x52')](_0x4593f1[_0xe0b0('0x64')][_0x44c475[_0x7358ce]['name']],_0x44c475[_0x7358ce]);}return _0x4593f1['campaigns'];};};Realtime['prototype'][_0xe0b0('0x69')]=function(){var _0x90d471=this;return function(_0x5d2365){if(_0x5d2365){freeIsNotKey(_0x5d2365,_0x90d471[_0xe0b0('0x23')],'id');for(var _0x448694=0x0,_0x396eec={};_0x448694<_0x5d2365[_0xe0b0('0x3e')];_0x448694+=0x1){_0x396eec=_0x5d2365[_0x448694];if(_['isUndefined'](_0x90d471['faxAccounts'][_0x396eec['id']])){_0x90d471['faxAccounts'][_0x396eec['id']]=new FaxAccount(_0x396eec);}else{_0x90d471[_0xe0b0('0x3c')](_0x90d471[_0xe0b0('0x23')][_0x396eec['id']],_0x396eec);}}}return _0x90d471['faxAccounts'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x6a')]=function(){var _0x5547ee=this;return function(_0x576482){if(_0x576482){freeIsNotKey(_0x576482,_0x5547ee[_0xe0b0('0x13')],'name');for(var _0x251195=0x0,_0x5f06c0={};_0x251195<_0x576482[_0xe0b0('0x3e')];_0x251195+=0x1){_0x5f06c0=_0x576482[_0x251195];if(_[_0xe0b0('0x41')](_0x5547ee[_0xe0b0('0x13')][_0x5f06c0[_0xe0b0('0x25')]])){_0x5547ee[_0xe0b0('0x13')][_0x5f06c0[_0xe0b0('0x25')]]=new VoiceQueue(_0x5f06c0);}else{_0x5547ee[_0xe0b0('0x3c')](_0x5547ee[_0xe0b0('0x13')][_0x5f06c0[_0xe0b0('0x25')]],_0x5f06c0);}}}return _0x5547ee['voiceQueues'];};};module[_0xe0b0('0x6b')]=Realtime;
\ No newline at end of file
+var _0x5f2f=['initCampaignHopperHistory','merge','initFaxAccounts','initVoiceQueues','exports','lodash','moment','util','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','voiceQueues','templates','outbound','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','name','isNil','interface','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','total','answered','unmanaged','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundRejectCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','isUndefined','initTelephones','SIP/%s','trunks','initTriggers','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','abandoned','queuecallerleaveAt','diff','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions'];(function(_0x27ae64,_0xc8817a){var _0x46e09f=function(_0x8e2af5){while(--_0x8e2af5){_0x27ae64['push'](_0x27ae64['shift']());}};_0x46e09f(++_0xc8817a);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3bf1b1,_0x1e6d4b){_0x3bf1b1=_0x3bf1b1-0x0;var _0x5a12d2=_0x5f2f[_0x3bf1b1];return _0x5a12d2;};'use strict';var _=require(_0xf5f2('0x0'));var moment=require(_0xf5f2('0x1'));var util=require(_0xf5f2('0x2'));var Agent=require(_0xf5f2('0x3'));var Telephone=require(_0xf5f2('0x4'));var Trunk=require(_0xf5f2('0x5'));var VoiceQueue=require(_0xf5f2('0x6'));var Trigger=require(_0xf5f2('0x7'));var Template=require('../model/template');var Campaign=require('../model/campaign');var VoiceExtension=require(_0xf5f2('0x8'));var ZendeskAccount=require(_0xf5f2('0x9'));var SalesforceAccount=require(_0xf5f2('0xa'));var FreshdeskAccount=require(_0xf5f2('0xb'));var SugarcrmAccount=require(_0xf5f2('0xc'));var ZohoAccount=require(_0xf5f2('0xd'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xf5f2('0xe'));var ServicenowAccount=require(_0xf5f2('0xf'));var Dynamics365Account=require(_0xf5f2('0x10'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0xf5f2('0x11'));function Realtime(){this[_0xf5f2('0x12')]={};this[_0xf5f2('0x13')]={};this['trunks']={};this[_0xf5f2('0x14')]={};this['triggers']={};this['campaigns']={};this[_0xf5f2('0x15')]={};this[_0xf5f2('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0xf5f2('0x17')]={};this[_0xf5f2('0x18')]={};this[_0xf5f2('0x19')]={};this[_0xf5f2('0x1a')]={};this[_0xf5f2('0x1b')]={};this[_0xf5f2('0x1c')]={};this['salesforceAccounts']={};this[_0xf5f2('0x1d')]={};this[_0xf5f2('0x1e')]={};this[_0xf5f2('0x1f')]={};this[_0xf5f2('0x20')]={};this[_0xf5f2('0x21')]={};this['servicenowAccounts']={};this[_0xf5f2('0x22')]={};this[_0xf5f2('0x23')]={};this[_0xf5f2('0x24')]={};}function freeIsNotKey(_0x1b6dd2,_0x23e23a,_0x3a9dbb){var _0xdb61b3=_[_0xf5f2('0x25')](_0x1b6dd2,function(_0x11f702){return _0x11f702[_0x3a9dbb];});for(var _0x228ace in _0x23e23a){if(_0x23e23a[_0xf5f2('0x26')](_0x228ace)){if(!_0xdb61b3[_0x228ace]){delete _0x23e23a[_0x228ace];}}}}function freeIsNotKeySip(_0x28e097,_0x4ff59b){var _0x3ee69=_[_0xf5f2('0x25')](_0x28e097,function(_0x626999){return util[_0xf5f2('0x27')]('SIP/%s',_0x626999[_0xf5f2('0x28')]);});for(var _0x47101e in _0x4ff59b){if(_0x4ff59b['hasOwnProperty'](_0x47101e)){if(!_0x3ee69[_0x47101e]){delete _0x4ff59b[_0x47101e];}}}}function freeIsNotKeyAgent(_0x47acfc,_0x2d2805){var _0x388e6c=_['mapKeys'](_0x47acfc,function(_0x45b74f){var _0x170042=_[_0xf5f2('0x29')](_0x45b74f[_0xf5f2('0x2a')])?util[_0xf5f2('0x27')]('SIP/%s',_0x45b74f[_0xf5f2('0x28')]):_0x45b74f[_0xf5f2('0x2a')];return _0x170042;});for(var _0x4e8bda in _0x2d2805){if(_0x2d2805[_0xf5f2('0x26')](_0x4e8bda)){if(!_0x388e6c[_0x4e8bda]){delete _0x2d2805[_0x4e8bda];}}}}function clearVoiceCallReports(_0x287ad5){_0x287ad5['total']=0x0;_0x287ad5['answered']=0x0;_0x287ad5[_0xf5f2('0x2b')]=0x0;_0x287ad5[_0xf5f2('0x2c')]=0x0;_0x287ad5[_0xf5f2('0x2d')]=0x0;}function clearCampaigns(_0x1a5bb3){if(!_[_0xf5f2('0x2e')](_0x1a5bb3)){for(var _0x788a8d in _0x1a5bb3){if(_0x1a5bb3[_0xf5f2('0x26')](_0x788a8d)){_0x1a5bb3[_0x788a8d][_0xf5f2('0x2f')]=0x0;_0x1a5bb3[_0x788a8d][_0xf5f2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x4ab014){if(!_[_0xf5f2('0x2e')](_0x4ab014)){for(var _0x102449 in _0x4ab014){if(_0x4ab014[_0xf5f2('0x26')](_0x102449)){_0x4ab014[_0x102449][_0xf5f2('0x31')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x32')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x33')]=0x0;_0x4ab014[_0x102449]['abandoned']=0x0;_0x4ab014[_0x102449]['sumHoldTime']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x2c')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x2d')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x34')]=0x0;_0x4ab014[_0x102449]['outboundNoAnswerCallsDay']=0x0;_0x4ab014[_0x102449]['outboundBusyCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x35')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x36')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x37')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x38')]=0x0;_0x4ab014[_0x102449][_0xf5f2('0x39')]=0x0;_0x4ab014[_0x102449]['outboundBlacklistCallsDay']=0x0;_0x4ab014[_0x102449]['outboundOriginateFailureCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x3a')]=0x0;_0x4ab014[_0x102449]['outboundReCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x34')]=0x0;_0x4ab014[_0x102449]['outboundAnswerCallsDay']=0x0;_0x4ab014[_0x102449][_0xf5f2('0x3b')]=!![];}}}}Realtime[_0xf5f2('0x3c')][_0xf5f2('0x3d')]=function(_0x428770,_0x256bd9){for(var _0x277eee in _0x256bd9){if(_0x428770[_0xf5f2('0x26')](_0x277eee)){_0x428770[_0x277eee]=_0x256bd9[_0x277eee];}}};Realtime[_0xf5f2('0x3c')]['initAgents']=function(){var _0x4149e6=this;return function(_0x43e4ff){if(_0x43e4ff){freeIsNotKeyAgent(_0x43e4ff,_0x4149e6[_0xf5f2('0x12')]);for(var _0x43c77d=0x0,_0x1408b9={};_0x43c77d<_0x43e4ff[_0xf5f2('0x3e')];_0x43c77d+=0x1){_0x1408b9=_0x43e4ff[_0x43c77d];var _0x297c0c=_['isNil'](_0x1408b9[_0xf5f2('0x2a')])?util[_0xf5f2('0x27')]('SIP/%s',_0x1408b9[_0xf5f2('0x28')]):_0x1408b9['interface'];if(_[_0xf5f2('0x3f')](_0x4149e6[_0xf5f2('0x12')][_0x297c0c])){_0x4149e6[_0xf5f2('0x12')][_0x297c0c]=new Agent(_0x1408b9);}else{_0x4149e6[_0xf5f2('0x3d')](_0x4149e6['agents'][_0x297c0c],_0x1408b9);}}}return _0x4149e6['agents'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x40')]=function(){var _0x20eb74=this;return function(_0x4ec8fb){if(_0x4ec8fb){freeIsNotKeySip(_0x4ec8fb,_0x20eb74[_0xf5f2('0x13')]);for(var _0x4f7f80=0x0,_0x9da533={};_0x4f7f80<_0x4ec8fb['length'];_0x4f7f80+=0x1){_0x9da533=_0x4ec8fb[_0x4f7f80];if(_[_0xf5f2('0x3f')](_0x20eb74[_0xf5f2('0x13')][util['format'](_0xf5f2('0x41'),_0x9da533[_0xf5f2('0x28')])])){_0x20eb74[_0xf5f2('0x13')][util[_0xf5f2('0x27')]('SIP/%s',_0x9da533['name'])]=new Telephone(_0x9da533);}else{_0x20eb74[_0xf5f2('0x3d')](_0x20eb74[_0xf5f2('0x13')][util[_0xf5f2('0x27')](_0xf5f2('0x41'),_0x9da533[_0xf5f2('0x28')])],_0x9da533);}}}return _0x20eb74[_0xf5f2('0x13')];};};Realtime[_0xf5f2('0x3c')]['initTrunks']=function(){var _0x110fe5=this;return function(_0x3b4ea6){if(_0x3b4ea6){freeIsNotKeySip(_0x3b4ea6,_0x110fe5['trunks']);for(var _0xc6a1ae=0x0,_0x3f3895={};_0xc6a1ae<_0x3b4ea6[_0xf5f2('0x3e')];_0xc6a1ae+=0x1){_0x3f3895=_0x3b4ea6[_0xc6a1ae];if(_[_0xf5f2('0x3f')](_0x110fe5[_0xf5f2('0x42')][util[_0xf5f2('0x27')](_0xf5f2('0x41'),_0x3f3895[_0xf5f2('0x28')])])){_0x110fe5['trunks'][util[_0xf5f2('0x27')](_0xf5f2('0x41'),_0x3f3895[_0xf5f2('0x28')])]=new Trunk(_0x3f3895);}else{_0x110fe5['mergeFromDatabase'](_0x110fe5['trunks'][util['format'](_0xf5f2('0x41'),_0x3f3895[_0xf5f2('0x28')])],_0x3f3895);}}}return _0x110fe5['trunks'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x43')]=function(){var _0x28e33f=this;return function(_0x31f86c){if(_0x31f86c){freeIsNotKey(_0x31f86c,_0x28e33f[_0xf5f2('0x44')],'id');for(var _0x2b3b1c=0x0,_0x1a6ec1={};_0x2b3b1c<_0x31f86c[_0xf5f2('0x3e')];_0x2b3b1c+=0x1){_0x1a6ec1=_0x31f86c[_0x2b3b1c];if(_[_0xf5f2('0x3f')](_0x28e33f[_0xf5f2('0x44')][_0x1a6ec1['id']])){_0x28e33f[_0xf5f2('0x44')][_0x1a6ec1['id']]=new Trigger(_0x1a6ec1);}else{_0x28e33f[_0xf5f2('0x3d')](_0x28e33f[_0xf5f2('0x44')][_0x1a6ec1['id']],_0x1a6ec1);}}}return _0x28e33f[_0xf5f2('0x44')];};};Realtime['prototype'][_0xf5f2('0x45')]=function(){var _0x578c93=this;return function(_0x3d62c1){if(_0x3d62c1){freeIsNotKey(_0x3d62c1,_0x578c93[_0xf5f2('0x15')],'id');for(var _0x218def=0x0,_0x36a4b0={};_0x218def<_0x3d62c1[_0xf5f2('0x3e')];_0x218def+=0x1){_0x36a4b0=_0x3d62c1[_0x218def];if(_[_0xf5f2('0x3f')](_0x578c93['templates'][_0x36a4b0['id']])){_0x578c93[_0xf5f2('0x15')][_0x36a4b0['id']]=new Template(_0x36a4b0);}else{_0x578c93[_0xf5f2('0x3d')](_0x578c93[_0xf5f2('0x15')][_0x36a4b0['id']],_0x36a4b0);}}}return _0x578c93[_0xf5f2('0x15')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x46')]=function(){var _0xf638ff=this;return function(_0x297f07){if(_0x297f07){freeIsNotKey(_0x297f07,_0xf638ff['zendeskAccounts'],'id');for(var _0x35dece=0x0,_0x33ec29={};_0x35dece<_0x297f07[_0xf5f2('0x3e')];_0x35dece+=0x1){_0x33ec29=_0x297f07[_0x35dece];if(_['isUndefined'](_0xf638ff[_0xf5f2('0x1c')][_0x33ec29['id']])){_0xf638ff[_0xf5f2('0x1c')][_0x33ec29['id']]=new ZendeskAccount(_0x33ec29);}else{_0xf638ff[_0xf5f2('0x3d')](_0xf638ff['zendeskAccounts'][_0x33ec29['id']],_0x33ec29);}}}return _0xf638ff['zendeskAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x47')]=function(){var _0x5db519=this;return function(_0x14aa81){if(_0x14aa81){freeIsNotKey(_0x14aa81,_0x5db519['salesforceAccounts'],'id');for(var _0x740321=0x0,_0x497eb8={};_0x740321<_0x14aa81[_0xf5f2('0x3e')];_0x740321+=0x1){_0x497eb8=_0x14aa81[_0x740321];if(_['isUndefined'](_0x5db519[_0xf5f2('0x48')][_0x497eb8['id']])){_0x5db519[_0xf5f2('0x48')][_0x497eb8['id']]=new SalesforceAccount(_0x497eb8);}else{_0x5db519[_0xf5f2('0x3d')](_0x5db519[_0xf5f2('0x48')][_0x497eb8['id']],_0x497eb8);}}}return _0x5db519['salesforceAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x49')]=function(){var _0x4f6b01=this;return function(_0x58213b){if(_0x58213b){freeIsNotKey(_0x58213b,_0x4f6b01[_0xf5f2('0x1e')],'id');for(var _0x3dc0c4=0x0,_0x57782c={};_0x3dc0c4<_0x58213b[_0xf5f2('0x3e')];_0x3dc0c4+=0x1){_0x57782c=_0x58213b[_0x3dc0c4];if(_[_0xf5f2('0x3f')](_0x4f6b01[_0xf5f2('0x1e')][_0x57782c['id']])){_0x4f6b01[_0xf5f2('0x1e')][_0x57782c['id']]=new FreshdeskAccount(_0x57782c);}else{_0x4f6b01['mergeFromDatabase'](_0x4f6b01['freshdeskAccounts'][_0x57782c['id']],_0x57782c);}}}return _0x4f6b01[_0xf5f2('0x1e')];};};Realtime[_0xf5f2('0x3c')]['initZohoAccounts']=function(){var _0x40eef=this;return function(_0x43fc49){if(_0x43fc49){freeIsNotKey(_0x43fc49,_0x40eef[_0xf5f2('0x1f')],'id');for(var _0x14029e=0x0,_0x2b038e={};_0x14029e<_0x43fc49[_0xf5f2('0x3e')];_0x14029e+=0x1){_0x2b038e=_0x43fc49[_0x14029e];if(_[_0xf5f2('0x3f')](_0x40eef['zohoAccounts'][_0x2b038e['id']])){_0x40eef['zohoAccounts'][_0x2b038e['id']]=new ZohoAccount(_0x2b038e);}else{_0x40eef[_0xf5f2('0x3d')](_0x40eef[_0xf5f2('0x1f')][_0x2b038e['id']],_0x2b038e);}}}return _0x40eef[_0xf5f2('0x1f')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x4a')]=function(){var _0x5a861d=this;return function(_0xdb1106){if(_0xdb1106){freeIsNotKey(_0xdb1106,_0x5a861d[_0xf5f2('0x20')],'id');for(var _0x18b124=0x0,_0x519c24={};_0x18b124<_0xdb1106[_0xf5f2('0x3e')];_0x18b124+=0x1){_0x519c24=_0xdb1106[_0x18b124];if(_['isUndefined'](_0x5a861d[_0xf5f2('0x20')][_0x519c24['id']])){_0x5a861d[_0xf5f2('0x20')][_0x519c24['id']]=new DeskAccount(_0x519c24);}else{_0x5a861d[_0xf5f2('0x3d')](_0x5a861d[_0xf5f2('0x20')][_0x519c24['id']],_0x519c24);}}}return _0x5a861d['deskAccounts'];};};Realtime['prototype'][_0xf5f2('0x4b')]=function(){var _0x4de303=this;return function(_0xa39c65){if(_0xa39c65){freeIsNotKey(_0xa39c65,_0x4de303[_0xf5f2('0x1d')],'id');for(var _0x572ec1=0x0,_0x3f0579={};_0x572ec1<_0xa39c65[_0xf5f2('0x3e')];_0x572ec1+=0x1){_0x3f0579=_0xa39c65[_0x572ec1];if(_[_0xf5f2('0x3f')](_0x4de303['sugarcrmAccounts'][_0x3f0579['id']])){_0x4de303[_0xf5f2('0x1d')][_0x3f0579['id']]=new SugarcrmAccount(_0x3f0579);}else{_0x4de303[_0xf5f2('0x3d')](_0x4de303[_0xf5f2('0x1d')][_0x3f0579['id']],_0x3f0579);}}}return _0x4de303[_0xf5f2('0x1d')];};};Realtime['prototype'][_0xf5f2('0x4c')]=function(){var _0x506fe5=this;return function(_0x2cbe1e){if(_0x2cbe1e){freeIsNotKey(_0x2cbe1e,_0x506fe5[_0xf5f2('0x21')],'id');for(var _0x2e6f5d=0x0,_0x380c08={};_0x2e6f5d<_0x2cbe1e[_0xf5f2('0x3e')];_0x2e6f5d+=0x1){_0x380c08=_0x2cbe1e[_0x2e6f5d];if(_['isUndefined'](_0x506fe5[_0xf5f2('0x21')][_0x380c08['id']])){_0x506fe5[_0xf5f2('0x21')][_0x380c08['id']]=new VtigerAccount(_0x380c08);}else{_0x506fe5[_0xf5f2('0x3d')](_0x506fe5[_0xf5f2('0x21')][_0x380c08['id']],_0x380c08);}}}return _0x506fe5[_0xf5f2('0x21')];};};Realtime['prototype'][_0xf5f2('0x4d')]=function(){var _0x5ee6bc=this;return function(_0x4c96ee){if(_0x4c96ee){freeIsNotKey(_0x4c96ee,_0x5ee6bc[_0xf5f2('0x4e')],'id');for(var _0x4802c5=0x0,_0x10f2b8={};_0x4802c5<_0x4c96ee[_0xf5f2('0x3e')];_0x4802c5+=0x1){_0x10f2b8=_0x4c96ee[_0x4802c5];if(_[_0xf5f2('0x3f')](_0x5ee6bc[_0xf5f2('0x4e')][_0x10f2b8['id']])){_0x5ee6bc['servicenowAccounts'][_0x10f2b8['id']]=new ServicenowAccount(_0x10f2b8);}else{_0x5ee6bc[_0xf5f2('0x3d')](_0x5ee6bc[_0xf5f2('0x4e')][_0x10f2b8['id']],_0x10f2b8);}}}return _0x5ee6bc[_0xf5f2('0x4e')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x4f')]=function(){var _0x35d868=this;return function(_0x158768){if(_0x158768){freeIsNotKey(_0x158768,_0x35d868['dynamics365Accounts'],'id');for(var _0x1f55af=0x0,_0x2d171d={};_0x1f55af<_0x158768[_0xf5f2('0x3e')];_0x1f55af+=0x1){_0x2d171d=_0x158768[_0x1f55af];if(_[_0xf5f2('0x3f')](_0x35d868['dynamics365Accounts'][_0x2d171d['id']])){_0x35d868[_0xf5f2('0x22')][_0x2d171d['id']]=new Dynamics365Account(_0x2d171d);}else{_0x35d868['mergeFromDatabase'](_0x35d868[_0xf5f2('0x22')][_0x2d171d['id']],_0x2d171d);}}}return _0x35d868[_0xf5f2('0x22')];};};Realtime['prototype'][_0xf5f2('0x50')]=function(){var _0x975bd8=this;return function(_0xa0c139){if(_0xa0c139){freeIsNotKey(_0xa0c139,_0x975bd8[_0xf5f2('0x23')],'id');for(var _0x146462=0x0,_0x4bd113={};_0x146462<_0xa0c139[_0xf5f2('0x3e')];_0x146462+=0x1){_0x4bd113=_0xa0c139[_0x146462];if(_[_0xf5f2('0x3f')](_0x975bd8[_0xf5f2('0x23')][_0x4bd113['id']])){_0x975bd8[_0xf5f2('0x23')][_0x4bd113['id']]=new FreshsalesAccount(_0x4bd113);}else{_0x975bd8[_0xf5f2('0x3d')](_0x975bd8[_0xf5f2('0x23')][_0x4bd113['id']],_0x4bd113);}}}return _0x975bd8['freshsalesAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x51')]=function(){var _0x4800fe=this;return function(_0x3f677e){for(var _0x36503c=0x0;_0x36503c<_0x3f677e[_0xf5f2('0x3e')];_0x36503c+=0x1){_['merge'](_0x4800fe['voiceQueues'][_0x3f677e[_0x36503c]['name']],_0x3f677e[_0x36503c]);}return _0x4800fe[_0xf5f2('0x14')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x52')]=function(){var _0x450691=this;return function(_0x55da4d){clearVoiceQueues(_0x450691['voiceQueues']);if(_0x55da4d){_0x55da4d=_[_0xf5f2('0x53')](_0x55da4d,_0xf5f2('0x54'));for(var _0xc10cf3 in _0x55da4d){if(_0x55da4d[_0xf5f2('0x26')](_0xc10cf3)){for(var _0x794e0c=0x0;_0x794e0c<_0x55da4d[_0xc10cf3][_0xf5f2('0x3e')];_0x794e0c+=0x1){var _0x11c302=_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x55')];if(_0x450691[_0xf5f2('0x14')][_0x11c302]){if(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x56')]){_0x450691[_0xf5f2('0x14')][_0x11c302]['unmanaged']+=0x1;}if(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerabandon']){_0x450691['voiceQueues'][_0x11c302][_0xf5f2('0x57')]+=0x1;}_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2b')]+=moment(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x58')])[_0xf5f2('0x59')](moment(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerjoinAt']),_0xf5f2('0x5a'))||0x0;if(_0x794e0c===_0x55da4d[_0xc10cf3][_0xf5f2('0x3e')]-0x1){_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2c')]+=moment(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5b')]||_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerabandonAt']||_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5c')])[_0xf5f2('0x59')](moment(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerjoinAt']),_0xf5f2('0x5a'))||0x0;_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x31')]+=0x1;if(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5d')]){_0x450691['voiceQueues'][_0x11c302][_0xf5f2('0x32')]+=0x1;_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2d')]+=moment(_0x55da4d[_0xc10cf3][_0x794e0c][_0xf5f2('0x5b')])[_0xf5f2('0x59')](moment(_0x55da4d[_0xc10cf3][_0x794e0c]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2c')]+=_0x450691[_0xf5f2('0x14')][_0x11c302][_0xf5f2('0x2b')]||0x0;}}}}}}return _0x450691['voiceQueues'];};};Realtime['prototype'][_0xf5f2('0x5e')]=function(){var _0x4f2fcc=this;return function(_0x4c4420){clearVoiceCallReports(_0x4f2fcc['outbound']);if(_0x4c4420){for(var _0x57cb18=0x0;_0x57cb18<_0x4c4420[_0xf5f2('0x3e')];_0x57cb18+=0x1){_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x31')]+=0x1;_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x2c')]+=_0x4c4420[_0x57cb18][_0xf5f2('0x5f')];if(_0x4c4420[_0x57cb18][_0xf5f2('0x60')]===_0xf5f2('0x61')){_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x32')]+=0x1;_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x2b')]+=_0x4c4420[_0x57cb18][_0xf5f2('0x5f')]-_0x4c4420[_0x57cb18][_0xf5f2('0x62')]||0x0;_0x4f2fcc[_0xf5f2('0x16')][_0xf5f2('0x2d')]+=_0x4c4420[_0x57cb18][_0xf5f2('0x62')];}}}return _0x4f2fcc[_0xf5f2('0x16')];};};Realtime['prototype'][_0xf5f2('0x63')]=function(){var _0x35299d=this;return function(_0x21043b){if(_0x21043b){freeIsNotKey(_0x21043b,_0x35299d[_0xf5f2('0x64')],_0xf5f2('0x28'));for(var _0x308220=0x0,_0x16491c={};_0x308220<_0x21043b[_0xf5f2('0x3e')];_0x308220+=0x1){_0x16491c=_0x21043b[_0x308220];if(_['isUndefined'](_0x35299d[_0xf5f2('0x64')][_0x16491c['name']])){_0x35299d['campaigns'][_0x16491c['name']]=new Campaign(_0x16491c);}else{_0x35299d['mergeFromDatabase'](_0x35299d['campaigns'][_0x16491c['name']],_0x16491c);_0x35299d[_0xf5f2('0x64')][_0x16491c[_0xf5f2('0x28')]][_0xf5f2('0x65')]=_0x16491c[_0xf5f2('0x66')]?_0x16491c[_0xf5f2('0x66')][_0xf5f2('0x28')]:undefined;}}}return _0x35299d['campaigns'];};};Realtime['prototype'][_0xf5f2('0x67')]=function(){var _0x578a22=this;return function(_0x418ece){if(_0x418ece){freeIsNotKey(_0x418ece,_0x578a22[_0xf5f2('0x68')],'id');for(var _0x59161c=0x0,_0x4f3ad4={};_0x59161c<_0x418ece[_0xf5f2('0x3e')];_0x59161c+=0x1){_0x4f3ad4=_0x418ece[_0x59161c];if(_[_0xf5f2('0x3f')](_0x578a22['voiceExtensions'][_0x4f3ad4['id']])){_0x578a22[_0xf5f2('0x68')][_0x4f3ad4['id']]=new VoiceExtension(_0x4f3ad4);}else{_0x578a22[_0xf5f2('0x3d')](_0x578a22['voiceExtensions'][_0x4f3ad4['id']],_0x4f3ad4);}}}return _0x578a22[_0xf5f2('0x68')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x69')]=function(){var _0x4c1678=this;return function(_0x33e9ad){clearCampaigns(_0x4c1678[_0xf5f2('0x64')]);for(var _0x14db86=0x0;_0x14db86<_0x33e9ad[_0xf5f2('0x3e')];_0x14db86+=0x1){_[_0xf5f2('0x6a')](_0x4c1678[_0xf5f2('0x64')][_0x33e9ad[_0x14db86][_0xf5f2('0x28')]],_0x33e9ad[_0x14db86]);}return _0x4c1678[_0xf5f2('0x64')];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x6b')]=function(){var _0x191af3=this;return function(_0x2601aa){if(_0x2601aa){freeIsNotKey(_0x2601aa,_0x191af3[_0xf5f2('0x24')],'id');for(var _0x407dd8=0x0,_0xe900ea={};_0x407dd8<_0x2601aa[_0xf5f2('0x3e')];_0x407dd8+=0x1){_0xe900ea=_0x2601aa[_0x407dd8];if(_[_0xf5f2('0x3f')](_0x191af3[_0xf5f2('0x24')][_0xe900ea['id']])){_0x191af3[_0xf5f2('0x24')][_0xe900ea['id']]=new FaxAccount(_0xe900ea);}else{_0x191af3[_0xf5f2('0x3d')](_0x191af3[_0xf5f2('0x24')][_0xe900ea['id']],_0xe900ea);}}}return _0x191af3['faxAccounts'];};};Realtime[_0xf5f2('0x3c')][_0xf5f2('0x6c')]=function(){var _0x5d6c6e=this;return function(_0x2e49ce){if(_0x2e49ce){freeIsNotKey(_0x2e49ce,_0x5d6c6e[_0xf5f2('0x14')],'name');for(var _0xb56304=0x0,_0x2f54eb={};_0xb56304<_0x2e49ce[_0xf5f2('0x3e')];_0xb56304+=0x1){_0x2f54eb=_0x2e49ce[_0xb56304];if(_['isUndefined'](_0x5d6c6e['voiceQueues'][_0x2f54eb[_0xf5f2('0x28')]])){_0x5d6c6e[_0xf5f2('0x14')][_0x2f54eb[_0xf5f2('0x28')]]=new VoiceQueue(_0x2f54eb);}else{_0x5d6c6e['mergeFromDatabase'](_0x5d6c6e['voiceQueues'][_0x2f54eb[_0xf5f2('0x28')]],_0x2f54eb);}}}return _0x5d6c6e[_0xf5f2('0x14')];};};module[_0xf5f2('0x6d')]=Realtime;
\ No newline at end of file
index a3f62a5..64b827c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1ec=['assign','hasOwnProperty','mergeDBDataToRealtime'];(function(_0x53056c,_0x1d56a9){var _0x5cec88=function(_0x2ad06b){while(--_0x2ad06b){_0x53056c['push'](_0x53056c['shift']());}};_0x5cec88(++_0x1d56a9);}(_0xf1ec,0xe4));var _0xcf1e=function(_0x402303,_0x5d261b){_0x402303=_0x402303-0x0;var _0x141132=_0xf1ec[_0x402303];return _0x141132;};'use strict';function mergeDBDataToRealtime(_0x13a8d2,_0x575193){var _0x5c16a3=Object[_0xcf1e('0x0')]({},_0x13a8d2);for(var _0x393459 in _0x575193){if(_0x5c16a3[_0xcf1e('0x1')](_0x393459)){_0x5c16a3[_0x393459]=_0x575193[_0x393459];}}return _0x5c16a3;}exports[_0xcf1e('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
+var _0x8d20=['mergeDBDataToRealtime'];(function(_0xe82a73,_0x2ac891){var _0x276aad=function(_0x7f97c4){while(--_0x7f97c4){_0xe82a73['push'](_0xe82a73['shift']());}};_0x276aad(++_0x2ac891);}(_0x8d20,0x1d1));var _0x08d2=function(_0x23a3ac,_0x28a352){_0x23a3ac=_0x23a3ac-0x0;var _0x4d0992=_0x8d20[_0x23a3ac];return _0x4d0992;};'use strict';function mergeDBDataToRealtime(_0x37d8ff,_0x37c1cb){var _0x37210d=Object['assign']({},_0x37d8ff);for(var _0x1facd2 in _0x37c1cb){if(_0x37210d['hasOwnProperty'](_0x1facd2)){_0x37210d[_0x1facd2]=_0x37c1cb[_0x1facd2];}}return _0x37210d;}exports[_0x08d2('0x0')]=mergeDBDataToRealtime;
\ No newline at end of file
index 4a0b37b..93223bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf0=['mobile','phone','lastIndexOf','findAgent','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','name','find','format','SIP/%s','voiceQueueReport','connectedlinenum','accountcode','assigned','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','keys','length','getCallType','channel','getAgentByInternal','calleridnum','internal','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','callerid','ANSWERED','\x22%s\x22\x20<%s>','transfers','linkedid','transfereelinkedid','uniqueid','isNil','UserId','split','membername','monitor','monitors','monitorFilename','filename','createdAt','calleridname','connectedlinename','isArray','forEach','startsWith','Local','substring','indexOf'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xacf0,0x181));var _0x0acf=function(_0x140d2f,_0x2ad576){_0x140d2f=_0x140d2f-0x0;var _0x1a04c6=_0xacf0[_0x140d2f];return _0x1a04c6;};'use strict';var _=require(_0x0acf('0x0'));var moment=require(_0x0acf('0x1'));var util=require(_0x0acf('0x2'));var config=require(_0x0acf('0x3'));var ami=require(_0x0acf('0x4'));var RpcVoiceAgentReport=require(_0x0acf('0x5'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0x0acf('0x6'));var RpcVoiceRecording=require(_0x0acf('0x7'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x0acf('0x8'));var VoiceCallReport=require(_0x0acf('0x9'));var VoiceAgentReport=require(_0x0acf('0xa'));var VoiceDialReport=require(_0x0acf('0xb'));var UserReport=require(_0x0acf('0xc'));function Report(_0x5ecc0f){this[_0x0acf('0xd')]=_0x5ecc0f;this[_0x0acf('0xe')]=_0x5ecc0f[_0x0acf('0xe')];this[_0x0acf('0xf')]=_0x5ecc0f[_0x0acf('0xf')];}Report[_0x0acf('0x10')]['sync']=function(_0x51990b){var _0x457369=new VoiceQueueReport(this[_0x0acf('0xd')]);var _0x59230c=new VoiceAgentReport(this[_0x0acf('0xd')]);var _0x9cc78d=new VoiceDialReport(this[_0x0acf('0xd')]);var _0x207790=new VoiceCallReport(this[_0x0acf('0xd')]);var _0x2b1fc7=new UserReport(this['realtime']);if(config['xdr']&&config[_0x0acf('0x11')][_0x0acf('0x12')]){ami['on'](_0x0acf('0x13'),this['voiceQueueReport'][_0x0acf('0x14')](this));ami['on'](_0x0acf('0x15'),this[_0x0acf('0x16')][_0x0acf('0x14')](this));ami['on'](_0x0acf('0x17'),this[_0x0acf('0x18')][_0x0acf('0x14')](this));ami['on']('custom:voiceDialReport',this[_0x0acf('0x19')]['bind'](this));ami['on'](_0x0acf('0x1a'),this[_0x0acf('0x1b')][_0x0acf('0x14')](this));ami['on'](_0x0acf('0x1c'),this[_0x0acf('0x1d')][_0x0acf('0x14')](this));}};Report[_0x0acf('0x10')]['findAgent']=function(_0x59c5e0){var _0x56d1ee;_0x56d1ee=_['find'](this['agents'],function(_0xb65e76){return _0xb65e76['accountcode']==_0x59c5e0||_0xb65e76[_0x0acf('0x1e')]==_0x59c5e0;});if(_['isNil'](_0x56d1ee)){var _0x2ce83a=_['find'](this['telephones'],function(_0x1b0b87){return _0x1b0b87['accountcode']==_0x59c5e0||_0x1b0b87[_0x0acf('0x1e')]==_0x59c5e0;});if(_0x2ce83a){_0x56d1ee=_[_0x0acf('0x1f')](this['agents'],function(_0x28296b){return _0x28296b['interface']==util[_0x0acf('0x20')](_0x0acf('0x21'),_0x2ce83a[_0x0acf('0x1e')]);});}}return _0x56d1ee;};Report[_0x0acf('0x10')][_0x0acf('0x22')]=function(_0x3259a5){for(var _0x59a162=0x0;_0x59a162<_0x3259a5['length'];_0x59a162+=0x1){var _0x44f216=this['findAgent'](_0x3259a5[_0x59a162][_0x0acf('0x23')]);if(_0x44f216){_0x3259a5[_0x59a162]['accountcode']=_0x44f216[_0x0acf('0x24')];_0x3259a5[_0x59a162][_0x0acf('0x25')]=!![];_0x3259a5[_0x59a162][_0x0acf('0x26')]=_0x44f216[_0x0acf('0x1e')];_0x3259a5[_0x59a162][_0x0acf('0x27')]=_['isNil'](_0x44f216['interface'])?util[_0x0acf('0x20')]('SIP/%s',_0x44f216[_0x0acf('0x1e')]):_0x44f216[_0x0acf('0x27')];if(_0x3259a5[_0x59a162][_0x0acf('0x28')]){_0x3259a5[_0x59a162][_0x0acf('0x29')]=moment()[_0x0acf('0x20')](_0x0acf('0x2a'));}if(_0x3259a5[_0x59a162][_0x0acf('0x2b')]){_0x3259a5[_0x59a162][_0x0acf('0x2c')]=moment()['format'](_0x0acf('0x2a'));}RpcMemberReport['voiceQueueReport'](_0x3259a5[_0x59a162]);}RpcVoiceQueueReport[_0x0acf('0x2d')](_0x3259a5[_0x59a162]);}};function extractCalleridNumber(_0x479930){var _0x3bc0dd=_0x479930['match'](/<(.*?)>/);return _0x3bc0dd?_0x3bc0dd[0x1]:_0x479930;}Report[_0x0acf('0x10')]['getAgentByInternal']=function(_0x17271f){for(var _0x4dc888=0x0;_0x4dc888<Object[_0x0acf('0x2e')](this[_0x0acf('0xe')])[_0x0acf('0x2f')];_0x4dc888++){var _0x1a9d7c=Object[_0x0acf('0x2e')](this[_0x0acf('0xe')])[_0x4dc888];var _0x672aec=this[_0x0acf('0xe')][_0x1a9d7c];if(_0x672aec[_0x0acf('0x24')]===Number(_0x17271f))return _0x672aec;}return null;};Report[_0x0acf('0x10')][_0x0acf('0x30')]=function(_0x358305){var _0x443893=_0x358305[_0x0acf('0x31')]['split']('-')[0x0];var _0x1efe7c=this[_0x0acf('0xe')][_0x443893];if(!_0x1efe7c)_0x1efe7c=this[_0x0acf('0x32')](_0x358305[_0x0acf('0x33')]);return!_0x1efe7c?'outbound':_0x0acf('0x34');};Report[_0x0acf('0x10')][_0x0acf('0x16')]=function(_0x49c43b){_0x49c43b[_0x0acf('0x35')]=_0x49c43b['destination']||_0x49c43b[_0x0acf('0x36')];if(_0x49c43b[_0x0acf('0x37')]=='dialer'){_0x49c43b[_0x0acf('0x38')]=_0x0acf('0x39');_0x49c43b[_0x0acf('0x3a')]=_0x49c43b['queue'];if(_0x49c43b[_0x0acf('0x3b')]==_0x0acf('0x3c')){_0x49c43b[_0x0acf('0x24')]='';_0x49c43b[_0x0acf('0x35')]=extractCalleridNumber(_0x49c43b['callerid']);}else if(_0x49c43b[_0x0acf('0x3b')]==_0x0acf('0x3d')){if(_0x49c43b[_0x0acf('0x35')]==_0x0acf('0x3e')){_0x49c43b[_0x0acf('0x35')]=extractCalleridNumber(_0x49c43b[_0x0acf('0x3f')]);_0x49c43b['calleridnum']=_0x49c43b[_0x0acf('0x40')];_0x49c43b[_0x0acf('0x41')]=[_0x49c43b[_0x0acf('0x31')],_0x49c43b[_0x0acf('0x31')]=_0x49c43b[_0x0acf('0x41')]][0x0];_0x49c43b[_0x0acf('0x42')]=_0x49c43b[_0x0acf('0x3f')];}else{_0x49c43b[_0x0acf('0x35')]=_0x49c43b['calleridnum'];_0x49c43b[_0x0acf('0x33')]=_0x49c43b[_0x0acf('0x40')];if(_0x49c43b['disposition']==_0x0acf('0x43')){_0x49c43b['accountcode']=_0x49c43b[_0x0acf('0x23')];}else{_0x49c43b['accountcode']='';}}}}else{_0x49c43b[_0x0acf('0x42')]=util[_0x0acf('0x20')](_0x0acf('0x44'),_0x49c43b['calleridname'],_0x49c43b[_0x0acf('0x33')]);}if(RpcVoiceTransferReport['transfers'][_0x49c43b['linkedid']]){var _0x2ac22d=RpcVoiceTransferReport[_0x0acf('0x45')][_0x49c43b[_0x0acf('0x46')]];_0x2ac22d[_0x0acf('0x47')]=_0x49c43b[_0x0acf('0x48')];RpcVoiceTransferReport[_0x0acf('0x1b')](_0x2ac22d);delete RpcVoiceTransferReport[_0x0acf('0x45')][_0x49c43b[_0x0acf('0x46')]];}if(_[_0x0acf('0x49')](_0x49c43b['type'])){_0x49c43b[_0x0acf('0x37')]=this[_0x0acf('0x30')](_0x49c43b);}if(_[_0x0acf('0x49')](_0x49c43b[_0x0acf('0x4a')])){var _0x96f5b2=_0x49c43b[_0x0acf('0x31')][_0x0acf('0x4b')]('-')[0x0];var _0x3a2e4d=this['agents'][_0x96f5b2];if(!_0x3a2e4d)_0x3a2e4d=this[_0x0acf('0x32')](_0x49c43b[_0x0acf('0x24')]);if(_0x3a2e4d){_0x49c43b[_0x0acf('0x4a')]=_0x3a2e4d['id'];_0x49c43b[_0x0acf('0x4c')]=_0x3a2e4d[_0x0acf('0x1e')];}}RpcVoiceCallReport[_0x0acf('0x2d')](_0x49c43b);if(_0x49c43b[_0x0acf('0x4d')]){for(var _0x5bfad3=0x0;_0x5bfad3<_0x49c43b[_0x0acf('0x4e')][_0x0acf('0x2f')];_0x5bfad3+=0x1){_0x49c43b[_0x0acf('0x4f')]=_0x49c43b[_0x0acf('0x4e')][_0x5bfad3][_0x0acf('0x50')];_0x49c43b['createdAt']=_0x49c43b[_0x0acf('0x4e')][_0x5bfad3][_0x0acf('0x51')];if(_0x49c43b[_0x0acf('0x36')]=='xcally-motion-preview'){_0x49c43b['calleridnum']=_0x49c43b[_0x0acf('0x23')];_0x49c43b[_0x0acf('0x52')]=_0x49c43b[_0x0acf('0x53')];_0x49c43b[_0x0acf('0x23')]=_0x49c43b[_0x0acf('0x24')];_0x49c43b[_0x0acf('0x53')]=_0x49c43b[_0x0acf('0x4c')];_0x49c43b[_0x0acf('0x36')]=_0x49c43b[_0x0acf('0x40')];}else if(_0x49c43b[_0x0acf('0x36')]=='xcally-motion-dialer'){_0x49c43b[_0x0acf('0x33')]=_0x49c43b[_0x0acf('0x35')];_0x49c43b[_0x0acf('0x36')]=_0x49c43b[_0x0acf('0x40')];}RpcVoiceRecording['create'](_0x49c43b);}}};Report[_0x0acf('0x10')]['voiceAgentReport']=function(_0x510923){if(_[_0x0acf('0x54')](_0x510923)){_0x510923[_0x0acf('0x55')](function(_0x3351e3){RpcVoiceAgentReport[_0x0acf('0x2d')](_0x3351e3);});}else{RpcVoiceAgentReport[_0x0acf('0x2d')](_0x510923);}};Report['prototype'][_0x0acf('0x19')]=function(_0x37b1c1){RpcVoiceDialReport['create'](_0x37b1c1);var _0x27cbf3;var _0x1443ae;var _0x2e2ca1=_0x37b1c1[_0x0acf('0x31')];if(_[_0x0acf('0x56')](_0x2e2ca1,_0x0acf('0x57'))){_0x1443ae=_0x2e2ca1[_0x0acf('0x58')](_0x2e2ca1[_0x0acf('0x59')]('/')+0x1,_0x2e2ca1[_0x0acf('0x59')]('@'));_0x27cbf3=_[_0x0acf('0x1f')](this[_0x0acf('0xe')],function(_0x477374){return _0x477374[_0x0acf('0x5a')]==_0x1443ae||_0x477374[_0x0acf('0x5b')]==_0x1443ae||_0x477374[_0x0acf('0x24')]==_0x1443ae;});}else{_0x1443ae=_0x2e2ca1['substring'](_0x2e2ca1[_0x0acf('0x59')]('/')+0x1,_0x2e2ca1[_0x0acf('0x5c')]('-'));_0x27cbf3=this[_0x0acf('0x5d')](_0x1443ae);}if(_0x27cbf3){_0x37b1c1[_0x0acf('0x27')]=_['isNil'](_0x27cbf3[_0x0acf('0x27')])?util[_0x0acf('0x20')](_0x0acf('0x21'),_0x27cbf3['name']):_0x27cbf3['interface'];_0x37b1c1[_0x0acf('0x4c')]=_0x27cbf3['name'];_0x37b1c1[_0x0acf('0x24')]=_0x27cbf3['accountcode'];RpcMemberReport[_0x0acf('0x19')](_0x37b1c1);}};Report[_0x0acf('0x10')][_0x0acf('0x1b')]=function(_0x290814){RpcVoiceTransferReport[_0x0acf('0x45')][_0x290814['transfererlinkedid']]=_0x290814;};Report[_0x0acf('0x10')][_0x0acf('0x1d')]=function(_0xfaa52e){RpcVoiceTransferReport[_0x0acf('0x1d')](_0xfaa52e);};module[_0x0acf('0x5e')]=Report;
\ No newline at end of file
+var _0x727f=['prototype','findAgent','find','accountcode','name','format','SIP/%s','connectedlinenum','assigned','lastAssignedTo','interface','isNil','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','getCallType','channel','split','calleridnum','outbound','internal','destination','type','lastapplication','lastdata','queue','context','callerid','from-sip','xcally-motion-preview','calleridpreview','destinationchannel','originatecalleridnum','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','blindTransfer','UserId','monitor','monitorFilename','monitors','filename','createdAt','connectedlinename','membername','exten','voiceAgentReport','forEach','Local','indexOf','mobile','phone','lastIndexOf','transfererlinkedid','exports','lodash','util','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','./voiceQueueReport','./voiceCallReport','./userReport','realtime','agents','telephones','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer'];(function(_0x3df871,_0xda2e11){var _0x570f7b=function(_0xfaac78){while(--_0xfaac78){_0x3df871['push'](_0x3df871['shift']());}};_0x570f7b(++_0xda2e11);}(_0x727f,0xef));var _0xf727=function(_0xca1472,_0x80ac48){_0xca1472=_0xca1472-0x0;var _0x4b6849=_0x727f[_0xca1472];return _0x4b6849;};'use strict';var _=require(_0xf727('0x0'));var moment=require('moment');var util=require(_0xf727('0x1'));var config=require('../../../config/environment');var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0xf727('0x2'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0xf727('0x3'));var RpcVoiceQueueReport=require(_0xf727('0x4'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xf727('0x5'));var VoiceCallReport=require(_0xf727('0x6'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0xf727('0x7'));function Report(_0x118b18){this[_0xf727('0x8')]=_0x118b18;this[_0xf727('0x9')]=_0x118b18['agents'];this[_0xf727('0xa')]=_0x118b18[_0xf727('0xa')];}Report['prototype']['sync']=function(_0x54ed36){var _0x233aec=new VoiceQueueReport(this[_0xf727('0x8')]);var _0x4f1792=new VoiceAgentReport(this[_0xf727('0x8')]);var _0x81c1c8=new VoiceDialReport(this['realtime']);var _0x2234ab=new VoiceCallReport(this[_0xf727('0x8')]);var _0x501fba=new UserReport(this[_0xf727('0x8')]);if(config[_0xf727('0xb')]&&config['xdr'][_0xf727('0xc')]){ami['on'](_0xf727('0xd'),this[_0xf727('0xe')][_0xf727('0xf')](this));ami['on']('custom:voiceCallReport',this[_0xf727('0x10')]['bind'](this));ami['on'](_0xf727('0x11'),this['voiceAgentReport'][_0xf727('0xf')](this));ami['on']('custom:voiceDialReport',this[_0xf727('0x12')][_0xf727('0xf')](this));ami['on'](_0xf727('0x13'),this['blindTransfer'][_0xf727('0xf')](this));ami['on'](_0xf727('0x14'),this[_0xf727('0x15')][_0xf727('0xf')](this));}};Report[_0xf727('0x16')][_0xf727('0x17')]=function(_0x1053da){var _0x272373;_0x272373=_[_0xf727('0x18')](this[_0xf727('0x9')],function(_0x22c22e){return _0x22c22e[_0xf727('0x19')]==_0x1053da||_0x22c22e[_0xf727('0x1a')]==_0x1053da;});if(_['isNil'](_0x272373)){var _0x3e20e5=_[_0xf727('0x18')](this[_0xf727('0xa')],function(_0x468f59){return _0x468f59['accountcode']==_0x1053da||_0x468f59[_0xf727('0x1a')]==_0x1053da;});if(_0x3e20e5){_0x272373=_[_0xf727('0x18')](this[_0xf727('0x9')],function(_0x2150c6){return _0x2150c6['interface']==util[_0xf727('0x1b')](_0xf727('0x1c'),_0x3e20e5[_0xf727('0x1a')]);});}}return _0x272373;};Report[_0xf727('0x16')][_0xf727('0xe')]=function(_0x480015){for(var _0x4a122d=0x0;_0x4a122d<_0x480015['length'];_0x4a122d+=0x1){var _0x1554ec=this[_0xf727('0x17')](_0x480015[_0x4a122d][_0xf727('0x1d')]);if(_0x1554ec){_0x480015[_0x4a122d][_0xf727('0x19')]=_0x1554ec[_0xf727('0x19')];_0x480015[_0x4a122d][_0xf727('0x1e')]=!![];_0x480015[_0x4a122d][_0xf727('0x1f')]=_0x1554ec['name'];_0x480015[_0x4a122d][_0xf727('0x20')]=_[_0xf727('0x21')](_0x1554ec[_0xf727('0x20')])?util[_0xf727('0x1b')]('SIP/%s',_0x1554ec[_0xf727('0x1a')]):_0x1554ec[_0xf727('0x20')];if(_0x480015[_0x4a122d][_0xf727('0x22')]){_0x480015[_0x4a122d][_0xf727('0x23')]=moment()[_0xf727('0x1b')](_0xf727('0x24'));}if(_0x480015[_0x4a122d][_0xf727('0x25')]){_0x480015[_0x4a122d][_0xf727('0x26')]=moment()['format'](_0xf727('0x24'));}RpcMemberReport[_0xf727('0xe')](_0x480015[_0x4a122d]);}RpcVoiceQueueReport[_0xf727('0x27')](_0x480015[_0x4a122d]);}};function extractCalleridNumber(_0x9ad9fe){var _0x4ba057=_0x9ad9fe[_0xf727('0x28')](/<(.*?)>/);return _0x4ba057?_0x4ba057[0x1]:_0x9ad9fe;}Report['prototype'][_0xf727('0x29')]=function(_0x27b900){for(var _0x208eb9=0x0;_0x208eb9<Object[_0xf727('0x2a')](this[_0xf727('0x9')])['length'];_0x208eb9++){var _0x29d49f=Object[_0xf727('0x2a')](this[_0xf727('0x9')])[_0x208eb9];var _0x1a02e9=this[_0xf727('0x9')][_0x29d49f];if(_0x1a02e9[_0xf727('0x19')]===Number(_0x27b900))return _0x1a02e9;}return null;};Report['prototype'][_0xf727('0x2b')]=function(_0x372ba1){var _0x17bf3c=_0x372ba1[_0xf727('0x2c')][_0xf727('0x2d')]('-')[0x0];var _0x557d16=this['agents'][_0x17bf3c];if(!_0x557d16)_0x557d16=this[_0xf727('0x29')](_0x372ba1[_0xf727('0x2e')]);return!_0x557d16?_0xf727('0x2f'):_0xf727('0x30');};Report[_0xf727('0x16')][_0xf727('0x10')]=function(_0x2f2716){_0x2f2716['destination']=_0x2f2716[_0xf727('0x31')]||_0x2f2716['exten'];if(_0x2f2716[_0xf727('0x32')]=='dialer'){_0x2f2716[_0xf727('0x33')]='queue';_0x2f2716[_0xf727('0x34')]=_0x2f2716[_0xf727('0x35')];if(_0x2f2716[_0xf727('0x36')]=='from-voip-provider'){_0x2f2716[_0xf727('0x19')]='';_0x2f2716[_0xf727('0x31')]=extractCalleridNumber(_0x2f2716[_0xf727('0x37')]);}else if(_0x2f2716[_0xf727('0x36')]==_0xf727('0x38')){if(_0x2f2716[_0xf727('0x31')]==_0xf727('0x39')){_0x2f2716['destination']=extractCalleridNumber(_0x2f2716[_0xf727('0x3a')]);_0x2f2716['calleridnum']=_0x2f2716['originatecalleridnum'];_0x2f2716[_0xf727('0x3b')]=[_0x2f2716[_0xf727('0x2c')],_0x2f2716['channel']=_0x2f2716[_0xf727('0x3b')]][0x0];_0x2f2716['callerid']=_0x2f2716[_0xf727('0x3a')];}else{_0x2f2716[_0xf727('0x31')]=_0x2f2716[_0xf727('0x2e')];_0x2f2716[_0xf727('0x2e')]=_0x2f2716[_0xf727('0x3c')];if(_0x2f2716['disposition']==_0xf727('0x3d')){_0x2f2716[_0xf727('0x19')]=_0x2f2716[_0xf727('0x1d')];}else{_0x2f2716[_0xf727('0x19')]='';}}}}else{_0x2f2716[_0xf727('0x37')]=util['format'](_0xf727('0x3e'),_0x2f2716[_0xf727('0x3f')],_0x2f2716[_0xf727('0x2e')]);}if(RpcVoiceTransferReport[_0xf727('0x40')][_0x2f2716[_0xf727('0x41')]]){var _0x17950e=RpcVoiceTransferReport[_0xf727('0x40')][_0x2f2716[_0xf727('0x41')]];_0x17950e[_0xf727('0x42')]=_0x2f2716[_0xf727('0x43')];RpcVoiceTransferReport[_0xf727('0x44')](_0x17950e);delete RpcVoiceTransferReport[_0xf727('0x40')][_0x2f2716[_0xf727('0x41')]];}if(_[_0xf727('0x21')](_0x2f2716[_0xf727('0x32')])){_0x2f2716['type']=this['getCallType'](_0x2f2716);}if(_['isNil'](_0x2f2716[_0xf727('0x45')])){var _0x48ef89=_0x2f2716[_0xf727('0x2c')]['split']('-')[0x0];var _0x26c276=this[_0xf727('0x9')][_0x48ef89];if(!_0x26c276)_0x26c276=this[_0xf727('0x29')](_0x2f2716[_0xf727('0x19')]);if(_0x26c276){_0x2f2716[_0xf727('0x45')]=_0x26c276['id'];_0x2f2716['membername']=_0x26c276[_0xf727('0x1a')];}}RpcVoiceCallReport['create'](_0x2f2716);if(_0x2f2716[_0xf727('0x46')]){for(var _0x1c726a=0x0;_0x1c726a<_0x2f2716['monitors']['length'];_0x1c726a+=0x1){_0x2f2716[_0xf727('0x47')]=_0x2f2716[_0xf727('0x48')][_0x1c726a][_0xf727('0x49')];_0x2f2716[_0xf727('0x4a')]=_0x2f2716['monitors'][_0x1c726a][_0xf727('0x4a')];if(_0x2f2716['exten']==_0xf727('0x39')){_0x2f2716[_0xf727('0x2e')]=_0x2f2716['connectedlinenum'];_0x2f2716[_0xf727('0x3f')]=_0x2f2716[_0xf727('0x4b')];_0x2f2716[_0xf727('0x1d')]=_0x2f2716['accountcode'];_0x2f2716[_0xf727('0x4b')]=_0x2f2716[_0xf727('0x4c')];_0x2f2716['exten']=_0x2f2716[_0xf727('0x3c')];}else if(_0x2f2716[_0xf727('0x4d')]=='xcally-motion-dialer'){_0x2f2716['calleridnum']=_0x2f2716['destination'];_0x2f2716[_0xf727('0x4d')]=_0x2f2716['originatecalleridnum'];}RpcVoiceRecording[_0xf727('0x27')](_0x2f2716);}}};Report[_0xf727('0x16')][_0xf727('0x4e')]=function(_0x12f165){if(_['isArray'](_0x12f165)){_0x12f165[_0xf727('0x4f')](function(_0x2f6ff4){RpcVoiceAgentReport['create'](_0x2f6ff4);});}else{RpcVoiceAgentReport[_0xf727('0x27')](_0x12f165);}};Report[_0xf727('0x16')][_0xf727('0x12')]=function(_0x475d76){RpcVoiceDialReport[_0xf727('0x27')](_0x475d76);var _0x21b87c;var _0x220041;var _0x128475=_0x475d76[_0xf727('0x2c')];if(_['startsWith'](_0x128475,_0xf727('0x50'))){_0x220041=_0x128475['substring'](_0x128475[_0xf727('0x51')]('/')+0x1,_0x128475[_0xf727('0x51')]('@'));_0x21b87c=_[_0xf727('0x18')](this[_0xf727('0x9')],function(_0x53c4ca){return _0x53c4ca[_0xf727('0x52')]==_0x220041||_0x53c4ca[_0xf727('0x53')]==_0x220041||_0x53c4ca[_0xf727('0x19')]==_0x220041;});}else{_0x220041=_0x128475['substring'](_0x128475[_0xf727('0x51')]('/')+0x1,_0x128475[_0xf727('0x54')]('-'));_0x21b87c=this['findAgent'](_0x220041);}if(_0x21b87c){_0x475d76[_0xf727('0x20')]=_[_0xf727('0x21')](_0x21b87c[_0xf727('0x20')])?util['format'](_0xf727('0x1c'),_0x21b87c['name']):_0x21b87c['interface'];_0x475d76[_0xf727('0x4c')]=_0x21b87c[_0xf727('0x1a')];_0x475d76[_0xf727('0x19')]=_0x21b87c[_0xf727('0x19')];RpcMemberReport[_0xf727('0x12')](_0x475d76);}};Report[_0xf727('0x16')]['blindTransfer']=function(_0x3a3a92){RpcVoiceTransferReport[_0xf727('0x40')][_0x3a3a92[_0xf727('0x55')]]=_0x3a3a92;};Report[_0xf727('0x16')][_0xf727('0x15')]=function(_0x1145bd){RpcVoiceTransferReport['attendedTransfer'](_0x1145bd);};module[_0xf727('0x56')]=Report;
\ No newline at end of file
index d3ab50f..4adc6ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaabb=['state','[userReport][registry]','find','stateRegistry','omit','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','info','device','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','indexOf','mobile','accountcode','address','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','[userReport][sipshowregistry]','then','actionDeviceStateList','catch','error','inspect','actionSipPeerStatus','prototype','isNotNull','emit','[userReport][registry]\x20registry:%s\x20state:%s','username'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xaabb,0x145));var _0xbaab=function(_0x452fde,_0x339a5f){_0x452fde=_0x452fde-0x0;var _0x36ecee=_0xaabb[_0x452fde];return _0x36ecee;};'use strict';var _=require(_0xbaab('0x0'));var moment=require('moment');var util=require(_0xbaab('0x1'));var Redis=require(_0xbaab('0x2'));var BPromise=require(_0xbaab('0x3'));var config=require(_0xbaab('0x4'));var logger=require(_0xbaab('0x5'))(_0xbaab('0x6'));var ami=require('../ami');config[_0xbaab('0x7')]=_[_0xbaab('0x8')](config[_0xbaab('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x2f1414){this['trunks']=_0x2f1414[_0xbaab('0x9')];this[_0xbaab('0xa')]=_0x2f1414[_0xbaab('0xa')];this[_0xbaab('0xb')]=_0x2f1414[_0xbaab('0xb')];ami['on'](_0xbaab('0xc'),this[_0xbaab('0xd')][_0xbaab('0xe')](this));ami['on'](_0xbaab('0xf'),this['syncRegistry']['bind'](this));ami['on'](_0xbaab('0x10'),this[_0xbaab('0x11')][_0xbaab('0xe')](this));ami['on'](_0xbaab('0x12'),this[_0xbaab('0x13')][_0xbaab('0xe')](this));return this[_0xbaab('0x14')]();}function showSipRegistrations(){Promise[_0xbaab('0x15')]()['then'](ami[_0xbaab('0x16')]())['catch'](function(_0x11051f){logger['error'](_0xbaab('0x17'),util['inspect'](_0x11051f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xbaab('0x18')](ami[_0xbaab('0x19')]())[_0xbaab('0x1a')](function(_0x102a33){logger[_0xbaab('0x1b')]('[userReport][devicestatelist]',util[_0xbaab('0x1c')](_0x102a33,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xbaab('0x15')]()['then'](ami[_0xbaab('0x1d')]())[_0xbaab('0x1a')](function(_0x2a7515){logger[_0xbaab('0x1b')]('[userReport][sippeerstatus]',util['inspect'](_0x2a7515,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xbaab('0x14')]=function(){setInterval(function(){BPromise[_0xbaab('0x15')]()[_0xbaab('0x18')](showSipRegistrations())['then'](listDeviceStates())[_0xbaab('0x18')](showPeersStatus());},0x32c8);};UserReport[_0xbaab('0x1e')][_0xbaab('0x1f')]=function(_0x414c93){return _0x414c93!==null&&!_['isUndefined'](_0x414c93);};UserReport[_0xbaab('0x1e')]['emit']=function(_0x52b82f,_0x3b7b34,_0x2b0005){io['to'](_0x52b82f)[_0xbaab('0x20')](_0x3b7b34,_0x2b0005);};UserReport['prototype'][_0xbaab('0xd')]=function(_0x2f3693){try{if(this[_0xbaab('0x1f')](_0x2f3693)){logger['info'](_0xbaab('0x21'),_0x2f3693[_0xbaab('0x22')],_0x2f3693[_0xbaab('0x23')]);logger['debug'](_0xbaab('0x24'),util[_0xbaab('0x1c')](_0x2f3693,{'showHidden':![],'depth':null}));var _0x5686a2=_[_0xbaab('0x25')](this['trunks'],{'defaultuser':_0x2f3693[_0xbaab('0x22')]});if(_0x5686a2){_0x2f3693[_0xbaab('0x26')]=_0x2f3693[_0xbaab('0x23')];_['merge'](_0x5686a2,_[_0xbaab('0x27')](_0x2f3693,['event',_0xbaab('0x28'),_0xbaab('0x22'),_0xbaab('0x23')]));logger[_0xbaab('0x29')](_0xbaab('0x2a'),util[_0xbaab('0x1c')](_0x5686a2,{'showHidden':![],'depth':null}));this['emit'](util[_0xbaab('0x2b')](_0xbaab('0x2c'),_0x5686a2[_0xbaab('0x2d')]),_0xbaab('0x2e'),_0x5686a2);}}}catch(_0x4d7586){logger[_0xbaab('0x1b')](_0xbaab('0x24'),util[_0xbaab('0x1c')](_0x4d7586,{'showHidden':![],'depth':null}));}};UserReport[_0xbaab('0x1e')][_0xbaab('0x11')]=function(_0x36a9a6){try{if(this[_0xbaab('0x1f')](_0x36a9a6)){logger[_0xbaab('0x2f')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x36a9a6[_0xbaab('0x30')],_0x36a9a6[_0xbaab('0x23')]);logger[_0xbaab('0x29')](_0xbaab('0x31'),util[_0xbaab('0x1c')](_0x36a9a6,{'showHidden':![],'depth':null}));if(this[_0xbaab('0xa')][_0x36a9a6['device']]){if(!this[_0xbaab('0xa')][_0x36a9a6['device']][_0xbaab('0x32')]||_0x36a9a6['state'][_0xbaab('0x33')]()==_0xbaab('0x34')){this[_0xbaab('0xa')][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x32')]=![];if(this['agents'][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x23')]!==_0x36a9a6[_0xbaab('0x23')][_0xbaab('0x33')]()){this[_0xbaab('0xa')][_0x36a9a6['device']]['stateTime']=_[_0xbaab('0x35')](moment()['format']('x'));}this['agents'][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x23')]=_0x36a9a6['state'][_0xbaab('0x33')]();this['agents'][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x36')](_0x36a9a6);}}else if(this['telephones'][_0x36a9a6[_0xbaab('0x30')]]){if(this[_0xbaab('0xb')][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x23')]!==_0x36a9a6[_0xbaab('0x23')][_0xbaab('0x33')]()){this[_0xbaab('0xb')][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x37')]=_[_0xbaab('0x35')](moment()[_0xbaab('0x2b')]('x'));}this['telephones'][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x23')]=_0x36a9a6['state'][_0xbaab('0x33')]();logger['debug'](_0xbaab('0x38'),util[_0xbaab('0x1c')](this['telephones'][_0x36a9a6[_0xbaab('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xbaab('0x2b')](_0xbaab('0x39'),this[_0xbaab('0xb')][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x2d')]),_0xbaab('0x3a'),this['telephones'][_0x36a9a6['device']]);}else if(this[_0xbaab('0x9')][_0x36a9a6[_0xbaab('0x30')]]){if(this[_0xbaab('0x9')][_0x36a9a6[_0xbaab('0x30')]][_0xbaab('0x23')]!==_0x36a9a6[_0xbaab('0x23')][_0xbaab('0x33')]()){this[_0xbaab('0x9')][_0x36a9a6['device']][_0xbaab('0x37')]=_[_0xbaab('0x35')](moment()[_0xbaab('0x2b')]('x'));}this[_0xbaab('0x9')][_0x36a9a6[_0xbaab('0x30')]]['state']=_0x36a9a6[_0xbaab('0x23')]['toLowerCase']();logger[_0xbaab('0x29')](_0xbaab('0x3b'),util[_0xbaab('0x1c')](this[_0xbaab('0x9')][_0x36a9a6[_0xbaab('0x30')]],{'showHidden':![],'depth':null}));this[_0xbaab('0x20')](util[_0xbaab('0x2b')](_0xbaab('0x2c'),this['trunks'][_0x36a9a6['device']][_0xbaab('0x2d')]),_0xbaab('0x2e'),this[_0xbaab('0x9')][_0x36a9a6[_0xbaab('0x30')]]);}else if(_['startsWith'](_0x36a9a6[_0xbaab('0x30')],_0xbaab('0x3c'))){var _0x3af90e=_0x36a9a6[_0xbaab('0x30')];var _0xc2f4ea=_0x3af90e['substring'](_0x3af90e[_0xbaab('0x3d')]('/')+0x1,_0x3af90e[_0xbaab('0x3d')]('@'));var _0x2e367d=_['find'](this[_0xbaab('0xa')],function(_0x26e920){return _0x26e920[_0xbaab('0x3e')]==_0xc2f4ea||_0x26e920['phone']==_0xc2f4ea||_0x26e920[_0xbaab('0x3f')]==_0xc2f4ea;});if(_0x2e367d){if(_0x2e367d[_0xbaab('0x23')]!==_0x36a9a6['state'][_0xbaab('0x33')]()){_0x2e367d['stateTime']=_[_0xbaab('0x35')](moment()[_0xbaab('0x2b')]('x'));}_0x2e367d[_0xbaab('0x23')]=_0x36a9a6[_0xbaab('0x23')][_0xbaab('0x33')]();_0x2e367d['local']=!![];_0x2e367d['updateStatusRealtime'](_0x36a9a6);}}}}catch(_0x47206c){logger['error']('[userReport][devicestatechange]',util[_0xbaab('0x1c')](_0x47206c,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xbaab('0x13')]=function(_0x32e7a4){try{if(this[_0xbaab('0x1f')](_0x32e7a4)&&this[_0xbaab('0x1f')](_0x32e7a4[_0xbaab('0x12')])){logger[_0xbaab('0x2f')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x32e7a4['peer'],_0x32e7a4[_0xbaab('0x40')],_0x32e7a4[_0xbaab('0x12')]);logger[_0xbaab('0x29')]('[userReport][peerstatus]',util[_0xbaab('0x1c')](_0x32e7a4,{'showHidden':![],'depth':null}));if(this['agents'][_0x32e7a4[_0xbaab('0x41')]]){if(!this['agents'][_0x32e7a4[_0xbaab('0x41')]][_0xbaab('0x32')]||_0x32e7a4[_0xbaab('0x12')][_0xbaab('0x33')]()==_0xbaab('0x42')){this[_0xbaab('0xa')][_0x32e7a4['peer']]['local']=![];this[_0xbaab('0xa')][_0x32e7a4[_0xbaab('0x41')]][_0xbaab('0x43')]=_0x32e7a4[_0xbaab('0x12')][_0xbaab('0x33')]();this[_0xbaab('0xa')][_0x32e7a4['peer']][_0xbaab('0x40')]=_0x32e7a4['address'];this['agents'][_0x32e7a4['peer']]['updateStatusRealtime'](_0x32e7a4);}}else if(this[_0xbaab('0xb')][_0x32e7a4[_0xbaab('0x41')]]){this[_0xbaab('0xb')][_0x32e7a4['peer']][_0xbaab('0x43')]=_0x32e7a4['peerstatus'][_0xbaab('0x33')]();this[_0xbaab('0xb')][_0x32e7a4[_0xbaab('0x41')]]['address']=_0x32e7a4[_0xbaab('0x40')];logger[_0xbaab('0x29')](_0xbaab('0x44'),util[_0xbaab('0x1c')](this[_0xbaab('0xb')][_0x32e7a4[_0xbaab('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xbaab('0x2b')](_0xbaab('0x39'),this[_0xbaab('0xb')][_0x32e7a4[_0xbaab('0x41')]][_0xbaab('0x2d')]),'telephone:save',this[_0xbaab('0xb')][_0x32e7a4[_0xbaab('0x41')]]);}else if(this['trunks'][_0x32e7a4[_0xbaab('0x41')]]){this[_0xbaab('0x9')][_0x32e7a4[_0xbaab('0x41')]]['status']=_0x32e7a4[_0xbaab('0x12')][_0xbaab('0x33')]();this[_0xbaab('0x9')][_0x32e7a4[_0xbaab('0x41')]]['address']=_0x32e7a4[_0xbaab('0x40')];logger[_0xbaab('0x29')](_0xbaab('0x45'),util[_0xbaab('0x1c')](this[_0xbaab('0x9')][_0x32e7a4['peer']],{'showHidden':![],'depth':null}));this[_0xbaab('0x20')](util['format'](_0xbaab('0x2c'),this[_0xbaab('0x9')][_0x32e7a4[_0xbaab('0x41')]][_0xbaab('0x2d')]),_0xbaab('0x2e'),this[_0xbaab('0x9')][_0x32e7a4[_0xbaab('0x41')]]);}}}catch(_0x253b7d){logger[_0xbaab('0x1b')](_0xbaab('0x46'),util[_0xbaab('0x1c')](_0x253b7d,{'showHidden':![],'depth':null}));}};module[_0xbaab('0x47')]=UserReport;
\ No newline at end of file
+var _0x8f09=['ioredis','bluebird','../../../config/logger','ami','redis','defaults','localhost','trunks','agents','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','inspect','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','username','state','debug','find','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','device','local','toLowerCase','inuse','format','updateStatusRealtime','telephones','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','[userReport][peerstatus]','peer','registered','status','address','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment'];(function(_0x1e2666,_0x16b679){var _0x5dcf21=function(_0x2b6762){while(--_0x2b6762){_0x1e2666['push'](_0x1e2666['shift']());}};_0x5dcf21(++_0x16b679);}(_0x8f09,0x19c));var _0x98f0=function(_0x429c24,_0x1de476){_0x429c24=_0x429c24-0x0;var _0x3c2a02=_0x8f09[_0x429c24];return _0x3c2a02;};'use strict';var _=require(_0x98f0('0x0'));var moment=require(_0x98f0('0x1'));var util=require('util');var Redis=require(_0x98f0('0x2'));var BPromise=require(_0x98f0('0x3'));var config=require('../../../config/environment');var logger=require(_0x98f0('0x4'))(_0x98f0('0x5'));var ami=require('../ami');config[_0x98f0('0x6')]=_[_0x98f0('0x7')](config[_0x98f0('0x6')],{'host':_0x98f0('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x98f0('0x6')]));function UserReport(_0x2c262c){this[_0x98f0('0x9')]=_0x2c262c['trunks'];this['agents']=_0x2c262c[_0x98f0('0xa')];this['telephones']=_0x2c262c['telephones'];ami['on'](_0x98f0('0xb'),this[_0x98f0('0xc')][_0x98f0('0xd')](this));ami['on'](_0x98f0('0xe'),this[_0x98f0('0xc')][_0x98f0('0xd')](this));ami['on'](_0x98f0('0xf'),this[_0x98f0('0x10')][_0x98f0('0xd')](this));ami['on'](_0x98f0('0x11'),this['syncPeerStatus'][_0x98f0('0xd')](this));return this[_0x98f0('0x12')]();}function showSipRegistrations(){Promise[_0x98f0('0x13')]()[_0x98f0('0x14')](ami[_0x98f0('0x15')]())[_0x98f0('0x16')](function(_0x46d24e){logger[_0x98f0('0x17')]('[userReport][sipshowregistry]',util[_0x98f0('0x18')](_0x46d24e,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x98f0('0x13')]()[_0x98f0('0x14')](ami['actionDeviceStateList']())[_0x98f0('0x16')](function(_0x593e22){logger[_0x98f0('0x17')](_0x98f0('0x19'),util[_0x98f0('0x18')](_0x593e22,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x98f0('0x13')]()[_0x98f0('0x14')](ami[_0x98f0('0x1a')]())['catch'](function(_0x37a90d){logger['error'](_0x98f0('0x1b'),util[_0x98f0('0x18')](_0x37a90d,{'showHidden':![],'depth':null}));});}UserReport[_0x98f0('0x1c')][_0x98f0('0x12')]=function(){setInterval(function(){BPromise['resolve']()[_0x98f0('0x14')](showSipRegistrations())[_0x98f0('0x14')](listDeviceStates())[_0x98f0('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x98f0('0x1c')][_0x98f0('0x1d')]=function(_0x474aa4){return _0x474aa4!==null&&!_['isUndefined'](_0x474aa4);};UserReport[_0x98f0('0x1c')][_0x98f0('0x1e')]=function(_0x54fb2f,_0xc1e3f8,_0xb8fd73){io['to'](_0x54fb2f)['emit'](_0xc1e3f8,_0xb8fd73);};UserReport[_0x98f0('0x1c')][_0x98f0('0xc')]=function(_0x5e397b){try{if(this[_0x98f0('0x1d')](_0x5e397b)){logger[_0x98f0('0x1f')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x5e397b[_0x98f0('0x20')],_0x5e397b[_0x98f0('0x21')]);logger[_0x98f0('0x22')]('[userReport][registry]',util[_0x98f0('0x18')](_0x5e397b,{'showHidden':![],'depth':null}));var _0x31bdcd=_[_0x98f0('0x23')](this[_0x98f0('0x9')],{'defaultuser':_0x5e397b[_0x98f0('0x20')]});if(_0x31bdcd){_0x5e397b['stateRegistry']=_0x5e397b[_0x98f0('0x21')];_[_0x98f0('0x24')](_0x31bdcd,_['omit'](_0x5e397b,[_0x98f0('0x25'),_0x98f0('0x26'),_0x98f0('0x20'),_0x98f0('0x21')]));logger['debug'](_0x98f0('0x27'),util[_0x98f0('0x18')](_0x31bdcd,{'showHidden':![],'depth':null}));this[_0x98f0('0x1e')](util['format'](_0x98f0('0x28'),_0x31bdcd[_0x98f0('0x29')]),_0x98f0('0x2a'),_0x31bdcd);}}}catch(_0x5874b2){logger[_0x98f0('0x17')]('[userReport][registry]',util[_0x98f0('0x18')](_0x5874b2,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x3a33df){try{if(this['isNotNull'](_0x3a33df)){logger[_0x98f0('0x1f')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x3a33df[_0x98f0('0x2b')],_0x3a33df[_0x98f0('0x21')]);logger[_0x98f0('0x22')]('[userReport][devicestatechange]',util[_0x98f0('0x18')](_0x3a33df,{'showHidden':![],'depth':null}));if(this[_0x98f0('0xa')][_0x3a33df['device']]){if(!this[_0x98f0('0xa')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x2c')]||_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]()==_0x98f0('0x2e')){this[_0x98f0('0xa')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x2c')]=![];if(this[_0x98f0('0xa')][_0x3a33df['device']][_0x98f0('0x21')]!==_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]()){this['agents'][_0x3a33df[_0x98f0('0x2b')]]['stateTime']=_['toNumber'](moment()[_0x98f0('0x2f')]('x'));}this['agents'][_0x3a33df['device']][_0x98f0('0x21')]=_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]();this['agents'][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x30')](_0x3a33df);}}else if(this[_0x98f0('0x31')][_0x3a33df[_0x98f0('0x2b')]]){if(this['telephones'][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x21')]!==_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]()){this[_0x98f0('0x31')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x32')]=_[_0x98f0('0x33')](moment()[_0x98f0('0x2f')]('x'));}this[_0x98f0('0x31')][_0x3a33df['device']][_0x98f0('0x21')]=_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]();logger['debug'](_0x98f0('0x34'),util['inspect'](this[_0x98f0('0x31')][_0x3a33df[_0x98f0('0x2b')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x98f0('0x2f')](_0x98f0('0x35'),this['telephones'][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x29')]),_0x98f0('0x36'),this[_0x98f0('0x31')][_0x3a33df[_0x98f0('0x2b')]]);}else if(this[_0x98f0('0x9')][_0x3a33df[_0x98f0('0x2b')]]){if(this[_0x98f0('0x9')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x21')]!==_0x3a33df['state'][_0x98f0('0x2d')]()){this[_0x98f0('0x9')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x32')]=_[_0x98f0('0x33')](moment()[_0x98f0('0x2f')]('x'));}this[_0x98f0('0x9')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x21')]=_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]();logger[_0x98f0('0x22')](_0x98f0('0x37'),util[_0x98f0('0x18')](this[_0x98f0('0x9')][_0x3a33df[_0x98f0('0x2b')]],{'showHidden':![],'depth':null}));this[_0x98f0('0x1e')](util['format'](_0x98f0('0x28'),this[_0x98f0('0x9')][_0x3a33df[_0x98f0('0x2b')]][_0x98f0('0x29')]),'trunk:save',this['trunks'][_0x3a33df['device']]);}else if(_[_0x98f0('0x38')](_0x3a33df[_0x98f0('0x2b')],'Local')){var _0x8606a=_0x3a33df[_0x98f0('0x2b')];var _0xef73f5=_0x8606a[_0x98f0('0x39')](_0x8606a[_0x98f0('0x3a')]('/')+0x1,_0x8606a['indexOf']('@'));var _0x3b8ac5=_['find'](this[_0x98f0('0xa')],function(_0x5f0734){return _0x5f0734['mobile']==_0xef73f5||_0x5f0734['phone']==_0xef73f5||_0x5f0734['accountcode']==_0xef73f5;});if(_0x3b8ac5){if(_0x3b8ac5[_0x98f0('0x21')]!==_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]()){_0x3b8ac5[_0x98f0('0x32')]=_[_0x98f0('0x33')](moment()[_0x98f0('0x2f')]('x'));}_0x3b8ac5[_0x98f0('0x21')]=_0x3a33df[_0x98f0('0x21')][_0x98f0('0x2d')]();_0x3b8ac5[_0x98f0('0x2c')]=!![];_0x3b8ac5[_0x98f0('0x30')](_0x3a33df);}}}}catch(_0x116b74){logger[_0x98f0('0x17')](_0x98f0('0x3b'),util[_0x98f0('0x18')](_0x116b74,{'showHidden':![],'depth':null}));}};UserReport[_0x98f0('0x1c')][_0x98f0('0x3c')]=function(_0x307bf9){try{if(this[_0x98f0('0x1d')](_0x307bf9)&&this[_0x98f0('0x1d')](_0x307bf9['peerstatus'])){logger['info'](_0x98f0('0x3d'),_0x307bf9['peer'],_0x307bf9['address'],_0x307bf9[_0x98f0('0x11')]);logger[_0x98f0('0x22')](_0x98f0('0x3e'),util[_0x98f0('0x18')](_0x307bf9,{'showHidden':![],'depth':null}));if(this[_0x98f0('0xa')][_0x307bf9[_0x98f0('0x3f')]]){if(!this[_0x98f0('0xa')][_0x307bf9[_0x98f0('0x3f')]]['local']||_0x307bf9[_0x98f0('0x11')][_0x98f0('0x2d')]()==_0x98f0('0x40')){this[_0x98f0('0xa')][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x2c')]=![];this[_0x98f0('0xa')][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x41')]=_0x307bf9[_0x98f0('0x11')][_0x98f0('0x2d')]();this[_0x98f0('0xa')][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x42')]=_0x307bf9['address'];this[_0x98f0('0xa')][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x30')](_0x307bf9);}}else if(this[_0x98f0('0x31')][_0x307bf9[_0x98f0('0x3f')]]){this[_0x98f0('0x31')][_0x307bf9['peer']]['status']=_0x307bf9[_0x98f0('0x11')][_0x98f0('0x2d')]();this[_0x98f0('0x31')][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x42')]=_0x307bf9[_0x98f0('0x42')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x98f0('0x18')](this[_0x98f0('0x31')][_0x307bf9[_0x98f0('0x3f')]],{'showHidden':![],'depth':null}));this[_0x98f0('0x1e')](util['format'](_0x98f0('0x35'),this['telephones'][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x29')]),_0x98f0('0x36'),this[_0x98f0('0x31')][_0x307bf9['peer']]);}else if(this[_0x98f0('0x9')][_0x307bf9[_0x98f0('0x3f')]]){this[_0x98f0('0x9')][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x41')]=_0x307bf9['peerstatus']['toLowerCase']();this['trunks'][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x42')]=_0x307bf9['address'];logger[_0x98f0('0x22')](_0x98f0('0x43'),util[_0x98f0('0x18')](this['trunks'][_0x307bf9['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x98f0('0x2f')](_0x98f0('0x28'),this['trunks'][_0x307bf9[_0x98f0('0x3f')]][_0x98f0('0x29')]),_0x98f0('0x2a'),this['trunks'][_0x307bf9[_0x98f0('0x3f')]]);}}}catch(_0x2102f6){logger['error']('[userReport][peerstatus]',util[_0x98f0('0x18')](_0x2102f6,{'showHidden':![],'depth':null}));}};module[_0x98f0('0x44')]=UserReport;
\ No newline at end of file
index aee2077..5f15229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd836=['variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','membercalls','memberdynamic','memberpenalty','isNil','includes','isUndefined','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','agentcompleteAt','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','agentconnectAt','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/logger','../ami','redis','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','uniqueid','inspect','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','event','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','membername','user:called','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','pick','queue','destconnectedlinenum','channel','split','name','accountcode','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','transfer','talktime','acw','acwtime','acwTimeout','agentacw','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:'];(function(_0x33b746,_0x43ab64){var _0x1658cf=function(_0x158154){while(--_0x158154){_0x33b746['push'](_0x33b746['shift']());}};_0x1658cf(++_0x43ab64);}(_0xd836,0xc8));var _0x6d83=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xd836[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x6d83('0x0'));var moment=require(_0x6d83('0x1'));var util=require(_0x6d83('0x2'));var Redis=require(_0x6d83('0x3'));var config=require('../../../config/environment');var logger=require(_0x6d83('0x4'))('ami');var ami=require(_0x6d83('0x5'));config[_0x6d83('0x6')]=_['defaults'](config[_0x6d83('0x6')],{'host':_0x6d83('0x7'),'port':0x18eb});var io=require(_0x6d83('0x8'))(new Redis(config[_0x6d83('0x6')]));function VoiceAgentReport(_0x317b04){this[_0x6d83('0x9')]={};this[_0x6d83('0xa')]=_0x317b04[_0x6d83('0x9')];this[_0x6d83('0xb')]=_0x317b04[_0x6d83('0xb')];this[_0x6d83('0xc')]=_0x317b04[_0x6d83('0xc')];this[_0x6d83('0xd')]={};ami['on'](_0x6d83('0xe'),this[_0x6d83('0xf')][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x11'),this['syncAgentConnect'][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x12'),this[_0x6d83('0x13')][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x14'),this[_0x6d83('0x15')][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x16'),this[_0x6d83('0x17')][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x18'),this[_0x6d83('0x19')]['bind'](this));ami['on'](_0x6d83('0x1a'),this['syncHangup'][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x1b'),this[_0x6d83('0x1c')]['bind'](this));ami['on'](_0x6d83('0x1d'),this['syncMusicOnHoldStop']['bind'](this));ami['on'](_0x6d83('0x1e'),this[_0x6d83('0x1f')][_0x6d83('0x10')](this));ami['on'](_0x6d83('0x20'),this[_0x6d83('0x21')][_0x6d83('0x10')](this));}VoiceAgentReport[_0x6d83('0x22')]['emit']=function(_0x19174d,_0x224f2b,_0x2714fc){io['to'](_0x19174d)[_0x6d83('0x23')](_0x224f2b,_0x2714fc);};VoiceAgentReport['prototype'][_0x6d83('0x24')]=function(_0x863f00){return _0x863f00!==null&&!_['isUndefined'](_0x863f00);};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0xf')]=function(_0x300576){try{if(this[_0x6d83('0x24')](_0x300576)){logger['info'](_0x6d83('0x25'),_0x300576['uniqueid'],_0x300576['membername'],_0x300576[_0x6d83('0x26')]);logger[_0x6d83('0x27')](_0x6d83('0x28'),_0x300576[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x300576,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x6d83('0x9')][_0x300576[_0x6d83('0x29')]])){this[_0x6d83('0x9')][_0x300576[_0x6d83('0x29')]]={};}var _0x30f555=this[_0x6d83('0xc')][_0x300576['interface']];var _0x575f29=this['channels'][_0x300576[_0x6d83('0x29')]][_0x300576[_0x6d83('0x26')]];var _0x258748=this[_0x6d83('0xb')][_0x300576['queue']];var _0x1ab0d3=this[_0x6d83('0xd')][_0x300576[_0x6d83('0x29')]];if(_['isUndefined'](_0x575f29)){_0x575f29={'agentcalledAt':moment()['format'](_0x6d83('0x2b')),'lastevent':_0x6d83('0x2c'),'mandatoryDisposition':_0x258748&&_0x258748['mandatoryDisposition']?_0x258748[_0x6d83('0x2d')]:![],'type':_0x258748&&_0x258748[_0x6d83('0x2e')]?_0x258748['type']:_0x6d83('0x2f'),'variables':_0x1ab0d3,'motionChannel':_0x6d83('0x30')};}_['merge'](_0x575f29,_['omit'](_0x300576,[_0x6d83('0x31'),'privilege']));logger[_0x6d83('0x27')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x300576[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x575f29,{'showHidden':![],'depth':null}));ami[_0x6d83('0x23')](_0x6d83('0x32'),_0x575f29);var _0x2a85e7={'id':_0x30f555['id'],'calleridnum':_0x575f29[_0x6d83('0x33')],'queue':_0x575f29['queue'],'variables':_0x575f29[_0x6d83('0xd')],'uniqueid':_0x300576[_0x6d83('0x29')]};logger[_0x6d83('0x27')](_0x6d83('0x34'),_0x300576['uniqueid'],util[_0x6d83('0x2a')](_0x2a85e7,{'showHidden':![],'depth':null}));this[_0x6d83('0x23')](util[_0x6d83('0x35')](_0x6d83('0x36'),_0x300576[_0x6d83('0x37')]),_0x6d83('0x38'),_0x2a85e7);}}catch(_0x36c7f3){logger[_0x6d83('0x39')](_0x6d83('0x3a'),_0x300576[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x36c7f3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x3b')]=function(_0x5b9aa3){try{if(this[_0x6d83('0x24')](_0x5b9aa3)){if(this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]]){logger[_0x6d83('0x27')](_0x6d83('0x3c'),_0x5b9aa3[_0x6d83('0x29')],util['inspect'](_0x5b9aa3,{'showHidden':![],'depth':null}));for(var _0x34cafd in this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]]){if(this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x6d83('0x3d')](_0x34cafd)){if(_0x5b9aa3[_0x6d83('0x26')]===_0x34cafd){logger[_0x6d83('0x3e')](_0x6d83('0x3f'),_0x5b9aa3[_0x6d83('0x29')],_0x5b9aa3[_0x6d83('0x37')],_0x5b9aa3[_0x6d83('0x26')]);this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x34cafd]['agentconnectAt']=moment()['format'](_0x6d83('0x2b'));this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd]['connectedlinename']=_0x5b9aa3['connectedlinename'];this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd]['connectedlinenum']=_0x5b9aa3[_0x6d83('0x40')];this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd]['destchannelstate']=_0x5b9aa3[_0x6d83('0x41')];this['channels'][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd]['destchannelstatedesc']=_0x5b9aa3[_0x6d83('0x42')];this['channels'][_0x5b9aa3['uniqueid']][_0x34cafd][_0x6d83('0x43')]=_0x5b9aa3['holdtime'];this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x44')]=_0x6d83('0x45');if(this[_0x6d83('0xa')][this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x29')]]){var _0x2623dd=this[_0x6d83('0xa')][this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x29')]]['routealias'];this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x34cafd][_0x6d83('0x46')]=_0x2623dd;_0x5b9aa3[_0x6d83('0x46')]=_0x2623dd;}_[_0x6d83('0x47')](this['agents'][_0x5b9aa3['interface']],_[_0x6d83('0x48')](_0x5b9aa3,[_0x6d83('0x49'),_0x6d83('0x4a'),_0x6d83('0x46')]));var _0xa45cc5=this[_0x6d83('0xc')][_0x5b9aa3[_0x6d83('0x4b')][_0x6d83('0x4c')]('-')[0x0]];var _0xd95d7b={'id':_0xa45cc5['id'],'name':_0xa45cc5[_0x6d83('0x4d')],'agentconnected':!![],'destaccountcode':_0xa45cc5[_0x6d83('0x4e')],'destconnectedlinenum':this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x5b9aa3['destuniqueid']]['exten'],'queue':this['channels'][_0x5b9aa3['uniqueid']][_0x5b9aa3[_0x6d83('0x26')]][_0x6d83('0x49')],'routealias':this['channels'][_0x5b9aa3[_0x6d83('0x29')]][_0x5b9aa3[_0x6d83('0x26')]][_0x6d83('0x46')],'uniqueid':this['channels'][_0x5b9aa3[_0x6d83('0x29')]][_0x5b9aa3['destuniqueid']][_0x6d83('0x29')]};logger[_0x6d83('0x27')](_0x6d83('0x4f'),_0x5b9aa3[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0xd95d7b,{'showHidden':![],'depth':null}));ami[_0x6d83('0x23')](_0x6d83('0x50'),_0xd95d7b);logger[_0x6d83('0x27')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x5b9aa3[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0xd95d7b,{'showHidden':![],'depth':null}));this[_0x6d83('0x23')](util['format'](_0x6d83('0x36'),_0x5b9aa3[_0x6d83('0x37')]),_0x6d83('0x51'),_0xd95d7b);}else if(!this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd]['agentringnoanswer']&&!this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x34cafd][_0x6d83('0x16')]){logger[_0x6d83('0x3e')](_0x6d83('0x52'),_0x5b9aa3[_0x6d83('0x29')],this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x34cafd][_0x6d83('0x37')],_0x34cafd);this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x34cafd][_0x6d83('0x12')]=!![];this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x53')]=moment()[_0x6d83('0x35')](_0x6d83('0x2b'));this['channels'][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x54')]=_0x5b9aa3[_0x6d83('0x26')];this['channels'][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x55')]=_0x5b9aa3[_0x6d83('0x37')];this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x44')]=_0x6d83('0x56');this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd][_0x6d83('0x57')]=_0x6d83('0x56');logger[_0x6d83('0x27')](_0x6d83('0x58'),_0x5b9aa3['uniqueid'],util[_0x6d83('0x2a')](this[_0x6d83('0x9')][_0x5b9aa3['uniqueid']][_0x34cafd],{'showHidden':![],'depth':null}));ami[_0x6d83('0x23')](_0x6d83('0x59'),this[_0x6d83('0x9')][_0x5b9aa3[_0x6d83('0x29')]][_0x34cafd]);}}}}}}catch(_0x1d0347){logger['error'](_0x6d83('0x5a'),_0x5b9aa3['uniqueid'],util['inspect'](_0x1d0347,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x13')]=function(_0x547a7d){try{if(this['isNotNull'](_0x547a7d)){logger[_0x6d83('0x27')](_0x6d83('0x5b'),_0x547a7d[_0x6d83('0x29')],util['inspect'](_0x547a7d,{'showHidden':![],'depth':null}));if(this[_0x6d83('0x9')][_0x547a7d['uniqueid']]&&this[_0x6d83('0x9')][_0x547a7d['uniqueid']][_0x547a7d['destuniqueid']]){logger['info']('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x547a7d[_0x6d83('0x29')],_0x547a7d[_0x6d83('0x37')],_0x547a7d['destuniqueid']);var _0x1881f5=this[_0x6d83('0xc')][_0x547a7d['interface']];var _0x5e20b5=this[_0x6d83('0x9')][_0x547a7d['uniqueid']][_0x547a7d[_0x6d83('0x26')]];_0x5e20b5[_0x6d83('0x12')]=!![];_0x5e20b5[_0x6d83('0x53')]=moment()[_0x6d83('0x35')]('YYYY-MM-DD\x20HH:mm:ss');_0x5e20b5[_0x6d83('0x44')]=_0x6d83('0x5c');_0x5e20b5[_0x6d83('0x57')]=_0x6d83('0x5c');var _0x1c7c49={'id':_0x1881f5['id'],'name':_0x1881f5[_0x6d83('0x4d')],'queue':_0x5e20b5[_0x6d83('0x49')],'uniqueid':_0x5e20b5[_0x6d83('0x29')]};logger[_0x6d83('0x27')](_0x6d83('0x5d'),_0x547a7d['uniqueid'],util[_0x6d83('0x2a')](_0x1c7c49,{'showHidden':![],'depth':null}));this['emit'](util[_0x6d83('0x35')]('user:%s',_0x1881f5[_0x6d83('0x4d')]),_0x6d83('0x5e'),_0x1c7c49);ami[_0x6d83('0x23')](_0x6d83('0x5f'),_0x5e20b5);}}}catch(_0x4ce7aa){logger[_0x6d83('0x39')](_0x6d83('0x60'),_0x547a7d[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x4ce7aa,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncQueueCallerAbandon']=function(_0x62209b){try{if(this[_0x6d83('0x24')](_0x62209b)){logger[_0x6d83('0x27')](_0x6d83('0x61'),_0x62209b[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x62209b,{'showHidden':![],'depth':null}));if(this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]]){for(var _0x52610d in this['channels'][_0x62209b[_0x6d83('0x29')]]){if(this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]][_0x6d83('0x3d')](_0x52610d)&&!this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]][_0x52610d]['agentringnoanswer']&&!this['channels'][_0x62209b[_0x6d83('0x29')]][_0x52610d][_0x6d83('0x16')]){logger['info']('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x62209b[_0x6d83('0x29')],this['channels'][_0x62209b[_0x6d83('0x29')]][_0x52610d][_0x6d83('0x37')],_0x52610d);this[_0x6d83('0x9')][_0x62209b['uniqueid']][_0x52610d][_0x6d83('0x12')]=!![];this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]][_0x52610d][_0x6d83('0x53')]=moment()['format'](_0x6d83('0x2b'));this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]][_0x52610d][_0x6d83('0x44')]=_0x6d83('0x62');this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]][_0x52610d][_0x6d83('0x57')]=_0x6d83('0x62');logger[_0x6d83('0x27')](_0x6d83('0x63'),_0x62209b[_0x6d83('0x29')],util[_0x6d83('0x2a')](this[_0x6d83('0x9')][_0x62209b['uniqueid']][_0x52610d],{'showHidden':![],'depth':null}));ami[_0x6d83('0x23')](_0x6d83('0x64'),this[_0x6d83('0x9')][_0x62209b[_0x6d83('0x29')]][_0x52610d]);}}}}}catch(_0x52b5a5){logger[_0x6d83('0x39')]('[%s][voiceAgentReport][queuecallerabandon]',_0x62209b[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x52b5a5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')]['syncAgentComplete']=function(_0x1525b5){try{if(this[_0x6d83('0x24')](_0x1525b5)){logger[_0x6d83('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x1525b5[_0x6d83('0x29')],util['inspect'](_0x1525b5,{'showHidden':![],'depth':null}));if(this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]]){for(var _0x597af9 in this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]]){if(this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x6d83('0x3d')](_0x597af9)){if(this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9]['agentconnectAt']&&!this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9]['agentcomplete']){logger[_0x6d83('0x3e')](_0x6d83('0x65'),_0x1525b5[_0x6d83('0x29')],this[_0x6d83('0x9')][_0x1525b5['uniqueid']][_0x597af9][_0x6d83('0x37')],_0x597af9);this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9][_0x6d83('0x16')]=!![];this['channels'][_0x1525b5['uniqueid']][_0x597af9]['agentcompleteAt']=moment()[_0x6d83('0x35')](_0x6d83('0x2b'));this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9][_0x6d83('0x44')]=_0x6d83('0x66');this[_0x6d83('0x9')][_0x1525b5['uniqueid']][_0x597af9][_0x6d83('0x57')]=_0x1525b5[_0x6d83('0x57')]==_0x6d83('0x67')?'agent':_0x1525b5[_0x6d83('0x57')];this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9][_0x6d83('0x68')]=_0x1525b5['talktime'];if(this[_0x6d83('0xb')][_0x1525b5[_0x6d83('0x49')]]&&this[_0x6d83('0xb')][_0x1525b5[_0x6d83('0x49')]][_0x6d83('0x69')]){this[_0x6d83('0x9')][_0x1525b5['uniqueid']][_0x597af9][_0x6d83('0x6a')]=this[_0x6d83('0xb')][_0x1525b5['queue']][_0x6d83('0x6b')];this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9][_0x6d83('0x6c')]=!![];}this[_0x6d83('0xc')][_0x1525b5[_0x6d83('0x6d')]]=_['omit'](this[_0x6d83('0xc')][_0x1525b5[_0x6d83('0x6d')]],[_0x6d83('0x49'),_0x6d83('0x4a')]);logger['debug'](_0x6d83('0x6e'),_0x1525b5['uniqueid'],util[_0x6d83('0x2a')](this[_0x6d83('0x9')][_0x1525b5['uniqueid']][_0x597af9],{'showHidden':![],'depth':null}));ami['emit'](_0x6d83('0x6f'),this[_0x6d83('0x9')][_0x1525b5[_0x6d83('0x29')]][_0x597af9]);logger['debug'](_0x6d83('0x70'),_0x1525b5[_0x6d83('0x29')],util[_0x6d83('0x2a')]({'id':this[_0x6d83('0xc')][_0x1525b5[_0x6d83('0x6d')]]['id'],'destaccountcode':_0x1525b5[_0x6d83('0x71')]},{'showHidden':![],'depth':null}));this[_0x6d83('0x23')](util[_0x6d83('0x35')]('user:%s',_0x1525b5['membername']),'user:agentcomplete',{'id':this[_0x6d83('0xc')][_0x1525b5[_0x6d83('0x6d')]]['id'],'destaccountcode':Number(_0x1525b5[_0x6d83('0x71')])});}}}}}}catch(_0x5f0d84){logger[_0x6d83('0x39')](_0x6d83('0x72'),_0x1525b5['uniqueid'],util[_0x6d83('0x2a')](_0x5f0d84,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x19')]=function(_0x20fb51){try{if(this[_0x6d83('0x24')](_0x20fb51)){logger[_0x6d83('0x27')](_0x6d83('0x73'),_0x20fb51[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x20fb51,{'showHidden':![],'depth':null}));this['addVariable'](_0x20fb51['uniqueid'],_['keys'](_0x20fb51[_0x6d83('0x74')])[0x0],_0x20fb51['value']);if(this[_0x6d83('0x9')][_0x20fb51[_0x6d83('0x29')]]){for(var _0x262c84 in this[_0x6d83('0x9')][_0x20fb51[_0x6d83('0x29')]]){if(this[_0x6d83('0x9')][_0x20fb51[_0x6d83('0x29')]][_0x6d83('0x3d')](_0x262c84)){logger[_0x6d83('0x3e')](_0x6d83('0x75'),_0x20fb51[_0x6d83('0x29')],_0x262c84,_['keys'](_0x20fb51[_0x6d83('0x74')])[0x0],_0x20fb51['value']);if(_['isUndefined'](this[_0x6d83('0x9')][_0x20fb51[_0x6d83('0x29')]][_0x262c84][_0x6d83('0xd')])){this[_0x6d83('0x9')][_0x20fb51[_0x6d83('0x29')]][_0x262c84][_0x6d83('0xd')]={};}this['channels'][_0x20fb51[_0x6d83('0x29')]][_0x262c84][_0x6d83('0xd')]=this[_0x6d83('0xd')][_0x20fb51[_0x6d83('0x29')]];}}}}}catch(_0x3c3af1){logger[_0x6d83('0x39')](_0x6d83('0x76'),_0x20fb51['uniqueid'],util[_0x6d83('0x2a')](_0x3c3af1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x77')]=function(_0xae9ce3,_0x59fe05,_0x1e2348){var _0x4bcb12=[_0x6d83('0x78'),_0x6d83('0x79'),_0x6d83('0x7a'),'rtpaudioqosjitterbridged',_0x6d83('0x7b'),_0x6d83('0x7c'),'rtpaudioqosrtt',_0x6d83('0x7d'),_0x6d83('0x7e'),'sipuri','bridgepeer','bridgepvtcallid',_0x6d83('0x7f'),_0x6d83('0x80'),'memberinterface','memberlastcall',_0x6d83('0x37'),_0x6d83('0x81'),'memberrealtime'];if(!_[_0x6d83('0x82')](_0x59fe05)&&!_[_0x6d83('0x83')](_0x4bcb12,_0x59fe05)){if(_[_0x6d83('0x84')](this[_0x6d83('0xd')][_0xae9ce3])){this[_0x6d83('0xd')][_0xae9ce3]={};}this[_0x6d83('0xd')][_0xae9ce3][_0x59fe05]=_0x1e2348;}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x85')]=function(_0x13a6ae){try{if(this['isNotNull'](_0x13a6ae)){logger[_0x6d83('0x27')](_0x6d83('0x86'),_0x13a6ae[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x13a6ae,{'showHidden':![],'depth':null}));if(this[_0x6d83('0x9')][_0x13a6ae[_0x6d83('0x29')]]){for(var _0x4021a2 in this[_0x6d83('0x9')][_0x13a6ae['uniqueid']]){if(this[_0x6d83('0x9')][_0x13a6ae[_0x6d83('0x29')]]['hasOwnProperty'](_0x4021a2)){if(this[_0x6d83('0x9')][_0x13a6ae[_0x6d83('0x29')]][_0x4021a2][_0x6d83('0x57')]==_0x6d83('0x67')&&this[_0x6d83('0x9')][_0x13a6ae['uniqueid']][_0x4021a2][_0x6d83('0x16')]){logger[_0x6d83('0x3e')](_0x6d83('0x87'),_0x13a6ae['uniqueid'],_0x4021a2);this[_0x6d83('0x9')][_0x13a6ae[_0x6d83('0x29')]][_0x4021a2][_0x6d83('0x88')]=moment()[_0x6d83('0x35')](_0x6d83('0x2b'));}}}logger[_0x6d83('0x27')](_0x6d83('0x89'),_0x13a6ae[_0x6d83('0x29')],util[_0x6d83('0x2a')](_[_0x6d83('0x8a')](this['channels'][_0x13a6ae[_0x6d83('0x29')]]),{'showHidden':![],'depth':null}));ami[_0x6d83('0x23')](_0x6d83('0x8b'),_[_0x6d83('0x8a')](this['channels'][_0x13a6ae[_0x6d83('0x29')]]));delete this[_0x6d83('0x9')][_0x13a6ae[_0x6d83('0x29')]];}if(this['variables'][_0x13a6ae[_0x6d83('0x29')]]){delete this['variables'][_0x13a6ae['uniqueid']];}}}catch(_0x2bccf1){logger['error']('[%s][voiceAgentReport][hangup]',_0x13a6ae[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x2bccf1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6d83('0x1f')]=function(_0xe72401){try{if(this[_0x6d83('0x24')](_0xe72401)){logger[_0x6d83('0x27')](_0x6d83('0x8c'),_0xe72401[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0xe72401,{'showHidden':![],'depth':null}));if(this[_0x6d83('0x9')][_0xe72401['transfereeuniqueid']]){for(var _0x2fc090 in this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]]){if(this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]]['hasOwnProperty'](_0x2fc090)){if(_0xe72401['origtransfereruniqueid']===_0x2fc090){logger[_0x6d83('0x3e')](_0x6d83('0x8e'),_0xe72401[_0x6d83('0x29')],this[_0x6d83('0x9')][_0xe72401['transfereeuniqueid']][_0x2fc090][_0x6d83('0x37')],_0x2fc090);var _0x5c6277=moment();this[_0x6d83('0x9')][_0xe72401['transfereeuniqueid']][_0x2fc090]['agentcomplete']=!![];this[_0x6d83('0x9')][_0xe72401['transfereeuniqueid']][_0x2fc090][_0x6d83('0x88')]=moment()[_0x6d83('0x35')](_0x6d83('0x2b'));this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]][_0x2fc090][_0x6d83('0x44')]=_0x6d83('0x66');this['channels'][_0xe72401[_0x6d83('0x8d')]][_0x2fc090][_0x6d83('0x57')]=_0x6d83('0x67');this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]][_0x2fc090][_0x6d83('0x68')]=_0x5c6277[_0x6d83('0x8f')](this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]][_0x2fc090][_0x6d83('0x90')],_0x6d83('0x91'));}}}}if(this[_0x6d83('0x9')][_0xe72401['secondtransfereruniqueid']]){var _0x96bf4b=this[_0x6d83('0x9')][_0xe72401['secondtransfereruniqueid']];this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x92')]]=this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]];this[_0x6d83('0x9')][_0xe72401[_0x6d83('0x8d')]]=_0x96bf4b;}}}catch(_0x5514aa){logger['error']('[%s][voiceAgentReport][attendedtransfer]',_0xe72401[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0x5514aa,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x21')]=function(_0x2612ae){try{if(this[_0x6d83('0x24')](_0x2612ae)){logger[_0x6d83('0x27')](_0x6d83('0x93'),_0x2612ae[_0x6d83('0x29')],util['inspect'](_0x2612ae,{'showHidden':![],'depth':null}));if(this['channels'][_0x2612ae[_0x6d83('0x8d')]]){for(var _0x3b37ee in this['channels'][_0x2612ae[_0x6d83('0x8d')]]){if(this[_0x6d83('0x9')][_0x2612ae[_0x6d83('0x8d')]][_0x6d83('0x3d')](_0x3b37ee)){if(_0x2612ae[_0x6d83('0x94')]===_0x3b37ee){logger[_0x6d83('0x3e')](_0x6d83('0x95'),_0x2612ae[_0x6d83('0x29')],this['channels'][_0x2612ae[_0x6d83('0x8d')]][_0x3b37ee][_0x6d83('0x37')],_0x3b37ee);var _0x1beddc=moment();this[_0x6d83('0x9')][_0x2612ae['transfereeuniqueid']][_0x3b37ee][_0x6d83('0x16')]=!![];this[_0x6d83('0x9')][_0x2612ae[_0x6d83('0x8d')]][_0x3b37ee][_0x6d83('0x88')]=_0x1beddc;this[_0x6d83('0x9')][_0x2612ae['transfereeuniqueid']][_0x3b37ee]['lastevent']=_0x6d83('0x66');this[_0x6d83('0x9')][_0x2612ae[_0x6d83('0x8d')]][_0x3b37ee][_0x6d83('0x57')]=_0x6d83('0x67');this['channels'][_0x2612ae['transfereeuniqueid']][_0x3b37ee][_0x6d83('0x68')]=_0x1beddc[_0x6d83('0x8f')](this['channels'][_0x2612ae[_0x6d83('0x8d')]][_0x3b37ee][_0x6d83('0x90')],_0x6d83('0x91'));}}}}}}catch(_0x3252fa){logger[_0x6d83('0x39')](_0x6d83('0x96'),_0x2612ae['uniqueid'],util[_0x6d83('0x2a')](_0x3252fa,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')]['syncMusicOnHoldStart']=function(_0xedaa4e){var _0x266861='';try{if(this[_0x6d83('0x24')](_0xedaa4e)){logger['debug']('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0xedaa4e[_0x6d83('0x29')],util[_0x6d83('0x2a')](_0xedaa4e,{'showHidden':![],'depth':null}));if(_0xedaa4e[_0x6d83('0x4b')]){_0x266861=_0xedaa4e[_0x6d83('0x4b')][_0x6d83('0x97')](0x0,_0xedaa4e[_0x6d83('0x4b')][_0x6d83('0x98')]('-'));if(this['agents'][_0x266861]){logger[_0x6d83('0x3e')](_0x6d83('0x99'),_0xedaa4e[_0x6d83('0x29')],_0x266861);this[_0x6d83('0xc')][_0x266861]['onhold']=!![];}}}}catch(_0x4402f0){logger[_0x6d83('0x39')]('[%s][voiceAgentReport][musiconholdstart]',_0xedaa4e['uniqueid'],util[_0x6d83('0x2a')](_0x4402f0,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6d83('0x22')][_0x6d83('0x9a')]=function(_0x3df9c7){var _0x45977='';try{if(this[_0x6d83('0x24')](_0x3df9c7)){logger['debug'](_0x6d83('0x9b'),_0x3df9c7['uniqueid'],util[_0x6d83('0x2a')](_0x3df9c7,{'showHidden':![],'depth':null}));if(_0x3df9c7[_0x6d83('0x4b')]){_0x45977=_0x3df9c7[_0x6d83('0x4b')][_0x6d83('0x97')](0x0,_0x3df9c7[_0x6d83('0x4b')]['lastIndexOf']('-'));if(this[_0x6d83('0xc')][_0x45977]){logger['info']('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3df9c7['uniqueid'],_0x45977);this[_0x6d83('0xc')][_0x45977]['onhold']=![];}}}}catch(_0x4ab6f7){logger[_0x6d83('0x39')](_0x6d83('0x9c'),_0x3df9c7[_0x6d83('0x29')],util['inspect'](_0x4ab6f7,{'showHidden':![],'depth':null}));}};module[_0x6d83('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0x294a=['voiceQueues','agents','variables','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','syncHangup','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','blindtransfer','prototype','emit','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','queue','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','assign','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','isNotNull','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','lastevent','connect','routealias','interface','pick','destconnectedlinenum','accountcode','exten','custom:agentconnect','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','[%s][voiceAgentReport][agentconnect]','rejected','name','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwTimeout','omit','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','variable','keys','value','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberrealtime','includes','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','syncBlindTransfer','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','../../../config/environment','../../../config/logger','../ami','defaults','localhost','socket.io-emitter','redis','voiceChannels','channels'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x294a,0x1d1));var _0xa294=function(_0xc9ce73,_0x551b77){_0xc9ce73=_0xc9ce73-0x0;var _0x28890c=_0x294a[_0xc9ce73];return _0x28890c;};'use strict';var _=require(_0xa294('0x0'));var moment=require(_0xa294('0x1'));var util=require(_0xa294('0x2'));var Redis=require('ioredis');var config=require(_0xa294('0x3'));var logger=require(_0xa294('0x4'))('ami');var ami=require(_0xa294('0x5'));config['redis']=_[_0xa294('0x6')](config['redis'],{'host':_0xa294('0x7'),'port':0x18eb});var io=require(_0xa294('0x8'))(new Redis(config[_0xa294('0x9')]));function VoiceAgentReport(_0x4751ed){this['channels']={};this[_0xa294('0xa')]=_0x4751ed[_0xa294('0xb')];this['voiceQueues']=_0x4751ed[_0xa294('0xc')];this[_0xa294('0xd')]=_0x4751ed[_0xa294('0xd')];this[_0xa294('0xe')]={};ami['on']('agentcalled',this['syncAgentCalled'][_0xa294('0xf')](this));ami['on'](_0xa294('0x10'),this[_0xa294('0x11')][_0xa294('0xf')](this));ami['on'](_0xa294('0x12'),this[_0xa294('0x13')][_0xa294('0xf')](this));ami['on']('queuecallerabandon',this[_0xa294('0x14')][_0xa294('0xf')](this));ami['on'](_0xa294('0x15'),this[_0xa294('0x16')][_0xa294('0xf')](this));ami['on'](_0xa294('0x17'),this[_0xa294('0x18')][_0xa294('0xf')](this));ami['on']('hangup',this[_0xa294('0x19')]['bind'](this));ami['on'](_0xa294('0x1a'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0xa294('0x1b'),this[_0xa294('0x1c')][_0xa294('0xf')](this));ami['on']('attendedtransfer',this[_0xa294('0x1d')]['bind'](this));ami['on'](_0xa294('0x1e'),this['syncBlindTransfer'][_0xa294('0xf')](this));}VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x20')]=function(_0x3d99ec,_0x4d2eae,_0x8b67cf){io['to'](_0x3d99ec)[_0xa294('0x20')](_0x4d2eae,_0x8b67cf);};VoiceAgentReport[_0xa294('0x1f')]['isNotNull']=function(_0x6ed7cf){return _0x6ed7cf!==null&&!_[_0xa294('0x21')](_0x6ed7cf);};VoiceAgentReport['prototype'][_0xa294('0x22')]=function(_0x13069a){try{if(this['isNotNull'](_0x13069a)){logger[_0xa294('0x23')](_0xa294('0x24'),_0x13069a[_0xa294('0x25')],_0x13069a[_0xa294('0x26')],_0x13069a[_0xa294('0x27')]);logger[_0xa294('0x28')](_0xa294('0x29'),_0x13069a[_0xa294('0x25')],util[_0xa294('0x2a')](_0x13069a,{'showHidden':![],'depth':null}));if(_[_0xa294('0x21')](this[_0xa294('0xb')][_0x13069a[_0xa294('0x25')]])){this['channels'][_0x13069a['uniqueid']]={};}var _0x2d645d=this[_0xa294('0xd')][_0x13069a['interface']];var _0x57e085=this[_0xa294('0xb')][_0x13069a[_0xa294('0x25')]][_0x13069a[_0xa294('0x27')]];var _0x5613f6=this[_0xa294('0xc')][_0x13069a[_0xa294('0x2b')]];var _0x34ed09=this[_0xa294('0xe')][_0x13069a[_0xa294('0x25')]];if(_[_0xa294('0x21')](_0x57e085)){_0x57e085={'agentcalledAt':moment()[_0xa294('0x2c')](_0xa294('0x2d')),'lastevent':_0xa294('0x2e'),'mandatoryDisposition':_0x5613f6&&_0x5613f6[_0xa294('0x2f')]?_0x5613f6['mandatoryDisposition']:![],'type':_0x5613f6&&_0x5613f6[_0xa294('0x30')]?_0x5613f6[_0xa294('0x30')]:_0xa294('0x31'),'variables':_0x34ed09,'motionChannel':_0xa294('0x32')};}Object[_0xa294('0x33')](_0x57e085,_['omit'](_0x13069a,[_0xa294('0x34'),_0xa294('0x35')]));this[_0xa294('0xb')][_0x13069a[_0xa294('0x25')]][_0x13069a[_0xa294('0x27')]]=_0x57e085;logger[_0xa294('0x28')](_0xa294('0x36'),_0x13069a[_0xa294('0x25')],util[_0xa294('0x2a')](_0x57e085,{'showHidden':![],'depth':null}));ami[_0xa294('0x20')](_0xa294('0x37'),_0x57e085);var _0x57d6d6={'id':_0x2d645d['id'],'calleridnum':_0x57e085['calleridnum'],'queue':_0x57e085[_0xa294('0x2b')],'variables':_0x57e085[_0xa294('0xe')],'uniqueid':_0x13069a['uniqueid']};logger[_0xa294('0x28')](_0xa294('0x38'),_0x13069a[_0xa294('0x25')],util['inspect'](_0x57d6d6,{'showHidden':![],'depth':null}));this[_0xa294('0x20')](util[_0xa294('0x2c')](_0xa294('0x39'),_0x13069a[_0xa294('0x26')]),_0xa294('0x3a'),_0x57d6d6);}}catch(_0x50ff3e){logger[_0xa294('0x3b')]('[%s][voiceAgentReport][agentcalled]',_0x13069a[_0xa294('0x25')],util['inspect'](_0x50ff3e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x11')]=function(_0x383681){try{if(this[_0xa294('0x3c')](_0x383681)){if(this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]]){for(var _0x4e0f49 in this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]]){if(this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]]['hasOwnProperty'](_0x4e0f49)){if(_0x383681[_0xa294('0x27')]===_0x4e0f49){logger[_0xa294('0x23')](_0xa294('0x3d'),_0x383681['uniqueid'],_0x383681[_0xa294('0x26')],_0x383681[_0xa294('0x27')]);this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x3e')]=moment()[_0xa294('0x2c')](_0xa294('0x2d'));this['channels'][_0x383681['uniqueid']][_0x4e0f49][_0xa294('0x3f')]=_0x383681[_0xa294('0x3f')];this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x40')]=_0x383681['connectedlinenum'];this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x41')]=_0x383681['destchannelstate'];this['channels'][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x42')]=_0x383681['destchannelstatedesc'];this[_0xa294('0xb')][_0x383681['uniqueid']][_0x4e0f49]['holdtime']=_0x383681['holdtime'];this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x43')]=_0xa294('0x44');if(this[_0xa294('0xa')][this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x25')]]){var _0x36d71b=this[_0xa294('0xa')][this['channels'][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x25')]]['routealias'];this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x45')]=_0x36d71b;_0x383681['routealias']=_0x36d71b;}_['merge'](this['agents'][_0x383681[_0xa294('0x46')]],_[_0xa294('0x47')](_0x383681,[_0xa294('0x2b'),_0xa294('0x48'),'routealias']));var _0x5e26b1=this[_0xa294('0xd')][_0x383681[_0xa294('0x46')]];var _0x73c389={'id':_0x5e26b1['id'],'name':_0x5e26b1['name'],'agentconnected':!![],'destaccountcode':_0x5e26b1[_0xa294('0x49')],'destconnectedlinenum':this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x383681['destuniqueid']][_0xa294('0x4a')],'queue':this['channels'][_0x383681[_0xa294('0x25')]][_0x383681['destuniqueid']][_0xa294('0x2b')],'routealias':this[_0xa294('0xb')][_0x383681['uniqueid']][_0x383681[_0xa294('0x27')]][_0xa294('0x45')],'uniqueid':this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x383681[_0xa294('0x27')]]['uniqueid']};ami[_0xa294('0x20')](_0xa294('0x4b'),this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x383681[_0xa294('0x27')]]);this[_0xa294('0x20')](util[_0xa294('0x2c')](_0xa294('0x39'),_0x383681[_0xa294('0x26')]),_0xa294('0x4c'),_0x73c389);}else if(!this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x12')]&&!this[_0xa294('0xb')][_0x383681['uniqueid']][_0x4e0f49][_0xa294('0x15')]){logger[_0xa294('0x23')](_0xa294('0x4d'),_0x383681['uniqueid'],this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x26')],_0x4e0f49);this['channels'][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x12')]=!![];this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x4e')]=moment()[_0xa294('0x2c')](_0xa294('0x2d'));this['channels'][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x4f')]=_0x383681[_0xa294('0x27')];this[_0xa294('0xb')][_0x383681['uniqueid']][_0x4e0f49][_0xa294('0x50')]=_0x383681[_0xa294('0x26')];this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x43')]=_0xa294('0x51');this[_0xa294('0xb')][_0x383681[_0xa294('0x25')]][_0x4e0f49][_0xa294('0x52')]=_0xa294('0x51');logger[_0xa294('0x28')](_0xa294('0x53'),_0x383681[_0xa294('0x25')],util[_0xa294('0x2a')](this['channels'][_0x383681['uniqueid']][_0x4e0f49],{'showHidden':![],'depth':null}));ami['emit'](_0xa294('0x54'),this['channels'][_0x383681[_0xa294('0x25')]][_0x4e0f49]);}else{logger[_0xa294('0x28')](_0xa294('0x55'),_0x383681[_0xa294('0x25')]);}}}}}}catch(_0x3e2106){logger[_0xa294('0x3b')](_0xa294('0x56'),_0x383681[_0xa294('0x25')],util[_0xa294('0x2a')](_0x3e2106,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xa294('0x13')]=function(_0x30b311){try{if(this[_0xa294('0x3c')](_0x30b311)){logger[_0xa294('0x28')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x30b311[_0xa294('0x25')],util[_0xa294('0x2a')](_0x30b311,{'showHidden':![],'depth':null}));if(this[_0xa294('0xb')][_0x30b311[_0xa294('0x25')]]&&this[_0xa294('0xb')][_0x30b311[_0xa294('0x25')]][_0x30b311[_0xa294('0x27')]]){logger[_0xa294('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x30b311['uniqueid'],_0x30b311[_0xa294('0x26')],_0x30b311[_0xa294('0x27')]);var _0x139b15=this[_0xa294('0xd')][_0x30b311['interface']];var _0x1e2371=this[_0xa294('0xb')][_0x30b311[_0xa294('0x25')]][_0x30b311[_0xa294('0x27')]];_0x1e2371[_0xa294('0x12')]=!![];_0x1e2371['agentringnoanswerAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1e2371[_0xa294('0x43')]=_0xa294('0x57');_0x1e2371[_0xa294('0x52')]=_0xa294('0x57');var _0x10a113={'id':_0x139b15['id'],'name':_0x139b15[_0xa294('0x58')],'queue':_0x1e2371['queue'],'uniqueid':_0x1e2371[_0xa294('0x25')]};logger[_0xa294('0x28')](_0xa294('0x59'),_0x30b311['uniqueid'],util[_0xa294('0x2a')](_0x10a113,{'showHidden':![],'depth':null}));this[_0xa294('0x20')](util['format']('user:%s',_0x139b15[_0xa294('0x58')]),_0xa294('0x5a'),_0x10a113);ami[_0xa294('0x20')](_0xa294('0x5b'),_0x1e2371);this[_0xa294('0xb')][_0x30b311[_0xa294('0x25')]][_0x30b311[_0xa294('0x27')]]=Object[_0xa294('0x33')]({},_0x1e2371);}}}catch(_0x144c2d){logger[_0xa294('0x3b')](_0xa294('0x5c'),_0x30b311[_0xa294('0x25')],util[_0xa294('0x2a')](_0x144c2d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')]['syncQueueCallerAbandon']=function(_0x147e5f){try{if(this[_0xa294('0x3c')](_0x147e5f)){logger[_0xa294('0x28')](_0xa294('0x5d'),_0x147e5f[_0xa294('0x25')],util[_0xa294('0x2a')](_0x147e5f,{'showHidden':![],'depth':null}));if(this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]]){for(var _0x2434a3 in this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]]){if(this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0xa294('0x5e')](_0x2434a3)&&!this[_0xa294('0xb')][_0x147e5f['uniqueid']][_0x2434a3]['agentringnoanswer']&&!this[_0xa294('0xb')][_0x147e5f['uniqueid']][_0x2434a3][_0xa294('0x15')]){logger[_0xa294('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x147e5f[_0xa294('0x25')],this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0x2434a3][_0xa294('0x26')],_0x2434a3);this['channels'][_0x147e5f['uniqueid']][_0x2434a3][_0xa294('0x12')]=!![];this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0x2434a3][_0xa294('0x4e')]=moment()[_0xa294('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0x2434a3][_0xa294('0x43')]=_0xa294('0x5f');this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0x2434a3][_0xa294('0x52')]=_0xa294('0x5f');logger[_0xa294('0x28')](_0xa294('0x60'),_0x147e5f[_0xa294('0x25')],util[_0xa294('0x2a')](this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0x2434a3],{'showHidden':![],'depth':null}));ami[_0xa294('0x20')]('custom:agentqueuecallerabandon',this[_0xa294('0xb')][_0x147e5f[_0xa294('0x25')]][_0x2434a3]);}}}}}catch(_0x42f701){logger[_0xa294('0x3b')](_0xa294('0x61'),_0x147e5f[_0xa294('0x25')],util['inspect'](_0x42f701,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x16')]=function(_0x5c8ce4){try{if(this['isNotNull'](_0x5c8ce4)){logger[_0xa294('0x28')](_0xa294('0x62'),_0x5c8ce4['uniqueid'],util[_0xa294('0x2a')](_0x5c8ce4,{'showHidden':![],'depth':null}));if(this[_0xa294('0xb')][_0x5c8ce4[_0xa294('0x25')]]){for(var _0x3fd90a in this[_0xa294('0xb')][_0x5c8ce4['uniqueid']]){if(this[_0xa294('0xb')][_0x5c8ce4['uniqueid']][_0xa294('0x5e')](_0x3fd90a)){if(this['channels'][_0x5c8ce4['uniqueid']][_0x3fd90a]['agentconnectAt']&&!this[_0xa294('0xb')][_0x5c8ce4[_0xa294('0x25')]][_0x3fd90a]['agentcomplete']){logger[_0xa294('0x23')](_0xa294('0x63'),_0x5c8ce4['uniqueid'],this[_0xa294('0xb')][_0x5c8ce4[_0xa294('0x25')]][_0x3fd90a][_0xa294('0x26')],_0x3fd90a);this['channels'][_0x5c8ce4['uniqueid']][_0x3fd90a][_0xa294('0x15')]=!![];this[_0xa294('0xb')][_0x5c8ce4['uniqueid']][_0x3fd90a][_0xa294('0x64')]=moment()['format'](_0xa294('0x2d'));this['channels'][_0x5c8ce4['uniqueid']][_0x3fd90a][_0xa294('0x43')]=_0xa294('0x65');this[_0xa294('0xb')][_0x5c8ce4[_0xa294('0x25')]][_0x3fd90a][_0xa294('0x52')]=_0x5c8ce4[_0xa294('0x52')]==_0xa294('0x66')?_0xa294('0x67'):_0x5c8ce4[_0xa294('0x52')];this[_0xa294('0xb')][_0x5c8ce4['uniqueid']][_0x3fd90a][_0xa294('0x68')]=_0x5c8ce4[_0xa294('0x68')];if(this[_0xa294('0xc')][_0x5c8ce4[_0xa294('0x2b')]]&&this['voiceQueues'][_0x5c8ce4[_0xa294('0x2b')]][_0xa294('0x69')]){this[_0xa294('0xb')][_0x5c8ce4[_0xa294('0x25')]][_0x3fd90a]['acwtime']=this[_0xa294('0xc')][_0x5c8ce4[_0xa294('0x2b')]][_0xa294('0x6a')];this[_0xa294('0xb')][_0x5c8ce4['uniqueid']][_0x3fd90a]['agentacw']=!![];}this[_0xa294('0xd')][_0x5c8ce4[_0xa294('0x46')]]=_[_0xa294('0x6b')](this[_0xa294('0xd')][_0x5c8ce4['interface']],[_0xa294('0x2b'),_0xa294('0x48')]);logger[_0xa294('0x28')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x5c8ce4[_0xa294('0x25')],util[_0xa294('0x2a')](this[_0xa294('0xb')][_0x5c8ce4['uniqueid']][_0x3fd90a],{'showHidden':![],'depth':null}));ami[_0xa294('0x20')]('custom:agentcomplete',this[_0xa294('0xb')][_0x5c8ce4[_0xa294('0x25')]][_0x3fd90a]);logger[_0xa294('0x28')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x5c8ce4['uniqueid'],util['inspect']({'id':this[_0xa294('0xd')][_0x5c8ce4['interface']]['id'],'destaccountcode':_0x5c8ce4[_0xa294('0x6c')]},{'showHidden':![],'depth':null}));this[_0xa294('0x20')](util[_0xa294('0x2c')]('user:%s',_0x5c8ce4[_0xa294('0x26')]),_0xa294('0x6d'),{'id':this[_0xa294('0xd')][_0x5c8ce4[_0xa294('0x46')]]['id'],'destaccountcode':Number(_0x5c8ce4['destaccountcode'])});}}}}}}catch(_0x4fbdcb){logger[_0xa294('0x3b')]('[%s][voiceAgentReport][agentcomplete]',_0x5c8ce4[_0xa294('0x25')],util[_0xa294('0x2a')](_0x4fbdcb,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xa294('0x18')]=function(_0x399945){try{if(this['isNotNull'](_0x399945)){logger['debug'](_0xa294('0x6e'),_0x399945[_0xa294('0x25')],util[_0xa294('0x2a')](_0x399945,{'showHidden':![],'depth':null}));this[_0xa294('0x6f')](_0x399945[_0xa294('0x25')],_['keys'](_0x399945[_0xa294('0x70')])[0x0],_0x399945['value']);if(this[_0xa294('0xb')][_0x399945[_0xa294('0x25')]]){for(var _0x33f3c4 in this['channels'][_0x399945[_0xa294('0x25')]]){if(this['channels'][_0x399945[_0xa294('0x25')]][_0xa294('0x5e')](_0x33f3c4)){logger[_0xa294('0x23')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x399945['uniqueid'],_0x33f3c4,_[_0xa294('0x71')](_0x399945[_0xa294('0x70')])[0x0],_0x399945[_0xa294('0x72')]);if(_[_0xa294('0x21')](this['channels'][_0x399945[_0xa294('0x25')]][_0x33f3c4]['variables'])){this[_0xa294('0xb')][_0x399945['uniqueid']][_0x33f3c4][_0xa294('0xe')]={};}this[_0xa294('0xb')][_0x399945[_0xa294('0x25')]][_0x33f3c4]['variables']=this[_0xa294('0xe')][_0x399945[_0xa294('0x25')]];}}}}}catch(_0x126a2b){logger[_0xa294('0x3b')](_0xa294('0x73'),_0x399945['uniqueid'],util[_0xa294('0x2a')](_0x126a2b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x6f')]=function(_0x432c19,_0x3ed35f,_0x1cf024){var _0x31a3a4=[_0xa294('0x74'),_0xa294('0x75'),_0xa294('0x76'),_0xa294('0x77'),_0xa294('0x78'),_0xa294('0x79'),_0xa294('0x7a'),'rtpaudioqosrttbridged',_0xa294('0x7b'),_0xa294('0x7c'),_0xa294('0x7d'),_0xa294('0x7e'),_0xa294('0x7f'),'memberdynamic',_0xa294('0x80'),_0xa294('0x81'),_0xa294('0x26'),'memberpenalty',_0xa294('0x82')];if(!_['isNil'](_0x3ed35f)&&!_[_0xa294('0x83')](_0x31a3a4,_0x3ed35f)){if(_[_0xa294('0x21')](this[_0xa294('0xe')][_0x432c19])){this[_0xa294('0xe')][_0x432c19]={};}this[_0xa294('0xe')][_0x432c19][_0x3ed35f]=_0x1cf024;}};VoiceAgentReport[_0xa294('0x1f')]['syncHangup']=function(_0x3c3b8e){try{if(this['isNotNull'](_0x3c3b8e)){logger['debug']('[%s][voiceAgentReport][hangup]\x20event:',_0x3c3b8e[_0xa294('0x25')],util[_0xa294('0x2a')](_0x3c3b8e,{'showHidden':![],'depth':null}));if(this['channels'][_0x3c3b8e[_0xa294('0x25')]]){for(var _0x88dbf4 in this[_0xa294('0xb')][_0x3c3b8e['uniqueid']]){if(this[_0xa294('0xb')][_0x3c3b8e[_0xa294('0x25')]][_0xa294('0x5e')](_0x88dbf4)){if(this[_0xa294('0xb')][_0x3c3b8e[_0xa294('0x25')]][_0x88dbf4]['reason']==_0xa294('0x66')&&this[_0xa294('0xb')][_0x3c3b8e[_0xa294('0x25')]][_0x88dbf4][_0xa294('0x15')]){logger[_0xa294('0x23')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x3c3b8e[_0xa294('0x25')],_0x88dbf4);this[_0xa294('0xb')][_0x3c3b8e[_0xa294('0x25')]][_0x88dbf4]['agentcompleteAt']=moment()[_0xa294('0x2c')](_0xa294('0x2d'));}}}logger['debug'](_0xa294('0x84'),_0x3c3b8e['uniqueid'],util[_0xa294('0x2a')](_[_0xa294('0x85')](this[_0xa294('0xb')][_0x3c3b8e['uniqueid']]),{'showHidden':![],'depth':null}));ami[_0xa294('0x20')](_0xa294('0x86'),_[_0xa294('0x85')](this[_0xa294('0xb')][_0x3c3b8e['uniqueid']]));delete this['channels'][_0x3c3b8e[_0xa294('0x25')]];}if(this['variables'][_0x3c3b8e[_0xa294('0x25')]]){delete this[_0xa294('0xe')][_0x3c3b8e[_0xa294('0x25')]];}}}catch(_0x182851){logger[_0xa294('0x3b')](_0xa294('0x87'),_0x3c3b8e[_0xa294('0x25')],util[_0xa294('0x2a')](_0x182851,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x1d')]=function(_0x583d9c){try{if(this[_0xa294('0x3c')](_0x583d9c)){logger['debug'](_0xa294('0x88'),_0x583d9c[_0xa294('0x25')],util[_0xa294('0x2a')](_0x583d9c,{'showHidden':![],'depth':null}));if(this[_0xa294('0xb')][_0x583d9c[_0xa294('0x89')]]){for(var _0x266765 in this['channels'][_0x583d9c[_0xa294('0x89')]]){if(this['channels'][_0x583d9c[_0xa294('0x89')]][_0xa294('0x5e')](_0x266765)){if(_0x583d9c[_0xa294('0x8a')]===_0x266765){logger[_0xa294('0x23')](_0xa294('0x8b'),_0x583d9c[_0xa294('0x25')],this[_0xa294('0xb')][_0x583d9c[_0xa294('0x89')]][_0x266765][_0xa294('0x26')],_0x266765);var _0x1f294b=moment();this[_0xa294('0xb')][_0x583d9c[_0xa294('0x89')]][_0x266765][_0xa294('0x15')]=!![];this[_0xa294('0xb')][_0x583d9c['transfereeuniqueid']][_0x266765][_0xa294('0x64')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xa294('0xb')][_0x583d9c['transfereeuniqueid']][_0x266765][_0xa294('0x43')]=_0xa294('0x65');this['channels'][_0x583d9c[_0xa294('0x89')]][_0x266765]['reason']=_0xa294('0x66');this[_0xa294('0xb')][_0x583d9c[_0xa294('0x89')]][_0x266765]['talktime']=_0x1f294b[_0xa294('0x8c')](this[_0xa294('0xb')][_0x583d9c[_0xa294('0x89')]][_0x266765][_0xa294('0x3e')],_0xa294('0x8d'));}}}}if(this[_0xa294('0xb')][_0x583d9c[_0xa294('0x8e')]]){var _0x3f0ed2=this[_0xa294('0xb')][_0x583d9c[_0xa294('0x8e')]];this['channels'][_0x583d9c[_0xa294('0x8e')]]=this['channels'][_0x583d9c[_0xa294('0x89')]];this[_0xa294('0xb')][_0x583d9c[_0xa294('0x89')]]=_0x3f0ed2;}}}catch(_0x3842ac){logger[_0xa294('0x3b')]('[%s][voiceAgentReport][attendedtransfer]',_0x583d9c[_0xa294('0x25')],util[_0xa294('0x2a')](_0x3842ac,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x8f')]=function(_0x29a8c4){try{if(this[_0xa294('0x3c')](_0x29a8c4)){logger[_0xa294('0x28')](_0xa294('0x90'),_0x29a8c4[_0xa294('0x25')],util['inspect'](_0x29a8c4,{'showHidden':![],'depth':null}));if(this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]]){for(var _0x2f5146 in this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]]){if(this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]][_0xa294('0x5e')](_0x2f5146)){if(_0x29a8c4[_0xa294('0x91')]===_0x2f5146){logger[_0xa294('0x23')](_0xa294('0x92'),_0x29a8c4[_0xa294('0x25')],this['channels'][_0x29a8c4[_0xa294('0x89')]][_0x2f5146][_0xa294('0x26')],_0x2f5146);var _0x41aa88=moment();this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]][_0x2f5146][_0xa294('0x15')]=!![];this[_0xa294('0xb')][_0x29a8c4['transfereeuniqueid']][_0x2f5146][_0xa294('0x64')]=_0x41aa88;this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]][_0x2f5146]['lastevent']='complete';this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]][_0x2f5146][_0xa294('0x52')]='transfer';this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]][_0x2f5146][_0xa294('0x68')]=_0x41aa88[_0xa294('0x8c')](this[_0xa294('0xb')][_0x29a8c4[_0xa294('0x89')]][_0x2f5146]['agentconnectAt'],_0xa294('0x8d'));}}}}}}catch(_0x38cc8e){logger[_0xa294('0x3b')](_0xa294('0x93'),_0x29a8c4[_0xa294('0x25')],util[_0xa294('0x2a')](_0x38cc8e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x94')]=function(_0x421544){var _0xf10dfe='';try{if(this['isNotNull'](_0x421544)){logger[_0xa294('0x28')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x421544[_0xa294('0x25')],util[_0xa294('0x2a')](_0x421544,{'showHidden':![],'depth':null}));if(_0x421544[_0xa294('0x95')]){_0xf10dfe=_0x421544[_0xa294('0x95')][_0xa294('0x96')](0x0,_0x421544[_0xa294('0x95')][_0xa294('0x97')]('-'));if(this[_0xa294('0xd')][_0xf10dfe]){logger[_0xa294('0x23')](_0xa294('0x98'),_0x421544[_0xa294('0x25')],_0xf10dfe);this['agents'][_0xf10dfe][_0xa294('0x99')]=!![];}}}}catch(_0x4e59ed){logger[_0xa294('0x3b')](_0xa294('0x9a'),_0x421544['uniqueid'],util['inspect'](_0x4e59ed,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa294('0x1f')][_0xa294('0x1c')]=function(_0x2f6c53){var _0x1b6e34='';try{if(this[_0xa294('0x3c')](_0x2f6c53)){logger['debug'](_0xa294('0x9b'),_0x2f6c53[_0xa294('0x25')],util[_0xa294('0x2a')](_0x2f6c53,{'showHidden':![],'depth':null}));if(_0x2f6c53[_0xa294('0x95')]){_0x1b6e34=_0x2f6c53[_0xa294('0x95')]['substring'](0x0,_0x2f6c53[_0xa294('0x95')][_0xa294('0x97')]('-'));if(this[_0xa294('0xd')][_0x1b6e34]){logger[_0xa294('0x23')](_0xa294('0x9c'),_0x2f6c53[_0xa294('0x25')],_0x1b6e34);this[_0xa294('0xd')][_0x1b6e34]['onhold']=![];}}}}catch(_0x4b3e7f){logger[_0xa294('0x3b')](_0xa294('0x9d'),_0x2f6c53[_0xa294('0x25')],util[_0xa294('0x2a')](_0x4b3e7f,{'showHidden':![],'depth':null}));}};module[_0xa294('0x9e')]=VoiceAgentReport;
\ No newline at end of file
index d6613eb..2932213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47ed=['musiconholdstart','syncMusicOnHoldStart','info','[voiceCallReport][coreshowchannels]\x20started','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','context','channel','split','exten','destconnectedlinenum','format','user:%s','name','user:agentconnect','accountcode','connectedlinenum','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','toNumber','channelstate','keys','from-sip','undefined','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','pick','includes','lastapplication','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','diff','xcally-motion-preview','connectedlinename','UserId','answertime','holdtime','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','replace','.wav49','.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-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','[%s][voiceCallReport][varset]','destinationchannel','[%s][voiceCallReport][hangup]\x20reason:%s','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','event','BlindTransfer','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','outbound','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','transfereruniqueid','transfererchannel','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','path','ioredis','../../../config/environment','../ami','set','queue','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','bind','newchannel','syncNewChannel','varset','syncVarSet','syncHangup','newcallerid','attendedtransfer','blindtransfer','syncBlindTransfer'];(function(_0x2b769e,_0x4a4541){var _0x57a75e=function(_0x3381db){while(--_0x3381db){_0x2b769e['push'](_0x2b769e['shift']());}};_0x57a75e(++_0x4a4541);}(_0x47ed,0x9d));var _0xd47e=function(_0x354ab1,_0xec5b21){_0x354ab1=_0x354ab1-0x0;var _0x9918a1=_0x47ed[_0x354ab1];return _0x9918a1;};'use strict';var _=require(_0xd47e('0x0'));var moment=require('moment');var util=require('util');var path=require(_0xd47e('0x1'));var Redis=require(_0xd47e('0x2'));var config=require(_0xd47e('0x3'));var logger=require('../../../config/logger')('ami');var ami=require(_0xd47e('0x4'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var applications=[_0xd47e('0x5'),_0xd47e('0x6'),_0xd47e('0x7'),_0xd47e('0x8'),_0xd47e('0x9'),'voicemail'];var dispositions=[_0xd47e('0xa'),_0xd47e('0xb'),_0xd47e('0xb'),'NO\x20ANSWER','NO\x20ANSWER',_0xd47e('0xa'),_0xd47e('0xc'),_0xd47e('0xd'),_0xd47e('0xb'),_0xd47e('0xb'),_0xd47e('0xb')];config['redis']=_[_0xd47e('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xd47e('0xf'))(new Redis(config['redis']));function VoiceCallReport(_0x3b259b){this[_0xd47e('0x10')]=_0x3b259b[_0xd47e('0x10')];this['agents']=_0x3b259b[_0xd47e('0x11')];this[_0xd47e('0x12')]={};ami['on']('coreshowchannel',this[_0xd47e('0x13')][_0xd47e('0x14')](this));ami['on']('newexten',this[_0xd47e('0x13')][_0xd47e('0x14')](this));ami['on'](_0xd47e('0x15'),this[_0xd47e('0x16')][_0xd47e('0x14')](this));ami['on']('newstate',this['syncNewState'][_0xd47e('0x14')](this));ami['on'](_0xd47e('0x17'),this[_0xd47e('0x18')][_0xd47e('0x14')](this));ami['on']('hangup',this[_0xd47e('0x19')]['bind'](this));ami['on'](_0xd47e('0x1a'),this['syncNewCallerId'][_0xd47e('0x14')](this));ami['on'](_0xd47e('0x1b'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0xd47e('0x1c'),this[_0xd47e('0x1d')]['bind'](this));ami['on'](_0xd47e('0x1e'),this[_0xd47e('0x1f')][_0xd47e('0x14')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop']['bind'](this));try{logger[_0xd47e('0x20')](_0xd47e('0x21'));ami['actionCoreShowChannels']();}catch(_0x3db1e1){logger[_0xd47e('0x22')](_0xd47e('0x23'),util[_0xd47e('0x24')](_0x3db1e1,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x26')]=function(_0xa07b1){return _0xa07b1!==null&&!_[_0xd47e('0x27')](_0xa07b1);};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x28')]=function(_0x97388e,_0x38d1d1,_0x207ffd){io['to'](_0x97388e)[_0xd47e('0x28')](_0x38d1d1,_0x207ffd);};VoiceCallReport['prototype'][_0xd47e('0x29')]=function(_0x15d6e4){try{if(this[_0xd47e('0x26')](_0x15d6e4)){logger[_0xd47e('0x20')](_0xd47e('0x2a'),_0x15d6e4[_0xd47e('0x2b')],_0x15d6e4[_0xd47e('0x2c')],_0x15d6e4[_0xd47e('0x2d')]);logger['debug'](_0xd47e('0x2e'),_0x15d6e4['uniqueid'],util[_0xd47e('0x24')](_0x15d6e4,{'showHidden':![],'depth':null}));if(_0x15d6e4[_0xd47e('0x2b')]===_0x15d6e4[_0xd47e('0x2f')]){if(!_['isUndefined'](this[_0xd47e('0x10')][_0x15d6e4[_0xd47e('0x2b')]])){_['merge'](this['channels'][_0x15d6e4['uniqueid']],_['pick'](_0x15d6e4,_['keys'](this['channels'][_0x15d6e4[_0xd47e('0x2b')]])));}}if(_0x15d6e4[_0xd47e('0x30')]==='from-sip'){if(this['agents'][_0x15d6e4[_0xd47e('0x31')][_0xd47e('0x32')]('-')[0x0]]){if(_0x15d6e4[_0xd47e('0x33')]=='xcally-motion-preview'){this[_0xd47e('0x11')][_0x15d6e4['channel'][_0xd47e('0x32')]('-')[0x0]][_0xd47e('0x34')]=_0x15d6e4['connectedlinenum'];this[_0xd47e('0x28')](util[_0xd47e('0x35')](_0xd47e('0x36'),this['agents'][_0x15d6e4[_0xd47e('0x31')][_0xd47e('0x32')]('-')[0x0]][_0xd47e('0x37')]),_0xd47e('0x38'),{'destaccountcode':this[_0xd47e('0x11')][_0x15d6e4[_0xd47e('0x31')]['split']('-')[0x0]][_0xd47e('0x39')],'destconnectedlinenum':_0x15d6e4[_0xd47e('0x3a')]});}}}}}catch(_0x216a8c){logger[_0xd47e('0x22')](_0xd47e('0x3b'),_0x15d6e4['uniqueid'],util[_0xd47e('0x24')](_0x216a8c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x16')]=function(_0x3e6ea0){try{if(this[_0xd47e('0x26')](_0x3e6ea0)){logger[_0xd47e('0x3c')]('[%s][voiceCallReport][newchannel]\x20event:',_0x3e6ea0[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x3e6ea0,{'showHidden':![],'depth':null}));if(this[_0xd47e('0x10')][_0x3e6ea0['uniqueid']]){return;}if(_0x3e6ea0['channel']==='OutgoingSpoolFailed'){return;}if(_0x3e6ea0[_0xd47e('0x2b')]!==_0x3e6ea0[_0xd47e('0x2f')]&&!this[_0xd47e('0x12')][_0x3e6ea0['linkedid']]){return;}logger[_0xd47e('0x20')](_0xd47e('0x3d'),_0x3e6ea0[_0xd47e('0x2b')],_0x3e6ea0[_0xd47e('0x30')],_0x3e6ea0[_0xd47e('0x33')]);this[_0xd47e('0x10')][_0x3e6ea0['uniqueid']]=new Channel();this[_0xd47e('0x10')][_0x3e6ea0['uniqueid']][_0xd47e('0x3e')]=moment()[_0xd47e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd47e('0x10')][_0x3e6ea0[_0xd47e('0x2b')]][_0xd47e('0x3f')]=dispositions[_[_0xd47e('0x40')](_0x3e6ea0[_0xd47e('0x41')])];_['merge'](this[_0xd47e('0x10')][_0x3e6ea0['uniqueid']],_['pick'](_0x3e6ea0,_[_0xd47e('0x42')](this[_0xd47e('0x10')][_0x3e6ea0[_0xd47e('0x2b')]])));if(_0x3e6ea0['context']===_0xd47e('0x43')){var _0xed1860=this[_0xd47e('0x11')][_0x3e6ea0[_0xd47e('0x31')][_0xd47e('0x32')]('-')[0x0]];if(_0xed1860&&typeof _0xed1860[_0xd47e('0x34')]===_0xd47e('0x44')){_0xed1860['destconnectedlinenum']=_0x3e6ea0[_0xd47e('0x33')];logger['debug'](_0xd47e('0x45'),_0x3e6ea0[_0xd47e('0x2b')],util[_0xd47e('0x24')]({'id':_0xed1860['id'],'destaccountcode':_0xed1860['accountcode'],'destconnectedlinenum':_0x3e6ea0[_0xd47e('0x33')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xd47e('0x35')]('user:%s',_0xed1860[_0xd47e('0x37')]),_0xd47e('0x38'),{'id':_0xed1860['id'],'destaccountcode':_0xed1860[_0xd47e('0x39')],'destconnectedlinenum':_0x3e6ea0['exten']});}}}}catch(_0x259fda){logger[_0xd47e('0x22')](_0xd47e('0x46'),_0x3e6ea0[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x259fda,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x13')]=function(_0x4febb6){try{if(this['isNotNull'](_0x4febb6)){logger[_0xd47e('0x3c')](_0xd47e('0x47'),_0x4febb6[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x4febb6,{'showHidden':![],'depth':null}));if(_0x4febb6[_0xd47e('0x31')]===_0xd47e('0x48')||_0x4febb6['exten']==='h')return;if(_0x4febb6[_0xd47e('0x2b')]===_0x4febb6[_0xd47e('0x2f')]||this['blindTransfers'][_0x4febb6[_0xd47e('0x2f')]]){_0x4febb6[_0xd47e('0x49')]=_0x4febb6[_0xd47e('0x49')]?_0x4febb6[_0xd47e('0x49')][_0xd47e('0x4a')]():undefined;_0x4febb6[_0xd47e('0x4b')]=_0x4febb6[_0xd47e('0x4c')]||_0x4febb6['applicationdata'];if(_0x4febb6[_0xd47e('0x4c')]&&!_0x4febb6['appdata']['startsWith']('CDR(routeAlias)')&&_0x4febb6['application']!==_0xd47e('0x6')){_0x4febb6[_0xd47e('0x4b')]=_0x4febb6[_0xd47e('0x4b')][_0xd47e('0x4a')]();}logger[_0xd47e('0x20')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x4febb6['uniqueid'],_0x4febb6[_0xd47e('0x49')],_0x4febb6[_0xd47e('0x4b')]);if(_[_0xd47e('0x27')](this[_0xd47e('0x10')][_0x4febb6[_0xd47e('0x2b')]])){this[_0xd47e('0x10')][_0x4febb6[_0xd47e('0x2b')]]=new Channel();this['channels'][_0x4febb6[_0xd47e('0x2b')]][_0xd47e('0x3e')]=_0x4febb6[_0xd47e('0x4d')]?moment()[_0xd47e('0x4e')](moment[_0xd47e('0x4d')](_0x4febb6['duration'])[_0xd47e('0x4f')](),_0xd47e('0x4f'))[_0xd47e('0x35')](_0xd47e('0x50')):moment()[_0xd47e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd47e('0x10')][_0x4febb6[_0xd47e('0x2b')]][_0xd47e('0x3f')]='NO\x20ANSWER';}_['merge'](this[_0xd47e('0x10')][_0x4febb6[_0xd47e('0x2b')]],_[_0xd47e('0x51')](_0x4febb6,_[_0xd47e('0x42')](this[_0xd47e('0x10')][_0x4febb6['uniqueid']])));if(_[_0xd47e('0x52')](applications,_0x4febb6[_0xd47e('0x49')])){this[_0xd47e('0x10')][_0x4febb6[_0xd47e('0x2b')]][_0xd47e('0x53')]=_0x4febb6[_0xd47e('0x49')];this[_0xd47e('0x10')][_0x4febb6['uniqueid']]['lastdata']=_0x4febb6[_0xd47e('0x4b')];if(_0x4febb6[_0xd47e('0x49')]===_0xd47e('0x5')&&_['startsWith'](_0x4febb6[_0xd47e('0x4b')][_0xd47e('0x4a')](),'cdr(')){var _0x339baf=_0x4febb6[_0xd47e('0x4b')][_0xd47e('0x32')]('=');var _0x2d456e=_0x339baf[0x0][_0xd47e('0x4a')]()[_0xd47e('0x54')](/cdr\((.*)\)/);if(_0x2d456e){if(_0x2d456e[0x1]===_0xd47e('0x55')&&!_[_0xd47e('0x56')](this[_0xd47e('0x10')][_0x4febb6[_0xd47e('0x2b')]][_0x2d456e[0x1]]))return;this['channels'][_0x4febb6[_0xd47e('0x2b')]][_0x2d456e[0x1]]=_0x339baf[0x1];}}else if(_0x4febb6['application']===_0xd47e('0x6')){this['channels'][_0x4febb6[_0xd47e('0x2b')]]['queue']=_0x4febb6[_0xd47e('0x4b')][_0xd47e('0x32')](',')[0x0];}}}}}catch(_0x48edf0){logger[_0xd47e('0x22')](_0xd47e('0x57'),_0x4febb6[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x48edf0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x58')]=function(_0x5655f1){try{if(this['isNotNull'](_0x5655f1)){logger[_0xd47e('0x20')](_0xd47e('0x59'),_0x5655f1[_0xd47e('0x2b')],_0x5655f1[_0xd47e('0x2f')],_0x5655f1[_0xd47e('0x2c')],_0x5655f1[_0xd47e('0x2d')]);logger[_0xd47e('0x3c')]('[%s][voiceCallReport][newstate]\x20event:',_0x5655f1[_0xd47e('0x2b')],util['inspect'](_0x5655f1,{'showHidden':![],'depth':null}));if(_0x5655f1[_0xd47e('0x41')]!=='6')return;var _0x2f20b8=this[_0xd47e('0x11')][_0x5655f1[_0xd47e('0x31')][_0xd47e('0x32')]('-')[0x0]];if(_0x5655f1[_0xd47e('0x2b')]!==_0x5655f1[_0xd47e('0x2f')]){var _0x674a23=moment();if(this['channels'][_0x5655f1[_0xd47e('0x2f')]]){if(!this[_0xd47e('0x10')][_0x5655f1['linkedid']][_0xd47e('0x5a')]){this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x5a')]=!![];this['channels'][_0x5655f1[_0xd47e('0x2f')]]['answertime']=_0x674a23[_0xd47e('0x35')](_0xd47e('0x50'));if(this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x3e')]){this['channels'][_0x5655f1[_0xd47e('0x2f')]]['holdtime']=_0x674a23[_0xd47e('0x5b')](this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x3e')],'seconds');}}this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x2f')]=_0x5655f1['uniqueid'];if(_0x5655f1[_0xd47e('0x2d')]!==_0xd47e('0x5c')){this['channels'][_0x5655f1[_0xd47e('0x2f')]]['connectedlinenum']=_0x5655f1['calleridnum'];}this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x5d')]=_0x5655f1[_0xd47e('0x2c')];this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]]['destinationchannel']=_0x5655f1['channel'];this['channels'][_0x5655f1['linkedid']]['disposition']=dispositions[_[_0xd47e('0x40')](_0x5655f1['channelstate'])];if(_0x2f20b8){this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x5e')]=_0x2f20b8['id'];this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]]['membername']=_0x2f20b8['name'];}}if(this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]){if(!this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x5a')]){this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]['answered']=!![];this['channels'][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x5f')]=_0x674a23[_0xd47e('0x35')](_0xd47e('0x50'));if(this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]['starttime']){this['channels'][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x60')]=_0x674a23['diff'](this['channels'][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x3e')],'seconds');}}if(_0x5655f1[_0xd47e('0x2d')]!==_0xd47e('0x5c')){this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x3a')]=_0x5655f1[_0xd47e('0x2d')];}this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]['connectedlinename']=_0x5655f1[_0xd47e('0x2c')];this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]['destinationchannel']=_0x5655f1[_0xd47e('0x31')];this['channels'][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x3f')]=dispositions[_[_0xd47e('0x40')](_0x5655f1[_0xd47e('0x41')])];}}else{if(this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]){if(_0x2f20b8){this[_0xd47e('0x10')][_0x5655f1['uniqueid']][_0xd47e('0x5e')]=_0x2f20b8['id'];this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]][_0xd47e('0x61')]=_0x2f20b8[_0xd47e('0x37')];}}}if(_0x5655f1[_0xd47e('0x30')]==='from-sip'){if(_0x2f20b8){_0x2f20b8[_0xd47e('0x34')]=_0x5655f1[_0xd47e('0x33')];var _0x2a945f,_0x423344;if(this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2b')]]){_0x2a945f=this['channels'][_0x5655f1[_0xd47e('0x2b')]]['routealias'];_0x423344=this[_0xd47e('0x10')][_0x5655f1['uniqueid']]['queue'];}else if(this[_0xd47e('0x10')][_0x5655f1['linkedid']]){_0x2a945f=this[_0xd47e('0x10')][_0x5655f1['linkedid']][_0xd47e('0x62')];_0x423344=this[_0xd47e('0x10')][_0x5655f1[_0xd47e('0x2f')]][_0xd47e('0x6')];}_0x2f20b8['queue']=_0x423344;_0x2f20b8[_0xd47e('0x62')]=_0x2a945f;var _0x5267c1={'id':_0x2f20b8['id'],'name':_0x2f20b8[_0xd47e('0x37')],'agentconnected':!![],'destaccountcode':_0x2f20b8[_0xd47e('0x39')],'destconnectedlinenum':_0x5655f1[_0xd47e('0x33')],'queue':_0x423344||undefined,'routealias':_0x2a945f,'uniqueid':_0x5655f1[_0xd47e('0x2f')]};logger[_0xd47e('0x3c')](_0xd47e('0x63'),_0x5655f1[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x5267c1,{'showHidden':![],'depth':null}));this[_0xd47e('0x28')](util['format'](_0xd47e('0x36'),_0x2f20b8[_0xd47e('0x37')]),'user:agentconnect',_0x5267c1);}}}}catch(_0x4cf3ce){logger[_0xd47e('0x22')](_0xd47e('0x64'),_0x5655f1['uniqueid'],util['inspect'](_0x4cf3ce,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd47e('0x65')]=function(_0x2cbef1,_0x30741d){try{if(this[_0xd47e('0x10')][_0x2cbef1]){logger[_0xd47e('0x20')](_0xd47e('0x66'),_0x2cbef1,_0x30741d);this['channels'][_0x2cbef1]['monitor']=!![];if(_[_0xd47e('0x67')](_0x30741d,'.wav49')){_0x30741d=_0x30741d[_0xd47e('0x68')](_0xd47e('0x69'),_0xd47e('0x6a'));}this[_0xd47e('0x10')][_0x2cbef1][_0xd47e('0x6b')]=_0x30741d;var _0x23141a=_[_0xd47e('0x6c')](this[_0xd47e('0x10')][_0x2cbef1][_0xd47e('0x6d')],{'filename':_0x30741d});if(_[_0xd47e('0x56')](_0x23141a)){this[_0xd47e('0x10')][_0x2cbef1][_0xd47e('0x6d')]['push']({'filename':_0x30741d,'createdAt':moment()[_0xd47e('0x35')](_0xd47e('0x50')),'mixmonitorid':'','status':_0xd47e('0x6e')});}}}catch(_0xfda86b){logger[_0xd47e('0x22')](_0xd47e('0x6f'),_0x2cbef1,util[_0xd47e('0x24')](_0xfda86b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')]['syncVarSet']=function(_0x386cf0){try{if(this[_0xd47e('0x26')](_0x386cf0)){logger[_0xd47e('0x3c')](_0xd47e('0x70'),_0x386cf0[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x386cf0,{'showHidden':![],'depth':null}));if(this['channels'][_0x386cf0[_0xd47e('0x2b')]]&&_0x386cf0[_0xd47e('0x31')]!=_0xd47e('0x48')){if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')])){if(this['isNotNull'](_0x386cf0[_0xd47e('0x71')][_0xd47e('0x72')])){logger[_0xd47e('0x20')](_0xd47e('0x73'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this['syncMixMonitorFilename'](_0x386cf0[_0xd47e('0x2b')],_0x386cf0['value']);}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')][_0xd47e('0x75')])){logger[_0xd47e('0x20')](_0xd47e('0x76'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this[_0xd47e('0x10')][_0x386cf0[_0xd47e('0x2b')]][_0xd47e('0x2d')]=_0x386cf0['value'];}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')][_0xd47e('0x77')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x386cf0[_0xd47e('0x2b')],_0x386cf0['value']);this['channels'][_0x386cf0[_0xd47e('0x2b')]][_0xd47e('0x78')]=_0x386cf0[_0xd47e('0x74')];}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')]['xmd-cdrtype'])){logger[_0xd47e('0x20')](_0xd47e('0x79'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this['channels'][_0x386cf0[_0xd47e('0x2b')]][_0xd47e('0x55')]=_0x386cf0[_0xd47e('0x74')];}else if(this['isNotNull'](_0x386cf0[_0xd47e('0x71')][_0xd47e('0x7a')])){logger[_0xd47e('0x20')](_0xd47e('0x7b'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')][_0xd47e('0x32')](',')[0x0]);this[_0xd47e('0x10')][_0x386cf0['uniqueid']][_0xd47e('0x6')]=_0x386cf0[_0xd47e('0x74')][_0xd47e('0x32')](',')[0x0];}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')][_0xd47e('0x7c')])){logger[_0xd47e('0x20')](_0xd47e('0x7d'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this[_0xd47e('0x10')][_0x386cf0['uniqueid']][_0xd47e('0x7e')]=_0x386cf0[_0xd47e('0x74')];}else if(this[_0xd47e('0x26')](_0x386cf0['variable'][_0xd47e('0x7f')])){logger[_0xd47e('0x20')](_0xd47e('0x80'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0['value']);this['channels'][_0x386cf0[_0xd47e('0x2b')]][_0xd47e('0x81')]=_0x386cf0['value'];}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')][_0xd47e('0x82')])){logger[_0xd47e('0x20')](_0xd47e('0x83'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this['channels'][_0x386cf0[_0xd47e('0x2b')]][_0xd47e('0x84')]=_0x386cf0['value'];}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')]['xmcs-queue'])){logger[_0xd47e('0x20')](_0xd47e('0x85'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this['channels'][_0x386cf0[_0xd47e('0x2b')]][_0xd47e('0x6')]=_0x386cf0[_0xd47e('0x74')];}else if(this[_0xd47e('0x26')](_0x386cf0['variable'][_0xd47e('0x86')])){logger[_0xd47e('0x20')](_0xd47e('0x87'),_0x386cf0[_0xd47e('0x2b')],_0x386cf0[_0xd47e('0x74')]);this[_0xd47e('0x10')][_0x386cf0[_0xd47e('0x2b')]]['sipcalluniqueid']=_0x386cf0[_0xd47e('0x74')];}}}else if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')]['mixmonitor_filename'])){if(_0x386cf0[_0xd47e('0x74')]){var _0x71c119=path[_0xd47e('0x88')](_0x386cf0[_0xd47e('0x74')])[_0xd47e('0x37')];logger[_0xd47e('0x20')](_0xd47e('0x73'),_0x71c119,_0x386cf0[_0xd47e('0x74')]);this[_0xd47e('0x65')](_0x71c119,_0x386cf0[_0xd47e('0x74')]);}}else if(this['channels'][_0x386cf0[_0xd47e('0x2f')]]){if(this[_0xd47e('0x26')](_0x386cf0[_0xd47e('0x71')])){if(this[_0xd47e('0x26')](_0x386cf0['variable']['sipcallid'])){logger[_0xd47e('0x20')](_0xd47e('0x87'),_0x386cf0[_0xd47e('0x2f')],_0x386cf0[_0xd47e('0x74')]);this[_0xd47e('0x10')][_0x386cf0[_0xd47e('0x2f')]]['sipcalllinkedid']=_0x386cf0[_0xd47e('0x74')];}}}}}catch(_0x6f5fae){logger[_0xd47e('0x22')](_0xd47e('0x89'),_0x386cf0[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x6f5fae,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x19')]=function(_0x3f8875){try{if(this[_0xd47e('0x26')](_0x3f8875)){logger[_0xd47e('0x3c')]('[%s][voiceCallReport][hangup]\x20event:',_0x3f8875[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x3f8875,{'showHidden':![],'depth':null}));if(this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]]){if(this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2f')]]){this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2f')]][_0xd47e('0x2b')]=_0x3f8875['uniqueid'];this[_0xd47e('0x10')][this['blindTransfers'][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2f')]][_0xd47e('0x5a')]=this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]['answered'];this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875['linkedid']][_0xd47e('0x2f')]]['answertime']=this[_0xd47e('0x10')][_0x3f8875['uniqueid']][_0xd47e('0x5f')];this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]]['linkedid']]['destinationchannel']=this[_0xd47e('0x10')][this['blindTransfers'][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2f')]]['channel'];this[_0xd47e('0x10')][this['blindTransfers'][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2f')]][_0xd47e('0x3f')]=this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]['disposition'];this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]=this['channels'][this['blindTransfers'][_0x3f8875['linkedid']][_0xd47e('0x2f')]];delete this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875['linkedid']]['linkedid']];}else if(this['channels'][this['blindTransfers'][_0x3f8875['linkedid']][_0xd47e('0x2b')]]){this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875['linkedid']][_0xd47e('0x2b')]][_0xd47e('0x2b')]=[this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875['linkedid']]['uniqueid']][_0xd47e('0x2f')],this['channels'][this['blindTransfers'][_0x3f8875[_0xd47e('0x2f')]]['uniqueid']][_0xd47e('0x2f')]=this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2b')]][_0xd47e('0x2b')]][0x0];this['channels'][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2b')]][_0xd47e('0x5a')]=this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x5a')];this['channels'][this['blindTransfers'][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2b')]][_0xd47e('0x5f')]=this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x5f')];this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2b')]][_0xd47e('0x8a')]=this['channels'][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2b')]][_0xd47e('0x31')];this[_0xd47e('0x10')][this['blindTransfers'][_0x3f8875[_0xd47e('0x2f')]][_0xd47e('0x2b')]][_0xd47e('0x3f')]=this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x3f')];this['channels'][_0x3f8875[_0xd47e('0x2b')]]=this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875[_0xd47e('0x2f')]]['uniqueid']];delete this[_0xd47e('0x10')][this[_0xd47e('0x12')][_0x3f8875['linkedid']]['uniqueid']];}}if(this[_0xd47e('0x10')][_0x3f8875['uniqueid']]){logger[_0xd47e('0x20')](_0xd47e('0x8b'),_0x3f8875[_0xd47e('0x2b')],_0x3f8875['cause-txt']);var _0x28da97=moment();this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]['endtime']=_0x28da97[_0xd47e('0x35')](_0xd47e('0x50'));this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x4d')]=_0x28da97[_0xd47e('0x5b')](this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x3e')],_0xd47e('0x4f'));if(this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]['answered']){this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x8c')]=_0x28da97[_0xd47e('0x5b')](this['channels'][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x5f')],_0xd47e('0x4f'));this['channels'][_0x3f8875[_0xd47e('0x2b')]]['holdtime']=this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x4d')]-this[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x8c')];}if(_0x3f8875[_0xd47e('0x30')]===_0xd47e('0x43')){if(this[_0xd47e('0x11')][_0x3f8875[_0xd47e('0x31')]['split']('-')[0x0]]){this[_0xd47e('0x11')][_0x3f8875[_0xd47e('0x31')]['split']('-')[0x0]]=_[_0xd47e('0x8d')](this['agents'][_0x3f8875[_0xd47e('0x31')][_0xd47e('0x32')]('-')[0x0]],[_0xd47e('0x34')]);logger[_0xd47e('0x3c')](_0xd47e('0x8e'),_0x3f8875[_0xd47e('0x2b')],util[_0xd47e('0x24')]({'id':this[_0xd47e('0x11')][_0x3f8875['channel'][_0xd47e('0x32')]('-')[0x0]]['id'],'destaccountcode':this[_0xd47e('0x11')][_0x3f8875[_0xd47e('0x31')][_0xd47e('0x32')]('-')[0x0]][_0xd47e('0x39')]},{'showHidden':![],'depth':null}));this[_0xd47e('0x28')](util[_0xd47e('0x35')](_0xd47e('0x36'),this[_0xd47e('0x11')][_0x3f8875['channel'][_0xd47e('0x32')]('-')[0x0]][_0xd47e('0x37')]),_0xd47e('0x8f'),{'id':this['agents'][_0x3f8875['channel'][_0xd47e('0x32')]('-')[0x0]]['id'],'destaccountcode':this[_0xd47e('0x11')][_0x3f8875['channel'][_0xd47e('0x32')]('-')[0x0]]['accountcode']});for(var _0x1e81b8=0x0;_0x1e81b8<Object[_0xd47e('0x42')](this['agents'])[_0xd47e('0x90')];_0x1e81b8++){var _0x3fcc18=Object['keys'](this[_0xd47e('0x11')])[_0x1e81b8];var _0x568980=this[_0xd47e('0x11')][_0x3fcc18];if(_0x568980[_0xd47e('0x39')]===Number(this['channels'][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x3a')])){this[_0xd47e('0x28')](util[_0xd47e('0x35')](_0xd47e('0x36'),_0x568980[_0xd47e('0x37')]),_0xd47e('0x8f'),{'id':_0x568980['id'],'destaccountcode':_0x568980[_0xd47e('0x39')],'transfer':this[_0xd47e('0x10')][_0x3f8875['uniqueid']][_0xd47e('0x91')]});break;}}}}var _0x273f64=this;Promise[_0xd47e('0x92')]()[_0xd47e('0x93')](function(){var _0x379064=_0x273f64['channels'][_0x3f8875['uniqueid']];if(typeof _0x379064['transferType']===_0xd47e('0x44'))return;if(_['isEmpty'](_0x379064[_0xd47e('0x6d')]))return;return RpcSetting[_0xd47e('0x94')]()[_0xd47e('0x93')](function(_0x22759b){if(!_0x22759b[_0xd47e('0x95')])return;return Promise['resolve']()[_0xd47e('0x93')](function(){return ami[_0xd47e('0x96')]({'action':_0xd47e('0x97'),'channel':_0x379064[_0xd47e('0x31')]})[_0xd47e('0x98')](function(){});})['then'](function(){return ami[_0xd47e('0x96')]({'action':_0xd47e('0x97'),'channel':_0x379064[_0xd47e('0x8a')]})[_0xd47e('0x98')](function(){})['finally'](function(){var _0x2bf0db=_0x273f64[_0xd47e('0x11')][_0x379064['destinationchannel'][_0xd47e('0x32')]('-')[0x0]];if(!_0x2bf0db)return;io[_0xd47e('0x28')]('webbar:stopmonitors',{'agentId':_0x2bf0db['id'],'uniqueid':_0x379064[_0xd47e('0x2b')]});});});});})[_0xd47e('0x93')](function(){if(_0x3f8875[_0xd47e('0x99')]===_0xd47e('0x9a')){_0x273f64['blindTransfers'][_0x3f8875[_0xd47e('0x2b')]]=_0x3f8875;}else{if(_0x273f64[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]['type']==='outbound'&&_0x273f64['blindTransfers'][_0x3f8875['uniqueid']]){_0x273f64[_0xd47e('0x10')][_0x3f8875['uniqueid']][_0xd47e('0x2b')]=[_0x273f64['channels'][_0x3f8875['uniqueid']]['linkedid'],_0x273f64[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]['linkedid']=_0x273f64[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]][_0xd47e('0x2b')]][0x0];delete _0x273f64['blindTransfers'][_0x3f8875[_0xd47e('0x2b')]];}}logger[_0xd47e('0x3c')](_0xd47e('0x9b'),_0x3f8875[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x273f64[_0xd47e('0x10')][_0x3f8875['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xd47e('0x28')]('custom:voiceCallReport',_0x273f64[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]]);delete _0x273f64[_0xd47e('0x10')][_0x3f8875[_0xd47e('0x2b')]];});}}}catch(_0x5d8a4a){logger[_0xd47e('0x22')](_0xd47e('0x9c'),_0x3f8875[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x5d8a4a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x9d')]=function(_0x1697a0){try{if(this[_0xd47e('0x26')](_0x1697a0)){logger[_0xd47e('0x20')](_0xd47e('0x9e'),_0x1697a0['uniqueid'],_0x1697a0[_0xd47e('0x9f')],_0x1697a0[_0xd47e('0xa0')]);logger[_0xd47e('0x3c')](_0xd47e('0xa1'),_0x1697a0[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x1697a0,{'showHidden':![],'depth':null}));var _0x4140a4;if(this['channels'][_0x1697a0[_0xd47e('0xa2')]]){this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa2')]][_0xd47e('0xa3')]=_0x1697a0[_0xd47e('0x9f')];this[_0xd47e('0x10')][_0x1697a0['transfereeuniqueid']]['transferconnectedlinenum']=_0x1697a0[_0xd47e('0xa0')];if(this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa4')]]){_0x4140a4=this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa4')]];this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa4')]]=this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa2')]];this[_0xd47e('0x10')][_0x1697a0['transfereeuniqueid']]=_0x4140a4;}this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa4')]][_0xd47e('0x91')]=_0xd47e('0xa5');}else if(this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa6')]]){this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa6')]][_0xd47e('0xa3')]=_0x1697a0[_0xd47e('0x9f')];this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa6')]][_0xd47e('0xa7')]=_0x1697a0['transfertargetcalleridnum'];if(this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa8')]]){_0x4140a4=this['channels'][_0x1697a0[_0xd47e('0xa8')]];this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa8')]]=this['channels'][_0x1697a0[_0xd47e('0xa6')]];this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa6')]]=_0x4140a4;}this[_0xd47e('0x10')][_0x1697a0['transfertargetuniqueid']][_0xd47e('0x91')]='ATTENDED';}if((this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa8')]]||this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa9')]])&&this['channels'][_0x1697a0[_0xd47e('0xa4')]]){var _0x526c6e=_['some']([this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa8')]],this[_0xd47e('0x10')][_0x1697a0['origtransfererlinkedid']],this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa4')]]],function(_0x54bbe7){return _0x54bbe7&&_0x54bbe7[_0xd47e('0x55')]===_0xd47e('0xaa')&&_0x54bbe7['routeid'];});if(_0x526c6e){if(this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa8')]])this['channels'][_0x1697a0[_0xd47e('0xa8')]][_0xd47e('0x91')]=_0xd47e('0xa5');if(this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa9')]])this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa9')]][_0xd47e('0x91')]=_0xd47e('0xa5');this[_0xd47e('0x10')][_0x1697a0[_0xd47e('0xa4')]][_0xd47e('0x91')]=_0xd47e('0xa5');}}}}catch(_0x5aa15e){logger[_0xd47e('0x22')](_0xd47e('0xab'),_0x1697a0[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x5aa15e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x1d')]=function(_0x337478){try{if(this[_0xd47e('0x26')](_0x337478)){logger[_0xd47e('0x20')](_0xd47e('0xac'),_0x337478[_0xd47e('0x2b')],_0x337478[_0xd47e('0xad')],_0x337478[_0xd47e('0xae')]);logger['debug']('[%s][voiceCallReport][blindtransfer]\x20event:',_0x337478[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x337478,{'showHidden':![],'depth':null}));if(this['channels'][_0x337478['transfereeuniqueid']]){this[_0xd47e('0x10')][_0x337478[_0xd47e('0xa2')]][_0xd47e('0xa3')]=_0x337478[_0xd47e('0xad')];this[_0xd47e('0x10')][_0x337478[_0xd47e('0xa2')]]['transferconnectedlinenum']=_0x337478[_0xd47e('0xae')];this[_0xd47e('0x10')][_0x337478[_0xd47e('0xa2')]]['transferType']='BLIND';this[_0xd47e('0x19')]({'event':_0xd47e('0x9a'),'uniqueid':_0x337478[_0xd47e('0xa2')],'linkedid':_0x337478[_0xd47e('0xaf')],'context':_0x337478[_0xd47e('0x30')],'channel':_0x337478[_0xd47e('0xb0')]});}else{this['channels'][_0x337478[_0xd47e('0xaf')]][_0xd47e('0x91')]=_0xd47e('0xb1');this[_0xd47e('0x19')]({'event':_0xd47e('0x9a'),'uniqueid':_0x337478[_0xd47e('0xaf')],'linkedid':_0x337478[_0xd47e('0xa2')],'context':_0x337478[_0xd47e('0x30')],'channel':_0x337478[_0xd47e('0xb0')]});}}}catch(_0x4ca29e){logger[_0xd47e('0x22')](_0xd47e('0xb2'),_0x337478[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x4ca29e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd47e('0x25')][_0xd47e('0x1f')]=function(_0x862d01){try{if(this[_0xd47e('0x26')](_0x862d01)){logger[_0xd47e('0x3c')](_0xd47e('0xb3'),_0x862d01[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x862d01,{'showHidden':![],'depth':null}));if(this['channels'][_0x862d01['uniqueid']]){if(!_[_0xd47e('0x56')](this[_0xd47e('0x10')][_0x862d01['uniqueid']][_0xd47e('0x5f')])){this[_0xd47e('0x10')][_0x862d01[_0xd47e('0x2b')]][_0xd47e('0xb4')]=moment()[_0xd47e('0x35')](_0xd47e('0x50'));logger[_0xd47e('0x20')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x862d01[_0xd47e('0x2b')],this['channels'][_0x862d01[_0xd47e('0x2b')]][_0xd47e('0xb4')]);}}}}catch(_0x1922bb){logger[_0xd47e('0x22')](_0xd47e('0xb5'),_0x862d01['uniqueid'],util[_0xd47e('0x24')](_0x1922bb,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMusicOnHoldStop']=function(_0x3d27e9){try{if(this['isNotNull'](_0x3d27e9)){logger[_0xd47e('0x3c')](_0xd47e('0xb6'),_0x3d27e9[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x3d27e9,{'showHidden':![],'depth':null}));if(this[_0xd47e('0x10')][_0x3d27e9[_0xd47e('0x2b')]]){if(!_[_0xd47e('0x56')](this[_0xd47e('0x10')][_0x3d27e9[_0xd47e('0x2b')]][_0xd47e('0xb4')])){this['channels'][_0x3d27e9[_0xd47e('0x2b')]][_0xd47e('0xb7')]+=moment()[_0xd47e('0xb8')](0x0)[_0xd47e('0x5b')](this[_0xd47e('0x10')][_0x3d27e9['uniqueid']][_0xd47e('0xb4')],'seconds');logger[_0xd47e('0x20')](_0xd47e('0xb9'),_0x3d27e9[_0xd47e('0x2b')],this[_0xd47e('0x10')][_0x3d27e9['uniqueid']]['mohtime']);delete this[_0xd47e('0x10')][_0x3d27e9[_0xd47e('0x2b')]][_0xd47e('0xb4')];}}}}catch(_0x12bbdf){logger[_0xd47e('0x22')]('[%s][voiceCallReport][musiconholdstop]',_0x3d27e9[_0xd47e('0x2b')],util[_0xd47e('0x24')](_0x12bbdf,{'showHidden':![],'depth':null}));}};module[_0xd47e('0xba')]=VoiceCallReport;
\ No newline at end of file
+var _0xdae3=['[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','lodash','util','path','ioredis','../../../config/environment','../../../config/logger','../ami','set','queue','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','localhost','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup','newcallerid','blindtransfer','musiconholdstart','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','channels','pick','keys','context','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','debug','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','includes','lastapplication','lastdata','match','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','destinationchannel','UserId','membername','holdtime','routealias','syncMixMonitorFilename','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','mixmonitor_filename','sipcallid','sipcalllinkedid','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transfercalleridnum','origtransferercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid'];(function(_0x3a6249,_0x5d018c){var _0x4265d6=function(_0x988fa){while(--_0x988fa){_0x3a6249['push'](_0x3a6249['shift']());}};_0x4265d6(++_0x5d018c);}(_0xdae3,0x19d));var _0x3dae=function(_0x3b7baa,_0xa180c){_0x3b7baa=_0x3b7baa-0x0;var _0xb373c7=_0xdae3[_0x3b7baa];return _0xb373c7;};'use strict';var _=require(_0x3dae('0x0'));var moment=require('moment');var util=require(_0x3dae('0x1'));var path=require(_0x3dae('0x2'));var Redis=require(_0x3dae('0x3'));var config=require(_0x3dae('0x4'));var logger=require(_0x3dae('0x5'))('ami');var ami=require(_0x3dae('0x6'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var applications=[_0x3dae('0x7'),_0x3dae('0x8'),'agi',_0x3dae('0x9'),_0x3dae('0xa'),_0x3dae('0xb')];var dispositions=[_0x3dae('0xc'),'FAILED',_0x3dae('0xd'),'NO\x20ANSWER',_0x3dae('0xc'),_0x3dae('0xc'),_0x3dae('0xe'),_0x3dae('0xf'),'FAILED',_0x3dae('0xd'),'FAILED'];config[_0x3dae('0x10')]=_['defaults'](config[_0x3dae('0x10')],{'host':_0x3dae('0x11'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceCallReport(_0x1ecc4e){this['channels']=_0x1ecc4e['channels'];this[_0x3dae('0x12')]=_0x1ecc4e['agents'];this[_0x3dae('0x13')]={};ami['on'](_0x3dae('0x14'),this[_0x3dae('0x15')][_0x3dae('0x16')](this));ami['on'](_0x3dae('0x17'),this['syncNewExten'][_0x3dae('0x16')](this));ami['on']('newchannel',this[_0x3dae('0x18')]['bind'](this));ami['on'](_0x3dae('0x19'),this[_0x3dae('0x1a')]['bind'](this));ami['on'](_0x3dae('0x1b'),this[_0x3dae('0x1c')][_0x3dae('0x16')](this));ami['on'](_0x3dae('0x1d'),this['syncHangup']['bind'](this));ami['on'](_0x3dae('0x1e'),this['syncNewCallerId'][_0x3dae('0x16')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x3dae('0x16')](this));ami['on'](_0x3dae('0x1f'),this['syncBlindTransfer'][_0x3dae('0x16')](this));ami['on'](_0x3dae('0x20'),this['syncMusicOnHoldStart'][_0x3dae('0x16')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop'][_0x3dae('0x16')](this));try{logger[_0x3dae('0x21')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x3dae('0x22')]();}catch(_0x15f440){logger[_0x3dae('0x23')](_0x3dae('0x24'),util[_0x3dae('0x25')](_0x15f440,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x3dae('0x26')][_0x3dae('0x27')]=function(_0x57c5e8){return _0x57c5e8!==null&&!_[_0x3dae('0x28')](_0x57c5e8);};VoiceCallReport['prototype'][_0x3dae('0x29')]=function(_0x190432,_0x3ff657,_0x30943d){io['to'](_0x190432)[_0x3dae('0x29')](_0x3ff657,_0x30943d);};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0x2a')]=function(_0x41bd44){try{if(this[_0x3dae('0x27')](_0x41bd44)){logger[_0x3dae('0x21')](_0x3dae('0x2b'),_0x41bd44[_0x3dae('0x2c')],_0x41bd44[_0x3dae('0x2d')],_0x41bd44[_0x3dae('0x2e')]);logger['debug'](_0x3dae('0x2f'),_0x41bd44[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x41bd44,{'showHidden':![],'depth':null}));if(_0x41bd44[_0x3dae('0x2c')]===_0x41bd44[_0x3dae('0x30')]){if(!_['isUndefined'](this['channels'][_0x41bd44[_0x3dae('0x2c')]])){_[_0x3dae('0x31')](this[_0x3dae('0x32')][_0x41bd44['uniqueid']],_[_0x3dae('0x33')](_0x41bd44,_[_0x3dae('0x34')](this[_0x3dae('0x32')][_0x41bd44[_0x3dae('0x2c')]])));}}if(_0x41bd44[_0x3dae('0x35')]==='from-sip'){if(this[_0x3dae('0x12')][_0x41bd44[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]]){if(_0x41bd44[_0x3dae('0x38')]==_0x3dae('0x39')){this[_0x3dae('0x12')][_0x41bd44['channel'][_0x3dae('0x37')]('-')[0x0]][_0x3dae('0x3a')]=_0x41bd44[_0x3dae('0x3b')];this[_0x3dae('0x29')](util[_0x3dae('0x3c')](_0x3dae('0x3d'),this[_0x3dae('0x12')][_0x41bd44[_0x3dae('0x36')]['split']('-')[0x0]][_0x3dae('0x3e')]),_0x3dae('0x3f'),{'destaccountcode':this[_0x3dae('0x12')][_0x41bd44[_0x3dae('0x36')]['split']('-')[0x0]][_0x3dae('0x40')],'destconnectedlinenum':_0x41bd44[_0x3dae('0x3b')]});}}}}}catch(_0x33c4eb){logger[_0x3dae('0x23')](_0x3dae('0x41'),_0x41bd44[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x33c4eb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0x18')]=function(_0x3b68e3){try{if(this[_0x3dae('0x27')](_0x3b68e3)){logger[_0x3dae('0x42')]('[%s][voiceCallReport][newchannel]\x20event:',_0x3b68e3[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x3b68e3,{'showHidden':![],'depth':null}));if(this[_0x3dae('0x32')][_0x3b68e3[_0x3dae('0x2c')]]){return;}if(_0x3b68e3[_0x3dae('0x36')]===_0x3dae('0x43')){return;}if(_0x3b68e3[_0x3dae('0x2c')]!==_0x3b68e3[_0x3dae('0x30')]&&!this[_0x3dae('0x13')][_0x3b68e3[_0x3dae('0x30')]]){return;}logger[_0x3dae('0x21')](_0x3dae('0x44'),_0x3b68e3['uniqueid'],_0x3b68e3[_0x3dae('0x35')],_0x3b68e3[_0x3dae('0x38')]);this[_0x3dae('0x32')][_0x3b68e3['uniqueid']]=new Channel();this['channels'][_0x3b68e3[_0x3dae('0x2c')]][_0x3dae('0x45')]=moment()['format'](_0x3dae('0x46'));this[_0x3dae('0x32')][_0x3b68e3[_0x3dae('0x2c')]][_0x3dae('0x47')]=dispositions[_[_0x3dae('0x48')](_0x3b68e3[_0x3dae('0x49')])];_[_0x3dae('0x31')](this[_0x3dae('0x32')][_0x3b68e3['uniqueid']],_[_0x3dae('0x33')](_0x3b68e3,_[_0x3dae('0x34')](this[_0x3dae('0x32')][_0x3b68e3[_0x3dae('0x2c')]])));if(_0x3b68e3[_0x3dae('0x35')]===_0x3dae('0x4a')){var _0xeb923c=this[_0x3dae('0x12')][_0x3b68e3['channel']['split']('-')[0x0]];if(_0xeb923c&&typeof _0xeb923c['destconnectedlinenum']==='undefined'){_0xeb923c['destconnectedlinenum']=_0x3b68e3[_0x3dae('0x38')];logger['debug'](_0x3dae('0x4b'),_0x3b68e3[_0x3dae('0x2c')],util[_0x3dae('0x25')]({'id':_0xeb923c['id'],'destaccountcode':_0xeb923c[_0x3dae('0x40')],'destconnectedlinenum':_0x3b68e3[_0x3dae('0x38')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x3dae('0x3c')](_0x3dae('0x3d'),_0xeb923c[_0x3dae('0x3e')]),_0x3dae('0x3f'),{'id':_0xeb923c['id'],'destaccountcode':_0xeb923c[_0x3dae('0x40')],'destconnectedlinenum':_0x3b68e3[_0x3dae('0x38')]});}}}}catch(_0x3e866d){logger[_0x3dae('0x23')](_0x3dae('0x4c'),_0x3b68e3[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x3e866d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0x15')]=function(_0x2ece09){try{if(this['isNotNull'](_0x2ece09)){logger[_0x3dae('0x42')](_0x3dae('0x4d'),_0x2ece09[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x2ece09,{'showHidden':![],'depth':null}));if(_0x2ece09[_0x3dae('0x36')]===_0x3dae('0x43')||_0x2ece09[_0x3dae('0x38')]==='h')return;if(_0x2ece09[_0x3dae('0x2c')]===_0x2ece09[_0x3dae('0x30')]||this['blindTransfers'][_0x2ece09['linkedid']]){_0x2ece09[_0x3dae('0x4e')]=_0x2ece09['application']?_0x2ece09[_0x3dae('0x4e')]['toLowerCase']():undefined;_0x2ece09[_0x3dae('0x4f')]=_0x2ece09[_0x3dae('0x50')]||_0x2ece09['applicationdata'];if(_0x2ece09[_0x3dae('0x50')]&&!_0x2ece09['appdata'][_0x3dae('0x51')](_0x3dae('0x52'))&&_0x2ece09[_0x3dae('0x4e')]!==_0x3dae('0x8')){_0x2ece09[_0x3dae('0x4f')]=_0x2ece09['applicationdata'][_0x3dae('0x53')]();}logger[_0x3dae('0x21')](_0x3dae('0x54'),_0x2ece09[_0x3dae('0x2c')],_0x2ece09[_0x3dae('0x4e')],_0x2ece09['applicationdata']);if(_[_0x3dae('0x28')](this[_0x3dae('0x32')][_0x2ece09[_0x3dae('0x2c')]])){this['channels'][_0x2ece09[_0x3dae('0x2c')]]=new Channel();this[_0x3dae('0x32')][_0x2ece09['uniqueid']]['starttime']=_0x2ece09[_0x3dae('0x55')]?moment()['subtract'](moment[_0x3dae('0x55')](_0x2ece09['duration'])[_0x3dae('0x56')](),_0x3dae('0x56'))['format']('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x3dae('0x3c')](_0x3dae('0x46'));this[_0x3dae('0x32')][_0x2ece09['uniqueid']][_0x3dae('0x47')]='NO\x20ANSWER';}_['merge'](this['channels'][_0x2ece09['uniqueid']],_[_0x3dae('0x33')](_0x2ece09,_[_0x3dae('0x34')](this['channels'][_0x2ece09['uniqueid']])));if(_[_0x3dae('0x57')](applications,_0x2ece09[_0x3dae('0x4e')])){this[_0x3dae('0x32')][_0x2ece09[_0x3dae('0x2c')]][_0x3dae('0x58')]=_0x2ece09[_0x3dae('0x4e')];this[_0x3dae('0x32')][_0x2ece09[_0x3dae('0x2c')]][_0x3dae('0x59')]=_0x2ece09['applicationdata'];if(_0x2ece09[_0x3dae('0x4e')]==='set'&&_[_0x3dae('0x51')](_0x2ece09[_0x3dae('0x4f')][_0x3dae('0x53')](),'cdr(')){var _0x150847=_0x2ece09[_0x3dae('0x4f')]['split']('=');var _0x26e328=_0x150847[0x0][_0x3dae('0x53')]()[_0x3dae('0x5a')](/cdr\((.*)\)/);if(_0x26e328){if(_0x26e328[0x1]===_0x3dae('0x5b')&&!_['isNil'](this['channels'][_0x2ece09[_0x3dae('0x2c')]][_0x26e328[0x1]]))return;this['channels'][_0x2ece09['uniqueid']][_0x26e328[0x1]]=_0x150847[0x1];}}else if(_0x2ece09[_0x3dae('0x4e')]===_0x3dae('0x8')){this[_0x3dae('0x32')][_0x2ece09[_0x3dae('0x2c')]][_0x3dae('0x8')]=_0x2ece09[_0x3dae('0x4f')][_0x3dae('0x37')](',')[0x0];}}}}}catch(_0x667db7){logger[_0x3dae('0x23')](_0x3dae('0x5c'),_0x2ece09['uniqueid'],util[_0x3dae('0x25')](_0x667db7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')]['syncNewState']=function(_0xae3d3b){try{if(this[_0x3dae('0x27')](_0xae3d3b)){logger[_0x3dae('0x21')](_0x3dae('0x5d'),_0xae3d3b[_0x3dae('0x2c')],_0xae3d3b[_0x3dae('0x30')],_0xae3d3b[_0x3dae('0x2d')],_0xae3d3b[_0x3dae('0x2e')]);logger[_0x3dae('0x42')](_0x3dae('0x5e'),_0xae3d3b[_0x3dae('0x2c')],util['inspect'](_0xae3d3b,{'showHidden':![],'depth':null}));if(_0xae3d3b['channelstate']!=='6')return;var _0x4a64ca=this[_0x3dae('0x12')][_0xae3d3b[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]];if(_0xae3d3b[_0x3dae('0x2c')]!==_0xae3d3b[_0x3dae('0x30')]){var _0x56bb93=moment();if(this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]]){if(!this['channels'][_0xae3d3b['linkedid']][_0x3dae('0x5f')]){this[_0x3dae('0x32')][_0xae3d3b['linkedid']][_0x3dae('0x5f')]=!![];this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x60')]=_0x56bb93[_0x3dae('0x3c')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x45')]){this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]]['holdtime']=_0x56bb93[_0x3dae('0x61')](this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x45')],_0x3dae('0x56'));}}this['channels'][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x30')]=_0xae3d3b[_0x3dae('0x2c')];if(_0xae3d3b[_0x3dae('0x2e')]!==_0x3dae('0x39')){this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x3b')]=_0xae3d3b['calleridnum'];}this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x62')]=_0xae3d3b[_0x3dae('0x2d')];this['channels'][_0xae3d3b['linkedid']][_0x3dae('0x63')]=_0xae3d3b[_0x3dae('0x36')];this['channels'][_0xae3d3b['linkedid']]['disposition']=dispositions[_[_0x3dae('0x48')](_0xae3d3b[_0x3dae('0x49')])];if(_0x4a64ca){this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x64')]=_0x4a64ca['id'];this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x65')]=_0x4a64ca[_0x3dae('0x3e')];}}if(this[_0x3dae('0x32')][_0xae3d3b['uniqueid']]){if(!this[_0x3dae('0x32')][_0xae3d3b['uniqueid']]['answered']){this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]][_0x3dae('0x5f')]=!![];this['channels'][_0xae3d3b['uniqueid']]['answertime']=_0x56bb93[_0x3dae('0x3c')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x3dae('0x32')][_0xae3d3b['uniqueid']][_0x3dae('0x45')]){this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]][_0x3dae('0x66')]=_0x56bb93[_0x3dae('0x61')](this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]][_0x3dae('0x45')],_0x3dae('0x56'));}}if(_0xae3d3b[_0x3dae('0x2e')]!==_0x3dae('0x39')){this['channels'][_0xae3d3b[_0x3dae('0x2c')]]['connectedlinenum']=_0xae3d3b[_0x3dae('0x2e')];}this['channels'][_0xae3d3b['uniqueid']]['connectedlinename']=_0xae3d3b[_0x3dae('0x2d')];this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]]['destinationchannel']=_0xae3d3b['channel'];this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]]['disposition']=dispositions[_[_0x3dae('0x48')](_0xae3d3b[_0x3dae('0x49')])];}}else{if(this['channels'][_0xae3d3b['uniqueid']]){if(_0x4a64ca){this['channels'][_0xae3d3b[_0x3dae('0x2c')]]['UserId']=_0x4a64ca['id'];this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]][_0x3dae('0x65')]=_0x4a64ca['name'];}}}if(_0xae3d3b[_0x3dae('0x35')]===_0x3dae('0x4a')){if(_0x4a64ca){_0x4a64ca['destconnectedlinenum']=_0xae3d3b[_0x3dae('0x38')];var _0x1f9f55,_0x5818b0;if(this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]]){_0x1f9f55=this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x2c')]]['routealias'];_0x5818b0=this['channels'][_0xae3d3b[_0x3dae('0x2c')]][_0x3dae('0x8')];}else if(this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]]){_0x1f9f55=this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x67')];_0x5818b0=this[_0x3dae('0x32')][_0xae3d3b[_0x3dae('0x30')]][_0x3dae('0x8')];}_0x4a64ca[_0x3dae('0x8')]=_0x5818b0;_0x4a64ca['routealias']=_0x1f9f55;var _0x423050={'id':_0x4a64ca['id'],'name':_0x4a64ca[_0x3dae('0x3e')],'agentconnected':!![],'destaccountcode':_0x4a64ca[_0x3dae('0x40')],'destconnectedlinenum':_0xae3d3b[_0x3dae('0x38')],'queue':_0x5818b0||undefined,'routealias':_0x1f9f55,'uniqueid':_0xae3d3b[_0x3dae('0x30')]};logger[_0x3dae('0x42')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0xae3d3b[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x423050,{'showHidden':![],'depth':null}));this[_0x3dae('0x29')](util[_0x3dae('0x3c')](_0x3dae('0x3d'),_0x4a64ca[_0x3dae('0x3e')]),_0x3dae('0x3f'),_0x423050);}}}}catch(_0x447fe7){logger[_0x3dae('0x23')]('[%s][voiceCallReport][newstate]',_0xae3d3b[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x447fe7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0x68')]=function(_0x15df6b,_0x1000a6){try{if(this['channels'][_0x15df6b]){logger[_0x3dae('0x21')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x15df6b,_0x1000a6);this[_0x3dae('0x32')][_0x15df6b][_0x3dae('0x69')]=!![];if(_[_0x3dae('0x6a')](_0x1000a6,'.wav49')){_0x1000a6=_0x1000a6['replace'](_0x3dae('0x6b'),_0x3dae('0x6c'));}this[_0x3dae('0x32')][_0x15df6b][_0x3dae('0x6d')]=_0x1000a6;var _0x1f398b=_[_0x3dae('0x6e')](this[_0x3dae('0x32')][_0x15df6b][_0x3dae('0x6f')],{'filename':_0x1000a6});if(_[_0x3dae('0x70')](_0x1f398b)){this[_0x3dae('0x32')][_0x15df6b]['monitors'][_0x3dae('0x71')]({'filename':_0x1000a6,'createdAt':moment()['format'](_0x3dae('0x46')),'mixmonitorid':'','status':_0x3dae('0x72')});}}}catch(_0x451b5f){logger[_0x3dae('0x23')](_0x3dae('0x73'),_0x15df6b,util[_0x3dae('0x25')](_0x451b5f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0x1c')]=function(_0x43edfd){try{if(this[_0x3dae('0x27')](_0x43edfd)){logger[_0x3dae('0x42')]('[%s][voiceCallReport][varset]\x20event:',_0x43edfd['uniqueid'],util[_0x3dae('0x25')](_0x43edfd,{'showHidden':![],'depth':null}));if(this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x2c')]]&&_0x43edfd[_0x3dae('0x36')]!='OutgoingSpoolFailed'){if(this[_0x3dae('0x27')](_0x43edfd['variable'])){if(this['isNotNull'](_0x43edfd[_0x3dae('0x74')]['mixmonitor_filename'])){logger[_0x3dae('0x21')](_0x3dae('0x75'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd[_0x3dae('0x76')]);this[_0x3dae('0x68')](_0x43edfd['uniqueid'],_0x43edfd[_0x3dae('0x76')]);}else if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x77')])){logger[_0x3dae('0x21')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x43edfd[_0x3dae('0x2c')],_0x43edfd[_0x3dae('0x76')]);this['channels'][_0x43edfd[_0x3dae('0x2c')]][_0x3dae('0x2e')]=_0x43edfd['value'];}else if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x78')])){logger[_0x3dae('0x21')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x43edfd[_0x3dae('0x2c')],_0x43edfd[_0x3dae('0x76')]);this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x2c')]][_0x3dae('0x79')]=_0x43edfd[_0x3dae('0x76')];}else if(this[_0x3dae('0x27')](_0x43edfd['variable'][_0x3dae('0x7a')])){logger[_0x3dae('0x21')](_0x3dae('0x7b'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd['value']);this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x2c')]][_0x3dae('0x5b')]=_0x43edfd[_0x3dae('0x76')];}else if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x7c')])){logger[_0x3dae('0x21')](_0x3dae('0x7d'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd['value']['split'](',')[0x0]);this['channels'][_0x43edfd[_0x3dae('0x2c')]][_0x3dae('0x8')]=_0x43edfd[_0x3dae('0x76')][_0x3dae('0x37')](',')[0x0];}else if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x7e')])){logger['info'](_0x3dae('0x7f'),_0x43edfd['uniqueid'],_0x43edfd['value']);this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x2c')]][_0x3dae('0x80')]=_0x43edfd[_0x3dae('0x76')];}else if(this[_0x3dae('0x27')](_0x43edfd['variable'][_0x3dae('0x81')])){logger[_0x3dae('0x21')](_0x3dae('0x82'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd[_0x3dae('0x76')]);this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x2c')]][_0x3dae('0x83')]=_0x43edfd['value'];}else if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x84')])){logger['info'](_0x3dae('0x85'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd[_0x3dae('0x76')]);this[_0x3dae('0x32')][_0x43edfd['uniqueid']][_0x3dae('0x86')]=_0x43edfd['value'];}else if(this[_0x3dae('0x27')](_0x43edfd['variable']['xmcs-queue'])){logger[_0x3dae('0x21')](_0x3dae('0x87'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd[_0x3dae('0x76')]);this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x2c')]]['queue']=_0x43edfd[_0x3dae('0x76')];}else if(this['isNotNull'](_0x43edfd['variable']['sipcallid'])){logger['info'](_0x3dae('0x88'),_0x43edfd[_0x3dae('0x2c')],_0x43edfd['value']);this['channels'][_0x43edfd['uniqueid']]['sipcalluniqueid']=_0x43edfd[_0x3dae('0x76')];}}}else if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x89')])){if(_0x43edfd['value']){var _0x1aa64f=path['parse'](_0x43edfd[_0x3dae('0x76')])[_0x3dae('0x3e')];logger[_0x3dae('0x21')](_0x3dae('0x75'),_0x1aa64f,_0x43edfd['value']);this[_0x3dae('0x68')](_0x1aa64f,_0x43edfd['value']);}}else if(this[_0x3dae('0x32')][_0x43edfd[_0x3dae('0x30')]]){if(this['isNotNull'](_0x43edfd[_0x3dae('0x74')])){if(this[_0x3dae('0x27')](_0x43edfd[_0x3dae('0x74')][_0x3dae('0x8a')])){logger[_0x3dae('0x21')](_0x3dae('0x88'),_0x43edfd[_0x3dae('0x30')],_0x43edfd[_0x3dae('0x76')]);this['channels'][_0x43edfd[_0x3dae('0x30')]][_0x3dae('0x8b')]=_0x43edfd['value'];}}}}}catch(_0x4a0f18){logger['error'](_0x3dae('0x8c'),_0x43edfd[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x4a0f18,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3dae('0x8d')]=function(_0x360c18){try{if(this[_0x3dae('0x27')](_0x360c18)){logger[_0x3dae('0x42')](_0x3dae('0x8e'),_0x360c18['uniqueid'],util['inspect'](_0x360c18,{'showHidden':![],'depth':null}));if(this[_0x3dae('0x13')][_0x360c18['linkedid']]){if(this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x30')]]){this['channels'][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]]['linkedid']]['uniqueid']=_0x360c18[_0x3dae('0x2c')];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x30')]][_0x3dae('0x5f')]=this[_0x3dae('0x32')][_0x360c18['uniqueid']][_0x3dae('0x5f')];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x30')]][_0x3dae('0x60')]=this[_0x3dae('0x32')][_0x360c18['uniqueid']][_0x3dae('0x60')];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18['linkedid']][_0x3dae('0x30')]][_0x3dae('0x63')]=this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x30')]][_0x3dae('0x36')];this[_0x3dae('0x32')][this['blindTransfers'][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x30')]]['disposition']=this[_0x3dae('0x32')][_0x360c18['uniqueid']][_0x3dae('0x47')];this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]]=this[_0x3dae('0x32')][this['blindTransfers'][_0x360c18[_0x3dae('0x30')]]['linkedid']];delete this[_0x3dae('0x32')][this['blindTransfers'][_0x360c18['linkedid']][_0x3dae('0x30')]];}else if(this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18['linkedid']]['uniqueid']]){this['channels'][this[_0x3dae('0x13')][_0x360c18['linkedid']][_0x3dae('0x2c')]][_0x3dae('0x2c')]=[this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x2c')]][_0x3dae('0x30')],this[_0x3dae('0x32')][this['blindTransfers'][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x2c')]]['linkedid']=this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18['linkedid']][_0x3dae('0x2c')]][_0x3dae('0x2c')]][0x0];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x2c')]][_0x3dae('0x5f')]=this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x5f')];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]]['uniqueid']]['answertime']=this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x60')];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18['linkedid']][_0x3dae('0x2c')]][_0x3dae('0x63')]=this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18['linkedid']][_0x3dae('0x2c')]]['channel'];this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x2c')]][_0x3dae('0x47')]=this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x47')];this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]]=this[_0x3dae('0x32')][this[_0x3dae('0x13')][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x2c')]];delete this['channels'][this['blindTransfers'][_0x360c18[_0x3dae('0x30')]][_0x3dae('0x2c')]];}}if(this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]]){logger[_0x3dae('0x21')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x360c18[_0x3dae('0x2c')],_0x360c18['cause-txt']);var _0x1700ba=moment();this['channels'][_0x360c18['uniqueid']][_0x3dae('0x8f')]=_0x1700ba[_0x3dae('0x3c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3dae('0x32')][_0x360c18['uniqueid']][_0x3dae('0x55')]=_0x1700ba[_0x3dae('0x61')](this['channels'][_0x360c18['uniqueid']][_0x3dae('0x45')],_0x3dae('0x56'));if(this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x5f')]){this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x90')]=_0x1700ba[_0x3dae('0x61')](this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x60')],_0x3dae('0x56'));this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x66')]=this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x55')]-this[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x90')];}if(_0x360c18[_0x3dae('0x35')]===_0x3dae('0x4a')){if(this[_0x3dae('0x12')][_0x360c18[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]]){this['agents'][_0x360c18['channel'][_0x3dae('0x37')]('-')[0x0]]=_[_0x3dae('0x91')](this['agents'][_0x360c18[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]],[_0x3dae('0x3a')]);logger['debug'](_0x3dae('0x92'),_0x360c18['uniqueid'],util[_0x3dae('0x25')]({'id':this['agents'][_0x360c18[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]]['id'],'destaccountcode':this[_0x3dae('0x12')][_0x360c18[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x3dae('0x29')](util[_0x3dae('0x3c')](_0x3dae('0x3d'),this[_0x3dae('0x12')][_0x360c18[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]][_0x3dae('0x3e')]),_0x3dae('0x93'),{'id':this[_0x3dae('0x12')][_0x360c18[_0x3dae('0x36')]['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x360c18[_0x3dae('0x36')][_0x3dae('0x37')]('-')[0x0]][_0x3dae('0x40')]});for(var _0x35dd03=0x0;_0x35dd03<Object[_0x3dae('0x34')](this[_0x3dae('0x12')])[_0x3dae('0x94')];_0x35dd03++){var _0x36827c=Object['keys'](this['agents'])[_0x35dd03];var _0x52f12d=this['agents'][_0x36827c];if(_0x52f12d[_0x3dae('0x40')]===Number(this[_0x3dae('0x32')][_0x360c18['uniqueid']]['connectedlinenum'])){this[_0x3dae('0x29')](util['format'](_0x3dae('0x3d'),_0x52f12d['name']),_0x3dae('0x93'),{'id':_0x52f12d['id'],'destaccountcode':_0x52f12d[_0x3dae('0x40')],'transfer':this['channels'][_0x360c18['uniqueid']][_0x3dae('0x95')]});break;}}}}var _0x185924=this;Promise[_0x3dae('0x96')]()[_0x3dae('0x97')](function(){var _0x25570e=_0x185924[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]];if(typeof _0x25570e[_0x3dae('0x95')]==='undefined')return;if(_[_0x3dae('0x98')](_0x25570e[_0x3dae('0x6f')]))return;return RpcSetting[_0x3dae('0x99')]()[_0x3dae('0x97')](function(_0x33a04f){if(!_0x33a04f[_0x3dae('0x9a')])return;return Promise[_0x3dae('0x96')]()[_0x3dae('0x97')](function(){return ami[_0x3dae('0x9b')]({'action':_0x3dae('0x9c'),'channel':_0x25570e[_0x3dae('0x36')]})[_0x3dae('0x9d')](function(){});})[_0x3dae('0x97')](function(){return ami[_0x3dae('0x9b')]({'action':_0x3dae('0x9c'),'channel':_0x25570e['destinationchannel']})[_0x3dae('0x9d')](function(){})[_0x3dae('0x9e')](function(){var _0x15b3f7=_0x185924['agents'][_0x25570e[_0x3dae('0x63')][_0x3dae('0x37')]('-')[0x0]];if(!_0x15b3f7)return;io[_0x3dae('0x29')](_0x3dae('0x9f'),{'agentId':_0x15b3f7['id'],'uniqueid':_0x25570e[_0x3dae('0x2c')]});});});});})[_0x3dae('0x97')](function(){if(_0x360c18['event']===_0x3dae('0xa0')){_0x185924[_0x3dae('0x13')][_0x360c18['uniqueid']]=_0x360c18;}else{if(_0x185924[_0x3dae('0x32')][_0x360c18['uniqueid']][_0x3dae('0x5b')]===_0x3dae('0xa1')&&_0x185924[_0x3dae('0x13')][_0x360c18[_0x3dae('0x2c')]]){_0x185924[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x2c')]=[_0x185924[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]]['linkedid'],_0x185924[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]][_0x3dae('0x30')]=_0x185924[_0x3dae('0x32')][_0x360c18['uniqueid']][_0x3dae('0x2c')]][0x0];delete _0x185924[_0x3dae('0x13')][_0x360c18[_0x3dae('0x2c')]];}}logger[_0x3dae('0x42')](_0x3dae('0xa2'),_0x360c18['uniqueid'],util[_0x3dae('0x25')](_0x185924[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]],{'showHidden':![],'depth':null}));ami[_0x3dae('0x29')](_0x3dae('0xa3'),_0x185924[_0x3dae('0x32')][_0x360c18['uniqueid']]);delete _0x185924[_0x3dae('0x32')][_0x360c18[_0x3dae('0x2c')]];});}}}catch(_0x513f73){logger[_0x3dae('0x23')](_0x3dae('0xa4'),_0x360c18[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x513f73,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')]['syncAttendedTransfer']=function(_0x2357d9){try{if(this[_0x3dae('0x27')](_0x2357d9)){logger[_0x3dae('0x21')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x2357d9['uniqueid'],_0x2357d9['origtransferercalleridnum'],_0x2357d9[_0x3dae('0xa5')]);logger[_0x3dae('0x42')](_0x3dae('0xa6'),_0x2357d9[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x2357d9,{'showHidden':![],'depth':null}));var _0x5bd4b6;if(this['channels'][_0x2357d9[_0x3dae('0xa7')]]){this[_0x3dae('0x32')][_0x2357d9['transfereeuniqueid']]['transfercalleridnum']=_0x2357d9['origtransferercalleridnum'];this['channels'][_0x2357d9[_0x3dae('0xa7')]][_0x3dae('0xa8')]=_0x2357d9[_0x3dae('0xa5')];if(this[_0x3dae('0x32')][_0x2357d9['secondtransfereruniqueid']]){_0x5bd4b6=this[_0x3dae('0x32')][_0x2357d9['secondtransfereruniqueid']];this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xa9')]]=this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xa7')]];this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xa7')]]=_0x5bd4b6;}this['channels'][_0x2357d9[_0x3dae('0xa9')]][_0x3dae('0x95')]=_0x3dae('0xaa');}else if(this['channels'][_0x2357d9[_0x3dae('0xab')]]){this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xab')]][_0x3dae('0xac')]=_0x2357d9[_0x3dae('0xad')];this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xab')]]['transferconnectedlinenum']=_0x2357d9[_0x3dae('0xa5')];if(this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xae')]]){_0x5bd4b6=this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xae')]];this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xae')]]=this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xab')]];this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xab')]]=_0x5bd4b6;}this[_0x3dae('0x32')][_0x2357d9['transfertargetuniqueid']]['transferType']=_0x3dae('0xaa');}if((this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xae')]]||this['channels'][_0x2357d9[_0x3dae('0xaf')]])&&this['channels'][_0x2357d9['secondtransfereruniqueid']]){var _0x56b7cf=_[_0x3dae('0xb0')]([this['channels'][_0x2357d9[_0x3dae('0xae')]],this['channels'][_0x2357d9[_0x3dae('0xaf')]],this['channels'][_0x2357d9[_0x3dae('0xa9')]]],function(_0x7077ba){return _0x7077ba&&_0x7077ba[_0x3dae('0x5b')]===_0x3dae('0xa1')&&_0x7077ba[_0x3dae('0xb1')];});if(_0x56b7cf){if(this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xae')]])this['channels'][_0x2357d9['origtransfereruniqueid']][_0x3dae('0x95')]=_0x3dae('0xaa');if(this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xaf')]])this[_0x3dae('0x32')][_0x2357d9[_0x3dae('0xaf')]][_0x3dae('0x95')]=_0x3dae('0xaa');this['channels'][_0x2357d9['secondtransfereruniqueid']]['transferType']=_0x3dae('0xaa');}}}}catch(_0x6c4132){logger[_0x3dae('0x23')](_0x3dae('0xb2'),_0x2357d9['uniqueid'],util[_0x3dae('0x25')](_0x6c4132,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0xb3')]=function(_0x1e6437){try{if(this[_0x3dae('0x27')](_0x1e6437)){logger[_0x3dae('0x21')](_0x3dae('0xb4'),_0x1e6437[_0x3dae('0x2c')],_0x1e6437[_0x3dae('0xb5')],_0x1e6437[_0x3dae('0xb6')]);logger[_0x3dae('0x42')](_0x3dae('0xb7'),_0x1e6437[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x1e6437,{'showHidden':![],'depth':null}));if(this[_0x3dae('0x32')][_0x1e6437[_0x3dae('0xa7')]]){this['channels'][_0x1e6437[_0x3dae('0xa7')]][_0x3dae('0xac')]=_0x1e6437[_0x3dae('0xb5')];this['channels'][_0x1e6437['transfereeuniqueid']][_0x3dae('0xa8')]=_0x1e6437[_0x3dae('0xb6')];this[_0x3dae('0x32')][_0x1e6437[_0x3dae('0xa7')]][_0x3dae('0x95')]=_0x3dae('0xb8');this[_0x3dae('0x8d')]({'event':_0x3dae('0xa0'),'uniqueid':_0x1e6437[_0x3dae('0xa7')],'linkedid':_0x1e6437[_0x3dae('0xb9')],'context':_0x1e6437[_0x3dae('0x35')],'channel':_0x1e6437['transfererchannel']});}else{this[_0x3dae('0x32')][_0x1e6437[_0x3dae('0xb9')]][_0x3dae('0x95')]=_0x3dae('0xb8');this[_0x3dae('0x8d')]({'event':_0x3dae('0xa0'),'uniqueid':_0x1e6437[_0x3dae('0xb9')],'linkedid':_0x1e6437[_0x3dae('0xa7')],'context':_0x1e6437[_0x3dae('0x35')],'channel':_0x1e6437[_0x3dae('0xba')]});}}}catch(_0xd5860d){logger[_0x3dae('0x23')](_0x3dae('0xbb'),_0x1e6437['uniqueid'],util[_0x3dae('0x25')](_0xd5860d,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3dae('0xbc')]=function(_0x4e8421){try{if(this[_0x3dae('0x27')](_0x4e8421)){logger['debug'](_0x3dae('0xbd'),_0x4e8421[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x4e8421,{'showHidden':![],'depth':null}));if(this[_0x3dae('0x32')][_0x4e8421[_0x3dae('0x2c')]]){if(!_[_0x3dae('0x70')](this[_0x3dae('0x32')][_0x4e8421['uniqueid']][_0x3dae('0x60')])){this[_0x3dae('0x32')][_0x4e8421[_0x3dae('0x2c')]][_0x3dae('0xbe')]=moment()[_0x3dae('0x3c')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x3dae('0x21')](_0x3dae('0xbf'),_0x4e8421[_0x3dae('0x2c')],this['channels'][_0x4e8421[_0x3dae('0x2c')]][_0x3dae('0xbe')]);}}}}catch(_0x495d39){logger[_0x3dae('0x23')](_0x3dae('0xc0'),_0x4e8421[_0x3dae('0x2c')],util['inspect'](_0x495d39,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3dae('0x26')][_0x3dae('0xc1')]=function(_0x187cbb){try{if(this[_0x3dae('0x27')](_0x187cbb)){logger[_0x3dae('0x42')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x187cbb[_0x3dae('0x2c')],util[_0x3dae('0x25')](_0x187cbb,{'showHidden':![],'depth':null}));if(this[_0x3dae('0x32')][_0x187cbb[_0x3dae('0x2c')]]){if(!_[_0x3dae('0x70')](this[_0x3dae('0x32')][_0x187cbb['uniqueid']][_0x3dae('0xbe')])){this[_0x3dae('0x32')][_0x187cbb[_0x3dae('0x2c')]][_0x3dae('0xc2')]+=moment()[_0x3dae('0xc3')](0x0)['diff'](this[_0x3dae('0x32')][_0x187cbb[_0x3dae('0x2c')]][_0x3dae('0xbe')],'seconds');logger[_0x3dae('0x21')](_0x3dae('0xc4'),_0x187cbb['uniqueid'],this[_0x3dae('0x32')][_0x187cbb[_0x3dae('0x2c')]][_0x3dae('0xc2')]);delete this['channels'][_0x187cbb[_0x3dae('0x2c')]][_0x3dae('0xbe')];}}}}catch(_0x4881fb){logger[_0x3dae('0x23')]('[%s][voiceCallReport][musiconholdstop]',_0x187cbb['uniqueid'],util[_0x3dae('0x25')](_0x4881fb,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 085c56c..7067469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['syncDialEnd','syncVarSet','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','lastevent','total','answered','billableseconds','holdtime','sumBillable','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','destuniqueid','syncNewExten','toLowerCase','set','applicationdata','appdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','bind','dialend'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x23d3df,_0x1b43d2){_0x23d3df=_0x23d3df-0x0;var _0x431958=_0x3f8a[_0x23d3df];return _0x431958;};'use strict';var _=require(_0xa3f8('0x0'));var moment=require(_0xa3f8('0x1'));var util=require(_0xa3f8('0x2'));var Redis=require(_0xa3f8('0x3'));var config=require('../../../config/environment');var logger=require(_0xa3f8('0x4'))(_0xa3f8('0x5'));var ami=require(_0xa3f8('0x6'));config[_0xa3f8('0x7')]=_[_0xa3f8('0x8')](config[_0xa3f8('0x7')],{'host':_0xa3f8('0x9'),'port':0x18eb});var io=require(_0xa3f8('0xa'))(new Redis(config[_0xa3f8('0x7')]));function VoiceDialReport(_0xf895d9){this[_0xa3f8('0xb')]=_0xf895d9[_0xa3f8('0xc')];this[_0xa3f8('0xd')]=_0xf895d9[_0xa3f8('0xd')];this[_0xa3f8('0xe')]={};this[_0xa3f8('0xf')]={};ami['on'](_0xa3f8('0x10'),this['syncDialBegin'][_0xa3f8('0x11')](this));ami['on'](_0xa3f8('0x12'),this[_0xa3f8('0x13')][_0xa3f8('0x11')](this));ami['on']('varset',this[_0xa3f8('0x14')][_0xa3f8('0x11')](this));ami['on'](_0xa3f8('0x15'),this[_0xa3f8('0x16')][_0xa3f8('0x11')](this));}VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x18')]=function(_0x63de8b){return _0x63de8b!==null&&!_[_0xa3f8('0x19')](_0x63de8b);};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x1a')]=function(_0x2c5e15,_0x5b2c33,_0x2d8f74){io['to'](_0x2c5e15)[_0xa3f8('0x1a')](_0x5b2c33,_0x2d8f74);};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x1b')]=function(_0x5caebf){try{if(this[_0xa3f8('0x18')](_0x5caebf)){logger[_0xa3f8('0x1c')](_0xa3f8('0x1d'),_0x5caebf[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x5caebf,{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]]){_[_0xa3f8('0x20')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],{'starttime':moment()['format'](_0xa3f8('0x21')),'lastevent':'called','interface':_0x5caebf[_0xa3f8('0x22')][_0xa3f8('0x23')](0x0,_0x5caebf[_0xa3f8('0x22')][_0xa3f8('0x24')]('-')),'membername':_0x5caebf['channel'][_0xa3f8('0x23')](_0x5caebf['channel'][_0xa3f8('0x24')]('/')+0x1,_0x5caebf['channel'][_0xa3f8('0x24')]('-'))},_[_0xa3f8('0x25')](_0x5caebf,[_0xa3f8('0x26'),_0xa3f8('0x27')]));logger[_0xa3f8('0x28')](_0xa3f8('0x29'),_0x5caebf[_0xa3f8('0x1e')],this['channels'][_0x5caebf[_0xa3f8('0x1e')]]['membername'],this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]][_0xa3f8('0x2a')]);logger[_0xa3f8('0x1c')](_0xa3f8('0x2b'),_0x5caebf[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xe')][_0x5caebf['uniqueid']])_[_0xa3f8('0x20')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],this['applications'][_0x5caebf[_0xa3f8('0x1e')]]);this['emit'](_0xa3f8('0x2c'),_0xa3f8('0x2d'),this[_0xa3f8('0xb')][_0x5caebf['uniqueid']]);logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x5caebf[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x2e'),this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]]);}}}catch(_0x25f9f5){logger[_0xa3f8('0x2f')](_0xa3f8('0x30'),_0x5caebf['uniqueid'],util[_0xa3f8('0x1f')](_0x25f9f5,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x13')]=function(_0x1954f5){try{if(this[_0xa3f8('0x18')](_0x1954f5)){logger['debug'](_0xa3f8('0x31'),_0x1954f5[_0xa3f8('0x1e')],util['inspect'](_0x1954f5,{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]]){this['channels'][_0x1954f5[_0xa3f8('0x1e')]]['dialstatus']=_0x1954f5['dialstatus'];if(_0x1954f5[_0xa3f8('0x32')]===_0xa3f8('0x33')){this['channels'][_0x1954f5[_0xa3f8('0x1e')]]['connectedlinenum']=_0x1954f5[_0xa3f8('0x34')];this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]][_0xa3f8('0x35')]=_0x1954f5['connectedlinename'];this[_0xa3f8('0xb')][_0x1954f5['uniqueid']][_0xa3f8('0x36')]=moment()['format'](_0xa3f8('0x21'));this['channels'][_0x1954f5['uniqueid']]['lastevent']=_0xa3f8('0x37');logger[_0xa3f8('0x28')](_0xa3f8('0x38'),_0x1954f5[_0xa3f8('0x1e')],_0x1954f5['channel'][_0xa3f8('0x23')](_0x1954f5[_0xa3f8('0x22')][_0xa3f8('0x24')]('/')+0x1,_0x1954f5[_0xa3f8('0x22')][_0xa3f8('0x24')]('-')));logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x1954f5[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x1954f5['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x39'),this['channels'][_0x1954f5[_0xa3f8('0x1e')]]);}logger['debug'](_0xa3f8('0x3a'),_0x1954f5['uniqueid'],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this[_0xa3f8('0x1a')](_0xa3f8('0x2c'),'voice_outbound_channel:save',this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]]);}}}catch(_0x4db9c5){logger[_0xa3f8('0x2f')]('[%s][voiceDialReport][dialend]',_0x1954f5[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x4db9c5,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x14')]=function(_0x357712){try{if(this['isNotNull'](_0x357712)){logger[_0xa3f8('0x1c')](_0xa3f8('0x3b'),_0x357712[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x357712,{'showHidden':![],'depth':null}));this[_0xa3f8('0x3c')](_0x357712['uniqueid'],_[_0xa3f8('0x3d')](_0x357712[_0xa3f8('0x3e')])[0x0],_0x357712[_0xa3f8('0x3f')]);if(this[_0xa3f8('0x18')](_0x357712[_0xa3f8('0x3e')])&&this[_0xa3f8('0x18')](_0x357712[_0xa3f8('0x3e')][_0xa3f8('0x40')])){if(_[_0xa3f8('0x19')](this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]])){this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]]={'routeId':_0x357712['value'],'variables':this['variables'][_0x357712['uniqueid']],'motionChannel':_0xa3f8('0x41')};logger[_0xa3f8('0x28')](_0xa3f8('0x42'),_0x357712[_0xa3f8('0x1e')],_0x357712[_0xa3f8('0x3e')][_0xa3f8('0x40')],_['keys'](_0x357712[_0xa3f8('0x3e')])[0x0],_0x357712[_0xa3f8('0x3f')]);logger[_0xa3f8('0x1c')](_0xa3f8('0x43'),_0x357712['uniqueid'],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]]);}}}}catch(_0x5a2a7c){logger[_0xa3f8('0x2f')](_0xa3f8('0x44'),_0x357712[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x5a2a7c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x3c')]=function(_0x375ffd,_0x37fa3d,_0xbfef86){var _0xe1f66d=[_0xa3f8('0x45'),_0xa3f8('0x46'),_0xa3f8('0x47'),_0xa3f8('0x48'),_0xa3f8('0x49'),_0xa3f8('0x4a'),_0xa3f8('0x4b'),'rtpaudioqosrttbridged','sipcallid',_0xa3f8('0x4c'),_0xa3f8('0x4d'),'bridgepvtcallid',_0xa3f8('0x4e'),_0xa3f8('0x4f'),_0xa3f8('0x50'),_0xa3f8('0x51'),_0xa3f8('0x52'),_0xa3f8('0x53'),_0xa3f8('0x54')];if(!_[_0xa3f8('0x55')](_0x37fa3d)&&!_[_0xa3f8('0x56')](_0xe1f66d,_0x37fa3d)){if(_[_0xa3f8('0x19')](this[_0xa3f8('0xf')][_0x375ffd])){this[_0xa3f8('0xf')][_0x375ffd]={};}this[_0xa3f8('0xf')][_0x375ffd][_0x37fa3d]=_0xbfef86;}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x16')]=function(_0x3169d3){try{if(this['isNotNull'](_0x3169d3)){logger['debug'](_0xa3f8('0x57'),_0x3169d3['uniqueid'],util[_0xa3f8('0x1f')](_0x3169d3,{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]){logger['info'](_0xa3f8('0x58'),_0x3169d3[_0xa3f8('0x1e')],_0x3169d3[_0xa3f8('0x59')]);this[_0xa3f8('0xb')][_0x3169d3['uniqueid']][_0xa3f8('0x5a')]=moment()['format'](_0xa3f8('0x21'));this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]['duration']=moment(this['channels'][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5a')])[_0xa3f8('0x5b')](this[_0xa3f8('0xb')][_0x3169d3['uniqueid']][_0xa3f8('0x5c')],_0xa3f8('0x5d'));this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5e')]='complete';this['outbound'][_0xa3f8('0x5f')]+=0x1;if(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x36')]){this[_0xa3f8('0xd')][_0xa3f8('0x60')]+=0x1;this[_0xa3f8('0xb')][_0x3169d3['uniqueid']]['holdtime']=moment(this['channels'][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x36')])[_0xa3f8('0x5b')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5c')],_0xa3f8('0x5d'));this[_0xa3f8('0xb')][_0x3169d3['uniqueid']][_0xa3f8('0x61')]=moment(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5a')])[_0xa3f8('0x5b')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]['answertime'],_0xa3f8('0x5d'));this[_0xa3f8('0xd')]['sumHoldTime']+=this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x62')]||0x0;this[_0xa3f8('0xd')][_0xa3f8('0x63')]+=this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]['billableseconds'];}this['outbound'][_0xa3f8('0x64')]+=this['channels'][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x65')];logger[_0xa3f8('0x1c')](_0xa3f8('0x66'),_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x67'),this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]);logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x68'),this['channels'][_0x3169d3[_0xa3f8('0x1e')]]);logger[_0xa3f8('0x1c')](_0xa3f8('0x69'),_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this[_0xa3f8('0x1a')](_0xa3f8('0x2c'),_0xa3f8('0x6a'),this[_0xa3f8('0xd')]);logger['info'](_0xa3f8('0x6b'),JSON[_0xa3f8('0x6c')](this['channels'][_0x3169d3['uniqueid']]));logger[_0xa3f8('0x1c')](_0xa3f8('0x6d'),_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this[_0xa3f8('0x1a')](_0xa3f8('0x2c'),'voice_outbound_channel:remove',this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]);delete this[_0xa3f8('0xb')][_0x3169d3['uniqueid']];}else if(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x6e')]]){this['channels'][_0x3169d3[_0xa3f8('0x6e')]][_0xa3f8('0x1e')]=this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x6e')]][_0xa3f8('0x6f')];}if(this[_0xa3f8('0xf')][_0x3169d3[_0xa3f8('0x1e')]]){delete this[_0xa3f8('0xf')][_0x3169d3[_0xa3f8('0x1e')]];}}}catch(_0x55087e){logger[_0xa3f8('0x2f')]('[%s][voiceDialReport][hangup]',_0x3169d3[_0xa3f8('0x1e')],util['inspect'](_0x55087e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x70')]=function(_0x407986){try{if(this[_0xa3f8('0x18')](_0x407986)){logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][newexten]\x20event:',_0x407986[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x407986,{'showHidden':![],'depth':null}));if(_0x407986['application'][_0xa3f8('0x71')]()===_0xa3f8('0x72')){_0x407986[_0xa3f8('0x73')]=(_0x407986[_0xa3f8('0x74')]||_0x407986[_0xa3f8('0x73')])[_0xa3f8('0x71')]();if(_['startsWith'](_0x407986[_0xa3f8('0x73')],_0xa3f8('0x75'))){if(_[_0xa3f8('0x19')](this['applications'][_0x407986[_0xa3f8('0x1e')]]))this['applications'][_0x407986[_0xa3f8('0x1e')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x407986[_0xa3f8('0x1e')],_0x407986['application'],_0x407986[_0xa3f8('0x73')]);var _0x5f174a=_0x407986[_0xa3f8('0x73')][_0xa3f8('0x76')]('=');var _0x279131=_0x5f174a[0x0][_0xa3f8('0x77')](/cdr\((.*)\)/);if(_0x279131)this['applications'][_0x407986[_0xa3f8('0x1e')]][_0x279131[0x1]]=_0x5f174a[0x1];}}}}catch(_0x35db48){logger['error'](_0xa3f8('0x78'),_0x407986[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x35db48,{'showHidden':![],'depth':null}));}};module[_0xa3f8('0x79')]=VoiceDialReport;
\ No newline at end of file
+var _0x5d58=['addVariable','variable','value','outboundrouteid','isUndefined','variables','voice','keys','[%s][voiceDialReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','endtime','duration','starttime','complete','total','answertime','answered','seconds','diff','sumHoldTime','holdtime','billableseconds','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','outboundChannels','outbound','applications','dialbegin','syncDialBegin','bind','varset','syncVarSet','hangup','syncHangup','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','[%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]','dialstatus','connectedlinenum','connectedlinename','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5d58,0x187));var _0x85d5=function(_0x1967bf,_0x39f014){_0x1967bf=_0x1967bf-0x0;var _0x33328a=_0x5d58[_0x1967bf];return _0x33328a;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x85d5('0x0'))(_0x85d5('0x1'));var ami=require('../ami');config[_0x85d5('0x2')]=_[_0x85d5('0x3')](config['redis'],{'host':_0x85d5('0x4'),'port':0x18eb});var io=require(_0x85d5('0x5'))(new Redis(config[_0x85d5('0x2')]));function VoiceDialReport(_0x46e7b4){this['channels']=_0x46e7b4[_0x85d5('0x6')];this[_0x85d5('0x7')]=_0x46e7b4['outbound'];this[_0x85d5('0x8')]={};this['variables']={};ami['on'](_0x85d5('0x9'),this[_0x85d5('0xa')][_0x85d5('0xb')](this));ami['on']('dialend',this['syncDialEnd']['bind'](this));ami['on'](_0x85d5('0xc'),this[_0x85d5('0xd')][_0x85d5('0xb')](this));ami['on'](_0x85d5('0xe'),this[_0x85d5('0xf')][_0x85d5('0xb')](this));}VoiceDialReport[_0x85d5('0x10')]['isNotNull']=function(_0x4bbf2a){return _0x4bbf2a!==null&&!_['isUndefined'](_0x4bbf2a);};VoiceDialReport[_0x85d5('0x10')][_0x85d5('0x11')]=function(_0x339d4f,_0x1704f0,_0x18a20c){io['to'](_0x339d4f)[_0x85d5('0x11')](_0x1704f0,_0x18a20c);};VoiceDialReport[_0x85d5('0x10')]['syncDialBegin']=function(_0x18e977){try{if(this[_0x85d5('0x12')](_0x18e977)){logger[_0x85d5('0x13')](_0x85d5('0x14'),_0x18e977[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x18e977,{'showHidden':![],'depth':null}));if(this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]){_[_0x85d5('0x18')](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],{'starttime':moment()[_0x85d5('0x19')](_0x85d5('0x1a')),'lastevent':_0x85d5('0x1b'),'interface':_0x18e977[_0x85d5('0x1c')][_0x85d5('0x1d')](0x0,_0x18e977[_0x85d5('0x1c')][_0x85d5('0x1e')]('-')),'membername':_0x18e977['channel'][_0x85d5('0x1d')](_0x18e977[_0x85d5('0x1c')]['lastIndexOf']('/')+0x1,_0x18e977[_0x85d5('0x1c')][_0x85d5('0x1e')]('-'))},_['omit'](_0x18e977,['event',_0x85d5('0x1f')]));logger['info'](_0x85d5('0x20'),_0x18e977['uniqueid'],this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]['membername'],this['channels'][_0x18e977['uniqueid']]['interface']);logger[_0x85d5('0x13')](_0x85d5('0x21'),_0x18e977[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x18e977[_0x85d5('0x15')]])_['merge'](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],this[_0x85d5('0x8')][_0x18e977['uniqueid']]);this[_0x85d5('0x11')](_0x85d5('0x22'),_0x85d5('0x23'),this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]);logger['debug'](_0x85d5('0x24'),_0x18e977[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]);}}}catch(_0x2d1157){logger[_0x85d5('0x25')](_0x85d5('0x26'),_0x18e977['uniqueid'],util[_0x85d5('0x16')](_0x2d1157,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x85d5('0x10')]['syncDialEnd']=function(_0x4ea24e){try{if(this[_0x85d5('0x12')](_0x4ea24e)){logger[_0x85d5('0x13')]('[%s][voiceDialReport][dialend]\x20event:',_0x4ea24e[_0x85d5('0x15')],util['inspect'](_0x4ea24e,{'showHidden':![],'depth':null}));if(this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]]){this['channels'][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x27')]=_0x4ea24e[_0x85d5('0x27')];if(_0x4ea24e[_0x85d5('0x27')]==='ANSWER'){this['channels'][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x28')]=_0x4ea24e[_0x85d5('0x28')];this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x29')]=_0x4ea24e[_0x85d5('0x29')];this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]]['answertime']=moment()['format'](_0x85d5('0x1a'));this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x2a')]=_0x85d5('0x2b');logger[_0x85d5('0x2c')](_0x85d5('0x2d'),_0x4ea24e[_0x85d5('0x15')],_0x4ea24e['channel'][_0x85d5('0x1d')](_0x4ea24e[_0x85d5('0x1c')][_0x85d5('0x1e')]('/')+0x1,_0x4ea24e[_0x85d5('0x1c')]['lastIndexOf']('-')));logger[_0x85d5('0x13')](_0x85d5('0x2e'),_0x4ea24e[_0x85d5('0x15')],util[_0x85d5('0x16')](this['channels'][_0x4ea24e[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this[_0x85d5('0x17')][_0x4ea24e['uniqueid']]);}logger[_0x85d5('0x13')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4ea24e['uniqueid'],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')](_0x85d5('0x22'),'voice_outbound_channel:save',this['channels'][_0x4ea24e[_0x85d5('0x15')]]);}}}catch(_0x173717){logger[_0x85d5('0x25')](_0x85d5('0x2f'),_0x4ea24e[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x173717,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x55cf7b){try{if(this['isNotNull'](_0x55cf7b)){logger[_0x85d5('0x13')](_0x85d5('0x30'),_0x55cf7b[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x55cf7b,{'showHidden':![],'depth':null}));this[_0x85d5('0x31')](_0x55cf7b['uniqueid'],_['keys'](_0x55cf7b[_0x85d5('0x32')])[0x0],_0x55cf7b[_0x85d5('0x33')]);if(this[_0x85d5('0x12')](_0x55cf7b[_0x85d5('0x32')])&&this[_0x85d5('0x12')](_0x55cf7b[_0x85d5('0x32')][_0x85d5('0x34')])){if(_[_0x85d5('0x35')](this[_0x85d5('0x17')][_0x55cf7b[_0x85d5('0x15')]])){this[_0x85d5('0x17')][_0x55cf7b[_0x85d5('0x15')]]={'routeId':_0x55cf7b[_0x85d5('0x33')],'variables':this[_0x85d5('0x36')][_0x55cf7b[_0x85d5('0x15')]],'motionChannel':_0x85d5('0x37')};logger[_0x85d5('0x2c')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x55cf7b['uniqueid'],_0x55cf7b[_0x85d5('0x32')][_0x85d5('0x34')],_[_0x85d5('0x38')](_0x55cf7b[_0x85d5('0x32')])[0x0],_0x55cf7b[_0x85d5('0x33')]);logger[_0x85d5('0x13')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x55cf7b[_0x85d5('0x15')],util['inspect'](this['channels'][_0x55cf7b[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')](_0x85d5('0x22'),_0x85d5('0x23'),this[_0x85d5('0x17')][_0x55cf7b['uniqueid']]);}}}}catch(_0x26adc5){logger['error'](_0x85d5('0x39'),_0x55cf7b[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x26adc5,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['addVariable']=function(_0x4de88b,_0x13bbfa,_0x925f98){var _0x2d4fe4=['rtpaudioqos','rtpaudioqosbridged',_0x85d5('0x3a'),_0x85d5('0x3b'),_0x85d5('0x3c'),_0x85d5('0x3d'),'rtpaudioqosrtt',_0x85d5('0x3e'),_0x85d5('0x3f'),_0x85d5('0x40'),_0x85d5('0x41'),_0x85d5('0x42'),_0x85d5('0x43'),_0x85d5('0x44'),_0x85d5('0x45'),_0x85d5('0x46'),_0x85d5('0x47'),_0x85d5('0x48'),_0x85d5('0x49')];if(!_[_0x85d5('0x4a')](_0x13bbfa)&&!_[_0x85d5('0x4b')](_0x2d4fe4,_0x13bbfa)){if(_[_0x85d5('0x35')](this['variables'][_0x4de88b])){this[_0x85d5('0x36')][_0x4de88b]={};}this[_0x85d5('0x36')][_0x4de88b][_0x13bbfa]=_0x925f98;}};VoiceDialReport[_0x85d5('0x10')][_0x85d5('0xf')]=function(_0x548b37){try{if(this[_0x85d5('0x12')](_0x548b37)){logger['debug'](_0x85d5('0x4c'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x548b37,{'showHidden':![],'depth':null}));if(this[_0x85d5('0x17')][_0x548b37['uniqueid']]){logger[_0x85d5('0x2c')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x548b37['uniqueid'],_0x548b37['cause-txt']);this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4d')]=moment()[_0x85d5('0x19')](_0x85d5('0x1a'));this['channels'][_0x548b37['uniqueid']][_0x85d5('0x4e')]=moment(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4d')])['diff'](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4f')],'seconds');this['channels'][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x2a')]=_0x85d5('0x50');this['outbound'][_0x85d5('0x51')]+=0x1;if(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x52')]){this['outbound'][_0x85d5('0x53')]+=0x1;this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]]['holdtime']=moment(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x52')])['diff'](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]]['starttime'],_0x85d5('0x54'));this['channels'][_0x548b37[_0x85d5('0x15')]]['billableseconds']=moment(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4d')])[_0x85d5('0x55')](this['channels'][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x52')],_0x85d5('0x54'));this[_0x85d5('0x7')][_0x85d5('0x56')]+=this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x57')]||0x0;this['outbound']['sumBillable']+=this[_0x85d5('0x17')][_0x548b37['uniqueid']][_0x85d5('0x58')];}this[_0x85d5('0x7')]['sumDuration']+=this['channels'][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4e')];logger[_0x85d5('0x13')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this[_0x85d5('0x17')][_0x548b37['uniqueid']]);logger['debug'](_0x85d5('0x59'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this['channels'][_0x548b37['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x85d5('0x11')](_0x85d5('0x5a'),this[_0x85d5('0x17')][_0x548b37['uniqueid']]);logger[_0x85d5('0x13')](_0x85d5('0x5b'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')](_0x85d5('0x22'),'voice_outbound:save',this['outbound']);logger[_0x85d5('0x2c')](_0x85d5('0x5c'),JSON[_0x85d5('0x5d')](this['channels'][_0x548b37[_0x85d5('0x15')]]));logger[_0x85d5('0x13')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')]('voice:outbound',_0x85d5('0x5e'),this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]]);delete this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]];}else if(this['channels'][_0x548b37[_0x85d5('0x5f')]]){this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x5f')]][_0x85d5('0x15')]=this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x5f')]][_0x85d5('0x60')];}if(this[_0x85d5('0x36')][_0x548b37[_0x85d5('0x15')]]){delete this[_0x85d5('0x36')][_0x548b37['uniqueid']];}}}catch(_0x4181be){logger[_0x85d5('0x25')](_0x85d5('0x61'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x4181be,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x85d5('0x10')]['syncNewExten']=function(_0x3da8b0){try{if(this['isNotNull'](_0x3da8b0)){logger['debug'](_0x85d5('0x62'),_0x3da8b0[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x3da8b0,{'showHidden':![],'depth':null}));if(_0x3da8b0[_0x85d5('0x63')][_0x85d5('0x64')]()===_0x85d5('0x65')){_0x3da8b0[_0x85d5('0x66')]=(_0x3da8b0[_0x85d5('0x67')]||_0x3da8b0[_0x85d5('0x66')])['toLowerCase']();if(_[_0x85d5('0x68')](_0x3da8b0[_0x85d5('0x66')],_0x85d5('0x69'))){if(_[_0x85d5('0x35')](this[_0x85d5('0x8')][_0x3da8b0[_0x85d5('0x15')]]))this[_0x85d5('0x8')][_0x3da8b0[_0x85d5('0x15')]]={};logger[_0x85d5('0x2c')](_0x85d5('0x6a'),_0x3da8b0[_0x85d5('0x15')],_0x3da8b0[_0x85d5('0x63')],_0x3da8b0[_0x85d5('0x66')]);var _0x4440de=_0x3da8b0[_0x85d5('0x66')]['split']('=');var _0x52243a=_0x4440de[0x0][_0x85d5('0x6b')](/cdr\((.*)\)/);if(_0x52243a)this['applications'][_0x3da8b0[_0x85d5('0x15')]][_0x52243a[0x1]]=_0x4440de[0x1];}}}}catch(_0xa18a5e){logger[_0x85d5('0x25')](_0x85d5('0x6c'),_0x3da8b0[_0x85d5('0x15')],util[_0x85d5('0x16')](_0xa18a5e,{'showHidden':![],'depth':null}));}};module[_0x85d5('0x6d')]=VoiceDialReport;
\ No newline at end of file
index 2fce5ee..c05b474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3508=['merge','pick','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','transfer','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[%s][voiceQueueReport][varset]','addVariable','keys','variable','value','CONTINUE','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberinterface','memberpenalty','memberrealtime','includes','handleHangup','abandoned','diff','queuecallerjoinAt','length','sumDuration','milliseconds','total','answered','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','sumHoldTime','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','COMPLETEDBYAGENT','syncHangup','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','transferexten','origtransfereruniqueid','origtransfererexten','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','application','set','applicationdata','appdata','CDR(routeAlias)','toLowerCase','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','queueChannels','voiceQueues','campaigns','summary','variables','bind','queuesummarycomplete','syncQueueSummaryComplete','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','unlockRR','clearZombieChannels','channels','switch','isNil','Action','channel','catch','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','error','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','queue','voice_queue_channel:save','debug','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','inbound','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','name','voice_queue:save','isNotNull','isUndefined','queues','loopQueueSummary','isRunning','queuesummary','then','queuestatus','actionid','[voiceQueueReport][queuesummary]','createQueueSummaryReport','summaryEvent','createReport','realtime','handleInboundQueueSummaryReport','compareToInboundQueue','assign','emitInboundVoiceQueueSummary','type','outbound','custom:queuesummary','statusRequests','completeEvent','info','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s'];(function(_0x392dc2,_0x47c3f3){var _0x14150f=function(_0x9f305a){while(--_0x9f305a){_0x392dc2['push'](_0x392dc2['shift']());}};_0x14150f(++_0x47c3f3);}(_0x3508,0x167));var _0x8350=function(_0x136b92,_0x113b9d){_0x136b92=_0x136b92-0x0;var _0x67cf46=_0x3508[_0x136b92];return _0x67cf46;};'use strict';var _=require(_0x8350('0x0'));var moment=require(_0x8350('0x1'));var util=require('util');var Redis=require(_0x8350('0x2'));var config=require(_0x8350('0x3'));var logger=require(_0x8350('0x4'))(_0x8350('0x5'));var ami=require(_0x8350('0x6'));var QueueReport=require(_0x8350('0x7'));var VoiceQueueSummary=require(_0x8350('0x8'));config[_0x8350('0x9')]=_[_0x8350('0xa')](config[_0x8350('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x8350('0xb'))(new Redis(config[_0x8350('0x9')]));var Sequence=function(){};Sequence[_0x8350('0xc')][_0x8350('0xd')]=function(_0x192f57){this[_0x8350('0xe')]=this[_0x8350('0xe')]?this[_0x8350('0xe')][_0x8350('0xf')](_0x192f57):_0x192f57();};function VoiceQueueReport(_0x5cf5d9){this[_0x8350('0x10')]=new Sequence();this[_0x8350('0x11')]={};this['realtime']=_0x5cf5d9;this[_0x8350('0x12')]=_0x5cf5d9['agents'];this['channels']=_0x5cf5d9[_0x8350('0x13')];this[_0x8350('0x14')]=_0x5cf5d9['voiceQueues'];this[_0x8350('0x15')]=_0x5cf5d9[_0x8350('0x15')];this[_0x8350('0x16')]=initializeSummary();this[_0x8350('0x17')]={};ami['on']('queuesummary',this['syncQueueSummary'][_0x8350('0x18')](this));ami['on'](_0x8350('0x19'),this[_0x8350('0x1a')][_0x8350('0x18')](this));ami['on'](_0x8350('0x1b'),this[_0x8350('0x1c')]['bind'](this));ami['on'](_0x8350('0x1d'),this[_0x8350('0x1e')][_0x8350('0x18')](this));ami['on'](_0x8350('0x1f'),this[_0x8350('0x20')][_0x8350('0x18')](this));ami['on'](_0x8350('0x21'),this[_0x8350('0x22')][_0x8350('0x18')](this));ami['on'](_0x8350('0x23'),this[_0x8350('0x24')][_0x8350('0x18')](this));ami['on'](_0x8350('0x25'),this[_0x8350('0x26')][_0x8350('0x18')](this));ami['on'](_0x8350('0x27'),this['syncAgentConnect'][_0x8350('0x18')](this));ami['on'](_0x8350('0x28'),this[_0x8350('0x29')][_0x8350('0x18')](this));ami['on'](_0x8350('0x2a'),this['syncHangup'][_0x8350('0x18')](this));ami['on'](_0x8350('0x2b'),this[_0x8350('0x2c')][_0x8350('0x18')](this));ami['on'](_0x8350('0x2d'),this[_0x8350('0x2e')][_0x8350('0x18')](this));ami['on'](_0x8350('0x2f'),this[_0x8350('0x30')][_0x8350('0x18')](this));ami['on'](_0x8350('0x31'),this[_0x8350('0x32')][_0x8350('0x18')](this));ami['on'](_0x8350('0x33'),this['syncBlindTransfer'][_0x8350('0x18')](this));this['loopQueueSummary']();this[_0x8350('0x34')]();}function clearChannels(_0x1c4f5a){if(!_['isEmpty'](_0x1c4f5a)){for(var _0x1f0ec8 in _0x1c4f5a){if(_0x1c4f5a[_0x8350('0x35')](_0x1f0ec8)){delete _0x1c4f5a[_0x1f0ec8];}}}}function clearCampaigns(_0x273e57){if(!_[_0x8350('0x36')](_0x273e57)){for(var _0x2f87d0 in _0x273e57){if(_0x273e57[_0x8350('0x35')](_0x2f87d0)){_0x273e57[_0x2f87d0][_0x8350('0x37')]=0x0;}}}}function clearVoiceQueues(_0x4d2293){if(!_['isEmpty'](_0x4d2293)){for(var _0x8a7a17 in _0x4d2293){if(_0x4d2293['hasOwnProperty'](_0x8a7a17)){_0x4d2293[_0x8a7a17]['originated']=0x0;_0x4d2293[_0x8a7a17][_0x8350('0x38')]=0x0;_0x4d2293[_0x8a7a17][_0x8350('0x39')]=0x0;_0x4d2293[_0x8a7a17]['waiting']=0x0;_0x4d2293[_0x8a7a17]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x55f0c3){if(!_[_0x8350('0x36')](_0x55f0c3)){for(var _0x4957d2 in _0x55f0c3){if(_0x55f0c3[_0x8350('0x35')](_0x4957d2)){_0x55f0c3[_0x4957d2][_0x8350('0x3a')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}VoiceQueueReport['prototype'][_0x8350('0x3b')]=function(){var _0x37bf47=this;for(var _0x4627a0 in this[_0x8350('0x3c')]){if(this[_0x8350('0x3c')][_0x8350('0x35')](_0x4627a0)&&!this['channels'][_0x4627a0][_0x8350('0x3d')]){this['sequence'][_0x8350('0xd')](function(){if(!_[_0x8350('0x3e')](_0x37bf47[_0x8350('0x3c')][_0x4627a0])){return ami[_0x8350('0x3f')]({'action':'status','channel':_0x37bf47[_0x8350('0x3c')][_0x4627a0][_0x8350('0x40')]})[_0x8350('0x41')](function(_0x26bc28){if(_0x26bc28['message']===_0x8350('0x42')){setTimeout(function(){if(_0x37bf47[_0x8350('0x3c')][_0x4627a0]){delete _0x37bf47[_0x8350('0x3c')][_0x4627a0];logger['error'](_0x8350('0x43'),_0x4627a0,util[_0x8350('0x44')](_0x26bc28,{'showHidden':![],'depth':null}));}if(_0x37bf47[_0x8350('0x11')][_0x4627a0]){delete _0x37bf47['queueReports'][_0x4627a0];logger[_0x8350('0x45')]('[%s][voiceQueueReport][checkQueueReport]',_0x4627a0,util[_0x8350('0x44')](_0x26bc28,{'showHidden':![],'depth':null}));}if(_0x37bf47['variables'][_0x4627a0]){delete _0x37bf47[_0x8350('0x17')][_0x4627a0];logger[_0x8350('0x45')]('[%s][voiceQueueReport][checkVariables]',_0x4627a0,util['inspect'](_0x26bc28,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x2c')]=function(){logger[_0x8350('0x45')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x8350('0x3c')]);this[_0x8350('0x46')](this[_0x8350('0x11')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x8350('0x14')]);clearCampaigns(this[_0x8350('0x15')]);this[_0x8350('0x16')]=initializeSummary();};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x46')]=function(_0x5482b5){var _0x91f164=this;if(!_[_0x8350('0x36')](_0x5482b5)){for(var _0x431b8d in _0x5482b5){if(_0x5482b5[_0x8350('0x35')](_0x431b8d)){_0x91f164[_0x8350('0x47')](_0x5482b5[_0x431b8d],_0x8350('0x48'));delete _0x5482b5[_0x431b8d];}}}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x49')]=function(_0x39a904,_0x8b8e0e,_0x25fc9c){io['to'](_0x39a904)['emit'](_0x8b8e0e,_0x25fc9c);};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x4a')]=function(_0x4bc889,_0x45a185){logger['debug'](_0x8350('0x4b')+_0x45a185+_0x8350('0x4c'),_0x4bc889[_0x8350('0x4d')],util[_0x8350('0x44')](_0x4bc889,{'showHidden':![],'depth':null}));this[_0x8350('0x49')](util[_0x8350('0x4e')](_0x8350('0x4f'),_0x4bc889[_0x8350('0x50')]),_0x8350('0x51'),_0x4bc889);io[_0x8350('0x49')]('voice_queue_presence:save',_0x4bc889);};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x47')]=function(_0x3feebc,_0x344901){logger[_0x8350('0x52')](_0x8350('0x4b')+_0x344901+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x3feebc[_0x8350('0x4d')],util['inspect'](_0x3feebc,{'showHidden':![],'depth':null}));if(_0x3feebc[_0x8350('0x53')]===_0x8350('0x54')){return;}this['emit'](util[_0x8350('0x4e')]('voice:queue:%s',_0x3feebc[_0x8350('0x50')]),_0x8350('0x55'),_0x3feebc);io[_0x8350('0x49')]('voice_queue_presence:remove',_0x3feebc);};VoiceQueueReport[_0x8350('0xc')]['emitInboundVoiceQueueSummary']=function(_0xebb9e9){if(_0xebb9e9['type']===_0x8350('0x56')){logger[_0x8350('0x52')](_0x8350('0x57'),util['inspect'](_0xebb9e9,{'showHidden':![],'depth':null}));this['emit'](util[_0x8350('0x4e')](_0x8350('0x4f'),_0xebb9e9[_0x8350('0x58')]),_0x8350('0x59'),_0xebb9e9);}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x5a')]=function(_0x45bec5){return _0x45bec5!==null&&!_[_0x8350('0x5b')](_0x45bec5);};VoiceQueueReport['prototype'][_0x8350('0x34')]=function(){var _0xb52b0b=this;setInterval(function(){_0xb52b0b[_0x8350('0x3b')]();ami[_0x8350('0x3f')]({'action':_0x8350('0x5c')})[_0x8350('0x41')](function(_0x32b7a6){logger[_0x8350('0x45')]('[voiceQueueReport][queues]',util[_0x8350('0x44')](_0x32b7a6,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x5d')]=function(){var _0x43b0fb=this;setInterval(function(){if(!_0x43b0fb[_0x8350('0x16')][_0x8350('0x5e')]){return ami['Action']({'action':_0x8350('0x5f')})[_0x8350('0x60')](function(_0x313305){_0x43b0fb['summary']['id']=_0x313305['actionid'];_0x43b0fb['summary'][_0x8350('0x5e')]=!![];_0x43b0fb[_0x8350('0x16')][_0x8350('0x61')][_0x313305[_0x8350('0x62')]]={};})[_0x8350('0x41')](function(_0x1e15a5){logger[_0x8350('0x45')](_0x8350('0x63'),util[_0x8350('0x44')](_0x1e15a5,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x64')]=function(_0x3facc6,_0x32ded1){var _0x3d6d1c=this['summary'][_0x8350('0x5c')][_0x3facc6['name']][_0x8350('0x65')];var _0x2b25c6=new VoiceQueueSummary(_0x3facc6);return _0x2b25c6[_0x8350('0x66')](_0x32ded1['agents'],this[_0x8350('0x12')],_0x3d6d1c,this[_0x8350('0x67')][_0x8350('0x3c')]);};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x68')]=function(_0x56cc4d,_0xf7900f){var _0x320c37=this[_0x8350('0x64')](_0x56cc4d,_0xf7900f);var _0x50587a=![];_0x50587a=_0x320c37[_0x8350('0x69')](_0x56cc4d);if(_0x50587a){Object[_0x8350('0x6a')](_0x56cc4d,_0x320c37);this[_0x8350('0x67')][_0x8350('0x14')][_0x56cc4d[_0x8350('0x58')]]=_0x56cc4d;this[_0x8350('0x6b')](_0x320c37);}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x1e')]=function(_0x1f37bb){var _0x519b78=null;var _0xebc6a2=this[_0x8350('0x16')]['id'];if(this[_0x8350('0x16')]['queuestatus'][_0xebc6a2]){_0x519b78=this[_0x8350('0x16')][_0x8350('0x61')][_0xebc6a2][_0x1f37bb[_0x8350('0x62')]];}if(!_0x519b78){this[_0x8350('0x16')]=initializeSummary();return;}var _0x2f4b66=this[_0x8350('0x14')][_0x519b78[_0x8350('0x50')]];if(_0x2f4b66[_0x8350('0x6c')]===_0x8350('0x56')){this[_0x8350('0x68')](_0x2f4b66,_0x519b78);}else if(_0x2f4b66['type']===_0x8350('0x6d')){var _0x24f55a=this[_0x8350('0x64')](_0x2f4b66,_0x519b78);ami[_0x8350('0x49')](_0x8350('0x6e'),_0x24f55a);}this[_0x8350('0x16')]['statusRequests']-=0x1;var _0x5dfa80=this[_0x8350('0x16')][_0x8350('0x6f')]>0x0?!![]:![];if(!_0x5dfa80){return this[_0x8350('0x1a')](this[_0x8350('0x16')][_0x8350('0x70')]);}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x1c')]=function(_0x3caea1){var _0x977ac9=this[_0x8350('0x16')]['id'];if(this[_0x8350('0x16')][_0x8350('0x61')][_0x977ac9]&&this[_0x8350('0x16')][_0x8350('0x61')][_0x977ac9][_0x3caea1['actionid']]){this['summary'][_0x8350('0x61')][_0x977ac9][_0x3caea1['actionid']]['agents']['push'](_0x3caea1);}};VoiceQueueReport[_0x8350('0xc')]['syncQueueSummary']=function(_0x6a9d38){var _0x4a02ee=this;try{if(this['isNotNull'](_0x6a9d38)&&this[_0x8350('0x5a')](_0x6a9d38[_0x8350('0x50')])){logger[_0x8350('0x52')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x6a9d38,{'showHidden':![],'depth':null}));var _0x46216c=this['voiceQueues'][_0x6a9d38[_0x8350('0x50')]];if(_0x46216c){logger[_0x8350('0x71')](_0x8350('0x72'),_0x46216c['name']);this['summary'][_0x8350('0x5c')][_0x46216c[_0x8350('0x58')]]={'summaryEvent':_0x6a9d38};this[_0x8350('0x16')][_0x8350('0x6f')]+=0x1;return ami[_0x8350('0x3f')]({'action':_0x8350('0x61'),'queue':_0x46216c[_0x8350('0x58')]})[_0x8350('0x60')](function(_0x4c5176){if(!_0x4a02ee['summary'][_0x8350('0x61')][_0x6a9d38[_0x8350('0x62')]]){_0x4a02ee[_0x8350('0x16')]['queuestatus'][_0x6a9d38['actionid']]={};}_0x4a02ee[_0x8350('0x16')][_0x8350('0x61')][_0x6a9d38[_0x8350('0x62')]][_0x4c5176[_0x8350('0x62')]]={'queue':_0x46216c[_0x8350('0x58')],'agents':[]};})[_0x8350('0x41')](function(_0xc57e11){throw _0xc57e11;});}}}catch(_0xf78530){logger[_0x8350('0x45')](_0x8350('0x63'),util[_0x8350('0x44')](_0xf78530,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x1a')]=function(_0x119243){if(this['summary'][_0x8350('0x6f')]>0x0){this[_0x8350('0x16')]['completeEvent']=_0x119243;return;}logger[_0x8350('0x52')](_0x8350('0x73'),util[_0x8350('0x44')](_0x119243,{'showHidden':![],'depth':null}));this[_0x8350('0x16')]=initializeSummary();ami[_0x8350('0x49')](_0x8350('0x74'),{});};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x20')]=function(_0x489497){try{if(this[_0x8350('0x5a')](_0x489497)){logger[_0x8350('0x52')](_0x8350('0x75'),_0x489497[_0x8350('0x4d')],util[_0x8350('0x44')](_0x489497,{'showHidden':![],'depth':null}));if(_[_0x8350('0x5b')](this[_0x8350('0x11')][_0x489497['uniqueid']])){this['queueReports'][_0x489497[_0x8350('0x4d')]]=[];}if(_[_0x8350('0x5b')](this[_0x8350('0x3c')][_0x489497['uniqueid']])){this[_0x8350('0x3c')][_0x489497['uniqueid']]={};}var _0x493fc9=new QueueReport();_0x493fc9[_0x8350('0x50')]=_0x489497['queue'];_0x493fc9[_0x8350('0x6c')]=this[_0x8350('0x14')][_0x493fc9[_0x8350('0x50')]]&&this[_0x8350('0x14')][_0x493fc9[_0x8350('0x50')]]['type']?this[_0x8350('0x14')][_0x493fc9[_0x8350('0x50')]][_0x8350('0x6c')]||_0x8350('0x56'):'inbound';_0x493fc9['queuecallerjoinAt']=moment()[_0x8350('0x4e')](_0x8350('0x76'));_0x493fc9[_0x8350('0x77')]=_0x489497[_0x8350('0x77')];_0x493fc9[_0x8350('0x78')]=_0x489497[_0x8350('0x78')];_0x493fc9[_0x8350('0x4d')]=_0x489497['uniqueid'];_0x493fc9[_0x8350('0x79')]=this['channels'][_0x489497[_0x8350('0x4d')]][_0x8350('0x79')];logger[_0x8350('0x71')](_0x8350('0x7a'),_0x493fc9[_0x8350('0x50')],_0x493fc9[_0x8350('0x6c')]);_[_0x8350('0x7b')](_0x493fc9,_[_0x8350('0x7c')](_0x489497,_['keys'](_0x493fc9)));this[_0x8350('0x11')][_0x489497[_0x8350('0x4d')]]['push'](_0x493fc9);this[_0x8350('0x3c')][_0x489497[_0x8350('0x4d')]]=_0x493fc9;this[_0x8350('0x4a')](_0x493fc9,'queuecallerjoin');}}catch(_0x2868e2){logger['error'](_0x8350('0x75'),_0x489497['uniqueid'],util[_0x8350('0x44')](_0x2868e2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8350('0x22')]=function(_0x215e21){try{if(this[_0x8350('0x5a')](_0x215e21)){logger[_0x8350('0x52')]('[%s][voiceQueueReport][queuecallerabandon]',_0x215e21['uniqueid'],util[_0x8350('0x44')](_0x215e21,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x215e21[_0x8350('0x4d')]]){var _0x4df58d=_['last'](this['queueReports'][_0x215e21[_0x8350('0x4d')]]);_0x4df58d['queuecallercomplete']=![];_0x4df58d[_0x8350('0x7d')]=null;_0x4df58d['holdtime']=_0x215e21[_0x8350('0x7e')];_0x4df58d[_0x8350('0x7f')]=_0x215e21['originalposition'];_0x4df58d['queuecallerabandon']=!![];_0x4df58d[_0x8350('0x80')]=moment()[_0x8350('0x4e')](_0x8350('0x76'));_0x4df58d['queuecallerexitreason']=_0x8350('0x81');_0x4df58d['lastAssignedTo']=null;logger[_0x8350('0x71')](_0x8350('0x82'),_0x4df58d[_0x8350('0x50')],_0x4df58d[_0x8350('0x6c')]);this[_0x8350('0x3c')][_0x215e21[_0x8350('0x4d')]]=_0x4df58d;this['emitVoiceQueueChannelRemove'](_0x4df58d,_0x8350('0x21'));}}}catch(_0x3e1306){logger['error'](_0x8350('0x83'),_0x215e21['uniqueid'],util[_0x8350('0x44')](_0x3e1306,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x24')]=function(_0x353bc7){try{if(this[_0x8350('0x5a')](_0x353bc7)){logger[_0x8350('0x52')](_0x8350('0x84'),_0x353bc7['uniqueid'],util[_0x8350('0x44')](_0x353bc7,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x353bc7[_0x8350('0x4d')]]){var _0x5d9e43=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x353bc7[_0x8350('0x4d')]]);_0x5d9e43[_0x8350('0x86')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5d9e43[_0x8350('0x87')]=_0x353bc7[_0x8350('0x87')];_0x5d9e43[_0x8350('0x88')]=_0x353bc7['connectedlinename'];logger[_0x8350('0x71')](_0x8350('0x89'),_0x5d9e43[_0x8350('0x50')],_0x5d9e43[_0x8350('0x6c')],_0x353bc7[_0x8350('0x87')],_0x353bc7[_0x8350('0x88')]);this['channels'][_0x353bc7['uniqueid']]=_0x5d9e43;this[_0x8350('0x4a')](_0x5d9e43,_0x8350('0x23'));}}}catch(_0x4e4f39){logger['error'](_0x8350('0x84'),_0x353bc7[_0x8350('0x4d')],util[_0x8350('0x44')](_0x4e4f39,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x58ba6e){try{if(this[_0x8350('0x5a')](_0x58ba6e)){logger[_0x8350('0x52')](_0x8350('0x8a'),_0x58ba6e[_0x8350('0x4d')],util['inspect'](_0x58ba6e,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x58ba6e[_0x8350('0x4d')]]){var _0x454aa0=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x58ba6e[_0x8350('0x4d')]]);_0x454aa0[_0x8350('0x8b')]=!![];_0x454aa0[_0x8350('0x53')]='COMPLETEDBYAGENT';logger[_0x8350('0x71')](_0x8350('0x8c'),_0x454aa0[_0x8350('0x50')],_0x454aa0[_0x8350('0x6c')]);}}}catch(_0x53fb7f){logger[_0x8350('0x45')](_0x8350('0x8a'),_0x58ba6e['uniqueid'],util[_0x8350('0x44')](_0x53fb7f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentComplete']=function(_0x29f05c){try{if(this[_0x8350('0x5a')](_0x29f05c)){logger[_0x8350('0x52')](_0x8350('0x8d'),_0x29f05c[_0x8350('0x4d')],util[_0x8350('0x44')](_0x29f05c,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x29f05c[_0x8350('0x4d')]]){var _0x5ebf7a=_[_0x8350('0x85')](this['queueReports'][_0x29f05c['uniqueid']]);_0x5ebf7a[_0x8350('0x21')]=![];_0x5ebf7a[_0x8350('0x80')]=null;_0x5ebf7a[_0x8350('0x8e')]=!![];_0x5ebf7a[_0x8350('0x8f')]=_0x29f05c[_0x8350('0x90')];_0x5ebf7a[_0x8350('0x7e')]=_0x29f05c[_0x8350('0x7e')];_0x5ebf7a['queuecallercomplete']=!![];_0x5ebf7a[_0x8350('0x91')]=![];_0x5ebf7a[_0x8350('0x92')]=null;if(!_0x5ebf7a[_0x8350('0x93')]){if(_0x29f05c[_0x8350('0x94')]==_0x8350('0x93')){_0x5ebf7a['queuecallerexitreason']='COMPLETED';logger[_0x8350('0x71')](_0x8350('0x95'),_0x5ebf7a[_0x8350('0x50')],_0x5ebf7a[_0x8350('0x6c')]);}else{if(_[_0x8350('0x96')](_0x29f05c[_0x8350('0x40')]['toLowerCase'](),_0x8350('0x97'))){if(this['queueReports'][_0x29f05c['linkedid']]){var _0x474bf0=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x29f05c[_0x8350('0x98')]]);_0x474bf0[_0x8350('0x8b')]=![];_0x474bf0[_0x8350('0x91')]=!![];_0x474bf0[_0x8350('0x92')]=moment(_0x5ebf7a['queuecallerjoinAt'])[_0x8350('0x99')](_0x29f05c[_0x8350('0x7e')],_0x8350('0x9a'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x474bf0['queuecallerexitreason']=_0x8350('0x9b');_0x474bf0[_0x8350('0x93')]=!![];_0x474bf0[_0x8350('0x9c')]=_0x8350('0x9d');_0x474bf0['transferexten']=_0x29f05c[_0x8350('0x9e')];_0x474bf0[_0x8350('0x9f')]=_0x29f05c['uniqueid'];logger[_0x8350('0x71')](_0x8350('0xa0'),_0x474bf0[_0x8350('0x50')],_0x474bf0[_0x8350('0x6c')]);var _0x392ae7=this[_0x8350('0x11')][_0x29f05c[_0x8350('0x98')]];this[_0x8350('0x11')][_0x29f05c['linkedid']]=this[_0x8350('0x11')][_0x29f05c['uniqueid']];this[_0x8350('0x11')][_0x29f05c[_0x8350('0x4d')]]=_0x392ae7;}}else{_0x5ebf7a[_0x8350('0x53')]=_0x8350('0xa1')+_0x29f05c[_0x8350('0x94')][_0x8350('0xa2')]();logger[_0x8350('0x71')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x5ebf7a[_0x8350('0x50')],_0x5ebf7a[_0x8350('0x6c')],_0x5ebf7a[_0x8350('0x53')]);}}}this['channels'][_0x29f05c[_0x8350('0x4d')]]=_0x5ebf7a;}}}catch(_0x17bb2d){logger[_0x8350('0x45')]('[%s][voiceQueueReport][agentcomplete]',_0x29f05c[_0x8350('0x4d')],util[_0x8350('0x44')](_0x17bb2d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x3d42fc){try{if(this['isNotNull'](_0x3d42fc)){logger['debug'](_0x8350('0xa3'),_0x3d42fc[_0x8350('0x4d')],util[_0x8350('0x44')](_0x3d42fc,{'showHidden':![],'depth':null}));this[_0x8350('0xa4')](_0x3d42fc[_0x8350('0x4d')],_[_0x8350('0xa5')](_0x3d42fc[_0x8350('0xa6')])[0x0],_0x3d42fc[_0x8350('0xa7')]);if(this[_0x8350('0x11')][_0x3d42fc[_0x8350('0x4d')]]){var _0x516b55=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x3d42fc[_0x8350('0x4d')]]);if(_0x516b55){if(this['isNotNull'](_0x3d42fc[_0x8350('0xa6')])&&this[_0x8350('0x5a')](_0x3d42fc[_0x8350('0xa6')]['queuestatus'])){switch(_0x3d42fc[_0x8350('0xa7')]){case _0x8350('0xa8'):_0x516b55['queuecallerexit']=![];_0x516b55[_0x8350('0x92')]=null;break;case'TIMEOUT':_0x516b55[_0x8350('0xa9')]='timeout';_0x516b55['queuecallerexit']=!![];_0x516b55[_0x8350('0x92')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x516b55[_0x8350('0x86')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger['debug'](_0x8350('0xaa'),_0x3d42fc[_0x8350('0x4d')],util['inspect'](_0x516b55,{'showHidden':![],'depth':null}));ami[_0x8350('0x49')](_0x8350('0xab'),_0x516b55);break;default:_0x516b55[_0x8350('0x91')]=!![];_0x516b55[_0x8350('0x92')]=moment()[_0x8350('0x4e')](_0x8350('0x76'));_0x516b55['queuecallerleaveAt']=moment()[_0x8350('0x4e')](_0x8350('0x76'));}_0x516b55['queuecallerabandon']=![];_0x516b55[_0x8350('0x80')]=null;_0x516b55[_0x8350('0x53')]=_0x3d42fc[_0x8350('0xa7')];this[_0x8350('0x3c')][_0x3d42fc[_0x8350('0x4d')]]=_0x516b55;this[_0x8350('0x47')](_0x516b55,'varset');}else if(this[_0x8350('0x5a')](_0x3d42fc['variable'])&&this[_0x8350('0x5a')](_0x3d42fc[_0x8350('0xa6')]['queueposition'])){if(!_0x516b55[_0x8350('0x21')]){_0x516b55[_0x8350('0x91')]=!![];_0x516b55[_0x8350('0x92')]=moment()['format'](_0x8350('0x76'));_0x516b55['queuecallerexitreason']='EXITWITHKEY';_0x516b55[_0x8350('0x86')]=moment()[_0x8350('0x4e')](_0x8350('0x76'));this[_0x8350('0x3c')][_0x3d42fc['uniqueid']]=_0x516b55;}}logger[_0x8350('0x71')](_0x8350('0xac'),_0x3d42fc[_0x8350('0x4d')],_0x516b55[_0x8350('0x50')],_0x516b55[_0x8350('0x6c')],_['keys'](_0x3d42fc['variable'])[0x0],_0x3d42fc[_0x8350('0xa7')]);_0x516b55[_0x8350('0x17')]=this['variables'][_0x3d42fc[_0x8350('0x4d')]];}}}}catch(_0x32a93f){logger[_0x8350('0x45')](_0x8350('0xa3'),_0x3d42fc['uniqueid'],util[_0x8350('0x44')](_0x32a93f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['addVariable']=function(_0x52b058,_0x46b5fa,_0x1b8a45){var _0x4dbeaf=[_0x8350('0xad'),_0x8350('0xae'),_0x8350('0xaf'),_0x8350('0xb0'),_0x8350('0xb1'),_0x8350('0xb2'),_0x8350('0xb3'),_0x8350('0xb4'),'sipcallid',_0x8350('0xb5'),_0x8350('0xb6'),'bridgepvtcallid',_0x8350('0xb7'),'memberdynamic',_0x8350('0xb8'),'memberlastcall',_0x8350('0x90'),_0x8350('0xb9'),_0x8350('0xba')];if(!_['isNil'](_0x46b5fa)&&!_[_0x8350('0xbb')](_0x4dbeaf,_0x46b5fa)){if(_[_0x8350('0x5b')](this[_0x8350('0x17')][_0x52b058])){this[_0x8350('0x17')][_0x52b058]={};}this[_0x8350('0x17')][_0x52b058][_0x46b5fa]=_0x1b8a45;}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0xbc')]=function(_0x5682f4,_0x1fb9fd,_0xb1f0c){var _0x2431d3={};for(var _0x30951b=0x0;_0x30951b<this[_0x8350('0x11')][_0x5682f4]['length'];_0x30951b+=0x1){_0x2431d3=this[_0x8350('0x11')][_0x5682f4][_0x30951b];if(this[_0x8350('0x14')][_0x2431d3['queue']]){if(_0x2431d3[_0x8350('0x91')]&&_0x2431d3[_0x8350('0x93')]!=!![]){this[_0x8350('0x14')][_0x2431d3[_0x8350('0x50')]]['unmanaged']+=0x1;}if(_0x2431d3[_0x8350('0x21')]){this[_0x8350('0x14')][_0x2431d3[_0x8350('0x50')]][_0x8350('0xbd')]+=0x1;}this[_0x8350('0x14')][_0x2431d3['queue']]['sumHoldTime']+=moment(_0x2431d3[_0x8350('0x86')])[_0x8350('0xbe')](_0x2431d3[_0x8350('0xbf')],'seconds')||0x0;if(_0x30951b===this[_0x8350('0x11')][_0x5682f4][_0x8350('0xc0')]-0x1){this[_0x8350('0x14')][_0x2431d3['queue']][_0x8350('0xc1')]+=moment()[_0x8350('0xc2')](0x0)[_0x8350('0xbe')](_0x2431d3[_0x8350('0xbf')],'seconds');this[_0x8350('0x14')][_0x2431d3[_0x8350('0x50')]][_0x8350('0xc3')]+=0x1;if(_0x2431d3[_0x8350('0x8b')]){this[_0x8350('0x14')][_0x2431d3[_0x8350('0x50')]][_0x8350('0xc4')]+=0x1;this['voiceQueues'][_0x2431d3[_0x8350('0x50')]][_0x8350('0xc5')]+=moment()[_0x8350('0xc2')](0x0)[_0x8350('0xbe')](_0x2431d3['queuecallerleaveAt'],_0x8350('0x9a'));_0x2431d3[_0x8350('0x7d')]=moment()['format'](_0x8350('0x76'));_0x2431d3[_0x8350('0x91')]=![];_0x2431d3[_0x8350('0x92')]=null;}if(_0x2431d3['queuecallerexit']&&_0x2431d3[_0x8350('0x93')]!=!![]){_0x2431d3[_0x8350('0xa9')]='unmanaged';logger[_0x8350('0x52')](_0x8350('0xc6'),_0x5682f4,util['inspect'](_0x2431d3,{'showHidden':![],'depth':null}));ami[_0x8350('0x49')]('custom:queuecallerunmanaged',_0x2431d3);}if(_0x2431d3[_0x8350('0x21')]){_0x2431d3[_0x8350('0xa9')]=_0x8350('0xbd');logger[_0x8350('0x52')](_0x8350('0xc7'),_0x5682f4,util[_0x8350('0x44')](_0x2431d3,{'showHidden':![],'depth':null}));ami[_0x8350('0x49')](_0x8350('0xc8'),_0x2431d3);}}else{this['voiceQueues'][_0x2431d3[_0x8350('0x50')]][_0x8350('0xc1')]+=this[_0x8350('0x14')][_0x2431d3[_0x8350('0x50')]][_0x8350('0xc9')];}logger[_0x8350('0x71')](_0x8350('0xca'),_0x5682f4,_0x2431d3[_0x8350('0x50')],_0x2431d3['type'],_0x1fb9fd);if(_0xb1f0c&&_0x2431d3['queuecallerexitreason']===_0x8350('0x54')){_0x2431d3[_0x8350('0x53')]=_0x8350('0xcb');}this['channels'][_0x5682f4]=_0x2431d3;if(_0x2431d3[_0x8350('0x86')]){this[_0x8350('0x47')](_0x2431d3,_0x8350('0x2a'));}}}logger[_0x8350('0x52')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x5682f4,util[_0x8350('0x44')](this[_0x8350('0x11')][_0x5682f4],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceQueueReport',this['queueReports'][_0x5682f4]);if(_0x2431d3[_0x8350('0x53')]==='ATTENDEDTRANSFER'||_0x2431d3[_0x8350('0x86')]===null){return;}if(_0x2431d3[_0x8350('0x91')]||_0x2431d3['queuecallerabandon']||_0x2431d3[_0x8350('0x8b')]){delete this['queueReports'][_0x5682f4];delete this[_0x8350('0x3c')][_0x5682f4];if(this[_0x8350('0x17')][_0x5682f4]){delete this[_0x8350('0x17')][_0x5682f4];}}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0xcc')]=function(_0x7bbf70){try{if(this['isNotNull'](_0x7bbf70)){logger[_0x8350('0x52')](_0x8350('0xcd'),_0x7bbf70[_0x8350('0x4d')],util[_0x8350('0x44')](_0x7bbf70,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x7bbf70[_0x8350('0x4d')]]){return this['handleHangup'](_0x7bbf70[_0x8350('0x4d')],_0x7bbf70[_0x8350('0xce')],![]);}if(this[_0x8350('0x11')][_0x7bbf70[_0x8350('0x98')]]){if(_0x7bbf70[_0x8350('0xcf')]==='21'){return;}return this[_0x8350('0xbc')](_0x7bbf70[_0x8350('0x98')],_0x7bbf70['cause-txt'],!![]);}var _0x55696e=Object[_0x8350('0xa5')](this['queueReports']);for(var _0x3da424=0x0;_0x3da424<_0x55696e[_0x8350('0xc0')];_0x3da424++){var _0x1ee670=_[_0x8350('0x85')](this['queueReports'][_0x55696e[_0x3da424]]);if(_0x1ee670&&_0x1ee670[_0x8350('0xd0')]===_0x7bbf70['uniqueid']){return this['handleHangup'](_0x1ee670[_0x8350('0x4d')],_0x7bbf70[_0x8350('0xce')],!![]);}}}}catch(_0x4c8cd0){logger['error'](_0x8350('0xcd'),_0x7bbf70['uniqueid'],util[_0x8350('0x44')](_0x4c8cd0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x32')]=function(_0x2f7b89){try{if(this[_0x8350('0x5a')](_0x2f7b89)){logger[_0x8350('0x52')]('[%s][voiceQueueReport][attendedtransfer]',_0x2f7b89['uniqueid'],util[_0x8350('0x44')](_0x2f7b89,{'showHidden':![],'depth':null}));var _0x4ffc3b;var _0xc5708d;var _0x62a1d9;if(this['queueReports'][_0x2f7b89[_0x8350('0xd1')]]){_0x4ffc3b=_['last'](this['queueReports'][_0x2f7b89[_0x8350('0xd1')]]);_0x4ffc3b['transferexten']=_0x2f7b89[_0x8350('0xd2')];_0x4ffc3b[_0x8350('0x9f')]=_0x2f7b89[_0x8350('0xd3')];_0x4ffc3b[_0x8350('0x53')]=_0x8350('0x54');_0x4ffc3b[_0x8350('0x93')]=!![];_0x4ffc3b[_0x8350('0x9c')]=_0x8350('0xd4');if(this['queueReports'][_0x2f7b89[_0x8350('0xd3')]]){_0x62a1d9=this[_0x8350('0x11')][_0x2f7b89['secondtransfereruniqueid']];this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd3')]]=this['queueReports'][_0x2f7b89['transfereeuniqueid']];this[_0x8350('0x11')][_0x2f7b89['transfereeuniqueid']]=_0x62a1d9;_0xc5708d=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd1')]]);_0xc5708d[_0x8350('0x3d')]=!![];}logger[_0x8350('0x71')](_0x8350('0xd5'),_0x2f7b89[_0x8350('0x4d')],_0x4ffc3b[_0x8350('0x50')],_0x4ffc3b[_0x8350('0x6c')],_0x4ffc3b['transferexten'],_0x4ffc3b[_0x8350('0x9f')]);}else if(this['queueReports'][_0x2f7b89[_0x8350('0xd6')]]){_0x4ffc3b=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd6')]]);_0x4ffc3b[_0x8350('0xd7')]=_0x2f7b89['origtransfererexten'];_0x4ffc3b[_0x8350('0x9f')]=_0x2f7b89['origtransfereruniqueid'];_0x4ffc3b[_0x8350('0x53')]=_0x8350('0x54');_0x4ffc3b['transfer']=!![];_0x4ffc3b[_0x8350('0x9c')]=_0x8350('0xd4');if(this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd8')]]){_0x62a1d9=this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd8')]];this['queueReports'][_0x2f7b89[_0x8350('0xd8')]]=this[_0x8350('0x11')][_0x2f7b89['transfertargetuniqueid']];this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd6')]]=_0x62a1d9;_0xc5708d=_[_0x8350('0x85')](this['queueReports'][_0x2f7b89[_0x8350('0xd6')]]);_0xc5708d[_0x8350('0x3d')]=!![];}logger[_0x8350('0x71')](_0x8350('0xd5'),_0x2f7b89[_0x8350('0x4d')],_0x4ffc3b[_0x8350('0x50')],_0x4ffc3b[_0x8350('0x6c')],_0x4ffc3b[_0x8350('0xd7')],_0x4ffc3b[_0x8350('0x9f')]);}else if(this['queueReports'][_0x2f7b89['origtransfereruniqueid']]){_0x4ffc3b=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd8')]]);_0x4ffc3b['transferexten']=_0x2f7b89[_0x8350('0xd9')];_0x4ffc3b['transferuniqueid']=_0x2f7b89[_0x8350('0xd8')];_0x4ffc3b['queuecallerexitreason']=_0x8350('0x54');_0x4ffc3b[_0x8350('0x93')]=!![];_0x4ffc3b[_0x8350('0x9c')]=_0x8350('0xd4');_0x4ffc3b['switch']=!![];_0x4ffc3b[_0x8350('0xd0')]=_0x2f7b89[_0x8350('0xd1')];}else if(this[_0x8350('0x11')][_0x2f7b89[_0x8350('0xd3')]]){_0x4ffc3b=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x2f7b89['secondtransfereruniqueid']]);_0x4ffc3b['transferexten']=_0x2f7b89['secondtransfererexten'];_0x4ffc3b['transferuniqueid']=_0x2f7b89['secondtransfereruniqueid'];_0x4ffc3b[_0x8350('0x53')]=_0x8350('0x54');_0x4ffc3b[_0x8350('0x93')]=!![];_0x4ffc3b[_0x8350('0x9c')]=_0x8350('0xd4');_0x4ffc3b[_0x8350('0x3d')]=!![];_0x4ffc3b[_0x8350('0xd0')]=_0x2f7b89[_0x8350('0xd6')];}}}catch(_0x50c0dc){logger[_0x8350('0x45')]('[%s][voiceQueueReport][attendedtransfer]',_0x2f7b89[_0x8350('0x4d')],util[_0x8350('0x44')](_0x50c0dc,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x3afd55){try{if(this[_0x8350('0x5a')](_0x3afd55)){logger[_0x8350('0x52')](_0x8350('0xda'),_0x3afd55[_0x8350('0x4d')],util[_0x8350('0x44')](_0x3afd55,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x3afd55[_0x8350('0xd1')]]){var _0x1c05ca=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x3afd55['transfereeuniqueid']]);_0x1c05ca[_0x8350('0x53')]='BLINDTRANSFER';_0x1c05ca[_0x8350('0x93')]=!![];_0x1c05ca[_0x8350('0x9c')]='BLIND';_0x1c05ca['transferexten']=_0x3afd55['extension'];_0x1c05ca[_0x8350('0x9f')]=_0x3afd55['transfereeuniqueid'];logger['info'](_0x8350('0xdb'),_0x3afd55[_0x8350('0x4d')],_0x1c05ca[_0x8350('0x50')],_0x1c05ca[_0x8350('0x6c')],_0x1c05ca[_0x8350('0xd7')],_0x1c05ca[_0x8350('0x9f')]);this[_0x8350('0xcc')]({'event':_0x8350('0xdc'),'uniqueid':_0x3afd55[_0x8350('0xd1')],'context':_0x3afd55[_0x8350('0xdd')],'channel':_0x3afd55[_0x8350('0xde')]});}}}catch(_0x55483d){logger[_0x8350('0x45')](_0x8350('0xda'),_0x3afd55[_0x8350('0x4d')],util[_0x8350('0x44')](_0x55483d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8350('0x2e')]=function(_0x58397a){try{if(this[_0x8350('0x5a')](_0x58397a)){logger[_0x8350('0x52')](_0x8350('0xdf'),_0x58397a['uniqueid'],util[_0x8350('0x44')](_0x58397a,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x58397a[_0x8350('0x4d')]]){var _0x24d08c=_[_0x8350('0x85')](this['queueReports'][_0x58397a[_0x8350('0x4d')]]);if(!_[_0x8350('0x3e')](_0x24d08c['queuecallerleaveAt'])){_0x24d08c[_0x8350('0xe0')]=moment()[_0x8350('0x4e')](_0x8350('0x76'));logger['info'](_0x8350('0xe1'),_0x58397a[_0x8350('0x4d')],_0x24d08c[_0x8350('0xe0')]);}}}}catch(_0x3219ab){logger[_0x8350('0x45')]('[%s][voiceQueueReport][musiconholdstart]',_0x58397a['uniqueid'],util['inspect'](_0x3219ab,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8350('0xc')][_0x8350('0x30')]=function(_0x3b6b02){try{if(this[_0x8350('0x5a')](_0x3b6b02)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x3b6b02[_0x8350('0x4d')],util[_0x8350('0x44')](_0x3b6b02,{'showHidden':![],'depth':null}));if(this[_0x8350('0x11')][_0x3b6b02[_0x8350('0x4d')]]){var _0x643f52=_[_0x8350('0x85')](this[_0x8350('0x11')][_0x3b6b02[_0x8350('0x4d')]]);if(!_[_0x8350('0x3e')](_0x643f52[_0x8350('0xe0')])){_0x643f52[_0x8350('0xe2')]+=moment()['milliseconds'](0x0)[_0x8350('0xbe')](_0x643f52['mohstarttime'],_0x8350('0x9a'));logger['info'](_0x8350('0xe3'),_0x3b6b02[_0x8350('0x4d')],_0x643f52[_0x8350('0xe2')]);delete _0x643f52[_0x8350('0xe0')];}}}}catch(_0x5112d4){logger[_0x8350('0x45')](_0x8350('0xe4'),_0x3b6b02[_0x8350('0x4d')],util[_0x8350('0x44')](_0x5112d4,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8350('0xe5')]=function(_0x2c559c){try{if(this[_0x8350('0x5a')](_0x2c559c)){logger['debug']('[%s][voiceQueueReport][newexten]\x20event:',_0x2c559c[_0x8350('0x4d')],util[_0x8350('0x44')](_0x2c559c,{'showHidden':![],'depth':null}));if(_0x2c559c[_0x8350('0xe6')]['toLowerCase']()===_0x8350('0xe7')){_0x2c559c[_0x8350('0xe8')]=_0x2c559c['appdata']&&_0x2c559c[_0x8350('0xe9')][_0x8350('0x96')](_0x8350('0xea'))?_0x2c559c[_0x8350('0xe9')]:(_0x2c559c['appdata']||_0x2c559c[_0x8350('0xe8')])[_0x8350('0xeb')]();if(_[_0x8350('0x96')](_0x2c559c[_0x8350('0xe8')][_0x8350('0xeb')](),_0x8350('0xec'))){logger[_0x8350('0x71')](_0x8350('0xed'),_0x2c559c[_0x8350('0x4d')],_0x2c559c[_0x8350('0xe6')],_0x2c559c[_0x8350('0xe8')]);if(_[_0x8350('0x5b')](this[_0x8350('0x3c')][_0x2c559c[_0x8350('0x4d')]]))this['channels'][_0x2c559c[_0x8350('0x4d')]]={};var _0x5e783e=_0x2c559c[_0x8350('0xe8')][_0x8350('0xee')]('=');var _0x1fbfe6=_0x5e783e[0x0][_0x8350('0xeb')]()[_0x8350('0xef')](/cdr\((.*)\)/);if(_0x1fbfe6)this['channels'][_0x2c559c[_0x8350('0x4d')]][_0x1fbfe6[0x1]]=_0x5e783e[0x1];}}}}catch(_0x7bb18e){logger[_0x8350('0x45')](_0x8350('0xf0'),_0x2c559c[_0x8350('0x4d')],util[_0x8350('0x44')](_0x7bb18e,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
+var _0x5261=['cdr(','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../model/queueReport','../model/voiceQueueSummary','redis','localhost','prototype','enqueue','tail','finally','sequence','queueReports','realtime','agents','channels','voiceQueues','campaigns','summary','variables','syncQueueSummary','bind','queuesummarycomplete','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncAgentComplete','agentconnect','syncAgentConnect','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','talking','waiting','queueStatusComplete','unlockRR','queuecallerabandon','queuecallercomplete','clearZombieChannels','switch','Action','status','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','clearqueuereport','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','queue','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','emitInboundVoiceQueueSummary','type','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','name','voice_queue:save','isUndefined','queues','[voiceQueueReport][queues]','isRunning','actionid','createQueueSummaryReport','summaryEvent','createReport','handleInboundQueueSummaryReport','assign','queuestatus','inbound','outbound','custom:queuesummary','statusRequests','completeEvent','isNotNull','then','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','emitVoiceQueueChannelRemove','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','queuecallerexit','queuecallerjoinAt','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','keys','variable','value','TIMEOUT','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','includes','length','sumHoldTime','diff','milliseconds','total','answered','sumBillable','unmanaged','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','sumDuration','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDED','transferid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','BlindTransfer','transfererchannel','isNil','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','syncNewExten','application','toLowerCase','set','applicationdata','appdata','CDR(routeAlias)'];(function(_0x2ba8ab,_0x2cab06){var _0x57e7cf=function(_0x1937bc){while(--_0x1937bc){_0x2ba8ab['push'](_0x2ba8ab['shift']());}};_0x57e7cf(++_0x2cab06);}(_0x5261,0x1e9));var _0x1526=function(_0x438397,_0x5ec050){_0x438397=_0x438397-0x0;var _0x25625e=_0x5261[_0x438397];return _0x25625e;};'use strict';var _=require(_0x1526('0x0'));var moment=require(_0x1526('0x1'));var util=require(_0x1526('0x2'));var Redis=require(_0x1526('0x3'));var config=require('../../../config/environment');var logger=require(_0x1526('0x4'))(_0x1526('0x5'));var ami=require('../ami');var QueueReport=require(_0x1526('0x6'));var VoiceQueueSummary=require(_0x1526('0x7'));config[_0x1526('0x8')]=_['defaults'](config[_0x1526('0x8')],{'host':_0x1526('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1526('0x8')]));var Sequence=function(){};Sequence[_0x1526('0xa')][_0x1526('0xb')]=function(_0x547eb6){this[_0x1526('0xc')]=this[_0x1526('0xc')]?this['tail'][_0x1526('0xd')](_0x547eb6):_0x547eb6();};function VoiceQueueReport(_0x20ea61){this[_0x1526('0xe')]=new Sequence();this[_0x1526('0xf')]={};this[_0x1526('0x10')]=_0x20ea61;this[_0x1526('0x11')]=_0x20ea61['agents'];this[_0x1526('0x12')]=_0x20ea61['queueChannels'];this['voiceQueues']=_0x20ea61[_0x1526('0x13')];this[_0x1526('0x14')]=_0x20ea61['campaigns'];this[_0x1526('0x15')]=initializeSummary();this[_0x1526('0x16')]={};ami['on']('queuesummary',this[_0x1526('0x17')][_0x1526('0x18')](this));ami['on'](_0x1526('0x19'),this['syncQueueSummaryComplete']['bind'](this));ami['on'](_0x1526('0x1a'),this[_0x1526('0x1b')][_0x1526('0x18')](this));ami['on'](_0x1526('0x1c'),this[_0x1526('0x1d')][_0x1526('0x18')](this));ami['on'](_0x1526('0x1e'),this[_0x1526('0x1f')][_0x1526('0x18')](this));ami['on']('queuecallerabandon',this[_0x1526('0x20')][_0x1526('0x18')](this));ami['on'](_0x1526('0x21'),this['syncQueueCallerLeave'][_0x1526('0x18')](this));ami['on']('agentcomplete',this[_0x1526('0x22')]['bind'](this));ami['on'](_0x1526('0x23'),this[_0x1526('0x24')]['bind'](this));ami['on']('varset',this[_0x1526('0x25')][_0x1526('0x18')](this));ami['on'](_0x1526('0x26'),this[_0x1526('0x27')][_0x1526('0x18')](this));ami['on'](_0x1526('0x28'),this[_0x1526('0x29')]['bind'](this));ami['on'](_0x1526('0x2a'),this[_0x1526('0x2b')]['bind'](this));ami['on']('musiconholdstop',this[_0x1526('0x2c')][_0x1526('0x18')](this));ami['on'](_0x1526('0x2d'),this[_0x1526('0x2e')][_0x1526('0x18')](this));ami['on'](_0x1526('0x2f'),this[_0x1526('0x30')][_0x1526('0x18')](this));this[_0x1526('0x31')]();this[_0x1526('0x32')]();}function clearChannels(_0x99d1d9){if(!_[_0x1526('0x33')](_0x99d1d9)){for(var _0x477913 in _0x99d1d9){if(_0x99d1d9[_0x1526('0x34')](_0x477913)){delete _0x99d1d9[_0x477913];}}}}function clearCampaigns(_0x3a705f){if(!_[_0x1526('0x33')](_0x3a705f)){for(var _0x5dba02 in _0x3a705f){if(_0x3a705f[_0x1526('0x34')](_0x5dba02)){_0x3a705f[_0x5dba02]['originated']=0x0;}}}}function clearVoiceQueues(_0x560135){if(!_[_0x1526('0x33')](_0x560135)){for(var _0x4572c2 in _0x560135){if(_0x560135[_0x1526('0x34')](_0x4572c2)){_0x560135[_0x4572c2]['originated']=0x0;_0x560135[_0x4572c2][_0x1526('0x35')]=0x0;_0x560135[_0x4572c2]['pTalking']=0x0;_0x560135[_0x4572c2][_0x1526('0x36')]=0x0;_0x560135[_0x4572c2][_0x1526('0x37')]=!![];}}}}function clearAgentBooked(_0x12d817){if(!_[_0x1526('0x33')](_0x12d817)){for(var _0x2e7701 in _0x12d817){if(_0x12d817[_0x1526('0x34')](_0x2e7701)){_0x12d817[_0x2e7701][_0x1526('0x38')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x58b562){return _0x58b562['queuecallerexit']||_0x58b562[_0x1526('0x39')]||_0x58b562[_0x1526('0x3a')];}VoiceQueueReport['prototype'][_0x1526('0x3b')]=function(){var _0x243eb2=this;for(var _0x43920c in this[_0x1526('0x12')]){if(this[_0x1526('0x12')][_0x1526('0x34')](_0x43920c)&&!this[_0x1526('0x12')][_0x43920c][_0x1526('0x3c')]){this[_0x1526('0xe')][_0x1526('0xb')](function(){if(!_['isNil'](_0x243eb2[_0x1526('0x12')][_0x43920c])){return ami[_0x1526('0x3d')]({'action':_0x1526('0x3e'),'channel':_0x243eb2[_0x1526('0x12')][_0x43920c][_0x1526('0x3f')]})[_0x1526('0x40')](function(_0x204845){if(_0x204845[_0x1526('0x41')]===_0x1526('0x42')){setTimeout(function(){if(_0x243eb2[_0x1526('0x12')][_0x43920c]){delete _0x243eb2['channels'][_0x43920c];logger[_0x1526('0x43')]('[%s][voiceQueueReport][checkChannel]',_0x43920c,util[_0x1526('0x44')](_0x204845,{'showHidden':![],'depth':null}));}if(_0x243eb2[_0x1526('0xf')][_0x43920c]){delete _0x243eb2['queueReports'][_0x43920c];logger['error']('[%s][voiceQueueReport][checkQueueReport]',_0x43920c,util[_0x1526('0x44')](_0x204845,{'showHidden':![],'depth':null}));}if(_0x243eb2[_0x1526('0x16')][_0x43920c]){delete _0x243eb2[_0x1526('0x16')][_0x43920c];logger[_0x1526('0x43')](_0x1526('0x45'),_0x43920c,util['inspect'](_0x204845,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x1526('0x29')]=function(){logger[_0x1526('0x43')](_0x1526('0x46'));clearChannels(this[_0x1526('0x12')]);this[_0x1526('0x47')](this['queueReports']);clearAgentBooked(this[_0x1526('0x11')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x1526('0x14')]);this['summary']=initializeSummary();};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x47')]=function(_0x441782){var _0x816e1=this;if(!_[_0x1526('0x33')](_0x441782)){for(var _0x5036e9 in _0x441782){if(_0x441782[_0x1526('0x34')](_0x5036e9)){_0x816e1['emitVoiceQueueChannelRemove'](_0x441782[_0x5036e9],_0x1526('0x48'));delete _0x441782[_0x5036e9];}}}};VoiceQueueReport['prototype'][_0x1526('0x49')]=function(_0xab1950,_0x2ca2bf,_0x2dd0be){io['to'](_0xab1950)[_0x1526('0x49')](_0x2ca2bf,_0x2dd0be);};VoiceQueueReport[_0x1526('0xa')]['emitVoiceQueueChannelSave']=function(_0x2ceb72,_0x1d5f34){logger[_0x1526('0x4a')](_0x1526('0x4b')+_0x1d5f34+_0x1526('0x4c'),_0x2ceb72[_0x1526('0x4d')],util['inspect'](_0x2ceb72,{'showHidden':![],'depth':null}));this[_0x1526('0x49')](util[_0x1526('0x4e')]('voice:queue:%s',_0x2ceb72[_0x1526('0x4f')]),_0x1526('0x50'),_0x2ceb72);io[_0x1526('0x49')](_0x1526('0x51'),_0x2ceb72);};VoiceQueueReport[_0x1526('0xa')]['emitVoiceQueueChannelRemove']=function(_0x2b57e4,_0x4811a1){logger[_0x1526('0x4a')]('[%s][voiceQueueReport]['+_0x4811a1+_0x1526('0x52'),_0x2b57e4[_0x1526('0x4d')],util['inspect'](_0x2b57e4,{'showHidden':![],'depth':null}));if(_0x2b57e4[_0x1526('0x53')]===_0x1526('0x54')){return;}this[_0x1526('0x49')](util[_0x1526('0x4e')](_0x1526('0x55'),_0x2b57e4[_0x1526('0x4f')]),_0x1526('0x56'),_0x2b57e4);io[_0x1526('0x49')](_0x1526('0x57'),_0x2b57e4);};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x58')]=function(_0x2c5df1){if(_0x2c5df1[_0x1526('0x59')]==='inbound'){logger[_0x1526('0x4a')](_0x1526('0x5a'),util[_0x1526('0x44')](_0x2c5df1,{'showHidden':![],'depth':null}));this[_0x1526('0x49')](util[_0x1526('0x4e')]('voice:queue:%s',_0x2c5df1[_0x1526('0x5b')]),_0x1526('0x5c'),_0x2c5df1);}};VoiceQueueReport[_0x1526('0xa')]['isNotNull']=function(_0x110d0c){return _0x110d0c!==null&&!_[_0x1526('0x5d')](_0x110d0c);};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x32')]=function(){var _0x2aba78=this;setInterval(function(){_0x2aba78[_0x1526('0x3b')]();ami[_0x1526('0x3d')]({'action':_0x1526('0x5e')})[_0x1526('0x40')](function(_0x34c18c){logger[_0x1526('0x43')](_0x1526('0x5f'),util[_0x1526('0x44')](_0x34c18c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x31')]=function(){var _0xcb1904=this;setInterval(function(){if(!_0xcb1904[_0x1526('0x15')][_0x1526('0x60')]){return ami[_0x1526('0x3d')]({'action':'queuesummary'})['then'](function(_0x8ff0c5){_0xcb1904[_0x1526('0x15')]['id']=_0x8ff0c5[_0x1526('0x61')];_0xcb1904[_0x1526('0x15')][_0x1526('0x60')]=!![];_0xcb1904[_0x1526('0x15')]['queuestatus'][_0x8ff0c5[_0x1526('0x61')]]={};})[_0x1526('0x40')](function(_0x585550){logger[_0x1526('0x43')]('[voiceQueueReport][queuesummary]',util['inspect'](_0x585550,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x62')]=function(_0x1d2cbc,_0x50d531){var _0x7b87cb=this[_0x1526('0x15')][_0x1526('0x5e')][_0x1d2cbc[_0x1526('0x5b')]][_0x1526('0x63')];var _0x3c15c8=new VoiceQueueSummary(_0x1d2cbc);return _0x3c15c8[_0x1526('0x64')](_0x50d531[_0x1526('0x11')],this[_0x1526('0x11')],_0x7b87cb,this['realtime'][_0x1526('0x12')]);};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x65')]=function(_0x4f4fb5,_0x419628){var _0x2bff72=this['createQueueSummaryReport'](_0x4f4fb5,_0x419628);var _0x5f0a2f=![];_0x5f0a2f=_0x2bff72['compareToInboundQueue'](_0x4f4fb5);if(_0x5f0a2f){Object[_0x1526('0x66')](_0x4f4fb5,_0x2bff72);this[_0x1526('0x10')][_0x1526('0x13')][_0x4f4fb5[_0x1526('0x5b')]]=_0x4f4fb5;this[_0x1526('0x58')](_0x2bff72);}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x1d')]=function(_0x1ff6b4){var _0x54d283=null;var _0x381cdf=this[_0x1526('0x15')]['id'];if(this['summary'][_0x1526('0x67')][_0x381cdf]){_0x54d283=this[_0x1526('0x15')][_0x1526('0x67')][_0x381cdf][_0x1ff6b4[_0x1526('0x61')]];}if(!_0x54d283){this[_0x1526('0x15')]=initializeSummary();return;}var _0x230ca3=this['voiceQueues'][_0x54d283['queue']];if(_0x230ca3['type']===_0x1526('0x68')){this[_0x1526('0x65')](_0x230ca3,_0x54d283);}else if(_0x230ca3[_0x1526('0x59')]===_0x1526('0x69')){var _0x50ac53=this[_0x1526('0x62')](_0x230ca3,_0x54d283);ami[_0x1526('0x49')](_0x1526('0x6a'),_0x50ac53);}this[_0x1526('0x15')][_0x1526('0x6b')]-=0x1;var _0x8e1e15=this[_0x1526('0x15')][_0x1526('0x6b')]>0x0?!![]:![];if(!_0x8e1e15){return this['syncQueueSummaryComplete'](this[_0x1526('0x15')][_0x1526('0x6c')]);}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x1b')]=function(_0x59eed3){var _0x29f5c6=this[_0x1526('0x15')]['id'];if(this[_0x1526('0x15')][_0x1526('0x67')][_0x29f5c6]&&this['summary']['queuestatus'][_0x29f5c6][_0x59eed3[_0x1526('0x61')]]){this[_0x1526('0x15')][_0x1526('0x67')][_0x29f5c6][_0x59eed3[_0x1526('0x61')]][_0x1526('0x11')]['push'](_0x59eed3);}};VoiceQueueReport['prototype'][_0x1526('0x17')]=function(_0x454318){var _0x4cf388=this;try{if(this[_0x1526('0x6d')](_0x454318)&&this['isNotNull'](_0x454318[_0x1526('0x4f')])){logger[_0x1526('0x4a')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x1526('0x44')](_0x454318,{'showHidden':![],'depth':null}));var _0x3ffbff=this['voiceQueues'][_0x454318[_0x1526('0x4f')]];if(_0x3ffbff){logger['debug']('[voiceQueueReport][queuesummary]\x20name:%s',_0x3ffbff[_0x1526('0x5b')]);this[_0x1526('0x15')][_0x1526('0x5e')][_0x3ffbff[_0x1526('0x5b')]]={'summaryEvent':_0x454318};this[_0x1526('0x15')][_0x1526('0x6b')]+=0x1;return ami[_0x1526('0x3d')]({'action':_0x1526('0x67'),'queue':_0x3ffbff[_0x1526('0x5b')]})[_0x1526('0x6e')](function(_0x57bed2){if(!_0x4cf388[_0x1526('0x15')][_0x1526('0x67')][_0x454318[_0x1526('0x61')]]){_0x4cf388[_0x1526('0x15')]['queuestatus'][_0x454318[_0x1526('0x61')]]={};}_0x4cf388[_0x1526('0x15')][_0x1526('0x67')][_0x454318[_0x1526('0x61')]][_0x57bed2['actionid']]={'queue':_0x3ffbff[_0x1526('0x5b')],'agents':[]};})['catch'](function(_0xc65b26){throw _0xc65b26;});}}}catch(_0xf2b732){logger[_0x1526('0x43')]('[voiceQueueReport][queuesummary]',util[_0x1526('0x44')](_0xf2b732,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1526('0x6f')]=function(_0x259134){if(this[_0x1526('0x15')][_0x1526('0x6b')]>0x0){this[_0x1526('0x15')]['completeEvent']=_0x259134;return;}logger['debug'](_0x1526('0x70'),util[_0x1526('0x44')](_0x259134,{'showHidden':![],'depth':null}));this['summary']=initializeSummary();ami['emit'](_0x1526('0x71'),{});};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x33b24b){try{if(this[_0x1526('0x6d')](_0x33b24b)){logger['debug'](_0x1526('0x72'),_0x33b24b[_0x1526('0x4d')],util['inspect'](_0x33b24b,{'showHidden':![],'depth':null}));if(_[_0x1526('0x5d')](this[_0x1526('0xf')][_0x33b24b[_0x1526('0x4d')]])){this['queueReports'][_0x33b24b[_0x1526('0x4d')]]=[];}if(_[_0x1526('0x5d')](this[_0x1526('0x12')][_0x33b24b[_0x1526('0x4d')]])){this['channels'][_0x33b24b[_0x1526('0x4d')]]={};}var _0x1bb41c=new QueueReport();_0x1bb41c[_0x1526('0x4f')]=_0x33b24b['queue'];_0x1bb41c[_0x1526('0x59')]=this[_0x1526('0x13')][_0x1bb41c[_0x1526('0x4f')]]&&this[_0x1526('0x13')][_0x1bb41c['queue']][_0x1526('0x59')]?this[_0x1526('0x13')][_0x1bb41c[_0x1526('0x4f')]]['type']||_0x1526('0x68'):_0x1526('0x68');_0x1bb41c['queuecallerjoinAt']=moment()[_0x1526('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x1bb41c[_0x1526('0x73')]=_0x33b24b['position'];_0x1bb41c[_0x1526('0x74')]=_0x33b24b['count'];_0x1bb41c[_0x1526('0x4d')]=_0x33b24b[_0x1526('0x4d')];_0x1bb41c[_0x1526('0x75')]=this[_0x1526('0x12')][_0x33b24b[_0x1526('0x4d')]][_0x1526('0x75')];logger[_0x1526('0x76')](_0x1526('0x77'),_0x1bb41c[_0x1526('0x4f')],_0x1bb41c[_0x1526('0x59')]);Object[_0x1526('0x66')](_0x1bb41c,_[_0x1526('0x78')](_0x33b24b,_['keys'](_0x1bb41c)));this['queueReports'][_0x33b24b[_0x1526('0x4d')]]['push'](_0x1bb41c);this[_0x1526('0x12')][_0x33b24b['uniqueid']]=_0x1bb41c;this[_0x1526('0x79')](_0x1bb41c,_0x1526('0x1e'));}}catch(_0x2eb063){logger['error']('[%s][voiceQueueReport][queuecallerjoin]',_0x33b24b['uniqueid'],util[_0x1526('0x44')](_0x2eb063,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x20')]=function(_0x199a05){try{if(this['isNotNull'](_0x199a05)){logger[_0x1526('0x4a')](_0x1526('0x7a'),_0x199a05[_0x1526('0x4d')],util[_0x1526('0x44')](_0x199a05,{'showHidden':![],'depth':null}));if(this[_0x1526('0xf')][_0x199a05[_0x1526('0x4d')]]){var _0xb94d8c=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x199a05[_0x1526('0x4d')]]);_0xb94d8c[_0x1526('0x3a')]=![];_0xb94d8c['queuecallercompleteAt']=null;_0xb94d8c[_0x1526('0x7c')]=_0x199a05[_0x1526('0x7c')];_0xb94d8c[_0x1526('0x7d')]=_0x199a05[_0x1526('0x7d')];_0xb94d8c[_0x1526('0x39')]=!![];_0xb94d8c[_0x1526('0x7e')]=moment()[_0x1526('0x4e')](_0x1526('0x7f'));_0xb94d8c[_0x1526('0x53')]='ABANDONED';_0xb94d8c[_0x1526('0x80')]=null;logger[_0x1526('0x76')](_0x1526('0x81'),_0xb94d8c[_0x1526('0x4f')],_0xb94d8c[_0x1526('0x59')]);this[_0x1526('0x12')][_0x199a05['uniqueid']]=_0xb94d8c;this[_0x1526('0x82')](_0xb94d8c,_0x1526('0x39'));}}}catch(_0x234b6c){logger['error'](_0x1526('0x7a'),_0x199a05[_0x1526('0x4d')],util[_0x1526('0x44')](_0x234b6c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x83')]=function(_0x24df11){try{if(this['isNotNull'](_0x24df11)){logger[_0x1526('0x4a')](_0x1526('0x84'),_0x24df11['uniqueid'],util['inspect'](_0x24df11,{'showHidden':![],'depth':null}));if(this[_0x1526('0xf')][_0x24df11[_0x1526('0x4d')]]){var _0x2eaf2e=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x24df11['uniqueid']]);_0x2eaf2e[_0x1526('0x85')]=moment()[_0x1526('0x4e')](_0x1526('0x7f'));_0x2eaf2e['connectedlinenum']=_0x24df11['connectedlinenum'];_0x2eaf2e[_0x1526('0x86')]=_0x24df11['connectedlinename'];logger[_0x1526('0x76')](_0x1526('0x87'),_0x2eaf2e[_0x1526('0x4f')],_0x2eaf2e['type'],_0x24df11[_0x1526('0x88')],_0x24df11['connectedlinename']);this[_0x1526('0x12')][_0x24df11[_0x1526('0x4d')]]=_0x2eaf2e;this[_0x1526('0x79')](_0x2eaf2e,_0x1526('0x21'));}}}catch(_0x5a0062){logger['error'](_0x1526('0x84'),_0x24df11[_0x1526('0x4d')],util['inspect'](_0x5a0062,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x24')]=function(_0xf38718){try{if(this[_0x1526('0x6d')](_0xf38718)){logger[_0x1526('0x4a')](_0x1526('0x89'),_0xf38718['uniqueid'],util[_0x1526('0x44')](_0xf38718,{'showHidden':![],'depth':null}));if(this[_0x1526('0xf')][_0xf38718[_0x1526('0x4d')]]){var _0x3aac45=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0xf38718[_0x1526('0x4d')]]);_0x3aac45[_0x1526('0x3a')]=!![];_0x3aac45[_0x1526('0x53')]=_0x1526('0x8a');logger['info']('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x3aac45['queue'],_0x3aac45['type']);}}}catch(_0x1646a3){logger[_0x1526('0x43')](_0x1526('0x89'),_0xf38718['uniqueid'],util['inspect'](_0x1646a3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentComplete']=function(_0x4fb4d7){try{if(this[_0x1526('0x6d')](_0x4fb4d7)){logger[_0x1526('0x4a')]('[%s][voiceQueueReport][agentcomplete]',_0x4fb4d7[_0x1526('0x4d')],util['inspect'](_0x4fb4d7,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4fb4d7['uniqueid']]){var _0x5c61c7=_['last'](this[_0x1526('0xf')][_0x4fb4d7['uniqueid']]);_0x5c61c7['queuecallerabandon']=![];_0x5c61c7[_0x1526('0x7e')]=null;_0x5c61c7['assigned']=!![];_0x5c61c7['lastAssignedTo']=_0x4fb4d7[_0x1526('0x8b')];_0x5c61c7[_0x1526('0x7c')]=_0x4fb4d7['holdtime'];_0x5c61c7['queuecallercomplete']=!![];_0x5c61c7['queuecallerexit']=![];_0x5c61c7[_0x1526('0x8c')]=null;if(!_0x5c61c7[_0x1526('0x8d')]){if(_0x4fb4d7[_0x1526('0x8e')]==_0x1526('0x8d')){_0x5c61c7[_0x1526('0x53')]=_0x1526('0x8f');logger['info'](_0x1526('0x90'),_0x5c61c7[_0x1526('0x4f')],_0x5c61c7[_0x1526('0x59')]);}else{if(_[_0x1526('0x91')](_0x4fb4d7[_0x1526('0x3f')]['toLowerCase'](),_0x1526('0x92'))){if(this[_0x1526('0xf')][_0x4fb4d7['linkedid']]){var _0x9a2bbf=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x4fb4d7[_0x1526('0x93')]]);_0x9a2bbf[_0x1526('0x3a')]=![];_0x9a2bbf[_0x1526('0x94')]=!![];_0x9a2bbf[_0x1526('0x8c')]=moment(_0x5c61c7[_0x1526('0x95')])[_0x1526('0x96')](_0x4fb4d7['holdtime'],_0x1526('0x97'))[_0x1526('0x4e')](_0x1526('0x7f'));_0x9a2bbf[_0x1526('0x53')]=_0x1526('0x98');_0x9a2bbf['transfer']=!![];_0x9a2bbf[_0x1526('0x99')]=_0x1526('0x9a');_0x9a2bbf[_0x1526('0x9b')]=_0x4fb4d7[_0x1526('0x9c')];_0x9a2bbf[_0x1526('0x9d')]=_0x4fb4d7['uniqueid'];logger[_0x1526('0x76')](_0x1526('0x9e'),_0x9a2bbf[_0x1526('0x4f')],_0x9a2bbf[_0x1526('0x59')]);var _0x21d230=this['queueReports'][_0x4fb4d7[_0x1526('0x93')]];this[_0x1526('0xf')][_0x4fb4d7[_0x1526('0x93')]]=this[_0x1526('0xf')][_0x4fb4d7[_0x1526('0x4d')]];this[_0x1526('0xf')][_0x4fb4d7['uniqueid']]=_0x21d230;}}else{_0x5c61c7[_0x1526('0x53')]=_0x1526('0x9f')+_0x4fb4d7[_0x1526('0x8e')][_0x1526('0xa0')]();logger[_0x1526('0x76')](_0x1526('0xa1'),_0x5c61c7[_0x1526('0x4f')],_0x5c61c7['type'],_0x5c61c7[_0x1526('0x53')]);}}}this[_0x1526('0x12')][_0x4fb4d7[_0x1526('0x4d')]]=_0x5c61c7;}}}catch(_0x84d21d){logger['error'](_0x1526('0xa2'),_0x4fb4d7[_0x1526('0x4d')],util[_0x1526('0x44')](_0x84d21d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x25')]=function(_0x10daea){try{if(this[_0x1526('0x6d')](_0x10daea)){logger['debug'](_0x1526('0xa3'),_0x10daea['uniqueid'],util[_0x1526('0x44')](_0x10daea,{'showHidden':![],'depth':null}));this[_0x1526('0xa4')](_0x10daea[_0x1526('0x4d')],_[_0x1526('0xa5')](_0x10daea[_0x1526('0xa6')])[0x0],_0x10daea[_0x1526('0xa7')]);if(this[_0x1526('0xf')][_0x10daea[_0x1526('0x4d')]]){var _0x4fcf2d=_['last'](this['queueReports'][_0x10daea[_0x1526('0x4d')]]);if(_0x4fcf2d){if(this['isNotNull'](_0x10daea[_0x1526('0xa6')])&&this[_0x1526('0x6d')](_0x10daea[_0x1526('0xa6')][_0x1526('0x67')])){switch(_0x10daea[_0x1526('0xa7')]){case'CONTINUE':_0x4fcf2d[_0x1526('0x94')]=![];_0x4fcf2d['queuecallerexitAt']=null;break;case _0x1526('0xa8'):_0x4fcf2d['lastevent']=_0x1526('0xa9');_0x4fcf2d[_0x1526('0x94')]=!![];_0x4fcf2d[_0x1526('0x8c')]=moment()['format'](_0x1526('0x7f'));_0x4fcf2d[_0x1526('0x85')]=moment()['format'](_0x1526('0x7f'));logger[_0x1526('0x4a')](_0x1526('0xaa'),_0x10daea[_0x1526('0x4d')],util[_0x1526('0x44')](_0x4fcf2d,{'showHidden':![],'depth':null}));ami[_0x1526('0x49')]('custom:timeout',_0x4fcf2d);break;default:_0x4fcf2d[_0x1526('0x94')]=!![];_0x4fcf2d[_0x1526('0x8c')]=moment()[_0x1526('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x4fcf2d['queuecallerleaveAt']=moment()['format'](_0x1526('0x7f'));}_0x4fcf2d[_0x1526('0x39')]=![];_0x4fcf2d[_0x1526('0x7e')]=null;_0x4fcf2d[_0x1526('0x53')]=_0x10daea[_0x1526('0xa7')];this['channels'][_0x10daea[_0x1526('0x4d')]]=_0x4fcf2d;this[_0x1526('0x82')](_0x4fcf2d,'varset');}else if(this['isNotNull'](_0x10daea[_0x1526('0xa6')])&&this['isNotNull'](_0x10daea['variable']['queueposition'])){if(!_0x4fcf2d[_0x1526('0x39')]){_0x4fcf2d[_0x1526('0x94')]=!![];_0x4fcf2d[_0x1526('0x8c')]=moment()['format'](_0x1526('0x7f'));_0x4fcf2d['queuecallerexitreason']=_0x1526('0xab');_0x4fcf2d[_0x1526('0x85')]=moment()[_0x1526('0x4e')](_0x1526('0x7f'));this[_0x1526('0x12')][_0x10daea[_0x1526('0x4d')]]=_0x4fcf2d;}}logger[_0x1526('0x76')](_0x1526('0xac'),_0x10daea[_0x1526('0x4d')],_0x4fcf2d['queue'],_0x4fcf2d[_0x1526('0x59')],_['keys'](_0x10daea['variable'])[0x0],_0x10daea[_0x1526('0xa7')]);_0x4fcf2d['variables']=this[_0x1526('0x16')][_0x10daea['uniqueid']];}}}}catch(_0x55144a){logger[_0x1526('0x43')](_0x1526('0xa3'),_0x10daea[_0x1526('0x4d')],util[_0x1526('0x44')](_0x55144a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0xa4')]=function(_0x58c5f2,_0x6023dd,_0x56e847){var _0x4fed00=[_0x1526('0xad'),_0x1526('0xae'),'rtpaudioqosjitter',_0x1526('0xaf'),_0x1526('0xb0'),_0x1526('0xb1'),'rtpaudioqosrtt',_0x1526('0xb2'),_0x1526('0xb3'),'sipuri',_0x1526('0xb4'),_0x1526('0xb5'),_0x1526('0xb6'),_0x1526('0xb7'),_0x1526('0xb8'),_0x1526('0xb9'),'membername',_0x1526('0xba'),'memberrealtime'];if(!_['isNil'](_0x6023dd)&&!_[_0x1526('0xbb')](_0x4fed00,_0x6023dd)){if(_[_0x1526('0x5d')](this[_0x1526('0x16')][_0x58c5f2])){this[_0x1526('0x16')][_0x58c5f2]={};}this[_0x1526('0x16')][_0x58c5f2][_0x6023dd]=_0x56e847;}};VoiceQueueReport[_0x1526('0xa')]['handleHangup']=function(_0x5bc819,_0x3d703b,_0x293285){var _0x18a359={};for(var _0x58b1e8=0x0;_0x58b1e8<this['queueReports'][_0x5bc819][_0x1526('0xbc')];_0x58b1e8+=0x1){_0x18a359=this[_0x1526('0xf')][_0x5bc819][_0x58b1e8];var _0x3e0785=this['voiceQueues'][_0x18a359['queue']];if(_0x3e0785){_0x3e0785[_0x1526('0xbd')]+=moment(_0x18a359[_0x1526('0x85')])[_0x1526('0xbe')](_0x18a359[_0x1526('0x95')],_0x1526('0x97'))||0x0;if(_0x293285&&_0x18a359[_0x1526('0x53')]===_0x1526('0x54')){_0x18a359[_0x1526('0x53')]='COMPLETEDBYAGENT';}if(_0x58b1e8===this[_0x1526('0xf')][_0x5bc819][_0x1526('0xbc')]-0x1){_0x3e0785['sumDuration']+=moment()[_0x1526('0xbf')](0x0)['diff'](_0x18a359[_0x1526('0x95')],_0x1526('0x97'));if(hasCallerLeftTheQueue(_0x18a359)&&_0x18a359[_0x1526('0x53')]!==_0x1526('0x54')){_0x3e0785[_0x1526('0xc0')]+=0x1;}if(_0x18a359[_0x1526('0x3a')]){_0x3e0785[_0x1526('0xc1')]+=0x1;_0x3e0785[_0x1526('0xc2')]+=moment()[_0x1526('0xbf')](0x0)[_0x1526('0xbe')](_0x18a359[_0x1526('0x85')],'seconds');_0x18a359['queuecallercompleteAt']=moment()[_0x1526('0x4e')]('YYYY-MM-DD\x20HH:mm:ss');_0x18a359[_0x1526('0x94')]=![];_0x18a359[_0x1526('0x8c')]=null;}if(_0x18a359[_0x1526('0x94')]&&_0x18a359['transfer']!=!![]){_0x3e0785[_0x1526('0xc3')]+=0x1;_0x18a359[_0x1526('0xc4')]=_0x1526('0xc3');logger['debug'](_0x1526('0xc5'),_0x5bc819,util[_0x1526('0x44')](_0x18a359,{'showHidden':![],'depth':null}));ami[_0x1526('0x49')](_0x1526('0xc6'),_0x18a359);}if(_0x18a359[_0x1526('0x39')]){_0x3e0785[_0x1526('0xc7')]+=0x1;_0x18a359['lastevent']=_0x1526('0xc7');logger[_0x1526('0x4a')](_0x1526('0xc8'),_0x5bc819,util['inspect'](_0x18a359,{'showHidden':![],'depth':null}));ami[_0x1526('0x49')](_0x1526('0xc9'),_0x18a359);}}else{_0x3e0785[_0x1526('0xca')]+=_0x3e0785[_0x1526('0xbd')];}logger[_0x1526('0x76')](_0x1526('0xcb'),_0x5bc819,_0x18a359[_0x1526('0x4f')],_0x18a359[_0x1526('0x59')],_0x3d703b);this[_0x1526('0x12')][_0x5bc819]=_0x18a359;Object[_0x1526('0x66')](this[_0x1526('0x13')][_0x18a359[_0x1526('0x4f')]],_0x3e0785);if(_0x18a359[_0x1526('0x85')]){this[_0x1526('0x82')](_0x18a359,_0x1526('0x26'));}}}logger[_0x1526('0x4a')](_0x1526('0xcc'),_0x5bc819,util[_0x1526('0x44')](this[_0x1526('0xf')][_0x5bc819],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x18a359)&&_0x18a359['queuecallerexitreason']!==_0x1526('0x54')){ami['emit']('custom:voiceQueueReport',this[_0x1526('0xf')][_0x5bc819]);delete this[_0x1526('0xf')][_0x5bc819];delete this[_0x1526('0x12')][_0x5bc819];if(this[_0x1526('0x16')][_0x5bc819]){delete this[_0x1526('0x16')][_0x5bc819];}}};VoiceQueueReport[_0x1526('0xa')]['syncHangup']=function(_0x289aee){try{if(this[_0x1526('0x6d')](_0x289aee)){logger[_0x1526('0x4a')](_0x1526('0xcd'),_0x289aee[_0x1526('0x4d')],util['inspect'](_0x289aee,{'showHidden':![],'depth':null}));if(this[_0x1526('0xf')][_0x289aee[_0x1526('0x4d')]]){return this[_0x1526('0xce')](_0x289aee[_0x1526('0x4d')],_0x289aee[_0x1526('0xcf')],![]);}if(this[_0x1526('0xf')][_0x289aee[_0x1526('0x93')]]){if(_0x289aee[_0x1526('0xd0')]==='21'){return;}return this[_0x1526('0xce')](_0x289aee[_0x1526('0x93')],_0x289aee['cause-txt'],!![]);}var _0x18d076=Object[_0x1526('0xa5')](this[_0x1526('0xf')]);for(var _0x3f26e9=0x0;_0x3f26e9<_0x18d076[_0x1526('0xbc')];_0x3f26e9++){var _0xb43585=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x18d076[_0x3f26e9]]);if(_0xb43585&&_0xb43585['transferid']===_0x289aee['uniqueid']){return this['handleHangup'](_0xb43585[_0x1526('0x4d')],_0x289aee['cause-txt'],!![]);}}}}catch(_0x124ffe){logger[_0x1526('0x43')]('[%s][voiceQueueReport][hangup]',_0x289aee[_0x1526('0x4d')],util[_0x1526('0x44')](_0x124ffe,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x2e')]=function(_0x315ba5){try{if(this[_0x1526('0x6d')](_0x315ba5)){logger[_0x1526('0x4a')](_0x1526('0xd1'),_0x315ba5['uniqueid'],util[_0x1526('0x44')](_0x315ba5,{'showHidden':![],'depth':null}));var _0x2a8968;var _0x524af5;var _0x4afefd;if(this['queueReports'][_0x315ba5['transfereeuniqueid']]){_0x2a8968=_[_0x1526('0x7b')](this['queueReports'][_0x315ba5[_0x1526('0xd2')]]);_0x2a8968[_0x1526('0x9b')]=_0x315ba5[_0x1526('0xd3')];_0x2a8968[_0x1526('0x9d')]=_0x315ba5[_0x1526('0xd4')];_0x2a8968['queuecallerexitreason']=_0x1526('0x54');_0x2a8968[_0x1526('0x8d')]=!![];_0x2a8968[_0x1526('0x99')]='ATTENDED';if(this['queueReports'][_0x315ba5[_0x1526('0xd4')]]){_0x4afefd=this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd4')]];this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd4')]]=this['queueReports'][_0x315ba5[_0x1526('0xd2')]];this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd2')]]=_0x4afefd;_0x524af5=_['last'](this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd2')]]);_0x524af5[_0x1526('0x3c')]=!![];}logger['info'](_0x1526('0xd5'),_0x315ba5[_0x1526('0x4d')],_0x2a8968[_0x1526('0x4f')],_0x2a8968[_0x1526('0x59')],_0x2a8968[_0x1526('0x9b')],_0x2a8968[_0x1526('0x9d')]);}else if(this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd6')]]){_0x2a8968=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd6')]]);_0x2a8968[_0x1526('0x9b')]=_0x315ba5[_0x1526('0xd7')];_0x2a8968[_0x1526('0x9d')]=_0x315ba5[_0x1526('0xd8')];_0x2a8968['queuecallerexitreason']=_0x1526('0x54');_0x2a8968[_0x1526('0x8d')]=!![];_0x2a8968['transfertype']=_0x1526('0xd9');if(this[_0x1526('0xf')][_0x315ba5['origtransfereruniqueid']]){_0x4afefd=this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd8')]];this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd8')]]=this['queueReports'][_0x315ba5[_0x1526('0xd6')]];this[_0x1526('0xf')][_0x315ba5['transfertargetuniqueid']]=_0x4afefd;_0x524af5=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd6')]]);_0x524af5[_0x1526('0x3c')]=!![];}logger[_0x1526('0x76')](_0x1526('0xd5'),_0x315ba5[_0x1526('0x4d')],_0x2a8968[_0x1526('0x4f')],_0x2a8968[_0x1526('0x59')],_0x2a8968[_0x1526('0x9b')],_0x2a8968[_0x1526('0x9d')]);}else if(this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd8')]]){_0x2a8968=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x315ba5['origtransfereruniqueid']]);_0x2a8968[_0x1526('0x9b')]=_0x315ba5[_0x1526('0xd7')];_0x2a8968[_0x1526('0x9d')]=_0x315ba5[_0x1526('0xd8')];_0x2a8968[_0x1526('0x53')]=_0x1526('0x54');_0x2a8968[_0x1526('0x8d')]=!![];_0x2a8968[_0x1526('0x99')]=_0x1526('0xd9');_0x2a8968['switch']=!![];_0x2a8968[_0x1526('0xda')]=_0x315ba5[_0x1526('0xd2')];}else if(this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd4')]]){_0x2a8968=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x315ba5[_0x1526('0xd4')]]);_0x2a8968[_0x1526('0x9b')]=_0x315ba5[_0x1526('0xd3')];_0x2a8968[_0x1526('0x9d')]=_0x315ba5[_0x1526('0xd4')];_0x2a8968[_0x1526('0x53')]='ATTENDEDTRANSFER';_0x2a8968[_0x1526('0x8d')]=!![];_0x2a8968[_0x1526('0x99')]=_0x1526('0xd9');_0x2a8968[_0x1526('0x3c')]=!![];_0x2a8968[_0x1526('0xda')]=_0x315ba5[_0x1526('0xd6')];}}}catch(_0x4b4dba){logger[_0x1526('0x43')](_0x1526('0xd1'),_0x315ba5['uniqueid'],util['inspect'](_0x4b4dba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x30')]=function(_0x1b0217){try{if(this[_0x1526('0x6d')](_0x1b0217)){logger[_0x1526('0x4a')](_0x1526('0xdb'),_0x1b0217[_0x1526('0x4d')],util[_0x1526('0x44')](_0x1b0217,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1b0217['transfereeuniqueid']]){var _0x577bf7=_[_0x1526('0x7b')](this['queueReports'][_0x1b0217[_0x1526('0xd2')]]);_0x577bf7['queuecallerexitreason']=_0x1526('0xdc');_0x577bf7[_0x1526('0x8d')]=!![];_0x577bf7[_0x1526('0x99')]=_0x1526('0xdd');_0x577bf7[_0x1526('0x9b')]=_0x1b0217['extension'];_0x577bf7[_0x1526('0x9d')]=_0x1b0217[_0x1526('0xd2')];logger[_0x1526('0x76')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1b0217['uniqueid'],_0x577bf7['queue'],_0x577bf7[_0x1526('0x59')],_0x577bf7[_0x1526('0x9b')],_0x577bf7[_0x1526('0x9d')]);this[_0x1526('0x27')]({'event':_0x1526('0xde'),'uniqueid':_0x1b0217[_0x1526('0xd2')],'context':_0x1b0217['context'],'channel':_0x1b0217[_0x1526('0xdf')]});}}}catch(_0x35f353){logger[_0x1526('0x43')]('[%s][voiceQueueReport][blindtransfer]',_0x1b0217[_0x1526('0x4d')],util['inspect'](_0x35f353,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1526('0x2b')]=function(_0x1d5016){try{if(this[_0x1526('0x6d')](_0x1d5016)){logger[_0x1526('0x4a')]('[%s][voiceQueueReport][musiconholdstart]',_0x1d5016['uniqueid'],util[_0x1526('0x44')](_0x1d5016,{'showHidden':![],'depth':null}));if(this[_0x1526('0xf')][_0x1d5016['uniqueid']]){var _0x3aec69=_['last'](this[_0x1526('0xf')][_0x1d5016['uniqueid']]);if(!_[_0x1526('0xe0')](_0x3aec69[_0x1526('0x85')])){_0x3aec69[_0x1526('0xe1')]=moment()[_0x1526('0x4e')](_0x1526('0x7f'));logger[_0x1526('0x76')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x1d5016[_0x1526('0x4d')],_0x3aec69[_0x1526('0xe1')]);}}}}catch(_0x3fdabc){logger['error'](_0x1526('0xe2'),_0x1d5016[_0x1526('0x4d')],util['inspect'](_0x3fdabc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1526('0xa')][_0x1526('0x2c')]=function(_0x5a5399){try{if(this['isNotNull'](_0x5a5399)){logger[_0x1526('0x4a')](_0x1526('0xe3'),_0x5a5399[_0x1526('0x4d')],util['inspect'](_0x5a5399,{'showHidden':![],'depth':null}));if(this[_0x1526('0xf')][_0x5a5399['uniqueid']]){var _0x51d8b8=_[_0x1526('0x7b')](this[_0x1526('0xf')][_0x5a5399['uniqueid']]);if(!_[_0x1526('0xe0')](_0x51d8b8[_0x1526('0xe1')])){_0x51d8b8['mohtime']+=moment()[_0x1526('0xbf')](0x0)[_0x1526('0xbe')](_0x51d8b8[_0x1526('0xe1')],'seconds');logger[_0x1526('0x76')](_0x1526('0xe4'),_0x5a5399[_0x1526('0x4d')],_0x51d8b8[_0x1526('0xe5')]);delete _0x51d8b8[_0x1526('0xe1')];}}}}catch(_0x17c990){logger[_0x1526('0x43')](_0x1526('0xe3'),_0x5a5399[_0x1526('0x4d')],util[_0x1526('0x44')](_0x17c990,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1526('0xe6')]=function(_0x528fd0){try{if(this[_0x1526('0x6d')](_0x528fd0)){logger['debug']('[%s][voiceQueueReport][newexten]\x20event:',_0x528fd0[_0x1526('0x4d')],util[_0x1526('0x44')](_0x528fd0,{'showHidden':![],'depth':null}));if(_0x528fd0[_0x1526('0xe7')][_0x1526('0xe8')]()===_0x1526('0xe9')){_0x528fd0[_0x1526('0xea')]=_0x528fd0['appdata']&&_0x528fd0[_0x1526('0xeb')][_0x1526('0x91')](_0x1526('0xec'))?_0x528fd0['appdata']:(_0x528fd0[_0x1526('0xeb')]||_0x528fd0['applicationdata'])[_0x1526('0xe8')]();if(_[_0x1526('0x91')](_0x528fd0['applicationdata'][_0x1526('0xe8')](),_0x1526('0xed'))){logger[_0x1526('0x76')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x528fd0['uniqueid'],_0x528fd0[_0x1526('0xe7')],_0x528fd0[_0x1526('0xea')]);if(_[_0x1526('0x5d')](this[_0x1526('0x12')][_0x528fd0[_0x1526('0x4d')]]))this['channels'][_0x528fd0['uniqueid']]={};var _0x4d71d9=_0x528fd0['applicationdata'][_0x1526('0xee')]('=');var _0x57eaee=_0x4d71d9[0x0]['toLowerCase']()[_0x1526('0xef')](/cdr\((.*)\)/);if(_0x57eaee)this['channels'][_0x528fd0[_0x1526('0x4d')]][_0x57eaee[0x1]]=_0x4d71d9[0x1];}}}}catch(_0x36ea74){logger[_0x1526('0x43')](_0x1526('0xf0'),_0x528fd0[_0x1526('0x4d')],util[_0x1526('0x44')](_0x36ea74,{'showHidden':![],'depth':null}));}};module[_0x1526('0xf1')]=VoiceQueueReport;
\ No newline at end of file
index dbb87a6..53ce6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6f4=['../client','createHistory','campaign','Request','CreateReportAgentPreview'];(function(_0x1ac94f,_0x2d43a1){var _0x50f041=function(_0x4b71d2){while(--_0x4b71d2){_0x1ac94f['push'](_0x1ac94f['shift']());}};_0x50f041(++_0x2d43a1);}(_0xd6f4,0x17c));var _0x4d6f=function(_0x2f97ca,_0x39d220){_0x2f97ca=_0x2f97ca-0x0;var _0x286d2a=_0xd6f4[_0x2f97ca];return _0x286d2a;};'use strict';var client=require(_0x4d6f('0x0'));exports[_0x4d6f('0x1')]=function(_0x15f3a9){return function(){_0x15f3a9[_0x4d6f('0x2')]=_0x15f3a9['queue'];return client[_0x4d6f('0x3')](_0x4d6f('0x4'),{'body':_0x15f3a9,'log':_0x4d6f('0x4')});};};
\ No newline at end of file
+var _0xf7fe=['../client','createHistory','CreateReportAgentPreview'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0xf7fe,0x120));var _0xef7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf7fe[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xef7f('0x0'));exports[_0xef7f('0x1')]=function(_0x5f4182){return function(){_0x5f4182['campaign']=_0x5f4182['queue'];return client['Request'](_0xef7f('0x2'),{'body':_0x5f4182,'log':_0xef7f('0x2')});};};
\ No newline at end of file
index 65017e8..9fb207a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d0=['CreateAttachment','Request'];(function(_0x3ad2ec,_0x56d0e5){var _0x4c9852=function(_0x1d26b5){while(--_0x1d26b5){_0x3ad2ec['push'](_0x3ad2ec['shift']());}};_0x4c9852(++_0x56d0e5);}(_0x90d0,0x10f));var _0x090d=function(_0x1b45a1,_0x9dbb01){_0x1b45a1=_0x1b45a1-0x0;var _0x5e9b25=_0x90d0[_0x1b45a1];return _0x5e9b25;};'use strict';var client=require('../client');exports['create']=function(_0x170438){return client[_0x090d('0x0')]('CreateAttachment',{'body':_0x170438,'log':_0x090d('0x1')});};
\ No newline at end of file
+var _0x69c3=['CreateAttachment','create','Request'];(function(_0x2b8f2b,_0x3e41ac){var _0x12b3ff=function(_0x179f1f){while(--_0x179f1f){_0x2b8f2b['push'](_0x2b8f2b['shift']());}};_0x12b3ff(++_0x3e41ac);}(_0x69c3,0xd3));var _0x369c=function(_0x20a7cf,_0x326661){_0x20a7cf=_0x20a7cf-0x0;var _0x396d8a=_0x69c3[_0x20a7cf];return _0x396d8a;};'use strict';var client=require('../client');exports[_0x369c('0x0')]=function(_0x37bf55){return client[_0x369c('0x1')](_0x369c('0x2'),{'body':_0x37bf55,'log':_0x369c('0x2')});};
\ No newline at end of file
index 49a04de..8d860a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x5482f4,_0x150cac){var _0x42d1ec=function(_0x2d3af5){while(--_0x2d3af5){_0x5482f4['push'](_0x5482f4['shift']());}};_0x42d1ec(++_0x150cac);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xc4aa[_0x2235bf];return _0x4c3a64;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
+var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x35f6b4,_0x505966){var _0x10f072=function(_0x20e563){while(--_0x20e563){_0x35f6b4['push'](_0x35f6b4['shift']());}};_0x10f072(++_0x505966);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0xc4aa[_0x342baa];return _0x1208f3;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
index 2672276..73d99cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd891=['GetCmContact','../client','createContact','Request','getContacts'];(function(_0x4c9380,_0x2fefc0){var _0x49a523=function(_0x165e85){while(--_0x165e85){_0x4c9380['push'](_0x4c9380['shift']());}};_0x49a523(++_0x2fefc0);}(_0xd891,0x1f0));var _0x1d89=function(_0x56e27e,_0x380244){_0x56e27e=_0x56e27e-0x0;var _0x31b4f8=_0xd891[_0x56e27e];return _0x31b4f8;};'use strict';var client=require(_0x1d89('0x0'));exports[_0x1d89('0x1')]=function(_0x341da0){return function(){return client[_0x1d89('0x2')]('CreateCmContact',{'body':_0x341da0,'log':'CreateCmContact'});};};exports[_0x1d89('0x3')]=function(_0x5effee){return function(){return client[_0x1d89('0x2')](_0x1d89('0x4'),{'options':_0x5effee,'log':_0x1d89('0x4')});};};
\ No newline at end of file
+var _0xbf16=['getContacts','GetCmContact','../client','createContact','Request'];(function(_0x39772f,_0x5605cb){var _0xc9edbf=function(_0x106a39){while(--_0x106a39){_0x39772f['push'](_0x39772f['shift']());}};_0xc9edbf(++_0x5605cb);}(_0xbf16,0x1ab));var _0x6bf1=function(_0x18add4,_0x38c448){_0x18add4=_0x18add4-0x0;var _0x36a833=_0xbf16[_0x18add4];return _0x36a833;};'use strict';var client=require(_0x6bf1('0x0'));exports[_0x6bf1('0x1')]=function(_0x32fe80){return function(){return client[_0x6bf1('0x2')]('CreateCmContact',{'body':_0x32fe80,'log':'CreateCmContact'});};};exports[_0x6bf1('0x3')]=function(_0x4ae5cf){return function(){return client[_0x6bf1('0x2')](_0x6bf1('0x4'),{'options':_0x4ae5cf,'log':'GetCmContact'});};};
\ No newline at end of file
index 930527e..2bfc1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869e=['ContactId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','DESC','ASC','getContactDialerIvr','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','VoiceQueueId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','scheduledat','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','../client','moment','getContacts','Request','GetCmHopper','CmContact','Contact','updateContacts','format','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact'];(function(_0x10004e,_0xd701e6){var _0x5af990=function(_0x4bab6a){while(--_0x4bab6a){_0x10004e['push'](_0x10004e['shift']());}};_0x5af990(++_0xd701e6);}(_0x869e,0x15c));var _0xe869=function(_0x4c8ae8,_0x56727f){_0x4c8ae8=_0x4c8ae8-0x0;var _0x34a65e=_0x869e[_0x4c8ae8];return _0x34a65e;};'use strict';var client=require(_0xe869('0x0'));var moment=require(_0xe869('0x1'));exports[_0xe869('0x2')]=function(_0x4cacaf,_0x1984e4){return function(){return client[_0xe869('0x3')](_0xe869('0x4'),{'options':{'where':{'VoiceQueueId':_0x4cacaf},'include':[{'model':_0xe869('0x5'),'as':_0xe869('0x6')}],'limit':_0x1984e4,'raw':![]},'log':'getCmHopper'});};};exports[_0xe869('0x7')]=function(_0x1fed87,_0x26a223,_0x26afde){return function(){return client['Request']('UpdateCmHopper',{'body':_0x1fed87,'options':{'where':{'VoiceQueueId':_0x26a223,'scheduledat':{'$lte':moment()[_0xe869('0x8')](_0xe869('0x9'))}},'limit':_0x26afde},'log':_0xe869('0xa')});};};exports[_0xe869('0xb')]=function(_0x3459e6){return client[_0xe869('0x3')](_0xe869('0xa'),{'body':_0x3459e6,'options':{'where':{'ContactId':_0x3459e6[_0xe869('0xc')],'ListId':_0x3459e6['ListId'],'VoiceQueueId':_0x3459e6['VoiceQueueId'],'CampaignId':_0x3459e6[_0xe869('0xd')]}},'log':_0xe869('0xb')});};exports[_0xe869('0xe')]=function(_0x36e14a,_0x4910a9,_0x528ad6){return function(){return client[_0xe869('0x3')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x36e14a,'ListId':_0x4910a9,'ContactId':_0x528ad6}},'log':_0xe869('0xf')});};};exports[_0xe869('0x10')]=function(_0x564867,_0x2e4d79,_0x3599c9,_0x3239d1){return client[_0xe869('0x3')](_0xe869('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x564867,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x2e4d79}}]},'order':[['priority',_0xe869('0x12')],['scheduledat',_0x3239d1],['id',_0xe869('0x13')]],'raw':!![],'limit':_0x3599c9},'log':_0xe869('0x11')});};exports[_0xe869('0x14')]=function(_0x51c4c1,_0x1770db,_0x10f5e1){return client['Request'](_0xe869('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x51c4c1,'active':![],'scheduledat':{'$lte':moment()['format'](_0xe869('0x9'))}},'include':[{'model':_0xe869('0x5'),'as':'Contact'}],'order':[['priority',_0xe869('0x12')],['scheduledat',_0x10f5e1],['id',_0xe869('0x13')]],'raw':!![],'limit':_0x1770db},'log':_0xe869('0x15')});};exports[_0xe869('0x16')]=function(_0x3e8c47,_0x171c18){_0x3e8c47[_0xe869('0x17')]=_0x3e8c47[_0xe869('0x18')];return client[_0xe869('0x3')](_0xe869('0x19'),{'body':_0x3e8c47,'options':{'where':{'ContactId':_0x3e8c47[_0xe869('0xc')],'ListId':_0x3e8c47['ListId'],'VoiceQueueId':_0x3e8c47[_0xe869('0x1a')],'CampaignId':_0x3e8c47[_0xe869('0xd')],'active':_0x171c18?undefined:!![]}},'log':_0xe869('0x19')});};exports[_0xe869('0x1b')]=function(_0x9c22cd){return client['Request'](_0xe869('0x1c'),{'options':{'where':{'VoiceQueueId':_0x9c22cd['id']?_0x9c22cd['id']||null:null}},'log':_0xe869('0x1b')});};exports[_0xe869('0x1d')]=function(_0x286fa5){return function(){return client[_0xe869('0x3')](_0xe869('0x1e'),{'options':{'where':{'id':_0x286fa5},'include':[{'model':_0xe869('0x5'),'as':_0xe869('0x6')},{'model':_0xe869('0x1f'),'as':_0xe869('0x20'),'attributes':['id',_0xe869('0x21')]},{'model':_0xe869('0x22'),'as':_0xe869('0x23'),'attributes':['id','name']}],'raw':!![]},'log':_0xe869('0x24')});};};exports[_0xe869('0x25')]=function(_0x12da29,_0x6a4b2f,_0x2d6fa1){return client[_0xe869('0x3')]('UpdateCmHopper',{'body':_0x12da29,'options':{'where':{'id':_0x6a4b2f},'limit':_0x2d6fa1},'log':_0xe869('0xa')});};exports[_0xe869('0x26')]=function(_0x57e22c,_0x558c32){return function(){return client[_0xe869('0x3')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x57e22c,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xe869('0x8')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x558c32}},'order':[['priority',_0xe869('0x12')],[_0xe869('0x27'),_0xe869('0x12')],['id','ASC']],'include':[{'model':_0xe869('0x5'),'as':'Contact'},{'model':_0xe869('0x1f'),'as':_0xe869('0x20'),'attributes':['id',_0xe869('0x21'),_0xe869('0x28')]}],'group':_0xe869('0x29'),'raw':!![]},'log':_0xe869('0x11')});};};exports[_0xe869('0x2a')]=function(_0x54b9b1,_0xae0ff9){return client[_0xe869('0x3')](_0xe869('0x2b'),{'body':_0x54b9b1,'options':_0xae0ff9||{},'log':'ResetActiveCalls'});};exports['handlePreviewRecallNotifications']=function(_0x423a7f,_0x4ca4ae,_0x4a59fe){return function(){return client[_0xe869('0x3')](_0xe869('0x2c'),{'body':{'where':{'voiceQueueIds':_0x423a7f,'interval':_0x4ca4ae,'availableAgentsIds':_0x4a59fe}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
+var _0x885a=['GetContactRecallMe','User','voicePause','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','moment','getContacts','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','GetContactDialer','priority','scheduledat','ASC','getContactDialerIvr','format','DESC','moveContactManagedDialer','queue','MoveContactManagedDialer','CountReScheduled','getContactPreview','GetCmHopperPreview','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x885a,0x180));var _0xa885=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x885a[_0x1cc8fe];return _0x230054;};'use strict';var client=require('../client');var moment=require(_0xa885('0x0'));exports[_0xa885('0x1')]=function(_0x35456c,_0x2e4bc8){return function(){return client['Request'](_0xa885('0x2'),{'options':{'where':{'VoiceQueueId':_0x35456c},'include':[{'model':_0xa885('0x3'),'as':_0xa885('0x4')}],'limit':_0x2e4bc8,'raw':![]},'log':_0xa885('0x5')});};};exports[_0xa885('0x6')]=function(_0x33f18b,_0x5dfd7e,_0x7ac6bd){return function(){return client[_0xa885('0x7')](_0xa885('0x8'),{'body':_0x33f18b,'options':{'where':{'VoiceQueueId':_0x5dfd7e,'scheduledat':{'$lte':moment()['format'](_0xa885('0x9'))}},'limit':_0x7ac6bd},'log':_0xa885('0x8')});};};exports[_0xa885('0xa')]=function(_0x5e49d0){return client[_0xa885('0x7')](_0xa885('0x8'),{'body':_0x5e49d0,'options':{'where':{'ContactId':_0x5e49d0[_0xa885('0xb')],'ListId':_0x5e49d0[_0xa885('0xc')],'VoiceQueueId':_0x5e49d0[_0xa885('0xd')],'CampaignId':_0x5e49d0[_0xa885('0xe')]}},'log':_0xa885('0xa')});};exports['destroyContact']=function(_0x8a82f5,_0x18af5f,_0x1fb769){return function(){return client[_0xa885('0x7')](_0xa885('0xf'),{'options':{'where':{'VoiceQueueId':_0x8a82f5,'ListId':_0x18af5f,'ContactId':_0x1fb769}},'log':_0xa885('0xf')});};};exports[_0xa885('0x10')]=function(_0x574eb8,_0x3a310b,_0x1d789f,_0x27b24a){return client[_0xa885('0x7')](_0xa885('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x574eb8,'active':![],'scheduledat':{'$lte':moment()['format'](_0xa885('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x3a310b}}]},'order':[[_0xa885('0x12'),'DESC'],[_0xa885('0x13'),_0x27b24a],['id',_0xa885('0x14')]],'raw':!![],'limit':_0x1d789f},'log':'GetContactDialer'});};exports[_0xa885('0x15')]=function(_0x41b3de,_0x5eec42,_0x20a206){return client['Request'](_0xa885('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x41b3de,'active':![],'scheduledat':{'$lte':moment()[_0xa885('0x16')](_0xa885('0x9'))}},'include':[{'model':'CmContact','as':_0xa885('0x4')}],'order':[['priority',_0xa885('0x17')],[_0xa885('0x13'),_0x20a206],['id',_0xa885('0x14')]],'raw':!![],'limit':_0x5eec42},'log':'GetContactDialerIvr'});};exports[_0xa885('0x18')]=function(_0x32b8df,_0x1530b6){_0x32b8df['campaign']=_0x32b8df[_0xa885('0x19')];return client[_0xa885('0x7')](_0xa885('0x1a'),{'body':_0x32b8df,'options':{'where':{'ContactId':_0x32b8df['ContactId'],'ListId':_0x32b8df[_0xa885('0xc')],'VoiceQueueId':_0x32b8df['VoiceQueueId'],'CampaignId':_0x32b8df[_0xa885('0xe')],'active':_0x1530b6?undefined:!![]}},'log':_0xa885('0x1a')});};exports['countReScheduled']=function(_0x1d94c1){return client[_0xa885('0x7')](_0xa885('0x1b'),{'options':{'where':{'VoiceQueueId':_0x1d94c1['id']?_0x1d94c1['id']||null:null}},'log':'countReScheduled'});};exports[_0xa885('0x1c')]=function(_0x14aed1){return function(){return client['Request'](_0xa885('0x1d'),{'options':{'where':{'id':_0x14aed1},'include':[{'model':'CmContact','as':_0xa885('0x4')},{'model':'User','as':_0xa885('0x1e'),'attributes':['id',_0xa885('0x1f')]},{'model':_0xa885('0x20'),'as':_0xa885('0x21'),'attributes':['id',_0xa885('0x1f')]}],'raw':!![]},'log':_0xa885('0x5')});};};exports[_0xa885('0x22')]=function(_0x3f219d,_0x55efb1,_0x517d2f){return client['Request']('UpdateCmHopper',{'body':_0x3f219d,'options':{'where':{'id':_0x55efb1},'limit':_0x517d2f},'log':_0xa885('0x8')});};exports[_0xa885('0x23')]=function(_0x3af5d9,_0x17c0eb){return function(){return client[_0xa885('0x7')](_0xa885('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3af5d9,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xa885('0x9'))},'UserId':{'$in':_0x17c0eb}},'order':[['priority',_0xa885('0x17')],['scheduledat',_0xa885('0x17')],['id','ASC']],'include':[{'model':_0xa885('0x3'),'as':_0xa885('0x4')},{'model':_0xa885('0x25'),'as':'Agent','attributes':['id',_0xa885('0x1f'),_0xa885('0x26')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xa885('0x11')});};};exports['resetActiveCalls']=function(_0x24365e,_0x103985){return client[_0xa885('0x7')]('ResetActiveCalls',{'body':_0x24365e,'options':_0x103985||{},'log':_0xa885('0x27')});};exports[_0xa885('0x28')]=function(_0x79626c,_0x49ae7a,_0x40150e){return function(){return client[_0xa885('0x7')](_0xa885('0x29'),{'body':{'where':{'voiceQueueIds':_0x79626c,'interval':_0x49ae7a,'availableAgentsIds':_0x40150e}},'log':_0xa885('0x28')});};};
\ No newline at end of file
index 7972cad..38139b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfbd=['Request','VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','verifyAdditionalPhones'];(function(_0x48b53a,_0x561ecb){var _0x34b985=function(_0x3459db){while(--_0x3459db){_0x48b53a['push'](_0x48b53a['shift']());}};_0x34b985(++_0x561ecb);}(_0xdfbd,0x1b0));var _0xddfb=function(_0x1f7afe,_0x46e0c8){_0x1f7afe=_0x1f7afe-0x0;var _0x21c82f=_0xdfbd[_0x1f7afe];return _0x21c82f;};'use strict';var client=require(_0xddfb('0x0'));exports[_0xddfb('0x1')]=function(_0x1f1d59,_0x37147e,_0x1ff386){return client[_0xddfb('0x2')](_0xddfb('0x3'),{'body':_0x1f1d59,'reason':_0x37147e,'entity':_0x1ff386,'log':_0xddfb('0x3')});};exports['swapAdditionalPhones']=function(_0x318add,_0x2977c7,_0x49fbe4){return client[_0xddfb('0x2')](_0xddfb('0x4'),{'body':_0x318add,'duration':_0x2977c7,'waitTime':_0x49fbe4,'log':'SwapAdditionalPhones'});};exports[_0xddfb('0x5')]=function(_0x35ebea){return function(){return client[_0xddfb('0x2')](_0xddfb('0x6'),{'body':_0x35ebea,'log':_0xddfb('0x6')});};};
\ No newline at end of file
+var _0x1390=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','Request','VerifyAdditionalPhones'];(function(_0x47974d,_0x109039){var _0xc64915=function(_0x24238c){while(--_0x24238c){_0x47974d['push'](_0x47974d['shift']());}};_0xc64915(++_0x109039);}(_0x1390,0x15f));var _0x0139=function(_0x1e7dc1,_0x58a8ae){_0x1e7dc1=_0x1e7dc1-0x0;var _0xf39103=_0x1390[_0x1e7dc1];return _0xf39103;};'use strict';var client=require(_0x0139('0x0'));exports['verifyAdditionalPhones']=function(_0x1ac322,_0xbf44f7,_0x533818){return client[_0x0139('0x1')](_0x0139('0x2'),{'body':_0x1ac322,'reason':_0xbf44f7,'entity':_0x533818,'log':'VerifyAdditionalPhones'});};exports['swapAdditionalPhones']=function(_0x3ab68f,_0x2bdf0a,_0x1219b2){return client[_0x0139('0x1')]('SwapAdditionalPhones',{'body':_0x3ab68f,'duration':_0x2bdf0a,'waitTime':_0x1219b2,'log':_0x0139('0x3')});};exports[_0x0139('0x4')]=function(_0x2abd28){return function(){return client[_0x0139('0x1')](_0x0139('0x5'),{'body':_0x2abd28,'log':_0x0139('0x5')});};};
\ No newline at end of file
index cb2b5db..c31226b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2863=['Request','GetCmHopperBlack','VoiceQueueId','checkIsBlackListIvr','CampaignId','phone','GetCmHopperBlackIvr','../client','checkIsBlackList'];(function(_0x2db466,_0x228988){var _0x414add=function(_0x2e8823){while(--_0x2e8823){_0x2db466['push'](_0x2db466['shift']());}};_0x414add(++_0x228988);}(_0x2863,0x142));var _0x3286=function(_0x3c3071,_0x702343){_0x3c3071=_0x3c3071-0x0;var _0x5dea24=_0x2863[_0x3c3071];return _0x5dea24;};'use strict';var client=require(_0x3286('0x0'));exports[_0x3286('0x1')]=function(_0x5e07b2){return client[_0x3286('0x2')](_0x3286('0x3'),{'options':{'where':{'VoiceQueueId':_0x5e07b2[_0x3286('0x4')],'phone':_0x5e07b2['phone']},'raw':![]},'log':'GetCmHopperBlack'});};exports[_0x3286('0x5')]=function(_0x5da9d6){return function(){return client['Request'](_0x3286('0x3'),{'options':{'where':{'CampaignId':_0x5da9d6[_0x3286('0x6')],'phone':_0x5da9d6[_0x3286('0x7')]},'raw':![]},'log':_0x3286('0x8')});};};
\ No newline at end of file
+var _0x8a00=['checkIsBlackListIvr','GetCmHopperBlackIvr','../client','Request','VoiceQueueId','phone','GetCmHopperBlack'];(function(_0x462b4f,_0x2f1c0e){var _0x24f643=function(_0x3cc960){while(--_0x3cc960){_0x462b4f['push'](_0x462b4f['shift']());}};_0x24f643(++_0x2f1c0e);}(_0x8a00,0x12f));var _0x08a0=function(_0xcad646,_0x48cdbe){_0xcad646=_0xcad646-0x0;var _0x456a1f=_0x8a00[_0xcad646];return _0x456a1f;};'use strict';var client=require(_0x08a0('0x0'));exports['checkIsBlackList']=function(_0x3a1a94){return client[_0x08a0('0x1')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x3a1a94[_0x08a0('0x2')],'phone':_0x3a1a94[_0x08a0('0x3')]},'raw':![]},'log':_0x08a0('0x4')});};exports[_0x08a0('0x5')]=function(_0x37e186){return client[_0x08a0('0x1')](_0x08a0('0x4'),{'options':{'where':{'CampaignId':_0x37e186['CampaignId'],'phone':_0x37e186[_0x08a0('0x3')]},'raw':![]},'log':_0x08a0('0x6')});};
\ No newline at end of file
index e3b585c..3b541e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x787b=['queue','Request','CreateCmHopperFinal','../client','createContact'];(function(_0x2e3fa4,_0x31224a){var _0x5e46bd=function(_0x3a9321){while(--_0x3a9321){_0x2e3fa4['push'](_0x2e3fa4['shift']());}};_0x5e46bd(++_0x31224a);}(_0x787b,0x1f2));var _0xb787=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0x787b[_0xa79977];return _0x109f10;};'use strict';var client=require(_0xb787('0x0'));exports[_0xb787('0x1')]=function(_0x22356f){return function(){_0x22356f['campaign']=_0x22356f[_0xb787('0x2')];return client[_0xb787('0x3')](_0xb787('0x4'),{'body':_0x22356f,'log':_0xb787('0x4')});};};
\ No newline at end of file
+var _0x67f7=['campaign','queue','CreateCmHopperFinal','../client','createContact'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x67f7,0xd5));var _0x767f=function(_0x1e2d6d,_0x2916c9){_0x1e2d6d=_0x1e2d6d-0x0;var _0x3fcf37=_0x67f7[_0x1e2d6d];return _0x3fcf37;};'use strict';var client=require(_0x767f('0x0'));exports[_0x767f('0x1')]=function(_0x5dc629){return function(){_0x5dc629[_0x767f('0x2')]=_0x5dc629[_0x767f('0x3')];return client['Request']('CreateCmHopperFinal',{'body':_0x5dc629,'log':_0x767f('0x4')});};};
\ No newline at end of file
index 15015f2..91db4b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a72=['endOf','queue','getCampaignHopperHistory','GetCampaignHopperHistory','moment','createHistory','campaign','Request','CreateCmHopperHistory','AvgHandleTime','subtract','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day','format'];(function(_0x176f1c,_0x4c7ca0){var _0x21b27c=function(_0x490d67){while(--_0x490d67){_0x176f1c['push'](_0x176f1c['shift']());}};_0x21b27c(++_0x4c7ca0);}(_0x7a72,0x1be));var _0x27a7=function(_0x18bc1e,_0x440e4e){_0x18bc1e=_0x18bc1e-0x0;var _0x226384=_0x7a72[_0x18bc1e];return _0x226384;};'use strict';var client=require('../client');var moment=require(_0x27a7('0x0'));exports[_0x27a7('0x1')]=function(_0x47e485){_0x47e485[_0x27a7('0x2')]=_0x47e485['queue'];return client[_0x27a7('0x3')]('CreateCmHopperHistory',{'body':_0x47e485,'log':_0x27a7('0x4')});};exports['avgHandleTime']=function(_0x3660eb){return client['Request'](_0x27a7('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0x27a7('0x6')](_0x3660eb,'minutes')['format'](_0x27a7('0x7')),moment()['format'](_0x27a7('0x7'))]}},'raw':![]},'log':_0x27a7('0x8')});};exports[_0x27a7('0x9')]=function(){return function(){return client[_0x27a7('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x27a7('0xa')](_0x27a7('0xb'))[_0x27a7('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x27a7('0xd')](_0x27a7('0xb'))['format'](_0x27a7('0x7'))]},'campaigntype':_0x27a7('0xe')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x27a7('0xf')]=function(){return function(){return client[_0x27a7('0x3')](_0x27a7('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x27a7('0xa')](_0x27a7('0xb'))[_0x27a7('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x27a7('0xb'))['format'](_0x27a7('0x7'))]},'campaigntype':'ivr'},'raw':![]},'log':_0x27a7('0x10')});};};
\ No newline at end of file
+var _0x425d=['../client','createHistory','campaign','queue','Request','CreateCmHopperHistory','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x425d,0x1e0));var _0xd425=function(_0x329406,_0x34ff27){_0x329406=_0x329406-0x0;var _0x42176f=_0x425d[_0x329406];return _0x42176f;};'use strict';var client=require(_0xd425('0x0'));var moment=require('moment');exports[_0xd425('0x1')]=function(_0x2d1eb3){_0x2d1eb3[_0xd425('0x2')]=_0x2d1eb3[_0xd425('0x3')];return client[_0xd425('0x4')](_0xd425('0x5'),{'body':_0x2d1eb3,'log':_0xd425('0x5')});};exports['avgHandleTime']=function(_0x2987c5){return client[_0xd425('0x4')](_0xd425('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0xd425('0x7')](_0x2987c5,_0xd425('0x8'))[_0xd425('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xd425('0x9')](_0xd425('0xa'))]}},'raw':![]},'log':_0xd425('0xb')});};exports[_0xd425('0xc')]=function(){return function(){return client[_0xd425('0x4')](_0xd425('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xd425('0xe')](_0xd425('0xf'))[_0xd425('0x9')](_0xd425('0xa')),moment()[_0xd425('0x10')](_0xd425('0xf'))[_0xd425('0x9')](_0xd425('0xa'))]},'campaigntype':_0xd425('0x3')},'raw':![]},'log':_0xd425('0xd')});};};exports[_0xd425('0x11')]=function(){return function(){return client[_0xd425('0x4')](_0xd425('0x12'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xd425('0xe')]('day')[_0xd425('0x9')](_0xd425('0xa')),moment()[_0xd425('0x10')]('day')[_0xd425('0x9')](_0xd425('0xa'))]},'campaigntype':_0xd425('0x13')},'raw':![]},'log':_0xd425('0x12')});};};
\ No newline at end of file
index 5923cc0..b1c16ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1131=['maxrate','gateway','t38timeout','ListId','key','Trunk','name','callerid','active','Request','NotifyFaxAccount','getFaxAccounts','description','ecm','headerinfo','localstationid','minrate'];(function(_0x3dd824,_0x5281e2){var _0x3ce62f=function(_0x3d858a){while(--_0x3d858a){_0x3dd824['push'](_0x3dd824['shift']());}};_0x3ce62f(++_0x5281e2);}(_0x1131,0x71));var _0x1113=function(_0x544010,_0x94a6ce){_0x544010=_0x544010-0x0;var _0x15443a=_0x1131[_0x544010];return _0x15443a;};'use strict';var client=require('../client');exports[_0x1113('0x0')]=function(){return function(){return client['Request']('GetFaxAccount',{'options':{'raw':![],'attributes':['id','name',_0x1113('0x1'),_0x1113('0x2'),_0x1113('0x3'),_0x1113('0x4'),_0x1113('0x5'),_0x1113('0x6'),'modem',_0x1113('0x7'),'faxdetect',_0x1113('0x8'),'tech','TrunkId',_0x1113('0x9'),_0x1113('0xa')],'include':[{'model':_0x1113('0xb'),'as':_0x1113('0xb'),'attributes':['id',_0x1113('0xc'),_0x1113('0xd'),_0x1113('0xe')]}]},'log':'getFaxAccount'});};};exports['notify']=function(_0x37405f,_0x309aef){return client[_0x1113('0xf')]('NotifyFaxAccount',{'account':{'id':_0x37405f},'body':_0x309aef,'log':_0x1113('0x10')});};
\ No newline at end of file
+var _0x8212=['notify','Request','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate','gateway','t38timeout','tech','ListId','key','Trunk','callerid','active','getFaxAccount'];(function(_0x4df85c,_0x248dfb){var _0x4e2a61=function(_0x4e2c8e){while(--_0x4e2c8e){_0x4df85c['push'](_0x4df85c['shift']());}};_0x4e2a61(++_0x248dfb);}(_0x8212,0xb3));var _0x2821=function(_0x4f1e42,_0x14ad3d){_0x4f1e42=_0x4f1e42-0x0;var _0x5cd55b=_0x8212[_0x4f1e42];return _0x5cd55b;};'use strict';var client=require(_0x2821('0x0'));exports[_0x2821('0x1')]=function(){return function(){return client['Request'](_0x2821('0x2'),{'options':{'raw':![],'attributes':['id',_0x2821('0x3'),_0x2821('0x4'),_0x2821('0x5'),_0x2821('0x6'),_0x2821('0x7'),_0x2821('0x8'),_0x2821('0x9'),'modem',_0x2821('0xa'),'faxdetect',_0x2821('0xb'),_0x2821('0xc'),'TrunkId',_0x2821('0xd'),_0x2821('0xe')],'include':[{'model':_0x2821('0xf'),'as':_0x2821('0xf'),'attributes':['id',_0x2821('0x3'),_0x2821('0x10'),_0x2821('0x11')]}]},'log':_0x2821('0x12')});};};exports[_0x2821('0x13')]=function(_0x4aa28d,_0x11a5fe){return client[_0x2821('0x14')](_0x2821('0x15'),{'account':{'id':_0x4aa28d},'body':_0x11a5fe,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index b9ad3d6..e838d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9560=['update','Request','UpdateFaxMessage','../client'];(function(_0x2b2971,_0x46dbdf){var _0x17d9ee=function(_0x362b6f){while(--_0x362b6f){_0x2b2971['push'](_0x2b2971['shift']());}};_0x17d9ee(++_0x46dbdf);}(_0x9560,0xcb));var _0x0956=function(_0x55d829,_0x43f06c){_0x55d829=_0x55d829-0x0;var _0x52163b=_0x9560[_0x55d829];return _0x52163b;};'use strict';var client=require(_0x0956('0x0'));exports[_0x0956('0x1')]=function(_0x2f41ca,_0x5c8406){return client[_0x0956('0x2')](_0x0956('0x3'),{'body':_0x5c8406,'options':{'where':{'AttachmentId':_0x2f41ca}},'log':_0x0956('0x3')});};
\ No newline at end of file
+var _0x279b=['update','Request','UpdateFaxMessage','../client'];(function(_0x170463,_0x765ba6){var _0x55dcb3=function(_0x1b9b1f){while(--_0x1b9b1f){_0x170463['push'](_0x170463['shift']());}};_0x55dcb3(++_0x765ba6);}(_0x279b,0x1a3));var _0xb279=function(_0x4feb37,_0xba05d5){_0x4feb37=_0x4feb37-0x0;var _0x30dd7d=_0x279b[_0x4feb37];return _0x30dd7d;};'use strict';var client=require(_0xb279('0x0'));exports[_0xb279('0x1')]=function(_0x1739ab,_0x355600){return client[_0xb279('0x2')](_0xb279('0x3'),{'body':_0x355600,'options':{'where':{'AttachmentId':_0x1739ab}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index 4233a65..c10eaac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3447=['getDeskAccounts','Request','name','description','username','password','remoteUri','authType','type','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','Tag','Tags','GetDeskAccount','../../client'];(function(_0x3c31e9,_0x1f2046){var _0x419260=function(_0x2a87c5){while(--_0x2a87c5){_0x3c31e9['push'](_0x3c31e9['shift']());}};_0x419260(++_0x1f2046);}(_0x3447,0x1af));var _0x7344=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0x3447[_0x456fb1];return _0x4083d6;};'use strict';var client=require(_0x7344('0x0'));exports[_0x7344('0x1')]=function(){return function(_0xccf75e){return client[_0x7344('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x7344('0x3'),_0x7344('0x4'),_0x7344('0x5'),_0x7344('0x6'),_0x7344('0x7'),_0x7344('0x8'),_0x7344('0x9'),'serverUrl'],'include':[{'model':_0x7344('0xa'),'as':_0x7344('0xb'),'attributes':['id','name'],'include':[{'model':_0x7344('0xc'),'as':_0x7344('0xd'),'attributes':['id',_0x7344('0x9'),_0x7344('0xe'),_0x7344('0xf')],'include':[{'model':_0x7344('0x10'),'as':'Variable','attributes':['id',_0x7344('0x3')]}]},{'model':_0x7344('0xc'),'as':_0x7344('0x11'),'attributes':['id','type',_0x7344('0xe'),_0x7344('0x12'),_0x7344('0x13'),_0x7344('0x14'),_0x7344('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7344('0x3')]}]},{'model':_0x7344('0xc'),'as':_0x7344('0x15'),'attributes':['id',_0x7344('0x9'),_0x7344('0xe'),_0x7344('0x16'),'nameField',_0x7344('0x17'),_0x7344('0xf')],'include':[{'model':'Variable','as':_0x7344('0x10'),'attributes':['id',_0x7344('0x3')]}]},{'model':_0x7344('0x18'),'as':_0x7344('0x19'),'attributes':['id',_0x7344('0x3')]}]}]},'log':_0x7344('0x1a')});};};
\ No newline at end of file
+var _0xffaf=['Variable','Fields','idField','nameField','customField','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','remoteUri','authType','serverUrl','DeskConfiguration','Configurations','type','variableName','DeskField','Descriptions','content','key','keyType'];(function(_0x525798,_0x77a707){var _0x57da9a=function(_0x20837b){while(--_0x20837b){_0x525798['push'](_0x525798['shift']());}};_0x57da9a(++_0x77a707);}(_0xffaf,0x1f4));var _0xfffa=function(_0x56b138,_0x2396d6){_0x56b138=_0x56b138-0x0;var _0x3df878=_0xffaf[_0x56b138];return _0x3df878;};'use strict';var client=require(_0xfffa('0x0'));exports[_0xfffa('0x1')]=function(){return function(_0x3fa1a5){return client[_0xfffa('0x2')](_0xfffa('0x3'),{'options':{'raw':![],'attributes':['id',_0xfffa('0x4'),_0xfffa('0x5'),_0xfffa('0x6'),_0xfffa('0x7'),_0xfffa('0x8'),_0xfffa('0x9'),'type',_0xfffa('0xa')],'include':[{'model':_0xfffa('0xb'),'as':_0xfffa('0xc'),'attributes':['id',_0xfffa('0x4')],'include':[{'model':'DeskField','as':'Subjects','attributes':['id',_0xfffa('0xd'),'content',_0xfffa('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0xfffa('0xf'),'as':_0xfffa('0x10'),'attributes':['id','type',_0xfffa('0x11'),_0xfffa('0x12'),_0xfffa('0x13'),'keyContent',_0xfffa('0xe')],'include':[{'model':_0xfffa('0x14'),'as':_0xfffa('0x14'),'attributes':['id',_0xfffa('0x4')]}]},{'model':'DeskField','as':_0xfffa('0x15'),'attributes':['id','type',_0xfffa('0x11'),_0xfffa('0x16'),_0xfffa('0x17'),_0xfffa('0x18'),_0xfffa('0xe')],'include':[{'model':_0xfffa('0x14'),'as':'Variable','attributes':['id',_0xfffa('0x4')]}]},{'model':'Tag','as':_0xfffa('0x19'),'attributes':['id',_0xfffa('0x4')]}]}]},'log':_0xfffa('0x3')});};};
\ No newline at end of file
index cd780a8..f1564de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['GetDynamics365Account','../../client','Request','username','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','modernAuthentication','Configurations','name','ticketType','moduleCreate','openNewTab','Dynamics365Field','Subjects','variableName','Variable','Descriptions','type','content','key','keyContent','Fields','idField','nameField','customField','CloudProvider','data2','data5','data7'];(function(_0x3dcefa,_0x48b61c){var _0x3619be=function(_0x155314){while(--_0x155314){_0x3dcefa['push'](_0x3dcefa['shift']());}};_0x3619be(++_0x48b61c);}(_0x0abf,0xe8));var _0xf0ab=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0abf[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0xf0ab('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x4698fb){return client[_0xf0ab('0x1')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id','name',_0xf0ab('0x2'),'password',_0xf0ab('0x3'),_0xf0ab('0x4'),_0xf0ab('0x5'),_0xf0ab('0x6'),_0xf0ab('0x7'),_0xf0ab('0x8'),_0xf0ab('0x9')],'include':[{'model':'Dynamics365Configuration','as':_0xf0ab('0xa'),'attributes':['id',_0xf0ab('0xb'),_0xf0ab('0xc'),_0xf0ab('0xd'),'additionalSearchContact',_0xf0ab('0xe')],'include':[{'model':_0xf0ab('0xf'),'as':_0xf0ab('0x10'),'attributes':['id','type','content',_0xf0ab('0x11')],'include':[{'model':'Variable','as':_0xf0ab('0x12'),'attributes':['id',_0xf0ab('0xb')]}]},{'model':_0xf0ab('0xf'),'as':_0xf0ab('0x13'),'attributes':['id',_0xf0ab('0x14'),_0xf0ab('0x15'),_0xf0ab('0x16'),'keyType',_0xf0ab('0x17'),_0xf0ab('0x11')],'include':[{'model':_0xf0ab('0x12'),'as':_0xf0ab('0x12'),'attributes':['id',_0xf0ab('0xb')]}]},{'model':_0xf0ab('0xf'),'as':_0xf0ab('0x18'),'attributes':['id',_0xf0ab('0x14'),_0xf0ab('0x15'),_0xf0ab('0x19'),_0xf0ab('0x1a'),_0xf0ab('0x1b'),_0xf0ab('0x11')],'include':[{'model':_0xf0ab('0x12'),'as':_0xf0ab('0x12'),'attributes':['id','name']}]}]},{'model':_0xf0ab('0x1c'),'as':_0xf0ab('0x1c'),'attributes':['id',_0xf0ab('0x1d'),_0xf0ab('0x1e'),_0xf0ab('0x1f')]}]},'log':_0xf0ab('0x20')});};};
\ No newline at end of file
+var _0x657b=['openNewTab','Subjects','content','variableName','Variable','Dynamics365Field','Descriptions','type','key','keyType','Fields','nameField','customField','CloudProvider','data2','data5','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','password','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','name','ticketType','moduleCreate'];(function(_0x128f18,_0xd7ba38){var _0x28d6fb=function(_0x155986){while(--_0x155986){_0x128f18['push'](_0x128f18['shift']());}};_0x28d6fb(++_0xd7ba38);}(_0x657b,0x131));var _0xb657=function(_0x17287c,_0x36814a){_0x17287c=_0x17287c-0x0;var _0x3f26a7=_0x657b[_0x17287c];return _0x3f26a7;};'use strict';var client=require(_0xb657('0x0'));exports[_0xb657('0x1')]=function(){return function(_0x92c328){return client[_0xb657('0x2')](_0xb657('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb657('0x4'),_0xb657('0x5'),'remoteUri',_0xb657('0x6'),_0xb657('0x7'),_0xb657('0x8'),_0xb657('0x9'),_0xb657('0xa'),'modernAuthentication'],'include':[{'model':_0xb657('0xb'),'as':'Configurations','attributes':['id',_0xb657('0xc'),_0xb657('0xd'),_0xb657('0xe'),'additionalSearchContact',_0xb657('0xf')],'include':[{'model':'Dynamics365Field','as':_0xb657('0x10'),'attributes':['id','type',_0xb657('0x11'),_0xb657('0x12')],'include':[{'model':_0xb657('0x13'),'as':'Variable','attributes':['id',_0xb657('0xc')]}]},{'model':_0xb657('0x14'),'as':_0xb657('0x15'),'attributes':['id',_0xb657('0x16'),'content',_0xb657('0x17'),_0xb657('0x18'),'keyContent',_0xb657('0x12')],'include':[{'model':_0xb657('0x13'),'as':_0xb657('0x13'),'attributes':['id',_0xb657('0xc')]}]},{'model':'Dynamics365Field','as':_0xb657('0x19'),'attributes':['id',_0xb657('0x16'),'content','idField',_0xb657('0x1a'),_0xb657('0x1b'),_0xb657('0x12')],'include':[{'model':_0xb657('0x13'),'as':_0xb657('0x13'),'attributes':['id',_0xb657('0xc')]}]}]},{'model':_0xb657('0x1c'),'as':_0xb657('0x1c'),'attributes':['id',_0xb657('0x1d'),_0xb657('0x1e'),_0xb657('0x1f')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index 46eed7c..ee8ef58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7b=['nameField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','type','variableName','Descriptions','key','keyType','keyContent','Variable','Fields','content','idField'];(function(_0x2d09df,_0x105345){var _0x1237a0=function(_0x352736){while(--_0x352736){_0x2d09df['push'](_0x2d09df['shift']());}};_0x1237a0(++_0x105345);}(_0xfd7b,0xd1));var _0xbfd7=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xfd7b[_0x13ea00];return _0x1f7347;};'use strict';var client=require(_0xbfd7('0x0'));exports[_0xbfd7('0x1')]=function(){return function(_0x3392ef){return client['Request'](_0xbfd7('0x2'),{'options':{'raw':![],'attributes':['id',_0xbfd7('0x3'),_0xbfd7('0x4'),'apiKey',_0xbfd7('0x5'),_0xbfd7('0x6')],'include':[{'model':_0xbfd7('0x7'),'as':'Configurations','attributes':['id',_0xbfd7('0x3')],'include':[{'model':_0xbfd7('0x8'),'attributes':['id','name']},{'model':_0xbfd7('0x9'),'as':_0xbfd7('0xa'),'attributes':['id',_0xbfd7('0xb'),'content',_0xbfd7('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xbfd7('0x3')]}]},{'model':_0xbfd7('0x9'),'as':_0xbfd7('0xd'),'attributes':['id',_0xbfd7('0xb'),'content',_0xbfd7('0xe'),_0xbfd7('0xf'),_0xbfd7('0x10'),'variableName'],'include':[{'model':_0xbfd7('0x11'),'as':_0xbfd7('0x11'),'attributes':['id','name']}]},{'model':_0xbfd7('0x9'),'as':_0xbfd7('0x12'),'attributes':['id','type',_0xbfd7('0x13'),_0xbfd7('0x14'),_0xbfd7('0x15'),_0xbfd7('0x16'),_0xbfd7('0xc')],'include':[{'model':_0xbfd7('0x11'),'as':_0xbfd7('0x11'),'attributes':['id',_0xbfd7('0x3')]}]}]}]},'log':_0xbfd7('0x2')});};};
\ No newline at end of file
+var _0xc900=['type','content','variableName','Variable','FreshdeskField','Descriptions','key','keyType','Fields','idField','customField','Request','GetFreshdeskAccount','username','apiKey','serverUrl','FreshdeskConfiguration','Configurations','name','Tag','Subjects'];(function(_0x229836,_0x29d21b){var _0x519fc8=function(_0x462044){while(--_0x462044){_0x229836['push'](_0x229836['shift']());}};_0x519fc8(++_0x29d21b);}(_0xc900,0xb3));var _0x0c90=function(_0x438d8a,_0x3bf86f){_0x438d8a=_0x438d8a-0x0;var _0x5c155c=_0xc900[_0x438d8a];return _0x5c155c;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x2f6905){return client[_0x0c90('0x0')](_0x0c90('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x0c90('0x2'),_0x0c90('0x3'),'remoteUri',_0x0c90('0x4')],'include':[{'model':_0x0c90('0x5'),'as':_0x0c90('0x6'),'attributes':['id',_0x0c90('0x7')],'include':[{'model':_0x0c90('0x8'),'attributes':['id',_0x0c90('0x7')]},{'model':'FreshdeskField','as':_0x0c90('0x9'),'attributes':['id',_0x0c90('0xa'),_0x0c90('0xb'),_0x0c90('0xc')],'include':[{'model':_0x0c90('0xd'),'as':_0x0c90('0xd'),'attributes':['id',_0x0c90('0x7')]}]},{'model':_0x0c90('0xe'),'as':_0x0c90('0xf'),'attributes':['id',_0x0c90('0xa'),_0x0c90('0xb'),_0x0c90('0x10'),_0x0c90('0x11'),'keyContent',_0x0c90('0xc')],'include':[{'model':'Variable','as':_0x0c90('0xd'),'attributes':['id','name']}]},{'model':_0x0c90('0xe'),'as':_0x0c90('0x12'),'attributes':['id',_0x0c90('0xa'),_0x0c90('0xb'),_0x0c90('0x13'),'nameField',_0x0c90('0x14'),_0x0c90('0xc')],'include':[{'model':'Variable','as':_0x0c90('0xd'),'attributes':['id',_0x0c90('0x7')]}]}]}]},'log':_0x0c90('0x1')});};};
\ No newline at end of file
index 9955d0c..2dc15ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['Subjects','content','variableName','Variable','Descriptions','type','key','keyContent','GetFreshsalesccount','../../client','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','name','FreshsalesField'];(function(_0x3b814e,_0x14dafc){var _0x4bdb9a=function(_0x4f2d06){while(--_0x4f2d06){_0x3b814e['push'](_0x3b814e['shift']());}};_0x4bdb9a(++_0x14dafc);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x1ba4bb,_0x38c4bd){_0x1ba4bb=_0x1ba4bb-0x0;var _0x31934a=_0xbd0a[_0x1ba4bb];return _0x31934a;};'use strict';var client=require(_0xabd0('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x3b0fc0){return client['Request']('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id','name',_0xabd0('0x1'),_0xabd0('0x2'),_0xabd0('0x3'),_0xabd0('0x4')],'include':[{'model':_0xabd0('0x5'),'as':_0xabd0('0x6'),'attributes':['id',_0xabd0('0x7')],'include':[{'model':_0xabd0('0x8'),'as':_0xabd0('0x9'),'attributes':['id','type',_0xabd0('0xa'),_0xabd0('0xb')],'include':[{'model':_0xabd0('0xc'),'as':'Variable','attributes':['id',_0xabd0('0x7')]}]},{'model':'FreshsalesField','as':_0xabd0('0xd'),'attributes':['id',_0xabd0('0xe'),_0xabd0('0xa'),_0xabd0('0xf'),'keyType',_0xabd0('0x10'),'variableName'],'include':[{'model':_0xabd0('0xc'),'as':_0xabd0('0xc'),'attributes':['id',_0xabd0('0x7')]}]}]}]},'log':_0xabd0('0x11')});};};
\ No newline at end of file
+var _0xffd6=['variableName','Variable','FreshsalesField','key','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','name','username','apiKey','serverUrl','FreshsalesConfiguration','Configurations','Subjects','type','content'];(function(_0x18270f,_0x475de9){var _0x4bc4a2=function(_0x559273){while(--_0x559273){_0x18270f['push'](_0x18270f['shift']());}};_0x4bc4a2(++_0x475de9);}(_0xffd6,0x97));var _0x6ffd=function(_0x2d3ab3,_0x47d90b){_0x2d3ab3=_0x2d3ab3-0x0;var _0x321f9e=_0xffd6[_0x2d3ab3];return _0x321f9e;};'use strict';var client=require(_0x6ffd('0x0'));exports[_0x6ffd('0x1')]=function(){return function(_0x292378){return client['Request']('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x6ffd('0x2'),_0x6ffd('0x3'),_0x6ffd('0x4'),'remoteUri',_0x6ffd('0x5')],'include':[{'model':_0x6ffd('0x6'),'as':_0x6ffd('0x7'),'attributes':['id',_0x6ffd('0x2')],'include':[{'model':'FreshsalesField','as':_0x6ffd('0x8'),'attributes':['id',_0x6ffd('0x9'),_0x6ffd('0xa'),_0x6ffd('0xb')],'include':[{'model':_0x6ffd('0xc'),'as':'Variable','attributes':['id',_0x6ffd('0x2')]}]},{'model':_0x6ffd('0xd'),'as':'Descriptions','attributes':['id',_0x6ffd('0x9'),_0x6ffd('0xa'),_0x6ffd('0xe'),_0x6ffd('0xf'),_0x6ffd('0x10'),_0x6ffd('0xb')],'include':[{'model':_0x6ffd('0xc'),'as':'Variable','attributes':['id',_0x6ffd('0x2')]}]}]}]},'log':_0x6ffd('0x11')});};};
\ No newline at end of file
index e55d837..f4754b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba3a=['../../client','GetSalesforceAccount','name','password','remoteUri','clientId','clientSecret','securityToken','serverUrl','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields'];(function(_0x103f22,_0x4a541b){var _0x5d4a66=function(_0x5c78f1){while(--_0x5c78f1){_0x103f22['push'](_0x103f22['shift']());}};_0x5d4a66(++_0x4a541b);}(_0xba3a,0x84));var _0xaba3=function(_0x10fad9,_0x310fda){_0x10fad9=_0x10fad9-0x0;var _0x221098=_0xba3a[_0x10fad9];return _0x221098;};'use strict';var client=require(_0xaba3('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x806366){return client['Request'](_0xaba3('0x1'),{'options':{'raw':![],'attributes':['id',_0xaba3('0x2'),'username',_0xaba3('0x3'),_0xaba3('0x4'),_0xaba3('0x5'),_0xaba3('0x6'),_0xaba3('0x7'),_0xaba3('0x8'),'type'],'include':[{'model':_0xaba3('0x9'),'as':_0xaba3('0xa'),'attributes':['id',_0xaba3('0x2'),_0xaba3('0xb'),_0xaba3('0xc'),'ticketType',_0xaba3('0xd'),_0xaba3('0xe'),_0xaba3('0xf'),_0xaba3('0x10')],'include':[{'model':_0xaba3('0x11'),'as':_0xaba3('0x12'),'include':[{'model':_0xaba3('0x13'),'as':_0xaba3('0x13'),'attributes':['id','name']}]},{'model':'SalesforceField','as':_0xaba3('0x14'),'include':[{'model':'Variable','as':_0xaba3('0x13'),'attributes':['id',_0xaba3('0x2')]}]},{'model':_0xaba3('0x11'),'as':_0xaba3('0x15'),'include':[{'model':_0xaba3('0x13'),'as':_0xaba3('0x13'),'attributes':['id',_0xaba3('0x2')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x3588=['Request','GetSalesforceAccount','name','username','remoteUri','clientId','clientSecret','securityToken','type','SalesforceConfiguration','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','Fields','../../client','getSalesforceAccounts'];(function(_0x3dc788,_0x183e01){var _0x5455c9=function(_0x4c401c){while(--_0x4c401c){_0x3dc788['push'](_0x3dc788['shift']());}};_0x5455c9(++_0x183e01);}(_0x3588,0x82));var _0x8358=function(_0x536256,_0x237fb5){_0x536256=_0x536256-0x0;var _0x1675f7=_0x3588[_0x536256];return _0x1675f7;};'use strict';var client=require(_0x8358('0x0'));exports[_0x8358('0x1')]=function(){return function(_0x22af33){return client[_0x8358('0x2')](_0x8358('0x3'),{'options':{'raw':![],'attributes':['id',_0x8358('0x4'),_0x8358('0x5'),'password',_0x8358('0x6'),_0x8358('0x7'),_0x8358('0x8'),_0x8358('0x9'),'serverUrl',_0x8358('0xa')],'include':[{'model':_0x8358('0xb'),'as':'Configurations','attributes':['id',_0x8358('0x4'),'moduleSearch',_0x8358('0xc'),_0x8358('0xd'),_0x8358('0xe'),_0x8358('0xf'),'additionalSearchContact',_0x8358('0x10')],'include':[{'model':'SalesforceField','as':_0x8358('0x11'),'include':[{'model':_0x8358('0x12'),'as':_0x8358('0x12'),'attributes':['id',_0x8358('0x4')]}]},{'model':_0x8358('0x13'),'as':_0x8358('0x14'),'include':[{'model':_0x8358('0x12'),'as':_0x8358('0x12'),'attributes':['id',_0x8358('0x4')]}]},{'model':_0x8358('0x13'),'as':_0x8358('0x15'),'include':[{'model':_0x8358('0x12'),'as':_0x8358('0x12'),'attributes':['id',_0x8358('0x4')]}]}]}]},'log':_0x8358('0x3')});};};
\ No newline at end of file
index 68a84ba..63d5506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['type','variableName','Variable','Descriptions','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','name','description','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects'];(function(_0x15dbca,_0x1d7c3c){var _0x326533=function(_0x507ee2){while(--_0x507ee2){_0x15dbca['push'](_0x15dbca['shift']());}};_0x326533(++_0x1d7c3c);}(_0x57ca,0x108));var _0xa57c=function(_0x3d8b3a,_0x44b2f4){_0x3d8b3a=_0x3d8b3a-0x0;var _0x50d2e1=_0x57ca[_0x3d8b3a];return _0x50d2e1;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'email',_0xa57c('0x6'),_0xa57c('0x7')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0xa'),'as':_0xa57c('0xb'),'attributes':['id',_0xa57c('0xc'),'content',_0xa57c('0xd')],'include':[{'model':'Variable','as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':'ServicenowField','as':_0xa57c('0xf'),'attributes':['id','type',_0xa57c('0x10'),_0xa57c('0x11'),'keyType',_0xa57c('0x12'),'variableName'],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0xa'),'as':_0xa57c('0x13'),'attributes':['id','type',_0xa57c('0x10'),'idField',_0xa57c('0x14'),_0xa57c('0x15'),_0xa57c('0xd')],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x16')});};};
\ No newline at end of file
+var _0x5fab=['../../client','getServicenowAccounts','Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','nameField','customField'];(function(_0x11d8fa,_0x5154c5){var _0x5526e6=function(_0x30e1d6){while(--_0x30e1d6){_0x11d8fa['push'](_0x11d8fa['shift']());}};_0x5526e6(++_0x5154c5);}(_0x5fab,0x177));var _0xb5fa=function(_0x3c59b5,_0x40975c){_0x3c59b5=_0x3c59b5-0x0;var _0x40a8a1=_0x5fab[_0x3c59b5];return _0x40a8a1;};'use strict';var client=require(_0xb5fa('0x0'));exports[_0xb5fa('0x1')]=function(){return function(_0x4c67f9){return client[_0xb5fa('0x2')](_0xb5fa('0x3'),{'options':{'raw':![],'attributes':['id',_0xb5fa('0x4'),_0xb5fa('0x5'),_0xb5fa('0x6'),_0xb5fa('0x7'),_0xb5fa('0x8'),_0xb5fa('0x9'),_0xb5fa('0xa')],'include':[{'model':_0xb5fa('0xb'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xb5fa('0xc'),'as':_0xb5fa('0xd'),'attributes':['id',_0xb5fa('0xe'),'content',_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xb5fa('0x11'),'attributes':['id',_0xb5fa('0xe'),_0xb5fa('0x12'),_0xb5fa('0x13'),_0xb5fa('0x14'),_0xb5fa('0x15'),_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]},{'model':_0xb5fa('0xc'),'as':_0xb5fa('0x16'),'attributes':['id','type',_0xb5fa('0x12'),'idField',_0xb5fa('0x17'),_0xb5fa('0x18'),_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 0ec37d4..7a54c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0x14a0,0x8e));var _0x014a=function(_0x27995d,_0x2715be){_0x27995d=_0x27995d-0x0;var _0x45f0b2=_0x14a0[_0x27995d];return _0x45f0b2;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
+var _0x57ca=['name','username','password','remoteUri','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','nameField','getSugarcrmAccounts','GetSugarcrmAccount'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x57ca,0x108));var _0xa57c=function(_0x203efc,_0xe363a9){_0x203efc=_0x203efc-0x0;var _0x2e06ed=_0x57ca[_0x203efc];return _0x2e06ed;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'serverUrl'],'include':[{'model':_0xa57c('0x6'),'as':_0xa57c('0x7'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),_0xa57c('0xc')],'include':[{'model':'Variable','as':_0xa57c('0xd'),'attributes':['id','name']}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0xe'),'attributes':['id','type',_0xa57c('0xb'),'key',_0xa57c('0xf'),_0xa57c('0x10'),'variableName'],'include':[{'model':_0xa57c('0xd'),'as':'Variable','attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0x11'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),'idField',_0xa57c('0x12'),'customField',_0xa57c('0xc')],'include':[{'model':_0xa57c('0xd'),'as':_0xa57c('0xd'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x1')});};};
\ No newline at end of file
index 6f6f7d1..82c9634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf378=['keyContent','Fields','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','key','keyType'];(function(_0x146f98,_0x244654){var _0x3b3be0=function(_0x2609fa){while(--_0x2609fa){_0x146f98['push'](_0x146f98['shift']());}};_0x3b3be0(++_0x244654);}(_0xf378,0x1e8));var _0x8f37=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xf378[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0x8f37('0x0'));exports[_0x8f37('0x1')]=function(){return function(_0x1e3160){return client[_0x8f37('0x2')](_0x8f37('0x3'),{'options':{'raw':![],'attributes':['id',_0x8f37('0x4'),_0x8f37('0x5'),_0x8f37('0x6'),'accessKey','remoteUri',_0x8f37('0x7')],'include':[{'model':_0x8f37('0x8'),'as':_0x8f37('0x9'),'attributes':['id',_0x8f37('0x4')],'include':[{'model':_0x8f37('0xa'),'as':_0x8f37('0xb'),'attributes':['id',_0x8f37('0xc'),_0x8f37('0xd'),_0x8f37('0xe')],'include':[{'model':_0x8f37('0xf'),'as':_0x8f37('0xf'),'attributes':['id',_0x8f37('0x4')]}]},{'model':_0x8f37('0xa'),'as':'Descriptions','attributes':['id',_0x8f37('0xc'),_0x8f37('0xd'),_0x8f37('0x10'),_0x8f37('0x11'),_0x8f37('0x12'),_0x8f37('0xe')],'include':[{'model':_0x8f37('0xf'),'as':_0x8f37('0xf'),'attributes':['id','name']}]},{'model':_0x8f37('0xa'),'as':_0x8f37('0x13'),'attributes':['id',_0x8f37('0xc'),'content','idField',_0x8f37('0x14'),_0x8f37('0x15'),'variableName'],'include':[{'model':_0x8f37('0xf'),'as':_0x8f37('0xf'),'attributes':['id',_0x8f37('0x4')]}]}]}]},'log':_0x8f37('0x3')});};};
\ No newline at end of file
+var _0x0241=['../../client','GetVtigerAccount','name','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','VtigerField','Subjects','content','variableName','Variable','type','key','keyType','keyContent','Fields','idField','nameField'];(function(_0x8854f2,_0x79542c){var _0x38505d=function(_0x5af02b){while(--_0x5af02b){_0x8854f2['push'](_0x8854f2['shift']());}};_0x38505d(++_0x79542c);}(_0x0241,0x118));var _0x1024=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x0241[_0x57b54c];return _0x59cc19;};'use strict';var client=require(_0x1024('0x0'));exports['getVtigerAccounts']=function(){return function(_0x247994){return client['Request'](_0x1024('0x1'),{'options':{'raw':![],'attributes':['id',_0x1024('0x2'),'description',_0x1024('0x3'),_0x1024('0x4'),_0x1024('0x5'),_0x1024('0x6')],'include':[{'model':_0x1024('0x7'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x1024('0x8'),'as':_0x1024('0x9'),'attributes':['id','type',_0x1024('0xa'),_0x1024('0xb')],'include':[{'model':_0x1024('0xc'),'as':_0x1024('0xc'),'attributes':['id',_0x1024('0x2')]}]},{'model':'VtigerField','as':'Descriptions','attributes':['id',_0x1024('0xd'),_0x1024('0xa'),_0x1024('0xe'),_0x1024('0xf'),_0x1024('0x10'),_0x1024('0xb')],'include':[{'model':_0x1024('0xc'),'as':_0x1024('0xc'),'attributes':['id',_0x1024('0x2')]}]},{'model':_0x1024('0x8'),'as':_0x1024('0x11'),'attributes':['id',_0x1024('0xd'),_0x1024('0xa'),_0x1024('0x12'),_0x1024('0x13'),'customField','variableName'],'include':[{'model':'Variable','as':_0x1024('0xc'),'attributes':['id',_0x1024('0x2')]}]}]}]},'log':_0x1024('0x1')});};};
\ No newline at end of file
index 05796c6..337fa70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42e0=['variableName','Fields','idField','nameField','getZendeskAccounts','Request','GetZendeskAccount','name','password','token','remoteUri','authType','serverUrl','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','Variable','type','key','keyType','keyContent'];(function(_0x2f9dc1,_0x113158){var _0x55254c=function(_0x3bb9be){while(--_0x3bb9be){_0x2f9dc1['push'](_0x2f9dc1['shift']());}};_0x55254c(++_0x113158);}(_0x42e0,0x1d0));var _0x042e=function(_0x3c5d55,_0x1fad06){_0x3c5d55=_0x3c5d55-0x0;var _0x623591=_0x42e0[_0x3c5d55];return _0x623591;};'use strict';var client=require('../../client');exports[_0x042e('0x0')]=function(){return function(_0x2bed8c){return client[_0x042e('0x1')](_0x042e('0x2'),{'options':{'raw':![],'attributes':['id',_0x042e('0x3'),'username',_0x042e('0x4'),_0x042e('0x5'),_0x042e('0x6'),_0x042e('0x7'),_0x042e('0x8'),'type'],'include':[{'model':_0x042e('0x9'),'as':_0x042e('0xa'),'attributes':['id',_0x042e('0x3')],'include':[{'model':_0x042e('0xb'),'attributes':['id',_0x042e('0x3')]},{'model':_0x042e('0xc'),'as':_0x042e('0xd'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x042e('0xe'),'as':_0x042e('0xe'),'attributes':['id',_0x042e('0x3')]}]},{'model':_0x042e('0xc'),'as':'Descriptions','attributes':['id',_0x042e('0xf'),'content',_0x042e('0x10'),_0x042e('0x11'),_0x042e('0x12'),_0x042e('0x13')],'include':[{'model':_0x042e('0xe'),'as':_0x042e('0xe'),'attributes':['id','name']}]},{'model':_0x042e('0xc'),'as':_0x042e('0x14'),'attributes':['id',_0x042e('0xf'),'content',_0x042e('0x15'),_0x042e('0x16'),'customField',_0x042e('0x13')],'include':[{'model':_0x042e('0xe'),'as':_0x042e('0xe'),'attributes':['id',_0x042e('0x3')]}]}]}]},'log':_0x042e('0x2')});};};
\ No newline at end of file
+var _0x9c47=['Tag','ZendeskField','Subjects','Variable','Descriptions','content','key','keyType','keyContent','variableName','Fields','idField','customField','../../client','Request','GetZendeskAccount','name','username','password','token','remoteUri','serverUrl','type','ZendeskConfiguration','Configurations'];(function(_0x2c9315,_0x47fca4){var _0x55e83b=function(_0x36e97e){while(--_0x36e97e){_0x2c9315['push'](_0x2c9315['shift']());}};_0x55e83b(++_0x47fca4);}(_0x9c47,0x139));var _0x79c4=function(_0x4ed2da,_0x2520d5){_0x4ed2da=_0x4ed2da-0x0;var _0x28b636=_0x9c47[_0x4ed2da];return _0x28b636;};'use strict';var client=require(_0x79c4('0x0'));exports['getZendeskAccounts']=function(){return function(_0x513e3e){return client[_0x79c4('0x1')](_0x79c4('0x2'),{'options':{'raw':![],'attributes':['id',_0x79c4('0x3'),_0x79c4('0x4'),_0x79c4('0x5'),_0x79c4('0x6'),_0x79c4('0x7'),'authType',_0x79c4('0x8'),_0x79c4('0x9')],'include':[{'model':_0x79c4('0xa'),'as':_0x79c4('0xb'),'attributes':['id','name'],'include':[{'model':_0x79c4('0xc'),'attributes':['id',_0x79c4('0x3')]},{'model':_0x79c4('0xd'),'as':_0x79c4('0xe'),'attributes':['id',_0x79c4('0x9'),'content','variableName'],'include':[{'model':_0x79c4('0xf'),'as':_0x79c4('0xf'),'attributes':['id',_0x79c4('0x3')]}]},{'model':'ZendeskField','as':_0x79c4('0x10'),'attributes':['id',_0x79c4('0x9'),_0x79c4('0x11'),_0x79c4('0x12'),_0x79c4('0x13'),_0x79c4('0x14'),_0x79c4('0x15')],'include':[{'model':_0x79c4('0xf'),'as':_0x79c4('0xf'),'attributes':['id',_0x79c4('0x3')]}]},{'model':_0x79c4('0xd'),'as':_0x79c4('0x16'),'attributes':['id',_0x79c4('0x9'),'content',_0x79c4('0x17'),'nameField',_0x79c4('0x18'),_0x79c4('0x15')],'include':[{'model':_0x79c4('0xf'),'as':'Variable','attributes':['id',_0x79c4('0x3')]}]}]}]},'log':_0x79c4('0x2')});};};
\ No newline at end of file
index 45b65ac..b024e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe049=['description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleSearch','ZohoField','Subjects','content','variableName','Descriptions','type','key','keyContent','Variable','Fields','idField','customField','../../client','Request','GetZohoAccount','name'];(function(_0x3c08f7,_0x2da54b){var _0x1cfc1b=function(_0x3a8070){while(--_0x3a8070){_0x3c08f7['push'](_0x3c08f7['shift']());}};_0x1cfc1b(++_0x2da54b);}(_0xe049,0x140));var _0x9e04=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xe049[_0x11005e];return _0x29338f;};'use strict';var client=require(_0x9e04('0x0'));exports['getZohoAccounts']=function(){return function(_0x1f6075){return client[_0x9e04('0x1')](_0x9e04('0x2'),{'options':{'raw':![],'attributes':['id',_0x9e04('0x3'),_0x9e04('0x4'),_0x9e04('0x5'),_0x9e04('0x6'),_0x9e04('0x7'),_0x9e04('0x8'),_0x9e04('0x9'),_0x9e04('0xa'),_0x9e04('0xb')],'include':[{'model':_0x9e04('0xc'),'as':_0x9e04('0xd'),'attributes':['id',_0x9e04('0x3'),'moduleCreate',_0x9e04('0xe'),_0x9e04('0x4')],'include':[{'model':_0x9e04('0xf'),'as':_0x9e04('0x10'),'attributes':['id','type',_0x9e04('0x11'),_0x9e04('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x9e04('0x3')]}]},{'model':_0x9e04('0xf'),'as':_0x9e04('0x13'),'attributes':['id',_0x9e04('0x14'),_0x9e04('0x11'),_0x9e04('0x15'),'keyType',_0x9e04('0x16'),_0x9e04('0x12')],'include':[{'model':_0x9e04('0x17'),'as':_0x9e04('0x17'),'attributes':['id',_0x9e04('0x3')]}]},{'model':_0x9e04('0xf'),'as':_0x9e04('0x18'),'attributes':['id',_0x9e04('0x14'),'content',_0x9e04('0x19'),'nameField',_0x9e04('0x1a'),_0x9e04('0x12')],'include':[{'model':_0x9e04('0x17'),'as':_0x9e04('0x17'),'attributes':['id','name']}]}]}]},'log':_0x9e04('0x2')});};};
\ No newline at end of file
+var _0x097c=['keyType','keyContent','Fields','idField','customField','GetZohoAccount','../../client','getZohoAccounts','Request','name','description','host','clientId','serverUrl','code','ZohoConfiguration','Configurations','moduleSearch','ZohoField','type','content','variableName','Variable'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x097c,0xa7));var _0xc097=function(_0x49338e,_0x37b1d5){_0x49338e=_0x49338e-0x0;var _0xd2a597=_0x097c[_0x49338e];return _0xd2a597;};'use strict';var client=require(_0xc097('0x0'));exports[_0xc097('0x1')]=function(){return function(_0x26efd7){return client[_0xc097('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xc097('0x3'),_0xc097('0x4'),_0xc097('0x5'),'zone',_0xc097('0x6'),'clientSecret',_0xc097('0x7'),_0xc097('0x8'),'refreshToken'],'include':[{'model':_0xc097('0x9'),'as':_0xc097('0xa'),'attributes':['id',_0xc097('0x3'),'moduleCreate',_0xc097('0xb'),_0xc097('0x4')],'include':[{'model':_0xc097('0xc'),'as':'Subjects','attributes':['id',_0xc097('0xd'),_0xc097('0xe'),_0xc097('0xf')],'include':[{'model':_0xc097('0x10'),'as':'Variable','attributes':['id',_0xc097('0x3')]}]},{'model':_0xc097('0xc'),'as':'Descriptions','attributes':['id','type',_0xc097('0xe'),'key',_0xc097('0x11'),_0xc097('0x12'),'variableName'],'include':[{'model':_0xc097('0x10'),'as':_0xc097('0x10'),'attributes':['id',_0xc097('0x3')]}]},{'model':'ZohoField','as':_0xc097('0x13'),'attributes':['id',_0xc097('0xd'),_0xc097('0xe'),_0xc097('0x14'),'nameField',_0xc097('0x15'),_0xc097('0xf')],'include':[{'model':_0xc097('0x10'),'as':_0xc097('0x10'),'attributes':['id','name']}]}]}]},'log':_0xc097('0x16')});};};
\ No newline at end of file
index d8a182a..2302b83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4da=['Request','IntervalIftime','intervalIftime','../../../config/logger','../client','stack','replace','silly','resolve','number','every','length','map','interval','concat'];(function(_0x1100e4,_0x3edf36){var _0x14024c=function(_0x11f629){while(--_0x11f629){_0x1100e4['push'](_0x1100e4['shift']());}};_0x14024c(++_0x3edf36);}(_0xa4da,0xc6));var _0xaa4d=function(_0x41d02a,_0x355e19){_0x41d02a=_0x41d02a-0x0;var _0x4c3983=_0xa4da[_0x41d02a];return _0x4c3983;};var logger=require(_0xaa4d('0x0'))('dialer');var client=require(_0xaa4d('0x1'));function intervalIftime(_0x5e5852,_0x53906a){const _0x3a8ed2=new Error()[_0xaa4d('0x2')][_0xaa4d('0x3')](/^Error/,'')['trim']();logger[_0xaa4d('0x4')]('intervalIftime\x20called\x20with',_0x5e5852,_0x53906a,_0x3a8ed2);const _0x5a146d=Array['isArray'](_0x5e5852);if(!_0x5e5852||_0x5a146d&&_0x5e5852['length']===0x0){return Promise[_0xaa4d('0x5')](![]);}else{var _0x292d57=[];var _0x2eb769=[];var _0x47011c=_0x5a146d?_0x5e5852:[_0x5e5852];var _0x21c05d=_0x47011c['every'](function(_0xba247c){return typeof _0xba247c===_0xaa4d('0x6');});var _0x1e309f=_0x47011c[_0xaa4d('0x7')](function(_0x17f7a1){return typeof _0x17f7a1==='string';});if(!_0x21c05d&&!_0x1e309f){_0x292d57=_0x47011c['map'](function(_0x494da6){return _0x494da6['id'];});if(_0x292d57[_0xaa4d('0x8')]===0x0){_0x2eb769=_0x47011c[_0xaa4d('0x9')](function(_0x5dde3e){return _0x5dde3e[_0xaa4d('0xa')];});}}else{if(_0x21c05d){_0x292d57=_0x292d57[_0xaa4d('0xb')](_0x47011c);}if(_0x1e309f){_0x2eb769=_0x2eb769[_0xaa4d('0xb')](_0x47011c);}}return client[_0xaa4d('0xc')](_0xaa4d('0xd'),{'intervalIds':_0x292d57,'intervals':_0x2eb769,'timezone':_0x53906a,'log':_0xaa4d('0xd')});}}exports[_0xaa4d('0xe')]=intervalIftime;
\ No newline at end of file
+var _0xaf3f=['concat','Request','IntervalIftime','intervalIftime','../../../config/logger','dialer','replace','silly','intervalIftime\x20called\x20with','isArray','length','every','number','string','map'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0xaf3f,0x103));var _0xfaf3=function(_0x17d98a,_0x406d2d){_0x17d98a=_0x17d98a-0x0;var _0x5f3d79=_0xaf3f[_0x17d98a];return _0x5f3d79;};var logger=require(_0xfaf3('0x0'))(_0xfaf3('0x1'));var client=require('../client');function intervalIftime(_0x12e251,_0x50cf58){const _0x49b258=new Error()['stack'][_0xfaf3('0x2')](/^Error/,'')['trim']();logger[_0xfaf3('0x3')](_0xfaf3('0x4'),_0x12e251,_0x50cf58,_0x49b258);const _0x3410d5=Array[_0xfaf3('0x5')](_0x12e251);if(!_0x12e251||_0x3410d5&&_0x12e251[_0xfaf3('0x6')]===0x0){return Promise['resolve'](![]);}else{var _0x9e252a=[];var _0x5b2014=[];var _0x4a622f=_0x3410d5?_0x12e251:[_0x12e251];var _0x210468=_0x4a622f[_0xfaf3('0x7')](function(_0x1ebb18){return typeof _0x1ebb18===_0xfaf3('0x8');});var _0x2eaaff=_0x4a622f[_0xfaf3('0x7')](function(_0x4096aa){return typeof _0x4096aa===_0xfaf3('0x9');});if(!_0x210468&&!_0x2eaaff){_0x9e252a=_0x4a622f[_0xfaf3('0xa')](function(_0x582eeb){return _0x582eeb['id'];});if(_0x9e252a[_0xfaf3('0x6')]===0x0){_0x5b2014=_0x4a622f['map'](function(_0x34a020){return _0x34a020['interval'];});}}else{if(_0x210468){_0x9e252a=_0x9e252a[_0xfaf3('0xb')](_0x4a622f);}if(_0x2eaaff){_0x5b2014=_0x5b2014[_0xfaf3('0xb')](_0x4a622f);}}return client[_0xfaf3('0xc')](_0xfaf3('0xd'),{'intervalIds':_0x9e252a,'intervals':_0x5b2014,'timezone':_0x50cf58,'log':_0xfaf3('0xd')});}}exports[_0xfaf3('0xe')]=intervalIftime;
\ No newline at end of file
index b9a187d..9faecd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86c9=['util','../client','voiceQueueReport','queuecallerexitAt','CreateMemberReport','lastAssignedTo','SIP/%s','interface','TALKING','diff','queuecallerleaveAt','calleridnum','exten','agent','accountcode','toNumber','Request','voice','membername','starttime','endtime','seconds','moment','lodash'];(function(_0x4c1216,_0x4edb40){var _0x1594b4=function(_0x1737a5){while(--_0x1737a5){_0x4c1216['push'](_0x4c1216['shift']());}};_0x1594b4(++_0x4edb40);}(_0x86c9,0xee));var _0x986c=function(_0xc244a8,_0x1dbf70){_0xc244a8=_0xc244a8-0x0;var _0xbc0dd5=_0x86c9[_0xc244a8];return _0xbc0dd5;};'use strict';var moment=require(_0x986c('0x0'));var _=require(_0x986c('0x1'));var util=require(_0x986c('0x2'));var client=require(_0x986c('0x3'));exports[_0x986c('0x4')]=function(_0x12b894){var _0x7458bc=_0x12b894['queuecallercompleteAt']||_0x12b894[_0x986c('0x5')];return client['Request'](_0x986c('0x6'),{'body':{'channel':'voice','membername':_0x12b894[_0x986c('0x7')],'interface':_['isNil'](_0x12b894['interface'])?util['format'](_0x986c('0x8'),_0x12b894[_0x986c('0x7')]):_0x12b894[_0x986c('0x9')],'type':_0x986c('0xa'),'enterAt':_0x12b894['queuecallerleaveAt'],'exitAt':_0x7458bc,'duration':moment(_0x7458bc)[_0x986c('0xb')](_0x12b894[_0x986c('0xc')],'seconds'),'data1':'inbound','data2':_0x12b894[_0x986c('0xd')],'data3':_0x12b894[_0x986c('0xe')],'data4':null,'data5':_0x12b894['queue'],'role':_0x986c('0xf'),'internal':_0x12b894[_0x986c('0x10')]?_[_0x986c('0x11')](_0x12b894['accountcode']):undefined,'uniqueid':_0x12b894['uniqueid']},'log':_0x986c('0x6')});};exports['voiceDialReport']=function(_0x321b06){return client[_0x986c('0x12')](_0x986c('0x6'),{'body':{'channel':_0x986c('0x13'),'membername':_0x321b06[_0x986c('0x14')],'interface':_0x321b06[_0x986c('0x9')],'type':_0x986c('0xa'),'enterAt':_0x321b06[_0x986c('0x15')],'exitAt':_0x321b06[_0x986c('0x16')],'duration':moment(_0x321b06['endtime'])[_0x986c('0xb')](_0x321b06[_0x986c('0x15')],_0x986c('0x17'))>=0x0?moment(_0x321b06[_0x986c('0x16')])[_0x986c('0xb')](_0x321b06[_0x986c('0x15')],_0x986c('0x17')):null,'data1':'outbound','data2':_0x321b06[_0x986c('0x10')],'data3':_0x321b06['exten'],'data4':_0x321b06['dialstring']||null,'role':_0x986c('0xf'),'internal':_0x321b06['accountcode']?_[_0x986c('0x11')](_0x321b06[_0x986c('0x10')]):undefined,'uniqueid':_0x321b06['uniqueid']},'log':_0x986c('0x6')});};
\ No newline at end of file
+var _0x7d7b=['endtime','diff','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','interface','format','SIP/%s','TALKING','queuecallerleaveAt','seconds','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','voice','membername','starttime'];(function(_0x1933af,_0x3454e8){var _0x393173=function(_0x334d56){while(--_0x334d56){_0x1933af['push'](_0x1933af['shift']());}};_0x393173(++_0x3454e8);}(_0x7d7b,0x125));var _0xb7d7=function(_0x3b2b06,_0x3faf4e){_0x3b2b06=_0x3b2b06-0x0;var _0x103f1f=_0x7d7b[_0x3b2b06];return _0x103f1f;};'use strict';var moment=require(_0xb7d7('0x0'));var _=require(_0xb7d7('0x1'));var util=require(_0xb7d7('0x2'));var client=require(_0xb7d7('0x3'));exports[_0xb7d7('0x4')]=function(_0x2da439){var _0x295a1=_0x2da439['queuecallercompleteAt']||_0x2da439[_0xb7d7('0x5')];return client[_0xb7d7('0x6')](_0xb7d7('0x7'),{'body':{'channel':'voice','membername':_0x2da439[_0xb7d7('0x8')],'interface':_['isNil'](_0x2da439[_0xb7d7('0x9')])?util[_0xb7d7('0xa')](_0xb7d7('0xb'),_0x2da439[_0xb7d7('0x8')]):_0x2da439[_0xb7d7('0x9')],'type':_0xb7d7('0xc'),'enterAt':_0x2da439[_0xb7d7('0xd')],'exitAt':_0x295a1,'duration':moment(_0x295a1)['diff'](_0x2da439[_0xb7d7('0xd')],_0xb7d7('0xe')),'data1':'inbound','data2':_0x2da439[_0xb7d7('0xf')],'data3':_0x2da439[_0xb7d7('0x10')],'data4':null,'data5':_0x2da439[_0xb7d7('0x11')],'role':_0xb7d7('0x12'),'internal':_0x2da439[_0xb7d7('0x13')]?_[_0xb7d7('0x14')](_0x2da439['accountcode']):undefined,'uniqueid':_0x2da439[_0xb7d7('0x15')]},'log':_0xb7d7('0x7')});};exports[_0xb7d7('0x16')]=function(_0x4100e3){return client[_0xb7d7('0x6')](_0xb7d7('0x7'),{'body':{'channel':_0xb7d7('0x17'),'membername':_0x4100e3[_0xb7d7('0x18')],'interface':_0x4100e3[_0xb7d7('0x9')],'type':_0xb7d7('0xc'),'enterAt':_0x4100e3[_0xb7d7('0x19')],'exitAt':_0x4100e3[_0xb7d7('0x1a')],'duration':moment(_0x4100e3[_0xb7d7('0x1a')])[_0xb7d7('0x1b')](_0x4100e3[_0xb7d7('0x19')],_0xb7d7('0xe'))>=0x0?moment(_0x4100e3[_0xb7d7('0x1a')])[_0xb7d7('0x1b')](_0x4100e3['starttime'],_0xb7d7('0xe')):null,'data1':'outbound','data2':_0x4100e3[_0xb7d7('0x13')],'data3':_0x4100e3[_0xb7d7('0x10')],'data4':_0x4100e3[_0xb7d7('0x1c')]||null,'role':'agent','internal':_0x4100e3['accountcode']?_[_0xb7d7('0x14')](_0x4100e3[_0xb7d7('0x13')]):undefined,'uniqueid':_0x4100e3['uniqueid']},'log':_0xb7d7('0x7')});};
\ No newline at end of file
index 82e44ac..f8b8233 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13cc=['GetSettings','Request','ShowSetting','previewRecallmeReminderInterval'];(function(_0x4729ae,_0x35a7c4){var _0x464880=function(_0x2e6d08){while(--_0x2e6d08){_0x4729ae['push'](_0x4729ae['shift']());}};_0x464880(++_0x35a7c4);}(_0x13cc,0x161));var _0xc13c=function(_0x17d30c,_0x1e3ff8){_0x17d30c=_0x17d30c-0x0;var _0x226483=_0x13cc[_0x17d30c];return _0x226483;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xc13c('0x0')](_0xc13c('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0xc13c('0x2')]},'log':_0xc13c('0x3')});};
\ No newline at end of file
+var _0xdb94=['ShowSetting','stopRecordingOnTransfer','GetSettings','../client','getSettings','Request'];(function(_0x116809,_0x199b6f){var _0x1135b4=function(_0x19d20b){while(--_0x19d20b){_0x116809['push'](_0x116809['shift']());}};_0x1135b4(++_0x199b6f);}(_0xdb94,0xab));var _0x4db9=function(_0x57c478,_0x798a8){_0x57c478=_0x57c478-0x0;var _0x13cb90=_0xdb94[_0x57c478];return _0x13cb90;};'use strict';var client=require(_0x4db9('0x0'));exports[_0x4db9('0x1')]=function(){return client[_0x4db9('0x2')](_0x4db9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x4db9('0x4'),'previewRecallmeReminderInterval']},'log':_0x4db9('0x5')});};
\ No newline at end of file
index 3c12b04..9a46356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62ca=['../client','Request','GetTemplate','name'];(function(_0x506d83,_0x1899e9){var _0x335e8b=function(_0x4a7044){while(--_0x4a7044){_0x506d83['push'](_0x506d83['shift']());}};_0x335e8b(++_0x1899e9);}(_0x62ca,0x110));var _0xa62c=function(_0x13bf2d,_0x452732){_0x13bf2d=_0x13bf2d-0x0;var _0x3a293d=_0x62ca[_0x13bf2d];return _0x3a293d;};'use strict';var client=require(_0xa62c('0x0'));exports['getTemplates']=function(_0x364e7d){return function(_0xbd2020){return client[_0xa62c('0x1')](_0xa62c('0x2'),{'options':{'raw':!![],'attributes':['id',_0xa62c('0x3'),'html']},'log':_0xa62c('0x2')});};};
\ No newline at end of file
+var _0x841e=['Request','GetTemplate','name','../client'];(function(_0x16b025,_0x4c8ddf){var _0x21912b=function(_0x54ae90){while(--_0x54ae90){_0x16b025['push'](_0x16b025['shift']());}};_0x21912b(++_0x4c8ddf);}(_0x841e,0x1c3));var _0xe841=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x841e[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xe841('0x0'));exports['getTemplates']=function(_0x3d01e2){return function(_0x1508b0){return client[_0xe841('0x1')](_0xe841('0x2'),{'options':{'raw':!![],'attributes':['id',_0xe841('0x3'),'html']},'log':'GetTemplate'});};};
\ No newline at end of file
index c089662..57a488d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ea=['Condition','operator','field','value','Actions','action','data1','data3','data4','data6','data7','../client','getTriggers','GetTrigger','name','channel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf0ea,0xeb));var _0xaf0e=function(_0x44669b,_0x53dec1){_0x44669b=_0x44669b-0x0;var _0x15a2a2=_0xf0ea[_0x44669b];return _0x15a2a2;};'use strict';var client=require(_0xaf0e('0x0'));exports[_0xaf0e('0x1')]=function(_0x38cdbc){return function(_0x4a6428){return client['Request'](_0xaf0e('0x2'),{'options':{'raw':![],'attributes':['id',_0xaf0e('0x3'),_0xaf0e('0x4'),'status'],'include':[{'model':_0xaf0e('0x5'),'as':'AllConditions','attributes':['id','field',_0xaf0e('0x6'),'value']},{'model':_0xaf0e('0x5'),'as':'AnyConditions','attributes':['id',_0xaf0e('0x7'),'operator',_0xaf0e('0x8')]},{'model':'Action','as':_0xaf0e('0x9'),'attributes':['id',_0xaf0e('0xa'),_0xaf0e('0xb'),'data2',_0xaf0e('0xc'),_0xaf0e('0xd'),'data5',_0xaf0e('0xe'),_0xaf0e('0xf')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0x2b73=['data2','data3','data4','data5','data7','getTriggers','Request','GetTrigger','name','channel','status','AllConditions','field','value','Condition','operator','Action','Actions','data1'];(function(_0x4c950d,_0x3619b4){var _0x31979b=function(_0x3bab15){while(--_0x3bab15){_0x4c950d['push'](_0x4c950d['shift']());}};_0x31979b(++_0x3619b4);}(_0x2b73,0x8a));var _0x32b7=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x2b73[_0x491a7f];return _0x3d8f44;};'use strict';var client=require('../client');exports[_0x32b7('0x0')]=function(_0x380e0a){return function(_0x25543f){return client[_0x32b7('0x1')](_0x32b7('0x2'),{'options':{'raw':![],'attributes':['id',_0x32b7('0x3'),_0x32b7('0x4'),_0x32b7('0x5')],'include':[{'model':'Condition','as':_0x32b7('0x6'),'attributes':['id',_0x32b7('0x7'),'operator',_0x32b7('0x8')]},{'model':_0x32b7('0x9'),'as':'AnyConditions','attributes':['id','field',_0x32b7('0xa'),_0x32b7('0x8')]},{'model':_0x32b7('0xb'),'as':_0x32b7('0xc'),'attributes':['id','action',_0x32b7('0xd'),_0x32b7('0xe'),_0x32b7('0xf'),_0x32b7('0x10'),_0x32b7('0x11'),'data6',_0x32b7('0x12')]}]},'log':_0x32b7('0x2')});};};
\ No newline at end of file
index f777fa7..e6b25f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc770=['defaultuser','../client','getTrunks','Request','GetTrunk','name','registry'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc770,0xd3));var _0x0c77=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc770[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x0c77('0x0'));exports[_0x0c77('0x1')]=function(_0x51f3fd){return function(_0x514623){return client[_0x0c77('0x2')](_0x0c77('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x0c77('0x4'),_0x0c77('0x5'),_0x0c77('0x6')]},'log':_0x0c77('0x3')});};};
\ No newline at end of file
+var _0xb661=['getTrunks','Request','GetTrunk','name','../client'];(function(_0x2d659c,_0x1350fe){var _0x3ec427=function(_0x5236af){while(--_0x5236af){_0x2d659c['push'](_0x2d659c['shift']());}};_0x3ec427(++_0x1350fe);}(_0xb661,0x1d0));var _0x1b66=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0xb661[_0x5608a3];return _0x1ed50a;};'use strict';var client=require(_0x1b66('0x0'));exports[_0x1b66('0x1')]=function(_0x415e5f){return function(_0x2ff1a9){return client[_0x1b66('0x2')](_0x1b66('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x1b66('0x4'),'registry','defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
index 83e6512..d137c00 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(_0xf1ead5,_0x266c33){var _0x9298ba=function(_0x4f4f17){while(--_0x4f4f17){_0xf1ead5['push'](_0xf1ead5['shift']());}};_0x9298ba(++_0x266c33);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x425716,_0x3e9d1c){_0x425716=_0x425716-0x0;var _0x2d39af=_0xcb91[_0x425716];return _0x2d39af;};'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 _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x860e2e,_0xa47c6f){var _0xc9d8a5=function(_0x4d7cf9){while(--_0x4d7cf9){_0x860e2e['push'](_0x860e2e['shift']());}};_0xc9d8a5(++_0xa47c6f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x329d13,_0x1aff27){_0x329d13=_0x329d13-0x0;var _0x33efd9=_0xcb91[_0x329d13];return _0x33efd9;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
index ad29cfc..1ee467a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f9b=['Request','CreateVoiceAgentReport','UpdateVoiceAgentReport','../client','create'];(function(_0x4d1ed7,_0x2806d8){var _0x16dec7=function(_0x2366a1){while(--_0x2366a1){_0x4d1ed7['push'](_0x4d1ed7['shift']());}};_0x16dec7(++_0x2806d8);}(_0x2f9b,0x166));var _0xb2f9=function(_0x2f74a0,_0x3423a3){_0x2f74a0=_0x2f74a0-0x0;var _0x279d07=_0x2f9b[_0x2f74a0];return _0x279d07;};'use strict';var client=require(_0xb2f9('0x0'));exports[_0xb2f9('0x1')]=function(_0x1cbcc2){return client[_0xb2f9('0x2')]('CreateVoiceAgentReport',{'body':_0x1cbcc2,'log':_0xb2f9('0x3')});};exports['update']=function(_0x4d04a9,_0x52f2bd,_0x4fffc9){return client[_0xb2f9('0x2')](_0xb2f9('0x4'),{'body':_0x4d04a9,'options':{'where':{'uniqueid':_0x52f2bd,'interface':_0x4fffc9,'agentcomplete':!![]}},'log':_0xb2f9('0x4')});};
\ No newline at end of file
+var _0x9216=['create','CreateVoiceAgentReport','update','Request','UpdateVoiceAgentReport','../client'];(function(_0x19df8e,_0xc8482){var _0x378598=function(_0x24f1d0){while(--_0x24f1d0){_0x19df8e['push'](_0x19df8e['shift']());}};_0x378598(++_0xc8482);}(_0x9216,0xd1));var _0x6921=function(_0x4291d3,_0x760d53){_0x4291d3=_0x4291d3-0x0;var _0x507bd7=_0x9216[_0x4291d3];return _0x507bd7;};'use strict';var client=require(_0x6921('0x0'));exports[_0x6921('0x1')]=function(_0x410882){return client['Request']('CreateVoiceAgentReport',{'body':_0x410882,'log':_0x6921('0x2')});};exports[_0x6921('0x3')]=function(_0x12ba89,_0x3c26e2,_0x267355){return client[_0x6921('0x4')](_0x6921('0x5'),{'body':_0x12ba89,'options':{'where':{'uniqueid':_0x3c26e2,'interface':_0x267355,'agentcomplete':!![]}},'log':_0x6921('0x5')});};
\ No newline at end of file
index da217c1..a2116d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dce=['YYYY-MM-DD\x20HH:mm:ss','endOf','disposition','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','Request','CreateVoiceCallReport','merge','calleridnum','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','startOf','day','format'];(function(_0x4acb9d,_0x51215f){var _0x2bd014=function(_0x13f77f){while(--_0x13f77f){_0x4acb9d['push'](_0x4acb9d['shift']());}};_0x2bd014(++_0x51215f);}(_0x2dce,0x141));var _0xe2dc=function(_0x293aba,_0x3b9614){_0x293aba=_0x293aba-0x0;var _0x1172e1=_0x2dce[_0x293aba];return _0x1172e1;};'use strict';var moment=require(_0xe2dc('0x0'));var util=require(_0xe2dc('0x1'));var _=require(_0xe2dc('0x2'));var client=require(_0xe2dc('0x3'));exports['create']=function(_0x4f50be){return client[_0xe2dc('0x4')](_0xe2dc('0x5'),{'body':_[_0xe2dc('0x6')](_0x4f50be,{'source':_0x4f50be[_0xe2dc('0x7')],'destinationcontext':_0x4f50be['context'],'callerid':_0x4f50be[_0xe2dc('0x8')],'amaflags':_0xe2dc('0x9')}),'log':'CreateVoiceCallReport'});};exports[_0xe2dc('0xa')]=function(){return function(){return client[_0xe2dc('0x4')](_0xe2dc('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0xe2dc('0xc')](_0xe2dc('0xd'))[_0xe2dc('0xe')](_0xe2dc('0xf')),moment()[_0xe2dc('0x10')](_0xe2dc('0xd'))[_0xe2dc('0xe')](_0xe2dc('0xf'))]}},'attributes':['type',_0xe2dc('0x11'),_0xe2dc('0x12'),_0xe2dc('0x13')]},'log':_0xe2dc('0x14')});};};
\ No newline at end of file
+var _0xf86e=['endOf','disposition','billableseconds','GetVoiceCallReports','moment','../client','create','Request','merge','calleridnum','context','callerid','DOCUMENTATION','CreateVoiceCallReport','getVoiceCallReports','GetVoiceCallReport','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x52e68e,_0x309912){var _0x3211a4=function(_0x467c01){while(--_0x467c01){_0x52e68e['push'](_0x52e68e['shift']());}};_0x3211a4(++_0x309912);}(_0xf86e,0x158));var _0xef86=function(_0x5b5eb4,_0x117c87){_0x5b5eb4=_0x5b5eb4-0x0;var _0x42af53=_0xf86e[_0x5b5eb4];return _0x42af53;};'use strict';var moment=require(_0xef86('0x0'));var util=require('util');var _=require('lodash');var client=require(_0xef86('0x1'));exports[_0xef86('0x2')]=function(_0x474967){return client[_0xef86('0x3')]('CreateVoiceCallReport',{'body':_[_0xef86('0x4')](_0x474967,{'source':_0x474967[_0xef86('0x5')],'destinationcontext':_0x474967[_0xef86('0x6')],'callerid':_0x474967[_0xef86('0x7')],'amaflags':_0xef86('0x8')}),'log':_0xef86('0x9')});};exports[_0xef86('0xa')]=function(){return function(){return client[_0xef86('0x3')](_0xef86('0xb'),{'options':{'where':{'type':[_0xef86('0xc')],'createdAt':{'$between':[moment()['startOf'](_0xef86('0xd'))[_0xef86('0xe')](_0xef86('0xf')),moment()[_0xef86('0x10')](_0xef86('0xd'))['format'](_0xef86('0xf'))]}},'attributes':['type',_0xef86('0x11'),'duration',_0xef86('0x12')]},'log':_0xef86('0x13')});};};
\ No newline at end of file
index 091fc83..1624060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x253d=['CreateVoiceDialReport','../client','create'];(function(_0x5c8b0f,_0x382cdf){var _0x381f29=function(_0x36f8e5){while(--_0x36f8e5){_0x5c8b0f['push'](_0x5c8b0f['shift']());}};_0x381f29(++_0x382cdf);}(_0x253d,0x19c));var _0xd253=function(_0xb23e02,_0x45dcb1){_0xb23e02=_0xb23e02-0x0;var _0x3ef22a=_0x253d[_0xb23e02];return _0x3ef22a;};'use strict';var client=require(_0xd253('0x0'));exports[_0xd253('0x1')]=function(_0x272e7b){return client['Request'](_0xd253('0x2'),{'body':_0x272e7b,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x1655=['../client','create','Request','CreateVoiceDialReport'];(function(_0x5a6d8e,_0x1d47e2){var _0x98f676=function(_0x5d31c4){while(--_0x5d31c4){_0x5a6d8e['push'](_0x5a6d8e['shift']());}};_0x98f676(++_0x1d47e2);}(_0x1655,0x1a4));var _0x5165=function(_0x1056f0,_0x54b1f1){_0x1056f0=_0x1056f0-0x0;var _0x5c57f0=_0x1655[_0x1056f0];return _0x5c57f0;};'use strict';var client=require(_0x5165('0x0'));exports[_0x5165('0x1')]=function(_0x46a4ef){return client[_0x5165('0x2')]('CreateVoiceDialReport',{'body':_0x46a4ef,'log':_0x5165('0x3')});};
\ No newline at end of file
index bc3bb9c..5503b61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['../client','getVoiceExtensions','Request'];(function(_0x26a906,_0x3d135c){var _0x495575=function(_0x2365af){while(--_0x2365af){_0x26a906['push'](_0x26a906['shift']());}};_0x495575(++_0x3d135c);}(_0x4e81,0x1bc));var _0x14e8=function(_0x1dac7a,_0x1828ce){_0x1dac7a=_0x1dac7a-0x0;var _0x4cb363=_0x4e81[_0x1dac7a];return _0x4cb363;};'use strict';var client=require(_0x14e8('0x0'));exports[_0x14e8('0x1')]=function(){return function(){return client[_0x14e8('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id','exten','recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x14e8('0x1')});};};
\ No newline at end of file
+var _0x049e=['GetVoiceExtension','recordingFormat','../client','getVoiceExtensions'];(function(_0x1465d4,_0x2d3d48){var _0x118a84=function(_0x5b95e2){while(--_0x5b95e2){_0x1465d4['push'](_0x1465d4['shift']());}};_0x118a84(++_0x2d3d48);}(_0x049e,0x16a));var _0xe049=function(_0x4b8156,_0x437af2){_0x4b8156=_0x4b8156-0x0;var _0x4a819c=_0x049e[_0x4b8156];return _0x4a819c;};'use strict';var client=require(_0xe049('0x0'));exports[_0xe049('0x1')]=function(){return function(){return client['Request'](_0xe049('0x2'),{'options':{'raw':!![],'attributes':['id','exten',_0xe049('0x3')],'where':{'VoiceExtensionId':null}},'log':_0xe049('0x1')});};};
\ No newline at end of file
index 4ed17ea..3ca542b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe076=['callerid','active','Pause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','Trunk'];(function(_0x2b8729,_0x163ea0){var _0x30e6bd=function(_0x392274){while(--_0x392274){_0x2b8729['push'](_0x2b8729['shift']());}};_0x30e6bd(++_0x163ea0);}(_0xe076,0x1e7));var _0x6e07=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xe076[_0x4b7b62];return _0x2280df;};'use strict';var client=require(_0x6e07('0x0'));exports[_0x6e07('0x1')]=function(){return function(){return client[_0x6e07('0x2')](_0x6e07('0x3'),{'options':{'raw':![],'attributes':['id',_0x6e07('0x4'),_0x6e07('0x5'),_0x6e07('0x6'),'autopause',_0x6e07('0x7'),'type',_0x6e07('0x8'),_0x6e07('0x9'),_0x6e07('0xa'),_0x6e07('0xb'),_0x6e07('0xc'),_0x6e07('0xd'),_0x6e07('0xe'),_0x6e07('0xf'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x6e07('0x10'),_0x6e07('0x11'),'dialQueueTimeout',_0x6e07('0x12'),_0x6e07('0x13'),_0x6e07('0x14'),_0x6e07('0x15'),_0x6e07('0x16'),_0x6e07('0x17'),_0x6e07('0x18'),_0x6e07('0x19'),_0x6e07('0x1a'),_0x6e07('0x1b'),_0x6e07('0x1c'),_0x6e07('0x1d'),_0x6e07('0x1e'),_0x6e07('0x1f'),_0x6e07('0x20'),'dialAMDAfterGreetingSilence',_0x6e07('0x21'),_0x6e07('0x22'),'dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords',_0x6e07('0x23'),_0x6e07('0x24'),_0x6e07('0x25'),'dialRecallMeTimeout',_0x6e07('0x26'),_0x6e07('0x27'),'dialAgiAfterHangupAgent',_0x6e07('0x28'),_0x6e07('0x29'),'monitor_format',_0x6e07('0x2a'),_0x6e07('0x2b'),'dialCutDigit','dialNoSuchNumberMaxRetry',_0x6e07('0x2c'),_0x6e07('0x2d'),_0x6e07('0x2e'),'dialAbandonedMaxRetry','dialAbandonedRetryFrequency',_0x6e07('0x2f'),_0x6e07('0x30'),'dialAgentRejectMaxRetry',_0x6e07('0x31'),_0x6e07('0x32'),'dialPredictiveIntervalMaxThreshold',_0x6e07('0x33'),'dialPreviewAutoRecallMe','dialPreviewRecallmeReminder'],'include':[{'model':_0x6e07('0x34'),'as':_0x6e07('0x34'),'attributes':['id',_0x6e07('0x4'),_0x6e07('0x35'),_0x6e07('0x36')]},{'model':_0x6e07('0x37'),'as':'mandatoryDispositionPause','attributes':['id','name']},{'model':'Trunk','as':_0x6e07('0x38'),'attributes':['id',_0x6e07('0x4'),_0x6e07('0x35'),_0x6e07('0x36')]},{'model':_0x6e07('0x39'),'as':'Interval','attributes':['id','name'],'include':[{'model':_0x6e07('0x39'),'as':_0x6e07('0x3a'),'attributes':['id',_0x6e07('0x4'),_0x6e07('0x3b')]}]}]},'log':_0x6e07('0x1')});};};
\ No newline at end of file
+var _0xc20c=['dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','callerid','active','Pause','mandatoryDispositionPause','Trunk','TrunkBackup','Interval','Intervals','../client','getVoiceQueues','Request','GetVoiceQueue','name','autopause','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x559e0d,_0x277f9c){var _0x59e988=function(_0x1191b0){while(--_0x1191b0){_0x559e0d['push'](_0x559e0d['shift']());}};_0x59e988(++_0x277f9c);}(_0xc20c,0x83));var _0xcc20=function(_0x154192,_0x2d360f){_0x154192=_0x154192-0x0;var _0x3c2792=_0xc20c[_0x154192];return _0x3c2792;};'use strict';var client=require(_0xcc20('0x0'));exports[_0xcc20('0x1')]=function(){return function(){return client[_0xcc20('0x2')](_0xcc20('0x3'),{'options':{'raw':![],'attributes':['id',_0xcc20('0x4'),'acw','acwTimeout',_0xcc20('0x5'),'monitor_format',_0xcc20('0x6'),_0xcc20('0x7'),_0xcc20('0x8'),_0xcc20('0x9'),_0xcc20('0xa'),'dialPowerLevel',_0xcc20('0xb'),_0xcc20('0xc'),_0xcc20('0xd'),_0xcc20('0xe'),_0xcc20('0xf'),_0xcc20('0x10'),_0xcc20('0x11'),_0xcc20('0x12'),'dialQueueProject',_0xcc20('0x13'),_0xcc20('0x14'),_0xcc20('0x15'),'dialBusyRetryFrequency',_0xcc20('0x16'),_0xcc20('0x17'),_0xcc20('0x18'),_0xcc20('0x19'),_0xcc20('0x1a'),_0xcc20('0x1b'),_0xcc20('0x1c'),_0xcc20('0x1d'),_0xcc20('0x1e'),'dialAMDGreeting',_0xcc20('0x1f'),_0xcc20('0x20'),_0xcc20('0x21'),_0xcc20('0x22'),_0xcc20('0x23'),'dialAMDSilenceThreshold','dialAMDMaximumWordLength',_0xcc20('0x24'),_0xcc20('0x25'),_0xcc20('0x26'),_0xcc20('0x27'),_0xcc20('0x28'),'dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy',_0xcc20('0x29'),_0xcc20('0x2a'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xcc20('0x2b'),'dialAbandonedMaxRetry',_0xcc20('0x2c'),_0xcc20('0x2d'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0xcc20('0x2e'),_0xcc20('0x2f'),_0xcc20('0x30'),_0xcc20('0x31'),'dialPreviewAutoRecallMe','dialPreviewRecallmeReminder'],'include':[{'model':'Trunk','as':'Trunk','attributes':['id',_0xcc20('0x4'),_0xcc20('0x32'),_0xcc20('0x33')]},{'model':_0xcc20('0x34'),'as':_0xcc20('0x35'),'attributes':['id',_0xcc20('0x4')]},{'model':_0xcc20('0x36'),'as':_0xcc20('0x37'),'attributes':['id',_0xcc20('0x4'),_0xcc20('0x32'),_0xcc20('0x33')]},{'model':'Interval','as':_0xcc20('0x38'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xcc20('0x39'),'attributes':['id',_0xcc20('0x4'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index ac045cf..d42c900 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(_0x299400,_0xfdf01d){var _0x21a9dc=function(_0x260cd2){while(--_0x260cd2){_0x299400['push'](_0x299400['shift']());}};_0x21a9dc(++_0xfdf01d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0x52535b,_0x1d1541){var _0x4548b2=function(_0x5d5de5){while(--_0x5d5de5){_0x52535b['push'](_0x52535b['shift']());}};_0x4548b2(++_0x1d1541);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 0ebfbc4..8667be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b15=['GetVoiceQueueRtPauses','getVoiceQueueRtPauses','Request'];(function(_0x218d38,_0x4d9338){var _0x22e48d=function(_0x3bc010){while(--_0x3bc010){_0x218d38['push'](_0x218d38['shift']());}};_0x22e48d(++_0x4d9338);}(_0x9b15,0x1a8));var _0x59b1=function(_0x70cd79,_0x2c5d9b){_0x70cd79=_0x70cd79-0x0;var _0xcfb7b0=_0x9b15[_0x70cd79];return _0xcfb7b0;};'use strict';var client=require('../client');exports[_0x59b1('0x0')]=function(_0x5bc950){return function(){return client[_0x59b1('0x1')](_0x59b1('0x2'),{'options':{'where':{'VoiceQueueId':_0x5bc950,'paused':!![]},'raw':!![]},'log':_0x59b1('0x0')});};};
\ No newline at end of file
+var _0xfc6c=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0x59a463,_0x5563ec){var _0x115034=function(_0x2703b4){while(--_0x2703b4){_0x59a463['push'](_0x59a463['shift']());}};_0x115034(++_0x5563ec);}(_0xfc6c,0x13f));var _0xcfc6=function(_0x2b0973,_0x2ad993){_0x2b0973=_0x2b0973-0x0;var _0x54efa1=_0xfc6c[_0x2b0973];return _0x54efa1;};'use strict';var client=require(_0xcfc6('0x0'));exports[_0xcfc6('0x1')]=function(_0x4008ad){return function(){return client['Request'](_0xcfc6('0x2'),{'options':{'where':{'VoiceQueueId':_0x4008ad,'paused':!![]},'raw':!![]},'log':_0xcfc6('0x1')});};};
\ No newline at end of file
index 0503810..3382463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x148f32,_0x27adfd){var _0x3145ab=function(_0x4f4df6){while(--_0x4f4df6){_0x148f32['push'](_0x148f32['shift']());}};_0x3145ab(++_0x27adfd);}(_0x7a54,0x106));var _0x47a5=function(_0x38db6c,_0x1ca383){_0x38db6c=_0x38db6c-0x0;var _0x357226=_0x7a54[_0x38db6c];return _0x357226;};'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(_0xf35975,_0x2cb5a4){var _0x4fd259=function(_0x4d996f){while(--_0x4d996f){_0xf35975['push'](_0xf35975['shift']());}};_0x4fd259(++_0x2cb5a4);}(_0x7a54,0x106));var _0x47a5=function(_0x51cded,_0x17169e){_0x51cded=_0x51cded-0x0;var _0x1bc006=_0x7a54[_0x51cded];return _0x1bc006;};'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 dfa5bab..d33f4d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e0e=['origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','origtransferercontext','attended','../client','transfers','Request','result','transferercalleridname','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','blind','CreateVoiceTransferReport','attendedTransfer'];(function(_0x52f792,_0xbdb4b4){var _0x41fcb3=function(_0x2b5d6b){while(--_0x2b5d6b){_0x52f792['push'](_0x52f792['shift']());}};_0x41fcb3(++_0xbdb4b4);}(_0x7e0e,0xe5));var _0xe7e0=function(_0x11824c,_0x2a27b7){_0x11824c=_0x11824c-0x0;var _0x3b9344=_0x7e0e[_0x11824c];return _0x3b9344;};'use strict';var client=require(_0xe7e0('0x0'));exports[_0xe7e0('0x1')]={};exports['blindTransfer']=function(_0x5802f9){return client[_0xe7e0('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x5802f9[_0xe7e0('0x3')],'transfererchannel':_0x5802f9['transfererchannel'],'transferercalleridnum':_0x5802f9['transferercalleridnum'],'transferercalleridname':_0x5802f9[_0xe7e0('0x4')],'transfererconnectedlinenum':_0x5802f9['transfererconnectedlinenum'],'transfererconnectedlinename':_0x5802f9[_0xe7e0('0x5')],'transfereraccountcode':_0x5802f9[_0xe7e0('0x6')],'transferercontext':_0x5802f9[_0xe7e0('0x7')],'transfererexten':_0x5802f9[_0xe7e0('0x8')],'transfererlinkedid':_0x5802f9[_0xe7e0('0x9')],'transfereechannel':_0x5802f9[_0xe7e0('0xa')],'transfereecalleridnum':_0x5802f9[_0xe7e0('0xb')],'transfereecalleridname':_0x5802f9[_0xe7e0('0xc')],'transfereeconnectedlinenum':_0x5802f9[_0xe7e0('0xd')],'transfereeconnectedlinename':_0x5802f9[_0xe7e0('0xe')],'transfereeaccountcode':_0x5802f9['transfereeaccountcode'],'transfereecontext':_0x5802f9[_0xe7e0('0xf')],'transfereeexten':_0x5802f9[_0xe7e0('0x10')],'transfereelinkedid':_0x5802f9[_0xe7e0('0x11')],'isexternal':_0x5802f9[_0xe7e0('0x12')],'context':_0x5802f9[_0xe7e0('0x13')],'extension':_0x5802f9['extension'],'type':_0xe7e0('0x14')},'log':_0xe7e0('0x15')});};exports[_0xe7e0('0x16')]=function(_0x364a7b){return client['Request'](_0xe7e0('0x15'),{'body':{'result':_0x364a7b[_0xe7e0('0x3')],'transfererchannel':_0x364a7b[_0xe7e0('0x17')],'transferercalleridnum':_0x364a7b['origtransferercalleridnum'],'transferercalleridname':_0x364a7b[_0xe7e0('0x18')],'transfererconnectedlinenum':_0x364a7b[_0xe7e0('0x19')],'transfererconnectedlinename':_0x364a7b[_0xe7e0('0x1a')],'transfereraccountcode':_0x364a7b[_0xe7e0('0x1b')],'transferercontext':_0x364a7b['secondtransferercontext'],'transfererexten':_0x364a7b['secondtransfererexten'],'transfererlinkedid':_0x364a7b['origtransfererlinkedid'],'transfereechannel':_0x364a7b[_0xe7e0('0x1c')],'transfereecalleridnum':_0x364a7b['transfertargetcalleridnum'],'transfereecalleridname':_0x364a7b['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x364a7b[_0xe7e0('0x1d')],'transfereeconnectedlinename':_0x364a7b[_0xe7e0('0x1e')],'transfereeaccountcode':_0x364a7b[_0xe7e0('0x1f')],'transfereecontext':_0x364a7b['transfertargetcontext'],'transfereeexten':_0x364a7b[_0xe7e0('0x20')],'transfereelinkedid':_0x364a7b[_0xe7e0('0x21')],'isexternal':_0x364a7b['isexternal'],'context':_0x364a7b[_0xe7e0('0x22')],'extension':_0x364a7b['origtransfererexten'],'type':_0xe7e0('0x23')},'log':_0xe7e0('0x15')});};
\ No newline at end of file
+var _0x6947=['transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','extension','attendedTransfer','result','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','isexternal','attended','../client','blindTransfer','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten'];(function(_0x5bfaa7,_0x404773){var _0xe1b1a3=function(_0x20a344){while(--_0x20a344){_0x5bfaa7['push'](_0x5bfaa7['shift']());}};_0xe1b1a3(++_0x404773);}(_0x6947,0x134));var _0x7694=function(_0x383ccf,_0x489cde){_0x383ccf=_0x383ccf-0x0;var _0x1e83dd=_0x6947[_0x383ccf];return _0x1e83dd;};'use strict';var client=require(_0x7694('0x0'));exports['transfers']={};exports[_0x7694('0x1')]=function(_0xbc503b){return client[_0x7694('0x2')](_0x7694('0x3'),{'body':{'result':_0xbc503b['result'],'transfererchannel':_0xbc503b[_0x7694('0x4')],'transferercalleridnum':_0xbc503b[_0x7694('0x5')],'transferercalleridname':_0xbc503b[_0x7694('0x6')],'transfererconnectedlinenum':_0xbc503b[_0x7694('0x7')],'transfererconnectedlinename':_0xbc503b[_0x7694('0x8')],'transfereraccountcode':_0xbc503b[_0x7694('0x9')],'transferercontext':_0xbc503b[_0x7694('0xa')],'transfererexten':_0xbc503b[_0x7694('0xb')],'transfererlinkedid':_0xbc503b['transfererlinkedid'],'transfereechannel':_0xbc503b[_0x7694('0xc')],'transfereecalleridnum':_0xbc503b[_0x7694('0xd')],'transfereecalleridname':_0xbc503b['transfereecalleridname'],'transfereeconnectedlinenum':_0xbc503b[_0x7694('0xe')],'transfereeconnectedlinename':_0xbc503b[_0x7694('0xf')],'transfereeaccountcode':_0xbc503b[_0x7694('0x10')],'transfereecontext':_0xbc503b[_0x7694('0x11')],'transfereeexten':_0xbc503b['transfereeexten'],'transfereelinkedid':_0xbc503b[_0x7694('0x12')],'isexternal':_0xbc503b['isexternal'],'context':_0xbc503b['context'],'extension':_0xbc503b[_0x7694('0x13')],'type':'blind'},'log':_0x7694('0x3')});};exports[_0x7694('0x14')]=function(_0x21ec20){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x21ec20[_0x7694('0x15')],'transfererchannel':_0x21ec20['origtransfererchannel'],'transferercalleridnum':_0x21ec20[_0x7694('0x16')],'transferercalleridname':_0x21ec20[_0x7694('0x17')],'transfererconnectedlinenum':_0x21ec20[_0x7694('0x18')],'transfererconnectedlinename':_0x21ec20[_0x7694('0x19')],'transfereraccountcode':_0x21ec20[_0x7694('0x1a')],'transferercontext':_0x21ec20[_0x7694('0x1b')],'transfererexten':_0x21ec20[_0x7694('0x1c')],'transfererlinkedid':_0x21ec20[_0x7694('0x1d')],'transfereechannel':_0x21ec20[_0x7694('0x1e')],'transfereecalleridnum':_0x21ec20[_0x7694('0x1f')],'transfereecalleridname':_0x21ec20[_0x7694('0x20')],'transfereeconnectedlinenum':_0x21ec20['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x21ec20[_0x7694('0x21')],'transfereeaccountcode':_0x21ec20[_0x7694('0x22')],'transfereecontext':_0x21ec20[_0x7694('0x23')],'transfereeexten':_0x21ec20[_0x7694('0x24')],'transfereelinkedid':_0x21ec20[_0x7694('0x25')],'isexternal':_0x21ec20[_0x7694('0x26')],'context':_0x21ec20['origtransferercontext'],'extension':_0x21ec20['origtransfererexten'],'type':_0x7694('0x27')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
index 104b458..7da874c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['resolve','destinationchannel','StopMixMonitor','stop','filename','StopMixMonitor\x20Success','queueChannels','type','inbound','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','exten','context','telephones','outbound','run','event','emit','faxAccounts','send','checkAfterSend','server','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','moment','../../../config/environment','../properties','../model/voiceQueueSummary','listen','SIP','name','timers','timer','agents','pause','QueuePause','error','asterisk','username','join','pick','keys','reload','module','action','Reload','Action','then','message','catch','isConnected','ami\x20disconnected','command','Command','content','voiceQueues','push','find','omit','undefined','values','channels','length','voicechannel','map','uniqueid','channel','format','wav','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','rec','mixmonitorid','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist'];(function(_0x3dfb93,_0x57782b){var _0x2a5177=function(_0x87963c){while(--_0x87963c){_0x3dfb93['push'](_0x3dfb93['shift']());}};_0x2a5177(++_0x57782b);}(_0x5075,0x73));var _0x5507=function(_0x112a3e,_0x23f15c){_0x112a3e=_0x112a3e-0x0;var _0x577bfc=_0x5075[_0x112a3e];return _0x577bfc;};'use strict';var _=require(_0x5507('0x0'));var util=require(_0x5507('0x1'));var jayson=require(_0x5507('0x2'));var schema=require(_0x5507('0x3'));var moment=require(_0x5507('0x4'));var config=require(_0x5507('0x5'));var properties=require(_0x5507('0x6'));var ami=require('../ami');var VoiceQueueSummary=require(_0x5507('0x7'));exports[_0x5507('0x8')]=function(_0x8fb8a3,_0x54267f,_0x5b6d7f){return new Promise(function(_0x2cd9ee,_0x773559){var _0x4c2d6d={'QueuePause':function(_0x42c232){return new Promise(function(_0x7cc84c){var _0xbf4b50=util['format']('%s/%s',_0x5507('0x9'),_0x42c232[_0x5507('0xa')]);if(_0x8fb8a3[_0x5507('0xb')]&&_0x8fb8a3[_0x5507('0xb')][_0xbf4b50]&&_0x8fb8a3['timers'][_0xbf4b50][_0x5507('0xc')]){_0x8fb8a3[_0x5507('0xb')][_0xbf4b50]['updateAcw']();}if(_0x8fb8a3[_0x5507('0xd')][_0xbf4b50]){_0x8fb8a3[_0x5507('0xd')][_0xbf4b50]['updateStatusRealtime']({'statePause':_0x42c232[_0x5507('0xe')]?!![]:![]});}_0x7cc84c({'code':0xc8,'message':_0x5507('0xf')});});},'Reload':function(_0x32c872){var _0x267f27=this;return new Promise(function(_0x13b60a,_0x1f3886){if(ami['isConnected']()==![]){return _0x1f3886(_0x267f27[_0x5507('0x10')](0x1f4,[config[_0x5507('0x11')]['ip'],config[_0x5507('0x11')][_0x5507('0x12')],'ami\x20disconnected'][_0x5507('0x13')]('\x20')));}_0x32c872=_[_0x5507('0x14')](_0x32c872,_[_0x5507('0x15')](properties[_0x5507('0x16')][_0x5507('0x17')]));_0x32c872[_0x5507('0x18')]=_0x5507('0x19');return ami[_0x5507('0x1a')](_0x32c872)[_0x5507('0x1b')](function(_0x2f0c7d){_0x13b60a({'code':0xc8,'message':_0x2f0c7d[_0x5507('0x1c')]});})[_0x5507('0x1d')](function(_0x3822dd){_0x1f3886(_0x267f27['error'](0x1f5,_0x3822dd[_0x5507('0x1c')]));});});},'Command':function(_0x276a81){var _0x4054c6=this;return new Promise(function(_0x193eda,_0x54f473){if(ami[_0x5507('0x1e')]()==![]){return _0x54f473(_0x4054c6[_0x5507('0x10')](0x1f4,[config[_0x5507('0x11')]['ip'],config[_0x5507('0x11')][_0x5507('0x12')],_0x5507('0x1f')]['join']('\x20')));}_0x276a81=_[_0x5507('0x14')](_0x276a81,_0x5507('0x20'));_0x276a81[_0x5507('0x18')]=_0x5507('0x21');return ami[_0x5507('0x1a')](_0x276a81)[_0x5507('0x1b')](function(_0x1fcc8d){_0x193eda({'code':0xc8,'message':_0x1fcc8d[_0x5507('0x22')]});})[_0x5507('0x1d')](function(_0xa47641){_0x54f473(_0x4054c6[_0x5507('0x10')](0x1f5,_0xa47641[_0x5507('0x1c')]));});});},'VoiceQueues':function(){return new Promise(function(_0x164ac7){var _0x2ee6ed=[];for(var _0x1a2203 in _0x8fb8a3['voiceQueues']){if(_0x8fb8a3[_0x5507('0x23')]['hasOwnProperty'](_0x1a2203)){var _0x26335e=_0x8fb8a3['voiceQueues'][_0x1a2203];var _0xa66a01=new VoiceQueueSummary(_0x26335e);_0x2ee6ed[_0x5507('0x24')](_0xa66a01);}}_0x164ac7({'count':_0x2ee6ed['length'],'rows':_0x2ee6ed});});},'UpdateVoiceQueue':function(_0x5cbb09){return new Promise(function(_0xbe8d32,_0x1a18d0){var _0x5912d4=_[_0x5507('0x25')](_0x8fb8a3[_0x5507('0x23')],{'id':parseInt(_0x5cbb09['id'])});var _0x85d383=_[_0x5507('0x26')](_0x5cbb09,['id']);if(_0x5912d4){for(var _0x1e5ce6 in _0x85d383){if(typeof _0x85d383[_0x1e5ce6]!==_0x5507('0x27')&&typeof _0x5912d4[_0x1e5ce6]!=='undefined'){_0x5912d4[_0x1e5ce6]=_0x85d383[_0x1e5ce6];}}_0xbe8d32(_0x5912d4);}else{_0x1a18d0();}});},'VoiceChannels':function(){return new Promise(function(_0x4422ef){var _0x9c1468=_[_0x5507('0x28')](_0x8fb8a3[_0x5507('0x29')]);_0x4422ef({'count':_0x9c1468[_0x5507('0x2a')],'rows':_0x9c1468});});},'VoiceChannelMixMonitor':function(_0x495bbe){var _0x51e692=this;return new Promise(function(_0x3b09be,_0x37c364){if(ami[_0x5507('0x1e')]()==![]){return _0x37c364(_0x51e692[_0x5507('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x5507('0x11')][_0x5507('0x12')],_0x5507('0x1f')][_0x5507('0x13')]('\x20')));}var _0x3cf04d=schema(properties[_0x5507('0x2b')])[_0x5507('0x3')](_0x495bbe);if(_0x3cf04d[_0x5507('0x2a')]>0x0){return _0x37c364(_0x51e692['error'](0x1f4,_[_0x5507('0x2c')](_0x3cf04d,_0x5507('0x1c'))[_0x5507('0x13')](',\x20')));}var _0x51ca35=_['find'](_0x8fb8a3[_0x5507('0x29')],{'uniqueid':_0x495bbe[_0x5507('0x2d')]});if(_0x51ca35&&_0x51ca35[_0x5507('0x2e')]){var _0x17d01c=util[_0x5507('0x2f')]('%s.%s',_0x495bbe['filename']||_0x495bbe[_0x5507('0x2d')],_0x495bbe[_0x5507('0x2f')]||_0x5507('0x30'));return ami[_0x5507('0x1a')]({'action':'MixMonitor','channel':_0x51ca35['channel'],'file':_0x17d01c,'options':_0x5507('0x31')})['then'](function(_0x304daf){var _0x1b32a7=_[_0x5507('0x25')](_0x51ca35[_0x5507('0x32')],{'filename':_0x5507('0x33')+_0x17d01c[_0x5507('0x34')]()});if(_[_0x5507('0x35')](_0x1b32a7)){_0x51ca35[_0x5507('0x32')][_0x5507('0x24')]({'filename':_0x5507('0x33')+_0x17d01c['toLowerCase'](),'createdAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x304daf['mixmonitorid'],'status':_0x5507('0x36')});}else{_0x1b32a7[_0x5507('0x37')]=_0x304daf[_0x5507('0x37')];_0x1b32a7[_0x5507('0x38')]=_0x5507('0x36');}_0x3b09be({'code':0xc8,'message':[_0x495bbe[_0x5507('0x2d')],_0x5507('0x39'),_0x304daf[_0x5507('0x37')]][_0x5507('0x13')]('\x20'),'mixmonitorid':_0x304daf[_0x5507('0x37')]});})[_0x5507('0x1d')](function(_0x2e2307){_0x37c364(_0x51e692[_0x5507('0x10')](0x1f5,[_0x495bbe[_0x5507('0x2d')],_0x2e2307['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x37c364(_0x51e692[_0x5507('0x10')](0x1f5,_0x5507('0x3a')));}});},'VoiceChannelStopMixMonitor':function(_0x417022){var _0x245b0a=this;return new Promise(function(_0xcd4df5,_0x17d7db){if(ami[_0x5507('0x1e')]()==![]){return _0x17d7db(_0x245b0a[_0x5507('0x10')](0x1f4,[config[_0x5507('0x11')]['ip'],config[_0x5507('0x11')][_0x5507('0x12')],_0x5507('0x1f')][_0x5507('0x13')]('\x20')));}var _0x25496b=schema(properties[_0x5507('0x2b')])[_0x5507('0x3')](_0x417022);if(_0x25496b[_0x5507('0x2a')]>0x0){return _0x17d7db(_0x245b0a[_0x5507('0x10')](0x1f4,_[_0x5507('0x2c')](_0x25496b,'message')[_0x5507('0x13')](',\x20')));}var _0x113f74=_['find'](_0x8fb8a3['channels'],{'uniqueid':_0x417022[_0x5507('0x2d')]});if(_0x113f74){return Promise[_0x5507('0x3b')]()[_0x5507('0x1b')](function(){if(_0x113f74[_0x5507('0x2e')]){return ami[_0x5507('0x1a')]({'action':'StopMixMonitor','channel':_0x113f74[_0x5507('0x2e')],'mixmonitorid':_0x417022[_0x5507('0x37')]})[_0x5507('0x1d')](function(){});}})['then'](function(){if(_0x113f74[_0x5507('0x3c')]){return ami[_0x5507('0x1a')]({'action':_0x5507('0x3d'),'channel':_0x113f74[_0x5507('0x3c')],'mixmonitorid':_0x417022[_0x5507('0x37')]})['catch'](function(){});}})[_0x5507('0x1b')](function(){var _0x505918=_[_0x5507('0x25')](_0x113f74[_0x5507('0x32')],{'mixmonitorid':_0x417022[_0x5507('0x37')]});if(_0x505918){_0x505918[_0x5507('0x38')]=_0x5507('0x3e');}})[_0x5507('0x1b')](function(){var _0x418c2e=util[_0x5507('0x2f')]('%s.%s',_0x417022[_0x5507('0x3f')]||_0x417022[_0x5507('0x2d')],_0x417022['format']||'wav');var _0x4e5825=_[_0x5507('0x25')](_0x113f74['monitors'],{'filename':_0x5507('0x33')+_0x418c2e['toLowerCase']()});if(_0x4e5825){_0x4e5825[_0x5507('0x38')]='stop';}})['then'](function(){_0xcd4df5({'code':0xc8,'message':[_0x417022[_0x5507('0x2d')],_0x5507('0x40')][_0x5507('0x13')]('\x20')});})[_0x5507('0x1d')](function(_0x26d854){_0x17d7db(_0x245b0a[_0x5507('0x10')](0x1f5,[_0x417022['uniqueid'],_0x26d854[_0x5507('0x1c')][_0x5507('0x34')]()][_0x5507('0x13')]('\x20')));});}else{return _0x17d7db(_0x245b0a['error'](0x1f5,_0x5507('0x3a')));}});},'VoiceQueuesChannels':function(_0xe4b14c){var _0x505e71=this;return new Promise(function(_0x2e0cfc){var _0x300c9f=_[_0x5507('0x28')](_0x8fb8a3[_0x5507('0x41')]);var _0x34f197={'count':_0x300c9f[_0x5507('0x2a')],'rows':_0x300c9f};if(_0xe4b14c&&_0xe4b14c[_0x5507('0x42')]){if(![_0x5507('0x43'),'outbound']['includes'](_0xe4b14c[_0x5507('0x42')])){return _0x773559(_0x505e71[_0x5507('0x10')](0x190,_0x5507('0x44')));}var _0x1b34c8=_[_0x5507('0x45')](_0x300c9f,function(_0x10de3c){return _0x10de3c[_0x5507('0x42')]===_0xe4b14c[_0x5507('0x42')];});_0x34f197[_0x5507('0x46')]=_0x1b34c8[_0x5507('0x2a')];_0x34f197[_0x5507('0x47')]=_0x1b34c8;}_0x2e0cfc(_0x34f197);});},'VoiceQueuesChannel':function(_0x13dc8b){var _0x3e044c=this;return new Promise(function(_0x12de2d,_0x23412f){var _0x15082b=schema(properties['voicequeuechannel'])[_0x5507('0x3')](_0x13dc8b);if(_0x15082b['length']>0x0){return _0x23412f(_0x3e044c['error'](0x1f4,_[_0x5507('0x2c')](_0x15082b,_0x5507('0x1c'))[_0x5507('0x13')](',\x20')));}var _0x3ba05c=_['find'](_0x8fb8a3[_0x5507('0x41')],{'uniqueid':_0x13dc8b[_0x5507('0x2d')]});if(_0x3ba05c){_0x12de2d(_0x3ba05c);}else{return _0x23412f(_0x3e044c[_0x5507('0x10')](0x1f5,_0x5507('0x3a')));}});},'VoiceQueuesChannelHangup':function(_0x2a8d18){var _0x3a272f=this;return new Promise(function(_0x5d2881,_0x36b485){if(ami[_0x5507('0x1e')]()==![]){return _0x36b485(_0x3a272f[_0x5507('0x10')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x5507('0x12')],'ami\x20disconnected'][_0x5507('0x13')]('\x20')));}var _0x1e1a65=schema(properties['voicequeuechannelhangup'])[_0x5507('0x3')](_0x2a8d18);if(_0x1e1a65[_0x5507('0x2a')]>0x0){return _0x36b485(_0x3a272f[_0x5507('0x10')](0x1f4,_[_0x5507('0x2c')](_0x1e1a65,_0x5507('0x1c'))[_0x5507('0x13')](',\x20')));}var _0x28b3a2=_[_0x5507('0x25')](_0x8fb8a3[_0x5507('0x41')],{'uniqueid':_0x2a8d18[_0x5507('0x2d')]});if(_0x28b3a2&&_0x28b3a2[_0x5507('0x2e')]){return ami[_0x5507('0x1a')]({'action':'Hangup','channel':_0x28b3a2[_0x5507('0x2e')]})[_0x5507('0x1b')](function(_0x219e34){_0x5d2881({'code':0xc8,'message':[_0x2a8d18[_0x5507('0x2d')],_0x219e34[_0x5507('0x1c')]['toLowerCase']()][_0x5507('0x13')]('\x20')});})['catch'](function(_0x3bd7ce){_0x36b485(_0x3a272f[_0x5507('0x10')](0x1f5,[_0x2a8d18[_0x5507('0x2d')],_0x3bd7ce['message'][_0x5507('0x34')]()][_0x5507('0x13')]('\x20')));});}else{return _0x36b485(_0x3a272f[_0x5507('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0xf540bd){var _0x5cfdb0=this;return new Promise(function(_0x3dca7d,_0x5545ad){if(ami['isConnected']()==![]){return _0x5545ad(_0x5cfdb0[_0x5507('0x10')](0x1f4,[config[_0x5507('0x11')]['ip'],config[_0x5507('0x11')][_0x5507('0x12')],_0x5507('0x1f')][_0x5507('0x13')]('\x20')));}var _0x4bf567=schema(properties['voicequeuechannelredirect'])[_0x5507('0x3')](_0xf540bd);if(_0x4bf567[_0x5507('0x2a')]>0x0){return _0x5545ad(_0x5cfdb0[_0x5507('0x10')](0x1f4,_[_0x5507('0x2c')](_0x4bf567,'message')[_0x5507('0x13')](',\x20')));}var _0x23a738=_[_0x5507('0x25')](_0x8fb8a3[_0x5507('0x41')],{'uniqueid':_0xf540bd[_0x5507('0x2d')]});if(_0x23a738&&_0x23a738[_0x5507('0x2e')]){return ami[_0x5507('0x1a')]({'action':'Redirect','channel':_0x23a738[_0x5507('0x2e')],'exten':_0xf540bd[_0x5507('0x48')],'context':_0xf540bd[_0x5507('0x49')]||_0x23a738['context'],'priority':0x1})[_0x5507('0x1b')](function(_0x4d3f1a){_0x3dca7d({'code':0xc8,'message':[_0xf540bd['uniqueid'],_0x4d3f1a['message'][_0x5507('0x34')]()][_0x5507('0x13')]('\x20')});})[_0x5507('0x1d')](function(_0x10e409){_0x5545ad(_0x5cfdb0[_0x5507('0x10')](0x1f5,[_0xf540bd[_0x5507('0x2d')],_0x10e409[_0x5507('0x1c')]['toLowerCase']()][_0x5507('0x13')]('\x20')));});}else{return _0x5545ad(_0x5cfdb0['error'](0x1f5,_0x5507('0x3a')));}});},'Agents':function(_0x1c16b8){return new Promise(function(_0x40f2d9){var _0x98768c=_[_0x5507('0x28')](_0x8fb8a3[_0x5507('0xd')]);if(_0x1c16b8&&_0x1c16b8['id']){var _0x4423a8=_[_0x5507('0x25')](_0x98768c,function(_0x2f8164){return _0x2f8164['id']===_0x1c16b8['id'];});_0x40f2d9(_0x4423a8);}else{_0x40f2d9({'count':_0x98768c[_0x5507('0x2a')],'rows':_0x98768c});}});},'Telephones':function(){return new Promise(function(_0x259a87){var _0x5776f4=_[_0x5507('0x28')](_0x8fb8a3[_0x5507('0x4a')]);_0x259a87({'count':_0x5776f4[_0x5507('0x2a')],'rows':_0x5776f4});});},'Trunks':function(){return new Promise(function(_0x4d1aff){var _0x33f8b8=_[_0x5507('0x28')](_0x8fb8a3['trunks']);_0x4d1aff({'count':_0x33f8b8[_0x5507('0x2a')],'rows':_0x33f8b8});});},'OutboundChannels':function(){return new Promise(function(_0x5815fb){var _0x5c0c7a=_[_0x5507('0x28')](_0x8fb8a3['outboundChannels']);_0x5815fb({'count':_0x5c0c7a[_0x5507('0x2a')],'rows':_0x5c0c7a});});},'Outbound':function(){return new Promise(function(_0x43edf7){_0x43edf7(_0x8fb8a3[_0x5507('0x4b')]);});},'Campaigns':function(){return new Promise(function(_0xda51d5){var _0xbb4353=_[_0x5507('0x28')](_0x8fb8a3['campaigns']);_0xda51d5({'count':_0xbb4353[_0x5507('0x2a')],'rows':_0xbb4353});});},'VoiceQueuesPreview':function(_0x323dbf){var _0x3b212b=this;return new Promise(function(_0x75aa3c,_0x10427f){_0x54267f[_0x5507('0x4c')](_0x323dbf['id'])[_0x5507('0x1b')](function(_0x3f5a27){_0x75aa3c({'code':0xc8,'message':_0x3f5a27[_0x5507('0x1c')]});})[_0x5507('0x1d')](function(_0x130039){_0x10427f(_0x3b212b[_0x5507('0x10')](0x1f4,_0x130039['message']));});});},'EventManager':function(_0x255b14){var _0x3e8804=this;return new Promise(function(_0x10f066,_0x2afdac){if(!_0x255b14[_0x5507('0x4d')]){return _0x2afdac(_0x3e8804[_0x5507('0x10')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x5507('0x4e')]('custom:'+_0x255b14[_0x5507('0x4d')],_0x255b14['message']);_0x10f066({'code':0xc8,'message':_0x255b14});});},'FaxAccounts':function(){return new Promise(function(_0x561c21){var _0x15bb7b=_[_0x5507('0x28')](_0x8fb8a3[_0x5507('0x4f')]);_0x561c21({'count':_0x15bb7b[_0x5507('0x2a')],'rows':_0x15bb7b});});},'SendFax':function(_0x447e8d){var _0x58bc65=this;return new Promise(function(_0x255226,_0x53fd44){_0x5b6d7f[_0x5507('0x50')](_0x447e8d)[_0x5507('0x1b')](function(_0x163de3){_0x255226({'code':0xc8,'message':_0x163de3[_0x5507('0x1c')]});})['catch'](function(_0x2470ed){_0x53fd44(_0x58bc65[_0x5507('0x10')](0x1f4,_0x2470ed[_0x5507('0x1c')]));});});},'CheckAfterSend':function(_0x5a8a1b){var _0x56500e=this;return new Promise(function(_0x1396fc,_0x10f905){_0x5b6d7f[_0x5507('0x51')](_0x5a8a1b)[_0x5507('0x1b')](function(_0x77a772){_0x1396fc({'code':0xc8,'message':_0x77a772[_0x5507('0x1c')]});})[_0x5507('0x1d')](function(_0x10b62e){_0x10f905(_0x56500e[_0x5507('0x10')](0x1f4,_0x10b62e[_0x5507('0x1c')]));});});}};var _0x205ebc=jayson[_0x5507('0x52')](_0x4c2d6d)['http']();_0x205ebc['on'](_0x5507('0x10'),function(_0x369531){return _0x773559(_0x369531);});_0x205ebc[_0x5507('0x8')](0x232a,_0x5507('0x53'),function(){console[_0x5507('0x54')](_0x5507('0x55'),0x232a);return _0x2cd9ee(_0x5507('0x56')+0x232a);});});};
\ No newline at end of file
+var _0x46ed=['Action','then','catch','isConnected','ami\x20disconnected','command','action','Command','content','message','voiceQueues','hasOwnProperty','length','find','omit','undefined','values','channels','voicechannel','map','uniqueid','channel','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','isNil','monitors','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','destinationchannel','StopMixMonitor','status','stop','StopMixMonitor\x20Success','type','inbound','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','rows','voicequeuechannel','queueChannels','Hangup','voicequeuechannelredirect','Redirect','exten','telephones','trunks','outboundChannels','outbound','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','send','checkAfterSend','server','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','validate','moment','../../../config/environment','../ami','../model/voiceQueueSummary','format','%s/%s','name','timers','timer','updateAcw','agents','pause','error','asterisk','username','join','pick','keys','reload','module','Reload'];(function(_0x439bfd,_0x3e9e56){var _0x50625c=function(_0xc901d0){while(--_0xc901d0){_0x439bfd['push'](_0x439bfd['shift']());}};_0x50625c(++_0x3e9e56);}(_0x46ed,0x168));var _0xd46e=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x46ed[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var jayson=require('jayson/promise');var schema=require(_0xd46e('0x2'));var moment=require(_0xd46e('0x3'));var config=require(_0xd46e('0x4'));var properties=require('../properties');var ami=require(_0xd46e('0x5'));var VoiceQueueSummary=require(_0xd46e('0x6'));exports['listen']=function(_0x15c96e,_0x1926d9,_0x160bcf){return new Promise(function(_0x25cf78,_0x45e680){var _0x855f24={'QueuePause':function(_0x437ea0){return new Promise(function(_0x144687){var _0x31259b=util[_0xd46e('0x7')](_0xd46e('0x8'),'SIP',_0x437ea0[_0xd46e('0x9')]);if(_0x15c96e[_0xd46e('0xa')]&&_0x15c96e['timers'][_0x31259b]&&_0x15c96e[_0xd46e('0xa')][_0x31259b][_0xd46e('0xb')]){_0x15c96e[_0xd46e('0xa')][_0x31259b][_0xd46e('0xc')]();}if(_0x15c96e[_0xd46e('0xd')][_0x31259b]){_0x15c96e[_0xd46e('0xd')][_0x31259b]['updateStatusRealtime']({'statePause':_0x437ea0[_0xd46e('0xe')]?!![]:![]});}_0x144687({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x48550b){var _0xf3048c=this;return new Promise(function(_0x27dbfb,_0x53b309){if(ami['isConnected']()==![]){return _0x53b309(_0xf3048c[_0xd46e('0xf')](0x1f4,[config[_0xd46e('0x10')]['ip'],config[_0xd46e('0x10')][_0xd46e('0x11')],'ami\x20disconnected'][_0xd46e('0x12')]('\x20')));}_0x48550b=_[_0xd46e('0x13')](_0x48550b,_[_0xd46e('0x14')](properties[_0xd46e('0x15')][_0xd46e('0x16')]));_0x48550b['action']=_0xd46e('0x17');return ami[_0xd46e('0x18')](_0x48550b)[_0xd46e('0x19')](function(_0x551358){_0x27dbfb({'code':0xc8,'message':_0x551358['message']});})[_0xd46e('0x1a')](function(_0x1bd574){_0x53b309(_0xf3048c['error'](0x1f5,_0x1bd574['message']));});});},'Command':function(_0x2d6f2c){var _0x2f2571=this;return new Promise(function(_0x362885,_0x2273c5){if(ami[_0xd46e('0x1b')]()==![]){return _0x2273c5(_0x2f2571[_0xd46e('0xf')](0x1f4,[config[_0xd46e('0x10')]['ip'],config[_0xd46e('0x10')][_0xd46e('0x11')],_0xd46e('0x1c')][_0xd46e('0x12')]('\x20')));}_0x2d6f2c=_['pick'](_0x2d6f2c,_0xd46e('0x1d'));_0x2d6f2c[_0xd46e('0x1e')]=_0xd46e('0x1f');return ami[_0xd46e('0x18')](_0x2d6f2c)[_0xd46e('0x19')](function(_0xc1af7f){_0x362885({'code':0xc8,'message':_0xc1af7f[_0xd46e('0x20')]});})[_0xd46e('0x1a')](function(_0x62dea5){_0x2273c5(_0x2f2571['error'](0x1f5,_0x62dea5[_0xd46e('0x21')]));});});},'VoiceQueues':function(){return new Promise(function(_0x5424e5){var _0x4b8f6a=[];for(var _0x371054 in _0x15c96e[_0xd46e('0x22')]){if(_0x15c96e[_0xd46e('0x22')][_0xd46e('0x23')](_0x371054)){var _0x247b9f=_0x15c96e[_0xd46e('0x22')][_0x371054];var _0x1740d1=new VoiceQueueSummary(_0x247b9f);_0x4b8f6a['push'](_0x1740d1);}}_0x5424e5({'count':_0x4b8f6a[_0xd46e('0x24')],'rows':_0x4b8f6a});});},'UpdateVoiceQueue':function(_0x3c301a){return new Promise(function(_0xddbce9,_0x17db79){var _0x96f15c=_[_0xd46e('0x25')](_0x15c96e['voiceQueues'],{'id':parseInt(_0x3c301a['id'])});var _0x465d54=_[_0xd46e('0x26')](_0x3c301a,['id']);if(_0x96f15c){for(var _0x2d1afe in _0x465d54){if(typeof _0x465d54[_0x2d1afe]!==_0xd46e('0x27')&&typeof _0x96f15c[_0x2d1afe]!==_0xd46e('0x27')){_0x96f15c[_0x2d1afe]=_0x465d54[_0x2d1afe];}}_0xddbce9(_0x96f15c);}else{_0x17db79();}});},'VoiceChannels':function(){return new Promise(function(_0x423ea3){var _0x147da3=_[_0xd46e('0x28')](_0x15c96e[_0xd46e('0x29')]);_0x423ea3({'count':_0x147da3[_0xd46e('0x24')],'rows':_0x147da3});});},'VoiceChannelMixMonitor':function(_0x2ff785){var _0x504324=this;return new Promise(function(_0x2f4a1b,_0x5ed8dc){if(ami[_0xd46e('0x1b')]()==![]){return _0x5ed8dc(_0x504324[_0xd46e('0xf')](0x1f4,[config[_0xd46e('0x10')]['ip'],config[_0xd46e('0x10')]['username'],_0xd46e('0x1c')][_0xd46e('0x12')]('\x20')));}var _0x5ab9df=schema(properties[_0xd46e('0x2a')])[_0xd46e('0x2')](_0x2ff785);if(_0x5ab9df['length']>0x0){return _0x5ed8dc(_0x504324[_0xd46e('0xf')](0x1f4,_[_0xd46e('0x2b')](_0x5ab9df,_0xd46e('0x21'))['join'](',\x20')));}var _0x576449=_[_0xd46e('0x25')](_0x15c96e[_0xd46e('0x29')],{'uniqueid':_0x2ff785[_0xd46e('0x2c')]});if(_0x576449&&_0x576449[_0xd46e('0x2d')]){var _0x83526a=util[_0xd46e('0x7')](_0xd46e('0x2e'),_0x2ff785[_0xd46e('0x2f')]||_0x2ff785['uniqueid'],_0x2ff785[_0xd46e('0x7')]||_0xd46e('0x30'));return ami[_0xd46e('0x18')]({'action':_0xd46e('0x31'),'channel':_0x576449[_0xd46e('0x2d')],'file':_0x83526a,'options':_0xd46e('0x32')})[_0xd46e('0x19')](function(_0x5158e6){var _0x163dd0=_[_0xd46e('0x25')](_0x576449['monitors'],{'filename':_0xd46e('0x33')+_0x83526a[_0xd46e('0x34')]()});if(_[_0xd46e('0x35')](_0x163dd0)){_0x576449[_0xd46e('0x36')]['push']({'filename':_0xd46e('0x33')+_0x83526a[_0xd46e('0x34')](),'createdAt':moment()[_0xd46e('0x7')](_0xd46e('0x37')),'mixmonitorid':_0x5158e6[_0xd46e('0x38')],'status':_0xd46e('0x39')});}else{_0x163dd0[_0xd46e('0x38')]=_0x5158e6[_0xd46e('0x38')];_0x163dd0['status']=_0xd46e('0x39');}_0x2f4a1b({'code':0xc8,'message':[_0x2ff785[_0xd46e('0x2c')],_0xd46e('0x3a'),_0x5158e6[_0xd46e('0x38')]][_0xd46e('0x12')]('\x20'),'mixmonitorid':_0x5158e6['mixmonitorid']});})[_0xd46e('0x1a')](function(_0x53e680){_0x5ed8dc(_0x504324['error'](0x1f5,[_0x2ff785['uniqueid'],_0x53e680['message'][_0xd46e('0x34')]()]['join']('\x20')));});}else{return _0x5ed8dc(_0x504324[_0xd46e('0xf')](0x1f5,_0xd46e('0x3b')));}});},'VoiceChannelStopMixMonitor':function(_0x57f803){var _0x462477=this;return new Promise(function(_0x4114e6,_0x3bd5e9){if(ami[_0xd46e('0x1b')]()==![]){return _0x3bd5e9(_0x462477[_0xd46e('0xf')](0x1f4,[config[_0xd46e('0x10')]['ip'],config[_0xd46e('0x10')][_0xd46e('0x11')],_0xd46e('0x1c')][_0xd46e('0x12')]('\x20')));}var _0x259e2=schema(properties['voicechannel'])['validate'](_0x57f803);if(_0x259e2['length']>0x0){return _0x3bd5e9(_0x462477[_0xd46e('0xf')](0x1f4,_['map'](_0x259e2,_0xd46e('0x21'))[_0xd46e('0x12')](',\x20')));}var _0x3fdf67=_[_0xd46e('0x25')](_0x15c96e[_0xd46e('0x29')],{'uniqueid':_0x57f803[_0xd46e('0x2c')]});if(_0x3fdf67){return Promise[_0xd46e('0x3c')]()[_0xd46e('0x19')](function(){if(_0x3fdf67['channel']){return ami[_0xd46e('0x18')]({'action':'StopMixMonitor','channel':_0x3fdf67[_0xd46e('0x2d')],'mixmonitorid':_0x57f803[_0xd46e('0x38')]})[_0xd46e('0x1a')](function(){});}})[_0xd46e('0x19')](function(){if(_0x3fdf67[_0xd46e('0x3d')]){return ami['Action']({'action':_0xd46e('0x3e'),'channel':_0x3fdf67[_0xd46e('0x3d')],'mixmonitorid':_0x57f803[_0xd46e('0x38')]})[_0xd46e('0x1a')](function(){});}})[_0xd46e('0x19')](function(){var _0x587784=_[_0xd46e('0x25')](_0x3fdf67[_0xd46e('0x36')],{'mixmonitorid':_0x57f803[_0xd46e('0x38')]});if(_0x587784){_0x587784[_0xd46e('0x3f')]=_0xd46e('0x40');}})['then'](function(){var _0x341d9f=util[_0xd46e('0x7')](_0xd46e('0x2e'),_0x57f803[_0xd46e('0x2f')]||_0x57f803[_0xd46e('0x2c')],_0x57f803[_0xd46e('0x7')]||_0xd46e('0x30'));var _0x440dcc=_['find'](_0x3fdf67[_0xd46e('0x36')],{'filename':_0xd46e('0x33')+_0x341d9f[_0xd46e('0x34')]()});if(_0x440dcc){_0x440dcc[_0xd46e('0x3f')]=_0xd46e('0x40');}})['then'](function(){_0x4114e6({'code':0xc8,'message':[_0x57f803['uniqueid'],_0xd46e('0x41')][_0xd46e('0x12')]('\x20')});})[_0xd46e('0x1a')](function(_0x5ca18b){_0x3bd5e9(_0x462477['error'](0x1f5,[_0x57f803[_0xd46e('0x2c')],_0x5ca18b[_0xd46e('0x21')]['toLowerCase']()][_0xd46e('0x12')]('\x20')));});}else{return _0x3bd5e9(_0x462477[_0xd46e('0xf')](0x1f5,_0xd46e('0x3b')));}});},'VoiceQueuesChannels':function(_0x17344a){var _0x1bd8a5=this;return new Promise(function(_0x34d4ca){var _0x80ed51=_[_0xd46e('0x28')](_0x15c96e['queueChannels']);var _0x2f8eae={'count':_0x80ed51[_0xd46e('0x24')],'rows':_0x80ed51};if(_0x17344a&&_0x17344a[_0xd46e('0x42')]){if(![_0xd46e('0x43'),'outbound']['includes'](_0x17344a[_0xd46e('0x42')])){return _0x45e680(_0x1bd8a5['error'](0x190,_0xd46e('0x44')));}var _0x2af20b=_[_0xd46e('0x45')](_0x80ed51,function(_0x31f7eb){return _0x31f7eb[_0xd46e('0x42')]===_0x17344a[_0xd46e('0x42')];});_0x2f8eae['count']=_0x2af20b[_0xd46e('0x24')];_0x2f8eae[_0xd46e('0x46')]=_0x2af20b;}_0x34d4ca(_0x2f8eae);});},'VoiceQueuesChannel':function(_0x51f45a){var _0x4c3808=this;return new Promise(function(_0x3a54fe,_0x3760d7){var _0xb17e60=schema(properties[_0xd46e('0x47')])[_0xd46e('0x2')](_0x51f45a);if(_0xb17e60[_0xd46e('0x24')]>0x0){return _0x3760d7(_0x4c3808[_0xd46e('0xf')](0x1f4,_[_0xd46e('0x2b')](_0xb17e60,_0xd46e('0x21'))[_0xd46e('0x12')](',\x20')));}var _0x33cd34=_[_0xd46e('0x25')](_0x15c96e[_0xd46e('0x48')],{'uniqueid':_0x51f45a[_0xd46e('0x2c')]});if(_0x33cd34){_0x3a54fe(_0x33cd34);}else{return _0x3760d7(_0x4c3808['error'](0x1f5,_0xd46e('0x3b')));}});},'VoiceQueuesChannelHangup':function(_0x37a22f){var _0xe0cd61=this;return new Promise(function(_0x46bb2f,_0x5acce1){if(ami[_0xd46e('0x1b')]()==![]){return _0x5acce1(_0xe0cd61[_0xd46e('0xf')](0x1f4,[config[_0xd46e('0x10')]['ip'],config[_0xd46e('0x10')]['username'],_0xd46e('0x1c')][_0xd46e('0x12')]('\x20')));}var _0x4a8b79=schema(properties['voicequeuechannelhangup'])[_0xd46e('0x2')](_0x37a22f);if(_0x4a8b79[_0xd46e('0x24')]>0x0){return _0x5acce1(_0xe0cd61[_0xd46e('0xf')](0x1f4,_['map'](_0x4a8b79,'message')[_0xd46e('0x12')](',\x20')));}var _0x10c5ea=_[_0xd46e('0x25')](_0x15c96e[_0xd46e('0x48')],{'uniqueid':_0x37a22f[_0xd46e('0x2c')]});if(_0x10c5ea&&_0x10c5ea[_0xd46e('0x2d')]){return ami[_0xd46e('0x18')]({'action':_0xd46e('0x49'),'channel':_0x10c5ea[_0xd46e('0x2d')]})[_0xd46e('0x19')](function(_0x4af44){_0x46bb2f({'code':0xc8,'message':[_0x37a22f[_0xd46e('0x2c')],_0x4af44[_0xd46e('0x21')][_0xd46e('0x34')]()][_0xd46e('0x12')]('\x20')});})[_0xd46e('0x1a')](function(_0x5067b7){_0x5acce1(_0xe0cd61[_0xd46e('0xf')](0x1f5,[_0x37a22f[_0xd46e('0x2c')],_0x5067b7[_0xd46e('0x21')]['toLowerCase']()][_0xd46e('0x12')]('\x20')));});}else{return _0x5acce1(_0xe0cd61[_0xd46e('0xf')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x37ce99){var _0x2c86fe=this;return new Promise(function(_0x1801d4,_0x4d6817){if(ami[_0xd46e('0x1b')]()==![]){return _0x4d6817(_0x2c86fe[_0xd46e('0xf')](0x1f4,[config[_0xd46e('0x10')]['ip'],config['asterisk'][_0xd46e('0x11')],'ami\x20disconnected'][_0xd46e('0x12')]('\x20')));}var _0x148187=schema(properties[_0xd46e('0x4a')])['validate'](_0x37ce99);if(_0x148187[_0xd46e('0x24')]>0x0){return _0x4d6817(_0x2c86fe[_0xd46e('0xf')](0x1f4,_[_0xd46e('0x2b')](_0x148187,_0xd46e('0x21'))[_0xd46e('0x12')](',\x20')));}var _0x42ab77=_[_0xd46e('0x25')](_0x15c96e[_0xd46e('0x48')],{'uniqueid':_0x37ce99[_0xd46e('0x2c')]});if(_0x42ab77&&_0x42ab77[_0xd46e('0x2d')]){return ami[_0xd46e('0x18')]({'action':_0xd46e('0x4b'),'channel':_0x42ab77[_0xd46e('0x2d')],'exten':_0x37ce99[_0xd46e('0x4c')],'context':_0x37ce99['context']||_0x42ab77['context'],'priority':0x1})[_0xd46e('0x19')](function(_0x3e0ed5){_0x1801d4({'code':0xc8,'message':[_0x37ce99[_0xd46e('0x2c')],_0x3e0ed5[_0xd46e('0x21')][_0xd46e('0x34')]()]['join']('\x20')});})[_0xd46e('0x1a')](function(_0x9ea442){_0x4d6817(_0x2c86fe[_0xd46e('0xf')](0x1f5,[_0x37ce99[_0xd46e('0x2c')],_0x9ea442['message'][_0xd46e('0x34')]()][_0xd46e('0x12')]('\x20')));});}else{return _0x4d6817(_0x2c86fe['error'](0x1f5,_0xd46e('0x3b')));}});},'Agents':function(_0x3e0df4){return new Promise(function(_0x4ad93f){var _0x38e4f8=_[_0xd46e('0x28')](_0x15c96e['agents']);if(_0x3e0df4&&_0x3e0df4['id']){var _0x44ba36=_['find'](_0x38e4f8,function(_0x1eff81){return _0x1eff81['id']===_0x3e0df4['id'];});_0x4ad93f(_0x44ba36);}else{_0x4ad93f({'count':_0x38e4f8[_0xd46e('0x24')],'rows':_0x38e4f8});}});},'Telephones':function(){return new Promise(function(_0x581a40){var _0x47ab17=_[_0xd46e('0x28')](_0x15c96e[_0xd46e('0x4d')]);_0x581a40({'count':_0x47ab17[_0xd46e('0x24')],'rows':_0x47ab17});});},'Trunks':function(){return new Promise(function(_0x28d3c0){var _0x47e5d8=_[_0xd46e('0x28')](_0x15c96e[_0xd46e('0x4e')]);_0x28d3c0({'count':_0x47e5d8['length'],'rows':_0x47e5d8});});},'OutboundChannels':function(){return new Promise(function(_0x10bcdb){var _0x2a2c4f=_[_0xd46e('0x28')](_0x15c96e[_0xd46e('0x4f')]);_0x10bcdb({'count':_0x2a2c4f[_0xd46e('0x24')],'rows':_0x2a2c4f});});},'Outbound':function(){return new Promise(function(_0xbc97c3){_0xbc97c3(_0x15c96e[_0xd46e('0x50')]);});},'Campaigns':function(){return new Promise(function(_0xaf7c79){var _0x267256=_['values'](_0x15c96e[_0xd46e('0x51')]);_0xaf7c79({'count':_0x267256[_0xd46e('0x24')],'rows':_0x267256});});},'VoiceQueuesPreview':function(_0x5ce170){var _0x39fe4d=this;return new Promise(function(_0x3ba83f,_0x1a28c1){_0x1926d9[_0xd46e('0x52')](_0x5ce170['id'])[_0xd46e('0x19')](function(_0x2c706b){_0x3ba83f({'code':0xc8,'message':_0x2c706b['message']});})['catch'](function(_0x1ed97e){_0x1a28c1(_0x39fe4d[_0xd46e('0xf')](0x1f4,_0x1ed97e['message']));});});},'EventManager':function(_0x4cb510){var _0x484805=this;return new Promise(function(_0x825746,_0x1f88f2){if(!_0x4cb510[_0xd46e('0x53')]){return _0x1f88f2(_0x484805['error'](0x1f4,_0xd46e('0x54')));}ami[_0xd46e('0x55')](_0xd46e('0x56')+_0x4cb510['event'],_0x4cb510['message']);_0x825746({'code':0xc8,'message':_0x4cb510});});},'FaxAccounts':function(){return new Promise(function(_0x5408b5){var _0x5c0740=_[_0xd46e('0x28')](_0x15c96e['faxAccounts']);_0x5408b5({'count':_0x5c0740[_0xd46e('0x24')],'rows':_0x5c0740});});},'SendFax':function(_0x56de2a){var _0x5c9f8e=this;return new Promise(function(_0x43fa6a,_0x4550a7){_0x160bcf[_0xd46e('0x57')](_0x56de2a)[_0xd46e('0x19')](function(_0xf16d87){_0x43fa6a({'code':0xc8,'message':_0xf16d87[_0xd46e('0x21')]});})['catch'](function(_0x586024){_0x4550a7(_0x5c9f8e[_0xd46e('0xf')](0x1f4,_0x586024[_0xd46e('0x21')]));});});},'CheckAfterSend':function(_0x114f2c){var _0x3818fc=this;return new Promise(function(_0x4b2cac,_0x319af2){_0x160bcf[_0xd46e('0x58')](_0x114f2c)['then'](function(_0x1309b5){_0x4b2cac({'code':0xc8,'message':_0x1309b5['message']});})[_0xd46e('0x1a')](function(_0x24a2e1){_0x319af2(_0x3818fc['error'](0x1f4,_0x24a2e1['message']));});});}};var _0x1161f8=jayson[_0xd46e('0x59')](_0x855f24)[_0xd46e('0x5a')]();_0x1161f8['on']('error',function(_0x24230c){return _0x45e680(_0x24230c);});_0x1161f8[_0xd46e('0x5b')](0x232a,_0xd46e('0x5c'),function(){console[_0xd46e('0x5d')](_0xd46e('0x5e'),0x232a);return _0x25cf78(_0xd46e('0x5f')+0x232a);});});};
\ No newline at end of file
index 9095feb..3bb9b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e81=['defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','map','routeId','firstName','lastName','mobile','fax','createdAt','scheduledAt','union','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','destcalleridnum','calleridname','<unknown>','Unknown','destcalleridname','resolve','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','calleridnum','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','util','../../../../config/environment','../../../../config/logger','trigger','redis'];(function(_0x5aa16b,_0x5f0b74){var _0x2fac01=function(_0x1cdb88){while(--_0x1cdb88){_0x5aa16b['push'](_0x5aa16b['shift']());}};_0x2fac01(++_0x5f0b74);}(_0x0e81,0x1a4));var _0x10e8=function(_0x5e82ae,_0x1bf62f){_0x5e82ae=_0x5e82ae-0x0;var _0x2e3d18=_0x0e81[_0x5e82ae];return _0x2e3d18;};'use strict';var _=require(_0x10e8('0x0'));var BPromise=require(_0x10e8('0x1'));var Redis=require('ioredis');var util=require(_0x10e8('0x2'));var config=require(_0x10e8('0x3'));var logger=require(_0x10e8('0x4'))(_0x10e8('0x5'));var cmContactRpc=require('../../rpc/cmContact');config[_0x10e8('0x6')]=_[_0x10e8('0x7')](config[_0x10e8('0x6')],{'host':_0x10e8('0x8'),'port':0x18eb});var io=require(_0x10e8('0x9'))(new Redis(config[_0x10e8('0x6')]));function emit(_0x33884c,_0x4aaeb2,_0x2263c1,_0x51fb61,_0x296bbe){logger[_0x10e8('0xa')](_0x10e8('0xb'),_0x33884c,_0x4aaeb2['id'],_0x2263c1,_0x51fb61,JSON[_0x10e8('0xc')](_0x296bbe));io['to'](_0x2263c1)[_0x10e8('0xd')](_0x51fb61,_0x296bbe);}exports[_0x10e8('0xe')]=function(_0x57d704,_0x1bb305,_0x59a8f3,_0x1a1e3c){var _0x3ca569,_0x1012b7;var _0x38d5cb={};var _0x118c89;var _0x41dcb9=Number(_0x59a8f3[_0x10e8('0xf')]);var _0x1e1d45=_0x59a8f3['data2']?Boolean(Number(_0x59a8f3[_0x10e8('0x10')])):![];var _0x137ba8;var _0x5d9340=![];if(!_[_0x10e8('0x11')](_0x59a8f3['data5'])){if(_0x59a8f3[_0x10e8('0x12')]=='1')_0x5d9340=!![];}if(!_0x5d9340){if(_0x1a1e3c['xmd-contactid']){_0x38d5cb['id']=_0x1a1e3c[_0x10e8('0x13')];}}if(!_0x38d5cb['id']){_0x38d5cb[_0x10e8('0x14')]=_0x41dcb9;_0x137ba8=_0x59a8f3[_0x10e8('0x15')]&&_0x59a8f3[_0x10e8('0x15')]!=='0'?_0x59a8f3[_0x10e8('0x15')][_0x10e8('0x16')](','):[_0x10e8('0x17')];_0x38d5cb[_0x10e8('0x18')]=_[_0x10e8('0x19')](_0x137ba8,function(_0x53308c){var _0x52c8de={};_0x52c8de[_0x53308c]=_0x1a1e3c[_0x10e8('0x1a')]?_0x1a1e3c['destcalleridnum']:_0x1a1e3c['calleridnum'];return _0x52c8de;});_0x118c89=_0x1a1e3c[_0x10e8('0x1a')]?_0x1a1e3c['destcalleridnum']:_0x1a1e3c['calleridnum'];}var _0x2dee12=['id',_0x10e8('0x1b'),_0x10e8('0x1c'),_0x10e8('0x17'),_0x10e8('0x1d'),_0x10e8('0x1e'),'ListId',_0x10e8('0x1f'),_0x10e8('0x20'),'updatedAt'];var _0x25a4b4=_[_0x10e8('0x21')](_0x2dee12,_0x137ba8);BPromise['resolve']()[_0x10e8('0x22')](cmContactRpc[_0x10e8('0x23')]({'attributes':_0x25a4b4,'where':_0x38d5cb,'phone':_0x118c89}))[_0x10e8('0x22')](function(_0x233c65){_0x1012b7=_0x233c65;if(!_[_0x10e8('0x24')](_0x1012b7)){if(_0x1012b7[_0x10e8('0x25')]===0x1){_0x3ca569=_0x1012b7[0x0];logger['info'](_0x10e8('0x26'),_0x1a1e3c[_0x10e8('0x27')],_0x1bb305['id'],_0x3ca569['id']);}else{logger[_0x10e8('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x1a1e3c['uniqueid'],_0x1bb305['id'],_['map'](_0x1012b7,'id')[_0x10e8('0x28')](','));}return;}else{logger[_0x10e8('0xa')](_0x10e8('0x29'),_0x1a1e3c['uniqueid'],_0x1bb305['id']);var _0x457701={'ListId':_0x41dcb9};var _0x255df1=_0x59a8f3['data4']&&_0x59a8f3['data4']!=='0'?_0x59a8f3[_0x10e8('0x2a')]:_0x10e8('0x17');if(_0x1e1d45){logger[_0x10e8('0xa')](_0x10e8('0x2b'),_0x1a1e3c['uniqueid'],_0x1bb305['id']);_0x457701[_0x255df1]=_[_0x10e8('0x11')](_0x1a1e3c[_0x10e8('0x1a')])?_0x1a1e3c['calleridnum']:_0x1a1e3c[_0x10e8('0x2c')];if(_['isNil'](_0x1a1e3c[_0x10e8('0x1a')])){_0x457701['firstName']=_0x1a1e3c[_0x10e8('0x2d')]&&_0x1a1e3c[_0x10e8('0x2d')]!==_0x10e8('0x2e')?_0x1a1e3c[_0x10e8('0x2d')]:_0x10e8('0x2f');}else{_0x457701[_0x10e8('0x1b')]=_0x1a1e3c[_0x10e8('0x30')]&&_0x1a1e3c[_0x10e8('0x30')]!==_0x10e8('0x2e')?_0x1a1e3c[_0x10e8('0x30')]:_0x10e8('0x2f');}return BPromise[_0x10e8('0x31')]()[_0x10e8('0x22')](cmContactRpc[_0x10e8('0x32')](_0x457701))[_0x10e8('0x22')](function(_0x307f08){_0x3ca569=_0x307f08;_0x1012b7[_0x10e8('0x33')](_0x307f08);if(_0x3ca569){logger[_0x10e8('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x1a1e3c[_0x10e8('0x27')],_0x1bb305['id'],_0x3ca569['id']);}return;});}else{logger[_0x10e8('0xa')](_0x10e8('0x34'),_0x1a1e3c[_0x10e8('0x27')],_0x1bb305['id']);_0x457701[_0x255df1]=_[_0x10e8('0x11')](_0x1a1e3c[_0x10e8('0x1a')])?_0x1a1e3c[_0x10e8('0x35')]:_0x1a1e3c[_0x10e8('0x2c')];if(_[_0x10e8('0x11')](_0x1a1e3c[_0x10e8('0x1a')])){_0x457701['firstName']=_0x1a1e3c[_0x10e8('0x2d')]&&_0x1a1e3c['calleridname']!==_0x10e8('0x2e')?_0x1a1e3c[_0x10e8('0x2d')]:_0x10e8('0x2f');}else{_0x457701['firstName']=_0x1a1e3c['destcalleridname']&&_0x1a1e3c['destcalleridname']!==_0x10e8('0x2e')?_0x1a1e3c[_0x10e8('0x30')]:_0x10e8('0x2f');}_0x3ca569=_0x457701;_0x1012b7[_0x10e8('0x33')](_0x457701);return;}}})[_0x10e8('0x22')](function(){if(_0x57d704){emit(_0x1a1e3c[_0x10e8('0x27')],_0x1bb305,util[_0x10e8('0x36')](_0x10e8('0x37'),_0x57d704[_0x10e8('0x38')]),util['format'](_0x10e8('0x39'),_0x59a8f3[_0x10e8('0x3a')][_0x10e8('0x3b')]()),{'evt':_[_0x10e8('0x3c')](_0x1a1e3c,{'autoCreate':_0x1e1d45}),'contact':_0x3ca569===undefined?{}:_0x3ca569,'contacts':_0x1012b7[_0x10e8('0x25')]===0x0?undefined:_0x1012b7});}});};
\ No newline at end of file
+var _0x8f55=['defaults','socket.io-emitter','[CM][%s][%s]','stringify','emit','data1','data2','isNil','xmd-contactid','ListId','data3','split','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','phone','mobile','updatedAt','union','resolve','then','getContacts','isEmpty','info','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','action','merge','length','lodash','bluebird','ioredis','util','../../../../config/environment','trigger','../../rpc/cmContact','redis'];(function(_0x4449d7,_0x2398ce){var _0x4bc72f=function(_0x219da9){while(--_0x219da9){_0x4449d7['push'](_0x4449d7['shift']());}};_0x4bc72f(++_0x2398ce);}(_0x8f55,0x1a0));var _0x58f5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8f55[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x58f5('0x0'));var BPromise=require(_0x58f5('0x1'));var Redis=require(_0x58f5('0x2'));var util=require(_0x58f5('0x3'));var config=require(_0x58f5('0x4'));var logger=require('../../../../config/logger')(_0x58f5('0x5'));var cmContactRpc=require(_0x58f5('0x6'));config[_0x58f5('0x7')]=_[_0x58f5('0x8')](config[_0x58f5('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x58f5('0x9'))(new Redis(config[_0x58f5('0x7')]));function emit(_0x3af410,_0x412dfe,_0x5e3cf0,_0x208683,_0x24a74f){logger['info'](_0x58f5('0xa'),_0x3af410,_0x412dfe['id'],_0x5e3cf0,_0x208683,JSON[_0x58f5('0xb')](_0x24a74f));io['to'](_0x5e3cf0)[_0x58f5('0xc')](_0x208683,_0x24a74f);}exports['exec']=function(_0x552d27,_0x3a548,_0x5c31cf,_0x5a0fb3){var _0x1219dc,_0x59a916;var _0x2ec1a5={};var _0x96d336;var _0x52d819=Number(_0x5c31cf[_0x58f5('0xd')]);var _0x217dff=_0x5c31cf[_0x58f5('0xe')]?Boolean(Number(_0x5c31cf['data2'])):![];var _0x614c8d;var _0x4d68b3=![];if(!_[_0x58f5('0xf')](_0x5c31cf['data5'])){if(_0x5c31cf['data5']=='1')_0x4d68b3=!![];}if(!_0x4d68b3){if(_0x5a0fb3[_0x58f5('0x10')]){_0x2ec1a5['id']=_0x5a0fb3[_0x58f5('0x10')];}}if(!_0x2ec1a5['id']){_0x2ec1a5[_0x58f5('0x11')]=_0x52d819;_0x614c8d=_0x5c31cf[_0x58f5('0x12')]&&_0x5c31cf['data3']!=='0'?_0x5c31cf[_0x58f5('0x12')][_0x58f5('0x13')](','):['phone'];_0x2ec1a5[_0x58f5('0x14')]=_[_0x58f5('0x15')](_0x614c8d,function(_0x5b6936){var _0x5e2f5a={};_0x5e2f5a[_0x5b6936]=_0x5a0fb3[_0x58f5('0x16')]?_0x5a0fb3[_0x58f5('0x17')]:_0x5a0fb3[_0x58f5('0x18')];return _0x5e2f5a;});_0x96d336=_0x5a0fb3[_0x58f5('0x16')]?_0x5a0fb3['destcalleridnum']:_0x5a0fb3[_0x58f5('0x18')];}var _0x542db5=['id',_0x58f5('0x19'),_0x58f5('0x1a'),_0x58f5('0x1b'),_0x58f5('0x1c'),'fax','ListId','createdAt','scheduledAt',_0x58f5('0x1d')];var _0x10e017=_[_0x58f5('0x1e')](_0x542db5,_0x614c8d);BPromise[_0x58f5('0x1f')]()[_0x58f5('0x20')](cmContactRpc[_0x58f5('0x21')]({'attributes':_0x10e017,'where':_0x2ec1a5,'phone':_0x96d336}))[_0x58f5('0x20')](function(_0x33aff5){_0x59a916=_0x33aff5;if(!_[_0x58f5('0x22')](_0x59a916)){if(_0x59a916['length']===0x1){_0x1219dc=_0x59a916[0x0];logger[_0x58f5('0x23')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x5a0fb3[_0x58f5('0x24')],_0x3a548['id'],_0x1219dc['id']);}else{logger[_0x58f5('0x23')](_0x58f5('0x25'),_0x5a0fb3[_0x58f5('0x24')],_0x3a548['id'],_[_0x58f5('0x15')](_0x59a916,'id')['join'](','));}return;}else{logger[_0x58f5('0x23')](_0x58f5('0x26'),_0x5a0fb3[_0x58f5('0x24')],_0x3a548['id']);var _0x5f56d4={'ListId':_0x52d819};var _0x5b8c07=_0x5c31cf[_0x58f5('0x27')]&&_0x5c31cf[_0x58f5('0x27')]!=='0'?_0x5c31cf[_0x58f5('0x27')]:_0x58f5('0x1b');if(_0x217dff){logger[_0x58f5('0x23')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x5a0fb3[_0x58f5('0x24')],_0x3a548['id']);_0x5f56d4[_0x5b8c07]=_[_0x58f5('0xf')](_0x5a0fb3['routeId'])?_0x5a0fb3[_0x58f5('0x18')]:_0x5a0fb3[_0x58f5('0x17')];if(_[_0x58f5('0xf')](_0x5a0fb3['routeId'])){_0x5f56d4[_0x58f5('0x19')]=_0x5a0fb3[_0x58f5('0x28')]&&_0x5a0fb3[_0x58f5('0x28')]!==_0x58f5('0x29')?_0x5a0fb3[_0x58f5('0x28')]:'Unknown';}else{_0x5f56d4[_0x58f5('0x19')]=_0x5a0fb3['destcalleridname']&&_0x5a0fb3['destcalleridname']!==_0x58f5('0x29')?_0x5a0fb3[_0x58f5('0x2a')]:_0x58f5('0x2b');}return BPromise['resolve']()[_0x58f5('0x20')](cmContactRpc[_0x58f5('0x2c')](_0x5f56d4))[_0x58f5('0x20')](function(_0x1485c7){_0x1219dc=_0x1485c7;_0x59a916[_0x58f5('0x2d')](_0x1485c7);if(_0x1219dc){logger['info'](_0x58f5('0x2e'),_0x5a0fb3['uniqueid'],_0x3a548['id'],_0x1219dc['id']);}return;});}else{logger['info'](_0x58f5('0x2f'),_0x5a0fb3[_0x58f5('0x24')],_0x3a548['id']);_0x5f56d4[_0x5b8c07]=_['isNil'](_0x5a0fb3[_0x58f5('0x16')])?_0x5a0fb3['calleridnum']:_0x5a0fb3[_0x58f5('0x17')];if(_[_0x58f5('0xf')](_0x5a0fb3[_0x58f5('0x16')])){_0x5f56d4['firstName']=_0x5a0fb3['calleridname']&&_0x5a0fb3[_0x58f5('0x28')]!==_0x58f5('0x29')?_0x5a0fb3[_0x58f5('0x28')]:_0x58f5('0x2b');}else{_0x5f56d4[_0x58f5('0x19')]=_0x5a0fb3[_0x58f5('0x2a')]&&_0x5a0fb3[_0x58f5('0x2a')]!==_0x58f5('0x29')?_0x5a0fb3['destcalleridname']:_0x58f5('0x2b');}_0x1219dc=_0x5f56d4;_0x59a916[_0x58f5('0x2d')](_0x5f56d4);return;}}})['then'](function(){if(_0x552d27){emit(_0x5a0fb3[_0x58f5('0x24')],_0x3a548,util['format'](_0x58f5('0x30'),_0x552d27[_0x58f5('0x31')]),util['format']('trigger:%s',_0x5c31cf[_0x58f5('0x32')]['toLowerCase']()),{'evt':_[_0x58f5('0x33')](_0x5a0fb3,{'autoCreate':_0x217dff}),'contact':_0x1219dc===undefined?{}:_0x1219dc,'contacts':_0x59a916[_0x58f5('0x34')]===0x0?undefined:_0x59a916});}});};
\ No newline at end of file
index 4b00d12..24d4b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb9=['substatus','offlineMessage','created','equals','exports','lodash','url','mustache','ioredis','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','redis','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','bind','custom:agentconnect','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','stringify','clone','motionChannel','undefined','checkTriggers','interface','hasOwnProperty','checkTrigger','merge','variables','length','Actions','action','contactmanager','browser','data1','popup','html','data2','render','template\x20not\x20found','buildUri','isNil','data3','location','windowWidth','data5','800','windowHeight','data6','winApplication','winArguments','format','user:%s','toLowerCase','name','exec','integration','accounts','queue','routeId','urlforward','script','query','search','channel','AllConditions','every','checkConditions','some','AnyConditions','account','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','null'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0xdbb9,0xf9));var _0x9dbb=function(_0x578336,_0x58071f){_0x578336=_0x578336-0x0;var _0x610f33=_0xdbb9[_0x578336];return _0x610f33;};'use strict';var util=require('util');var _=require(_0x9dbb('0x0'));var url=require(_0x9dbb('0x1'));var Mustache=require(_0x9dbb('0x2'));var Redis=require(_0x9dbb('0x3'));var urlforward=require('./urlforward');var integration=require(_0x9dbb('0x4'));var cmContact=require(_0x9dbb('0x5'));var script=require(_0x9dbb('0x6'));var config=require(_0x9dbb('0x7'));var logger=require(_0x9dbb('0x8'))(_0x9dbb('0x9'));var ami=require('../ami');config['redis']=_['defaults'](config[_0x9dbb('0xa')],{'host':_0x9dbb('0xb'),'port':0x18eb});var io=require(_0x9dbb('0xc'))(new Redis(config['redis']));var operators={'equals':function(_0x59b2fc,_0x2ea515){return _0x59b2fc==_0x2ea515;},'not_equals':function(_0x3b7ecc,_0x37f00d){return _0x3b7ecc!=_0x37f00d;}};var barAndWebActions=['popup',_0x9dbb('0x1'),_0x9dbb('0xd')];function Trigger(_0x5b9290){this[_0x9dbb('0xe')]=_0x5b9290['triggers'];this[_0x9dbb('0xf')]=_0x5b9290[_0x9dbb('0xf')];this[_0x9dbb('0x10')]=_0x5b9290[_0x9dbb('0x10')];this[_0x9dbb('0x11')]=_0x5b9290[_0x9dbb('0x11')];this[_0x9dbb('0x12')]=_0x5b9290[_0x9dbb('0x12')];this[_0x9dbb('0x13')]=_0x5b9290[_0x9dbb('0x13')];this[_0x9dbb('0x14')]=_0x5b9290[_0x9dbb('0x14')];this[_0x9dbb('0x15')]=_0x5b9290[_0x9dbb('0x15')];this[_0x9dbb('0x16')]=_0x5b9290[_0x9dbb('0x16')];this['zohoAccounts']=_0x5b9290[_0x9dbb('0x17')];this[_0x9dbb('0x18')]=_0x5b9290[_0x9dbb('0x18')];this[_0x9dbb('0x19')]=_0x5b9290[_0x9dbb('0x19')];this['servicenowAccounts']=_0x5b9290[_0x9dbb('0x1a')];this[_0x9dbb('0x1b')]=_0x5b9290[_0x9dbb('0x1b')];this[_0x9dbb('0x1c')]=_0x5b9290[_0x9dbb('0x1c')];this['accounts']={'zendesk':this[_0x9dbb('0x13')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x9dbb('0x14')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x9dbb('0x17')],'desk':this['deskAccounts'],'vtiger':this[_0x9dbb('0x19')],'dynamics365':this[_0x9dbb('0x1b')],'freshsales':this[_0x9dbb('0x1c')],'servicenow':this['servicenowAccounts']};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x1e'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentringnoanswer',this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x20'),this['syncCustomEvent'][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x21'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x22'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x23'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x24'),this[_0x9dbb('0x1f')]['bind'](this));ami['on'](_0x9dbb('0x25'),this['syncCustomEvent'][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x26'),this['syncCustomEvent'][_0x9dbb('0x1d')](this));ami['on']('custom:queuecallerabandon',this['syncCustomEvent']['bind'](this));ami['on'](_0x9dbb('0x27'),this[_0x9dbb('0x1f')]['bind'](this));ami['on'](_0x9dbb('0x28'),this[_0x9dbb('0x29')]['bind'](this));ami['on'](_0x9dbb('0x2a'),this[_0x9dbb('0x29')][_0x9dbb('0x1d')](this));ami['on']('custom:dialend',this[_0x9dbb('0x29')]['bind'](this));ami['on'](_0x9dbb('0x2b'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x2c'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x2d'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x2e'),this[_0x9dbb('0x1f')]['bind'](this));ami['on'](_0x9dbb('0x2f'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x30'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x31'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));ami['on'](_0x9dbb('0x32'),this[_0x9dbb('0x1f')][_0x9dbb('0x1d')](this));}Trigger[_0x9dbb('0x33')][_0x9dbb('0x34')]=function(_0xd1cbe1,_0x535f0c,_0x1dc20f){logger['info'](_0xd1cbe1,_0x535f0c,JSON[_0x9dbb('0x35')](_0x1dc20f));io['to'](_0xd1cbe1)[_0x9dbb('0x34')](_0x535f0c,_0x1dc20f);};Trigger[_0x9dbb('0x33')]['syncCustomEvent']=function(_0x316f4b){var _0x180cf2=_[_0x9dbb('0x36')](_0x316f4b);if(typeof _0x180cf2[_0x9dbb('0x37')]===_0x9dbb('0x38')){_0x180cf2[_0x9dbb('0x37')]='voice';}this[_0x9dbb('0x39')](_0x180cf2);};Trigger['prototype'][_0x9dbb('0x29')]=function(_0x20cbd2){if(this[_0x9dbb('0xf')][_0x20cbd2[_0x9dbb('0x3a')]]){this['syncCustomEvent'](_0x20cbd2);}};Trigger[_0x9dbb('0x33')]['checkTriggers']=function(_0x29ccd0){var _0x5c72aa;for(var _0x24320c in this[_0x9dbb('0xe')]){if(this[_0x9dbb('0xe')][_0x9dbb('0x3b')](_0x24320c)){if(this[_0x9dbb('0xe')][_0x24320c]['status']){_0x5c72aa=this[_0x9dbb('0x3c')](this['triggers'][_0x24320c],_0x29ccd0);if(_0x5c72aa){_[_0x9dbb('0x3d')](_0x29ccd0,_0x29ccd0[_0x9dbb('0x3e')]);for(var _0x455013=0x0,_0x436496,_0x1e98aa,_0x232b7b;_0x455013<this[_0x9dbb('0xe')][_0x24320c]['Actions'][_0x9dbb('0x3f')];_0x455013+=0x1){_0x436496=this['triggers'][_0x24320c][_0x9dbb('0x40')][_0x455013];if(this[_0x9dbb('0xf')][_0x29ccd0[_0x9dbb('0x3a')]]){switch(_0x436496[_0x9dbb('0x41')]['toLowerCase']()){case _0x9dbb('0x42'):break;case'motionbar':case _0x9dbb('0x43'):var _0x48fa32={};switch(barAndWebActions[_0x436496[_0x9dbb('0x44')]]){case _0x9dbb('0x45'):_0x48fa32['TemplateId']=_0x436496['data2'];_0x48fa32[_0x9dbb('0x46')]=this[_0x9dbb('0x11')][_0x436496[_0x9dbb('0x47')]]?Mustache[_0x9dbb('0x48')](this[_0x9dbb('0x11')][_0x436496[_0x9dbb('0x47')]][_0x9dbb('0x46')],_0x29ccd0):_0x9dbb('0x49');break;case _0x9dbb('0x1'):_0x48fa32['uri']=this[_0x9dbb('0x4a')](_0x436496['data2'],_0x29ccd0,_[_0x9dbb('0x4b')](_0x436496[_0x9dbb('0x4c')])?!![]:parseInt(_0x436496[_0x9dbb('0x4c')],0xa));if(_[_0x9dbb('0x4b')](_0x436496['data4'])){_0x48fa32[_0x9dbb('0x4d')]='0';}else{_0x48fa32['uriLocation']=_0x436496['data4'];_0x48fa32[_0x9dbb('0x4e')]=_[_0x9dbb('0x4b')](_0x436496[_0x9dbb('0x4f')])?_0x9dbb('0x50'):_0x436496[_0x9dbb('0x4f')];_0x48fa32[_0x9dbb('0x51')]=_['isNil'](_0x436496[_0x9dbb('0x52')])?'600':_0x436496[_0x9dbb('0x52')];}break;case _0x9dbb('0xd'):_0x48fa32[_0x9dbb('0x53')]=_0x436496[_0x9dbb('0x47')]?Mustache[_0x9dbb('0x48')](_0x436496[_0x9dbb('0x47')],_0x29ccd0):'';_0x48fa32[_0x9dbb('0x54')]=_0x436496[_0x9dbb('0x4c')]?Mustache['render'](_0x436496[_0x9dbb('0x4c')],_0x29ccd0):'';break;}this['emit'](util[_0x9dbb('0x55')](_0x9dbb('0x56'),this['agents'][_0x29ccd0[_0x9dbb('0x3a')]]['name']),util['format']('trigger:%s:%s',_0x436496[_0x9dbb('0x41')][_0x9dbb('0x57')](),barAndWebActions[_0x436496['data1']]),_[_0x9dbb('0x3d')](_0x48fa32,_0x29ccd0));break;case'jscripty':this[_0x9dbb('0x34')](util[_0x9dbb('0x55')](_0x9dbb('0x56'),this[_0x9dbb('0xf')][_0x29ccd0[_0x9dbb('0x3a')]][_0x9dbb('0x58')]),util['format']('trigger:%s',_0x436496[_0x9dbb('0x41')][_0x9dbb('0x57')]()),_['merge']({'ProjectId':parseInt(_0x436496[_0x9dbb('0x44')],0xa)},_0x29ccd0));break;default:this[_0x9dbb('0x34')](util[_0x9dbb('0x55')](_0x9dbb('0x56'),this['agents'][_0x29ccd0[_0x9dbb('0x3a')]][_0x9dbb('0x58')]),util[_0x9dbb('0x55')]('trigger:%s',_0x436496['action']['toLowerCase']()),_[_0x9dbb('0x3d')]({},_0x436496,_0x29ccd0));}}switch(_0x436496[_0x9dbb('0x41')][_0x9dbb('0x57')]()){case _0x9dbb('0x42'):cmContact[_0x9dbb('0x59')](this[_0x9dbb('0xf')][_0x29ccd0[_0x9dbb('0x3a')]],this[_0x9dbb('0xe')][_0x24320c],_0x436496,_0x29ccd0);break;case _0x9dbb('0x5a'):integration[_0x9dbb('0x59')](_0x436496,_0x29ccd0,this[_0x9dbb('0x5b')],this[_0x9dbb('0xf')][_0x29ccd0[_0x9dbb('0x3a')]],this['voiceQueues'][_0x29ccd0[_0x9dbb('0x5c')]],this[_0x9dbb('0x12')][_0x29ccd0[_0x9dbb('0x5d')]]);break;case _0x9dbb('0x5e'):urlforward['exec'](_0x436496,_0x29ccd0);break;case _0x9dbb('0x5f'):script[_0x9dbb('0x59')](_0x436496,_0x29ccd0);break;}}}}}}};Trigger[_0x9dbb('0x33')]['buildUri']=function(_0x2b7b9b,_0x1ff879,_0x16bbb8){var _0x44b8c6=url['parse'](Mustache[_0x9dbb('0x48')](_0x2b7b9b,_0x1ff879),!![]);if(_0x16bbb8){_[_0x9dbb('0x3d')](_0x44b8c6[_0x9dbb('0x60')],_0x1ff879);}delete _0x44b8c6[_0x9dbb('0x61')];var _0x1c64bb=url['format'](_0x44b8c6);_0x1c64bb=_0x1c64bb['replace'](/\/\?/g,'?');return _0x1c64bb;};Trigger['prototype'][_0x9dbb('0x3c')]=function(_0x11d777,_0x44c765){var _0x44ebe7=!![];var _0x5917d9=!![];var _0x8a4de6=![];if(_0x11d777[_0x9dbb('0x62')]===_0x44c765[_0x9dbb('0x37')]){_0x8a4de6=!![];}if(_0x11d777[_0x9dbb('0x63')]['length']){_0x44ebe7=_[_0x9dbb('0x64')](_0x11d777[_0x9dbb('0x63')],this[_0x9dbb('0x65')](_0x44c765,_0x11d777[_0x9dbb('0x62')]));}if(_0x11d777['AnyConditions'][_0x9dbb('0x3f')]){_0x5917d9=_[_0x9dbb('0x66')](_0x11d777[_0x9dbb('0x67')],this['checkConditions'](_0x44c765,_0x11d777[_0x9dbb('0x62')]));}return _0x8a4de6&&_0x44ebe7&&_0x5917d9;};Trigger[_0x9dbb('0x33')][_0x9dbb('0x65')]=function(_0x150506,_0x11b13d){return function(_0x1fca3c){switch(_0x1fca3c['field']){case _0x9dbb('0x68'):if(_0x150506[_0x9dbb('0x62')]===_0x11b13d){if(_0x11b13d==='chat'){return _0x150506[_0x9dbb('0x69')]?operators[_0x1fca3c[_0x9dbb('0x6a')]](Number(_0x1fca3c[_0x9dbb('0x6b')]),_0x150506['ChatWebsiteId']):![];}else{return _0x150506[_[_0x9dbb('0x6c')](_0x11b13d)+_0x9dbb('0x6d')]?operators[_0x1fca3c[_0x9dbb('0x6a')]](Number(_0x1fca3c[_0x9dbb('0x6b')]),_0x150506[_['upperFirst'](_0x11b13d)+_0x9dbb('0x6d')]):![];}}break;case _0x9dbb('0x6e'):case _0x9dbb('0x6f'):if(_0x150506[_0x9dbb('0x62')]===_0x11b13d){return _0x150506['event']?operators[_0x1fca3c[_0x9dbb('0x6a')]](_0x1fca3c[_0x9dbb('0x6b')],_0x150506[_0x9dbb('0x70')]):![];}break;case _0x9dbb('0x5c'):return _0x150506[_0x9dbb('0x5c')]?operators[_0x1fca3c['operator']](_0x1fca3c[_0x9dbb('0x6b')],_0x150506[_0x9dbb('0x5c')]):![];case _0x9dbb('0x71'):return _0x150506[_0x9dbb('0x72')]?operators[_0x1fca3c[_0x9dbb('0x6a')]](_0x1fca3c[_0x9dbb('0x6b')],_0x150506[_0x9dbb('0x72')]):![];case _0x9dbb('0x73'):return _0x150506[_0x9dbb('0x73')]?operators[_0x1fca3c['operator']](_0x1fca3c[_0x9dbb('0x6b')],_0x150506[_0x9dbb('0x73')]):![];case'routeId':return _0x150506[_0x9dbb('0x5d')]?operators[_0x1fca3c[_0x9dbb('0x6a')]](_0x1fca3c['value'],_0x150506[_0x9dbb('0x5d')]):![];case'mailSubstatus':if(_0x1fca3c[_0x9dbb('0x6b')]===_0x9dbb('0x74'))_0x1fca3c[_0x9dbb('0x6b')]=null;return typeof _0x150506[_0x9dbb('0x75')]!=='undefined'?operators[_0x1fca3c['operator']](_0x1fca3c[_0x9dbb('0x6b')],_0x150506[_0x9dbb('0x75')]):![];case _0x9dbb('0x76'):if(_0x150506['channel']===_0x11b13d){return _0x1fca3c[_0x9dbb('0x6b')]===_0x9dbb('0x77')&&_0x1fca3c[_0x9dbb('0x6a')]===_0x9dbb('0x78')?!![]:![];}break;}return![];};};module[_0x9dbb('0x79')]=Trigger;
\ No newline at end of file
+var _0x94a6=['dynamics365Accounts','freshsalesAccounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentbusy','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','emit','info','stringify','motionChannel','undefined','debug','inspect','prototype','interface','checkTriggers','hasOwnProperty','status','checkTrigger','merge','Actions','action','contactmanager','data1','popup','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','winApplication','winArguments','format','user:%s','trigger:%s:%s','toLowerCase','jscripty','name','trigger:%s','exec','integration','routeId','urlforward','script','parse','query','search','channel','AllConditions','length','checkConditions','AnyConditions','some','checkTrigger:\x20trigger','evt','field','account','ChatWebsiteId','operator','upperFirst','AccountId','value','message','event','queue','membername','lastevent','mailSubstatus','offlineMessage','created','equals','exports','util','lodash','mustache','./urlforward','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts'];(function(_0x2239fd,_0x251d3e){var _0x5e6e64=function(_0x5bc462){while(--_0x5bc462){_0x2239fd['push'](_0x2239fd['shift']());}};_0x5e6e64(++_0x251d3e);}(_0x94a6,0x1ec));var _0x694a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x94a6[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x694a('0x0'));var _=require(_0x694a('0x1'));var url=require('url');var Mustache=require(_0x694a('0x2'));var Redis=require('ioredis');var urlforward=require(_0x694a('0x3'));var integration=require('./integration');var cmContact=require(_0x694a('0x4'));var script=require(_0x694a('0x5'));var config=require(_0x694a('0x6'));var logger=require(_0x694a('0x7'))(_0x694a('0x8'));var ami=require(_0x694a('0x9'));config[_0x694a('0xa')]=_[_0x694a('0xb')](config[_0x694a('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x694a('0xc'))(new Redis(config['redis']));var operators={'equals':function(_0x86cbba,_0xf2c420){return _0x86cbba==_0xf2c420;},'not_equals':function(_0x394995,_0x28bd8a){return _0x394995!=_0x28bd8a;}};var barAndWebActions=['popup',_0x694a('0xd'),_0x694a('0xe')];function Trigger(_0x45e704){this[_0x694a('0xf')]=_0x45e704['triggers'];this[_0x694a('0x10')]=_0x45e704['agents'];this[_0x694a('0x11')]=_0x45e704[_0x694a('0x11')];this[_0x694a('0x12')]=_0x45e704[_0x694a('0x12')];this[_0x694a('0x13')]=_0x45e704[_0x694a('0x13')];this[_0x694a('0x14')]=_0x45e704[_0x694a('0x14')];this[_0x694a('0x15')]=_0x45e704[_0x694a('0x15')];this['salesforceAccounts']=_0x45e704[_0x694a('0x16')];this[_0x694a('0x17')]=_0x45e704['sugarcrmAccounts'];this['zohoAccounts']=_0x45e704[_0x694a('0x18')];this[_0x694a('0x19')]=_0x45e704['deskAccounts'];this[_0x694a('0x1a')]=_0x45e704[_0x694a('0x1a')];this[_0x694a('0x1b')]=_0x45e704[_0x694a('0x1b')];this[_0x694a('0x1c')]=_0x45e704['dynamics365Accounts'];this['freshsalesAccounts']=_0x45e704[_0x694a('0x1d')];this['accounts']={'zendesk':this[_0x694a('0x14')],'salesforce':this[_0x694a('0x16')],'freshdesk':this[_0x694a('0x15')],'sugarcrm':this[_0x694a('0x17')],'zoho':this['zohoAccounts'],'desk':this['deskAccounts'],'vtiger':this[_0x694a('0x1a')],'dynamics365':this[_0x694a('0x1c')],'freshsales':this[_0x694a('0x1d')],'servicenow':this[_0x694a('0x1b')]};ami['on'](_0x694a('0x1e'),this['syncCustomEvent'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x20'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x22'),this['syncCustomEvent'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x23'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on']('custom:agentnosuchnumber',this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on']('custom:agentnoanswer',this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x24'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on']('custom:agentcongestion',this['syncCustomEvent'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x25'),this[_0x694a('0x21')]['bind'](this));ami['on'](_0x694a('0x26'),this['syncCustomEvent'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x27'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x28'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x29'),this['syncAgentDial']['bind'](this));ami['on'](_0x694a('0x2a'),this[_0x694a('0x2b')][_0x694a('0x1f')](this));ami['on']('custom:dialend',this['syncAgentDial'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x2c'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x2d'),this['syncCustomEvent'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x2e'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x2f'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x30'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x31'),this[_0x694a('0x21')][_0x694a('0x1f')](this));ami['on'](_0x694a('0x32'),this['syncCustomEvent'][_0x694a('0x1f')](this));ami['on'](_0x694a('0x33'),this[_0x694a('0x21')][_0x694a('0x1f')](this));}Trigger['prototype'][_0x694a('0x34')]=function(_0x480cb6,_0x205a15,_0x5d556e){logger[_0x694a('0x35')](_0x480cb6,_0x205a15,JSON[_0x694a('0x36')](_0x5d556e));io['to'](_0x480cb6)[_0x694a('0x34')](_0x205a15,_0x5d556e);};Trigger['prototype'][_0x694a('0x21')]=function(_0x23b3a0){var _0x3055f6=_['clone'](_0x23b3a0);if(typeof _0x3055f6[_0x694a('0x37')]===_0x694a('0x38')){_0x3055f6[_0x694a('0x37')]='voice';}logger[_0x694a('0x39')](_0x694a('0x21'),util[_0x694a('0x3a')](_0x3055f6,{'showHidden':!![],'depth':null}));this['checkTriggers'](_0x3055f6);};Trigger[_0x694a('0x3b')][_0x694a('0x2b')]=function(_0x1414ed){if(this[_0x694a('0x10')][_0x1414ed[_0x694a('0x3c')]]){this[_0x694a('0x21')](_0x1414ed);}};Trigger[_0x694a('0x3b')][_0x694a('0x3d')]=function(_0x33f73c){var _0x247dca;for(var _0x465073 in this[_0x694a('0xf')]){if(this[_0x694a('0xf')][_0x694a('0x3e')](_0x465073)){if(this[_0x694a('0xf')][_0x465073][_0x694a('0x3f')]){_0x247dca=this[_0x694a('0x40')](this[_0x694a('0xf')][_0x465073],_0x33f73c);if(_0x247dca){_[_0x694a('0x41')](_0x33f73c,_0x33f73c['variables']);for(var _0x58cfde=0x0,_0x4f2762,_0x6c1c3f,_0x59be18;_0x58cfde<this[_0x694a('0xf')][_0x465073][_0x694a('0x42')]['length'];_0x58cfde+=0x1){_0x4f2762=this[_0x694a('0xf')][_0x465073]['Actions'][_0x58cfde];if(this[_0x694a('0x10')][_0x33f73c[_0x694a('0x3c')]]){switch(_0x4f2762[_0x694a('0x43')]['toLowerCase']()){case _0x694a('0x44'):break;case'motionbar':case'browser':var _0x54d2e7={};switch(barAndWebActions[_0x4f2762[_0x694a('0x45')]]){case _0x694a('0x46'):_0x54d2e7[_0x694a('0x47')]=_0x4f2762[_0x694a('0x48')];_0x54d2e7[_0x694a('0x49')]=this['templates'][_0x4f2762[_0x694a('0x48')]]?Mustache[_0x694a('0x4a')](this['templates'][_0x4f2762[_0x694a('0x48')]][_0x694a('0x49')],_0x33f73c):_0x694a('0x4b');break;case _0x694a('0xd'):_0x54d2e7[_0x694a('0x4c')]=this[_0x694a('0x4d')](_0x4f2762[_0x694a('0x48')],_0x33f73c,_[_0x694a('0x4e')](_0x4f2762['data3'])?!![]:parseInt(_0x4f2762[_0x694a('0x4f')],0xa));if(_[_0x694a('0x4e')](_0x4f2762[_0x694a('0x50')])){_0x54d2e7[_0x694a('0x51')]='0';}else{_0x54d2e7[_0x694a('0x52')]=_0x4f2762[_0x694a('0x50')];_0x54d2e7[_0x694a('0x53')]=_[_0x694a('0x4e')](_0x4f2762[_0x694a('0x54')])?_0x694a('0x55'):_0x4f2762['data5'];_0x54d2e7[_0x694a('0x56')]=_[_0x694a('0x4e')](_0x4f2762['data6'])?'600':_0x4f2762[_0x694a('0x57')];}break;case _0x694a('0xe'):_0x54d2e7[_0x694a('0x58')]=_0x4f2762[_0x694a('0x48')]?Mustache[_0x694a('0x4a')](_0x4f2762['data2'],_0x33f73c):'';_0x54d2e7[_0x694a('0x59')]=_0x4f2762[_0x694a('0x4f')]?Mustache[_0x694a('0x4a')](_0x4f2762[_0x694a('0x4f')],_0x33f73c):'';break;}this[_0x694a('0x34')](util[_0x694a('0x5a')](_0x694a('0x5b'),this[_0x694a('0x10')][_0x33f73c[_0x694a('0x3c')]]['name']),util[_0x694a('0x5a')](_0x694a('0x5c'),_0x4f2762[_0x694a('0x43')][_0x694a('0x5d')](),barAndWebActions[_0x4f2762[_0x694a('0x45')]]),_['merge'](_0x54d2e7,_0x33f73c));break;case _0x694a('0x5e'):this[_0x694a('0x34')](util[_0x694a('0x5a')]('user:%s',this[_0x694a('0x10')][_0x33f73c[_0x694a('0x3c')]][_0x694a('0x5f')]),util[_0x694a('0x5a')](_0x694a('0x60'),_0x4f2762['action'][_0x694a('0x5d')]()),_[_0x694a('0x41')]({'ProjectId':parseInt(_0x4f2762['data1'],0xa)},_0x33f73c));break;default:this[_0x694a('0x34')](util['format'](_0x694a('0x5b'),this['agents'][_0x33f73c[_0x694a('0x3c')]][_0x694a('0x5f')]),util[_0x694a('0x5a')](_0x694a('0x60'),_0x4f2762[_0x694a('0x43')][_0x694a('0x5d')]()),_[_0x694a('0x41')]({},_0x4f2762,_0x33f73c));}}switch(_0x4f2762[_0x694a('0x43')][_0x694a('0x5d')]()){case _0x694a('0x44'):cmContact[_0x694a('0x61')](this[_0x694a('0x10')][_0x33f73c[_0x694a('0x3c')]],this[_0x694a('0xf')][_0x465073],_0x4f2762,_0x33f73c);break;case _0x694a('0x62'):integration['exec'](_0x4f2762,_0x33f73c,this['accounts'],this[_0x694a('0x10')][_0x33f73c['interface']],this['voiceQueues'][_0x33f73c['queue']],this['voiceExtensions'][_0x33f73c[_0x694a('0x63')]]);break;case _0x694a('0x64'):urlforward[_0x694a('0x61')](_0x4f2762,_0x33f73c);break;case _0x694a('0x65'):script['exec'](_0x4f2762,_0x33f73c);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x204f4a,_0x399cca,_0x265329){var _0x57906e=url[_0x694a('0x66')](Mustache[_0x694a('0x4a')](_0x204f4a,_0x399cca),!![]);if(_0x265329){_['merge'](_0x57906e[_0x694a('0x67')],_0x399cca);}delete _0x57906e[_0x694a('0x68')];var _0x512a69=url[_0x694a('0x5a')](_0x57906e);_0x512a69=_0x512a69['replace'](/\/\?/g,'?');return _0x512a69;};Trigger['prototype'][_0x694a('0x40')]=function(_0x1696f3,_0x39ea6b){var _0x5b8592=!![];var _0x173b55=!![];var _0x5de89c=![];if(_0x1696f3[_0x694a('0x69')]===_0x39ea6b[_0x694a('0x37')]){_0x5de89c=!![];}if(_0x1696f3[_0x694a('0x6a')][_0x694a('0x6b')]){_0x5b8592=_['every'](_0x1696f3['AllConditions'],this[_0x694a('0x6c')](_0x39ea6b,_0x1696f3[_0x694a('0x69')]));}if(_0x1696f3[_0x694a('0x6d')][_0x694a('0x6b')]){_0x173b55=_[_0x694a('0x6e')](_0x1696f3['AnyConditions'],this[_0x694a('0x6c')](_0x39ea6b,_0x1696f3[_0x694a('0x69')]));}var _0x256209=_0x5de89c&&_0x5b8592&&_0x173b55;logger['debug'](_0x694a('0x6f'),util[_0x694a('0x3a')](_0x1696f3,{'showHidden':!![],'depth':null}),_0x694a('0x70'),util[_0x694a('0x3a')](_0x39ea6b,{'showHidden':!![],'depth':null}),_0x5de89c,_0x5b8592,_0x173b55);return _0x256209;};Trigger[_0x694a('0x3b')][_0x694a('0x6c')]=function(_0x84b542,_0x2ae9ab){return function(_0x55d9c0){switch(_0x55d9c0[_0x694a('0x71')]){case _0x694a('0x72'):if(_0x84b542[_0x694a('0x69')]===_0x2ae9ab){if(_0x2ae9ab==='chat'){return _0x84b542[_0x694a('0x73')]?operators[_0x55d9c0[_0x694a('0x74')]](Number(_0x55d9c0['value']),_0x84b542[_0x694a('0x73')]):![];}else{return _0x84b542[_[_0x694a('0x75')](_0x2ae9ab)+_0x694a('0x76')]?operators[_0x55d9c0[_0x694a('0x74')]](Number(_0x55d9c0[_0x694a('0x77')]),_0x84b542[_[_0x694a('0x75')](_0x2ae9ab)+_0x694a('0x76')]):![];}}break;case'interaction':case _0x694a('0x78'):if(_0x84b542[_0x694a('0x69')]===_0x2ae9ab){return _0x84b542[_0x694a('0x79')]?operators[_0x55d9c0[_0x694a('0x74')]](_0x55d9c0[_0x694a('0x77')],_0x84b542['event']):![];}break;case _0x694a('0x7a'):return _0x84b542[_0x694a('0x7a')]?operators[_0x55d9c0[_0x694a('0x74')]](_0x55d9c0[_0x694a('0x77')],_0x84b542[_0x694a('0x7a')]):![];case'agent':return _0x84b542[_0x694a('0x7b')]?operators[_0x55d9c0[_0x694a('0x74')]](_0x55d9c0['value'],_0x84b542[_0x694a('0x7b')]):![];case _0x694a('0x7c'):return _0x84b542[_0x694a('0x7c')]?operators[_0x55d9c0['operator']](_0x55d9c0[_0x694a('0x77')],_0x84b542[_0x694a('0x7c')]):![];case'routeId':return _0x84b542['routeId']?operators[_0x55d9c0[_0x694a('0x74')]](_0x55d9c0[_0x694a('0x77')],_0x84b542[_0x694a('0x63')]):![];case _0x694a('0x7d'):if(_0x55d9c0[_0x694a('0x77')]==='null')_0x55d9c0[_0x694a('0x77')]=null;return typeof _0x84b542['substatus']!==_0x694a('0x38')?operators[_0x55d9c0[_0x694a('0x74')]](_0x55d9c0[_0x694a('0x77')],_0x84b542['substatus']):![];case _0x694a('0x7e'):if(_0x84b542[_0x694a('0x69')]===_0x2ae9ab){return _0x55d9c0[_0x694a('0x77')]===_0x694a('0x7f')&&_0x55d9c0[_0x694a('0x74')]===_0x694a('0x80')?!![]:![];}break;}return![];};};module[_0x694a('0x81')]=Trigger;
\ No newline at end of file
index af4a231..60a9e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe14b,0x93));var _0xbe14=function(_0x4c6889,_0x22c743){_0x4c6889=_0x4c6889-0x0;var _0x5dd01e=_0xe14b[_0x4c6889];return _0x5dd01e;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
+var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x338273,_0x2fdb58){var _0x5d2bfa=function(_0x5f16b2){while(--_0x5f16b2){_0x338273['push'](_0x338273['shift']());}};_0x5d2bfa(++_0x2fdb58);}(_0x3e74,0x175));var _0x43e7=function(_0x3ac8f4,_0x241a72){_0x3ac8f4=_0x3ac8f4-0x0;var _0x45dc66=_0x3e74[_0x3ac8f4];return _0x45dc66;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
index c5b515d..8b12b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc1c=['data7','tenantId','data2','data5','POST','clientId','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','userEmail','email','length','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','internalemailaddress','message','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','calleridnum','telephone1','&$filter=','\x20eq\x20\x27','replace','%2b','enduserId','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','string','picklist','nameField','customField','idField','indexOf','content','ticketType','incidents','assign','getString','Descriptions','/contacts(','userId','Fields','phonecall','queue','callDirection','phonecalls','Subjects','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:','ticketId',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','ioredis','dynamics365','../../../../config/environment','defaults','redis','remoteUri','CloudProvider'];(function(_0x3a6e00,_0x45aac9){var _0x4f957b=function(_0x4392dd){while(--_0x4392dd){_0x3a6e00['push'](_0x3a6e00['shift']());}};_0x4f957b(++_0x45aac9);}(_0xbc1c,0xd2));var _0xcbc1=function(_0x18546c,_0x4daf94){_0x18546c=_0x18546c-0x0;var _0x46ef43=_0xbc1c[_0x18546c];return _0x46ef43;};'use strict';var _=require(_0xcbc1('0x0'));var rp=require('request-promise');var util=require(_0xcbc1('0x1'));var intUtil=require(_0xcbc1('0x2'));var md5=require('md5');var Redis=require(_0xcbc1('0x3'));var logger=require('../../../../config/logger')(_0xcbc1('0x4'));var config=require(_0xcbc1('0x5'));config['redis']=_[_0xcbc1('0x6')](config[_0xcbc1('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAuthToken(_0x3b8e86,_0x57f0f9,_0x20f7ce){if(_0x3b8e86['modernAuthentication']){_0x3b8e86[_0xcbc1('0x8')]=_0x3b8e86[_0xcbc1('0x9')][_0xcbc1('0xa')];_0x3b8e86[_0xcbc1('0xb')]=_0x3b8e86[_0xcbc1('0x9')][_0xcbc1('0xc')];return Promise['resolve'](_0x3b8e86[_0xcbc1('0x9')][_0xcbc1('0xd')]);}var _0x4a86a6={'method':_0xcbc1('0xe'),'uri':_0x57f0f9,'form':{'client_id':_0x3b8e86[_0xcbc1('0xf')],'resource':_0x3b8e86[_0xcbc1('0x8')],'username':_0x3b8e86['username'],'password':_0x3b8e86[_0xcbc1('0x10')],'grant_type':_0xcbc1('0x10'),'client_secret':_0x3b8e86[_0xcbc1('0x11')]},'json':!![]};return rp(_0x4a86a6)[_0xcbc1('0x12')](function(_0x15386d){return _0x15386d[_0xcbc1('0x13')];})[_0xcbc1('0x14')](function(_0x384fa7){logger[_0xcbc1('0x15')]('['+[_0x20f7ce['toUpperCase']()]+_0xcbc1('0x16'));return _0x384fa7['message'];});}function getUser(_0x103fe1,_0x474d67,_0x5718c0,_0x5a2002,_0x3ae94e,_0x1d3205){return new Promise(function(_0x34984d,_0x1ce65f){return getAuthToken(_0x474d67,_0x5a2002,_0x1d3205)[_0xcbc1('0x12')](function(_0x182c4f){var _0x40226d={'method':_0xcbc1('0x17'),'uri':_0x3ae94e+_0xcbc1('0x18'),'headers':{'Authorization':_0xcbc1('0x19')+_0x182c4f,'OData-Version':_0xcbc1('0x1a')},'json':!![]};return rp(_0x40226d);})[_0xcbc1('0x12')](function(_0x326e0a){var _0x1d5a83=_0x326e0a[_0xcbc1('0x1b')];var _0x351c9e=![];var _0xb60493=null;if(!_[_0xcbc1('0x1c')](_0x5718c0)){if(intUtil[_0xcbc1('0x1d')](_0x5718c0['email'])){_0x103fe1[_0xcbc1('0x1e')]=_0x5718c0[_0xcbc1('0x1f')];for(_0xb60493=0x0;_0xb60493<_0x1d5a83[_0xcbc1('0x20')];_0xb60493++){if(_0x1d5a83[_0xb60493]['internalemailaddress']===_0x5718c0[_0xcbc1('0x1f')]&&!_0x1d5a83[_0xb60493][_0xcbc1('0x21')]){_0x351c9e=!![];logger[_0xcbc1('0x22')]('['+[_0x1d3205[_0xcbc1('0x23')]()]+_0xcbc1('0x24')+_0x1d5a83[_0xb60493][_0xcbc1('0x25')]+'!');_0x103fe1['userId']=_0x1d5a83[_0xb60493][_0xcbc1('0x25')];}}}}if(!_0x351c9e){logger[_0xcbc1('0x22')]('['+[_0x1d3205['toUpperCase']()]+_0xcbc1('0x26'));_0x103fe1[_0xcbc1('0x1e')]=_0x474d67[_0xcbc1('0x27')];for(_0xb60493=0x0;_0xb60493<_0x1d5a83['length'];_0xb60493++){if(_0x1d5a83[_0xb60493][_0xcbc1('0x28')]===_0x474d67['username']){_0x103fe1['userId']=_0x1d5a83[_0xb60493][_0xcbc1('0x25')];}}}_0x34984d(_0x103fe1);})[_0xcbc1('0x14')](function(_0x38114d){_0x1ce65f(_0x38114d[_0xcbc1('0x29')]);});});}function createEndUser(_0x192135,_0x1e5cb0,_0x183fdc,_0x348cc4,_0x5ae49b,_0x3b4cc7,_0x1bd0f6){return new Promise(function(_0x16fba6,_0x3b7b6d){return getAuthToken(_0x1e5cb0,_0x183fdc,_0x3b4cc7)[_0xcbc1('0x12')](function(_0x4b5fdf){var _0x26b29a=_0x3b4cc7[_0xcbc1('0x2a')]()===_0xcbc1('0x2b')?_0x5ae49b[_0xcbc1('0x2c')]:_0x5ae49b['calleridnum'];var _0x1542a9={'method':_0xcbc1('0xe'),'uri':_0x348cc4+_0xcbc1('0x2d'),'body':{'fullname':_0x26b29a,'firstname':_0x26b29a,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xcbc1('0x2e')+_0x192135['userId']+')'},'headers':{'Authorization':_0xcbc1('0x19')+_0x4b5fdf,'OData-Version':_0xcbc1('0x1a')},'json':!![],'resolveWithFullResponse':!![]};_0x1542a9[_0xcbc1('0x2f')][_0x1bd0f6]=_0x26b29a;return rp(_0x1542a9);})[_0xcbc1('0x12')](function(_0x57a405){var _0x20327c=_0x57a405[_0xcbc1('0x30')][_0xcbc1('0x31')];var _0x362d28=_0x20327c[_0xcbc1('0x32')](_0x20327c[_0xcbc1('0x33')]('(')+0x1,_0x20327c['lastIndexOf'](')'));_0x192135['enduserId']=_0x362d28;_0x16fba6(_0x192135);})[_0xcbc1('0x14')](function(_0x48ec89){_0x3b7b6d(_0x48ec89[_0xcbc1('0x29')]);});});}function getEndUser(_0x1776c2,_0x1e209e,_0x3668e3,_0x44c2f1,_0xd168e7,_0x5bb6cd,_0x5e6dff,_0x36a8d9){var _0x2f3bb1=_0x5bb6cd[_0xcbc1('0x2a')]()===_0xcbc1('0x2b')?_0xd168e7[_0xcbc1('0x2c')]:_0xd168e7[_0xcbc1('0x34')];return getAuthToken(_0x1e209e,_0x3668e3,_0x5bb6cd)['then'](function(_0x1f8276){_0x36a8d9=_0x36a8d9?_0x36a8d9:_0xcbc1('0x35');var _0xfb7d0e={'method':'GET','uri':_0x44c2f1+'contacts?$select='+_0x36a8d9+_0xcbc1('0x36')+_0x36a8d9+_0xcbc1('0x37')+_0x2f3bb1[_0xcbc1('0x38')]('+',_0xcbc1('0x39'))+'\x27','headers':{'Authorization':_0xcbc1('0x19')+_0x1f8276,'If-None-Match':null,'OData-Version':_0xcbc1('0x1a')},'json':!![]};return rp(_0xfb7d0e);})[_0xcbc1('0x12')](function(_0x32e2bb){var _0x5218ba=![];if(!_0x32e2bb)return _0x5218ba;var _0x4cc4f0=_0x32e2bb[_0xcbc1('0x1b')];for(var _0x381cf6=0x0;_0x381cf6<_0x4cc4f0[_0xcbc1('0x20')];_0x381cf6++){if(_0x4cc4f0[_0x381cf6][_0x36a8d9]===_0x2f3bb1){_0x5218ba=!![];_0x1776c2[_0xcbc1('0x3a')]=_0x4cc4f0[_0x381cf6][_0xcbc1('0x3b')];}}return _0x5218ba;})[_0xcbc1('0x12')](function(_0x487be1){if(_0x487be1)return _0x1776c2;if(_0x5e6dff===_0xcbc1('0x3c')){logger[_0xcbc1('0x22')]('['+[_0x5bb6cd['toUpperCase']()]+_0xcbc1('0x3d'));return _0x1776c2;}return createEndUser(_0x1776c2,_0x1e209e,_0x3668e3,_0x44c2f1,_0xd168e7,_0x5bb6cd,_0x36a8d9)[_0xcbc1('0x12')](function(_0x2d06b5){logger[_0xcbc1('0x22')]('['+[_0x5bb6cd[_0xcbc1('0x23')]()]+_0xcbc1('0x3e'),_0x2d06b5[_0xcbc1('0x3a')]);return _0x2d06b5;});});}function getCustomFields(_0x3e8e4a,_0x1834f0,_0x283217){var _0x5ac805={};if(_0x3e8e4a[_0xcbc1('0x20')]>0x0){_['forEach'](_0x3e8e4a,function(_0x30fa21){if(_['includes']([_0xcbc1('0x3f'),_0xcbc1('0x40')],_0x30fa21['type'])&&_0x30fa21[_0xcbc1('0x41')]&&!_0x30fa21[_0xcbc1('0x42')]){var _0x54bca=_0x30fa21[_0xcbc1('0x43')][_0xcbc1('0x2a')]();var _0x197ea7=_0x54bca[_0xcbc1('0x32')](0x0,_0x54bca[_0xcbc1('0x44')]('_'));var _0x16c0df=_0x54bca['substring'](_0x54bca[_0xcbc1('0x44')]('_')+0x1);if(_0x197ea7===_0x283217){_0x5ac805[_0x16c0df]=_0x30fa21[_0xcbc1('0x45')];}}});}return _0x5ac805;}function getTicket(_0x268fd5,_0xf6bd02,_0x38dca1,_0x14b05d,_0x29bf80,_0x1f0fe2,_0x3e6bae){return new Promise(function(_0x344bb6,_0x3f49f6){var _0x46ba7e;return getAuthToken(_0xf6bd02,_0x38dca1,_0x3e6bae)['then'](function(_0x2ebbb1){if(_0x1f0fe2[_0xcbc1('0x46')]==='incident'){_0x46ba7e={'method':_0xcbc1('0xe'),'uri':_0x14b05d+_0xcbc1('0x47'),'body':Object[_0xcbc1('0x48')]({},{'title':intUtil['getString'](_0x1f0fe2['Subjects'],_0x29bf80,'\x20'),'description':intUtil[_0xcbc1('0x49')](_0x1f0fe2[_0xcbc1('0x4a')],_0x29bf80,'\x0a'),'customerid_contact@odata.bind':_0x268fd5[_0xcbc1('0x3a')]?_0xcbc1('0x4b')+_0x268fd5[_0xcbc1('0x3a')]+')':undefined,'ownerid@odata.bind':_0xcbc1('0x2e')+_0x268fd5[_0xcbc1('0x4c')]+')','caseorigincode':'1'},getCustomFields(_0x1f0fe2[_0xcbc1('0x4d')],_0x29bf80,_0x1f0fe2[_0xcbc1('0x46')])),'headers':{'Authorization':_0xcbc1('0x19')+_0x2ebbb1,'OData-Version':_0xcbc1('0x1a')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1f0fe2['ticketType']===_0xcbc1('0x4e')){var _0x4d15d1=_0x268fd5['enduserId']?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x268fd5[_0xcbc1('0x4c')]+')','participationtypemask':_0x268fd5['callDirection']===_0xcbc1('0x4f')?0x2:0x1},{'partyid_contact@odata.bind':_0xcbc1('0x4b')+_0x268fd5['enduserId']+')','participationtypemask':_0x268fd5[_0xcbc1('0x50')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xcbc1('0x2e')+_0x268fd5[_0xcbc1('0x4c')]+')','participationtypemask':_0x268fd5[_0xcbc1('0x50')]===_0xcbc1('0x4f')?0x2:0x1}];_0x46ba7e={'method':_0xcbc1('0xe'),'uri':_0x14b05d+_0xcbc1('0x51'),'body':Object[_0xcbc1('0x48')]({},{'subject':intUtil[_0xcbc1('0x49')](_0x1f0fe2[_0xcbc1('0x52')],_0x29bf80,'\x20'),'phonenumber':String(_0x29bf80[_0xcbc1('0x34')]),'description':intUtil[_0xcbc1('0x49')](_0x1f0fe2['Descriptions'],_0x29bf80,'\x0a'),'regardingobjectid_contact@odata.bind':_0x268fd5[_0xcbc1('0x3a')]?_0xcbc1('0x4b')+_0x268fd5['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x268fd5[_0xcbc1('0x4c')]+')','directioncode':_0x268fd5[_0xcbc1('0x50')]===_0xcbc1('0x4f')?![]:!![],'phonecall_activity_parties':_0x4d15d1},getCustomFields(_0x1f0fe2['Fields'],_0x29bf80,_0x1f0fe2[_0xcbc1('0x46')])),'headers':{'Authorization':_0xcbc1('0x19')+_0x2ebbb1,'OData-Version':_0xcbc1('0x1a')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x46ba7e);})['then'](function(_0x5885b8){var _0x2227d1=_0x5885b8[_0xcbc1('0x30')][_0xcbc1('0x31')];var _0x69859d=_0x2227d1[_0xcbc1('0x32')](_0x2227d1[_0xcbc1('0x33')]('(')+0x1,_0x2227d1[_0xcbc1('0x33')](')'));_0x268fd5['ticketId']=_0x69859d;_0x344bb6(_0x268fd5);})[_0xcbc1('0x14')](function(_0x5bd3f1){_0x3f49f6(_0x5bd3f1[_0xcbc1('0x29')]);});});}function emit(_0x213623,_0x166408,_0x59b2d4,_0x313dd9){var _0x3d20e3={'uri':util[_0xcbc1('0x53')](_0xcbc1('0x54'),_0x213623,_0x59b2d4,_0x313dd9)};io['to'](util[_0xcbc1('0x53')](_0xcbc1('0x55'),_0x166408))[_0xcbc1('0x56')](_0xcbc1('0x57'),_0x3d20e3);}exports['cs']=function(_0x3a8a0c,_0x485863,_0xa9e64b,_0x464392,_0x31739f,_0x36e6d5,_0x42242b,_0x1b9c44){var _0x1b8e52={};_0x36e6d5[_0xcbc1('0x8')]=_0x36e6d5[_0xcbc1('0x58')]?intUtil[_0xcbc1('0x59')](_0x36e6d5[_0xcbc1('0x9')]['data7']):intUtil[_0xcbc1('0x59')](_0x36e6d5[_0xcbc1('0x8')]);_0x36e6d5['serverUrl']=intUtil[_0xcbc1('0x59')](_0x36e6d5[_0xcbc1('0x5a')]);_0x1b8e52[_0xcbc1('0x50')]=_0x1b9c44===_0xcbc1('0x4f')||_0x1b9c44===_0xcbc1('0x5b')?_0xcbc1('0x4f'):_0xcbc1('0x2b');var _0x3e1ef2=_0x36e6d5[_0xcbc1('0x58')]?util[_0xcbc1('0x53')]('%s/api/data/v9.0/',_0x36e6d5[_0xcbc1('0x9')]['data7']):util[_0xcbc1('0x53')](_0xcbc1('0x5c'),_0x36e6d5[_0xcbc1('0x8')]);var _0x1b593a=util[_0xcbc1('0x53')](_0xcbc1('0x5d'),_0x36e6d5['tenantId']);var _0x15f14f=util[_0xcbc1('0x53')](_0xcbc1('0x5e'),_0x36e6d5[_0xcbc1('0x5a')],_0x485863['uniqueid'],md5(_0x485863['uniqueid']));if(_0x31739f&&_0x31739f[_0xcbc1('0x5f')]){logger[_0xcbc1('0x22')](_0xcbc1('0x60'),_0xcbc1('0x61'));_0x485863[_0xcbc1('0x62')]=_0x15f14f;}else if(_0x42242b&&_0x42242b[_0xcbc1('0x63')]&&_0x42242b[_0xcbc1('0x63')]!=='none'){logger[_0xcbc1('0x22')]('[OUTBOUND]',_0xcbc1('0x61'));_0x485863['recordingURL']=_0x15f14f;}else{_0x485863[_0xcbc1('0x62')]='';}return getUser(_0x1b8e52,_0x36e6d5,_0x464392,_0x1b593a,_0x3e1ef2,_0x1b9c44)[_0xcbc1('0x12')](function(_0x18c0db){logger[_0xcbc1('0x22')]('['+_0x1b9c44[_0xcbc1('0x23')]()+']\x20The\x20User\x20ID\x20is:',_0x18c0db[_0xcbc1('0x4c')]);logger[_0xcbc1('0x22')]('['+_0x1b9c44[_0xcbc1('0x23')]()+_0xcbc1('0x64'),_0x18c0db[_0xcbc1('0x1e')]);return getEndUser(_0x18c0db,_0x36e6d5,_0x1b593a,_0x3e1ef2,_0x485863,_0x1b9c44,_0xa9e64b[_0xcbc1('0x65')],_0xa9e64b[_0xcbc1('0x66')]);})[_0xcbc1('0x12')](function(_0x3ccbea){logger[_0xcbc1('0x22')]('['+_0x1b9c44[_0xcbc1('0x23')]()+_0xcbc1('0x67'),_0x3ccbea[_0xcbc1('0x3a')]);logger[_0xcbc1('0x22')]('['+_0x1b9c44[_0xcbc1('0x23')]()+_0xcbc1('0x68'),_0x485863[_0xcbc1('0x34')]);return getTicket(_0x3ccbea,_0x36e6d5,_0x1b593a,_0x3e1ef2,_0x485863,_0xa9e64b,_0x1b9c44);})['then'](function(_0x40154d){logger['info'](util[_0xcbc1('0x53')]('['+_0x1b9c44[_0xcbc1('0x23')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0xa9e64b['ticketType'],_0x40154d[_0xcbc1('0x69')]));logger[_0xcbc1('0x22')](util[_0xcbc1('0x53')]('['+_0x1b9c44['toUpperCase']()+_0xcbc1('0x6a'),_0x1b9c44));if(_0x1b9c44!=='unmanaged'&&_0xa9e64b[_0xcbc1('0x6b')]){logger['info']('['+_0x1b9c44['toUpperCase']()+']',_0xcbc1('0x6c'));emit(_0x36e6d5['remoteUri'],_0x464392['name'],_0xa9e64b[_0xcbc1('0x46')],_0x40154d[_0xcbc1('0x69')]);}})[_0xcbc1('0x14')](function(_0x7d6a99){logger[_0xcbc1('0x15')]('['+_0x1b9c44[_0xcbc1('0x23')]()+_0xcbc1('0x6d'),_0x7d6a99[_0xcbc1('0x29')]);console['error']('Error\x20running\x20Dynamics365\x20integration',_0x7d6a99);});};
\ No newline at end of file
+var _0x6fac=['serverUrl','stripTrailingSlash','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','data7','CloudProvider','data2','resolve','data5','clientId','password','then','catch','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','destcalleridnum','calleridnum','POST','contacts','body','odata-entityid','substring','lastIndexOf','outbound','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','value','enduserId','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','type','nameField','customField','indexOf','content','incidents','assign','getString','Descriptions','/contacts(','/systemusers(','Fields','ticketType','phonecall','callDirection','queue','phonecalls','Subjects','headers','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','trigger:browser:url'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x6fac,0xfa));var _0xc6fa=function(_0x316f75,_0x395b4a){_0x316f75=_0x316f75-0x0;var _0x9ac2f5=_0x6fac[_0x316f75];return _0x9ac2f5;};'use strict';var _=require(_0xc6fa('0x0'));var rp=require('request-promise');var util=require(_0xc6fa('0x1'));var intUtil=require(_0xc6fa('0x2'));var md5=require(_0xc6fa('0x3'));var Redis=require(_0xc6fa('0x4'));var logger=require(_0xc6fa('0x5'))(_0xc6fa('0x6'));var config=require(_0xc6fa('0x7'));config[_0xc6fa('0x8')]=_[_0xc6fa('0x9')](config['redis'],{'host':_0xc6fa('0xa'),'port':0x18eb});var io=require(_0xc6fa('0xb'))(new Redis(config[_0xc6fa('0x8')]));function getAuthToken(_0x3b7478,_0x227ec3,_0xbcbc9){if(_0x3b7478[_0xc6fa('0xc')]){_0x3b7478[_0xc6fa('0xd')]=_0x3b7478['CloudProvider'][_0xc6fa('0xe')];_0x3b7478['tenantId']=_0x3b7478[_0xc6fa('0xf')][_0xc6fa('0x10')];return Promise[_0xc6fa('0x11')](_0x3b7478[_0xc6fa('0xf')][_0xc6fa('0x12')]);}var _0x4d1c9a={'method':'POST','uri':_0x227ec3,'form':{'client_id':_0x3b7478[_0xc6fa('0x13')],'resource':_0x3b7478[_0xc6fa('0xd')],'username':_0x3b7478['username'],'password':_0x3b7478[_0xc6fa('0x14')],'grant_type':'password','client_secret':_0x3b7478['clientSecret']},'json':!![]};return rp(_0x4d1c9a)[_0xc6fa('0x15')](function(_0x9da768){return _0x9da768['access_token'];})[_0xc6fa('0x16')](function(_0x1e18d6){logger[_0xc6fa('0x17')]('['+[_0xbcbc9[_0xc6fa('0x18')]()]+']\x20Wrong\x20credentials!');return _0x1e18d6[_0xc6fa('0x19')];});}function getUser(_0x27809e,_0x137e4c,_0x4339aa,_0x593906,_0xe4b047,_0x840041){return new Promise(function(_0x818cc6,_0x34568b){return getAuthToken(_0x137e4c,_0x593906,_0x840041)['then'](function(_0xc1296e){var _0x9d01c0={'method':_0xc6fa('0x1a'),'uri':_0xe4b047+_0xc6fa('0x1b'),'headers':{'Authorization':_0xc6fa('0x1c')+_0xc1296e,'OData-Version':_0xc6fa('0x1d')},'json':!![]};return rp(_0x9d01c0);})[_0xc6fa('0x15')](function(_0x37ffda){var _0x317855=_0x37ffda['value'];var _0x4019eb=![];var _0x44c740=null;if(!_[_0xc6fa('0x1e')](_0x4339aa)){if(intUtil[_0xc6fa('0x1f')](_0x4339aa[_0xc6fa('0x20')])){_0x27809e[_0xc6fa('0x21')]=_0x4339aa['email'];for(_0x44c740=0x0;_0x44c740<_0x317855[_0xc6fa('0x22')];_0x44c740++){if(_0x317855[_0x44c740][_0xc6fa('0x23')]===_0x4339aa[_0xc6fa('0x20')]&&!_0x317855[_0x44c740][_0xc6fa('0x24')]){_0x4019eb=!![];logger[_0xc6fa('0x25')]('['+[_0x840041['toUpperCase']()]+_0xc6fa('0x26')+_0x317855[_0x44c740][_0xc6fa('0x27')]+'!');_0x27809e[_0xc6fa('0x28')]=_0x317855[_0x44c740][_0xc6fa('0x27')];}}}}if(!_0x4019eb){logger[_0xc6fa('0x25')]('['+[_0x840041[_0xc6fa('0x18')]()]+_0xc6fa('0x29'));_0x27809e[_0xc6fa('0x21')]=_0x137e4c[_0xc6fa('0x2a')];for(_0x44c740=0x0;_0x44c740<_0x317855[_0xc6fa('0x22')];_0x44c740++){if(_0x317855[_0x44c740][_0xc6fa('0x23')]===_0x137e4c[_0xc6fa('0x2a')]){_0x27809e[_0xc6fa('0x28')]=_0x317855[_0x44c740][_0xc6fa('0x27')];}}}_0x818cc6(_0x27809e);})[_0xc6fa('0x16')](function(_0x7a3b37){_0x34568b(_0x7a3b37[_0xc6fa('0x19')]);});});}function createEndUser(_0xe573d4,_0x38f599,_0x1f2f89,_0x71819c,_0x54f9ae,_0x413fbf,_0x4b484c){return new Promise(function(_0x4ae8ef,_0xcdc123){return getAuthToken(_0x38f599,_0x1f2f89,_0x413fbf)[_0xc6fa('0x15')](function(_0x3bb854){var _0x28326e=_0x413fbf[_0xc6fa('0x2b')]()==='outbound'?_0x54f9ae[_0xc6fa('0x2c')]:_0x54f9ae[_0xc6fa('0x2d')];var _0x4e77a3={'method':_0xc6fa('0x2e'),'uri':_0x71819c+_0xc6fa('0x2f'),'body':{'fullname':_0x28326e,'firstname':_0x28326e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0xe573d4[_0xc6fa('0x28')]+')'},'headers':{'Authorization':_0xc6fa('0x1c')+_0x3bb854,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x4e77a3[_0xc6fa('0x30')][_0x4b484c]=_0x28326e;return rp(_0x4e77a3);})[_0xc6fa('0x15')](function(_0x20a8ea){var _0x387364=_0x20a8ea['headers'][_0xc6fa('0x31')];var _0x2e0802=_0x387364[_0xc6fa('0x32')](_0x387364[_0xc6fa('0x33')]('(')+0x1,_0x387364[_0xc6fa('0x33')](')'));_0xe573d4['enduserId']=_0x2e0802;_0x4ae8ef(_0xe573d4);})[_0xc6fa('0x16')](function(_0x2ff51d){_0xcdc123(_0x2ff51d['message']);});});}function getEndUser(_0x374077,_0x71760d,_0x1a2355,_0x3ee002,_0x4a426a,_0x598901,_0x2066c9,_0x41b79d){var _0x1d8cd7=_0x598901['toLowerCase']()===_0xc6fa('0x34')?_0x4a426a[_0xc6fa('0x2c')]:_0x4a426a[_0xc6fa('0x2d')];return getAuthToken(_0x71760d,_0x1a2355,_0x598901)[_0xc6fa('0x15')](function(_0x91deb1){_0x41b79d=_0x41b79d?_0x41b79d:_0xc6fa('0x35');var _0x2d3ec2={'method':'GET','uri':_0x3ee002+_0xc6fa('0x36')+_0x41b79d+_0xc6fa('0x37')+_0x41b79d+_0xc6fa('0x38')+_0x1d8cd7[_0xc6fa('0x39')]('+',_0xc6fa('0x3a'))+'\x27','headers':{'Authorization':_0xc6fa('0x1c')+_0x91deb1,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2d3ec2);})[_0xc6fa('0x15')](function(_0x17dc0b){var _0x3da51b=![];if(!_0x17dc0b)return _0x3da51b;var _0x1686b4=_0x17dc0b[_0xc6fa('0x3b')];for(var _0x4fd2d8=0x0;_0x4fd2d8<_0x1686b4['length'];_0x4fd2d8++){if(_0x1686b4[_0x4fd2d8][_0x41b79d]===_0x1d8cd7){_0x3da51b=!![];_0x374077[_0xc6fa('0x3c')]=_0x1686b4[_0x4fd2d8][_0xc6fa('0x3d')];}}return _0x3da51b;})[_0xc6fa('0x15')](function(_0x499103){if(_0x499103)return _0x374077;if(_0x2066c9===_0xc6fa('0x3e')){logger['info']('['+[_0x598901[_0xc6fa('0x18')]()]+_0xc6fa('0x3f'));return _0x374077;}return createEndUser(_0x374077,_0x71760d,_0x1a2355,_0x3ee002,_0x4a426a,_0x598901,_0x41b79d)[_0xc6fa('0x15')](function(_0x278b93){logger[_0xc6fa('0x25')]('['+[_0x598901[_0xc6fa('0x18')]()]+']\x20Enduser\x20created!',_0x278b93[_0xc6fa('0x3c')]);return _0x278b93;});});}function getCustomFields(_0x17796d,_0x400ed6,_0x1d13e8){var _0x101247={};if(_0x17796d[_0xc6fa('0x22')]>0x0){_[_0xc6fa('0x40')](_0x17796d,function(_0x9c90e){if(_['includes'](['string','picklist'],_0x9c90e[_0xc6fa('0x41')])&&_0x9c90e[_0xc6fa('0x42')]&&!_0x9c90e[_0xc6fa('0x43')]){var _0x322865=_0x9c90e['idField'][_0xc6fa('0x2b')]();var _0x10b729=_0x322865[_0xc6fa('0x32')](0x0,_0x322865['indexOf']('_'));var _0x4d3e2c=_0x322865[_0xc6fa('0x32')](_0x322865[_0xc6fa('0x44')]('_')+0x1);if(_0x10b729===_0x1d13e8){_0x101247[_0x4d3e2c]=_0x9c90e[_0xc6fa('0x45')];}}});}return _0x101247;}function getTicket(_0x4e3997,_0x1ef063,_0x465868,_0x21fec6,_0x53c10a,_0x71b435,_0x558775){return new Promise(function(_0x1c2291,_0x22b7d9){var _0x45bab1;return getAuthToken(_0x1ef063,_0x465868,_0x558775)[_0xc6fa('0x15')](function(_0x3ae79a){if(_0x71b435['ticketType']==='incident'){_0x45bab1={'method':'POST','uri':_0x21fec6+_0xc6fa('0x46'),'body':Object[_0xc6fa('0x47')]({},{'title':intUtil[_0xc6fa('0x48')](_0x71b435['Subjects'],_0x53c10a,'\x20'),'description':intUtil[_0xc6fa('0x48')](_0x71b435[_0xc6fa('0x49')],_0x53c10a,'\x0a'),'customerid_contact@odata.bind':_0x4e3997[_0xc6fa('0x3c')]?_0xc6fa('0x4a')+_0x4e3997[_0xc6fa('0x3c')]+')':undefined,'ownerid@odata.bind':_0xc6fa('0x4b')+_0x4e3997[_0xc6fa('0x28')]+')','caseorigincode':'1'},getCustomFields(_0x71b435[_0xc6fa('0x4c')],_0x53c10a,_0x71b435[_0xc6fa('0x4d')])),'headers':{'Authorization':'Bearer\x20'+_0x3ae79a,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x71b435[_0xc6fa('0x4d')]===_0xc6fa('0x4e')){var _0x21c2b3=_0x4e3997['enduserId']?[{'partyid_systemuser@odata.bind':_0xc6fa('0x4b')+_0x4e3997[_0xc6fa('0x28')]+')','participationtypemask':_0x4e3997[_0xc6fa('0x4f')]===_0xc6fa('0x50')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x4e3997[_0xc6fa('0x3c')]+')','participationtypemask':_0x4e3997[_0xc6fa('0x4f')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4e3997[_0xc6fa('0x28')]+')','participationtypemask':_0x4e3997[_0xc6fa('0x4f')]==='queue'?0x2:0x1}];_0x45bab1={'method':_0xc6fa('0x2e'),'uri':_0x21fec6+_0xc6fa('0x51'),'body':Object[_0xc6fa('0x47')]({},{'subject':intUtil[_0xc6fa('0x48')](_0x71b435[_0xc6fa('0x52')],_0x53c10a,'\x20'),'phonenumber':String(_0x53c10a['calleridnum']),'description':intUtil[_0xc6fa('0x48')](_0x71b435[_0xc6fa('0x49')],_0x53c10a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4e3997[_0xc6fa('0x3c')]?_0xc6fa('0x4a')+_0x4e3997['enduserId']+')':undefined,'ownerid@odata.bind':_0xc6fa('0x4b')+_0x4e3997[_0xc6fa('0x28')]+')','directioncode':_0x4e3997[_0xc6fa('0x4f')]===_0xc6fa('0x50')?![]:!![],'phonecall_activity_parties':_0x21c2b3},getCustomFields(_0x71b435['Fields'],_0x53c10a,_0x71b435[_0xc6fa('0x4d')])),'headers':{'Authorization':'Bearer\x20'+_0x3ae79a,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x45bab1);})[_0xc6fa('0x15')](function(_0x5370b7){var _0x5af75b=_0x5370b7[_0xc6fa('0x53')][_0xc6fa('0x31')];var _0x387a6a=_0x5af75b[_0xc6fa('0x32')](_0x5af75b[_0xc6fa('0x33')]('(')+0x1,_0x5af75b[_0xc6fa('0x33')](')'));_0x4e3997[_0xc6fa('0x54')]=_0x387a6a;_0x1c2291(_0x4e3997);})[_0xc6fa('0x16')](function(_0xa18596){_0x22b7d9(_0xa18596['message']);});});}function emit(_0x3c3079,_0x4026a4,_0x111655,_0x247ffa){var _0x2b3a54={'uri':util['format'](_0xc6fa('0x55'),_0x3c3079,_0x111655,_0x247ffa)};io['to'](util[_0xc6fa('0x56')](_0xc6fa('0x57'),_0x4026a4))['emit'](_0xc6fa('0x58'),_0x2b3a54);}exports['cs']=function(_0x4879a1,_0x13032b,_0x432efc,_0x5edf8f,_0x529051,_0x3b2d3c,_0x1c2ac4,_0x3318db){var _0xcd8ef2={};_0x3b2d3c[_0xc6fa('0xd')]=_0x3b2d3c[_0xc6fa('0xc')]?intUtil['stripTrailingSlash'](_0x3b2d3c[_0xc6fa('0xf')][_0xc6fa('0xe')]):intUtil['stripTrailingSlash'](_0x3b2d3c[_0xc6fa('0xd')]);_0x3b2d3c[_0xc6fa('0x59')]=intUtil[_0xc6fa('0x5a')](_0x3b2d3c[_0xc6fa('0x59')]);_0xcd8ef2[_0xc6fa('0x4f')]=_0x3318db===_0xc6fa('0x50')||_0x3318db==='unmanaged'?_0xc6fa('0x50'):'outbound';var _0x11e0cc=_0x3b2d3c['modernAuthentication']?util[_0xc6fa('0x56')](_0xc6fa('0x5b'),_0x3b2d3c['CloudProvider'][_0xc6fa('0xe')]):util[_0xc6fa('0x56')](_0xc6fa('0x5b'),_0x3b2d3c[_0xc6fa('0xd')]);var _0x4ff2af=util[_0xc6fa('0x56')]('https://login.microsoftonline.com/%s/oauth2/token',_0x3b2d3c[_0xc6fa('0x5c')]);var _0x40fff7=util[_0xc6fa('0x56')](_0xc6fa('0x5d'),_0x3b2d3c[_0xc6fa('0x59')],_0x13032b[_0xc6fa('0x5e')],md5(_0x13032b[_0xc6fa('0x5e')]));if(_0x529051&&_0x529051[_0xc6fa('0x5f')]){logger['info'](_0xc6fa('0x60'),_0xc6fa('0x61'));_0x13032b[_0xc6fa('0x62')]=_0x40fff7;}else if(_0x1c2ac4&&_0x1c2ac4[_0xc6fa('0x63')]&&_0x1c2ac4[_0xc6fa('0x63')]!==_0xc6fa('0x64')){logger[_0xc6fa('0x25')]('[OUTBOUND]',_0xc6fa('0x61'));_0x13032b[_0xc6fa('0x62')]=_0x40fff7;}else{_0x13032b['recordingURL']='';}return getUser(_0xcd8ef2,_0x3b2d3c,_0x5edf8f,_0x4ff2af,_0x11e0cc,_0x3318db)['then'](function(_0x5cfb36){logger[_0xc6fa('0x25')]('['+_0x3318db['toUpperCase']()+_0xc6fa('0x65'),_0x5cfb36['userId']);logger[_0xc6fa('0x25')]('['+_0x3318db[_0xc6fa('0x18')]()+']\x20The\x20User\x20email\x20is:',_0x5cfb36[_0xc6fa('0x21')]);return getEndUser(_0x5cfb36,_0x3b2d3c,_0x4ff2af,_0x11e0cc,_0x13032b,_0x3318db,_0x432efc[_0xc6fa('0x66')],_0x432efc[_0xc6fa('0x67')]);})['then'](function(_0xa8aab0){logger[_0xc6fa('0x25')]('['+_0x3318db[_0xc6fa('0x18')]()+_0xc6fa('0x68'),_0xa8aab0[_0xc6fa('0x3c')]);logger[_0xc6fa('0x25')]('['+_0x3318db[_0xc6fa('0x18')]()+_0xc6fa('0x69'),_0x13032b[_0xc6fa('0x2d')]);return getTicket(_0xa8aab0,_0x3b2d3c,_0x4ff2af,_0x11e0cc,_0x13032b,_0x432efc,_0x3318db);})[_0xc6fa('0x15')](function(_0x5c2636){logger[_0xc6fa('0x25')](util[_0xc6fa('0x56')]('['+_0x3318db[_0xc6fa('0x18')]()+_0xc6fa('0x6a'),_0x432efc[_0xc6fa('0x4d')],_0x5c2636['ticketId']));logger[_0xc6fa('0x25')](util[_0xc6fa('0x56')]('['+_0x3318db['toUpperCase']()+_0xc6fa('0x6b'),_0x3318db));if(_0x3318db!==_0xc6fa('0x6c')&&_0x432efc[_0xc6fa('0x6d')]){logger[_0xc6fa('0x25')]('['+_0x3318db[_0xc6fa('0x18')]()+']',_0xc6fa('0x6e'));emit(_0x3b2d3c[_0xc6fa('0xd')],_0x5edf8f[_0xc6fa('0x6f')],_0x432efc[_0xc6fa('0x4d')],_0x5c2636[_0xc6fa('0x54')]);}})[_0xc6fa('0x16')](function(_0x32c341){logger[_0xc6fa('0x17')]('['+_0x3318db[_0xc6fa('0x18')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x32c341['message']);console[_0xc6fa('0x17')](_0xc6fa('0x70'),_0x32c341);});};
\ No newline at end of file
index 73841cb..fc5c12c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dfd=['Descriptions','<br>','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','format','Admin\x20account\x20selected.','length','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','stringify','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','variable','variableName','push','Variable','name','toLowerCase','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridnum','getString'];(function(_0x168664,_0x5482e5){var _0x51425b=function(_0x117307){while(--_0x117307){_0x168664['push'](_0x168664['shift']());}};_0x51425b(++_0x5482e5);}(_0x8dfd,0x101));var _0xd8df=function(_0x484c03,_0x13c1d2){_0x484c03=_0x484c03-0x0;var _0x294127=_0x8dfd[_0x484c03];return _0x294127;};'use strict';var _=require(_0xd8df('0x0'));var rp=require(_0xd8df('0x1'));var md5=require('md5');var util=require(_0xd8df('0x2'));var Redis=require(_0xd8df('0x3'));var intUtil=require(_0xd8df('0x4'));var config=require(_0xd8df('0x5'));var logger=require(_0xd8df('0x6'))(_0xd8df('0x7'));config[_0xd8df('0x8')]=_[_0xd8df('0x9')](config[_0xd8df('0x8')],{'host':_0xd8df('0xa'),'port':0x18eb});var io=require(_0xd8df('0xb'))(new Redis(config[_0xd8df('0x8')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x5d94e3,_0x2f118b,_0x32fe1b){io['to'](_0x5d94e3)[_0xd8df('0xc')](_0x2f118b,_0x32fe1b);}function getTicket(_0x1122a0,_0x48d328,_0x5eb055,_0x52dbb3,_0x4c72ef){logger[_0xd8df('0xd')](_0xd8df('0xe'));var _0x47b3aa=_[_0xd8df('0xf')]({'responder_id':_0x48d328['id'],'requester_id':_0x5eb055['id'],'name':util['format'](_0xd8df('0x10'),_0x4c72ef['calleridname']),'phone':_0x4c72ef[_0xd8df('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd8df('0x12')](_0x52dbb3['Subjects'],_0x4c72ef,'\x20'),'description':intUtil['getString'](_0x52dbb3[_0xd8df('0x13')],_0x4c72ef,_0xd8df('0x14')),'tags':getTags(_0x52dbb3['Tags'],'name')},getCustomFields(_0x52dbb3[_0xd8df('0x15')],_0x4c72ef));_0x47b3aa[_0xd8df('0x16')]=_[_0xd8df('0x17')](_[_0xd8df('0x18')](_0x47b3aa[_0xd8df('0x16')],'id'),_0xd8df('0x19'));return request({'uri':util['format'](_0xd8df('0x1a'),_0x1122a0[_0xd8df('0x1b')]),'method':_0xd8df('0x1c'),'body':_0x47b3aa})['then'](function(_0x147606){logger[_0xd8df('0xd')](_0xd8df('0x1d'));return _0x147606;});}function getUser(_0x2ef27e,_0x2311d1){if(intUtil[_0xd8df('0x1e')](_0x2311d1)){return request({'uri':util['format'](_0xd8df('0x1f'),_0x2ef27e[_0xd8df('0x1b')]),'qs':{'email':_0x2311d1}})[_0xd8df('0x20')](function(_0x28a4c0){if(_0x28a4c0['length']){logger['info'](_0xd8df('0x21'));return _['find'](_0x28a4c0,function(_0x5073b9){return _0x5073b9[_0xd8df('0x22')][_0xd8df('0x23')]===_0x2311d1;});}else{logger[_0xd8df('0xd')](_0xd8df('0x24'));return request({'uri':util['format'](_0xd8df('0x25'),_0x2ef27e[_0xd8df('0x1b')])})[_0xd8df('0x20')](function(_0x17efb8){logger[_0xd8df('0xd')]('Admin\x20account\x20selected.');return _0x17efb8;});}});}else{logger[_0xd8df('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd8df('0x26')]('%s/api/v2/agents/me',_0x2ef27e['remoteUri'])})[_0xd8df('0x20')](function(_0x35a4b1){logger['info'](_0xd8df('0x27'));return _0x35a4b1;});}}function getEndUser(_0x54cce6,_0x1b4d1a,_0x2d3ee3){logger[_0xd8df('0xd')]('Searching\x20enduser\x20with\x20phone',_0x2d3ee3);return request({'uri':util[_0xd8df('0x26')]('%s/api/v2/contacts',_0x54cce6[_0xd8df('0x1b')]),'qs':{'phone':_0x2d3ee3}})['then'](function(_0x347f52){if(_0x347f52[_0xd8df('0x28')]){logger['info'](_0xd8df('0x29'));return _[_0xd8df('0x2a')](_0x347f52,{'phone':_0x2d3ee3});}else{logger[_0xd8df('0xd')](_0xd8df('0x2b'));return request({'uri':util[_0xd8df('0x26')](_0xd8df('0x2c'),_0x54cce6[_0xd8df('0x1b')]),'method':_0xd8df('0x1c'),'body':{'name':_0x1b4d1a,'phone':_0x2d3ee3}})[_0xd8df('0x20')](function(_0x3889f9){logger['info'](_0xd8df('0x2d'));return _0x3889f9;});}});}function getAuth(_0x54c2f0){return util[_0xd8df('0x26')](_0xd8df('0x2e'),new Buffer(_0x54c2f0[_0xd8df('0x2f')]+':X')['toString']('base64'));}function request(_0x5bc01f){logger[_0xd8df('0x30')](_0xd8df('0x31'),JSON[_0xd8df('0x32')](_0x5bc01f));return rp(_[_0xd8df('0x9')](_0x5bc01f,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x113fa4,_0xd2c05b){var _0x3da7f2=[];if(_0x113fa4&&_0x113fa4['length']>0x0){_0x3da7f2=_['map'](_0x113fa4,_0xd2c05b);}return _0x3da7f2;}function getCustomFields(_0x3ce8bb,_0x11877b){var _0x2476e3=[];var _0x53e3c9={'custom_fields':[]};if(_0x3ce8bb[_0xd8df('0x28')]>0x0){_[_0xd8df('0x33')](_0x3ce8bb,function(_0x466e53){if(_[_0xd8df('0x34')]([_0xd8df('0x35'),_0xd8df('0x36')],_0x466e53[_0xd8df('0x37')])&&_0x466e53[_0xd8df('0x38')]&&!_0x466e53[_0xd8df('0x39')]){_0x53e3c9[_0x466e53[_0xd8df('0x38')]['toLowerCase']()]=_0x466e53[_0xd8df('0x3a')][_0xd8df('0x3b')]();}else if(_['includes']([_0xd8df('0x35'),_0xd8df('0x36')],_0x466e53[_0xd8df('0x37')])&&_0x466e53[_0xd8df('0x3c')]&&_0x466e53[_0xd8df('0x39')]){_0x53e3c9['custom_fields']['push']({'id':_0x466e53['idField'],'value':_0x466e53[_0xd8df('0x3a')][_0xd8df('0x3b')]()});}else if(_0x466e53['type']===_0xd8df('0x3d')&&_0x466e53[_0xd8df('0x3e')]&&_0x466e53[_0xd8df('0x3c')]&&_0x466e53[_0xd8df('0x39')]){_0x11877b[_0x466e53['variableName']]&&_0x53e3c9[_0xd8df('0x16')][_0xd8df('0x3f')]({'id':_0x466e53[_0xd8df('0x3c')],'value':_0x11877b[_0x466e53[_0xd8df('0x3e')]][_0xd8df('0x3b')]()});}else if(_0x466e53[_0xd8df('0x37')]==='customVariable'&&_0x466e53[_0xd8df('0x40')]&&_0x466e53[_0xd8df('0x40')][_0xd8df('0x41')]&&_0x466e53[_0xd8df('0x3c')]&&_0x466e53[_0xd8df('0x39')]){_0x11877b[_0x466e53['Variable'][_0xd8df('0x41')]['toLowerCase']()]&&_0x53e3c9[_0xd8df('0x16')]['push']({'id':_0x466e53[_0xd8df('0x3c')],'value':_0x11877b[_0x466e53[_0xd8df('0x40')][_0xd8df('0x41')][_0xd8df('0x42')]()][_0xd8df('0x3b')]()});}});}return _0x53e3c9;}exports['queue']=function(_0x3bdab0,_0x468dd2,_0x373f75,_0x20c403,_0x144a46,_0x3fe0e1){var _0x3cc154,_0x23c1cd;_0x3fe0e1[_0xd8df('0x1b')]=intUtil[_0xd8df('0x43')](_0x3fe0e1['remoteUri']);_0x3fe0e1[_0xd8df('0x44')]=intUtil[_0xd8df('0x43')](_0x3fe0e1[_0xd8df('0x44')]);if(_0x144a46&&_0x144a46['monitor_format']){logger[_0xd8df('0xd')](_0xd8df('0x45'),_0xd8df('0x46'));_0x468dd2[_0xd8df('0x47')]=util[_0xd8df('0x26')](_0xd8df('0x48'),_0x3fe0e1['serverUrl'],_0x468dd2[_0xd8df('0x49')],md5(_0x468dd2[_0xd8df('0x49')]));}else{_0x468dd2['recordingURL']='';}headers[_0xd8df('0x4a')]=getAuth(_0x3fe0e1);return getUser(_0x3fe0e1,_0x20c403[_0xd8df('0x23')])[_0xd8df('0x20')](function(_0x3622c5){_0x3cc154=_0x3622c5;logger['info'](_0xd8df('0x4b'),_0x3cc154['id']);return getEndUser(_0x3fe0e1,_0x468dd2[_0xd8df('0x4c')],_0x468dd2[_0xd8df('0x11')]);})[_0xd8df('0x20')](function(_0x388194){_0x23c1cd=_0x388194;logger['info'](_0xd8df('0x4d'),_0x23c1cd['id']);return getTicket(_0x3fe0e1,_0x3cc154,_0x23c1cd,_0x373f75,_0x468dd2);})[_0xd8df('0x20')](function(_0x534221){if(_0x534221&&_0x534221['id']){logger[_0xd8df('0xd')](_0xd8df('0x1d'));logger[_0xd8df('0xd')](_0xd8df('0x4e'),_0x534221['id']);logger[_0xd8df('0xd')]('[QUEUE]',_0xd8df('0x4f'));emit(util[_0xd8df('0x26')](_0xd8df('0x50'),_0x20c403[_0xd8df('0x41')]),_0xd8df('0x51'),{'uri':util[_0xd8df('0x26')](_0xd8df('0x52'),_0x3fe0e1[_0xd8df('0x1b')],_0x534221['id'])});}})[_0xd8df('0x53')](function(_0x41ce5f){logger[_0xd8df('0x54')](_0xd8df('0x45'),JSON['stringify'](_0x41ce5f));});};exports['outbound']=function(_0x1e08f2,_0x42d62b,_0x440f49,_0x16e469,_0x9935f7,_0x43fe9d,_0x14d893){var _0x5bc6f7,_0x4062f8;_0x43fe9d[_0xd8df('0x1b')]=intUtil['stripTrailingSlash'](_0x43fe9d['remoteUri']);_0x43fe9d[_0xd8df('0x44')]=intUtil['stripTrailingSlash'](_0x43fe9d['serverUrl']);if(_0x14d893&&_0x14d893['recordingFormat']&&_0x14d893[_0xd8df('0x55')]!==_0xd8df('0x56')){logger[_0xd8df('0xd')](_0xd8df('0x57'),'Recording\x20is\x20enabled!');_0x42d62b['recordingURL']=util[_0xd8df('0x26')](_0xd8df('0x48'),_0x43fe9d[_0xd8df('0x44')],_0x42d62b[_0xd8df('0x49')],md5(_0x42d62b[_0xd8df('0x49')]));}headers[_0xd8df('0x4a')]=getAuth(_0x43fe9d);return getUser(_0x43fe9d,_0x16e469[_0xd8df('0x23')])['then'](function(_0x3aaa40){_0x5bc6f7=_0x3aaa40;logger[_0xd8df('0xd')](_0xd8df('0x4b'),_0x5bc6f7['id']);return getEndUser(_0x43fe9d,_0x42d62b['destcalleridname'],_0x42d62b['destcalleridnum']);})[_0xd8df('0x20')](function(_0x22257a){_0x4062f8=_0x22257a;logger[_0xd8df('0xd')](_0xd8df('0x4d'),_0x4062f8['id']);return getTicket(_0x43fe9d,_0x5bc6f7,_0x4062f8,_0x440f49,_0x42d62b);})[_0xd8df('0x20')](function(_0x33c513){if(_0x33c513&&_0x33c513['id']){logger[_0xd8df('0xd')](_0xd8df('0x1d'));logger[_0xd8df('0xd')]('The\x20Ticket\x20ID\x20is:',_0x33c513['id']);logger[_0xd8df('0xd')](_0xd8df('0x57'),_0xd8df('0x4f'));emit(util[_0xd8df('0x26')](_0xd8df('0x50'),_0x16e469[_0xd8df('0x41')]),_0xd8df('0x51'),{'uri':util['format'](_0xd8df('0x52'),_0x43fe9d[_0xd8df('0x1b')],_0x33c513['id'])});}})['catch'](function(_0x66c828){logger[_0xd8df('0x54')](_0xd8df('0x57'),JSON[_0xd8df('0x32')](_0x66c828));});};exports[_0xd8df('0x58')]=function(_0x357d22,_0x2bba49,_0xbacf55,_0x2be8d5,_0x122e6d,_0x2c120c){var _0x2f25ab,_0x17040d;_0x2c120c[_0xd8df('0x1b')]=intUtil[_0xd8df('0x43')](_0x2c120c[_0xd8df('0x1b')]);_0x2c120c[_0xd8df('0x44')]=intUtil[_0xd8df('0x43')](_0x2c120c['serverUrl']);if(_0x122e6d&&_0x122e6d[_0xd8df('0x59')]){logger['info']('['+_0x2bba49[_0xd8df('0x5a')][_0xd8df('0x5b')]()+']',_0xd8df('0x46'));_0x2bba49[_0xd8df('0x47')]=util[_0xd8df('0x26')](_0xd8df('0x48'),_0x2c120c[_0xd8df('0x44')],_0x2bba49[_0xd8df('0x49')],md5(_0x2bba49['uniqueid']));}else{_0x2bba49['recordingURL']='';}headers[_0xd8df('0x4a')]=getAuth(_0x2c120c);return getUser(_0x2c120c,'')[_0xd8df('0x20')](function(_0x3b93e9){_0x2f25ab=_0x3b93e9;logger['info'](_0xd8df('0x4b'),_0x2f25ab['id']);return getEndUser(_0x2c120c,_0x2bba49[_0xd8df('0x4c')],_0x2bba49[_0xd8df('0x11')]);})[_0xd8df('0x20')](function(_0x23eaf8){_0x17040d=_0x23eaf8;logger[_0xd8df('0xd')](_0xd8df('0x4d'),_0x17040d['id']);return getTicket(_0x2c120c,_0x2f25ab,_0x17040d,_0xbacf55,_0x2bba49);})[_0xd8df('0x20')](function(_0x5cfd64){if(_0x5cfd64){logger['info'](_0xd8df('0x1d'));logger[_0xd8df('0xd')](_0xd8df('0x4e'),_0x5cfd64['id']);}})['catch'](function(_0x1236a3){logger[_0xd8df('0x54')]('['+_0x2bba49[_0xd8df('0x5a')][_0xd8df('0x5b')]()+']',JSON['stringify'](_0x1236a3));});};
\ No newline at end of file
+var _0x20c0=['[HTTP]','stringify','GET','forEach','includes','string','picklist','nameField','toLowerCase','customField','idField','content','variable','variableName','Variable','push','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','none','[OUTBOUND]','Authorization','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Ticket\x20created!','trigger:browser:url','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','lodash','md5','util','ioredis','../../../../config/environment','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','info','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','toString','base64','debug'];(function(_0x1ded3f,_0x38b38e){var _0x210c67=function(_0x379046){while(--_0x379046){_0x1ded3f['push'](_0x1ded3f['shift']());}};_0x210c67(++_0x38b38e);}(_0x20c0,0x149));var _0x020c=function(_0x453a4b,_0x1a57a7){_0x453a4b=_0x453a4b-0x0;var _0x552b7a=_0x20c0[_0x453a4b];return _0x552b7a;};'use strict';var _=require(_0x020c('0x0'));var rp=require('request-promise');var md5=require(_0x020c('0x1'));var util=require(_0x020c('0x2'));var Redis=require(_0x020c('0x3'));var intUtil=require('./util');var config=require(_0x020c('0x4'));var logger=require('../../../../config/logger')(_0x020c('0x5'));config[_0x020c('0x6')]=_[_0x020c('0x7')](config['redis'],{'host':_0x020c('0x8'),'port':0x18eb});var io=require(_0x020c('0x9'))(new Redis(config[_0x020c('0x6')]));var headers={'Content-Type':_0x020c('0xa'),'Accept':_0x020c('0xa')};function emit(_0x2a8a4c,_0x4c9c49,_0xb71787){io['to'](_0x2a8a4c)[_0x020c('0xb')](_0x4c9c49,_0xb71787);}function getTicket(_0x51956f,_0x12c08e,_0x1fc488,_0x4edde1,_0x369801){logger['info'](_0x020c('0xc'));var _0x34800a=_[_0x020c('0xd')]({'responder_id':_0x12c08e['id'],'requester_id':_0x1fc488['id'],'name':util[_0x020c('0xe')]('Caller\x20-\x20%s',_0x369801[_0x020c('0xf')]),'phone':_0x369801[_0x020c('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x020c('0x11')](_0x4edde1[_0x020c('0x12')],_0x369801,'\x20'),'description':intUtil[_0x020c('0x11')](_0x4edde1[_0x020c('0x13')],_0x369801,_0x020c('0x14')),'tags':getTags(_0x4edde1[_0x020c('0x15')],_0x020c('0x16'))},getCustomFields(_0x4edde1[_0x020c('0x17')],_0x369801));_0x34800a[_0x020c('0x18')]=_[_0x020c('0x19')](_[_0x020c('0x1a')](_0x34800a[_0x020c('0x18')],'id'),_0x020c('0x1b'));return request({'uri':util[_0x020c('0xe')](_0x020c('0x1c'),_0x51956f[_0x020c('0x1d')]),'method':_0x020c('0x1e'),'body':_0x34800a})['then'](function(_0x3a9c78){logger[_0x020c('0x1f')]('Ticket\x20created!');return _0x3a9c78;});}function getUser(_0x4a5769,_0x262bce){if(intUtil[_0x020c('0x20')](_0x262bce)){return request({'uri':util[_0x020c('0xe')](_0x020c('0x21'),_0x4a5769['remoteUri']),'qs':{'email':_0x262bce}})['then'](function(_0x147d9a){if(_0x147d9a[_0x020c('0x22')]){logger['info'](_0x020c('0x23'));return _[_0x020c('0x24')](_0x147d9a,function(_0x13bcb0){return _0x13bcb0[_0x020c('0x25')]['email']===_0x262bce;});}else{logger['info'](_0x020c('0x26'));return request({'uri':util[_0x020c('0xe')](_0x020c('0x27'),_0x4a5769[_0x020c('0x1d')])})[_0x020c('0x28')](function(_0x19d13c){logger[_0x020c('0x1f')]('Admin\x20account\x20selected.');return _0x19d13c;});}});}else{logger[_0x020c('0x1f')](_0x020c('0x29'));return request({'uri':util['format'](_0x020c('0x27'),_0x4a5769[_0x020c('0x1d')])})[_0x020c('0x28')](function(_0x4573c6){logger[_0x020c('0x1f')](_0x020c('0x2a'));return _0x4573c6;});}}function getEndUser(_0x45bfd5,_0x3f387f,_0x3571aa){logger['info'](_0x020c('0x2b'),_0x3571aa);return request({'uri':util[_0x020c('0xe')](_0x020c('0x2c'),_0x45bfd5[_0x020c('0x1d')]),'qs':{'phone':_0x3571aa}})[_0x020c('0x28')](function(_0x50f21b){if(_0x50f21b[_0x020c('0x22')]){logger[_0x020c('0x1f')](_0x020c('0x2d'));return _[_0x020c('0x24')](_0x50f21b,{'phone':_0x3571aa});}else{logger['info'](_0x020c('0x2e'));return request({'uri':util[_0x020c('0xe')](_0x020c('0x2c'),_0x45bfd5[_0x020c('0x1d')]),'method':_0x020c('0x1e'),'body':{'name':_0x3f387f,'phone':_0x3571aa}})['then'](function(_0x212e3f){logger['info']('Enduser\x20created.');return _0x212e3f;});}});}function getAuth(_0x129697){return util[_0x020c('0xe')](_0x020c('0x2f'),new Buffer(_0x129697['apiKey']+':X')[_0x020c('0x30')](_0x020c('0x31')));}function request(_0x14a552){logger[_0x020c('0x32')](_0x020c('0x33'),JSON[_0x020c('0x34')](_0x14a552));return rp(_['defaults'](_0x14a552,{'method':_0x020c('0x35'),'headers':headers,'json':!![]}));}function getTags(_0xeddc87,_0xc490a5){var _0x4528d0=[];if(_0xeddc87&&_0xeddc87[_0x020c('0x22')]>0x0){_0x4528d0=_['map'](_0xeddc87,_0xc490a5);}return _0x4528d0;}function getCustomFields(_0xe7c339,_0x2c613b){var _0x4fdc1e=[];var _0x1523f9={'custom_fields':[]};if(_0xe7c339[_0x020c('0x22')]>0x0){_[_0x020c('0x36')](_0xe7c339,function(_0x32070b){if(_[_0x020c('0x37')]([_0x020c('0x38'),_0x020c('0x39')],_0x32070b['type'])&&_0x32070b['nameField']&&!_0x32070b['customField']){_0x1523f9[_0x32070b[_0x020c('0x3a')][_0x020c('0x3b')]()]=_0x32070b['content']['toString']();}else if(_[_0x020c('0x37')](['string',_0x020c('0x39')],_0x32070b['type'])&&_0x32070b['idField']&&_0x32070b[_0x020c('0x3c')]){_0x1523f9[_0x020c('0x18')]['push']({'id':_0x32070b[_0x020c('0x3d')],'value':_0x32070b[_0x020c('0x3e')][_0x020c('0x30')]()});}else if(_0x32070b['type']===_0x020c('0x3f')&&_0x32070b[_0x020c('0x40')]&&_0x32070b[_0x020c('0x3d')]&&_0x32070b[_0x020c('0x3c')]){_0x2c613b[_0x32070b[_0x020c('0x40')]]&&_0x1523f9[_0x020c('0x18')]['push']({'id':_0x32070b['idField'],'value':_0x2c613b[_0x32070b['variableName']][_0x020c('0x30')]()});}else if(_0x32070b['type']==='customVariable'&&_0x32070b[_0x020c('0x41')]&&_0x32070b[_0x020c('0x41')][_0x020c('0x16')]&&_0x32070b['idField']&&_0x32070b[_0x020c('0x3c')]){_0x2c613b[_0x32070b[_0x020c('0x41')][_0x020c('0x16')][_0x020c('0x3b')]()]&&_0x1523f9[_0x020c('0x18')][_0x020c('0x42')]({'id':_0x32070b[_0x020c('0x3d')],'value':_0x2c613b[_0x32070b['Variable'][_0x020c('0x16')][_0x020c('0x3b')]()][_0x020c('0x30')]()});}});}return _0x1523f9;}exports[_0x020c('0x43')]=function(_0x18d033,_0x59d05a,_0x2e7bbc,_0x3fd3fc,_0x525e5e,_0x195f86){var _0x5c9587,_0x13010d;_0x195f86[_0x020c('0x1d')]=intUtil[_0x020c('0x44')](_0x195f86[_0x020c('0x1d')]);_0x195f86[_0x020c('0x45')]=intUtil[_0x020c('0x44')](_0x195f86[_0x020c('0x45')]);if(_0x525e5e&&_0x525e5e[_0x020c('0x46')]){logger[_0x020c('0x1f')](_0x020c('0x47'),_0x020c('0x48'));_0x59d05a[_0x020c('0x49')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x195f86[_0x020c('0x45')],_0x59d05a[_0x020c('0x4a')],md5(_0x59d05a[_0x020c('0x4a')]));}else{_0x59d05a['recordingURL']='';}headers['Authorization']=getAuth(_0x195f86);return getUser(_0x195f86,_0x3fd3fc[_0x020c('0x4b')])['then'](function(_0x58b61c){_0x5c9587=_0x58b61c;logger[_0x020c('0x1f')]('The\x20User\x20ID\x20is:',_0x5c9587['id']);return getEndUser(_0x195f86,_0x59d05a[_0x020c('0xf')],_0x59d05a[_0x020c('0x10')]);})[_0x020c('0x28')](function(_0x419624){_0x13010d=_0x419624;logger['info'](_0x020c('0x4c'),_0x13010d['id']);return getTicket(_0x195f86,_0x5c9587,_0x13010d,_0x2e7bbc,_0x59d05a);})['then'](function(_0x549a33){if(_0x549a33&&_0x549a33['id']){logger[_0x020c('0x1f')]('Ticket\x20created!');logger[_0x020c('0x1f')](_0x020c('0x4d'),_0x549a33['id']);logger[_0x020c('0x1f')]('[QUEUE]',_0x020c('0x4e'));emit(util[_0x020c('0xe')](_0x020c('0x4f'),_0x3fd3fc[_0x020c('0x16')]),'trigger:browser:url',{'uri':util[_0x020c('0xe')](_0x020c('0x50'),_0x195f86[_0x020c('0x1d')],_0x549a33['id'])});}})[_0x020c('0x51')](function(_0x5c6e1e){logger[_0x020c('0x52')](_0x020c('0x47'),JSON['stringify'](_0x5c6e1e));});};exports[_0x020c('0x53')]=function(_0x5e5ae1,_0x552fb1,_0x42c75b,_0x6655f2,_0xabbe2d,_0x260d99,_0x454717){var _0x191a37,_0x191156;_0x260d99['remoteUri']=intUtil['stripTrailingSlash'](_0x260d99[_0x020c('0x1d')]);_0x260d99[_0x020c('0x45')]=intUtil[_0x020c('0x44')](_0x260d99[_0x020c('0x45')]);if(_0x454717&&_0x454717['recordingFormat']&&_0x454717['recordingFormat']!==_0x020c('0x54')){logger[_0x020c('0x1f')](_0x020c('0x55'),'Recording\x20is\x20enabled!');_0x552fb1[_0x020c('0x49')]=util[_0x020c('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x260d99[_0x020c('0x45')],_0x552fb1[_0x020c('0x4a')],md5(_0x552fb1[_0x020c('0x4a')]));}headers[_0x020c('0x56')]=getAuth(_0x260d99);return getUser(_0x260d99,_0x6655f2[_0x020c('0x4b')])[_0x020c('0x28')](function(_0xa83b7c){_0x191a37=_0xa83b7c;logger[_0x020c('0x1f')](_0x020c('0x57'),_0x191a37['id']);return getEndUser(_0x260d99,_0x552fb1[_0x020c('0x58')],_0x552fb1[_0x020c('0x59')]);})[_0x020c('0x28')](function(_0x2bb215){_0x191156=_0x2bb215;logger[_0x020c('0x1f')](_0x020c('0x4c'),_0x191156['id']);return getTicket(_0x260d99,_0x191a37,_0x191156,_0x42c75b,_0x552fb1);})[_0x020c('0x28')](function(_0x5439da){if(_0x5439da&&_0x5439da['id']){logger['info'](_0x020c('0x5a'));logger['info'](_0x020c('0x4d'),_0x5439da['id']);logger[_0x020c('0x1f')]('[OUTBOUND]',_0x020c('0x4e'));emit(util[_0x020c('0xe')](_0x020c('0x4f'),_0x6655f2[_0x020c('0x16')]),_0x020c('0x5b'),{'uri':util[_0x020c('0xe')]('%s/helpdesk/tickets/%d',_0x260d99['remoteUri'],_0x5439da['id'])});}})[_0x020c('0x51')](function(_0x2c1826){logger['error'](_0x020c('0x55'),JSON[_0x020c('0x34')](_0x2c1826));});};exports['unmanaged']=function(_0x3ef082,_0x4faddb,_0x19d769,_0x2a644d,_0x2df972,_0x1440b1){var _0x55c145,_0x5343e0;_0x1440b1['remoteUri']=intUtil[_0x020c('0x44')](_0x1440b1[_0x020c('0x1d')]);_0x1440b1[_0x020c('0x45')]=intUtil[_0x020c('0x44')](_0x1440b1[_0x020c('0x45')]);if(_0x2df972&&_0x2df972[_0x020c('0x46')]){logger['info']('['+_0x4faddb[_0x020c('0x5c')][_0x020c('0x5d')]()+']',_0x020c('0x48'));_0x4faddb[_0x020c('0x49')]=util[_0x020c('0xe')](_0x020c('0x5e'),_0x1440b1[_0x020c('0x45')],_0x4faddb['uniqueid'],md5(_0x4faddb[_0x020c('0x4a')]));}else{_0x4faddb['recordingURL']='';}headers[_0x020c('0x56')]=getAuth(_0x1440b1);return getUser(_0x1440b1,'')[_0x020c('0x28')](function(_0x209169){_0x55c145=_0x209169;logger[_0x020c('0x1f')](_0x020c('0x57'),_0x55c145['id']);return getEndUser(_0x1440b1,_0x4faddb['calleridname'],_0x4faddb['calleridnum']);})['then'](function(_0x12fcd3){_0x5343e0=_0x12fcd3;logger[_0x020c('0x1f')]('The\x20Enduser\x20ID\x20is:',_0x5343e0['id']);return getTicket(_0x1440b1,_0x55c145,_0x5343e0,_0x19d769,_0x4faddb);})[_0x020c('0x28')](function(_0x1e20b5){if(_0x1e20b5){logger[_0x020c('0x1f')](_0x020c('0x5a'));logger[_0x020c('0x1f')](_0x020c('0x4d'),_0x1e20b5['id']);}})[_0x020c('0x51')](function(_0x340d7d){logger['error']('['+_0x4faddb[_0x020c('0x5c')]['toUpperCase']()+']',JSON['stringify'](_0x340d7d));});};
\ No newline at end of file
index 7718161..47978de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e3c=['lodash','request-promise','util','moment','bluebird','./util','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','then','users','length','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','/api/selector/owners','Getting\x20user\x20list','agentEmail','userEmail','User\x20found:','userId','Admin\x20selected','toUpperCase','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','outbound','destcalleridnum','calleridnum','queue','email','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect'];(function(_0x222c21,_0xc9b41a){var _0x14dede=function(_0xfc2376){while(--_0xfc2376){_0x222c21['push'](_0x222c21['shift']());}};_0x14dede(++_0xc9b41a);}(_0x2e3c,0x14c));var _0xc2e3=function(_0x27546e,_0x5b786f){_0x27546e=_0x27546e-0x0;var _0x1fdd5a=_0x2e3c[_0x27546e];return _0x1fdd5a;};'use strict';var _=require(_0xc2e3('0x0'));var rp=require(_0xc2e3('0x1'));var md5=require('md5');var util=require(_0xc2e3('0x2'));var moment=require(_0xc2e3('0x3'));var Promise=require(_0xc2e3('0x4'));var Redis=require('ioredis');var intUtil=require(_0xc2e3('0x5'));var config=require('../../../../config/environment');var logger=require(_0xc2e3('0x6'))(_0xc2e3('0x7'));config[_0xc2e3('0x8')]=_[_0xc2e3('0x9')](config[_0xc2e3('0x8')],{'host':_0xc2e3('0xa'),'port':0x18eb});var io=require(_0xc2e3('0xb'))(new Redis(config[_0xc2e3('0x8')]));function getAdminId(_0x1376eb,_0x4f1081,_0x19ce8e,_0x3819cf){return new Promise(function(_0x9c615f,_0x1e32d1){var _0x15dbb9=![];var _0x44cdde={'method':_0xc2e3('0xc'),'uri':_0x3819cf+'/api/selector/owners','json':!![]};_0x44cdde[_0xc2e3('0xd')]=_0x19ce8e;logger[_0xc2e3('0xe')](_0xc2e3('0xf'));return rp(_0x44cdde)[_0xc2e3('0x10')](function(_0x47db24){if(_0x47db24){var _0x8347fa=_0x47db24[_0xc2e3('0x11')];var _0x136b7c=null;for(_0x136b7c=0x0;_0x136b7c<_0x8347fa[_0xc2e3('0x12')];_0x136b7c++){if(_0x8347fa[_0x136b7c]['email']===_0x1376eb['adminEmail']){_0x1376eb[_0xc2e3('0x13')]=_0x8347fa[_0x136b7c]['id'];_0x15dbb9=!![];}}if(_0x15dbb9){logger[_0xc2e3('0xe')]('Admin\x20found:',_0x1376eb[_0xc2e3('0x13')]);_0x9c615f(_0x1376eb);}else{_0x1e32d1({'statusCode':0x194,'message':_0xc2e3('0x14')});}}else{_0x1e32d1({'statusCode':0x194,'message':_0xc2e3('0x14')});}})[_0xc2e3('0x15')](function(_0x3f84b5){logger[_0xc2e3('0x16')]('['+[_0x4f1081['toUpperCase']()]+']',_0x3f84b5[_0xc2e3('0x17')]);_0x1e32d1(_0x3f84b5);});});}function getUser(_0x432e61,_0x43e8bd,_0x953f9a){return function(_0x5761cd){return new Promise(function(_0x578659,_0x1e191c){var _0x2af089={'method':_0xc2e3('0xc'),'uri':_0x953f9a+_0xc2e3('0x18'),'json':!![]};_0x2af089[_0xc2e3('0xd')]=_0x43e8bd;logger['info'](_0xc2e3('0x19'));return rp(_0x2af089)[_0xc2e3('0x10')](function(_0xc87da3){if(_0xc87da3){var _0x3a0757=_0xc87da3['users'];var _0x2a48fa=![];var _0x51049a=null;if(_0x5761cd[_0xc2e3('0x1a')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x5761cd[_0xc2e3('0x1a')]);_0x5761cd[_0xc2e3('0x1b')]=_0x5761cd[_0xc2e3('0x1a')];for(_0x51049a=0x0;_0x51049a<_0x3a0757[_0xc2e3('0x12')];_0x51049a++){if(_0x3a0757[_0x51049a]['email']===_0x5761cd[_0xc2e3('0x1a')]){_0x2a48fa=!![];_0x5761cd['userId']=_0x3a0757[_0x51049a]['id'];logger['info'](_0xc2e3('0x1c'),_0x5761cd[_0xc2e3('0x1d')]);}}}if(!_0x2a48fa){logger[_0xc2e3('0xe')](_0xc2e3('0x1e'));_0x5761cd['userEmail']=_0x5761cd['adminEmail'];_0x5761cd['userId']=_0x5761cd['adminId'];_0x2a48fa=!![];}if(_0x2a48fa){_0x578659(_0x5761cd);}else{_0x1e191c({'statusCode':0x194,'message':_0xc2e3('0x14')});}}else{_0x1e191c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x31d124){logger['error']('['+[_0x432e61[_0xc2e3('0x1f')]()]+']',_0x31d124[_0xc2e3('0x17')]);_0x1e191c(_0x31d124);});});};}function searchContact(_0x475af7,_0x441b68,_0x1adeb7,_0x2527ae){return new Promise(function(_0x539dbd,_0x17a0b0){var _0x48a526={'method':'GET','headers':_0x441b68,'uri':_0x475af7+_0xc2e3('0x20')+_0x2527ae+'&f='+_0x1adeb7+_0xc2e3('0x21'),'json':!![]};rp(_0x48a526)[_0xc2e3('0x10')](function(_0x3c5976){var _0x22db54=_[_0xc2e3('0x22')](_0x3c5976[_0xc2e3('0x23')][_0xc2e3('0x23')],[_0x1adeb7,_0x2527ae]);_0x539dbd(_0x22db54);})['catch'](function(_0x481ba2){_0x17a0b0(_0x481ba2);});});}function getEndUser(_0x3ae722,_0x54e123,_0x350688){return function(_0x5a994c){return new Promise(function(_0x16f476,_0x30f6f1){logger[_0xc2e3('0xe')](util[_0xc2e3('0x24')](_0xc2e3('0x25'),_0x5a994c[_0xc2e3('0x26')]));searchContact(_0x350688,_0x54e123,_0xc2e3('0x27'),_0x5a994c['contactNumber'])[_0xc2e3('0x10')](function(_0x214201){if(_0x214201){_0x5a994c[_0xc2e3('0x28')]=_0x214201['id'];logger[_0xc2e3('0xe')](_0xc2e3('0x29'),_0x5a994c[_0xc2e3('0x28')]);return _0x16f476(_0x5a994c);}searchContact(_0x350688,_0x54e123,_0xc2e3('0x2a'),_0x5a994c['contactNumber'])[_0xc2e3('0x10')](function(_0x15ddad){if(_0x15ddad){_0x5a994c[_0xc2e3('0x28')]=_0x15ddad['id'];logger[_0xc2e3('0xe')]('Contact\x20found\x20work_number:',_0x5a994c[_0xc2e3('0x28')]);return _0x16f476(_0x5a994c);}createEndUser(_0x5a994c,_0x3ae722,_0x54e123,_0x350688)['then'](function(_0x364fc5){logger['info'](_0xc2e3('0x2b'),_0x364fc5[_0xc2e3('0x28')]);return _0x16f476(_0x364fc5);});});})[_0xc2e3('0x15')](function(_0x5748d3){_0x30f6f1(_0x5748d3);});});};}function createEndUser(_0xe04c84,_0x1bc754,_0x190fe2,_0x26f255){return new Promise(function(_0x4b515c,_0x126019){var _0x1f8df6=moment();var _0x1e1b72={'method':_0xc2e3('0x2c'),'uri':_0x26f255+_0xc2e3('0x2d'),'body':{'contact':{'last_name':_0xe04c84[_0xc2e3('0x26')],'work_number':_0xe04c84[_0xc2e3('0x26')],'mobile_number':_0xe04c84[_0xc2e3('0x26')],'owner_id':_0xe04c84['userId'],'created_at':_0x1f8df6['format'](_0xc2e3('0x2e'))}},'json':!![]};_0x1e1b72[_0xc2e3('0xd')]=_0x190fe2;logger[_0xc2e3('0xe')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x1e1b72)[_0xc2e3('0x10')](function(_0xcd3177){_0xe04c84[_0xc2e3('0x28')]=_0xcd3177[_0xc2e3('0x2f')]['id'];_0x4b515c(_0xe04c84);})['catch'](function(_0x35b5fa){logger[_0xc2e3('0x16')]('['+[_0x1bc754[_0xc2e3('0x1f')]()]+']',_0x35b5fa['message']);_0x126019(_0x35b5fa['message']);});});}function getTicket(_0x20dcba,_0x57f760,_0x295eaf,_0x4f4618,_0x4631c4){return function(_0x176080){logger[_0xc2e3('0xe')](_0xc2e3('0x30'));return new Promise(function(_0x45e749,_0x13905a){var _0x566a1f=moment();var _0xadcbdc={'method':_0xc2e3('0x2c'),'uri':_0x295eaf+_0xc2e3('0x31'),'body':{'title':intUtil[_0xc2e3('0x32')](_0x4f4618[_0xc2e3('0x33')],_0x4631c4,'\x20'),'description':intUtil[_0xc2e3('0x32')](_0x4f4618[_0xc2e3('0x34')],_0x4631c4,'\x0a'),'owner_id':_0x176080[_0xc2e3('0x1d')],'creater_id':_0x176080[_0xc2e3('0x13')],'targetable_id':_0x176080[_0xc2e3('0x28')],'targetable_type':'Contact','created_at':_0x566a1f[_0xc2e3('0x24')](_0xc2e3('0x2e')),'due_date':_0x566a1f['add'](0x1e,'m')[_0xc2e3('0x24')](_0xc2e3('0x2e'))},'json':!![]};_0xadcbdc[_0xc2e3('0xd')]=_0x57f760;return rp(_0xadcbdc)[_0xc2e3('0x10')](function(_0x58510b){_0x176080['ticketId']=_0x58510b[_0xc2e3('0x35')]['id'];logger['info'](_0xc2e3('0x36'),_0x176080[_0xc2e3('0x37')]);_0x45e749(_0x176080);})[_0xc2e3('0x15')](function(_0x3771f5){logger['error']('['+[_0x20dcba[_0xc2e3('0x1f')]()]+']',_0x3771f5[_0xc2e3('0x17')]);_0x13905a(_0x3771f5['message']);});});};}function emit(_0x376c66,_0x354c67,_0x4e208b){var _0x51a5a7={'uri':_0x376c66+_0xc2e3('0x38')+_0x4e208b};io['to'](util[_0xc2e3('0x24')](_0xc2e3('0x39'),_0x354c67))[_0xc2e3('0x3a')](_0xc2e3('0x3b'),_0x51a5a7);}exports['cs']=function(_0x330d18,_0x1dd4cc,_0x449c9,_0x3e3387,_0xaeca6c,_0x4de1b0,_0x4a3acc,_0x1e1ca6){var _0x3bb25e={};var _0x2ed66e={'Authorization':_0xc2e3('0x3c')+_0x4de1b0[_0xc2e3('0x3d')]};_0x4de1b0['remoteUri']=intUtil[_0xc2e3('0x3e')](_0x4de1b0[_0xc2e3('0x3f')]);_0x4de1b0[_0xc2e3('0x40')]=intUtil['stripTrailingSlash'](_0x4de1b0[_0xc2e3('0x40')]);var _0x18aac9=_0x4de1b0[_0xc2e3('0x3f')];_0x3bb25e['adminEmail']=_0x4de1b0['username'];_0x3bb25e['contactNumber']=_0x1e1ca6['toLowerCase']()===_0xc2e3('0x41')?_0x1dd4cc[_0xc2e3('0x42')]:_0x1dd4cc[_0xc2e3('0x43')];_0x3bb25e['callDirection']=_0x1e1ca6===_0xc2e3('0x44')||_0x1e1ca6==='unmanaged'?_0xc2e3('0x44'):_0xc2e3('0x41');if(_0x3e3387){_0x3bb25e[_0xc2e3('0x1a')]=_0x3e3387[_0xc2e3('0x45')];}var _0x98dabb=util['format'](_0xc2e3('0x46'),_0x4de1b0[_0xc2e3('0x40')],_0x1dd4cc[_0xc2e3('0x47')],md5(_0x1dd4cc[_0xc2e3('0x47')]));if(_0xaeca6c&&_0xaeca6c[_0xc2e3('0x48')]){logger['info']('[QUEUE]',_0xc2e3('0x49'));_0x1dd4cc[_0xc2e3('0x4a')]=_0x98dabb;}else if(_0x4a3acc&&_0x4a3acc['recordingFormat']&&_0x4a3acc[_0xc2e3('0x4b')]!==_0xc2e3('0x4c')){logger[_0xc2e3('0xe')](_0xc2e3('0x4d'),_0xc2e3('0x49'));_0x1dd4cc[_0xc2e3('0x4a')]=_0x98dabb;}else{_0x1dd4cc[_0xc2e3('0x4a')]='';}return getAdminId(_0x3bb25e,_0x1e1ca6,_0x2ed66e,_0x18aac9)[_0xc2e3('0x10')](getUser(_0x1e1ca6,_0x2ed66e,_0x18aac9))['then'](getEndUser(_0x1e1ca6,_0x2ed66e,_0x18aac9))['then'](getTicket(_0x1e1ca6,_0x2ed66e,_0x18aac9,_0x449c9,_0x1dd4cc))['then'](function(_0x47a5fc){logger['info'](util[_0xc2e3('0x24')](_0xc2e3('0x4e'),_0x47a5fc['ticketId']));if(_0x1e1ca6!==_0xc2e3('0x4f')){logger['info']('['+[_0x1e1ca6[_0xc2e3('0x1f')]()]+']',_0xc2e3('0x50'));emit(_0x18aac9,_0x3e3387[_0xc2e3('0x51')],_0x47a5fc[_0xc2e3('0x28')]);}})[_0xc2e3('0x15')](function(_0x26507d){logger[_0xc2e3('0x16')]('['+[_0x1e1ca6[_0xc2e3('0x1f')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xc2e3('0x52')](_0x26507d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x3f44=['Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','/api/tasks','getString','Descriptions','Contact','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','request-promise','md5','bluebird','../../../../config/environment','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','then','users','length','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','Getting\x20user\x20list','agentEmail','userEmail','email','User\x20found:','userId','Admin\x20selected','catch','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts'];(function(_0x3fd3a3,_0x36c863){var _0xa3e4d5=function(_0x1fd03b){while(--_0x1fd03b){_0x3fd3a3['push'](_0x3fd3a3['shift']());}};_0xa3e4d5(++_0x36c863);}(_0x3f44,0x15f));var _0x43f4=function(_0x374932,_0x3365df){_0x374932=_0x374932-0x0;var _0x56009a=_0x3f44[_0x374932];return _0x56009a;};'use strict';var _=require(_0x43f4('0x0'));var rp=require(_0x43f4('0x1'));var md5=require(_0x43f4('0x2'));var util=require('util');var moment=require('moment');var Promise=require(_0x43f4('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x43f4('0x4'));var logger=require('../../../../config/logger')(_0x43f4('0x5'));config['redis']=_['defaults'](config[_0x43f4('0x6')],{'host':_0x43f4('0x7'),'port':0x18eb});var io=require(_0x43f4('0x8'))(new Redis(config[_0x43f4('0x6')]));function getAdminId(_0x2da67c,_0x4e8ec8,_0x55dd76,_0x237a38){return new Promise(function(_0x5688f7,_0xf12621){var _0x259cad=![];var _0x29de8a={'method':_0x43f4('0x9'),'uri':_0x237a38+_0x43f4('0xa'),'json':!![]};_0x29de8a[_0x43f4('0xb')]=_0x55dd76;logger['info']('Getting\x20admin\x20information');return rp(_0x29de8a)[_0x43f4('0xc')](function(_0x226b3e){if(_0x226b3e){var _0x7d856=_0x226b3e[_0x43f4('0xd')];var _0x2c568c=null;for(_0x2c568c=0x0;_0x2c568c<_0x7d856[_0x43f4('0xe')];_0x2c568c++){if(_0x7d856[_0x2c568c]['email']===_0x2da67c[_0x43f4('0xf')]){_0x2da67c[_0x43f4('0x10')]=_0x7d856[_0x2c568c]['id'];_0x259cad=!![];}}if(_0x259cad){logger[_0x43f4('0x11')](_0x43f4('0x12'),_0x2da67c[_0x43f4('0x10')]);_0x5688f7(_0x2da67c);}else{_0xf12621({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0xf12621({'statusCode':0x194,'message':_0x43f4('0x13')});}})['catch'](function(_0x398e51){logger[_0x43f4('0x14')]('['+[_0x4e8ec8[_0x43f4('0x15')]()]+']',_0x398e51['message']);_0xf12621(_0x398e51);});});}function getUser(_0x2e7717,_0x2140a5,_0x3beb22){return function(_0xf1e5ea){return new Promise(function(_0x1be754,_0x474b8d){var _0x30a992={'method':_0x43f4('0x9'),'uri':_0x3beb22+_0x43f4('0xa'),'json':!![]};_0x30a992[_0x43f4('0xb')]=_0x2140a5;logger['info'](_0x43f4('0x16'));return rp(_0x30a992)['then'](function(_0x2d36c9){if(_0x2d36c9){var _0x332e22=_0x2d36c9[_0x43f4('0xd')];var _0x590c59=![];var _0x24bb35=null;if(_0xf1e5ea[_0x43f4('0x17')]!==null){logger[_0x43f4('0x11')]('Getting\x20user\x20with\x20email',_0xf1e5ea['agentEmail']);_0xf1e5ea[_0x43f4('0x18')]=_0xf1e5ea['agentEmail'];for(_0x24bb35=0x0;_0x24bb35<_0x332e22['length'];_0x24bb35++){if(_0x332e22[_0x24bb35][_0x43f4('0x19')]===_0xf1e5ea[_0x43f4('0x17')]){_0x590c59=!![];_0xf1e5ea['userId']=_0x332e22[_0x24bb35]['id'];logger[_0x43f4('0x11')](_0x43f4('0x1a'),_0xf1e5ea[_0x43f4('0x1b')]);}}}if(!_0x590c59){logger['info'](_0x43f4('0x1c'));_0xf1e5ea[_0x43f4('0x18')]=_0xf1e5ea['adminEmail'];_0xf1e5ea['userId']=_0xf1e5ea[_0x43f4('0x10')];_0x590c59=!![];}if(_0x590c59){_0x1be754(_0xf1e5ea);}else{_0x474b8d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x474b8d({'statusCode':0x194,'message':_0x43f4('0x13')});}})[_0x43f4('0x1d')](function(_0x226bb1){logger[_0x43f4('0x14')]('['+[_0x2e7717[_0x43f4('0x15')]()]+']',_0x226bb1['message']);_0x474b8d(_0x226bb1);});});};}function searchContact(_0x5317b1,_0x2dca88,_0x41d0ca,_0x32db4c){return new Promise(function(_0x2cce25,_0x491c1b){var _0x28ad12={'method':'GET','headers':_0x2dca88,'uri':_0x5317b1+_0x43f4('0x1e')+_0x32db4c+_0x43f4('0x1f')+_0x41d0ca+'&entities=contact','json':!![]};rp(_0x28ad12)['then'](function(_0x380655){var _0x227eff=_[_0x43f4('0x20')](_0x380655[_0x43f4('0x21')]['contacts'],[_0x41d0ca,_0x32db4c]);_0x2cce25(_0x227eff);})[_0x43f4('0x1d')](function(_0x108ce5){_0x491c1b(_0x108ce5);});});}function getEndUser(_0x2d926b,_0x5f412e,_0x423e0e){return function(_0x5c578f){return new Promise(function(_0x31de78,_0xbc5822){logger[_0x43f4('0x11')](util[_0x43f4('0x22')](_0x43f4('0x23'),_0x5c578f[_0x43f4('0x24')]));searchContact(_0x423e0e,_0x5f412e,_0x43f4('0x25'),_0x5c578f[_0x43f4('0x24')])['then'](function(_0x30740e){if(_0x30740e){_0x5c578f['endUserId']=_0x30740e['id'];logger[_0x43f4('0x11')]('Contact\x20found\x20mobile_number:',_0x5c578f[_0x43f4('0x26')]);return _0x31de78(_0x5c578f);}searchContact(_0x423e0e,_0x5f412e,_0x43f4('0x27'),_0x5c578f[_0x43f4('0x24')])[_0x43f4('0xc')](function(_0x1ae926){if(_0x1ae926){_0x5c578f[_0x43f4('0x26')]=_0x1ae926['id'];logger[_0x43f4('0x11')](_0x43f4('0x28'),_0x5c578f[_0x43f4('0x26')]);return _0x31de78(_0x5c578f);}createEndUser(_0x5c578f,_0x2d926b,_0x5f412e,_0x423e0e)[_0x43f4('0xc')](function(_0x29556e){logger[_0x43f4('0x11')](_0x43f4('0x29'),_0x29556e[_0x43f4('0x26')]);return _0x31de78(_0x29556e);});});})[_0x43f4('0x1d')](function(_0x30288e){_0xbc5822(_0x30288e);});});};}function createEndUser(_0x2897d5,_0x437294,_0x447b9d,_0xc64b84){return new Promise(function(_0x458f7b,_0xe5c8d6){var _0x15f0d0=moment();var _0x4d0b6d={'method':_0x43f4('0x2a'),'uri':_0xc64b84+_0x43f4('0x2b'),'body':{'contact':{'last_name':_0x2897d5[_0x43f4('0x24')],'work_number':_0x2897d5[_0x43f4('0x24')],'mobile_number':_0x2897d5['contactNumber'],'owner_id':_0x2897d5['userId'],'created_at':_0x15f0d0[_0x43f4('0x22')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x4d0b6d[_0x43f4('0xb')]=_0x447b9d;logger[_0x43f4('0x11')](_0x43f4('0x2c'));return rp(_0x4d0b6d)[_0x43f4('0xc')](function(_0x143dde){_0x2897d5[_0x43f4('0x26')]=_0x143dde[_0x43f4('0x2d')]['id'];_0x458f7b(_0x2897d5);})[_0x43f4('0x1d')](function(_0x52355c){logger['error']('['+[_0x437294['toUpperCase']()]+']',_0x52355c[_0x43f4('0x2e')]);_0xe5c8d6(_0x52355c[_0x43f4('0x2e')]);});});}function getTicket(_0x2f9cef,_0x86cf1f,_0xf4c65c,_0x225796,_0x46ba32){return function(_0x4ed00c){logger['info'](_0x43f4('0x2f'));return new Promise(function(_0x5173d9,_0x23a690){var _0x226675=moment();var _0x5310c1={'method':_0x43f4('0x2a'),'uri':_0xf4c65c+_0x43f4('0x30'),'body':{'title':intUtil[_0x43f4('0x31')](_0x225796['Subjects'],_0x46ba32,'\x20'),'description':intUtil[_0x43f4('0x31')](_0x225796[_0x43f4('0x32')],_0x46ba32,'\x0a'),'owner_id':_0x4ed00c[_0x43f4('0x1b')],'creater_id':_0x4ed00c[_0x43f4('0x10')],'targetable_id':_0x4ed00c['endUserId'],'targetable_type':_0x43f4('0x33'),'created_at':_0x226675[_0x43f4('0x22')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x226675['add'](0x1e,'m')[_0x43f4('0x22')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x5310c1[_0x43f4('0xb')]=_0x86cf1f;return rp(_0x5310c1)[_0x43f4('0xc')](function(_0x15f9cc){_0x4ed00c[_0x43f4('0x34')]=_0x15f9cc['task']['id'];logger[_0x43f4('0x11')]('Task\x20created:',_0x4ed00c[_0x43f4('0x34')]);_0x5173d9(_0x4ed00c);})[_0x43f4('0x1d')](function(_0x1e0afd){logger['error']('['+[_0x2f9cef[_0x43f4('0x15')]()]+']',_0x1e0afd['message']);_0x23a690(_0x1e0afd[_0x43f4('0x2e')]);});});};}function emit(_0x2e2c2f,_0x15e6c4,_0x5ef1ed){var _0x1d52c4={'uri':_0x2e2c2f+_0x43f4('0x35')+_0x5ef1ed};io['to'](util[_0x43f4('0x22')](_0x43f4('0x36'),_0x15e6c4))[_0x43f4('0x37')](_0x43f4('0x38'),_0x1d52c4);}exports['cs']=function(_0x3d8cf1,_0x45d0b0,_0x596b03,_0x200464,_0x9ba4d3,_0xc3b8e6,_0x3609c6,_0x364d3d){var _0x163688={};var _0x382f50={'Authorization':_0x43f4('0x39')+_0xc3b8e6[_0x43f4('0x3a')]};_0xc3b8e6['remoteUri']=intUtil[_0x43f4('0x3b')](_0xc3b8e6[_0x43f4('0x3c')]);_0xc3b8e6[_0x43f4('0x3d')]=intUtil[_0x43f4('0x3b')](_0xc3b8e6['serverUrl']);var _0x35a09b=_0xc3b8e6[_0x43f4('0x3c')];_0x163688[_0x43f4('0xf')]=_0xc3b8e6[_0x43f4('0x3e')];_0x163688[_0x43f4('0x24')]=_0x364d3d[_0x43f4('0x3f')]()===_0x43f4('0x40')?_0x45d0b0[_0x43f4('0x41')]:_0x45d0b0[_0x43f4('0x42')];_0x163688[_0x43f4('0x43')]=_0x364d3d===_0x43f4('0x44')||_0x364d3d===_0x43f4('0x45')?_0x43f4('0x44'):_0x43f4('0x40');if(_0x200464){_0x163688[_0x43f4('0x17')]=_0x200464[_0x43f4('0x19')];}var _0x171a2a=util[_0x43f4('0x22')](_0x43f4('0x46'),_0xc3b8e6['serverUrl'],_0x45d0b0['uniqueid'],md5(_0x45d0b0[_0x43f4('0x47')]));if(_0x9ba4d3&&_0x9ba4d3[_0x43f4('0x48')]){logger[_0x43f4('0x11')](_0x43f4('0x49'),'Recording\x20is\x20enabled!');_0x45d0b0['recordingURL']=_0x171a2a;}else if(_0x3609c6&&_0x3609c6['recordingFormat']&&_0x3609c6[_0x43f4('0x4a')]!=='none'){logger[_0x43f4('0x11')]('[OUTBOUND]',_0x43f4('0x4b'));_0x45d0b0[_0x43f4('0x4c')]=_0x171a2a;}else{_0x45d0b0[_0x43f4('0x4c')]='';}return getAdminId(_0x163688,_0x364d3d,_0x382f50,_0x35a09b)[_0x43f4('0xc')](getUser(_0x364d3d,_0x382f50,_0x35a09b))[_0x43f4('0xc')](getEndUser(_0x364d3d,_0x382f50,_0x35a09b))[_0x43f4('0xc')](getTicket(_0x364d3d,_0x382f50,_0x35a09b,_0x596b03,_0x45d0b0))[_0x43f4('0xc')](function(_0x119bcc){logger[_0x43f4('0x11')](util[_0x43f4('0x22')](_0x43f4('0x4d'),_0x119bcc[_0x43f4('0x34')]));if(_0x364d3d!=='unmanaged'){logger['info']('['+[_0x364d3d[_0x43f4('0x15')]()]+']',_0x43f4('0x4e'));emit(_0x35a09b,_0x200464['name'],_0x119bcc[_0x43f4('0x26')]);}})[_0x43f4('0x1d')](function(_0x4daaaa){logger['error']('['+[_0x364d3d[_0x43f4('0x15')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x4daaaa,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0dc81ac..d910b03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4990=['find','Configurations','data3','queue','routeId','outbound','log','unmanaged','desk','unknown\x20integration','error','[EXEC]','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./zoho','./servicenow','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2'];(function(_0x304ccc,_0x299510){var _0xb86170=function(_0x13936e){while(--_0x13936e){_0x304ccc['push'](_0x304ccc['shift']());}};_0xb86170(++_0x299510);}(_0x4990,0x1c0));var _0x0499=function(_0x4d337e,_0x2f7eed){_0x4d337e=_0x4d337e-0x0;var _0x247963=_0x4990[_0x4d337e];return _0x247963;};'use strict';var _=require(_0x0499('0x0'));var util=require(_0x0499('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0x0499('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require(_0x0499('0x3'));var desk=require('./desk');var vtiger=require('./vtiger');var servicenow=require(_0x0499('0x4'));var dynamics365=require(_0x0499('0x5'));var freshsales=require('./freshsales');var integrations=[_0x0499('0x6'),_0x0499('0x7'),_0x0499('0x8'),_0x0499('0x9'),_0x0499('0xa'),'desk',_0x0499('0xb'),_0x0499('0xc'),_0x0499('0xd'),_0x0499('0xe')];exports[_0x0499('0xf')]=function(_0xc216a,_0x50f0f5,_0x2a6b24,_0x35d213,_0x27363e,_0x521408){if(_0x2a6b24){if(_[_0x0499('0x10')](integrations,_0xc216a[_0x0499('0x11')][_0x0499('0x12')]())){try{var _0x5d42f2=null;var _0x133d50='';var _0x25b609=_0x2a6b24[_0xc216a['data1'][_0x0499('0x12')]()];if(_0x25b609){var _0x384b2e=_0x25b609[_0xc216a[_0x0499('0x13')]];if(_0x384b2e){var _0x2da0a9=_[_0x0499('0x14')](_0x384b2e[_0x0499('0x15')],{'id':parseInt(_0xc216a[_0x0499('0x16')],0xa)});if(_0x2da0a9){if(_0x35d213){if(_0x27363e&&_0x50f0f5[_0x0499('0x17')]){_0x133d50='queue';}else if(_0x50f0f5[_0x0499('0x18')]){_0x133d50=_0x0499('0x19');}else{console[_0x0499('0x1a')]('EVENT\x20UNKNOWN',_0x50f0f5);}}else{_0x133d50=_0x0499('0x1b');}switch(_0xc216a[_0x0499('0x11')][_0x0499('0x12')]()){case _0x0499('0x6'):zendesk[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case'salesforce':salesforce[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case'sugarcrm':sugarcrm[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case _0x0499('0x9'):freshdesk[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case _0x0499('0xa'):zoho[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case _0x0499('0x1c'):desk[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case _0x0499('0xb'):vtiger[_0x133d50](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408);break;case _0x0499('0xd'):freshsales['cs'](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408,_0x133d50);break;case _0x0499('0xe'):servicenow['cs'](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408,_0x133d50);break;case _0x0499('0xc'):dynamics365['cs'](_0xc216a,_0x50f0f5,_0x2da0a9,_0x35d213,_0x27363e,_0x384b2e,_0x521408,_0x133d50);break;default:console['log'](_0x0499('0x1d'));}}else{_0x5d42f2=require('../../../../config/logger')(_0xc216a[_0x0499('0x11')]['toLowerCase']());_0x5d42f2[_0x0499('0x1e')](_0x0499('0x1f'),util['format'](_0x0499('0x20'),_0xc216a[_0x0499('0x11')][_0x0499('0x12')](),_0xc216a[_0x0499('0x16')]));}}else{_0x5d42f2=require(_0x0499('0x21'))(_0xc216a[_0x0499('0x11')][_0x0499('0x12')]());_0x5d42f2[_0x0499('0x1e')](_0x0499('0x1f'),util[_0x0499('0x22')](_0x0499('0x23'),_0xc216a['data1'][_0x0499('0x12')](),_0xc216a[_0x0499('0x13')]));}}else{}}catch(_0x428558){console[_0x0499('0x1e')](_0x428558);}}}};
\ No newline at end of file
+var _0x126e=['freshsales','servicenow','exec','data1','toLowerCase','data2','find','Configurations','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','zendesk','salesforce','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./freshsales','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365'];(function(_0x4b3777,_0x3b817d){var _0x51a187=function(_0x591934){while(--_0x591934){_0x4b3777['push'](_0x4b3777['shift']());}};_0x51a187(++_0x3b817d);}(_0x126e,0x19c));var _0xe126=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x126e[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0xe126('0x0'));var util=require(_0xe126('0x1'));var zendesk=require(_0xe126('0x2'));var salesforce=require(_0xe126('0x3'));var sugarcrm=require(_0xe126('0x4'));var freshdesk=require(_0xe126('0x5'));var zoho=require(_0xe126('0x6'));var desk=require(_0xe126('0x7'));var vtiger=require(_0xe126('0x8'));var servicenow=require(_0xe126('0x9'));var dynamics365=require('./dynamics365');var freshsales=require(_0xe126('0xa'));var integrations=['zendesk','salesforce',_0xe126('0xb'),_0xe126('0xc'),_0xe126('0xd'),_0xe126('0xe'),_0xe126('0xf'),_0xe126('0x10'),_0xe126('0x11'),_0xe126('0x12')];exports[_0xe126('0x13')]=function(_0x2f6790,_0x297039,_0x113552,_0x2de12b,_0x872fc7,_0x1f80a6){if(_0x113552){if(_['includes'](integrations,_0x2f6790[_0xe126('0x14')][_0xe126('0x15')]())){try{var _0x3cc26f=null;var _0x4d54d7='';var _0x31b851=_0x113552[_0x2f6790[_0xe126('0x14')]['toLowerCase']()];if(_0x31b851){var _0x49bcb7=_0x31b851[_0x2f6790[_0xe126('0x16')]];if(_0x49bcb7){var _0x3908c4=_[_0xe126('0x17')](_0x49bcb7[_0xe126('0x18')],{'id':parseInt(_0x2f6790['data3'],0xa)});if(_0x3908c4){if(_0x2de12b){if(_0x872fc7&&_0x297039[_0xe126('0x19')]){_0x4d54d7=_0xe126('0x19');}else if(_0x297039[_0xe126('0x1a')]){_0x4d54d7=_0xe126('0x1b');}else{console[_0xe126('0x1c')](_0xe126('0x1d'),_0x297039);}}else{_0x4d54d7=_0xe126('0x1e');}switch(_0x2f6790[_0xe126('0x14')][_0xe126('0x15')]()){case _0xe126('0x1f'):zendesk[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case _0xe126('0x20'):salesforce[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case _0xe126('0xb'):sugarcrm[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case'freshdesk':freshdesk[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case _0xe126('0xd'):zoho[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case _0xe126('0xe'):desk[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case _0xe126('0xf'):vtiger[_0x4d54d7](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6);break;case _0xe126('0x11'):freshsales['cs'](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6,_0x4d54d7);break;case'servicenow':servicenow['cs'](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6,_0x4d54d7);break;case _0xe126('0x10'):dynamics365['cs'](_0x2f6790,_0x297039,_0x3908c4,_0x2de12b,_0x872fc7,_0x49bcb7,_0x1f80a6,_0x4d54d7);break;default:console[_0xe126('0x1c')](_0xe126('0x21'));}}else{_0x3cc26f=require(_0xe126('0x22'))(_0x2f6790[_0xe126('0x14')]['toLowerCase']());_0x3cc26f[_0xe126('0x23')](_0xe126('0x24'),util[_0xe126('0x25')](_0xe126('0x26'),_0x2f6790[_0xe126('0x14')]['toLowerCase'](),_0x2f6790['data3']));}}else{_0x3cc26f=require('../../../../config/logger')(_0x2f6790[_0xe126('0x14')][_0xe126('0x15')]());_0x3cc26f['error'](_0xe126('0x24'),util[_0xe126('0x25')]('%s\x20account\x20#%s\x20not\x20found',_0x2f6790[_0xe126('0x14')]['toLowerCase'](),_0x2f6790[_0xe126('0x16')]));}}else{}}catch(_0x191f7){console['error'](_0x191f7);}}}};
\ No newline at end of file
index a47ce2f..2b9b3b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cc4=['contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','Lead','account_contact_lead','additionalSearchAccount','Account','attributes','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','moduleCreate','<unknown>','LastName','format','Company','Caller\x20-\x20%s','upperFirst','forEach','includes','picklist','content','toString','type','variable','variableName','idField','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','login','username','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','Fields','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]','email','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','trigger:salesforce:display','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','isNil',']\x20Ticket\x20%s\x20created.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','salesforce','localhost','socket.io-emitter','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','contact','endUserType','lead','WhoId','WhatId','Case','ContactId','account','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','validateEmail','User','execute','then','length','find','Email','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','moduleSearch'];(function(_0x15372d,_0x15139d){var _0x13ed79=function(_0x22bc41){while(--_0x22bc41){_0x15372d['push'](_0x15372d['shift']());}};_0x13ed79(++_0x15139d);}(_0x4cc4,0xcc));var _0x44cc=function(_0x46b42c,_0x17b300){_0x46b42c=_0x46b42c-0x0;var _0x20badf=_0x4cc4[_0x46b42c];return _0x20badf;};'use strict';var _=require(_0x44cc('0x0'));var rp=require(_0x44cc('0x1'));var moment=require(_0x44cc('0x2'));var BPromise=require(_0x44cc('0x3'));var md5=require(_0x44cc('0x4'));var jsforce=require(_0x44cc('0x5'));var util=require(_0x44cc('0x6'));var Redis=require(_0x44cc('0x7'));var intUtil=require(_0x44cc('0x8'));var config=require(_0x44cc('0x9'));var logger=require('../../../../config/logger')(_0x44cc('0xa'));config['redis']=_['defaults'](config['redis'],{'host':_0x44cc('0xb'),'port':0x18eb});var io=require(_0x44cc('0xc'))(new Redis(config['redis']));function emit(_0x585354,_0x36f170,_0x2aba89){io['to'](_0x585354)['emit'](_0x36f170,_0x2aba89);}function getTicket(_0x1a79d4,_0x2ddb05,_0x3e6182,_0x4efbd2,_0x5c8eac,_0x2b9653,_0x3dde4c,_0x2eb6df){var _0x103966=Object['assign']({},{'OwnerId':_0x2ddb05['id'],'Subject':intUtil[_0x44cc('0xd')](_0x4efbd2[_0x44cc('0xe')],_0x5c8eac,'\x20'),'Description':intUtil['getString'](_0x4efbd2[_0x44cc('0xf')],_0x5c8eac,'\x0a')},getCustomFields(_0x2b9653,_0x5c8eac));if(_0x3e6182){if(_0x4efbd2[_0x44cc('0x10')]===_0x44cc('0x11')){_0x103966[_0x44cc('0x12')]=moment['utc']();_0x103966[_0x44cc('0x13')]=![];_0x103966['IsRecurrence']=![];if(_0x3e6182['endUserType']===_0x44cc('0x14')||_0x3e6182[_0x44cc('0x15')]===_0x44cc('0x16')){_0x103966[_0x44cc('0x17')]=_0x3e6182['id'];}else if(_0x3e6182[_0x44cc('0x15')]==='account'){_0x103966[_0x44cc('0x18')]=_0x3e6182['id'];}}else if(_0x4efbd2[_0x44cc('0x10')]===_0x44cc('0x19')){if(_0x3e6182[_0x44cc('0x15')]==='contact'){_0x103966[_0x44cc('0x1a')]=_0x3e6182['id'];}else if(_0x3e6182[_0x44cc('0x15')]===_0x44cc('0x1b')){_0x103966['AccountId']=_0x3e6182['id'];}else if(_0x3e6182[_0x44cc('0x15')]===_0x44cc('0x16')&&_0x4efbd2[_0x44cc('0x1c')]){_0x103966[_0x4efbd2['leadId']]=_0x3e6182['id'];}else{logger[_0x44cc('0x1d')](_0x44cc('0x1e'));}}}return _0x3dde4c[_0x44cc('0x1f')](_0x4efbd2['ticketType'])[_0x44cc('0x20')](_0x103966);}function getUser(_0x494530,_0x5f1da9,_0x4fb0bd){if(!_['isNil'](_0x5f1da9)&&intUtil[_0x44cc('0x21')](_0x5f1da9)){var _0x1e2372={'Email':_0x5f1da9};var _0x289248={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4fb0bd['sobject'](_0x44cc('0x22'))['find'](_0x1e2372,_0x289248)[_0x44cc('0x23')]()[_0x44cc('0x24')](function(_0x4b641e){if(_0x4b641e[_0x44cc('0x25')]){var _0x40c06e=_[_0x44cc('0x26')](_0x4b641e,function(_0x1ca159){return _0x1ca159[_0x44cc('0x27')]===_0x5f1da9;});if(_0x40c06e){logger[_0x44cc('0x1d')](_0x44cc('0x28'),_0x5f1da9);return BPromise['resolve']({'id':_0x40c06e['Id'],'name':_0x40c06e[_0x44cc('0x29')]});}}else{logger['info'](_0x44cc('0x2a'),_0x5f1da9);return _0x4fb0bd[_0x44cc('0x2b')]()[_0x44cc('0x24')](function(_0x34a4c9){return BPromise[_0x44cc('0x2c')]({'id':_0x34a4c9[_0x44cc('0x2d')],'name':_0x34a4c9[_0x44cc('0x2e')]});});}});}else{logger[_0x44cc('0x1d')](_0x44cc('0x2a'),_0x5f1da9);return _0x4fb0bd[_0x44cc('0x2b')]()['then'](function(_0x505d29){return BPromise[_0x44cc('0x2c')]({'id':_0x505d29[_0x44cc('0x2d')],'name':_0x505d29[_0x44cc('0x2e')]});});}}function getEndUser(_0x4d6539,_0x25efad,_0x1eb8fc,_0x423335,_0x55c78d){var _0x569b3e={'$or':{'Phone':_0x423335}};var _0x3675a8={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0x44cc('0x24')](function(){logger['info']('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x423335,_0x25efad[_0x44cc('0x2f')]);switch(_0x25efad[_0x44cc('0x2f')]){case _0x44cc('0x30'):var _0x3368fd=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x32')]){var _0x29a974={};_0x29a974[_0x25efad[_0x44cc('0x32')]]=_0x423335;_[_0x44cc('0x33')](_0x3368fd['$or'],_0x29a974);}return _0x55c78d['sobject'](_0x44cc('0x34'))[_0x44cc('0x26')](_0x3368fd,_0x3675a8)[_0x44cc('0x23')]()['then'](function(_0x24458d){if(_0x24458d&&_0x24458d[_0x44cc('0x25')]){return _0x24458d;}else{var _0x1db8d8=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x35')]){var _0x5626f2={};_0x5626f2[_0x25efad[_0x44cc('0x35')]]=_0x423335;_[_0x44cc('0x33')](_0x1db8d8[_0x44cc('0x36')],_0x5626f2);}return _0x55c78d['sobject'](_0x44cc('0x37'))['find'](_0x1db8d8,_0x3675a8);}});case _0x44cc('0x38'):var _0x5bdeb4=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x39')]){var _0x29a974={};_0x29a974[_0x25efad[_0x44cc('0x39')]]=_0x423335;_[_0x44cc('0x33')](_0x5bdeb4[_0x44cc('0x36')],_0x29a974);}return _0x55c78d[_0x44cc('0x1f')](_0x44cc('0x3a'))['find'](_0x5bdeb4,_0x3675a8)['execute']()[_0x44cc('0x24')](function(_0x536c8e){if(_0x536c8e&&_0x536c8e[_0x44cc('0x25')]){return _0x536c8e;}else{var _0x59a408=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x32')]){var _0x546c5e={};_0x546c5e[_0x25efad[_0x44cc('0x32')]]=_0x423335;_[_0x44cc('0x33')](_0x59a408[_0x44cc('0x36')],_0x546c5e);}return _0x55c78d[_0x44cc('0x1f')](_0x44cc('0x34'))[_0x44cc('0x26')](_0x59a408,_0x3675a8)[_0x44cc('0x24')](function(_0xed0e57){if(_0xed0e57&&_0xed0e57[_0x44cc('0x25')]){return _0xed0e57;}else{var _0xce8f54=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x35')]){var _0x30effb={};_0x30effb[_0x25efad['additionalSearchLead']]=_0x423335;_['merge'](_0xce8f54[_0x44cc('0x36')],_0x30effb);}return _0x55c78d[_0x44cc('0x1f')](_0x44cc('0x37'))['find'](_0xce8f54,_0x3675a8);}});}});case _0x44cc('0x14'):var _0x3368fd=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x32')]){var _0x29a974={};_0x29a974[_0x25efad['additionalSearchContact']]=_0x423335;_[_0x44cc('0x33')](_0x3368fd[_0x44cc('0x36')],_0x29a974);}return _0x55c78d[_0x44cc('0x1f')](_0x44cc('0x34'))[_0x44cc('0x26')](_0x3368fd,_0x3675a8)[_0x44cc('0x23')]();case'lead':var _0x5a5618=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x35')]){var _0x29a974={};_0x29a974[_0x25efad[_0x44cc('0x35')]]=_0x423335;_[_0x44cc('0x33')](_0x5a5618[_0x44cc('0x36')],_0x29a974);}return _0x55c78d['sobject'](_0x44cc('0x37'))['find'](_0x5a5618,_0x3675a8);case _0x44cc('0x1b'):var _0x5bdeb4=_[_0x44cc('0x31')](_0x569b3e);if(_0x25efad[_0x44cc('0x39')]){var _0x29a974={};_0x29a974[_0x25efad[_0x44cc('0x39')]]=_0x423335;_[_0x44cc('0x33')](_0x5bdeb4[_0x44cc('0x36')],_0x29a974);}return _0x55c78d[_0x44cc('0x1f')](_0x44cc('0x3a'))[_0x44cc('0x26')](_0x5bdeb4,_0x3675a8);default:return null;}})[_0x44cc('0x24')](function(_0x4bae36){if(_0x4bae36&&_0x4bae36[_0x44cc('0x25')]){var _0x4c2814=_['first'](_0x4bae36);if(_0x4c2814){return BPromise['resolve']({'id':_0x4c2814['Id'],'name':_0x4c2814[_0x44cc('0x29')],'phone':_0x4c2814['Phone'],'endUserType':_0x4c2814[_0x44cc('0x3b')]['type'][_0x44cc('0x3c')]()});}}})[_0x44cc('0x24')](function(_0x406436){if(_0x406436){logger[_0x44cc('0x1d')](_0x44cc('0x3d'),_0x406436[_0x44cc('0x15')],_0x423335);return BPromise[_0x44cc('0x2c')](_0x406436);}else{logger['info'](_0x44cc('0x3e'),_0x423335);var _0x2f0917={'Phone':_0x423335};if(_0x25efad['moduleCreate']){if(_0x25efad['moduleCreate']===_0x44cc('0x14')){logger[_0x44cc('0x1d')](_0x44cc('0x3f'),_0x423335,_0x25efad[_0x44cc('0x40')]);_0x2f0917['LastName']=_0x1eb8fc!==_0x44cc('0x41')?_0x1eb8fc:util['format']('Caller\x20-\x20%s',_0x423335);}else if(_0x25efad[_0x44cc('0x40')]===_0x44cc('0x16')){logger[_0x44cc('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x423335,_0x25efad['moduleCreate']);_0x2f0917[_0x44cc('0x42')]=_0x1eb8fc!==_0x44cc('0x41')?_0x1eb8fc:util[_0x44cc('0x43')]('Caller\x20-\x20%s',_0x423335);_0x2f0917[_0x44cc('0x44')]='No\x20Company';}else if(_0x25efad[_0x44cc('0x40')]===_0x44cc('0x1b')){logger['info'](_0x44cc('0x3f'),_0x423335,_0x25efad[_0x44cc('0x40')]);_0x2f0917['Name']=_0x1eb8fc!==_0x44cc('0x41')?_0x1eb8fc:util[_0x44cc('0x43')](_0x44cc('0x45'),_0x423335);}else{return null;}}return _0x55c78d['sobject'](_[_0x44cc('0x46')](_0x25efad[_0x44cc('0x40')]))[_0x44cc('0x20')](_0x2f0917)[_0x44cc('0x24')](function(_0x7310ad){return BPromise['resolve']({'id':_0x7310ad['id'],'endUserType':_0x25efad[_0x44cc('0x40')]});});}});}function getCustomFields(_0x4387b1,_0x36945f){var _0x458173={};if(_0x4387b1[_0x44cc('0x25')]>0x0){_[_0x44cc('0x47')](_0x4387b1,function(_0x36cc53){if(_[_0x44cc('0x48')](['string',_0x44cc('0x49')],_0x36cc53['type'])&&_0x36cc53['idField']){_0x458173[_0x36cc53['idField']]=_0x36cc53[_0x44cc('0x4a')][_0x44cc('0x4b')]();}else if(_0x36cc53[_0x44cc('0x4c')]===_0x44cc('0x4d')&&_0x36cc53[_0x44cc('0x4e')]&&_0x36cc53[_0x44cc('0x4f')]){_0x36945f[_0x36cc53[_0x44cc('0x4e')]]&&(_0x458173[_0x36cc53[_0x44cc('0x4f')]]=_0x36945f[_0x36cc53['variableName']]['toString']());}else if(_0x36cc53['type']==='customVariable'&&_0x36cc53[_0x44cc('0x50')]&&_0x36cc53['Variable'][_0x44cc('0x51')]&&_0x36cc53['idField']){_0x36945f[_0x36cc53['Variable'][_0x44cc('0x51')]['toLowerCase']()]&&(_0x458173[_0x36cc53[_0x44cc('0x4f')]]=_0x36945f[_0x36cc53[_0x44cc('0x50')][_0x44cc('0x51')][_0x44cc('0x3c')]()][_0x44cc('0x4b')]());}});}return _0x458173;}function getConnection(_0x71b7bc){var _0x226be0=_0x71b7bc[_0x44cc('0x52')][_0x44cc('0x53')](_0x71b7bc[_0x44cc('0x54')]);var _0x24abe6=new jsforce[(_0x44cc('0x55'))]({'oauth2':{'loginUrl':_0x71b7bc[_0x44cc('0x56')]||_0x44cc('0x57'),'clientId':_0x71b7bc[_0x44cc('0x58')],'clientSecret':_0x71b7bc['clientSecret']}});return _0x24abe6[_0x44cc('0x59')](_0x71b7bc[_0x44cc('0x5a')],_0x226be0)[_0x44cc('0x24')](function(){logger[_0x44cc('0x1d')]('Connection\x20established.');return _0x24abe6;});}exports[_0x44cc('0x5b')]=function(_0x153b7f,_0x437770,_0x5d57bd,_0x212880,_0x26c179,_0x2ab342){var _0x22c262,_0x2527e8,_0x580e2e,_0x217a85;_0x2ab342['serverUrl']=intUtil['stripTrailingSlash'](_0x2ab342[_0x44cc('0x5c')]);_0x2ab342[_0x44cc('0x56')]=intUtil[_0x44cc('0x5d')](_0x2ab342[_0x44cc('0x56')]);if(_0x26c179&&_0x26c179[_0x44cc('0x5e')]){logger[_0x44cc('0x1d')]('[QUEUE]',_0x44cc('0x5f'));_0x437770[_0x44cc('0x60')]=util[_0x44cc('0x43')](_0x44cc('0x61'),_0x2ab342[_0x44cc('0x5c')],_0x437770['uniqueid'],md5(_0x437770[_0x44cc('0x62')]));}else{_0x437770[_0x44cc('0x60')]='';}return getConnection(_0x2ab342)[_0x44cc('0x24')](function(_0x486811){_0x217a85=_0x486811;return getUser(_0x2ab342,_0x212880['email'],_0x217a85);})['then'](function(_0x4155cd){_0x22c262=_0x4155cd;return getEndUser(_0x2ab342,_0x5d57bd,_0x437770[_0x44cc('0x63')],_0x437770[_0x44cc('0x64')],_0x217a85);})[_0x44cc('0x24')](function(_0xc718d2){_0x2527e8=_0xc718d2;return getTicket(_0x2ab342,_0x22c262,_0x2527e8,_0x5d57bd,_0x437770,_0x5d57bd[_0x44cc('0x65')],_0x217a85,_0x44cc('0x5b'));})[_0x44cc('0x24')](function(_0x14e088){_0x580e2e=_0x14e088;logger[_0x44cc('0x1d')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x580e2e['id']);logger[_0x44cc('0x1d')](_0x44cc('0x66'),_0x580e2e['id'],_0x212880['name'],_0x2ab342[_0x44cc('0x4c')]);switch(_0x2ab342[_0x44cc('0x4c')]){case'integrationTab':emit(util[_0x44cc('0x43')](_0x44cc('0x67'),_0x212880[_0x44cc('0x51')]),'trigger:salesforce:display',{'recordId':_0x580e2e['id']});break;case _0x44cc('0x68'):emit(util[_0x44cc('0x43')](_0x44cc('0x67'),_0x212880[_0x44cc('0x51')]),_0x44cc('0x69'),{'uri':util[_0x44cc('0x43')](_0x44cc('0x6a'),_0x217a85[_0x44cc('0x6b')],_0x580e2e['id'])});break;default:logger[_0x44cc('0x6c')](_0x44cc('0x6d'));}})[_0x44cc('0x6e')](function(_0x288bc6){logger[_0x44cc('0x6c')](_0x44cc('0x6f'),_0x288bc6);});};exports[_0x44cc('0x70')]=function(_0x9e6c43,_0x322ae4,_0x5c9232,_0x77f5f0,_0x329fb3,_0x2f58ed,_0xa30ec2){var _0x280c34,_0x1b0fe5,_0x1f35ed,_0x38b7da;_0x2f58ed[_0x44cc('0x5c')]=intUtil[_0x44cc('0x5d')](_0x2f58ed['serverUrl']);_0x2f58ed[_0x44cc('0x56')]=intUtil[_0x44cc('0x5d')](_0x2f58ed[_0x44cc('0x56')]);if(_0xa30ec2&&_0xa30ec2[_0x44cc('0x71')]&&_0xa30ec2[_0x44cc('0x71')]!==_0x44cc('0x72')){logger[_0x44cc('0x1d')](_0x44cc('0x73'),_0x44cc('0x5f'));_0x322ae4['recordingURL']=util[_0x44cc('0x43')](_0x44cc('0x61'),_0x2f58ed[_0x44cc('0x5c')],_0x322ae4[_0x44cc('0x62')],md5(_0x322ae4[_0x44cc('0x62')]));}return getConnection(_0x2f58ed)[_0x44cc('0x24')](function(_0x401ae1){_0x38b7da=_0x401ae1;return getUser(_0x2f58ed,_0x77f5f0[_0x44cc('0x74')],_0x38b7da);})[_0x44cc('0x24')](function(_0x9dd168){_0x280c34=_0x9dd168;return getEndUser(_0x2f58ed,_0x5c9232,_0x322ae4['destcalleridname'],_0x322ae4[_0x44cc('0x75')],_0x38b7da);})[_0x44cc('0x24')](function(_0x38316c){_0x1b0fe5=_0x38316c;return getTicket(_0x2f58ed,_0x280c34,_0x1b0fe5,_0x5c9232,_0x322ae4,_0x5c9232[_0x44cc('0x65')],_0x38b7da,_0x44cc('0x70'));})[_0x44cc('0x24')](function(_0x3e56da){_0x1f35ed=_0x3e56da;logger[_0x44cc('0x1d')](_0x44cc('0x76'),_0x1f35ed['id']);logger[_0x44cc('0x1d')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x1f35ed['id'],_0x77f5f0[_0x44cc('0x51')],_0x2f58ed[_0x44cc('0x4c')]);switch(_0x2f58ed[_0x44cc('0x4c')]){case'integrationTab':emit(util[_0x44cc('0x43')](_0x44cc('0x67'),_0x77f5f0[_0x44cc('0x51')]),_0x44cc('0x77'),{'recordId':_0x1f35ed['id']});break;case _0x44cc('0x68'):emit(util[_0x44cc('0x43')](_0x44cc('0x67'),_0x77f5f0[_0x44cc('0x51')]),_0x44cc('0x69'),{'uri':util['format']('%s/%s/e',_0x38b7da[_0x44cc('0x6b')],_0x1f35ed['id'])});break;default:logger[_0x44cc('0x6c')](_0x44cc('0x73'),_0x44cc('0x78'));}})[_0x44cc('0x6e')](function(_0x27d122){logger[_0x44cc('0x6c')](_0x44cc('0x73'),_0x27d122);});};exports[_0x44cc('0x79')]=function(_0x1f348c,_0x3da14a,_0x42626b,_0x4a0076,_0xd20baa,_0x1b7a93){var _0x98270c,_0xfee06f,_0x276baf,_0x7ff5f0;_0x1b7a93[_0x44cc('0x5c')]=intUtil[_0x44cc('0x5d')](_0x1b7a93[_0x44cc('0x5c')]);_0x1b7a93[_0x44cc('0x56')]=intUtil[_0x44cc('0x5d')](_0x1b7a93[_0x44cc('0x56')]);if(_0xd20baa&&_0xd20baa['monitor_format']){logger['info']('['+_0x3da14a[_0x44cc('0x7a')][_0x44cc('0x7b')]()+']',_0x44cc('0x5f'));_0x3da14a[_0x44cc('0x60')]=util['format'](_0x44cc('0x61'),_0x1b7a93[_0x44cc('0x5c')],_0x3da14a[_0x44cc('0x62')],md5(_0x3da14a[_0x44cc('0x62')]));}else{_0x3da14a[_0x44cc('0x60')]='';}return getConnection(_0x1b7a93)[_0x44cc('0x24')](function(_0x36bede){_0x7ff5f0=_0x36bede;if(!_[_0x44cc('0x7c')](_0x4a0076)){return getUser(_0x1b7a93,_0x4a0076[_0x44cc('0x51')],_0x7ff5f0);}else{return getUser(_0x1b7a93,null,_0x7ff5f0);}})[_0x44cc('0x24')](function(_0x59834a){_0x98270c=_0x59834a;return getEndUser(_0x1b7a93,_0x42626b,_0x3da14a[_0x44cc('0x63')],_0x3da14a[_0x44cc('0x64')],_0x7ff5f0);})[_0x44cc('0x24')](function(_0x1a20d1){_0xfee06f=_0x1a20d1;return getTicket(_0x1b7a93,_0x98270c,_0xfee06f,_0x42626b,_0x3da14a,_0x42626b[_0x44cc('0x65')],_0x7ff5f0);})[_0x44cc('0x24')](function(_0x5601a3){_0x276baf=_0x5601a3;logger[_0x44cc('0x1d')]('['+_0x3da14a[_0x44cc('0x7a')][_0x44cc('0x7b')]()+_0x44cc('0x7d'),_0x276baf['id']);logger[_0x44cc('0x1d')]('['+_0x3da14a[_0x44cc('0x7a')][_0x44cc('0x7b')]()+']\x20Integration\x20account\x20type\x20%s.',_0x1b7a93[_0x44cc('0x4c')]);})[_0x44cc('0x6e')](function(_0x5e9437){logger[_0x44cc('0x6c')]('['+_0x3da14a[_0x44cc('0x7a')][_0x44cc('0x7b')]()+']',_0x5e9437);});};
\ No newline at end of file
+var _0xc792=['md5','jsforce','util','ioredis','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','contact','lead','account','WhatId','AccountId','leadId','info','create','isNil','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','identity','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','moduleSearch','cloneDeep','additionalSearchContact','merge','$or','additionalSearchLead','sobject','Lead','account_contact_lead','additionalSearchAccount','Account','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Caller\x20-\x20%s','moduleCreate','<unknown>','Company','upperFirst','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','Connection\x20established.','queue','serverUrl','stripTrailingSlash','[QUEUE]','uniqueid','recordingURL','calleridname','calleridnum','Fields','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','%s/%s/e','instanceUrl','error','catch','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','trigger:browser:url','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','moment','bluebird'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0xc792,0xf6));var _0x2c79=function(_0x3ebdf8,_0x3d80cd){_0x3ebdf8=_0x3ebdf8-0x0;var _0xe367c8=_0xc792[_0x3ebdf8];return _0xe367c8;};'use strict';var _=require(_0x2c79('0x0'));var rp=require(_0x2c79('0x1'));var moment=require(_0x2c79('0x2'));var BPromise=require(_0x2c79('0x3'));var md5=require(_0x2c79('0x4'));var jsforce=require(_0x2c79('0x5'));var util=require(_0x2c79('0x6'));var Redis=require(_0x2c79('0x7'));var intUtil=require('./util');var config=require(_0x2c79('0x8'));var logger=require(_0x2c79('0x9'))(_0x2c79('0xa'));config[_0x2c79('0xb')]=_[_0x2c79('0xc')](config[_0x2c79('0xb')],{'host':_0x2c79('0xd'),'port':0x18eb});var io=require(_0x2c79('0xe'))(new Redis(config[_0x2c79('0xb')]));function emit(_0x34e912,_0x237015,_0x11344e){io['to'](_0x34e912)[_0x2c79('0xf')](_0x237015,_0x11344e);}function getTicket(_0x46fe58,_0xb05146,_0x102ab7,_0x9f2c7,_0x58e797,_0x47bfbc,_0xc91e22,_0x5805ad){var _0x2169f1=Object[_0x2c79('0x10')]({},{'OwnerId':_0xb05146['id'],'Subject':intUtil[_0x2c79('0x11')](_0x9f2c7['Subjects'],_0x58e797,'\x20'),'Description':intUtil[_0x2c79('0x11')](_0x9f2c7[_0x2c79('0x12')],_0x58e797,'\x0a')},getCustomFields(_0x47bfbc,_0x58e797));if(_0x102ab7){if(_0x9f2c7[_0x2c79('0x13')]===_0x2c79('0x14')){_0x2169f1[_0x2c79('0x15')]=moment[_0x2c79('0x16')]();_0x2169f1['IsReminderSet']=![];_0x2169f1[_0x2c79('0x17')]=![];if(_0x102ab7[_0x2c79('0x18')]===_0x2c79('0x19')||_0x102ab7['endUserType']===_0x2c79('0x1a')){_0x2169f1['WhoId']=_0x102ab7['id'];}else if(_0x102ab7[_0x2c79('0x18')]===_0x2c79('0x1b')){_0x2169f1[_0x2c79('0x1c')]=_0x102ab7['id'];}}else if(_0x9f2c7['ticketType']==='Case'){if(_0x102ab7['endUserType']===_0x2c79('0x19')){_0x2169f1['ContactId']=_0x102ab7['id'];}else if(_0x102ab7[_0x2c79('0x18')]===_0x2c79('0x1b')){_0x2169f1[_0x2c79('0x1d')]=_0x102ab7['id'];}else if(_0x102ab7[_0x2c79('0x18')]===_0x2c79('0x1a')&&_0x9f2c7[_0x2c79('0x1e')]){_0x2169f1[_0x9f2c7[_0x2c79('0x1e')]]=_0x102ab7['id'];}else{logger[_0x2c79('0x1f')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0xc91e22['sobject'](_0x9f2c7[_0x2c79('0x13')])[_0x2c79('0x20')](_0x2169f1);}function getUser(_0x1d4db7,_0x251b24,_0x3abce4){if(!_[_0x2c79('0x21')](_0x251b24)&&intUtil[_0x2c79('0x22')](_0x251b24)){var _0x250f70={'Email':_0x251b24};var _0xe87a90={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3abce4['sobject'](_0x2c79('0x23'))[_0x2c79('0x24')](_0x250f70,_0xe87a90)[_0x2c79('0x25')]()[_0x2c79('0x26')](function(_0x3e43d0){if(_0x3e43d0[_0x2c79('0x27')]){var _0x40ab74=_[_0x2c79('0x24')](_0x3e43d0,function(_0x5bd3f7){return _0x5bd3f7[_0x2c79('0x28')]===_0x251b24;});if(_0x40ab74){logger[_0x2c79('0x1f')](_0x2c79('0x29'),_0x251b24);return BPromise[_0x2c79('0x2a')]({'id':_0x40ab74['Id'],'name':_0x40ab74['Name']});}}else{logger[_0x2c79('0x1f')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x251b24);return _0x3abce4[_0x2c79('0x2b')]()[_0x2c79('0x26')](function(_0x4a765c){return BPromise[_0x2c79('0x2a')]({'id':_0x4a765c['user_id'],'name':_0x4a765c['display_name']});});}});}else{logger['info'](_0x2c79('0x2c'),_0x251b24);return _0x3abce4[_0x2c79('0x2b')]()[_0x2c79('0x26')](function(_0x59423a){return BPromise[_0x2c79('0x2a')]({'id':_0x59423a[_0x2c79('0x2d')],'name':_0x59423a[_0x2c79('0x2e')]});});}}function getEndUser(_0x378d8e,_0x340d97,_0x535fb3,_0xde1e8c,_0x1c35ad){var _0x54a05f={'$or':{'Phone':_0xde1e8c}};var _0x4cf90f={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x2c79('0x2a')]()[_0x2c79('0x26')](function(){logger[_0x2c79('0x1f')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0xde1e8c,_0x340d97[_0x2c79('0x2f')]);switch(_0x340d97[_0x2c79('0x2f')]){case'contact_lead':var _0x45b987=_[_0x2c79('0x30')](_0x54a05f);if(_0x340d97[_0x2c79('0x31')]){var _0x4321da={};_0x4321da[_0x340d97[_0x2c79('0x31')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x45b987[_0x2c79('0x33')],_0x4321da);}return _0x1c35ad['sobject']('Contact')['find'](_0x45b987,_0x4cf90f)['execute']()[_0x2c79('0x26')](function(_0x3db257){if(_0x3db257&&_0x3db257[_0x2c79('0x27')]){return _0x3db257;}else{var _0x357368=_[_0x2c79('0x30')](_0x54a05f);if(_0x340d97['additionalSearchLead']){var _0x1a4ff4={};_0x1a4ff4[_0x340d97[_0x2c79('0x34')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x357368['$or'],_0x1a4ff4);}return _0x1c35ad[_0x2c79('0x35')](_0x2c79('0x36'))['find'](_0x357368,_0x4cf90f);}});case _0x2c79('0x37'):var _0x28a0e5=_['cloneDeep'](_0x54a05f);if(_0x340d97[_0x2c79('0x38')]){var _0x4321da={};_0x4321da[_0x340d97[_0x2c79('0x38')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x28a0e5['$or'],_0x4321da);}return _0x1c35ad[_0x2c79('0x35')](_0x2c79('0x39'))[_0x2c79('0x24')](_0x28a0e5,_0x4cf90f)[_0x2c79('0x25')]()[_0x2c79('0x26')](function(_0x59bc1e){if(_0x59bc1e&&_0x59bc1e[_0x2c79('0x27')]){return _0x59bc1e;}else{var _0x1e4d6c=_[_0x2c79('0x30')](_0x54a05f);if(_0x340d97[_0x2c79('0x31')]){var _0x30ba63={};_0x30ba63[_0x340d97[_0x2c79('0x31')]]=_0xde1e8c;_['merge'](_0x1e4d6c['$or'],_0x30ba63);}return _0x1c35ad['sobject']('Contact')['find'](_0x1e4d6c,_0x4cf90f)[_0x2c79('0x26')](function(_0x26c6d0){if(_0x26c6d0&&_0x26c6d0['length']){return _0x26c6d0;}else{var _0x3ba61d=_[_0x2c79('0x30')](_0x54a05f);if(_0x340d97[_0x2c79('0x34')]){var _0x569885={};_0x569885[_0x340d97[_0x2c79('0x34')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x3ba61d[_0x2c79('0x33')],_0x569885);}return _0x1c35ad[_0x2c79('0x35')](_0x2c79('0x36'))[_0x2c79('0x24')](_0x3ba61d,_0x4cf90f);}});}});case _0x2c79('0x19'):var _0x45b987=_['cloneDeep'](_0x54a05f);if(_0x340d97['additionalSearchContact']){var _0x4321da={};_0x4321da[_0x340d97[_0x2c79('0x31')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x45b987['$or'],_0x4321da);}return _0x1c35ad[_0x2c79('0x35')]('Contact')['find'](_0x45b987,_0x4cf90f)[_0x2c79('0x25')]();case _0x2c79('0x1a'):var _0x22497a=_[_0x2c79('0x30')](_0x54a05f);if(_0x340d97['additionalSearchLead']){var _0x4321da={};_0x4321da[_0x340d97[_0x2c79('0x34')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x22497a['$or'],_0x4321da);}return _0x1c35ad[_0x2c79('0x35')]('Lead')[_0x2c79('0x24')](_0x22497a,_0x4cf90f);case _0x2c79('0x1b'):var _0x28a0e5=_[_0x2c79('0x30')](_0x54a05f);if(_0x340d97['additionalSearchAccount']){var _0x4321da={};_0x4321da[_0x340d97[_0x2c79('0x38')]]=_0xde1e8c;_[_0x2c79('0x32')](_0x28a0e5[_0x2c79('0x33')],_0x4321da);}return _0x1c35ad[_0x2c79('0x35')](_0x2c79('0x39'))[_0x2c79('0x24')](_0x28a0e5,_0x4cf90f);default:return null;}})[_0x2c79('0x26')](function(_0xb9f548){if(_0xb9f548&&_0xb9f548[_0x2c79('0x27')]){var _0x2471a1=_['first'](_0xb9f548);if(_0x2471a1){return BPromise[_0x2c79('0x2a')]({'id':_0x2471a1['Id'],'name':_0x2471a1[_0x2c79('0x3a')],'phone':_0x2471a1[_0x2c79('0x3b')],'endUserType':_0x2471a1[_0x2c79('0x3c')][_0x2c79('0x3d')][_0x2c79('0x3e')]()});}}})[_0x2c79('0x26')](function(_0x3d77b8){if(_0x3d77b8){logger['info'](_0x2c79('0x3f'),_0x3d77b8[_0x2c79('0x18')],_0xde1e8c);return BPromise[_0x2c79('0x2a')](_0x3d77b8);}else{logger[_0x2c79('0x1f')](_0x2c79('0x40'),_0xde1e8c);var _0x1216c2={'Phone':_0xde1e8c};if(_0x340d97['moduleCreate']){if(_0x340d97['moduleCreate']===_0x2c79('0x19')){logger[_0x2c79('0x1f')](_0x2c79('0x41'),_0xde1e8c,_0x340d97['moduleCreate']);_0x1216c2[_0x2c79('0x42')]=_0x535fb3!=='<unknown>'?_0x535fb3:util[_0x2c79('0x43')](_0x2c79('0x44'),_0xde1e8c);}else if(_0x340d97['moduleCreate']===_0x2c79('0x1a')){logger[_0x2c79('0x1f')](_0x2c79('0x41'),_0xde1e8c,_0x340d97[_0x2c79('0x45')]);_0x1216c2['LastName']=_0x535fb3!==_0x2c79('0x46')?_0x535fb3:util[_0x2c79('0x43')]('Caller\x20-\x20%s',_0xde1e8c);_0x1216c2[_0x2c79('0x47')]='No\x20Company';}else if(_0x340d97['moduleCreate']==='account'){logger['info'](_0x2c79('0x41'),_0xde1e8c,_0x340d97['moduleCreate']);_0x1216c2['Name']=_0x535fb3!==_0x2c79('0x46')?_0x535fb3:util[_0x2c79('0x43')](_0x2c79('0x44'),_0xde1e8c);}else{return null;}}return _0x1c35ad['sobject'](_[_0x2c79('0x48')](_0x340d97['moduleCreate']))[_0x2c79('0x20')](_0x1216c2)['then'](function(_0xd4343f){return BPromise['resolve']({'id':_0xd4343f['id'],'endUserType':_0x340d97[_0x2c79('0x45')]});});}});}function getCustomFields(_0x3173f1,_0x3514e9){var _0x34d2ad={};if(_0x3173f1[_0x2c79('0x27')]>0x0){_[_0x2c79('0x49')](_0x3173f1,function(_0x1eb685){if(_[_0x2c79('0x4a')]([_0x2c79('0x4b'),_0x2c79('0x4c')],_0x1eb685[_0x2c79('0x3d')])&&_0x1eb685[_0x2c79('0x4d')]){_0x34d2ad[_0x1eb685['idField']]=_0x1eb685[_0x2c79('0x4e')][_0x2c79('0x4f')]();}else if(_0x1eb685['type']===_0x2c79('0x50')&&_0x1eb685[_0x2c79('0x51')]&&_0x1eb685['idField']){_0x3514e9[_0x1eb685[_0x2c79('0x51')]]&&(_0x34d2ad[_0x1eb685['idField']]=_0x3514e9[_0x1eb685[_0x2c79('0x51')]]['toString']());}else if(_0x1eb685['type']===_0x2c79('0x52')&&_0x1eb685[_0x2c79('0x53')]&&_0x1eb685[_0x2c79('0x53')][_0x2c79('0x54')]&&_0x1eb685[_0x2c79('0x4d')]){_0x3514e9[_0x1eb685['Variable'][_0x2c79('0x54')]['toLowerCase']()]&&(_0x34d2ad[_0x1eb685[_0x2c79('0x4d')]]=_0x3514e9[_0x1eb685['Variable'][_0x2c79('0x54')][_0x2c79('0x3e')]()][_0x2c79('0x4f')]());}});}return _0x34d2ad;}function getConnection(_0x13e0c6){var _0x3eceb0=_0x13e0c6[_0x2c79('0x55')]['concat'](_0x13e0c6[_0x2c79('0x56')]);var _0x4d2cb9=new jsforce['Connection']({'oauth2':{'loginUrl':_0x13e0c6[_0x2c79('0x57')]||_0x2c79('0x58'),'clientId':_0x13e0c6[_0x2c79('0x59')],'clientSecret':_0x13e0c6[_0x2c79('0x5a')]}});return _0x4d2cb9[_0x2c79('0x5b')](_0x13e0c6['username'],_0x3eceb0)['then'](function(){logger[_0x2c79('0x1f')](_0x2c79('0x5c'));return _0x4d2cb9;});}exports[_0x2c79('0x5d')]=function(_0x5ca6b4,_0x236d21,_0x50c839,_0x30a9e3,_0x2a433a,_0x216e1b){var _0x5353e8,_0xe10661,_0x430c5d,_0x219a7e;_0x216e1b['serverUrl']=intUtil['stripTrailingSlash'](_0x216e1b[_0x2c79('0x5e')]);_0x216e1b[_0x2c79('0x57')]=intUtil[_0x2c79('0x5f')](_0x216e1b['remoteUri']);if(_0x2a433a&&_0x2a433a['monitor_format']){logger[_0x2c79('0x1f')](_0x2c79('0x60'),'Recording\x20is\x20enabled!');_0x236d21['recordingURL']=util[_0x2c79('0x43')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x216e1b[_0x2c79('0x5e')],_0x236d21[_0x2c79('0x61')],md5(_0x236d21[_0x2c79('0x61')]));}else{_0x236d21[_0x2c79('0x62')]='';}return getConnection(_0x216e1b)[_0x2c79('0x26')](function(_0x6ba18c){_0x219a7e=_0x6ba18c;return getUser(_0x216e1b,_0x30a9e3['email'],_0x219a7e);})['then'](function(_0x4b0d28){_0x5353e8=_0x4b0d28;return getEndUser(_0x216e1b,_0x50c839,_0x236d21[_0x2c79('0x63')],_0x236d21[_0x2c79('0x64')],_0x219a7e);})['then'](function(_0x4f18d6){_0xe10661=_0x4f18d6;return getTicket(_0x216e1b,_0x5353e8,_0xe10661,_0x50c839,_0x236d21,_0x50c839[_0x2c79('0x65')],_0x219a7e,_0x2c79('0x5d'));})[_0x2c79('0x26')](function(_0x124e61){_0x430c5d=_0x124e61;logger[_0x2c79('0x1f')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x430c5d['id']);logger[_0x2c79('0x1f')](_0x2c79('0x66'),_0x430c5d['id'],_0x30a9e3['name'],_0x216e1b['type']);switch(_0x216e1b[_0x2c79('0x3d')]){case _0x2c79('0x67'):emit(util['format'](_0x2c79('0x68'),_0x30a9e3[_0x2c79('0x54')]),'trigger:salesforce:display',{'recordId':_0x430c5d['id']});break;case _0x2c79('0x69'):emit(util['format'](_0x2c79('0x68'),_0x30a9e3[_0x2c79('0x54')]),'trigger:browser:url',{'uri':util[_0x2c79('0x43')](_0x2c79('0x6a'),_0x219a7e[_0x2c79('0x6b')],_0x430c5d['id'])});break;default:logger[_0x2c79('0x6c')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x2c79('0x6d')](function(_0x5295c4){logger[_0x2c79('0x6c')](_0x2c79('0x60'),_0x5295c4);});};exports[_0x2c79('0x6e')]=function(_0x55852d,_0x4b6d79,_0x2c41f7,_0x36cb4c,_0x9fc16a,_0x54cb25,_0x30373f){var _0x262641,_0x510744,_0x2d27ad,_0x3d82ce;_0x54cb25[_0x2c79('0x5e')]=intUtil[_0x2c79('0x5f')](_0x54cb25[_0x2c79('0x5e')]);_0x54cb25['remoteUri']=intUtil['stripTrailingSlash'](_0x54cb25[_0x2c79('0x57')]);if(_0x30373f&&_0x30373f[_0x2c79('0x6f')]&&_0x30373f[_0x2c79('0x6f')]!==_0x2c79('0x70')){logger[_0x2c79('0x1f')](_0x2c79('0x71'),'Recording\x20is\x20enabled!');_0x4b6d79[_0x2c79('0x62')]=util[_0x2c79('0x43')](_0x2c79('0x72'),_0x54cb25[_0x2c79('0x5e')],_0x4b6d79[_0x2c79('0x61')],md5(_0x4b6d79[_0x2c79('0x61')]));}return getConnection(_0x54cb25)[_0x2c79('0x26')](function(_0x4d4e9d){_0x3d82ce=_0x4d4e9d;return getUser(_0x54cb25,_0x36cb4c[_0x2c79('0x73')],_0x3d82ce);})[_0x2c79('0x26')](function(_0x198cc3){_0x262641=_0x198cc3;return getEndUser(_0x54cb25,_0x2c41f7,_0x4b6d79[_0x2c79('0x74')],_0x4b6d79[_0x2c79('0x75')],_0x3d82ce);})[_0x2c79('0x26')](function(_0x3ff69a){_0x510744=_0x3ff69a;return getTicket(_0x54cb25,_0x262641,_0x510744,_0x2c41f7,_0x4b6d79,_0x2c41f7[_0x2c79('0x65')],_0x3d82ce,_0x2c79('0x6e'));})[_0x2c79('0x26')](function(_0x66c698){_0x2d27ad=_0x66c698;logger[_0x2c79('0x1f')](_0x2c79('0x76'),_0x2d27ad['id']);logger[_0x2c79('0x1f')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x2d27ad['id'],_0x36cb4c['name'],_0x54cb25[_0x2c79('0x3d')]);switch(_0x54cb25[_0x2c79('0x3d')]){case _0x2c79('0x67'):emit(util[_0x2c79('0x43')](_0x2c79('0x68'),_0x36cb4c[_0x2c79('0x54')]),'trigger:salesforce:display',{'recordId':_0x2d27ad['id']});break;case _0x2c79('0x69'):emit(util[_0x2c79('0x43')](_0x2c79('0x68'),_0x36cb4c[_0x2c79('0x54')]),_0x2c79('0x77'),{'uri':util['format'](_0x2c79('0x6a'),_0x3d82ce[_0x2c79('0x6b')],_0x2d27ad['id'])});break;default:logger[_0x2c79('0x6c')]('[OUTBOUND]',_0x2c79('0x78'));}})['catch'](function(_0x5d6cf6){logger[_0x2c79('0x6c')](_0x2c79('0x71'),_0x5d6cf6);});};exports[_0x2c79('0x79')]=function(_0x514175,_0x50fe63,_0x12e96a,_0x33296b,_0x1a0249,_0x41e3c7){var _0x17bc11,_0x24c1c8,_0x3e0841,_0x12a567;_0x41e3c7[_0x2c79('0x5e')]=intUtil[_0x2c79('0x5f')](_0x41e3c7['serverUrl']);_0x41e3c7['remoteUri']=intUtil[_0x2c79('0x5f')](_0x41e3c7['remoteUri']);if(_0x1a0249&&_0x1a0249[_0x2c79('0x7a')]){logger[_0x2c79('0x1f')]('['+_0x50fe63[_0x2c79('0x7b')][_0x2c79('0x7c')]()+']','Recording\x20is\x20enabled!');_0x50fe63[_0x2c79('0x62')]=util[_0x2c79('0x43')](_0x2c79('0x72'),_0x41e3c7[_0x2c79('0x5e')],_0x50fe63[_0x2c79('0x61')],md5(_0x50fe63[_0x2c79('0x61')]));}else{_0x50fe63[_0x2c79('0x62')]='';}return getConnection(_0x41e3c7)[_0x2c79('0x26')](function(_0x187e5a){_0x12a567=_0x187e5a;if(!_[_0x2c79('0x21')](_0x33296b)){return getUser(_0x41e3c7,_0x33296b[_0x2c79('0x54')],_0x12a567);}else{return getUser(_0x41e3c7,null,_0x12a567);}})[_0x2c79('0x26')](function(_0x4d837a){_0x17bc11=_0x4d837a;return getEndUser(_0x41e3c7,_0x12e96a,_0x50fe63[_0x2c79('0x63')],_0x50fe63[_0x2c79('0x64')],_0x12a567);})['then'](function(_0x5bab20){_0x24c1c8=_0x5bab20;return getTicket(_0x41e3c7,_0x17bc11,_0x24c1c8,_0x12e96a,_0x50fe63,_0x12e96a['Fields'],_0x12a567);})[_0x2c79('0x26')](function(_0x4bc0e5){_0x3e0841=_0x4bc0e5;logger['info']('['+_0x50fe63['lastevent'][_0x2c79('0x7c')]()+']\x20Ticket\x20%s\x20created.',_0x3e0841['id']);logger[_0x2c79('0x1f')]('['+_0x50fe63[_0x2c79('0x7b')][_0x2c79('0x7c')]()+']\x20Integration\x20account\x20type\x20%s.',_0x41e3c7[_0x2c79('0x3d')]);})[_0x2c79('0x6d')](function(_0x54c62b){logger[_0x2c79('0x6c')]('['+_0x50fe63[_0x2c79('0x7b')]['toUpperCase']()+']',_0x54c62b);});};
\ No newline at end of file
index 7799311..da8ad85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x470b=[']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','ticketId','Incident\x20-\x20','push','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','trigger:browser:url','username','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','format','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','./util','../../../../config/environment','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','true','userId','adminEmail','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','toLowerCase','variable','variableName','Variable','name','outbound','incident','assign','Subjects','getString','Descriptions','Fields'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x470b,0x1d8));var _0xb470=function(_0x480b02,_0x1e3289){_0x480b02=_0x480b02-0x0;var _0x4a4e5a=_0x470b[_0x480b02];return _0x4a4e5a;};'use strict';var _=require(_0xb470('0x0'));var Promise=require(_0xb470('0x1'));var rp=require(_0xb470('0x2'));var util=require('util');var md5=require(_0xb470('0x3'));var Redis=require('ioredis');var intUtil=require(_0xb470('0x4'));var config=require(_0xb470('0x5'));var logger=require('../../../../config/logger')(_0xb470('0x6'));config[_0xb470('0x7')]=_['defaults'](config['redis'],{'host':_0xb470('0x8'),'port':0x18eb});var io=require(_0xb470('0x9'))(new Redis(config[_0xb470('0x7')]));function getAdminUser(_0x53759e,_0x4a9cc5,_0xd62582,_0x59b240,_0x296d79,_0x36f2ed){return new Promise(function(_0x13e132,_0x45742e){var _0x6bf584={'method':_0xb470('0xa'),'uri':_0x59b240+_0xb470('0xb')+'&'+_0x296d79+'&'+_0x36f2ed,'auth':_0x4a9cc5,'json':!![]};return rp(_0x6bf584)[_0xb470('0xc')](function(_0x10c526){if(_0x10c526['result'][_0xb470('0xd')]>0x0){_0xd62582[_0xb470('0xe')]=_0x10c526[_0xb470('0xf')][0x0][_0xb470('0x10')];}logger[_0xb470('0x11')]('['+[_0x53759e[_0xb470('0x12')]()]+_0xb470('0x13'),_0xd62582);_0x13e132(_0xd62582);})['catch'](function(_0x5e40d0){logger[_0xb470('0x14')]('['+[_0x53759e[_0xb470('0x12')]()]+']',_0x5e40d0[_0xb470('0x15')]);_0x45742e(_0x5e40d0[_0xb470('0x15')]);});});}function getUser(_0x2d9dad,_0x5059d1,_0x152d85,_0x583f14,_0x59278f){return function(_0x337827){logger[_0xb470('0x11')]('['+[_0x2d9dad[_0xb470('0x12')]()]+'],\x20getUser\x20input\x20crm',_0x337827);return new Promise(function(_0x35f915,_0xb9af32){if(intUtil[_0xb470('0x16')](_0x337827[_0xb470('0x17')])){var _0x21d6fd={'method':_0xb470('0xa'),'uri':_0x152d85+_0xb470('0x18')+_0x337827['userEmail']+'&'+_0x583f14+'&'+_0x59278f,'auth':_0x5059d1,'json':!![]};logger[_0xb470('0x11')]('['+[_0x2d9dad[_0xb470('0x12')]()]+_0xb470('0x19'),_0x21d6fd);return rp(_0x21d6fd)[_0xb470('0xc')](function(_0x17c2d7){logger[_0xb470('0x11')]('['+[_0x2d9dad[_0xb470('0x12')]()]+'],\x20getUser\x20entity',_0x17c2d7);if(_0x17c2d7[_0xb470('0xf')]['length']>0x0&&String(_0x17c2d7['result'][0x0]['active'])===_0xb470('0x1a')){_0x337827['userId']=_0x17c2d7['result'][0x0][_0xb470('0x10')];}else{_0x337827[_0xb470('0x1b')]=_0x337827['adminId'];_0x337827[_0xb470('0x17')]=_0x337827[_0xb470('0x1c')];}logger['info']('['+[_0x2d9dad['toUpperCase']()]+_0xb470('0x1d'),_0x337827);_0x35f915(_0x337827);})[_0xb470('0x1e')](function(_0x319cd9){logger['error']('['+[_0x2d9dad[_0xb470('0x12')]()]+']',_0x319cd9[_0xb470('0x15')]);_0xb9af32(_0x319cd9[_0xb470('0x15')]);});}else{logger[_0xb470('0x11')]('['+[_0x2d9dad[_0xb470('0x12')]()]+_0xb470('0x1f'));_0x337827[_0xb470('0x1b')]=_0x337827[_0xb470('0xe')];_0x337827[_0xb470('0x17')]=_0x337827[_0xb470('0x1c')];_0x35f915(_0x337827);}});};}function createEndUser(_0x134fde,_0x1c7025,_0x56cbd5,_0x50544f,_0x2b1814){logger[_0xb470('0x11')]('['+[_0x134fde[_0xb470('0x12')]()]+_0xb470('0x20'),_0x56cbd5);return new Promise(function(_0x1bb893,_0x574d8b){var _0x41dc43={'method':_0xb470('0x21'),'uri':_0x50544f+_0xb470('0x22')+_0x2b1814,'body':{'user_name':_0x56cbd5[_0xb470('0x23')],'roles':'user','first_name':_0x56cbd5['endUserNumber'],'active':_0xb470('0x1a'),'date_format':_0xb470('0x24'),'phone':_0x56cbd5['endUserNumber']},'auth':_0x1c7025,'json':!![]};return rp(_0x41dc43)[_0xb470('0xc')](function(_0x3a08e6){logger[_0xb470('0x11')]('['+[_0x134fde[_0xb470('0x12')]()]+_0xb470('0x25'),_0x3a08e6[_0xb470('0xf')]);_0x56cbd5[_0xb470('0x26')]=_0x3a08e6[_0xb470('0xf')]['sys_id'];_0x1bb893(_0x56cbd5);})[_0xb470('0x1e')](function(_0x195d34){logger['error']('['+[_0x134fde['toUpperCase']()]+']',_0x195d34[_0xb470('0x15')]);_0x574d8b(_0x195d34['message']);});});}function getEndUser(_0x3230c1,_0x6883df,_0x3540d5,_0x622311,_0x3fbd33){return function(_0x5d94f5){logger[_0xb470('0x11')]('['+[_0x3230c1[_0xb470('0x12')]()]+'],\x20getEndUser\x20input\x20crm',_0x5d94f5);return new Promise(function(_0x3bce37,_0x48d4ea){var _0x14f267={'method':_0xb470('0xa'),'uri':_0x3540d5+_0xb470('0x27')+_0x5d94f5[_0xb470('0x23')]+'&'+_0x622311+'&'+_0x3fbd33,'auth':_0x6883df,'json':!![]};return rp(_0x14f267)[_0xb470('0xc')](function(_0xfee4b8){if(_0xfee4b8[_0xb470('0xf')][_0xb470('0xd')]>0x0){_0x5d94f5['endUserId']=_0xfee4b8[_0xb470('0xf')][0x0][_0xb470('0x10')];logger[_0xb470('0x11')]('['+[_0x3230c1['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x5d94f5);_0x3bce37(_0x5d94f5);}else{return createEndUser(_0x3230c1,_0x6883df,_0x5d94f5,_0x3540d5,_0x622311)[_0xb470('0xc')](function(_0x112665){logger['info']('['+[_0x3230c1[_0xb470('0x12')]()]+_0xb470('0x28'),_0x112665);_0x3bce37(_0x112665);});}})[_0xb470('0x1e')](function(_0x352156){logger[_0xb470('0x14')]('['+[_0x3230c1[_0xb470('0x12')]()]+']',_0x352156['message']);_0x48d4ea(_0x352156['message']);});});};}function getCustomFields(_0x4590c9,_0x3c6ee8){var _0x574e60={};if(_0x4590c9['length']>0x0){_[_0xb470('0x29')](_0x4590c9,function(_0x4c407f){if(_[_0xb470('0x2a')]([_0xb470('0x2b'),_0xb470('0x2c')],_0x4c407f[_0xb470('0x2d')])&&_0x4c407f[_0xb470('0x2e')]&&!_0x4c407f[_0xb470('0x2f')]){_0x574e60[_0x4c407f[_0xb470('0x2e')]['toLowerCase']()]=_0x4c407f[_0xb470('0x30')][_0xb470('0x31')]();}else if(_[_0xb470('0x2a')]([_0xb470('0x2b'),'picklist'],_0x4c407f[_0xb470('0x2d')])&&_0x4c407f[_0xb470('0x32')]&&_0x4c407f[_0xb470('0x2f')]){_0x574e60[_0x4c407f['idField'][_0xb470('0x33')]()]=_0x4c407f['content'][_0xb470('0x31')]();}else if(_0x4c407f['type']===_0xb470('0x34')&&_0x4c407f[_0xb470('0x35')]&&_0x4c407f[_0xb470('0x32')]&&_0x4c407f[_0xb470('0x2f')]){_0x574e60[_0x4c407f[_0xb470('0x32')][_0xb470('0x33')]()]=_0x3c6ee8[_0x4c407f[_0xb470('0x35')]]['toString']();}else if(_0x4c407f['type']==='customVariable'&&_0x4c407f['Variable']&&_0x4c407f[_0xb470('0x36')][_0xb470('0x37')]&&_0x4c407f[_0xb470('0x32')]&&_0x4c407f['customField']){_0x574e60[_0x4c407f['idField'][_0xb470('0x33')]()]=_0x3c6ee8[_0x4c407f[_0xb470('0x36')][_0xb470('0x37')][_0xb470('0x33')]()]['toString']();}});}return _0x574e60;}function getTicket(_0x4b1b99,_0x13d401,_0x33efce,_0x1ca373,_0x168671,_0x37e4a7){return function(_0x2dc1e8){logger[_0xb470('0x11')]('['+[_0x4b1b99['toUpperCase']()]+']\x20getTicket\x20input\x20crm',_0x2dc1e8);return new Promise(function(_0x4b5d00,_0x551ce3){var _0x25777f=_0x4b1b99[_0xb470('0x33')]()===_0xb470('0x38')?_0x2dc1e8['userId']:_0x2dc1e8[_0xb470('0x26')];var _0xe4e33={'method':_0xb470('0x21'),'uri':_0x33efce+_0xb470('0x39')+'?'+_0x37e4a7,'body':Object[_0xb470('0x3a')]({},{'active':'true','caller_id':_0x25777f,'assigned_to':_0x2dc1e8[_0xb470('0x1b')],'short_description':intUtil['getString'](_0x1ca373[_0xb470('0x3b')],_0x168671,'\x20'),'description':intUtil[_0xb470('0x3c')](_0x1ca373[_0xb470('0x3d')],_0x168671,'\x0a')},getCustomFields(_0x1ca373[_0xb470('0x3e')],_0x168671)),'auth':_0x13d401,'json':!![]};return rp(_0xe4e33)[_0xb470('0xc')](function(_0x91320b){logger['info']('['+[_0x4b1b99[_0xb470('0x12')]()]+_0xb470('0x3f'),_0x91320b[_0xb470('0xf')]);_0x2dc1e8['ticketId']=_0x91320b['result']['sys_id'];_0x2dc1e8[_0xb470('0x40')]=_0x91320b[_0xb470('0xf')][_0xb470('0x41')];logger[_0xb470('0x11')]('['+[_0x4b1b99[_0xb470('0x12')]()]+']\x20getTicket\x20crm',_0x2dc1e8);_0x4b5d00(_0x2dc1e8);})[_0xb470('0x1e')](function(_0x48f508){logger[_0xb470('0x14')]('['+[_0x4b1b99[_0xb470('0x12')]()]+']',_0x48f508['message']);_0x551ce3(_0x48f508[_0xb470('0x15')]);});});};}function createRemoteTag(_0x234e09,_0x513fb9,_0x4b6167,_0x337520){return new Promise(function(_0xe5b6fe,_0x3ed3d7){var _0x52fb66={'method':_0xb470('0x21'),'uri':_0x4b6167+_0xb470('0x42')+'?'+_0x337520,'body':{'short_description':_0x234e09,'global':!![],'active':!![],'name':_0x234e09},'auth':_0x513fb9,'json':!![]};return rp(_0x52fb66)['then'](function(_0x2eef0c){var _0x59bc2d=_0x2eef0c[_0xb470('0xf')][_0xb470('0x10')];_0xe5b6fe(_0x59bc2d);});});}function getRemoteTag(_0x3b0c28,_0x4398fc,_0x5eeb65,_0x25961c,_0x2c1978){return new Promise(function(_0x2ac060,_0x2362f6){var _0x53bf69={'method':_0xb470('0xa'),'uri':_0x5eeb65+_0xb470('0x42')+_0xb470('0x43')+_0x3b0c28+'&'+_0x25961c,'auth':_0x4398fc,'json':!![]};return rp(_0x53bf69)[_0xb470('0xc')](function(_0x38cf16){if(_0x38cf16[_0xb470('0xf')][_0xb470('0xd')]>0x0){var _0x35edf2=_0x38cf16[_0xb470('0xf')][0x0]['sys_id'];_0x2ac060(_0x35edf2);}else{return createRemoteTag(_0x3b0c28,_0x4398fc,_0x5eeb65,_0x25961c)[_0xb470('0xc')](function(_0x390a1a){_0x2ac060(_0x390a1a);});}});});}function assignTagToIncident(_0x591594,_0x4d3db2,_0x5b204b,_0x10c86c,_0x50c034){return new Promise(function(_0x21c8ba,_0xfe8d97){var _0x57a5fb={'method':_0xb470('0x21'),'uri':_0x5b204b+_0xb470('0x44')+'?'+_0x50c034,'body':{'label':_0x591594,'table':_0xb470('0x39'),'id_type':'Incident','table_key':_0x10c86c[_0xb470('0x45')],'title':_0xb470('0x46')+_0x10c86c[_0xb470('0x40')],'id_display':_0x10c86c[_0xb470('0x40')]},'auth':_0x4d3db2,'json':!![]};return rp(_0x57a5fb)[_0xb470('0xc')](function(_0xd60edb){_0x21c8ba();})['catch'](function(){_0x21c8ba();});});}function manageTags(_0x2a256d,_0xb5924f,_0x2ae0dc,_0x59fed7,_0x4a63fb,_0x7af0fc,_0x4c0199){return new Promise(function(_0x17b904,_0x75e982){var _0xaa18f8=[];_0xb5924f[_0xb470('0x29')](function(_0x2e9fcd){_0xaa18f8[_0xb470('0x47')](getRemoteTag(_0x2e9fcd,_0x2ae0dc,_0x59fed7,_0x7af0fc,_0x4c0199));});return Promise[_0xb470('0x48')](_0xaa18f8)[_0xb470('0xc')](function(_0x58a316){if(_0x58a316[_0xb470('0xd')]){logger['info']('['+[_0x2a256d[_0xb470('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x58a316);var _0x4c42da=[];_0x58a316[_0xb470('0x29')](function(_0x23a73d){_0x4c42da[_0xb470('0x47')](assignTagToIncident(_0x23a73d,_0x2ae0dc,_0x59fed7,_0x4a63fb,_0x7af0fc));});return Promise[_0xb470('0x48')](_0x4c42da)[_0xb470('0xc')](function(){_0x17b904();})[_0xb470('0x1e')](function(){_0x17b904();});}else{_0x17b904();}});});}function getTags(_0x565563,_0x424809,_0x1514c2,_0x240a07,_0x2f3d71,_0xd0d368){return function(_0x4af734){return new Promise(function(_0x103c4d,_0x47f078){var _0x1acf4d=[];var _0x7c154a=_0x240a07[_0xb470('0x49')];if(_0x7c154a&&_0x7c154a['length']>0x0){_0x1acf4d=_[_0xb470('0x4a')](_0x7c154a,'name');}if(_0x1acf4d['length']>0x0){return manageTags(_0x565563,_0x1acf4d,_0x424809,_0x1514c2,_0x4af734,_0x2f3d71,_0xd0d368)[_0xb470('0xc')](function(){_0x103c4d(_0x4af734);});}else{_0x103c4d(_0x4af734);}});};}function emit(_0x4c2b33,_0x3e1257,_0xfd18f9){var _0x3a1008=_0xb470('0x4b')+_0xb470('0x4c')+_0xb470('0x4d')+'%255EORDERBYDESCnumber';var _0x660120={'uri':_0x4c2b33+_0xb470('0x4e')+_0xfd18f9+_0x3a1008};io['to'](util['format'](_0xb470('0x4f'),_0x3e1257))[_0xb470('0x50')](_0xb470('0x51'),_0x660120);}exports['cs']=function(_0x5e3d1c,_0x50730e,_0x37c5d6,_0x5c155e,_0x2d741e,_0x271e82,_0x38945f,_0x236b5e){var _0x4dcaeb={};var _0x4003ac={'user':_0x271e82[_0xb470('0x52')],'pass':_0x271e82['password']};var _0x1b950f='sysparm_limit=1';var _0xe6e2f9=_0xb470('0x53');_0x271e82[_0xb470('0x54')]=intUtil[_0xb470('0x55')](_0x271e82[_0xb470('0x54')]);_0x271e82[_0xb470('0x56')]=intUtil['stripTrailingSlash'](_0x271e82['serverUrl']);var _0xc0dc23=util['format'](_0xb470('0x57'),_0x271e82[_0xb470('0x54')]);_0x4dcaeb[_0xb470('0x17')]=!_[_0xb470('0x58')](_0x5c155e)?_0x5c155e[_0xb470('0x59')]:null;_0x4dcaeb[_0xb470('0x1c')]=_0x271e82[_0xb470('0x59')];_0x4dcaeb[_0xb470('0x23')]=_0x236b5e[_0xb470('0x33')]()===_0xb470('0x38')?_0x50730e[_0xb470('0x5a')]:_0x50730e[_0xb470('0x5b')];_0x4dcaeb[_0xb470('0x5c')]=_0x236b5e===_0xb470('0x5d')||_0x236b5e===_0xb470('0x5e')?_0xb470('0x5d'):_0xb470('0x38');var _0x2933d0=util[_0xb470('0x5f')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x271e82[_0xb470('0x56')],_0x50730e[_0xb470('0x60')],md5(_0x50730e[_0xb470('0x60')]));if(_0x2d741e&&_0x2d741e[_0xb470('0x61')]){logger[_0xb470('0x11')](_0xb470('0x62'),_0xb470('0x63'));_0x50730e[_0xb470('0x64')]=_0x2933d0;}else if(_0x38945f&&_0x38945f[_0xb470('0x65')]&&_0x38945f['recordingFormat']!==_0xb470('0x66')){logger[_0xb470('0x11')](_0xb470('0x67'),_0xb470('0x63'));_0x50730e['recordingURL']=_0x2933d0;}else{_0x50730e[_0xb470('0x64')]='';}return getAdminUser(_0x236b5e,_0x4003ac,_0x4dcaeb,_0xc0dc23,_0xe6e2f9,_0x1b950f)[_0xb470('0xc')](getUser(_0x236b5e,_0x4003ac,_0xc0dc23,_0xe6e2f9,_0x1b950f))['then'](getEndUser(_0x236b5e,_0x4003ac,_0xc0dc23,_0xe6e2f9,_0x1b950f))[_0xb470('0xc')](getTicket(_0x236b5e,_0x4003ac,_0xc0dc23,_0x37c5d6,_0x50730e,_0xe6e2f9))['then'](function(_0x3d2158){logger[_0xb470('0x11')](util[_0xb470('0x5f')](_0xb470('0x68'),_0x3d2158[_0xb470('0x45')]));logger[_0xb470('0x11')](util[_0xb470('0x5f')]('call\x20direction:\x20%s',_0x236b5e));if(_0x236b5e!==_0xb470('0x5e')){logger[_0xb470('0x11')]('['+[_0x236b5e[_0xb470('0x12')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x271e82[_0xb470('0x54')],_0x5c155e['name'],_0x3d2158[_0xb470('0x45')]);}})[_0xb470('0x1e')](function(_0x3a7e0d){logger[_0xb470('0x14')]('['+[_0x236b5e[_0xb470('0x12')]()]+_0xb470('0x69'),util[_0xb470('0x6a')](_0x3a7e0d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x6612=['outbound','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','POST','label_entry','Incident','Incident\x20-\x20','ticketNumber','forEach','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','name','%26sysparm_record_target%3Dincident','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','destcalleridnum','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','util','ioredis','./util','../../../../config/environment','servicenow','redis','defaults','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','toUpperCase','],\x20getAdminUser\x20crm','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','true','userId','sys_id','adminEmail','],\x20getUser\x20crm','catch','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','customVariable','Variable'];(function(_0x173f6d,_0x240067){var _0x362481=function(_0x100042){while(--_0x100042){_0x173f6d['push'](_0x173f6d['shift']());}};_0x362481(++_0x240067);}(_0x6612,0x1df));var _0x2661=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x6612[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x2661('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0x2661('0x1'));var md5=require('md5');var Redis=require(_0x2661('0x2'));var intUtil=require(_0x2661('0x3'));var config=require(_0x2661('0x4'));var logger=require('../../../../config/logger')(_0x2661('0x5'));config[_0x2661('0x6')]=_[_0x2661('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x2661('0x8'))(new Redis(config[_0x2661('0x6')]));function getAdminUser(_0x42476e,_0x4f2438,_0x1f2676,_0x107b28,_0x52b3c0,_0xe1063e){return new Promise(function(_0x1b2fd9,_0x39a665){var _0x233d9d={'method':'GET','uri':_0x107b28+_0x2661('0x9')+'&'+_0x52b3c0+'&'+_0xe1063e,'auth':_0x4f2438,'json':!![]};return rp(_0x233d9d)[_0x2661('0xa')](function(_0x3ba3c2){if(_0x3ba3c2[_0x2661('0xb')][_0x2661('0xc')]>0x0){_0x1f2676[_0x2661('0xd')]=_0x3ba3c2[_0x2661('0xb')][0x0]['sys_id'];}logger['info']('['+[_0x42476e[_0x2661('0xe')]()]+_0x2661('0xf'),_0x1f2676);_0x1b2fd9(_0x1f2676);})['catch'](function(_0x580430){logger['error']('['+[_0x42476e[_0x2661('0xe')]()]+']',_0x580430[_0x2661('0x10')]);_0x39a665(_0x580430[_0x2661('0x10')]);});});}function getUser(_0x56dfe8,_0x3e2363,_0x491e14,_0x533a07,_0x24c0a6){return function(_0x37b4aa){logger[_0x2661('0x11')]('['+[_0x56dfe8[_0x2661('0xe')]()]+_0x2661('0x12'),_0x37b4aa);return new Promise(function(_0x379520,_0x3d8ac9){if(intUtil[_0x2661('0x13')](_0x37b4aa[_0x2661('0x14')])){var _0x2f302c={'method':_0x2661('0x15'),'uri':_0x491e14+_0x2661('0x16')+_0x37b4aa[_0x2661('0x14')]+'&'+_0x533a07+'&'+_0x24c0a6,'auth':_0x3e2363,'json':!![]};logger[_0x2661('0x11')]('['+[_0x56dfe8[_0x2661('0xe')]()]+_0x2661('0x17'),_0x2f302c);return rp(_0x2f302c)[_0x2661('0xa')](function(_0x3944fd){logger[_0x2661('0x11')]('['+[_0x56dfe8[_0x2661('0xe')]()]+'],\x20getUser\x20entity',_0x3944fd);if(_0x3944fd[_0x2661('0xb')][_0x2661('0xc')]>0x0&&String(_0x3944fd[_0x2661('0xb')][0x0][_0x2661('0x18')])===_0x2661('0x19')){_0x37b4aa[_0x2661('0x1a')]=_0x3944fd[_0x2661('0xb')][0x0][_0x2661('0x1b')];}else{_0x37b4aa[_0x2661('0x1a')]=_0x37b4aa[_0x2661('0xd')];_0x37b4aa['userEmail']=_0x37b4aa[_0x2661('0x1c')];}logger[_0x2661('0x11')]('['+[_0x56dfe8[_0x2661('0xe')]()]+_0x2661('0x1d'),_0x37b4aa);_0x379520(_0x37b4aa);})[_0x2661('0x1e')](function(_0x102734){logger[_0x2661('0x1f')]('['+[_0x56dfe8[_0x2661('0xe')]()]+']',_0x102734['message']);_0x3d8ac9(_0x102734[_0x2661('0x10')]);});}else{logger[_0x2661('0x11')]('['+[_0x56dfe8[_0x2661('0xe')]()]+_0x2661('0x20'));_0x37b4aa[_0x2661('0x1a')]=_0x37b4aa[_0x2661('0xd')];_0x37b4aa['userEmail']=_0x37b4aa[_0x2661('0x1c')];_0x379520(_0x37b4aa);}});};}function createEndUser(_0x16f5bd,_0x5f52c8,_0x3f41e6,_0x33ebd6,_0xf55b09){logger[_0x2661('0x11')]('['+[_0x16f5bd['toUpperCase']()]+_0x2661('0x21'),_0x3f41e6);return new Promise(function(_0x2718d0,_0x170eb8){var _0x51d842={'method':'POST','uri':_0x33ebd6+_0x2661('0x22')+_0xf55b09,'body':{'user_name':_0x3f41e6['endUserNumber'],'roles':'user','first_name':_0x3f41e6[_0x2661('0x23')],'active':_0x2661('0x19'),'date_format':_0x2661('0x24'),'phone':_0x3f41e6[_0x2661('0x23')]},'auth':_0x5f52c8,'json':!![]};return rp(_0x51d842)['then'](function(_0x17a248){logger[_0x2661('0x11')]('['+[_0x16f5bd['toUpperCase']()]+_0x2661('0x25'),_0x17a248[_0x2661('0xb')]);_0x3f41e6[_0x2661('0x26')]=_0x17a248[_0x2661('0xb')][_0x2661('0x1b')];_0x2718d0(_0x3f41e6);})[_0x2661('0x1e')](function(_0x23cfb0){logger[_0x2661('0x1f')]('['+[_0x16f5bd[_0x2661('0xe')]()]+']',_0x23cfb0[_0x2661('0x10')]);_0x170eb8(_0x23cfb0[_0x2661('0x10')]);});});}function getEndUser(_0x25ec22,_0x504678,_0x158b79,_0x21af20,_0x54876d){return function(_0x1cdedc){logger[_0x2661('0x11')]('['+[_0x25ec22[_0x2661('0xe')]()]+_0x2661('0x27'),_0x1cdedc);return new Promise(function(_0x324d4c,_0x362204){var _0x78172b={'method':_0x2661('0x15'),'uri':_0x158b79+_0x2661('0x28')+_0x1cdedc['endUserNumber']+'&'+_0x21af20+'&'+_0x54876d,'auth':_0x504678,'json':!![]};return rp(_0x78172b)[_0x2661('0xa')](function(_0x2b3280){if(_0x2b3280[_0x2661('0xb')][_0x2661('0xc')]>0x0){_0x1cdedc['endUserId']=_0x2b3280[_0x2661('0xb')][0x0][_0x2661('0x1b')];logger[_0x2661('0x11')]('['+[_0x25ec22[_0x2661('0xe')]()]+_0x2661('0x29'),_0x1cdedc);_0x324d4c(_0x1cdedc);}else{return createEndUser(_0x25ec22,_0x504678,_0x1cdedc,_0x158b79,_0x21af20)[_0x2661('0xa')](function(_0x132eef){logger[_0x2661('0x11')]('['+[_0x25ec22[_0x2661('0xe')]()]+_0x2661('0x2a'),_0x132eef);_0x324d4c(_0x132eef);});}})[_0x2661('0x1e')](function(_0x205c2e){logger['error']('['+[_0x25ec22[_0x2661('0xe')]()]+']',_0x205c2e[_0x2661('0x10')]);_0x362204(_0x205c2e['message']);});});};}function getCustomFields(_0x13bfb6,_0x216d5e){var _0x9c21fb={};if(_0x13bfb6[_0x2661('0xc')]>0x0){_['forEach'](_0x13bfb6,function(_0x39f21e){if(_[_0x2661('0x2b')]([_0x2661('0x2c'),_0x2661('0x2d')],_0x39f21e[_0x2661('0x2e')])&&_0x39f21e[_0x2661('0x2f')]&&!_0x39f21e[_0x2661('0x30')]){_0x9c21fb[_0x39f21e[_0x2661('0x2f')][_0x2661('0x31')]()]=_0x39f21e[_0x2661('0x32')][_0x2661('0x33')]();}else if(_[_0x2661('0x2b')]([_0x2661('0x2c'),_0x2661('0x2d')],_0x39f21e[_0x2661('0x2e')])&&_0x39f21e[_0x2661('0x34')]&&_0x39f21e[_0x2661('0x30')]){_0x9c21fb[_0x39f21e[_0x2661('0x34')][_0x2661('0x31')]()]=_0x39f21e[_0x2661('0x32')]['toString']();}else if(_0x39f21e[_0x2661('0x2e')]==='variable'&&_0x39f21e[_0x2661('0x35')]&&_0x39f21e[_0x2661('0x34')]&&_0x39f21e[_0x2661('0x30')]){_0x9c21fb[_0x39f21e[_0x2661('0x34')]['toLowerCase']()]=_0x216d5e[_0x39f21e['variableName']][_0x2661('0x33')]();}else if(_0x39f21e[_0x2661('0x2e')]===_0x2661('0x36')&&_0x39f21e[_0x2661('0x37')]&&_0x39f21e[_0x2661('0x37')]['name']&&_0x39f21e['idField']&&_0x39f21e[_0x2661('0x30')]){_0x9c21fb[_0x39f21e[_0x2661('0x34')][_0x2661('0x31')]()]=_0x216d5e[_0x39f21e[_0x2661('0x37')]['name']['toLowerCase']()][_0x2661('0x33')]();}});}return _0x9c21fb;}function getTicket(_0x2d2174,_0x4b952f,_0x3f2b88,_0x58418a,_0x42af83,_0x574cf5){return function(_0x13ebdb){logger[_0x2661('0x11')]('['+[_0x2d2174[_0x2661('0xe')]()]+']\x20getTicket\x20input\x20crm',_0x13ebdb);return new Promise(function(_0x1164bf,_0x4293b2){var _0x3062ae=_0x2d2174[_0x2661('0x31')]()===_0x2661('0x38')?_0x13ebdb['userId']:_0x13ebdb[_0x2661('0x26')];var _0x5e64dd={'method':'POST','uri':_0x3f2b88+_0x2661('0x39')+'?'+_0x574cf5,'body':Object[_0x2661('0x3a')]({},{'active':_0x2661('0x19'),'caller_id':_0x3062ae,'assigned_to':_0x13ebdb[_0x2661('0x1a')],'short_description':intUtil[_0x2661('0x3b')](_0x58418a[_0x2661('0x3c')],_0x42af83,'\x20'),'description':intUtil[_0x2661('0x3b')](_0x58418a['Descriptions'],_0x42af83,'\x0a')},getCustomFields(_0x58418a[_0x2661('0x3d')],_0x42af83)),'auth':_0x4b952f,'json':!![]};return rp(_0x5e64dd)[_0x2661('0xa')](function(_0x1955e5){logger[_0x2661('0x11')]('['+[_0x2d2174[_0x2661('0xe')]()]+_0x2661('0x3e'),_0x1955e5['result']);_0x13ebdb[_0x2661('0x3f')]=_0x1955e5['result'][_0x2661('0x1b')];_0x13ebdb['ticketNumber']=_0x1955e5['result'][_0x2661('0x40')];logger[_0x2661('0x11')]('['+[_0x2d2174[_0x2661('0xe')]()]+_0x2661('0x41'),_0x13ebdb);_0x1164bf(_0x13ebdb);})[_0x2661('0x1e')](function(_0x4c5790){logger[_0x2661('0x1f')]('['+[_0x2d2174['toUpperCase']()]+']',_0x4c5790[_0x2661('0x10')]);_0x4293b2(_0x4c5790[_0x2661('0x10')]);});});};}function createRemoteTag(_0x4e3df1,_0x38281b,_0x3f26a5,_0x5aab08){return new Promise(function(_0xd191bb,_0x387675){var _0x1a2c91={'method':'POST','uri':_0x3f26a5+_0x2661('0x42')+'?'+_0x5aab08,'body':{'short_description':_0x4e3df1,'global':!![],'active':!![],'name':_0x4e3df1},'auth':_0x38281b,'json':!![]};return rp(_0x1a2c91)[_0x2661('0xa')](function(_0xb56cb2){var _0x3431e1=_0xb56cb2['result'][_0x2661('0x1b')];_0xd191bb(_0x3431e1);});});}function getRemoteTag(_0x5019e8,_0x3264e9,_0x1b0a26,_0x50d803,_0x333511){return new Promise(function(_0x4e24cb,_0x5debe3){var _0x2528f5={'method':_0x2661('0x15'),'uri':_0x1b0a26+'label'+_0x2661('0x43')+_0x5019e8+'&'+_0x50d803,'auth':_0x3264e9,'json':!![]};return rp(_0x2528f5)[_0x2661('0xa')](function(_0x81d0a2){if(_0x81d0a2['result'][_0x2661('0xc')]>0x0){var _0x3244b9=_0x81d0a2['result'][0x0][_0x2661('0x1b')];_0x4e24cb(_0x3244b9);}else{return createRemoteTag(_0x5019e8,_0x3264e9,_0x1b0a26,_0x50d803)[_0x2661('0xa')](function(_0xef7a9d){_0x4e24cb(_0xef7a9d);});}});});}function assignTagToIncident(_0x40547b,_0x11e669,_0x33e67e,_0x363aa2,_0x1855b6){return new Promise(function(_0x5ac3a6,_0x1fc8b4){var _0x562dcf={'method':_0x2661('0x44'),'uri':_0x33e67e+_0x2661('0x45')+'?'+_0x1855b6,'body':{'label':_0x40547b,'table':_0x2661('0x39'),'id_type':_0x2661('0x46'),'table_key':_0x363aa2[_0x2661('0x3f')],'title':_0x2661('0x47')+_0x363aa2[_0x2661('0x48')],'id_display':_0x363aa2['ticketNumber']},'auth':_0x11e669,'json':!![]};return rp(_0x562dcf)[_0x2661('0xa')](function(_0x424e80){_0x5ac3a6();})[_0x2661('0x1e')](function(){_0x5ac3a6();});});}function manageTags(_0x571d45,_0x4e3565,_0x5492f2,_0x5628c0,_0xc410f3,_0x297bd8,_0x4a1045){return new Promise(function(_0x13f620,_0x28651a){var _0x2318d9=[];_0x4e3565[_0x2661('0x49')](function(_0x164413){_0x2318d9[_0x2661('0x4a')](getRemoteTag(_0x164413,_0x5492f2,_0x5628c0,_0x297bd8,_0x4a1045));});return Promise['all'](_0x2318d9)['then'](function(_0x55db74){if(_0x55db74[_0x2661('0xc')]){logger[_0x2661('0x11')]('['+[_0x571d45[_0x2661('0xe')]()]+_0x2661('0x4b'),_0x55db74);var _0x883144=[];_0x55db74[_0x2661('0x49')](function(_0x1da771){_0x883144['push'](assignTagToIncident(_0x1da771,_0x5492f2,_0x5628c0,_0xc410f3,_0x297bd8));});return Promise[_0x2661('0x4c')](_0x883144)['then'](function(){_0x13f620();})[_0x2661('0x1e')](function(){_0x13f620();});}else{_0x13f620();}});});}function getTags(_0x1015cb,_0x4f4d5d,_0x48dde4,_0x210c2d,_0x43dc9a,_0x5228fd){return function(_0x373005){return new Promise(function(_0x1340df,_0x16c72d){var _0xb10f09=[];var _0x5e88e9=_0x210c2d[_0x2661('0x4d')];if(_0x5e88e9&&_0x5e88e9[_0x2661('0xc')]>0x0){_0xb10f09=_['map'](_0x5e88e9,_0x2661('0x4e'));}if(_0xb10f09[_0x2661('0xc')]>0x0){return manageTags(_0x1015cb,_0xb10f09,_0x4f4d5d,_0x48dde4,_0x373005,_0x43dc9a,_0x5228fd)[_0x2661('0xa')](function(){_0x1340df(_0x373005);});}else{_0x1340df(_0x373005);}});};}function emit(_0x33979f,_0x278909,_0x18ed5f){var _0x51c544=_0x2661('0x4f')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x2661('0x50');var _0x4d03a4={'uri':_0x33979f+_0x2661('0x51')+_0x18ed5f+_0x51c544};io['to'](util[_0x2661('0x52')]('user:%s',_0x278909))[_0x2661('0x53')]('trigger:browser:url',_0x4d03a4);}exports['cs']=function(_0x466532,_0x2f62c3,_0x1d8335,_0x16b413,_0x841f85,_0x5758c4,_0x36fb71,_0x3e8e38){var _0x2a6931={};var _0x17b884={'user':_0x5758c4['username'],'pass':_0x5758c4[_0x2661('0x54')]};var _0x29f0a9=_0x2661('0x55');var _0x437e1f=_0x2661('0x56');_0x5758c4[_0x2661('0x57')]=intUtil[_0x2661('0x58')](_0x5758c4['remoteUri']);_0x5758c4[_0x2661('0x59')]=intUtil[_0x2661('0x58')](_0x5758c4[_0x2661('0x59')]);var _0x305624=util[_0x2661('0x52')](_0x2661('0x5a'),_0x5758c4[_0x2661('0x57')]);_0x2a6931[_0x2661('0x14')]=!_['isNil'](_0x16b413)?_0x16b413[_0x2661('0x5b')]:null;_0x2a6931[_0x2661('0x1c')]=_0x5758c4['email'];_0x2a6931['endUserNumber']=_0x3e8e38[_0x2661('0x31')]()===_0x2661('0x38')?_0x2f62c3[_0x2661('0x5c')]:_0x2f62c3[_0x2661('0x5d')];_0x2a6931[_0x2661('0x5e')]=_0x3e8e38==='queue'||_0x3e8e38===_0x2661('0x5f')?_0x2661('0x60'):_0x2661('0x38');var _0x35d9fd=util[_0x2661('0x52')](_0x2661('0x61'),_0x5758c4[_0x2661('0x59')],_0x2f62c3[_0x2661('0x62')],md5(_0x2f62c3[_0x2661('0x62')]));if(_0x841f85&&_0x841f85[_0x2661('0x63')]){logger[_0x2661('0x11')]('[QUEUE]',_0x2661('0x64'));_0x2f62c3[_0x2661('0x65')]=_0x35d9fd;}else if(_0x36fb71&&_0x36fb71[_0x2661('0x66')]&&_0x36fb71[_0x2661('0x66')]!=='none'){logger[_0x2661('0x11')](_0x2661('0x67'),_0x2661('0x64'));_0x2f62c3[_0x2661('0x65')]=_0x35d9fd;}else{_0x2f62c3[_0x2661('0x65')]='';}return getAdminUser(_0x3e8e38,_0x17b884,_0x2a6931,_0x305624,_0x437e1f,_0x29f0a9)[_0x2661('0xa')](getUser(_0x3e8e38,_0x17b884,_0x305624,_0x437e1f,_0x29f0a9))[_0x2661('0xa')](getEndUser(_0x3e8e38,_0x17b884,_0x305624,_0x437e1f,_0x29f0a9))[_0x2661('0xa')](getTicket(_0x3e8e38,_0x17b884,_0x305624,_0x1d8335,_0x2f62c3,_0x437e1f))[_0x2661('0xa')](function(_0x379b0d){logger[_0x2661('0x11')](util[_0x2661('0x52')](_0x2661('0x68'),_0x379b0d[_0x2661('0x3f')]));logger[_0x2661('0x11')](util[_0x2661('0x52')]('call\x20direction:\x20%s',_0x3e8e38));if(_0x3e8e38!==_0x2661('0x5f')){logger[_0x2661('0x11')]('['+[_0x3e8e38[_0x2661('0xe')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x5758c4[_0x2661('0x57')],_0x16b413[_0x2661('0x4e')],_0x379b0d[_0x2661('0x3f')]);}})['catch'](function(_0x3c5409){logger[_0x2661('0x1f')]('['+[_0x3e8e38[_0x2661('0xe')]()]+_0x2661('0x69'),util[_0x2661('0x6a')](_0x3c5409,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 999e932..59b16d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf042=['recordingFormat','none','[OUTBOUND]','destcalleridname','Outbound','Ticket\x20created!','version','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','error','unmanaged','lastevent','toUpperCase','calleridname','bluebird','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','localhost','socket.io-emitter','info','Creating\x20new\x20ticket...','name','getString','assigned_user_id','description','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_type','Contacts','parent_name','direction','forEach','variableName','idField','set_entry','JSON','stringify','Calls','Basic\x20%s','apiKey','toString','base64','isNil','get_entry_list','format','user_name','then','entry_list','find','name_value_list','value','Agent\x20found!','resolve','user_id','Searching\x20enduser\x20with\x20phone','phone_home','length','Enduser\x20found!','first_name','<unknown>','Enduser\x20created.','[HTTP]','merge','map','type','string','customField','content','custom_fields','push','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','The\x20Ticket\x20ID\x20is:','users','contacts','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','user:%s','trigger:browser:url','catch','outbound'];(function(_0x5eca64,_0x50654c){var _0x4572e3=function(_0x56b468){while(--_0x56b468){_0x5eca64['push'](_0x5eca64['shift']());}};_0x4572e3(++_0x50654c);}(_0xf042,0x7f));var _0x2f04=function(_0xab58d7,_0x74046b){_0xab58d7=_0xab58d7-0x0;var _0x3e9425=_0xf042[_0xab58d7];return _0x3e9425;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x2f04('0x0'));var md5=require('md5');var util=require(_0x2f04('0x1'));var Redis=require(_0x2f04('0x2'));var intUtil=require(_0x2f04('0x3'));var config=require(_0x2f04('0x4'));var logger=require('../../../../config/logger')(_0x2f04('0x5'));config[_0x2f04('0x6')]=_['defaults'](config[_0x2f04('0x6')],{'host':_0x2f04('0x7'),'port':0x18eb});var io=require(_0x2f04('0x8'))(new Redis(config['redis']));var def={'method':'POST','json':!![]};function emit(_0x2f917f,_0x128969,_0x11cc3a){io['to'](_0x2f917f)['emit'](_0x128969,_0x11cc3a);}function getTicket(_0x3902ca,_0x29ece5,_0x5e06f8,_0x3a5d11,_0x114264,_0x265af2,_0x5ea396,_0x502c74){logger[_0x2f04('0x9')](_0x2f04('0xa'));var _0x19cf55=new Date();var _0x528f45=[{'name':_0x2f04('0xb'),'value':intUtil[_0x2f04('0xc')](_0x3a5d11['Subjects'],_0x114264,'\x20')},{'name':_0x2f04('0xd'),'value':_0x29ece5['id']},{'name':'created_by','value':_0x29ece5['id']},{'name':_0x2f04('0xe'),'value':intUtil[_0x2f04('0xc')](_0x3a5d11['Descriptions'],_0x114264,'\x0a')},{'name':_0x2f04('0xf'),'value':_0x19cf55[_0x2f04('0x10')]()[_0x2f04('0x11')](0x0,0x13)[_0x2f04('0x12')]('T','\x20')},{'name':_0x2f04('0x13'),'value':'0'},{'name':_0x2f04('0x14'),'value':'15'},{'name':'parent_id','value':_0x5e06f8['id']},{'name':_0x2f04('0x15'),'value':_0x2f04('0x16')},{'name':_0x2f04('0x17'),'value':_0x5e06f8[_0x2f04('0xb')]},{'name':_0x2f04('0x18'),'value':_0x502c74}];if(_0x265af2['length']){_[_0x2f04('0x19')](_0x265af2,function(_0x565d1d){if(_0x114264[_0x565d1d[_0x2f04('0x1a')]]){_0x528f45['push']({'name':_0x565d1d[_0x2f04('0x1b')],'value':_0x114264[_0x565d1d[_0x2f04('0x1a')]]});}});}return request({'form':{'method':_0x2f04('0x1c'),'input_type':_0x2f04('0x1d'),'response_type':_0x2f04('0x1d'),'rest_data':JSON[_0x2f04('0x1e')]({'session':_0x5ea396['id'],'module_name':_0x2f04('0x1f'),'name_value_list':_0x528f45})}});}function getAuth(_0x1e1035){return util['format'](_0x2f04('0x20'),new Buffer(_0x1e1035[_0x2f04('0x21')]+':X')[_0x2f04('0x22')](_0x2f04('0x23')));}function getServerInfo(_0x1fe2b0){return request({'form':{'method':'get_server_info','input_type':_0x2f04('0x1d'),'response_type':'JSON','rest_data':JSON[_0x2f04('0x1e')]({'session':_0x1fe2b0['id']})}});}function getUser(_0x1a8781,_0x20f0a3,_0x4ce82d){if(!_[_0x2f04('0x24')](_0x20f0a3)){logger[_0x2f04('0x9')]('Getting\x20agent\x20with\x20name',_0x20f0a3);return request({'form':{'method':_0x2f04('0x25'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x2f04('0x1e')]({'session':_0x4ce82d['id'],'module_name':'Employees','query':util[_0x2f04('0x26')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x20f0a3),'order_by':'','offset':'0','select_fields':['id',_0x2f04('0xb'),_0x2f04('0x27')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2f04('0x28')](function(_0x11d6ff){if(_0x11d6ff[_0x2f04('0x29')]['length']){var _0x1cfc95=_[_0x2f04('0x2a')](_0x11d6ff[_0x2f04('0x29')],function(_0x3972bc){return _0x3972bc[_0x2f04('0x2b')]['user_name'][_0x2f04('0x2c')]===_0x20f0a3;});if(_0x1cfc95){logger[_0x2f04('0x9')](_0x2f04('0x2d'));return BPromise[_0x2f04('0x2e')]({'id':_0x1cfc95[_0x2f04('0x2b')]['id']['value'],'name':_0x1cfc95[_0x2f04('0x2b')][_0x2f04('0xb')][_0x2f04('0x2c')]});}}logger[_0x2f04('0x9')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x2f04('0x2e')]({'id':_0x4ce82d['name_value_list'][_0x2f04('0x2f')][_0x2f04('0x2c')],'name':_0x4ce82d['name_value_list'][_0x2f04('0x27')][_0x2f04('0x2c')]});});}else{logger[_0x2f04('0x9')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x4ce82d[_0x2f04('0x2b')][_0x2f04('0x2f')][_0x2f04('0x2c')],'name':_0x4ce82d[_0x2f04('0x2b')][_0x2f04('0x27')]['value']});}}function getEndUser(_0x5a4da9,_0x2bbf64,_0x5813b7,_0x106c65){logger['info'](_0x2f04('0x30'),_0x5813b7);return request({'form':{'method':_0x2f04('0x25'),'input_type':_0x2f04('0x1d'),'response_type':_0x2f04('0x1d'),'rest_data':JSON[_0x2f04('0x1e')]({'session':_0x106c65['id'],'module_name':_0x2f04('0x16'),'query':util[_0x2f04('0x26')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x5813b7),'order_by':'','offset':'0','select_fields':['id','name',_0x2f04('0x31')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2f04('0x28')](function(_0x1d89f0){if(_0x1d89f0[_0x2f04('0x29')][_0x2f04('0x32')]){var _0x225f27=_[_0x2f04('0x2a')](_0x1d89f0['entry_list'],function(_0x107051){return _0x107051[_0x2f04('0x2b')][_0x2f04('0x31')][_0x2f04('0x2c')]===_0x5813b7;});if(_0x225f27){logger[_0x2f04('0x9')](_0x2f04('0x33'));return BPromise['resolve']({'id':_0x225f27[_0x2f04('0x2b')]['id'][_0x2f04('0x2c')],'name':_0x225f27['name_value_list'][_0x2f04('0xb')][_0x2f04('0x2c')],'phone':_0x225f27['name_value_list'][_0x2f04('0x31')][_0x2f04('0x2c')]});}}else{logger[_0x2f04('0x9')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x2f04('0x1d'),'response_type':'JSON','rest_data':JSON[_0x2f04('0x1e')]({'session':_0x106c65['id'],'module_name':'Contacts','name_value_list':[{'name':_0x2f04('0x34'),'value':_0x2bbf64!==_0x2f04('0x35')?_0x2bbf64:util[_0x2f04('0x26')]('Caller\x20-\x20%s',_0x5813b7)},{'name':_0x2f04('0x31'),'value':_0x5813b7}]})}})[_0x2f04('0x28')](function(_0x40c1c9){logger['info'](_0x2f04('0x36'));return BPromise[_0x2f04('0x2e')]({'id':_0x40c1c9['id'],'name':_0x40c1c9[_0x2f04('0x29')]['first_name'][_0x2f04('0x2c')],'phone':_0x40c1c9['entry_list'][_0x2f04('0x31')][_0x2f04('0x2c')]});});}});}function request(_0x1e3e30){logger['debug'](_0x2f04('0x37'),JSON[_0x2f04('0x1e')](_0x1e3e30));return rp(_[_0x2f04('0x38')](def,_0x1e3e30));}function getTags(_0x5f4299,_0x1a5b67){var _0x3d01e4=[];if(_0x5f4299&&_0x5f4299['length']>0x0){_0x3d01e4=_[_0x2f04('0x39')](_0x5f4299,_0x1a5b67);}return _0x3d01e4;}function getCustomFields(_0x4ab02f,_0xf48880){var _0x5cb3ef=[];var _0x77d95c={'custom_fields':[]};if(_0x4ab02f[_0x2f04('0x32')]>0x0){_['forEach'](_0x4ab02f,function(_0x33e192){if(_0x33e192[_0x2f04('0x3a')]===_0x2f04('0x3b')&&_0x33e192['nameField']&&!_0x33e192[_0x2f04('0x3c')]){_0x77d95c[_0x33e192['nameField']['toLowerCase']()]=_0x33e192[_0x2f04('0x3d')][_0x2f04('0x22')]();}else if(_0x33e192[_0x2f04('0x3a')]===_0x2f04('0x3b')&&_0x33e192[_0x2f04('0x1b')]&&_0x33e192[_0x2f04('0x3c')]){_0x77d95c[_0x2f04('0x3e')]['push']({'id':_0x33e192['idField'],'value':_0x33e192[_0x2f04('0x3d')][_0x2f04('0x22')]()});}else if(_0x33e192[_0x2f04('0x3a')]==='variable'&&_0x33e192['variableName']&&_0x33e192[_0x2f04('0x1b')]&&_0x33e192[_0x2f04('0x3c')]){_0xf48880[_0x33e192['variableName']]&&_0x77d95c[_0x2f04('0x3e')][_0x2f04('0x3f')]({'id':_0x33e192[_0x2f04('0x1b')],'value':_0xf48880[_0x33e192['variableName']]['toString']()});}else if(_0x33e192[_0x2f04('0x3a')]===_0x2f04('0x40')&&_0x33e192[_0x2f04('0x41')]&&_0x33e192[_0x2f04('0x41')][_0x2f04('0xb')]&&_0x33e192['idField']&&_0x33e192['customField']){_0xf48880[_0x33e192[_0x2f04('0x41')][_0x2f04('0xb')]['toLowerCase']()]&&_0x77d95c[_0x2f04('0x3e')]['push']({'id':_0x33e192['idField'],'value':_0xf48880[_0x33e192['Variable'][_0x2f04('0xb')]['toLowerCase']()][_0x2f04('0x22')]()});}});}return _0x77d95c;}function getConnection(_0x4d8729){return request({'method':'POST','form':{'method':_0x2f04('0x42'),'input_type':_0x2f04('0x1d'),'response_type':_0x2f04('0x1d'),'rest_data':JSON[_0x2f04('0x1e')]({'user_auth':{'user_name':_0x4d8729[_0x2f04('0x43')],'password':_0x4d8729[_0x2f04('0x44')],'encryption':_0x2f04('0x45')},'application':_0x2f04('0x46')})}})[_0x2f04('0x28')](function(_0x4a0477){var _0x3d792a=_0x4a0477;if(_0x3d792a['id']){def[_0x2f04('0x47')]=_0x3d792a['id'];return BPromise[_0x2f04('0x2e')](_0x3d792a);}else{throw new Error(util['format'](_0x2f04('0x48'),_0x4d8729['id']));}});}function setRelationship(_0x2a0b77,_0x5d3d25,_0x330768,_0x1e6a96){return request({'form':{'method':_0x2f04('0x49'),'input_type':'JSON','response_type':_0x2f04('0x1d'),'rest_data':JSON[_0x2f04('0x1e')]({'session':_0x2a0b77['id'],'module_name':_0x2f04('0x1f'),'module_id':_0x330768['id'],'link_field_name':_0x1e6a96,'related_ids':[_0x5d3d25['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x2f04('0x4a')]=function(_0x3d2543,_0x3c9781,_0x2db8a4,_0x444393,_0x513e67,_0x32b58a){var _0x6fe564,_0x41fbc0,_0x1b46a1,_0x375bb6;_0x32b58a[_0x2f04('0x4b')]=intUtil[_0x2f04('0x4c')](_0x32b58a['remoteUri']);_0x32b58a[_0x2f04('0x4d')]=intUtil['stripTrailingSlash'](_0x32b58a[_0x2f04('0x4d')]);def[_0x2f04('0x4e')]=util[_0x2f04('0x26')](_0x2f04('0x4f'),_0x32b58a[_0x2f04('0x4b')]);if(_0x513e67&&_0x513e67[_0x2f04('0x50')]){logger[_0x2f04('0x9')](_0x2f04('0x51'),_0x2f04('0x52'));_0x3c9781['recordingURL']=util[_0x2f04('0x26')](_0x2f04('0x53'),_0x32b58a[_0x2f04('0x4d')],_0x3c9781[_0x2f04('0x54')],md5(_0x3c9781[_0x2f04('0x54')]));}else{_0x3c9781[_0x2f04('0x55')]='';}return getConnection(_0x32b58a)['then'](function(_0x149181){_0x375bb6=_0x149181;return getUser(_0x32b58a,_0x444393[_0x2f04('0xb')],_0x375bb6);})['then'](function(_0x5d4622){_0x6fe564=_0x5d4622;logger['info'](_0x2f04('0x56'),_0x6fe564['id']);return getEndUser(_0x32b58a,_0x3c9781['calleridname'],_0x3c9781[_0x2f04('0x57')],_0x375bb6);})['then'](function(_0xd695a8){_0x41fbc0=_0xd695a8;logger[_0x2f04('0x9')](_0x2f04('0x58'),_0x41fbc0['id']);return getTicket(_0x32b58a,_0x6fe564,_0x41fbc0,_0x2db8a4,_0x3c9781,_0x2db8a4[_0x2f04('0x59')],_0x375bb6,_0x2f04('0x5a'));})[_0x2f04('0x28')](function(_0x58d161){_0x1b46a1=_0x58d161;logger[_0x2f04('0x9')]('Ticket\x20created!');logger[_0x2f04('0x9')](_0x2f04('0x5b'),_0x1b46a1['id']);return setRelationship(_0x375bb6,_0x6fe564,_0x1b46a1,_0x2f04('0x5c'));})[_0x2f04('0x28')](function(){return setRelationship(_0x375bb6,_0x41fbc0,_0x1b46a1,_0x2f04('0x5d'));})['then'](function(){return getServerInfo(_0x375bb6);})[_0x2f04('0x28')](function(_0x3a6fb){var _0x1d97db=parseInt(_0x3a6fb['version'][_0x2f04('0x5e')](0x0));var _0x5edc17=util[_0x2f04('0x26')](_0x2f04('0x5f'),_0x32b58a['remoteUri'],_0x1b46a1['id']);if(_0x1d97db>0x6){_0x5edc17=util[_0x2f04('0x26')](_0x2f04('0x60'),_0x32b58a[_0x2f04('0x4b')],_0x1b46a1['id']);}logger[_0x2f04('0x9')](_0x2f04('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2f04('0x26')](_0x2f04('0x61'),_0x444393[_0x2f04('0xb')]),_0x2f04('0x62'),{'uri':_0x5edc17});})[_0x2f04('0x63')](function(_0x4e9a03){logger['error'](_0x2f04('0x51'),JSON['stringify'](_0x4e9a03));});};exports[_0x2f04('0x64')]=function(_0x3e970c,_0x667d34,_0x155e35,_0x38177d,_0x315d2b,_0x100374,_0x342947){var _0x2eb694,_0x1e2240,_0x272a4c,_0x352091;_0x100374[_0x2f04('0x4b')]=intUtil[_0x2f04('0x4c')](_0x100374[_0x2f04('0x4b')]);_0x100374[_0x2f04('0x4d')]=intUtil['stripTrailingSlash'](_0x100374[_0x2f04('0x4d')]);def[_0x2f04('0x4e')]=util[_0x2f04('0x26')](_0x2f04('0x4f'),_0x100374[_0x2f04('0x4b')]);if(_0x342947&&_0x342947[_0x2f04('0x65')]&&_0x342947[_0x2f04('0x65')]!==_0x2f04('0x66')){logger['info'](_0x2f04('0x67'),_0x2f04('0x52'));_0x667d34['recordingURL']=util[_0x2f04('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x100374[_0x2f04('0x4d')],_0x667d34[_0x2f04('0x54')],md5(_0x667d34['uniqueid']));}return getConnection(_0x100374)['then'](function(_0x401910){_0x352091=_0x401910;return getUser(_0x100374,_0x38177d['name'],_0x352091);})[_0x2f04('0x28')](function(_0x522b85){_0x2eb694=_0x522b85;logger[_0x2f04('0x9')]('The\x20User\x20ID\x20is:',_0x2eb694['id']);return getEndUser(_0x100374,_0x667d34[_0x2f04('0x68')],_0x667d34['destcalleridnum'],_0x352091);})['then'](function(_0x22ad77){_0x1e2240=_0x22ad77;logger[_0x2f04('0x9')](_0x2f04('0x58'),_0x1e2240['id']);return getTicket(_0x100374,_0x2eb694,_0x1e2240,_0x155e35,_0x667d34,_0x155e35[_0x2f04('0x59')],_0x352091,_0x2f04('0x69'));})[_0x2f04('0x28')](function(_0x4530d4){_0x272a4c=_0x4530d4;logger[_0x2f04('0x9')](_0x2f04('0x6a'));logger[_0x2f04('0x9')](_0x2f04('0x5b'),_0x272a4c['id']);return setRelationship(_0x352091,_0x2eb694,_0x272a4c,_0x2f04('0x5c'));})[_0x2f04('0x28')](function(){return setRelationship(_0x352091,_0x1e2240,_0x272a4c,'contacts');})[_0x2f04('0x28')](function(){return getServerInfo(_0x352091);})[_0x2f04('0x28')](function(_0x2cfbad){var _0x5e7f40=parseInt(_0x2cfbad[_0x2f04('0x6b')]['charAt'](0x0));var _0x4250ba=util[_0x2f04('0x26')](_0x2f04('0x5f'),_0x100374[_0x2f04('0x4b')],_0x272a4c['id']);if(_0x5e7f40>0x6){_0x4250ba=util[_0x2f04('0x26')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x100374[_0x2f04('0x4b')],_0x272a4c['id']);}logger['info'](_0x2f04('0x67'),_0x2f04('0x6c'));emit(util['format'](_0x2f04('0x61'),_0x38177d[_0x2f04('0xb')]),'trigger:browser:url',{'uri':_0x4250ba});})['catch'](function(_0x317d5f){logger[_0x2f04('0x6d')](_0x2f04('0x67'),JSON[_0x2f04('0x1e')](_0x317d5f));});};exports[_0x2f04('0x6e')]=function(_0x17be6f,_0x4f0949,_0x235f68,_0x9519a4,_0x7d7dda,_0xbc114c){var _0x1e52ca,_0x380e5d,_0x8ce6c8,_0x4cfce0;_0xbc114c[_0x2f04('0x4b')]=intUtil[_0x2f04('0x4c')](_0xbc114c[_0x2f04('0x4b')]);_0xbc114c[_0x2f04('0x4d')]=intUtil[_0x2f04('0x4c')](_0xbc114c[_0x2f04('0x4d')]);def[_0x2f04('0x4e')]=util[_0x2f04('0x26')](_0x2f04('0x4f'),_0xbc114c[_0x2f04('0x4b')]);if(_0x7d7dda&&_0x7d7dda[_0x2f04('0x50')]){logger['info']('['+_0x4f0949[_0x2f04('0x6f')][_0x2f04('0x70')]()+']','Recording\x20is\x20enabled!');_0x4f0949[_0x2f04('0x55')]=util[_0x2f04('0x26')](_0x2f04('0x53'),_0xbc114c[_0x2f04('0x4d')],_0x4f0949['uniqueid'],md5(_0x4f0949[_0x2f04('0x54')]));}else{_0x4f0949[_0x2f04('0x55')]='';}return getConnection(_0xbc114c)['then'](function(_0x3aff83){_0x4cfce0=_0x3aff83;if(!_[_0x2f04('0x24')](_0x9519a4)){return getUser(_0xbc114c,_0x9519a4['name'],_0x4cfce0);}else{return getUser(_0xbc114c,null,_0x4cfce0);}})['then'](function(_0x328569){_0x1e52ca=_0x328569;logger[_0x2f04('0x9')](_0x2f04('0x56'),_0x1e52ca['id']);return getEndUser(_0xbc114c,_0x4f0949[_0x2f04('0x71')],_0x4f0949['calleridnum'],_0x4cfce0);})[_0x2f04('0x28')](function(_0x2bf510){_0x380e5d=_0x2bf510;logger['info'](_0x2f04('0x58'),_0x380e5d['id']);return getTicket(_0xbc114c,_0x1e52ca,_0x380e5d,_0x235f68,_0x4f0949,_0x235f68[_0x2f04('0x59')],_0x4cfce0,_0x2f04('0x5a'));})[_0x2f04('0x28')](function(_0x5750f0){_0x8ce6c8=_0x5750f0;logger[_0x2f04('0x9')](_0x2f04('0x6a'));logger[_0x2f04('0x9')]('The\x20Ticket\x20ID\x20is:',_0x8ce6c8['id']);return setRelationship(_0x4cfce0,_0x1e52ca,_0x8ce6c8,_0x2f04('0x5c'));})[_0x2f04('0x28')](function(){return setRelationship(_0x4cfce0,_0x380e5d,_0x8ce6c8,_0x2f04('0x5d'));})[_0x2f04('0x28')](function(){return getServerInfo(_0x4cfce0);})[_0x2f04('0x63')](function(_0x56c02a){logger[_0x2f04('0x6d')]('['+_0x4f0949['lastevent'][_0x2f04('0x70')]()+']',JSON[_0x2f04('0x1e')](_0x56c02a));});};
\ No newline at end of file
+var _0x6626=['info','Creating\x20new\x20ticket...','getString','Subjects','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','name','direction','length','forEach','variableName','push','idField','JSON','stringify','format','Basic\x20%s','apiKey','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','user_name','then','find','name_value_list','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','entry_list','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','customField','nameField','toLowerCase','content','toString','type','string','custom_fields','variable','customVariable','Variable','POST','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','Outbound','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','error','unmanaged','%s/service/v4_1/rest.php','toUpperCase','lastevent','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','localhost','socket.io-emitter','emit'];(function(_0x182bb8,_0x3bebd4){var _0x2e6d33=function(_0x1ac4a6){while(--_0x1ac4a6){_0x182bb8['push'](_0x182bb8['shift']());}};_0x2e6d33(++_0x3bebd4);}(_0x6626,0xf1));var _0x6662=function(_0x542031,_0x24d795){_0x542031=_0x542031-0x0;var _0x4d43fc=_0x6626[_0x542031];return _0x4d43fc;};'use strict';var _=require(_0x6662('0x0'));var rp=require(_0x6662('0x1'));var BPromise=require(_0x6662('0x2'));var md5=require('md5');var util=require(_0x6662('0x3'));var Redis=require(_0x6662('0x4'));var intUtil=require(_0x6662('0x5'));var config=require(_0x6662('0x6'));var logger=require(_0x6662('0x7'))(_0x6662('0x8'));config[_0x6662('0x9')]=_['defaults'](config['redis'],{'host':_0x6662('0xa'),'port':0x18eb});var io=require(_0x6662('0xb'))(new Redis(config['redis']));var def={'method':'POST','json':!![]};function emit(_0x41bc1b,_0x40c529,_0xafd55d){io['to'](_0x41bc1b)[_0x6662('0xc')](_0x40c529,_0xafd55d);}function getTicket(_0x5e6506,_0x5e2a2e,_0x207a52,_0x5cf5ce,_0x48a4b1,_0x23b6cd,_0x4d730e,_0x4bda33){logger[_0x6662('0xd')](_0x6662('0xe'));var _0x350a74=new Date();var _0x4bb2cf=[{'name':'name','value':intUtil[_0x6662('0xf')](_0x5cf5ce[_0x6662('0x10')],_0x48a4b1,'\x20')},{'name':'assigned_user_id','value':_0x5e2a2e['id']},{'name':'created_by','value':_0x5e2a2e['id']},{'name':'description','value':intUtil[_0x6662('0xf')](_0x5cf5ce['Descriptions'],_0x48a4b1,'\x0a')},{'name':_0x6662('0x11'),'value':_0x350a74[_0x6662('0x12')]()[_0x6662('0x13')](0x0,0x13)[_0x6662('0x14')]('T','\x20')},{'name':_0x6662('0x15'),'value':'0'},{'name':_0x6662('0x16'),'value':'15'},{'name':_0x6662('0x17'),'value':_0x207a52['id']},{'name':_0x6662('0x18'),'value':_0x6662('0x19')},{'name':_0x6662('0x1a'),'value':_0x207a52[_0x6662('0x1b')]},{'name':_0x6662('0x1c'),'value':_0x4bda33}];if(_0x23b6cd[_0x6662('0x1d')]){_[_0x6662('0x1e')](_0x23b6cd,function(_0x3d7b44){if(_0x48a4b1[_0x3d7b44[_0x6662('0x1f')]]){_0x4bb2cf[_0x6662('0x20')]({'name':_0x3d7b44[_0x6662('0x21')],'value':_0x48a4b1[_0x3d7b44[_0x6662('0x1f')]]});}});}return request({'form':{'method':'set_entry','input_type':_0x6662('0x22'),'response_type':_0x6662('0x22'),'rest_data':JSON[_0x6662('0x23')]({'session':_0x4d730e['id'],'module_name':'Calls','name_value_list':_0x4bb2cf})}});}function getAuth(_0x563bda){return util[_0x6662('0x24')](_0x6662('0x25'),new Buffer(_0x563bda[_0x6662('0x26')]+':X')['toString']('base64'));}function getServerInfo(_0x317a70){return request({'form':{'method':_0x6662('0x27'),'input_type':_0x6662('0x22'),'response_type':_0x6662('0x22'),'rest_data':JSON[_0x6662('0x23')]({'session':_0x317a70['id']})}});}function getUser(_0x322bd1,_0x4835d0,_0x3caedd){if(!_[_0x6662('0x28')](_0x4835d0)){logger[_0x6662('0xd')](_0x6662('0x29'),_0x4835d0);return request({'form':{'method':_0x6662('0x2a'),'input_type':'JSON','response_type':_0x6662('0x22'),'rest_data':JSON[_0x6662('0x23')]({'session':_0x3caedd['id'],'module_name':_0x6662('0x2b'),'query':util[_0x6662('0x24')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x4835d0),'order_by':'','offset':'0','select_fields':['id',_0x6662('0x1b'),_0x6662('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x6662('0x2d')](function(_0x1d4a0e){if(_0x1d4a0e['entry_list'][_0x6662('0x1d')]){var _0x34c2f7=_[_0x6662('0x2e')](_0x1d4a0e['entry_list'],function(_0x2578dc){return _0x2578dc[_0x6662('0x2f')]['user_name'][_0x6662('0x30')]===_0x4835d0;});if(_0x34c2f7){logger[_0x6662('0xd')]('Agent\x20found!');return BPromise['resolve']({'id':_0x34c2f7[_0x6662('0x2f')]['id'][_0x6662('0x30')],'name':_0x34c2f7['name_value_list'][_0x6662('0x1b')][_0x6662('0x30')]});}}logger[_0x6662('0xd')](_0x6662('0x31'));return BPromise[_0x6662('0x32')]({'id':_0x3caedd['name_value_list'][_0x6662('0x33')][_0x6662('0x30')],'name':_0x3caedd[_0x6662('0x2f')]['user_name'][_0x6662('0x30')]});});}else{logger['info']('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x6662('0x32')]({'id':_0x3caedd['name_value_list'][_0x6662('0x33')][_0x6662('0x30')],'name':_0x3caedd[_0x6662('0x2f')]['user_name'][_0x6662('0x30')]});}}function getEndUser(_0xaf5c74,_0xfc1a50,_0x354577,_0x386463){logger['info'](_0x6662('0x34'),_0x354577);return request({'form':{'method':_0x6662('0x2a'),'input_type':'JSON','response_type':_0x6662('0x22'),'rest_data':JSON[_0x6662('0x23')]({'session':_0x386463['id'],'module_name':_0x6662('0x19'),'query':util[_0x6662('0x24')](_0x6662('0x35'),_0x354577),'order_by':'','offset':'0','select_fields':['id','name',_0x6662('0x36')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x43868f){if(_0x43868f[_0x6662('0x37')][_0x6662('0x1d')]){var _0x4e62fc=_[_0x6662('0x2e')](_0x43868f[_0x6662('0x37')],function(_0x23f199){return _0x23f199['name_value_list'][_0x6662('0x36')][_0x6662('0x30')]===_0x354577;});if(_0x4e62fc){logger[_0x6662('0xd')](_0x6662('0x38'));return BPromise[_0x6662('0x32')]({'id':_0x4e62fc[_0x6662('0x2f')]['id'][_0x6662('0x30')],'name':_0x4e62fc[_0x6662('0x2f')][_0x6662('0x1b')][_0x6662('0x30')],'phone':_0x4e62fc[_0x6662('0x2f')][_0x6662('0x36')][_0x6662('0x30')]});}}else{logger['info'](_0x6662('0x39'));return request({'form':{'method':_0x6662('0x3a'),'input_type':_0x6662('0x22'),'response_type':_0x6662('0x22'),'rest_data':JSON[_0x6662('0x23')]({'session':_0x386463['id'],'module_name':_0x6662('0x19'),'name_value_list':[{'name':_0x6662('0x3b'),'value':_0xfc1a50!==_0x6662('0x3c')?_0xfc1a50:util[_0x6662('0x24')](_0x6662('0x3d'),_0x354577)},{'name':_0x6662('0x36'),'value':_0x354577}]})}})[_0x6662('0x2d')](function(_0x27b0c0){logger['info'](_0x6662('0x3e'));return BPromise[_0x6662('0x32')]({'id':_0x27b0c0['id'],'name':_0x27b0c0[_0x6662('0x37')][_0x6662('0x3b')][_0x6662('0x30')],'phone':_0x27b0c0['entry_list'][_0x6662('0x36')][_0x6662('0x30')]});});}});}function request(_0x4ec655){logger[_0x6662('0x3f')](_0x6662('0x40'),JSON[_0x6662('0x23')](_0x4ec655));return rp(_[_0x6662('0x41')](def,_0x4ec655));}function getTags(_0x117eda,_0x1ec494){var _0x4f4080=[];if(_0x117eda&&_0x117eda['length']>0x0){_0x4f4080=_[_0x6662('0x42')](_0x117eda,_0x1ec494);}return _0x4f4080;}function getCustomFields(_0x3123bc,_0x4a6956){var _0x8e0e5=[];var _0x1f3d49={'custom_fields':[]};if(_0x3123bc[_0x6662('0x1d')]>0x0){_['forEach'](_0x3123bc,function(_0x272225){if(_0x272225['type']==='string'&&_0x272225['nameField']&&!_0x272225[_0x6662('0x43')]){_0x1f3d49[_0x272225[_0x6662('0x44')][_0x6662('0x45')]()]=_0x272225[_0x6662('0x46')][_0x6662('0x47')]();}else if(_0x272225[_0x6662('0x48')]===_0x6662('0x49')&&_0x272225[_0x6662('0x21')]&&_0x272225['customField']){_0x1f3d49[_0x6662('0x4a')][_0x6662('0x20')]({'id':_0x272225[_0x6662('0x21')],'value':_0x272225[_0x6662('0x46')][_0x6662('0x47')]()});}else if(_0x272225[_0x6662('0x48')]===_0x6662('0x4b')&&_0x272225[_0x6662('0x1f')]&&_0x272225[_0x6662('0x21')]&&_0x272225[_0x6662('0x43')]){_0x4a6956[_0x272225[_0x6662('0x1f')]]&&_0x1f3d49[_0x6662('0x4a')]['push']({'id':_0x272225[_0x6662('0x21')],'value':_0x4a6956[_0x272225['variableName']][_0x6662('0x47')]()});}else if(_0x272225[_0x6662('0x48')]===_0x6662('0x4c')&&_0x272225[_0x6662('0x4d')]&&_0x272225['Variable']['name']&&_0x272225[_0x6662('0x21')]&&_0x272225['customField']){_0x4a6956[_0x272225['Variable'][_0x6662('0x1b')][_0x6662('0x45')]()]&&_0x1f3d49[_0x6662('0x4a')][_0x6662('0x20')]({'id':_0x272225['idField'],'value':_0x4a6956[_0x272225['Variable']['name'][_0x6662('0x45')]()][_0x6662('0x47')]()});}});}return _0x1f3d49;}function getConnection(_0x150171){return request({'method':_0x6662('0x4e'),'form':{'method':_0x6662('0x4f'),'input_type':_0x6662('0x22'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x150171['username'],'password':_0x150171[_0x6662('0x50')],'encryption':_0x6662('0x51')},'application':_0x6662('0x52')})}})[_0x6662('0x2d')](function(_0x3d12db){var _0x3d2434=_0x3d12db;if(_0x3d2434['id']){def[_0x6662('0x53')]=_0x3d2434['id'];return BPromise[_0x6662('0x32')](_0x3d2434);}else{throw new Error(util[_0x6662('0x24')](_0x6662('0x54'),_0x150171['id']));}});}function setRelationship(_0x2d6fbd,_0xdd6ad1,_0x3d8560,_0x2bce21){return request({'form':{'method':_0x6662('0x55'),'input_type':_0x6662('0x22'),'response_type':_0x6662('0x22'),'rest_data':JSON[_0x6662('0x23')]({'session':_0x2d6fbd['id'],'module_name':'Calls','module_id':_0x3d8560['id'],'link_field_name':_0x2bce21,'related_ids':[_0xdd6ad1['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x6662('0x56')]=function(_0x4cb6e6,_0xa094,_0x1eb9e4,_0xb2852e,_0x4b4864,_0x1e68ae){var _0x459091,_0x1e7762,_0x1f09f2,_0x5e0023;_0x1e68ae[_0x6662('0x57')]=intUtil[_0x6662('0x58')](_0x1e68ae[_0x6662('0x57')]);_0x1e68ae['serverUrl']=intUtil['stripTrailingSlash'](_0x1e68ae[_0x6662('0x59')]);def[_0x6662('0x5a')]=util[_0x6662('0x24')]('%s/service/v4_1/rest.php',_0x1e68ae[_0x6662('0x57')]);if(_0x4b4864&&_0x4b4864[_0x6662('0x5b')]){logger[_0x6662('0xd')](_0x6662('0x5c'),_0x6662('0x5d'));_0xa094[_0x6662('0x5e')]=util[_0x6662('0x24')](_0x6662('0x5f'),_0x1e68ae[_0x6662('0x59')],_0xa094[_0x6662('0x60')],md5(_0xa094[_0x6662('0x60')]));}else{_0xa094[_0x6662('0x5e')]='';}return getConnection(_0x1e68ae)[_0x6662('0x2d')](function(_0x245fba){_0x5e0023=_0x245fba;return getUser(_0x1e68ae,_0xb2852e[_0x6662('0x1b')],_0x5e0023);})['then'](function(_0x3d5b7f){_0x459091=_0x3d5b7f;logger[_0x6662('0xd')](_0x6662('0x61'),_0x459091['id']);return getEndUser(_0x1e68ae,_0xa094[_0x6662('0x62')],_0xa094[_0x6662('0x63')],_0x5e0023);})['then'](function(_0x438445){_0x1e7762=_0x438445;logger[_0x6662('0xd')](_0x6662('0x64'),_0x1e7762['id']);return getTicket(_0x1e68ae,_0x459091,_0x1e7762,_0x1eb9e4,_0xa094,_0x1eb9e4['Fields'],_0x5e0023,_0x6662('0x65'));})[_0x6662('0x2d')](function(_0x4e0a2e){_0x1f09f2=_0x4e0a2e;logger[_0x6662('0xd')](_0x6662('0x66'));logger['info'](_0x6662('0x67'),_0x1f09f2['id']);return setRelationship(_0x5e0023,_0x459091,_0x1f09f2,_0x6662('0x68'));})[_0x6662('0x2d')](function(){return setRelationship(_0x5e0023,_0x1e7762,_0x1f09f2,_0x6662('0x69'));})[_0x6662('0x2d')](function(){return getServerInfo(_0x5e0023);})[_0x6662('0x2d')](function(_0xf94711){var _0x573af3=parseInt(_0xf94711[_0x6662('0x6a')][_0x6662('0x6b')](0x0));var _0x404d04=util['format'](_0x6662('0x6c'),_0x1e68ae[_0x6662('0x57')],_0x1f09f2['id']);if(_0x573af3>0x6){_0x404d04=util[_0x6662('0x24')](_0x6662('0x6d'),_0x1e68ae[_0x6662('0x57')],_0x1f09f2['id']);}logger[_0x6662('0xd')](_0x6662('0x5c'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x6662('0x24')](_0x6662('0x6e'),_0xb2852e[_0x6662('0x1b')]),_0x6662('0x6f'),{'uri':_0x404d04});})[_0x6662('0x70')](function(_0x29c87b){logger['error'](_0x6662('0x5c'),JSON[_0x6662('0x23')](_0x29c87b));});};exports[_0x6662('0x71')]=function(_0x4064ec,_0x5a5e8a,_0x598b5e,_0x35afed,_0x47e95c,_0x36bbd8,_0x5c5e49){var _0x4dddbc,_0x371a52,_0x4487b3,_0x3a2f52;_0x36bbd8[_0x6662('0x57')]=intUtil[_0x6662('0x58')](_0x36bbd8[_0x6662('0x57')]);_0x36bbd8['serverUrl']=intUtil[_0x6662('0x58')](_0x36bbd8[_0x6662('0x59')]);def[_0x6662('0x5a')]=util['format']('%s/service/v4_1/rest.php',_0x36bbd8['remoteUri']);if(_0x5c5e49&&_0x5c5e49[_0x6662('0x72')]&&_0x5c5e49[_0x6662('0x72')]!==_0x6662('0x73')){logger['info'](_0x6662('0x74'),_0x6662('0x5d'));_0x5a5e8a[_0x6662('0x5e')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x36bbd8[_0x6662('0x59')],_0x5a5e8a[_0x6662('0x60')],md5(_0x5a5e8a[_0x6662('0x60')]));}return getConnection(_0x36bbd8)['then'](function(_0x5b5cf8){_0x3a2f52=_0x5b5cf8;return getUser(_0x36bbd8,_0x35afed['name'],_0x3a2f52);})[_0x6662('0x2d')](function(_0x3e8c90){_0x4dddbc=_0x3e8c90;logger[_0x6662('0xd')]('The\x20User\x20ID\x20is:',_0x4dddbc['id']);return getEndUser(_0x36bbd8,_0x5a5e8a[_0x6662('0x75')],_0x5a5e8a[_0x6662('0x76')],_0x3a2f52);})[_0x6662('0x2d')](function(_0x3fb017){_0x371a52=_0x3fb017;logger[_0x6662('0xd')](_0x6662('0x64'),_0x371a52['id']);return getTicket(_0x36bbd8,_0x4dddbc,_0x371a52,_0x598b5e,_0x5a5e8a,_0x598b5e[_0x6662('0x77')],_0x3a2f52,_0x6662('0x78'));})[_0x6662('0x2d')](function(_0x3ec498){_0x4487b3=_0x3ec498;logger[_0x6662('0xd')](_0x6662('0x66'));logger[_0x6662('0xd')](_0x6662('0x67'),_0x4487b3['id']);return setRelationship(_0x3a2f52,_0x4dddbc,_0x4487b3,_0x6662('0x68'));})[_0x6662('0x2d')](function(){return setRelationship(_0x3a2f52,_0x371a52,_0x4487b3,'contacts');})[_0x6662('0x2d')](function(){return getServerInfo(_0x3a2f52);})[_0x6662('0x2d')](function(_0x715f35){var _0x1e80b9=parseInt(_0x715f35[_0x6662('0x6a')][_0x6662('0x6b')](0x0));var _0x570551=util[_0x6662('0x24')](_0x6662('0x6c'),_0x36bbd8[_0x6662('0x57')],_0x4487b3['id']);if(_0x1e80b9>0x6){_0x570551=util[_0x6662('0x24')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x36bbd8[_0x6662('0x57')],_0x4487b3['id']);}logger[_0x6662('0xd')]('[OUTBOUND]',_0x6662('0x79'));emit(util[_0x6662('0x24')]('user:%s',_0x35afed[_0x6662('0x1b')]),_0x6662('0x6f'),{'uri':_0x570551});})[_0x6662('0x70')](function(_0x340531){logger[_0x6662('0x7a')](_0x6662('0x74'),JSON[_0x6662('0x23')](_0x340531));});};exports[_0x6662('0x7b')]=function(_0x154d17,_0x205526,_0x3a2b4b,_0x52872e,_0x55faa8,_0x189200){var _0xe54e04,_0xd6fb17,_0x5bfbf1,_0x16e504;_0x189200['remoteUri']=intUtil[_0x6662('0x58')](_0x189200[_0x6662('0x57')]);_0x189200['serverUrl']=intUtil['stripTrailingSlash'](_0x189200[_0x6662('0x59')]);def[_0x6662('0x5a')]=util[_0x6662('0x24')](_0x6662('0x7c'),_0x189200['remoteUri']);if(_0x55faa8&&_0x55faa8[_0x6662('0x5b')]){logger[_0x6662('0xd')]('['+_0x205526['lastevent'][_0x6662('0x7d')]()+']',_0x6662('0x5d'));_0x205526['recordingURL']=util['format'](_0x6662('0x5f'),_0x189200[_0x6662('0x59')],_0x205526['uniqueid'],md5(_0x205526[_0x6662('0x60')]));}else{_0x205526[_0x6662('0x5e')]='';}return getConnection(_0x189200)[_0x6662('0x2d')](function(_0x471676){_0x16e504=_0x471676;if(!_[_0x6662('0x28')](_0x52872e)){return getUser(_0x189200,_0x52872e[_0x6662('0x1b')],_0x16e504);}else{return getUser(_0x189200,null,_0x16e504);}})[_0x6662('0x2d')](function(_0x3bea86){_0xe54e04=_0x3bea86;logger['info'](_0x6662('0x61'),_0xe54e04['id']);return getEndUser(_0x189200,_0x205526[_0x6662('0x62')],_0x205526[_0x6662('0x63')],_0x16e504);})[_0x6662('0x2d')](function(_0x5f0469){_0xd6fb17=_0x5f0469;logger[_0x6662('0xd')](_0x6662('0x64'),_0xd6fb17['id']);return getTicket(_0x189200,_0xe54e04,_0xd6fb17,_0x3a2b4b,_0x205526,_0x3a2b4b[_0x6662('0x77')],_0x16e504,'Inbound');})[_0x6662('0x2d')](function(_0x6b2953){_0x5bfbf1=_0x6b2953;logger[_0x6662('0xd')](_0x6662('0x66'));logger[_0x6662('0xd')](_0x6662('0x67'),_0x5bfbf1['id']);return setRelationship(_0x16e504,_0xe54e04,_0x5bfbf1,'users');})[_0x6662('0x2d')](function(){return setRelationship(_0x16e504,_0xd6fb17,_0x5bfbf1,_0x6662('0x69'));})[_0x6662('0x2d')](function(){return getServerInfo(_0x16e504);})['catch'](function(_0x34a530){logger['error']('['+_0x205526[_0x6662('0x7e')][_0x6662('0x7d')]()+']',JSON[_0x6662('0x23')](_0x34a530));});};
\ No newline at end of file
index 3a5cad5..ab982e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e1b=['keyType','format','toLowerCase','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','lodash','getString','length','push','content','type','variable','variableName','toString','customVariable','Variable','name','keyValue','string','key','%s:\x20%s','keyContent'];(function(_0x1961fa,_0x32cc37){var _0x529575=function(_0x5800c1){while(--_0x5800c1){_0x1961fa['push'](_0x1961fa['shift']());}};_0x529575(++_0x32cc37);}(_0x1e1b,0x1dd));var _0xb1e1=function(_0x34b821,_0x504e55){_0x34b821=_0x34b821-0x0;var _0x5e00a0=_0x1e1b[_0x34b821];return _0x5e00a0;};'use strict';var _=require(_0xb1e1('0x0'));var util=require('util');exports[_0xb1e1('0x1')]=function(_0xebd1d,_0xda65fa,_0x232dc7){var _0x57b6b=[];if(_0xebd1d['length']>0x0){var _0x55b307=_['sortBy'](_0xebd1d,['id']);for(var _0x527ef8=0x0;_0x527ef8<_0x55b307[_0xb1e1('0x2')];_0x527ef8++){var _0x4d814b=_0x55b307[_0x527ef8];if(_0x4d814b['type']==='string'){_0x57b6b[_0xb1e1('0x3')](_0x4d814b[_0xb1e1('0x4')]);}else if(_0x4d814b[_0xb1e1('0x5')]===_0xb1e1('0x6')&&_0x4d814b[_0xb1e1('0x7')]){_0xda65fa[_0x4d814b[_0xb1e1('0x7')]]&&_0x57b6b[_0xb1e1('0x3')](_0xda65fa[_0x4d814b[_0xb1e1('0x7')]][_0xb1e1('0x8')]());}else if(_0x4d814b[_0xb1e1('0x5')]===_0xb1e1('0x9')&&_0x4d814b[_0xb1e1('0xa')]&&_0x4d814b[_0xb1e1('0xa')][_0xb1e1('0xb')]){_0xda65fa[_0x4d814b['Variable'][_0xb1e1('0xb')]['toLowerCase']()]&&_0x57b6b[_0xb1e1('0x3')](_0xda65fa[_0x4d814b[_0xb1e1('0xa')][_0xb1e1('0xb')]['toLowerCase']()][_0xb1e1('0x8')]());}else if(_0x4d814b[_0xb1e1('0x5')]===_0xb1e1('0xc')){if(_0x4d814b['keyType']===_0xb1e1('0xd')&&_0x4d814b[_0xb1e1('0xe')]){_0x57b6b[_0xb1e1('0x3')](util['format'](_0xb1e1('0xf'),_0x4d814b[_0xb1e1('0xe')],_0x4d814b[_0xb1e1('0x10')]));}else if(_0x4d814b[_0xb1e1('0x11')]===_0xb1e1('0x6')&&_0x4d814b[_0xb1e1('0x7')]&&_0x4d814b[_0xb1e1('0xe')]){_0xda65fa[_0x4d814b[_0xb1e1('0x7')]]&&_0x57b6b[_0xb1e1('0x3')](util[_0xb1e1('0x12')](_0xb1e1('0xf'),_0x4d814b[_0xb1e1('0xe')],_0xda65fa[_0x4d814b[_0xb1e1('0x7')]]));}else if(_0x4d814b[_0xb1e1('0x11')]==='customVariable'&&_0x4d814b[_0xb1e1('0xa')]&&_0x4d814b[_0xb1e1('0xa')][_0xb1e1('0xb')]&&_0x4d814b[_0xb1e1('0xe')]){_0xda65fa[_0x4d814b[_0xb1e1('0xa')]['name'][_0xb1e1('0x13')]()]&&_0x57b6b['push'](util[_0xb1e1('0x12')](_0xb1e1('0xf'),_0x4d814b[_0xb1e1('0xe')],_0xda65fa[_0x4d814b[_0xb1e1('0xa')][_0xb1e1('0xb')]['toLowerCase']()]));}}}}return _0x57b6b[_0xb1e1('0x14')](_0x232dc7);};exports[_0xb1e1('0x15')]=function(_0x4a9cd6){var _0xfed0a0=_0x4a9cd6[_0xb1e1('0x16')](-0x1);if(_0xfed0a0==='/'){_0x4a9cd6=_0x4a9cd6[_0xb1e1('0x17')](0x0,_0x4a9cd6[_0xb1e1('0x18')](_0xfed0a0));}return _0x4a9cd6;};exports[_0xb1e1('0x19')]=function(_0x5ebaa7){if(!_['isNil'](_0x5ebaa7)&&_0x5ebaa7!==''){var _0x12e847=/^(([^<>()\[\]\\.,;:\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 _0x12e847['test'](String(_0x5ebaa7)[_0xb1e1('0x13')]());}else{return![];}};
\ No newline at end of file
+var _0x8efe=['stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','lodash','util','getString','sortBy','length','push','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','key','%s:\x20%s','keyContent','keyType','format','join'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x8efe,0x12e));var _0xe8ef=function(_0x3afd56,_0x10dade){_0x3afd56=_0x3afd56-0x0;var _0x2cbf17=_0x8efe[_0x3afd56];return _0x2cbf17;};'use strict';var _=require(_0xe8ef('0x0'));var util=require(_0xe8ef('0x1'));exports[_0xe8ef('0x2')]=function(_0x6a7796,_0x26c2a5,_0x57eacb){var _0x3478b3=[];if(_0x6a7796['length']>0x0){var _0x519eaa=_[_0xe8ef('0x3')](_0x6a7796,['id']);for(var _0x4eec81=0x0;_0x4eec81<_0x519eaa[_0xe8ef('0x4')];_0x4eec81++){var _0xa82023=_0x519eaa[_0x4eec81];if(_0xa82023['type']==='string'){_0x3478b3[_0xe8ef('0x5')](_0xa82023[_0xe8ef('0x6')]);}else if(_0xa82023[_0xe8ef('0x7')]===_0xe8ef('0x8')&&_0xa82023[_0xe8ef('0x9')]){_0x26c2a5[_0xa82023[_0xe8ef('0x9')]]&&_0x3478b3[_0xe8ef('0x5')](_0x26c2a5[_0xa82023[_0xe8ef('0x9')]][_0xe8ef('0xa')]());}else if(_0xa82023[_0xe8ef('0x7')]===_0xe8ef('0xb')&&_0xa82023[_0xe8ef('0xc')]&&_0xa82023[_0xe8ef('0xc')][_0xe8ef('0xd')]){_0x26c2a5[_0xa82023[_0xe8ef('0xc')][_0xe8ef('0xd')][_0xe8ef('0xe')]()]&&_0x3478b3[_0xe8ef('0x5')](_0x26c2a5[_0xa82023['Variable'][_0xe8ef('0xd')][_0xe8ef('0xe')]()][_0xe8ef('0xa')]());}else if(_0xa82023[_0xe8ef('0x7')]===_0xe8ef('0xf')){if(_0xa82023['keyType']==='string'&&_0xa82023[_0xe8ef('0x10')]){_0x3478b3['push'](util['format'](_0xe8ef('0x11'),_0xa82023['key'],_0xa82023[_0xe8ef('0x12')]));}else if(_0xa82023[_0xe8ef('0x13')]===_0xe8ef('0x8')&&_0xa82023['variableName']&&_0xa82023[_0xe8ef('0x10')]){_0x26c2a5[_0xa82023[_0xe8ef('0x9')]]&&_0x3478b3[_0xe8ef('0x5')](util[_0xe8ef('0x14')](_0xe8ef('0x11'),_0xa82023[_0xe8ef('0x10')],_0x26c2a5[_0xa82023[_0xe8ef('0x9')]]));}else if(_0xa82023[_0xe8ef('0x13')]===_0xe8ef('0xb')&&_0xa82023[_0xe8ef('0xc')]&&_0xa82023[_0xe8ef('0xc')][_0xe8ef('0xd')]&&_0xa82023[_0xe8ef('0x10')]){_0x26c2a5[_0xa82023[_0xe8ef('0xc')]['name']['toLowerCase']()]&&_0x3478b3[_0xe8ef('0x5')](util[_0xe8ef('0x14')](_0xe8ef('0x11'),_0xa82023[_0xe8ef('0x10')],_0x26c2a5[_0xa82023[_0xe8ef('0xc')]['name']['toLowerCase']()]));}}}}return _0x3478b3[_0xe8ef('0x15')](_0x57eacb);};exports[_0xe8ef('0x16')]=function(_0xa62c2e){var _0x1acef5=_0xa62c2e[_0xe8ef('0x17')](-0x1);if(_0x1acef5==='/'){_0xa62c2e=_0xa62c2e[_0xe8ef('0x18')](0x0,_0xa62c2e[_0xe8ef('0x19')](_0x1acef5));}return _0xa62c2e;};exports[_0xe8ef('0x1a')]=function(_0x374ceb){if(!_['isNil'](_0x374ceb)&&_0x374ceb!==''){var _0x31aa44=/^(([^<>()\[\]\\.,;:\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 _0x31aa44['test'](String(_0x374ceb)[_0xe8ef('0xe')]());}else{return![];}};
\ No newline at end of file
index 206bf64..b21823b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','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','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x2965d6,_0x4f3c54){var _0x122ef7=function(_0x3f31a6){while(--_0x3f31a6){_0x2965d6['push'](_0x2965d6['shift']());}};_0x122ef7(++_0x4f3c54);}(_0xe706,0xa3));var _0x6e70=function(_0x4828f3,_0x5774b6){_0x4828f3=_0x4828f3-0x0;var _0x8a2a6=_0xe706[_0x4828f3];return _0x8a2a6;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
+var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x4ccb18,_0x399be0){var _0x32adfd=function(_0xbf6cd1){while(--_0xbf6cd1){_0x4ccb18['push'](_0x4ccb18['shift']());}};_0x32adfd(++_0x399be0);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index a6fad9f..85965ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44f=['validateEmail','Getting\x20agent\x20with\x20email','remoteUri','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','then','Searching\x20enduser\x20with\x20phone','%s/search.json','results','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','password','%s:%s','username','authType','token','Basic\x20%s','toString','base64','debug','[HTTP]','forEach','includes','string','picklist','type','nameField','customField','idField','custom_fields','push','content','variable','variableName','Variable','name','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','%s/agent/tickets/%s','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','emit','info','Creating\x20new\x20ticket...','format','POST','merge','getString','Subjects','Descriptions','Fields','Ticket\x20created!'];(function(_0x3478e2,_0x142647){var _0x10ebc9=function(_0x24f80d){while(--_0x24f80d){_0x3478e2['push'](_0x3478e2['shift']());}};_0x10ebc9(++_0x142647);}(_0xb44f,0xbf));var _0xfb44=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb44f[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xfb44('0x0'));var rp=require(_0xfb44('0x1'));var md5=require(_0xfb44('0x2'));var util=require(_0xfb44('0x3'));var Redis=require(_0xfb44('0x4'));var intUtil=require(_0xfb44('0x5'));var config=require(_0xfb44('0x6'));var logger=require(_0xfb44('0x7'))(_0xfb44('0x8'));config[_0xfb44('0x9')]=_[_0xfb44('0xa')](config[_0xfb44('0x9')],{'host':_0xfb44('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0xd4866e,_0x58e1a8,_0x2c27b4){io['to'](_0xd4866e)[_0xfb44('0xc')](_0x58e1a8,_0x2c27b4);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getTicket(_0x3fd28c,_0x480a0f,_0x4165f6,_0x3fb4a9,_0x413a0d){logger[_0xfb44('0xd')](_0xfb44('0xe'));return request({'uri':util[_0xfb44('0xf')]('%s/tickets.json',_0x3fd28c['remoteUri']),'method':_0xfb44('0x10'),'body':{'ticket':_[_0xfb44('0x11')]({'requester_id':_0x4165f6['id'],'submitter_id':_0x480a0f?_0x480a0f['id']:undefined,'assignee_id':_0x480a0f?_0x480a0f['id']:undefined,'tags':getTags(_0x3fb4a9['Tags'],'name'),'subject':intUtil[_0xfb44('0x12')](_0x3fb4a9[_0xfb44('0x13')],_0x413a0d,'\x20'),'description':intUtil[_0xfb44('0x12')](_0x3fb4a9[_0xfb44('0x14')],_0x413a0d,'\x0a'),'comment':{'public':![],'body':intUtil[_0xfb44('0x12')](_0x3fb4a9[_0xfb44('0x14')],_0x413a0d,'\x0a')}},getCustomFields(_0x3fb4a9[_0xfb44('0x15')],_0x413a0d))}})['then'](function(_0x4630a7){logger[_0xfb44('0xd')](_0xfb44('0x16'));return _0x4630a7['ticket'];});}function getUser(_0x212f58,_0x52cab2){if(intUtil[_0xfb44('0x17')](_0x52cab2)){logger['info'](_0xfb44('0x18'),_0x52cab2);return request({'uri':util[_0xfb44('0xf')]('%s/search.json',_0x212f58[_0xfb44('0x19')]),'qs':{'query':util[_0xfb44('0xf')]('type:user\x20role:agent\x20email:%s',_0x52cab2)}})['then'](function(_0x32effc){if(_0x32effc['count']){logger[_0xfb44('0xd')](_0xfb44('0x1a'));return _[_0xfb44('0x1b')](_0x32effc['results'],{'email':_0x52cab2,'role':_0xfb44('0x1c')});}else{logger[_0xfb44('0xd')](_0xfb44('0x1d'));return request({'uri':util[_0xfb44('0xf')]('%s/users/me.json',_0x212f58[_0xfb44('0x19')])})['then'](function(_0x5525d2){logger[_0xfb44('0xd')](_0xfb44('0x1e'));return _0x5525d2[_0xfb44('0x1f')];});}});}else{logger[_0xfb44('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xfb44('0x20'),_0x212f58[_0xfb44('0x19')])})[_0xfb44('0x21')](function(_0x271adc){logger[_0xfb44('0xd')](_0xfb44('0x1e'));return _0x271adc['user'];});}}function getEndUser(_0x354818,_0x5a370e,_0x5bd9bd){logger['info'](_0xfb44('0x22'),_0x5bd9bd);return request({'uri':util['format'](_0xfb44('0x23'),_0x354818['remoteUri']),'qs':{'query':util[_0xfb44('0xf')]('type:user\x20role:end-user\x20phone:%s',_0x5bd9bd)}})[_0xfb44('0x21')](function(_0x2a7621){var _0x45bad8;if(_0x2a7621[_0xfb44('0x24')][_0xfb44('0x25')]){_0x2a7621[_0xfb44('0x24')]=_[_0xfb44('0x26')](_0x2a7621['results'],{'suspended':![],'role':_0xfb44('0x27')});if(_0x2a7621['results'][_0xfb44('0x25')]){_0x45bad8=_[_0xfb44('0x28')](_0x2a7621['results']);}}if(_0x45bad8){logger[_0xfb44('0xd')]('Enduser\x20found!');return _0x45bad8;}else{logger['info'](_0xfb44('0x29'));return request({'uri':util[_0xfb44('0xf')]('%s/users.json',_0x354818[_0xfb44('0x19')]),'method':_0xfb44('0x10'),'body':{'user':{'role':_0xfb44('0x27'),'name':util['format']('Caller\x20-\x20%s',_0x5a370e||_0x5bd9bd),'phone':_0x5bd9bd}}})[_0xfb44('0x21')](function(_0x4818a2){logger['info'](_0xfb44('0x2a'));return _0x4818a2[_0xfb44('0x1f')];});}});}function getAuth(_0x440ab7){var _0x56eac7;if(_0x440ab7['authType']===_0xfb44('0x2b')){_0x56eac7=util[_0xfb44('0xf')](_0xfb44('0x2c'),_0x440ab7[_0xfb44('0x2d')],_0x440ab7[_0xfb44('0x2b')]);}else if(_0x440ab7[_0xfb44('0x2e')]===_0xfb44('0x2f')){_0x56eac7=util[_0xfb44('0xf')]('%s/token:%s',_0x440ab7['username'],_0x440ab7['token']);}return util[_0xfb44('0xf')](_0xfb44('0x30'),new Buffer(_0x56eac7)[_0xfb44('0x31')](_0xfb44('0x32')));}function request(_0x174dd1){logger[_0xfb44('0x33')](_0xfb44('0x34'),JSON['stringify'](_0x174dd1));return rp(_['defaults'](_0x174dd1,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x27b1f3,_0x5e24f9){var _0x504d5d=[];if(_0x27b1f3&&_0x27b1f3[_0xfb44('0x25')]>0x0){_0x504d5d=_['map'](_0x27b1f3,_0x5e24f9);}return _0x504d5d;}function getCustomFields(_0x3bc9bc,_0x16d302){var _0xdcef0=[];var _0x324812={'custom_fields':[]};if(_0x3bc9bc[_0xfb44('0x25')]>0x0){_[_0xfb44('0x35')](_0x3bc9bc,function(_0x2211a4){if(_[_0xfb44('0x36')]([_0xfb44('0x37'),_0xfb44('0x38')],_0x2211a4[_0xfb44('0x39')])&&_0x2211a4[_0xfb44('0x3a')]&&!_0x2211a4[_0xfb44('0x3b')]){_0x324812[_0x2211a4[_0xfb44('0x3a')]['toLowerCase']()]=_0x2211a4['content'][_0xfb44('0x31')]();}else if(_[_0xfb44('0x36')]([_0xfb44('0x37'),_0xfb44('0x38')],_0x2211a4[_0xfb44('0x39')])&&_0x2211a4[_0xfb44('0x3c')]&&_0x2211a4['customField']){_0x324812[_0xfb44('0x3d')][_0xfb44('0x3e')]({'id':_0x2211a4[_0xfb44('0x3c')],'value':_0x2211a4[_0xfb44('0x3f')][_0xfb44('0x31')]()});}else if(_0x2211a4[_0xfb44('0x39')]===_0xfb44('0x40')&&_0x2211a4[_0xfb44('0x41')]&&_0x2211a4[_0xfb44('0x3c')]&&_0x2211a4[_0xfb44('0x3b')]){_0x16d302[_0x2211a4['variableName']]&&_0x324812[_0xfb44('0x3d')][_0xfb44('0x3e')]({'id':_0x2211a4[_0xfb44('0x3c')],'value':_0x16d302[_0x2211a4[_0xfb44('0x41')]][_0xfb44('0x31')]()});}else if(_0x2211a4['type']==='customVariable'&&_0x2211a4[_0xfb44('0x42')]&&_0x2211a4[_0xfb44('0x42')][_0xfb44('0x43')]&&_0x2211a4[_0xfb44('0x3c')]&&_0x2211a4[_0xfb44('0x3b')]){_0x16d302[_0x2211a4['Variable'][_0xfb44('0x43')][_0xfb44('0x44')]()]&&_0x324812[_0xfb44('0x3d')][_0xfb44('0x3e')]({'id':_0x2211a4['idField'],'value':_0x16d302[_0x2211a4[_0xfb44('0x42')][_0xfb44('0x43')][_0xfb44('0x44')]()][_0xfb44('0x31')]()});}});}return _0x324812;}exports[_0xfb44('0x45')]=function(_0x27909b,_0xa5f68f,_0x4d10b9,_0x377561,_0x3374e0,_0x59a57b){var _0x4b5af0,_0x4a92e0;_0x59a57b[_0xfb44('0x19')]=intUtil['stripTrailingSlash'](_0x59a57b[_0xfb44('0x19')]);_0x59a57b[_0xfb44('0x46')]=intUtil[_0xfb44('0x47')](_0x59a57b[_0xfb44('0x46')]);if(_0x3374e0&&_0x3374e0[_0xfb44('0x48')]){logger[_0xfb44('0xd')](_0xfb44('0x49'),_0xfb44('0x4a'));_0xa5f68f[_0xfb44('0x4b')]=util['format'](_0xfb44('0x4c'),_0x59a57b[_0xfb44('0x46')],_0xa5f68f[_0xfb44('0x4d')],md5(_0xa5f68f['uniqueid']));}else{_0xa5f68f[_0xfb44('0x4b')]='';}headers['Authorization']=getAuth(_0x59a57b);return getUser(_0x59a57b,_0x377561[_0xfb44('0x4e')])[_0xfb44('0x21')](function(_0xced53d){_0x4b5af0=_0xced53d;logger[_0xfb44('0xd')]('The\x20User\x20ID\x20is:',_0x4b5af0['id']);return getEndUser(_0x59a57b,_0xa5f68f[_0xfb44('0x4f')],_0xa5f68f[_0xfb44('0x50')]);})[_0xfb44('0x21')](function(_0xf4c96c){_0x4a92e0=_0xf4c96c;logger['info'](_0xfb44('0x51'),_0x4a92e0['id']);return getTicket(_0x59a57b,_0x4b5af0,_0x4a92e0,_0x4d10b9,_0xa5f68f);})[_0xfb44('0x21')](function(_0xbec83c){if(_0xbec83c){logger[_0xfb44('0xd')]('The\x20Ticket\x20ID\x20is:',_0xbec83c['id']);switch(_0x59a57b[_0xfb44('0x39')]){case _0xfb44('0x52'):logger[_0xfb44('0xd')](_0xfb44('0x49'),_0xfb44('0x53'));return request({'uri':util[_0xfb44('0xf')](_0xfb44('0x54'),_0x59a57b[_0xfb44('0x19')],_0x4b5af0['id'],_0xbec83c['id']),'method':'POST'});case _0xfb44('0x55'):logger['info'](_0xfb44('0x49'),_0xfb44('0x56'));emit(util[_0xfb44('0xf')]('user:%s',_0x377561[_0xfb44('0x43')]),_0xfb44('0x57'),{'uri':util[_0xfb44('0xf')]('%s/agent/tickets/%s',_0x59a57b[_0xfb44('0x19')][_0xfb44('0x58')](_0xfb44('0x59'),''),_0xbec83c['id'])});break;default:logger[_0xfb44('0x5a')](_0xfb44('0x49'),_0xfb44('0x5b'));}}})[_0xfb44('0x5c')](function(_0x2e09dd){logger[_0xfb44('0x5a')](_0xfb44('0x5d'),util[_0xfb44('0x5e')](_0x2e09dd,{'showHidden':!![],'depth':null}));});};exports[_0xfb44('0x5f')]=function(_0x652477,_0x161a0d,_0x312148,_0x157a1c,_0x23ad79,_0x3f239c,_0x2ed9c9){var _0x4282f6,_0x3ee6dc;_0x3f239c[_0xfb44('0x19')]=intUtil[_0xfb44('0x47')](_0x3f239c['remoteUri']);_0x3f239c[_0xfb44('0x46')]=intUtil['stripTrailingSlash'](_0x3f239c[_0xfb44('0x46')]);if(_0x2ed9c9&&_0x2ed9c9[_0xfb44('0x60')]&&_0x2ed9c9['recordingFormat']!==_0xfb44('0x61')){logger[_0xfb44('0xd')](_0xfb44('0x62'),_0xfb44('0x4a'));_0x161a0d['recordingURL']=util[_0xfb44('0xf')](_0xfb44('0x4c'),_0x3f239c[_0xfb44('0x46')],_0x161a0d[_0xfb44('0x4d')],md5(_0x161a0d[_0xfb44('0x4d')]));}headers['Authorization']=getAuth(_0x3f239c);return getUser(_0x3f239c,_0x157a1c[_0xfb44('0x4e')])[_0xfb44('0x21')](function(_0x58d434){_0x4282f6=_0x58d434;logger['info'](_0xfb44('0x63'),_0x4282f6['id']);return getEndUser(_0x3f239c,_0x161a0d['destcalleridname'],_0x161a0d['destcalleridnum']);})[_0xfb44('0x21')](function(_0x15e8c0){_0x3ee6dc=_0x15e8c0;logger[_0xfb44('0xd')](_0xfb44('0x51'),_0x3ee6dc['id']);return getTicket(_0x3f239c,_0x4282f6,_0x3ee6dc,_0x312148,_0x161a0d);})[_0xfb44('0x21')](function(_0x1c3bfb){if(_0x1c3bfb){logger[_0xfb44('0xd')](_0xfb44('0x64'),_0x1c3bfb['id']);switch(_0x3f239c[_0xfb44('0x39')]){case _0xfb44('0x52'):logger[_0xfb44('0xd')](_0xfb44('0x62'),_0xfb44('0x53'));return request({'uri':util[_0xfb44('0xf')](_0xfb44('0x54'),_0x3f239c[_0xfb44('0x19')],_0x4282f6['id'],_0x1c3bfb['id']),'method':_0xfb44('0x10')});case _0xfb44('0x55'):logger['info']('[OUTBOUND]',_0xfb44('0x56'));emit(util['format'](_0xfb44('0x65'),_0x157a1c[_0xfb44('0x43')]),_0xfb44('0x57'),{'uri':util[_0xfb44('0xf')](_0xfb44('0x66'),_0x3f239c[_0xfb44('0x19')]['replace'](_0xfb44('0x59'),''),_0x1c3bfb['id'])});break;default:logger[_0xfb44('0x5a')](_0xfb44('0x62'),_0xfb44('0x5b'));}}})[_0xfb44('0x5c')](function(_0x3a0ca3){logger['error']('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xfb44('0x5e')](_0x3a0ca3,{'showHidden':!![],'depth':null}));});};exports[_0xfb44('0x67')]=function(_0x529a12,_0x358d8d,_0x28d8b0,_0x21eb81,_0x1ffcce,_0xd6d09){var _0x450c42,_0x1e44c7;_0xd6d09['remoteUri']=intUtil[_0xfb44('0x47')](_0xd6d09[_0xfb44('0x19')]);_0xd6d09[_0xfb44('0x46')]=intUtil[_0xfb44('0x47')](_0xd6d09[_0xfb44('0x46')]);if(_0x1ffcce&&_0x1ffcce[_0xfb44('0x48')]){logger[_0xfb44('0xd')]('['+_0x358d8d[_0xfb44('0x68')][_0xfb44('0x69')]()+']',_0xfb44('0x4a'));_0x358d8d[_0xfb44('0x4b')]=util['format'](_0xfb44('0x4c'),_0xd6d09[_0xfb44('0x46')],_0x358d8d[_0xfb44('0x4d')],md5(_0x358d8d['uniqueid']));}else{_0x358d8d['recordingURL']='';}headers['Authorization']=getAuth(_0xd6d09);return getUser(_0xd6d09)[_0xfb44('0x21')](function(_0x5843dd){_0x450c42=_0x5843dd;logger[_0xfb44('0xd')]('The\x20User\x20ID\x20is:',_0x450c42['id']);return getEndUser(_0xd6d09,_0x358d8d[_0xfb44('0x4f')],_0x358d8d[_0xfb44('0x50')]);})[_0xfb44('0x21')](function(_0x55241b){_0x1e44c7=_0x55241b;logger[_0xfb44('0xd')](_0xfb44('0x51'),_0x1e44c7['id']);return getTicket(_0xd6d09,_0x450c42,_0x1e44c7,_0x28d8b0,_0x358d8d);})[_0xfb44('0x21')](function(_0x9535bc){if(_0x9535bc){logger[_0xfb44('0xd')](_0xfb44('0x64'),_0x9535bc['id']);}})[_0xfb44('0x5c')](function(_0x5506a6){logger[_0xfb44('0x5a')]('['+_0x358d8d['lastevent'][_0xfb44('0x69')]()+']'+_0xfb44('0x6a'),util[_0xfb44('0x5e')](_0x5506a6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xe5cb=['[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','trigger:browser:url','/api/v2','catch','inspect','unmanaged','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','then','info','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','count','Agent\x20found!','find','results','%s/users/me.json','Admin\x20account\x20selected.','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','filter','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','password','%s:%s','username','authType','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes','picklist','type','nameField','toLowerCase','string','idField','push','variable','variableName','customField','customVariable','Variable','custom_fields','queue','serverUrl','stripTrailingSlash'];(function(_0x32e90a,_0x565578){var _0x1a3daa=function(_0x205fd2){while(--_0x205fd2){_0x32e90a['push'](_0x32e90a['shift']());}};_0x1a3daa(++_0x565578);}(_0xe5cb,0x1e4));var _0xbe5c=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xe5cb[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require(_0xbe5c('0x0'));var rp=require(_0xbe5c('0x1'));var md5=require(_0xbe5c('0x2'));var util=require(_0xbe5c('0x3'));var Redis=require(_0xbe5c('0x4'));var intUtil=require(_0xbe5c('0x5'));var config=require('../../../../config/environment');var logger=require(_0xbe5c('0x6'))(_0xbe5c('0x7'));config['redis']=_[_0xbe5c('0x8')](config[_0xbe5c('0x9')],{'host':_0xbe5c('0xa'),'port':0x18eb});var io=require(_0xbe5c('0xb'))(new Redis(config['redis']));function emit(_0x256785,_0x23766c,_0x190dcb){io['to'](_0x256785)[_0xbe5c('0xc')](_0x23766c,_0x190dcb);}var headers={'Content-Type':_0xbe5c('0xd'),'Accept':_0xbe5c('0xd')};function getTicket(_0x14e154,_0x5c3d09,_0x422892,_0x2e651c,_0x5c463a){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util['format'](_0xbe5c('0xe'),_0x14e154[_0xbe5c('0xf')]),'method':_0xbe5c('0x10'),'body':{'ticket':_[_0xbe5c('0x11')]({'requester_id':_0x422892['id'],'submitter_id':_0x5c3d09?_0x5c3d09['id']:undefined,'assignee_id':_0x5c3d09?_0x5c3d09['id']:undefined,'tags':getTags(_0x2e651c[_0xbe5c('0x12')],_0xbe5c('0x13')),'subject':intUtil[_0xbe5c('0x14')](_0x2e651c[_0xbe5c('0x15')],_0x5c463a,'\x20'),'description':intUtil[_0xbe5c('0x14')](_0x2e651c['Descriptions'],_0x5c463a,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x2e651c[_0xbe5c('0x16')],_0x5c463a,'\x0a')}},getCustomFields(_0x2e651c['Fields'],_0x5c463a))}})[_0xbe5c('0x17')](function(_0x3dd955){logger[_0xbe5c('0x18')](_0xbe5c('0x19'));return _0x3dd955['ticket'];});}function getUser(_0x4d2921,_0x58ecee){if(intUtil[_0xbe5c('0x1a')](_0x58ecee)){logger[_0xbe5c('0x18')](_0xbe5c('0x1b'),_0x58ecee);return request({'uri':util[_0xbe5c('0x1c')](_0xbe5c('0x1d'),_0x4d2921[_0xbe5c('0xf')]),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x58ecee)}})[_0xbe5c('0x17')](function(_0x2a8657){if(_0x2a8657[_0xbe5c('0x1e')]){logger[_0xbe5c('0x18')](_0xbe5c('0x1f'));return _[_0xbe5c('0x20')](_0x2a8657[_0xbe5c('0x21')],{'email':_0x58ecee,'role':'agent'});}else{logger[_0xbe5c('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xbe5c('0x22'),_0x4d2921[_0xbe5c('0xf')])})[_0xbe5c('0x17')](function(_0x591d9d){logger['info'](_0xbe5c('0x23'));return _0x591d9d['user'];});}});}else{logger[_0xbe5c('0x18')](_0xbe5c('0x24'));return request({'uri':util[_0xbe5c('0x1c')](_0xbe5c('0x22'),_0x4d2921[_0xbe5c('0xf')])})['then'](function(_0x1dfe42){logger[_0xbe5c('0x18')](_0xbe5c('0x23'));return _0x1dfe42[_0xbe5c('0x25')];});}}function getEndUser(_0x2fb012,_0x33f089,_0x4cefa0){logger['info']('Searching\x20enduser\x20with\x20phone',_0x4cefa0);return request({'uri':util[_0xbe5c('0x1c')](_0xbe5c('0x1d'),_0x2fb012[_0xbe5c('0xf')]),'qs':{'query':util[_0xbe5c('0x1c')]('type:user\x20role:end-user\x20phone:%s',_0x4cefa0)}})[_0xbe5c('0x17')](function(_0x2746b8){var _0x1d34b2;if(_0x2746b8[_0xbe5c('0x21')]['length']){_0x2746b8['results']=_[_0xbe5c('0x26')](_0x2746b8[_0xbe5c('0x21')],{'suspended':![],'role':_0xbe5c('0x27')});if(_0x2746b8[_0xbe5c('0x21')][_0xbe5c('0x28')]){_0x1d34b2=_[_0xbe5c('0x29')](_0x2746b8[_0xbe5c('0x21')]);}}if(_0x1d34b2){logger[_0xbe5c('0x18')](_0xbe5c('0x2a'));return _0x1d34b2;}else{logger[_0xbe5c('0x18')](_0xbe5c('0x2b'));return request({'uri':util['format'](_0xbe5c('0x2c'),_0x2fb012[_0xbe5c('0xf')]),'method':_0xbe5c('0x10'),'body':{'user':{'role':_0xbe5c('0x27'),'name':util[_0xbe5c('0x1c')]('Caller\x20-\x20%s',_0x33f089||_0x4cefa0),'phone':_0x4cefa0}}})[_0xbe5c('0x17')](function(_0x34ad7d){logger['info'](_0xbe5c('0x2d'));return _0x34ad7d[_0xbe5c('0x25')];});}});}function getAuth(_0x1cdf99){var _0x1de83a;if(_0x1cdf99['authType']===_0xbe5c('0x2e')){_0x1de83a=util[_0xbe5c('0x1c')](_0xbe5c('0x2f'),_0x1cdf99[_0xbe5c('0x30')],_0x1cdf99[_0xbe5c('0x2e')]);}else if(_0x1cdf99[_0xbe5c('0x31')]==='token'){_0x1de83a=util['format'](_0xbe5c('0x32'),_0x1cdf99[_0xbe5c('0x30')],_0x1cdf99['token']);}return util[_0xbe5c('0x1c')](_0xbe5c('0x33'),new Buffer(_0x1de83a)[_0xbe5c('0x34')](_0xbe5c('0x35')));}function request(_0x4d5232){logger[_0xbe5c('0x36')]('[HTTP]',JSON[_0xbe5c('0x37')](_0x4d5232));return rp(_[_0xbe5c('0x8')](_0x4d5232,{'method':_0xbe5c('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x125a5e,_0x378551){var _0xa885a2=[];if(_0x125a5e&&_0x125a5e['length']>0x0){_0xa885a2=_[_0xbe5c('0x39')](_0x125a5e,_0x378551);}return _0xa885a2;}function getCustomFields(_0xc59863,_0x3d6ae2){var _0x1cd153=[];var _0x18afe3={'custom_fields':[]};if(_0xc59863['length']>0x0){_[_0xbe5c('0x3a')](_0xc59863,function(_0x454da6){if(_[_0xbe5c('0x3b')](['string',_0xbe5c('0x3c')],_0x454da6[_0xbe5c('0x3d')])&&_0x454da6['nameField']&&!_0x454da6['customField']){_0x18afe3[_0x454da6[_0xbe5c('0x3e')][_0xbe5c('0x3f')]()]=_0x454da6['content']['toString']();}else if(_['includes']([_0xbe5c('0x40'),'picklist'],_0x454da6[_0xbe5c('0x3d')])&&_0x454da6[_0xbe5c('0x41')]&&_0x454da6['customField']){_0x18afe3['custom_fields'][_0xbe5c('0x42')]({'id':_0x454da6['idField'],'value':_0x454da6['content'][_0xbe5c('0x34')]()});}else if(_0x454da6[_0xbe5c('0x3d')]===_0xbe5c('0x43')&&_0x454da6[_0xbe5c('0x44')]&&_0x454da6[_0xbe5c('0x41')]&&_0x454da6[_0xbe5c('0x45')]){_0x3d6ae2[_0x454da6[_0xbe5c('0x44')]]&&_0x18afe3['custom_fields'][_0xbe5c('0x42')]({'id':_0x454da6[_0xbe5c('0x41')],'value':_0x3d6ae2[_0x454da6['variableName']][_0xbe5c('0x34')]()});}else if(_0x454da6[_0xbe5c('0x3d')]===_0xbe5c('0x46')&&_0x454da6[_0xbe5c('0x47')]&&_0x454da6[_0xbe5c('0x47')][_0xbe5c('0x13')]&&_0x454da6[_0xbe5c('0x41')]&&_0x454da6[_0xbe5c('0x45')]){_0x3d6ae2[_0x454da6[_0xbe5c('0x47')][_0xbe5c('0x13')]['toLowerCase']()]&&_0x18afe3[_0xbe5c('0x48')][_0xbe5c('0x42')]({'id':_0x454da6[_0xbe5c('0x41')],'value':_0x3d6ae2[_0x454da6[_0xbe5c('0x47')][_0xbe5c('0x13')]['toLowerCase']()][_0xbe5c('0x34')]()});}});}return _0x18afe3;}exports[_0xbe5c('0x49')]=function(_0x2cd064,_0x3bd778,_0x567b06,_0x4d0418,_0x38c81c,_0x49ca31){var _0x491cdb,_0x58dd58;_0x49ca31[_0xbe5c('0xf')]=intUtil['stripTrailingSlash'](_0x49ca31['remoteUri']);_0x49ca31[_0xbe5c('0x4a')]=intUtil[_0xbe5c('0x4b')](_0x49ca31[_0xbe5c('0x4a')]);if(_0x38c81c&&_0x38c81c['monitor_format']){logger[_0xbe5c('0x18')](_0xbe5c('0x4c'),_0xbe5c('0x4d'));_0x3bd778[_0xbe5c('0x4e')]=util[_0xbe5c('0x1c')](_0xbe5c('0x4f'),_0x49ca31[_0xbe5c('0x4a')],_0x3bd778[_0xbe5c('0x50')],md5(_0x3bd778[_0xbe5c('0x50')]));}else{_0x3bd778[_0xbe5c('0x4e')]='';}headers['Authorization']=getAuth(_0x49ca31);return getUser(_0x49ca31,_0x4d0418[_0xbe5c('0x51')])[_0xbe5c('0x17')](function(_0x5b4a52){_0x491cdb=_0x5b4a52;logger[_0xbe5c('0x18')](_0xbe5c('0x52'),_0x491cdb['id']);return getEndUser(_0x49ca31,_0x3bd778[_0xbe5c('0x53')],_0x3bd778[_0xbe5c('0x54')]);})[_0xbe5c('0x17')](function(_0x291bde){_0x58dd58=_0x291bde;logger[_0xbe5c('0x18')](_0xbe5c('0x55'),_0x58dd58['id']);return getTicket(_0x49ca31,_0x491cdb,_0x58dd58,_0x567b06,_0x3bd778);})['then'](function(_0x92c3cf){if(_0x92c3cf){logger[_0xbe5c('0x18')](_0xbe5c('0x56'),_0x92c3cf['id']);switch(_0x49ca31[_0xbe5c('0x3d')]){case _0xbe5c('0x57'):logger[_0xbe5c('0x18')](_0xbe5c('0x4c'),_0xbe5c('0x58'));return request({'uri':util[_0xbe5c('0x1c')](_0xbe5c('0x59'),_0x49ca31['remoteUri'],_0x491cdb['id'],_0x92c3cf['id']),'method':_0xbe5c('0x10')});case _0xbe5c('0x5a'):logger[_0xbe5c('0x18')](_0xbe5c('0x4c'),_0xbe5c('0x5b'));emit(util[_0xbe5c('0x1c')](_0xbe5c('0x5c'),_0x4d0418['name']),'trigger:browser:url',{'uri':util[_0xbe5c('0x1c')](_0xbe5c('0x5d'),_0x49ca31['remoteUri'][_0xbe5c('0x5e')]('/api/v2',''),_0x92c3cf['id'])});break;default:logger[_0xbe5c('0x5f')](_0xbe5c('0x4c'),_0xbe5c('0x60'));}}})['catch'](function(_0x46bda0){logger['error'](_0xbe5c('0x61'),util['inspect'](_0x46bda0,{'showHidden':!![],'depth':null}));});};exports[_0xbe5c('0x62')]=function(_0x1a6e7d,_0x275b83,_0x139cf1,_0x415990,_0x2b8039,_0x291455,_0x23c8ce){var _0x113f63,_0x7c7d7c;_0x291455[_0xbe5c('0xf')]=intUtil['stripTrailingSlash'](_0x291455[_0xbe5c('0xf')]);_0x291455['serverUrl']=intUtil[_0xbe5c('0x4b')](_0x291455[_0xbe5c('0x4a')]);if(_0x23c8ce&&_0x23c8ce['recordingFormat']&&_0x23c8ce[_0xbe5c('0x63')]!==_0xbe5c('0x64')){logger[_0xbe5c('0x18')](_0xbe5c('0x65'),_0xbe5c('0x4d'));_0x275b83['recordingURL']=util[_0xbe5c('0x1c')](_0xbe5c('0x4f'),_0x291455[_0xbe5c('0x4a')],_0x275b83['uniqueid'],md5(_0x275b83[_0xbe5c('0x50')]));}headers['Authorization']=getAuth(_0x291455);return getUser(_0x291455,_0x415990[_0xbe5c('0x51')])[_0xbe5c('0x17')](function(_0xa2d580){_0x113f63=_0xa2d580;logger[_0xbe5c('0x18')]('The\x20User\x20ID\x20is:',_0x113f63['id']);return getEndUser(_0x291455,_0x275b83['destcalleridname'],_0x275b83[_0xbe5c('0x66')]);})[_0xbe5c('0x17')](function(_0x12804c){_0x7c7d7c=_0x12804c;logger[_0xbe5c('0x18')](_0xbe5c('0x55'),_0x7c7d7c['id']);return getTicket(_0x291455,_0x113f63,_0x7c7d7c,_0x139cf1,_0x275b83);})[_0xbe5c('0x17')](function(_0x7a835c){if(_0x7a835c){logger['info'](_0xbe5c('0x56'),_0x7a835c['id']);switch(_0x291455[_0xbe5c('0x3d')]){case _0xbe5c('0x57'):logger[_0xbe5c('0x18')](_0xbe5c('0x65'),_0xbe5c('0x58'));return request({'uri':util['format'](_0xbe5c('0x59'),_0x291455[_0xbe5c('0xf')],_0x113f63['id'],_0x7a835c['id']),'method':_0xbe5c('0x10')});case'newTab':logger[_0xbe5c('0x18')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xbe5c('0x1c')]('user:%s',_0x415990[_0xbe5c('0x13')]),_0xbe5c('0x67'),{'uri':util['format'](_0xbe5c('0x5d'),_0x291455[_0xbe5c('0xf')]['replace'](_0xbe5c('0x68'),''),_0x7a835c['id'])});break;default:logger[_0xbe5c('0x5f')](_0xbe5c('0x65'),_0xbe5c('0x60'));}}})[_0xbe5c('0x69')](function(_0x374ae0){logger[_0xbe5c('0x5f')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xbe5c('0x6a')](_0x374ae0,{'showHidden':!![],'depth':null}));});};exports[_0xbe5c('0x6b')]=function(_0x274a32,_0x4d3b9d,_0x4cb191,_0x37f855,_0x8d5152,_0x2c9cf8){var _0x4aef10,_0xf4280d;_0x2c9cf8[_0xbe5c('0xf')]=intUtil[_0xbe5c('0x4b')](_0x2c9cf8[_0xbe5c('0xf')]);_0x2c9cf8['serverUrl']=intUtil[_0xbe5c('0x4b')](_0x2c9cf8['serverUrl']);if(_0x8d5152&&_0x8d5152[_0xbe5c('0x6c')]){logger[_0xbe5c('0x18')]('['+_0x4d3b9d[_0xbe5c('0x6d')][_0xbe5c('0x6e')]()+']',_0xbe5c('0x4d'));_0x4d3b9d[_0xbe5c('0x4e')]=util[_0xbe5c('0x1c')](_0xbe5c('0x4f'),_0x2c9cf8[_0xbe5c('0x4a')],_0x4d3b9d[_0xbe5c('0x50')],md5(_0x4d3b9d[_0xbe5c('0x50')]));}else{_0x4d3b9d[_0xbe5c('0x4e')]='';}headers['Authorization']=getAuth(_0x2c9cf8);return getUser(_0x2c9cf8)[_0xbe5c('0x17')](function(_0x38241d){_0x4aef10=_0x38241d;logger['info']('The\x20User\x20ID\x20is:',_0x4aef10['id']);return getEndUser(_0x2c9cf8,_0x4d3b9d[_0xbe5c('0x53')],_0x4d3b9d[_0xbe5c('0x54')]);})[_0xbe5c('0x17')](function(_0x1ad173){_0xf4280d=_0x1ad173;logger[_0xbe5c('0x18')](_0xbe5c('0x55'),_0xf4280d['id']);return getTicket(_0x2c9cf8,_0x4aef10,_0xf4280d,_0x4cb191,_0x4d3b9d);})['then'](function(_0x42b011){if(_0x42b011){logger[_0xbe5c('0x18')](_0xbe5c('0x56'),_0x42b011['id']);}})[_0xbe5c('0x69')](function(_0x217f1f){logger[_0xbe5c('0x5f')]('['+_0x4d3b9d[_0xbe5c('0x6d')][_0xbe5c('0x6e')]()+']'+_0xbe5c('0x6f'),util[_0xbe5c('0x6a')](_0x217f1f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0d1d360..8e00819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153f=['queue','host','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','/downloads?type=uniqueid&token=','uniqueid','recordingURL','zoho.eu','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','destcalleridname','user:%s','unmanaged','monitor_format','/api/voice/recordings/','com','toUpperCase','lodash','request-promise','md5','util','./util','moment','ioredis','../../../../config/environment','zoho','redis','defaults','localhost','emit','debug','[HTTP]','stringify','length','forEach','includes','string','picklist','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','ActiveUsers','Zoho-oauthtoken\x20','isArrayLikeObject','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','users','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','Error:\x20','CREATE\x20ERROR','moduleSearch','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','Contacts','nothing','administrator','Subject','getString','Subjects','Description','Descriptions','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','lastevent','Call_Result','Called','connect','Answered','rejected','Rejected','Abandoned','Timeout','Call_Start_Time','outbound','starttime','Call_Type','Inbound','Fields','Call\x20created!','err','log'];(function(_0x200271,_0xc66c2a){var _0x2addbb=function(_0x3880c0){while(--_0x3880c0){_0x200271['push'](_0x200271['shift']());}};_0x2addbb(++_0xc66c2a);}(_0x153f,0x15b));var _0xf153=function(_0x4f8fe4,_0x42ac96){_0x4f8fe4=_0x4f8fe4-0x0;var _0x22831d=_0x153f[_0x4f8fe4];return _0x22831d;};'use strict';var _=require(_0xf153('0x0'));var rp=require(_0xf153('0x1'));var md5=require(_0xf153('0x2'));var util=require(_0xf153('0x3'));var intUtil=require(_0xf153('0x4'));var moment=require(_0xf153('0x5'));var Redis=require(_0xf153('0x6'));var BPromise=require('bluebird');var config=require(_0xf153('0x7'));var logger=require('../../../../config/logger')(_0xf153('0x8'));config[_0xf153('0x9')]=_[_0xf153('0xa')](config[_0xf153('0x9')],{'host':_0xf153('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf153('0x9')]));function emit(_0x143497,_0x224f88,_0x5f6cb5){io['to'](_0x143497)[_0xf153('0xc')](_0x224f88,_0x5f6cb5);}function request(_0x3e7a82){logger[_0xf153('0xd')](_0xf153('0xe'),JSON[_0xf153('0xf')](_0x3e7a82));return rp(_0x3e7a82);}function getCustomFields(_0xeaccb0,_0x5c8ae9){var _0x2b76eb={};if(_0xeaccb0[_0xf153('0x10')]>0x0){_[_0xf153('0x11')](_0xeaccb0,function(_0x493324){if(_[_0xf153('0x12')]([_0xf153('0x13'),_0xf153('0x14')],_0x493324[_0xf153('0x15')])&&_0x493324[_0xf153('0x16')]){_0x2b76eb[_0x493324[_0xf153('0x16')]]=_0x493324[_0xf153('0x17')][_0xf153('0x18')]();}else if(_0x493324[_0xf153('0x15')]==='variable'&&_0x493324[_0xf153('0x19')]&&_0x493324[_0xf153('0x16')]&&_0x5c8ae9[_0x493324[_0xf153('0x19')]]){_0x2b76eb[_0x493324[_0xf153('0x16')]]=_0x5c8ae9[_0x493324[_0xf153('0x19')]][_0xf153('0x18')]();}else if(_0x493324[_0xf153('0x15')]===_0xf153('0x1a')&&_0x493324['Variable']&&_0x493324[_0xf153('0x1b')]['name']&&_0x493324[_0xf153('0x16')]&&_0x5c8ae9[_0x493324[_0xf153('0x1b')][_0xf153('0x1c')][_0xf153('0x1d')]()]){_0x2b76eb[_0x493324['idField']]=_0x5c8ae9[_0x493324[_0xf153('0x1b')][_0xf153('0x1c')][_0xf153('0x1d')]()][_0xf153('0x18')]();}});}return _0x2b76eb;}function getName(_0x15230c){if(_0x15230c[_0xf153('0x1e')]('\x20')>0x0){var _0x37952f=_0x15230c[_0xf153('0x1f')](/ (.+)/);if(_0x37952f[0x1]){return _0x37952f;}}return[_0x15230c,_0x15230c];}var accountsTokens={};function getAccessToken(_0x3735a7){return new Promise(function(_0x1dd340,_0x33ce52){if(!_[_0xf153('0x20')](accountsTokens[_0x3735a7['id']])&&!_['isNil'](accountsTokens[_0x3735a7['id']][_0xf153('0x21')])){if(moment()[_0xf153('0x22')](accountsTokens[_0x3735a7['id']][_0xf153('0x23')])){_0x1dd340(accountsTokens[_0x3735a7['id']][_0xf153('0x21')]);}}var _0x5c9f44;switch(_0x3735a7[_0xf153('0x24')]){case'US':_0x5c9f44=_0xf153('0x25');break;case'AU':_0x5c9f44=_0xf153('0x26');break;case'EU':_0x5c9f44=_0xf153('0x27');break;case'IN':_0x5c9f44=_0xf153('0x28');break;case'CN':_0x5c9f44=_0xf153('0x29');break;default:_0x5c9f44=_0xf153('0x27');break;}var _0x35cfe3={'method':_0xf153('0x2a'),'uri':_0x5c9f44+_0xf153('0x2b'),'qs':{'refresh_token':_0x3735a7[_0xf153('0x2c')],'client_id':_0x3735a7[_0xf153('0x2d')],'client_secret':_0x3735a7[_0xf153('0x2e')],'grant_type':_0xf153('0x2f')},'json':!![]};return rp(_0x35cfe3)[_0xf153('0x30')](function(_0x48ebdc){accountsTokens[_0x3735a7['id']]={'access_token':_0x48ebdc[_0xf153('0x21')],'expires_in':moment()[_0xf153('0x31')](_0x48ebdc['expires_in'],_0xf153('0x32'))};_0x1dd340(_0x48ebdc[_0xf153('0x21')]);})['catch'](function(_0x17305d){logger[_0xf153('0x33')](_0xf153('0x34'),_0x17305d[_0xf153('0x35')]);_0x33ce52(_0x17305d);});});}function getUser(_0x339e96,_0x258976,_0x441436,_0x3b5f4f){logger[_0xf153('0x36')](_0xf153('0x37'));return request({'method':_0xf153('0x38'),'uri':util[_0xf153('0x39')]('https://www.zohoapis.%s/crm/v2/users',_0x258976),'qs':{'type':_0xf153('0x3a')},'headers':{'Authorization':_0xf153('0x3b')+_0x339e96},'json':!![]})[_0xf153('0x30')](function(_0x2b6d41){if(_0x2b6d41['users']){var _0x47b715=-0x1;if(_[_0xf153('0x3c')](_0x2b6d41['users'])){if(!_['isNil'](_0x3b5f4f)){_0x47b715=_[_0xf153('0x3d')](_0x2b6d41['users'],function(_0x2b9623){return _0x2b9623['email']===_0x3b5f4f;});}if(_0x47b715>=0x0){logger[_0xf153('0x36')](_0xf153('0x3e'));}else{logger['info'](_0xf153('0x3f'));_0x47b715=_[_0xf153('0x3d')](_0x2b6d41[_0xf153('0x40')],function(_0x40be52){return _0x40be52[_0xf153('0x41')][_0xf153('0x1c')]==='Administrator';});}return _0x2b6d41[_0xf153('0x40')][_0x47b715];}else{if(_0x2b6d41['user'][_0xf153('0x41')][_0xf153('0x1c')]===_0xf153('0x42')){logger[_0xf153('0x36')](_0xf153('0x3f'));user=_0x2b6d41[_0xf153('0x43')];return user;}else{logger['error'](_0xf153('0x44'),JSON[_0xf153('0xf')](_0x2b6d41));throw new Error(_0xf153('0x45')+JSON['stringify'](_0x2b6d41));}}}else{logger[_0xf153('0x33')](_0xf153('0x44'),JSON[_0xf153('0xf')](_0x2b6d41));throw new Error(_0xf153('0x45')+JSON[_0xf153('0xf')](_0x2b6d41));}})[_0xf153('0x46')](function(_0x4cc481){console[_0xf153('0x33')](_0x4cc481);});}function getZohoUser(_0x102c76,_0x48b53e){return new BPromise(function(_0x14b2e3,_0x161997){request(_0x102c76)[_0xf153('0x30')](function(_0x40e9f0){var _0x103b91=null;if(_0x40e9f0){_0x103b91=_0x40e9f0[_0xf153('0x47')][0x0];_0x103b91[_0xf153('0x48')]=_0x48b53e;}_0x14b2e3(_0x103b91);})['catch'](function(_0x355131){_0x161997(_0x355131);});});}function createEndUser(_0x2f63d6,_0x150ce4,_0x352e7c,_0x25657a,_0x1ee606,_0x485c52){var _0x352e7c=getName(_0x352e7c);return request({'method':_0xf153('0x2a'),'uri':'https://www.zohoapis.'+_0x150ce4+_0xf153('0x49')+_[_0xf153('0x4a')](_0x485c52[_0xf153('0x4b')])+'s','body':{'data':[{'Last_Name':_0x352e7c[0x1],'First_Name':_0x352e7c[0x0],'Phone':_0x25657a,'Owner':{'name':!_[_0xf153('0x20')](_0x1ee606[_0xf153('0x4c')][_0xf153('0x1c')])?_0x1ee606['role']['name']:!_[_0xf153('0x20')](_0x1ee606[_0xf153('0x4d')])?_0x1ee606['first_name']+'\x20'+_0x1ee606[_0xf153('0x4e')]:_0x1ee606[_0xf153('0x4e')],'id':_0x1ee606['id']}}]},'headers':{'Authorization':_0xf153('0x3b')+_0x2f63d6},'json':!![]})[_0xf153('0x30')](function(_0x72f7ee){if(_0x72f7ee&&_0x72f7ee[_0xf153('0x47')][0x0][_0xf153('0x4f')]===_0xf153('0x50')){var _0x1b453f=_0x72f7ee[_0xf153('0x47')][0x0][_0xf153('0x51')];_0x1b453f[_0xf153('0x48')]=_['startCase'](_0x485c52[_0xf153('0x4b')])+'s';return _0x1b453f;}logger[_0xf153('0x33')](_0xf153('0x44'),JSON['stringify'](data));throw new Error(_0xf153('0x52')+JSON[_0xf153('0xf')](data));})['catch'](function(_0x19f51e){console['log'](_0xf153('0x53'),_0x19f51e);});}function getEndUser(_0xa36ec1,_0x17fb10,_0x550d45,_0x1f540b,_0x209048,_0x1426eb,_0x1bece2){var _0x472280={'method':'GET','uri':'','headers':{'Authorization':_0xf153('0x3b')+_0xa36ec1},'json':!![]};switch(_0x1bece2[_0xf153('0x54')]){case'contact_lead':_0x472280[_0xf153('0x55')]=_0xf153('0x56')+_0x17fb10+_0xf153('0x57')+_0x209048+'))';return getZohoUser(_0x472280,'Contacts')[_0xf153('0x30')](function(_0x5b21ab){if(_0x5b21ab)return _0x5b21ab;_0x472280[_0xf153('0x55')]=_0xf153('0x56')+_0x17fb10+_0xf153('0x58')+_0x209048+'))';return getZohoUser(_0x472280,_0xf153('0x59'))[_0xf153('0x30')](function(_0x33e48){if(_0x33e48)return _0x33e48;if(_0x1bece2[_0xf153('0x4b')]!='nothing'){return createEndUser(_0xa36ec1,_0x17fb10,_0x1f540b,_0x209048,_0x1426eb,_0x1bece2);}else{return{};}});});break;case _0xf153('0x5a'):_0x472280['uri']='https://www.zohoapis.'+_0x17fb10+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x209048+'))';return getZohoUser(_0x472280,_0xf153('0x5b'))[_0xf153('0x30')](function(_0x4cb00f){if(_0x4cb00f)return _0x4cb00f;if(_0x1bece2[_0xf153('0x4b')]!=_0xf153('0x5c')){return createEndUser(_0xa36ec1,_0x17fb10,_0x1f540b,_0x209048,_0x1426eb,_0x1bece2);}else{return{};}});break;case'lead':_0x472280[_0xf153('0x55')]=_0xf153('0x56')+_0x17fb10+_0xf153('0x58')+_0x209048+'))';return getZohoUser(_0x472280,_0xf153('0x59'))[_0xf153('0x30')](function(_0x3ab27a){if(_0x3ab27a)return _0x3ab27a;if(_0x1bece2['moduleCreate']!=_0xf153('0x5c')){return createEndUser(_0xa36ec1,_0x17fb10,_0x1f540b,_0x209048,_0x1426eb,_0x1bece2);}else{return{};}});break;}}function getCall(_0x13efbb,_0x4dca55,_0x566a65,_0x1a92cb,_0x8cbb80,_0x325651,_0x297e9d,_0x419e7e){logger[_0xf153('0x36')]('Creating\x20new\x20call...');var _0xbea48={};_0xbea48['Owner']={'name':!_[_0xf153('0x20')](_0x1a92cb[_0xf153('0x4c')][_0xf153('0x1c')])&&!_['isNil'](_0x1a92cb[_0xf153('0x41')][_0xf153('0x1c')])&&_0x1a92cb[_0xf153('0x41')][_0xf153('0x1c')]===_0xf153('0x5d')?_0x1a92cb[_0xf153('0x4c')][_0xf153('0x1c')]:!_['isNil'](_0x1a92cb[_0xf153('0x4d')])?_0x1a92cb[_0xf153('0x4d')]+'\x20'+_0x1a92cb[_0xf153('0x4e')]:_0x1a92cb['last_name'],'id':_0x1a92cb['id']};_0xbea48[_0xf153('0x5e')]=intUtil[_0xf153('0x5f')](_0x325651[_0xf153('0x60')],_0x297e9d,'\x20');_0xbea48[_0xf153('0x61')]=intUtil[_0xf153('0x5f')](_0x325651[_0xf153('0x62')],_0x297e9d,'\x0a');if(_0x8cbb80[_0xf153('0x48')]===_0xf153('0x5b')){_0xbea48['Who_Id']={'name':!_[_0xf153('0x20')](_0x8cbb80[_0xf153('0x63')])?_0x8cbb80['Full_Name']:!_[_0xf153('0x20')](_0x8cbb80[_0xf153('0x64')])?_0x8cbb80[_0xf153('0x64')]+'\x20'+_0x8cbb80[_0xf153('0x65')]:_0x8cbb80[_0xf153('0x65')],'id':_0x8cbb80['id']};}if(_0x8cbb80[_0xf153('0x48')]===_0xf153('0x59')){_0xbea48[_0xf153('0x66')]={'name':!_[_0xf153('0x20')](_0x8cbb80[_0xf153('0x63')])?_0x8cbb80[_0xf153('0x63')]:!_['isNil'](_0x8cbb80[_0xf153('0x64')])?_0x8cbb80[_0xf153('0x64')]+'\x20'+_0x8cbb80['Last_Name']:_0x8cbb80[_0xf153('0x65')],'id':_0x8cbb80['id']};_0xbea48[_0xf153('0x67')]=_[_0xf153('0x4a')](_0x8cbb80[_0xf153('0x48')]);}if(_0x297e9d[_0xf153('0x68')]){_0xbea48[_0xf153('0x69')]=moment[_0xf153('0x6a')](parseInt(_0x297e9d['talktime'])*0x3e8)[_0xf153('0x39')](_0xf153('0x6b'));}else if(_0x297e9d[_0xf153('0x6c')]&&_0x297e9d[_0xf153('0x6d')]){_0xbea48[_0xf153('0x69')]=moment[_0xf153('0x6a')](moment(_0x297e9d[_0xf153('0x6d')],_0xf153('0x6e'))[_0xf153('0x6f')](moment(_0x297e9d['starttime'],_0xf153('0x6e'))))[_0xf153('0x39')]('mm:ss');}switch(_0x297e9d[_0xf153('0x70')]){case'called':_0xbea48[_0xf153('0x71')]=_0xf153('0x72');break;case'complete':case _0xf153('0x73'):_0xbea48['Call_Result']=_0xf153('0x74');break;case _0xf153('0x75'):_0xbea48[_0xf153('0x71')]=_0xf153('0x76');break;case'abandoned':_0xbea48[_0xf153('0x71')]=_0xf153('0x77');break;case'timeout':_0xbea48[_0xf153('0x71')]=_0xf153('0x78');default:}_0xbea48[_0xf153('0x79')]=(_0x419e7e===_0xf153('0x7a')?moment(_0x297e9d[_0xf153('0x7b')])['format'](_0xf153('0x6e')):moment(_0x297e9d['agentcalledAt'])[_0xf153('0x39')](_0xf153('0x6e')))||moment()['format']('YYYY-MM-DDTHH:mm:ss');_0xbea48[_0xf153('0x7c')]=_0x419e7e||_0xf153('0x7d');_0xbea48=_['merge'](_0xbea48,getCustomFields(_0x325651[_0xf153('0x7e')],_0x297e9d));return request({'method':_0xf153('0x2a'),'uri':_0xf153('0x56')+_0x4dca55+'/crm/v2/Calls','headers':{'Authorization':_0xf153('0x3b')+_0x13efbb},'body':{'data':[_0xbea48]},'json':!![]})[_0xf153('0x30')](function(_0x3b87e7){if(_0x3b87e7&&_0x3b87e7[_0xf153('0x47')][0x0][_0xf153('0x4f')]===_0xf153('0x50')){logger[_0xf153('0x36')](_0xf153('0x7f'));return{'id':_0x3b87e7[_0xf153('0x47')][0x0][_0xf153('0x51')]['id']};}})[_0xf153('0x46')](function(_0x2c810b){logger[_0xf153('0x36')](_0xf153('0x80'),_0x2c810b[_0xf153('0x35')]);console[_0xf153('0x81')]('err',_0x2c810b);});}exports[_0xf153('0x82')]=function(_0x54d39c,_0x4bb063,_0x6b51d,_0x47d056,_0xbc1d08,_0x231660){var _0x286de4,_0x2ca840,_0x30ce9d;_0x231660[_0xf153('0x83')]=intUtil['stripTrailingSlash'](_0x231660[_0xf153('0x83')]);_0x231660[_0xf153('0x84')]=intUtil[_0xf153('0x85')](_0x231660['serverUrl']);if(_0xbc1d08&&_0xbc1d08['monitor_format']){logger[_0xf153('0x36')](_0xf153('0x86'),_0xf153('0x87'));_0x4bb063['recordingURL']=_0x231660[_0xf153('0x84')]+'/api/voice/recordings/'+_0x4bb063['uniqueid']+_0xf153('0x88')+md5(_0x4bb063[_0xf153('0x89')]);}else{_0x4bb063[_0xf153('0x8a')]='';}var _0x583dbf=_0x231660[_0xf153('0x83')]===_0xf153('0x8b')?'eu':'com';return getAccessToken(_0x231660)[_0xf153('0x30')](function(_0xe04a03){_0x30ce9d=_0xe04a03;return getUser(_0x30ce9d,_0x583dbf,_0x231660,_0x47d056[_0xf153('0x8c')]);})[_0xf153('0x30')](function(_0x103eff){_0x286de4=_0x103eff;logger['info'](_0xf153('0x8d'),_0x286de4['id']);return getEndUser(_0x30ce9d,_0x583dbf,_0x231660,_0x4bb063[_0xf153('0x8e')],_0x4bb063[_0xf153('0x8f')],_0x286de4,_0x6b51d);})[_0xf153('0x30')](function(_0x442c00){_0x2ca840=_0x442c00;return getCall(_0x30ce9d,_0x583dbf,_0x231660,_0x286de4,_0x2ca840,_0x6b51d,_0x4bb063,_0xf153('0x7d'));})[_0xf153('0x30')](function(_0x546653){if(_0x546653){logger[_0xf153('0x36')](_0xf153('0x90'),_0x546653['id']);logger[_0xf153('0x36')](_0xf153('0x86'),_0xf153('0x91'));emit(util[_0xf153('0x39')]('user:%s',_0x47d056[_0xf153('0x1c')]),_0xf153('0x92'),{'uri':_0xf153('0x93')+_0x231660[_0xf153('0x83')]+_0xf153('0x94')+_0x546653['id']});}})[_0xf153('0x46')](function(_0x27f79a){logger[_0xf153('0x33')](_0xf153('0x86'),JSON[_0xf153('0xf')](_0x27f79a));});};exports['outbound']=function(_0x5f3d56,_0x56827a,_0x4f66b1,_0x239c06,_0x43aa7f,_0x18a48c,_0xbd089){var _0x1df869,_0x574051,_0x3943ee;_0x18a48c[_0xf153('0x83')]=intUtil[_0xf153('0x85')](_0x18a48c[_0xf153('0x83')]);_0x18a48c['serverUrl']=intUtil[_0xf153('0x85')](_0x18a48c[_0xf153('0x84')]);if(_0xbd089&&_0xbd089[_0xf153('0x95')]&&_0xbd089['recordingFormat']!==_0xf153('0x96')){logger['info'](_0xf153('0x97'),_0xf153('0x87'));_0x56827a[_0xf153('0x8a')]=_0x18a48c['serverUrl']+'/api/voice/recordings/'+_0x56827a['uniqueid']+_0xf153('0x88')+md5(_0x56827a[_0xf153('0x89')]);}var _0x5584b3=_0x18a48c['host']===_0xf153('0x8b')?'eu':'com';return getAccessToken(_0x18a48c)[_0xf153('0x30')](function(_0x57ece2){_0x3943ee=_0x57ece2;return getUser(_0x3943ee,_0x5584b3,_0x18a48c,_0x239c06[_0xf153('0x8c')]);})[_0xf153('0x30')](function(_0x3fa0fd){_0x1df869=_0x3fa0fd;logger[_0xf153('0x36')](_0xf153('0x8d'),_0x1df869['id']);return getEndUser(_0x3943ee,_0x5584b3,_0x18a48c,_0x56827a[_0xf153('0x98')],_0x56827a['destcalleridnum'],_0x1df869,_0x4f66b1);})[_0xf153('0x30')](function(_0x33cd1a){_0x574051=_0x33cd1a;return getCall(_0x3943ee,_0x5584b3,_0x18a48c,_0x1df869,_0x574051,_0x4f66b1,_0x56827a,'Outbound');})[_0xf153('0x30')](function(_0x43bc47){if(_0x43bc47){logger[_0xf153('0x36')](_0xf153('0x90'),_0x43bc47['id']);logger['info'](_0xf153('0x97'),_0xf153('0x91'));emit(util['format'](_0xf153('0x99'),_0x239c06[_0xf153('0x1c')]),_0xf153('0x92'),{'uri':_0xf153('0x93')+_0x18a48c['host']+_0xf153('0x94')+_0x43bc47['id']});}})[_0xf153('0x46')](function(_0x3ff17c){logger[_0xf153('0x33')](_0xf153('0x97'),JSON[_0xf153('0xf')](_0x3ff17c));});};exports[_0xf153('0x9a')]=function(_0x40112d,_0x20641e,_0x5ec812,_0x1868d2,_0x43fec7,_0x13e145){var _0x4972ca,_0x4d24b5,_0x249bda;_0x13e145['host']=intUtil[_0xf153('0x85')](_0x13e145[_0xf153('0x83')]);_0x13e145[_0xf153('0x84')]=intUtil['stripTrailingSlash'](_0x13e145['serverUrl']);if(_0x43fec7&&_0x43fec7[_0xf153('0x9b')]){logger[_0xf153('0x36')]('['+_0x20641e[_0xf153('0x70')]['toUpperCase']()+']',_0xf153('0x87'));_0x20641e[_0xf153('0x8a')]=_0x13e145[_0xf153('0x84')]+_0xf153('0x9c')+_0x20641e[_0xf153('0x89')]+_0xf153('0x88')+md5(_0x20641e[_0xf153('0x89')]);}else{_0x20641e[_0xf153('0x8a')]='';}var _0x186011=_0x13e145[_0xf153('0x83')]===_0xf153('0x8b')?'eu':_0xf153('0x9d');return getAccessToken(_0x13e145)[_0xf153('0x30')](function(_0x4d1f03){_0x249bda=_0x4d1f03;return getUser(_0x249bda,_0x186011,_0x13e145);})[_0xf153('0x30')](function(_0x366a40){_0x4972ca=_0x366a40;logger[_0xf153('0x36')]('The\x20User\x20ID\x20is:',_0x4972ca['id']);return getEndUser(_0x249bda,_0x186011,_0x13e145,_0x20641e['calleridname'],_0x20641e[_0xf153('0x8f')],_0x4972ca,_0x5ec812);})['then'](function(_0x441587){_0x4d24b5=_0x441587;return getCall(_0x249bda,_0x186011,_0x13e145,_0x4972ca,_0x4d24b5,_0x5ec812,_0x20641e,_0xf153('0x7d'));})['then'](function(_0x238b91){if(_0x238b91){logger[_0xf153('0x36')](_0xf153('0x90'),_0x238b91['id']);}})[_0xf153('0x46')](function(_0x2d1327){logger[_0xf153('0x33')]('['+_0x20641e[_0xf153('0x70')][_0xf153('0x9e')]()+']',JSON['stringify'](_0x2d1327));});};
\ No newline at end of file
+var _0x4f6f=['stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','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','[OUTBOUND]','email','destcalleridnum','Outbound','https://crm.','unmanaged','toUpperCase','lastevent','lodash','request-promise','md5','./util','ioredis','bluebird','../../../../config/logger','zoho','defaults','redis','localhost','emit','debug','[HTTP]','stringify','length','forEach','includes','picklist','type','content','toString','variableName','idField','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','then','add','expires_in','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','findIndex','Agent\x20found!','profile','user','Administrator','Using\x20the\x20admin\x20account!','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','enduserType','POST','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','data','code','SUCCESS','details','Error:\x20','CREATE\x20ERROR','moduleSearch','uri','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','lead','Leads','Owner','administrator','Subject','getString','Subjects','Description','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','utc','mm:ss','answertime','endtime','Call_Duration','starttime','YYYY-MM-DDTHH:mm:ss','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Inbound','Fields','/crm/v2/Calls','Zoho-oauthtoken\x20','Call\x20created!','err','log','queue'];(function(_0x5f14e7,_0x3e9a53){var _0x2d7c2a=function(_0x5796df){while(--_0x5796df){_0x5f14e7['push'](_0x5f14e7['shift']());}};_0x2d7c2a(++_0x3e9a53);}(_0x4f6f,0x157));var _0xf4f6=function(_0x31a37b,_0x826249){_0x31a37b=_0x31a37b-0x0;var _0x49ae16=_0x4f6f[_0x31a37b];return _0x49ae16;};'use strict';var _=require(_0xf4f6('0x0'));var rp=require(_0xf4f6('0x1'));var md5=require(_0xf4f6('0x2'));var util=require('util');var intUtil=require(_0xf4f6('0x3'));var moment=require('moment');var Redis=require(_0xf4f6('0x4'));var BPromise=require(_0xf4f6('0x5'));var config=require('../../../../config/environment');var logger=require(_0xf4f6('0x6'))(_0xf4f6('0x7'));config['redis']=_[_0xf4f6('0x8')](config[_0xf4f6('0x9')],{'host':_0xf4f6('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf4f6('0x9')]));function emit(_0x592fa6,_0x483c82,_0x26f82b){io['to'](_0x592fa6)[_0xf4f6('0xb')](_0x483c82,_0x26f82b);}function request(_0x34bc5d){logger[_0xf4f6('0xc')](_0xf4f6('0xd'),JSON[_0xf4f6('0xe')](_0x34bc5d));return rp(_0x34bc5d);}function getCustomFields(_0x5ee85d,_0x40e26e){var _0x2fe2da={};if(_0x5ee85d[_0xf4f6('0xf')]>0x0){_[_0xf4f6('0x10')](_0x5ee85d,function(_0x4450f9){if(_[_0xf4f6('0x11')](['string',_0xf4f6('0x12')],_0x4450f9[_0xf4f6('0x13')])&&_0x4450f9['idField']){_0x2fe2da[_0x4450f9['idField']]=_0x4450f9[_0xf4f6('0x14')][_0xf4f6('0x15')]();}else if(_0x4450f9[_0xf4f6('0x13')]==='variable'&&_0x4450f9[_0xf4f6('0x16')]&&_0x4450f9[_0xf4f6('0x17')]&&_0x40e26e[_0x4450f9[_0xf4f6('0x16')]]){_0x2fe2da[_0x4450f9['idField']]=_0x40e26e[_0x4450f9[_0xf4f6('0x16')]]['toString']();}else if(_0x4450f9[_0xf4f6('0x13')]===_0xf4f6('0x18')&&_0x4450f9[_0xf4f6('0x19')]&&_0x4450f9['Variable'][_0xf4f6('0x1a')]&&_0x4450f9[_0xf4f6('0x17')]&&_0x40e26e[_0x4450f9[_0xf4f6('0x19')]['name'][_0xf4f6('0x1b')]()]){_0x2fe2da[_0x4450f9['idField']]=_0x40e26e[_0x4450f9[_0xf4f6('0x19')][_0xf4f6('0x1a')][_0xf4f6('0x1b')]()]['toString']();}});}return _0x2fe2da;}function getName(_0x7a2112){if(_0x7a2112[_0xf4f6('0x1c')]('\x20')>0x0){var _0x1dacff=_0x7a2112[_0xf4f6('0x1d')](/ (.+)/);if(_0x1dacff[0x1]){return _0x1dacff;}}return[_0x7a2112,_0x7a2112];}var accountsTokens={};function getAccessToken(_0x112918){return new Promise(function(_0x794453,_0x39706c){if(!_[_0xf4f6('0x1e')](accountsTokens[_0x112918['id']])&&!_[_0xf4f6('0x1e')](accountsTokens[_0x112918['id']][_0xf4f6('0x1f')])){if(moment()[_0xf4f6('0x20')](accountsTokens[_0x112918['id']]['expires_in'])){_0x794453(accountsTokens[_0x112918['id']][_0xf4f6('0x1f')]);}}var _0x3e5a1d;switch(_0x112918[_0xf4f6('0x21')]){case'US':_0x3e5a1d='https://accounts.zoho.com';break;case'AU':_0x3e5a1d=_0xf4f6('0x22');break;case'EU':_0x3e5a1d=_0xf4f6('0x23');break;case'IN':_0x3e5a1d='https://accounts.zoho.in';break;case'CN':_0x3e5a1d=_0xf4f6('0x24');break;default:_0x3e5a1d=_0xf4f6('0x23');break;}var _0x2a1842={'method':'POST','uri':_0x3e5a1d+_0xf4f6('0x25'),'qs':{'refresh_token':_0x112918[_0xf4f6('0x26')],'client_id':_0x112918[_0xf4f6('0x27')],'client_secret':_0x112918[_0xf4f6('0x28')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x2a1842)[_0xf4f6('0x29')](function(_0x330ec1){accountsTokens[_0x112918['id']]={'access_token':_0x330ec1[_0xf4f6('0x1f')],'expires_in':moment()[_0xf4f6('0x2a')](_0x330ec1[_0xf4f6('0x2b')],_0xf4f6('0x2c'))};_0x794453(_0x330ec1[_0xf4f6('0x1f')]);})[_0xf4f6('0x2d')](function(_0x582901){logger[_0xf4f6('0x2e')](_0xf4f6('0x2f'),_0x582901[_0xf4f6('0x30')]);_0x39706c(_0x582901);});});}function getUser(_0x59490b,_0x3269ac,_0x20faf2,_0x46b30a){logger[_0xf4f6('0x31')](_0xf4f6('0x32'));return request({'method':_0xf4f6('0x33'),'uri':util[_0xf4f6('0x34')](_0xf4f6('0x35'),_0x3269ac),'qs':{'type':_0xf4f6('0x36')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x59490b},'json':!![]})['then'](function(_0x1eae26){if(_0x1eae26[_0xf4f6('0x37')]){var _0x3d72b2=-0x1;if(_[_0xf4f6('0x38')](_0x1eae26[_0xf4f6('0x37')])){if(!_[_0xf4f6('0x1e')](_0x46b30a)){_0x3d72b2=_[_0xf4f6('0x39')](_0x1eae26[_0xf4f6('0x37')],function(_0x256f3c){return _0x256f3c['email']===_0x46b30a;});}if(_0x3d72b2>=0x0){logger[_0xf4f6('0x31')](_0xf4f6('0x3a'));}else{logger[_0xf4f6('0x31')]('Using\x20the\x20admin\x20account!');_0x3d72b2=_[_0xf4f6('0x39')](_0x1eae26[_0xf4f6('0x37')],function(_0xa347b8){return _0xa347b8[_0xf4f6('0x3b')][_0xf4f6('0x1a')]==='Administrator';});}return _0x1eae26[_0xf4f6('0x37')][_0x3d72b2];}else{if(_0x1eae26[_0xf4f6('0x3c')]['profile'][_0xf4f6('0x1a')]===_0xf4f6('0x3d')){logger[_0xf4f6('0x31')](_0xf4f6('0x3e'));user=_0x1eae26['user'];return user;}else{logger[_0xf4f6('0x2e')]('The\x20failing\x20result\x20is',JSON[_0xf4f6('0xe')](_0x1eae26));throw new Error(_0xf4f6('0x3f')+JSON[_0xf4f6('0xe')](_0x1eae26));}}}else{logger['error'](_0xf4f6('0x40'),JSON[_0xf4f6('0xe')](_0x1eae26));throw new Error(_0xf4f6('0x3f')+JSON[_0xf4f6('0xe')](_0x1eae26));}})['catch'](function(_0x2127e6){console[_0xf4f6('0x2e')](_0x2127e6);});}function getZohoUser(_0x11882d,_0x5c8311){return new BPromise(function(_0x1f3580,_0x4f40d7){request(_0x11882d)[_0xf4f6('0x29')](function(_0x24029c){var _0x290c27=null;if(_0x24029c){_0x290c27=_0x24029c['data'][0x0];_0x290c27[_0xf4f6('0x41')]=_0x5c8311;}_0x1f3580(_0x290c27);})[_0xf4f6('0x2d')](function(_0x4ac3f1){_0x4f40d7(_0x4ac3f1);});});}function createEndUser(_0x4dce76,_0x41b437,_0x205fcb,_0x10c1bc,_0xa7f347,_0x418eae){var _0x205fcb=getName(_0x205fcb);return request({'method':_0xf4f6('0x42'),'uri':_0xf4f6('0x43')+_0x41b437+'/crm/v2/'+_[_0xf4f6('0x44')](_0x418eae[_0xf4f6('0x45')])+'s','body':{'data':[{'Last_Name':_0x205fcb[0x1],'First_Name':_0x205fcb[0x0],'Phone':_0x10c1bc,'Owner':{'name':!_[_0xf4f6('0x1e')](_0xa7f347['role'][_0xf4f6('0x1a')])?_0xa7f347[_0xf4f6('0x46')][_0xf4f6('0x1a')]:!_['isNil'](_0xa7f347[_0xf4f6('0x47')])?_0xa7f347[_0xf4f6('0x47')]+'\x20'+_0xa7f347['last_name']:_0xa7f347[_0xf4f6('0x48')],'id':_0xa7f347['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4dce76},'json':!![]})[_0xf4f6('0x29')](function(_0x5f30b7){if(_0x5f30b7&&_0x5f30b7[_0xf4f6('0x49')][0x0][_0xf4f6('0x4a')]===_0xf4f6('0x4b')){var _0x42a9d7=_0x5f30b7[_0xf4f6('0x49')][0x0][_0xf4f6('0x4c')];_0x42a9d7[_0xf4f6('0x41')]=_[_0xf4f6('0x44')](_0x418eae[_0xf4f6('0x45')])+'s';return _0x42a9d7;}logger[_0xf4f6('0x2e')](_0xf4f6('0x40'),JSON[_0xf4f6('0xe')](data));throw new Error(_0xf4f6('0x4d')+JSON[_0xf4f6('0xe')](data));})['catch'](function(_0x572c1a){console['log'](_0xf4f6('0x4e'),_0x572c1a);});}function getEndUser(_0x3eac72,_0x4d0869,_0x1c39a5,_0x5bc0e2,_0x259775,_0x15f7c9,_0x269278){var _0x2bdc1d={'method':_0xf4f6('0x33'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3eac72},'json':!![]};switch(_0x269278[_0xf4f6('0x4f')]){case'contact_lead':_0x2bdc1d[_0xf4f6('0x50')]=_0xf4f6('0x43')+_0x4d0869+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x259775+'))';return getZohoUser(_0x2bdc1d,_0xf4f6('0x51'))[_0xf4f6('0x29')](function(_0x3dd0c1){if(_0x3dd0c1)return _0x3dd0c1;_0x2bdc1d[_0xf4f6('0x50')]='https://www.zohoapis.'+_0x4d0869+_0xf4f6('0x52')+_0x259775+'))';return getZohoUser(_0x2bdc1d,'Leads')[_0xf4f6('0x29')](function(_0x1c7fb2){if(_0x1c7fb2)return _0x1c7fb2;if(_0x269278[_0xf4f6('0x45')]!='nothing'){return createEndUser(_0x3eac72,_0x4d0869,_0x5bc0e2,_0x259775,_0x15f7c9,_0x269278);}else{return{};}});});break;case'contact':_0x2bdc1d[_0xf4f6('0x50')]=_0xf4f6('0x43')+_0x4d0869+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x259775+'))';return getZohoUser(_0x2bdc1d,_0xf4f6('0x51'))['then'](function(_0x235393){if(_0x235393)return _0x235393;if(_0x269278[_0xf4f6('0x45')]!=_0xf4f6('0x53')){return createEndUser(_0x3eac72,_0x4d0869,_0x5bc0e2,_0x259775,_0x15f7c9,_0x269278);}else{return{};}});break;case _0xf4f6('0x54'):_0x2bdc1d[_0xf4f6('0x50')]=_0xf4f6('0x43')+_0x4d0869+_0xf4f6('0x52')+_0x259775+'))';return getZohoUser(_0x2bdc1d,_0xf4f6('0x55'))[_0xf4f6('0x29')](function(_0x5ea49b){if(_0x5ea49b)return _0x5ea49b;if(_0x269278[_0xf4f6('0x45')]!=_0xf4f6('0x53')){return createEndUser(_0x3eac72,_0x4d0869,_0x5bc0e2,_0x259775,_0x15f7c9,_0x269278);}else{return{};}});break;}}function getCall(_0x495933,_0x4fb5b9,_0x12aa7b,_0x233b19,_0x5da2d8,_0x54046b,_0x530414,_0x3dc519){logger[_0xf4f6('0x31')]('Creating\x20new\x20call...');var _0x55d666={};_0x55d666[_0xf4f6('0x56')]={'name':!_[_0xf4f6('0x1e')](_0x233b19[_0xf4f6('0x46')]['name'])&&!_['isNil'](_0x233b19[_0xf4f6('0x3b')][_0xf4f6('0x1a')])&&_0x233b19[_0xf4f6('0x3b')][_0xf4f6('0x1a')]===_0xf4f6('0x57')?_0x233b19[_0xf4f6('0x46')][_0xf4f6('0x1a')]:!_[_0xf4f6('0x1e')](_0x233b19[_0xf4f6('0x47')])?_0x233b19[_0xf4f6('0x47')]+'\x20'+_0x233b19['last_name']:_0x233b19['last_name'],'id':_0x233b19['id']};_0x55d666[_0xf4f6('0x58')]=intUtil[_0xf4f6('0x59')](_0x54046b[_0xf4f6('0x5a')],_0x530414,'\x20');_0x55d666[_0xf4f6('0x5b')]=intUtil[_0xf4f6('0x59')](_0x54046b['Descriptions'],_0x530414,'\x0a');if(_0x5da2d8[_0xf4f6('0x41')]==='Contacts'){_0x55d666[_0xf4f6('0x5c')]={'name':!_[_0xf4f6('0x1e')](_0x5da2d8[_0xf4f6('0x5d')])?_0x5da2d8[_0xf4f6('0x5d')]:!_[_0xf4f6('0x1e')](_0x5da2d8[_0xf4f6('0x5e')])?_0x5da2d8[_0xf4f6('0x5e')]+'\x20'+_0x5da2d8[_0xf4f6('0x5f')]:_0x5da2d8[_0xf4f6('0x5f')],'id':_0x5da2d8['id']};}if(_0x5da2d8[_0xf4f6('0x41')]==='Leads'){_0x55d666[_0xf4f6('0x60')]={'name':!_[_0xf4f6('0x1e')](_0x5da2d8[_0xf4f6('0x5d')])?_0x5da2d8['Full_Name']:!_[_0xf4f6('0x1e')](_0x5da2d8[_0xf4f6('0x5e')])?_0x5da2d8[_0xf4f6('0x5e')]+'\x20'+_0x5da2d8[_0xf4f6('0x5f')]:_0x5da2d8['Last_Name'],'id':_0x5da2d8['id']};_0x55d666[_0xf4f6('0x61')]=_[_0xf4f6('0x44')](_0x5da2d8['enduserType']);}if(_0x530414[_0xf4f6('0x62')]){_0x55d666['Call_Duration']=moment[_0xf4f6('0x63')](parseInt(_0x530414[_0xf4f6('0x62')])*0x3e8)[_0xf4f6('0x34')](_0xf4f6('0x64'));}else if(_0x530414[_0xf4f6('0x65')]&&_0x530414[_0xf4f6('0x66')]){_0x55d666[_0xf4f6('0x67')]=moment[_0xf4f6('0x63')](moment(_0x530414[_0xf4f6('0x66')],'YYYY-MM-DDTHH:mm:ss')['diff'](moment(_0x530414[_0xf4f6('0x68')],_0xf4f6('0x69'))))[_0xf4f6('0x34')](_0xf4f6('0x64'));}switch(_0x530414['lastevent']){case _0xf4f6('0x6a'):_0x55d666[_0xf4f6('0x6b')]=_0xf4f6('0x6c');break;case _0xf4f6('0x6d'):case _0xf4f6('0x6e'):_0x55d666[_0xf4f6('0x6b')]=_0xf4f6('0x6f');break;case _0xf4f6('0x70'):_0x55d666[_0xf4f6('0x6b')]=_0xf4f6('0x71');break;case'abandoned':_0x55d666[_0xf4f6('0x6b')]='Abandoned';break;case _0xf4f6('0x72'):_0x55d666[_0xf4f6('0x6b')]=_0xf4f6('0x73');default:}_0x55d666[_0xf4f6('0x74')]=(_0x3dc519===_0xf4f6('0x75')?moment(_0x530414[_0xf4f6('0x68')])[_0xf4f6('0x34')](_0xf4f6('0x69')):moment(_0x530414[_0xf4f6('0x76')])[_0xf4f6('0x34')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0xf4f6('0x34')]('YYYY-MM-DDTHH:mm:ss');_0x55d666[_0xf4f6('0x77')]=_0x3dc519||_0xf4f6('0x78');_0x55d666=_['merge'](_0x55d666,getCustomFields(_0x54046b[_0xf4f6('0x79')],_0x530414));return request({'method':_0xf4f6('0x42'),'uri':_0xf4f6('0x43')+_0x4fb5b9+_0xf4f6('0x7a'),'headers':{'Authorization':_0xf4f6('0x7b')+_0x495933},'body':{'data':[_0x55d666]},'json':!![]})[_0xf4f6('0x29')](function(_0x2c0739){if(_0x2c0739&&_0x2c0739['data'][0x0]['code']===_0xf4f6('0x4b')){logger[_0xf4f6('0x31')](_0xf4f6('0x7c'));return{'id':_0x2c0739[_0xf4f6('0x49')][0x0][_0xf4f6('0x4c')]['id']};}})[_0xf4f6('0x2d')](function(_0xa50e90){logger[_0xf4f6('0x31')](_0xf4f6('0x7d'),_0xa50e90[_0xf4f6('0x30')]);console[_0xf4f6('0x7e')]('err',_0xa50e90);});}exports[_0xf4f6('0x7f')]=function(_0x31ce20,_0x2ac06b,_0x1b4bbd,_0x416d21,_0x2dff9c,_0x5a73b2){var _0x594663,_0x1a4479,_0x238fb1;_0x5a73b2['host']=intUtil[_0xf4f6('0x80')](_0x5a73b2[_0xf4f6('0x81')]);_0x5a73b2['serverUrl']=intUtil[_0xf4f6('0x80')](_0x5a73b2[_0xf4f6('0x82')]);if(_0x2dff9c&&_0x2dff9c[_0xf4f6('0x83')]){logger[_0xf4f6('0x31')](_0xf4f6('0x84'),_0xf4f6('0x85'));_0x2ac06b[_0xf4f6('0x86')]=_0x5a73b2[_0xf4f6('0x82')]+_0xf4f6('0x87')+_0x2ac06b[_0xf4f6('0x88')]+_0xf4f6('0x89')+md5(_0x2ac06b['uniqueid']);}else{_0x2ac06b[_0xf4f6('0x86')]='';}var _0x4a5aaf=_0x5a73b2['host']===_0xf4f6('0x8a')?'eu':'com';return getAccessToken(_0x5a73b2)[_0xf4f6('0x29')](function(_0x4f215b){_0x238fb1=_0x4f215b;return getUser(_0x238fb1,_0x4a5aaf,_0x5a73b2,_0x416d21['email']);})[_0xf4f6('0x29')](function(_0x717d34){_0x594663=_0x717d34;logger[_0xf4f6('0x31')](_0xf4f6('0x8b'),_0x594663['id']);return getEndUser(_0x238fb1,_0x4a5aaf,_0x5a73b2,_0x2ac06b[_0xf4f6('0x8c')],_0x2ac06b[_0xf4f6('0x8d')],_0x594663,_0x1b4bbd);})[_0xf4f6('0x29')](function(_0x3a6d8c){_0x1a4479=_0x3a6d8c;return getCall(_0x238fb1,_0x4a5aaf,_0x5a73b2,_0x594663,_0x1a4479,_0x1b4bbd,_0x2ac06b,_0xf4f6('0x78'));})[_0xf4f6('0x29')](function(_0x3d1e37){if(_0x3d1e37){logger[_0xf4f6('0x31')](_0xf4f6('0x8e'),_0x3d1e37['id']);logger[_0xf4f6('0x31')](_0xf4f6('0x84'),_0xf4f6('0x8f'));emit(util[_0xf4f6('0x34')](_0xf4f6('0x90'),_0x416d21[_0xf4f6('0x1a')]),_0xf4f6('0x91'),{'uri':'https://crm.'+_0x5a73b2[_0xf4f6('0x81')]+_0xf4f6('0x92')+_0x3d1e37['id']});}})[_0xf4f6('0x2d')](function(_0x28637a){logger[_0xf4f6('0x2e')]('[QUEUE]',JSON[_0xf4f6('0xe')](_0x28637a));});};exports[_0xf4f6('0x75')]=function(_0x32b21f,_0x1e8339,_0x40d12f,_0x465f0c,_0x5a1e74,_0x15e7f0,_0x410982){var _0x5b276d,_0x56b9d8,_0x4bfb7f;_0x15e7f0[_0xf4f6('0x81')]=intUtil['stripTrailingSlash'](_0x15e7f0[_0xf4f6('0x81')]);_0x15e7f0[_0xf4f6('0x82')]=intUtil[_0xf4f6('0x80')](_0x15e7f0[_0xf4f6('0x82')]);if(_0x410982&&_0x410982[_0xf4f6('0x93')]&&_0x410982[_0xf4f6('0x93')]!==_0xf4f6('0x94')){logger[_0xf4f6('0x31')](_0xf4f6('0x95'),'Recording\x20is\x20enabled!');_0x1e8339[_0xf4f6('0x86')]=_0x15e7f0[_0xf4f6('0x82')]+_0xf4f6('0x87')+_0x1e8339['uniqueid']+_0xf4f6('0x89')+md5(_0x1e8339[_0xf4f6('0x88')]);}var _0x4f33f8=_0x15e7f0[_0xf4f6('0x81')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x15e7f0)[_0xf4f6('0x29')](function(_0x4653ea){_0x4bfb7f=_0x4653ea;return getUser(_0x4bfb7f,_0x4f33f8,_0x15e7f0,_0x465f0c[_0xf4f6('0x96')]);})[_0xf4f6('0x29')](function(_0x5335f0){_0x5b276d=_0x5335f0;logger[_0xf4f6('0x31')](_0xf4f6('0x8b'),_0x5b276d['id']);return getEndUser(_0x4bfb7f,_0x4f33f8,_0x15e7f0,_0x1e8339['destcalleridname'],_0x1e8339[_0xf4f6('0x97')],_0x5b276d,_0x40d12f);})[_0xf4f6('0x29')](function(_0x4e0b68){_0x56b9d8=_0x4e0b68;return getCall(_0x4bfb7f,_0x4f33f8,_0x15e7f0,_0x5b276d,_0x56b9d8,_0x40d12f,_0x1e8339,_0xf4f6('0x98'));})[_0xf4f6('0x29')](function(_0x6c00bb){if(_0x6c00bb){logger['info'](_0xf4f6('0x8e'),_0x6c00bb['id']);logger[_0xf4f6('0x31')]('[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf4f6('0x34')](_0xf4f6('0x90'),_0x465f0c[_0xf4f6('0x1a')]),'trigger:browser:url',{'uri':_0xf4f6('0x99')+_0x15e7f0[_0xf4f6('0x81')]+_0xf4f6('0x92')+_0x6c00bb['id']});}})['catch'](function(_0x39f226){logger[_0xf4f6('0x2e')]('[OUTBOUND]',JSON['stringify'](_0x39f226));});};exports[_0xf4f6('0x9a')]=function(_0x58d7a5,_0x3729be,_0x4c21eb,_0x4f3faf,_0x285fb2,_0x1562c6){var _0x15a5a7,_0x33dc83,_0x502788;_0x1562c6['host']=intUtil[_0xf4f6('0x80')](_0x1562c6['host']);_0x1562c6[_0xf4f6('0x82')]=intUtil[_0xf4f6('0x80')](_0x1562c6['serverUrl']);if(_0x285fb2&&_0x285fb2['monitor_format']){logger['info']('['+_0x3729be['lastevent'][_0xf4f6('0x9b')]()+']',_0xf4f6('0x85'));_0x3729be[_0xf4f6('0x86')]=_0x1562c6[_0xf4f6('0x82')]+'/api/voice/recordings/'+_0x3729be['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x3729be[_0xf4f6('0x88')]);}else{_0x3729be[_0xf4f6('0x86')]='';}var _0x2eed4c=_0x1562c6[_0xf4f6('0x81')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x1562c6)[_0xf4f6('0x29')](function(_0x358c82){_0x502788=_0x358c82;return getUser(_0x502788,_0x2eed4c,_0x1562c6);})[_0xf4f6('0x29')](function(_0x3fff3c){_0x15a5a7=_0x3fff3c;logger[_0xf4f6('0x31')]('The\x20User\x20ID\x20is:',_0x15a5a7['id']);return getEndUser(_0x502788,_0x2eed4c,_0x1562c6,_0x3729be[_0xf4f6('0x8c')],_0x3729be[_0xf4f6('0x8d')],_0x15a5a7,_0x4c21eb);})[_0xf4f6('0x29')](function(_0x212c6a){_0x33dc83=_0x212c6a;return getCall(_0x502788,_0x2eed4c,_0x1562c6,_0x15a5a7,_0x33dc83,_0x4c21eb,_0x3729be,_0xf4f6('0x78'));})[_0xf4f6('0x29')](function(_0x417584){if(_0x417584){logger['info'](_0xf4f6('0x8e'),_0x417584['id']);}})['catch'](function(_0xc2ee90){logger[_0xf4f6('0x2e')]('['+_0x3729be[_0xf4f6('0x9c')][_0xf4f6('0x9b')]()+']',JSON[_0xf4f6('0xe')](_0xc2ee90));});};
\ No newline at end of file
index cc89ef5..b8fe379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc06d=['data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','exec','data2'];(function(_0x2eeec7,_0x249dbe){var _0x569919=function(_0x13ef44){while(--_0x13ef44){_0x2eeec7['push'](_0x2eeec7['shift']());}};_0x569919(++_0x249dbe);}(_0xc06d,0xde));var _0xdc06=function(_0xd884cd,_0x44c074){_0xd884cd=_0xd884cd-0x0;var _0xabc2e6=_0xc06d[_0xd884cd];return _0xabc2e6;};'use strict';var util=require(_0xdc06('0x0'));var sh=require(_0xdc06('0x1'));var Mustache=require(_0xdc06('0x2'));var logger=require(_0xdc06('0x3'))('trigger');exports[_0xdc06('0x4')]=function(_0x1747f3,_0x5d8b50){var _0x3716f7=_0x1747f3[_0xdc06('0x5')]?_0x1747f3[_0xdc06('0x5')]:'Script';var _0x2a2424=_0x1747f3[_0xdc06('0x6')]?Mustache[_0xdc06('0x7')](_0x1747f3['data3'],_0x5d8b50):_0x5d8b50;sh['exec'](_0x2a2424,function(_0x53afb0,_0x1161b0,_0xae490b){if(_0x53afb0!==0x0){logger[_0xdc06('0x8')](util[_0xdc06('0x9')](_0xdc06('0xa'),_0x3716f7,_0x2a2424,_0x53afb0,_0xae490b));}else{logger['info'](util[_0xdc06('0x9')](_0xdc06('0xb'),_0x3716f7,_0x2a2424,_0x1161b0));}});};
\ No newline at end of file
+var _0x5d54=['util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s'];(function(_0x19b993,_0x36025e){var _0x22f46a=function(_0x5d2b2d){while(--_0x5d2b2d){_0x19b993['push'](_0x19b993['shift']());}};_0x22f46a(++_0x36025e);}(_0x5d54,0x150));var _0x45d5=function(_0x3b8902,_0x58f5a2){_0x3b8902=_0x3b8902-0x0;var _0xda9f95=_0x5d54[_0x3b8902];return _0xda9f95;};'use strict';var util=require(_0x45d5('0x0'));var sh=require(_0x45d5('0x1'));var Mustache=require(_0x45d5('0x2'));var logger=require(_0x45d5('0x3'))(_0x45d5('0x4'));exports[_0x45d5('0x5')]=function(_0x1815b3,_0x288bf1){var _0x12a8b1=_0x1815b3[_0x45d5('0x6')]?_0x1815b3[_0x45d5('0x6')]:'Script';var _0x2a58f9=_0x1815b3[_0x45d5('0x7')]?Mustache[_0x45d5('0x8')](_0x1815b3[_0x45d5('0x7')],_0x288bf1):_0x288bf1;sh[_0x45d5('0x5')](_0x2a58f9,function(_0x1b67dd,_0x48c246,_0x33856d){if(_0x1b67dd!==0x0){logger[_0x45d5('0x9')](util[_0x45d5('0xa')](_0x45d5('0xb'),_0x12a8b1,_0x2a58f9,_0x1b67dd,_0x33856d));}else{logger[_0x45d5('0xc')](util[_0x45d5('0xa')](_0x45d5('0xd'),_0x12a8b1,_0x2a58f9,_0x48c246));}});};
\ No newline at end of file
index d33515d..8116876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b3e=['then','isNil',',\x20request\x20body:\x20','object','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','render','data5','headers','data6','error','stack','toUpperCase','DELETE','data7','parse','body','info','format','data2','stringify'];(function(_0x370bb1,_0x570fc5){var _0x57104e=function(_0xb75996){while(--_0xb75996){_0x370bb1['push'](_0x370bb1['shift']());}};_0x57104e(++_0x570fc5);}(_0x8b3e,0x13e));var _0xe8b3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8b3e[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0xe8b3('0x0'));var util=require(_0xe8b3('0x1'));var _=require(_0xe8b3('0x2'));var Mustache=require(_0xe8b3('0x3'));var logger=require(_0xe8b3('0x4'))(_0xe8b3('0x5'));exports[_0xe8b3('0x6')]=function(_0x3f3af5,_0x46a5e6){var _0x189e9e,_0xbe81e0;var _0x3e0c3e={'method':_0x3f3af5[_0xe8b3('0x7')]['toUpperCase'](),'uri':Mustache[_0xe8b3('0x8')](_0x3f3af5['data2'],_0x46a5e6),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x3f3af5[_0xe8b3('0x9')])==='number'&&parseInt(_0x3f3af5[_0xe8b3('0x9')])>=0x1&&parseInt(_0x3f3af5[_0xe8b3('0x9')])<=0xa?parseInt(_0x3f3af5[_0xe8b3('0x9')])*0x3e8:0x5*0x3e8};try{_0x3e0c3e[_0xe8b3('0xa')]=_0x3f3af5['data6']?JSON['parse'](Mustache[_0xe8b3('0x8')](_0x3f3af5[_0xe8b3('0xb')],_0x46a5e6)):{};}catch(_0x328d6f){logger[_0xe8b3('0xc')](_0x328d6f[_0xe8b3('0xd')]);}switch(_0x3f3af5[_0xe8b3('0x7')][_0xe8b3('0xe')]()){case'GET':case _0xe8b3('0xf'):_0x189e9e=null;_0x3e0c3e['qs']=_0x46a5e6;break;case'POST':case'PUT':if(_0x3f3af5[_0xe8b3('0x10')]){try{_0x189e9e=JSON[_0xe8b3('0x11')](Mustache[_0xe8b3('0x8')](_0x3f3af5[_0xe8b3('0x10')],_0x46a5e6));_0x3e0c3e[_0xe8b3('0x12')]=_0x189e9e;}catch(_0x4ca867){logger[_0xe8b3('0xc')](_0x4ca867['stack']);logger[_0xe8b3('0xc')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x189e9e=_0x46a5e6;_0x3e0c3e[_0xe8b3('0x12')]=_0x189e9e;}break;}logger[_0xe8b3('0x13')](util[_0xe8b3('0x14')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x3f3af5[_0xe8b3('0x7')],_0x3f3af5[_0xe8b3('0x15')],JSON[_0xe8b3('0x16')](_0x3e0c3e)));rp(_0x3e0c3e)[_0xe8b3('0x17')](function(_0x54fbae){_0x189e9e=!_[_0xe8b3('0x18')](_0x189e9e)?_0xe8b3('0x19')+_0x189e9e:'';_0xbe81e0=typeof _0x54fbae[_0xe8b3('0x12')]===_0xe8b3('0x1a')?JSON[_0xe8b3('0x16')](_0x54fbae['body']):_0x54fbae['body'];logger[_0xe8b3('0x13')](util['format']('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x3f3af5[_0xe8b3('0x7')],_0x3f3af5[_0xe8b3('0x15')],_0x54fbae['statusCode'],_0xbe81e0));})['catch'](function(_0x3f2d67){logger[_0xe8b3('0xc')](util[_0xe8b3('0x14')](_0xe8b3('0x1b'),_0x3f3af5[_0xe8b3('0x7')],_0x3f3af5['data2'],_0x3f2d67[_0xe8b3('0x1c')],_0x3f2d67[_0xe8b3('0x1d')],_0x3f2d67[_0xe8b3('0x1e')]));});};
\ No newline at end of file
+var _0x6f6f=['data5','data6','error','stack','toUpperCase','GET','PUT','parse','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','body','object','statusCode','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','data1','render','data2'];(function(_0x5322cd,_0x47948e){var _0x112533=function(_0x1c3dac){while(--_0x1c3dac){_0x5322cd['push'](_0x5322cd['shift']());}};_0x112533(++_0x47948e);}(_0x6f6f,0x8d));var _0xf6f6=function(_0x1abbbe,_0x1ef72e){_0x1abbbe=_0x1abbbe-0x0;var _0x1f1c17=_0x6f6f[_0x1abbbe];return _0x1f1c17;};'use strict';var rp=require(_0xf6f6('0x0'));var util=require(_0xf6f6('0x1'));var _=require(_0xf6f6('0x2'));var Mustache=require(_0xf6f6('0x3'));var logger=require(_0xf6f6('0x4'))(_0xf6f6('0x5'));exports['exec']=function(_0x56ada1,_0xe40642){var _0x5a5a06,_0x46435f;var _0x59e7ef={'method':_0x56ada1[_0xf6f6('0x6')]['toUpperCase'](),'uri':Mustache[_0xf6f6('0x7')](_0x56ada1[_0xf6f6('0x8')],_0xe40642),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x56ada1[_0xf6f6('0x9')])==='number'&&parseInt(_0x56ada1[_0xf6f6('0x9')])>=0x1&&parseInt(_0x56ada1['data5'])<=0xa?parseInt(_0x56ada1['data5'])*0x3e8:0x5*0x3e8};try{_0x59e7ef['headers']=_0x56ada1[_0xf6f6('0xa')]?JSON['parse'](Mustache['render'](_0x56ada1[_0xf6f6('0xa')],_0xe40642)):{};}catch(_0x2d4b22){logger[_0xf6f6('0xb')](_0x2d4b22[_0xf6f6('0xc')]);}switch(_0x56ada1[_0xf6f6('0x6')][_0xf6f6('0xd')]()){case _0xf6f6('0xe'):case'DELETE':_0x5a5a06=null;_0x59e7ef['qs']=_0xe40642;break;case'POST':case _0xf6f6('0xf'):if(_0x56ada1['data7']){try{_0x5a5a06=JSON[_0xf6f6('0x10')](Mustache['render'](_0x56ada1[_0xf6f6('0x11')],_0xe40642));_0x59e7ef['body']=_0x5a5a06;}catch(_0x501ef2){logger[_0xf6f6('0xb')](_0x501ef2[_0xf6f6('0xc')]);logger[_0xf6f6('0xb')](_0xf6f6('0x12'));}}else{_0x5a5a06=_0xe40642;_0x59e7ef['body']=_0x5a5a06;}break;}logger[_0xf6f6('0x13')](util[_0xf6f6('0x14')](_0xf6f6('0x15'),_0x56ada1['data1'],_0x56ada1[_0xf6f6('0x8')],JSON[_0xf6f6('0x16')](_0x59e7ef)));rp(_0x59e7ef)[_0xf6f6('0x17')](function(_0x10b53e){_0x5a5a06=!_[_0xf6f6('0x18')](_0x5a5a06)?_0xf6f6('0x19')+_0x5a5a06:'';_0x46435f=typeof _0x10b53e[_0xf6f6('0x1a')]===_0xf6f6('0x1b')?JSON[_0xf6f6('0x16')](_0x10b53e[_0xf6f6('0x1a')]):_0x10b53e[_0xf6f6('0x1a')];logger['info'](util[_0xf6f6('0x14')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x56ada1['data1'],_0x56ada1[_0xf6f6('0x8')],_0x10b53e['statusCode'],_0x46435f));})['catch'](function(_0x19812e){logger[_0xf6f6('0xb')](util['format']('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x56ada1['data1'],_0x56ada1['data2'],_0x19812e[_0xf6f6('0x1c')],_0x19812e['name'],_0x19812e[_0xf6f6('0x1d')]));});};
\ No newline at end of file
index 4623c20..742ac65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aeb=['Request','debug','error','rpc','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing'];(function(_0x5ef6b5,_0x132228){var _0x5d2847=function(_0xab3bee){while(--_0xab3bee){_0x5ef6b5['push'](_0x5ef6b5['shift']());}};_0x5d2847(++_0x132228);}(_0x2aeb,0xbc));var _0xb2ae=function(_0x282bc0,_0x4f02ce){_0x282bc0=_0x282bc0-0x0;var _0x2d9ca3=_0x2aeb[_0x282bc0];return _0x2d9ca3;};'use strict';var jayson=require(_0xb2ae('0x0'));var BPromise=require(_0xb2ae('0x1'));var logger=require(_0xb2ae('0x2'))(_0xb2ae('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0xb2ae('0x4')]=function(_0x29e3a6,_0x2131d8){return new BPromise(function(_0x1096fd,_0x1fbdd0){return client['request'](_0x29e3a6,_0x2131d8)['then'](function(_0x101441){logger[_0xb2ae('0x5')]('rpc',_0xb2ae('0x3'),_0x29e3a6,_0x2131d8,_0x101441);if(_0x101441[_0xb2ae('0x6')]){logger['error'](_0xb2ae('0x7'),_0xb2ae('0x3'),_0x29e3a6,_0x101441[_0xb2ae('0x6')][_0xb2ae('0x8')],_0x2131d8);return _0x1fbdd0(_0x101441['error'][_0xb2ae('0x8')]);}else{return _0x1096fd(_0x101441[_0xb2ae('0x9')]);}})[_0xb2ae('0xa')](function(_0x2a8e18){logger[_0xb2ae('0x6')](_0xb2ae('0x7'),_0xb2ae('0x3'),_0x29e3a6,_0x2a8e18,_0x2131d8);return _0x1fbdd0(_0x2a8e18);});});};module[_0xb2ae('0xb')]=client;
\ No newline at end of file
+var _0x0f38=['request','then','debug','error','message','result','catch','rpc','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request'];(function(_0x51ee5b,_0x469281){var _0x4305ec=function(_0x12db45){while(--_0x12db45){_0x51ee5b['push'](_0x51ee5b['shift']());}};_0x4305ec(++_0x469281);}(_0x0f38,0x179));var _0x80f3=function(_0x53797a,_0x30d518){_0x53797a=_0x53797a-0x0;var _0x3be412=_0x0f38[_0x53797a];return _0x3be412;};'use strict';var jayson=require(_0x80f3('0x0'));var BPromise=require(_0x80f3('0x1'));var logger=require(_0x80f3('0x2'))(_0x80f3('0x3'));var client=jayson[_0x80f3('0x4')][_0x80f3('0x5')]({'port':0x2329});client[_0x80f3('0x6')]=function(_0x2cf896,_0x5c817d){return new BPromise(function(_0x5bd2ce,_0x123945){return client[_0x80f3('0x7')](_0x2cf896,_0x5c817d)[_0x80f3('0x8')](function(_0x558005){logger[_0x80f3('0x9')]('rpc',_0x80f3('0x3'),_0x2cf896,_0x5c817d,_0x558005);if(_0x558005[_0x80f3('0xa')]){logger[_0x80f3('0xa')]('rpc',_0x80f3('0x3'),_0x2cf896,_0x558005['error']['message'],_0x5c817d);return _0x123945(_0x558005[_0x80f3('0xa')][_0x80f3('0xb')]);}else{return _0x5bd2ce(_0x558005[_0x80f3('0xc')]);}})[_0x80f3('0xd')](function(_0x376225){logger['error'](_0x80f3('0xe'),_0x80f3('0x3'),_0x2cf896,_0x376225,_0x5c817d);return _0x123945(_0x376225);});});};module[_0x80f3('0xf')]=client;
\ No newline at end of file
index dd2eb28..fea5d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda13=['getMailAccounts','then','initMailAccounts','refresh','getSettings','loginMailFrequency','catch','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve'];(function(_0x29c893,_0x30d870){var _0x10da08=function(_0x23a2a3){while(--_0x23a2a3){_0x29c893['push'](_0x29c893['shift']());}};_0x10da08(++_0x30d870);}(_0xda13,0x1e8));var _0x3da1=function(_0x2d6d88,_0x2ea070){_0x2d6d88=_0x2d6d88-0x0;var _0x1991b0=_0xda13[_0x2d6d88];return _0x1991b0;};'use strict';var server=require(_0x3da1('0x0'));var Realtime=require(_0x3da1('0x1'));var EmailChannel=require(_0x3da1('0x2'));var mailAccount=require(_0x3da1('0x3'));var setting=require(_0x3da1('0x4'));var logger=require(_0x3da1('0x5'))(_0x3da1('0x6'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x3da1('0x7')]()['then'](mailAccount[_0x3da1('0x8')]())[_0x3da1('0x9')](realtime[_0x3da1('0xa')]())['then'](function(){email[_0x3da1('0xb')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0x3da1('0x9')](function(){return initRealtime();})['then'](function(){return setting[_0x3da1('0xc')]();})[_0x3da1('0x9')](function(_0x5d72eb){return setInterval(initRealtime,_0x5d72eb[_0x3da1('0xd')]*0x3e8);})[_0x3da1('0xe')](function(_0xd26b2c){logger['error'](_0x3da1('0xf'),_0xd26b2c);});}main();
\ No newline at end of file
+var _0xb466=['getSettings','loginMailFrequency','catch','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','then','getMailAccounts','initMailAccounts','refresh'];(function(_0x76f25c,_0x1b8fee){var _0x5582f7=function(_0x258c5f){while(--_0x258c5f){_0x76f25c['push'](_0x76f25c['shift']());}};_0x5582f7(++_0x1b8fee);}(_0xb466,0x74));var _0x6b46=function(_0x2fd2d9,_0x34b414){_0x2fd2d9=_0x2fd2d9-0x0;var _0x3cfacf=_0xb466[_0x2fd2d9];return _0x3cfacf;};'use strict';var server=require(_0x6b46('0x0'));var Realtime=require(_0x6b46('0x1'));var EmailChannel=require(_0x6b46('0x2'));var mailAccount=require(_0x6b46('0x3'));var setting=require(_0x6b46('0x4'));var logger=require(_0x6b46('0x5'))('email');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise['resolve']()[_0x6b46('0x6')](mailAccount[_0x6b46('0x7')]())[_0x6b46('0x6')](realtime[_0x6b46('0x8')]())[_0x6b46('0x6')](function(){email[_0x6b46('0x9')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0x6b46('0x6')](function(){return initRealtime();})[_0x6b46('0x6')](function(){return setting[_0x6b46('0xa')]();})['then'](function(_0x5d3dbc){return setInterval(initRealtime,_0x5d3dbc[_0x6b46('0xb')]*0x3e8);})[_0x6b46('0xc')](function(_0xfe6af7){logger['error'](_0x6b46('0xd'),_0xfe6af7);});}main();
\ No newline at end of file
index 3ce817a..b59c36e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06d2=['refresh','hasOwnProperty','service','provider','custom','box','bind','end','handleImapEnd','error','status','handleImapBox','connected','messages','total','handleImapEmail','firstName','lastName','from','notify','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapError','send','Smtp','lastSync','verify','verified','messageStatus','lodash','moment','bluebird','md5','ioredis','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','Imap','isNil','stringify','mailAccount:update'];(function(_0x41973f,_0x59c025){var _0xa28236=function(_0x53dd46){while(--_0x53dd46){_0x41973f['push'](_0x41973f['shift']());}};_0xa28236(++_0x59c025);}(_0x06d2,0x168));var _0x206d=function(_0x25e20b,_0x1fb948){_0x25e20b=_0x25e20b-0x0;var _0x2cc584=_0x06d2[_0x25e20b];return _0x2cc584;};'use strict';var _=require(_0x206d('0x0'));var moment=require(_0x206d('0x1'));var BPromise=require(_0x206d('0x2'));var md5=require(_0x206d('0x3'));var Redis=require(_0x206d('0x4'));var config=require('../../../config/environment');var logger=require(_0x206d('0x5'))(_0x206d('0x6'));config[_0x206d('0x7')]=_[_0x206d('0x8')](config[_0x206d('0x7')],{'host':_0x206d('0x9'),'port':0x18eb});var io=require(_0x206d('0xa'))(new Redis(config[_0x206d('0x7')]));var EmailImap=require(_0x206d('0xb'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x206d('0xc'));var md5Accounts={};function EmailChannel(_0xc253c1){logger[_0x206d('0xd')](_0x206d('0xe'));this['mailAccounts']=_0xc253c1[_0x206d('0xf')];this[_0x206d('0x10')]={};this[_0x206d('0x11')]=new EmailSmtp();}EmailChannel[_0x206d('0x12')][_0x206d('0x13')]=function(_0x58ef93){var _0xbb53bc=this['mailAccounts'][_0x58ef93];var _0x30aa16={'id':_0xbb53bc['id'],'name':_0xbb53bc[_0x206d('0x14')],'key':_0xbb53bc['key'],'active':_0xbb53bc['active'],'Imap':{'status':_0xbb53bc[_0x206d('0x15')]['status'],'messageStatus':_0xbb53bc[_0x206d('0x15')]['messageStatus'],'total':_0xbb53bc[_0x206d('0x15')]['total']}};if(_[_0x206d('0x16')](md5Accounts[_0x58ef93])){md5Accounts[_0x58ef93]={};}var _0x549f80=md5(JSON[_0x206d('0x17')](_0x30aa16));if(md5Accounts[_0x58ef93][_0x206d('0x3')]!==_0x549f80){md5Accounts[_0x58ef93]['md5']=_0x549f80;io['emit'](_0x206d('0x18'),_0x30aa16);}};EmailChannel[_0x206d('0x12')][_0x206d('0x19')]=function(_0x4d8580){for(var _0x1d0cdd in _0x4d8580){if(_0x4d8580[_0x206d('0x1a')](_0x1d0cdd)){if(_0x4d8580[_0x1d0cdd][_0x206d('0x15')]&&_0x4d8580[_0x1d0cdd]['active']){var _0x287548=_0x4d8580[_0x1d0cdd][_0x206d('0x15')];if(!_0x287548[_0x206d('0x1b')]&&_0x4d8580[_0x1d0cdd][_0x206d('0x1c')]!==_0x206d('0x1d'))_0x287548[_0x206d('0x1b')]=_0x4d8580[_0x1d0cdd][_0x206d('0x1c')];if(!this[_0x206d('0x10')][_0x206d('0x1a')](_0x287548['id'])){this[_0x206d('0x10')][_0x287548['id']]=new EmailImap(_0x287548,_0x4d8580[_0x1d0cdd][_0x206d('0x6')]);this['imapAccounts'][_0x287548['id']]['on'](_0x206d('0x1e'),this['handleImapBox'][_0x206d('0x1f')](this,_0x1d0cdd));this['imapAccounts'][_0x287548['id']]['on'](_0x206d('0x6'),this['handleImapEmail'][_0x206d('0x1f')](this,_0x1d0cdd));this[_0x206d('0x10')][_0x287548['id']]['on'](_0x206d('0x20'),this[_0x206d('0x21')]['bind'](this,_0x1d0cdd));this[_0x206d('0x10')][_0x287548['id']]['on'](_0x206d('0x22'),this['handleImapError']['bind'](this,_0x1d0cdd));}}else{if(_['isNil'](this[_0x206d('0xf')][_0x1d0cdd][_0x206d('0x15')])){this['mailAccounts'][_0x1d0cdd]['Imap']={};}this[_0x206d('0xf')][_0x1d0cdd][_0x206d('0x15')][_0x206d('0x23')]='disabled';this[_0x206d('0xf')][_0x1d0cdd][_0x206d('0x15')]['messageStatus']='';this[_0x206d('0x13')](_0x1d0cdd);}}}};EmailChannel[_0x206d('0x12')][_0x206d('0x24')]=function(_0x158ec0,_0x39789e){if(this['mailAccounts'][_0x158ec0]){this[_0x206d('0xf')][_0x158ec0][_0x206d('0x15')][_0x206d('0x23')]=_0x206d('0x25');this['mailAccounts'][_0x158ec0][_0x206d('0x15')]['messageStatus']=_0x39789e[_0x206d('0x14')];if(_0x39789e[_0x206d('0x26')]){this[_0x206d('0xf')][_0x158ec0][_0x206d('0x15')][_0x206d('0x27')]=_0x39789e[_0x206d('0x26')][_0x206d('0x27')];}return this[_0x206d('0x13')](_0x158ec0);}};EmailChannel[_0x206d('0x12')][_0x206d('0x28')]=function(_0x39a9f3,_0xc4dff9){logger[_0x206d('0xd')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0xc4dff9[_0x206d('0x29')],_0xc4dff9[_0x206d('0x2a')],_0xc4dff9[_0x206d('0x2b')],_0x39a9f3);if(this[_0x206d('0xf')][_0x39a9f3]){return mailAccount[_0x206d('0x2c')](_0x39a9f3,_0xc4dff9)[_0x206d('0x2d')](function(_0xdb43ba){if(_0xdb43ba){logger[_0x206d('0xd')]('Mail\x20accepted\x20from\x20routing');}})[_0x206d('0x2e')](function(_0x21dd06){logger[_0x206d('0x22')](_0x206d('0x2f'),JSON['stringify'](_0x21dd06));});}};EmailChannel[_0x206d('0x12')][_0x206d('0x21')]=function(_0x1db256){if(this[_0x206d('0xf')][_0x1db256]&&this[_0x206d('0xf')][_0x1db256][_0x206d('0x15')]){if(this[_0x206d('0x10')][this[_0x206d('0xf')][_0x1db256]['Imap']['id']]){delete this['imapAccounts'][this[_0x206d('0xf')][_0x1db256][_0x206d('0x15')]['id']];}this[_0x206d('0xf')][_0x1db256][_0x206d('0x15')]['lastSync']=moment();this[_0x206d('0x13')](_0x1db256);}};EmailChannel[_0x206d('0x12')][_0x206d('0x30')]=function(_0x65892,_0x38deb1){if(this[_0x206d('0xf')][_0x65892]){this[_0x206d('0xf')][_0x65892][_0x206d('0x15')][_0x206d('0x23')]=_0x206d('0x22');this[_0x206d('0xf')][_0x65892][_0x206d('0x15')]['messageStatus']=_0x38deb1;return this[_0x206d('0x13')](_0x65892);}};EmailChannel[_0x206d('0x12')]['sendMail']=function(_0xca8276,_0x475e46){return this['smtp'][_0x206d('0x31')](_0xca8276,_0x475e46);};EmailChannel[_0x206d('0x12')]['verifySmtp']=function(_0xc8e018){var _0x1d238d=this;if(this[_0x206d('0xf')][_0xc8e018['id']]){if(_[_0x206d('0x16')](this[_0x206d('0xf')][_0xc8e018['id']]['Smtp'])){this[_0x206d('0xf')][_0xc8e018['id']][_0x206d('0x32')]={};}this['mailAccounts'][_0xc8e018['id']]['Smtp'][_0x206d('0x33')]=moment();return new BPromise(function(_0x242046,_0x5b553e){return _0x1d238d[_0x206d('0x11')][_0x206d('0x34')](_0xc8e018)[_0x206d('0x2d')](function(_0xdfac39){_0x1d238d[_0x206d('0xf')][_0xc8e018['id']]['Smtp'][_0x206d('0x23')]=_0x206d('0x35');_0x1d238d[_0x206d('0xf')][_0xc8e018['id']][_0x206d('0x32')][_0x206d('0x36')]='';_0x1d238d[_0x206d('0x13')](_0xc8e018['id']);_0x242046(_0xdfac39);})[_0x206d('0x2e')](function(_0x2de393){_0x1d238d[_0x206d('0xf')][_0xc8e018['id']][_0x206d('0x32')][_0x206d('0x23')]=_0x206d('0x22');_0x1d238d[_0x206d('0xf')][_0xc8e018['id']][_0x206d('0x32')][_0x206d('0x36')]=_0x2de393;_0x1d238d[_0x206d('0x13')](_0xc8e018['id']);_0x5b553e(_0x2de393);});});}return this[_0x206d('0x11')][_0x206d('0x34')](_0xc8e018);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x6f37=['./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','emit','key','active','Imap','status','total','stringify','md5','refresh','hasOwnProperty','service','provider','custom','box','handleImapEmail','bind','error','isNil','disabled','messageStatus','prototype','handleImapBox','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','info','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','lastSync','handleImapError','smtp','Smtp','verify','then','verified','exports','lodash','moment','bluebird','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap'];(function(_0x4227f7,_0x5e2633){var _0x4d394e=function(_0x1d7676){while(--_0x1d7676){_0x4227f7['push'](_0x4227f7['shift']());}};_0x4d394e(++_0x5e2633);}(_0x6f37,0x69));var _0x76f3=function(_0x460f81,_0x553431){_0x460f81=_0x460f81-0x0;var _0x423f0d=_0x6f37[_0x460f81];return _0x423f0d;};'use strict';var _=require(_0x76f3('0x0'));var moment=require(_0x76f3('0x1'));var BPromise=require(_0x76f3('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x76f3('0x3'));var logger=require(_0x76f3('0x4'))(_0x76f3('0x5'));config[_0x76f3('0x6')]=_[_0x76f3('0x7')](config[_0x76f3('0x6')],{'host':_0x76f3('0x8'),'port':0x18eb});var io=require(_0x76f3('0x9'))(new Redis(config[_0x76f3('0x6')]));var EmailImap=require(_0x76f3('0xa'));var EmailSmtp=require(_0x76f3('0xb'));var mailAccount=require(_0x76f3('0xc'));var md5Accounts={};function EmailChannel(_0xd67bf1){logger['info'](_0x76f3('0xd'));this[_0x76f3('0xe')]=_0xd67bf1[_0x76f3('0xe')];this[_0x76f3('0xf')]={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0x76f3('0x10')]=function(_0x2b54d8){var _0x2ccd59=this['mailAccounts'][_0x2b54d8];var _0x12d947={'id':_0x2ccd59['id'],'name':_0x2ccd59['name'],'key':_0x2ccd59[_0x76f3('0x11')],'active':_0x2ccd59[_0x76f3('0x12')],'Imap':{'status':_0x2ccd59[_0x76f3('0x13')][_0x76f3('0x14')],'messageStatus':_0x2ccd59[_0x76f3('0x13')]['messageStatus'],'total':_0x2ccd59[_0x76f3('0x13')][_0x76f3('0x15')]}};if(_['isNil'](md5Accounts[_0x2b54d8])){md5Accounts[_0x2b54d8]={};}var _0x4ff20e=md5(JSON[_0x76f3('0x16')](_0x12d947));if(md5Accounts[_0x2b54d8][_0x76f3('0x17')]!==_0x4ff20e){md5Accounts[_0x2b54d8][_0x76f3('0x17')]=_0x4ff20e;io[_0x76f3('0x10')]('mailAccount:update',_0x12d947);}};EmailChannel['prototype'][_0x76f3('0x18')]=function(_0x255881){for(var _0x53dddc in _0x255881){if(_0x255881[_0x76f3('0x19')](_0x53dddc)){if(_0x255881[_0x53dddc][_0x76f3('0x13')]&&_0x255881[_0x53dddc][_0x76f3('0x12')]){var _0x32931f=_0x255881[_0x53dddc]['Imap'];if(!_0x32931f[_0x76f3('0x1a')]&&_0x255881[_0x53dddc][_0x76f3('0x1b')]!==_0x76f3('0x1c'))_0x32931f[_0x76f3('0x1a')]=_0x255881[_0x53dddc][_0x76f3('0x1b')];if(!this[_0x76f3('0xf')][_0x76f3('0x19')](_0x32931f['id'])){this[_0x76f3('0xf')][_0x32931f['id']]=new EmailImap(_0x32931f,_0x255881[_0x53dddc][_0x76f3('0x5')]);this[_0x76f3('0xf')][_0x32931f['id']]['on'](_0x76f3('0x1d'),this['handleImapBox']['bind'](this,_0x53dddc));this['imapAccounts'][_0x32931f['id']]['on'](_0x76f3('0x5'),this[_0x76f3('0x1e')]['bind'](this,_0x53dddc));this[_0x76f3('0xf')][_0x32931f['id']]['on']('end',this['handleImapEnd'][_0x76f3('0x1f')](this,_0x53dddc));this[_0x76f3('0xf')][_0x32931f['id']]['on'](_0x76f3('0x20'),this['handleImapError'][_0x76f3('0x1f')](this,_0x53dddc));}}else{if(_[_0x76f3('0x21')](this['mailAccounts'][_0x53dddc]['Imap'])){this[_0x76f3('0xe')][_0x53dddc][_0x76f3('0x13')]={};}this['mailAccounts'][_0x53dddc][_0x76f3('0x13')][_0x76f3('0x14')]=_0x76f3('0x22');this['mailAccounts'][_0x53dddc][_0x76f3('0x13')][_0x76f3('0x23')]='';this[_0x76f3('0x10')](_0x53dddc);}}}};EmailChannel[_0x76f3('0x24')][_0x76f3('0x25')]=function(_0x306ac8,_0x44b908){if(this['mailAccounts'][_0x306ac8]){this[_0x76f3('0xe')][_0x306ac8]['Imap'][_0x76f3('0x14')]='connected';this[_0x76f3('0xe')][_0x306ac8][_0x76f3('0x13')]['messageStatus']=_0x44b908[_0x76f3('0x26')];if(_0x44b908['messages']){this['mailAccounts'][_0x306ac8]['Imap']['total']=_0x44b908[_0x76f3('0x27')][_0x76f3('0x15')];}return this[_0x76f3('0x10')](_0x306ac8);}};EmailChannel[_0x76f3('0x24')]['handleImapEmail']=function(_0x133136,_0x2fc1c9){logger['info'](_0x76f3('0x28'),_0x2fc1c9[_0x76f3('0x29')],_0x2fc1c9[_0x76f3('0x2a')],_0x2fc1c9[_0x76f3('0x2b')],_0x133136);if(this['mailAccounts'][_0x133136]){return mailAccount[_0x76f3('0x2c')](_0x133136,_0x2fc1c9)['then'](function(_0x313c16){if(_0x313c16){logger[_0x76f3('0x2d')](_0x76f3('0x2e'));}})[_0x76f3('0x2f')](function(_0x33d0b3){logger[_0x76f3('0x20')](_0x76f3('0x30'),JSON[_0x76f3('0x16')](_0x33d0b3));});}};EmailChannel[_0x76f3('0x24')][_0x76f3('0x31')]=function(_0x2325a4){if(this[_0x76f3('0xe')][_0x2325a4]&&this[_0x76f3('0xe')][_0x2325a4][_0x76f3('0x13')]){if(this[_0x76f3('0xf')][this['mailAccounts'][_0x2325a4][_0x76f3('0x13')]['id']]){delete this[_0x76f3('0xf')][this['mailAccounts'][_0x2325a4]['Imap']['id']];}this[_0x76f3('0xe')][_0x2325a4]['Imap'][_0x76f3('0x32')]=moment();this['emit'](_0x2325a4);}};EmailChannel[_0x76f3('0x24')][_0x76f3('0x33')]=function(_0x2d353f,_0x3a0cd8){if(this[_0x76f3('0xe')][_0x2d353f]){this[_0x76f3('0xe')][_0x2d353f][_0x76f3('0x13')]['status']='error';this[_0x76f3('0xe')][_0x2d353f]['Imap'][_0x76f3('0x23')]=_0x3a0cd8;return this['emit'](_0x2d353f);}};EmailChannel[_0x76f3('0x24')]['sendMail']=function(_0x91101e,_0x309a33){return this[_0x76f3('0x34')]['send'](_0x91101e,_0x309a33);};EmailChannel['prototype']['verifySmtp']=function(_0x2469f6){var _0x5b3d18=this;if(this[_0x76f3('0xe')][_0x2469f6['id']]){if(_[_0x76f3('0x21')](this[_0x76f3('0xe')][_0x2469f6['id']][_0x76f3('0x35')])){this[_0x76f3('0xe')][_0x2469f6['id']][_0x76f3('0x35')]={};}this[_0x76f3('0xe')][_0x2469f6['id']][_0x76f3('0x35')][_0x76f3('0x32')]=moment();return new BPromise(function(_0x5f97ee,_0x5e0018){return _0x5b3d18[_0x76f3('0x34')][_0x76f3('0x36')](_0x2469f6)[_0x76f3('0x37')](function(_0x5735fb){_0x5b3d18[_0x76f3('0xe')][_0x2469f6['id']]['Smtp']['status']=_0x76f3('0x38');_0x5b3d18[_0x76f3('0xe')][_0x2469f6['id']][_0x76f3('0x35')][_0x76f3('0x23')]='';_0x5b3d18[_0x76f3('0x10')](_0x2469f6['id']);_0x5f97ee(_0x5735fb);})[_0x76f3('0x2f')](function(_0x4fedc5){_0x5b3d18[_0x76f3('0xe')][_0x2469f6['id']][_0x76f3('0x35')]['status']=_0x76f3('0x20');_0x5b3d18[_0x76f3('0xe')][_0x2469f6['id']][_0x76f3('0x35')][_0x76f3('0x23')]=_0x4fedc5;_0x5b3d18[_0x76f3('0x10')](_0x2469f6['id']);_0x5e0018(_0x4fedc5);});});}return this['smtp']['verify'](_0x2469f6);};module[_0x76f3('0x39')]=EmailChannel;
\ No newline at end of file
index fe5137a..856a1a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea7=['once','handleEnd','bind','handleError','connect','prototype','connTimeout','authTimeout','service','user','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','handleReady','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','UNSEEN','length','message','handleFetchMessage','handleFetchError','body','attributes','end','handleMessageAttributes','handleMessageEnd','handleSimpleParser','error','parser','handleFetchEnd','closeBox','stringify','textCode','hasOwnProperty','lodash','util','mailparser','simpleParser','iconv','events','EventEmitter','./utils','../../../config/logger','email','mailbox','account','getAccount','imap','ready'];(function(_0x1a90f6,_0x1dde5b){var _0x18b95a=function(_0x43bb9a){while(--_0x43bb9a){_0x1a90f6['push'](_0x1a90f6['shift']());}};_0x18b95a(++_0x1dde5b);}(_0x4ea7,0xed));var _0x74ea=function(_0x2bb9cd,_0x13c6eb){_0x2bb9cd=_0x2bb9cd-0x0;var _0x150406=_0x4ea7[_0x2bb9cd];return _0x150406;};'use strict';var _=require(_0x74ea('0x0'));var util=require(_0x74ea('0x1'));var Imap=require('imap');var simpleParser=require(_0x74ea('0x2'))[_0x74ea('0x3')];var Iconv=require(_0x74ea('0x4'))['Iconv'];var EventEmitter=require(_0x74ea('0x5'))[_0x74ea('0x6')];var utils=require(_0x74ea('0x7'));var logger=require(_0x74ea('0x8'))(_0x74ea('0x9'));function EmailImap(_0x1629e5,_0x3feb81){this[_0x74ea('0xa')]=_0x1629e5[_0x74ea('0xa')];this[_0x74ea('0xb')]=this[_0x74ea('0xc')](_0x1629e5,_0x3feb81);this[_0x74ea('0xd')]=new Imap(this['account']);this[_0x74ea('0xd')]['once'](_0x74ea('0xe'),this['handleReady']['bind'](this));this[_0x74ea('0xd')][_0x74ea('0xf')]('end',this[_0x74ea('0x10')][_0x74ea('0x11')](this));this[_0x74ea('0xd')]['on']('error',this[_0x74ea('0x12')]['bind'](this));this[_0x74ea('0xd')][_0x74ea('0x13')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x74ea('0x14')][_0x74ea('0xc')]=function(_0x1765fe,_0x480597){var _0x1d28cf={'connTimeout':_0x1765fe[_0x74ea('0x15')]?_0x1765fe['connTimeout']*0x3e8:0x2710,'authTimeout':_0x1765fe[_0x74ea('0x16')]?_0x1765fe[_0x74ea('0x16')]*0x3e8:0x1388};if(_0x1765fe[_0x74ea('0x17')]){_0x1d28cf[_0x74ea('0x18')]=_0x1765fe['user'];if(_0x1765fe['modernAuthentication']){_0x1d28cf[_0x74ea('0x19')]=utils[_0x74ea('0x1a')](_0x1765fe[_0x74ea('0x1b')][_0x74ea('0x1c')],_0x1765fe[_0x74ea('0x18')]);}else{_0x1d28cf[_0x74ea('0x1d')]=_0x1765fe[_0x74ea('0x1d')];}}else{if(_0x1765fe[_0x74ea('0x1e')]){_0x1d28cf['user']=_0x1765fe[_0x74ea('0x18')];_0x1d28cf[_0x74ea('0x1d')]=_0x1765fe[_0x74ea('0x1d')];}}_0x1d28cf['email']=_0x480597||_0x1765fe[_0x74ea('0x18')]||_0x74ea('0x1f');_0x1d28cf[_0x74ea('0x20')]=_0x1765fe['host'];_0x1d28cf[_0x74ea('0x21')]=_0x1765fe[_0x74ea('0x21')]||0x3e1;if(_0x1765fe[_0x74ea('0x22')]){_0x1d28cf[_0x74ea('0x22')]=!![];}else{_0x1d28cf[_0x74ea('0x22')]=![];_0x1d28cf[_0x74ea('0x23')]=_0x74ea('0x24');}return _0x1d28cf;};EmailImap[_0x74ea('0x14')][_0x74ea('0x25')]=function(){this['imap'][_0x74ea('0x26')](this['mailbox'],![],this[_0x74ea('0x27')][_0x74ea('0x11')](this));};EmailImap[_0x74ea('0x14')][_0x74ea('0x27')]=function(_0x54b331,_0x4084d0){if(_0x54b331){this[_0x74ea('0x12')](_0x54b331,!![]);}else{this[_0x74ea('0x28')](_0x74ea('0x29'),_0x4084d0);this[_0x74ea('0x2a')]();}};EmailImap[_0x74ea('0x14')][_0x74ea('0x2b')]=function(_0x2ff5cf){if(_0x2ff5cf){this[_0x74ea('0x12')](_0x2ff5cf,!![]);}else{this[_0x74ea('0xd')]['end']();}};EmailImap[_0x74ea('0x14')][_0x74ea('0x2a')]=function(){this[_0x74ea('0xd')][_0x74ea('0x2c')]([_0x74ea('0x2d')],this['handleReadUnseen']['bind'](this));};EmailImap[_0x74ea('0x14')]['handleReadUnseen']=function(_0x47f6db,_0x25c47d){if(_0x47f6db){this[_0x74ea('0x12')](_0x47f6db,!![]);}else{if(_0x25c47d[_0x74ea('0x2e')]){try{var _0x41d29a=this[_0x74ea('0xd')]['fetch'](_0x25c47d,{'bodies':'','markSeen':!![]});_0x41d29a['on'](_0x74ea('0x2f'),this[_0x74ea('0x30')]['bind'](this));_0x41d29a[_0x74ea('0xf')]('error',this[_0x74ea('0x31')][_0x74ea('0x11')](this));_0x41d29a['once']('end',this['handleFetchEnd'][_0x74ea('0x11')](this));}catch(_0x2afd63){logger['error'](_0x2afd63);}}else{this[_0x74ea('0xd')]['closeBox'](!![],this[_0x74ea('0x2b')][_0x74ea('0x11')](this));}}};EmailImap[_0x74ea('0x14')][_0x74ea('0x30')]=function(_0xaf316e){_0xaf316e['on'](_0x74ea('0x32'),this['handleMessageBody'][_0x74ea('0x11')](this));_0xaf316e[_0x74ea('0xf')](_0x74ea('0x33'),this['handleMessageAttributes'][_0x74ea('0x11')](this));_0xaf316e[_0x74ea('0xf')](_0x74ea('0x34'),this['handleMessageEnd'][_0x74ea('0x11')](this));};EmailImap['prototype']['handleMessageBody']=function(_0x194dea){simpleParser(_0x194dea,{'Iconv':Iconv},this['handleSimpleParser'][_0x74ea('0x11')](this));};EmailImap[_0x74ea('0x14')][_0x74ea('0x35')]=function(){};EmailImap[_0x74ea('0x14')][_0x74ea('0x36')]=function(){};EmailImap[_0x74ea('0x14')][_0x74ea('0x37')]=function(_0x220dc9,_0x3cdd89){if(_0x220dc9){logger[_0x74ea('0x38')](_0x220dc9);}else{var _0x4d0518=this;utils[_0x74ea('0x39')](this['account'],_0x3cdd89,function(_0x212a28){_0x4d0518[_0x74ea('0x28')]('email',_0x212a28);});}};EmailImap['prototype'][_0x74ea('0x3a')]=function(){this[_0x74ea('0xd')][_0x74ea('0x3b')](!![],this[_0x74ea('0x2b')][_0x74ea('0x11')](this));};EmailImap['prototype'][_0x74ea('0x31')]=function(_0x26abed){this['handleError'](_0x26abed);this[_0x74ea('0xd')][_0x74ea('0x3b')](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0x74ea('0x14')][_0x74ea('0x10')]=function(){this[_0x74ea('0x28')]('end');};EmailImap[_0x74ea('0x14')]['handleError']=function(_0x2f5d34,_0x10c912){logger[_0x74ea('0x38')](_0x74ea('0x12'),this[_0x74ea('0xb')][_0x74ea('0x9')],JSON[_0x74ea('0x3c')](_0x2f5d34));var _0x5079b5='';if(_0x2f5d34){if(_0x2f5d34[_0x74ea('0x3d')]){_0x5079b5=_0x2f5d34[_0x74ea('0x3d')];}else{for(var _0x4ca203 in _0x2f5d34){if(_0x2f5d34[_0x74ea('0x3e')](_0x4ca203)){_0x5079b5+=_['upperFirst'](_0x4ca203)+':\x20'+_0x2f5d34[_0x4ca203]+'\x0a';}}}}if(_0x10c912){this[_0x74ea('0xd')]['end']();}else{this['emit'](_0x74ea('0x38'),_0x5079b5);this[_0x74ea('0x28')](_0x74ea('0x34'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0xe71d=['handleFetchEnd','closeBox','handleCloseBox','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','handleMessageEnd','parser','textCode','upperFirst','exports','lodash','imap','simpleParser','iconv','Iconv','events','./utils','../../../config/logger','email','mailbox','getAccount','account','once','ready','handleReady','bind','end','handleEnd','error','connect','inherits','prototype','connTimeout','authTimeout','service','user','modernAuthentication','generateXOAuth2Token','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','handleError','emit','box','readUnseen','UNSEEN','handleReadUnseen','fetch','message','handleFetchMessage','handleFetchError'];(function(_0x12705d,_0x10fc3c){var _0x3067d3=function(_0x48769f){while(--_0x48769f){_0x12705d['push'](_0x12705d['shift']());}};_0x3067d3(++_0x10fc3c);}(_0xe71d,0x1c6));var _0xde71=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xe71d[_0x50007c];return _0x5c1ec7;};'use strict';var _=require(_0xde71('0x0'));var util=require('util');var Imap=require(_0xde71('0x1'));var simpleParser=require('mailparser')[_0xde71('0x2')];var Iconv=require(_0xde71('0x3'))[_0xde71('0x4')];var EventEmitter=require(_0xde71('0x5'))['EventEmitter'];var utils=require(_0xde71('0x6'));var logger=require(_0xde71('0x7'))(_0xde71('0x8'));function EmailImap(_0x1b7505,_0xd9d2dd){this[_0xde71('0x9')]=_0x1b7505[_0xde71('0x9')];this['account']=this[_0xde71('0xa')](_0x1b7505,_0xd9d2dd);this[_0xde71('0x1')]=new Imap(this[_0xde71('0xb')]);this[_0xde71('0x1')][_0xde71('0xc')](_0xde71('0xd'),this[_0xde71('0xe')][_0xde71('0xf')](this));this[_0xde71('0x1')]['once'](_0xde71('0x10'),this[_0xde71('0x11')][_0xde71('0xf')](this));this[_0xde71('0x1')]['on'](_0xde71('0x12'),this['handleError'][_0xde71('0xf')](this));this[_0xde71('0x1')][_0xde71('0x13')]();}util[_0xde71('0x14')](EmailImap,EventEmitter);EmailImap[_0xde71('0x15')][_0xde71('0xa')]=function(_0x5b396f,_0x33e19a){var _0x2c9244={'connTimeout':_0x5b396f['connTimeout']?_0x5b396f[_0xde71('0x16')]*0x3e8:0x2710,'authTimeout':_0x5b396f[_0xde71('0x17')]?_0x5b396f['authTimeout']*0x3e8:0x1388};if(_0x5b396f[_0xde71('0x18')]){_0x2c9244[_0xde71('0x19')]=_0x5b396f[_0xde71('0x19')];if(_0x5b396f[_0xde71('0x1a')]){_0x2c9244['xoauth2']=utils[_0xde71('0x1b')](_0x5b396f[_0xde71('0x1c')][_0xde71('0x1d')],_0x5b396f[_0xde71('0x19')]);}else{_0x2c9244[_0xde71('0x1e')]=_0x5b396f['password'];}}else{if(_0x5b396f[_0xde71('0x1f')]){_0x2c9244[_0xde71('0x19')]=_0x5b396f['user'];_0x2c9244[_0xde71('0x1e')]=_0x5b396f[_0xde71('0x1e')];}}_0x2c9244[_0xde71('0x8')]=_0x33e19a||_0x5b396f[_0xde71('0x19')]||_0xde71('0x20');_0x2c9244[_0xde71('0x21')]=_0x5b396f[_0xde71('0x21')];_0x2c9244[_0xde71('0x22')]=_0x5b396f[_0xde71('0x22')]||0x3e1;if(_0x5b396f[_0xde71('0x23')]){_0x2c9244[_0xde71('0x23')]=!![];}else{_0x2c9244[_0xde71('0x23')]=![];_0x2c9244[_0xde71('0x24')]=_0xde71('0x25');}return _0x2c9244;};EmailImap[_0xde71('0x15')][_0xde71('0xe')]=function(){this[_0xde71('0x1')][_0xde71('0x26')](this['mailbox'],![],this[_0xde71('0x27')][_0xde71('0xf')](this));};EmailImap[_0xde71('0x15')][_0xde71('0x27')]=function(_0x4596ce,_0x4a527e){if(_0x4596ce){this[_0xde71('0x28')](_0x4596ce,!![]);}else{this[_0xde71('0x29')](_0xde71('0x2a'),_0x4a527e);this[_0xde71('0x2b')]();}};EmailImap[_0xde71('0x15')]['handleCloseBox']=function(_0x2af495){if(_0x2af495){this[_0xde71('0x28')](_0x2af495,!![]);}else{this[_0xde71('0x1')][_0xde71('0x10')]();}};EmailImap[_0xde71('0x15')][_0xde71('0x2b')]=function(){this[_0xde71('0x1')]['search']([_0xde71('0x2c')],this['handleReadUnseen'][_0xde71('0xf')](this));};EmailImap[_0xde71('0x15')][_0xde71('0x2d')]=function(_0x268d44,_0x3ea12e){if(_0x268d44){this[_0xde71('0x28')](_0x268d44,!![]);}else{if(_0x3ea12e['length']){try{var _0x1ba778=this[_0xde71('0x1')][_0xde71('0x2e')](_0x3ea12e,{'bodies':'','markSeen':!![]});_0x1ba778['on'](_0xde71('0x2f'),this[_0xde71('0x30')][_0xde71('0xf')](this));_0x1ba778[_0xde71('0xc')](_0xde71('0x12'),this[_0xde71('0x31')]['bind'](this));_0x1ba778['once']('end',this[_0xde71('0x32')][_0xde71('0xf')](this));}catch(_0x1ab1c6){logger[_0xde71('0x12')](_0x1ab1c6);}}else{this[_0xde71('0x1')][_0xde71('0x33')](!![],this[_0xde71('0x34')][_0xde71('0xf')](this));}}};EmailImap[_0xde71('0x15')][_0xde71('0x30')]=function(_0x4e7d76){_0x4e7d76['on'](_0xde71('0x35'),this[_0xde71('0x36')][_0xde71('0xf')](this));_0x4e7d76['once'](_0xde71('0x37'),this[_0xde71('0x38')][_0xde71('0xf')](this));_0x4e7d76[_0xde71('0xc')](_0xde71('0x10'),this['handleMessageEnd'][_0xde71('0xf')](this));};EmailImap[_0xde71('0x15')][_0xde71('0x36')]=function(_0x27bf2f){simpleParser(_0x27bf2f,{'Iconv':Iconv},this[_0xde71('0x39')][_0xde71('0xf')](this));};EmailImap['prototype'][_0xde71('0x38')]=function(){};EmailImap[_0xde71('0x15')][_0xde71('0x3a')]=function(){};EmailImap[_0xde71('0x15')][_0xde71('0x39')]=function(_0x575af0,_0x22c3b7){if(_0x575af0){logger['error'](_0x575af0);}else{var _0x3e6ea4=this;utils[_0xde71('0x3b')](this[_0xde71('0xb')],_0x22c3b7,function(_0x5aa5eb){_0x3e6ea4['emit']('email',_0x5aa5eb);});}};EmailImap['prototype'][_0xde71('0x32')]=function(){this[_0xde71('0x1')][_0xde71('0x33')](!![],this['handleCloseBox'][_0xde71('0xf')](this));};EmailImap[_0xde71('0x15')][_0xde71('0x31')]=function(_0x376935){this[_0xde71('0x28')](_0x376935);this[_0xde71('0x1')][_0xde71('0x33')](!![],this[_0xde71('0x34')][_0xde71('0xf')](this));};EmailImap[_0xde71('0x15')]['handleEnd']=function(){this[_0xde71('0x29')]('end');};EmailImap[_0xde71('0x15')]['handleError']=function(_0x530254,_0x3c3f56){logger[_0xde71('0x12')]('handleError',this[_0xde71('0xb')]['email'],JSON['stringify'](_0x530254));var _0x312738='';if(_0x530254){if(_0x530254['textCode']){_0x312738=_0x530254[_0xde71('0x3c')];}else{for(var _0x40fcc9 in _0x530254){if(_0x530254['hasOwnProperty'](_0x40fcc9)){_0x312738+=_[_0xde71('0x3d')](_0x40fcc9)+':\x20'+_0x530254[_0x40fcc9]+'\x0a';}}}}if(_0x3c3f56){this[_0xde71('0x1')][_0xde71('0x10')]();}else{this[_0xde71('0x29')](_0xde71('0x12'),_0x312738);this[_0xde71('0x29')](_0xde71('0x10'));}};module[_0xde71('0x3e')]=EmailImap;
\ No newline at end of file
index f9481d2..0c64824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb498=['createTransport','use','toString','verify','Not\x20verifired','exports','prototype'];(function(_0x34fa9f,_0x175166){var _0x3714aa=function(_0x388039){while(--_0x388039){_0x34fa9f['push'](_0x34fa9f['shift']());}};_0x3714aa(++_0x175166);}(_0xb498,0xca));var _0x8b49=function(_0x2b3a35,_0x2a3046){_0x2b3a35=_0x2b3a35-0x0;var _0x1ef88f=_0xb498[_0x2b3a35];return _0x1ef88f;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x8b49('0x0')]['send']=function(_0x29a979,_0x293f6b){return new Promise(function(_0xb8f2e0,_0x2c19bc){var _0x1fdc10=nodemailer[_0x8b49('0x1')](_0x29a979);_0x1fdc10[_0x8b49('0x2')]('compile',inlineBase64());_0x1fdc10['sendMail'](_0x293f6b,function(_0x580569,_0x4e87cf){if(_0x580569){_0x2c19bc(_0x580569[_0x8b49('0x3')]());}else{_0xb8f2e0(_0x4e87cf);}});});};EmailSmtp[_0x8b49('0x0')]['verify']=function(_0x4aa4b3){return new Promise(function(_0x51a090,_0x7fd1a){var _0x21325b=nodemailer[_0x8b49('0x1')](_0x4aa4b3);_0x21325b[_0x8b49('0x4')](function(_0x15b85c,_0x467bf1){if(_0x15b85c){_0x7fd1a(_0x15b85c['toString']());}else{if(_0x467bf1){_0x51a090(_0x467bf1);}else{_0x7fd1a(_0x8b49('0x5'));}}});});};module[_0x8b49('0x6')]=EmailSmtp;
\ No newline at end of file
+var _0xccf9=['send','use','compile','sendMail','toString','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype'];(function(_0x565464,_0x3a45d8){var _0x3dcf07=function(_0x3b205b){while(--_0x3b205b){_0x565464['push'](_0x565464['shift']());}};_0x3dcf07(++_0x3a45d8);}(_0xccf9,0x152));var _0x9ccf=function(_0x26a71b,_0x3fc828){_0x26a71b=_0x26a71b-0x0;var _0x21e1d8=_0xccf9[_0x26a71b];return _0x21e1d8;};'use strict';var nodemailer=require(_0x9ccf('0x0'));var inlineBase64=require(_0x9ccf('0x1'));function EmailSmtp(){}EmailSmtp[_0x9ccf('0x2')][_0x9ccf('0x3')]=function(_0x5a600e,_0x5bd5ac){return new Promise(function(_0x28b59b,_0x25a8a){var _0x1231c8=nodemailer['createTransport'](_0x5a600e);_0x1231c8[_0x9ccf('0x4')](_0x9ccf('0x5'),inlineBase64());_0x1231c8[_0x9ccf('0x6')](_0x5bd5ac,function(_0x22c50d,_0x11494e){if(_0x22c50d){_0x25a8a(_0x22c50d[_0x9ccf('0x7')]());}else{_0x28b59b(_0x11494e);}});});};EmailSmtp['prototype'][_0x9ccf('0x8')]=function(_0x55edb8){return new Promise(function(_0x315821,_0x54a5d2){var _0x32abb1=nodemailer['createTransport'](_0x55edb8);_0x32abb1[_0x9ccf('0x8')](function(_0xe4b046,_0x488e22){if(_0xe4b046){_0x54a5d2(_0xe4b046['toString']());}else{if(_0x488e22){_0x315821(_0x488e22);}else{_0x54a5d2(_0x9ccf('0x9'));}}});});};module[_0x9ccf('0xa')]=EmailSmtp;
\ No newline at end of file
index 01c5f67..5d5432b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b4=['node-tnef','email','../../../config/environment','value','address','anonymous','head','name','indexOf','split','slice','join','Anonymous','length','pop','isEmpty','html','includes','<img','attachments','forEach','push','filename','replace','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','message','originTo','originCc','bcc','attach','type','attachment','attachment-','format','now','root','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','isAutoreply','parser','from','subject','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','info','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','base64','randomstring','path','util'];(function(_0x3948c3,_0x5828f7){var _0x2e860e=function(_0x5e4b68){while(--_0x5e4b68){_0x3948c3['push'](_0x3948c3['shift']());}};_0x2e860e(++_0x5828f7);}(_0xc2b4,0x105));var _0x4c2b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc2b4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require('moment');var random=require(_0x4c2b('0x0'));var fs=require('fs');var path=require(_0x4c2b('0x1'));var util=require(_0x4c2b('0x2'));var tnef=require(_0x4c2b('0x3'));var logger=require('../../../config/logger')(_0x4c2b('0x4'));var config=require(_0x4c2b('0x5'));function getAddress(_0x5d9d40){var _0x388fa2=_['head'](_0x5d9d40[_0x4c2b('0x6')]);return _0x388fa2&&_0x388fa2[_0x4c2b('0x7')]?_0x388fa2[_0x4c2b('0x7')]:_0x4c2b('0x8')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x547234){var _0x20e2bc=_[_0x4c2b('0x9')](_0x547234['value']);if(_0x20e2bc&&_0x20e2bc['name']){if(_0x20e2bc[_0x4c2b('0xa')]==_0x20e2bc['address']){return _0x20e2bc[_0x4c2b('0xa')]['substring'](0x0,_0x20e2bc[_0x4c2b('0xa')][_0x4c2b('0xb')]('@'));}var _0x444e4b=_0x20e2bc[_0x4c2b('0xa')][_0x4c2b('0xc')](/\s+/);return _0x444e4b['length']>0x1?_0x444e4b[_0x4c2b('0xd')](0x0,-0x1)[_0x4c2b('0xe')]('\x20'):_0x20e2bc['name'];}return _0x4c2b('0xf');}function getLastName(_0x4930fa){var _0x2435a8=_['head'](_0x4930fa['value']);if(_0x2435a8&&_0x2435a8[_0x4c2b('0xa')]){var _0x28e9dd=_0x2435a8[_0x4c2b('0xa')][_0x4c2b('0xc')](/\s+/);return _0x28e9dd[_0x4c2b('0x10')]>0x1?_0x28e9dd[_0x4c2b('0x11')]():'';}return'';}function getMails(_0x5bd138,_0x58a867){var _0x1720f5='';for(var _0x447b1c=0x0;_0x447b1c<_0x58a867[_0x4c2b('0x6')][_0x4c2b('0x10')];_0x447b1c+=0x1){if(_0x58a867['value'][_0x447b1c][_0x4c2b('0x7')]!==_0x5bd138){if(!_[_0x4c2b('0x12')](_0x1720f5)){_0x1720f5+=',';}_0x1720f5+=_0x58a867[_0x4c2b('0x6')][_0x447b1c][_0x4c2b('0xa')]||_0x58a867['value'][_0x447b1c][_0x4c2b('0x7')]||'';_0x1720f5+='\x20<';_0x1720f5+=_0x58a867[_0x4c2b('0x6')][_0x447b1c][_0x4c2b('0x7')]?_0x58a867['value'][_0x447b1c]['address']:_0x4c2b('0x8')+random['generate'](0x6)+'@xcally.com';_0x1720f5+='>';}}return _0x1720f5;}function parseEmail(_0x1d023a,_0x25964a,_0x4be0c0){if(_0x25964a[_0x4c2b('0x13')]){var _0x592aeb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x592aeb['test'](_0x25964a[_0x4c2b('0x13')])){_0x25964a[_0x4c2b('0x13')]=_0x25964a[_0x4c2b('0x13')]['replace'](_0x592aeb,'');}if(_0x25964a['html'][_0x4c2b('0x14')](_0x4c2b('0x15'))){var _0x3d19f2=[];_0x25964a[_0x4c2b('0x16')][_0x4c2b('0x17')](_0x470412=>{_0x3d19f2[_0x4c2b('0x18')](_0x470412[_0x4c2b('0x19')]);});var _0x183e0a=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1c9327=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x156691=_0x25964a[_0x4c2b('0x13')][_0x4c2b('0x1a')](_0x1c9327,'_SRC');var _0x1e98a5=_0x156691[_0x4c2b('0x1a')](_0x183e0a,_0x4c2b('0x1b'));for(let _0x36a6dd=0x0;_0x36a6dd<_0x3d19f2[_0x4c2b('0x10')];_0x36a6dd++){var _0xe3a059=_0x1e98a5[_0x4c2b('0x1a')](_0x4c2b('0x1b'),_0x4c2b('0x1c')+_0x3d19f2[_0x36a6dd]+_0x4c2b('0x1d'));_0x1e98a5=_0xe3a059;}_0x25964a[_0x4c2b('0x13')]=_0x1e98a5;}_0x4be0c0['body']=_0x25964a[_0x4c2b('0x13')];}else{_0x4be0c0[_0x4c2b('0x1e')]=_0x25964a['textAsHtml'];}if(_0x4be0c0['body']){_0x4be0c0[_0x4c2b('0x1e')]=_0x4be0c0[_0x4c2b('0x1e')][_0x4c2b('0x1a')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x25964a['to']){_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x20')]=getMails(null,_0x25964a['to']);var _0x5b6b02=getMails(_0x1d023a[_0x4c2b('0x4')],_0x25964a['to']);if(!_[_0x4c2b('0x12')](_0x5b6b02)){_0x4be0c0[_0x4c2b('0x1f')]['cc']+=_0x5b6b02;}}if(_0x25964a['cc']){_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x21')]=getMails(null,_0x25964a['cc']);var _0x3f1fe1=getMails(_0x1d023a[_0x4c2b('0x4')],_0x25964a['cc']);if(!_[_0x4c2b('0x12')](_0x3f1fe1)){if(!_[_0x4c2b('0x12')](_0x4be0c0[_0x4c2b('0x1f')]['cc'])){_0x4be0c0[_0x4c2b('0x1f')]['cc']+=',';}_0x4be0c0[_0x4c2b('0x1f')]['cc']+=_0x3f1fe1;}}if(!_[_0x4c2b('0x14')](_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x20')],_0x1d023a[_0x4c2b('0x4')])&&!_[_0x4c2b('0x14')](_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x21')],_0x1d023a[_0x4c2b('0x4')])){_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x22')]=_0x1d023a[_0x4c2b('0x4')];}if(_0x25964a[_0x4c2b('0x16')]&&_0x25964a['attachments'][_0x4c2b('0x10')]){_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x23')]=_0x25964a[_0x4c2b('0x16')][_0x4c2b('0x10')];for(var _0x1309d7=0x0,_0x24073c,_0x4c6c26,_0x2dc87f;_0x1309d7<_0x25964a[_0x4c2b('0x16')][_0x4c2b('0x10')];_0x1309d7+=0x1){if(_0x25964a[_0x4c2b('0x16')][_0x1309d7][_0x4c2b('0x24')]===_0x4c2b('0x25')){_0x2dc87f=_0x25964a[_0x4c2b('0x16')][_0x1309d7][_0x4c2b('0x19')]||_0x4c2b('0x26')+_0x1309d7;_0x24073c=util[_0x4c2b('0x27')]('%s-%s',Date[_0x4c2b('0x28')](),_0x2dc87f);_0x4c6c26=path[_0x4c2b('0xe')](config[_0x4c2b('0x29')],'server/files/attachments/',_0x24073c);fs['writeFileSync'](_0x4c6c26,_0x25964a[_0x4c2b('0x16')][_0x1309d7]['content']);_0x4be0c0[_0x4c2b('0x1f')][_0x4c2b('0x16')][_0x4c2b('0x18')]({'name':_0x2dc87f,'basename':_0x24073c,'type':_0x25964a[_0x4c2b('0x16')][_0x1309d7]['contentType'],'filepath':_0x4c6c26});}}}if(_0x25964a[_0x4c2b('0x2a')]&&_0x25964a['headerLines'][_0x4c2b('0x10')]>0x0){var _0x3fb02d=[_0x4c2b('0x2b'),_0x4c2b('0x2c'),_0x4c2b('0x2d')];for(var _0x3a7027=0x0;_0x3a7027<_0x25964a['headerLines'][_0x4c2b('0x10')];_0x3a7027++){var _0x262d22=_[_0x4c2b('0xb')](_0x3fb02d,_0x25964a[_0x4c2b('0x2a')][_0x3a7027]['line']);if(_0x262d22>=0x0){_0x4be0c0[_0x4c2b('0x2e')]=!![];}}}return _0x4be0c0;}exports[_0x4c2b('0x2f')]=function(_0x559175,_0x567cb6,_0x414bab){var _0x37a825={'from':getAddress(_0x567cb6[_0x4c2b('0x30')]),'firstName':getFirstName(_0x567cb6[_0x4c2b('0x30')]),'lastName':getLastName(_0x567cb6[_0x4c2b('0x30')]),'mapKey':_0x4c2b('0x4'),'message':{'from':getMails(_0x559175[_0x4c2b('0x4')],_0x567cb6['from']),'to':_0x559175['email'],'cc':'','subject':_0x567cb6[_0x4c2b('0x31')]||'','messageId':_0x567cb6[_0x4c2b('0x32')],'inReplyTo':_0x567cb6[_0x4c2b('0x33')],'sentAt':moment(_0x567cb6['date'])[_0x4c2b('0x27')](_0x4c2b('0x34')),'attach':![],'attachments':[]}};if(!_0x567cb6['html']&&!_0x567cb6[_0x4c2b('0x35')]){var _0x516c24=_['filter'](_0x567cb6[_0x4c2b('0x16')],{'contentType':'application/ms-tnef'});if(_0x516c24[_0x4c2b('0x10')]){logger[_0x4c2b('0x36')](util[_0x4c2b('0x27')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x567cb6['messageId']));tnef['parseBuffer'](_[_0x4c2b('0x37')](_0x516c24)[_0x4c2b('0x38')],function(_0x471567,_0x411aee){if(_0x411aee){_0x567cb6['html']=_0x411aee[_0x4c2b('0x39')]||_0x4c2b('0x3a');if(_0x411aee[_0x4c2b('0x3b')]){for(var _0x3a6e2f=0x0;_0x3a6e2f<_0x411aee[_0x4c2b('0x3b')][_0x4c2b('0x10')];_0x3a6e2f++){var _0xb29c67=_0x411aee[_0x4c2b('0x3b')][_0x3a6e2f];_0x37a825['message']['attachments'][_0x4c2b('0x18')]({'filename':_0xb29c67['Title'],'content':Buffer['from'](_0xb29c67[_0x4c2b('0x3c')])});}}}_0x414bab(parseEmail(_0x559175,_0x567cb6,_0x37a825));});}else{_0x567cb6['html']=_0x4c2b('0x3a');_0x414bab(parseEmail(_0x559175,_0x567cb6,_0x37a825));}}else{_0x414bab(parseEmail(_0x559175,_0x567cb6,_0x37a825));}};exports[_0x4c2b('0x3d')]=function(_0x495102,_0x2dfa5d){var _0x5bf35a=[_0x4c2b('0x3e')+(_0x2dfa5d||''),_0x4c2b('0x3f')+_0x495102,'',''];return Buffer[_0x4c2b('0x30')](_0x5bf35a[_0x4c2b('0xe')]('\ 1'),_0x4c2b('0x40'))['toString'](_0x4c2b('0x41'));};
\ No newline at end of file
+var _0x11db=['email','../../../config/environment','head','address','anonymous','value','name','substring','split','length','slice','pop','isEmpty','generate','@xcally.com','html','test','replace','includes','<img','attachments','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originCc','originTo','bcc','attach','attachment','attachment-','format','%s-%s','now','join','root','server/files/attachments/','writeFileSync','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','indexOf','line','isAutoreply','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','content','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger'];(function(_0x551da1,_0x4b4362){var _0x3fd89f=function(_0x1c6c37){while(--_0x1c6c37){_0x551da1['push'](_0x551da1['shift']());}};_0x3fd89f(++_0x4b4362);}(_0x11db,0x125));var _0xb11d=function(_0x43b487,_0x21893a){_0x43b487=_0x43b487-0x0;var _0x2f707a=_0x11db[_0x43b487];return _0x2f707a;};'use strict';var _=require(_0xb11d('0x0'));var moment=require(_0xb11d('0x1'));var random=require(_0xb11d('0x2'));var fs=require('fs');var path=require(_0xb11d('0x3'));var util=require(_0xb11d('0x4'));var tnef=require(_0xb11d('0x5'));var logger=require(_0xb11d('0x6'))(_0xb11d('0x7'));var config=require(_0xb11d('0x8'));function getAddress(_0x180338){var _0x49d6d8=_[_0xb11d('0x9')](_0x180338['value']);return _0x49d6d8&&_0x49d6d8[_0xb11d('0xa')]?_0x49d6d8['address']:_0xb11d('0xb')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x2bc95a){var _0x5640ce=_['head'](_0x2bc95a[_0xb11d('0xc')]);if(_0x5640ce&&_0x5640ce[_0xb11d('0xd')]){if(_0x5640ce[_0xb11d('0xd')]==_0x5640ce[_0xb11d('0xa')]){return _0x5640ce[_0xb11d('0xd')][_0xb11d('0xe')](0x0,_0x5640ce[_0xb11d('0xd')]['indexOf']('@'));}var _0x5998c6=_0x5640ce[_0xb11d('0xd')][_0xb11d('0xf')](/\s+/);return _0x5998c6[_0xb11d('0x10')]>0x1?_0x5998c6[_0xb11d('0x11')](0x0,-0x1)['join']('\x20'):_0x5640ce[_0xb11d('0xd')];}return'Anonymous';}function getLastName(_0x4eec18){var _0x2ebcd5=_[_0xb11d('0x9')](_0x4eec18['value']);if(_0x2ebcd5&&_0x2ebcd5['name']){var _0x125576=_0x2ebcd5[_0xb11d('0xd')]['split'](/\s+/);return _0x125576[_0xb11d('0x10')]>0x1?_0x125576[_0xb11d('0x12')]():'';}return'';}function getMails(_0x35c182,_0x122bb8){var _0x3a70c1='';for(var _0x36bc1d=0x0;_0x36bc1d<_0x122bb8[_0xb11d('0xc')]['length'];_0x36bc1d+=0x1){if(_0x122bb8[_0xb11d('0xc')][_0x36bc1d][_0xb11d('0xa')]!==_0x35c182){if(!_[_0xb11d('0x13')](_0x3a70c1)){_0x3a70c1+=',';}_0x3a70c1+=_0x122bb8[_0xb11d('0xc')][_0x36bc1d][_0xb11d('0xd')]||_0x122bb8[_0xb11d('0xc')][_0x36bc1d][_0xb11d('0xa')]||'';_0x3a70c1+='\x20<';_0x3a70c1+=_0x122bb8[_0xb11d('0xc')][_0x36bc1d][_0xb11d('0xa')]?_0x122bb8[_0xb11d('0xc')][_0x36bc1d][_0xb11d('0xa')]:'anonymous'+random[_0xb11d('0x14')](0x6)+_0xb11d('0x15');_0x3a70c1+='>';}}return _0x3a70c1;}function parseEmail(_0x50338d,_0x3f76f0,_0x220e19){if(_0x3f76f0[_0xb11d('0x16')]){var _0x1767eb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1767eb[_0xb11d('0x17')](_0x3f76f0[_0xb11d('0x16')])){_0x3f76f0[_0xb11d('0x16')]=_0x3f76f0[_0xb11d('0x16')][_0xb11d('0x18')](_0x1767eb,'');}if(_0x3f76f0[_0xb11d('0x16')][_0xb11d('0x19')](_0xb11d('0x1a'))){var _0x145bd8=[];_0x3f76f0[_0xb11d('0x1b')]['forEach'](_0x215500=>{_0x145bd8['push'](_0x215500[_0xb11d('0x1c')]);});var _0x18d8f9=/<img.*? _SRC(.*?)[^>]+>/g;var _0x55a82c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x47daf4=_0x3f76f0[_0xb11d('0x16')][_0xb11d('0x18')](_0x55a82c,'_SRC');var _0xdba4aa=_0x47daf4[_0xb11d('0x18')](_0x18d8f9,_0xb11d('0x1d'));for(let _0x49b8de=0x0;_0x49b8de<_0x145bd8[_0xb11d('0x10')];_0x49b8de++){var _0x486caa=_0xdba4aa[_0xb11d('0x18')](_0xb11d('0x1d'),_0xb11d('0x1e')+_0x145bd8[_0x49b8de]+_0xb11d('0x1f'));_0xdba4aa=_0x486caa;}_0x3f76f0[_0xb11d('0x16')]=_0xdba4aa;}_0x220e19[_0xb11d('0x20')]=_0x3f76f0[_0xb11d('0x16')];}else{_0x220e19[_0xb11d('0x20')]=_0x3f76f0['textAsHtml'];}if(_0x220e19['body']){_0x220e19[_0xb11d('0x20')]=_0x220e19[_0xb11d('0x20')][_0xb11d('0x18')](/<a\s+/gi,_0xb11d('0x21'));}if(_0x3f76f0['to']){_0x220e19['message']['originTo']=getMails(null,_0x3f76f0['to']);var _0x408ece=getMails(_0x50338d[_0xb11d('0x7')],_0x3f76f0['to']);if(!_[_0xb11d('0x13')](_0x408ece)){_0x220e19['message']['cc']+=_0x408ece;}}if(_0x3f76f0['cc']){_0x220e19[_0xb11d('0x22')][_0xb11d('0x23')]=getMails(null,_0x3f76f0['cc']);var _0x1a31ff=getMails(_0x50338d[_0xb11d('0x7')],_0x3f76f0['cc']);if(!_[_0xb11d('0x13')](_0x1a31ff)){if(!_[_0xb11d('0x13')](_0x220e19['message']['cc'])){_0x220e19[_0xb11d('0x22')]['cc']+=',';}_0x220e19[_0xb11d('0x22')]['cc']+=_0x1a31ff;}}if(!_['includes'](_0x220e19[_0xb11d('0x22')][_0xb11d('0x24')],_0x50338d[_0xb11d('0x7')])&&!_[_0xb11d('0x19')](_0x220e19['message'][_0xb11d('0x23')],_0x50338d[_0xb11d('0x7')])){_0x220e19[_0xb11d('0x22')][_0xb11d('0x25')]=_0x50338d[_0xb11d('0x7')];}if(_0x3f76f0[_0xb11d('0x1b')]&&_0x3f76f0[_0xb11d('0x1b')][_0xb11d('0x10')]){_0x220e19[_0xb11d('0x22')][_0xb11d('0x26')]=_0x3f76f0[_0xb11d('0x1b')][_0xb11d('0x10')];for(var _0x845072=0x0,_0x4bc786,_0x530689,_0x1174c3;_0x845072<_0x3f76f0['attachments'][_0xb11d('0x10')];_0x845072+=0x1){if(_0x3f76f0[_0xb11d('0x1b')][_0x845072]['type']===_0xb11d('0x27')){_0x1174c3=_0x3f76f0['attachments'][_0x845072][_0xb11d('0x1c')]||_0xb11d('0x28')+_0x845072;_0x4bc786=util[_0xb11d('0x29')](_0xb11d('0x2a'),Date[_0xb11d('0x2b')](),_0x1174c3);_0x530689=path[_0xb11d('0x2c')](config[_0xb11d('0x2d')],_0xb11d('0x2e'),_0x4bc786);fs[_0xb11d('0x2f')](_0x530689,_0x3f76f0['attachments'][_0x845072]['content']);_0x220e19[_0xb11d('0x22')]['attachments'][_0xb11d('0x30')]({'name':_0x1174c3,'basename':_0x4bc786,'type':_0x3f76f0[_0xb11d('0x1b')][_0x845072][_0xb11d('0x31')],'filepath':_0x530689});}}}if(_0x3f76f0[_0xb11d('0x32')]&&_0x3f76f0['headerLines'][_0xb11d('0x10')]>0x0){var _0xa97e1d=[_0xb11d('0x33'),'X-Auto-Response-Suppress:\x20All',_0xb11d('0x34')];for(var _0x179700=0x0;_0x179700<_0x3f76f0[_0xb11d('0x32')]['length'];_0x179700++){var _0x2cb330=_[_0xb11d('0x35')](_0xa97e1d,_0x3f76f0[_0xb11d('0x32')][_0x179700][_0xb11d('0x36')]);if(_0x2cb330>=0x0){_0x220e19[_0xb11d('0x37')]=!![];}}}return _0x220e19;}exports[_0xb11d('0x38')]=function(_0x2385a4,_0x5d204a,_0x3d96bc){var _0x2341af={'from':getAddress(_0x5d204a[_0xb11d('0x39')]),'firstName':getFirstName(_0x5d204a[_0xb11d('0x39')]),'lastName':getLastName(_0x5d204a[_0xb11d('0x39')]),'mapKey':_0xb11d('0x7'),'message':{'from':getMails(_0x2385a4[_0xb11d('0x7')],_0x5d204a['from']),'to':_0x2385a4[_0xb11d('0x7')],'cc':'','subject':_0x5d204a[_0xb11d('0x3a')]||'','messageId':_0x5d204a[_0xb11d('0x3b')],'inReplyTo':_0x5d204a[_0xb11d('0x3c')],'sentAt':moment(_0x5d204a[_0xb11d('0x3d')])[_0xb11d('0x29')](_0xb11d('0x3e')),'attach':![],'attachments':[]}};if(!_0x5d204a[_0xb11d('0x16')]&&!_0x5d204a[_0xb11d('0x3f')]){var _0x10a295=_['filter'](_0x5d204a[_0xb11d('0x1b')],{'contentType':_0xb11d('0x40')});if(_0x10a295['length']){logger['info'](util[_0xb11d('0x29')](_0xb11d('0x41'),_0x5d204a[_0xb11d('0x3b')]));tnef['parseBuffer'](_['first'](_0x10a295)[_0xb11d('0x42')],function(_0x29fcaf,_0x567ef4){if(_0x567ef4){_0x5d204a[_0xb11d('0x16')]=_0x567ef4['BodyHTML']||_0xb11d('0x43');if(_0x567ef4[_0xb11d('0x44')]){for(var _0x272635=0x0;_0x272635<_0x567ef4[_0xb11d('0x44')][_0xb11d('0x10')];_0x272635++){var _0x1dc4b4=_0x567ef4['Attachments'][_0x272635];_0x2341af[_0xb11d('0x22')][_0xb11d('0x1b')][_0xb11d('0x30')]({'filename':_0x1dc4b4[_0xb11d('0x45')],'content':Buffer[_0xb11d('0x39')](_0x1dc4b4[_0xb11d('0x46')])});}}}_0x3d96bc(parseEmail(_0x2385a4,_0x5d204a,_0x2341af));});}else{_0x5d204a[_0xb11d('0x16')]=_0xb11d('0x43');_0x3d96bc(parseEmail(_0x2385a4,_0x5d204a,_0x2341af));}}else{_0x3d96bc(parseEmail(_0x2385a4,_0x5d204a,_0x2341af));}};exports[_0xb11d('0x47')]=function(_0x2b7b73,_0x5e59f5){var _0x37ce37=[_0xb11d('0x48')+(_0x5e59f5||''),_0xb11d('0x49')+_0x2b7b73,'',''];return Buffer[_0xb11d('0x39')](_0x37ce37[_0xb11d('0x2c')]('\ 1'),'utf-8')['toString'](_0xb11d('0x4a'));};
\ No newline at end of file
index 09d9688..9b2de63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e9=['lodash','name','Service','key','SERV','active','Imap','Smtp'];(function(_0x258b93,_0x188ccc){var _0x35484b=function(_0x2563ea){while(--_0x2563ea){_0x258b93['push'](_0x258b93['shift']());}};_0x35484b(++_0x188ccc);}(_0x38e9,0x198));var _0x938e=function(_0x9c8c83,_0x16ebdd){_0x9c8c83=_0x9c8c83-0x0;var _0x4636ac=_0x38e9[_0x9c8c83];return _0x4636ac;};'use strict';var _=require(_0x938e('0x0'));function MailAccount(_0x5ecdfc){this['id']=_0x5ecdfc['id']||0x0;this[_0x938e('0x1')]=_0x5ecdfc[_0x938e('0x1')]||_0x938e('0x2');this[_0x938e('0x3')]=_0x5ecdfc[_0x938e('0x3')]||_0x938e('0x4');this[_0x938e('0x5')]=_0x5ecdfc[_0x938e('0x5')]||![];this[_0x938e('0x6')]=_0x5ecdfc[_0x938e('0x6')]||[];this[_0x938e('0x7')]=_0x5ecdfc[_0x938e('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x68a2=['active','Imap','Smtp','exports','name','key','SERV'];(function(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0x68a2,0x1e7));var _0x268a=function(_0x3dff2b,_0x45a8a4){_0x3dff2b=_0x3dff2b-0x0;var _0x5dd559=_0x68a2[_0x3dff2b];return _0x5dd559;};'use strict';var _=require('lodash');function MailAccount(_0x41d3b4){this['id']=_0x41d3b4['id']||0x0;this[_0x268a('0x0')]=_0x41d3b4['name']||'Service';this[_0x268a('0x1')]=_0x41d3b4[_0x268a('0x1')]||_0x268a('0x2');this['active']=_0x41d3b4[_0x268a('0x3')]||![];this['Imap']=_0x41d3b4[_0x268a('0x4')]||[];this[_0x268a('0x5')]=_0x41d3b4[_0x268a('0x5')]||[];}module[_0x268a('0x6')]=MailAccount;
\ No newline at end of file
index 8119555..a6dc60e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf8e=['isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xcf8e,0xbe));var _0xecf8=function(_0x58a7ae,_0x2d6372){_0x58a7ae=_0x58a7ae-0x0;var _0x2b53dd=_0xcf8e[_0x58a7ae];return _0x2b53dd;};'use strict';var _=require(_0xecf8('0x0'));var MailAccount=require(_0xecf8('0x1'));var Realtime=function(){this[_0xecf8('0x2')]={};};function freeIsNotKey(_0x5f12a8,_0x2d1b91,_0x5cf9e3){var _0x22c354=_['mapKeys'](_0x5f12a8,function(_0x1f4b64,_0x6c31da){return _0x1f4b64[_0x5cf9e3];});for(var _0x1f1fc0 in _0x2d1b91){if(_0x2d1b91[_0xecf8('0x3')](_0x1f1fc0)){if(!_0x22c354[_0x1f1fc0]){delete _0x2d1b91[_0x1f1fc0];}}}}Realtime[_0xecf8('0x4')][_0xecf8('0x5')]=function(_0x3e4cf1,_0x318ef2){for(var _0xebf09c in _0x318ef2){if(_0x3e4cf1[_0xecf8('0x3')](_0xebf09c)){_0x3e4cf1[_0xebf09c]=_0x318ef2[_0xebf09c];}}};Realtime[_0xecf8('0x4')][_0xecf8('0x6')]=function(){var _0x4e56cc=this;return function(_0x2770fb){if(_0x2770fb){freeIsNotKey(_0x2770fb,_0x4e56cc['mailAccounts'],'id');for(var _0x55a1fc=0x0,_0x57b2db={},_0x4c59a3={};_0x55a1fc<_0x2770fb[_0xecf8('0x7')];_0x55a1fc+=0x1){_0x57b2db=_0x2770fb[_0x55a1fc];if(_[_0xecf8('0x8')](_0x4e56cc['mailAccounts'][_0x57b2db['id']])){_0x4e56cc['mailAccounts'][_0x57b2db['id']]=new MailAccount(_0x57b2db);}else{_[_0xecf8('0x9')](_0x4e56cc[_0xecf8('0x2')][_0x57b2db['id']],_0x57b2db);}}}return _0x4e56cc[_0xecf8('0x2')];};};module[_0xecf8('0xa')]=Realtime;
\ No newline at end of file
+var _0xfd83=['hasOwnProperty','prototype','initMailAccounts','length','isUndefined','merge','exports','mailAccounts'];(function(_0x1c9cfb,_0x4efc3b){var _0x32436a=function(_0x6836da){while(--_0x6836da){_0x1c9cfb['push'](_0x1c9cfb['shift']());}};_0x32436a(++_0x4efc3b);}(_0xfd83,0x1b7));var _0x3fd8=function(_0x485034,_0x43f507){_0x485034=_0x485034-0x0;var _0x34e386=_0xfd83[_0x485034];return _0x34e386;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x3fd8('0x0')]={};};function freeIsNotKey(_0x23e6cb,_0x21f6b9,_0x1ba845){var _0xa5c41=_['mapKeys'](_0x23e6cb,function(_0x362fda,_0x4670b0){return _0x362fda[_0x1ba845];});for(var _0x247347 in _0x21f6b9){if(_0x21f6b9[_0x3fd8('0x1')](_0x247347)){if(!_0xa5c41[_0x247347]){delete _0x21f6b9[_0x247347];}}}}Realtime[_0x3fd8('0x2')]['mergeFromDatabase']=function(_0x1baa70,_0x44afbd){for(var _0x421cca in _0x44afbd){if(_0x1baa70[_0x3fd8('0x1')](_0x421cca)){_0x1baa70[_0x421cca]=_0x44afbd[_0x421cca];}}};Realtime['prototype'][_0x3fd8('0x3')]=function(){var _0x926165=this;return function(_0x1292a0){if(_0x1292a0){freeIsNotKey(_0x1292a0,_0x926165[_0x3fd8('0x0')],'id');for(var _0x38c760=0x0,_0x1c8058={},_0x32b562={};_0x38c760<_0x1292a0[_0x3fd8('0x4')];_0x38c760+=0x1){_0x1c8058=_0x1292a0[_0x38c760];if(_[_0x3fd8('0x5')](_0x926165[_0x3fd8('0x0')][_0x1c8058['id']])){_0x926165['mailAccounts'][_0x1c8058['id']]=new MailAccount(_0x1c8058);}else{_[_0x3fd8('0x6')](_0x926165[_0x3fd8('0x0')][_0x1c8058['id']],_0x1c8058);}}}return _0x926165[_0x3fd8('0x0')];};};module[_0x3fd8('0x7')]=Realtime;
\ No newline at end of file
index 6959bde..ba3d418 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf11=['getMailAccounts','Request','GetMailAccount','provider','service','email','key','ListId','TemplateId','Imap','name','data5','Smtp','CloudProvider','type','getMailAccount','notify','NotifyMailAccount','../client'];(function(_0x875434,_0x32cc3b){var _0x4f1e69=function(_0xf6baf9){while(--_0xf6baf9){_0x875434['push'](_0x875434['shift']());}};_0x4f1e69(++_0x32cc3b);}(_0xaf11,0x12f));var _0x1af1=function(_0x48c074,_0x3d9dca){_0x48c074=_0x48c074-0x0;var _0x17135b=_0xaf11[_0x48c074];return _0x17135b;};'use strict';var client=require(_0x1af1('0x0'));exports[_0x1af1('0x1')]=function(){return function(){return client[_0x1af1('0x2')](_0x1af1('0x3'),{'options':{'attributes':['id','name',_0x1af1('0x4'),_0x1af1('0x5'),_0x1af1('0x6'),'active',_0x1af1('0x7'),_0x1af1('0x8'),_0x1af1('0x9')],'raw':![],'include':[{'model':'MailServerIn','as':_0x1af1('0xa'),'include':[{'model':'CloudProvider','attributes':['id',_0x1af1('0xb'),_0x1af1('0x5'),'type',_0x1af1('0xc')],'as':'CloudProvider'}]},{'model':'MailServerOut','as':_0x1af1('0xd'),'include':[{'model':_0x1af1('0xe'),'attributes':['id',_0x1af1('0xb'),_0x1af1('0x5'),_0x1af1('0xf'),_0x1af1('0xc')],'as':'CloudProvider'}]}]},'log':_0x1af1('0x10')});};};exports[_0x1af1('0x11')]=function(_0xa7ee03,_0x118d8a){return client[_0x1af1('0x2')](_0x1af1('0x12'),{'account':{'id':_0xa7ee03},'body':_0x118d8a,'log':_0x1af1('0x12')});};
\ No newline at end of file
+var _0xf03d=['ListId','TemplateId','MailServerIn','CloudProvider','data5','MailServerOut','Smtp','type','NotifyMailAccount','../client','getMailAccounts','Request','name','provider','service','email','active','key'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xf03d,0x1a7));var _0xdf03=function(_0xa2bb4e,_0x1e601f){_0xa2bb4e=_0xa2bb4e-0x0;var _0x186f81=_0xf03d[_0xa2bb4e];return _0x186f81;};'use strict';var client=require(_0xdf03('0x0'));exports[_0xdf03('0x1')]=function(){return function(){return client[_0xdf03('0x2')]('GetMailAccount',{'options':{'attributes':['id',_0xdf03('0x3'),_0xdf03('0x4'),_0xdf03('0x5'),_0xdf03('0x6'),_0xdf03('0x7'),_0xdf03('0x8'),_0xdf03('0x9'),_0xdf03('0xa')],'raw':![],'include':[{'model':_0xdf03('0xb'),'as':'Imap','include':[{'model':_0xdf03('0xc'),'attributes':['id','name',_0xdf03('0x5'),'type',_0xdf03('0xd')],'as':_0xdf03('0xc')}]},{'model':_0xdf03('0xe'),'as':_0xdf03('0xf'),'include':[{'model':'CloudProvider','attributes':['id','name',_0xdf03('0x5'),_0xdf03('0x10'),_0xdf03('0xd')],'as':'CloudProvider'}]}]},'log':'getMailAccount'});};};exports['notify']=function(_0x20a497,_0x144bb7){return client['Request'](_0xdf03('0x11'),{'account':{'id':_0x20a497},'body':_0x144bb7,'log':_0xdf03('0x11')});};
\ No newline at end of file
index 974c7cf..d563733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3314=['../client','getSettings','Request','loginMailFrequency','GetSettings'];(function(_0x37e383,_0x49f1bd){var _0x142d63=function(_0x5671d2){while(--_0x5671d2){_0x37e383['push'](_0x37e383['shift']());}};_0x142d63(++_0x49f1bd);}(_0x3314,0x78));var _0x4331=function(_0x107a68,_0x9403a9){_0x107a68=_0x107a68-0x0;var _0x1eec74=_0x3314[_0x107a68];return _0x1eec74;};'use strict';var client=require(_0x4331('0x0'));exports[_0x4331('0x1')]=function(){return client[_0x4331('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x4331('0x3')]},'log':_0x4331('0x4')});};
\ No newline at end of file
+var _0x2991=['../client','getSettings','Request','loginMailFrequency'];(function(_0x3784ff,_0x1842a8){var _0x160732=function(_0x2b0eed){while(--_0x2b0eed){_0x3784ff['push'](_0x3784ff['shift']());}};_0x160732(++_0x1842a8);}(_0x2991,0xb8));var _0x1299=function(_0x35a6c5,_0x489326){_0x35a6c5=_0x35a6c5-0x0;var _0x347010=_0x2991[_0x35a6c5];return _0x347010;};'use strict';var client=require(_0x1299('0x0'));exports[_0x1299('0x1')]=function(){return client[_0x1299('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x1299('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
index 94a7ffa..1e53f33 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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 a2f71a3..162e3af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8487=['../../config/triggers','default','../../config/express','../../routes','once','listening','log','exports','http','express','sticky-session','ioredis','../../config/environment','timeout','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis'];(function(_0x501d5e,_0x75bdad){var _0x335519=function(_0x4fd6ac){while(--_0x4fd6ac){_0x501d5e['push'](_0x501d5e['shift']());}};_0x335519(++_0x75bdad);}(_0x8487,0x14a));var _0x7848=function(_0x169998,_0x16083a){_0x169998=_0x169998-0x0;var _0x37ee09=_0x8487[_0x169998];return _0x37ee09;};'use strict';var _=require('lodash');var http=require(_0x7848('0x0'));var express=require(_0x7848('0x1'));var sticky=require(_0x7848('0x2'));var Redis=require(_0x7848('0x3'));var config=require(_0x7848('0x4'));var app=express();var server=http['createServer'](app);server[_0x7848('0x5')]=0xdbba0;if(sticky['listen'](server,config[_0x7848('0x6')])){var socketio=require(_0x7848('0x7'))(server,{'transports':[_0x7848('0x8'),_0x7848('0x9')]});config[_0x7848('0xa')]=_[_0x7848('0xb')](config[_0x7848('0xa')],{'host':_0x7848('0xc'),'port':0x18eb});socketio[_0x7848('0xd')](require(_0x7848('0xe'))({'pubClient':new Redis(config[_0x7848('0xa')]),'subClient':new Redis(config[_0x7848('0xa')])}));require(_0x7848('0xf'))[_0x7848('0x10')]();require('../../config/socketio')[_0x7848('0x10')](socketio);require(_0x7848('0x11'))[_0x7848('0x10')](app);require(_0x7848('0x12'))['default'](app);}else{server[_0x7848('0x13')](_0x7848('0x14'),function(){console[_0x7848('0x15')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x7848('0x6')]);});}exports=module[_0x7848('0x16')]=app;
\ No newline at end of file
+var _0x559d=['timeout','listen','socket.io','websocket','polling','redis','adapter','socket.io-redis','../../config/triggers','default','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer'];(function(_0x592d66,_0x5b81f2){var _0xd9793=function(_0x4c14d8){while(--_0x4c14d8){_0x592d66['push'](_0x592d66['shift']());}};_0xd9793(++_0x5b81f2);}(_0x559d,0x1a9));var _0xd559=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0x559d[_0x57d370];return _0x550fd2;};'use strict';var _=require(_0xd559('0x0'));var http=require(_0xd559('0x1'));var express=require(_0xd559('0x2'));var sticky=require(_0xd559('0x3'));var Redis=require(_0xd559('0x4'));var config=require(_0xd559('0x5'));var app=express();var server=http[_0xd559('0x6')](app);server[_0xd559('0x7')]=0xdbba0;if(sticky[_0xd559('0x8')](server,config['port'])){var socketio=require(_0xd559('0x9'))(server,{'transports':[_0xd559('0xa'),_0xd559('0xb')]});config[_0xd559('0xc')]=_['defaults'](config[_0xd559('0xc')],{'host':'localhost','port':0x18eb});socketio[_0xd559('0xd')](require(_0xd559('0xe'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0xd559('0xc')])}));require(_0xd559('0xf'))[_0xd559('0x10')]();require('../../config/socketio')[_0xd559('0x10')](socketio);require(_0xd559('0x11'))[_0xd559('0x10')](app);require(_0xd559('0x12'))[_0xd559('0x10')](app);}else{server[_0xd559('0x13')](_0xd559('0x14'),function(){console[_0xd559('0x15')](_0xd559('0x16'),config['port']);});}exports=module[_0xd559('0x17')]=app;
\ No newline at end of file
index 9bcb9ac..29bc441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8089=['then','debug','rpc','error','message','result','catch','exports','bluebird','../../config/logger','routing','client','http','request'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0x8089,0x182));var _0x9808=function(_0x4b25f1,_0x43ed0e){_0x4b25f1=_0x4b25f1-0x0;var _0x5b3b8d=_0x8089[_0x4b25f1];return _0x5b3b8d;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x9808('0x0'));var logger=require(_0x9808('0x1'))(_0x9808('0x2'));var client=jayson[_0x9808('0x3')][_0x9808('0x4')]({'port':0x2329});client['Request']=function(_0xffdf9a,_0x45cdf7){return new BPromise(function(_0x3a4f36,_0x3b73be){return client[_0x9808('0x5')](_0xffdf9a,_0x45cdf7)[_0x9808('0x6')](function(_0x54149b){logger[_0x9808('0x7')](_0x9808('0x8'),_0x9808('0x2'),_0xffdf9a,_0x45cdf7,_0x54149b);if(_0x54149b[_0x9808('0x9')]){logger[_0x9808('0x9')](_0x9808('0x8'),'routing',_0xffdf9a,_0x54149b[_0x9808('0x9')]['message'],_0x45cdf7);return _0x3b73be(_0x54149b[_0x9808('0x9')][_0x9808('0xa')]);}else{return _0x3a4f36(_0x54149b[_0x9808('0xb')]);}})[_0x9808('0xc')](function(_0x347656){logger['error'](_0x9808('0x8'),_0x9808('0x2'),_0xffdf9a,_0x347656,_0x45cdf7);return _0x3b73be(_0x347656);});});};module[_0x9808('0xd')]=client;
\ No newline at end of file
+var _0xc9f2=['jayson/promise','bluebird','../../config/logger','then','debug','rpc','routing','error','message','result','catch','exports'];(function(_0x5440fb,_0x42581f){var _0x4b7288=function(_0x500e5c){while(--_0x500e5c){_0x5440fb['push'](_0x5440fb['shift']());}};_0x4b7288(++_0x42581f);}(_0xc9f2,0x144));var _0x2c9f=function(_0x5e4f3a,_0x324491){_0x5e4f3a=_0x5e4f3a-0x0;var _0xfd1dc3=_0xc9f2[_0x5e4f3a];return _0xfd1dc3;};'use strict';var jayson=require(_0x2c9f('0x0'));var BPromise=require(_0x2c9f('0x1'));var logger=require(_0x2c9f('0x2'))('routing');var client=jayson['client']['http']({'port':0x2329});client['Request']=function(_0x3d635f,_0x4d099d){return new BPromise(function(_0x5eddac,_0x1ae64b){return client['request'](_0x3d635f,_0x4d099d)[_0x2c9f('0x3')](function(_0x1ffdfc){logger[_0x2c9f('0x4')](_0x2c9f('0x5'),_0x2c9f('0x6'),_0x3d635f,_0x4d099d,_0x1ffdfc);if(_0x1ffdfc[_0x2c9f('0x7')]){logger['error'](_0x2c9f('0x5'),'routing',_0x3d635f,_0x1ffdfc['error'][_0x2c9f('0x8')],_0x4d099d);return _0x1ae64b(_0x1ffdfc[_0x2c9f('0x7')][_0x2c9f('0x8')]);}else{return _0x5eddac(_0x1ffdfc[_0x2c9f('0x9')]);}})[_0x2c9f('0xa')](function(_0x15ac1b){logger[_0x2c9f('0x7')](_0x2c9f('0x5'),_0x2c9f('0x6'),_0x3d635f,_0x15ac1b,_0x4d099d);return _0x1ae64b(_0x15ac1b);});});};module[_0x2c9f('0xb')]=client;
\ No newline at end of file
index e8df7bb..3ff8840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ba=['getMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','listen','catch','./realtime','./rpc/interval','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','resolve','then','initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues'];(function(_0x92551f,_0x4c2e9a){var _0x3b69c7=function(_0x285482){while(--_0x285482){_0x92551f['push'](_0x92551f['shift']());}};_0x3b69c7(++_0x4c2e9a);}(_0xd7ba,0xe3));var _0xad7b=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xd7ba[_0x13d07a];return _0x5ee0ee;};'use strict';var BPromise=require('bluebird');var server=require('./server');var Realtime=require(_0xad7b('0x0'));var user=require('./rpc/user');var interval=require(_0xad7b('0x1'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xad7b('0x2'));var mailQueue=require(_0xad7b('0x3'));var faxQueue=require(_0xad7b('0x4'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0xad7b('0x5')]()[_0xad7b('0x6')](user['getAgents']())['then'](realtime['initAgents']())[_0xad7b('0x6')](interval['getIntervals']())[_0xad7b('0x6')](realtime[_0xad7b('0x7')]())[_0xad7b('0x6')](openchannelQueue['getOpenchannelQueues']())[_0xad7b('0x6')](realtime[_0xad7b('0x8')]())[_0xad7b('0x6')](chatQueue[_0xad7b('0x9')]())[_0xad7b('0x6')](realtime[_0xad7b('0xa')]())[_0xad7b('0x6')](smsQueue['getSmsQueues']())['then'](realtime['initSmsQueues']())[_0xad7b('0x6')](mailQueue[_0xad7b('0xb')]())[_0xad7b('0x6')](realtime['initMailQueues']())[_0xad7b('0x6')](faxQueue[_0xad7b('0xc')]())['then'](realtime[_0xad7b('0xd')]())['then'](whatsappQueue[_0xad7b('0xe')]())[_0xad7b('0x6')](realtime['initWhatsappQueues']())[_0xad7b('0x6')](function(){return realtime;});}function main(){return server[_0xad7b('0xf')](realtime)[_0xad7b('0x6')](function(_0x47aa81){return initRealtime();})[_0xad7b('0x6')](function(_0x2f2cf1){return setInterval(initRealtime,0x1388);})[_0xad7b('0x10')](function(_0x4e606c){console['log'](_0x4e606c);});}main();
\ No newline at end of file
+var _0x9fe5=['getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/mailQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','initIntervals','getChatQueues','getSmsQueues','initSmsQueues'];(function(_0x1a00b8,_0x1c97eb){var _0x94911e=function(_0x9505ba){while(--_0x9505ba){_0x1a00b8['push'](_0x1a00b8['shift']());}};_0x94911e(++_0x1c97eb);}(_0x9fe5,0x9f));var _0x59fe=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9fe5[_0x2641f9];return _0x585741;};'use strict';var BPromise=require(_0x59fe('0x0'));var server=require(_0x59fe('0x1'));var Realtime=require(_0x59fe('0x2'));var user=require(_0x59fe('0x3'));var interval=require(_0x59fe('0x4'));var openchannelQueue=require(_0x59fe('0x5'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0x59fe('0x6'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x59fe('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x59fe('0x8')]()[_0x59fe('0x9')](user[_0x59fe('0xa')]())[_0x59fe('0x9')](realtime[_0x59fe('0xb')]())[_0x59fe('0x9')](interval['getIntervals']())[_0x59fe('0x9')](realtime[_0x59fe('0xc')]())[_0x59fe('0x9')](openchannelQueue['getOpenchannelQueues']())[_0x59fe('0x9')](realtime['initOpenchannelQueues']())[_0x59fe('0x9')](chatQueue[_0x59fe('0xd')]())[_0x59fe('0x9')](realtime['initChatQueues']())[_0x59fe('0x9')](smsQueue[_0x59fe('0xe')]())[_0x59fe('0x9')](realtime[_0x59fe('0xf')]())[_0x59fe('0x9')](mailQueue[_0x59fe('0x10')]())['then'](realtime[_0x59fe('0x11')]())[_0x59fe('0x9')](faxQueue[_0x59fe('0x12')]())['then'](realtime[_0x59fe('0x13')]())[_0x59fe('0x9')](whatsappQueue[_0x59fe('0x14')]())[_0x59fe('0x9')](realtime[_0x59fe('0x15')]())['then'](function(){return realtime;});}function main(){return server[_0x59fe('0x16')](realtime)[_0x59fe('0x9')](function(_0x37512d){return initRealtime();})[_0x59fe('0x9')](function(_0x239979){return setInterval(initRealtime,0x1388);})[_0x59fe('0x17')](function(_0x32249c){console[_0x59fe('0x18')](_0x32249c);});}main();
\ No newline at end of file
index 420dbbc..cd53e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x5502db,_0x1ab12f){var _0x5d199c=function(_0x1221a1){while(--_0x1221a1){_0x5502db['push'](_0x5502db['shift']());}};_0x5d199c(++_0x1ab12f);}(_0x814b,0x1a2));var _0xb814=function(_0x3bd497,_0x37d7a8){_0x3bd497=_0x3bd497-0x0;var _0x32f967=_0x814b[_0x3bd497];return _0x32f967;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x7a54=['turn','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','exports','lodash','util','events','isNil','register','ignoreFactChanges','inherits','init','rules','activeRules','concat','prototype','sync','filter','orderBy','asc','execute','clone','consequence','ruleRef','name','index_','nextTick','push','call','isEqual','restart','length','condition','matchPath','noop','findRules'];(function(_0xb0d568,_0x436357){var _0x50b8ca=function(_0x5cd4c1){while(--_0x5cd4c1){_0xb0d568['push'](_0xb0d568['shift']());}};_0x50b8ca(++_0x436357);}(_0x7a54,0x106));var _0x47a5=function(_0x1ab34b,_0xf81a6){_0x1ab34b=_0x1ab34b-0x0;var _0x47633a=_0x7a54[_0x1ab34b];return _0x47633a;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var EventEmitter=require(_0x47a5('0x2'))['EventEmitter'];function RuleEngine(_0x1d33e,_0x4086cd){this['init']();if(!_[_0x47a5('0x3')](_0x1d33e)){this[_0x47a5('0x4')](_0x1d33e);}if(_0x4086cd){this[_0x47a5('0x5')]=_0x4086cd[_0x47a5('0x5')];}return this;}util[_0x47a5('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x47a5('0x7')]=function(_0x59199c){this[_0x47a5('0x8')]=[];this[_0x47a5('0x9')]=[];};RuleEngine['prototype'][_0x47a5('0x4')]=function(_0x5077f3){if(Array['isArray'](_0x5077f3)){this['rules']=this[_0x47a5('0x8')][_0x47a5('0xa')](_0x5077f3);}else if(_0x5077f3!==null&&_['isObject'](_0x5077f3)){this[_0x47a5('0x8')]['push'](_0x5077f3);}this['sync']();};RuleEngine[_0x47a5('0xb')][_0x47a5('0xc')]=function(){this[_0x47a5('0x9')]=this[_0x47a5('0x8')][_0x47a5('0xd')](function(_0xd308b8){if(_[_0x47a5('0x3')](_0xd308b8['on'])){_0xd308b8['on']=!![];}if(_0xd308b8['on']===!![]){return _0xd308b8;}});this['activeRules']=_[_0x47a5('0xe')](this[_0x47a5('0x9')],['p'],[_0x47a5('0xf')]);};RuleEngine[_0x47a5('0xb')][_0x47a5('0x10')]=function(_0x620ee9,_0x3c6c46){var _0x190faa=![];_0x620ee9['result']=!![];var _0x362359=_[_0x47a5('0x11')](_0x620ee9);var _0x3b001e=_[_0x47a5('0x11')](_0x620ee9);var _0x1ef44c=this['activeRules'];var _0x549de3=[];var _0x138bc0=this['ignoreFactChanges'];(function FnRuleLoop(_0x5247fd){var _0x423a81={'rules':function(){return _0x1ef44c;},'rule':function(){return _0x1ef44c[_0x5247fd];},'when':function(_0xaf70a6){if(_0xaf70a6){var _0x2ce454=_0x1ef44c[_0x5247fd][_0x47a5('0x12')];_0x2ce454[_0x47a5('0x13')]=_0x1ef44c[_0x5247fd]['id']||_0x1ef44c[_0x5247fd][_0x47a5('0x14')]||_0x47a5('0x15')+_0x5247fd;process[_0x47a5('0x16')](function(){_0x549de3[_0x47a5('0x17')](_0x2ce454['ruleRef']);_0x2ce454[_0x47a5('0x18')](_0x362359,_0x423a81);});}else{process[_0x47a5('0x16')](function(){_0x423a81['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190faa=!![];return FnRuleLoop(0x0);},'next':function(_0x2b0360){if(!_0x138bc0&&!_[_0x47a5('0x19')](_0x3b001e,_0x362359)){_0x3b001e=_[_0x47a5('0x11')](_0x362359);process['nextTick'](function(){_0x423a81[_0x47a5('0x1a')]();});}else{process[_0x47a5('0x16')](function(){if(_[_0x47a5('0x3')](_0x2b0360)){return FnRuleLoop(_0x5247fd+0x1);}else{return FnRuleLoop(_0x2b0360);}});}}};if(_0x5247fd<_0x1ef44c[_0x47a5('0x1b')]&&_0x190faa===![]){var _0x5ef1b1=_0x1ef44c[_0x5247fd][_0x47a5('0x1c')];_0x5ef1b1[_0x47a5('0x18')](_0x362359,_0x423a81);}else{process['nextTick'](function(){_0x362359[_0x47a5('0x1d')]=_0x549de3;return _0x3c6c46?_0x3c6c46(_0x362359):_[_0x47a5('0x1e')]();});}}(0x0));};RuleEngine[_0x47a5('0xb')][_0x47a5('0x1f')]=function(_0x3abd6a){if(_['isNil'](_0x3abd6a)){return this['rules'];}else{var _0x136745=_['matches'](_0x3abd6a);return _[_0x47a5('0xd')](this['rules'],_0x136745);}};RuleEngine[_0x47a5('0xb')][_0x47a5('0x20')]=function(_0x36ad34,_0x1dac65){var _0x21f296=_0x36ad34==='on'||_0x36ad34==='ON'?!![]:![];var _0x3ba0b7=this[_0x47a5('0x1f')](_0x1dac65);for(var _0x136b14=0x0,_0x16631f=_0x3ba0b7[_0x47a5('0x1b')];_0x136b14<_0x16631f;_0x136b14+=0x1){_0x3ba0b7[_0x136b14]['on']=_0x21f296;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x21')]=function(_0x528582,_0x243210){_0x528582=parseInt(_0x528582,0xa);var _0x51833b=this[_0x47a5('0x1f')](_0x243210);for(var _0x9ac908=0x0,_0x16901f=_0x51833b['length'];_0x9ac908<_0x16901f;_0x9ac908+=0x1){_0x51833b[_0x9ac908][_0x47a5('0x22')]=_0x528582;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x23')]=function(){var _0x51cc81=this['rules'];if(_0x51cc81 instanceof Array){_0x51cc81=_0x51cc81[_0x47a5('0x24')](function(_0xfb5ddb){_0xfb5ddb['condition']=_0xfb5ddb['condition'][_0x47a5('0x25')]();_0xfb5ddb[_0x47a5('0x12')]=_0xfb5ddb['consequence'][_0x47a5('0x25')]();return _0xfb5ddb;});}else if(!_['isNil'](_0x51cc81)){_0x51cc81[_0x47a5('0x1c')]=_0x51cc81[_0x47a5('0x1c')]['toString']();_0x51cc81['consequence']=_0x51cc81[_0x47a5('0x12')]['toString']();}return _0x51cc81;};RuleEngine[_0x47a5('0xb')][_0x47a5('0x26')]=function(_0xf269a8){this['init']();if(_[_0x47a5('0x27')](_0xf269a8)){_0xf269a8=JSON['parse'](_0xf269a8);}if(_0xf269a8 instanceof Array){_0xf269a8=_0xf269a8['map'](function(_0x65542e){_0x65542e['condition']=eval('('+_0x65542e[_0x47a5('0x1c')]+')');_0x65542e['consequence']=eval('('+_0x65542e[_0x47a5('0x12')]+')');return _0x65542e;});}else if(_0xf269a8!==null&&typeof _0xf269a8==_0x47a5('0x28')){_0xf269a8[_0x47a5('0x1c')]=eval('('+_0xf269a8[_0x47a5('0x1c')]+')');_0xf269a8[_0x47a5('0x12')]=eval('('+_0xf269a8[_0x47a5('0x12')]+')');}this[_0x47a5('0x4')](_0xf269a8);};module[_0x47a5('0x29')]=RuleEngine;
\ No newline at end of file
index 525eb70..09a2ba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05d2=['error','message','result','catch','sendMailMessage','bluebird','client','http','request','then'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x05d2,0x1a9));var _0x205d=function(_0x3924d3,_0x4e36fc){_0x3924d3=_0x3924d3-0x0;var _0x5e7ea6=_0x05d2[_0x3924d3];return _0x5e7ea6;};'use strict';var BPromise=require(_0x205d('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x205d('0x1')][_0x205d('0x2')]({'port':0x232b});function request(_0x1263af,_0x2841f9){return new BPromise(function(_0x1a64bf,_0x562f43){return client[_0x205d('0x3')](_0x1263af,_0x2841f9)[_0x205d('0x4')](function(_0x2f905e){if(_0x2f905e[_0x205d('0x5')]){return _0x562f43(_0x2f905e[_0x205d('0x5')][_0x205d('0x6')]);}else{return _0x1a64bf(_0x2f905e[_0x205d('0x7')]);}})[_0x205d('0x8')](function(_0x5ec127){return _0x562f43(_0x5ec127);});});}exports[_0x205d('0x9')]=function(_0x431948,_0x4fefa7){return request('SendMail',{'account':_0x431948,'message':_0x4fefa7});};
\ No newline at end of file
+var _0xdef6=['bluebird','jayson/promise','http','then','error','message','catch','sendMailMessage'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xdef6,0x1f0));var _0x6def=function(_0x595e1f,_0x3c3c87){_0x595e1f=_0x595e1f-0x0;var _0x396b4d=_0xdef6[_0x595e1f];return _0x396b4d;};'use strict';var BPromise=require(_0x6def('0x0'));var jayson=require(_0x6def('0x1'));var client=jayson['client'][_0x6def('0x2')]({'port':0x232b});function request(_0x20a8bf,_0x3f4342){return new BPromise(function(_0xb25cdc,_0x2a0fee){return client['request'](_0x20a8bf,_0x3f4342)[_0x6def('0x3')](function(_0x504bf9){if(_0x504bf9[_0x6def('0x4')]){return _0x2a0fee(_0x504bf9[_0x6def('0x4')][_0x6def('0x5')]);}else{return _0xb25cdc(_0x504bf9['result']);}})[_0x6def('0x6')](function(_0x21b90c){return _0x2a0fee(_0x21b90c);});});}exports[_0x6def('0x7')]=function(_0x394b16,_0x305d35){return request('SendMail',{'account':_0x394b16,'message':_0x305d35});};
\ No newline at end of file
index 072de39..5408e16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x944d=['chatWaitingInteractions','stringify','md5','user:save','exports','moment','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','mailPause','faxPause','smsPause','openchannelPause','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatusTime','smsCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','mail','fax','whatsapp','length','Status','StatusTime','format','chatPause','mailStatusTime','faxCurrentCapacity','smsStatus','smsCurrentCapacity','whatsappStatusTime','openchannelStatus','busy'];(function(_0x3038be,_0x425d69){var _0x581d4e=function(_0x1f0731){while(--_0x1f0731){_0x3038be['push'](_0x3038be['shift']());}};_0x581d4e(++_0x425d69);}(_0x944d,0xc2));var _0xd944=function(_0x114023,_0x2610e0){_0x114023=_0x114023-0x0;var _0x5f14b7=_0x944d[_0x114023];return _0x5f14b7;};'use strict';var _=require('lodash');var moment=require(_0xd944('0x0'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0xd944('0x1'));config[_0xd944('0x2')]=_['defaults'](config['redis'],{'host':_0xd944('0x3'),'port':0x18eb});var io=require(_0xd944('0x4'))(new Redis(config[_0xd944('0x2')]));function Agent(_0x82f3b4){this['id']=_0x82f3b4['id']||0x0;this[_0xd944('0x5')]=_0x82f3b4[_0xd944('0x5')]||'';this['online']=_0x82f3b4[_0xd944('0x6')]||!![];this[_0xd944('0x7')]=_0x82f3b4[_0xd944('0x7')]||![];this['chatPause']=_0x82f3b4['chatPause']||![];this[_0xd944('0x8')]=_0x82f3b4['mailPause']||![];this[_0xd944('0x9')]=_0x82f3b4[_0xd944('0x9')]||![];this[_0xd944('0xa')]=_0x82f3b4[_0xd944('0xa')]||![];this[_0xd944('0xb')]=_0x82f3b4[_0xd944('0xb')]||![];this['chatStatus']='unknown';this[_0xd944('0xc')]=0x0;this['chatCapacity']=_0x82f3b4[_0xd944('0xd')]||0x0;this[_0xd944('0xe')]=0x0;this[_0xd944('0xf')]=_0xd944('0x10');this['mailStatusTime']=0x0;this['mailCapacity']=_0x82f3b4[_0xd944('0x11')]||0x0;this[_0xd944('0x12')]=0x0;this[_0xd944('0x13')]=_0xd944('0x10');this[_0xd944('0x14')]=0x0;this['faxCapacity']=_0x82f3b4[_0xd944('0x15')]||0x0;this['faxCurrentCapacity']=0x0;this['smsStatus']='unknown';this[_0xd944('0x16')]=0x0;this['smsCapacity']=_0x82f3b4[_0xd944('0x17')]||0x0;this['smsCurrentCapacity']=0x0;this[_0xd944('0x18')]=_0xd944('0x10');this['whatsappStatusTime']=0x0;this[_0xd944('0x19')]=_0x82f3b4[_0xd944('0x19')]||0x0;this[_0xd944('0x1a')]=0x0;this['openchannelStatus']=_0xd944('0x10');this[_0xd944('0x1b')]=0x0;this[_0xd944('0x1c')]=_0x82f3b4[_0xd944('0x1c')]||0x0;this[_0xd944('0x1d')]=0x0;this['busy']=![];this[_0xd944('0x1e')]=undefined;this['md5']='';this['chatWaitingInteractions']={};this[_0xd944('0x1f')]={};this[_0xd944('0x20')]={};this[_0xd944('0x21')]={};this[_0xd944('0x22')]={};this[_0xd944('0x23')]={};this[_0xd944('0x24')]();}Agent[_0xd944('0x25')][_0xd944('0x26')]=function(_0x523532){if(this[_0x523532+_0xd944('0x27')]>0x0){if(this[_0x523532+_0xd944('0x28')]>0x0&&this[_0x523532+_0xd944('0x27')]>=this[_0x523532+_0xd944('0x28')]){return'maxcapacity';}else{return _0xd944('0x29');}}else{return _0xd944('0x2a');}};Agent['prototype'][_0xd944('0x24')]=function(){var _0x3c577e=[_0xd944('0x2b'),'chat','openchannel',_0xd944('0x2c'),'sms',_0xd944('0x2d')];for(var _0x2fe5b9=0x0;_0x2fe5b9<_0x3c577e[_0xd944('0x2e')];_0x2fe5b9+=0x1){var _0x23d3c4=this[_0xd944('0x26')](_0x3c577e[_0x2fe5b9]);if(this[_0x3c577e[_0x2fe5b9]+_0xd944('0x2f')]!==_0x23d3c4){this[_0x3c577e[_0x2fe5b9]+_0xd944('0x30')]=_['toNumber'](moment()[_0xd944('0x31')]('x'));}this[_0x3c577e[_0x2fe5b9]+_0xd944('0x2f')]=_0x23d3c4;}var _0x4df680={'id':this['id'],'name':this[_0xd944('0x5')],'online':this[_0xd944('0x6')],'voicePause':this[_0xd944('0x7')],'chatPause':this[_0xd944('0x32')],'mailPause':this['mailPause'],'smsPause':this['smsPause'],'faxPause':this[_0xd944('0x9')],'openchannelPause':this['openchannelPause'],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0xd944('0xc')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0xd944('0xe')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0xd944('0x33')],'mailCapacity':this[_0xd944('0x11')],'mailCurrentCapacity':this[_0xd944('0x12')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0xd944('0x14')],'faxCapacity':this[_0xd944('0x15')],'faxCurrentCapacity':this[_0xd944('0x34')],'smsStatus':this[_0xd944('0x35')],'smsStatusTime':this[_0xd944('0x16')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0xd944('0x36')],'whatsappStatus':this[_0xd944('0x18')],'whatsappStatusTime':this[_0xd944('0x37')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xd944('0x38')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xd944('0x1c')],'openchannelCurrentCapacity':this[_0xd944('0x1d')],'busy':this[_0xd944('0x39')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0xd944('0x3a')],'faxWaitingInteractions':this[_0xd944('0x1f')],'mailWaitingInteractions':this['mailWaitingInteractions'],'openchannelWaitingInteractions':this[_0xd944('0x21')],'smsWaitingInteractions':this[_0xd944('0x22')],'whatsappWaitingInteractions':this['whatsappWaitingInteractions']};var _0x4d2858=md5(JSON[_0xd944('0x3b')](_0x4df680));if(this['md5']!==_0x4d2858){this[_0xd944('0x3c')]=_0x4d2858;io['emit'](_0xd944('0x3d'),_0x4df680);}};module[_0xd944('0x3e')]=Agent;
\ No newline at end of file
+var _0x7437=['chat','fax','sms','whatsapp','Status','StatusTime','format','chatCurrentCapacity','whatsappStatusTime','whatsappCurrentCapacity','mailWaitingInteractions','openchannelWaitingInteractions','stringify','emit','user:save','lodash','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','prototype','updateRealtime','mail'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7437,0x117));var _0x7743=function(_0x55ee77,_0x51cda7){_0x55ee77=_0x55ee77-0x0;var _0x545213=_0x7437[_0x55ee77];return _0x545213;};'use strict';var _=require(_0x7743('0x0'));var moment=require(_0x7743('0x1'));var md5=require(_0x7743('0x2'));var Redis=require(_0x7743('0x3'));var config=require(_0x7743('0x4'));config[_0x7743('0x5')]=_['defaults'](config['redis'],{'host':_0x7743('0x6'),'port':0x18eb});var io=require(_0x7743('0x7'))(new Redis(config['redis']));function Agent(_0x256e62){this['id']=_0x256e62['id']||0x0;this[_0x7743('0x8')]=_0x256e62[_0x7743('0x8')]||'';this[_0x7743('0x9')]=_0x256e62['online']||!![];this[_0x7743('0xa')]=_0x256e62['voicePause']||![];this[_0x7743('0xb')]=_0x256e62[_0x7743('0xb')]||![];this['mailPause']=_0x256e62[_0x7743('0xc')]||![];this[_0x7743('0xd')]=_0x256e62[_0x7743('0xd')]||![];this['smsPause']=_0x256e62[_0x7743('0xe')]||![];this['openchannelPause']=_0x256e62[_0x7743('0xf')]||![];this[_0x7743('0x10')]=_0x7743('0x11');this[_0x7743('0x12')]=0x0;this[_0x7743('0x13')]=_0x256e62[_0x7743('0x13')]||0x0;this['chatCurrentCapacity']=0x0;this[_0x7743('0x14')]=_0x7743('0x11');this[_0x7743('0x15')]=0x0;this[_0x7743('0x16')]=_0x256e62[_0x7743('0x16')]||0x0;this[_0x7743('0x17')]=0x0;this[_0x7743('0x18')]=_0x7743('0x11');this[_0x7743('0x19')]=0x0;this[_0x7743('0x1a')]=_0x256e62[_0x7743('0x1a')]||0x0;this[_0x7743('0x1b')]=0x0;this[_0x7743('0x1c')]='unknown';this[_0x7743('0x1d')]=0x0;this['smsCapacity']=_0x256e62[_0x7743('0x1e')]||0x0;this[_0x7743('0x1f')]=0x0;this[_0x7743('0x20')]='unknown';this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x256e62['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x7743('0x21')]=_0x7743('0x11');this[_0x7743('0x22')]=0x0;this[_0x7743('0x23')]=_0x256e62[_0x7743('0x23')]||0x0;this[_0x7743('0x24')]=0x0;this[_0x7743('0x25')]=![];this[_0x7743('0x26')]=undefined;this[_0x7743('0x2')]='';this[_0x7743('0x27')]={};this[_0x7743('0x28')]={};this['mailWaitingInteractions']={};this['openchannelWaitingInteractions']={};this[_0x7743('0x29')]={};this[_0x7743('0x2a')]={};this['updateRealtime']();}Agent['prototype'][_0x7743('0x2b')]=function(_0x1bc0a8){if(this[_0x1bc0a8+_0x7743('0x2c')]>0x0){if(this[_0x1bc0a8+'Capacity']>0x0&&this[_0x1bc0a8+_0x7743('0x2c')]>=this[_0x1bc0a8+_0x7743('0x2d')]){return _0x7743('0x2e');}else{return _0x7743('0x2f');}}else{return'idle';}};Agent[_0x7743('0x30')][_0x7743('0x31')]=function(){var _0x5eb688=[_0x7743('0x32'),_0x7743('0x33'),'openchannel',_0x7743('0x34'),_0x7743('0x35'),_0x7743('0x36')];for(var _0x4a3cdf=0x0;_0x4a3cdf<_0x5eb688['length'];_0x4a3cdf+=0x1){var _0x12f4d2=this[_0x7743('0x2b')](_0x5eb688[_0x4a3cdf]);if(this[_0x5eb688[_0x4a3cdf]+_0x7743('0x37')]!==_0x12f4d2){this[_0x5eb688[_0x4a3cdf]+_0x7743('0x38')]=_['toNumber'](moment()[_0x7743('0x39')]('x'));}this[_0x5eb688[_0x4a3cdf]+'Status']=_0x12f4d2;}var _0x5bd8ca={'id':this['id'],'name':this[_0x7743('0x8')],'online':this[_0x7743('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0x7743('0xb')],'mailPause':this[_0x7743('0xc')],'smsPause':this['smsPause'],'faxPause':this[_0x7743('0xd')],'openchannelPause':this[_0x7743('0xf')],'chatStatus':this[_0x7743('0x10')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x7743('0x13')],'chatCurrentCapacity':this[_0x7743('0x3a')],'mailStatus':this[_0x7743('0x14')],'mailStatusTime':this[_0x7743('0x15')],'mailCapacity':this[_0x7743('0x16')],'mailCurrentCapacity':this[_0x7743('0x17')],'faxStatus':this[_0x7743('0x18')],'faxStatusTime':this[_0x7743('0x19')],'faxCapacity':this[_0x7743('0x1a')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x7743('0x1c')],'smsStatusTime':this[_0x7743('0x1d')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x7743('0x1f')],'whatsappStatus':this[_0x7743('0x20')],'whatsappStatusTime':this[_0x7743('0x3b')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x7743('0x3c')],'openchannelStatus':this[_0x7743('0x21')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x7743('0x24')],'busy':this[_0x7743('0x25')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0x7743('0x27')],'faxWaitingInteractions':this[_0x7743('0x28')],'mailWaitingInteractions':this[_0x7743('0x3d')],'openchannelWaitingInteractions':this[_0x7743('0x3e')],'smsWaitingInteractions':this['smsWaitingInteractions'],'whatsappWaitingInteractions':this[_0x7743('0x2a')]};var _0x480760=md5(JSON[_0x7743('0x3f')](_0x5bd8ca));if(this[_0x7743('0x2')]!==_0x480760){this[_0x7743('0x2')]=_0x480760;io[_0x7743('0x40')](_0x7743('0x41'),_0x5bd8ca);}};module['exports']=Agent;
\ No newline at end of file
index 6980d2b..5d76310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02dc=['chatPause','paused','available','stringify','format','chat:queue:%s','emit','chat_queue:save','md5','util','ioredis','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','loggedIn','length','online'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x02dc,0x116));var _0xc02d=function(_0x59639a,_0x5737a1){_0x59639a=_0x59639a-0x0;var _0x4ede73=_0x02dc[_0x59639a];return _0x4ede73;};'use strict';var _=require('lodash');var md5=require(_0xc02d('0x0'));var util=require(_0xc02d('0x1'));var Redis=require(_0xc02d('0x2'));var config=require('../../../config/environment');config[_0xc02d('0x3')]=_[_0xc02d('0x4')](config[_0xc02d('0x3')],{'host':_0xc02d('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function ChatQueue(_0x189748){this['id']=_0x189748['id']||0x0;this[_0xc02d('0x6')]=_0x189748['name']||'';this['timeout']=_0x189748[_0xc02d('0x7')]||0xa;this[_0xc02d('0x8')]=_0x189748[_0xc02d('0x8')]||_0xc02d('0x9');this[_0xc02d('0xa')]=_0x189748[_0xc02d('0xa')];this[_0xc02d('0xb')]={};this[_0xc02d('0xc')]=0x0;this['md5']='';this[_0xc02d('0xd')]();this[_0xc02d('0xe')]();}ChatQueue[_0xc02d('0xf')][_0xc02d('0xd')]=function(){var _0x2943f7=this[_0xc02d('0xb')]['_rr'];this[_0xc02d('0xb')]=_['map'](this[_0xc02d('0xa')],'id');this['mapAgentsId']['_rr']=_0x2943f7;};ChatQueue['prototype'][_0xc02d('0xe')]=function(){this[_0xc02d('0x10')]=0x0;this['paused']=0x0;for(var _0x3706f5=0x0;_0x3706f5<this[_0xc02d('0xa')][_0xc02d('0x11')];_0x3706f5+=0x1){if(this['Agents'][_0x3706f5][_0xc02d('0x12')]){this[_0xc02d('0x10')]+=0x1;}if(this[_0xc02d('0xa')][_0x3706f5][_0xc02d('0x13')]){this[_0xc02d('0x14')]+=0x1;}}this[_0xc02d('0x15')]=this[_0xc02d('0x10')]-this[_0xc02d('0x14')];this['available']=this[_0xc02d('0x15')]>=0x0?this[_0xc02d('0x15')]:0x0;var _0x1f00a9={'id':this['id'],'available':this[_0xc02d('0x15')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xc02d('0x14')],'waiting':this[_0xc02d('0xc')]};var _0x4d5b3e=md5(JSON[_0xc02d('0x16')](_0x1f00a9));if(this[_0xc02d('0x0')]!==_0x4d5b3e){this[_0xc02d('0x0')]=_0x4d5b3e;io['to'](util[_0xc02d('0x17')](_0xc02d('0x18'),_0x1f00a9[_0xc02d('0x6')]))[_0xc02d('0x19')](_0xc02d('0x1a'),_0x1f00a9);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0x4c0e=['format','emit','chat_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','_rr','map','mapAgentsId','loggedIn','length','chatPause','paused','available','stringify'];(function(_0x210e10,_0x285297){var _0x42c306=function(_0x1a3fc3){while(--_0x1a3fc3){_0x210e10['push'](_0x210e10['shift']());}};_0x42c306(++_0x285297);}(_0x4c0e,0x19a));var _0xe4c0=function(_0x39dd10,_0x134622){_0x39dd10=_0x39dd10-0x0;var _0x35bd8a=_0x4c0e[_0x39dd10];return _0x35bd8a;};'use strict';var _=require(_0xe4c0('0x0'));var md5=require(_0xe4c0('0x1'));var util=require(_0xe4c0('0x2'));var Redis=require('ioredis');var config=require(_0xe4c0('0x3'));config[_0xe4c0('0x4')]=_[_0xe4c0('0x5')](config[_0xe4c0('0x4')],{'host':_0xe4c0('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function ChatQueue(_0x1f24d2){this['id']=_0x1f24d2['id']||0x0;this[_0xe4c0('0x7')]=_0x1f24d2[_0xe4c0('0x7')]||'';this[_0xe4c0('0x8')]=_0x1f24d2[_0xe4c0('0x8')]||0xa;this[_0xe4c0('0x9')]=_0x1f24d2[_0xe4c0('0x9')]||_0xe4c0('0xa');this[_0xe4c0('0xb')]=_0x1f24d2[_0xe4c0('0xb')];this['mapAgentsId']={};this[_0xe4c0('0xc')]=0x0;this[_0xe4c0('0x1')]='';this[_0xe4c0('0xd')]();this[_0xe4c0('0xe')]();}ChatQueue[_0xe4c0('0xf')][_0xe4c0('0xd')]=function(){var _0x5a1c65=this['mapAgentsId'][_0xe4c0('0x10')];this['mapAgentsId']=_[_0xe4c0('0x11')](this[_0xe4c0('0xb')],'id');this[_0xe4c0('0x12')]['_rr']=_0x5a1c65;};ChatQueue[_0xe4c0('0xf')][_0xe4c0('0xe')]=function(){this[_0xe4c0('0x13')]=0x0;this['paused']=0x0;for(var _0x230430=0x0;_0x230430<this['Agents'][_0xe4c0('0x14')];_0x230430+=0x1){if(this[_0xe4c0('0xb')][_0x230430]['online']){this[_0xe4c0('0x13')]+=0x1;}if(this[_0xe4c0('0xb')][_0x230430][_0xe4c0('0x15')]){this[_0xe4c0('0x16')]+=0x1;}}this[_0xe4c0('0x17')]=this['loggedIn']-this['paused'];this['available']=this['available']>=0x0?this[_0xe4c0('0x17')]:0x0;var _0x221140={'id':this['id'],'available':this[_0xe4c0('0x17')],'loggedIn':this[_0xe4c0('0x13')],'name':this[_0xe4c0('0x7')],'paused':this['paused'],'waiting':this[_0xe4c0('0xc')]};var _0x172c70=md5(JSON[_0xe4c0('0x18')](_0x221140));if(this[_0xe4c0('0x1')]!==_0x172c70){this[_0xe4c0('0x1')]=_0x172c70;io['to'](util[_0xe4c0('0x19')]('chat:queue:%s',_0x221140[_0xe4c0('0x7')]))[_0xe4c0('0x1a')](_0xe4c0('0x1b'),_0x221140);}};module[_0xe4c0('0x1c')]=ChatQueue;
\ No newline at end of file
index f604028..bdd12aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf17d=['Agents','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','length','online','paused','available','waiting','stringify','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf17d,0x15c));var _0xdf17=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xf17d[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xdf17('0x0'));var md5=require(_0xdf17('0x1'));var util=require(_0xdf17('0x2'));var Redis=require(_0xdf17('0x3'));var config=require(_0xdf17('0x4'));config[_0xdf17('0x5')]=_[_0xdf17('0x6')](config[_0xdf17('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xdf17('0x7'))(new Redis(config[_0xdf17('0x5')]));function FaxQueue(_0x5246d2){this['id']=_0x5246d2['id']||0x0;this[_0xdf17('0x8')]=_0x5246d2[_0xdf17('0x8')]||'';this[_0xdf17('0x9')]=_0x5246d2[_0xdf17('0x9')]||0xa;this[_0xdf17('0xa')]=_0x5246d2[_0xdf17('0xa')]||_0xdf17('0xb');this[_0xdf17('0xc')]=_0x5246d2['Agents'];this['mapAgentsId']={};this['waiting']=0x0;this['md5']='';this[_0xdf17('0xd')]();this[_0xdf17('0xe')]();}FaxQueue[_0xdf17('0xf')][_0xdf17('0xd')]=function(){var _0xa82331=this[_0xdf17('0x10')][_0xdf17('0x11')];this[_0xdf17('0x10')]=_[_0xdf17('0x12')](this[_0xdf17('0xc')],'id');this['mapAgentsId'][_0xdf17('0x11')]=_0xa82331;};FaxQueue[_0xdf17('0xf')][_0xdf17('0xe')]=function(){this[_0xdf17('0x13')]=0x0;this['paused']=0x0;for(var _0x59bba2=0x0;_0x59bba2<this[_0xdf17('0xc')][_0xdf17('0x14')];_0x59bba2+=0x1){if(this[_0xdf17('0xc')][_0x59bba2][_0xdf17('0x15')]){this[_0xdf17('0x13')]+=0x1;}if(this['Agents'][_0x59bba2]['faxPause']){this[_0xdf17('0x16')]+=0x1;}}this['available']=this['loggedIn']-this['paused'];this['available']=this['available']>=0x0?this[_0xdf17('0x17')]:0x0;var _0x18b27c={'id':this['id'],'available':this[_0xdf17('0x17')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xdf17('0x18')]};var _0x29e88d=md5(JSON[_0xdf17('0x19')](_0x18b27c));if(this['md5']!==_0x29e88d){this[_0xdf17('0x1')]=_0x29e88d;io['to'](util[_0xdf17('0x1a')](_0xdf17('0x1b'),_0x18b27c[_0xdf17('0x8')]))[_0xdf17('0x1c')](_0xdf17('0x1d'),_0x18b27c);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0x914e=['_rr','map','paused','length','online','loggedIn','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','../../../config/environment','redis','defaults','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId'];(function(_0x437e8a,_0x44dfba){var _0x5e9910=function(_0x3b71e1){while(--_0x3b71e1){_0x437e8a['push'](_0x437e8a['shift']());}};_0x5e9910(++_0x44dfba);}(_0x914e,0x1de));var _0xe914=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x914e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe914('0x0'));var md5=require(_0xe914('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0xe914('0x2'));config[_0xe914('0x3')]=_[_0xe914('0x4')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function FaxQueue(_0x3076a4){this['id']=_0x3076a4['id']||0x0;this[_0xe914('0x5')]=_0x3076a4[_0xe914('0x5')]||'';this['timeout']=_0x3076a4[_0xe914('0x6')]||0xa;this[_0xe914('0x7')]=_0x3076a4[_0xe914('0x7')]||_0xe914('0x8');this[_0xe914('0x9')]=_0x3076a4[_0xe914('0x9')];this['mapAgentsId']={};this[_0xe914('0xa')]=0x0;this[_0xe914('0x1')]='';this[_0xe914('0xb')]();this[_0xe914('0xc')]();}FaxQueue[_0xe914('0xd')][_0xe914('0xb')]=function(){var _0x46ded7=this[_0xe914('0xe')][_0xe914('0xf')];this['mapAgentsId']=_[_0xe914('0x10')](this['Agents'],'id');this['mapAgentsId'][_0xe914('0xf')]=_0x46ded7;};FaxQueue[_0xe914('0xd')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0xe914('0x11')]=0x0;for(var _0x5cd5eb=0x0;_0x5cd5eb<this[_0xe914('0x9')][_0xe914('0x12')];_0x5cd5eb+=0x1){if(this[_0xe914('0x9')][_0x5cd5eb][_0xe914('0x13')]){this[_0xe914('0x14')]+=0x1;}if(this[_0xe914('0x9')][_0x5cd5eb][_0xe914('0x15')]){this[_0xe914('0x11')]+=0x1;}}this[_0xe914('0x16')]=this[_0xe914('0x14')]-this[_0xe914('0x11')];this[_0xe914('0x16')]=this[_0xe914('0x16')]>=0x0?this[_0xe914('0x16')]:0x0;var _0x3523c3={'id':this['id'],'available':this['available'],'loggedIn':this[_0xe914('0x14')],'name':this[_0xe914('0x5')],'paused':this[_0xe914('0x11')],'waiting':this[_0xe914('0xa')]};var _0x41e1cf=md5(JSON[_0xe914('0x17')](_0x3523c3));if(this['md5']!==_0x41e1cf){this[_0xe914('0x1')]=_0x41e1cf;io['to'](util[_0xe914('0x18')](_0xe914('0x19'),_0x3523c3[_0xe914('0x5')]))[_0xe914('0x1a')](_0xe914('0x1b'),_0x3523c3);}};module[_0xe914('0x1c')]=FaxQueue;
\ No newline at end of file
index c116499..1f2e3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bbf=['exports','name','Intervals'];(function(_0x4e170e,_0x207e58){var _0x338291=function(_0x4cb198){while(--_0x4cb198){_0x4e170e['push'](_0x4e170e['shift']());}};_0x338291(++_0x207e58);}(_0x4bbf,0x1ea));var _0xf4bb=function(_0x346e47,_0x3b3eaa){_0x346e47=_0x346e47-0x0;var _0x6d401f=_0x4bbf[_0x346e47];return _0x6d401f;};'use strict';function Interval(_0x515e47){this['id']=_0x515e47['id']||0x0;this[_0xf4bb('0x0')]=_0x515e47[_0xf4bb('0x0')]||'';this[_0xf4bb('0x1')]=_0x515e47['Intervals']||{};}module[_0xf4bb('0x2')]=Interval;
\ No newline at end of file
+var _0x2a78=['name','Intervals','exports'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x2a78,0x6f));var _0x82a7=function(_0x5b6ba4,_0x3cbe19){_0x5b6ba4=_0x5b6ba4-0x0;var _0x474a4a=_0x2a78[_0x5b6ba4];return _0x474a4a;};'use strict';function Interval(_0x20311c){this['id']=_0x20311c['id']||0x0;this[_0x82a7('0x0')]=_0x20311c['name']||'';this[_0x82a7('0x1')]=_0x20311c[_0x82a7('0x1')]||{};}module[_0x82a7('0x2')]=Interval;
\ No newline at end of file
index ea63ec2..d9df9cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eff=['available','stringify','mail:queue:%s','emit','exports','util','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','md5','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','length','online','mailPause'];(function(_0x4c39b9,_0x2edb07){var _0x2c458e=function(_0x542693){while(--_0x542693){_0x4c39b9['push'](_0x4c39b9['shift']());}};_0x2c458e(++_0x2edb07);}(_0x9eff,0x11d));var _0xf9ef=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x9eff[_0x2e4e19];return _0x9ba20b;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0xf9ef('0x0'));var Redis=require('ioredis');var config=require(_0xf9ef('0x1'));config['redis']=_[_0xf9ef('0x2')](config[_0xf9ef('0x3')],{'host':_0xf9ef('0x4'),'port':0x18eb});var io=require(_0xf9ef('0x5'))(new Redis(config[_0xf9ef('0x3')]));function MailQueue(_0x2af568){this['id']=_0x2af568['id']||0x0;this['name']=_0x2af568[_0xf9ef('0x6')]||'';this[_0xf9ef('0x7')]=_0x2af568[_0xf9ef('0x7')]||0xa;this[_0xf9ef('0x8')]=_0x2af568['strategy']||'beepall';this[_0xf9ef('0x9')]=_0x2af568[_0xf9ef('0x9')];this['mapAgentsId']={};this[_0xf9ef('0xa')]=0x0;this[_0xf9ef('0xb')]='';this[_0xf9ef('0xc')]();this[_0xf9ef('0xd')]();}MailQueue[_0xf9ef('0xe')]['updateRouting']=function(){var _0x241fcf=this[_0xf9ef('0xf')]['_rr'];this[_0xf9ef('0xf')]=_[_0xf9ef('0x10')](this[_0xf9ef('0x9')],'id');this[_0xf9ef('0xf')][_0xf9ef('0x11')]=_0x241fcf;};MailQueue[_0xf9ef('0xe')][_0xf9ef('0xd')]=function(){this[_0xf9ef('0x12')]=0x0;this[_0xf9ef('0x13')]=0x0;for(var _0xe6775e=0x0;_0xe6775e<this[_0xf9ef('0x9')][_0xf9ef('0x14')];_0xe6775e+=0x1){if(this[_0xf9ef('0x9')][_0xe6775e][_0xf9ef('0x15')]){this[_0xf9ef('0x12')]+=0x1;}if(this[_0xf9ef('0x9')][_0xe6775e][_0xf9ef('0x16')]){this['paused']+=0x1;}}this[_0xf9ef('0x17')]=this['loggedIn']-this[_0xf9ef('0x13')];this['available']=this[_0xf9ef('0x17')]>=0x0?this[_0xf9ef('0x17')]:0x0;var _0x3f14b6={'id':this['id'],'available':this[_0xf9ef('0x17')],'loggedIn':this['loggedIn'],'name':this[_0xf9ef('0x6')],'paused':this[_0xf9ef('0x13')],'waiting':this[_0xf9ef('0xa')]};var _0x5631c0=md5(JSON[_0xf9ef('0x18')](_0x3f14b6));if(this[_0xf9ef('0xb')]!==_0x5631c0){this[_0xf9ef('0xb')]=_0x5631c0;io['to'](util['format'](_0xf9ef('0x19'),_0x3f14b6['name']))[_0xf9ef('0x1a')]('mail_queue:save',_0x3f14b6);}};module[_0xf9ef('0x1b')]=MailQueue;
\ No newline at end of file
+var _0x735d=['_rr','map','prototype','paused','length','loggedIn','mailPause','available','stringify','format','mail:queue:%s','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId'];(function(_0x37f184,_0x13ed3c){var _0x26e39f=function(_0x41a821){while(--_0x41a821){_0x37f184['push'](_0x37f184['shift']());}};_0x26e39f(++_0x13ed3c);}(_0x735d,0x124));var _0xd735=function(_0x1f99a0,_0x50b73d){_0x1f99a0=_0x1f99a0-0x0;var _0x1e0849=_0x735d[_0x1f99a0];return _0x1e0849;};'use strict';var _=require(_0xd735('0x0'));var md5=require(_0xd735('0x1'));var util=require(_0xd735('0x2'));var Redis=require(_0xd735('0x3'));var config=require(_0xd735('0x4'));config[_0xd735('0x5')]=_[_0xd735('0x6')](config[_0xd735('0x5')],{'host':_0xd735('0x7'),'port':0x18eb});var io=require(_0xd735('0x8'))(new Redis(config['redis']));function MailQueue(_0x4726e6){this['id']=_0x4726e6['id']||0x0;this[_0xd735('0x9')]=_0x4726e6[_0xd735('0x9')]||'';this[_0xd735('0xa')]=_0x4726e6[_0xd735('0xa')]||0xa;this[_0xd735('0xb')]=_0x4726e6['strategy']||_0xd735('0xc');this[_0xd735('0xd')]=_0x4726e6[_0xd735('0xd')];this['mapAgentsId']={};this[_0xd735('0xe')]=0x0;this[_0xd735('0x1')]='';this[_0xd735('0xf')]();this[_0xd735('0x10')]();}MailQueue['prototype'][_0xd735('0xf')]=function(){var _0x4d66ab=this[_0xd735('0x11')][_0xd735('0x12')];this[_0xd735('0x11')]=_[_0xd735('0x13')](this[_0xd735('0xd')],'id');this['mapAgentsId'][_0xd735('0x12')]=_0x4d66ab;};MailQueue[_0xd735('0x14')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0xd735('0x15')]=0x0;for(var _0x59ffa3=0x0;_0x59ffa3<this[_0xd735('0xd')][_0xd735('0x16')];_0x59ffa3+=0x1){if(this[_0xd735('0xd')][_0x59ffa3]['online']){this[_0xd735('0x17')]+=0x1;}if(this['Agents'][_0x59ffa3][_0xd735('0x18')]){this[_0xd735('0x15')]+=0x1;}}this[_0xd735('0x19')]=this[_0xd735('0x17')]-this[_0xd735('0x15')];this[_0xd735('0x19')]=this[_0xd735('0x19')]>=0x0?this[_0xd735('0x19')]:0x0;var _0x1bed30={'id':this['id'],'available':this[_0xd735('0x19')],'loggedIn':this[_0xd735('0x17')],'name':this[_0xd735('0x9')],'paused':this['paused'],'waiting':this[_0xd735('0xe')]};var _0x269575=md5(JSON[_0xd735('0x1a')](_0x1bed30));if(this[_0xd735('0x1')]!==_0x269575){this['md5']=_0x269575;io['to'](util[_0xd735('0x1b')](_0xd735('0x1c'),_0x1bed30['name']))['emit'](_0xd735('0x1d'),_0x1bed30);}};module[_0xd735('0x1e')]=MailQueue;
\ No newline at end of file
index 213a4e4..6b95d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x836465,_0x5442ae){var _0x2150ea=function(_0x4f4bc2){while(--_0x4f4bc2){_0x836465['push'](_0x836465['shift']());}};_0x2150ea(++_0x5442ae);}(_0x1261,0x144));var _0x1126=function(_0x3af955,_0x21431c){_0x3af955=_0x3af955-0x0;var _0x167de5=_0x1261[_0x3af955];return _0x167de5;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x474d97,_0x5909ce){var _0x1edf25=function(_0x2831df){while(--_0x2831df){_0x474d97['push'](_0x474d97['shift']());}};_0x1edf25(++_0x5909ce);}(_0x1261,0x144));var _0x1126=function(_0x4a258d,_0x30f281){_0x4a258d=_0x4a258d-0x0;var _0x104963=_0x1261[_0x4a258d];return _0x104963;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index b19e717..3df1735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2333=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','available','format','sms:queue:%s','emit','exports','lodash','md5','../../../config/environment','redis'];(function(_0x212bf5,_0x165cbd){var _0xfcad21=function(_0x4a4e6e){while(--_0x4a4e6e){_0x212bf5['push'](_0x212bf5['shift']());}};_0xfcad21(++_0x165cbd);}(_0x2333,0x11a));var _0x3233=function(_0x26d5d5,_0x4214e6){_0x26d5d5=_0x26d5d5-0x0;var _0x4536da=_0x2333[_0x26d5d5];return _0x4536da;};'use strict';var _=require(_0x3233('0x0'));var md5=require(_0x3233('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x3233('0x2'));config[_0x3233('0x3')]=_['defaults'](config[_0x3233('0x3')],{'host':_0x3233('0x4'),'port':0x18eb});var io=require(_0x3233('0x5'))(new Redis(config[_0x3233('0x3')]));function SmsQueue(_0x40768d){this['id']=_0x40768d['id']||0x0;this[_0x3233('0x6')]=_0x40768d[_0x3233('0x6')]||'';this[_0x3233('0x7')]=_0x40768d[_0x3233('0x7')]||0xa;this[_0x3233('0x8')]=_0x40768d[_0x3233('0x8')]||_0x3233('0x9');this[_0x3233('0xa')]=_0x40768d[_0x3233('0xa')];this[_0x3233('0xb')]={};this[_0x3233('0xc')]=0x0;this[_0x3233('0x1')]='';this[_0x3233('0xd')]();this[_0x3233('0xe')]();}SmsQueue[_0x3233('0xf')][_0x3233('0xd')]=function(){var _0x5dc591=this[_0x3233('0xb')][_0x3233('0x10')];this[_0x3233('0xb')]=_[_0x3233('0x11')](this[_0x3233('0xa')],'id');this[_0x3233('0xb')][_0x3233('0x10')]=_0x5dc591;};SmsQueue[_0x3233('0xf')][_0x3233('0xe')]=function(){this[_0x3233('0x12')]=0x0;this[_0x3233('0x13')]=0x0;for(var _0x27e9fd=0x0;_0x27e9fd<this[_0x3233('0xa')]['length'];_0x27e9fd+=0x1){if(this['Agents'][_0x27e9fd][_0x3233('0x14')]){this[_0x3233('0x12')]+=0x1;}if(this[_0x3233('0xa')][_0x27e9fd]['smsPause']){this[_0x3233('0x13')]+=0x1;}}this[_0x3233('0x15')]=this[_0x3233('0x12')]-this['paused'];this[_0x3233('0x15')]=this[_0x3233('0x15')]>=0x0?this['available']:0x0;var _0x38a9c0={'id':this['id'],'available':this['available'],'loggedIn':this[_0x3233('0x12')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x298f71=md5(JSON['stringify'](_0x38a9c0));if(this[_0x3233('0x1')]!==_0x298f71){this['md5']=_0x298f71;io['to'](util[_0x3233('0x16')](_0x3233('0x17'),_0x38a9c0[_0x3233('0x6')]))[_0x3233('0x18')]('sms_queue:save',_0x38a9c0);}};module[_0x3233('0x19')]=SmsQueue;
\ No newline at end of file
+var _0x2e35=['redis','defaults','socket.io-emitter','name','strategy','Agents','waiting','updateRealtime','updateRouting','mapAgentsId','map','length','online','loggedIn','smsPause','paused','available','stringify','format','sms:queue:%s','emit','sms_queue:save','lodash','md5','util','../../../config/environment'];(function(_0x2a563c,_0x30138e){var _0x3bcc5a=function(_0x372ba9){while(--_0x372ba9){_0x2a563c['push'](_0x2a563c['shift']());}};_0x3bcc5a(++_0x30138e);}(_0x2e35,0x1d0));var _0x52e3=function(_0x4ba3c7,_0x3228a0){_0x4ba3c7=_0x4ba3c7-0x0;var _0x35e3f3=_0x2e35[_0x4ba3c7];return _0x35e3f3;};'use strict';var _=require(_0x52e3('0x0'));var md5=require(_0x52e3('0x1'));var util=require(_0x52e3('0x2'));var Redis=require('ioredis');var config=require(_0x52e3('0x3'));config[_0x52e3('0x4')]=_[_0x52e3('0x5')](config[_0x52e3('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x52e3('0x6'))(new Redis(config[_0x52e3('0x4')]));function SmsQueue(_0x1f6987){this['id']=_0x1f6987['id']||0x0;this[_0x52e3('0x7')]=_0x1f6987['name']||'';this['timeout']=_0x1f6987['timeout']||0xa;this[_0x52e3('0x8')]=_0x1f6987['strategy']||'beepall';this[_0x52e3('0x9')]=_0x1f6987[_0x52e3('0x9')];this['mapAgentsId']={};this[_0x52e3('0xa')]=0x0;this[_0x52e3('0x1')]='';this['updateRouting']();this[_0x52e3('0xb')]();}SmsQueue['prototype'][_0x52e3('0xc')]=function(){var _0x10f70f=this[_0x52e3('0xd')]['_rr'];this[_0x52e3('0xd')]=_[_0x52e3('0xe')](this['Agents'],'id');this[_0x52e3('0xd')]['_rr']=_0x10f70f;};SmsQueue['prototype']['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x105c80=0x0;_0x105c80<this[_0x52e3('0x9')][_0x52e3('0xf')];_0x105c80+=0x1){if(this[_0x52e3('0x9')][_0x105c80][_0x52e3('0x10')]){this[_0x52e3('0x11')]+=0x1;}if(this[_0x52e3('0x9')][_0x105c80][_0x52e3('0x12')]){this[_0x52e3('0x13')]+=0x1;}}this[_0x52e3('0x14')]=this[_0x52e3('0x11')]-this['paused'];this[_0x52e3('0x14')]=this[_0x52e3('0x14')]>=0x0?this['available']:0x0;var _0x3088a2={'id':this['id'],'available':this[_0x52e3('0x14')],'loggedIn':this[_0x52e3('0x11')],'name':this[_0x52e3('0x7')],'paused':this[_0x52e3('0x13')],'waiting':this[_0x52e3('0xa')]};var _0x3f628a=md5(JSON[_0x52e3('0x15')](_0x3088a2));if(this[_0x52e3('0x1')]!==_0x3f628a){this[_0x52e3('0x1')]=_0x3f628a;io['to'](util[_0x52e3('0x16')](_0x52e3('0x17'),_0x3088a2[_0x52e3('0x7')]))[_0x52e3('0x18')](_0x52e3('0x19'),_0x3088a2);}};module['exports']=SmsQueue;
\ No newline at end of file
index 8c1eb56..f49967a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cbf=['defaults','socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','Agents','length','online','whatsappPause','available','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis'];(function(_0x948e6c,_0x21ba9c){var _0x1302c5=function(_0x57112e){while(--_0x57112e){_0x948e6c['push'](_0x948e6c['shift']());}};_0x1302c5(++_0x21ba9c);}(_0x4cbf,0x100));var _0xf4cb=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4cbf[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xf4cb('0x0'));var md5=require('md5');var util=require(_0xf4cb('0x1'));var Redis=require(_0xf4cb('0x2'));var config=require(_0xf4cb('0x3'));config[_0xf4cb('0x4')]=_[_0xf4cb('0x5')](config[_0xf4cb('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xf4cb('0x6'))(new Redis(config[_0xf4cb('0x4')]));function WhatsappQueue(_0x5c55ac){this['id']=_0x5c55ac['id']||0x0;this[_0xf4cb('0x7')]=_0x5c55ac[_0xf4cb('0x7')]||'';this[_0xf4cb('0x8')]=_0x5c55ac[_0xf4cb('0x8')]||0xa;this[_0xf4cb('0x9')]=_0x5c55ac[_0xf4cb('0x9')]||_0xf4cb('0xa');this['Agents']=_0x5c55ac['Agents'];this[_0xf4cb('0xb')]={};this[_0xf4cb('0xc')]=0x0;this[_0xf4cb('0xd')]='';this[_0xf4cb('0xe')]();this[_0xf4cb('0xf')]();}WhatsappQueue[_0xf4cb('0x10')][_0xf4cb('0xe')]=function(){var _0x29bb46=this[_0xf4cb('0xb')][_0xf4cb('0x11')];this[_0xf4cb('0xb')]=_['map'](this['Agents'],'id');this['mapAgentsId']['_rr']=_0x29bb46;};WhatsappQueue[_0xf4cb('0x10')][_0xf4cb('0xf')]=function(){this[_0xf4cb('0x12')]=0x0;this[_0xf4cb('0x13')]=0x0;for(var _0x1ef5f1=0x0;_0x1ef5f1<this[_0xf4cb('0x14')][_0xf4cb('0x15')];_0x1ef5f1+=0x1){if(this[_0xf4cb('0x14')][_0x1ef5f1][_0xf4cb('0x16')]){this[_0xf4cb('0x12')]+=0x1;}if(this[_0xf4cb('0x14')][_0x1ef5f1][_0xf4cb('0x17')]){this[_0xf4cb('0x13')]+=0x1;}}this[_0xf4cb('0x18')]=this[_0xf4cb('0x12')]-this['paused'];this[_0xf4cb('0x18')]=this[_0xf4cb('0x18')]>=0x0?this[_0xf4cb('0x18')]:0x0;var _0x1e6cfa={'id':this['id'],'available':this['available'],'loggedIn':this[_0xf4cb('0x12')],'name':this[_0xf4cb('0x7')],'paused':this[_0xf4cb('0x13')],'waiting':this['waiting']};var _0x4bc626=md5(JSON['stringify'](_0x1e6cfa));if(this[_0xf4cb('0xd')]!==_0x4bc626){this[_0xf4cb('0xd')]=_0x4bc626;io['to'](util[_0xf4cb('0x19')](_0xf4cb('0x1a'),_0x1e6cfa['name']))['emit'](_0xf4cb('0x1b'),_0x1e6cfa);}};module[_0xf4cb('0x1c')]=WhatsappQueue;
\ No newline at end of file
+var _0x6178=['redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','_rr','mapAgentsId','map','loggedIn','paused','length','whatsappPause','available','stringify','format','whatsapp:queue:%s','whatsapp_queue:save','md5','util','ioredis','../../../config/environment'];(function(_0x289b4e,_0x609fab){var _0xe7754f=function(_0x1b64df){while(--_0x1b64df){_0x289b4e['push'](_0x289b4e['shift']());}};_0xe7754f(++_0x609fab);}(_0x6178,0x14c));var _0x8617=function(_0x1bd4e9,_0x2f011e){_0x1bd4e9=_0x1bd4e9-0x0;var _0x4c40e9=_0x6178[_0x1bd4e9];return _0x4c40e9;};'use strict';var _=require('lodash');var md5=require(_0x8617('0x0'));var util=require(_0x8617('0x1'));var Redis=require(_0x8617('0x2'));var config=require(_0x8617('0x3'));config[_0x8617('0x4')]=_['defaults'](config[_0x8617('0x4')],{'host':_0x8617('0x5'),'port':0x18eb});var io=require(_0x8617('0x6'))(new Redis(config[_0x8617('0x4')]));function WhatsappQueue(_0x383903){this['id']=_0x383903['id']||0x0;this[_0x8617('0x7')]=_0x383903[_0x8617('0x7')]||'';this['timeout']=_0x383903[_0x8617('0x8')]||0xa;this[_0x8617('0x9')]=_0x383903['strategy']||_0x8617('0xa');this['Agents']=_0x383903[_0x8617('0xb')];this['mapAgentsId']={};this[_0x8617('0xc')]=0x0;this[_0x8617('0x0')]='';this[_0x8617('0xd')]();this[_0x8617('0xe')]();}WhatsappQueue[_0x8617('0xf')]['updateRouting']=function(){var _0x51d7c3=this['mapAgentsId'][_0x8617('0x10')];this[_0x8617('0x11')]=_[_0x8617('0x12')](this[_0x8617('0xb')],'id');this[_0x8617('0x11')][_0x8617('0x10')]=_0x51d7c3;};WhatsappQueue[_0x8617('0xf')][_0x8617('0xe')]=function(){this[_0x8617('0x13')]=0x0;this[_0x8617('0x14')]=0x0;for(var _0x482402=0x0;_0x482402<this[_0x8617('0xb')][_0x8617('0x15')];_0x482402+=0x1){if(this['Agents'][_0x482402]['online']){this[_0x8617('0x13')]+=0x1;}if(this['Agents'][_0x482402][_0x8617('0x16')]){this[_0x8617('0x14')]+=0x1;}}this['available']=this[_0x8617('0x13')]-this[_0x8617('0x14')];this[_0x8617('0x17')]=this[_0x8617('0x17')]>=0x0?this['available']:0x0;var _0x53536b={'id':this['id'],'available':this[_0x8617('0x17')],'loggedIn':this[_0x8617('0x13')],'name':this[_0x8617('0x7')],'paused':this['paused'],'waiting':this[_0x8617('0xc')]};var _0x34f175=md5(JSON[_0x8617('0x18')](_0x53536b));if(this[_0x8617('0x0')]!==_0x34f175){this[_0x8617('0x0')]=_0x34f175;io['to'](util[_0x8617('0x19')](_0x8617('0x1a'),_0x53536b[_0x8617('0x7')]))['emit'](_0x8617('0x1b'),_0x53536b);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 932cc32..24b9da0 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(_0x4d5d33,_0x19b338){var _0x1d0bd0=function(_0x8b6f88){while(--_0x8b6f88){_0x4d5d33['push'](_0x4d5d33['shift']());}};_0x1d0bd0(++_0x19b338);}(_0xb10b,0x12a));var _0xbb10=function(_0x1c1820,_0x18bb79){_0x1c1820=_0x1c1820-0x0;var _0x6690e6=_0xb10b[_0x1c1820];return _0x6690e6;};'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(_0x3e6fd3,_0x3015c1){var _0x31b797=function(_0x5ef7eb){while(--_0x5ef7eb){_0x3e6fd3['push'](_0x3e6fd3['shift']());}};_0x31b797(++_0x3015c1);}(_0xb10b,0x12a));var _0xbb10=function(_0xfff9cf,_0x55ad70){_0xfff9cf=_0xfff9cf-0x0;var _0x231718=_0xb10b[_0xfff9cf];return _0x231718;};'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 c08ee27..fd1bc96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaef7=['UpdateChatInteraction','updateChatInteraction','addTags','addTagsToChatInteraction','../client','Request'];(function(_0x4776ba,_0x250658){var _0x354c17=function(_0x42b420){while(--_0x42b420){_0x4776ba['push'](_0x4776ba['shift']());}};_0x354c17(++_0x250658);}(_0xaef7,0x13c));var _0x7aef=function(_0xca8f32,_0xe6ba73){_0xca8f32=_0xca8f32-0x0;var _0x4c23f8=_0xaef7[_0xca8f32];return _0x4c23f8;};'use strict';var client=require(_0x7aef('0x0'));exports['update']=function(_0xfe70c8,_0x30f88f){return client[_0x7aef('0x1')](_0x7aef('0x2'),{'body':_0x30f88f,'options':{'where':{'id':_0xfe70c8}},'log':_0x7aef('0x3')});};exports[_0x7aef('0x4')]=function(_0x95628e,_0xc274ec){return client[_0x7aef('0x1')]('AddTagsToChatInteraction',{'body':_0xc274ec,'options':{'where':{'id':_0x95628e}},'log':_0x7aef('0x5')});};
\ No newline at end of file
+var _0x1b0a=['addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x3b4991,_0x2ce46d){var _0x16553c=function(_0x1eb3b5){while(--_0x1eb3b5){_0x3b4991['push'](_0x3b4991['shift']());}};_0x16553c(++_0x2ce46d);}(_0x1b0a,0x1cf));var _0xa1b0=function(_0xd7dd38,_0x319314){_0xd7dd38=_0xd7dd38-0x0;var _0x2b6dcd=_0x1b0a[_0xd7dd38];return _0x2b6dcd;};'use strict';var client=require(_0xa1b0('0x0'));exports[_0xa1b0('0x1')]=function(_0x546b1c,_0x3f1bbb){return client[_0xa1b0('0x2')](_0xa1b0('0x3'),{'body':_0x3f1bbb,'options':{'where':{'id':_0x546b1c}},'log':'updateChatInteraction'});};exports[_0xa1b0('0x4')]=function(_0x33bc75,_0x199df5){return client[_0xa1b0('0x2')](_0xa1b0('0x5'),{'body':_0x199df5,'options':{'where':{'id':_0x33bc75}},'log':_0xa1b0('0x6')});};
\ No newline at end of file
index 8fc3cac..1f25dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x284e=['../client','create','Request','CreateChatMessage'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x284e,0x78));var _0xe284=function(_0x20ca23,_0xfa5d22){_0x20ca23=_0x20ca23-0x0;var _0x168181=_0x284e[_0x20ca23];return _0x168181;};'use strict';var client=require(_0xe284('0x0'));exports[_0xe284('0x1')]=function(_0x4597c6){return client[_0xe284('0x2')](_0xe284('0x3'),{'body':_0x4597c6,'log':'createChatMessage'});};
\ No newline at end of file
+var _0xf310=['../client','create','Request','CreateChatMessage'];(function(_0x2172da,_0x376150){var _0x66993a=function(_0x1f5137){while(--_0x1f5137){_0x2172da['push'](_0x2172da['shift']());}};_0x66993a(++_0x376150);}(_0xf310,0x10c));var _0x0f31=function(_0x5e5417,_0x3a4d7f){_0x5e5417=_0x5e5417-0x0;var _0x1521dc=_0xf310[_0x5e5417];return _0x1521dc;};'use strict';var client=require(_0x0f31('0x0'));exports[_0x0f31('0x1')]=function(_0x18284a){return client[_0x0f31('0x2')](_0x0f31('0x3'),{'body':_0x18284a,'log':'createChatMessage'});};
\ No newline at end of file
index f57ef3e..59606ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a61=['name','timeout','strategy','User','online','chatPause','../client','Request'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1a61,0x1e6));var _0x11a6=function(_0x11fa3e,_0x1f8808){_0x11fa3e=_0x11fa3e-0x0;var _0x1c921c=_0x1a61[_0x11fa3e];return _0x1c921c;};'use strict';var client=require(_0x11a6('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x11a6('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x11a6('0x2'),_0x11a6('0x3'),_0x11a6('0x4')],'include':[{'model':_0x11a6('0x5'),'as':'Agents','attributes':['id','name',_0x11a6('0x6'),_0x11a6('0x7')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0x1666=['../client','getChatQueues','GetChatQueue','name','timeout','strategy','User','Agents','online'];(function(_0x147de0,_0x3de391){var _0x4883bd=function(_0x22d49c){while(--_0x22d49c){_0x147de0['push'](_0x147de0['shift']());}};_0x4883bd(++_0x3de391);}(_0x1666,0x75));var _0x6166=function(_0x4b6834,_0x2b6005){_0x4b6834=_0x4b6834-0x0;var _0x2dc28b=_0x1666[_0x4b6834];return _0x2dc28b;};'use strict';var client=require(_0x6166('0x0'));exports[_0x6166('0x1')]=function(){return function(){return client['Request'](_0x6166('0x2'),{'options':{'raw':![],'attributes':['id',_0x6166('0x3'),_0x6166('0x4'),_0x6166('0x5')],'include':[{'model':_0x6166('0x6'),'as':_0x6166('0x7'),'attributes':['id',_0x6166('0x3'),_0x6166('0x8'),'chatPause']}]},'log':_0x6166('0x1')});};};
\ No newline at end of file
index 63e260f..5b18d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa739=['DESC','create','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x4623ee,_0x32056c){var _0x814bc=function(_0x245bbb){while(--_0x245bbb){_0x4623ee['push'](_0x4623ee['shift']());}};_0x814bc(++_0x32056c);}(_0xa739,0x1e1));var _0x9a73=function(_0x20ebc8,_0x46dd4f){_0x20ebc8=_0x20ebc8-0x0;var _0x3ca0e8=_0xa739[_0x20ebc8];return _0x3ca0e8;};'use strict';var client=require('../client');exports[_0x9a73('0x0')]=function(_0x522d13){return client[_0x9a73('0x1')](_0x9a73('0x2'),{'body':_0x522d13,'log':'CreateChatQueueReport'});};exports[_0x9a73('0x3')]=function(_0x352cec,_0x40fb76){return client['Request'](_0x9a73('0x4'),{'body':_0x40fb76,'options':{'where':{'uniqueid':_0x352cec},'order':[['id',_0x9a73('0x5')]],'limit':0x1},'log':_0x9a73('0x4')});};
\ No newline at end of file
+var _0xd6d6=['DESC','../client','create','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x479213,_0x1dad6e){var _0x3e8715=function(_0x2d831f){while(--_0x2d831f){_0x479213['push'](_0x479213['shift']());}};_0x3e8715(++_0x1dad6e);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x4000e5,_0x4766f9){_0x4000e5=_0x4000e5-0x0;var _0x493757=_0xd6d6[_0x4000e5];return _0x493757;};'use strict';var client=require(_0x6d6d('0x0'));exports[_0x6d6d('0x1')]=function(_0x24bd2a){return client[_0x6d6d('0x2')]('CreateChatQueueReport',{'body':_0x24bd2a,'log':_0x6d6d('0x3')});};exports[_0x6d6d('0x4')]=function(_0x1b8610,_0x2a838a){return client[_0x6d6d('0x2')](_0x6d6d('0x5'),{'body':_0x2a838a,'options':{'where':{'uniqueid':_0x1b8610},'order':[['id',_0x6d6d('0x6')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index b6b4fd2..7c3bbf7 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(_0x1fd1bf,_0x555d58){var _0x3df781=function(_0x5eed07){while(--_0x5eed07){_0x1fd1bf['push'](_0x1fd1bf['shift']());}};_0x3df781(++_0x555d58);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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(_0x1e2563,_0x1bba2f){var _0x592a74=function(_0x5c9462){while(--_0x5c9462){_0x1e2563['push'](_0x1e2563['shift']());}};_0x592a74(++_0x1bba2f);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'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 2959089..55228fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d8=['CreateFaxMessage','create','Request'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x39d8,0xd9));var _0x839d=function(_0x460358,_0x45d45e){_0x460358=_0x460358-0x0;var _0x2e6a60=_0x39d8[_0x460358];return _0x2e6a60;};'use strict';var client=require('../client');exports[_0x839d('0x0')]=function(_0x5a7fdb){return client[_0x839d('0x1')](_0x839d('0x2'),{'body':_0x5a7fdb,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x3d91=['Request','CreateFaxMessage','../client','create'];(function(_0x18ad19,_0x5c35a1){var _0x34d0cd=function(_0x280881){while(--_0x280881){_0x18ad19['push'](_0x18ad19['shift']());}};_0x34d0cd(++_0x5c35a1);}(_0x3d91,0x1f2));var _0x13d9=function(_0x4f1ff3,_0x2736a1){_0x4f1ff3=_0x4f1ff3-0x0;var _0x1768a5=_0x3d91[_0x4f1ff3];return _0x1768a5;};'use strict';var client=require(_0x13d9('0x0'));exports[_0x13d9('0x1')]=function(_0x2880bc){return client[_0x13d9('0x2')](_0x13d9('0x3'),{'body':_0x2880bc,'log':'createFaxMessage'});};
\ No newline at end of file
index dea9abd..69bfe4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aac=['Request','GetFaxQueue','name','strategy','User','online','faxPause','getFaxQueues'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0aac,0xe7));var _0xc0aa=function(_0x5252a1,_0x32b917){_0x5252a1=_0x5252a1-0x0;var _0x39973f=_0x0aac[_0x5252a1];return _0x39973f;};'use strict';var client=require('../client');exports[_0xc0aa('0x0')]=function(){return function(){return client[_0xc0aa('0x1')](_0xc0aa('0x2'),{'options':{'raw':![],'attributes':['id',_0xc0aa('0x3'),'timeout',_0xc0aa('0x4')],'include':[{'model':_0xc0aa('0x5'),'as':'Agents','attributes':['id','name',_0xc0aa('0x6'),_0xc0aa('0x7')]}]},'log':_0xc0aa('0x0')});};};
\ No newline at end of file
+var _0xeeb9=['faxPause','../client','getFaxQueues','name','timeout','strategy','User','online'];(function(_0x1755a9,_0x1b0e63){var _0x307035=function(_0x487e09){while(--_0x487e09){_0x1755a9['push'](_0x1755a9['shift']());}};_0x307035(++_0x1b0e63);}(_0xeeb9,0x189));var _0x9eeb=function(_0x3a68dc,_0x3dd206){_0x3a68dc=_0x3a68dc-0x0;var _0x46e783=_0xeeb9[_0x3a68dc];return _0x46e783;};'use strict';var client=require(_0x9eeb('0x0'));exports[_0x9eeb('0x1')]=function(){return function(){return client['Request']('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x9eeb('0x2'),_0x9eeb('0x3'),_0x9eeb('0x4')],'include':[{'model':_0x9eeb('0x5'),'as':'Agents','attributes':['id',_0x9eeb('0x2'),_0x9eeb('0x6'),_0x9eeb('0x7')]}]},'log':_0x9eeb('0x1')});};};
\ No newline at end of file
index f43aa4b..adb7210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fdd=['Request','CreateFaxQueueReport','UpdateFaxQueueReport','create'];(function(_0x463e0e,_0x21e740){var _0x5bfb2e=function(_0x36090d){while(--_0x36090d){_0x463e0e['push'](_0x463e0e['shift']());}};_0x5bfb2e(++_0x21e740);}(_0x1fdd,0x1c3));var _0xd1fd=function(_0x11cef1,_0x1ad3ef){_0x11cef1=_0x11cef1-0x0;var _0x31e3e8=_0x1fdd[_0x11cef1];return _0x31e3e8;};'use strict';var client=require('../client');exports[_0xd1fd('0x0')]=function(_0x54de4b){return client[_0xd1fd('0x1')](_0xd1fd('0x2'),{'body':_0x54de4b,'log':_0xd1fd('0x2')});};exports['update']=function(_0x5c3f37,_0x312271){return client[_0xd1fd('0x1')](_0xd1fd('0x3'),{'body':_0x312271,'options':{'where':{'uniqueid':_0x5c3f37},'order':[['id','DESC']],'limit':0x1},'log':_0xd1fd('0x3')});};
\ No newline at end of file
+var _0xb905=['Request','UpdateFaxQueueReport','../client','CreateFaxQueueReport','update'];(function(_0x48d6a3,_0x37c848){var _0x38bfa0=function(_0x3fba2e){while(--_0x3fba2e){_0x48d6a3['push'](_0x48d6a3['shift']());}};_0x38bfa0(++_0x37c848);}(_0xb905,0xa7));var _0x5b90=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xb905[_0x279d37];return _0x530173;};'use strict';var client=require(_0x5b90('0x0'));exports['create']=function(_0x288e69){return client['Request'](_0x5b90('0x1'),{'body':_0x288e69,'log':_0x5b90('0x1')});};exports[_0x5b90('0x2')]=function(_0x2ffcd3,_0x7fe557){return client[_0x5b90('0x3')](_0x5b90('0x4'),{'body':_0x7fe557,'options':{'where':{'uniqueid':_0x2ffcd3},'order':[['id','DESC']],'limit':0x1},'log':_0x5b90('0x4')});};
\ No newline at end of file
index fbed95c..fd5fc27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c8d=['GetInterval','name','Intervals','../client','getIntervals','Request'];(function(_0x31e2b7,_0x1974f4){var _0x27614a=function(_0x576291){while(--_0x576291){_0x31e2b7['push'](_0x31e2b7['shift']());}};_0x27614a(++_0x1974f4);}(_0x6c8d,0xdb));var _0xd6c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6c8d[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xd6c8('0x0'));exports[_0xd6c8('0x1')]=function(){return function(){return client[_0xd6c8('0x2')](_0xd6c8('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xd6c8('0x4')],'include':[{'model':'Interval','as':_0xd6c8('0x5'),'attributes':['id',_0xd6c8('0x4'),'interval']}]},'log':_0xd6c8('0x1')});};};
\ No newline at end of file
+var _0xb4aa=['Request','GetInterval','name','Interval','Intervals','interval','getIntervals','../client'];(function(_0x418f7e,_0x4314c7){var _0x2c9d63=function(_0x1d95e3){while(--_0x1d95e3){_0x418f7e['push'](_0x418f7e['shift']());}};_0x2c9d63(++_0x4314c7);}(_0xb4aa,0xc7));var _0xab4a=function(_0x228477,_0x5aa640){_0x228477=_0x228477-0x0;var _0x23ce51=_0xb4aa[_0x228477];return _0x23ce51;};'use strict';var client=require(_0xab4a('0x0'));exports['getIntervals']=function(){return function(){return client[_0xab4a('0x1')](_0xab4a('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xab4a('0x3')],'include':[{'model':_0xab4a('0x4'),'as':_0xab4a('0x5'),'attributes':['id',_0xab4a('0x3'),_0xab4a('0x6')]}]},'log':_0xab4a('0x7')});};};
\ No newline at end of file
index f43e631..100fb19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['Request','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x5a0693,_0x5e80b8){var _0x5daa64=function(_0x36f24f){while(--_0x36f24f){_0x5a0693['push'](_0x5a0693['shift']());}};_0x5daa64(++_0x5e80b8);}(_0x6a55,0xdb));var _0x56a5=function(_0x1a4a06,_0x36a5c2){_0x1a4a06=_0x1a4a06-0x0;var _0x49ec08=_0x6a55[_0x1a4a06];return _0x49ec08;};'use strict';var client=require(_0x56a5('0x0'));exports['update']=function(_0x5d894b,_0x4ec858){return client[_0x56a5('0x1')]('UpdateMailInteraction',{'body':_0x4ec858,'options':{'where':{'id':_0x5d894b}},'log':'updateMailInteraction'});};exports[_0x56a5('0x2')]=function(_0x5e5a32,_0x3ff76a){return client['Request'](_0x56a5('0x3'),{'body':_0x3ff76a,'options':{'where':{'id':_0x5e5a32}},'log':_0x56a5('0x4')});};
\ No newline at end of file
+var _0x5464=['update','Request','updateMailInteraction','AddTagsToMailInteraction','../client'];(function(_0x4a2a9b,_0xd63f13){var _0x2d9ab0=function(_0x582d36){while(--_0x582d36){_0x4a2a9b['push'](_0x4a2a9b['shift']());}};_0x2d9ab0(++_0xd63f13);}(_0x5464,0x15d));var _0x4546=function(_0x3bccd3,_0x2b597d){_0x3bccd3=_0x3bccd3-0x0;var _0x4ea8b3=_0x5464[_0x3bccd3];return _0x4ea8b3;};'use strict';var client=require(_0x4546('0x0'));exports[_0x4546('0x1')]=function(_0x159e14,_0x4f33fd){return client[_0x4546('0x2')]('UpdateMailInteraction',{'body':_0x4f33fd,'options':{'where':{'id':_0x159e14}},'log':_0x4546('0x3')});};exports['addTags']=function(_0x320c4d,_0x396a1d){return client[_0x4546('0x2')](_0x4546('0x4'),{'body':_0x396a1d,'options':{'where':{'id':_0x320c4d}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index fbc4317..5f5b108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6455=['createMailMessage','create','Request','CreateMailMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6455,0x10d));var _0x5645=function(_0x1a11ff,_0x662a0){_0x1a11ff=_0x1a11ff-0x0;var _0x34aad5=_0x6455[_0x1a11ff];return _0x34aad5;};'use strict';var client=require('../client');exports[_0x5645('0x0')]=function(_0x1a62d1){return client[_0x5645('0x1')](_0x5645('0x2'),{'body':_0x1a62d1,'log':_0x5645('0x3')});};
\ No newline at end of file
+var _0x7e28=['CreateMailMessage','../client','Request'];(function(_0x58db63,_0x2e3e49){var _0x27e5b6=function(_0x21aff6){while(--_0x21aff6){_0x58db63['push'](_0x58db63['shift']());}};_0x27e5b6(++_0x2e3e49);}(_0x7e28,0x145));var _0x87e2=function(_0x2de18d,_0xbdef3c){_0x2de18d=_0x2de18d-0x0;var _0x3c4b65=_0x7e28[_0x2de18d];return _0x3c4b65;};'use strict';var client=require(_0x87e2('0x0'));exports['create']=function(_0xbf4c06){return client[_0x87e2('0x1')](_0x87e2('0x2'),{'body':_0xbf4c06,'log':'createMailMessage'});};
\ No newline at end of file
index f7fa02e..9a58041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab9a=['Agents','../client','getMailQueues','Request','GetMailQueue','timeout','strategy','User'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xab9a,0x1b9));var _0xaab9=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xab9a[_0x47b58b];return _0x46bebe;};'use strict';var client=require(_0xaab9('0x0'));exports[_0xaab9('0x1')]=function(){return function(){return client[_0xaab9('0x2')](_0xaab9('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xaab9('0x4'),_0xaab9('0x5')],'include':[{'model':_0xaab9('0x6'),'as':_0xaab9('0x7'),'attributes':['id','name','online','mailPause']}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0xcf60=['Request','name','timeout','strategy','Agents','online','mailPause','getMailQueues'];(function(_0x4ab55a,_0x20e801){var _0x3feea3=function(_0x594835){while(--_0x594835){_0x4ab55a['push'](_0x4ab55a['shift']());}};_0x3feea3(++_0x20e801);}(_0xcf60,0x1c0));var _0x0cf6=function(_0x83eb99,_0x362410){_0x83eb99=_0x83eb99-0x0;var _0x28246=_0xcf60[_0x83eb99];return _0x28246;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client[_0x0cf6('0x0')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x0cf6('0x1'),_0x0cf6('0x2'),_0x0cf6('0x3')],'include':[{'model':'User','as':_0x0cf6('0x4'),'attributes':['id',_0x0cf6('0x1'),_0x0cf6('0x5'),_0x0cf6('0x6')]}]},'log':_0x0cf6('0x7')});};};
\ No newline at end of file
index 1ef9155..b7594db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e29=['update','Request','UpdateMailQueueReport','DESC','../client','create','CreateMailQueueReport'];(function(_0x30d551,_0x42d4a5){var _0x4de62f=function(_0x15aa2d){while(--_0x15aa2d){_0x30d551['push'](_0x30d551['shift']());}};_0x4de62f(++_0x42d4a5);}(_0x5e29,0x97));var _0x95e2=function(_0x25a597,_0xa4ae6d){_0x25a597=_0x25a597-0x0;var _0x2a5eb4=_0x5e29[_0x25a597];return _0x2a5eb4;};'use strict';var client=require(_0x95e2('0x0'));exports[_0x95e2('0x1')]=function(_0x40febc){return client['Request']('CreateMailQueueReport',{'body':_0x40febc,'log':_0x95e2('0x2')});};exports[_0x95e2('0x3')]=function(_0x275064,_0x33ee8e){return client[_0x95e2('0x4')](_0x95e2('0x5'),{'body':_0x33ee8e,'options':{'where':{'uniqueid':_0x275064},'order':[['id',_0x95e2('0x6')]],'limit':0x1},'log':_0x95e2('0x5')});};
\ No newline at end of file
+var _0xf4a5=['CreateMailQueueReport','UpdateMailQueueReport','DESC','../client','create','Request'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xf4a5,0xb1));var _0x5f4a=function(_0x1743a9,_0x4fb330){_0x1743a9=_0x1743a9-0x0;var _0x1a4feb=_0xf4a5[_0x1743a9];return _0x1a4feb;};'use strict';var client=require(_0x5f4a('0x0'));exports[_0x5f4a('0x1')]=function(_0x1467c2){return client[_0x5f4a('0x2')](_0x5f4a('0x3'),{'body':_0x1467c2,'log':_0x5f4a('0x3')});};exports['update']=function(_0x17e06e,_0x3ed837){return client[_0x5f4a('0x2')](_0x5f4a('0x4'),{'body':_0x3ed837,'options':{'where':{'uniqueid':_0x17e06e},'order':[['id',_0x5f4a('0x5')]],'limit':0x1},'log':_0x5f4a('0x4')});};
\ No newline at end of file
index 70eb010..70592fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb156=['update','Request','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb156,0xb4));var _0x6b15=function(_0x1af0e5,_0x152990){_0x1af0e5=_0x1af0e5-0x0;var _0x3c444a=_0xb156[_0x1af0e5];return _0x3c444a;};'use strict';var client=require('../client');exports[_0x6b15('0x0')]=function(_0x53bf8c,_0x22d239){return client[_0x6b15('0x1')]('UpdateOpenchannelInteraction',{'body':_0x22d239,'options':{'where':{'id':_0x53bf8c}},'log':'updateOpenchannelInteraction'});};exports[_0x6b15('0x2')]=function(_0x23272a,_0x4f7e3d){return client['Request'](_0x6b15('0x3'),{'body':_0x4f7e3d,'options':{'where':{'id':_0x23272a}},'log':_0x6b15('0x4')});};
\ No newline at end of file
+var _0xa47c=['Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x2135fc,_0xd0f39e){var _0x5affe4=function(_0x322d8c){while(--_0x322d8c){_0x2135fc['push'](_0x2135fc['shift']());}};_0x5affe4(++_0xd0f39e);}(_0xa47c,0x10e));var _0xca47=function(_0x845672,_0x2a2b2a){_0x845672=_0x845672-0x0;var _0x24f4b4=_0xa47c[_0x845672];return _0x24f4b4;};'use strict';var client=require(_0xca47('0x0'));exports[_0xca47('0x1')]=function(_0x5a0d9d,_0x10175e){return client[_0xca47('0x2')](_0xca47('0x3'),{'body':_0x10175e,'options':{'where':{'id':_0x5a0d9d}},'log':_0xca47('0x4')});};exports[_0xca47('0x5')]=function(_0xf7fc3e,_0x277234){return client['Request'](_0xca47('0x6'),{'body':_0x277234,'options':{'where':{'id':_0xf7fc3e}},'log':_0xca47('0x7')});};
\ No newline at end of file
index 45d5669..8b87bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f1=['Request','create'];(function(_0x18b344,_0x271f68){var _0x5ef6bb=function(_0x3345b3){while(--_0x3345b3){_0x18b344['push'](_0x18b344['shift']());}};_0x5ef6bb(++_0x271f68);}(_0x28f1,0xa7));var _0x128f=function(_0xffa163,_0x12d38a){_0xffa163=_0xffa163-0x0;var _0x164aff=_0x28f1[_0xffa163];return _0x164aff;};'use strict';var client=require('../client');exports[_0x128f('0x0')]=function(_0x2a7be3){return client[_0x128f('0x1')]('CreateOpenchannelMessage',{'body':_0x2a7be3,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x64d2=['createOpenchannelMessage','create','Request','CreateOpenchannelMessage'];(function(_0x19e7c6,_0x2e7fde){var _0x209b10=function(_0xaf5122){while(--_0xaf5122){_0x19e7c6['push'](_0x19e7c6['shift']());}};_0x209b10(++_0x2e7fde);}(_0x64d2,0x105));var _0x264d=function(_0x122cc1,_0x5c956e){_0x122cc1=_0x122cc1-0x0;var _0x1e33af=_0x64d2[_0x122cc1];return _0x1e33af;};'use strict';var client=require('../client');exports[_0x264d('0x0')]=function(_0x734e0a){return client[_0x264d('0x1')](_0x264d('0x2'),{'body':_0x734e0a,'log':_0x264d('0x3')});};
\ No newline at end of file
index 6bd814c..9c4d603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ed=['Agents','online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout'];(function(_0x8b7733,_0x31f5bb){var _0x1ed1a7=function(_0x3e200f){while(--_0x3e200f){_0x8b7733['push'](_0x8b7733['shift']());}};_0x1ed1a7(++_0x31f5bb);}(_0xb3ed,0x173));var _0xdb3e=function(_0x41411a,_0x5d8c6b){_0x41411a=_0x41411a-0x0;var _0x23240e=_0xb3ed[_0x41411a];return _0x23240e;};'use strict';var client=require('../client');exports[_0xdb3e('0x0')]=function(){return function(){return client[_0xdb3e('0x1')](_0xdb3e('0x2'),{'options':{'raw':![],'attributes':['id',_0xdb3e('0x3'),_0xdb3e('0x4'),'strategy'],'include':[{'model':'User','as':_0xdb3e('0x5'),'attributes':['id',_0xdb3e('0x3'),_0xdb3e('0x6'),_0xdb3e('0x7')]}]},'log':_0xdb3e('0x0')});};};
\ No newline at end of file
+var _0xe5ae=['../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','strategy','User','Agents','online'];(function(_0x43776a,_0x4eb74c){var _0x18eb8f=function(_0x319afb){while(--_0x319afb){_0x43776a['push'](_0x43776a['shift']());}};_0x18eb8f(++_0x4eb74c);}(_0xe5ae,0x120));var _0xee5a=function(_0x5c4f6b,_0x2cdfce){_0x5c4f6b=_0x5c4f6b-0x0;var _0x104c4e=_0xe5ae[_0x5c4f6b];return _0x104c4e;};'use strict';var client=require(_0xee5a('0x0'));exports[_0xee5a('0x1')]=function(){return function(){return client[_0xee5a('0x2')](_0xee5a('0x3'),{'options':{'raw':![],'attributes':['id',_0xee5a('0x4'),'timeout',_0xee5a('0x5')],'include':[{'model':_0xee5a('0x6'),'as':_0xee5a('0x7'),'attributes':['id','name',_0xee5a('0x8'),'openchannelPause']}]},'log':_0xee5a('0x1')});};};
\ No newline at end of file
index ca62460..1c2df50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3868=['CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport','create','Request'];(function(_0x5b3a4b,_0x54bea2){var _0x35828c=function(_0x5d76cc){while(--_0x5d76cc){_0x5b3a4b['push'](_0x5b3a4b['shift']());}};_0x35828c(++_0x54bea2);}(_0x3868,0x118));var _0x8386=function(_0xcf71d6,_0x22290f){_0xcf71d6=_0xcf71d6-0x0;var _0x1e4296=_0x3868[_0xcf71d6];return _0x1e4296;};'use strict';var client=require('../client');exports[_0x8386('0x0')]=function(_0x16046f){return client[_0x8386('0x1')](_0x8386('0x2'),{'body':_0x16046f,'log':_0x8386('0x2')});};exports[_0x8386('0x3')]=function(_0x34bda9,_0x59e6a2){return client[_0x8386('0x1')]('UpdateOpenchannelQueueReport',{'body':_0x59e6a2,'options':{'where':{'uniqueid':_0x34bda9},'order':[['id',_0x8386('0x4')]],'limit':0x1},'log':_0x8386('0x5')});};
\ No newline at end of file
+var _0x18af=['CreateOpenchannelQueueReport','DESC','UpdateOpenchannelQueueReport','../client','Request'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x18af,0x19d));var _0xf18a=function(_0x48a40e,_0x116cb6){_0x48a40e=_0x48a40e-0x0;var _0x16127b=_0x18af[_0x48a40e];return _0x16127b;};'use strict';var client=require(_0xf18a('0x0'));exports['create']=function(_0x1d327f){return client[_0xf18a('0x1')](_0xf18a('0x2'),{'body':_0x1d327f,'log':'CreateOpenchannelQueueReport'});};exports['update']=function(_0xb423c2,_0x3a684e){return client[_0xf18a('0x1')]('UpdateOpenchannelQueueReport',{'body':_0x3a684e,'options':{'where':{'uniqueid':_0xb423c2},'order':[['id',_0xf18a('0x3')]],'limit':0x1},'log':_0xf18a('0x4')});};
\ No newline at end of file
index e12bf44..8486c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac2=['addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x1ac2,0xfd));var _0x21ac=function(_0x446919,_0x32b3f4){_0x446919=_0x446919-0x0;var _0x27c2fc=_0x1ac2[_0x446919];return _0x27c2fc;};'use strict';var client=require(_0x21ac('0x0'));exports[_0x21ac('0x1')]=function(_0xb80f69,_0x20128d){return client[_0x21ac('0x2')](_0x21ac('0x3'),{'body':_0x20128d,'options':{'where':{'id':_0xb80f69}},'log':_0x21ac('0x4')});};exports[_0x21ac('0x5')]=function(_0x3e863c,_0x3e9570){return client[_0x21ac('0x2')]('AddTagsToSmsInteraction',{'body':_0x3e9570,'options':{'where':{'id':_0x3e863c}},'log':_0x21ac('0x6')});};
\ No newline at end of file
+var _0x68f5=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x68f5,0x11a));var _0x568f=function(_0x3263f0,_0x2d5d22){_0x3263f0=_0x3263f0-0x0;var _0x367b6f=_0x68f5[_0x3263f0];return _0x367b6f;};'use strict';var client=require(_0x568f('0x0'));exports[_0x568f('0x1')]=function(_0x76e9b6,_0x4f980b){return client[_0x568f('0x2')](_0x568f('0x3'),{'body':_0x4f980b,'options':{'where':{'id':_0x76e9b6}},'log':_0x568f('0x4')});};exports[_0x568f('0x5')]=function(_0x425217,_0x5de1c0){return client[_0x568f('0x2')](_0x568f('0x6'),{'body':_0x5de1c0,'options':{'where':{'id':_0x425217}},'log':_0x568f('0x7')});};
\ No newline at end of file
index abce191..dd56f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x177f=['Request','CreateSmsMessage','createSmsMessage','../client','create'];(function(_0x4c834c,_0x117415){var _0x42af9a=function(_0xc6127b){while(--_0xc6127b){_0x4c834c['push'](_0x4c834c['shift']());}};_0x42af9a(++_0x117415);}(_0x177f,0x8a));var _0xf177=function(_0x4a6c72,_0x455875){_0x4a6c72=_0x4a6c72-0x0;var _0x55bb1c=_0x177f[_0x4a6c72];return _0x55bb1c;};'use strict';var client=require(_0xf177('0x0'));exports[_0xf177('0x1')]=function(_0x4958ac){return client[_0xf177('0x2')](_0xf177('0x3'),{'body':_0x4958ac,'log':_0xf177('0x4')});};
\ No newline at end of file
+var _0xc109=['createSmsMessage','../client','create','Request'];(function(_0x578b19,_0x1a00ca){var _0x4b618d=function(_0x4a839a){while(--_0x4a839a){_0x578b19['push'](_0x578b19['shift']());}};_0x4b618d(++_0x1a00ca);}(_0xc109,0x135));var _0x9c10=function(_0x3559c4,_0x47580b){_0x3559c4=_0x3559c4-0x0;var _0x124053=_0xc109[_0x3559c4];return _0x124053;};'use strict';var client=require(_0x9c10('0x0'));exports[_0x9c10('0x1')]=function(_0x1b4dff){return client[_0x9c10('0x2')]('CreateSmsMessage',{'body':_0x1b4dff,'log':_0x9c10('0x3')});};
\ No newline at end of file
index d5948d2..ed24196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x239b03,_0xa12707){var _0x49a3da=function(_0x543d6a){while(--_0x543d6a){_0x239b03['push'](_0x239b03['shift']());}};_0x49a3da(++_0xa12707);}(_0xb7e7,0x121));var _0x7b7e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xb7e7[_0x297fd3];return _0x2af381;};'use strict';var client=require(_0x7b7e('0x0'));exports['getSmsQueues']=function(){return function(){return client[_0x7b7e('0x1')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x7b7e('0x2'),'timeout',_0x7b7e('0x3')],'include':[{'model':'User','as':_0x7b7e('0x4'),'attributes':['id',_0x7b7e('0x2'),_0x7b7e('0x5'),'smsPause']}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x10a65a,_0x36b91d){var _0x225888=function(_0x73bf99){while(--_0x73bf99){_0x10a65a['push'](_0x10a65a['shift']());}};_0x225888(++_0x36b91d);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xb7e7[_0x1b5aea];return _0x15cfc6;};'use strict';var client=require(_0x7b7e('0x0'));exports['getSmsQueues']=function(){return function(){return client[_0x7b7e('0x1')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x7b7e('0x2'),'timeout',_0x7b7e('0x3')],'include':[{'model':'User','as':_0x7b7e('0x4'),'attributes':['id',_0x7b7e('0x2'),_0x7b7e('0x5'),'smsPause']}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 4ea7d16..af6cf83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x1d0c09,_0xb95199){var _0x4b3061=function(_0x507cdf){while(--_0x507cdf){_0x1d0c09['push'](_0x1d0c09['shift']());}};_0x4b3061(++_0xb95199);}(_0x3e74,0x175));var _0x43e7=function(_0x24eb80,_0xf029f9){_0x24eb80=_0x24eb80-0x0;var _0x35f122=_0x3e74[_0x24eb80];return _0x35f122;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x1265ed,_0x4b85e8){var _0x5ac459=function(_0xf0c114){while(--_0xf0c114){_0x1265ed['push'](_0x1265ed['shift']());}};_0x5ac459(++_0x4b85e8);}(_0xedd9,0xfc));var _0x9edd=function(_0x755d2f,_0x5879b7){_0x755d2f=_0x755d2f-0x0;var _0x4f6cd3=_0xedd9[_0x755d2f];return _0x4f6cd3;};'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 8f035c9..38ba947 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(_0x33608e,_0xec8e47){var _0x78185=function(_0x54a7fd){while(--_0x54a7fd){_0x33608e['push'](_0x33608e['shift']());}};_0x78185(++_0xec8e47);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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(_0x19c0f6,_0x160fb9){var _0xf9de75=function(_0x4a49e0){while(--_0x4a49e0){_0x19c0f6['push'](_0x19c0f6['shift']());}};_0xf9de75(++_0x160fb9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 1618a99..62dccd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa751=['addTagsToWhatsappInteraction','../client','update','UpdateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x185063,_0x3f0bb7){var _0x16d9d3=function(_0x1b3fe3){while(--_0x1b3fe3){_0x185063['push'](_0x185063['shift']());}};_0x16d9d3(++_0x3f0bb7);}(_0xa751,0x175));var _0x1a75=function(_0x279661,_0xf5cce2){_0x279661=_0x279661-0x0;var _0x2fcbe2=_0xa751[_0x279661];return _0x2fcbe2;};'use strict';var client=require(_0x1a75('0x0'));exports[_0x1a75('0x1')]=function(_0x31af97,_0x636b0){return client['Request'](_0x1a75('0x2'),{'body':_0x636b0,'options':{'where':{'id':_0x31af97}},'log':'updateWhatsappInteraction'});};exports[_0x1a75('0x3')]=function(_0x95fa7,_0x2ea393){return client['Request'](_0x1a75('0x4'),{'body':_0x2ea393,'options':{'where':{'id':_0x95fa7}},'log':_0x1a75('0x5')});};
\ No newline at end of file
+var _0x8921=['../client','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction'];(function(_0x4687ab,_0xd558c4){var _0x52dbbf=function(_0x39bbf0){while(--_0x39bbf0){_0x4687ab['push'](_0x4687ab['shift']());}};_0x52dbbf(++_0xd558c4);}(_0x8921,0x9a));var _0x1892=function(_0x399a7f,_0x4593fa){_0x399a7f=_0x399a7f-0x0;var _0x50e7f8=_0x8921[_0x399a7f];return _0x50e7f8;};'use strict';var client=require(_0x1892('0x0'));exports['update']=function(_0x2fa8a8,_0x37e629){return client[_0x1892('0x1')](_0x1892('0x2'),{'body':_0x37e629,'options':{'where':{'id':_0x2fa8a8}},'log':_0x1892('0x3')});};exports[_0x1892('0x4')]=function(_0x28a89b,_0x15aa1b){return client[_0x1892('0x1')](_0x1892('0x5'),{'body':_0x15aa1b,'options':{'where':{'id':_0x28a89b}},'log':_0x1892('0x6')});};
\ No newline at end of file
index 2527e38..796655f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf417=['createWhatsappMessage','../client','Request','CreateWhatsappMessage'];(function(_0x3f392c,_0x309dc6){var _0x34858b=function(_0x22678d){while(--_0x22678d){_0x3f392c['push'](_0x3f392c['shift']());}};_0x34858b(++_0x309dc6);}(_0xf417,0x7d));var _0x7f41=function(_0x2ab365,_0xa3812e){_0x2ab365=_0x2ab365-0x0;var _0x49fef3=_0xf417[_0x2ab365];return _0x49fef3;};'use strict';var client=require(_0x7f41('0x0'));exports['create']=function(_0x43ea25){return client[_0x7f41('0x1')](_0x7f41('0x2'),{'body':_0x43ea25,'log':_0x7f41('0x3')});};
\ No newline at end of file
+var _0xc8f0=['createWhatsappMessage','../client','create','Request'];(function(_0x4a3954,_0x46542d){var _0x137e2c=function(_0x327cc3){while(--_0x327cc3){_0x4a3954['push'](_0x4a3954['shift']());}};_0x137e2c(++_0x46542d);}(_0xc8f0,0x12d));var _0x0c8f=function(_0x5e7baf,_0x11000c){_0x5e7baf=_0x5e7baf-0x0;var _0x9b1443=_0xc8f0[_0x5e7baf];return _0x9b1443;};'use strict';var client=require(_0x0c8f('0x0'));exports[_0x0c8f('0x1')]=function(_0x5a4905){return client[_0x0c8f('0x2')]('CreateWhatsappMessage',{'body':_0x5a4905,'log':_0x0c8f('0x3')});};
\ No newline at end of file
index b7ec8a5..59da56b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefcd=['online','getWhatsappQueues','../client','Request','name','timeout','strategy','Agents'];(function(_0x2351a9,_0x1a2822){var _0x22deb4=function(_0x5a4fda){while(--_0x5a4fda){_0x2351a9['push'](_0x2351a9['shift']());}};_0x22deb4(++_0x1a2822);}(_0xefcd,0x9a));var _0xdefc=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xefcd[_0x199572];return _0x13cfa3;};'use strict';var client=require(_0xdefc('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xdefc('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xdefc('0x2'),_0xdefc('0x3'),_0xdefc('0x4')],'include':[{'model':'User','as':_0xdefc('0x5'),'attributes':['id',_0xdefc('0x2'),_0xdefc('0x6'),'whatsappPause']}]},'log':_0xdefc('0x7')});};};
\ No newline at end of file
+var _0xb646=['User','Agents','name','online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','strategy'];(function(_0x59bfa0,_0xab9fc4){var _0x234bac=function(_0x33ed5c){while(--_0x33ed5c){_0x59bfa0['push'](_0x59bfa0['shift']());}};_0x234bac(++_0xab9fc4);}(_0xb646,0x15a));var _0x6b64=function(_0x163ea6,_0x572369){_0x163ea6=_0x163ea6-0x0;var _0x46342e=_0xb646[_0x163ea6];return _0x46342e;};'use strict';var client=require(_0x6b64('0x0'));exports[_0x6b64('0x1')]=function(){return function(){return client[_0x6b64('0x2')](_0x6b64('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x6b64('0x4'),_0x6b64('0x5')],'include':[{'model':_0x6b64('0x6'),'as':_0x6b64('0x7'),'attributes':['id',_0x6b64('0x8'),_0x6b64('0x9'),_0x6b64('0xa')]}]},'log':_0x6b64('0x1')});};};
\ No newline at end of file
index 69b009e..7c69cf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee51=['DESC','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport'];(function(_0x513d9c,_0x5b5fe2){var _0x492c28=function(_0x7d4b83){while(--_0x7d4b83){_0x513d9c['push'](_0x513d9c['shift']());}};_0x492c28(++_0x5b5fe2);}(_0xee51,0x18d));var _0x1ee5=function(_0x25a055,_0x173511){_0x25a055=_0x25a055-0x0;var _0x2295f9=_0xee51[_0x25a055];return _0x2295f9;};'use strict';var client=require('../client');exports[_0x1ee5('0x0')]=function(_0x2d423b){return client[_0x1ee5('0x1')](_0x1ee5('0x2'),{'body':_0x2d423b,'log':'CreateWhatsappQueueReport'});};exports[_0x1ee5('0x3')]=function(_0x4dbafd,_0x18246d){return client[_0x1ee5('0x1')](_0x1ee5('0x4'),{'body':_0x18246d,'options':{'where':{'uniqueid':_0x4dbafd},'order':[['id',_0x1ee5('0x5')]],'limit':0x1},'log':_0x1ee5('0x4')});};
\ No newline at end of file
+var _0x8058=['Request','UpdateWhatsappQueueReport','DESC','../client','CreateWhatsappQueueReport','update'];(function(_0x4a09bf,_0x1db856){var _0x46b228=function(_0xd7f6cc){while(--_0xd7f6cc){_0x4a09bf['push'](_0x4a09bf['shift']());}};_0x46b228(++_0x1db856);}(_0x8058,0x1ef));var _0x8805=function(_0xcaf223,_0xd39f07){_0xcaf223=_0xcaf223-0x0;var _0x17e00d=_0x8058[_0xcaf223];return _0x17e00d;};'use strict';var client=require(_0x8805('0x0'));exports['create']=function(_0xacb17c){return client['Request'](_0x8805('0x1'),{'body':_0xacb17c,'log':_0x8805('0x1')});};exports[_0x8805('0x2')]=function(_0x4b8069,_0x278bcb){return client[_0x8805('0x3')](_0x8805('0x4'),{'body':_0x278bcb,'options':{'where':{'uniqueid':_0x4b8069},'order':[['id',_0x8805('0x5')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 66c9745..f886924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010d=['lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','message','join','stop','agents','timeout','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','stack','validate'];(function(_0x1d94d1,_0x347bb8){var _0x23c397=function(_0x489441){while(--_0x489441){_0x1d94d1['push'](_0x1d94d1['shift']());}};_0x23c397(++_0x347bb8);}(_0x010d,0xed));var _0xd010=function(_0x1d8b9c,_0xc2cdd3){_0x1d8b9c=_0x1d8b9c-0x0;var _0x459bf4=_0x010d[_0x1d8b9c];return _0x459bf4;};'use strict';var schema=require(_0xd010('0x0'));var _=require(_0xd010('0x1'));var util=require(_0xd010('0x2'));var seqqueue=require(_0xd010('0x3'));var logger=require(_0xd010('0x4'))(_0xd010('0x5'));var strategy=require(_0xd010('0x6'));var queue=schema({'name':{'type':_0xd010('0x7'),'required':!![],'message':_0xd010('0x8')},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x5bed8b,_0x42c82b,_0x35f8ca){return logger[_0xd010('0x9')](util[_0xd010('0xa')](_0xd010('0xb'),_0x5bed8b,_0x42c82b[_0xd010('0xc')],_0x35f8ca));}function handleFindAgent(_0x140df7){return function(_0x2810f4){return _0x2810f4[_0xd010('0xc')][_0xd010('0xd')]()===_0x140df7[_0xd010('0xd')]();};}exports[_0xd010('0xe')]=function(_0x72f588,_0x4086f4,_0x5d3514,_0x15945d){return function(_0x4dd16b){try{var _0x50d899={'name':_0x4086f4[0x0],'timeout':_0x4086f4[0x1]};var _0x1179d9=queue[_0xd010('0x0')](_0x50d899,{'typecast':!![]});if(_0x1179d9['length']){logger[_0xd010('0xf')](_0xd010('0x10'),_0x72f588,_['map'](_0x1179d9,_0xd010('0x11'))[_0xd010('0x12')](',\x20'));_0x4dd16b[_0xd010('0x13')]();}else{var _0x266abe=_['find'](_0x5d3514[_0xd010('0x14')],handleFindAgent(_0x50d899['name']));if(_0x266abe){var _0x358ba8=(_0x50d899[_0xd010('0x15')]||0xa)*0x3e8;var _0x3d8244,_0x261fcb;var _0x25adf5=seqqueue['createQueue'](_0x358ba8);_0x25adf5['id']=_0x72f588;_0x25adf5['atimeout']=_0x358ba8;_0x25adf5[_0xd010('0x16')]=_0x15945d[_0xd010('0x16')];writeLog(_0x72f588,_0x266abe,util[_0xd010('0xa')]('START:%s',_0x358ba8));_0x5d3514[_0xd010('0x17')][_0x72f588]['on'](_0xd010('0x18'),function(){logger[_0xd010('0x9')](_0xd010('0x19'),_0x72f588);clearTimeout(_0x261fcb);_0x261fcb=undefined;_0x25adf5[_0xd010('0x1a')]();if(_0x5d3514[_0xd010('0x17')][_0x72f588]){delete _0x5d3514[_0xd010('0x17')][_0x72f588];}_0x4dd16b[_0xd010('0x13')]();});_0x5d3514['rules'][_0x72f588]['on'](_0xd010('0x1b'),function(){if(_0x5d3514[_0xd010('0x17')][_0x72f588]){delete _0x5d3514[_0xd010('0x17')][_0x72f588];}});_0x261fcb=setTimeout(function(){logger['info'](_0xd010('0x1c'),_0x72f588);clearTimeout(_0x261fcb);_0x25adf5[_0xd010('0x1a')]();_0x4dd16b[_0xd010('0x1d')]();},_0x358ba8);strategy[_0xd010('0x1e')](_0x25adf5,_0x266abe,_0x5d3514,_0x15945d);}else{logger[_0xd010('0xf')](_0xd010('0x1f'),_0x72f588,_0x50d899[_0xd010('0xc')]);_0x4dd16b[_0xd010('0x13')]();}}}catch(_0x3962a7){console[_0xd010('0x20')](_0x3962a7);logger['error']('[%s][QUEUE]\x20%s',_0x72f588,_0x3962a7[_0xd010('0x21')]);_0x4dd16b[_0xd010('0x13')]();}};};
\ No newline at end of file
+var _0x77da=['[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','format','name','toLowerCase','length','error','[%s][AGENT]\x20%s','message','join','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','info','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','[%s][AGENT]\x20agent\x20not\x20found\x20%s'];(function(_0x51a6d0,_0x55c23a){var _0x4dab18=function(_0x2e2487){while(--_0x2e2487){_0x51a6d0['push'](_0x51a6d0['shift']());}};_0x4dab18(++_0x55c23a);}(_0x77da,0x146));var _0xa77d=function(_0x1c17e4,_0x5bfea7){_0x1c17e4=_0x1c17e4-0x0;var _0x436d1a=_0x77da[_0x1c17e4];return _0x436d1a;};'use strict';var schema=require(_0xa77d('0x0'));var _=require(_0xa77d('0x1'));var util=require(_0xa77d('0x2'));var seqqueue=require(_0xa77d('0x3'));var logger=require('../../../../config/logger')(_0xa77d('0x4'));var strategy=require(_0xa77d('0x5'));var queue=schema({'name':{'type':_0xa77d('0x6'),'required':!![],'message':_0xa77d('0x7')},'timeout':{'type':'number','message':_0xa77d('0x8')}});function writeLog(_0x489783,_0x5313dd,_0x4ece9b){return logger['info'](util[_0xa77d('0x9')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x489783,_0x5313dd[_0xa77d('0xa')],_0x4ece9b));}function handleFindAgent(_0x50c833){return function(_0x38a34a){return _0x38a34a[_0xa77d('0xa')]['toLowerCase']()===_0x50c833[_0xa77d('0xb')]();};}exports['consequence']=function(_0x4eba88,_0x5981d1,_0x4e7122,_0x126edf){return function(_0x5cae39){try{var _0x5892d8={'name':_0x5981d1[0x0],'timeout':_0x5981d1[0x1]};var _0x8ebd48=queue[_0xa77d('0x0')](_0x5892d8,{'typecast':!![]});if(_0x8ebd48[_0xa77d('0xc')]){logger[_0xa77d('0xd')](_0xa77d('0xe'),_0x4eba88,_['map'](_0x8ebd48,_0xa77d('0xf'))[_0xa77d('0x10')](',\x20'));_0x5cae39[_0xa77d('0x11')]();}else{var _0xdca1f1=_[_0xa77d('0x12')](_0x4e7122[_0xa77d('0x13')],handleFindAgent(_0x5892d8[_0xa77d('0xa')]));if(_0xdca1f1){var _0x444d59=(_0x5892d8[_0xa77d('0x14')]||0xa)*0x3e8;var _0x597ab7,_0x15223c;var _0x1c7f69=seqqueue[_0xa77d('0x15')](_0x444d59);_0x1c7f69['id']=_0x4eba88;_0x1c7f69[_0xa77d('0x16')]=_0x444d59;_0x1c7f69[_0xa77d('0x17')]=_0x126edf[_0xa77d('0x17')];writeLog(_0x4eba88,_0xdca1f1,util[_0xa77d('0x9')](_0xa77d('0x18'),_0x444d59));_0x4e7122[_0xa77d('0x19')][_0x4eba88]['on'](_0xa77d('0x1a'),function(){logger[_0xa77d('0x1b')](_0xa77d('0x1c'),_0x4eba88);clearTimeout(_0x15223c);_0x15223c=undefined;_0x1c7f69[_0xa77d('0x1d')]();if(_0x4e7122[_0xa77d('0x19')][_0x4eba88]){delete _0x4e7122[_0xa77d('0x19')][_0x4eba88];}_0x5cae39[_0xa77d('0x11')]();});_0x4e7122[_0xa77d('0x19')][_0x4eba88]['on'](_0xa77d('0x1e'),function(){if(_0x4e7122['rules'][_0x4eba88]){delete _0x4e7122['rules'][_0x4eba88];}});_0x15223c=setTimeout(function(){logger[_0xa77d('0x1b')](_0xa77d('0x1f'),_0x4eba88);clearTimeout(_0x15223c);_0x1c7f69[_0xa77d('0x1d')]();_0x5cae39[_0xa77d('0x20')]();},_0x444d59);strategy['agent'](_0x1c7f69,_0xdca1f1,_0x4e7122,_0x126edf);}else{logger[_0xa77d('0xd')](_0xa77d('0x21'),_0x4eba88,_0x5892d8[_0xa77d('0xa')]);_0x5cae39[_0xa77d('0x11')]();}}}catch(_0x10d0ae){console['log'](_0x10d0ae);logger['error'](_0xa77d('0x22'),_0x4eba88,_0x10d0ae[_0xa77d('0x23')]);_0x5cae39[_0xa77d('0x11')]();}};};
\ No newline at end of file
index fb5cc3e..da8aad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9c6=['finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','$LATEST','message','toString','postText','providerResponse','dialogState','error','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','Message','create','then','body','catch','stringify'];(function(_0x4ee1ca,_0xcab053){var _0x595cd2=function(_0x5549ba){while(--_0x5549ba){_0x4ee1ca['push'](_0x4ee1ca['shift']());}};_0x595cd2(++_0xcab053);}(_0xb9c6,0xfb));var _0x6b9c=function(_0x52f632,_0x4f951){_0x52f632=_0x52f632-0x0;var _0x47fecd=_0xb9c6[_0x52f632];return _0x47fecd;};'use strict';var _=require('lodash');var moment=require('moment');var AWS=require(_0x6b9c('0x0'));var utils=require('./utils');var logger=require(_0x6b9c('0x1'))(_0x6b9c('0x2'));var rpc={'chatMessage':require(_0x6b9c('0x3')),'openchannelMessage':require(_0x6b9c('0x4')),'mailMessage':require(_0x6b9c('0x5')),'smsMessage':require(_0x6b9c('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x6b9c('0x7'))};exports[_0x6b9c('0x8')]=function(_0x2f3f1c,_0x13c438){return function(_0x15d14c){try{if(!_[_0x6b9c('0x9')](this[_0x6b9c('0xa')][_0x6b9c('0xb')])){logger[_0x6b9c('0xc')](_0x6b9c('0xd'),_0x2f3f1c,_0x6b9c('0xe'));return _0x15d14c[_0x6b9c('0xf')]();}var _0x52b30d={'ContactId':this['contact']['id'],'sentAt':moment()[_0x6b9c('0x10')](_0x6b9c('0x11')),'direction':_0x6b9c('0x12')};if(this[_0x6b9c('0x13')]===_0x6b9c('0x14')||this['channel']===_0x6b9c('0x15')){_0x52b30d[_0x6b9c('0x16')]=this[_0x6b9c('0xa')]['phone'];}var _0x2924f2=this[_0x6b9c('0x13')];if(_0x2924f2==='chat'){_0x52b30d[_0x6b9c('0x17')]=this[_0x6b9c('0x18')]['id'];}else{_0x52b30d[_[_0x6b9c('0x19')](_0x2924f2)+_0x6b9c('0x1a')]=this['account']['id'];}_0x52b30d[_[_0x6b9c('0x19')](_0x2924f2)+_0x6b9c('0x1b')]=this[_0x6b9c('0xa')]['id'];if(this['interaction'][_0x6b9c('0x1c')]){var _0x21f27d=_0x13c438[0x4];if(!_[_0x6b9c('0x1d')](_0x21f27d)){_0x52b30d['body']=utils[_0x6b9c('0x1e')](_0x21f27d,this);return rpc[_0x2924f2+_0x6b9c('0x1f')][_0x6b9c('0x20')](_0x52b30d)[_0x6b9c('0x21')](function(_0x4a8b3c){logger[_0x6b9c('0xc')]('[%s][AMAZONLEX]\x20%s',_0x2f3f1c,_0x52b30d[_0x6b9c('0x22')]);})[_0x6b9c('0x23')](function(_0xf660eb){logger['error'](_0x6b9c('0xd'),_0x2f3f1c,JSON[_0x6b9c('0x24')](_0xf660eb));})[_0x6b9c('0x25')](function(){logger[_0x6b9c('0xc')](_0x6b9c('0x26'),_0x2f3f1c);_0x15d14c[_0x6b9c('0x27')]();});}else{logger[_0x6b9c('0xc')](_0x6b9c('0x28'),_0x2f3f1c);_0x15d14c['stop']();}}else{var _0x13e092=this;var _0x261e54=new AWS['LexRuntime']({'accessKeyId':_0x13c438[0x0],'secretAccessKey':_0x13c438[0x1],'region':_0x13c438[0x2]});var _0x13e062={'botAlias':_0x6b9c('0x29'),'botName':_0x13c438[0x3],'inputText':this[_0x6b9c('0x2a')][_0x6b9c('0x22')],'userId':this[_0x6b9c('0x13')]+':'+this[_0x6b9c('0xa')]['id'][_0x6b9c('0x2b')]()};_0x261e54[_0x6b9c('0x2c')](_0x13e062,function(_0x2473b9,_0x56f4a1){if(_0x2473b9){logger['error'](_0x6b9c('0xd'),_0x2f3f1c,_0x2473b9[_0x6b9c('0x2a')]);_0x15d14c[_0x6b9c('0xf')]();}else if(_0x56f4a1&&_0x56f4a1[_0x6b9c('0x2a')]){_0x13e092['body']['amazonlex']=_0x56f4a1;_0x52b30d['body']=_0x56f4a1[_0x6b9c('0x2a')];_0x52b30d['providerName']='amazonlex';_0x52b30d[_0x6b9c('0x2d')]=JSON[_0x6b9c('0x24')](_0x56f4a1);return rpc[_0x2924f2+'Message'][_0x6b9c('0x20')](_0x52b30d)[_0x6b9c('0x21')](function(_0x4147c1){logger[_0x6b9c('0xc')]('[%s][AMAZONLEX]\x20%s',_0x2f3f1c,_0x52b30d['body']);if(_0x56f4a1[_0x6b9c('0x2e')]=='Failed'){_0x15d14c[_0x6b9c('0xf')]();}else{_0x15d14c[_0x6b9c('0x27')]();}})[_0x6b9c('0x23')](function(_0xaf9705){logger[_0x6b9c('0x2f')](_0x6b9c('0xd'),_0x2f3f1c,JSON[_0x6b9c('0x24')](_0xaf9705));_0x15d14c[_0x6b9c('0xf')]();});}else{_0x15d14c[_0x6b9c('0xf')]();}});}}catch(_0x37143e){logger[_0x6b9c('0x2f')](_0x6b9c('0xd'),_0x2f3f1c,JSON[_0x6b9c('0x24')](_0x37143e));_0x15d14c[_0x6b9c('0x27')]();}};};
\ No newline at end of file
+var _0xb6ac=['Message','dialogState','Failed','catch','lodash','moment','aws-sdk','./utils','../../rpc/chatMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','create','then','info','[%s][AMAZONLEX]\x20%s','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse'];(function(_0x5ee7e6,_0x505de0){var _0xccbe58=function(_0x7dbd48){while(--_0x7dbd48){_0x5ee7e6['push'](_0x5ee7e6['shift']());}};_0xccbe58(++_0x505de0);}(_0xb6ac,0x9a));var _0xcb6a=function(_0x13f707,_0x16e411){_0x13f707=_0x13f707-0x0;var _0x316056=_0xb6ac[_0x13f707];return _0x316056;};'use strict';var _=require(_0xcb6a('0x0'));var moment=require(_0xcb6a('0x1'));var AWS=require(_0xcb6a('0x2'));var utils=require(_0xcb6a('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0xcb6a('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xcb6a('0x5')),'whatsappMessage':require(_0xcb6a('0x6'))};exports[_0xcb6a('0x7')]=function(_0x4f82be,_0x4f1e80){return function(_0x2d3676){try{if(!_[_0xcb6a('0x8')](this['interaction']['UserId'])){logger['info']('[%s][AMAZONLEX]\x20%s',_0x4f82be,_0xcb6a('0x9'));return _0x2d3676[_0xcb6a('0xa')]();}var _0x5579bc={'ContactId':this[_0xcb6a('0xb')]['id'],'sentAt':moment()[_0xcb6a('0xc')](_0xcb6a('0xd')),'direction':_0xcb6a('0xe')};if(this[_0xcb6a('0xf')]===_0xcb6a('0x10')||this[_0xcb6a('0xf')]===_0xcb6a('0x11')){_0x5579bc[_0xcb6a('0x12')]=this[_0xcb6a('0x13')]['phone'];}var _0x361ee5=this['channel'];if(_0x361ee5===_0xcb6a('0x14')){_0x5579bc[_0xcb6a('0x15')]=this[_0xcb6a('0x16')]['id'];}else{_0x5579bc[_[_0xcb6a('0x17')](_0x361ee5)+_0xcb6a('0x18')]=this[_0xcb6a('0x16')]['id'];}_0x5579bc[_['upperFirst'](_0x361ee5)+_0xcb6a('0x19')]=this['interaction']['id'];if(this[_0xcb6a('0x13')][_0xcb6a('0x1a')]){var _0x28ae1e=_0x4f1e80[0x4];if(!_[_0xcb6a('0x1b')](_0x28ae1e)){_0x5579bc[_0xcb6a('0x1c')]=utils[_0xcb6a('0x1d')](_0x28ae1e,this);return rpc[_0x361ee5+'Message'][_0xcb6a('0x1e')](_0x5579bc)[_0xcb6a('0x1f')](function(_0x1ae0bd){logger[_0xcb6a('0x20')](_0xcb6a('0x21'),_0x4f82be,_0x5579bc['body']);})['catch'](function(_0x5cb652){logger[_0xcb6a('0x22')](_0xcb6a('0x21'),_0x4f82be,JSON[_0xcb6a('0x23')](_0x5cb652));})[_0xcb6a('0x24')](function(){logger[_0xcb6a('0x20')](_0xcb6a('0x25'),_0x4f82be);_0x2d3676[_0xcb6a('0x26')]();});}else{logger[_0xcb6a('0x20')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x4f82be);_0x2d3676['stop']();}}else{var _0x5cb118=this;var _0x41e28d=new AWS['LexRuntime']({'accessKeyId':_0x4f1e80[0x0],'secretAccessKey':_0x4f1e80[0x1],'region':_0x4f1e80[0x2]});var _0x51d324={'botAlias':_0xcb6a('0x27'),'botName':_0x4f1e80[0x3],'inputText':this[_0xcb6a('0x28')][_0xcb6a('0x1c')],'userId':this['channel']+':'+this[_0xcb6a('0x13')]['id'][_0xcb6a('0x29')]()};_0x41e28d[_0xcb6a('0x2a')](_0x51d324,function(_0x16aef5,_0x14051d){if(_0x16aef5){logger[_0xcb6a('0x22')]('[%s][AMAZONLEX]\x20%s',_0x4f82be,_0x16aef5[_0xcb6a('0x28')]);_0x2d3676['next']();}else if(_0x14051d&&_0x14051d['message']){_0x5cb118[_0xcb6a('0x1c')][_0xcb6a('0x2b')]=_0x14051d;_0x5579bc[_0xcb6a('0x1c')]=_0x14051d['message'];_0x5579bc[_0xcb6a('0x2c')]=_0xcb6a('0x2b');_0x5579bc[_0xcb6a('0x2d')]=JSON['stringify'](_0x14051d);return rpc[_0x361ee5+_0xcb6a('0x2e')][_0xcb6a('0x1e')](_0x5579bc)[_0xcb6a('0x1f')](function(_0x4c0fcb){logger['info'](_0xcb6a('0x21'),_0x4f82be,_0x5579bc[_0xcb6a('0x1c')]);if(_0x14051d[_0xcb6a('0x2f')]==_0xcb6a('0x30')){_0x2d3676[_0xcb6a('0xa')]();}else{_0x2d3676[_0xcb6a('0x26')]();}})[_0xcb6a('0x31')](function(_0x39daa4){logger[_0xcb6a('0x22')](_0xcb6a('0x21'),_0x4f82be,JSON['stringify'](_0x39daa4));_0x2d3676[_0xcb6a('0xa')]();});}else{_0x2d3676['next']();}});}}catch(_0x4c8598){logger[_0xcb6a('0x22')](_0xcb6a('0x21'),_0x4f82be,JSON[_0xcb6a('0x23')](_0x4c8598));_0x2d3676[_0xcb6a('0x26')]();}};};
\ No newline at end of file
index 891371f..c8e7fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72f4=['YYYY-MM-DD\x20HH:mm:ss','out','message','from','mail','phone','read','subject','ChatWebsiteId','upperFirst','AccountId','account','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','moment','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','next','contact'];(function(_0x52b23b,_0x378054){var _0x1c2126=function(_0xf21258){while(--_0xf21258){_0x52b23b['push'](_0x52b23b['shift']());}};_0x1c2126(++_0x378054);}(_0x72f4,0x164));var _0x472f=function(_0x4ba69a,_0x8fe23f){_0x4ba69a=_0x4ba69a-0x0;var _0x3df6d9=_0x72f4[_0x4ba69a];return _0x3df6d9;};'use strict';var _=require('lodash');var moment=require(_0x472f('0x0'));var utils=require('./utils');var logger=require(_0x472f('0x1'))(_0x472f('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x472f('0x3')),'mailMessage':require(_0x472f('0x4')),'smsMessage':require(_0x472f('0x5')),'faxMessage':require(_0x472f('0x6')),'whatsappMessage':require(_0x472f('0x7')),'chatInteraction':require(_0x472f('0x8')),'openchannelInteraction':require(_0x472f('0x9')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x472f('0xa')),'faxInteraction':require(_0x472f('0xb')),'whatsappInteraction':require(_0x472f('0xc'))};var mailRpc=require(_0x472f('0xd'));exports[_0x472f('0xe')]=function(_0x37bd7b,_0x5973df,_0x24d04e,_0x60506e){return function(_0x1b4bea){try{var _0x31eb6b=this[_0x472f('0xf')];if(_0x31eb6b==='mail'&&_0x60506e[_0x472f('0x10')][_0x472f('0x11')]){logger[_0x472f('0x12')](_0x472f('0x13'),_0x37bd7b,_0x472f('0x14'));return _0x1b4bea['next']();}if(_0x5973df[0x0]==='1'&&(_['isNil'](this[_0x472f('0x15')][_0x472f('0x16')])||!this[_0x472f('0x15')]['created'])){logger[_0x472f('0x12')]('[%s][AUTOREPLY]\x20%s',_0x37bd7b,_0x472f('0x17'));return _0x1b4bea['next']();}if(_0x5973df[0x0]==='2'&&this[_0x472f('0x15')][_0x472f('0x18')]){logger[_0x472f('0x12')](_0x472f('0x19'),_0x37bd7b,'One\x20Time\x20already\x20sent');return _0x1b4bea[_0x472f('0x1a')]();}var _0x399552={'ContactId':this[_0x472f('0x1b')]['id'],'sentAt':moment()['format'](_0x472f('0x1c')),'direction':_0x472f('0x1d')};if(this[_0x472f('0xf')]==='mail'){_0x399552[_0x472f('0x10')]=utils['getMustacheRender'](_0x5973df[0x2],this);}else{_0x399552[_0x472f('0x10')]=utils['getMustacheRender'](_0x5973df[0x1],this);}if(this[_0x472f('0x1e')]){_0x399552['to']=this['message'][_0x472f('0x1f')]||'';if(this[_0x472f('0xf')]===_0x472f('0x20')&&_0x5973df[0x1]==='1'){_0x399552['cc']=this[_0x472f('0x1e')]['cc']||'';}_0x399552['from']=this['message']['to']||'';_0x399552[_0x472f('0x21')]=this[_0x472f('0x1e')]['phone']||'';_0x399552[_0x472f('0x22')]=!![];if(this[_0x472f('0x1e')][_0x472f('0x23')]){_0x399552[_0x472f('0x23')]='';_0x399552[_0x472f('0x23')]+=_['startsWith'](this['message'][_0x472f('0x23')],'Re:')?'':'Re:\x20';_0x399552[_0x472f('0x23')]+=this[_0x472f('0x1e')]['subject'];}}if(this[_0x472f('0xf')]==='chat'){_0x399552[_0x472f('0x24')]=this['account']['id'];}else{_0x399552[_[_0x472f('0x25')](this[_0x472f('0xf')])+_0x472f('0x26')]=this[_0x472f('0x27')]['id'];}_0x399552[_['upperFirst'](this['channel'])+'InteractionId']=this[_0x472f('0x15')]['id'];var _0x55d6a2=this[_0x472f('0x15')];if(rpc[this[_0x472f('0xf')]+_0x472f('0x28')]){if(this['channel']==='mail'){_0x399552[_0x472f('0x29')]=this[_0x472f('0x1e')][_0x472f('0x2a')];_0x399552[_0x472f('0x2b')]=_0x472f('0x2c')+_['replace'](_0x399552[_0x472f('0x10')],'<div\x20id=\x22xm-mail-content\x22',_0x472f('0x2d'))+_0x472f('0x2e');_0x399552[_0x472f('0x2f')]={'Auto-Submitted':_0x472f('0x30'),'X-Auto-Response-Suppress':_0x472f('0x31'),'Precedence':_0x472f('0x32')};return mailRpc[_0x472f('0x33')](this[_0x472f('0x27')]['smtpOptions'],_0x399552)[_0x472f('0x34')](function(_0x542e89){logger['info'](_0x472f('0x35'),_0x37bd7b);_0x399552['messageId']=_0x542e89[_0x472f('0x1e')][_0x472f('0x2a')];return rpc[_0x31eb6b+'Message'][_0x472f('0x36')](_0x399552);})[_0x472f('0x34')](function(_0x1b250f){logger[_0x472f('0x12')]('[%s][AUTOREPLY]\x20%s',_0x37bd7b,JSON[_0x472f('0x37')](_0x1b250f));})['catch'](function(_0x5ab598){logger['error'](_0x472f('0x38'),_0x37bd7b,JSON[_0x472f('0x37')](_0x5ab598));})[_0x472f('0x39')](function(){Promise[_0x472f('0x3a')]()[_0x472f('0x34')](function(){if(_0x5973df[0x0]!=='2'||_0x55d6a2[_0x472f('0x18')])return;return rpc[_0x31eb6b+_0x472f('0x3b')][_0x472f('0x3c')](_0x55d6a2['id'],{'autoreplyExecuted':!![]})[_0x472f('0x34')](function(_0x10fbf8){logger[_0x472f('0x12')](_0x472f('0x19'),_0x37bd7b,JSON['stringify'](_0x10fbf8));})[_0x472f('0x3d')](function(_0x4d9f4a){logger['error'](_0x472f('0x3e'),_0x37bd7b,JSON[_0x472f('0x37')](_0x4d9f4a));});})['then'](function(){_0x1b4bea[_0x472f('0x1a')]();});});}else{return rpc[this[_0x472f('0xf')]+_0x472f('0x28')][_0x472f('0x36')](_0x399552)[_0x472f('0x34')](function(){logger['info']('[%s][AUTOREPLY]\x20%s',_0x37bd7b,_0x399552[_0x472f('0x10')]);})[_0x472f('0x3d')](function(_0x175ccf){logger[_0x472f('0x3f')](_0x472f('0x13'),_0x37bd7b,JSON[_0x472f('0x37')](_0x175ccf));})[_0x472f('0x39')](function(){Promise[_0x472f('0x3a')]()['then'](function(){if(_0x5973df[0x0]!=='2'||_0x55d6a2[_0x472f('0x18')])return;return rpc[_0x31eb6b+'Interaction'][_0x472f('0x3c')](_0x55d6a2['id'],{'autoreplyExecuted':!![]})[_0x472f('0x34')](function(_0x5c5792){logger[_0x472f('0x12')](_0x472f('0x19'),_0x37bd7b,JSON[_0x472f('0x37')](_0x5c5792));})['catch'](function(_0x1e6a2d){logger['error']('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x37bd7b,JSON[_0x472f('0x37')](_0x1e6a2d));});})[_0x472f('0x34')](function(){_0x1b4bea[_0x472f('0x1a')]();});});}}}catch(_0x427471){logger['error'](_0x472f('0x13'),_0x37bd7b,JSON['stringify'](_0x427471));_0x1b4bea['stop']();}};};
\ No newline at end of file
+var _0x4b3d=['messageId','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','[%s][AUTOREPLY]\x20%s','Interaction','stop','lodash','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','phone','read','subject','startsWith','Re:\x20','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','headers','auto-replied','All','auto_reply','sendMailMessage','then'];(function(_0x14bbcd,_0x24cd8e){var _0x35f22c=function(_0xef21dd){while(--_0xef21dd){_0x14bbcd['push'](_0x14bbcd['shift']());}};_0x35f22c(++_0x24cd8e);}(_0x4b3d,0x160));var _0xd4b3=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x4b3d[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xd4b3('0x0'));var moment=require(_0xd4b3('0x1'));var utils=require(_0xd4b3('0x2'));var logger=require('../../../../config/logger')(_0xd4b3('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xd4b3('0x4')),'mailMessage':require(_0xd4b3('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xd4b3('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0xd4b3('0x7')),'openchannelInteraction':require(_0xd4b3('0x8')),'mailInteraction':require(_0xd4b3('0x9')),'smsInteraction':require(_0xd4b3('0xa')),'faxInteraction':require(_0xd4b3('0xb')),'whatsappInteraction':require(_0xd4b3('0xc'))};var mailRpc=require(_0xd4b3('0xd'));exports[_0xd4b3('0xe')]=function(_0x5698dc,_0x47ed9d,_0x38a53a,_0x7d49bb){return function(_0x274182){try{var _0x5317b6=this[_0xd4b3('0xf')];if(_0x5317b6===_0xd4b3('0x10')&&_0x7d49bb[_0xd4b3('0x11')]['isAutoreply']){logger[_0xd4b3('0x12')]('[%s][AUTOREPLY]\x20%s',_0x5698dc,_0xd4b3('0x13'));return _0x274182[_0xd4b3('0x14')]();}if(_0x47ed9d[0x0]==='1'&&(_[_0xd4b3('0x15')](this[_0xd4b3('0x16')][_0xd4b3('0x17')])||!this[_0xd4b3('0x16')][_0xd4b3('0x17')])){logger[_0xd4b3('0x12')]('[%s][AUTOREPLY]\x20%s',_0x5698dc,_0xd4b3('0x18'));return _0x274182[_0xd4b3('0x14')]();}if(_0x47ed9d[0x0]==='2'&&this['interaction'][_0xd4b3('0x19')]){logger[_0xd4b3('0x12')](_0xd4b3('0x1a'),_0x5698dc,_0xd4b3('0x1b'));return _0x274182[_0xd4b3('0x14')]();}var _0xfbffdf={'ContactId':this[_0xd4b3('0x1c')]['id'],'sentAt':moment()[_0xd4b3('0x1d')](_0xd4b3('0x1e')),'direction':_0xd4b3('0x1f')};if(this[_0xd4b3('0xf')]===_0xd4b3('0x10')){_0xfbffdf['body']=utils[_0xd4b3('0x20')](_0x47ed9d[0x2],this);}else{_0xfbffdf['body']=utils[_0xd4b3('0x20')](_0x47ed9d[0x1],this);}if(this[_0xd4b3('0x21')]){_0xfbffdf['to']=this[_0xd4b3('0x21')]['from']||'';if(this[_0xd4b3('0xf')]==='mail'&&_0x47ed9d[0x1]==='1'){_0xfbffdf['cc']=this[_0xd4b3('0x21')]['cc']||'';}_0xfbffdf['from']=this[_0xd4b3('0x21')]['to']||'';_0xfbffdf[_0xd4b3('0x22')]=this[_0xd4b3('0x21')]['phone']||'';_0xfbffdf[_0xd4b3('0x23')]=!![];if(this['message'][_0xd4b3('0x24')]){_0xfbffdf[_0xd4b3('0x24')]='';_0xfbffdf['subject']+=_[_0xd4b3('0x25')](this[_0xd4b3('0x21')]['subject'],'Re:')?'':_0xd4b3('0x26');_0xfbffdf['subject']+=this[_0xd4b3('0x21')][_0xd4b3('0x24')];}}if(this['channel']===_0xd4b3('0x27')){_0xfbffdf[_0xd4b3('0x28')]=this[_0xd4b3('0x29')]['id'];}else{_0xfbffdf[_[_0xd4b3('0x2a')](this[_0xd4b3('0xf')])+'AccountId']=this[_0xd4b3('0x29')]['id'];}_0xfbffdf[_[_0xd4b3('0x2a')](this[_0xd4b3('0xf')])+_0xd4b3('0x2b')]=this[_0xd4b3('0x16')]['id'];var _0x27d2a5=this[_0xd4b3('0x16')];if(rpc[this[_0xd4b3('0xf')]+_0xd4b3('0x2c')]){if(this['channel']===_0xd4b3('0x10')){_0xfbffdf['inReplyTo']=this['message']['messageId'];_0xfbffdf[_0xd4b3('0x2d')]=_0xd4b3('0x2e')+_[_0xd4b3('0x2f')](_0xfbffdf[_0xd4b3('0x11')],_0xd4b3('0x30'),_0xd4b3('0x31'))+'</div>';_0xfbffdf[_0xd4b3('0x32')]={'Auto-Submitted':_0xd4b3('0x33'),'X-Auto-Response-Suppress':_0xd4b3('0x34'),'Precedence':_0xd4b3('0x35')};return mailRpc[_0xd4b3('0x36')](this[_0xd4b3('0x29')]['smtpOptions'],_0xfbffdf)[_0xd4b3('0x37')](function(_0x270f18){logger[_0xd4b3('0x12')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x5698dc);_0xfbffdf[_0xd4b3('0x38')]=_0x270f18[_0xd4b3('0x21')][_0xd4b3('0x38')];return rpc[_0x5317b6+_0xd4b3('0x2c')][_0xd4b3('0x39')](_0xfbffdf);})['then'](function(_0x5477bb){logger[_0xd4b3('0x12')]('[%s][AUTOREPLY]\x20%s',_0x5698dc,JSON[_0xd4b3('0x3a')](_0x5477bb));})[_0xd4b3('0x3b')](function(_0x54ce0c){logger['error'](_0xd4b3('0x3c'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0x54ce0c));})[_0xd4b3('0x3d')](function(){Promise['resolve']()[_0xd4b3('0x37')](function(){if(_0x47ed9d[0x0]!=='2'||_0x27d2a5['autoreplyExecuted'])return;return rpc[_0x5317b6+'Interaction'][_0xd4b3('0x3e')](_0x27d2a5['id'],{'autoreplyExecuted':!![]})['then'](function(_0x4eea88){logger[_0xd4b3('0x12')](_0xd4b3('0x1a'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0x4eea88));})[_0xd4b3('0x3b')](function(_0x24b77c){logger[_0xd4b3('0x3f')](_0xd4b3('0x40'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0x24b77c));});})[_0xd4b3('0x37')](function(){_0x274182[_0xd4b3('0x14')]();});});}else{return rpc[this[_0xd4b3('0xf')]+_0xd4b3('0x2c')]['create'](_0xfbffdf)[_0xd4b3('0x37')](function(){logger['info']('[%s][AUTOREPLY]\x20%s',_0x5698dc,_0xfbffdf[_0xd4b3('0x11')]);})[_0xd4b3('0x3b')](function(_0xd6421a){logger['error'](_0xd4b3('0x41'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0xd6421a));})['finally'](function(){Promise['resolve']()[_0xd4b3('0x37')](function(){if(_0x47ed9d[0x0]!=='2'||_0x27d2a5[_0xd4b3('0x19')])return;return rpc[_0x5317b6+_0xd4b3('0x42')][_0xd4b3('0x3e')](_0x27d2a5['id'],{'autoreplyExecuted':!![]})[_0xd4b3('0x37')](function(_0x1c3176){logger[_0xd4b3('0x12')](_0xd4b3('0x1a'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0x1c3176));})[_0xd4b3('0x3b')](function(_0x215699){logger[_0xd4b3('0x3f')](_0xd4b3('0x40'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0x215699));});})['then'](function(){_0x274182[_0xd4b3('0x14')]();});});}}}catch(_0xb82c6b){logger[_0xd4b3('0x3f')](_0xd4b3('0x41'),_0x5698dc,JSON[_0xd4b3('0x3a')](_0xb82c6b));_0x274182[_0xd4b3('0x43')]();}};};
\ No newline at end of file
index 6df6004..fd1edfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24f9=['channel','update','interaction','then','catch','error','[%s][CLOSE]\x20%s','stringify','stop','moment','../../../../config/logger','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','system'];(function(_0x499624,_0x268f52){var _0x7965f8=function(_0x39b7b2){while(--_0x39b7b2){_0x499624['push'](_0x499624['shift']());}};_0x7965f8(++_0x268f52);}(_0x24f9,0xed));var _0x924f=function(_0x4b6aee,_0x12daff){_0x4b6aee=_0x4b6aee-0x0;var _0x562e0e=_0x24f9[_0x4b6aee];return _0x562e0e;};'use strict';var moment=require(_0x924f('0x0'));var logger=require(_0x924f('0x1'))('routing');var rpc={'chatInteraction':require(_0x924f('0x2')),'openchannelInteraction':require(_0x924f('0x3')),'smsInteraction':require(_0x924f('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x924f('0x5')),'whatsappInteraction':require(_0x924f('0x6'))};exports[_0x924f('0x7')]=function(_0x1d24b6,_0x567f3a,_0x31a363,_0x58b16c){return function(_0x213b19){try{logger['info'](_0x924f('0x8'),_0x1d24b6,_0x567f3a[0x0]);var _0x281358={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x924f('0x9'),'disposition':_0x567f3a[0x0]};if(rpc[_0x58b16c[_0x924f('0xa')]+'Interaction']){rpc[_0x58b16c[_0x924f('0xa')]+'Interaction'][_0x924f('0xb')](_0x58b16c[_0x924f('0xc')]['id'],_0x281358)[_0x924f('0xd')](function(_0x541777){logger['info']('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x1d24b6,_0x58b16c['interaction']['id']);})[_0x924f('0xe')](function(_0x1b245f){logger[_0x924f('0xf')](_0x924f('0x10'),_0x1d24b6,JSON[_0x924f('0x11')](_0x1b245f));})['finally'](function(){_0x213b19[_0x924f('0x12')]();});}}catch(_0x46e731){logger[_0x924f('0xf')](_0x924f('0x10'),_0x1d24b6,JSON['stringify'](_0x46e731));_0x213b19[_0x924f('0x12')]();}};};
\ No newline at end of file
+var _0x14d2=['channel','Interaction','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','finally','stop','stringify','moment','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system'];(function(_0x1f548b,_0x1dbd70){var _0x3a789b=function(_0x4572ec){while(--_0x4572ec){_0x1f548b['push'](_0x1f548b['shift']());}};_0x3a789b(++_0x1dbd70);}(_0x14d2,0x78));var _0x214d=function(_0x477151,_0x5ee378){_0x477151=_0x477151-0x0;var _0x4f5fd9=_0x14d2[_0x477151];return _0x4f5fd9;};'use strict';var moment=require(_0x214d('0x0'));var logger=require('../../../../config/logger')(_0x214d('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x214d('0x2')),'smsInteraction':require(_0x214d('0x3')),'mailInteraction':require(_0x214d('0x4')),'faxInteraction':require(_0x214d('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x214d('0x6')]=function(_0x53c02b,_0x3fcdd3,_0x27c615,_0x32fff2){return function(_0x1e762c){try{logger[_0x214d('0x7')](_0x214d('0x8'),_0x53c02b,_0x3fcdd3[0x0]);var _0x35e51c={'closed':0x1,'closedAt':moment()[_0x214d('0x9')](_0x214d('0xa')),'closeReason':_0x214d('0xb'),'disposition':_0x3fcdd3[0x0]};if(rpc[_0x32fff2[_0x214d('0xc')]+_0x214d('0xd')]){rpc[_0x32fff2[_0x214d('0xc')]+'Interaction'][_0x214d('0xe')](_0x32fff2[_0x214d('0xf')]['id'],_0x35e51c)['then'](function(_0x5d7d5f){logger[_0x214d('0x7')](_0x214d('0x10'),_0x53c02b,_0x32fff2[_0x214d('0xf')]['id']);})['catch'](function(_0x375322){logger[_0x214d('0x11')](_0x214d('0x12'),_0x53c02b,JSON['stringify'](_0x375322));})[_0x214d('0x13')](function(){_0x1e762c[_0x214d('0x14')]();});}}catch(_0x4c466d){logger[_0x214d('0x11')](_0x214d('0x12'),_0x53c02b,JSON[_0x214d('0x15')](_0x4c466d));_0x1e762c[_0x214d('0x14')]();}};};
\ No newline at end of file
index 9fed7d3..e0d0685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['endConversation','next','stop','message','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','interaction','phone','ChatWebsiteId','account','upperFirst','AccountId','created','getMustacheRender','Message','create','then','body','catch','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','result','fulfillment','speech','providerName','dialogflow','providerResponse','stringify','metadata'];(function(_0x2597a2,_0x5f3277){var _0x6a52d3=function(_0x56a0b7){while(--_0x56a0b7){_0x2597a2['push'](_0x2597a2['shift']());}};_0x6a52d3(++_0x5f3277);}(_0x5fab,0x177));var _0xb5fa=function(_0x17c8a9,_0x531ca3){_0x17c8a9=_0x17c8a9-0x0;var _0x379aa6=_0x5fab[_0x17c8a9];return _0x379aa6;};'use strict';var _=require(_0xb5fa('0x0'));var moment=require(_0xb5fa('0x1'));var apiai=require('apiai-promise');var md5=require(_0xb5fa('0x2'));var utils=require(_0xb5fa('0x3'));var logger=require(_0xb5fa('0x4'))(_0xb5fa('0x5'));var rpc={'chatMessage':require(_0xb5fa('0x6')),'openchannelMessage':require(_0xb5fa('0x7')),'mailMessage':require(_0xb5fa('0x8')),'smsMessage':require(_0xb5fa('0x9')),'faxMessage':require(_0xb5fa('0xa')),'whatsappMessage':require(_0xb5fa('0xb'))};exports['consequence']=function(_0x5d70f6,_0x2e3804){return function(_0x1aec3e){try{if(!_[_0xb5fa('0xc')](this['interaction'][_0xb5fa('0xd')])){logger[_0xb5fa('0xe')](_0xb5fa('0xf'),_0x5d70f6,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x1aec3e['next']();}var _0x3a8e1b={'ContactId':this[_0xb5fa('0x10')]['id'],'sentAt':moment()[_0xb5fa('0x11')](_0xb5fa('0x12')),'direction':_0xb5fa('0x13')};if(this[_0xb5fa('0x14')]===_0xb5fa('0x15')||this[_0xb5fa('0x14')]===_0xb5fa('0x16')){_0x3a8e1b['phone']=this[_0xb5fa('0x17')][_0xb5fa('0x18')];}var _0x56e8b0=this[_0xb5fa('0x14')];if(_0x56e8b0==='chat'){_0x3a8e1b[_0xb5fa('0x19')]=this[_0xb5fa('0x1a')]['id'];}else{_0x3a8e1b[_[_0xb5fa('0x1b')](_0x56e8b0)+_0xb5fa('0x1c')]=this[_0xb5fa('0x1a')]['id'];}_0x3a8e1b[_['upperFirst'](_0x56e8b0)+'InteractionId']=this[_0xb5fa('0x17')]['id'];if(this[_0xb5fa('0x17')][_0xb5fa('0x1d')]){var _0x27c8f7=_0x2e3804[0x2];if(!_['isEmpty'](_0x27c8f7)){_0x3a8e1b['body']=utils[_0xb5fa('0x1e')](_0x27c8f7,this);return rpc[_0x56e8b0+_0xb5fa('0x1f')][_0xb5fa('0x20')](_0x3a8e1b)[_0xb5fa('0x21')](function(_0x324ba5){logger[_0xb5fa('0xe')](_0xb5fa('0xf'),_0x5d70f6,_0x3a8e1b[_0xb5fa('0x22')]);})[_0xb5fa('0x23')](function(_0x368cb1){logger[_0xb5fa('0x24')](_0xb5fa('0xf'),_0x5d70f6,JSON['stringify'](_0x368cb1));})[_0xb5fa('0x25')](function(){logger['info'](_0xb5fa('0x26'),_0x5d70f6);_0x1aec3e['stop']();});}else{logger[_0xb5fa('0xe')](_0xb5fa('0x27'),_0x5d70f6);_0x1aec3e['stop']();}}else{var _0x40dfdf=this;var _0x3a2ab9=apiai(_0x2e3804[0x0],{'language':_0x2e3804[0x1]||'en'});return _0x3a2ab9[_0xb5fa('0x28')](this['message'][_0xb5fa('0x22')],{'sessionId':md5(this[_0xb5fa('0x17')]['id'])})[_0xb5fa('0x21')](function(_0x542348){_0x40dfdf[_0xb5fa('0x22')]['dialogflow']=_0x542348;_0x3a8e1b[_0xb5fa('0x22')]=_0x542348[_0xb5fa('0x29')][_0xb5fa('0x2a')][_0xb5fa('0x2b')];_0x3a8e1b[_0xb5fa('0x2c')]=_0xb5fa('0x2d');_0x3a8e1b[_0xb5fa('0x2e')]=JSON[_0xb5fa('0x2f')](_0x542348);return rpc[_0x56e8b0+'Message']['create'](_0x3a8e1b)['then'](function(_0x5a1c39){logger[_0xb5fa('0xe')](_0xb5fa('0xf'),_0x5d70f6,_0x3a8e1b[_0xb5fa('0x22')]);if(_0x542348[_0xb5fa('0x29')][_0xb5fa('0x30')][_0xb5fa('0x31')]){_0x1aec3e[_0xb5fa('0x32')]();}else{_0x1aec3e[_0xb5fa('0x33')]();}})[_0xb5fa('0x23')](function(_0x2a5690){logger[_0xb5fa('0x24')](_0xb5fa('0xf'),_0x5d70f6,JSON[_0xb5fa('0x2f')](_0x2a5690));_0x1aec3e[_0xb5fa('0x32')]();});})[_0xb5fa('0x23')](function(_0x116773){logger[_0xb5fa('0x24')](_0xb5fa('0xf'),_0x5d70f6,_0x116773[_0xb5fa('0x34')]);_0x1aec3e[_0xb5fa('0x32')]();});}}catch(_0x291938){logger[_0xb5fa('0x24')](_0xb5fa('0xf'),_0x5d70f6,JSON[_0xb5fa('0x2f')](_0x291938));_0x1aec3e['stop']();}};};
\ No newline at end of file
+var _0x2f74=['account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','then','[%s][DIALOGFLOW]\x20%s','catch','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','dialogflow','result','providerName','providerResponse','create','metadata','endConversation','lodash','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','ChatWebsiteId'];(function(_0x199d5d,_0x46f3ee){var _0x3aff29=function(_0x5b3be3){while(--_0x5b3be3){_0x199d5d['push'](_0x199d5d['shift']());}};_0x3aff29(++_0x46f3ee);}(_0x2f74,0x7b));var _0x42f7=function(_0x589f71,_0x212326){_0x589f71=_0x589f71-0x0;var _0x5763bd=_0x2f74[_0x589f71];return _0x5763bd;};'use strict';var _=require(_0x42f7('0x0'));var moment=require('moment');var apiai=require(_0x42f7('0x1'));var md5=require(_0x42f7('0x2'));var utils=require(_0x42f7('0x3'));var logger=require(_0x42f7('0x4'))(_0x42f7('0x5'));var rpc={'chatMessage':require(_0x42f7('0x6')),'openchannelMessage':require(_0x42f7('0x7')),'mailMessage':require(_0x42f7('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x42f7('0x9')]=function(_0x1cb6e0,_0x20ff46){return function(_0x36b55e){try{if(!_[_0x42f7('0xa')](this[_0x42f7('0xb')][_0x42f7('0xc')])){logger[_0x42f7('0xd')]('[%s][DIALOGFLOW]\x20%s',_0x1cb6e0,_0x42f7('0xe'));return _0x36b55e[_0x42f7('0xf')]();}var _0x106807={'ContactId':this[_0x42f7('0x10')]['id'],'sentAt':moment()[_0x42f7('0x11')](_0x42f7('0x12')),'direction':'out'};if(this[_0x42f7('0x13')]===_0x42f7('0x14')||this[_0x42f7('0x13')]===_0x42f7('0x15')){_0x106807[_0x42f7('0x16')]=this[_0x42f7('0xb')][_0x42f7('0x16')];}var _0x1601ed=this['channel'];if(_0x1601ed==='chat'){_0x106807[_0x42f7('0x17')]=this[_0x42f7('0x18')]['id'];}else{_0x106807[_[_0x42f7('0x19')](_0x1601ed)+_0x42f7('0x1a')]=this[_0x42f7('0x18')]['id'];}_0x106807[_['upperFirst'](_0x1601ed)+_0x42f7('0x1b')]=this['interaction']['id'];if(this[_0x42f7('0xb')][_0x42f7('0x1c')]){var _0x16d842=_0x20ff46[0x2];if(!_[_0x42f7('0x1d')](_0x16d842)){_0x106807[_0x42f7('0x1e')]=utils[_0x42f7('0x1f')](_0x16d842,this);return rpc[_0x1601ed+_0x42f7('0x20')]['create'](_0x106807)[_0x42f7('0x21')](function(_0x29f472){logger[_0x42f7('0xd')](_0x42f7('0x22'),_0x1cb6e0,_0x106807[_0x42f7('0x1e')]);})[_0x42f7('0x23')](function(_0x503313){logger[_0x42f7('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x1cb6e0,JSON[_0x42f7('0x25')](_0x503313));})['finally'](function(){logger[_0x42f7('0xd')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x1cb6e0);_0x36b55e['stop']();});}else{logger['info'](_0x42f7('0x26'),_0x1cb6e0);_0x36b55e[_0x42f7('0x27')]();}}else{var _0x3a04db=this;var _0x2a755a=apiai(_0x20ff46[0x0],{'language':_0x20ff46[0x1]||'en'});return _0x2a755a[_0x42f7('0x28')](this[_0x42f7('0x29')][_0x42f7('0x1e')],{'sessionId':md5(this[_0x42f7('0xb')]['id'])})[_0x42f7('0x21')](function(_0x372709){_0x3a04db[_0x42f7('0x1e')][_0x42f7('0x2a')]=_0x372709;_0x106807[_0x42f7('0x1e')]=_0x372709[_0x42f7('0x2b')]['fulfillment']['speech'];_0x106807[_0x42f7('0x2c')]=_0x42f7('0x2a');_0x106807[_0x42f7('0x2d')]=JSON[_0x42f7('0x25')](_0x372709);return rpc[_0x1601ed+_0x42f7('0x20')][_0x42f7('0x2e')](_0x106807)[_0x42f7('0x21')](function(_0x64859){logger[_0x42f7('0xd')](_0x42f7('0x22'),_0x1cb6e0,_0x106807['body']);if(_0x372709['result'][_0x42f7('0x2f')][_0x42f7('0x30')]){_0x36b55e[_0x42f7('0xf')]();}else{_0x36b55e['stop']();}})[_0x42f7('0x23')](function(_0x2eed6c){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x1cb6e0,JSON[_0x42f7('0x25')](_0x2eed6c));_0x36b55e[_0x42f7('0xf')]();});})[_0x42f7('0x23')](function(_0xf6664c){logger[_0x42f7('0x24')](_0x42f7('0x22'),_0x1cb6e0,_0xf6664c[_0x42f7('0x29')]);_0x36b55e[_0x42f7('0xf')]();});}}catch(_0x3322d2){logger['error'](_0x42f7('0x22'),_0x1cb6e0,JSON[_0x42f7('0x25')](_0x3322d2));_0x36b55e[_0x42f7('0x27')]();}};};
\ No newline at end of file
index 58ab453..fce53db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb1=['end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','stack','lodash','dialogflow','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','created','isEmpty','getMustacheRender','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields'];(function(_0x593ffb,_0x5ec77f){var _0x18191d=function(_0x31f6cb){while(--_0x31f6cb){_0x593ffb['push'](_0x593ffb['shift']());}};_0x18191d(++_0x5ec77f);}(_0xddb1,0x13f));var _0x1ddb=function(_0x506afe,_0x304df9){_0x506afe=_0x506afe-0x0;var _0x2f673e=_0xddb1[_0x506afe];return _0x2f673e;};'use strict';var _=require(_0x1ddb('0x0'));var dialogflow=require(_0x1ddb('0x1'));var md5=require('md5');var moment=require(_0x1ddb('0x2'));var Promise=require(_0x1ddb('0x3'));var logger=require(_0x1ddb('0x4'))(_0x1ddb('0x5'));var utils=require(_0x1ddb('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x1ddb('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x1ddb('0x8')),'faxMessage':require(_0x1ddb('0x9')),'whatsappMessage':require(_0x1ddb('0xa'))};function createMessage(_0x4dbfcd,_0x4a2e0c,_0x260071,_0x844c27){return new Promise(function(_0x557180,_0x2ab3dc){var _0x476316=_['clone'](_0x260071);_0x476316[_0x1ddb('0xb')]=_0x844c27;return rpc[_0x4a2e0c+_0x1ddb('0xc')][_0x1ddb('0xd')](_0x476316)[_0x1ddb('0xe')](function(){logger[_0x1ddb('0xf')](_0x1ddb('0x10'),_0x4dbfcd,_0x476316[_0x1ddb('0xb')]);_0x557180();})[_0x1ddb('0x11')](function(_0x34bedf){logger[_0x1ddb('0x12')](_0x1ddb('0x10'),_0x4dbfcd,JSON[_0x1ddb('0x13')](_0x34bedf));_0x2ab3dc(_0x34bedf);});});}exports[_0x1ddb('0x14')]=function(_0x1d2ece,_0x8ea4d4){return function(_0x257814){try{if(!_[_0x1ddb('0x15')](this[_0x1ddb('0x16')][_0x1ddb('0x17')])){logger['info'](_0x1ddb('0x10'),_0x1d2ece,_0x1ddb('0x18'));return _0x257814[_0x1ddb('0x19')]();}var _0x54ab29={'ContactId':this[_0x1ddb('0x1a')]['id'],'sentAt':moment()[_0x1ddb('0x1b')](_0x1ddb('0x1c')),'direction':_0x1ddb('0x1d')};if(this[_0x1ddb('0x1e')]===_0x1ddb('0x1f')||this[_0x1ddb('0x1e')]==='whatsapp'){_0x54ab29['phone']=this[_0x1ddb('0x16')][_0x1ddb('0x20')];}var _0x5209ec=this[_0x1ddb('0x1e')];if(_0x5209ec===_0x1ddb('0x21')){_0x54ab29[_0x1ddb('0x22')]=this['account']['id'];}else{_0x54ab29[_[_0x1ddb('0x23')](_0x5209ec)+_0x1ddb('0x24')]=this[_0x1ddb('0x25')]['id'];}_0x54ab29[_[_0x1ddb('0x23')](_0x5209ec)+'InteractionId']=this[_0x1ddb('0x16')]['id'];if(this[_0x1ddb('0x16')][_0x1ddb('0x26')]){var _0x2206a2=_0x8ea4d4[0x4];if(!_[_0x1ddb('0x27')](_0x2206a2)){_0x54ab29[_0x1ddb('0xb')]=utils[_0x1ddb('0x28')](_0x2206a2,this);return rpc[_0x5209ec+_0x1ddb('0xc')]['create'](_0x54ab29)[_0x1ddb('0xe')](function(_0x36383a){logger[_0x1ddb('0xf')](_0x1ddb('0x10'),_0x1d2ece,_0x54ab29[_0x1ddb('0xb')]);})['catch'](function(_0x445f1b){logger[_0x1ddb('0x12')](_0x1ddb('0x10'),_0x1d2ece,JSON['stringify'](_0x445f1b));})['finally'](function(){logger[_0x1ddb('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x1d2ece);_0x257814[_0x1ddb('0x29')]();});}else{logger[_0x1ddb('0xf')](_0x1ddb('0x2a'),_0x1d2ece);_0x257814[_0x1ddb('0x29')]();}}else{var _0x425744=this;var _0x58775d=_0x8ea4d4[0x2]['replace'](/\\n/g,'\x0a');var _0x3f7f65={'credentials':{'private_key':_0x58775d,'client_email':_0x8ea4d4[0x1]}};var _0x1e1319=new dialogflow['SessionsClient'](_0x3f7f65);var _0x4fdc97=_0x1e1319[_0x1ddb('0x2b')](_0x8ea4d4[0x0],md5(_0x425744[_0x1ddb('0x16')]['id']));var _0xa96aba={'session':_0x4fdc97,'queryInput':{'text':{'text':_0x425744[_0x1ddb('0x2c')][_0x1ddb('0xb')],'languageCode':_0x8ea4d4[0x3]||'en'}}};return _0x1e1319[_0x1ddb('0x2d')](_0xa96aba)[_0x1ddb('0xe')](function(_0x477fc7){if(_0x477fc7&&_0x477fc7[_0x1ddb('0x2e')]){_0x425744[_0x1ddb('0xb')][_0x1ddb('0x2f')]=_0x477fc7;var _0x326976=_0x477fc7[0x0];var _0x4f5ba8=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x31')]&&_0x326976[_0x1ddb('0x30')][_0x1ddb('0x31')][_0x1ddb('0x32')]?_0x326976[_0x1ddb('0x30')]['diagnosticInfo'][_0x1ddb('0x32')][_0x1ddb('0x33')][_0x1ddb('0x34')]:![];_0x425744[_0x1ddb('0xb')][_0x1ddb('0x35')]=_0x326976['queryResult'][_0x1ddb('0x36')];_0x425744[_0x1ddb('0xb')][_0x1ddb('0x37')]=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x38')];_0x425744['body'][_0x1ddb('0x39')]=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x31')]&&_0x326976[_0x1ddb('0x30')][_0x1ddb('0x31')]['fields']?_0x326976['queryResult'][_0x1ddb('0x31')]['fields'][_0x1ddb('0x33')]['boolValue']:![];_0x425744[_0x1ddb('0xb')][_0x1ddb('0x3a')]=_0x326976['queryResult']['intent']['name'];_0x425744['body'][_0x1ddb('0x3b')]=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x3c')][_0x1ddb('0x3d')];_0x425744[_0x1ddb('0xb')][_0x1ddb('0x3e')]=_0x326976['queryResult'][_0x1ddb('0x3c')]['isFallback'];_0x425744[_0x1ddb('0xb')][_0x1ddb('0x3f')]=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x40')];_0x425744[_0x1ddb('0xb')]['DIALOGFLOWV2_QUERYTEXT']=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x41')];_0x425744[_0x1ddb('0xb')][_0x1ddb('0x42')]=_0x326976[_0x1ddb('0x30')][_0x1ddb('0x43')];_0x54ab29[_0x1ddb('0x44')]=_0x1ddb('0x2f');_0x54ab29[_0x1ddb('0x45')]=JSON[_0x1ddb('0x13')](_0x477fc7);var _0x410ab4=[];for(var _0x308446=0x0;_0x308446<_0x477fc7[_0x1ddb('0x2e')];_0x308446++){var _0x26fb57=_0x477fc7[_0x308446];if(_0x26fb57&&_0x26fb57[_0x1ddb('0x30')]&&_0x26fb57[_0x1ddb('0x30')][_0x1ddb('0x46')]){_0x410ab4[_0x1ddb('0x47')](createMessage(_0x1d2ece,_0x5209ec,_0x54ab29,_0x26fb57[_0x1ddb('0x30')][_0x1ddb('0x46')]));}}return Promise[_0x1ddb('0x48')](_0x410ab4)[_0x1ddb('0xe')](function(){if(_0x4f5ba8){_0x257814['next']();}else{_0x257814[_0x1ddb('0x29')]();}})[_0x1ddb('0x11')](function(_0x9ead5f){logger[_0x1ddb('0x12')](_0x1ddb('0x10'),_0x1d2ece,JSON[_0x1ddb('0x13')](_0x9ead5f));_0x257814[_0x1ddb('0x19')]();});}})[_0x1ddb('0x11')](function(_0x1374de){logger[_0x1ddb('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x1d2ece,_0x1374de[_0x1ddb('0x2c')],_0x1374de[_0x1ddb('0x49')]);_0x257814[_0x1ddb('0x19')]();});}}catch(_0x1c7461){logger[_0x1ddb('0x12')](_0x1ddb('0x10'),_0x1d2ece,JSON['stringify'](_0x1c7461));_0x257814['stop']();}};};
\ No newline at end of file
+var _0xb6a5=['fields','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','push','all','next','catch','stack','lodash','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','error','stringify','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','upperFirst','AccountId','account','InteractionId','created','isEmpty','getMustacheRender','info','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','message','length','diagnosticInfo','queryResult'];(function(_0x783834,_0x38c810){var _0x22055f=function(_0x6a6998){while(--_0x6a6998){_0x783834['push'](_0x783834['shift']());}};_0x22055f(++_0x38c810);}(_0xb6a5,0xac));var _0x5b6a=function(_0x46b8d3,_0x37f6bb){_0x46b8d3=_0x46b8d3-0x0;var _0x1082dc=_0xb6a5[_0x46b8d3];return _0x1082dc;};'use strict';var _=require(_0x5b6a('0x0'));var dialogflow=require(_0x5b6a('0x1'));var md5=require(_0x5b6a('0x2'));var moment=require(_0x5b6a('0x3'));var Promise=require(_0x5b6a('0x4'));var logger=require('../../../../config/logger')(_0x5b6a('0x5'));var utils=require(_0x5b6a('0x6'));var rpc={'chatMessage':require(_0x5b6a('0x7')),'openchannelMessage':require(_0x5b6a('0x8')),'mailMessage':require(_0x5b6a('0x9')),'smsMessage':require(_0x5b6a('0xa')),'faxMessage':require(_0x5b6a('0xb')),'whatsappMessage':require(_0x5b6a('0xc'))};function createMessage(_0x19a785,_0x3175f4,_0x495114,_0x225456){return new Promise(function(_0x2d0597,_0x23c86c){var _0x24368f=_['clone'](_0x495114);_0x24368f[_0x5b6a('0xd')]=_0x225456;return rpc[_0x3175f4+_0x5b6a('0xe')][_0x5b6a('0xf')](_0x24368f)[_0x5b6a('0x10')](function(){logger['info'](_0x5b6a('0x11'),_0x19a785,_0x24368f[_0x5b6a('0xd')]);_0x2d0597();})['catch'](function(_0x36cff1){logger[_0x5b6a('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x19a785,JSON[_0x5b6a('0x13')](_0x36cff1));_0x23c86c(_0x36cff1);});});}exports['consequence']=function(_0x56ec2b,_0x62ff0e){return function(_0xe9df1b){try{if(!_['isNil'](this[_0x5b6a('0x14')][_0x5b6a('0x15')])){logger['info'](_0x5b6a('0x11'),_0x56ec2b,_0x5b6a('0x16'));return _0xe9df1b['next']();}var _0x8166fa={'ContactId':this[_0x5b6a('0x17')]['id'],'sentAt':moment()[_0x5b6a('0x18')](_0x5b6a('0x19')),'direction':_0x5b6a('0x1a')};if(this['channel']==='sms'||this[_0x5b6a('0x1b')]===_0x5b6a('0x1c')){_0x8166fa['phone']=this['interaction'][_0x5b6a('0x1d')];}var _0x4f91f9=this[_0x5b6a('0x1b')];if(_0x4f91f9==='chat'){_0x8166fa['ChatWebsiteId']=this['account']['id'];}else{_0x8166fa[_[_0x5b6a('0x1e')](_0x4f91f9)+_0x5b6a('0x1f')]=this[_0x5b6a('0x20')]['id'];}_0x8166fa[_[_0x5b6a('0x1e')](_0x4f91f9)+_0x5b6a('0x21')]=this['interaction']['id'];if(this[_0x5b6a('0x14')][_0x5b6a('0x22')]){var _0x359621=_0x62ff0e[0x4];if(!_[_0x5b6a('0x23')](_0x359621)){_0x8166fa[_0x5b6a('0xd')]=utils[_0x5b6a('0x24')](_0x359621,this);return rpc[_0x4f91f9+_0x5b6a('0xe')][_0x5b6a('0xf')](_0x8166fa)[_0x5b6a('0x10')](function(_0x5a4c5d){logger[_0x5b6a('0x25')]('[%s][DIALOGFLOWV2]\x20%s',_0x56ec2b,_0x8166fa[_0x5b6a('0xd')]);})['catch'](function(_0x173a16){logger['error'](_0x5b6a('0x11'),_0x56ec2b,JSON['stringify'](_0x173a16));})[_0x5b6a('0x26')](function(){logger[_0x5b6a('0x25')](_0x5b6a('0x27'),_0x56ec2b);_0xe9df1b[_0x5b6a('0x28')]();});}else{logger[_0x5b6a('0x25')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x56ec2b);_0xe9df1b[_0x5b6a('0x28')]();}}else{var _0x2de619=this;var _0x361cbe=_0x62ff0e[0x2][_0x5b6a('0x29')](/\\n/g,'\x0a');var _0x36b9c0={'credentials':{'private_key':_0x361cbe,'client_email':_0x62ff0e[0x1]}};var _0x5b59ab=new dialogflow[(_0x5b6a('0x2a'))](_0x36b9c0);var _0xce306=_0x5b59ab['sessionPath'](_0x62ff0e[0x0],md5(_0x2de619[_0x5b6a('0x14')]['id']));var _0xabee99={'session':_0xce306,'queryInput':{'text':{'text':_0x2de619[_0x5b6a('0x2b')][_0x5b6a('0xd')],'languageCode':_0x62ff0e[0x3]||'en'}}};return _0x5b59ab['detectIntent'](_0xabee99)[_0x5b6a('0x10')](function(_0x34d679){if(_0x34d679&&_0x34d679[_0x5b6a('0x2c')]){_0x2de619[_0x5b6a('0xd')]['dialogflowV2']=_0x34d679;var _0x2c3b97=_0x34d679[0x0];var _0xabefd4=_0x2c3b97['queryResult'][_0x5b6a('0x2d')]&&_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x2d')][_0x5b6a('0x2f')]?_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x2d')][_0x5b6a('0x2f')]['end_conversation'][_0x5b6a('0x30')]:![];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x31')]=_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x32')];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x33')]=_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x34')];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x35')]=_0x2c3b97['queryResult'][_0x5b6a('0x2d')]&&_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x2d')][_0x5b6a('0x2f')]?_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x2d')][_0x5b6a('0x2f')][_0x5b6a('0x36')][_0x5b6a('0x30')]:![];_0x2de619['body'][_0x5b6a('0x37')]=_0x2c3b97['queryResult'][_0x5b6a('0x38')][_0x5b6a('0x39')];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x3a')]=_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x38')][_0x5b6a('0x3b')];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x3c')]=_0x2c3b97['queryResult'][_0x5b6a('0x38')]['isFallback'];_0x2de619['body']['DIALOGFLOWV2_LANGUAGECODE']=_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x3d')];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x3e')]=_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x3f')];_0x2de619[_0x5b6a('0xd')][_0x5b6a('0x40')]=_0x2c3b97[_0x5b6a('0x2e')][_0x5b6a('0x41')];_0x8166fa[_0x5b6a('0x42')]='dialogflowV2';_0x8166fa['providerResponse']=JSON[_0x5b6a('0x13')](_0x34d679);var _0x33124c=[];for(var _0x5f1be7=0x0;_0x5f1be7<_0x34d679[_0x5b6a('0x2c')];_0x5f1be7++){var _0x52213f=_0x34d679[_0x5f1be7];if(_0x52213f&&_0x52213f[_0x5b6a('0x2e')]&&_0x52213f['queryResult'][_0x5b6a('0x43')]){_0x33124c[_0x5b6a('0x44')](createMessage(_0x56ec2b,_0x4f91f9,_0x8166fa,_0x52213f[_0x5b6a('0x2e')][_0x5b6a('0x43')]));}}return Promise[_0x5b6a('0x45')](_0x33124c)['then'](function(){if(_0xabefd4){_0xe9df1b[_0x5b6a('0x46')]();}else{_0xe9df1b['stop']();}})[_0x5b6a('0x47')](function(_0x4994b5){logger[_0x5b6a('0x12')](_0x5b6a('0x11'),_0x56ec2b,JSON['stringify'](_0x4994b5));_0xe9df1b[_0x5b6a('0x46')]();});}})['catch'](function(_0x137628){logger[_0x5b6a('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x56ec2b,_0x137628[_0x5b6a('0x2b')],_0x137628[_0x5b6a('0x48')]);_0xe9df1b['next']();});}}catch(_0x131b88){logger[_0x5b6a('0x12')](_0x5b6a('0x11'),_0x56ec2b,JSON[_0x5b6a('0x13')](_0x131b88));_0xe9df1b['stop']();}};};
\ No newline at end of file
index 4d24eee..91c839b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc5e=['stringify','validate','html-to-text','./utils','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','stop','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','message'];(function(_0x547533,_0x870c79){var _0x12eac2=function(_0x4cce67){while(--_0x4cce67){_0x547533['push'](_0x547533['shift']());}};_0x12eac2(++_0x870c79);}(_0xfc5e,0x69));var _0xefc5=function(_0x52621d,_0x13c4df){_0x52621d=_0x52621d-0x0;var _0x376f44=_0xfc5e[_0x52621d];return _0x376f44;};'use strict';var schema=require(_0xefc5('0x0'));var _=require('lodash');var htmlToText=require(_0xefc5('0x1'));var utils=require(_0xefc5('0x2'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0xefc5('0x3'),'required':!![],'message':_0xefc5('0x4')},'priorityTrue':{'type':_0xefc5('0x5'),'message':_0xefc5('0x6')},'priorityFalse':{'type':_0xefc5('0x5'),'message':_0xefc5('0x7')}});exports[_0xefc5('0x8')]=function(_0x34aa76,_0x2042c0){return function(_0xb6e3a){try{var _0x49c397={'condition':htmlToText['fromString'](utils[_0xefc5('0x9')](_0x2042c0[0x0],this),{'wordwrap':![]})[_0xefc5('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2042c0[0x1],'priorityFalse':_0x2042c0[0x2]};var _0x2f98ab=gotoif[_0xefc5('0x0')](_0x49c397,{'typecast':!![]});if(_0x2f98ab[_0xefc5('0xb')]){logger[_0xefc5('0xc')](_0xefc5('0xd'),_0x34aa76,_[_0xefc5('0xe')](_0x2f98ab,'message')['join'](',\x20'));_0xb6e3a[_0xefc5('0xf')]();}else{try{var _0x2945f2=eval('('+_0x49c397['condition']+')');var _0x157b84=_0x2945f2?_0x49c397[_0xefc5('0x10')]:_0x49c397[_0xefc5('0x11')];logger[_0xefc5('0x12')](_0xefc5('0x13'),_0x34aa76,_0x49c397['condition'],_0x2945f2,_0x157b84||_0xefc5('0x14'));if(_0x157b84){var _0xde1f90=_[_0xefc5('0x15')](_0xb6e3a[_0xefc5('0x16')](),{'p':_0x157b84});if(_0xde1f90>=0x0){logger[_0xefc5('0x12')](_0xefc5('0x17'),_0x34aa76,_0x157b84||_0xefc5('0x14'),_0xde1f90);_0xb6e3a[_0xefc5('0x14')](_0xde1f90);}else{logger[_0xefc5('0x12')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x34aa76,_0x157b84||'next');_0xb6e3a[_0xefc5('0xf')]();}}else{_0xb6e3a[_0xefc5('0x14')]();}}catch(_0x4be39e){logger[_0xefc5('0xc')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x34aa76,_0x4be39e[_0xefc5('0x18')]);_0xb6e3a[_0xefc5('0xf')]();}}}catch(_0x17db3d){logger[_0xefc5('0xc')](_0xefc5('0xd'),_0x34aa76,JSON[_0xefc5('0x19')](_0x17db3d));_0xb6e3a[_0xefc5('0xf')]();}};};
\ No newline at end of file
+var _0x2536=['[%s][GOTOIF]\x20%s','message','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','length','error'];(function(_0x2f8144,_0xbfd659){var _0x2a97bd=function(_0x55d133){while(--_0x55d133){_0x2f8144['push'](_0x2f8144['shift']());}};_0x2a97bd(++_0xbfd659);}(_0x2536,0xc2));var _0x6253=function(_0x2bcc3b,_0x2f6cb5){_0x2bcc3b=_0x2bcc3b-0x0;var _0x38f336=_0x2536[_0x2bcc3b];return _0x38f336;};'use strict';var schema=require(_0x6253('0x0'));var _=require(_0x6253('0x1'));var htmlToText=require(_0x6253('0x2'));var utils=require(_0x6253('0x3'));var logger=require(_0x6253('0x4'))('routing');var gotoif=schema({'condition':{'type':_0x6253('0x5'),'required':!![],'message':_0x6253('0x6')},'priorityTrue':{'type':_0x6253('0x7'),'message':_0x6253('0x8')},'priorityFalse':{'type':_0x6253('0x7'),'message':_0x6253('0x9')}});exports[_0x6253('0xa')]=function(_0x3142f9,_0x19b70e){return function(_0x1f07a2){try{var _0x2ac0fc={'condition':htmlToText[_0x6253('0xb')](utils[_0x6253('0xc')](_0x19b70e[0x0],this),{'wordwrap':![]})[_0x6253('0xd')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x19b70e[0x1],'priorityFalse':_0x19b70e[0x2]};var _0x3895fe=gotoif['validate'](_0x2ac0fc,{'typecast':!![]});if(_0x3895fe[_0x6253('0xe')]){logger[_0x6253('0xf')](_0x6253('0x10'),_0x3142f9,_['map'](_0x3895fe,_0x6253('0x11'))['join'](',\x20'));_0x1f07a2[_0x6253('0x12')]();}else{try{var _0x5d58d0=eval('('+_0x2ac0fc[_0x6253('0x13')]+')');var _0x4dc870=_0x5d58d0?_0x2ac0fc[_0x6253('0x14')]:_0x2ac0fc[_0x6253('0x15')];logger[_0x6253('0x16')](_0x6253('0x17'),_0x3142f9,_0x2ac0fc[_0x6253('0x13')],_0x5d58d0,_0x4dc870||_0x6253('0x18'));if(_0x4dc870){var _0xa385c6=_[_0x6253('0x19')](_0x1f07a2[_0x6253('0x1a')](),{'p':_0x4dc870});if(_0xa385c6>=0x0){logger[_0x6253('0x16')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x3142f9,_0x4dc870||'next',_0xa385c6);_0x1f07a2[_0x6253('0x18')](_0xa385c6);}else{logger[_0x6253('0x16')](_0x6253('0x1b'),_0x3142f9,_0x4dc870||'next');_0x1f07a2[_0x6253('0x12')]();}}else{_0x1f07a2['next']();}}catch(_0x4734dc){logger['error'](_0x6253('0x1c'),_0x3142f9,_0x4734dc[_0x6253('0x11')]);_0x1f07a2['stop']();}}}catch(_0x23bcff){logger[_0x6253('0xf')](_0x6253('0x10'),_0x3142f9,JSON[_0x6253('0x1d')](_0x23bcff));_0x1f07a2[_0x6253('0x12')]();}};};
\ No newline at end of file
index 8f18db3..f0f7dc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9024=['[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','map','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','next'];(function(_0xc1a4cf,_0x17141b){var _0x2930d1=function(_0x2e6e7a){while(--_0x2e6e7a){_0xc1a4cf['push'](_0xc1a4cf['shift']());}};_0x2930d1(++_0x17141b);}(_0x9024,0xf2));var _0x4902=function(_0x251899,_0x3ca5af){_0x251899=_0x251899-0x0;var _0x4285ea=_0x9024[_0x251899];return _0x4285ea;};'use strict';var schema=require(_0x4902('0x0'));var _=require('lodash');var logger=require(_0x4902('0x1'))(_0x4902('0x2'));var gotop=schema({'priority':{'type':_0x4902('0x3'),'required':!![],'message':_0x4902('0x4')}});exports[_0x4902('0x5')]=function(_0x22a922,_0x36fd9a){return function(_0x5a728c){try{var _0x4e6265={'priority':_0x36fd9a[0x0]};var _0x630b23=gotop[_0x4902('0x0')](_0x4e6265,{'typecast':!![]});if(_0x630b23[_0x4902('0x6')]){logger[_0x4902('0x7')](_0x4902('0x8'),_0x22a922,_[_0x4902('0x9')](_0x630b23,'message')[_0x4902('0xa')](',\x20'));_0x5a728c[_0x4902('0xb')]();}else{logger[_0x4902('0xc')](_0x4902('0xd'),_0x22a922,_0x4e6265[_0x4902('0xe')]);if(_0x4e6265[_0x4902('0xe')]){var _0x5070e3=_[_0x4902('0xf')](_0x5a728c[_0x4902('0x10')](),{'p':_0x4e6265[_0x4902('0xe')]});if(_0x5070e3>=0x0){logger['info']('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x22a922,_0x4e6265[_0x4902('0xe')]||_0x4902('0x11'),_0x5070e3);_0x5a728c[_0x4902('0x11')](_0x5070e3);}else{logger[_0x4902('0xc')](_0x4902('0x12'),_0x22a922,_0x4e6265[_0x4902('0xe')]||_0x4902('0x11'));_0x5a728c[_0x4902('0xb')]();}}else{_0x5a728c[_0x4902('0x11')]();}}}catch(_0x4f86d7){logger[_0x4902('0x7')]('[%s][GOTOP]\x20%s',_0x22a922,JSON[_0x4902('0x13')](_0x4f86d7));_0x5a728c[_0x4902('0xb')]();}};};
\ No newline at end of file
+var _0x08f2=['findIndex','rules','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stringify','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','message','stop','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0x5d6482,_0x1c9b00){var _0x32e681=function(_0x398459){while(--_0x398459){_0x5d6482['push'](_0x5d6482['shift']());}};_0x32e681(++_0x1c9b00);}(_0x08f2,0x8e));var _0x208f=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x08f2[_0x17d9e3];return _0x14192d;};'use strict';var schema=require('validate');var _=require('lodash');var logger=require(_0x208f('0x0'))(_0x208f('0x1'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x208f('0x2')}});exports['consequence']=function(_0x35e05e,_0x3042c5){return function(_0x584485){try{var _0x3000df={'priority':_0x3042c5[0x0]};var _0x516bb7=gotop[_0x208f('0x3')](_0x3000df,{'typecast':!![]});if(_0x516bb7[_0x208f('0x4')]){logger[_0x208f('0x5')](_0x208f('0x6'),_0x35e05e,_['map'](_0x516bb7,_0x208f('0x7'))['join'](',\x20'));_0x584485[_0x208f('0x8')]();}else{logger['info'](_0x208f('0x9'),_0x35e05e,_0x3000df[_0x208f('0xa')]);if(_0x3000df[_0x208f('0xa')]){var _0x5e163e=_[_0x208f('0xb')](_0x584485[_0x208f('0xc')](),{'p':_0x3000df[_0x208f('0xa')]});if(_0x5e163e>=0x0){logger[_0x208f('0xd')](_0x208f('0xe'),_0x35e05e,_0x3000df[_0x208f('0xa')]||_0x208f('0xf'),_0x5e163e);_0x584485[_0x208f('0xf')](_0x5e163e);}else{logger['info']('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x35e05e,_0x3000df[_0x208f('0xa')]||_0x208f('0xf'));_0x584485['stop']();}}else{_0x584485[_0x208f('0xf')]();}}}catch(_0x3be6e6){logger['error'](_0x208f('0x6'),_0x35e05e,JSON[_0x208f('0x10')](_0x3be6e6));_0x584485[_0x208f('0x8')]();}};};
\ No newline at end of file
index b48bff7..fab38f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcfc=['lodash','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','contact','channel','ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','create','then','info','body','next','catch','[%s][MESSAGE]\x20%s','stringify','stop'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0xdcfc,0x1c8));var _0xcdcf=function(_0x4e022b,_0x27c45e){_0x4e022b=_0x4e022b-0x0;var _0x278ece=_0xdcfc[_0x4e022b];return _0x278ece;};'use strict';var _=require(_0xcdcf('0x0'));var utils=require(_0xcdcf('0x1'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xcdcf('0x2')),'mailMessage':require(_0xcdcf('0x3')),'smsMessage':require(_0xcdcf('0x4')),'faxMessage':require(_0xcdcf('0x5')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xcdcf('0x6')]=function(_0x1d7037,_0x4dd6d7){return function(_0x309910){try{var _0x4b49e4={'body':utils['getMustacheRender'](_0x4dd6d7[0x0],this),'ContactId':this[_0xcdcf('0x7')]['id']};if(this[_0xcdcf('0x8')]==='chat'){_0x4b49e4[_0xcdcf('0x9')]=this[_0xcdcf('0xa')]['id'];}else{_0x4b49e4[_[_0xcdcf('0xb')](this[_0xcdcf('0x8')])+'AccountId']=this[_0xcdcf('0xa')]['id'];}_0x4b49e4[_[_0xcdcf('0xb')](this[_0xcdcf('0x8')])+_0xcdcf('0xc')]=this[_0xcdcf('0xd')]['id'];if(rpc[this[_0xcdcf('0x8')]+_0xcdcf('0xe')]){return rpc[this[_0xcdcf('0x8')]+'Message'][_0xcdcf('0xf')](_0x4b49e4)[_0xcdcf('0x10')](function(_0x5b12e1){logger[_0xcdcf('0x11')]('[%s][MESSAGE]\x20%s',_0x1d7037,_0x4b49e4[_0xcdcf('0x12')]);_0x309910[_0xcdcf('0x13')]();})[_0xcdcf('0x14')](function(_0xeb3218){logger['error'](_0xcdcf('0x15'),_0x1d7037,JSON[_0xcdcf('0x16')](_0xeb3218));_0x309910[_0xcdcf('0x17')]();});}}catch(_0xd1f501){logger['error'](_0xcdcf('0x15'),_0x1d7037,JSON[_0xcdcf('0x16')](_0xd1f501));_0x309910[_0xcdcf('0x17')]();}};};
\ No newline at end of file
+var _0x6d40=['./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','chat','ChatWebsiteId','account','upperFirst','channel','AccountId','InteractionId','interaction','Message','create','then','info','next','error','[%s][MESSAGE]\x20%s','stringify','stop','lodash'];(function(_0x1966c6,_0x2c3a4e){var _0x54959c=function(_0x215936){while(--_0x215936){_0x1966c6['push'](_0x1966c6['shift']());}};_0x54959c(++_0x2c3a4e);}(_0x6d40,0x1ec));var _0x06d4=function(_0x4d9794,_0x526852){_0x4d9794=_0x4d9794-0x0;var _0x5effde=_0x6d40[_0x4d9794];return _0x5effde;};'use strict';var _=require(_0x06d4('0x0'));var utils=require(_0x06d4('0x1'));var logger=require('../../../../config/logger')(_0x06d4('0x2'));var rpc={'chatMessage':require(_0x06d4('0x3')),'openchannelMessage':require(_0x06d4('0x4')),'mailMessage':require(_0x06d4('0x5')),'smsMessage':require(_0x06d4('0x6')),'faxMessage':require(_0x06d4('0x7')),'whatsappMessage':require(_0x06d4('0x8'))};exports[_0x06d4('0x9')]=function(_0x518698,_0xa29be3){return function(_0x41b21c){try{var _0x36f174={'body':utils[_0x06d4('0xa')](_0xa29be3[0x0],this),'ContactId':this[_0x06d4('0xb')]['id']};if(this['channel']===_0x06d4('0xc')){_0x36f174[_0x06d4('0xd')]=this[_0x06d4('0xe')]['id'];}else{_0x36f174[_[_0x06d4('0xf')](this[_0x06d4('0x10')])+_0x06d4('0x11')]=this[_0x06d4('0xe')]['id'];}_0x36f174[_[_0x06d4('0xf')](this[_0x06d4('0x10')])+_0x06d4('0x12')]=this[_0x06d4('0x13')]['id'];if(rpc[this[_0x06d4('0x10')]+_0x06d4('0x14')]){return rpc[this[_0x06d4('0x10')]+_0x06d4('0x14')][_0x06d4('0x15')](_0x36f174)[_0x06d4('0x16')](function(_0x42f178){logger[_0x06d4('0x17')]('[%s][MESSAGE]\x20%s',_0x518698,_0x36f174['body']);_0x41b21c[_0x06d4('0x18')]();})['catch'](function(_0x19a6d9){logger[_0x06d4('0x19')](_0x06d4('0x1a'),_0x518698,JSON['stringify'](_0x19a6d9));_0x41b21c['stop']();});}}catch(_0x4ee146){logger[_0x06d4('0x19')](_0x06d4('0x1a'),_0x518698,JSON[_0x06d4('0x1b')](_0x4ee146));_0x41b21c[_0x06d4('0x1c')]();}};};
\ No newline at end of file
index 64ff7f6..b61dcc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe949=['../../../../config/logger','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','./utils'];(function(_0x1e54a7,_0x4e7ea3){var _0x41d78e=function(_0xbf0801){while(--_0xbf0801){_0x1e54a7['push'](_0x1e54a7['shift']());}};_0x41d78e(++_0x4e7ea3);}(_0xe949,0xe9));var _0x9e94=function(_0x1d5a37,_0x58d2cf){_0x1d5a37=_0x1d5a37-0x0;var _0x7c44ba=_0xe949[_0x1d5a37];return _0x7c44ba;};'use strict';var utils=require(_0x9e94('0x0'));var logger=require(_0x9e94('0x1'))('routing');exports[_0x9e94('0x2')]=function(_0xa32997,_0x502b6c){return function(_0x6e8a9c){try{logger[_0x9e94('0x3')](_0x9e94('0x4'),_0xa32997,utils[_0x9e94('0x5')](_0x502b6c[0x0],this));_0x6e8a9c[_0x9e94('0x6')]();}catch(_0x46aac3){logger[_0x9e94('0x7')](_0x9e94('0x4'),_0xa32997,JSON[_0x9e94('0x8')](_0x46aac3));_0x6e8a9c['stop']();}};};
\ No newline at end of file
+var _0x9462=['next','error','stop','./utils','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s'];(function(_0x27f365,_0xc973fa){var _0x499eb7=function(_0x8e21b1){while(--_0x8e21b1){_0x27f365['push'](_0x27f365['shift']());}};_0x499eb7(++_0xc973fa);}(_0x9462,0x143));var _0x2946=function(_0x447f0e,_0x48c9c0){_0x447f0e=_0x447f0e-0x0;var _0x101f14=_0x9462[_0x447f0e];return _0x101f14;};'use strict';var utils=require(_0x2946('0x0'));var logger=require(_0x2946('0x1'))(_0x2946('0x2'));exports[_0x2946('0x3')]=function(_0x3573c9,_0x417993){return function(_0x1fc4dd){try{logger['info'](_0x2946('0x4'),_0x3573c9,utils['getMustacheRender'](_0x417993[0x0],this));_0x1fc4dd[_0x2946('0x5')]();}catch(_0x4c4425){logger[_0x2946('0x6')](_0x2946('0x4'),_0x3573c9,JSON['stringify'](_0x4c4425));_0x1fc4dd[_0x2946('0x7')]();}};};
\ No newline at end of file
index 160f8dd..4bb2b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1822=['account','queue','from','joinAt','clone','capitalize','format','%sQueuesWaitingInteractions','pick','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','chat','AccountId','info','name','QueueReport','create','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','length','map','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','moment','../../../../config/logger','./strategy','defaults','redis','localhost','socket.io-emitter','queue_id'];(function(_0x36ed3c,_0x44a00a){var _0x52a2e0=function(_0x3f7af9){while(--_0x3f7af9){_0x36ed3c['push'](_0x36ed3c['shift']());}};_0x52a2e0(++_0x44a00a);}(_0x1822,0x1d4));var _0x2182=function(_0x971340,_0x402544){_0x971340=_0x971340-0x0;var _0x47e507=_0x1822[_0x971340];return _0x47e507;};'use strict';var schema=require(_0x2182('0x0'));var _=require(_0x2182('0x1'));var util=require(_0x2182('0x2'));var seqqueue=require(_0x2182('0x3'));var moment=require(_0x2182('0x4'));var Redis=require('ioredis');var config=require('../../../../config/environment');var logger=require(_0x2182('0x5'))('routing');var strategy=require(_0x2182('0x6'));config['redis']=_[_0x2182('0x7')](config[_0x2182('0x8')],{'host':_0x2182('0x9'),'port':0x18eb});var io=require(_0x2182('0xa'))(new Redis(config['redis']));var attributes=['id',_0x2182('0xb'),_0x2182('0xc'),_0x2182('0xd'),_0x2182('0xe'),_0x2182('0xf')];function emit(_0x45fd7f,_0x51aef5,_0x5978c3){io['to'](_0x45fd7f)['emit'](_0x51aef5,_0x5978c3);}function emitChannelQueueInteraction(_0x509251,_0x53c44a,_0x21a279,_0x480f8e,_0xbd87e8,_0x15bf49,_0x4bf5ed,_0x3c2285){var _0xecc71d=_[_0x2182('0x10')](_0x21a279);_0xecc71d['queue_id']=_0x3c2285;_0xecc71d[_0x2182('0xd')]=_0x53c44a;_0xecc71d[_0x2182('0xc')]=_0x480f8e;_0xecc71d['id']=_0xbd87e8;if(_0x15bf49){attributes['push'](_[_0x2182('0x11')](_0x509251)+'InteractionId');_0x4bf5ed[util[_0x2182('0x12')](_0x2182('0x13'),_0x509251)][_0xbd87e8]=_[_0x2182('0x14')](_0xecc71d,attributes);}else{delete _0x4bf5ed[util['format']('%sQueuesWaitingInteractions',_0x509251)][_0xbd87e8];}emit(util[_0x2182('0x12')]('%s:queue:%s',_0x509251,_0x53c44a),util[_0x2182('0x12')]('%s_queue_waiting_interaction:%s',_0x509251,_0x15bf49?_0x2182('0x15'):_0x2182('0x16')),_[_0x2182('0x14')](_0xecc71d,attributes));}var rpc={'openchannelQueueReport':require(_0x2182('0x17')),'mailQueueReport':require(_0x2182('0x18')),'chatQueueReport':require(_0x2182('0x19')),'smsQueueReport':require(_0x2182('0x1a')),'faxQueueReport':require(_0x2182('0x1b')),'whatsappQueueReport':require(_0x2182('0x1c'))};var queue=schema({'name':{'type':_0x2182('0x1d'),'required':!![],'message':_0x2182('0x1e')},'timeout':{'type':_0x2182('0x1f'),'message':_0x2182('0x20')}});function startRouting(_0x4b0df9,_0x5baf51,_0x5629e0,_0xdc3ec3){if(_0x4b0df9&&_0x5baf51&&_0x5629e0){_0x5baf51[_0x2182('0x21')]+=0x1;var _0x533d91={'uniqueid':_0x4b0df9,'from':_0x5629e0[_0x2182('0x22')]?_0x5629e0['body'][_0x2182('0xe')]:'','joinAt':moment()['format'](_0x2182('0x23')),'ContactId':_0x5629e0[_0x2182('0x24')]?_0x5629e0[_0x2182('0x24')]['id']:null,'ListId':_0x5629e0[_0x2182('0x25')]?_0x5629e0[_0x2182('0x25')]['id']:null};_0x533d91[_[_0x2182('0x26')](_0x5629e0[_0x2182('0x27')])+_0x2182('0x28')]=_0x5baf51['id']||null;_0x533d91[_[_0x2182('0x26')](_0x5629e0[_0x2182('0x27')])+'InteractionId']=_0x5629e0[_0x2182('0x29')]?_0x5629e0[_0x2182('0x29')]['id']:null;_0x533d91[_['upperFirst'](_0x5629e0[_0x2182('0x27')])+_0x2182('0x2a')]=_0x5629e0[_0x2182('0x2b')]?_0x5629e0['message']['id']:null;_0x533d91[_['upperFirst'](_0x5629e0['channel'])+(_0x5629e0[_0x2182('0x27')]!==_0x2182('0x2c')?_0x2182('0x2d'):'WebsiteId')]=_0x5629e0['account']?_0x5629e0[_0x2182('0xc')]['id']:null;logger[_0x2182('0x2e')](util[_0x2182('0x12')]('[%s][START:QUEUE][NAME:%s]',_0x4b0df9,_0x5baf51[_0x2182('0x2f')]));emitChannelQueueInteraction(_0x5629e0[_0x2182('0x27')],_0x5baf51[_0x2182('0x2f')],_0x533d91,_0x5629e0[_0x2182('0xc')][_0x2182('0x2f')],_0x5629e0[_0x2182('0x2b')]['id'],!![],_0xdc3ec3,_0x5baf51['id']);if(rpc[_0x5629e0['channel']+_0x2182('0x30')]){return rpc[_0x5629e0[_0x2182('0x27')]+_0x2182('0x30')][_0x2182('0x31')](_0x533d91)['catch'](function(_0x246052){logger[_0x2182('0x32')](_0x2182('0x33'));});}}}function stopRouting(_0x419b64,_0x590ed9,_0x25cc4d,_0x2f2ddf){if(_0x419b64&&_0x590ed9){_0x590ed9[_0x2182('0x21')]-=0x1;var _0x158821={'leaveAt':moment()[_0x2182('0x12')](_0x2182('0x23')),'acceptAt':moment()['format'](_0x2182('0x23')),'reason':'accepted'};logger[_0x2182('0x2e')](util['format'](_0x2182('0x34'),_0x419b64,_0x590ed9[_0x2182('0x2f')]));emitChannelQueueInteraction(_0x25cc4d[_0x2182('0x27')],_0x590ed9[_0x2182('0x2f')],_0x25cc4d[_0x2182('0x22')],_0x25cc4d[_0x2182('0xc')][_0x2182('0x2f')],_0x25cc4d[_0x2182('0x2b')]['id'],![],_0x2f2ddf,_0x590ed9['id']);if(rpc[_0x25cc4d[_0x2182('0x27')]+'QueueReport']){return rpc[_0x25cc4d[_0x2182('0x27')]+'QueueReport']['update'](_0x419b64,_0x158821)[_0x2182('0x35')](function(_0x11f2cf){logger[_0x2182('0x32')](_0x2182('0x36'));});}}}function endRouting(_0x40dddb,_0x3778f9,_0x28b4ae,_0x2bcb44){if(_0x40dddb&&_0x3778f9){_0x3778f9[_0x2182('0x21')]-=0x1;var _0x3f89b7={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()['format'](_0x2182('0x23')),'reason':_0x2182('0x37')};logger[_0x2182('0x2e')](util[_0x2182('0x12')](_0x2182('0x38'),_0x40dddb,_0x3778f9[_0x2182('0x2f')]));emitChannelQueueInteraction(_0x28b4ae['channel'],_0x3778f9[_0x2182('0x2f')],_0x28b4ae[_0x2182('0x22')],_0x28b4ae[_0x2182('0xc')]['name'],_0x28b4ae[_0x2182('0x2b')]['id'],![],_0x2bcb44);if(rpc[_0x28b4ae['channel']+_0x2182('0x30')]){return rpc[_0x28b4ae[_0x2182('0x27')]+_0x2182('0x30')][_0x2182('0x39')](_0x40dddb,_0x3f89b7)['catch'](function(_0x54d3f4){logger[_0x2182('0x32')](_0x2182('0x36'));});}}}function handleFindQueue(_0x5624cc){return function(_0xc1e559){return _0xc1e559['name']['toLowerCase']()===_0x5624cc[_0x2182('0x3a')]();};}exports['consequence']=function(_0xb47637,_0x159f16,_0x636a71,_0x3b5ba0){return function(_0x45fe69){try{var _0x23f7cb={'name':_0x159f16[0x0],'timeout':_0x159f16[0x1]};var _0x172e36=queue[_0x2182('0x0')](_0x23f7cb,{'typecast':!![]});if(_0x172e36[_0x2182('0x3b')]){logger[_0x2182('0x32')]('[%s][QUEUE]\x20%s',_0xb47637,_[_0x2182('0x3c')](_0x172e36,'message')[_0x2182('0x3d')](',\x20'));_0x45fe69[_0x2182('0x3e')]();}else{var _0x2660cd=_[_0x2182('0x3f')](_0x636a71[_0x3b5ba0['channel']+_0x2182('0x40')],handleFindQueue(_0x23f7cb[_0x2182('0x2f')]));if(_0x2660cd){startRouting(_0xb47637,_0x2660cd,_0x3b5ba0,_0x636a71);var _0x577889=(_0x2660cd[_0x2182('0x37')]||0xa)*0x3e8;var _0xc85ab5=(_0x23f7cb[_0x2182('0x37')]||0x14)*0x3e8;var _0x4538e3;if(_0x577889>_0xc85ab5){_0xc85ab5=_0x577889;}var _0x2a9321=seqqueue[_0x2182('0x41')](_0x577889);_0x2a9321['id']=_0xb47637;_0x2a9321[_0x2182('0x42')]=_0x577889;_0x2a9321[_0x2182('0x43')]=_0xc85ab5;_0x2a9321[_0x2182('0x27')]=_0x3b5ba0[_0x2182('0x27')];_0x636a71[_0x2182('0x44')][_0xb47637]['on'](_0x2182('0x45'),function(){logger[_0x2182('0x2e')](_0x2182('0x46'),_0xb47637);stopRouting(_0xb47637,_0x2660cd,_0x3b5ba0,_0x636a71);clearTimeout(_0x4538e3);_0x4538e3=undefined;_0x2a9321[_0x2182('0x47')](!![]);if(_0x636a71[_0x2182('0x44')][_0xb47637]){delete _0x636a71[_0x2182('0x44')][_0xb47637];}_0x45fe69[_0x2182('0x3e')]();});_0x636a71['rules'][_0xb47637]['on']('complete',function(){if(_0x636a71['rules'][_0xb47637]){delete _0x636a71[_0x2182('0x44')][_0xb47637];}});_0x4538e3=setTimeout(function(){logger['info'](_0x2182('0x48'),_0xb47637);endRouting(_0xb47637,_0x2660cd,_0x3b5ba0,_0x636a71);clearTimeout(_0x4538e3);_0x2a9321['close'](!![]);_0x45fe69[_0x2182('0x49')]();},_0xc85ab5);switch(_0x2660cd[_0x2182('0x4a')]){case _0x2182('0x4b'):strategy[_0x2182('0x4b')](_0x2a9321,_0x2660cd,_0x636a71,_0x3b5ba0);break;default:strategy['beepall'](_0x2a9321,_0x2660cd,_0x636a71,_0x3b5ba0);}}else{logger[_0x2182('0x32')](_0x2182('0x4c'),_0xb47637,_0x23f7cb['name']);_0x45fe69[_0x2182('0x3e')]();}}}catch(_0x113b62){console[_0x2182('0x4d')](_0x113b62);logger['error'](_0x2182('0x4e'),_0xb47637,_0x113b62[_0x2182('0x4f')]);_0x45fe69[_0x2182('0x3e')]();}};};
\ No newline at end of file
+var _0x04ec=['next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','util','seq-queue','moment','ioredis','../../../../config/environment','routing','./strategy','redis','localhost','socket.io-emitter','queue_id','account','queue','from','emit','clone','push','capitalize','InteractionId','pick','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','interaction','upperFirst','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','catch','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','QueueReport','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x04ec,0x1f2));var _0xc04e=function(_0x4a7843,_0x24f6d1){_0x4a7843=_0x4a7843-0x0;var _0x2c57fe=_0x04ec[_0x4a7843];return _0x2c57fe;};'use strict';var schema=require(_0xc04e('0x0'));var _=require('lodash');var util=require(_0xc04e('0x1'));var seqqueue=require(_0xc04e('0x2'));var moment=require(_0xc04e('0x3'));var Redis=require(_0xc04e('0x4'));var config=require(_0xc04e('0x5'));var logger=require('../../../../config/logger')(_0xc04e('0x6'));var strategy=require(_0xc04e('0x7'));config[_0xc04e('0x8')]=_['defaults'](config[_0xc04e('0x8')],{'host':_0xc04e('0x9'),'port':0x18eb});var io=require(_0xc04e('0xa'))(new Redis(config[_0xc04e('0x8')]));var attributes=['id',_0xc04e('0xb'),_0xc04e('0xc'),_0xc04e('0xd'),_0xc04e('0xe'),'joinAt'];function emit(_0x512d52,_0x433e3c,_0x3a91ab){io['to'](_0x512d52)[_0xc04e('0xf')](_0x433e3c,_0x3a91ab);}function emitChannelQueueInteraction(_0x66ba97,_0x27083c,_0x49cac7,_0x53c14c,_0x65f105,_0xbbb0e,_0x55bd70,_0xf7007e){var _0x14c6f4=_[_0xc04e('0x10')](_0x49cac7);_0x14c6f4[_0xc04e('0xb')]=_0xf7007e;_0x14c6f4[_0xc04e('0xd')]=_0x27083c;_0x14c6f4[_0xc04e('0xc')]=_0x53c14c;_0x14c6f4['id']=_0x65f105;if(_0xbbb0e){attributes[_0xc04e('0x11')](_[_0xc04e('0x12')](_0x66ba97)+_0xc04e('0x13'));_0x55bd70[util['format']('%sQueuesWaitingInteractions',_0x66ba97)][_0x65f105]=_[_0xc04e('0x14')](_0x14c6f4,attributes);}else{delete _0x55bd70[util[_0xc04e('0x15')](_0xc04e('0x16'),_0x66ba97)][_0x65f105];}emit(util[_0xc04e('0x15')](_0xc04e('0x17'),_0x66ba97,_0x27083c),util[_0xc04e('0x15')](_0xc04e('0x18'),_0x66ba97,_0xbbb0e?_0xc04e('0x19'):_0xc04e('0x1a')),_[_0xc04e('0x14')](_0x14c6f4,attributes));}var rpc={'openchannelQueueReport':require(_0xc04e('0x1b')),'mailQueueReport':require(_0xc04e('0x1c')),'chatQueueReport':require(_0xc04e('0x1d')),'smsQueueReport':require(_0xc04e('0x1e')),'faxQueueReport':require(_0xc04e('0x1f')),'whatsappQueueReport':require(_0xc04e('0x20'))};var queue=schema({'name':{'type':_0xc04e('0x21'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xc04e('0x22'),'message':_0xc04e('0x23')}});function startRouting(_0x34dbd1,_0x472e38,_0x15f447,_0x5dceca){if(_0x34dbd1&&_0x472e38&&_0x15f447){_0x472e38[_0xc04e('0x24')]+=0x1;var _0x11f85e={'uniqueid':_0x34dbd1,'from':_0x15f447[_0xc04e('0x25')]?_0x15f447[_0xc04e('0x25')][_0xc04e('0xe')]:'','joinAt':moment()[_0xc04e('0x15')](_0xc04e('0x26')),'ContactId':_0x15f447[_0xc04e('0x27')]?_0x15f447[_0xc04e('0x27')]['id']:null,'ListId':_0x15f447[_0xc04e('0x28')]?_0x15f447[_0xc04e('0x28')]['id']:null};_0x11f85e[_['upperFirst'](_0x15f447[_0xc04e('0x29')])+_0xc04e('0x2a')]=_0x472e38['id']||null;_0x11f85e[_['upperFirst'](_0x15f447[_0xc04e('0x29')])+_0xc04e('0x13')]=_0x15f447[_0xc04e('0x2b')]?_0x15f447[_0xc04e('0x2b')]['id']:null;_0x11f85e[_[_0xc04e('0x2c')](_0x15f447[_0xc04e('0x29')])+'MessageId']=_0x15f447[_0xc04e('0x2d')]?_0x15f447['message']['id']:null;_0x11f85e[_[_0xc04e('0x2c')](_0x15f447['channel'])+(_0x15f447[_0xc04e('0x29')]!==_0xc04e('0x2e')?_0xc04e('0x2f'):_0xc04e('0x30'))]=_0x15f447['account']?_0x15f447['account']['id']:null;logger[_0xc04e('0x31')](util['format'](_0xc04e('0x32'),_0x34dbd1,_0x472e38[_0xc04e('0x33')]));emitChannelQueueInteraction(_0x15f447['channel'],_0x472e38[_0xc04e('0x33')],_0x11f85e,_0x15f447[_0xc04e('0xc')]['name'],_0x15f447[_0xc04e('0x2d')]['id'],!![],_0x5dceca,_0x472e38['id']);if(rpc[_0x15f447['channel']+'QueueReport']){return rpc[_0x15f447[_0xc04e('0x29')]+'QueueReport']['create'](_0x11f85e)[_0xc04e('0x34')](function(_0x955eb5){logger[_0xc04e('0x35')](_0xc04e('0x36'));});}}}function stopRouting(_0x5c4f56,_0x1b620a,_0x5ad206,_0xa40202){if(_0x5c4f56&&_0x1b620a){_0x1b620a['waiting']-=0x1;var _0x5e8caa={'leaveAt':moment()[_0xc04e('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xc04e('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xc04e('0x37')};logger[_0xc04e('0x31')](util[_0xc04e('0x15')](_0xc04e('0x38'),_0x5c4f56,_0x1b620a[_0xc04e('0x33')]));emitChannelQueueInteraction(_0x5ad206[_0xc04e('0x29')],_0x1b620a[_0xc04e('0x33')],_0x5ad206['body'],_0x5ad206[_0xc04e('0xc')][_0xc04e('0x33')],_0x5ad206['message']['id'],![],_0xa40202,_0x1b620a['id']);if(rpc[_0x5ad206['channel']+_0xc04e('0x39')]){return rpc[_0x5ad206[_0xc04e('0x29')]+_0xc04e('0x39')][_0xc04e('0x3a')](_0x5c4f56,_0x5e8caa)[_0xc04e('0x34')](function(_0x104384){logger[_0xc04e('0x35')](_0xc04e('0x3b'));});}}}function endRouting(_0x4cc58c,_0x256b95,_0x40b060,_0x2fb057){if(_0x4cc58c&&_0x256b95){_0x256b95[_0xc04e('0x24')]-=0x1;var _0x1749eb={'leaveAt':moment()[_0xc04e('0x15')](_0xc04e('0x26')),'exitAt':moment()[_0xc04e('0x15')](_0xc04e('0x26')),'reason':_0xc04e('0x3c')};logger['info'](util[_0xc04e('0x15')](_0xc04e('0x3d'),_0x4cc58c,_0x256b95['name']));emitChannelQueueInteraction(_0x40b060[_0xc04e('0x29')],_0x256b95[_0xc04e('0x33')],_0x40b060['body'],_0x40b060['account'][_0xc04e('0x33')],_0x40b060[_0xc04e('0x2d')]['id'],![],_0x2fb057);if(rpc[_0x40b060['channel']+_0xc04e('0x39')]){return rpc[_0x40b060[_0xc04e('0x29')]+_0xc04e('0x39')]['update'](_0x4cc58c,_0x1749eb)[_0xc04e('0x34')](function(_0x136804){logger['error'](_0xc04e('0x3b'));});}}}function handleFindQueue(_0x2a8683){return function(_0xc88ca7){return _0xc88ca7[_0xc04e('0x33')][_0xc04e('0x3e')]()===_0x2a8683[_0xc04e('0x3e')]();};}exports[_0xc04e('0x3f')]=function(_0x3dad5e,_0x197054,_0x3af682,_0x44a7cc){return function(_0x1390d4){try{var _0x21c448={'name':_0x197054[0x0],'timeout':_0x197054[0x1]};var _0x5901c5=queue['validate'](_0x21c448,{'typecast':!![]});if(_0x5901c5[_0xc04e('0x40')]){logger[_0xc04e('0x35')](_0xc04e('0x41'),_0x3dad5e,_['map'](_0x5901c5,_0xc04e('0x2d'))[_0xc04e('0x42')](',\x20'));_0x1390d4[_0xc04e('0x43')]();}else{var _0x1ede8d=_['find'](_0x3af682[_0x44a7cc[_0xc04e('0x29')]+'Queues'],handleFindQueue(_0x21c448['name']));if(_0x1ede8d){startRouting(_0x3dad5e,_0x1ede8d,_0x44a7cc,_0x3af682);var _0x51e602=(_0x1ede8d[_0xc04e('0x3c')]||0xa)*0x3e8;var _0x4b003f=(_0x21c448['timeout']||0x14)*0x3e8;var _0x2e1f45;if(_0x51e602>_0x4b003f){_0x4b003f=_0x51e602;}var _0x285b1e=seqqueue[_0xc04e('0x44')](_0x51e602);_0x285b1e['id']=_0x3dad5e;_0x285b1e[_0xc04e('0x45')]=_0x51e602;_0x285b1e['qtimeout']=_0x4b003f;_0x285b1e['channel']=_0x44a7cc[_0xc04e('0x29')];_0x3af682[_0xc04e('0x46')][_0x3dad5e]['on'](_0xc04e('0x47'),function(){logger[_0xc04e('0x31')](_0xc04e('0x48'),_0x3dad5e);stopRouting(_0x3dad5e,_0x1ede8d,_0x44a7cc,_0x3af682);clearTimeout(_0x2e1f45);_0x2e1f45=undefined;_0x285b1e[_0xc04e('0x49')](!![]);if(_0x3af682[_0xc04e('0x46')][_0x3dad5e]){delete _0x3af682[_0xc04e('0x46')][_0x3dad5e];}_0x1390d4[_0xc04e('0x43')]();});_0x3af682['rules'][_0x3dad5e]['on'](_0xc04e('0x4a'),function(){if(_0x3af682[_0xc04e('0x46')][_0x3dad5e]){delete _0x3af682[_0xc04e('0x46')][_0x3dad5e];}});_0x2e1f45=setTimeout(function(){logger[_0xc04e('0x31')](_0xc04e('0x4b'),_0x3dad5e);endRouting(_0x3dad5e,_0x1ede8d,_0x44a7cc,_0x3af682);clearTimeout(_0x2e1f45);_0x285b1e[_0xc04e('0x49')](!![]);_0x1390d4[_0xc04e('0x4c')]();},_0x4b003f);switch(_0x1ede8d[_0xc04e('0x4d')]){case _0xc04e('0x4e'):strategy['rrmemory'](_0x285b1e,_0x1ede8d,_0x3af682,_0x44a7cc);break;default:strategy[_0xc04e('0x4f')](_0x285b1e,_0x1ede8d,_0x3af682,_0x44a7cc);}}else{logger[_0xc04e('0x35')](_0xc04e('0x50'),_0x3dad5e,_0x21c448['name']);_0x1390d4[_0xc04e('0x43')]();}}}catch(_0x7ed36e){console[_0xc04e('0x51')](_0x7ed36e);logger[_0xc04e('0x35')](_0xc04e('0x41'),_0x3dad5e,_0x7ed36e['stack']);_0x1390d4[_0xc04e('0x43')]();}};};
\ No newline at end of file
index 81c1520..a3998a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['squeue','agent','routing','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','[%s][AGENT]\x20try\x20with\x20%s','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','realtime','channel','agents','busy','busyQueue','saveWaitingNotification','showNotification','forcedOwnership',':FORCED','debug','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','writeLog','STOP','TIMEOUT','exports','uuid','./util','notificationId'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xb821,0xa7));var _0x1b82=function(_0x1dbb81,_0xb290d9){_0x1dbb81=_0x1dbb81-0x0;var _0x2cf80e=_0xb821[_0x1dbb81];return _0x2cf80e;};'use strict';var _=require('lodash');var uuid=require(_0x1b82('0x0'));var util=require(_0x1b82('0x1'));var logger=require('../../../../../config/logger')('routing');var Agent=function(_0xbab478,_0x578a10,_0x4b1809,_0x3b1d14){this[_0x1b82('0x2')]=uuid['v4']();this[_0x1b82('0x3')]=_0xbab478;this[_0x1b82('0x4')]=_0x578a10;this['realtime']=_0x4b1809;this[_0x1b82('0x5')]=_0x3b1d14;this[_0x1b82('0x3')][_0x1b82('0x6')](this[_0x1b82('0x7')][_0x1b82('0x8')](this),this[_0x1b82('0x9')][_0x1b82('0x8')](this));this[_0x1b82('0x3')]['on'](_0x1b82('0xa'),this['handleTimeout'][_0x1b82('0x8')](this));this[_0x1b82('0x3')]['on'](_0x1b82('0xb'),this[_0x1b82('0xc')][_0x1b82('0x8')](this));};Agent[_0x1b82('0xd')][_0x1b82('0x6')]=function(){this[_0x1b82('0x3')]['push'](this[_0x1b82('0x7')][_0x1b82('0x8')](this),this[_0x1b82('0x9')][_0x1b82('0x8')](this));};Agent['prototype'][_0x1b82('0xc')]=function(){this['handleTimeout'](!![]);};Agent['prototype'][_0x1b82('0x7')]=function(){logger['debug'](_0x1b82('0xe'),this[_0x1b82('0x3')]['id'],this['agent']['id']);if(_[_0x1b82('0xf')](this['realtime']['agents'][this[_0x1b82('0x4')]['id']])){logger['debug'](_0x1b82('0x10'),this[_0x1b82('0x3')]['id'],this[_0x1b82('0x4')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this[_0x1b82('0x5')]['forcedOwnership']||util[_0x1b82('0x11')](this[_0x1b82('0x3')]['id'],this[_0x1b82('0x12')]['agents'][this[_0x1b82('0x4')]['id']],this[_0x1b82('0x3')][_0x1b82('0x13')],![])){this[_0x1b82('0x12')][_0x1b82('0x14')][this['agent']['id']][_0x1b82('0x15')]=!![];this[_0x1b82('0x12')][_0x1b82('0x14')][this[_0x1b82('0x4')]['id']][_0x1b82('0x16')]=undefined;util[_0x1b82('0x17')](this[_0x1b82('0x12')],this['routing'],this[_0x1b82('0x4')],this[_0x1b82('0x3')]['channel']);util[_0x1b82('0x18')](this[_0x1b82('0x2')],this[_0x1b82('0x3')]['id'],this['realtime'][_0x1b82('0x14')][this['agent']['id']],null,this['routing']);util['writeLog'](this[_0x1b82('0x3')]['id'],this[_0x1b82('0x12')][_0x1b82('0x14')][this[_0x1b82('0x4')]['id']],'RINGING'+(this[_0x1b82('0x5')][_0x1b82('0x19')]?_0x1b82('0x1a'):''));}else{logger[_0x1b82('0x1b')](_0x1b82('0x1c'),this[_0x1b82('0x3')]['id'],this[_0x1b82('0x4')]['id']);setTimeout(this[_0x1b82('0x6')][_0x1b82('0x8')](this),0x3e8);}}};Agent[_0x1b82('0xd')][_0x1b82('0x9')]=function(_0x37275f){if(_[_0x1b82('0xf')](this['realtime'][_0x1b82('0x14')][this[_0x1b82('0x4')]['id']])){return logger[_0x1b82('0x1b')](_0x1b82('0x10'),this[_0x1b82('0x3')]['id'],this[_0x1b82('0x4')]['id']);}else{logger[_0x1b82('0x1b')](_0x1b82('0x1d'),this[_0x1b82('0x3')]['id'],this[_0x1b82('0x4')]['id']);util['hideNotification'](this[_0x1b82('0x2')],this[_0x1b82('0x3')]['id'],this[_0x1b82('0x12')][_0x1b82('0x14')][this['agent']['id']],null,this[_0x1b82('0x5')]);this[_0x1b82('0x12')]['agents'][this[_0x1b82('0x4')]['id']][_0x1b82('0x15')]=![];this[_0x1b82('0x12')]['agents'][this['agent']['id']][_0x1b82('0x16')]=undefined;util['removeWaitingNotification'](this['realtime'],this[_0x1b82('0x5')],this[_0x1b82('0x4')],this[_0x1b82('0x3')]['channel']);util[_0x1b82('0x1e')](this[_0x1b82('0x3')]['id'],this[_0x1b82('0x12')][_0x1b82('0x14')][this['agent']['id']],_0x37275f?_0x1b82('0x1f'):_0x1b82('0x20'));}if(!_0x37275f){setTimeout(this[_0x1b82('0x6')]['bind'](this),0x3e8);}};function agent(_0x48fd54,_0x21e859,_0x5d7e6a,_0x1d3e68){return new Agent(_0x48fd54,_0x21e859,_0x5d7e6a,_0x1d3e68);}module[_0x1b82('0x21')]=agent;
\ No newline at end of file
+var _0x7dfd=['notificationId','squeue','agent','realtime','push','handleRun','handleTimeout','bind','timeout','drained','prototype','handleDrained','debug','[%s][AGENT]\x20try\x20with\x20%s','isNil','forcedOwnership','isAgentAvailable','agents','channel','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','removeWaitingNotification','TIMEOUT','lodash','uuid','./util','../../../../../config/logger','routing'];(function(_0x5a98da,_0x3dd084){var _0x3bfe54=function(_0x426dfd){while(--_0x426dfd){_0x5a98da['push'](_0x5a98da['shift']());}};_0x3bfe54(++_0x3dd084);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd7df('0x0'));var uuid=require(_0xd7df('0x1'));var util=require(_0xd7df('0x2'));var logger=require(_0xd7df('0x3'))(_0xd7df('0x4'));var Agent=function(_0x28c3c9,_0x176418,_0x38eee7,_0x3ef231){this[_0xd7df('0x5')]=uuid['v4']();this[_0xd7df('0x6')]=_0x28c3c9;this[_0xd7df('0x7')]=_0x176418;this[_0xd7df('0x8')]=_0x38eee7;this[_0xd7df('0x4')]=_0x3ef231;this[_0xd7df('0x6')][_0xd7df('0x9')](this[_0xd7df('0xa')]['bind'](this),this[_0xd7df('0xb')][_0xd7df('0xc')](this));this[_0xd7df('0x6')]['on'](_0xd7df('0xd'),this['handleTimeout'][_0xd7df('0xc')](this));this['squeue']['on'](_0xd7df('0xe'),this['handleDrained'][_0xd7df('0xc')](this));};Agent[_0xd7df('0xf')][_0xd7df('0x9')]=function(){this[_0xd7df('0x6')][_0xd7df('0x9')](this[_0xd7df('0xa')][_0xd7df('0xc')](this),this[_0xd7df('0xb')][_0xd7df('0xc')](this));};Agent[_0xd7df('0xf')][_0xd7df('0x10')]=function(){this[_0xd7df('0xb')](!![]);};Agent[_0xd7df('0xf')][_0xd7df('0xa')]=function(){logger[_0xd7df('0x11')](_0xd7df('0x12'),this[_0xd7df('0x6')]['id'],this['agent']['id']);if(_[_0xd7df('0x13')](this[_0xd7df('0x8')]['agents'][this[_0xd7df('0x7')]['id']])){logger[_0xd7df('0x11')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xd7df('0x6')]['id'],this[_0xd7df('0x7')]['id']);setTimeout(this[_0xd7df('0x9')]['bind'](this),0x3e8);}else{if(this[_0xd7df('0x4')][_0xd7df('0x14')]||util[_0xd7df('0x15')](this['squeue']['id'],this[_0xd7df('0x8')][_0xd7df('0x16')][this[_0xd7df('0x7')]['id']],this['squeue'][_0xd7df('0x17')],![])){this['realtime'][_0xd7df('0x16')][this['agent']['id']][_0xd7df('0x18')]=!![];this[_0xd7df('0x8')][_0xd7df('0x16')][this['agent']['id']][_0xd7df('0x19')]=undefined;util['saveWaitingNotification'](this[_0xd7df('0x8')],this[_0xd7df('0x4')],this[_0xd7df('0x7')],this[_0xd7df('0x6')][_0xd7df('0x17')]);util[_0xd7df('0x1a')](this[_0xd7df('0x5')],this['squeue']['id'],this['realtime'][_0xd7df('0x16')][this[_0xd7df('0x7')]['id']],null,this[_0xd7df('0x4')]);util[_0xd7df('0x1b')](this[_0xd7df('0x6')]['id'],this[_0xd7df('0x8')][_0xd7df('0x16')][this[_0xd7df('0x7')]['id']],_0xd7df('0x1c')+(this['routing'][_0xd7df('0x14')]?_0xd7df('0x1d'):''));}else{logger[_0xd7df('0x11')](_0xd7df('0x1e'),this[_0xd7df('0x6')]['id'],this[_0xd7df('0x7')]['id']);setTimeout(this[_0xd7df('0x9')][_0xd7df('0xc')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x52b56a){if(_['isNil'](this['realtime'][_0xd7df('0x16')][this['agent']['id']])){return logger[_0xd7df('0x11')](_0xd7df('0x1f'),this['squeue']['id'],this[_0xd7df('0x7')]['id']);}else{logger[_0xd7df('0x11')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0xd7df('0x6')]['id'],this[_0xd7df('0x7')]['id']);util[_0xd7df('0x20')](this[_0xd7df('0x5')],this[_0xd7df('0x6')]['id'],this[_0xd7df('0x8')]['agents'][this[_0xd7df('0x7')]['id']],null,this[_0xd7df('0x4')]);this[_0xd7df('0x8')][_0xd7df('0x16')][this[_0xd7df('0x7')]['id']][_0xd7df('0x18')]=![];this[_0xd7df('0x8')][_0xd7df('0x16')][this[_0xd7df('0x7')]['id']][_0xd7df('0x19')]=undefined;util[_0xd7df('0x21')](this['realtime'],this['routing'],this[_0xd7df('0x7')],this['squeue'][_0xd7df('0x17')]);util[_0xd7df('0x1b')](this[_0xd7df('0x6')]['id'],this[_0xd7df('0x8')]['agents'][this['agent']['id']],_0x52b56a?'STOP':_0xd7df('0x22'));}if(!_0x52b56a){setTimeout(this[_0xd7df('0x9')]['bind'](this),0x3e8);}};function agent(_0x27c57c,_0x1a8b40,_0x4bda0e,_0x574567){return new Agent(_0x27c57c,_0x1a8b40,_0x4bda0e,_0x574567);}module['exports']=agent;
\ No newline at end of file
index 263c4ab..fd1cbcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0755=['saveWaitingNotification','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','debug','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','STOP','TIMEOUT','removeWaitingNotification','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','push','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','queue','length','Agents','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','agents','RINGING','realtime','busyQueue'];(function(_0x5294a3,_0x5f288c){var _0x13d16a=function(_0x4fb561){while(--_0x4fb561){_0x5294a3['push'](_0x5294a3['shift']());}};_0x13d16a(++_0x5f288c);}(_0x0755,0x1bb));var _0x5075=function(_0x1aecfb,_0x4fcb39){_0x1aecfb=_0x1aecfb-0x0;var _0x406509=_0x0755[_0x1aecfb];return _0x406509;};'use strict';var _=require(_0x5075('0x0'));var uuid=require('uuid');var util=require(_0x5075('0x1'));var logger=require(_0x5075('0x2'))(_0x5075('0x3'));var Beepall=function(_0x316e1d,_0xf6ebf6,_0x323e52,_0x5f0b85){this[_0x5075('0x4')]=uuid['v4']();this[_0x5075('0x5')]=_0x316e1d;this['queue']=_0xf6ebf6;this['realtime']=_0x323e52;this[_0x5075('0x3')]=_0x5f0b85;this[_0x5075('0x5')][_0x5075('0x6')](this['handleRun'][_0x5075('0x7')](this),this[_0x5075('0x8')]['bind'](this));this[_0x5075('0x5')]['on'](_0x5075('0x9'),this[_0x5075('0x8')]['bind'](this));this[_0x5075('0x5')]['on'](_0x5075('0xa'),this[_0x5075('0xb')][_0x5075('0x7')](this));};Beepall[_0x5075('0xc')][_0x5075('0x6')]=function(){this[_0x5075('0x5')][_0x5075('0x6')](this[_0x5075('0xd')][_0x5075('0x7')](this),this[_0x5075('0x8')][_0x5075('0x7')](this));};Beepall[_0x5075('0xc')]['handleDrained']=function(){this['handleTimeout'](!![]);};Beepall[_0x5075('0xc')][_0x5075('0xd')]=function(){var _0x7e4712=!![];if(!_['isNil'](this[_0x5075('0xe')])&&!_['isNil'](this['queue']['Agents'])&&this[_0x5075('0xe')]['Agents'][_0x5075('0xf')]>0x0){for(var _0x3dac0f=0x0,_0x37fd48;_0x3dac0f<this[_0x5075('0xe')][_0x5075('0x10')][_0x5075('0xf')];_0x3dac0f+=0x1){_0x37fd48=this['queue']['Agents'][_0x3dac0f]['id'];if(_[_0x5075('0x11')](this['realtime']['agents'][_0x37fd48])){logger['debug'](_0x5075('0x12'),this['squeue']['id'],_0x37fd48);}else{if(util[_0x5075('0x13')](this['squeue']['id'],this['realtime']['agents'][_0x37fd48],this[_0x5075('0x5')][_0x5075('0x14')],!![])){_0x7e4712=![];util['writeLog'](this[_0x5075('0x5')]['id'],this['realtime'][_0x5075('0x15')][_0x37fd48],_0x5075('0x16'));this[_0x5075('0x17')][_0x5075('0x15')][_0x37fd48]['busy']=!![];this[_0x5075('0x17')]['agents'][_0x37fd48][_0x5075('0x18')]=this['queue']['name'];util[_0x5075('0x19')](this[_0x5075('0x17')],this[_0x5075('0x3')],this[_0x5075('0xe')][_0x5075('0x10')][_0x3dac0f],this['squeue']['channel']);util[_0x5075('0x1a')](this[_0x5075('0x4')],this['squeue']['id'],this[_0x5075('0x17')][_0x5075('0x15')][_0x37fd48],this[_0x5075('0xe')],this[_0x5075('0x3')]);}}}if(_0x7e4712){logger['debug'](_0x5075('0x1b'),this[_0x5075('0x5')]['id']);setTimeout(this['push'][_0x5075('0x7')](this),0x3e8);}}else{logger[_0x5075('0x1c')](_0x5075('0x1d'),this[_0x5075('0x5')]['id']);setTimeout(this['push'][_0x5075('0x7')](this),0x3e8);}};Beepall[_0x5075('0xc')][_0x5075('0x8')]=function(_0x454069){if(!_[_0x5075('0x11')](this[_0x5075('0xe')])&&!_['isNil'](this['queue'][_0x5075('0x10')])){for(var _0x41c3fe=0x0,_0x3420c7;_0x41c3fe<this[_0x5075('0xe')]['Agents'][_0x5075('0xf')];_0x41c3fe+=0x1){_0x3420c7=this[_0x5075('0xe')]['Agents'][_0x41c3fe]['id'];if(_[_0x5075('0x11')](this[_0x5075('0x17')][_0x5075('0x15')][_0x3420c7])){logger[_0x5075('0x1c')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x5075('0x5')]['id'],_0x3420c7);}else{util[_0x5075('0x1e')](this['notificationId'],this[_0x5075('0x5')]['id'],this['realtime'][_0x5075('0x15')][_0x3420c7],this[_0x5075('0xe')],this[_0x5075('0x3')]);util[_0x5075('0x1f')](this[_0x5075('0x5')]['id'],this[_0x5075('0x17')]['agents'][_0x3420c7],_0x454069?_0x5075('0x20'):_0x5075('0x21'));this[_0x5075('0x17')][_0x5075('0x15')][_0x3420c7]['busy']=![];this[_0x5075('0x17')][_0x5075('0x15')][_0x3420c7][_0x5075('0x18')]=undefined;util[_0x5075('0x22')](this[_0x5075('0x17')],this[_0x5075('0x3')],this['realtime'][_0x5075('0x15')][_0x3420c7],this['squeue'][_0x5075('0x14')]);}}}if(!_0x454069){setTimeout(this[_0x5075('0x6')]['bind'](this),0x3e8);}};function beepall(_0x1907dc,_0x3eb3f6,_0x6b2d3a,_0x3134a0){return new Beepall(_0x1907dc,_0x3eb3f6,_0x6b2d3a,_0x3134a0);}module[_0x5075('0x23')]=beepall;
\ No newline at end of file
+var _0xdde3=['prototype','handleRun','isNil','length','Agents','realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','RINGING','busy','busyQueue','name','saveWaitingNotification','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','TIMEOUT','exports','uuid','./util','../../../../../config/logger','routing','notificationId','queue','squeue','push','bind','handleTimeout','timeout','handleDrained'];(function(_0x4a21b2,_0x5062c6){var _0x4862d3=function(_0xaa597e){while(--_0xaa597e){_0x4a21b2['push'](_0x4a21b2['shift']());}};_0x4862d3(++_0x5062c6);}(_0xdde3,0x1bb));var _0x3dde=function(_0x22bb34,_0x320cbc){_0x22bb34=_0x22bb34-0x0;var _0x3e137b=_0xdde3[_0x22bb34];return _0x3e137b;};'use strict';var _=require('lodash');var uuid=require(_0x3dde('0x0'));var util=require(_0x3dde('0x1'));var logger=require(_0x3dde('0x2'))(_0x3dde('0x3'));var Beepall=function(_0x496b06,_0x1d487e,_0x29be73,_0x35fe95){this[_0x3dde('0x4')]=uuid['v4']();this['squeue']=_0x496b06;this[_0x3dde('0x5')]=_0x1d487e;this['realtime']=_0x29be73;this['routing']=_0x35fe95;this[_0x3dde('0x6')][_0x3dde('0x7')](this['handleRun'][_0x3dde('0x8')](this),this[_0x3dde('0x9')]['bind'](this));this[_0x3dde('0x6')]['on'](_0x3dde('0xa'),this[_0x3dde('0x9')][_0x3dde('0x8')](this));this['squeue']['on']('drained',this[_0x3dde('0xb')][_0x3dde('0x8')](this));};Beepall[_0x3dde('0xc')][_0x3dde('0x7')]=function(){this[_0x3dde('0x6')][_0x3dde('0x7')](this[_0x3dde('0xd')]['bind'](this),this[_0x3dde('0x9')]['bind'](this));};Beepall['prototype'][_0x3dde('0xb')]=function(){this[_0x3dde('0x9')](!![]);};Beepall['prototype']['handleRun']=function(){var _0x48079f=!![];if(!_[_0x3dde('0xe')](this['queue'])&&!_[_0x3dde('0xe')](this[_0x3dde('0x5')]['Agents'])&&this[_0x3dde('0x5')]['Agents'][_0x3dde('0xf')]>0x0){for(var _0x249c8e=0x0,_0x100c6c;_0x249c8e<this[_0x3dde('0x5')][_0x3dde('0x10')][_0x3dde('0xf')];_0x249c8e+=0x1){_0x100c6c=this['queue'][_0x3dde('0x10')][_0x249c8e]['id'];if(_[_0x3dde('0xe')](this[_0x3dde('0x11')][_0x3dde('0x12')][_0x100c6c])){logger[_0x3dde('0x13')](_0x3dde('0x14'),this[_0x3dde('0x6')]['id'],_0x100c6c);}else{if(util[_0x3dde('0x15')](this[_0x3dde('0x6')]['id'],this[_0x3dde('0x11')][_0x3dde('0x12')][_0x100c6c],this[_0x3dde('0x6')][_0x3dde('0x16')],!![])){_0x48079f=![];util['writeLog'](this[_0x3dde('0x6')]['id'],this[_0x3dde('0x11')][_0x3dde('0x12')][_0x100c6c],_0x3dde('0x17'));this[_0x3dde('0x11')]['agents'][_0x100c6c][_0x3dde('0x18')]=!![];this[_0x3dde('0x11')][_0x3dde('0x12')][_0x100c6c][_0x3dde('0x19')]=this[_0x3dde('0x5')][_0x3dde('0x1a')];util[_0x3dde('0x1b')](this[_0x3dde('0x11')],this[_0x3dde('0x3')],this[_0x3dde('0x5')][_0x3dde('0x10')][_0x249c8e],this[_0x3dde('0x6')][_0x3dde('0x16')]);util[_0x3dde('0x1c')](this['notificationId'],this[_0x3dde('0x6')]['id'],this['realtime'][_0x3dde('0x12')][_0x100c6c],this[_0x3dde('0x5')],this[_0x3dde('0x3')]);}}}if(_0x48079f){logger[_0x3dde('0x13')](_0x3dde('0x1d'),this[_0x3dde('0x6')]['id']);setTimeout(this[_0x3dde('0x7')][_0x3dde('0x8')](this),0x3e8);}}else{logger[_0x3dde('0x13')](_0x3dde('0x1e'),this['squeue']['id']);setTimeout(this[_0x3dde('0x7')][_0x3dde('0x8')](this),0x3e8);}};Beepall['prototype'][_0x3dde('0x9')]=function(_0x449783){if(!_[_0x3dde('0xe')](this[_0x3dde('0x5')])&&!_[_0x3dde('0xe')](this[_0x3dde('0x5')]['Agents'])){for(var _0x3d02ab=0x0,_0x2aa561;_0x3d02ab<this[_0x3dde('0x5')]['Agents'][_0x3dde('0xf')];_0x3d02ab+=0x1){_0x2aa561=this[_0x3dde('0x5')][_0x3dde('0x10')][_0x3d02ab]['id'];if(_['isNil'](this['realtime'][_0x3dde('0x12')][_0x2aa561])){logger[_0x3dde('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x3dde('0x6')]['id'],_0x2aa561);}else{util[_0x3dde('0x1f')](this[_0x3dde('0x4')],this[_0x3dde('0x6')]['id'],this[_0x3dde('0x11')][_0x3dde('0x12')][_0x2aa561],this[_0x3dde('0x5')],this['routing']);util[_0x3dde('0x20')](this['squeue']['id'],this[_0x3dde('0x11')][_0x3dde('0x12')][_0x2aa561],_0x449783?'STOP':_0x3dde('0x21'));this[_0x3dde('0x11')][_0x3dde('0x12')][_0x2aa561][_0x3dde('0x18')]=![];this[_0x3dde('0x11')][_0x3dde('0x12')][_0x2aa561][_0x3dde('0x19')]=undefined;util['removeWaitingNotification'](this['realtime'],this['routing'],this[_0x3dde('0x11')][_0x3dde('0x12')][_0x2aa561],this['squeue'][_0x3dde('0x16')]);}}}if(!_0x449783){setTimeout(this[_0x3dde('0x7')][_0x3dde('0x8')](this),0x3e8);}};function beepall(_0xd2df12,_0xb7bdc9,_0x443dff,_0x1aa61f){return new Beepall(_0xd2df12,_0xb7bdc9,_0x443dff,_0x1aa61f);}module[_0x3dde('0x22')]=beepall;
\ No newline at end of file
index 94e41ab..87a139d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x318f=['./rrmemory','exports'];(function(_0xe1838b,_0xa94bc4){var _0x2b0c64=function(_0x3889c5){while(--_0x3889c5){_0xe1838b['push'](_0xe1838b['shift']());}};_0x2b0c64(++_0xa94bc4);}(_0x318f,0x123));var _0xf318=function(_0x187386,_0x4ee996){_0x187386=_0x187386-0x0;var _0x2466b1=_0x318f[_0x187386];return _0x2466b1;};'use strict';module[_0xf318('0x0')]={'rrmemory':require(_0xf318('0x1')),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
+var _0x042e=['./agent','exports','./rrmemory','./beepall'];(function(_0x7c8cb5,_0x46f028){var _0x858d75=function(_0x5f0c8f){while(--_0x5f0c8f){_0x7c8cb5['push'](_0x7c8cb5['shift']());}};_0x858d75(++_0x46f028);}(_0x042e,0x1cd));var _0xe042=function(_0x4e2ab0,_0x5942fc){_0x4e2ab0=_0x4e2ab0-0x0;var _0x56e86a=_0x042e[_0x4e2ab0];return _0x56e86a;};'use strict';module[_0xe042('0x0')]={'rrmemory':require(_0xe042('0x1')),'beepall':require(_0xe042('0x2')),'agent':require(_0xe042('0x3'))};
\ No newline at end of file
index 85511da..5f5e7ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa2=['handleRun','handleTimeout','module','handleDrained','bind','prototype','handleCheckReject','isAgentAvailable','agentId','channel','[%s][QUEUE]\x20available\x20again\x20%s','done','queue','mapAgentsId','debug','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','saveWaitingNotification','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','uuid','../../../../../config/logger','routing','notificationId','squeue','realtime','intervals','push'];(function(_0x17e735,_0x328f40){var _0x1824d6=function(_0x4460fe){while(--_0x4460fe){_0x17e735['push'](_0x17e735['shift']());}};_0x1824d6(++_0x328f40);}(_0xaaa2,0x102));var _0x2aaa=function(_0x2e5c39,_0x2afefb){_0x2e5c39=_0x2e5c39-0x0;var _0x280726=_0xaaa2[_0x2e5c39];return _0x280726;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x2aaa('0x0'));var util=require('./util');var logger=require(_0x2aaa('0x1'))(_0x2aaa('0x2'));var RRMemory=function(_0x3a7647,_0x173bab,_0xfd4d2f,_0xf8120e){this[_0x2aaa('0x3')]=uuid['v4']();this[_0x2aaa('0x4')]=_0x3a7647;this['queue']=_0x173bab;this[_0x2aaa('0x5')]=_0xfd4d2f;this[_0x2aaa('0x2')]=_0xf8120e;this[_0x2aaa('0x6')]={};this['squeue'][_0x2aaa('0x7')](this[_0x2aaa('0x8')]['bind'](this),this[_0x2aaa('0x9')]['bind'](this),this[_0x2aaa('0xa')]);this['squeue']['on']('timeout',this[_0x2aaa('0x9')]['bind'](this));this[_0x2aaa('0x4')]['on']('drained',this[_0x2aaa('0xb')][_0x2aaa('0xc')](this));};RRMemory[_0x2aaa('0xd')]['push']=function(){this['squeue'][_0x2aaa('0x7')](this['handleRun'][_0x2aaa('0xc')](this),this[_0x2aaa('0x9')]['bind'](this));};RRMemory[_0x2aaa('0xd')]['handleDrained']=function(){this['handleTimeout'](!![]);};RRMemory[_0x2aaa('0xd')][_0x2aaa('0xe')]=function(_0x4b39f5){if(util[_0x2aaa('0xf')](this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x5')]['agents'][this[_0x2aaa('0x10')]],this[_0x2aaa('0x4')][_0x2aaa('0x11')],!![])){logger['debug'](_0x2aaa('0x12'),this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x10')]);clearInterval(this[_0x2aaa('0x6')][this['agentId']]);_0x4b39f5[_0x2aaa('0x13')]();setTimeout(this['push'][_0x2aaa('0xc')](this),0x3e8);}};RRMemory[_0x2aaa('0xd')]['handleRun']=function(_0x2bb3ac){this[_0x2aaa('0x10')]=rr(this[_0x2aaa('0x14')][_0x2aaa('0x15')]);logger[_0x2aaa('0x16')](_0x2aaa('0x17'),this['squeue']['id'],this[_0x2aaa('0x10')]);if(_[_0x2aaa('0x18')](this[_0x2aaa('0x5')][_0x2aaa('0x19')][this['agentId']])){logger[_0x2aaa('0x16')](_0x2aaa('0x1a'),this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x10')]);_0x2bb3ac[_0x2aaa('0x13')]();setTimeout(this[_0x2aaa('0x7')]['bind'](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]],this[_0x2aaa('0x4')][_0x2aaa('0x11')],!![])){this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]][_0x2aaa('0x1b')]=!![];this[_0x2aaa('0x5')]['agents'][this[_0x2aaa('0x10')]][_0x2aaa('0x1c')]=this[_0x2aaa('0x14')][_0x2aaa('0x1d')];util[_0x2aaa('0x1e')](this[_0x2aaa('0x5')],this[_0x2aaa('0x2')],this[_0x2aaa('0x5')][_0x2aaa('0x19')][this['agentId']],this[_0x2aaa('0x4')]['channel']);util[_0x2aaa('0x1f')](this[_0x2aaa('0x3')],this['squeue']['id'],this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]],this[_0x2aaa('0x14')],this[_0x2aaa('0x2')]);util[_0x2aaa('0x20')](this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]],_0x2aaa('0x21'));this[_0x2aaa('0x6')][this[_0x2aaa('0x10')]]=setInterval(this[_0x2aaa('0xe')][_0x2aaa('0xc')](this,_0x2bb3ac),0x3e8);}else{logger[_0x2aaa('0x16')](_0x2aaa('0x22'),this[_0x2aaa('0x4')]['id'],this['agentId']);_0x2bb3ac[_0x2aaa('0x13')]();setTimeout(this[_0x2aaa('0x7')][_0x2aaa('0xc')](this),0x3e8);}}};RRMemory['prototype'][_0x2aaa('0x9')]=function(_0x1c9d7a){logger[_0x2aaa('0x16')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x10')]);if(_[_0x2aaa('0x18')](this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]])){logger['debug'](_0x2aaa('0x1a'),this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x10')]);}else{clearInterval(this[_0x2aaa('0x6')][this['agentId']]);util[_0x2aaa('0x23')](this[_0x2aaa('0x3')],this[_0x2aaa('0x4')]['id'],this[_0x2aaa('0x5')]['agents'][this[_0x2aaa('0x10')]],this['queue'],this[_0x2aaa('0x2')]);util[_0x2aaa('0x20')](this[_0x2aaa('0x4')]['id'],this['realtime'][_0x2aaa('0x19')][this['agentId']],_0x2aaa('0x24'));this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]][_0x2aaa('0x1b')]=![];this[_0x2aaa('0x5')][_0x2aaa('0x19')][this[_0x2aaa('0x10')]][_0x2aaa('0x1c')]=undefined;util[_0x2aaa('0x25')](this['realtime'],this[_0x2aaa('0x2')],this[_0x2aaa('0x5')]['agents'][this[_0x2aaa('0x10')]],this[_0x2aaa('0x4')][_0x2aaa('0x11')]);}if(!_0x1c9d7a){setTimeout(this['push'][_0x2aaa('0xc')](this),0x3e8);}};function rrmemory(_0x512c2d,_0x4f4224,_0x34bb0c,_0x4bffd5){return new RRMemory(_0x512c2d,_0x4f4224,_0x34bb0c,_0x4bffd5);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x371a=['[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','name','saveWaitingNotification','showNotification','writeLog','hideNotification','TIMEOUT','busy','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','intervals','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','debug','mapAgentsId'];(function(_0x150a94,_0x1552ed){var _0x492ca9=function(_0x5f1d61){while(--_0x5f1d61){_0x150a94['push'](_0x150a94['shift']());}};_0x492ca9(++_0x1552ed);}(_0x371a,0x12c));var _0xa371=function(_0x5063b4,_0xd758aa){_0x5063b4=_0x5063b4-0x0;var _0x76167f=_0x371a[_0x5063b4];return _0x76167f;};'use strict';var rr=require('rr');var _=require(_0xa371('0x0'));var uuid=require(_0xa371('0x1'));var util=require(_0xa371('0x2'));var logger=require('../../../../../config/logger')(_0xa371('0x3'));var RRMemory=function(_0x17c30b,_0x33efa8,_0xbd25dd,_0x14b512){this[_0xa371('0x4')]=uuid['v4']();this[_0xa371('0x5')]=_0x17c30b;this[_0xa371('0x6')]=_0x33efa8;this[_0xa371('0x7')]=_0xbd25dd;this[_0xa371('0x3')]=_0x14b512;this[_0xa371('0x8')]={};this[_0xa371('0x5')][_0xa371('0x9')](this[_0xa371('0xa')][_0xa371('0xb')](this),this[_0xa371('0xc')]['bind'](this),this['module']);this['squeue']['on'](_0xa371('0xd'),this['handleTimeout'][_0xa371('0xb')](this));this[_0xa371('0x5')]['on'](_0xa371('0xe'),this[_0xa371('0xf')]['bind'](this));};RRMemory[_0xa371('0x10')]['push']=function(){this['squeue'][_0xa371('0x9')](this[_0xa371('0xa')][_0xa371('0xb')](this),this[_0xa371('0xc')]['bind'](this));};RRMemory['prototype'][_0xa371('0xf')]=function(){this[_0xa371('0xc')](!![]);};RRMemory[_0xa371('0x10')][_0xa371('0x11')]=function(_0x3a5d6e){if(util[_0xa371('0x12')](this['squeue']['id'],this['realtime'][_0xa371('0x13')][this[_0xa371('0x14')]],this[_0xa371('0x5')][_0xa371('0x15')],!![])){logger[_0xa371('0x16')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0xa371('0x5')]['id'],this[_0xa371('0x14')]);clearInterval(this['intervals'][this[_0xa371('0x14')]]);_0x3a5d6e['done']();setTimeout(this[_0xa371('0x9')][_0xa371('0xb')](this),0x3e8);}};RRMemory[_0xa371('0x10')][_0xa371('0xa')]=function(_0x486b01){this[_0xa371('0x14')]=rr(this[_0xa371('0x6')][_0xa371('0x17')]);logger['debug'](_0xa371('0x18'),this[_0xa371('0x5')]['id'],this[_0xa371('0x14')]);if(_[_0xa371('0x19')](this[_0xa371('0x7')]['agents'][this['agentId']])){logger[_0xa371('0x16')](_0xa371('0x1a'),this[_0xa371('0x5')]['id'],this[_0xa371('0x14')]);_0x486b01[_0xa371('0x1b')]();setTimeout(this[_0xa371('0x9')][_0xa371('0xb')](this),0x3e8);}else{if(util[_0xa371('0x12')](this[_0xa371('0x5')]['id'],this['realtime'][_0xa371('0x13')][this[_0xa371('0x14')]],this['squeue'][_0xa371('0x15')],!![])){this[_0xa371('0x7')]['agents'][this['agentId']]['busy']=!![];this[_0xa371('0x7')][_0xa371('0x13')][this[_0xa371('0x14')]]['busyQueue']=this[_0xa371('0x6')][_0xa371('0x1c')];util[_0xa371('0x1d')](this[_0xa371('0x7')],this[_0xa371('0x3')],this[_0xa371('0x7')][_0xa371('0x13')][this[_0xa371('0x14')]],this['squeue'][_0xa371('0x15')]);util[_0xa371('0x1e')](this['notificationId'],this[_0xa371('0x5')]['id'],this['realtime'][_0xa371('0x13')][this['agentId']],this[_0xa371('0x6')],this[_0xa371('0x3')]);util[_0xa371('0x1f')](this[_0xa371('0x5')]['id'],this[_0xa371('0x7')][_0xa371('0x13')][this['agentId']],'RINGING');this[_0xa371('0x8')][this[_0xa371('0x14')]]=setInterval(this[_0xa371('0x11')][_0xa371('0xb')](this,_0x486b01),0x3e8);}else{logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xa371('0x5')]['id'],this[_0xa371('0x14')]);_0x486b01[_0xa371('0x1b')]();setTimeout(this['push'][_0xa371('0xb')](this),0x3e8);}}};RRMemory[_0xa371('0x10')][_0xa371('0xc')]=function(_0x284127){logger[_0xa371('0x16')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xa371('0x5')]['id'],this['agentId']);if(_['isNil'](this['realtime'][_0xa371('0x13')][this[_0xa371('0x14')]])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xa371('0x14')]);}else{clearInterval(this[_0xa371('0x8')][this['agentId']]);util[_0xa371('0x20')](this['notificationId'],this[_0xa371('0x5')]['id'],this[_0xa371('0x7')][_0xa371('0x13')][this[_0xa371('0x14')]],this[_0xa371('0x6')],this[_0xa371('0x3')]);util[_0xa371('0x1f')](this[_0xa371('0x5')]['id'],this[_0xa371('0x7')]['agents'][this[_0xa371('0x14')]],_0xa371('0x21'));this[_0xa371('0x7')][_0xa371('0x13')][this[_0xa371('0x14')]][_0xa371('0x22')]=![];this[_0xa371('0x7')]['agents'][this['agentId']]['busyQueue']=undefined;util['removeWaitingNotification'](this[_0xa371('0x7')],this[_0xa371('0x3')],this[_0xa371('0x7')][_0xa371('0x13')][this['agentId']],this[_0xa371('0x5')]['channel']);}if(!_0x284127){setTimeout(this[_0xa371('0x9')][_0xa371('0xb')](this),0x3e8);}};function rrmemory(_0x1de8a1,_0x4826be,_0x1f491e,_0x5eac22){return new RRMemory(_0x1de8a1,_0x4826be,_0x1f491e,_0x5eac22);}module[_0xa371('0x23')]=rrmemory;
\ No newline at end of file
index 66cf1a4..a5a48dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac28=['Capacity','hasOwnProperty','CurrentCapacity','\x20MAXCAPACITY','hideNotification','interaction','channel','some','agents','WaitingInteractions','removeWaitingNotification','lodash','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','redis','localhost','socket.io-emitter','format','user:%s','name','emit','user:save','split','\x20interaction','account','notificationSound','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','save','debug','busy','BUSY','OFFLINE','Pause'];(function(_0x2de685,_0x3fdc4a){var _0x4098b4=function(_0x573e62){while(--_0x573e62){_0x2de685['push'](_0x2de685['shift']());}};_0x4098b4(++_0x3fdc4a);}(_0xac28,0x65));var _0x8ac2=function(_0xd1ccf,_0x27b1c8){_0xd1ccf=_0xd1ccf-0x0;var _0x2eafc2=_0xac28[_0xd1ccf];return _0x2eafc2;};'use strict';var _=require(_0x8ac2('0x0'));var util=require(_0x8ac2('0x1'));var utils=require(_0x8ac2('0x2'));var Redis=require(_0x8ac2('0x3'));var config=require(_0x8ac2('0x4'));var logger=require(_0x8ac2('0x5'))('routing');config[_0x8ac2('0x6')]=_['defaults'](config[_0x8ac2('0x6')],{'host':_0x8ac2('0x7'),'port':0x18eb});var io=require(_0x8ac2('0x8'))(new Redis(config[_0x8ac2('0x6')]));function sendNotification(_0x137ab2,_0x3b28ef,_0x2bf28b,_0x3bb4c9,_0x4eb4af,_0xd1ada2){io['to'](util[_0x8ac2('0x9')](_0x8ac2('0xa'),_0x3bb4c9[_0x8ac2('0xb')]))[_0x8ac2('0xc')](_0x8ac2('0xd'),_0x3bb4c9);var _0x5abc94=_0xd1ada2||{};var _0x3b77cd=_0x2bf28b[_0x8ac2('0xe')]('.');var _0x5ffb83={'uniqueid':_0x3b28ef,'channel':_0x3b77cd[0x0],'id':_0x3b77cd[0x1],'title':_0x3b77cd[0x0]+_0x8ac2('0xf'),'interactionId':_0x3b77cd[0x2],'queue':_0x4eb4af?_0x4eb4af[_0x8ac2('0xb')]:null,'sound':_0x5abc94[_0x8ac2('0x10')][_0x8ac2('0x11')],'shake':_0x5abc94['account']['notificationShake']};try{if(!_0x5abc94[_0x8ac2('0x12')]){_0x5abc94[_0x8ac2('0x12')]={};}if(_0x4eb4af){_0x5abc94[_0x8ac2('0x12')][_0x8ac2('0x13')]=_0x4eb4af;}else if(_0x5abc94[_0x8ac2('0x12')]['queue']){delete _0x5abc94[_0x8ac2('0x12')][_0x8ac2('0x13')];}_0x5ffb83['msg']=utils[_0x8ac2('0x14')](_0x5abc94[_0x8ac2('0x10')][_0x8ac2('0x15')],_0x5abc94);}catch(_0x130593){_0x5ffb83[_0x8ac2('0x16')]=_0x8ac2('0x17');logger[_0x8ac2('0x18')](util['format'](_0x8ac2('0x19'),_0x3b28ef,_0x130593[_0x8ac2('0x1a')]));}io['to'](util['format'](_0x8ac2('0xa'),_0x3bb4c9['name']))[_0x8ac2('0xc')](util['format'](_0x8ac2('0x1b'),_0x137ab2?_0x8ac2('0x1c'):'remove'),_0x5ffb83);}function writeLog(_0xa6080c,_0x13d0da,_0xdd0f13){return logger[_0x8ac2('0x1d')](util[_0x8ac2('0x9')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0xa6080c,_0x13d0da['name'],_0xdd0f13));}exports['isAgentAvailable']=function(_0x349a69,_0x235f79,_0x52c1ec,_0x5660f0){if(_0x235f79[_0x8ac2('0x1e')]){writeLog(_0x349a69,_0x235f79,_0x8ac2('0x1f'));return![];}if(!_0x235f79['online']){writeLog(_0x349a69,_0x235f79,_0x8ac2('0x20'));return![];}if(_0x235f79[_0x52c1ec+_0x8ac2('0x21')]){writeLog(_0x349a69,_0x235f79,'PAUSE');return![];}if(_0x5660f0&&_0x235f79['hasOwnProperty'](_0x52c1ec+_0x8ac2('0x22'))&&_0x235f79[_0x8ac2('0x23')](_0x52c1ec+_0x8ac2('0x24'))){if(_0x235f79[_0x52c1ec+_0x8ac2('0x22')]>0x0&&_0x235f79[_0x52c1ec+'CurrentCapacity']>=_0x235f79[_0x52c1ec+_0x8ac2('0x22')]){writeLog(_0x349a69,_0x235f79,_0x52c1ec['toUpperCase']()+_0x8ac2('0x25'));return![];}}return!![];};exports['showNotification']=function(_0x406e40,_0x67a6af,_0x284546,_0x2aa634,_0x29d326){return sendNotification(!![],_0x406e40,_0x67a6af,_0x284546,_0x2aa634,_0x29d326);};exports[_0x8ac2('0x26')]=function(_0x59d146,_0x4008f5,_0x316613,_0x727293,_0x377239){return sendNotification(![],_0x59d146,_0x4008f5,_0x316613,_0x727293,_0x377239);};exports['checkWaitingNotifications']=function(_0x37f624,_0xfd2aa5,_0x29c3d1){var _0x1e8b31=_0xfd2aa5[_0x8ac2('0x27')]['UserId'];if(!_0x1e8b31&&_0x29c3d1){_0x1e8b31=_0x29c3d1['id'];}var _0x18639a=_['some'](_0x37f624[_0xfd2aa5[_0x8ac2('0x28')]+'QueuesWaitingInteractions'],function(_0x355d4d){var _0x1c7a43=_['capitalize'](_0xfd2aa5[_0x8ac2('0x28')])+'InteractionId';return _0x355d4d[_0x1c7a43]===_0xfd2aa5['interaction']['id'];});if(!_0x18639a&&_0x1e8b31){_0x18639a=_[_0x8ac2('0x29')](_0x37f624[_0x8ac2('0x2a')][_0x1e8b31][_0xfd2aa5['channel']+_0x8ac2('0x2b')],function(_0x2f6a44){return _0x2f6a44['id']===_0xfd2aa5[_0x8ac2('0x27')]['id'];});}return _0x18639a;};exports['saveWaitingNotification']=function(_0x1299b4,_0x5db11c,_0x5b954c,_0x499565){_0x1299b4['agents'][_0x5b954c['id']][_0x499565+_0x8ac2('0x2b')][_0x5db11c[_0x8ac2('0x1a')]['id']]={'id':_0x5db11c[_0x8ac2('0x27')]['id']};};exports[_0x8ac2('0x2c')]=function(_0xfedb16,_0xa181fb,_0x3f3ba3,_0x1e7fa7){delete _0xfedb16[_0x8ac2('0x2a')][_0x3f3ba3['id']][_0x1e7fa7+_0x8ac2('0x2b')][_0xa181fb[_0x8ac2('0x1a')]['id']];};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0xcea0=['defaults','redis','localhost','socket.io-emitter','format','user:%s','name','emit','split','\x20interaction','account','notificationSound','notificationShake','body','queue','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','message','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','interaction','channel','QueuesWaitingInteractions','capitalize','some','agents','WaitingInteractions','lodash','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing'];(function(_0x2ba94a,_0x20634f){var _0x55f423=function(_0x3174a0){while(--_0x3174a0){_0x2ba94a['push'](_0x2ba94a['shift']());}};_0x55f423(++_0x20634f);}(_0xcea0,0x1bc));var _0x0cea=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xcea0[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0x0cea('0x0'));var util=require('util');var utils=require(_0x0cea('0x1'));var Redis=require(_0x0cea('0x2'));var config=require(_0x0cea('0x3'));var logger=require(_0x0cea('0x4'))(_0x0cea('0x5'));config['redis']=_[_0x0cea('0x6')](config[_0x0cea('0x7')],{'host':_0x0cea('0x8'),'port':0x18eb});var io=require(_0x0cea('0x9'))(new Redis(config[_0x0cea('0x7')]));function sendNotification(_0x4b63cc,_0x1d91de,_0x3ec483,_0x3e47d9,_0x2406a0,_0x4c02dd){io['to'](util[_0x0cea('0xa')](_0x0cea('0xb'),_0x3e47d9[_0x0cea('0xc')]))[_0x0cea('0xd')]('user:save',_0x3e47d9);var _0x396ab4=_0x4c02dd||{};var _0x5c418a=_0x3ec483[_0x0cea('0xe')]('.');var _0x1e14d1={'uniqueid':_0x1d91de,'channel':_0x5c418a[0x0],'id':_0x5c418a[0x1],'title':_0x5c418a[0x0]+_0x0cea('0xf'),'interactionId':_0x5c418a[0x2],'queue':_0x2406a0?_0x2406a0[_0x0cea('0xc')]:null,'sound':_0x396ab4[_0x0cea('0x10')][_0x0cea('0x11')],'shake':_0x396ab4[_0x0cea('0x10')][_0x0cea('0x12')]};try{if(!_0x396ab4['body']){_0x396ab4[_0x0cea('0x13')]={};}if(_0x2406a0){_0x396ab4[_0x0cea('0x13')][_0x0cea('0x14')]=_0x2406a0;}else if(_0x396ab4[_0x0cea('0x13')][_0x0cea('0x14')]){delete _0x396ab4['body'][_0x0cea('0x14')];}_0x1e14d1['msg']=utils['getMustacheRender'](_0x396ab4['account'][_0x0cea('0x15')],_0x396ab4);}catch(_0x51edfb){_0x1e14d1[_0x0cea('0x16')]=_0x0cea('0x17');logger[_0x0cea('0x18')](util[_0x0cea('0xa')]('[%s][QUEUE]\x20%s',_0x1d91de,_0x51edfb[_0x0cea('0x19')]));}io['to'](util[_0x0cea('0xa')]('user:%s',_0x3e47d9['name']))['emit'](util[_0x0cea('0xa')]('notification:%s',_0x4b63cc?_0x0cea('0x1a'):_0x0cea('0x1b')),_0x1e14d1);}function writeLog(_0x247482,_0xbde388,_0x6d5bb7){return logger[_0x0cea('0x1c')](util['format'](_0x0cea('0x1d'),_0x247482,_0xbde388[_0x0cea('0xc')],_0x6d5bb7));}exports[_0x0cea('0x1e')]=function(_0x4ed244,_0x50b1b5,_0xafbb39,_0x31cfc4){if(_0x50b1b5['busy']){writeLog(_0x4ed244,_0x50b1b5,_0x0cea('0x1f'));return![];}if(!_0x50b1b5['online']){writeLog(_0x4ed244,_0x50b1b5,_0x0cea('0x20'));return![];}if(_0x50b1b5[_0xafbb39+_0x0cea('0x21')]){writeLog(_0x4ed244,_0x50b1b5,_0x0cea('0x22'));return![];}if(_0x31cfc4&&_0x50b1b5['hasOwnProperty'](_0xafbb39+'Capacity')&&_0x50b1b5[_0x0cea('0x23')](_0xafbb39+'CurrentCapacity')){if(_0x50b1b5[_0xafbb39+_0x0cea('0x24')]>0x0&&_0x50b1b5[_0xafbb39+_0x0cea('0x25')]>=_0x50b1b5[_0xafbb39+_0x0cea('0x24')]){writeLog(_0x4ed244,_0x50b1b5,_0xafbb39[_0x0cea('0x26')]()+_0x0cea('0x27'));return![];}}return!![];};exports[_0x0cea('0x28')]=function(_0x5904b4,_0x1a4c14,_0x4cfbd6,_0x56bc31,_0x44fbba){return sendNotification(!![],_0x5904b4,_0x1a4c14,_0x4cfbd6,_0x56bc31,_0x44fbba);};exports[_0x0cea('0x29')]=function(_0x38e526,_0x3111b5,_0x1d9a94,_0x4a575e,_0x470054){return sendNotification(![],_0x38e526,_0x3111b5,_0x1d9a94,_0x4a575e,_0x470054);};exports[_0x0cea('0x2a')]=function(_0x31c9fa,_0x101977,_0x3d36b1){var _0x2c8263=_0x101977[_0x0cea('0x2b')]['UserId'];if(!_0x2c8263&&_0x3d36b1){_0x2c8263=_0x3d36b1['id'];}var _0x576f4a=_['some'](_0x31c9fa[_0x101977[_0x0cea('0x2c')]+_0x0cea('0x2d')],function(_0x54febb){var _0x2a1199=_[_0x0cea('0x2e')](_0x101977[_0x0cea('0x2c')])+'InteractionId';return _0x54febb[_0x2a1199]===_0x101977[_0x0cea('0x2b')]['id'];});if(!_0x576f4a&&_0x2c8263){_0x576f4a=_[_0x0cea('0x2f')](_0x31c9fa[_0x0cea('0x30')][_0x2c8263][_0x101977[_0x0cea('0x2c')]+_0x0cea('0x31')],function(_0x5e1a40){return _0x5e1a40['id']===_0x101977[_0x0cea('0x2b')]['id'];});}return _0x576f4a;};exports['saveWaitingNotification']=function(_0x17dc8f,_0x3ee630,_0x22e1f1,_0x41a4d2){_0x17dc8f[_0x0cea('0x30')][_0x22e1f1['id']][_0x41a4d2+_0x0cea('0x31')][_0x3ee630[_0x0cea('0x19')]['id']]={'id':_0x3ee630[_0x0cea('0x2b')]['id']};};exports['removeWaitingNotification']=function(_0x168348,_0xba75b7,_0x19f919,_0x172a46){delete _0x168348['agents'][_0x19f919['id']][_0x172a46+_0x0cea('0x31')][_0xba75b7[_0x0cea('0x19')]['id']];};exports['writeLog']=writeLog;
\ No newline at end of file
index 2bb0c57..f7f2be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ef=['message','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','stringify','validate','shelljs','lodash','./utils','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe1ef,0x72));var _0xfe1e=function(_0x15ad74,_0x472734){_0x15ad74=_0x15ad74-0x0;var _0x29d911=_0xe1ef[_0x15ad74];return _0x29d911;};'use strict';var schema=require(_0xfe1e('0x0'));var sh=require(_0xfe1e('0x1'));var _=require(_0xfe1e('0x2'));var utils=require(_0xfe1e('0x3'));var logger=require('../../../../config/logger')('routing');var system=schema({'command':{'type':_0xfe1e('0x4'),'required':!![],'message':_0xfe1e('0x5')}});exports[_0xfe1e('0x6')]=function(_0x2bf413,_0x167f57){return function(_0x346e3a){try{var _0x48d976={'command':_0x167f57[0x0]};var _0x411e17=system[_0xfe1e('0x0')](_0x48d976,{'typecast':!![]});if(_0x411e17[_0xfe1e('0x7')]){logger[_0xfe1e('0x8')](_0xfe1e('0x9'),_0x2bf413,_[_0xfe1e('0xa')](_0x411e17,_0xfe1e('0xb'))['join'](',\x20'));logger[_0xfe1e('0xc')](_0xfe1e('0xd'),_0x2bf413);_0x346e3a[_0xfe1e('0xe')]();}else{var _0x48d608=this;var _0x4d091b=utils[_0xfe1e('0xf')](_0x167f57[0x0],this);logger['info'](_0xfe1e('0x10'),_0x2bf413,_0x4d091b);sh['exec'](_['trim'](_0x4d091b),function(_0x306972,_0x5e2e53){logger[_0xfe1e('0xc')](_0xfe1e('0x11'),_0x2bf413,_0x306972);if(_0x306972==0x0){var _0x35ae3f=_0x5e2e53[_0xfe1e('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0xfe1e('0x13')](_0x167f57[0x1])||_[_0xfe1e('0x14')](_0x167f57[0x1])){logger['info'](_0xfe1e('0x15'),_0x2bf413);_0x48d608[_0xfe1e('0x16')][_0x167f57[0x1]]=_0x35ae3f;}else{logger[_0xfe1e('0xc')](_0xfe1e('0x17'),_0x2bf413,_0x167f57[0x1],_0x35ae3f);_0x48d608[_0xfe1e('0x16')][_0x167f57[0x1]]=_0x35ae3f;}}_0x346e3a[_0xfe1e('0xe')]();});}}catch(_0xb34749){logger[_0xfe1e('0x8')](_0xfe1e('0x9'),_0x2bf413,_['isObject'](_0xb34749)?JSON[_0xfe1e('0x18')](_0xb34749):_0xb34749);logger[_0xfe1e('0xc')](_0xfe1e('0xd'),_0x2bf413);_0x346e3a[_0xfe1e('0xe')]();}};};
\ No newline at end of file
+var _0xff14=['trim','replace','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','stringify','validate','shelljs','./utils','../../../../config/logger','routing','string','consequence','length','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s'];(function(_0x22241f,_0x48bd97){var _0x16c966=function(_0x340155){while(--_0x340155){_0x22241f['push'](_0x22241f['shift']());}};_0x16c966(++_0x48bd97);}(_0xff14,0x1ca));var _0x4ff1=function(_0x5a9461,_0x30e8dc){_0x5a9461=_0x5a9461-0x0;var _0x39a3be=_0xff14[_0x5a9461];return _0x39a3be;};'use strict';var schema=require(_0x4ff1('0x0'));var sh=require(_0x4ff1('0x1'));var _=require('lodash');var utils=require(_0x4ff1('0x2'));var logger=require(_0x4ff1('0x3'))(_0x4ff1('0x4'));var system=schema({'command':{'type':_0x4ff1('0x5'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x4ff1('0x6')]=function(_0x3857b3,_0x32a73f){return function(_0x3135c7){try{var _0x483725={'command':_0x32a73f[0x0]};var _0x12aadb=system[_0x4ff1('0x0')](_0x483725,{'typecast':!![]});if(_0x12aadb[_0x4ff1('0x7')]){logger['error'](_0x4ff1('0x8'),_0x3857b3,_[_0x4ff1('0x9')](_0x12aadb,_0x4ff1('0xa'))[_0x4ff1('0xb')](',\x20'));logger[_0x4ff1('0xc')](_0x4ff1('0xd'),_0x3857b3);_0x3135c7[_0x4ff1('0xe')]();}else{var _0x5b1acb=this;var _0x1c6ceb=utils[_0x4ff1('0xf')](_0x32a73f[0x0],this);logger[_0x4ff1('0xc')](_0x4ff1('0x10'),_0x3857b3,_0x1c6ceb);sh['exec'](_[_0x4ff1('0x11')](_0x1c6ceb),function(_0x68cd9e,_0x1278d7){logger[_0x4ff1('0xc')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x3857b3,_0x68cd9e);if(_0x68cd9e==0x0){var _0x36f9df=_0x1278d7[_0x4ff1('0x12')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x32a73f[0x1])||_[_0x4ff1('0x13')](_0x32a73f[0x1])){logger['info'](_0x4ff1('0x14'),_0x3857b3);_0x5b1acb[_0x4ff1('0x15')][_0x32a73f[0x1]]=_0x36f9df;}else{logger[_0x4ff1('0xc')](_0x4ff1('0x16'),_0x3857b3,_0x32a73f[0x1],_0x36f9df);_0x5b1acb['body'][_0x32a73f[0x1]]=_0x36f9df;}}_0x3135c7[_0x4ff1('0xe')]();});}}catch(_0x4fda97){logger[_0x4ff1('0x17')](_0x4ff1('0x8'),_0x3857b3,_['isObject'](_0x4fda97)?JSON[_0x4ff1('0x18')](_0x4fda97):_0x4fda97);logger[_0x4ff1('0xc')](_0x4ff1('0xd'),_0x3857b3);_0x3135c7[_0x4ff1('0xe')]();}};};
\ No newline at end of file
index f5a0686..4468ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9381=['interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20%s','stringify','finally','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags'];(function(_0x152bce,_0x21d2da){var _0x39ba14=function(_0xd78e73){while(--_0xd78e73){_0x152bce['push'](_0x152bce['shift']());}};_0x39ba14(++_0x21d2da);}(_0x9381,0x120));var _0x1938=function(_0xce6f11,_0x3c3137){_0xce6f11=_0xce6f11-0x0;var _0x35b709=_0x9381[_0xce6f11];return _0x35b709;};'use strict';var schema=require(_0x1938('0x0'));var _=require(_0x1938('0x1'));var rpc={'chatInteraction':require(_0x1938('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x1938('0x3')),'faxInteraction':require(_0x1938('0x4')),'whatsappInteraction':require(_0x1938('0x5'))};var logger=require('../../../../config/logger')(_0x1938('0x6'));var tag=schema({'tag':{'type':_0x1938('0x7'),'required':!![],'message':_0x1938('0x8')}});exports[_0x1938('0x9')]=function(_0x55963d,_0x268bbf,_0x1ef7c6,_0x158ab8){return function(_0x5821bd){try{var _0x49f5bc={'tag':_0x268bbf[0x0]};var _0x10dd96=tag[_0x1938('0x0')](_0x49f5bc,{'typecast':!![]});if(_0x10dd96[_0x1938('0xa')]){logger[_0x1938('0xb')]('[%s][TAG]\x20%s',_0x55963d,_[_0x1938('0xc')](_0x10dd96,_0x1938('0xd'))['join'](',\x20'));logger[_0x1938('0xe')](_0x1938('0xf'),_0x55963d);_0x5821bd[_0x1938('0x10')]();}else{var _0x200e8d={'ids':[_0x268bbf[0x0]]};if(rpc[_0x158ab8[_0x1938('0x11')]+'Interaction']){rpc[_0x158ab8['channel']+_0x1938('0x12')][_0x1938('0x13')](_0x158ab8[_0x1938('0x14')]['id'],_0x200e8d)[_0x1938('0x15')](function(_0x4c5426){logger['info'](_0x1938('0x16'),_0x55963d,_0x268bbf[0x1],_0x158ab8[_0x1938('0x11')],_0x158ab8['interaction']['id']);})[_0x1938('0x17')](function(_0x15beac){logger[_0x1938('0xb')](_0x1938('0x18'),_0x55963d,JSON[_0x1938('0x19')](_0x15beac));logger[_0x1938('0xe')](_0x1938('0xf'),_0x55963d);})[_0x1938('0x1a')](function(){_0x5821bd[_0x1938('0x10')]();});}}}catch(_0x4bca2c){logger[_0x1938('0xb')](_0x1938('0x18'),_0x55963d,_[_0x1938('0x1b')](_0x4bca2c)?JSON[_0x1938('0x19')](_0x4bca2c):_0x4bca2c);logger[_0x1938('0xe')](_0x1938('0xf'),_0x55963d);_0x5821bd['next']();}};};
\ No newline at end of file
+var _0xc364=['addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','stringify','error','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','length','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction'];(function(_0x30bf39,_0x2721f1){var _0x111e20=function(_0x484129){while(--_0x484129){_0x30bf39['push'](_0x30bf39['shift']());}};_0x111e20(++_0x2721f1);}(_0xc364,0x157));var _0x4c36=function(_0x571a36,_0x5936f2){_0x571a36=_0x571a36-0x0;var _0x4dd68e=_0xc364[_0x571a36];return _0x4dd68e;};'use strict';var schema=require(_0x4c36('0x0'));var _=require(_0x4c36('0x1'));var rpc={'chatInteraction':require(_0x4c36('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x4c36('0x3')),'faxInteraction':require(_0x4c36('0x4')),'whatsappInteraction':require(_0x4c36('0x5'))};var logger=require(_0x4c36('0x6'))('routing');var tag=schema({'tag':{'type':_0x4c36('0x7'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports['consequence']=function(_0x33ff55,_0x156d1d,_0x3fcc01,_0x16f9b7){return function(_0x1c392b){try{var _0x4d4006={'tag':_0x156d1d[0x0]};var _0x222643=tag[_0x4c36('0x0')](_0x4d4006,{'typecast':!![]});if(_0x222643[_0x4c36('0x8')]){logger['error'](_0x4c36('0x9'),_0x33ff55,_[_0x4c36('0xa')](_0x222643,_0x4c36('0xb'))['join'](',\x20'));logger[_0x4c36('0xc')](_0x4c36('0xd'),_0x33ff55);_0x1c392b[_0x4c36('0xe')]();}else{var _0x1e7c19={'ids':[_0x156d1d[0x0]]};if(rpc[_0x16f9b7[_0x4c36('0xf')]+'Interaction']){rpc[_0x16f9b7[_0x4c36('0xf')]+_0x4c36('0x10')][_0x4c36('0x11')](_0x16f9b7[_0x4c36('0x12')]['id'],_0x1e7c19)[_0x4c36('0x13')](function(_0x181190){logger[_0x4c36('0xc')](_0x4c36('0x14'),_0x33ff55,_0x156d1d[0x1],_0x16f9b7['channel'],_0x16f9b7[_0x4c36('0x12')]['id']);})['catch'](function(_0x5f409c){logger['error']('[%s][TAG]\x20%s',_0x33ff55,JSON[_0x4c36('0x15')](_0x5f409c));logger['info'](_0x4c36('0xd'),_0x33ff55);})['finally'](function(){_0x1c392b[_0x4c36('0xe')]();});}}}catch(_0x45d840){logger[_0x4c36('0x16')](_0x4c36('0x9'),_0x33ff55,_[_0x4c36('0x17')](_0x45d840)?JSON[_0x4c36('0x15')](_0x45d840):_0x45d840);logger[_0x4c36('0xc')](_0x4c36('0xd'),_0x33ff55);_0x1c392b[_0x4c36('0xe')]();}};};
\ No newline at end of file
index 0954e26..00976c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db0=['application/json-rpc','then','parse','result','channelId=','&serviceId=','&sessionId=','&data=','stringify','info','stop','[%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','\x20-\x20','push','urlOnAnswer','?params=','urlOnRing','title','jsonrpc','login','utf8','POST'];(function(_0x1e9d4d,_0x3693a7){var _0x2fe579=function(_0x5a1176){while(--_0x5a1176){_0x1e9d4d['push'](_0x1e9d4d['shift']());}};_0x2fe579(++_0x3693a7);}(_0x8db0,0xaa));var _0x08db=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0x8db0[_0x186376];return _0x2dbdd9;};'use strict';var rp=require(_0x08db('0x0'));var logger=require(_0x08db('0x1'))(_0x08db('0x2'));var _=require(_0x08db('0x3'));var arr=[];exports[_0x08db('0x4')]=function(_0x2ab5da,_0x32a936){return function(_0x2845cc){var _0x2bd24a=_0x32a936[0xa];var _0x1badb0=_0x32a936[0xb];var _0x4b694f=_0x32a936[0xc];var _0x513bb6=_0x32a936[0xd];var _0x5a2a9b=_0x32a936[0xe];var _0xd6df7f=_0x32a936[0xf][_0x08db('0x5')](/\n/g,_0x08db('0x6'));var _0x7b4d8f=_0x32a936[0x10][_0x08db('0x5')](/\n/g,'\x20');if(!arr['includes'](_0x1badb0)){arr[_0x08db('0x7')](_0x1badb0);var _0x577b47=_0x32a936[0x3];var _0x404ff0=_0x32a936[0x4];var _0x5bcd62=_0x32a936[0x1];var _0x27e3c8=_0x32a936[0x0];var _0x7ca10f={};_0x7ca10f[_0x08db('0x8')]=_0x32a936[0x8]+_0x08db('0x9')+_0x4b694f+'|'+_0x2bd24a+'|'+_0x513bb6+'|'+_0x1badb0+'|'+_0x5a2a9b;_0x7ca10f[_0x08db('0xa')]=_0x32a936[0x7]+'?params='+_0x4b694f+'|'+_0x2bd24a+'|'+_0x513bb6+'|'+_0x1badb0+'|'+_0x5a2a9b+'|'+_0xd6df7f+'|'+_0x7b4d8f;_0x7ca10f[_0x08db('0xb')]=_0x32a936[0x9];var _0x29f4b8={};_0x29f4b8[_0x08db('0xc')]='2.0';_0x29f4b8['method']=_0x08db('0xd');var _0x3787d4=[];_0x3787d4['push'](_0x32a936[0x2]);_0x3787d4[_0x08db('0x7')](_0x32a936[0x5]);_0x3787d4[_0x08db('0x7')](_0x32a936[0x6]);_0x29f4b8['params']=_0x3787d4;_0x29f4b8['id']=0x1;var _0x482858=JSON['stringify'](_0x29f4b8);var _0x265e52={'encoding':_0x08db('0xe'),'method':_0x08db('0xf'),'timeout':0x2710,'url':_0x577b47,'headers':{'Content-Type':_0x08db('0x10')},'body':_0x482858};return rp(_0x265e52)[_0x08db('0x11')](function(_0x3a955f){const _0x3f240d=JSON[_0x08db('0x12')](_0x3a955f);if(!_0x3f240d[_0x08db('0x13')]['logged']){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x10bb5e=_0x1badb0;var _0x567711=_0x08db('0x14')+_0x5bcd62+_0x08db('0x15')+_0x27e3c8+_0x08db('0x16')+_0x10bb5e+_0x08db('0x17')+JSON[_0x08db('0x18')](_0x7ca10f);var _0x4dc6ed=_0x404ff0+'?'+_0x567711;return rp(_0x4dc6ed);})[_0x08db('0x11')](function(_0x17410c){logger[_0x08db('0x19')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x2ab5da,_0x17410c);_0x2845cc[_0x08db('0x1a')]();})['catch'](function(_0x4a90ab){logger['error'](_0x08db('0x1b'),_0x2ab5da,_[_0x08db('0x1c')](_0x4a90ab)?JSON[_0x08db('0x18')](_0x4a90ab):_0x4a90ab);_0x2845cc[_0x08db('0x1a')]();});}else{logger['info'](_0x08db('0x1d'),_0x2ab5da);_0x2845cc[_0x08db('0x1e')]();}};};
\ No newline at end of file
+var _0x0c93=['params','utf8','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&data=','stringify','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','routing','\x20-\x20','replace','includes','push','urlOnAnswer','urlOnRing','?params=','jsonrpc','2.0','method','login'];(function(_0x6abae1,_0x11a02f){var _0x14dad0=function(_0xf1fa3){while(--_0xf1fa3){_0x6abae1['push'](_0x6abae1['shift']());}};_0x14dad0(++_0x11a02f);}(_0x0c93,0x1dd));var _0x30c9=function(_0xc0927e,_0x5ac661){_0xc0927e=_0xc0927e-0x0;var _0x1ec30f=_0x0c93[_0xc0927e];return _0x1ec30f;};'use strict';var rp=require(_0x30c9('0x0'));var logger=require('../../../../config/logger')(_0x30c9('0x1'));var _=require('lodash');var arr=[];exports['consequence']=function(_0x1229a1,_0x2a3e4a){return function(_0x25c8f0){var _0x2a57ca=_0x2a3e4a[0xa];var _0x56c8d5=_0x2a3e4a[0xb];var _0x38e974=_0x2a3e4a[0xc];var _0x5ee79c=_0x2a3e4a[0xd];var _0x11e635=_0x2a3e4a[0xe];var _0x52e2ff=_0x2a3e4a[0xf]['replace'](/\n/g,_0x30c9('0x2'));var _0x1289c3=_0x2a3e4a[0x10][_0x30c9('0x3')](/\n/g,'\x20');if(!arr[_0x30c9('0x4')](_0x56c8d5)){arr[_0x30c9('0x5')](_0x56c8d5);var _0x1c639a=_0x2a3e4a[0x3];var _0x5cff0a=_0x2a3e4a[0x4];var _0x2b96d2=_0x2a3e4a[0x1];var _0x2f80f1=_0x2a3e4a[0x0];var _0x15619b={};_0x15619b[_0x30c9('0x6')]=_0x2a3e4a[0x8]+'?params='+_0x38e974+'|'+_0x2a57ca+'|'+_0x5ee79c+'|'+_0x56c8d5+'|'+_0x11e635;_0x15619b[_0x30c9('0x7')]=_0x2a3e4a[0x7]+_0x30c9('0x8')+_0x38e974+'|'+_0x2a57ca+'|'+_0x5ee79c+'|'+_0x56c8d5+'|'+_0x11e635+'|'+_0x52e2ff+'|'+_0x1289c3;_0x15619b['title']=_0x2a3e4a[0x9];var _0x29196c={};_0x29196c[_0x30c9('0x9')]=_0x30c9('0xa');_0x29196c[_0x30c9('0xb')]=_0x30c9('0xc');var _0x38c1f4=[];_0x38c1f4[_0x30c9('0x5')](_0x2a3e4a[0x2]);_0x38c1f4[_0x30c9('0x5')](_0x2a3e4a[0x5]);_0x38c1f4[_0x30c9('0x5')](_0x2a3e4a[0x6]);_0x29196c[_0x30c9('0xd')]=_0x38c1f4;_0x29196c['id']=0x1;var _0x3e7dd0=JSON['stringify'](_0x29196c);var _0x335e54={'encoding':_0x30c9('0xe'),'method':_0x30c9('0xf'),'timeout':0x2710,'url':_0x1c639a,'headers':{'Content-Type':_0x30c9('0x10')},'body':_0x3e7dd0};return rp(_0x335e54)[_0x30c9('0x11')](function(_0x4ca1f9){const _0x2a4115=JSON[_0x30c9('0x12')](_0x4ca1f9);if(!_0x2a4115[_0x30c9('0x13')][_0x30c9('0x14')]){throw new Error(_0x30c9('0x15'));}var _0x39d300=_0x56c8d5;var _0x2d7425=_0x30c9('0x16')+_0x2b96d2+_0x30c9('0x17')+_0x2f80f1+'&sessionId='+_0x39d300+_0x30c9('0x18')+JSON[_0x30c9('0x19')](_0x15619b);var _0x179297=_0x5cff0a+'?'+_0x2d7425;return rp(_0x179297);})[_0x30c9('0x11')](function(_0x36e88e){logger[_0x30c9('0x1a')](_0x30c9('0x1b'),_0x1229a1,_0x36e88e);_0x25c8f0[_0x30c9('0x1c')]();})[_0x30c9('0x1d')](function(_0xb99614){logger[_0x30c9('0x1e')](_0x30c9('0x1f'),_0x1229a1,_[_0x30c9('0x20')](_0xb99614)?JSON[_0x30c9('0x19')](_0xb99614):_0xb99614);_0x25c8f0[_0x30c9('0x1c')]();});}else{logger[_0x30c9('0x1a')](_0x30c9('0x21'),_0x1229a1);_0x25c8f0[_0x30c9('0x22')]();}};};
\ No newline at end of file
index 0aebe41..c516154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x2c552b,_0x3726c9){var _0x21b781=function(_0x49b109){while(--_0x49b109){_0x2c552b['push'](_0x2c552b['shift']());}};_0x21b781(++_0x3726c9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x234603,_0xce30c7){var _0x146d01=function(_0x5c23db){while(--_0x5c23db){_0x234603['push'](_0x234603['shift']());}};_0x146d01(++_0xce30c7);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
index d028d60..0b65f5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x232e=['isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','checkWaitingNotifications','isArray','applications','length','join','app','.js','toLowerCase','autoreply','split','mail','push','slice','dialogflow','dialogflowv2','appdata','amazonlex','tag','TagId','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','Push\x20new\x20rule','on\x20interval','info','Applications\x20executed','stringify','emit','Skipped\x20routing\x20for\x20%s','error','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','find','chatQueues','name','paused','waiting','mailQueues','openchannelQueues','available','loggedIn','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','path','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0x232e,0xb5));var _0xe232=function(_0x36b557,_0x4250e8){_0x36b557=_0x36b557-0x0;var _0x29cc05=_0x232e[_0x36b557];return _0x29cc05;};'use strict';var _=require('lodash');var util=require(_0xe232('0x0'));var path=require(_0xe232('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require('bluebird');var utils=require('./applications/utils');var sUtils=require('./applications/strategy/util');var logger=require(_0xe232('0x2'))(_0xe232('0x3'));var rpc={'openchannelQueueReport':require(_0xe232('0x4')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0xe232('0x5')),'smsQueueReport':require(_0xe232('0x6')),'faxQueueReport':require(_0xe232('0x7')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xe232('0x8'));function getId(_0x1f5741,_0x52ae1a,_0x48fb98){return util[_0xe232('0x9')](_0xe232('0xa'),_0x1f5741,_0x52ae1a||0x0,_0x48fb98||0x0);}function getIntervals(_0x159a6e,_0x3495eb){var _0x4ce0a8=[];if(!_[_0xe232('0xb')](_0x3495eb[_0xe232('0xc')])&&!_[_0xe232('0xb')](_0x159a6e[_0x3495eb[_0xe232('0xc')]])&&!_[_0xe232('0xb')](_0x159a6e[_0x3495eb[_0xe232('0xc')]][_0xe232('0xd')])){_0x4ce0a8=_[_0xe232('0xe')](_0x159a6e[_0x3495eb[_0xe232('0xc')]]['Intervals'],_0xe232('0xf'));}else if(!_[_0xe232('0xb')](_0x3495eb[_0xe232('0xf')])){_0x4ce0a8=[_0x3495eb[_0xe232('0xf')]];}return _0x4ce0a8;}exports['listen']=function(_0x50d646){_0x50d646[_0xe232('0x10')]={};return new BPromise(function(_0x5a0024,_0xe576f0){var _0x186a65={'Start':function(_0x54b5a3){var _0x4ebce4=this;return new Promise(function(_0x140c9c,_0x27a8ad){if(_0x54b5a3){try{var _0x5ecded=[];var _0x1dcc07=getId(_0x54b5a3[_0xe232('0x11')],_0x54b5a3[_0xe232('0x12')]?_0x54b5a3['message']['id']:0x0,_0x54b5a3[_0xe232('0x13')]?_0x54b5a3[_0xe232('0x13')]['id']:0x0);var _0x4e4a80=sUtils[_0xe232('0x14')](_0x50d646,_0x54b5a3);if(!_0x4e4a80&&_0x54b5a3['applications']&&_[_0xe232('0x15')](_0x54b5a3[_0xe232('0x16')])&&_0x54b5a3[_0xe232('0x16')][_0xe232('0x17')]){for(var _0x2a81dc=0x0;_0x2a81dc<_0x54b5a3[_0xe232('0x16')][_0xe232('0x17')];_0x2a81dc+=0x1){var _0x16d7c1=_0x54b5a3['applications'][_0x2a81dc];if(fs['existsSync'](path[_0xe232('0x18')](__dirname,'applications',_0x16d7c1[_0xe232('0x19')]+_0xe232('0x1a')))){var _0x37cfd9=[];switch(_0x16d7c1[_0xe232('0x19')][_0xe232('0x1b')]()){case _0xe232('0x1c'):var _0x51e7ab=_0x16d7c1['appdata'][_0xe232('0x1d')](',');if(_0x54b5a3[_0xe232('0x11')]===_0xe232('0x1e')){_0x37cfd9['push'](_0x51e7ab[0x0]);_0x37cfd9[_0xe232('0x1f')](_0x51e7ab[0x1]);_0x37cfd9[_0xe232('0x1f')](_0x51e7ab[_0xe232('0x20')](0x2,_0x51e7ab['length'])[_0xe232('0x18')](','));}else{_0x37cfd9['push'](_0x51e7ab[0x0]);_0x37cfd9[_0xe232('0x1f')](_0x51e7ab['slice'](0x1,_0x51e7ab[_0xe232('0x17')])[_0xe232('0x18')](','));}break;case _0xe232('0x21'):var _0x5a11a9=_0x16d7c1['appdata']['split'](',');_0x37cfd9[_0xe232('0x1f')](_0x5a11a9[0x0]);_0x37cfd9['push'](_0x5a11a9[0x1]);_0x37cfd9[_0xe232('0x1f')](_0x5a11a9[_0xe232('0x20')](0x2,_0x5a11a9['length'])['join'](','));break;case _0xe232('0x22'):var _0x26d9e2=_0x16d7c1[_0xe232('0x23')][_0xe232('0x1d')](',');_0x37cfd9[_0xe232('0x1f')](_0x26d9e2[0x0]);_0x37cfd9[_0xe232('0x1f')](_0x26d9e2[0x1]);_0x37cfd9[_0xe232('0x1f')](_0x26d9e2[0x2]);_0x37cfd9[_0xe232('0x1f')](_0x26d9e2[0x3]);_0x37cfd9[_0xe232('0x1f')](_0x26d9e2[_0xe232('0x20')](0x4,_0x26d9e2[_0xe232('0x17')])[_0xe232('0x18')](','));break;case _0xe232('0x24'):var _0x2401f2=_0x16d7c1[_0xe232('0x23')][_0xe232('0x1d')](',');_0x37cfd9[_0xe232('0x1f')](_0x2401f2[0x0]);_0x37cfd9[_0xe232('0x1f')](_0x2401f2[0x1]);_0x37cfd9[_0xe232('0x1f')](_0x2401f2[0x2]);_0x37cfd9[_0xe232('0x1f')](_0x2401f2[0x3]);_0x37cfd9['push'](_0x2401f2['slice'](0x4,_0x2401f2['length'])[_0xe232('0x18')](','));break;case'message':_0x37cfd9[_0xe232('0x1f')](_0x16d7c1[_0xe232('0x23')]);break;case _0xe232('0x25'):_0x37cfd9[_0xe232('0x1f')](_0x16d7c1[_0xe232('0x26')]);_0x37cfd9['push'](_0x16d7c1[_0xe232('0x23')]);break;case'tvox':var _0x49bab2=utils['getMustacheRender'](_0x54b5a3['account'][_0xe232('0x27')],_0x54b5a3);var _0x511a83=_0x16d7c1[_0xe232('0x23')]['split'](',');_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x0]);_0x37cfd9['push'](_0x511a83[0x1]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x2]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x3]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x4]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x5]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x6]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x7]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x8]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0x9]);_0x37cfd9[_0xe232('0x1f')](_0x511a83[0xa]);_0x37cfd9[_0xe232('0x1f')](_0x54b5a3['interaction']['id']);_0x37cfd9[_0xe232('0x1f')](_0x54b5a3['message']['id']);_0x37cfd9[_0xe232('0x1f')](_0x16d7c1[_0xe232('0x28')]);_0x37cfd9[_0xe232('0x1f')](_0x54b5a3[_0xe232('0x13')][_0xe232('0x29')]);_0x37cfd9[_0xe232('0x1f')](_0x54b5a3[_0xe232('0x2a')][_0xe232('0x2a')]);_0x37cfd9[_0xe232('0x1f')](_0x49bab2);break;default:_0x37cfd9=_[_0xe232('0xb')](_0x16d7c1[_0xe232('0x23')])?[]:_0x16d7c1[_0xe232('0x23')][_0xe232('0x1d')](',');}var _0xa7609f={'id':util[_0xe232('0x9')](_0xe232('0x2b'),_0x1dcc07,_0x16d7c1['id'],_0x16d7c1[_0xe232('0x19')]),'condition':require(_0xe232('0x2c'))[_0xe232('0x2d')](_0x1dcc07,getIntervals(_0x50d646[_0xe232('0x2e')],_0x16d7c1),_0x50d646),'consequence':require(_0xe232('0x2f')+_0x16d7c1[_0xe232('0x19')])[_0xe232('0x30')](_0x1dcc07,_0x37cfd9,_0x50d646,_0x54b5a3),'p':_0x16d7c1[_0xe232('0x31')]||0x0};logger['info'](_0xe232('0x32'),_0xa7609f['id'],_0xe232('0x33'),getIntervals(_0x50d646[_0xe232('0x2e')],_0x16d7c1)[_0xe232('0x18')]('\x20|\x20'));_0x5ecded[_0xe232('0x1f')](_0xa7609f);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,_0xe232('0x16'),_0x16d7c1['app']+_0xe232('0x1a')));}}_0x50d646[_0xe232('0x10')][_0x1dcc07]=new RuleEngine(_0x5ecded);_0x50d646[_0xe232('0x10')][_0x1dcc07]['execute'](_0x54b5a3,function(_0x16524c){logger[_0xe232('0x34')](_0xe232('0x35'),JSON[_0xe232('0x36')](_0x16524c['matchPath']));if(_0x50d646[_0xe232('0x10')][_0x1dcc07]){_0x50d646[_0xe232('0x10')][_0x1dcc07][_0xe232('0x37')]('complete');}});return _0x140c9c({'code':0xc8,'message':_0x54b5a3});}else{if(_0x4e4a80){logger['info'](util[_0xe232('0x9')](_0xe232('0x38'),_0x1dcc07));}else{logger['info']('No\x20applications\x20to\x20execute');}return _0x140c9c({'code':0xc8,'message':_0x54b5a3});}}catch(_0x25f888){logger['error'](_0x25f888['stack']);return _0x27a8ad(_0x4ebce4[_0xe232('0x39')](0x1f4,_0x25f888));}}return _0x27a8ad(_0xe232('0x3a'));});},'AcceptMessage':function(_0x5dc539){var _0x11c4bf=this;return new Promise(function(_0x2477b4,_0x2097f4){if(_0x5dc539[_0xe232('0x3b')]&&_0x5dc539[_0xe232('0x3b')]['id']){if(_0x50d646[_0xe232('0x3c')][_0x5dc539['agent']['id']]){_0x50d646['agents'][_0x5dc539[_0xe232('0x3b')]['id']][_0xe232('0x3d')]=![];_0x50d646[_0xe232('0x3c')][_0x5dc539[_0xe232('0x3b')]['id']][_0xe232('0x3e')]=undefined;}}if(_0x5dc539[_0xe232('0x12')]&&_0x5dc539['message']['id']){try{var _0x387b60=getId(_0x5dc539[_0xe232('0x11')],_0x5dc539[_0xe232('0x12')]?_0x5dc539[_0xe232('0x12')]['id']:0x0,_0x5dc539[_0xe232('0x13')]?_0x5dc539[_0xe232('0x13')]['id']:0x0);if(_0x50d646[_0xe232('0x10')][_0x387b60]){_0x50d646[_0xe232('0x10')][_0x387b60][_0xe232('0x37')]('end');if(rpc[_0x5dc539[_0xe232('0x11')]+_0xe232('0x3f')]){rpc[_0x5dc539[_0xe232('0x11')]+_0xe232('0x3f')][_0xe232('0x40')](_0x387b60,{'UserId':_0x5dc539[_0xe232('0x12')]['UserId']})[_0xe232('0x41')](function(){logger['error'](_0xe232('0x42'));});}}return _0x2477b4({'code':0xc8,'message':_0x5dc539});}catch(_0x60f49b){logger[_0xe232('0x39')](_0x60f49b[_0xe232('0x43')]);return _0x2097f4(_0x11c4bf[_0xe232('0x39')](0x1f4,_0x60f49b));}}logger['error'](_0xe232('0x44'));return _0x2097f4(_0x11c4bf[_0xe232('0x39')](0x1f4,_0xe232('0x44')));});},'RejectMessage':function(_0x13a346){var _0x20a727=this;return new Promise(function(_0x13c5ae,_0x52ebbc){if(_0x13a346[_0xe232('0x3b')]&&_0x13a346['agent']['id']){try{if(_0x50d646[_0xe232('0x3c')][_0x13a346[_0xe232('0x3b')]['id']]){_0x50d646['agents'][_0x13a346[_0xe232('0x3b')]['id']][_0xe232('0x3d')]=![];_0x50d646['agents'][_0x13a346[_0xe232('0x3b')]['id']]['busyQueue']=undefined;}return _0x13c5ae({'code':0xc8,'message':_0x13a346});}catch(_0x14fa49){logger[_0xe232('0x39')](_0x14fa49[_0xe232('0x43')]);return _0x52ebbc(_0x20a727[_0xe232('0x39')](0x1f4,_0x14fa49));}}logger['error'](_0xe232('0x44'));return _0x52ebbc(_0x20a727[_0xe232('0x39')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x3176f1){var _0x296de8=this;return new Promise(function(_0x357450,_0x247f32){if(_0x3176f1[_0xe232('0x11')]&&_0x3176f1[_0xe232('0x13')]&&_0x3176f1[_0xe232('0x13')]['id']){try{var _0x4d091d=getId(_0x3176f1[_0xe232('0x11')],_0x3176f1[_0xe232('0x12')]?_0x3176f1[_0xe232('0x12')]['id']:0x0,_0x3176f1[_0xe232('0x13')]?_0x3176f1[_0xe232('0x13')]['id']:0x0);if(_0x50d646[_0xe232('0x10')][_0x4d091d]){_0x50d646[_0xe232('0x10')][_0x4d091d][_0xe232('0x37')]('end');}return _0x357450({'code':0xc8,'message':_0x3176f1});}catch(_0x426f92){logger[_0xe232('0x39')](_0x426f92['stack']);return _0x247f32(_0x296de8[_0xe232('0x39')](0x1f4,_0x426f92));}}logger[_0xe232('0x39')]('message\x20is\x20empty');return _0x247f32(_0x296de8[_0xe232('0x39')](0x1f4,_0xe232('0x44')));});},'AgentCapacity':function(_0x260fba){var _0x4f8c79=this;return new Promise(function(_0x2f7a7a,_0x4a6bff){if(_0x50d646['agents'][_0xe232('0x45')](_0x260fba['id'])){for(var _0x5642d5 in _0x260fba[_0xe232('0x46')]){if(_0x260fba[_0xe232('0x46')][_0xe232('0x45')](_0x5642d5)){if(_0x50d646[_0xe232('0x3c')][_0x260fba['id']][_0xe232('0x45')](_0x5642d5+'CurrentCapacity')){_0x50d646[_0xe232('0x3c')][_0x260fba['id']][_0x5642d5+_0xe232('0x47')]=parseInt(_0x260fba['capacity'][_0x5642d5],0xa);}}}_0x50d646[_0xe232('0x3c')][_0x260fba['id']][_0xe232('0x48')]();return _0x2f7a7a({'code':0xc8,'message':_0x50d646[_0xe232('0x3c')][_0x260fba['id']]});}else{return _0x4a6bff(_0x4f8c79[_0xe232('0x39')](0x1f4,_0xe232('0x49')));}});},'Agents':function(_0x2476a9){return new Promise(function(_0x3dbc5f){var _0x3c8946=_[_0xe232('0x4a')](_0x50d646[_0xe232('0x3c')]);if(_0x2476a9&&_0x2476a9['id']){var _0x521751=_[_0xe232('0x4b')](_0x3c8946,function(_0x1f9f84){return _0x1f9f84['id']===_0x2476a9['id'];});_0x3dbc5f(_0x521751);}else{_0x3dbc5f({'count':_0x3c8946[_0xe232('0x17')],'rows':_0x3c8946});}});},'ChatQueues':function(){return new Promise(function(_0x383cf9){var _0x2a634d=[];for(var _0x1ead82 in _0x50d646['chatQueues']){if(_0x50d646[_0xe232('0x4c')][_0xe232('0x45')](_0x1ead82)){var _0x3b410e=_0x50d646[_0xe232('0x4c')][_0x1ead82];var _0x31f782={'id':_0x3b410e['id'],'available':_0x3b410e['available'],'loggedIn':_0x3b410e['loggedIn'],'name':_0x3b410e[_0xe232('0x4d')],'paused':_0x3b410e[_0xe232('0x4e')],'waiting':_0x3b410e[_0xe232('0x4f')]};_0x2a634d[_0xe232('0x1f')](_0x31f782);}}_0x383cf9({'count':_0x2a634d[_0xe232('0x17')],'rows':_0x2a634d});});},'MailQueues':function(){return new Promise(function(_0xa25545){var _0x3f6714=[];for(var _0x5ba733 in _0x50d646[_0xe232('0x50')]){if(_0x50d646['mailQueues']['hasOwnProperty'](_0x5ba733)){var _0x469da9=_0x50d646[_0xe232('0x50')][_0x5ba733];var _0x5f58a7={'id':_0x469da9['id'],'available':_0x469da9['available'],'loggedIn':_0x469da9['loggedIn'],'name':_0x469da9[_0xe232('0x4d')],'paused':_0x469da9[_0xe232('0x4e')],'waiting':_0x469da9[_0xe232('0x4f')]};_0x3f6714[_0xe232('0x1f')](_0x5f58a7);}}_0xa25545({'count':_0x3f6714[_0xe232('0x17')],'rows':_0x3f6714});});},'OpenchannelQueues':function(){return new Promise(function(_0x27efa6){var _0x4ac300=[];for(var _0xa32896 in _0x50d646['openchannelQueues']){if(_0x50d646['openchannelQueues'][_0xe232('0x45')](_0xa32896)){var _0x1f9261=_0x50d646[_0xe232('0x51')][_0xa32896];var _0x1b484c={'id':_0x1f9261['id'],'available':_0x1f9261[_0xe232('0x52')],'loggedIn':_0x1f9261[_0xe232('0x53')],'name':_0x1f9261[_0xe232('0x4d')],'paused':_0x1f9261[_0xe232('0x4e')],'waiting':_0x1f9261[_0xe232('0x4f')]};_0x4ac300['push'](_0x1b484c);}}_0x27efa6({'count':_0x4ac300[_0xe232('0x17')],'rows':_0x4ac300});});},'SmsQueues':function(){return new Promise(function(_0x1654eb){var _0x3596f9=[];for(var _0x257f02 in _0x50d646['smsQueues']){if(_0x50d646[_0xe232('0x54')][_0xe232('0x45')](_0x257f02)){var _0x38efd1=_0x50d646[_0xe232('0x54')][_0x257f02];var _0x15ff89={'id':_0x38efd1['id'],'available':_0x38efd1[_0xe232('0x52')],'loggedIn':_0x38efd1[_0xe232('0x53')],'name':_0x38efd1[_0xe232('0x4d')],'paused':_0x38efd1[_0xe232('0x4e')],'waiting':_0x38efd1['waiting']};_0x3596f9[_0xe232('0x1f')](_0x15ff89);}}_0x1654eb({'count':_0x3596f9[_0xe232('0x17')],'rows':_0x3596f9});});},'FaxQueues':function(){return new Promise(function(_0x8b9032){var _0x1b5bf3=[];for(var _0x11e09b in _0x50d646[_0xe232('0x55')]){if(_0x50d646[_0xe232('0x55')][_0xe232('0x45')](_0x11e09b)){var _0x507525=_0x50d646['faxQueues'][_0x11e09b];var _0x1b921e={'id':_0x507525['id'],'available':_0x507525[_0xe232('0x52')],'loggedIn':_0x507525['loggedIn'],'name':_0x507525[_0xe232('0x4d')],'paused':_0x507525[_0xe232('0x4e')],'waiting':_0x507525['waiting']};_0x1b5bf3[_0xe232('0x1f')](_0x1b921e);}}_0x8b9032({'count':_0x1b5bf3[_0xe232('0x17')],'rows':_0x1b5bf3});});},'WhatsappQueues':function(){return new Promise(function(_0x5a78bf){var _0x179809=[];for(var _0x1adb5a in _0x50d646['whatsappQueues']){if(_0x50d646[_0xe232('0x56')][_0xe232('0x45')](_0x1adb5a)){var _0x412375=_0x50d646['whatsappQueues'][_0x1adb5a];var _0x147605={'id':_0x412375['id'],'available':_0x412375['available'],'loggedIn':_0x412375[_0xe232('0x53')],'name':_0x412375[_0xe232('0x4d')],'paused':_0x412375[_0xe232('0x4e')],'waiting':_0x412375['waiting']};_0x179809[_0xe232('0x1f')](_0x147605);}}_0x5a78bf({'count':_0x179809[_0xe232('0x17')],'rows':_0x179809});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x339d37){var _0x516a08=_[_0xe232('0x4a')](_0x50d646[_0xe232('0x57')]);_0x339d37({'count':_0x516a08[_0xe232('0x17')],'rows':_0x516a08});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x234f30){var _0x530971=_['values'](_0x50d646[_0xe232('0x58')]);_0x234f30({'count':_0x530971['length'],'rows':_0x530971});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x33e95a){var _0x2d707f=_[_0xe232('0x4a')](_0x50d646['openchannelQueuesWaitingInteractions']);_0x33e95a({'count':_0x2d707f[_0xe232('0x17')],'rows':_0x2d707f});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x59347f){var _0x1f5ed2=_['values'](_0x50d646[_0xe232('0x59')]);_0x59347f({'count':_0x1f5ed2[_0xe232('0x17')],'rows':_0x1f5ed2});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x29a671){var _0x1a0bb5=_[_0xe232('0x4a')](_0x50d646[_0xe232('0x5a')]);_0x29a671({'count':_0x1a0bb5[_0xe232('0x17')],'rows':_0x1a0bb5});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0xfdf2f0){var _0x589354=_['values'](_0x50d646['whatsappQueuesWaitingInteractions']);_0xfdf2f0({'count':_0x589354[_0xe232('0x17')],'rows':_0x589354});});}};var _0x5a5c4c=jayson[_0xe232('0x5b')](_0x186a65)[_0xe232('0x5c')]();_0x5a5c4c['on']('error',function(_0x50a5de){logger[_0xe232('0x39')](JSON['stringify'](_0x50a5de));return _0xe576f0(_0x50a5de);});_0x5a5c4c[_0xe232('0x5d')](0x232c,'127.0.0.1',function(){console[_0xe232('0x5e')](_0xe232('0x5f'),0x232c);return _0x5a0024('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x8d93=['faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','path','bluebird','./applications/strategy/util','routing','../rpc/openchannelQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','Intervals','map','IntervalId','interval','listen','rules','channel','message','checkWaitingNotifications','applications','length','existsSync','join','app','toLowerCase','appdata','split','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','interaction','ContactId','body','%s:%s:%s','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','\x20|\x20','error','.js','Applications\x20executed','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8d93,0x17e));var _0x38d9=function(_0x427bc1,_0x46698c){_0x427bc1=_0x427bc1-0x0;var _0x293edc=_0x8d93[_0x427bc1];return _0x293edc;};'use strict';var _=require('lodash');var util=require('util');var path=require(_0x38d9('0x0'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x38d9('0x1'));var utils=require('./applications/utils');var sUtils=require(_0x38d9('0x2'));var logger=require('../../../config/logger')(_0x38d9('0x3'));var rpc={'openchannelQueueReport':require(_0x38d9('0x4')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x38d9('0x5')),'whatsappQueueReport':require(_0x38d9('0x6'))};var RuleEngine=require(_0x38d9('0x7'));function getId(_0x5a4c5a,_0x43250f,_0x4fb558){return util[_0x38d9('0x8')](_0x38d9('0x9'),_0x5a4c5a,_0x43250f||0x0,_0x4fb558||0x0);}function getIntervals(_0x1e5fbf,_0x48dac2){var _0x3f902=[];if(!_[_0x38d9('0xa')](_0x48dac2['IntervalId'])&&!_[_0x38d9('0xa')](_0x1e5fbf[_0x48dac2['IntervalId']])&&!_[_0x38d9('0xa')](_0x1e5fbf[_0x48dac2['IntervalId']][_0x38d9('0xb')])){_0x3f902=_[_0x38d9('0xc')](_0x1e5fbf[_0x48dac2[_0x38d9('0xd')]]['Intervals'],_0x38d9('0xe'));}else if(!_['isNil'](_0x48dac2[_0x38d9('0xe')])){_0x3f902=[_0x48dac2[_0x38d9('0xe')]];}return _0x3f902;}exports[_0x38d9('0xf')]=function(_0x289224){_0x289224[_0x38d9('0x10')]={};return new BPromise(function(_0x268c91,_0x5708cf){var _0x19100c={'Start':function(_0x2ad71d){var _0x5b07fd=this;return new Promise(function(_0x59e844,_0x384694){if(_0x2ad71d){try{var _0x6c4ea5=[];var _0xf9906c=getId(_0x2ad71d[_0x38d9('0x11')],_0x2ad71d[_0x38d9('0x12')]?_0x2ad71d[_0x38d9('0x12')]['id']:0x0,_0x2ad71d['interaction']?_0x2ad71d['interaction']['id']:0x0);var _0x2e1ee7=sUtils[_0x38d9('0x13')](_0x289224,_0x2ad71d);if(!_0x2e1ee7&&_0x2ad71d['applications']&&_['isArray'](_0x2ad71d[_0x38d9('0x14')])&&_0x2ad71d['applications'][_0x38d9('0x15')]){for(var _0x591c2d=0x0;_0x591c2d<_0x2ad71d[_0x38d9('0x14')][_0x38d9('0x15')];_0x591c2d+=0x1){var _0x4aaa6c=_0x2ad71d[_0x38d9('0x14')][_0x591c2d];if(fs[_0x38d9('0x16')](path[_0x38d9('0x17')](__dirname,_0x38d9('0x14'),_0x4aaa6c[_0x38d9('0x18')]+'.js'))){var _0xf73f48=[];switch(_0x4aaa6c['app'][_0x38d9('0x19')]()){case'autoreply':var _0x157751=_0x4aaa6c[_0x38d9('0x1a')][_0x38d9('0x1b')](',');if(_0x2ad71d[_0x38d9('0x11')]==='mail'){_0xf73f48['push'](_0x157751[0x0]);_0xf73f48[_0x38d9('0x1c')](_0x157751[0x1]);_0xf73f48['push'](_0x157751[_0x38d9('0x1d')](0x2,_0x157751[_0x38d9('0x15')])['join'](','));}else{_0xf73f48[_0x38d9('0x1c')](_0x157751[0x0]);_0xf73f48[_0x38d9('0x1c')](_0x157751[_0x38d9('0x1d')](0x1,_0x157751[_0x38d9('0x15')])[_0x38d9('0x17')](','));}break;case _0x38d9('0x1e'):var _0x1f01b0=_0x4aaa6c[_0x38d9('0x1a')][_0x38d9('0x1b')](',');_0xf73f48[_0x38d9('0x1c')](_0x1f01b0[0x0]);_0xf73f48['push'](_0x1f01b0[0x1]);_0xf73f48[_0x38d9('0x1c')](_0x1f01b0[_0x38d9('0x1d')](0x2,_0x1f01b0[_0x38d9('0x15')])[_0x38d9('0x17')](','));break;case _0x38d9('0x1f'):var _0x199694=_0x4aaa6c[_0x38d9('0x1a')][_0x38d9('0x1b')](',');_0xf73f48[_0x38d9('0x1c')](_0x199694[0x0]);_0xf73f48['push'](_0x199694[0x1]);_0xf73f48[_0x38d9('0x1c')](_0x199694[0x2]);_0xf73f48[_0x38d9('0x1c')](_0x199694[0x3]);_0xf73f48[_0x38d9('0x1c')](_0x199694[_0x38d9('0x1d')](0x4,_0x199694[_0x38d9('0x15')])[_0x38d9('0x17')](','));break;case _0x38d9('0x20'):var _0x2a37ad=_0x4aaa6c['appdata'][_0x38d9('0x1b')](',');_0xf73f48[_0x38d9('0x1c')](_0x2a37ad[0x0]);_0xf73f48[_0x38d9('0x1c')](_0x2a37ad[0x1]);_0xf73f48[_0x38d9('0x1c')](_0x2a37ad[0x2]);_0xf73f48[_0x38d9('0x1c')](_0x2a37ad[0x3]);_0xf73f48[_0x38d9('0x1c')](_0x2a37ad['slice'](0x4,_0x2a37ad['length'])[_0x38d9('0x17')](','));break;case _0x38d9('0x12'):_0xf73f48['push'](_0x4aaa6c[_0x38d9('0x1a')]);break;case _0x38d9('0x21'):_0xf73f48[_0x38d9('0x1c')](_0x4aaa6c[_0x38d9('0x22')]);_0xf73f48['push'](_0x4aaa6c[_0x38d9('0x1a')]);break;case _0x38d9('0x23'):var _0x305082=utils[_0x38d9('0x24')](_0x2ad71d['account']['notificationTemplate'],_0x2ad71d);var _0x1debac=_0x4aaa6c[_0x38d9('0x1a')]['split'](',');_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x0]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x1]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x2]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x3]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x4]);_0xf73f48['push'](_0x1debac[0x5]);_0xf73f48['push'](_0x1debac[0x6]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x7]);_0xf73f48['push'](_0x1debac[0x8]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0x9]);_0xf73f48[_0x38d9('0x1c')](_0x1debac[0xa]);_0xf73f48[_0x38d9('0x1c')](_0x2ad71d[_0x38d9('0x25')]['id']);_0xf73f48[_0x38d9('0x1c')](_0x2ad71d[_0x38d9('0x12')]['id']);_0xf73f48[_0x38d9('0x1c')](_0x4aaa6c['ChatWebsiteId']);_0xf73f48[_0x38d9('0x1c')](_0x2ad71d[_0x38d9('0x25')][_0x38d9('0x26')]);_0xf73f48[_0x38d9('0x1c')](_0x2ad71d[_0x38d9('0x27')][_0x38d9('0x27')]);_0xf73f48['push'](_0x305082);break;default:_0xf73f48=_['isNil'](_0x4aaa6c[_0x38d9('0x1a')])?[]:_0x4aaa6c[_0x38d9('0x1a')][_0x38d9('0x1b')](',');}var _0x22a054={'id':util[_0x38d9('0x8')](_0x38d9('0x28'),_0xf9906c,_0x4aaa6c['id'],_0x4aaa6c['app']),'condition':require('./interval')['condition'](_0xf9906c,getIntervals(_0x289224[_0x38d9('0x29')],_0x4aaa6c),_0x289224),'consequence':require(_0x38d9('0x2a')+_0x4aaa6c[_0x38d9('0x18')])[_0x38d9('0x2b')](_0xf9906c,_0xf73f48,_0x289224,_0x2ad71d),'p':_0x4aaa6c[_0x38d9('0x2c')]||0x0};logger[_0x38d9('0x2d')](_0x38d9('0x2e'),_0x22a054['id'],'on\x20interval',getIntervals(_0x289224[_0x38d9('0x29')],_0x4aaa6c)['join'](_0x38d9('0x2f')));_0x6c4ea5['push'](_0x22a054);}else{logger[_0x38d9('0x30')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x38d9('0x17')](__dirname,'applications',_0x4aaa6c[_0x38d9('0x18')]+_0x38d9('0x31')));}}_0x289224[_0x38d9('0x10')][_0xf9906c]=new RuleEngine(_0x6c4ea5);_0x289224[_0x38d9('0x10')][_0xf9906c]['execute'](_0x2ad71d,function(_0x2fa2c0){logger[_0x38d9('0x2d')](_0x38d9('0x32'),JSON['stringify'](_0x2fa2c0[_0x38d9('0x33')]));if(_0x289224['rules'][_0xf9906c]){_0x289224[_0x38d9('0x10')][_0xf9906c][_0x38d9('0x34')](_0x38d9('0x35'));}});return _0x59e844({'code':0xc8,'message':_0x2ad71d});}else{if(_0x2e1ee7){logger[_0x38d9('0x2d')](util[_0x38d9('0x8')](_0x38d9('0x36'),_0xf9906c));}else{logger['info'](_0x38d9('0x37'));}return _0x59e844({'code':0xc8,'message':_0x2ad71d});}}catch(_0x73525a){logger[_0x38d9('0x30')](_0x73525a[_0x38d9('0x38')]);return _0x384694(_0x5b07fd['error'](0x1f4,_0x73525a));}}return _0x384694(_0x38d9('0x39'));});},'AcceptMessage':function(_0x55a459){var _0x1755d3=this;return new Promise(function(_0x40e081,_0x5116e2){if(_0x55a459[_0x38d9('0x3a')]&&_0x55a459[_0x38d9('0x3a')]['id']){if(_0x289224[_0x38d9('0x3b')][_0x55a459[_0x38d9('0x3a')]['id']]){_0x289224['agents'][_0x55a459['agent']['id']][_0x38d9('0x3c')]=![];_0x289224[_0x38d9('0x3b')][_0x55a459['agent']['id']][_0x38d9('0x3d')]=undefined;}}if(_0x55a459[_0x38d9('0x12')]&&_0x55a459[_0x38d9('0x12')]['id']){try{var _0x1d8d1a=getId(_0x55a459[_0x38d9('0x11')],_0x55a459[_0x38d9('0x12')]?_0x55a459[_0x38d9('0x12')]['id']:0x0,_0x55a459['interaction']?_0x55a459[_0x38d9('0x25')]['id']:0x0);if(_0x289224[_0x38d9('0x10')][_0x1d8d1a]){_0x289224[_0x38d9('0x10')][_0x1d8d1a][_0x38d9('0x34')](_0x38d9('0x3e'));if(rpc[_0x55a459[_0x38d9('0x11')]+_0x38d9('0x3f')]){rpc[_0x55a459['channel']+_0x38d9('0x3f')][_0x38d9('0x40')](_0x1d8d1a,{'UserId':_0x55a459[_0x38d9('0x12')][_0x38d9('0x41')]})['catch'](function(){logger[_0x38d9('0x30')](_0x38d9('0x42'));});}}return _0x40e081({'code':0xc8,'message':_0x55a459});}catch(_0x19d9b7){logger[_0x38d9('0x30')](_0x19d9b7[_0x38d9('0x38')]);return _0x5116e2(_0x1755d3['error'](0x1f4,_0x19d9b7));}}logger['error'](_0x38d9('0x43'));return _0x5116e2(_0x1755d3[_0x38d9('0x30')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x336d99){var _0x27d1c3=this;return new Promise(function(_0x1abebc,_0xc19044){if(_0x336d99[_0x38d9('0x3a')]&&_0x336d99[_0x38d9('0x3a')]['id']){try{if(_0x289224[_0x38d9('0x3b')][_0x336d99['agent']['id']]){_0x289224[_0x38d9('0x3b')][_0x336d99[_0x38d9('0x3a')]['id']]['busy']=![];_0x289224[_0x38d9('0x3b')][_0x336d99[_0x38d9('0x3a')]['id']][_0x38d9('0x3d')]=undefined;}return _0x1abebc({'code':0xc8,'message':_0x336d99});}catch(_0x3fea60){logger[_0x38d9('0x30')](_0x3fea60[_0x38d9('0x38')]);return _0xc19044(_0x27d1c3[_0x38d9('0x30')](0x1f4,_0x3fea60));}}logger['error']('message\x20is\x20empty');return _0xc19044(_0x27d1c3[_0x38d9('0x30')](0x1f4,_0x38d9('0x43')));});},'AbandonInteraction':function(_0x153665){var _0x392ef1=this;return new Promise(function(_0x4b5438,_0x263c1f){if(_0x153665[_0x38d9('0x11')]&&_0x153665[_0x38d9('0x25')]&&_0x153665[_0x38d9('0x25')]['id']){try{var _0xc43997=getId(_0x153665[_0x38d9('0x11')],_0x153665[_0x38d9('0x12')]?_0x153665['message']['id']:0x0,_0x153665[_0x38d9('0x25')]?_0x153665[_0x38d9('0x25')]['id']:0x0);if(_0x289224[_0x38d9('0x10')][_0xc43997]){_0x289224[_0x38d9('0x10')][_0xc43997][_0x38d9('0x34')]('end');}return _0x4b5438({'code':0xc8,'message':_0x153665});}catch(_0x2a6a61){logger[_0x38d9('0x30')](_0x2a6a61['stack']);return _0x263c1f(_0x392ef1[_0x38d9('0x30')](0x1f4,_0x2a6a61));}}logger[_0x38d9('0x30')](_0x38d9('0x43'));return _0x263c1f(_0x392ef1['error'](0x1f4,_0x38d9('0x43')));});},'AgentCapacity':function(_0x45673f){var _0x42865f=this;return new Promise(function(_0x2e499b,_0x95552c){if(_0x289224[_0x38d9('0x3b')][_0x38d9('0x44')](_0x45673f['id'])){for(var _0x4cb562 in _0x45673f[_0x38d9('0x45')]){if(_0x45673f[_0x38d9('0x45')][_0x38d9('0x44')](_0x4cb562)){if(_0x289224['agents'][_0x45673f['id']][_0x38d9('0x44')](_0x4cb562+_0x38d9('0x46'))){_0x289224[_0x38d9('0x3b')][_0x45673f['id']][_0x4cb562+'CurrentCapacity']=parseInt(_0x45673f[_0x38d9('0x45')][_0x4cb562],0xa);}}}_0x289224['agents'][_0x45673f['id']]['updateRealtime']();return _0x2e499b({'code':0xc8,'message':_0x289224[_0x38d9('0x3b')][_0x45673f['id']]});}else{return _0x95552c(_0x42865f[_0x38d9('0x30')](0x1f4,_0x38d9('0x47')));}});},'Agents':function(_0x2ae835){return new Promise(function(_0x2fa31f){var _0x4880c5=_[_0x38d9('0x48')](_0x289224[_0x38d9('0x3b')]);if(_0x2ae835&&_0x2ae835['id']){var _0x25c814=_[_0x38d9('0x49')](_0x4880c5,function(_0x23869c){return _0x23869c['id']===_0x2ae835['id'];});_0x2fa31f(_0x25c814);}else{_0x2fa31f({'count':_0x4880c5['length'],'rows':_0x4880c5});}});},'ChatQueues':function(){return new Promise(function(_0x4d82a3){var _0x18567a=[];for(var _0x3c2094 in _0x289224['chatQueues']){if(_0x289224[_0x38d9('0x4a')]['hasOwnProperty'](_0x3c2094)){var _0x554427=_0x289224[_0x38d9('0x4a')][_0x3c2094];var _0x3bbccc={'id':_0x554427['id'],'available':_0x554427['available'],'loggedIn':_0x554427[_0x38d9('0x4b')],'name':_0x554427[_0x38d9('0x4c')],'paused':_0x554427[_0x38d9('0x4d')],'waiting':_0x554427[_0x38d9('0x4e')]};_0x18567a[_0x38d9('0x1c')](_0x3bbccc);}}_0x4d82a3({'count':_0x18567a[_0x38d9('0x15')],'rows':_0x18567a});});},'MailQueues':function(){return new Promise(function(_0x2ec59c){var _0x2a90b5=[];for(var _0x2ad031 in _0x289224[_0x38d9('0x4f')]){if(_0x289224[_0x38d9('0x4f')][_0x38d9('0x44')](_0x2ad031)){var _0xbb247a=_0x289224[_0x38d9('0x4f')][_0x2ad031];var _0xb115b3={'id':_0xbb247a['id'],'available':_0xbb247a['available'],'loggedIn':_0xbb247a[_0x38d9('0x4b')],'name':_0xbb247a[_0x38d9('0x4c')],'paused':_0xbb247a[_0x38d9('0x4d')],'waiting':_0xbb247a[_0x38d9('0x4e')]};_0x2a90b5[_0x38d9('0x1c')](_0xb115b3);}}_0x2ec59c({'count':_0x2a90b5[_0x38d9('0x15')],'rows':_0x2a90b5});});},'OpenchannelQueues':function(){return new Promise(function(_0x105444){var _0x2d8cff=[];for(var _0x470a9e in _0x289224[_0x38d9('0x50')]){if(_0x289224['openchannelQueues'][_0x38d9('0x44')](_0x470a9e)){var _0x28b7a2=_0x289224[_0x38d9('0x50')][_0x470a9e];var _0x31a3aa={'id':_0x28b7a2['id'],'available':_0x28b7a2[_0x38d9('0x51')],'loggedIn':_0x28b7a2[_0x38d9('0x4b')],'name':_0x28b7a2[_0x38d9('0x4c')],'paused':_0x28b7a2[_0x38d9('0x4d')],'waiting':_0x28b7a2[_0x38d9('0x4e')]};_0x2d8cff[_0x38d9('0x1c')](_0x31a3aa);}}_0x105444({'count':_0x2d8cff['length'],'rows':_0x2d8cff});});},'SmsQueues':function(){return new Promise(function(_0x367077){var _0x445c38=[];for(var _0xcd1c52 in _0x289224[_0x38d9('0x52')]){if(_0x289224['smsQueues']['hasOwnProperty'](_0xcd1c52)){var _0x9a2cc4=_0x289224[_0x38d9('0x52')][_0xcd1c52];var _0x1171ec={'id':_0x9a2cc4['id'],'available':_0x9a2cc4[_0x38d9('0x51')],'loggedIn':_0x9a2cc4[_0x38d9('0x4b')],'name':_0x9a2cc4[_0x38d9('0x4c')],'paused':_0x9a2cc4[_0x38d9('0x4d')],'waiting':_0x9a2cc4[_0x38d9('0x4e')]};_0x445c38['push'](_0x1171ec);}}_0x367077({'count':_0x445c38[_0x38d9('0x15')],'rows':_0x445c38});});},'FaxQueues':function(){return new Promise(function(_0x536b17){var _0x7e6979=[];for(var _0xc286d1 in _0x289224[_0x38d9('0x53')]){if(_0x289224[_0x38d9('0x53')][_0x38d9('0x44')](_0xc286d1)){var _0x5910ea=_0x289224[_0x38d9('0x53')][_0xc286d1];var _0x39c2c6={'id':_0x5910ea['id'],'available':_0x5910ea['available'],'loggedIn':_0x5910ea[_0x38d9('0x4b')],'name':_0x5910ea[_0x38d9('0x4c')],'paused':_0x5910ea[_0x38d9('0x4d')],'waiting':_0x5910ea[_0x38d9('0x4e')]};_0x7e6979[_0x38d9('0x1c')](_0x39c2c6);}}_0x536b17({'count':_0x7e6979[_0x38d9('0x15')],'rows':_0x7e6979});});},'WhatsappQueues':function(){return new Promise(function(_0x284e49){var _0x577c52=[];for(var _0x5534ff in _0x289224[_0x38d9('0x54')]){if(_0x289224['whatsappQueues'][_0x38d9('0x44')](_0x5534ff)){var _0x1c82a2=_0x289224[_0x38d9('0x54')][_0x5534ff];var _0x4d59e5={'id':_0x1c82a2['id'],'available':_0x1c82a2[_0x38d9('0x51')],'loggedIn':_0x1c82a2[_0x38d9('0x4b')],'name':_0x1c82a2[_0x38d9('0x4c')],'paused':_0x1c82a2['paused'],'waiting':_0x1c82a2[_0x38d9('0x4e')]};_0x577c52[_0x38d9('0x1c')](_0x4d59e5);}}_0x284e49({'count':_0x577c52[_0x38d9('0x15')],'rows':_0x577c52});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x928d97){var _0x402072=_[_0x38d9('0x48')](_0x289224[_0x38d9('0x55')]);_0x928d97({'count':_0x402072['length'],'rows':_0x402072});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1303b1){var _0x51d543=_[_0x38d9('0x48')](_0x289224['mailQueuesWaitingInteractions']);_0x1303b1({'count':_0x51d543['length'],'rows':_0x51d543});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x11975f){var _0x30c0d1=_['values'](_0x289224[_0x38d9('0x56')]);_0x11975f({'count':_0x30c0d1[_0x38d9('0x15')],'rows':_0x30c0d1});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x3f00b5){var _0xf92074=_[_0x38d9('0x48')](_0x289224[_0x38d9('0x57')]);_0x3f00b5({'count':_0xf92074[_0x38d9('0x15')],'rows':_0xf92074});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x2fc4e3){var _0x3d69c4=_[_0x38d9('0x48')](_0x289224[_0x38d9('0x58')]);_0x2fc4e3({'count':_0x3d69c4[_0x38d9('0x15')],'rows':_0x3d69c4});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x2f3475){var _0x318fc7=_[_0x38d9('0x48')](_0x289224[_0x38d9('0x59')]);_0x2f3475({'count':_0x318fc7[_0x38d9('0x15')],'rows':_0x318fc7});});}};var _0x6f5c63=jayson[_0x38d9('0x5a')](_0x19100c)[_0x38d9('0x5b')]();_0x6f5c63['on'](_0x38d9('0x30'),function(_0x1fbf8d){logger[_0x38d9('0x30')](JSON['stringify'](_0x1fbf8d));return _0x5708cf(_0x1fbf8d);});_0x6f5c63[_0x38d9('0xf')](0x232c,'127.0.0.1',function(){console['log'](_0x38d9('0x5c'),0x232c);return _0x268c91(_0x38d9('0x5d')+0x232c);});});};
\ No newline at end of file
index 1408ee1..75f5ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf73=['length','push','format','iftime\x20%s','message','indexOf','[%s][INTERVAL]\x20%s','all','then','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stop','util','bluebird','jayson/promise','../../../config/logger','routing','http','request','error','result','catch','condition','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED'];(function(_0x42b5d6,_0x444d17){var _0x26f3cc=function(_0x21da2d){while(--_0x21da2d){_0x42b5d6['push'](_0x42b5d6['shift']());}};_0x26f3cc(++_0x444d17);}(_0xaf73,0x127));var _0x3af7=function(_0x51903a,_0x58f0e1){_0x51903a=_0x51903a-0x0;var _0x37c40b=_0xaf73[_0x51903a];return _0x37c40b;};'use strict';var util=require(_0x3af7('0x0'));var BPromise=require(_0x3af7('0x1'));var jayson=require(_0x3af7('0x2'));var _=require('lodash');var logger=require(_0x3af7('0x3'))(_0x3af7('0x4'));var client=jayson['client'][_0x3af7('0x5')]({'port':0x232a});function request(_0x80c697,_0x10bd12){return new BPromise(function(_0x2122d1,_0x1c2be8){return client[_0x3af7('0x6')](_0x80c697,_0x10bd12)['then'](function(_0x11ed48){if(_0x11ed48['error']){return _0x1c2be8(_0x11ed48[_0x3af7('0x7')]['message']);}else{return _0x2122d1(_0x11ed48[_0x3af7('0x8')]);}})[_0x3af7('0x9')](function(_0x37ffb3){return _0x1c2be8(_0x37ffb3);});});}exports[_0x3af7('0xa')]=function(_0x431a69,_0x163254,_0x2f0459){return function(_0x32f252){if(_0x2f0459['rules']&&!_0x2f0459['rules'][_0x431a69]){logger[_0x3af7('0xb')](_0x3af7('0xc'),_0x431a69);return _0x32f252['stop']();}var _0x17b942=[];for(var _0x2fa476=0x0;_0x2fa476<_0x163254[_0x3af7('0xd')];_0x2fa476+=0x1){_0x17b942[_0x3af7('0xe')](request('Command',{'command':util[_0x3af7('0xf')](_0x3af7('0x10'),_0x163254[_0x2fa476])})['then'](function(_0x15b69c){return _0x15b69c&&_0x15b69c[_0x3af7('0x11')]&&_0x15b69c['message'][_0x3af7('0x12')]('true')>=0x0?!![]:![];})[_0x3af7('0x9')](function(_0x4c6d40){logger[_0x3af7('0x7')](_0x3af7('0x13'),_0x431a69,_0x163254[_0x2fa476]);}));}BPromise[_0x3af7('0x14')](_0x17b942)[_0x3af7('0x15')](function(_0x1cc852){var _0x70e379=_[_0x3af7('0x16')](_0x1cc852);logger['info'](_0x3af7('0x17'),_0x431a69,_0x163254[_0x3af7('0x18')](_0x3af7('0x19')),_0x70e379);_0x32f252['when'](_0x70e379);})[_0x3af7('0x9')](function(_0x13dbd9){console[_0x3af7('0x1a')](_0x13dbd9);logger[_0x3af7('0x7')]('[%s][INTERVAL]\x20%s\x20%s',_0x431a69,_0x163254[_0x3af7('0x18')](_0x3af7('0x19')),_0x13dbd9['stack']);_0x32f252[_0x3af7('0x1b')]();});};};
\ No newline at end of file
+var _0xde4f=['indexOf','true','[%s][INTERVAL]\x20%s','all','info','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','error','message','result','catch','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','then'];(function(_0x1407a0,_0x3ca32f){var _0x362a21=function(_0x33b7fb){while(--_0x33b7fb){_0x1407a0['push'](_0x1407a0['shift']());}};_0x362a21(++_0x3ca32f);}(_0xde4f,0x6d));var _0xfde4=function(_0x33da57,_0x39030a){_0x33da57=_0x33da57-0x0;var _0x5c40a5=_0xde4f[_0x33da57];return _0x5c40a5;};'use strict';var util=require(_0xfde4('0x0'));var BPromise=require(_0xfde4('0x1'));var jayson=require(_0xfde4('0x2'));var _=require(_0xfde4('0x3'));var logger=require(_0xfde4('0x4'))(_0xfde4('0x5'));var client=jayson[_0xfde4('0x6')][_0xfde4('0x7')]({'port':0x232a});function request(_0x433922,_0x1814ad){return new BPromise(function(_0xd87127,_0x266b88){return client[_0xfde4('0x8')](_0x433922,_0x1814ad)['then'](function(_0x242244){if(_0x242244[_0xfde4('0x9')]){return _0x266b88(_0x242244[_0xfde4('0x9')][_0xfde4('0xa')]);}else{return _0xd87127(_0x242244[_0xfde4('0xb')]);}})[_0xfde4('0xc')](function(_0x3a96de){return _0x266b88(_0x3a96de);});});}exports[_0xfde4('0xd')]=function(_0x4ab103,_0x3d459f,_0xfbc5ab){return function(_0xbe623e){if(_0xfbc5ab[_0xfde4('0xe')]&&!_0xfbc5ab[_0xfde4('0xe')][_0x4ab103]){logger['info'](_0xfde4('0xf'),_0x4ab103);return _0xbe623e[_0xfde4('0x10')]();}var _0x8c7e32=[];for(var _0x43d3cf=0x0;_0x43d3cf<_0x3d459f[_0xfde4('0x11')];_0x43d3cf+=0x1){_0x8c7e32[_0xfde4('0x12')](request(_0xfde4('0x13'),{'command':util[_0xfde4('0x14')](_0xfde4('0x15'),_0x3d459f[_0x43d3cf])})[_0xfde4('0x16')](function(_0x30c0b4){return _0x30c0b4&&_0x30c0b4[_0xfde4('0xa')]&&_0x30c0b4[_0xfde4('0xa')][_0xfde4('0x17')](_0xfde4('0x18'))>=0x0?!![]:![];})[_0xfde4('0xc')](function(_0x1d4e04){logger['error'](_0xfde4('0x19'),_0x4ab103,_0x3d459f[_0x43d3cf]);}));}BPromise[_0xfde4('0x1a')](_0x8c7e32)[_0xfde4('0x16')](function(_0x1a7182){var _0x75eee7=_['some'](_0x1a7182);logger[_0xfde4('0x1b')](_0xfde4('0x1c'),_0x4ab103,_0x3d459f[_0xfde4('0x1d')](_0xfde4('0x1e')),_0x75eee7);_0xbe623e[_0xfde4('0x1f')](_0x75eee7);})[_0xfde4('0xc')](function(_0x26e97b){console['log'](_0x26e97b);logger[_0xfde4('0x9')](_0xfde4('0x1c'),_0x4ab103,_0x3d459f[_0xfde4('0x1d')](_0xfde4('0x1e')),_0x26e97b[_0xfde4('0x20')]);_0xbe623e[_0xfde4('0x10')]();});};};
\ No newline at end of file
index 09af4e8..a079df6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agent','lodash','./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','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','CreateVoiceAgentReport','request','agentcalled','debug','destuniqueid','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','agentconnectAt','connectedlinename','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','calleridnum','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause'];(function(_0x690417,_0x31e396){var _0x202cff=function(_0x241499){while(--_0x241499){_0x690417['push'](_0x690417['shift']());}};_0x202cff(++_0x31e396);}(_0x96cc,0x16c));var _0xc96c=function(_0x5717e2,_0x3f2cc5){_0x5717e2=_0x5717e2-0x0;var _0x1a5466=_0x96cc[_0x5717e2];return _0x1a5466;};'use strict';var _=require(_0xc96c('0x0'));var util=require('util');var utils=require(_0xc96c('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x5f11f2,_0x30bf8a){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x4'),_0x5f11f2[_0xc96c('0x5')],_0x5f11f2[_0xc96c('0x6')],_0x5f11f2[_0xc96c('0x7')],_0x5f11f2[_0xc96c('0x8')],_0x5f11f2[_0xc96c('0x9')],_0x5f11f2['calleridnum'],_0x5f11f2[_0xc96c('0xa')],_0x5f11f2[_0xc96c('0xb')]));if(_0x5f11f2[_0xc96c('0x7')]){utils[_0xc96c('0xc')](_0x5f11f2[_0xc96c('0x7')])[_0xc96c('0xd')](function(_0x36b2b4){if(_0x36b2b4){_0x5f11f2['type']=_0x36b2b4[_0xc96c('0xe')];_0x5f11f2[_0xc96c('0xf')]=_0x5f11f2[_0xc96c('0x10')]?_0x36b2b4['acw']:![];_0x5f11f2[_0xc96c('0x11')]=_0x5f11f2['agentacw']?_0x36b2b4[_0xc96c('0x12')]:0x0;}utils['request'](_0xc96c('0x13'),_0x5f11f2);});}else{utils[_0xc96c('0x14')](_0xc96c('0x13'),_0x5f11f2);}if(_0x30bf8a){delete transfers[_0x5f11f2[_0xc96c('0x5')]];}else{delete agents[_0x5f11f2['destuniqueid']];}}exports[_0xc96c('0x15')]=function(_0x43fcaa){try{utils[_0xc96c('0x16')](util[_0xc96c('0x3')]('[%s][agents][agentcalled]',_0x43fcaa[_0xc96c('0x5')]),_0x43fcaa);agents[_0x43fcaa[_0xc96c('0x17')]]=_0x43fcaa;agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0x18')]=utils[_0xc96c('0x19')]();agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x1a');agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0xa')]=null;agents[_0x43fcaa[_0xc96c('0x17')]]['connectedlinename']=null;utils['info'](util[_0xc96c('0x3')](_0xc96c('0x1b'),_0x43fcaa[_0xc96c('0x5')],agents[_0x43fcaa[_0xc96c('0x17')]]['membername'],_0x43fcaa[_0xc96c('0x17')]));}catch(_0x100fdb){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x1d'),_0x43fcaa[_0xc96c('0x5')]),_0x100fdb);}};exports[_0xc96c('0x1e')]=function(_0x41daba){try{if(!_[_0xc96c('0x1f')](agents[_0x41daba[_0xc96c('0x17')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x20'),_0x41daba[_0xc96c('0x5')]),_0x41daba);utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x21'),_0x41daba['uniqueid'],agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x8')],_0x41daba[_0xc96c('0x17')]));agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x1e')]=!![];agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x22')]=utils[_0xc96c('0x19')]();agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0xb')]='timeout';agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x23')]=_0xc96c('0x24');agents[_0x41daba[_0xc96c('0x17')]]['holdtime']=_0x41daba['ringtime']?parseInt(_0x41daba[_0xc96c('0x25')])/0x3e8:0x0;agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x26')]=0x0;unanswered[_0xc96c('0x27')](_0x41daba[_0xc96c('0x17')]);}}catch(_0x5e1727){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x20'),_0x41daba[_0xc96c('0x5')]),_0x5e1727);}};exports[_0xc96c('0x28')]=function(_0x40c72b){try{_[_0xc96c('0x29')](agents,function(_0x328ee4,_0x556108){if(_0x328ee4[_0xc96c('0x5')]==_0x40c72b['uniqueid']&&!_[_0xc96c('0x2a')](unanswered,_0x328ee4[_0xc96c('0x17')])){utils[_0xc96c('0x16')](util['format'](_0xc96c('0x2b'),_0x40c72b[_0xc96c('0x5')]),_0x40c72b);utils[_0xc96c('0x2')](util[_0xc96c('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x40c72b['uniqueid'],_0x328ee4[_0xc96c('0x8')],_0x328ee4[_0xc96c('0x17')]));_0x328ee4[_0xc96c('0x1e')]=!![];_0x328ee4['agentringnoanswerAt']=utils[_0xc96c('0x19')]();_0x328ee4[_0xc96c('0xb')]=_0xc96c('0x2c');_0x328ee4[_0xc96c('0x23')]='abandoned';_0x328ee4[_0xc96c('0x2d')]=_0x40c72b[_0xc96c('0x2d')];_0x328ee4['talktime']=0x0;writeDB(_0x328ee4);}});}catch(_0x2b1dec){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x2b'),_0x40c72b[_0xc96c('0x5')]),_0x2b1dec);}};exports[_0xc96c('0x2e')]=function(_0x4e8241){try{if(agents[_0x4e8241[_0xc96c('0x17')]]){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x2f'),_0x4e8241[_0xc96c('0x5')]),_0x4e8241);utils[_0xc96c('0x2')](util['format']('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x4e8241[_0xc96c('0x5')],agents[_0x4e8241[_0xc96c('0x17')]]['membername'],_0x4e8241['destuniqueid']));agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x30')]=utils[_0xc96c('0x19')]();agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0xa')]=_0x4e8241[_0xc96c('0xa')];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x31')]=_0x4e8241[_0xc96c('0x31')];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x2d')]=_0x4e8241['ringtime'];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x32');_[_0xc96c('0x29')](agents,function(_0x4eb180,_0x167671){if(_0x4eb180[_0xc96c('0x17')]!=_0x4e8241[_0xc96c('0x17')]&&_0x4eb180['uniqueid']==_0x4e8241['uniqueid']){_0x4eb180[_0xc96c('0x26')]=0x0;_0x4eb180[_0xc96c('0x2d')]=_0x4e8241[_0xc96c('0x25')];_0x4eb180['agentringnoanswer']=!![];_0x4eb180[_0xc96c('0x22')]=utils[_0xc96c('0x19')]();_0x4eb180[_0xc96c('0xb')]=_0xc96c('0x33');_0x4eb180[_0xc96c('0x23')]=_0xc96c('0x33');_0x4eb180[_0xc96c('0x34')]=_0x4e8241[_0xc96c('0x17')];_0x4eb180[_0xc96c('0x35')]=_0x4e8241['membername'];writeDB(_0x4eb180);}});}}catch(_0x4c3088){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x2f'),_0x4e8241[_0xc96c('0x5')]),_0x4c3088);}};exports['agentcomplete']=function(_0x5ee6ac){try{if(!_[_0xc96c('0x1f')](agents[_0x5ee6ac[_0xc96c('0x17')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x36'),_0x5ee6ac[_0xc96c('0x5')]),_0x5ee6ac);utils[_0xc96c('0x2')](util['format'](_0xc96c('0x37'),_0x5ee6ac[_0xc96c('0x5')],agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x8')],_0x5ee6ac['destuniqueid']));agents[_0x5ee6ac['destuniqueid']][_0xc96c('0x10')]=!![];agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x38')]=utils[_0xc96c('0x19')]();agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x38')],agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x30')]);agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x23')]=_0x5ee6ac['reason'];agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x3a');writeDB(agents[_0x5ee6ac[_0xc96c('0x17')]]);}}catch(_0x56bce1){utils[_0xc96c('0x1c')](util['format'](_0xc96c('0x36'),_0x5ee6ac[_0xc96c('0x5')]),_0x56bce1);}};exports['blindtransfer']=function(_0x2581ae){try{if(!_[_0xc96c('0x1f')](agents[_0x2581ae[_0xc96c('0x3b')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x3c'),_0x2581ae['uniqueid']),_0x2581ae);utils['info'](util['format'](_0xc96c('0x3d'),_0x2581ae['uniqueid'],agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x8')],agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x5')]));agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x3e')]=!![];agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x3f')]=_0xc96c('0x40');agents[_0x2581ae[_0xc96c('0x3b')]]['transferexten']=_0x2581ae[_0xc96c('0x41')];agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x42')]=agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x5')];}}catch(_0xcde9){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')]('[%s][agents][blindtransfer]',_0x2581ae['uniqueid']),_0xcde9);}};exports['attendedtransfer']=function(_0x5c3d95){try{utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x43'),_0x5c3d95[_0xc96c('0x44')]),_0x5c3d95);if(_0x5c3d95[_0xc96c('0x44')]==_0x5c3d95[_0xc96c('0x45')]){if(!_[_0xc96c('0x1f')](agents[_0x5c3d95['secondtransfereruniqueid']])){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x46'),_0x5c3d95[_0xc96c('0x44')],agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x8')]));agents[_0x5c3d95[_0xc96c('0x47')]]['transfer']=!![];agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x3f')]=_0xc96c('0x48');agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x49')]=_0x5c3d95[_0xc96c('0x4a')];agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x42')]=_0x5c3d95[_0xc96c('0x44')];}if(_0x5c3d95[_0xc96c('0x4b')]&&agents[_0x5c3d95[_0xc96c('0x4b')]]){agents[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4c')]=0x1;transfers[_0x5c3d95[_0xc96c('0x4b')]]=_['clone'](agents[_0x5c3d95[_0xc96c('0x4b')]]);transfers[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4d')]=agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x4d')];transfers[_0x5c3d95['transfereeuniqueid']][_0xc96c('0x4e')]=agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x4e')];transfers[_0x5c3d95[_0xc96c('0x4b')]]['agentcalledAt']=utils[_0xc96c('0x19')]();transfers[_0x5c3d95[_0xc96c('0x4b')]]['agentconnectAt']=utils['now']();transfers[_0x5c3d95['transfereeuniqueid']][_0xc96c('0x2d')]=0x0;transfers[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4c')]=0x2;}}else if(_0x5c3d95[_0xc96c('0x47')]==_0x5c3d95[_0xc96c('0x4f')]){if(!_['isNil'](agents[_0x5c3d95['origtransfereruniqueid']])){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x46'),_0x5c3d95[_0xc96c('0x44')],agents[_0x5c3d95[_0xc96c('0x44')]]['membername']));agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x3e')]=!![];agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x3f')]='ATTENDED';agents[_0x5c3d95['origtransfereruniqueid']][_0xc96c('0x49')]=_0x5c3d95[_0xc96c('0x50')];agents[_0x5c3d95['origtransfereruniqueid']][_0xc96c('0x42')]=_0x5c3d95['secondtransfereruniqueid'];}if(_0x5c3d95[_0xc96c('0x51')]&&agents[_0x5c3d95[_0xc96c('0x51')]]){agents[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4c')]=0x1;transfers[_0x5c3d95[_0xc96c('0x51')]]=_[_0xc96c('0x52')](agents[_0x5c3d95[_0xc96c('0x51')]]);transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4d')]=agents[_0x5c3d95[_0xc96c('0x44')]]['calleridnum'];transfers[_0x5c3d95[_0xc96c('0x51')]]['calleridname']=agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x4e')];transfers[_0x5c3d95['transfertargetuniqueid']][_0xc96c('0x18')]=utils['now']();transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x30')]=utils[_0xc96c('0x19')]();transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x2d')]=0x0;transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4c')]=0x2;}}}catch(_0xbd6525){utils[_0xc96c('0x1c')](util['format'](_0xc96c('0x43'),_0x5c3d95[_0xc96c('0x44')]),_0xbd6525);}};exports[_0xc96c('0x53')]=function(_0x43f94e){try{utils['debug'](util[_0xc96c('0x3')](_0xc96c('0x54'),_0x43f94e['uniqueid']),_0x43f94e);if(agents[_0x43f94e['uniqueid']]&&agents[_0x43f94e[_0xc96c('0x5')]]['reason']===_0xc96c('0x24')){if(_0x43f94e[_0xc96c('0x55')]==='21'){agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x23')]=_0xc96c('0x56');agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]=_0xc96c('0x56');}utils[_0xc96c('0x2')](util['format'](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],agents[_0x43f94e[_0xc96c('0x5')]]['membername'],agents[_0x43f94e['uniqueid']][_0xc96c('0x23')],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]));writeDB(agents[_0x43f94e[_0xc96c('0x5')]]);var _0x1efa88=unanswered[_0xc96c('0x58')](_0x43f94e[_0xc96c('0x5')]);if(_0x1efa88>-0x1){unanswered['splice'](_0x1efa88,0x1);}}if(transfers[_0x43f94e[_0xc96c('0x5')]]){transfers[_0x43f94e[_0xc96c('0x5')]]['agentcomplete']=!![];transfers[_0x43f94e[_0xc96c('0x5')]]['agentcompleteAt']=utils[_0xc96c('0x19')]();transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')],transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]);transfers[_0x43f94e[_0xc96c('0x5')]]['reason']=_0xc96c('0x59');transfers[_0x43f94e[_0xc96c('0x5')]]['lastevent']=_0xc96c('0x3a');utils['info'](util[_0xc96c('0x3')](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],transfers[_0x43f94e['uniqueid']][_0xc96c('0x8')],transfers[_0x43f94e[_0xc96c('0x5')]]['reason'],transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]));writeDB(transfers[_0x43f94e[_0xc96c('0x5')]],!![]);}if(agents[_0x43f94e['uniqueid']]&&agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]){agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x10')]=!![];agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')]=utils[_0xc96c('0x19')]();agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]);agents[_0x43f94e[_0xc96c('0x5')]]['reason']=agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x3e')]?_0xc96c('0x3e'):_0xc96c('0x59');agents[_0x43f94e[_0xc96c('0x5')]]['lastevent']=_0xc96c('0x3a');utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],agents[_0x43f94e['uniqueid']]['membername'],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x23')],agents[_0x43f94e['uniqueid']][_0xc96c('0xb')]));writeDB(agents[_0x43f94e[_0xc96c('0x5')]]);}}catch(_0x563449){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')]('[%s][agents][hangup]',_0x43f94e[_0xc96c('0x5')]),_0x563449);}};
\ No newline at end of file
+var _0x3f8c=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','[%s][agents][hangup]','./utils','info','membername','interface','calleridnum','connectedlinenum','lastevent','queue','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','debug','format','[%s][agents][agentcalled]','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','agentringnoanswer','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','push','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','isNil','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','cause','rejected','indexOf','splice','agent'];(function(_0x20fbc6,_0x50acfd){var _0x133498=function(_0x5e45c0){while(--_0x5e45c0){_0x20fbc6['push'](_0x20fbc6['shift']());}};_0x133498(++_0x50acfd);}(_0x3f8c,0x104));var _0xc3f8=function(_0x47f6ee,_0x47fac7){_0x47f6ee=_0x47f6ee-0x0;var _0x25106b=_0x3f8c[_0x47f6ee];return _0x25106b;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xc3f8('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x3a1f6a,_0x2e70c4){utils[_0xc3f8('0x1')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x3a1f6a['uniqueid'],_0x3a1f6a['channel'],_0x3a1f6a['queue'],_0x3a1f6a[_0xc3f8('0x2')],_0x3a1f6a[_0xc3f8('0x3')],_0x3a1f6a[_0xc3f8('0x4')],_0x3a1f6a[_0xc3f8('0x5')],_0x3a1f6a[_0xc3f8('0x6')]));if(_0x3a1f6a[_0xc3f8('0x7')]){utils['getVoiceQueueByName'](_0x3a1f6a[_0xc3f8('0x7')])[_0xc3f8('0x8')](function(_0x15cb3b){if(_0x15cb3b){_0x3a1f6a[_0xc3f8('0x9')]=_0x15cb3b[_0xc3f8('0x9')];_0x3a1f6a[_0xc3f8('0xa')]=_0x3a1f6a[_0xc3f8('0xb')]?_0x15cb3b['acw']:![];_0x3a1f6a[_0xc3f8('0xc')]=_0x3a1f6a[_0xc3f8('0xa')]?_0x15cb3b[_0xc3f8('0xd')]:0x0;}utils[_0xc3f8('0xe')]('CreateVoiceAgentReport',_0x3a1f6a);});}else{utils[_0xc3f8('0xe')](_0xc3f8('0xf'),_0x3a1f6a);}if(_0x2e70c4){delete transfers[_0x3a1f6a[_0xc3f8('0x10')]];}else{delete agents[_0x3a1f6a[_0xc3f8('0x11')]];}}exports['agentcalled']=function(_0x84f489){try{utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x14'),_0x84f489[_0xc3f8('0x10')]),_0x84f489);agents[_0x84f489[_0xc3f8('0x11')]]=_0x84f489;agents[_0x84f489[_0xc3f8('0x11')]][_0xc3f8('0x15')]=utils[_0xc3f8('0x16')]();agents[_0x84f489[_0xc3f8('0x11')]][_0xc3f8('0x6')]=_0xc3f8('0x17');agents[_0x84f489[_0xc3f8('0x11')]]['connectedlinenum']=null;agents[_0x84f489[_0xc3f8('0x11')]]['connectedlinename']=null;utils['info'](util[_0xc3f8('0x13')](_0xc3f8('0x18'),_0x84f489[_0xc3f8('0x10')],agents[_0x84f489[_0xc3f8('0x11')]]['membername'],_0x84f489[_0xc3f8('0x11')]));}catch(_0x1db809){utils['error'](util[_0xc3f8('0x13')]('[%s][agents][agentcalled]',_0x84f489[_0xc3f8('0x10')]),_0x1db809);}};exports[_0xc3f8('0x19')]=function(_0x3b2e98){try{if(!_['isNil'](agents[_0x3b2e98['destuniqueid']])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x1a'),_0x3b2e98[_0xc3f8('0x10')]),_0x3b2e98);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x1b'),_0x3b2e98[_0xc3f8('0x10')],agents[_0x3b2e98['destuniqueid']]['membername'],_0x3b2e98['destuniqueid']));agents[_0x3b2e98[_0xc3f8('0x11')]]['agentringnoanswer']=!![];agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1c')]=utils['now']();agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x6')]=_0xc3f8('0x1d');agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1e')]=_0xc3f8('0x1d');agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x1f')]=_0x3b2e98[_0xc3f8('0x20')]?parseInt(_0x3b2e98[_0xc3f8('0x20')])/0x3e8:0x0;agents[_0x3b2e98[_0xc3f8('0x11')]][_0xc3f8('0x21')]=0x0;unanswered[_0xc3f8('0x22')](_0x3b2e98[_0xc3f8('0x11')]);}}catch(_0x59e4dd){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x1a'),_0x3b2e98['uniqueid']),_0x59e4dd);}};exports[_0xc3f8('0x24')]=function(_0x4d39a0){try{_[_0xc3f8('0x25')](agents,function(_0x32343e,_0x47ab53){if(_0x32343e['uniqueid']==_0x4d39a0[_0xc3f8('0x10')]&&!_[_0xc3f8('0x26')](unanswered,_0x32343e[_0xc3f8('0x11')])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x27'),_0x4d39a0[_0xc3f8('0x10')]),_0x4d39a0);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x28'),_0x4d39a0['uniqueid'],_0x32343e[_0xc3f8('0x2')],_0x32343e[_0xc3f8('0x11')]));_0x32343e[_0xc3f8('0x19')]=!![];_0x32343e[_0xc3f8('0x1c')]=utils[_0xc3f8('0x16')]();_0x32343e['lastevent']='abandoned';_0x32343e[_0xc3f8('0x1e')]=_0xc3f8('0x29');_0x32343e[_0xc3f8('0x1f')]=_0x4d39a0[_0xc3f8('0x1f')];_0x32343e[_0xc3f8('0x21')]=0x0;writeDB(_0x32343e);}});}catch(_0x4e51ac){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x27'),_0x4d39a0['uniqueid']),_0x4e51ac);}};exports[_0xc3f8('0x2a')]=function(_0x11ecc2){try{if(agents[_0x11ecc2[_0xc3f8('0x11')]]){utils['debug'](util[_0xc3f8('0x13')](_0xc3f8('0x2b'),_0x11ecc2['uniqueid']),_0x11ecc2);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x2c'),_0x11ecc2[_0xc3f8('0x10')],agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2')],_0x11ecc2['destuniqueid']));agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2d')]=utils[_0xc3f8('0x16')]();agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x5')]=_0x11ecc2['connectedlinenum'];agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x2e')]=_0x11ecc2[_0xc3f8('0x2e')];agents[_0x11ecc2['destuniqueid']][_0xc3f8('0x1f')]=_0x11ecc2[_0xc3f8('0x20')];agents[_0x11ecc2[_0xc3f8('0x11')]][_0xc3f8('0x6')]='connect';_[_0xc3f8('0x25')](agents,function(_0x45d416,_0x2df096){if(_0x45d416[_0xc3f8('0x11')]!=_0x11ecc2['destuniqueid']&&_0x45d416[_0xc3f8('0x10')]==_0x11ecc2['uniqueid']){_0x45d416['talktime']=0x0;_0x45d416[_0xc3f8('0x1f')]=_0x11ecc2[_0xc3f8('0x20')];_0x45d416[_0xc3f8('0x19')]=!![];_0x45d416[_0xc3f8('0x1c')]=utils['now']();_0x45d416['lastevent']=_0xc3f8('0x2f');_0x45d416[_0xc3f8('0x1e')]=_0xc3f8('0x2f');_0x45d416[_0xc3f8('0x30')]=_0x11ecc2[_0xc3f8('0x11')];_0x45d416[_0xc3f8('0x31')]=_0x11ecc2[_0xc3f8('0x2')];writeDB(_0x45d416);}});}}catch(_0x45e6ea){utils[_0xc3f8('0x23')](util[_0xc3f8('0x13')](_0xc3f8('0x2b'),_0x11ecc2['uniqueid']),_0x45e6ea);}};exports[_0xc3f8('0xb')]=function(_0x22e9b3){try{if(!_['isNil'](agents[_0x22e9b3[_0xc3f8('0x11')]])){utils[_0xc3f8('0x12')](util['format'](_0xc3f8('0x32'),_0x22e9b3[_0xc3f8('0x10')]),_0x22e9b3);utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x33'),_0x22e9b3[_0xc3f8('0x10')],agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x2')],_0x22e9b3[_0xc3f8('0x11')]));agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0xb')]=!![];agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x34')]=utils[_0xc3f8('0x16')]();agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x21')]=utils[_0xc3f8('0x35')](agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x34')],agents[_0x22e9b3['destuniqueid']]['agentconnectAt']);agents[_0x22e9b3[_0xc3f8('0x11')]][_0xc3f8('0x1e')]=_0x22e9b3[_0xc3f8('0x1e')];agents[_0x22e9b3['destuniqueid']][_0xc3f8('0x6')]=_0xc3f8('0x36');writeDB(agents[_0x22e9b3[_0xc3f8('0x11')]]);}}catch(_0xe3d5c4){utils[_0xc3f8('0x23')](util['format'](_0xc3f8('0x32'),_0x22e9b3[_0xc3f8('0x10')]),_0xe3d5c4);}};exports['blindtransfer']=function(_0x1becae){try{if(!_[_0xc3f8('0x37')](agents[_0x1becae[_0xc3f8('0x38')]])){utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')](_0xc3f8('0x39'),_0x1becae[_0xc3f8('0x10')]),_0x1becae);utils['info'](util[_0xc3f8('0x13')](_0xc3f8('0x3a'),_0x1becae['uniqueid'],agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x2')],agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x10')]));agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3b')]=!![];agents[_0x1becae[_0xc3f8('0x38')]]['transfertype']=_0xc3f8('0x3c');agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3d')]=_0x1becae[_0xc3f8('0x3e')];agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x3f')]=agents[_0x1becae[_0xc3f8('0x38')]][_0xc3f8('0x10')];}}catch(_0x4fc02c){utils['error'](util[_0xc3f8('0x13')](_0xc3f8('0x39'),_0x1becae['uniqueid']),_0x4fc02c);}};exports['attendedtransfer']=function(_0x773d56){try{utils['debug'](util[_0xc3f8('0x13')](_0xc3f8('0x40'),_0x773d56[_0xc3f8('0x41')]),_0x773d56);if(_0x773d56['origtransfereruniqueid']==_0x773d56[_0xc3f8('0x42')]){if(!_['isNil'](agents[_0x773d56['secondtransfereruniqueid']])){utils[_0xc3f8('0x1')](util['format'](_0xc3f8('0x43'),_0x773d56[_0xc3f8('0x41')],agents[_0x773d56[_0xc3f8('0x44')]]['membername']));agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x3b')]=!![];agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x45')]=_0xc3f8('0x46');agents[_0x773d56['secondtransfereruniqueid']]['transferexten']=_0x773d56[_0xc3f8('0x47')];agents[_0x773d56[_0xc3f8('0x44')]][_0xc3f8('0x3f')]=_0x773d56[_0xc3f8('0x41')];}if(_0x773d56[_0xc3f8('0x48')]&&agents[_0x773d56['transfereeuniqueid']]){agents[_0x773d56[_0xc3f8('0x48')]]['agententerreason']=0x1;transfers[_0x773d56[_0xc3f8('0x48')]]=_[_0xc3f8('0x49')](agents[_0x773d56[_0xc3f8('0x48')]]);transfers[_0x773d56[_0xc3f8('0x48')]]['calleridnum']=agents[_0x773d56[_0xc3f8('0x44')]]['calleridnum'];transfers[_0x773d56['transfereeuniqueid']]['calleridname']=agents[_0x773d56['secondtransfereruniqueid']][_0xc3f8('0x4a')];transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x15')]=utils[_0xc3f8('0x16')]();transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x2d')]=utils[_0xc3f8('0x16')]();transfers[_0x773d56[_0xc3f8('0x48')]]['holdtime']=0x0;transfers[_0x773d56[_0xc3f8('0x48')]][_0xc3f8('0x4b')]=0x2;}}else if(_0x773d56[_0xc3f8('0x44')]==_0x773d56[_0xc3f8('0x4c')]){if(!_[_0xc3f8('0x37')](agents[_0x773d56['origtransfereruniqueid']])){utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x43'),_0x773d56[_0xc3f8('0x41')],agents[_0x773d56[_0xc3f8('0x41')]]['membername']));agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x3b')]=!![];agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x45')]=_0xc3f8('0x46');agents[_0x773d56[_0xc3f8('0x41')]]['transferexten']=_0x773d56[_0xc3f8('0x4d')];agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x3f')]=_0x773d56['secondtransfereruniqueid'];}if(_0x773d56[_0xc3f8('0x4e')]&&agents[_0x773d56[_0xc3f8('0x4e')]]){agents[_0x773d56['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x773d56[_0xc3f8('0x4e')]]=_[_0xc3f8('0x49')](agents[_0x773d56['transfertargetuniqueid']]);transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4')]=agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x4')];transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4a')]=agents[_0x773d56[_0xc3f8('0x41')]][_0xc3f8('0x4a')];transfers[_0x773d56['transfertargetuniqueid']]['agentcalledAt']=utils[_0xc3f8('0x16')]();transfers[_0x773d56['transfertargetuniqueid']]['agentconnectAt']=utils['now']();transfers[_0x773d56['transfertargetuniqueid']]['holdtime']=0x0;transfers[_0x773d56[_0xc3f8('0x4e')]][_0xc3f8('0x4b')]=0x2;}}}catch(_0x188d39){utils[_0xc3f8('0x23')](util['format'](_0xc3f8('0x40'),_0x773d56[_0xc3f8('0x41')]),_0x188d39);}};exports['hangup']=function(_0x3b9b47){try{utils[_0xc3f8('0x12')](util[_0xc3f8('0x13')]('[%s][agents][hangup]',_0x3b9b47[_0xc3f8('0x10')]),_0x3b9b47);if(agents[_0x3b9b47['uniqueid']]&&agents[_0x3b9b47['uniqueid']]['reason']===_0xc3f8('0x1d')){if(_0x3b9b47[_0xc3f8('0x4f')]==='21'){agents[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')]=_0xc3f8('0x50');agents[_0x3b9b47['uniqueid']][_0xc3f8('0x6')]=_0xc3f8('0x50');}utils['info'](util[_0xc3f8('0x13')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3b9b47[_0xc3f8('0x10')],agents[_0x3b9b47[_0xc3f8('0x10')]]['membername'],agents[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')],agents[_0x3b9b47[_0xc3f8('0x10')]]['lastevent']));writeDB(agents[_0x3b9b47[_0xc3f8('0x10')]]);var _0x5de19e=unanswered[_0xc3f8('0x51')](_0x3b9b47['uniqueid']);if(_0x5de19e>-0x1){unanswered[_0xc3f8('0x52')](_0x5de19e,0x1);}}if(transfers[_0x3b9b47[_0xc3f8('0x10')]]){transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0xb')]=!![];transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')]=utils[_0xc3f8('0x16')]();transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x21')]=utils['diffTime'](transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')],transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x2d')]);transfers[_0x3b9b47[_0xc3f8('0x10')]]['reason']=_0xc3f8('0x53');transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]=_0xc3f8('0x36');utils[_0xc3f8('0x1')](util['format'](_0xc3f8('0x54'),_0x3b9b47[_0xc3f8('0x10')],transfers[_0x3b9b47[_0xc3f8('0x10')]]['membername'],transfers[_0x3b9b47['uniqueid']][_0xc3f8('0x1e')],transfers[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]));writeDB(transfers[_0x3b9b47[_0xc3f8('0x10')]],!![]);}if(agents[_0x3b9b47['uniqueid']]&&agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x2d')]){agents[_0x3b9b47[_0xc3f8('0x10')]]['agentcomplete']=!![];agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x34')]=utils['now']();agents[_0x3b9b47['uniqueid']][_0xc3f8('0x21')]=utils[_0xc3f8('0x35')](agents[_0x3b9b47['uniqueid']][_0xc3f8('0x34')],agents[_0x3b9b47[_0xc3f8('0x10')]]['agentconnectAt']);agents[_0x3b9b47[_0xc3f8('0x10')]]['reason']=agents[_0x3b9b47[_0xc3f8('0x10')]]['transfer']?_0xc3f8('0x3b'):_0xc3f8('0x53');agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]=_0xc3f8('0x36');utils[_0xc3f8('0x1')](util[_0xc3f8('0x13')](_0xc3f8('0x54'),_0x3b9b47[_0xc3f8('0x10')],agents[_0x3b9b47['uniqueid']]['membername'],agents[_0x3b9b47[_0xc3f8('0x10')]]['reason'],agents[_0x3b9b47[_0xc3f8('0x10')]][_0xc3f8('0x6')]));writeDB(agents[_0x3b9b47[_0xc3f8('0x10')]]);}}catch(_0xfb05eb){utils['error'](util[_0xc3f8('0x13')](_0xc3f8('0x55'),_0x3b9b47[_0xc3f8('0x10')]),_0xfb05eb);}};
\ No newline at end of file
index d49a4b6..dca011a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa777=['transfertargetchannel','origtransfererchannel','_attended','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','musiconholdstartAt','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','variable','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','application','toLowerCase','set','appdata','cdr','split','substring','lastIndexOf','includes','noop','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','calleridnum','connectedlinenum','accountcode','then','UserId','request','CreateVoiceCallReport','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','newstate','debug','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','error','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','diffTime','answertime','attendedtransfer','localtwolinkedid','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield'];(function(_0x4f4693,_0x149780){var _0x2ca019=function(_0x2ee95a){while(--_0x2ee95a){_0x4f4693['push'](_0x4f4693['shift']());}};_0x2ca019(++_0x149780);}(_0xa777,0x102));var _0x7a77=function(_0x15a8ec,_0x38a127){_0x15a8ec=_0x15a8ec-0x0;var _0x81eba8=_0xa777[_0x15a8ec];return _0x81eba8;};'use strict';var _=require('lodash');var util=require(_0x7a77('0x0'));var utils=require(_0x7a77('0x1'));var transfers=require(_0x7a77('0x2'));var dispositions=[_0x7a77('0x3'),_0x7a77('0x4'),'FAILED',_0x7a77('0x3'),_0x7a77('0x3'),_0x7a77('0x3'),_0x7a77('0x5'),_0x7a77('0x6'),'FAILED',_0x7a77('0x4'),_0x7a77('0x4')];var channels={};function writeDB(_0x500859){var _0x5b73ea;if(transfers[_0x7a77('0x7')][_0x500859[_0x7a77('0x8')]]){_0x5b73ea=_0x500859['uniqueid'];_0x500859[_0x7a77('0x8')]=transfers[_0x7a77('0x7')][_0x500859[_0x7a77('0x8')]][_0x7a77('0x9')];}utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0xc'),_0x500859[_0x7a77('0x8')],_0x500859['channel'],_0x500859[_0x7a77('0xd')],_0x500859[_0x7a77('0xe')],_0x500859[_0x7a77('0xf')],_0x500859[_0x7a77('0x10')],_0x500859[_0x7a77('0x11')],_0x500859['lastevent']));if(_0x500859[_0x7a77('0x12')]){utils['getUserByInternal'](_0x500859[_0x7a77('0x12')])[_0x7a77('0x13')](function(_0x4e11ea){if(_0x4e11ea){_0x500859[_0x7a77('0x14')]=_0x4e11ea['id'];}utils[_0x7a77('0x15')]('CreateVoiceCallReport',_0x500859);});}else{utils[_0x7a77('0x15')](_0x7a77('0x16'),_0x500859);}if(channels[_0x500859[_0x7a77('0x8')]]){delete channels[_0x500859[_0x7a77('0x8')]];}else if(_0x5b73ea&&channels[_0x5b73ea]){if(!transfers['blinds'][_0x5b73ea]['recording'])delete transfers[_0x7a77('0x7')][_0x5b73ea];delete channels[_0x5b73ea];}}exports['newchannel']=function(_0x4b761c){try{utils['debug'](util[_0x7a77('0xb')]('[%s][calls][newchannel]',_0x4b761c[_0x7a77('0x8')]),_0x4b761c);if(_0x4b761c['uniqueid']==_0x4b761c[_0x7a77('0x17')]&&_0x4b761c[_0x7a77('0x18')]!=_0x7a77('0x19')){utils['info'](util[_0x7a77('0xb')](_0x7a77('0x1a'),_0x4b761c[_0x7a77('0x8')],_0x4b761c[_0x7a77('0x1b')],_0x4b761c[_0x7a77('0x1c')]));channels[_0x4b761c[_0x7a77('0x8')]]={'uniqueid':_0x4b761c[_0x7a77('0x8')],'accountcode':_0x4b761c[_0x7a77('0x12')],'source':_0x4b761c[_0x7a77('0x10')],'destination':_0x4b761c[_0x7a77('0x1c')],'destinationcontext':_0x4b761c[_0x7a77('0x1b')],'channel':_0x4b761c[_0x7a77('0x18')],'starttime':utils[_0x7a77('0x1d')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x7a77('0x3'),'amaflags':_0x7a77('0x1e')};}}catch(_0x4e5f1d){utils['error'](util[_0x7a77('0xb')]('[%s][calls][newchannel]',_0x4b761c['uniqueid']),_0x4e5f1d);}};exports[_0x7a77('0x1f')]=function(_0x1c927e){try{utils[_0x7a77('0x20')](util['format']('[%s][calls][newstate]',_0x1c927e[_0x7a77('0x8')]),_0x1c927e);if(!_[_0x7a77('0x21')](channels[_0x1c927e[_0x7a77('0x8')]])&&_0x1c927e[_0x7a77('0x22')]==0x6){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x23'),_0x1c927e[_0x7a77('0x8')],_0x1c927e['context'],_0x1c927e['channel']));if(_['isNil'](channels[_0x1c927e[_0x7a77('0x8')]][_0x7a77('0x24')])){channels[_0x1c927e[_0x7a77('0x8')]]['systemanswertime']=utils[_0x7a77('0x1d')]();}}else if(!_['isNil'](channels[_0x1c927e[_0x7a77('0x17')]])&&_0x1c927e[_0x7a77('0x22')]==0x6&&_0x1c927e[_0x7a77('0x1b')]!=_0x7a77('0x25')){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x26'),_0x1c927e[_0x7a77('0x8')],_0x1c927e[_0x7a77('0x17')],_0x1c927e['context'],_0x1c927e[_0x7a77('0x18')]));channels[_0x1c927e[_0x7a77('0x17')]]['accountcode']=_0x1c927e[_0x7a77('0x12')];channels[_0x1c927e['linkedid']][_0x7a77('0x27')]=_0x1c927e[_0x7a77('0x18')];if(_[_0x7a77('0x21')](channels[_0x1c927e['linkedid']]['answertime'])){channels[_0x1c927e['linkedid']]['answertime']=utils[_0x7a77('0x1d')]();}channels[_0x1c927e['linkedid']]['disposition']=dispositions[_['toNumber'](_0x1c927e[_0x7a77('0x22')])]||_0x7a77('0x5');}}catch(_0x1b2206){utils[_0x7a77('0x28')](util[_0x7a77('0xb')]('[%s][calls][newstate]',_0x1c927e['uniqueid']),_0x1b2206);}};exports[_0x7a77('0x29')]=function(_0x1605c8){try{if(!_['isNil'](channels[_0x1605c8[_0x7a77('0x8')]])){utils[_0x7a77('0x20')](util['format'](_0x7a77('0x2a'),_0x1605c8[_0x7a77('0x8')]),_0x1605c8);if(_[_0x7a77('0x21')](channels[_0x1605c8[_0x7a77('0x8')]][_0x7a77('0x2b')])){channels[_0x1605c8[_0x7a77('0x8')]][_0x7a77('0x2b')]=_0x1605c8[_0x7a77('0x2c')]+'\x20<'+_0x1605c8[_0x7a77('0x10')]+'>';}utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x2d'),_0x1605c8[_0x7a77('0x8')],channels[_0x1605c8[_0x7a77('0x8')]]['callerid'],_0x1605c8[_0x7a77('0x2e')]));channels[_0x1605c8[_0x7a77('0x8')]][_0x7a77('0x2f')]=utils[_0x7a77('0x1d')]();channels[_0x1605c8[_0x7a77('0x8')]]['duration']=utils[_0x7a77('0x30')](channels[_0x1605c8['uniqueid']][_0x7a77('0x2f')],channels[_0x1605c8[_0x7a77('0x8')]]['starttime']);channels[_0x1605c8[_0x7a77('0x8')]]['billableseconds']=channels[_0x1605c8[_0x7a77('0x8')]]['answertime']?utils[_0x7a77('0x30')](channels[_0x1605c8[_0x7a77('0x8')]][_0x7a77('0x2f')],channels[_0x1605c8[_0x7a77('0x8')]][_0x7a77('0x31')]):0x0;writeDB(channels[_0x1605c8['uniqueid']]);}}catch(_0x3d22e5){utils[_0x7a77('0x28')](util[_0x7a77('0xb')](_0x7a77('0x2a'),_0x1605c8[_0x7a77('0x8')]),_0x3d22e5);}};exports[_0x7a77('0x32')]=function(_0x10476a){try{if(!_[_0x7a77('0x21')](channels[_0x10476a[_0x7a77('0x33')]])){utils[_0x7a77('0x20')](util[_0x7a77('0xb')]('[%s][calls][attendedtransfer]',_0x10476a[_0x7a77('0x34')]),_0x10476a);if(channels[_0x10476a[_0x7a77('0x33')]]['channel']==_0x10476a[_0x7a77('0x35')]){utils[_0x7a77('0xa')](util['format'](_0x7a77('0x36'),_0x10476a[_0x7a77('0x34')],_0x10476a[_0x7a77('0x33')],_0x10476a[_0x7a77('0x37')]));channels[_0x10476a[_0x7a77('0x33')]][_0x7a77('0x27')]=_0x10476a['secondtransfererchannel'];channels[_0x10476a['localtwolinkedid']][_0x7a77('0x38')]='_attended';}else if(channels[_0x10476a[_0x7a77('0x33')]][_0x7a77('0x18')]=_0x10476a[_0x7a77('0x39')]){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x36'),_0x10476a[_0x7a77('0x34')],_0x10476a[_0x7a77('0x33')],_0x10476a['origtransfererchannel']));channels[_0x10476a[_0x7a77('0x33')]][_0x7a77('0x27')]=_0x10476a[_0x7a77('0x3a')];channels[_0x10476a['localtwolinkedid']]['userfield']=_0x7a77('0x3b');}}}catch(_0x3996b2){utils[_0x7a77('0x28')](util[_0x7a77('0xb')](_0x7a77('0x3c'),_0x10476a['origtransfereruniqueid']),_0x3996b2);}};exports[_0x7a77('0x3d')]=function(_0x30a0bb){try{if(!_[_0x7a77('0x21')](channels[_0x30a0bb[_0x7a77('0x8')]])){utils[_0x7a77('0x20')](util[_0x7a77('0xb')]('[%s][calls][musiconholdstart]',_0x30a0bb[_0x7a77('0x8')]),_0x30a0bb);channels[_0x30a0bb[_0x7a77('0x8')]]['musiconholdstartAt']=utils[_0x7a77('0x1d')]();utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x3e'),_0x30a0bb[_0x7a77('0x8')],channels[_0x30a0bb['uniqueid']]['musiconholdstartAt']));}}catch(_0x936f26){utils[_0x7a77('0x28')](util[_0x7a77('0xb')](_0x7a77('0x3f'),_0x30a0bb[_0x7a77('0x8')]),_0x936f26);}};exports[_0x7a77('0x40')]=function(_0x258858){try{if(!_[_0x7a77('0x21')](channels[_0x258858['uniqueid']])){utils[_0x7a77('0x20')](util[_0x7a77('0xb')](_0x7a77('0x41'),_0x258858[_0x7a77('0x8')]),_0x258858);if(!_[_0x7a77('0x21')](channels[_0x258858[_0x7a77('0x8')]][_0x7a77('0x42')])){channels[_0x258858[_0x7a77('0x8')]][_0x7a77('0x43')]+=utils[_0x7a77('0x30')](utils[_0x7a77('0x1d')](),channels[_0x258858[_0x7a77('0x8')]]['musiconholdstartAt']);utils['info'](util['format'](_0x7a77('0x44'),_0x258858[_0x7a77('0x8')],channels[_0x258858[_0x7a77('0x8')]]['mohtime']));delete channels[_0x258858['uniqueid']]['musiconholdstartAt'];}}}catch(_0x132564){utils[_0x7a77('0x28')](util['format'](_0x7a77('0x41'),_0x258858[_0x7a77('0x8')]),_0x132564);}};exports[_0x7a77('0x45')]=function(_0x8051da){try{if(!_['isNil'](channels[_0x8051da[_0x7a77('0x8')]])){utils['debug'](util['format'](_0x7a77('0x46'),_0x8051da['uniqueid']),_0x8051da);if(!_[_0x7a77('0x21')](_0x8051da['variable'][_0x7a77('0x47')])){utils[_0x7a77('0xa')](util['format'](_0x7a77('0x48'),_0x8051da[_0x7a77('0x8')],_0x8051da['value']));channels[_0x8051da[_0x7a77('0x8')]][_0x7a77('0x49')]=_0x8051da[_0x7a77('0x4a')];}if(!_[_0x7a77('0x21')](_0x8051da[_0x7a77('0x4b')]['xmd-phone'])){utils['info'](util[_0x7a77('0xb')](_0x7a77('0x4c'),_0x8051da[_0x7a77('0x8')],_0x8051da[_0x7a77('0x4a')]));channels[_0x8051da['uniqueid']]['destination']=_0x8051da[_0x7a77('0x4a')];channels[_0x8051da[_0x7a77('0x8')]][_0x7a77('0x2b')]='\x22'+_0x8051da[_0x7a77('0x4a')]+_0x7a77('0x4d')+_0x8051da[_0x7a77('0x4a')]+'>';}if(!_[_0x7a77('0x21')](_0x8051da[_0x7a77('0x4b')][_0x7a77('0x4e')])||!_[_0x7a77('0x21')](_0x8051da['variable']['xmd-callerid'])){utils[_0x7a77('0xa')](util[_0x7a77('0xb')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x8051da['uniqueid'],!_[_0x7a77('0x21')](_0x8051da[_0x7a77('0x4b')][_0x7a77('0x4e')])?_0x7a77('0x4e'):_0x7a77('0x4f'),_0x8051da[_0x7a77('0x4a')]));channels[_0x8051da[_0x7a77('0x8')]][_0x7a77('0x2b')]=_0x8051da[_0x7a77('0x4a')];}if(!_[_0x7a77('0x21')](_0x8051da[_0x7a77('0x4b')][_0x7a77('0x50')])||!_['isNil'](_0x8051da[_0x7a77('0x4b')][_0x7a77('0x51')])){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x52'),_0x8051da['uniqueid'],!_[_0x7a77('0x21')](_0x8051da[_0x7a77('0x4b')][_0x7a77('0x50')])?'xmd-queue':_0x7a77('0x51'),_0x8051da[_0x7a77('0x4a')]));channels[_0x8051da['uniqueid']][_0x7a77('0x53')]=_0x7a77('0x54');channels[_0x8051da[_0x7a77('0x8')]][_0x7a77('0x55')]=_0x8051da[_0x7a77('0x4a')];channels[_0x8051da[_0x7a77('0x8')]][_0x7a77('0xd')]=!![];}if(!_['isNil'](_0x8051da['variable'][_0x7a77('0x56')])){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x57'),_0x8051da[_0x7a77('0x8')],_0x8051da[_0x7a77('0x4a')]));channels[_0x8051da['uniqueid']][_0x7a77('0x58')]=_0x8051da[_0x7a77('0x4a')];}if(!_[_0x7a77('0x21')](_0x8051da[_0x7a77('0x4b')][_0x7a77('0x59')])){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x5a'),_0x8051da[_0x7a77('0x8')],_0x8051da[_0x7a77('0x4a')]));channels[_0x8051da[_0x7a77('0x8')]][_0x7a77('0x5b')]=_0x8051da[_0x7a77('0x4a')];}if(!_['isNil'](_0x8051da[_0x7a77('0x4b')]['outboundrouteid'])){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x5c'),_0x8051da[_0x7a77('0x8')],_0x8051da['value']));channels[_0x8051da['uniqueid']]['routeid']=_0x8051da[_0x7a77('0x4a')];}if(!_[_0x7a77('0x21')](_0x8051da['variable']['sipcallid'])){utils[_0x7a77('0xa')](util[_0x7a77('0xb')](_0x7a77('0x5d'),_0x8051da[_0x7a77('0x8')],_0x8051da[_0x7a77('0x4a')]));channels[_0x8051da[_0x7a77('0x8')]]['sipcallid']=_0x8051da[_0x7a77('0x4a')];}}}catch(_0x588545){utils[_0x7a77('0x28')](util[_0x7a77('0xb')](_0x7a77('0x46'),_0x8051da[_0x7a77('0x8')]),_0x588545);}};exports['newexten']=function(_0x3c8476){try{if(!_[_0x7a77('0x21')](channels[_0x3c8476[_0x7a77('0x8')]])){utils[_0x7a77('0x20')](util[_0x7a77('0xb')](_0x7a77('0x5e'),_0x3c8476[_0x7a77('0x8')]),_0x3c8476);utils[_0x7a77('0xa')](util[_0x7a77('0xb')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x3c8476[_0x7a77('0x8')],_0x3c8476[_0x7a77('0x5f')],_0x3c8476['appdata']));if(_0x3c8476[_0x7a77('0x5f')][_0x7a77('0x60')]()==_0x7a77('0x61')&&_['startsWith'](_0x3c8476[_0x7a77('0x62')][_0x7a77('0x60')](),_0x7a77('0x63'))){var _0x24baac=_0x3c8476[_0x7a77('0x62')][_0x7a77('0x64')]('=');var _0x333e25=_0x24baac[0x0][_0x7a77('0x65')](_0x24baac[0x0]['lastIndexOf']('(')+0x1,_0x24baac[0x0][_0x7a77('0x66')](')'));var _0x17868c=_0x24baac[0x1];channels[_0x3c8476[_0x7a77('0x8')]][_0x333e25]=_0x17868c;}if(!_[_0x7a77('0x67')]([_0x7a77('0x29'),_0x7a77('0x68'),'execif',_0x7a77('0x61'),'gotoif'],_0x3c8476[_0x7a77('0x5f')]['toLowerCase']())){channels[_0x3c8476[_0x7a77('0x8')]][_0x7a77('0x53')]=_0x3c8476['application'];channels[_0x3c8476[_0x7a77('0x8')]]['lastdata']=_0x3c8476[_0x7a77('0x62')];}}}catch(_0x1347a9){utils[_0x7a77('0x28')](util[_0x7a77('0xb')]('[%s][calls][newexten]',_0x3c8476['uniqueid']),_0x1347a9);}};
\ No newline at end of file
+var _0xb53e=['[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','destinationchannel','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','Queue','lastdata','xmd-contactid','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','application','toLowerCase','set','startsWith','appdata','split','substring','lastIndexOf','includes','noop','execif','gotoif','[%s][calls][newexten]','lodash','util','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','connectedlinenum','lastevent','accountcode','then','UserId','request','CreateVoiceCallReport','recording','[%s][calls][newchannel]','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','linkedid','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','answertime','disposition','toNumber','hangup','debug','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','starttime','diffTime','attendedtransfer','localtwolinkedid'];(function(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0xb53e,0xa9));var _0xeb53=function(_0x3e21f6,_0x143568){_0x3e21f6=_0x3e21f6-0x0;var _0x21dbc6=_0xb53e[_0x3e21f6];return _0x21dbc6;};'use strict';var _=require(_0xeb53('0x0'));var util=require(_0xeb53('0x1'));var utils=require('./utils');var transfers=require(_0xeb53('0x2'));var dispositions=[_0xeb53('0x3'),'FAILED',_0xeb53('0x4'),_0xeb53('0x3'),'NO\x20ANSWER',_0xeb53('0x3'),_0xeb53('0x5'),'BUSY','FAILED',_0xeb53('0x4'),_0xeb53('0x4')];var channels={};function writeDB(_0x39e1a8){var _0x5741a1;if(transfers[_0xeb53('0x6')][_0x39e1a8['uniqueid']]){_0x5741a1=_0x39e1a8['uniqueid'];_0x39e1a8[_0xeb53('0x7')]=transfers[_0xeb53('0x6')][_0x39e1a8[_0xeb53('0x7')]][_0xeb53('0x8')];}utils['info'](util[_0xeb53('0x9')](_0xeb53('0xa'),_0x39e1a8[_0xeb53('0x7')],_0x39e1a8[_0xeb53('0xb')],_0x39e1a8[_0xeb53('0xc')],_0x39e1a8[_0xeb53('0xd')],_0x39e1a8[_0xeb53('0xe')],_0x39e1a8['calleridnum'],_0x39e1a8[_0xeb53('0xf')],_0x39e1a8[_0xeb53('0x10')]));if(_0x39e1a8[_0xeb53('0x11')]){utils['getUserByInternal'](_0x39e1a8['accountcode'])[_0xeb53('0x12')](function(_0x1e2530){if(_0x1e2530){_0x39e1a8[_0xeb53('0x13')]=_0x1e2530['id'];}utils[_0xeb53('0x14')](_0xeb53('0x15'),_0x39e1a8);});}else{utils['request'](_0xeb53('0x15'),_0x39e1a8);}if(channels[_0x39e1a8[_0xeb53('0x7')]]){delete channels[_0x39e1a8[_0xeb53('0x7')]];}else if(_0x5741a1&&channels[_0x5741a1]){if(!transfers[_0xeb53('0x6')][_0x5741a1][_0xeb53('0x16')])delete transfers[_0xeb53('0x6')][_0x5741a1];delete channels[_0x5741a1];}}exports['newchannel']=function(_0x405995){try{utils['debug'](util[_0xeb53('0x9')](_0xeb53('0x17'),_0x405995[_0xeb53('0x7')]),_0x405995);if(_0x405995[_0xeb53('0x7')]==_0x405995['linkedid']&&_0x405995[_0xeb53('0xb')]!=_0xeb53('0x18')){utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x1a'),_0x405995[_0xeb53('0x7')],_0x405995[_0xeb53('0x1b')],_0x405995[_0xeb53('0x1c')]));channels[_0x405995[_0xeb53('0x7')]]={'uniqueid':_0x405995['uniqueid'],'accountcode':_0x405995[_0xeb53('0x11')],'source':_0x405995[_0xeb53('0x1d')],'destination':_0x405995[_0xeb53('0x1c')],'destinationcontext':_0x405995[_0xeb53('0x1b')],'channel':_0x405995['channel'],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xeb53('0x3'),'amaflags':_0xeb53('0x1e')};}}catch(_0x303973){utils[_0xeb53('0x1f')](util[_0xeb53('0x9')](_0xeb53('0x17'),_0x405995[_0xeb53('0x7')]),_0x303973);}};exports[_0xeb53('0x20')]=function(_0x42f26e){try{utils['debug'](util[_0xeb53('0x9')](_0xeb53('0x21'),_0x42f26e['uniqueid']),_0x42f26e);if(!_[_0xeb53('0x22')](channels[_0x42f26e[_0xeb53('0x7')]])&&_0x42f26e[_0xeb53('0x23')]==0x6){utils[_0xeb53('0x19')](util['format'](_0xeb53('0x24'),_0x42f26e[_0xeb53('0x7')],_0x42f26e[_0xeb53('0x1b')],_0x42f26e[_0xeb53('0xb')]));if(_[_0xeb53('0x22')](channels[_0x42f26e[_0xeb53('0x7')]][_0xeb53('0x25')])){channels[_0x42f26e[_0xeb53('0x7')]][_0xeb53('0x25')]=utils[_0xeb53('0x26')]();}}else if(!_['isNil'](channels[_0x42f26e[_0xeb53('0x27')]])&&_0x42f26e[_0xeb53('0x23')]==0x6&&_0x42f26e[_0xeb53('0x1b')]!=_0xeb53('0x28')){utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x29'),_0x42f26e[_0xeb53('0x7')],_0x42f26e[_0xeb53('0x27')],_0x42f26e[_0xeb53('0x1b')],_0x42f26e['channel']));channels[_0x42f26e[_0xeb53('0x27')]][_0xeb53('0x11')]=_0x42f26e['accountcode'];channels[_0x42f26e[_0xeb53('0x27')]]['destinationchannel']=_0x42f26e[_0xeb53('0xb')];if(_[_0xeb53('0x22')](channels[_0x42f26e[_0xeb53('0x27')]][_0xeb53('0x2a')])){channels[_0x42f26e[_0xeb53('0x27')]][_0xeb53('0x2a')]=utils[_0xeb53('0x26')]();}channels[_0x42f26e[_0xeb53('0x27')]][_0xeb53('0x2b')]=dispositions[_[_0xeb53('0x2c')](_0x42f26e['channelstate'])]||_0xeb53('0x5');}}catch(_0x29246f){utils[_0xeb53('0x1f')](util[_0xeb53('0x9')](_0xeb53('0x21'),_0x42f26e[_0xeb53('0x7')]),_0x29246f);}};exports[_0xeb53('0x2d')]=function(_0xe6b303){try{if(!_[_0xeb53('0x22')](channels[_0xe6b303[_0xeb53('0x7')]])){utils[_0xeb53('0x2e')](util[_0xeb53('0x9')](_0xeb53('0x2f'),_0xe6b303['uniqueid']),_0xe6b303);if(_['isNil'](channels[_0xe6b303['uniqueid']]['callerid'])){channels[_0xe6b303['uniqueid']][_0xeb53('0x30')]=_0xe6b303['calleridname']+'\x20<'+_0xe6b303[_0xeb53('0x1d')]+'>';}utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x31'),_0xe6b303[_0xeb53('0x7')],channels[_0xe6b303['uniqueid']][_0xeb53('0x30')],_0xe6b303[_0xeb53('0x32')]));channels[_0xe6b303[_0xeb53('0x7')]][_0xeb53('0x33')]=utils['now']();channels[_0xe6b303[_0xeb53('0x7')]][_0xeb53('0x34')]=utils['diffTime'](channels[_0xe6b303[_0xeb53('0x7')]]['endtime'],channels[_0xe6b303['uniqueid']][_0xeb53('0x35')]);channels[_0xe6b303['uniqueid']]['billableseconds']=channels[_0xe6b303[_0xeb53('0x7')]][_0xeb53('0x2a')]?utils[_0xeb53('0x36')](channels[_0xe6b303['uniqueid']][_0xeb53('0x33')],channels[_0xe6b303[_0xeb53('0x7')]][_0xeb53('0x2a')]):0x0;writeDB(channels[_0xe6b303['uniqueid']]);}}catch(_0x2713e9){utils['error'](util[_0xeb53('0x9')]('[%s][calls][hangup]',_0xe6b303['uniqueid']),_0x2713e9);}};exports[_0xeb53('0x37')]=function(_0x36d613){try{if(!_[_0xeb53('0x22')](channels[_0x36d613[_0xeb53('0x38')]])){utils[_0xeb53('0x2e')](util[_0xeb53('0x9')](_0xeb53('0x39'),_0x36d613[_0xeb53('0x3a')]),_0x36d613);if(channels[_0x36d613[_0xeb53('0x38')]]['channel']==_0x36d613[_0xeb53('0x3b')]){utils['info'](util[_0xeb53('0x9')](_0xeb53('0x3c'),_0x36d613['origtransfereruniqueid'],_0x36d613[_0xeb53('0x38')],_0x36d613[_0xeb53('0x3d')]));channels[_0x36d613[_0xeb53('0x38')]][_0xeb53('0x3e')]=_0x36d613['secondtransfererchannel'];channels[_0x36d613[_0xeb53('0x38')]]['userfield']=_0xeb53('0x3f');}else if(channels[_0x36d613[_0xeb53('0x38')]][_0xeb53('0xb')]=_0x36d613[_0xeb53('0x40')]){utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x3c'),_0x36d613[_0xeb53('0x3a')],_0x36d613['localtwolinkedid'],_0x36d613[_0xeb53('0x41')]));channels[_0x36d613[_0xeb53('0x38')]][_0xeb53('0x3e')]=_0x36d613['origtransfererchannel'];channels[_0x36d613['localtwolinkedid']]['userfield']=_0xeb53('0x3f');}}}catch(_0x48ca98){utils[_0xeb53('0x1f')](util[_0xeb53('0x9')](_0xeb53('0x39'),_0x36d613['origtransfereruniqueid']),_0x48ca98);}};exports[_0xeb53('0x42')]=function(_0x26c314){try{if(!_[_0xeb53('0x22')](channels[_0x26c314[_0xeb53('0x7')]])){utils[_0xeb53('0x2e')](util[_0xeb53('0x9')](_0xeb53('0x43'),_0x26c314[_0xeb53('0x7')]),_0x26c314);channels[_0x26c314[_0xeb53('0x7')]][_0xeb53('0x44')]=utils['now']();utils[_0xeb53('0x19')](util['format'](_0xeb53('0x45'),_0x26c314['uniqueid'],channels[_0x26c314[_0xeb53('0x7')]]['musiconholdstartAt']));}}catch(_0x57b209){utils['error'](util[_0xeb53('0x9')](_0xeb53('0x43'),_0x26c314[_0xeb53('0x7')]),_0x57b209);}};exports[_0xeb53('0x46')]=function(_0x55977b){try{if(!_[_0xeb53('0x22')](channels[_0x55977b[_0xeb53('0x7')]])){utils[_0xeb53('0x2e')](util[_0xeb53('0x9')](_0xeb53('0x47'),_0x55977b[_0xeb53('0x7')]),_0x55977b);if(!_[_0xeb53('0x22')](channels[_0x55977b[_0xeb53('0x7')]]['musiconholdstartAt'])){channels[_0x55977b['uniqueid']][_0xeb53('0x48')]+=utils['diffTime'](utils[_0xeb53('0x26')](),channels[_0x55977b[_0xeb53('0x7')]]['musiconholdstartAt']);utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x49'),_0x55977b[_0xeb53('0x7')],channels[_0x55977b[_0xeb53('0x7')]][_0xeb53('0x48')]));delete channels[_0x55977b[_0xeb53('0x7')]][_0xeb53('0x44')];}}}catch(_0x1cd412){utils[_0xeb53('0x1f')](util[_0xeb53('0x9')](_0xeb53('0x47'),_0x55977b[_0xeb53('0x7')]),_0x1cd412);}};exports['varset']=function(_0x4db0a7){try{if(!_[_0xeb53('0x22')](channels[_0x4db0a7[_0xeb53('0x7')]])){utils[_0xeb53('0x2e')](util[_0xeb53('0x9')]('[%s][calls][varset]',_0x4db0a7[_0xeb53('0x7')]),_0x4db0a7);if(!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x4b')])){utils['info'](util['format'](_0xeb53('0x4c'),_0x4db0a7[_0xeb53('0x7')],_0x4db0a7[_0xeb53('0x4d')]));channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x4e')]=_0x4db0a7[_0xeb53('0x4d')];}if(!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x4f')])){utils['info'](util[_0xeb53('0x9')](_0xeb53('0x50'),_0x4db0a7[_0xeb53('0x7')],_0x4db0a7[_0xeb53('0x4d')]));channels[_0x4db0a7['uniqueid']][_0xeb53('0x51')]=_0x4db0a7[_0xeb53('0x4d')];channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x30')]='\x22'+_0x4db0a7['value']+_0xeb53('0x52')+_0x4db0a7[_0xeb53('0x4d')]+'>';}if(!_[_0xeb53('0x22')](_0x4db0a7['variable'][_0xeb53('0x53')])||!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x54')])){utils['info'](util['format'](_0xeb53('0x55'),_0x4db0a7[_0xeb53('0x7')],!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x53')])?_0xeb53('0x53'):_0xeb53('0x54'),_0x4db0a7['value']));channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x30')]=_0x4db0a7[_0xeb53('0x4d')];}if(!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')]['xmd-queue'])||!_['isNil'](_0x4db0a7['variable'][_0xeb53('0x56')])){utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x55'),_0x4db0a7['uniqueid'],!_['isNil'](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x57')])?_0xeb53('0x57'):_0xeb53('0x56'),_0x4db0a7[_0xeb53('0x4d')]));channels[_0x4db0a7['uniqueid']][_0xeb53('0x58')]=_0xeb53('0x59');channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x5a')]=_0x4db0a7['value'];channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0xc')]=!![];}if(!_['isNil'](_0x4db0a7['variable'][_0xeb53('0x5b')])){utils[_0xeb53('0x19')](util[_0xeb53('0x9')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x4db0a7[_0xeb53('0x7')],_0x4db0a7[_0xeb53('0x4d')]));channels[_0x4db0a7[_0xeb53('0x7')]]['ContactId']=_0x4db0a7[_0xeb53('0x4d')];}if(!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x5c')])){utils['info'](util[_0xeb53('0x9')](_0xeb53('0x5d'),_0x4db0a7[_0xeb53('0x7')],_0x4db0a7[_0xeb53('0x4d')]));channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x5e')]=_0x4db0a7[_0xeb53('0x4d')];}if(!_[_0xeb53('0x22')](_0x4db0a7[_0xeb53('0x4a')]['outboundrouteid'])){utils['info'](util['format'](_0xeb53('0x5f'),_0x4db0a7[_0xeb53('0x7')],_0x4db0a7[_0xeb53('0x4d')]));channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x60')]=_0x4db0a7['value'];}if(!_['isNil'](_0x4db0a7[_0xeb53('0x4a')][_0xeb53('0x61')])){utils[_0xeb53('0x19')](util[_0xeb53('0x9')](_0xeb53('0x62'),_0x4db0a7[_0xeb53('0x7')],_0x4db0a7['value']));channels[_0x4db0a7[_0xeb53('0x7')]][_0xeb53('0x61')]=_0x4db0a7[_0xeb53('0x4d')];}}}catch(_0x4e4402){utils[_0xeb53('0x1f')](util['format'](_0xeb53('0x63'),_0x4db0a7['uniqueid']),_0x4e4402);}};exports['newexten']=function(_0x2ec9d7){try{if(!_[_0xeb53('0x22')](channels[_0x2ec9d7['uniqueid']])){utils['debug'](util['format']('[%s][calls][newexten]',_0x2ec9d7['uniqueid']),_0x2ec9d7);utils[_0xeb53('0x19')](util[_0xeb53('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x2ec9d7[_0xeb53('0x7')],_0x2ec9d7[_0xeb53('0x64')],_0x2ec9d7['appdata']));if(_0x2ec9d7[_0xeb53('0x64')][_0xeb53('0x65')]()==_0xeb53('0x66')&&_[_0xeb53('0x67')](_0x2ec9d7[_0xeb53('0x68')][_0xeb53('0x65')](),'cdr')){var _0xe7bdf7=_0x2ec9d7[_0xeb53('0x68')][_0xeb53('0x69')]('=');var _0x1718d3=_0xe7bdf7[0x0][_0xeb53('0x6a')](_0xe7bdf7[0x0][_0xeb53('0x6b')]('(')+0x1,_0xe7bdf7[0x0]['lastIndexOf'](')'));var _0x1791e4=_0xe7bdf7[0x1];channels[_0x2ec9d7[_0xeb53('0x7')]][_0x1718d3]=_0x1791e4;}if(!_[_0xeb53('0x6c')]([_0xeb53('0x2d'),_0xeb53('0x6d'),_0xeb53('0x6e'),'set',_0xeb53('0x6f')],_0x2ec9d7[_0xeb53('0x64')][_0xeb53('0x65')]())){channels[_0x2ec9d7['uniqueid']][_0xeb53('0x58')]=_0x2ec9d7['application'];channels[_0x2ec9d7['uniqueid']][_0xeb53('0x5a')]=_0x2ec9d7[_0xeb53('0x68')];}}}catch(_0x34ea4d){utils['error'](util[_0xeb53('0x9')](_0xeb53('0x70'),_0x2ec9d7[_0xeb53('0x7')]),_0x34ea4d);}};
\ No newline at end of file
index f8c3fa6..7db7273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662f=['info','shutdown','fullybooted','[core]\x20fullybooted','error','./utils','connect'];(function(_0x4d98b8,_0x539839){var _0x5e271b=function(_0x280ac6){while(--_0x280ac6){_0x4d98b8['push'](_0x4d98b8['shift']());}};_0x5e271b(++_0x539839);}(_0x662f,0x11d));var _0xf662=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x662f[_0x321bb2];return _0x9c12ed;};'use strict';var utils=require(_0xf662('0x0'));exports[_0xf662('0x1')]=function(){utils[_0xf662('0x2')]('[core]\x20connected');};exports[_0xf662('0x3')]=function(){utils[_0xf662('0x2')]('[core]\x20shutdown');};exports[_0xf662('0x4')]=function(){utils['info'](_0xf662('0x5'));};exports[_0xf662('0x6')]=function(_0x2b7ef7){utils['error']('[core]\x20error',_0x2b7ef7);};exports['close']=function(){utils[_0xf662('0x2')]('[core]\x20close');};exports['managerevent']=function(_0x35b1e1){};
\ No newline at end of file
+var _0xa32f=['close','managerevent','./utils','shutdown','[core]\x20shutdown','fullybooted','info','[core]\x20fullybooted','error','[core]\x20error'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa32f,0x19c));var _0xfa32=function(_0x331e28,_0x410877){_0x331e28=_0x331e28-0x0;var _0x20db4a=_0xa32f[_0x331e28];return _0x20db4a;};'use strict';var utils=require(_0xfa32('0x0'));exports['connect']=function(){utils['info']('[core]\x20connected');};exports[_0xfa32('0x1')]=function(){utils['info'](_0xfa32('0x2'));};exports[_0xfa32('0x3')]=function(){utils[_0xfa32('0x4')](_0xfa32('0x5'));};exports[_0xfa32('0x6')]=function(_0x13a5c0){utils[_0xfa32('0x6')](_0xfa32('0x7'),_0x13a5c0);};exports[_0xfa32('0x8')]=function(){utils[_0xfa32('0x4')]('[core]\x20close');};exports[_0xfa32('0x9')]=function(_0x2876ac){};
\ No newline at end of file
index 4e09f4b..f617d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7437=['[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','complete','duration','endtime','diffTime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','uniqueid','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr(routeid)','error','varset','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialend]','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','hangup'];(function(_0x4c8679,_0x3f86c1){var _0x305b8c=function(_0x55a3ce){while(--_0x55a3ce){_0x4c8679['push'](_0x4c8679['shift']());}};_0x305b8c(++_0x3f86c1);}(_0x7437,0x1ae));var _0x7743=function(_0x28b83a,_0x401d6f){_0x28b83a=_0x28b83a-0x0;var _0x5985d9=_0x7437[_0x28b83a];return _0x5985d9;};'use strict';var _=require(_0x7743('0x0'));var util=require(_0x7743('0x1'));var utils=require(_0x7743('0x2'));var dials={};function writeDB(_0x5cbf45){utils[_0x7743('0x3')](util[_0x7743('0x4')](_0x7743('0x5'),_0x5cbf45['uniqueid'],_0x5cbf45[_0x7743('0x6')],_0x5cbf45[_0x7743('0x7')],_0x5cbf45[_0x7743('0x8')],_0x5cbf45[_0x7743('0x9')],_0x5cbf45[_0x7743('0xa')]));utils[_0x7743('0xb')]('CreateVoiceDialReport',_0x5cbf45);delete dials[_0x5cbf45[_0x7743('0xc')]];}exports['newexten']=function(_0x57e0a8){try{utils[_0x7743('0xd')](util[_0x7743('0x4')](_0x7743('0xe'),_0x57e0a8[_0x7743('0xc')]),_0x57e0a8);utils[_0x7743('0x3')](util[_0x7743('0x4')](_0x7743('0xf'),_0x57e0a8[_0x7743('0xc')],_0x57e0a8[_0x7743('0x10')],_0x57e0a8[_0x7743('0x11')]));if(_0x57e0a8[_0x7743('0x10')][_0x7743('0x12')]()=='set'&&_['startsWith'](_0x57e0a8[_0x7743('0x11')][_0x7743('0x12')](),_0x7743('0x13'))){var _0x5cad91=_0x57e0a8[_0x7743('0x11')]['split']('=');dials[_0x57e0a8['uniqueid']]={'routeId':_0x5cad91[0x1]};}}catch(_0x366763){utils[_0x7743('0x14')](util[_0x7743('0x4')](_0x7743('0xe'),_0x57e0a8[_0x7743('0xc')]),_0x366763);}};exports[_0x7743('0x15')]=function(_0x4d1981){try{utils['debug'](util['format'](_0x7743('0x16'),_0x4d1981[_0x7743('0xc')]),_0x4d1981);if(!_[_0x7743('0x17')](_0x4d1981['variable'][_0x7743('0x18')])){utils['info'](util[_0x7743('0x4')](_0x7743('0x19'),_0x4d1981[_0x7743('0xc')],_0x4d1981[_0x7743('0x1a')]));dials[_0x4d1981['uniqueid']]={'routeId':_0x4d1981['value']};}}catch(_0x179a26){utils[_0x7743('0x14')](util['format'](_0x7743('0x16'),_0x4d1981[_0x7743('0xc')]),_0x179a26);}};exports[_0x7743('0x1b')]=function(_0x571561){try{if(!_[_0x7743('0x17')](dials[_0x571561[_0x7743('0xc')]])){utils[_0x7743('0xd')](util['format'](_0x7743('0x1c'),_0x571561[_0x7743('0xc')]),_0x571561);dials[_0x571561[_0x7743('0xc')]]=_[_0x7743('0x1d')](dials[_0x571561[_0x7743('0xc')]],_0x571561);dials[_0x571561['uniqueid']][_0x7743('0x1e')]=utils[_0x7743('0x1f')]();dials[_0x571561[_0x7743('0xc')]][_0x7743('0x20')]=_0x7743('0x21');utils[_0x7743('0x3')](util[_0x7743('0x4')](_0x7743('0x22'),_0x571561[_0x7743('0xc')],dials[_0x571561[_0x7743('0xc')]][_0x7743('0x1e')]));}}catch(_0x14aa16){utils[_0x7743('0x14')](util['format'](_0x7743('0x1c'),_0x571561[_0x7743('0xc')]),_0x14aa16);}};exports['dialend']=function(_0x1f6288){try{if(!_[_0x7743('0x17')](dials[_0x1f6288[_0x7743('0xc')]])){utils['debug'](util['format'](_0x7743('0x23'),_0x1f6288[_0x7743('0xc')]),_0x1f6288);dials[_0x1f6288[_0x7743('0xc')]][_0x7743('0xa')]=_0x1f6288['dialstatus'];if(_0x1f6288[_0x7743('0xa')]==_0x7743('0x24')){dials[_0x1f6288['uniqueid']]=_['assign'](dials[_0x1f6288[_0x7743('0xc')]],_0x1f6288);dials[_0x1f6288['uniqueid']][_0x7743('0x25')]=utils[_0x7743('0x1f')]();dials[_0x1f6288[_0x7743('0xc')]]['lastevent']='connect';utils[_0x7743('0x3')](util[_0x7743('0x4')](_0x7743('0x26'),_0x1f6288[_0x7743('0xc')],_0x1f6288[_0x7743('0xa')],dials[_0x1f6288[_0x7743('0xc')]]['answertime']));}else{utils['info'](util[_0x7743('0x4')]('[%s][dials][dialend]\x20dialstatus:%s',_0x1f6288[_0x7743('0xc')],_0x1f6288[_0x7743('0xa')]));}}}catch(_0x2e73c7){utils['error'](util[_0x7743('0x4')](_0x7743('0x23'),_0x1f6288[_0x7743('0xc')]),_0x2e73c7);}};exports[_0x7743('0x27')]=function(_0x867fef){try{if(!_[_0x7743('0x17')](dials[_0x867fef[_0x7743('0xc')]])){utils['debug'](util[_0x7743('0x4')]('[%s][dials][hangup]',_0x867fef['uniqueid']),_0x867fef);utils['info'](util['format'](_0x7743('0x28'),_0x867fef[_0x7743('0xc')],_0x867fef[_0x7743('0x8')],_0x867fef[_0x7743('0x29')],_0x867fef['cause-txt']));dials[_0x867fef[_0x7743('0xc')]]=_[_0x7743('0x1d')](dials[_0x867fef[_0x7743('0xc')]],{'endtime':utils['now'](),'lastevent':_0x7743('0x2a')});dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x2b')]=utils['diffTime'](dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x2c')],dials[_0x867fef['uniqueid']]['starttime']);dials[_0x867fef[_0x7743('0xc')]]['holdtime']=utils[_0x7743('0x2d')](dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x25')]||dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x2c')],dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x1e')]);dials[_0x867fef['uniqueid']][_0x7743('0x2e')]=dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x25')]?utils[_0x7743('0x2d')](dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x2c')],dials[_0x867fef[_0x7743('0xc')]][_0x7743('0x25')]):0x0;writeDB(dials[_0x867fef[_0x7743('0xc')]]);}}catch(_0x4a5abb){utils[_0x7743('0x14')](util[_0x7743('0x4')]('[%s][dials][hangup]',_0x867fef[_0x7743('0xc')]),_0x4a5abb);}};
\ No newline at end of file
+var _0xfebc=['value','dialbegin','assign','starttime','now','lastevent','called','dialend','[%s][dials][dialend]','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','calleridname','cause-txt','complete','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','dialstatus','request','debug','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s'];(function(_0x5528c3,_0x35a416){var _0x47ec1b=function(_0x54a18e){while(--_0x54a18e){_0x5528c3['push'](_0x5528c3['shift']());}};_0x47ec1b(++_0x35a416);}(_0xfebc,0x1cf));var _0xcfeb=function(_0x177cc9,_0x3f6fdd){_0x177cc9=_0x177cc9-0x0;var _0x2fe577=_0xfebc[_0x177cc9];return _0x2fe577;};'use strict';var _=require(_0xcfeb('0x0'));var util=require(_0xcfeb('0x1'));var utils=require(_0xcfeb('0x2'));var dials={};function writeDB(_0x27fa57){utils['info'](util[_0xcfeb('0x3')](_0xcfeb('0x4'),_0x27fa57[_0xcfeb('0x5')],_0x27fa57['channel'],_0x27fa57[_0xcfeb('0x6')],_0x27fa57[_0xcfeb('0x7')],_0x27fa57['connectedlinenum'],_0x27fa57[_0xcfeb('0x8')]));utils[_0xcfeb('0x9')]('CreateVoiceDialReport',_0x27fa57);delete dials[_0x27fa57[_0xcfeb('0x5')]];}exports['newexten']=function(_0x137fc1){try{utils[_0xcfeb('0xa')](util[_0xcfeb('0x3')](_0xcfeb('0xb'),_0x137fc1[_0xcfeb('0x5')]),_0x137fc1);utils[_0xcfeb('0xc')](util[_0xcfeb('0x3')](_0xcfeb('0xd'),_0x137fc1[_0xcfeb('0x5')],_0x137fc1[_0xcfeb('0xe')],_0x137fc1[_0xcfeb('0xf')]));if(_0x137fc1[_0xcfeb('0xe')][_0xcfeb('0x10')]()=='set'&&_[_0xcfeb('0x11')](_0x137fc1['appdata']['toLowerCase'](),_0xcfeb('0x12'))){var _0x2fdad2=_0x137fc1[_0xcfeb('0xf')][_0xcfeb('0x13')]('=');dials[_0x137fc1[_0xcfeb('0x5')]]={'routeId':_0x2fdad2[0x1]};}}catch(_0x3a934f){utils[_0xcfeb('0x14')](util[_0xcfeb('0x3')](_0xcfeb('0xb'),_0x137fc1['uniqueid']),_0x3a934f);}};exports[_0xcfeb('0x15')]=function(_0x32a08d){try{utils['debug'](util[_0xcfeb('0x3')](_0xcfeb('0x16'),_0x32a08d[_0xcfeb('0x5')]),_0x32a08d);if(!_[_0xcfeb('0x17')](_0x32a08d[_0xcfeb('0x18')][_0xcfeb('0x19')])){utils[_0xcfeb('0xc')](util[_0xcfeb('0x3')](_0xcfeb('0x1a'),_0x32a08d['uniqueid'],_0x32a08d[_0xcfeb('0x1b')]));dials[_0x32a08d['uniqueid']]={'routeId':_0x32a08d[_0xcfeb('0x1b')]};}}catch(_0x3d70b){utils[_0xcfeb('0x14')](util[_0xcfeb('0x3')](_0xcfeb('0x16'),_0x32a08d['uniqueid']),_0x3d70b);}};exports[_0xcfeb('0x1c')]=function(_0x59f5da){try{if(!_['isNil'](dials[_0x59f5da[_0xcfeb('0x5')]])){utils[_0xcfeb('0xa')](util['format']('[%s][dials][dialbegin]',_0x59f5da[_0xcfeb('0x5')]),_0x59f5da);dials[_0x59f5da[_0xcfeb('0x5')]]=_[_0xcfeb('0x1d')](dials[_0x59f5da[_0xcfeb('0x5')]],_0x59f5da);dials[_0x59f5da[_0xcfeb('0x5')]][_0xcfeb('0x1e')]=utils[_0xcfeb('0x1f')]();dials[_0x59f5da[_0xcfeb('0x5')]][_0xcfeb('0x20')]=_0xcfeb('0x21');utils[_0xcfeb('0xc')](util[_0xcfeb('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x59f5da[_0xcfeb('0x5')],dials[_0x59f5da[_0xcfeb('0x5')]][_0xcfeb('0x1e')]));}}catch(_0xa45bf2){utils['error'](util[_0xcfeb('0x3')]('[%s][dials][dialbegin]',_0x59f5da['uniqueid']),_0xa45bf2);}};exports[_0xcfeb('0x22')]=function(_0x4932e5){try{if(!_[_0xcfeb('0x17')](dials[_0x4932e5[_0xcfeb('0x5')]])){utils[_0xcfeb('0xa')](util[_0xcfeb('0x3')](_0xcfeb('0x23'),_0x4932e5['uniqueid']),_0x4932e5);dials[_0x4932e5[_0xcfeb('0x5')]]['dialstatus']=_0x4932e5[_0xcfeb('0x8')];if(_0x4932e5[_0xcfeb('0x8')]=='ANSWER'){dials[_0x4932e5[_0xcfeb('0x5')]]=_['assign'](dials[_0x4932e5[_0xcfeb('0x5')]],_0x4932e5);dials[_0x4932e5[_0xcfeb('0x5')]][_0xcfeb('0x24')]=utils[_0xcfeb('0x1f')]();dials[_0x4932e5['uniqueid']][_0xcfeb('0x20')]=_0xcfeb('0x25');utils[_0xcfeb('0xc')](util[_0xcfeb('0x3')](_0xcfeb('0x26'),_0x4932e5[_0xcfeb('0x5')],_0x4932e5[_0xcfeb('0x8')],dials[_0x4932e5[_0xcfeb('0x5')]][_0xcfeb('0x24')]));}else{utils[_0xcfeb('0xc')](util['format'](_0xcfeb('0x27'),_0x4932e5['uniqueid'],_0x4932e5[_0xcfeb('0x8')]));}}}catch(_0x16609e){utils[_0xcfeb('0x14')](util[_0xcfeb('0x3')](_0xcfeb('0x23'),_0x4932e5[_0xcfeb('0x5')]),_0x16609e);}};exports[_0xcfeb('0x28')]=function(_0x118d31){try{if(!_[_0xcfeb('0x17')](dials[_0x118d31[_0xcfeb('0x5')]])){utils[_0xcfeb('0xa')](util[_0xcfeb('0x3')](_0xcfeb('0x29'),_0x118d31['uniqueid']),_0x118d31);utils[_0xcfeb('0xc')](util[_0xcfeb('0x3')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x118d31[_0xcfeb('0x5')],_0x118d31[_0xcfeb('0x7')],_0x118d31[_0xcfeb('0x2a')],_0x118d31[_0xcfeb('0x2b')]));dials[_0x118d31[_0xcfeb('0x5')]]=_[_0xcfeb('0x1d')](dials[_0x118d31['uniqueid']],{'endtime':utils[_0xcfeb('0x1f')](),'lastevent':_0xcfeb('0x2c')});dials[_0x118d31[_0xcfeb('0x5')]]['duration']=utils[_0xcfeb('0x2d')](dials[_0x118d31['uniqueid']][_0xcfeb('0x2e')],dials[_0x118d31[_0xcfeb('0x5')]]['starttime']);dials[_0x118d31[_0xcfeb('0x5')]][_0xcfeb('0x2f')]=utils[_0xcfeb('0x2d')](dials[_0x118d31['uniqueid']][_0xcfeb('0x24')]||dials[_0x118d31[_0xcfeb('0x5')]][_0xcfeb('0x2e')],dials[_0x118d31[_0xcfeb('0x5')]][_0xcfeb('0x1e')]);dials[_0x118d31['uniqueid']][_0xcfeb('0x30')]=dials[_0x118d31[_0xcfeb('0x5')]][_0xcfeb('0x24')]?utils[_0xcfeb('0x2d')](dials[_0x118d31[_0xcfeb('0x5')]][_0xcfeb('0x2e')],dials[_0x118d31[_0xcfeb('0x5')]][_0xcfeb('0x24')]):0x0;writeDB(dials[_0x118d31[_0xcfeb('0x5')]]);}}catch(_0x2275c2){utils['error'](util[_0xcfeb('0x3')](_0xcfeb('0x29'),_0x118d31[_0xcfeb('0x5')]),_0x2275c2);}};
\ No newline at end of file
index d594a13..2d82909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc45b=['[%s][index][devicestatechange]','format','agentcalled','uniqueid','[%s][index][agentcalled]','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentconnect','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','[%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','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','./utils','xdr','env','production','local','asterisk','port','username','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug'];(function(_0x120ec9,_0x484f0a){var _0x4e07f4=function(_0x549d1e){while(--_0x549d1e){_0x120ec9['push'](_0x120ec9['shift']());}};_0x4e07f4(++_0x484f0a);}(_0xc45b,0xa6));var _0xbc45=function(_0x3e17e6,_0x3c29d0){_0x3e17e6=_0x3e17e6-0x0;var _0x3d41a6=_0xc45b[_0x3e17e6];return _0x3d41a6;};var AsteriskManager=require(_0xbc45('0x0'));var config=require('../../config/environment');var utils=require(_0xbc45('0x1'));var util=require('util');var isXDREnabled=config[_0xbc45('0x2')]&&config[_0xbc45('0x2')]['disabled']?!config['xdr']['disabled']:!![];var isProduction=config[_0xbc45('0x3')]===_0xbc45('0x4')||![];var isLocalAsterisk=config[_0xbc45('0x2')]&&config[_0xbc45('0x2')][_0xbc45('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0xbc45('0x6')][_0xbc45('0x7')],config[_0xbc45('0x6')]['ip'],config[_0xbc45('0x6')][_0xbc45('0x8')],config[_0xbc45('0x6')]['password'],!![]);ami['keepConnected']();if(!isXDREnabled){utils['info'](_0xbc45('0x9'));}else if(!isProduction&&!isLocalAsterisk){utils['info'](_0xbc45('0xa'));}else{var agents=require(_0xbc45('0xb'));var calls=require(_0xbc45('0xc'));var queues=require('./queues.controller');var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require(_0xbc45('0xd'));var transfers=require(_0xbc45('0xe'));var core=require('./core.controller');ami['on']('connect',core[_0xbc45('0xf')]);ami['on']('shutdown',core[_0xbc45('0x10')]);ami['on'](_0xbc45('0x11'),core[_0xbc45('0x11')]);ami['on'](_0xbc45('0x12'),core['error']);ami['on'](_0xbc45('0x13'),core[_0xbc45('0x13')]);ami['on'](_0xbc45('0x14'),core[_0xbc45('0x14')]);ami['on'](_0xbc45('0x15'),function(_0x410bef){try{utils[_0xbc45('0x16')](util['format'](_0xbc45('0x17'),_0x410bef['device']),_0x410bef);members[_0xbc45('0x15')](_0x410bef);}catch(_0x27143a){utils[_0xbc45('0x12')](util[_0xbc45('0x18')]('[%s][index][devicestatechange]',_0x410bef['device']),_0x27143a);}});ami['on'](_0xbc45('0x19'),function(_0x12c4e9){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')]('[%s][index][agentcalled]',_0x12c4e9[_0xbc45('0x1a')]),_0x12c4e9);agents[_0xbc45('0x19')](_0x12c4e9);}catch(_0x39eb1d){utils[_0xbc45('0x12')](util['format'](_0xbc45('0x1b'),_0x12c4e9[_0xbc45('0x1a')]),_0x39eb1d);}});ami['on']('agentringnoanswer',function(_0x4d994b){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')]('[%s][index][agentringnoanswer]',_0x4d994b[_0xbc45('0x1a')]),_0x4d994b);agents['agentringnoanswer'](_0x4d994b);}catch(_0x2cf426){utils['error'](util['format'](_0xbc45('0x1c'),_0x4d994b[_0xbc45('0x1a')]),_0x2cf426);}});ami['on']('agentconnect',function(_0x42c266){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x1d'),_0x42c266[_0xbc45('0x1a')]),_0x42c266);agents['agentconnect'](_0x42c266);queues[_0xbc45('0x1e')](_0x42c266);}catch(_0x583740){utils[_0xbc45('0x12')](util['format'](_0xbc45('0x1d'),_0x42c266['uniqueid']),_0x583740);}});ami['on'](_0xbc45('0x1f'),function(_0x1dd9bf){try{utils[_0xbc45('0x16')](util['format'](_0xbc45('0x20'),_0x1dd9bf[_0xbc45('0x1a')]),_0x1dd9bf);agents[_0xbc45('0x1f')](_0x1dd9bf);queues[_0xbc45('0x1f')](_0x1dd9bf);members[_0xbc45('0x1f')](_0x1dd9bf);}catch(_0x153717){utils[_0xbc45('0x12')](util[_0xbc45('0x18')]('[%s][index][agentcomplete]',_0x1dd9bf[_0xbc45('0x1a')]),_0x153717);}});ami['on']('queuecallerabandon',function(_0x1ad09c){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x21'),_0x1ad09c[_0xbc45('0x1a')]),_0x1ad09c);agents[_0xbc45('0x22')](_0x1ad09c);queues[_0xbc45('0x22')](_0x1ad09c);}catch(_0x4468a4){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x21'),_0x1ad09c['uniqueid']),_0x4468a4);}});ami['on'](_0xbc45('0x23'),function(_0x16fe39){try{utils['debug'](util[_0xbc45('0x18')](_0xbc45('0x24'),_0x16fe39[_0xbc45('0x1a')]),_0x16fe39);queues[_0xbc45('0x23')](_0x16fe39);recordings[_0xbc45('0x23')](_0x16fe39);}catch(_0x5cfb77){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x24'),_0x16fe39[_0xbc45('0x1a')]),_0x5cfb77);}});ami['on']('queuecallerleave',function(_0x1196de){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')]('[%s][index][queuecallerleave]',_0x1196de[_0xbc45('0x1a')]),_0x1196de);queues['queuecallerleave'](_0x1196de);}catch(_0x1795b5){utils['error'](util['format'](_0xbc45('0x25'),_0x1196de[_0xbc45('0x1a')]),_0x1795b5);}});ami['on'](_0xbc45('0x26'),function(_0x46696d){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x27'),_0x46696d['uniqueid']),_0x46696d);queues[_0xbc45('0x26')](_0x46696d);calls['musiconholdstart'](_0x46696d);}catch(_0x30078f){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x27'),_0x46696d[_0xbc45('0x1a')]),_0x30078f);}});ami['on']('musiconholdstop',function(_0x2b257e){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x28'),_0x2b257e[_0xbc45('0x1a')]),_0x2b257e);queues[_0xbc45('0x29')](_0x2b257e);calls['musiconholdstop'](_0x2b257e);}catch(_0x450be5){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x28'),_0x2b257e[_0xbc45('0x1a')]),_0x450be5);}});ami['on'](_0xbc45('0x2a'),function(_0x22e0d8){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x2b'),_0x22e0d8[_0xbc45('0x1a')]),_0x22e0d8);calls[_0xbc45('0x2a')](_0x22e0d8);recordings[_0xbc45('0x2a')](_0x22e0d8);}catch(_0x49cce){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x2b'),_0x22e0d8[_0xbc45('0x1a')]),_0x49cce);}});ami['on']('hangup',function(_0x2c22d8){try{utils['debug'](util[_0xbc45('0x18')]('[%s][index][hangup]',_0x2c22d8[_0xbc45('0x1a')]),_0x2c22d8);calls[_0xbc45('0x2c')](_0x2c22d8);recordings[_0xbc45('0x2c')](_0x2c22d8);dials[_0xbc45('0x2c')](_0x2c22d8);agents[_0xbc45('0x2c')](_0x2c22d8);queues[_0xbc45('0x2c')](_0x2c22d8);}catch(_0x551f29){utils[_0xbc45('0x12')](util['format'](_0xbc45('0x2d'),_0x2c22d8[_0xbc45('0x1a')]),_0x551f29);}});ami['on']('cdr',function(_0x2eb36d){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x2e'),_0x2eb36d[_0xbc45('0x1a')]),_0x2eb36d);members['cdr'](_0x2eb36d);}catch(_0x1e51bf){utils[_0xbc45('0x12')](util[_0xbc45('0x18')]('[%s][index][cdr]',_0x2eb36d[_0xbc45('0x1a')]),_0x1e51bf);}});ami['on'](_0xbc45('0x2f'),function(_0x1d4763){try{utils['debug'](util[_0xbc45('0x18')]('[%s][index][blindtransfer]',_0x1d4763[_0xbc45('0x1a')]),_0x1d4763);queues[_0xbc45('0x2f')](_0x1d4763);agents[_0xbc45('0x2f')](_0x1d4763);transfers[_0xbc45('0x2f')](_0x1d4763);recordings[_0xbc45('0x2f')](_0x1d4763);}catch(_0x95fb3c){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x30'),_0x1d4763[_0xbc45('0x1a')]),_0x95fb3c);}});ami['on'](_0xbc45('0x31'),function(_0x297202){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x32'),_0x297202[_0xbc45('0x33')]),_0x297202);queues['attendedtransfer'](_0x297202);transfers['attendedtransfer'](_0x297202);agents[_0xbc45('0x31')](_0x297202);calls[_0xbc45('0x31')](_0x297202);}catch(_0x4eaa34){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x32'),_0x297202[_0xbc45('0x33')]),_0x4eaa34);}});ami['on'](_0xbc45('0x34'),function(_0x585abb){try{utils['debug'](util[_0xbc45('0x18')](_0xbc45('0x35'),_0x585abb[_0xbc45('0x1a')]),_0x585abb);queues[_0xbc45('0x34')](_0x585abb);recordings[_0xbc45('0x34')](_0x585abb);calls['varset'](_0x585abb);dials[_0xbc45('0x34')](_0x585abb);}catch(_0x4ef7e5){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x35'),_0x585abb[_0xbc45('0x1a')]),_0x4ef7e5);}});ami['on'](_0xbc45('0x36'),function(_0xabc1ab){try{utils[_0xbc45('0x16')](util['format']('[%s][index][newexten]',_0xabc1ab[_0xbc45('0x1a')]),_0xabc1ab);calls[_0xbc45('0x36')](_0xabc1ab);recordings[_0xbc45('0x36')](_0xabc1ab);dials[_0xbc45('0x36')](_0xabc1ab);}catch(_0x297153){utils['error'](util[_0xbc45('0x18')](_0xbc45('0x37'),_0xabc1ab[_0xbc45('0x1a')]),_0x297153);}});ami['on']('newchannel',function(_0x5db969){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x38'),_0x5db969[_0xbc45('0x1a')]),_0x5db969);calls[_0xbc45('0x39')](_0x5db969);recordings[_0xbc45('0x39')](_0x5db969);}catch(_0x1d336c){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x38'),_0x5db969[_0xbc45('0x1a')]),_0x1d336c);}});ami['on'](_0xbc45('0x3a'),function(_0x1d7f4e){try{utils[_0xbc45('0x16')](util[_0xbc45('0x18')](_0xbc45('0x3b'),_0x1d7f4e[_0xbc45('0x1a')]),_0x1d7f4e);dials['dialbegin'](_0x1d7f4e);}catch(_0x27b7c7){utils[_0xbc45('0x12')](util[_0xbc45('0x18')](_0xbc45('0x3c'),_0x1d7f4e[_0xbc45('0x1a')]),_0x27b7c7);}});ami['on'](_0xbc45('0x3d'),function(_0x2789d8){try{utils[_0xbc45('0x16')](util['format'](_0xbc45('0x3e'),_0x2789d8['uniqueid']),_0x2789d8);dials['dialend'](_0x2789d8);}catch(_0x294f35){utils[_0xbc45('0x12')](util['format'](_0xbc45('0x3e'),_0x2789d8[_0xbc45('0x1a')]),_0x294f35);}});}
\ No newline at end of file
+var _0x23d2=['dialend','[%s][index][dialend]','asterisk-manager','util','xdr','env','production','local','asterisk','username','password','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','format','device','devicestatechange','[%s][index][devicestatechange]','debug','[%s][index][agentcalled]','uniqueid','agentcalled','[%s][index][agentringnoanswer]','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','varset','[%s][index][varset]','[%s][index][newexten]','newexten','[%s][index][newchannel]','newchannel','dialbegin','[%s][index][dialbegin]','[%s]dialbegin'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x23d2,0x1ec));var _0x223d=function(_0x595fa6,_0x3d16c5){_0x595fa6=_0x595fa6-0x0;var _0x27350f=_0x23d2[_0x595fa6];return _0x27350f;};var AsteriskManager=require(_0x223d('0x0'));var config=require('../../config/environment');var utils=require('./utils');var util=require(_0x223d('0x1'));var isXDREnabled=config[_0x223d('0x2')]&&config['xdr']['disabled']?!config[_0x223d('0x2')]['disabled']:!![];var isProduction=config[_0x223d('0x3')]===_0x223d('0x4')||![];var isLocalAsterisk=config[_0x223d('0x2')]&&config[_0x223d('0x2')][_0x223d('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0x223d('0x6')]['port'],config['asterisk']['ip'],config[_0x223d('0x6')][_0x223d('0x7')],config['asterisk'][_0x223d('0x8')],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0x223d('0x9')](_0x223d('0xa'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x223d('0x9')](_0x223d('0xb'));}else{var agents=require(_0x223d('0xc'));var calls=require('./calls.controller');var queues=require('./queues.controller');var recordings=require(_0x223d('0xd'));var members=require(_0x223d('0xe'));var dials=require(_0x223d('0xf'));var transfers=require(_0x223d('0x10'));var core=require(_0x223d('0x11'));ami['on'](_0x223d('0x12'),core[_0x223d('0x12')]);ami['on']('shutdown',core[_0x223d('0x13')]);ami['on']('fullybooted',core[_0x223d('0x14')]);ami['on'](_0x223d('0x15'),core['error']);ami['on'](_0x223d('0x16'),core[_0x223d('0x16')]);ami['on'](_0x223d('0x17'),core['managerevent']);ami['on']('devicestatechange',function(_0x293334){try{utils['debug'](util[_0x223d('0x18')]('[%s][index][devicestatechange]',_0x293334[_0x223d('0x19')]),_0x293334);members[_0x223d('0x1a')](_0x293334);}catch(_0x56cfc1){utils['error'](util['format'](_0x223d('0x1b'),_0x293334['device']),_0x56cfc1);}});ami['on']('agentcalled',function(_0x25fd9f){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x1d'),_0x25fd9f[_0x223d('0x1e')]),_0x25fd9f);agents[_0x223d('0x1f')](_0x25fd9f);}catch(_0x44d53f){utils[_0x223d('0x15')](util[_0x223d('0x18')]('[%s][index][agentcalled]',_0x25fd9f[_0x223d('0x1e')]),_0x44d53f);}});ami['on']('agentringnoanswer',function(_0x218bf9){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x20'),_0x218bf9[_0x223d('0x1e')]),_0x218bf9);agents[_0x223d('0x21')](_0x218bf9);}catch(_0xe094b8){utils['error'](util[_0x223d('0x18')](_0x223d('0x20'),_0x218bf9['uniqueid']),_0xe094b8);}});ami['on'](_0x223d('0x22'),function(_0x53e8a9){try{utils[_0x223d('0x1c')](util['format']('[%s][index][agentconnect]',_0x53e8a9[_0x223d('0x1e')]),_0x53e8a9);agents[_0x223d('0x22')](_0x53e8a9);queues[_0x223d('0x22')](_0x53e8a9);}catch(_0x507379){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x23'),_0x53e8a9[_0x223d('0x1e')]),_0x507379);}});ami['on'](_0x223d('0x24'),function(_0x4a57b8){try{utils[_0x223d('0x1c')](util['format']('[%s][index][agentcomplete]',_0x4a57b8[_0x223d('0x1e')]),_0x4a57b8);agents[_0x223d('0x24')](_0x4a57b8);queues[_0x223d('0x24')](_0x4a57b8);members[_0x223d('0x24')](_0x4a57b8);}catch(_0x36a416){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x25'),_0x4a57b8[_0x223d('0x1e')]),_0x36a416);}});ami['on'](_0x223d('0x26'),function(_0x35fcfb){try{utils[_0x223d('0x1c')](util['format']('[%s][index][queuecallerabandon]',_0x35fcfb[_0x223d('0x1e')]),_0x35fcfb);agents[_0x223d('0x26')](_0x35fcfb);queues[_0x223d('0x26')](_0x35fcfb);}catch(_0x3cc748){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x27'),_0x35fcfb[_0x223d('0x1e')]),_0x3cc748);}});ami['on'](_0x223d('0x28'),function(_0x2feeac){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x29'),_0x2feeac[_0x223d('0x1e')]),_0x2feeac);queues[_0x223d('0x28')](_0x2feeac);recordings['queuecallerjoin'](_0x2feeac);}catch(_0xea620){utils[_0x223d('0x15')](util['format'](_0x223d('0x29'),_0x2feeac['uniqueid']),_0xea620);}});ami['on'](_0x223d('0x2a'),function(_0x4cba41){try{utils['debug'](util[_0x223d('0x18')](_0x223d('0x2b'),_0x4cba41['uniqueid']),_0x4cba41);queues[_0x223d('0x2a')](_0x4cba41);}catch(_0x33b850){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x2b'),_0x4cba41['uniqueid']),_0x33b850);}});ami['on'](_0x223d('0x2c'),function(_0x47fc06){try{utils['debug'](util[_0x223d('0x18')]('[%s][index][musiconholdstart]',_0x47fc06[_0x223d('0x1e')]),_0x47fc06);queues[_0x223d('0x2c')](_0x47fc06);calls['musiconholdstart'](_0x47fc06);}catch(_0x3f6381){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x2d'),_0x47fc06[_0x223d('0x1e')]),_0x3f6381);}});ami['on'](_0x223d('0x2e'),function(_0x3345b1){try{utils['debug'](util[_0x223d('0x18')]('[%s][index][musiconholdstop]',_0x3345b1[_0x223d('0x1e')]),_0x3345b1);queues['musiconholdstop'](_0x3345b1);calls[_0x223d('0x2e')](_0x3345b1);}catch(_0x80fb88){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x2f'),_0x3345b1[_0x223d('0x1e')]),_0x80fb88);}});ami['on'](_0x223d('0x30'),function(_0x521832){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x31'),_0x521832[_0x223d('0x1e')]),_0x521832);calls[_0x223d('0x30')](_0x521832);recordings[_0x223d('0x30')](_0x521832);}catch(_0x4a541f){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x31'),_0x521832[_0x223d('0x1e')]),_0x4a541f);}});ami['on'](_0x223d('0x32'),function(_0x55ffd3){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')]('[%s][index][hangup]',_0x55ffd3[_0x223d('0x1e')]),_0x55ffd3);calls['hangup'](_0x55ffd3);recordings[_0x223d('0x32')](_0x55ffd3);dials[_0x223d('0x32')](_0x55ffd3);agents[_0x223d('0x32')](_0x55ffd3);queues['hangup'](_0x55ffd3);}catch(_0x169719){utils['error'](util['format'](_0x223d('0x33'),_0x55ffd3['uniqueid']),_0x169719);}});ami['on'](_0x223d('0x34'),function(_0x23ce1d){try{utils['debug'](util[_0x223d('0x18')](_0x223d('0x35'),_0x23ce1d['uniqueid']),_0x23ce1d);members[_0x223d('0x34')](_0x23ce1d);}catch(_0x4b99dc){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x35'),_0x23ce1d[_0x223d('0x1e')]),_0x4b99dc);}});ami['on']('blindtransfer',function(_0x37eff7){try{utils[_0x223d('0x1c')](util['format'](_0x223d('0x36'),_0x37eff7[_0x223d('0x1e')]),_0x37eff7);queues['blindtransfer'](_0x37eff7);agents[_0x223d('0x37')](_0x37eff7);transfers['blindtransfer'](_0x37eff7);recordings[_0x223d('0x37')](_0x37eff7);}catch(_0x183950){utils[_0x223d('0x15')](util[_0x223d('0x18')]('[%s][index][blindtransfer]',_0x37eff7['uniqueid']),_0x183950);}});ami['on']('attendedtransfer',function(_0x69828f){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x38'),_0x69828f[_0x223d('0x39')]),_0x69828f);queues[_0x223d('0x3a')](_0x69828f);transfers['attendedtransfer'](_0x69828f);agents[_0x223d('0x3a')](_0x69828f);calls[_0x223d('0x3a')](_0x69828f);}catch(_0x550369){utils['error'](util[_0x223d('0x18')](_0x223d('0x38'),_0x69828f[_0x223d('0x39')]),_0x550369);}});ami['on'](_0x223d('0x3b'),function(_0x3c0d5f){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x3c'),_0x3c0d5f[_0x223d('0x1e')]),_0x3c0d5f);queues[_0x223d('0x3b')](_0x3c0d5f);recordings['varset'](_0x3c0d5f);calls[_0x223d('0x3b')](_0x3c0d5f);dials[_0x223d('0x3b')](_0x3c0d5f);}catch(_0x93aff3){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x3c'),_0x3c0d5f[_0x223d('0x1e')]),_0x93aff3);}});ami['on']('newexten',function(_0x34935a){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x3d'),_0x34935a[_0x223d('0x1e')]),_0x34935a);calls['newexten'](_0x34935a);recordings[_0x223d('0x3e')](_0x34935a);dials['newexten'](_0x34935a);}catch(_0x2340fb){utils[_0x223d('0x15')](util['format'](_0x223d('0x3d'),_0x34935a['uniqueid']),_0x2340fb);}});ami['on']('newchannel',function(_0x48b691){try{utils[_0x223d('0x1c')](util[_0x223d('0x18')](_0x223d('0x3f'),_0x48b691[_0x223d('0x1e')]),_0x48b691);calls[_0x223d('0x40')](_0x48b691);recordings[_0x223d('0x40')](_0x48b691);}catch(_0x3554b0){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x3f'),_0x48b691[_0x223d('0x1e')]),_0x3554b0);}});ami['on'](_0x223d('0x41'),function(_0x3fc6cf){try{utils['debug'](util['format'](_0x223d('0x42'),_0x3fc6cf[_0x223d('0x1e')]),_0x3fc6cf);dials[_0x223d('0x41')](_0x3fc6cf);}catch(_0x9aac9d){utils[_0x223d('0x15')](util[_0x223d('0x18')](_0x223d('0x43'),_0x3fc6cf['uniqueid']),_0x9aac9d);}});ami['on'](_0x223d('0x44'),function(_0x25f5a9){try{utils[_0x223d('0x1c')](util['format'](_0x223d('0x45'),_0x25f5a9[_0x223d('0x1e')]),_0x25f5a9);dials[_0x223d('0x44')](_0x25f5a9);}catch(_0xc50c85){utils[_0x223d('0x15')](util['format']('[%s][index][dialend]',_0x25f5a9[_0x223d('0x1e')]),_0xc50c85);}});}
\ No newline at end of file
index 2a32d78..b3b150f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd433=['Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','type','getUserByInterface','membername','name','internal','request','CreateMemberReport','then','catch','error','[%s][members][writeDB]','some','debug','[%s][members][devicestatechange]','device','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','diffTime','exitAt','enterAt','agentcomplete','[%s][members][agentcomplete]','assign','queue','cdr','split','data1','source','data3','destination','destinationchannel','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','[%s][members][cdr]','lodash','util','Local/_attended@transfer'];(function(_0xdaf736,_0xd8c667){var _0x1090b3=function(_0x2eab2e){while(--_0x2eab2e){_0xdaf736['push'](_0xdaf736['shift']());}};_0x1090b3(++_0xd8c667);}(_0xd433,0x1c8));var _0x3d43=function(_0x11cd14,_0x19ebd4){_0x11cd14=_0x11cd14-0x0;var _0x1bc76c=_0xd433[_0x11cd14];return _0x1bc76c;};'use strict';var _=require(_0x3d43('0x0'));var util=require(_0x3d43('0x1'));var utils=require('./utils');var members={};var exclude=[_0x3d43('0x2'),_0x3d43('0x3')];function writeDB(_0x9c4670){utils[_0x3d43('0x4')](util[_0x3d43('0x5')](_0x3d43('0x6'),_0x9c4670[_0x3d43('0x7')],_0x9c4670[_0x3d43('0x8')],_0x9c4670[_0x3d43('0x9')],_0x9c4670[_0x3d43('0xa')],_0x9c4670['membername'],_0x9c4670[_0x3d43('0xb')]));if(_0x9c4670[_0x3d43('0x8')]){utils[_0x3d43('0xc')](_0x9c4670[_0x3d43('0x8')])['then'](function(_0x16f08d){if(_0x16f08d){_0x9c4670[_0x3d43('0xd')]=_0x16f08d[_0x3d43('0xe')];_0x9c4670[_0x3d43('0xf')]=_0x16f08d[_0x3d43('0xf')];utils[_0x3d43('0x10')](_0x3d43('0x11'),_0x9c4670);}else{utils['getUserByName'](_0x9c4670['interface']['split']('/')[0x1])[_0x3d43('0x12')](function(_0x12fc91){if(_0x12fc91){_0x9c4670[_0x3d43('0xd')]=_0x12fc91['name'];_0x9c4670[_0x3d43('0xf')]=_0x12fc91[_0x3d43('0xf')];utils[_0x3d43('0x10')](_0x3d43('0x11'),_0x9c4670);}});}})[_0x3d43('0x13')](function(_0x24ade1){utils[_0x3d43('0x14')](util[_0x3d43('0x5')](_0x3d43('0x15'),_0x9c4670['uniqueid']),_0x24ade1);});}delete members[_0x9c4670[_0x3d43('0x8')]];}function startsWith(_0x112c27,_0x3c15ab){return _[_0x3d43('0x16')](_0x112c27,function(_0x478ce0){return _['startsWith'](_0x3c15ab,_0x478ce0);});}exports['devicestatechange']=function(_0x429478){try{utils[_0x3d43('0x17')](util[_0x3d43('0x5')](_0x3d43('0x18'),members[_0x429478[_0x3d43('0x19')]]?members[_0x429478['device']][_0x3d43('0x7')]:_0x429478[_0x3d43('0x19')]),_0x429478);utils['info'](util[_0x3d43('0x5')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x429478[_0x3d43('0x19')]]?members[_0x429478['device']]['uniqueid']:_0x429478[_0x3d43('0x19')],_0x429478['state'],_0x429478[_0x3d43('0x19')]));switch(_0x429478[_0x3d43('0x1a')]){case _0x3d43('0x1b'):case _0x3d43('0x1c'):if(!startsWith(exclude,_0x429478[_0x3d43('0x19')])){members[_0x429478[_0x3d43('0x19')]]={'channel':_0x3d43('0x1d'),'interface':_0x429478[_0x3d43('0x19')],'type':_0x3d43('0x1e'),'enterAt':utils[_0x3d43('0x1f')](),'role':_0x3d43('0x20')};}break;case _0x3d43('0x21'):if(!_[_0x3d43('0x22')](members[_0x429478[_0x3d43('0x19')]])){members[_0x429478['device']]['exitAt']=utils['now']();members[_0x429478[_0x3d43('0x19')]]['duration']=utils[_0x3d43('0x23')](members[_0x429478[_0x3d43('0x19')]][_0x3d43('0x24')],members[_0x429478[_0x3d43('0x19')]][_0x3d43('0x25')]);if(members[_0x429478[_0x3d43('0x19')]][_0x3d43('0x7')]){writeDB(members[_0x429478[_0x3d43('0x19')]]);}}break;default:break;}}catch(_0x4616cf){utils['error'](util[_0x3d43('0x5')](_0x3d43('0x18'),members[_0x429478['device']]?members[_0x429478['device']][_0x3d43('0x7')]:_0x429478['device']),_0x4616cf);}};exports[_0x3d43('0x26')]=function(_0x1a5093){try{if(!_['isNil'](members[_0x1a5093['interface']])){utils['debug'](util['format'](_0x3d43('0x27'),_0x1a5093[_0x3d43('0x7')]),_0x1a5093);utils[_0x3d43('0x4')](util['format']('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x1a5093[_0x3d43('0x7')],_0x1a5093['interface'],_0x1a5093['queue']));members[_0x1a5093[_0x3d43('0x8')]]=_[_0x3d43('0x28')](members[_0x1a5093[_0x3d43('0x8')]],{'data4':_0x1a5093[_0x3d43('0x29')],'uniqueid':_0x1a5093[_0x3d43('0x7')]});}}catch(_0x2bcabc){utils['error'](util[_0x3d43('0x5')](_0x3d43('0x27'),_0x1a5093[_0x3d43('0x7')]),_0x2bcabc);}};exports[_0x3d43('0x2a')]=function(_0x30c8a1){try{utils['debug'](util[_0x3d43('0x5')]('[%s][members][cdr]',_0x30c8a1['uniqueid']),_0x30c8a1);if(_0x30c8a1[_0x3d43('0x9')]){var _0x1a7047=_0x30c8a1[_0x3d43('0x9')][_0x3d43('0x2b')]('-')[0x0];if(!_[_0x3d43('0x22')](members[_0x1a7047])){members[_0x1a7047]=_[_0x3d43('0x28')](members[_0x1a7047],{'data1':members[_0x1a7047][_0x3d43('0x2c')]||_0x30c8a1['type'],'data2':members[_0x1a7047][_0x3d43('0xa')]||_0x30c8a1[_0x3d43('0x2d')],'data3':members[_0x1a7047][_0x3d43('0x2e')]||_0x30c8a1[_0x3d43('0x2f')],'uniqueid':members[_0x1a7047][_0x3d43('0x7')]||_0x30c8a1[_0x3d43('0x7')]});utils['info'](util[_0x3d43('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x30c8a1[_0x3d43('0x7')],members[_0x1a7047]['data1'],members[_0x1a7047][_0x3d43('0xa')],members[_0x1a7047][_0x3d43('0x2e')]));if(members[_0x1a7047][_0x3d43('0x24')]){writeDB(members[_0x1a7047]);}}}if(_0x30c8a1[_0x3d43('0x30')]){var _0x4aa6c2=_0x30c8a1[_0x3d43('0x30')]['split']('-')[0x0];if(!_[_0x3d43('0x22')](members[_0x4aa6c2])){members[_0x4aa6c2]=_[_0x3d43('0x28')](members[_0x4aa6c2],{'data1':members[_0x4aa6c2]['data1']||_0x30c8a1[_0x3d43('0xb')],'data2':members[_0x4aa6c2]['data2']||_0x30c8a1[_0x3d43('0x2d')],'data3':members[_0x4aa6c2][_0x3d43('0x2e')]||_0x30c8a1[_0x3d43('0x2f')],'uniqueid':members[_0x4aa6c2][_0x3d43('0x7')]||_0x30c8a1['uniqueid']});utils[_0x3d43('0x4')](util[_0x3d43('0x5')](_0x3d43('0x31'),_0x30c8a1[_0x3d43('0x7')],members[_0x4aa6c2]['data1'],members[_0x4aa6c2][_0x3d43('0xa')],members[_0x4aa6c2][_0x3d43('0x2e')]));if(members[_0x4aa6c2]['exitAt']){writeDB(members[_0x4aa6c2]);}}}}catch(_0x3e14f5){utils[_0x3d43('0x14')](util[_0x3d43('0x5')](_0x3d43('0x32'),_0x30c8a1[_0x3d43('0x7')]),_0x3e14f5);}};
\ No newline at end of file
+var _0x8a62=['[%s][members][cdr]','split','data1','data2','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','util','./utils','Local/_attended@transfer','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','type','getUserByInterface','membername','name','internal','request','CreateMemberReport','then','error','[%s][members][writeDB]','startsWith','devicestatechange','[%s][members][devicestatechange]','device','info','state','INUSE','BUSY','voice','agent','NOT_INUSE','isNil','exitAt','now','duration','diffTime','enterAt','agentcomplete','debug','[%s][members][agentcomplete]','queue','assign'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x8a62,0x98));var _0x28a6=function(_0x2014eb,_0x3a0ce3){_0x2014eb=_0x2014eb-0x0;var _0x3917bd=_0x8a62[_0x2014eb];return _0x3917bd;};'use strict';var _=require('lodash');var util=require(_0x28a6('0x0'));var utils=require(_0x28a6('0x1'));var members={};var exclude=[_0x28a6('0x2'),'Queue:'];function writeDB(_0x360aff){utils['info'](util[_0x28a6('0x3')](_0x28a6('0x4'),_0x360aff[_0x28a6('0x5')],_0x360aff[_0x28a6('0x6')],_0x360aff[_0x28a6('0x7')],_0x360aff['data2'],_0x360aff['membername'],_0x360aff[_0x28a6('0x8')]));if(_0x360aff[_0x28a6('0x6')]){utils[_0x28a6('0x9')](_0x360aff[_0x28a6('0x6')])['then'](function(_0x35244c){if(_0x35244c){_0x360aff[_0x28a6('0xa')]=_0x35244c[_0x28a6('0xb')];_0x360aff[_0x28a6('0xc')]=_0x35244c[_0x28a6('0xc')];utils[_0x28a6('0xd')](_0x28a6('0xe'),_0x360aff);}else{utils['getUserByName'](_0x360aff[_0x28a6('0x6')]['split']('/')[0x1])[_0x28a6('0xf')](function(_0x3754cf){if(_0x3754cf){_0x360aff[_0x28a6('0xa')]=_0x3754cf[_0x28a6('0xb')];_0x360aff[_0x28a6('0xc')]=_0x3754cf[_0x28a6('0xc')];utils[_0x28a6('0xd')]('CreateMemberReport',_0x360aff);}});}})['catch'](function(_0x542b8b){utils[_0x28a6('0x10')](util['format'](_0x28a6('0x11'),_0x360aff['uniqueid']),_0x542b8b);});}delete members[_0x360aff[_0x28a6('0x6')]];}function startsWith(_0x491867,_0x3b6a13){return _['some'](_0x491867,function(_0x40ea30){return _[_0x28a6('0x12')](_0x3b6a13,_0x40ea30);});}exports[_0x28a6('0x13')]=function(_0x2ea307){try{utils['debug'](util['format'](_0x28a6('0x14'),members[_0x2ea307['device']]?members[_0x2ea307[_0x28a6('0x15')]][_0x28a6('0x5')]:_0x2ea307[_0x28a6('0x15')]),_0x2ea307);utils[_0x28a6('0x16')](util[_0x28a6('0x3')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x2ea307[_0x28a6('0x15')]]?members[_0x2ea307[_0x28a6('0x15')]][_0x28a6('0x5')]:_0x2ea307['device'],_0x2ea307[_0x28a6('0x17')],_0x2ea307[_0x28a6('0x15')]));switch(_0x2ea307[_0x28a6('0x17')]){case _0x28a6('0x18'):case _0x28a6('0x19'):if(!startsWith(exclude,_0x2ea307['device'])){members[_0x2ea307[_0x28a6('0x15')]]={'channel':_0x28a6('0x1a'),'interface':_0x2ea307['device'],'type':'TALKING','enterAt':utils['now'](),'role':_0x28a6('0x1b')};}break;case _0x28a6('0x1c'):if(!_[_0x28a6('0x1d')](members[_0x2ea307[_0x28a6('0x15')]])){members[_0x2ea307[_0x28a6('0x15')]][_0x28a6('0x1e')]=utils[_0x28a6('0x1f')]();members[_0x2ea307['device']][_0x28a6('0x20')]=utils[_0x28a6('0x21')](members[_0x2ea307[_0x28a6('0x15')]][_0x28a6('0x1e')],members[_0x2ea307['device']][_0x28a6('0x22')]);if(members[_0x2ea307[_0x28a6('0x15')]][_0x28a6('0x5')]){writeDB(members[_0x2ea307[_0x28a6('0x15')]]);}}break;default:break;}}catch(_0x582f70){utils[_0x28a6('0x10')](util[_0x28a6('0x3')](_0x28a6('0x14'),members[_0x2ea307[_0x28a6('0x15')]]?members[_0x2ea307[_0x28a6('0x15')]][_0x28a6('0x5')]:_0x2ea307[_0x28a6('0x15')]),_0x582f70);}};exports[_0x28a6('0x23')]=function(_0x366d25){try{if(!_[_0x28a6('0x1d')](members[_0x366d25['interface']])){utils[_0x28a6('0x24')](util[_0x28a6('0x3')](_0x28a6('0x25'),_0x366d25[_0x28a6('0x5')]),_0x366d25);utils[_0x28a6('0x16')](util[_0x28a6('0x3')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x366d25[_0x28a6('0x5')],_0x366d25[_0x28a6('0x6')],_0x366d25[_0x28a6('0x26')]));members[_0x366d25[_0x28a6('0x6')]]=_[_0x28a6('0x27')](members[_0x366d25['interface']],{'data4':_0x366d25['queue'],'uniqueid':_0x366d25[_0x28a6('0x5')]});}}catch(_0x56cff3){utils[_0x28a6('0x10')](util['format'](_0x28a6('0x25'),_0x366d25[_0x28a6('0x5')]),_0x56cff3);}};exports['cdr']=function(_0x5c7e5d){try{utils[_0x28a6('0x24')](util[_0x28a6('0x3')](_0x28a6('0x28'),_0x5c7e5d['uniqueid']),_0x5c7e5d);if(_0x5c7e5d[_0x28a6('0x7')]){var _0xb4b6e8=_0x5c7e5d['channel'][_0x28a6('0x29')]('-')[0x0];if(!_['isNil'](members[_0xb4b6e8])){members[_0xb4b6e8]=_[_0x28a6('0x27')](members[_0xb4b6e8],{'data1':members[_0xb4b6e8][_0x28a6('0x2a')]||_0x5c7e5d[_0x28a6('0x8')],'data2':members[_0xb4b6e8][_0x28a6('0x2b')]||_0x5c7e5d[_0x28a6('0x2c')],'data3':members[_0xb4b6e8][_0x28a6('0x2d')]||_0x5c7e5d[_0x28a6('0x2e')],'uniqueid':members[_0xb4b6e8]['uniqueid']||_0x5c7e5d[_0x28a6('0x5')]});utils[_0x28a6('0x16')](util[_0x28a6('0x3')](_0x28a6('0x2f'),_0x5c7e5d[_0x28a6('0x5')],members[_0xb4b6e8]['data1'],members[_0xb4b6e8][_0x28a6('0x2b')],members[_0xb4b6e8]['data3']));if(members[_0xb4b6e8][_0x28a6('0x1e')]){writeDB(members[_0xb4b6e8]);}}}if(_0x5c7e5d['destinationchannel']){var _0x26e40b=_0x5c7e5d['destinationchannel'][_0x28a6('0x29')]('-')[0x0];if(!_[_0x28a6('0x1d')](members[_0x26e40b])){members[_0x26e40b]=_[_0x28a6('0x27')](members[_0x26e40b],{'data1':members[_0x26e40b][_0x28a6('0x2a')]||_0x5c7e5d['type'],'data2':members[_0x26e40b][_0x28a6('0x2b')]||_0x5c7e5d[_0x28a6('0x2c')],'data3':members[_0x26e40b][_0x28a6('0x2d')]||_0x5c7e5d['destination'],'uniqueid':members[_0x26e40b][_0x28a6('0x5')]||_0x5c7e5d[_0x28a6('0x5')]});utils[_0x28a6('0x16')](util[_0x28a6('0x3')](_0x28a6('0x2f'),_0x5c7e5d[_0x28a6('0x5')],members[_0x26e40b][_0x28a6('0x2a')],members[_0x26e40b][_0x28a6('0x2b')],members[_0x26e40b][_0x28a6('0x2d')]));if(members[_0x26e40b][_0x28a6('0x1e')]){writeDB(members[_0x26e40b]);}}}}catch(_0x1cf65c){utils[_0x28a6('0x10')](util[_0x28a6('0x3')](_0x28a6('0x28'),_0x5c7e5d[_0x28a6('0x5')]),_0x1cf65c);}};
\ No newline at end of file
index bba1c8e..0cdee68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a0e=['count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','accountcode','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','transfertype','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][blindtransfer]','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','queuecallerjoinAt','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','calleridnum','getVoiceQueueByName','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','[%s][queues][queuecallerjoin]','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerexitreason','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','[%s][queues][varset]','isNil','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queueposition','queuecallerexitAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','diffTime'];(function(_0x50c2f8,_0x1b95bd){var _0x3fa116=function(_0x4f4d8f){while(--_0x4f4d8f){_0x50c2f8['push'](_0x50c2f8['shift']());}};_0x3fa116(++_0x1b95bd);}(_0x7a0e,0x108));var _0xe7a0=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x7a0e[_0x138adb];return _0x1b27f2;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xe7a0('0x0'));var queues={};function writeDB(_0x542e31){utils[_0xe7a0('0x1')](util['format'](_0xe7a0('0x2'),_0x542e31[_0xe7a0('0x3')],_0x542e31[_0xe7a0('0x4')],_0x542e31[_0xe7a0('0x5')],_0x542e31[_0xe7a0('0x6')],_0x542e31[_0xe7a0('0x7')],_0x542e31['accountcode'],_0x542e31['queuecallerexitreason']));if(_0x542e31['queue']){utils[_0xe7a0('0x8')](_0x542e31['queue'])['then'](function(_0x183175){if(_0x183175){_0x542e31['type']=_0x183175['type'];}utils[_0xe7a0('0x9')](_0xe7a0('0xa'),_0x542e31);});}else{utils[_0xe7a0('0x9')](_0xe7a0('0xa'),_0x542e31);}if(_0x542e31[_0xe7a0('0xb')]){delete queues[_0x542e31['transfereduniqueid']];}else{delete queues[_0x542e31[_0xe7a0('0x3')]];}}exports[_0xe7a0('0xc')]=function(_0x24e717){try{utils[_0xe7a0('0xd')](util[_0xe7a0('0xe')]('[%s][queues][queuecallerjoin]',_0x24e717['uniqueid']),_0x24e717);utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0xf'),_0x24e717[_0xe7a0('0x3')],_0x24e717[_0xe7a0('0x5')],_0x24e717['position']));queues[_0x24e717[_0xe7a0('0x3')]]=_[_0xe7a0('0x10')](_0x24e717,{'originalposition':_0x24e717[_0xe7a0('0x11')],'queuecallerjoinAt':utils[_0xe7a0('0x12')](),'mohtime':0x0});}catch(_0x12befc){utils['error'](util[_0xe7a0('0xe')](_0xe7a0('0x13'),_0x24e717['uniqueid']),_0x12befc);}};exports[_0xe7a0('0x14')]=function(_0x1a8ea7){try{if(!_['isNil'](queues[_0x1a8ea7[_0xe7a0('0x3')]])){utils[_0xe7a0('0xd')](util[_0xe7a0('0xe')](_0xe7a0('0x15'),_0x1a8ea7['uniqueid']),_0x1a8ea7);if(queues[_0x1a8ea7['uniqueid']][_0xe7a0('0x16')]){if(!queues[_0x1a8ea7['uniqueid']][_0xe7a0('0x17')]&&!queues[_0x1a8ea7[_0xe7a0('0x3')]][_0xe7a0('0x18')]){queues[_0x1a8ea7[_0xe7a0('0x3')]][_0xe7a0('0x19')]=!![];queues[_0x1a8ea7[_0xe7a0('0x3')]]['queuecallercompleteAt']=utils[_0xe7a0('0x12')]();queues[_0x1a8ea7[_0xe7a0('0x3')]]['queuecallerexitreason']=_0xe7a0('0x1a');}utils[_0xe7a0('0x1')](util['format'](_0xe7a0('0x1b'),_0x1a8ea7['uniqueid'],queues[_0x1a8ea7[_0xe7a0('0x3')]][_0xe7a0('0x1c')],queues[_0x1a8ea7[_0xe7a0('0x3')]][_0xe7a0('0x1d')]));writeDB(queues[_0x1a8ea7[_0xe7a0('0x3')]]);}else if(queues[_0x1a8ea7[_0xe7a0('0x3')]]['transfereduniqueid']){utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x1e'),_0x1a8ea7[_0xe7a0('0x3')],queues[_0x1a8ea7[_0xe7a0('0x3')]][_0xe7a0('0x1c')],queues[_0x1a8ea7[_0xe7a0('0x3')]]['transfereduniqueid']));queues[queues[_0x1a8ea7['uniqueid']][_0xe7a0('0xb')]]=queues[_0x1a8ea7['uniqueid']];queues[queues[_0x1a8ea7[_0xe7a0('0x3')]][_0xe7a0('0xb')]][_0xe7a0('0x1f')]=0x2;delete queues[_0x1a8ea7[_0xe7a0('0x3')]];}}}catch(_0x5513a0){utils[_0xe7a0('0x20')](util['format'](_0xe7a0('0x15'),_0x1a8ea7[_0xe7a0('0x3')]),_0x5513a0);}};exports['varset']=function(_0x4d3668){try{utils[_0xe7a0('0xd')](util['format'](_0xe7a0('0x21'),_0x4d3668['uniqueid']),_0x4d3668);if(!_[_0xe7a0('0x22')](_0x4d3668['variable'][_0xe7a0('0x23')])&&_0x4d3668[_0xe7a0('0x24')][_0xe7a0('0x25')]()!==_0xe7a0('0x26')){if(!_[_0xe7a0('0x22')](queues[_0x4d3668[_0xe7a0('0x3')]])){queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x17')]=![];queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x27')]=null;queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x18')]=!![];queues[_0x4d3668['uniqueid']]['queuecallerexitAt']=utils[_0xe7a0('0x12')]();queues[_0x4d3668['uniqueid']][_0xe7a0('0x1d')]=_0x4d3668['value'][_0xe7a0('0x25')]();utils['info'](util[_0xe7a0('0xe')](_0xe7a0('0x28'),_0x4d3668[_0xe7a0('0x3')],queues[_0x4d3668['uniqueid']][_0xe7a0('0x1c')],_0x4d3668[_0xe7a0('0x24')],queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x1d')]));writeDB(queues[_0x4d3668[_0xe7a0('0x3')]]);}}else if(!_[_0xe7a0('0x22')](_0x4d3668[_0xe7a0('0x29')][_0xe7a0('0x2a')])){if(!_[_0xe7a0('0x22')](queues[_0x4d3668[_0xe7a0('0x3')]])&&!queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x17')]){queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x17')]=![];queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x27')]=null;queues[_0x4d3668['uniqueid']][_0xe7a0('0x18')]=!![];queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x2b')]=utils[_0xe7a0('0x12')]();queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x1d')]=_0xe7a0('0x2c');utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x2d'),_0x4d3668['uniqueid'],queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x1c')],_0x4d3668[_0xe7a0('0x24')],queues[_0x4d3668[_0xe7a0('0x3')]][_0xe7a0('0x1d')]));}}}catch(_0xd721a5){utils[_0xe7a0('0x20')](util['format']('[%s][queues][varset]',_0x4d3668[_0xe7a0('0x3')]),_0xd721a5);}};exports[_0xe7a0('0x17')]=function(_0x34288e){try{if(!_[_0xe7a0('0x22')](queues[_0x34288e[_0xe7a0('0x3')]])){utils['debug'](util[_0xe7a0('0xe')](_0xe7a0('0x2e'),_0x34288e[_0xe7a0('0x3')]),_0x34288e);queues[_0x34288e[_0xe7a0('0x3')]]['queuecallerexit']=![];queues[_0x34288e[_0xe7a0('0x3')]][_0xe7a0('0x2b')]=null;queues[_0x34288e[_0xe7a0('0x3')]][_0xe7a0('0x17')]=!![];queues[_0x34288e[_0xe7a0('0x3')]][_0xe7a0('0x27')]=utils[_0xe7a0('0x12')]();queues[_0x34288e[_0xe7a0('0x3')]][_0xe7a0('0x1d')]=_0xe7a0('0x2f');utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x30'),_0x34288e[_0xe7a0('0x3')],queues[_0x34288e[_0xe7a0('0x3')]][_0xe7a0('0x1c')],queues[_0x34288e[_0xe7a0('0x3')]][_0xe7a0('0x1d')]));}}catch(_0x2a0341){utils[_0xe7a0('0x20')](util[_0xe7a0('0xe')](_0xe7a0('0x2e'),_0x34288e[_0xe7a0('0x3')]),_0x2a0341);}};exports[_0xe7a0('0x31')]=function(_0x3f2fc5){try{if(!_[_0xe7a0('0x22')](queues[_0x3f2fc5[_0xe7a0('0x3')]])){utils[_0xe7a0('0xd')](util['format']('[%s][queues][queuecallerleave]',_0x3f2fc5['uniqueid']),_0x3f2fc5);utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x32'),_0x3f2fc5[_0xe7a0('0x3')],queues[_0x3f2fc5[_0xe7a0('0x3')]][_0xe7a0('0x1c')],_0x3f2fc5[_0xe7a0('0x33')],_0x3f2fc5[_0xe7a0('0x34')]));queues[_0x3f2fc5[_0xe7a0('0x3')]][_0xe7a0('0x31')]=!![];queues[_0x3f2fc5[_0xe7a0('0x3')]]['queuecallerleaveAt']=utils[_0xe7a0('0x12')]();queues[_0x3f2fc5[_0xe7a0('0x3')]]['holdtime']=utils[_0xe7a0('0x35')](queues[_0x3f2fc5[_0xe7a0('0x3')]]['queuecallerleaveAt'],queues[_0x3f2fc5[_0xe7a0('0x3')]]['queuecallerjoinAt']);queues[_0x3f2fc5[_0xe7a0('0x3')]][_0xe7a0('0x11')]=_0x3f2fc5[_0xe7a0('0x11')];queues[_0x3f2fc5[_0xe7a0('0x3')]][_0xe7a0('0x36')]=_0x3f2fc5[_0xe7a0('0x36')];queues[_0x3f2fc5[_0xe7a0('0x3')]][_0xe7a0('0x33')]=_0x3f2fc5[_0xe7a0('0x33')];queues[_0x3f2fc5['uniqueid']]['connectedlinename']=_0x3f2fc5[_0xe7a0('0x34')];}}catch(_0x321478){utils[_0xe7a0('0x20')](util[_0xe7a0('0xe')]('[%s][queues][queuecallerleave]',_0x3f2fc5[_0xe7a0('0x3')]),_0x321478);}};exports[_0xe7a0('0x37')]=function(_0x45b6d2){try{if(!_[_0xe7a0('0x22')](queues[_0x45b6d2['uniqueid']])){utils[_0xe7a0('0xd')](util[_0xe7a0('0xe')](_0xe7a0('0x38'),_0x45b6d2[_0xe7a0('0x3')]),_0x45b6d2);utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x39'),_0x45b6d2[_0xe7a0('0x3')],queues[_0x45b6d2[_0xe7a0('0x3')]][_0xe7a0('0x1c')],_0x45b6d2[_0xe7a0('0x3a')],_0x45b6d2['destaccountcode']));queues[_0x45b6d2[_0xe7a0('0x3')]][_0xe7a0('0x17')]=![];queues[_0x45b6d2['uniqueid']]['queuecallerabandon']=![];queues[_0x45b6d2[_0xe7a0('0x3')]][_0xe7a0('0x27')]=null;queues[_0x45b6d2['uniqueid']][_0xe7a0('0x18')]=![];queues[_0x45b6d2[_0xe7a0('0x3')]][_0xe7a0('0x1d')]=null;queues[_0x45b6d2[_0xe7a0('0x3')]]['queuecallerexitAt']=null;queues[_0x45b6d2[_0xe7a0('0x3')]][_0xe7a0('0x3b')]=!![];queues[_0x45b6d2['uniqueid']][_0xe7a0('0x3c')]=_0x45b6d2[_0xe7a0('0x3d')];queues[_0x45b6d2[_0xe7a0('0x3')]][_0xe7a0('0x6')]=_0x45b6d2[_0xe7a0('0x3a')];}}catch(_0x1d28c7){utils[_0xe7a0('0x20')](util['format']('[%s][queues][agentconnect]',_0x45b6d2[_0xe7a0('0x3')]),_0x1d28c7);}};exports[_0xe7a0('0x3e')]=function(_0xa5c5a8){try{if(!_[_0xe7a0('0x22')](queues[_0xa5c5a8[_0xe7a0('0x3')]])){if(queues[_0xa5c5a8['uniqueid']][_0xe7a0('0x16')]){utils[_0xe7a0('0xd')](util[_0xe7a0('0xe')](_0xe7a0('0x3f'),_0xa5c5a8[_0xe7a0('0x3')]),_0xa5c5a8);queues[_0xa5c5a8['uniqueid']]['queuecallerabandon']=![];queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x17')]=![];queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x27')]=null;queues[_0xa5c5a8[_0xe7a0('0x3')]]['queuecallerexit']=![];queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x2b')]=null;queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x3b')]=!![];queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x6')]=_0xa5c5a8[_0xe7a0('0x3a')];queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x19')]=!![];queues[_0xa5c5a8['uniqueid']][_0xe7a0('0x40')]=utils[_0xe7a0('0x12')]();if(_0xa5c5a8[_0xe7a0('0x41')]==_0xe7a0('0x42')){if(!queues[_0xa5c5a8['uniqueid']]['transfer']){queues[_0xa5c5a8[_0xe7a0('0x3')]]['queuecallerexitreason']=_0xe7a0('0x43');}}else{queues[_0xa5c5a8[_0xe7a0('0x3')]]['queuecallerexitreason']=_0xe7a0('0x44')+_0xa5c5a8[_0xe7a0('0x41')][_0xe7a0('0x25')]();}utils['info'](util[_0xe7a0('0xe')](_0xe7a0('0x45'),_0xa5c5a8[_0xe7a0('0x3')],queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x1c')],_0xa5c5a8[_0xe7a0('0x3a')],queues[_0xa5c5a8[_0xe7a0('0x3')]][_0xe7a0('0x1d')]));writeDB(queues[_0xa5c5a8[_0xe7a0('0x3')]]);}}}catch(_0x5333ee){utils['error'](util[_0xe7a0('0xe')]('[%s][queues][agentcomplete]',_0xa5c5a8[_0xe7a0('0x3')]),_0x5333ee);}};exports[_0xe7a0('0x46')]=function(_0x35cc0a){try{if(!_[_0xe7a0('0x22')](queues[_0x35cc0a[_0xe7a0('0x47')]])){utils['debug'](util[_0xe7a0('0xe')]('[%s][queues][blindtransfer]',_0x35cc0a['uniqueid']),_0x35cc0a);queues[_0x35cc0a['transfereeuniqueid']]['transfer']=!![];queues[_0x35cc0a[_0xe7a0('0x47')]][_0xe7a0('0x48')]='BLIND';queues[_0x35cc0a[_0xe7a0('0x47')]][_0xe7a0('0x49')]=_0x35cc0a[_0xe7a0('0x4a')];queues[_0x35cc0a[_0xe7a0('0x47')]][_0xe7a0('0x4b')]=_0x35cc0a[_0xe7a0('0x47')];queues[_0x35cc0a['transfereeuniqueid']][_0xe7a0('0x1d')]=_0xe7a0('0x4c');utils[_0xe7a0('0x1')](util['format'](_0xe7a0('0x4d'),_0x35cc0a['uniqueid'],queues[_0x35cc0a['transfereeuniqueid']][_0xe7a0('0x1c')],_0x35cc0a[_0xe7a0('0x47')],_0x35cc0a[_0xe7a0('0x4a')]));}}catch(_0x1f72d0){utils[_0xe7a0('0x20')](util[_0xe7a0('0xe')](_0xe7a0('0x4e'),_0x35cc0a['uniqueid']),_0x1f72d0);}};exports['attendedtransfer']=function(_0x4d1405){try{utils[_0xe7a0('0xd')](util[_0xe7a0('0xe')](_0xe7a0('0x4f'),_0x4d1405[_0xe7a0('0x50')]),_0x4d1405);if(_0x4d1405[_0xe7a0('0x50')]==_0x4d1405[_0xe7a0('0x51')]){if(!_[_0xe7a0('0x22')](queues[_0x4d1405[_0xe7a0('0x52')]])){utils[_0xe7a0('0x1')](util['format'](_0xe7a0('0x53'),_0x4d1405['origtransfereruniqueid'],queues[_0x4d1405[_0xe7a0('0x52')]]['name'],_0x4d1405['origtransfererexten']));queues[_0x4d1405[_0xe7a0('0x52')]][_0xe7a0('0x42')]=!![];queues[_0x4d1405['secondtransfererlinkedid']]['transfertype']=_0xe7a0('0x54');queues[_0x4d1405[_0xe7a0('0x52')]]['transferexten']=_0x4d1405['origtransfererexten'];queues[_0x4d1405[_0xe7a0('0x52')]][_0xe7a0('0x4b')]=_0x4d1405['origtransfereruniqueid'];queues[_0x4d1405['secondtransfererlinkedid']][_0xe7a0('0x1d')]=_0xe7a0('0x55');}if(!_[_0xe7a0('0x22')](queues[_0x4d1405['origtransfererlinkedid']])){if(_0x4d1405[_0xe7a0('0x56')]&&queues[_0x4d1405[_0xe7a0('0x56')]]){queues[_0x4d1405[_0xe7a0('0x56')]][_0xe7a0('0x1f')]=0x1;queues[_0x4d1405[_0xe7a0('0x47')]]=_[_0xe7a0('0x57')](queues[_0x4d1405['transfereelinkedid']]);queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0xb')]=_0x4d1405[_0xe7a0('0x58')];queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x1f')]=0x2;queues[_0x4d1405[_0xe7a0('0x47')]]['calleridnum']=queues[_0x4d1405['secondtransfererlinkedid']]['calleridnum'];queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x59')]=queues[_0x4d1405[_0xe7a0('0x52')]]['calleridname'];queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x5a')]=utils[_0xe7a0('0x12')]();queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x16')]=utils[_0xe7a0('0x12')]();queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x5b')]=0x0;queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x5c')]=0x0;utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x5d'),_0x4d1405['origtransfereruniqueid'],queues[_0x4d1405[_0xe7a0('0x47')]]['name'],queues[_0x4d1405[_0xe7a0('0x47')]]['calleridnum'],queues[_0x4d1405[_0xe7a0('0x47')]][_0xe7a0('0x59')]));}else{utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x5e'),_0x4d1405['origtransfereruniqueid'],queues[_0x4d1405[_0xe7a0('0x51')]][_0xe7a0('0x1c')],_0x4d1405[_0xe7a0('0x52')]));queues[_0x4d1405[_0xe7a0('0x51')]]['transfereduniqueid']=_0x4d1405['secondtransfererlinkedid'];}}}else if(_0x4d1405[_0xe7a0('0x5f')]==_0x4d1405['secondtransfererlinkedid']){if(!_[_0xe7a0('0x22')](queues[_0x4d1405[_0xe7a0('0x51')]])){utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x4d1405[_0xe7a0('0x50')],queues[_0x4d1405[_0xe7a0('0x51')]][_0xe7a0('0x1c')],_0x4d1405[_0xe7a0('0x5f')],_0x4d1405[_0xe7a0('0x60')]));queues[_0x4d1405[_0xe7a0('0x51')]]['transfer']=!![];queues[_0x4d1405['origtransfererlinkedid']][_0xe7a0('0x48')]='ATTENDED';queues[_0x4d1405[_0xe7a0('0x51')]][_0xe7a0('0x49')]=_0x4d1405[_0xe7a0('0x60')];queues[_0x4d1405[_0xe7a0('0x51')]][_0xe7a0('0x4b')]=_0x4d1405['secondtransfereruniqueid'];queues[_0x4d1405['origtransfererlinkedid']][_0xe7a0('0x1d')]=_0xe7a0('0x55');}if(!_[_0xe7a0('0x22')](queues[_0x4d1405[_0xe7a0('0x52')]])){if(_0x4d1405[_0xe7a0('0x61')]&&queues[_0x4d1405[_0xe7a0('0x61')]]){queues[_0x4d1405[_0xe7a0('0x61')]][_0xe7a0('0x1f')]=0x1;queues[_0x4d1405['transfertargetuniqueid']]=_['clone'](queues[_0x4d1405[_0xe7a0('0x61')]]);queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0xb')]=_0x4d1405['transfertargetuniqueid'];queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0x1f')]=0x2;queues[_0x4d1405['transfertargetuniqueid']][_0xe7a0('0x7')]=queues[_0x4d1405[_0xe7a0('0x51')]]['calleridnum'];queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0x59')]=queues[_0x4d1405[_0xe7a0('0x51')]][_0xe7a0('0x59')];queues[_0x4d1405['transfertargetuniqueid']]['queuecallerjoinAt']=utils[_0xe7a0('0x12')]();queues[_0x4d1405['transfertargetuniqueid']][_0xe7a0('0x16')]=utils[_0xe7a0('0x12')]();queues[_0x4d1405['transfertargetuniqueid']]['holdtime']=0x0;queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0x5c')]=0x0;utils[_0xe7a0('0x1')](util['format'](_0xe7a0('0x62'),_0x4d1405[_0xe7a0('0x50')],queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0x1c')],queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0xb')],queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0x7')],queues[_0x4d1405[_0xe7a0('0x58')]][_0xe7a0('0x59')]));}else{utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x4d1405[_0xe7a0('0x50')],queues[_0x4d1405['secondtransfererlinkedid']][_0xe7a0('0x1c')],_0x4d1405[_0xe7a0('0x51')]));queues[_0x4d1405['secondtransfererlinkedid']][_0xe7a0('0xb')]=_0x4d1405[_0xe7a0('0x51')];}}}}catch(_0x25fdb7){utils['error'](util[_0xe7a0('0xe')](_0xe7a0('0x4f'),_0x4d1405[_0xe7a0('0x50')]),_0x25fdb7);}};exports[_0xe7a0('0x63')]=function(_0x5ab0b0){try{if(!_[_0xe7a0('0x22')](queues[_0x5ab0b0[_0xe7a0('0x3')]])){utils['debug'](util[_0xe7a0('0xe')]('[%s][queues][musiconholdstart]',_0x5ab0b0[_0xe7a0('0x3')]),_0x5ab0b0);queues[_0x5ab0b0[_0xe7a0('0x3')]][_0xe7a0('0x64')]=utils[_0xe7a0('0x12')]();utils[_0xe7a0('0x1')](util[_0xe7a0('0xe')](_0xe7a0('0x65'),_0x5ab0b0['uniqueid'],queues[_0x5ab0b0['uniqueid']]['name'],queues[_0x5ab0b0['uniqueid']][_0xe7a0('0x64')]));}}catch(_0x1fc4e6){utils[_0xe7a0('0x20')](util[_0xe7a0('0xe')](_0xe7a0('0x66'),_0x5ab0b0[_0xe7a0('0x3')]),_0x1fc4e6);}};exports[_0xe7a0('0x67')]=function(_0xebca00){try{if(!_[_0xe7a0('0x22')](queues[_0xebca00[_0xe7a0('0x3')]])){if(!_[_0xe7a0('0x22')](queues[_0xebca00['uniqueid']][_0xe7a0('0x64')])){utils[_0xe7a0('0xd')](util[_0xe7a0('0xe')]('[%s][queues][musiconholdstop]',_0xebca00['uniqueid']),_0xebca00);queues[_0xebca00[_0xe7a0('0x3')]][_0xe7a0('0x5c')]+=utils['diffTime'](utils[_0xe7a0('0x12')](),queues[_0xebca00[_0xe7a0('0x3')]][_0xe7a0('0x64')]);utils['info'](util[_0xe7a0('0xe')](_0xe7a0('0x68'),_0xebca00[_0xe7a0('0x3')],queues[_0xebca00[_0xe7a0('0x3')]][_0xe7a0('0x1c')],queues[_0xebca00[_0xe7a0('0x3')]]['mohtime']));delete queues[_0xebca00['uniqueid']][_0xe7a0('0x64')];}}}catch(_0x2686ae){utils['error'](util[_0xe7a0('0xe')](_0xe7a0('0x69'),_0xebca00[_0xe7a0('0x3')]),_0x2686ae);}};
\ No newline at end of file
+var _0xc807=['destaccountcode','assigned','agentcomplete','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','transfereeuniqueid','[%s][queues][blindtransfer]','BLIND','extension','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','transfertype','transferexten','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','queuecallerenterreason','calleridname','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDED','transfertargetlinkedid','transfertargetuniqueid','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','calleridnum','accountcode','getVoiceQueueByName','type','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','info','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','now','[%s][queues][queuecallerjoin]','hangup','isNil','debug','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','error','[%s][queues][hangup]','variable','value','toUpperCase','CONTINUE','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerabandonAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','diffTime','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername'];(function(_0x3fa7c1,_0x3aaa7e){var _0x5c1dcb=function(_0x24f8c6){while(--_0x24f8c6){_0x3fa7c1['push'](_0x3fa7c1['shift']());}};_0x5c1dcb(++_0x3aaa7e);}(_0xc807,0xf3));var _0x7c80=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xc807[_0x484e36];return _0xafc85d;};'use strict';var _=require('lodash');var util=require(_0x7c80('0x0'));var utils=require('./utils');var queues={};function writeDB(_0x537831){utils['info'](util['format'](_0x7c80('0x1'),_0x537831[_0x7c80('0x2')],_0x537831[_0x7c80('0x3')],_0x537831[_0x7c80('0x4')],_0x537831[_0x7c80('0x5')],_0x537831[_0x7c80('0x6')],_0x537831[_0x7c80('0x7')],_0x537831['queuecallerexitreason']));if(_0x537831['queue']){utils[_0x7c80('0x8')](_0x537831[_0x7c80('0x4')])['then'](function(_0x107347){if(_0x107347){_0x537831['type']=_0x107347[_0x7c80('0x9')];}utils['request'](_0x7c80('0xa'),_0x537831);});}else{utils['request'](_0x7c80('0xa'),_0x537831);}if(_0x537831[_0x7c80('0xb')]){delete queues[_0x537831[_0x7c80('0xb')]];}else{delete queues[_0x537831[_0x7c80('0x2')]];}}exports[_0x7c80('0xc')]=function(_0x198568){try{utils['debug'](util['format']('[%s][queues][queuecallerjoin]',_0x198568[_0x7c80('0x2')]),_0x198568);utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0xf'),_0x198568[_0x7c80('0x2')],_0x198568[_0x7c80('0x4')],_0x198568['position']));queues[_0x198568[_0x7c80('0x2')]]=_['assign'](_0x198568,{'originalposition':_0x198568[_0x7c80('0x10')],'queuecallerjoinAt':utils[_0x7c80('0x11')](),'mohtime':0x0});}catch(_0x18f129){utils['error'](util[_0x7c80('0xe')](_0x7c80('0x12'),_0x198568[_0x7c80('0x2')]),_0x18f129);}};exports[_0x7c80('0x13')]=function(_0x136df9){try{if(!_[_0x7c80('0x14')](queues[_0x136df9[_0x7c80('0x2')]])){utils[_0x7c80('0x15')](util['format']('[%s][queues][hangup]',_0x136df9[_0x7c80('0x2')]),_0x136df9);if(queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0x16')]){if(!queues[_0x136df9['uniqueid']][_0x7c80('0x17')]&&!queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0x18')]){queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0x19')]=!![];queues[_0x136df9[_0x7c80('0x2')]]['queuecallercompleteAt']=utils['now']();queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0x1a')]=_0x7c80('0x1b');}utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x1c'),_0x136df9[_0x7c80('0x2')],queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0x1d')],queues[_0x136df9['uniqueid']][_0x7c80('0x1a')]));writeDB(queues[_0x136df9[_0x7c80('0x2')]]);}else if(queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0xb')]){utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x1e'),_0x136df9[_0x7c80('0x2')],queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0x1d')],queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0xb')]));queues[queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0xb')]]=queues[_0x136df9[_0x7c80('0x2')]];queues[queues[_0x136df9[_0x7c80('0x2')]][_0x7c80('0xb')]]['queuecallerenterreason']=0x2;delete queues[_0x136df9[_0x7c80('0x2')]];}}}catch(_0x3d3e4c){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x20'),_0x136df9[_0x7c80('0x2')]),_0x3d3e4c);}};exports['varset']=function(_0x31b010){try{utils[_0x7c80('0x15')](util[_0x7c80('0xe')]('[%s][queues][varset]',_0x31b010['uniqueid']),_0x31b010);if(!_[_0x7c80('0x14')](_0x31b010[_0x7c80('0x21')]['queuestatus'])&&_0x31b010[_0x7c80('0x22')][_0x7c80('0x23')]()!==_0x7c80('0x24')){if(!_[_0x7c80('0x14')](queues[_0x31b010[_0x7c80('0x2')]])){queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x17')]=![];queues[_0x31b010[_0x7c80('0x2')]]['queuecallerabandonAt']=null;queues[_0x31b010[_0x7c80('0x2')]]['queuecallerexit']=!![];queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x25')]=utils[_0x7c80('0x11')]();queues[_0x31b010['uniqueid']][_0x7c80('0x1a')]=_0x31b010[_0x7c80('0x22')][_0x7c80('0x23')]();utils['info'](util['format'](_0x7c80('0x26'),_0x31b010[_0x7c80('0x2')],queues[_0x31b010['uniqueid']][_0x7c80('0x1d')],_0x31b010[_0x7c80('0x22')],queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x1a')]));writeDB(queues[_0x31b010[_0x7c80('0x2')]]);}}else if(!_[_0x7c80('0x14')](_0x31b010[_0x7c80('0x21')][_0x7c80('0x27')])){if(!_[_0x7c80('0x14')](queues[_0x31b010[_0x7c80('0x2')]])&&!queues[_0x31b010['uniqueid']]['queuecallerabandon']){queues[_0x31b010['uniqueid']][_0x7c80('0x17')]=![];queues[_0x31b010['uniqueid']][_0x7c80('0x28')]=null;queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x18')]=!![];queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x25')]=utils[_0x7c80('0x11')]();queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x1a')]=_0x7c80('0x29');utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x2a'),_0x31b010[_0x7c80('0x2')],queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x1d')],_0x31b010['value'],queues[_0x31b010[_0x7c80('0x2')]][_0x7c80('0x1a')]));}}}catch(_0x440c03){utils[_0x7c80('0x1f')](util['format'](_0x7c80('0x2b'),_0x31b010[_0x7c80('0x2')]),_0x440c03);}};exports['queuecallerabandon']=function(_0x5e7fac){try{if(!_['isNil'](queues[_0x5e7fac[_0x7c80('0x2')]])){utils[_0x7c80('0x15')](util[_0x7c80('0xe')](_0x7c80('0x2c'),_0x5e7fac[_0x7c80('0x2')]),_0x5e7fac);queues[_0x5e7fac[_0x7c80('0x2')]][_0x7c80('0x18')]=![];queues[_0x5e7fac[_0x7c80('0x2')]][_0x7c80('0x25')]=null;queues[_0x5e7fac[_0x7c80('0x2')]][_0x7c80('0x17')]=!![];queues[_0x5e7fac[_0x7c80('0x2')]][_0x7c80('0x28')]=utils[_0x7c80('0x11')]();queues[_0x5e7fac[_0x7c80('0x2')]]['queuecallerexitreason']='ABANDONED';utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x2d'),_0x5e7fac[_0x7c80('0x2')],queues[_0x5e7fac[_0x7c80('0x2')]]['name'],queues[_0x5e7fac[_0x7c80('0x2')]][_0x7c80('0x1a')]));}}catch(_0x3db7e2){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x2c'),_0x5e7fac[_0x7c80('0x2')]),_0x3db7e2);}};exports[_0x7c80('0x2e')]=function(_0x4e335e){try{if(!_[_0x7c80('0x14')](queues[_0x4e335e[_0x7c80('0x2')]])){utils[_0x7c80('0x15')](util[_0x7c80('0xe')](_0x7c80('0x2f'),_0x4e335e[_0x7c80('0x2')]),_0x4e335e);utils['info'](util[_0x7c80('0xe')](_0x7c80('0x30'),_0x4e335e[_0x7c80('0x2')],queues[_0x4e335e['uniqueid']]['name'],_0x4e335e[_0x7c80('0x31')],_0x4e335e['connectedlinename']));queues[_0x4e335e[_0x7c80('0x2')]]['queuecallerleave']=!![];queues[_0x4e335e['uniqueid']][_0x7c80('0x16')]=utils[_0x7c80('0x11')]();queues[_0x4e335e['uniqueid']]['holdtime']=utils[_0x7c80('0x32')](queues[_0x4e335e[_0x7c80('0x2')]][_0x7c80('0x16')],queues[_0x4e335e['uniqueid']][_0x7c80('0x33')]);queues[_0x4e335e['uniqueid']][_0x7c80('0x10')]=_0x4e335e[_0x7c80('0x10')];queues[_0x4e335e[_0x7c80('0x2')]]['count']=_0x4e335e[_0x7c80('0x34')];queues[_0x4e335e['uniqueid']][_0x7c80('0x31')]=_0x4e335e['connectedlinenum'];queues[_0x4e335e[_0x7c80('0x2')]]['connectedlinename']=_0x4e335e['connectedlinename'];}}catch(_0xc3ba2b){utils['error'](util[_0x7c80('0xe')](_0x7c80('0x2f'),_0x4e335e[_0x7c80('0x2')]),_0xc3ba2b);}};exports[_0x7c80('0x35')]=function(_0x4a2218){try{if(!_['isNil'](queues[_0x4a2218[_0x7c80('0x2')]])){utils['debug'](util['format'](_0x7c80('0x36'),_0x4a2218['uniqueid']),_0x4a2218);utils[_0x7c80('0xd')](util['format'](_0x7c80('0x37'),_0x4a2218[_0x7c80('0x2')],queues[_0x4a2218[_0x7c80('0x2')]][_0x7c80('0x1d')],_0x4a2218[_0x7c80('0x38')],_0x4a2218[_0x7c80('0x39')]));queues[_0x4a2218[_0x7c80('0x2')]]['queuecallerabandon']=![];queues[_0x4a2218[_0x7c80('0x2')]][_0x7c80('0x17')]=![];queues[_0x4a2218[_0x7c80('0x2')]][_0x7c80('0x28')]=null;queues[_0x4a2218[_0x7c80('0x2')]]['queuecallerexit']=![];queues[_0x4a2218['uniqueid']][_0x7c80('0x1a')]=null;queues[_0x4a2218[_0x7c80('0x2')]]['queuecallerexitAt']=null;queues[_0x4a2218[_0x7c80('0x2')]][_0x7c80('0x3a')]=!![];queues[_0x4a2218['uniqueid']][_0x7c80('0x7')]=_0x4a2218[_0x7c80('0x39')];queues[_0x4a2218[_0x7c80('0x2')]][_0x7c80('0x5')]=_0x4a2218[_0x7c80('0x38')];}}catch(_0x190b6b){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x36'),_0x4a2218[_0x7c80('0x2')]),_0x190b6b);}};exports[_0x7c80('0x3b')]=function(_0x4d342e){try{if(!_[_0x7c80('0x14')](queues[_0x4d342e[_0x7c80('0x2')]])){if(queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x16')]){utils[_0x7c80('0x15')](util[_0x7c80('0xe')]('[%s][queues][agentcomplete]',_0x4d342e[_0x7c80('0x2')]),_0x4d342e);queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x17')]=![];queues[_0x4d342e['uniqueid']]['queuecallerabandon']=![];queues[_0x4d342e[_0x7c80('0x2')]]['queuecallerabandonAt']=null;queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x18')]=![];queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x25')]=null;queues[_0x4d342e['uniqueid']][_0x7c80('0x3a')]=!![];queues[_0x4d342e['uniqueid']][_0x7c80('0x5')]=_0x4d342e[_0x7c80('0x38')];queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x19')]=!![];queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x3c')]=utils[_0x7c80('0x11')]();if(_0x4d342e[_0x7c80('0x3d')]==_0x7c80('0x3e')){if(!queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x3e')]){queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x1a')]=_0x7c80('0x3f');}}else{queues[_0x4d342e[_0x7c80('0x2')]]['queuecallerexitreason']=_0x7c80('0x40')+_0x4d342e[_0x7c80('0x3d')]['toUpperCase']();}utils[_0x7c80('0xd')](util['format'](_0x7c80('0x41'),_0x4d342e[_0x7c80('0x2')],queues[_0x4d342e['uniqueid']][_0x7c80('0x1d')],_0x4d342e[_0x7c80('0x38')],queues[_0x4d342e[_0x7c80('0x2')]][_0x7c80('0x1a')]));writeDB(queues[_0x4d342e['uniqueid']]);}}}catch(_0xdb077f){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x42'),_0x4d342e[_0x7c80('0x2')]),_0xdb077f);}};exports['blindtransfer']=function(_0x12f6cc){try{if(!_[_0x7c80('0x14')](queues[_0x12f6cc[_0x7c80('0x43')]])){utils[_0x7c80('0x15')](util[_0x7c80('0xe')](_0x7c80('0x44'),_0x12f6cc[_0x7c80('0x2')]),_0x12f6cc);queues[_0x12f6cc[_0x7c80('0x43')]]['transfer']=!![];queues[_0x12f6cc[_0x7c80('0x43')]]['transfertype']=_0x7c80('0x45');queues[_0x12f6cc['transfereeuniqueid']]['transferexten']=_0x12f6cc[_0x7c80('0x46')];queues[_0x12f6cc['transfereeuniqueid']]['transferuniqueid']=_0x12f6cc[_0x7c80('0x43')];queues[_0x12f6cc['transfereeuniqueid']][_0x7c80('0x1a')]='BLINDTRANSFER';utils['info'](util[_0x7c80('0xe')](_0x7c80('0x47'),_0x12f6cc[_0x7c80('0x2')],queues[_0x12f6cc[_0x7c80('0x43')]][_0x7c80('0x1d')],_0x12f6cc['transfereeuniqueid'],_0x12f6cc[_0x7c80('0x46')]));}}catch(_0x5999b1){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x44'),_0x12f6cc[_0x7c80('0x2')]),_0x5999b1);}};exports[_0x7c80('0x48')]=function(_0x12272b){try{utils[_0x7c80('0x15')](util[_0x7c80('0xe')](_0x7c80('0x49'),_0x12272b[_0x7c80('0x4a')]),_0x12272b);if(_0x12272b[_0x7c80('0x4a')]==_0x12272b[_0x7c80('0x4b')]){if(!_[_0x7c80('0x14')](queues[_0x12272b[_0x7c80('0x4c')]])){utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x12272b['origtransfereruniqueid'],queues[_0x12272b[_0x7c80('0x4c')]][_0x7c80('0x1d')],_0x12272b[_0x7c80('0x4d')]));queues[_0x12272b[_0x7c80('0x4c')]]['transfer']=!![];queues[_0x12272b['secondtransfererlinkedid']][_0x7c80('0x4e')]='ATTENDED';queues[_0x12272b[_0x7c80('0x4c')]][_0x7c80('0x4f')]=_0x12272b[_0x7c80('0x4d')];queues[_0x12272b[_0x7c80('0x4c')]][_0x7c80('0x50')]=_0x12272b['origtransfereruniqueid'];queues[_0x12272b['secondtransfererlinkedid']][_0x7c80('0x1a')]=_0x7c80('0x51');}if(!_[_0x7c80('0x14')](queues[_0x12272b['origtransfererlinkedid']])){if(_0x12272b[_0x7c80('0x52')]&&queues[_0x12272b['transfereelinkedid']]){queues[_0x12272b[_0x7c80('0x52')]]['queuecallerenterreason']=0x1;queues[_0x12272b[_0x7c80('0x43')]]=_[_0x7c80('0x53')](queues[_0x12272b[_0x7c80('0x52')]]);queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0xb')]=_0x12272b['transfertargetuniqueid'];queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0x54')]=0x2;queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0x6')]=queues[_0x12272b['secondtransfererlinkedid']][_0x7c80('0x6')];queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0x55')]=queues[_0x12272b[_0x7c80('0x4c')]][_0x7c80('0x55')];queues[_0x12272b['transfereeuniqueid']][_0x7c80('0x33')]=utils[_0x7c80('0x11')]();queues[_0x12272b['transfereeuniqueid']][_0x7c80('0x16')]=utils[_0x7c80('0x11')]();queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0x56')]=0x0;queues[_0x12272b['transfereeuniqueid']][_0x7c80('0x57')]=0x0;utils[_0x7c80('0xd')](util[_0x7c80('0xe')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x12272b[_0x7c80('0x4a')],queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0x1d')],queues[_0x12272b[_0x7c80('0x43')]]['calleridnum'],queues[_0x12272b[_0x7c80('0x43')]][_0x7c80('0x55')]));}else{utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x58'),_0x12272b[_0x7c80('0x4a')],queues[_0x12272b[_0x7c80('0x4b')]][_0x7c80('0x1d')],_0x12272b[_0x7c80('0x4c')]));queues[_0x12272b['origtransfererlinkedid']]['transfereduniqueid']=_0x12272b['secondtransfererlinkedid'];}}}else if(_0x12272b[_0x7c80('0x59')]==_0x12272b[_0x7c80('0x4c')]){if(!_[_0x7c80('0x14')](queues[_0x12272b['origtransfererlinkedid']])){utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x5a'),_0x12272b[_0x7c80('0x4a')],queues[_0x12272b[_0x7c80('0x4b')]][_0x7c80('0x1d')],_0x12272b['secondtransfereruniqueid'],_0x12272b[_0x7c80('0x5b')]));queues[_0x12272b[_0x7c80('0x4b')]][_0x7c80('0x3e')]=!![];queues[_0x12272b[_0x7c80('0x4b')]][_0x7c80('0x4e')]=_0x7c80('0x5c');queues[_0x12272b[_0x7c80('0x4b')]]['transferexten']=_0x12272b[_0x7c80('0x5b')];queues[_0x12272b['origtransfererlinkedid']]['transferuniqueid']=_0x12272b[_0x7c80('0x59')];queues[_0x12272b[_0x7c80('0x4b')]]['queuecallerexitreason']='ATTENDEDTRANSFER';}if(!_[_0x7c80('0x14')](queues[_0x12272b[_0x7c80('0x4c')]])){if(_0x12272b[_0x7c80('0x5d')]&&queues[_0x12272b[_0x7c80('0x5d')]]){queues[_0x12272b[_0x7c80('0x5d')]]['queuecallerenterreason']=0x1;queues[_0x12272b['transfertargetuniqueid']]=_[_0x7c80('0x53')](queues[_0x12272b['transfertargetlinkedid']]);queues[_0x12272b[_0x7c80('0x5e')]][_0x7c80('0xb')]=_0x12272b[_0x7c80('0x5e')];queues[_0x12272b[_0x7c80('0x5e')]][_0x7c80('0x54')]=0x2;queues[_0x12272b[_0x7c80('0x5e')]][_0x7c80('0x6')]=queues[_0x12272b[_0x7c80('0x4b')]][_0x7c80('0x6')];queues[_0x12272b[_0x7c80('0x5e')]]['calleridname']=queues[_0x12272b[_0x7c80('0x4b')]]['calleridname'];queues[_0x12272b[_0x7c80('0x5e')]][_0x7c80('0x33')]=utils[_0x7c80('0x11')]();queues[_0x12272b[_0x7c80('0x5e')]][_0x7c80('0x16')]=utils[_0x7c80('0x11')]();queues[_0x12272b[_0x7c80('0x5e')]]['holdtime']=0x0;queues[_0x12272b['transfertargetuniqueid']][_0x7c80('0x57')]=0x0;utils[_0x7c80('0xd')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x12272b[_0x7c80('0x4a')],queues[_0x12272b[_0x7c80('0x5e')]][_0x7c80('0x1d')],queues[_0x12272b['transfertargetuniqueid']][_0x7c80('0xb')],queues[_0x12272b['transfertargetuniqueid']][_0x7c80('0x6')],queues[_0x12272b['transfertargetuniqueid']][_0x7c80('0x55')]));}else{utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x58'),_0x12272b[_0x7c80('0x4a')],queues[_0x12272b[_0x7c80('0x4c')]]['name'],_0x12272b[_0x7c80('0x4b')]));queues[_0x12272b[_0x7c80('0x4c')]][_0x7c80('0xb')]=_0x12272b[_0x7c80('0x4b')];}}}}catch(_0x2f6933){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x49'),_0x12272b[_0x7c80('0x4a')]),_0x2f6933);}};exports['musiconholdstart']=function(_0x5d208a){try{if(!_[_0x7c80('0x14')](queues[_0x5d208a[_0x7c80('0x2')]])){utils[_0x7c80('0x15')](util[_0x7c80('0xe')]('[%s][queues][musiconholdstart]',_0x5d208a[_0x7c80('0x2')]),_0x5d208a);queues[_0x5d208a[_0x7c80('0x2')]][_0x7c80('0x5f')]=utils[_0x7c80('0x11')]();utils['info'](util['format'](_0x7c80('0x60'),_0x5d208a[_0x7c80('0x2')],queues[_0x5d208a[_0x7c80('0x2')]][_0x7c80('0x1d')],queues[_0x5d208a['uniqueid']]['musiconholdstartAt']));}}catch(_0x533e35){utils[_0x7c80('0x1f')](util[_0x7c80('0xe')](_0x7c80('0x61'),_0x5d208a['uniqueid']),_0x533e35);}};exports['musiconholdstop']=function(_0x184ed1){try{if(!_[_0x7c80('0x14')](queues[_0x184ed1['uniqueid']])){if(!_['isNil'](queues[_0x184ed1[_0x7c80('0x2')]][_0x7c80('0x5f')])){utils['debug'](util[_0x7c80('0xe')](_0x7c80('0x62'),_0x184ed1[_0x7c80('0x2')]),_0x184ed1);queues[_0x184ed1[_0x7c80('0x2')]]['mohtime']+=utils['diffTime'](utils['now'](),queues[_0x184ed1[_0x7c80('0x2')]][_0x7c80('0x5f')]);utils[_0x7c80('0xd')](util[_0x7c80('0xe')](_0x7c80('0x63'),_0x184ed1['uniqueid'],queues[_0x184ed1[_0x7c80('0x2')]][_0x7c80('0x1d')],queues[_0x184ed1[_0x7c80('0x2')]]['mohtime']));delete queues[_0x184ed1['uniqueid']]['musiconholdstartAt'];}}}catch(_0x561ec4){utils['error'](util[_0x7c80('0xe')]('[%s][queues][musiconholdstop]',_0x184ed1[_0x7c80('0x2')]),_0x561ec4);}};
\ No newline at end of file
index 4b626fa..6012e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a73=['.WAV','find','monitors','hangup','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereruniqueid','recording','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','membername','name','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','debug','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][newstate]','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace'];(function(_0x345278,_0x175379){var _0x40faa3=function(_0x58fc5f){while(--_0x58fc5f){_0x345278['push'](_0x345278['shift']());}};_0x40faa3(++_0x175379);}(_0x0a73,0xb1));var _0x30a7=function(_0x164760,_0x5874b0){_0x164760=_0x164760-0x0;var _0x8b91b2=_0x0a73[_0x164760];return _0x8b91b2;};'use strict';var _=require('lodash');var util=require(_0x30a7('0x0'));var utils=require(_0x30a7('0x1'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x5720e0){var _0x13a50e;utils[_0x30a7('0x2')](util[_0x30a7('0x3')](_0x30a7('0x4'),_0x5720e0[_0x30a7('0x5')]));if(transfers[_0x30a7('0x6')][_0x5720e0[_0x30a7('0x5')]]){_0x13a50e=_0x5720e0['uniqueid'];_0x5720e0['uniqueid']=transfers[_0x30a7('0x6')][_0x5720e0[_0x30a7('0x5')]][_0x30a7('0x7')];}if(_0x5720e0[_0x30a7('0x8')]){utils[_0x30a7('0x9')](_0x5720e0[_0x30a7('0x8')])['then'](function(_0x3d4f29){if(_0x3d4f29){_0x5720e0[_0x30a7('0xa')]=_0x3d4f29[_0x30a7('0xb')];_0x5720e0[_0x30a7('0xc')]=_0x3d4f29['id'];}utils[_0x30a7('0xd')]('CreateVoiceRecording',_0x5720e0);});}else{utils[_0x30a7('0xd')](_0x30a7('0xe'),_0x5720e0);}if(_0x13a50e)delete transfers[_0x30a7('0x6')][_0x13a50e];}exports[_0x30a7('0xf')]=function(_0x114ce6){try{utils['debug'](util[_0x30a7('0x3')](_0x30a7('0x10'),_0x114ce6[_0x30a7('0x5')]),_0x114ce6);if(_0x114ce6[_0x30a7('0x5')]==_0x114ce6[_0x30a7('0x11')]){utils[_0x30a7('0x2')](util[_0x30a7('0x3')](_0x30a7('0x12'),_0x114ce6[_0x30a7('0x5')],_0x114ce6[_0x30a7('0x13')],_0x114ce6[_0x30a7('0x14')]));recordings[_0x114ce6[_0x30a7('0x5')]]={'uniqueid':_0x114ce6[_0x30a7('0x5')],'accountcode':_0x114ce6[_0x30a7('0x8')],'exten':_0x114ce6[_0x30a7('0x14')],'context':_0x114ce6[_0x30a7('0x13')],'channel':_0x114ce6[_0x30a7('0x15')],'monitors':[]};}}catch(_0x5cb3e6){utils[_0x30a7('0x16')](util[_0x30a7('0x3')](_0x30a7('0x10'),_0x114ce6[_0x30a7('0x5')]),_0x5cb3e6);}};exports[_0x30a7('0x17')]=function(_0x3c40be){try{utils[_0x30a7('0x18')](util[_0x30a7('0x3')]('[%s][recordings][newstate]',_0x3c40be[_0x30a7('0x5')]),_0x3c40be);if(!_[_0x30a7('0x19')](recordings[_0x3c40be[_0x30a7('0x5')]])&&_0x3c40be[_0x30a7('0x1a')]==0x6){utils[_0x30a7('0x2')](util[_0x30a7('0x3')](_0x30a7('0x1b'),_0x3c40be['uniqueid'],_0x3c40be[_0x30a7('0x13')],_0x3c40be[_0x30a7('0x15')]));}else if(!_[_0x30a7('0x19')](recordings[_0x3c40be['linkedid']])&&_0x3c40be[_0x30a7('0x1a')]==0x6&&_0x3c40be[_0x30a7('0x13')]!='transfer'){utils[_0x30a7('0x2')](util[_0x30a7('0x3')](_0x30a7('0x1c'),_0x3c40be[_0x30a7('0x5')],_0x3c40be['linkedid'],_0x3c40be[_0x30a7('0x13')],_0x3c40be[_0x30a7('0x15')]));recordings[_0x3c40be['linkedid']][_0x30a7('0x8')]=_0x3c40be[_0x30a7('0x8')];}}catch(_0x519509){utils['error'](util[_0x30a7('0x3')](_0x30a7('0x1d'),_0x3c40be[_0x30a7('0x5')]),_0x519509);}};exports[_0x30a7('0x1e')]=function(_0x448439){try{if(!_[_0x30a7('0x19')](_0x448439[_0x30a7('0x1f')])&&!_[_0x30a7('0x19')](_0x448439['variable'][_0x30a7('0x20')])){utils[_0x30a7('0x18')](util[_0x30a7('0x3')](_0x30a7('0x21'),_0x448439[_0x30a7('0x5')]),_0x448439);utils['info'](util[_0x30a7('0x3')](_0x30a7('0x22'),_0x448439[_0x30a7('0x5')],_0x448439[_0x30a7('0x1f')],_0x448439[_0x30a7('0x23')]));if(_[_0x30a7('0x24')](_0x448439[_0x30a7('0x23')],_0x30a7('0x25'))){_0x448439[_0x30a7('0x23')]=_0x448439[_0x30a7('0x23')][_0x30a7('0x26')](_0x30a7('0x25'),_0x30a7('0x27'));}if(recordings[_0x448439[_0x30a7('0x11')]]){var _0x27c61b=_[_0x30a7('0x28')](recordings[_0x448439[_0x30a7('0x11')]][_0x30a7('0x29')],{'value':_0x448439[_0x30a7('0x23')]});if(_[_0x30a7('0x19')](_0x27c61b)){recordings[_0x448439[_0x30a7('0x11')]][_0x30a7('0x29')]['push']({'value':_0x448439[_0x30a7('0x23')]});}}}}catch(_0x53cf25){utils[_0x30a7('0x16')](util['format'](_0x30a7('0x21'),_0x448439[_0x30a7('0x5')]),_0x53cf25);}};exports[_0x30a7('0x2a')]=function(_0x56e487){try{if(!_[_0x30a7('0x19')](recordings[_0x56e487[_0x30a7('0x5')]])){utils['debug'](util['format']('[%s][recordings][hangup]',_0x56e487[_0x30a7('0x5')]),_0x56e487);utils['info'](util[_0x30a7('0x3')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x56e487[_0x30a7('0x5')],_0x56e487[_0x30a7('0x2b')],_0x56e487[_0x30a7('0x2c')],_0x56e487['cause-txt']));recordings[_0x56e487['uniqueid']][_0x30a7('0x2b')]=_0x56e487['calleridnum'];recordings[_0x56e487[_0x30a7('0x5')]][_0x30a7('0x2c')]=_0x56e487[_0x30a7('0x2c')];recordings[_0x56e487['uniqueid']]['connectedlinenum']=_0x56e487[_0x30a7('0x2d')];recordings[_0x56e487['uniqueid']]['connectedlinename']=_0x56e487[_0x30a7('0x2e')];if(recordings[_0x56e487[_0x30a7('0x5')]][_0x30a7('0x2f')]==_0x30a7('0x30')&&recordings[_0x56e487[_0x30a7('0x5')]][_0x30a7('0x8')]){recordings[_0x56e487['uniqueid']][_0x30a7('0x2d')]=recordings[_0x56e487[_0x30a7('0x5')]][_0x30a7('0x8')];recordings[_0x56e487['uniqueid']][_0x30a7('0x2e')]='';}recordings[_0x56e487['uniqueid']][_0x30a7('0x29')]['forEach'](function(_0x5ee952){var _0x556c26=_[_0x30a7('0x31')](recordings[_0x56e487['uniqueid']]);_0x556c26[_0x30a7('0x23')]=_0x5ee952[_0x30a7('0x23')];writeDB(_0x556c26);});delete recordings[_0x56e487[_0x30a7('0x5')]];}}catch(_0x45e9ea){utils[_0x30a7('0x16')](util[_0x30a7('0x3')]('[%s][recordings][hangup]',_0x56e487['uniqueid']),_0x45e9ea);}};exports[_0x30a7('0x32')]=function(_0x1894f0){try{if(!_['isNil'](recordings[_0x1894f0['uniqueid']])){utils[_0x30a7('0x18')](util[_0x30a7('0x3')](_0x30a7('0x33'),_0x1894f0[_0x30a7('0x5')]),_0x1894f0);utils[_0x30a7('0x2')](util['format'](_0x30a7('0x34'),_0x1894f0[_0x30a7('0x5')],_0x1894f0[_0x30a7('0x35')],_0x1894f0[_0x30a7('0x36')]));if(_0x1894f0[_0x30a7('0x35')][_0x30a7('0x37')]()==_0x30a7('0x38')&&_['startsWith'](_0x1894f0[_0x30a7('0x36')]['toLowerCase'](),_0x30a7('0x39'))){var _0x96fd85=_0x1894f0[_0x30a7('0x36')][_0x30a7('0x3a')]('=');var _0x16e4ce=_0x96fd85[0x0][_0x30a7('0x3b')](_0x96fd85[0x0][_0x30a7('0x3c')]('(')+0x1,_0x96fd85[0x0]['lastIndexOf'](')'));var _0x3e11ce=_0x96fd85[0x1];recordings[_0x1894f0[_0x30a7('0x5')]][_0x16e4ce]=_0x3e11ce;}}}catch(_0x2e1ebb){utils[_0x30a7('0x16')](util[_0x30a7('0x3')](_0x30a7('0x33'),_0x1894f0[_0x30a7('0x5')]),_0x2e1ebb);}};exports[_0x30a7('0x3d')]=function(_0x553103){try{if(!_[_0x30a7('0x19')](recordings[_0x553103['uniqueid']])){utils['debug'](util[_0x30a7('0x3')](_0x30a7('0x3e'),_0x553103[_0x30a7('0x5')]),_0x553103);utils[_0x30a7('0x2')](util[_0x30a7('0x3')](_0x30a7('0x3f'),_0x553103[_0x30a7('0x5')],_0x553103[_0x30a7('0x40')]));recordings[_0x553103[_0x30a7('0x5')]][_0x30a7('0x40')]=_0x553103[_0x30a7('0x40')];}}catch(_0xe355d6){utils[_0x30a7('0x16')](util[_0x30a7('0x3')]('[%s][recordings][queuecallerjoin]',_0x553103[_0x30a7('0x5')]),_0xe355d6);}};exports[_0x30a7('0x41')]=function(_0x10d51b){try{utils[_0x30a7('0x18')](util['format'](_0x30a7('0x42'),_0x10d51b['uniqueid']),_0x10d51b);utils[_0x30a7('0x2')](util[_0x30a7('0x3')](_0x30a7('0x43'),_0x10d51b['uniqueid'],_0x10d51b[_0x30a7('0x44')],_0x10d51b[_0x30a7('0x45')],_0x10d51b['transfereecalleridnum'],_0x10d51b['transfereecalleridname']));if(recordings[_0x10d51b[_0x30a7('0x46')]]&&transfers[_0x30a7('0x6')][_0x10d51b[_0x30a7('0x46')]]){transfers[_0x30a7('0x6')][_0x10d51b[_0x30a7('0x46')]][_0x30a7('0x47')]=!![];}}catch(_0x338fab){utils[_0x30a7('0x16')](util[_0x30a7('0x3')]('[%s][recordings][blindtransfer]',_0x10d51b[_0x30a7('0x5')]),_0x338fab);}};
\ No newline at end of file
+var _0x25dd=['channelstate','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','.wav49','value','replace','.WAV','find','monitors','calleridname','calleridnum','connectedlinenum','connectedlinename','type','outbound','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','application','appdata','set','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','queuecallerjoin','queue','[%s][recordings][queuecallerjoin]','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','lodash','util','./utils','./transfers.controller','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','then','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','format','context','channel','error','newstate','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','linkedid'];(function(_0x4b268a,_0x5683e4){var _0x4ac6b6=function(_0x585f60){while(--_0x585f60){_0x4b268a['push'](_0x4b268a['shift']());}};_0x4ac6b6(++_0x5683e4);}(_0x25dd,0x6f));var _0xd25d=function(_0x2c6f12,_0x2e96df){_0x2c6f12=_0x2c6f12-0x0;var _0x488983=_0x25dd[_0x2c6f12];return _0x488983;};'use strict';var _=require(_0xd25d('0x0'));var util=require(_0xd25d('0x1'));var utils=require(_0xd25d('0x2'));var transfers=require(_0xd25d('0x3'));var recordings={};function writeDB(_0x51a8dc){var _0x5a75de;utils[_0xd25d('0x4')](util['format'](_0xd25d('0x5'),_0x51a8dc[_0xd25d('0x6')]));if(transfers[_0xd25d('0x7')][_0x51a8dc['uniqueid']]){_0x5a75de=_0x51a8dc[_0xd25d('0x6')];_0x51a8dc[_0xd25d('0x6')]=transfers[_0xd25d('0x7')][_0x51a8dc[_0xd25d('0x6')]][_0xd25d('0x8')];}if(_0x51a8dc[_0xd25d('0x9')]){utils[_0xd25d('0xa')](_0x51a8dc[_0xd25d('0x9')])[_0xd25d('0xb')](function(_0x3527b1){if(_0x3527b1){_0x51a8dc['membername']=_0x3527b1['name'];_0x51a8dc[_0xd25d('0xc')]=_0x3527b1['id'];}utils[_0xd25d('0xd')](_0xd25d('0xe'),_0x51a8dc);});}else{utils[_0xd25d('0xd')]('CreateVoiceRecording',_0x51a8dc);}if(_0x5a75de)delete transfers[_0xd25d('0x7')][_0x5a75de];}exports[_0xd25d('0xf')]=function(_0xcbd0b0){try{utils[_0xd25d('0x10')](util['format'](_0xd25d('0x11'),_0xcbd0b0[_0xd25d('0x6')]),_0xcbd0b0);if(_0xcbd0b0[_0xd25d('0x6')]==_0xcbd0b0['linkedid']){utils['info'](util[_0xd25d('0x12')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0xcbd0b0[_0xd25d('0x6')],_0xcbd0b0[_0xd25d('0x13')],_0xcbd0b0['exten']));recordings[_0xcbd0b0[_0xd25d('0x6')]]={'uniqueid':_0xcbd0b0[_0xd25d('0x6')],'accountcode':_0xcbd0b0[_0xd25d('0x9')],'exten':_0xcbd0b0['exten'],'context':_0xcbd0b0[_0xd25d('0x13')],'channel':_0xcbd0b0[_0xd25d('0x14')],'monitors':[]};}}catch(_0x21f3c9){utils[_0xd25d('0x15')](util[_0xd25d('0x12')]('[%s][recordings][newchannel]',_0xcbd0b0[_0xd25d('0x6')]),_0x21f3c9);}};exports[_0xd25d('0x16')]=function(_0x5e0146){try{utils['debug'](util[_0xd25d('0x12')](_0xd25d('0x17'),_0x5e0146['uniqueid']),_0x5e0146);if(!_[_0xd25d('0x18')](recordings[_0x5e0146[_0xd25d('0x6')]])&&_0x5e0146['channelstate']==0x6){utils[_0xd25d('0x4')](util['format'](_0xd25d('0x19'),_0x5e0146[_0xd25d('0x6')],_0x5e0146[_0xd25d('0x13')],_0x5e0146[_0xd25d('0x14')]));}else if(!_[_0xd25d('0x18')](recordings[_0x5e0146[_0xd25d('0x1a')]])&&_0x5e0146[_0xd25d('0x1b')]==0x6&&_0x5e0146[_0xd25d('0x13')]!='transfer'){utils['info'](util[_0xd25d('0x12')](_0xd25d('0x1c'),_0x5e0146['uniqueid'],_0x5e0146[_0xd25d('0x1a')],_0x5e0146[_0xd25d('0x13')],_0x5e0146['channel']));recordings[_0x5e0146[_0xd25d('0x1a')]][_0xd25d('0x9')]=_0x5e0146[_0xd25d('0x9')];}}catch(_0x446dd2){utils['error'](util['format'](_0xd25d('0x17'),_0x5e0146[_0xd25d('0x6')]),_0x446dd2);}};exports[_0xd25d('0x1d')]=function(_0x34dc04){try{if(!_[_0xd25d('0x18')](_0x34dc04[_0xd25d('0x1e')])&&!_['isNil'](_0x34dc04[_0xd25d('0x1e')][_0xd25d('0x1f')])){utils[_0xd25d('0x10')](util[_0xd25d('0x12')](_0xd25d('0x20'),_0x34dc04['uniqueid']),_0x34dc04);utils[_0xd25d('0x4')](util[_0xd25d('0x12')](_0xd25d('0x21'),_0x34dc04[_0xd25d('0x6')],_0x34dc04[_0xd25d('0x1e')],_0x34dc04['value']));if(_[_0xd25d('0x22')](_0x34dc04['value'],_0xd25d('0x23'))){_0x34dc04['value']=_0x34dc04[_0xd25d('0x24')][_0xd25d('0x25')](_0xd25d('0x23'),_0xd25d('0x26'));}if(recordings[_0x34dc04['linkedid']]){var _0x14f905=_[_0xd25d('0x27')](recordings[_0x34dc04[_0xd25d('0x1a')]][_0xd25d('0x28')],{'value':_0x34dc04[_0xd25d('0x24')]});if(_[_0xd25d('0x18')](_0x14f905)){recordings[_0x34dc04['linkedid']]['monitors']['push']({'value':_0x34dc04[_0xd25d('0x24')]});}}}}catch(_0x168141){utils['error'](util[_0xd25d('0x12')](_0xd25d('0x20'),_0x34dc04[_0xd25d('0x6')]),_0x168141);}};exports['hangup']=function(_0xd62c52){try{if(!_[_0xd25d('0x18')](recordings[_0xd62c52[_0xd25d('0x6')]])){utils[_0xd25d('0x10')](util[_0xd25d('0x12')]('[%s][recordings][hangup]',_0xd62c52[_0xd25d('0x6')]),_0xd62c52);utils['info'](util[_0xd25d('0x12')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0xd62c52[_0xd25d('0x6')],_0xd62c52['calleridnum'],_0xd62c52[_0xd25d('0x29')],_0xd62c52['cause-txt']));recordings[_0xd62c52[_0xd25d('0x6')]][_0xd25d('0x2a')]=_0xd62c52[_0xd25d('0x2a')];recordings[_0xd62c52['uniqueid']][_0xd25d('0x29')]=_0xd62c52[_0xd25d('0x29')];recordings[_0xd62c52[_0xd25d('0x6')]]['connectedlinenum']=_0xd62c52[_0xd25d('0x2b')];recordings[_0xd62c52[_0xd25d('0x6')]]['connectedlinename']=_0xd62c52[_0xd25d('0x2c')];if(recordings[_0xd62c52[_0xd25d('0x6')]][_0xd25d('0x2d')]==_0xd25d('0x2e')&&recordings[_0xd62c52[_0xd25d('0x6')]]['accountcode']){recordings[_0xd62c52[_0xd25d('0x6')]][_0xd25d('0x2b')]=recordings[_0xd62c52['uniqueid']][_0xd25d('0x9')];recordings[_0xd62c52[_0xd25d('0x6')]][_0xd25d('0x2c')]='';}recordings[_0xd62c52[_0xd25d('0x6')]][_0xd25d('0x28')]['forEach'](function(_0x5b3b4c){var _0x18df87=_[_0xd25d('0x2f')](recordings[_0xd62c52[_0xd25d('0x6')]]);_0x18df87[_0xd25d('0x24')]=_0x5b3b4c[_0xd25d('0x24')];writeDB(_0x18df87);});delete recordings[_0xd62c52[_0xd25d('0x6')]];}}catch(_0x5b4428){utils['error'](util[_0xd25d('0x12')](_0xd25d('0x30'),_0xd62c52['uniqueid']),_0x5b4428);}};exports[_0xd25d('0x31')]=function(_0x1b77e8){try{if(!_['isNil'](recordings[_0x1b77e8[_0xd25d('0x6')]])){utils[_0xd25d('0x10')](util['format'](_0xd25d('0x32'),_0x1b77e8['uniqueid']),_0x1b77e8);utils[_0xd25d('0x4')](util[_0xd25d('0x12')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x1b77e8[_0xd25d('0x6')],_0x1b77e8[_0xd25d('0x33')],_0x1b77e8[_0xd25d('0x34')]));if(_0x1b77e8[_0xd25d('0x33')]['toLowerCase']()==_0xd25d('0x35')&&_[_0xd25d('0x36')](_0x1b77e8[_0xd25d('0x34')][_0xd25d('0x37')](),_0xd25d('0x38'))){var _0x2ef568=_0x1b77e8[_0xd25d('0x34')][_0xd25d('0x39')]('=');var _0x552a68=_0x2ef568[0x0][_0xd25d('0x3a')](_0x2ef568[0x0]['lastIndexOf']('(')+0x1,_0x2ef568[0x0][_0xd25d('0x3b')](')'));var _0x1b30cd=_0x2ef568[0x1];recordings[_0x1b77e8['uniqueid']][_0x552a68]=_0x1b30cd;}}}catch(_0x1c3464){utils[_0xd25d('0x15')](util[_0xd25d('0x12')](_0xd25d('0x32'),_0x1b77e8[_0xd25d('0x6')]),_0x1c3464);}};exports[_0xd25d('0x3c')]=function(_0x377ba5){try{if(!_[_0xd25d('0x18')](recordings[_0x377ba5[_0xd25d('0x6')]])){utils['debug'](util[_0xd25d('0x12')]('[%s][recordings][queuecallerjoin]',_0x377ba5['uniqueid']),_0x377ba5);utils[_0xd25d('0x4')](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x377ba5['uniqueid'],_0x377ba5[_0xd25d('0x3d')]));recordings[_0x377ba5[_0xd25d('0x6')]][_0xd25d('0x3d')]=_0x377ba5[_0xd25d('0x3d')];}}catch(_0x19ad1c){utils[_0xd25d('0x15')](util[_0xd25d('0x12')](_0xd25d('0x3e'),_0x377ba5[_0xd25d('0x6')]),_0x19ad1c);}};exports[_0xd25d('0x3f')]=function(_0x577615){try{utils['debug'](util[_0xd25d('0x12')]('[%s][recordings][blindtransfer]',_0x577615['uniqueid']),_0x577615);utils[_0xd25d('0x4')](util['format'](_0xd25d('0x40'),_0x577615['uniqueid'],_0x577615['transferercalleridnum'],_0x577615[_0xd25d('0x41')],_0x577615[_0xd25d('0x42')],_0x577615[_0xd25d('0x43')]));if(recordings[_0x577615['transfereruniqueid']]&&transfers[_0xd25d('0x7')][_0x577615[_0xd25d('0x44')]]){transfers[_0xd25d('0x7')][_0x577615[_0xd25d('0x44')]]['recording']=!![];}}catch(_0x127060){utils[_0xd25d('0x15')](util[_0xd25d('0x12')]('[%s][recordings][blindtransfer]',_0x577615[_0xd25d('0x6')]),_0x127060);}};
\ No newline at end of file
index f5dfe0e..962f20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd853=['[%s][transfers][blindtransfer]','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','secondtransfererconnectedlinenum','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','./utils','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport','blinds','blindtransfer','debug'];(function(_0x2b48ac,_0x29442a){var _0x20ab20=function(_0x3c19ee){while(--_0x3c19ee){_0x2b48ac['push'](_0x2b48ac['shift']());}};_0x20ab20(++_0x29442a);}(_0xd853,0x18e));var _0x3d85=function(_0x4297af,_0x2882f5){_0x4297af=_0x4297af-0x0;var _0x10ad5d=_0xd853[_0x4297af];return _0x10ad5d;};'use strict';var _=require(_0x3d85('0x0'));var util=require('util');var utils=require(_0x3d85('0x1'));function writeDB(_0xa3fbfa){utils['info'](util[_0x3d85('0x2')](_0x3d85('0x3'),_0xa3fbfa[_0x3d85('0x4')]===_0x3d85('0x5')?_0xa3fbfa[_0x3d85('0x6')]:_0xa3fbfa[_0x3d85('0x7')],_0xa3fbfa['type']));utils['request'](_0x3d85('0x8'),_0xa3fbfa);}exports[_0x3d85('0x9')]={};exports[_0x3d85('0xa')]=function(_0x55b02f){try{utils[_0x3d85('0xb')](util[_0x3d85('0x2')](_0x3d85('0xc'),_0x55b02f['uniqueid']),_0x55b02f);utils[_0x3d85('0xd')](util[_0x3d85('0x2')](_0x3d85('0xe'),_0x55b02f['uniqueid'],_0x55b02f[_0x3d85('0xf')],_0x55b02f[_0x3d85('0x10')],_0x55b02f[_0x3d85('0x11')],_0x55b02f['transfereecalleridname']));_0x55b02f[_0x3d85('0x4')]=_0x3d85('0x12');exports['blinds'][_0x55b02f['transfereruniqueid']]=_0x55b02f;writeDB(_0x55b02f);}catch(_0xd82382){utils[_0x3d85('0x13')](util[_0x3d85('0x2')](_0x3d85('0xc'),_0x55b02f[_0x3d85('0x7')]),_0xd82382);}};exports[_0x3d85('0x14')]=function(_0x50ba42){try{utils['debug'](util[_0x3d85('0x2')](_0x3d85('0x15'),_0x50ba42['origtransfereruniqueid']),_0x50ba42);utils[_0x3d85('0xd')](util[_0x3d85('0x2')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x50ba42[_0x3d85('0x6')],_0x50ba42[_0x3d85('0x16')],_0x50ba42[_0x3d85('0x17')],_0x50ba42[_0x3d85('0x18')],_0x50ba42['transfertargetcalleridname']));_0x50ba42=_[_0x3d85('0x19')](_0x50ba42,{'transfererchannel':_0x50ba42['origtransfererchannel'],'transferercalleridnum':_0x50ba42[_0x3d85('0x16')],'transferercalleridname':_0x50ba42['origtransferercalleridname'],'transfererconnectedlinenum':_0x50ba42[_0x3d85('0x1a')],'transfererconnectedlinename':_0x50ba42['secondtransfererconnectedlinename'],'transfereraccountcode':_0x50ba42['origtransfereraccountcode'],'transferercontext':_0x50ba42[_0x3d85('0x1b')],'transfererexten':_0x50ba42[_0x3d85('0x1c')],'transfererlinkedid':_0x50ba42[_0x3d85('0x1d')],'context':_0x50ba42[_0x3d85('0x1e')],'extension':_0x50ba42[_0x3d85('0x1f')],'type':_0x3d85('0x5')});if(_[_0x3d85('0x20')](_0x50ba42[_0x3d85('0x21')])){_0x50ba42=_[_0x3d85('0x19')](_0x50ba42,{'transfereechannel':_0x50ba42[_0x3d85('0x22')],'transfereecalleridnum':_0x50ba42['transfertargetcalleridnum'],'transfereecalleridname':_0x50ba42[_0x3d85('0x23')],'transfereeconnectedlinenum':_0x50ba42[_0x3d85('0x24')],'transfereeconnectedlinename':_0x50ba42[_0x3d85('0x25')],'transfereeaccountcode':_0x50ba42['transfertargetaccountcode'],'transfereecontext':_0x50ba42[_0x3d85('0x26')],'transfereeexten':_0x50ba42[_0x3d85('0x27')],'transfereelinkedid':_0x50ba42[_0x3d85('0x28')]});}writeDB(_0x50ba42);}catch(_0x55d0d9){utils[_0x3d85('0x13')](util[_0x3d85('0x2')](_0x3d85('0x15'),_0x50ba42[_0x3d85('0x6')]),_0x55d0d9);}};
\ No newline at end of file
+var _0x8033=['transfertargetexten','transfertargetlinkedid','lodash','./utils','format','attended','origtransfereruniqueid','type','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','info','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransferercontext','origtransfererexten','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinename','transfertargetcontext'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8033,0x1b0));var _0x3803=function(_0x3b928c,_0x1a0128){_0x3b928c=_0x3b928c-0x0;var _0x4760dd=_0x8033[_0x3b928c];return _0x4760dd;};'use strict';var _=require(_0x3803('0x0'));var util=require('util');var utils=require(_0x3803('0x1'));function writeDB(_0x1583b8){utils['info'](util[_0x3803('0x2')]('[%s][transfers][writeDB]\x20type:%s',_0x1583b8['type']===_0x3803('0x3')?_0x1583b8[_0x3803('0x4')]:_0x1583b8['uniqueid'],_0x1583b8[_0x3803('0x5')]));utils[_0x3803('0x6')](_0x3803('0x7'),_0x1583b8);}exports[_0x3803('0x8')]={};exports[_0x3803('0x9')]=function(_0x12c8e0){try{utils[_0x3803('0xa')](util[_0x3803('0x2')](_0x3803('0xb'),_0x12c8e0[_0x3803('0xc')]),_0x12c8e0);utils['info'](util['format'](_0x3803('0xd'),_0x12c8e0['uniqueid'],_0x12c8e0[_0x3803('0xe')],_0x12c8e0[_0x3803('0xf')],_0x12c8e0[_0x3803('0x10')],_0x12c8e0[_0x3803('0x11')]));_0x12c8e0[_0x3803('0x5')]=_0x3803('0x12');exports[_0x3803('0x8')][_0x12c8e0['transfereruniqueid']]=_0x12c8e0;writeDB(_0x12c8e0);}catch(_0x5cb18b){utils[_0x3803('0x13')](util[_0x3803('0x2')](_0x3803('0xb'),_0x12c8e0['uniqueid']),_0x5cb18b);}};exports[_0x3803('0x14')]=function(_0x1fae34){try{utils[_0x3803('0xa')](util['format'](_0x3803('0x15'),_0x1fae34[_0x3803('0x4')]),_0x1fae34);utils[_0x3803('0x16')](util['format'](_0x3803('0x17'),_0x1fae34[_0x3803('0x4')],_0x1fae34[_0x3803('0x18')],_0x1fae34[_0x3803('0x19')],_0x1fae34[_0x3803('0x1a')],_0x1fae34[_0x3803('0x1b')]));_0x1fae34=_['assign'](_0x1fae34,{'transfererchannel':_0x1fae34[_0x3803('0x1c')],'transferercalleridnum':_0x1fae34[_0x3803('0x18')],'transferercalleridname':_0x1fae34[_0x3803('0x19')],'transfererconnectedlinenum':_0x1fae34['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x1fae34[_0x3803('0x1d')],'transfereraccountcode':_0x1fae34[_0x3803('0x1e')],'transferercontext':_0x1fae34[_0x3803('0x1f')],'transfererexten':_0x1fae34[_0x3803('0x20')],'transfererlinkedid':_0x1fae34['origtransfererlinkedid'],'context':_0x1fae34[_0x3803('0x21')],'extension':_0x1fae34[_0x3803('0x22')],'type':_0x3803('0x3')});if(_[_0x3803('0x23')](_0x1fae34[_0x3803('0x24')])){_0x1fae34=_[_0x3803('0x25')](_0x1fae34,{'transfereechannel':_0x1fae34[_0x3803('0x26')],'transfereecalleridnum':_0x1fae34[_0x3803('0x1a')],'transfereecalleridname':_0x1fae34[_0x3803('0x1b')],'transfereeconnectedlinenum':_0x1fae34['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x1fae34[_0x3803('0x27')],'transfereeaccountcode':_0x1fae34['transfertargetaccountcode'],'transfereecontext':_0x1fae34[_0x3803('0x28')],'transfereeexten':_0x1fae34[_0x3803('0x29')],'transfereelinkedid':_0x1fae34[_0x3803('0x2a')]});}writeDB(_0x1fae34);}catch(_0x4ec90b){utils[_0x3803('0x13')](util[_0x3803('0x2')](_0x3803('0x15'),_0x1fae34['origtransfereruniqueid']),_0x4ec90b);}};
\ No newline at end of file
index 061eb4c..7a2bc43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc6f=['debug','error','request','then','catch','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','addTime','seconds','YYYY-MM-DD\x20HH:mm:ss','format','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect'];(function(_0xab6bd0,_0x2d513f){var _0x42a147=function(_0x4b19b6){while(--_0x4b19b6){_0xab6bd0['push'](_0xab6bd0['shift']());}};_0x42a147(++_0x2d513f);}(_0xdc6f,0x8c));var _0xfdc6=function(_0x3a9d77,_0xdc466){_0x3a9d77=_0x3a9d77-0x0;var _0x130f80=_0xdc6f[_0x3a9d77];return _0x130f80;};'use strict';var BPromise=require(_0xfdc6('0x0'));var jayson=require(_0xfdc6('0x1'));var moment=require(_0xfdc6('0x2'));var util=require(_0xfdc6('0x3'));var client=jayson[_0xfdc6('0x4')][_0xfdc6('0x5')]({'port':0x2329});var logger=require(_0xfdc6('0x6'))(_0xfdc6('0x7'));exports[_0xfdc6('0x8')]=function(_0x2e3792,_0x22f6d0){logger[_0xfdc6('0x8')](_0x2e3792,_0x22f6d0?util[_0xfdc6('0x9')](_0x22f6d0,{'showHidden':![],'depth':null}):'');};exports[_0xfdc6('0xa')]=function(_0x55eeaf,_0x2ce7c9){logger[_0xfdc6('0xa')](_0x55eeaf,_0x2ce7c9?util[_0xfdc6('0x9')](_0x2ce7c9,{'showHidden':![],'depth':null}):'');};exports[_0xfdc6('0xb')]=function(_0x5e5285,_0x5d4fb9){logger['error'](_0x5e5285,_0x5d4fb9?util['inspect'](_0x5d4fb9,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x5b72c0,_0x26a1f0){return client[_0xfdc6('0xc')](_0x5b72c0,{'body':_0x26a1f0})[_0xfdc6('0xd')](function(_0x1fa7ba){logger[_0xfdc6('0xa')]('[utils][request]\x20name:%s',_0x5b72c0,_0x1fa7ba?util[_0xfdc6('0x9')](_0x1fa7ba,{'showHidden':![],'depth':null}):'');})[_0xfdc6('0xe')](function(_0x3142f2){logger[_0xfdc6('0xb')](_0xfdc6('0xf'),_0x5b72c0,_0x3142f2?util[_0xfdc6('0x9')](_0x3142f2,{'showHidden':![],'depth':null}):'');});};function getUser(_0x632160){return client['request'](_0xfdc6('0x10'),{'options':{'raw':!![],'attributes':['id',_0xfdc6('0x11'),_0xfdc6('0x12'),_0xfdc6('0x13')],'where':_0x632160,'limit':0x1}})['then'](function(_0x39d7ed){logger[_0xfdc6('0xa')](_0xfdc6('0x14'),JSON['stringify'](_0x632160),_0x39d7ed?util[_0xfdc6('0x9')](_0x39d7ed,{'showHidden':![],'depth':null}):'');return _0x39d7ed[_0xfdc6('0x15')][_0xfdc6('0x16')]?_0x39d7ed[_0xfdc6('0x15')][0x0]:null;});}exports[_0xfdc6('0x17')]=function(_0x43de20){return new BPromise(function(_0x5ed3f9,_0x1c5224){if(_0x43de20){return getUser({'internal':_0x43de20})[_0xfdc6('0xd')](function(_0x13af91){logger[_0xfdc6('0x8')](_0xfdc6('0x18'),_0x43de20,_0x13af91?_0xfdc6('0x19'):_0xfdc6('0x1a'));return _0x5ed3f9(_0x13af91);})[_0xfdc6('0xe')](function(_0x3d0b6c){logger[_0xfdc6('0xb')](_0xfdc6('0x1b'),_0x3d0b6c?util[_0xfdc6('0x9')](_0x3d0b6c,{'showHidden':![],'depth':null}):'');return _0x5ed3f9(null);});}return _0x5ed3f9(null);});};exports[_0xfdc6('0x1c')]=function(_0x2cbd5c){return new BPromise(function(_0x52f748,_0x24e23f){if(_0x2cbd5c){return getUser({'interface':_0x2cbd5c})[_0xfdc6('0xd')](function(_0x3828b4){logger[_0xfdc6('0x8')](_0xfdc6('0x1d'),_0x2cbd5c,_0x3828b4?_0xfdc6('0x19'):_0xfdc6('0x1a'));return _0x52f748(_0x3828b4);})[_0xfdc6('0xe')](function(_0x576916){logger[_0xfdc6('0xb')](_0xfdc6('0x1e'),_0x576916?util['inspect'](_0x576916,{'showHidden':![],'depth':null}):'');return _0x52f748(null);});}return _0x52f748(null);});};exports[_0xfdc6('0x1f')]=function(_0x595563){return new BPromise(function(_0xbf46d9,_0x37ed25){if(_0x595563){return getUser({'name':_0x595563})[_0xfdc6('0xd')](function(_0x595032){logger['info'](_0xfdc6('0x20'),_0x595563,_0x595032?_0xfdc6('0x19'):'notfound');return _0xbf46d9(_0x595032);})[_0xfdc6('0xe')](function(_0xbe3ca2){logger[_0xfdc6('0xb')](_0xfdc6('0x21'),_0xbe3ca2?util[_0xfdc6('0x9')](_0xbe3ca2,{'showHidden':![],'depth':null}):'');return _0xbf46d9(null);});}return _0xbf46d9(null);});};exports[_0xfdc6('0x22')]=function(_0x2a7c69){return new BPromise(function(_0x48ad97,_0x18a398){if(_0x2a7c69){return client['request'](_0xfdc6('0x23'),{'options':{'raw':!![],'attributes':['id',_0xfdc6('0x12'),_0xfdc6('0x24'),_0xfdc6('0x25'),_0xfdc6('0x26')],'where':{'name':_0x2a7c69},'limit':0x1}})[_0xfdc6('0xd')](function(_0xff20c4){logger[_0xfdc6('0xa')](_0xfdc6('0x27'),_0x2a7c69,_0xff20c4?util[_0xfdc6('0x9')](_0xff20c4,{'showHidden':![],'depth':null}):'');logger[_0xfdc6('0x8')](_0xfdc6('0x28'),_0x2a7c69,_0xff20c4?_0xfdc6('0x19'):_0xfdc6('0x1a'));return _0x48ad97(_0xff20c4[_0xfdc6('0x15')][_0xfdc6('0x16')]?_0xff20c4[_0xfdc6('0x15')][0x0]:null);})['catch'](function(_0x256344){logger[_0xfdc6('0xb')]('[utils][getVoiceQueueByName]',_0x256344?util['inspect'](_0x256344,{'showHidden':![],'depth':null}):'');return _0x48ad97(null);});}return _0x48ad97(null);});};exports[_0xfdc6('0x29')]=function(_0x4697b8,_0x39b725){return moment(_0x4697b8)['add'](_0x39b725,_0xfdc6('0x2a'))['format'](_0xfdc6('0x2b'));};exports['subtractTime']=function(_0x28032,_0x1a3a68){return moment(_0x28032)['subtract'](_0x1a3a68,_0xfdc6('0x2a'))[_0xfdc6('0x2c')](_0xfdc6('0x2b'));};exports['diffTime']=function(_0x33c899,_0x559fe4){return moment(_0x33c899)[_0xfdc6('0x2d')](moment(_0x559fe4),_0xfdc6('0x2a'));};exports[_0xfdc6('0x2e')]=function(_0x3d88a8,_0x315c2b){return parseInt(_0x3d88a8,0xa)+parseInt(_0x315c2b,0xa);};exports[_0xfdc6('0x2f')]=function(){return moment()[_0xfdc6('0x2c')](_0xfdc6('0x2b'));};exports[_0xfdc6('0x30')]=function(_0x3a97e0,_0x4a0e5c){if(_0x4a0e5c){return moment(_0x3a97e0)[_0xfdc6('0x30')](_0x4a0e5c);}return!![];};exports['isBefore']=function(_0x522840,_0x2c3581){if(_0x2c3581){return moment(_0x522840)[_0xfdc6('0x31')](_0x2c3581);}else if(_0x522840){return!![];}return![];};
\ No newline at end of file
+var _0xa25a=['stringify','result','length','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','catch','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','found','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','GetVoiceQueue','name','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','seconds','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','[utils][getUser]\x20where:%s'];(function(_0x58efa6,_0x2c00bd){var _0x5d643c=function(_0x1d1ef2){while(--_0x1d1ef2){_0x58efa6['push'](_0x58efa6['shift']());}};_0x5d643c(++_0x2c00bd);}(_0xa25a,0x133));var _0xaa25=function(_0x444f91,_0x2a61f2){_0x444f91=_0x444f91-0x0;var _0x3248ab=_0xa25a[_0x444f91];return _0x3248ab;};'use strict';var BPromise=require(_0xaa25('0x0'));var jayson=require(_0xaa25('0x1'));var moment=require(_0xaa25('0x2'));var util=require(_0xaa25('0x3'));var client=jayson['client'][_0xaa25('0x4')]({'port':0x2329});var logger=require(_0xaa25('0x5'))(_0xaa25('0x6'));exports[_0xaa25('0x7')]=function(_0x25711c,_0x432cba){logger[_0xaa25('0x7')](_0x25711c,_0x432cba?util[_0xaa25('0x8')](_0x432cba,{'showHidden':![],'depth':null}):'');};exports[_0xaa25('0x9')]=function(_0x1e4770,_0x590af6){logger[_0xaa25('0x9')](_0x1e4770,_0x590af6?util[_0xaa25('0x8')](_0x590af6,{'showHidden':![],'depth':null}):'');};exports[_0xaa25('0xa')]=function(_0x3753d2,_0xabc499){logger[_0xaa25('0xa')](_0x3753d2,_0xabc499?util[_0xaa25('0x8')](_0xabc499,{'showHidden':![],'depth':null}):'');};exports[_0xaa25('0xb')]=function(_0x23e450,_0x3e2048){return client[_0xaa25('0xb')](_0x23e450,{'body':_0x3e2048})[_0xaa25('0xc')](function(_0x24ed40){logger[_0xaa25('0x9')](_0xaa25('0xd'),_0x23e450,_0x24ed40?util[_0xaa25('0x8')](_0x24ed40,{'showHidden':![],'depth':null}):'');})['catch'](function(_0xbd0da4){logger['error']('[utils][request]\x20name:%s',_0x23e450,_0xbd0da4?util[_0xaa25('0x8')](_0xbd0da4,{'showHidden':![],'depth':null}):'');});};function getUser(_0x34187b){return client[_0xaa25('0xb')]('GetUser',{'options':{'raw':!![],'attributes':['id','internal','name','interface'],'where':_0x34187b,'limit':0x1}})[_0xaa25('0xc')](function(_0x39dd73){logger[_0xaa25('0x9')](_0xaa25('0xe'),JSON[_0xaa25('0xf')](_0x34187b),_0x39dd73?util[_0xaa25('0x8')](_0x39dd73,{'showHidden':![],'depth':null}):'');return _0x39dd73[_0xaa25('0x10')][_0xaa25('0x11')]?_0x39dd73[_0xaa25('0x10')][0x0]:null;});}exports['getUserByInternal']=function(_0x436244){return new BPromise(function(_0x199170,_0x14cd06){if(_0x436244){return getUser({'internal':_0x436244})[_0xaa25('0xc')](function(_0x297840){logger['info'](_0xaa25('0x12'),_0x436244,_0x297840?'found':_0xaa25('0x13'));return _0x199170(_0x297840);})[_0xaa25('0x14')](function(_0x50d0f7){logger[_0xaa25('0xa')]('[utils][getUserByInternal]',_0x50d0f7?util[_0xaa25('0x8')](_0x50d0f7,{'showHidden':![],'depth':null}):'');return _0x199170(null);});}return _0x199170(null);});};exports[_0xaa25('0x15')]=function(_0x2a485b){return new BPromise(function(_0x4014d1,_0x44966){if(_0x2a485b){return getUser({'interface':_0x2a485b})['then'](function(_0x2a67c8){logger[_0xaa25('0x7')](_0xaa25('0x16'),_0x2a485b,_0x2a67c8?_0xaa25('0x17'):_0xaa25('0x13'));return _0x4014d1(_0x2a67c8);})['catch'](function(_0x155232){logger[_0xaa25('0xa')](_0xaa25('0x18'),_0x155232?util[_0xaa25('0x8')](_0x155232,{'showHidden':![],'depth':null}):'');return _0x4014d1(null);});}return _0x4014d1(null);});};exports[_0xaa25('0x19')]=function(_0x1f4766){return new BPromise(function(_0x56edd4,_0x7d9d80){if(_0x1f4766){return getUser({'name':_0x1f4766})['then'](function(_0x504ddf){logger[_0xaa25('0x7')](_0xaa25('0x1a'),_0x1f4766,_0x504ddf?_0xaa25('0x17'):_0xaa25('0x13'));return _0x56edd4(_0x504ddf);})[_0xaa25('0x14')](function(_0x33fdee){logger[_0xaa25('0xa')](_0xaa25('0x1b'),_0x33fdee?util[_0xaa25('0x8')](_0x33fdee,{'showHidden':![],'depth':null}):'');return _0x56edd4(null);});}return _0x56edd4(null);});};exports['getVoiceQueueByName']=function(_0x59a669){return new BPromise(function(_0x3681da,_0x2ed62a){if(_0x59a669){return client['request'](_0xaa25('0x1c'),{'options':{'raw':!![],'attributes':['id',_0xaa25('0x1d'),_0xaa25('0x1e'),'acw',_0xaa25('0x1f')],'where':{'name':_0x59a669},'limit':0x1}})[_0xaa25('0xc')](function(_0x49e0a4){logger['debug'](_0xaa25('0x20'),_0x59a669,_0x49e0a4?util[_0xaa25('0x8')](_0x49e0a4,{'showHidden':![],'depth':null}):'');logger[_0xaa25('0x7')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x59a669,_0x49e0a4?_0xaa25('0x17'):_0xaa25('0x13'));return _0x3681da(_0x49e0a4[_0xaa25('0x10')][_0xaa25('0x11')]?_0x49e0a4[_0xaa25('0x10')][0x0]:null);})[_0xaa25('0x14')](function(_0x10d355){logger[_0xaa25('0xa')](_0xaa25('0x21'),_0x10d355?util[_0xaa25('0x8')](_0x10d355,{'showHidden':![],'depth':null}):'');return _0x3681da(null);});}return _0x3681da(null);});};exports[_0xaa25('0x22')]=function(_0x2974f5,_0x51f4fe){return moment(_0x2974f5)['add'](_0x51f4fe,'seconds')[_0xaa25('0x23')](_0xaa25('0x24'));};exports[_0xaa25('0x25')]=function(_0x1a1167,_0x4748cb){return moment(_0x1a1167)[_0xaa25('0x26')](_0x4748cb,_0xaa25('0x27'))[_0xaa25('0x23')](_0xaa25('0x24'));};exports[_0xaa25('0x28')]=function(_0x11d84b,_0x36dc79){return moment(_0x11d84b)[_0xaa25('0x29')](moment(_0x36dc79),_0xaa25('0x27'));};exports[_0xaa25('0x2a')]=function(_0x3aad68,_0x24f966){return parseInt(_0x3aad68,0xa)+parseInt(_0x24f966,0xa);};exports[_0xaa25('0x2b')]=function(){return moment()[_0xaa25('0x23')](_0xaa25('0x24'));};exports[_0xaa25('0x2c')]=function(_0x40ceac,_0x208709){if(_0x208709){return moment(_0x40ceac)[_0xaa25('0x2c')](_0x208709);}return!![];};exports[_0xaa25('0x2d')]=function(_0x9bc0ea,_0x297baf){if(_0x297baf){return moment(_0x9bc0ea)[_0xaa25('0x2d')](_0x297baf);}else if(_0x9bc0ea){return!![];}return![];};
\ No newline at end of file
index 99223d6..3c22d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d2=['isEmpty','body','\x20body=%s','format','headers','x-forwarded-for','connection','url','statusCode','responseTime','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','method','other','agent_name','test','setupLoggers','fs-extra','lodash','express-winston','path','util','./loggers','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','xcally','role','name','then','client','catch','log','user','no-user','timestamp','error','api','set','client-side-logger','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s'];(function(_0x493f24,_0x4d6ceb){var _0x26794e=function(_0x598279){while(--_0x598279){_0x493f24['push'](_0x493f24['shift']());}};_0x26794e(++_0x4d6ceb);}(_0x78d2,0x12d));var _0x278d=function(_0x56a86e,_0x51f246){_0x56a86e=_0x56a86e-0x0;var _0x48ae90=_0x78d2[_0x56a86e];return _0x48ae90;};var fs=require(_0x278d('0x0'));var _=require(_0x278d('0x1'));var ewinston=require(_0x278d('0x2'));var path=require(_0x278d('0x3'));var util=require(_0x278d('0x4'));var fileLogger=require(_0x278d('0x5'))['fileLogger'];var safeTemplate=require(_0x278d('0x6'))[_0x278d('0x7')];var maskSensitiveData=require(_0x278d('0x8'))[_0x278d('0x9')];function ClientSideLogger(){function _0x410de5(_0x53f69b){var _0x26ce8a=path[_0x278d('0xa')](_0x278d('0xb'),'log',_0x278d('0xc'));var _0x4d42f5=path[_0x278d('0xa')]('client',_0x53f69b[_0x278d('0xd')]+'-'+_0x53f69b[_0x278d('0xe')]);return fs['ensureDir'](path['join'](_0x26ce8a,_0x4d42f5))[_0x278d('0xf')](function(){var _0x13cf52=fileLogger(_0x278d('0x10'),path['join'](_0x26ce8a,_0x4d42f5));return _0x13cf52;})[_0x278d('0x11')](function(_0x3fa6c5){throw _0x3fa6c5;});}this[_0x278d('0x12')]=function(_0x1565d7,_0x193af6,_0x4b2070,_0x28a629){return _0x410de5(_0x1565d7[_0x278d('0x13')])[_0x278d('0xf')](function(_0x433ef1){var _0x5b986b=_0x433ef1[_0x193af6];return _0x5b986b;})[_0x278d('0xf')](function(_0x3e65a7){var _0x444777=_0x1565d7['user']?_0x1565d7[_0x278d('0x13')]['id']:_0x278d('0x14');var _0x45140a=_0x28a629['data'];var _0x330fcd=_0x28a629[_0x278d('0x15')];var _0xc6657=new Date(Number(_0x330fcd));return _0x3e65a7(_0x444777,_0xc6657,_0x4b2070,_0x45140a);})[_0x278d('0x11')](function(_0x39b30a){fileLogger(_0x278d('0x10'))[_0x278d('0x16')](_0x39b30a);});};}function setupLoggers(_0x37b2d5){return new Promise(function(_0x251dd7){var _0x246bbc=new ClientSideLogger();var _0x565d12=fileLogger(_0x278d('0x17'));var _0x208e83=fileLogger('auth');_0x37b2d5[_0x278d('0x18')](_0x278d('0x19'),_0x246bbc);_0x37b2d5[_0x278d('0x1a')](ewinston['logger']({'winstonInstance':_0x565d12,'meta':![],'statusLevels':!![],'msg':function(_0x46b4be,_0x26597d){var _0x3361a0=_0x278d('0x1b');if(!_[_0x278d('0x1c')](_0x46b4be[_0x278d('0x1d')])){_0x3361a0+=_0x278d('0x1e');var _0x1103c0=_0x46b4be[_0x278d('0x1d')];maskSensitiveData(_0x1103c0);}return safeTemplate(util[_0x278d('0x1f')](_0x3361a0,_0x46b4be['method'],_0x46b4be[_0x278d('0x20')][_0x278d('0x21')]?_0x46b4be[_0x278d('0x20')][_0x278d('0x21')]:_0x46b4be[_0x278d('0x22')]['remoteAddress']||_0x46b4be['ip'],_0x46b4be[_0x278d('0x23')],_0x26597d[_0x278d('0x24')],_0x26597d[_0x278d('0x25')],_0x46b4be['user']?_0x46b4be[_0x278d('0x13')]['id']:null,_0x46b4be[_0x278d('0x13')]?_0x46b4be[_0x278d('0x13')][_0x278d('0xe')]:null,_0x46b4be[_0x278d('0x13')]?_0x46b4be['user']['role']:null,_0x1103c0?util['inspect'](_0x1103c0,![],null):''));}}));_0x37b2d5[_0x278d('0x1a')](ewinston[_0x278d('0x26')]({'winstonInstance':_0x208e83,'meta':![],'statusLevels':!![],'msg':function(_0x40ee1b,_0x511b63){var _0xa74a23=_0x278d('0x27');if(_0x40ee1b[_0x278d('0x1d')]&&_0x40ee1b[_0x278d('0x1d')][_0x278d('0x28')]&&_0x40ee1b[_0x278d('0x1d')][_0x278d('0x29')]){_0xa74a23='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x278d('0x1f')](_0xa74a23,_0x40ee1b[_0x278d('0x2a')],_0x40ee1b[_0x278d('0x20')]['x-forwarded-for']?_0x40ee1b['headers'][_0x278d('0x21')]:_0x40ee1b[_0x278d('0x22')]['remoteAddress']||_0x40ee1b['ip'],_0x40ee1b[_0x278d('0x23')],_0x511b63[_0x278d('0x24')],_0x511b63['responseTime'],_0x40ee1b[_0x278d('0x13')]?_0x40ee1b['user']['id']:null,_0x40ee1b[_0x278d('0x13')]?_0x40ee1b[_0x278d('0x13')][_0x278d('0xe')]:null,_0x40ee1b[_0x278d('0x13')]?_0x40ee1b['user'][_0x278d('0xd')]:null,_0x40ee1b[_0x278d('0x1d')]&&_0x40ee1b[_0x278d('0x1d')][_0x278d('0x28')]?_0x40ee1b[_0x278d('0x1d')][_0x278d('0x28')]:_0x278d('0x2b'),_0x40ee1b[_0x278d('0x1d')]&&_0x40ee1b['body']['agent_id']?_0x40ee1b['body'][_0x278d('0x29')]:'',_0x40ee1b[_0x278d('0x1d')]&&_0x40ee1b[_0x278d('0x1d')]['agent_name']?_0x40ee1b[_0x278d('0x1d')][_0x278d('0x2c')]:'');},'ignoreRoute':function(_0x1c1da9){var _0x4f22ea=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4f22ea[_0x278d('0x2d')](_0x1c1da9[_0x278d('0x23')]);}}));return _0x251dd7();});}exports[_0x278d('0x2e')]=setupLoggers;
\ No newline at end of file
+var _0x27a2=['./mask-sensitive-data','maskSensitiveData','/var','log','xcally','join','client','role','ensureDir','then','catch','user','no-user','data','timestamp','error','api','set','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','method','x-forwarded-for','connection','remoteAddress','url','statusCode','name','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)','format','headers','responseTime','other','agent_name','setupLoggers','lodash','express-winston','path','util','fileLogger','./safe-template','safeTemplate'];(function(_0x1e8b9b,_0x4a250d){var _0x301788=function(_0x1d0e60){while(--_0x1d0e60){_0x1e8b9b['push'](_0x1e8b9b['shift']());}};_0x301788(++_0x4a250d);}(_0x27a2,0xee));var _0x227a=function(_0x82f710,_0x111039){_0x82f710=_0x82f710-0x0;var _0x466865=_0x27a2[_0x82f710];return _0x466865;};var fs=require('fs-extra');var _=require(_0x227a('0x0'));var ewinston=require(_0x227a('0x1'));var path=require(_0x227a('0x2'));var util=require(_0x227a('0x3'));var fileLogger=require('./loggers')[_0x227a('0x4')];var safeTemplate=require(_0x227a('0x5'))[_0x227a('0x6')];var maskSensitiveData=require(_0x227a('0x7'))[_0x227a('0x8')];function ClientSideLogger(){function _0x82138e(_0x7ee8ca){var _0x51822d=path['join'](_0x227a('0x9'),_0x227a('0xa'),_0x227a('0xb'));var _0x2f618b=path[_0x227a('0xc')](_0x227a('0xd'),_0x7ee8ca[_0x227a('0xe')]+'-'+_0x7ee8ca['name']);return fs[_0x227a('0xf')](path['join'](_0x51822d,_0x2f618b))[_0x227a('0x10')](function(){var _0x30cca8=fileLogger(_0x227a('0xd'),path['join'](_0x51822d,_0x2f618b));return _0x30cca8;})[_0x227a('0x11')](function(_0x5da9ea){throw _0x5da9ea;});}this[_0x227a('0xa')]=function(_0x556d5d,_0x201195,_0x48d5aa,_0x958244){return _0x82138e(_0x556d5d[_0x227a('0x12')])[_0x227a('0x10')](function(_0x190f87){var _0x3acea1=_0x190f87[_0x201195];return _0x3acea1;})[_0x227a('0x10')](function(_0xc7bba1){var _0x323777=_0x556d5d['user']?_0x556d5d[_0x227a('0x12')]['id']:_0x227a('0x13');var _0x3df1e3=_0x958244[_0x227a('0x14')];var _0x3fc1dd=_0x958244[_0x227a('0x15')];var _0x54a4a7=new Date(Number(_0x3fc1dd));return _0xc7bba1(_0x323777,_0x54a4a7,_0x48d5aa,_0x3df1e3);})['catch'](function(_0x559ce6){fileLogger('client')[_0x227a('0x16')](_0x559ce6);});};}function setupLoggers(_0x1422df){return new Promise(function(_0x2cae6d){var _0x45e98a=new ClientSideLogger();var _0xf41ee2=fileLogger(_0x227a('0x17'));var _0x2ecb61=fileLogger('auth');_0x1422df[_0x227a('0x18')](_0x227a('0x19'),_0x45e98a);_0x1422df[_0x227a('0x1a')](ewinston[_0x227a('0x1b')]({'winstonInstance':_0xf41ee2,'meta':![],'statusLevels':!![],'msg':function(_0x4fffb6,_0xf6b3cd){var _0x488340=_0x227a('0x1c');if(!_[_0x227a('0x1d')](_0x4fffb6[_0x227a('0x1e')])){_0x488340+=_0x227a('0x1f');var _0xe40a47=_0x4fffb6[_0x227a('0x1e')];maskSensitiveData(_0xe40a47);}return safeTemplate(util['format'](_0x488340,_0x4fffb6[_0x227a('0x20')],_0x4fffb6['headers'][_0x227a('0x21')]?_0x4fffb6['headers'][_0x227a('0x21')]:_0x4fffb6[_0x227a('0x22')][_0x227a('0x23')]||_0x4fffb6['ip'],_0x4fffb6[_0x227a('0x24')],_0xf6b3cd[_0x227a('0x25')],_0xf6b3cd['responseTime'],_0x4fffb6[_0x227a('0x12')]?_0x4fffb6[_0x227a('0x12')]['id']:null,_0x4fffb6['user']?_0x4fffb6[_0x227a('0x12')][_0x227a('0x26')]:null,_0x4fffb6[_0x227a('0x12')]?_0x4fffb6[_0x227a('0x12')][_0x227a('0xe')]:null,_0xe40a47?util[_0x227a('0x27')](_0xe40a47,![],null):''));}}));_0x1422df['use'](ewinston[_0x227a('0x1b')]({'winstonInstance':_0x2ecb61,'meta':![],'statusLevels':!![],'msg':function(_0x278fa0,_0x5967c4){var _0x307de3='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x278fa0['body']&&_0x278fa0['body'][_0x227a('0x28')]&&_0x278fa0[_0x227a('0x1e')][_0x227a('0x29')]){_0x307de3=_0x227a('0x2a');}return util[_0x227a('0x2b')](_0x307de3,_0x278fa0[_0x227a('0x20')],_0x278fa0[_0x227a('0x2c')]['x-forwarded-for']?_0x278fa0[_0x227a('0x2c')][_0x227a('0x21')]:_0x278fa0[_0x227a('0x22')][_0x227a('0x23')]||_0x278fa0['ip'],_0x278fa0[_0x227a('0x24')],_0x5967c4['statusCode'],_0x5967c4[_0x227a('0x2d')],_0x278fa0['user']?_0x278fa0[_0x227a('0x12')]['id']:null,_0x278fa0[_0x227a('0x12')]?_0x278fa0['user'][_0x227a('0x26')]:null,_0x278fa0[_0x227a('0x12')]?_0x278fa0[_0x227a('0x12')][_0x227a('0xe')]:null,_0x278fa0[_0x227a('0x1e')]&&_0x278fa0[_0x227a('0x1e')][_0x227a('0x28')]?_0x278fa0['body'][_0x227a('0x28')]:_0x227a('0x2e'),_0x278fa0[_0x227a('0x1e')]&&_0x278fa0[_0x227a('0x1e')]['agent_id']?_0x278fa0[_0x227a('0x1e')]['agent_id']:'',_0x278fa0[_0x227a('0x1e')]&&_0x278fa0['body'][_0x227a('0x2f')]?_0x278fa0[_0x227a('0x1e')]['agent_name']:'');},'ignoreRoute':function(_0x254771){var _0x522503=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x522503['test'](_0x254771[_0x227a('0x24')]);}}));return _0x2cae6d();});}exports[_0x227a('0x30')]=setupLoggers;
\ No newline at end of file
index 68093e7..ae4a824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a09=['max','format','MMM','includes','monthCompare','guess','test','isMoment','padStart','length','iftime','moment-timezone','map','source','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','split','locale','toLowerCase','slice','exports','circularDoWInterval','monthsShort','indexOf','concat','circularMonthInterval','clone','minutes','hours','isBefore','startOf','day','endOf','isBetween','timeCompare','ddd','dowCompare','daysInMonth','min'];(function(_0x2c9b79,_0x7cf58b){var _0x265032=function(_0x188a92){while(--_0x188a92){_0x2c9b79['push'](_0x2c9b79['shift']());}};_0x265032(++_0x7cf58b);}(_0x8a09,0x83));var _0x98a0=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x8a09[_0x8c43de];return _0xa6591b;};var _=require('lodash');var moment=require(_0x98a0('0x0'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0x98a0('0x1')](function(_0x47e955){return _0x47e955[_0x98a0('0x2')];})[_0x98a0('0x3')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x98a0('0x4');var EINVALID_DATE=_0x98a0('0x5');function throwIfDateNotValid(_0x18ae14){if(!_0x18ae14['isValid']()){throw new Error(EINVALID_DATE);}}function extractTime(_0x2f9ca3){var _0x489cf1=_0x2f9ca3[_0x98a0('0x6')](':')[_0x98a0('0x1')](function(_0x10bdfe){return parseInt(_0x10bdfe,0xa);});var _0x1ad677=_0x489cf1[0x0];var _0x2401be=_0x489cf1[0x1];if(_0x1ad677<0x0||_0x1ad677>0x17||_0x2401be<0x0||_0x2401be>0x3b){throw new Error(EINVALID_DATE);}return[_0x1ad677,_0x2401be];}function circularDoWInterval(_0x5e673e,_0x21e592){if(_0x5e673e===_0x21e592){return[_0x5e673e];}else{var _0x32f1e0=moment[_0x98a0('0x7')]();moment[_0x98a0('0x7')]('en');var _0xc91d8=moment['weekdaysShort']()[_0x98a0('0x1')](function(_0x468d96){return _0x468d96[_0x98a0('0x8')]();});moment['locale'](_0x32f1e0);var _0x236402=_0xc91d8['indexOf'](_0x5e673e);var _0x169c19=_0xc91d8['indexOf'](_0x21e592);if(_0x169c19>_0x236402){return _0xc91d8[_0x98a0('0x9')](_0x236402,_0x169c19+0x1);}else{var _0x4be133=_0xc91d8[_0x98a0('0x9')](0x0,_0x169c19+0x1);var _0x39e5c1=_0xc91d8[_0x98a0('0x9')](_0x236402);return _0x39e5c1['concat'](_0x4be133);}}}module[_0x98a0('0xa')][_0x98a0('0xb')]=circularDoWInterval;function circularMonthInterval(_0xeda694,_0x468539){if(_0xeda694===_0x468539){return[_0xeda694];}else{var _0x37e0cf=moment[_0x98a0('0x7')]();moment[_0x98a0('0x7')]('en');var _0x5ade7f=moment[_0x98a0('0xc')]()[_0x98a0('0x1')](function(_0x439f11){return _0x439f11[_0x98a0('0x8')]();});moment['locale'](_0x37e0cf);var _0x1cb582=_0x5ade7f[_0x98a0('0xd')](_0xeda694);var _0x5405e3=_0x5ade7f[_0x98a0('0xd')](_0x468539);if(_0x5405e3>_0x1cb582){return _0x5ade7f[_0x98a0('0x9')](_0x1cb582,_0x5405e3+0x1);}else{var _0x363523=_0x5ade7f['slice'](0x0,_0x5405e3+0x1);var _0x3bb272=_0x5ade7f[_0x98a0('0x9')](_0x1cb582);return _0x3bb272[_0x98a0('0xe')](_0x363523);}}}module[_0x98a0('0xa')][_0x98a0('0xf')]=circularMonthInterval;function parseDom(_0x2560af){var _0x474a4b=parseInt(_0x2560af,0xa);if(_0x474a4b<0x1||_0x474a4b>0x1f){throw new Error(EINVALID_DATE);}return _0x474a4b;}function timeCompare(_0x4d63ef,_0x1ab18e,_0xef3a12){var _0x5743a6=_0x4d63ef[_0x98a0('0x10')]();var _0xfb4be0=extractTime(_0x1ab18e);var _0x5bb1cd=_0xfb4be0[0x0];var _0x520627=_0xfb4be0[0x1];var _0xc4c493=_0x4d63ef['clone']()['hours'](_0x5bb1cd)[_0x98a0('0x11')](_0x520627);throwIfDateNotValid(_0xc4c493);var _0x4f577f=extractTime(_0xef3a12);var _0x4d9aba=_0x4f577f[0x0];var _0x5d5d24=_0x4f577f[0x1];var _0x42de3b=_0x4d63ef[_0x98a0('0x10')]()[_0x98a0('0x12')](_0x4d9aba)[_0x98a0('0x11')](_0x5d5d24);throwIfDateNotValid(_0x42de3b);if(_0x42de3b[_0x98a0('0x13')](_0xc4c493)){var _0x16a070=_0x5743a6[_0x98a0('0x10')]()[_0x98a0('0x14')](_0x98a0('0x15'));var _0x265bfa=_0x5743a6[_0x98a0('0x10')]()[_0x98a0('0x16')]('day');return _0x5743a6['isBetween'](_0xc4c493,_0x265bfa,undefined,'[]')||_0x5743a6['isBetween'](_0x16a070,_0x42de3b,undefined,'[]');}else{return _0x5743a6[_0x98a0('0x17')](_0xc4c493,_0x42de3b,undefined,'[]');}}module['exports'][_0x98a0('0x18')]=timeCompare;function dowCompare(_0x59943c,_0x20d366,_0x2566ff){var _0x211df5=_0x59943c[_0x98a0('0x7')]('en')['format'](_0x98a0('0x19'))[_0x98a0('0x8')]();return circularDoWInterval(_0x20d366,_0x2566ff)['includes'](_0x211df5);}module['exports'][_0x98a0('0x1a')]=dowCompare;function domCompare(_0x1e01b5,_0x390be4,_0x3a4fca){var _0x456864=_0x1e01b5['date']();if(_0x390be4===_0x3a4fca){return _0x456864===_0x390be4;}else{var _0x5d223a=_0x1e01b5[_0x98a0('0x1b')]();var _0xbcb45d=_0x390be4<_0x3a4fca;let _0x2bcb7e=![];var _0x2985bd=0x0;var _0x55814d=0x0;if(_0xbcb45d){_0x2985bd=Math['max'](0x1,_0x390be4);_0x55814d=Math[_0x98a0('0x1c')](_0x3a4fca,_0x5d223a);_0x2bcb7e=_0x456864>=_0x2985bd&&_0x456864<=_0x55814d;}else{_0x2985bd=Math['min'](_0x390be4,_0x5d223a);_0x55814d=Math[_0x98a0('0x1d')](0x1,_0x3a4fca);_0x2bcb7e=_0x456864>=_0x2985bd||_0x456864<=_0x55814d;}return _0x2bcb7e;}}module[_0x98a0('0xa')]['domCompare']=domCompare;function monthCompare(_0x207a3b,_0x2204c2,_0x3f7ab2){var _0xbd515f=_0x207a3b[_0x98a0('0x7')]('en')[_0x98a0('0x1e')](_0x98a0('0x1f'))['toLowerCase']();return circularMonthInterval(_0x2204c2,_0x3f7ab2)[_0x98a0('0x20')](_0xbd515f);}module[_0x98a0('0xa')][_0x98a0('0x21')]=monthCompare;function iftime(_0x185837,_0x410e39=moment['tz'][_0x98a0('0x22')](),_0x341546=moment()){if(!validateRx[_0x98a0('0x23')](_0x185837)){throw new Error(EINVALID_STRING);}else{var _0x47913c=(moment[_0x98a0('0x24')](_0x341546)?_0x341546[_0x98a0('0x10')]():moment(_0x341546))['tz'](_0x410e39)['locale']('en');throwIfDateNotValid(_0x47913c);var _0x314b0a=_0x185837[_0x98a0('0x6')](',');var _0x29ef8d=_0x314b0a[0x0];var _0x35fdcd=_0x314b0a[0x1];var _0xd55219=_0x314b0a[0x2];var _0x3a1cfd=_0x314b0a[0x3];let _0x8c586=!![];if(_0x29ef8d!=='*'){var _0x56b18d=_0x29ef8d[_0x98a0('0x6')]('-');var _0x4e86f3=_[_0x98a0('0x25')](_0x56b18d[0x0],0x5,'0');var _0x53aa64=_0x56b18d[_0x98a0('0x26')]===0x2?_[_0x98a0('0x25')](_0x56b18d[0x1],0x5,'0'):_0x4e86f3;_0x8c586=timeCompare(_0x47913c,_0x4e86f3,_0x53aa64);}let _0x36561a=!![];if(_0x35fdcd!=='*'){var _0x2e2602=_0x35fdcd[_0x98a0('0x6')]('-');var _0x3405bb=_0x2e2602[0x0];var _0x3f5290=_0x2e2602[_0x98a0('0x26')]===0x2?_0x2e2602[0x1]:_0x3405bb;_0x36561a=dowCompare(_0x47913c,_0x3405bb,_0x3f5290);}let _0x387b13=!![];if(_0xd55219!=='*'){var _0x1a85e9=_0xd55219[_0x98a0('0x6')]('-');var _0x4d8daa=parseDom(_0x1a85e9[0x0]);var _0x5aa4e6=_0x1a85e9['length']===0x2?parseDom(_0x1a85e9[0x1]):_0x4d8daa;_0x387b13=domCompare(_0x47913c,_0x4d8daa,_0x5aa4e6);}let _0x34a4c1=!![];if(_0x3a1cfd!=='*'){var _0x444af3=_0x3a1cfd[_0x98a0('0x6')]('-');var _0xd5a987=_0x444af3[0x0];var _0x54bb01=_0x444af3['length']===0x2?_0x444af3[0x1]:_0x444af3[0x0];_0x34a4c1=monthCompare(_0x47913c,_0xd5a987,_0x54bb01);}return _0x8c586&&_0x36561a&&_0x387b13&&_0x34a4c1;}}module[_0x98a0('0xa')][_0x98a0('0x27')]=iftime;
\ No newline at end of file
+var _0xb253=['monthsShort','circularMonthInterval','clone','hours','isBefore','startOf','day','isBetween','timeCompare','format','date','daysInMonth','max','min','domCompare','toLowerCase','includes','monthCompare','guess','test','isMoment','length','padStart','lodash','moment-timezone','map','source','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','isValid','split','locale','indexOf','slice','concat','exports','circularDoWInterval'];(function(_0x2be2c7,_0x32900e){var _0x4cc9a7=function(_0x2a3c37){while(--_0x2a3c37){_0x2be2c7['push'](_0x2be2c7['shift']());}};_0x4cc9a7(++_0x32900e);}(_0xb253,0x89));var _0x3b25=function(_0x89ace6,_0x39064b){_0x89ace6=_0x89ace6-0x0;var _0x302694=_0xb253[_0x89ace6];return _0x302694;};var _=require(_0x3b25('0x0'));var moment=require(_0x3b25('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0x3b25('0x2')](function(_0x1d29ff){return _0x1d29ff[_0x3b25('0x3')];})[_0x3b25('0x4')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x3b25('0x5');var EINVALID_DATE=_0x3b25('0x6');function throwIfDateNotValid(_0x4f0185){if(!_0x4f0185[_0x3b25('0x7')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x679cd8){var _0x40ac12=_0x679cd8[_0x3b25('0x8')](':')['map'](function(_0x4dc59e){return parseInt(_0x4dc59e,0xa);});var _0x5e831b=_0x40ac12[0x0];var _0xdc4a86=_0x40ac12[0x1];if(_0x5e831b<0x0||_0x5e831b>0x17||_0xdc4a86<0x0||_0xdc4a86>0x3b){throw new Error(EINVALID_DATE);}return[_0x5e831b,_0xdc4a86];}function circularDoWInterval(_0x365a2c,_0x1a90eb){if(_0x365a2c===_0x1a90eb){return[_0x365a2c];}else{var _0x2f1580=moment[_0x3b25('0x9')]();moment[_0x3b25('0x9')]('en');var _0x2e3ffc=moment['weekdaysShort']()[_0x3b25('0x2')](function(_0x35c2d3){return _0x35c2d3['toLowerCase']();});moment[_0x3b25('0x9')](_0x2f1580);var _0x3c7091=_0x2e3ffc['indexOf'](_0x365a2c);var _0x1dcd3e=_0x2e3ffc[_0x3b25('0xa')](_0x1a90eb);if(_0x1dcd3e>_0x3c7091){return _0x2e3ffc['slice'](_0x3c7091,_0x1dcd3e+0x1);}else{var _0x46924a=_0x2e3ffc[_0x3b25('0xb')](0x0,_0x1dcd3e+0x1);var _0x2f618d=_0x2e3ffc[_0x3b25('0xb')](_0x3c7091);return _0x2f618d[_0x3b25('0xc')](_0x46924a);}}}module[_0x3b25('0xd')][_0x3b25('0xe')]=circularDoWInterval;function circularMonthInterval(_0x540255,_0x25113a){if(_0x540255===_0x25113a){return[_0x540255];}else{var _0x1dd224=moment[_0x3b25('0x9')]();moment[_0x3b25('0x9')]('en');var _0x37ae9b=moment[_0x3b25('0xf')]()['map'](function(_0x395c98){return _0x395c98['toLowerCase']();});moment[_0x3b25('0x9')](_0x1dd224);var _0x419f53=_0x37ae9b[_0x3b25('0xa')](_0x540255);var _0x258d1f=_0x37ae9b['indexOf'](_0x25113a);if(_0x258d1f>_0x419f53){return _0x37ae9b[_0x3b25('0xb')](_0x419f53,_0x258d1f+0x1);}else{var _0x3f5d25=_0x37ae9b[_0x3b25('0xb')](0x0,_0x258d1f+0x1);var _0x44a30e=_0x37ae9b[_0x3b25('0xb')](_0x419f53);return _0x44a30e[_0x3b25('0xc')](_0x3f5d25);}}}module[_0x3b25('0xd')][_0x3b25('0x10')]=circularMonthInterval;function parseDom(_0x28c292){var _0x35aa44=parseInt(_0x28c292,0xa);if(_0x35aa44<0x1||_0x35aa44>0x1f){throw new Error(EINVALID_DATE);}return _0x35aa44;}function timeCompare(_0x248e1b,_0x580945,_0x3a012e){var _0x2d10bf=_0x248e1b['clone']();var _0x328daf=extractTime(_0x580945);var _0x1ba624=_0x328daf[0x0];var _0x4d89dc=_0x328daf[0x1];var _0x19f585=_0x248e1b[_0x3b25('0x11')]()[_0x3b25('0x12')](_0x1ba624)['minutes'](_0x4d89dc);throwIfDateNotValid(_0x19f585);var _0x410160=extractTime(_0x3a012e);var _0x541189=_0x410160[0x0];var _0x292c98=_0x410160[0x1];var _0xa1cbf6=_0x248e1b[_0x3b25('0x11')]()[_0x3b25('0x12')](_0x541189)['minutes'](_0x292c98);throwIfDateNotValid(_0xa1cbf6);if(_0xa1cbf6[_0x3b25('0x13')](_0x19f585)){var _0x40cc79=_0x2d10bf['clone']()[_0x3b25('0x14')](_0x3b25('0x15'));var _0x99c7c9=_0x2d10bf[_0x3b25('0x11')]()['endOf'](_0x3b25('0x15'));return _0x2d10bf[_0x3b25('0x16')](_0x19f585,_0x99c7c9,undefined,'[]')||_0x2d10bf[_0x3b25('0x16')](_0x40cc79,_0xa1cbf6,undefined,'[]');}else{return _0x2d10bf[_0x3b25('0x16')](_0x19f585,_0xa1cbf6,undefined,'[]');}}module[_0x3b25('0xd')][_0x3b25('0x17')]=timeCompare;function dowCompare(_0x10754b,_0xfe80b1,_0x4c0634){var _0x3143af=_0x10754b['locale']('en')[_0x3b25('0x18')]('ddd')['toLowerCase']();return circularDoWInterval(_0xfe80b1,_0x4c0634)['includes'](_0x3143af);}module[_0x3b25('0xd')]['dowCompare']=dowCompare;function domCompare(_0x1df7b9,_0x5654f9,_0x19afe0){var _0x1c4f74=_0x1df7b9[_0x3b25('0x19')]();if(_0x5654f9===_0x19afe0){return _0x1c4f74===_0x5654f9;}else{var _0x54274f=_0x1df7b9[_0x3b25('0x1a')]();var _0x262523=_0x5654f9<_0x19afe0;let _0x25a0bc=![];var _0x37c33e=0x0;var _0x65317b=0x0;if(_0x262523){_0x37c33e=Math[_0x3b25('0x1b')](0x1,_0x5654f9);_0x65317b=Math[_0x3b25('0x1c')](_0x19afe0,_0x54274f);_0x25a0bc=_0x1c4f74>=_0x37c33e&&_0x1c4f74<=_0x65317b;}else{_0x37c33e=Math[_0x3b25('0x1c')](_0x5654f9,_0x54274f);_0x65317b=Math['max'](0x1,_0x19afe0);_0x25a0bc=_0x1c4f74>=_0x37c33e||_0x1c4f74<=_0x65317b;}return _0x25a0bc;}}module['exports'][_0x3b25('0x1d')]=domCompare;function monthCompare(_0xcee74e,_0x340b75,_0x4953af){var _0x401668=_0xcee74e['locale']('en')[_0x3b25('0x18')]('MMM')[_0x3b25('0x1e')]();return circularMonthInterval(_0x340b75,_0x4953af)[_0x3b25('0x1f')](_0x401668);}module[_0x3b25('0xd')][_0x3b25('0x20')]=monthCompare;function iftime(_0x146acf,_0x4184af=moment['tz'][_0x3b25('0x21')](),_0x553f89=moment()){if(!validateRx[_0x3b25('0x22')](_0x146acf)){throw new Error(EINVALID_STRING);}else{var _0x45d116=(moment[_0x3b25('0x23')](_0x553f89)?_0x553f89['clone']():moment(_0x553f89))['tz'](_0x4184af)[_0x3b25('0x9')]('en');throwIfDateNotValid(_0x45d116);var _0x19a771=_0x146acf[_0x3b25('0x8')](',');var _0x221949=_0x19a771[0x0];var _0xc8fa7=_0x19a771[0x1];var _0x44fb04=_0x19a771[0x2];var _0x39ff4d=_0x19a771[0x3];let _0x2683b5=!![];if(_0x221949!=='*'){var _0x5abdde=_0x221949[_0x3b25('0x8')]('-');var _0x11a7fb=_['padStart'](_0x5abdde[0x0],0x5,'0');var _0x6ed7c0=_0x5abdde[_0x3b25('0x24')]===0x2?_[_0x3b25('0x25')](_0x5abdde[0x1],0x5,'0'):_0x11a7fb;_0x2683b5=timeCompare(_0x45d116,_0x11a7fb,_0x6ed7c0);}let _0x46c86e=!![];if(_0xc8fa7!=='*'){var _0x87f05b=_0xc8fa7['split']('-');var _0x3d5fc7=_0x87f05b[0x0];var _0x37bd31=_0x87f05b[_0x3b25('0x24')]===0x2?_0x87f05b[0x1]:_0x3d5fc7;_0x46c86e=dowCompare(_0x45d116,_0x3d5fc7,_0x37bd31);}let _0x465fa=!![];if(_0x44fb04!=='*'){var _0x517c36=_0x44fb04[_0x3b25('0x8')]('-');var _0x1eaec0=parseDom(_0x517c36[0x0]);var _0x11bfa8=_0x517c36['length']===0x2?parseDom(_0x517c36[0x1]):_0x1eaec0;_0x465fa=domCompare(_0x45d116,_0x1eaec0,_0x11bfa8);}let _0x24b7db=!![];if(_0x39ff4d!=='*'){var _0x291da1=_0x39ff4d[_0x3b25('0x8')]('-');var _0x1828fe=_0x291da1[0x0];var _0x3005cf=_0x291da1['length']===0x2?_0x291da1[0x1]:_0x291da1[0x0];_0x24b7db=monthCompare(_0x45d116,_0x1828fe,_0x3005cf);}return _0x2683b5&&_0x46c86e&&_0x465fa&&_0x24b7db;}}module[_0x3b25('0xd')]['iftime']=iftime;
\ No newline at end of file
index 7d7ba8e..3fe7f72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd7=['level','Logger','transports','warn','File','%s-%s','error','Console','consoleLogger','util','moment','winston','../config/environment','debugLevel','redBG\x20white','red','bold\x20yellow','white','bold\x20white','bold\x20green','gray','bold\x20cyan','addColors','join','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','}}}','keys','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s'];(function(_0x1220d1,_0xeb01b4){var _0x2661fa=function(_0x4f9d0c){while(--_0x4f9d0c){_0x1220d1['push'](_0x1220d1['shift']());}};_0x2661fa(++_0xeb01b4);}(_0xfdd7,0xe7));var _0x7fdd=function(_0x4ff2bf,_0x152bca){_0x4ff2bf=_0x4ff2bf-0x0;var _0x22cd69=_0xfdd7[_0x4ff2bf];return _0x22cd69;};'use strict';var path=require('path');var util=require(_0x7fdd('0x0'));var moment=require(_0x7fdd('0x1'));var winston=require(_0x7fdd('0x2'));var config=require(_0x7fdd('0x3'));var debugLevel=config[_0x7fdd('0x4')]?config[_0x7fdd('0x4')]['toLowerCase']():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0x7fdd('0x5'),'error':_0x7fdd('0x6'),'warn':_0x7fdd('0x7'),'info':_0x7fdd('0x8'),'print':_0x7fdd('0x9'),'success':_0x7fdd('0xa'),'http':_0x7fdd('0xb'),'verbose':'bold\x20magenta','debug':'bold\x20blue','silly':_0x7fdd('0xc')};winston[_0x7fdd('0xd')](XC_LOG_COLORS);function getLogFileName(_0x582170,_0x5057d5,_0x3510b0){var _0x555fbb=_0x582170||'/var/log/xcally';return path[_0x7fdd('0xe')](_0x555fbb,util['format'](_0x7fdd('0xf'),_0x5057d5,_0x3510b0));}function formatter(_0x59c39f,_0x125329){_0x125329[_0x7fdd('0x10')]=_0x125329[_0x7fdd('0x10')][_0x7fdd('0x11')](/@@{/g,_0x7fdd('0x12'))[_0x7fdd('0x11')](/}@@/g,'}}}')[_0x7fdd('0x11')](/@{/g,'{{')['replace'](/}@/g,'}}');return util['format'](_0x7fdd('0x13'),moment()[_0x7fdd('0x14')](_0x7fdd('0x15')),_0x125329['level'][_0x7fdd('0x16')](),_0x59c39f,_0x125329[_0x7fdd('0x10')]);}function fileFormat(_0x560b98,_0x8a2cc1){_0x8a2cc1[_0x7fdd('0x10')]=_0x8a2cc1[_0x7fdd('0x10')][_0x7fdd('0x11')](/@@{/g,_0x7fdd('0x12'))['replace'](/}@@/g,_0x7fdd('0x17'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');var _0x46c3b6=_0x8a2cc1['meta']&&Object[_0x7fdd('0x18')](_0x8a2cc1['meta'])[_0x7fdd('0x19')]?'\x0a\x09'+JSON[_0x7fdd('0x1a')](_0x8a2cc1['meta']):'';return util[_0x7fdd('0x14')](_0x7fdd('0x1b'),moment()['format'](_0x7fdd('0x15')),_0x8a2cc1[_0x7fdd('0x1c')][_0x7fdd('0x16')](),_0x560b98,_0x8a2cc1[_0x7fdd('0x10')],_0x46c3b6);}function consoleLogger(){var _0x4ec9da=new winston[(_0x7fdd('0x1d'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x7fdd('0x1e'))]['Console']({'level':_0x7fdd('0x1f'),'json':![],'formatter':function(_0x30116a){return formatter('',_0x30116a);}})]});return _0x4ec9da;}function fileLogger(_0x596262,_0x5c5ce7){var _0x5228e6=new winston[(_0x7fdd('0x1d'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x7fdd('0x1e'))][(_0x7fdd('0x20'))]({'name':util[_0x7fdd('0x14')](_0x7fdd('0x21'),_0x596262,_0x7fdd('0x22')),'filename':getLogFileName(_0x5c5ce7,_0x596262,_0x7fdd('0x22')),'level':_0x7fdd('0x22'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x393fd6){return fileFormat(_0x596262,_0x393fd6);}}),new winston['transports']['File']({'name':util[_0x7fdd('0x14')]('%s-%s',_0x596262,debugLevel),'filename':getLogFileName(_0x5c5ce7,_0x596262,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x431145){return fileFormat(_0x596262,_0x431145);}}),new winston[(_0x7fdd('0x1e'))][(_0x7fdd('0x23'))]({'level':_0x7fdd('0x1f'),'json':![],'formatter':function(_0x63d4bd){return fileFormat(_0x596262,_0x63d4bd);}})]});return _0x5228e6;}exports[_0x7fdd('0x24')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
+var _0x8ba1=['meta','keys','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','transports','Console','File','%s-%s','error','warn','consoleLogger','fileLogger','path','util','moment','winston','debugLevel','toLowerCase','info','red','bold\x20yellow','white','bold\x20white','bold\x20green','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','format','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase'];(function(_0x3385ef,_0x30117c){var _0x28e884=function(_0x3ee3e8){while(--_0x3ee3e8){_0x3385ef['push'](_0x3385ef['shift']());}};_0x28e884(++_0x30117c);}(_0x8ba1,0x16c));var _0x18ba=function(_0x20cd11,_0x3245ae){_0x20cd11=_0x20cd11-0x0;var _0x29f815=_0x8ba1[_0x20cd11];return _0x29f815;};'use strict';var path=require(_0x18ba('0x0'));var util=require(_0x18ba('0x1'));var moment=require(_0x18ba('0x2'));var winston=require(_0x18ba('0x3'));var config=require('../config/environment');var debugLevel=config['debugLevel']?config[_0x18ba('0x4')][_0x18ba('0x5')]():_0x18ba('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':_0x18ba('0x7'),'warn':_0x18ba('0x8'),'info':_0x18ba('0x9'),'print':_0x18ba('0xa'),'success':_0x18ba('0xb'),'http':'gray','verbose':'bold\x20magenta','debug':_0x18ba('0xc'),'silly':_0x18ba('0xd')};winston[_0x18ba('0xe')](XC_LOG_COLORS);function getLogFileName(_0x56a613,_0x3ded25,_0xd94f3d){var _0x9c5bb9=_0x56a613||_0x18ba('0xf');return path['join'](_0x9c5bb9,util[_0x18ba('0x10')](_0x18ba('0x11'),_0x3ded25,_0xd94f3d));}function formatter(_0x3ac85e,_0x25f276){_0x25f276[_0x18ba('0x12')]=_0x25f276['message'][_0x18ba('0x13')](/@@{/g,_0x18ba('0x14'))[_0x18ba('0x13')](/}@@/g,_0x18ba('0x15'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x18ba('0x10')](_0x18ba('0x16'),moment()['format'](_0x18ba('0x17')),_0x25f276[_0x18ba('0x18')][_0x18ba('0x19')](),_0x3ac85e,_0x25f276[_0x18ba('0x12')]);}function fileFormat(_0x3aadd5,_0x39ad78){_0x39ad78['message']=_0x39ad78[_0x18ba('0x12')][_0x18ba('0x13')](/@@{/g,_0x18ba('0x14'))[_0x18ba('0x13')](/}@@/g,_0x18ba('0x15'))[_0x18ba('0x13')](/@{/g,'{{')[_0x18ba('0x13')](/}@/g,'}}');var _0x5c0715=_0x39ad78[_0x18ba('0x1a')]&&Object[_0x18ba('0x1b')](_0x39ad78[_0x18ba('0x1a')])[_0x18ba('0x1c')]?'\x0a\x09'+JSON[_0x18ba('0x1d')](_0x39ad78[_0x18ba('0x1a')]):'';return util[_0x18ba('0x10')](_0x18ba('0x1e'),moment()[_0x18ba('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),_0x39ad78['level'][_0x18ba('0x19')](),_0x3aadd5,_0x39ad78[_0x18ba('0x12')],_0x5c0715);}function consoleLogger(){var _0x4f0b40=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x18ba('0x1f'))][(_0x18ba('0x20'))]({'level':'warn','json':![],'formatter':function(_0x55468a){return formatter('',_0x55468a);}})]});return _0x4f0b40;}function fileLogger(_0x6f39d7,_0x246acf){var _0xf33bc7=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x18ba('0x1f'))][(_0x18ba('0x21'))]({'name':util[_0x18ba('0x10')](_0x18ba('0x22'),_0x6f39d7,_0x18ba('0x23')),'filename':getLogFileName(_0x246acf,_0x6f39d7,_0x18ba('0x23')),'level':_0x18ba('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xc6cdc){return fileFormat(_0x6f39d7,_0xc6cdc);}}),new winston['transports'][(_0x18ba('0x21'))]({'name':util['format'](_0x18ba('0x22'),_0x6f39d7,debugLevel),'filename':getLogFileName(_0x246acf,_0x6f39d7,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1b2236){return fileFormat(_0x6f39d7,_0x1b2236);}}),new winston[(_0x18ba('0x1f'))][(_0x18ba('0x20'))]({'level':_0x18ba('0x24'),'json':![],'formatter':function(_0x413ec7){return fileFormat(_0x6f39d7,_0x413ec7);}})]});return _0xf33bc7;}exports[_0x18ba('0x25')]=consoleLogger;exports[_0x18ba('0x26')]=fileLogger;
\ No newline at end of file
index 3f49fac..6870a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['secret','registry','isPlainObject','isArray','length','isString','replace','@@{','}@@','includes','exports','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','clientId','clientSecret','securityToken','code','accessKey','tenantId','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn'];(function(_0x11e30d,_0x5584aa){var _0x2d4e29=function(_0x2486ce){while(--_0x2486ce){_0x11e30d['push'](_0x11e30d['shift']());}};_0x2d4e29(++_0x5584aa);}(_0x1967,0x173));var _0x7196=function(_0x214c49,_0x3a4731){_0x214c49=_0x214c49-0x0;var _0x421e5a=_0x1967[_0x214c49];return _0x421e5a;};var _=require('lodash');var sensitiveFields=[_0x7196('0x0'),_0x7196('0x1'),_0x7196('0x2'),_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7'),_0x7196('0x8'),_0x7196('0x9'),'email',_0x7196('0xa'),_0x7196('0xb'),_0x7196('0xc'),_0x7196('0xd'),_0x7196('0xe'),_0x7196('0xf'),'token',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0x12'),_0x7196('0x13'),_0x7196('0x14'),'consumerSecret','membername',_0x7196('0x15'),_0x7196('0x16'),_0x7196('0x17'),_0x7196('0x18'),_0x7196('0x19'),_0x7196('0x1a'),_0x7196('0x1b'),_0x7196('0x1c'),_0x7196('0x1d'),_0x7196('0x1e'),_0x7196('0x1f'),'accountSid',_0x7196('0x20'),_0x7196('0x21'),_0x7196('0x22'),_0x7196('0x23'),'oldPassword'];function maskSensitiveData(_0x31c778){const _0x539414=/(?!^)[\s\S](?!$)/g;if(_[_0x7196('0x24')](_0x31c778)){for(const _0x2590a6 in _0x31c778){if(_[_0x7196('0x25')](_0x31c778[_0x2590a6])){for(let _0x3ed1ad=0x0;_0x3ed1ad<_0x31c778[_0x2590a6][_0x7196('0x26')];_0x3ed1ad++){maskSensitiveData(_0x31c778[_0x2590a6][_0x3ed1ad]);}}else if(_[_0x7196('0x24')](_0x31c778[_0x2590a6])){maskSensitiveData(_0x31c778[_0x2590a6]);}else if(_[_0x7196('0x27')](_0x31c778[_0x2590a6])){_0x31c778[_0x2590a6]=_0x31c778[_0x2590a6][_0x7196('0x28')](/{{{/g,_0x7196('0x29'))[_0x7196('0x28')](/}}}/g,_0x7196('0x2a'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x7196('0x2b')](sensitiveFields,_0x2590a6)){_0x31c778[_0x2590a6]=_0x31c778[_0x2590a6][_0x7196('0x28')](_0x539414,'*');}}}}}module[_0x7196('0x2c')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+var _0xdb28=['registry','oldPassword','isPlainObject','length','isString','replace','@@{','}@@','exports','maskSensitiveData','lodash','username','password','newPassword','firstName','lastName','street','phone','mobile','email','clientId','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','consumerKey','consumerSecret','membername','calleridnum','exten','clientEmail','privateKey','accesskeyid','secretaccesskey','key','accountSid','localstationid','dsn','secret'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xdb28,0x106));var _0x8db2=function(_0x5765ca,_0x6365f6){_0x5765ca=_0x5765ca-0x0;var _0xa79ccf=_0xdb28[_0x5765ca];return _0xa79ccf;};var _=require(_0x8db2('0x0'));var sensitiveFields=[_0x8db2('0x1'),_0x8db2('0x2'),_0x8db2('0x3'),'apiKey',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'fax',_0x8db2('0x9'),_0x8db2('0xa'),'clientSecret','securityToken',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'authToken',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'calleridname',_0x8db2('0x15'),_0x8db2('0x16'),'vidaooApiKey',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'user','pass',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21')];function maskSensitiveData(_0x2f177a){const _0x3c96a7=/(?!^)[\s\S](?!$)/g;if(_[_0x8db2('0x22')](_0x2f177a)){for(const _0x16c8c2 in _0x2f177a){if(_['isArray'](_0x2f177a[_0x16c8c2])){for(let _0x13b0f5=0x0;_0x13b0f5<_0x2f177a[_0x16c8c2][_0x8db2('0x23')];_0x13b0f5++){maskSensitiveData(_0x2f177a[_0x16c8c2][_0x13b0f5]);}}else if(_['isPlainObject'](_0x2f177a[_0x16c8c2])){maskSensitiveData(_0x2f177a[_0x16c8c2]);}else if(_[_0x8db2('0x24')](_0x2f177a[_0x16c8c2])){_0x2f177a[_0x16c8c2]=_0x2f177a[_0x16c8c2][_0x8db2('0x25')](/{{{/g,_0x8db2('0x26'))[_0x8db2('0x25')](/}}}/g,_0x8db2('0x27'))[_0x8db2('0x25')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x16c8c2)){_0x2f177a[_0x16c8c2]=_0x2f177a[_0x16c8c2][_0x8db2('0x25')](_0x3c96a7,'*');}}}}}module[_0x8db2('0x28')][_0x8db2('0x29')]=maskSensitiveData;
\ No newline at end of file
index ad97492..0cd7e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','isArray','map','isPlainObject','keys','reduce','exports'];(function(_0xaf0b6b,_0x33e8e0){var _0x1424c2=function(_0x38c948){while(--_0x38c948){_0xaf0b6b['push'](_0xaf0b6b['shift']());}};_0x1424c2(++_0x33e8e0);}(_0x0abf,0xe8));var _0xf0ab=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0abf[_0x501510];return _0x1e6ee5;};var _=require(_0xf0ab('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x4d04cc){return _0x4d04cc==='{{'?_0xf0ab('0x1'):_0xf0ab('0x2');}function safeTemplate(_0x528ef7){var _0x598001=_0x528ef7;if(typeof _0x528ef7===_0xf0ab('0x3')){_0x598001=_0x528ef7['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xf0ab('0x4')](_0x528ef7)){_0x598001=_0x528ef7[_0xf0ab('0x5')](function(_0x2efe43){return safeTemplate(_0x2efe43);});}else if(_[_0xf0ab('0x6')](_0x528ef7)){_0x598001=Object[_0xf0ab('0x7')](_0x528ef7)[_0xf0ab('0x8')](function(_0x233afe,_0x57ff3b){_0x233afe[_0x57ff3b]=safeTemplate(_0x528ef7[_0x57ff3b]);return _0x233afe;},{});}return _0x598001;}module[_0xf0ab('0x9')][_0xf0ab('0xa')]=safeTemplate;
\ No newline at end of file
+var _0x0972=['safeTemplate','\x20}\x20}','string','isArray','map','isPlainObject','keys','reduce','exports'];(function(_0x1a8b9d,_0x417074){var _0x1330e2=function(_0x36e98a){while(--_0x36e98a){_0x1a8b9d['push'](_0x1a8b9d['shift']());}};_0x1330e2(++_0x417074);}(_0x0972,0x64));var _0x2097=function(_0x1b11df,_0x4a23a6){_0x1b11df=_0x1b11df-0x0;var _0x58216c=_0x0972[_0x1b11df];return _0x58216c;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x1591ae){return _0x1591ae==='{{'?'{\x20{\x20':_0x2097('0x0');}function safeTemplate(_0x4ec7aa){var _0x36912c=_0x4ec7aa;if(typeof _0x4ec7aa===_0x2097('0x1')){_0x36912c=_0x4ec7aa['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x2097('0x2')](_0x4ec7aa)){_0x36912c=_0x4ec7aa[_0x2097('0x3')](function(_0xe6fbae){return safeTemplate(_0xe6fbae);});}else if(_[_0x2097('0x4')](_0x4ec7aa)){_0x36912c=Object[_0x2097('0x5')](_0x4ec7aa)[_0x2097('0x6')](function(_0x2b4f21,_0x59739f){_0x2b4f21[_0x59739f]=safeTemplate(_0x4ec7aa[_0x59739f]);return _0x2b4f21;},{});}return _0x36912c;}module[_0x2097('0x7')][_0x2097('0x8')]=safeTemplate;
\ No newline at end of file
index 19dc020..126c5dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4140=['apps','findIndex','env','NODE_PATH','string','then','updated','info','Updating\x20app.json','writeJSON','exports','fs-extra','../config/environment','resolve','server/app.json','legacy-libs','isArray'];(function(_0xb1e68c,_0x469be7){var _0x30ccef=function(_0x1bb00e){while(--_0x1bb00e){_0xb1e68c['push'](_0xb1e68c['shift']());}};_0x30ccef(++_0x469be7);}(_0x4140,0xe8));var _0x0414=function(_0xab8668,_0x5204ac){_0xab8668=_0xab8668-0x0;var _0x571c10=_0x4140[_0xab8668];return _0x571c10;};var fs=require(_0x0414('0x0'));var path=require('path');var config=require(_0x0414('0x1'));var root=config['root'];var APP_JSON_PATH=path[_0x0414('0x2')](root,_0x0414('0x3'));var NODEPATH=path[_0x0414('0x2')](root,_0x0414('0x4'));function setLegacyLibsNodeEnvPath(_0x4ef58b){let _0x2ba8a9=![];if(Array[_0x0414('0x5')](_0x4ef58b[_0x0414('0x6')])){var _0x45fe9c=_0x4ef58b[_0x0414('0x6')][_0x0414('0x7')](function(_0x538220){return _0x538220['name']==='motion2';});if(_0x45fe9c>-0x1){var _0x544b52=_0x4ef58b[_0x0414('0x6')][_0x45fe9c];if(typeof _0x544b52[_0x0414('0x8')][_0x0414('0x9')]!==_0x0414('0xa')){_0x544b52[_0x0414('0x8')][_0x0414('0x9')]=NODEPATH;_0x2ba8a9=!![];}}return{'appConfig':_0x4ef58b,'updated':_0x2ba8a9};}}function updateAppConfig(_0x56e339){return fs['pathExists'](APP_JSON_PATH)[_0x0414('0xb')](function(_0xfbcc5b){if(_0xfbcc5b){return fs['readJSON'](APP_JSON_PATH)[_0x0414('0xb')](function(_0x2c0a31){var _0x26eb6e=setLegacyLibsNodeEnvPath(_0x2c0a31);if(_0x26eb6e[_0x0414('0xc')]){_0x56e339[_0x0414('0xd')](_0x0414('0xe'));return fs[_0x0414('0xf')](APP_JSON_PATH,_0x2c0a31,{'spaces':0x2});}else{return Promise['resolve']();}});}else{return Promise[_0x0414('0x2')]();}});}module[_0x0414('0x10')]=updateAppConfig;
\ No newline at end of file
+var _0x4a24=['writeJSON','exports','fs-extra','path','../config/environment','resolve','server/app.json','legacy-libs','isArray','apps','findIndex','name','motion2','env','NODE_PATH','string','pathExists','then','readJSON','updated','Updating\x20app.json'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4a24,0x128));var _0x44a2=function(_0x1c4409,_0x3b2e8f){_0x1c4409=_0x1c4409-0x0;var _0x356d8f=_0x4a24[_0x1c4409];return _0x356d8f;};var fs=require(_0x44a2('0x0'));var path=require(_0x44a2('0x1'));var config=require(_0x44a2('0x2'));var root=config['root'];var APP_JSON_PATH=path[_0x44a2('0x3')](root,_0x44a2('0x4'));var NODEPATH=path[_0x44a2('0x3')](root,_0x44a2('0x5'));function setLegacyLibsNodeEnvPath(_0x747e9b){let _0xd0bb99=![];if(Array[_0x44a2('0x6')](_0x747e9b['apps'])){var _0x4f0631=_0x747e9b[_0x44a2('0x7')][_0x44a2('0x8')](function(_0x53bb9d){return _0x53bb9d[_0x44a2('0x9')]===_0x44a2('0xa');});if(_0x4f0631>-0x1){var _0x49b105=_0x747e9b[_0x44a2('0x7')][_0x4f0631];if(typeof _0x49b105[_0x44a2('0xb')][_0x44a2('0xc')]!==_0x44a2('0xd')){_0x49b105[_0x44a2('0xb')][_0x44a2('0xc')]=NODEPATH;_0xd0bb99=!![];}}return{'appConfig':_0x747e9b,'updated':_0xd0bb99};}}function updateAppConfig(_0x2b08da){return fs[_0x44a2('0xe')](APP_JSON_PATH)[_0x44a2('0xf')](function(_0x6cd308){if(_0x6cd308){return fs[_0x44a2('0x10')](APP_JSON_PATH)[_0x44a2('0xf')](function(_0x19599d){var _0x4e8444=setLegacyLibsNodeEnvPath(_0x19599d);if(_0x4e8444[_0x44a2('0x11')]){_0x2b08da['info'](_0x44a2('0x12'));return fs[_0x44a2('0x13')](APP_JSON_PATH,_0x19599d,{'spaces':0x2});}else{return Promise[_0x44a2('0x3')]();}});}else{return Promise[_0x44a2('0x3')]();}});}module[_0x44a2('0x14')]=updateAppConfig;
\ No newline at end of file